tx · At14XLxqi9YwunEjKksramkAxhiAR5ct3z57RiAM84e7 3N8ALQpJynGeqQ7Db13kkK5RH1zvqNkBct1: -0.03400000 Waves 2023.01.11 02:53 [2399531] smart account 3N8ALQpJynGeqQ7Db13kkK5RH1zvqNkBct1 > SELF 0.00000000 Waves
{ "type": 13, "id": "At14XLxqi9YwunEjKksramkAxhiAR5ct3z57RiAM84e7", "fee": 3400000, "feeAssetId": null, "timestamp": 1673394807528, "version": 2, "chainId": 84, "sender": "3N8ALQpJynGeqQ7Db13kkK5RH1zvqNkBct1", "senderPublicKey": "C9UvrPV3j7jLAo8jvQcVPj8PRqore3Y6E6j2hUXsfNpR", "proofs": [ "61nNUrxsmioPyKHG4YctozBtJbnypLMGjB78TJygW4fXYcedLGRPs3evtM6G4mLzUBpa5Ajc4V7Zp56M8b38MKfH" ], "script": "base64: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bEJhY2t1cFZhbHVlCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACAgAAABVBbGxfTkZUc19CYWNrdXBfVmFsdWUFAAAAFlN1bXVwQmFja3VwVmFsdWVBbGxORlQJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAFGFkZHJlc3NGcm9tUHVibGljS2V5AAAAAQUAAAALQTRBVHJlYXN1cnkIBQAAAANwbXQAAAAGYW1vdW50BQAAAAtVU0RUQXNzZXRJRAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACAgAAAAdtZXNzYWdlAgAAADk8aDE+VGhhbmtzIGZvciBBZGRpbmcgQmFja3VwIFZhbHVlIPCfkrUgdG8gTkZULiE8L2gxPjxicj4FAAAAA25pbAAAAAFpAQAAABFJbnN0YW50TkZUQXVjdGlvbgAAAAUAAAAHQ291bnRlcgAAAAhJUEZTSGFzaAAAAAhORlRBc3NldAAAAAxBdWN0aW9uUHJpY2UAAAAMUmVjZWl2ZUFzc2V0BAAAAApjdXJyZW50S2V5CQACWAAAAAEICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMEAAAAE01pbmltdW1BdWN0aW9uVmFsdWUAAAAAAAABhqAEAAAAE01heGltdW1BdWN0aW9uVmFsdWUAAABa8xB6QAAEAAAAC2dldElQRlNIYXNoCQAEHQAAAAIFAAAABHRoaXMJAAEsAAAAAgIAAAAFSEFTSF8FAAAACElQRlNIYXNoBAAAAA9mZXRjaE5GVEFzc2V0SUQJAQAAABFAZXh0ck5hdGl2ZSgxMDUzKQAAAAIFAAAABHRoaXMJAAEsAAAAAgkAASwAAAACCQABpAAAAAEFAAAAB0NvdW50ZXICAAAACV9Bc3NldElEXwUAAAAISVBGU0hhc2gEAAAAFWZldGNoTkZUQXVjdGlvblN0YXR1cwkBAAAAEUBleHRyTmF0aXZlKDEwNTMpAAAAAgUAAAAEdGhpcwkAASwAAAACCQABLAAAAAIJAAGkAAAAAQUAAAAHQ291bnRlcgIAAAAPX0F1Y3Rpb25TdGF0dXNfBQAAAAhJUEZTSGFzaAQAAAADcG10AwkAAAAAAAACCQABkAAAAAEIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAB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Zm9yIFNlbGxpbmcuAwkBAAAAAiE9AAAAAggFAAAAA3BtdAAAAAZhbW91bnQFAAAAD2dldEF1Y3Rpb25QcmljZQkAAAIAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAHkF0dGFjaGVkIEFzc2V0IEFtb3VudCBtdXN0IGJlIAUAAAAUZ2V0QXVjdGlvblByaWNlQXNzZXQCAAAAIiBlcXVhbCB0byBBdWN0aW9uIFByaWNlLiBXaGljaCBpcyAJAAGkAAAAAQUAAAAPZ2V0QXVjdGlvblByaWNlAgAAAAYtW0ludF0DCQAAAAAAAAIFAAAAFGdldEF1Y3Rpb25QcmljZUFzc2V0CQACWAAAAAEFAAAACkE0QUFzc2V0SUQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkAASwAAAACCQABLAAAAAIJAAGkAAAAAQUAAAAHQ291bnRlcgIAAAAPX0F1Y3Rpb25TdGF0dXNfBQAAAAhJUEZTSGFzaAIAAAAFQ2xvc2UJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAICAAAADlRvdGFsX05GVF9Tb2xkBQAAAA5Ub3RhbF9OZnRfU29sZAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACCQABpAAAAAEFAAAAB0NvdW50ZXICAAAACV9ORlRfU29sZAUAAAAXVG90YWxfU3BlY2lmaWNfTkZUX1NvbGQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgUAAAAUZ2V0QXVjdGlvblByaWNlQXNzZXQCAAAAC19ORlRfVm9sdW1lBQAAABBUb3RhbF9OZnRfVm9sdW1lCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIFAAAAFGdldEF1Y3Rpb25QcmljZUFzc2V0AgAAAAxfTkZUX1JveWFsdHkFAAAAEVRvdGFsX05mdF9Sb3lhbHR5CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIFAAAAFGdldEF1Y3Rpb25QcmljZUFzc2V0AgAAAAxfTkZUX0RhcHBGZWUFAAAAElRvdGFsX05mdF9EYXBwX0ZlZQkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABCQABLAAAAAIJAAEsAAAAAgkAAaQAAAABBQAAAAdDb3VudGVyAgAAAA9fQXVjdGlvbkFtb3VudF8FAAAACElQRlNIYXNoCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEJAAEsAAAAAgkAASwAAAACCQABpAAAAAEFAAAAB0NvdW50ZXICAAAAE19BdWN0aW9uUHJpY2VBc3NldF8FAAAACElQRlNIYXNoCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEJAAEsAAAAAgkAASwAAAACCQABpAAAAAEFAAAAB0NvdW50ZXICAAAAEF9BdWN0aW9uQ3JlYXRvcl8FAAAACElQRlNIYXNoCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgAAAAAAAAAAAQkAAlkAAAABBQAAAA9mZXRjaE5GVEFzc2V0SUQJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAFGFkZHJlc3NGcm9tUHVibGljS2V5AAAAAQUAAAALQTRBVHJlYXN1cnkFAAAACERhcHBfRmVlBQAAAApBNEFBc3NldElECQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMJAQAAABFAZXh0ck5hdGl2ZSgxMDYyKQAAAAEFAAAAEWdldE9yaWdpbmFsQ3JhdG9yBQAAAAtSb3lhbHR5X0ZlZQUAAAAKQTRBQXNzZXRJRAkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAARQGV4dHJOYXRpdmUoMTA2MikAAAABBQAAABBnZXRBdWN0aW9uQ3JhdG9yBQAAABVnZXRBdWN0aW9uQ3JhdG9yQ2xhaW0FAAAACkE0QUFzc2V0SUQFAAAAA25pbAMJAAAAAAAAAgUAAAAUZ2V0QXVjdGlvblByaWNlQXNzZXQJAAJYAAAAAQUAAAAKQlRDQXNzZXRJRAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAAaQAAAABBQAAAAdDb3VudGVyAgAAAA9fQXVjdGlvblN0YXR1c18FAAAACElQRlNIYXNoAgAAAAVDbG9zZQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAAAOVG90YWxfTkZUX1NvbGQFAAAADlRvdGFsX05mdF9Tb2xkCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAGkAAAAAQUAAAAHQ291bnRlcgIAAAAJX05GVF9Tb2xkBQAAABdUb3RhbF9TcGVjaWZpY19ORlRfU29sZAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACBQAAABRnZXRBdWN0aW9uUHJpY2VBc3NldAIAAAALX05GVF9Wb2x1bWUFAAAAEFRvdGFsX05mdF9Wb2x1bWUJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgUAAAAUZ2V0QXVjdGlvblByaWNlQXNzZXQCAAAADF9ORlRfUm95YWx0eQUAAAARVG90YWxfTmZ0X1JveWFsdHkJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgUAAAAUZ2V0QXVjdGlvblByaWNlQXNzZXQCAAAADF9ORlRfRGFwcEZlZQUAAAASVG90YWxfTmZ0X0RhcHBfRmVlCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEJAAEsAAAAAgkAASwAAAACCQABpAAAAAEFAAAAB0NvdW50ZXICAAAAD19BdWN0aW9uQW1vdW50XwUAAAAISVBGU0hhc2gJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQkAASwAAAACCQABLAAAAAIJAAGkAAAAAQUAAAAHQ291bnRlcgIAAAATX0F1Y3Rpb25QcmljZUFzc2V0XwUAAAAISVBGU0hhc2gJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQkAASwAAAACCQABLAAAAAIJAAGkAAAAAQUAAAAHQ291bnRlcgIAAAAQX0F1Y3Rpb25DcmVhdG9yXwUAAAAISVBGU0hhc2gJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyAAAAAAAAAAABCQACWQAAAAEFAAAAD2ZldGNoTkZUQXNzZXRJRAkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAAUYWRkcmVzc0Zyb21QdWJsaWNLZXkAAAABBQAAAAtBNEFUcmVhc3VyeQUAAAAIRGFwcF9GZWUFAAAACkJUQ0Fzc2V0SUQJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAEUBleHRyTmF0aXZlKDEwNjIpAAAAAQUAAAARZ2V0T3JpZ2luYWxDcmF0b3IFAAAAC1JveWFsdHlfRmVlBQAAAApCVENBc3NldElECQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMJAQAAABFAZXh0ck5hdGl2ZSgxMDYyKQAAAAEFAAAAEGdldEF1Y3Rpb25DcmF0b3IFAAAAFWdldEF1Y3Rpb25DcmF0b3JDbGFpbQUAAAAKQlRDQXNzZXRJRAUAAAADbmlsAwkAAAAAAAACBQAAABRnZXRBdWN0aW9uUHJpY2VBc3NldAkAAlgAAAABBQAAAAtDQVNIQXNzZXRJRAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAAaQAAAABBQAAAAdDb3VudGVyAgAAAA9fQXVjdGlvblN0YXR1c18FAAAACElQRlNIYXNoAgAAAAVDbG9zZQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAAAOVG90YWxfTkZUX1NvbGQFAAAADlRvdGFsX05mdF9Tb2xkCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAGkAAAAAQUAAAAHQ291bnRlcgIAAAAJX05GVF9Tb2xkBQAAABdUb3RhbF9TcGVjaWZpY19ORlRfU29sZAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACBQAAABRnZXRBdWN0aW9uUHJpY2VBc3NldAIAAAALX05GVF9Wb2x1bWUFAAAAEFRvdGFsX05mdF9Wb2x1bWUJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgUAAAAUZ2V0QXVjdGlvblByaWNlQXNzZXQCAAAADF9ORlRfUm95YWx0eQUAAAARVG90YWxfTmZ0X1JveWFsdHkJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgUAAAAUZ2V0QXVjdGlvblByaWNlQXNzZXQCAAAADF9ORlRfRGFwcEZlZQUAAAASVG90YWxfTmZ0X0RhcHBfRmVlCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEJAAEsAAAAAgkAASwAAAACCQABpAAAAAEFAAAAB0NvdW50ZXICAAAAD19BdWN0aW9uQW1vdW50XwUAAAAISVBGU0hhc2gJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQkAASwAAAACCQABLAAAAAIJAAGkAAAAAQUAAAAHQ291bnRlcgIAAAATX0F1Y3Rpb25QcmljZUFzc2V0XwUAAAAISVBGU0hhc2gJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQkAASwAAAACCQABLAAAAAIJAAGkAAAAAQUAAAAHQ291bnRlcgIAAAAQX0F1Y3Rpb25DcmVhdG9yXwUAAAAISVBGU0hhc2gJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyAAAAAAAAAAABCQACWQAAAAEFAAAAD2ZldGNoTkZUQXNzZXRJRAkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAAUYWRkcmVzc0Zyb21QdWJsaWNLZXkAAAABBQAAAAtBNEFUcmVhc3VyeQUAAAAIRGFwcF9GZWUFAAAAC0NBU0hBc3NldElECQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMJAQAAABFAZXh0ck5hdGl2ZSgxMDYyKQAAAAEFAAAAEWdldE9yaWdpbmFsQ3JhdG9yBQAAAAtSb3lhbHR5X0ZlZQUAAAALQ0FTSEFzc2V0SUQJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAEUBleHRyTmF0aXZlKDEwNjIpAAAAAQUAAAAQZ2V0QXVjdGlvbkNyYXRvcgUAAAAVZ2V0QXVjdGlvbkNyYXRvckNsYWltBQAAAAtDQVNIQXNzZXRJRAUAAAADbmlsAwkAAAAAAAACBQAAABRnZXRBdWN0aW9uUHJpY2VBc3NldAkAAlgAAAABBQAAAAtDT0RFQXNzZXRJRAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAAaQAAAABBQAAAAdDb3VudGVyAgAAAA9fQXVjdGlvblN0YXR1c18FAAAACElQRlNIYXNoAgAAAAVDbG9zZQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAAAOVG90YWxfTkZUX1NvbGQFAAAADlRvdGFsX05mdF9Tb2xkCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAGkAAAAAQUAAAAHQ291bnRlcgIAAAAJX05GVF9Tb2xkBQAAABdUb3RhbF9TcGVjaWZpY19ORlRfU29sZAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACBQAAABRnZXRBdWN0aW9uUHJpY2VBc3NldAIAAAALX05GVF9Wb2x1bWUFAAAAEFRvdGFsX05mdF9Wb2x1bWUJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgUAAAAUZ2V0QXVjdGlvblByaWNlQXNzZXQCAAAADF9ORlRfUm95YWx0eQUAAAARVG90YWxfTmZ0X1JveWFsdHkJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgUAAAAUZ2V0QXVjdGlvblByaWNlQXNzZXQCAAAADF9ORlRfRGFwcEZlZQUAAAASVG90YWxfTmZ0X0RhcHBfRmVlCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEJAAEsAAAAAgkAASwAAAACCQABpAAAAAEFAAAAB0NvdW50ZXICAAAAD19BdWN0aW9uQW1vdW50XwUAAAAISVBGU0hhc2gJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQkAASwAAAACCQABLAAAAAIJAAGkAAAAAQUAAAAHQ291bnRlcgIAAAATX0F1Y3Rpb25QcmljZUFzc2V0XwUAAAAISVBGU0hhc2gJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQkAASwAAAACCQABLAAAAAIJAAGkAAAAAQUAAAAHQ291bnRlcgIAAAAQX0F1Y3Rpb25DcmVhdG9yXwUAAAAISVBGU0hhc2gJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyAAAAAAAAAAABCQACWQAAAAEFAAAAD2ZldGNoTkZUQXNzZXRJRAkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAAUYWRkcmVzc0Zyb21QdWJsaWNLZXkAAAABBQAAAAtBNEFUcmVhc3VyeQUAAAAIRGFwcF9GZWUFAAAAC0NPREVBc3NldElECQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMJAQAAABFAZXh0ck5hdGl2ZSgxMDYyKQAAAAEFAAAAEWdldE9yaWdpbmFsQ3JhdG9yBQAAAAtSb3lhbHR5X0ZlZQUAAAALQ09ERUFzc2V0SUQJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAEUBleHRyTmF0aXZlKDEwNjIpAAAAAQUAAAAQZ2V0QXVjdGlvbkNyYXRvcgUAAAAVZ2V0QXVjdGlvbkNyYXRvckNsYWltBQAAAAtDT0RFQXNzZXRJRAUAAAADbmlsAwkAAAAAAAACBQAAABRnZXRBdWN0aW9uUHJpY2VBc3NldAkAAlgAAAABBQAAAAtEVlBOQXNzZXRJRAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAAaQAAAABBQAAAAdDb3VudGVyAgAAAA9fQXVjdGlvblN0YXR1c18FAAAACElQRlNIYXNoAgAAAAVDbG9zZQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAAAOVG90YWxfTkZUX1NvbGQFAAAADlRvdGFsX05mdF9Tb2xkCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAGkAAAAAQUAAAAHQ291bnRlcgIAAAAJX05GVF9Tb2xkBQAAABdUb3RhbF9TcGVjaWZpY19ORlRfU29sZAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACBQAAABRnZXRBdWN0aW9uUHJpY2VBc3NldAIAAAALX05GVF9Wb2x1bWUFAAAAEFRvdGFsX05mdF9Wb2x1bWUJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgUAAAAUZ2V0QXVjdGlvblByaWNlQXNzZXQCAAAADF9ORlRfUm95YWx0eQUAAAARVG90YWxfTmZ0X1JveWFsdHkJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgUAAAAUZ2V0QXVjdGlvblByaWNlQXNzZXQCAAAADF9ORlRfRGFwcEZlZQUAAAASVG90YWxfTmZ0X0RhcHBfRmVlCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEJAAEsAAAAAgkAASwAAAACCQABpAAAAAEFAAAAB0NvdW50ZXICAAAAD19BdWN0aW9uQW1vdW50XwUAAAAISVBGU0hhc2gJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQkAASwAAAACCQABLAAAAAIJAAGkAAAAAQUAAAAHQ291bnRlcgIAAAATX0F1Y3Rpb25QcmljZUFzc2V0XwUAAAAISVBGU0hhc2gJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQkAASwAAAACCQABLAAAAAIJAAGkAAAAAQUAAAAHQ291bnRlcgIAAAAQX0F1Y3Rpb25DcmVhdG9yXwUAAAAISVBGU0hhc2gJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyAAAAAAAAAAABCQACWQAAAAEFAAAAD2ZldGNoTkZUQXNzZXRJRAkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAAUYWRkcmVzc0Zyb21QdWJsaWNLZXkAAAABBQAAAAtBNEFUcmVhc3VyeQUAAAAIRGFwcF9GZWUFAAAAC0RWUE5Bc3NldElECQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMJAQAAABFAZXh0ck5hdGl2ZSgxMDYyKQAAAAEFAAAAEWdldE9yaWdpbmFsQ3JhdG9yBQAAAAtSb3lhbHR5X0ZlZQUAAAALRFZQTkFzc2V0SUQJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAEUBleHRyTmF0aXZlKDEwNjIpAAAAAQUAAAAQZ2V0QXVjdGlvbkNyYXRvcgUAAAAVZ2V0QXVjdGlvbkNyYXRvckNsYWltBQAAAAtEVlBOQXNzZXRJRAUAAAADbmlsAwkAAAAAAAACBQAAABRnZXRBdWN0aW9uUHJpY2VBc3NldAIAAAACVE4JAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkAASwAAAACCQABLAAAAAIJAAGkAAAAAQUAAAAHQ291bnRlcgIAAAAPX0F1Y3Rpb25TdGF0dXNfBQAAAAhJUEZTSGFzaAIAAAAFQ2xvc2UJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAICAAAADlRvdGFsX05GVF9Tb2xkBQAAAA5Ub3RhbF9OZnRfU29sZAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACCQABpAAAAAEFAAAAB0NvdW50ZXICAAAACV9ORlRfU29sZAUAAAAXVG90YWxfU3BlY2lmaWNfTkZUX1NvbGQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgUAAAAUZ2V0QXVjdGlvblByaWNlQXNzZXQCAAAAC19ORlRfVm9sdW1lBQAAABBUb3RhbF9OZnRfVm9sdW1lCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIFAAAAFGdldEF1Y3Rpb25QcmljZUFzc2V0AgAAAAxfTkZUX1JveWFsdHkFAAAAEVRvdGFsX05mdF9Sb3lhbHR5CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIFAAAAFGdldEF1Y3Rpb25QcmljZUFzc2V0AgAAAAxfTkZUX0RhcHBGZWUFAAAAElRvdGFsX05mdF9EYXBwX0ZlZQkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABCQABLAAAAAIJAAEsAAAAAgkAAaQAAAABBQAAAAdDb3VudGVyAgAAAA9fQXVjdGlvbkFtb3VudF8FAAAACElQRlNIYXNoCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEJAAEsAAAAAgkAASwAAAACCQABpAAAAAEFAAAAB0NvdW50ZXICAAAAE19BdWN0aW9uUHJpY2VBc3NldF8FAAAACElQRlNIYXNoCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEJAAEsAAAAAgkAASwAAAACCQABpAAAAAEFAAAAB0NvdW50ZXICAAAAEF9BdWN0aW9uQ3JlYXRvcl8FAAAACElQRlNIYXNoCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgAAAAAAAAAAAQkAAlkAAAABBQAAAA9mZXRjaE5GVEFzc2V0SUQJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAFGFkZHJlc3NGcm9tUHVibGljS2V5AAAAAQUAAAALQTRBVHJlYXN1cnkFAAAACERhcHBfRmVlBQAAAAR1bml0CQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMJAQAAABFAZXh0ck5hdGl2ZSgxMDYyKQAAAAEFAAAAEWdldE9yaWdpbmFsQ3JhdG9yBQAAAAtSb3lhbHR5X0ZlZQUAAAAEdW5pdAkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAARQGV4dHJOYXRpdmUoMTA2MikAAAABBQAAABBnZXRBdWN0aW9uQ3JhdG9yBQAAABVnZXRBdWN0aW9uQ3JhdG9yQ2xhaW0FAAAABHVuaXQFAAAAA25pbAMJAAAAAAAAAgUAAAAUZ2V0QXVjdGlvblByaWNlQXNzZXQJAAJYAAAAAQUAAAALVVNEVEFzc2V0SUQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkAASwAAAACCQABLAAAAAIJAAGkAAAAAQUAAAAHQ291bnRlcgIAAAAPX0F1Y3Rpb25TdGF0dXNfBQAAAAhJUEZTSGFzaAIAAAAFQ2xvc2UJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAICAAAADlRvdGFsX05GVF9Tb2xkBQAAAA5Ub3RhbF9OZnRfU29sZAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACCQABpAAAAAEFAAAAB0NvdW50ZXICAAAACV9ORlRfU29sZAUAAAAXVG90YWxfU3BlY2lmaWNfTkZUX1NvbGQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgUAAAAUZ2V0QXVjdGlvblByaWNlQXNzZXQCAAAAC19ORlRfVm9sdW1lBQAAABBUb3RhbF9OZnRfVm9sdW1lCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIFAAAAFGdldEF1Y3Rpb25QcmljZUFzc2V0AgAAAAxfTkZUX1JveWFsdHkFAAAAEVRvdGFsX05mdF9Sb3lhbHR5CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIFAAAAFGdldEF1Y3Rpb25QcmljZUFzc2V0AgAAAAxfTkZUX0RhcHBGZWUFAAAAElRvdGFsX05mdF9EYXBwX0ZlZQkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABCQABLAAAAAIJAAEsAAAAAgkAAaQAAAABBQAAAAdDb3VudGVyAgAAAA9fQXVjdGlvbkFtb3VudF8FAAAACElQRlNIYXNoCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEJAAEsAAAAAgkAASwAAAACCQABpAAAAAEFAAAAB0NvdW50ZXICAAAAE19BdWN0aW9uUHJpY2VBc3NldF8FAAAACElQRlNIYXNoCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEJAAEsAAAAAgkAASwAAAACCQABpAAAAAEFAAAAB0NvdW50ZXICAAAAEF9BdWN0aW9uQ3JlYXRvcl8FAAAACElQRlNIYXNoCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgAAAAAAAAAAAQkAAlkAAAABBQAAAA9mZXRjaE5GVEFzc2V0SUQJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAFGFkZHJlc3NGcm9tUHVibGljS2V5AAAAAQUAAAALQTRBVHJlYXN1cnkFAAAACERhcHBfRmVlBQAAAAtVU0RUQXNzZXRJRAkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAARQGV4dHJOYXRpdmUoMTA2MikAAAABBQAAABFnZXRPcmlnaW5hbENyYXRvcgUAAAALUm95YWx0eV9GZWUFAAAAC1VTRFRBc3NldElECQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMJAQAAABFAZXh0ck5hdGl2ZSgxMDYyKQAAAAEFAAAAEGdldEF1Y3Rpb25DcmF0b3IFAAAAFWdldEF1Y3Rpb25DcmF0b3JDbGFpbQUAAAALVVNEVEFzc2V0SUQFAAAAA25pbAMJAAAAAAAAAgUAAAAUZ2V0QXVjdGlvblByaWNlQXNzZXQJAAJYAAAAAQUAAAAMV0FWRVNBc3NldElECQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACCQABpAAAAAEFAAAAB0NvdW50ZXICAAAAD19BdWN0aW9uU3RhdHVzXwUAAAAISVBGU0hhc2gCAAAABUNsb3NlCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACAgAAAA5Ub3RhbF9ORlRfU29sZAUAAAAOVG90YWxfTmZ0X1NvbGQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgkAAaQAAAABBQAAAAdDb3VudGVyAgAAAAlfTkZUX1NvbGQFAAAAF1RvdGFsX1NwZWNpZmljX05GVF9Tb2xkCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIFAAAAFGdldEF1Y3Rpb25QcmljZUFzc2V0AgAAAAtfTkZUX1ZvbHVtZQUAAAAQVG90YWxfTmZ0X1ZvbHVtZQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACBQAAABRnZXRBdWN0aW9uUHJpY2VBc3NldAIAAAAMX05GVF9Sb3lhbHR5BQAAABFUb3RhbF9OZnRfUm95YWx0eQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACBQAAABRnZXRBdWN0aW9uUHJpY2VBc3NldAIAAAAMX05GVF9EYXBwRmVlBQAAABJUb3RhbF9OZnRfRGFwcF9GZWUJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQkAASwAAAACCQABLAAAAAIJAAGkAAAAAQUAAAAHQ291bnRlcgIAAAAPX0F1Y3Rpb25BbW91bnRfBQAAAAhJUEZTSGFzaAkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABCQABLAAAAAIJAAEsAAAAAgkAAaQAAAABBQAAAAdDb3VudGVyAgAAABNfQXVjdGlvblByaWNlQXNzZXRfBQAAAAhJUEZTSGFzaAkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABCQABLAAAAAIJAAEsAAAAAgkAAaQAAAABBQAAAAdDb3VudGVyAgAAABBfQXVjdGlvbkNyZWF0b3JfBQAAAAhJUEZTSGFzaAkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIAAAAAAAAAAAEJAAJZAAAAAQUAAAAPZmV0Y2hORlRBc3NldElECQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMJAQAAABRhZGRyZXNzRnJvbVB1YmxpY0tleQAAAAEFAAAAC0E0QVRyZWFzdXJ5BQAAAAhEYXBwX0ZlZQUAAAAMV0FWRVNBc3NldElECQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMJAQAAABFAZXh0ck5hdGl2ZSgxMDYyKQAAAAEFAAAAEWdldE9yaWdpbmFsQ3JhdG9yBQAAAAtSb3lhbHR5X0ZlZQUAAAAMV0FWRVNBc3NldElECQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMJAQAAABFAZXh0ck5hdGl2ZSgxMDYyKQAAAAEFAAAAEGdldEF1Y3Rpb25DcmF0b3IFAAAAFWdldEF1Y3Rpb25DcmF0b3JDbGFpbQUAAAAMV0FWRVNBc3NldElEBQAAAANuaWwDCQAAAAAAAAIFAAAAFGdldEF1Y3Rpb25QcmljZUFzc2V0CQACWAAAAAEFAAAAClhIVkFzc2V0SUQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkAASwAAAACCQABLAAAAAIJAAGkAAAAAQUAAAAHQ291bnRlcgIAAAAPX0F1Y3Rpb25TdGF0dXNfBQAAAAhJUEZTSGFzaAIAAAAFQ2xvc2UJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAICAAAADlRvdGFsX05GVF9Tb2xkBQAAAA5Ub3RhbF9OZnRfU29sZAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACCQABpAAAAAEFAAAAB0NvdW50ZXICAAAACV9ORlRfU29sZAUAAAAXVG90YWxfU3BlY2lmaWNfTkZUX1NvbGQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgUAAAAUZ2V0QXVjdGlvblByaWNlQXNzZXQCAAAAC19ORlRfVm9sdW1lBQAAABBUb3RhbF9OZnRfVm9sdW1lCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIFAAAAFGdldEF1Y3Rpb25QcmljZUFzc2V0AgAAAAxfTkZUX1JveWFsdHkFAAAAEVRvdGFsX05mdF9Sb3lhbHR5CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIFAAAAFGdldEF1Y3Rpb25QcmljZUFzc2V0AgAAAAxfTkZUX0RhcHBGZWUFAAAAElRvdGFsX05mdF9EYXBwX0ZlZQkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABCQABLAAAAAIJAAEsAAAAAgkAAaQAAAABBQAAAAdDb3VudGVyAgAAAA9fQXVjdGlvbkFtb3VudF8FAAAACElQRlNIYXNoCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEJAAEsAAAAAgkAASwAAAACCQABpAAAAAEFAAAAB0NvdW50ZXICAAAAE19BdWN0aW9uUHJpY2VBc3NldF8FAAAACElQRlNIYXNoCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEJAAEsAAAAAgkAASwAAAACCQABpAAAAAEFAAAAB0NvdW50ZXICAAAAEF9BdWN0aW9uQ3JlYXRvcl8FAAAACElQRlNIYXNoCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgAAAAAAAAAAAQkAAlkAAAABBQAAAA9mZXRjaE5GVEFzc2V0SUQJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAFGFkZHJlc3NGcm9tUHVibGljS2V5AAAAAQUAAAALQTRBVHJlYXN1cnkFAAAACERhcHBfRmVlBQAAAApYSFZBc3NldElECQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMJAQAAABFAZXh0ck5hdGl2ZSgxMDYyKQAAAAEFAAAAEWdldE9yaWdpbmFsQ3JhdG9yBQAAAAtSb3lhbHR5X0ZlZQUAAAAKWEhWQXNzZXRJRAkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAARQGV4dHJOYXRpdmUoMTA2MikAAAABBQAAABBnZXRBdWN0aW9uQ3JhdG9yBQAAABVnZXRBdWN0aW9uQ3JhdG9yQ2xhaW0FAAAAClhIVkFzc2V0SUQFAAAAA25pbAMJAAAAAAAAAgUAAAAUZ2V0QXVjdGlvblByaWNlQXNzZXQJAAJYAAAAAQUAAAAKWE1SQXNzZXRJRAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAAaQAAAABBQAAAAdDb3VudGVyAgAAAA9fQXVjdGlvblN0YXR1c18FAAAACElQRlNIYXNoAgAAAAVDbG9zZQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAAAOVG90YWxfTkZUX1NvbGQFAAAADlRvdGFsX05mdF9Tb2xkCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAGkAAAAAQUAAAAHQ291bnRlcgIAAAAJX05GVF9Tb2xkBQAAABdUb3RhbF9TcGVjaWZpY19ORlRfU29sZAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACBQAAABRnZXRBdWN0aW9uUHJpY2VBc3NldAIAAAALX05GVF9Wb2x1bWUFAAAAEFRvdGFsX05mdF9Wb2x1bWUJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgUAAAAUZ2V0QXVjdGlvblByaWNlQXNzZXQCAAAADF9ORlRfUm95YWx0eQUAAAARVG90YWxfTmZ0X1JveWFsdHkJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgUAAAAUZ2V0QXVjdGlvblByaWNlQXNzZXQCAAAADF9ORlRfRGFwcEZlZQUAAAASVG90YWxfTmZ0X0RhcHBfRmVlCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEJAAEsAAAAAgkAASwAAAACCQABpAAAAAEFAAAAB0NvdW50ZXICAAAAD19BdWN0aW9uQW1vdW50XwUAAAAISVBGU0hhc2gJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQkAASwAAAACCQABLAAAAAIJAAGkAAAAAQUAAAAHQ291bnRlcgIAAAATX0F1Y3Rpb25QcmljZUFzc2V0XwUAAAAISVBGU0hhc2gJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQkAASwAAAACCQABLAAAAAIJAAGkAAAAAQUAAAAHQ291bnRlcgIAAAAQX0F1Y3Rpb25DcmVhdG9yXwUAAAAISVBGU0hhc2gJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyAAAAAAAAAAABCQACWQAAAAEFAAAAD2ZldGNoTkZUQXNzZXRJRAkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAAUYWRkcmVzc0Zyb21QdWJsaWNLZXkAAAABBQAAAAtBNEFUcmVhc3VyeQUAAAAIRGFwcF9GZWUFAAAAClhNUkFzc2V0SUQJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAEUBleHRyTmF0aXZlKDEwNjIpAAAAAQUAAAARZ2V0T3JpZ2luYWxDcmF0b3IFAAAAC1JveWFsdHlfRmVlBQAAAApYTVJBc3NldElECQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMJAQAAABFAZXh0ck5hdGl2ZSgxMDYyKQAAAAEFAAAAEGdldEF1Y3Rpb25DcmF0b3IFAAAAFWdldEF1Y3Rpb25DcmF0b3JDbGFpbQUAAAAKWE1SQXNzZXRJRAUAAAADbmlsAwkAAAAAAAACBQAAABRnZXRBdWN0aW9uUHJpY2VBc3NldAkAAlgAAAABBQAAAAt4VVNEQXNzZXRJRAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAAaQAAAABBQAAAAdDb3VudGVyAgAAAA9fQXVjdGlvblN0YXR1c18FAAAACElQRlNIYXNoAgAAAAVDbG9zZQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAAAOVG90YWxfTkZUX1NvbGQFAAAADlRvdGFsX05mdF9Tb2xkCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAGkAAAAAQUAAAAHQ291bnRlcgIAAAAJX05GVF9Tb2xkBQAAABdUb3RhbF9TcGVjaWZpY19ORlRfU29sZAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACBQAAABRnZXRBdWN0aW9uUHJpY2VBc3NldAIAAAALX05GVF9Wb2x1bWUFAAAAEFRvdGFsX05mdF9Wb2x1bWUJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgUAAAAUZ2V0QXVjdGlvblByaWNlQXNzZXQCAAAADF9ORlRfUm95YWx0eQUAAAARVG90YWxfTmZ0X1JveWFsdHkJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgUAAAAUZ2V0QXVjdGlvblByaWNlQXNzZXQCAAAADF9ORlRfRGFwcEZlZQUAAAASVG90YWxfTmZ0X0RhcHBfRmVlCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEJAAEsAAAAAgkAASwAAAACCQABpAAAAAEFAAAAB0NvdW50ZXICAAAAD19BdWN0aW9uQW1vdW50XwUAAAAISVBGU0hhc2gJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQkAASwAAAACCQABLAAAAAIJAAGkAAAAAQUAAAAHQ291bnRlcgIAAAATX0F1Y3Rpb25QcmljZUFzc2V0XwUAAAAISVBGU0hhc2gJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQkAASwAAAACCQABLAAAAAIJAAGkAAAAAQUAAAAHQ291bnRlcgIAAAAQX0F1Y3Rpb25DcmVhdG9yXwUAAAAISVBGU0hhc2gJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyAAAAAAAAAAABCQACWQAAAAEFAAAAD2ZldGNoTkZUQXNzZXRJRAkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAAUYWRkcmVzc0Zyb21QdWJsaWNLZXkAAAABBQAAAAtBNEFUcmVhc3VyeQUAAAAIRGFwcF9GZWUFAAAAC3hVU0RBc3NldElECQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMJAQAAABFAZXh0ck5hdGl2ZSgxMDYyKQAAAAEFAAAAEWdldE9yaWdpbmFsQ3JhdG9yBQAAAAtSb3lhbHR5X0ZlZQUAAAALeFVTREFzc2V0SUQJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAEUBleHRyTmF0aXZlKDEwNjIpAAAAAQUAAAAQZ2V0QXVjdGlvbkNyYXRvcgUAAAAVZ2V0QXVjdGlvbkNyYXRvckNsYWltBQAAAAt4VVNEQXNzZXRJRAUA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", "height": 2399531, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: none Full:
Old | New | Differences | |
---|---|---|---|
1 | - | # no script | |
1 | + | {-# STDLIB_VERSION 5 #-} | |
2 | + | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | + | {-# CONTENT_TYPE DAPP #-} | |
4 | + | let A4AAssetID = base58'8hdsVCxPBVEmVUZyyX8Sd98Z9hU7Fny26W96sjKiTw8g' | |
5 | + | ||
6 | + | let BTCAssetID = base58'6B7j2Q8B8JA6CScbS1cJx9ms4PvGrJoWQrW5bEpgp1dm' | |
7 | + | ||
8 | + | let CASHAssetID = base58'37n4vgAUKaox1mNeE7vb45V1AWbUMsyrtq7fMVGkL8f1' | |
9 | + | ||
10 | + | let CODEAssetID = base58'EB4CUQH4fHzzQt9YjcHtA6T7uosHNH9RnQKHgBdZHPCB' | |
11 | + | ||
12 | + | let DVPNAssetID = base58'BMXhcpQBKwukPP578umgB3HXNk6YNBdoeT4F1DyRKvck' | |
13 | + | ||
14 | + | let WAVESAssetID = base58'EzwaF58ssALcUCZ9FbyeD1GTSteoZAQZEDTqBAXHfq8y' | |
15 | + | ||
16 | + | let USDTAssetID = base58'7RB3BWayeCVPq3kkpkeJZAFv2DYCB5gEwnutEpRofaw4' | |
17 | + | ||
18 | + | let XHVAssetID = base58'9ryyxYw3NFNHhRjXyG956uHEjF75jwGfHFR1JmN1tBdw' | |
19 | + | ||
20 | + | let XMRAssetID = base58'BknLVPoKrWowgH946guVqLNsCZe1aFQaXS5GseFZCo99' | |
21 | + | ||
22 | + | let xUSDAssetID = base58'F3or3Nn6NTcSkRvzqtoCoyuCfdqNSuP8rjLboS2AemPL' | |
23 | + | ||
24 | + | let message = "<h1>Thanks for Placing Instant buy order for NFT.</h1><br>" | |
25 | + | ||
26 | + | let NFTSwapFee = 25 | |
27 | + | ||
28 | + | let Royalty = 25 | |
29 | + | ||
30 | + | let A4ATreasury = base58'6Z73KxcX3sugpiStpSRXxKxTmWqCaLVwFeM6kwyiKVDR' | |
31 | + | ||
32 | + | @Callable(i) | |
33 | + | func IssueNFTSeries (NFTDescription,IPFSHash,IPFSHashLink,Format) = { | |
34 | + | let currentKey = toBase58String(i.caller.bytes) | |
35 | + | let NFTMintFee = 50000000000 | |
36 | + | let pmt = if ((size(i.payments) == 1)) | |
37 | + | then i.payments[0] | |
38 | + | else throw("500 TN Token is required as Attached payment") | |
39 | + | let NFTSeriesName = "A4ADAO" | |
40 | + | let getIPFSHash = getString(this, ("HASH_" + IPFSHash)) | |
41 | + | let getSeriesCounter = match getInteger(this, "Counter") { | |
42 | + | case a: Int => | |
43 | + | a | |
44 | + | case _ => | |
45 | + | 0 | |
46 | + | } | |
47 | + | let CurrentSeriesCounter = (getSeriesCounter + 1) | |
48 | + | let asset = Issue(((NFTSeriesName + "-") + toString(CurrentSeriesCounter)), ((NFTDescription + ". Hash:") + IPFSHash), 1, 0, false, unit, 0) | |
49 | + | let getassetId = calculateAssetId(asset) | |
50 | + | if (isDefined(pmt.assetId)) | |
51 | + | then throw("Wrong Asset Attached please attach only 500 TN Tokens to mint NFT.") | |
52 | + | else if ((pmt.amount != NFTMintFee)) | |
53 | + | then throw((("500 TN Token is required as Attached payment amount. You attached only [int: " + toString(pmt.amount)) + "]")) | |
54 | + | else if ((getIPFSHash == IPFSHash)) | |
55 | + | then throw((IPFSHash + " Hash Already Registered")) | |
56 | + | else [asset, IntegerEntry("Counter", CurrentSeriesCounter), IntegerEntry(((toString(CurrentSeriesCounter) + "_Likes_") + IPFSHash), 0), IntegerEntry(((toString(CurrentSeriesCounter) + "_Backup_") + IPFSHash), 0), StringEntry(((toString(CurrentSeriesCounter) + "_Format_") + IPFSHash), Format), StringEntry(((toString(CurrentSeriesCounter) + "_AssetID_") + IPFSHash), toBase58String(getassetId)), IntegerEntry(((toString(CurrentSeriesCounter) + "_Timestamp_") + IPFSHash), lastBlock.timestamp), IntegerEntry(((toString(CurrentSeriesCounter) + "_BlockHeight_") + IPFSHash), height), StringEntry(((toString(CurrentSeriesCounter) + "_HASH_") + IPFSHash), IPFSHash), StringEntry(("HASH_" + IPFSHash), IPFSHash), StringEntry(((toString(CurrentSeriesCounter) + "_Creator_") + IPFSHash), currentKey), StringEntry(((toString(CurrentSeriesCounter) + "_Description_") + IPFSHash), NFTDescription), StringEntry(((toString(CurrentSeriesCounter) + "_Link_") + IPFSHash), IPFSHashLink), StringEntry(((toString(CurrentSeriesCounter) + "_AuctionStatus_") + IPFSHash), "Close"), ScriptTransfer(i.caller, 1, getassetId), ScriptTransfer(addressFromPublicKey(A4ATreasury), pmt.amount, unit)] | |
57 | + | } | |
58 | + | ||
59 | + | ||
60 | + | ||
61 | + | @Callable(i) | |
62 | + | func AddLikes (Counter,IPFSHash) = { | |
63 | + | let currentKey = toBase58String(i.caller.bytes) | |
64 | + | let NFTLikeFee = 10000000 | |
65 | + | let pmt = if ((size(i.payments) == 1)) | |
66 | + | then i.payments[0] | |
67 | + | else throw("0.1 CODE Token is required as Attached payment") | |
68 | + | let getIPFSHash = getString(this, ("HASH_" + IPFSHash)) | |
69 | + | let getLikesCounter = match getInteger(this, ((toString(Counter) + "_Likes_") + IPFSHash)) { | |
70 | + | case a: Int => | |
71 | + | a | |
72 | + | case _ => | |
73 | + | 0 | |
74 | + | } | |
75 | + | let CurrentSeriesCounter = (getLikesCounter + 1) | |
76 | + | if ((pmt.assetId != CODEAssetID)) | |
77 | + | then throw("Please Attach CODE asset only.") | |
78 | + | else if ((pmt.amount != NFTLikeFee)) | |
79 | + | then throw((("0.1 CODE Token is required as Attached payment amount. You attached only [int: " + toString(pmt.amount)) + "]")) | |
80 | + | else if ((getIPFSHash != IPFSHash)) | |
81 | + | then throw(((" Input Hash [" + IPFSHash) + "] is not an Registered one.")) | |
82 | + | else [IntegerEntry(((toString(Counter) + "_Likes_") + IPFSHash), CurrentSeriesCounter), ScriptTransfer(addressFromPublicKey(A4ATreasury), pmt.amount, CODEAssetID), StringEntry("message", "<h1>Thanks for the Like❤️!</h1><br>")] | |
83 | + | } | |
84 | + | ||
85 | + | ||
86 | + | ||
87 | + | @Callable(i) | |
88 | + | func AddBackupValue (Counter,IPFSHash) = { | |
89 | + | let currentKey = toBase58String(i.caller.bytes) | |
90 | + | let MinimumBackupValue = 1 | |
91 | + | let pmt = if ((size(i.payments) == 1)) | |
92 | + | then i.payments[0] | |
93 | + | else throw("USDT Token is required as Attached payment to Add Backup Value.") | |
94 | + | let getIPFSHash = getString(this, ("HASH_" + IPFSHash)) | |
95 | + | let getBackupValue = match getInteger(this, ((toString(Counter) + "_Backup_") + IPFSHash)) { | |
96 | + | case a: Int => | |
97 | + | a | |
98 | + | case _ => | |
99 | + | 0 | |
100 | + | } | |
101 | + | let TotalBackupValue = (getBackupValue + pmt.amount) | |
102 | + | let getSumupBackupValueAllNFT = match getInteger(this, "All_NFTs_Backup_Value") { | |
103 | + | case a: Int => | |
104 | + | a | |
105 | + | case _ => | |
106 | + | 0 | |
107 | + | } | |
108 | + | let SumupBackupValueAllNFT = (getSumupBackupValueAllNFT + pmt.amount) | |
109 | + | if ((pmt.assetId != USDTAssetID)) | |
110 | + | then throw("Please Attach USDT asset only.") | |
111 | + | else if ((pmt.amount != MinimumBackupValue)) | |
112 | + | then throw((("0.000001 USDT Token is required as Attached payment amount. You attached only [int: " + toString(pmt.amount)) + "]")) | |
113 | + | else if ((getIPFSHash != IPFSHash)) | |
114 | + | then throw(((" Input Hash [" + IPFSHash) + "] is not an Registered one.")) | |
115 | + | else [IntegerEntry(((toString(Counter) + "_Backup_") + IPFSHash), TotalBackupValue), IntegerEntry("All_NFTs_Backup_Value", SumupBackupValueAllNFT), ScriptTransfer(addressFromPublicKey(A4ATreasury), pmt.amount, USDTAssetID), StringEntry("message", "<h1>Thanks for Adding Backup Value 💵 to NFT.!</h1><br>")] | |
116 | + | } | |
117 | + | ||
118 | + | ||
119 | + | ||
120 | + | @Callable(i) | |
121 | + | func InstantNFTAuction (Counter,IPFSHash,NFTAsset,AuctionPrice,ReceiveAsset) = { | |
122 | + | let currentKey = toBase58String(i.caller.bytes) | |
123 | + | let MinimumAuctionValue = 100000 | |
124 | + | let MaximumAuctionValue = 100000000000000 | |
125 | + | let getIPFSHash = getString(this, ("HASH_" + IPFSHash)) | |
126 | + | let fetchNFTAssetID = getStringValue(this, ((toString(Counter) + "_AssetID_") + IPFSHash)) | |
127 | + | let fetchNFTAuctionStatus = getStringValue(this, ((toString(Counter) + "_AuctionStatus_") + IPFSHash)) | |
128 | + | let pmt = if ((size(i.payments) == 1)) | |
129 | + | then i.payments[0] | |
130 | + | else throw("Please Attach NFT AssetID in Payment.") | |
131 | + | if ((getIPFSHash != IPFSHash)) | |
132 | + | then throw(((" Input Hash [" + IPFSHash) + "] is not an Registered one.")) | |
133 | + | else if ((pmt.assetId != fromBase58String(NFTAsset))) | |
134 | + | then throw("Entered 'NFTAsset' for Sale must match with Attached Asset.") | |
135 | + | else if ((NFTAsset != fetchNFTAssetID)) | |
136 | + | then throw("Entered AssetID not found in the DApp. Be Ensure it's being minted by A4ADAO.") | |
137 | + | else if ((pmt.amount != 1)) | |
138 | + | then throw("Attached Asset amount must be 1 to meet NFT Creteria.") | |
139 | + | else if ((fetchNFTAuctionStatus == "Open")) | |
140 | + | then throw("NFT is already under Auction for Selling.") | |
141 | + | else if ((MinimumAuctionValue >= AuctionPrice)) | |
142 | + | then throw((("Auction Price is must be more than " + toString(MinimumAuctionValue)) + "-[Int]")) | |
143 | + | else if ((AuctionPrice > MaximumAuctionValue)) | |
144 | + | then throw((("Auction Price is must be less than " + toString(MaximumAuctionValue)) + "-[Int]")) | |
145 | + | else if ((ReceiveAsset == "A4A")) | |
146 | + | then [StringEntry(((toString(Counter) + "_AuctionStatus_") + IPFSHash), "Open"), IntegerEntry(((toString(Counter) + "_AuctionAmount_") + IPFSHash), AuctionPrice), StringEntry(((toString(Counter) + "_AuctionPriceAsset_") + IPFSHash), toBase58String(A4AAssetID)), StringEntry(((toString(Counter) + "_AuctionCreator_") + IPFSHash), currentKey), StringEntry("message", message)] | |
147 | + | else if ((ReceiveAsset == "BTC")) | |
148 | + | then [StringEntry(((toString(Counter) + "_AuctionStatus_") + IPFSHash), "Open"), IntegerEntry(((toString(Counter) + "_AuctionAmount_") + IPFSHash), AuctionPrice), StringEntry(((toString(Counter) + "_AuctionPriceAsset_") + IPFSHash), toBase58String(BTCAssetID)), StringEntry(((toString(Counter) + "_AuctionCreator_") + IPFSHash), currentKey), StringEntry("message", message)] | |
149 | + | else if ((ReceiveAsset == "CASH")) | |
150 | + | then [StringEntry(((toString(Counter) + "_AuctionStatus_") + IPFSHash), "Open"), IntegerEntry(((toString(Counter) + "_AuctionAmount_") + IPFSHash), AuctionPrice), StringEntry(((toString(Counter) + "_AuctionPriceAsset_") + IPFSHash), toBase58String(CASHAssetID)), StringEntry(((toString(Counter) + "_AuctionCreator_") + IPFSHash), currentKey), StringEntry("message", message)] | |
151 | + | else if ((ReceiveAsset == "CODE")) | |
152 | + | then [StringEntry(((toString(Counter) + "_AuctionStatus_") + IPFSHash), "Open"), IntegerEntry(((toString(Counter) + "_AuctionAmount_") + IPFSHash), AuctionPrice), StringEntry(((toString(Counter) + "_AuctionPriceAsset_") + IPFSHash), toBase58String(CODEAssetID)), StringEntry(((toString(Counter) + "_AuctionCreator_") + IPFSHash), currentKey), StringEntry("message", message)] | |
153 | + | else if ((ReceiveAsset == "DVPN")) | |
154 | + | then [StringEntry(((toString(Counter) + "_AuctionStatus_") + IPFSHash), "Open"), IntegerEntry(((toString(Counter) + "_AuctionAmount_") + IPFSHash), AuctionPrice), StringEntry(((toString(Counter) + "_AuctionPriceAsset_") + IPFSHash), toBase58String(DVPNAssetID)), StringEntry(((toString(Counter) + "_AuctionCreator_") + IPFSHash), currentKey), StringEntry("message", message)] | |
155 | + | else if ((ReceiveAsset == "TN")) | |
156 | + | then [StringEntry(((toString(Counter) + "_AuctionStatus_") + IPFSHash), "Open"), IntegerEntry(((toString(Counter) + "_AuctionAmount_") + IPFSHash), AuctionPrice), StringEntry(((toString(Counter) + "_AuctionPriceAsset_") + IPFSHash), "TN"), StringEntry(((toString(Counter) + "_AuctionCreator_") + IPFSHash), currentKey), StringEntry("message", message)] | |
157 | + | else if ((ReceiveAsset == "USDT")) | |
158 | + | then [StringEntry(((toString(Counter) + "_AuctionStatus_") + IPFSHash), "Open"), IntegerEntry(((toString(Counter) + "_AuctionAmount_") + IPFSHash), AuctionPrice), StringEntry(((toString(Counter) + "_AuctionPriceAsset_") + IPFSHash), toBase58String(USDTAssetID)), StringEntry(((toString(Counter) + "_AuctionCreator_") + IPFSHash), currentKey), StringEntry("message", message)] | |
159 | + | else if ((ReceiveAsset == "WAVES")) | |
160 | + | then [StringEntry(((toString(Counter) + "_AuctionStatus_") + IPFSHash), "Open"), IntegerEntry(((toString(Counter) + "_AuctionAmount_") + IPFSHash), AuctionPrice), StringEntry(((toString(Counter) + "_AuctionPriceAsset_") + IPFSHash), toBase58String(WAVESAssetID)), StringEntry(((toString(Counter) + "_AuctionCreator_") + IPFSHash), currentKey), StringEntry("message", message)] | |
161 | + | else if ((ReceiveAsset == "XHV")) | |
162 | + | then [StringEntry(((toString(Counter) + "_AuctionStatus_") + IPFSHash), "Open"), IntegerEntry(((toString(Counter) + "_AuctionAmount_") + IPFSHash), AuctionPrice), StringEntry(((toString(Counter) + "_AuctionPriceAsset_") + IPFSHash), toBase58String(XHVAssetID)), StringEntry(((toString(Counter) + "_AuctionCreator_") + IPFSHash), currentKey), StringEntry("message", message)] | |
163 | + | else if ((ReceiveAsset == "XMR")) | |
164 | + | then [StringEntry(((toString(Counter) + "_AuctionStatus_") + IPFSHash), "Open"), IntegerEntry(((toString(Counter) + "_AuctionAmount_") + IPFSHash), AuctionPrice), StringEntry(((toString(Counter) + "_AuctionPriceAsset_") + IPFSHash), toBase58String(XMRAssetID)), StringEntry(((toString(Counter) + "_AuctionCreator_") + IPFSHash), currentKey), StringEntry("message", message)] | |
165 | + | else if ((ReceiveAsset == "xUSD")) | |
166 | + | then [StringEntry(((toString(Counter) + "_AuctionStatus_") + IPFSHash), "Open"), IntegerEntry(((toString(Counter) + "_AuctionAmount_") + IPFSHash), AuctionPrice), StringEntry(((toString(Counter) + "_AuctionPriceAsset_") + IPFSHash), toBase58String(xUSDAssetID)), StringEntry(((toString(Counter) + "_AuctionCreator_") + IPFSHash), currentKey), StringEntry("message", message)] | |
167 | + | else throw("Only Whitelisted Asseted are accepted for Instant NFT Auction.") | |
168 | + | } | |
169 | + | ||
170 | + | ||
171 | + | ||
172 | + | @Callable(i) | |
173 | + | func InstantBuy (Counter,IPFSHash,NFTAsset) = { | |
174 | + | let calleraddress = toBase58String(i.caller.bytes) | |
175 | + | let fetchNFTAuctionStatus = getStringValue(this, ((toString(Counter) + "_AuctionStatus_") + IPFSHash)) | |
176 | + | let pmt = if ((size(i.payments) == 1)) | |
177 | + | then i.payments[0] | |
178 | + | else throw("Auction Price AssetID is Required as Payment Here.") | |
179 | + | let getIPFSHash = getString(this, ("HASH_" + IPFSHash)) | |
180 | + | let fetchNFTAssetID = getStringValue(this, ((toString(Counter) + "_AssetID_") + IPFSHash)) | |
181 | + | let getAuctionCrator = getStringValue(this, ((toString(Counter) + "_AuctionCreator_") + IPFSHash)) | |
182 | + | let getOriginalCrator = getStringValue(this, ((toString(Counter) + "_Creator_") + IPFSHash)) | |
183 | + | let getAuctionPrice = getIntegerValue(this, ((toString(Counter) + "_AuctionAmount_") + IPFSHash)) | |
184 | + | let getAuctionPriceAsset = getStringValue(this, ((toString(Counter) + "_AuctionPriceAsset_") + IPFSHash)) | |
185 | + | let Dapp_Fee = fraction(getAuctionPrice, NFTSwapFee, 1000) | |
186 | + | let Royalty_Fee = fraction(getAuctionPrice, Royalty, 1000) | |
187 | + | let getAuctionCratorClaim = ((getAuctionPrice - Dapp_Fee) - Royalty_Fee) | |
188 | + | let NFT_Sold = match getInteger(this, "Total_NFT_Sold") { | |
189 | + | case a: Int => | |
190 | + | a | |
191 | + | case _ => | |
192 | + | 0 | |
193 | + | } | |
194 | + | let Total_Nft_Sold = (NFT_Sold + 1) | |
195 | + | let Specific_NFT_Sold = match getInteger(this, (toString(Counter) + "_NFT_Sold")) { | |
196 | + | case a: Int => | |
197 | + | a | |
198 | + | case _ => | |
199 | + | 0 | |
200 | + | } | |
201 | + | let Total_Specific_NFT_Sold = (Specific_NFT_Sold + 1) | |
202 | + | let NFT_Volume = match getInteger(this, (getAuctionPriceAsset + "_NFT_Volume")) { | |
203 | + | case a: Int => | |
204 | + | a | |
205 | + | case _ => | |
206 | + | 0 | |
207 | + | } | |
208 | + | let Total_Nft_Volume = (NFT_Volume + getAuctionPrice) | |
209 | + | let NFT_Royalty = match getInteger(this, (getAuctionPriceAsset + "_NFT_Royalty")) { | |
210 | + | case a: Int => | |
211 | + | a | |
212 | + | case _ => | |
213 | + | 0 | |
214 | + | } | |
215 | + | let Total_Nft_Royalty = (NFT_Royalty + Royalty_Fee) | |
216 | + | let NFT_Dapp_Fee = match getInteger(this, (getAuctionPriceAsset + "_NFT_DappFee")) { | |
217 | + | case a: Int => | |
218 | + | a | |
219 | + | case _ => | |
220 | + | 0 | |
221 | + | } | |
222 | + | let Total_Nft_Dapp_Fee = (NFT_Dapp_Fee + Dapp_Fee) | |
223 | + | if ((getIPFSHash != IPFSHash)) | |
224 | + | then throw(((" Input Hash [" + IPFSHash) + "] is not an Registered one.")) | |
225 | + | else if ((NFTAsset != fetchNFTAssetID)) | |
226 | + | then throw("Entered AssetID not found in the DApp. Be Ensure it's being minted by A4ADAO.") | |
227 | + | else if ((fetchNFTAuctionStatus == "Close")) | |
228 | + | then throw("NFT is not under Auction for Selling.") | |
229 | + | else if ((pmt.amount != getAuctionPrice)) | |
230 | + | then throw((((("Attached Asset Amount must be " + getAuctionPriceAsset) + " equal to Auction Price. Which is ") + toString(getAuctionPrice)) + "-[Int]")) | |
231 | + | else if ((getAuctionPriceAsset == toBase58String(A4AAssetID))) | |
232 | + | then [StringEntry(((toString(Counter) + "_AuctionStatus_") + IPFSHash), "Close"), IntegerEntry("Total_NFT_Sold", Total_Nft_Sold), IntegerEntry((toString(Counter) + "_NFT_Sold"), Total_Specific_NFT_Sold), IntegerEntry((getAuctionPriceAsset + "_NFT_Volume"), Total_Nft_Volume), IntegerEntry((getAuctionPriceAsset + "_NFT_Royalty"), Total_Nft_Royalty), IntegerEntry((getAuctionPriceAsset + "_NFT_DappFee"), Total_Nft_Dapp_Fee), DeleteEntry(((toString(Counter) + "_AuctionAmount_") + IPFSHash)), DeleteEntry(((toString(Counter) + "_AuctionPriceAsset_") + IPFSHash)), DeleteEntry(((toString(Counter) + "_AuctionCreator_") + IPFSHash)), ScriptTransfer(i.caller, 1, fromBase58String(fetchNFTAssetID)), ScriptTransfer(addressFromPublicKey(A4ATreasury), Dapp_Fee, A4AAssetID), ScriptTransfer(addressFromStringValue(getOriginalCrator), Royalty_Fee, A4AAssetID), ScriptTransfer(addressFromStringValue(getAuctionCrator), getAuctionCratorClaim, A4AAssetID)] | |
233 | + | else if ((getAuctionPriceAsset == toBase58String(BTCAssetID))) | |
234 | + | then [StringEntry(((toString(Counter) + "_AuctionStatus_") + IPFSHash), "Close"), IntegerEntry("Total_NFT_Sold", Total_Nft_Sold), IntegerEntry((toString(Counter) + "_NFT_Sold"), Total_Specific_NFT_Sold), IntegerEntry((getAuctionPriceAsset + "_NFT_Volume"), Total_Nft_Volume), IntegerEntry((getAuctionPriceAsset + "_NFT_Royalty"), Total_Nft_Royalty), IntegerEntry((getAuctionPriceAsset + "_NFT_DappFee"), Total_Nft_Dapp_Fee), DeleteEntry(((toString(Counter) + "_AuctionAmount_") + IPFSHash)), DeleteEntry(((toString(Counter) + "_AuctionPriceAsset_") + IPFSHash)), DeleteEntry(((toString(Counter) + "_AuctionCreator_") + IPFSHash)), ScriptTransfer(i.caller, 1, fromBase58String(fetchNFTAssetID)), ScriptTransfer(addressFromPublicKey(A4ATreasury), Dapp_Fee, BTCAssetID), ScriptTransfer(addressFromStringValue(getOriginalCrator), Royalty_Fee, BTCAssetID), ScriptTransfer(addressFromStringValue(getAuctionCrator), getAuctionCratorClaim, BTCAssetID)] | |
235 | + | else if ((getAuctionPriceAsset == toBase58String(CASHAssetID))) | |
236 | + | then [StringEntry(((toString(Counter) + "_AuctionStatus_") + IPFSHash), "Close"), IntegerEntry("Total_NFT_Sold", Total_Nft_Sold), IntegerEntry((toString(Counter) + "_NFT_Sold"), Total_Specific_NFT_Sold), IntegerEntry((getAuctionPriceAsset + "_NFT_Volume"), Total_Nft_Volume), IntegerEntry((getAuctionPriceAsset + "_NFT_Royalty"), Total_Nft_Royalty), IntegerEntry((getAuctionPriceAsset + "_NFT_DappFee"), Total_Nft_Dapp_Fee), DeleteEntry(((toString(Counter) + "_AuctionAmount_") + IPFSHash)), DeleteEntry(((toString(Counter) + "_AuctionPriceAsset_") + IPFSHash)), DeleteEntry(((toString(Counter) + "_AuctionCreator_") + IPFSHash)), ScriptTransfer(i.caller, 1, fromBase58String(fetchNFTAssetID)), ScriptTransfer(addressFromPublicKey(A4ATreasury), Dapp_Fee, CASHAssetID), ScriptTransfer(addressFromStringValue(getOriginalCrator), Royalty_Fee, CASHAssetID), ScriptTransfer(addressFromStringValue(getAuctionCrator), getAuctionCratorClaim, CASHAssetID)] | |
237 | + | else if ((getAuctionPriceAsset == toBase58String(CODEAssetID))) | |
238 | + | then [StringEntry(((toString(Counter) + "_AuctionStatus_") + IPFSHash), "Close"), IntegerEntry("Total_NFT_Sold", Total_Nft_Sold), IntegerEntry((toString(Counter) + "_NFT_Sold"), Total_Specific_NFT_Sold), IntegerEntry((getAuctionPriceAsset + "_NFT_Volume"), Total_Nft_Volume), IntegerEntry((getAuctionPriceAsset + "_NFT_Royalty"), Total_Nft_Royalty), IntegerEntry((getAuctionPriceAsset + "_NFT_DappFee"), Total_Nft_Dapp_Fee), DeleteEntry(((toString(Counter) + "_AuctionAmount_") + IPFSHash)), DeleteEntry(((toString(Counter) + "_AuctionPriceAsset_") + IPFSHash)), DeleteEntry(((toString(Counter) + "_AuctionCreator_") + IPFSHash)), ScriptTransfer(i.caller, 1, fromBase58String(fetchNFTAssetID)), ScriptTransfer(addressFromPublicKey(A4ATreasury), Dapp_Fee, CODEAssetID), ScriptTransfer(addressFromStringValue(getOriginalCrator), Royalty_Fee, CODEAssetID), ScriptTransfer(addressFromStringValue(getAuctionCrator), getAuctionCratorClaim, CODEAssetID)] | |
239 | + | else if ((getAuctionPriceAsset == toBase58String(DVPNAssetID))) | |
240 | + | then [StringEntry(((toString(Counter) + "_AuctionStatus_") + IPFSHash), "Close"), IntegerEntry("Total_NFT_Sold", Total_Nft_Sold), IntegerEntry((toString(Counter) + "_NFT_Sold"), Total_Specific_NFT_Sold), IntegerEntry((getAuctionPriceAsset + "_NFT_Volume"), Total_Nft_Volume), IntegerEntry((getAuctionPriceAsset + "_NFT_Royalty"), Total_Nft_Royalty), IntegerEntry((getAuctionPriceAsset + "_NFT_DappFee"), Total_Nft_Dapp_Fee), DeleteEntry(((toString(Counter) + "_AuctionAmount_") + IPFSHash)), DeleteEntry(((toString(Counter) + "_AuctionPriceAsset_") + IPFSHash)), DeleteEntry(((toString(Counter) + "_AuctionCreator_") + IPFSHash)), ScriptTransfer(i.caller, 1, fromBase58String(fetchNFTAssetID)), ScriptTransfer(addressFromPublicKey(A4ATreasury), Dapp_Fee, DVPNAssetID), ScriptTransfer(addressFromStringValue(getOriginalCrator), Royalty_Fee, DVPNAssetID), ScriptTransfer(addressFromStringValue(getAuctionCrator), getAuctionCratorClaim, DVPNAssetID)] | |
241 | + | else if ((getAuctionPriceAsset == "TN")) | |
242 | + | then [StringEntry(((toString(Counter) + "_AuctionStatus_") + IPFSHash), "Close"), IntegerEntry("Total_NFT_Sold", Total_Nft_Sold), IntegerEntry((toString(Counter) + "_NFT_Sold"), Total_Specific_NFT_Sold), IntegerEntry((getAuctionPriceAsset + "_NFT_Volume"), Total_Nft_Volume), IntegerEntry((getAuctionPriceAsset + "_NFT_Royalty"), Total_Nft_Royalty), IntegerEntry((getAuctionPriceAsset + "_NFT_DappFee"), Total_Nft_Dapp_Fee), DeleteEntry(((toString(Counter) + "_AuctionAmount_") + IPFSHash)), DeleteEntry(((toString(Counter) + "_AuctionPriceAsset_") + IPFSHash)), DeleteEntry(((toString(Counter) + "_AuctionCreator_") + IPFSHash)), ScriptTransfer(i.caller, 1, fromBase58String(fetchNFTAssetID)), ScriptTransfer(addressFromPublicKey(A4ATreasury), Dapp_Fee, unit), ScriptTransfer(addressFromStringValue(getOriginalCrator), Royalty_Fee, unit), ScriptTransfer(addressFromStringValue(getAuctionCrator), getAuctionCratorClaim, unit)] | |
243 | + | else if ((getAuctionPriceAsset == toBase58String(USDTAssetID))) | |
244 | + | then [StringEntry(((toString(Counter) + "_AuctionStatus_") + IPFSHash), "Close"), IntegerEntry("Total_NFT_Sold", Total_Nft_Sold), IntegerEntry((toString(Counter) + "_NFT_Sold"), Total_Specific_NFT_Sold), IntegerEntry((getAuctionPriceAsset + "_NFT_Volume"), Total_Nft_Volume), IntegerEntry((getAuctionPriceAsset + "_NFT_Royalty"), Total_Nft_Royalty), IntegerEntry((getAuctionPriceAsset + "_NFT_DappFee"), Total_Nft_Dapp_Fee), DeleteEntry(((toString(Counter) + "_AuctionAmount_") + IPFSHash)), DeleteEntry(((toString(Counter) + "_AuctionPriceAsset_") + IPFSHash)), DeleteEntry(((toString(Counter) + "_AuctionCreator_") + IPFSHash)), ScriptTransfer(i.caller, 1, fromBase58String(fetchNFTAssetID)), ScriptTransfer(addressFromPublicKey(A4ATreasury), Dapp_Fee, USDTAssetID), ScriptTransfer(addressFromStringValue(getOriginalCrator), Royalty_Fee, USDTAssetID), ScriptTransfer(addressFromStringValue(getAuctionCrator), getAuctionCratorClaim, USDTAssetID)] | |
245 | + | else if ((getAuctionPriceAsset == toBase58String(WAVESAssetID))) | |
246 | + | then [StringEntry(((toString(Counter) + "_AuctionStatus_") + IPFSHash), "Close"), IntegerEntry("Total_NFT_Sold", Total_Nft_Sold), IntegerEntry((toString(Counter) + "_NFT_Sold"), Total_Specific_NFT_Sold), IntegerEntry((getAuctionPriceAsset + "_NFT_Volume"), Total_Nft_Volume), IntegerEntry((getAuctionPriceAsset + "_NFT_Royalty"), Total_Nft_Royalty), IntegerEntry((getAuctionPriceAsset + "_NFT_DappFee"), Total_Nft_Dapp_Fee), DeleteEntry(((toString(Counter) + "_AuctionAmount_") + IPFSHash)), DeleteEntry(((toString(Counter) + "_AuctionPriceAsset_") + IPFSHash)), DeleteEntry(((toString(Counter) + "_AuctionCreator_") + IPFSHash)), ScriptTransfer(i.caller, 1, fromBase58String(fetchNFTAssetID)), ScriptTransfer(addressFromPublicKey(A4ATreasury), Dapp_Fee, WAVESAssetID), ScriptTransfer(addressFromStringValue(getOriginalCrator), Royalty_Fee, WAVESAssetID), ScriptTransfer(addressFromStringValue(getAuctionCrator), getAuctionCratorClaim, WAVESAssetID)] | |
247 | + | else if ((getAuctionPriceAsset == toBase58String(XHVAssetID))) | |
248 | + | then [StringEntry(((toString(Counter) + "_AuctionStatus_") + IPFSHash), "Close"), IntegerEntry("Total_NFT_Sold", Total_Nft_Sold), IntegerEntry((toString(Counter) + "_NFT_Sold"), Total_Specific_NFT_Sold), IntegerEntry((getAuctionPriceAsset + "_NFT_Volume"), Total_Nft_Volume), IntegerEntry((getAuctionPriceAsset + "_NFT_Royalty"), Total_Nft_Royalty), IntegerEntry((getAuctionPriceAsset + "_NFT_DappFee"), Total_Nft_Dapp_Fee), DeleteEntry(((toString(Counter) + "_AuctionAmount_") + IPFSHash)), DeleteEntry(((toString(Counter) + "_AuctionPriceAsset_") + IPFSHash)), DeleteEntry(((toString(Counter) + "_AuctionCreator_") + IPFSHash)), ScriptTransfer(i.caller, 1, fromBase58String(fetchNFTAssetID)), ScriptTransfer(addressFromPublicKey(A4ATreasury), Dapp_Fee, XHVAssetID), ScriptTransfer(addressFromStringValue(getOriginalCrator), Royalty_Fee, XHVAssetID), ScriptTransfer(addressFromStringValue(getAuctionCrator), getAuctionCratorClaim, XHVAssetID)] | |
249 | + | else if ((getAuctionPriceAsset == toBase58String(XMRAssetID))) | |
250 | + | then [StringEntry(((toString(Counter) + "_AuctionStatus_") + IPFSHash), "Close"), IntegerEntry("Total_NFT_Sold", Total_Nft_Sold), IntegerEntry((toString(Counter) + "_NFT_Sold"), Total_Specific_NFT_Sold), IntegerEntry((getAuctionPriceAsset + "_NFT_Volume"), Total_Nft_Volume), IntegerEntry((getAuctionPriceAsset + "_NFT_Royalty"), Total_Nft_Royalty), IntegerEntry((getAuctionPriceAsset + "_NFT_DappFee"), Total_Nft_Dapp_Fee), DeleteEntry(((toString(Counter) + "_AuctionAmount_") + IPFSHash)), DeleteEntry(((toString(Counter) + "_AuctionPriceAsset_") + IPFSHash)), DeleteEntry(((toString(Counter) + "_AuctionCreator_") + IPFSHash)), ScriptTransfer(i.caller, 1, fromBase58String(fetchNFTAssetID)), ScriptTransfer(addressFromPublicKey(A4ATreasury), Dapp_Fee, XMRAssetID), ScriptTransfer(addressFromStringValue(getOriginalCrator), Royalty_Fee, XMRAssetID), ScriptTransfer(addressFromStringValue(getAuctionCrator), getAuctionCratorClaim, XMRAssetID)] | |
251 | + | else if ((getAuctionPriceAsset == toBase58String(xUSDAssetID))) | |
252 | + | then [StringEntry(((toString(Counter) + "_AuctionStatus_") + IPFSHash), "Close"), IntegerEntry("Total_NFT_Sold", Total_Nft_Sold), IntegerEntry((toString(Counter) + "_NFT_Sold"), Total_Specific_NFT_Sold), IntegerEntry((getAuctionPriceAsset + "_NFT_Volume"), Total_Nft_Volume), IntegerEntry((getAuctionPriceAsset + "_NFT_Royalty"), Total_Nft_Royalty), IntegerEntry((getAuctionPriceAsset + "_NFT_DappFee"), Total_Nft_Dapp_Fee), DeleteEntry(((toString(Counter) + "_AuctionAmount_") + IPFSHash)), DeleteEntry(((toString(Counter) + "_AuctionPriceAsset_") + IPFSHash)), DeleteEntry(((toString(Counter) + "_AuctionCreator_") + IPFSHash)), ScriptTransfer(i.caller, 1, fromBase58String(fetchNFTAssetID)), ScriptTransfer(addressFromPublicKey(A4ATreasury), Dapp_Fee, xUSDAssetID), ScriptTransfer(addressFromStringValue(getOriginalCrator), Royalty_Fee, xUSDAssetID), ScriptTransfer(addressFromStringValue(getAuctionCrator), getAuctionCratorClaim, xUSDAssetID)] | |
253 | + | else throw("Only Whitelisted Assets are accepted for NFT Direct Auction.") | |
254 | + | } | |
255 | + | ||
256 | + | ||
257 | + | ||
258 | + | @Callable(i) | |
259 | + | func RevokeAuction (Counter,IPFSHash) = { | |
260 | + | let calleraddress = toBase58String(i.caller.bytes) | |
261 | + | let getIPFSHash = getString(this, ("HASH_" + IPFSHash)) | |
262 | + | let fetchNFTAssetID = getStringValue(this, ((toString(Counter) + "_AssetID_") + IPFSHash)) | |
263 | + | let fetchNFTAuctionStatus = getStringValue(this, ((toString(Counter) + "_AuctionStatus_") + IPFSHash)) | |
264 | + | let getAuctionCrator = getStringValue(this, ((toString(Counter) + "_AuctionCreator_") + IPFSHash)) | |
265 | + | let getOriginalCrator = getStringValue(this, ((toString(Counter) + "_Creator_") + IPFSHash)) | |
266 | + | let getAuctionPrice = getIntegerValue(this, ((toString(Counter) + "_AuctionAmount_") + IPFSHash)) | |
267 | + | let getAuctionPriceAsset = getStringValue(this, ((toString(Counter) + "_AuctionPriceAsset_") + IPFSHash)) | |
268 | + | if ((getIPFSHash != IPFSHash)) | |
269 | + | then throw(((" Input Hash [" + IPFSHash) + "] is not an Registered one.")) | |
270 | + | else if ((getAuctionCrator != calleraddress)) | |
271 | + | then throw((("Your are not allowded to use this Function. Only " + getAuctionCrator) + " can use this function.")) | |
272 | + | else if ((fetchNFTAuctionStatus == "Close")) | |
273 | + | then throw("NFT is not in Auction for Selling. Only Active NFT Under Auction can be Revoked.") | |
274 | + | else [StringEntry(((toString(Counter) + "_AuctionStatus_") + IPFSHash), "Close"), DeleteEntry(toString(getAuctionPrice)), DeleteEntry(getAuctionPriceAsset), DeleteEntry(getAuctionCrator), ScriptTransfer(i.caller, 1, fromBase58String(fetchNFTAssetID))] | |
275 | + | } | |
276 | + | ||
277 | + | ||
278 | + | ||
279 | + | @Callable(i) | |
280 | + | func BlacklistToErase (Entry) = { | |
281 | + | let adminrights = valueOrErrorMessage(getString(this, "Admin_Rights"), "Admin Rights are Not Included into Smart Contract. Deploy Admin Rights First.") | |
282 | + | let calleraddress = toBase58String(i.caller.bytes) | |
283 | + | if ((adminrights != calleraddress)) | |
284 | + | then throw((("Your are not allowded to use this Function. Only " + adminrights) + " can use this function.")) | |
285 | + | else [DeleteEntry(Entry)] | |
286 | + | } | |
287 | + | ||
288 | + | ||
289 | + | @Verifier(tx) | |
290 | + | func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey) | |
291 | + |
github/deemru/w8io/169f3d6 44.46 ms ◑![]()