tx · A5ewwrzvGtgchFzDoDUdqoSPybwsBJbTiWMzqhdLcnHU

3N2Tdcx5fzxJAKP5hMp9W35Cp1EFzfiJ1zG:  -0.01400000 Waves

2020.10.10 11:27 [1214236] smart account 3N2Tdcx5fzxJAKP5hMp9W35Cp1EFzfiJ1zG > SELF 0.00000000 Waves

{ "type": 13, "id": "A5ewwrzvGtgchFzDoDUdqoSPybwsBJbTiWMzqhdLcnHU", "fee": 1400000, "feeAssetId": null, "timestamp": 1602318512143, "version": 2, "chainId": 84, "sender": "3N2Tdcx5fzxJAKP5hMp9W35Cp1EFzfiJ1zG", "senderPublicKey": "9SULUbW7L2jV2nv8v48Kdzox4cZ8jEfg778yJHJpgVwM", "proofs": [ "3txwRLSwCaB1MvFRFJ1LQzVxm2sMn4UAaiu93rF8fesLAPPKJoHxVPNGRxvfMbyY4ZcDh7VuktiihGML1uZrzKoR" ], "script": "base64:AAIEAAAAAAAAAFoIAhIGCgQICAgIEgMKAQgSBgoECAgICBIECgIICBIDCgEIEg4KDAgICAgICAEICAgICBINCgsICAgICAEICAgICBIECgIICBIGCgQIAQEIEgQKAggIEgMKAQgAAAA2AAAAAA9zdG9yYWdlVmVyaWZpZXIJAQAAAAV2YWx1ZQAAAAEJAAQmAAAAAQIAAAAjM04yczVSdGFIUEJlbkNzeDJFQ2NvRlJiWUh4M25vWmhYVzEAAAAADHNpZ25WZXJpZmllcgkBAAAABXZhbHVlAAAAAQkABCYAAAABAgAAACMzTkMyOGhTaXZybXNUVVhhWUQxeDZMMzYySjRacFVub1RkQgAAAAALZmVlUmVjZWl2ZXICAAAAIzNOMUU2dFhkZFJvVmFSZlE5ZFEzdmc1TGFXMmZzZDhIS3ViAAAAAAtzaWduQXNzZXRJZAEAAAAg6KVqvMp3QvJwYTI1Sk9Fg7m5HuWZZxfDcerZC6EEresAAAAAC3VzZG5Bc3NldElkAQAAACAP8hwSrOTEPJrsRhqrJaiw7LoHK0bMbYhy8LXikkkBtAAAAAAMd2F2ZXNBc3NldElkAQAAAAAAAAAABnVzZG5JRAIAAAAsM0tGWEJHR0xDakE1WjJEdVc0RHE5ZkREckhqSkpQMVpFa2FvYWpTenVLc0MAAAAABWFkbWluAgAAACMzTXNHNmpQTkNyVkpVdFlCN1hKQnhTN3V0V3NYQWY0bjlWcAAAAAAGYWRtaW4yAgAAACMzTXptNFZMd3NOOXVad2JUTXpQajNYdXhWNmtFZkFSOFVETgAAAAAPV0hJVEVMSVNURURPTkxZBgAAAAALdXNlckFsbG93ZWQCAAAAB0FMTE9XRUQAAAAADnVzZXJSZWdpc3RlcmVkAgAAAApSRUdJU1RFUkVEAAAAAAx1c2VyVmVyaWZpZWQCAAAACFZFUklGSUVEAAAAAA11c2VyU3VzcGVuZGVkAgAAAAlTVVNQRU5ERUQAAAAAC3VzZXJSZW1vdmVkAgAAAAdSRU1PVkVEAAAAABB1c2VyVW5yZWdpc3RlcmVkAgAAAAxVTlJFR0lTVEVSRUQAAAAABm9uU2FsZQIAAAAHT05fU0FMRQAAAAAEc29sZAIAAAAEU09MRAAAAAAIY2FuY2VsZWQCAAAACENBTkNFTEVEAQAAAA5nZXRT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CmFydF9wcmljZV8FAAAABWFydElkAgAAAAFfBQAAAApjYWxsZXJBZGRyAQAAABVrZXlBcnRBc3NldElkQWNjZXB0ZWQAAAACAAAACmNhbGxlckFkZHIAAAAFYXJ0SWQJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAEmFydF9hc3NldEFjY2VwdGVkXwUAAAAFYXJ0SWQCAAAAAV8FAAAACmNhbGxlckFkZHIBAAAAFGtleUFydEhhc2hCeVR4aWRBZGRyAAAAAgAAAApjYWxsZXJBZGRyAAAABHR4aWQJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAE2dldF9oYXNoYnl0eGlkYWRkcl8FAAAABHR4aWQCAAAAAV8FAAAACmNhbGxlckFkZHIBAAAAEWtleUFydE93bmVyQnlIYXNoAAAAAQAAAApzaGEyNTZIYXNoCQABLAAAAAICAAAAEmdldF9vd25lcl9ieV9oYXNoXwUAAAAKc2hhMjU2SGFzaAEAAAATa2V5QXJ0QXJ0aWRCeVNpZ25pZAAAAAIAAAAKY2FsbGVyQWRkcgAAAAZzaWduSWQJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAEmdldF9hcnRpZGJ5c2lnbmlkXwUAAAAGc2lnbklkAgAAAAFfBQAAAApjYWxsZXJBZGRyAQAAABVrZXlBcnRUeGlkQnlIYXNoT3duZXIAAAACAAAACnNoYTI1Nkhhc2gAAAAKY2FsbGVyQWRkcgkAASwAAAACAgAAABdnZXRfdHhpZF9ieV9oYXNoX293bmVyXwkAAlgAAAABCQALVAAAAAEJAAGbAAAAAQkAASwAAAACBQAAAApzaGEyNTZIYXNoBQAAAApjYWxsZXJBZGRyAAAACwAAAAFpAQAAAAxyZWdpc3RlclVzZXIAAAAEAAAABG5hbWUAAAALZGVzY3JpcHRpb24AAAAFdGh1bWIAAAAGc29jaWFsBAAAAApjYWxsZXJBZGRyCQAEJQAAAAEJAQAAABRhZGRyZXNzRnJvbVB1YmxpY0tleQAAAAEIBQAAAAFpAAAAD2NhbGxlclB1YmxpY0tleQQAAAAPdXNlckNhblJlZ2lzdGVyCQEAAAAOZ2V0U3RyaW5nQnlLZXkAAAABCQEAAAANa2V5VXNlclN0YXR1cwAAAAEFAAAACmNhbGxlckFkZHIEAAAAAmlkCQACWAAAAAEIBQAAAAFpAAAADXRyYW5zYWN0aW9uSWQEAAAACXRpbWVzdGFtcAgFAAAACWxhc3RCbG9jawAAAAl0aW1lc3RhbXADAwkAAAAAAAACBQAAAA91c2VyQ2FuUmVnaXN0ZXIFAAAADXVzZXJTdXNwZW5kZWQGCQAAAAAAAAIFAAAAD3VzZXJDYW5SZWdpc3RlcgUAAAALdXNlclJlbW92ZWQJAAACAAAAAQIAAABLWW91IGFyZSBub3cgYWxsb3dlZCB0byByZWdpc3RlciwgeW91ciBhY2NvdW50IGhhdmUgYmVlbiBzdXNwZW5kZWQvIHJlbW92ZWQuAwkAAAAAAAACBQAAAA91c2VyQ2FuUmVnaXN0ZXIFAAAADnVzZXJSZWdpc3RlcmVkCQAAAgAAAAECAAAAPVlvdSBhcmUgYWxyZWFkeSByZWdpc3RlcmVkLCBwbGVhc2UgdXNlIHVwZGF0ZSBtZXRob2QgaW5zdGVhZC4DAwkAAAAAAAACBQAAAA91c2VyQ2FuUmVnaXN0ZXICAAAAAAUAAAAPV0hJVEVMSVNURURPTkxZBwkAAAIAAAABAgAAAE1Zb3UgYXJlIG5vdyBhbGxvd2VkIHRvIHJlZ2lzdGVyIHlldCwgcGxlYXNlIGNvbnRhY3QgdXMgZmlyc3QgdG8gZ2V0IGFwcHJvdmVkLgMDCQAAAAAAAAIFAAAABG5hbWUCAAAAAAYJAAAAAAAAAgUAAAALZGVzY3JpcHRpb24CAAAAAAkAAAIAAAABAgAAACROYW1lIGFuZCBkZXNjcmlwdGlvbiBjYW5ub3QgYmUgZW1wdHkDCQAAZgAAAAIJAAExAAAAAQUAAAALZGVzY3JpcHRpb24AAAAAAAAAAlgJAAACAAAAAQIAAAAqNjAwIENoYXJhY3RlcnMgbWF4aW11bSBmb3IgdGhlIGRlc2NyaXB0aW9uCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAALa2V5VXNlckRhdGUAAAABBQAAAApjYWxsZXJBZGRyBQAAAAl0aW1lc3RhbXAJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAC2tleVVzZXJBZGRyAAAAAQUAAAAKY2FsbGVyQWRkcgkAASwAAAACCQABLAAAAAIFAAAAAmlkAgAAAAFfCQABpAAAAAEIBQAAAAlsYXN0QmxvY2sAAAAJdGltZXN0YW1wCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAAtrZXlVc2VyTmFtZQAAAAEFAAAACmNhbGxlckFkZHIFAAAABG5hbWUJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAC2tleVVzZXJEZXNjAAAAAQUAAAAKY2FsbGVyQWRkcgUAAAALZGVzY3JpcHRpb24JAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAADWtleVVzZXJTb2NpYWwAAAABBQAAAApjYWxsZXJBZGRyBQAAAAZzb2NpYWwJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAADGtleVVzZXJUaHVtYgAAAAEFAAAACmNhbGxlckFkZHIFAAAABXRodW1iCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAA1rZXlVc2VyU3RhdHVzAAAAAQUAAAAKY2FsbGVyQWRkcgUAAAAOdXNlclJlZ2lzdGVyZWQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgIAAAAObGFzdF9pbnZva2VfaWQFAAAAAmlkBQAAAANuaWwAAAABaQEAAAALZGVsZXRlRW50cnkAAAABAAAABWVudHJ5BAAAAApjYWxsZXJBZGRyCQAEJQAAAAEJAQAAABRhZGRyZXNzRnJvbVB1YmxpY0tleQAAAAEIBQAAAAFpAAAAD2NhbGxlclB1YmxpY0tleQMJAAAAAAAAAgUAAAAKY2FsbGVyQWRkcgUAAAAFYWRtaW4JAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQUAAAAFZW50cnkFAAAAA25pbAkAAAIAAAABAgAAAAJubwAAAAFpAQAAAAp1cGRhdGVVc2VyAAAABAAAAARuYW1lAAAAC2Rlc2NyaXB0aW9uAAAABXRodW1iAAAABnNvY2lhbAQAAAAKY2FsbGVyQWRkcgkABCUAAAABCQEAAAAUYWRkcmVzc0Zyb21QdWJsaWNLZXkAAAABCAUAAAABaQAAAA9jYWxsZXJQdWJsaWNLZXkEAAAAD3VzZXJDYW5SZWdpc3RlcgkBAAAADmdldFN0cmluZ0J5S2V5AAAAAQkBAAAADWtleVVzZXJTdGF0dXMAAAABBQAAAApjYWxsZXJBZGRyAwMJAAAAAAAAAgUAAAAPdXNlckNhblJlZ2lzdGVyBQAAAA11c2VyU3VzcGVuZGVkBgkAAAAAAAACBQAAAA91c2VyQ2FuUmVnaXN0ZXIFAAAAC3VzZXJSZW1vdmVkCQAAAgAAAAECAAAAS1lvdSBhcmUgbm93IGFsbG93ZWQgdG8gcmVnaXN0ZXIsIHlvdXIgYWNjb3VudCBoYXZlIGJlZW4gc3VzcGVuZGVkLyByZW1vdmVkLgMDCQAAAAAAAAIFAAAAD3VzZXJDYW5SZWdpc3RlcgIAAAAABgkAAAAAAAACBQAAAA91c2VyQ2FuUmVnaXN0ZXIFAAAAC3VzZXJBbGxvd2VkCQAAAgAAAAECAAAAJ1BsZWFzZSByZWdpc3RlciBmaXJzdCB3aXRoIHJlZ2lzdGVyVXNlcgQAAAACaWQJAAJYAAAAAQgFAAAAAWkAAAANdHJhbnNhY3Rpb25JZAQAAAAJdGltZXN0YW1wCAUAAAAJbGFzdEJsb2NrAAAACXRpbWVzdGFtcAMDCQAAAAAAAAIFAAAABG5hbWUCAAAAAAYJAAAAAAAAAgUAAAALZGVzY3JpcHRpb24CAAAAAAkAAAIAAAABAgAAACROYW1lIGFuZCBkZXNjcmlwdGlvbiBjYW5ub3QgYmUgZW1wdHkDCQAAZgAAAAIJAAExAAAAAQUAAAALZGVzY3JpcHRpb24AAAAAAAAAAlgJAAACAAAAAQIAAAAqNjAwIENoYXJhY3RlcnMgbWF4aW11bSBmb3IgdGhlIGRlc2NyaXB0aW9uCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAAtrZXlVc2VyTmFtZQAAAAEFAAAACmNhbGxlckFkZHIFAAAABG5hbWUJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAC2tleVVzZXJEZXNjAAAAAQUAAAAKY2FsbGVyQWRkcgUAAAALZGVzY3JpcHRpb24JAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAADWtleVVzZXJTb2NpYWwAAAABBQAAAApjYWxsZXJBZGRyBQAAAAZzb2NpYWwJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkB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ZyBMaWNlbmNlIENJRCBsZW5ndGgDCQEAAAABIQAAAAEJAQAAAAx2YWxpZGF0ZUhhc2gAAAABBQAAAApzaGEyNTZIYXNoCQAAAgAAAAECAAAAK1NvdXJjZSBIYXNoIHNob3VsZCBiZSA2NCBjaGFyYWN0ZXJzIG1heGltdW0DCQEAAAABIQAAAAEJAQAAAAx2YWxpZGF0ZUhhc2gAAAABBQAAAAxzaGEyNTZFeHBvcnQJAAACAAAAAQIAAAArRXhwb3J0IEhhc2ggc2hvdWxkIGJlIDY0IGNoYXJhY3RlcnMgbWF4aW11bQMJAQAAAAEhAAAAAQkBAAAADHZhbGlkYXRlSGFzaAAAAAEFAAAADXNoYTI1NkxpY2VuY2UJAAACAAAAAQIAAAAsTGljZW5jZSBIYXNoIHNob3VsZCBiZSA2NCBjaGFyYWN0ZXJzIG1heGltdW0DCQAAAAAAAAIJAAGQAAAAAQgFAAAABmludm9rZQAAAAhwYXltZW50cwAAAAAAAAAAAAkAAAIAAAABAgAAABNObyBwYXltZW50IGF0dGFjaGVkBAAAAAdwYXltZW50CQEAAAAFdmFsdWUAAAABCQABkQAAAAIIBQAAAAZpbnZva2UAAAAIcGF5bWVudHMAAAAAAAAAAAAEAAAABmFtb3VudAkBAAAABXZhbHVlAAAAAQgFAAAAB3BheW1lbnQAAAAGYW1vdW50BAAAAAdhc3NldElkAwMJAQAAAAlpc0RlZmluZWQAAAABCAUAAAAHcGF5bWVudAAAAAdhc3NldElkCQAAAAAAAAIIBQAAAAdwYXltZW50AAAAB2Fzc2V0SWQFAAAAC3NpZ25Bc3NldElkBwgFAAAAB3BheW1lbnQAAAAHYXNzZXRJZAkAAAIAAAABAgAAACZPbmx5IFNJR04gdG9rZW4gYWNjZXB0ZWQgYXQgdGhlIG1vbWVudAQAAAAZY3VycmVudENlcnRpZmljYXRpb25QcmljZQQAAAAHJG1hdGNoMAkABBoAAAACBQAAAA9zdG9yYWdlVmVyaWZpZXIJAAEsAAAAAgIAAAASY2VydGlmaWNhdGlvbl9mZWVfCQACWAAAAAEFAAAAC3NpZ25Bc3NldElkAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAABXByaWNlBQAAAAckbWF0Y2gwBQAAAAVwcmljZQkAAAIAAAABAgAAABlQcmljZSB1bmRlZmluZWQgaW4gb3JhY2xlAwkBAAAAAiE9AAAAAgUAAAAGYW1vdW50BQAAABljdXJyZW50Q2VydGlmaWNhdGlvblByaWNlCQAAAgAAAAEJAAEsAAAAAgIAAAAZUGF5bWVudCBhbW91bnQgc2hvdWxkIGJlIAkAAaQAAAABBQAAABljdXJyZW50Q2VydGlmaWNhdGlvblByaWNlBAAAAAplbnRyeUV4aXN0CQEAAAAOZ2V0U3RyaW5nQnlLZXkAAAABCQEAAAAVa2V5QXJ0VHhpZEJ5SGFzaE93bmVyAAAAAgUAAAAKc2hhMjU2SGFzaAUAAAANY2FsbGVyQWRkcmVzcwMJAQAAAAIhPQAAAAIFAAAACmVudHJ5RXhpc3QCAAAAAAkAAAIAAAABAgAAACpZb3UgYWxyZWFkeSBhZGRlZCB0aGlzIGFydHdvcmsgb24gU2lnbiBBcnQEAAAACWhhc2hFeGlzdAkBAAAADmdldFN0cmluZ0J5S2V5AAAAAQkBAAAAEWtleUFydE93bmVyQnlIYXNoAAAAAQUAAAAKc2hhMjU2SGFzaAMJAQAAAAIhPQAAAAIFAAAACWhhc2hFeGlzdAIAAAAACQAAAgAAAAECAAAAM1RoaXMgYXJ0d29yayBoYXNoIGlzIGFscmVhZHkgcmVnaXN0ZXJlZCBvbiBTaWduIEFydAQAAAAPaXNTaWduQ2VydGlmaWVkCQEAAAAUY2hlY2tTaWduQ2VydGlmaWNhdGUAAAADBQAAAAZzaWduSUQFAAAADWNhbGxlckFkZHJlc3MFAAAACnNoYTI1Nkhhc2gDCQEAAAABIQAAAAEFAAAAD2lzU2lnbkNlcnRpZmllZAkAAAIAAAABAgAAAEtTaWduIENlcnRpZmljYXRlIG5vdCBmb3VuZCBvbiBTaWduLXdlYi5hcHAgc21hcnQgY29udHJhY3QgZm9yIHRoaXMgYWRkcmVzcy4DCQAAAAAAAAIJAAExAAAAAQUAAAAKY2lkRGlzcGxheQAAAAAAAAAAAAkAAAIAAAABAgAAABtEaXNwbGF5IENJRCBjYW5ub3QgYmUgZW1wdHkDCQAAAAAAAAIJAAExAAAAAQUAAAAEbmFtZQAAAAAAAAAAAAkAAAIAAAABAgAAABVUaXRsZSBjYW5ub3QgYmUgZW1wdHkDCQAAZgAAAAIJAAExAAAAAQUAAAAEbmFtZQAAAAAAAAAAZAkAAAIAAAABAgAAACMxMDAgQ2hhcmFjdGVycyBtYXhpbXVtIGZvciB0aGUgbmFtZQMJAABmAAAAAgkAATEAAAABBQAAAAtkZXNjcmlwdGlvbgAAAAAAAAAD6AkAAAIAAAABAgAAACsxMDAwIENoYXJhY3RlcnMgbWF4aW11bSBmb3IgdGhlIGRlc2NyaXB0aW9uAwkAAAAAAAACCQABMQAAAAEFAAAAC2Rlc2NyaXB0aW9uAAAAAAAAAAAACQAAAgAAAAECAAAAG0Rlc2NyaXB0aW9uIGNhbm5vdCBiZSBlbXB0eQQAAAAIdGFnc0xpc3QJAAS1AAAAAgUAAAAEdGFncwIAAAABLAMJAABmAAAAAgkAAZAAAAABBQAAAAh0YWdzTGlzdAAAAAAAAAAABQkAAAIAAAABAgAAADhUYWdzIHNob3VsZCBiZSBtYXhpbXVtIDUgc2luZ2xlIHdvcmQgc2VwYXJhdGVkIGJ5IHNwYWNlLgQAAAAQdXNlcklzUmVnaXN0ZXJlZAQAAAAHJG1hdGNoMAkABB0AAAACBQAAAAR0aGlzCQABLAAAAAICAAAADHVzZXJfc3RhdHVzXwUAAAANY2FsbGVyQWRkcmVzcwMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAGU3RyaW5nBAAAAAFzBQAAAAckbWF0Y2gwBQAAAAFzBQAAABB1c2VyVW5yZWdpc3RlcmVkBAAAAAl0aW1lc3RhbXAIBQAAAAlsYXN0QmxvY2sAAAAJdGltZXN0YW1wAwMJAQAAAAlpc0RlZmluZWQAAAABBQAAABB1c2VySXNSZWdpc3RlcmVkCQAAAAAAAAIFAAAAEHVzZXJJc1JlZ2lzdGVyZWQFAAAAEHVzZXJVbnJlZ2lzdGVyZWQHCQAAAgAAAAECAAAAOFBsZWFzZSByZWdpc3RlciB0aGlzIGFjY291bnQgZmlyc3Qgd2l0aCAiVXNlciBpbmZvcyIgdGFiAwkAAAAAAAACBQAAABB1c2VySXNSZWdpc3RlcmVkBQAAAA11c2VyU3VzcGVuZGVkCQAAAgAAAAECAAAAGVlvdXIgYWNjb3VudCBpcyBzdXNwZW5kZWQDCQAAAAAAAAIFAAAAEHVzZXJJc1JlZ2lzdGVyZWQFAAAAC3VzZXJSZW1vdmVkCQAAAgAAAAECAAAAHllvdXIgYWNjb3VudCBoYXZlIGJlZW4gcmVtb3ZlZAMJAABmAAAAAgUAAAAHbWF4bWludAAAAAAAAAAACgkAAAIAAAABAgAAAB9NYXhpbXVtIDEwIGVkaXRpb25zIHBlciBhcnR3b3JrAwkBAAAAAiE9AAAAAgkAATEAAAABBQAAAApzaGEyNTZIYXNoAAAAAAAAAABACQAAAgAAAAECAAAAMUhhc2ggc2hvdWxkIGJlIHNoYTI1NiBzdHJpbmcgY29tcG9zZWQgb2YgNjQgY2hhci4JAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAEWtleUFydE93bmVyQnlIYXNoAAAAAQUAAAAKc2hhMjU2SGFzaAUAAAANY2FsbGVyQWRkcmVzcwkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAVa2V5QXJ0VHhpZEJ5SGFzaE93bmVyAAAAAgUAAAAKc2hhMjU2SGFzaAUAAAANY2FsbGVyQWRkcmVzcwUAAAAFYXJ0SWQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAAAprZXlBcnREYXRlAAAAAgUAAAANY2FsbGVyQWRkcmVzcwUAAAAFYXJ0SWQFAAAACXRpbWVzdGFtcAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAKa2V5QXJ0TmFtZQAAAAIFAAAADWNhbGxlckFkZHJlc3MFAAAABWFydElkBQAAAARuYW1lCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAAprZXlBcnREZXNjAAAAAgUAAAANY2FsbGVyQWRkcmVzcwUAAAAFYXJ0SWQFAAAAC2Rlc2NyaXB0aW9uCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABBrZXlBcnREaXNwbGF5Q2lkAAAAAgUAAAANY2FsbGVyQWRkcmVzcwUAAAAFYXJ0SWQFAAAACmNpZERpc3BsYXkJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAD2tleUFydEV4cG9ydENpZAAAAAIFAAAADWNhbGxlckFkZHJlc3MFAAAABWFydElkBQAAAAljaWRFeHBvcnQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAEGtleUFydEV4cG9ydEhhc2gAAAACBQAAAA1jYWxsZXJBZGRyZXNzBQAAAAVhcnRJZAUAAAAMc2hhMjU2RXhwb3J0CQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABFrZXlBcnRMaWNlbmNlSGFzaAAAAAIFAAAADWNhbGxlckFkZHJlc3MFAAAABWFydElkBQAAAA1zaGEyNTZMaWNlbmNlCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABBrZXlBcnRMaWNlbmNlQ2lkAAAAAgUAAAANY2FsbGVyQWRkcmVzcwUAAAAFYXJ0SWQFAAAACmNpZExpY2VuY2UJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAACmtleUFydFR5cGUAAAACBQAAAA1jYWxsZXJBZGRyZXNzBQAAAAVhcnRJZAUAAAAEdHlwZQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAKa2V5QXJ0VGFncwAAAAIFAAAADWNhbGxlckFkZHJlc3MFAAAABWFydElkBQAAAAR0YWdzCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAANa2V5QXJ0TWF4TWludAAAAAIFAAAADWNhbGxlckFkZHJlc3MFAAAABWFydElkBQAAAAdtYXhtaW50CQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAAxrZXlBcnRTaWduSUQAAAACBQAAAA1jYWxsZXJBZGRyZXNzBQAAAAVhcnRJZAUAAAAGc2lnbklECQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAMa2V5QXJ0SXNzdWVkAAAAAgUAAAANY2FsbGVyQWRkcmVzcwUAAAAFYXJ0SWQAAAAAAAAAAAAJAARMAAAAAgkBAAAADEJvb2xlYW5FbnRyeQAAAAIJAQAAAAxrZXlBcnRPblNhbGUAAAACBQAAAA1jYWxsZXJBZGRyZXNzBQAAAAVhcnRJZAcJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAE2tleUFydEFydGlkQnlTaWduaWQAAAACBQAAAA1jYWxsZXJBZGRyZXNzBQAAAAZzaWduSUQFAAAABWFydElkCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAICAAAADmxhc3RfaW52b2tlX2lkBQAAAAVhcnRJZAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAUa2V5QXJ0SGFzaEJ5VHhpZEFkZHIAAAACBQAAAA1jYWxsZXJBZGRyZXNzBQAAAAVhcnRJZAUAAAAKc2hhMjU2SGFzaAkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQUAAAALZmVlUmVjZWl2ZXIFAAAABmFtb3VudAUAAAAHYXNzZXRJZAUAAAADbmlsAAAABmludm9rZQEAAAANdXBkYXRlQXJ0d29yawAAAAsAAAAEdHhpZAAAAARuYW1lAAAAC2Rlc2NyaXB0aW9uAAAABHRhZ3MAAAAEdHlwZQAAAAdtYXhtaW50AAAACmNpZERpc3BsYXkAAAAMc2hhMjU2RXhwb3J0AAAACWNpZEV4cG9ydAAAAA1zaGEyNTZMaWNlbmNlAAAACmNpZExpY2VuY2UEAAAACHVwZGF0ZUlkCQACWAAAAAEIBQAAAAZpbnZva2UAAAANdHJhbnNhY3Rpb25JZAQAAAANY2FsbGVyQWRkcmVzcwkAAlgAAAABCAgFAAAABmludm9rZQAAAAZjYWxsZXIAAAAFYnl0ZXMDCQEAAAABIQAAAAEJAQAAAAt2YWxpZGF0ZUNJRAAAAAEFAAAACmNpZERpc3BsYXkJAAACAAAAAQIAAAAYV3JvbmcgRGlzcGxheSBDSUQgbGVuZ3RoAwkBAAAAASEAAAABCQEAAAALdmFsaWRhdGVDSUQAAAABBQAAAAljaWRFeHBvcnQJAAACAAAAAQIAAAAXV3JvbmcgRXhwb3J0IENJRCBsZW5ndGgDCQEAAAABIQAAAAEJAQAAAAt2YWxpZGF0ZUNJRAAAAAEFAAAACmNpZExpY2VuY2UJAAACAAAAAQIAAAAYV3JvbmcgTGljZW5jZSBDSUQgbGVuZ3RoAwkBAAAAASEAAAABCQEAAAAMdmFsaWRhdGVIYXNoAAAAAQUAAAAMc2hhMjU2RXhwb3J0CQAAAgAAAAECAAAAK0V4cG9ydCBIYXNoIHNob3VsZCBiZSA2NCBjaGFyYWN0ZXJzIG1heGltdW0DCQEAAAABIQAAAAEJAQAAAAx2YWxpZGF0ZUhhc2gAAAABBQAAAA1zaGEyNTZMaWNlbmNlCQAAAgAAAAECAAAALExpY2VuY2UgSGFzaCBzaG91bGQgYmUgNjQgY2hhcmFjdGVycyBtYXhpbXVtBAAAAAplbnRyeUV4aXN0CQEAAAAOZ2V0U3RyaW5nQnlLZXkAAAABCQEAAAAKa2V5QXJ0TmFtZQAAAAIFAAAADWNhbGxlckFkZHJlc3MFAAAABHR4aWQDCQAAAAAAAAIFAAAACmVudHJ5RXhpc3QCAAAAAAkAAAIAAAABAgAAADFUaGlzIGVudHJ5IGRvZXNuJ3QgZXhpc3Qgb3IgeW91IGFyZSBub3QgdGhlIG93bmVyAwkAAAAAAAACCQABMQAAAAEFAAAABG5hbWUAAAAAAAAAAAAJAAACAAAAAQIAAAAVVGl0bGUgY2Fubm90IGJlIGVtcHR5AwkAAGYAAAACCQABMQAAAAEFAAAABG5hbWUAAAAAAAAAAGQJAAACAAAAAQIAAAAjMTAwIENoYXJhY3RlcnMgbWF4aW11bSBmb3IgdGhlIG5hbWUDCQAAZgAAAAIJAAExAAAAAQUAAAALZGVzY3JpcHRpb24AAAAAAAAAA+gJAAACAAAAAQIAAAArMTAwMCBDaGFyYWN0ZXJzIG1heGltdW0gZm9yIHRoZSBkZXNjcmlwdGlvbgMJAAAAAAAAAgkAATEAAAABBQAAAAtkZXNjcmlwdGlvbgAAAAAAAAAAAAkAAAIAAAABAgAAABtEZXNjcmlwdGlvbiBjYW5ub3QgYmUgZW1wdHkEAAAADWFydHdvcmtNaW50ZWQEAAAAByRtYXRjaDAJAAQaAAAAAgUAAAAEdGhpcwkBAAAADGtleUFydElzc3VlZAAAAAIFAAAADWNhbGxlckFkZHJlc3MFAAAABHR4aWQDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABYgUAAAAHJG1hdGNoMAMJAAAAAAAAAgUAAAABYgAAAAAAAAAAAAcGBwQAAAAIdGFnc0xpc3QJAAS1AAAAAgUAAAAEdGFncwIAAAABLAMJAABmAAAAAgkAAZAAAAABBQAAAAh0YWdzTGlzdAAAAAAAAAAABQkAAAIAAAABAgAAADhUYWdzIHNob3VsZCBiZSBtYXhpbXVtIDUgc2luZ2xlIHdvcmQgc2VwYXJhdGVkIGJ5IHNwYWNlLgQAAAAQdXNlcklzUmVnaXN0ZXJlZAQAAAAHJG1hdGNoMAkABB0AAAACBQAAAAR0aGlzCQABLAAAAAICAAAADHVzZXJfc3RhdHVzXwUAAAANY2FsbGVyQWRkcmVzcwMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAGU3RyaW5nBAAAAAFzBQAAAAckbWF0Y2gwBQAAAAFzBQAAABB1c2VyVW5yZWdpc3RlcmVkAwMJAQAAAAlpc0RlZmluZWQAAAABBQAAABB1c2VySXNSZWdpc3RlcmVkCQAAAAAAAAIFAAAAEHVzZXJJc1JlZ2lzdGVyZWQFAAAAEHVzZXJVbnJlZ2lzdGVyZWQHCQAAAgAAAAECAAAAOFBsZWFzZSByZWdpc3RlciB0aGlzIGFjY291bnQgZmlyc3Qgd2l0aCAiVXNlciBpbmZvcyIgdGFiAwkAAAAAAAACBQAAABB1c2VySXNSZWdpc3RlcmVkBQAAAA11c2VyU3VzcGVuZGVkCQAAAgAAAAECAAAAGVlvdXIgYWNjb3VudCBpcyBzdXNwZW5kZWQDCQAAAAAAAAIFAAAAEHVzZXJJc1JlZ2lzdGVyZWQFAAAAC3VzZXJSZW1vdmVkCQAAAgAAAAECAAAAHllvdXIgYWNjb3VudCBoYXZlIGJlZW4gcmVtb3ZlZAMJAABmAAAAAgUAAAAHbWF4bWludAAAAAAAAAAACgkAAAIAAAABAgAAAB9NYXhpbXVtIDEwIGVkaXRpb25zIHBlciBhcnR3b3JrAwkBAAAAASEAAAABBQAAAA1hcnR3b3JrTWludGVkCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAAprZXlBcnROYW1lAAAAAgUAAAANY2FsbGVyQWRkcmVzcwUAAAAEdHhpZAUAAAAEbmFtZQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAKa2V5QXJ0RGVzYwAAAAIFAAAADWNhbGxlckFkZHJlc3MFAAAABHR4aWQFAAAAC2Rlc2NyaXB0aW9uCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABBrZXlBcnREaXNwbGF5Q2lkAAAAAgUAAAANY2FsbGVyQWRkcmVzcwUAAAAEdHhpZAUAAAAKY2lkRGlzcGxheQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAPa2V5QXJ0RXhwb3J0Q2lkAAAAAgUAAAANY2FsbGVyQWRkcmVzcwUAAAAEdHhpZAUAAAAJY2lkRXhwb3J0CQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABBrZXlBcnRFeHBvcnRIYXNoAAAAAgUAAAANY2FsbGVyQWRkcmVzcwUAAAAEdHhpZAUAAAAMc2hhMjU2RXhwb3J0CQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABBrZXlBcnRMaWNlbmNlQ2lkAAAAAgUAAAANY2FsbGVyQWRkcmVzcwUAAAAEdHhpZAUAAAAKY2lkTGljZW5jZQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAARa2V5QXJ0TGljZW5jZUhhc2gAAAACBQAAAA1jYWxsZXJBZGRyZXNzBQAAAAR0eGlkBQAAAA1zaGEyNTZMaWNlbmNlCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAANa2V5QXJ0TWF4TWludAAAAAIFAAAADWNhbGxlckFkZHJlc3MFAAAABHR4aWQFAAAAB21heG1pbnQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAACmtleUFydFRhZ3MAAAACBQAAAA1jYWxsZXJBZGRyZXNzBQAAAAR0eGlkBQAAAAR0YWdzCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAAprZXlBcnRUeXBlAAAAAgUAAAANY2FsbGVyQWRkcmVzcwUAAAAEdHhpZAUAAAAEdHlwZQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACAgAAAA5sYXN0X2ludm9rZV9pZAUAAAAIdXBkYXRlSWQFAAAAA25pbAkAAAIAAAABAgAAADdZb3UgY2Fubm90IGVkaXQgYXJ0d29yayB0aGF0IGhhdmUgYWxyZWFkeSBtaW50ZWQgTkZUKHMpAAAAAWkBAAAADWRlbGV0ZUFydHdvcmsAAAACAAAABWFydElkAAAAB2FkZHJlc3MEAAAADWNhbGxlckFkZHJlc3MJAAQlAAAAAQkBAAAAFGFkZHJlc3NGcm9tUHVibGljS2V5AAAAAQgFAAAAAWkAAAAPY2FsbGVyUHVibGljS2V5BAAAAAJpZAkAAlgAAAABCAUAAAABaQAAAA10cmFuc2FjdGlvbklkBAAAAAxhZGRyZXNzVG9Vc2UDAwkAAAAAAAACBQAAAA1jYWxsZXJBZGRyZXNzBQAAAAVhZG1pbgYJAAAAAAAAAgUAAAANY2FsbGVyQWRkcmVzcwUAAAAGYWRtaW4yBQAAAAdhZGRyZXNzBQAAAA1jYWxsZXJBZGRyZXNzBAAAAAplbnRyeUV4aXN0BAAAAAckbWF0Y2gwCQAEHQAAAAIFAAAABHRoaXMJAQAAAAprZXlBcnROYW1lAAAAAgUAAAAMYWRkcmVzc1RvVXNlBQAAAAVhcnRJZAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAGU3RyaW5nBAAAAAFzBQAAAAckbWF0Y2gwBQAAAAFzCQAAAgAAAAECAAAAN05vIGFydHdvcmsgbWF0Y2hpbmcgdGhpcyByZXF1ZXN0IG9yIHlvdSBhcmUgbm90IGFsbG93ZWQEAAAADWFydHdvcmtNaW50ZWQEAAAAByRtYXRjaDAJAAQaAAAAAgUAAAAEdGhpcwkBAAAADGtleUFydElzc3VlZAAAAAIFAAAADGFkZHJlc3NUb1VzZQUAAAAFYXJ0SWQDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABYgUAAAAHJG1hdGNoMAMJAAAAAAAAAgUAAAABYgAAAAAAAAAAAAcGBwQAAAAKc2hhMjU2SGFzaAQAAAAHJG1hdGNoMAkABB0AAAACBQAAAAR0aGlzCQEAAAAUa2V5QXJ0SGFzaEJ5VHhpZEFkZHIAAAACBQAAAAxhZGRyZXNzVG9Vc2UFAAAABWFydElkAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAZTdHJpbmcEAAAAAXMFAAAAByRtYXRjaDAFAAAAAXMJAAACAAAAAQIAAAAlTm8gYXJ0d29yayBoYXNoIG1hdGNoaW5nIHRoaXMgcmVxdWVzdAQAAAAGc2lnbklEBAAAAAckbWF0Y2gwCQAEHQAAAAIFAAAABHRoaXMJAQAAAAxrZXlBcnRTaWduSUQAAAACBQAAAAxhZGRyZXNzVG9Vc2UFAAAABWFydElkAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAZTdHJpbmcEAAAAAXMFAAAAByRtYXRjaDAFAAAAAXMJAAACAAAAAQIAAAAgTm8gU0lHTiBJRCBtYXRjaGluZyB0aGlzIHJlcXVlc3QEAAAADGRhdGFUb0RlbGV0ZQkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABCQEAAAAKa2V5QXJ0RGF0ZQAAAAIFAAAADGFkZHJlc3NUb1VzZQUAAAAFYXJ0SWQJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQkBAAAACmtleUFydE5hbWUAAAACBQAAAAxhZGRyZXNzVG9Vc2UFAAAABWFydElkCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEJAQAAAAprZXlBcnREZXNjAAAAAgUAAAAMYWRkcmVzc1RvVXNlBQAAAAVhcnRJZAkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABCQEAAAAQa2V5QXJ0RGlzcGxheUNpZAAAAAIFAAAADGFkZHJlc3NUb1VzZQUAAAAFYXJ0SWQJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQkBAAAAD2tleUFydEV4cG9ydENpZAAAAAIFAAAADGFkZHJlc3NUb1VzZQUAAAAFYXJ0SWQJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQkBAAAAEGtleUFydEV4cG9ydEhhc2gAAAACBQAAAAxhZGRyZXNzVG9Vc2UFAAAABWFydElkCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEJAQAAABFrZXlBcnRMaWNlbmNlSGFzaAAAAAIFAAAADGFkZHJlc3NUb1VzZQUAAAAFYXJ0SWQJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQkBAAAAEGtleUFydExpY2VuY2VDaWQAAAACBQAAAAxhZGRyZXNzVG9Vc2UFAAAABWFydElkCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEJAQAAAAprZXlBcnRUeXBlAAAAAgUAAAAMYWRkcmVzc1RvVXNlBQAAAAVhcnRJZAkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABCQEAAAAKa2V5QXJ0VGFncwAAAAIFAAAADGFkZHJlc3NUb1VzZQUAAAAFYXJ0SWQJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQkBAAAADWtleUFydE1heE1pbnQAAAACBQAAAAxhZGRyZXNzVG9Vc2UFAAAABWFydElkCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEJAQAAAAxrZXlBcnRTaWduSUQAAAACBQAAAAxhZGRyZXNzVG9Vc2UFAAAABWFydElkCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEJAQAAAAxrZXlBcnRJc3N1ZWQAAAACBQAAAAxhZGRyZXNzVG9Vc2UFAAAABWFydElkCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEJAQAAAAxrZXlBcnRPblNhbGUAAAACBQAAAAxhZGRyZXNzVG9Vc2UFAAAABWFydElkCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAICAAAADmxhc3RfaW52b2tlX2lkBQAAAAJpZAkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABCQEAAAARa2V5QXJ0T3duZXJCeUhhc2gAAAABBQAAAApzaGEyNTZIYXNoCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEJAQAAABNrZXlBcnRBcnRpZEJ5U2lnbmlkAAAAAgUAAAAMYWRkcmVzc1RvVXNlBQAAAAZzaWduSUQJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQkBAAAAFWtleUFydFR4aWRCeUhhc2hPd25lcgAAAAIFAAAACnNoYTI1Nkhhc2gFAAAADGFkZHJlc3NUb1VzZQUAAAADbmlsAwMJAAAAAAAAAgUAAAANY2FsbGVyQWRkcmVzcwUAAAAFYWRtaW4GCQAAAAAAAAIFAAAADWNhbGxlckFkZHJlc3MFAAAABmFkbWluMgUAAAAMZGF0YVRvRGVsZXRlAwkBAAAAASEAAAABBQAAAA1hcnR3b3JrTWludGVkBQAAAAxkYXRhVG9EZWxldGUJAAACAAAAAQIAAAA6VGhpcyBhcnR3b3JrIGFscmVhZHkgaGF2ZSBtaW50ZWQgTkZULCB5b3UgY2Fubm90IGRlbGV0ZSBpdAAAAAZpbnZva2UBAAAAC3NlbGxBcnR3b3JrAAAABAAAAAVhcnRJZAAAAAVwcmljZQAA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ZQMJAAAAAAAAAgUAAAAQdXNlcklzUmVnaXN0ZXJlZAUAAAANdXNlclN1c3BlbmRlZAkAAAIAAAABAgAAABlZb3VyIGFjY291bnQgaXMgc3VzcGVuZGVkAwkAAAAAAAACBQAAABB1c2VySXNSZWdpc3RlcmVkBQAAAAt1c2VyUmVtb3ZlZAkAAAIAAAABAgAAAB5Zb3VyIGFjY291bnQgaGF2ZSBiZWVuIGRlbGV0ZWQEAAAACnNlbGxTdGF0dXMDCQAAZgAAAAIFAAAABXByaWNlAAAAAAAAAAAABgcJAARMAAAAAgkBAAAADEJvb2xlYW5FbnRyeQAAAAIJAQAAAAxrZXlBcnRPblNhbGUAAAACBQAAAA1jYWxsZXJBZGRyZXNzBQAAAAVhcnRJZAUAAAAKc2VsbFN0YXR1cwkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAAC2tleUFydFByaWNlAAAAAgUAAAANY2FsbGVyQWRkcmVzcwUAAAAFYXJ0SWQFAAAABXByaWNlCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAANa2V5QXJ0TWF4TWludAAAAAIFAAAADWNhbGxlckFkZHJlc3MFAAAABWFydElkBQAAAAdtYXhNaW50CQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABVrZXlBcnRBc3NldElkQWNjZXB0ZWQAAAACBQAAAA1jYWxsZXJBZGRyZXNzBQAAAAVhcnRJZAUAAAAHYXNzZXRJZAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACAgAAAA5sYXN0X2ludm9rZV9pZAUAAAACaWQFAAAAA25pbAAAAAZpbnZva2UBAAAACmJ1eUFydHdvcmsAAAACAAAABWFydElkAAAABmlzc3VlcgQAAAACaWQJAAJYAAAAAQgFAAAABmludm9rZQAAAA10cmFuc2FjdGlvbklkBAAAAA1jYWxsZXJBZGRyZXNzCQACWAAAAAEICAUAAAAGaW52b2tlAAAABmNhbGxlcgAAAAVieXRlcwQAAAAIdG90YWxORlQJAQAAAA9nZXRJbnRlZ2VyQnlLZXkAAAABAgAAABB0b3RhbF9uZnRfaXNzdWVkBAAAAAZzaWduSUQJAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEJAQAAAAxrZXlBcnRTaWduSUQAAAACBQAAAAZpc3N1ZXIFAAAABWFydElkBAAAAAthcnR3b3JrTmFtZQQAAAAHJG1hdGNoMAkABB0AAAACBQAAAAR0aGlzCQEAAAAKa2V5QXJ0TmFtZQAAAAIFAAAABmlzc3VlcgUAAAAFYXJ0SWQDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABlN0cmluZwQAAAABcwUAAAAHJG1hdGNoMAUAAAABcwkAAAIAAAABAgAAABlUaGlzIGFydHdvcmsgZG9lc24ndCBleGl0BAAAAApkaXNwbGF5Q0lECQEAAAAOZ2V0U3RyaW5nQnlLZXkAAAABCQEAAAAQa2V5QXJ0RGlzcGxheUNpZAAAAAIFAAAABmlzc3VlcgUAAAAFYXJ0SWQEAAAACWV4cG9ydENJRAkBAAAADmdldFN0cmluZ0J5S2V5AAAAAQkBAAAAD2tleUFydEV4cG9ydENpZAAAAAIFAAAABmlzc3VlcgUAAAAFYXJ0SWQEAAAACmV4cG9ydEhhc2gJAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEJAQAAABBrZXlBcnRFeHBvcnRIYXNoAAAAAgUAAAAGaXNzdWVyBQAAAAVhcnRJZAQAAAAKbGljZW5jZUNJRAkBAAAADmdldFN0cmluZ0J5S2V5AAAAAQkBAAAAEGtleUFydExpY2VuY2VDaWQAAAACBQAAAAZpc3N1ZXIFAAAABWFydElkBAAAAAtsaWNlbmNlSGFzaAkBAAAADmdldFN0cmluZ0J5S2V5AAAAAQkBAAAAEWtleUFydExpY2VuY2VIYXNoAAAAAgUAAAAGaXNzdWVyBQAAAAVhcnRJZAQAAAALZGVzY3JpcHRpb24JAAEvAAAAAgkBAAAADmdldFN0cmluZ0J5S2V5AAAAAQkBAAAACmtleUFydERlc2MAAAACBQAAAAZpc3N1ZXIFAAAABWFydElkAAAAAAAAAAAyBAAAAAphbW91bnRTb2xkCQEAAAAPZ2V0SW50ZWdlckJ5S2V5AAAAAQkBAAAADGtleUFydElzc3VlZAAAAAIFAAAABmlzc3VlcgUAAAAFYXJ0SWQEAAAADGFydHdvcmtQcmljZQkBAAAAD2dldEludGVnZXJCeUtleQAAAAEJAQAAAAtrZXlBcnRQcmljZQAA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", "height": 1214236, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 8orFhj3AyJFL1AJUSEi31sHAagofQrmcPH167R74bb6V Next: 8aqnMtMq3mMoGKvXFPvtghf41gL2ZvmvPYthkxAQRNeE Diff:
OldNewDifferences
402402 let aZ = toBase58String(aE.transactionId)
403403 let aN = toBase58String(aE.caller.bytes)
404404 if (!(I(aI)))
405- then throw("Display CID should be 59 characters maximum")
405+ then throw("Wrong Display CID length")
406406 else if (!(I(aK)))
407- then throw("Export CID should be 59 characters maximum")
407+ then throw("Wrong Export CID length")
408408 else if (!(I(aM)))
409- then throw("Licence CID should be 59 characters maximum")
409+ then throw("Wrong Licence CID length")
410410 else if (!(K(aJ)))
411411 then throw("Export Hash should be 64 characters maximum")
412412 else if (!(K(aL)))
460460 then throw("Maximum 10 editions per artwork")
461461 else if (!(ba))
462462 then [StringEntry(Z(aN, ap), au), StringEntry(aa(aN, ap), av), StringEntry(ab(aN, ap), aI), StringEntry(ad(aN, ap), aK), StringEntry(ac(aN, ap), aJ), StringEntry(aj(aN, ap), aM), StringEntry(ai(aN, ap), aL), IntegerEntry(ae(aN, ap), aH), StringEntry(ak(aN, ap), aF), StringEntry(al(aN, ap), aG), StringEntry("last_invoke_id", aZ)]
463- else throw("You cannot edit artwork that have already minted NFT")
463+ else throw("You cannot edit artwork that have already minted NFT(s)")
464464 }
465465 }
466466 }
533533 let aN = toBase58String(aE.caller.bytes)
534534 let be = lastBlock.timestamp
535535 let bf = t(ad(aN, Y))
536- if ((size(bf) == 0))
536+ if ((size(split(bf, "/")[0]) != 59))
537537 then throw("You cannot sell artwork with no export file")
538538 else {
539539 let bg = t(ac(aN, Y))
540- if ((size(bg) == 0))
540+ if ((size(bg) != 64))
541541 then throw("You cannot sell artwork with no export hash")
542542 else if (if (if ((aQ != toBase58String(d)))
543543 then (aQ != toBase58String(f))
655655 let bx = (((((((((((((((((((((((((((("{\"version\": 1,
656656 \"creator\": \"" + bm) + "\",
657657 \"artID\": \"") + Y) + "\",
658- \"maxIssuable\": \"") + toString(bk)) + "\",
659658 \"signID\": \"") + B) + "\",
660- \"issue\": \"") + toString(bv)) + "/") + toString(bk)) + "\",
661- \"source_hash\": \"") + bu) + "\",
662659 \"artwork_name\": \"") + bh) + "\",
663660 \"artwork_desc\": \"") + av) + "\",
661+ \"issue\": \"") + toString(bv)) + "/") + toString(bk)) + "\",
662+ \"maxIssuable\": \"") + toString(bk)) + "\",
663+ \"source_hash\": \"") + bu) + "\",
664664 \"display_cid\": \"") + bo) + "\",
665665 \"export_cid\": \"") + bf) + "\",
666666 \"export_hash\": \"") + bg) + "\",
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 4 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = value(addressFromString("3N2s5RtaHPBenCsx2ECcoFRbYHx3noZhXW1"))
55
66 let b = value(addressFromString("3NC28hSivrmsTUXaYD1x6L362J4ZpUnoTdB"))
77
88 let c = "3N1E6tXddRoVaRfQ9dQ3vg5LaW2fsd8HKub"
99
1010 let d = base58'Gf9t8FA4H3ssoZPCwrg3KwUFCci8zuUFP9ssRsUY3s6a'
1111
1212 let e = base58'25FEqEjRkqK6yCkiT7Lz6SAYz7gUFCtxfCChnrVFD5AT'
1313
1414 let f = base58''
1515
1616 let g = "3KFXBGGLCjA5Z2DuW4Dq9fDDrHjJJP1ZEkaoajSzuKsC"
1717
1818 let h = "3MsG6jPNCrVJUtYB7XJBxS7utWsXAf4n9Vp"
1919
2020 let i = "3Mzm4VLwsN9uZwbTMzPj3XuxV6kEfAR8UDN"
2121
2222 let j = true
2323
2424 let k = "ALLOWED"
2525
2626 let l = "REGISTERED"
2727
2828 let m = "VERIFIED"
2929
3030 let n = "SUSPENDED"
3131
3232 let o = "REMOVED"
3333
3434 let p = "UNREGISTERED"
3535
3636 let q = "ON_SALE"
3737
3838 let r = "SOLD"
3939
4040 let s = "CANCELED"
4141
4242 func t (u) = {
4343 let v = getString(this, u)
4444 if ($isInstanceOf(v, "String"))
4545 then {
4646 let w = v
4747 w
4848 }
4949 else ""
5050 }
5151
5252
5353 func x (u) = {
5454 let v = getInteger(this, u)
5555 if ($isInstanceOf(v, "Int"))
5656 then {
5757 let y = v
5858 y
5959 }
6060 else 0
6161 }
6262
6363
6464 func z (u) = {
6565 let v = getBoolean(this, u)
6666 if ($isInstanceOf(v, "Boolean"))
6767 then {
6868 let y = v
6969 y
7070 }
7171 else false
7272 }
7373
7474
7575 func A (B,C,D) = {
7676 let v = getString(b, ((("data_fc_" + B) + "_") + C))
7777 if ($isInstanceOf(v, "String"))
7878 then {
7979 let w = v
8080 if (contains(w, D))
8181 then true
8282 else false
8383 }
8484 else false
8585 }
8686
8787
8888 func E (F,G) = {
8989 let H = value(assetInfo(fromBase58String(G)))
9090 if (if (if ((H.quantity != 1))
9191 then true
9292 else (H.decimals != 0))
9393 then true
9494 else (H.reissuable != false))
9595 then (F + 0)
9696 else (F + 1)
9797 }
9898
9999
100100 func I (J) = if (if ((75 > size(J)))
101101 then (60 > size(split(J, "/")[0]))
102102 else false)
103103 then (16 > size(split(J, "/")[1]))
104104 else false
105105
106106
107107 func K (L) = (65 > size(L))
108108
109109
110110 func M (N) = {
111111 let v = getString(this, ("user_status_" + N))
112112 if ($isInstanceOf(v, "String"))
113113 then {
114114 let O = v
115115 O
116116 }
117117 else throw("Something went wrong.")
118118 }
119119
120120
121121 func P (Q) = ("user_" + Q)
122122
123123
124124 func R (Q) = ("user_name_" + Q)
125125
126126
127127 func S (Q) = ("user_desc_" + Q)
128128
129129
130130 func T (Q) = ("user_social_" + Q)
131131
132132
133133 func U (Q) = ("user_thumb_" + Q)
134134
135135
136136 func V (Q) = ("user_status_" + Q)
137137
138138
139139 func W (Q) = ("user_date_" + Q)
140140
141141
142142 func X (Q,Y) = ((("art_date_" + Y) + "_") + Q)
143143
144144
145145 func Z (Q,Y) = ((("art_name_" + Y) + "_") + Q)
146146
147147
148148 func aa (Q,Y) = ((("art_desc_" + Y) + "_") + Q)
149149
150150
151151 func ab (Q,Y) = ((("art_display_cid_" + Y) + "_") + Q)
152152
153153
154154 func ac (Q,Y) = ((("art_export_hash_" + Y) + "_") + Q)
155155
156156
157157 func ad (Q,Y) = ((("art_export_cid_" + Y) + "_") + Q)
158158
159159
160160 func ae (Q,Y) = ((("art_maxmint_" + Y) + "_") + Q)
161161
162162
163163 func af (Q,Y) = ((("art_signid_" + Y) + "_") + Q)
164164
165165
166166 func ag (Q,Y) = ((("art_issued_" + Y) + "_") + Q)
167167
168168
169169 func ah (Q,Y) = ((("art_onsale_" + Y) + "_") + Q)
170170
171171
172172 func ai (Q,Y) = ((("art_licence_hash_" + Y) + "_") + Q)
173173
174174
175175 func aj (Q,Y) = ((("art_licence_cid_" + Y) + "_") + Q)
176176
177177
178178 func ak (Q,Y) = ((("art_tags_" + Y) + "_") + Q)
179179
180180
181181 func al (Q,Y) = ((("art_type_" + Y) + "_") + Q)
182182
183183
184184 func am (Q,Y) = ((("art_price_" + Y) + "_") + Q)
185185
186186
187187 func an (Q,Y) = ((("art_assetAccepted_" + Y) + "_") + Q)
188188
189189
190190 func ao (Q,ap) = ((("get_hashbytxidaddr_" + ap) + "_") + Q)
191191
192192
193193 func aq (D) = ("get_owner_by_hash_" + D)
194194
195195
196196 func ar (Q,as) = ((("get_artidbysignid_" + as) + "_") + Q)
197197
198198
199199 func at (D,Q) = ("get_txid_by_hash_owner_" + toBase58String(sha256_16Kb(toBytes((D + Q)))))
200200
201201
202202 @Callable(y)
203203 func registerUser (au,av,aw,ax) = {
204204 let Q = toString(addressFromPublicKey(y.callerPublicKey))
205205 let ay = t(V(Q))
206206 let G = toBase58String(y.transactionId)
207207 let az = lastBlock.timestamp
208208 if (if ((ay == n))
209209 then true
210210 else (ay == o))
211211 then throw("You are now allowed to register, your account have been suspended/ removed.")
212212 else if ((ay == l))
213213 then throw("You are already registered, please use update method instead.")
214214 else if (if ((ay == ""))
215215 then j
216216 else false)
217217 then throw("You are now allowed to register yet, please contact us first to get approved.")
218218 else if (if ((au == ""))
219219 then true
220220 else (av == ""))
221221 then throw("Name and description cannot be empty")
222222 else if ((size(av) > 600))
223223 then throw("600 Characters maximum for the description")
224224 else [IntegerEntry(W(Q), az), StringEntry(P(Q), ((G + "_") + toString(lastBlock.timestamp))), StringEntry(R(Q), au), StringEntry(S(Q), av), StringEntry(T(Q), ax), StringEntry(U(Q), aw), StringEntry(V(Q), l), StringEntry("last_invoke_id", G)]
225225 }
226226
227227
228228
229229 @Callable(y)
230230 func deleteEntry (aA) = {
231231 let Q = toString(addressFromPublicKey(y.callerPublicKey))
232232 if ((Q == h))
233233 then [DeleteEntry(aA)]
234234 else throw("no")
235235 }
236236
237237
238238
239239 @Callable(y)
240240 func updateUser (au,av,aw,ax) = {
241241 let Q = toString(addressFromPublicKey(y.callerPublicKey))
242242 let ay = t(V(Q))
243243 if (if ((ay == n))
244244 then true
245245 else (ay == o))
246246 then throw("You are now allowed to register, your account have been suspended/ removed.")
247247 else if (if ((ay == ""))
248248 then true
249249 else (ay == k))
250250 then throw("Please register first with registerUser")
251251 else {
252252 let G = toBase58String(y.transactionId)
253253 let az = lastBlock.timestamp
254254 if (if ((au == ""))
255255 then true
256256 else (av == ""))
257257 then throw("Name and description cannot be empty")
258258 else if ((size(av) > 600))
259259 then throw("600 Characters maximum for the description")
260260 else [StringEntry(R(Q), au), StringEntry(S(Q), av), StringEntry(T(Q), ax), StringEntry(U(Q), aw), StringEntry("last_invoke_id", G)]
261261 }
262262 }
263263
264264
265265
266266 @Callable(y)
267267 func changeUserStatus (aB,aC) = {
268268 let Q = toString(addressFromPublicKey(y.callerPublicKey))
269269 let G = toBase58String(y.transactionId)
270270 let aD = if ((aC == m))
271271 then m
272272 else if ((aC == l))
273273 then l
274274 else if ((aC == n))
275275 then n
276276 else if ((aC == o))
277277 then o
278278 else if ((aC == k))
279279 then k
280280 else throw("Unknown status")
281281 if (if ((Q == h))
282282 then true
283283 else (Q == i))
284284 then [StringEntry(V(aB), aD), StringEntry("last_invoke_id", G)]
285285 else throw(((("You are not allowed to change user status " + Q) + " / ") + h))
286286 }
287287
288288
289289
290290 @Callable(y)
291291 func creditUser (aB) = {
292292 let Q = toString(addressFromPublicKey(y.callerPublicKey))
293293 let G = toBase58String(y.transactionId)
294294 if (if ((Q == h))
295295 then true
296296 else (Q == i))
297297 then [ScriptTransfer(Address(fromBase58String(aB)), 150000000000, d)]
298298 else throw("You are not allowed to do that")
299299 }
300300
301301
302302
303303 @Callable(aE)
304304 func addArtwork (D,B,au,av,aF,aG,aH,aI,aJ,aK,aL,aM) = {
305305 let Y = toBase58String(aE.transactionId)
306306 let aN = toBase58String(aE.caller.bytes)
307307 if (!(I(aI)))
308308 then throw("Wrong Display CID length")
309309 else if (!(I(aK)))
310310 then throw("Wrong Export CID length")
311311 else if (!(I(aM)))
312312 then throw("Wrong Licence CID length")
313313 else if (!(K(D)))
314314 then throw("Source Hash should be 64 characters maximum")
315315 else if (!(K(aJ)))
316316 then throw("Export Hash should be 64 characters maximum")
317317 else if (!(K(aL)))
318318 then throw("Licence Hash should be 64 characters maximum")
319319 else if ((size(aE.payments) == 0))
320320 then throw("No payment attached")
321321 else {
322322 let aO = value(aE.payments[0])
323323 let aP = value(aO.amount)
324324 let aQ = if (if (isDefined(aO.assetId))
325325 then (aO.assetId == d)
326326 else false)
327327 then aO.assetId
328328 else throw("Only SIGN token accepted at the moment")
329329 let aR = {
330330 let v = getInteger(a, ("certification_fee_" + toBase58String(d)))
331331 if ($isInstanceOf(v, "Int"))
332332 then {
333333 let aS = v
334334 aS
335335 }
336336 else throw("Price undefined in oracle")
337337 }
338338 if ((aP != aR))
339339 then throw(("Payment amount should be " + toString(aR)))
340340 else {
341341 let aT = t(at(D, aN))
342342 if ((aT != ""))
343343 then throw("You already added this artwork on Sign Art")
344344 else {
345345 let aU = t(aq(D))
346346 if ((aU != ""))
347347 then throw("This artwork hash is already registered on Sign Art")
348348 else {
349349 let aV = A(B, aN, D)
350350 if (!(aV))
351351 then throw("Sign Certificate not found on Sign-web.app smart contract for this address.")
352352 else if ((size(aI) == 0))
353353 then throw("Display CID cannot be empty")
354354 else if ((size(au) == 0))
355355 then throw("Title cannot be empty")
356356 else if ((size(au) > 100))
357357 then throw("100 Characters maximum for the name")
358358 else if ((size(av) > 1000))
359359 then throw("1000 Characters maximum for the description")
360360 else if ((size(av) == 0))
361361 then throw("Description cannot be empty")
362362 else {
363363 let aW = split(aF, ",")
364364 if ((size(aW) > 5))
365365 then throw("Tags should be maximum 5 single word separated by space.")
366366 else {
367367 let aX = {
368368 let v = getString(this, ("user_status_" + aN))
369369 if ($isInstanceOf(v, "String"))
370370 then {
371371 let aY = v
372372 aY
373373 }
374374 else p
375375 }
376376 let az = lastBlock.timestamp
377377 if (if (isDefined(aX))
378378 then (aX == p)
379379 else false)
380380 then throw("Please register this account first with \"User infos\" tab")
381381 else if ((aX == n))
382382 then throw("Your account is suspended")
383383 else if ((aX == o))
384384 then throw("Your account have been removed")
385385 else if ((aH > 10))
386386 then throw("Maximum 10 editions per artwork")
387387 else if ((size(D) != 64))
388388 then throw("Hash should be sha256 string composed of 64 char.")
389389 else [StringEntry(aq(D), aN), StringEntry(at(D, aN), Y), IntegerEntry(X(aN, Y), az), StringEntry(Z(aN, Y), au), StringEntry(aa(aN, Y), av), StringEntry(ab(aN, Y), aI), StringEntry(ad(aN, Y), aK), StringEntry(ac(aN, Y), aJ), StringEntry(ai(aN, Y), aL), StringEntry(aj(aN, Y), aM), StringEntry(al(aN, Y), aG), StringEntry(ak(aN, Y), aF), IntegerEntry(ae(aN, Y), aH), StringEntry(af(aN, Y), B), IntegerEntry(ag(aN, Y), 0), BooleanEntry(ah(aN, Y), false), StringEntry(ar(aN, B), Y), StringEntry("last_invoke_id", Y), StringEntry(ao(aN, Y), D), ScriptTransfer(Address(fromBase58String(c)), aP, aQ)]
390390 }
391391 }
392392 }
393393 }
394394 }
395395 }
396396 }
397397
398398
399399
400400 @Callable(aE)
401401 func updateArtwork (ap,au,av,aF,aG,aH,aI,aJ,aK,aL,aM) = {
402402 let aZ = toBase58String(aE.transactionId)
403403 let aN = toBase58String(aE.caller.bytes)
404404 if (!(I(aI)))
405- then throw("Display CID should be 59 characters maximum")
405+ then throw("Wrong Display CID length")
406406 else if (!(I(aK)))
407- then throw("Export CID should be 59 characters maximum")
407+ then throw("Wrong Export CID length")
408408 else if (!(I(aM)))
409- then throw("Licence CID should be 59 characters maximum")
409+ then throw("Wrong Licence CID length")
410410 else if (!(K(aJ)))
411411 then throw("Export Hash should be 64 characters maximum")
412412 else if (!(K(aL)))
413413 then throw("Licence Hash should be 64 characters maximum")
414414 else {
415415 let aT = t(Z(aN, ap))
416416 if ((aT == ""))
417417 then throw("This entry doesn't exist or you are not the owner")
418418 else if ((size(au) == 0))
419419 then throw("Title cannot be empty")
420420 else if ((size(au) > 100))
421421 then throw("100 Characters maximum for the name")
422422 else if ((size(av) > 1000))
423423 then throw("1000 Characters maximum for the description")
424424 else if ((size(av) == 0))
425425 then throw("Description cannot be empty")
426426 else {
427427 let ba = {
428428 let v = getInteger(this, ag(aN, ap))
429429 if ($isInstanceOf(v, "Int"))
430430 then {
431431 let O = v
432432 if ((O == 0))
433433 then false
434434 else true
435435 }
436436 else false
437437 }
438438 let aW = split(aF, ",")
439439 if ((size(aW) > 5))
440440 then throw("Tags should be maximum 5 single word separated by space.")
441441 else {
442442 let aX = {
443443 let v = getString(this, ("user_status_" + aN))
444444 if ($isInstanceOf(v, "String"))
445445 then {
446446 let aY = v
447447 aY
448448 }
449449 else p
450450 }
451451 if (if (isDefined(aX))
452452 then (aX == p)
453453 else false)
454454 then throw("Please register this account first with \"User infos\" tab")
455455 else if ((aX == n))
456456 then throw("Your account is suspended")
457457 else if ((aX == o))
458458 then throw("Your account have been removed")
459459 else if ((aH > 10))
460460 then throw("Maximum 10 editions per artwork")
461461 else if (!(ba))
462462 then [StringEntry(Z(aN, ap), au), StringEntry(aa(aN, ap), av), StringEntry(ab(aN, ap), aI), StringEntry(ad(aN, ap), aK), StringEntry(ac(aN, ap), aJ), StringEntry(aj(aN, ap), aM), StringEntry(ai(aN, ap), aL), IntegerEntry(ae(aN, ap), aH), StringEntry(ak(aN, ap), aF), StringEntry(al(aN, ap), aG), StringEntry("last_invoke_id", aZ)]
463- else throw("You cannot edit artwork that have already minted NFT")
463+ else throw("You cannot edit artwork that have already minted NFT(s)")
464464 }
465465 }
466466 }
467467 }
468468
469469
470470
471471 @Callable(y)
472472 func deleteArtwork (Y,aB) = {
473473 let aN = toString(addressFromPublicKey(y.callerPublicKey))
474474 let G = toBase58String(y.transactionId)
475475 let bb = if (if ((aN == h))
476476 then true
477477 else (aN == i))
478478 then aB
479479 else aN
480480 let aT = {
481481 let v = getString(this, Z(bb, Y))
482482 if ($isInstanceOf(v, "String"))
483483 then {
484484 let aY = v
485485 aY
486486 }
487487 else throw("No artwork matching this request or you are not allowed")
488488 }
489489 let ba = {
490490 let v = getInteger(this, ag(bb, Y))
491491 if ($isInstanceOf(v, "Int"))
492492 then {
493493 let O = v
494494 if ((O == 0))
495495 then false
496496 else true
497497 }
498498 else false
499499 }
500500 let D = {
501501 let v = getString(this, ao(bb, Y))
502502 if ($isInstanceOf(v, "String"))
503503 then {
504504 let aY = v
505505 aY
506506 }
507507 else throw("No artwork hash matching this request")
508508 }
509509 let B = {
510510 let v = getString(this, af(bb, Y))
511511 if ($isInstanceOf(v, "String"))
512512 then {
513513 let aY = v
514514 aY
515515 }
516516 else throw("No SIGN ID matching this request")
517517 }
518518 let bc = [DeleteEntry(X(bb, Y)), DeleteEntry(Z(bb, Y)), DeleteEntry(aa(bb, Y)), DeleteEntry(ab(bb, Y)), DeleteEntry(ad(bb, Y)), DeleteEntry(ac(bb, Y)), DeleteEntry(ai(bb, Y)), DeleteEntry(aj(bb, Y)), DeleteEntry(al(bb, Y)), DeleteEntry(ak(bb, Y)), DeleteEntry(ae(bb, Y)), DeleteEntry(af(bb, Y)), DeleteEntry(ag(bb, Y)), DeleteEntry(ah(bb, Y)), StringEntry("last_invoke_id", G), DeleteEntry(aq(D)), DeleteEntry(ar(bb, B)), DeleteEntry(at(D, bb))]
519519 if (if ((aN == h))
520520 then true
521521 else (aN == i))
522522 then bc
523523 else if (!(ba))
524524 then bc
525525 else throw("This artwork already have minted NFT, you cannot delete it")
526526 }
527527
528528
529529
530530 @Callable(aE)
531531 func sellArtwork (Y,aS,bd,aQ) = {
532532 let G = toBase58String(aE.transactionId)
533533 let aN = toBase58String(aE.caller.bytes)
534534 let be = lastBlock.timestamp
535535 let bf = t(ad(aN, Y))
536- if ((size(bf) == 0))
536+ if ((size(split(bf, "/")[0]) != 59))
537537 then throw("You cannot sell artwork with no export file")
538538 else {
539539 let bg = t(ac(aN, Y))
540- if ((size(bg) == 0))
540+ if ((size(bg) != 64))
541541 then throw("You cannot sell artwork with no export hash")
542542 else if (if (if ((aQ != toBase58String(d)))
543543 then (aQ != toBase58String(f))
544544 else false)
545545 then (aQ != toBase58String(e))
546546 else false)
547547 then throw("Only SIGN, USDN or WAVES currency accepted at the moment")
548548 else {
549549 let bh = {
550550 let v = getString(this, Z(aN, Y))
551551 if ($isInstanceOf(v, "String"))
552552 then {
553553 let aY = v
554554 aY
555555 }
556556 else throw("This artwork doesn't exit or you are not the owner")
557557 }
558558 let aX = {
559559 let v = getString(this, V(aN))
560560 if ($isInstanceOf(v, "String"))
561561 then {
562562 let aY = v
563563 aY
564564 }
565565 else throw("Please register this account first")
566566 }
567567 let bi = {
568568 let v = getInteger(this, ag(aN, Y))
569569 if ($isInstanceOf(v, "Int"))
570570 then {
571571 let bj = v
572572 bj
573573 }
574574 else 0
575575 }
576576 let bk = {
577577 let v = getInteger(this, ae(aN, Y))
578578 if ($isInstanceOf(v, "Int"))
579579 then {
580580 let bj = v
581581 bj
582582 }
583583 else 0
584584 }
585585 if (if ((bi != 0))
586586 then (bi == bk)
587587 else false)
588588 then throw("You reached the max edition allowed to sell for this edition.")
589589 else if (if ((bi > 0))
590590 then (bk != bd)
591591 else false)
592592 then throw("You cannot change the maximum issuable anymore")
593593 else if ((aX == n))
594594 then throw("Your account is suspended")
595595 else if ((aX == o))
596596 then throw("Your account have been deleted")
597597 else {
598598 let bl = if ((aS > 0))
599599 then true
600600 else false
601601 [BooleanEntry(ah(aN, Y), bl), IntegerEntry(am(aN, Y), aS), IntegerEntry(ae(aN, Y), bd), StringEntry(an(aN, Y), aQ), StringEntry("last_invoke_id", G)]
602602 }
603603 }
604604 }
605605 }
606606
607607
608608
609609 @Callable(aE)
610610 func buyArtwork (Y,bm) = {
611611 let G = toBase58String(aE.transactionId)
612612 let aN = toBase58String(aE.caller.bytes)
613613 let bn = x("total_nft_issued")
614614 let B = t(af(bm, Y))
615615 let bh = {
616616 let v = getString(this, Z(bm, Y))
617617 if ($isInstanceOf(v, "String"))
618618 then {
619619 let aY = v
620620 aY
621621 }
622622 else throw("This artwork doesn't exit")
623623 }
624624 let bo = t(ab(bm, Y))
625625 let bf = t(ad(bm, Y))
626626 let bg = t(ac(bm, Y))
627627 let bp = t(aj(bm, Y))
628628 let bq = t(ai(bm, Y))
629629 let av = take(t(aa(bm, Y)), 50)
630630 let bi = x(ag(bm, Y))
631631 let br = x(am(bm, Y))
632632 let bs = z(ah(bm, Y))
633633 let bt = t(an(bm, Y))
634634 let bu = t(ao(bm, Y))
635635 if ((br == 0))
636636 then throw("This artwork is not for sell")
637637 else if (!(bs))
638638 then throw("This artwork is not for sale")
639639 else {
640640 let bk = x(ae(bm, Y))
641641 let aO = value(aE.payments[0])
642642 let aP = value(aO.amount)
643643 let aQ = if (if (isDefined(aO.assetId))
644644 then (aO.assetId == fromBase58String(bt))
645645 else false)
646646 then aO.assetId
647647 else throw((("Only " + bt) + " token id accepted at the moment"))
648648 if ((bi == bk))
649649 then throw("Cannot buy this artwork anymore, maximum editions reached")
650650 else if ((br != aP))
651651 then throw(((("Payment don't match seller price: " + toString(br)) + " vs ") + toString(aP)))
652652 else {
653653 let bv = (bi + 1)
654654 let bw = lastBlock.timestamp
655655 let bx = (((((((((((((((((((((((((((("{\"version\": 1,
656656 \"creator\": \"" + bm) + "\",
657657 \"artID\": \"") + Y) + "\",
658- \"maxIssuable\": \"") + toString(bk)) + "\",
659658 \"signID\": \"") + B) + "\",
660- \"issue\": \"") + toString(bv)) + "/") + toString(bk)) + "\",
661- \"source_hash\": \"") + bu) + "\",
662659 \"artwork_name\": \"") + bh) + "\",
663660 \"artwork_desc\": \"") + av) + "\",
661+ \"issue\": \"") + toString(bv)) + "/") + toString(bk)) + "\",
662+ \"maxIssuable\": \"") + toString(bk)) + "\",
663+ \"source_hash\": \"") + bu) + "\",
664664 \"display_cid\": \"") + bo) + "\",
665665 \"export_cid\": \"") + bf) + "\",
666666 \"export_hash\": \"") + bg) + "\",
667667 \"licence_cid\": \"") + bp) + "\",
668668 \"licence_hash\": \"") + bq) + "\"}")
669669 let by = Issue(("SA_" + toString((bn + 1))), bx, 1, 0, false)
670670 let bz = calculateAssetId(by)
671671 let bl = if ((bv == bk))
672672 then false
673673 else true
674674 [IntegerEntry(ag(bm, Y), bv), StringEntry(((((((("art_sold_" + toString(bv)) + "_of_") + toString(bk)) + "_") + Y) + "_") + bm), ((((((aN + "_") + toString(bw)) + "_") + G) + "_") + toString(br))), IntegerEntry("total_nft_issued", (bn + 1)), BooleanEntry(ah(bm, Y), bl), StringEntry("last_invoke_id", G), by, ScriptTransfer(Address(fromBase58String(bm)), aP, aQ), ScriptTransfer(aE.caller, 1, bz)]
675675 }
676676 }
677677 }
678678
679679
680680
681681 @Callable(y)
682682 func deleteUser (aB) = {
683683 let Q = toString(addressFromPublicKey(y.callerPublicKey))
684684 let G = toBase58String(y.transactionId)
685685 if (if ((Q == h))
686686 then true
687687 else (Q == i))
688688 then [DeleteEntry(W(aB)), DeleteEntry(P(aB)), DeleteEntry(R(aB)), DeleteEntry(S(aB)), DeleteEntry(T(aB)), DeleteEntry(U(aB)), StringEntry(V(aB), o), StringEntry("last_invoke_id", G)]
689689 else throw("You are not allowed to do that")
690690 }
691691
692692

github/deemru/w8io/026f985 
79.49 ms