tx · 5U7jz6Tq9fkw7kLCXcnS9LEmU9dE96poqgL3CN85WAPG

3N2Tdcx5fzxJAKP5hMp9W35Cp1EFzfiJ1zG:  -0.01400000 Waves

2020.10.14 08:02 [1219778] smart account 3N2Tdcx5fzxJAKP5hMp9W35Cp1EFzfiJ1zG > SELF 0.00000000 Waves

{ "type": 13, "id": "5U7jz6Tq9fkw7kLCXcnS9LEmU9dE96poqgL3CN85WAPG", "fee": 1400000, "feeAssetId": null, "timestamp": 1602651815672, "version": 2, "chainId": 84, "sender": "3N2Tdcx5fzxJAKP5hMp9W35Cp1EFzfiJ1zG", "senderPublicKey": "9SULUbW7L2jV2nv8v48Kdzox4cZ8jEfg778yJHJpgVwM", "proofs": [ "5MnDY3ReTH2zQzssbzX9dfCpSmnSqbdHodRFuzoMUkfFEdPfgWbmHXz8JEsA5K8jmC1GKjZjUnQNSuS74arXdJSP" ], "script": "base64:AAIEAAAAAAAAAFoIAhIGCgQICAgIEgMKAQgSBgoECAgICBIECgIICBIDCgEIEg4KDAgICAgICAEICAgICBINCgsICAgICAEICAgICBIECgIICBIGCgQIAQEIEgQKAggIEgMKAQgAAAA2AAAAAA9zdG9yYWdlVmVyaWZpZXIJAQAAAAV2YWx1ZQAAAAEJAAQmAAAAAQIAAAAjM04yczVSdGFIUEJlbkNzeDJFQ2NvRlJiWUh4M25vWmhYVzEAAAAADHNpZ25WZXJpZmllcgkBAAAABXZhbHVlAAAAAQkABCYAAAABAgAAACMzTkMyOGhTaXZybXNUVVhhWUQxeDZMMzYySjRacFVub1RkQgAAAAALZmVlUmVjZWl2ZXICAAAAIzNOMUU2dFhkZFJvVmFSZlE5ZFEzdmc1TGFXMmZzZDhIS3ViAAAAAAtzaWduQXNzZXRJZAEAAAAg6KVqvMp3QvJwYTI1Sk9Fg7m5HuWZZxfDcerZC6EEresAAAAAC3VzZG5Bc3NldElkAQAAACAP8hwSrOTEPJrsRhqrJaiw7LoHK0bMbYhy8LXikkkBtAAAAAAMd2F2ZXNBc3NldElkAQAAAAAAAAAABnVzZG5JRAIAAAAsM0tGWEJHR0xDakE1WjJEdVc0RHE5ZkREckhqSkpQMVpFa2FvYWpTenVLc0MAAAAABWFkbWluAgAAACMzTXNHNmpQTkNyVkpVdFlCN1hKQnhTN3V0V3NYQWY0bjlWcAAAAAAGYWRtaW4yAgAAACMzTXptNFZMd3NOOXVad2JUTXpQajNYdXhWNmtFZkFSOFVETgAAAAAPV0hJVEVMSVNURURPTkxZBgAAAAALdXNlckFsbG93ZWQCAAAAB0FMTE9XRUQAAAAADnVzZXJSZWdpc3RlcmVkAgAAAApSRUdJU1RFUkVEAAAAAAx1c2VyVmVyaWZpZWQCAAAACFZFUklGSUVEAAAAAA11c2VyU3VzcGVuZGVkAgAAAAlTVVNQRU5ERUQAAAAAC3VzZXJSZW1vdmVkAgAAAAdSRU1PVkVEAAAAABB1c2VyVW5yZWdpc3RlcmVkAgAAAAxVTlJFR0lTVEVSRUQAAAAABm9uU2FsZQIAAAAHT05fU0FMRQAAAAAEc29sZAIAAAAEU09MRAAAAAAIY2FuY2VsZWQCAAAACENBTkNFTEVEAQAAAA5nZXRT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CmFydF9wcmljZV8FAAAABWFydElkAgAAAAFfBQAAAApjYWxsZXJBZGRyAQAAABVrZXlBcnRBc3NldElkQWNjZXB0ZWQAAAACAAAACmNhbGxlckFkZHIAAAAFYXJ0SWQJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAEmFydF9hc3NldEFjY2VwdGVkXwUAAAAFYXJ0SWQCAAAAAV8FAAAACmNhbGxlckFkZHIBAAAAFGtleUFydEhhc2hCeVR4aWRBZGRyAAAAAgAAAApjYWxsZXJBZGRyAAAABHR4aWQJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAE2dldF9oYXNoYnl0eGlkYWRkcl8FAAAABHR4aWQCAAAAAV8FAAAACmNhbGxlckFkZHIBAAAAEWtleUFydE93bmVyQnlIYXNoAAAAAQAAAApzaGEyNTZIYXNoCQABLAAAAAICAAAAEmdldF9vd25lcl9ieV9oYXNoXwUAAAAKc2hhMjU2SGFzaAEAAAATa2V5QXJ0QXJ0aWRCeVNpZ25pZAAAAAIAAAAKY2FsbGVyQWRkcgAAAAZzaWduSWQJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAEmdldF9hcnRpZGJ5c2lnbmlkXwUAAAAGc2lnbklkAgAAAAFfBQAAAApjYWxsZXJBZGRyAQAAABVrZXlBcnRUeGlkQnlIYXNoT3duZXIAAAACAAAACnNoYTI1Nkhhc2gAAAAKY2FsbGVyQWRkcgkAASwAAAACAgAAABdnZXRfdHhpZF9ieV9oYXNoX293bmVyXwkAAlgAAAABCQALVAAAAAEJAAGbAAAAAQkAASwAAAACBQAAAApzaGEyNTZIYXNoBQAAAApjYWxsZXJBZGRyAAAACwAAAAFpAQAAAAxyZWdpc3RlclVzZXIAAAAEAAAABG5hbWUAAAALZGVzY3JpcHRpb24AAAAFdGh1bWIAAAAGc29jaWFsBAAAAApjYWxsZXJBZGRyCQAEJQAAAAEJAQAAABRhZGRyZXNzRnJvbVB1YmxpY0tleQAAAAEIBQAAAAFpAAAAD2NhbGxlclB1YmxpY0tleQQAAAAPdXNlckNhblJlZ2lzdGVyCQEAAAAOZ2V0U3RyaW5nQnlLZXkAAAABCQEAAAANa2V5VXNlclN0YXR1cwAAAAEFAAAACmNhbGxlckFkZHIEAAAAAmlkCQACWAAAAAEIBQAAAAFpAAAADXRyYW5zYWN0aW9uSWQEAAAACXRpbWVzdGFtcAgFAAAACWxhc3RCbG9jawAAAAl0aW1lc3RhbXADAwkAAAAAAAACBQAAAA91c2VyQ2FuUmVnaXN0ZXIFAAAADXVzZXJTdXNwZW5kZWQGCQAAAAAAAAIFAAAAD3VzZXJDYW5SZWdpc3RlcgUAAAALdXNlclJlbW92ZWQJAAACAAAAAQIAAABLWW91IGFyZSBub3cgYWxsb3dlZCB0byByZWdpc3RlciwgeW91ciBhY2NvdW50IGhhdmUgYmVlbiBzdXNwZW5kZWQvIHJlbW92ZWQuAwkAAAAAAAACBQAAAA91c2VyQ2FuUmVnaXN0ZXIFAAAADnVzZXJSZWdpc3RlcmVkCQAAAgAAAAECAAAAPVlvdSBhcmUgYWxyZWFkeSByZWdpc3RlcmVkLCBwbGVhc2UgdXNlIHVwZGF0ZSBtZXRob2QgaW5zdGVhZC4DAwkAAAAAAAACBQAAAA91c2VyQ2FuUmVnaXN0ZXICAAAAAAUAAAAPV0hJVEVMSVNURURPTkxZBwkAAAIAAAABAgAAAE1Zb3UgYXJlIG5vdyBhbGxvd2VkIHRvIHJlZ2lzdGVyIHlldCwgcGxlYXNlIGNvbnRhY3QgdXMgZmlyc3QgdG8gZ2V0IGFwcHJvdmVkLgMDCQAAAAAAAAIFAAAABG5hbWUCAAAAAAYJAAAAAAAAAgUAAAALZGVzY3JpcHRpb24CAAAAAAkAAAIAAAABAgAAACROYW1lIGFuZCBkZXNjcmlwdGlvbiBjYW5ub3QgYmUgZW1wdHkDCQAAZgAAAAIJAAExAAAAAQUAAAALZGVzY3JpcHRpb24AAAAAAAAAAlgJAAACAAAAAQIAAAAqNjAwIENoYXJhY3RlcnMgbWF4aW11bSBmb3IgdGhlIGRlc2NyaXB0aW9uCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAALa2V5VXNlckRhdGUAAAABBQAAAApjYWxsZXJBZGRyBQAAAAl0aW1lc3RhbXAJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAC2tleVVzZXJBZGRyAAAAAQUAAAAKY2FsbGVyQWRkcgkAASwAAAACCQABLAAAAAIFAAAAAmlkAgAAAAFfCQABpAAAAAEIBQAAAAlsYXN0QmxvY2sAAAAJdGltZXN0YW1wCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAAtrZXlVc2VyTmFtZQAAAAEFAAAACmNhbGxlckFkZHIFAAAABG5hbWUJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAC2tleVVzZXJEZXNjAAAAAQUAAAAKY2FsbGVyQWRkcgUAAAALZGVzY3JpcHRpb24JAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAADWtleVVzZXJTb2NpYWwAAAABBQAAAApjYWxsZXJBZGRyBQAAAAZzb2NpYWwJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAADGtleVVzZXJUaHVtYgAAAAEFAAAACmNhbGxlckFkZHIFAAAABXRodW1iCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAA1rZXlVc2VyU3RhdHVzAAAAAQUAAAAKY2FsbGVyQWRkcgUAAAAOdXNlclJlZ2lzdGVyZWQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgIAAAAObGFzdF9pbnZva2VfaWQFAAAAAmlkBQAAAANuaWwAAAABaQEAAAALZGVsZXRlRW50cnkAAAABAAAABWVudHJ5BAAAAApjYWxsZXJBZGRyCQAEJQAAAAEJAQAAABRhZGRyZXNzRnJvbVB1YmxpY0tleQAAAAEIBQAAAAFpAAAAD2NhbGxlclB1YmxpY0tleQMJAAAAAAAAAgUAAAAKY2FsbGVyQWRkcgUAAAAFYWRtaW4JAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQUAAAAFZW50cnkFAAAAA25pbAkAAAIAAAABAgAAAAJubwAAAAFpAQAAAAp1cGRhdGVVc2VyAAAABAAAAARuYW1lAAAAC2Rlc2NyaXB0aW9uAAAABXRodW1iAAAABnNvY2lhbAQAAAAKY2FsbGVyQWRkcgkABCUAAAABCQEAAAAUYWRkcmVzc0Zyb21QdWJsaWNLZXkAAAABCAUAAAABaQAAAA9jYWxsZXJQdWJsaWNLZXkEAAAAD3VzZXJDYW5SZWdpc3RlcgkBAAAADmdldFN0cmluZ0J5S2V5AAAAAQkBAAAADWtleVVzZXJTdGF0dXMAAAABBQAAAApjYWxsZXJBZGRyAwMJAAAAAAAAAgUAAAAPdXNlckNhblJlZ2lzdGVyBQAAAA11c2VyU3VzcGVuZGVkBgkAAAAAAAACBQAAAA91c2VyQ2FuUmVnaXN0ZXIFAAAAC3VzZXJSZW1vdmVkCQAAAgAAAAECAAAAS1lvdSBhcmUgbm93IGFsbG93ZWQgdG8gcmVnaXN0ZXIsIHlvdXIgYWNjb3VudCBoYXZlIGJlZW4gc3VzcGVuZGVkLyByZW1vdmVkLgMDCQAAAAAAAAIFAAAAD3VzZXJDYW5SZWdpc3RlcgIAAAAABgkAAAAAAAACBQAAAA91c2VyQ2FuUmVnaXN0ZXIFAAAAC3VzZXJBbGxvd2VkCQAAAgAAAAECAAAAJ1BsZWFzZSByZWdpc3RlciBmaXJzdCB3aXRoIHJlZ2lzdGVyVXNlcgQAAAACaWQJAAJYAAAAAQgFAAAAAWkAAAANdHJhbnNhY3Rpb25JZAQAAAAJdGltZXN0YW1wCAUAAAAJbGFzdEJsb2NrAAAACXRpbWVzdGFtcAMDCQAAAAAAAAIFAAAABG5hbWUCAAAAAAYJAAAAAAAAAgUAAAALZGVzY3JpcHRpb24CAAAAAAkAAAIAAAABAgAAACROYW1lIGFuZCBkZXNjcmlwdGlvbiBjYW5ub3QgYmUgZW1wdHkDCQAAZgAAAAIJAAExAAAAAQUAAAALZGVzY3JpcHRpb24AAAAAAAAAAlgJAAACAAAAAQIAAAAqNjAwIENoYXJhY3RlcnMgbWF4aW11bSBmb3IgdGhlIGRlc2NyaXB0aW9uCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAAtrZXlVc2VyTmFtZQAAAAEFAAAACmNhbGxlckFkZHIFAAAABG5hbWUJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAC2tleVVzZXJEZXNjAAAAAQUAAAAKY2FsbGVyQWRkcgUAAAALZGVzY3JpcHRpb24JAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAADWtleVVzZXJTb2NpYWwAAAABBQAAAApjYWxsZXJBZGRyBQAAAAZzb2NpYWwJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAADGtleVVzZXJUaHVtYgAAAAEFAAAACmNhbGxlckFkZHIFAAAABXRodW1iCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAICAAAADmxhc3RfaW52b2tlX2lkBQAAAAJpZAUAAAADbmlsAAAAAWkBAAAAEGNoYW5nZVVzZXJTdGF0dXMAAAACAAAAB2FkZHJlc3MAAAAGc3RhdHVzBAAAAApjYWxsZXJBZGRyCQAEJQAAAAEJAQAAABRhZGRyZXNzRnJvbVB1YmxpY0tleQAAAAEIBQAAAAFpAAAAD2NhbGxlclB1YmxpY0tleQQAAAACaWQJAAJYAAAAAQgFAAAAAWkAAAANdHJhbnNhY3Rpb25JZAQAAAANY3VycmVudFN0YXR1cwkBAAAADmdldFN0cmluZ0J5S2V5AAAAAQkBAAAADWtleVVzZXJTdGF0dXMAAAABBQAAAAdhZGRyZXNzBAAAAAtzdGF0dXNUb1NldAMJAAAAAAAAAgUAAAAGc3RhdHVzBQAAAAx1c2VyVmVyaWZpZWQFAAAADHVzZXJWZXJpZmllZAMJAAAAAAAAAgUAAAAGc3RhdHVzBQAAAA51c2VyUmVnaXN0ZXJlZAUAAAAOdXNlclJlZ2lzdGVyZWQDCQAAAAAAAAIFAAAABnN0YXR1cwUAAAANdXNlclN1c3BlbmRlZAUAAAANdXNlclN1c3BlbmRlZAMJAAAAAAAAAgUAAAAGc3RhdHVzBQAAAAt1c2VyUmVtb3ZlZAUAAAALdXNlclJlbW92ZWQDCQAAAAAAAAIFAAAABnN0YXR1cwUAAAALdXNlckFsbG93ZWQFAAAAC3VzZXJBbGxvd2VkCQAAAgAAAAECAAAADlVua25vd24gc3RhdHVzAwMJAAAAAAAAAgUAAAANY3VycmVudFN0YXR1cwUAAAALdXNlckFsbG93ZWQJAAAAAAAAAgUAAAAGc3RhdHVzBQAAAAt1c2VyQWxsb3dlZAcJAAACAAAAAQIAAAAcVGhpcyB1c2VyIGlzIGFscmVhZHkgYWxsb3dlZAMDCQAAAAAAAAIFAAAADWN1cnJlbnRTdGF0dXMFAAAADnVzZXJSZWdpc3RlcmVkCQAAAAAAAAIFAAAABnN0YXR1cwUAAAALdXNlckFsbG93ZWQHCQAAAgAAAAECAAAAK1RoaXMgdXNlciBpcyBhbHJlYWR5IGFsbG93ZWQgYW5kIHJlZ2lzdGVyZWQDAwkAAAAAAAACBQAAAA1jdXJyZW50U3RhdHVzBQAAAAx1c2VyVmVyaWZpZWQJAAAAAAAAAgUAAAAGc3RhdHVzBQAAAAt1c2VyQWxsb3dlZAcJAAACAAAAAQIAAAApVGhpcyB1c2VyIGlzIGFscmVhZHkgYWxsb3dlZCBhbmQgdmVyaWZpZWQDAwkAAAAAAAACBQAAAApjYWxsZXJBZGRyBQAAAAVhZG1pbgYJAAAAAAAAAgUAAAAKY2FsbGVyQWRkcgUAAAAGYWRtaW4yCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAA1rZXlVc2VyU3RhdHVzAAAAAQUAAAAHYWRkcmVzcwUAAAALc3RhdHVzVG9TZXQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgIAAAAObGFzdF9pbnZva2VfaWQFAAAAAmlkBQAAAANuaWwJAAACAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAqWW91IGFyZSBub3QgYWxsb3dlZCB0byBjaGFuZ2UgdXNlciBzdGF0dXMgBQAAAApjYWxsZXJBZGRyAgAAAAMgLyAFAAAABWFkbWluAAAAAWkBAAAACmNyZWRpdFVzZXIAAAABAAAAB2FkZHJlc3MEAAAACmNhbGxlckFkZHIJAAQlAAAAAQkBAAAAFGFkZHJlc3NGcm9tUHVibGljS2V5AAAAAQgFAAAAAWkAAAAPY2FsbGVyUHVibGljS2V5BAAAAAJpZAkAAlgAAAABCAUAAAABaQAAAA10cmFuc2FjdGlvbklkAwMJAAAAAAAAAgUAAAAKY2FsbGVyQWRkcgUAAAAFYWRtaW4GCQAAAAAAAAIFAAAACmNhbGxlckFkZHIFAAAABmFkbWluMgkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQUAAAAHYWRkcmVzcwAAAAAi7LJcAAUAAAALc2lnbkFzc2V0SWQFAAAAA25pbAkAAAIAAAABAgAAAB5Zb3UgYXJlIG5vdCBhbGxvd2VkIHRvIGRvIHRoYXQAAAAGaW52b2tlAQAAAAphZGRBcnR3b3JrAAAADAAAAApzaGEyNTZIYXNoAAAABnNpZ25JRAAAAARuYW1lAAAAC2Rlc2NyaXB0aW9uAAAABHRhZ3MAAAAEdHlwZQAAAAdtYXhtaW50AAAACmNpZERpc3BsYXkAAAAMc2hhMjU2RXhwb3J0AAAACWNpZEV4cG9ydAAAAA1zaGEyNTZMaWNlbmNlAAAACmNpZExpY2VuY2UEAAAABWFydElkCQACWAAAAAEIBQAAAAZpbnZva2UAAAANdHJhbnNhY3Rpb25JZAQAAAANY2FsbGVyQWRkcmVzcwkAAlgAAAABCAgFAAAABmludm9rZQAAAAZjYWxsZXIAAAAFYnl0ZXMDCQEAAAABIQAAAAEJAQAAAAt2YWxpZGF0ZUNJRAAAAAEFAAAACmNpZERpc3BsYXkJAAACAAAAAQIAAAAYV3JvbmcgRGlzcGxheSBDSUQgbGVuZ3RoAwkBAAAAASEAAAABCQEAAAALdmFsaWRhdGVDSUQAAAABBQAAAAljaWRFeHBvcnQJAAACAAAAAQIAAAAXV3JvbmcgRXhwb3J0IENJRCBsZW5ndGgDCQEAAAABIQAAAAEJAQAAAAt2YWxpZGF0ZUNJRAAAAAEFAAAACmNpZExpY2VuY2UJAAACAAAAAQIAAAAYV3JvbmcgTGljZW5jZSBDSUQgbGVuZ3RoAwkBAAAAASEAAAABCQEAAAAMdmFsaWRhdGVIYXNoAAAAAQUAAAAKc2hhMjU2SGFzaAkAAAIAAAABAgAAACtTb3VyY2UgSGFzaCBzaG91bGQgYmUgNjQgY2hhcmFjdGVycyBtYXhpbXVtAwkBAAAAASEAAAABCQEAAAAMdmFsaWRhdGVIYXNoAAAAAQUAAAAMc2hhMjU2RXhwb3J0CQAAAgAAAAECAAAAK0V4cG9ydCBIYXNoIHNob3VsZCBiZSA2NCBjaGFyYWN0ZXJzIG1heGltdW0DCQEAAAABIQAAAAEJAQAAAAx2YWxpZGF0ZUhhc2gAAAABBQAAAA1zaGEyNTZMaWNlbmNlCQAAAgAAAAECAAAALExpY2VuY2UgSGFzaCBzaG91bGQgYmUgNjQgY2hhcmFjdGVycyBtYXhpbXVtAwkAAAAAAAACCQABkAAAAAEIBQAAAAZpbnZva2UAAAAIcGF5bWVudHMAAAAAAAAAAAAJAAACAAAAAQIAAAATTm8gcGF5bWVudCBhdHRhY2hlZAQAAAAHcGF5bWVudAkBAAAABXZhbHVlAAAAAQkAAZEAAAACCAUAAAAGaW52b2tlAAAACHBheW1lbnRzAAAAAAAAAAAABAAAAAZhbW91bnQJAQAAAAV2YWx1ZQAAAAEIBQAAAAdwYXltZW50AAAABmFtb3VudAQAAAAHYXNzZXRJZAMDCQEAAAAJaXNEZWZpbmVkAAAAAQgFAAAAB3BheW1lbnQAAAAHYXNzZXRJZAkAAAAAAAACCAUAAAAHcGF5bWVudAAAAAdhc3NldElkBQAAAAtzaWduQXNzZXRJZAcIBQAAAAdwYXltZW50AAAAB2Fzc2V0SWQJAAACAAAAAQIAAAAmT25seSBTSUdOIHRva2VuIGFjY2VwdGVkIGF0IHRoZSBtb21lbnQEAAAAGWN1cnJlbnRDZXJ0aWZpY2F0aW9uUHJpY2UEAAAAByRtYXRjaDAJAAQaAAAAAgUAAAAPc3RvcmFnZVZlcmlmaWVyCQABLAAAAAICAAAAEmNlcnRpZmljYXRpb25fZmVlXwkAAlgAAAABBQAAAAtzaWduQXNzZXRJZAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAVwcmljZQUAAAAHJG1hdGNoMAUAAAAFcHJpY2UJAAACAAAAAQIAAAAZUHJpY2UgdW5kZWZpbmVkIGluIG9yYWNsZQMJAQAAAAIhPQAAAAIFAAAABmFtb3VudAUAAAAZY3VycmVudENlcnRpZmljYXRpb25QcmljZQkAAAIAAAABCQABLAAAAAICAAAAGVBheW1lbnQgYW1vdW50IHNob3VsZCBiZSAJAAGkAAAAAQUAAAAZY3VycmVudENlcnRpZmljYXRpb25QcmljZQQAAAAKZW50cnlFeGlzdAkBAAAADmdldFN0cmluZ0J5S2V5AAAAAQkBAAAAFWtleUFydFR4aWRCeUhhc2hPd25lcgAAAAIFAAAACnNoYTI1Nkhhc2gFAAAADWNhbGxlckFkZHJlc3MDCQEAAAACIT0AAAACBQAAAAplbnRyeUV4aXN0AgAAAAAJAAACAAAAAQIAAAAqWW91IGFscmVhZHkgYWRkZWQgdGhpcyBhcnR3b3JrIG9uIFNpZ24gQXJ0BAAAAAloYXNoRXhpc3QJAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEJAQAAABFrZXlBcnRPd25lckJ5SGFzaAAAAAEFAAAACnNoYTI1Nkhhc2gDCQEAAAACIT0AAAACBQAAAAloYXNoRXhpc3QCAAAAAAkAAAIAAAABAgAAADNUaGlzIGFydHdvcmsgaGFzaCBpcyBhbHJlYWR5IHJlZ2lzdGVyZWQgb24gU2lnbiBBcnQEAAAAD2lzU2lnbkNlcnRpZmllZAkBAAAAFGNoZWNrU2lnbkNlcnRpZmljYXRlAAAAAwUAAAAGc2lnbklEBQAAAA1jYWxsZXJBZGRyZXNzBQAAAApzaGEyNTZIYXNoAwkBAAAAASEAAAABBQAAAA9pc1NpZ25DZXJ0aWZpZWQJAAACAAAAAQIAAABLU2lnbiBDZXJ0aWZpY2F0ZSBub3QgZm91bmQgb24gU2lnbi13ZWIuYXBwIHNtYXJ0IGNvbnRyYWN0IGZvciB0aGlzIGFkZHJlc3MuAwkAAAAAAAACCQABMQAAAAEFAAAACmNpZERpc3BsYXkAAAAAAAAAAAAJAAACAAAAAQIAAAAbRGlzcGxheSBDSUQgY2Fubm90IGJlIGVtcHR5AwkAAAAAAAACCQABMQAAAAEFAAAABG5hbWUAAAAAAAAAAAAJAAACAAAAAQIAAAAVVGl0bGUgY2Fubm90IGJlIGVtcHR5AwkAAGYAAAACCQABMQAAAAEFAAAABG5hbWUAAAAAAAAAAGQJAAACAAAAAQIAAAAjMTAwIENoYXJhY3RlcnMgbWF4aW11bSBmb3IgdGhlIG5hbWUDCQAAZgAAAAIJAAExAAAAAQUAAAALZGVzY3JpcHRpb24AAAAAAAAAA+gJAAACAAAAAQIAAAArMTAwMCBDaGFyYWN0ZXJzIG1heGltdW0gZm9yIHRoZSBkZXNjcmlwdGlvbgMJAAAAAAAAAgkAATEAAAABBQAAAAtkZXNjcmlwdGlvbgAAAAAAAAAAAAkAAAIAAAABAgAAABtEZXNjcmlwdGlvbiBjYW5ub3QgYmUgZW1wdHkEAAAACHRhZ3NMaXN0CQAEtQAAAAIFAAAABHRhZ3MCAAAAASwDCQAAZgAAAAIJAAGQAAAAAQUAAAAIdGFnc0xpc3QAAAAAAAAAAAUJAAACAAAAAQIAAAA4VGFncyBzaG91bGQgYmUgbWF4aW11bSA1IHNpbmdsZSB3b3JkIHNlcGFyYXRlZCBieSBzcGFjZS4EAAAAEHVzZXJJc1JlZ2lzdGVyZWQEAAAAByRtYXRjaDAJAAQdAAAAAgUAAAAEdGhpcwkAASwAAAACAgAAAAx1c2VyX3N0YXR1c18FAAAADWNhbGxlckFkZHJlc3MDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABlN0cmluZwQAAAABcwUAAAAHJG1hdGNoMAUAAAABcwUAAAAQdXNlclVucmVnaXN0ZXJlZAQAAAAJdGltZXN0YW1wCAUAAAAJbGFzdEJsb2NrAAAACXRpbWVzdGFtcAMDCQEAAAAJaXNEZWZpbmVkAAAAAQUAAAAQdXNlcklzUmVnaXN0ZXJlZAkAAAAAAAACBQAAABB1c2VySXNSZWdpc3RlcmVkBQAAABB1c2VyVW5yZWdpc3RlcmVkBwkAAAIAAAABAgAAADhQbGVhc2UgcmVnaXN0ZXIgdGhpcyBhY2NvdW50IGZpcnN0IHdpdGggIlVzZXIgaW5mb3MiIHRhYgMJAAAAAAAAAgUAAAAQdXNlcklzUmVnaXN0ZXJlZAUAAAANdXNlclN1c3BlbmRlZAkAAAIAAAABAgAAABlZb3VyIGFjY291bnQgaXMgc3VzcGVuZGVkAwkAAAAAAAACBQAAABB1c2VySXNSZWdpc3RlcmVkBQAAAAt1c2VyUmVtb3ZlZAkAAAIAAAABAgAAAB5Zb3VyIGFjY291bnQgaGF2ZSBiZWVuIHJlbW92ZWQDCQAAZgAAAAIFAAAAB21heG1pbnQAAAAAAAAAAAoJAAACAAAAAQIAAAAfTWF4aW11bSAxMCBlZGl0aW9ucyBwZXIgYXJ0d29yawMJAQAAAAIhPQAAAAIJAAExAAAAAQUAAAAKc2hhMjU2SGFzaAAAAAAAAAAAQAkAAAIAAAABAgAAADFIYXNoIHNob3VsZCBiZSBzaGEyNTYgc3RyaW5nIGNvbXBvc2VkIG9mIDY0IGNoYXIuCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABFrZXlBcnRPd25lckJ5SGFzaAAAAAEFAAAACnNoYTI1Nkhhc2gFAAAADWNhbGxlckFkZHJlc3MJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAFWtleUFydFR4aWRCeUhhc2hPd25lcgAAAAIFAAAACnNoYTI1Nkhhc2gFAAAADWNhbGxlckFkZHJlc3MFAAAABWFydElkCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAKa2V5QXJ0RGF0ZQAAAAIFAAAADWNhbGxlckFkZHJlc3MFAAAABWFydElkBQAAAAl0aW1lc3RhbXAJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAACmtleUFydE5hbWUAAAACBQAAAA1jYWxsZXJBZGRyZXNzBQAAAAVhcnRJZAUAAAAEbmFtZQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAKa2V5QXJ0RGVzYwAAAAIFAAAADWNhbGxlckFkZHJlc3MFAAAABWFydElkBQAAAAtkZXNjcmlwdGlvbgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAQa2V5QXJ0RGlzcGxheUNpZAAAAAIFAAAADWNhbGxlckFkZHJlc3MFAAAABWFydElkBQAAAApjaWREaXNwbGF5CQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAA9rZXlBcnRFeHBvcnRDaWQAAAACBQAAAA1jYWxsZXJBZGRyZXNzBQAAAAVhcnRJZAUAAAAJY2lkRXhwb3J0CQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABBrZXlBcnRFeHBvcnRIYXNoAAAAAgUAAAANY2FsbGVyQWRkcmVzcwUAAAAFYXJ0SWQFAAAADHNoYTI1NkV4cG9ydAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAARa2V5QXJ0TGljZW5jZUhhc2gAAAACBQAAAA1jYWxsZXJBZGRyZXNzBQAAAAVhcnRJZAUAAAANc2hhMjU2TGljZW5jZQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAQa2V5QXJ0TGljZW5jZUNpZAAAAAIFAAAADWNhbGxlckFkZHJlc3MFAAAABWFydElkBQAAAApjaWRMaWNlbmNlCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAAprZXlBcnRUeXBlAAAAAgUAAAANY2FsbGVyQWRkcmVzcwUAAAAFYXJ0SWQFAAAABHR5cGUJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAACmtleUFydFRhZ3MAAAACBQAAAA1jYWxsZXJBZGRyZXNzBQAAAAVhcnRJZAUAAAAEdGFncwkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAADWtleUFydE1heE1pbnQAAAACBQAAAA1jYWxsZXJBZGRyZXNzBQAAAAVhcnRJZAUAAAAHbWF4bWludAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAMa2V5QXJ0U2lnbklEAAAAAgUAAAANY2FsbGVyQWRkcmVzcwUAAAAFYXJ0SWQFAAAABnNpZ25JRAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAADGtleUFydElzc3VlZAAAAAIFAAAADWNhbGxlckFkZHJlc3MFAAAABWFydElkAAAAAAAAAAAACQAETAAAAAIJAQAAAAxCb29sZWFuRW50cnkAAAACCQEAAAAMa2V5QXJ0T25TYWxlAAAAAgUAAAANY2FsbGVyQWRkcmVzcwUAAAAFYXJ0SWQHCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABNrZXlBcnRBcnRpZEJ5U2lnbmlkAAAAAgUAAAANY2FsbGVyQWRkcmVzcwUAAAAGc2lnbklEBQAAAAVhcnRJZAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACAgAAAA5sYXN0X2ludm9rZV9pZAUAAAAFYXJ0SWQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAFGtleUFydEhhc2hCeVR4aWRBZGRyAAAAAgUAAAANY2FsbGVyQWRkcmVzcwUAAAAFYXJ0SWQFAAAACnNoYTI1Nkhhc2gJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEFAAAAC2ZlZVJlY2VpdmVyBQAAAAZhbW91bnQFAAAAB2Fzc2V0SWQFAAAAA25pbAAAAAZpbnZva2UBAAAADXVwZGF0ZUFydHdvcmsAAAALAAAABHR4aWQAAAAEbmFtZQAAAAtkZXNjcmlwdGlvbgAAAAR0YWdzAAAABHR5cGUAAAAHbWF4bWludAAAAApjaWREaXNwbGF5AAAADHNoYTI1NkV4cG9ydAAAAAljaWRFeHBvcnQA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clN1c3BlbmRlZAkAAAIAAAABAgAAABlZb3VyIGFjY291bnQgaXMgc3VzcGVuZGVkAwkAAAAAAAACBQAAABB1c2VySXNSZWdpc3RlcmVkBQAAAAt1c2VyUmVtb3ZlZAkAAAIAAAABAgAAAB5Zb3VyIGFjY291bnQgaGF2ZSBiZWVuIHJlbW92ZWQDCQAAZgAAAAIFAAAAB21heG1pbnQAAAAAAAAAAAoJAAACAAAAAQIAAAAfTWF4aW11bSAxMCBlZGl0aW9ucyBwZXIgYXJ0d29yawMJAQAAAAEhAAAAAQUAAAANYXJ0d29ya01pbnRlZAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAKa2V5QXJ0TmFtZQAAAAIFAAAADWNhbGxlckFkZHJlc3MFAAAABHR4aWQFAAAABG5hbWUJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAACmtleUFydERlc2MAAAACBQAAAA1jYWxsZXJBZGRyZXNzBQAAAAR0eGlkBQAAAAtkZXNjcmlwdGlvbgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAQa2V5QXJ0RGlzcGxheUNpZAAAAAIFAAAADWNhbGxlckFkZHJlc3MFAAAABHR4aWQFAAAACmNpZERpc3BsYXkJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAD2tleUFydEV4cG9ydENpZAAAAAIFAAAADWNhbGxlckFkZHJlc3MFAAAABHR4aWQFAAAACWNpZEV4cG9ydAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAQa2V5QXJ0RXhwb3J0SGFzaAAAAAIFAAAADWNhbGxlckFkZHJlc3MFAAAABHR4aWQFAAAADHNoYTI1NkV4cG9ydAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAQa2V5QXJ0TGljZW5jZUNpZAAAAAIFAAAADWNhbGxlckFkZHJlc3MFAAAABHR4aWQFAAAACmNpZExpY2VuY2UJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAEWtleUFydExpY2VuY2VIYXNoAAAAAgUAAAANY2FsbGVyQWRkcmVzcwUAAAAEdHhpZAUAAAANc2hhMjU2TGljZW5jZQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAADWtleUFydE1heE1pbnQAAAACBQAAAA1jYWxsZXJBZGRyZXNzBQAAAAR0eGlkBQAAAAdtYXhtaW50CQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAAprZXlBcnRUYWdzAAAAAgUAAAANY2FsbGVyQWRkcmVzcwUAAAAEdHhpZAUAAAAEdGFncwkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAKa2V5QXJ0VHlwZQAAAAIFAAAADWNhbGxlckFkZHJlc3MFAAAABHR4aWQFAAAABHR5cGUJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgIAAAAObGFzdF9pbnZva2VfaWQFAAAACHVwZGF0ZUlkBQAAAANuaWwJAAACAAAAAQIAAAA3WW91IGNhbm5vdCBlZGl0IGFydHdvcmsgdGhhdCBoYXZlIGFscmVhZHkgbWludGVkIE5GVChzKQAAAAFpAQAAAA1kZWxldGVBcnR3b3JrAAAAAgAAAAVhcnRJZAAAAAdhZGRyZXNzBAAAAA1jYWxsZXJBZGRyZXNzCQAEJQAAAAEJAQAAABRhZGRyZXNzRnJvbVB1YmxpY0tleQAAAAEIBQAAAAFpAAAAD2NhbGxlclB1YmxpY0tleQQAAAACaWQJAAJYAAAAAQgFAAAAAWkAAAANdHJhbnNhY3Rpb25JZAQAAAAMYWRkcmVzc1RvVXNlAwMJAAAAAAAAAgUAAAANY2FsbGVyQWRkcmVzcwUAAAAFYWRtaW4GCQAAAAAAAAIFAAAADWNhbGxlckFkZHJlc3MFAAAABmFkbWluMgUAAAAHYWRkcmVzcwUAAAANY2FsbGVyQWRkcmVzcwQAAAAKZW50cnlFeGlzdAQAAAAHJG1hdGNoMAkABB0AAAACBQAAAAR0aGlzCQEAAAAKa2V5QXJ0TmFtZQAAAAIFAAAADGFkZHJlc3NUb1VzZQUAAAAFYXJ0SWQDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABlN0cmluZwQAAAABcwUAAAAHJG1hdGNoMAUAAAABcwkAAAIAAAABAgAAADdObyBhcnR3b3JrIG1hdGNoaW5nIHRoaXMgcmVxdWVzdCBvciB5b3UgYXJlIG5vdCBhbGxvd2VkBAAAAA1hcnR3b3JrTWludGVkBAAAAAckbWF0Y2gwCQAEGgAAAAIFAAAABHRoaXMJAQAAAAxrZXlBcnRJc3N1ZWQAAAACBQAAAAxhZGRyZXNzVG9Vc2UFAAAABWFydElkAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAAWIFAAAAByRtYXRjaDADCQAAAAAAAAIFAAAAAWIAAAAAAAAAAAAHBgcEAAAACnNoYTI1Nkhhc2gEAAAAByRtYXRjaDAJAAQdAAAAAgUAAAAEdGhpcwkBAAAAFGtleUFydEhhc2hCeVR4aWRBZGRyAAAAAgUAAAAMYWRkcmVzc1RvVXNlBQAAAAVhcnRJZAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAGU3RyaW5nBAAAAAFzBQAAAAckbWF0Y2gwBQAAAAFzCQAAAgAAAAECAAAAJU5vIGFydHdvcmsgaGFzaCBtYXRjaGluZyB0aGlzIHJlcXVlc3QEAAAABnNpZ25JRAQAAAAHJG1hdGNoMAkABB0AAAACBQAAAAR0aGlzCQEAAAAMa2V5QXJ0U2lnbklEAAAAAgUAAAAMYWRkcmVzc1RvVXNlBQAAAAVhcnRJZAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAGU3RyaW5nBAAAAAFzBQAAAAckbWF0Y2gwBQAAAAFzCQAAAgAAAAECAAAAIE5vIFNJR04gSUQgbWF0Y2hpbmcgdGhpcyByZXF1ZXN0BAAAAAxkYXRhVG9EZWxldGUJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQkBAAAACmtleUFydERhdGUAAAACBQAAAAxhZGRyZXNzVG9Vc2UFAAAABWFydElkCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEJAQAAAAprZXlBcnROYW1lAAAAAgUAAAAMYWRkcmVzc1RvVXNlBQAAAAVhcnRJZAkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABCQEAAAAKa2V5QXJ0RGVzYwAAAAIFAAAADGFkZHJlc3NUb1VzZQUAAAAFYXJ0SWQJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQkBAAAAEGtleUFydERpc3BsYXlDaWQAAAACBQAAAAxhZGRyZXNzVG9Vc2UFAAAABWFydElkCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEJAQAAAA9rZXlBcnRFeHBvcnRDaWQAAAACBQAAAAxhZGRyZXNzVG9Vc2UFAAAABWFydElkCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEJAQAAABBrZXlBcnRFeHBvcnRIYXNoAAAAAgUAAAAMYWRkcmVzc1RvVXNlBQAAAAVhcnRJZAkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABCQEAAAARa2V5QXJ0TGljZW5jZUhhc2gAAAACBQAAAAxhZGRyZXNzVG9Vc2UFAAAABWFydElkCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEJAQAAABBrZXlBcnRMaWNlbmNlQ2lkAAAAAgUAAAAMYWRkcmVzc1RvVXNlBQAAAAVhcnRJZAkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABCQEAAAAKa2V5QXJ0VHlwZQAAAAIFAAAADGFkZHJlc3NUb1VzZQUAAAAFYXJ0SWQJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQkBAAAACmtleUFydFRhZ3MAAAACBQAAAAxhZGRyZXNzVG9Vc2UFAAAABWFydElkCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEJAQAAAA1rZXlBcnRNYXhNaW50AAAAAgUAAAAMYWRkcmVzc1RvVXNlBQAAAAVhcnRJZAkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABCQEAAAAMa2V5QXJ0U2lnbklEAAAAAgUAAAAMYWRkcmVzc1RvVXNlBQAAAAVhcnRJZAkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABCQEAAAAMa2V5QXJ0SXNzdWVkAAAAAgUAAAAMYWRkcmVzc1RvVXNlBQAAAAVhcnRJZAkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABCQEAAAAMa2V5QXJ0T25TYWxlAAAAAgUAAAAMYWRkcmVzc1RvVXNlBQAAAAVhcnRJZAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACAgAAAA5sYXN0X2ludm9rZV9pZAUAAAACaWQJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQkBAAAAEWtleUFydE93bmVyQnlIYXNoAAAAAQUAAAAKc2hhMjU2SGFzaAkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABCQEAAAATa2V5QXJ0QXJ0aWRCeVNpZ25pZAAAAAIFAAAADGFkZHJlc3NUb1VzZQUAAAAGc2lnbklECQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEJAQAAABVrZXlBcnRUeGlkQnlIYXNoT3duZXIAAAACBQAAAApzaGEyNTZIYXNoBQAAAAxhZGRyZXNzVG9Vc2UFAAAAA25pbAMDCQAAAAAAAAIFAAAADWNhbGxlckFkZHJlc3MFAAAABWFkbWluBgkAAAAAAAACBQAAAA1jYWxsZXJBZGRyZXNzBQAAAAZhZG1pbjIFAAAADGRhdGFUb0RlbGV0ZQMJAQAAAAEhAAAAAQUAAAANYXJ0d29ya01pbnRlZAUAAAAMZGF0YVRvRGVsZXRlCQAAAgAAAAECAAAAOlRoaXMgYXJ0d29yayBhbHJlYWR5IGhhdmUgbWludGVkIE5GVCwgeW91IGNhbm5vdCBkZWxldGUgaXQAAAAGaW52b2tlAQAAAAtzZWxsQXJ0d29yawAAAAQAAAAFYXJ0SWQAAAAFcHJpY2UAAAAHbWF4TWludAAAAAdhc3NldElkBAAAAAJpZAkAAlgAAAABCAUAAAAGaW52b2tlAAAADXRyYW5zYWN0aW9uSWQEAAAADWNhbGxlckFkZHJlc3MJAAJYAAAAAQgIBQAAAAZpbnZva2UAAAAGY2FsbGVyAAAABWJ5dGVzBAAAAAhzZWxsRGF0ZQgFAAAACWxhc3RCbG9jawAAAAl0aW1lc3RhbXAEAAAACWV4cG9ydENJRAkBAAAADmdldFN0cmluZ0J5S2V5AAAAAQkBAAAAD2tleUFydEV4cG9ydENpZAAAAAIFAAAADWNhbGxlckFkZHJlc3MFAAAABWFydElkAwkBAAAAAiE9AAAAAgkAATEAAAABCQABkQAAAAIJAAS1AAAAAgUAAAAJZXhwb3J0Q0lEAgAAAAEvAAAAAAAAAAAAAAAAAAAAAAA7CQAAAgAAAAECAAAAK1lvdSBjYW5ub3Qgc2VsbCBhcnR3b3JrIHdpdGggbm8gZXhwb3J0IGZpbGUEAAAACmV4cG9ydEhhc2gJAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEJAQAA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dHJ5AAAAAgkBAAAADWtleUFydE1heE1pbnQAAAACBQAAAA1jYWxsZXJBZGRyZXNzBQAAAAVhcnRJZAUAAAAHbWF4TWludAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAVa2V5QXJ0QXNzZXRJZEFjY2VwdGVkAAAAAgUAAAANY2FsbGVyQWRkcmVzcwUAAAAFYXJ0SWQFAAAAB2Fzc2V0SWQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgIAAAAObGFzdF9pbnZva2VfaWQFAAAAAmlkBQAAAANuaWwAAAAGaW52b2tlAQAAAApidXlBcnR3b3JrAAAAAgAAAAVhcnRJZAAAAAZpc3N1ZXIEAAAAAmlkCQACWAAAAAEIBQAAAAZpbnZva2UAAAANdHJhbnNhY3Rpb25JZAQAAAANY2FsbGVyQWRkcmVzcwkAAlgAAAABCAgFAAAABmludm9rZQAAAAZjYWxsZXIAAAAFYnl0ZXMEAAAACHRvdGFsTkZUCQEAAAAPZ2V0SW50ZWdlckJ5S2V5AAAAAQIAAAAQdG90YWxfbmZ0X2lzc3VlZAQAAAAGc2lnbklECQEAAAAOZ2V0U3RyaW5nQnlLZXkAAAABCQEAAAAMa2V5QXJ0U2lnbklEAAAAAgUAAAAGaXNzdWVyBQAAAAVhcnRJZAQAAAALYXJ0d29ya05hbWUEAAAAByRtYXRjaDAJAAQdAAAAAgUAAAAEdGhpcwkBAAAACmtleUFydE5hbWUAAAACBQAAAAZpc3N1ZXIFAAAABWFydElkAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAZTdHJpbmcEAAAAAXMFAAAAByRtYXRjaDAFAAAAAXMJAAACAAAAAQIAAAAZVGhpcyBhcnR3b3JrIGRvZXNuJ3QgZXhpdAQAAAAKZGlzcGxheUNJRAkBAAAADmdldFN0cmluZ0J5S2V5AAAAAQkBAAAAEGtleUFydERpc3BsYXlDaWQAAAACBQAAAAZpc3N1ZXIFAAAABWFydElkBAAAAAlleHBvcnRDSUQJAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEJAQAAAA9rZXlBcnRFeHBvcnRDaWQAAAACBQAAAAZpc3N1ZXIFAAAABWFydElkBAAAAApleHBvcnRIYXNoCQEAAAAOZ2V0U3RyaW5nQnlLZXkAAAABCQEAAAAQa2V5QXJ0RXhwb3J0SGFzaAAAAAIFAAAABmlzc3VlcgUAAAAFYXJ0SWQEAAAACmxpY2VuY2VDSUQJAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEJAQAAABBrZXlBcnRMaWNlbmNlQ2lkAAAAAgUAAAAGaXNzdWVyBQAAAAVhcnRJZAQAAAALbGljZW5jZUhhc2gJAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEJAQAAABFrZXlBcnRMaWNlbmNlSGFzaAAAAAIFAAAABmlzc3VlcgUAAAAFYXJ0SWQEAAAAC2Rlc2NyaXB0aW9uCQABLwAAAAIJAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEJAQAAAAprZXlBcnREZXNjAAAAAgUAAAAGaXNzdWVyBQAAAAVhcnRJZAAAAAAAAAAAMgQAAAAKYW1vdW50U29sZAkBAAAAD2dldEludGVnZXJCeUtleQAAAAEJAQAAAAxrZXlBcnRJc3N1ZWQAAAACBQAAAAZpc3N1ZXIFAAAABWFydElkBAAAAAxhcnR3b3JrUHJpY2UJAQAAAA9nZXRJbnRlZ2VyQnlLZXkAAAABCQEAAAALa2V5QXJ0UHJpY2UAAAACBQAAAAZpc3N1ZXIFAAAABWFydElkBAAAAAhpc09uU2FsZQkBAAAAD2dldEJvb2xlYW5CeUtleQAAAAEJAQAAAAxrZXlBcnRPblNhbGUAAAACBQAAAAZpc3N1ZXIFAAAABWFydElkBAAAAAxwcmljZUFzc2V0SWQJAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEJAQAAABVrZXlBcnRBc3NldElkQWNjZXB0ZWQAAAACBQAAAAZpc3N1ZXIFAAAABWFydElkBAAAAApzb3VyY2VIYXNoCQEAAAAOZ2V0U3RyaW5nQnlLZXkAAAABCQEAAAAUa2V5QXJ0SGFzaEJ5VHhpZEFkZHIAAAACBQAAAAZpc3N1ZXIFAAAABWFydElkAwkAAAAAAAACBQAAAAxhcnR3b3JrUHJpY2UAAAAAAAAAAAAJAAACAAAAAQIAAAAcVGhpcyBhcnR3b3JrIGlzIG5vdCBmb3Igc2VsbAMJAQAAAAEhAAAAAQUAAAAIaXNPblNhbGUJAAACAAAAAQIAAAAcVGhpcyBhcnR3b3JrIGlzIG5vdCBmb3Igc2Fs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", "height": 1219778, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 4P6M3R6iXLaeJhfUwdmGC9Z3AzSSzyH7ywrhEkKxYNEm Next: CDQZ6vb8Z9FC2VJiRDHQWP9F2ep4cDheSfZJ1LzWtPEf Diff:
OldNewDifferences
267267 func changeUserStatus (aB,aC) = {
268268 let Q = toString(addressFromPublicKey(y.callerPublicKey))
269269 let G = toBase58String(y.transactionId)
270- let aD = if ((aC == m))
270+ let aD = t(V(aB))
271+ let aE = if ((aC == m))
271272 then m
272273 else if ((aC == l))
273274 then l
278279 else if ((aC == k))
279280 then k
280281 else throw("Unknown status")
281- if (if ((Q == h))
282- then true
283- else (Q == i))
284- then [StringEntry(V(aB), aD), StringEntry("last_invoke_id", G)]
285- else throw(((("You are not allowed to change user status " + Q) + " / ") + h))
282+ if (if ((aD == k))
283+ then (aC == k)
284+ else false)
285+ then throw("This user is already allowed")
286+ else if (if ((aD == l))
287+ then (aC == k)
288+ else false)
289+ then throw("This user is already allowed and registered")
290+ else if (if ((aD == m))
291+ then (aC == k)
292+ else false)
293+ then throw("This user is already allowed and verified")
294+ else if (if ((Q == h))
295+ then true
296+ else (Q == i))
297+ then [StringEntry(V(aB), aE), StringEntry("last_invoke_id", G)]
298+ else throw(((("You are not allowed to change user status " + Q) + " / ") + h))
286299 }
287300
288301
300313
301314
302315
303-@Callable(aE)
304-func addArtwork (D,B,au,av,aF,aG,aH,aI,aJ,aK,aL,aM) = {
305- let Y = toBase58String(aE.transactionId)
306- let aN = toBase58String(aE.caller.bytes)
307- if (!(I(aI)))
316+@Callable(aF)
317+func addArtwork (D,B,au,av,aG,aH,aI,aJ,aK,aL,aM,aN) = {
318+ let Y = toBase58String(aF.transactionId)
319+ let aO = toBase58String(aF.caller.bytes)
320+ if (!(I(aJ)))
308321 then throw("Wrong Display CID length")
309- else if (!(I(aK)))
322+ else if (!(I(aL)))
310323 then throw("Wrong Export CID length")
311- else if (!(I(aM)))
324+ else if (!(I(aN)))
312325 then throw("Wrong Licence CID length")
313326 else if (!(K(D)))
314327 then throw("Source Hash should be 64 characters maximum")
315- else if (!(K(aJ)))
328+ else if (!(K(aK)))
316329 then throw("Export Hash should be 64 characters maximum")
317- else if (!(K(aL)))
330+ else if (!(K(aM)))
318331 then throw("Licence Hash should be 64 characters maximum")
319- else if ((size(aE.payments) == 0))
332+ else if ((size(aF.payments) == 0))
320333 then throw("No payment attached")
321334 else {
322- let aO = value(aE.payments[0])
323- let aP = value(aO.amount)
324- let aQ = if (if (isDefined(aO.assetId))
325- then (aO.assetId == d)
335+ let aP = value(aF.payments[0])
336+ let aQ = value(aP.amount)
337+ let aR = if (if (isDefined(aP.assetId))
338+ then (aP.assetId == d)
326339 else false)
327- then aO.assetId
340+ then aP.assetId
328341 else throw("Only SIGN token accepted at the moment")
329- let aR = {
342+ let aS = {
330343 let v = getInteger(a, ("certification_fee_" + toBase58String(d)))
331344 if ($isInstanceOf(v, "Int"))
332345 then {
333- let aS = v
334- aS
346+ let aT = v
347+ aT
335348 }
336349 else throw("Price undefined in oracle")
337350 }
338- if ((aP != aR))
339- then throw(("Payment amount should be " + toString(aR)))
351+ if ((aQ != aS))
352+ then throw(("Payment amount should be " + toString(aS)))
340353 else {
341- let aT = t(at(D, aN))
342- if ((aT != ""))
354+ let aU = t(at(D, aO))
355+ if ((aU != ""))
343356 then throw("You already added this artwork on Sign Art")
344357 else {
345- let aU = t(aq(D))
346- if ((aU != ""))
358+ let aV = t(aq(D))
359+ if ((aV != ""))
347360 then throw("This artwork hash is already registered on Sign Art")
348361 else {
349- let aV = A(B, aN, D)
350- if (!(aV))
362+ let aW = A(B, aO, D)
363+ if (!(aW))
351364 then throw("Sign Certificate not found on Sign-web.app smart contract for this address.")
352- else if ((size(aI) == 0))
365+ else if ((size(aJ) == 0))
353366 then throw("Display CID cannot be empty")
354367 else if ((size(au) == 0))
355368 then throw("Title cannot be empty")
360373 else if ((size(av) == 0))
361374 then throw("Description cannot be empty")
362375 else {
363- let aW = split(aF, ",")
364- if ((size(aW) > 5))
376+ let aX = split(aG, ",")
377+ if ((size(aX) > 5))
365378 then throw("Tags should be maximum 5 single word separated by space.")
366379 else {
367- let aX = {
368- let v = getString(this, ("user_status_" + aN))
380+ let aY = {
381+ let v = getString(this, ("user_status_" + aO))
369382 if ($isInstanceOf(v, "String"))
370383 then {
371- let aY = v
372- aY
384+ let aZ = v
385+ aZ
373386 }
374387 else p
375388 }
376389 let az = lastBlock.timestamp
377- if (if (isDefined(aX))
378- then (aX == p)
390+ if (if (isDefined(aY))
391+ then (aY == p)
379392 else false)
380393 then throw("Please register this account first with \"User infos\" tab")
381- else if ((aX == n))
394+ else if ((aY == n))
382395 then throw("Your account is suspended")
383- else if ((aX == o))
396+ else if ((aY == o))
384397 then throw("Your account have been removed")
385- else if ((aH > 10))
398+ else if ((aI > 10))
386399 then throw("Maximum 10 editions per artwork")
387400 else if ((size(D) != 64))
388401 then throw("Hash should be sha256 string composed of 64 char.")
389- 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)]
402+ else [StringEntry(aq(D), aO), StringEntry(at(D, aO), Y), IntegerEntry(X(aO, Y), az), StringEntry(Z(aO, Y), au), StringEntry(aa(aO, Y), av), StringEntry(ab(aO, Y), aJ), StringEntry(ad(aO, Y), aL), StringEntry(ac(aO, Y), aK), StringEntry(ai(aO, Y), aM), StringEntry(aj(aO, Y), aN), StringEntry(al(aO, Y), aH), StringEntry(ak(aO, Y), aG), IntegerEntry(ae(aO, Y), aI), StringEntry(af(aO, Y), B), IntegerEntry(ag(aO, Y), 0), BooleanEntry(ah(aO, Y), false), StringEntry(ar(aO, B), Y), StringEntry("last_invoke_id", Y), StringEntry(ao(aO, Y), D), ScriptTransfer(Address(fromBase58String(c)), aQ, aR)]
390403 }
391404 }
392405 }
397410
398411
399412
400-@Callable(aE)
401-func updateArtwork (ap,au,av,aF,aG,aH,aI,aJ,aK,aL,aM) = {
402- let aZ = toBase58String(aE.transactionId)
403- let aN = toBase58String(aE.caller.bytes)
404- if (!(I(aI)))
413+@Callable(aF)
414+func updateArtwork (ap,au,av,aG,aH,aI,aJ,aK,aL,aM,aN) = {
415+ let ba = toBase58String(aF.transactionId)
416+ let aO = toBase58String(aF.caller.bytes)
417+ if (!(I(aJ)))
405418 then throw("Wrong Display CID length")
406- else if (!(I(aK)))
419+ else if (!(I(aL)))
407420 then throw("Wrong Export CID length")
408- else if (!(I(aM)))
421+ else if (!(I(aN)))
409422 then throw("Wrong Licence CID length")
410- else if (!(K(aJ)))
423+ else if (!(K(aK)))
411424 then throw("Export Hash should be 64 characters maximum")
412- else if (!(K(aL)))
425+ else if (!(K(aM)))
413426 then throw("Licence Hash should be 64 characters maximum")
414427 else {
415- let aT = t(Z(aN, ap))
416- if ((aT == ""))
428+ let aU = t(Z(aO, ap))
429+ if ((aU == ""))
417430 then throw("This entry doesn't exist or you are not the owner")
418431 else if ((size(au) == 0))
419432 then throw("Title cannot be empty")
424437 else if ((size(av) == 0))
425438 then throw("Description cannot be empty")
426439 else {
427- let ba = {
428- let v = getInteger(this, ag(aN, ap))
440+ let bb = {
441+ let v = getInteger(this, ag(aO, ap))
429442 if ($isInstanceOf(v, "Int"))
430443 then {
431444 let O = v
435448 }
436449 else false
437450 }
438- let aW = split(aF, ",")
439- if ((size(aW) > 5))
451+ let aX = split(aG, ",")
452+ if ((size(aX) > 5))
440453 then throw("Tags should be maximum 5 single word separated by space.")
441454 else {
442- let aX = {
443- let v = getString(this, ("user_status_" + aN))
455+ let aY = {
456+ let v = getString(this, ("user_status_" + aO))
444457 if ($isInstanceOf(v, "String"))
445458 then {
446- let aY = v
447- aY
459+ let aZ = v
460+ aZ
448461 }
449462 else p
450463 }
451- if (if (isDefined(aX))
452- then (aX == p)
464+ if (if (isDefined(aY))
465+ then (aY == p)
453466 else false)
454467 then throw("Please register this account first with \"User infos\" tab")
455- else if ((aX == n))
468+ else if ((aY == n))
456469 then throw("Your account is suspended")
457- else if ((aX == o))
470+ else if ((aY == o))
458471 then throw("Your account have been removed")
459- else if ((aH > 10))
472+ else if ((aI > 10))
460473 then throw("Maximum 10 editions per artwork")
461- else if (!(ba))
462- 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)]
474+ else if (!(bb))
475+ then [StringEntry(Z(aO, ap), au), StringEntry(aa(aO, ap), av), StringEntry(ab(aO, ap), aJ), StringEntry(ad(aO, ap), aL), StringEntry(ac(aO, ap), aK), StringEntry(aj(aO, ap), aN), StringEntry(ai(aO, ap), aM), IntegerEntry(ae(aO, ap), aI), StringEntry(ak(aO, ap), aG), StringEntry(al(aO, ap), aH), StringEntry("last_invoke_id", ba)]
463476 else throw("You cannot edit artwork that have already minted NFT(s)")
464477 }
465478 }
470483
471484 @Callable(y)
472485 func deleteArtwork (Y,aB) = {
473- let aN = toString(addressFromPublicKey(y.callerPublicKey))
486+ let aO = toString(addressFromPublicKey(y.callerPublicKey))
474487 let G = toBase58String(y.transactionId)
475- let bb = if (if ((aN == h))
488+ let bc = if (if ((aO == h))
476489 then true
477- else (aN == i))
490+ else (aO == i))
478491 then aB
479- else aN
480- let aT = {
481- let v = getString(this, Z(bb, Y))
492+ else aO
493+ let aU = {
494+ let v = getString(this, Z(bc, Y))
482495 if ($isInstanceOf(v, "String"))
483496 then {
484- let aY = v
485- aY
497+ let aZ = v
498+ aZ
486499 }
487500 else throw("No artwork matching this request or you are not allowed")
488501 }
489- let ba = {
490- let v = getInteger(this, ag(bb, Y))
502+ let bb = {
503+ let v = getInteger(this, ag(bc, Y))
491504 if ($isInstanceOf(v, "Int"))
492505 then {
493506 let O = v
498511 else false
499512 }
500513 let D = {
501- let v = getString(this, ao(bb, Y))
514+ let v = getString(this, ao(bc, Y))
502515 if ($isInstanceOf(v, "String"))
503516 then {
504- let aY = v
505- aY
517+ let aZ = v
518+ aZ
506519 }
507520 else throw("No artwork hash matching this request")
508521 }
509522 let B = {
510- let v = getString(this, af(bb, Y))
523+ let v = getString(this, af(bc, Y))
511524 if ($isInstanceOf(v, "String"))
512525 then {
513- let aY = v
514- aY
526+ let aZ = v
527+ aZ
515528 }
516529 else throw("No SIGN ID matching this request")
517530 }
518- 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))]
519- if (if ((aN == h))
531+ let bd = [DeleteEntry(X(bc, Y)), DeleteEntry(Z(bc, Y)), DeleteEntry(aa(bc, Y)), DeleteEntry(ab(bc, Y)), DeleteEntry(ad(bc, Y)), DeleteEntry(ac(bc, Y)), DeleteEntry(ai(bc, Y)), DeleteEntry(aj(bc, Y)), DeleteEntry(al(bc, Y)), DeleteEntry(ak(bc, Y)), DeleteEntry(ae(bc, Y)), DeleteEntry(af(bc, Y)), DeleteEntry(ag(bc, Y)), DeleteEntry(ah(bc, Y)), StringEntry("last_invoke_id", G), DeleteEntry(aq(D)), DeleteEntry(ar(bc, B)), DeleteEntry(at(D, bc))]
532+ if (if ((aO == h))
520533 then true
521- else (aN == i))
522- then bc
523- else if (!(ba))
524- then bc
534+ else (aO == i))
535+ then bd
536+ else if (!(bb))
537+ then bd
525538 else throw("This artwork already have minted NFT, you cannot delete it")
526539 }
527540
528541
529542
530-@Callable(aE)
531-func sellArtwork (Y,aS,bd,aQ) = {
532- let G = toBase58String(aE.transactionId)
533- let aN = toBase58String(aE.caller.bytes)
534- let be = lastBlock.timestamp
535- let bf = t(ad(aN, Y))
536- if ((size(split(bf, "/")[0]) != 59))
543+@Callable(aF)
544+func sellArtwork (Y,aT,be,aR) = {
545+ let G = toBase58String(aF.transactionId)
546+ let aO = toBase58String(aF.caller.bytes)
547+ let bf = lastBlock.timestamp
548+ let bg = t(ad(aO, Y))
549+ if ((size(split(bg, "/")[0]) != 59))
537550 then throw("You cannot sell artwork with no export file")
538551 else {
539- let bg = t(ac(aN, Y))
540- if ((size(bg) != 64))
552+ let bh = t(ac(aO, Y))
553+ if ((size(bh) != 64))
541554 then throw("You cannot sell artwork with no export hash")
542- else if (if (if ((aQ != toBase58String(d)))
543- then (aQ != toBase58String(f))
555+ else if (if (if ((aR != toBase58String(d)))
556+ then (aR != toBase58String(f))
544557 else false)
545- then (aQ != toBase58String(e))
558+ then (aR != toBase58String(e))
546559 else false)
547560 then throw("Only SIGN, USDN or WAVES currency accepted at the moment")
548561 else {
549- let bh = {
550- let v = getString(this, Z(aN, Y))
562+ let bi = {
563+ let v = getString(this, Z(aO, Y))
551564 if ($isInstanceOf(v, "String"))
552565 then {
553- let aY = v
554- aY
566+ let aZ = v
567+ aZ
555568 }
556569 else throw("This artwork doesn't exit or you are not the owner")
557570 }
558- let aX = {
559- let v = getString(this, V(aN))
571+ let aY = {
572+ let v = getString(this, V(aO))
560573 if ($isInstanceOf(v, "String"))
561574 then {
562- let aY = v
563- aY
575+ let aZ = v
576+ aZ
564577 }
565578 else throw("Please register this account first")
566579 }
567- let bi = {
568- let v = getInteger(this, ag(aN, Y))
580+ let bj = {
581+ let v = getInteger(this, ag(aO, Y))
569582 if ($isInstanceOf(v, "Int"))
570583 then {
571- let bj = v
572- bj
584+ let bk = v
585+ bk
573586 }
574587 else 0
575588 }
576- let bk = {
577- let v = getInteger(this, ae(aN, Y))
589+ let bl = {
590+ let v = getInteger(this, ae(aO, Y))
578591 if ($isInstanceOf(v, "Int"))
579592 then {
580- let bj = v
581- bj
593+ let bk = v
594+ bk
582595 }
583596 else 0
584597 }
585- if (if ((bi != 0))
586- then (bi == bk)
598+ if (if ((bj != 0))
599+ then (bj == bl)
587600 else false)
588601 then throw("You reached the max edition allowed to sell for this edition.")
589- else if (if ((bi > 0))
590- then (bk != bd)
602+ else if (if ((bj > 0))
603+ then (bl != be)
591604 else false)
592605 then throw("You cannot change the maximum issuable anymore")
593- else if ((aX == n))
606+ else if ((aY == n))
594607 then throw("Your account is suspended")
595- else if ((aX == o))
608+ else if ((aY == o))
596609 then throw("Your account have been deleted")
597610 else {
598- let bl = if ((aS > 0))
611+ let bm = if ((aT > 0))
599612 then true
600613 else false
601-[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)]
614+[BooleanEntry(ah(aO, Y), bm), IntegerEntry(am(aO, Y), aT), IntegerEntry(ae(aO, Y), be), StringEntry(an(aO, Y), aR), StringEntry("last_invoke_id", G)]
602615 }
603616 }
604617 }
606619
607620
608621
609-@Callable(aE)
610-func buyArtwork (Y,bm) = {
611- let G = toBase58String(aE.transactionId)
612- let aN = toBase58String(aE.caller.bytes)
613- let bn = x("total_nft_issued")
614- let B = t(af(bm, Y))
615- let bh = {
616- let v = getString(this, Z(bm, Y))
622+@Callable(aF)
623+func buyArtwork (Y,bn) = {
624+ let G = toBase58String(aF.transactionId)
625+ let aO = toBase58String(aF.caller.bytes)
626+ let bo = x("total_nft_issued")
627+ let B = t(af(bn, Y))
628+ let bi = {
629+ let v = getString(this, Z(bn, Y))
617630 if ($isInstanceOf(v, "String"))
618631 then {
619- let aY = v
620- aY
632+ let aZ = v
633+ aZ
621634 }
622635 else throw("This artwork doesn't exit")
623636 }
624- let bo = t(ab(bm, Y))
625- let bf = t(ad(bm, Y))
626- let bg = t(ac(bm, Y))
627- let bp = t(aj(bm, Y))
628- let bq = t(ai(bm, Y))
629- let av = take(t(aa(bm, Y)), 50)
630- let bi = x(ag(bm, Y))
631- let br = x(am(bm, Y))
632- let bs = z(ah(bm, Y))
633- let bt = t(an(bm, Y))
634- let bu = t(ao(bm, Y))
635- if ((br == 0))
637+ let bp = t(ab(bn, Y))
638+ let bg = t(ad(bn, Y))
639+ let bh = t(ac(bn, Y))
640+ let bq = t(aj(bn, Y))
641+ let br = t(ai(bn, Y))
642+ let av = take(t(aa(bn, Y)), 50)
643+ let bj = x(ag(bn, Y))
644+ let bs = x(am(bn, Y))
645+ let bt = z(ah(bn, Y))
646+ let bu = t(an(bn, Y))
647+ let bv = t(ao(bn, Y))
648+ if ((bs == 0))
636649 then throw("This artwork is not for sell")
637- else if (!(bs))
650+ else if (!(bt))
638651 then throw("This artwork is not for sale")
639652 else {
640- let bk = x(ae(bm, Y))
641- let aO = value(aE.payments[0])
642- let aP = value(aO.amount)
643- let aQ = if (if (isDefined(aO.assetId))
644- then (aO.assetId == fromBase58String(bt))
653+ let bl = x(ae(bn, Y))
654+ let aP = value(aF.payments[0])
655+ let aQ = value(aP.amount)
656+ let aR = if (if (isDefined(aP.assetId))
657+ then (aP.assetId == fromBase58String(bu))
645658 else false)
646- then aO.assetId
647- else throw((("Only " + bt) + " token id accepted at the moment"))
648- if ((bi == bk))
659+ then aP.assetId
660+ else throw((("Only " + bu) + " token id accepted at the moment"))
661+ if ((bj == bl))
649662 then throw("Cannot buy this artwork anymore, maximum editions reached")
650- else if ((br != aP))
651- then throw(((("Payment don't match seller price: " + toString(br)) + " vs ") + toString(aP)))
663+ else if ((bs != aQ))
664+ then throw(((("Payment don't match seller price: " + toString(bs)) + " vs ") + toString(aQ)))
652665 else {
653- let bv = (bi + 1)
654- let bw = lastBlock.timestamp
655- let bx = (((((((((((((((((((((((((((("{\"version\": 1,
656- \"creator\": \"" + bm) + "\",
666+ let bw = (bj + 1)
667+ let bx = lastBlock.timestamp
668+ let by = (((((((((((((((((((((((((((("{\"version\": 1,
669+ \"creator\": \"" + bn) + "\",
657670 \"artID\": \"") + Y) + "\",
658671 \"signID\": \"") + B) + "\",
659- \"artwork_name\": \"") + bh) + "\",
672+ \"artwork_name\": \"") + bi) + "\",
660673 \"artwork_desc\": \"") + av) + "\",
661- \"issue\": \"") + toString(bv)) + "/") + toString(bk)) + "\",
662- \"maxIssuable\": \"") + toString(bk)) + "\",
663- \"source_hash\": \"") + bu) + "\",
664- \"display_cid\": \"") + bo) + "\",
665- \"export_cid\": \"") + bf) + "\",
666- \"export_hash\": \"") + bg) + "\",
667- \"licence_cid\": \"") + bp) + "\",
668- \"licence_hash\": \"") + bq) + "\"}")
669- let by = Issue(("SA_" + toString((bn + 1))), bx, 1, 0, false)
670- let bz = calculateAssetId(by)
671- let bl = if ((bv == bk))
674+ \"issue\": \"") + toString(bw)) + "/") + toString(bl)) + "\",
675+ \"maxIssuable\": \"") + toString(bl)) + "\",
676+ \"source_hash\": \"") + bv) + "\",
677+ \"display_cid\": \"") + bp) + "\",
678+ \"export_cid\": \"") + bg) + "\",
679+ \"export_hash\": \"") + bh) + "\",
680+ \"licence_cid\": \"") + bq) + "\",
681+ \"licence_hash\": \"") + br) + "\"}")
682+ let bz = Issue(("SA_" + toString((bo + 1))), by, 1, 0, false)
683+ let bA = calculateAssetId(bz)
684+ let bm = if ((bw == bl))
672685 then false
673686 else true
674-[IntegerEntry(ag(bm, Y), bv), StringEntry(((((((("art_sold_" + toString(bv)) + "_of_") + toString(bk)) + "_") + Y) + "_") + bm), ((((((((aN + "_") + toString(bw)) + "_") + G) + "_") + toString(br)) + "_") + bt)), 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)]
687+[IntegerEntry(ag(bn, Y), bw), StringEntry(((((((("art_sold_" + toString(bw)) + "_of_") + toString(bl)) + "_") + Y) + "_") + bn), ((((((((aO + "_") + toString(bx)) + "_") + G) + "_") + toString(bs)) + "_") + bu)), IntegerEntry("total_nft_issued", (bo + 1)), BooleanEntry(ah(bn, Y), bm), StringEntry("last_invoke_id", G), bz, ScriptTransfer(Address(fromBase58String(bn)), aQ, aR), ScriptTransfer(aF.caller, 1, bA)]
675688 }
676689 }
677690 }
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)
270- let aD = if ((aC == m))
270+ let aD = t(V(aB))
271+ let aE = if ((aC == m))
271272 then m
272273 else if ((aC == l))
273274 then l
274275 else if ((aC == n))
275276 then n
276277 else if ((aC == o))
277278 then o
278279 else if ((aC == k))
279280 then k
280281 else throw("Unknown status")
281- if (if ((Q == h))
282- then true
283- else (Q == i))
284- then [StringEntry(V(aB), aD), StringEntry("last_invoke_id", G)]
285- else throw(((("You are not allowed to change user status " + Q) + " / ") + h))
282+ if (if ((aD == k))
283+ then (aC == k)
284+ else false)
285+ then throw("This user is already allowed")
286+ else if (if ((aD == l))
287+ then (aC == k)
288+ else false)
289+ then throw("This user is already allowed and registered")
290+ else if (if ((aD == m))
291+ then (aC == k)
292+ else false)
293+ then throw("This user is already allowed and verified")
294+ else if (if ((Q == h))
295+ then true
296+ else (Q == i))
297+ then [StringEntry(V(aB), aE), StringEntry("last_invoke_id", G)]
298+ else throw(((("You are not allowed to change user status " + Q) + " / ") + h))
286299 }
287300
288301
289302
290303 @Callable(y)
291304 func creditUser (aB) = {
292305 let Q = toString(addressFromPublicKey(y.callerPublicKey))
293306 let G = toBase58String(y.transactionId)
294307 if (if ((Q == h))
295308 then true
296309 else (Q == i))
297310 then [ScriptTransfer(Address(fromBase58String(aB)), 150000000000, d)]
298311 else throw("You are not allowed to do that")
299312 }
300313
301314
302315
303-@Callable(aE)
304-func addArtwork (D,B,au,av,aF,aG,aH,aI,aJ,aK,aL,aM) = {
305- let Y = toBase58String(aE.transactionId)
306- let aN = toBase58String(aE.caller.bytes)
307- if (!(I(aI)))
316+@Callable(aF)
317+func addArtwork (D,B,au,av,aG,aH,aI,aJ,aK,aL,aM,aN) = {
318+ let Y = toBase58String(aF.transactionId)
319+ let aO = toBase58String(aF.caller.bytes)
320+ if (!(I(aJ)))
308321 then throw("Wrong Display CID length")
309- else if (!(I(aK)))
322+ else if (!(I(aL)))
310323 then throw("Wrong Export CID length")
311- else if (!(I(aM)))
324+ else if (!(I(aN)))
312325 then throw("Wrong Licence CID length")
313326 else if (!(K(D)))
314327 then throw("Source Hash should be 64 characters maximum")
315- else if (!(K(aJ)))
328+ else if (!(K(aK)))
316329 then throw("Export Hash should be 64 characters maximum")
317- else if (!(K(aL)))
330+ else if (!(K(aM)))
318331 then throw("Licence Hash should be 64 characters maximum")
319- else if ((size(aE.payments) == 0))
332+ else if ((size(aF.payments) == 0))
320333 then throw("No payment attached")
321334 else {
322- let aO = value(aE.payments[0])
323- let aP = value(aO.amount)
324- let aQ = if (if (isDefined(aO.assetId))
325- then (aO.assetId == d)
335+ let aP = value(aF.payments[0])
336+ let aQ = value(aP.amount)
337+ let aR = if (if (isDefined(aP.assetId))
338+ then (aP.assetId == d)
326339 else false)
327- then aO.assetId
340+ then aP.assetId
328341 else throw("Only SIGN token accepted at the moment")
329- let aR = {
342+ let aS = {
330343 let v = getInteger(a, ("certification_fee_" + toBase58String(d)))
331344 if ($isInstanceOf(v, "Int"))
332345 then {
333- let aS = v
334- aS
346+ let aT = v
347+ aT
335348 }
336349 else throw("Price undefined in oracle")
337350 }
338- if ((aP != aR))
339- then throw(("Payment amount should be " + toString(aR)))
351+ if ((aQ != aS))
352+ then throw(("Payment amount should be " + toString(aS)))
340353 else {
341- let aT = t(at(D, aN))
342- if ((aT != ""))
354+ let aU = t(at(D, aO))
355+ if ((aU != ""))
343356 then throw("You already added this artwork on Sign Art")
344357 else {
345- let aU = t(aq(D))
346- if ((aU != ""))
358+ let aV = t(aq(D))
359+ if ((aV != ""))
347360 then throw("This artwork hash is already registered on Sign Art")
348361 else {
349- let aV = A(B, aN, D)
350- if (!(aV))
362+ let aW = A(B, aO, D)
363+ if (!(aW))
351364 then throw("Sign Certificate not found on Sign-web.app smart contract for this address.")
352- else if ((size(aI) == 0))
365+ else if ((size(aJ) == 0))
353366 then throw("Display CID cannot be empty")
354367 else if ((size(au) == 0))
355368 then throw("Title cannot be empty")
356369 else if ((size(au) > 100))
357370 then throw("100 Characters maximum for the name")
358371 else if ((size(av) > 1000))
359372 then throw("1000 Characters maximum for the description")
360373 else if ((size(av) == 0))
361374 then throw("Description cannot be empty")
362375 else {
363- let aW = split(aF, ",")
364- if ((size(aW) > 5))
376+ let aX = split(aG, ",")
377+ if ((size(aX) > 5))
365378 then throw("Tags should be maximum 5 single word separated by space.")
366379 else {
367- let aX = {
368- let v = getString(this, ("user_status_" + aN))
380+ let aY = {
381+ let v = getString(this, ("user_status_" + aO))
369382 if ($isInstanceOf(v, "String"))
370383 then {
371- let aY = v
372- aY
384+ let aZ = v
385+ aZ
373386 }
374387 else p
375388 }
376389 let az = lastBlock.timestamp
377- if (if (isDefined(aX))
378- then (aX == p)
390+ if (if (isDefined(aY))
391+ then (aY == p)
379392 else false)
380393 then throw("Please register this account first with \"User infos\" tab")
381- else if ((aX == n))
394+ else if ((aY == n))
382395 then throw("Your account is suspended")
383- else if ((aX == o))
396+ else if ((aY == o))
384397 then throw("Your account have been removed")
385- else if ((aH > 10))
398+ else if ((aI > 10))
386399 then throw("Maximum 10 editions per artwork")
387400 else if ((size(D) != 64))
388401 then throw("Hash should be sha256 string composed of 64 char.")
389- 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)]
402+ else [StringEntry(aq(D), aO), StringEntry(at(D, aO), Y), IntegerEntry(X(aO, Y), az), StringEntry(Z(aO, Y), au), StringEntry(aa(aO, Y), av), StringEntry(ab(aO, Y), aJ), StringEntry(ad(aO, Y), aL), StringEntry(ac(aO, Y), aK), StringEntry(ai(aO, Y), aM), StringEntry(aj(aO, Y), aN), StringEntry(al(aO, Y), aH), StringEntry(ak(aO, Y), aG), IntegerEntry(ae(aO, Y), aI), StringEntry(af(aO, Y), B), IntegerEntry(ag(aO, Y), 0), BooleanEntry(ah(aO, Y), false), StringEntry(ar(aO, B), Y), StringEntry("last_invoke_id", Y), StringEntry(ao(aO, Y), D), ScriptTransfer(Address(fromBase58String(c)), aQ, aR)]
390403 }
391404 }
392405 }
393406 }
394407 }
395408 }
396409 }
397410
398411
399412
400-@Callable(aE)
401-func updateArtwork (ap,au,av,aF,aG,aH,aI,aJ,aK,aL,aM) = {
402- let aZ = toBase58String(aE.transactionId)
403- let aN = toBase58String(aE.caller.bytes)
404- if (!(I(aI)))
413+@Callable(aF)
414+func updateArtwork (ap,au,av,aG,aH,aI,aJ,aK,aL,aM,aN) = {
415+ let ba = toBase58String(aF.transactionId)
416+ let aO = toBase58String(aF.caller.bytes)
417+ if (!(I(aJ)))
405418 then throw("Wrong Display CID length")
406- else if (!(I(aK)))
419+ else if (!(I(aL)))
407420 then throw("Wrong Export CID length")
408- else if (!(I(aM)))
421+ else if (!(I(aN)))
409422 then throw("Wrong Licence CID length")
410- else if (!(K(aJ)))
423+ else if (!(K(aK)))
411424 then throw("Export Hash should be 64 characters maximum")
412- else if (!(K(aL)))
425+ else if (!(K(aM)))
413426 then throw("Licence Hash should be 64 characters maximum")
414427 else {
415- let aT = t(Z(aN, ap))
416- if ((aT == ""))
428+ let aU = t(Z(aO, ap))
429+ if ((aU == ""))
417430 then throw("This entry doesn't exist or you are not the owner")
418431 else if ((size(au) == 0))
419432 then throw("Title cannot be empty")
420433 else if ((size(au) > 100))
421434 then throw("100 Characters maximum for the name")
422435 else if ((size(av) > 1000))
423436 then throw("1000 Characters maximum for the description")
424437 else if ((size(av) == 0))
425438 then throw("Description cannot be empty")
426439 else {
427- let ba = {
428- let v = getInteger(this, ag(aN, ap))
440+ let bb = {
441+ let v = getInteger(this, ag(aO, ap))
429442 if ($isInstanceOf(v, "Int"))
430443 then {
431444 let O = v
432445 if ((O == 0))
433446 then false
434447 else true
435448 }
436449 else false
437450 }
438- let aW = split(aF, ",")
439- if ((size(aW) > 5))
451+ let aX = split(aG, ",")
452+ if ((size(aX) > 5))
440453 then throw("Tags should be maximum 5 single word separated by space.")
441454 else {
442- let aX = {
443- let v = getString(this, ("user_status_" + aN))
455+ let aY = {
456+ let v = getString(this, ("user_status_" + aO))
444457 if ($isInstanceOf(v, "String"))
445458 then {
446- let aY = v
447- aY
459+ let aZ = v
460+ aZ
448461 }
449462 else p
450463 }
451- if (if (isDefined(aX))
452- then (aX == p)
464+ if (if (isDefined(aY))
465+ then (aY == p)
453466 else false)
454467 then throw("Please register this account first with \"User infos\" tab")
455- else if ((aX == n))
468+ else if ((aY == n))
456469 then throw("Your account is suspended")
457- else if ((aX == o))
470+ else if ((aY == o))
458471 then throw("Your account have been removed")
459- else if ((aH > 10))
472+ else if ((aI > 10))
460473 then throw("Maximum 10 editions per artwork")
461- else if (!(ba))
462- 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)]
474+ else if (!(bb))
475+ then [StringEntry(Z(aO, ap), au), StringEntry(aa(aO, ap), av), StringEntry(ab(aO, ap), aJ), StringEntry(ad(aO, ap), aL), StringEntry(ac(aO, ap), aK), StringEntry(aj(aO, ap), aN), StringEntry(ai(aO, ap), aM), IntegerEntry(ae(aO, ap), aI), StringEntry(ak(aO, ap), aG), StringEntry(al(aO, ap), aH), StringEntry("last_invoke_id", ba)]
463476 else throw("You cannot edit artwork that have already minted NFT(s)")
464477 }
465478 }
466479 }
467480 }
468481
469482
470483
471484 @Callable(y)
472485 func deleteArtwork (Y,aB) = {
473- let aN = toString(addressFromPublicKey(y.callerPublicKey))
486+ let aO = toString(addressFromPublicKey(y.callerPublicKey))
474487 let G = toBase58String(y.transactionId)
475- let bb = if (if ((aN == h))
488+ let bc = if (if ((aO == h))
476489 then true
477- else (aN == i))
490+ else (aO == i))
478491 then aB
479- else aN
480- let aT = {
481- let v = getString(this, Z(bb, Y))
492+ else aO
493+ let aU = {
494+ let v = getString(this, Z(bc, Y))
482495 if ($isInstanceOf(v, "String"))
483496 then {
484- let aY = v
485- aY
497+ let aZ = v
498+ aZ
486499 }
487500 else throw("No artwork matching this request or you are not allowed")
488501 }
489- let ba = {
490- let v = getInteger(this, ag(bb, Y))
502+ let bb = {
503+ let v = getInteger(this, ag(bc, Y))
491504 if ($isInstanceOf(v, "Int"))
492505 then {
493506 let O = v
494507 if ((O == 0))
495508 then false
496509 else true
497510 }
498511 else false
499512 }
500513 let D = {
501- let v = getString(this, ao(bb, Y))
514+ let v = getString(this, ao(bc, Y))
502515 if ($isInstanceOf(v, "String"))
503516 then {
504- let aY = v
505- aY
517+ let aZ = v
518+ aZ
506519 }
507520 else throw("No artwork hash matching this request")
508521 }
509522 let B = {
510- let v = getString(this, af(bb, Y))
523+ let v = getString(this, af(bc, Y))
511524 if ($isInstanceOf(v, "String"))
512525 then {
513- let aY = v
514- aY
526+ let aZ = v
527+ aZ
515528 }
516529 else throw("No SIGN ID matching this request")
517530 }
518- 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))]
519- if (if ((aN == h))
531+ let bd = [DeleteEntry(X(bc, Y)), DeleteEntry(Z(bc, Y)), DeleteEntry(aa(bc, Y)), DeleteEntry(ab(bc, Y)), DeleteEntry(ad(bc, Y)), DeleteEntry(ac(bc, Y)), DeleteEntry(ai(bc, Y)), DeleteEntry(aj(bc, Y)), DeleteEntry(al(bc, Y)), DeleteEntry(ak(bc, Y)), DeleteEntry(ae(bc, Y)), DeleteEntry(af(bc, Y)), DeleteEntry(ag(bc, Y)), DeleteEntry(ah(bc, Y)), StringEntry("last_invoke_id", G), DeleteEntry(aq(D)), DeleteEntry(ar(bc, B)), DeleteEntry(at(D, bc))]
532+ if (if ((aO == h))
520533 then true
521- else (aN == i))
522- then bc
523- else if (!(ba))
524- then bc
534+ else (aO == i))
535+ then bd
536+ else if (!(bb))
537+ then bd
525538 else throw("This artwork already have minted NFT, you cannot delete it")
526539 }
527540
528541
529542
530-@Callable(aE)
531-func sellArtwork (Y,aS,bd,aQ) = {
532- let G = toBase58String(aE.transactionId)
533- let aN = toBase58String(aE.caller.bytes)
534- let be = lastBlock.timestamp
535- let bf = t(ad(aN, Y))
536- if ((size(split(bf, "/")[0]) != 59))
543+@Callable(aF)
544+func sellArtwork (Y,aT,be,aR) = {
545+ let G = toBase58String(aF.transactionId)
546+ let aO = toBase58String(aF.caller.bytes)
547+ let bf = lastBlock.timestamp
548+ let bg = t(ad(aO, Y))
549+ if ((size(split(bg, "/")[0]) != 59))
537550 then throw("You cannot sell artwork with no export file")
538551 else {
539- let bg = t(ac(aN, Y))
540- if ((size(bg) != 64))
552+ let bh = t(ac(aO, Y))
553+ if ((size(bh) != 64))
541554 then throw("You cannot sell artwork with no export hash")
542- else if (if (if ((aQ != toBase58String(d)))
543- then (aQ != toBase58String(f))
555+ else if (if (if ((aR != toBase58String(d)))
556+ then (aR != toBase58String(f))
544557 else false)
545- then (aQ != toBase58String(e))
558+ then (aR != toBase58String(e))
546559 else false)
547560 then throw("Only SIGN, USDN or WAVES currency accepted at the moment")
548561 else {
549- let bh = {
550- let v = getString(this, Z(aN, Y))
562+ let bi = {
563+ let v = getString(this, Z(aO, Y))
551564 if ($isInstanceOf(v, "String"))
552565 then {
553- let aY = v
554- aY
566+ let aZ = v
567+ aZ
555568 }
556569 else throw("This artwork doesn't exit or you are not the owner")
557570 }
558- let aX = {
559- let v = getString(this, V(aN))
571+ let aY = {
572+ let v = getString(this, V(aO))
560573 if ($isInstanceOf(v, "String"))
561574 then {
562- let aY = v
563- aY
575+ let aZ = v
576+ aZ
564577 }
565578 else throw("Please register this account first")
566579 }
567- let bi = {
568- let v = getInteger(this, ag(aN, Y))
580+ let bj = {
581+ let v = getInteger(this, ag(aO, Y))
569582 if ($isInstanceOf(v, "Int"))
570583 then {
571- let bj = v
572- bj
584+ let bk = v
585+ bk
573586 }
574587 else 0
575588 }
576- let bk = {
577- let v = getInteger(this, ae(aN, Y))
589+ let bl = {
590+ let v = getInteger(this, ae(aO, Y))
578591 if ($isInstanceOf(v, "Int"))
579592 then {
580- let bj = v
581- bj
593+ let bk = v
594+ bk
582595 }
583596 else 0
584597 }
585- if (if ((bi != 0))
586- then (bi == bk)
598+ if (if ((bj != 0))
599+ then (bj == bl)
587600 else false)
588601 then throw("You reached the max edition allowed to sell for this edition.")
589- else if (if ((bi > 0))
590- then (bk != bd)
602+ else if (if ((bj > 0))
603+ then (bl != be)
591604 else false)
592605 then throw("You cannot change the maximum issuable anymore")
593- else if ((aX == n))
606+ else if ((aY == n))
594607 then throw("Your account is suspended")
595- else if ((aX == o))
608+ else if ((aY == o))
596609 then throw("Your account have been deleted")
597610 else {
598- let bl = if ((aS > 0))
611+ let bm = if ((aT > 0))
599612 then true
600613 else false
601-[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)]
614+[BooleanEntry(ah(aO, Y), bm), IntegerEntry(am(aO, Y), aT), IntegerEntry(ae(aO, Y), be), StringEntry(an(aO, Y), aR), StringEntry("last_invoke_id", G)]
602615 }
603616 }
604617 }
605618 }
606619
607620
608621
609-@Callable(aE)
610-func buyArtwork (Y,bm) = {
611- let G = toBase58String(aE.transactionId)
612- let aN = toBase58String(aE.caller.bytes)
613- let bn = x("total_nft_issued")
614- let B = t(af(bm, Y))
615- let bh = {
616- let v = getString(this, Z(bm, Y))
622+@Callable(aF)
623+func buyArtwork (Y,bn) = {
624+ let G = toBase58String(aF.transactionId)
625+ let aO = toBase58String(aF.caller.bytes)
626+ let bo = x("total_nft_issued")
627+ let B = t(af(bn, Y))
628+ let bi = {
629+ let v = getString(this, Z(bn, Y))
617630 if ($isInstanceOf(v, "String"))
618631 then {
619- let aY = v
620- aY
632+ let aZ = v
633+ aZ
621634 }
622635 else throw("This artwork doesn't exit")
623636 }
624- let bo = t(ab(bm, Y))
625- let bf = t(ad(bm, Y))
626- let bg = t(ac(bm, Y))
627- let bp = t(aj(bm, Y))
628- let bq = t(ai(bm, Y))
629- let av = take(t(aa(bm, Y)), 50)
630- let bi = x(ag(bm, Y))
631- let br = x(am(bm, Y))
632- let bs = z(ah(bm, Y))
633- let bt = t(an(bm, Y))
634- let bu = t(ao(bm, Y))
635- if ((br == 0))
637+ let bp = t(ab(bn, Y))
638+ let bg = t(ad(bn, Y))
639+ let bh = t(ac(bn, Y))
640+ let bq = t(aj(bn, Y))
641+ let br = t(ai(bn, Y))
642+ let av = take(t(aa(bn, Y)), 50)
643+ let bj = x(ag(bn, Y))
644+ let bs = x(am(bn, Y))
645+ let bt = z(ah(bn, Y))
646+ let bu = t(an(bn, Y))
647+ let bv = t(ao(bn, Y))
648+ if ((bs == 0))
636649 then throw("This artwork is not for sell")
637- else if (!(bs))
650+ else if (!(bt))
638651 then throw("This artwork is not for sale")
639652 else {
640- let bk = x(ae(bm, Y))
641- let aO = value(aE.payments[0])
642- let aP = value(aO.amount)
643- let aQ = if (if (isDefined(aO.assetId))
644- then (aO.assetId == fromBase58String(bt))
653+ let bl = x(ae(bn, Y))
654+ let aP = value(aF.payments[0])
655+ let aQ = value(aP.amount)
656+ let aR = if (if (isDefined(aP.assetId))
657+ then (aP.assetId == fromBase58String(bu))
645658 else false)
646- then aO.assetId
647- else throw((("Only " + bt) + " token id accepted at the moment"))
648- if ((bi == bk))
659+ then aP.assetId
660+ else throw((("Only " + bu) + " token id accepted at the moment"))
661+ if ((bj == bl))
649662 then throw("Cannot buy this artwork anymore, maximum editions reached")
650- else if ((br != aP))
651- then throw(((("Payment don't match seller price: " + toString(br)) + " vs ") + toString(aP)))
663+ else if ((bs != aQ))
664+ then throw(((("Payment don't match seller price: " + toString(bs)) + " vs ") + toString(aQ)))
652665 else {
653- let bv = (bi + 1)
654- let bw = lastBlock.timestamp
655- let bx = (((((((((((((((((((((((((((("{\"version\": 1,
656- \"creator\": \"" + bm) + "\",
666+ let bw = (bj + 1)
667+ let bx = lastBlock.timestamp
668+ let by = (((((((((((((((((((((((((((("{\"version\": 1,
669+ \"creator\": \"" + bn) + "\",
657670 \"artID\": \"") + Y) + "\",
658671 \"signID\": \"") + B) + "\",
659- \"artwork_name\": \"") + bh) + "\",
672+ \"artwork_name\": \"") + bi) + "\",
660673 \"artwork_desc\": \"") + av) + "\",
661- \"issue\": \"") + toString(bv)) + "/") + toString(bk)) + "\",
662- \"maxIssuable\": \"") + toString(bk)) + "\",
663- \"source_hash\": \"") + bu) + "\",
664- \"display_cid\": \"") + bo) + "\",
665- \"export_cid\": \"") + bf) + "\",
666- \"export_hash\": \"") + bg) + "\",
667- \"licence_cid\": \"") + bp) + "\",
668- \"licence_hash\": \"") + bq) + "\"}")
669- let by = Issue(("SA_" + toString((bn + 1))), bx, 1, 0, false)
670- let bz = calculateAssetId(by)
671- let bl = if ((bv == bk))
674+ \"issue\": \"") + toString(bw)) + "/") + toString(bl)) + "\",
675+ \"maxIssuable\": \"") + toString(bl)) + "\",
676+ \"source_hash\": \"") + bv) + "\",
677+ \"display_cid\": \"") + bp) + "\",
678+ \"export_cid\": \"") + bg) + "\",
679+ \"export_hash\": \"") + bh) + "\",
680+ \"licence_cid\": \"") + bq) + "\",
681+ \"licence_hash\": \"") + br) + "\"}")
682+ let bz = Issue(("SA_" + toString((bo + 1))), by, 1, 0, false)
683+ let bA = calculateAssetId(bz)
684+ let bm = if ((bw == bl))
672685 then false
673686 else true
674-[IntegerEntry(ag(bm, Y), bv), StringEntry(((((((("art_sold_" + toString(bv)) + "_of_") + toString(bk)) + "_") + Y) + "_") + bm), ((((((((aN + "_") + toString(bw)) + "_") + G) + "_") + toString(br)) + "_") + bt)), 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)]
687+[IntegerEntry(ag(bn, Y), bw), StringEntry(((((((("art_sold_" + toString(bw)) + "_of_") + toString(bl)) + "_") + Y) + "_") + bn), ((((((((aO + "_") + toString(bx)) + "_") + G) + "_") + toString(bs)) + "_") + bu)), IntegerEntry("total_nft_issued", (bo + 1)), BooleanEntry(ah(bn, Y), bm), StringEntry("last_invoke_id", G), bz, ScriptTransfer(Address(fromBase58String(bn)), aQ, aR), ScriptTransfer(aF.caller, 1, bA)]
675688 }
676689 }
677690 }
678691
679692
680693
681694 @Callable(y)
682695 func deleteUser (aB) = {
683696 let Q = toString(addressFromPublicKey(y.callerPublicKey))
684697 let G = toBase58String(y.transactionId)
685698 if (if ((Q == h))
686699 then true
687700 else (Q == i))
688701 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)]
689702 else throw("You are not allowed to do that")
690703 }
691704
692705

github/deemru/w8io/3ef1775 
346.84 ms