tx · 2AVyLviyoJmoCX11fz2pjTEXRdoKyAa12ZiLLPBzrwP3

3MrWNTqFcHBqb58Za1A5crQrMV5KJ5DYhtA:  -0.01000000 Waves

2021.12.23 15:57 [1846932] smart account 3MrWNTqFcHBqb58Za1A5crQrMV5KJ5DYhtA > SELF 0.00000000 Waves

{ "type": 13, "id": "2AVyLviyoJmoCX11fz2pjTEXRdoKyAa12ZiLLPBzrwP3", "fee": 1000000, "feeAssetId": null, "timestamp": 1640264341655, "version": 2, "chainId": 84, "sender": "3MrWNTqFcHBqb58Za1A5crQrMV5KJ5DYhtA", "senderPublicKey": "9abKuN1XmLjjire2feZH26PmcEWhEXxiHToWSmii3Gn2", "proofs": [ "63mw2Ee4TwdfFEUzxyNSAUpmkLU7xtdsWsm7pgTspnCihadX2eLgVCYz9pHujJADhC4nfccag6wP9DZgjGEcMNNT" ], "script": "base64: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AAAFaXNCaWQEAAAADmNhbGxlcklzSXNzdWVyCQAAAAAAAAIJAAJYAAAAAQgIBQAAAAFpAAAABmNhbGxlcgAAAAVieXRlcwUAAAAGaXNzdWVyBAAAAAh0b3RhbE5GVAkBAAAAD2dldEludGVnZXJCeUtleQAAAAECAAAAEHRvdGFsX25mdF9pc3N1ZWQEAAAAC2FydHdvcmtOYW1lCQEAAAAOZ2V0U3RyaW5nQnlLZXkAAAABCQEAAAAHa2V5TmFtZQAAAAIFAAAABmlzc3VlcgUAAAAFYXJ0SWQDCQAAAAAAAAIFAAAAC2FydHdvcmtOYW1lAgAAAAAJAAACAAAAAQIAAAARQXJ0IGRvZXNuJ3QgZXhpc3QEAAAACGlzT25TYWxlCQEAAAAPZ2V0Qm9vbGVhbkJ5S2V5AAAAAQkBAAAACWtleU9uU2FsZQAAAAIFAAAABmlzc3VlcgUAAAAFYXJ0SWQEAAAACmFtb3VudFNvbGQJAQAAAA9nZXRJbnRlZ2VyQnlLZXkAAAABCQEAAAAJa2V5SXNzdWVkAAAAAgUAAAAGaXNzdWVyBQAAAAVhcnRJZAQAAAAMYXJ0d29ya1ByaWNlCQEAAAALdmFsdWVPckVsc2UAAAACCQEAAAAPZ2V0SW50ZWdlckJ5S2V5AAAAAQkBAAAACGtleVByaWNlAAAAAgUAAAAGaXNzdWVyBQAAAAVhcnRJZAkAAGgAAAACBQAAABljdXJyZW50Q2VydGlmaWNhdGlvblByaWNlAAAAAAAAAAACBAAAAAxwcmljZUFzc2V0SWQDBQAAAA5jYWxsZXJJc0lzc3VlcgkAAlgAAAABBQAAAAtVU0ROQXNzZXRJZAkBAAAADmdldFN0cmluZ0J5S2V5AAAAAQkBAAAAEmtleUFzc2V0SWRBY2NlcHRlZAAAAAIFAAAABmlzc3VlcgUAAAAFYXJ0SWQEAAAACm1heENhblNlbGwJAQAAAA9nZXRJbnRlZ2VyQnlLZXkAAAABCQEAAAAKa2V5TWF4TWludAAAAAIFAAAABmlzc3VlcgUAAAAFYXJ0SWQDAwMJAQAAAAEhAAAAAQUAAAAFaXNCaWQJAQAAAAEhAAAAAQUAAAAOY2FsbGVySXNJc3N1ZXIHAwMJAABnAAAAAgAAAAAAAAAAAAUAAAAMYXJ0d29ya1ByaWNlBgkBAAAAASEAAAABBQAAAAhpc09uU2FsZQYJAABnAAAAAgAAAAAAAAAAAAUAAAAKbWF4Q2FuU2VsbAcJAAACAAAAAQIAAAAQQXJ0IG5vdCBmb3Igc2FsZQMDAwkBAAAAASEAAAABBQAAAAVpc0JpZAUAAAAOY2FsbGVySXNJc3N1ZXIHCQAAZwAAAAIAAAAAAAAAAAAFAAAACm1heENhblNlbGwHCQAAAgAAAAECAAAAFE1heCBpc3N1YWJsZSBub3Qgc2V0CQAFGQAAAAcFAAAACHRvdGFsTkZUBQAAAAthcnR3b3JrTmFtZQUAAAAKYW1vdW50U29sZAUAAAAMYXJ0d29ya1ByaWNlBQAAAAxwcmljZUFzc2V0SWQFAAAACm1heENhblNlbGwFAAAACGlzT25TYWxlAQAAAApnZXRCaWREYXRhAAAACQAAAAFpAAAABmNhbGxlcgAAAAZpc3N1ZXIAAAAFYXJ0SWQAAAAIYmlkT3duZXIAAAAFYmlkSWQAAAAMcHJpY2VBc3NldElkAAAADGFydHdvcmtQcmljZQAAAAVpc0JpZAQAAAAJY2hlY2tVc2VyCQEAAAAMdmFsaWRhdGVVc2VyAAAAAQUAAAAGaXNzdWVyAwMFAAAABWlzQmlkCQEAAAACIT0AAAACBQAAAAljaGVja1VzZXICAAAAAAcJAAACAAAAAQUAAAAJY2hlY2tVc2VyBAAAAApiaWREYXRhS2V5CQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAABGJpZF8FAAAABWFydElkAgAAAAFfBQAAAAZpc3N1ZXICAAAAAV8FAAAACGJpZE93bmVyAgAAAAFfBQAAAAViaWRJZAQAAAAMdDAxMzUxOTEzNjQ4AwUAAAAFaXNCaWQJAQAAABZnZXRQcmljZUFzc2V0SWRGcm9tQmlkAAAAAQUAAAAKYmlkRGF0YUtleQkBAAAAFHZhbGlkYXRlUHJpY2VBc3NldElkAAAAAwUAAAABaQUAAAAMcHJpY2VBc3NldElkBQAAAAxhcnR3b3JrUHJpY2UEAAAABmFtb3VudAgFAAAADHQwMTM1MTkxMzY0OAAAAAJfMQQAAAAHYXNzZXRJZAgFAAAADHQwMTM1MTkxMzY0OAAAAAJfMgkABRUAAAADBQAAAApiaWREYXRhS2V5BQAAAAZhbW91bnQFAAAAB2Fzc2V0SWQBAAAAEWdldENvbW1pc3Npb25EYXRhAAAABQAAAAZpc3N1ZXIAAAAHYXNzZXRJZAAAAAZhbW91bnQAAAAKYW1vdW50U29sZAAAAAptYXhDYW5TZWxsBAAAAA1pc1doaXRlbGlzdGVkCQEAAAAOY2hlY2tXaGl0ZWxpc3QAAAABBQAAAAZpc3N1ZXIEAAAAA2N1dAMJAABmAAAAAgUAAAANaXNXaGl0ZWxpc3RlZAUAAAAGaGVpZ2h0AAAAAAAAAAAAAwkAAAAAAAACBQAAAAdhc3NldElkBQAAAAtVU0ROQXNzZXRJZAUAAAAQVVNETkZpcnN0U2VsbEN1dAkAAAIAAAABAgAAABZPbmx5IFVTRE4gaXMgYWNjZXB0ZWQhBAAAAA9hbW91bnRGb3JTY29uZXgJAABrAAAAAwUAAAAGYW1vdW50BQAAAANjdXQAAAAAAAAAA+gEAAAAEGFtb3VudEZvckNyZWF0b3IJAABlAAAAAgUAAAAGYW1vdW50BQAAAA9hbW91bnRGb3JTY29uZXgDCQAAAAAAAAIFAAAACmFtb3VudFNvbGQFAAAACm1heENhblNlbGwJAAACAAAAAQIAAAAMQXJ0IHNvbGQgb3V0BAAAAA1uZXdBbW91bnRTb2xkCQAAZAAAAAIFAAAACmFtb3VudFNvbGQAAAAAAAAAAAEJAAUVAAAAAwUAAAAPYW1vdW50Rm9yU2NvbmV4BQAAABBhbW91bnRGb3JDcmVhdG9yBQAAAA1uZXdBbW91bnRTb2xkAQAAAAxnZXRJc3N1ZURhdGEAAAALAAAABmlzc3VlcgAAAAVhcnRJZAAAAAthcnR3b3JrTmFtZQAAAA1uZXdBbW91bnRTb2xkAAAACm1heENhblNlbGwAAAAIdG90YWxORlQAAAAGY2FsbGVyAAAACGJpZE93bmVyAAAABWJpZElkAAAAAWkAAAAIaXNPblNhbGUEAAAACWlzc3VlTWV0YQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAJQ3JlYXRvcjogBQAAAAZpc3N1ZXICAAAACCxBcnRJRDogBQAAAAVhcnRJZAIA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dmFsdWUAAAABBQAAAAdhc3NldElkBQAAAAZhbW91bnQFAAAACmFtb3VudFNvbGQFAAAACm1heENhblNlbGwEAAAAD2Ftb3VudEZvclNjb25leAgFAAAADWNvbW1pc2lvbkRhdGEAAAACXzEEAAAAEGFtb3VudEZvckNyZWF0b3IIBQAAAA1jb21taXNpb25EYXRhAAAAAl8yBAAAAA1uZXdBbW91bnRTb2xkCAUAAAANY29tbWlzaW9uRGF0YQAAAAJfMwQAAAAKaXNzdWVyRGF0YQkBAAAADGdldElzc3VlRGF0YQAAAAsFAAAABmlzc3VlcgUAAAAFYXJ0SWQFAAAAC2FydHdvcmtOYW1lBQAAAA1uZXdBbW91bnRTb2xkBQAAAAptYXhDYW5TZWxsBQAAAAh0b3RhbE5GVAUAAAAGY2FsbGVyBQAAAAhiaWRPd25lcgUAAAAFYmlkSWQFAAAAAWkFAAAACGlzT25TYWxlBAAAAApzZWxsU3RhdHVzCAUAAAAKaXNzdWVyRGF0YQAAAAJfMQQAAAAKcmVjZWl2ZU5GVAgFAAAACmlzc3VlckRhdGEAAAACXzIEAAAACWlzc3VlTWV0YQgFAAAACmlzc3VlckRhdGEAAAACXzMEAAAAC2lkTkZUSW52b2tlCQAD/AAAAAQFAAAABHRoaXMCAAAAB21pbnROZnQJAARMAAAAAgUAAAAIdG90YWxORlQJAARMAAAAAgUAAAAJaXNzdWVNZXRhCQAETAAAAAIJAAQlAAAAAQUAAAAKcmVjZWl2ZU5GVAUAAAADbmlsBQAAAANuaWwDCQAAAAAAAAIFAAAAC2lkTkZUSW52b2tlBQAAAAtpZE5GVEludm9rZQQAAAAFaWRORlQEAAAAByRtYXRjaDAFAAAAC2lkTkZUSW52b2tlAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAZTdHJpbmcEAAAAAXIFAAAAByRtYXRjaDAFAAAAAXIJAAACAAAAAQIAAAAXSW5jb3JyZWN0IGludm9rZSByZXN1bHQEAAAAC2JpZEtleVZhbHVlCQEAAAAMZ2V0QmlkS2V5VmFsAAAAAwUAAAAHYXNzZXRJZAUAAAAKYmlkRGF0YUtleQUAAAAEZGF0ZQQAAAAKYXNzZXRJZEJpZAgFAAAAC2JpZEtleVZhbHVlAAAAAl8xBAAA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aWRVcGRhdGUFAAAACWJpZERlbE9sZAkABEwAAAACBQAAAAhzb2xkRGF0YQUAAAAGYnV5UmVzCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAAAAFHNldEJpZE5vblRyYWRpdGlvbmFsAAAAAwAAAAFpAAAABWFydElkAAAABmlzc3VlcgQAAAAMdDAyNzcwOTI3NzQ3CQEAAAAMaWRDYWxsZXJEYXRlAAAAAQUAAAABaQQAAAACaWQIBQAAAAx0MDI3NzA5Mjc3NDcAAAACXzEEAAAABmNhbGxlcggFAAAADHQwMjc3MDkyNzc0NwAAAAJfMgQAAAAEZGF0ZQgFAAAADHQwMjc3MDkyNzc0NwAAAAJfMwQAAAAMdDAyNzc1MjI3Nzg4CQEAAAAJaXNQYXltZW50AAAAAQUAAAABaQQAAAAHcGF5bWVudAgFAAAADHQwMjc3NTIyNzc4OAAAAAJfMQQAAAAGYW1vdW50CAUAAAAMdDAyNzc1MjI3Nzg4AAAAAl8yBAAAAAdhc3NldElkAwkBAAAAASEAAAABCQEAAAAJaXNEZWZpbmVkAAAAAQgFAAAAB3BheW1lbnQAAAAHYXNzZXRJZAkAAAIAAAABAgAAABZPbmx5IFVTRE4gaXMgYWNjZXB0ZWQhCQACWAAAAAEJAQAAAAV2YWx1ZQAAAAEIBQAAAAdwYXltZW50AAAAB2Fzc2V0SWQEAAAABmJpZE5icgkBAAAAD2dldEludGVnZXJCeUtleQAAAAEJAAEsAAAAAgIAAAASY3VycmVudF9iaWRhbW91bnRfBQAAAAVhcnRJZAQAAAAPbWluQXJ0d29ya1ByaWNlCQEAAAALdmFsdWVPckVsc2UAAAACCQEAAAAPZ2V0SW50ZWdlckJ5S2V5AAAAAQkBAAAACGtleVByaWNlAAAAAgUAAAAGaXNzdWVyBQAAAAVhcnRJZAkAAGgAAAACBQAAABljdXJyZW50Q2VydGlmaWNhdGlvblByaWNlAAAAAAAAAAACAwkBAAAAASEAAAABCQEAAAAQYWNjZXB0ZWRBc3NldElkcwAAAAEFAAAAB2Fzc2V0SWQJAAACAAAAAQIAAAASYXNzZXQgbm90IGFjY2VwdGVkAwkAAGYAAAACBQAAAA9taW5BcnR3b3JrUHJpY2UFAAAABmFtb3VudAkAAAIAAAABAgAAABdCaWQgaXMgYmVsb3cgbWluIHByaWNlIQQAAAAKYW1vdW50U29sZAkBAAAAD2dldEludGVnZXJCeUtleQAAAAEJAQAAAAlrZXlJc3N1ZWQAAAACBQAAAAZpc3N1ZXIFAAAABWFydElkBAAAAAptYXhDYW5TZWxsCQEAAAAPZ2V0SW50ZWdlckJ5S2V5AAAAAQkBAAAACmtleU1heE1pbnQAAAACBQAAAAZpc3N1ZXIFAAAABWFydElkAwkAAGcAAAACAAAAAAAAAAAABQAAAAptYXhDYW5TZWxsCQAAAgAAAAECAAAAI05vIG1heCBlZGl0aW9uIHNldCBmb3IgdGhpcyBhcnR3b3JrAwkAAGcAAAACBQAAAAphbW91bnRTb2xkBQAAAAptYXhDYW5TZWxsCQAAAgAAAAECAAAAGFNvbGQgb3V0LCB5b3UgY2Fubm90IGJpZAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAEYmlkXwUAAAAFYXJ0SWQCAAAAAV8FAAAABmlzc3VlcgIAAAABXwUAAAAGY2FsbGVyAgAAAAFfBQAAAAJpZAIAAAAFX09QRU4JAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgUAAAAHYXNzZXRJZAIAAAABXwkAAaQAAAABBQAAAAZhbW91bnQCAAAAAV8JAAGkAAAAAQUAAAAEZGF0ZQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACAgAAABJjdXJyZW50X2JpZGFtb3VudF8FAAAABWFydElkCQAAZAAAAAIFAAAABmJpZE5icgAAAAAAAAAAAQUAAAADbmlsAQAAABFzZXRCaWRUcmFkaXRpb25hbAAAAAMAAAABaQAAAAVhcnRJZAAAAAZpc3N1ZXIEAAAACWVuZEhlaWdodAkBAAAAD2dldEludGVnZXJCeUtleQAAAAEJAQAAAAxrZXlFbmRIZWlnaHQAAAACBQAAAAZpc3N1ZXIFAAAABWFydElkBAAAAApoaWdoZXN0QmlkCQEAAAAaZ2V0QW1vdW50SGlnaGVzdEJpZEJ5QXJ0SWQAAAABBQAAAAVhcnRJZAMJAABmAAAAAgUAAAAGaGVpZ2h0BQAAAAllbmRIZWlnaHQJAAACAAAAAQIAAAAhVGhpcyBhdWN0aW9uIGlzIGZpbmlzaGVkIGFscmVhZHkhBAAAAAtjYWxsZGVyRGF0YQkBAAAADGlkQ2FsbGVyRGF0ZQAAAAEFAAAAAWkEAAAAAmlkCAUAAAALY2FsbGRlckRhdGEAAAACXzEEAAAABmNhbGxlcggFAAAAC2NhbGxkZXJEYXRhAAAAAl8yBAAAAARkYXRlCAUAAAALY2FsbGRlckRhdGEAAAACXzMEAAAADGlzUGF5bWVudFZhcgkBAAAACWlzUGF5bWVudAAAAAEFAAAAAWkEAAAAB3BheW1lbnQIBQAAAAxpc1BheW1lbnRWYXIAAAACXzEEAAAABmFtb3VudAgFAAAADGlzUGF5bWVudFZhcgAAAAJfMgMJAABnAAAAAgUAAAAKaGlnaGVzdEJpZAUAAAAGYW1vdW50CQAAAgAAAAEJAAEsAAAAAgIAAAAgUGxlYXNlIHBsYWNlIGEgYmlkIGhpZ2hlciB0aGFuOiAJAAGkAAAAAQUAAAAKaGlnaGVzdEJpZAQAAAAHYXNzZXRJZAMJAQAAAAEhAAAAAQkBAAAACWlzRGVmaW5lZAAAAAEIBQAAAAdwYXltZW50AAAAB2Fzc2V0SWQJAAACAAAAAQIAAAAWT25seSBVU0ROIGlzIGFjY2VwdGVkIQkAAlgAAAABCQEAAAAFdmFsdWUAAAABCAUAAAAHcGF5bWVudAAAAAdhc3NldElkBAAAAAZiaWROYnIJAQAAAA9nZXRJbnRlZ2VyQnlLZXkAAAABCQABLAAAAAICAAAAEmN1cnJlbnRfYmlkYW1vdW50XwUAAAAFYXJ0SWQEAAAAD21pbkFydHdvcmtQcmljZQkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkBAAAAD2dldEludGVnZXJCeUtleQAAAAEJAQAAAAhrZXlQcmljZQAAAAIFAAAABmlzc3VlcgUAAAAFYXJ0SWQJAABoAAAAAgUAAAAZY3VycmVudENlcnRpZmljYXRpb25QcmljZQAAAAAAAAAAAgMJ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bid0IHJlc3RhcnQgYXVjdGlvbiwgbWF4IGFtb3VudCBzb2xkCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAMa2V5RW5kSGVpZ2h0AAAAAgUAAAAGaXNzdWVyBQAAAAVhcnRJZAUAAAAJZW5kSGVpZ2h0CQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEJAQAAABJrZXlIaWdoZXN0QmlkQmlkSWQAAAABBQAAAAVhcnRJZAUAAAADbmlsCQAAAgAAAAECAAAAJFByZXZpb3VzIGF1Y3Rpb24gaXNuJ3QgY29tcGxldGVkIHlldAEAAAAUYWNjZXB0QmlkVHJhZGl0aW9uYWwAAAAFAAAAAWkAAAAFYXJ0SWQAAAAGaXNzdWVyAAAABWJpZElkAAAACGJpZE93bmVyBAAAAAllbmRIZWlnaHQJAQAAAA9nZXRJbnRlZ2VyQnlLZXkAAAABCQEAAAAMa2V5RW5kSGVpZ2h0AAAAAgUAAAAGaXNzdWVyBQAAAAVhcnRJZAQAAAAMaGlnaGVzdEJpZElkCQEAAAAOZ2V0U3RyaW5nQnlLZXkAAAABCQEAAAASa2V5SGlnaGVzdEJpZEJpZElkAAAAAQUAAAAFYXJ0SWQDCQAAZgAAAAIFAAAABmhlaWdodAUAAAAJZW5kSGVpZ2h0AwkAAAAAAAACBQAAAAViaWRJZAUAAAAMaGlnaGVzdEJpZElkBAAAAAtidXlNaW50RGF0YQkBAAAAB2J1eU1pbnQAAAAGBQAAAAFpBQAAAAVhcnRJZAUAAAAGaXNzdWVyBQAAAAViaWRJZAUAAAAIYmlkT3duZXIGBAAAABJyZXN0YXJ0QXVjdGlvbkRhdGEJAQAAAA5yZXN0YXJ0QXVjdGlvbgAAAAIFAAAABWFydElkBQAAAAZpc3N1ZXIJAAROAAAAAgUAAAAScmVzdGFydEF1Y3Rpb25EYXRhBQAAAAtidXlNaW50RGF0YQkAAAIAAAABAgAAABxUaGlzIGlzIG5vdCB0aGUgd2lubmluZyBiaWQhCQAAAgAAAAECAAAAIVRoaXMgYXVjdGlvbiBpcyBub3QgeWV0IGZpbmlzaGVkIQEAAAANY2FuY2VsQmlkSW1wbAAAAAQAAAABaQAAAAVhcnRJZAAAAAZpc3N1ZXIAAAAFYmlkSWQEAAAADHQwMjg5NDIyOTA5NAkBAAAADGlkQ2FsbGVyRGF0ZQAAAAEFAAAAAWkEAAAAAmlkCAUAAAAMdDAyODk0MjI5MDk0AAAAAl8xBAAAAAZjYWxsZXIIBQAAAAx0MDI4OTQyMjkwOTQAAAACXzIEAAAABGRhdGUIBQAAAAx0MDI4OTQyMjkwOTQAAAACXzMEAAAABmJpZE5icgkBAAAAD2dldEludGVnZXJCeUtleQAAAAEJAAEsAAAAAgIAAAASY3VycmVudF9iaWRhbW91bnRfBQAAAAVhcnRJZAQAAAAKYmlkRGF0YUtleQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAARiaWRfBQAAAAVhcnRJZAIAAAABXwUAAAAGaXNzdWVyAgAAAAFfBQAAAAZjYWxsZXICAAAAAV8FAAAABWJpZElkBAAAAAdiaWREYXRhCQEAAAAVZ2V0U3RyaW5nQnlLZXlPckVycm9yAAAAAgkAASwAAAACBQAAAApiaWREYXRhS2V5AgAAAAVfT1BFTgIAAAANQmlkIG5vdCBmb3VuZAQAAAAKYmlkRGF0YUFycgkABLUAAAACBQAAAAdiaWREYXRhAgAAAAFfBAAAAAdhc3NldElkCQEAAAANZ2V0QmlkQXNzZXRJZAAAAAEJAAGRAAAAAgUAAAAKYmlkRGF0YUFycgAAAAAAAAAAAAQAAAAJYmlkU3RhdHVzAgAAAAhDQU5DRUxFRAkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABCQABLAAAAAIFAAAACmJpZERhdGFLZXkCAAAABV9PUEVOCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACBQAAAApiaWREYXRhS2V5AgAAAAFfBQAAAAliaWRTdGF0dXMJAAEsAAAAAgkAASwAAAACBQAAAAdiaWREYXRhAgAAAAFfCQABpAAAAAEFAAAABGRhdGUJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgIAAAASY3VycmVudF9iaWRhbW91bnRfBQAAAAVhcnRJZAkAAGUAAAACBQAAAAZiaWROYnIAAAAAAAAAAAEJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEFAAAABmNhbGxlcgkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAACmJpZERhdGFBcnIAAAAAAAAAAAEFAAAAB2Fzc2V0SWQFAAAAA25pbAEAAAAYY2FuY2VsQmlkSW1wbFRyYWRpdGlvbmFsAAAABAAAAAFpAAAABWFydElkAAAABmlzc3VlcgAAAAViaWRJZAQAAAAMdDAyODk0MjI5MDk0CQEAAAAMaWRDYWxsZXJEYXRlAAAAAQUAAAABaQQAAAACaWQIBQAAAAx0MDI4OTQyMjkwOTQAAAACXzEEAAAABmNhbGxlcggFAAAADHQwMjg5NDIyOTA5NAAAAAJfMgQAAAAEZGF0ZQgFAAAADHQwMjg5NDIyOTA5NAAAAAJfMwQAAAAGYmlkTmJyCQEAAAAPZ2V0SW50ZWdlckJ5S2V5AAAAAQkAASwAAAACAgAAABJjdXJyZW50X2JpZGFtb3VudF8FAAAABWFydElkBAAAAApiaWREYXRhS2V5CQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAABGJpZF8FAAAABWFydElkAgAAAAFfBQAAAAZpc3N1ZXICAAAAAV8FAAAABmNhbGxlcgIAAAABXwUAAAAFYmlkSWQEAAAAB2JpZERhdGEJAQAAABVnZXRTdHJpbmdCeUtleU9yRXJyb3IAAAACCQABLAAAAAIFAAAACmJpZERhdGFLZXkCAAAABV9PUEVOAgAAAA1CaWQgbm90IGZvdW5kBAAAAApiaWREYXRhQXJyCQAEtQAAAAIFAAAAB2JpZERhdGECAAAAAV8EAAAAB2Fzc2V0SWQJAQAAAA1nZXRCaWRBc3NldElkAAAAAQkAAZEAAAACBQAAAApiaWREYXRhQXJyAAAAAAAAAAAABAAAAAliaWRTdGF0dXMCAAAACENBTkNFTEVEBAAAAAliaWRBbW91bnQJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAApiaWREYXRhQXJyAAAAAAAAAAABBAAAAAxoaWdoZXN0QmlkSWQJAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEJAQAAABJrZXlIaWdoZXN0QmlkQmlkSWQAAAABBQAAAAVhcnRJZAMJAAAAAAAAAgUAAAAFYmlkSWQFAAAADGhpZ2hlc3RCaWRJZAkAAAIAAAABAgAAACFZb3UgY2FuJ3QgY2FuY2VsIHRoZSBoaWdoZXN0IGJpZCEJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQkAASwAAAACBQAAAApiaWREYXRhS2V5AgAAAAVfT1BFTgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgUAAAAKYmlkRGF0YUtleQIAAAABXwUAAAAJYmlkU3RhdHVzCQABLAAAAAIJAAEsAAAAAgUAAAAHYmlkRGF0YQIAAAABXwkAAaQAAAABBQAAAARkYXRlCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAICAAAAEmN1cnJlbnRfYmlkYW1vdW50XwUAAAAFYXJ0SWQJAABlAAAAAgUAAAAGYmlkTmJyAAAAAAAAAAABCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMJAQAAAAdBZGRyZXNzAAAAAQkAAlkAAAABBQAAAAZjYWxsZXIFAAAACWJpZEFtb3VudAUAAAAHYXNzZXRJZAUAAAADbmlsAAAACQAAAAFpAQAAAAdtaW50TmZ0AAAAAwAAAAh0b3RhbE5GVAAAAAlpc3N1ZU1ldGEAAAAKcmVjZWl2ZU5GVAMJAAAAAAAAAggFAAAAAWkAAAAGY2FsbGVyBQAAAAR0aGlzBAAAAA5yZWNlaXZlTkZUQWRkeQkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEFAAAACnJlY2VpdmVORlQEAAAACGlzc3VlTkZUCQAEQgAAAAUJAAEsAAAAAgIAAAAHU0NPTkVYXwkAAaQAAAABCQAAZAAAAAIFAAAACHRvdGFsTkZUAAAAAAAAAAABBQAAAAlpc3N1ZU1ldGEAAAAAAAAAAAEAAAAAAAAAAAAHBAAAAAVpZE5GVAkABDgAAAABBQAAAAhpc3N1ZU5GVAkABRQAAAACCQAETAAAAAIFAAAACGlzc3VlTkZUCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMFAAAADnJlY2VpdmVORlRBZGR5AAAAAAAAAAABBQAAAAVpZE5GVAUAAAADbmlsCQACWAAAAAEFAAAABWlkTkZUCQAAAgAAAAECAAAAHE9ubHkgdGhlIGRBcHAgY2FuIG1pbnQgTkZUJ3MAAAABaQEAAAAKYWRkQXJ0d29yawAAAAoAAAAKc2hhMjU2SGFzaAAAAARuYW1lAAAAC2Rlc2NyaXB0aW9uAAAABHRhZ3MAAAAEdHlwZQAAAApjaWREaXNwbGF5AAAAC2VudGl0bGVtZW50AAAAB3ByZXZpZXcAAAAKY29sbGVjdGlvbgAAAA1zdWJDb2xsZWN0aW9uBAAAAAx0MDE3NzQwMTc3ODEJAQAAAAxpZENhbGxlckRhdGUAAAABBQAAAAFpBAAAAAVhcnRJZAgFAAAADHQwMTc3NDAxNzc4MQAAAAJfMQQAAAAGY2FsbGVyCAUAAAAMdDAxNzc0MDE3NzgxAAAAAl8yBAAAAARkYXRlCAUAAAAMdDAxNzc0MDE3NzgxAAAAAl8zAwkBAAAAD2NvbnRhaW5zRWxlbWVudAAAAAIFAAAABXR5cGVzBQAAAAR0eXBlBAAAAA92YWxpZGF0ZUFydHdvcmsJAQAAABN2YWxpZGF0ZUFydHdvcmtEYXRhAAAABQUAAAAGY2FsbGVyBQAAAApjaWREaXNwbGF5BQAAAARuYW1lBQAAAAtkZXNjcmlwdGlvbgUAAAAEdGFncwMJAQAAAAIhPQAAAAIFAAAAD3ZhbGlkYXRlQXJ0d29yawIAAAAACQAAAgAAAAECAAAAFVNvbWV0aGluZyB3ZW50IHdyb25nIQQAAAAMdDAxODE3MDE4MjEyCQEAAAAPdmFsaWRhdGVQYXltZW50AAAAAQUAAAABaQQAAAAGYW1vdW50CAUAAAAMdDAxODE3MDE4MjEyAAAAAl8xBAAAAAdhc3NldElkCAUAAAAMdDAxODE3MDE4MjEyAAAAAl8yAwkBAAAAASEAAAABCQEAAAAJaXNEZWZpbmVkAAAAAQUAAAAGYW1vdW50CQAAAgAAAAECAAAAFFNvbWV0aGluZyB3ZW50IHdyb25nBAAAAAtwcmV2aWV3RGF0YQMJAQAAAA9jb250YWluc0VsZW1lbnQAAAACBQAAAAxQcmV2aWV3dHlwZXMFAAAABHR5cGUJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAADWtleVByZXZpZXdDaWQAAAACBQAAAAZjYWxsZXIFAAAABWFydElkBQAAAAdwcmV2aWV3BQAAAANuaWwFAAAAA25pbAQAAAAKZW50cnlFeGlzdAkBAAAADmdldFN0cmluZ0J5S2V5AAAAAQkBAAAAEmtleVR4aWRCeUhhc2hPd25lcgAAAAIFAAAACnNoYTI1Nkhhc2gFAAAABmNhbGxlcgMJAQAAAAIhPQAAAAIFAAAACmVudHJ5RXhpc3QCAAAAAAkAAAIAAAABAgAAABRZb3UgYWxyZWFkeSBhZGRlZCBpdAQAAAAJaGFzaEV4aXN0CQEAAAAOZ2V0U3RyaW5nQnlLZXkAAAABCQEAAAAOa2V5T3duZXJCeUhhc2gAAAABBQAAAApzaGEyNTZIYXNoAwkBAAAAAiE9AAAAAgUAAAAJaGFzaEV4aXN0AgAAAAAJAAACAAAAAQIAAAAfVGhpcyBoYXNoIGlzIGFscmVhZHkgcmVnaXN0ZXJlZAkABE4AAAACBQAAAAtwcmV2aWV3RGF0YQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAOa2V5T3duZXJCeUhhc2gAAAABBQAAAApzaGEyNTZIYXNoBQAAAAZjYWxsZXIJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAEmtleVR4aWRCeUhhc2hPd25lcgAAAAIFAAAACnNoYTI1Nkhhc2gFAAAABmNhbGxlcgUAAAAFYXJ0SWQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAAAdrZXlEYXRlAAAAAgUAAAAGY2FsbGVyBQAAAAVhcnRJZAUAAAAEZGF0ZQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAHa2V5TmFtZQAAAAIFAAAABmNhbGxlcgUAAAAFYXJ0SWQFAAAABG5hbWUJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAB2tleURlc2MAAAACBQAAAAZjYWxsZXIFAAAABWFydElkBQAAAAtkZXNjcmlwdGlvbgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAANa2V5RGlzcGxheUNpZAAAAAIFAAAABmNhbGxlcgUAAAAFYXJ0SWQFAAAACmNpZERpc3BsYXkJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAB2tleVR5cGUAAAACBQAAAAZjYWxsZXIFAAAABWFydElkBQAAAAR0eXBlCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAAdrZXlUYWdzAAAAAgUAAAAGY2FsbGVyBQAAAAVhcnRJZAUAAAAEdGFncwkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAACmtleU1heE1pbnQAAAACBQAAAAZjYWxsZXIFAAAABWFydElkAAAAAAAAAAAACQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAJa2V5SXNzdWVkAAAAAgUAAAAGY2FsbGVyBQAAAAVhcnRJZAAAAAAAAAAAAAkABEwAAAACCQEAAAAMQm9vbGVhbkVudHJ5AAAAAgkBAAAACWtleU9uU2FsZQAAAAIFAAAABmNhbGxlcgUAAAAFYXJ0SWQHCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABFrZXlIYXNoQnlUeGlkQWRkcgAAAAIFAAAABmNhbGxlcgUAAAAFYXJ0SWQFAAAACnNoYTI1Nkhhc2gJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAADmtleUVudGl0bGVtZW50AAAAAgUAAAAGY2FsbGVyBQAAAAVhcnRJZAUAAAALZW50aXRsZW1lbnQJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEFAAAAC2ZlZVJlY2VpdmVyBQAAAAZhbW91bnQFAAAAB2Fzc2V0SWQFAAAAA25pbAkAAAIAAAABAgAAAAxVbmtub3duIHR5cGUAAAABaQEAAAALc2VsbEFydHdvcmsAAAAHAAAABWFydElkAAAABXByaWNlAAAAB21heE1pbnQAAAAHYXNzZXRJZAAAAAthdWN0aW9uVHlwZQAAAAhkdXJhdGlvbgAAAAdyb3lhbHR5BAAAAAx0MDI1NzE0MjU3NDcJAQAAAAxpZENhbGxlckRhdGUAAAABBQAAAAFpBAAAAAJpZAgFAAAADHQwMjU3MTQyNTc0NwAAAAJfMQQAAAAGY2FsbGVyCAUAAAAMdDAyNTcxNDI1NzQ3AAAAAl8yBAAAAAthcnR3b3JrTmFtZQkBAAAADmdldFN0cmluZ0J5S2V5AAAAAQkBAAAAB2tleU5hbWUAAAACBQAAAAZjYWxsZXIFAAAABWFydElkAwkAAGYAAAACAAAAAAAAAAAABQAAAAdyb3lhbHR5CQAAAgAAAAECAAAAJFJveWFsdHkgcGVyY2VudGFnZSBzaG91bGQgYmUgYWJvdmUgMAMJAABmAAAAAgUAAAAHcm95YWx0eQAAAAAAAAAAVQkAAAIAAAABAgAAACVSb3lhbHR5IHBlcmNlbnRhZ2Ugc2hvdWxkIGJlIGJlbG93IDg1AwkBAAAAASEAAAABCQEAAAAPY29udGFpbnNFbGVtZW50AAAAAgkABEwAAAACBQAAAAxhdWN0aW9uVHlwZTEJAARMAAAAAgUAAAAMYXVjdGlvblR5cGUyCQAETAAAAAIFAAAADGF1Y3Rpb25UeXBlMwUAAAADbmlsBQAAAAthdWN0aW9uVHlwZQkAAAIAAAABAgAAAB9XZSBkb24ndCBrbm93IHRoaXMgYXVjdGlvbiB0eXBlAwkAAAAAAAACBQAAAAthcnR3b3JrTmFtZQIAAAAACQAAAgAAAAECAAAAI1RoaXMgYXJ0IGRvZXNuJ3QgbWF0Y2ggeW91ciBhY2NvdW50BAAAAAZiaWROYnIJAQAAAA9nZXRJbnRlZ2VyQnlLZXkAAAABCQABLAAAAAICAAAAEmN1cnJlbnRfYmlkYW1vdW50XwUAAAAFYXJ0SWQDCQEAAAABIQAAAAEJAQAAABBhY2NlcHRlZEFzc2V0SWRzAAAAAQUAAAAHYXNzZXRJZAkAAAIAAAABAgAAABVTb21ldGhpbmcgd2VudCB3cm9uZyEDCQEAAAABIQAAAAEJAQAAAA92YWxpZGF0ZU1pblNlbGwAAAACBQAAAAdhc3NldElkBQAAAAVwcmljZQkAAAIAAAABAgAAABVTb21ldGhpbmcgd2VudCB3cm9uZyEEAAAACWNoZWNrVXNlcgkBAAAADHZhbGlkYXRlVXNlcgAAAAEFAAAABmNhbGxlcgMJAQAAAAIhPQAAAAIFAAAACWNoZWNrVXNlcgIAAAAACQAAAgAAAAEFAAAACWNoZWNrVXNlcgQAAAAKYW1vdW50U29sZAkBAAAAD2dldEludGVnZXJCeUtleQAAAAEJAQAAAAlrZXlJc3N1ZWQAAAACBQAAAAZjYWxsZXIFAAAABWFydElkBAAAAAptYXhDYW5TZWxsCQEAAAAPZ2V0SW50ZWdlckJ5S2V5AAAAAQkBAAAACmtleU1heE1pbnQAAAACBQAAAAZjYWxsZXIFAAAABWFydElkAwkAAGYAAAACBQAAAAdtYXhNaW50AAAAAAAAACcQCQAAAgAAAAECAAAAHjEwMDAwIGVkaXRpb25zIG1heCBwZXIgYXJ0d29yawMDCQEAAAACIT0AAAACBQAAAAphbW91bnRTb2xkAAAAAAAAAAAACQAAAAAAAAIFAAAACmFtb3VudFNvbGQFAAAACm1heENhblNlbGwHCQAAAgAAAAECAAAAFE1heCBlZGl0aW9uIHJlYWNoZWQuAwMJAABmAAAAAgUAAAAKYW1vdW50U29sZAAAAAAAAAAAAAkBAAAAAiE9AAAAAgUAAAAKbWF4Q2FuU2VsbAUAAAAHbWF4TWludAcJAAACAAAAAQIAAAAmQ2Fubm90IGNoYW5nZSBtYXhpbXVtIGlzc3VhYmxlIGFueW1vcmUDAwkAAGYAAAACBQAAAAZiaWROYnIAAAAAAAAAAAAJAQAAAAIhPQAAAAIFAAAACm1heENhblNlbGwFAAAAB21heE1pbnQHCQAAAgAAAAECAAAAMUNhbm5vdCBjaGFuZ2UgbWF4aW11bSBpc3N1YWJsZSB3aXRoIGFjdGl2ZSBvcmRlcnMEAAAACnNlbGxTdGF0dXMDAwkAAGYAAAACBQAAAAVwcmljZQAAAAAAAAAAAAkAAGYAAAACBQAAAAdtYXhNaW50AAAAAAAAAAAABwYHBAAAAAllbmRIZWlnaHQJAABkAAAAAgUAAAAIZHVyYXRpb24FAAAABmhlaWdodAkABEwAAAACCQEAAAAMQm9vbGVhbkVudHJ5AAAAAgkBAAAACWtleU9uU2FsZQAAAAIFAAAABmNhbGxlcgUAAAAFYXJ0SWQFAAAACnNlbGxTdGF0dXMJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAAAhrZXlQcmljZQAAAAIFAAAABmNhbGxlcgUAAAAFYXJ0SWQFAAAABXByaWNlCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAKa2V5TWF4TWludAAAAAIFAAAABmNhbGxlcgUAAAAFYXJ0SWQFAAAAB21heE1pbnQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAAAtrZXlEdXJhdGlvbgAAAAIFAAAABmNhbGxlcgUAAAAFYXJ0SWQFAAAACGR1cmF0aW9uCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAMa2V5RW5kSGVpZ2h0AAAAAgUAAAAGY2FsbGVyBQAAAAVhcnRJZAUAAAAJZW5kSGVpZ2h0CQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABJrZXlBc3NldElkQWNjZXB0ZWQAAAACBQAAAAZjYWxsZXIFAAAABWFydElkBQAAAAdhc3NldElkCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAA5rZXlBdWN0aW9uVHlwZQAAAAIFAAAABmNhbGxlcgUAAAAFYXJ0SWQFAAAAC2F1Y3Rpb25UeXBlCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAKa2V5Um95YWx0eQAAAAIFAAAABmNhbGxlcgUAAAAFYXJ0SWQFAAAAB3JveWFsdHkFAAAAA25pbAAAAAFpAQAAAApidXlBcnR3b3JrAAAAAgAAAAVhcnRJZAAAAAZpc3N1ZXIEAAAAC2F1Y3Rpb25UeXBlCQEAAAAOZ2V0U3RyaW5nQnlLZXkAAAABCQEAAAAOa2V5QXVjdGlvblR5cGUAAAACBQAAAAZpc3N1ZXIFAAAABWFydElkAwkAAAAAAAACBQAAAAthdWN0aW9uVHlwZQUAAAAMYXVjdGlvblR5cGUzCQEAAAAHYnV5TWludAAAAAYFAAAAAWkFAAAABWFydElkBQAAAAZpc3N1ZXICAAAAAAIAAAAABwkAAAIAAAABAgAAADREaXJlY3QgYnV5IG9ubHkgYWxsb3dlZCB3aGVuIG5vIGF1Y3Rpb24gdHlwZSBpcyBzZXQhAAAAAWkBAAAACnVwZGF0ZVRhZ3MAAAADAAAABmFydGlzdAAAAAVhcnRJZAAAAAR0YWdzBAAAAAZjYWxsZXIJAAQlAAAAAQkBAAAAFGFkZHJlc3NGcm9tUHVibGljS2V5AAAAAQgFAAAAAWkAAAAPY2FsbGVyUHVibGljS2V5AwkBAAAAD2NvbnRhaW5zRWxlbWVudAAAAAIFAAAABm93bmVycwUAAAAGY2FsbGVyAwkAAGYAAAACCQABkAAAAAEJAAS1AAAAAgUAAAAEdGFncwIAAAABLAAAAAAAAAAABQkAAAIAAAABAgAAAAs1IHRhZ3MgbWF4LgQAAAAHdGFnc09sZAkBAAAAFWdldFN0cmluZ0J5S2V5T3JFcnJvcgAAAAIJAQAAAAdrZXlUYWdzAAAAAgUAAAAGYXJ0aXN0BQAAAAVhcnRJZAIAAAAvTm8gdGFncyBjcmVhdGVkIHdpdGggdGhpcyBrZXksIHNvIGNhbid0IHVwZGF0ZSEDCQAAAAAAAAIFAAAABHRhZ3MFAAAAB3RhZ3NPbGQJAAACAAAAAQIAAAAeVGFncyBhcmUgdGhlIHNhbWUgYXMgb2xkIHRhZ3MhCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAAdrZXlUYWdzAAAAAgUAAAAGYXJ0aXN0BQAAAAVhcnRJZAUAAAAEdGFncwUAAAADbmlsCQAAAgAAAAECAAAAAm5vAAAAAWkBAAAAC2RlbGV0ZUVudHJ5AAAAAQAAAAVlbnRyeQQAAAAGY2FsbGVyCQAEJQAAAAEJAQAAABRhZGRyZXNzRnJvbVB1YmxpY0tleQAAAAEIBQAAAAFpAAAAD2NhbGxlclB1YmxpY0tleQMJAQAAAA9jb250YWluc0VsZW1lbnQAAAACBQAAAAZvd25lcnMFAAAABmNhbGxlcgkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABBQAAAAVlbnRyeQUAAAADbmlsCQAAAgAAAAECAAAAAm5vAAAAAWkBAAAABnNldEJpZAAAAAIAAAAFYXJ0SWQAAAAGaXNzdWVyBAAAAAthdWN0aW9uVHlwZQkBAAAADmdldFN0cmluZ0J5S2V5AAAAAQkBAAAADmtleUF1Y3Rpb25UeXBlAAAAAgUAAAAGaXNzdWVyBQAAAAVhcnRJZAMJAAAAAAAAAgUAAAALYXVjdGlvblR5cGUFAAAADGF1Y3Rpb25UeXBlMQkBAAAAFHNldEJpZE5vblRyYWRpdGlvbmFsAAAAAwUAAAABaQUAAAAFYXJ0SWQFAAAABmlzc3VlcgMJAAAAAAAAAgUAAAALYXVjdGlvblR5cGUFAAAADGF1Y3Rpb25UeXBlMgkBAAAAEXNldEJpZFRyYWRpdGlvbmFsAAAAAwUAAAABaQUAAAAFYXJ0SWQFAAAABmlzc3VlcgkAAAIAAAABCQABLAAAAAIJAAEsAAAAAgIAAAAWVW5rbm93biBhdWN0aW9uIHR5cGUgOgUAAAALYXVjdGlvblR5cGUCAAAAGywgcGxlYXNlIGNvbnRhY3QgdGhlIGFkbWlucwAAAAFpAQAAAAlhY2NlcHRCaWQAAAAEAAAABWFydElkAAAABmlzc3VlcgAAAAViaWRJZAAAAAhiaWRPd25lcgQAAAALYXVjdGlvblR5cGUJAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEJAQAAAA5rZXlBdWN0aW9uVHlwZQAAAAIFAAAABmlzc3VlcgUAAAAFYXJ0SWQDCQAAAAAAAAIFAAAAC2F1Y3Rpb25UeXBlBQAAAAxhdWN0aW9uVHlwZTEJAQAAABdhY2NlcHRCaWROb25UcmFkaXRpb25hbAAAAAUFAAAAAWkFAAAABWFydElkBQAAAAZpc3N1ZXIFAAAABWJpZElkBQAAAAhiaWRPd25lcgMJAAAAAAAAAgUAAAALYXVjdGlvblR5cGUFAAAADGF1Y3Rpb25UeXBlMgkBAAAAFGFjY2VwdEJpZFRyYWRpdGlvbmFsAAAABQUAAAABaQUAAAAFYXJ0SWQFAAAABmlzc3VlcgUAAAAFYmlkSWQFAAAACGJpZE93bmVyCQAAAgAAAAEJAAEsAAAAAgkAASwAAAACAgAAABZVbmtub3duIGF1Y3Rpb24gdHlwZSA6BQAAAAthdWN0aW9uVHlwZQIAAAAbLCBwbGVhc2UgY29udGFjdCB0aGUgYWRtaW5zAAAAAWkBAAAACWNhbmNlbEJpZAAAAAMAAAAFYXJ0SWQAAAAGaXNzdWVyAAAABWJpZElkBAAAAAthdWN0aW9uVHlwZQkBAAAADmdldFN0cmluZ0J5S2V5AAAAAQkBAAAADmtleUF1Y3Rpb25UeXBlAAAAAgUAAAAGaXNzdWVyBQAAAAVhcnRJZAMJAAAAAAAAAgUAAAALYXVjdGlvblR5cGUFAAAADGF1Y3Rpb25UeXBlMQkBAAAADWNhbmNlbEJpZEltcGwAAAAEBQAAAAFpBQAAAAVhcnRJZAUAAAAGaXNzdWVyBQAAAAViaWRJZAkBAAAAGGNhbmNlbEJpZEltcGxUcmFkaXRpb25hbAAAAAQFAAAAAWkFAAAABWFydElkBQAAAAZpc3N1ZXIFAAAABWJpZElkAAAAAC/Gl+M=", "height": 1846932, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: GrUNP9LPh2PzMkKYAjaqgF12qN6gLCtjJsqT9d2LGhbL Next: 7VTqmvd7HpRFhJu437wtwKaidkuSyZr2ZPBrq9ELPEHz Diff:
OldNewDifferences
99
1010 let certDapp = "3MxcXrNbMZKYaSrhcfeMm2hZnBeCu3yRWsw"
1111
12-let userDapp = value(addressFromString("3N9cQgZFPHHVu8wqsn2DkQFehg3h8CNiooA"))
12+let userDapp = value(addressFromString("3Mzv4UHGRCC5KknZb8x5wfFUQzzpY9G4Gn4"))
1313
1414 let whitelistDapp = value(addressFromString("3N9xZYGpzMFDXvXuctmU6zV8qSzm2ZfF31f"))
1515
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let unitTest = false
55
66 let oracleFee = value(addressFromString("3MpZQjzGogmifcEKe8mDd6ribL7nxT9ACye"))
77
88 let feeReceiver = "3N65xLq8JcCeaEiR1TJQ7dBqXBvEy6E48Wz"
99
1010 let certDapp = "3MxcXrNbMZKYaSrhcfeMm2hZnBeCu3yRWsw"
1111
12-let userDapp = value(addressFromString("3N9cQgZFPHHVu8wqsn2DkQFehg3h8CNiooA"))
12+let userDapp = value(addressFromString("3Mzv4UHGRCC5KknZb8x5wfFUQzzpY9G4Gn4"))
1313
1414 let whitelistDapp = value(addressFromString("3N9xZYGpzMFDXvXuctmU6zV8qSzm2ZfF31f"))
1515
1616 let USDNAssetId = base58'132maRL3uF35tc2bpRih9D6MYq5DR6H28zkop786dKyu'
1717
1818 let owners = [getString(oracleFee, "owner1"), getString(oracleFee, "owner2")]
1919
2020 let types = ["IMAGE", "PDF", "VIDEO"]
2121
2222 let Previewtypes = ["PDF"]
2323
2424 let USDNFirstSellCut = 150
2525
2626 let dappRunning = valueOrElse(getBoolean(userDapp, "conf_dapp_is_running"), true)
2727
2828 let maintenanceMSG = valueOrElse(getString(userDapp, "conf_maintenance_msg"), "")
2929
3030 let userSuspended = "SUSPENDED"
3131
3232 let userRemoved = "REMOVED"
3333
3434 let userUnregistered = "UNREGISTERED"
3535
3636 let auctionType1 = "BIDTYPE"
3737
3838 let auctionType2 = "TRADITIONAL"
3939
4040 let auctionType3 = "DIRECT"
4141
4242 func getStringByKeyFromUsers (key) = valueOrElse(getString(userDapp, key), "")
4343
4444
4545 func getStringByKey (key) = valueOrElse(getString(this, key), "")
4646
4747
4848 func getStringByKeyOrError (key,error) = valueOrErrorMessage(getString(this, key), error)
4949
5050
5151 func getIntegerByKeyFromOracle (key) = valueOrErrorMessage(getInteger(oracleFee, key), "Integer undefine or 0 in oracle")
5252
5353
5454 func getIntegerByKey (key) = valueOrElse(getInteger(this, key), 0)
5555
5656
5757 func checkWhitelist (key) = valueOrElse(getInteger(whitelistDapp, key), 0)
5858
5959
6060 func getBooleanByKey (key) = valueOrElse(getBoolean(this, key), false)
6161
6262
6363 func validateHash (hash) = (size(hash) == 64)
6464
6565
6666 func keyUserStatus (caller) = ("user_status_" + caller)
6767
6868
6969 func keyDate (caller,artId) = ((("art_date_" + artId) + "_") + caller)
7070
7171
7272 func keyName (caller,artId) = ((("art_name_" + artId) + "_") + caller)
7373
7474
7575 func keyDesc (caller,artId) = ((("art_desc_" + artId) + "_") + caller)
7676
7777
7878 func keyDisplayCid (caller,artId) = ((("art_display_cid_" + artId) + "_") + caller)
7979
8080
8181 func keyPreviewCid (caller,artId) = ((("art_preview_cid_" + artId) + "_") + caller)
8282
8383
8484 func keyMaxMint (caller,artId) = ((("art_maxmint_" + artId) + "_") + caller)
8585
8686
8787 func keyHighestBidBidId (artId) = ("art_highestBidBidId_" + artId)
8888
8989
9090 func keyBidId (bidId) = ("bid_" + bidId)
9191
9292
9393 func keyDuration (caller,artId) = ((("art_duration_" + artId) + "_") + caller)
9494
9595
9696 func keyEndHeight (caller,artId) = ((("art_endheight_" + artId) + "_") + caller)
9797
9898
9999 func keyAuctionType (caller,artId) = ((("art_auctiontype_" + artId) + "_") + caller)
100100
101101
102102 func keyIssued (caller,artId) = ((("art_issued_" + artId) + "_") + caller)
103103
104104
105105 func KeyNftIssuer (nftId) = ("nft_issued_" + nftId)
106106
107107
108108 func KeyNftArtId (nftId) = ("nft_artId_" + nftId)
109109
110110
111111 func keyRoyalty (caller,artId) = ((("art_royalty_" + artId) + "_") + caller)
112112
113113
114114 func keyOnSale (caller,artId) = ((("art_onsale_" + artId) + "_") + caller)
115115
116116
117117 func keyEntitlement (caller,artId) = ((("art_entitlement_" + artId) + "_") + caller)
118118
119119
120120 func keyTags (caller,artId) = ((("art_tags_" + artId) + "_") + caller)
121121
122122
123123 func keyType (caller,artId) = ((("art_type_" + artId) + "_") + caller)
124124
125125
126126 func keyPrice (caller,artId) = ((("art_price_" + artId) + "_") + caller)
127127
128128
129129 func keyAssetIdAccepted (caller,artId) = ((("art_assetAccepted_" + artId) + "_") + caller)
130130
131131
132132 func keyHashByTxidAddr (caller,txid) = ((("get_hashbytxidaddr_" + txid) + "_") + caller)
133133
134134
135135 func keyOwnerByHash (sha256Hash) = ("get_owner_by_hash_" + sha256Hash)
136136
137137
138138 func keyTxidByHashOwner (sha256Hash,caller) = ("get_txid_by_hash_owner_" + toBase58String(sha256_16Kb(toBytes((sha256Hash + caller)))))
139139
140140
141141 let currentCertificationPrice = getIntegerByKeyFromOracle(("certification_fee_" + toBase58String(USDNAssetId)))
142142
143143 func getAmountByBidId (bidId) = valueOrElse(getIntegerByKey(keyBidId(bidId)), 0)
144144
145145
146146 func getAmountHighestBidByArtId (artId) = {
147147 let bidId = getStringByKey(keyHighestBidBidId(artId))
148148 if ((bidId == ""))
149149 then 0
150150 else getAmountByBidId(bidId)
151151 }
152152
153153
154154 func validateString (str,max) = if ((size(str) == 0))
155155 then throw("Field cannot be is empty")
156156 else if ((size(str) > max))
157157 then throw((str + " is too long"))
158158 else true
159159
160160
161161 func validateUser (caller) = {
162162 let userStatus = valueOrElse(getString(userDapp, keyUserStatus(caller)), userUnregistered)
163163 if ((userStatus == userUnregistered))
164164 then "Register this account first with 'Account' tab"
165165 else if ((userStatus == userSuspended))
166166 then "Account suspended"
167167 else if ((userStatus == userRemoved))
168168 then "Account removed"
169169 else ""
170170 }
171171
172172
173173 func validateArtworkData (caller,cidDisplay,name,description,tags) = {
174174 let checkUser = validateUser(caller)
175175 if ((checkUser != ""))
176176 then throw(checkUser)
177177 else if ((size(cidDisplay) == 0))
178178 then throw("Display CID cannot be empty")
179179 else if ((size(cidDisplay) != 46))
180180 then throw("This doesn't seem a valid CID!")
181181 else if (!(validateString(name, 100)))
182182 then throw("100 Char. max name")
183183 else if (!(validateString(description, 1000)))
184184 then throw("1000 Char. max description")
185185 else if ((size(split(tags, ",")) > 5))
186186 then throw("5 tags max.")
187187 else ""
188188 }
189189
190190
191191 func isPayment (i) = if ((size(i.payments) == 0))
192192 then throw("No payment attached")
193193 else {
194194 let payment = value(i.payments[0])
195195 let amount = value(payment.amount)
196196 $Tuple2(payment, amount)
197197 }
198198
199199
200200 func validatePayment (i) = {
201201 let t089829018 = isPayment(i)
202202 let payment = t089829018._1
203203 let amount = t089829018._2
204204 let assetId = if (if (isDefined(payment.assetId))
205205 then (payment.assetId == USDNAssetId)
206206 else false)
207207 then payment.assetId
208208 else throw("Only USDN token accepted as transaction fee")
209209 if ((amount != currentCertificationPrice))
210210 then throw(((("Payment amount should be " + toString(currentCertificationPrice)) + " but is: ") + toString(amount)))
211211 else $Tuple2(amount, assetId)
212212 }
213213
214214
215215 func isArtMinted (addrToUse,artId) = match getInteger(this, keyIssued(addrToUse, artId)) {
216216 case b: Int =>
217217 if ((b != 0))
218218 then true
219219 else false
220220 case _ =>
221221 false
222222 }
223223
224224
225225 func validatePriceAssetId (i,priceAssetId,artworkPrice) = {
226226 let t096119647 = isPayment(i)
227227 let payment = t096119647._1
228228 let amount = t096119647._2
229229 let assetId = if (!(isDefined(payment.assetId)))
230230 then throw("Wrong asset id")
231231 else if (if ((size(priceAssetId) > 0))
232232 then (toBase58String(value(payment.assetId)) == priceAssetId)
233233 else false)
234234 then payment.assetId
235235 else throw("Wrong asset id")
236236 if (if ((assetId == unit))
237237 then (priceAssetId != "")
238238 else false)
239239 then throw("Wrong asset id")
240240 else if ((artworkPrice != amount))
241241 then throw(((("Payment don't match " + toString(artworkPrice)) + " ") + toString(amount)))
242242 else $Tuple2(amount, assetId)
243243 }
244244
245245
246246 func acceptedAssetIds (assetId) = if ((assetId != toBase58String(USDNAssetId)))
247247 then throw("Only USDN accepted")
248248 else true
249249
250250
251251 func validateMinSell (assetId,price) = {
252252 let minSellSconex = if (unitTest)
253253 then 1
254254 else (currentCertificationPrice * 2)
255255 if (if (if ((assetId == toBase58String(USDNAssetId)))
256256 then (minSellSconex > price)
257257 else false)
258258 then (price != 0)
259259 else false)
260260 then throw(("Wrong minimum sell price " + toString(minSellSconex)))
261261 else true
262262 }
263263
264264
265265 func getBidAssetId (assetId) = if ((assetId == "WAVES"))
266266 then throw("Only USDN is accepted!")
267267 else fromBase58String(assetId)
268268
269269
270270 func getPriceAssetIdFromBid (bidDataKey) = {
271271 let bidData = getStringByKey((bidDataKey + "_OPEN"))
272272 if ((bidData == ""))
273273 then throw("Bid not found")
274274 else {
275275 let bidDataArr = split(bidData, "_")
276276 let bidAmount = parseIntValue(bidDataArr[1])
277277 let bidAssetId = getBidAssetId(bidDataArr[0])
278278 if ((0 >= bidAmount))
279279 then throw("Wrong amount")
280280 else $Tuple2(bidAmount, bidAssetId)
281281 }
282282 }
283283
284284
285285 func idCallerDate (i) = if (!(dappRunning))
286286 then throw(maintenanceMSG)
287287 else $Tuple3(toBase58String(i.transactionId), toBase58String(i.caller.bytes), lastBlock.timestamp)
288288
289289
290290 func isBidCheck (i,issuer,bidOwner,bidId) = if (if (if ((toBase58String(i.caller.bytes) == issuer))
291291 then (bidOwner != "")
292292 else false)
293293 then (bidId != "")
294294 else false)
295295 then true
296296 else false
297297
298298
299299 func getArtData (i,issuer,artId,isBid) = {
300300 let callerIsIssuer = (toBase58String(i.caller.bytes) == issuer)
301301 let totalNFT = getIntegerByKey("total_nft_issued")
302302 let artworkName = getStringByKey(keyName(issuer, artId))
303303 if ((artworkName == ""))
304304 then throw("Art doesn't exist")
305305 else {
306306 let isOnSale = getBooleanByKey(keyOnSale(issuer, artId))
307307 let amountSold = getIntegerByKey(keyIssued(issuer, artId))
308308 let artworkPrice = valueOrElse(getIntegerByKey(keyPrice(issuer, artId)), (currentCertificationPrice * 2))
309309 let priceAssetId = if (callerIsIssuer)
310310 then toBase58String(USDNAssetId)
311311 else getStringByKey(keyAssetIdAccepted(issuer, artId))
312312 let maxCanSell = getIntegerByKey(keyMaxMint(issuer, artId))
313313 if (if (if (!(isBid))
314314 then !(callerIsIssuer)
315315 else false)
316316 then if (if ((0 >= artworkPrice))
317317 then true
318318 else !(isOnSale))
319319 then true
320320 else (0 >= maxCanSell)
321321 else false)
322322 then throw("Art not for sale")
323323 else if (if (if (!(isBid))
324324 then callerIsIssuer
325325 else false)
326326 then (0 >= maxCanSell)
327327 else false)
328328 then throw("Max issuable not set")
329329 else $Tuple7(totalNFT, artworkName, amountSold, artworkPrice, priceAssetId, maxCanSell, isOnSale)
330330 }
331331 }
332332
333333
334334 func getBidData (i,caller,issuer,artId,bidOwner,bidId,priceAssetId,artworkPrice,isBid) = {
335335 let checkUser = validateUser(issuer)
336336 if (if (isBid)
337337 then (checkUser != "")
338338 else false)
339339 then throw(checkUser)
340340 else {
341341 let bidDataKey = ((((((("bid_" + artId) + "_") + issuer) + "_") + bidOwner) + "_") + bidId)
342342 let t01351913648 = if (isBid)
343343 then getPriceAssetIdFromBid(bidDataKey)
344344 else validatePriceAssetId(i, priceAssetId, artworkPrice)
345345 let amount = t01351913648._1
346346 let assetId = t01351913648._2
347347 $Tuple3(bidDataKey, amount, assetId)
348348 }
349349 }
350350
351351
352352 func getCommissionData (issuer,assetId,amount,amountSold,maxCanSell) = {
353353 let isWhitelisted = checkWhitelist(issuer)
354354 let cut = if ((isWhitelisted > height))
355355 then 0
356356 else if ((assetId == USDNAssetId))
357357 then USDNFirstSellCut
358358 else throw("Only USDN is accepted!")
359359 let amountForSconex = fraction(amount, cut, 1000)
360360 let amountForCreator = (amount - amountForSconex)
361361 if ((amountSold == maxCanSell))
362362 then throw("Art sold out")
363363 else {
364364 let newAmountSold = (amountSold + 1)
365365 $Tuple3(amountForSconex, amountForCreator, newAmountSold)
366366 }
367367 }
368368
369369
370370 func getIssueData (issuer,artId,artworkName,newAmountSold,maxCanSell,totalNFT,caller,bidOwner,bidId,i,isOnSale) = {
371371 let issueMeta = ((((((((("Creator: " + issuer) + ",ArtID: ") + artId) + ",Artwork name: ") + artworkName) + ",Issue: ") + toString(newAmountSold)) + "/") + toString(maxCanSell))
372372 let sellStatus = if (if ((newAmountSold == maxCanSell))
373373 then true
374374 else !(isOnSale))
375375 then false
376376 else true
377377 let receiveNFT = if ((bidOwner != ""))
378378 then addressFromStringValue(bidOwner)
379379 else i.caller
380380 $Tuple3(sellStatus, receiveNFT, issueMeta)
381381 }
382382
383383
384384 func calculateRarity (mintIndex) = if ((4 > mintIndex))
385385 then "SSR"
386386 else if ((11 > mintIndex))
387387 then "SR"
388388 else if ((101 > mintIndex))
389389 then "R"
390390 else "N"
391391
392392
393393 func getBidKeyVal (assetId,bidDataKey,date) = {
394394 let assetIdBid = if (!(isDefined(assetId)))
395395 then throw("Only USDN is accepted")
396396 else toBase58String(value(assetId))
397397 let bidData = getStringByKey((bidDataKey + "_OPEN"))
398398 let bidDelOld = DeleteEntry((bidDataKey + "_OPEN"))
399399 let bidUpdate = StringEntry((bidDataKey + "_CLOSED"), ((bidData + "_") + toString(date)))
400400 $Tuple3(assetIdBid, bidDelOld, bidUpdate)
401401 }
402402
403403
404404 func buyMint (i,artId,issuer,bidId,bidOwner,isBid) = {
405405 let callerData = idCallerDate(i)
406406 let id = callerData._1
407407 let caller = callerData._2
408408 let date = callerData._3
409409 let artData = getArtData(i, issuer, artId, isBid)
410410 let totalNFT = artData._1
411411 let artworkName = artData._2
412412 let amountSold = artData._3
413413 let artworkPrice = artData._4
414414 let priceAssetId = artData._5
415415 let maxCanSell = artData._6
416416 let isOnSale = artData._7
417417 let bidData = getBidData(i, caller, issuer, artId, bidOwner, bidId, priceAssetId, artworkPrice, isBid)
418418 let bidDataKey = bidData._1
419419 let amount = bidData._2
420420 let assetId = bidData._3
421421 let commisionData = getCommissionData(issuer, value(assetId), amount, amountSold, maxCanSell)
422422 let amountForSconex = commisionData._1
423423 let amountForCreator = commisionData._2
424424 let newAmountSold = commisionData._3
425425 let issuerData = getIssueData(issuer, artId, artworkName, newAmountSold, maxCanSell, totalNFT, caller, bidOwner, bidId, i, isOnSale)
426426 let sellStatus = issuerData._1
427427 let receiveNFT = issuerData._2
428428 let issueMeta = issuerData._3
429429 let idNFTInvoke = invoke(this, "mintNft", [totalNFT, issueMeta, toString(receiveNFT)], nil)
430430 if ((idNFTInvoke == idNFTInvoke))
431431 then {
432432 let idNFT = match idNFTInvoke {
433433 case r: String =>
434434 r
435435 case _ =>
436436 throw("Incorrect invoke result")
437437 }
438438 let bidKeyValue = getBidKeyVal(assetId, bidDataKey, date)
439439 let assetIdBid = bidKeyValue._1
440440 let bidDelOld = bidKeyValue._2
441441 let bidUpdate = bidKeyValue._3
442442 let soldKey = ((((((("art_sold_" + toString(newAmountSold)) + "_of_") + toString(maxCanSell)) + "_") + artId) + "_") + issuer)
443443 let rarity = calculateRarity(newAmountSold)
444444 let soldValue = if (!(isBid))
445445 then ((((((((((caller + "_") + toString(date)) + "_") + id) + "_") + toString(artworkPrice)) + "_") + priceAssetId) + "_") + idNFT)
446446 else ((((((((((toString(receiveNFT) + "_") + toString(date)) + "_") + id) + "_") + toString(amount)) + "_") + assetIdBid) + "_") + idNFT)
447447 let soldData = StringEntry(soldKey, soldValue)
448448 let buyRes = [IntegerEntry(keyIssued(issuer, artId), newAmountSold), StringEntry(("nft_" + idNFT), soldKey), StringEntry(("nft_rarity_" + idNFT), rarity), IntegerEntry("total_nft_issued", (totalNFT + 1)), BooleanEntry(keyOnSale(issuer, artId), sellStatus), ScriptTransfer(Address(fromBase58String(issuer)), amountForCreator, assetId), ScriptTransfer(Address(fromBase58String(feeReceiver)), amountForSconex, assetId), StringEntry(KeyNftIssuer(idNFT), issuer), StringEntry(KeyNftArtId(idNFT), artId)]
449449 let res = invoke(addressFromStringValue(certDapp), "createCert", [toString(receiveNFT), idNFT, issuer], nil)
450450 if ((res == res))
451451 then if (isBid)
452452 then (((buyRes :+ soldData) :+ bidUpdate) :+ bidDelOld)
453453 else soldData :: buyRes
454454 else throw("Strict value is not equal to itself.")
455455 }
456456 else throw("Strict value is not equal to itself.")
457457 }
458458
459459
460460 func setBidNonTraditional (i,artId,issuer) = {
461461 let t02770927747 = idCallerDate(i)
462462 let id = t02770927747._1
463463 let caller = t02770927747._2
464464 let date = t02770927747._3
465465 let t02775227788 = isPayment(i)
466466 let payment = t02775227788._1
467467 let amount = t02775227788._2
468468 let assetId = if (!(isDefined(payment.assetId)))
469469 then throw("Only USDN is accepted!")
470470 else toBase58String(value(payment.assetId))
471471 let bidNbr = getIntegerByKey(("current_bidamount_" + artId))
472472 let minArtworkPrice = valueOrElse(getIntegerByKey(keyPrice(issuer, artId)), (currentCertificationPrice * 2))
473473 if (!(acceptedAssetIds(assetId)))
474474 then throw("asset not accepted")
475475 else if ((minArtworkPrice > amount))
476476 then throw("Bid is below min price!")
477477 else {
478478 let amountSold = getIntegerByKey(keyIssued(issuer, artId))
479479 let maxCanSell = getIntegerByKey(keyMaxMint(issuer, artId))
480480 if ((0 >= maxCanSell))
481481 then throw("No max edition set for this artwork")
482482 else if ((amountSold >= maxCanSell))
483483 then throw("Sold out, you cannot bid")
484484 else [StringEntry((((((((("bid_" + artId) + "_") + issuer) + "_") + caller) + "_") + id) + "_OPEN"), ((((assetId + "_") + toString(amount)) + "_") + toString(date))), IntegerEntry(("current_bidamount_" + artId), (bidNbr + 1))]
485485 }
486486 }
487487
488488
489489 func setBidTraditional (i,artId,issuer) = {
490490 let endHeight = getIntegerByKey(keyEndHeight(issuer, artId))
491491 let highestBid = getAmountHighestBidByArtId(artId)
492492 if ((height > endHeight))
493493 then throw("This auction is finished already!")
494494 else {
495495 let callderData = idCallerDate(i)
496496 let id = callderData._1
497497 let caller = callderData._2
498498 let date = callderData._3
499499 let isPaymentVar = isPayment(i)
500500 let payment = isPaymentVar._1
501501 let amount = isPaymentVar._2
502502 if ((highestBid >= amount))
503503 then throw(("Please place a bid higher than: " + toString(highestBid)))
504504 else {
505505 let assetId = if (!(isDefined(payment.assetId)))
506506 then throw("Only USDN is accepted!")
507507 else toBase58String(value(payment.assetId))
508508 let bidNbr = getIntegerByKey(("current_bidamount_" + artId))
509509 let minArtworkPrice = valueOrElse(getIntegerByKey(keyPrice(issuer, artId)), (currentCertificationPrice * 2))
510510 if (!(acceptedAssetIds(assetId)))
511511 then throw("asset not accepted")
512512 else if ((minArtworkPrice > amount))
513513 then throw("Bid is below min price!")
514514 else {
515515 let amountSold = getIntegerByKey(keyIssued(issuer, artId))
516516 let maxCanSell = getIntegerByKey(keyMaxMint(issuer, artId))
517517 if ((0 >= maxCanSell))
518518 then throw("No max edition set for this artwork")
519519 else if ((amountSold >= maxCanSell))
520520 then throw("Sold out, you cannot bid")
521521 else [StringEntry((((((((("bid_" + artId) + "_") + issuer) + "_") + caller) + "_") + id) + "_OPEN"), ((((assetId + "_") + toString(amount)) + "_") + toString(date))), IntegerEntry(("current_bidamount_" + artId), (bidNbr + 1)), StringEntry(keyHighestBidBidId(artId), toBase58String(i.transactionId)), IntegerEntry(keyBidId(toBase58String(i.transactionId)), amount)]
522522 }
523523 }
524524 }
525525 }
526526
527527
528528 func acceptBidNonTraditional (i,artId,issuer,bidId,bidOwner) = {
529529 let caller = toBase58String(i.caller.bytes)
530530 if ((caller != issuer))
531531 then throw("You cannot do this action")
532532 else buyMint(i, artId, issuer, bidId, bidOwner, true)
533533 }
534534
535535
536536 func restartAuction (artId,issuer) = {
537537 let amountSold = getIntegerByKey(keyIssued(issuer, artId))
538538 let maxCanSell = getIntegerByKey(keyMaxMint(issuer, artId))
539539 let oldEndHeight = getIntegerByKey(keyEndHeight(issuer, artId))
540540 let duration = getIntegerByKey(keyDuration(issuer, artId))
541541 let endHeight = (duration + height)
542542 if ((height > oldEndHeight))
543543 then if ((amountSold == maxCanSell))
544544 then throw("Can't restart auction, max amount sold")
545545 else [IntegerEntry(keyEndHeight(issuer, artId), endHeight), DeleteEntry(keyHighestBidBidId(artId))]
546546 else throw("Previous auction isn't completed yet")
547547 }
548548
549549
550550 func acceptBidTraditional (i,artId,issuer,bidId,bidOwner) = {
551551 let endHeight = getIntegerByKey(keyEndHeight(issuer, artId))
552552 let highestBidId = getStringByKey(keyHighestBidBidId(artId))
553553 if ((height > endHeight))
554554 then if ((bidId == highestBidId))
555555 then {
556556 let buyMintData = buyMint(i, artId, issuer, bidId, bidOwner, true)
557557 let restartAuctionData = restartAuction(artId, issuer)
558558 (restartAuctionData ++ buyMintData)
559559 }
560560 else throw("This is not the winning bid!")
561561 else throw("This auction is not yet finished!")
562562 }
563563
564564
565565 func cancelBidImpl (i,artId,issuer,bidId) = {
566566 let t02894229094 = idCallerDate(i)
567567 let id = t02894229094._1
568568 let caller = t02894229094._2
569569 let date = t02894229094._3
570570 let bidNbr = getIntegerByKey(("current_bidamount_" + artId))
571571 let bidDataKey = ((((((("bid_" + artId) + "_") + issuer) + "_") + caller) + "_") + bidId)
572572 let bidData = getStringByKeyOrError((bidDataKey + "_OPEN"), "Bid not found")
573573 let bidDataArr = split(bidData, "_")
574574 let assetId = getBidAssetId(bidDataArr[0])
575575 let bidStatus = "CANCELED"
576576 [DeleteEntry((bidDataKey + "_OPEN")), StringEntry(((bidDataKey + "_") + bidStatus), ((bidData + "_") + toString(date))), IntegerEntry(("current_bidamount_" + artId), (bidNbr - 1)), ScriptTransfer(Address(fromBase58String(caller)), parseIntValue(bidDataArr[1]), assetId)]
577577 }
578578
579579
580580 func cancelBidImplTraditional (i,artId,issuer,bidId) = {
581581 let t02894229094 = idCallerDate(i)
582582 let id = t02894229094._1
583583 let caller = t02894229094._2
584584 let date = t02894229094._3
585585 let bidNbr = getIntegerByKey(("current_bidamount_" + artId))
586586 let bidDataKey = ((((((("bid_" + artId) + "_") + issuer) + "_") + caller) + "_") + bidId)
587587 let bidData = getStringByKeyOrError((bidDataKey + "_OPEN"), "Bid not found")
588588 let bidDataArr = split(bidData, "_")
589589 let assetId = getBidAssetId(bidDataArr[0])
590590 let bidStatus = "CANCELED"
591591 let bidAmount = parseIntValue(bidDataArr[1])
592592 let highestBidId = getStringByKey(keyHighestBidBidId(artId))
593593 if ((bidId == highestBidId))
594594 then throw("You can't cancel the highest bid!")
595595 else [DeleteEntry((bidDataKey + "_OPEN")), StringEntry(((bidDataKey + "_") + bidStatus), ((bidData + "_") + toString(date))), IntegerEntry(("current_bidamount_" + artId), (bidNbr - 1)), ScriptTransfer(Address(fromBase58String(caller)), bidAmount, assetId)]
596596 }
597597
598598
599599 @Callable(i)
600600 func mintNft (totalNFT,issueMeta,receiveNFT) = if ((i.caller == this))
601601 then {
602602 let receiveNFTAddy = Address(fromBase58String(receiveNFT))
603603 let issueNFT = Issue(("SCONEX_" + toString((totalNFT + 1))), issueMeta, 1, 0, false)
604604 let idNFT = calculateAssetId(issueNFT)
605605 $Tuple2([issueNFT, ScriptTransfer(receiveNFTAddy, 1, idNFT)], toBase58String(idNFT))
606606 }
607607 else throw("Only the dApp can mint NFT's")
608608
609609
610610
611611 @Callable(i)
612612 func addArtwork (sha256Hash,name,description,tags,type,cidDisplay,entitlement,preview,collection,subCollection) = {
613613 let t01774017781 = idCallerDate(i)
614614 let artId = t01774017781._1
615615 let caller = t01774017781._2
616616 let date = t01774017781._3
617617 if (containsElement(types, type))
618618 then {
619619 let validateArtwork = validateArtworkData(caller, cidDisplay, name, description, tags)
620620 if ((validateArtwork != ""))
621621 then throw("Something went wrong!")
622622 else {
623623 let t01817018212 = validatePayment(i)
624624 let amount = t01817018212._1
625625 let assetId = t01817018212._2
626626 if (!(isDefined(amount)))
627627 then throw("Something went wrong")
628628 else {
629629 let previewData = if (containsElement(Previewtypes, type))
630630 then [StringEntry(keyPreviewCid(caller, artId), preview)]
631631 else nil
632632 let entryExist = getStringByKey(keyTxidByHashOwner(sha256Hash, caller))
633633 if ((entryExist != ""))
634634 then throw("You already added it")
635635 else {
636636 let hashExist = getStringByKey(keyOwnerByHash(sha256Hash))
637637 if ((hashExist != ""))
638638 then throw("This hash is already registered")
639639 else (previewData ++ [StringEntry(keyOwnerByHash(sha256Hash), caller), StringEntry(keyTxidByHashOwner(sha256Hash, caller), artId), IntegerEntry(keyDate(caller, artId), date), StringEntry(keyName(caller, artId), name), StringEntry(keyDesc(caller, artId), description), StringEntry(keyDisplayCid(caller, artId), cidDisplay), StringEntry(keyType(caller, artId), type), StringEntry(keyTags(caller, artId), tags), IntegerEntry(keyMaxMint(caller, artId), 0), IntegerEntry(keyIssued(caller, artId), 0), BooleanEntry(keyOnSale(caller, artId), false), StringEntry(keyHashByTxidAddr(caller, artId), sha256Hash), StringEntry(keyEntitlement(caller, artId), entitlement), ScriptTransfer(Address(fromBase58String(feeReceiver)), amount, assetId)])
640640 }
641641 }
642642 }
643643 }
644644 else throw("Unknown type")
645645 }
646646
647647
648648
649649 @Callable(i)
650650 func sellArtwork (artId,price,maxMint,assetId,auctionType,duration,royalty) = {
651651 let t02571425747 = idCallerDate(i)
652652 let id = t02571425747._1
653653 let caller = t02571425747._2
654654 let artworkName = getStringByKey(keyName(caller, artId))
655655 if ((0 > royalty))
656656 then throw("Royalty percentage should be above 0")
657657 else if ((royalty > 85))
658658 then throw("Royalty percentage should be below 85")
659659 else if (!(containsElement([auctionType1, auctionType2, auctionType3], auctionType)))
660660 then throw("We don't know this auction type")
661661 else if ((artworkName == ""))
662662 then throw("This art doesn't match your account")
663663 else {
664664 let bidNbr = getIntegerByKey(("current_bidamount_" + artId))
665665 if (!(acceptedAssetIds(assetId)))
666666 then throw("Something went wrong!")
667667 else if (!(validateMinSell(assetId, price)))
668668 then throw("Something went wrong!")
669669 else {
670670 let checkUser = validateUser(caller)
671671 if ((checkUser != ""))
672672 then throw(checkUser)
673673 else {
674674 let amountSold = getIntegerByKey(keyIssued(caller, artId))
675675 let maxCanSell = getIntegerByKey(keyMaxMint(caller, artId))
676676 if ((maxMint > 10000))
677677 then throw("10000 editions max per artwork")
678678 else if (if ((amountSold != 0))
679679 then (amountSold == maxCanSell)
680680 else false)
681681 then throw("Max edition reached.")
682682 else if (if ((amountSold > 0))
683683 then (maxCanSell != maxMint)
684684 else false)
685685 then throw("Cannot change maximum issuable anymore")
686686 else if (if ((bidNbr > 0))
687687 then (maxCanSell != maxMint)
688688 else false)
689689 then throw("Cannot change maximum issuable with active orders")
690690 else {
691691 let sellStatus = if (if ((price > 0))
692692 then (maxMint > 0)
693693 else false)
694694 then true
695695 else false
696696 let endHeight = (duration + height)
697697 [BooleanEntry(keyOnSale(caller, artId), sellStatus), IntegerEntry(keyPrice(caller, artId), price), IntegerEntry(keyMaxMint(caller, artId), maxMint), IntegerEntry(keyDuration(caller, artId), duration), IntegerEntry(keyEndHeight(caller, artId), endHeight), StringEntry(keyAssetIdAccepted(caller, artId), assetId), StringEntry(keyAuctionType(caller, artId), auctionType), IntegerEntry(keyRoyalty(caller, artId), royalty)]
698698 }
699699 }
700700 }
701701 }
702702 }
703703
704704
705705
706706 @Callable(i)
707707 func buyArtwork (artId,issuer) = {
708708 let auctionType = getStringByKey(keyAuctionType(issuer, artId))
709709 if ((auctionType == auctionType3))
710710 then buyMint(i, artId, issuer, "", "", false)
711711 else throw("Direct buy only allowed when no auction type is set!")
712712 }
713713
714714
715715
716716 @Callable(i)
717717 func updateTags (artist,artId,tags) = {
718718 let caller = toString(addressFromPublicKey(i.callerPublicKey))
719719 if (containsElement(owners, caller))
720720 then if ((size(split(tags, ",")) > 5))
721721 then throw("5 tags max.")
722722 else {
723723 let tagsOld = getStringByKeyOrError(keyTags(artist, artId), "No tags created with this key, so can't update!")
724724 if ((tags == tagsOld))
725725 then throw("Tags are the same as old tags!")
726726 else [StringEntry(keyTags(artist, artId), tags)]
727727 }
728728 else throw("no")
729729 }
730730
731731
732732
733733 @Callable(i)
734734 func deleteEntry (entry) = {
735735 let caller = toString(addressFromPublicKey(i.callerPublicKey))
736736 if (containsElement(owners, caller))
737737 then [DeleteEntry(entry)]
738738 else throw("no")
739739 }
740740
741741
742742
743743 @Callable(i)
744744 func setBid (artId,issuer) = {
745745 let auctionType = getStringByKey(keyAuctionType(issuer, artId))
746746 if ((auctionType == auctionType1))
747747 then setBidNonTraditional(i, artId, issuer)
748748 else if ((auctionType == auctionType2))
749749 then setBidTraditional(i, artId, issuer)
750750 else throw((("Unknown auction type :" + auctionType) + ", please contact the admins"))
751751 }
752752
753753
754754
755755 @Callable(i)
756756 func acceptBid (artId,issuer,bidId,bidOwner) = {
757757 let auctionType = getStringByKey(keyAuctionType(issuer, artId))
758758 if ((auctionType == auctionType1))
759759 then acceptBidNonTraditional(i, artId, issuer, bidId, bidOwner)
760760 else if ((auctionType == auctionType2))
761761 then acceptBidTraditional(i, artId, issuer, bidId, bidOwner)
762762 else throw((("Unknown auction type :" + auctionType) + ", please contact the admins"))
763763 }
764764
765765
766766
767767 @Callable(i)
768768 func cancelBid (artId,issuer,bidId) = {
769769 let auctionType = getStringByKey(keyAuctionType(issuer, artId))
770770 if ((auctionType == auctionType1))
771771 then cancelBidImpl(i, artId, issuer, bidId)
772772 else cancelBidImplTraditional(i, artId, issuer, bidId)
773773 }
774774
775775

github/deemru/w8io/c3f4982 
90.00 ms