tx · 2pezxhxXqaiutKotMk7BpDTLUHisEYrCkkWaExRsRNvv

3PCxhtyhhAe8hHUEkDnJjmpRv891aPVCy7t:  -0.05000000 Waves

2021.10.11 20:47 [2806912] smart account 3PCxhtyhhAe8hHUEkDnJjmpRv891aPVCy7t > SELF 0.00000000 Waves

{ "type": 13, "id": "2pezxhxXqaiutKotMk7BpDTLUHisEYrCkkWaExRsRNvv", "fee": 5000000, "feeAssetId": null, "timestamp": 1633974500517, "version": 2, "chainId": 87, "sender": "3PCxhtyhhAe8hHUEkDnJjmpRv891aPVCy7t", "senderPublicKey": "FztkwTU8VhShVRTxZyHLCi2MXuxhRGALX7tuyGuV95GB", "proofs": [ "2REfGqkuknojFHPPZWKmr6n1UTbR47qEqkiyEKypeXyNvLcYM9woQde9poyN7SSXU95e7FqCCqn4CcnsAHZBRiQp" ], "script": "base64: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JXNfX3ByaWNlQXNzZXQBAAAADGtleUtIaXN0b3JpYwAAAAIAAAABaAAAAAl0aW1lc3RhbXAJAAS5AAAAAgkABEwAAAACAgAAABMlcyVzJWQlZF9fS19oaXN0b3J5CQAETAAAAAIJAAGkAAAAAQUAAAABaAkABEwAAAACCQABpAAAAAEFAAAACXRpbWVzdGFtcAUAAAADbmlsBQAAAANTRVABAAAAEGtleUZhY3RvcnlDb25maWcAAAAAAgAAABElc19fZmFjdG9yeUNvbmZpZwEAAAApa2V5TWFwcGluZ1Bvb2xDb250cmFjdEFkZHJlc3NUb1Bvb2xBc3NldHMAAAABAAAAE3Bvb2xDb250cmFjdEFkZHJlc3MJAAEsAAAAAgkAASwAAAACAgAAAAglcyVzJXNfXwUAAAATcG9vbENvbnRyYWN0QWRkcmVzcwIAAAAgX19tYXBwaW5nc19fcG9vbENvbnRyYWN0MkxwQXNzZXQBAAAADWtleVBvb2xDb25maWcAAAACAAAACWlBbXRBc3NldAAAAAtpUHJpY2VBc3NldAkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAglZCVkJXNfXwUAAAAJaUFtdEFzc2V0AgAAAAJfXwUAAAALaVByaWNlQXNzZXQCAAAACF9fY29uZmlnAQAAAB9rZXlNYXBwaW5nc0Jhc2VBc3NldDJpbnRlcm5hbElkAAAAAQAAAAxiYXNlQXNzZXRTdHIJAAEsAAAAAgIAAAAoJXMlcyVzX19tYXBwaW5nc19fYmFzZUFzc2V0MmludGVybmFsSWRfXwUAAAAMYmFzZUFzc2V0U3RyAQAAABNrZXlBbGxQb29sc1NodXRkb3duAAAAAAIAAAAMJXNfX3NodXRkb3duAQAAAA1rZXlQb29sV2VpZ2h0AAAAAQAAAA9jb250cmFjdEFkZHJlc3MJAAEsAAAAAgIAAAASJXMlc19fcG9vbFdlaWdodF9fBQAAAA9jb250cmFjdEFkZHJlc3MBAAAAD2dldFN0cmluZ09yRmFpbAAAAAIAAAAHYWRkcmVzcwAAAANrZXkJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABB0AAAACBQAAAAdhZGRyZXNzBQAAAANrZXkJAAS5AAAAAgkABEwAAAACAgAAAAptYW5kYXRvcnkgCQAETAAAAAIJAAQlAAAAAQUAAAAHYWRkcmVzcwkABEwAAAACAgAAAAEuCQAETAAAAAIFAAAAA2tleQkABEwAAAACAgAAAA8gaXMgbm90IGRlZmluZWQFAAAAA25pbAIAAAAAAQAAAAxnZXRJbnRPckZhaWwAAAACAAAAB2FkZHJlc3MAAAADa2V5CQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQaAAAAAgUAAAAHYWRkcmVzcwUAAAADa2V5CQAEuQAAAAIJAARMAAAAAgIAAAAKbWFuZGF0b3J5IAkABEwAAAACCQAEJQAAAAEFAAAAB2FkZHJlc3MJAARMAAAAAgIAAAABLgkABEwAAAACBQAAAANrZXkJAARMAAAAAgIAAAAPIGlzIG5vdCBkZWZpbmVkBQAAAANuaWwCAAAAAAAAAAAPZmFjdG9yeUNvbnRyYWN0CQEAAAARQGV4dHJOYXRpdmUoMTA2MikAAAABCQEAAAAPZ2V0U3RyaW5nT3JGYWlsAAAAAgUAAAAEdGhpcwkBAAAAEmtleUZhY3RvcnlDb250cmFjdAAAAAABAAAAEGlzR2xvYmFsU2h1dGRvd24AAAAACQEAAAALdmFsdWVPckVsc2UAAAACCQAEGwAAAAIFAAAAD2ZhY3RvcnlDb250cmFjdAkBAAAAE2tleUFsbFBvb2xzU2h1dGRvd24AAAAABwEAAAANZ2V0UG9vbENvbmZpZwAAAAAEAAAACGFtdEFzc2V0CQEAAAAPZ2V0U3RyaW5nT3JGYWlsAAAAAgUAAAAEdGhpcwkBAAAAC2tleUFtdEFzc2V0AAAAAAQAAAAKcHJpY2VBc3NldAkBAAAAD2dldFN0cmluZ09yRmFpbAAAAAIFAAAABHRoaXMJAQAAAA1rZXlQcmljZUFzc2V0AAAAAAQAAAALaVByaWNlQXNzZXQJAQAAAAxnZXRJbnRPckZhaWwAAAACBQAAAA9mYWN0b3J5Q29udHJhY3QJAQAAAB9rZXlNYXBwaW5nc0Jhc2VBc3NldDJpbnRlcm5hbElkAAAAAQUAAAAKcHJpY2VBc3NldAQAAAAJaUFtdEFzc2V0CQEAAAAMZ2V0SW50T3JGYWlsAAAAAgUAAAAPZmFjdG9yeUNvbnRyYWN0CQEAAAAfa2V5TWFwcGluZ3NCYXNlQXNzZXQyaW50ZXJuYWxJZAAAAAEFAAAACGFtdEFzc2V0CQAEtQAAAAIJAQAAAA9nZXRTdHJpbmdPckZhaWwAAAACBQAAAA9mYWN0b3J5Q29udHJhY3QJAQAAAA1rZXlQb29sQ29uZmlnAAAAAgkAAaQAAAABBQAAAAlpQW10QXNzZXQJAAGkAAAAAQUAAAALaVByaWNlQXNzZXQFAAAAA1NFUAEAAAAQZ2V0RmFjdG9yeUNvbmZpZwAAAAAJAAS1AAAAAgkBAAAAD2dldFN0cmluZ09yRmFpbAAAAAIFAAAAD2ZhY3RvcnlDb250cmFjdAkBAAAAEGtleUZhY3RvcnlDb25maWcAAAAABQAAAANTRVABAAAAEWRhdGFQdXRBY3Rpb25JbmZvAAAACgAAAA1pbkFtdEFzc2V0QW10AAAAD2luUHJpY2VBc3NldEFtdAAAAAhvdXRMcEFtdAAAAAVwcmljZQAAAB1zbGlwcGFnZVRvbGVyYW5jZVBhc3NlZEJ5VXNlcgAAABVzbGlwcGFnZVRvbGVyYW5jZVJlYWwAAAAIdHhIZWlnaHQAAAALdHhUaW1lc3RhbXAAAAASc2xpcGFnZUFtdEFzc2V0QW10AAAAFHNsaXBhZ2VQcmljZUFzc2V0QW10CQAEuQAAAAIJAARMAAAAAgIAAAAUJWQlZCVkJWQlZCVkJWQlZCVkJWQJAARMAAAAAgkAAaQAAAABBQAAAA1pbkFtdEFzc2V0QW10CQAETAAAAAIJAAGkAAAAAQUAAAAPaW5QcmljZUFzc2V0QW10CQAETAAAAAIJAAGkAAAAAQUAAAAIb3V0THBBbXQJAARMAAAAAgkAAaQAAAABBQAAAAVwcmljZQkABEwAAAACCQABpAAAAAEFAAAAHXNsaXBwYWdlVG9sZXJhbmNlUGFzc2VkQnlVc2VyCQAETAAAAAIJAAGkAAAAAQUAAAAVc2xpcHBhZ2VUb2xlcmFuY2VSZWFsCQAETAAAAAIJAAGkAAAAAQUAAAAIdHhIZWlnaHQJAARMAAAAAgkAAaQAAAABBQAAAAt0eFRpbWVzdGFtcAkABEwAAAACCQABpAAAAAEFAAAAEnNsaXBhZ2VBbXRBc3NldEFtdAkABEwAAAACCQABpAAAAAEFAAAAFHNsaXBhZ2VQcmljZUFzc2V0QW10BQAAAANuaWwFAAAAA1NFUAEAAAARZGF0YUdldEFjdGlvbkluZm8AAAAGAAAADm91dEFtdEFzc2V0QW10AAAAEG91dFByaWNlQXNzZXRBbXQAAAAHaW5McEFtdAAAAAVwcmljZQAAAAh0eEhlaWdodAAAAAt0eFRpbWVzdGFtcAkABLkAAAACCQAETAAAAAICAAAADCVkJWQlZCVkJWQlZAkABEwAAAACCQABpAAAAAEFAAAADm91dEFtdEFzc2V0QW10CQAETAAAAAIJAAGkAAAAAQUAAAAQb3V0UHJpY2VBc3NldEFtdAkABEwAAAACCQABpAAAAAEFAAAAB2luTHBBbXQJAARMAAAAAgkAAaQAAAABBQAAAAVwcmljZQkABEwAAAACCQABpAAAAAEFAAAACHR4SGVpZ2h0CQAETAAAAAIJAAGkAAAAAQUAAAALdHhUaW1lc3RhbXAFAAAAA25pbAUAAAADU0VQAQAAAA1nZXRBY2NCYWxhbmNlAAAAAQAAAAdhc3NldElkAwkAAAAAAAACBQAAAAdhc3NldElkAgAAAAVXQVZFUwgJAAPvAAAAAQUAAAAEdGhpcwAAAAlhdmFpbGFibGUJAAPwAAAAAgUAAAAEdGhpcwkAAlkAAAABBQAAAAdhc3NldElkAQAAAA9jYWxjUHJpY2VCaWdJbnQAAAACAAAACHByQW10WDE4AAAACGFtQW10WDE4CQABPAAAAAMFAAAACHByQW10WDE4BQAAAAdzY2FsZTE4BQAAAAhhbUFtdFgxOAEAAAAQcHJpdmF0ZUNhbGNQcmljZQAAAAQAAAAKYW1Bc3NldERjbQAAAApwckFzc2V0RGNtAAAABWFtQW10AAAABXByQW10BAAAAA5hbXRBc3NldEFtdFgxOAkBAAAABXRvWDE4AAAAAgUAAAAFYW1BbXQFAAAACmFtQXNzZXREY20EAAAAEHByaWNlQXNzZXRBbXRYMTgJAQAAAAV0b1gxOAAAAAIFAAAABXByQW10BQAAAApwckFzc2V0RGNtCQEAAAAPY2FsY1ByaWNlQmlnSW50AAAAAgUAAAAQcHJpY2VBc3NldEFtdFgxOAUAAAAOYW10QXNzZXRBbXRYMTgBAAAACmNhbGNQcmljZXMAAAADAAAAC2FtdEFzc2V0QW10AAAADXByaWNlQXNzZXRBbXQAAAAFbHBBbXQEAAAAA2NmZwkBAAAADWdldFBvb2xDb25maWcAAAAABAAAAAthbXRBc3NldERjbQkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAAA2NmZwUAAAAOaWR4QW10QXNzZXREY20EAAAADXByaWNlQXNzZXREY20JAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAANjZmcFAAAAEGlkeFByaWNlQXNzZXREY20EAAAACXBvb2xQcmljZQkBAAAAEHByaXZhdGVDYWxjUHJpY2UAAAAEBQAAAAthbXRBc3NldERjbQUAAAANcHJpY2VBc3NldERjbQUAAAALYW10QXNzZXRBbXQFAAAADXByaWNlQXNzZXRBbXQEAAAADmFtdEFzc2V0QW10WDE4CQEAAAAFdG9YMTgAAAACBQAAAAthbXRBc3NldEFtdAUAAAALYW10QXNzZXREY20EAAAAEHByaWNlQXNzZXRBbXRYMTgJAQAAAAV0b1gxOAAAAAIFAAAADXByaWNlQXNzZXRBbXQFAAAADXByaWNlQXNzZXREY20EAAAACGxwQW10WDE4CQEAAAAFdG9YMTgAAAACBQAAAAVscEFtdAUAAAAGc2NhbGU4BAAAABFscFByaWNlSW5BbXRBc3NldAkBAAAAD2NhbGNQcmljZUJpZ0ludAAAAAIFAAAADmFtdEFzc2V0QW10WDE4BQAAAAhscEFtdFgxOAQAAAATbHBQcmljZUluUHJpY2VBc3NldAkBAAAAD2NhbGNQcmljZUJpZ0ludAAAAAIFAAAAEHByaWNlQXNzZXRBbXRYMTgFAAAACGxwQW10WDE4CQAETAAAAAIFAAAACXBvb2xQcmljZQkABEwAAAACBQAAABFscFByaWNlSW5BbXRBc3NldAkABEwAAAACBQAAABNscFByaWNlSW5QcmljZUFzc2V0BQAAAANuaWwBAAAAFGVzdGltYXRlR2V0T3BlcmF0aW9uAAAABAAAAAZ0eElkNTgAAAAKcG10QXNzZXRJZAAAAAhwbXRMcEFtdAAAAAt1c2VyQWRkcmVzcwQAAAADY2ZnCQEAAAANZ2V0UG9vbENvbmZpZwAAAAAEAAAACWxwQXNzZXRJZAkAAZEAAAACBQAAAANjZmcFAAAAEGlkeFBvb2xMUEFzc2V0SWQEAAAACWFtQXNzZXRJZAkAAZEAAAACBQAAAANjZmcFAAAADWlkeEFtdEFzc2V0SWQEAAAACXByQXNzZXRJZAkAAZEAAAACBQAAAANjZmcFAAAAD2lkeFByaWNlQXNzZXRJZAQAAAAKYW1Bc3NldERjbQkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAAA2NmZwUAAAAOaWR4QW10QXNzZXREY20EAAAACnByQXNzZXREY20JAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAANjZmcFAAAAEGlkeFByaWNlQXNzZXREY20EAAAACnBvb2xTdGF0dXMJAAGRAAAAAgUAAAADY2ZnBQAAAA1pZHhQb29sU3RhdHVzBAAAAApscEVtaXNzaW9uCAkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAD7AAAAAEJAAJZAAAAAQUAAAAJbHBBc3NldElkCQABLAAAAAIJAAEsAAAAAgIAAAAGQXNzZXQgBQAAAAlscEFzc2V0SWQCAAAADiBkb2Vzbid0IGV4aXN0AAAACHF1YW50aXR5AwkBAAAAAiE9AAAAAgUAAAAJbHBBc3NldElkBQAAAApwbXRBc3NldElkCQAAAgAAAAECAAAAFUludmFsaWQgYXNzZXQgcGFzc2VkLgQAAAAJYW1CYWxhbmNlCQEAAAANZ2V0QWNjQmFsYW5jZQAAAAEFAAAACWFtQXNzZXRJZAQAAAAMYW1CYWxhbmNlWDE4CQEAAAAFdG9YMTgAAAACBQAAAAlhbUJhbGFuY2UFAAAACmFtQXNzZXREY20EAAAACXByQmFsYW5jZQkBAAAADWdldEFjY0JhbGFuY2UAAAABBQAAAAlwckFzc2V0SWQEAAAADHByQmFsYW5jZVgxOAkBAAAABXRvWDE4AAAAAgUAAAAJcHJCYWxhbmNlBQAAAApwckFzc2V0RGNtBAAAAAtjdXJQcmljZVgxOAkBAAAAD2NhbGNQcmljZUJpZ0ludAAAAAIFAAAADHByQmFsYW5jZVgxOAUAAAAMYW1CYWxhbmNlWDE4BAAAAAhjdXJQcmljZQkBAAAAB2Zyb21YMTgAAAACBQAAAAtjdXJQcmljZVgxOAUAAAAGc2NhbGU4BAAAAAtwbXRMcEFtdFgxOAkBAAAABXRvWDE4AAAAAgUAAAAIcG10THBBbXQFAAAABnNjYWxlOAQAAAANbHBFbWlzc2lvblgxOAkBAAAABXRvWDE4AAAAAgUAAAAKbHBFbWlzc2lvbgUAAAAGc2NhbGU4BAAAAAtvdXRBbUFtdFgxOAkAATwAAAADBQAAAAxhbUJhbGFuY2VYMTgFAAAAC3BtdExwQW10WDE4BQAAAA1scEVtaXNzaW9uWDE4BAAAAAtvdXRQckFtdFgxOAkAATwAAAADBQAAAAxwckJhbGFuY2VYMTgFAAAAC3BtdExwQW10WDE4BQAAAA1scEVtaXNzaW9uWDE4BAAAAAhvdXRBbUFtdAkBAAAAB2Zyb21YMTgAAAACBQAAAAtvdXRBbUFtdFgxOAUAAAAKYW1Bc3NldERjbQQAAAAIb3V0UHJBbXQJAQAAAAdmcm9tWDE4AAAAAgUAAAALb3V0UHJBbXRYMTgFAAAACnByQXNzZXREY20EAAAABXN0YXRlAwkAAAAAAAACBQAAAAZ0eElkNTgCAAAAAAUAAAADbmlsCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMFAAAAC3VzZXJBZGRyZXNzBQAAAAhvdXRBbUFtdAMJAAAAAAAAAgUAAAAJYW1Bc3NldElkAgAAAAVXQVZFUwUAAAAEdW5pdAkAAlkAAAABBQAAAAlhbUFzc2V0SWQJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwUAAAALdXNlckFkZHJlc3MFAAAACG91dFByQW10AwkAAAAAAAACBQAAAAlwckFzc2V0SWQCAAAABVdBVkVTBQAAAAR1bml0CQACWQAAAAEFAAAACXByQXNzZXRJZAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAASa2V5R2V0QWN0aW9uQnlVc2VyAAAAAgkABCUAAAABBQAAAAt1c2VyQWRkcmVzcwUAAAAGdHhJZDU4CQEAAAARZGF0YUdldEFjdGlvbkluZm8AAAAGBQAAAAhvdXRBbUFtdAUAAAAIb3V0UHJBbXQFAAAACHBtdExwQW10BQAAAAhjdXJQcmljZQUAAAAGaGVpZ2h0CAUAAAAJbGFzdEJsb2NrAAAACXRpbWVzdGFtcAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAADGtleVByaWNlTGFzdAAAAAAFAAAACGN1clByaWNlCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAPa2V5UHJpY2VIaXN0b3J5AAAAAgUAAAAGaGVpZ2h0CAUAAAAJbGFzdEJsb2NrAAAACXRpbWVzdGFtcAUAAAAIY3VyUHJpY2UFAAAAA25pbAkABRwAAAAKBQAAAAhvdXRBbUFtdAUAAAAIb3V0UHJBbXQFAAAACWFtQXNzZXRJZAUAAAAJcHJBc3NldElkBQAAAAlhbUJhbGFuY2UFAAAACXByQmFsYW5jZQUAAAAKbHBFbWlzc2lvbgUAAAALY3VyUHJpY2VYMTgFAAAACnBvb2xTdGF0dXMFAAAABXN0YXRlAQAAABRlc3RpbWF0ZVB1dE9wZXJhdGlvbgAAAAkAAAAGdHhJZDU4AAAAEXNsaXBwYWdlVG9sZXJhbmNlAAAADGluQW1Bc3NldEFtdAAAAAtpbkFtQXNzZXRJZAAAAAxpblByQXNzZXRBbXQAAAALaW5QckFzc2V0SWQAAAALdXNlckFkZHJlc3MAAAAKaXNFdmFsdWF0ZQAAAAZlbWl0THAEAAAAA2NmZwkBAAAADWdldFBvb2xDb25maWcAAAAABAAAAAlscEFzc2V0SWQJAAJZAAAAAQkAAZEAAAACBQAAAANjZmcFAAAAEGlkeFBvb2xMUEFzc2V0SWQEAAAADGFtQXNzZXRJZFN0cgkAAZEAAAACBQAAAANjZmcFAAAADWlkeEFtdEFzc2V0SWQEAAAADHByQXNzZXRJZFN0cgkAAZEAAAACBQAAAANjZmcFAAAAD2lkeFByaWNlQXNzZXRJZAQAAAALaUFtdEFzc2V0SWQJAAGRAAAAAgUAAAADY2ZnBQAAAA5pZHhJQW10QXNzZXRJZAQAAAANaVByaWNlQXNzZXRJZAkAAZEAAAACBQAAAANjZmcFAAAAEGlkeElQcmljZUFzc2V0SWQEAAAAC2FtdEFzc2V0RGNtCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAADY2ZnBQAAAA5pZHhBbXRBc3NldERjbQQAAAANcHJpY2VBc3NldERjbQkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAAA2NmZwUAAAAQaWR4UHJpY2VBc3NldERjbQQAAAAKcG9vbFN0YXR1cwkAAZEAAAACBQAAAANjZmcFAAAADWlkeFBvb2xTdGF0dXMEAAAACmxwRW1pc3Npb24ICQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAPsAAAAAQUAAAAJbHBBc3NldElkCQABLAAAAAIJAAEsAAAAAgIAAAAGQXNzZXQgCQACWAAAAAEFAAAACWxwQXNzZXRJZAIAAAAOIGRvZXNuJ3QgZXhpc3QAAAAIcXVhbnRpdHkEAAAADmluQW1Bc3NldElkU3RyCQACWAAAAAEJAQAAAAt2YWx1ZU9yRWxzZQAAAAIFAAAAC2luQW1Bc3NldElkCQACWQAAAAECAAAABVdBVkVTBAAAAA5pblByQXNzZXRJZFN0cgkAAlgAAAABCQEAAAALdmFsdWVPckVsc2UAAAACBQAAAAtpblByQXNzZXRJZAkAAlkAAAABAgAAAAVXQVZFUwMDCQEAAAACIT0AAAACBQAAAAxhbUFzc2V0SWRTdHIFAAAADmluQW1Bc3NldElkU3RyBgkBAAAAAiE9AAAAAgUAAAAMcHJBc3NldElkU3RyBQAAAA5pblByQXNzZXRJZFN0cgkAAAIAAAABAgAAACJJbnZhbGlkIGFtdCBvciBwcmljZSBhc3NldCBwYXNzZWQuBAAAAAlhbUJhbGFuY2UDBQAAAAppc0V2YWx1YXRlCQEAAAANZ2V0QWNjQmFsYW5jZQAAAAEFAAAADGFtQXNzZXRJZFN0cgkAAGUAAAACCQEAAAANZ2V0QWNjQmFsYW5jZQAAAAEFAAAADGFtQXNzZXRJZFN0cgUAAAAMaW5BbUFzc2V0QW10BAAAAAlwckJhbGFuY2UDBQAAAAppc0V2YWx1YXRlCQEAAAANZ2V0QWNjQmFsYW5jZQAAAAEFAAAADHByQXNzZXRJZFN0cgkAAGUAAAACCQEAAAANZ2V0QWNjQmFsYW5jZQAAAAEFAAAADHByQXNzZXRJZFN0cgUAAAAMaW5QckFzc2V0QW10BAAAAA9pbkFtQXNzZXRBbXRYMTgJAQAAAAV0b1gxOAAAAAIFAAAADGluQW1Bc3NldEFtdAUAAAALYW10QXNzZXREY20EAAAAD2luUHJBc3NldEFtdFgxOAkBAAAABXRvWDE4AAAAAgUAAAAMaW5QckFzc2V0QW10BQAAAA1wcmljZUFzc2V0RGNtBAAAAAx1c2VyUHJpY2VYMTgJAQAAAA9jYWxjUHJpY2VCaWdJbnQAAAACBQAAAA9pblByQXNzZXRBbXRYMTgFAAAAD2luQW1Bc3NldEFtdFgxOAQAAAAMYW1CYWxhbmNlWDE4CQEAAAAFdG9YMTgAAAACBQAAAAlhbUJhbGFuY2UFAAAAC2FtdEFzc2V0RGNtBAAAAAxwckJhbGFuY2VYMTgJAQAAAAV0b1gxOAAAAAIFAAAACXByQmFsYW5jZQUAAAANcHJpY2VBc3NldERjbQQAAAADcmVzAwkAAAAAAAACBQAAAApscEVtaXNzaW9uAAAAAAAAAAAABAAAAAtjdXJQcmljZVgxOAUAAAAKemVyb0JpZ0ludAQAAAALc2xpcHBhZ2VYMTgFAAAACnplcm9CaWdJbnQEAAAACGxwQW10WDE4CQAAdgAAAAYJAAE5AAAAAgUAAAAPaW5BbUFzc2V0QW10WDE4BQAAAA9pblByQXNzZXRBbXRYMTgAAAAAAAAAAAAJAAE2AAAAAQAAAAAAAAAABQAAAAAAAAAAAQAAAAAAAAAAAAUAAAAERE9XTgkABRcAAAAFCQEAAAAHZnJvbVgxOAAAAAIFAAAACGxwQW10WDE4BQAAAAZzY2FsZTgJAQAAAAdmcm9tWDE4AAAAAgUAAAAPaW5BbUFzc2V0QW10WDE4BQAAAAthbXRBc3NldERjbQkBAAAAB2Zyb21YMTgAAAACBQAAAA9pblByQXNzZXRBbXRYMTgFAAAADXByaWNlQXNzZXREY20JAQAAAA9jYWxjUHJpY2VCaWdJbnQAAAACCQABNwAAAAIFAAAADHByQmFsYW5jZVgxOAUAAAAPaW5QckFzc2V0QW10WDE4CQABNwAAAAIFAAAADGFtQmFsYW5jZVgxOAUAAAAPaW5BbUFzc2V0QW10WDE4BQAAAAtzbGlwcGFnZVgxOAQAAAALY3VyUHJpY2VYMTgJAQAAAA9jYWxjUHJpY2VCaWdJbnQAAAACBQAAAAxwckJhbGFuY2VYMTgFAAAADGFtQmFsYW5jZVgxOAQAAAALc2xpcHBhZ2VYMTgJAAE8AAAAAwkBAAAAA2FicwAAAAEJAAE4AAAAAgUAAAALY3VyUHJpY2VYMTgFAAAADHVzZXJQcmljZVgxOAUAAAAHc2NhbGUxOAUAAAALY3VyUHJpY2VYMTgEAAAAFHNsaXBwYWdlVG9sZXJhbmNlWDE4CQEAAAAFdG9YMTgAAAACBQAAABFzbGlwcGFnZVRvbGVyYW5jZQUAAAAGc2NhbGU4AwMJAQAAAAIhPQAAAAIFAAAAC2N1clByaWNlWDE4BQAAAAp6ZXJvQmlnSW50CQABPwAAAAIFAAAAC3NsaXBwYWdlWDE4BQAAABRzbGlwcGFnZVRvbGVyYW5jZVgxOAcJAAACAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAPUHJpY2Ugc2xpcHBhZ2UgCQABpgAAAAEFAAAAC3NsaXBwYWdlWDE4AgAAAB4gZXhjZWVkZWQgdGhlIHBhc3NlZCBsaW1pdCBvZiAJAAGmAAAAAQUAAAAUc2xpcHBhZ2VUb2xlcmFuY2VYMTgEAAAADWxwRW1pc3Npb25YMTgJAQAAAAV0b1gxOAAAAAIFAAAACmxwRW1pc3Npb24FAAAABnNjYWxlOAQAAAAKcHJWaWFBbVgxOAkAATwAAAADBQAAAA9pbkFtQXNzZXRBbXRYMTgFAAAAC2N1clByaWNlWDE4BQAAAAdzY2FsZTE4BAAAAAphbVZpYVByWDE4CQABPAAAAAMFAAAAD2luUHJBc3NldEFtdFgxOAUAAAAHc2NhbGUxOAUAAAALY3VyUHJpY2VYMTgEAAAADGV4cGVjdGVkQW10cwMJAAE/AAAAAgUAAAAKcHJWaWFBbVgxOAUAAAAPaW5QckFzc2V0QW10WDE4CQAFFAAAAAIFAAAACmFtVmlhUHJYMTgFAAAAD2luUHJBc3NldEFtdFgxOAkABRQAAAACBQAAAA9pbkFtQXNzZXRBbXRYMTgFAAAACnByVmlhQW1YMTgEAAAAEWV4cEFtdEFzc2V0QW10WDE4CAUAAAAMZXhwZWN0ZWRBbXRzAAAAAl8xBAAAABNleHBQcmljZUFzc2V0QW10WDE4CAUAAAAMZXhwZWN0ZWRBbXRzAAAAAl8yBAAAAAhscEFtdFgxOAkAATwAAAADBQAAAA1scEVtaXNzaW9uWDE4BQAAABNleHBQcmljZUFzc2V0QW10WDE4BQAAAAxwckJhbGFuY2VYMTgJAAUXAAAABQkBAAAAB2Zyb21YMTgAAAACBQAAAAhscEFtdFgxOAUAAAAGc2NhbGU4CQEAAAAHZnJvbVgxOAAAAAIFAAAAEWV4cEFtdEFzc2V0QW10WDE4BQAAAAthbXRBc3NldERjbQkBAAAAB2Zyb21YMTgAAAACBQAAABNleHBQcmljZUFzc2V0QW10WDE4BQAAAA1wcmljZUFzc2V0RGNtBQAAAAtjdXJQcmljZVgxOAUAAAALc2xpcHBhZ2VYMTgEAAAACWNhbGNMcEFtdAgFAAAAA3JlcwAAAAJfMQQAAAAOY2FsY0FtQXNzZXRQbXQIBQAAAANyZXMAAAACXzIEAAAADmNhbGNQckFzc2V0UG10CAUAAAADcmVzAAAAAl8zBAAAAAhjdXJQcmljZQkBAAAAB2Zyb21YMTgAAAACCAUAAAADcmVzAAAAAl80BQAAAAZzY2FsZTgEAAAADHNsaXBwYWdlQ2FsYwkBAAAAB2Zyb21YMTgAAAACCAUAAAADcmVzAAAAAl81BQAAAAZzY2FsZTgDCQAAZwAAAAIAAAAAAAAAAAAFAAAACWNhbGNMcEFtdAkAAAIAAAABAgAAADZJbnZhbGlkIGNhbGN1bGF0aW9ucy4gTFAgY2FsY3VsYXRlZCBpcyBsZXNzIHRoYW4gemVyby4EAAAACWVtaXRMcEFtdAMJAQAAAAEhAAAAAQUAAAAGZW1pdExwAAAAAAAAAAAABQAAAAljYWxjTHBBbXQEAAAABmFtRGlmZgkAAGUAAAACBQAAAAxpbkFtQXNzZXRBbXQFAAAADmNhbGNBbUFzc2V0UG10BAAAAAZwckRpZmYJAABlAAAAAgUAAAAMaW5QckFzc2V0QW10BQAAAA5jYWxjUHJBc3NldFBtdAQAAAALY29tbW9uU3RhdGUJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAAAxrZXlQcmljZUxhc3QAAAAABQAAAAhjdXJQcmljZQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAAD2tleVByaWNlSGlzdG9yeQAAAAIFAAAABmhlaWdodAgFAAAACWxhc3RCbG9jawAAAAl0aW1lc3RhbXAFAAAACGN1clByaWNlCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABJrZXlQdXRBY3Rpb25CeVVzZXIAAAACBQAAAAt1c2VyQWRkcmVzcwUAAAAGdHhJZDU4CQEAAAARZGF0YVB1dEFjdGlvbkluZm8AAAAKBQAAAA5jYWxjQW1Bc3NldFBtdAUAAAAOY2FsY1ByQXNzZXRQbXQFAAAACWVtaXRMcEFtdAUAAAAIY3VyUHJpY2UFAAAAEXNsaXBwYWdlVG9sZXJhbmNlBQAAAAxzbGlwcGFnZUNhbGMFAAAABmhlaWdodAgFAAAACWxhc3RCbG9jawAAAAl0aW1lc3RhbXAFAAAABmFtRGlmZgUAAAAGcHJEaWZmBQAAAANuaWwJAAUfAAAADQUAAAAJY2FsY0xwQW10BQAAAAllbWl0THBBbXQFAAAACGN1clByaWNlBQAAAAlhbUJhbGFuY2UFAAAACXByQmFsYW5jZQUAAAAKbHBFbWlzc2lvbgUAAAAJbHBBc3NldElkBQAAAApwb29sU3RhdHVzBQAAAAtjb21tb25TdGF0ZQUAAAAGYW1EaWZmBQAAAAZwckRpZmYFAAAAC2luQW1Bc3NldElkBQAAAAtpblByQXNzZXRJZAEAAAAbdmFsaWRhdGVNYXRjaGVyT3JkZXJBbGxvd2VkAAAAAQAAAAVvcmRlcgQAAAADY2ZnCQEAAAANZ2V0UG9vbENvbmZpZwAAAAAEAAAACmFtdEFzc2V0SWQJAAGRAAAAAgUAAAADY2ZnBQAAAA1pZHhBbXRBc3NldElkBAAAAAxwcmljZUFzc2V0SWQJAAGRAAAAAgUAAAADY2ZnBQAAAA9pZHhQcmljZUFzc2V0SWQEAAAACnBvb2xTdGF0dXMJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAANjZmcFAAAADWlkeFBvb2xTdGF0dXMEAAAAC2FtdEFzc2V0RGNtCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAADY2ZnBQAAAA5pZHhBbXRBc3NldERjbQQAAAANcHJpY2VBc3NldERjbQkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAAA2NmZwUAAAAQaWR4UHJpY2VBc3NldERjbQQAAAASYWNjQW10QXNzZXRCYWxhbmNlCQEAAAANZ2V0QWNjQmFsYW5jZQAAAAEFAAAACmFtdEFzc2V0SWQEAAAAFGFjY1ByaWNlQXNzZXRCYWxhbmNlCQEAAAANZ2V0QWNjQmFsYW5jZQAAAAEFAAAADHByaWNlQXNzZXRJZAQAAAALY3VyUHJpY2VYMTgDCQAAAAAAAAIIBQAAAAVvcmRlcgAAAAlvcmRlclR5cGUFAAAAA0J1eQkBAAAAEHByaXZhdGVDYWxjUHJpY2UAAAAEBQAAAAthbXRBc3NldERjbQUAAAANcHJpY2VBc3NldERjbQkAAGQAAAACBQAAABJhY2NBbXRBc3NldEJhbGFuY2UIBQAAAAVvcmRlcgAAAAZhbW91bnQFAAAAFGFjY1ByaWNlQXNzZXRCYWxhbmNlCQEAAAAQcHJpdmF0ZUNhbGNQcmljZQAAAAQFAAAAC2FtdEFzc2V0RGNtBQAAAA1wcmljZUFzc2V0RGNtCQAAZQAAAAIFAAAAEmFjY0FtdEFzc2V0QmFsYW5jZQgFAAAABW9yZGVyAAAABmFtb3VudAUAAAAUYWNjUHJpY2VBc3NldEJhbGFuY2UEAAAACGN1clByaWNlCQEAAAAHZnJvbVgxOAAAAAIFAAAAC2N1clByaWNlWDE4BQAAAAZzY2FsZTgDAwMJAQAAABBpc0dsb2JhbFNodXRkb3duAAAAAAYJAAAAAAAAAgUAAAAKcG9vbFN0YXR1cwUAAAATUG9vbE1hdGNoZXJEaXNhYmxlZAYJAAAAAAAAAgUAAAAKcG9vbFN0YXR1cwUAAAAMUG9vbFNodXRkb3duCQAAAgAAAAECAAAAHEV4Y2hhbmdlIG9wZXJhdGlvbnMgZGlzYWJsZWQEAAAADW9yZGVyQW10QXNzZXQICAUAAAAFb3JkZXIAAAAJYXNzZXRQYWlyAAAAC2Ftb3VudEFzc2V0BAAAABBvcmRlckFtdEFzc2V0U3RyAwkAAAAAAAACBQAAAA1vcmRlckFtdEFzc2V0BQAAAAR1bml0AgAAAAVXQVZFUwkAAlgAAAABCQEAAAAFdmFsdWUAAAABBQAAAA1vcmRlckFtdEFzc2V0BAAAAA9vcmRlclByaWNlQXNzZXQICAUAAAAFb3JkZXIAAAAJYXNzZXRQYWlyAAAACnByaWNlQXNzZXQEAAAAEm9yZGVyUHJpY2VBc3NldFN0cgMJAAAAAAAAAgUAAAAPb3JkZXJQcmljZUFzc2V0BQAAAAR1bml0AgAAAAVXQVZFUwkAAlgAAAABCQEAAAAFdmFsdWUAAAABBQAAAA9vcmRlclByaWNlQXNzZXQDAwkBAAAA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AgUAAAAKcG9vbFN0YXR1cwUAAAAPUG9vbFB1dERpc2FibGVkBgkAAAAAAAACBQAAAApwb29sU3RhdHVzBQAAAAxQb29sU2h1dGRvd24JAAACAAAAAQkAASwAAAACAgAAACxQdXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4uIFN0YXR1cyA9IAkAAaQAAAABBQAAAApwb29sU3RhdHVzBQAAAAZlc3RQdXQAAAAKAAAAAWkBAAAAC2NvbnN0cnVjdG9yAAAAAgAAAA9mYWN0b3J5Q29udHJhY3QAAAAQbWFuYWdlclB1YmxpY0tleQMJAQAAAAIhPQAAAAIIBQAAAAFpAAAABmNhbGxlcgUAAAAEdGhpcwkAAAIAAAABAgAAABJwZXJtaXNzaW9ucyBkZW5pZWQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAEmtleUZhY3RvcnlDb250cmFjdAAAAAAFAAAAD2ZhY3RvcnlDb250cmFjdAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAATa2V5TWFuYWdlclB1YmxpY0tleQAAAAAFAAAAEG1hbmFnZXJQdWJsaWNLZXkFAAAAA25pbAAAAAFpAQAAAANwdXQAAAACAAAAEXNsaXBwYWdlVG9sZXJhbmNlAAAAD3Nob3VsZEF1dG9TdGFrZQQAAAAKZmFjdG9yeUNmZwkBAAAAEGdldEZhY3RvcnlDb25maWcAAAAABAAAAA9zdGFraW5nQ29udHJhY3QJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABCYAAAABCQABkQAAAAIFAAAACmZhY3RvcnlDZmcFAAAAGWlkeEZhY3RvcnlTdGFraW5nQ29udHJhY3QCAAAAIUVycm9yLiBJbmNvcnJlY3Qgc3Rha2luZyBhZGRyZXNzLgQAAAAQc2xpcHBhZ2VDb250cmFjdAkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEJgAAAAEJAAGRAAAAAgUAAAAKZmFjdG9yeUNmZwUAAAAaaWR4RmFjdG9yeVNsaXBwYWdlQ29udHJhY3QCAAAAK0Vycm9yLiBJbmNvcnJlY3Qgc2xpcHBhZ2UgY29udHJhY3QgYWRkcmVzcy4EAAAABmVzdFB1dAkBAAAA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cXVhbnRpdHkEAAAAEmFjY0FtdEFzc2V0QmFsYW5jZQkBAAAADWdldEFjY0JhbGFuY2UAAAABBQAAAAphbXRBc3NldElkBAAAABRhY2NQcmljZUFzc2V0QmFsYW5jZQkBAAAADWdldEFjY0JhbGFuY2UAAAABBQAAAAxwcmljZUFzc2V0SWQEAAAACnByaWNlc0xpc3QJAQAAAApjYWxjUHJpY2VzAAAAAwUAAAASYWNjQW10QXNzZXRCYWxhbmNlBQAAABRhY2NQcmljZUFzc2V0QmFsYW5jZQUAAAANcG9vbExQQmFsYW5jZQQAAAAIY3VyUHJpY2UJAAGRAAAAAgUAAAAKcHJpY2VzTGlzdAAAAAAAAAAAAAQAAAAPbHBBbXRBc3NldFNoYXJlCQABkQAAAAIFAAAACnByaWNlc0xpc3QAAAAAAAAAAAEEAAAAEWxwUHJpY2VBc3NldFNoYXJlCQABkQAAAAIFAAAACnByaWNlc0xpc3QAAAAAAAAAAAIEAAAACnBvb2xXZWlnaHQJAQAAAAV2YWx1ZQAAAAEJAAQaAAAAAgUAAAAPZmFjdG9yeUNvbnRyYWN0CQEAAAANa2V5UG9vbFdlaWdodAAAAAEJAAQlAAAAAQUAAAAEdGhpcwkABRQAAAACBQAAAANuaWwJAAS5AAAAAgkABEwAAAACAgAAAA4lZCVkJWQlZCVkJWQlZAkABEwAAAACCQABpAAAAAEFAAAAEmFjY0FtdEFzc2V0QmFsYW5jZQkABEwAAAACCQABpAAAAAEFAAAAFGFjY1ByaWNlQXNzZXRCYWxhbmNlCQAETAAAAAIJAAGkAAAAAQUAAAANcG9vbExQQmFsYW5jZQkABEwAAAACCQABpgAAAAEFAAAACGN1clByaWNlCQAETAAAAAIJAAGmAAAAAQUAAAAPbHBBbXRBc3NldFNoYXJlCQAETAAAAAIJAAGmAAAAAQUAAAARbHBQcmljZUFzc2V0U2hhcmUJAARMAAAAAgkAAaQAAAABBQAAAApwb29sV2VpZ2h0BQAAAANuaWwFAAAAA1NFUAAAAAFpAQAAACBldmFsdWF0ZVB1dEJ5QW1vdW50QXNzZXRSRUFET05MWQAAAAMAAAARc2xpcHBhZ2VUb2xlcmFuY2UAAAANaW5BbXRBc3NldEFtdAAAAAt1c2VyQWRkcmVzcwQAAAADY2ZnCQEAAAANZ2V0UG9vbENvbmZpZwAAAAAEAAAACWxwQXNzZXRJZAkAAlkAAAABCQABkQAAAAIFAAAAA2NmZwUAAAAQaWR4UG9vbExQQXNzZXRJZAQAAAAMYW1Bc3NldElkU3RyCQABkQAAAAIFAAAAA2NmZwUAAAANaWR4QW10QXNzZXRJZAQAAAAJYW1Bc3NldElkCQACWQAAAAEFAAAADGFtQXNzZXRJZFN0cgQAAAAMcHJBc3NldElkU3RyCQABkQAAAAIFAAAAA2NmZwUAAAAPaWR4UHJpY2VBc3NldElkBAAAAAlwckFzc2V0SWQJAAJZAAAAAQUAAAAMcHJBc3NldElkU3RyBAAAAAthbXRBc3NldERjbQkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAAA2NmZwUAAAAOaWR4QW10QXNzZXREY20EAAAADXByaWNlQXNzZXREY20JAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAANjZmcFAAAAEGlkeFByaWNlQXNzZXREY20EAAAACnBvb2xTdGF0dXMJAAGRAAAAAgUAAAADY2ZnBQAAAA1pZHhQb29sU3RhdHVzBAAAAA1wb29sTFBCYWxhbmNlCAkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAD7AAAAAEFAAAACWxwQXNzZXRJZAkAASwAAAACCQABLAAAAAICAAAABkFzc2V0IAkAAlgAAAABBQAAAAlscEFzc2V0SWQCAAAADiBkb2Vzbid0IGV4aXN0AAAACHF1YW50aXR5BAAAABJhY2NBbXRBc3NldEJhbGFuY2UJAQAAAA1nZXRBY2NCYWxhbmNlAAAAAQUAAAAMYW1Bc3NldElkU3RyBAAAABRhY2NQcmljZUFzc2V0QmFsYW5jZQkBAAAADWdldEFjY0JhbGFuY2UAAAABBQAAAAxwckFzc2V0SWRTdHIEAAAADmFtdEFzc2V0QW10WDE4CQEAAAAFdG9YMTgAAAACBQAAABJhY2NBbXRBc3NldEJhbGFuY2UFAAAAC2FtdEFzc2V0RGNtBAAAABBwcmljZUFzc2V0QW10WDE4CQEAAAAFdG9YMTgAAAACBQAAABRhY2NQcmljZUFzc2V0QmFsYW5jZQUAAAANcHJpY2VBc3NldERjbQQAAAALY3VyUHJpY2VYMTgDCQAAAAAAAAIFAAAADXBvb2xMUEJhbGFuY2UAAAAAAAAAAAAFAAAACnplcm9CaWdJbnQJAQAAAA9jYWxjUHJpY2VCaWdJbnQAAAACBQAAABBwcmljZUFzc2V0QW10WDE4BQAAAA5hbXRBc3NldEFtdFgxOAQAAAAQaW5BbXRBc3NldEFtdFgxOAkBAAAABXRvWDE4AAAAAgUAAAANaW5BbXRBc3NldEFtdAUAAAALYW10QXNzZXREY20EAAAAEmluUHJpY2VBc3NldEFtdFgxOAkAATwAAAADBQAAABBpbkFtdEFzc2V0QW10WDE4BQAAAAtjdXJQcmljZVgxOAUAAAAHc2NhbGUxOAQAAAAPaW5QcmljZUFzc2V0QW10CQEAAAAHZnJvbVgxOAAAAAIFAAAAEmluUHJpY2VBc3NldEFtdFgxOAUAAAANcHJpY2VBc3NldERjbQQAAAAGZXN0UHV0CQEAAAAUZXN0aW1hdGVQdXRPcGVyYXRpb24AAAAJAgAAAAAFAAAAEXNsaXBwYWdlVG9sZXJhbmNlBQAAAA1pbkFtdEFzc2V0QW10BQAAAAlhbUFzc2V0SWQFAAAAD2luUHJpY2VBc3NldEFtdAUAAAAJcHJBc3NldElkBQAAAAt1c2VyQWRkcmVzcwYHBAAAAAljYWxjTHBBbXQIBQAAAAZlc3RQdXQAAAACXzEEAAAADGN1clByaWNlQ2FsYwgFAAAABmVzdFB1dAAAAAJfMwQAAAAJYW1CYWxhbmNlCAUAAAAGZXN0UHV0AAAAAl80BAAAAAlwckJhbGFuY2UIBQAAAAZlc3RQdXQAAAACXzUEAAAACmxwRW1pc3Npb24IBQAAAAZlc3RQdXQAAAACXzYJAAUUAAAAAgUAAAADbmlsCQAEuQAAAAIJAARMAAAAAgIAAAAMJWQlZCVkJWQlZCVkCQAETAAAAAIJAAGkAAAAAQUAAAAJY2FsY0xwQW10CQAETAAAAAIJAAGkAAAAAQkBAAAAB2Zyb21YMTgAAAACBQAAAAtjdXJQcmljZVgxOAUAAAAGc2NhbGU4CQAETAAAAAIJAAGkAAAAAQUAAAAJYW1CYWxhbmNlCQAETAAAAAIJAAGkAAAAAQUAAAAJcHJCYWxhbmNlCQAETAAAAAIJAAGkAAAAAQUAAAAKbHBFbWlzc2lvbgkABEwAAAACBQAAAApwb29sU3RhdHVzBQAAAANuaWwFAAAAA1NFUAAAAAFpAQAAAB9ldmFsdWF0ZVB1dEJ5UHJpY2VBc3NldFJFQURPTkxZAAAAAwAAABFzbGlwcGFnZVRvbGVyYW5jZQAAAA9pblByaWNlQXNzZXRBbXQAAAALdXNlckFkZHJlc3MEAAAAA2NmZwkBAAAADWdldFBvb2xDb25maWcAAAAABAAAAAlscEFzc2V0SWQJAAJZAAAAAQkAAZEAAAACBQAAAANjZmcFAAAAEGlkeFBvb2xMUEFzc2V0SWQEAAAADGFtQXNzZXRJZFN0cgkAAZEAAAACBQAAAANjZmcFAAAADWlkeEFtdEFzc2V0SWQEAAAACWFtQXNzZXRJZAkAAlkAAAABBQAAAAxhbUFzc2V0SWRTdHIEAAAADHByQXNzZXRJZFN0cgkAAZEAAAACBQAAAANjZmcFAAAAD2lkeFByaWNlQXNzZXRJZAQAAAAJcHJBc3NldElkCQACWQAAAAEFAAAADHByQXNzZXRJZFN0cgQAAAALYW10QXNzZXREY20JAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAANjZmcFAAAADmlkeEFtdEFzc2V0RGNtBAAAAA1wcmljZUFzc2V0RGNtCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAADY2ZnBQAAABBpZHhQcmljZUFzc2V0RGNtBAAAAApwb29sU3RhdHVzCQABkQAAAAIFAAAAA2NmZwUAAAANaWR4UG9vbFN0YXR1cwQAAAANcG9vbExQQmFsYW5jZQgJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkAA+wAAAABBQAAAAlscEFzc2V0SWQJAAEsAAAAAgkAASwAAAACAgAAAAZBc3NldCAJAAJYAAAAAQUAAAAJbHBBc3NldElkAgAAAA4gZG9lc24ndCBleGlzdAAAAAhxdWFudGl0eQQAAAASYWNjQW10QXNzZXRCYWxhbmNlCQEAAAANZ2V0QWNjQmFsYW5jZQAAAAEFAAAADGFtQXNzZXRJZFN0cgQAAAAUYWNjUHJpY2VBc3NldEJhbGFuY2UJAQAAAA1nZXRBY2NCYWxhbmNlAAAAAQUAAAAMcHJBc3NldElkU3RyBAAAAA5hbXRBc3NldEFtdFgxOAkBAAAABXRvWDE4AAAAAgUAAAASYWNjQW10QXNzZXRCYWxhbmNlBQAAAAthbXRBc3NldERjbQQAAAAQcHJpY2VBc3NldEFtdFgxOAkBAAAABXRvWDE4AAAAAgUAAAAUYWNjUHJpY2VBc3NldEJhbGFuY2UFAAAADXByaWNlQXNzZXREY20EAAAAC2N1clByaWNlWDE4AwkAAAAAAAACBQAAAA1wb29sTFBCYWxhbmNlAAAAAAAAAAAABQAAAAp6ZXJvQmlnSW50CQEAAAAPY2FsY1ByaWNlQmlnSW50AAAAAgUAAAAQcHJpY2VBc3NldEFtdFgxOAUAAAAOYW10QXNzZXRBbXRYMTgEAAAAEmluUHJpY2VBc3NldEFtdFgxOAkBAAAABXRvWDE4AAAAAgUAAAAPaW5QcmljZUFzc2V0QW10BQAAAA1wcmljZUFzc2V0RGNtBAAAABBpbkFtdEFzc2V0QW10WDE4CQABPAAAAAMFAAAAEmluUHJpY2VBc3NldEFtdFgxOAUAAAAHc2NhbGUxOAUAAAALY3VyUHJpY2VYMTgEAAAADWluQW10QXNzZXRBbXQJAQAAAAdmcm9tWDE4AAAAAgUAAAAQaW5BbXRBc3NldEFtdFgxOAUAAAALYW10QXNzZXREY20EAAAABmVzdFB1dAkBAAAAFGVzdGltYXRlUHV0T3BlcmF0aW9uAAAACQIAAAAABQAAABFzbGlwcGFnZVRvbGVyYW5jZQUAAAANaW5BbXRBc3NldEFtdAUAAAAJYW1Bc3NldElkBQAAAA9pblByaWNlQXNzZXRBbXQFAAAACXByQXNzZXRJZAUAAAALdXNlckFkZHJlc3MGBwQAAAAJY2FsY0xwQW10CAUAAAAGZXN0UHV0AAAAAl8xBAAAAAxjdXJQcmljZUNhbGMIBQAAAAZlc3RQdXQAAAACXzMEAAAACWFtQmFsYW5jZQgFAAAABmVzdFB1dAAAAAJfNAQAAAAJcHJCYWxhbmNlCAUAAAAGZXN0UHV0AAAAAl81BAAAAApscEVtaXNzaW9uCAUAAAAGZXN0UHV0AAAAAl82CQAFFAAAAAIFAAAAA25pbAkABLkAAAACCQAETAAAAAICAAAADCVkJWQlZCVkJWQlZAkABEwAAAACCQABpAAAAAEFAAAACWNhbGNMcEFtdAkABEwAAAACCQABpAAAAAEJAQAAAAdmcm9tWDE4AAAAAgUAAAALY3VyUHJpY2VYMTgFAAAABnNjYWxlOAkABEwAAAACCQABpAAAAAEFAAAACWFtQmFsYW5jZQkABEwAAAACCQABpAAAAAEFAAAACXByQmFsYW5jZQkABEwAAAACCQABpAAAAAEFAAAACmxwRW1pc3Npb24JAARMAAAAAgUAAAAKcG9vbFN0YXR1cwUAAAADbmlsBQAAAANTRVAAAAABaQEAAAATZXZhbHVhdGVHZXRSRUFET05MWQAAAAMAAAAQcGF5bWVudExwQXNzZXRJZAAAAAxwYXltZW50THBBbXQAAAAOdXNlckFkZHJlc3NTdHIEAAAAA3JlcwkBAAAAFGVzdGltYXRlR2V0T3BlcmF0aW9uAAAABAIAAAAABQAAABBwYXltZW50THBBc3NldElkBQAAAAxwYXltZW50THBBbXQFAAAABHRoaXMEAAAACG91dEFtQW10CAUAAAADcmVzAAAAAl8xBAAAAAhvdXRQckFtdAgFAAAAA3JlcwAAAAJfMgQAAAAJYW1CYWxhbmNlCAUAAAADcmVzAAAAAl81BAAAAAlwckJhbGFuY2UIBQAAAANyZXMAAAACXzYEAAAACmxwRW1pc3Npb24IBQAAAANyZXMAAAACXzcEAAAACGN1clByaWNlCAUAAAADcmVzAAAAAl84BAAAAApwb29sU3RhdHVzCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEIBQAAAANyZXMAAAACXzkJAAUUAAAAAgUAAAADbmlsCQAEuQAAAAIJAARMAAAAAgIAAAAOJWQlZCVkJWQlZCVkJWQJAARMAAAAAgkAAaQAAAABBQAAAAhvdXRBbUFtdAkABEwAAAACCQABpAAAAAEFAAAACG91dFByQW10CQAETAAAAAIJAAGkAAAAAQUAAAAJYW1CYWxhbmNlCQAETAAAAAIJAAGkAAAAAQUAAAAJcHJCYWxhbmNlCQAETAAAAAIJAAGkAAAAAQUAAAAKbHBFbWlzc2lvbgkABEwAAAACCQABpgAAAAEFAAAACGN1clByaWNlCQAETAAAAAIJAAGkAAAAAQUAAAAKcG9vbFN0YXR1cwUAAAADbmlsBQAAAANTRVAAAAABAAAAAnR4AQAAAAZ2ZXJpZnkAAAAABAAAAAckbWF0Y2gwBQAAAAJ0eAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAFT3JkZXIEAAAABW9yZGVyBQAAAAckbWF0Y2gwAwkBAAAAG3ZhbGlkYXRlTWF0Y2hlck9yZGVyQWxsb3dlZAAAAAEFAAAABW9yZGVyCQAB9AAAAAMIBQAAAAVvcmRlcgAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAABW9yZGVyAAAABnByb29mcwAAAAAAAAAAAAgFAAAABW9yZGVyAAAAD3NlbmRlclB1YmxpY0tleQcEAAAADW1hbmFnZXJQdWJsaWMJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQdAAAAAgUAAAAEdGhpcwkBAAAAE2tleU1hbmFnZXJQdWJsaWNLZXkAAAAABQAAAAVFTVBUWQMJAAAAAAAAAgUAAAANbWFuYWdlclB1YmxpYwUAAAAFRU1QVFkJAAH0AAAAAwgFAAAAAnR4AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAACdHgAAAAGcHJvb2ZzAAAAAAAAAAAACAUAAAACdHgAAAAPc2VuZGVyUHVibGljS2V5CQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAAkAAlkAAAABBQAAAA1tYW5hZ2VyUHVibGljTKbJZw==", "height": 2806912, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: EhYqjKR6hVdAtRoa4jYNm9QK6zYGiC4Xk2pT7dzLacg3 Next: none Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let a = Address(base58'3P8s92Udr7jNWMv6WctM9Hnc9EytXitmym5')
4+let a = 8
55
6-let b = 8
6+let b = 100000000
77
8-let c = 100000000
8+let c = toBigInt(100000000)
99
1010 let d = toBigInt(1000000000000000000)
1111
12-let e = "__"
12+let e = toBigInt(0)
1313
14-let f = 1
14+let f = "__"
1515
16-let g = 2
16+let g = ""
1717
18-let h = 3
18+let h = 1
1919
20-let i = 4
20+let i = 2
2121
22-let j = 1
22+let j = 3
2323
24-let k = 2
24+let k = 4
2525
26-let l = 3
26+let l = 1
2727
28-let m = 4
28+let m = 2
2929
30-let n = 5
30+let n = 3
3131
32-let o = 6
32+let o = 4
3333
34-let p = 7
34+let p = 5
3535
36-let q = 8
36+let q = 6
3737
38-let r = 9
38+let r = 7
3939
40-let s = 10
40+let s = 8
4141
42-let t = 11
42+let t = 9
4343
44-let u = 1
44+let u = 10
4545
46-let v = 2
46+let v = 1
4747
48-let w = 3
48+let w = 2
4949
50-let x = 1
50+let x = 3
5151
52-let y = 2
52+let y = 1
5353
54-func z () = "%s%s__price__last"
54+let z = 7
55+
56+func A (B,C) = fraction(toBigInt(B), d, toBigInt(C))
5557
5658
57-func A (B,C) = makeString(["%s%s%d%d__price__history", toString(B), toString(C)], e)
59+func D (E,F) = toInt(fraction(E, toBigInt(F), d))
5860
5961
60-func D (E,F) = (((("%d%d%s__" + E) + "__") + F) + "__locked")
62+func G (H,I,J) = fraction(H, I, J)
6163
6264
63-func G (E,F,H) = (((((("%d%d%s%s__" + E) + "__") + F) + "__") + H) + "__locked")
65+func K (E) = if ((e > E))
66+ then -(E)
67+ else E
6468
6569
66-func I (H,J) = ((("%s%s%s__P__" + H) + "__") + J)
70+func L () = "%s__factoryContract"
6771
6872
69-func K (H,J) = ((("%s%s%s__G__" + H) + "__") + J)
73+func M () = "%s__managerPublicKey"
7074
7175
72-func L () = "%s__amountAsset"
76+func N () = "%s%s__price__last"
7377
7478
75-func M () = "%s__priceAsset"
79+func O (P,Q) = makeString(["%s%s%d%d__price__history", toString(P), toString(Q)], f)
7680
7781
78-func N () = "%s%s__K_current"
82+func R (S,T) = ((("%s%s%s__P__" + S) + "__") + T)
7983
8084
81-func O (B,C) = makeString(["%s%s%d%d__K_history", toString(B), toString(C)], e)
85+func U (S,T) = ((("%s%s%s__G__" + S) + "__") + T)
8286
8387
84-func P () = "%s__factoryConfig"
88+func V () = "%s__amountAsset"
8589
8690
87-func Q (R) = (("%s%s%s__" + R) + "__mappings__poolContract2LpAsset")
91+func W () = "%s__priceAsset"
8892
8993
90-func S (T,U) = (((("%d%d%s__" + T) + "__") + U) + "__config")
94+func X (P,Q) = makeString(["%s%s%d%d__K_history", toString(P), toString(Q)], f)
9195
9296
93-func V (W) = ("%s%s%s__mappings__baseAsset2internalId__" + W)
97+func Y () = "%s__factoryConfig"
9498
9599
96-func X () = "%s__shutdown"
100+func Z (aa) = (("%s%s%s__" + aa) + "__mappings__poolContract2LpAsset")
97101
98102
99-func Y (Z) = ("%s%s__poolWeight__" + Z)
103+func ab (ac,ad) = (((("%d%d%s__" + ac) + "__") + ad) + "__config")
100104
101105
102-func aa () = valueOrElse(getBoolean(a, X()), false)
106+func ae (af) = ("%s%s%s__mappings__baseAsset2internalId__" + af)
103107
104108
105-func ab () = {
106- let ac = valueOrErrorMessage(getString(this, L()), "No config for amount asset found")
107- let ad = valueOrErrorMessage(getString(this, M()), "No config for price asset found")
108- let ae = valueOrErrorMessage(getInteger(a, V(ad)), "No config for internal price asset found")
109- let af = valueOrErrorMessage(getInteger(a, V(ac)), "No config for internal amount asset found")
110- split(valueOrErrorMessage(getString(a, S(toString(af), toString(ae))), "No factory config found for pool assets."), e)
109+func ag () = "%s__shutdown"
110+
111+
112+func ah (ai) = ("%s%s__poolWeight__" + ai)
113+
114+
115+func aj (ak,al) = valueOrErrorMessage(getString(ak, al), makeString(["mandatory ", toString(ak), ".", al, " is not defined"], ""))
116+
117+
118+func am (ak,al) = valueOrErrorMessage(getInteger(ak, al), makeString(["mandatory ", toString(ak), ".", al, " is not defined"], ""))
119+
120+
121+let an = addressFromStringValue(aj(this, L()))
122+
123+func ao () = valueOrElse(getBoolean(an, ag()), false)
124+
125+
126+func ap () = {
127+ let aq = aj(this, V())
128+ let ar = aj(this, W())
129+ let ad = am(an, ae(ar))
130+ let ac = am(an, ae(aq))
131+ split(aj(an, ab(toString(ac), toString(ad))), f)
111132 }
112133
113134
114-func ag () = split(valueOrErrorMessage(getString(a, P()), "No factory config found."), e)
135+func as () = split(aj(an, Y()), f)
115136
116137
117-func ah (ai,aj) = {
118- let ak = getString(this, D(ai, aj))
119- if (isDefined(ak))
120- then split(value(ak), e)
121- else ["", "0", "0", "0"]
138+func at (au,av,aw,ax,ay,az,aA,aB,aC,aD) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(au), toString(av), toString(aw), toString(ax), toString(ay), toString(az), toString(aA), toString(aB), toString(aC), toString(aD)], f)
139+
140+
141+func aE (aF,aG,aH,ax,aA,aB) = makeString(["%d%d%d%d%d%d", toString(aF), toString(aG), toString(aH), toString(ax), toString(aA), toString(aB)], f)
142+
143+
144+func aI (aJ) = if ((aJ == "WAVES"))
145+ then wavesBalance(this).available
146+ else assetBalance(this, fromBase58String(aJ))
147+
148+
149+func aK (aL,aM) = fraction(aL, d, aM)
150+
151+
152+func aN (aO,aP,aQ,aR) = {
153+ let aS = A(aQ, aO)
154+ let aT = A(aR, aP)
155+ aK(aT, aS)
122156 }
123157
124158
125-func al (ai,aj,H) = {
126- let ak = getString(this, G(ai, aj, H))
127- if (isDefined(ak))
128- then split(value(ak), e)
129- else ["", "0", "0", "0", "0"]
159+func aU (aV,aW,aX) = {
160+ let aY = ap()
161+ let aZ = parseIntValue(aY[q])
162+ let ba = parseIntValue(aY[r])
163+ let bb = aN(aZ, ba, aV, aW)
164+ let aS = A(aV, aZ)
165+ let aT = A(aW, ba)
166+ let bc = A(aX, b)
167+ let bd = aK(aS, bc)
168+ let be = aK(aT, bc)
169+[bb, bd, be]
130170 }
131171
132172
133-func am (an,ao,ap) = makeString(["%d%d%d", toString(an), toString(ao), toString(ap)], e)
134-
135-
136-func aq (an,ao,ap,H) = makeString(["%d%d%d", toString(an), toString(ao), toString(ap)], e)
137-
138-
139-func ar (as,at,au,av,aw,ax,ay,az) = makeString(["%d%d%d%d%d%d%d", toString(as), toString(at), toString(au), toString(av), toString(aw), toString(ax), toString(ay), toString(az)], e)
140-
141-
142-func aA (aB,aC,aD,av,ay,az) = makeString(["%d%d%d%d%d%d", toString(aB), toString(aC), toString(aD), toString(av), toString(ay), toString(az)], e)
143-
144-
145-func aE (aF,aG,aH) = fraction(aF, aG, aH)
146-
147-
148-func aI (aF,aG,aH) = fraction(aF, aG, aH)
149-
150-
151-func aJ (aK,aL) = fraction(aK, c, aL)
152-
153-
154-func aM (aN,aO,aP,aQ) = {
155- let aR = aE(aP, c, aN)
156- let aS = aE(aQ, c, aO)
157- aJ(aS, aR)
158- }
159-
160-
161-func aT (aU) = if ((aU == "WAVES"))
162- then wavesBalance(this).available
163- else assetBalance(this, fromBase58String(aU))
164-
165-
166-func aV (aP,aQ,aW) = {
167- let aX = ab()
168- let aN = parseIntValue(aX[o])
169- let aO = parseIntValue(aX[p])
170- let aY = aM(aN, aO, aP, aQ)
171- let aZ = aE(aP, c, aN)
172- let ba = aE(aQ, c, aO)
173- let bb = aJ(aZ, aW)
174- let bc = aJ(ba, aW)
175-[aY, bb, bc]
176- }
177-
178-
179-func bd (be,bf,H) = {
180- let bg = ab()
181- let bh = bg[l]
182- let bi = bg[m]
183- let bj = bg[n]
184- let ai = bg[q]
185- let aj = bg[r]
186- let aN = parseIntValue(bg[o])
187- let aO = parseIntValue(bg[p])
188- let bk = bg[k]
189- let bl = al(ai, aj, H)
190- let bm = parseIntValue(bl[w])
191- let bn = parseIntValue(bl[u])
192- let bo = parseIntValue(bl[v])
193- let bp = ah(ai, aj)
194- let bq = parseIntValue(bp[w])
195- let br = parseIntValue(bp[u])
196- let bs = parseIntValue(bp[v])
197- if ((bh != be))
173+func bf (bg,bh,bi,S) = {
174+ let aY = ap()
175+ let bj = aY[n]
176+ let bk = aY[o]
177+ let bl = aY[p]
178+ let aO = parseIntValue(aY[q])
179+ let aP = parseIntValue(aY[r])
180+ let bm = aY[m]
181+ let bn = valueOrErrorMessage(assetInfo(fromBase58String(bj)), (("Asset " + bj) + " doesn't exist")).quantity
182+ if ((bj != bh))
198183 then throw("Invalid asset passed.")
199184 else {
200- let bt = aT(bi)
201- let bu = aT(bj)
202- let aZ = aE(bt, c, aN)
203- let ba = aE(bu, c, aO)
204- let aB = fraction(aZ, bf, bq)
205- let aC = fraction(ba, bf, bq)
206- let bv = aE(aB, aN, c)
207- let bw = aE(aC, aO, c)
208- let bx = aJ(ba, aZ)
209- $Tuple14(bv, bw, ai, aj, bn, bi, bo, bj, bm, br, bs, bq, bx, bk)
185+ let bo = aI(bk)
186+ let bp = A(bo, aO)
187+ let bq = aI(bl)
188+ let br = A(bq, aP)
189+ let bs = aK(br, bp)
190+ let bt = D(bs, b)
191+ let bu = A(bi, b)
192+ let bv = A(bn, b)
193+ let bw = fraction(bp, bu, bv)
194+ let bx = fraction(br, bu, bv)
195+ let by = D(bw, aO)
196+ let bz = D(bx, aP)
197+ let bA = if ((bg == ""))
198+ then nil
199+ else [ScriptTransfer(S, by, if ((bk == "WAVES"))
200+ then unit
201+ else fromBase58String(bk)), ScriptTransfer(S, bz, if ((bl == "WAVES"))
202+ then unit
203+ else fromBase58String(bl)), StringEntry(U(toString(S), bg), aE(by, bz, bi, bt, height, lastBlock.timestamp)), IntegerEntry(N(), bt), IntegerEntry(O(height, lastBlock.timestamp), bt)]
204+ $Tuple10(by, bz, bk, bl, bo, bq, bn, bs, bm, bA)
210205 }
211206 }
212207
213208
214-func by (bz,as,bA,at,bB,H,bC) = {
215- let aX = ab()
216- let bh = fromBase58String(aX[l])
217- let bi = aX[m]
218- let bj = aX[n]
219- let ai = aX[q]
220- let aj = aX[r]
221- let aN = parseIntValue(aX[o])
222- let aO = parseIntValue(aX[p])
223- let bk = aX[k]
224- let bD = ah(ai, aj)
225- let br = parseIntValue(bD[u])
226- let bs = parseIntValue(bD[v])
227- let bq = parseIntValue(bD[w])
228- let bE = al(ai, aj, H)
229- let bn = parseIntValue(bE[u])
230- let bo = parseIntValue(bE[v])
231- let bm = parseIntValue(bE[w])
232- if (if ((bi != bA))
209+func bB (bg,bC,bD,bE,bF,bG,S,bH,bI) = {
210+ let aY = ap()
211+ let bj = fromBase58String(aY[n])
212+ let bJ = aY[o]
213+ let bK = aY[p]
214+ let bL = aY[s]
215+ let bM = aY[t]
216+ let aZ = parseIntValue(aY[q])
217+ let ba = parseIntValue(aY[r])
218+ let bm = aY[m]
219+ let bn = valueOrErrorMessage(assetInfo(bj), (("Asset " + toBase58String(bj)) + " doesn't exist")).quantity
220+ let bN = toBase58String(valueOrElse(bE, fromBase58String("WAVES")))
221+ let bO = toBase58String(valueOrElse(bG, fromBase58String("WAVES")))
222+ if (if ((bJ != bN))
233223 then true
234- else (bj != bB))
235- then throw("Invalid amount or price asset passed.")
224+ else (bK != bO))
225+ then throw("Invalid amt or price asset passed.")
236226 else {
237- let bt = if (bC)
238- then aT(bi)
239- else (aT(bi) - as)
240- let bu = if (bC)
241- then aT(bj)
242- else (aT(bj) - at)
243- let bF = aE(as, c, aN)
244- let bG = aE(at, c, aO)
245- let bH = aJ(bG, bF)
246- let aZ = aE(bt, c, aN)
247- let ba = aE(bu, c, aO)
248- let bI = if ((bq == 0))
249- then 0
250- else aJ(ba, aZ)
251- let bJ = if ((bI == 0))
252- then 0
253- else if ((bI > bH))
254- then fraction((bI - bH), 100, bI)
255- else fraction((bH - bI), 100, bI)
256- if (if ((bI != 0))
257- then ((bJ * c) > bz)
258- else false)
259- then throw(((("Price slippage " + toString((bJ * c))) + " exceeded the passed limit of ") + toString(bz)))
227+ let bo = if (bH)
228+ then aI(bJ)
229+ else (aI(bJ) - bD)
230+ let bq = if (bH)
231+ then aI(bK)
232+ else (aI(bK) - bF)
233+ let bP = A(bD, aZ)
234+ let bQ = A(bF, ba)
235+ let bR = aK(bQ, bP)
236+ let bp = A(bo, aZ)
237+ let br = A(bq, ba)
238+ let bS = if ((bn == 0))
239+ then {
240+ let bs = e
241+ let bT = e
242+ let bc = pow((bP * bQ), 0, toBigInt(5), 1, 0, DOWN)
243+ $Tuple5(D(bc, b), D(bP, aZ), D(bQ, ba), aK((br + bQ), (bp + bP)), bT)
244+ }
260245 else {
261- let bK = aJ((ba + bG), (aZ + bF))
262- let bL = if ((bq == 0))
263- then {
264- let bM = pow(bF, 0, 5, 1, 0, DOWN)
265- let bN = pow(bG, 0, 5, 1, 0, DOWN)
266- (bM * bN)
246+ let bs = aK(br, bp)
247+ let bT = fraction(K((bs - bR)), d, bs)
248+ let bU = A(bC, b)
249+ if (if ((bs != e))
250+ then (bT > bU)
251+ else false)
252+ then throw(((("Price slippage " + toString(bT)) + " exceeded the passed limit of ") + toString(bU)))
253+ else {
254+ let bv = A(bn, b)
255+ let bV = fraction(bP, bs, d)
256+ let bW = fraction(bQ, d, bs)
257+ let bX = if ((bV > bQ))
258+ then $Tuple2(bW, bQ)
259+ else $Tuple2(bP, bV)
260+ let bY = bX._1
261+ let bZ = bX._2
262+ let bc = fraction(bv, bZ, br)
263+ $Tuple5(D(bc, b), D(bY, aZ), D(bZ, ba), bs, bT)
267264 }
268- else {
269- let bO = fraction(bq, bF, aZ)
270- let bP = fraction(bq, bG, ba)
271- if ((bP > bO))
272- then bO
273- else bP
274- }
275- if ((0 >= bL))
276- then throw()
277- else $Tuple13(bL, bK, bn, bo, bm, br, bs, bq, ai, aj, bh, bJ, bk)
265+ }
266+ let ca = bS._1
267+ let cb = bS._2
268+ let cc = bS._3
269+ let bt = D(bS._4, b)
270+ let cd = D(bS._5, b)
271+ if ((0 >= ca))
272+ then throw("Invalid calculations. LP calculated is less than zero.")
273+ else {
274+ let ce = if (!(bI))
275+ then 0
276+ else ca
277+ let cf = (bD - cb)
278+ let cg = (bF - cc)
279+ let ch = [IntegerEntry(N(), bt), IntegerEntry(O(height, lastBlock.timestamp), bt), StringEntry(R(S, bg), at(cb, cc, ce, bt, bC, cd, height, lastBlock.timestamp, cf, cg))]
280+ $Tuple13(ca, ce, bt, bo, bq, bn, bj, bm, ch, cf, cg, bE, bG)
278281 }
279282 }
280283 }
281284
282285
283-func bQ (bR) = {
284- let aX = ab()
285- let bi = aX[m]
286- let bj = aX[n]
287- let bk = parseIntValue(aX[k])
288- let bS = aX[t]
289- let bT = parseIntValue(aX[o])
290- let aO = parseIntValue(aX[p])
291- let bt = aT(bi)
292- let bu = aT(bj)
293- let bx = if ((bR.orderType == Buy))
294- then aM(bT, aO, (bt + bR.amount), bu)
295- else aM(bT, aO, (bt - bR.amount), bu)
296- let bU = if (if (if (aa())
286+func ci (cj) = {
287+ let aY = ap()
288+ let ck = aY[o]
289+ let cl = aY[p]
290+ let bm = parseIntValue(aY[m])
291+ let aZ = parseIntValue(aY[q])
292+ let ba = parseIntValue(aY[r])
293+ let cm = aI(ck)
294+ let cn = aI(cl)
295+ let bs = if ((cj.orderType == Buy))
296+ then aN(aZ, ba, (cm + cj.amount), cn)
297+ else aN(aZ, ba, (cm - cj.amount), cn)
298+ let bt = D(bs, b)
299+ if (if (if (ao())
297300 then true
298- else (bk == h))
301+ else (bm == j))
299302 then true
300- else (bk == i))
301- then false
302- else true
303- let bV = bR.assetPair.amountAsset
304- let bW = if ((bV == unit))
305- then "WAVES"
306- else toBase58String(value(bV))
307- let bX = bR.assetPair.priceAsset
308- let bY = if ((bX == unit))
309- then "WAVES"
310- else toBase58String(value(bX))
311- let bZ = if (if ((bW != bi))
312- then true
313- else (bY != bj))
314- then false
315- else true
316- let ca = bR.price
317- let cb = fraction(c, aO, bT)
318- let cc = aE(ca, c, cb)
319- let cd = if ((bR.orderType == Buy))
320- then (bx >= cc)
321- else (cc >= bx)
322- if (if (bZ)
323- then bU
324- else false)
325- then cd
326- else false
327- }
328-
329-
330-@Callable(ce)
331-func put (bz,cf) = {
332- let cg = ag()
333- let ch = valueOrErrorMessage(addressFromString(cg[x]), "Error. Incorrect staking address.")
334- let ci = value(ce.payments[0])
335- let as = ci.amount
336- let bA = if (!(isDefined(ci.assetId)))
337- then fromBase58String("WAVES")
338- else value(ci.assetId)
339- let cj = value(ce.payments[1])
340- let at = cj.amount
341- let bB = if (!(isDefined(cj.assetId)))
342- then fromBase58String("WAVES")
343- else value(cj.assetId)
344- let ck = by(bz, as, toBase58String(bA), at, toBase58String(bB), toString(ce.caller), false)
345- let bL = ck._1
346- let bI = ck._2
347- let bn = ck._3
348- let bo = ck._4
349- let bm = ck._5
350- let br = ck._6
351- let bs = ck._7
352- let bq = ck._8
353- let ai = ck._9
354- let aj = ck._10
355- let bh = ck._11
356- let cl = ck._12
357- let bk = parseIntValue(ck._13)
358- if (if (if (aa())
359- then true
360- else (bk == g))
361- then true
362- else (bk == i))
363- then throw(("Put operation is blocked by admin. Status = " + toString(bk)))
303+ else (bm == k))
304+ then throw("Exchange operations disabled")
364305 else {
365- let cm = invoke(a, "emit", [bL], nil)
366- if ((cm == cm))
367- then if ((cm != "success"))
368- then throw("LP asset reissue failed during emit call on factory.")
369- else {
370- let cn = [StringEntry(z(), ("%s__" + toString(bI))), StringEntry(A(height, lastBlock.timestamp), ("%s__" + toString(bI))), StringEntry(I(toString(ce.caller), toBase58String(ce.transactionId)), ar(as, at, bL, bI, bz, cl, height, lastBlock.timestamp)), StringEntry(G(ai, aj, toString(ce.caller)), am((bn + as), (bo + at), (bm + bL))), StringEntry(D(ai, aj), am((br + as), (bs + at), (bq + bL)))]
371- if (cf)
372- then {
373- let co = invoke(ch, "stake", nil, [AttachedPayment(bh, bL)])
374- if ((co == co))
375- then cn
376- else throw("Strict value is not equal to itself.")
377- }
378- else (cn :+ ScriptTransfer(ce.caller, bL, bh))
379- }
380- else throw("Strict value is not equal to itself.")
306+ let co = cj.assetPair.amountAsset
307+ let cp = if ((co == unit))
308+ then "WAVES"
309+ else toBase58String(value(co))
310+ let cq = cj.assetPair.priceAsset
311+ let cr = if ((cq == unit))
312+ then "WAVES"
313+ else toBase58String(value(cq))
314+ if (if ((cp != ck))
315+ then true
316+ else (cr != cl))
317+ then throw("Wrong order assets.")
318+ else {
319+ let cs = cj.price
320+ let ct = fraction(b, ba, aZ)
321+ let cu = G(cs, b, ct)
322+ let cv = if ((cj.orderType == Buy))
323+ then (bt >= cu)
324+ else (cu >= bt)
325+ true
326+ }
381327 }
382328 }
383329
384330
331+func cw (cx) = if ((size(cx.payments) != 1))
332+ then throw("exactly 1 payment is expected")
333+ else {
334+ let cy = value(cx.payments[0])
335+ let bh = value(cy.assetId)
336+ let cz = cy.amount
337+ let bS = bf(toBase58String(cx.transactionId), toBase58String(bh), cz, cx.caller)
338+ let by = bS._1
339+ let bz = bS._2
340+ let bm = parseIntValue(bS._9)
341+ let bA = bS._10
342+ if (if (ao())
343+ then true
344+ else (bm == k))
345+ then throw(("Get operation is blocked by admin. Status = " + toString(bm)))
346+ else $Tuple5(by, bz, cz, bh, bA)
347+ }
385348
386-@Callable(ce)
387-func get () = {
388- let ci = value(ce.payments[0])
389- let cp = value(ci.assetId)
390- let cq = ci.amount
391- let cn = bd(toBase58String(cp), cq, toString(ce.caller))
392- let aB = cn._1
393- let aC = cn._2
394- let ai = cn._3
395- let aj = cn._4
396- let bn = cn._5
397- let bi = cn._6
398- let bo = cn._7
399- let bj = cn._8
400- let bm = cn._9
401- let br = cn._10
402- let bs = cn._11
403- let bq = cn._12
404- let bx = cn._13
405- let bk = parseIntValue(cn._14)
406- if (if (aa())
407- then true
408- else (bk == i))
409- then throw(("Get operation is blocked by admin. Status = " + toString(bk)))
410- else {
411- let cr = invoke(a, "burn", [cq], [AttachedPayment(cp, cq)])
412- if ((cr == cr))
413- then if ((cr != "success"))
414- then throw("LP asset burn failed during emit call on factory.")
415- else [ScriptTransfer(ce.caller, aB, if ((bi == "WAVES"))
416- then unit
417- else fromBase58String(bi)), ScriptTransfer(ce.caller, aC, fromBase58String(bj)), StringEntry(G(ai, aj, toString(ce.caller)), am((bn - aB), (bo - aC), (bm - cq))), StringEntry(D(ai, aj), am((br - aB), (bs - aC), (bq - cq))), StringEntry(K(toString(ce.caller), toBase58String(ce.transactionId)), aA(aB, aC, cq, bx, height, lastBlock.timestamp)), StringEntry(z(), ("%s__" + toString(bx))), StringEntry(A(height, lastBlock.timestamp), ("%s__" + toString(bx)))]
349+
350+func cA (cx,bC,bI) = if ((size(cx.payments) != 2))
351+ then throw("exactly 2 payments are expected")
352+ else {
353+ let cB = value(cx.payments[0])
354+ let cC = value(cx.payments[1])
355+ let cD = bB(toBase58String(cx.transactionId), bC, cB.amount, cB.assetId, cC.amount, cC.assetId, toString(cx.caller), false, bI)
356+ let bm = parseIntValue(cD._8)
357+ if (if (if (ao())
358+ then true
359+ else (bm == i))
360+ then true
361+ else (bm == k))
362+ then throw(("Put operation is blocked by admin. Status = " + toString(bm)))
363+ else cD
364+ }
365+
366+
367+@Callable(cx)
368+func constructor (an,cE) = if ((cx.caller != this))
369+ then throw("permissions denied")
370+ else [StringEntry(L(), an), StringEntry(M(), cE)]
371+
372+
373+
374+@Callable(cx)
375+func put (bC,cF) = {
376+ let cG = as()
377+ let cH = valueOrErrorMessage(addressFromString(cG[y]), "Error. Incorrect staking address.")
378+ let cI = valueOrErrorMessage(addressFromString(cG[z]), "Error. Incorrect slippage contract address.")
379+ let cD = cA(cx, bC, true)
380+ let ce = cD._2
381+ let bj = cD._7
382+ let bA = cD._9
383+ let cf = cD._10
384+ let cg = cD._11
385+ let cJ = cD._12
386+ let cK = cD._13
387+ let cL = invoke(an, "emit", [ce], nil)
388+ if ((cL == cL))
389+ then {
390+ let cM = if ((cf > 0))
391+ then invoke(cI, "put", nil, [AttachedPayment(cJ, cf)])
392+ else nil
393+ if ((cM == cM))
394+ then {
395+ let cN = if ((cg > 0))
396+ then invoke(cI, "put", nil, [AttachedPayment(cK, cg)])
397+ else nil
398+ if ((cN == cN))
399+ then {
400+ let cO = if (cF)
401+ then invoke(cH, "stake", nil, [AttachedPayment(bj, ce)])
402+ else nil
403+ if ((cO == cO))
404+ then (bA :+ ScriptTransfer(cx.caller, ce, bj))
405+ else throw("Strict value is not equal to itself.")
406+ }
407+ else throw("Strict value is not equal to itself.")
408+ }
418409 else throw("Strict value is not equal to itself.")
419410 }
411+ else throw("Strict value is not equal to itself.")
420412 }
421413
422414
423415
424-@Callable(ce)
425-func activate (cs,ct) = if ((toString(ce.caller) != toString(a)))
426- then throw("permissions denied")
427- else $Tuple2([StringEntry(L(), cs), StringEntry(M(), ct)], "success")
428-
429-
430-
431-@Callable(ce)
432-func statsREADONLY () = {
433- let aX = ab()
434- let bh = fromBase58String(aX[l])
435- let bi = aX[m]
436- let bj = aX[n]
437- let ai = aX[q]
438- let aj = aX[r]
439- let aN = parseIntValue(aX[o])
440- let aO = parseIntValue(aX[p])
441- let bD = ah(ai, aj)
442- let bq = parseIntValue(bD[w])
443- let bt = aT(bi)
444- let bu = aT(bj)
445- let cu = aV(bt, bu, bq)
446- let bx = cu[0]
447- let cv = cu[1]
448- let cw = cu[2]
449- let cx = valueOrErrorMessage(getInteger(a, Y(toString(this))), "Pool doesn't have weight.")
450- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(bt), toString(bu), toString(bq), toString(bx), toString(cv), toString(cw), toString(cx)], e))
416+@Callable(cx)
417+func putForFree () = {
418+ let cD = cA(cx, 1, false)
419+ cD._9
451420 }
452421
453422
454423
455-@Callable(ce)
456-func evaluatePutByAmountAssetREADONLY (bz,as,H) = {
457- let aX = ab()
458- let bh = fromBase58String(aX[l])
459- let bi = aX[m]
460- let bj = aX[n]
461- let ai = aX[q]
462- let aj = aX[r]
463- let aN = parseIntValue(aX[o])
464- let aO = parseIntValue(aX[p])
465- let bk = aX[k]
466- let bD = ah(ai, aj)
467- let bq = parseIntValue(bD[w])
468- let bt = aT(bi)
469- let bu = aT(bj)
470- let cy = aE(bt, c, aN)
471- let cz = aE(bu, c, aO)
472- let bI = if ((bq == 0))
473- then 0
474- else aJ(cz, cy)
475- let bG = fraction(as, bI, c)
476- let at = aE(bG, aO, c)
477- let ck = by(bz, as, bi, at, bj, H, true)
478- let cA = ck._1
479- let cB = ck._2
480- let cC = ck._6
481- let cD = ck._7
482- let cE = ck._8
483- let cF = parseIntValue(ck._13)
484- $Tuple2(nil, makeString(["%d%d%d%d%d%d", toString(cA), toString(bI), toString(cC), toString(cD), toString(cE), toString(cF)], e))
424+@Callable(cx)
425+func get () = {
426+ let bS = cw(cx)
427+ let cP = bS._1
428+ let bz = bS._2
429+ let cz = bS._3
430+ let bh = bS._4
431+ let bA = bS._5
432+ let cQ = invoke(an, "burn", [cz], [AttachedPayment(bh, cz)])
433+ if ((cQ == cQ))
434+ then bA
435+ else throw("Strict value is not equal to itself.")
485436 }
486437
487438
488439
489-@Callable(ce)
490-func evaluatePutByPriceAssetREADONLY (bz,at,H) = {
491- let aX = ab()
492- let bh = fromBase58String(aX[l])
493- let bi = aX[m]
494- let bj = aX[n]
495- let ai = aX[q]
496- let aj = aX[r]
497- let aN = parseIntValue(aX[o])
498- let aO = parseIntValue(aX[p])
499- let bk = aX[k]
500- let bD = ah(ai, aj)
501- let bq = parseIntValue(bD[w])
502- let bt = aT(bi)
503- let bu = aT(bj)
504- let cy = aE(bt, c, aN)
505- let cz = aE(bu, c, aO)
506- let cG = aE(at, c, aO)
507- let bI = if ((bq == 0))
508- then 0
509- else aJ(cz, cy)
510- let bF = fraction(cG, c, bI)
511- let as = aE(bF, aN, c)
512- let ck = by(bz, as, bi, at, bj, H, true)
513- let cA = ck._1
514- let cB = ck._2
515- let cC = ck._6
516- let cD = ck._7
517- let cE = ck._8
518- let cF = parseIntValue(ck._13)
519- $Tuple2(nil, makeString(["%d%d%d%d%d%d", toString(cA), toString(bI), toString(cC), toString(cD), toString(cE), toString(cF)], e))
440+@Callable(cx)
441+func getNoLess (cR,cS) = {
442+ let bS = cw(cx)
443+ let by = bS._1
444+ let bz = bS._2
445+ let cz = bS._3
446+ let bh = bS._4
447+ let bA = bS._5
448+ if ((cR > by))
449+ then throw(((("noLessThenAmtAsset failed: " + toString(by)) + " < ") + toString(cR)))
450+ else if ((cS > bz))
451+ then throw(((("noLessThenPriceAsset failed: " + toString(bz)) + " < ") + toString(cS)))
452+ else {
453+ let cQ = invoke(an, "burn", [cz], [AttachedPayment(bh, cz)])
454+ if ((cQ == cQ))
455+ then bA
456+ else throw("Strict value is not equal to itself.")
457+ }
520458 }
521459
522460
523461
524-@Callable(ce)
525-func evaluateGetREADONLY (be,bf,H) = {
526- let cn = bd(be, bf, H)
527- let aB = cn._1
528- let aC = cn._2
529- let br = cn._10
530- let bs = cn._11
531- let bq = cn._12
532- let bx = cn._13
533- let bk = parseIntValue(cn._14)
534- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(aB), toString(aC), toString(br), toString(bs), toString(bq), toString(bx), toString(bk)], e))
462+@Callable(cx)
463+func activate (cT,cU) = if ((toString(cx.caller) != toString(an)))
464+ then throw("permissions denied")
465+ else $Tuple2([StringEntry(V(), cT), StringEntry(W(), cU)], "success")
466+
467+
468+
469+@Callable(cx)
470+func statsREADONLY () = {
471+ let aY = ap()
472+ let bj = fromBase58String(aY[n])
473+ let ck = aY[o]
474+ let cl = aY[p]
475+ let bL = aY[s]
476+ let bM = aY[t]
477+ let aZ = parseIntValue(aY[q])
478+ let ba = parseIntValue(aY[r])
479+ let cV = valueOrErrorMessage(assetInfo(bj), (("Asset " + toBase58String(bj)) + " doesn't exist")).quantity
480+ let cm = aI(ck)
481+ let cn = aI(cl)
482+ let cW = aU(cm, cn, cV)
483+ let bt = cW[0]
484+ let cX = cW[1]
485+ let cY = cW[2]
486+ let cZ = value(getInteger(an, ah(toString(this))))
487+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(cm), toString(cn), toString(cV), toString(bt), toString(cX), toString(cY), toString(cZ)], f))
535488 }
536489
537490
538491
539-@Callable(ce)
540-func hashREADONLY () = $Tuple2(nil, toBase64String(value(scriptHash(this))))
492+@Callable(cx)
493+func evaluatePutByAmountAssetREADONLY (bC,au,S) = {
494+ let aY = ap()
495+ let bj = fromBase58String(aY[n])
496+ let bJ = aY[o]
497+ let bk = fromBase58String(bJ)
498+ let bK = aY[p]
499+ let bl = fromBase58String(bK)
500+ let aZ = parseIntValue(aY[q])
501+ let ba = parseIntValue(aY[r])
502+ let bm = aY[m]
503+ let cV = valueOrErrorMessage(assetInfo(bj), (("Asset " + toBase58String(bj)) + " doesn't exist")).quantity
504+ let cm = aI(bJ)
505+ let cn = aI(bK)
506+ let aS = A(cm, aZ)
507+ let aT = A(cn, ba)
508+ let bs = if ((cV == 0))
509+ then e
510+ else aK(aT, aS)
511+ let da = A(au, aZ)
512+ let db = fraction(da, bs, d)
513+ let av = D(db, ba)
514+ let cD = bB("", bC, au, bk, av, bl, S, true, false)
515+ let ca = cD._1
516+ let dc = cD._3
517+ let bo = cD._4
518+ let bq = cD._5
519+ let bn = cD._6
520+ $Tuple2(nil, makeString(["%d%d%d%d%d%d", toString(ca), toString(D(bs, b)), toString(bo), toString(bq), toString(bn), bm], f))
521+ }
541522
542523
543-@Verifier(cH)
544-func cI () = {
545- let cJ = cH
546- if ($isInstanceOf(cJ, "Order"))
524+
525+@Callable(cx)
526+func evaluatePutByPriceAssetREADONLY (bC,av,S) = {
527+ let aY = ap()
528+ let bj = fromBase58String(aY[n])
529+ let bJ = aY[o]
530+ let bk = fromBase58String(bJ)
531+ let bK = aY[p]
532+ let bl = fromBase58String(bK)
533+ let aZ = parseIntValue(aY[q])
534+ let ba = parseIntValue(aY[r])
535+ let bm = aY[m]
536+ let cV = valueOrErrorMessage(assetInfo(bj), (("Asset " + toBase58String(bj)) + " doesn't exist")).quantity
537+ let cm = aI(bJ)
538+ let cn = aI(bK)
539+ let aS = A(cm, aZ)
540+ let aT = A(cn, ba)
541+ let bs = if ((cV == 0))
542+ then e
543+ else aK(aT, aS)
544+ let db = A(av, ba)
545+ let da = fraction(db, d, bs)
546+ let au = D(da, aZ)
547+ let cD = bB("", bC, au, bk, av, bl, S, true, false)
548+ let ca = cD._1
549+ let dc = cD._3
550+ let bo = cD._4
551+ let bq = cD._5
552+ let bn = cD._6
553+ $Tuple2(nil, makeString(["%d%d%d%d%d%d", toString(ca), toString(D(bs, b)), toString(bo), toString(bq), toString(bn), bm], f))
554+ }
555+
556+
557+
558+@Callable(cx)
559+func evaluateGetREADONLY (dd,de,df) = {
560+ let bS = bf("", dd, de, this)
561+ let by = bS._1
562+ let bz = bS._2
563+ let bo = bS._5
564+ let bq = bS._6
565+ let bn = bS._7
566+ let bt = bS._8
567+ let bm = parseIntValue(bS._9)
568+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(by), toString(bz), toString(bo), toString(bq), toString(bn), toString(bt), toString(bm)], f))
569+ }
570+
571+
572+@Verifier(dg)
573+func dh () = {
574+ let di = dg
575+ if ($isInstanceOf(di, "Order"))
547576 then {
548- let bR = cJ
549- if (bQ(bR))
550- then sigVerify(cH.bodyBytes, cH.proofs[0], cH.senderPublicKey)
577+ let cj = di
578+ if (ci(cj))
579+ then sigVerify(cj.bodyBytes, cj.proofs[0], cj.senderPublicKey)
551580 else false
552581 }
553- else sigVerify(cH.bodyBytes, cH.proofs[0], cH.senderPublicKey)
582+ else {
583+ let dj = valueOrElse(getString(this, M()), g)
584+ if ((dj == g))
585+ then sigVerify(dg.bodyBytes, dg.proofs[0], dg.senderPublicKey)
586+ else sigVerify(dg.bodyBytes, dg.proofs[0], fromBase58String(dj))
587+ }
554588 }
555589

github/deemru/w8io/3ef1775 
98.64 ms