tx · BsvzhJ3rsAL1GPMpynvegu9bftqHxXw3fnqtcMntdTFp 3PH75p2rmMKCV2nyW4TsAdFgFtmc61mJaqA: -0.01400000 Waves 2022.05.15 22:16 [3118661] smart account 3PH75p2rmMKCV2nyW4TsAdFgFtmc61mJaqA > SELF 0.00000000 Waves
{ "type": 13, "id": "BsvzhJ3rsAL1GPMpynvegu9bftqHxXw3fnqtcMntdTFp", "fee": 1400000, "feeAssetId": null, "timestamp": 1652642248270, "version": 2, "chainId": 87, "sender": "3PH75p2rmMKCV2nyW4TsAdFgFtmc61mJaqA", "senderPublicKey": "3GtkwhnMmG1yeozW51o4dJ1x3BDToPaLBXyBWKGdAc2e", "proofs": [ "ey1UQrvBcMNQiyM2amgkFgVRRYb8Ahs69RHt2UjJqjEK9ybLDEjTRswZkhANUjf71V3kCKrToPep58qrbaA9kVt" ], "script": "base64:AAIFAAAAAAAAAC0IAhIDCgEIEgASBAoCCAgSBAoCCAgSABIAEgMKAQgSAwoBCBIDCgEIEgMKAQgAAAAmAAAAAApwZXJjaFByaWNlCQAAaAAAAAIAAAAAAAAAAGQAAAAAAAAPQkAAAAAABXNjYWxlAAAAAAAAACcQAAAAAAZzY2FsZTIAAAAAAAAPQkABAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgAAAAdhZGRyZXNzAAAAA2tleQQAAAAHJG1hdGNoMAkABB0AAAACBQAAAAdhZGRyZXNzBQAAAANrZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABlN0cmluZwQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQIAAAAAAQAAAAx0cnlHZXRTdHJpbmcAAAABAAAAA2tleQkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgUAAAAEdGhpcwUAAAADa2V5AQAAAAlnZXRPcmFjbGUAAAAACQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQkBAAAADHRyeUdldFN0cmluZwAAAAECAAAAFHN0YXRpY19vcmFjbGVBZGRyZXNzAQAAAA1nZXRFZ2dBc3NldElkAAAAAAkAAlkAAAABCQEAAAAUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwAAAACCQEAAAAJZ2V0T3JhY2xlAAAAAAIAAAARc3RhdGljX2VnZ0Fzc2V0SWQBAAAAE2dldEluY3ViYXRvckFkZHJlc3MAAAAACQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgkBAAAACWdldE9yYWNsZQAAAAACAAAAF3N0YXRpY19pbmN1YmF0b3JBZGRyZXNzAQAAABFnZXRSZWJpcnRoQWRkcmVzcwAAAAAJAQAAAAdBZGRyZXNzAAAAAQkAAlkAAAABCQEAAAAUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwAAAACCQEAAAAJZ2V0T3JhY2xlAAAAAAIAAAAVc3RhdGljX3JlYmlydGhBZGRyZXNzAQAAABNnZXRTd29wUHJvbW9BZGRyZXNzAAAAAAkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEJAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIJAQAAAAlnZXRPcmFjbGUAAAAAAgAAABdzdGF0aWNfc3dvcFByb21vQWRkcmVzcwEAAAARZ2V0QnJlZWRlckFkZHJlc3MAAAAACQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgkBAAAACWdldE9yYWNsZQAAAAACAAAAFXN0YXRpY19icmVlZGVyQWRkcmVzcwEAAAAVZ2V0UmVmQ29udHJhY3RBZGRyZXNzAAAAAAkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEJAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIJAQAAAAlnZXRPcmFjbGUAAAAAAgAAABlzdGF0aWNfcmVmQ29udHJhY3RBZGRyZXNzAQAAAA9nZXRJdGVtc0FkZHJlc3MAAAAACQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgkBAAAACWdldE9yYWNsZQAAAAACAAAAE3N0YXRpY19pdGVtc0FkZHJlc3MBAAAAEmdldE1ldGFyYWNlQWRkcmVzcwAAAAAJAQAAAAdBZGRyZXNzAAAAAQkAAlkAAAABCQEAAAAUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwAAAACCQEAAAAJZ2V0T3JhY2xlAAAAAAIAAAAWc3RhdGljX21ldGFSYWNlQWRkcmVzcwEAAAAUZ2V0QWNjQm9vc3RlckFkZHJlc3MAAAAACQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgkBAAAACWdldE9yYWNsZQAAAAACAAAAGHN0YXRpY19hY2NCb29zdGVyQWRkcmVzcwEAAAATZ2V0VHJ1c3RlZENvbnRyYWN0cwAAAAAJAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIJAQAAAAlnZXRPcmFjbGUAAAAAAgAAABdzdGF0aWNfdHJ1c3RlZENvbnRyYWN0cwEAAAAOZ2V0TWFpbnRlbmFuY2UAAAAACQEAAAAUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwAAAACCQEAAAAJZ2V0T3JhY2xlAAAAAAIAAAASc3RhdGljX21haW50ZW5hbmNlAAAAAA1SZWZlcmVyUmV3YXJk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bgQAAAABcwkBAAAADHRyeUdldFN0cmluZwAAAAEJAAEsAAAAAgIAAAAHYXNzZXRzXwUAAAADZ2VuAwkAAAAAAAACBQAAAAFzAgAAAAAFAAAAA25pbAkABLUAAAACBQAAAAFzAgAAAAEsAQAAAAxjYWxjSW50ZXJlc3QAAAADAAAAEHByZXZpb3VzSW50ZXJlc3QAAAAWcHJldmlvdXNJbnRlcmVzdEhlaWdodAAAABF0b3RhbEZhcm1pbmdQb3dlcgkAAGQAAAACBQAAABBwcmV2aW91c0ludGVyZXN0CQAAaQAAAAIJAABoAAAAAgkAAGgAAAACBQAAAAVzY2FsZQkBAAAAEWdldFJld2FyZFBlckJsb2NrAAAAAAkAAGUAAAACBQAAAAZoZWlnaHQFAAAAFnByZXZpb3VzSW50ZXJlc3RIZWlnaHQFAAAAEXRvdGFsRmFybWluZ1Bvd2VyAQAAABJnZXRDdXJyZW50SW50ZXJlc3QAAAAAAwkAAGYAAAACCQEAAAANdHJ5R2V0SW50ZWdlcgAAAAECAAAAEnRvdGFsX2Zhcm1pbmdQb3dlcgAAAAAAAAAAAAQAAAAQcHJldmlvdXNJbnRlcmVzdAkBAAAADXRyeUdldEludGVnZXIAAAABAgAAABd0b3RhbF9sYXN0Q2hlY2tJbnRlcmVzdAQAAAAWcHJldmlvdXNJbnRlcmVzdEhlaWdodAkBAAAADXRyeUdldEludGVnZXIAAAABAgAAAB10b3RhbF9sYXN0Q2hlY2tJbnRlcmVzdEhlaWdodAQAAAARdG90YWxGYXJtaW5nUG93ZXIJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQIAAAASdG90YWxfZmFybWluZ1Bvd2VyCQEAAAAMY2FsY0ludGVyZXN0AAAAAwUAAAAQcHJldmlvdXNJbnRlcmVzdAUAAAAWcHJldmlvdXNJbnRlcmVzdEhlaWdodAUAAAARdG90YWxGYXJtaW5nUG93ZXIDCQEAAAACIT0AAAACCQEAAAANdHJ5R2V0SW50ZWdlcgAAAAECAAAAEXRvdGFsX3N0YXJ0SGVpZ2h0AAAAAAAAAAAACQEAAAANdHJ5R2V0SW50ZWdlcgAAAAECAAAAF3RvdGFsX2xhc3RDaGVja0ludGVyZXN0CQAAAgAAAAECAAAAHGZhcm1pbmcgaXMgbm90IGxhdW5jaGVkLCB5ZXQBAAAAFGNhbGNBc3NldFJld2FyZERlbHRhAAAAAwAAAAdhZGRyZXNzAAAAB2Fzc2V0SWQAAAARYXNzZXRGYXJtaW5nUG93ZXIEAAAAFmxhc3RDaGVja0Fzc2V0SW50ZXJlc3QJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAhhZGRyZXNzXwUAAAAHYWRkcmVzcwIAAAAHX2Fzc2V0XwUAAAAHYXNzZXRJZAIAAAASX2xhc3RDaGVja0ludGVyZXN0BAAAAA9jdXJyZW50SW50ZXJlc3QJAQAAABJnZXRDdXJyZW50SW50ZXJlc3QAAAAACQAAaAAAAAIFAAAAEWFzc2V0RmFybWluZ1Bvd2VyCQAAZQAAAAIFAAAAD2N1cnJlbnRJbnRlcmVzdAUAAAAWbGFzdENoZWNrQXNzZXRJbnRlcmVzdAEAAAAUYWRkQXNzZXRJZFRvR2VuRW50cnkAAAACAAAAB2Fzc2V0SWQAAAAIYXNzZXRHZW4EAAAADGN1cnJlbnRWYWx1ZQkBAAAADHRyeUdldFN0cmluZwAAAAEJAAEsAAAAAgkAASwAAAACAgAAAAdhc3NldHNfBQAAAAhhc3NldEdlbgIAAAAHX2xvY2tlZAMJAAAAAAAAAgUAAAAMY3VycmVudFZhbHVlAgAAAAAFAAAAB2Fzc2V0SWQJAAEsAAAAAgkAASwAAAACBQAAAAxjdXJyZW50VmFsdWUCAAAAASwFAAAAB2Fzc2V0SWQBAAAADmdldFN0YWtlUmVzdWx0AAAABAAAAAdhZGRyZXNzAAAAB2Fzc2V0SWQAAAARYXNzZXRGYXJtaW5nUG93ZXIAAAAIdW5zdGFrZXIEAAAABWFzc2V0CQACWAAAAAEFAAAAB2Fzc2V0SWQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAICAAAAEnRvdGFsX2Zhcm1pbmdQb3dlcgkAAGQAAAACCQEAAAANdHJ5R2V0SW50ZWdlcgAAAAECAAAAEnRvdGFsX2Zhcm1pbmdQb3dlcgUAAAARYXNzZXRGYXJtaW5nUG93ZXIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAICAAAAF3RvdGFsX2xhc3RDaGVja0ludGVyZXN0CQEAAAASZ2V0Q3VycmVudEludGVyZXN0AAAAAAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAAAddG90YWxfbGFzdENoZWNrSW50ZXJlc3RIZWlnaHQFAAAABmhlaWdodAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAhhZGRyZXNzXwUAAAAHYWRkcmVzcwIAAAAHX2Fzc2V0XwUAAAAFYXNzZXQCAAAADV9mYXJtaW5nUG93ZXIFAAAAEWFzc2V0RmFybWluZ1Bvd2VyCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAACGFkZHJlc3NfBQAAAAdhZGRyZXNzAgAAAAdfYXNzZXRfBQAAAAVhc3NldAIAAAASX2xhc3RDaGVja0ludGVyZXN0CQEAAAASZ2V0Q3VycmVudEludGVyZXN0AAAAAAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAACGFkZHJlc3NfBQAAAAdhZGRyZXNzAgAAAAdfYXNzZXRfBQAAAAVhc3NldAIAAAAJX3Vuc3Rha2VyBQAAAAh1bnN0YWtlcgUAAAADbmlsAQAAABBnZXRVbnN0YWtlUmVzdWx0AAAABQAAAAdhZGRyZXNzAAAAB2Fzc2V0SWQAAAALcmV3YXJkRGVsdGEAAAAPd2l0aGRyYXduQW1vdW50AAAAEWFzc2V0RmFybWluZ1Bvd2VyBAAAAAVhc3NldAkAAlgAAAABBQAAAAdhc3NldElkCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACAgAAABJ0b3RhbF9mYXJtaW5nUG93ZXIJAABlAAAAAgkBAAAADXRyeUdldEludGVnZXIAAAABAgAAABJ0b3RhbF9mYXJtaW5nUG93ZXIFAAAAEWFzc2V0RmFybWluZ1Bvd2VyCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACAgAAABd0b3RhbF9sYXN0Q2hlY2tJbnRlcmVzdAkBAAAAEmdldEN1cnJlbnRJbnRlcmVzdAAAAAAJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAICAAAAHXRvdGFsX2xhc3RDaGVja0ludGVyZXN0SGVpZ2h0BQAAAAZoZWlnaHQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAIYWRkcmVzc18FAAAAB2FkZHJlc3MCAAAAB19hc3NldF8FAAAABWFzc2V0AgAAAA1fZmFybWluZ1Bvd2VyAAAAAAAAAAAACQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAACGFkZHJlc3NfBQAAAAdhZGRyZXNzAgAAAAdfYXNzZXRfBQAAAAVhc3NldAIAAAASX2xhc3RDaGVja0ludGVyZXN0CQEAAAASZ2V0Q3VycmVudEludGVyZXN0AAAAAAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAhhZGRyZXNzXwUAAAAHYWRkcmVzcwIAAAAHX2Fzc2V0XwUAAAAFYXNzZXQCAAAAEF93aXRoZHJhd25BbW91bnQJAABkAAAAAgkBAAAADXRyeUdldEludGVnZXIAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAACGFkZHJlc3NfBQAAAAdhZGRyZXNzAgAAAAdfYXNzZXRfBQAAAAVhc3NldAIAAAAQX3dpdGhkcmF3bkFtb3VudAkAAGgAAAACBQAAAA93aXRoZHJhd25BbW91bnQFAAAABnNjYWxlMgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAhhZGRyZXNzXwUAAAAHYWRkcmVzcwIAAAAHX2Fzc2V0XwUAAAAFYXNzZXQCAAAAFl9sYXN0Q2hlY2tGYXJtZWRBbW91bnQJAABkAAAAAgkBAAAADXRyeUdldEludGVnZXIAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAACGFkZHJlc3NfBQAAAAdhZGRyZXNzAgAAAAdfYXNzZXRfBQAAAAVhc3NldAIAAAAWX2xhc3RDaGVja0Zhcm1lZEFtb3VudAUAAAALcmV3YXJkRGVsdGEFAAAAA25pbAEAAAATY2FsY3VsYXRlUGVyY2hQcmljZQAAAAEAAAAHYWRkcmVzcwQAAAARaGFzQXJ0ZWZhY3RTdGFrZWQJAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIJAQAAABRnZXRBY2NCb29zdGVyQWRkcmVzcwAAAAAJAAEsAAAAAgkAASwAAAACAgAAAAtBUlQtWE1JU1RMXwUAAAAHYWRkcmVzcwIAAAAGX293bmVyAwkAAAAAAAACBQAAABFoYXNBcnRlZmFjdFN0YWtlZAIAAAAABQAAAApwZXJjaFByaWNlCQAAaAAAAAIJAABpAAAAAgUAAAAKcGVyY2hQcmljZQAAAAAAAAAACgAAAAAAAAAACQAAAAoAAAABaQEAAAAPY29uZmlndXJlT3JhY2xlAAAAAQAAAAZvcmFjbGUDCQEAAAACIT0AAAACCAUAAAABaQAAAAZjYWxsZXIFAAAABHRoaXMJAAACAAAAAQIAAAAKYWRtaW4gb25seQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACAgAAABRzdGF0aWNfb3JhY2xlQWRkcmVzcwUAAAAGb3JhY2xlBQAAAANuaWwAAAABaQEAAAAEaW5pdAAAAAADCQEAAAACIT0AAAACCAUAAAABaQAAAAZjYWxsZXIFAAAABHRoaXMJAAACAAAAAQIAAAAKYWRtaW4gb25seQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAAARdG90YWxfc3RhcnRIZWlnaHQFAAAABmhlaWdodAUAAAADbmlsAAAAAWkBAAAACGJ1eVBlcmNoAAAAAgAAAAVjb2xvcgAAAA5yZWZlcmVyQWRkcmVzcwMJAABmAAAAAgkBAAAACGlzTG9ja2VkAAAAAAAAAAAAAAAAAAkAAAIAAAABAgAAACVFR0cgb3BlcmF0aW9ucyBhcmUgdGVtcG9yYXJpbHkgbG9ja2VkAwkAAGYAAAACAAAAAAAAAAAACQEAAAAFdmFsdWUAAAABCQAETwAAAAIJAARMAAAAAgIAAAABQgkABEwAAAACAgAAAAFSCQAETAAAAAICAAAAAUcJAARMAAAAAgIAAAABWQUAAAADbmlsBQAAAAVjb2xvcgkAAAIAAAABAgAAAB55b3UgbmVlZCB0byBzZXQgY29sb3IgcHJvcGVybHkEAAAADGZpcnN0UGF5bWVudAkBAAAABXZhbHVlAAAAAQkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAQAAAAKZXhhY3RQcmljZQkBAAAAE2NhbGN1bGF0ZVBlcmNoUHJpY2UAAAABCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgMJAQAAAAIhPQAAAAIIBQAAAAxmaXJzdFBheW1lbnQAAAAHYXNzZXRJZAkBAAAADWdldEVnZ0Fzc2V0SWQAAAAACQAAAgAAAAEJAAEsAAAAAgIAAAA8WW91IGNhbiBhdHRhY2ggb25seSBFR0cgdG9rZW5zIHdpdGggdGhlIGZvbGxvd2luZyBhc3NldCBpZDogCQACWAAAAAEJAQAAAA1nZXRFZ2dBc3NldElkAAAAAAMJAQAAAAIhPQAAAAIIBQAAAAxmaXJzdFBheW1lbnQAAAAGYW1vdW50BQAAAApleGFjdFByaWNlCQAAAgAAAAEJAAEsAAAAAgIAAABDVG8gYnV5IGEgcGVyY2ggeW91IGN1cnJlbnRseSBuZWVkIHRoZSBmb2xsb3dpbmcgYW1vdW50IG9mIEVHR2xldHM6IAkAAaQAAAABBQAAAApleGFjdFByaWNlBAAAABVyZWZlcmVyUmV3YXJkRm9yUGVyY2gJAABrAAAAAwgFAAAADGZpcnN0UGF5bWVudAAAAAZhbW91bnQFAAAADVJlZmVyZXJSZXdhcmQAAAAAAAAAAGQEAAAAB3JlZkNhbGwJAAP8AAAABAkBAAAAFWdldFJlZkNvbnRyYWN0QWRkcmVzcwAAAAACAAAACnJlZlBheW1lbnQJAARMAAAAAgUAAAAOcmVmZXJlckFkZHJlc3MFAAAAA25pbAkABEwAAAACCQEAAAAPQXR0YWNoZWRQYXltZW50AAAAAgkBAAAADWdldEVnZ0Fzc2V0SWQAAAAABQAAABVyZWZlcmVyUmV3YXJkRm9yUGVyY2gFAAAAA25pbAMJAAAAAAAAAgUAAAAHcmVmQ2FsbAUAAAAHcmVmQ2FsbAQAAAAOcGVyY2hBbW91bnRLZXkJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAACGFkZHJlc3NfCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgIAAAASX3BlcmNoZXNBdmFpbGFibGVfBQAAAAVjb2xvcgQAAAALcGVyY2hBbW91bnQJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQUAAAAOcGVyY2hBbW91bnRLZXkJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAADnBlcmNoQW1vdW50S2V5CQAAZAAAAAIFAAAAC3BlcmNoQW1vdW50AAAAAAAAAAABBQAAAANuaWwJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAAAAWkBAAAADGFkZEZyZWVQZXJjaAAAAAIAAAAHYWRkcmVzcwAAAAVjb2xvcgMJAABmAAAAAgAAAAAAAAAAAAkBAAAABXZhbHVlAAAAAQkABE8AAAACCQAETAAAAAICAAAAAUIJAARMAAAAAgIAAAABUgkABEwAAAACAgAAAAFHCQAETAAAAAICAAAAAVkFAAAAA25pbAUAAAAFY29sb3IJAAACAAAAAQIAAAAeeW91IG5lZWQgdG8gc2V0IGNvbG9yIHByb3Blcmx5AwMDCQEAAAACIT0AAAACCAUAAAABaQAAAAZjYWxsZXIJAQAAABFnZXRSZWJpcnRoQWRkcmVzcwAAAAAJAQAAAAIhPQAAAAIIBQAAAAFpAAAABmNhbGxlcgUAAAAEdGhpcwcJAQAAAAIhPQAAAAIIBQAAAAFpAAAABmNhbGxlcgkBAAAAE2dldFN3b3BQcm9tb0FkZHJlc3MAAAAABwkAAAIAAAABAgAAABtyZWJpcnRoIGFuZCBzd29wIHByb21vIG9ubHkEAAAADnBlcmNoQW1vdW50S2V5CQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAhhZGRyZXNzXwUAAAAHYWRkcmVzcwIAAAASX3BlcmNoZXNBdmFpbGFibGVfBQAAAAVjb2xvcgQAAAALcGVyY2hBbW91bnQJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQUAAAAOcGVyY2hBbW91bnRLZXkJAAUUAAAAAgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAOcGVyY2hBbW91bnRLZXkJAABkAAAAAgUAAAALcGVyY2hBbW91bnQAAAAAAAAAAAEFAAAAA25pbAIAAAAAAAAAAWkBAAAACHN0YWtlTkZUAAAAAAMJAABmAAAAAgkBAAAACGlzTG9ja2VkAAAAAAAAAAAAAAAAAAkAAAIAAAABAgAAACVFR0cgb3BlcmF0aW9ucyBhcmUgdGVtcG9yYXJpbHkgbG9ja2VkBAAAAANwbXQJAQAAAAV2YWx1ZQAAAAEJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAEAAAAB2Fzc2V0SWQJAQAAAAV2YWx1ZQAAAAEICQEAAAAFdmFsdWUAAAABCQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAAAAAAB2Fzc2V0SWQEAAAACnJlYWxDYWxsZXIJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBAAAAAdhZGRyZXNzAwkAAAAAAAACCQEAAAASZ2V0TWV0YXJhY2VBZGRyZXNzAAAAAAgFAAAAAWkAAAAGY2FsbGVyBQAAAApyZWFsQ2FsbGVyCQAEJQAAAAEIBQAAAAFpAAAADG9yaWdpbkNhbGxlcgQAAAAFY29sb3IJAQAAAAl0YWtlUmlnaHQAAAACCAkBAAAABXZhbHVlAAAAAQkAA+wAAAABBQAAAAdhc3NldElkAAAABG5hbWUAAAAAAAAAAAEEAAAAEGF2YWlsYWJsZVBlcmNoZXMJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAIYWRkcmVzc18FAAAAB2FkZHJlc3MCAAAAEl9wZXJjaGVzQXZhaWxhYmxlXwUAAAAFY29sb3IDCQEAAAACIT0AAAACCAUAAAADcG10AAAABmFtb3VudAAAAAAAAAAAAQkAAAIAAAABAgAAABNORlQgaXMgbm90IGF0dGFjaGVkAwkAAGcAAAACAAAAAAAAAAAABQAAABBhdmFpbGFibGVQZXJjaGVzCQAAAgAAAAEJAAEsAAAAAgIAAAAjbm8gcGVyY2hlcyBhdmFpbGFibGUgZm9yIHRoZSBjb2xvciAFAAAABWNvbG9yBAAAAA0kdDAxMDUyNjEwNTk5CQEAAAAUZ2V0QXNzZXRGYXJtaW5nUG93ZXIAAAACBQAAAAdhc3NldElkBQAAAAdhZGRyZXNzBAAAAAhhc3NldEdlbggFAAAADSR0MDEwNTI2MTA1OTkAAAACXzEEAAAAEWFzc2V0RmFybWluZ1Bvd2VyCAUAAAANJHQwMTA1MjYxMDU5OQAAAAJfMgkABE4AAAACCQEAAAAOZ2V0U3Rha2VSZXN1bHQAAAAEBQAAAAdhZGRyZXNzBQAAAAdhc3NldElkBQAAABFhc3NldEZhcm1pbmdQb3dlcgUAAAAKcmVhbENhbGxlcgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAIYWRkcmVzc18FAAAAB2FkZHJlc3MCAAAAEl9wZXJjaGVzQXZhaWxhYmxlXwUAAAAFY29sb3IJAABlAAAAAgUAAAAQYXZhaWxhYmxlUGVyY2hlcwAAAAAAAAAAAQUAAAADbmlsAAAAAWkBAAAAFHN0YWtlTkZUV2l0aG91dFBlcmNoAAAAAAQAAAAQYWxsb3dlZENvbnRyYWN0cwkBAAAAE2dldFRydXN0ZWRDb250cmFjdHMAAAAABAAAABRhbGxvd2VkQ29udHJhY3RzTGlzdAkABLUAAAACBQAAABBhbGxvd2VkQ29udHJhY3RzAgAAAAE7BAAAAApkYXBwVG9DYWxsCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgMJAAAAAAAAAgkABE8AAAACBQAAABRhbGxvd2VkQ29udHJhY3RzTGlzdAUAAAAKZGFwcFRvQ2FsbAUAAAAEdW5pdAkAAAIAAAABAgAAADdPbmx5IHRydXN0ZWQgc21hcnQgY29udHJhY3RzIGNhbiBzdGFrZSB3aXRob3V0IGEgcGVyY2ghAwkAAGYAAAACCQEAAAAIaXNMb2NrZWQAAAAAAAAAAAAAAAAACQAAAgAAAAECAAAAJUVHRyBvcGVyYXRpb25zIGFyZSB0ZW1wb3JhcmlseSBsb2NrZWQEAAAAA3BtdAkBAAAABXZhbHVlAAAAAQkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAQAAAAHYXNzZXRJZAkBAAAABXZhbHVlAAAAAQgJAQAAAAV2YWx1ZQAAAAEJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAAAAAHYXNzZXRJZAQAAAAHYWRkcmVzcwkABCUAAAABCAUAAAABaQAAAAxvcmlnaW5DYWxsZXIDCQEAAAACIT0AAAACCAUAAAADcG10AAAABmFtb3VudAAAAAAAAAAAAQkAAAIAAAABAgAAABNORlQgaXMgbm90IGF0dGFjaGVkBAAAAA0kdDAxMTQxMDExNDgzCQEAAAAUZ2V0QXNzZXRGYXJtaW5nUG93ZXIAAAACBQAAAAdhc3NldElkBQAAAAdhZGRyZXNzBAAAAAhhc3NldEdlbggFAAAADSR0MDExNDEwMTE0ODMAAAACXzEEAAAAEWFzc2V0RmFybWluZ1Bvd2VyCAUAAAANJHQwMTE0MTAxMTQ4MwAAAAJfMgQAAAAFYXNzZXQJAAJYAAAAAQUAAAAHYXNzZXRJZAQAAAAKcmVhbENhbGxlcgkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIJAAROAAAAAgkBAAAADmdldFN0YWtlUmVzdWx0AAAABAUAAAAHYWRkcmVzcwUAAAAHYXNzZXRJZAUAAAARYXNzZXRGYXJtaW5nUG93ZXIFAAAACnJlYWxDYWxsZXIJAARMAAAAAgkBAAAADEJvb2xlYW5FbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAIYWRkcmVzc18FAAAAB2FkZHJlc3MCAAAAB19hc3NldF8FAAAABWFzc2V0AgAAAA5fd2l0aG91dF9wZXJjaAYFAAAAA25pbAAAAAFpAQAAAAp1bnN0YWtlTkZUAAAAAQAAAAVhc3NldAQAAAADYWRkCQAEJQAAAAEIBQAAAAFpAAAADG9yaWdpbkNhbGxlcgMJAQAAABFpc1VzZXJCbGFja2xpc3RlZAAAAAEFAAAAA2FkZAkAAAIAAAABAgAAANNPb29wcywgbG9va3MgbGlrZSB5b3UgbG9zdCBpbiBvbmUgb2YgdGhlIER1Y2tzcXVpZCBnYW1lcyEgQXMgeW91IGFscmVhZHkga25vdywgYW55IGxvc3MgaGFzIGl0cyBjb25zZXF1ZW5jZXMsIHNvIHlvdSB3aWxsIGJlIG5vdCBhYmxlIHRvIGNsYWltIHlvdXIgZmFybWluZyByZXdhcmRzIHRpbGwgdGhlIGVuZCBvZiBEdWNrU3F1aWQgZ2FtZS4gUXVhY2sgaW4gcGVhY2UhAwkAAGYAAAACCQEAAAAIaXNMb2NrZWQAAAAAAAAAAAAAAAAACQAAAgAAAAECAAAAJUVHRyBvcGVyYXRpb25zIGFyZSB0ZW1wb3JhcmlseSBsb2NrZWQEAAAAB2Fzc2V0SWQJAAJZAAAAAQUAAAAFYXNzZXQEAAAACHVuc3Rha2VyCQEAAAAMdHJ5R2V0U3RyaW5nAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAhhZGRyZXNzXwUAAAADYWRkAgAAAAdfYXNzZXRfBQAAAAVhc3NldAIAAAAJX3Vuc3Rha2VyBAAAAAdhZGRyZXNzAwMJAAAAAAAAAgUAAAAIdW5zdGFrZXICAAAAAAkAAAAAAAACCQEAAAASZ2V0TWV0YXJhY2VBZGRyZXNzAAAAAAgFAAAAAWkAAAAGY2FsbGVyBwkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIFAAAAA2FkZAQAAAARYXNzZXRGYXJtaW5nUG93ZXIJAQAAAB1nZXRMYXN0S25vd25Bc3NldEZhcm1pbmdQb3dlcgAAAAIFAAAAB2FkZHJlc3MFAAAABWFzc2V0BAAAABBhc3NldFJld2FyZERlbHRhCQEAAAAUY2FsY0Fzc2V0UmV3YXJkRGVsdGEAAAADBQAAAAdhZGRyZXNzBQAAAAVhc3NldAUAAAARYXNzZXRGYXJtaW5nUG93ZXIEAAAADGZhcm1lZEFtb3VudAkAAGQAAAACBQAAABBhc3NldFJld2FyZERlbHRhCQEAAAANdHJ5R2V0SW50ZWdlcgAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAIYWRkcmVzc18FAAAAB2FkZHJlc3MCAAAAB19hc3NldF8FAAAABWFzc2V0AgAAABZfbGFzdENoZWNrRmFybWVkQW1vdW50BAAAAA93aXRoZHJhd25BbW91bnQJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAhhZGRyZXNzXwUAAAAHYWRkcmVzcwIAAAAHX2Fzc2V0XwUAAAAFYXNzZXQCAAAAEF93aXRoZHJhd25BbW91bnQEAAAABnJld2FyZAkAAGkAAAACCQAAZQAAAAIFAAAADGZhcm1lZEFtb3VudAUAAAAPd2l0aGRyYXduQW1vdW50CQAAaAAAAAIFAAAABXNjYWxlAAAAAAAAAABkBAAAAAVjb2xvcgkBAAAACXRha2VSaWdodAAAAAIICQEAAAAFdmFsdWUAAAABCQAD7AAAAAEFAAAAB2Fzc2V0SWQAAAAEbmFtZQAAAAAAAAAAAQQAAAAKcmVhbENhbGxlcgkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIDAwkBAAAAAiE9AAAAAgUAAAAIdW5zdGFrZXICAAAAAAkBAAAAAiE9AAAAAgUAAAAIdW5zdGFrZXIFAAAACnJlYWxDYWxsZXIHCQAAAgAAAAECAAAAUkl0IHNlZW1zIGR1Y2sgd2FzIHN0YWtlZCB0aHJvdWggYSBkYXBwLCBub3QgZGlyZWN0bHksIHBsZWFzZSB1bnN0YWtlIHRocm91Z2ggZGFwcCEDCQAAZwAAAAIAAAAAAAAAAAAFAAAAEWFzc2V0RmFybWluZ1Bvd2VyCQAAAgAAAAECAAAAE2Fzc2V0IG5vdCBhdmFpbGFibGUEAAAADmlzV2l0aG91dFBlcmNoCQEAAAANdHJ5R2V0Qm9vbGVhbgAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAIYWRkcmVzc18FAAAAB2FkZHJlc3MCAAAAB19hc3NldF8FAAAABWFzc2V0AgAAAA5fd2l0aG91dF9wZXJjaAMJAAAAAAAAAgUAAAAFY29sb3ICAAAAAVUJAAACAAAAAQIAAAArdXNlIGFub3RoZXIgZnVuY3Rpb24gdG8gdW5zdGFrZSBKYWNrcG90IE5GVAQAAAAGcmVzdWx0CQEAAAAQZ2V0VW5zdGFrZVJlc3VsdAAAAAUFAAAAB2FkZHJlc3MFAAAAB2Fzc2V0SWQFAAAAEGFzc2V0UmV3YXJkRGVsdGEFAAAABnJld2FyZAUAAAARYXNzZXRGYXJtaW5nUG93ZXIEAAAADWFwcGVuZFBlcmNoZXMDBQAAAA5pc1dpdGhvdXRQZXJjaAkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAACGFkZHJlc3NfBQAAAAdhZGRyZXNzAgAAAAdfYXNzZXRfBQAAAAVhc3NldAIAAAAOX3dpdGhvdXRfcGVyY2gFAAAAA25pbAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAIYWRkcmVzc18FAAAAB2FkZHJlc3MCAAAAEl9wZXJjaGVzQXZhaWxhYmxlXwUAAAAFY29sb3IJAABkAAAAAgkBAAAADXRyeUdldEludGVnZXIAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAhhZGRyZXNzXwUAAAAHYWRkcmVzcwIAAAASX3BlcmNoZXNBdmFpbGFibGVfBQAAAAVjb2xvcgAAAAAAAAAAAQUAAAADbmlsCQAFFAAAAAIJAAROAAAAAgkABE4AAAACBQAAAAZyZXN1bHQJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyCQAAaAAAAAIFAAAABnJld2FyZAAAAAAAAA9CQAkBAAAADWdldEVnZ0Fzc2V0SWQAAAAACQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgAAAAAAAAAAAQUAAAAHYXNzZXRJZAUAAAADbmlsBQAAAA1hcHBlbmRQZXJjaGVzCQAAaAAAAAIFAAAABnJld2FyZAAAAAAAAA9CQAAAAAFpAQAAAAxzdGFrZUphY2twb3QAAAABAAAABWNvbG9yAwkAAGYAAAACCQEAAAAIaXNMb2NrZWQAAAAAAAAAAAAAAAAACQAAAgAAAAECAAAAJUVHRyBvcGVyYXRpb25zIGFyZSB0ZW1wb3JhcmlseSBsb2NrZWQEAAAAA3BtdAkBAAAABXZhbHVlAAAAAQkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAQAAAAHYXNzZXRJZAkBAAAABXZhbHVlAAAAAQgFAAAAA3BtdAAAAAdhc3NldElkBAAAAApyZWFsQ2FsbGVyCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgQAAAAHYWRkcmVzcwMJAAAAAAAAAgkBAAAAEmdldE1ldGFyYWNlQWRkcmVzcwAAAAAIBQAAAAFpAAAABmNhbGxlcgUAAAAKcmVhbENhbGxlcgkABCUAAAABCAUAAAABaQAAAAxvcmlnaW5DYWxsZXIEAAAAEGF2YWlsYWJsZVBlcmNoZXMJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAIYWRkcmVzc18FAAAAB2FkZHJlc3MCAAAAEl9wZXJjaGVzQXZhaWxhYmxlXwUAAAAFY29sb3IEAAAAC2Fzc2V0SXNzdWVyCAkBAAAABXZhbHVlAAAAAQkAA+wAAAABBQAAAAdhc3NldElkAAAABmlzc3VlcgMJAQAAAAIhPQAAAAIIBQAAAANwbXQAAAAGYW1vdW50AAAAAAAAAAABCQAAAgAAAAECAAAAE05GVCBpcyBub3QgYXR0YWNoZWQDAwkAAAAAAAACBQAAAAthc3NldElzc3VlcgkBAAAAE2dldEluY3ViYXRvckFkZHJlc3MAAAAABgkAAAAAAAACBQAAAAthc3NldElzc3VlcgkBAAAAEWdldEJyZWVkZXJBZGRyZXNzAAAAAAMJAQAAAAIhPQAAAAIJAQAAAAl0YWtlUmlnaHQAAAACCQEAAAAFdmFsdWUAAAABCAkBAAAABXZhbHVlAAAAAQkAA+wAAAABBQAAAAdhc3NldElkAAAABG5hbWUAAAAAAAAAAAECAAAAAVUJAAACAAAAAQIAAAAMamFja3BvdCBvbmx5AwkAAGcAAAACAAAAAAAAAAAABQAAABBhdmFpbGFibGVQZXJjaGVzCQAAAgAAAAEJAAEsAAAAAgIAAAAjbm8gcGVyY2hlcyBhdmFpbGFibGUgZm9yIHRoZSBjb2xvciAFAAAABWNvbG9yCQAETgAAAAIJAQAAAA5nZXRTdGFrZVJlc3VsdAAAAAQFAAAAB2FkZHJlc3MFAAAAB2Fzc2V0SWQAAAAAAAAAAGQFAAAACnJlYWxDYWxsZXIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAACGFkZHJlc3NfBQAAAAdhZGRyZXNzAgAAABJfcGVyY2hlc0F2YWlsYWJsZV8FAAAABWNvbG9yCQAAZQAAAAIFAAAAEGF2YWlsYWJsZVBlcmNoZXMAAAAAAAAAAAEJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAhhZGRyZXNzXwUAAAAHYWRkcmVzcwIAAAAHX2Fzc2V0XwkAAlgAAAABBQAAAAdhc3NldElkAgAAAAtfcGVyY2hDb2xvcgUAAAAFY29sb3IFAAAAA25pbAkAAAIAAAABAgAAABJhc3NldCBpcyBub3QgdmFsaWQAAAABaQEAAAAOdW5zdGFrZUphY2twb3QAAAABAAAABWFzc2V0BAAAAApyZWFsQ2FsbGVyCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgQAAAAHYWRkcmVzcwMJAAAAAAAAAgkBAAAAEmdldE1ldGFyYWNlQWRkcmVzcwAAAAAIBQAAAAFpAAAABmNhbGxlcgUAAAAKcmVhbENhbGxlcgkABCUAAAABCAUAAAABaQAAAAxvcmlnaW5DYWxsZXIDCQEAAAARaXNVc2VyQmxhY2tsaXN0ZWQAAAABBQAAAAdhZGRyZXNzCQAAAgAAAAECAAAA009vb3BzLCBsb29rcyBsaWtlIHlvdSBsb3N0IGluIG9uZSBvZiB0aGUgRHVja3NxdWlkIGdhbWVzISBBcyB5b3UgYWxyZWFkeSBrbm93LCBhbnkgbG9zcyBoYXMgaXRzIGNvbnNlcXVlbmNlcywgc28geW91IHdpbGwgYmUgbm90IGFibGUgdG8gY2xhaW0geW91ciBmYXJtaW5nIHJld2FyZHMgdGlsbCB0aGUgZW5kIG9mIER1Y2tTcXVpZCBnYW1lLiBRdWFjayBpbiBwZWFjZSEDCQAAZgAAAAIJAQAAAAhpc0xvY2tlZAAAAAAAAAAAAAAAAAAJAAACAAAAAQIAAAAlRUdHIG9wZXJhdGlvbnMgYXJlIHRlbXBvcmFyaWx5IGxvY2tlZAQAAAAHYXNzZXRJZAkAAlkAAAABBQAAAAVhc3NldAQAAAAFY29sb3IJAQAAAAx0cnlHZXRTdHJpbmcAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAACGFkZHJlc3NfBQAAAAdhZGRyZXNzAgAAAAdfYXNzZXRfBQAAAAVhc3NldAIAAAALX3BlcmNoQ29sb3IEAAAAEWFzc2V0RmFybWluZ1Bvd2VyCQEAAAAdZ2V0TGFzdEtub3duQXNzZXRGYXJtaW5nUG93ZXIAAAACBQAAAAdhZGRyZXNzBQAAAAVhc3NldAQAAAAQYXNzZXRSZXdhcmREZWx0YQkBAAAAFGNhbGNBc3NldFJld2FyZERlbHRhAAAAAwUAAAAHYWRkcmVzcwUAAAAFYXNzZXQFAAAAEWFzc2V0RmFybWluZ1Bvd2VyBAAAAAxmYXJtZWRBbW91bnQJAABkAAAAAgUAAAAQYXNzZXRSZXdhcmREZWx0YQkBAAAADXRyeUdldEludGVnZXIAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAACGFkZHJlc3NfBQAAAAdhZGRyZXNzAgAAAAdfYXNzZXRfBQAAAAVhc3NldAIAAAAWX2xhc3RDaGVja0Zhcm1lZEFtb3VudAQAAAAPd2l0aGRyYXduQW1vdW50CQEAAAANdHJ5R2V0SW50ZWdlcgAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAIYWRkcmVzc18FAAAAB2FkZHJlc3MCAAAAB19hc3NldF8FAAAABWFzc2V0AgAAABBfd2l0aGRyYXduQW1vdW50BAAAAAZyZXdhcmQJAABpAAAAAgkAAGUAAAACBQAAAAxmYXJtZWRBbW91bnQFAAAAD3dpdGhkcmF3bkFtb3VudAkAAGgAAAACBQAAAAVzY2FsZQAAAAAAAAAAZAQAAAAIdW5zdGFrZXIJAQAAAAx0cnlHZXRTdHJpbmcAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAACGFkZHJlc3NfBQAAAAdhZGRyZXNzAgAAAAdfYXNzZXRfBQAAAAVhc3NldAIAAAAJX3Vuc3Rha2VyAwMJAQAAAAIhPQAAAAIFAAAACHVuc3Rha2VyAgAAAAAJAQAAAAIhPQAAAAIFAAAACHVuc3Rha2VyBQAAAApyZWFsQ2FsbGVyBwkAAAIAAAABAgAAAFJJdCBzZWVtcyBkdWNrIHdhcyBzdGFrZWQgdGhyb3VoIGEgZGFwcCwgbm90IGRpcmVjdGx5LCBwbGVhc2UgdW5zdGFrZSB0aHJvdWdoIGRhcHAhAwkBAAAAAiE9AAAAAgkBAAAACXRha2VSaWdodAAAAAIJAQAAAAV2YWx1ZQAAAAEICQEAAAAFdmFsdWUAAAABCQAD7AAAAAEFAAAAB2Fzc2V0SWQAAAAEbmFtZQAAAAAAAAAAAQIAAAABVQkAAAIAAAABAgAAAAxqYWNrcG90IG9ubHkDCQAAZgAAAAIFAAAAEWFzc2V0RmFybWluZ1Bvd2VyAAAAAAAAAAAABAAAAAZyZXN1bHQJAQAAABBnZXRVbnN0YWtlUmVzdWx0AAAABQUAAAAHYWRkcmVzcwUAAAAHYXNzZXRJZAUAAAAQYXNzZXRSZXdhcmREZWx0YQUAAAAGcmV3YXJkBQAAABFhc3NldEZhcm1pbmdQb3dlcgQAAAAOaXNXaXRob3V0UGVyY2gJAQAAAA10cnlHZXRCb29sZWFuAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAhhZGRyZXNzXwUAAAAHYWRkcmVzcwIAAAAHX2Fzc2V0XwUAAAAFYXNzZXQCAAAADl93aXRob3V0X3BlcmNoBAAAAA1hcHBlbmRQZXJjaGVzAwUAAAAOaXNXaXRob3V0UGVyY2gJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAhhZGRyZXNzXwUAAAAHYWRkcmVzcwIAAAAHX2Fzc2V0XwUAAAAFYXNzZXQCAAAADl93aXRob3V0X3BlcmNoBQAAAANuaWwJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAACGFkZHJlc3NfBQAAAAdhZGRyZXNzAgAAABJfcGVyY2hlc0F2YWlsYWJsZV8FAAAABWNvbG9yCQAAZAAAAAIJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAIYWRkcmVzc18FAAAAB2FkZHJlc3MCAAAAEl9wZXJjaGVzQXZhaWxhYmxlXwUAAAAFY29sb3IAAAAAAAAAAAEFAAAAA25pbAkABRQAAAACCQAETgAAAAIJAAROAAAAAgUAAAAGcmVzdWx0BQAAAA1hcHBlbmRQZXJjaGVzCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgkAAGgAAAACBQAAAAZyZXdhcmQAAAAAAAAPQkAJAQAAAA1nZXRFZ2dBc3NldElkAAAAAAkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIAAAAAAAAAAAEFAAAAB2Fzc2V0SWQFAAAAA25pbAkAAGgAAAACBQAAAAZyZXdhcmQAAAAAAAAPQkAJAAACAAAAAQIAAAAAAAAAAWkBAAAAC2NsYWltUmV3YXJkAAAAAQAAAAVhc3NldAQAAAAHYWRkcmVzcwkABCUAAAABCAUAAAABaQAAAAxvcmlnaW5DYWxsZXIDCQEAAAARaXNVc2VyQmxhY2tsaXN0ZWQAAAABBQAAAAdhZGRyZXNzCQAAAgAAAAECAAAA009vb3BzLCBsb29rcyBsaWtlIHlvdSBsb3N0IGluIG9uZSBvZiB0aGUgRHVja3NxdWlkIGdhbWVzISBBcyB5b3UgYWxyZWFkeSBrbm93LCBhbnkgbG9zcyBoYXMgaXRzIGNvbnNlcXVlbmNlcywgc28geW91IHdpbGwgYmUgbm90IGFibGUgdG8gY2xhaW0geW91ciBmYXJtaW5nIHJld2FyZHMgdGlsbCB0aGUgZW5kIG9mIER1Y2tTcXVpZCBnYW1lLiBRdWFjayBpbiBwZWFjZSEDCQAAZgAAAAIJAQAAAAhpc0xvY2tlZAAAAAAAAAAAAAAAAAAJAAACAAAAAQIAAAAlRUdHIG9wZXJhdGlvbnMgYXJlIHRlbXBvcmFyaWx5IGxvY2tlZAQAAAAHYXNzZXRJZAkAAlkAAAABBQAAAAVhc3NldAQAAAARYXNzZXRGYXJtaW5nUG93ZXIJAQAAAB1nZXRMYXN0S25vd25Bc3NldEZhcm1pbmdQb3dlcgAAAAIFAAAAB2FkZHJlc3MFAAAABWFzc2V0BAAAABBhc3NldFJld2FyZERlbHRhCQEAAAAUY2FsY0Fzc2V0UmV3YXJkRGVsdGEAAAADBQAAAAdhZGRyZXNzBQAAAAVhc3NldAUAAAARYXNzZXRGYXJtaW5nUG93ZXIEAAAADGZhcm1lZEFtb3VudAkAAGQAAAACBQAAABBhc3NldFJld2FyZERlbHRhCQEAAAANdHJ5R2V0SW50ZWdlcgAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAIYWRkcmVzc18FAAAAB2FkZHJlc3MCAAAAB19hc3NldF8FAAAABWFzc2V0AgAAABZfbGFzdENoZWNrRmFybWVkQW1vdW50BAAAAA93aXRoZHJhd25BbW91bnQJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAhhZGRyZXNzXwUAAAAHYWRkcmVzcwIAAAAHX2Fzc2V0XwUAAAAFYXNzZXQCAAAAEF93aXRoZHJhd25BbW91bnQEAAAABnJld2FyZAkAAGkAAAACCQAAZQAAAAIFAAAADGZhcm1lZEFtb3VudAUAAAAPd2l0aGRyYXduQW1vdW50CQAAaAAAAAIFAAAABXNjYWxlAAAAAAAAAABkAwkAAGcAAAACAAAAAAAAAAAABQAAAAZyZXdhcmQJAAACAAAAAQIAAAAceW91IGhhdmUgbm8gRUdHcyB0byB3aXRoZHJhdwkABRQAAAACCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAACGFkZHJlc3NfBQAAAAdhZGRyZXNzAgAAAAdfYXNzZXRfBQAAAAVhc3NldAIAAAAQX3dpdGhkcmF3bkFtb3VudAkAAGQAAAACCQEAAAANdHJ5R2V0SW50ZWdlcgAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAIYWRkcmVzc18FAAAAB2FkZHJlc3MCAAAAB19hc3NldF8FAAAABWFzc2V0AgAAABBfd2l0aGRyYXduQW1vdW50CQAAaAAAAAIFAAAABnJld2FyZAUAAAAGc2NhbGUyCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMJAQAAAAdBZGRyZXNzAAAAAQkAAlkAAAABBQAAAAdhZGRyZXNzCQAAaAAAAAIFAAAABnJld2FyZAAAAAAAAA9CQAkBAAAADWdldEVnZ0Fzc2V0SWQAAAAABQAAAANuaWwJAABoAAAAAgUAAAAGcmV3YXJkAAAAAAAAD0JAAAAAAJ92eGE=", "height": 3118661, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 2VLDN1yBHEWKSCfJ93LKXTGQ8gChan36QWdwV89QU4ur Next: 2kavK9wcWV7ZC4eUhtCPKtPTbtEZfi5aGX8GDgHjnmBc Diff:
Old | New | Differences | |
---|---|---|---|
51 | 51 | func getTrustedContracts () = tryGetStringExternal(getOracle(), "static_trustedContracts") | |
52 | 52 | ||
53 | 53 | ||
54 | + | func getMaintenance () = tryGetStringExternal(getOracle(), "static_maintenance") | |
55 | + | ||
56 | + | ||
54 | 57 | let RefererReward = 5 | |
58 | + | ||
59 | + | let maintenance = if ((getMaintenance() == "maintenance")) | |
60 | + | then throw("Smart contract under maintenance!") | |
61 | + | else getMaintenance() | |
55 | 62 | ||
56 | 63 | func getRewardPerBlock () = 684 | |
57 | 64 | ||
275 | 282 | else if ((0 >= availablePerches)) | |
276 | 283 | then throw(("no perches available for the color " + color)) | |
277 | 284 | else { | |
278 | - | let $ | |
279 | - | let assetGen = $ | |
280 | - | let assetFarmingPower = $ | |
285 | + | let $t01052610599 = getAssetFarmingPower(assetId, address) | |
286 | + | let assetGen = $t01052610599._1 | |
287 | + | let assetFarmingPower = $t01052610599._2 | |
281 | 288 | (getStakeResult(address, assetId, assetFarmingPower, realCaller) ++ [IntegerEntry(((("address_" + address) + "_perchesAvailable_") + color), (availablePerches - 1))]) | |
282 | 289 | } | |
283 | 290 | } | |
300 | 307 | if ((pmt.amount != 1)) | |
301 | 308 | then throw("NFT is not attached") | |
302 | 309 | else { | |
303 | - | let $ | |
304 | - | let assetGen = $ | |
305 | - | let assetFarmingPower = $ | |
310 | + | let $t01141011483 = getAssetFarmingPower(assetId, address) | |
311 | + | let assetGen = $t01141011483._1 | |
312 | + | let assetFarmingPower = $t01141011483._2 | |
306 | 313 | let asset = toBase58String(assetId) | |
307 | 314 | let realCaller = toString(i.caller) | |
308 | 315 | (getStakeResult(address, assetId, assetFarmingPower, realCaller) ++ [BooleanEntry((((("address_" + address) + "_asset_") + asset) + "_without_perch"), true)]) |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 5 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | let perchPrice = (100 * 1000000) | |
5 | 5 | ||
6 | 6 | let scale = 10000 | |
7 | 7 | ||
8 | 8 | let scale2 = 1000000 | |
9 | 9 | ||
10 | 10 | func tryGetStringExternal (address,key) = match getString(address, key) { | |
11 | 11 | case a: String => | |
12 | 12 | a | |
13 | 13 | case _ => | |
14 | 14 | "" | |
15 | 15 | } | |
16 | 16 | ||
17 | 17 | ||
18 | 18 | func tryGetString (key) = tryGetStringExternal(this, key) | |
19 | 19 | ||
20 | 20 | ||
21 | 21 | func getOracle () = Address(fromBase58String(tryGetString("static_oracleAddress"))) | |
22 | 22 | ||
23 | 23 | ||
24 | 24 | func getEggAssetId () = fromBase58String(tryGetStringExternal(getOracle(), "static_eggAssetId")) | |
25 | 25 | ||
26 | 26 | ||
27 | 27 | func getIncubatorAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_incubatorAddress"))) | |
28 | 28 | ||
29 | 29 | ||
30 | 30 | func getRebirthAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_rebirthAddress"))) | |
31 | 31 | ||
32 | 32 | ||
33 | 33 | func getSwopPromoAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_swopPromoAddress"))) | |
34 | 34 | ||
35 | 35 | ||
36 | 36 | func getBreederAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_breederAddress"))) | |
37 | 37 | ||
38 | 38 | ||
39 | 39 | func getRefContractAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_refContractAddress"))) | |
40 | 40 | ||
41 | 41 | ||
42 | 42 | func getItemsAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_itemsAddress"))) | |
43 | 43 | ||
44 | 44 | ||
45 | 45 | func getMetaraceAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_metaRaceAddress"))) | |
46 | 46 | ||
47 | 47 | ||
48 | 48 | func getAccBoosterAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_accBoosterAddress"))) | |
49 | 49 | ||
50 | 50 | ||
51 | 51 | func getTrustedContracts () = tryGetStringExternal(getOracle(), "static_trustedContracts") | |
52 | 52 | ||
53 | 53 | ||
54 | + | func getMaintenance () = tryGetStringExternal(getOracle(), "static_maintenance") | |
55 | + | ||
56 | + | ||
54 | 57 | let RefererReward = 5 | |
58 | + | ||
59 | + | let maintenance = if ((getMaintenance() == "maintenance")) | |
60 | + | then throw("Smart contract under maintenance!") | |
61 | + | else getMaintenance() | |
55 | 62 | ||
56 | 63 | func getRewardPerBlock () = 684 | |
57 | 64 | ||
58 | 65 | ||
59 | 66 | func isLocked () = { | |
60 | 67 | let masterAddress = Address(base58'3PEPftf2kWZDmAaWBjs6BUJa9957kiA2PkU') | |
61 | 68 | match getInteger(masterAddress, "egglock") { | |
62 | 69 | case b: Int => | |
63 | 70 | b | |
64 | 71 | case _ => | |
65 | 72 | 0 | |
66 | 73 | } | |
67 | 74 | } | |
68 | 75 | ||
69 | 76 | ||
70 | 77 | func tryGetInteger (key) = match getInteger(this, key) { | |
71 | 78 | case b: Int => | |
72 | 79 | b | |
73 | 80 | case _ => | |
74 | 81 | 0 | |
75 | 82 | } | |
76 | 83 | ||
77 | 84 | ||
78 | 85 | func tryGetBoolean (key) = match getBoolean(this, key) { | |
79 | 86 | case b: Boolean => | |
80 | 87 | b | |
81 | 88 | case _ => | |
82 | 89 | false | |
83 | 90 | } | |
84 | 91 | ||
85 | 92 | ||
86 | 93 | func isUserBlacklisted (address) = false | |
87 | 94 | ||
88 | 95 | ||
89 | 96 | func getAssetOrigin (generation) = if ((generation == "G")) | |
90 | 97 | then getIncubatorAddress() | |
91 | 98 | else getBreederAddress() | |
92 | 99 | ||
93 | 100 | ||
94 | 101 | func getAssetRarity (genotype,generation) = { | |
95 | 102 | let quantity = valueOrErrorMessage(getInteger(getAssetOrigin(generation), (("stats_" + genotype) + "_quantity")), (("stats_" + genotype) + "_quantity not found")) | |
96 | 103 | let power = pow((10000 / quantity), 4, 5, 1, 2, FLOOR) | |
97 | 104 | if ((power > 0)) | |
98 | 105 | then power | |
99 | 106 | else 2 | |
100 | 107 | } | |
101 | 108 | ||
102 | 109 | ||
103 | 110 | func asString (value) = match value { | |
104 | 111 | case string: String => | |
105 | 112 | string | |
106 | 113 | case _ => | |
107 | 114 | throw("wrong type, expected: String") | |
108 | 115 | } | |
109 | 116 | ||
110 | 117 | ||
111 | 118 | func asInt (value) = match value { | |
112 | 119 | case int: Int => | |
113 | 120 | int | |
114 | 121 | case _ => | |
115 | 122 | throw("wrong type, expected: Int") | |
116 | 123 | } | |
117 | 124 | ||
118 | 125 | ||
119 | 126 | func getAssetFarmingPower (assetId,address) = if (if ((value(assetInfo(assetId)).issuer == getBreederAddress())) | |
120 | 127 | then true | |
121 | 128 | else (value(assetInfo(assetId)).issuer == getIncubatorAddress())) | |
122 | 129 | then { | |
123 | 130 | let assetName = value(assetInfo(assetId)).name | |
124 | 131 | let generation = take(takeRight(assetName, 2), 1) | |
125 | 132 | let farmGen = asString(invoke(getBreederAddress(), "getGenFromName", [assetName], nil)) | |
126 | 133 | if ((farmGen == farmGen)) | |
127 | 134 | then { | |
128 | 135 | let farmBoost = asInt(invoke(getItemsAddress(), "calculateFarmingPowerBoost", [toBase58String(assetId), address], nil)) | |
129 | 136 | if ((farmBoost == farmBoost)) | |
130 | 137 | then { | |
131 | 138 | let rarity = getAssetRarity(farmGen, generation) | |
132 | 139 | let totalFarmingPower = (rarity + fraction(rarity, farmBoost, 100)) | |
133 | 140 | $Tuple2(farmGen, totalFarmingPower) | |
134 | 141 | } | |
135 | 142 | else throw("Strict value is not equal to itself.") | |
136 | 143 | } | |
137 | 144 | else throw("Strict value is not equal to itself.") | |
138 | 145 | } | |
139 | 146 | else throw("not valid NFT") | |
140 | 147 | ||
141 | 148 | ||
142 | 149 | func getLastKnownAssetFarmingPower (address,assetId) = tryGetInteger((((("address_" + address) + "_asset_") + assetId) + "_farmingPower")) | |
143 | 150 | ||
144 | 151 | ||
145 | 152 | func getAssetsByGen (gen) = { | |
146 | 153 | let s = tryGetString(("assets_" + gen)) | |
147 | 154 | if ((s == "")) | |
148 | 155 | then nil | |
149 | 156 | else split(s, ",") | |
150 | 157 | } | |
151 | 158 | ||
152 | 159 | ||
153 | 160 | func calcInterest (previousInterest,previousInterestHeight,totalFarmingPower) = (previousInterest + (((scale * getRewardPerBlock()) * (height - previousInterestHeight)) / totalFarmingPower)) | |
154 | 161 | ||
155 | 162 | ||
156 | 163 | func getCurrentInterest () = if ((tryGetInteger("total_farmingPower") > 0)) | |
157 | 164 | then { | |
158 | 165 | let previousInterest = tryGetInteger("total_lastCheckInterest") | |
159 | 166 | let previousInterestHeight = tryGetInteger("total_lastCheckInterestHeight") | |
160 | 167 | let totalFarmingPower = tryGetInteger("total_farmingPower") | |
161 | 168 | calcInterest(previousInterest, previousInterestHeight, totalFarmingPower) | |
162 | 169 | } | |
163 | 170 | else if ((tryGetInteger("total_startHeight") != 0)) | |
164 | 171 | then tryGetInteger("total_lastCheckInterest") | |
165 | 172 | else throw("farming is not launched, yet") | |
166 | 173 | ||
167 | 174 | ||
168 | 175 | func calcAssetRewardDelta (address,assetId,assetFarmingPower) = { | |
169 | 176 | let lastCheckAssetInterest = tryGetInteger((((("address_" + address) + "_asset_") + assetId) + "_lastCheckInterest")) | |
170 | 177 | let currentInterest = getCurrentInterest() | |
171 | 178 | (assetFarmingPower * (currentInterest - lastCheckAssetInterest)) | |
172 | 179 | } | |
173 | 180 | ||
174 | 181 | ||
175 | 182 | func addAssetIdToGenEntry (assetId,assetGen) = { | |
176 | 183 | let currentValue = tryGetString((("assets_" + assetGen) + "_locked")) | |
177 | 184 | if ((currentValue == "")) | |
178 | 185 | then assetId | |
179 | 186 | else ((currentValue + ",") + assetId) | |
180 | 187 | } | |
181 | 188 | ||
182 | 189 | ||
183 | 190 | func getStakeResult (address,assetId,assetFarmingPower,unstaker) = { | |
184 | 191 | let asset = toBase58String(assetId) | |
185 | 192 | [IntegerEntry("total_farmingPower", (tryGetInteger("total_farmingPower") + assetFarmingPower)), IntegerEntry("total_lastCheckInterest", getCurrentInterest()), IntegerEntry("total_lastCheckInterestHeight", height), IntegerEntry((((("address_" + address) + "_asset_") + asset) + "_farmingPower"), assetFarmingPower), IntegerEntry((((("address_" + address) + "_asset_") + asset) + "_lastCheckInterest"), getCurrentInterest()), StringEntry((((("address_" + address) + "_asset_") + asset) + "_unstaker"), unstaker)] | |
186 | 193 | } | |
187 | 194 | ||
188 | 195 | ||
189 | 196 | func getUnstakeResult (address,assetId,rewardDelta,withdrawnAmount,assetFarmingPower) = { | |
190 | 197 | let asset = toBase58String(assetId) | |
191 | 198 | [IntegerEntry("total_farmingPower", (tryGetInteger("total_farmingPower") - assetFarmingPower)), IntegerEntry("total_lastCheckInterest", getCurrentInterest()), IntegerEntry("total_lastCheckInterestHeight", height), IntegerEntry((((("address_" + address) + "_asset_") + asset) + "_farmingPower"), 0), IntegerEntry((((("address_" + address) + "_asset_") + asset) + "_lastCheckInterest"), getCurrentInterest()), IntegerEntry((((("address_" + address) + "_asset_") + asset) + "_withdrawnAmount"), (tryGetInteger((((("address_" + address) + "_asset_") + asset) + "_withdrawnAmount")) + (withdrawnAmount * scale2))), IntegerEntry((((("address_" + address) + "_asset_") + asset) + "_lastCheckFarmedAmount"), (tryGetInteger((((("address_" + address) + "_asset_") + asset) + "_lastCheckFarmedAmount")) + rewardDelta))] | |
192 | 199 | } | |
193 | 200 | ||
194 | 201 | ||
195 | 202 | func calculatePerchPrice (address) = { | |
196 | 203 | let hasArtefactStaked = tryGetStringExternal(getAccBoosterAddress(), (("ART-XMISTL_" + address) + "_owner")) | |
197 | 204 | if ((hasArtefactStaked == "")) | |
198 | 205 | then perchPrice | |
199 | 206 | else ((perchPrice / 10) * 9) | |
200 | 207 | } | |
201 | 208 | ||
202 | 209 | ||
203 | 210 | @Callable(i) | |
204 | 211 | func configureOracle (oracle) = if ((i.caller != this)) | |
205 | 212 | then throw("admin only") | |
206 | 213 | else [StringEntry("static_oracleAddress", oracle)] | |
207 | 214 | ||
208 | 215 | ||
209 | 216 | ||
210 | 217 | @Callable(i) | |
211 | 218 | func init () = if ((i.caller != this)) | |
212 | 219 | then throw("admin only") | |
213 | 220 | else [IntegerEntry("total_startHeight", height)] | |
214 | 221 | ||
215 | 222 | ||
216 | 223 | ||
217 | 224 | @Callable(i) | |
218 | 225 | func buyPerch (color,refererAddress) = if ((isLocked() > 0)) | |
219 | 226 | then throw("EGG operations are temporarily locked") | |
220 | 227 | else if ((0 > value(indexOf(["B", "R", "G", "Y"], color)))) | |
221 | 228 | then throw("you need to set color properly") | |
222 | 229 | else { | |
223 | 230 | let firstPayment = value(i.payments[0]) | |
224 | 231 | let exactPrice = calculatePerchPrice(toString(i.caller)) | |
225 | 232 | if ((firstPayment.assetId != getEggAssetId())) | |
226 | 233 | then throw(("You can attach only EGG tokens with the following asset id: " + toBase58String(getEggAssetId()))) | |
227 | 234 | else if ((firstPayment.amount != exactPrice)) | |
228 | 235 | then throw(("To buy a perch you currently need the following amount of EGGlets: " + toString(exactPrice))) | |
229 | 236 | else { | |
230 | 237 | let refererRewardForPerch = fraction(firstPayment.amount, RefererReward, 100) | |
231 | 238 | let refCall = invoke(getRefContractAddress(), "refPayment", [refererAddress], [AttachedPayment(getEggAssetId(), refererRewardForPerch)]) | |
232 | 239 | if ((refCall == refCall)) | |
233 | 240 | then { | |
234 | 241 | let perchAmountKey = ((("address_" + toString(i.caller)) + "_perchesAvailable_") + color) | |
235 | 242 | let perchAmount = tryGetInteger(perchAmountKey) | |
236 | 243 | [IntegerEntry(perchAmountKey, (perchAmount + 1))] | |
237 | 244 | } | |
238 | 245 | else throw("Strict value is not equal to itself.") | |
239 | 246 | } | |
240 | 247 | } | |
241 | 248 | ||
242 | 249 | ||
243 | 250 | ||
244 | 251 | @Callable(i) | |
245 | 252 | func addFreePerch (address,color) = if ((0 > value(indexOf(["B", "R", "G", "Y"], color)))) | |
246 | 253 | then throw("you need to set color properly") | |
247 | 254 | else if (if (if ((i.caller != getRebirthAddress())) | |
248 | 255 | then (i.caller != this) | |
249 | 256 | else false) | |
250 | 257 | then (i.caller != getSwopPromoAddress()) | |
251 | 258 | else false) | |
252 | 259 | then throw("rebirth and swop promo only") | |
253 | 260 | else { | |
254 | 261 | let perchAmountKey = ((("address_" + address) + "_perchesAvailable_") + color) | |
255 | 262 | let perchAmount = tryGetInteger(perchAmountKey) | |
256 | 263 | $Tuple2([IntegerEntry(perchAmountKey, (perchAmount + 1))], "") | |
257 | 264 | } | |
258 | 265 | ||
259 | 266 | ||
260 | 267 | ||
261 | 268 | @Callable(i) | |
262 | 269 | func stakeNFT () = if ((isLocked() > 0)) | |
263 | 270 | then throw("EGG operations are temporarily locked") | |
264 | 271 | else { | |
265 | 272 | let pmt = value(i.payments[0]) | |
266 | 273 | let assetId = value(value(i.payments[0]).assetId) | |
267 | 274 | let realCaller = toString(i.caller) | |
268 | 275 | let address = if ((getMetaraceAddress() == i.caller)) | |
269 | 276 | then realCaller | |
270 | 277 | else toString(i.originCaller) | |
271 | 278 | let color = takeRight(value(assetInfo(assetId)).name, 1) | |
272 | 279 | let availablePerches = tryGetInteger(((("address_" + address) + "_perchesAvailable_") + color)) | |
273 | 280 | if ((pmt.amount != 1)) | |
274 | 281 | then throw("NFT is not attached") | |
275 | 282 | else if ((0 >= availablePerches)) | |
276 | 283 | then throw(("no perches available for the color " + color)) | |
277 | 284 | else { | |
278 | - | let $ | |
279 | - | let assetGen = $ | |
280 | - | let assetFarmingPower = $ | |
285 | + | let $t01052610599 = getAssetFarmingPower(assetId, address) | |
286 | + | let assetGen = $t01052610599._1 | |
287 | + | let assetFarmingPower = $t01052610599._2 | |
281 | 288 | (getStakeResult(address, assetId, assetFarmingPower, realCaller) ++ [IntegerEntry(((("address_" + address) + "_perchesAvailable_") + color), (availablePerches - 1))]) | |
282 | 289 | } | |
283 | 290 | } | |
284 | 291 | ||
285 | 292 | ||
286 | 293 | ||
287 | 294 | @Callable(i) | |
288 | 295 | func stakeNFTWithoutPerch () = { | |
289 | 296 | let allowedContracts = getTrustedContracts() | |
290 | 297 | let allowedContractsList = split(allowedContracts, ";") | |
291 | 298 | let dappToCall = toString(i.caller) | |
292 | 299 | if ((indexOf(allowedContractsList, dappToCall) == unit)) | |
293 | 300 | then throw("Only trusted smart contracts can stake without a perch!") | |
294 | 301 | else if ((isLocked() > 0)) | |
295 | 302 | then throw("EGG operations are temporarily locked") | |
296 | 303 | else { | |
297 | 304 | let pmt = value(i.payments[0]) | |
298 | 305 | let assetId = value(value(i.payments[0]).assetId) | |
299 | 306 | let address = toString(i.originCaller) | |
300 | 307 | if ((pmt.amount != 1)) | |
301 | 308 | then throw("NFT is not attached") | |
302 | 309 | else { | |
303 | - | let $ | |
304 | - | let assetGen = $ | |
305 | - | let assetFarmingPower = $ | |
310 | + | let $t01141011483 = getAssetFarmingPower(assetId, address) | |
311 | + | let assetGen = $t01141011483._1 | |
312 | + | let assetFarmingPower = $t01141011483._2 | |
306 | 313 | let asset = toBase58String(assetId) | |
307 | 314 | let realCaller = toString(i.caller) | |
308 | 315 | (getStakeResult(address, assetId, assetFarmingPower, realCaller) ++ [BooleanEntry((((("address_" + address) + "_asset_") + asset) + "_without_perch"), true)]) | |
309 | 316 | } | |
310 | 317 | } | |
311 | 318 | } | |
312 | 319 | ||
313 | 320 | ||
314 | 321 | ||
315 | 322 | @Callable(i) | |
316 | 323 | func unstakeNFT (asset) = { | |
317 | 324 | let add = toString(i.originCaller) | |
318 | 325 | if (isUserBlacklisted(add)) | |
319 | 326 | then throw("Ooops, looks like you lost in one of the Ducksquid games! As you already know, any loss has its consequences, so you will be not able to claim your farming rewards till the end of DuckSquid game. Quack in peace!") | |
320 | 327 | else if ((isLocked() > 0)) | |
321 | 328 | then throw("EGG operations are temporarily locked") | |
322 | 329 | else { | |
323 | 330 | let assetId = fromBase58String(asset) | |
324 | 331 | let unstaker = tryGetString((((("address_" + add) + "_asset_") + asset) + "_unstaker")) | |
325 | 332 | let address = if (if ((unstaker == "")) | |
326 | 333 | then (getMetaraceAddress() == i.caller) | |
327 | 334 | else false) | |
328 | 335 | then toString(i.caller) | |
329 | 336 | else add | |
330 | 337 | let assetFarmingPower = getLastKnownAssetFarmingPower(address, asset) | |
331 | 338 | let assetRewardDelta = calcAssetRewardDelta(address, asset, assetFarmingPower) | |
332 | 339 | let farmedAmount = (assetRewardDelta + tryGetInteger((((("address_" + address) + "_asset_") + asset) + "_lastCheckFarmedAmount"))) | |
333 | 340 | let withdrawnAmount = tryGetInteger((((("address_" + address) + "_asset_") + asset) + "_withdrawnAmount")) | |
334 | 341 | let reward = ((farmedAmount - withdrawnAmount) / (scale * 100)) | |
335 | 342 | let color = takeRight(value(assetInfo(assetId)).name, 1) | |
336 | 343 | let realCaller = toString(i.caller) | |
337 | 344 | if (if ((unstaker != "")) | |
338 | 345 | then (unstaker != realCaller) | |
339 | 346 | else false) | |
340 | 347 | then throw("It seems duck was staked throuh a dapp, not directly, please unstake through dapp!") | |
341 | 348 | else if ((0 >= assetFarmingPower)) | |
342 | 349 | then throw("asset not available") | |
343 | 350 | else { | |
344 | 351 | let isWithoutPerch = tryGetBoolean((((("address_" + address) + "_asset_") + asset) + "_without_perch")) | |
345 | 352 | if ((color == "U")) | |
346 | 353 | then throw("use another function to unstake Jackpot NFT") | |
347 | 354 | else { | |
348 | 355 | let result = getUnstakeResult(address, assetId, assetRewardDelta, reward, assetFarmingPower) | |
349 | 356 | let appendPerches = if (isWithoutPerch) | |
350 | 357 | then [DeleteEntry((((("address_" + address) + "_asset_") + asset) + "_without_perch"))] | |
351 | 358 | else [IntegerEntry(((("address_" + address) + "_perchesAvailable_") + color), (tryGetInteger(((("address_" + address) + "_perchesAvailable_") + color)) + 1))] | |
352 | 359 | $Tuple2(((result ++ [ScriptTransfer(i.caller, (reward * 1000000), getEggAssetId()), ScriptTransfer(i.caller, 1, assetId)]) ++ appendPerches), (reward * 1000000)) | |
353 | 360 | } | |
354 | 361 | } | |
355 | 362 | } | |
356 | 363 | } | |
357 | 364 | ||
358 | 365 | ||
359 | 366 | ||
360 | 367 | @Callable(i) | |
361 | 368 | func stakeJackpot (color) = if ((isLocked() > 0)) | |
362 | 369 | then throw("EGG operations are temporarily locked") | |
363 | 370 | else { | |
364 | 371 | let pmt = value(i.payments[0]) | |
365 | 372 | let assetId = value(pmt.assetId) | |
366 | 373 | let realCaller = toString(i.caller) | |
367 | 374 | let address = if ((getMetaraceAddress() == i.caller)) | |
368 | 375 | then realCaller | |
369 | 376 | else toString(i.originCaller) | |
370 | 377 | let availablePerches = tryGetInteger(((("address_" + address) + "_perchesAvailable_") + color)) | |
371 | 378 | let assetIssuer = value(assetInfo(assetId)).issuer | |
372 | 379 | if ((pmt.amount != 1)) | |
373 | 380 | then throw("NFT is not attached") | |
374 | 381 | else if (if ((assetIssuer == getIncubatorAddress())) | |
375 | 382 | then true | |
376 | 383 | else (assetIssuer == getBreederAddress())) | |
377 | 384 | then if ((takeRight(value(value(assetInfo(assetId)).name), 1) != "U")) | |
378 | 385 | then throw("jackpot only") | |
379 | 386 | else if ((0 >= availablePerches)) | |
380 | 387 | then throw(("no perches available for the color " + color)) | |
381 | 388 | else (getStakeResult(address, assetId, 100, realCaller) ++ [IntegerEntry(((("address_" + address) + "_perchesAvailable_") + color), (availablePerches - 1)), StringEntry((((("address_" + address) + "_asset_") + toBase58String(assetId)) + "_perchColor"), color)]) | |
382 | 389 | else throw("asset is not valid") | |
383 | 390 | } | |
384 | 391 | ||
385 | 392 | ||
386 | 393 | ||
387 | 394 | @Callable(i) | |
388 | 395 | func unstakeJackpot (asset) = { | |
389 | 396 | let realCaller = toString(i.caller) | |
390 | 397 | let address = if ((getMetaraceAddress() == i.caller)) | |
391 | 398 | then realCaller | |
392 | 399 | else toString(i.originCaller) | |
393 | 400 | if (isUserBlacklisted(address)) | |
394 | 401 | then throw("Ooops, looks like you lost in one of the Ducksquid games! As you already know, any loss has its consequences, so you will be not able to claim your farming rewards till the end of DuckSquid game. Quack in peace!") | |
395 | 402 | else if ((isLocked() > 0)) | |
396 | 403 | then throw("EGG operations are temporarily locked") | |
397 | 404 | else { | |
398 | 405 | let assetId = fromBase58String(asset) | |
399 | 406 | let color = tryGetString((((("address_" + address) + "_asset_") + asset) + "_perchColor")) | |
400 | 407 | let assetFarmingPower = getLastKnownAssetFarmingPower(address, asset) | |
401 | 408 | let assetRewardDelta = calcAssetRewardDelta(address, asset, assetFarmingPower) | |
402 | 409 | let farmedAmount = (assetRewardDelta + tryGetInteger((((("address_" + address) + "_asset_") + asset) + "_lastCheckFarmedAmount"))) | |
403 | 410 | let withdrawnAmount = tryGetInteger((((("address_" + address) + "_asset_") + asset) + "_withdrawnAmount")) | |
404 | 411 | let reward = ((farmedAmount - withdrawnAmount) / (scale * 100)) | |
405 | 412 | let unstaker = tryGetString((((("address_" + address) + "_asset_") + asset) + "_unstaker")) | |
406 | 413 | if (if ((unstaker != "")) | |
407 | 414 | then (unstaker != realCaller) | |
408 | 415 | else false) | |
409 | 416 | then throw("It seems duck was staked throuh a dapp, not directly, please unstake through dapp!") | |
410 | 417 | else if ((takeRight(value(value(assetInfo(assetId)).name), 1) != "U")) | |
411 | 418 | then throw("jackpot only") | |
412 | 419 | else if ((assetFarmingPower > 0)) | |
413 | 420 | then { | |
414 | 421 | let result = getUnstakeResult(address, assetId, assetRewardDelta, reward, assetFarmingPower) | |
415 | 422 | let isWithoutPerch = tryGetBoolean((((("address_" + address) + "_asset_") + asset) + "_without_perch")) | |
416 | 423 | let appendPerches = if (isWithoutPerch) | |
417 | 424 | then [DeleteEntry((((("address_" + address) + "_asset_") + asset) + "_without_perch"))] | |
418 | 425 | else [IntegerEntry(((("address_" + address) + "_perchesAvailable_") + color), (tryGetInteger(((("address_" + address) + "_perchesAvailable_") + color)) + 1))] | |
419 | 426 | $Tuple2(((result ++ appendPerches) ++ [ScriptTransfer(i.caller, (reward * 1000000), getEggAssetId()), ScriptTransfer(i.caller, 1, assetId)]), (reward * 1000000)) | |
420 | 427 | } | |
421 | 428 | else throw("") | |
422 | 429 | } | |
423 | 430 | } | |
424 | 431 | ||
425 | 432 | ||
426 | 433 | ||
427 | 434 | @Callable(i) | |
428 | 435 | func claimReward (asset) = { | |
429 | 436 | let address = toString(i.originCaller) | |
430 | 437 | if (isUserBlacklisted(address)) | |
431 | 438 | then throw("Ooops, looks like you lost in one of the Ducksquid games! As you already know, any loss has its consequences, so you will be not able to claim your farming rewards till the end of DuckSquid game. Quack in peace!") | |
432 | 439 | else if ((isLocked() > 0)) | |
433 | 440 | then throw("EGG operations are temporarily locked") | |
434 | 441 | else { | |
435 | 442 | let assetId = fromBase58String(asset) | |
436 | 443 | let assetFarmingPower = getLastKnownAssetFarmingPower(address, asset) | |
437 | 444 | let assetRewardDelta = calcAssetRewardDelta(address, asset, assetFarmingPower) | |
438 | 445 | let farmedAmount = (assetRewardDelta + tryGetInteger((((("address_" + address) + "_asset_") + asset) + "_lastCheckFarmedAmount"))) | |
439 | 446 | let withdrawnAmount = tryGetInteger((((("address_" + address) + "_asset_") + asset) + "_withdrawnAmount")) | |
440 | 447 | let reward = ((farmedAmount - withdrawnAmount) / (scale * 100)) | |
441 | 448 | if ((0 >= reward)) | |
442 | 449 | then throw("you have no EGGs to withdraw") | |
443 | 450 | else $Tuple2([IntegerEntry((((("address_" + address) + "_asset_") + asset) + "_withdrawnAmount"), (tryGetInteger((((("address_" + address) + "_asset_") + asset) + "_withdrawnAmount")) + (reward * scale2))), ScriptTransfer(Address(fromBase58String(address)), (reward * 1000000), getEggAssetId())], (reward * 1000000)) | |
444 | 451 | } | |
445 | 452 | } | |
446 | 453 | ||
447 | 454 |
github/deemru/w8io/3ef1775 65.53 ms ◑