tx · 25UQFoRaT6JmnsqRLh2Z6oMpfADi4ZPEvjtcwXkikYjU

3Mw1nNFkcbFwJopvXanbCmB2qnACh4kCqRd:  -0.01000000 Waves

2021.06.14 09:30 [1569648] smart account 3Mw1nNFkcbFwJopvXanbCmB2qnACh4kCqRd > SELF 0.00000000 Waves

{ "type": 13, "id": "25UQFoRaT6JmnsqRLh2Z6oMpfADi4ZPEvjtcwXkikYjU", "fee": 1000000, "feeAssetId": null, "timestamp": 1623652199080, "version": 2, "chainId": 84, "sender": "3Mw1nNFkcbFwJopvXanbCmB2qnACh4kCqRd", "senderPublicKey": "12vfnHdZog5VyQSPk1fDx5mYAThFsH9b5VZTC8B9ZXt", "proofs": [ "4G2nHyi9C15V83gBs9SKZpFmFqZsihAjECv8vC25Wup3CYiyQNJLcnLzCgLGh9j67BT1h5NvCuEkG2BrQnc3999N" ], "script": "base64:AAIEAAAAAAAAAEAIAhIECgIBCBIFCgMIAQgSAwoBCBIDCgEIEgMKAQgSBQoDCAgIEgUKAwgICBIECgIICBIFCgMICAgSBQoDCAgIAAAAKgAAAAAIdW5pdFRlc3QGAAAAAAlvcmFjbGVGZWUJAQAAAAV2YWx1ZQAAAAEJAAQmAAAAAQIAAAAjM04yczVSdGFIUEJlbkNzeDJFQ2NvRlJiWUh4M25vWmhYVzEAAAAACHNpZ25EYXBwCQEAAAAFdmFsdWUAAAABCQAEJgAAAAECAAAAIzNOQzI4aFNpdnJtc1RVWGFZRDF4NkwzNjJKNFpwVW5vVGRCAAAAAAxhcnR3b3Jrc0RhcHAJAQAAAAV2YWx1ZQAAAAEJAAQmAAAAAQIAAAAjM05CeW5mYlhDMkthc3RVeGh1a2NNVWFFNThLOWNCZEI5VVkAAAAAC2ZlZVJlY2VpdmVyAgAAACMzTjFFNnRYZGRSb1ZhUmZROWRRM3ZnNUxhVzJmc2Q4SEt1YgAAAAAIdXNlckRhcHADBQAAAAh1bml0VGVzdAkBAAAABXZhbHVlAAAAAQkABCYAAAABAgAAACMzTXQ0UkdNRXlqU1dZQW9jVFBxZDU1d2RIUVFCM1BVMlVDbQkBAAAABXZhbHVlAAAAAQkABCYAAAABAgAAACMzTjh4WGFZakUyN0FhNzlkNWhIcmhIdTlIYUZvVEJtaERFagAAAAANd2hpdGVsaXN0RGFwcAkBAAAABXZhbHVlAAAAAQkABCYAAAABAgAAACMzTjZCYVYxZENCNHpnNDNnb05OSGFDdHZSMTNCY3lKNUdzcQAAAAALc2lnbkFzc2V0SWQBAAAAIOilarzKd0LycGEyNUpPRYO5uR7lmWcXw3Hq2QuhBK3rAAAAAAt1c2RuQXNzZXRJZAEAAAAgD/IcEqzkxDya7EYaqyWosOy6BytGzG2IcvC14pJJAbQAAAAADHdhdmVzQXNzZXRJZAEAAAAAAAAAAAVjaHJpcwIAAAAjM01zRzZqUE5DclZKVXRZQjdYSkJ4Uzd1dFdzWEFmNG45VnAAAAAAB3NpZ25DdXQAAAAAAAAAAAMAAAAACmNyZWF0b3JDdXQAAAAAAAAAAAoAAAAAC2RhcHBSdW5uaW5nCQEAAAALdmFsdWVPckVsc2UAAAACCQAEGwAAAAIFAAAACHVzZXJEYXBwAgAA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AAAAB0FkZHJlc3MAAAABCQACWQAAAAEFAAAAC2ZlZVJlY2VpdmVyBQAAAA1hbW91bnRGb3JTaWduBQAAAAdhc3NldElkBAAAAApjcmVhdG9yRmVlCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQUAAAALY3JlYXRvckFkZHIFAAAAEGFtb3VudEZvckNyZWF0b3IFAAAAB2Fzc2V0SWQEAAAACG93bmVyRmVlCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQUAAAAJc2FsZU93bmVyBQAAAA5hbW91bnRGb3JPd25lcgUAAAAHYXNzZXRJZAQAAAAMY29sbGVjdG9yTkZUCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQUAAAAGY2FsbGVyAAAAAAAAAAABCQACWQAAAAEFAAAABW5mdGlkCQAFFgAAAAQFAAAAB3NpZ25GZWUFAAAACmNyZWF0b3JGZWUFAAAACG93bmVyRmVlBQAAAAxjb2xsZWN0b3JORlQBAAAAD3ZhbGlkYXRlTWluU2VsbAAAAAIAAAAHYXNzZXRJZAAAAAVwcmljZQQAAAAMbWluU2VsbFdhdmVzAwUAAAAIdW5pdFRlc3QAAAAAAAAAAAoJAQAAABNnZXRJbnRCeUtGcm9tT3JhY2xlAAAAAQIAAAAOd2F2ZXNfbWluX3NlbGwEAAAAC21pblNlbGxVc2RuAAAAAAAAD0JABAAAAAttaW5TZWxsU2lnbgMFAAAACHVuaXRUZXN0AAAAAAAAAAABCQAAaAAAAAIFAAAAGWN1cnJlbnRDZXJ0aWZpY2F0aW9uUHJpY2UAAAAAAAAAAAIDAwMDAwkAAAAAAAACBQAAAAdhc3NldElkCQACWAAAAAEFAAAAC3VzZG5Bc3NldElkCQAAZgAAAAIFAAAAC21pblNlbGxVc2RuBQAAAAVwcmljZQcJAQAAAAIhPQAAAAIFAAAABXByaWNlAAAAAAAAAAAABwYDAwkAAAAAAAACBQAAAAdhc3NldElkCQACWAAAAAEFAAAAC3NpZ25Bc3NldElkCQAAZgAAAAIFAAAAC21pblNlbGxTaWduBQAAAAVwcmljZQcJAQAAAAIhPQAAAAIFAAAABXByaWNlAAAAAAAAAAAABwYDAwMJAAAAAAAAAgUAAAAHYXNzZXRJZAkAAlgAAAABBQAAAAx3YXZlc0Fzc2V0SWQGCQAAAAAAAAIFAAAAB2Fzc2V0SWQCAAAABVdBVkVTCQAAZgAAAAIFAAAADG1pblNlbGxXYXZlcwUAAAAFcHJpY2UHCQEAAAACIT0AAAACBQAAAAVwcmljZQAAAAAAAAAAAAcHBgAAAAoAAAABaQEAAAAHc2VsbE5GVAAAAAIAAAAFcHJpY2UAAAAFYXNzZXQEAAAACyR0MDgzNjQ4NDAzCQEAAAAMaWRDYWxsZXJEYXRlAAAAAQUAAAABaQQAAAACaWQIBQAAAAskdDA4MzY0ODQwMwAAAAJfMQQAAAAGY2FsbGVyCAUAAAALJHQwODM2NDg0MDMAAAACXzIEAAAABGRhdGUIBQAAAAskdDA4MzY0ODQwMwAAAAJfMwQAAAALJHQwODQxMTg0NDcJAQAAAAlpc1BheW1lbnQAAAABBQAAAAFpBAAAAAdwYXltZW50CAUAAAALJHQwODQxMTg0NDcAAAACXzEEAAAABmFtb3VudAgFAAAACyR0MDg0MTE4NDQ3AAAAAl8yBAAAAAVuZnRJZAMDCQEAAAAJaXNEZWZpbmVkAAAAAQgFAAAAB3BheW1lbnQAAAAHYXNzZXRJZAkBAAAADGlzU2lnbkFydE5GVAAAAAEJAQAAAAV2YWx1ZQAAAAEIBQAAAAdwYXltZW50AAAAB2Fzc2V0SWQHCQACWAAAAAEJAQAAAAV2YWx1ZQAAAAEIBQAAAAdwYXltZW50AAAAB2Fzc2V0SWQJAAACAAAAAQIAAAAbT25seSBTSUdOIEFydCBORlQgYWNjZXB0ZWQuBAAAAAskdDA4NjI5ODY5OAkBAAAADGNoZWNrTkZUSW5mbwAAAAEFAAAABW5mdElkBAAAAAppc1ZhbGlkTkZUCAUAAAALJHQwODYyOTg2OTgAAAACXzEEAAAABWFydElkCAUAAAALJHQwODYyOTg2OTgAAAACXzIEAAAAC2NyZWF0b3JBZGRyCAUAAAALJHQwODYyOTg2OTgAAAACXzMEAAAACWFydFNpZ25JRAgFAAAACyR0MDg2Mjk4Njk4AAAAAl80AwkAAAAAAAACCQABMQAAAAEFAAAACWFydFNpZ25JRAAAAAAAAAAAAAkAAAIAAAABAgAAAB1BcnR3b3JrIG5vdCBmb3VuZCBvbiBTSUdOIEFydAMJAQAAAAEhAAAAAQUAAAAKaXNWYWxpZE5GVAkAAAIAAAABAgAAABRTb21ldGhpbmcgd2VudCB3cm9uZwMJAQAAAAEhAAAAAQkBAAAAEGFjY2VwdGVkQXNzZXRJZHMAAAABBQAAAAVhc3NldAkAAAIAAAABAgAAACFPbmx5IFNJR04sIFVTRE4gb3IgV0FWRVMgYWNjZXB0ZWQDCQAAAAAAAAIFAAAABXByaWNlAAAAAAAAAAAACQAAAgAAAAECAAAAGFdyb25nIG1pbmltdW0gc2VsbCBwcmljZQMJAQAAAAEhAAAAAQkBAAAAD3ZhbGlkYXRlTWluU2VsbAAAAAIFAAAABWFzc2V0BQAAAAVwcmljZQkAAAIAAAABAgAAABhXcm9uZyBtaW5pbXVtIHNlbGwgcHJpY2UJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAADXNhbGUybmRfaW5mb18FAAAABmNhbGxlcgIAAAABXwUAAAAFbmZ0SWQCAAAAAV8FAAAABWFydElkAgAAAAFfBQAAAAtjcmVhdG9yQWRkcgIAAAAFX09QRU4JAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAGkAAAAAQUAAAAEZGF0ZQIAAAABXwkAAaQAAAABBQAAAAVwcmljZQIAAAABXwUAAAAFYXNzZXQCAAAAAV8FAAAABW5mdElkAgAAAAFfBQAAAAVhcnRJZAIAAAABXwUAAAALY3JlYXRvckFkZHICAAAAAV8FAAAAAmlkCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAD3NhbGUybmRfc3RhdHVzXwUAAAAGY2FsbGVyAgAAAAFfBQAAAAVuZnRJZAIAAAAET1BFTgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQABLAAAAAICAAAAFmN1cnJlbnRfb3duZXJfb25fZGFwcF8FAAAABW5mdElkBQAAAAZjYWxsZXIFAAAAA25pbAAAAAFpAQAAAA91cGRhdGVTYWxlUHJpY2UAAAADAAAABW5mdGlkAAAABXByaWNlAAAABWFzc2V0BAAAAAskdDA5NjEyOTY1MQkBAAAADGlkQ2FsbGVyRGF0ZQAAAAEFAAAAAWkEAAAAAmlkCAUAAAALJHQwOTYxMjk2NTEAAAACXzEEAAAABmNhbGxlcggFAAAACyR0MDk2MTI5NjUxAAAAAl8yBAAAAARkYXRlCAUAAAALJHQwOTYxMjk2NTEAAAACXzMEAAAACyR0MDk2NTk5NzI4CQEAAAAMY2hlY2tORlRJbmZvAAAAAQUAAAAFbmZ0aWQEAAAACmlzVmFsaWRORlQIBQAAAAskdDA5NjU5OTcyOAAAAAJfMQQAAAAFYXJ0SWQIBQAAAAskdDA5NjU5OTcyOAAAAAJfMgQAAAALY3JlYXRvckFkZHIIBQAAAAskdDA5NjU5OTcyOAAAAAJfMwQAAAAJYXJ0U2lnbklECAUAAAALJHQwOTY1OTk3MjgAAAACXzQDCQAAAAAAAAIJAAExAAAAAQUAAAAJYXJ0U2lnbklEAAAAAAAAAAAACQAAAgAAAAECAAAAMEFydHdvcmsgbm90IGZvdW5kIG9uIFNJR04gQXJ0LCBjYW5jZWwgeW91ciBzYWxlLgMJAQAAAAEhAAAAAQUAAAAKaXNWYWxpZE5GVAkAAAIAAAABAgAAABRTb21ldGhpbmcgd2VudCB3cm9uZwQAAAAJc2FsZU93bmVyCQEAAAAJZ2V0U3RyQnlLAAAAAQkAASwAAAACAgAAABZjdXJyZW50X293bmVyX29uX2RhcHBfBQAAAAVuZnRpZAMJAQAAAAIhPQAAAAIFAAAACXNhbGVPd25lcgUAAAAGY2FsbGVyCQAAAgAAAAECAAAAFllvdSBkb24ndCBvd24gdGhpcyBORlQEAAAACnNhbGVTdGF0dXMJAQAAAAlnZXRTdHJCeUsAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAA9zYWxlMm5kX3N0YXR1c18FAAAABmNhbGxlcgIAAAABXwUAAAAFbmZ0aWQDCQEAAAACIT0AAAACBQAAAApzYWxlU3RhdHVzAgAAAARPUEVOCQAAAgAAAAECAAAAD1NhbGUgbm90IGFjdGl2ZQMJAQAAAAEhAAAAAQkBAAAAEGFjY2VwdGVkQXNzZXRJZHMAAAABBQAAAAVhc3NldAkAAAIAAAABAgAAACFPbmx5IFNJR04sIFVTRE4gb3IgV0FWRVMgYWNjZXB0ZWQDCQAAAAAAAAIFAAAABXByaWNlAAAAAAAAAAAACQAAAgAAAAECAAAAGFdyb25nIG1pbmltdW0gc2VsbCBwcmljZQMJAQAAAAEhAAAAAQkBAAAAD3ZhbGlkYXRlTWluU2VsbAAAAAIFAAAABWFzc2V0BQAAAAVwcmljZQkAAAIAAAABAgAAABhXcm9uZyBtaW5pbXVtIHNlbGwgcHJpY2UEAAAAB3NhbGVLZXkJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAANc2FsZTJuZF9pbmZvXwUAAAAGY2FsbGVyAgAAAAFfBQAAAAVuZnRpZAIAAAABXwUAAAAFYXJ0SWQCAAAAAV8FAAAAC2NyZWF0b3JBZGRyBAAAAAhzYWxlSW5mbwkABLUAAAACCQEAAAAJZ2V0U3RyQnlLAAAAAQkAASwAAAACBQAAAAdzYWxlS2V5AgAAAAVfT1BFTgIAAAABXwkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQABLAAAAAIFAAAAB3NhbGVLZXkCAAAABV9PUEVOCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABkQAAAAIFAAAACHNhbGVJbmZvAAAAAAAAAAAAAgAAAAFfCQABpAAAAAEFAAAABXByaWNlAgAAAAFfBQAAAAVhc3NldAIAAAABXwkAAZEAAAACBQAAAAhzYWxlSW5mbwAAAAAAAAAAAwIAAAABXwkAAZEAAAACBQAAAAhzYWxlSW5mbwAAAAAAAAAABAIAAAABXwkAAZEAAAACBQAAAAhzYWxlSW5mbwAAAAAAAAAABQIAAAABXwkAAZEAAAACBQAAAAhzYWxlSW5mbwAAAAAAAAAABgUAAAADbmlsAAAAAWkBAAAACmNhbmNlbFNhbGUAAAABAAAABW5mdGlkBAAAAA0kdDAxMDkwNDEwOTQzCQEAAAAMaWRDYWxsZXJEYXRlAAAAAQUAAAABaQQAAAACaWQIBQAAAA0kdDAxMDkwNDEwOTQzAAAAAl8xBAAAAAZjYWxsZXIIBQAAAA0kdDAxMDkwNDEwOTQzAAAAAl8yBAAAAARkYXRlCAUAAAANJHQwMTA5MDQxMDk0MwAAAAJfMwQAAAANJHQwMTA5NTExMTE3NgkBAAAADGNoZWNrTkZUSW5mbwAAAAEFAAAABW5mdGlkBAAAAAppc1ZhbGlkTkZUCAUAAAANJHQwMTA5NTExMTE3NgAAAAJfMQQAAAAFYXJ0SWQIBQAAAA0kdDAxMDk1MTExMTc2AAAAAl8yBAAAAAtjcmVhdG9yQWRkcggFAAAADSR0MDEwOTUxMTExNzYAAAACXzMEAAAACWFydFNpZ25JRAgFAAAADSR0MDEwOTUxMTExNzYAAAACXzQEAAAACXNhbGVPd25lcgkBAAAACWdldFN0ckJ5SwAAAAEJAAEsAAAAAgIAAAAWY3VycmVudF9vd25lcl9vbl9kYXBwXwUAAAAFbmZ0aWQDCQEAAAACIT0AAAACBQAAAAlzYWxlT3duZXIFAAAABmNhbGxlcgkAAAIAAAABAgAAABZZb3UgZG9uJ3Qgb3duIHRoaXMgTkZUBAAAAApzYWxlU3RhdHVzCQEAAAAJZ2V0U3RyQnlLAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAPc2FsZTJuZF9zdGF0dXNfBQAAAAZjYWxsZXICAAAAAV8FAAAABW5mdGlkAwkBAAAAAiE9AAAAAgUAAAAKc2FsZVN0YXR1cwIAAAAET1BFTgkAAAIAAAABAgAAAA9TYWxlIG5vdCBhY3RpdmUEAAAAB3NhbGVLZXkJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAANc2FsZTJuZF9pbmZvXwUAAAAGY2FsbGVyAgAAAAFfBQAAAAVuZnRpZAIAAAABXwUAAAAFYXJ0SWQCAAAAAV8FAAAAC2NyZWF0b3JBZGRyBAAAAAhzYWxlSW5mbwkBAAAACWdldFN0ckJ5SwAAAAEJAAEsAAAAAgUAAAAHc2FsZUtleQIAAAAFX09QRU4JAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQkAASwAAAACBQAAAAdzYWxlS2V5AgAAAAVfT1BFTgkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAA9zYWxlMm5kX3N0YXR1c18FAAAABmNhbGxlcgIAAAABXwUAAAAFbmZ0aWQJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQkAASwAAAACAgAAABZjdXJyZW50X293bmVyX29uX2RhcHBfBQAAAAVuZnRpZAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACBQAAAAdzYWxlS2V5AgAAAAFfBQAAAAJpZAIAAAAKX0NBTkNFTExFRAkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACBQAAAAhzYWxlSW5mbwIAAAALX0NBTkNFTExFRF8JAAGkAAAAAQUAAAAEZGF0ZQIAAAABXwUAAAACaWQJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEFAAAABmNhbGxlcgAAAAAAAAAAAQkAAlkAAAABBQAAAAVuZnRpZAUAAAADbmlsAAAAAWkBAAAABmJ1eU5GVAAAAAEAAAAFbmZ0aWQEAAAADSR0MDEyMDExMTIwNTAJAQAAAAxpZENhbGxlckRhdGUAAAABBQAAAAFpBAAAAAJpZAgFAAAADSR0MDEyMDExMTIwNTAAAAACXzEEAAAABmNhbGxlcggFAAAADSR0MDEyMDExMTIwNTAAAAACXzIEAAAABGRhdGUIBQAAAA0kdDAxMjAxMTEyMDUwAAAAAl8zBAAAAAlzYWxlT3duZXIJAQAAABVnZXRTYWxlT3duZXJBbmRTdGF0dXMAAAABBQAAAAVuZnRpZAQAAAANJHQwMTIxMDYxMjE3NQkBAAAADGNoZWNrTkZUSW5mbwAAAAEFAAAABW5mdGlkBAAAAAppc1ZhbGlkTkZUCAUAAAANJHQwMTIxMDYxMjE3NQAAAAJfMQQAAAAFYXJ0SWQIBQAAAA0kdDAxMjEwNjEyMTc1AAAAAl8yBAAAAAtjcmVhdG9yQWRkcggFAAAADSR0MDEyMTA2MTIxNzUAAAACXzMEAAAACWFydFNpZ25JRAgFAAAADSR0MDEyMTA2MTIxNzUAAAACXzQDCQAAAAAAAAIJAAExAAAAAQUAAAAJYXJ0U2lnbklEAAAAAAAAAAAACQAAAgAAAAECAAAAMEFydHdvcmsgbm90IGZvdW5kIG9uIFNJR04gQXJ0LCBjYW5jZWwgeW91ciBzYWxlLgMJAQAAAAEhAAAAAQUAAAAKaXNWYWxpZE5GVAkAAAIAAAABAgAAABRTb21ldGhpbmcgd2VudCB3cm9uZwQAAAAHc2FsZUtleQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAA1zYWxlMm5kX2luZm9fBQAAAAlzYWxlT3duZXICAAAAAV8FAAAABW5mdGlkAgAAAAFfBQAAAAVhcnRJZAIAAAABXwUAAAALY3JlYXRvckFkZHIEAAAACHNhbGVJbmZvCQEAAAAJZ2V0U3RyQnlLAAAAAQkAASwAAAACBQAAAAdzYWxlS2V5AgAAAAVfT1BFTgMJAAAAAAAAAgkAATEAAAABBQAAAAhzYWxlSW5mbwAAAAAAAAAAAAkAAAIAAAABAgAAAA9TYWxlIE5vdCBmb3VuZCEEAAAADXNhbGVJbmZvQXJyYXkJAAS1AAAAAgUAAAAIc2FsZUluZm8CAAAAAV8DCQAAAAAAAAIJAAS2AAAAAQkAAZEAAAACBQAAAA1zYWxlSW5mb0FycmF5AAAAAAAAAAABAAAAAAAAAAAACQAAAgAAAAECAAAACk9mZmVyIG9ubHkEAAAADSR0MDEyNjUzMTI2ODkJAQAAAAlpc1BheW1lbnQAAAABBQAAAAFpBAAAAAdwYXltZW50CAUAAAANJHQwMTI2NTMxMjY4OQAAAAJfMQQAAAAGYW1vdW50CAUAAAANJHQwMTI2NTMxMjY4OQAAAAJfMgQAAAAPcGF5bWVudEFzc2V0U3RyAwkBAAAACWlzRGVmaW5lZAAAAAEIBQAAAAdwYXltZW50AAAAB2Fzc2V0SWQJAAJYAAAAAQkBAAAABXZhbHVlAAAAAQgFAAAAB3BheW1lbnQAAAAHYXNzZXRJZAIAAAAAAwMJAQAAAAIhPQAAAAIJAAGRAAAAAgUAAAANc2FsZUluZm9BcnJheQAAAAAAAAAAAQkAAaQAAAABBQAAAAZhbW91bnQGCQEAAAACIT0AAAACCQABkQAAAAIFAAAADXNhbGVJbmZvQXJyYXkAAAAAAAAAAAIFAAAAD3BheW1lbnRBc3NldFN0cgkAAAIAAAABAgAAABpQYXltZW50IGluZm9zIGRvbid0IG1hdGNoLgQAAAANYW1vdW50Rm9yU2lnbgkAAGsAAAADBQAAAAZhbW91bnQFAAAAB3NpZ25DdXQAAAAAAAAAAGQEAAAAEGFtb3VudEZvckNyZWF0b3IJAABrAAAAAwUAAAAGYW1vdW50BQAAAApjcmVhdG9yQ3V0AAAAAAAAAABkBAAAAA5hbW91bnRGb3JPd25lcgkAAGUAAAACBQAAAAZhbW91bnQJAABkAAAAAgUAAAANYW1vdW50Rm9yU2lnbgUAAAAQYW1vdW50Rm9yQ3JlYXRvcgQAAAANJHQwMTMyMDAxMzMyOAkBAAAADHNldFRyYW5zZmVycwAAAAYFAAAABmFtb3VudAgFAAAAB3BheW1lbnQAAAAHYXNzZXRJZAUAAAAFbmZ0aWQFAAAAC2NyZWF0b3JBZGRyBQAAAAlzYWxlT3duZXIFAAAABmNhbGxlcgQAAAAHc2lnbkZlZQgFAAAADSR0MDEzMjAwMTMzMjgAAAACXzEEAAAACmNyZWF0b3JGZWUIBQAAAA0kdDAxMzIwMDEzMzI4AAAAAl8yBAAAAAhvd25lckZlZQgFAAAADSR0MDEzMjAwMTMzMjgAAAACXzMEAAAADGNvbGxlY3Rvck5GVAgFAAAADSR0MDEzMjAwMTMzMjgAAAACXzQJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQkAASwAAAACBQAAAAdzYWxlS2V5AgAAAAVfT1BFTgkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAA9zYWxlMm5kX3N0YXR1c18FAAAACXNhbGVPd25lcgIAAAABXwUAAAAFbmZ0aWQJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQkAASwAAAACAgAAABZjdXJyZW50X293bmVyX29uX2RhcHBfBQAAAAVuZnRpZAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACBQAAAAdzYWxlS2V5AgAAAAFfBQAAAAJpZAIAAAAHX0NMT1NFRAkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkABLkAAAACBQAAAA1zYWxlSW5mb0FycmF5AgAAAAFfAgAAAAhfQ0xPU0VEXwkAAaQAAAABBQAAAARkYXRlAgAAAAFfBQAAAAJpZAIAAAABXwUAAAAGY2FsbGVyCQAETAAAAAIFAAAAB3NpZ25GZWUJAARMAAAAAgUAAAAKY3JlYXRvckZlZQkABEwAAAACBQAAAAhvd25lckZlZQkABEwAAAACBQAAAAxjb2xsZWN0b3JORlQFAAAAA25pbAAAAAFpAQAAAAhzZXRPZmZlcgAAAAEAAAAFbmZ0aWQEAAAADSR0MDEzNzQ3MTM3ODkJAQAAAAxpZENhbGxlckRhdGUAAAABBQAAAAFpBAAAAAJpZAgFAAAADSR0MDEzNzQ3MTM3ODkAAAACXzEEAAAACm9mZmVyT3duZXIIBQAAAA0kdDAxMzc0NzEzNzg5AAAAAl8yBAAAAARkYXRlCAUAAAANJHQwMTM3NDcxMzc4OQAAAAJfMwQAAAANJHQwMTM3OTcxMzgzMwkBAAAACWlzUGF5bWVudAAAAAEFAAAAAWkEAAAAB3BheW1lbnQIBQAAAA0kdDAxMzc5NzEzODMzAAAAAl8xBAAAAAZhbW91bnQIBQAAAA0kdDAxMzc5NzEzODMzAAAAAl8yBAAAAAdhc3NldElkAwkBAAAAASEAAAABCQEAAAAJaXNEZWZpbmVkAAAAAQgFAAAAB3BheW1lbnQAAAAHYXNzZXRJZAIAAAAFV0FWRVMJAAJYAAAAAQkBAAAABXZhbHVlAAAAAQgFAAAAB3BheW1lbnQAAAAHYXNzZXRJZAMJAQAAAAEhAAAAAQkBAAAAEGFjY2VwdGVkQXNzZXRJZHMAAAABBQAAAAdhc3NldElkCQAAAgAAAAECAAAAEmFzc2V0IG5vdCBhY2NlcHRlZAMJAAAAAAAAAgUAAAAGYW1vdW50AAAAAAAAAAAACQAAAgAAAAECAAAAFk9mZmVyIG9mIDAgbm90IGFsbG93ZWQDCQEAAAABIQAAAAEJAQAAAA92YWxpZGF0ZU1pblNlbGwAAAACBQAAAAdhc3NldElkBQAAAAZhbW91bnQJAAACAAAAAQIAAAAYV3JvbmcgbWluaW11bSBzZWxsIHByaWNlBAAAAA0kdDAxNDE3MzE0MjMxCQEAAAAMY2hlY2tORlRJbmZvAAAAAQUAAAAFbmZ0aWQEAAAACmlzVmFsaWRORlQIBQAAAA0kdDAxNDE3MzE0MjMxAAAAAl8xBAAAAAVhcnRJZAgFAAAADSR0MDE0MTczMTQyMzEAAAACXzIEAAAAC2NyZWF0b3JBZGRyCAUAAAANJHQwMTQxNzMxNDIzMQAAAAJfMwMJAQAAAAEhAAAAAQUAAAAKaXNWYWxpZE5GVAkAAAIAAAABAgAAABRTb21ldGhpbmcgd2VudCB3cm9uZwQAAAAJc2FsZU93bmVyCQEAAAAVZ2V0U2FsZU93bmVyQW5kU3RhdHVzAAAAAQUAAAAFbmZ0aWQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAACW9mZmVyMm5kXwUAAAAKb2ZmZXJPd25lcgIAAAABXwUAAAAFbmZ0aWQCAAAAAV8FAAAACXNhbGVPd25lcgIAAAABXwUAAAACaWQCAAAABV9PUEVOCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAAaQAAAABBQAAAARkYXRlAgAAAAFfCQABpAAAAAEFAAAABmFtb3VudAIAAAABXwUAAAAHYXNzZXRJZAIAAAABXwUAAAAFbmZ0aWQCAAAAAV8FAAAABWFydElkAgAAAAFfBQAAAAtjcmVhdG9yQWRkcgIAAAABXwUAAAAKb2ZmZXJPd25lcgIAAAABXwUAAAACaWQFAAAAA25pbAAAAAFpAQAAAAthY2NlcHRPZmZlcgAAAAMAAAAFbmZ0aWQAAAAHb2ZmZXJJZAAAAApvZmZlck93bmVyBAAAAA0kdDAxNDc4MDE0ODUxCQEAAAAMaWRDYWxsZXJEYXRlAAAAAQUAAAABaQQAAAACaWQIBQAAAA0kdDAxNDc4MDE0ODUxAAAAAl8xBAAAAAZjYWxsZXIIBQAAAA0kdDAxNDc4MDE0ODUxAAAAAl8yBAAAAARkYXRlCAUAAAANJHQwMTQ3ODAxNDg1MQAAAAJfMwQAAAAJc2FsZU93bmVyCQEAAAAVZ2V0U2FsZU93bmVyQW5kU3RhdHVzAAAAAQUAAAAFbmZ0aWQDCQEAAAACIT0AAAACBQAAAAZjYWxsZXIFAAAACXNhbGVPd25lcgkAAAIAAAABAgAAABlZb3UgY2Fubm90IGRvIHRoaXMgYWN0aW9uBAAAAAZiaWRLZXkJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAJb2ZmZXIybmRfBQAAAApvZmZlck93bmVyAgAAAAFfBQAAAAVuZnRpZAIAAAABXwUAAAAJc2FsZU93bmVyAgAAAAFfBQAAAAdvZmZlcklkBAAAAAhiaWRWYWx1ZQkBAAAACWdldFN0ckJ5SwAAAAEJAAEsAAAAAgUAAAAGYmlkS2V5AgAAAAVfT1BFTgMJAAAAAAAAAgUAAAAIYmlkVmFsdWUCAAAAAAkAAAIAAAABAgAAAB9PZmZlciBub3QgZm91bmQgb3Igbm90IGZvciBzYWxlBAAAAA0kdDAxNTE4MTE1MjM5CQEAAAAMY2hlY2tORlRJbmZvAAAAAQUAAAAFbmZ0aWQEAAAACmlzVmFsaWRORlQIBQAAAA0kdDAxNTE4MTE1MjM5AAAAAl8xBAAAAAVhcnRJZAgFAAAADSR0MDE1MTgxMTUyMzkAAAACXzIEAAAAC2NyZWF0b3JBZGRyCAUAAAANJHQwMTUxODExNTIzOQAAAAJfMwMJAQAAAAEhAAAAAQUAAAAKaXNWYWxpZE5GVAkAAAIAAAABAgAAABRTb21ldGhpbmcgd2VudCB3cm9uZwQAAAAHc2FsZUtleQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAA1zYWxlMm5kX2luZm9fBQAAAAlzYWxlT3duZXICAAAAAV8FAAAABW5mdGlkAgAAAAFfBQAAAAVhcnRJZAIAAAABXwUAAAALY3JlYXRvckFkZHIEAAAACXNhbGVWYWx1ZQkBAAAACWdldFN0ckJ5SwAAAAEJAAEsAAAAAgUAAAAHc2FsZUtleQIAAAAFX09QRU4DCQAAAAAAAAIJAAExAAAAAQUAAAAJc2FsZVZhbHVlAAAAAAAAAAAACQAAAgAAAAECAAAAD1NhbGUgTm90IGZvdW5kIQQAAAAKc2FsZVZhbEFycgkABLUAAAACBQAAAAlzYWxlVmFsdWUCAAAAAV8EAAAADSR0MDE1NTk0MTU2NDkJAQAAAApnZXRCaWREYXRhAAAAAQUAAAAGYmlkS2V5BAAAAApiaWREYXRhQXJyCAUAAAANJHQwMTU1OTQxNTY0OQAAAAJfMQQAAAAHYXNzZXRJZAgFAAAADSR0MDE1NTk0MTU2NDkAAAACXzIEAAAAB2JpZERhdGEIBQAAAA0kdDAxNTU5NDE1NjQ5AAAAAl8zBAAAAAZhbW91bnQJAQAAAAV2YWx1ZQAAAAEJAAS2AAAAAQkAAZEAAAACBQAAAApiaWREYXRhQXJyAAAAAAAAAAABBAAAAA0kdDAxNTcwNjE1ODMzCQEAAAAMc2V0VHJhbnNmZXJzAAAABgUAAAAGYW1vdW50BQAAAAdhc3NldElkBQAAAAVuZnRpZAUAAAALY3JlYXRvckFkZHIFAAAACXNhbGVPd25lcgkAAZEAAAACBQAAAApiaWREYXRhQXJyAAAAAAAAAAAGBAAAAAdzaWduRmVlCAUAAAANJHQwMTU3MDYxNTgzMwAAAAJfMQQAAAAKY3JlYXRvckZlZQgFAAAADSR0MDE1NzA2MTU4MzMAAAACXzIEAAAACG93bmVyRmVlCAUAAAANJHQwMTU3MDYxNTgzMwAAAAJfMwQAAAAMY29sbGVjdG9yTkZUCAUAAAANJHQwMTU3MDYxNTgzMwAAAAJfNAkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABCQABLAAAAAIFAAAAB3NhbGVLZXkCAAAABV9PUEVOCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEJAAEsAAAAAgUAAAAGYmlkS2V5AgAAAAVfT1BFTgkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAA9zYWxlMm5kX3N0YXR1c18FAAAACXNhbGVPd25lcgIAAAABXwUAAAAFbmZ0aWQJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQkAASwAAAACAgAAABZjdXJyZW50X293bmVyX29uX2RhcHBfBQAAAAVuZnRpZAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQABLAAAAAIFAAAABmJpZEtleQIAAAAHX0NMT1NFRAkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACBQAAAAhiaWRWYWx1ZQIAAAAIX0NMT1NFRF8JAAGkAAAAAQUAAAAEZGF0ZQIAAAABXwUAAAACaWQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgUAAAAHc2FsZUtleQIAAAABXwUAAAACaWQCAAAAB19DTE9TRUQJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkABLkAAAACBQAAAApzYWxlVmFsQXJyAgAAAAFfAgAAAA5fQ0xPU0VELU9GRkVSXwkAAaQAAAABBQAAAARkYXRlAgAAAAFfBQAAAAJpZAIAAAABXwUAAAAKb2ZmZXJPd25lcgIAAAABXwkAAaQAAAABBQAAAAZhbW91bnQCAAAAAV8JAAJYAAAAAQkBAAAABXZhbHVlAAAAAQUAAAAHYXNzZXRJZAkABEwAAAACBQAAAAdzaWduRmVlCQAETAAAAAIFAAAACmNyZWF0b3JGZWUJAARMAAAAAgUAAAAIb3duZXJGZWUJAARMAAAAAgUAAAAMY29sbGVjdG9yTkZUBQAAAANuaWwAAAABaQEAAAALY2FuY2VsT2ZmZXIAAAADAAAABW5mdGlkAAAAB29mZmVySWQAAAAJc2FsZU93bmVyBAAAAA0kdDAxNjUwMDE2NTYyCQEAAAAMaWRDYWxsZXJEYXRlAAAAAQUAAAABaQQAAAACaWQIBQAAAA0kdDAxNjUwMDE2NTYyAAAAAl8xBAAAAAZjYWxsZXIIBQAAAA0kdDAxNjUwMDE2NTYyAAAAAl8yBAAAAARkYXRlCAUAAAANJHQwMTY1MDAxNjU2MgAAAAJfMwQAAAAGYmlkS2V5CQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAACW9mZmVyMm5kXwUAAAAGY2FsbGVyAgAAAAFfBQAAAAVuZnRpZAIAAAABXwUAAAAJc2FsZU93bmVyAgAAAAFfBQAAAAdvZmZlcklkBAAAAA0kdDAxNjY0MDE2Njk1CQEAAAAKZ2V0QmlkRGF0YQAAAAEFAAAABmJpZEtleQQAAAAKYmlkRGF0YUFycggFAAAADSR0MDE2NjQwMTY2OTUAAAACXzEEAAAAB2Fzc2V0SWQIBQAAAA0kdDAxNjY0MDE2Njk1AAAAAl8yBAAAAAdiaWREYXRhCAUAAAANJHQwMTY2NDAxNjY5NQAAAAJfMwkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABCQABLAAAAAIFAAAABmJpZEtleQIAAAAFX09QRU4JAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkAASwAAAACBQAAAAZiaWRLZXkCAAAACl9DQU5DRUxMRUQJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgUAAAAHYmlkRGF0YQIAAAALX0NBTkNFTExFRF8JAAGkAAAAAQUAAAAEZGF0ZQIAAAABXwUAAAACaWQJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEFAAAABmNhbGxlcgkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAACmJpZERhdGFBcnIAAAAAAAAAAAEFAAAAB2Fzc2V0SWQFAAAAA25pbAAAAAFpAQAAAAttYWtlUmVxdWVzdAAAAAIAAAAFYXJ0SWQAAAALY3JlYXRvckFkZHIEAAAADSR0MDE3MDMzMTcwNzcJAQAAAAxpZENhbGxlckRhdGUAAAABBQAAAAFpBAAAAAJpZAgFAAAADSR0MDE3MDMzMTcwNzcAAAACXzEEAAAADHJlcXVlc3RPd25lcggFAAAADSR0MDE3MDMzMTcwNzcAAAACXzIEAAAABGRhdGUIBQAAAA0kdDAxNzAzMzE3MDc3AAAAAl8zBAAAAA0kdDAxNzA4NTE3MTIxCQEAAAAJaXNQYXltZW50AAAAAQUAAAABaQQAAAAHcGF5bWVudAgFAAAADSR0MDE3MDg1MTcxMjEAAAACXzEEAAAABmFtb3VudAgFAAAADSR0MDE3MDg1MTcxMjEAAAACXzIEAAAAB2Fzc2V0SWQDCQEAAAABIQAAAAEJAQAAAAlpc0RlZmluZWQAAAABCAUAAAAHcGF5bWVudAAAAAdhc3NldElkAgAAAAVXQVZFUwkAAlgAAAABCQEAAAAFdmFsdWUAAAABCAUAAAAHcGF5bWVudAAAAAdhc3NldElkAwkBAAAAASEAAAABCQEAAAAQYWNjZXB0ZWRBc3NldElkcwAAAAEFAAAAB2Fzc2V0SWQJAAACAAAAAQIAAAASYXNzZXQgbm90IGFjY2VwdGVkAwkBAAAAASEAAAABCQEAAAAPdmFsaWRhdGVNaW5TZWxsAAAAAgUAAAAHYXNzZXRJZAUAAAAGYW1vdW50CQAAAgAAAAECAAAAGFdyb25nIG1pbmltdW0gc2VsbCBwcmljZQQAAAAKaXNWYWxpZEFSVAkBAAAADWNoZWNrQVJURXhpc3QAAAACBQAAAAVhcnRJZAUAAAALY3JlYXRvckFkZHIDCQEAAAABIQAAAAEFAAAACmlzVmFsaWRBUlQJAAACAAAAAQIAAAAUU29tZXRoaW5nIHdlbnQgd3JvbmcJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAC3JlcXVlc3QybmRfBQAAAAxyZXF1ZXN0T3duZXICAAAAAV8FAAAAC2NyZWF0b3JBZGRyAgAAAAFfBQAAAAVhcnRJZAIAAAABXwUAAAACaWQCAAAABV9PUEVOCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAGkAAAAAQUAAAAEZGF0ZQIAAAABXwkAAaQAAAABBQAAAAZhbW91bnQCAAAAAV8JAAJYAAAAAQkBAAAABXZhbHVlAAAAAQgFAAAAB3BheW1lbnQAAAAHYXNzZXRJZAIAAAABXwUAAAAFYXJ0SWQCAAAAAV8FAAAADHJlcXVlc3RPd25lcgIAAAABXwUAAAACaWQFAAAAA25pbAAAAAFpAQAAAAtmaWxsUmVxdWVzdAAAAAMAAAAFYXJ0SWQAAAAMcmVxdWVzdE93bmVyAAAAB29mZmVySWQEAAAADSR0MDE3OTQ1MTc5ODcJAQAAAAxpZENhbGxlckRhdGUAAAABBQAAAAFpBAAAAAJpZAgFAAAADSR0MDE3OTQ1MTc5ODcAAAACXzEEAAAACXNhbGVPd25lcggFAAAADSR0MDE3OTQ1MTc5ODcAAAACXzIEAAAABGRhdGUIBQAAAA0kdDAxNzk0NTE3OTg3AAAAAl8zBAAAAA0kdDAxNzk5MzE4MDM3CQEAAAAJaXNQYXltZW50AAAAAQUAAAABaQQAAAAHcGF5bWVudAgFAAAADSR0MDE3OTkzMTgwMzcAAAACXzEEAAAADmFtb3VudEF0dGFjaGVkCAUAAAANJHQwMTc5OTMxODAzNwAAAAJfMgQAAAAFTkZUaWQDAwkBAAAACWlzRGVmaW5lZAAAAAEIBQAAAAdwYXltZW50AAAAB2Fzc2V0SWQJAQAAAAxpc1NpZ25BcnRORlQAAAABCQEAAAAFdmFsdWUAAAABCAUAAAAHcGF5bWVudAAAAAdhc3NldElkBwgFAAAAB3BheW1lbnQAAAAHYXNzZXRJZAkAAAIAAAABAgAAAAxObyBORlQgZm91bmQEAAAAB05GVGRhdGEJAAS1AAAAAgkBAAAADGdldEFydFN0ckJ5SwAAAAEJAAEsAAAAAgIAAAAEbmZ0XwkAAlgAAAABCQEAAAAFdmFsdWUAAAABBQAAAAVORlRpZAIAAAABXwMJAAAAAAAAAgkAAZAAAAABBQAAAAdORlRkYXRhAAAAAAAAAAAACQAAAgAAAAECAAAADE5vIE5GVCBmb3VuZAQAAAALcmVxdWVzdERhdGEJAAS1AAAAAgkBAAAACWdldFN0ckJ5SwAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAtyZXF1ZXN0Mm5kXwUAAAAMcmVxdWVzdE93bmVyAgAAAAFfCQABkQAAAAIFAAAAB05GVGRhdGEAAAAAAAAAAAYCAAAAAV8FAAAABWFydElkAgAAAAFfBQAAAAdvZmZlcklkAgAAAAVfT1BFTgIAAAABXwMJAAAAAAAAAgkAAZAAAAABBQAAAAtyZXF1ZXN0RGF0YQAAAAAAAAAAAQkAAAIAAAABAgAAABBObyByZXF1ZXN0IGZvdW5kAwkBAAAAAiE9AAAAAgkAAZEAAAACBQAAAAtyZXF1ZXN0RGF0YQAAAAAAAAAAAwkAAZEAAAACBQAAAAdORlRkYXRhAAAAAAAAAAAFCQAAAgAAAAECAAAAKlRoaXMgTkZUIGRvbid0IG1hdGNoIHRoZSByZXF1ZXN0ZWQgYXJ0d29yawQAAAAGYW1vdW50CQEAAAAFdmFsdWUAAAABCQAEtgAAAAEJAAGRAAAAAgUAAAALcmVxdWVzdERhdGEAAAAAAAAAAAEEAAAADSR0MDE4NzcwMTg5NDUJAQAAAAxzZXRUcmFuc2ZlcnMAAAAGBQAAAAZhbW91bnQJAAJZAAAAAQkAAZEAAAACBQAAAAtyZXF1ZXN0RGF0YQAAAAAAAAAAAgkAAlgAAAABCQEAAAAFdmFsdWUAAAABBQAAAAVORlRpZAkAAZEAAAACBQAAAAdORlRkYXRhAAAAAAAAAAAGBQAAAAlzYWxlT3duZXIJAAGRAAAAAgUAAAALcmVxdWVzdERhdGEAAAAAAAAAAAQEAAAAB3NpZ25GZWUIBQAAAA0kdDAxODc3MDE4OTQ1AAAAAl8xBAAAAApjcmVhdG9yRmVlCAUAAAANJHQwMTg3NzAxODk0NQAAAAJfMgQAAAAIb3duZXJGZWUIBQAAAA0kdDAxODc3MDE4OTQ1AAAAAl8zBAAAAAxjb2xsZWN0b3JORlQIBQAAAA0kdDAxODc3MDE4OTQ1AAAAAl80CQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAtyZXF1ZXN0Mm5kXwUAAAAMcmVxdWVzdE93bmVyAgAAAAFfCQABkQAAAAIFAAAAB05GVGRhdGEAAAAAAAAAAAYCAAAAAV8FAAAABWFydElkAgAAAAFfBQAAAAdvZmZlcklkAgAAAAVfT1BFTgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAALcmVxdWVzdDJuZF8FAAAADHJlcXVlc3RPd25lcgIAAAABXwkAAZEAAAACBQAAAAdORlRkYXRhAAAAAAAAAAAGAgAAAAFfBQAAAAVhcnRJZAIAAAABXwUAAAAHb2ZmZXJJZAIAAAAHX0NMT1NFRAkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAAaQAAAABBQAAAARkYXRlAgAAAAFfCQABpAAAAAEFAAAABmFtb3VudAIAAAABXwkAAZEAAAACBQAAAAtyZXF1ZXN0RGF0YQAAAAAAAAAAAgIAAAABXwUAAAAFYXJ0SWQCAAAAAV8FAAAADHJlcXVlc3RPd25lcgIAAAABXwUAAAAJc2FsZU93bmVyAgAAAAFfBQAAAAJpZAkABEwAAAACBQAAAAdzaWduRmVlCQAETAAAAAIFAAAACmNyZWF0b3JGZWUJAARMAAAAAgUAAAAIb3duZXJGZWUJAARMAAAAAgUAAAAMY29sbGVjdG9yTkZUBQAAAANuaWwAAAABaQEAAAANY2FuY2VsUmVxdWVzdAAAAAMAAAAFYXJ0SWQAAAALY3JlYXRvckFkZHIAAAAJcmVxdWVzdElkBAAAAA0kdDAxOTUxMDE5NTU0CQEAAAAMaWRDYWxsZXJEYXRlAAAAAQUAAAABaQQAAAACaWQIBQAAAA0kdDAxOTUxMDE5NTU0AAAAAl8xBAAAAAxyZXF1ZXN0T3duZXIIBQAAAA0kdDAxOTUxMDE5NTU0AAAAAl8yBAAAAARkYXRlCAUAAAANJHQwMTk1MTAxOTU1NAAAAAJfMwQAAAANcmVxdWVzRGF0YUtleQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAtyZXF1ZXN0Mm5kXwUAAAAMcmVxdWVzdE93bmVyAgAAAAFfBQAAAAtjcmVhdG9yQWRkcgIAAAABXwUAAAAFYXJ0SWQCAAAAAV8FAAAACXJlcXVlc3RJZAQAAAALcmVxdWVzdERhdGEJAQAAAAlnZXRTdHJCeUsAAAABCQABLAAAAAIFAAAADXJlcXVlc0RhdGFLZXkCAAAABV9PUEVOAwkAAAAAAAACCQABMQAAAAEFAAAAC3JlcXVlc3REYXRhAAAAAAAAAAAACQAAAgAAAAECAAAAEVJlcXVlc3Qgbm90IGZvdW5kBAAAAA5yZXF1ZXN0RGF0YUFycgkABLUAAAACBQAAAAtyZXF1ZXN0RGF0YQIAAAABXwkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABCQABLAAAAAIFAAAADXJlcXVlc0RhdGFLZXkCAAAABV9PUEVOCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACBQAAAA1yZXF1ZXNEYXRhS2V5AgAAAAFfCQABpAAAAAEFAAAABGRhdGUCAAAAAV8FAAAAAmlkAgAAAApfQ0FOQ0VMTEVECQABLAAAAAIJAAEsAAAAAgUAAAALcmVxdWVzdERhdGECAAAAAV8JAAGkAAAAAQUAAAAEZGF0ZQkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQUAAAAMcmVxdWVzdE93bmVyCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAOcmVxdWVzdERhdGFBcnIAAAAAAAAAAAEJAAJZAAAAAQkAAZEAAAACBQAAAA5yZXF1ZXN0RGF0YUFycgAAAAAAAAAAAgUAAAADbmlsAAAAAO87+qY=", "height": 1569648, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: none Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 4 #-}
2+{-# SCRIPT_TYPE ACCOUNT #-}
3+{-# CONTENT_TYPE DAPP #-}
4+let unitTest = true
5+
6+let oracleFee = value(addressFromString("3N2s5RtaHPBenCsx2ECcoFRbYHx3noZhXW1"))
7+
8+let signDapp = value(addressFromString("3NC28hSivrmsTUXaYD1x6L362J4ZpUnoTdB"))
9+
10+let artworksDapp = value(addressFromString("3NBynfbXC2KastUxhukcMUaE58K9cBdB9UY"))
11+
12+let feeReceiver = "3N1E6tXddRoVaRfQ9dQ3vg5LaW2fsd8HKub"
13+
14+let userDapp = if (unitTest)
15+ then value(addressFromString("3Mt4RGMEyjSWYAocTPqd55wdHQQB3PU2UCm"))
16+ else value(addressFromString("3N8xXaYjE27Aa79d5hHrhHu9HaFoTBmhDEj"))
17+
18+let whitelistDapp = value(addressFromString("3N6BaV1dCB4zg43goNNHaCtvR13BcyJ5Gsq"))
19+
20+let signAssetId = base58'Gf9t8FA4H3ssoZPCwrg3KwUFCci8zuUFP9ssRsUY3s6a'
21+
22+let usdnAssetId = base58'25FEqEjRkqK6yCkiT7Lz6SAYz7gUFCtxfCChnrVFD5AT'
23+
24+let wavesAssetId = base58''
25+
26+let chris = "3MsG6jPNCrVJUtYB7XJBxS7utWsXAf4n9Vp"
27+
28+let signCut = 3
29+
30+let creatorCut = 10
31+
32+let dappRunning = valueOrElse(getBoolean(userDapp, "conf_dapp_is_running"), true)
33+
34+let maintenanceMSG = valueOrElse(getString(userDapp, "conf_maintenance_msg"), "")
35+
36+let userSuspended = "SUSPENDED"
37+
38+let userRemoved = "REMOVED"
39+
40+let artIllegal = "ILLEGAL"
41+
42+let artSuspended = "SUSPENDED"
43+
44+func getUserStrByK (key) = valueOrElse(getString(userDapp, key), "Error")
45+
46+
47+func getArtStrByK (key) = valueOrElse(getString(artworksDapp, key), "")
48+
49+
50+func getStrByK (key) = valueOrElse(getString(this, key), "")
51+
52+
53+func getIntByK (key) = valueOrElse(getInteger(this, key), 0)
54+
55+
56+func keyUserStatus (addr) = ("user_status_" + addr)
57+
58+
59+func keySignID (artistAddr,artId) = ((("art_signid_" + artId) + "_") + artistAddr)
60+
61+
62+func keyFlag (artistAddr,artId) = ((("art_flag_" + artId) + "_") + artistAddr)
63+
64+
65+func keyNFTData (id) = ("nft_" + id)
66+
67+
68+func getIntByKFromOracle (key) = valueOrErrorMessage(getInteger(oracleFee, key), "Integer undefine or 0 in oracle")
69+
70+
71+let currentCertificationPrice = getIntByKFromOracle(("certification_fee_" + toBase58String(signAssetId)))
72+
73+func idCallerDate (i) = if (!(dappRunning))
74+ then throw(maintenanceMSG)
75+ else $Tuple3(toBase58String(i.transactionId), toBase58String(i.caller.bytes), lastBlock.timestamp)
76+
77+
78+func isPayment (i) = if ((size(i.payments) == 0))
79+ then throw("No payment attached")
80+ else {
81+ let payment = value(i.payments[0])
82+ let amount = value(payment.amount)
83+ $Tuple2(payment, amount)
84+ }
85+
86+
87+func isSignArtNFT (id) = {
88+ let assetDetails = value(assetInfo(id))
89+ if (if (if ((assetDetails.quantity != 1))
90+ then true
91+ else (assetDetails.decimals != 0))
92+ then true
93+ else (assetDetails.reissuable != false))
94+ then false
95+ else true
96+ }
97+
98+
99+func acceptedAssetIds (assetId) = if (if (if (if ((assetId != toBase58String(signAssetId)))
100+ then (assetId != toBase58String(wavesAssetId))
101+ else false)
102+ then (assetId != "WAVES")
103+ else false)
104+ then (assetId != toBase58String(usdnAssetId))
105+ else false)
106+ then false
107+ else true
108+
109+
110+func getBidAssetId (assetId) = if ((assetId == "WAVES"))
111+ then unit
112+ else fromBase58String(assetId)
113+
114+
115+func getSaleOwnerAndStatus (nftid) = {
116+ let saleOwner = getStrByK(("current_owner_on_dapp_" + nftid))
117+ if ((size(saleOwner) == 0))
118+ then throw("NFT not found")
119+ else {
120+ let saleStatus = getStrByK(((("sale2nd_status_" + saleOwner) + "_") + nftid))
121+ if ((saleStatus != "OPEN"))
122+ then throw("NFT not for sale")
123+ else saleOwner
124+ }
125+ }
126+
127+
128+func getBidData (key) = {
129+ let bidData = getStrByK((key + "_OPEN"))
130+ if ((bidData == ""))
131+ then throw("Offer not found")
132+ else {
133+ let bidDataArr = split(bidData, "_")
134+ let assetId = getBidAssetId(bidDataArr[2])
135+ $Tuple3(bidDataArr, assetId, bidData)
136+ }
137+ }
138+
139+
140+func checkArtStatus (addr,id) = {
141+ let artStatus = getArtStrByK(keyFlag(addr, id))
142+ if (if ((artStatus == artIllegal))
143+ then true
144+ else (artStatus == artSuspended))
145+ then throw(("Original Artwork flagged as " + artStatus))
146+ else true
147+ }
148+
149+
150+func checkArtistStatus (addr) = {
151+ let artistStatus = getUserStrByK(keyUserStatus(addr))
152+ if (containsElement([userSuspended, userRemoved], artistStatus))
153+ then throw(("Original Artist " + artistStatus))
154+ else true
155+ }
156+
157+
158+func checkNFTInfo (assetId) = {
159+ let nftData = split(getArtStrByK(keyNFTData(assetId)), "_")
160+ let artSignID = getArtStrByK(keySignID(nftData[6], nftData[5]))
161+ if (if (!(checkArtStatus(nftData[6], nftData[5])))
162+ then !(checkArtistStatus(nftData[6]))
163+ else false)
164+ then $Tuple4(false, nftData[5], nftData[6], artSignID)
165+ else $Tuple4(true, nftData[5], nftData[6], artSignID)
166+ }
167+
168+
169+func checkARTExist (artId,creatorAddr) = {
170+ let artSignID = getArtStrByK(keySignID(creatorAddr, artId))
171+ if ((size(artSignID) == 0))
172+ then throw("Artwork not found on SIGN Art")
173+ else if (if (!(checkArtStatus(creatorAddr, artId)))
174+ then !(checkArtistStatus(creatorAddr))
175+ else false)
176+ then false
177+ else true
178+ }
179+
180+
181+func setTransfers (amount,assetId,nftid,creatorAddr,saleOwner,caller) = {
182+ let amountForSign = fraction(amount, signCut, 100)
183+ let amountForCreator = fraction(amount, creatorCut, 100)
184+ let amountForOwner = (amount - (amountForSign + amountForCreator))
185+ let signFee = ScriptTransfer(Address(fromBase58String(feeReceiver)), amountForSign, assetId)
186+ let creatorFee = ScriptTransfer(Address(fromBase58String(creatorAddr)), amountForCreator, assetId)
187+ let ownerFee = ScriptTransfer(Address(fromBase58String(saleOwner)), amountForOwner, assetId)
188+ let collectorNFT = ScriptTransfer(Address(fromBase58String(caller)), 1, fromBase58String(nftid))
189+ $Tuple4(signFee, creatorFee, ownerFee, collectorNFT)
190+ }
191+
192+
193+func validateMinSell (assetId,price) = {
194+ let minSellWaves = if (unitTest)
195+ then 10
196+ else getIntByKFromOracle("waves_min_sell")
197+ let minSellUsdn = 1000000
198+ let minSellSign = if (unitTest)
199+ then 1
200+ else (currentCertificationPrice * 2)
201+ if (if (if (if (if ((assetId == toBase58String(usdnAssetId)))
202+ then (minSellUsdn > price)
203+ else false)
204+ then (price != 0)
205+ else false)
206+ then true
207+ else if (if ((assetId == toBase58String(signAssetId)))
208+ then (minSellSign > price)
209+ else false)
210+ then (price != 0)
211+ else false)
212+ then true
213+ else if (if (if ((assetId == toBase58String(wavesAssetId)))
214+ then true
215+ else (assetId == "WAVES"))
216+ then (minSellWaves > price)
217+ else false)
218+ then (price != 0)
219+ else false)
220+ then false
221+ else true
222+ }
223+
224+
225+@Callable(i)
226+func sellNFT (price,asset) = {
227+ let $t083648403 = idCallerDate(i)
228+ let id = $t083648403._1
229+ let caller = $t083648403._2
230+ let date = $t083648403._3
231+ let $t084118447 = isPayment(i)
232+ let payment = $t084118447._1
233+ let amount = $t084118447._2
234+ let nftId = if (if (isDefined(payment.assetId))
235+ then isSignArtNFT(value(payment.assetId))
236+ else false)
237+ then toBase58String(value(payment.assetId))
238+ else throw("Only SIGN Art NFT accepted.")
239+ let $t086298698 = checkNFTInfo(nftId)
240+ let isValidNFT = $t086298698._1
241+ let artId = $t086298698._2
242+ let creatorAddr = $t086298698._3
243+ let artSignID = $t086298698._4
244+ if ((size(artSignID) == 0))
245+ then throw("Artwork not found on SIGN Art")
246+ else if (!(isValidNFT))
247+ then throw("Something went wrong")
248+ else if (!(acceptedAssetIds(asset)))
249+ then throw("Only SIGN, USDN or WAVES accepted")
250+ else if ((price == 0))
251+ then throw("Wrong minimum sell price")
252+ else if (!(validateMinSell(asset, price)))
253+ then throw("Wrong minimum sell price")
254+ else [StringEntry((((((((("sale2nd_info_" + caller) + "_") + nftId) + "_") + artId) + "_") + creatorAddr) + "_OPEN"), ((((((((((((toString(date) + "_") + toString(price)) + "_") + asset) + "_") + nftId) + "_") + artId) + "_") + creatorAddr) + "_") + id)), StringEntry(((("sale2nd_status_" + caller) + "_") + nftId), "OPEN"), StringEntry(("current_owner_on_dapp_" + nftId), caller)]
255+ }
256+
257+
258+
259+@Callable(i)
260+func updateSalePrice (nftid,price,asset) = {
261+ let $t096129651 = idCallerDate(i)
262+ let id = $t096129651._1
263+ let caller = $t096129651._2
264+ let date = $t096129651._3
265+ let $t096599728 = checkNFTInfo(nftid)
266+ let isValidNFT = $t096599728._1
267+ let artId = $t096599728._2
268+ let creatorAddr = $t096599728._3
269+ let artSignID = $t096599728._4
270+ if ((size(artSignID) == 0))
271+ then throw("Artwork not found on SIGN Art, cancel your sale.")
272+ else if (!(isValidNFT))
273+ then throw("Something went wrong")
274+ else {
275+ let saleOwner = getStrByK(("current_owner_on_dapp_" + nftid))
276+ if ((saleOwner != caller))
277+ then throw("You don't own this NFT")
278+ else {
279+ let saleStatus = getStrByK(((("sale2nd_status_" + caller) + "_") + nftid))
280+ if ((saleStatus != "OPEN"))
281+ then throw("Sale not active")
282+ else if (!(acceptedAssetIds(asset)))
283+ then throw("Only SIGN, USDN or WAVES accepted")
284+ else if ((price == 0))
285+ then throw("Wrong minimum sell price")
286+ else if (!(validateMinSell(asset, price)))
287+ then throw("Wrong minimum sell price")
288+ else {
289+ let saleKey = ((((((("sale2nd_info_" + caller) + "_") + nftid) + "_") + artId) + "_") + creatorAddr)
290+ let saleInfo = split(getStrByK((saleKey + "_OPEN")), "_")
291+[StringEntry((saleKey + "_OPEN"), ((((((((((((saleInfo[0] + "_") + toString(price)) + "_") + asset) + "_") + saleInfo[3]) + "_") + saleInfo[4]) + "_") + saleInfo[5]) + "_") + saleInfo[6]))]
292+ }
293+ }
294+ }
295+ }
296+
297+
298+
299+@Callable(i)
300+func cancelSale (nftid) = {
301+ let $t01090410943 = idCallerDate(i)
302+ let id = $t01090410943._1
303+ let caller = $t01090410943._2
304+ let date = $t01090410943._3
305+ let $t01095111176 = checkNFTInfo(nftid)
306+ let isValidNFT = $t01095111176._1
307+ let artId = $t01095111176._2
308+ let creatorAddr = $t01095111176._3
309+ let artSignID = $t01095111176._4
310+ let saleOwner = getStrByK(("current_owner_on_dapp_" + nftid))
311+ if ((saleOwner != caller))
312+ then throw("You don't own this NFT")
313+ else {
314+ let saleStatus = getStrByK(((("sale2nd_status_" + caller) + "_") + nftid))
315+ if ((saleStatus != "OPEN"))
316+ then throw("Sale not active")
317+ else {
318+ let saleKey = ((((((("sale2nd_info_" + caller) + "_") + nftid) + "_") + artId) + "_") + creatorAddr)
319+ let saleInfo = getStrByK((saleKey + "_OPEN"))
320+[DeleteEntry((saleKey + "_OPEN")), DeleteEntry(((("sale2nd_status_" + caller) + "_") + nftid)), DeleteEntry(("current_owner_on_dapp_" + nftid)), StringEntry((((saleKey + "_") + id) + "_CANCELLED"), ((((saleInfo + "_CANCELLED_") + toString(date)) + "_") + id)), ScriptTransfer(Address(fromBase58String(caller)), 1, fromBase58String(nftid))]
321+ }
322+ }
323+ }
324+
325+
326+
327+@Callable(i)
328+func buyNFT (nftid) = {
329+ let $t01201112050 = idCallerDate(i)
330+ let id = $t01201112050._1
331+ let caller = $t01201112050._2
332+ let date = $t01201112050._3
333+ let saleOwner = getSaleOwnerAndStatus(nftid)
334+ let $t01210612175 = checkNFTInfo(nftid)
335+ let isValidNFT = $t01210612175._1
336+ let artId = $t01210612175._2
337+ let creatorAddr = $t01210612175._3
338+ let artSignID = $t01210612175._4
339+ if ((size(artSignID) == 0))
340+ then throw("Artwork not found on SIGN Art, cancel your sale.")
341+ else if (!(isValidNFT))
342+ then throw("Something went wrong")
343+ else {
344+ let saleKey = ((((((("sale2nd_info_" + saleOwner) + "_") + nftid) + "_") + artId) + "_") + creatorAddr)
345+ let saleInfo = getStrByK((saleKey + "_OPEN"))
346+ if ((size(saleInfo) == 0))
347+ then throw("Sale Not found!")
348+ else {
349+ let saleInfoArray = split(saleInfo, "_")
350+ if ((parseInt(saleInfoArray[1]) == 0))
351+ then throw("Offer only")
352+ else {
353+ let $t01265312689 = isPayment(i)
354+ let payment = $t01265312689._1
355+ let amount = $t01265312689._2
356+ let paymentAssetStr = if (isDefined(payment.assetId))
357+ then toBase58String(value(payment.assetId))
358+ else ""
359+ if (if ((saleInfoArray[1] != toString(amount)))
360+ then true
361+ else (saleInfoArray[2] != paymentAssetStr))
362+ then throw("Payment infos don't match.")
363+ else {
364+ let amountForSign = fraction(amount, signCut, 100)
365+ let amountForCreator = fraction(amount, creatorCut, 100)
366+ let amountForOwner = (amount - (amountForSign + amountForCreator))
367+ let $t01320013328 = setTransfers(amount, payment.assetId, nftid, creatorAddr, saleOwner, caller)
368+ let signFee = $t01320013328._1
369+ let creatorFee = $t01320013328._2
370+ let ownerFee = $t01320013328._3
371+ let collectorNFT = $t01320013328._4
372+[DeleteEntry((saleKey + "_OPEN")), DeleteEntry(((("sale2nd_status_" + saleOwner) + "_") + nftid)), DeleteEntry(("current_owner_on_dapp_" + nftid)), StringEntry((((saleKey + "_") + id) + "_CLOSED"), ((((((makeString(saleInfoArray, "_") + "_CLOSED_") + toString(date)) + "_") + id) + "_") + caller)), signFee, creatorFee, ownerFee, collectorNFT]
373+ }
374+ }
375+ }
376+ }
377+ }
378+
379+
380+
381+@Callable(i)
382+func setOffer (nftid) = {
383+ let $t01374713789 = idCallerDate(i)
384+ let id = $t01374713789._1
385+ let offerOwner = $t01374713789._2
386+ let date = $t01374713789._3
387+ let $t01379713833 = isPayment(i)
388+ let payment = $t01379713833._1
389+ let amount = $t01379713833._2
390+ let assetId = if (!(isDefined(payment.assetId)))
391+ then "WAVES"
392+ else toBase58String(value(payment.assetId))
393+ if (!(acceptedAssetIds(assetId)))
394+ then throw("asset not accepted")
395+ else if ((amount == 0))
396+ then throw("Offer of 0 not allowed")
397+ else if (!(validateMinSell(assetId, amount)))
398+ then throw("Wrong minimum sell price")
399+ else {
400+ let $t01417314231 = checkNFTInfo(nftid)
401+ let isValidNFT = $t01417314231._1
402+ let artId = $t01417314231._2
403+ let creatorAddr = $t01417314231._3
404+ if (!(isValidNFT))
405+ then throw("Something went wrong")
406+ else {
407+ let saleOwner = getSaleOwnerAndStatus(nftid)
408+[StringEntry((((((((("offer2nd_" + offerOwner) + "_") + nftid) + "_") + saleOwner) + "_") + id) + "_OPEN"), ((((((((((((((toString(date) + "_") + toString(amount)) + "_") + assetId) + "_") + nftid) + "_") + artId) + "_") + creatorAddr) + "_") + offerOwner) + "_") + id))]
409+ }
410+ }
411+ }
412+
413+
414+
415+@Callable(i)
416+func acceptOffer (nftid,offerId,offerOwner) = {
417+ let $t01478014851 = idCallerDate(i)
418+ let id = $t01478014851._1
419+ let caller = $t01478014851._2
420+ let date = $t01478014851._3
421+ let saleOwner = getSaleOwnerAndStatus(nftid)
422+ if ((caller != saleOwner))
423+ then throw("You cannot do this action")
424+ else {
425+ let bidKey = ((((((("offer2nd_" + offerOwner) + "_") + nftid) + "_") + saleOwner) + "_") + offerId)
426+ let bidValue = getStrByK((bidKey + "_OPEN"))
427+ if ((bidValue == ""))
428+ then throw("Offer not found or not for sale")
429+ else {
430+ let $t01518115239 = checkNFTInfo(nftid)
431+ let isValidNFT = $t01518115239._1
432+ let artId = $t01518115239._2
433+ let creatorAddr = $t01518115239._3
434+ if (!(isValidNFT))
435+ then throw("Something went wrong")
436+ else {
437+ let saleKey = ((((((("sale2nd_info_" + saleOwner) + "_") + nftid) + "_") + artId) + "_") + creatorAddr)
438+ let saleValue = getStrByK((saleKey + "_OPEN"))
439+ if ((size(saleValue) == 0))
440+ then throw("Sale Not found!")
441+ else {
442+ let saleValArr = split(saleValue, "_")
443+ let $t01559415649 = getBidData(bidKey)
444+ let bidDataArr = $t01559415649._1
445+ let assetId = $t01559415649._2
446+ let bidData = $t01559415649._3
447+ let amount = value(parseInt(bidDataArr[1]))
448+ let $t01570615833 = setTransfers(amount, assetId, nftid, creatorAddr, saleOwner, bidDataArr[6])
449+ let signFee = $t01570615833._1
450+ let creatorFee = $t01570615833._2
451+ let ownerFee = $t01570615833._3
452+ let collectorNFT = $t01570615833._4
453+[DeleteEntry((saleKey + "_OPEN")), DeleteEntry((bidKey + "_OPEN")), DeleteEntry(((("sale2nd_status_" + saleOwner) + "_") + nftid)), DeleteEntry(("current_owner_on_dapp_" + nftid)), StringEntry((bidKey + "_CLOSED"), ((((bidValue + "_CLOSED_") + toString(date)) + "_") + id)), StringEntry((((saleKey + "_") + id) + "_CLOSED"), ((((((((((makeString(saleValArr, "_") + "_CLOSED-OFFER_") + toString(date)) + "_") + id) + "_") + offerOwner) + "_") + toString(amount)) + "_") + toBase58String(value(assetId)))), signFee, creatorFee, ownerFee, collectorNFT]
454+ }
455+ }
456+ }
457+ }
458+ }
459+
460+
461+
462+@Callable(i)
463+func cancelOffer (nftid,offerId,saleOwner) = {
464+ let $t01650016562 = idCallerDate(i)
465+ let id = $t01650016562._1
466+ let caller = $t01650016562._2
467+ let date = $t01650016562._3
468+ let bidKey = ((((((("offer2nd_" + caller) + "_") + nftid) + "_") + saleOwner) + "_") + offerId)
469+ let $t01664016695 = getBidData(bidKey)
470+ let bidDataArr = $t01664016695._1
471+ let assetId = $t01664016695._2
472+ let bidData = $t01664016695._3
473+[DeleteEntry((bidKey + "_OPEN")), StringEntry((bidKey + "_CANCELLED"), ((((bidData + "_CANCELLED_") + toString(date)) + "_") + id)), ScriptTransfer(Address(fromBase58String(caller)), parseIntValue(bidDataArr[1]), assetId)]
474+ }
475+
476+
477+
478+@Callable(i)
479+func makeRequest (artId,creatorAddr) = {
480+ let $t01703317077 = idCallerDate(i)
481+ let id = $t01703317077._1
482+ let requestOwner = $t01703317077._2
483+ let date = $t01703317077._3
484+ let $t01708517121 = isPayment(i)
485+ let payment = $t01708517121._1
486+ let amount = $t01708517121._2
487+ let assetId = if (!(isDefined(payment.assetId)))
488+ then "WAVES"
489+ else toBase58String(value(payment.assetId))
490+ if (!(acceptedAssetIds(assetId)))
491+ then throw("asset not accepted")
492+ else if (!(validateMinSell(assetId, amount)))
493+ then throw("Wrong minimum sell price")
494+ else {
495+ let isValidART = checkARTExist(artId, creatorAddr)
496+ if (!(isValidART))
497+ then throw("Something went wrong")
498+ else [StringEntry((((((((("request2nd_" + requestOwner) + "_") + creatorAddr) + "_") + artId) + "_") + id) + "_OPEN"), ((((((((((toString(date) + "_") + toString(amount)) + "_") + toBase58String(value(payment.assetId))) + "_") + artId) + "_") + requestOwner) + "_") + id))]
499+ }
500+ }
501+
502+
503+
504+@Callable(i)
505+func fillRequest (artId,requestOwner,offerId) = {
506+ let $t01794517987 = idCallerDate(i)
507+ let id = $t01794517987._1
508+ let saleOwner = $t01794517987._2
509+ let date = $t01794517987._3
510+ let $t01799318037 = isPayment(i)
511+ let payment = $t01799318037._1
512+ let amountAttached = $t01799318037._2
513+ let NFTid = if (if (isDefined(payment.assetId))
514+ then isSignArtNFT(value(payment.assetId))
515+ else false)
516+ then payment.assetId
517+ else throw("No NFT found")
518+ let NFTdata = split(getArtStrByK(("nft_" + toBase58String(value(NFTid)))), "_")
519+ if ((size(NFTdata) == 0))
520+ then throw("No NFT found")
521+ else {
522+ let requestData = split(getStrByK((((((((("request2nd_" + requestOwner) + "_") + NFTdata[6]) + "_") + artId) + "_") + offerId) + "_OPEN")), "_")
523+ if ((size(requestData) == 1))
524+ then throw("No request found")
525+ else if ((requestData[3] != NFTdata[5]))
526+ then throw("This NFT don't match the requested artwork")
527+ else {
528+ let amount = value(parseInt(requestData[1]))
529+ let $t01877018945 = setTransfers(amount, fromBase58String(requestData[2]), toBase58String(value(NFTid)), NFTdata[6], saleOwner, requestData[4])
530+ let signFee = $t01877018945._1
531+ let creatorFee = $t01877018945._2
532+ let ownerFee = $t01877018945._3
533+ let collectorNFT = $t01877018945._4
534+[DeleteEntry((((((((("request2nd_" + requestOwner) + "_") + NFTdata[6]) + "_") + artId) + "_") + offerId) + "_OPEN")), StringEntry((((((((("request2nd_" + requestOwner) + "_") + NFTdata[6]) + "_") + artId) + "_") + offerId) + "_CLOSED"), ((((((((((((toString(date) + "_") + toString(amount)) + "_") + requestData[2]) + "_") + artId) + "_") + requestOwner) + "_") + saleOwner) + "_") + id)), signFee, creatorFee, ownerFee, collectorNFT]
535+ }
536+ }
537+ }
538+
539+
540+
541+@Callable(i)
542+func cancelRequest (artId,creatorAddr,requestId) = {
543+ let $t01951019554 = idCallerDate(i)
544+ let id = $t01951019554._1
545+ let requestOwner = $t01951019554._2
546+ let date = $t01951019554._3
547+ let requesDataKey = ((((((("request2nd_" + requestOwner) + "_") + creatorAddr) + "_") + artId) + "_") + requestId)
548+ let requestData = getStrByK((requesDataKey + "_OPEN"))
549+ if ((size(requestData) == 0))
550+ then throw("Request not found")
551+ else {
552+ let requestDataArr = split(requestData, "_")
553+[DeleteEntry((requesDataKey + "_OPEN")), StringEntry((((((requesDataKey + "_") + toString(date)) + "_") + id) + "_CANCELLED"), ((requestData + "_") + toString(date))), ScriptTransfer(Address(fromBase58String(requestOwner)), parseIntValue(requestDataArr[1]), fromBase58String(requestDataArr[2]))]
554+ }
555+ }
556+
557+

github/deemru/w8io/169f3d6 
48.71 ms