tx · DuKuktRV5zz3yNAsj21gu9B6xw7P2PpNcSdeBXU4tV3P 3PPH7x7iqobW5ziyiRCic19rQqKr6nPYaK1: -0.01400000 Waves 2021.07.16 21:05 [2681275] smart account 3PPH7x7iqobW5ziyiRCic19rQqKr6nPYaK1 > SELF 0.00000000 Waves
{ "type": 13, "id": "DuKuktRV5zz3yNAsj21gu9B6xw7P2PpNcSdeBXU4tV3P", "fee": 1400000, "feeAssetId": null, "timestamp": 1626458689500, "version": 2, "chainId": 87, "sender": "3PPH7x7iqobW5ziyiRCic19rQqKr6nPYaK1", "senderPublicKey": "5aTg4oxM77iRmUGy3y8Zavn5fhVbgtUciAuSGfCJAYjn", "proofs": [ "", "2UeuUeub2pJv2azgT5kVkvQAaxztRWnhFmwSdM5mkC8HmngWBA9KBgr4YnwFYoH1BJ1SsJ4Rq4gCotE7jGvejXef", "3ys4kJUzMdRUkk1tMmr5nNFrUXrdCbMbFVoLuoN5ohhR42tTyc3htJAdE7yigrHfLvSiVmtASDDMBLyn495K44m9" ], "script": "base64:AAIFAAAAAAAAACAIAhIAEgMKAQESBAoCAQESABIECgIBARIAEgASAwoBAQAAAEwAAAAAB3ZlcnNpb24CAAAABTIuMC4wAAAAAAhrVmVyc2lvbgIAAAAHdmVyc2lvbgAAAAAHa0FjdGl2ZQIAAAAGYWN0aXZlAAAAAAlrQXNzZXRJZEECAAAACkFfYXNzZXRfaWQAAAAACWtBc3NldElkQgIAAAAKQl9hc3NldF9pZAAAAAAJa0JhbGFuY2VBAgAAAA9BX2Fzc2V0X2JhbGFuY2UAAAAACWtCYWxhbmNlQgIAAAAPQl9hc3NldF9iYWxhbmNlAAAAAA1rU2hhcmVBc3NldElkAgAAAA5zaGFyZV9hc3NldF9pZAAAAAARa1NoYXJlQXNzZXRTdXBwbHkCAAAAEnNoYXJlX2Fzc2V0X3N1cHBseQAAAAAEa0ZlZQIAAAAKY29tbWlzc2lvbgAAAAASa0ZlZVNjYWxlRGVsaW1pdGVyAgAAABpjb21taXNzaW9uX3NjYWxlX2RlbGltaXRlcgAAAAAKa0ludmFyaWFudAIAAAAJaW52YXJpYW50AAAAAAZrQ2F1c2UCAAAADnNodXRkb3duX2NhdXNlAAAAAA9rZXlBZG1pblB1YktleTECAAAAC2FkbWluX3B1Yl8xAAAAAA9rZXlBZG1pblB1YktleTICAAAAC2FkbWluX3B1Yl8yAAAAAA9rZXlBZG1pblB1YktleTMCAAAAC2FkbWluX3B1Yl8zAAAAABRVU0ROVG9XYXZlc0V4Y2hhbmdlcgkBAAAAB0FkZHJlc3MAAAABAQAAABoBV6ugnY67/HaJPzVO8b2xSyoDl1hFH8eK8wAAAAAGb3JhY2xlCQEAAAAHQWRkcmVzcwAAAAEBAAAAGgFXiv8IaJo1ukDNYXTyEjfepjfw+jjO6B44AQAAAAtnZXRBZG1pblB1YgAAAAEAAAALa2V5QWRtaW5QdWIEAAAAByRtYXRjaDAJAAQdAAAAAgUAAAAGb3JhY2xlBQAAAAtrZXlBZG1pblB1YgMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAGU3RyaW5nBAAAAAZzdHJpbmcFAAAAByRtYXRjaDAJAAJZAAAAAQUAAAAGc3RyaW5nBAAAAAdub3RoaW5nBQAAAAckbWF0Y2gwCQAAAgAAAAECAAAAGUFkbWlu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AAACBQAAAAJzawUAAAAEYmV0YQUAAAAHZGlnaXRzOAUAAAAFYWxwaGEFAAAAC2FscGhhRGlnaXRzBQAAAAdkaWdpdHM4BQAAAARET1dOBQAAAAZzY2FsZTgBAAAAE2NhbGN1bGF0ZVNlbmRBbW91bnQAAAAEAAAAFWFtb3VudFRvU2VuZEVzdGltYXRlZAAAABVtaW5Ub2tlblJlY2VpdmVBbW91bnQAAAASdG9rZW5SZWNlaXZlQW1vdW50AAAAB3Rva2VuSWQEAAAADXNsaXBwYWdlVmFsdWUJAABlAAAAAgUAAAAGc2NhbGU4CQAAaQAAAAIJAABoAAAAAgUAAAAGc2NhbGU4AAAAAAAAAAABAAAAAAAAmJaABAAAAB5kZWx0YUJldHdlZW5NYXhBbmRNaW5TZW5kVmFsdWUJAABlAAAAAgUAAAAVYW1vdW50VG9TZW5kRXN0aW1hdGVkBQAAABVtaW5Ub2tlblJlY2VpdmVBbW91bnQEAAAAAXgJAABkAAAAAgUAAAAIYmFsYW5jZUEFAAAAEnRva2VuUmVjZWl2ZUFtb3VudAQAAAABeQkAAGQAAAACBQAAAAhiYWxhbmNlQgUAAAASdG9rZW5SZWNlaXZlQW1vdW50BAAAAAxpbnZhcmlhbnROZXcDCQAAAAAAAAIFAAAAB3Rva2VuSWQFAAAACGFzc2V0SWRBCQEAAAANaW52YXJpYW50Q2FsYwAAAAIFAAAAAXgJAABlAAAAAgUAAAAIYmFsYW5jZUIFAAAAFWFtb3VudFRvU2VuZEVzdGltYXRlZAMJAAAAAAAAAgUAAAAHdG9rZW5JZAUAAAAIYXNzZXRJZEIJAQAAAA1pbnZhcmlhbnRDYWxjAAAAAgkAAGUAAAACBQAAAAhiYWxhbmNlQQUAAAAVYW1vdW50VG9TZW5kRXN0aW1hdGVkBQAAAAF5CQAAAgAAAAECAAAAFldyb25nIGFzc2V0IGluIHBheW1lbnQEAAAAF2ludmFyaWFudEVzdGltYXRlZFJhdGlvCQAAawAAAAMFAAAABnNjYWxlOAUAAAAJaW52YXJpYW50BQAAAAxpbnZhcmlhbnROZXcKAQAAAA1nZXRTdGVwQW1vdW50AAAAAgAAAANhY2MAAAAEc3RlcAMJAAAAAAAAAgUAAAADYWNjAP//////////BAAAAAxhbW91bnRUb1NlbmQJAABlAAAAAgUAAAAVYW1vdW50VG9TZW5kRXN0aW1hdGVkCQAAaQAAAAIJAABoAAAAAgUAAAAEc3RlcAUAAAAeZGVsdGFCZXR3ZWVuTWF4QW5kTWluU2VuZFZhbHVlAAAAAAAAAAAFBAAAAA1zdGVwSW52YXJpYW50AwkAAAAAAAACBQAAAAd0b2tlbklkBQAAAAhhc3NldElkQQkBAAAADWludmFyaWFudENhbGMAAAACBQAAAAF4CQAAZQAAAAIFAAAACGJhbGFuY2VCBQAAAAxhbW91bnRUb1NlbmQJAQAAAA1pbnZhcmlhbnRDYWxjAAAAAgkAAGUAAAACBQAAAAhiYWxhbmNlQQUAAAAMYW1vdW50VG9TZW5kBQAAAAF5AwkAAGYAAAACBQAAAA1zdGVwSW52YXJpYW50BQAAAAlpbnZhcmlhbnQFAAAADGFtb3VudFRvU2VuZAD//////////wUAAAADYWNjBAAAAApzdGVwQW1vdW50BAAAAA0kbGlzdDYwMjU2MDY4CQAETAAAAAIAAAAAAAAAAAEJAARMAAAAAgAAAAAAAAAAAgkABEwAAAACAAAAAAAAAAADCQAETAAAAAIAAAAAAAAAAAQJAARMAAAAAgAAAAAAAAAABQUAAAADbmlsBAAAAA0kc2l6ZTYwMjU2MDY4CQABkAAAAAEFAAAADSRsaXN0NjAyNTYwNjgEAAAADSRhY2MwNjAyNTYwNjgA//////////8DCQAAAAAAAAIFAAAADSRzaXplNjAyNTYwNjgAAAAAAAAAAAAFAAAADSRhY2MwNjAyNTYwNjgEAAAADSRhY2MxNjAyNTYwNjgJAQAAAA1nZXRTdGVwQW1vdW50AAAAAgUAAAANJGFjYzA2MDI1NjA2OAkAAZEAAAACBQAAAA0kbGlzdDYwMjU2MDY4AAAAAAAAAAAAAwkAAAAAAAACBQAAAA0kc2l6ZTYwMjU2MDY4AAAAAAAAAAABBQAAAA0kYWNjMTYwMjU2MDY4BAAAAA0kYWNjMjYwMjU2MDY4CQEAAAANZ2V0U3RlcEFtb3VudAAAAAIFAAAADSRhY2MxNjAyNTYwNjgJAAGRAAAAAgUAAAANJGxpc3Q2MDI1NjA2OAAAAAAAAAAAAQMJAAAAAAAAAgUAAAANJHNpemU2MDI1NjA2OAAAAAAAAAAAAgUAAAANJGFjYzI2MDI1NjA2OAQAAAANJGFjYzM2MDI1NjA2OAkBAAAADWdldFN0ZXBBbW91bnQAAAACBQAAAA0kYWNjMjYwMjU2MDY4CQABkQAAAAIFAAAADSRsaXN0NjAyNTYwNjgAAAAAAAAAAAIDCQAAAAAAAAIFAAAADSRzaXplNjAyNTYwNjgAAAAAAAAAAAMFAAAADSRhY2MzNjAyNTYwNjgEAAAADSRhY2M0NjAyNTYwNjgJAQAAAA1nZXRTdGVwQW1vdW50AAAAAgUAAAANJGFjYzM2MDI1NjA2OAkAAZEAAAACBQAAAA0kbGlzdDYwMjU2MDY4AAAAAAAAAAADAwkAAAAAAAACBQAAAA0kc2l6ZTYwMjU2MDY4AAAAAAAAAAAEBQAAAA0kYWNjNDYwMjU2MDY4BAAAAA0kYWNjNTYwMjU2MDY4CQEAAAANZ2V0U3RlcEFtb3VudAAAAAIFAAAADSRhY2M0NjAyNTYwNjgJAAGRAAAAAgUAAAANJGxpc3Q2MDI1NjA2OAAAAAAAAAAABAMJAAAAAAAAAgUAAAANJHNpemU2MDI1NjA2OAAAAAAAAAAABQUAAAANJGFjYzU2MDI1NjA2OAQAAAANJGFjYzY2MDI1NjA2OAkBAAAADWdldFN0ZXBBbW91bnQAAAACBQAAAA0kYWNjNTYwMjU2MDY4CQABkQAAAAIFAAAADSRsaXN0NjAyNTYwNjgAAAAAAAAAAAUJAAACAAAAAQIAAAASTGlzdCBzaXplIGV4Y2VlZCA1AwkAAGYAAAACAAAAAAAAAAAABQAAAApzdGVwQW1vdW50CQAAAgAAAAECAAAANHNvbWV0aGluZyB3ZW50IHdyb25nIHdoaWxlIHdvcmtpbmcgd2l0aCBhbW91bnRUb1NlbmQDAwkAAGYAAAACBQAAABdpbnZhcmlhbnRFc3RpbWF0ZWRSYXRpbwUAAAANc2xpcHBhZ2VWYWx1ZQkAAGYAAAACBQAAAAxpbnZhcmlhbnROZXcFAAAACWludmFyaWFudAcFAAAAFWFtb3VudFRvU2VuZEVzdGltYXRlZAUAAAAKc3RlcEFtb3VudAEAAAAMZ2V0QXNzZXRJbmZvAAAAAQAAAAdhc3NldElkBAAAAAckbWF0Y2gwBQAAAAdhc3NldElkAwkAAAEAAAACBQAAAAckbWF0Y2gw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OAAAAAEFAAAACnNoYXJlSXNzdWUEAAAAE2ludmFyaWFudENhbGN1bGF0ZWQJAQAAAA1pbnZhcmlhbnRDYWxjAAAAAgUAAAAKcG10QW1vdW50QQUAAAAKcG10QW1vdW50QgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAAAhrVmVyc2lvbgUAAAAHdmVyc2lvbgkABEwAAAACCQEAAAAMQm9vbGVhbkVudHJ5AAAAAgUAAAAHa0FjdGl2ZQYJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAAJa0Fzc2V0SWRBBQAAAA5wbXRTdHJBc3NldElkQQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAAAlrQXNzZXRJZEIFAAAADnBtdFN0ckFzc2V0SWRCCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAAlrQmFsYW5jZUEFAAAACnBtdEFtb3VudEEJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAACWtCYWxhbmNlQgUAAAAKcG10QW1vdW50QgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAKa0ludmFyaWFudAUAAAATaW52YXJpYW50Q2FsY3VsYXRlZAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAEa0ZlZQUAAAADZmVlCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABJrRmVlU2NhbGVEZWxpbWl0ZXIFAAAACWZlZVNjYWxlNgkABEwAAAACBQAAAApzaGFyZUlzc3VlCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAADWtTaGFyZUFzc2V0SWQJAAJYAAAAAQUAAAAMc2hhcmVJc3N1ZUlkCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABFrU2hhcmVBc3NldFN1cHBseQUAAAASc2hhcmVJbml0aWFsU3VwcGx5CQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgUAAAASc2hhcmVJbml0aWFsU3VwcGx5BQAAAAxzaGFyZUlzc3VlSWQFAAAAA25pbAAAAAFpAQAAABZyZXBsZW5pc2hXaXRoVHdvVG9rZW5zAAAAAQAAABFzbGlwcGFnZVRvbGVyYW5jZQQAAAALcG10QXNzZXRJZEEICQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAAAAAAB2Fzc2V0SWQEAAAAC3BtdEFzc2V0SWRCCAkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAQAAAAdhc3NldElkBAAAAApwbXRBbW91bnRBCQEAAAAQZGVkdWN0U3Rha2luZ0ZlZQAAAAIICQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAAAAAABmFtb3VudAUAAAALcG10QXNzZXRJZEEEAAAACnBtdEFtb3VudEIJAQAAABBkZWR1Y3RTdGFraW5nRmVlAAAAAggJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAEAAAAGYW1vdW50BQAAAAtwbXRBc3NldElkQgQAAAAKdG9rZW5SYXRpbwkAAGsAAAADCQAAawAAAAMFAAAABnNjYWxlOAUAAAAIYmFsYW5jZUEFAAAACnBtdEFtb3VudEEFAAAABnNjYWxlMwkAAGsAAAADBQAAAAZzY2FsZTgFAAAACGJhbGFuY2VCBQAAAApwbXRBbW91bnRCBAAAABNyYXRpb1NoYXJlVG9rZW5zSW5BCQAAawAAAAMFAAAABnNjYWxlOAUAAAAKcG10QW1vdW50QQUAAAAIYmFsYW5jZUEEAAAAE3JhdGlvU2hhcmVUb2tlbnNJbkIJAABrAAAAAwUAAAAGc2NhbGU4BQAAAApwbXRBbW91bnRCBQAAAAhiYWxhbmNlQgQAAAAVc2hhcmVUb2tlblRvUGF5QW1vdW50CQAAawAAAAMJAAGXAAAAAQkABEwAAAACBQAAABNyYXRpb1NoYXJlVG9rZW5zSW5BCQAETAAAAAIFAAAAE3JhdGlvU2hhcmVUb2tlbnNJbkIFAAAAA25pbAUAAAAQc2hhcmVBc3NldFN1cHBseQUAAAAGc2NhbGU4BAAAABNpbnZhcmlhbnRDYWxjdWxhdGVkCQEAAAANaW52YXJpYW50Q2FsYwAAAAIJAABkAAAAAgUAAAAIYmFsYW5jZUEFAAAACnBtdEFtb3VudEEJAABkAAAAAgUAAAAIYmFsYW5jZUIFAAAACnBtdEFtb3VudEIDCQEAAAABIQAAAAEFAAAACGlzQWN0aXZlCQEAAAAPdGhyb3dJc0luYWN0aXZlAAAAAAMDCQAAZgAAAAIAAAAAAAAAAAAFAAAAEXNsaXBwYWdlVG9sZXJhbmNlBgkAAGYAAAACBQAAABFzbGlwcGFnZVRvbGVyYW5jZQAAAAAAAAAACgkAAAIAAAABAgAAACBTbGlwcGFnZSB0b2xlcmFuY2UgbXVzdCBiZSA8PSAxJQMJAQAAAAIhPQAAAAIJAAGQAAAAAQgFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAIJAAACAAAAAQIAAAAcVHdvIGF0dGFjaGVkIGFzc2V0cyBleHBlY3RlZAMDCQEAAAACIT0AAAACBQAAAAtwbXRBc3NldElkQQUAAAAIYXNzZXRJZEEGCQEAAAACIT0AAAACBQAAAAtwbXRBc3NldElkQgUAAAAIYXNzZXRJZEIJAQAAAAt0aHJvd0Fzc2V0cwAAAAADAwkAAGYAAAACCQAAaQAAAAIJAABoAAAAAgUAAAAGc2NhbGUzCQAAZQAAAAIFAAAADnNsaXBwYWdlU2NhbGUzBQAAABFzbGlwcGFnZVRvbGVyYW5jZQUAAAAOc2xpcHBhZ2VTY2FsZTMFAAAACnRva2VuUmF0aW8GCQAAZgAAAAIFAAAACnRva2VuUmF0aW8JAABpAAAAAgkAAGgAAAACBQAAAAZzY2FsZTMJAABkAAAAAgUAAAAOc2xpcHBhZ2VTY2FsZTMFAAAAEXNsaXBwYWdlVG9sZXJhbmNlBQAAAA5zbGlwcGFnZVNjYWxlMwkAAAIAAAABAgAAAD1JbmNvcnJlY3QgYXNzZXRzIGFtb3VudDogYW1vdW50cyBtdXN0IGhhdmUgdGhlIGNvbnRyYWN0IHJhdGlvAwkAAAAAAAACBQAAABVzaGFyZVRva2VuVG9QYXlBbW91bnQAAAAAAAAAAAAJAAACAAAAAQIAAAAdVG9vIHNtYWxsIGFtb3VudCB0byByZXBsZW5pc2gDCQEAAAABIQAAAAEFAAAAEGhhc0Vub3VnaEJhbGFuY2UJAAROAAAAAgkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIFAAAACnBtdEFtb3VudEEFAAAAC3BtdEFzc2V0SWRBCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgUAAAAKcG10QW1vdW50QgUAAAALcG10QXNzZXRJZEIFAAAAA25pbAkBAAAAEXN1c3BlbmRTdXNwaWNpb3VzAAAAAAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAJa0JhbGFuY2VBCQAAZAAAAAIFAAAACGJhbGFuY2VBBQAAAApwbXRBbW91bnRBCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAAlrQmFsYW5jZUIJAABkAAAAAgUAAAAIYmFsYW5jZUIFAAAACnBtdEFtb3VudEIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAEWtTaGFyZUFzc2V0U3VwcGx5CQAAZAAAAAIFAAAAEHNoYXJlQXNzZXRTdXBwbHkFAAAAFXNoYXJlVG9rZW5Ub1BheUFtb3VudAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAKa0ludmFyaWFudAUAAAATaW52YXJpYW50Q2FsY3VsYXRlZAkABEwAAAACCQEAAAAHUmVpc3N1ZQAAAAMFAAAADHNoYXJlQXNzZXRJZAUAAAAVc2hhcmVUb2tlblRvUGF5QW1vdW50BgkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIFAAAAFXNoYXJlVG9rZW5Ub1BheUFtb3VudAUAAAAMc2hhcmVBc3NldElkBQAAAANuaWwAAAABaQEAAAAVcmVwbGVuaXNoV2l0aE9uZVRva2VuAAAAAgAAABN2aXJ0dWFsU3dhcFRva2VuUGF5AAAAE3ZpcnR1YWxTd2FwVG9rZW5HZXQEAAAADSR0MDEzNDEwMTM0ODUJAAUUAAAAAggJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAAAAAGYW1vdW50CAkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAAAAAdhc3NldElkBAAAAAlwbXRBbW91bnQIBQAAAA0kdDAxMzQxMDEzNDg1AAAAAl8xBAAAAApwbXRBc3NldElkCAUAAAANJHQwMTM0MTAxMzQ4NQAAAAJfMgQAAAAPcG10TWluVGhyZXNob2xkAAAAAAAATEtABAAAAB10aHJlc2hvbGRWYWx1ZUZvck1pblRvbGVyYW5jZQAAAAAAAvrwgAQAAAAJdG9sZXJhbmNlAwkAAGYAAAACBQAAAB10aHJlc2hvbGRWYWx1ZUZvck1pblRvbGVyYW5jZQUAAAAJcG10QW1vdW50AAAAAAAAAYagAAAAAAAAAAABBAAAABxzbGlwcGFnZVZhbHVlTWluRm9yUmVwbGVuaXNoCQAAZQAAAAIFAAAABnNjYWxlOAkAAGkAAAACCQAAaAAAAAIFAAAABnNjYWxlOAUAAAAJdG9sZXJhbmNlAAAAAAAAmJaABAAAABxzbGlwcGFnZVZhbHVlTWF4Rm9yUmVwbGVuaXNoCQAAZAAAAAIFAAAABnNjYWxlOAkAAGkAAAACCQAAaAAAAAIFAAAABnNjYWxlOAUAAAAJdG9sZXJhbmNlAAAAAAAAmJaABAAAABdzbGlwcGFnZVZhbHVlTWluRm9yU3dhcAkAAGUAAAACBQAAAAZzY2FsZTgJAABpAAAAAgkAAGgAAAACBQAAAAZzY2FsZTgAAAAAAAAAAAEAAAAAAACYloADCQEAAAABIQAAAAEFAAAACGlzQWN0aXZlCQEAAAAPdGhyb3dJc0luYWN0aXZlAAAAAAMJAABmAAAAAgUAAAAPcG10TWluVGhyZXNob2xkBQAAAAlwbXRBbW91bnQJAAACAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAA9QYXltZW50IGFtb3VudCAJAAGkAAAAAQUAAAAJcG10QW1vdW50AgAAACcgZG9lcyBub3QgZXhjZWVkIHRoZSBtaW5pbXVtIGFtb3VudCBvZiAJAAGkAAAAAQUAAAAPcG10TWluVGhyZXNob2xkAgAAAAcgdG9rZW5zAwkBAAAAAiE9AAAAAgkAAZAAAAABCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAQkAAAIAAAABAgAAAB1PbmUgYXR0YWNoZWQgcGF5bWVudCBleHBlY3RlZAMJAQAAAAEhAAAAAQUAAAAQaGFzRW5vdWdoQmFsYW5jZQkABE4AAAACCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgUAAAAJcG10QW1vdW50BQAAAApwbXRBc3NldElkBQAAAANuaWwJAQAAABFzdXNwZW5kU3VzcGljaW91cwAAAAADAwkBAAAAAiE9AAAAAgUAAAAKcG10QXNzZXRJZAUAAAAIYXNzZXRJZEEJAQAAAAIhPQAAAAIFAAAACnBtdEFzc2V0SWQFAAAACGFzc2V0SWRCBwkBAAAAC3Rocm93QXNzZXRzAAAAAAQAAAANJHQwMTQ0OTcxNTI2MgMJAAAAAAAAAgUAAAAKcG10QXNzZXRJZAUAAAAIYXNzZXRJZEEJAAUZAAAABwkAAGUAAAACBQAAAAlwbXRBbW91bnQFAAAAE3ZpcnR1YWxTd2FwVG9rZW5QYXkFAAAAE3ZpcnR1YWxTd2FwVG9rZW5HZXQJAABkAAAAAgUAAAAIYmFsYW5jZUEFAAAAE3ZpcnR1YWxTd2FwVG9rZW5QYXkJAABlAAAAAgUAAAAIYmFsYW5jZUIFAAAAE3ZpcnR1YWxTd2FwVG9rZW5HZXQJAQAAAA1pbnZhcmlhbnRDYWxjAAAAAgkAAGQAAAACBQAAAAhiYWxhbmNlQQUAAAAJcG10QW1vdW50BQAAAAhiYWxhbmNlQgkAAGQAAAACBQAAAAhiYWxhbmNlQQUAAAAJcG10QW1vdW50BQAAAAhiYWxhbmNlQgkABRkAAAAHBQAAABN2aXJ0dWFsU3dhcFRva2VuR2V0CQAAZQAAAAIFAAAACXBtdEFtb3VudAUAAAATdmlydHVhbFN3YXBUb2tlblBheQkAAGUAAAACBQAAAAhiYWxhbmNlQQUAAAATdmlydHVhbFN3YXBUb2tlbkdldAkAAGQAAAACBQAAAAhiYWxhbmNlQgUAAAATdmlydHVhbFN3YXBUb2tlblBheQkBAAAADWludmFyaWFudENhbGMAAAACBQAAAAhiYWxhbmNlQQkAAGQAAAACBQAAAAhiYWxhbmNlQgUAAAAJcG10QW1vdW50BQAAAAhiYWxhbmNlQQkAAGQAAAACBQAAAAhiYWxhbmNlQgUAAAAJcG10QW1vdW50BAAAABF2aXJ0dWFsUmVwbGVuaXNoQQgFAAAADSR0MDE0NDk3MTUyNjIAAAACXzEEAAAAEXZpcnR1YWxSZXBsZW5pc2hCCAUAAAANJHQwMTQ0OTcxNTI2MgAAAAJfMgQAAAARYmFsYW5jZUFmdGVyU3dhcEEIBQAAAA0kdDAxNDQ5NzE1MjYyAAAAAl8zBAAAABFiYWxhbmNlQWZ0ZXJTd2FwQggFAAAADSR0MDE0NDk3MTUyNjIAAAACXzQEAAAAE2ludmFyaWFudENhbGN1bGF0ZWQIBQAAAA0kdDAxNDQ5NzE1MjYyAAAAAl81BAAAAAtuZXdCYWxhbmNlQQgFAAAADSR0MDE0NDk3MTUyNjIAAAACXzYEAAAAC25ld0JhbGFuY2VCCAUAAAANJHQwMTQ0OTcxNTI2MgAAAAJfNwQAAAAPbmV3QmFsYW5jZUVudHJ5AwkAAAAAAAACBQAAAApwbXRBc3NldElkBQAAAAhhc3NldElkQQkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAACWtCYWxhbmNlQQUAAAALbmV3QmFsYW5jZUEJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAAlrQmFsYW5jZUIFAAAAC25ld0JhbGFuY2VCBAAAAAxpbnZhcmlhbnROZXcJAQAAAA1pbnZhcmlhbnRDYWxjAAAAAgUAAAARYmFsYW5jZUFmdGVyU3dhcEEFAAAAEWJhbGFuY2VBZnRlclN3YXBCBAAAABdpbnZhcmlhbnRFc3RpbWF0ZWRSYXRpbwkAAGsAAAADBQAAAAZzY2FsZTgFAAAACWludmFyaWFudAUAAAAMaW52YXJpYW50TmV3BAAAACVyYXRpb1ZpcnR1YWxCYWxhbmNlVG9WaXJ0dWFsUmVwbGVuaXNoCQAAaQAAAAIJAABrAAAAAwkAAGgAAAACBQAAAAZzY2FsZTgFAAAABnNjYWxlOAUAAAARYmFsYW5jZUFmdGVyU3dhcEEFAAAAEWJhbGFuY2VBZnRlclN3YXBCCQAAawAAAAMFAAAABnNjYWxlOAUAAAARdmlydHVhbFJlcGxlbmlzaEEFAAAAEXZpcnR1YWxSZXBsZW5pc2hCBAAAABNkQXBwVGhyZXNob2xkQW1vdW50CQAAawAAAAMJAABkAAAAAgUAAAALbmV3QmFsYW5jZUEFAAAAC25ld0JhbGFuY2VCBQAAAA1kQXBwVGhyZXNob2xkCQAAaAAAAAIAAAAAAAAAAAIFAAAAE2RBcHBUaHJlc2hvbGRTY2FsZTIDAwkAAGcAAAACBQAAABdzbGlwcGFnZVZhbHVlTWluRm9yU3dhcAUAAAAXaW52YXJpYW50RXN0aW1hdGVkUmF0aW8GCQAAZgAAAAIFAAAACWludmFyaWFudAUAAAAMaW52YXJpYW50TmV3CQAAAgAAAAECAAAAOkluY29ycmVjdCB2aXJ0dWFsU3dhcFRva2VuUGF5IG9yIHZpcnR1YWxTd2FwVG9rZW5HZXQgdmFsdWUDAwkAAGYAAAACBQAAABxzbGlwcGFnZVZhbHVlTWluRm9yUmVwbGVuaXNoBQAAACVyYXRpb1ZpcnR1YWxCYWxhbmNlVG9WaXJ0dWFsUmVwbGVuaXNoBgkAAGYAAAACBQAAACVyYXRpb1ZpcnR1YWxCYWxhbmNlVG9WaXJ0dWFsUmVwbGVuaXNoBQAAABxzbGlwcGFnZVZhbHVlTWF4Rm9yUmVwbGVuaXNoCQAAAgAAAAECAAAAbFN3YXAgd2l0aCB2aXJ0dWFsU3dhcFRva2VuUGF5IGFuZCB2aXJ0dWFsU3dhcFRva2VuR2V0IGlzIHBvc3NpYmxlLCBidXQgcmF0aW8gYWZ0ZXIgdmlydHVhbCBzd2FwIGlzIGluY29ycmVjdAMDCQAAZgAAAAIFAAAAE2RBcHBUaHJlc2hvbGRBbW91bnQFAAAAC25ld0JhbGFuY2VBBgkAAGYAAAACBQAAABNkQXBwVGhyZXNob2xkQW1vdW50BQAAAAtuZXdCYWxhbmNlQgkBAAAADnRocm93VGhyZXNob2xkAAAAAwUAAAATZEFwcFRocmVzaG9sZEFtb3VudAUAAAALbmV3QmFsYW5jZUEFAAAAC25ld0JhbGFuY2VCBAAAABNyYXRpb1NoYXJlVG9rZW5zSW5BCQAAawAAAAMJAQAAABBkZWR1Y3RTdGFraW5nRmVlAAAAAgUAAAARdmlydHVhbFJlcGxlbmlzaEEFAAAACGFzc2V0SWRBBQAAAAZzY2FsZTgFAAAAEWJhbGFuY2VBZnRlclN3YXBBBAAAABNyYXRpb1NoYXJlVG9rZW5zSW5CCQAAawAAAAMJAQAAABBkZWR1Y3RTdGFraW5nRmVlAAAAAgUAAAARdmlydHVhbFJlcGxlbmlzaEIFAAAACGFzc2V0SWRCBQAAAAZzY2FsZTgFAAAAEWJhbGFuY2VBZnRlclN3YXBCBAAAABVzaGFyZVRva2VuVG9QYXlBbW91bnQJAABrAAAAAwkAAZcAAAABCQAETAAAAAIFAAAAE3JhdGlvU2hhcmVUb2tlbnNJbkEJAARMAAAAAgUAAAATcmF0aW9TaGFyZVRva2Vuc0luQgUAAAADbmlsBQAAABBzaGFyZUFzc2V0U3VwcGx5BQAAAAZzY2FsZTgJAARMAAAAAgkBAAAAB1JlaXNzdWUAAAADBQAAAAxzaGFyZUFzc2V0SWQFAAAAFXNoYXJlVG9rZW5Ub1BheUFtb3VudAYJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyBQAAABVzaGFyZVRva2VuVG9QYXlBbW91bnQFAAAADHNoYXJlQXNzZXRJZAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAARa1NoYXJlQXNzZXRTdXBwbHkJAABkAAAAAgUAAAAQc2hhcmVBc3NldFN1cHBseQUAAAAVc2hhcmVUb2tlblRvUGF5QW1vdW50CQAETAAAAAIFAAAAD25ld0JhbGFuY2VFbnRyeQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAKa0ludmFyaWFudAUAAAATaW52YXJpYW50Q2FsY3VsYXRlZAUAAAADbmlsAAAAAWkBAAAACHdpdGhkcmF3AAAAAAQAAAANJHQwMTc0MDcxNzU1MAkABRQAAAACCAkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAAAAAZhbW91bnQICQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAAAAAAB2Fzc2V0SWQEAAAACXBtdEFtb3VudAgFAAAADSR0MDE3NDA3MTc1NTAAAAACXzEEAAAACnBtdEFzc2V0SWQIBQAAAA0kdDAxNzQwNzE3NTUwAAAAAl8yBAAAAAxhbW91bnRUb1BheUEJAQAAABBkZWR1Y3RTdGFraW5nRmVlAAAAAgkAAGsAAAADBQAAAAlwbXRBbW91bnQFAAAACGJhbGFuY2VBBQAAABBzaGFyZUFzc2V0U3VwcGx5BQAAAAhhc3NldElkQQQAAAAMYW1vdW50VG9QYXlCCQEAAAAQZGVkdWN0U3Rha2luZ0ZlZQAAAAIJAABrAAAAAwUAAAAJcG10QW1vdW50BQAAAAhiYWxhbmNlQgUAAAAQc2hhcmVBc3NldFN1cHBseQUAAAAIYXNzZXRJZEIEAAAAE2ludmFyaWFudENhbGN1bGF0ZWQJAQAAAA1pbnZhcmlhbnRDYWxjAAAAAgkAAGUAAAACBQAAAAhiYWxhbmNlQQUAAAAMYW1vdW50VG9QYXlBCQAAZQAAAAIFAAAACGJhbGFuY2VCBQAAAAxhbW91bnRUb1BheUIDCQEAAAABIQAAAAEFAAAACGlzQWN0aXZlCQEAAAAPdGhyb3dJc0luYWN0aXZlAAAAAAMJAQAAAAIhPQAAAAIJAAGQAAAAAQgFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAEJAAACAAAAAQIAAAAdT25lIGF0dGFjaGVkIHBheW1lbnQgZXhwZWN0ZWQDCQEAAAACIT0AAAACBQAAAApwbXRBc3NldElkBQAAAAxzaGFyZUFzc2V0SWQJAAACAAAAAQkAASwAAAACAgAAACRJbmNvcnJlY3QgYXNzZXQgYXR0YWNoZWQuIEV4cGVjdGVkOiAJAAJYAAAAAQUAAAAMc2hhcmVBc3NldElkAwkBAAAAASEAAAABBQAAABBoYXNFbm91Z2hCYWxhbmNlCQAETgAAAAIJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyBQAAAAlwbXRBbW91bnQFAAAACnBtdEFzc2V0SWQFAAAAA25pbAkBAAAAEXN1c3BlbmRTdXNwaWNpb3VzAAAAAAMDCQAAZgAAAAIFAAAADGFtb3VudFRvUGF5QQUAAAARYXZhaWxhYmxlQmFsYW5jZUEGCQAAZgAAAAIFAAAADGFtb3VudFRvUGF5QgUAAAARYXZhaWxhYmxlQmFsYW5jZUIJAQAAACJ0aHJvd0luc3VmZmljaWVudEF2YWlsYWJsZUJhbGFuY2VzAAAAAgUAAAAMYW1vdW50VG9QYXlBBQAAAAxhbW91bnRUb1BheUIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAACWtCYWxhbmNlQQkAAGUAAAACBQAAAAhiYWxhbmNlQQUAAAAMYW1vdW50VG9QYXlBCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAAlrQmFsYW5jZUIJAABlAAAAAgUAAAAIYmFsYW5jZUIFAAAADGFtb3VudFRvUGF5QgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAARa1NoYXJlQXNzZXRTdXBwbHkJAABlAAAAAgUAAAAQc2hhcmVBc3NldFN1cHBseQUAAAAJcG10QW1vdW50CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAAprSW52YXJpYW50BQAAABNpbnZhcmlhbnRDYWxjdWxhdGVkCQAETAAAAAIJAQAAAARCdXJuAAAAAgUAAAAMc2hhcmVBc3NldElkBQAAAAlwbXRBbW91bnQJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyBQAAAAxhbW91bnRUb1BheUEFAAAACGFzc2V0SWRBCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgUAAAAMYW1vdW50VG9QYXlCBQAAAAhhc3NldElkQgUAAAADbmlsAAAAAWkBAAAACGV4Y2hhbmdlAAAAAgAAABhlc3RpbWF0ZWRBbW91bnRUb1JlY2VpdmUAAAASbWluQW1vdW50VG9SZWNlaXZlBAAAAA0kdDAxODkwODE4OTgzCQAFFAAAAAIICQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAAAAAABmFtb3VudAgJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAAAAAHYXNzZXRJZAQAAAAJcG10QW1vdW50CAUAAAANJHQwMTg5MDgxODk4MwAAAAJfMQQAAAAKcG10QXNzZXRJZAgFAAAADSR0MDE4OTA4MTg5ODMAAAACXzIDCQEAAAABIQAAAAEFAAAACGlzQWN0aXZlCQEAAAAPdGhyb3dJc0luYWN0aXZlAAAAAAMJAABnAAAAAgAAAAAAAAAAAAUAAAAYZXN0aW1hdGVkQW1vdW50VG9SZWNlaXZlCQAAAgAAAAEJAAEsAAAAAgIAAAArRXN0aW1hdGVkIGFtb3VudCBtdXN0IGJlIHBvc2l0aXZlLiBBY3R1YWw6IAkAAaQAAAABBQAAABhlc3RpbWF0ZWRBbW91bnRUb1JlY2VpdmUDCQAAZgAAAAIFAAAAEm1pbkFtb3VudFRvUmVjZWl2ZQUAAAAYZXN0aW1hdGVkQW1vdW50VG9SZWNlaXZlCQAAAgAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAO01pbmltYWwgYW1vdW50IGNhbid0IGJlIGdyZWF0ZXIgdGhhbiBlc3RpbWF0ZWQuIEVzdGltYXRlZDogCQABpAAAAAEFAAAAGGVzdGltYXRlZEFtb3VudFRvUmVjZWl2ZQIAAAALLiBNaW5pbWFsOiAJAAGkAAAAAQUAAAASbWluQW1vdW50VG9SZWNlaXZlAwkBAAAAAiE9AAAAAgkAAZAAAAABCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAQkAAAIAAAABAgAAAB1PbmUgYXR0YWNoZWQgcGF5bWVudCBleHBlY3RlZAMJAQAAAAEhAAAAAQUAAAAQaGFzRW5vdWdoQmFsYW5jZQkABE4AAAACCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgUAAAAJcG10QW1vdW50BQAAAApwbXRBc3NldElkBQAAAANuaWwJAQAAABFzdXNwZW5kU3VzcGljaW91cwAAAAADAwkBAAAAAiE9AAAAAgUAAAAKcG10QXNzZXRJZAUAAAAIYXNzZXRJZEEJAQAAAAIhPQAAAAIFAAAACnBtdEFzc2V0SWQFAAAACGFzc2V0SWRCBwkBAAAAC3Rocm93QXNzZXRzAAAAAAMJAABmAAAAAgAAAAAAAJiWgAUAAAAJcG10QW1vdW50CQAAAgAAAAECAAAAME9ubHkgc3dhcCBvZiAxMC4wMDAwMDAgb3IgbW9yZSB0b2tlbnMgaXMgYWxsb3dlZAMDCQAAZgAAAAIFAAAAFWV4Y2hhbmdlUmF0aW9MaW1pdE1pbgkAAGsAAAADBQAAAAZzY2FsZTgFAAAAEm1pbkFtb3VudFRvUmVjZWl2ZQUAAAAJcG10QW1vdW50BgkAAGYAAAACCQAAawAAAAMFAAAABnNjYWxlOAUAAAAYZXN0aW1hdGVkQW1vdW50VG9SZWNlaXZlBQAAAAlwbXRBbW91bnQFAAAAFWV4Y2hhbmdlUmF0aW9MaW1pdE1heAkAAAIAAAABAgAAABxJbmNvcnJlY3QgYXJncyBhbmQgcG10IHJhdGlvBAAAAAtzZW5kQXNzZXRJZAMJAAAAAAAAAgUAAAAKcG10QXNzZXRJZAUAAAAIYXNzZXRJZEEFAAAACGFzc2V0SWRCBQAAAAhhc3NldElkQQQAAAAGYW1vdW50CQEAAAATY2FsY3VsYXRlU2VuZEFtb3VudAAAAAQFAAAAGGVzdGltYXRlZEFtb3VudFRvUmVjZWl2ZQUAAAASbWluQW1vdW50VG9SZWNlaXZlBQAAAAlwbXRBbW91bnQFAAAACnBtdEFzc2V0SWQEAAAAEGdvdmVybmFuY2VSZXdhcmQJAABrAAAAAwUAAAAGYW1vdW50BQAAAA1mZWVHb3Zlcm5hbmNlBQAAAAlmZWVTY2FsZTYEAAAADmFtb3VudE1pbnVzRmVlCQAAawAAAAMFAAAABmFtb3VudAkAAGUAAAACBQAAAAlmZWVTY2FsZTYFAAAAA2ZlZQUAAAAJZmVlU2NhbGU2BAAAAA0kdDAyMDQwNTIwNjY3AwkAAAAAAAACBQAAAApwbXRBc3NldElkBQAAAAhhc3NldElkQQkABRQAAAACCQAAZAAAAAIFAAAACGJhbGFuY2VBBQAAAAlwbXRBbW91bnQJAABlAAAAAgkAAGUAAAACBQAAAAhiYWxhbmNlQgUAAAAOYW1vdW50TWludXNGZWUFAAAAEGdvdmVybmFuY2VSZXdhcmQJAAUUAAAAAgkAAGUAAAACCQAAZQAAAAIFAAAACGJhbGFuY2VBBQAAAA5hbW91bnRNaW51c0ZlZQUAAAAQZ292ZXJuYW5jZVJld2FyZAkAAGQAAAACBQAAAAhiYWxhbmNlQgUAAAAJcG10QW1vdW50BAAAAAtuZXdCYWxhbmNlQQgFAAAADSR0MDIwNDA1MjA2NjcAAAACXzEEAAAAC25ld0JhbGFuY2VCCAUAAAANJHQwMjA0MDUyMDY2NwAAAAJfMgQAAAATZEFwcFRocmVzaG9sZEFtb3VudAkAAGsAAAADCQAAZAAAAAIFAAAAC25ld0JhbGFuY2VBBQAAAAtuZXdCYWxhbmNlQgUAAAANZEFwcFRocmVzaG9sZAkAAGgAAAACAAAAAAAAAAACBQAAABNkQXBwVGhyZXNob2xkU2NhbGUyAwMJAABmAAAAAgUAAAATZEFwcFRocmVzaG9sZEFtb3VudAUAAAALbmV3QmFsYW5jZUEGCQAAZgAAAAIFAAAAE2RBcHBUaHJlc2hvbGRBbW91bnQFAAAAC25ld0JhbGFuY2VCCQEAAAAOdGhyb3dUaHJlc2hvbGQAAAADBQAAABNkQXBwVGhyZXNob2xkQW1vdW50BQAAAAtuZXdCYWxhbmNlQQUAAAALbmV3QmFsYW5jZUIDAwMJAAAAAAAAAgUAAAAIYXNzZXRJZEEFAAAABFVTRE4JAAAAAAAAAgUAAAALc2VuZEFzc2V0SWQFAAAACGFzc2V0SWRBBwkAAGcAAAACBQAAABBzdGFrZWRBbW91bnRVU0ROBQAAAAtuZXdCYWxhbmNlQQcJAQAAACF0aHJvd0luc3VmZmljaWVudEF2YWlsYWJsZUJhbGFuY2UAAAADBQAAAA5hbW91bnRNaW51c0ZlZQUAAAARYXZhaWxhYmxlQmFsYW5jZUEFAAAACmFzc2V0TmFtZUEDAwMJAAAAAAAAAgUAAAAIYXNzZXRJZEIFAAAABFVTRE4JAAAAAAAAAgUAAAALc2VuZEFzc2V0SWQFAAAACGFzc2V0SWRCBwkAAGcAAAACBQAAABBzdGFrZWRBbW91bnRVU0ROBQAAAAtuZXdCYWxhbmNlQgcJAQAAACF0aHJvd0luc3VmZmljaWVudEF2YWlsYWJsZUJhbGFuY2UAAAADBQAAAA5hbW91bnRNaW51c0ZlZQUAAAARYXZhaWxhYmxlQmFsYW5jZUIFAAAACmFzc2V0TmFtZUIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAACWtCYWxhbmNlQQUAAAALbmV3QmFsYW5jZUEJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAACWtCYWxhbmNlQgUAAAALbmV3QmFsYW5jZUIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAACmtJbnZhcmlhbnQJAQAAAA1pbnZhcmlhbnRDYWxjAAAAAgUAAAALbmV3QmFsYW5jZUEFAAAAC25ld0JhbGFuY2VCCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgUAAAAOYW1vdW50TWludXNGZWUFAAAAC3NlbmRBc3NldElkCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMFAAAAB2dvdkFkZHIFAAAAEGdvdmVybmFu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", "height": 2681275, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: DZUWBTsdYZ6xi3f6nKnewajY3tFM1sHHxJgHaRJcSizj Next: 9aSC87Ub5LW2JueEeButiKuwbuDsotoggDtefnTXRfPs Diff:
Old | New | Differences | |
---|---|---|---|
1 | - | {-# STDLIB_VERSION | |
1 | + | {-# STDLIB_VERSION 5 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | let a = "2.0.0" | |
27 | 27 | ||
28 | 28 | let m = "shutdown_cause" | |
29 | 29 | ||
30 | - | let n = | |
30 | + | let n = "admin_pub_1" | |
31 | 31 | ||
32 | - | let o = | |
32 | + | let o = "admin_pub_2" | |
33 | 33 | ||
34 | - | let p = | |
34 | + | let p = "admin_pub_3" | |
35 | 35 | ||
36 | - | let q = base58' | |
36 | + | let q = Address(base58'3PHaNgomBkrvEL2QnuJarQVJa71wjw9qiqG') | |
37 | 37 | ||
38 | - | let r = base58' | |
38 | + | let r = Address(base58'3PEbqViERCoKnmcSULh6n2aiMvUdSQdCsom') | |
39 | 39 | ||
40 | - | let s = Address(base58'3P6J84oH51DzY6xk2mT5TheXRbrCwBMxonp') | |
40 | + | func s (t) = { | |
41 | + | let u = getString(r, t) | |
42 | + | if ($isInstanceOf(u, "String")) | |
43 | + | then { | |
44 | + | let v = u | |
45 | + | fromBase58String(v) | |
46 | + | } | |
47 | + | else { | |
48 | + | let w = u | |
49 | + | throw("Admin public key is empty") | |
50 | + | } | |
51 | + | } | |
41 | 52 | ||
42 | - | let t = Address(base58'3PNikM6yp4NqcSU8guxQtmR5onr2D4e8yTJ') | |
43 | 53 | ||
44 | - | let | |
54 | + | let x = s(n) | |
45 | 55 | ||
46 | - | let | |
56 | + | let y = s(o) | |
47 | 57 | ||
48 | - | let | |
58 | + | let z = s(p) | |
49 | 59 | ||
50 | - | let | |
60 | + | let A = base58'EtVkT6ed8GtbUiVVEqdmEqsp2J4qbb3rre2HFgxeVYdg' | |
51 | 61 | ||
52 | - | let | |
62 | + | let B = base58'Czn4yoAuUZCVCLJDRfskn8URfkwpknwBTZDbs1wFrY7h' | |
53 | 63 | ||
54 | - | let | |
64 | + | let C = Address(base58'3P6J84oH51DzY6xk2mT5TheXRbrCwBMxonp') | |
55 | 65 | ||
56 | - | let A = if ((y == "WAVES")) | |
66 | + | let D = Address(base58'3PNikM6yp4NqcSU8guxQtmR5onr2D4e8yTJ') | |
67 | + | ||
68 | + | let E = base58'DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p' | |
69 | + | ||
70 | + | let F = 270000 | |
71 | + | ||
72 | + | let G = getBooleanValue(this, c) | |
73 | + | ||
74 | + | let H = getStringValue(this, d) | |
75 | + | ||
76 | + | let I = getStringValue(this, e) | |
77 | + | ||
78 | + | let J = if ((H == "WAVES")) | |
57 | 79 | then unit | |
58 | - | else fromBase58String( | |
80 | + | else fromBase58String(H) | |
59 | 81 | ||
60 | - | let | |
82 | + | let K = if ((I == "WAVES")) | |
61 | 83 | then unit | |
62 | - | else fromBase58String( | |
84 | + | else fromBase58String(I) | |
63 | 85 | ||
64 | - | let | |
65 | - | let | |
66 | - | if ($isInstanceOf( | |
86 | + | let L = { | |
87 | + | let u = J | |
88 | + | if ($isInstanceOf(u, "ByteVector")) | |
67 | 89 | then { | |
68 | - | let | |
69 | - | value(assetInfo( | |
90 | + | let M = u | |
91 | + | value(assetInfo(M)).name | |
70 | 92 | } | |
71 | - | else if ($isInstanceOf( | |
93 | + | else if ($isInstanceOf(u, "Unit")) | |
72 | 94 | then { | |
73 | - | let | |
95 | + | let N = u | |
74 | 96 | "WAVES" | |
75 | 97 | } | |
76 | 98 | else throw("Match error") | |
77 | 99 | } | |
78 | 100 | ||
79 | - | let | |
80 | - | let | |
81 | - | if ($isInstanceOf( | |
101 | + | let O = { | |
102 | + | let u = K | |
103 | + | if ($isInstanceOf(u, "ByteVector")) | |
82 | 104 | then { | |
83 | - | let | |
84 | - | value(assetInfo( | |
105 | + | let M = u | |
106 | + | value(assetInfo(M)).name | |
85 | 107 | } | |
86 | - | else if ($isInstanceOf( | |
108 | + | else if ($isInstanceOf(u, "Unit")) | |
87 | 109 | then { | |
88 | - | let | |
110 | + | let N = u | |
89 | 111 | "WAVES" | |
90 | 112 | } | |
91 | 113 | else throw("Match error") | |
92 | 114 | } | |
93 | 115 | ||
94 | - | let | |
116 | + | let P = getIntegerValue(this, f) | |
95 | 117 | ||
96 | - | let | |
118 | + | let Q = getIntegerValue(this, g) | |
97 | 119 | ||
98 | - | let | |
120 | + | let R = fromBase58String(getStringValue(this, h)) | |
99 | 121 | ||
100 | - | let | |
122 | + | let S = getIntegerValue(this, i) | |
101 | 123 | ||
102 | - | let | |
124 | + | let T = getIntegerValue(this, l) | |
103 | 125 | ||
104 | - | let | |
126 | + | let U = 500 | |
105 | 127 | ||
106 | - | let | |
128 | + | let V = 200 | |
107 | 129 | ||
108 | - | let | |
130 | + | let W = 1000000 | |
109 | 131 | ||
110 | - | let | |
132 | + | let X = 1000 | |
111 | 133 | ||
112 | - | let | |
134 | + | let Y = 100000000 | |
113 | 135 | ||
114 | - | let | |
136 | + | let Z = 1000000000000 | |
115 | 137 | ||
116 | - | let | |
138 | + | let aa = 1000 | |
117 | 139 | ||
118 | - | let | |
140 | + | let ab = 8 | |
119 | 141 | ||
120 | - | let | |
142 | + | let ac = 50 | |
121 | 143 | ||
122 | - | let | |
144 | + | let ad = 100 | |
123 | 145 | ||
124 | - | let | |
146 | + | let ae = 90000000 | |
125 | 147 | ||
126 | - | let | |
148 | + | let af = 110000000 | |
127 | 149 | ||
128 | - | let | |
150 | + | let ag = 50 | |
129 | 151 | ||
130 | - | let | |
152 | + | let ah = 2 | |
131 | 153 | ||
132 | - | func aa (ab) = { | |
133 | - | let D = ab | |
134 | - | if ($isInstanceOf(D, "ByteVector")) | |
154 | + | let ai = 46000000 | |
155 | + | ||
156 | + | func aj (ak) = { | |
157 | + | let u = ak | |
158 | + | if ($isInstanceOf(u, "ByteVector")) | |
135 | 159 | then { | |
136 | - | let | |
137 | - | assetBalance(this, | |
160 | + | let M = u | |
161 | + | assetBalance(this, M) | |
138 | 162 | } | |
139 | - | else if ($isInstanceOf( | |
163 | + | else if ($isInstanceOf(u, "Unit")) | |
140 | 164 | then { | |
141 | - | let | |
165 | + | let N = u | |
142 | 166 | wavesBalance(this).available | |
143 | 167 | } | |
144 | 168 | else throw("Match error") | |
145 | 169 | } | |
146 | 170 | ||
147 | 171 | ||
148 | - | let | |
149 | - | let | |
150 | - | if ($isInstanceOf( | |
172 | + | let al = { | |
173 | + | let u = getInteger(D, ((("rpd_balance_" + toBase58String(E)) + "_") + toString(this))) | |
174 | + | if ($isInstanceOf(u, "Int")) | |
151 | 175 | then { | |
152 | - | let | |
153 | - | | |
176 | + | let am = u | |
177 | + | am | |
154 | 178 | } | |
155 | - | else if ($isInstanceOf( | |
179 | + | else if ($isInstanceOf(u, "Unit")) | |
156 | 180 | then { | |
157 | - | let | |
181 | + | let w = u | |
158 | 182 | 0 | |
159 | 183 | } | |
160 | 184 | else throw("Match error") | |
161 | 185 | } | |
162 | 186 | ||
163 | - | let | |
164 | - | then | |
187 | + | let an = (P - (if ((J == E)) | |
188 | + | then al | |
165 | 189 | else 0)) | |
166 | 190 | ||
167 | - | let | |
168 | - | then | |
191 | + | let ao = (Q - (if ((K == E)) | |
192 | + | then al | |
169 | 193 | else 0)) | |
170 | 194 | ||
171 | - | let | |
172 | - | then | |
195 | + | let ap = (aj(J) + (if ((J == E)) | |
196 | + | then al | |
173 | 197 | else 0)) | |
174 | 198 | ||
175 | - | let | |
176 | - | then | |
199 | + | let aq = (aj(K) + (if ((K == E)) | |
200 | + | then al | |
177 | 201 | else 0)) | |
178 | 202 | ||
179 | - | let | |
180 | - | then ( | |
203 | + | let ar = if ((ap >= P)) | |
204 | + | then (aq >= Q) | |
181 | 205 | else false | |
182 | 206 | ||
183 | - | func | |
207 | + | func as (at,au) = (((fraction(Z, at, au) + fraction(Z, au, at)) / 2) / 10000) | |
184 | 208 | ||
185 | 209 | ||
186 | - | func | |
187 | - | let | |
188 | - | (fraction(( | |
210 | + | func av (at,au) = { | |
211 | + | let aw = as(at, au) | |
212 | + | (fraction((at + au), Y, pow(aw, ab, ag, ah, ab, CEILING)) + (2 * fraction(pow(fraction(at, au, Y), 0, 5, 1, (ab / 2), DOWN), pow((aw - ai), ab, ag, ah, ab, DOWN), Y))) | |
189 | 213 | } | |
190 | 214 | ||
191 | 215 | ||
192 | - | func ap (aq,ar,as,at) = { | |
193 | - | let au = (P - ((P * 1) / 10000000)) | |
194 | - | let av = (aq - ar) | |
195 | - | let aw = an(H, I) | |
196 | - | let al = (H + as) | |
197 | - | let am = (I + as) | |
198 | - | let ax = if ((at == A)) | |
199 | - | then an(al, (I - aq)) | |
200 | - | else if ((at == B)) | |
201 | - | then an((H - aq), am) | |
216 | + | func ax (ay,az,aA,aB) = { | |
217 | + | let aC = (Y - ((Y * 1) / 10000000)) | |
218 | + | let aD = (ay - az) | |
219 | + | let at = (P + aA) | |
220 | + | let au = (Q + aA) | |
221 | + | let aE = if ((aB == J)) | |
222 | + | then av(at, (Q - ay)) | |
223 | + | else if ((aB == K)) | |
224 | + | then av((P - ay), au) | |
202 | 225 | else throw("Wrong asset in payment") | |
203 | - | let | |
204 | - | func | |
226 | + | let aF = fraction(Y, T, aE) | |
227 | + | func aG (aH,aI) = if ((aH == -1)) | |
205 | 228 | then { | |
206 | - | let | |
207 | - | let | |
208 | - | then | |
209 | - | else | |
210 | - | if (( | |
211 | - | then | |
229 | + | let aJ = (ay - ((aI * aD) / 5)) | |
230 | + | let aK = if ((aB == J)) | |
231 | + | then av(at, (Q - aJ)) | |
232 | + | else av((P - aJ), au) | |
233 | + | if ((aK > T)) | |
234 | + | then aJ | |
212 | 235 | else -1 | |
213 | 236 | } | |
214 | - | else | |
237 | + | else aH | |
215 | 238 | ||
216 | - | let | |
217 | - | let | |
218 | - | let | |
219 | - | let | |
220 | - | if (( | |
221 | - | then | |
239 | + | let aL = { | |
240 | + | let aM = [1, 2, 3, 4, 5] | |
241 | + | let aN = size(aM) | |
242 | + | let aO = -1 | |
243 | + | if ((aN == 0)) | |
244 | + | then aO | |
222 | 245 | else { | |
223 | - | let | |
224 | - | if (( | |
225 | - | then | |
246 | + | let aP = aG(aO, aM[0]) | |
247 | + | if ((aN == 1)) | |
248 | + | then aP | |
226 | 249 | else { | |
227 | - | let | |
228 | - | if (( | |
229 | - | then | |
250 | + | let aQ = aG(aP, aM[1]) | |
251 | + | if ((aN == 2)) | |
252 | + | then aQ | |
230 | 253 | else { | |
231 | - | let | |
232 | - | if (( | |
233 | - | then | |
254 | + | let aR = aG(aQ, aM[2]) | |
255 | + | if ((aN == 3)) | |
256 | + | then aR | |
234 | 257 | else { | |
235 | - | let | |
236 | - | if (( | |
237 | - | then | |
258 | + | let aS = aG(aR, aM[3]) | |
259 | + | if ((aN == 4)) | |
260 | + | then aS | |
238 | 261 | else { | |
239 | - | let | |
240 | - | if (( | |
241 | - | then | |
262 | + | let aT = aG(aS, aM[4]) | |
263 | + | if ((aN == 5)) | |
264 | + | then aT | |
242 | 265 | else { | |
243 | - | let | |
266 | + | let aU = aG(aT, aM[5]) | |
244 | 267 | throw("List size exceed 5") | |
245 | 268 | } | |
246 | 269 | } | |
249 | 272 | } | |
250 | 273 | } | |
251 | 274 | } | |
252 | - | if ((0 > | |
275 | + | if ((0 > aL)) | |
253 | 276 | then throw("something went wrong while working with amountToSend") | |
254 | - | else if (if (( | |
255 | - | then ( | |
277 | + | else if (if ((aF > aC)) | |
278 | + | then (aE > T) | |
256 | 279 | else false) | |
257 | - | then | |
258 | - | else | |
280 | + | then ay | |
281 | + | else aL | |
259 | 282 | } | |
260 | 283 | ||
261 | 284 | ||
262 | - | func | |
263 | - | let | |
264 | - | if ($isInstanceOf( | |
285 | + | func aV (ak) = { | |
286 | + | let u = ak | |
287 | + | if ($isInstanceOf(u, "ByteVector")) | |
265 | 288 | then { | |
266 | - | let | |
267 | - | let | |
268 | - | let | |
269 | - | $Tuple3( | |
289 | + | let M = u | |
290 | + | let aW = toBase58String(M) | |
291 | + | let aX = valueOrErrorMessage(assetInfo(M), (("Asset " + aW) + " doesn't exist")) | |
292 | + | $Tuple3(aW, aX.name, aX.decimals) | |
270 | 293 | } | |
271 | - | else if ($isInstanceOf( | |
294 | + | else if ($isInstanceOf(u, "Unit")) | |
272 | 295 | then { | |
273 | - | let | |
296 | + | let N = u | |
274 | 297 | $Tuple3("WAVES", "WAVES", 8) | |
275 | 298 | } | |
276 | 299 | else throw("Match error") | |
277 | 300 | } | |
278 | 301 | ||
279 | 302 | ||
280 | - | func | |
303 | + | func aY (aZ) = [BooleanEntry(c, false), StringEntry(m, aZ)] | |
281 | 304 | ||
282 | 305 | ||
283 | - | func | |
306 | + | func ba (bb,ak) = if ((ak == E)) | |
284 | 307 | then { | |
285 | - | let | |
286 | - | if ((0 >= | |
287 | - | then throw((((("Insufficient amount " + toString( | |
288 | - | else | |
308 | + | let bc = (bb - F) | |
309 | + | if ((0 >= bc)) | |
310 | + | then throw((((("Insufficient amount " + toString(bb)) + " to deduct staking fee ") + toString(F)) + " USD-N")) | |
311 | + | else bc | |
289 | 312 | } | |
290 | - | else | |
313 | + | else bb | |
291 | 314 | ||
292 | 315 | ||
293 | - | func | |
316 | + | func bd () = throw("DApp is already active") | |
294 | 317 | ||
295 | 318 | ||
296 | - | func | |
319 | + | func be () = throw("DApp is inactive at this moment") | |
297 | 320 | ||
298 | 321 | ||
299 | - | func | |
322 | + | func bf () = throw("Only admin can call this function") | |
300 | 323 | ||
301 | 324 | ||
302 | - | func | |
325 | + | func bg () = throw(((("Incorrect assets attached. Expected: " + H) + " and ") + I)) | |
303 | 326 | ||
304 | 327 | ||
305 | - | func | |
328 | + | func bh (bi,bj,bk) = throw(((((((((("New balance in assets of the DApp is less than threshold " + toString(bi)) + ": ") + toString(bj)) + " ") + L) + ", ") + toString(bk)) + " ") + O)) | |
306 | 329 | ||
307 | 330 | ||
308 | - | func | |
331 | + | func bl (bb,bm,bn) = throw((((((((("Insufficient DApp balance to pay " + toString(bb)) + " ") + bn) + " due to staking. Available: ") + toString(bm)) + " ") + bn) + ". Please contact support in Telegram: https://t.me/swopfisupport")) | |
309 | 332 | ||
310 | 333 | ||
311 | - | func | |
334 | + | func bo (bj,bk) = throw((((((((((((((((("Insufficient DApp balance to pay " + toString(bj)) + " ") + L) + " and ") + toString(bk)) + " ") + O) + " due to staking. Available: ") + toString(an)) + " ") + L) + " and ") + toString(ao)) + " ") + O) + ". Please contact support in Telegram: https://t.me/swopfisupport")) | |
312 | 335 | ||
313 | 336 | ||
314 | - | func | |
337 | + | func bp () = aY(((((((((((((((("Suspicious state. Actual balances: " + toString(P)) + " ") + L) + ", ") + toString(Q)) + " ") + O) + ". State: ") + toString(aj(J))) + " ") + L) + ", ") + toString(aj(K))) + " ") + O)) | |
315 | 338 | ||
316 | 339 | ||
317 | - | @Callable( | |
340 | + | @Callable(bq) | |
318 | 341 | func init () = { | |
319 | - | let bk = $Tuple2(bj.payments[0].amount, bj.payments[0].assetId) | |
320 | - | let bl = bk._1 | |
321 | - | let bm = bk._2 | |
322 | - | let bn = $Tuple2(bj.payments[1].amount, bj.payments[1].assetId) | |
323 | - | let bo = bn._1 | |
324 | - | let bp = bn._2 | |
325 | - | let bq = aO(bm) | |
326 | - | let br = bq._1 | |
327 | - | let bs = bq._2 | |
328 | - | let bt = bq._3 | |
329 | - | let bu = aO(bp) | |
342 | + | let br = $Tuple2(bq.payments[0].amount, bq.payments[0].assetId) | |
343 | + | let bs = br._1 | |
344 | + | let bt = br._2 | |
345 | + | let bu = $Tuple2(bq.payments[1].amount, bq.payments[1].assetId) | |
330 | 346 | let bv = bu._1 | |
331 | 347 | let bw = bu._2 | |
332 | - | let bx = bu._3 | |
348 | + | let bx = aV(bt) | |
349 | + | let by = bx._1 | |
350 | + | let bz = bx._2 | |
351 | + | let bA = bx._3 | |
352 | + | let bB = aV(bw) | |
353 | + | let bC = bB._1 | |
354 | + | let bD = bB._2 | |
355 | + | let bE = bB._3 | |
333 | 356 | if (isDefined(getBoolean(this, c))) | |
334 | - | then | |
335 | - | else if (( | |
357 | + | then bd() | |
358 | + | else if ((bt == bw)) | |
336 | 359 | then throw("Assets must be different") | |
337 | 360 | else { | |
338 | - | let | |
339 | - | let | |
340 | - | let | |
341 | - | let | |
342 | - | let | |
343 | - | let | |
344 | - | let | |
345 | - | [StringEntry(b, a), BooleanEntry(c, true), StringEntry(d, | |
361 | + | let bF = ((("s" + take(bz, 7)) + "_") + take(bD, 7)) | |
362 | + | let bG = ((((("ShareToken of SwopFi protocol for " + bz) + " and ") + bD) + " at address ") + toString(this)) | |
363 | + | let bH = ((bA + bE) / 2) | |
364 | + | let bI = fraction(pow(bs, bA, 5, 1, bA, DOWN), pow(bv, bE, 5, 1, bE, DOWN), pow(10, 0, bH, 0, 0, DOWN)) | |
365 | + | let bJ = Issue(bF, bG, bI, bH, true) | |
366 | + | let bK = calculateAssetId(bJ) | |
367 | + | let bL = av(bs, bv) | |
368 | + | [StringEntry(b, a), BooleanEntry(c, true), StringEntry(d, by), StringEntry(e, bC), IntegerEntry(f, bs), IntegerEntry(g, bv), IntegerEntry(l, bL), IntegerEntry(j, U), IntegerEntry(k, W), bJ, StringEntry(h, toBase58String(bK)), IntegerEntry(i, bI), ScriptTransfer(bq.caller, bI, bK)] | |
346 | 369 | } | |
347 | 370 | } | |
348 | 371 | ||
349 | 372 | ||
350 | 373 | ||
351 | - | @Callable( | |
352 | - | func replenishWithTwoTokens ( | |
353 | - | let | |
354 | - | let | |
355 | - | let | |
356 | - | let | |
357 | - | let | |
358 | - | let | |
359 | - | let | |
360 | - | let | |
361 | - | let | |
362 | - | if (!( | |
363 | - | then | |
364 | - | else if (if ((0 > | |
374 | + | @Callable(bq) | |
375 | + | func replenishWithTwoTokens (bM) = { | |
376 | + | let bt = bq.payments[0].assetId | |
377 | + | let bw = bq.payments[1].assetId | |
378 | + | let bs = ba(bq.payments[0].amount, bt) | |
379 | + | let bv = ba(bq.payments[1].amount, bw) | |
380 | + | let bN = fraction(fraction(Y, P, bs), X, fraction(Y, Q, bv)) | |
381 | + | let bO = fraction(Y, bs, P) | |
382 | + | let bP = fraction(Y, bv, Q) | |
383 | + | let bQ = fraction(min([bO, bP]), S, Y) | |
384 | + | let bL = av((P + bs), (Q + bv)) | |
385 | + | if (!(G)) | |
386 | + | then be() | |
387 | + | else if (if ((0 > bM)) | |
365 | 388 | then true | |
366 | - | else ( | |
389 | + | else (bM > 10)) | |
367 | 390 | then throw("Slippage tolerance must be <= 1%") | |
368 | - | else if ((size( | |
391 | + | else if ((size(bq.payments) != 2)) | |
369 | 392 | then throw("Two attached assets expected") | |
370 | - | else if (if (( | |
393 | + | else if (if ((bt != J)) | |
371 | 394 | then true | |
372 | - | else ( | |
373 | - | then | |
374 | - | else if (if (((( | |
395 | + | else (bw != K)) | |
396 | + | then bg() | |
397 | + | else if (if ((((X * (aa - bM)) / aa) > bN)) | |
375 | 398 | then true | |
376 | - | else ( | |
399 | + | else (bN > ((X * (aa + bM)) / aa))) | |
377 | 400 | then throw("Incorrect assets amount: amounts must have the contract ratio") | |
378 | - | else if (( | |
401 | + | else if ((bQ == 0)) | |
379 | 402 | then throw("Too small amount to replenish") | |
380 | - | else if (!( | |
381 | - | then ([ScriptTransfer( | |
382 | - | else [IntegerEntry(f, ( | |
403 | + | else if (!(ar)) | |
404 | + | then ([ScriptTransfer(bq.caller, bs, bt), ScriptTransfer(bq.caller, bv, bw)] ++ bp()) | |
405 | + | else [IntegerEntry(f, (P + bs)), IntegerEntry(g, (Q + bv)), IntegerEntry(i, (S + bQ)), IntegerEntry(l, bL), Reissue(R, bQ, true), ScriptTransfer(bq.caller, bQ, R)] | |
383 | 406 | } | |
384 | 407 | ||
385 | 408 | ||
386 | 409 | ||
387 | - | @Callable(bj) | |
388 | - | func replenishWithOneToken (bK,bL) = { | |
389 | - | let bM = $Tuple2(bj.payments[0].amount, bj.payments[0].assetId) | |
390 | - | let bN = bM._1 | |
391 | - | let bO = bM._2 | |
392 | - | let aw = an(H, I) | |
393 | - | let bP = 5000000 | |
394 | - | let bQ = 50000000 | |
395 | - | let bR = if ((bQ > bN)) | |
410 | + | @Callable(bq) | |
411 | + | func replenishWithOneToken (bR,bS) = { | |
412 | + | let bT = $Tuple2(bq.payments[0].amount, bq.payments[0].assetId) | |
413 | + | let bU = bT._1 | |
414 | + | let bV = bT._2 | |
415 | + | let bW = 5000000 | |
416 | + | let bX = 50000000 | |
417 | + | let bY = if ((bX > bU)) | |
396 | 418 | then 100000 | |
397 | 419 | else 1 | |
398 | - | let | |
399 | - | let | |
400 | - | let | |
401 | - | if (!( | |
402 | - | then | |
403 | - | else if (( | |
404 | - | then throw((((("Payment amount " + toString( | |
405 | - | else if ((size( | |
420 | + | let bZ = (Y - ((Y * bY) / 10000000)) | |
421 | + | let ca = (Y + ((Y * bY) / 10000000)) | |
422 | + | let cb = (Y - ((Y * 1) / 10000000)) | |
423 | + | if (!(G)) | |
424 | + | then be() | |
425 | + | else if ((bW > bU)) | |
426 | + | then throw((((("Payment amount " + toString(bU)) + " does not exceed the minimum amount of ") + toString(bW)) + " tokens")) | |
427 | + | else if ((size(bq.payments) != 1)) | |
406 | 428 | then throw("One attached payment expected") | |
407 | - | else if (!( | |
408 | - | then ([ScriptTransfer( | |
409 | - | else if (if (( | |
410 | - | then ( | |
429 | + | else if (!(ar)) | |
430 | + | then ([ScriptTransfer(bq.caller, bU, bV)] ++ bp()) | |
431 | + | else if (if ((bV != J)) | |
432 | + | then (bV != K) | |
411 | 433 | else false) | |
412 | - | then | |
434 | + | then bg() | |
413 | 435 | else { | |
414 | - | let bV = if ((bO == A)) | |
415 | - | then $Tuple6((bN - bK), bL, (H + bK), (I - bL), (H + bN), I) | |
416 | - | else $Tuple6(bL, (bN - bK), (H - bL), (I + bK), H, (I + bN)) | |
417 | - | let bW = bV._1 | |
418 | - | let bX = bV._2 | |
419 | - | let bY = bV._3 | |
420 | - | let bZ = bV._4 | |
421 | - | let ca = bV._5 | |
422 | - | let cb = bV._6 | |
423 | - | let ax = an(bY, bZ) | |
424 | - | let ay = fraction(P, aw, ax) | |
425 | - | let cc = (fraction((P * P), bY, bZ) / fraction(P, bW, bX)) | |
426 | - | let cd = fraction((ca + cb), T, (2 * U)) | |
427 | - | if (if ((bU >= ay)) | |
436 | + | let cc = if ((bV == J)) | |
437 | + | then $Tuple7((bU - bR), bS, (P + bR), (Q - bS), av((P + bU), Q), (P + bU), Q) | |
438 | + | else $Tuple7(bS, (bU - bR), (P - bS), (Q + bR), av(P, (Q + bU)), P, (Q + bU)) | |
439 | + | let cd = cc._1 | |
440 | + | let ce = cc._2 | |
441 | + | let cf = cc._3 | |
442 | + | let cg = cc._4 | |
443 | + | let bL = cc._5 | |
444 | + | let ch = cc._6 | |
445 | + | let ci = cc._7 | |
446 | + | let cj = if ((bV == J)) | |
447 | + | then IntegerEntry(f, ch) | |
448 | + | else IntegerEntry(g, ci) | |
449 | + | let aE = av(cf, cg) | |
450 | + | let aF = fraction(Y, T, aE) | |
451 | + | let ck = (fraction((Y * Y), cf, cg) / fraction(Y, cd, ce)) | |
452 | + | let cl = fraction((ch + ci), ac, (2 * ad)) | |
453 | + | if (if ((cb >= aF)) | |
428 | 454 | then true | |
429 | - | else ( | |
455 | + | else (T > aE)) | |
430 | 456 | then throw("Incorrect virtualSwapTokenPay or virtualSwapTokenGet value") | |
431 | - | else if (if (( | |
457 | + | else if (if ((bZ > ck)) | |
432 | 458 | then true | |
433 | - | else ( | |
459 | + | else (ck > ca)) | |
434 | 460 | then throw("Swap with virtualSwapTokenPay and virtualSwapTokenGet is possible, but ratio after virtual swap is incorrect") | |
435 | - | else if (if (( | |
461 | + | else if (if ((cl > ch)) | |
436 | 462 | then true | |
437 | - | else ( | |
438 | - | then | |
463 | + | else (cl > ci)) | |
464 | + | then bh(cl, ch, ci) | |
439 | 465 | else { | |
440 | - | let bH = fraction(aT(bW, A), P, bY) | |
441 | - | let bI = fraction(aT(bX, B), P, bZ) | |
442 | - | let bJ = fraction(min([bH, bI]), K, P) | |
443 | - | let ce = fraction(bJ, (N - (L / 2)), N) | |
444 | - | let cf = fraction(bJ, (M / 2), N) | |
445 | - | let cg = fraction(cf, H, K) | |
446 | - | let ch = fraction(cf, I, K) | |
447 | - | let bE = an((ca - cg), (cb - ch)) | |
448 | - | [Reissue(J, ce, true), ScriptTransfer(bj.caller, ce, J), ScriptTransfer(s, cg, A), ScriptTransfer(s, ch, B), IntegerEntry(f, aT((ca - cg), A)), IntegerEntry(g, aT((cb - ch), B)), IntegerEntry(i, (K + ce)), IntegerEntry(l, bE)] | |
466 | + | let bO = fraction(ba(cd, J), Y, cf) | |
467 | + | let bP = fraction(ba(ce, K), Y, cg) | |
468 | + | let bQ = fraction(min([bO, bP]), S, Y) | |
469 | + | [Reissue(R, bQ, true), ScriptTransfer(bq.caller, bQ, R), IntegerEntry(i, (S + bQ)), cj, IntegerEntry(l, bL)] | |
449 | 470 | } | |
450 | 471 | } | |
451 | 472 | } | |
452 | 473 | ||
453 | 474 | ||
454 | 475 | ||
455 | - | @Callable( | |
476 | + | @Callable(bq) | |
456 | 477 | func withdraw () = { | |
457 | - | let | |
458 | - | let | |
459 | - | let | |
460 | - | let | |
461 | - | let | |
462 | - | let | |
463 | - | if (!( | |
464 | - | then | |
465 | - | else if ((size( | |
478 | + | let cm = $Tuple2(bq.payments[0].amount, bq.payments[0].assetId) | |
479 | + | let bU = cm._1 | |
480 | + | let bV = cm._2 | |
481 | + | let cn = ba(fraction(bU, P, S), J) | |
482 | + | let co = ba(fraction(bU, Q, S), K) | |
483 | + | let bL = av((P - cn), (Q - co)) | |
484 | + | if (!(G)) | |
485 | + | then be() | |
486 | + | else if ((size(bq.payments) != 1)) | |
466 | 487 | then throw("One attached payment expected") | |
467 | - | else if (( | |
468 | - | then throw(("Incorrect asset attached. Expected: " + toBase58String( | |
469 | - | else if (!( | |
470 | - | then ([ScriptTransfer( | |
471 | - | else if (if (( | |
488 | + | else if ((bV != R)) | |
489 | + | then throw(("Incorrect asset attached. Expected: " + toBase58String(R))) | |
490 | + | else if (!(ar)) | |
491 | + | then ([ScriptTransfer(bq.caller, bU, bV)] ++ bp()) | |
492 | + | else if (if ((cn > an)) | |
472 | 493 | then true | |
473 | - | else ( | |
474 | - | then | |
475 | - | else [IntegerEntry(f, ( | |
494 | + | else (co > ao)) | |
495 | + | then bo(cn, co) | |
496 | + | else [IntegerEntry(f, (P - cn)), IntegerEntry(g, (Q - co)), IntegerEntry(i, (S - bU)), IntegerEntry(l, bL), Burn(R, bU), ScriptTransfer(bq.caller, cn, J), ScriptTransfer(bq.caller, co, K)] | |
476 | 497 | } | |
477 | 498 | ||
478 | 499 | ||
479 | 500 | ||
480 | - | @Callable( | |
481 | - | func exchange ( | |
482 | - | let | |
483 | - | let | |
484 | - | let | |
485 | - | if (!( | |
486 | - | then | |
487 | - | else if ((0 >= | |
488 | - | then throw(("Estimated amount must be positive. Actual: " + toString( | |
489 | - | else if (( | |
490 | - | then throw(((("Minimal amount can't be greater than estimated. Estimated: " + toString( | |
491 | - | else if ((size( | |
501 | + | @Callable(bq) | |
502 | + | func exchange (cp,cq) = { | |
503 | + | let cr = $Tuple2(bq.payments[0].amount, bq.payments[0].assetId) | |
504 | + | let bU = cr._1 | |
505 | + | let bV = cr._2 | |
506 | + | if (!(G)) | |
507 | + | then be() | |
508 | + | else if ((0 >= cp)) | |
509 | + | then throw(("Estimated amount must be positive. Actual: " + toString(cp))) | |
510 | + | else if ((cq > cp)) | |
511 | + | then throw(((("Minimal amount can't be greater than estimated. Estimated: " + toString(cp)) + ". Minimal: ") + toString(cq))) | |
512 | + | else if ((size(bq.payments) != 1)) | |
492 | 513 | then throw("One attached payment expected") | |
493 | - | else if (!( | |
494 | - | then ([ScriptTransfer( | |
495 | - | else if (if (( | |
496 | - | then ( | |
514 | + | else if (!(ar)) | |
515 | + | then ([ScriptTransfer(bq.caller, bU, bV)] ++ bp()) | |
516 | + | else if (if ((bV != J)) | |
517 | + | then (bV != K) | |
497 | 518 | else false) | |
498 | - | then | |
499 | - | else if ((10000000 > | |
519 | + | then bg() | |
520 | + | else if ((10000000 > bU)) | |
500 | 521 | then throw("Only swap of 10.000000 or more tokens is allowed") | |
501 | - | else if (if (( | |
522 | + | else if (if ((ae > fraction(Y, cq, bU))) | |
502 | 523 | then true | |
503 | - | else (fraction( | |
524 | + | else (fraction(Y, cp, bU) > af)) | |
504 | 525 | then throw("Incorrect args and pmt ratio") | |
505 | 526 | else { | |
506 | - | let | |
507 | - | then | |
508 | - | else | |
509 | - | let | |
510 | - | let | |
511 | - | let | |
512 | - | let | |
513 | - | then $Tuple2(( | |
514 | - | else $Tuple2((( | |
515 | - | let | |
516 | - | let | |
517 | - | let | |
518 | - | if (if (( | |
527 | + | let cs = if ((bV == J)) | |
528 | + | then K | |
529 | + | else J | |
530 | + | let bb = ax(cp, cq, bU, bV) | |
531 | + | let ct = fraction(bb, V, W) | |
532 | + | let cu = fraction(bb, (W - U), W) | |
533 | + | let cv = if ((bV == J)) | |
534 | + | then $Tuple2((P + bU), ((Q - cu) - ct)) | |
535 | + | else $Tuple2(((P - cu) - ct), (Q + bU)) | |
536 | + | let ch = cv._1 | |
537 | + | let ci = cv._2 | |
538 | + | let cl = fraction((ch + ci), ac, (2 * ad)) | |
539 | + | if (if ((cl > ch)) | |
519 | 540 | then true | |
520 | - | else ( | |
521 | - | then | |
522 | - | else if (if (if (( | |
523 | - | then ( | |
541 | + | else (cl > ci)) | |
542 | + | then bh(cl, ch, ci) | |
543 | + | else if (if (if ((J == E)) | |
544 | + | then (cs == J) | |
524 | 545 | else false) | |
525 | - | then ( | |
546 | + | then (al >= ch) | |
526 | 547 | else false) | |
527 | - | then | |
528 | - | else if (if (if (( | |
529 | - | then ( | |
548 | + | then bl(cu, an, L) | |
549 | + | else if (if (if ((K == E)) | |
550 | + | then (cs == K) | |
530 | 551 | else false) | |
531 | - | then ( | |
552 | + | then (al >= ci) | |
532 | 553 | else false) | |
533 | - | then | |
534 | - | else [IntegerEntry(f, | |
554 | + | then bl(cu, ao, O) | |
555 | + | else [IntegerEntry(f, ch), IntegerEntry(g, ci), IntegerEntry(l, av(ch, ci)), ScriptTransfer(bq.caller, cu, cs), ScriptTransfer(C, ct, cs)] | |
535 | 556 | } | |
536 | 557 | } | |
537 | 558 | ||
538 | 559 | ||
539 | 560 | ||
540 | - | @Callable( | |
541 | - | func shutdown () = if (!( | |
561 | + | @Callable(bq) | |
562 | + | func shutdown () = if (!(G)) | |
542 | 563 | then throw(("DApp is already suspended. Cause: " + valueOrElse(getString(this, m), "the cause wasn't specified"))) | |
543 | - | else if (!(containsElement([ | |
544 | - | then | |
545 | - | else | |
564 | + | else if (!(containsElement([x, y, z, A], bq.callerPublicKey))) | |
565 | + | then bf() | |
566 | + | else aY("Paused by admin") | |
546 | 567 | ||
547 | 568 | ||
548 | 569 | ||
549 | - | @Callable( | |
550 | - | func activate () = if ( | |
551 | - | then | |
552 | - | else if (!(containsElement([ | |
553 | - | then | |
570 | + | @Callable(bq) | |
571 | + | func activate () = if (G) | |
572 | + | then bd() | |
573 | + | else if (!(containsElement([x, y, z, A], bq.callerPublicKey))) | |
574 | + | then bf() | |
554 | 575 | else [BooleanEntry(c, true), DeleteEntry(m)] | |
555 | 576 | ||
556 | 577 | ||
557 | 578 | ||
558 | - | @Callable( | |
559 | - | func takeIntoAccountExtraFunds ( | |
560 | - | let | |
561 | - | let | |
562 | - | let | |
563 | - | then | |
579 | + | @Callable(bq) | |
580 | + | func takeIntoAccountExtraFunds (cw) = { | |
581 | + | let cx = (ap - P) | |
582 | + | let cy = (aq - Q) | |
583 | + | let cz = (cx - (if ((J == unit)) | |
584 | + | then cw | |
564 | 585 | else 0)) | |
565 | - | let | |
566 | - | then | |
586 | + | let cA = (cy - (if ((K == unit)) | |
587 | + | then cw | |
567 | 588 | else 0)) | |
568 | - | let | |
569 | - | if (!( | |
570 | - | then | |
571 | - | else if (( | |
572 | - | then | |
573 | - | else if ((0 > | |
574 | - | then throw(("Argument 'amountLeave' cannot be negative. Actual: " + toString( | |
575 | - | else if (if ((0 > | |
589 | + | let aE = av((P + cz), (Q + cA)) | |
590 | + | if (!(G)) | |
591 | + | then be() | |
592 | + | else if ((bq.caller != this)) | |
593 | + | then bf() | |
594 | + | else if ((0 > cw)) | |
595 | + | then throw(("Argument 'amountLeave' cannot be negative. Actual: " + toString(cw))) | |
596 | + | else if (if ((0 > cx)) | |
576 | 597 | then true | |
577 | - | else (0 > | |
578 | - | then | |
579 | - | else if (if ((0 > | |
598 | + | else (0 > cy)) | |
599 | + | then aY("Enroll amount negative") | |
600 | + | else if (if ((0 > cz)) | |
580 | 601 | then true | |
581 | - | else (0 > | |
602 | + | else (0 > cA)) | |
582 | 603 | then throw("Too large amountLeave") | |
583 | - | else [IntegerEntry(l, | |
604 | + | else [IntegerEntry(l, aE), IntegerEntry(f, (P + cz)), IntegerEntry(g, (Q + cA)), IntegerEntry(("last_income_" + H), cz), IntegerEntry(("last_income_" + I), cA)] | |
584 | 605 | } | |
585 | 606 | ||
586 | 607 | ||
587 | - | @Verifier( | |
588 | - | func | |
589 | - | let | |
590 | - | if ($isInstanceOf( | |
608 | + | @Verifier(cB) | |
609 | + | func cC () = { | |
610 | + | let u = cB | |
611 | + | if ($isInstanceOf(u, "InvokeScriptTransaction")) | |
591 | 612 | then { | |
592 | - | let | |
593 | - | let | |
594 | - | then ( | |
613 | + | let cD = u | |
614 | + | let cE = if ((cD.dApp == this)) | |
615 | + | then (cD.function == "takeIntoAccountExtraFunds") | |
595 | 616 | else false | |
596 | - | let | |
597 | - | then if (if (if (( | |
598 | - | then (size( | |
617 | + | let cF = if ((cD.dApp == D)) | |
618 | + | then if (if (if ((cD.function == "lockNeutrino")) | |
619 | + | then (size(cD.payments) == 1) | |
599 | 620 | else false) | |
600 | - | then ( | |
621 | + | then (cD.payments[0].assetId == E) | |
601 | 622 | else false) | |
602 | 623 | then true | |
603 | - | else if (( | |
604 | - | then (size( | |
624 | + | else if ((cD.function == "unlockNeutrino")) | |
625 | + | then (size(cD.payments) == 0) | |
605 | 626 | else false | |
606 | 627 | else false | |
607 | - | let | |
608 | - | then ( | |
628 | + | let cG = if (if (if ((cD.dApp == q)) | |
629 | + | then (cD.function == "exchange") | |
609 | 630 | else false) | |
610 | - | then ( | |
631 | + | then (J == E) | |
611 | 632 | else false) | |
612 | 633 | then true | |
613 | - | else if ((B == v)) | |
614 | - | then (cz.payments[0].assetId == v) | |
634 | + | else if (if ((K == E)) | |
635 | + | then (size(cD.payments) == 1) | |
636 | + | else false) | |
637 | + | then (cD.payments[0].assetId == E) | |
615 | 638 | else false | |
616 | - | let | |
639 | + | let cH = if (if (if (sigVerify(cB.bodyBytes, cB.proofs[0], x)) | |
617 | 640 | then true | |
618 | - | else sigVerify( | |
641 | + | else sigVerify(cB.bodyBytes, cB.proofs[0], y)) | |
619 | 642 | then true | |
620 | - | else sigVerify( | |
643 | + | else sigVerify(cB.bodyBytes, cB.proofs[0], z)) | |
621 | 644 | then true | |
622 | - | else sigVerify( | |
623 | - | if (if (if ( | |
645 | + | else sigVerify(cB.bodyBytes, cB.proofs[0], B) | |
646 | + | if (if (if (cE) | |
624 | 647 | then true | |
625 | - | else | |
648 | + | else cF) | |
626 | 649 | then true | |
627 | - | else | |
628 | - | then | |
650 | + | else cG) | |
651 | + | then cH | |
629 | 652 | else false | |
630 | 653 | } | |
631 | 654 | else { | |
632 | - | let | |
655 | + | let cI = if (sigVerify(cB.bodyBytes, cB.proofs[0], x)) | |
633 | 656 | then 1 | |
634 | 657 | else 0 | |
635 | - | let | |
658 | + | let cJ = if (sigVerify(cB.bodyBytes, cB.proofs[1], y)) | |
636 | 659 | then 1 | |
637 | 660 | else 0 | |
638 | - | let | |
661 | + | let cK = if (sigVerify(cB.bodyBytes, cB.proofs[2], z)) | |
639 | 662 | then 1 | |
640 | 663 | else 0 | |
641 | - | ((( | |
664 | + | (((cI + cJ) + cK) >= 2) | |
642 | 665 | } | |
643 | 666 | } | |
644 | 667 |
Old | New | Differences | |
---|---|---|---|
1 | - | {-# STDLIB_VERSION | |
1 | + | {-# STDLIB_VERSION 5 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | let a = "2.0.0" | |
5 | 5 | ||
6 | 6 | let b = "version" | |
7 | 7 | ||
8 | 8 | let c = "active" | |
9 | 9 | ||
10 | 10 | let d = "A_asset_id" | |
11 | 11 | ||
12 | 12 | let e = "B_asset_id" | |
13 | 13 | ||
14 | 14 | let f = "A_asset_balance" | |
15 | 15 | ||
16 | 16 | let g = "B_asset_balance" | |
17 | 17 | ||
18 | 18 | let h = "share_asset_id" | |
19 | 19 | ||
20 | 20 | let i = "share_asset_supply" | |
21 | 21 | ||
22 | 22 | let j = "commission" | |
23 | 23 | ||
24 | 24 | let k = "commission_scale_delimiter" | |
25 | 25 | ||
26 | 26 | let l = "invariant" | |
27 | 27 | ||
28 | 28 | let m = "shutdown_cause" | |
29 | 29 | ||
30 | - | let n = | |
30 | + | let n = "admin_pub_1" | |
31 | 31 | ||
32 | - | let o = | |
32 | + | let o = "admin_pub_2" | |
33 | 33 | ||
34 | - | let p = | |
34 | + | let p = "admin_pub_3" | |
35 | 35 | ||
36 | - | let q = base58' | |
36 | + | let q = Address(base58'3PHaNgomBkrvEL2QnuJarQVJa71wjw9qiqG') | |
37 | 37 | ||
38 | - | let r = base58' | |
38 | + | let r = Address(base58'3PEbqViERCoKnmcSULh6n2aiMvUdSQdCsom') | |
39 | 39 | ||
40 | - | let s = Address(base58'3P6J84oH51DzY6xk2mT5TheXRbrCwBMxonp') | |
40 | + | func s (t) = { | |
41 | + | let u = getString(r, t) | |
42 | + | if ($isInstanceOf(u, "String")) | |
43 | + | then { | |
44 | + | let v = u | |
45 | + | fromBase58String(v) | |
46 | + | } | |
47 | + | else { | |
48 | + | let w = u | |
49 | + | throw("Admin public key is empty") | |
50 | + | } | |
51 | + | } | |
41 | 52 | ||
42 | - | let t = Address(base58'3PNikM6yp4NqcSU8guxQtmR5onr2D4e8yTJ') | |
43 | 53 | ||
44 | - | let | |
54 | + | let x = s(n) | |
45 | 55 | ||
46 | - | let | |
56 | + | let y = s(o) | |
47 | 57 | ||
48 | - | let | |
58 | + | let z = s(p) | |
49 | 59 | ||
50 | - | let | |
60 | + | let A = base58'EtVkT6ed8GtbUiVVEqdmEqsp2J4qbb3rre2HFgxeVYdg' | |
51 | 61 | ||
52 | - | let | |
62 | + | let B = base58'Czn4yoAuUZCVCLJDRfskn8URfkwpknwBTZDbs1wFrY7h' | |
53 | 63 | ||
54 | - | let | |
64 | + | let C = Address(base58'3P6J84oH51DzY6xk2mT5TheXRbrCwBMxonp') | |
55 | 65 | ||
56 | - | let A = if ((y == "WAVES")) | |
66 | + | let D = Address(base58'3PNikM6yp4NqcSU8guxQtmR5onr2D4e8yTJ') | |
67 | + | ||
68 | + | let E = base58'DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p' | |
69 | + | ||
70 | + | let F = 270000 | |
71 | + | ||
72 | + | let G = getBooleanValue(this, c) | |
73 | + | ||
74 | + | let H = getStringValue(this, d) | |
75 | + | ||
76 | + | let I = getStringValue(this, e) | |
77 | + | ||
78 | + | let J = if ((H == "WAVES")) | |
57 | 79 | then unit | |
58 | - | else fromBase58String( | |
80 | + | else fromBase58String(H) | |
59 | 81 | ||
60 | - | let | |
82 | + | let K = if ((I == "WAVES")) | |
61 | 83 | then unit | |
62 | - | else fromBase58String( | |
84 | + | else fromBase58String(I) | |
63 | 85 | ||
64 | - | let | |
65 | - | let | |
66 | - | if ($isInstanceOf( | |
86 | + | let L = { | |
87 | + | let u = J | |
88 | + | if ($isInstanceOf(u, "ByteVector")) | |
67 | 89 | then { | |
68 | - | let | |
69 | - | value(assetInfo( | |
90 | + | let M = u | |
91 | + | value(assetInfo(M)).name | |
70 | 92 | } | |
71 | - | else if ($isInstanceOf( | |
93 | + | else if ($isInstanceOf(u, "Unit")) | |
72 | 94 | then { | |
73 | - | let | |
95 | + | let N = u | |
74 | 96 | "WAVES" | |
75 | 97 | } | |
76 | 98 | else throw("Match error") | |
77 | 99 | } | |
78 | 100 | ||
79 | - | let | |
80 | - | let | |
81 | - | if ($isInstanceOf( | |
101 | + | let O = { | |
102 | + | let u = K | |
103 | + | if ($isInstanceOf(u, "ByteVector")) | |
82 | 104 | then { | |
83 | - | let | |
84 | - | value(assetInfo( | |
105 | + | let M = u | |
106 | + | value(assetInfo(M)).name | |
85 | 107 | } | |
86 | - | else if ($isInstanceOf( | |
108 | + | else if ($isInstanceOf(u, "Unit")) | |
87 | 109 | then { | |
88 | - | let | |
110 | + | let N = u | |
89 | 111 | "WAVES" | |
90 | 112 | } | |
91 | 113 | else throw("Match error") | |
92 | 114 | } | |
93 | 115 | ||
94 | - | let | |
116 | + | let P = getIntegerValue(this, f) | |
95 | 117 | ||
96 | - | let | |
118 | + | let Q = getIntegerValue(this, g) | |
97 | 119 | ||
98 | - | let | |
120 | + | let R = fromBase58String(getStringValue(this, h)) | |
99 | 121 | ||
100 | - | let | |
122 | + | let S = getIntegerValue(this, i) | |
101 | 123 | ||
102 | - | let | |
124 | + | let T = getIntegerValue(this, l) | |
103 | 125 | ||
104 | - | let | |
126 | + | let U = 500 | |
105 | 127 | ||
106 | - | let | |
128 | + | let V = 200 | |
107 | 129 | ||
108 | - | let | |
130 | + | let W = 1000000 | |
109 | 131 | ||
110 | - | let | |
132 | + | let X = 1000 | |
111 | 133 | ||
112 | - | let | |
134 | + | let Y = 100000000 | |
113 | 135 | ||
114 | - | let | |
136 | + | let Z = 1000000000000 | |
115 | 137 | ||
116 | - | let | |
138 | + | let aa = 1000 | |
117 | 139 | ||
118 | - | let | |
140 | + | let ab = 8 | |
119 | 141 | ||
120 | - | let | |
142 | + | let ac = 50 | |
121 | 143 | ||
122 | - | let | |
144 | + | let ad = 100 | |
123 | 145 | ||
124 | - | let | |
146 | + | let ae = 90000000 | |
125 | 147 | ||
126 | - | let | |
148 | + | let af = 110000000 | |
127 | 149 | ||
128 | - | let | |
150 | + | let ag = 50 | |
129 | 151 | ||
130 | - | let | |
152 | + | let ah = 2 | |
131 | 153 | ||
132 | - | func aa (ab) = { | |
133 | - | let D = ab | |
134 | - | if ($isInstanceOf(D, "ByteVector")) | |
154 | + | let ai = 46000000 | |
155 | + | ||
156 | + | func aj (ak) = { | |
157 | + | let u = ak | |
158 | + | if ($isInstanceOf(u, "ByteVector")) | |
135 | 159 | then { | |
136 | - | let | |
137 | - | assetBalance(this, | |
160 | + | let M = u | |
161 | + | assetBalance(this, M) | |
138 | 162 | } | |
139 | - | else if ($isInstanceOf( | |
163 | + | else if ($isInstanceOf(u, "Unit")) | |
140 | 164 | then { | |
141 | - | let | |
165 | + | let N = u | |
142 | 166 | wavesBalance(this).available | |
143 | 167 | } | |
144 | 168 | else throw("Match error") | |
145 | 169 | } | |
146 | 170 | ||
147 | 171 | ||
148 | - | let | |
149 | - | let | |
150 | - | if ($isInstanceOf( | |
172 | + | let al = { | |
173 | + | let u = getInteger(D, ((("rpd_balance_" + toBase58String(E)) + "_") + toString(this))) | |
174 | + | if ($isInstanceOf(u, "Int")) | |
151 | 175 | then { | |
152 | - | let | |
153 | - | | |
176 | + | let am = u | |
177 | + | am | |
154 | 178 | } | |
155 | - | else if ($isInstanceOf( | |
179 | + | else if ($isInstanceOf(u, "Unit")) | |
156 | 180 | then { | |
157 | - | let | |
181 | + | let w = u | |
158 | 182 | 0 | |
159 | 183 | } | |
160 | 184 | else throw("Match error") | |
161 | 185 | } | |
162 | 186 | ||
163 | - | let | |
164 | - | then | |
187 | + | let an = (P - (if ((J == E)) | |
188 | + | then al | |
165 | 189 | else 0)) | |
166 | 190 | ||
167 | - | let | |
168 | - | then | |
191 | + | let ao = (Q - (if ((K == E)) | |
192 | + | then al | |
169 | 193 | else 0)) | |
170 | 194 | ||
171 | - | let | |
172 | - | then | |
195 | + | let ap = (aj(J) + (if ((J == E)) | |
196 | + | then al | |
173 | 197 | else 0)) | |
174 | 198 | ||
175 | - | let | |
176 | - | then | |
199 | + | let aq = (aj(K) + (if ((K == E)) | |
200 | + | then al | |
177 | 201 | else 0)) | |
178 | 202 | ||
179 | - | let | |
180 | - | then ( | |
203 | + | let ar = if ((ap >= P)) | |
204 | + | then (aq >= Q) | |
181 | 205 | else false | |
182 | 206 | ||
183 | - | func | |
207 | + | func as (at,au) = (((fraction(Z, at, au) + fraction(Z, au, at)) / 2) / 10000) | |
184 | 208 | ||
185 | 209 | ||
186 | - | func | |
187 | - | let | |
188 | - | (fraction(( | |
210 | + | func av (at,au) = { | |
211 | + | let aw = as(at, au) | |
212 | + | (fraction((at + au), Y, pow(aw, ab, ag, ah, ab, CEILING)) + (2 * fraction(pow(fraction(at, au, Y), 0, 5, 1, (ab / 2), DOWN), pow((aw - ai), ab, ag, ah, ab, DOWN), Y))) | |
189 | 213 | } | |
190 | 214 | ||
191 | 215 | ||
192 | - | func ap (aq,ar,as,at) = { | |
193 | - | let au = (P - ((P * 1) / 10000000)) | |
194 | - | let av = (aq - ar) | |
195 | - | let aw = an(H, I) | |
196 | - | let al = (H + as) | |
197 | - | let am = (I + as) | |
198 | - | let ax = if ((at == A)) | |
199 | - | then an(al, (I - aq)) | |
200 | - | else if ((at == B)) | |
201 | - | then an((H - aq), am) | |
216 | + | func ax (ay,az,aA,aB) = { | |
217 | + | let aC = (Y - ((Y * 1) / 10000000)) | |
218 | + | let aD = (ay - az) | |
219 | + | let at = (P + aA) | |
220 | + | let au = (Q + aA) | |
221 | + | let aE = if ((aB == J)) | |
222 | + | then av(at, (Q - ay)) | |
223 | + | else if ((aB == K)) | |
224 | + | then av((P - ay), au) | |
202 | 225 | else throw("Wrong asset in payment") | |
203 | - | let | |
204 | - | func | |
226 | + | let aF = fraction(Y, T, aE) | |
227 | + | func aG (aH,aI) = if ((aH == -1)) | |
205 | 228 | then { | |
206 | - | let | |
207 | - | let | |
208 | - | then | |
209 | - | else | |
210 | - | if (( | |
211 | - | then | |
229 | + | let aJ = (ay - ((aI * aD) / 5)) | |
230 | + | let aK = if ((aB == J)) | |
231 | + | then av(at, (Q - aJ)) | |
232 | + | else av((P - aJ), au) | |
233 | + | if ((aK > T)) | |
234 | + | then aJ | |
212 | 235 | else -1 | |
213 | 236 | } | |
214 | - | else | |
237 | + | else aH | |
215 | 238 | ||
216 | - | let | |
217 | - | let | |
218 | - | let | |
219 | - | let | |
220 | - | if (( | |
221 | - | then | |
239 | + | let aL = { | |
240 | + | let aM = [1, 2, 3, 4, 5] | |
241 | + | let aN = size(aM) | |
242 | + | let aO = -1 | |
243 | + | if ((aN == 0)) | |
244 | + | then aO | |
222 | 245 | else { | |
223 | - | let | |
224 | - | if (( | |
225 | - | then | |
246 | + | let aP = aG(aO, aM[0]) | |
247 | + | if ((aN == 1)) | |
248 | + | then aP | |
226 | 249 | else { | |
227 | - | let | |
228 | - | if (( | |
229 | - | then | |
250 | + | let aQ = aG(aP, aM[1]) | |
251 | + | if ((aN == 2)) | |
252 | + | then aQ | |
230 | 253 | else { | |
231 | - | let | |
232 | - | if (( | |
233 | - | then | |
254 | + | let aR = aG(aQ, aM[2]) | |
255 | + | if ((aN == 3)) | |
256 | + | then aR | |
234 | 257 | else { | |
235 | - | let | |
236 | - | if (( | |
237 | - | then | |
258 | + | let aS = aG(aR, aM[3]) | |
259 | + | if ((aN == 4)) | |
260 | + | then aS | |
238 | 261 | else { | |
239 | - | let | |
240 | - | if (( | |
241 | - | then | |
262 | + | let aT = aG(aS, aM[4]) | |
263 | + | if ((aN == 5)) | |
264 | + | then aT | |
242 | 265 | else { | |
243 | - | let | |
266 | + | let aU = aG(aT, aM[5]) | |
244 | 267 | throw("List size exceed 5") | |
245 | 268 | } | |
246 | 269 | } | |
247 | 270 | } | |
248 | 271 | } | |
249 | 272 | } | |
250 | 273 | } | |
251 | 274 | } | |
252 | - | if ((0 > | |
275 | + | if ((0 > aL)) | |
253 | 276 | then throw("something went wrong while working with amountToSend") | |
254 | - | else if (if (( | |
255 | - | then ( | |
277 | + | else if (if ((aF > aC)) | |
278 | + | then (aE > T) | |
256 | 279 | else false) | |
257 | - | then | |
258 | - | else | |
280 | + | then ay | |
281 | + | else aL | |
259 | 282 | } | |
260 | 283 | ||
261 | 284 | ||
262 | - | func | |
263 | - | let | |
264 | - | if ($isInstanceOf( | |
285 | + | func aV (ak) = { | |
286 | + | let u = ak | |
287 | + | if ($isInstanceOf(u, "ByteVector")) | |
265 | 288 | then { | |
266 | - | let | |
267 | - | let | |
268 | - | let | |
269 | - | $Tuple3( | |
289 | + | let M = u | |
290 | + | let aW = toBase58String(M) | |
291 | + | let aX = valueOrErrorMessage(assetInfo(M), (("Asset " + aW) + " doesn't exist")) | |
292 | + | $Tuple3(aW, aX.name, aX.decimals) | |
270 | 293 | } | |
271 | - | else if ($isInstanceOf( | |
294 | + | else if ($isInstanceOf(u, "Unit")) | |
272 | 295 | then { | |
273 | - | let | |
296 | + | let N = u | |
274 | 297 | $Tuple3("WAVES", "WAVES", 8) | |
275 | 298 | } | |
276 | 299 | else throw("Match error") | |
277 | 300 | } | |
278 | 301 | ||
279 | 302 | ||
280 | - | func | |
303 | + | func aY (aZ) = [BooleanEntry(c, false), StringEntry(m, aZ)] | |
281 | 304 | ||
282 | 305 | ||
283 | - | func | |
306 | + | func ba (bb,ak) = if ((ak == E)) | |
284 | 307 | then { | |
285 | - | let | |
286 | - | if ((0 >= | |
287 | - | then throw((((("Insufficient amount " + toString( | |
288 | - | else | |
308 | + | let bc = (bb - F) | |
309 | + | if ((0 >= bc)) | |
310 | + | then throw((((("Insufficient amount " + toString(bb)) + " to deduct staking fee ") + toString(F)) + " USD-N")) | |
311 | + | else bc | |
289 | 312 | } | |
290 | - | else | |
313 | + | else bb | |
291 | 314 | ||
292 | 315 | ||
293 | - | func | |
316 | + | func bd () = throw("DApp is already active") | |
294 | 317 | ||
295 | 318 | ||
296 | - | func | |
319 | + | func be () = throw("DApp is inactive at this moment") | |
297 | 320 | ||
298 | 321 | ||
299 | - | func | |
322 | + | func bf () = throw("Only admin can call this function") | |
300 | 323 | ||
301 | 324 | ||
302 | - | func | |
325 | + | func bg () = throw(((("Incorrect assets attached. Expected: " + H) + " and ") + I)) | |
303 | 326 | ||
304 | 327 | ||
305 | - | func | |
328 | + | func bh (bi,bj,bk) = throw(((((((((("New balance in assets of the DApp is less than threshold " + toString(bi)) + ": ") + toString(bj)) + " ") + L) + ", ") + toString(bk)) + " ") + O)) | |
306 | 329 | ||
307 | 330 | ||
308 | - | func | |
331 | + | func bl (bb,bm,bn) = throw((((((((("Insufficient DApp balance to pay " + toString(bb)) + " ") + bn) + " due to staking. Available: ") + toString(bm)) + " ") + bn) + ". Please contact support in Telegram: https://t.me/swopfisupport")) | |
309 | 332 | ||
310 | 333 | ||
311 | - | func | |
334 | + | func bo (bj,bk) = throw((((((((((((((((("Insufficient DApp balance to pay " + toString(bj)) + " ") + L) + " and ") + toString(bk)) + " ") + O) + " due to staking. Available: ") + toString(an)) + " ") + L) + " and ") + toString(ao)) + " ") + O) + ". Please contact support in Telegram: https://t.me/swopfisupport")) | |
312 | 335 | ||
313 | 336 | ||
314 | - | func | |
337 | + | func bp () = aY(((((((((((((((("Suspicious state. Actual balances: " + toString(P)) + " ") + L) + ", ") + toString(Q)) + " ") + O) + ". State: ") + toString(aj(J))) + " ") + L) + ", ") + toString(aj(K))) + " ") + O)) | |
315 | 338 | ||
316 | 339 | ||
317 | - | @Callable( | |
340 | + | @Callable(bq) | |
318 | 341 | func init () = { | |
319 | - | let bk = $Tuple2(bj.payments[0].amount, bj.payments[0].assetId) | |
320 | - | let bl = bk._1 | |
321 | - | let bm = bk._2 | |
322 | - | let bn = $Tuple2(bj.payments[1].amount, bj.payments[1].assetId) | |
323 | - | let bo = bn._1 | |
324 | - | let bp = bn._2 | |
325 | - | let bq = aO(bm) | |
326 | - | let br = bq._1 | |
327 | - | let bs = bq._2 | |
328 | - | let bt = bq._3 | |
329 | - | let bu = aO(bp) | |
342 | + | let br = $Tuple2(bq.payments[0].amount, bq.payments[0].assetId) | |
343 | + | let bs = br._1 | |
344 | + | let bt = br._2 | |
345 | + | let bu = $Tuple2(bq.payments[1].amount, bq.payments[1].assetId) | |
330 | 346 | let bv = bu._1 | |
331 | 347 | let bw = bu._2 | |
332 | - | let bx = bu._3 | |
348 | + | let bx = aV(bt) | |
349 | + | let by = bx._1 | |
350 | + | let bz = bx._2 | |
351 | + | let bA = bx._3 | |
352 | + | let bB = aV(bw) | |
353 | + | let bC = bB._1 | |
354 | + | let bD = bB._2 | |
355 | + | let bE = bB._3 | |
333 | 356 | if (isDefined(getBoolean(this, c))) | |
334 | - | then | |
335 | - | else if (( | |
357 | + | then bd() | |
358 | + | else if ((bt == bw)) | |
336 | 359 | then throw("Assets must be different") | |
337 | 360 | else { | |
338 | - | let | |
339 | - | let | |
340 | - | let | |
341 | - | let | |
342 | - | let | |
343 | - | let | |
344 | - | let | |
345 | - | [StringEntry(b, a), BooleanEntry(c, true), StringEntry(d, | |
361 | + | let bF = ((("s" + take(bz, 7)) + "_") + take(bD, 7)) | |
362 | + | let bG = ((((("ShareToken of SwopFi protocol for " + bz) + " and ") + bD) + " at address ") + toString(this)) | |
363 | + | let bH = ((bA + bE) / 2) | |
364 | + | let bI = fraction(pow(bs, bA, 5, 1, bA, DOWN), pow(bv, bE, 5, 1, bE, DOWN), pow(10, 0, bH, 0, 0, DOWN)) | |
365 | + | let bJ = Issue(bF, bG, bI, bH, true) | |
366 | + | let bK = calculateAssetId(bJ) | |
367 | + | let bL = av(bs, bv) | |
368 | + | [StringEntry(b, a), BooleanEntry(c, true), StringEntry(d, by), StringEntry(e, bC), IntegerEntry(f, bs), IntegerEntry(g, bv), IntegerEntry(l, bL), IntegerEntry(j, U), IntegerEntry(k, W), bJ, StringEntry(h, toBase58String(bK)), IntegerEntry(i, bI), ScriptTransfer(bq.caller, bI, bK)] | |
346 | 369 | } | |
347 | 370 | } | |
348 | 371 | ||
349 | 372 | ||
350 | 373 | ||
351 | - | @Callable( | |
352 | - | func replenishWithTwoTokens ( | |
353 | - | let | |
354 | - | let | |
355 | - | let | |
356 | - | let | |
357 | - | let | |
358 | - | let | |
359 | - | let | |
360 | - | let | |
361 | - | let | |
362 | - | if (!( | |
363 | - | then | |
364 | - | else if (if ((0 > | |
374 | + | @Callable(bq) | |
375 | + | func replenishWithTwoTokens (bM) = { | |
376 | + | let bt = bq.payments[0].assetId | |
377 | + | let bw = bq.payments[1].assetId | |
378 | + | let bs = ba(bq.payments[0].amount, bt) | |
379 | + | let bv = ba(bq.payments[1].amount, bw) | |
380 | + | let bN = fraction(fraction(Y, P, bs), X, fraction(Y, Q, bv)) | |
381 | + | let bO = fraction(Y, bs, P) | |
382 | + | let bP = fraction(Y, bv, Q) | |
383 | + | let bQ = fraction(min([bO, bP]), S, Y) | |
384 | + | let bL = av((P + bs), (Q + bv)) | |
385 | + | if (!(G)) | |
386 | + | then be() | |
387 | + | else if (if ((0 > bM)) | |
365 | 388 | then true | |
366 | - | else ( | |
389 | + | else (bM > 10)) | |
367 | 390 | then throw("Slippage tolerance must be <= 1%") | |
368 | - | else if ((size( | |
391 | + | else if ((size(bq.payments) != 2)) | |
369 | 392 | then throw("Two attached assets expected") | |
370 | - | else if (if (( | |
393 | + | else if (if ((bt != J)) | |
371 | 394 | then true | |
372 | - | else ( | |
373 | - | then | |
374 | - | else if (if (((( | |
395 | + | else (bw != K)) | |
396 | + | then bg() | |
397 | + | else if (if ((((X * (aa - bM)) / aa) > bN)) | |
375 | 398 | then true | |
376 | - | else ( | |
399 | + | else (bN > ((X * (aa + bM)) / aa))) | |
377 | 400 | then throw("Incorrect assets amount: amounts must have the contract ratio") | |
378 | - | else if (( | |
401 | + | else if ((bQ == 0)) | |
379 | 402 | then throw("Too small amount to replenish") | |
380 | - | else if (!( | |
381 | - | then ([ScriptTransfer( | |
382 | - | else [IntegerEntry(f, ( | |
403 | + | else if (!(ar)) | |
404 | + | then ([ScriptTransfer(bq.caller, bs, bt), ScriptTransfer(bq.caller, bv, bw)] ++ bp()) | |
405 | + | else [IntegerEntry(f, (P + bs)), IntegerEntry(g, (Q + bv)), IntegerEntry(i, (S + bQ)), IntegerEntry(l, bL), Reissue(R, bQ, true), ScriptTransfer(bq.caller, bQ, R)] | |
383 | 406 | } | |
384 | 407 | ||
385 | 408 | ||
386 | 409 | ||
387 | - | @Callable(bj) | |
388 | - | func replenishWithOneToken (bK,bL) = { | |
389 | - | let bM = $Tuple2(bj.payments[0].amount, bj.payments[0].assetId) | |
390 | - | let bN = bM._1 | |
391 | - | let bO = bM._2 | |
392 | - | let aw = an(H, I) | |
393 | - | let bP = 5000000 | |
394 | - | let bQ = 50000000 | |
395 | - | let bR = if ((bQ > bN)) | |
410 | + | @Callable(bq) | |
411 | + | func replenishWithOneToken (bR,bS) = { | |
412 | + | let bT = $Tuple2(bq.payments[0].amount, bq.payments[0].assetId) | |
413 | + | let bU = bT._1 | |
414 | + | let bV = bT._2 | |
415 | + | let bW = 5000000 | |
416 | + | let bX = 50000000 | |
417 | + | let bY = if ((bX > bU)) | |
396 | 418 | then 100000 | |
397 | 419 | else 1 | |
398 | - | let | |
399 | - | let | |
400 | - | let | |
401 | - | if (!( | |
402 | - | then | |
403 | - | else if (( | |
404 | - | then throw((((("Payment amount " + toString( | |
405 | - | else if ((size( | |
420 | + | let bZ = (Y - ((Y * bY) / 10000000)) | |
421 | + | let ca = (Y + ((Y * bY) / 10000000)) | |
422 | + | let cb = (Y - ((Y * 1) / 10000000)) | |
423 | + | if (!(G)) | |
424 | + | then be() | |
425 | + | else if ((bW > bU)) | |
426 | + | then throw((((("Payment amount " + toString(bU)) + " does not exceed the minimum amount of ") + toString(bW)) + " tokens")) | |
427 | + | else if ((size(bq.payments) != 1)) | |
406 | 428 | then throw("One attached payment expected") | |
407 | - | else if (!( | |
408 | - | then ([ScriptTransfer( | |
409 | - | else if (if (( | |
410 | - | then ( | |
429 | + | else if (!(ar)) | |
430 | + | then ([ScriptTransfer(bq.caller, bU, bV)] ++ bp()) | |
431 | + | else if (if ((bV != J)) | |
432 | + | then (bV != K) | |
411 | 433 | else false) | |
412 | - | then | |
434 | + | then bg() | |
413 | 435 | else { | |
414 | - | let bV = if ((bO == A)) | |
415 | - | then $Tuple6((bN - bK), bL, (H + bK), (I - bL), (H + bN), I) | |
416 | - | else $Tuple6(bL, (bN - bK), (H - bL), (I + bK), H, (I + bN)) | |
417 | - | let bW = bV._1 | |
418 | - | let bX = bV._2 | |
419 | - | let bY = bV._3 | |
420 | - | let bZ = bV._4 | |
421 | - | let ca = bV._5 | |
422 | - | let cb = bV._6 | |
423 | - | let ax = an(bY, bZ) | |
424 | - | let ay = fraction(P, aw, ax) | |
425 | - | let cc = (fraction((P * P), bY, bZ) / fraction(P, bW, bX)) | |
426 | - | let cd = fraction((ca + cb), T, (2 * U)) | |
427 | - | if (if ((bU >= ay)) | |
436 | + | let cc = if ((bV == J)) | |
437 | + | then $Tuple7((bU - bR), bS, (P + bR), (Q - bS), av((P + bU), Q), (P + bU), Q) | |
438 | + | else $Tuple7(bS, (bU - bR), (P - bS), (Q + bR), av(P, (Q + bU)), P, (Q + bU)) | |
439 | + | let cd = cc._1 | |
440 | + | let ce = cc._2 | |
441 | + | let cf = cc._3 | |
442 | + | let cg = cc._4 | |
443 | + | let bL = cc._5 | |
444 | + | let ch = cc._6 | |
445 | + | let ci = cc._7 | |
446 | + | let cj = if ((bV == J)) | |
447 | + | then IntegerEntry(f, ch) | |
448 | + | else IntegerEntry(g, ci) | |
449 | + | let aE = av(cf, cg) | |
450 | + | let aF = fraction(Y, T, aE) | |
451 | + | let ck = (fraction((Y * Y), cf, cg) / fraction(Y, cd, ce)) | |
452 | + | let cl = fraction((ch + ci), ac, (2 * ad)) | |
453 | + | if (if ((cb >= aF)) | |
428 | 454 | then true | |
429 | - | else ( | |
455 | + | else (T > aE)) | |
430 | 456 | then throw("Incorrect virtualSwapTokenPay or virtualSwapTokenGet value") | |
431 | - | else if (if (( | |
457 | + | else if (if ((bZ > ck)) | |
432 | 458 | then true | |
433 | - | else ( | |
459 | + | else (ck > ca)) | |
434 | 460 | then throw("Swap with virtualSwapTokenPay and virtualSwapTokenGet is possible, but ratio after virtual swap is incorrect") | |
435 | - | else if (if (( | |
461 | + | else if (if ((cl > ch)) | |
436 | 462 | then true | |
437 | - | else ( | |
438 | - | then | |
463 | + | else (cl > ci)) | |
464 | + | then bh(cl, ch, ci) | |
439 | 465 | else { | |
440 | - | let bH = fraction(aT(bW, A), P, bY) | |
441 | - | let bI = fraction(aT(bX, B), P, bZ) | |
442 | - | let bJ = fraction(min([bH, bI]), K, P) | |
443 | - | let ce = fraction(bJ, (N - (L / 2)), N) | |
444 | - | let cf = fraction(bJ, (M / 2), N) | |
445 | - | let cg = fraction(cf, H, K) | |
446 | - | let ch = fraction(cf, I, K) | |
447 | - | let bE = an((ca - cg), (cb - ch)) | |
448 | - | [Reissue(J, ce, true), ScriptTransfer(bj.caller, ce, J), ScriptTransfer(s, cg, A), ScriptTransfer(s, ch, B), IntegerEntry(f, aT((ca - cg), A)), IntegerEntry(g, aT((cb - ch), B)), IntegerEntry(i, (K + ce)), IntegerEntry(l, bE)] | |
466 | + | let bO = fraction(ba(cd, J), Y, cf) | |
467 | + | let bP = fraction(ba(ce, K), Y, cg) | |
468 | + | let bQ = fraction(min([bO, bP]), S, Y) | |
469 | + | [Reissue(R, bQ, true), ScriptTransfer(bq.caller, bQ, R), IntegerEntry(i, (S + bQ)), cj, IntegerEntry(l, bL)] | |
449 | 470 | } | |
450 | 471 | } | |
451 | 472 | } | |
452 | 473 | ||
453 | 474 | ||
454 | 475 | ||
455 | - | @Callable( | |
476 | + | @Callable(bq) | |
456 | 477 | func withdraw () = { | |
457 | - | let | |
458 | - | let | |
459 | - | let | |
460 | - | let | |
461 | - | let | |
462 | - | let | |
463 | - | if (!( | |
464 | - | then | |
465 | - | else if ((size( | |
478 | + | let cm = $Tuple2(bq.payments[0].amount, bq.payments[0].assetId) | |
479 | + | let bU = cm._1 | |
480 | + | let bV = cm._2 | |
481 | + | let cn = ba(fraction(bU, P, S), J) | |
482 | + | let co = ba(fraction(bU, Q, S), K) | |
483 | + | let bL = av((P - cn), (Q - co)) | |
484 | + | if (!(G)) | |
485 | + | then be() | |
486 | + | else if ((size(bq.payments) != 1)) | |
466 | 487 | then throw("One attached payment expected") | |
467 | - | else if (( | |
468 | - | then throw(("Incorrect asset attached. Expected: " + toBase58String( | |
469 | - | else if (!( | |
470 | - | then ([ScriptTransfer( | |
471 | - | else if (if (( | |
488 | + | else if ((bV != R)) | |
489 | + | then throw(("Incorrect asset attached. Expected: " + toBase58String(R))) | |
490 | + | else if (!(ar)) | |
491 | + | then ([ScriptTransfer(bq.caller, bU, bV)] ++ bp()) | |
492 | + | else if (if ((cn > an)) | |
472 | 493 | then true | |
473 | - | else ( | |
474 | - | then | |
475 | - | else [IntegerEntry(f, ( | |
494 | + | else (co > ao)) | |
495 | + | then bo(cn, co) | |
496 | + | else [IntegerEntry(f, (P - cn)), IntegerEntry(g, (Q - co)), IntegerEntry(i, (S - bU)), IntegerEntry(l, bL), Burn(R, bU), ScriptTransfer(bq.caller, cn, J), ScriptTransfer(bq.caller, co, K)] | |
476 | 497 | } | |
477 | 498 | ||
478 | 499 | ||
479 | 500 | ||
480 | - | @Callable( | |
481 | - | func exchange ( | |
482 | - | let | |
483 | - | let | |
484 | - | let | |
485 | - | if (!( | |
486 | - | then | |
487 | - | else if ((0 >= | |
488 | - | then throw(("Estimated amount must be positive. Actual: " + toString( | |
489 | - | else if (( | |
490 | - | then throw(((("Minimal amount can't be greater than estimated. Estimated: " + toString( | |
491 | - | else if ((size( | |
501 | + | @Callable(bq) | |
502 | + | func exchange (cp,cq) = { | |
503 | + | let cr = $Tuple2(bq.payments[0].amount, bq.payments[0].assetId) | |
504 | + | let bU = cr._1 | |
505 | + | let bV = cr._2 | |
506 | + | if (!(G)) | |
507 | + | then be() | |
508 | + | else if ((0 >= cp)) | |
509 | + | then throw(("Estimated amount must be positive. Actual: " + toString(cp))) | |
510 | + | else if ((cq > cp)) | |
511 | + | then throw(((("Minimal amount can't be greater than estimated. Estimated: " + toString(cp)) + ". Minimal: ") + toString(cq))) | |
512 | + | else if ((size(bq.payments) != 1)) | |
492 | 513 | then throw("One attached payment expected") | |
493 | - | else if (!( | |
494 | - | then ([ScriptTransfer( | |
495 | - | else if (if (( | |
496 | - | then ( | |
514 | + | else if (!(ar)) | |
515 | + | then ([ScriptTransfer(bq.caller, bU, bV)] ++ bp()) | |
516 | + | else if (if ((bV != J)) | |
517 | + | then (bV != K) | |
497 | 518 | else false) | |
498 | - | then | |
499 | - | else if ((10000000 > | |
519 | + | then bg() | |
520 | + | else if ((10000000 > bU)) | |
500 | 521 | then throw("Only swap of 10.000000 or more tokens is allowed") | |
501 | - | else if (if (( | |
522 | + | else if (if ((ae > fraction(Y, cq, bU))) | |
502 | 523 | then true | |
503 | - | else (fraction( | |
524 | + | else (fraction(Y, cp, bU) > af)) | |
504 | 525 | then throw("Incorrect args and pmt ratio") | |
505 | 526 | else { | |
506 | - | let | |
507 | - | then | |
508 | - | else | |
509 | - | let | |
510 | - | let | |
511 | - | let | |
512 | - | let | |
513 | - | then $Tuple2(( | |
514 | - | else $Tuple2((( | |
515 | - | let | |
516 | - | let | |
517 | - | let | |
518 | - | if (if (( | |
527 | + | let cs = if ((bV == J)) | |
528 | + | then K | |
529 | + | else J | |
530 | + | let bb = ax(cp, cq, bU, bV) | |
531 | + | let ct = fraction(bb, V, W) | |
532 | + | let cu = fraction(bb, (W - U), W) | |
533 | + | let cv = if ((bV == J)) | |
534 | + | then $Tuple2((P + bU), ((Q - cu) - ct)) | |
535 | + | else $Tuple2(((P - cu) - ct), (Q + bU)) | |
536 | + | let ch = cv._1 | |
537 | + | let ci = cv._2 | |
538 | + | let cl = fraction((ch + ci), ac, (2 * ad)) | |
539 | + | if (if ((cl > ch)) | |
519 | 540 | then true | |
520 | - | else ( | |
521 | - | then | |
522 | - | else if (if (if (( | |
523 | - | then ( | |
541 | + | else (cl > ci)) | |
542 | + | then bh(cl, ch, ci) | |
543 | + | else if (if (if ((J == E)) | |
544 | + | then (cs == J) | |
524 | 545 | else false) | |
525 | - | then ( | |
546 | + | then (al >= ch) | |
526 | 547 | else false) | |
527 | - | then | |
528 | - | else if (if (if (( | |
529 | - | then ( | |
548 | + | then bl(cu, an, L) | |
549 | + | else if (if (if ((K == E)) | |
550 | + | then (cs == K) | |
530 | 551 | else false) | |
531 | - | then ( | |
552 | + | then (al >= ci) | |
532 | 553 | else false) | |
533 | - | then | |
534 | - | else [IntegerEntry(f, | |
554 | + | then bl(cu, ao, O) | |
555 | + | else [IntegerEntry(f, ch), IntegerEntry(g, ci), IntegerEntry(l, av(ch, ci)), ScriptTransfer(bq.caller, cu, cs), ScriptTransfer(C, ct, cs)] | |
535 | 556 | } | |
536 | 557 | } | |
537 | 558 | ||
538 | 559 | ||
539 | 560 | ||
540 | - | @Callable( | |
541 | - | func shutdown () = if (!( | |
561 | + | @Callable(bq) | |
562 | + | func shutdown () = if (!(G)) | |
542 | 563 | then throw(("DApp is already suspended. Cause: " + valueOrElse(getString(this, m), "the cause wasn't specified"))) | |
543 | - | else if (!(containsElement([ | |
544 | - | then | |
545 | - | else | |
564 | + | else if (!(containsElement([x, y, z, A], bq.callerPublicKey))) | |
565 | + | then bf() | |
566 | + | else aY("Paused by admin") | |
546 | 567 | ||
547 | 568 | ||
548 | 569 | ||
549 | - | @Callable( | |
550 | - | func activate () = if ( | |
551 | - | then | |
552 | - | else if (!(containsElement([ | |
553 | - | then | |
570 | + | @Callable(bq) | |
571 | + | func activate () = if (G) | |
572 | + | then bd() | |
573 | + | else if (!(containsElement([x, y, z, A], bq.callerPublicKey))) | |
574 | + | then bf() | |
554 | 575 | else [BooleanEntry(c, true), DeleteEntry(m)] | |
555 | 576 | ||
556 | 577 | ||
557 | 578 | ||
558 | - | @Callable( | |
559 | - | func takeIntoAccountExtraFunds ( | |
560 | - | let | |
561 | - | let | |
562 | - | let | |
563 | - | then | |
579 | + | @Callable(bq) | |
580 | + | func takeIntoAccountExtraFunds (cw) = { | |
581 | + | let cx = (ap - P) | |
582 | + | let cy = (aq - Q) | |
583 | + | let cz = (cx - (if ((J == unit)) | |
584 | + | then cw | |
564 | 585 | else 0)) | |
565 | - | let | |
566 | - | then | |
586 | + | let cA = (cy - (if ((K == unit)) | |
587 | + | then cw | |
567 | 588 | else 0)) | |
568 | - | let | |
569 | - | if (!( | |
570 | - | then | |
571 | - | else if (( | |
572 | - | then | |
573 | - | else if ((0 > | |
574 | - | then throw(("Argument 'amountLeave' cannot be negative. Actual: " + toString( | |
575 | - | else if (if ((0 > | |
589 | + | let aE = av((P + cz), (Q + cA)) | |
590 | + | if (!(G)) | |
591 | + | then be() | |
592 | + | else if ((bq.caller != this)) | |
593 | + | then bf() | |
594 | + | else if ((0 > cw)) | |
595 | + | then throw(("Argument 'amountLeave' cannot be negative. Actual: " + toString(cw))) | |
596 | + | else if (if ((0 > cx)) | |
576 | 597 | then true | |
577 | - | else (0 > | |
578 | - | then | |
579 | - | else if (if ((0 > | |
598 | + | else (0 > cy)) | |
599 | + | then aY("Enroll amount negative") | |
600 | + | else if (if ((0 > cz)) | |
580 | 601 | then true | |
581 | - | else (0 > | |
602 | + | else (0 > cA)) | |
582 | 603 | then throw("Too large amountLeave") | |
583 | - | else [IntegerEntry(l, | |
604 | + | else [IntegerEntry(l, aE), IntegerEntry(f, (P + cz)), IntegerEntry(g, (Q + cA)), IntegerEntry(("last_income_" + H), cz), IntegerEntry(("last_income_" + I), cA)] | |
584 | 605 | } | |
585 | 606 | ||
586 | 607 | ||
587 | - | @Verifier( | |
588 | - | func | |
589 | - | let | |
590 | - | if ($isInstanceOf( | |
608 | + | @Verifier(cB) | |
609 | + | func cC () = { | |
610 | + | let u = cB | |
611 | + | if ($isInstanceOf(u, "InvokeScriptTransaction")) | |
591 | 612 | then { | |
592 | - | let | |
593 | - | let | |
594 | - | then ( | |
613 | + | let cD = u | |
614 | + | let cE = if ((cD.dApp == this)) | |
615 | + | then (cD.function == "takeIntoAccountExtraFunds") | |
595 | 616 | else false | |
596 | - | let | |
597 | - | then if (if (if (( | |
598 | - | then (size( | |
617 | + | let cF = if ((cD.dApp == D)) | |
618 | + | then if (if (if ((cD.function == "lockNeutrino")) | |
619 | + | then (size(cD.payments) == 1) | |
599 | 620 | else false) | |
600 | - | then ( | |
621 | + | then (cD.payments[0].assetId == E) | |
601 | 622 | else false) | |
602 | 623 | then true | |
603 | - | else if (( | |
604 | - | then (size( | |
624 | + | else if ((cD.function == "unlockNeutrino")) | |
625 | + | then (size(cD.payments) == 0) | |
605 | 626 | else false | |
606 | 627 | else false | |
607 | - | let | |
608 | - | then ( | |
628 | + | let cG = if (if (if ((cD.dApp == q)) | |
629 | + | then (cD.function == "exchange") | |
609 | 630 | else false) | |
610 | - | then ( | |
631 | + | then (J == E) | |
611 | 632 | else false) | |
612 | 633 | then true | |
613 | - | else if ((B == v)) | |
614 | - | then (cz.payments[0].assetId == v) | |
634 | + | else if (if ((K == E)) | |
635 | + | then (size(cD.payments) == 1) | |
636 | + | else false) | |
637 | + | then (cD.payments[0].assetId == E) | |
615 | 638 | else false | |
616 | - | let | |
639 | + | let cH = if (if (if (sigVerify(cB.bodyBytes, cB.proofs[0], x)) | |
617 | 640 | then true | |
618 | - | else sigVerify( | |
641 | + | else sigVerify(cB.bodyBytes, cB.proofs[0], y)) | |
619 | 642 | then true | |
620 | - | else sigVerify( | |
643 | + | else sigVerify(cB.bodyBytes, cB.proofs[0], z)) | |
621 | 644 | then true | |
622 | - | else sigVerify( | |
623 | - | if (if (if ( | |
645 | + | else sigVerify(cB.bodyBytes, cB.proofs[0], B) | |
646 | + | if (if (if (cE) | |
624 | 647 | then true | |
625 | - | else | |
648 | + | else cF) | |
626 | 649 | then true | |
627 | - | else | |
628 | - | then | |
650 | + | else cG) | |
651 | + | then cH | |
629 | 652 | else false | |
630 | 653 | } | |
631 | 654 | else { | |
632 | - | let | |
655 | + | let cI = if (sigVerify(cB.bodyBytes, cB.proofs[0], x)) | |
633 | 656 | then 1 | |
634 | 657 | else 0 | |
635 | - | let | |
658 | + | let cJ = if (sigVerify(cB.bodyBytes, cB.proofs[1], y)) | |
636 | 659 | then 1 | |
637 | 660 | else 0 | |
638 | - | let | |
661 | + | let cK = if (sigVerify(cB.bodyBytes, cB.proofs[2], z)) | |
639 | 662 | then 1 | |
640 | 663 | else 0 | |
641 | - | ((( | |
664 | + | (((cI + cJ) + cK) >= 2) | |
642 | 665 | } | |
643 | 666 | } | |
644 | 667 |
github/deemru/w8io/3ef1775 287.08 ms ◑