tx · 3AF4QCzJ2Fpvh6QERPbz1DDUSiNZh3tzfYqCVsGuru6N

3MqzpRGNBq3GSxMonFoenAhNRDHJ2a8omm1:  -0.05000000 Waves

2023.08.23 13:53 [2723185] smart account 3MqzpRGNBq3GSxMonFoenAhNRDHJ2a8omm1 > SELF 0.00000000 Waves

{ "type": 13, "id": "3AF4QCzJ2Fpvh6QERPbz1DDUSiNZh3tzfYqCVsGuru6N", "fee": 5000000, "feeAssetId": null, "timestamp": 1692788038279, "version": 2, "chainId": 84, "sender": "3MqzpRGNBq3GSxMonFoenAhNRDHJ2a8omm1", "senderPublicKey": "Cm1uVVKocYw3S4eL9bYUMNZe5vpBPipgiiTx37eL6E8F", "proofs": [ "4hxw2HaJp4MXSGKn7n7nfDd7XvvUdRtxsTai4yYtxGkxQR23qT3EJt6gJXX9mkf4sRi5HYJH9BgXBfB65Cd2aD71", "4U9XZi135H55UcaFFCiLPP2eKKTDNn1e9GMiLKUmLhqDKtUSeYmZ5fzwPtFmWU8hFrov492c2K3HaPhhb54jffKm" ], "script": "base64:BgJQCAISBAoCAQgSAwoBCBIUChIIAQEIAQEBAQEBAQEYBAEBBBgSBAoCAQgSBAoCAQgSBAoCAQgSBQoDAQEIEgMKAQESAwoBARIECgIBARIAEgBOAAlrZXlBY3RpdmUCBmFjdGl2ZQALa0FjdGl2ZUdsb2ICFGFjdGl2ZV9hbGxfY29udHJhY3RzAA9rZXlBZG1pblB1YktleTECC2FkbWluX3B1Yl8xAA9rZXlBZG1pblB1YktleTICC2FkbWluX3B1Yl8yAA9rZXlBZG1pblB1YktleTMCC2FkbWluX3B1Yl8zACFrZXlMYXVuY2hwYWREYXRhVHJhbnNhY3Rpb25TdGF0dXMCIWxhdW5jaHBhZF9kYXRhX3RyYW5zYWN0aW9uX3N0YXR1cwASa2V5TGF1bmNocGFkTmV4dElkAhFsYXVuY2hwYWRfbmV4dF9pZAAUa2V5TGF1bmNocGFkQWN0aXZlSWQCE2xhdW5jaHBhZF9hY3RpdmVfaWQADWtleUluaXRDYWxsZXICC2luaXRfY2FsbGVyAAprZXlBZGRyZXNzAghfYWRkcmVzcwANa2V5SW5pdEhlaWdodAIMX2luaXRfaGVpZ2h0AA5rZXlTdGFydEhlaWdodAINX3N0YXJ0X2hlaWdodAARa2V5RmluYWxpc2VIZWlnaHQCEF9maW5hbGlzZV9oZWlnaHQADGtleUNvbWlzc2lvbgIKX2NvbWlzc2lvbgAKa2V5QXNzZXRJZAIJX2Fzc2V0X2lkABNrZXlUb3RhbFRva2VuQW1vdW50AhNfdG90YWxfdG9rZW5fYW1vdW50ABprZXlUb3RhbEFtb3VudEJ1eUFzc2V0U29sZAIVX3RvdGFsX2J1eV9hc3NldF9zb2xkABJrZXlUb2tlbnNQZXJUaWNrZXQCEl90b2tlbnNfcGVyX3RpY2tldAAQa2V5UHJpY2VQZXJUb2tlbgIQX3ByaWNlX3Blcl90b2tlbgAQa2V5U3dvcFBlclRpY2tldAIQX3N3b3BfcGVyX3RpY2tldAAWa2V5U3dvcGZpVGlja2V0c0Ftb3VudAIXX3RpY2tldHNfc3dvcGZpX21lbWJlcnMAF2tleUNhbXBhaWduVG9rZW5zQW1vdW50AhNfdG9rZW5zX2FjY2Vzc19saXN0ABZrZXlUb2tlbnNQZXJBbGxvY2F0aW9uAhZfdG9rZW5zX3Blcl9hbGxvY2F0aW9uABNrZXlUaWNrZXRMYXN0TnVtYmVyAhNfdGlja2V0X2xhc3RfbnVtYmVyABNrZXlHb3Zlcm5hbmNlU3Rha2VkAg1fR1N3b3BfYW1vdW50AAxrZXlVc2VyUmVmSWQCB19yZWZfaWQADWtleVZlcmlmeUhhc2gCDF92ZXJpZnlfaGFzaAALa2V5RHVyYXRpb24CCV9kdXJhdGlvbgAca2V5QW1vdW50QnV5QXNzZXRJbk1hcmtldGluZwInX3RvdGFsX3B1cmNoYXNlZF9idXlfYXNzZXRfaW5fbWFya2V0aW5nACVrZXlBbW91bnRCdXlBc3NldEluTWFya2V0aW5nRmluYWxpemVkAjFfdG90YWxfcHVyY2hhc2VkX2J1eV9hc3NldF9pbl9tYXJrZXRpbmdfZmluYWxpemVkABNrZXlUcmFuc2ZlckJ1eUFzc2V0AhNfdHJhbnNmZXJfYnV5X2Fzc2V0ABRrZXlGcmVlelN3b3BEdXJhdGlvbgIVX2ZyZWV6ZV9zd29wX2R1cmF0aW9uABhrZXlGcmVlemVBZGRpdGlvbmFsVG9rZW4CGF9mcmVlemVfYWRkaXRpb25hbF90b2tlbgAQa2V5RnJlZXplVG9rZW5JZAIQX2ZyZWV6ZV90b2tlbl9pZAAWa2V5RnJlZXplVG9rZW5EdXJhdGlvbgIWX2ZyZWV6ZV90b2tlbl9kdXJhdGlvbgAXa2V5RnJlZXplVG9rZW5QZXJUaWNrZXQCGF9mcmVlemVfdG9rZW5fcGVyX3RpY2tldAALa2V5QnV5VG9rZW4CCl9idXlfdG9rZW4ADmtleUNsYWltUGFyYW1zAg1fY2xhaW1fcGFyYW1zABtrZXlIaWdoQ29tcGV0aXRpb25Db21pc3Npb24CG19oaWdoX2NvbXBldGl0aW9uX2NvbWlzc2lvbgAWa2V5SGlnaENvbXBldGl0aW9uU2FsZQIWX2hpZ2hfY29tcGV0aXRpb25fc2FsZQAVa2V5SENUaWNrZXRMYXN0TnVtYmVyAiRfaGlnaF9jb21wZXRpdGlvbl90aWNrZXRfbGFzdF9udW1iZXIAGGtleUhpZ2hDb21wZXRpdGlvbkFtb3VudAIZX3RpY2tldHNfaGlnaF9jb21wZXRpdGlvbgAca2V5VG90YWxBbW91bnRCdXlBc3NldFNvbGRIQwImX3RvdGFsX2J1eV9hc3NldF9zb2xkX2hpZ2hfY29tcGV0aXRpb24AFGtleVVzZXJDbGFpbWVkVG9rZW5zAg9fY2xhaW1lZF90b2tlbnMAF2tleVVzZXJDbGFpbWVkQnV5VG9rZW5zAhNfY2xhaW1lZF9idXlfdG9rZW5zABprZXlVc2VyQm91Z2h0VGlja2V0c0Ftb3VudAIPX2JvdWdodF90aWNrZXRzAA5rZXlVc2VyVGlja2V0cwIPX3RpY2tldHNfbnVtYmVyABBrZXlVc2VySENUaWNrZXRzAiBfdGlja2V0c19udW1iZXJfaGlnaF9jb21wZXRpdGlvbgAca2V5VXNlckhDQm91Z2h0VGlja2V0c0Ftb3VudAIgX2JvdWdodF90aWNrZXRzX2hpZ2hfY29tcGV0aXRpb24AG2tleVVzZXJBdmFpbGFibGVBbGxvY2F0aW9ucwIdX2F2YWlsYWJsZV9wdXJjaGFzZV9tYXJrZXRpbmcAIGtleVVzZXJBbW91bnRCdXlBc3NldEluTWFya2V0aW5nAiFfcHVyY2hhc2VkX2J1eV9hc3NldF9pbl9tYXJrZXRpbmcAGGtleVVzZXJCb3VnaHRBbGxvY2F0aW9ucwITX2JvdWdodF9hbGxvY2F0aW9ucwASa2V5VXNlckNsYWltU3RhdHVzAg1fY2xhaW1fc3RhdHVzABprZXlVc2VyV2lubmVkVGlja2V0c0Ftb3VudAIPX3RpY2tldHNfcmVzdWx0AClrZXlVc2VyV2lubmVkSGlnaENvbXBldGl0aW9uVGlja2V0c0Ftb3VudAIgX3RpY2tldHNfcmVzdWx0X2hpZ2hfY29tcGV0aXRpb24AEmtleVVzZXJGcmVlemVUb2tlbgIUX2ZyZWV6ZV90b2tlbl9hbW91bnQABm9yYWNsZQkBB0FkZHJlc3MBARoBVEgTlwzA0zPMJTKAtin3p2RogKvjzHtLmQAKZ292ZXJuYW5jZQkBB0FkZHJlc3MBARoBVMjcuWCotbWVPLfydaKVHLjfUPyH4RW0IgAQY29tbWlzc2lvbldhbGxldAkBB0FkZHJlc3MBARoBVIu67/x0Qcp5qolR7D86Zc0NPlB1AJuHDgASc3Rha2luZ1VTRE5BZGRyZXNzCQEHQWRkcmVzcwEBGgFUyzDUI2tI0RnhEQqOmg6HEPqnSokkZ5v9AARVU0ROASA0ARNWjmBG4n5bqbgBR4LnsQAmEpt25E5LoqB8nG3ugQASYWRtaW5QdWJLZXlTdGFraW5nASAEz3XlZNDBD05nuR8TZMQaDeqEJEIxfTOQXUBYCp2TSgAMV0FWRVNfWFROX0VYCQEHQWRkcmVzcwEBGgFUE+06HqYmRCC3D4wq0lzrbsHxoPvs0AmgABRtYXhBbGxvY2F0aW9uc0Ftb3VudAACABFhY3RpdmVMYXVuY2hwYWRJZAkBC3ZhbHVlT3JFbHNlAgkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwUUa2V5TGF1bmNocGFkQWN0aXZlSWQA////////////AQELZ2V0QWRtaW5QdWIBC2tleUFkbWluUHViBAckbWF0Y2gwCQCdCAIFBm9yYWNsZQULa2V5QWRtaW5QdWIDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAZzdHJpbmcFByRtYXRjaDAJANkEAQUGc3RyaW5nBAdub3RoaW5nBQckbWF0Y2gwCQACAQIZQWRtaW4gcHVibGljIGtleSBpcyBlbXB0eQAMYWRtaW5QdWJLZXkxCQELZ2V0QWRtaW5QdWIBBQ9rZXlBZG1pblB1YktleTEADGFkbWluUHViS2V5MgkBC2dldEFkbWluUHViAQUPa2V5QWRtaW5QdWJLZXkyAAxhZG1pblB1YktleTMJAQtnZXRBZG1pblB1YgEFD2tleUFkbWluUHViS2V5MwEMZ2V0QXNzZXRJbmZvAQdhc3NldElkBAckbWF0Y2gwBQdhc3NldElkAwkAAQIFByRtYXRjaDACCkJ5dGVWZWN0b3IEAmlkBQckbWF0Y2gwBAhzdHJpbmdJZAkA2AQBBQJpZAQEaW5mbwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFAmlkCQCsAgIJAKwCAgIGQXNzZXQgBQhzdHJpbmdJZAIOIGRvZXNuJ3QgZXhpc3QJAJUKAwUIc3RyaW5nSWQIBQRpbmZvBG5hbWUIBQRpbmZvCGRlY2ltYWxzAwkAAQIFByRtYXRjaDACBFVuaXQEBXdhdmVzBQckbWF0Y2gwCQCVCgMCBVdBVkVTAgVXQVZFUwAICQACAQILTWF0Y2ggZXJyb3IBEmdldExhdW5jaHBhZE5leHRJZAAJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUSa2V5TGF1bmNocGFkTmV4dElkAAEBEHN0YWtlZFVzZG5BbW91bnQACQELdmFsdWVPckVsc2UCCQCaCAIFEnN0YWtpbmdVU0ROQWRkcmVzcwkArAICCQCsAgIJAKwCAgIMcnBkX2JhbGFuY2VfCQDYBAEFBFVTRE4CAV8JAKUIAQUEdGhpcwAAAAZhY3RpdmUJAQt2YWx1ZU9yRWxzZQIJAJsIAgUEdGhpcwUJa2V5QWN0aXZlBgAKYWN0aXZlR2xvYgkBC3ZhbHVlT3JFbHNlAgkAmwgCBQZvcmFjbGUFC2tBY3RpdmVHbG9iBgEIaXNBY3RpdmUAAwMFBmFjdGl2ZQUKYWN0aXZlR2xvYgcFBHVuaXQJAAIBAh9EQXBwIGlzIGluYWN0aXZlIGF0IHRoaXMgbW9tZW50AQtpc0FkbWluQ2FsbAEBaQMJAQ9jb250YWluc0VsZW1lbnQCCQDMCAIFDGFkbWluUHViS2V5MQkAzAgCBQxhZG1pblB1YktleTIJAMwIAgUMYWRtaW5QdWJLZXkzBQNuaWwIBQFpD2NhbGxlclB1YmxpY0tleQUEdW5pdAkAAgECIU9ubHkgYWRtaW4gY2FuIGNhbGwgdGhpcyBmdW5jdGlvbgEWZ2V0QXNzZXRJbmZvRnJvbVN0cmluZwEIYXNzZXRTdHIDCQAAAgUIYXNzZXRTdHICBVdBVkVTCQCWCgQFBHVuaXQCBVdBVkVTAgVXQVZFUwAIBAhzdHJpbmdJZAUIYXNzZXRTdHIEAmlkCQDZBAEFCGFzc2V0U3RyBARpbmZvCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCaWQJAKwCAgkArAICAgZBc3NldCAFCHN0cmluZ0lkAg4gZG9lc24ndCBleGlzdAkAlgoEBQJpZAUIc3RyaW5nSWQIBQRpbmZvBG5hbWUIBQRpbmZvCGRlY2ltYWxzAQpidXlJbldhdmVzAwtsYXVuY2hwYWRJZA10aWNrZXRzQW1vdW50BHR5cGUECyR0MDUxNTk1MzA5CQEWZ2V0QXNzZXRJbmZvRnJvbVN0cmluZwEJAQV2YWx1ZQEJAJ0IAgUEdGhpcwkArAICCQCkAwEFC2xhdW5jaHBhZElkBQtrZXlCdXlUb2tlbgQKYnV5QXNzZXRJZAgFCyR0MDUxNTk1MzA5Al8xBA1idXlBc3NldFN0cklkCAULJHQwNTE1OTUzMDkCXzIEDGJ1eUFzc2V0TmFtZQgFCyR0MDUxNTk1MzA5Al8zBBBidXlBc3NldERlY2ltYWxzCAULJHQwNTE1OTUzMDkCXzQECnRva2VuUHJpY2UJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAKwCAgkApAMBBQtsYXVuY2hwYWRJZAUQa2V5UHJpY2VQZXJUb2tlbgQPdG9rZW5zUGVyVGlja2V0CQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQCsAgIJAKQDAQULbGF1bmNocGFkSWQFEmtleVRva2Vuc1BlclRpY2tldAQLJHQwNTQ5MTU2MzUJARZnZXRBc3NldEluZm9Gcm9tU3RyaW5nAQkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwkArAICCQCkAwEFC2xhdW5jaHBhZElkBQprZXlBc3NldElkBAd0b2tlbklkCAULJHQwNTQ5MTU2MzUCXzEED3Rva2VuU3RyQXNzZXRJZAgFCyR0MDU0OTE1NjM1Al8yBA50b2tlbkFzc2V0TmFtZQgFCyR0MDU0OTE1NjM1Al8zBA10b2tlbkRlY2ltYWxzCAULJHQwNTQ5MTU2MzUCXzQEC3RpY2tldFByaWNlCQBrAwUPdG9rZW5zUGVyVGlja2V0BQp0b2tlblByaWNlCQBsBgAKAAAFDXRva2VuRGVjaW1hbHMAAAAABQRET1dOBBNjb21taXNzaW9uUGVyVGlja2V0AwkAAAIFBHR5cGUAAQkAawMFC3RpY2tldFByaWNlCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQCsAgIJAKQDAQULbGF1bmNocGFkSWQFDGtleUNvbWlzc2lvbgBkCQBrAwULdGlja2V0UHJpY2UJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAKwCAgkApAMBBQtsYXVuY2hwYWRJZAUba2V5SGlnaENvbXBldGl0aW9uQ29taXNzaW9uAGQEEGFtbnRUb0dldFRpY2tldHMJAGgCBQ10aWNrZXRzQW1vdW50CQBkAgULdGlja2V0UHJpY2UFE2NvbW1pc3Npb25QZXJUaWNrZXQECWFtbnRUb1BheQoAAUAJAJEDAgoAAUAJAPwHBAUMV0FWRVNfWFROX0VYAgxjYWxsRnVuY3Rpb24JAMwIAgIVaG93TWFueVlvdVBheVJFQURPTkxZCQDMCAIJAMwIAgkApAMBBRBhbW50VG9HZXRUaWNrZXRzCQDMCAIFCmJ1eUFzc2V0SWQFA25pbAUDbmlsBQNuaWwDCQABAgUBQAIJTGlzdFtBbnldBQFACQACAQkArAICCQADAQUBQAIeIGNvdWxkbid0IGJlIGNhc3QgdG8gTGlzdFtBbnldAAADCQABAgUBQAIDSW50BQFACQACAQkArAICCQADAQUBQAIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50AwkAAAIFCWFtbnRUb1BheQUJYW1udFRvUGF5CQBrAwUJYW1udFRvUGF5AGUAZAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgwBaQENaGFzaGluZ1JhbmRvbQILbGF1bmNocGFkSWQEaGFzaAkBC3ZhbHVlT3JFbHNlAgkBCGlzQWN0aXZlAAkBC3ZhbHVlT3JFbHNlAgkBC2lzQWRtaW5DYWxsAQUBaQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKQDAQULbGF1bmNocGFkSWQFDWtleVZlcmlmeUhhc2gFBGhhc2gFA25pbAFpAQppbml0Q2FsbGVyAQdhZGRyZXNzCQELdmFsdWVPckVsc2UCCQEIaXNBY3RpdmUACQELdmFsdWVPckVsc2UCCQELaXNBZG1pbkNhbGwBBQFpCQDMCAIJAQtTdHJpbmdFbnRyeQIFDWtleUluaXRDYWxsZXIFB2FkZHJlc3MFA25pbAFpAQRpbml0Eg5wcm9qZWN0QWRkcmVzcwtzdGFydEhlaWdodAhkdXJhdGlvbghidXlUb2tlbgpjb21taXNzaW9uD3Rva2Vuc1BlclRpY2tldA1wcmljZVBlclRva2VuE3N3b3BmaVRpY2tldHNBbW91bnQUY2FtcGFpZ25Ub2tlbnNBbW91bnQTdG9rZW5zUGVyQWxsb2NhdGlvbg1zd29wUGVyVGlja2V0EnN3b3BGcmVlemVEdXJhdGlvbgtjbGFpbVBhcmFtcxNIaWdoQ29tcGV0aXRpb25TYWxlGGhpZ2hDb21wZXRpdGlvbkNvbWlzc2lvbhxoaWdoQ29tcGV0aXRpb25UaWNrZXRzQW1vdW50FWZyZWV6ZUFkZGl0aW9uYWxUb2tlbgxmcmVlemVQYXJhbXMJAQt2YWx1ZU9yRWxzZQIJAQhpc0FjdGl2ZQADCQECIT0CCQClCAEIBQFpBmNhbGxlcgkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzBQ1rZXlJbml0Q2FsbGVyAgAJAAIBAilPbmx5IHByb2plY3QgYWRtaW4gY2FuIGNhbGwgaW5pdCBmdW5jdGlvbgMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECHU9uZSBhdHRhY2hlZCBwYXltZW50IGV4cGVjdGVkAwkAZgIFBmhlaWdodAULc3RhcnRIZWlnaHQJAAIBAjNTdGFydCBoZWlnaHQgbXVzdCBiZSBncmVhdGVyIHRoYW4gYmxvY2tjaGFpbiBoZWlnaHQDAwUVZnJlZXplQWRkaXRpb25hbFRva2VuCQECIT0CCQCQAwEFDGZyZWV6ZVBhcmFtcwADBwkAAgECJEZyZWV6ZSBwYXJhbXMgbGlzdCBtdXN0IGhhdmUgMyBpdGVtcwQLbGF1bmNocGFkSWQJARJnZXRMYXVuY2hwYWROZXh0SWQABA5sYXVuY2hwYWRJZFN0cgkApAMBBQtsYXVuY2hwYWRJZAQLJHQwNzc4OTc4NjQJAJQKAggJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAQJcG10QW1vdW50CAULJHQwNzc4OTc4NjQCXzEECnBtdEFzc2V0SWQIBQskdDA3Nzg5Nzg2NAJfMgQLJHQwNzg3Mzc5NDYJAQxnZXRBc3NldEluZm8BBQpwbXRBc3NldElkBA1wbXRTdHJBc3NldElkCAULJHQwNzg3Mzc5NDYCXzEEDHBtdEFzc2V0TmFtZQgFCyR0MDc4NzM3OTQ2Al8yBAtwbXREZWNpbWFscwgFCyR0MDc4NzM3OTQ2Al8zBBVmcmVlemVBZGRpdGlvbmFsRW50cnkDBRVmcmVlemVBZGRpdGlvbmFsVG9rZW4JAMwIAgkBDEJvb2xlYW5FbnRyeQIJAKwCAgUObGF1bmNocGFkSWRTdHIFGGtleUZyZWV6ZUFkZGl0aW9uYWxUb2tlbgYJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQ5sYXVuY2hwYWRJZFN0cgUQa2V5RnJlZXplVG9rZW5JZAkAkQMCBQxmcmVlemVQYXJhbXMAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQ5sYXVuY2hwYWRJZFN0cgUWa2V5RnJlZXplVG9rZW5EdXJhdGlvbgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFDGZyZWV6ZVBhcmFtcwABCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFDmxhdW5jaHBhZElkU3RyBRdrZXlGcmVlemVUb2tlblBlclRpY2tldAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFDGZyZWV6ZVBhcmFtcwACBQNuaWwFA25pbAkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFDXBtdFN0ckFzc2V0SWQCCl9sYXVuY2hwYWQFC2xhdW5jaHBhZElkCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRJrZXlMYXVuY2hwYWROZXh0SWQJAGQCBQtsYXVuY2hwYWRJZAABCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUObGF1bmNocGFkSWRTdHIFCmtleUFkZHJlc3MFDnByb2plY3RBZGRyZXNzCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFDmxhdW5jaHBhZElkU3RyBQ1rZXlJbml0SGVpZ2h0BQZoZWlnaHQJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUObGF1bmNocGFkSWRTdHIFDmtleVN0YXJ0SGVpZ2h0BQtzdGFydEhlaWdodAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQ5sYXVuY2hwYWRJZFN0cgULa2V5RHVyYXRpb24FCGR1cmF0aW9uCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUObGF1bmNocGFkSWRTdHIFC2tleUJ1eVRva2VuBQhidXlUb2tlbgkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQ5sYXVuY2hwYWRJZFN0cgUUa2V5RnJlZXpTd29wRHVyYXRpb24FEnN3b3BGcmVlemVEdXJhdGlvbgkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQ5sYXVuY2hwYWRJZFN0cgUTa2V5VG90YWxUb2tlbkFtb3VudAUJcG10QW1vdW50CQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUObGF1bmNocGFkSWRTdHIFCmtleUFzc2V0SWQFDXBtdFN0ckFzc2V0SWQJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUObGF1bmNocGFkSWRTdHIFDGtleUNvbWlzc2lvbgUKY29tbWlzc2lvbgkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQ5sYXVuY2hwYWRJZFN0cgUTa2V5VGlja2V0TGFzdE51bWJlcgAACQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFDmxhdW5jaHBhZElkU3RyBRVrZXlIQ1RpY2tldExhc3ROdW1iZXIAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQ5sYXVuY2hwYWRJZFN0cgUSa2V5VG9rZW5zUGVyVGlja2V0BQ90b2tlbnNQZXJUaWNrZXQJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUObGF1bmNocGFkSWRTdHIFEGtleVByaWNlUGVyVG9rZW4FDXByaWNlUGVyVG9rZW4JAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUObGF1bmNocGFkSWRTdHIFEGtleVN3b3BQZXJUaWNrZXQFDXN3b3BQZXJUaWNrZXQJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUObGF1bmNocGFkSWRTdHIFFmtleVN3b3BmaVRpY2tldHNBbW91bnQFE3N3b3BmaVRpY2tldHNBbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUObGF1bmNocGFkSWRTdHIFF2tleUNhbXBhaWduVG9rZW5zQW1vdW50BRRjYW1wYWlnblRva2Vuc0Ftb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQ5sYXVuY2hwYWRJZFN0cgUWa2V5VG9rZW5zUGVyQWxsb2NhdGlvbgUTdG9rZW5zUGVyQWxsb2NhdGlvbgkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFDmxhdW5jaHBhZElkU3RyBQ5rZXlDbGFpbVBhcmFtcwkAuQkCBQtjbGFpbVBhcmFtcwIBLAkAzAgCCQEMQm9vbGVhbkVudHJ5AgkArAICBQ5sYXVuY2hwYWRJZFN0cgUWa2V5SGlnaENvbXBldGl0aW9uU2FsZQUTSGlnaENvbXBldGl0aW9uU2FsZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQ5sYXVuY2hwYWRJZFN0cgUba2V5SGlnaENvbXBldGl0aW9uQ29taXNzaW9uBRhoaWdoQ29tcGV0aXRpb25Db21pc3Npb24JAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUObGF1bmNocGFkSWRTdHIFGGtleUhpZ2hDb21wZXRpdGlvbkFtb3VudAUcaGlnaENvbXBldGl0aW9uVGlja2V0c0Ftb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgUUa2V5TGF1bmNocGFkQWN0aXZlSWQFC2xhdW5jaHBhZElkCQDMCAIJAQtTdHJpbmdFbnRyeQIFDWtleUluaXRDYWxsZXICAAUDbmlsBRVmcmVlemVBZGRpdGlvbmFsRW50cnkBaQEQY29tbWl0U3dvcGZpU2FsZQILbGF1bmNocGFkSWQFcmVmSWQJAQt2YWx1ZU9yRWxzZQIJAQhpc0FjdGl2ZQAECnRva2VuUHJpY2UJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAKwCAgkApAMBBQtsYXVuY2hwYWRJZAUQa2V5UHJpY2VQZXJUb2tlbgQPdG9rZW5zUGVyVGlja2V0CQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQCsAgIJAKQDAQULbGF1bmNocGFkSWQFEmtleVRva2Vuc1BlclRpY2tldAQNJHQwMTA3MjkxMDg3MwkBFmdldEFzc2V0SW5mb0Zyb21TdHJpbmcBCQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzCQCsAgIJAKQDAQULbGF1bmNocGFkSWQFCmtleUFzc2V0SWQEB3Rva2VuSWQIBQ0kdDAxMDcyOTEwODczAl8xBA90b2tlblN0ckFzc2V0SWQIBQ0kdDAxMDcyOTEwODczAl8yBA50b2tlbkFzc2V0TmFtZQgFDSR0MDEwNzI5MTA4NzMCXzMEDXRva2VuRGVjaW1hbHMIBQ0kdDAxMDcyOTEwODczAl80BAt0aWNrZXRQcmljZQkAawMFD3Rva2Vuc1BlclRpY2tldAUKdG9rZW5QcmljZQkAbAYACgAABQ10b2tlbkRlY2ltYWxzAAAAAAUERE9XTgQTY29tbWlzc2lvblBlclRpY2tldAkAawMFC3RpY2tldFByaWNlCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQCsAgIJAKQDAQULbGF1bmNocGFkSWQFDGtleUNvbWlzc2lvbgBkBA0kdDAxMTA5MDExMjQwCQEWZ2V0QXNzZXRJbmZvRnJvbVN0cmluZwEJAQV2YWx1ZQEJAJ0IAgUEdGhpcwkArAICCQCkAwEFC2xhdW5jaHBhZElkBQtrZXlCdXlUb2tlbgQKYnV5QXNzZXRJZAgFDSR0MDExMDkwMTEyNDACXzEEDWJ1eUFzc2V0U3RySWQIBQ0kdDAxMTA5MDExMjQwAl8yBAxidXlBc3NldE5hbWUIBQ0kdDAxMTA5MDExMjQwAl8zBBBidXlBc3NldERlY2ltYWxzCAUNJHQwMTEwOTAxMTI0MAJfNAQLc3Rha2VkU3dvcHMJAQt2YWx1ZU9yRWxzZQIJAJoIAgUKZ292ZXJuYW5jZQkArAICCQClCAEIBQFpBmNhbGxlcgUTa2V5R292ZXJuYW5jZVN0YWtlZAAABBdhbGxvd2VkVGlja2V0c0Ftb3VudEFsbAkAaQIFC3N0YWtlZFN3b3BzCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQCsAgIJAKQDAQULbGF1bmNocGFkSWQFEGtleVN3b3BQZXJUaWNrZXQEE2JvdWdodFRpY2tldHNBbW91bnQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICCQCsAgIJAKwCAgkApQgBCAUBaQZjYWxsZXICAV8JAKQDAQULbGF1bmNocGFkSWQFGmtleVVzZXJCb3VnaHRUaWNrZXRzQW1vdW50AAAEFGFsbG93ZWRUaWNrZXRzQW1vdW50CQBlAgUXYWxsb3dlZFRpY2tldHNBbW91bnRBbGwFE2JvdWdodFRpY2tldHNBbW91bnQEC3N0YXJ0SGVpZ2h0CQEFdmFsdWUBCQCaCAIFBHRoaXMJAKwCAgkApAMBBQtsYXVuY2hwYWRJZAUOa2V5U3RhcnRIZWlnaHQECGR1cmF0aW9uCQEFdmFsdWUBCQCaCAIFBHRoaXMJAKwCAgkApAMBBQtsYXVuY2hwYWRJZAULa2V5RHVyYXRpb24EFWZyZWV6ZUFkZGl0aW9uYWxUb2tlbgkBC3ZhbHVlT3JFbHNlAgkAmwgCBQR0aGlzCQCsAgIJAKQDAQULbGF1bmNocGFkSWQFGGtleUZyZWV6ZUFkZGl0aW9uYWxUb2tlbgcEDSR0MDExOTY1MTMwMTkDCQAAAggJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkBQR1bml0BAlhbW50VG9HZXQKAAFACQCRAwIKAAFACQD8BwQFDFdBVkVTX1hUTl9FWAIMY2FsbEZ1bmN0aW9uCQDMCAICFWhvd01hbnlZb3VHZXRSRUFET05MWQkAzAgCCQDMCAIJAKQDAQgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQJAMwIAgEABQNuaWwFA25pbAUDbmlsAwkAAQIFAUACCUxpc3RbQW55XQUBQAkAAgEJAKwCAgkAAwEFAUACHiBjb3VsZG4ndCBiZSBjYXN0IHRvIExpc3RbQW55XQAAAwkAAQIFAUACA0ludAUBQAkAAgEJAKwCAgkAAwEFAUACGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAMJAAACBQlhbW50VG9HZXQFCWFtbnRUb0dldAQNdGlja2V0c0Ftb3VudAkAaQIFCWFtbnRUb0dldAkAZAIFC3RpY2tldFByaWNlBRNjb21taXNzaW9uUGVyVGlja2V0BBBhbW50VG9HZXRUaWNrZXRzCQBoAgUNdGlja2V0c0Ftb3VudAkAZAIFC3RpY2tldFByaWNlBRNjb21taXNzaW9uUGVyVGlja2V0BAlhbW50VG9QYXkKAAFACQCRAwIKAAFACQD8BwQFDFdBVkVTX1hUTl9FWAIMY2FsbEZ1bmN0aW9uCQDMCAICFWhvd01hbnlZb3VQYXlSRUFET05MWQkAzAgCCQDMCAIJAKQDAQUQYW1udFRvR2V0VGlja2V0cwkAzAgCBQpidXlBc3NldElkBQNuaWwFA25pbAUDbmlsAwkAAQIFAUACCUxpc3RbQW55XQUBQAkAAgEJAKwCAgkAAwEFAUACHiBjb3VsZG4ndCBiZSBjYXN0IHRvIExpc3RbQW55XQAAAwkAAQIFAUACA0ludAUBQAkAAgEJAKwCAgkAAwEFAUACGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAMJAAACBQlhbW50VG9QYXkFCWFtbnRUb1BheQQCZXgJAPwHBAUMV0FWRVNfWFROX0VYAgxjYWxsRnVuY3Rpb24JAMwIAgIIZXhjaGFuZ2UJAMwIAgkAzAgCCQCkAwEFEGFtbnRUb0dldFRpY2tldHMFA25pbAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQR1bml0BQlhbW50VG9QYXkFA25pbAMJAAACBQJleAUCZXgEBmNoYW5nZQkAZQIICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50BRBhbW50VG9HZXRUaWNrZXRzBAZjRW50cnkDCQBmAgUGY2hhbmdlAAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBQZjaGFuZ2UICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAUDbmlsBQNuaWwJAJUKAwUQYW1udFRvR2V0VGlja2V0cwUKYnV5QXNzZXRJZAUGY0VudHJ5CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQCVCgMICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50CAkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQFA25pbAQJcG10QW1vdW50CAUNJHQwMTE5NjUxMzAxOQJfMQQKcG10QXNzZXRJZAgFDSR0MDExOTY1MTMwMTkCXzIEC2NoYW5nZUVudHJ5CAUNJHQwMTE5NjUxMzAxOQJfMwMJAQIhPQIFEWFjdGl2ZUxhdW5jaHBhZElkBQtsYXVuY2hwYWRJZAkAAgECN1RoZXJlIGlzIG5vIGFjdGl2ZSBsYXVuY2hwYWQgb3IgdGhpcyBsYXVuY2hwYWQgaXMgZW5kZWQDCQBmAgULc3RhcnRIZWlnaHQFBmhlaWdodAkAAgECHkxhdW5jaHBhZCBzYWxlIG5vdCBzdGFydGVkIHlldAMJAGYCBQZoZWlnaHQJAGQCBQtzdGFydEhlaWdodAUIZHVyYXRpb24JAAIBAhRMYXVuY2hwYWQgc2FsZSBlbmRlZAMDCQEBIQEFFWZyZWV6ZUFkZGl0aW9uYWxUb2tlbgMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQYJAQIhPQIFCnBtdEFzc2V0SWQFCmJ1eUFzc2V0SWQHCQACAQkArAICCQCsAgICGE9uZSBhdHRhY2hlZCBwYXltZW50IGluIAUMYnV5QXNzZXROYW1lAgkgZXhwZWN0ZWQDAwUVZnJlZXplQWRkaXRpb25hbFRva2VuAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwACBgkBAiE9AgUKcG10QXNzZXRJZAUKYnV5QXNzZXRJZAcEDWZyZWV6ZVRva2VuSWQJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBHRoaXMJAKwCAgkApAMBBQtsYXVuY2hwYWRJZAUQa2V5RnJlZXplVG9rZW5JZAkAAgEJAKwCAgkArAICCQCsAgICKVR3byBhdHRhY2hlZCBwYXltZW50cyBleHBlY3RlZDogRmlyc3QgaW4gBQxidXlBc3NldE5hbWUCDCwgc2Vjb25kIGluIAUNZnJlZXplVG9rZW5JZAMDCQBnAgAABRdhbGxvd2VkVGlja2V0c0Ftb3VudEFsbAYJAGcCAAAFFGFsbG93ZWRUaWNrZXRzQW1vdW50CQACAQIqTm90IGVub3VnaHQgU1dPUCBpbiBzdGFraW5nIHRvIGJ1eSB0aWNrZXRzBA9idXlUaWNrZXRBbW91bnQJAGkCBQlwbXRBbW91bnQJAGQCBQt0aWNrZXRQcmljZQUTY29tbWlzc2lvblBlclRpY2tldAQWYWxsb3dlZEJ1eVRpY2tldEFtb3VudAkAlwMBCQDMCAIFD2J1eVRpY2tldEFtb3VudAkAzAgCBRRhbGxvd2VkVGlja2V0c0Ftb3VudAUDbmlsBBxhbGxvd2VkQnV5UHJpY2VXaXRoQ29taXNzaW9uCQBoAgUWYWxsb3dlZEJ1eVRpY2tldEFtb3VudAkAZAIFC3RpY2tldFByaWNlBRNjb21taXNzaW9uUGVyVGlja2V0BAZjaGFuZ2UJAGUCBQlwbXRBbW91bnQFHGFsbG93ZWRCdXlQcmljZVdpdGhDb21pc3Npb24DCQAAAgUPYnV5VGlja2V0QW1vdW50AAAJAAIBCQCsAgIJAKwCAgIMTm90IGVub3VnaHQgBQxidXlBc3NldE5hbWUCDyB0byBidXkgdGlja2V0cwMJAQIhPQIFBmNoYW5nZQAACQACAQkArAICCQCsAgIJAKwCAgkArAICAhZXcm9uZyBwYXltZW50LiBUbyBidXkgCQCkAwEFFmFsbG93ZWRCdXlUaWNrZXRBbW91bnQCGHRpY2tldHMgeW91IG5lZWQgdG8gcGF5IAkApAMBBRxhbGxvd2VkQnV5UHJpY2VXaXRoQ29taXNzaW9uBQxidXlBc3NldE5hbWUEFWZyZWV6ZUFkZGl0aW9uYWxFbnRyeQMFFWZyZWV6ZUFkZGl0aW9uYWxUb2tlbgQNZnJlZXplVG9rZW5JZAkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwkArAICCQCkAwEFC2xhdW5jaHBhZElkBRBrZXlGcmVlemVUb2tlbklkBBRmcmVlemVUb2tlblBlclRpY2tldAkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwkArAICCQCkAwEFC2xhdW5jaHBhZElkBRdrZXlGcmVlemVUb2tlblBlclRpY2tldAQNJHQwMTQ4NjIxNDk0OQkAlAoCCAkAkQMCCAUBaQhwYXltZW50cwABBmFtb3VudAgJAJEDAggFAWkIcGF5bWVudHMAAQdhc3NldElkBA9wbXRBbW91bnRGcmVlemUIBQ0kdDAxNDg2MjE0OTQ5Al8xBBBwbXRBc3NldElkRnJlZXplCAUNJHQwMTQ4NjIxNDk0OQJfMgQNJHQwMTQ5NjYxNTA1NwkBDGdldEFzc2V0SW5mbwEFCnBtdEFzc2V0SWQEE3BtdEZyZWV6ZVN0ckFzc2V0SWQIBQ0kdDAxNDk2NjE1MDU3Al8xBBJwbXRGcmVlemVBc3NldE5hbWUIBQ0kdDAxNDk2NjE1MDU3Al8yBBFwbXRGcmVlemVEZWNpbWFscwgFDSR0MDE0OTY2MTUwNTcCXzMEEG5lZWRGcmVlemVUb2tlbnMJAGgCBRRmcmVlemVUb2tlblBlclRpY2tldAUPYnV5VGlja2V0QW1vdW50AwMJAQIhPQIFE3BtdEZyZWV6ZVN0ckFzc2V0SWQFDWZyZWV6ZVRva2VuSWQGCQECIT0CBRBuZWVkRnJlZXplVG9rZW5zBQ9wbXRBbW91bnRGcmVlemUJAAIBCQCsAgIJAKwCAgkArAICCQCsAgICEFlvdSBuZWVkIHRvIGFkZCAJAKQDAQUQbmVlZEZyZWV6ZVRva2VucwIBIAUScG10RnJlZXplQXNzZXROYW1lAhQgYXMgYSBzZWNvbmQgcGF5bWVudAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgkApQgBCAUBaQZjYWxsZXICAV8JAKQDAQULbGF1bmNocGFkSWQFEmtleVVzZXJGcmVlemVUb2tlbgUPcG10QW1vdW50RnJlZXplBQNuaWwFA25pbAQYdXNlckJvdWdodFRpY2tldHNOdW1iZXJzCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMJAKwCAgkArAICCQCsAgIJAKUIAQgFAWkGY2FsbGVyAgFfCQCkAwEFC2xhdW5jaHBhZElkBQ5rZXlVc2VyVGlja2V0cwIABBZsYXN0Qm91Z2h0VGlja2V0TnVtYmVyCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQCsAgIJAKQDAQULbGF1bmNocGFkSWQFE2tleVRpY2tldExhc3ROdW1iZXIEC2JvdWdodFJhbmdlCQCsAgIJAKwCAgkApAMBCQBkAgUWbGFzdEJvdWdodFRpY2tldE51bWJlcgABAgEtCQCkAwEJAGQCBRZsYXN0Qm91Z2h0VGlja2V0TnVtYmVyBRZhbGxvd2VkQnV5VGlja2V0QW1vdW50BBtuZXdVc2VyQm91Z2h0VGlja2V0c051bWJlcnMJAKwCAgUYdXNlckJvdWdodFRpY2tldHNOdW1iZXJzAwkBAiE9AgUYdXNlckJvdWdodFRpY2tldHNOdW1iZXJzAgAJAKwCAgIBLAULYm91Z2h0UmFuZ2UJAKwCAgIABQtib3VnaHRSYW5nZQQDaW52AwkAAAIFCmJ1eUFzc2V0SWQFBFVTRE4JAPwHBAUSc3Rha2luZ1VTRE5BZGRyZXNzAgxsb2NrTmV1dHJpbm8FA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUKcG10QXNzZXRJZAUJcG10QW1vdW50BQNuaWwAAAMJAAACBQNpbnYFA2ludgQJYmFzZUVudHJ5CQDOCAIJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgkApQgBCAUBaQZjYWxsZXICAV8JAKQDAQULbGF1bmNocGFkSWQFGmtleVVzZXJCb3VnaHRUaWNrZXRzQW1vdW50CQBkAgUTYm91Z2h0VGlja2V0c0Ftb3VudAUWYWxsb3dlZEJ1eVRpY2tldEFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCkAwEFC2xhdW5jaHBhZElkBRNrZXlUaWNrZXRMYXN0TnVtYmVyCQBkAgUWbGFzdEJvdWdodFRpY2tldE51bWJlcgUWYWxsb3dlZEJ1eVRpY2tldEFtb3VudAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkArAICCQClCAEIBQFpBmNhbGxlcgIBXwkApAMBBQtsYXVuY2hwYWRJZAUOa2V5VXNlclRpY2tldHMFG25ld1VzZXJCb3VnaHRUaWNrZXRzTnVtYmVycwUDbmlsBRVmcmVlemVBZGRpdGlvbmFsRW50cnkFC2NoYW5nZUVudHJ5AwkBASEBCQEJaXNEZWZpbmVkAQkAnQgCBQR0aGlzCQCsAgIJAKwCAgkArAICCQClCAEIBQFpBmNhbGxlcgIBXwkApAMBBQtsYXVuY2hwYWRJZAUMa2V5VXNlclJlZklkCQDOCAIFCWJhc2VFbnRyeQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkArAICCQClCAEIBQFpBmNhbGxlcgIBXwkApAMBBQtsYXVuY2hwYWRJZAUMa2V5VXNlclJlZklkBQVyZWZJZAUDbmlsBQliYXNlRW50cnkJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEUY29tbWl0QWNjZXNzTGlzdFNhbGUCC2xhdW5jaHBhZElkBXJlZklkCQELdmFsdWVPckVsc2UCCQEIaXNBY3RpdmUABA0kdDAxNzE0MzE3MjE4CQCUCgIICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50CAkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQECXBtdEFtb3VudAgFDSR0MDE3MTQzMTcyMTgCXzEECnBtdEFzc2V0SWQIBQ0kdDAxNzE0MzE3MjE4Al8yBA0kdDAxNzIyMzE3MzczCQEWZ2V0QXNzZXRJbmZvRnJvbVN0cmluZwEJAQV2YWx1ZQEJAJ0IAgUEdGhpcwkArAICCQCkAwEFC2xhdW5jaHBhZElkBQtrZXlCdXlUb2tlbgQKYnV5QXNzZXRJZAgFDSR0MDE3MjIzMTczNzMCXzEEDWJ1eUFzc2V0U3RySWQIBQ0kdDAxNzIyMzE3MzczAl8yBAxidXlBc3NldE5hbWUIBQ0kdDAxNzIyMzE3MzczAl8zBBBidXlBc3NldERlY2ltYWxzCAUNJHQwMTcyMjMxNzM3MwJfNAQTdXNlclVzZG5Jbk1hcmtldGluZwkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIJAKwCAgkArAICCQClCAEIBQFpBmNhbGxlcgIBXwkApAMBBQtsYXVuY2hwYWRJZAUga2V5VXNlckFtb3VudEJ1eUFzc2V0SW5NYXJrZXRpbmcAAAQPdXNkbkluTWFya2V0aW5nCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgkApAMBBQtsYXVuY2hwYWRJZAUca2V5QW1vdW50QnV5QXNzZXRJbk1hcmtldGluZwAABBFib3VnaHRBbGxvY2F0aW9ucwkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIJAKwCAgkArAICCQClCAEIBQFpBmNhbGxlcgIBXwkApAMBBQtsYXVuY2hwYWRJZAUYa2V5VXNlckJvdWdodEFsbG9jYXRpb25zAAAECmNvbW1pc3Npb24JARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAKwCAgkApAMBBQtsYXVuY2hwYWRJZAUMa2V5Q29taXNzaW9uBAp0b2tlblByaWNlCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQCsAgIJAKQDAQULbGF1bmNocGFkSWQFEGtleVByaWNlUGVyVG9rZW4EE3Rva2Vuc1BlckFsbG9jYXRpb24JARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAKwCAgkApAMBBQtsYXVuY2hwYWRJZAUWa2V5VG9rZW5zUGVyQWxsb2NhdGlvbgQNJHQwMTgwNDIxODE4NgkBFmdldEFzc2V0SW5mb0Zyb21TdHJpbmcBCQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzCQCsAgIJAKQDAQULbGF1bmNocGFkSWQFCmtleUFzc2V0SWQEB3Rva2VuSWQIBQ0kdDAxODA0MjE4MTg2Al8xBA90b2tlblN0ckFzc2V0SWQIBQ0kdDAxODA0MjE4MTg2Al8yBA50b2tlbkFzc2V0TmFtZQgFDSR0MDE4MDQyMTgxODYCXzMEDXRva2VuRGVjaW1hbHMIBQ0kdDAxODA0MjE4MTg2Al80BBxhbGxvY2F0aW9uUHJpY2VXaXRoQ29taXNzaW9uCQBrAwkAawMFCnRva2VuUHJpY2UFE3Rva2Vuc1BlckFsbG9jYXRpb24JAGwGAAoAAAUNdG9rZW5EZWNpbWFscwAAAAAFBERPV04JAGQCAGQFCmNvbW1pc3Npb24AZAQLc3RhcnRIZWlnaHQJAQV2YWx1ZQEJAJoIAgUEdGhpcwkArAICCQCkAwEFC2xhdW5jaHBhZElkBQ5rZXlTdGFydEhlaWdodAQIZHVyYXRpb24JAQV2YWx1ZQEJAJoIAgUEdGhpcwkArAICCQCkAwEFC2xhdW5jaHBhZElkBQtrZXlEdXJhdGlvbgMJAQIhPQIFEWFjdGl2ZUxhdW5jaHBhZElkBQtsYXVuY2hwYWRJZAkAAgECN1RoZXJlIGlzIG5vIGFjdGl2ZSBsYXVuY2hwYWQgb3IgdGhpcyBsYXVuY2hwYWQgaXMgZW5kZWQDCQBmAgULc3RhcnRIZWlnaHQFBmhlaWdodAkAAgECHkxhdW5jaHBhZCBzYWxlIG5vdCBzdGFydGVkIHlldAMJAGYCBQZoZWlnaHQJAGQCBQtzdGFydEhlaWdodAUIZHVyYXRpb24JAAIBAhRMYXVuY2hwYWQgc2FsZSBlbmRlZAMDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEGCQECIT0CBQpwbXRBc3NldElkBQpidXlBc3NldElkCQACAQkArAICCQCsAgICGE9uZSBhdHRhY2hlZCBwYXltZW50IGluIAUMYnV5QXNzZXROYW1lAgkgZXhwZWN0ZWQDCQBnAgURYm91Z2h0QWxsb2NhdGlvbnMFFG1heEFsbG9jYXRpb25zQW1vdW50CQACAQkArAICCQCsAgICEVlvdSBjYW4gYnV5IG9ubHkgCQCkAwEFFG1heEFsbG9jYXRpb25zQW1vdW50AgthbGxvY2F0aW9ucwMDCQECIT0CBRxhbGxvY2F0aW9uUHJpY2VXaXRoQ29taXNzaW9uBQlwbXRBbW91bnQJAQIhPQIJAGgCBRxhbGxvY2F0aW9uUHJpY2VXaXRoQ29taXNzaW9uAAIFCXBtdEFtb3VudAcJAAIBCQCsAgIJAKwCAgkArAICAjJXcm9uZyBwYXltZW50LiBZb3UgY2FuIGJ1eSAxIG9yIDIgYWxsb2NhdGlvbnMgZm9yIAkApAMBBRxhbGxvY2F0aW9uUHJpY2VXaXRoQ29taXNzaW9uBQxidXlBc3NldE5hbWUCDyBwZXIgYWxsb2NhdGlvbgQUYnV5QWxsb2NhdGlvbnNBbW91bnQJAGkCBQlwbXRBbW91bnQFHGFsbG9jYXRpb25QcmljZVdpdGhDb21pc3Npb24EA2ludgMJAAACBQpidXlBc3NldElkBQRVU0ROCQD8BwQFEnN0YWtpbmdVU0ROQWRkcmVzcwIMbG9ja05ldXRyaW5vBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFCnBtdEFzc2V0SWQFCXBtdEFtb3VudAUDbmlsAAADCQAAAgUDaW52BQNpbnYECWJhc2VFbnRyeQkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgkApQgBCAUBaQZjYWxsZXICAV8JAKQDAQULbGF1bmNocGFkSWQFGGtleVVzZXJCb3VnaHRBbGxvY2F0aW9ucwkAZAIFEWJvdWdodEFsbG9jYXRpb25zBRRidXlBbGxvY2F0aW9uc0Ftb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgkApQgBCAUBaQZjYWxsZXICAV8JAKQDAQULbGF1bmNocGFkSWQFIGtleVVzZXJBbW91bnRCdXlBc3NldEluTWFya2V0aW5nCQBkAgUTdXNlclVzZG5Jbk1hcmtldGluZwUJcG10QW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKQDAQULbGF1bmNocGFkSWQFHGtleUFtb3VudEJ1eUFzc2V0SW5NYXJrZXRpbmcJAGQCBQ91c2RuSW5NYXJrZXRpbmcFCXBtdEFtb3VudAUDbmlsAwkBASEBCQEJaXNEZWZpbmVkAQkAnQgCBQR0aGlzCQCsAgIJAKwCAgkArAICCQClCAEIBQFpBmNhbGxlcgIBXwkApAMBBQtsYXVuY2hwYWRJZAUMa2V5VXNlclJlZklkCQDOCAIFCWJhc2VFbnRyeQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkArAICCQClCAEIBQFpBmNhbGxlcgIBXwkApAMBBQtsYXVuY2hwYWRJZAUMa2V5VXNlclJlZklkBQVyZWZJZAUDbmlsBQliYXNlRW50cnkJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEZY29tbWl0SGlnaENvbXBldGl0aW9uU2FsZQILbGF1bmNocGFkSWQFcmVmSWQJAQt2YWx1ZU9yRWxzZQIJAQhpc0FjdGl2ZQAEDSR0MDIwNDQ0MjA1OTQJARZnZXRBc3NldEluZm9Gcm9tU3RyaW5nAQkBBXZhbHVlAQkAnQgCBQR0aGlzCQCsAgIJAKQDAQULbGF1bmNocGFkSWQFC2tleUJ1eVRva2VuBApidXlBc3NldElkCAUNJHQwMjA0NDQyMDU5NAJfMQQNYnV5QXNzZXRTdHJJZAgFDSR0MDIwNDQ0MjA1OTQCXzIEDGJ1eUFzc2V0TmFtZQgFDSR0MDIwNDQ0MjA1OTQCXzMEEGJ1eUFzc2V0RGVjaW1hbHMIBQ0kdDAyMDQ0NDIwNTk0Al80BAtzdGFydEhlaWdodAkBBXZhbHVlAQkAmggCBQR0aGlzCQCsAgIJAKQDAQULbGF1bmNocGFkSWQFDmtleVN0YXJ0SGVpZ2h0BAhkdXJhdGlvbgkBBXZhbHVlAQkAmggCBQR0aGlzCQCsAgIJAKQDAQULbGF1bmNocGFkSWQFC2tleUR1cmF0aW9uBBVib3VnaHRIQ1RpY2tldHNBbW91bnQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICCQCsAgIJAKwCAgkApQgBCAUBaQZjYWxsZXICAV8JAKQDAQULbGF1bmNocGFkSWQFHGtleVVzZXJIQ0JvdWdodFRpY2tldHNBbW91bnQAAAQTaGlnaENvbXBldGl0aW9uU2FsZQkBC3ZhbHVlT3JFbHNlAgkAmwgCBQR0aGlzCQCsAgIJAKQDAQULbGF1bmNocGFkSWQFFmtleUhpZ2hDb21wZXRpdGlvblNhbGUHBAp0b2tlblByaWNlCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQCsAgIJAKQDAQULbGF1bmNocGFkSWQFEGtleVByaWNlUGVyVG9rZW4ED3Rva2Vuc1BlclRpY2tldAkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwkArAICCQCkAwEFC2xhdW5jaHBhZElkBRJrZXlUb2tlbnNQZXJUaWNrZXQEDSR0MDIxMjA0MjEzNDgJARZnZXRBc3NldEluZm9Gcm9tU3RyaW5nAQkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwkArAICCQCkAwEFC2xhdW5jaHBhZElkBQprZXlBc3NldElkBAd0b2tlbklkCAUNJHQwMjEyMDQyMTM0OAJfMQQPdG9rZW5TdHJBc3NldElkCAUNJHQwMjEyMDQyMTM0OAJfMgQOdG9rZW5Bc3NldE5hbWUIBQ0kdDAyMTIwNDIxMzQ4Al8zBA10b2tlbkRlY2ltYWxzCAUNJHQwMjEyMDQyMTM0OAJfNAQLdGlja2V0UHJpY2UJAGsDBQ90b2tlbnNQZXJUaWNrZXQFCnRva2VuUHJpY2UJAGwGAAoAAAUNdG9rZW5EZWNpbWFscwAAAAAFBERPV04EE2NvbW1pc3Npb25QZXJUaWNrZXQJAGsDBQt0aWNrZXRQcmljZQkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwkArAICCQCkAwEFC2xhdW5jaHBhZElkBRtrZXlIaWdoQ29tcGV0aXRpb25Db21pc3Npb24AZAQNJHQwMjE1ODEyMjYzNQMJAAACCAkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQFBHVuaXQECWFtbnRUb0dldAoAAUAJAJEDAgoAAUAJAPwHBAUMV0FWRVNfWFROX0VYAgxjYWxsRnVuY3Rpb24JAMwIAgIVaG93TWFueVlvdUdldFJFQURPTkxZCQDMCAIJAMwIAgkApAMBCAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAkAzAgCAQAFA25pbAUDbmlsBQNuaWwDCQABAgUBQAIJTGlzdFtBbnldBQFACQACAQkArAICCQADAQUBQAIeIGNvdWxkbid0IGJlIGNhc3QgdG8gTGlzdFtBbnldAAADCQABAgUBQAIDSW50BQFACQACAQkArAICCQADAQUBQAIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50AwkAAAIFCWFtbnRUb0dldAUJYW1udFRvR2V0BA10aWNrZXRzQW1vdW50CQBpAgUJYW1udFRvR2V0CQBkAgULdGlja2V0UHJpY2UFE2NvbW1pc3Npb25QZXJUaWNrZXQEEGFtbnRUb0dldFRpY2tldHMJAGgCBQ10aWNrZXRzQW1vdW50CQBkAgULdGlja2V0UHJpY2UFE2NvbW1pc3Npb25QZXJUaWNrZXQECWFtbnRUb1BheQoAAUAJAJEDAgoAAUAJAPwHBAUMV0FWRVNfWFROX0VYAgxjYWxsRnVuY3Rpb24JAMwIAgIVaG93TWFueVlvdVBheVJFQURPTkxZCQDMCAIJAMwIAgkApAMBBRBhbW50VG9HZXRUaWNrZXRzCQDMCAIFCmJ1eUFzc2V0SWQFA25pbAUDbmlsBQNuaWwDCQABAgUBQAIJTGlzdFtBbnldBQFACQACAQkArAICCQADAQUBQAIeIGNvdWxkbid0IGJlIGNhc3QgdG8gTGlzdFtBbnldAAADCQABAgUBQAIDSW50BQFACQACAQkArAICCQADAQUBQAIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50AwkAAAIFCWFtbnRUb1BheQUJYW1udFRvUGF5BAJleAkA/AcEBQxXQVZFU19YVE5fRVgCDGNhbGxGdW5jdGlvbgkAzAgCAghleGNoYW5nZQkAzAgCCQDMCAIJAKQDAQUQYW1udFRvR2V0VGlja2V0cwUDbmlsBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFBHVuaXQFCWFtbnRUb1BheQUDbmlsAwkAAAIFAmV4BQJleAQGY2hhbmdlCQBlAggJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQFEGFtbnRUb0dldFRpY2tldHMEBmNFbnRyeQMJAGYCBQZjaGFuZ2UAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFBmNoYW5nZQgJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkBQNuaWwFA25pbAkAlQoDBRBhbW50VG9HZXRUaWNrZXRzBQpidXlBc3NldElkBQZjRW50cnkJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAJUKAwgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAUDbmlsBAlwbXRBbW91bnQIBQ0kdDAyMTU4MTIyNjM1Al8xBApwbXRBc3NldElkCAUNJHQwMjE1ODEyMjYzNQJfMgQLY2hhbmdlRW50cnkIBQ0kdDAyMTU4MTIyNjM1Al8zAwkBAiE9AgURYWN0aXZlTGF1bmNocGFkSWQFC2xhdW5jaHBhZElkCQACAQI3VGhlcmUgaXMgbm8gYWN0aXZlIGxhdW5jaHBhZCBvciB0aGlzIGxhdW5jaHBhZCBpcyBlbmRlZAMJAQEhAQUTaGlnaENvbXBldGl0aW9uU2FsZQkAAgECNFRoZXJlIGlzIG5vIGhpZ2ggY29tcGV0aXRpb24gc2FsZSBmb3IgdGhpcyBsYXVuY2hwYWQDCQBmAgULc3RhcnRIZWlnaHQFBmhlaWdodAkAAgECHkxhdW5jaHBhZCBzYWxlIG5vdCBzdGFydGVkIHlldAMJAGYCBQZoZWlnaHQJAGQCBQtzdGFydEhlaWdodAUIZHVyYXRpb24JAAIBAhRMYXVuY2hwYWQgc2FsZSBlbmRlZAMDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEGCQECIT0CBQpwbXRBc3NldElkBQpidXlBc3NldElkCQACAQkArAICCQCsAgICGE9uZSBhdHRhY2hlZCBwYXltZW50IGluIAUMYnV5QXNzZXROYW1lAgkgZXhwZWN0ZWQED2J1eVRpY2tldEFtb3VudAkAaQIFCXBtdEFtb3VudAkAZAIFC3RpY2tldFByaWNlBRNjb21taXNzaW9uUGVyVGlja2V0BBVidXlQcmljZVdpdGhDb21pc3Npb24JAGgCBQ9idXlUaWNrZXRBbW91bnQJAGQCBQt0aWNrZXRQcmljZQUTY29tbWlzc2lvblBlclRpY2tldAQGY2hhbmdlCQBlAgUJcG10QW1vdW50BRVidXlQcmljZVdpdGhDb21pc3Npb24DCQAAAgUPYnV5VGlja2V0QW1vdW50AAAJAAIBCQCsAgIJAKwCAgIMTm90IGVub3VnaHQgBQxidXlBc3NldE5hbWUCDyB0byBidXkgdGlja2V0cwMJAQIhPQIFBmNoYW5nZQAACQACAQkArAICCQCsAgIJAKwCAgkArAICAhZXcm9uZyBwYXltZW50LiBUbyBidXkgCQCkAwEFD2J1eVRpY2tldEFtb3VudAIYdGlja2V0cyB5b3UgbmVlZCB0byBwYXkgCQCkAwEFFWJ1eVByaWNlV2l0aENvbWlzc2lvbgUMYnV5QXNzZXROYW1lBBh1c2VyQm91Z2h0VGlja2V0c051bWJlcnMJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwkArAICCQCsAgIJAKwCAgkApQgBCAUBaQZjYWxsZXICAV8JAKQDAQULbGF1bmNocGFkSWQFEGtleVVzZXJIQ1RpY2tldHMCAAQWbGFzdEJvdWdodFRpY2tldE51bWJlcgkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwkArAICCQCkAwEFC2xhdW5jaHBhZElkBRVrZXlIQ1RpY2tldExhc3ROdW1iZXIEC2JvdWdodFJhbmdlCQCsAgIJAKwCAgkApAMBCQBkAgUWbGFzdEJvdWdodFRpY2tldE51bWJlcgABAgEtCQCkAwEJAGQCBRZsYXN0Qm91Z2h0VGlja2V0TnVtYmVyBQ9idXlUaWNrZXRBbW91bnQEG25ld1VzZXJCb3VnaHRUaWNrZXRzTnVtYmVycwkArAICBRh1c2VyQm91Z2h0VGlja2V0c051bWJlcnMDCQECIT0CBRh1c2VyQm91Z2h0VGlja2V0c051bWJlcnMCAAkArAICAgEsBQtib3VnaHRSYW5nZQkArAICAgAFC2JvdWdodFJhbmdlBANpbnYDCQAAAgUKYnV5QXNzZXRJZAUEVVNETgkA/AcEBRJzdGFraW5nVVNETkFkZHJlc3MCDGxvY2tOZXV0cmlubwUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQpwbXRBc3NldElkBQlwbXRBbW91bnQFA25pbAAAAwkAAAIFA2ludgUDaW52BAliYXNlRW50cnkJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgkApQgBCAUBaQZjYWxsZXICAV8JAKQDAQULbGF1bmNocGFkSWQFHGtleVVzZXJIQ0JvdWdodFRpY2tldHNBbW91bnQJAGQCBRVib3VnaHRIQ1RpY2tldHNBbW91bnQFD2J1eVRpY2tldEFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCkAwEFC2xhdW5jaHBhZElkBRVrZXlIQ1RpY2tldExhc3ROdW1iZXIJAGQCBRZsYXN0Qm91Z2h0VGlja2V0TnVtYmVyBQ9idXlUaWNrZXRBbW91bnQJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJAKwCAgkApQgBCAUBaQZjYWxsZXICAV8JAKQDAQULbGF1bmNocGFkSWQFEGtleVVzZXJIQ1RpY2tldHMFG25ld1VzZXJCb3VnaHRUaWNrZXRzTnVtYmVycwUDbmlsBQtjaGFuZ2VFbnRyeQMJAQEhAQkBCWlzRGVmaW5lZAEJAJ0IAgUEdGhpcwkArAICCQCsAgIJAKwCAgkApQgBCAUBaQZjYWxsZXICAV8JAKQDAQULbGF1bmNocGFkSWQFDGtleVVzZXJSZWZJZAkAzggCBQliYXNlRW50cnkJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJAKwCAgkApQgBCAUBaQZjYWxsZXICAV8JAKQDAQULbGF1bmNocGFkSWQFDGtleVVzZXJSZWZJZAUFcmVmSWQFA25pbAUJYmFzZUVudHJ5CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCGZpbmFsaXNlAwtsYXVuY2hwYWRJZAl2cmZIZWlnaHQKc2VjcmV0V29yZAkBC3ZhbHVlT3JFbHNlAgkBCGlzQWN0aXZlAAkBC3ZhbHVlT3JFbHNlAgkBC2lzQWRtaW5DYWxsAQUBaQQJc2F2ZWRIYXNoCQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzCQCsAgIJAKQDAQULbGF1bmNocGFkSWQFDWtleVZlcmlmeUhhc2gECGNhbGNIYXNoCQDYBAEJAPcDAQkAywECCQCaAwEFCXZyZkhlaWdodAkAmwMBBQpzZWNyZXRXb3JkAwkBAiE9AgUIY2FsY0hhc2gFCXNhdmVkSGFzaAkAAgECHHZyZiBIZWlnaHQgaGFzaCBub3QgbWF0Y2hpbmcEDSR0MDI1NTg4MjU3MzgJARZnZXRBc3NldEluZm9Gcm9tU3RyaW5nAQkBBXZhbHVlAQkAnQgCBQR0aGlzCQCsAgIJAKQDAQULbGF1bmNocGFkSWQFC2tleUJ1eVRva2VuBApidXlBc3NldElkCAUNJHQwMjU1ODgyNTczOAJfMQQNYnV5QXNzZXRTdHJJZAgFDSR0MDI1NTg4MjU3MzgCXzIEDGJ1eUFzc2V0TmFtZQgFDSR0MDI1NTg4MjU3MzgCXzMEEGJ1eUFzc2V0RGVjaW1hbHMIBQ0kdDAyNTU4ODI1NzM4Al80BA5wcm9qZWN0QWRkcmVzcwkBEUBleHRyTmF0aXZlKDEwNjIpAQkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwkArAICCQCkAwEFC2xhdW5jaHBhZElkBQprZXlBZGRyZXNzBApjb21taXNzaW9uCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQCsAgIJAKQDAQULbGF1bmNocGFkSWQFDGtleUNvbWlzc2lvbgQMY29tbWlzc2lvbkhDCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQCsAgIJAKQDAQULbGF1bmNocGFkSWQFG2tleUhpZ2hDb21wZXRpdGlvbkNvbWlzc2lvbgQSdHJhbnNmZXJlZEJ1eUFzc2V0CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgkApAMBBQtsYXVuY2hwYWRJZAUTa2V5VHJhbnNmZXJCdXlBc3NldAAABBtzd29wZmlNZW1iZXJzQnV5QXNzZXRBbW91bnQJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAKwCAgkApAMBBQtsYXVuY2hwYWRJZAUaa2V5VG90YWxBbW91bnRCdXlBc3NldFNvbGQEFnN3b3BmaUhDQnV5QXNzZXRBbW91bnQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICCQCkAwEFC2xhdW5jaHBhZElkBRxrZXlUb3RhbEFtb3VudEJ1eUFzc2V0U29sZEhDAAAEFnN3b3BmaU1lbWJlcnNDb21pc3Npb24JAGsDBRtzd29wZmlNZW1iZXJzQnV5QXNzZXRBbW91bnQFCmNvbW1pc3Npb24AZAQRc3dvcGZpSENDb21pc3Npb24JAGsDBRZzd29wZmlIQ0J1eUFzc2V0QW1vdW50BQxjb21taXNzaW9uSEMAZAQedG90YWxBbW91bnRCdXlBc3NldEluTWFya2V0aW5nCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQCsAgIJAKQDAQULbGF1bmNocGFkSWQFJWtleUFtb3VudEJ1eUFzc2V0SW5NYXJrZXRpbmdGaW5hbGl6ZWQEEm1hcmtldGluZ0NvbWlzc2lvbgkAawMFHnRvdGFsQW1vdW50QnV5QXNzZXRJbk1hcmtldGluZwUKY29tbWlzc2lvbgBkBA11bnN0YWtlQW1vdW50CQBlAgkAZAIJAGQCCQBkAgkAZAIJAGQCBRtzd29wZmlNZW1iZXJzQnV5QXNzZXRBbW91bnQFHnRvdGFsQW1vdW50QnV5QXNzZXRJbk1hcmtldGluZwUWc3dvcGZpTWVtYmVyc0NvbWlzc2lvbgUSbWFya2V0aW5nQ29taXNzaW9uBRZzd29wZmlIQ0J1eUFzc2V0QW1vdW50BRFzd29wZmlIQ0NvbWlzc2lvbgUSdHJhbnNmZXJlZEJ1eUFzc2V0AwkAZgIFEnRyYW5zZmVyZWRCdXlBc3NldAkAZAIJAGQCBRtzd29wZmlNZW1iZXJzQnV5QXNzZXRBbW91bnQFHnRvdGFsQW1vdW50QnV5QXNzZXRJbk1hcmtldGluZwUWc3dvcGZpSENCdXlBc3NldEFtb3VudAkAAgECKENhbid0IHRyYW5zZmVyIG5lZ2F0aXZlIHZhbHVlIHRvIHByb2plY3QEA2ludgMJAAACBQpidXlBc3NldElkBQRVU0ROCQD8BwQFEnN0YWtpbmdVU0ROQWRkcmVzcwIOdW5sb2NrTmV1dHJpbm8JAMwIAgUNdW5zdGFrZUFtb3VudAkAzAgCCQDYBAEFBFVTRE4FA25pbAUDbmlsAAADCQAAAgUDaW52BQNpbnYJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkApAMBBQtsYXVuY2hwYWRJZAURa2V5RmluYWxpc2VIZWlnaHQFBmhlaWdodAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQ5wcm9qZWN0QWRkcmVzcwkAZQIJAGQCCQBkAgUbc3dvcGZpTWVtYmVyc0J1eUFzc2V0QW1vdW50BRZzd29wZmlIQ0J1eUFzc2V0QW1vdW50BR50b3RhbEFtb3VudEJ1eUFzc2V0SW5NYXJrZXRpbmcFEnRyYW5zZmVyZWRCdXlBc3NldAUKYnV5QXNzZXRJZAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBRBjb21taXNzaW9uV2FsbGV0CQBkAgkAZAIFFnN3b3BmaU1lbWJlcnNDb21pc3Npb24FEm1hcmtldGluZ0NvbWlzc2lvbgURc3dvcGZpSENDb21pc3Npb24FCmJ1eUFzc2V0SWQFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQVjbGFpbQELbGF1bmNocGFkSWQJAQt2YWx1ZU9yRWxzZQIJAQhpc0FjdGl2ZQAEDWJvdWdodFRpY2tldHMJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICCQCsAgIJAKwCAgkApQgBCAUBaQZjYWxsZXICAV8JAKQDAQULbGF1bmNocGFkSWQFGmtleVVzZXJCb3VnaHRUaWNrZXRzQW1vdW50AAAED2JvdWdodEhDVGlja2V0cwkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIJAKwCAgkArAICCQClCAEIBQFpBmNhbGxlcgIBXwkApAMBBQtsYXVuY2hwYWRJZAUca2V5VXNlckhDQm91Z2h0VGlja2V0c0Ftb3VudAAABBFib3VnaHRBbGxvY2F0aW9ucwkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIJAKwCAgkArAICCQClCAEIBQFpBmNhbGxlcgIBXwkApAMBBQtsYXVuY2hwYWRJZAUYa2V5VXNlckJvdWdodEFsbG9jYXRpb25zAAAED3VzZXJDbGFpbVN0YXR1cwkBC3ZhbHVlT3JFbHNlAgkAmwgCBQR0aGlzCQCsAgIJAKwCAgkArAICCQClCAEIBQFpBmNhbGxlcgIBXwkApAMBBQtsYXVuY2hwYWRJZAUSa2V5VXNlckNsYWltU3RhdHVzBwQOZmluYWxpemVIZWlnaHQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICCQCkAwEFC2xhdW5jaHBhZElkBRFrZXlGaW5hbGlzZUhlaWdodAAAAwkAAAIFDmZpbmFsaXplSGVpZ2h0AAAJAAIBAjFZb3UgY2FuJ3QgY2xhaW0gYmVjYXVzZSByZXN1bHRzIGFyZSBub3QgZmluYWxpemVkAwUPdXNlckNsYWltU3RhdHVzCQACAQIXWW91IGFyZSBhbHJlYWR5IGNsYWltZWQDAwMJAAACBQ1ib3VnaHRUaWNrZXRzAAAJAAACBRFib3VnaHRBbGxvY2F0aW9ucwAABwkAAAIFD2JvdWdodEhDVGlja2V0cwAABwkAAgECLllvdSBjYW4ndCBjbGFpbSBiZWNhdXNlIHlvdSBkb24ndCBidXkgYW55dGhpbmcEDSR0MDI4ODIyMjg5OTkJARZnZXRBc3NldEluZm9Gcm9tU3RyaW5nAQkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzCQCsAgIJAKQDAQULbGF1bmNocGFkSWQFC2tleUJ1eVRva2VuCQDYBAEFBFVTRE4ECmJ1eUFzc2V0SWQIBQ0kdDAyODgyMjI4OTk5Al8xBA1idXlBc3NldFN0cklkCAUNJHQwMjg4MjIyODk5OQJfMgQMYnV5QXNzZXROYW1lCAUNJHQwMjg4MjIyODk5OQJfMwQQYnV5QXNzZXREZWNpbWFscwgFDSR0MDI4ODIyMjg5OTkCXzQEDXdvbm5lZFRpY2tldHMJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICCQCsAgIJAKwCAgkApQgBCAUBaQZjYWxsZXICAV8JAKQDAQULbGF1bmNocGFkSWQFGmtleVVzZXJXaW5uZWRUaWNrZXRzQW1vdW50AAAED3dvbm5lZEhDVGlja2V0cwkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIJAKwCAgkArAICCQClCAEIBQFpBmNhbGxlcgIBXwkApAMBBQtsYXVuY2hwYWRJZAUpa2V5VXNlcldpbm5lZEhpZ2hDb21wZXRpdGlvblRpY2tldHNBbW91bnQAAAQUYXdhaWxhYmxlQWxsb2NhdGlvbnMJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICCQCsAgIJAKwCAgkApQgBCAUBaQZjYWxsZXICAV8JAKQDAQULbGF1bmNocGFkSWQFG2tleVVzZXJBdmFpbGFibGVBbGxvY2F0aW9ucwAABApjb21taXNzaW9uCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQCsAgIJAKQDAQULbGF1bmNocGFkSWQFDGtleUNvbWlzc2lvbgQMY29tbWlzc2lvbkhDCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgkApAMBBQtsYXVuY2hwYWRJZAUba2V5SGlnaENvbXBldGl0aW9uQ29taXNzaW9uAAAEEmFsbG93ZWRBbGxvY2F0aW9ucwkAlwMBCQDMCAIFEWJvdWdodEFsbG9jYXRpb25zCQDMCAIFFGF3YWlsYWJsZUFsbG9jYXRpb25zBQNuaWwECnRva2VuUHJpY2UJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAKwCAgkApAMBBQtsYXVuY2hwYWRJZAUQa2V5UHJpY2VQZXJUb2tlbgQPdG9rZW5zUGVyVGlja2V0CQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQCsAgIJAKQDAQULbGF1bmNocGFkSWQFEmtleVRva2Vuc1BlclRpY2tldAQNJHQwMjk5MTUzMDA1OQkBFmdldEFzc2V0SW5mb0Zyb21TdHJpbmcBCQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzCQCsAgIJAKQDAQULbGF1bmNocGFkSWQFCmtleUFzc2V0SWQEB3Rva2VuSWQIBQ0kdDAyOTkxNTMwMDU5Al8xBA90b2tlblN0ckFzc2V0SWQIBQ0kdDAyOTkxNTMwMDU5Al8yBA50b2tlbkFzc2V0TmFtZQgFDSR0MDI5OTE1MzAwNTkCXzMEDXRva2VuRGVjaW1hbHMIBQ0kdDAyOTkxNTMwMDU5Al80BAt0aWNrZXRQcmljZQkAawMFD3Rva2Vuc1BlclRpY2tldAUKdG9rZW5QcmljZQkAbAYACgAABQ10b2tlbkRlY2ltYWxzAAAAAAUERE9XTgQTdG9rZW5zUGVyQWxsb2NhdGlvbgkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwkArAICCQCkAwEFC2xhdW5jaHBhZElkBRZrZXlUb2tlbnNQZXJBbGxvY2F0aW9uBBR0cmFuc2ZlclRva2Vuc0Ftb3VudAkAZAIJAGQCCQBoAgUNd29ubmVkVGlja2V0cwUPdG9rZW5zUGVyVGlja2V0CQBoAgUSYWxsb3dlZEFsbG9jYXRpb25zBRN0b2tlbnNQZXJBbGxvY2F0aW9uCQBoAgUPd29ubmVkSENUaWNrZXRzBQ90b2tlbnNQZXJUaWNrZXQEG25vdEFsbG93ZWRBbGxvY2F0aW9uc1Rva2VucwkAaAIJAGUCBRFib3VnaHRBbGxvY2F0aW9ucwUSYWxsb3dlZEFsbG9jYXRpb25zBRN0b2tlbnNQZXJBbGxvY2F0aW9uBBZidXlBc3NldEZvckFsbG9jYXRpb25zCQBrAwkAawMFG25vdEFsbG93ZWRBbGxvY2F0aW9uc1Rva2VucwUKdG9rZW5QcmljZQkAbAYACgAABQ10b2tlbkRlY2ltYWxzAAAAAAUERE9XTgkAZAIAZAUKY29tbWlzc2lvbgBkBBpidXlBc3NldEZvclVud29ubmVkVGlja2V0cwkAawMJAGgCCQBlAgUNYm91Z2h0VGlja2V0cwUNd29ubmVkVGlja2V0cwULdGlja2V0UHJpY2UJAGQCAGQFCmNvbW1pc3Npb24AZAQcYnV5QXNzZXRGb3JIQ1Vud29ubmVkVGlja2V0cwkAawMJAGgCCQBlAgUPYm91Z2h0SENUaWNrZXRzBQ93b25uZWRIQ1RpY2tldHMFC3RpY2tldFByaWNlCQBkAgBkBQxjb21taXNzaW9uSEMAZAQPY2xhaW1lZEJ1eVRva2VuCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgkArAICCQCsAgIJAKUIAQgFAWkGY2FsbGVyAgFfCQCkAwEFC2xhdW5jaHBhZElkBRdrZXlVc2VyQ2xhaW1lZEJ1eVRva2VucwAAAwMDCQBmAgAABRZidXlBc3NldEZvckFsbG9jYXRpb25zBgkAZgIAAAUaYnV5QXNzZXRGb3JVbndvbm5lZFRpY2tldHMGCQBmAgAABRxidXlBc3NldEZvckhDVW53b25uZWRUaWNrZXRzCQACAQJSRXJyb3Igd2l0aCBhbGxvd2VkIGFsbG9jYXRpb24gcGFyYW0gb3Igd29ubmVkIHRpY2tldHMgcGFyYW0gcGxlYXNlIGNvbnRhY3Qgc3VwcG9ydAQWcmV0dXJuZWRCdXlBc3NldEFtb3VudAkAZQIJAGQCCQBkAgUaYnV5QXNzZXRGb3JVbndvbm5lZFRpY2tldHMFHGJ1eUFzc2V0Rm9ySENVbndvbm5lZFRpY2tldHMFFmJ1eUFzc2V0Rm9yQWxsb2NhdGlvbnMFD2NsYWltZWRCdXlUb2tlbgQQdHJhbnNmZXJCdXlBc3NldAMJAGYCBRZyZXR1cm5lZEJ1eUFzc2V0QW1vdW50AAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBRZyZXR1cm5lZEJ1eUFzc2V0QW1vdW50BQpidXlBc3NldElkCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICCQClCAEIBQFpBmNhbGxlcgIBXwkApAMBBQtsYXVuY2hwYWRJZAUXa2V5VXNlckNsYWltZWRCdXlUb2tlbnMFFnJldHVybmVkQnV5QXNzZXRBbW91bnQFA25pbAUDbmlsBANpbnYDAwkAZgIFFnJldHVybmVkQnV5QXNzZXRBbW91bnQAAAkAAAIFCmJ1eUFzc2V0SWQFBFVTRE4HCQD8BwQFEnN0YWtpbmdVU0ROQWRkcmVzcwIOdW5sb2NrTmV1dHJpbm8JAMwIAgUWcmV0dXJuZWRCdXlBc3NldEFtb3VudAkAzAgCCQDYBAEFBFVTRE4FA25pbAUDbmlsAAADCQAAAgUDaW52BQNpbnYEDWNsYWltZWRQYXJhbXMJALUJAgkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzCQCsAgIJAKQDAQULbGF1bmNocGFkSWQFDmtleUNsYWltUGFyYW1zAghjbGFpbUFsbAIBLAMJAAACCQCRAwIFDWNsYWltZWRQYXJhbXMAAAIIY2xhaW1BbGwEDnRyYW5zZmVyVG9rZW5zAwkAZgIFFHRyYW5zZmVyVG9rZW5zQW1vdW50AAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBRR0cmFuc2ZlclRva2Vuc0Ftb3VudAUHdG9rZW5JZAUDbmlsBQNuaWwJAM4IAgkAzggCCQDMCAIJAQxCb29sZWFuRW50cnkCCQCsAgIJAKwCAgkArAICCQClCAEIBQFpBmNhbGxlcgIBXwkApAMBBQtsYXVuY2hwYWRJZAUSa2V5VXNlckNsYWltU3RhdHVzBgkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgkApQgBCAUBaQZjYWxsZXICAV8JAKQDAQULbGF1bmNocGFkSWQFFGtleVVzZXJDbGFpbWVkVG9rZW5zBRR0cmFuc2ZlclRva2Vuc0Ftb3VudAUDbmlsBQ50cmFuc2ZlclRva2VucwUQdHJhbnNmZXJCdXlBc3NldAMJAAACCQCRAwIFDWNsYWltZWRQYXJhbXMAAAILY2xhaW1QZXJpb2QEDWNsYWltZWRUb2tlbnMJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICCQCsAgIJAKwCAgkApQgBCAUBaQZjYWxsZXICAV8JAKQDAQULbGF1bmNocGFkSWQFFGtleVVzZXJDbGFpbWVkVG9rZW5zAAAEDHVubG9ja1BlcmlvZAkBBXZhbHVlAQkAtgkBCQCRAwIFDWNsYWltZWRQYXJhbXMAAgQLYmxvY2tIZWlnaHQJAGQCCQEFdmFsdWUBCQC2CQEJAJEDAgUNY2xhaW1lZFBhcmFtcwADBQ5maW5hbGl6ZUhlaWdodAQMdW5sb2NrSGVpZ2h0CQBkAgUMdW5sb2NrUGVyaW9kBQtibG9ja0hlaWdodAQSYWxsb3dlZFN0YXJ0QW1vdW50CQBrAwUUdHJhbnNmZXJUb2tlbnNBbW91bnQJAQV2YWx1ZQEJALYJAQkAkQMCBQ1jbGFpbWVkUGFyYW1zAAEAZAQTYWxsb3dlZFRva2Vuc0Ftb3VudAkAZAIFEmFsbG93ZWRTdGFydEFtb3VudAMJAGYCBQZoZWlnaHQFC2Jsb2NrSGVpZ2h0CQBlAgkAawMJAGUCBRR0cmFuc2ZlclRva2Vuc0Ftb3VudAUSYWxsb3dlZFN0YXJ0QW1vdW50CQBlAgkAlwMBCQDMCAIFBmhlaWdodAkAzAgCBQx1bmxvY2tIZWlnaHQFA25pbAULYmxvY2tIZWlnaHQFDHVubG9ja1BlcmlvZAUNY2xhaW1lZFRva2VucwkAZQIAAAUNY2xhaW1lZFRva2VucwQQY2xhaW1TdGF0dXNFbnRyeQMJAGcCBRR0cmFuc2ZlclRva2Vuc0Ftb3VudAkAZAIFDWNsYWltZWRUb2tlbnMFE2FsbG93ZWRUb2tlbnNBbW91bnQJAMwIAgkBDEJvb2xlYW5FbnRyeQIJAKwCAgkArAICCQCsAgIJAKUIAQgFAWkGY2FsbGVyAgFfCQCkAwEFC2xhdW5jaHBhZElkBRJrZXlVc2VyQ2xhaW1TdGF0dXMGBQNuaWwFA25pbAMDCQBmAgUTYWxsb3dlZFRva2Vuc0Ftb3VudAAABgkAZgIFFnJldHVybmVkQnV5QXNzZXRBbW91bnQAAAQOdHJhbnNmZXJUb2tlbnMDCQBmAgUTYWxsb3dlZFRva2Vuc0Ftb3VudAAACQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICCQClCAEIBQFpBmNhbGxlcgIBXwkApAMBBQtsYXVuY2hwYWRJZAUUa2V5VXNlckNsYWltZWRUb2tlbnMJAGQCBQ1jbGFpbWVkVG9rZW5zBRNhbGxvd2VkVG9rZW5zQW1vdW50CQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUTYWxsb3dlZFRva2Vuc0Ftb3VudAUHdG9rZW5JZAUDbmlsBQNuaWwJAM4IAgUQdHJhbnNmZXJCdXlBc3NldAUOdHJhbnNmZXJUb2tlbnMJAAIBAhBOb3RoaW5nIHRvIGNsYWltCQACAQIWVW5rbm93biBjbGFpbSBmdW5jdGlvbgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARBjbGFpbUZyZWV6ZVRva2VuAQtsYXVuY2hwYWRJZAkBC3ZhbHVlT3JFbHNlAgkBCGlzQWN0aXZlAAQVZnJlZXplQWRkaXRpb25hbFRva2VuCQELdmFsdWVPckVsc2UCCQCbCAIFBHRoaXMJAKwCAgkApAMBBQtsYXVuY2hwYWRJZAUYa2V5RnJlZXplQWRkaXRpb25hbFRva2VuBwMJAQEhAQkBCWlzRGVmaW5lZAEJAJoIAgUEdGhpcwkArAICCQCkAwEFC2xhdW5jaHBhZElkBRFrZXlGaW5hbGlzZUhlaWdodAkAAgECMVlvdSBjYW4ndCBjbGFpbSBiZWNhdXNlIHJlc3VsdHMgYXJlIG5vdCBmaW5hbGl6ZWQDCQEBIQEFFWZyZWV6ZUFkZGl0aW9uYWxUb2tlbgkAAgECOVRoZXJlIGFyZSBubyBhZGRpdGlvbmFsIHRva2VuIGZyZWV6aW5nIGZvciB0aGlzIGxhdW5jaHBhZAQHdG9rZW5JZAkA2QQBCQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzCQCsAgIJAKQDAQULbGF1bmNocGFkSWQFEGtleUZyZWV6ZVRva2VuSWQEEXVzZXJUb2tlbnNGcmVlemVkCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgkArAICCQCsAgIJAKUIAQgFAWkGY2FsbGVyAgFfCQCkAwEFC2xhdW5jaHBhZElkBRJrZXlVc2VyRnJlZXplVG9rZW4AAAQLc3RhcnRIZWlnaHQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICCQCkAwEFC2xhdW5jaHBhZElkBQ5rZXlTdGFydEhlaWdodAAABAhkdXJhdGlvbgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIJAKQDAQULbGF1bmNocGFkSWQFC2tleUR1cmF0aW9uAAAEE2ZyZWV6ZVRva2VuRHVyYXRpb24JARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAKwCAgkApAMBBQtsYXVuY2hwYWRJZAUWa2V5RnJlZXplVG9rZW5EdXJhdGlvbgQOYmxvY2tFbmRIZWlnaHQJAGQCCQBkAgULc3RhcnRIZWlnaHQFCGR1cmF0aW9uBRNmcmVlemVUb2tlbkR1cmF0aW9uAwkAAAIFEXVzZXJUb2tlbnNGcmVlemVkAAAJAAIBAjhZb3UgYXJlIGFscmVhZHkgY2xhaW1lZCB5b3VyIHRva2VucyBvciBub3QgcGFpZCBhbnl0aGluZwMJAGYCBQ5ibG9ja0VuZEhlaWdodAUGaGVpZ2h0CQACAQkArAICAhlZb3VyIHRva2VucyBmcmVlemVkIHRlZWwgCQCkAwEFDmJsb2NrRW5kSGVpZ2h0CQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgURdXNlclRva2Vuc0ZyZWV6ZWQFB3Rva2VuSWQJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIJAKUIAQgFAWkGY2FsbGVyAgFfCQCkAwEFC2xhdW5jaHBhZElkBRJrZXlVc2VyRnJlZXplVG9rZW4AAAUDbmlsAWkBEHRyYW5zZmVyQnV5QXNzZXQCC2xhdW5jaHBhZElkBmFtb3VudAkBC3ZhbHVlT3JFbHNlAgkBCGlzQWN0aXZlAAkBC3ZhbHVlT3JFbHNlAgkBC2lzQWRtaW5DYWxsAQUBaQQOcHJvamVjdEFkZHJlc3MJARFAZXh0ck5hdGl2ZSgxMDYyKQEJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBHRoaXMJAKwCAgkApAMBBQtsYXVuY2hwYWRJZAUKa2V5QWRkcmVzcwQNJHQwMzYyMjQzNjM3NAkBFmdldEFzc2V0SW5mb0Zyb21TdHJpbmcBCQEFdmFsdWUBCQCdCAIFBHRoaXMJAKwCAgkApAMBBQtsYXVuY2hwYWRJZAULa2V5QnV5VG9rZW4ECmJ1eUFzc2V0SWQIBQ0kdDAzNjIyNDM2Mzc0Al8xBA1idXlBc3NldFN0cklkCAUNJHQwMzYyMjQzNjM3NAJfMgQMYnV5QXNzZXROYW1lCAUNJHQwMzYyMjQzNjM3NAJfMwQQYnV5QXNzZXREZWNpbWFscwgFDSR0MDM2MjI0MzYzNzQCXzQEEnRyYW5zZmVyZWRCdXlBc3NldAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIJAKQDAQULbGF1bmNocGFkSWQFE2tleVRyYW5zZmVyQnV5QXNzZXQAAAQDaW52AwMJAGYCBQZhbW91bnQAAAkAAAIFCmJ1eUFzc2V0SWQFBFVTRE4HCQD8BwQFEnN0YWtpbmdVU0ROQWRkcmVzcwIOdW5sb2NrTmV1dHJpbm8JAMwIAgUGYW1vdW50CQDMCAIJANgEAQUEVVNETgUDbmlsBQNuaWwAAAMJAAACBQNpbnYFA2ludgkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCkAwEFC2xhdW5jaHBhZElkBRNrZXlUcmFuc2ZlckJ1eUFzc2V0CQBkAgUSdHJhbnNmZXJlZEJ1eUFzc2V0BQZhbW91bnQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUOcHJvamVjdEFkZHJlc3MFBmFtb3VudAUKYnV5QXNzZXRJZAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCHNodXRkb3duAAkBC3ZhbHVlT3JFbHNlAgkBC2lzQWRtaW5DYWxsAQUBaQMJAQEhAQUGYWN0aXZlCQACAQIVREFwcCBhbHJlYWR5IGluYWN0aXZlCQDMCAIJAQxCb29sZWFuRW50cnkCBQlrZXlBY3RpdmUHBQNuaWwBaQEIYWN0aXZhdGUACQELdmFsdWVPckVsc2UCCQELaXNBZG1pbkNhbGwBBQFpAwUGYWN0aXZlCQACAQITREFwcCBhbHJlYWR5IGFjdGl2ZQkAzAgCCQEMQm9vbGVhbkVudHJ5AgUJa2V5QWN0aXZlBgUDbmlsAQJ0eAEGdmVyaWZ5AAQTbXVsdGlTaWduZWRCeUFkbWlucwQSYWRtaW5QdWJLZXkxU2lnbmVkAwkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAUMYWRtaW5QdWJLZXkxAAEAAAQSYWRtaW5QdWJLZXkyU2lnbmVkAwkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAQUMYWRtaW5QdWJLZXkyAAEAAAQSYWRtaW5QdWJLZXkzU2lnbmVkAwkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAgUMYWRtaW5QdWJLZXkzAAEAAAkAZwIJAGQCCQBkAgUSYWRtaW5QdWJLZXkxU2lnbmVkBRJhZG1pblB1YktleTJTaWduZWQFEmFkbWluUHViS2V5M1NpZ25lZAACBA1zaWduZWRCeUFkbWluAwMDCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAABQxhZG1pblB1YktleTEGCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAABQxhZG1pblB1YktleTIGCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAABQxhZG1pblB1YktleTMGCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAABRJhZG1pblB1YktleVN0YWtpbmcEByRtYXRjaDAFAnR4AwkAAQIFByRtYXRjaDACD0RhdGFUcmFuc2FjdGlvbgQDZHR4BQckbWF0Y2gwAwkBC3ZhbHVlT3JFbHNlAgkAmwgCBQZvcmFjbGUFIWtleUxhdW5jaHBhZERhdGFUcmFuc2FjdGlvblN0YXR1cwcFDXNpZ25lZEJ5QWRtaW4HBRNtdWx0aVNpZ25lZEJ5QWRtaW5zsC5R7A==", "height": 2723185, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: GwsfeCjPHUA2ZWTvfrdVFcd2TZ86yDRdhW4SUKY6VtLE Next: 6fXQU633NvXpTrp9JYc1tekuydQtKwEk2fu57G21dN1x Diff:
OldNewDifferences
302302 then {
303303 let bP = {
304304 let be = ({
305- let be = invoke(ak, "callFunction", ["howManyYouGetREADONLY", [toString(aH.payments[0].amount), aP]], nil)
305+ let be = invoke(ak, "callFunction", ["howManyYouGetREADONLY", [toString(aH.payments[0].amount), base58'']], nil)
306306 if ($isInstanceOf(be, "List[Any]"))
307307 then be
308308 else throw(($getType(be) + " couldn't be cast to List[Any]"))
506506 then {
507507 let bP = {
508508 let be = ({
509- let be = invoke(ak, "callFunction", ["howManyYouGetREADONLY", [toString(aH.payments[0].amount), aP]], nil)
509+ let be = invoke(ak, "callFunction", ["howManyYouGetREADONLY", [toString(aH.payments[0].amount), base58'']], nil)
510510 if ($isInstanceOf(be, "List[Any]"))
511511 then be
512512 else throw(($getType(be) + " couldn't be cast to List[Any]"))
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "active"
55
66 let b = "active_all_contracts"
77
88 let c = "admin_pub_1"
99
1010 let d = "admin_pub_2"
1111
1212 let e = "admin_pub_3"
1313
1414 let f = "launchpad_data_transaction_status"
1515
1616 let g = "launchpad_next_id"
1717
1818 let h = "launchpad_active_id"
1919
2020 let i = "init_caller"
2121
2222 let j = "_address"
2323
2424 let k = "_init_height"
2525
2626 let l = "_start_height"
2727
2828 let m = "_finalise_height"
2929
3030 let n = "_comission"
3131
3232 let o = "_asset_id"
3333
3434 let p = "_total_token_amount"
3535
3636 let q = "_total_buy_asset_sold"
3737
3838 let r = "_tokens_per_ticket"
3939
4040 let s = "_price_per_token"
4141
4242 let t = "_swop_per_ticket"
4343
4444 let u = "_tickets_swopfi_members"
4545
4646 let v = "_tokens_access_list"
4747
4848 let w = "_tokens_per_allocation"
4949
5050 let x = "_ticket_last_number"
5151
5252 let y = "_GSwop_amount"
5353
5454 let z = "_ref_id"
5555
5656 let A = "_verify_hash"
5757
5858 let B = "_duration"
5959
6060 let C = "_total_purchased_buy_asset_in_marketing"
6161
6262 let D = "_total_purchased_buy_asset_in_marketing_finalized"
6363
6464 let E = "_transfer_buy_asset"
6565
6666 let F = "_freeze_swop_duration"
6767
6868 let G = "_freeze_additional_token"
6969
7070 let H = "_freeze_token_id"
7171
7272 let I = "_freeze_token_duration"
7373
7474 let J = "_freeze_token_per_ticket"
7575
7676 let K = "_buy_token"
7777
7878 let L = "_claim_params"
7979
8080 let M = "_high_competition_comission"
8181
8282 let N = "_high_competition_sale"
8383
8484 let O = "_high_competition_ticket_last_number"
8585
8686 let P = "_tickets_high_competition"
8787
8888 let Q = "_total_buy_asset_sold_high_competition"
8989
9090 let R = "_claimed_tokens"
9191
9292 let S = "_claimed_buy_tokens"
9393
9494 let T = "_bought_tickets"
9595
9696 let U = "_tickets_number"
9797
9898 let V = "_tickets_number_high_competition"
9999
100100 let W = "_bought_tickets_high_competition"
101101
102102 let X = "_available_purchase_marketing"
103103
104104 let Y = "_purchased_buy_asset_in_marketing"
105105
106106 let Z = "_bought_allocations"
107107
108108 let aa = "_claim_status"
109109
110110 let ab = "_tickets_result"
111111
112112 let ac = "_tickets_result_high_competition"
113113
114114 let ad = "_freeze_token_amount"
115115
116116 let ae = Address(base58'3MvVBtsXroQpy1tsPw21TU2ET9A8WfmrNjz')
117117
118118 let af = Address(base58'3N8E9LU71MDkdP8FWtbP4TBXCNhoc15hWfs')
119119
120120 let ag = Address(base58'3N2eueE5vLLKe8jXuBDbdbKcPaH36yG1Had')
121121
122122 let ah = Address(base58'3N8STSY7dWpBYLiCimEQMkRizyWePSX3qQx')
123123
124124 let ai = base58'4W19ndijcc2CsQa9HGW2dfXKTVXhnneWWttxXrtjPmEp'
125125
126126 let aj = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
127127
128128 let ak = Address(base58'3MqjSoPUdGHaan9uhxwTnFw1uH7uZ8dgt8f')
129129
130130 let al = 2
131131
132132 let am = valueOrElse(getIntegerValue(this, h), -1)
133133
134134 func an (ao) = {
135135 let ap = getString(ae, ao)
136136 if ($isInstanceOf(ap, "String"))
137137 then {
138138 let aq = ap
139139 fromBase58String(aq)
140140 }
141141 else {
142142 let ar = ap
143143 throw("Admin public key is empty")
144144 }
145145 }
146146
147147
148148 let as = an(c)
149149
150150 let at = an(d)
151151
152152 let au = an(e)
153153
154154 func av (aw) = {
155155 let ap = aw
156156 if ($isInstanceOf(ap, "ByteVector"))
157157 then {
158158 let ax = ap
159159 let ay = toBase58String(ax)
160160 let az = valueOrErrorMessage(assetInfo(ax), (("Asset " + ay) + " doesn't exist"))
161161 $Tuple3(ay, az.name, az.decimals)
162162 }
163163 else if ($isInstanceOf(ap, "Unit"))
164164 then {
165165 let aA = ap
166166 $Tuple3("WAVES", "WAVES", 8)
167167 }
168168 else throw("Match error")
169169 }
170170
171171
172172 func aB () = valueOrElse(getInteger(this, g), 1)
173173
174174
175175 func aC () = valueOrElse(getInteger(ah, ((("rpd_balance_" + toBase58String(ai)) + "_") + toString(this))), 0)
176176
177177
178178 let aD = valueOrElse(getBoolean(this, a), true)
179179
180180 let aE = valueOrElse(getBoolean(ae, b), true)
181181
182182 func aF () = if (if (aD)
183183 then aE
184184 else false)
185185 then unit
186186 else throw("DApp is inactive at this moment")
187187
188188
189189 func aG (aH) = if (containsElement([as, at, au], aH.callerPublicKey))
190190 then unit
191191 else throw("Only admin can call this function")
192192
193193
194194 func aI (aJ) = if ((aJ == "WAVES"))
195195 then $Tuple4(unit, "WAVES", "WAVES", 8)
196196 else {
197197 let ay = aJ
198198 let ax = fromBase58String(aJ)
199199 let az = valueOrErrorMessage(assetInfo(ax), (("Asset " + ay) + " doesn't exist"))
200200 $Tuple4(ax, ay, az.name, az.decimals)
201201 }
202202
203203
204204 func aK (aL,aM,aN) = {
205205 let aO = aI(value(getString(this, (toString(aL) + K))))
206206 let aP = aO._1
207207 let aQ = aO._2
208208 let aR = aO._3
209209 let aS = aO._4
210210 let aT = getIntegerValue(this, (toString(aL) + s))
211211 let aU = getIntegerValue(this, (toString(aL) + r))
212212 let aV = aI(getStringValue(this, (toString(aL) + o)))
213213 let aW = aV._1
214214 let aX = aV._2
215215 let aY = aV._3
216216 let aZ = aV._4
217217 let ba = fraction(aU, aT, pow(10, 0, aZ, 0, 0, DOWN))
218218 let bb = if ((aN == 1))
219219 then fraction(ba, getIntegerValue(this, (toString(aL) + n)), 100)
220220 else fraction(ba, getIntegerValue(this, (toString(aL) + M)), 100)
221221 let bc = (aM * (ba + bb))
222222 let bd = {
223223 let be = ({
224224 let be = invoke(ak, "callFunction", ["howManyYouPayREADONLY", [toString(bc), aP]], nil)
225225 if ($isInstanceOf(be, "List[Any]"))
226226 then be
227227 else throw(($getType(be) + " couldn't be cast to List[Any]"))
228228 })[0]
229229 if ($isInstanceOf(be, "Int"))
230230 then be
231231 else throw(($getType(be) + " couldn't be cast to Int"))
232232 }
233233 if ((bd == bd))
234234 then fraction(bd, 101, 100)
235235 else throw("Strict value is not equal to itself.")
236236 }
237237
238238
239239 @Callable(aH)
240240 func hashingRandom (aL,bf) = valueOrElse(aF(), valueOrElse(aG(aH), [StringEntry((toString(aL) + A), bf)]))
241241
242242
243243
244244 @Callable(aH)
245245 func initCaller (bg) = valueOrElse(aF(), valueOrElse(aG(aH), [StringEntry(i, bg)]))
246246
247247
248248
249249 @Callable(aH)
250250 func init (bh,bi,bj,bk,bl,aU,bm,bn,bo,bp,bq,br,bs,bt,bu,bv,bw,bx) = valueOrElse(aF(), if ((toString(aH.caller) != valueOrElse(getString(this, i), "")))
251251 then throw("Only project admin can call init function")
252252 else if ((size(aH.payments) != 1))
253253 then throw("One attached payment expected")
254254 else if ((height > bi))
255255 then throw("Start height must be greater than blockchain height")
256256 else if (if (bw)
257257 then (size(bx) != 3)
258258 else false)
259259 then throw("Freeze params list must have 3 items")
260260 else {
261261 let aL = aB()
262262 let by = toString(aL)
263263 let bz = $Tuple2(aH.payments[0].amount, aH.payments[0].assetId)
264264 let bA = bz._1
265265 let bB = bz._2
266266 let bC = av(bB)
267267 let bD = bC._1
268268 let bE = bC._2
269269 let bF = bC._3
270270 let bG = if (bw)
271271 then [BooleanEntry((by + G), true), StringEntry((by + H), bx[0]), IntegerEntry((by + I), parseIntValue(bx[1])), IntegerEntry((by + J), parseIntValue(bx[2]))]
272272 else nil
273273 ([IntegerEntry((bD + "_launchpad"), aL), IntegerEntry(g, (aL + 1)), StringEntry((by + j), bh), IntegerEntry((by + k), height), IntegerEntry((by + l), bi), IntegerEntry((by + B), bj), StringEntry((by + K), bk), IntegerEntry((by + F), br), IntegerEntry((by + p), bA), StringEntry((by + o), bD), IntegerEntry((by + n), bl), IntegerEntry((by + x), 0), IntegerEntry((by + O), 0), IntegerEntry((by + r), aU), IntegerEntry((by + s), bm), IntegerEntry((by + t), bq), IntegerEntry((by + u), bn), IntegerEntry((by + v), bo), IntegerEntry((by + w), bp), StringEntry((by + L), makeString(bs, ",")), BooleanEntry((by + N), bt), IntegerEntry((by + M), bu), IntegerEntry((by + P), bv), IntegerEntry(h, aL), StringEntry(i, "")] ++ bG)
274274 })
275275
276276
277277
278278 @Callable(aH)
279279 func commitSwopfiSale (aL,bH) = valueOrElse(aF(), {
280280 let aT = getIntegerValue(this, (toString(aL) + s))
281281 let aU = getIntegerValue(this, (toString(aL) + r))
282282 let bI = aI(getStringValue(this, (toString(aL) + o)))
283283 let aW = bI._1
284284 let aX = bI._2
285285 let aY = bI._3
286286 let aZ = bI._4
287287 let ba = fraction(aU, aT, pow(10, 0, aZ, 0, 0, DOWN))
288288 let bb = fraction(ba, getIntegerValue(this, (toString(aL) + n)), 100)
289289 let bJ = aI(value(getString(this, (toString(aL) + K))))
290290 let aP = bJ._1
291291 let aQ = bJ._2
292292 let aR = bJ._3
293293 let aS = bJ._4
294294 let bK = valueOrElse(getInteger(af, (toString(aH.caller) + y)), 0)
295295 let bL = (bK / getIntegerValue(this, (toString(aL) + t)))
296296 let bM = valueOrElse(getInteger(this, (((toString(aH.caller) + "_") + toString(aL)) + T)), 0)
297297 let bN = (bL - bM)
298298 let bi = value(getInteger(this, (toString(aL) + l)))
299299 let bj = value(getInteger(this, (toString(aL) + B)))
300300 let bw = valueOrElse(getBoolean(this, (toString(aL) + G)), false)
301301 let bO = if ((aH.payments[0].assetId == unit))
302302 then {
303303 let bP = {
304304 let be = ({
305- let be = invoke(ak, "callFunction", ["howManyYouGetREADONLY", [toString(aH.payments[0].amount), aP]], nil)
305+ let be = invoke(ak, "callFunction", ["howManyYouGetREADONLY", [toString(aH.payments[0].amount), base58'']], nil)
306306 if ($isInstanceOf(be, "List[Any]"))
307307 then be
308308 else throw(($getType(be) + " couldn't be cast to List[Any]"))
309309 })[0]
310310 if ($isInstanceOf(be, "Int"))
311311 then be
312312 else throw(($getType(be) + " couldn't be cast to Int"))
313313 }
314314 if ((bP == bP))
315315 then {
316316 let aM = (bP / (ba + bb))
317317 let bc = (aM * (ba + bb))
318318 let bd = {
319319 let be = ({
320320 let be = invoke(ak, "callFunction", ["howManyYouPayREADONLY", [toString(bc), aP]], nil)
321321 if ($isInstanceOf(be, "List[Any]"))
322322 then be
323323 else throw(($getType(be) + " couldn't be cast to List[Any]"))
324324 })[0]
325325 if ($isInstanceOf(be, "Int"))
326326 then be
327327 else throw(($getType(be) + " couldn't be cast to Int"))
328328 }
329329 if ((bd == bd))
330330 then {
331331 let bQ = invoke(ak, "callFunction", ["exchange", [toString(bc)]], [AttachedPayment(unit, bd)])
332332 if ((bQ == bQ))
333333 then {
334334 let bR = (aH.payments[0].amount - bc)
335335 let bS = if ((bR > 0))
336336 then [ScriptTransfer(aH.caller, bR, aH.payments[0].assetId)]
337337 else nil
338338 $Tuple3(bc, aP, bS)
339339 }
340340 else throw("Strict value is not equal to itself.")
341341 }
342342 else throw("Strict value is not equal to itself.")
343343 }
344344 else throw("Strict value is not equal to itself.")
345345 }
346346 else $Tuple3(aH.payments[0].amount, aH.payments[0].assetId, nil)
347347 let bA = bO._1
348348 let bB = bO._2
349349 let bT = bO._3
350350 if ((am != aL))
351351 then throw("There is no active launchpad or this launchpad is ended")
352352 else if ((bi > height))
353353 then throw("Launchpad sale not started yet")
354354 else if ((height > (bi + bj)))
355355 then throw("Launchpad sale ended")
356356 else if (if (!(bw))
357357 then if ((size(aH.payments) != 1))
358358 then true
359359 else (bB != aP)
360360 else false)
361361 then throw((("One attached payment in " + aR) + " expected"))
362362 else if (if (bw)
363363 then if ((size(aH.payments) != 2))
364364 then true
365365 else (bB != aP)
366366 else false)
367367 then {
368368 let bU = getStringValue(this, (toString(aL) + H))
369369 throw(((("Two attached payments expected: First in " + aR) + ", second in ") + bU))
370370 }
371371 else if (if ((0 >= bL))
372372 then true
373373 else (0 >= bN))
374374 then throw("Not enought SWOP in staking to buy tickets")
375375 else {
376376 let bV = (bA / (ba + bb))
377377 let bW = min([bV, bN])
378378 let bX = (bW * (ba + bb))
379379 let bR = (bA - bX)
380380 if ((bV == 0))
381381 then throw((("Not enought " + aR) + " to buy tickets"))
382382 else if ((bR != 0))
383383 then throw((((("Wrong payment. To buy " + toString(bW)) + "tickets you need to pay ") + toString(bX)) + aR))
384384 else {
385385 let bG = if (bw)
386386 then {
387387 let bU = getStringValue(this, (toString(aL) + H))
388388 let bY = getIntegerValue(this, (toString(aL) + J))
389389 let bZ = $Tuple2(aH.payments[1].amount, aH.payments[1].assetId)
390390 let ca = bZ._1
391391 let cb = bZ._2
392392 let cc = av(bB)
393393 let cd = cc._1
394394 let ce = cc._2
395395 let cf = cc._3
396396 let cg = (bY * bV)
397397 if (if ((cd != bU))
398398 then true
399399 else (cg != ca))
400400 then throw((((("You need to add " + toString(cg)) + " ") + ce) + " as a second payment"))
401401 else [IntegerEntry((((toString(aH.caller) + "_") + toString(aL)) + ad), ca)]
402402 }
403403 else nil
404404 let ch = valueOrElse(getString(this, (((toString(aH.caller) + "_") + toString(aL)) + U)), "")
405405 let ci = getIntegerValue(this, (toString(aL) + x))
406406 let cj = ((toString((ci + 1)) + "-") + toString((ci + bW)))
407407 let ck = (ch + (if ((ch != ""))
408408 then ("," + cj)
409409 else ("" + cj)))
410410 let cl = if ((aP == ai))
411411 then invoke(ah, "lockNeutrino", nil, [AttachedPayment(bB, bA)])
412412 else 0
413413 if ((cl == cl))
414414 then {
415415 let cm = (([IntegerEntry((((toString(aH.caller) + "_") + toString(aL)) + T), (bM + bW)), IntegerEntry((toString(aL) + x), (ci + bW)), StringEntry((((toString(aH.caller) + "_") + toString(aL)) + U), ck)] ++ bG) ++ bT)
416416 if (!(isDefined(getString(this, (((toString(aH.caller) + "_") + toString(aL)) + z)))))
417417 then (cm ++ [StringEntry((((toString(aH.caller) + "_") + toString(aL)) + z), bH)])
418418 else cm
419419 }
420420 else throw("Strict value is not equal to itself.")
421421 }
422422 }
423423 })
424424
425425
426426
427427 @Callable(aH)
428428 func commitAccessListSale (aL,bH) = valueOrElse(aF(), {
429429 let cn = $Tuple2(aH.payments[0].amount, aH.payments[0].assetId)
430430 let bA = cn._1
431431 let bB = cn._2
432432 let co = aI(value(getString(this, (toString(aL) + K))))
433433 let aP = co._1
434434 let aQ = co._2
435435 let aR = co._3
436436 let aS = co._4
437437 let cp = valueOrElse(getInteger(this, (((toString(aH.caller) + "_") + toString(aL)) + Y)), 0)
438438 let cq = valueOrElse(getInteger(this, (toString(aL) + C)), 0)
439439 let cr = valueOrElse(getInteger(this, (((toString(aH.caller) + "_") + toString(aL)) + Z)), 0)
440440 let bl = getIntegerValue(this, (toString(aL) + n))
441441 let aT = getIntegerValue(this, (toString(aL) + s))
442442 let bp = getIntegerValue(this, (toString(aL) + w))
443443 let cs = aI(getStringValue(this, (toString(aL) + o)))
444444 let aW = cs._1
445445 let aX = cs._2
446446 let aY = cs._3
447447 let aZ = cs._4
448448 let ct = fraction(fraction(aT, bp, pow(10, 0, aZ, 0, 0, DOWN)), (100 + bl), 100)
449449 let bi = value(getInteger(this, (toString(aL) + l)))
450450 let bj = value(getInteger(this, (toString(aL) + B)))
451451 if ((am != aL))
452452 then throw("There is no active launchpad or this launchpad is ended")
453453 else if ((bi > height))
454454 then throw("Launchpad sale not started yet")
455455 else if ((height > (bi + bj)))
456456 then throw("Launchpad sale ended")
457457 else if (if ((size(aH.payments) != 1))
458458 then true
459459 else (bB != aP))
460460 then throw((("One attached payment in " + aR) + " expected"))
461461 else if ((cr >= al))
462462 then throw((("You can buy only " + toString(al)) + "allocations"))
463463 else if (if ((ct != bA))
464464 then ((ct * 2) != bA)
465465 else false)
466466 then throw(((("Wrong payment. You can buy 1 or 2 allocations for " + toString(ct)) + aR) + " per allocation"))
467467 else {
468468 let cu = (bA / ct)
469469 let cl = if ((aP == ai))
470470 then invoke(ah, "lockNeutrino", nil, [AttachedPayment(bB, bA)])
471471 else 0
472472 if ((cl == cl))
473473 then {
474474 let cm = [IntegerEntry((((toString(aH.caller) + "_") + toString(aL)) + Z), (cr + cu)), IntegerEntry((((toString(aH.caller) + "_") + toString(aL)) + Y), (cp + bA)), IntegerEntry((toString(aL) + C), (cq + bA))]
475475 if (!(isDefined(getString(this, (((toString(aH.caller) + "_") + toString(aL)) + z)))))
476476 then (cm ++ [StringEntry((((toString(aH.caller) + "_") + toString(aL)) + z), bH)])
477477 else cm
478478 }
479479 else throw("Strict value is not equal to itself.")
480480 }
481481 })
482482
483483
484484
485485 @Callable(aH)
486486 func commitHighCompetitionSale (aL,bH) = valueOrElse(aF(), {
487487 let cv = aI(value(getString(this, (toString(aL) + K))))
488488 let aP = cv._1
489489 let aQ = cv._2
490490 let aR = cv._3
491491 let aS = cv._4
492492 let bi = value(getInteger(this, (toString(aL) + l)))
493493 let bj = value(getInteger(this, (toString(aL) + B)))
494494 let cw = valueOrElse(getInteger(this, (((toString(aH.caller) + "_") + toString(aL)) + W)), 0)
495495 let cx = valueOrElse(getBoolean(this, (toString(aL) + N)), false)
496496 let aT = getIntegerValue(this, (toString(aL) + s))
497497 let aU = getIntegerValue(this, (toString(aL) + r))
498498 let cy = aI(getStringValue(this, (toString(aL) + o)))
499499 let aW = cy._1
500500 let aX = cy._2
501501 let aY = cy._3
502502 let aZ = cy._4
503503 let ba = fraction(aU, aT, pow(10, 0, aZ, 0, 0, DOWN))
504504 let bb = fraction(ba, getIntegerValue(this, (toString(aL) + M)), 100)
505505 let cz = if ((aH.payments[0].assetId == unit))
506506 then {
507507 let bP = {
508508 let be = ({
509- let be = invoke(ak, "callFunction", ["howManyYouGetREADONLY", [toString(aH.payments[0].amount), aP]], nil)
509+ let be = invoke(ak, "callFunction", ["howManyYouGetREADONLY", [toString(aH.payments[0].amount), base58'']], nil)
510510 if ($isInstanceOf(be, "List[Any]"))
511511 then be
512512 else throw(($getType(be) + " couldn't be cast to List[Any]"))
513513 })[0]
514514 if ($isInstanceOf(be, "Int"))
515515 then be
516516 else throw(($getType(be) + " couldn't be cast to Int"))
517517 }
518518 if ((bP == bP))
519519 then {
520520 let aM = (bP / (ba + bb))
521521 let bc = (aM * (ba + bb))
522522 let bd = {
523523 let be = ({
524524 let be = invoke(ak, "callFunction", ["howManyYouPayREADONLY", [toString(bc), aP]], nil)
525525 if ($isInstanceOf(be, "List[Any]"))
526526 then be
527527 else throw(($getType(be) + " couldn't be cast to List[Any]"))
528528 })[0]
529529 if ($isInstanceOf(be, "Int"))
530530 then be
531531 else throw(($getType(be) + " couldn't be cast to Int"))
532532 }
533533 if ((bd == bd))
534534 then {
535535 let bQ = invoke(ak, "callFunction", ["exchange", [toString(bc)]], [AttachedPayment(unit, bd)])
536536 if ((bQ == bQ))
537537 then {
538538 let bR = (aH.payments[0].amount - bc)
539539 let bS = if ((bR > 0))
540540 then [ScriptTransfer(aH.caller, bR, aH.payments[0].assetId)]
541541 else nil
542542 $Tuple3(bc, aP, bS)
543543 }
544544 else throw("Strict value is not equal to itself.")
545545 }
546546 else throw("Strict value is not equal to itself.")
547547 }
548548 else throw("Strict value is not equal to itself.")
549549 }
550550 else $Tuple3(aH.payments[0].amount, aH.payments[0].assetId, nil)
551551 let bA = cz._1
552552 let bB = cz._2
553553 let bT = cz._3
554554 if ((am != aL))
555555 then throw("There is no active launchpad or this launchpad is ended")
556556 else if (!(cx))
557557 then throw("There is no high competition sale for this launchpad")
558558 else if ((bi > height))
559559 then throw("Launchpad sale not started yet")
560560 else if ((height > (bi + bj)))
561561 then throw("Launchpad sale ended")
562562 else if (if ((size(aH.payments) != 1))
563563 then true
564564 else (bB != aP))
565565 then throw((("One attached payment in " + aR) + " expected"))
566566 else {
567567 let bV = (bA / (ba + bb))
568568 let cA = (bV * (ba + bb))
569569 let bR = (bA - cA)
570570 if ((bV == 0))
571571 then throw((("Not enought " + aR) + " to buy tickets"))
572572 else if ((bR != 0))
573573 then throw((((("Wrong payment. To buy " + toString(bV)) + "tickets you need to pay ") + toString(cA)) + aR))
574574 else {
575575 let ch = valueOrElse(getString(this, (((toString(aH.caller) + "_") + toString(aL)) + V)), "")
576576 let ci = getIntegerValue(this, (toString(aL) + O))
577577 let cj = ((toString((ci + 1)) + "-") + toString((ci + bV)))
578578 let ck = (ch + (if ((ch != ""))
579579 then ("," + cj)
580580 else ("" + cj)))
581581 let cl = if ((aP == ai))
582582 then invoke(ah, "lockNeutrino", nil, [AttachedPayment(bB, bA)])
583583 else 0
584584 if ((cl == cl))
585585 then {
586586 let cm = ([IntegerEntry((((toString(aH.caller) + "_") + toString(aL)) + W), (cw + bV)), IntegerEntry((toString(aL) + O), (ci + bV)), StringEntry((((toString(aH.caller) + "_") + toString(aL)) + V), ck)] ++ bT)
587587 if (!(isDefined(getString(this, (((toString(aH.caller) + "_") + toString(aL)) + z)))))
588588 then (cm ++ [StringEntry((((toString(aH.caller) + "_") + toString(aL)) + z), bH)])
589589 else cm
590590 }
591591 else throw("Strict value is not equal to itself.")
592592 }
593593 }
594594 })
595595
596596
597597
598598 @Callable(aH)
599599 func finalise (aL,cB,cC) = valueOrElse(aF(), valueOrElse(aG(aH), {
600600 let cD = getStringValue(this, (toString(aL) + A))
601601 let cE = toBase58String(sha256((toBytes(cB) + toBytes(cC))))
602602 if ((cE != cD))
603603 then throw("vrf Height hash not matching")
604604 else {
605605 let cF = aI(value(getString(this, (toString(aL) + K))))
606606 let aP = cF._1
607607 let aQ = cF._2
608608 let aR = cF._3
609609 let aS = cF._4
610610 let bh = addressFromStringValue(getStringValue(this, (toString(aL) + j)))
611611 let bl = getIntegerValue(this, (toString(aL) + n))
612612 let cG = getIntegerValue(this, (toString(aL) + M))
613613 let cH = valueOrElse(getInteger(this, (toString(aL) + E)), 0)
614614 let cI = getIntegerValue(this, (toString(aL) + q))
615615 let cJ = valueOrElse(getInteger(this, (toString(aL) + Q)), 0)
616616 let cK = fraction(cI, bl, 100)
617617 let cL = fraction(cJ, cG, 100)
618618 let cM = getIntegerValue(this, (toString(aL) + D))
619619 let cN = fraction(cM, bl, 100)
620620 let cO = ((((((cI + cM) + cK) + cN) + cJ) + cL) - cH)
621621 if ((cH > ((cI + cM) + cJ)))
622622 then throw("Can't transfer negative value to project")
623623 else {
624624 let cl = if ((aP == ai))
625625 then invoke(ah, "unlockNeutrino", [cO, toBase58String(ai)], nil)
626626 else 0
627627 if ((cl == cl))
628628 then [IntegerEntry((toString(aL) + m), height), ScriptTransfer(bh, (((cI + cJ) + cM) - cH), aP), ScriptTransfer(ag, ((cK + cN) + cL), aP)]
629629 else throw("Strict value is not equal to itself.")
630630 }
631631 }
632632 }))
633633
634634
635635
636636 @Callable(aH)
637637 func claim (aL) = valueOrElse(aF(), {
638638 let cP = valueOrElse(getInteger(this, (((toString(aH.caller) + "_") + toString(aL)) + T)), 0)
639639 let cQ = valueOrElse(getInteger(this, (((toString(aH.caller) + "_") + toString(aL)) + W)), 0)
640640 let cr = valueOrElse(getInteger(this, (((toString(aH.caller) + "_") + toString(aL)) + Z)), 0)
641641 let cR = valueOrElse(getBoolean(this, (((toString(aH.caller) + "_") + toString(aL)) + aa)), false)
642642 let cS = valueOrElse(getInteger(this, (toString(aL) + m)), 0)
643643 if ((cS == 0))
644644 then throw("You can't claim because results are not finalized")
645645 else if (cR)
646646 then throw("You are already claimed")
647647 else if (if (if ((cP == 0))
648648 then (cr == 0)
649649 else false)
650650 then (cQ == 0)
651651 else false)
652652 then throw("You can't claim because you don't buy anything")
653653 else {
654654 let cT = aI(valueOrElse(getString(this, (toString(aL) + K)), toBase58String(ai)))
655655 let aP = cT._1
656656 let aQ = cT._2
657657 let aR = cT._3
658658 let aS = cT._4
659659 let cU = valueOrElse(getInteger(this, (((toString(aH.caller) + "_") + toString(aL)) + ab)), 0)
660660 let cV = valueOrElse(getInteger(this, (((toString(aH.caller) + "_") + toString(aL)) + ac)), 0)
661661 let cW = valueOrElse(getInteger(this, (((toString(aH.caller) + "_") + toString(aL)) + X)), 0)
662662 let bl = getIntegerValue(this, (toString(aL) + n))
663663 let cG = valueOrElse(getInteger(this, (toString(aL) + M)), 0)
664664 let cX = min([cr, cW])
665665 let aT = getIntegerValue(this, (toString(aL) + s))
666666 let aU = getIntegerValue(this, (toString(aL) + r))
667667 let cY = aI(getStringValue(this, (toString(aL) + o)))
668668 let aW = cY._1
669669 let aX = cY._2
670670 let aY = cY._3
671671 let aZ = cY._4
672672 let ba = fraction(aU, aT, pow(10, 0, aZ, 0, 0, DOWN))
673673 let bp = getIntegerValue(this, (toString(aL) + w))
674674 let cZ = (((cU * aU) + (cX * bp)) + (cV * aU))
675675 let da = ((cr - cX) * bp)
676676 let db = fraction(fraction(da, aT, pow(10, 0, aZ, 0, 0, DOWN)), (100 + bl), 100)
677677 let dc = fraction(((cP - cU) * ba), (100 + bl), 100)
678678 let dd = fraction(((cQ - cV) * ba), (100 + cG), 100)
679679 let de = valueOrElse(getInteger(this, (((toString(aH.caller) + "_") + toString(aL)) + S)), 0)
680680 if (if (if ((0 > db))
681681 then true
682682 else (0 > dc))
683683 then true
684684 else (0 > dd))
685685 then throw("Error with allowed allocation param or wonned tickets param please contact support")
686686 else {
687687 let df = (((dc + dd) + db) - de)
688688 let dg = if ((df > 0))
689689 then [ScriptTransfer(aH.caller, df, aP), IntegerEntry((((toString(aH.caller) + "_") + toString(aL)) + S), df)]
690690 else nil
691691 let cl = if (if ((df > 0))
692692 then (aP == ai)
693693 else false)
694694 then invoke(ah, "unlockNeutrino", [df, toBase58String(ai)], nil)
695695 else 0
696696 if ((cl == cl))
697697 then {
698698 let dh = split(valueOrElse(getString(this, (toString(aL) + L)), "claimAll"), ",")
699699 if ((dh[0] == "claimAll"))
700700 then {
701701 let di = if ((cZ > 0))
702702 then [ScriptTransfer(aH.caller, cZ, aW)]
703703 else nil
704704 (([BooleanEntry((((toString(aH.caller) + "_") + toString(aL)) + aa), true), IntegerEntry((((toString(aH.caller) + "_") + toString(aL)) + R), cZ)] ++ di) ++ dg)
705705 }
706706 else if ((dh[0] == "claimPeriod"))
707707 then {
708708 let dj = valueOrElse(getInteger(this, (((toString(aH.caller) + "_") + toString(aL)) + R)), 0)
709709 let dk = value(parseInt(dh[2]))
710710 let dl = (value(parseInt(dh[3])) + cS)
711711 let dm = (dk + dl)
712712 let dn = fraction(cZ, value(parseInt(dh[1])), 100)
713713 let do = (dn + (if ((height > dl))
714714 then (fraction((cZ - dn), (min([height, dm]) - dl), dk) - dj)
715715 else (0 - dj)))
716716 let dp = if ((cZ >= (dj + do)))
717717 then [BooleanEntry((((toString(aH.caller) + "_") + toString(aL)) + aa), true)]
718718 else nil
719719 if (if ((do > 0))
720720 then true
721721 else (df > 0))
722722 then {
723723 let di = if ((do > 0))
724724 then [IntegerEntry((((toString(aH.caller) + "_") + toString(aL)) + R), (dj + do)), ScriptTransfer(aH.caller, do, aW)]
725725 else nil
726726 (dg ++ di)
727727 }
728728 else throw("Nothing to claim")
729729 }
730730 else throw("Unknown claim function")
731731 }
732732 else throw("Strict value is not equal to itself.")
733733 }
734734 }
735735 })
736736
737737
738738
739739 @Callable(aH)
740740 func claimFreezeToken (aL) = valueOrElse(aF(), {
741741 let bw = valueOrElse(getBoolean(this, (toString(aL) + G)), false)
742742 if (!(isDefined(getInteger(this, (toString(aL) + m)))))
743743 then throw("You can't claim because results are not finalized")
744744 else if (!(bw))
745745 then throw("There are no additional token freezing for this launchpad")
746746 else {
747747 let aW = fromBase58String(getStringValue(this, (toString(aL) + H)))
748748 let dq = valueOrElse(getInteger(this, (((toString(aH.caller) + "_") + toString(aL)) + ad)), 0)
749749 let bi = valueOrElse(getInteger(this, (toString(aL) + l)), 0)
750750 let bj = valueOrElse(getInteger(this, (toString(aL) + B)), 0)
751751 let dr = getIntegerValue(this, (toString(aL) + I))
752752 let ds = ((bi + bj) + dr)
753753 if ((dq == 0))
754754 then throw("You are already claimed your tokens or not paid anything")
755755 else if ((ds > height))
756756 then throw(("Your tokens freezed teel " + toString(ds)))
757757 else [ScriptTransfer(aH.caller, dq, aW), IntegerEntry((((toString(aH.caller) + "_") + toString(aL)) + ad), 0)]
758758 }
759759 })
760760
761761
762762
763763 @Callable(aH)
764764 func transferBuyAsset (aL,dt) = valueOrElse(aF(), valueOrElse(aG(aH), {
765765 let bh = addressFromStringValue(getStringValue(this, (toString(aL) + j)))
766766 let du = aI(value(getString(this, (toString(aL) + K))))
767767 let aP = du._1
768768 let aQ = du._2
769769 let aR = du._3
770770 let aS = du._4
771771 let cH = valueOrElse(getInteger(this, (toString(aL) + E)), 0)
772772 let cl = if (if ((dt > 0))
773773 then (aP == ai)
774774 else false)
775775 then invoke(ah, "unlockNeutrino", [dt, toBase58String(ai)], nil)
776776 else 0
777777 if ((cl == cl))
778778 then [IntegerEntry((toString(aL) + E), (cH + dt)), ScriptTransfer(bh, dt, aP)]
779779 else throw("Strict value is not equal to itself.")
780780 }))
781781
782782
783783
784784 @Callable(aH)
785785 func shutdown () = valueOrElse(aG(aH), if (!(aD))
786786 then throw("DApp already inactive")
787787 else [BooleanEntry(a, false)])
788788
789789
790790
791791 @Callable(aH)
792792 func activate () = valueOrElse(aG(aH), if (aD)
793793 then throw("DApp already active")
794794 else [BooleanEntry(a, true)])
795795
796796
797797 @Verifier(dv)
798798 func dw () = {
799799 let dx = {
800800 let dy = if (sigVerify(dv.bodyBytes, dv.proofs[0], as))
801801 then 1
802802 else 0
803803 let dz = if (sigVerify(dv.bodyBytes, dv.proofs[1], at))
804804 then 1
805805 else 0
806806 let dA = if (sigVerify(dv.bodyBytes, dv.proofs[2], au))
807807 then 1
808808 else 0
809809 (((dy + dz) + dA) >= 2)
810810 }
811811 let dB = if (if (if (sigVerify(dv.bodyBytes, dv.proofs[0], as))
812812 then true
813813 else sigVerify(dv.bodyBytes, dv.proofs[0], at))
814814 then true
815815 else sigVerify(dv.bodyBytes, dv.proofs[0], au))
816816 then true
817817 else sigVerify(dv.bodyBytes, dv.proofs[0], aj)
818818 let ap = dv
819819 if ($isInstanceOf(ap, "DataTransaction"))
820820 then {
821821 let dC = ap
822822 if (valueOrElse(getBoolean(ae, f), false))
823823 then dB
824824 else false
825825 }
826826 else dx
827827 }
828828

github/deemru/w8io/169f3d6 
91.90 ms