tx · Eo9E2oVWjvbfH1fzw3jXEbmAAsCpSDAPGr1BbQGX3LPg

3N9yYa7DXfSFLkgzWHmwzTpwd21GUxQApy9:  -0.05000000 Waves

2021.08.12 16:50 [1655236] smart account 3N9yYa7DXfSFLkgzWHmwzTpwd21GUxQApy9 > SELF 0.00000000 Waves

{ "type": 13, "id": "Eo9E2oVWjvbfH1fzw3jXEbmAAsCpSDAPGr1BbQGX3LPg", "fee": 5000000, "feeAssetId": null, "timestamp": 1628776251622, "version": 2, "chainId": 84, "sender": "3N9yYa7DXfSFLkgzWHmwzTpwd21GUxQApy9", "senderPublicKey": "AzWZ4rwReUMi2EBexU5XceFGKPvTcfdkZnygszAEtnYv", "proofs": [ "5LTdtfsSK38TRtGKhgwrADD2cCo8SqTfA8AHAzBvaYYFb4tMD8Tf5dwoeHQx4rbktGMXq9WDEpoXR5zHYrwpb8Fb" ], "script": "base64:AAIFAAAAAAAAABcIAhIDCgEBEgASBwoFCAgICAESAwoBAQAAACoAAAAACmxQZGVjaW1hbHMAAAAAAAAAAAgAAAAAEWRlY2ltYWxzTXVsdFByaWNlCQAAaAAAAAIJAABoAAAAAgAAAAAAAAAAZAAAAAAAAAAD6AAAAAAAAAAD6AAAAAADU0VQAgAAAAJfXwAAAAAKUG9vbEFjdGl2ZQAAAAAAAAAAAQAAAAAPUG9vbFB1dERpc2FibGVkAAAAAAAAAAACAAAAABNQb29sTWF0Y2hlckRpc2FibGVkAAAAAAAAAAADAAAAAAxQb29sU2h1dGRvd24AAAAAAAAAAAQAAAAAEGZhY3RvcnlQdWJsaWNLZXkJAAJZAAAAAQIAAAAsNnBKa3J3Zld5aFpqbTNMb1FXUmpqTlZhTHQ1Q1F6cWZnZ3pYeXFyN25yd0EAAAAADmlkeFBvb2xBZGRyZXNzAAAAAAAAAAABAAAAAA1pZHhQb29sU3RhdHVzAAAAAAAAAAACAAAAABBpZHhQb29sTFBBc3NldElkAAAAAAAAAAADAAAAABBpZHhBbW91bnRBc3NldElkAAAAAAAAAAAEAAAAAA9pZHhQcmljZUFzc2V0SWQAAAAAAAAAAAUAAAAAFmlkeEFtb3VudEFzc2V0RGVjaW1hbHMAAAAAAAAAAAYAAAAAFWlkeFByaWNlQXNzZXREZWNpbWFscwAAAAAAAAAABwAAAAAYaWR4QW1vdW50QXNzZXRJbnRlcm5hbElkAAAAAAAAAAAIAAAAABdpZHhQcmljZUFzc2V0SW50ZXJuYWxJZAAAAAAAAAAACQAAAAANaWR4UG9vbFdlaWdodAAAAAAAAAAACgAAAAAVaWR4UG9vbEFtb3VudEFzc2V0QW10AAAAAAAAAAABAAAAABRpZHhQb29sUHJpY2VBc3NldEFtdAAAAAAAAAAAAgAAAAARaWR4UG9vbExQQXNzZXRBbXQAAAAAAAAAAAMBAAAADGtleVByaWNlTGFzdAAAAAACAAAAESVzJXNfX3ByaWNlX19sYXN0AQAAAA9rZXlQcmljZUhpc3RvcnkAAAACAAAAAWgAAAAJdGltZXN0YW1wCQAEuQAAAAIJAARMAAAAAgIAAAAYJXMlcyVkJWRfX3ByaWNlX19oaXN0b3J5CQAETAAAAAIJAAGkAAAAAQUAAAABaAkABEwAAAACCQABpAAAAAEFAAAACXRpbWVzdGFtcAUAAAADbmlsBQAAAANTRVABAAAAEGtleVBvb2xMaXF1aWRpdHkAAAACAAAAE2ludGVybmFsQW1vdW50QXNzZXQAAAASaW50ZXJuYWxQcmljZUFzc2V0CQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAACCVkJWQlc19fBQAAABNpbnRlcm5hbEFtb3VudEFzc2V0AgAAAAJfXwUAAAASaW50ZXJuYWxQcmljZUFzc2V0AgAAAAhfX2xvY2tlZAEAAAAWa2V5UG9vbExpcXVpZGl0eUJ5VXNlcgAAAAMAAAATaW50ZXJuYWxBbW91bnRBc3NldAAAABJpbnRlcm5hbFByaWNlQXNzZXQAAAALdXNlckFkZHJlc3MJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAACiVkJWQlcyVzX18FAAAAE2ludGVybmFsQW1vdW50QXNzZXQCAAAAAl9fBQAAABJpbnRlcm5hbFByaWNlQXNzZXQCAAAAAl9fBQAAAAt1c2VyQWRkcmVzcwIAAAAIX19sb2NrZWQBAAAAEmtleVB1dEFjdGlvbkJ5VXNlcgAAAAIAAAALdXNlckFkZHJlc3MAAAAEdHhJZAkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAALJXMlcyVzX19QX18FAAAAC3VzZXJBZGRyZXNzAgAAAAJfXwUAAAAEdHhJZAEAAAASa2V5R2V0QWN0aW9uQnlVc2VyAAAAAgAAAAt1c2VyQWRkcmVzcwAAAAR0eElkCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAslcyVzJXNfX0dfXwUAAAALdXNlckFkZHJlc3MCAAAAAl9fBQAAAAR0eElkAQAAAClrZXlNYXBwaW5nUG9vbENvbnRyYWN0QWRkcmVzc1RvUG9vbEFzc2V0cwAAAAEAAAATcG9vbENvbnRyYWN0QWRkcmVzcwkAASwAAAACCQABLAAAAAICAAAACCVzJXMlc19fBQAAABNwb29sQ29udHJhY3RBZGRyZXNzAgAAACBfX21hcHBpbmdzX19wb29sQ29udHJhY3QyTHBBc3NldAEAAAANa2V5UG9vbENvbmZpZwAAAAIAAAATYW1vdW50QXNzZXRJbnRlcm5hbAAAABJwcmljZUFzc2V0SW50ZXJuYWwJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAIJWQlZCVzX18FAAAAE2Ftb3VudEFzc2V0SW50ZXJuYWwCAAAAAl9fBQAAABJwcmljZUFzc2V0SW50ZXJuYWwCAAAACF9fY29uZmlnAQAAAA1nZXRQb29sQ29uZmlnAAAAAAQAAAAOZmFjdG9yeUFkZHJlc3MJAQAAABRhZGRyZXNzRnJvbVB1YmxpY0tleQAAAAEFAAAAEGZhY3RvcnlQdWJsaWNLZXkEAAAAEWN1cnJlbnRQb29sQXNzZXRzCQAEtQAAAAIJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABB0AAAACBQAAAA5mYWN0b3J5QWRkcmVzcwkBAAAAKWtleU1hcHBpbmdQb29sQ29udHJhY3RBZGRyZXNzVG9Qb29sQXNzZXRzAAAAAQkABCUAAAABBQAAAAR0aGlzAgAAAClObyBmYWN0b3J5IGNvbmZpZyBmb3VuZCBmb3IgcG9vbCBhZGRyZXNzLgUAAAADU0VQBAAAABFjdXJyZW50UG9vbENvbmZpZwkABLUAAAACCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQdAAAAAgUAAAAOZmFjdG9yeUFkZHJlc3MJAQAAAA1rZXlQb29sQ29uZmlnAAAAAgkAAZEAAAACBQAAABFjdXJyZW50UG9vbEFzc2V0cwAAAAAAAAAAAQkAAZEAAAACBQAAABFjdXJyZW50UG9vbEFzc2V0cwAAAAAAAAAAAgIAAAAoTm8gZmFjdG9yeSBjb25maWcgZm91bmQgZm9yIHBvb2wgYXNzZXRzLgUAAAADU0VQBQAAABFjdXJyZW50UG9vbENvbmZpZwEAAAAQZ2V0UG9vbExpcXVpZGl0eQAAAAIAAAAVYW1vdW50QXNzZXRJbnRlcm5hbElkAAAAFHByaWNlQXNzZXRJbnRlcm5hbElkBAAAABljdXJyZW50UG9vbExpcXVpZGl0eVZhbHVlCQAEIgAAAAEJAQAAABBrZXlQb29sTGlxdWlkaXR5AAAAAgUAAAAVYW1vdW50QXNzZXRJbnRlcm5hbElkBQAAABRwcmljZUFzc2V0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AAAAEWFtb3VudEFzc2V0TG9ja2VkCQAETAAAAAIJAAGkAAAAAQUAAAAQcHJpY2VBc3NldExvY2tlZAkABEwAAAACCQABpAAAAAEFAAAADWxwVG9rZW5Mb2NrZWQFAAAAA25pbAUAAAADU0VQAQAAAA1nZXRTY3JpcHRIYXNoAAAAAAkAAloAAAABCQEAAAAFdmFsdWUAAAABCQAD8QAAAAEFAAAABHRoaXMBAAAAHHByaXZhdGVDYXN0QXNzZXRUb0xQRGVjaW1hbHMAAAACAAAADWFzc2V0RGVjaW1hbHMAAAALYXNzZXRBbW91bnQEAAAADGRlY2ltYWxzTXVsdAkAAGwAAAAGAAAAAAAAAAAKAAAAAAAAAAAACQAAZQAAAAIFAAAACmxQZGVjaW1hbHMFAAAADWFzc2V0RGVjaW1hbHMAAAAAAAAAAAAAAAAAAAAAAAAFAAAABERPV04JAAUUAAAAAgkAAGgAAAACBQAAAAthc3NldEFtb3VudAUAAAAMZGVjaW1hbHNNdWx0BQAAAAxkZWNpbWFsc011bHQBAAAAFXByaXZhdGVDYWxjdWxhdGVQcmljZQAAAAQAAAASYW1vdXRBc3NldERlY2ltYWxzAAAAEnByaWNlQXNzZXREZWNpbWFscwAAAA5hbW91bnRBc3NldEFtdAAAAA1wcmljZUFzc2V0QW10BAAAABhhbW91bnRBc3NldFBvb2xMb2NrZWRBbXQICQEAAAAccHJpdmF0ZUNhc3RBc3NldFRvTFBEZWNpbWFscwAAAAIFAAAAEmFtb3V0QXNzZXREZWNpbWFscwUAAAAOYW1vdW50QXNzZXRBbXQAAAACXzEEAAAAF3ByaWNlQXNzZXRQb29sTG9ja2VkQW10CAkBAAAAHHByaXZhdGVDYXN0QXNzZXRUb0xQRGVjaW1hbHMAAAACBQAAABJwcmljZUFzc2V0RGVjaW1hbHMFAAAADXByaWNlQXNzZXRBbXQAAAACXzEJAABrAAAAAwUAAAAXcHJpY2VBc3NldFBvb2xMb2NrZWRBbXQFAAAAEWRlY2ltYWxzTXVsdFByaWNlBQAAABhhbW91bnRBc3NldFBvb2xMb2NrZWRBbXQBAAAAGHByaXZhdGVHZXRQb29sU3RhdGlzdGljcwAAAAAEAAAAEnBvb2xDb25maWdEYXRhTGlzdAkBAAAADWdldFBvb2xDb25maWcAAAAABAAAAAlscEFzc2V0SWQJAAJZAAAAAQkAAZEAAAACBQAAABJwb29sQ29uZmlnRGF0YUxpc3QFAAAAEGlkeFBvb2xMUEFzc2V0SWQEAAAADWFtb3VudEFzc2V0SWQJAAGRAAAAAgUAAAAScG9vbENvbmZpZ0RhdGFMaXN0BQAAABBpZHhBbW91bnRBc3NldElkBAAAAAxwcmljZUFzc2V0SWQJAAGRAAAAAgUAAAAScG9vbENvbmZpZ0RhdGFMaXN0BQAAAA9pZHhQcmljZUFzc2V0SWQEAAAAFWFtb3VudEFzc2V0SW50ZXJuYWxJZAkAAZEAAAACBQAAABJwb29sQ29uZmlnRGF0YUxpc3QFAAAAGGlkeEFtb3VudEFzc2V0SW50ZXJuYWxJZAQAAAAUcHJpY2VBc3NldEludGVybmFsSWQJAAGRAAAAAgUAAAAScG9vbENvbmZpZ0RhdGFMaXN0BQAAABdpZHhQcmljZUFzc2V0SW50ZXJuYWxJZAQAAAASYW1vdXRBc3NldERlY2ltYWxzCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAScG9vbENvbmZpZ0RhdGFMaXN0BQAAABZpZHhBbW91bnRBc3NldERlY2ltYWxzBAAAABJwcmljZUFzc2V0RGVjaW1hbHMJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAABJwb29sQ29uZmlnRGF0YUxpc3QFAAAAFWlkeFByaWNlQXNzZXREZWNpbWFscwQAAAAVcG9vbExpcXVpZGl0eURhdGFMaXN0CQEAAAAQZ2V0UG9vbExpcXVpZGl0eQAAAAIFAAAAFWFtb3VudEFzc2V0SW50ZXJuYWxJZAUAAAAUcHJpY2VBc3NldEludGVybmFsSWQEAAAAFnBvb2xBbW91bnRBc3NldEJhbGFuY2UJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAABVwb29sTGlxdWlkaXR5RGF0YUxpc3QFAAAAFWlkeFBvb2xBbW91bnRBc3NldEFtdAQAAAAVcG9vbFByaWNlQXNzZXRCYWxhbmNlCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAVcG9vbExpcXVpZGl0eURhdGFMaXN0BQAAABRpZHhQb29sUHJpY2VBc3NldEFtdAQAAAANcG9vbExQQmFsYW5jZQkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAAFXBvb2xMaXF1aWRpdHlEYXRhTGlzdAUAAAARaWR4UG9vbExQQXNzZXRBbXQEAAAAGGFtb3VudEFzc2V0UG9vbExvY2tlZEFtdAgJAQAAABxwcml2YXRlQ2FzdEFzc2V0VG9MUERlY2ltYWxzAAAAAgUAAAASYW1vdXRBc3NldERlY2ltYWxzBQAAABZwb29sQW1vdW50QXNzZXRCYWxhbmNlAAAAAl8xBAAAABdwcmljZUFzc2V0UG9vbExvY2tlZEFtdAgJAQAAABxwcml2YXRlQ2FzdEFzc2V0VG9MUERlY2ltYWxzAAAAAgUAAAAScHJpY2VBc3NldERlY2ltYWxzBQAAABVwb29sUHJpY2VBc3NldEJhbGFuY2UAAAACXzEEAAAAFGxwUHJpY2VJbkFtb3VudEFzc2V0CQAAawAAAAMFAAAAGGFtb3VudEFzc2V0UG9vbExvY2tlZEFtdAkAAGgAAAACAAAAAAAAAAABBQAAABFkZWNpbWFsc011bHRQcmljZQUAAAANcG9vbExQQmFsYW5jZQQAAAATbHBQcmljZUluUHJpY2VBc3NldAkAAGsAAAADBQAAABdwcmljZUFzc2V0UG9vbExvY2tlZEFtdAkAAGgAAAACAAAAAAAAAAABBQAAABFkZWNpbWFsc011bHRQcmljZQUAAAANcG9vbExQQmFsYW5jZQQAAAAMY3VycmVudFByaWNlCQEAAAAVcHJpdmF0ZUNhbGN1bGF0ZVByaWNlAAAABAUAAAASYW1vdXRBc3NldERlY2ltYWxzBQAAABJwcmljZUFzc2V0RGVjaW1hbHMFAAAAFnBvb2xBbW91bnRBc3NldEJhbGFuY2UFAAAAFXBvb2xQcmljZUFzc2V0QmFsYW5jZQkABEwAAAACBQAAABZwb29sQW1vdW50QXNzZXRCYWxhbmNlCQAETAAAAAIFAAAAFXBvb2xQcmljZUFzc2V0QmFsYW5jZQkABEwAAAACBQAAAA1wb29sTFBCYWxhbmNlCQAETAAAAAIFAAAADGN1cnJlbnRQcmljZQkABEwAAAACBQAAABRscFByaWNlSW5BbW91bnRBc3NldAkABEwAAAACBQAAABNscFByaWNlSW5QcmljZUFzc2V0BQAAAANuaWwBAAAAG3ByaXZhdGVFc3RpbWF0ZUdldE9wZXJhdGlvbgAAAAMAAAAQcGF5bWVudExwQXNzZXRJZAAAAA9wYXltZW50THBBbW91bnQAAAALdXNlckFkZHJlc3MEAAAADnBvb2xDb25maWdMaXN0CQEAAAANZ2V0UG9vbENvbmZpZwAAAAAEAAAACWxwQXNzZXRJZAkAAZEAAAACBQAAAA5wb29sQ29uZmlnTGlzdAUAAAAQaWR4UG9vbExQQXNzZXRJZAQAAAANYW1vdW50QXNzZXRJZAkAAZEAAAACBQAAAA5wb29sQ29uZmlnTGlzdAUAAAAQaWR4QW1vdW50QXNzZXRJZAQAAAAMcHJpY2VBc3NldElkCQABkQAAAAIFAAAADnBvb2xDb25maWdMaXN0BQAAAA9pZHhQcmljZUFzc2V0SWQEAAAAFWFtb3VudEFzc2V0SW50ZXJuYWxJZAkAAZEAAAACBQAAAA5wb29sQ29uZmlnTGlzdAUAAAAYaWR4QW1vdW50QXNzZXRJbnRlcm5hbElkBAAAABRwcmljZUFzc2V0SW50ZXJuYWxJZAkAAZEAAAACBQAAAA5wb29sQ29uZmlnTGlzdAUAAAAXaWR4UHJpY2VBc3NldEludGVybmFsSWQEAAAAEmFtb3V0QXNzZXREZWNpbWFscwkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAADnBvb2xDb25maWdMaXN0BQAAABZpZHhBbW91bnRBc3NldERlY2ltYWxzBAAAABJwcmljZUFzc2V0RGVjaW1hbHMJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAA5wb29sQ29uZmlnTGlzdAUAAAAVaWR4UHJpY2VBc3NldERlY2ltYWxzBAAAABF1c2VyTGlxdWlkaXR5TGlzdAkBAAAAFmdldFBvb2xMaXF1aWRpdHlCeVVzZXIAAAADBQAAABVhbW91bnRBc3NldEludGVybmFsSWQFAAAAFHByaWNlQXNzZXRJbnRlcm5hbElkBQAAAAt1c2VyQWRkcmVzcwQAAAANdXNlckxQQmFsYW5jZQkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAAEXVzZXJMaXF1aWRpdHlMaXN0BQAAABFpZHhQb29sTFBBc3NldEFtdAQAAAAWdXNlckFtb3VudEFzc2V0QmFsYW5jZQkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAAEXVzZXJMaXF1aWRpdHlMaXN0BQAAABVpZHhQb29sQW1vdW50QXNzZXRBbXQEAAAAFXVzZXJQcmljZUFzc2V0QmFsYW5jZQkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAAEXVzZXJMaXF1aWRpdHlMaXN0BQAAABRpZHhQb29sUHJpY2VBc3NldEFtdAQAAAARcG9vbExpcXVpZGl0eUxpc3QJAQAAABBnZXRQb29sTGlxdWlkaXR5AAAAAgUAAAAVYW1vdW50QXNzZXRJbnRlcm5hbElkBQAAABRwcmljZUFzc2V0SW50ZXJuYWxJZAQAAAANcG9vbExQQmFsYW5jZQkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAAEXBvb2xMaXF1aWRpdHlMaXN0BQAAABFpZHhQb29sTFBBc3NldEFtdAQAAAAWcG9vbEFtb3VudEFzc2V0QmFsYW5jZQkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAAEXBvb2xMaXF1aWRpdHlMaXN0BQAAABVpZHhQb29sQW1vdW50QXNzZXRBbXQEAAAAFXBvb2xQcmljZUFzc2V0QmFsYW5jZQkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAAEXBvb2xMaXF1aWRpdHlMaXN0BQAAABRpZHhQb29sUHJpY2VBc3NldEFtdAMJAQAAAAIhPQAAAAIFAAAACWxwQXNzZXRJZAUAAAAQcGF5bWVudExwQXNzZXRJZAkAAAIAAAABAgAAABVJbnZhbGlkIGFzc2V0IHBhc3NlZC4DCQAAZgAAAAIFAAAAD3BheW1lbnRMcEFtb3VudAUAAAANdXNlckxQQmFsYW5jZQkAAAIAAAABAgAAADJJbnZhbGlkIGFtb3VudCBwYXNzZWQuIEFtb3VudCBsZXNzIHRoYW4gYXZhaWxhYmxlLgQAAAAYYW1vdW50QXNzZXRQb29sTG9ja2VkQW10CAkBAAAAHHByaXZhdGVDYXN0QXNzZXRUb0xQRGVjaW1hbHMAAAACBQAAABJhbW91dEFzc2V0RGVjaW1hbHMFAAAAFnBvb2xBbW91bnRBc3NldEJhbGFuY2UAAAACXzEEAAAAF3ByaWNlQXNzZXRQb29sTG9ja2VkQW10CAkBAAAAHHByaXZhdGVDYXN0QXNzZXRUb0xQRGVjaW1hbHMAAAACBQAAABJwcmljZUFzc2V0RGVjaW1hbHMFAAAAFXBvb2xQcmljZUFzc2V0QmFsYW5jZQAAAAJfMQQAAAARb3V0QW1vdW50QXNzZXRBbXQJAABrAAAAAwUAAAAYYW1vdW50QXNzZXRQb29sTG9ja2VkQW10BQAAAA9wYXltZW50THBBbW91bnQFAAAADXBvb2xMUEJhbGFuY2UEAAAAEG91dFByaWNlQXNzZXRBbXQJAABrAAAAAwUAAAAXcHJpY2VBc3NldFBvb2xMb2NrZWRBbXQFAAAAD3BheW1lbnRMcEFtb3VudAUAAAANcG9vbExQQmFsYW5jZQQAAAAMY3VycmVudFByaWNlCQAAawAAAAMFAAAAF3ByaWNlQXNzZXRQb29sTG9ja2VkQW10BQAAABFkZWNpbWFsc011bHRQcmljZQUAAAAYYW1vdW50QXNzZXRQb29sTG9ja2VkQW10CQAFIAAAAA4FAAAADWFtb3VudEFzc2V0SWQFAAAADHByaWNlQXNzZXRJZAUAAAAVYW1vdW50QXNzZXRJbnRlcm5hbElkBQAAABRwcmljZUFzc2V0SW50ZXJuYWxJZAUAAAAWdXNlckFtb3VudEFzc2V0QmFsYW5jZQUAAAARb3V0QW1vdW50QXNzZXRBbXQFAAAAFXVzZXJQcmljZUFzc2V0QmFsYW5jZQUAAAAQb3V0UHJpY2VBc3NldEFtdAUAAAARb3V0QW1vdW50QXNzZXRBbXQFAAAADXVzZXJMUEJhbGFuY2UFAAAAFnBvb2xBbW91bnRBc3NldEJhbGFuY2UFAAAAFXBvb2xQcmljZUFzc2V0QmFsYW5jZQUAAAANcG9vbExQQmFsYW5jZQUAAAAMY3VycmVudFByaWNlAQAAABtwcml2YXRlRXN0aW1hdGVQdXRPcGVyYXRpb24AAAAGAAAAEXNsaXBwYWdlVG9sZXJhbmNlAAAAEGluQW1vdW50QXNzZXRBbXQAAAAPaW5BbW91bnRBc3NldElkAAAAD2luUHJpY2VBc3NldEFtdAAAAA5pblByaWNlQXNzZXRJZAAAAAt1c2VyQWRkcmVzcwQAAAAScG9vbENvbmZpZ0RhdGFMaXN0CQEAAAANZ2V0UG9vbENvbmZpZwAAAAAEAAAACWxwQXNzZXRJZAkAAlkAAAABCQABkQAAAAIFAAAAEnBvb2xDb25maWdEYXRhTGlzdAUAAAAQaWR4UG9vbExQQXNzZXRJZAQAAAANYW1vdW50QXNzZXRJZAkAAZEAAAACBQAAABJwb29sQ29uZmlnRGF0YUxpc3QFAAAAEGlkeEFtb3VudEFzc2V0SWQEAAAADHByaWNlQXNzZXRJZAkAAZEAAAACBQAAABJwb29sQ29uZmlnRGF0YUxpc3QFAAAAD2lkeFByaWNlQXNzZXRJZAQAAAAVYW1vdW50QXNzZXRJbnRlcm5hbElkCQABkQAAAAIFAAAAEnBvb2xDb25maWdEYXRhTGlzdAUAAAAYaWR4QW1vdW50QXNzZXRJbnRlcm5hbElkBAAAABRwcmljZUFzc2V0SW50ZXJuYWxJZAkAAZEAAAACBQAAABJwb29sQ29uZmlnRGF0YUxpc3QFAAAAF2lkeFByaWNlQXNzZXRJbnRlcm5hbElkBAAAABJhbW91dEFzc2V0RGVjaW1hbHMJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAABJwb29sQ29uZmlnRGF0YUxpc3QFAAAAFmlkeEFtb3VudEFzc2V0RGVjaW1hbHMEAAAAEnByaWNlQXNzZXREZWNpbWFscwkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAAEnBvb2xDb25maWdEYXRhTGlzdAUAAAAVaWR4UHJpY2VBc3NldERlY2ltYWxzBAAAABVwb29sTGlxdWlkaXR5RGF0YUxpc3QJAQAAABBnZXRQb29sTGlxdWlkaXR5AAAAAgUAAAAVYW1vdW50QXNzZXRJbnRlcm5hbElkBQAAABRwcmljZUFzc2V0SW50ZXJuYWxJZAQAAAAWcG9vbEFtb3VudEFzc2V0QmFsYW5jZQkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAAFXBvb2xMaXF1aWRpdHlEYXRhTGlzdAUAAAAVaWR4UG9vbEFtb3VudEFzc2V0QW10BAAAABVwb29sUHJpY2VBc3NldEJhbGFuY2UJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAABVwb29sTGlxdWlkaXR5RGF0YUxpc3QFAAAAFGlkeFBvb2xQcmljZUFzc2V0QW10BAAAAA1wb29sTFBCYWxhbmNlCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAVcG9vbExpcXVpZGl0eURhdGFMaXN0BQAAABFpZHhQb29sTFBBc3NldEFtdAQAAAAVdXNlckxpcXVpZGl0eURhdGFMaXN0CQEAAAAWZ2V0UG9vbExpcXVpZGl0eUJ5VXNlcgAAAAMFAAAAFWFtb3VudEFzc2V0SW50ZXJuYWxJZAUAAAAUcHJpY2VBc3NldEludGVybmFsSWQFAAAAC3VzZXJBZGRyZXNzBAAAABZ1c2VyQW1vdW50QXNzZXRCYWxhbmNlCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAVdXNlckxpcXVpZGl0eURhdGFMaXN0BQAAABVpZHhQb29sQW1vdW50QXNzZXRBbXQEAAAAFXVzZXJQcmljZUFzc2V0QmFsYW5jZQkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAAFXVzZXJMaXF1aWRpdHlEYXRhTGlzdAUAAAAUaWR4UG9vbFByaWNlQXNzZXRBbXQEAAAADXVzZXJMUEJhbGFuY2UJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAABV1c2VyTGlxdWlkaXR5RGF0YUxpc3QFAAAAEWlkeFBvb2xMUEFzc2V0QW10AwMJAQAAAAIhPQAAAAIFAAAADWFtb3VudEFzc2V0SWQFAAAAD2luQW1vdW50QXNzZXRJZAYJAQAAAAIhPQAAAAIFAAAADHByaWNlQXNzZXRJZAUAAAAOaW5QcmljZUFzc2V0SWQJAAACAAAAAQIAAAAlSW52YWxpZCBhbW91bnQgb3IgcHJpY2UgYXNzZXQgcGFzc2VkLgQAAAAfaW5BbW91bnRBc3NldEFtdENhbGN1bGF0ZWRUdXBsZQkBAAAAHHByaXZhdGVDYXN0QXNzZXRUb0xQRGVjaW1hbHMAAAACBQAAABJhbW91dEFzc2V0RGVjaW1hbHMFAAAAEGluQW1vdW50QXNzZXRBbXQEAAAAHmluUHJpY2VBc3NldEFtdENhbGN1bGF0ZWRUdXBsZQkBAAAAHHByaXZhdGVDYXN0QXNzZXRUb0xQRGVjaW1hbHMAAAACBQAAABJwcmljZUFzc2V0RGVjaW1hbHMFAAAAD2luUHJpY2VBc3NldEFtdAQAAAAaaW5BbW91bnRBc3NldEFtdENhbGN1bGF0ZWQIBQAAAB9pbkFtb3VudEFzc2V0QW10Q2FsY3VsYXRlZFR1cGxlAAAAAl8xBAAAABlpblByaWNlQXNzZXRBbXRDYWxjdWxhdGVkCAUAAAAeaW5QcmljZUFzc2V0QW10Q2FsY3VsYXRlZFR1cGxlAAAAAl8xBAAAAAl1c2VyUHJpY2UJAABrAAAAAwUAAAAZaW5QcmljZUFzc2V0QW10Q2FsY3VsYXRlZAUAAAARZGVjaW1hbHNNdWx0UHJpY2UFAAAAGmluQW1vdW50QXNzZXRBbXRDYWxjdWxhdGVkBAAAABhhbW91bnRBc3NldFBvb2xMb2NrZWRBbXQJAABoAAAAAgUAAAAWcG9vbEFtb3VudEFzc2V0QmFsYW5jZQgFAAAAH2luQW1vdW50QXNzZXRBbXRDYWxjdWxhdGVkVHVwbGUAAAACXzIEAAAAF3ByaWNlQXNzZXRQb29sTG9ja2VkQW10CQAAaAAAAAIFAAAAFXBvb2xQcmljZUFzc2V0QmFsYW5jZQgFAAAAHmluUHJpY2VBc3NldEFtdENhbGN1bGF0ZWRUdXBsZQAAAAJfMgQAAAALY3VyZW50UHJpY2UDCQAAAAAAAAIFAAAADXBvb2xMUEJhbGFuY2UAAAAAAAAAAAAAAAAAAAAAAAAJAABrAAAAAwUAAAAXcHJpY2VBc3NldFBvb2xMb2NrZWRBbXQFAAAAEWRlY2ltYWxzTXVsdFByaWNlBQAAABhhbW91bnRBc3NldFBvb2xMb2NrZWRBbXQEAAAAC291dExwQW1vdW50AwkAAAAAAAACBQAAAA1wb29sTFBCYWxhbmNlAAAAAAAAAAAABAAAAAVwYXJ0QQkAAGwAAAAGBQAAABppbkFtb3VudEFzc2V0QW10Q2FsY3VsYXRlZAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAQAAAAAAAAAAAAUAAAAERE9XTgQAAAAFcGFydEIJAABsAAAABgUAAAAZaW5QcmljZUFzc2V0QW10Q2FsY3VsYXRlZAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAQAAAAAAAAAAAAUAAAAERE9XTgkAAGgAAAACBQAAAAVwYXJ0QQUAAAAFcGFydEIEAAAACHNsaXBwYWdlCQAAawAAAAMFAAAAC2N1cmVudFByaWNlAAAAAAAAAABkBQAAAAl1c2VyUHJpY2UDCQAAZgAAAAIFAAAACHNsaXBwYWdlBQAAABFzbGlwcGFnZVRvbGVyYW5jZQkAAAIAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAA9QcmljZSBzbGlwcGFnZSAJAAGkAAAAAQUAAAAIc2xpcHBhZ2UCAAAAHiBleGNlZWRlZCB0aGUgcGFzc2VkIGxpbWl0IG9mIAkAAaQAAAABBQAAABFzbGlwcGFnZVRvbGVyYW5jZQQAAAASbHBBbXRCeUFtb3VudEFzc2V0CQAAawAAAAMFAAAADXBvb2xMUEJhbGFuY2UFAAAAGmluQW1vdW50QXNzZXRBbXRDYWxjdWxhdGVkBQAAABhhbW91bnRBc3NldFBvb2xMb2NrZWRBbXQEAAAAEWxwQW10QnlQcmljZUFzc2V0CQAAawAAAAMFAAAADXBvb2xMUEJhbGFuY2UFAAAAGWluUHJpY2VBc3NldEFtdENhbGN1bGF0ZWQFAAAAF3ByaWNlQXNzZXRQb29sTG9ja2VkQW10AwkAAGYAAAACBQAAABFscEFtdEJ5UHJpY2VBc3NldAUAAAASbHBBbXRCeUFtb3VudEFzc2V0BQAAABJscEFtdEJ5QW1vdW50QXNzZXQFAAAAEWxwQW10QnlQcmljZUFzc2V0CQAFHQAAAAsFAAAAC291dExwQW1vdW50BQAAAAtjdXJlbnRQcmljZQUAAAAWdXNlckFtb3VudEFzc2V0QmFsYW5jZQUAAAAVdXNlclByaWNlQXNzZXRCYWxhbmNlBQAAAA11c2VyTFBCYWxhbmNlBQAAABZwb29sQW1vdW50QXNzZXRCYWxhbmNlBQAAABVwb29sUHJpY2VBc3NldEJhbGFuY2UFAAAADXBvb2xMUEJhbGFuY2UFAAAAFWFtb3VudEFzc2V0SW50ZXJuYWxJZAUAAAAUcHJpY2VBc3NldEludGVybmFsSWQFAAAACWxwQXNzZXRJZAAAAAQAAAABaQEAAAADcHV0AAAAAQAAABFzbGlwcGFnZVRvbGVyYW5jZQQAAAAOcG10QW1vdW50QXNzZXQJAQAAAAV2YWx1ZQAAAAEJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAEAAAAEGluQW1vdW50QXNzZXRBbXQIBQAAAA5wbXRBbW91bnRBc3NldAAAAAZhbW91bnQEAAAAD2luQW1vdW50QXNzZXRJZAkBAAAABXZhbHVlAAAAAQgFAAAADnBtdEFtb3VudEFzc2V0AAAAB2Fzc2V0SWQEAAAADXBtdFByaWNlQXNzZXQJAQAAAAV2YWx1ZQAAAAEJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAEEAAAAD2luUHJpY2VBc3NldEFtdAgFAAAADXBtdFByaWNlQXNzZXQAAAAGYW1vdW50BAAAAA5pblByaWNlQXNzZXRJZAkBAAAABXZhbHVlAAAAAQgFAAAADXBtdFByaWNlQXNzZXQAAAAHYXNzZXRJZAMGCQAAAgAAAAEJAAJYAAAAAQUAAAAPaW5BbW91bnRBc3NldElkBAAAABNlc3RpbWF0ZWRQdXRSZXN1bHRzCQEAAAAbcHJpdmF0ZUVzdGltYXRlUHV0T3BlcmF0aW9uAAAABgUAAAARc2xpcHBhZ2VUb2xlcmFuY2UFAAAAEGluQW1vdW50QXNzZXRBbXQJAAJYAAAAAQUAAAAPaW5BbW91bnRBc3NldElkBQAAAA9pblByaWNlQXNzZXRBbXQJAAJYAAAAAQUAAAAOaW5QcmljZUFzc2V0SWQJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBAAAAAtvdXRMcEFtb3VudAgFAAAAE2VzdGltYXRlZFB1dFJlc3VsdHMAAAACXzEEAAAAC2N1cmVudFByaWNlCAUAAAATZXN0aW1hdGVkUHV0UmVzdWx0cwAAAAJfMgQAAAAWdXNlckFtb3VudEFzc2V0QmFsYW5jZQgFAAAAE2VzdGltYXRlZFB1dFJlc3VsdHMAAAACXzMEAAAAFXVzZXJQcmljZUFzc2V0QmFsYW5jZQgFAAAAE2VzdGltYXRlZFB1dFJlc3VsdHMAAAACXzQEAAAADXVzZXJMUEJhbGFuY2UIBQAAABNlc3RpbWF0ZWRQdXRSZXN1bHRzAAAAAl81BAAAABZwb29sQW1vdW50QXNzZXRCYWxhbmNlCAUAAAATZXN0aW1hdGVkUHV0UmVzdWx0cwAAAAJfNgQAAAAVcG9vbFByaWNlQXNzZXRCYWxhbmNlCAUAAAATZXN0aW1hdGVkUHV0UmVzdWx0cwAAAAJfNwQAAAANcG9vbExQQmFsYW5jZQgFAAAAE2VzdGltYXRlZFB1dFJlc3VsdHMAAAACXzgEAAAAFWFtb3VudEFzc2V0SW50ZXJuYWxJZAgFAAAAE2VzdGltYXRlZFB1dFJlc3VsdHMAAAACXzkEAAAAFHByaWNlQXNzZXRJbnRlcm5hbElkCAUAAAATZXN0aW1hdGVkUHV0UmVzdWx0cwAAAANfMTAEAAAACWxwQXNzZXRJZAgFAAAAE2VzdGltYXRlZFB1dFJlc3VsdHMAAAADXzExCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAAxrZXlQcmljZUxhc3QAAAAACQABLAAAAAICAAAABCVzX18JAAGkAAAAAQUAAAALY3VyZW50UHJpY2UJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAD2tleVByaWNlSGlzdG9yeQAAAAIFAAAABmhlaWdodAgFAAAACWxhc3RCbG9jawAAAAl0aW1lc3RhbXAJAAEsAAAAAgIAAAAEJXNfXwkAAaQAAAABBQAAAAtjdXJlbnRQcmljZQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAASa2V5UHV0QWN0aW9uQnlVc2VyAAAAAgkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIJAAJYAAAAAQgFAAAAAWkAAAANdHJhbnNhY3Rpb25JZAkBAAAAEWRhdGFQdXRBY3Rpb25JbmZvAAAABwUAAAAQaW5BbW91bnRBc3NldEFtdAUAAAAPaW5QcmljZUFzc2V0QW10BQAAAAtvdXRMcEFtb3VudAUAAAALY3VyZW50UHJpY2UFAAAAEXNsaXBwYWdlVG9sZXJhbmNlBQAAAAZoZWlnaHQIBQAAAAlsYXN0QmxvY2sAAAAJdGltZXN0YW1wCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABZrZXlQb29sTGlxdWlkaXR5QnlVc2VyAAAAAwUAAAAVYW1vdW50QXNzZXRJbnRlcm5hbElkBQAAABRwcmljZUFzc2V0SW50ZXJuYWxJZAkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIJAQAAABFkYXRhUG9vbExpcXVpZGl0eQAAAAMJAABkAAAAAgUAAAAWdXNlckFtb3VudEFzc2V0QmFsYW5jZQUAAAAQaW5BbW91bnRBc3NldEFtdAkAAGQAAAACBQAAABV1c2VyUHJpY2VBc3NldEJhbGFuY2UFAAAAD2luUHJpY2VBc3NldEFtdAkAAGQAAAACBQAAAA11c2VyTFBCYWxhbmNlBQAAAAtvdXRMcEFtb3VudAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAQa2V5UG9vbExpcXVpZGl0eQAAAAIFAAAAFWFtb3VudEFzc2V0SW50ZXJuYWxJZAUAAAAUcHJpY2VBc3NldEludGVybmFsSWQJAQAAABFkYXRhUG9vbExpcXVpZGl0eQAAAAMJAABkAAAAAgUAAAAWcG9vbEFtb3VudEFzc2V0QmFsYW5jZQUAAAAQaW5BbW91bnRBc3NldEFtdAkAAGQAAAACBQAAABVwb29sUHJpY2VBc3NldEJhbGFuY2UFAAAAD2luUHJpY2VBc3NldEFtdAkAAGQAAAACBQAAAA1wb29sTFBCYWxhbmNlBQAAAAtvdXRMcEFtb3VudAkABEwAAAACCQEAAAAHUmVpc3N1ZQAAAAMFAAAACWxwQXNzZXRJZAUAAAALb3V0THBBbW91bnQGCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgUAAAALb3V0THBBbW91bnQFAAAACWxwQXNzZXRJZAUAAAADbmlsAAAAAWkBAAAAA2dldAAAAAAEAAAADnBtdEFtb3VudEFzc2V0CQEAAAAFdmFsdWUAAAABCQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAABAAAAApwbXRBc3NldElkCQEAAAAFdmFsdWUAAAABCAUAAAAOcG10QW1vdW50QXNzZXQAAAAHYXNzZXRJZAQAAAAOcG10QXNzZXRBbW91bnQIBQAAAA5wbXRBbW91bnRBc3NldAAAAAZhbW91bnQEAAAAB3Jlc3VsdHMJAQAAABtwcml2YXRlRXN0aW1hdGVHZXRPcGVyYXRpb24AAAADCQACWAAAAAEFAAAACnBtdEFzc2V0SWQFAAAADnBtdEFzc2V0QW1vdW50CQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgQAAAANYW1vdW50QXNzZXRJZAgFAAAAB3Jlc3VsdHMAAAACXzEEAAAADHByaWNlQXNzZXRJZAgFAAAAB3Jlc3VsdHMAAAACXzIEAAAAFWFtb3VudEFzc2V0SW50ZXJuYWxJZAgFAAAAB3Jlc3VsdHMAAAACXzMEAAAAFHByaWNlQXNzZXRJbnRlcm5hbElkCAUAAAAHcmVzdWx0cwAAAAJfNAQAAAAWdXNlckFtb3VudEFzc2V0QmFsYW5jZQgFAAAAB3Jlc3VsdHMAAAACXzUEAAAAEW91dEFtb3VudEFzc2V0QW10CAUAAAAHcmVzdWx0cwAAAAJfNgQAAAAVdXNlclByaWNlQXNzZXRCYWxhbmNlCAUAAAAHcmVzdWx0cwAAAAJfNwQAAAAQb3V0UHJpY2VBc3NldEFtdAgFAAAAB3Jlc3VsdHMAAAACXzgEAAAADXVzZXJMUEJhbGFuY2UIBQAAAAdyZXN1bHRzAAAAAl85BAAAABZwb29sQW1vdW50QXNzZXRCYWxhbmNlCAUAAAAHcmVzdWx0cwAAAANfMTEEAAAAFXBvb2xQcmljZUFzc2V0QmFsYW5jZQgFAAAAB3Jlc3VsdHMAAAADXzEyBAAAAA1wb29sTFBCYWxhbmNlCAUAAAAHcmVzdWx0cwAAAANfMTMEAAAADGN1cnJlbnRQcmljZQgFAAAAB3Jlc3VsdHMAAAADXzE0CQAETAAAAAIJAQAAAARCdXJuAAAAAgUAAAAKcG10QXNzZXRJZAUAAAAOcG10QXNzZXRBbW91bnQJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyBQAAABFvdXRBbW91bnRBc3NldEFtdAkAAlkAAAABBQAAAA1hbW91bnRBc3NldElkCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgUAAAAQb3V0UHJpY2VBc3NldEFtdAkAAlkAAAABBQAAAAxwcmljZUFzc2V0SWQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAFmtleVBvb2xMaXF1aWRpdHlCeVVzZXIAAAADBQAAABVhbW91bnRBc3NldEludGVybmFsSWQFAAAAFHByaWNlQXNzZXRJbnRlcm5hbElkCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgkBAAAAEWRhdGFQb29sTGlxdWlkaXR5AAAAAwkAAGUAAAACBQAAABZ1c2VyQW1vdW50QXNzZXRCYWxhbmNlBQAAABFvdXRBbW91bnRBc3NldEFtdAkAAGUAAAACBQAAABV1c2VyUHJpY2VBc3NldEJhbGFuY2UFAAAAEG91dFByaWNlQXNzZXRBbXQJAABlAAAAAgUAAAANdXNlckxQQmFsYW5jZQUAAAAOcG10QXNzZXRBbW91bnQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAEGtleVBvb2xMaXF1aWRpdHkAAAACBQAAABVhbW91bnRBc3NldEludGVybmFsSWQFAAAAFHByaWNlQXNzZXRJbnRlcm5hbElkCQEAAAARZGF0YVBvb2xMaXF1aWRpdHkAAAADCQAAZQAAAAIFAAAAFnBvb2xBbW91bnRBc3NldEJhbGFuY2UFAAAAEW91dEFtb3VudEFzc2V0QW10CQAAZQAAAAIFAAAAFXBvb2xQcmljZUFzc2V0QmFsYW5jZQUAAAAQb3V0UHJpY2VBc3NldEFtdAkAAGUAAAACBQAAAA1wb29sTFBCYWxhbmNlBQAAAA5wbXRBc3NldEFtb3VudAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAASa2V5R2V0QWN0aW9uQnlVc2VyAAAAAgkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIJAAJYAAAAAQgFAAAAAWkAAAANdHJhbnNhY3Rpb25JZAkBAAAAEWRhdGFHZXRBY3Rpb25JbmZvAAAABgUAAAARb3V0QW1vdW50QXNzZXRBbXQFAAAAEG91dFByaWNlQXNzZXRBbXQFAAAADnBtdEFzc2V0QW1vdW50BQAAAAxjdXJyZW50UHJpY2UFAAAABmhlaWdodAgFAAAACWxhc3RCbG9jawAAAAl0aW1lc3RhbXAJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAADGtleVByaWNlTGFzdAAAAAAJAAEsAAAAAgIAAAAEJXNfXwkAAaQAAAABBQAAAAxjdXJyZW50UHJpY2UJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAD2tleVByaWNlSGlzdG9yeQAAAAIFAAAABmhlaWdodAgFAAAACWxhc3RCbG9jawAAAAl0aW1lc3RhbXAJAAEsAAAAAgIAAAAEJXNfXwkAAaQAAAABBQAAAAxjdXJyZW50UHJpY2UFAAAAA25pbAAAAAFpAQAAAAhhY3RpdmF0ZQAAAAUAAAAOYW1vdW50QXNzZXRTdHIAAAANcHJpY2VBc3NldFN0cgAAAAtscEFzc2V0TmFtZQAAAAxscEFzc2V0RGVzY3IAAAAKcG9vbFdlaWdodAMJAQAAAAIhPQAAAAIIBQAAAAFpAAAAD2NhbGxlclB1YmxpY0tleQUAAAAQZmFjdG9yeVB1YmxpY0tleQkAAAIAAAABAgAAABJwZXJtaXNzaW9ucyBkZW5pZWQEAAAADWFtb3VudEFzc2V0SWQJAAJZAAAAAQUAAAAOYW1vdW50QXNzZXRTdHIEAAAAE2Ftb3VudEFzc2V0RGVjaW1hbHMICQEAAAAFdmFsdWUAAAABCQAD7AAAAAEFAAAADWFtb3VudEFzc2V0SWQAAAAIZGVjaW1hbHMEAAAADHByaWNlQXNzZXRJZAkAAlkAAAABBQAAAA1wcmljZUFzc2V0U3RyBAAAABJwcmljZUFzc2V0RGVjaW1hbHMICQEAAAAFdmFsdWUAAAABCQAD7AAAAAEFAAAADHByaWNlQXNzZXRJZAAAAAhkZWNpbWFscwQAAAASbHBBc3NldElzc3VlQWN0aW9uCQAEQgAAAAUFAAAAC2xwQXNzZXROYW1lBQAAAAxscEFzc2V0RGVzY3IAAAAAAAAAAAEAAAAAAAAAAAgGBAAAAAlscEFzc2V0SWQJAAQ4AAAAAQUAAAASbHBBc3NldElzc3VlQWN0aW9uBAAAABFscEFzc2V0SWRBc1N0cmluZwkAAlgAAAABBQAAAAlscEFzc2V0SWQJAAUUAAAAAgkABEwAAAACBQAAABJscEFzc2V0SXNzdWVBY3Rpb24JAARMAAAAAgkBAAAABEJ1cm4AAAACBQAAAAlscEFzc2V0SWQAAAAAAAAAAAEFAAAAA25pbAUAAAARbHBBc3NldElkQXNTdHJpbmcAAAABaQEAAAAGbWFuYWdlAAAAAQAAAAZzdGF0dXMFAAAAA25pbAAAAAEAAAACdHgBAAAABnZlcmlmeQAAAAAJAAH0AAAAAwgFAAAAAnR4AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAACdHgAAAAGcHJvb2ZzAAAAAAAAAAAACAUAAAACdHgAAAAPc2VuZGVyUHVibGljS2V5fZgPyA==", "height": 1655236, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: C2M94ozKw4FkZ1TAcC64wzzL8x9BR5wFSHb3cdXhmCDr Next: 4b3T4d8hWJ4xkeHh26q4q8vYuV1A4Zjip3FwwoXpiZKj Diff:
OldNewDifferences
7979 let T = getString(z(R, S))
8080 if (!(isDefined(T)))
8181 then ["", "0", "0", "0"]
82+ else split(value(T), c)
83+ }
84+
85+
86+func U (R,S,D) = {
87+ let T = getString(C(R, S, D))
88+ if (!(isDefined(T)))
89+ then ["", "0", "0", "0", "0"]
90+ else split(value(T), c)
91+ }
92+
93+
94+func V (W,X,Y) = makeString(["%d%d%d", toString(W), toString(X), toString(Y)], c)
95+
96+
97+func Z (aa,ab,ac,ad,ae,af,ag) = makeString(["%d%d%d%d%d%d%d", toString(aa), toString(ab), toString(ac), toString(ad), toString(ae), toString(af), toString(ag)], c)
98+
99+
100+func ah (ai,aj,ak,ad,af,ag) = makeString(["%d%d%d%d%d%d", toString(ai), toString(aj), toString(ak), toString(ad), toString(af), toString(ag)], c)
101+
102+
103+func al (W,X,Y,D) = makeString(["%d%d%d", toString(W), toString(X), toString(Y)], c)
104+
105+
106+func am () = toBase64String(value(scriptHash(this)))
107+
108+
109+func an (ao,ap) = {
110+ let aq = pow(10, 0, (a - ao), 0, 0, DOWN)
111+ $Tuple2((ap * aq), aq)
112+ }
113+
114+
115+func ar (as,at,au,av) = {
116+ let aw = an(as, au)._1
117+ let ax = an(at, av)._1
118+ fraction(ax, b, aw)
119+ }
120+
121+
122+func ay () = {
123+ let az = M()
124+ let aA = fromBase58String(az[k])
125+ let aB = az[l]
126+ let aC = az[m]
127+ let R = az[p]
128+ let S = az[q]
129+ let as = parseIntValue(az[n])
130+ let at = parseIntValue(az[o])
131+ let aD = Q(R, S)
132+ let aE = parseIntValue(aD[s])
133+ let aF = parseIntValue(aD[t])
134+ let aG = parseIntValue(aD[u])
135+ let aw = an(as, aE)._1
136+ let ax = an(at, aF)._1
137+ let aH = fraction(aw, (1 * b), aG)
138+ let aI = fraction(ax, (1 * b), aG)
139+ let aJ = ar(as, at, aE, aF)
140+[aE, aF, aG, aJ, aH, aI]
141+ }
142+
143+
144+func aK (aL,aM,D) = {
145+ let aN = M()
146+ let aA = aN[k]
147+ let aB = aN[l]
148+ let aC = aN[m]
149+ let R = aN[p]
150+ let S = aN[q]
151+ let as = parseIntValue(aN[n])
152+ let at = parseIntValue(aN[o])
153+ let aO = U(R, S, D)
154+ let aP = parseIntValue(aO[u])
155+ let aQ = parseIntValue(aO[s])
156+ let aR = parseIntValue(aO[t])
157+ let aS = Q(R, S)
158+ let aG = parseIntValue(aS[u])
159+ let aE = parseIntValue(aS[s])
160+ let aF = parseIntValue(aS[t])
161+ if ((aA != aL))
162+ then throw("Invalid asset passed.")
163+ else if ((aM > aP))
164+ then throw("Invalid amount passed. Amount less than available.")
165+ else {
166+ let aw = an(as, aE)._1
167+ let ax = an(at, aF)._1
168+ let ai = fraction(aw, aM, aG)
169+ let aj = fraction(ax, aM, aG)
170+ let aJ = fraction(ax, b, aw)
171+ $Tuple14(aB, aC, R, S, aQ, ai, aR, aj, ai, aP, aE, aF, aG, aJ)
172+ }
173+ }
174+
175+
176+func aT (aU,aa,aV,ab,aW,D) = {
177+ let az = M()
178+ let aA = fromBase58String(az[k])
179+ let aB = az[l]
180+ let aC = az[m]
181+ let R = az[p]
182+ let S = az[q]
183+ let as = parseIntValue(az[n])
184+ let at = parseIntValue(az[o])
185+ let aD = Q(R, S)
186+ let aE = parseIntValue(aD[s])
187+ let aF = parseIntValue(aD[t])
188+ let aG = parseIntValue(aD[u])
189+ let aX = U(R, S, D)
190+ let aQ = parseIntValue(aX[s])
191+ let aR = parseIntValue(aX[t])
192+ let aP = parseIntValue(aX[u])
193+ if (if ((aB != aV))
194+ then true
195+ else (aC != aW))
196+ then throw("Invalid amount or price asset passed.")
82197 else {
83- let U = split(value(T), c)
84- U
198+ let aY = an(as, aa)
199+ let aZ = an(at, ab)
200+ let ba = aY._1
201+ let bb = aZ._1
202+ let bc = fraction(bb, b, ba)
203+ let aw = (aE * aY._2)
204+ let ax = (aF * aZ._2)
205+ let bd = if ((aG == 0))
206+ then 0
207+ else fraction(ax, b, aw)
208+ let be = if ((aG == 0))
209+ then {
210+ let bf = pow(ba, 0, 5, 1, 0, DOWN)
211+ let bg = pow(bb, 0, 5, 1, 0, DOWN)
212+ (bf * bg)
213+ }
214+ else {
215+ let bh = fraction(bd, 100, bc)
216+ if ((bh > aU))
217+ then throw(((("Price slippage " + toString(bh)) + " exceeded the passed limit of ") + toString(aU)))
218+ else {
219+ let bi = fraction(aG, ba, aw)
220+ let bj = fraction(aG, bb, ax)
221+ if ((bj > bi))
222+ then bi
223+ else bj
224+ }
225+ }
226+ $Tuple11(be, bd, aQ, aR, aP, aE, aF, aG, R, S, aA)
85227 }
86228 }
87229
88230
89-func V (R,S,D) = {
90- let T = getString(C(R, S, D))
91- if (!(isDefined(T)))
92- then ["", "0", "0", "0", "0"]
231+@Callable(bk)
232+func put (aU) = {
233+ let bl = value(bk.payments[0])
234+ let aa = bl.amount
235+ let aV = value(bl.assetId)
236+ let bm = value(bk.payments[1])
237+ let ab = bm.amount
238+ let aW = value(bm.assetId)
239+ if (true)
240+ then throw(toBase58String(aV))
93241 else {
94- let U = split(value(T), c)
95- U
242+ let bn = aT(aU, aa, toBase58String(aV), ab, toBase58String(aW), toString(bk.caller))
243+ let be = bn._1
244+ let bd = bn._2
245+ let aQ = bn._3
246+ let aR = bn._4
247+ let aP = bn._5
248+ let aE = bn._6
249+ let aF = bn._7
250+ let aG = bn._8
251+ let R = bn._9
252+ let S = bn._10
253+ let aA = bn._11
254+[StringEntry(v(), ("%s__" + toString(bd))), StringEntry(w(height, lastBlock.timestamp), ("%s__" + toString(bd))), StringEntry(E(toString(bk.caller), toBase58String(bk.transactionId)), Z(aa, ab, be, bd, aU, height, lastBlock.timestamp)), StringEntry(C(R, S, toString(bk.caller)), V((aQ + aa), (aR + ab), (aP + be))), StringEntry(z(R, S), V((aE + aa), (aF + ab), (aG + be))), Reissue(aA, be, true), ScriptTransfer(bk.caller, be, aA)]
96255 }
97256 }
98257
99258
100-func W (X,Y,Z) = makeString(["%d%d%d", toString(X), toString(Y), toString(Z)], c)
101259
102-
103-func aa (ab,ac,ad,ae,af,ag,ah) = makeString(["%d%d%d%d%d%d%d", toString(ab), toString(ac), toString(ad), toString(ae), toString(af), toString(ag), toString(ah)], c)
104-
105-
106-func ai (aj,ak,al,ae,ag,ah) = makeString(["%d%d%d%d%d%d", toString(aj), toString(ak), toString(al), toString(ae), toString(ag), toString(ah)], c)
107-
108-
109-func am (X,Y,Z,D) = makeString(["%d%d%d", toString(X), toString(Y), toString(Z)], c)
110-
111-
112-func an () = {
113- let ao = toBase64String(value(scriptHash(this)))
114- ao
115- }
116-
117-
118-func ap (aq,ar) = {
119- let as = pow(10, 0, (a - aq), 0, 0, DOWN)
120- $Tuple2((ar * as), as)
121- }
122-
123-
124-func at (au,av,aw,ax) = {
125- let ay = ap(au, aw)._1
126- let az = ap(av, ax)._1
127- fraction(az, b, ay)
128- }
129-
130-
131-func aA () = {
132- let aB = M()
133- let aC = fromBase58String(aB[k])
134- let aD = aB[l]
135- let aE = aB[m]
136- let R = aB[p]
137- let S = aB[q]
138- let au = parseIntValue(aB[n])
139- let av = parseIntValue(aB[o])
140- let aF = Q(R, S)
141- let aG = parseIntValue(aF[s])
142- let aH = parseIntValue(aF[t])
143- let aI = parseIntValue(aF[u])
144- let ay = ap(au, aG)._1
145- let az = ap(av, aH)._1
146- let aJ = fraction(ay, (1 * b), aI)
147- let aK = fraction(az, (1 * b), aI)
148- let aL = at(au, av, aG, aH)
149-[aG, aH, aI, aL, aJ, aK]
150- }
151-
152-
153-func aM (aN,aO,D) = {
154- let aP = M()
155- let aC = aP[k]
156- let aD = aP[l]
157- let aE = aP[m]
158- let R = aP[p]
159- let S = aP[q]
160- let au = parseIntValue(aP[n])
161- let av = parseIntValue(aP[o])
162- let aQ = V(R, S, D)
163- let aR = parseIntValue(aQ[u])
164- let aS = parseIntValue(aQ[s])
165- let aT = parseIntValue(aQ[t])
166- let aU = Q(R, S)
167- let aI = parseIntValue(aU[u])
168- let aG = parseIntValue(aU[s])
169- let aH = parseIntValue(aU[t])
170- if ((aC != aN))
171- then throw("Invalid asset passed.")
172- else if ((aO > aR))
173- then throw("Invalid amount passed. Amount less than available.")
174- else {
175- let ay = ap(au, aG)._1
176- let az = ap(av, aH)._1
177- let aj = fraction(ay, aO, aI)
178- let ak = fraction(az, aO, aI)
179- let aL = fraction(az, b, ay)
180- $Tuple14(aD, aE, R, S, aS, aj, aT, ak, aj, aR, aG, aH, aI, aL)
181- }
182- }
183-
184-
185-func aV (aW,ab,aX,ac,aY,D) = {
186- let aB = M()
187- let aC = fromBase58String(aB[k])
188- let aD = aB[l]
189- let aE = aB[m]
190- let R = aB[p]
191- let S = aB[q]
192- let au = parseIntValue(aB[n])
193- let av = parseIntValue(aB[o])
194- let aF = Q(R, S)
195- let aG = parseIntValue(aF[s])
196- let aH = parseIntValue(aF[t])
197- let aI = parseIntValue(aF[u])
198- let aZ = V(R, S, D)
199- let aS = parseIntValue(aZ[s])
200- let aT = parseIntValue(aZ[t])
201- let aR = parseIntValue(aZ[u])
202- if (if ((aD != aX))
203- then true
204- else (aE != aY))
205- then throw("Invalid amount or price asset passed.")
206- else {
207- let ba = ap(au, ab)
208- let bb = ap(av, ac)
209- let bc = ba._1
210- let bd = bb._1
211- let be = fraction(bd, b, bc)
212- let ay = (aG * ba._2)
213- let az = (aH * bb._2)
214- let bf = if ((aI == 0))
215- then 0
216- else fraction(az, b, ay)
217- let bg = if ((aI == 0))
218- then {
219- let bh = pow(bc, 0, 5, 1, 0, DOWN)
220- let bi = pow(bd, 0, 5, 1, 0, DOWN)
221- (bh * bi)
222- }
223- else {
224- let bj = fraction(bf, 100, be)
225- if ((bj > aW))
226- then throw(((("Price slippage " + toString(bj)) + " exceeded the passed limit of ") + toString(aW)))
227- else {
228- let bk = fraction(aI, bc, ay)
229- let bl = fraction(aI, bd, az)
230- if ((bl > bk))
231- then bk
232- else bl
233- }
234- }
235- $Tuple11(bg, bf, aS, aT, aR, aG, aH, aI, R, S, aC)
236- }
237- }
238-
239-
240-@Callable(bm)
241-func put (aW) = {
242- let bn = value(bm.payments[0])
243- let ab = bn.amount
244- let aX = value(bn.assetId)
245- let bo = value(bm.payments[1])
246- let ac = bo.amount
247- let aY = value(bo.assetId)
248- let bp = aV(aW, ab, toBase58String(aX), ac, toBase58String(aY), toString(bm.caller))
249- let bg = bp._1
250- let bf = bp._2
251- let aS = bp._3
252- let aT = bp._4
253- let aR = bp._5
254- let aG = bp._6
255- let aH = bp._7
256- let aI = bp._8
257- let R = bp._9
258- let S = bp._10
259- let aC = bp._11
260-[StringEntry(v(), ("%s__" + toString(bf))), StringEntry(w(height, lastBlock.timestamp), ("%s__" + toString(bf))), StringEntry(E(toString(bm.caller), toBase58String(bm.transactionId)), aa(ab, ac, bg, bf, aW, height, lastBlock.timestamp)), StringEntry(C(R, S, toString(bm.caller)), W((aS + ab), (aT + ac), (aR + bg))), StringEntry(z(R, S), W((aG + ab), (aH + ac), (aI + bg))), Reissue(aC, bg, true), ScriptTransfer(bm.caller, bg, aC)]
260+@Callable(bk)
261+func get () = {
262+ let bl = value(bk.payments[0])
263+ let bo = value(bl.assetId)
264+ let bp = bl.amount
265+ let bq = aK(toBase58String(bo), bp, toString(bk.caller))
266+ let aB = bq._1
267+ let aC = bq._2
268+ let R = bq._3
269+ let S = bq._4
270+ let aQ = bq._5
271+ let ai = bq._6
272+ let aR = bq._7
273+ let aj = bq._8
274+ let aP = bq._9
275+ let aE = bq._11
276+ let aF = bq._12
277+ let aG = bq._13
278+ let aJ = bq._14
279+[Burn(bo, bp), ScriptTransfer(bk.caller, ai, fromBase58String(aB)), ScriptTransfer(bk.caller, aj, fromBase58String(aC)), StringEntry(C(R, S, toString(bk.caller)), V((aQ - ai), (aR - aj), (aP - bp))), StringEntry(z(R, S), V((aE - ai), (aF - aj), (aG - bp))), StringEntry(G(toString(bk.caller), toBase58String(bk.transactionId)), ah(ai, aj, bp, aJ, height, lastBlock.timestamp)), StringEntry(v(), ("%s__" + toString(aJ))), StringEntry(w(height, lastBlock.timestamp), ("%s__" + toString(aJ)))]
261280 }
262281
263282
264283
265-@Callable(bm)
266-func get () = {
267- let bn = value(bm.payments[0])
268- let bq = value(bn.assetId)
269- let br = bn.amount
270- let bs = aM(toBase58String(bq), br, toString(bm.caller))
271- let aD = bs._1
272- let aE = bs._2
273- let R = bs._3
274- let S = bs._4
275- let aS = bs._5
276- let aj = bs._6
277- let aT = bs._7
278- let ak = bs._8
279- let aR = bs._9
280- let aG = bs._11
281- let aH = bs._12
282- let aI = bs._13
283- let aL = bs._14
284-[Burn(bq, br), ScriptTransfer(bm.caller, aj, fromBase58String(aD)), ScriptTransfer(bm.caller, ak, fromBase58String(aE)), StringEntry(C(R, S, toString(bm.caller)), W((aS - aj), (aT - ak), (aR - br))), StringEntry(z(R, S), W((aG - aj), (aH - ak), (aI - br))), StringEntry(G(toString(bm.caller), toBase58String(bm.transactionId)), ai(aj, ak, br, aL, height, lastBlock.timestamp)), StringEntry(v(), ("%s__" + toString(aL))), StringEntry(w(height, lastBlock.timestamp), ("%s__" + toString(aL)))]
285- }
286-
287-
288-
289-@Callable(bm)
290-func activate (bt,bu,bv,bw,bx) = if ((bm.callerPublicKey != h))
284+@Callable(bk)
285+func activate (br,bs,bt,bu,bv) = if ((bk.callerPublicKey != h))
291286 then throw("permissions denied")
292287 else {
293- let aD = fromBase58String(bt)
294- let by = value(assetInfo(aD)).decimals
295- let aE = fromBase58String(bu)
296- let av = value(assetInfo(aE)).decimals
297- let bz = Issue(bv, bw, 1, 8, true)
298- let aC = calculateAssetId(bz)
299- let bA = toBase58String(aC)
300- $Tuple2([bz, Burn(aC, 1)], bA)
288+ let aB = fromBase58String(br)
289+ let bw = value(assetInfo(aB)).decimals
290+ let aC = fromBase58String(bs)
291+ let at = value(assetInfo(aC)).decimals
292+ let bx = Issue(bt, bu, 1, 8, true)
293+ let aA = calculateAssetId(bx)
294+ let by = toBase58String(aA)
295+ $Tuple2([bx, Burn(aA, 1)], by)
301296 }
302297
303298
304299
305-@Callable(bm)
306-func manage (bB) = nil
300+@Callable(bk)
301+func manage (bz) = nil
307302
308303
309-@Verifier(bC)
310-func bD () = sigVerify(bC.bodyBytes, bC.proofs[0], bC.senderPublicKey)
304+@Verifier(bA)
305+func bB () = sigVerify(bA.bodyBytes, bA.proofs[0], bA.senderPublicKey)
311306
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 8
55
66 let b = ((100 * 1000) * 1000)
77
88 let c = "__"
99
1010 let d = 1
1111
1212 let e = 2
1313
1414 let f = 3
1515
1616 let g = 4
1717
1818 let h = fromBase58String("6pJkrwfWyhZjm3LoQWRjjNVaLt5CQzqfggzXyqr7nrwA")
1919
2020 let i = 1
2121
2222 let j = 2
2323
2424 let k = 3
2525
2626 let l = 4
2727
2828 let m = 5
2929
3030 let n = 6
3131
3232 let o = 7
3333
3434 let p = 8
3535
3636 let q = 9
3737
3838 let r = 10
3939
4040 let s = 1
4141
4242 let t = 2
4343
4444 let u = 3
4545
4646 func v () = "%s%s__price__last"
4747
4848
4949 func w (x,y) = makeString(["%s%s%d%d__price__history", toString(x), toString(y)], c)
5050
5151
5252 func z (A,B) = (((("%d%d%s__" + A) + "__") + B) + "__locked")
5353
5454
5555 func C (A,B,D) = (((((("%d%d%s%s__" + A) + "__") + B) + "__") + D) + "__locked")
5656
5757
5858 func E (D,F) = ((("%s%s%s__P__" + D) + "__") + F)
5959
6060
6161 func G (D,F) = ((("%s%s%s__G__" + D) + "__") + F)
6262
6363
6464 func H (I) = (("%s%s%s__" + I) + "__mappings__poolContract2LpAsset")
6565
6666
6767 func J (K,L) = (((("%d%d%s__" + K) + "__") + L) + "__config")
6868
6969
7070 func M () = {
7171 let N = addressFromPublicKey(h)
7272 let O = split(valueOrErrorMessage(getString(N, H(toString(this))), "No factory config found for pool address."), c)
7373 let P = split(valueOrErrorMessage(getString(N, J(O[1], O[2])), "No factory config found for pool assets."), c)
7474 P
7575 }
7676
7777
7878 func Q (R,S) = {
7979 let T = getString(z(R, S))
8080 if (!(isDefined(T)))
8181 then ["", "0", "0", "0"]
82+ else split(value(T), c)
83+ }
84+
85+
86+func U (R,S,D) = {
87+ let T = getString(C(R, S, D))
88+ if (!(isDefined(T)))
89+ then ["", "0", "0", "0", "0"]
90+ else split(value(T), c)
91+ }
92+
93+
94+func V (W,X,Y) = makeString(["%d%d%d", toString(W), toString(X), toString(Y)], c)
95+
96+
97+func Z (aa,ab,ac,ad,ae,af,ag) = makeString(["%d%d%d%d%d%d%d", toString(aa), toString(ab), toString(ac), toString(ad), toString(ae), toString(af), toString(ag)], c)
98+
99+
100+func ah (ai,aj,ak,ad,af,ag) = makeString(["%d%d%d%d%d%d", toString(ai), toString(aj), toString(ak), toString(ad), toString(af), toString(ag)], c)
101+
102+
103+func al (W,X,Y,D) = makeString(["%d%d%d", toString(W), toString(X), toString(Y)], c)
104+
105+
106+func am () = toBase64String(value(scriptHash(this)))
107+
108+
109+func an (ao,ap) = {
110+ let aq = pow(10, 0, (a - ao), 0, 0, DOWN)
111+ $Tuple2((ap * aq), aq)
112+ }
113+
114+
115+func ar (as,at,au,av) = {
116+ let aw = an(as, au)._1
117+ let ax = an(at, av)._1
118+ fraction(ax, b, aw)
119+ }
120+
121+
122+func ay () = {
123+ let az = M()
124+ let aA = fromBase58String(az[k])
125+ let aB = az[l]
126+ let aC = az[m]
127+ let R = az[p]
128+ let S = az[q]
129+ let as = parseIntValue(az[n])
130+ let at = parseIntValue(az[o])
131+ let aD = Q(R, S)
132+ let aE = parseIntValue(aD[s])
133+ let aF = parseIntValue(aD[t])
134+ let aG = parseIntValue(aD[u])
135+ let aw = an(as, aE)._1
136+ let ax = an(at, aF)._1
137+ let aH = fraction(aw, (1 * b), aG)
138+ let aI = fraction(ax, (1 * b), aG)
139+ let aJ = ar(as, at, aE, aF)
140+[aE, aF, aG, aJ, aH, aI]
141+ }
142+
143+
144+func aK (aL,aM,D) = {
145+ let aN = M()
146+ let aA = aN[k]
147+ let aB = aN[l]
148+ let aC = aN[m]
149+ let R = aN[p]
150+ let S = aN[q]
151+ let as = parseIntValue(aN[n])
152+ let at = parseIntValue(aN[o])
153+ let aO = U(R, S, D)
154+ let aP = parseIntValue(aO[u])
155+ let aQ = parseIntValue(aO[s])
156+ let aR = parseIntValue(aO[t])
157+ let aS = Q(R, S)
158+ let aG = parseIntValue(aS[u])
159+ let aE = parseIntValue(aS[s])
160+ let aF = parseIntValue(aS[t])
161+ if ((aA != aL))
162+ then throw("Invalid asset passed.")
163+ else if ((aM > aP))
164+ then throw("Invalid amount passed. Amount less than available.")
165+ else {
166+ let aw = an(as, aE)._1
167+ let ax = an(at, aF)._1
168+ let ai = fraction(aw, aM, aG)
169+ let aj = fraction(ax, aM, aG)
170+ let aJ = fraction(ax, b, aw)
171+ $Tuple14(aB, aC, R, S, aQ, ai, aR, aj, ai, aP, aE, aF, aG, aJ)
172+ }
173+ }
174+
175+
176+func aT (aU,aa,aV,ab,aW,D) = {
177+ let az = M()
178+ let aA = fromBase58String(az[k])
179+ let aB = az[l]
180+ let aC = az[m]
181+ let R = az[p]
182+ let S = az[q]
183+ let as = parseIntValue(az[n])
184+ let at = parseIntValue(az[o])
185+ let aD = Q(R, S)
186+ let aE = parseIntValue(aD[s])
187+ let aF = parseIntValue(aD[t])
188+ let aG = parseIntValue(aD[u])
189+ let aX = U(R, S, D)
190+ let aQ = parseIntValue(aX[s])
191+ let aR = parseIntValue(aX[t])
192+ let aP = parseIntValue(aX[u])
193+ if (if ((aB != aV))
194+ then true
195+ else (aC != aW))
196+ then throw("Invalid amount or price asset passed.")
82197 else {
83- let U = split(value(T), c)
84- U
198+ let aY = an(as, aa)
199+ let aZ = an(at, ab)
200+ let ba = aY._1
201+ let bb = aZ._1
202+ let bc = fraction(bb, b, ba)
203+ let aw = (aE * aY._2)
204+ let ax = (aF * aZ._2)
205+ let bd = if ((aG == 0))
206+ then 0
207+ else fraction(ax, b, aw)
208+ let be = if ((aG == 0))
209+ then {
210+ let bf = pow(ba, 0, 5, 1, 0, DOWN)
211+ let bg = pow(bb, 0, 5, 1, 0, DOWN)
212+ (bf * bg)
213+ }
214+ else {
215+ let bh = fraction(bd, 100, bc)
216+ if ((bh > aU))
217+ then throw(((("Price slippage " + toString(bh)) + " exceeded the passed limit of ") + toString(aU)))
218+ else {
219+ let bi = fraction(aG, ba, aw)
220+ let bj = fraction(aG, bb, ax)
221+ if ((bj > bi))
222+ then bi
223+ else bj
224+ }
225+ }
226+ $Tuple11(be, bd, aQ, aR, aP, aE, aF, aG, R, S, aA)
85227 }
86228 }
87229
88230
89-func V (R,S,D) = {
90- let T = getString(C(R, S, D))
91- if (!(isDefined(T)))
92- then ["", "0", "0", "0", "0"]
231+@Callable(bk)
232+func put (aU) = {
233+ let bl = value(bk.payments[0])
234+ let aa = bl.amount
235+ let aV = value(bl.assetId)
236+ let bm = value(bk.payments[1])
237+ let ab = bm.amount
238+ let aW = value(bm.assetId)
239+ if (true)
240+ then throw(toBase58String(aV))
93241 else {
94- let U = split(value(T), c)
95- U
242+ let bn = aT(aU, aa, toBase58String(aV), ab, toBase58String(aW), toString(bk.caller))
243+ let be = bn._1
244+ let bd = bn._2
245+ let aQ = bn._3
246+ let aR = bn._4
247+ let aP = bn._5
248+ let aE = bn._6
249+ let aF = bn._7
250+ let aG = bn._8
251+ let R = bn._9
252+ let S = bn._10
253+ let aA = bn._11
254+[StringEntry(v(), ("%s__" + toString(bd))), StringEntry(w(height, lastBlock.timestamp), ("%s__" + toString(bd))), StringEntry(E(toString(bk.caller), toBase58String(bk.transactionId)), Z(aa, ab, be, bd, aU, height, lastBlock.timestamp)), StringEntry(C(R, S, toString(bk.caller)), V((aQ + aa), (aR + ab), (aP + be))), StringEntry(z(R, S), V((aE + aa), (aF + ab), (aG + be))), Reissue(aA, be, true), ScriptTransfer(bk.caller, be, aA)]
96255 }
97256 }
98257
99258
100-func W (X,Y,Z) = makeString(["%d%d%d", toString(X), toString(Y), toString(Z)], c)
101259
102-
103-func aa (ab,ac,ad,ae,af,ag,ah) = makeString(["%d%d%d%d%d%d%d", toString(ab), toString(ac), toString(ad), toString(ae), toString(af), toString(ag), toString(ah)], c)
104-
105-
106-func ai (aj,ak,al,ae,ag,ah) = makeString(["%d%d%d%d%d%d", toString(aj), toString(ak), toString(al), toString(ae), toString(ag), toString(ah)], c)
107-
108-
109-func am (X,Y,Z,D) = makeString(["%d%d%d", toString(X), toString(Y), toString(Z)], c)
110-
111-
112-func an () = {
113- let ao = toBase64String(value(scriptHash(this)))
114- ao
115- }
116-
117-
118-func ap (aq,ar) = {
119- let as = pow(10, 0, (a - aq), 0, 0, DOWN)
120- $Tuple2((ar * as), as)
121- }
122-
123-
124-func at (au,av,aw,ax) = {
125- let ay = ap(au, aw)._1
126- let az = ap(av, ax)._1
127- fraction(az, b, ay)
128- }
129-
130-
131-func aA () = {
132- let aB = M()
133- let aC = fromBase58String(aB[k])
134- let aD = aB[l]
135- let aE = aB[m]
136- let R = aB[p]
137- let S = aB[q]
138- let au = parseIntValue(aB[n])
139- let av = parseIntValue(aB[o])
140- let aF = Q(R, S)
141- let aG = parseIntValue(aF[s])
142- let aH = parseIntValue(aF[t])
143- let aI = parseIntValue(aF[u])
144- let ay = ap(au, aG)._1
145- let az = ap(av, aH)._1
146- let aJ = fraction(ay, (1 * b), aI)
147- let aK = fraction(az, (1 * b), aI)
148- let aL = at(au, av, aG, aH)
149-[aG, aH, aI, aL, aJ, aK]
150- }
151-
152-
153-func aM (aN,aO,D) = {
154- let aP = M()
155- let aC = aP[k]
156- let aD = aP[l]
157- let aE = aP[m]
158- let R = aP[p]
159- let S = aP[q]
160- let au = parseIntValue(aP[n])
161- let av = parseIntValue(aP[o])
162- let aQ = V(R, S, D)
163- let aR = parseIntValue(aQ[u])
164- let aS = parseIntValue(aQ[s])
165- let aT = parseIntValue(aQ[t])
166- let aU = Q(R, S)
167- let aI = parseIntValue(aU[u])
168- let aG = parseIntValue(aU[s])
169- let aH = parseIntValue(aU[t])
170- if ((aC != aN))
171- then throw("Invalid asset passed.")
172- else if ((aO > aR))
173- then throw("Invalid amount passed. Amount less than available.")
174- else {
175- let ay = ap(au, aG)._1
176- let az = ap(av, aH)._1
177- let aj = fraction(ay, aO, aI)
178- let ak = fraction(az, aO, aI)
179- let aL = fraction(az, b, ay)
180- $Tuple14(aD, aE, R, S, aS, aj, aT, ak, aj, aR, aG, aH, aI, aL)
181- }
182- }
183-
184-
185-func aV (aW,ab,aX,ac,aY,D) = {
186- let aB = M()
187- let aC = fromBase58String(aB[k])
188- let aD = aB[l]
189- let aE = aB[m]
190- let R = aB[p]
191- let S = aB[q]
192- let au = parseIntValue(aB[n])
193- let av = parseIntValue(aB[o])
194- let aF = Q(R, S)
195- let aG = parseIntValue(aF[s])
196- let aH = parseIntValue(aF[t])
197- let aI = parseIntValue(aF[u])
198- let aZ = V(R, S, D)
199- let aS = parseIntValue(aZ[s])
200- let aT = parseIntValue(aZ[t])
201- let aR = parseIntValue(aZ[u])
202- if (if ((aD != aX))
203- then true
204- else (aE != aY))
205- then throw("Invalid amount or price asset passed.")
206- else {
207- let ba = ap(au, ab)
208- let bb = ap(av, ac)
209- let bc = ba._1
210- let bd = bb._1
211- let be = fraction(bd, b, bc)
212- let ay = (aG * ba._2)
213- let az = (aH * bb._2)
214- let bf = if ((aI == 0))
215- then 0
216- else fraction(az, b, ay)
217- let bg = if ((aI == 0))
218- then {
219- let bh = pow(bc, 0, 5, 1, 0, DOWN)
220- let bi = pow(bd, 0, 5, 1, 0, DOWN)
221- (bh * bi)
222- }
223- else {
224- let bj = fraction(bf, 100, be)
225- if ((bj > aW))
226- then throw(((("Price slippage " + toString(bj)) + " exceeded the passed limit of ") + toString(aW)))
227- else {
228- let bk = fraction(aI, bc, ay)
229- let bl = fraction(aI, bd, az)
230- if ((bl > bk))
231- then bk
232- else bl
233- }
234- }
235- $Tuple11(bg, bf, aS, aT, aR, aG, aH, aI, R, S, aC)
236- }
237- }
238-
239-
240-@Callable(bm)
241-func put (aW) = {
242- let bn = value(bm.payments[0])
243- let ab = bn.amount
244- let aX = value(bn.assetId)
245- let bo = value(bm.payments[1])
246- let ac = bo.amount
247- let aY = value(bo.assetId)
248- let bp = aV(aW, ab, toBase58String(aX), ac, toBase58String(aY), toString(bm.caller))
249- let bg = bp._1
250- let bf = bp._2
251- let aS = bp._3
252- let aT = bp._4
253- let aR = bp._5
254- let aG = bp._6
255- let aH = bp._7
256- let aI = bp._8
257- let R = bp._9
258- let S = bp._10
259- let aC = bp._11
260-[StringEntry(v(), ("%s__" + toString(bf))), StringEntry(w(height, lastBlock.timestamp), ("%s__" + toString(bf))), StringEntry(E(toString(bm.caller), toBase58String(bm.transactionId)), aa(ab, ac, bg, bf, aW, height, lastBlock.timestamp)), StringEntry(C(R, S, toString(bm.caller)), W((aS + ab), (aT + ac), (aR + bg))), StringEntry(z(R, S), W((aG + ab), (aH + ac), (aI + bg))), Reissue(aC, bg, true), ScriptTransfer(bm.caller, bg, aC)]
260+@Callable(bk)
261+func get () = {
262+ let bl = value(bk.payments[0])
263+ let bo = value(bl.assetId)
264+ let bp = bl.amount
265+ let bq = aK(toBase58String(bo), bp, toString(bk.caller))
266+ let aB = bq._1
267+ let aC = bq._2
268+ let R = bq._3
269+ let S = bq._4
270+ let aQ = bq._5
271+ let ai = bq._6
272+ let aR = bq._7
273+ let aj = bq._8
274+ let aP = bq._9
275+ let aE = bq._11
276+ let aF = bq._12
277+ let aG = bq._13
278+ let aJ = bq._14
279+[Burn(bo, bp), ScriptTransfer(bk.caller, ai, fromBase58String(aB)), ScriptTransfer(bk.caller, aj, fromBase58String(aC)), StringEntry(C(R, S, toString(bk.caller)), V((aQ - ai), (aR - aj), (aP - bp))), StringEntry(z(R, S), V((aE - ai), (aF - aj), (aG - bp))), StringEntry(G(toString(bk.caller), toBase58String(bk.transactionId)), ah(ai, aj, bp, aJ, height, lastBlock.timestamp)), StringEntry(v(), ("%s__" + toString(aJ))), StringEntry(w(height, lastBlock.timestamp), ("%s__" + toString(aJ)))]
261280 }
262281
263282
264283
265-@Callable(bm)
266-func get () = {
267- let bn = value(bm.payments[0])
268- let bq = value(bn.assetId)
269- let br = bn.amount
270- let bs = aM(toBase58String(bq), br, toString(bm.caller))
271- let aD = bs._1
272- let aE = bs._2
273- let R = bs._3
274- let S = bs._4
275- let aS = bs._5
276- let aj = bs._6
277- let aT = bs._7
278- let ak = bs._8
279- let aR = bs._9
280- let aG = bs._11
281- let aH = bs._12
282- let aI = bs._13
283- let aL = bs._14
284-[Burn(bq, br), ScriptTransfer(bm.caller, aj, fromBase58String(aD)), ScriptTransfer(bm.caller, ak, fromBase58String(aE)), StringEntry(C(R, S, toString(bm.caller)), W((aS - aj), (aT - ak), (aR - br))), StringEntry(z(R, S), W((aG - aj), (aH - ak), (aI - br))), StringEntry(G(toString(bm.caller), toBase58String(bm.transactionId)), ai(aj, ak, br, aL, height, lastBlock.timestamp)), StringEntry(v(), ("%s__" + toString(aL))), StringEntry(w(height, lastBlock.timestamp), ("%s__" + toString(aL)))]
285- }
286-
287-
288-
289-@Callable(bm)
290-func activate (bt,bu,bv,bw,bx) = if ((bm.callerPublicKey != h))
284+@Callable(bk)
285+func activate (br,bs,bt,bu,bv) = if ((bk.callerPublicKey != h))
291286 then throw("permissions denied")
292287 else {
293- let aD = fromBase58String(bt)
294- let by = value(assetInfo(aD)).decimals
295- let aE = fromBase58String(bu)
296- let av = value(assetInfo(aE)).decimals
297- let bz = Issue(bv, bw, 1, 8, true)
298- let aC = calculateAssetId(bz)
299- let bA = toBase58String(aC)
300- $Tuple2([bz, Burn(aC, 1)], bA)
288+ let aB = fromBase58String(br)
289+ let bw = value(assetInfo(aB)).decimals
290+ let aC = fromBase58String(bs)
291+ let at = value(assetInfo(aC)).decimals
292+ let bx = Issue(bt, bu, 1, 8, true)
293+ let aA = calculateAssetId(bx)
294+ let by = toBase58String(aA)
295+ $Tuple2([bx, Burn(aA, 1)], by)
301296 }
302297
303298
304299
305-@Callable(bm)
306-func manage (bB) = nil
300+@Callable(bk)
301+func manage (bz) = nil
307302
308303
309-@Verifier(bC)
310-func bD () = sigVerify(bC.bodyBytes, bC.proofs[0], bC.senderPublicKey)
304+@Verifier(bA)
305+func bB () = sigVerify(bA.bodyBytes, bA.proofs[0], bA.senderPublicKey)
311306

github/deemru/w8io/169f3d6 
97.69 ms