tx · FdtxgsLPNGMZPmHHqyKQfeDj4EWedBVPGvALCDr6j6nL

3MzraJ5pf2N2RkzE3MG7JceLNmXCXV8Z5V7:  -0.01400000 Waves

2021.05.14 13:42 [1525243] smart account 3MzraJ5pf2N2RkzE3MG7JceLNmXCXV8Z5V7 > SELF 0.00000000 Waves

{ "type": 13, "id": "FdtxgsLPNGMZPmHHqyKQfeDj4EWedBVPGvALCDr6j6nL", "fee": 1400000, "feeAssetId": null, "timestamp": 1620988936439, "version": 2, "chainId": 84, "sender": "3MzraJ5pf2N2RkzE3MG7JceLNmXCXV8Z5V7", "senderPublicKey": "ERi6XSXhPVHxXNjViF4BLWBiUjTBzMhwtR1Yn6J23YEd", "proofs": [ "2fRxkpXJ6LomnKnQv7F1VpSEQ1QoqEvDYke9CiWvJX4co6vt5Xaf8e1g3oUcrVYQsFKzceGEdF8DhHx7ayvU9AS" ], "script": "base64:AAIEAAAAAAAAAC4IAhIECgIBCBIDCgEIEgMKAQgSAwoBCBIFCgMICAgSBAoCCAgSAwoBCBIDCgEIAAAAJAAAAAAIdW5pdFRlc3QHAAAAAAlvcmFjbGVGZWUJAQAAAAV2YWx1ZQAAAAEJAAQmAAAAAQIAAAAjM04yczVSdGFIUEJlbkNzeDJFQ2NvRlJiWUh4M25vWmhYVzEAAAAACHNpZ25EYXBwCQEAAAAFdmFsdWUAAAABCQAEJgAAAAECAAAAIzNOQzI4aFNpdnJtc1RVWGFZRDF4NkwzNjJKNFpwVW5vVGRCAAAAAAxhcnR3b3Jrc0RhcHAJAQAAAAV2YWx1ZQAAAAEJAAQmAAAAAQIAAAAjM05CeW5mYlhDMkthc3RVeGh1a2NNVWFFNThLOWNCZEI5VVkAAAAAC2ZlZVJlY2VpdmVyAgAAACMzTjFFNnRYZGRSb1ZhUmZROWRRM3ZnNUxhVzJmc2Q4SEt1YgAAAAAIdXNlckRhcHADBQAAAAh1bml0VGVzdAkBAAAABXZhbHVlAAAAAQkABCYAAAABAgAAACMzTXQ0UkdNRXlqU1dZQW9jVFBxZDU1d2RIUVFCM1BVMlVDbQkBAAAABXZhbHVlAAAAAQkABCYAAAABAgAAACMzTjh4WGFZakUyN0FhNzlkNWhIcmhIdTlIYUZvVEJtaERFagAAAAANd2hpdGVsaXN0RGFwcAkBAAAABXZhbHVlAAAAAQkABCYAAAABAgAAACMzTjZCYVYxZENCNHpnNDNnb05OSGFDdHZSMTNCY3lKNUdzcQAAAAALc2lnbkFzc2V0SWQBAAAAIOilarzKd0LycGEyNUpPRYO5uR7lmWcXw3Hq2QuhBK3rAAAAAAt1c2RuQXNzZXRJZAEAAAAgD/IcEqzkxDya7EYaqyWosOy6BytGzG2IcvC14pJJAbQAAAAADHdhdmVzQXNzZXRJZAEAAAAAAAAAAAVjaHJpcwIAAAAjM01zRzZqUE5DclZKVXRZQjdYSkJ4Uzd1dFdzWEFmNG45VnAAAAAABGpvZXACAAAAIzNNem00Vkx3c045dVp3YlRNelBqM1h1eFY2a0VmQVI4VUROAAAAAAdzaWduQ3V0AAAAAAAAAAADAAAAAApjcmVhdG9yQ3V0AAAAAAAAAAAKAAAAAAtkYXBwUnVubmluZwkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBsAAAACBQAAAAh1c2VyRGFwcAIAAAAUY29uZl9kYXBwX2lzX3J1bm5pbmcGAAAAAA5tYWludGVuYW5jZU1TRwkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABB0AAAACBQAAAAh1c2VyRGFwcAIAAAAUY29uZl9tYWludGVuYW5jZV9tc2cCAAAAAAAAAAANdXNlclN1c3BlbmRlZAIAAAAJU1VTUEVOREVEAAAAAAt1c2VyUmVtb3ZlZAIAAAAHUkVNT1ZFRAAAAAAKYXJ0SWxsZWdhbAIAAAAHSUxMRUdBTAAAAAAMYXJ0U3VzcGVuZGVkAgAAAAlTVVNQRU5ERUQBAAAADWdldFVzZXJTdHJCeUsAAAABAAAAA2tleQkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABB0AAAACBQAAAAh1c2VyRGFwcAUAAAADa2V5AgAAAAVFcnJvcgEAAAAMZ2V0QXJ0U3RyQnlLAAAAAQAAAANrZXkJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQdAAAAAgUAAAAMYXJ0d29ya3NEYXBwBQAAAANrZXkCAAAAAAEAAAAJZ2V0U3RyQnlLAAAAAQAAAANrZXkJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQdAAAAAgUAAAAEdGhpcwUAAAADa2V5AgAAAAABAAAACWdldEludEJ5SwAAAAEAAAADa2V5CQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAABHRoaXMFAAAAA2tleQAAAAAAAAAAAAEAAAANa2V5VXNlclN0YXR1cwAAAAEAAAAEYWRkcgkAASwAAAACAgAAAAx1c2VyX3N0YXR1c18FAAAABGFkZHIBAAAACWtleVNpZ25JRAAAAAIAAAAKYXJ0aXN0QWRkcgAAAAVhcnRJZAkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAALYXJ0X3NpZ25pZF8FAAAABWFydElkAgAAAAFfBQAAAAphcnRpc3RBZGRyAQAAAAdrZXlGbGFnAAAAAgAAAAphcnRpc3RBZGRyAAAABWFydElkCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAlhcnRfZmxhZ18FAAAABWFydElkAgAAAAFfBQAAAAphcnRpc3RBZGRyAQAAAAprZXlORlREYXRhAAAAAQAAAAJpZAkAASwAAAACAgAAAARuZnRfBQAAAAJpZAEAAAAMaWRDYWxsZXJEYXRlAAAAAQAAAAFpAwkBAAAAASEAAAABBQAAAAtkYXBwUnVubmluZwkAAAIAAAABBQAAAA5tYWludGVuYW5jZU1TRwkABRUAAAADCQACWAAAAAEIBQAAAAFpAAAADXRyYW5zYWN0aW9uSWQJAAJYAAAAAQgIBQAAAAFpAAAABmNhbGxlcgAAAAVieXRlcwgFAAAACWxhc3RCbG9jawAAAAl0aW1lc3RhbXABAAAACWlzUGF5bWVudAAAAAEAAAABaQMJAAAAAAAAAgkAAZAAAAABCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAkAAAIAAAABAgAAABNObyBwYXltZW50IGF0dGFjaGVkBAAAAAdwYXltZW50CQEAAAAFdmFsdWUAAAABCQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAABAAAAAZhbW91bnQJAQAAAAV2YWx1ZQAAAAEIBQAAAAdwYXltZW50AAAABmFtb3VudAkABRQAAAACBQAAAAdwYXltZW50BQAAAAZhbW91bnQBAAAADGlzU2lnbkFydE5GVAAAAAEAAAACaWQEAAAADGFzc2V0RGV0YWlscwkBAAAABXZhbHVlAAAAAQkAA+wAAAABBQAAAAJpZAMDAwMJAQAAAAIhPQAAAAIIBQAAAAxhc3NldERldGFpbHMAAAAIcXVhbnRpdHkAAAAAAAAAAAEGCQEAAAACIT0AAAACCAUAAAAMYXNzZXREZXRhaWxzAAAACGRlY2ltYWxzAAAAAAAAAAAABgkBAAAAAiE9AAAAAggFAAAADGFzc2V0RGV0YWlscwAAAApyZWlzc3VhYmxlBwYJAQAAAAIhPQAAAAIIBQAAAAxhc3NldERldGFpbHMAAAAGaXNzdWVyBQAAAAxhcnR3b3Jrc0RhcHAHBgEAAAAQYWNjZXB0ZWRBc3NldElkcwAAAAEAAAAHYXNzZXRJZAMDAwMJAQAAAAIhPQAAAAIFAAAAB2Fzc2V0SWQJAAJYAAAAAQUAAAALc2lnbkFzc2V0SWQJAQAAAAIhPQAAAAIFAAAAB2Fzc2V0SWQJAAJYAAAAAQUAAAAMd2F2ZXNBc3NldElkBwkBAAAAAiE9AAAAAgUAAAAHYXNzZXRJZAIAAAAFV0FWRVMHCQEAAAACIT0AAAACBQAAAAdhc3NldElkCQACWAAAAAEFAAAAC3VzZG5Bc3NldElkBwcGAQAAAA1nZXRCaWRBc3NldElkAAAAAQAAAAdhc3NldElkAwkAAAAAAAACBQAAAAdhc3NldElkAgAAAAVXQVZFUwUAAAAEdW5pdAkAAlkAAAABBQAAAAdhc3NldElkAQAAABVnZXRTYWxlT3duZXJBbmRTdGF0dXMAAAABAAAABW5mdGlkBAAAAAlzYWxlT3duZXIJAQAAAAlnZXRTdHJCeUsAAAABCQABLAAAAAICAAAAFmN1cnJlbnRfb3duZXJfb25fZGFwcF8FAAAABW5mdGlkAwkAAAAAAAACBQAAAAlzYWxlT3duZXICAAAABG5vbmUJAAACAAAAAQIAAAANTkZUIG5vdCBmb3VuZAQAAAAKc2FsZVN0YXR1cwkBAAAACWdldFN0ckJ5SwAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAD3NhbGUybmRfc3RhdHVzXwUAAAAJc2FsZU93bmVyAgAAAAFfBQAAAAVuZnRpZAMJAQAAAAIhPQAAAAIFAAAACnNhbGVTdGF0dXMCAAAABE9QRU4JAAACAAAAAQIAAAAQTkZUIG5vdCBmb3Igc2FsZQUAAAAJc2FsZU93bmVyAQAAAApnZXRCaWREYXRhAAAAAQAAAANrZXkEAAAAB2JpZERhdGEJAQAAAAlnZXRTdHJCeUsAAAABCQABLAAAAAIFAAAAA2tleQIAAAAFX09QRU4DCQAAAAAAAAIFAAAAB2JpZERhdGECAAAAAAkAAAIAAAABAgAAAA9PZmZlciBub3QgZm91bmQEAAAACmJpZERhdGFBcnIJAAS1AAAAAgUAAAAHYmlkRGF0YQIAAAABXwQAAAAHYXNzZXRJZAkBAAAADWdldEJpZEFzc2V0SWQAAAABCQABkQAAAAIFAAAACmJpZERhdGFBcnIAAAAAAAAAAAAJAAUVAAAAAwUAAAAKYmlkRGF0YUFycgUAAAAHYXNzZXRJZAUAAAAHYmlkRGF0YQEAAAAMY2hlY2tORlRJbmZvAAAAAQAAAAdhc3NldElkBAAAAAduZnREYXRhCQAEtQAAAAIJAQAAAAxnZXRBcnRTdHJCeUsAAAABCQEAAAAKa2V5TkZURGF0YQAAAAEJAAJYAAAAAQkBAAAABXZhbHVlAAAAAQUAAAAHYXNzZXRJZAIAAAABXwQAAAAJYXJ0U2lnbklECQEAAAAMZ2V0QXJ0U3RyQnlLAAAAAQkBAAAACWtleVNpZ25JRAAAAAIJAAGRAAAAAgUAAAAHbmZ0RGF0YQAAAAAAAAAABgkAAZEAAAACBQAAAAduZnREYXRhAAAAAAAAAAAFAwkAAAAAAAACCQABMQAAAAEFAAAACWFydFNpZ25JRAAAAAAAAAAAAAkAAAIAAAABAgAAAB1BcnR3b3JrIG5vdCBmb3VuZCBvbiBTSUdOIEFydAQAAAAJYXJ0U3RhdHVzCQEAAAAMZ2V0QXJ0U3RyQnlLAAAAAQkBAAAAB2tleUZsYWcAAAACCQABkQAAAAIFAAAAB25mdERhdGEAAAAAAAAAAAYJAAGRAAAAAgUAAAAHbmZ0RGF0YQAAAAAAAAAABQMDCQAAAAAAAAIFAAAACWFydFN0YXR1cwUAAAAKYXJ0SWxsZWdhbAYJAAAAAAAAAgUAAAAJYXJ0U3RhdHVzBQAAAAxhcnRTdXNwZW5kZWQJAAACAAAAAQkAASwAAAACAgAAABxPcmlnaW5hbCBBcnR3b3JrIGZsYWdnZWQgYXMgBQAAAAlhcnRTdGF0dXMEAAAADGFydGlzdFN0YXR1cwkBAAAADWdldFVzZXJTdHJCeUsAAAABCQEAAAANa2V5VXNlclN0YXR1cwAAAAEJAAGRAAAAAgUAAAAHbmZ0RGF0YQAAAAAAAAAABgMJAQAAAA9jb250YWluc0VsZW1lbnQAAAACCQAETAAAAAIFAAAADXVzZXJTdXNwZW5kZWQJAARMAAAAAgUAAAALdXNlclJlbW92ZWQFAAAAA25pbAUAAAAMYXJ0aXN0U3RhdHVzCQAAAgAAAAEJAAEsAAAAAgIAAAAQT3JpZ2luYWwgQXJ0aXN0IAUAAAAMYXJ0aXN0U3RhdHVzCQAFFAAAAAIGCQABkQAAAAIFAAAAB25mdERhdGEAAAAAAAAAAAYAAAAIAAAAAWkBAAAAB3NlbGxORlQAAAACAAAABXByaWNlAAAABWFzc2V0BAAAAAskdDA1OTQ5NTk4OAkBAAAADGlkQ2FsbGVyRGF0ZQAAAAEFAAAAAWkEAAAAAmlkCAUAAAALJHQwNTk0OTU5ODgAAAACXzEEAAAABmNhbGxlcggFAAAACyR0MDU5NDk1OTg4AAAAAl8yBAAAAARkYXRlCAUAAAALJHQwNTk0OTU5ODgAAAACXzMEAAAACyR0MDU5OTM2MDI5CQEAAAAJaXNQYXltZW50AAAAAQUAAAABaQQAAAAHcGF5bWVudAgFAAAACyR0MDU5OTM2MDI5AAAAAl8xBAAAAAZhbW91bnQIBQAAAAskdDA1OTkzNjAyOQAAAAJfMgQAAAAHYXNzZXRJZAMDCQEAAAAJaXNEZWZpbmVkAAAAAQgFAAAAB3BheW1lbnQAAAAHYXNzZXRJZAkBAAAADGlzU2lnbkFydE5GVAAAAAEJAQAAAAV2YWx1ZQAAAAEIBQAAAAdwYXltZW50AAAAB2Fzc2V0SWQHCAUAAAAHcGF5bWVudAAAAAdhc3NldElkCQAAAgAAAAECAAAADE5vIE5GVCBmb3VuZAMJAQAAAAEhAAAAAQkBAAAAEGFjY2VwdGVkQXNzZXRJZHMAAAABBQAAAAVhc3NldAkAAAIAAAABAgAAACFPbmx5IFNJR04sIFVTRE4gb3IgV0FWRVMgYWNjZXB0ZWQEAAAACyR0MDYyNTk2MzEyCQEAAAAMY2hlY2tORlRJbmZvAAAAAQUAAAAHYXNzZXRJZAQAAAAKaXNWYWxpZE5GVAgFAAAACyR0MDYyNTk2MzEyAAAAAl8xBAAAAAtjcmVhdG9yQWRkcggFAAAACyR0MDYyNTk2MzEyAAAAAl8yAwkBAAAAASEAAAABBQAAAAppc1ZhbGlkTkZUCQAAAgAAAAECAAAAFFNvbWV0aGluZyB3ZW50IHdyb25nCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAADXNhbGUybmRfaW5mb18FAAAABmNhbGxlcgIAAAABXwkAAlgAAAABCQEAAAAFdmFsdWUAAAABCAUAAAAHcGF5bWVudAAAAAdhc3NldElkAgAAAAFfBQAAAAtjcmVhdG9yQWRkcgIAAAAFX09QRU4JAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAAaQAAAABBQAAAARkYXRlAgAAAAFfCQABpAAAAAEFAAAABXByaWNlAgAAAAFfBQAAAAVhc3NldAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAA9zYWxlMm5kX3N0YXR1c18FAAAABmNhbGxlcgIAAAABXwkAAlgAAAABCQEAAAAFdmFsdWUAAAABCAUAAAAHcGF5bWVudAAAAAdhc3NldElkAgAAAARPUEVOCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAAEsAAAAAgIAAAAWY3VycmVudF9vd25lcl9vbl9kYXBwXwkAAlgAAAABCQEAAAAFdmFsdWUAAAABCAUAAAAHcGF5bWVudAAAAAdhc3NldElkBQAAAAZjYWxsZXIFAAAAA25pbAAAAAFpAQAAAApjYW5jZWxTYWxlAAAAAQAAAAVuZnRpZAQAAAALJHQwNjk4ODcwMjcJAQAAAAxpZENhbGxlckRhdGUAAAABBQAAAAFpBAAAAAJpZAgFAAAACyR0MDY5ODg3MDI3AAAAAl8xBAAAAAZjYWxsZXIIBQAAAAskdDA2OTg4NzAyNwAAAAJfMgQAAAAEZGF0ZQgFAAAACyR0MDY5ODg3MDI3AAAAAl8zBAAAAAlzYWxlT3duZXIJAQAAAAlnZXRTdHJCeUsAAAABCQABLAAAAAICAAAAFmN1cnJlbnRfb3duZXJfb25fZGFwcF8FAAAABW5mdGlkAwkBAAAAAiE9AAAAAgUAAAAJc2FsZU93bmVyBQAAAAZjYWxsZXIJAAACAAAAAQIAAAAWWW91IGRvbid0IG93biB0aGlzIE5GVAQAAAAKc2FsZVN0YXR1cwkBAAAACWdldFN0ckJ5SwAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAD3NhbGUybmRfc3RhdHVzXwUAAAAGY2FsbGVyAgAAAAFfBQAAAAVuZnRpZAMJAQAAAAIhPQAAAAIFAAAACnNhbGVTdGF0dXMCAAAABE9QRU4JAAACAAAAAQIAAAAPU2FsZSBub3QgYWN0aXZlBAAAAAskdDA3MzE5NzM3OQkBAAAADGNoZWNrTkZUSW5mbwAAAAEJAAGbAAAAAQUAAAAFbmZ0aWQEAAAACmlzVmFsaWRORlQIBQAAAAskdDA3MzE5NzM3OQAAAAJfMQQAAAALY3JlYXRvckFkZHIIBQAAAAskdDA3MzE5NzM3OQAAAAJfMgMJAQAAAAEhAAAAAQUAAAAKaXNWYWxpZE5GVAkAAAIAAAABAgAAABRTb21ldGhpbmcgd2VudCB3cm9uZwQAAAAIc2FsZUluZm8JAQAAAAlnZXRTdHJCeUsAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAADXNhbGUybmRfaW5mb18FAAAABmNhbGxlcgIAAAABXwUAAAAFbmZ0aWQCAAAAAV8FAAAAC2NyZWF0b3JBZGRyAgAAAAFfBQAAAApzYWxlU3RhdHVzCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAADXNhbGUybmRfaW5mb18FAAAABmNhbGxlcgIAAAABXwUAAAAFbmZ0aWQCAAAAAV8FAAAAC2NyZWF0b3JBZGRyAgAAAAVfT1BFTgkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAA9zYWxlMm5kX3N0YXR1c18FAAAABmNhbGxlcgIAAAABXwUAAAAFbmZ0aWQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAA1zYWxlMm5kX2luZm9fBQAAAAZjYWxsZXICAAAAAV8FAAAABW5mdGlkAgAAAAFfBQAAAAtjcmVhdG9yQWRkcgIAAAABXwkAAaQAAAABBQAAAARkYXRlAgAAAAFfBQAAAAJpZAIAAAAKX0NBTkNFTExFRAUAAAAIc2FsZUluZm8JAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkAASwAAAACAgAAABZjdXJyZW50X293bmVyX29uX2RhcHBfBQAAAAVuZnRpZAIAAAAEbm9uZQkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQUAAAAGY2FsbGVyAAAAAAAAAAABCQACWQAAAAEFAAAABW5mdGlkBQAAAANuaWwAAAABaQEAAAAGYnV5TkZUAAAAAQAAAAVuZnRpZAQAAAALJHQwODA2MzgxMzQJAQAAAAxpZENhbGxlckRhdGUAAAABBQAAAAFpBAAAAAJpZAgFAAAACyR0MDgwNjM4MTM0AAAAAl8xBAAAAAZjYWxsZXIIBQAAAAskdDA4MDYzODEzNAAAAAJfMgQAAAAEZGF0ZQgFAAAACyR0MDgwNjM4MTM0AAAAAl8zBAAAAAlzYWxlT3duZXIJAQAAABVnZXRTYWxlT3duZXJBbmRTdGF0dXMAAAABBQAAAAVuZnRpZAQAAAALJHQwODE4OTgyNDkJAQAAAAxjaGVja05GVEluZm8AAAABCQABmwAAAAEFAAAABW5mdGlkBAAAAAppc1ZhbGlkTkZUCAUAAAALJHQwODE4OTgyNDkAAAACXzEEAAAAC2NyZWF0b3JBZGRyCAUAAAALJHQwODE4OTgyNDkAAAACXzIDCQEAAAABIQAAAAEFAAAACmlzVmFsaWRORlQJAAACAAAAAQIAAAAUU29tZXRoaW5nIHdlbnQgd3JvbmcEAAAACHNhbGVJbmZvCQEAAAAJZ2V0U3RyQnlLAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAANc2FsZTJuZF9pbmZvXwUAAAAJc2FsZU93bmVyAgAAAAFfBQAAAAVuZnRpZAIAAAABXwUAAAALY3JlYXRvckFkZHICAAAABV9PUEVOAwkAAAAAAAACCQABMQAAAAEFAAAACHNhbGVJbmZvAAAAAAAAAAAACQAAAgAAAAECAAAAD1NhbGUgTm90IGZvdW5kIQQAAAANc2FsZUluZm9BcnJheQkABLUAAAACBQAAAAhzYWxlSW5mbwIAAAABXwQAAAALJHQwODUxMzg1NDkJAQAAAAlpc1BheW1lbnQAAAABBQAAAAFpBAAAAAdwYXltZW50CAUAAAALJHQwODUxMzg1NDkAAAACXzEEAAAABmFtb3VudAgFAAAACyR0MDg1MTM4NTQ5AAAAAl8yAwMJAQAAAAIhPQAAAAIJAAGRAAAAAgUAAAANc2FsZUluZm9BcnJheQAAAAAAAAAAAQkAAaQAAAABBQAAAAZhbW91bnQGCQEAAAACIT0AAAACCQABkQAAAAIFAAAADXNhbGVJbmZvQXJyYXkAAAAAAAAAAAIJAAJYAAAAAQkBAAAABXZhbHVlAAAAAQgFAAAAB3BheW1lbnQAAAAHYXNzZXRJZAkAAAIAAAABAgAAABpQYXltZW50IGluZm9zIGRvbid0IG1hdGNoLgQAAAANYW1vdW50Rm9yU2lnbgkAAGsAAAADBQAAAAZhbW91bnQFAAAAB3NpZ25DdXQAAAAAAAAAAGQEAAAAEGFtb3VudEZvckNyZWF0b3IJAABrAAAAAwUAAAAGYW1vdW50BQAAAApjcmVhdG9yQ3V0AAAAAAAAAABkBAAAAA5hbW91bnRGb3JPd25lcgkAAGUAAAACBQAAAAZhbW91bnQJAABkAAAAAgUAAAANYW1vdW50Rm9yU2lnbgUAAAAQYW1vdW50Rm9yQ3JlYXRvcgkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAA1zYWxlMm5kX2luZm9fBQAAAAlzYWxlT3duZXICAAAAAV8FAAAABW5mdGlkAgAAAAFfBQAAAAtjcmVhdG9yQWRkcgIAAAAFX09QRU4JAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAPc2FsZTJuZF9zdGF0dXNfBQAAAAlzYWxlT3duZXICAAAAAV8FAAAABW5mdGlkCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAANc2FsZTJuZF9pbmZvXwUAAAAJc2FsZU93bmVyAgAAAAFfBQAAAAVuZnRpZAIAAAABXwUAAAALY3JlYXRvckFkZHICAAAAAV8JAAGkAAAAAQUAAAAEZGF0ZQIAAAABXwUAAAACaWQCAAAAB19DTE9TRUQJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAGkAAAAAQUAAAAEZGF0ZQIAAAABXwkAAaQAAAABBQAAAAZhbW91bnQCAAAAAV8JAAJYAAAAAQkBAAAABXZhbHVlAAAAAQgFAAAAB3BheW1lbnQAAAAHYXNzZXRJZAIAAAAEX3RvXwUAAAAGY2FsbGVyCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAAEsAAAAAgIAAAAWY3VycmVudF9vd25lcl9vbl9kYXBwXwUAAAAFbmZ0aWQCAAAABG5vbmUJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEFAAAAC2ZlZVJlY2VpdmVyBQAAAA1hbW91bnRGb3JTaWduCAUAAAAHcGF5bWVudAAAAAdhc3NldElkCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMJAQAAAAdBZGRyZXNzAAAAAQkAAlkAAAABBQAAAAtjcmVhdG9yQWRkcgUAAAAQYW1vdW50Rm9yQ3JlYXRvcggFAAAAB3BheW1lbnQAAAAHYXNzZXRJZAkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQUAAAAJc2FsZU93bmVyBQAAAA5hbW91bnRGb3JPd25lcggFAAAAB3BheW1lbnQAAAAHYXNzZXRJZAkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQUAAAAGY2FsbGVyAAAAAAAAAAABCQACWQAAAAEFAAAABW5mdGlkBQAAAANuaWwAAAABaQEAAAAIc2V0T2ZmZXIAAAABAAAABW5mdGlkBAAAAAskdDA5OTE3OTk1NQkBAAAADGlkQ2FsbGVyRGF0ZQAAAAEFAAAAAWkEAAAAAmlkCAUAAAALJHQwOTkxNzk5NTUAAAACXzEEAAAABmNhbGxlcggFAAAACyR0MDk5MTc5OTU1AAAAAl8yBAAAAARkYXRlCAUAAAALJHQwOTkxNzk5NTUAAAACXzMEAAAACyR0MDk5NjA5OTk2CQEAAAAJaXNQYXltZW50AAAAAQUAAAABaQQAAAAHcGF5bWVudAgFAAAACyR0MDk5NjA5OTk2AAAAAl8xBAAAAAZhbW91bnQIBQAAAAskdDA5OTYwOTk5NgAAAAJfMgQAAAAHYXNzZXRJZAMJAQAAAAEhAAAAAQkBAAAACWlzRGVmaW5lZAAAAAEIBQAAAAdwYXltZW50AAAAB2Fzc2V0SWQCAAAABVdBVkVTCQACWAAAAAEJAQAAAAV2YWx1ZQAAAAEIBQAAAAdwYXltZW50AAAAB2Fzc2V0SWQDCQEAAAABIQAAAAEJAQAAABBhY2NlcHRlZEFzc2V0SWRzAAAAAQUAAAAHYXNzZXRJZAkAAAIAAAABAgAAABJhc3NldCBub3QgYWNjZXB0ZWQEAAAACXNhbGVPd25lcgkBAAAAFWdldFNhbGVPd25lckFuZFN0YXR1cwAAAAEFAAAABW5mdGlkCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAlvZmZlcjJuZF8FAAAACXNhbGVPd25lcgIAAAABXwUAAAAFbmZ0aWQCAAAAAV8FAAAABmNhbGxlcgIAAAABXwUAAAACaWQCAAAABV9PUEVOCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgUAAAAHYXNzZXRJZAIAAAABXwkAAaQAAAABBQAAAAZhbW91bnQCAAAAAV8JAAGkAAAAAQUAAAAEZGF0ZQIAAAABXwUAAAAGY2FsbGVyAgAAAAFfBQAAAAJpZAUAAAADbmlsAAAAAWkBAAAAC2FjY2VwdE9mZmVyAAAAAwAAAAVuZnRpZAAAAAdvZmZlcklkAAAACm9mZmVyT3duZXIEAAAADSR0MDEwNzA2MTA3ODAJAQAAAAxpZENhbGxlckRhdGUAAAABBQAAAAFpBAAAAAJpZAgFAAAADSR0MDEwNzA2MTA3ODAAAAACXzEEAAAABmNhbGxlcggFAAAADSR0MDEwNzA2MTA3ODAAAAACXzIEAAAABGRhdGUIBQAAAA0kdDAxMDcwNjEwNzgwAAAAAl8zBAAAAAlzYWxlT3duZXIJAQAAABVnZXRTYWxlT3duZXJBbmRTdGF0dXMAAAABBQAAAAVuZnRpZAMJAQAAAAIhPQAAAAIFAAAABmNhbGxlcgUAAAAJc2FsZU93bmVyCQAAAgAAAAECAAAAGVlvdSBjYW5ub3QgZG8gdGhpcyBhY3Rpb24EAAAACm9mZmVyRXhpc3QJAQAAAAlnZXRTdHJCeUsAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAJb2ZmZXIybmRfBQAAAAlzYWxlT3duZXICAAAAAV8FAAAABW5mdGlkAgAAAAFfBQAAAApvZmZlck93bmVyAgAAAAFfBQAAAAdvZmZlcklkAgAAAAVfT1BFTgMJAAAAAAAAAgUAAAAKb2ZmZXJFeGlzdAIAAAAACQAAAgAAAAECAAAAH09mZmVyIG5vdCBmb3VuZCBvciBub3QgZm9yIHNhbGUEAAAADSR0MDExMDg1MTExNDUJAQAAAAxjaGVja05GVEluZm8AAAABCQABmwAAAAEFAAAABW5mdGlkBAAAAAppc1ZhbGlkTkZUCAUAAAANJHQwMTEwODUxMTE0NQAAAAJfMQQAAAALY3JlYXRvckFkZHIIBQAAAA0kdDAxMTA4NTExMTQ1AAAAAl8yAwkBAAAAASEAAAABBQAAAAppc1ZhbGlkTkZUCQAAAgAAAAECAAAAFFNvbWV0aGluZyB3ZW50IHdyb25nBAAAAAhzYWxlSW5mbwkBAAAACWdldFN0ckJ5SwAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAADXNhbGUybmRfaW5mb18FAAAACXNhbGVPd25lcgIAAAABXwUAAAAFbmZ0aWQCAAAAAV8FAAAAC2NyZWF0b3JBZGRyAgAAAAVfT1BFTgMJAAAAAAAAAgkAATEAAAABBQAAAAhzYWxlSW5mbwAAAAAAAAAAAAkAAAIAAAABAgAAAA9TYWxlIE5vdCBmb3VuZCEEAAAACmJpZERhdGFLZXkJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAJb2ZmZXIybmRfBQAAAAlzYWxlT3duZXICAAAAAV8FAAAABW5mdGlkAgAAAAFfBQAAAApvZmZlck93bmVyAgAAAAFfBQAAAAdvZmZlcklkBAAAAA0kdDAxMTUzOTExNTk4CQEAAAAKZ2V0QmlkRGF0YQAAAAEFAAAACmJpZERhdGFLZXkEAAAACmJpZERhdGFBcnIIBQAAAA0kdDAxMTUzOTExNTk4AAAAAl8xBAAAAAdhc3NldElkCAUAAAANJHQwMTE1MzkxMTU5OAAAAAJfMgQAAAAHYmlkRGF0YQgFAAAADSR0MDExNTM5MTE1OTgAAAACXzMEAAAABmFtb3VudAkBAAAABXZhbHVlAAAAAQkABLYAAAABCQABkQAAAAIFAAAACmJpZERhdGFBcnIAAAAAAAAAAAEEAAAADWFtb3VudEZvclNpZ24JAABrAAAAAwUAAAAGYW1vdW50BQAAAAdzaWduQ3V0AAAAAAAAAABkBAAAABBhbW91bnRGb3JDcmVhdG9yCQAAawAAAAMFAAAABmFtb3VudAUAAAAKY3JlYXRvckN1dAAAAAAAAAAAZAQAAAAOYW1vdW50Rm9yT3duZXIJAABlAAAAAgUAAAAGYW1vdW50CQAAZAAAAAIFAAAADWFtb3VudEZvclNpZ24FAAAAEGFtb3VudEZvckNyZWF0b3IJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAANc2FsZTJuZF9pbmZvXwUAAAAJc2FsZU93bmVyAgAAAAFfBQAAAAVuZnRpZAIAAAABXwUAAAALY3JlYXRvckFkZHICAAAABV9PUEVOCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEJAAEsAAAAAgUAAAAKYmlkRGF0YUtleQIAAAAFX09QRU4JAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAPc2FsZTJuZF9zdGF0dXNfBQAAAAlzYWxlT3duZXICAAAAAV8FAAAABW5mdGlkCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAAEsAAAAAgUAAAAKYmlkRGF0YUtleQIAAAAHX0NMT1NFRAkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAGkAAAAAQUAAAAEZGF0ZQIAAAABXwkAAaQAAAABBQAAAAZhbW91bnQCAAAAAV8JAAJYAAAAAQkBAAAABXZhbHVlAAAAAQUAAAAHYXNzZXRJZAIAAAAEX3RvXwUAAAAKb2ZmZXJPd25lcgIAAAABXwUAAAAHb2ZmZXJJZAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAADXNhbGUybmRfaW5mb18FAAAACXNhbGVPd25lcgIAAAABXwUAAAAFbmZ0aWQCAAAAAV8FAAAAC2NyZWF0b3JBZGRyAgAAAAFfCQABpAAAAAEFAAAABGRhdGUCAAAAAV8FAAAAAmlkAgAAAAdfQ0xPU0VECQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABpAAAAAEFAAAABGRhdGUCAAAAAV8JAAGkAAAAAQUAAAAGYW1vdW50AgAAAAFfCQACWAAAAAEJAQAAAAV2YWx1ZQAAAAEFAAAAB2Fzc2V0SWQCAAAABF90b18FAAAACm9mZmVyT3duZXIJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkAASwAAAACAgAAABZjdXJyZW50X293bmVyX29uX2RhcHBfBQAAAAVuZnRpZAIAAAAEbm9uZQkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQUAAAALZmVlUmVjZWl2ZXIFAAAADWFtb3VudEZvclNpZ24FAAAAB2Fzc2V0SWQJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEFAAAAC2NyZWF0b3JBZGRyBQAAABBhbW91bnRGb3JDcmVhdG9yBQAAAAdhc3NldElkCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMJAQAAAAdBZGRyZXNzAAAAAQkAAlkAAAABBQAAAAlzYWxlT3duZXIFAAAADmFtb3VudEZvck93bmVyBQAAAAdhc3NldElkCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMJAQAAAAdBZGRyZXNzAAAAAQkAAlkAAAABCQABkQAAAAIFAAAACmJpZERhdGFBcnIAAAAAAAAAAAMAAAAAAAAAAAEJAAJZAAAAAQUAAAAFbmZ0aWQFAAAAA25pbAAAAAFpAQAAAAtjYW5jZWxPZmZlcgAAAAIAAAAFbmZ0aWQAAAAHb2ZmZXJJZAQAAAANJHQwMTI4NzkxMzEwOQkBAAAADGlkQ2FsbGVyRGF0ZQAAAAEFAAAAAWkEAAAAAmlkCAUAAAANJHQwMTI4NzkxMzEwOQAAAAJfMQQAAAAGY2FsbGVyCAUAAAANJHQwMTI4NzkxMzEwOQAAAAJfMgQAAAAEZGF0ZQgFAAAADSR0MDEyODc5MTMxMDkAAAACXzMEAAAACXNhbGVPd25lcgkBAAAAFWdldFNhbGVPd25lckFuZFN0YXR1cwAAAAEFAAAABW5mdGlkBAAAAApiaWREYXRhS2V5CQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAACW9mZmVyMm5kXwUAAAAJc2FsZU93bmVyAgAAAAFfBQAAAAVuZnRpZAIAAAABXwUAAAAGY2FsbGVyAgAAAAFfBQAAAAdvZmZlcklkBAAAAA0kdDAxMzI0NTEzMzQ1CQEAAAAKZ2V0QmlkRGF0YQAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAGb2ZmZXJfBQAAAAVuZnRpZAIAAAABXwUAAAAJc2FsZU93bmVyAgAAAAFfBQAAAAZjYWxsZXICAAAAAV8FAAAAB29mZmVySWQEAAAACmJpZERhdGFBcnIIBQAAAA0kdDAxMzI0NTEzMzQ1AAAAAl8xBAAAAAdhc3NldElkCAUAAAANJHQwMTMyNDUxMzM0NQAAAAJfMgQAAAAHYmlkRGF0YQgFAAAADSR0MDEzMjQ1MTMzNDUAAAACXzMEAAAACWJpZFN0YXR1cwIAAAAJQ0FOQ0VMTEVECQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEJAAEsAAAAAgUAAAAKYmlkRGF0YUtleQIAAAAFX09QRU4JAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkAASwAAAACCQABLAAAAAIFAAAACmJpZERhdGFLZXkCAAAAAV8FAAAACWJpZFN0YXR1cwkAASwAAAACCQABLAAAAAIFAAAAB2JpZERhdGECAAAAAV8JAAGkAAAAAQUAAAAEZGF0ZQkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQUAAAAGY2FsbGVyCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAKYmlkRGF0YUFycgAAAAAAAAAAAQUAAAAHYXNzZXRJZAUAAAADbmlsAAAAAWkBAAAACnNldFJlcXVlc3QAAAABAAAABW5mdGlkBAAAAA0kdDAxMzk0OTEzOTg3CQEAAAAMaWRDYWxsZXJEYXRlAAAAAQUAAAABaQQAAAACaWQIBQAAAA0kdDAxMzk0OTEzOTg3AAAAAl8xBAAAAAZjYWxsZXIIBQAAAA0kdDAxMzk0OTEzOTg3AAAAAl8yBAAAAARkYXRlCAUAAAANJHQwMTM5NDkxMzk4NwAAAAJfMwQAAAANJHQwMTM5OTIxNDAyOAkBAAAACWlzUGF5bWVudAAAAAEFAAAAAWkEAAAAB3BheW1lbnQIBQAAAA0kdDAxMzk5MjE0MDI4AAAAAl8xBAAAAAZhbW91bnQIBQAAAA0kdDAxMzk5MjE0MDI4AAAAAl8yBAAAAAdhc3NldElkAwkBAAAAASEAAAABCQEAAAAJaXNEZWZpbmVkAAAAAQgFAAAAB3BheW1lbnQAAAAHYXNzZXRJZAIAAAAFV0FWRVMJAAJYAAAAAQkBAAAABXZhbHVlAAAAAQgFAAAAB3BheW1lbnQAAAAHYXNzZXRJZAMJAQAAAAEhAAAAAQkBAAAAEGFjY2VwdGVkQXNzZXRJZHMAAAABBQAAAAdhc3NldElkCQAAAgAAAAECAAAAEmFzc2V0IG5vdCBhY2NlcHRlZAQAAAANJHQwMTQyNDkxNDMwOQkBAAAADGNoZWNrTkZUSW5mbwAAAAEJAAGbAAAAAQUAAAAFbmZ0aWQEAAAACmlzVmFsaWRORlQIBQAAAA0kdDAxNDI0OTE0MzA5AAAAAl8xBAAAAAtjcmVhdG9yQWRkcggFAAAADSR0MDE0MjQ5MTQzMDkAAAACXzIDCQEAAAABIQAAAAEFAAAACmlzVmFsaWRORlQJAAACAAAAAQIAAAAUU29tZXRoaW5nIHdlbnQgd3JvbmcJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAALcmVxdWVzdDJuZF8FAAAABW5mdGlkAgAAAAFfBQAAAAZjYWxsZXICAAAAAV8FAAAAAmlkAgAAAAVfT1BFTgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIFAAAAB2Fzc2V0SWQCAAAAAV8JAAGkAAAAAQUAAAAGYW1vdW50AgAAAAFfCQABpAAAAAEFAAAABGRhdGUCAAAAAV8FAAAABmNhbGxlcgIAAAABXwUAAAACaWQFAAAAA25pbAAAAAFpAQAAAAtkZWxldGVFbnRyeQAAAAEAAAAFZW50cnkEAAAABmNhbGxlcgkABCUAAAABCQEAAAAUYWRkcmVzc0Zyb21QdWJsaWNLZXkAAAABCAUAAAABaQAAAA9jYWxsZXJQdWJsaWNLZXkDCQAAAAAAAAIFAAAABmNhbGxlcgUAAAAFY2hyaXMJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQUAAAAFZW50cnkFAAAAA25pbAkAAAIAAAABAgAAAAJubwAAAADHb4vP", "height": 1525243, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: 2W4iGXGyPV9JFj8rTywXd39fQHX7m5DVhYPnez2ax1eu Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 4 #-}
2+{-# SCRIPT_TYPE ACCOUNT #-}
3+{-# CONTENT_TYPE DAPP #-}
4+let unitTest = false
5+
6+let oracleFee = value(addressFromString("3N2s5RtaHPBenCsx2ECcoFRbYHx3noZhXW1"))
7+
8+let signDapp = value(addressFromString("3NC28hSivrmsTUXaYD1x6L362J4ZpUnoTdB"))
9+
10+let artworksDapp = value(addressFromString("3NBynfbXC2KastUxhukcMUaE58K9cBdB9UY"))
11+
12+let feeReceiver = "3N1E6tXddRoVaRfQ9dQ3vg5LaW2fsd8HKub"
13+
14+let userDapp = if (unitTest)
15+ then value(addressFromString("3Mt4RGMEyjSWYAocTPqd55wdHQQB3PU2UCm"))
16+ else value(addressFromString("3N8xXaYjE27Aa79d5hHrhHu9HaFoTBmhDEj"))
17+
18+let whitelistDapp = value(addressFromString("3N6BaV1dCB4zg43goNNHaCtvR13BcyJ5Gsq"))
19+
20+let signAssetId = base58'Gf9t8FA4H3ssoZPCwrg3KwUFCci8zuUFP9ssRsUY3s6a'
21+
22+let usdnAssetId = base58'25FEqEjRkqK6yCkiT7Lz6SAYz7gUFCtxfCChnrVFD5AT'
23+
24+let wavesAssetId = base58''
25+
26+let chris = "3MsG6jPNCrVJUtYB7XJBxS7utWsXAf4n9Vp"
27+
28+let joep = "3Mzm4VLwsN9uZwbTMzPj3XuxV6kEfAR8UDN"
29+
30+let signCut = 3
31+
32+let creatorCut = 10
33+
34+let dappRunning = valueOrElse(getBoolean(userDapp, "conf_dapp_is_running"), true)
35+
36+let maintenanceMSG = valueOrElse(getString(userDapp, "conf_maintenance_msg"), "")
37+
38+let userSuspended = "SUSPENDED"
39+
40+let userRemoved = "REMOVED"
41+
42+let artIllegal = "ILLEGAL"
43+
44+let artSuspended = "SUSPENDED"
45+
46+func getUserStrByK (key) = valueOrElse(getString(userDapp, key), "Error")
47+
48+
49+func getArtStrByK (key) = valueOrElse(getString(artworksDapp, key), "")
50+
51+
52+func getStrByK (key) = valueOrElse(getString(this, key), "")
53+
54+
55+func getIntByK (key) = valueOrElse(getInteger(this, key), 0)
56+
57+
58+func keyUserStatus (addr) = ("user_status_" + addr)
59+
60+
61+func keySignID (artistAddr,artId) = ((("art_signid_" + artId) + "_") + artistAddr)
62+
63+
64+func keyFlag (artistAddr,artId) = ((("art_flag_" + artId) + "_") + artistAddr)
65+
66+
67+func keyNFTData (id) = ("nft_" + id)
68+
69+
70+func idCallerDate (i) = if (!(dappRunning))
71+ then throw(maintenanceMSG)
72+ else $Tuple3(toBase58String(i.transactionId), toBase58String(i.caller.bytes), lastBlock.timestamp)
73+
74+
75+func isPayment (i) = if ((size(i.payments) == 0))
76+ then throw("No payment attached")
77+ else {
78+ let payment = value(i.payments[0])
79+ let amount = value(payment.amount)
80+ $Tuple2(payment, amount)
81+ }
82+
83+
84+func isSignArtNFT (id) = {
85+ let assetDetails = value(assetInfo(id))
86+ if (if (if (if ((assetDetails.quantity != 1))
87+ then true
88+ else (assetDetails.decimals != 0))
89+ then true
90+ else (assetDetails.reissuable != false))
91+ then true
92+ else (assetDetails.issuer != artworksDapp))
93+ then false
94+ else true
95+ }
96+
97+
98+func acceptedAssetIds (assetId) = if (if (if (if ((assetId != toBase58String(signAssetId)))
99+ then (assetId != toBase58String(wavesAssetId))
100+ else false)
101+ then (assetId != "WAVES")
102+ else false)
103+ then (assetId != toBase58String(usdnAssetId))
104+ else false)
105+ then false
106+ else true
107+
108+
109+func getBidAssetId (assetId) = if ((assetId == "WAVES"))
110+ then unit
111+ else fromBase58String(assetId)
112+
113+
114+func getSaleOwnerAndStatus (nftid) = {
115+ let saleOwner = getStrByK(("current_owner_on_dapp_" + nftid))
116+ if ((saleOwner == "none"))
117+ then throw("NFT not found")
118+ else {
119+ let saleStatus = getStrByK(((("sale2nd_status_" + saleOwner) + "_") + nftid))
120+ if ((saleStatus != "OPEN"))
121+ then throw("NFT not for sale")
122+ else saleOwner
123+ }
124+ }
125+
126+
127+func getBidData (key) = {
128+ let bidData = getStrByK((key + "_OPEN"))
129+ if ((bidData == ""))
130+ then throw("Offer not found")
131+ else {
132+ let bidDataArr = split(bidData, "_")
133+ let assetId = getBidAssetId(bidDataArr[0])
134+ $Tuple3(bidDataArr, assetId, bidData)
135+ }
136+ }
137+
138+
139+func checkNFTInfo (assetId) = {
140+ let nftData = split(getArtStrByK(keyNFTData(toBase58String(value(assetId)))), "_")
141+ let artSignID = getArtStrByK(keySignID(nftData[6], nftData[5]))
142+ if ((size(artSignID) == 0))
143+ then throw("Artwork not found on SIGN Art")
144+ else {
145+ let artStatus = getArtStrByK(keyFlag(nftData[6], nftData[5]))
146+ if (if ((artStatus == artIllegal))
147+ then true
148+ else (artStatus == artSuspended))
149+ then throw(("Original Artwork flagged as " + artStatus))
150+ else {
151+ let artistStatus = getUserStrByK(keyUserStatus(nftData[6]))
152+ if (containsElement([userSuspended, userRemoved], artistStatus))
153+ then throw(("Original Artist " + artistStatus))
154+ else $Tuple2(true, nftData[6])
155+ }
156+ }
157+ }
158+
159+
160+@Callable(i)
161+func sellNFT (price,asset) = {
162+ let $t059495988 = idCallerDate(i)
163+ let id = $t059495988._1
164+ let caller = $t059495988._2
165+ let date = $t059495988._3
166+ let $t059936029 = isPayment(i)
167+ let payment = $t059936029._1
168+ let amount = $t059936029._2
169+ let assetId = if (if (isDefined(payment.assetId))
170+ then isSignArtNFT(value(payment.assetId))
171+ else false)
172+ then payment.assetId
173+ else throw("No NFT found")
174+ if (!(acceptedAssetIds(asset)))
175+ then throw("Only SIGN, USDN or WAVES accepted")
176+ else {
177+ let $t062596312 = checkNFTInfo(assetId)
178+ let isValidNFT = $t062596312._1
179+ let creatorAddr = $t062596312._2
180+ if (!(isValidNFT))
181+ then throw("Something went wrong")
182+ else [StringEntry((((((("sale2nd_info_" + caller) + "_") + toBase58String(value(payment.assetId))) + "_") + creatorAddr) + "_OPEN"), ((((toString(date) + "_") + toString(price)) + "_") + asset)), StringEntry(((("sale2nd_status_" + caller) + "_") + toBase58String(value(payment.assetId))), "OPEN"), StringEntry(("current_owner_on_dapp_" + toBase58String(value(payment.assetId))), caller)]
183+ }
184+ }
185+
186+
187+
188+@Callable(i)
189+func cancelSale (nftid) = {
190+ let $t069887027 = idCallerDate(i)
191+ let id = $t069887027._1
192+ let caller = $t069887027._2
193+ let date = $t069887027._3
194+ let saleOwner = getStrByK(("current_owner_on_dapp_" + nftid))
195+ if ((saleOwner != caller))
196+ then throw("You don't own this NFT")
197+ else {
198+ let saleStatus = getStrByK(((("sale2nd_status_" + caller) + "_") + nftid))
199+ if ((saleStatus != "OPEN"))
200+ then throw("Sale not active")
201+ else {
202+ let $t073197379 = checkNFTInfo(toBytes(nftid))
203+ let isValidNFT = $t073197379._1
204+ let creatorAddr = $t073197379._2
205+ if (!(isValidNFT))
206+ then throw("Something went wrong")
207+ else {
208+ let saleInfo = getStrByK(((((((("sale2nd_info_" + caller) + "_") + nftid) + "_") + creatorAddr) + "_") + saleStatus))
209+[DeleteEntry((((((("sale2nd_info_" + caller) + "_") + nftid) + "_") + creatorAddr) + "_OPEN")), DeleteEntry(((("sale2nd_status_" + caller) + "_") + nftid)), StringEntry((((((((((("sale2nd_info_" + caller) + "_") + nftid) + "_") + creatorAddr) + "_") + toString(date)) + "_") + id) + "_CANCELLED"), saleInfo), StringEntry(("current_owner_on_dapp_" + nftid), "none"), ScriptTransfer(Address(fromBase58String(caller)), 1, fromBase58String(nftid))]
210+ }
211+ }
212+ }
213+ }
214+
215+
216+
217+@Callable(i)
218+func buyNFT (nftid) = {
219+ let $t080638134 = idCallerDate(i)
220+ let id = $t080638134._1
221+ let caller = $t080638134._2
222+ let date = $t080638134._3
223+ let saleOwner = getSaleOwnerAndStatus(nftid)
224+ let $t081898249 = checkNFTInfo(toBytes(nftid))
225+ let isValidNFT = $t081898249._1
226+ let creatorAddr = $t081898249._2
227+ if (!(isValidNFT))
228+ then throw("Something went wrong")
229+ else {
230+ let saleInfo = getStrByK((((((("sale2nd_info_" + saleOwner) + "_") + nftid) + "_") + creatorAddr) + "_OPEN"))
231+ if ((size(saleInfo) == 0))
232+ then throw("Sale Not found!")
233+ else {
234+ let saleInfoArray = split(saleInfo, "_")
235+ let $t085138549 = isPayment(i)
236+ let payment = $t085138549._1
237+ let amount = $t085138549._2
238+ if (if ((saleInfoArray[1] != toString(amount)))
239+ then true
240+ else (saleInfoArray[2] != toBase58String(value(payment.assetId))))
241+ then throw("Payment infos don't match.")
242+ else {
243+ let amountForSign = fraction(amount, signCut, 100)
244+ let amountForCreator = fraction(amount, creatorCut, 100)
245+ let amountForOwner = (amount - (amountForSign + amountForCreator))
246+[DeleteEntry((((((("sale2nd_info_" + saleOwner) + "_") + nftid) + "_") + creatorAddr) + "_OPEN")), DeleteEntry(((("sale2nd_status_" + saleOwner) + "_") + nftid)), StringEntry((((((((((("sale2nd_info_" + saleOwner) + "_") + nftid) + "_") + creatorAddr) + "_") + toString(date)) + "_") + id) + "_CLOSED"), ((((((toString(date) + "_") + toString(amount)) + "_") + toBase58String(value(payment.assetId))) + "_to_") + caller)), StringEntry(("current_owner_on_dapp_" + nftid), "none"), ScriptTransfer(Address(fromBase58String(feeReceiver)), amountForSign, payment.assetId), ScriptTransfer(Address(fromBase58String(creatorAddr)), amountForCreator, payment.assetId), ScriptTransfer(Address(fromBase58String(saleOwner)), amountForOwner, payment.assetId), ScriptTransfer(Address(fromBase58String(caller)), 1, fromBase58String(nftid))]
247+ }
248+ }
249+ }
250+ }
251+
252+
253+
254+@Callable(i)
255+func setOffer (nftid) = {
256+ let $t099179955 = idCallerDate(i)
257+ let id = $t099179955._1
258+ let caller = $t099179955._2
259+ let date = $t099179955._3
260+ let $t099609996 = isPayment(i)
261+ let payment = $t099609996._1
262+ let amount = $t099609996._2
263+ let assetId = if (!(isDefined(payment.assetId)))
264+ then "WAVES"
265+ else toBase58String(value(payment.assetId))
266+ if (!(acceptedAssetIds(assetId)))
267+ then throw("asset not accepted")
268+ else {
269+ let saleOwner = getSaleOwnerAndStatus(nftid)
270+[StringEntry((((((((("offer2nd_" + saleOwner) + "_") + nftid) + "_") + caller) + "_") + id) + "_OPEN"), ((((((((assetId + "_") + toString(amount)) + "_") + toString(date)) + "_") + caller) + "_") + id))]
271+ }
272+ }
273+
274+
275+
276+@Callable(i)
277+func acceptOffer (nftid,offerId,offerOwner) = {
278+ let $t01070610780 = idCallerDate(i)
279+ let id = $t01070610780._1
280+ let caller = $t01070610780._2
281+ let date = $t01070610780._3
282+ let saleOwner = getSaleOwnerAndStatus(nftid)
283+ if ((caller != saleOwner))
284+ then throw("You cannot do this action")
285+ else {
286+ let offerExist = getStrByK((((((((("offer2nd_" + saleOwner) + "_") + nftid) + "_") + offerOwner) + "_") + offerId) + "_OPEN"))
287+ if ((offerExist == ""))
288+ then throw("Offer not found or not for sale")
289+ else {
290+ let $t01108511145 = checkNFTInfo(toBytes(nftid))
291+ let isValidNFT = $t01108511145._1
292+ let creatorAddr = $t01108511145._2
293+ if (!(isValidNFT))
294+ then throw("Something went wrong")
295+ else {
296+ let saleInfo = getStrByK((((((("sale2nd_info_" + saleOwner) + "_") + nftid) + "_") + creatorAddr) + "_OPEN"))
297+ if ((size(saleInfo) == 0))
298+ then throw("Sale Not found!")
299+ else {
300+ let bidDataKey = ((((((("offer2nd_" + saleOwner) + "_") + nftid) + "_") + offerOwner) + "_") + offerId)
301+ let $t01153911598 = getBidData(bidDataKey)
302+ let bidDataArr = $t01153911598._1
303+ let assetId = $t01153911598._2
304+ let bidData = $t01153911598._3
305+ let amount = value(parseInt(bidDataArr[1]))
306+ let amountForSign = fraction(amount, signCut, 100)
307+ let amountForCreator = fraction(amount, creatorCut, 100)
308+ let amountForOwner = (amount - (amountForSign + amountForCreator))
309+[DeleteEntry((((((("sale2nd_info_" + saleOwner) + "_") + nftid) + "_") + creatorAddr) + "_OPEN")), DeleteEntry((bidDataKey + "_OPEN")), DeleteEntry(((("sale2nd_status_" + saleOwner) + "_") + nftid)), StringEntry((bidDataKey + "_CLOSED"), ((((((((toString(date) + "_") + toString(amount)) + "_") + toBase58String(value(assetId))) + "_to_") + offerOwner) + "_") + offerId)), StringEntry((((((((((("sale2nd_info_" + saleOwner) + "_") + nftid) + "_") + creatorAddr) + "_") + toString(date)) + "_") + id) + "_CLOSED"), ((((((toString(date) + "_") + toString(amount)) + "_") + toBase58String(value(assetId))) + "_to_") + offerOwner)), StringEntry(("current_owner_on_dapp_" + nftid), "none"), ScriptTransfer(Address(fromBase58String(feeReceiver)), amountForSign, assetId), ScriptTransfer(Address(fromBase58String(creatorAddr)), amountForCreator, assetId), ScriptTransfer(Address(fromBase58String(saleOwner)), amountForOwner, assetId), ScriptTransfer(Address(fromBase58String(bidDataArr[3])), 1, fromBase58String(nftid))]
310+ }
311+ }
312+ }
313+ }
314+ }
315+
316+
317+
318+@Callable(i)
319+func cancelOffer (nftid,offerId) = {
320+ let $t01287913109 = idCallerDate(i)
321+ let id = $t01287913109._1
322+ let caller = $t01287913109._2
323+ let date = $t01287913109._3
324+ let saleOwner = getSaleOwnerAndStatus(nftid)
325+ let bidDataKey = ((((((("offer2nd_" + saleOwner) + "_") + nftid) + "_") + caller) + "_") + offerId)
326+ let $t01324513345 = getBidData(((((((("offer_" + nftid) + "_") + saleOwner) + "_") + caller) + "_") + offerId))
327+ let bidDataArr = $t01324513345._1
328+ let assetId = $t01324513345._2
329+ let bidData = $t01324513345._3
330+ let bidStatus = "CANCELLED"
331+[DeleteEntry((bidDataKey + "_OPEN")), StringEntry(((bidDataKey + "_") + bidStatus), ((bidData + "_") + toString(date))), ScriptTransfer(Address(fromBase58String(caller)), parseIntValue(bidDataArr[1]), assetId)]
332+ }
333+
334+
335+
336+@Callable(i)
337+func setRequest (nftid) = {
338+ let $t01394913987 = idCallerDate(i)
339+ let id = $t01394913987._1
340+ let caller = $t01394913987._2
341+ let date = $t01394913987._3
342+ let $t01399214028 = isPayment(i)
343+ let payment = $t01399214028._1
344+ let amount = $t01399214028._2
345+ let assetId = if (!(isDefined(payment.assetId)))
346+ then "WAVES"
347+ else toBase58String(value(payment.assetId))
348+ if (!(acceptedAssetIds(assetId)))
349+ then throw("asset not accepted")
350+ else {
351+ let $t01424914309 = checkNFTInfo(toBytes(nftid))
352+ let isValidNFT = $t01424914309._1
353+ let creatorAddr = $t01424914309._2
354+ if (!(isValidNFT))
355+ then throw("Something went wrong")
356+ else [StringEntry((((((("request2nd_" + nftid) + "_") + caller) + "_") + id) + "_OPEN"), ((((((((assetId + "_") + toString(amount)) + "_") + toString(date)) + "_") + caller) + "_") + id))]
357+ }
358+ }
359+
360+
361+
362+@Callable(i)
363+func deleteEntry (entry) = {
364+ let caller = toString(addressFromPublicKey(i.callerPublicKey))
365+ if ((caller == chris))
366+ then [DeleteEntry(entry)]
367+ else throw("no")
368+ }
369+
370+

github/deemru/w8io/3ef1775 
45.00 ms