tx · 1QNeTeHCe1pdRCVb56tJpoiDN3MKCAakP3JSWn1zBvU

3MsVsEgTUxTm6ETYkHGaqMhMhiY2Nb3yDN5:  -0.01600000 Waves

2023.09.19 15:05 [2762247] smart account 3MsVsEgTUxTm6ETYkHGaqMhMhiY2Nb3yDN5 > SELF 0.00000000 Waves

{ "type": 13, "id": "1QNeTeHCe1pdRCVb56tJpoiDN3MKCAakP3JSWn1zBvU", "fee": 1600000, "feeAssetId": null, "timestamp": 1695125144081, "version": 2, "chainId": 84, "sender": "3MsVsEgTUxTm6ETYkHGaqMhMhiY2Nb3yDN5", "senderPublicKey": "2LmNyaN5YAXdg9C5vsXcTLU66hsW2KUNPsN7KcHBYhUo", "proofs": [ "3pe4uqh753opb3Pw5H7iCxB15jQJrXuekd85NkWu73hub7iGCtxEG4LHQCFKuJ2dpxhFQnYwgfDchm1P4AsRbVrt" ], "script": "base64:BgIhCAISBAoCCAESAwoBCBIDCgEIEgMKAQgSAwoBCBIDCgEIAgALVVNEQ0Fzc2V0SUQBIERHMcoh3/bynCbIVv74Z6l9nvez8AyJBUgJkDUU6U3/ABFDb2xsZWN0RmVlQWRkcmVzcwkApwgBASBSg9mgi9eQkjsz5eBARHIbc7Hg/F4fmB0sxZ6ySMfiIAYBaQEMUmVnaXN0ZXJQYWlyAgxFbnRlckFzc2V0SUQEZGF5cwQEcG10MQkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAABARwbXQyCQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAEECmN1cnJlbnRLZXkJANgEAQgIBQFpBmNhbGxlcgVieXRlcwQFV0FWRVMJAQEhAQkBCWlzRGVmaW5lZAEIBQRwbXQyB2Fzc2V0SWQECWZldGNocGFpcgkAnQgCBQR0aGlzCQCsAgICCFBhaXJfVVZfBQxFbnRlckFzc2V0SUQEDWFzc2V0aW5mb3BtdDIJANkEAQUMRW50ZXJBc3NldElEBARpbmZvCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQkA2QQBBQxFbnRlckFzc2V0SUQJAKwCAgkArAICAgZBc3NldCAFDEVudGVyQXNzZXRJRAIOIGRvZXNuJ3QgZXhpc3QDCQAAAgUJZmV0Y2hwYWlyBQxFbnRlckFzc2V0SUQJAAIBAhtQYWlyIEFscmVhZHkgRXhpc3QgaW4gTGlzdC4DCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAIJAAIBAnJUd28gYXR0YWNoZWQgYXNzZXRzIGV4cGVjdGVkIGFzIHBheW1lbnQuIEtpbmRseSBBdHRhY2ggcGF5bWVudDEgPSBXQVZFUyBUb2tlbiAmIHBheW1lbnQyID0gVG9rZW4geW91IHdhbnQgdG8gTGlzdC4DCQEJaXNEZWZpbmVkAQgFBHBtdDEHYXNzZXRJZAkAAgECQkluY29ycmVjdCBhc3NldCBhdHRhY2hlZCBmb3IgQ29sbGF0ZXJhbCwgcGxlYXNlIGF0dGFjaCBXQVZFUyBvbmx5LgMJAQIhPQIIBQRwbXQxBmFtb3VudACAlOvcAwkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgISWW91IGF0dGFjaGVkIG9ubHkgCQCkAwEJAGsDCAUEcG10MQZhbW91bnQAAQCAwtcvAgEuCQCkAwEJAGsDCAUEcG10MQZhbW91bnQAAQCAreIEAjkgV0FWRVMgZm9yIExpc3RpbmcgaW4gcGF5bWVudFsxXSwgcGxlYXNlIGF0dGFjaCAxMCBXQVZFUy4DCQECIT0CCAUEcG10Mgdhc3NldElkBQ1hc3NldGluZm9wbXQyCQACAQI8SW5wdXQgU3RyaW5nICYgQXR0YWNoZWQgQXNzZXRJRCBpbiBwYXltZW50MiBpcyBub3QgbWF0Y2hpbmcuAwkAAAIFBVdBVkVTBgkAAgECXVlvdSBBdHRhY2hlZCBXQVZFUyBBc3NldCBJRCBmb3IgTGlzdGluZywgcGxlYXNlIGF0dGFjaCBUb2tlbnMgWW91IHdhbnQgdG8gbGlzdCBpbiBwYXltZW50WzJdLgkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgICCFBhaXJfVVZfBQxFbnRlckFzc2V0SUQFDEVudGVyQXNzZXRJRAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICAgxMaXN0aW5nX0ZlZV8FDEVudGVyQXNzZXRJRAgFBHBtdDEGYW1vdW50CQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFEUNvbGxlY3RGZWVBZGRyZXNzCAUEcG10MQZhbW91bnQFBHVuaXQJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgICC0JhbGFuY2Vfb2ZfBQxFbnRlckFzc2V0SUQCAV8JANgEAQULVVNEQ0Fzc2V0SUQAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgILQmFsYW5jZV9vZl8JANgEAQULVVNEQ0Fzc2V0SUQCAV8FDEVudGVyQXNzZXRJRAAACQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgICE1RvdGFsX29mX1BhaXJfVHhuc18FDEVudGVyQXNzZXRJRAAACQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICAhlUb3RhbF9Td2FwX0ZlZV9Db2xsZWN0ZWRfBQxFbnRlckFzc2V0SUQCAV8JANgEAQULVVNEQ0Fzc2V0SUQAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICAhlUb3RhbF9Td2FwX0ZlZV9Db2xsZWN0ZWRfBQxFbnRlckFzc2V0SUQAAAUDbmlsAWkBDElzc3VlTFBUb2tlbgEMRW50ZXJBc3NldElEBAthZG1pbnJpZ2h0cwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFBHRoaXMCD0xQX0FkbWluX1JpZ2h0cwJQTFAgQWRtaW4gUmlnaHRzIGFyZSBOb3QgSW5jbHVkZWQgaW50byBTbWFydCBDb250cmFjdC4gRGVwbG95IEFkbWluIFJpZ2h0cyBGaXJzdC4EDWNhbGxlcmFkZHJlc3MJANgEAQgIBQFpBmNhbGxlcgVieXRlcwQZY2hlY2twYWlyaXNhdmFpbGFibGVvcm5vdAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFBHRoaXMJAKwCAgIIUGFpcl9VVl8FDEVudGVyQXNzZXRJRAIkQXNzZXQgbm90IEZvdW5kIGluIFdoaXRlbGlzdGVkIFRva2VuBARpbmZvCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQkA2QQBBQxFbnRlckFzc2V0SUQJAKwCAgkArAICAgZBc3NldCAFDEVudGVyQXNzZXRJRAIOIGRvZXNuJ3QgZXhpc3QEBG5hbWUIBQRpbmZvBG5hbWUECGRlY2ltYWxzCAUEaW5mbwhkZWNpbWFscwQKRmlyc3RMUFF0eQkAaAIAAQkAbAYACgAACQBrAwkAZAIFCGRlY2ltYWxzAAYAAQACAAAAAAUHQ0VJTElORwQHTFBpc3N1ZQkAwggFCQCsAgIJAKwCAgIDTFAtCQCvAgIFBG5hbWUACAIFLVVTREMJAKwCAgkArAICCQCsAgIJAKwCAgIDTFAtBQRuYW1lAgUtVVNEQwIuIGlzIGEgTGlxdWlkaXR5IFByb3ZpZGVyIFRva2VuIElzc3VlZCBBZ2FpbnN0IAUMRW50ZXJBc3NldElEBQpGaXJzdExQUXR5CQBrAwkAZAIFCGRlY2ltYWxzAAYAAQACBgQETFBpZAkAuAgBBQdMUGlzc3VlAwkBAiE9AgULYWRtaW5yaWdodHMFDWNhbGxlcmFkZHJlc3MJAAIBCQCsAgIJAKwCAgIuWW91ciBhcmUgbm90IGFsbG93ZGVkIHRvIElzc3VlIExQIFRva2VuLiBPbmx5IAULYWRtaW5yaWdodHMCGCBjYW4gaXNzdWUgdGhlIExQIFRva2VuLgMJAQIhPQIFGWNoZWNrcGFpcmlzYXZhaWxhYmxlb3Jub3QFDEVudGVyQXNzZXRJRAkAAgECHlBhaXIgaXMgbm90IGF2YWlsYWJsZSBpbiBMaXN0LgkAzAgCBQdMUGlzc3VlCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgIDTFBfBQxFbnRlckFzc2V0SUQJANgEAQUETFBpZAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICAglUb3RhbF9MUF8FDEVudGVyQXNzZXRJRAUKRmlyc3RMUFF0eQUDbmlsAWkBGFN3YXBBc3NldFRvVVNEQ1BhaXJFbnRyeQEMRW50ZXJBc3NldElEBA1jYWxsZXJhZGRyZXNzCQDYBAEICAUBaQZjYWxsZXIFYnl0ZXMEA3BtdAMJAAACCQCQAwEIBQFpCHBheW1lbnRzAAEJAJEDAggFAWkIcGF5bWVudHMAAAkAAgECNVdoaXRlbGlzdGVkIFRva2VuIGlzIHJlcXVpcmVkIGFzIEF0dGFjaGVkIHBheW1lbnRbMV0uBBljaGVja3BhaXJpc2F2YWlsYWJsZW9ybm90CQCdCAIFBHRoaXMJAKwCAgIIUGFpcl9VVl8FDEVudGVyQXNzZXRJRAQQQ2hlY2tVU0RDQmFsYW5jZQkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwkArAICCQCsAgIJAKwCAgILQmFsYW5jZV9vZl8FDEVudGVyQXNzZXRJRAIBXwkA2AQBBQtVU0RDQXNzZXRJRAQRQ2hlY2tBc3NldEJhbGFuY2UJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAKwCAgkArAICCQCsAgICC0JhbGFuY2Vfb2ZfCQDYBAEFC1VTRENBc3NldElEAgFfBQxFbnRlckFzc2V0SUQEEG5ld2JhbGFuY2VvZlVTREMJAGsDBRBDaGVja1VTRENCYWxhbmNlBRFDaGVja0Fzc2V0QmFsYW5jZQkAZAIFEUNoZWNrQXNzZXRCYWxhbmNlCAUDcG10BmFtb3VudAQUcXVhbnRpdHlvZnByaWNlYXNzZXQJAGUCBRBDaGVja1VTRENCYWxhbmNlBRBuZXdiYWxhbmNlb2ZVU0RDBAdTd2FwRmVlAAMEEFN3YXBGZWV0b3JlY2VpdmUJAGkCCQBoAgUUcXVhbnRpdHlvZnByaWNlYXNzZXQFB1N3YXBGZWUA6AcEFHVzZXJiYWxhbmNldG9yZWNlaXZlCQBlAgkAZQIFFHF1YW50aXR5b2ZwcmljZWFzc2V0BRBTd2FwRmVldG9yZWNlaXZlBRBTd2FwRmVldG9yZWNlaXZlBBlTdW11cG9mQXNzZXRUb1VTRENTd2FwRmVlBAckbWF0Y2gwCQCaCAIFBHRoaXMJAKwCAgkArAICCQCsAgICGVRvdGFsX1N3YXBfRmVlX0NvbGxlY3RlZF8FDEVudGVyQXNzZXRJRAIBXwkA2AQBBQtVU0RDQXNzZXRJRAMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAQcTmV3U3VtdXBvZkFzc2V0VG9VU0RDU3dhcEZlZQkAZAIJAGQCBRlTdW11cG9mQXNzZXRUb1VTRENTd2FwRmVlBRBTd2FwRmVldG9yZWNlaXZlBRBTd2FwRmVldG9yZWNlaXZlBBFTdW11cEFzc2V0QmFsYW5jZQQHJG1hdGNoMAkAmggCBQR0aGlzCQCsAgIJAKwCAgkArAICAgtCYWxhbmNlX29mXwkA2AQBBQtVU0RDQXNzZXRJRAIBXwUMRW50ZXJBc3NldElEAwkAAQIFByRtYXRjaDACA0ludAQBYQUHJG1hdGNoMAUBYQAABBZOZXdTdW11cG9mQXNzZXRCYWxhbmNlCQBkAgURQ2hlY2tBc3NldEJhbGFuY2UIBQNwbXQGYW1vdW50BBBTdW11cFVTRENCYWxhbmNlBAckbWF0Y2gwCQCaCAIFBHRoaXMJAKwCAgkArAICCQCsAgICC0JhbGFuY2Vfb2ZfBQxFbnRlckFzc2V0SUQCAV8JANgEAQULVVNEQ0Fzc2V0SUQDCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhAAAEFU5ld1N1bXVwb2ZVU0RDQmFsYW5jZQkAZAIJAGUCBRBDaGVja1VTRENCYWxhbmNlBRRxdWFudGl0eW9mcHJpY2Vhc3NldAUQU3dhcEZlZXRvcmVjZWl2ZQQEVE9QVAQHJG1hdGNoMAkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwkArAICAhNUb3RhbF9vZl9QYWlyX1R4bnNfBQxFbnRlckFzc2V0SUQDCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhAAAEBk5ld1RQVAkAZAIFBFRPUFQAAQMJAAACBQxFbnRlckFzc2V0SUQJANgEAQULVVNEQ0Fzc2V0SUQJAAIBAoYBSW5wdXQgY2FuIE5ldmVyIGJlIGEgVVNEQyBBc3NldElELiBFbnRlciBXaGl0ZWxpc3RlZCBBc3NldElEIGluIGlucHV0ICYgQXR0YWNoIFdoaXRlbGlzdGVkIEFzc2V0IGFzIGFuIGF0dGFjaG1lbnQgVG9rZW4gaW4gcGF5bWVudFsxXS4DCQECIT0CBRljaGVja3BhaXJpc2F2YWlsYWJsZW9ybm90BQxFbnRlckFzc2V0SUQJAAIBAitQYWlyIGlzIG5vdCBhdmFpbGFibGUgaW4gV2hpdGVsaXN0ZWQgQXNzZXQuAwkAAAIIBQNwbXQHYXNzZXRJZAULVVNEQ0Fzc2V0SUQJAAIBAlNZb3UgY2FuJ3QgQXR0YWNoIFVTREMgYXMgYW4gQXR0YWNoZWQgUGF5bWVudC4gT25seSBXaGl0ZWxpc3RlZCBUb2tlbnMgYXJlIGFjY2VwdGVkLgMJAQIhPQIIBQNwbXQHYXNzZXRJZAkA2QQBBQxFbnRlckFzc2V0SUQJAAIBCQCsAgICMEluY29ycmVjdCBhc3NldCBhdHRhY2hlZCwgcGxlYXNlIGF0dGFjaCBvciBzZW5kIAUMRW50ZXJBc3NldElEAwkAAAIFEENoZWNrVVNEQ0JhbGFuY2UAAAkAAgECZVN3YXAgUGFpciBOZWVkIHRvIEFkZCBMaXF1aWRpdHkgZmlyc3QgaW50byBQb29sLiBPbmx5IEFmdGVyIHRoYXQgUGFpciB3aWxsIGJlIGFjdGl2YXRlZCBmb3IgU3dhcHBpbmcuAwkAAAIFEUNoZWNrQXNzZXRCYWxhbmNlAAAJAAIBAmVTd2FwIFBhaXIgTmVlZCB0byBBZGQgTGlxdWlkaXR5IGZpcnN0IGludG8gUG9vbC4gT25seSBBZnRlciB0aGF0IFBhaXIgd2lsbCBiZSBhY3RpdmF0ZWQgZm9yIFN3YXBwaW5nLgMJAGYCAKCNBgUUcXVhbnRpdHlvZnByaWNlYXNzZXQJAAIBCQCsAgIJAKwCAgI0WW91ciBBdHRhY2hlZCBBc3NldCBBbW91bnQgaXMgdmVyeSBsb3cuIEF0dGFjaCBNb3JlIAUMRW50ZXJBc3NldElEAjogVG9rZW5zIHRvIENsYWltIHRoZSBtaW5pbXVtIEFtb3VudCBvZiAwLjEgZG9sbGFyIGF0bGVhc3QuAwkAZgIFFHF1YW50aXR5b2ZwcmljZWFzc2V0BRBDaGVja1VTRENCYWxhbmNlCQACAQkArAICCQCsAgICHVBvb2wgT25seSBoYXMgYSBMaXF1aWRpdHkgb2YgCQCkAwEJAGkCBRBDaGVja1VTRENCYWxhbmNlCQBsBgAKAAAABgAAAAAFB0NFSUxJTkcCHyBVU0RDLiBBZGQgTGlxdWlkaXR5IGludG8gUG9vbC4JAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgICGVRvdGFsX1N3YXBfRmVlX0NvbGxlY3RlZF8FDEVudGVyQXNzZXRJRAIBXwkA2AQBBQtVU0RDQXNzZXRJRAUcTmV3U3VtdXBvZkFzc2V0VG9VU0RDU3dhcEZlZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICAhNUb3RhbF9vZl9QYWlyX1R4bnNfBQxFbnRlckFzc2V0SUQFBk5ld1RQVAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgILQmFsYW5jZV9vZl8JANgEAQULVVNEQ0Fzc2V0SUQCAV8FDEVudGVyQXNzZXRJRAUWTmV3U3VtdXBvZkFzc2V0QmFsYW5jZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgILQmFsYW5jZV9vZl8FDEVudGVyQXNzZXRJRAIBXwkA2AQBBQtVU0RDQXNzZXRJRAUVTmV3U3VtdXBvZlVTRENCYWxhbmNlCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUUdXNlcmJhbGFuY2V0b3JlY2VpdmUFC1VTRENBc3NldElECQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFEUNvbGxlY3RGZWVBZGRyZXNzBRBTd2FwRmVldG9yZWNlaXZlBQtVU0RDQXNzZXRJRAUDbmlsAWkBGFN3YXBVU0RDVG9Bc3NldFBhaXJFbnRyeQEMRW50ZXJBc3NldElEBA1jYWxsZXJhZGRyZXNzCQDYBAEICAUBaQZjYWxsZXIFYnl0ZXMEA3BtdAMJAAACCQCQAwEIBQFpCHBheW1lbnRzAAEJAJEDAggFAWkIcGF5bWVudHMAAAkAAgEJAKwCAgkArAICAgVPbmx5IAkA2AQBBQtVU0RDQXNzZXRJRAIyIFVTREMgVG9rZW4gaXMgcmVxdWlyZWQgYXMgYW4gQXR0YWNoZWQgcGF5bWVudFsxXS4EEENoZWNrVVNEQ0JhbGFuY2UJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAKwCAgkArAICCQCsAgICC0JhbGFuY2Vfb2ZfBQxFbnRlckFzc2V0SUQCAV8JANgEAQULVVNEQ0Fzc2V0SUQEEUNoZWNrQXNzZXRCYWxhbmNlCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQCsAgIJAKwCAgkArAICAgtCYWxhbmNlX29mXwkA2AQBBQtVU0RDQXNzZXRJRAIBXwUMRW50ZXJBc3NldElEBBFuZXdiYWxhbmNlb2ZBc3NldAkAawMFEENoZWNrVVNEQ0JhbGFuY2UFEUNoZWNrQXNzZXRCYWxhbmNlCQBkAgUQQ2hlY2tVU0RDQmFsYW5jZQgFA3BtdAZhbW91bnQEFHF1YW50aXR5b2ZwcmljZWFzc2V0CQBlAgURQ2hlY2tBc3NldEJhbGFuY2UFEW5ld2JhbGFuY2VvZkFzc2V0BBljaGVja3BhaXJpc2F2YWlsYWJsZW9ybm90CQCdCAIFBHRoaXMJAKwCAgIIUGFpcl9VVl8FDEVudGVyQXNzZXRJRAQHU3dhcEZlZQADBBBTd2FwRmVldG9yZWNlaXZlCQBpAgkAaAIFFHF1YW50aXR5b2ZwcmljZWFzc2V0BQdTd2FwRmVlAOgHBBR1c2VyYmFsYW5jZXRvcmVjZWl2ZQkAZQIJAGUCBRRxdWFudGl0eW9mcHJpY2Vhc3NldAUQU3dhcEZlZXRvcmVjZWl2ZQUQU3dhcEZlZXRvcmVjZWl2ZQQZU3VtdXBvZlVTRENUb0Fzc2V0U3dhcEZlZQQHJG1hdGNoMAkAmggCBQR0aGlzCQCsAgICGVRvdGFsX1N3YXBfRmVlX0NvbGxlY3RlZF8FDEVudGVyQXNzZXRJRAMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAQcTmV3U3VtdXBvZlVTRENUb0Fzc2V0U3dhcEZlZQkAZAIJAGQCBRlTdW11cG9mVVNEQ1RvQXNzZXRTd2FwRmVlBRBTd2FwRmVldG9yZWNlaXZlBRBTd2FwRmVldG9yZWNlaXZlBBFTdW11cEFzc2V0QmFsYW5jZQQHJG1hdGNoMAkAmggCBQR0aGlzCQCsAgIJAKwCAgkArAICAgtCYWxhbmNlX29mXwkA2AQBBQtVU0RDQXNzZXRJRAIBXwUMRW50ZXJBc3NldElEAwkAAQIFByRtYXRjaDACA0ludAQBYQUHJG1hdGNoMAUBYQAABBZOZXdTdW11cG9mQXNzZXRCYWxhbmNlCQBkAgkAZQIFEUNoZWNrQXNzZXRCYWxhbmNlBRRxdWFudGl0eW9mcHJpY2Vhc3NldAUQU3dhcEZlZXRvcmVjZWl2ZQQQU3VtdXBVU0RDQmFsYW5jZQQHJG1hdGNoMAkAmggCBQR0aGlzCQCsAgIJAKwCAgkArAICAgtCYWxhbmNlX29mXwUMRW50ZXJBc3NldElEAgFfCQDYBAEFC1VTRENBc3NldElEAwkAAQIFByRtYXRjaDACA0ludAQBYQUHJG1hdGNoMAUBYQAABBVOZXdTdW11cG9mVVNEQ0JhbGFuY2UJAGQCBRBDaGVja1VTRENCYWxhbmNlCAUDcG10BmFtb3VudAQEVE9QVAQHJG1hdGNoMAkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwkArAICAhNUb3RhbF9vZl9QYWlyX1R4bnNfBQxFbnRlckFzc2V0SUQDCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhAAAEBk5ld1RQVAkAZAIFBFRPUFQAAQMJAQIhPQIFGWNoZWNrcGFpcmlzYXZhaWxhYmxlb3Jub3QFDEVudGVyQXNzZXRJRAkAAgECK1BhaXIgaXMgbm90IGF2YWlsYWJsZSBpbiBXaGl0ZWxpc3RlZCBBc3NldC4DCQAAAgUMRW50ZXJBc3NldElECQDYBAEFC1VTRENBc3NldElECQACAQJ5SW5wdXQgY2FuIE5ldmVyIGJlIGEgVVNEQyBBc3NldElELiBFbnRlciBXaGl0ZWxpc3RlZCBBc3NldElEIGluIGlucHV0ICYgQXR0YWNoIFVTREMgYXMgYW4gYXR0YWNobWVudCBUb2tlbiBpbiBwYXltZW50WzFdLgMJAQIhPQIIBQNwbXQHYXNzZXRJZAULVVNEQ0Fzc2V0SUQJAAIBAn5Zb3UgY2FuIEF0dGFjaCBVU0RDIGFzIGFuIEF0dGFjaGVkIFBheW1lbnRbMV0gdG8gU3dhcCBVU0RDIFRvIFJlcXVpcmVkIFRva2VuLiBBbnkgb3RoZXIgYXNzZXQgZWxzZSB0aGFuIFVTREMgd2lsbCBiZSByZWplY3RlZC4DCQBmAgCgjQYIBQNwbXQGYW1vdW50CQACAQJbWW91ciBBdHRhY2hlZCBVU0RDIEFtb3VudCBpcyB2ZXJ5IGxvdy4gQXR0YWNoIEF0bGVhc3QgMC4xIFVTREMgdG8gQ2xhaW0gdGhlIG1pbmltdW0gVG9rZW5zLgMJAAACBRBDaGVja1VTRENCYWxhbmNlAAAJAAIBAmVTd2FwIFBhaXIgTmVlZCB0byBBZGQgTGlxdWlkaXR5IGZpcnN0IGludG8gUG9vbC4gT25seSBBZnRlciB0aGF0IFBhaXIgd2lsbCBiZSBhY3RpdmF0ZWQgZm9yIFN3YXBwaW5nLgMJAAACBRFDaGVja0Fzc2V0QmFsYW5jZQAACQACAQJlU3dhcCBQYWlyIE5lZWQgdG8gQWRkIExpcXVpZGl0eSBmaXJzdCBpbnRvIFBvb2wuIE9ubHkgQWZ0ZXIgdGhhdCBQYWlyIHdpbGwgYmUgYWN0aXZhdGVkIGZvciBTd2FwcGluZy4DCQBmAgUUcXVhbnRpdHlvZnByaWNlYXNzZXQFEUNoZWNrQXNzZXRCYWxhbmNlCQACAQkArAICCQCsAgICHVBvb2wgT25seSBoYXMgYSBMaXF1aWRpdHkgb2YgCQCkAwEFEUNoZWNrQXNzZXRCYWxhbmNlAiEgVG9rZW5zLiBBZGQgTGlxdWlkaXR5IGludG8gUG9vbC4JAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgIZVG90YWxfU3dhcF9GZWVfQ29sbGVjdGVkXwUMRW50ZXJBc3NldElEBRxOZXdTdW11cG9mVVNEQ1RvQXNzZXRTd2FwRmVlCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgICE1RvdGFsX29mX1BhaXJfVHhuc18FDEVudGVyQXNzZXRJRAUGTmV3VFBUCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICAgtCYWxhbmNlX29mXwkA2AQBBQtVU0RDQXNzZXRJRAIBXwUMRW50ZXJBc3NldElEBRZOZXdTdW11cG9mQXNzZXRCYWxhbmNlCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICAgtCYWxhbmNlX29mXwUMRW50ZXJBc3NldElEAgFfCQDYBAEFC1VTRENBc3NldElEBRVOZXdTdW11cG9mVVNEQ0JhbGFuY2UJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBRR1c2VyYmFsYW5jZXRvcmVjZWl2ZQkA2QQBBQxFbnRlckFzc2V0SUQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwURQ29sbGVjdEZlZUFkZHJlc3MFEFN3YXBGZWV0b3JlY2VpdmUJANkEAQUMRW50ZXJBc3NldElEBQNuaWwBaQEMQWRkTGlxdWlkaXR5AQxFbnRlckFzc2V0SUQEDWNhbGxlcmFkZHJlc3MJANgEAQgIBQFpBmNhbGxlcgVieXRlcwQEcG10MQkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAABARwbXQyCQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAEEGWNoZWNrcGFpcmlzYXZhaWxhYmxlb3Jub3QJAJ0IAgUEdGhpcwkArAICAghQYWlyX1VWXwUMRW50ZXJBc3NldElEBA5SZWlzc3VlYXNzZXRJZAkA2QQBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwkArAICAgNMUF8FDEVudGVyQXNzZXRJRAIsTFAgVG9rZW4gaXMgTWlzc2luZyBvciBNYXkgYmUgbm90IEdlbmVyYXRlZC4EEENoZWNrVVNEQ0JhbGFuY2UJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAKwCAgkArAICCQCsAgICC0JhbGFuY2Vfb2ZfBQxFbnRlckFzc2V0SUQCAV8JANgEAQULVVNEQ0Fzc2V0SUQEEUNoZWNrQXNzZXRCYWxhbmNlCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQCsAgIJAKwCAgkArAICAgtCYWxhbmNlX29mXwkA2AQBBQtVU0RDQXNzZXRJRAIBXwUMRW50ZXJBc3NldElEBAxkZWNpbWFsc2luZm8JARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBCQDZBAEFDEVudGVyQXNzZXRJRAkArAICCQCsAgICBkFzc2V0IAUMRW50ZXJBc3NldElEAg4gZG9lc24ndCBleGlzdAQIZGVjaW1hbHMIBQxkZWNpbWFsc2luZm8IZGVjaW1hbHMEBGFyZzEFEENoZWNrVVNEQ0JhbGFuY2UEBGFyZzIFEUNoZWNrQXNzZXRCYWxhbmNlBAVhcmdzMwkAbAYJAGgCCQBpAgkAaAIFBGFyZzEAwIQ9BQRhcmcyCQBsBgAKAAAFCGRlY2ltYWxzAAAAAAUHQ0VJTElORwAAAAEAAAAABQdDRUlMSU5HBBJib3RoYXNzZXRzZGVjaW1hbHMJAGQCAAYFCGRlY2ltYWxzBA1zaGFyZWRlY2ltYWxzCQBpAgUSYm90aGFzc2V0c2RlY2ltYWxzAAIEFnF1YW50aXR5b2ZFbnRlckFzc2V0SUQJAGsDBQVhcmdzMwgFBHBtdDEGYW1vdW50CQBsBgAKAAAFEmJvdGhhc3NldHNkZWNpbWFscwAAAAAFB0NFSUxJTkcEEnF1YW50aXR5b2ZMUFRva2VuMQkAbAYJAGgCCQBrAwgFBHBtdDEGYW1vdW50AAEJAGwGAAoAAAUIZGVjaW1hbHMAAAAABQdDRUlMSU5HCQBrAwgFBHBtdDIGYW1vdW50AAEJAGwGAAoAAAAGAAAAAAUHQ0VJTElORwAAAAUAAQUNc2hhcmVkZWNpbWFscwUERE9XTgQRVVNEQ0hvbGRpbmdJblBhaXIEByRtYXRjaDAJAJoIAgUEdGhpcwkArAICCQCsAgIJAKwCAgILQmFsYW5jZV9vZl8FDEVudGVyQXNzZXRJRAIBXwkA2AQBBQtVU0RDQXNzZXRJRAMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAQUTmV3VVNEQ0hvbGRpbmdJblBhaXIJAGQCBRFVU0RDSG9sZGluZ0luUGFpcggFBHBtdDIGYW1vdW50BBJBc3NldEhvbGRpbmdJblBhaXIEByRtYXRjaDAJAJoIAgUEdGhpcwkArAICCQCsAgIJAKwCAgILQmFsYW5jZV9vZl8JANgEAQULVVNEQ0Fzc2V0SUQCAV8FDEVudGVyQXNzZXRJRAMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAQVTmV3QXNzZXRIb2xkaW5nSW5QYWlyCQBkAgUSQXNzZXRIb2xkaW5nSW5QYWlyCAUEcG10MQZhbW91bnQEDUxQVG9rZW5Jc3N1ZWQEByRtYXRjaDAJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAKwCAgIJVG90YWxfTFBfBQxFbnRlckFzc2V0SUQDCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhAAAEEE5ld0xQVG9rZW5Jc3N1ZWQJAGQCBQ1MUFRva2VuSXNzdWVkBRJxdWFudGl0eW9mTFBUb2tlbjEDCQECIT0CBRljaGVja3BhaXJpc2F2YWlsYWJsZW9ybm90BQxFbnRlckFzc2V0SUQJAAIBAitQYWlyIGlzIG5vdCBhdmFpbGFibGUgaW4gV2hpdGVsaXN0ZWQgQXNzZXQuAwkAAAIFDEVudGVyQXNzZXRJRAkA2AQBBQtVU0RDQXNzZXRJRAkAAgECkgFJbnB1dCBjYW4gTmV2ZXIgYmUgYSBVU0RDIEFzc2V0SUQuIEVudGVyIFdoaXRlbGlzdGVkIEFzc2V0SUQgaW4gaW5wdXQgYXMgd2VsbCBhcyBpbiBwYXltZW50WzFdICYgQXR0YWNoIFVTREMgYXMgYW4gYXR0YWNobWVudCBUb2tlbiBpbiBwYXltZW50WzJdLgMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAgkAAgECngFUd28gYXR0YWNoZWQgYXNzZXRzIGV4cGVjdGVkIGFzIHBheW1lbnQgaW4gNTAlLTUwJS4gS2luZGx5IEF0dGFjaCBwYXltZW50MSA9IFRva2VuIHlvdSB3YW50IHRvIGFkZCBmb3IgTGlxdWlkaXR5ICYgcGF5bWVudDIgPSBFcXVpdmFsZW50IEFtb3VudCBvZiBVU0RDIFRva2VuLgMJAAACCAUEcG10MQdhc3NldElkBQtVU0RDQXNzZXRJRAkAAgECeFlvdSBBdHRhY2hlZCBVU0RDIGFzc2V0IGluIHBheW1lbnRbMV0sIHBsZWFzZSBhdHRhY2ggb25seSB3aGl0ZWxpc3RlZCBUb2tlbiBpbiBwYXltZW50WzFdIGFsb25nIHdpdGggVVNEQyBpbiBwYXltZW50WzJdLgMJAQIhPQIIBQRwbXQxB2Fzc2V0SWQJANkEAQUMRW50ZXJBc3NldElECQACAQJrSW5jb3JyZWN0IGFzc2V0IGF0dGFjaGVkIGZvciBMaXF1aWRpdHkgaW4gcGF5bWVudFsxXSwgcGxlYXNlIGF0dGFjaCBTdHJpbmcgQXNzZXQgb3IgV2hpdGVsaXN0ZWQgVG9rZW4gb25seS4DCQECIT0CCAUEcG10MQdhc3NldElkCQDZBAEFDEVudGVyQXNzZXRJRAkAAgECa0luY29ycmVjdCBhc3NldCBhdHRhY2hlZCBmb3IgTGlxdWlkaXR5IGluIHBheW1lbnRbMV0sIHBsZWFzZSBhdHRhY2ggU3RyaW5nIEFzc2V0IG9yIFdoaXRlbGlzdGVkIFRva2VuIG9ubHkuAwkBAiE9AggFBHBtdDIHYXNzZXRJZAULVVNEQ0Fzc2V0SUQJAAIBAmpXcm9uZyBBc3NldCBBdHRhY2hlZCBpbiBwYXltZW50c1syXSwgUGxlYXNlIGF0dGFjaCBwYXltZW50WzFdID0gTGlxdWlkaXR5IFRva2VuICYgcGF5bWVudFsyXSA9IFVTREMgVG9rZW4uAwkAZgIAwJaxAggFBHBtdDIGYW1vdW50CQACAQJUcGxlYXNlIGF0dGFjaCBhdGxlYXN0IDUgVVNEQyBpbiBwYXltZW50WzJdICYgRXF1aXZhbGVudCB3b3J0aCBvZiBUb2tlbiBpbiBwYXltZW50WzFdAwkBAiE9AggFBHBtdDIGYW1vdW50BRZxdWFudGl0eW9mRW50ZXJBc3NldElECQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgJeQXR0YWNoZWQgcGF5bWVudFsyXSBxdHkgaXMgbm90IG1hdGNoaW5nIGFzIHBlciBhdHRhY2hlZCBwYXltZW50WzFdLnBheW1lbnRbMl0gbXVzdCBiZSBhcyBpbnQgWwkApAMBBRZxdWFudGl0eW9mRW50ZXJBc3NldElEAgVdIG9yIAkApAMBCQBrAwUWcXVhbnRpdHlvZkVudGVyQXNzZXRJRAABAMCEPQIBLgkAsgICCQCkAwEFFnF1YW50aXR5b2ZFbnRlckFzc2V0SUQABgIGIFVTREMuAwkAZgIAAQUScXVhbnRpdHlvZkxQVG9rZW4xCQACAQkArAICCQCsAgICIExQIFRva2VuIE91dGNvbWUgaXMgZ29pbmcgYmVsb3cgCQCkAwEFDXNoYXJlZGVjaW1hbHMCOyBEZWNpbWFscy4gUGxlYXNlIEF0dGFjaCBtaW4uIDEgTFAgdG9rZW4gb3IgNSBVU0RDIEF0bGVhc3QuCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICAgtCYWxhbmNlX29mXwUMRW50ZXJBc3NldElEAgFfCQDYBAEFC1VTRENBc3NldElEBRROZXdVU0RDSG9sZGluZ0luUGFpcgkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgILQmFsYW5jZV9vZl8JANgEAQULVVNEQ0Fzc2V0SUQCAV8FDEVudGVyQXNzZXRJRAUVTmV3QXNzZXRIb2xkaW5nSW5QYWlyCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgICCVRvdGFsX0xQXwUMRW50ZXJBc3NldElEBRBOZXdMUFRva2VuSXNzdWVkCQDMCAIJAQdSZWlzc3VlAwUOUmVpc3N1ZWFzc2V0SWQFEnF1YW50aXR5b2ZMUFRva2VuMQYJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBRJxdWFudGl0eW9mTFBUb2tlbjEFDlJlaXNzdWVhc3NldElkBQNuaWwBaQEPUmVtb3ZlTGlxdWlkaXR5AQxFbnRlckFzc2V0SUQEDWNhbGxlcmFkZHJlc3MJANgEAQgIBQFpBmNhbGxlcgVieXRlcwQDcG10AwkAAAIJAJADAQgFAWkIcGF5bWVudHMAAQkAkQMCCAUBaQhwYXltZW50cwAACQACAQI6Tm8gcGF5bWVudCBhdHRhY2hlZCwgUGxlYXNlIEF0dGFjaCBMUCBUb2tlbiBhcyBwYXltZW50WzFdLgQZY2hlY2twYWlyaXNhdmFpbGFibGVvcm5vdAkAnQgCBQR0aGlzCQCsAgICCFBhaXJfVVZfBQxFbnRlckFzc2V0SUQEElJlaXNzdWVhYmxlYXNzZXRJZAkA2QQBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwkArAICAgNMUF8FDEVudGVyQXNzZXRJRAIlTFAgVG9rZW4gaXMgTWlzc2luZyBvciBub3QgR2VuZXJhdGVkLgQMZGVjaW1hbHNpbmZvCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQkA2QQBBQxFbnRlckFzc2V0SUQJAKwCAgkArAICAgZBc3NldCAFDEVudGVyQXNzZXRJRAIOIGRvZXNuJ3QgZXhpc3QECGRlY2ltYWxzCAUMZGVjaW1hbHNpbmZvCGRlY2ltYWxzBBJib3RoYXNzZXRzZGVjaW1hbHMJAGQCAAYFCGRlY2ltYWxzBA1zaGFyZWRlY2ltYWxzCQBpAgUSYm90aGFzc2V0c2RlY2ltYWxzAAIEEkNoZWNrVG90YWxMUEFtb3VudAkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwkArAICAglUb3RhbF9MUF8FDEVudGVyQXNzZXRJRAQQVXNlckxQUGVyY2VudGFnZQkAbAYJAGsDCAUDcG10BmFtb3VudAkAbAYACgAAAAgAAAAABQdDRUlMSU5HBRJDaGVja1RvdGFsTFBBbW91bnQABgABAAAABgUHQ0VJTElORwQQQ2hlY2tVU0RDQmFsYW5jZQkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwkArAICCQCsAgIJAKwCAgILQmFsYW5jZV9vZl8FDEVudGVyQXNzZXRJRAIBXwkA2AQBBQtVU0RDQXNzZXRJRAQRQ2hlY2tBc3NldEJhbGFuY2UJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAKwCAgkArAICCQCsAgICC0JhbGFuY2Vfb2ZfCQDYBAEFC1VTRENBc3NldElEAgFfBQxFbnRlckFzc2V0SUQED1VzZXJMUFdvcnRoVVNEQwkAawMFEENoZWNrVVNEQ0JhbGFuY2UFEFVzZXJMUFBlcmNlbnRhZ2UJAGwGAAoAAAAIAAAAAAUHQ0VJTElORwQQVXNlckxQV29ydGhBc3NldAkAawMFEUNoZWNrQXNzZXRCYWxhbmNlBRBVc2VyTFBQZXJjZW50YWdlCQBsBgAKAAAACAAAAAAFB0NFSUxJTkcEEVVTRENIb2xkaW5nSW5QYWlyBAckbWF0Y2gwCQCaCAIFBHRoaXMJAKwCAgkArAICCQCsAgICC0JhbGFuY2Vfb2ZfBQxFbnRlckFzc2V0SUQCAV8JANgEAQULVVNEQ0Fzc2V0SUQDCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhAAAEFE5ld1VTRENIb2xkaW5nSW5QYWlyCQBlAgURVVNEQ0hvbGRpbmdJblBhaXIFD1VzZXJMUFdvcnRoVVNEQwQSQXNzZXRIb2xkaW5nSW5QYWlyBAckbWF0Y2gwCQCaCAIFBHRoaXMJAKwCAgkArAICCQCsAgICC0JhbGFuY2Vfb2ZfCQDYBAEFC1VTRENBc3NldElEAgFfBQxFbnRlckFzc2V0SUQDCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhAAAEFU5ld0Fzc2V0SG9sZGluZ0luUGFpcgkAZQIFEkFzc2V0SG9sZGluZ0luUGFpcgUQVXNlckxQV29ydGhBc3NldAQNTFBUb2tlbklzc3VlZAQHJG1hdGNoMAkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwkArAICAglUb3RhbF9MUF8FDEVudGVyQXNzZXRJRAMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAQQTmV3TFBUb2tlbklzc3VlZAkAZQIFDUxQVG9rZW5Jc3N1ZWQIBQNwbXQGYW1vdW50AwkBAiE9AgUZY2hlY2twYWlyaXNhdmFpbGFibGVvcm5vdAUMRW50ZXJBc3NldElECQACAQIjUGFpciBpcyBub3QgYXZhaWxhYmxlIGluIFdoaXRlbGlzdC4DCQAAAgkA2QQBBQxFbnRlckFzc2V0SUQFC1VTRENBc3NldElECQACAQJrRG9uJ3QgY2hvb3NlIFVTREMgQXNzZXRJRCBhcyBJbnB1dCwgT25seSBXaGl0ZWxpc3RlZCBBc3NldCBhcyBJbnB1dCBTdHJpbmcgJiBBdHRhY2ggTFAgVG9rZW5zIGFzIHBheW1lbnRbMV0DCQECIT0CCAUDcG10B2Fzc2V0SWQFElJlaXNzdWVhYmxlYXNzZXRJZAkAAgECR1dyb25nIEFzc2V0IGlzIGF0dGFjaGVkIGluIHBheW1lbnRbMV0gb3IgTFAgVG9rZW4gTm90IEZvdW5kIG9yIE1pc3NpbmcuAwkAZgIAAQUQVXNlckxQUGVyY2VudGFnZQkAAgECLllvdXIgTFAgVG9rZW4gYW1vdW50ICUgaXMgdmVyeSBsb3cgdG8gY29udmVydC4DCQBmAgABBQ9Vc2VyTFBXb3J0aFVTREMJAAIBAlJZb3VyIExQIFRva2VuIGNvbnZlcnNpb24gYW1vdW50IGlzIHZlcnkgbG93IHRvIGNvbnZlcnQgb3IgbGVzcyB0aGFuIDAuMDAwMDAxIFVTREMuAwkAZgIAAQUQVXNlckxQV29ydGhBc3NldAkAAgECXFlvdXIgTFAgVG9rZW4gY29udmVyc2lvbiBhbW91bnQgaXMgdmVyeSBsb3cgdG8gY29udmVydCBvciBsZXNzIHRoYW4gZnJhY3Rpb24gdmFsdWUgb2YgVG9rZW4uCQDMCAIJAQxJbnRlZ2VyRW50cnkCAhZXaXRoZHJhd19MUF9QZXJjZW50YWdlBRBVc2VyTFBQZXJjZW50YWdlCQDMCAIJAQRCdXJuAgUSUmVpc3N1ZWFibGVhc3NldElkCAUDcG10BmFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICAglUb3RhbF9MUF8FDEVudGVyQXNzZXRJRAUQTmV3TFBUb2tlbklzc3VlZAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgILQmFsYW5jZV9vZl8FDEVudGVyQXNzZXRJRAIBXwkA2AQBBQtVU0RDQXNzZXRJRAUUTmV3VVNEQ0hvbGRpbmdJblBhaXIJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgICC0JhbGFuY2Vfb2ZfCQDYBAEFC1VTRENBc3NldElEAgFfBQxFbnRlckFzc2V0SUQFFU5ld0Fzc2V0SG9sZGluZ0luUGFpcgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFD1VzZXJMUFdvcnRoVVNEQwULVVNEQ0Fzc2V0SUQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBRBVc2VyTFBXb3J0aEFzc2V0CQDZBAEFDEVudGVyQXNzZXRJRAUDbmlsAQJ0eAEGdmVyaWZ5AAkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAgFAnR4D3NlbmRlclB1YmxpY0tlefpJIqw=", "height": 2762247, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: EXpwAcD8Lpzd36xHAmgjbiYmu7xX8S49WyYcpuwH46YS Next: HMuYqsQfg7QGBaBZshNxPRzoR6v4vfmPqKRh3dqWArxB Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4+let a = base58'5bXgvADuVoFdhtF5uKZAEiVdAo7ZCWw151L4yyf1PiES'
45
6+let b = addressFromPublicKey(base58'6Z73KxcX3sugpiStpSRXxKxTmWqCaLVwFeM6kwyiKVDR')
57
6-@Callable(a)
7-func RegisterPairForVoting (b) = {
8- let c = assetInfo(fromBase58String(b))
9- let d = value(a.payments[0])
10- let e = toBase58String(a.caller.bytes)
11- let f = getString(this, ("Pair_UV_" + b))
12- let g = fromBase58String(b)
13- if ((f == b))
14- then throw("Pair Already Exist in Voting List.")
15- else [StringEntry(("Pair_UV_" + b), b)]
8+@Callable(c)
9+func RegisterPair (d,e) = {
10+ let f = value(c.payments[0])
11+ let g = value(c.payments[1])
12+ let h = toBase58String(c.caller.bytes)
13+ let i = !(isDefined(g.assetId))
14+ let j = getString(this, ("Pair_UV_" + d))
15+ let k = fromBase58String(d)
16+ let l = valueOrErrorMessage(assetInfo(fromBase58String(d)), (("Asset " + d) + " doesn't exist"))
17+ if ((j == d))
18+ then throw("Pair Already Exist in List.")
19+ else if ((size(c.payments) != 2))
20+ then throw("Two attached assets expected as payment. Kindly Attach payment1 = WAVES Token & payment2 = Token you want to List.")
21+ else if (isDefined(f.assetId))
22+ then throw("Incorrect asset attached for Collateral, please attach WAVES only.")
23+ else if ((f.amount != 1000000000))
24+ then throw((((("You attached only " + toString(fraction(f.amount, 1, 100000000))) + ".") + toString(fraction(f.amount, 1, 10000000))) + " WAVES for Listing in payment[1], please attach 10 WAVES."))
25+ else if ((g.assetId != k))
26+ then throw("Input String & Attached AssetID in payment2 is not matching.")
27+ else if ((i == true))
28+ then throw("You Attached WAVES Asset ID for Listing, please attach Tokens You want to list in payment[2].")
29+ else [StringEntry(("Pair_UV_" + d), d), IntegerEntry(("Listing_Fee_" + d), f.amount), ScriptTransfer(b, f.amount, unit), IntegerEntry(((("Balance_of_" + d) + "_") + toBase58String(a)), 0), IntegerEntry(((("Balance_of_" + toBase58String(a)) + "_") + d), 0), IntegerEntry(("Total_of_Pair_Txns_" + d), 0), IntegerEntry(((("Total_Swap_Fee_Collected_" + d) + "_") + toBase58String(a)), 0), IntegerEntry(("Total_Swap_Fee_Collected_" + d), 0)]
1630 }
1731
1832
19-@Verifier(h)
20-func i () = sigVerify(h.bodyBytes, h.proofs[0], h.senderPublicKey)
33+
34+@Callable(c)
35+func IssueLPToken (d) = {
36+ let m = valueOrErrorMessage(getString(this, "LP_Admin_Rights"), "LP Admin Rights are Not Included into Smart Contract. Deploy Admin Rights First.")
37+ let n = toBase58String(c.caller.bytes)
38+ let o = valueOrErrorMessage(getString(this, ("Pair_UV_" + d)), "Asset not Found in Whitelisted Token")
39+ let l = valueOrErrorMessage(assetInfo(fromBase58String(d)), (("Asset " + d) + " doesn't exist"))
40+ let p = l.name
41+ let q = l.decimals
42+ let r = (1 * pow(10, 0, fraction((q + 6), 1, 2), 0, 0, CEILING))
43+ let s = Issue((("LP-" + take(p, 8)) + "-USDC"), (((("LP-" + p) + "-USDC") + " is a Liquidity Provider Token Issued Against ") + d), r, fraction((q + 6), 1, 2), true)
44+ let t = calculateAssetId(s)
45+ if ((m != n))
46+ then throw((("Your are not allowded to Issue LP Token. Only " + m) + " can issue the LP Token."))
47+ else if ((o != d))
48+ then throw("Pair is not available in List.")
49+ else [s, StringEntry(("LP_" + d), toBase58String(t)), IntegerEntry(("Total_LP_" + d), r)]
50+ }
51+
52+
53+
54+@Callable(c)
55+func SwapAssetToUSDCPairEntry (d) = {
56+ let n = toBase58String(c.caller.bytes)
57+ let u = if ((size(c.payments) == 1))
58+ then c.payments[0]
59+ else throw("Whitelisted Token is required as Attached payment[1].")
60+ let o = getString(this, ("Pair_UV_" + d))
61+ let v = getIntegerValue(this, ((("Balance_of_" + d) + "_") + toBase58String(a)))
62+ let w = getIntegerValue(this, ((("Balance_of_" + toBase58String(a)) + "_") + d))
63+ let x = fraction(v, w, (w + u.amount))
64+ let y = (v - x)
65+ let z = 3
66+ let A = ((y * z) / 1000)
67+ let B = ((y - A) - A)
68+ let C = {
69+ let D = getInteger(this, ((("Total_Swap_Fee_Collected_" + d) + "_") + toBase58String(a)))
70+ if ($isInstanceOf(D, "Int"))
71+ then {
72+ let E = D
73+ E
74+ }
75+ else 0
76+ }
77+ let F = ((C + A) + A)
78+ let G = {
79+ let D = getInteger(this, ((("Balance_of_" + toBase58String(a)) + "_") + d))
80+ if ($isInstanceOf(D, "Int"))
81+ then {
82+ let E = D
83+ E
84+ }
85+ else 0
86+ }
87+ let H = (w + u.amount)
88+ let I = {
89+ let D = getInteger(this, ((("Balance_of_" + d) + "_") + toBase58String(a)))
90+ if ($isInstanceOf(D, "Int"))
91+ then {
92+ let E = D
93+ E
94+ }
95+ else 0
96+ }
97+ let J = ((v - y) + A)
98+ let K = {
99+ let D = getIntegerValue(this, ("Total_of_Pair_Txns_" + d))
100+ if ($isInstanceOf(D, "Int"))
101+ then {
102+ let E = D
103+ E
104+ }
105+ else 0
106+ }
107+ let L = (K + 1)
108+ if ((d == toBase58String(a)))
109+ then throw("Input can Never be a USDC AssetID. Enter Whitelisted AssetID in input & Attach Whitelisted Asset as an attachment Token in payment[1].")
110+ else if ((o != d))
111+ then throw("Pair is not available in Whitelisted Asset.")
112+ else if ((u.assetId == a))
113+ then throw("You can't Attach USDC as an Attached Payment. Only Whitelisted Tokens are accepted.")
114+ else if ((u.assetId != fromBase58String(d)))
115+ then throw(("Incorrect asset attached, please attach or send " + d))
116+ else if ((v == 0))
117+ then throw("Swap Pair Need to Add Liquidity first into Pool. Only After that Pair will be activated for Swapping.")
118+ else if ((w == 0))
119+ then throw("Swap Pair Need to Add Liquidity first into Pool. Only After that Pair will be activated for Swapping.")
120+ else if ((100000 > y))
121+ then throw((("Your Attached Asset Amount is very low. Attach More " + d) + " Tokens to Claim the minimum Amount of 0.1 dollar atleast."))
122+ else if ((y > v))
123+ then throw((("Pool Only has a Liquidity of " + toString((v / pow(10, 0, 6, 0, 0, CEILING)))) + " USDC. Add Liquidity into Pool."))
124+ else [IntegerEntry(((("Total_Swap_Fee_Collected_" + d) + "_") + toBase58String(a)), F), IntegerEntry(("Total_of_Pair_Txns_" + d), L), IntegerEntry(((("Balance_of_" + toBase58String(a)) + "_") + d), H), IntegerEntry(((("Balance_of_" + d) + "_") + toBase58String(a)), J), ScriptTransfer(c.caller, B, a), ScriptTransfer(b, A, a)]
125+ }
126+
127+
128+
129+@Callable(c)
130+func SwapUSDCToAssetPairEntry (d) = {
131+ let n = toBase58String(c.caller.bytes)
132+ let u = if ((size(c.payments) == 1))
133+ then c.payments[0]
134+ else throw((("Only " + toBase58String(a)) + " USDC Token is required as an Attached payment[1]."))
135+ let v = getIntegerValue(this, ((("Balance_of_" + d) + "_") + toBase58String(a)))
136+ let w = getIntegerValue(this, ((("Balance_of_" + toBase58String(a)) + "_") + d))
137+ let M = fraction(v, w, (v + u.amount))
138+ let y = (w - M)
139+ let o = getString(this, ("Pair_UV_" + d))
140+ let z = 3
141+ let A = ((y * z) / 1000)
142+ let B = ((y - A) - A)
143+ let N = {
144+ let D = getInteger(this, ("Total_Swap_Fee_Collected_" + d))
145+ if ($isInstanceOf(D, "Int"))
146+ then {
147+ let E = D
148+ E
149+ }
150+ else 0
151+ }
152+ let O = ((N + A) + A)
153+ let G = {
154+ let D = getInteger(this, ((("Balance_of_" + toBase58String(a)) + "_") + d))
155+ if ($isInstanceOf(D, "Int"))
156+ then {
157+ let E = D
158+ E
159+ }
160+ else 0
161+ }
162+ let H = ((w - y) + A)
163+ let I = {
164+ let D = getInteger(this, ((("Balance_of_" + d) + "_") + toBase58String(a)))
165+ if ($isInstanceOf(D, "Int"))
166+ then {
167+ let E = D
168+ E
169+ }
170+ else 0
171+ }
172+ let J = (v + u.amount)
173+ let K = {
174+ let D = getIntegerValue(this, ("Total_of_Pair_Txns_" + d))
175+ if ($isInstanceOf(D, "Int"))
176+ then {
177+ let E = D
178+ E
179+ }
180+ else 0
181+ }
182+ let L = (K + 1)
183+ if ((o != d))
184+ then throw("Pair is not available in Whitelisted Asset.")
185+ else if ((d == toBase58String(a)))
186+ then throw("Input can Never be a USDC AssetID. Enter Whitelisted AssetID in input & Attach USDC as an attachment Token in payment[1].")
187+ else if ((u.assetId != a))
188+ then throw("You can Attach USDC as an Attached Payment[1] to Swap USDC To Required Token. Any other asset else than USDC will be rejected.")
189+ else if ((100000 > u.amount))
190+ then throw("Your Attached USDC Amount is very low. Attach Atleast 0.1 USDC to Claim the minimum Tokens.")
191+ else if ((v == 0))
192+ then throw("Swap Pair Need to Add Liquidity first into Pool. Only After that Pair will be activated for Swapping.")
193+ else if ((w == 0))
194+ then throw("Swap Pair Need to Add Liquidity first into Pool. Only After that Pair will be activated for Swapping.")
195+ else if ((y > w))
196+ then throw((("Pool Only has a Liquidity of " + toString(w)) + " Tokens. Add Liquidity into Pool."))
197+ else [IntegerEntry(("Total_Swap_Fee_Collected_" + d), O), IntegerEntry(("Total_of_Pair_Txns_" + d), L), IntegerEntry(((("Balance_of_" + toBase58String(a)) + "_") + d), H), IntegerEntry(((("Balance_of_" + d) + "_") + toBase58String(a)), J), ScriptTransfer(c.caller, B, fromBase58String(d)), ScriptTransfer(b, A, fromBase58String(d))]
198+ }
199+
200+
201+
202+@Callable(c)
203+func AddLiquidity (d) = {
204+ let n = toBase58String(c.caller.bytes)
205+ let f = value(c.payments[0])
206+ let g = value(c.payments[1])
207+ let o = getString(this, ("Pair_UV_" + d))
208+ let P = fromBase58String(valueOrErrorMessage(getString(this, ("LP_" + d)), "LP Token is Missing or May be not Generated."))
209+ let v = getIntegerValue(this, ((("Balance_of_" + d) + "_") + toBase58String(a)))
210+ let w = getIntegerValue(this, ((("Balance_of_" + toBase58String(a)) + "_") + d))
211+ let Q = valueOrErrorMessage(assetInfo(fromBase58String(d)), (("Asset " + d) + " doesn't exist"))
212+ let q = Q.decimals
213+ let R = v
214+ let S = w
215+ let T = pow((((R * 1000000) / S) * pow(10, 0, q, 0, 0, CEILING)), 0, 1, 0, 0, CEILING)
216+ let U = (6 + q)
217+ let V = (U / 2)
218+ let W = fraction(T, f.amount, pow(10, 0, U, 0, 0, CEILING))
219+ let X = pow((fraction(f.amount, 1, pow(10, 0, q, 0, 0, CEILING)) * fraction(g.amount, 1, pow(10, 0, 6, 0, 0, CEILING))), 0, 5, 1, V, DOWN)
220+ let Y = {
221+ let D = getInteger(this, ((("Balance_of_" + d) + "_") + toBase58String(a)))
222+ if ($isInstanceOf(D, "Int"))
223+ then {
224+ let E = D
225+ E
226+ }
227+ else 0
228+ }
229+ let Z = (Y + g.amount)
230+ let aa = {
231+ let D = getInteger(this, ((("Balance_of_" + toBase58String(a)) + "_") + d))
232+ if ($isInstanceOf(D, "Int"))
233+ then {
234+ let E = D
235+ E
236+ }
237+ else 0
238+ }
239+ let ab = (aa + f.amount)
240+ let ac = {
241+ let D = getIntegerValue(this, ("Total_LP_" + d))
242+ if ($isInstanceOf(D, "Int"))
243+ then {
244+ let E = D
245+ E
246+ }
247+ else 0
248+ }
249+ let ad = (ac + X)
250+ if ((o != d))
251+ then throw("Pair is not available in Whitelisted Asset.")
252+ else if ((d == toBase58String(a)))
253+ then throw("Input can Never be a USDC AssetID. Enter Whitelisted AssetID in input as well as in payment[1] & Attach USDC as an attachment Token in payment[2].")
254+ else if ((size(c.payments) != 2))
255+ then throw("Two attached assets expected as payment in 50%-50%. Kindly Attach payment1 = Token you want to add for Liquidity & payment2 = Equivalent Amount of USDC Token.")
256+ else if ((f.assetId == a))
257+ then throw("You Attached USDC asset in payment[1], please attach only whitelisted Token in payment[1] along with USDC in payment[2].")
258+ else if ((f.assetId != fromBase58String(d)))
259+ then throw("Incorrect asset attached for Liquidity in payment[1], please attach String Asset or Whitelisted Token only.")
260+ else if ((f.assetId != fromBase58String(d)))
261+ then throw("Incorrect asset attached for Liquidity in payment[1], please attach String Asset or Whitelisted Token only.")
262+ else if ((g.assetId != a))
263+ then throw("Wrong Asset Attached in payments[2], Please attach payment[1] = Liquidity Token & payment[2] = USDC Token.")
264+ else if ((5000000 > g.amount))
265+ then throw("please attach atleast 5 USDC in payment[2] & Equivalent worth of Token in payment[1]")
266+ else if ((g.amount != W))
267+ then throw((((((("Attached payment[2] qty is not matching as per attached payment[1].payment[2] must be as int [" + toString(W)) + "] or ") + toString(fraction(W, 1, 1000000))) + ".") + takeRight(toString(W), 6)) + " USDC."))
268+ else if ((1 > X))
269+ then throw((("LP Token Outcome is going below " + toString(V)) + " Decimals. Please Attach min. 1 LP token or 5 USDC Atleast."))
270+ else [IntegerEntry(((("Balance_of_" + d) + "_") + toBase58String(a)), Z), IntegerEntry(((("Balance_of_" + toBase58String(a)) + "_") + d), ab), IntegerEntry(("Total_LP_" + d), ad), Reissue(P, X, true), ScriptTransfer(c.caller, X, P)]
271+ }
272+
273+
274+
275+@Callable(c)
276+func RemoveLiquidity (d) = {
277+ let n = toBase58String(c.caller.bytes)
278+ let u = if ((size(c.payments) == 1))
279+ then c.payments[0]
280+ else throw("No payment attached, Please Attach LP Token as payment[1].")
281+ let o = getString(this, ("Pair_UV_" + d))
282+ let ae = fromBase58String(valueOrErrorMessage(getString(this, ("LP_" + d)), "LP Token is Missing or not Generated."))
283+ let Q = valueOrErrorMessage(assetInfo(fromBase58String(d)), (("Asset " + d) + " doesn't exist"))
284+ let q = Q.decimals
285+ let U = (6 + q)
286+ let V = (U / 2)
287+ let af = getIntegerValue(this, ("Total_LP_" + d))
288+ let ag = pow(fraction(u.amount, pow(10, 0, 8, 0, 0, CEILING), af), 6, 1, 0, 6, CEILING)
289+ let v = getIntegerValue(this, ((("Balance_of_" + d) + "_") + toBase58String(a)))
290+ let w = getIntegerValue(this, ((("Balance_of_" + toBase58String(a)) + "_") + d))
291+ let ah = fraction(v, ag, pow(10, 0, 8, 0, 0, CEILING))
292+ let ai = fraction(w, ag, pow(10, 0, 8, 0, 0, CEILING))
293+ let Y = {
294+ let D = getInteger(this, ((("Balance_of_" + d) + "_") + toBase58String(a)))
295+ if ($isInstanceOf(D, "Int"))
296+ then {
297+ let E = D
298+ E
299+ }
300+ else 0
301+ }
302+ let Z = (Y - ah)
303+ let aa = {
304+ let D = getInteger(this, ((("Balance_of_" + toBase58String(a)) + "_") + d))
305+ if ($isInstanceOf(D, "Int"))
306+ then {
307+ let E = D
308+ E
309+ }
310+ else 0
311+ }
312+ let ab = (aa - ai)
313+ let ac = {
314+ let D = getIntegerValue(this, ("Total_LP_" + d))
315+ if ($isInstanceOf(D, "Int"))
316+ then {
317+ let E = D
318+ E
319+ }
320+ else 0
321+ }
322+ let ad = (ac - u.amount)
323+ if ((o != d))
324+ then throw("Pair is not available in Whitelist.")
325+ else if ((fromBase58String(d) == a))
326+ then throw("Don't choose USDC AssetID as Input, Only Whitelisted Asset as Input String & Attach LP Tokens as payment[1]")
327+ else if ((u.assetId != ae))
328+ then throw("Wrong Asset is attached in payment[1] or LP Token Not Found or Missing.")
329+ else if ((1 > ag))
330+ then throw("Your LP Token amount % is very low to convert.")
331+ else if ((1 > ah))
332+ then throw("Your LP Token conversion amount is very low to convert or less than 0.000001 USDC.")
333+ else if ((1 > ai))
334+ then throw("Your LP Token conversion amount is very low to convert or less than fraction value of Token.")
335+ else [IntegerEntry("Withdraw_LP_Percentage", ag), Burn(ae, u.amount), IntegerEntry(("Total_LP_" + d), ad), IntegerEntry(((("Balance_of_" + d) + "_") + toBase58String(a)), Z), IntegerEntry(((("Balance_of_" + toBase58String(a)) + "_") + d), ab), ScriptTransfer(c.caller, ah, a), ScriptTransfer(c.caller, ai, fromBase58String(d))]
336+ }
337+
338+
339+@Verifier(aj)
340+func ak () = sigVerify(aj.bodyBytes, aj.proofs[0], aj.senderPublicKey)
21341

github/deemru/w8io/169f3d6 
41.96 ms