tx · BPyVdXSziRPhaNWMbMmXF6CiETyDmNg8SFsgpq6Nyfux

3Mrnje6z2xa3xuXyU2Lk6ynKy8tsRnnt4Bv:  -0.01400000 Waves

2021.08.25 19:48 [1674110] smart account 3Mrnje6z2xa3xuXyU2Lk6ynKy8tsRnnt4Bv > SELF 0.00000000 Waves

{ "type": 13, "id": "BPyVdXSziRPhaNWMbMmXF6CiETyDmNg8SFsgpq6Nyfux", "fee": 1400000, "feeAssetId": null, "timestamp": 1629910091477, "version": 2, "chainId": 84, "sender": "3Mrnje6z2xa3xuXyU2Lk6ynKy8tsRnnt4Bv", "senderPublicKey": "28sGn7FYnmxceAmnGYiDiKuMK1QyXiqX8zQXfKDnrc8t", "proofs": [ "3iqJA8M3MLtAzhJC7zXf9qW8jbH241VSghjEjxh6DcwfXTpraF1BCWSiinKesm8R4NCDhV5VkWqxzZpPKmQrT5Vd" ], "script": "base64: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MU1dIFVTRFQuAwkAAGYAAAACBQAAAAxMaXN0aW5nUHJpY2UAAAAA6NSlD/8JAAACAAAAAQIAAABrSGlnaGVyIGxpc3RpbmcgUHJpY2UgaXMgRW50ZXJlZCBwZXIgdG9rZW4sIHBsZWFzZSBlbnRlciBhcyBhIHZhbGlkIHJhbmdlIGluIGJldHdlZW4gcmFuZ2UgWzAuMDEgLSAxTV0gVVNEVC4JAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkAASwAAAACAgAAABJQYWlyX1VuZGVyX1ZvdGluZ18FAAAACEFzc2V0SUQxBQAAAAhBc3NldElEMQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQABLAAAAAICAAAADlZvdGluZ19TdGF0dXNfBQAAAAhBc3NldElEMQUAAAAMdm90aW5nc3RhdHVzCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAICAAAAFFZvdGluZ19TdGFydF9IZWlnaHRfBQAAAAhBc3NldElEMQUAAAAGaGVpZ2h0CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAICAAAAElZvdGluZ19FbmRfSGVpZ2h0XwUAAAAIQXNzZXRJRDEFAAAADHZvdGluZ0V4cGlyZQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACAgAAAA5Wb3RpbmdfUGVyaW9kXwUAAAAIQXNzZXRJRDEFAAAADk5vT2ZEYXlzQmxvY2tzCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAICAAAAE1ZvdGluZ19MaXN0aW5nX0ZlZV8FAAAACEFzc2V0SUQxCAUAAAAEcG10MQAAAAZhbW91bnQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgIAAAAPVm90ZXNfUmVxdWlyZWRfBQAAAAhBc3NldElEMQUAAAANdm90ZXNyZXF1aXJlZAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACAgAAAA9Wb3Rlc19SZWNlaXZlZF8FAAAACEFzc2V0SUQxAAAAAAAAAAAACQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAICAAAACVByaWNlX09mXwUAAAAIQXNzZXRJRDEFAAAADExpc3RpbmdQcmljZQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACAgAAABBSZXZlcnNlUHJpY2VfT2ZfBQAAAAhBc3NldElEMQUAAAAMcmV2ZXJzZXByaWNlCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMJAQAAABRhZGRyZXNzRnJvbVB1YmxpY0tleQAAAAEFAAAACkZlZUFkZHJlc3MIBQAAAARwbXQxAAAABmFtb3VudAUAAAANQmFsbGV0QXNzZXRJRAUAAAADbmlsAAAAAWkBAAAAC0lzc3VlQmFsbGV0AAAAAAQAAAADcG10CQEAAAAFdmFsdWUAAAABCQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAABAAAAApjdXJyZW50S2V5CQACWAAAAAEICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMEAAAADUJhbGxldEFzc2V0SUQBAAAAIC1vWwG5neVKbxqEaKeT7hMXlhgC7/FEdjB7WHX3k6igBAAAAA5QcmljZVBlckJhbGxldAkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAAEdGhpcwIAAAAJQkFMTEVUL1ROBAAAAA9OZXdCYWxsZXRUb1VzZXIJAABrAAAAAwAAAAAAAAGGoAgFAAAAA3BtdAAAAAZhbW91bnQFAAAADlByaWNlUGVyQmFsbGV0BAAAABRQcmV2aW91c0lzc3VlZEJhbGxldAkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAAEdGhpcwIAAAAUVG90YWxfSXNzdWVkX0JhbGxldDoEAAAAEVRvdGFsSXNzdWVkQmFsbGV0CQAAZAAAAAIFAAAAFFByZXZpb3VzSXNzdWVkQmFsbGV0BQAAAA9OZXdCYWxsZXRUb1VzZXIEAAAAGlByZXZpb3VzQmFsbGV0UmVzZXJ2ZVZhbHVlCQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAR0aGlzAgAAABtUb3RhbF9CYWxsZXRfUmVzZXJ2ZV9Jbl9UTjoEAAAAEkJhbGxldFJlc2VydmVWYWx1ZQkAAGQAAAACBQAAABpQcmV2aW91c0JhbGxldFJlc2VydmVWYWx1ZQgFAAAAA3BtdAAAAAZhbW91bnQEAAAAGVByZXZpb3VzQmFsbGV0QmFja3VwUHJpY2UJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAABHRoaXMCAAAAGkJhbGxldF9CYWNrdXBfVmFsdWVfSW5fVE46BAAAABFCYWxsZXRCYWNrdXBQcmljZQkAAGsAAAADAAAAAAAAAYagBQAAABJCYWxsZXRSZXNlcnZlVmFsdWUFAAAAEVRvdGFsSXNzdWVkQmFsbGV0BAAAAApGZWVBZGRyZXNzAQAAACDjrdey1Io21qI8AxObYBZMNWPHMCK947HpXHsKae68IwQAAAANRmVlUGVyY2VudGFnZQAAAAAAAAAAAQQAAAAbQmFsYW5jZVRva2Vuc1JldHVybmVkVG9Vc2VyCQAAZQAAAAIAAAAAAAAAAGQFAAAADUZlZVBlcmNlbnRhZ2UDCQEAAAAJaXNEZWZpbmVkAAAAAQgFAAAAA3BtdAAAAAdhc3NldElkCQAAAgAAAAECAAAAK0luY29ycmVjdCBhc3NldCBhdHRhY2hlZCwgcGxlYXNlIGF0dGFjaCBUTi4DCQAAZgAAAAIAAAAAAABMS0AIBQAAAANwbXQAAAAGYW1vdW50CQAAAgAAAAECAAAANFBsZWFzZSBBdHRhY2ggbWluaW11bSAwLjA1IFROIFRvIElzc3VlIEJhbGxldCBBc3NldC4JAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAICAAAAFFRvdGFsX0lzc3VlZF9CYWxsZXQ6BQAAABFUb3RhbElzc3VlZEJhbGxldAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAAAbVG90YWxfQmFsbGV0X1Jlc2VydmVfSW5fVE46BQAAABJCYWxsZXRSZXNlcnZlVmFsdWUJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAICAAAAGkJhbGxldF9CYWNrdXBfVmFsdWVfSW5fVE46BQAAABFCYWxsZXRCYWNrdXBQcmljZQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACAgAAAAdtZXNzYWdlAgAAACg8aDE+QmFsbGV0IElzc3VlZCBTdWNjZXNzZnVsbHkhPC9oMT48YnI+CQAETAAAAAIJAQAAAAdSZWlzc3VlAAAAAwUAAAANQmFsbGV0QXNzZXRJRAUAAAAPTmV3QmFsbGV0VG9Vc2VyBgkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIJAABpAAAAAgkAAGgAAAACBQAAAA9OZXdCYWxsZXRUb1VzZXIFAAAAG0JhbGFuY2VUb2tlbnNSZXR1cm5lZFRvVXNlcgAAAAAAAAAAZAUAAAANQmFsbGV0QXNzZXRJRAkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAAUYWRkcmVzc0Zyb21QdWJsaWNLZXkAAAABBQAAAApGZWVBZGRyZXNzCQAAaQAAAAIJAABoAAAAAgUAAAAPTmV3QmFsbGV0VG9Vc2VyBQAAAA1GZWVQZXJjZW50YWdlAAAAAAAAAABkBQAAAA1CYWxsZXRBc3NldElEBQAAAANuaWwAAAABaQEAAAAJTGlxdWlkYXRlAAAAAAQAAAAKY3VycmVudEtleQkAAlgAAAABCAUAAAABaQAAAA9jYWxsZXJQdWJsaWNLZXkEAAAAA3BtdAkBAAAABXZhbHVlAAAAAQkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAQAAAANQmFsbGV0QXNzZXRJRAEAAAAgLW9bAbmd5UpvGoRop5PuExeWGALv8UR2MHtYdfeTqKAEAAAAFFByZXZpb3VzSXNzdWVkQmFsbGV0CQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAR0aGlzAgAAABRUb3RhbF9Jc3N1ZWRfQmFsbGV0OgQAAAARVG90YWxJc3N1ZWRCYWxsZXQJAABlAAAAAgUAAAAUUHJldmlvdXNJc3N1ZWRCYWxsZXQIBQAAAANwbXQAAAAGYW1vdW50BAAAABpQcmV2aW91c0JhbGxldFJlc2VydmVWYWx1ZQkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAAEdGhpcwIAAAAbVG90YWxfQmFsbGV0X1Jlc2VydmVfSW5fVE46BAAAABlQcmV2aW91c0JhbGxldEJhY2t1cFByaWNlCQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAR0aGlzAgAAABpCYWxsZXRfQmFja3VwX1ZhbHVlX0luX1ROOgQAAAASY2FsY3VsYXRlYnVybnZhbHVlCQAAawAAAAMFAAAAGVByZXZpb3VzQmFsbGV0QmFja3VwUHJpY2UIBQAAAANwbXQAAAAGYW1vdW50AAAAAAAAAYagBAAAABJCYWxsZXRSZXNlcnZlVmFsdWUJAABlAAAAAgUAAAAaUHJldmlvdXNCYWxsZXRSZXNlcnZlVmFsdWUFAAAAEmNhbGN1bGF0ZWJ1cm52YWx1ZQQAAAARQmFsbGV0QmFja3VwUHJpY2UJAABrAAAAAwAAAAAAAAGGoAUAAAASQmFsbGV0UmVzZXJ2ZVZhbHVlBQAAABFUb3RhbElzc3VlZEJhbGxldAMJAQAAAAIhPQAAAAIIBQAAAANwbXQAAAAHYXNzZXRJZAUAAAANQmFsbGV0QXNzZXRJRAkAAAIAAAABAgAAAEpLaW5kbHkgRGVwb3NpdCBPbmx5IDQ0TXE4S3FVaE05NHQ5M01pQnEzUzIyaWl1R2N6TXhwS21zZTVkQnkydzV5IChCYWxsZXQpLgMJAABmAAAAAgAAAAAAAAGGoAgFAAAAA3BtdAAAAAZhbW91bnQJAAACAAAAAQIAAAAwQXR0YWNoIEFtb3VudCBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAwLjAwMSBCYWxsZXQuCQAETAAAAAIJAQAAAARCdXJuAAAAAgUAAAANQmFsbGV0QXNzZXRJRAgFAAAAA3BtdAAAAAZhbW91bnQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAICAAAAFFRvdGFsX0lzc3VlZF9CYWxsZXQ6BQAAABFUb3RhbElzc3VlZEJhbGxldAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAAAbVG90YWxfQmFsbGV0X1Jlc2VydmVfSW5fVE46BQAAABJCYWxsZXRSZXNlcnZlVmFsdWUJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAICAAAAGkJhbGxldF9CYWNrdXBfVmFsdWVfSW5fVE46BQAAABFCYWxsZXRCYWNrdXBQcmljZQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACAgAAAAdtZXNzYWdlAgAAACw8aDE+QmFsbGV0IExpcXVpZGF0ZWQgU3VjY2Vzc2Z1bGx5ITwvaDE+PGJyPgkABEwA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Y2hlY2twYWlyaXNhdmFpbGFibGVvcm5vdAkABB0AAAACBQAAAAR0aGlzCQABLAAAAAICAAAAElBhaXJfVW5kZXJfVm90aW5nXwUAAAAMRW50ZXJBc3NldElEBAAAABZjaGVja3VzZXJ2b3RpbmdiYWxhbmNlCQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAR0aGlzCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAA9Wb3Rlc19SZWNlaXZlZF8FAAAADWNhbGxlcmFkZHJlc3MCAAAAAV8FAAAADEVudGVyQXNzZXRJRAQAAAAdcGVuZGluZ2Jsb2Nrc2ZvcnByb2plY3RleHBpcmUJAABlAAAAAgUAAAAYY2hlY2twcm9qZWN0ZXhwaXJlaGVpZ2h0BQAAAAZoZWlnaHQDCQEAAAACIT0AAAACBQAAABljaGVja3BhaXJpc2F2YWlsYWJsZW9ybm90BQAAAAxFbnRlckFzc2V0SUQJAAACAAAAAQIAAAAlUGFpciBpcyBub3QgYXZhaWxhYmxlIGluIFZvdGluZyBMaXN0LgMJAABmAAAAAgUAAAAYY2hlY2twcm9qZWN0ZXhwaXJlaGVpZ2h0BQAAAAZoZWlnaHQJAAACAAAAAQkAASwAAAACCQABLAAAAAICAAAAVFZvdGluZyBBbHJlYWR5IFJ1bm5pbmcuIFlvdSBjYW4gd2l0aGRyYXcgeW91ciBCYWxsZXQgVG9rZW4gb25seSBhZnRlciB0aGUgZXhwaXJlIG9mIAkAAaQAAAABBQAAAB1wZW5kaW5nYmxvY2tzZm9ycHJvamVjdGV4cGlyZQIAAAAHIEJsb2NrcwMJAABnAAAAAgAAAAAAAAAAAAUAAAAWY2hlY2t1c2Vydm90aW5nYmFsYW5jZQkAAAIAAAABAgAAAD5Zb3UgZG9uJ3QgaGF2ZSBhbnkgZHVlcyBvZiBiYWxsZXQgYmFsYW5jZSBpbiB0aGlzIFZvdGluZyBQYWlyLgMJAQAAAAlpc0RlZmluZWQAAAABCAUAAAADcG10AAAAB2Fzc2V0SWQJAAACAAAAAQIAAABRRG9uJ3QgYXR0YWNoIGFueSBvdGhlciBhc3NldC4gUGxlYXNlIGF0dGFjaCAwLjEgVE4gYXMgYSBmZWUgdG8gcmVsZWFzZSB5b3VyIHRva2VuAwkBAAAAAiE9AAAAAggFAAAAA3BtdAAAAAZhbW91bnQAAAAAAACYloAJAAACAAAAAQIAAAA0UGxlYXNlIGF0dGFjaCAwLjEgVE4gYXMgYSBmZWUgdG8gcmVsZWFzZSB5b3VyIHRva2VuLgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAPVm90ZXNfUmVjZWl2ZWRfBQAAAA1jYWxsZXJhZGRyZXNzAgAAAAFfBQAAAAxFbnRlckFzc2V0SUQAAAAAAAAAAAAJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyBQAAABZjaGVja3VzZXJ2b3RpbmdiYWxhbmNlBQAAAA1CYWxsZXRBc3NldElEBQAAAANuaWwAAAABaQEAAAAYU3dhcEFzc2V0VG9VU0RUUGFpckVudHJ5AAAAAQAAAAxFbnRlckFzc2V0SUQEAAAADWNhbGxlcmFkZHJlc3MJAAJYAAAAAQgIBQAAAAFpAAAABmNhbGxlcgAAAAVieXRlcwQAAAADcG10AwkAAAAAAAACCQABkAAAAAEIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAABCQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAACQAAAgAAAAECAAAAOldoaXRlbGlzdGVkIFN3YXAgVG9rZW4gaXMgcmVxdWlyZWQgYXMgQXR0YWNoZWQgcGF5bWVudFsxXS4EAAAAC1VTRFRBc3NldElEAQAAACDtbp7OYZSc/c7mGpIdLd7i5i2Qwk2YHwe8BMMPlpx8cQQAAAAZY2hlY2twYWlyaXNhdmFpbGFibGVvcm5vdAkABB0AAAACBQAAAAR0aGlzCQABLAAAAAICAAAAElBhaXJfVW5kZXJfVm90aW5nXwUAAAAMRW50ZXJBc3NldElEBAAAAAxWb3RpbmdTdGF0dXMJAQAAABFAZXh0ck5hdGl2ZSgxMDUzKQAAAAIFAAAABHRoaXMJAAEsAAAAAgIAAAAOVm90aW5nX1N0YXR1c18FAAAADEVudGVyQXNzZXRJRAQAAAAOQ2hlY2tQYWlyUHJpY2UJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAABHRoaXMJAAEsAAAAAgIAAAAJUHJpY2VfT2ZfBQAAAAxFbnRlckFzc2V0SUQEAAAAGkNoZWNrT2xkQmFsYW5jZUFzc2V0dG9VU0RUCQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAR0aGlzCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAtCYWxhbmNlX29mXwUAAAAMRW50ZXJBc3NldElEAgAAAAFfCQACWAAAAAEFAAAAC1VTRFRBc3NldElEBAAAABpDaGVja09sZEJhbGFuY2VVU0RUdG9Bc3NldAkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAAEdGhpcwkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAALQmFsYW5jZV9vZl8JAAJYAAAAAQUAAAALVVNEVEFzc2V0SUQCAAAAAV8FAAAADEVudGVyQXNzZXRJRAQAAAASQ2hlY2tBc3NldERlY2ltYWxzCQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAR0aGlzCQABLAAAAAICAAAADERlY2ltYWxzX29mXwUAAAAMRW50ZXJBc3NldElEBAAAABNDdXJyZW50Vm90aW5nU3RhdHVzAgAAAARGYWlsBAAAAAdTd2FwRmVlAAAAAAAAAAABBAAAAA5Td2FwRmVlQWRkcmVzcwkBAAAAFGFkZHJlc3NGcm9tUHVibGljS2V5AAAAAQEAAAAg463XstSKNtaiPAMTm2AWTDVjxzAiveOx6Vx7CmnuvCMEAAAAE2Ftb3VudEFzc2V0RGVjaW1hbHMFAAAAEkNoZWNrQXNzZXREZWNpbWFscwQAAAAScHJpY2VBc3NldERlY2ltYWxzAAAAAAAAAAAGBAAAAAtkZWNpbWFsc2dhcAkAAGUAAAACCQAAZQAAAAIAAAAAAAAAAAYFAAAAE2Ftb3VudEFzc2V0RGVjaW1hbHMAAAAAAAAAAAgEAAAAFHF1YW50aXR5b2ZwcmljZWFzc2V0CQAAaQAAAAIJAABoAAAAAgkAAGgAAAACCAUAAAADcG10AAAABmFtb3VudAUAAAAOQ2hlY2tQYWlyUHJpY2UJAABsAAAABgAAAAAAAAAACgAAAAAAAAAAAAUAAAALZGVjaW1hbHNnYXAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAlVQCQAAbAAAAAYAAAAAAAAAAAoAAAAAAAAAAAAFAAAAE2Ftb3VudEFzc2V0RGVjaW1hbHMAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAlVQBAAAABR1c2VyYmFsYW5jZXRvcmVjZWl2ZQkAAGkAAAACCQAAaAAAAAIFAAAAFHF1YW50aXR5b2ZwcmljZWFzc2V0AAAAAAAAAABjAAAAAAAAAABkBAAAABBTd2FwRmVldG9yZWNlaXZlCQAAaQAAAAIJAABoAAAAAgUAAAAUcXVhbnRpdHlvZnByaWNlYXNzZXQFAAAAB1N3YXBGZWUAAAAAAAAAAGQEAAAAGVN1bXVwb2ZBc3NldFRvVVNEVFN3YXBGZWUEAAAAByRtYXRjaDAJAAQaAAAAAgUAAAAEdGhpcwkAASwAAAACAgAAABlUb3RhbF9Td2FwX0ZlZV9Db2xsZWN0ZWRfCQACWAAAAAEFAAAAC1VTRFRBc3NldElEAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWEAAAAAAAAAAAAEAAAAHE5ld1N1bXVwb2ZBc3NldFRvVVNEVFN3YXBGZWUJAABkAAAAAgUAAAAZU3VtdXBvZkFzc2V0VG9VU0RUU3dhcEZlZQUAAAAQU3dhcEZlZXRvcmVjZWl2ZQQAAAARU3VtdXBBc3NldEJhbGFuY2UEAAAAByRtYXRjaDAJAAQaAAAAAgUAAAAEdGhpcwkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAALQmFsYW5jZV9vZl8JAAJYAAAAAQUAAAALVVNEVEFzc2V0SUQCAAAAAV8FAAAADEVudGVyQXNzZXRJRAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAFhBQAAAAckbWF0Y2gwBQAAAAFhAAAAAAAAAAAABAAAABZOZXdTdW11cG9mQXNzZXRCYWxhbmNlCQAAZAAAAAIFAAAAGkNoZWNrT2xkQmFsYW5jZVVTRFR0b0Fzc2V0CAUAAAADcG10AAAABmFtb3VudAQAAAAQU3VtdXBVU0RUQmFsYW5jZQQAAAAHJG1hdGNoMAkABBoAAAACBQAAAAR0aGlzCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAtCYWxhbmNlX29mXwUAAAAMRW50ZXJBc3NldElEAgAAAAFfCQACWAAAAAEFAAAAC1VTRFRBc3NldElEAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWEAAAAAAAAAAAAEAAAAFU5ld1N1bXVwb2ZVU0RUQmFsYW5jZQkAAGUAAAACBQAAABpDaGVja09sZEJhbGFuY2VBc3NldHRvVVNEVAUAAAAUcXVhbnRpdHlvZnByaWNlYXNzZXQEAAAAD1N1bXVwb2ZTd2FwVHhucwQAAAAHJG1hdGNoMAkABBoAAAACBQAAAAR0aGlzAgAAABNUb3RhbF9vZl9Td2Fwc19UeG5zAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWEAAAAAAAAAAAAEAAAAEk5ld1N1bXVwb2ZTd2FwVHhucwkAAGQAAAACBQAAAA9TdW11cG9mU3dhcFR4bnMAAAAAAAAAAAEDCQEAAAACIT0AAAACBQAAABljaGVja3BhaXJpc2F2YWlsYWJsZW9ybm90BQAAAAxFbnRlckFzc2V0SUQJAAACAAAAAQIAAAArUGFpciBpcyBub3QgYXZhaWxhYmxlIGluIFdoaXRlbGlzdGVkIEFzc2V0LgMJAAAAAAAAAgUAAAAMVm90aW5nU3RhdHVzBQAAABNDdXJyZW50Vm90aW5nU3RhdHVzCQAAAgAAAAEJAAEsAAAAAgUAAAAMRW50ZXJBc3NldElEAgAAACAgaXMgbm90IEEgV2hpdGVsaXN0ZWQgVG9rZW4gWWV0LgMJAAAAAAAAAggFAAAAA3BtdAAAAAdhc3NldElkBQAAAAtVU0RUQXNzZXRJRAkAAAIAAAABAgAAAFNZb3UgY2FuJ3QgQXR0YWNoIFVTRFQgYXMgYW4gQXR0YWNoZWQgUGF5bWVudC4gT25seSBXaGl0ZWxpc3RlZCBUb2tlbnMgYXJlIGFjY2VwdGVkLgMJAQAAAAIhPQAAAAIIBQAAAANwbXQAAAAHYXNzZXRJZAkAAlkAAAABBQAAAAxFbnRlckFzc2V0SUQJAAACAAAAAQkAASwAAAACAgAAADBJbmNvcnJlY3QgYXNzZXQgYXR0YWNoZWQsIHBsZWFzZSBhdHRhY2ggb3Igc2VuZCAFAAAADEVudGVyQXNzZXRJRAMJAABmAAAAAgAAAAAAAAAnEAUAAAAUcXVhbnRpdHlvZnByaWNlYXNzZXQJAAACAAAAAQkAASwAAAACCQABLAAAAAICAAAANFlvdXIgQXR0YWNoZWQgQXNzZXQgQW1vdW50IGlzIHZlcnkgbG93LiBBdHRhY2ggTW9yZSAFAAAADEVudGVyQXNzZXRJRAIAAAA2IFRva2VucyB0byBDbGFpbSB0aGUgbWluaW11bSBBbW91bnQgb2YgMSBjZW50IGF0bGVhc3QuAwkAAAAAAAACBQAAABpDaGVja09sZEJhbGFuY2VBc3NldHRvVVNEVAAAAAAAAAAAAAkAAAIAAAABAgAAAGVTd2FwIFBhaXIgTmVlZCB0byBBZGQgTGlxdWlkaXR5IGZpcnN0IGludG8gUG9vbC4gT25seSBBZnRlciB0aGF0IFBhaXIgd2lsbCBiZSBhY3RpdmF0ZWQgZm9yIFN3YXBwaW5nLgMJAAAAAAAAAgUAAAAaQ2hlY2tPbGRCYWxhbmNlVVNEVHRvQXNzZXQAAAAAAAAAAAAJAAACAAAAAQIAAABlU3dhcCBQYWlyIE5lZWQgdG8gQWRkIExpcXVpZGl0eSBmaXJzdCBpbnRvIFBvb2wuIE9ubHkgQWZ0ZXIgdGhhdCBQYWlyIHdpbGwgYmUgYWN0aXZhdGVkIGZvciBTd2FwcGluZy4JAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgIAAAAJUHJpY2VfT2ZfBQAAAAxFbnRlckFzc2V0SUQFAAAADkNoZWNrUGFpclByaWNlCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAICAAAAGVRvdGFsX1N3YXBfRmVlX0NvbGxlY3RlZF8JAAJYAAAAAQUAAAALVVNEVEFzc2V0SUQFAAAAHE5ld1N1bXVwb2ZBc3NldFRvVVNEVFN3YXBGZWUJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAICAAAAE1RvdGFsX29mX1N3YXBzX1R4bnMFAAAAEk5ld1N1bXVwb2ZTd2FwVHhucwkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAALQmFsYW5jZV9vZl8JAAJYAAAAAQUAAAALVVNEVEFzc2V0SUQCAAAAAV8FAAAADEVudGVyQXNzZXRJRAUAAAAWTmV3U3VtdXBvZkFzc2V0QmFsYW5jZQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAALQmFsYW5jZV9vZl8FAAAADEVudGVyQXNzZXRJRAIAAAABXwkAAlgAAAABBQAAAAtVU0RUQXNzZXRJRAUAAAAVTmV3U3VtdXBvZlVTRFRCYWxhbmNlCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgUAAAAUdXNlcmJhbGFuY2V0b3JlY2VpdmUFAAAAC1VTRFRBc3NldElECQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMFAAAADlN3YXBGZWVBZGRyZXNzBQAAABBTd2FwRmVldG9yZWNlaXZlBQAAAAtVU0RUQXNzZXRJRAUAAAADbmlsAAAAAWkBAAAAGFN3YXBVU0RUVG9Bc3NldFBhaXJFbnRyeQAAAAEAAAAMRW50ZXJBc3NldElEBAAAAA1jYWxsZXJhZGRyZXNzCQACWAAAAAEICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMEAAAAA3BtdAMJAAAAAAAAAgkAAZAAAAABCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAQkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAkAAAIAAAABAgAAADZPbmx5IFVTRFQgVG9rZW4gaXMgcmVxdWlyZWQgYXMgYW4gQXR0YWNoZWQgcGF5bWVudFsxXS4EAAAAC1VTRFRBc3NldElEAQAAACDtbp7OYZSc/c7mGpIdLd7i5i2Qwk2YHwe8BMMPlpx8cQQAAAAZY2hlY2twYWlyaXNhdmFpbGFibGVvcm5vdAkABB0AAAACBQAAAAR0aGlzCQABLAAAAAICAAAAElBhaXJfVW5kZXJfVm90aW5nXwUAAAAMRW50ZXJBc3NldElEBAAAAAxWb3RpbmdTdGF0dXMJAQAAABFAZXh0ck5hdGl2ZSgxMDUzKQAAAAIFAAAABHRoaXMJAAEsAAAAAgIAAAAOVm90aW5nX1N0YXR1c18FAAAADEVudGVyQXNzZXRJRAQAAAAVQ2hlY2tSZXZlcnNlUGFpclByaWNlCQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAR0aGlzCQABLAAAAAICAAAAEFJldmVyc2VQcmljZV9PZl8FAAAADEVudGVyQXNzZXRJRAQAAAASQ2hlY2tBc3NldERlY2ltYWxzCQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAR0aGlzCQABLAAAAAICAAAADERlY2ltYWxzX29mXwUAAAAMRW50ZXJBc3NldElEBAAAABNDdXJyZW50Vm90aW5nU3RhdHVzAgAAAARGYWlsBAAAAA5SZXZlcnNlU3dhcEZlZQAAAAAAAAAAAQQAAAATYW1vdW50QXNzZXREZWNpbWFscwUAAAASQ2hlY2tBc3NldERlY2ltYWxzBAAAABJwcmljZUFzc2V0RGVjaW1hbHMAAAAAAAAAAAYEAAAAC2RlY2ltYWxzZ2FwCQAAZQAAAAIJAABlAAAAAgAAAAAAAAAABgUAAAATYW1vdW50QXNzZXREZWNpbWFscwAAAAAAAAAACAQAAAAUcXVhbnRpdHlvZnByaWNlYXNzZXQJAABoAAAAAgkAAGkAAAACCQAAaQAAAAIJAABoAAAAAggFAAAAA3BtdAAAAAZhbW91bnQFAAAAFUNoZWNrUmV2ZXJzZVBhaXJQcmljZQkAAGwAAAAGAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAABQAAAAJVUAkAAGwAAAAGAAAAAAAAAAAKAAAAAAAAAAAABQAAAAtkZWNpbWFsc2dhcAAAAAAAAAAAAAAAAAAAAAAAAAUAAAACVVAJAABsAAAABgAAAAAAAAAACgAAAAAAAAAAAAUAAAATYW1vdW50QXNzZXREZWNpbWFscwAAAAAAAAAAAAAAAAAAAAAAAAUAAAACVVAEAAAAD2dldEFzc2V0QmFsYW5jZQkAA/AAAAACBQAAAAR0aGlzCQACWQAAAAEFAAAADEVudGVyQXNzZXRJRAQAAAAPbmV3QXNzZXRCYWxhbmNlCQAAZQAAAAIFAAAAD2dldEFzc2V0QmFsYW5jZQUAAAAUcXVhbnRpdHlvZnByaWNlYXNzZXQDCQEAAAACIT0AAAACBQAAABljaGVja3BhaXJpc2F2YWlsYWJsZW9ybm90BQAAAAxFbnRlckFzc2V0SUQJAAACAAAAAQIAAAArUGFpciBpcyBub3QgYXZhaWxhYmxlIGluIFdoaXRlbGlzdGVkIEFzc2V0LgMJAAAAAAAAAgUAAAAMVm90aW5nU3RhdHVzBQAAABNDdXJyZW50Vm90aW5nU3RhdHVzCQAAAgAAAAEJAAEsAAAAAgUAAAAMRW50ZXJBc3NldElEAgAAACAgaXMgbm90IEEgV2hpdGVsaXN0ZWQgVG9rZW4gWWV0LgMJAAAAAAAAAgUAAAAMRW50ZXJBc3NldElECQACWAAAAAEFAAAAC1VTRFRBc3NldElECQAAAgAAAAECAAAAe0lucHV0IGNhbiBOZXZlciBiZSBhIFVTRFQgQXNzZXRJRC4gRW50ZXIgV2hpdGVsaXN0ZWQgQXNzZXRJRCBpbiBpbnB1dCBhbmQgQXR0YWNoIFVTRFQgYXMgYW4gYXR0YWNobWVudCBUb2tlbiBpbiBwYXltZW50WzFdLgMJAQAAAAIhPQAAAAIIBQAAAANwbXQAAAAHYXNzZXRJZAUAAAALVVNEVEFzc2V0SUQJAAACAAAAAQIAAAB+WW91IGNhbiBBdHRhY2ggVVNEVCBhcyBhbiBBdHRhY2hlZCBQYXltZW50WzFdIHRvIFN3YXAgVVNEVCBUbyBSZXF1aXJlZCBUb2tlbi4gQW55IG90aGVyIGFzc2V0IGVsc2UgdGhhbiBVU0RUIHdpbGwgYmUgcmVqZWN0ZWQuAwkAAGYAAAACAAAAAAAAD0JACAUAAAADcG10AAAABmFtb3VudAkAAAIAAAABAgAAAFlZb3VyIEF0dGFjaGVkIFVTRFQgQW1vdW50IGlzIHZlcnkgbG93LiBBdHRhY2ggQXRsZWFzdCAxIFVTRFQgdG8gQ2xhaW0gdGhlIG1pbmltdW0gVG9rZW5zLgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACAgAAABBSZXZlcnNlUHJpY2VfT2ZfBQAAAAxFbnRlckFzc2V0SUQFAAAAFUNoZWNrUmV2ZXJzZVBhaXJQcmljZQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACAgAAABlUb3RhbF9Td2FwX0ZlZV9Db2xsZWN0ZWRfBQAAAAxFbnRlckFzc2V0SUQAAAAAAAAAAAAJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyCQAAaQAAAAIJAABoAAAAAgUAAAAUcXVhbnRpdHlvZnByaWNlYXNzZXQAAAAAAAAAAGMAAAAAAAAAAGQJAAJZAAAAAQUAAAAMRW50ZXJBc3NldElECQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgkAAGkAAAACCQAAaAAAAAIFAAAAFHF1YW50aXR5b2ZwcmljZWFzc2V0BQAAAA5SZXZlcnNlU3dhcEZlZQAAAAAAAAAAZAkAAlkAAAABBQAAAAxFbnRlckFzc2V0SUQFAAAAA25pbAAAAAFpAQAAAAxBZGRMaXF1aWRpdHkAAAABAAAADEVudGVyQXNzZXRJRAQAAAANY2FsbGVyYWRkcmVzcwkAAlgAAAABCAgFAAAAAWkAAAAGY2FsbGVyAAAABWJ5dGVzBAAAAARwbXQxCQEAAAAFdmFsdWUAAAABCQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAABAAAAARwbXQyCQEAAAAFdmFsdWUAAAABCQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAABBAAAAAtVU0RUQXNzZXRJRAEAAAAg7W6ezmGUnP3O5hqSHS3e4uYtkMJNmB8HvATDD5acfHEEAAAAGWNoZWNrcGFpcmlzYXZhaWxhYmxlb3Jub3QJAAQdAAAAAgUAAAAEdGhpcwkAASwAAAACAgAAABJQYWlyX1VuZGVyX1ZvdGluZ18FAAAADEVudGVyQXNzZXRJRAQAAAAMVm90aW5nU3RhdHVzCQEAAAARQGV4dHJOYXRpdmUoMTA1MykAAAACBQAAAAR0aGlzCQABLAAAAAICAAAADlZvdGluZ19TdGF0dXNfBQAAAAxFbnRlckFzc2V0SUQEAAAADkNoZWNrUGFpclByaWNlCQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAR0aGlzCQABLAAAAAICAAAACVByaWNlX09mXwUAAAAMRW50ZXJBc3NldElEBAAAABVDaGVja1JldmVyc2VQYWlyUHJpY2UJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAABHRoaXMJAAEsAAAAAgIAAAAQUmV2ZXJzZVByaWNlX09mXwUAAAAMRW50ZXJBc3NldElEBAAAABJDaGVja0Fzc2V0RGVjaW1hbHMJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAABHRoaXMJAAEsAAAAAgIAAAAMRGVjaW1hbHNfb2ZfBQAAAAxFbnRlckFzc2V0SUQEAAAAE0N1cnJlbnRWb3RpbmdTdGF0dXMCAAAABEZhaWwEAAAAD0FkZExpcXVpZGl0eUZlZQAAAAAAAAGGoAQAAAATYW1vdW50QXNzZXREZWNpbWFscwUAAAASQ2hlY2tBc3NldERlY2ltYWxzBAAAAAtkZWNpbWFsc2dhcAkAAGUAAAACCQAAZQAAAAIAAAAAAAAAAAYFAAAAE2Ftb3VudEFzc2V0RGVjaW1hbHMAAAAAAAAAAAgEAAAAFnF1YW50aXR5b2ZFbnRlckFzc2V0SUQJAABoAAAAAgkAAGkAAAACCQAAaQAAAAIJAABoAAAAAggFAAAABHBtdDEAAAAGYW1vdW50BQAAABVDaGVja1JldmVyc2VQYWlyUHJpY2UJAABsAAAABgAAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAUAAAACVVAJAABsAAAABgAAAAAAAAAACgAAAAAAAAAAAAUAAAALZGVjaW1hbHNnYXAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAlVQCQAAbAAAAAYAAAAAAAAAAAoAAAAAAAAAAAAFAAAAE2Ftb3VudEFzc2V0RGVjaW1hbHMAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAlVQBAAAABxjaGVja3BvaW50VG9WZXJpZnlCb3RoUHJpY2VzCQAAawAAAAMAAAAAAAAAAAEAAAAA6NSlEAAFAAAADkNoZWNrUGFpclByaWNlBAAAABFVU0RUSG9sZGluZ0luUGFpcgQAAAAHJG1hdGNoMAkABBoAAAACBQAAAAR0aGlzCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAtCYWxhbmNlX29mXwUAAAAMRW50ZXJBc3NldElEAgAAAAFfCQACWAAAAAEFAAAAC1VTRFRBc3NldElEAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWEAAAAAAAAAAAAEAAAAFE5ld1VTRFRIb2xkaW5nSW5QYWlyCQAAZAAAAAIFAAAAEVVTRFRIb2xkaW5nSW5QYWlyCAUAAAAEcG10MQAAAAZhbW91bnQEAAAAEkFzc2V0SG9sZGluZ0luUGFpcgQAAAAHJG1hdGNoMAkABBoAAAACBQAAAAR0aGlzCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAtCYWxhbmNlX29mXwkAAlgAAAABBQAAAAtVU0RUQXNzZXRJRAIAAAABXwUAAAAMRW50ZXJBc3NldElEAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWEAAAAAAAAAAAAEAAAAFU5ld0Fzc2V0SG9sZGluZ0luUGFpcgkAAGQAAAACBQAAABJBc3NldEhvbGRpbmdJblBhaXIIBQAAAARwbXQyAAAABmFtb3VudAMJAQAAAAIhPQAAAAIFAAAAGWNoZWNrcGFpcmlzYXZhaWxhYmxlb3Jub3QFAAAADEVudGVyQXNzZXRJRAkAAAIAAAABAgAAACtQYWlyIGlzIG5vdCBhdmFpbGFibGUgaW4gV2hpdGVsaXN0ZWQgQXNzZXQuAwkAAAAAAAACBQAAAAxWb3RpbmdTdGF0dXMFAAAAE0N1cnJlbnRWb3RpbmdTdGF0dXMJAAACAAAAAQkAASwAAAACBQAAAAxFbnRlckFzc2V0SUQCAAAAICBpcyBub3QgQSBXaGl0ZWxpc3RlZCBUb2tlbiBZZXQuAwkAAAAAAAACBQAAAAxFbnRlckFzc2V0SUQJAAJYAAAAAQUAAAALVVNEVEFzc2V0SUQJAAACAAAAAQIAAACUSW5wdXQgY2FuIE5ldmVyIGJlIGEgVVNEVCBBc3NldElELiBFbnRlciBXaGl0ZWxpc3RlZCBBc3NldElEIGluIGlucHV0IGFzIHdlbGwgYXMgaW4gcGF5bWVudFsxXSBhbmQgQXR0YWNoIFVTRFQgYXMgYW4gYXR0YWNobWVudCBUb2tlbiBpbiBwYXltZW50WzJdLgMJAQAAAAIhPQAAAAIJAAGQAAAAAQgFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAIJAAACAAAAAQIAAACLVHdvIGF0dGFjaGVkIGFzc2V0cyBleHBlY3RlZCBhcyBwYXltZW50IGluIDUwJS01MCUuIEtpbmRseSBBdHRhY2ggcGF5bWVudDEgPSBVU0RUIFRva2VuIGFuZCBwYXltZW50MiA9IFRva2VuIHlvdSB3YW50IHRvIGFkZCBmb3IgTGlxdWlkaXR5LgMJAQAAAAIhPQAAAAIIBQAAAARwbXQxAAAAB2Fzc2V0SWQFAAAAC1VTRFRBc3NldElECQAAAgAAAAECAAAAVEluY29ycmVjdCBhc3NldCBhdHRhY2hlZCBmb3IgTGlxdWlkaXR5IGluIHBheW1lbnRbMV0sIHBsZWFzZSBhdHRhY2ggVVNEVCBUb2tlbiBvbmx5LgMJAABmAAAAAgAAAAAAAJiWgAgFAAAABHBtdDEAAAAGYW1vdW50CQAAAgAAAAECAAAALHBsZWFzZSBhdHRhY2ggYXRsZWFzdCAxMCBVU0RUIGluIHBheW1lbnRbMV0uAwkAAAAAAAACCAUAAAAEcG10MgAAAAdhc3NldElkBQAAAAtVU0RUQXNzZXRJRAkAAAIAAAABAgAAAI9Zb3UgQXR0YWNoZWQgVVNEVCBhc3NldCBmb3IgTGlxdWlkaXR5IGluIGJvdGggcGF5bWVudHMsIEtpbmRseSBBdHRhY2ggcGF5bWVudDEgPSBVU0RUIFRva2VuIGFuZCBwYXltZW50MiA9IFRva2VuIHlvdSB3YW50IHRvIGFkZCBmb3IgTGlxdWlkaXR5LgMJAQAAAAIhPQAAAAIIBQAAAARwbXQyAAAAB2Fzc2V0SWQJAAJZAAAAAQUAAAAMRW50ZXJBc3NldElECQAAAgAAAAEJAAEsAAAAAgkAASwAAAACAgAAAA1Bc3NldCBTdHJpbmcgBQAAAAxFbnRlckFzc2V0SUQCAAAATiBpcyBub3QgbWF0Y2hpbmcgd2l0aCBhdHRhY2hlZCBwYXltZW50WzJdLiBTdHJpbmcgYW5kIHBheW1lbnRbMl0gbXVzdCBiZSBzYW1lLgMJAQAAAAIhPQAAAAIIBQAAAARwbXQyAAAABmFtb3VudAUAAAAWcXVhbnRpdHlvZkVudGVyQXNzZXRJRAkAAAIAAAABCQABLAAAAAICAAAAWEF0dGFjaGVkIHBheW1lbnRbMl0gcXVhbnRpdHkgaXMgbm90IG1hdGNoaW5nIGFzIHBlciBhdHRhY2hlZCBwYXltZW50WzFdIFVTRFQuSXQgbXVzdCBiZSAJAAGkAAAAAQUAAAAWcXVhbnRpdHlvZkVudGVyQXNzZXRJRAMJAQAAAAIhPQAAAAIFAAAAFUNoZWNrUmV2ZXJzZVBhaXJQcmljZQUAAAAcY2hlY2twb2ludFRvVmVyaWZ5Qm90aFByaWNlcwkAAAIAAAABAgAAAD9QcmljZSBhbmQgUmV2ZXJzZSBQcmljZSBhcmUgTWlzbWF0Y2hlZCBvciBtYW5pcHVsYXRlZCBtYW51YWxseS4JAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgIAAAAJUHJpY2VfT2ZfBQAAAAxFbnRlckFzc2V0SUQFAAAADkNoZWNrUGFpclByaWNlCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAICAAAAEFJldmVyc2VQcmljZV9PZl8FAAAADEVudGVyQXNzZXRJRAUAAAAVQ2hlY2tSZXZlcnNlUGFpclByaWNlCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAtCYWxhbmNlX29mXwUAAAAMRW50ZXJBc3NldElEAgAAAAFfCQACWAAAAAEFAAAAC1VTRFRBc3NldElEBQAAABROZXdVU0RUSG9sZGluZ0luUGFpcgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAALQmFsYW5jZV9vZl8JAAJYAAAAAQUAAAALVVNEVEFzc2V0SUQCAAAAAV8FAAAADEVudGVyQXNzZXRJRAUAAAAVTmV3QXNzZXRIb2xkaW5nSW5QYWlyBQAAAANuaWwAAAABaQEAAAAPUmVtb3ZlUGFpckVudHJ5AAAAAQAAAAxFbnRlckFzc2V0SUQEAAAAC2FkbWlucmlnaHRzCQEAAAARQGV4dHJOYXRpdmUoMTA1MykAAAACBQAAAAR0aGlzAgAAABVQb2xhcml0eV9BZG1pbl9SaWdodHMEAAAAC1VTRFRBc3NldElEAQAAACDtbp7OYZSc/c7mGpIdLd7i5i2Qwk2YHwe8BMMPlpx8cQQAAAAYY2hlY2twcm9qZWN0ZXhwaXJlaGVpZ2h0CQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAR0aGlzCQABLAAAAAICAAAAElZvdGluZ19FbmRfSGVpZ2h0XwUAAAAMRW50ZXJBc3NldElEBAAAABljaGVja3BhaXJpc2F2YWlsYWJsZW9ybm90CQAEHQAAAAIFAAAABHRoaXMJAAEsAAAAAgIAAAASUGFpcl9VbmRlcl9Wb3RpbmdfBQAAAAxFbnRlckFzc2V0SUQEAAAADFZvdGluZ1N0YXR1cwkBAAAAEUBleHRyTmF0aXZlKDEwNTMpAAAAAgUAAAAEdGhpcwkAASwAAAACAgAAAA5Wb3RpbmdfU3RhdHVzXwUAAAAMRW50ZXJBc3NldElEBAAAAA9OZXdWb3RpbmdTdGF0dXMCAAAABFBhc3MEAAAADWNhbGxlcmFkZHJlc3MJAAJYAAAAAQgIBQAAAAFpAAAABmNhbGxlcgAAAAVieXRlcwQAAAANY3VycmVudGhlaWdodAUAAAAGaGVpZ2h0BAAAAB1wZW5kaW5nYmxvY2tzZm9ycHJvamVjdGV4cGlyZQkAAGUAAAACBQAAABhjaGVja3Byb2plY3RleHBpcmVoZWlnaHQFAAAABmhlaWdodAMJAQAAAAIhPQAAAAIFAAAAGWNoZWNrcGFpcmlzYXZhaWxhYmxlb3Jub3QFAAAADEVudGVyQXNzZXRJRAkAAAIAAAABAgAAACVQYWlyIGlzIG5vdCBhdmFpbGFibGUgaW4gVm90aW5nIExpc3QuAwkBAAAAAiE9AAAAAgUAAAALYWRtaW5yaWdodHMFAAAADWNhbGxlcmFkZHJlc3MJAAACAAAAAQkAASwAAAACCQABLAAAAAICAAAAIkkga25vdyBZb3UgYXJlIG5vdCBBbiBBZG1pbi4gT25seSAFAAAAC2FkbWlucmlnaHRzAgAAAB8gaGFzIHJpZ2h0cyB0byByZW1vdmUgdGhlIHBhaXIuAwkAAGYAAAACBQAAABhjaGVja3Byb2plY3RleHBpcmVoZWlnaHQFAAAABmhlaWdodAkAAAIAAAABCQABLAAAAAIJAAEsAAAAAgIAAAA2Vm90aW5nIEFscmVhZHkgUnVubmluZy4gWW91IGNhbiByZW1vdmUgdGhlIHBhaXIgYWZ0ZXIgCQABpAAAAAEFAAAAHXBlbmRpbmdibG9ja3Nmb3Jwcm9qZWN0ZXhwaXJlAgAAAAcgQmxvY2tzAwkAAAAAAAACBQAAAAxWb3RpbmdTdGF0dXMFAAAAD05ld1ZvdGluZ1N0YXR1cwkAAAIAAAABCQABLAAAAAIFAAAADEVudGVyQXNzZXRJRAIAAAAsIGlzIG5vdyBXaGl0ZWxpc3RlZC4gU28geW91IGNhbid0IHJlbW92ZSBpdC4JAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQkAASwAAAACAgAAABJQYWlyX1VuZGVyX1ZvdGluZ18FAAAADEVudGVyQXNzZXRJRAkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABCQABLAAAAAICAAAAFFZvdGluZ19TdGFydF9IZWlnaHRfBQAAAAxFbnRlckFzc2V0SUQJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQkAASwAAAACAgAAABJWb3RpbmdfRW5kX0hlaWdodF8FAAAADEVudGVyQXNzZXRJRAkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABCQABLAAAAAICAAAADlZvdGluZ19QZXJpb2RfBQAAAAxFbnRlckFzc2V0SUQJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQkAASwAAAACAgAAAA9Wb3Rlc19SZXF1aXJlZF8FAAAADEVudGVyQXNzZXRJRAkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABCQABLAAAAAICAAAAE1ZvdGluZ19MaXN0aW5nX0ZlZV8FAAAADEVudGVyQXNzZXRJRAkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABCQABLAAAAAICAAAADlZvdGluZ19TdGF0dXNfBQAAAAxFbnRlckFzc2V0SUQJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQkAASwAAAACAgAAAA9Wb3Rlc19SZWNlaXZlZF8FAAAADEVudGVyQXNzZXRJRAkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABCQABLAAAAAICAAAACVByaWNlX09mXwUAAAAMRW50ZXJBc3NldElECQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEJAAEsAAAAAgIAAAAQUmV2ZXJzZVByaWNlX09mXwUAAAAMRW50ZXJBc3NldElEBQAAAANuaWwAAAABaQEAAAALUmVtb3ZlRW50cnkAAAAEAAAAA0tleQAAAARLZXkxAAAABEtleTIAAAAES2V5MwkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABBQAAAANLZXkJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQUAAAAES2V5MQkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABBQAAAARLZXkyCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEFAAAABEtleTMFAAAAA25pbAAAAAEAAAACdHgBAAAABnZlcmlmeQAAAAAEAAAAByRtYXRjaDAFAAAAAnR4CQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAAgFAAAAAnR4AAAAD3NlbmRlclB1YmxpY0tleTx6D08=", "height": 1674110, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: FGfSfu7EhBhiNhWATcz4hC5PKh5e54vRjuEsDKVKykfD Next: 554LmvSNoBAmk7y3qbMsxKDMVT7rMTeb2BGpQY85kk8X Diff:
OldNewDifferences
137137 else if ((VotingStatus == NewVotingStatus))
138138 then throw((("Voting for " + EnterAssetID) + " pair is completed and it’s available in whitelist."))
139139 else if (checkwhitelist)
140- then [StringEntry(("Voting_Status_" + EnterAssetID), NewVotingStatus), IntegerEntry(("Decimals_of_" + EnterAssetID), decimals), IntegerEntry(((("Balance_of_" + EnterAssetID) + "_") + toBase58String(USDTAssetID)), 0), IntegerEntry(((("Balance_of_" + toBase58String(USDTAssetID)) + "_") + EnterAssetID), 0), IntegerEntry(((("Total_of_pair_Txns_" + EnterAssetID) + "_") + toBase58String(USDTAssetID)), 0), IntegerEntry("Total_of_Swaps_Txns", 0), IntegerEntry(("Total_Swap_Fee_Collected_" + toBase58String(USDTAssetID)), 0), IntegerEntry(("Total_Swap_Fee_Collected_" + EnterAssetID), 0)]
140+ then [StringEntry(("Voting_Status_" + EnterAssetID), NewVotingStatus), IntegerEntry(("Decimals_of_" + EnterAssetID), decimals), IntegerEntry(((("Balance_of_" + EnterAssetID) + "_") + toBase58String(USDTAssetID)), 0), IntegerEntry(((("Balance_of_" + toBase58String(USDTAssetID)) + "_") + EnterAssetID), 0), IntegerEntry(("Total_of_pair_Txns_" + EnterAssetID), 0), IntegerEntry("Total_of_Swaps_Txns", 0), IntegerEntry(("Total_Swap_Fee_Collected_" + toBase58String(USDTAssetID)), 0), IntegerEntry(("Total_Swap_Fee_Collected_" + EnterAssetID), 0)]
141141 else [IntegerEntry(("Votes_Received_" + EnterAssetID), newvotescount), IntegerEntry(((("Votes_Received_" + calleraddress) + "_") + EnterAssetID), individualvotescount)]
142142 }
143143
351351
352352
353353 @Callable(i)
354-func RemoveEntry (Key) = [DeleteEntry(Key)]
354+func RemoveEntry (Key,Key1,Key2,Key3) = [DeleteEntry(Key), DeleteEntry(Key1), DeleteEntry(Key2), DeleteEntry(Key3)]
355355
356356
357357 @Verifier(tx)
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 4 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44
55
66 @Callable(i)
77 func RegisterPairForVoting (AssetID1,days,ListingPrice) = {
88 let pmt1 = value(i.payments[0])
99 let pmt2 = value(i.payments[1])
1010 let FeeAddress = base58'GKmJ6BchUgQfwKp4mp5eX8Y9xLioYRm6e1gDfFgdAcCr'
1111 let maximumvotingdays = 90
1212 let BalletAssetID = base58'44Mq8KqUhM94t93MiBq3S22iiuGczMxpKmse5dBy2w5y'
1313 let USDTAssetID = base58'GyqTYDea3DWBaAyQs5S5uH2223ucELYFazJpZLCfMznU'
1414 let currentKey = toBase58String(i.caller.bytes)
1515 let TN = !(isDefined(pmt2.assetId))
1616 let oneday = 1440
1717 let NoOfDaysBlocks = (oneday * days)
1818 let gap = (NoOfDaysBlocks - 43199)
1919 let votesrequired = ((100000 + ((11574 * gap) / 10000)) * 100000000)
2020 let votingExpire = (height + NoOfDaysBlocks)
2121 let fetchpair = getString(this, ("Pair_Under_Voting_" + AssetID1))
2222 let votingstatus = "Fail"
2323 let assetinfopmt2 = fromBase58String(AssetID1)
2424 let reverseprice = fraction(1, 1000000000000, ListingPrice)
2525 if ((43 > size(AssetID1)))
2626 then throw("Wrong AssetID1 is Entered for Voting. Please Enter a Valid AssetID1. Probably you entered an ASSETID1 less than 43 Chars.")
2727 else if ((29 >= days))
2828 then throw("Enter no. of days in between 30 to 90.")
2929 else if ((days > maximumvotingdays))
3030 then throw("You Entered days greater than 90 please Enter no. of days in between 1 to 90.")
3131 else if ((fetchpair == AssetID1))
3232 then throw("Pair Already Exist in Voting List.")
3333 else if ((size(i.payments) != 2))
3434 then throw("Two attached assets expected as payment. Kindly Attach payment1 = Ballet Token and payment2 = Token you want to add to List for Voting.")
3535 else if ((pmt1.assetId != BalletAssetID))
3636 then throw("Incorrect asset attached for Voting in payment[1], please attach 1000 Ballet Token only.")
3737 else if ((10000000 > pmt1.amount))
3838 then throw((((("You attached only " + toString(fraction(pmt1.amount, 1, 100000000))) + ".") + toString(fraction(pmt1.amount, 1, 10000000))) + " Ballet for Voting in payment[1], please attach 1000 Ballet Token only."))
3939 else if ((pmt2.assetId != assetinfopmt2))
4040 then throw("Asset String Attached in ASSETID1 is not matching with Payment2 AssetID.")
4141 else if ((TN == true))
4242 then throw("You Attached TN Asset ID for Voting, please attach the Token You want to list in payment[2].")
4343 else if ((pmt2.assetId == BalletAssetID))
4444 then throw("You Attached Ballet asset for Voting in both payments, please attach the Token You want to list in payment[2].")
4545 else if ((9999 >= ListingPrice))
4646 then throw("Lower listing Price is Entered per token, please enter as a valid range in between range [0.01 - 1M] USDT.")
4747 else if ((ListingPrice > 999999999999))
4848 then throw("Higher listing Price is Entered per token, please enter as a valid range in between range [0.01 - 1M] USDT.")
4949 else [StringEntry(("Pair_Under_Voting_" + AssetID1), AssetID1), StringEntry(("Voting_Status_" + AssetID1), votingstatus), IntegerEntry(("Voting_Start_Height_" + AssetID1), height), IntegerEntry(("Voting_End_Height_" + AssetID1), votingExpire), IntegerEntry(("Voting_Period_" + AssetID1), NoOfDaysBlocks), IntegerEntry(("Voting_Listing_Fee_" + AssetID1), pmt1.amount), IntegerEntry(("Votes_Required_" + AssetID1), votesrequired), IntegerEntry(("Votes_Received_" + AssetID1), 0), IntegerEntry(("Price_Of_" + AssetID1), ListingPrice), IntegerEntry(("ReversePrice_Of_" + AssetID1), reverseprice), ScriptTransfer(addressFromPublicKey(FeeAddress), pmt1.amount, BalletAssetID)]
5050 }
5151
5252
5353
5454 @Callable(i)
5555 func IssueBallet () = {
5656 let pmt = value(i.payments[0])
5757 let currentKey = toBase58String(i.caller.bytes)
5858 let BalletAssetID = base58'44Mq8KqUhM94t93MiBq3S22iiuGczMxpKmse5dBy2w5y'
5959 let PricePerBallet = getIntegerValue(this, "BALLET/TN")
6060 let NewBalletToUser = fraction(100000, pmt.amount, PricePerBallet)
6161 let PreviousIssuedBallet = getIntegerValue(this, "Total_Issued_Ballet:")
6262 let TotalIssuedBallet = (PreviousIssuedBallet + NewBalletToUser)
6363 let PreviousBalletReserveValue = getIntegerValue(this, "Total_Ballet_Reserve_In_TN:")
6464 let BalletReserveValue = (PreviousBalletReserveValue + pmt.amount)
6565 let PreviousBalletBackupPrice = getIntegerValue(this, "Ballet_Backup_Value_In_TN:")
6666 let BalletBackupPrice = fraction(100000, BalletReserveValue, TotalIssuedBallet)
6767 let FeeAddress = base58'GKmJ6BchUgQfwKp4mp5eX8Y9xLioYRm6e1gDfFgdAcCr'
6868 let FeePercentage = 1
6969 let BalanceTokensReturnedToUser = (100 - FeePercentage)
7070 if (isDefined(pmt.assetId))
7171 then throw("Incorrect asset attached, please attach TN.")
7272 else if ((5000000 > pmt.amount))
7373 then throw("Please Attach minimum 0.05 TN To Issue Ballet Asset.")
7474 else [IntegerEntry("Total_Issued_Ballet:", TotalIssuedBallet), IntegerEntry("Total_Ballet_Reserve_In_TN:", BalletReserveValue), IntegerEntry("Ballet_Backup_Value_In_TN:", BalletBackupPrice), StringEntry("message", "<h1>Ballet Issued Successfully!</h1><br>"), Reissue(BalletAssetID, NewBalletToUser, true), ScriptTransfer(i.caller, ((NewBalletToUser * BalanceTokensReturnedToUser) / 100), BalletAssetID), ScriptTransfer(addressFromPublicKey(FeeAddress), ((NewBalletToUser * FeePercentage) / 100), BalletAssetID)]
7575 }
7676
7777
7878
7979 @Callable(i)
8080 func Liquidate () = {
8181 let currentKey = toBase58String(i.callerPublicKey)
8282 let pmt = value(i.payments[0])
8383 let BalletAssetID = base58'44Mq8KqUhM94t93MiBq3S22iiuGczMxpKmse5dBy2w5y'
8484 let PreviousIssuedBallet = getIntegerValue(this, "Total_Issued_Ballet:")
8585 let TotalIssuedBallet = (PreviousIssuedBallet - pmt.amount)
8686 let PreviousBalletReserveValue = getIntegerValue(this, "Total_Ballet_Reserve_In_TN:")
8787 let PreviousBalletBackupPrice = getIntegerValue(this, "Ballet_Backup_Value_In_TN:")
8888 let calculateburnvalue = fraction(PreviousBalletBackupPrice, pmt.amount, 100000)
8989 let BalletReserveValue = (PreviousBalletReserveValue - calculateburnvalue)
9090 let BalletBackupPrice = fraction(100000, BalletReserveValue, TotalIssuedBallet)
9191 if ((pmt.assetId != BalletAssetID))
9292 then throw("Kindly Deposit Only 44Mq8KqUhM94t93MiBq3S22iiuGczMxpKmse5dBy2w5y (Ballet).")
9393 else if ((100000 > pmt.amount))
9494 then throw("Attach Amount must be greater than 0.001 Ballet.")
9595 else [Burn(BalletAssetID, pmt.amount), IntegerEntry("Total_Issued_Ballet:", TotalIssuedBallet), IntegerEntry("Total_Ballet_Reserve_In_TN:", BalletReserveValue), IntegerEntry("Ballet_Backup_Value_In_TN:", BalletBackupPrice), StringEntry("message", "<h1>Ballet Liquidated Successfully!</h1><br>"), ScriptTransfer(i.caller, calculateburnvalue, unit)]
9696 }
9797
9898
9999
100100 @Callable(i)
101101 func DoVoting (EnterAssetID) = {
102102 let pmt = if ((size(i.payments) == 1))
103103 then i.payments[0]
104104 else throw("Ballet Token is required as Attached payment")
105105 let calleraddress = toBase58String(i.caller.bytes)
106106 let BalletAssetID = base58'44Mq8KqUhM94t93MiBq3S22iiuGczMxpKmse5dBy2w5y'
107107 let NewVotingStatus = "Pass"
108108 let USDTAssetID = base58'GyqTYDea3DWBaAyQs5S5uH2223ucELYFazJpZLCfMznU'
109109 let checkprojectexpireheight = getIntegerValue(this, ("Voting_End_Height_" + EnterAssetID))
110110 let checkpairisavailableornot = getString(this, ("Pair_Under_Voting_" + EnterAssetID))
111111 let checkvotesrequired = getIntegerValue(this, ("Votes_Required_" + EnterAssetID))
112112 let checkvotesreceived = getIntegerValue(this, ("Votes_Received_" + EnterAssetID))
113113 let VotingStatus = getStringValue(this, ("Voting_Status_" + EnterAssetID))
114114 let currentvotes = match getInteger(this, ("Votes_Received_" + EnterAssetID)) {
115115 case a: Int =>
116116 a
117117 case _ =>
118118 0
119119 }
120120 let newvotescount = (currentvotes + pmt.amount)
121121 let individualvotes = match getInteger(this, ((("Votes_Received_" + calleraddress) + "_") + EnterAssetID)) {
122122 case b: Int =>
123123 b
124124 case _ =>
125125 0
126126 }
127127 let individualvotescount = (individualvotes + pmt.amount)
128128 let checkwhitelist = (checkvotesreceived >= checkvotesrequired)
129129 let info = valueOrErrorMessage(assetInfo(fromBase58String(EnterAssetID)), (("Asset " + EnterAssetID) + " doesn't exist"))
130130 let decimals = info.decimals
131131 if ((checkpairisavailableornot != EnterAssetID))
132132 then throw("Pair is not available in Voting List.")
133133 else if ((height > checkprojectexpireheight))
134134 then throw((("Voting timeline for " + EnterAssetID) + " is expired."))
135135 else if ((pmt.assetId != BalletAssetID))
136136 then throw("Kindly Attach Only 44Mq8KqUhM94t93MiBq3S22iiuGczMxpKmse5dBy2w5y (Ballet).")
137137 else if ((VotingStatus == NewVotingStatus))
138138 then throw((("Voting for " + EnterAssetID) + " pair is completed and it’s available in whitelist."))
139139 else if (checkwhitelist)
140- then [StringEntry(("Voting_Status_" + EnterAssetID), NewVotingStatus), IntegerEntry(("Decimals_of_" + EnterAssetID), decimals), IntegerEntry(((("Balance_of_" + EnterAssetID) + "_") + toBase58String(USDTAssetID)), 0), IntegerEntry(((("Balance_of_" + toBase58String(USDTAssetID)) + "_") + EnterAssetID), 0), IntegerEntry(((("Total_of_pair_Txns_" + EnterAssetID) + "_") + toBase58String(USDTAssetID)), 0), IntegerEntry("Total_of_Swaps_Txns", 0), IntegerEntry(("Total_Swap_Fee_Collected_" + toBase58String(USDTAssetID)), 0), IntegerEntry(("Total_Swap_Fee_Collected_" + EnterAssetID), 0)]
140+ then [StringEntry(("Voting_Status_" + EnterAssetID), NewVotingStatus), IntegerEntry(("Decimals_of_" + EnterAssetID), decimals), IntegerEntry(((("Balance_of_" + EnterAssetID) + "_") + toBase58String(USDTAssetID)), 0), IntegerEntry(((("Balance_of_" + toBase58String(USDTAssetID)) + "_") + EnterAssetID), 0), IntegerEntry(("Total_of_pair_Txns_" + EnterAssetID), 0), IntegerEntry("Total_of_Swaps_Txns", 0), IntegerEntry(("Total_Swap_Fee_Collected_" + toBase58String(USDTAssetID)), 0), IntegerEntry(("Total_Swap_Fee_Collected_" + EnterAssetID), 0)]
141141 else [IntegerEntry(("Votes_Received_" + EnterAssetID), newvotescount), IntegerEntry(((("Votes_Received_" + calleraddress) + "_") + EnterAssetID), individualvotescount)]
142142 }
143143
144144
145145
146146 @Callable(i)
147147 func WithdrawVotedTokens (EnterAssetID) = {
148148 let pmt = i.payments[0]
149149 let calleraddress = toBase58String(i.caller.bytes)
150150 let BalletAssetID = base58'44Mq8KqUhM94t93MiBq3S22iiuGczMxpKmse5dBy2w5y'
151151 let checkprojectexpireheight = getIntegerValue(this, ("Voting_End_Height_" + EnterAssetID))
152152 let checkpairisavailableornot = getString(this, ("Pair_Under_Voting_" + EnterAssetID))
153153 let checkuservotingbalance = getIntegerValue(this, ((("Votes_Received_" + calleraddress) + "_") + EnterAssetID))
154154 let pendingblocksforprojectexpire = (checkprojectexpireheight - height)
155155 if ((checkpairisavailableornot != EnterAssetID))
156156 then throw("Pair is not available in Voting List.")
157157 else if ((checkprojectexpireheight > height))
158158 then throw((("Voting Already Running. You can withdraw your Ballet Token only after the expire of " + toString(pendingblocksforprojectexpire)) + " Blocks"))
159159 else if ((0 >= checkuservotingbalance))
160160 then throw("You don't have any dues of ballet balance in this Voting Pair.")
161161 else if (isDefined(pmt.assetId))
162162 then throw("Don't attach any other asset. Please attach 0.1 TN as a fee to release your token")
163163 else if ((pmt.amount != 10000000))
164164 then throw("Please attach 0.1 TN as a fee to release your token.")
165165 else [IntegerEntry(((("Votes_Received_" + calleraddress) + "_") + EnterAssetID), 0), ScriptTransfer(i.caller, checkuservotingbalance, BalletAssetID)]
166166 }
167167
168168
169169
170170 @Callable(i)
171171 func SwapAssetToUSDTPairEntry (EnterAssetID) = {
172172 let calleraddress = toBase58String(i.caller.bytes)
173173 let pmt = if ((size(i.payments) == 1))
174174 then i.payments[0]
175175 else throw("Whitelisted Swap Token is required as Attached payment[1].")
176176 let USDTAssetID = base58'GyqTYDea3DWBaAyQs5S5uH2223ucELYFazJpZLCfMznU'
177177 let checkpairisavailableornot = getString(this, ("Pair_Under_Voting_" + EnterAssetID))
178178 let VotingStatus = getStringValue(this, ("Voting_Status_" + EnterAssetID))
179179 let CheckPairPrice = getIntegerValue(this, ("Price_Of_" + EnterAssetID))
180180 let CheckOldBalanceAssettoUSDT = getIntegerValue(this, ((("Balance_of_" + EnterAssetID) + "_") + toBase58String(USDTAssetID)))
181181 let CheckOldBalanceUSDTtoAsset = getIntegerValue(this, ((("Balance_of_" + toBase58String(USDTAssetID)) + "_") + EnterAssetID))
182182 let CheckAssetDecimals = getIntegerValue(this, ("Decimals_of_" + EnterAssetID))
183183 let CurrentVotingStatus = "Fail"
184184 let SwapFee = 1
185185 let SwapFeeAddress = addressFromPublicKey(base58'GKmJ6BchUgQfwKp4mp5eX8Y9xLioYRm6e1gDfFgdAcCr')
186186 let amountAssetDecimals = CheckAssetDecimals
187187 let priceAssetDecimals = 6
188188 let decimalsgap = ((6 - amountAssetDecimals) - 8)
189189 let quantityofpriceasset = (((pmt.amount * CheckPairPrice) * pow(10, 0, decimalsgap, 0, 0, UP)) / pow(10, 0, amountAssetDecimals, 0, 0, UP))
190190 let userbalancetoreceive = ((quantityofpriceasset * 99) / 100)
191191 let SwapFeetoreceive = ((quantityofpriceasset * SwapFee) / 100)
192192 let SumupofAssetToUSDTSwapFee = match getInteger(this, ("Total_Swap_Fee_Collected_" + toBase58String(USDTAssetID))) {
193193 case a: Int =>
194194 a
195195 case _ =>
196196 0
197197 }
198198 let NewSumupofAssetToUSDTSwapFee = (SumupofAssetToUSDTSwapFee + SwapFeetoreceive)
199199 let SumupAssetBalance = match getInteger(this, ((("Balance_of_" + toBase58String(USDTAssetID)) + "_") + EnterAssetID)) {
200200 case a: Int =>
201201 a
202202 case _ =>
203203 0
204204 }
205205 let NewSumupofAssetBalance = (CheckOldBalanceUSDTtoAsset + pmt.amount)
206206 let SumupUSDTBalance = match getInteger(this, ((("Balance_of_" + EnterAssetID) + "_") + toBase58String(USDTAssetID))) {
207207 case a: Int =>
208208 a
209209 case _ =>
210210 0
211211 }
212212 let NewSumupofUSDTBalance = (CheckOldBalanceAssettoUSDT - quantityofpriceasset)
213213 let SumupofSwapTxns = match getInteger(this, "Total_of_Swaps_Txns") {
214214 case a: Int =>
215215 a
216216 case _ =>
217217 0
218218 }
219219 let NewSumupofSwapTxns = (SumupofSwapTxns + 1)
220220 if ((checkpairisavailableornot != EnterAssetID))
221221 then throw("Pair is not available in Whitelisted Asset.")
222222 else if ((VotingStatus == CurrentVotingStatus))
223223 then throw((EnterAssetID + " is not A Whitelisted Token Yet."))
224224 else if ((pmt.assetId == USDTAssetID))
225225 then throw("You can't Attach USDT as an Attached Payment. Only Whitelisted Tokens are accepted.")
226226 else if ((pmt.assetId != fromBase58String(EnterAssetID)))
227227 then throw(("Incorrect asset attached, please attach or send " + EnterAssetID))
228228 else if ((10000 > quantityofpriceasset))
229229 then throw((("Your Attached Asset Amount is very low. Attach More " + EnterAssetID) + " Tokens to Claim the minimum Amount of 1 cent atleast."))
230230 else if ((CheckOldBalanceAssettoUSDT == 0))
231231 then throw("Swap Pair Need to Add Liquidity first into Pool. Only After that Pair will be activated for Swapping.")
232232 else if ((CheckOldBalanceUSDTtoAsset == 0))
233233 then throw("Swap Pair Need to Add Liquidity first into Pool. Only After that Pair will be activated for Swapping.")
234234 else [IntegerEntry(("Price_Of_" + EnterAssetID), CheckPairPrice), IntegerEntry(("Total_Swap_Fee_Collected_" + toBase58String(USDTAssetID)), NewSumupofAssetToUSDTSwapFee), IntegerEntry("Total_of_Swaps_Txns", NewSumupofSwapTxns), IntegerEntry(((("Balance_of_" + toBase58String(USDTAssetID)) + "_") + EnterAssetID), NewSumupofAssetBalance), IntegerEntry(((("Balance_of_" + EnterAssetID) + "_") + toBase58String(USDTAssetID)), NewSumupofUSDTBalance), ScriptTransfer(i.caller, userbalancetoreceive, USDTAssetID), ScriptTransfer(SwapFeeAddress, SwapFeetoreceive, USDTAssetID)]
235235 }
236236
237237
238238
239239 @Callable(i)
240240 func SwapUSDTToAssetPairEntry (EnterAssetID) = {
241241 let calleraddress = toBase58String(i.caller.bytes)
242242 let pmt = if ((size(i.payments) == 1))
243243 then i.payments[0]
244244 else throw("Only USDT Token is required as an Attached payment[1].")
245245 let USDTAssetID = base58'GyqTYDea3DWBaAyQs5S5uH2223ucELYFazJpZLCfMznU'
246246 let checkpairisavailableornot = getString(this, ("Pair_Under_Voting_" + EnterAssetID))
247247 let VotingStatus = getStringValue(this, ("Voting_Status_" + EnterAssetID))
248248 let CheckReversePairPrice = getIntegerValue(this, ("ReversePrice_Of_" + EnterAssetID))
249249 let CheckAssetDecimals = getIntegerValue(this, ("Decimals_of_" + EnterAssetID))
250250 let CurrentVotingStatus = "Fail"
251251 let ReverseSwapFee = 1
252252 let amountAssetDecimals = CheckAssetDecimals
253253 let priceAssetDecimals = 6
254254 let decimalsgap = ((6 - amountAssetDecimals) - 8)
255255 let quantityofpriceasset = ((((pmt.amount * CheckReversePairPrice) / pow(10, 0, 12, 0, 0, UP)) / pow(10, 0, decimalsgap, 0, 0, UP)) * pow(10, 0, amountAssetDecimals, 0, 0, UP))
256256 let getAssetBalance = assetBalance(this, fromBase58String(EnterAssetID))
257257 let newAssetBalance = (getAssetBalance - quantityofpriceasset)
258258 if ((checkpairisavailableornot != EnterAssetID))
259259 then throw("Pair is not available in Whitelisted Asset.")
260260 else if ((VotingStatus == CurrentVotingStatus))
261261 then throw((EnterAssetID + " is not A Whitelisted Token Yet."))
262262 else if ((EnterAssetID == toBase58String(USDTAssetID)))
263263 then throw("Input can Never be a USDT AssetID. Enter Whitelisted AssetID in input and Attach USDT as an attachment Token in payment[1].")
264264 else if ((pmt.assetId != USDTAssetID))
265265 then throw("You can Attach USDT as an Attached Payment[1] to Swap USDT To Required Token. Any other asset else than USDT will be rejected.")
266266 else if ((1000000 > pmt.amount))
267267 then throw("Your Attached USDT Amount is very low. Attach Atleast 1 USDT to Claim the minimum Tokens.")
268268 else [IntegerEntry(("ReversePrice_Of_" + EnterAssetID), CheckReversePairPrice), IntegerEntry(("Total_Swap_Fee_Collected_" + EnterAssetID), 0), ScriptTransfer(i.caller, ((quantityofpriceasset * 99) / 100), fromBase58String(EnterAssetID)), ScriptTransfer(i.caller, ((quantityofpriceasset * ReverseSwapFee) / 100), fromBase58String(EnterAssetID))]
269269 }
270270
271271
272272
273273 @Callable(i)
274274 func AddLiquidity (EnterAssetID) = {
275275 let calleraddress = toBase58String(i.caller.bytes)
276276 let pmt1 = value(i.payments[0])
277277 let pmt2 = value(i.payments[1])
278278 let USDTAssetID = base58'GyqTYDea3DWBaAyQs5S5uH2223ucELYFazJpZLCfMznU'
279279 let checkpairisavailableornot = getString(this, ("Pair_Under_Voting_" + EnterAssetID))
280280 let VotingStatus = getStringValue(this, ("Voting_Status_" + EnterAssetID))
281281 let CheckPairPrice = getIntegerValue(this, ("Price_Of_" + EnterAssetID))
282282 let CheckReversePairPrice = getIntegerValue(this, ("ReversePrice_Of_" + EnterAssetID))
283283 let CheckAssetDecimals = getIntegerValue(this, ("Decimals_of_" + EnterAssetID))
284284 let CurrentVotingStatus = "Fail"
285285 let AddLiquidityFee = 100000
286286 let amountAssetDecimals = CheckAssetDecimals
287287 let decimalsgap = ((6 - amountAssetDecimals) - 8)
288288 let quantityofEnterAssetID = ((((pmt1.amount * CheckReversePairPrice) / pow(10, 0, 12, 0, 0, UP)) / pow(10, 0, decimalsgap, 0, 0, UP)) * pow(10, 0, amountAssetDecimals, 0, 0, UP))
289289 let checkpointToVerifyBothPrices = fraction(1, 1000000000000, CheckPairPrice)
290290 let USDTHoldingInPair = match getInteger(this, ((("Balance_of_" + EnterAssetID) + "_") + toBase58String(USDTAssetID))) {
291291 case a: Int =>
292292 a
293293 case _ =>
294294 0
295295 }
296296 let NewUSDTHoldingInPair = (USDTHoldingInPair + pmt1.amount)
297297 let AssetHoldingInPair = match getInteger(this, ((("Balance_of_" + toBase58String(USDTAssetID)) + "_") + EnterAssetID)) {
298298 case a: Int =>
299299 a
300300 case _ =>
301301 0
302302 }
303303 let NewAssetHoldingInPair = (AssetHoldingInPair + pmt2.amount)
304304 if ((checkpairisavailableornot != EnterAssetID))
305305 then throw("Pair is not available in Whitelisted Asset.")
306306 else if ((VotingStatus == CurrentVotingStatus))
307307 then throw((EnterAssetID + " is not A Whitelisted Token Yet."))
308308 else if ((EnterAssetID == toBase58String(USDTAssetID)))
309309 then throw("Input can Never be a USDT AssetID. Enter Whitelisted AssetID in input as well as in payment[1] and Attach USDT as an attachment Token in payment[2].")
310310 else if ((size(i.payments) != 2))
311311 then throw("Two attached assets expected as payment in 50%-50%. Kindly Attach payment1 = USDT Token and payment2 = Token you want to add for Liquidity.")
312312 else if ((pmt1.assetId != USDTAssetID))
313313 then throw("Incorrect asset attached for Liquidity in payment[1], please attach USDT Token only.")
314314 else if ((10000000 > pmt1.amount))
315315 then throw("please attach atleast 10 USDT in payment[1].")
316316 else if ((pmt2.assetId == USDTAssetID))
317317 then throw("You Attached USDT asset for Liquidity in both payments, Kindly Attach payment1 = USDT Token and payment2 = Token you want to add for Liquidity.")
318318 else if ((pmt2.assetId != fromBase58String(EnterAssetID)))
319319 then throw((("Asset String " + EnterAssetID) + " is not matching with attached payment[2]. String and payment[2] must be same."))
320320 else if ((pmt2.amount != quantityofEnterAssetID))
321321 then throw(("Attached payment[2] quantity is not matching as per attached payment[1] USDT.It must be " + toString(quantityofEnterAssetID)))
322322 else if ((CheckReversePairPrice != checkpointToVerifyBothPrices))
323323 then throw("Price and Reverse Price are Mismatched or manipulated manually.")
324324 else [IntegerEntry(("Price_Of_" + EnterAssetID), CheckPairPrice), IntegerEntry(("ReversePrice_Of_" + EnterAssetID), CheckReversePairPrice), IntegerEntry(((("Balance_of_" + EnterAssetID) + "_") + toBase58String(USDTAssetID)), NewUSDTHoldingInPair), IntegerEntry(((("Balance_of_" + toBase58String(USDTAssetID)) + "_") + EnterAssetID), NewAssetHoldingInPair)]
325325 }
326326
327327
328328
329329 @Callable(i)
330330 func RemovePairEntry (EnterAssetID) = {
331331 let adminrights = getStringValue(this, "Polarity_Admin_Rights")
332332 let USDTAssetID = base58'GyqTYDea3DWBaAyQs5S5uH2223ucELYFazJpZLCfMznU'
333333 let checkprojectexpireheight = getIntegerValue(this, ("Voting_End_Height_" + EnterAssetID))
334334 let checkpairisavailableornot = getString(this, ("Pair_Under_Voting_" + EnterAssetID))
335335 let VotingStatus = getStringValue(this, ("Voting_Status_" + EnterAssetID))
336336 let NewVotingStatus = "Pass"
337337 let calleraddress = toBase58String(i.caller.bytes)
338338 let currentheight = height
339339 let pendingblocksforprojectexpire = (checkprojectexpireheight - height)
340340 if ((checkpairisavailableornot != EnterAssetID))
341341 then throw("Pair is not available in Voting List.")
342342 else if ((adminrights != calleraddress))
343343 then throw((("I know You are not An Admin. Only " + adminrights) + " has rights to remove the pair."))
344344 else if ((checkprojectexpireheight > height))
345345 then throw((("Voting Already Running. You can remove the pair after " + toString(pendingblocksforprojectexpire)) + " Blocks"))
346346 else if ((VotingStatus == NewVotingStatus))
347347 then throw((EnterAssetID + " is now Whitelisted. So you can't remove it."))
348348 else [DeleteEntry(("Pair_Under_Voting_" + EnterAssetID)), DeleteEntry(("Voting_Start_Height_" + EnterAssetID)), DeleteEntry(("Voting_End_Height_" + EnterAssetID)), DeleteEntry(("Voting_Period_" + EnterAssetID)), DeleteEntry(("Votes_Required_" + EnterAssetID)), DeleteEntry(("Voting_Listing_Fee_" + EnterAssetID)), DeleteEntry(("Voting_Status_" + EnterAssetID)), DeleteEntry(("Votes_Received_" + EnterAssetID)), DeleteEntry(("Price_Of_" + EnterAssetID)), DeleteEntry(("ReversePrice_Of_" + EnterAssetID))]
349349 }
350350
351351
352352
353353 @Callable(i)
354-func RemoveEntry (Key) = [DeleteEntry(Key)]
354+func RemoveEntry (Key,Key1,Key2,Key3) = [DeleteEntry(Key), DeleteEntry(Key1), DeleteEntry(Key2), DeleteEntry(Key3)]
355355
356356
357357 @Verifier(tx)
358358 func verify () = match tx {
359359 case _ =>
360360 sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
361361 }
362362

github/deemru/w8io/169f3d6 
114.50 ms