tx · 5LKvTSH76LxRz3oKWL61zSii1nngsWqFndasbF5wgAbU

3N4SpfepyNLLb4Uc8e3xvkZew64HMcZ23oX:  -0.07500000 Waves

2023.01.04 17:52 [2390361] smart account 3N4SpfepyNLLb4Uc8e3xvkZew64HMcZ23oX > SELF 0.00000000 Waves

{ "type": 13, "id": "5LKvTSH76LxRz3oKWL61zSii1nngsWqFndasbF5wgAbU", "fee": 7500000, "feeAssetId": null, "timestamp": 1672843972673, "version": 2, "chainId": 84, "sender": "3N4SpfepyNLLb4Uc8e3xvkZew64HMcZ23oX", "senderPublicKey": "Gqr4yqnGvyo3GmKz59Qs1qfyDm5XhT134DCjiBhmD8jW", "proofs": [ "3ZrCQsZAZkU6sCGrGeT1bzv3M8ntGJYoJdFA51w5SR1GUThxgfAuhCkbmExtZ9RaugRhNuFB5Bg8ZYfp1thzHL5h" ], "script": "base64:BgJ6CAISABIAEgASABIDCgEBEgMKAQESDgoMAQEBAQEBAQEBAQEBEhQKEgEBAQEBAQEICAgIAQEBAQEBARIFCgMBAQESBgoEAQEBCBIAEgMKAQESBAoCAQESAwoBCBIAEgASAwoBCBIDCgEBEgASABIDCgEIEgASBAoCCAjDAQAJa19vcmFfa2V5AglrX29yYV9rZXkAD2tfb3JhX2Jsb2NrX2tleQIPa19vcmFfYmxvY2tfa2V5AA5rX29yYV9vcGVuX2tleQIOa19vcmFfb3Blbl9rZXkABWtfb3JhAgVrX29yYQAJa19iYWxhbmNlAglrX2JhbGFuY2UACmtfc2VxdWVuY2UCCmtfc2VxdWVuY2UADmtfcG9zaXRpb25TaXplAg5rX3Bvc2l0aW9uU2l6ZQAQa19wb3NpdGlvbk1hcmdpbgIQa19wb3NpdGlvbk1hcmdpbgAWa19wb3NpdGlvbk9wZW5Ob3Rpb25hbAIWa19wb3NpdGlvbk9wZW5Ob3Rpb25hbAAua19wb3NpdGlvbkxhc3RVcGRhdGVkQ3VtdWxhdGl2ZVByZW1pdW1GcmFjdGlvbgISa19wb3NpdGlvbkZyYWN0aW9uABJrX3Bvc2l0aW9uU2VxdWVuY2UCEmtfcG9zaXRpb25TZXF1ZW5jZQAPa19wb3NpdGlvbkFzc2V0Ag9rX3Bvc2l0aW9uQXNzZXQADWtfaW5pdGlhbGl6ZWQCDWtfaW5pdGlhbGl6ZWQACGtfcGF1c2VkAghrX3BhdXNlZAALa19jbG9zZU9ubHkCC2tfY2xvc2VPbmx5AAVrX2ZlZQIFa19mZWUAD2tfZnVuZGluZ1BlcmlvZAIPa19mdW5kaW5nUGVyaW9kABFrX2luaXRNYXJnaW5SYXRpbwIRa19pbml0TWFyZ2luUmF0aW8AGGtfbWFpbnRlbmFuY2VNYXJnaW5SYXRpbwIFa19tbXIAFWtfbGlxdWlkYXRpb25GZWVSYXRpbwIVa19saXF1aWRhdGlvbkZlZVJhdGlvABlrX3BhcnRpYWxMaXF1aWRhdGlvblJhdGlvAhZrX3BhcnRMaXF1aWRhdGlvblJhdGlvAA1rX3NwcmVhZExpbWl0Ag1rX3NwcmVhZExpbWl0ABBrX21heFByaWNlSW1wYWN0AhBrX21heFByaWNlSW1wYWN0ABBrX21heFByaWNlU3ByZWFkAhBrX21heFByaWNlU3ByZWFkABFrX21heE9wZW5Ob3Rpb25hbAIRa19tYXhPcGVuTm90aW9uYWwAFWtfZmVlVG9TdGFrZXJzUGVyY2VudAIVa19mZWVUb1N0YWtlcnNQZXJjZW50ABBrX21heE9yYWNsZURlbGF5AhBrX21heE9yYWNsZURlbGF5AA1rX2xhc3REYXRhU3RyAg1rX2xhc3REYXRhU3RyAA5rX2xhc3RNaW51dGVJZAIOa19sYXN0TWludXRlSWQAHWtfdHdhcERhdGFMYXN0Q3VtdWxhdGl2ZVByaWNlAh1rX3R3YXBEYXRhTGFzdEN1bXVsYXRpdmVQcmljZQATa190d2FwRGF0YUxhc3RQcmljZQITa190d2FwRGF0YUxhc3RQcmljZQAaa190d2FwRGF0YVByZXZpb3VzTWludXRlSWQCGmtfdHdhcERhdGFQcmV2aW91c01pbnV0ZUlkACVrX2xhdGVzdExvbmdDdW11bGF0aXZlUHJlbWl1bUZyYWN0aW9uAhtrX2xhdGVzdExvbmdQcmVtaXVtRnJhY3Rpb24AJmtfbGF0ZXN0U2hvcnRDdW11bGF0aXZlUHJlbWl1bUZyYWN0aW9uAhxrX2xhdGVzdFNob3J0UHJlbWl1bUZyYWN0aW9uABJrX25leHRGdW5kaW5nQmxvY2sCHmtfbmV4dEZ1bmRpbmdCbG9ja01pblRpbWVzdGFtcAARa19sb25nRnVuZGluZ1JhdGUCEWtfbG9uZ0Z1bmRpbmdSYXRlABJrX3Nob3J0RnVuZGluZ1JhdGUCEmtfc2hvcnRGdW5kaW5nUmF0ZQATa19xdW90ZUFzc2V0UmVzZXJ2ZQIIa19xdEFzdFIAEmtfYmFzZUFzc2V0UmVzZXJ2ZQIIa19ic0FzdFIAEmtfcXVvdGVBc3NldFdlaWdodAIIa19xdEFzdFcAEWtfYmFzZUFzc2V0V2VpZ2h0AghrX2JzQXN0VwATa190b3RhbFBvc2l0aW9uU2l6ZQITa190b3RhbFBvc2l0aW9uU2l6ZQAXa190b3RhbExvbmdQb3NpdGlvblNpemUCF2tfdG90YWxMb25nUG9zaXRpb25TaXplABhrX3RvdGFsU2hvcnRQb3NpdGlvblNpemUCGGtfdG90YWxTaG9ydFBvc2l0aW9uU2l6ZQAWa19vcGVuSW50ZXJlc3ROb3Rpb25hbAIWa19vcGVuSW50ZXJlc3ROb3Rpb25hbAATa19vcGVuSW50ZXJlc3RTaG9ydAITa19vcGVuSW50ZXJlc3RTaG9ydAASa19vcGVuSW50ZXJlc3RMb25nAhJrX29wZW5JbnRlcmVzdExvbmcAFGtfY29vcmRpbmF0b3JBZGRyZXNzAhRrX2Nvb3JkaW5hdG9yQWRkcmVzcwAPa192YXVsdF9hZGRyZXNzAg9rX3ZhdWx0X2FkZHJlc3MAD2tfYWRtaW5fYWRkcmVzcwIPa19hZG1pbl9hZGRyZXNzABJrX2FkbWluX3B1YmxpY19rZXkCEmtfYWRtaW5fcHVibGljX2tleQANa19xdW90ZV9hc3NldAINa19xdW90ZV9hc3NldAAPa19xdW90ZV9zdGFraW5nAg9rX3F1b3RlX3N0YWtpbmcAEWtfc3Rha2luZ19hZGRyZXNzAhFrX3N0YWtpbmdfYWRkcmVzcwAPa19taW5lcl9hZGRyZXNzAg9rX21pbmVyX2FkZHJlc3MAEGtfb3JkZXJzX2FkZHJlc3MCEGtfb3JkZXJzX2FkZHJlc3MAEmtfcmVmZXJyYWxfYWRkcmVzcwISa19yZWZlcnJhbF9hZGRyZXNzABRrX2NvbGxhdGVyYWxfYWRkcmVzcwIUa19jb2xsYXRlcmFsX2FkZHJlc3MAEmtfZXhjaGFuZ2VfYWRkcmVzcwISa19leGNoYW5nZV9hZGRyZXNzABVrX25mdF9tYW5hZ2VyX2FkZHJlc3MCFWtfbmZ0X21hbmFnZXJfYWRkcmVzcwAga190cmFkZXJfbWFya2V0X2Fzc2V0X2NvbGxhdGVyYWwCIGtfdHJhZGVyX21hcmtldF9hc3NldF9jb2xsYXRlcmFsAQ50b0NvbXBvc2l0ZUtleQIEX2tleQhfYWRkcmVzcwkArAICCQCsAgIFBF9rZXkCAV8FCF9hZGRyZXNzAQtjb29yZGluYXRvcgAJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzBRRrX2Nvb3JkaW5hdG9yQWRkcmVzcwITQ29vcmRpbmF0b3Igbm90IHNldAEMYWRtaW5BZGRyZXNzAAkApggBCQERQGV4dHJOYXRpdmUoMTA1MykCCQELY29vcmRpbmF0b3IABQ9rX2FkbWluX2FkZHJlc3MBDmFkbWluUHVibGljS2V5AAkA2QQBCQERQGV4dHJOYXRpdmUoMTA1MykCCQELY29vcmRpbmF0b3IABRJrX2FkbWluX3B1YmxpY19rZXkBCnF1b3RlQXNzZXQACQDZBAEJARFAZXh0ck5hdGl2ZSgxMDUzKQIJAQtjb29yZGluYXRvcgAFDWtfcXVvdGVfYXNzZXQBEXF1b3RlQXNzZXRTdGFraW5nAAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJARFAZXh0ck5hdGl2ZSgxMDUzKQIJAQtjb29yZGluYXRvcgAFD2tfcXVvdGVfc3Rha2luZwIbUXVvdGUgYXNzZXQgc3Rha2luZyBub3Qgc2V0AQ5zdGFraW5nQWRkcmVzcwAJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQERQGV4dHJOYXRpdmUoMTA1MykCCQELY29vcmRpbmF0b3IABRFrX3N0YWtpbmdfYWRkcmVzcwIPU3Rha2luZyBub3Qgc2V0AQx2YXVsdEFkZHJlc3MACQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkBEUBleHRyTmF0aXZlKDEwNTMpAgkBC2Nvb3JkaW5hdG9yAAUPa192YXVsdF9hZGRyZXNzAg1WYXVsdCBub3Qgc2V0AQxtaW5lckFkZHJlc3MACQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkBEUBleHRyTmF0aXZlKDEwNTMpAgkBC2Nvb3JkaW5hdG9yAAUPa19taW5lcl9hZGRyZXNzAg1NaW5lciBub3Qgc2V0AQ1vcmRlcnNBZGRyZXNzAAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJARFAZXh0ck5hdGl2ZSgxMDUzKQIJAQtjb29yZGluYXRvcgAFEGtfb3JkZXJzX2FkZHJlc3MCDk9yZGVycyBub3Qgc2V0AQ9yZWZlcnJhbEFkZHJlc3MACQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkBEUBleHRyTmF0aXZlKDEwNTMpAgkBC2Nvb3JkaW5hdG9yAAUSa19yZWZlcnJhbF9hZGRyZXNzAhBSZWZlcnJhbCBub3Qgc2V0ARFuZnRNYW5hZ2VyQWRkcmVzcwAJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQERQGV4dHJOYXRpdmUoMTA1MykCCQELY29vcmRpbmF0b3IABRVrX25mdF9tYW5hZ2VyX2FkZHJlc3MCE05GVCBNYW5hZ2VyIG5vdCBzZXQBEWNvbGxhdGVyYWxBZGRyZXNzAAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJARFAZXh0ck5hdGl2ZSgxMDUzKQIJAQtjb29yZGluYXRvcgAFFGtfY29sbGF0ZXJhbF9hZGRyZXNzAhpDb2xsYXRlcmFsIE1hbmFnZXIgbm90IHNldAELc3dhcEFkZHJlc3MACQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIJAQtjb29yZGluYXRvcgAFEmtfZXhjaGFuZ2VfYWRkcmVzcwIPTm8gc3dhcCBhZGRyZXNzAhRJbnZhbGlkIHN3YXAgYWRkcmVzcwARa193aGl0ZWxpc3RfYXNzZXQCEWtfd2hpdGVsaXN0X2Fzc2V0ARBpc1doaXRlbGlzdEFzc2V0AQhfYXNzZXRJZAkBC3ZhbHVlT3JFbHNlAgkAmwgCCQERY29sbGF0ZXJhbEFkZHJlc3MACQEOdG9Db21wb3NpdGVLZXkCBRFrX3doaXRlbGlzdF9hc3NldAUIX2Fzc2V0SWQHAA1rX3Rva2VuX3BhcmFtAg1rX3Rva2VuX3BhcmFtAAxrX3Rva2VuX3R5cGUCDGtfdG9rZW5fdHlwZQAYRkVFX1JFRFVDVElPTl9UT0tFTl9UWVBFAg1mZWVfcmVkdWN0aW9uAAhESVJfTE9ORwABAAlESVJfU0hPUlQAAgANVFdBUF9JTlRFUlZBTAAPAA9PUkFDTEVfSU5URVJWQUwADwAHU0VDT05EUwDoBwAPREVDSU1BTF9OVU1CRVJTAAYADERFQ0lNQUxfVU5JVAkAaAIAAQkAaAIJAGgCCQBoAgkAaAIJAGgCAAoACgAKAAoACgAKAAdPTkVfREFZCQBoAgCAowUFDERFQ0lNQUxfVU5JVAAIQUxMX0ZFRVMAZAAPUE5MX09QVElPTl9TUE9UAAEAEVBOTF9PUFRJT05fT1JBQ0xFAAIBAXMBAl94CQCsAgIJAKQDAQUCX3gCASwBBGRpdmQCAl94Al95CQBuBAUCX3gFDERFQ0lNQUxfVU5JVAUCX3kFCEhBTEZFVkVOAQRtdWxkAgJfeAJfeQkAbgQFAl94BQJfeQUMREVDSU1BTF9VTklUBQhIQUxGRVZFTgEFc3FydGQBAl94CQEEc3FydAQFAl94BQ9ERUNJTUFMX05VTUJFUlMFD0RFQ0lNQUxfTlVNQkVSUwUISEFMRkVWRU4BBHBvd2QCAl94Al95CQBsBgUCX3gFD0RFQ0lNQUxfTlVNQkVSUwUCX3kFD0RFQ0lNQUxfTlVNQkVSUwUPREVDSU1BTF9OVU1CRVJTBQhIQUxGRVZFTgEFYmRpdmQCAl94Al95CQC9AgQFAl94CQC2AgEFDERFQ0lNQUxfVU5JVAUCX3kFCEhBTEZFVkVOAQVibXVsZAICX3gCX3kJAL0CBAUCX3gFAl95CQC2AgEFDERFQ0lNQUxfVU5JVAUISEFMRkVWRU4BBmJzcXJ0ZAECX3gJAQpzcXJ0QmlnSW50BAUCX3gFD0RFQ0lNQUxfTlVNQkVSUwUPREVDSU1BTF9OVU1CRVJTBQhIQUxGRVZFTgEFYnBvd2QCAl94Al95CQB2BgUCX3gFD0RFQ0lNQUxfTlVNQkVSUwUCX3kFD0RFQ0lNQUxfTlVNQkVSUwUPREVDSU1BTF9OVU1CRVJTBQhIQUxGRVZFTgEDYWJzAQJfeAMJAGYCBQJfeAAABQJfeAkBAS0BBQJfeAEEdm1heAICX3gCX3kDCQBnAgUCX3gFAl95BQJfeAUCX3kBCWxpc3RUb1N0cgEFX2xpc3QKAQVfam9pbgILYWNjdW11bGF0b3IDdmFsCQCsAgIJAKwCAgULYWNjdW11bGF0b3IFA3ZhbAIBLAQKbmV3TGlzdFN0cgoAAiRsBQVfbGlzdAoAAiRzCQCQAwEFAiRsCgAFJGFjYzACAAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEFX2pvaW4CBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDIwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAQLbmV3TGlzdFN0clUJALMCAgUKbmV3TGlzdFN0cgABBAtuZXdMaXN0U3RyUgMJAAACCQCvAgIFC25ld0xpc3RTdHJVAAECASwJALACAgULbmV3TGlzdFN0clUAAQULbmV3TGlzdFN0clUFC25ld0xpc3RTdHJSAQlzdHJUb0xpc3QBBF9zdHIJALUJAgUEX3N0cgIBLAELcHVzaFRvUXVldWUDBV9saXN0CF9tYXhTaXplBl92YWx1ZQMJAGYCCQCQAwEFBV9saXN0BQhfbWF4U2l6ZQkAzQgCCQDRCAIFBV9saXN0AAAFBl92YWx1ZQkAzQgCBQVfbGlzdAUGX3ZhbHVlAQNpbnQBAWsJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQR0aGlzBQFrCQCsAgICDW5vIHZhbHVlIGZvciAFAWsBBWludE9yAgFrA2RlZgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQFrBQNkZWYBBHN0ckECCF9hZGRyZXNzBF9rZXkEA3ZhbAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFCF9hZGRyZXNzBQRfa2V5CQCsAgICEU5vIHZhbHVlIGZvciBrZXkgBQRfa2V5BQN2YWwBBGludEECCF9hZGRyZXNzBF9rZXkEA3ZhbAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFCF9hZGRyZXNzBQRfa2V5CQCsAgICEU5vIHZhbHVlIGZvciBrZXkgBQRfa2V5BQN2YWwBCGNiYWxhbmNlAAkBA2ludAEFCWtfYmFsYW5jZQEDZmVlAAkBA2ludAEFBWtfZmVlAQ9pbml0TWFyZ2luUmF0aW8ACQEDaW50AQURa19pbml0TWFyZ2luUmF0aW8BBnF0QXN0UgAJAQNpbnQBBRNrX3F1b3RlQXNzZXRSZXNlcnZlAQZic0FzdFIACQEDaW50AQUSa19iYXNlQXNzZXRSZXNlcnZlAQZxdEFzdFcACQEFaW50T3ICBRJrX3F1b3RlQXNzZXRXZWlnaHQFDERFQ0lNQUxfVU5JVAEGYnNBc3RXAAkBBWludE9yAgURa19iYXNlQXNzZXRXZWlnaHQFDERFQ0lNQUxfVU5JVAERdG90YWxQb3NpdGlvblNpemUACQEDaW50AQUTa190b3RhbFBvc2l0aW9uU2l6ZQEUb3BlbkludGVyZXN0Tm90aW9uYWwACQEDaW50AQUWa19vcGVuSW50ZXJlc3ROb3Rpb25hbAERb3BlbkludGVyZXN0U2hvcnQACQEDaW50AQUTa19vcGVuSW50ZXJlc3RTaG9ydAEQb3BlbkludGVyZXN0TG9uZwAJAQNpbnQBBRJrX29wZW5JbnRlcmVzdExvbmcBGW5leHRGdW5kaW5nQmxvY2tUaW1lc3RhbXAACQEDaW50AQUSa19uZXh0RnVuZGluZ0Jsb2NrARBmdW5kaW5nUGVyaW9kUmF3AAkBA2ludAEFD2tfZnVuZGluZ1BlcmlvZAEUZnVuZGluZ1BlcmlvZERlY2ltYWwACQBoAgkBEGZ1bmRpbmdQZXJpb2RSYXcABQxERUNJTUFMX1VOSVQBFGZ1bmRpbmdQZXJpb2RTZWNvbmRzAAkAaAIJARBmdW5kaW5nUGVyaW9kUmF3AAUHU0VDT05EUwEWbWFpbnRlbmFuY2VNYXJnaW5SYXRpbwAJAQNpbnQBBRhrX21haW50ZW5hbmNlTWFyZ2luUmF0aW8BE2xpcXVpZGF0aW9uRmVlUmF0aW8ACQEDaW50AQUVa19saXF1aWRhdGlvbkZlZVJhdGlvARdwYXJ0aWFsTGlxdWlkYXRpb25SYXRpbwAJAQNpbnQBBRlrX3BhcnRpYWxMaXF1aWRhdGlvblJhdGlvAQtzcHJlYWRMaW1pdAAJAQNpbnQBBQ1rX3NwcmVhZExpbWl0AQ5tYXhQcmljZUltcGFjdAAJAQNpbnQBBRBrX21heFByaWNlSW1wYWN0AQ5tYXhQcmljZVNwcmVhZAAJAQNpbnQBBRBrX21heFByaWNlU3ByZWFkAQ9tYXhPcGVuTm90aW9uYWwACQEDaW50AQURa19tYXhPcGVuTm90aW9uYWwBI2xhdGVzdExvbmdDdW11bGF0aXZlUHJlbWl1bUZyYWN0aW9uAAkBA2ludAEFJWtfbGF0ZXN0TG9uZ0N1bXVsYXRpdmVQcmVtaXVtRnJhY3Rpb24BJGxhdGVzdFNob3J0Q3VtdWxhdGl2ZVByZW1pdW1GcmFjdGlvbgAJAQNpbnQBBSZrX2xhdGVzdFNob3J0Q3VtdWxhdGl2ZVByZW1pdW1GcmFjdGlvbgEWdG90YWxTaG9ydFBvc2l0aW9uU2l6ZQAJAQNpbnQBBRhrX3RvdGFsU2hvcnRQb3NpdGlvblNpemUBFXRvdGFsTG9uZ1Bvc2l0aW9uU2l6ZQAJAQNpbnQBBRdrX3RvdGFsTG9uZ1Bvc2l0aW9uU2l6ZQEMbGFzdFNlcXVlbmNlAAkBBWludE9yAgUKa19zZXF1ZW5jZQAAARNmZWVUb1N0YWtlcnNQZXJjZW50AAkBA2ludAEFFWtfZmVlVG9TdGFrZXJzUGVyY2VudAEObWF4T3JhY2xlRGVsYXkACQEDaW50AQUQa19tYXhPcmFjbGVEZWxheQEPZ2V0QWN0dWFsQ2FsbGVyAQFpCQELdmFsdWVPckVsc2UCCQCdCAIJAQ1vcmRlcnNBZGRyZXNzAAIIa19zZW5kZXIJAKUIAQgFAWkGY2FsbGVyARZyZXF1aXJlTW9yZU1hcmdpblJhdGlvAwxfbWFyZ2luUmF0aW8QX2Jhc2VNYXJnaW5SYXRpbxRfbGFyZ2VyVGhhbk9yRXF1YWxUbwQUcmVtYWluaW5nTWFyZ2luUmF0aW8JAGUCBQxfbWFyZ2luUmF0aW8FEF9iYXNlTWFyZ2luUmF0aW8DAwUUX2xhcmdlclRoYW5PckVxdWFsVG8JAGYCAAAFFHJlbWFpbmluZ01hcmdpblJhdGlvBwkAAgEJAKwCAgkArAICCQCsAgICEEludmFsaWQgbWFyZ2luOiAJAKQDAQUMX21hcmdpblJhdGlvAgMgPCAJAKQDAQUQX2Jhc2VNYXJnaW5SYXRpbwMDCQEBIQEFFF9sYXJnZXJUaGFuT3JFcXVhbFRvCQBnAgUUcmVtYWluaW5nTWFyZ2luUmF0aW8AAAcJAAIBCQCsAgIJAKwCAgkArAICAhBJbnZhbGlkIG1hcmdpbjogCQCkAwEFDF9tYXJnaW5SYXRpbwIDID4gCQCkAwEFEF9iYXNlTWFyZ2luUmF0aW8GAR9sYXRlc3RDdW11bGF0aXZlUHJlbWl1bUZyYWN0aW9uAQ1fcG9zaXRpb25TaXplAwkAAAIFDV9wb3NpdGlvblNpemUAAAkAAgECLFNob3VsZCBub3QgYmUgY2FsbGVkIHdpdGggX3Bvc2l0aW9uU2l6ZSA9PSAwAwkAZgIFDV9wb3NpdGlvblNpemUAAAkBI2xhdGVzdExvbmdDdW11bGF0aXZlUHJlbWl1bUZyYWN0aW9uAAkBJGxhdGVzdFNob3J0Q3VtdWxhdGl2ZVByZW1pdW1GcmFjdGlvbgABC2dldFBvc2l0aW9uAQdfdHJhZGVyBA9wb3NpdGlvblNpemVPcHQJAJoIAgUEdGhpcwkBDnRvQ29tcG9zaXRlS2V5AgUOa19wb3NpdGlvblNpemUFB190cmFkZXIEByRtYXRjaDAFD3Bvc2l0aW9uU2l6ZU9wdAMJAAECBQckbWF0Y2gwAgNJbnQEDHBvc2l0aW9uU2l6ZQUHJG1hdGNoMAkAlgoEBQxwb3NpdGlvblNpemUJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAQ50b0NvbXBvc2l0ZUtleQIFEGtfcG9zaXRpb25NYXJnaW4FB190cmFkZXIJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAQ50b0NvbXBvc2l0ZUtleQIFFmtfcG9zaXRpb25PcGVuTm90aW9uYWwFB190cmFkZXIJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAQ50b0NvbXBvc2l0ZUtleQIFLmtfcG9zaXRpb25MYXN0VXBkYXRlZEN1bXVsYXRpdmVQcmVtaXVtRnJhY3Rpb24FB190cmFkZXIJAJYKBAAAAAAAAAAAARBnZXRQb3NpdGlvbkFzc2V0AQdfdHJhZGVyBBBwb3NpdGlvbkFzc2V0T3B0CQCdCAIFBHRoaXMJAQ50b0NvbXBvc2l0ZUtleQIFD2tfcG9zaXRpb25Bc3NldAUHX3RyYWRlcgQHJG1hdGNoMAUQcG9zaXRpb25Bc3NldE9wdAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEDXBvc2l0aW9uQXNzZXQFByRtYXRjaDAFDXBvc2l0aW9uQXNzZXQJANgEAQkBCnF1b3RlQXNzZXQAARNyZXF1aXJlT3BlblBvc2l0aW9uAQdfdHJhZGVyAwkAAAIICQELZ2V0UG9zaXRpb24BBQdfdHJhZGVyAl8xAAAJAAIBAhBObyBvcGVuIHBvc2l0aW9uBgELaW5pdGlhbGl6ZWQACQELdmFsdWVPckVsc2UCCQCbCAIFBHRoaXMFDWtfaW5pdGlhbGl6ZWQHAQZwYXVzZWQACQELdmFsdWVPckVsc2UCCQCbCAIFBHRoaXMFCGtfcGF1c2VkBwEJY2xvc2VPbmx5AAkBC3ZhbHVlT3JFbHNlAgkAmwgCBQR0aGlzBQtrX2Nsb3NlT25seQcBDXVwZGF0ZVJlc2VydmUDBl9pc0FkZBFfcXVvdGVBc3NldEFtb3VudBBfYmFzZUFzc2V0QW1vdW50AwUGX2lzQWRkBAduZXdCYXNlCQBlAgkBBmJzQXN0UgAFEF9iYXNlQXNzZXRBbW91bnQDCQBnAgAABQduZXdCYXNlCQACAQIqVHggbGVhZCB0byBiYXNlIGFzc2V0IHJlc2VydmUgPD0gMCwgcmV2ZXJ0CQCVCgMJAGQCCQEGcXRBc3RSAAURX3F1b3RlQXNzZXRBbW91bnQFB25ld0Jhc2UJAGQCCQERdG90YWxQb3NpdGlvblNpemUABRBfYmFzZUFzc2V0QW1vdW50BAhuZXdRdW90ZQkAZQIJAQZxdEFzdFIABRFfcXVvdGVBc3NldEFtb3VudAMJAGcCAAAFCG5ld1F1b3RlCQACAQIqVHggbGVhZCB0byBiYXNlIHF1b3RlIHJlc2VydmUgPD0gMCwgcmV2ZXJ0CQCVCgMFCG5ld1F1b3RlCQBkAgkBBmJzQXN0UgAFEF9iYXNlQXNzZXRBbW91bnQJAGUCCQERdG90YWxQb3NpdGlvblNpemUABRBfYmFzZUFzc2V0QW1vdW50AQ1jYWxjSW52YXJpYW50BAdfcXRBc3RSB19xdEFzdFcHX2JzQXN0UgdfYnNBc3RXBAdicXRBc3RSCQC2AgEFB19xdEFzdFIEB2JxdEFzdFcJALYCAQUHX3F0QXN0VwQHYmJzQXN0UgkAtgIBBQdfYnNBc3RSBAdiYnNBc3RXCQC2AgEFB19ic0FzdFcJAQVibXVsZAIJAQVibXVsZAIFB2JxdEFzdFIFB2JxdEFzdFcJAQVibXVsZAIFB2Jic0FzdFIFB2Jic0FzdFcBCXN3YXBJbnB1dAIGX2lzQWRkEV9xdW90ZUFzc2V0QW1vdW50BAdfcXRBc3RSCQEGcXRBc3RSAAQHX2JzQXN0UgkBBmJzQXN0UgAEB19xdEFzdFcJAQZxdEFzdFcABAdfYnNBc3RXCQEGYnNBc3RXAAQBawkBDWNhbGNJbnZhcmlhbnQEBQdfcXRBc3RSBQdfcXRBc3RXBQdfYnNBc3RSBQdfYnNBc3RXBBZxdW90ZUFzc2V0UmVzZXJ2ZUFmdGVyAwUGX2lzQWRkCQBkAgUHX3F0QXN0UgURX3F1b3RlQXNzZXRBbW91bnQJAGUCBQdfcXRBc3RSBRFfcXVvdGVBc3NldEFtb3VudAQVYmFzZUFzc2V0UmVzZXJ2ZUFmdGVyCQCgAwEJAQViZGl2ZAIFAWsJALYCAQkBBG11bGQCBRZxdW90ZUFzc2V0UmVzZXJ2ZUFmdGVyBQdfcXRBc3RXBBhhbW91bnRCYXNlQXNzZXRCb3VnaHRBYnMJAQRkaXZkAgkBA2FicwEJAGUCBRViYXNlQXNzZXRSZXNlcnZlQWZ0ZXIFB19ic0FzdFIFB19xdEFzdFcEFWFtb3VudEJhc2VBc3NldEJvdWdodAMFBl9pc0FkZAUYYW1vdW50QmFzZUFzc2V0Qm91Z2h0QWJzCQEBLQEFGGFtb3VudEJhc2VBc3NldEJvdWdodEFicwQNJHQwMTY5MzcxNzEwMAkBDXVwZGF0ZVJlc2VydmUDBQZfaXNBZGQFEV9xdW90ZUFzc2V0QW1vdW50BRhhbW91bnRCYXNlQXNzZXRCb3VnaHRBYnMEF3F1b3RlQXNzZXRSZXNlcnZlQWZ0ZXIxCAUNJHQwMTY5MzcxNzEwMAJfMQQWYmFzZUFzc2V0UmVzZXJ2ZUFmdGVyMQgFDSR0MDE2OTM3MTcxMDACXzIEF3RvdGFsUG9zaXRpb25TaXplQWZ0ZXIxCAUNJHQwMTY5MzcxNzEwMAJfMwQLcHJpY2VCZWZvcmUJAQRkaXZkAgkBBG11bGQCBQdfcXRBc3RSBQdfcXRBc3RXCQEEbXVsZAIFB19ic0FzdFIFB19ic0FzdFcEC21hcmtldFByaWNlCQEEZGl2ZAIFEV9xdW90ZUFzc2V0QW1vdW50BRhhbW91bnRCYXNlQXNzZXRCb3VnaHRBYnMECXByaWNlRGlmZgkBA2FicwEJAGUCBQtwcmljZUJlZm9yZQULbWFya2V0UHJpY2UEC3ByaWNlSW1wYWN0CQBlAgUMREVDSU1BTF9VTklUCQEEZGl2ZAIFC3ByaWNlQmVmb3JlCQBkAgULcHJpY2VCZWZvcmUFCXByaWNlRGlmZgQTbWF4UHJpY2VJbXBhY3RWYWx1ZQkBDm1heFByaWNlSW1wYWN0AAMJAGYCBQtwcmljZUltcGFjdAUTbWF4UHJpY2VJbXBhY3RWYWx1ZQkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgINUHJpY2UgaW1wYWN0IAkApAMBBQtwcmljZUltcGFjdAIUID4gbWF4IHByaWNlIGltcGFjdCAJAKQDAQUTbWF4UHJpY2VJbXBhY3RWYWx1ZQIVIGJlZm9yZSBxdW90ZSBhc3NldDogCQCkAwEFB19xdEFzdFICFCBiZWZvcmUgYmFzZSBhc3NldDogCQCkAwEFB19ic0FzdFICISBxdW90ZSBhc3NldCBhbW91bnQgdG8gZXhjaGFuZ2U6IAkApAMBBRFfcXVvdGVBc3NldEFtb3VudAIPIHByaWNlIGJlZm9yZTogCQCkAwEFC3ByaWNlQmVmb3JlAg4gbWFya2V0UHJpY2U6IAkApAMBBQttYXJrZXRQcmljZQkAlgoEBRVhbW91bnRCYXNlQXNzZXRCb3VnaHQFF3F1b3RlQXNzZXRSZXNlcnZlQWZ0ZXIxBRZiYXNlQXNzZXRSZXNlcnZlQWZ0ZXIxBRd0b3RhbFBvc2l0aW9uU2l6ZUFmdGVyMQEiY2FsY1JlbWFpbk1hcmdpbldpdGhGdW5kaW5nUGF5bWVudAQQX29sZFBvc2l0aW9uU2l6ZRJfb2xkUG9zaXRpb25NYXJnaW4lX29sZFBvc2l0aW9uQ3VtdWxhdGl2ZVByZW1pdW1GcmFjdGlvbgxfbWFyZ2luRGVsdGEEDmZ1bmRpbmdQYXltZW50AwkBAiE9AgUQX29sZFBvc2l0aW9uU2l6ZQAABCBfbGF0ZXN0Q3VtdWxhdGl2ZVByZW1pdW1GcmFjdGlvbgkBH2xhdGVzdEN1bXVsYXRpdmVQcmVtaXVtRnJhY3Rpb24BBRBfb2xkUG9zaXRpb25TaXplCQEEbXVsZAIJAGUCBSBfbGF0ZXN0Q3VtdWxhdGl2ZVByZW1pdW1GcmFjdGlvbgUlX29sZFBvc2l0aW9uQ3VtdWxhdGl2ZVByZW1pdW1GcmFjdGlvbgUQX29sZFBvc2l0aW9uU2l6ZQAABAxzaWduZWRNYXJnaW4JAGQCCQBlAgUMX21hcmdpbkRlbHRhBQ5mdW5kaW5nUGF5bWVudAUSX29sZFBvc2l0aW9uTWFyZ2luBA0kdDAxODU4NzE4NzE0AwkAZgIAAAUMc2lnbmVkTWFyZ2luCQCUCgIAAAkBA2FicwEFDHNpZ25lZE1hcmdpbgkAlAoCCQEDYWJzAQUMc2lnbmVkTWFyZ2luAAAEDHJlbWFpbk1hcmdpbggFDSR0MDE4NTg3MTg3MTQCXzEEB2JhZERlYnQIBQ0kdDAxODU4NzE4NzE0Al8yCQCVCgMFDHJlbWFpbk1hcmdpbgUHYmFkRGVidAUOZnVuZGluZ1BheW1lbnQBFnN3YXBPdXRwdXRXaXRoUmVzZXJ2ZXMHBl9pc0FkZBBfYmFzZUFzc2V0QW1vdW50FF9jaGVja01heFByaWNlSW1wYWN0El9xdW90ZUFzc2V0UmVzZXJ2ZRFfcXVvdGVBc3NldFdlaWdodBFfYmFzZUFzc2V0UmVzZXJ2ZRBfYmFzZUFzc2V0V2VpZ2h0BAtwcmljZUJlZm9yZQkBBGRpdmQCCQEEbXVsZAIFEl9xdW90ZUFzc2V0UmVzZXJ2ZQURX3F1b3RlQXNzZXRXZWlnaHQJAQRtdWxkAgURX2Jhc2VBc3NldFJlc2VydmUFEF9iYXNlQXNzZXRXZWlnaHQDCQAAAgUQX2Jhc2VBc3NldEFtb3VudAAACQACAQIZSW52YWxpZCBiYXNlIGFzc2V0IGFtb3VudAQBawkBDWNhbGNJbnZhcmlhbnQEBRJfcXVvdGVBc3NldFJlc2VydmUFEV9xdW90ZUFzc2V0V2VpZ2h0BRFfYmFzZUFzc2V0UmVzZXJ2ZQUQX2Jhc2VBc3NldFdlaWdodAQYYmFzZUFzc2V0UG9vbEFtb3VudEFmdGVyAwUGX2lzQWRkCQBkAgURX2Jhc2VBc3NldFJlc2VydmUFEF9iYXNlQXNzZXRBbW91bnQJAGUCBRFfYmFzZUFzc2V0UmVzZXJ2ZQUQX2Jhc2VBc3NldEFtb3VudAQPcXVvdGVBc3NldEFmdGVyCQCgAwEJAQViZGl2ZAIFAWsJALYCAQkBBG11bGQCBRhiYXNlQXNzZXRQb29sQW1vdW50QWZ0ZXIFEF9iYXNlQXNzZXRXZWlnaHQEDnF1b3RlQXNzZXRTb2xkCQEDYWJzAQkAZQIFD3F1b3RlQXNzZXRBZnRlcgkBBG11bGQCBRJfcXVvdGVBc3NldFJlc2VydmUFEV9xdW90ZUFzc2V0V2VpZ2h0BBNtYXhQcmljZUltcGFjdFZhbHVlCQEObWF4UHJpY2VJbXBhY3QABA0kdDAxOTkwMjIwMDYzCQENdXBkYXRlUmVzZXJ2ZQMJAQEhAQUGX2lzQWRkBQ5xdW90ZUFzc2V0U29sZAUQX2Jhc2VBc3NldEFtb3VudAQXcXVvdGVBc3NldFJlc2VydmVBZnRlcjEIBQ0kdDAxOTkwMjIwMDYzAl8xBBZiYXNlQXNzZXRSZXNlcnZlQWZ0ZXIxCAUNJHQwMTk5MDIyMDA2MwJfMgQXdG90YWxQb3NpdGlvblNpemVBZnRlcjEIBQ0kdDAxOTkwMjIwMDYzAl8zBAttYXJrZXRQcmljZQkBBGRpdmQCBQ5xdW90ZUFzc2V0U29sZAUQX2Jhc2VBc3NldEFtb3VudAQJcHJpY2VEaWZmCQEDYWJzAQkAZQIFC3ByaWNlQmVmb3JlBQttYXJrZXRQcmljZQQLcHJpY2VJbXBhY3QJAGUCBQxERUNJTUFMX1VOSVQJAQRkaXZkAgULcHJpY2VCZWZvcmUJAGQCBQtwcmljZUJlZm9yZQUJcHJpY2VEaWZmAwMJAGYCBQtwcmljZUltcGFjdAUTbWF4UHJpY2VJbXBhY3RWYWx1ZQUUX2NoZWNrTWF4UHJpY2VJbXBhY3QHCQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAg1QcmljZSBpbXBhY3QgCQCkAwEFC3ByaWNlSW1wYWN0AhQgPiBtYXggcHJpY2UgaW1wYWN0IAkApAMBBRNtYXhQcmljZUltcGFjdFZhbHVlAhUgYmVmb3JlIHF1b3RlIGFzc2V0OiAJAKQDAQUSX3F1b3RlQXNzZXRSZXNlcnZlAhQgYmVmb3JlIGJhc2UgYXNzZXQ6IAkApAMBBRFfYmFzZUFzc2V0UmVzZXJ2ZQIgIGJhc2UgYXNzZXQgYW1vdW50IHRvIGV4Y2hhbmdlOiAJAKQDAQUQX2Jhc2VBc3NldEFtb3VudAIPIHByaWNlIGJlZm9yZTogCQCkAwEFC3ByaWNlQmVmb3JlAg8gbWFya2V0IHByaWNlOiAJAKQDAQULbWFya2V0UHJpY2UJAJkKBwUOcXVvdGVBc3NldFNvbGQFF3F1b3RlQXNzZXRSZXNlcnZlQWZ0ZXIxBRZiYXNlQXNzZXRSZXNlcnZlQWZ0ZXIxBRd0b3RhbFBvc2l0aW9uU2l6ZUFmdGVyMQkAZQIJARV0b3RhbExvbmdQb3NpdGlvblNpemUAAwUGX2lzQWRkCQEDYWJzAQUQX2Jhc2VBc3NldEFtb3VudAAACQBlAgkBFnRvdGFsU2hvcnRQb3NpdGlvblNpemUAAwkBASEBBQZfaXNBZGQJAQNhYnMBBRBfYmFzZUFzc2V0QW1vdW50AAAFC3ByaWNlSW1wYWN0AQpzd2FwT3V0cHV0AwZfaXNBZGQQX2Jhc2VBc3NldEFtb3VudBRfY2hlY2tNYXhQcmljZUltcGFjdAkBFnN3YXBPdXRwdXRXaXRoUmVzZXJ2ZXMHBQZfaXNBZGQFEF9iYXNlQXNzZXRBbW91bnQFFF9jaGVja01heFByaWNlSW1wYWN0CQEGcXRBc3RSAAkBBnF0QXN0VwAJAQZic0FzdFIACQEGYnNBc3RXAAEOZ2V0T3JhY2xlUHJpY2UABAZvcmFjbGUJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzBQVrX29yYQIABAhwcmljZUtleQkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwUJa19vcmFfa2V5BAlsYXN0VmFsdWUJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQZvcmFjbGUFCHByaWNlS2V5CQCsAgIJAKwCAgkArAICAiJDYW4gbm90IGdldCBvcmFjbGUgcHJpY2UuIE9yYWNsZTogCQClCAEFBm9yYWNsZQIGIGtleTogBQhwcmljZUtleQQIYmxvY2tLZXkJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwUPa19vcmFfYmxvY2tfa2V5AgADCQECIT0CBQhibG9ja0tleQIABAxjdXJyZW50QmxvY2sIBQlsYXN0QmxvY2sGaGVpZ2h0BA9sYXN0T3JhY2xlQmxvY2sJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQZvcmFjbGUFCGJsb2NrS2V5CQCsAgIJAKwCAgkArAICAiJDYW4gbm90IGdldCBvcmFjbGUgYmxvY2suIE9yYWNsZTogCQClCAEFBm9yYWNsZQIGIGtleTogBQhibG9ja0tleQMJAGYCCQBlAgUMY3VycmVudEJsb2NrBQ9sYXN0T3JhY2xlQmxvY2sJAQ5tYXhPcmFjbGVEZWxheQAJAAIBCQCsAgIJAKwCAgkArAICAiZPcmFjbGUgc3RhbGUgZGF0YS4gTGFzdCBvcmFjbGUgYmxvY2s6IAkApAMBBQ9sYXN0T3JhY2xlQmxvY2sCECBjdXJyZW50IGJsb2NrOiAJAKQDAQUMY3VycmVudEJsb2NrBQlsYXN0VmFsdWUFCWxhc3RWYWx1ZQEOaXNNYXJrZXRDbG9zZWQABAZvcmFjbGUJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzBQVrX29yYQIABAdvcGVuS2V5CQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMFDmtfb3JhX29wZW5fa2V5AgADCQECIT0CBQdvcGVuS2V5AgAEBmlzT3BlbgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCbCAIFBm9yYWNsZQUHb3BlbktleQkArAICCQCsAgIJAKwCAgIrQ2FuIG5vdCBnZXQgb3JhY2xlIGlzIG9wZW4vY2xvc2VkLiBPcmFjbGU6IAkApQgBBQZvcmFjbGUCBiBrZXk6IAUHb3BlbktleQkBASEBBQZpc09wZW4HAQxhYnNQcmljZURpZmYFDF9vcmFjbGVQcmljZRJfcXVvdGVBc3NldFJlc2VydmURX2Jhc2VBc3NldFJlc2VydmUHX3F0QXN0VwdfYnNBc3RXBApwcmljZUFmdGVyCQEEZGl2ZAIJAQRtdWxkAgUSX3F1b3RlQXNzZXRSZXNlcnZlBQdfcXRBc3RXCQEEbXVsZAIFEV9iYXNlQXNzZXRSZXNlcnZlBQdfYnNBc3RXBAxhdmVyYWdlUHJpY2UJAQRkaXZkAgkAZAIFDF9vcmFjbGVQcmljZQUKcHJpY2VBZnRlcgkAaAIAAgUMREVDSU1BTF9VTklUBAxhYnNQcmljZURpZmYJAQRkaXZkAgkBA2FicwEJAGUCBQxfb3JhY2xlUHJpY2UFCnByaWNlQWZ0ZXIFDGF2ZXJhZ2VQcmljZQUMYWJzUHJpY2VEaWZmARlyZXF1aXJlTm90T3ZlclNwcmVhZExpbWl0AhJfcXVvdGVBc3NldFJlc2VydmURX2Jhc2VBc3NldFJlc2VydmUEC29yYWNsZVByaWNlCQEOZ2V0T3JhY2xlUHJpY2UABAdfcXRBc3RXCQEGcXRBc3RXAAQHX2JzQXN0VwkBBmJzQXN0VwAEEmFic1ByaWNlRGlmZkJlZm9yZQkBDGFic1ByaWNlRGlmZgUFC29yYWNsZVByaWNlCQEGcXRBc3RSAAkBBmJzQXN0UgAFB19xdEFzdFcFB19ic0FzdFcEEWFic1ByaWNlRGlmZkFmdGVyCQEMYWJzUHJpY2VEaWZmBQULb3JhY2xlUHJpY2UFEl9xdW90ZUFzc2V0UmVzZXJ2ZQURX2Jhc2VBc3NldFJlc2VydmUFB19xdEFzdFcFB19ic0FzdFcDAwkAZgIFEWFic1ByaWNlRGlmZkFmdGVyCQEObWF4UHJpY2VTcHJlYWQACQBmAgURYWJzUHJpY2VEaWZmQWZ0ZXIFEmFic1ByaWNlRGlmZkJlZm9yZQcJAAIBCQCsAgIJAKwCAgkArAICAg1QcmljZSBzcHJlYWQgCQCkAwEFEWFic1ByaWNlRGlmZkFmdGVyAhQgPiBtYXggcHJpY2Ugc3ByZWFkIAkApAMBCQEObWF4UHJpY2VTcHJlYWQABgEdcmVxdWlyZU5vdE92ZXJNYXhPcGVuTm90aW9uYWwCEV9sb25nT3Blbk5vdGlvbmFsEl9zaG9ydE9wZW5Ob3Rpb25hbAQQX21heE9wZW5Ob3Rpb25hbAkBD21heE9wZW5Ob3Rpb25hbAADCQBmAgURX2xvbmdPcGVuTm90aW9uYWwFEF9tYXhPcGVuTm90aW9uYWwJAAIBCQCsAgIJAKwCAgkArAICAhNMb25nIG9wZW4gbm90aW9uYWwgCQCkAwEFEV9sb25nT3Blbk5vdGlvbmFsAhUgPiBtYXggb3BlbiBub3Rpb25hbCAJAKQDAQUQX21heE9wZW5Ob3Rpb25hbAMJAGYCBRJfc2hvcnRPcGVuTm90aW9uYWwFEF9tYXhPcGVuTm90aW9uYWwJAAIBCQCsAgIJAKwCAgkArAICAhRTaG9ydCBvcGVuIG5vdGlvbmFsIAkApAMBBRJfc2hvcnRPcGVuTm90aW9uYWwCFSA+IG1heCBvcGVuIG5vdGlvbmFsIAkApAMBBRBfbWF4T3Blbk5vdGlvbmFsBgEMZ2V0U3BvdFByaWNlAAQSX3F1b3RlQXNzZXRSZXNlcnZlCQEGcXRBc3RSAAQRX2Jhc2VBc3NldFJlc2VydmUJAQZic0FzdFIABAdfcXRBc3RXCQEGcXRBc3RXAAQHX2JzQXN0VwkBBmJzQXN0VwAJAQRkaXZkAgkBBG11bGQCBRJfcXVvdGVBc3NldFJlc2VydmUFB19xdEFzdFcJAQRtdWxkAgURX2Jhc2VBc3NldFJlc2VydmUFB19ic0FzdFcBFmlzT3ZlckZsdWN0dWF0aW9uTGltaXQABAtvcmFjbGVQcmljZQkBDmdldE9yYWNsZVByaWNlAAQMY3VycmVudFByaWNlCQEMZ2V0U3BvdFByaWNlAAkAZgIJAQRkaXZkAgkBA2FicwEJAGUCBQtvcmFjbGVQcmljZQUMY3VycmVudFByaWNlBQtvcmFjbGVQcmljZQkBC3NwcmVhZExpbWl0AAEfZ2V0UG9zaXRpb25BZGp1c3RlZE9wZW5Ob3Rpb25hbAYNX3Bvc2l0aW9uU2l6ZQdfb3B0aW9uEl9xdW90ZUFzc2V0UmVzZXJ2ZRFfcXVvdGVBc3NldFdlaWdodBFfYmFzZUFzc2V0UmVzZXJ2ZRBfYmFzZUFzc2V0V2VpZ2h0BA9wb3NpdGlvblNpemVBYnMJAQNhYnMBBQ1fcG9zaXRpb25TaXplBAdpc1Nob3J0CQBmAgAABQ1fcG9zaXRpb25TaXplBBBwb3NpdGlvbk5vdGlvbmFsAwkAAAIFB19vcHRpb24FD1BOTF9PUFRJT05fU1BPVAQNJHQwMjUwMTQyNTIzNAkBFnN3YXBPdXRwdXRXaXRoUmVzZXJ2ZXMHCQEBIQEFB2lzU2hvcnQFD3Bvc2l0aW9uU2l6ZUFicwcFEl9xdW90ZUFzc2V0UmVzZXJ2ZQURX3F1b3RlQXNzZXRXZWlnaHQFEV9iYXNlQXNzZXRSZXNlcnZlBRBfYmFzZUFzc2V0V2VpZ2h0BBNvdXRQb3NpdGlvbk5vdGlvbmFsCAUNJHQwMjUwMTQyNTIzNAJfMQQCeDEIBQ0kdDAyNTAxNDI1MjM0Al8yBAJ4MggFDSR0MDI1MDE0MjUyMzQCXzMEAngzCAUNJHQwMjUwMTQyNTIzNAJfNAUTb3V0UG9zaXRpb25Ob3Rpb25hbAkBBG11bGQCBQ9wb3NpdGlvblNpemVBYnMJAQ5nZXRPcmFjbGVQcmljZQAFEHBvc2l0aW9uTm90aW9uYWwBK2dldFBvc2l0aW9uTm90aW9uYWxBbmRVbnJlYWxpemVkUG5sQnlWYWx1ZXMHDV9wb3NpdGlvblNpemUVX3Bvc2l0aW9uT3Blbk5vdGlvbmFsEl9xdW90ZUFzc2V0UmVzZXJ2ZRFfcXVvdGVBc3NldFdlaWdodBFfYmFzZUFzc2V0UmVzZXJ2ZRBfYmFzZUFzc2V0V2VpZ2h0B19vcHRpb24DCQAAAgUNX3Bvc2l0aW9uU2l6ZQAACQACAQIVSW52YWxpZCBwb3NpdGlvbiBzaXplBAdpc1Nob3J0CQBmAgAABQ1fcG9zaXRpb25TaXplBBBwb3NpdGlvbk5vdGlvbmFsCQEfZ2V0UG9zaXRpb25BZGp1c3RlZE9wZW5Ob3Rpb25hbAYFDV9wb3NpdGlvblNpemUFB19vcHRpb24FEl9xdW90ZUFzc2V0UmVzZXJ2ZQURX3F1b3RlQXNzZXRXZWlnaHQFEV9iYXNlQXNzZXRSZXNlcnZlBRBfYmFzZUFzc2V0V2VpZ2h0BA11bnJlYWxpemVkUG5sAwUHaXNTaG9ydAkAZQIFFV9wb3NpdGlvbk9wZW5Ob3Rpb25hbAUQcG9zaXRpb25Ob3Rpb25hbAkAZQIFEHBvc2l0aW9uTm90aW9uYWwFFV9wb3NpdGlvbk9wZW5Ob3Rpb25hbAkAlAoCBRBwb3NpdGlvbk5vdGlvbmFsBQ11bnJlYWxpemVkUG5sASNnZXRQb3NpdGlvbk5vdGlvbmFsQW5kVW5yZWFsaXplZFBubAIHX3RyYWRlcgdfb3B0aW9uBA0kdDAyNjY1NTI2NzgzCQELZ2V0UG9zaXRpb24BBQdfdHJhZGVyBAxwb3NpdGlvblNpemUIBQ0kdDAyNjY1NTI2NzgzAl8xBA5wb3NpdGlvbk1hcmdpbggFDSR0MDI2NjU1MjY3ODMCXzIEFHBvc2l0aW9uT3Blbk5vdGlvbmFsCAUNJHQwMjY2NTUyNjc4MwJfMwQRcG9zaXRpb25Mc3RVcGRDUEYIBQ0kdDAyNjY1NTI2NzgzAl80CQErZ2V0UG9zaXRpb25Ob3Rpb25hbEFuZFVucmVhbGl6ZWRQbmxCeVZhbHVlcwcFDHBvc2l0aW9uU2l6ZQUUcG9zaXRpb25PcGVuTm90aW9uYWwJAQZxdEFzdFIACQEGcXRBc3RXAAkBBmJzQXN0UgAJAQZic0FzdFcABQdfb3B0aW9uAQ9jYWxjTWFyZ2luUmF0aW8DDV9yZW1haW5NYXJnaW4IX2JhZERlYnQRX3Bvc2l0aW9uTm90aW9uYWwJAQRkaXZkAgkAZQIFDV9yZW1haW5NYXJnaW4FCF9iYWREZWJ0BRFfcG9zaXRpb25Ob3Rpb25hbAEWZ2V0TWFyZ2luUmF0aW9CeU9wdGlvbgIHX3RyYWRlcgdfb3B0aW9uBA0kdDAyNzI5NjI3NDA3CQELZ2V0UG9zaXRpb24BBQdfdHJhZGVyBAxwb3NpdGlvblNpemUIBQ0kdDAyNzI5NjI3NDA3Al8xBA5wb3NpdGlvbk1hcmdpbggFDSR0MDI3Mjk2Mjc0MDcCXzIEA3BvbggFDSR0MDI3Mjk2Mjc0MDcCXzMEEXBvc2l0aW9uTHN0VXBkQ1BGCAUNJHQwMjcyOTYyNzQwNwJfNAQNJHQwMjc0MTMyNzUwNgkBI2dldFBvc2l0aW9uTm90aW9uYWxBbmRVbnJlYWxpemVkUG5sAgUHX3RyYWRlcgUHX29wdGlvbgQQcG9zaXRpb25Ob3Rpb25hbAgFDSR0MDI3NDEzMjc1MDYCXzEEDXVucmVhbGl6ZWRQbmwIBQ0kdDAyNzQxMzI3NTA2Al8yBA0kdDAyNzUxMTI3Njc3CQEiY2FsY1JlbWFpbk1hcmdpbldpdGhGdW5kaW5nUGF5bWVudAQFDHBvc2l0aW9uU2l6ZQUOcG9zaXRpb25NYXJnaW4FEXBvc2l0aW9uTHN0VXBkQ1BGBQ11bnJlYWxpemVkUG5sBAxyZW1haW5NYXJnaW4IBQ0kdDAyNzUxMTI3Njc3Al8xBAdiYWREZWJ0CAUNJHQwMjc1MTEyNzY3NwJfMgkBD2NhbGNNYXJnaW5SYXRpbwMFDHJlbWFpbk1hcmdpbgUHYmFkRGVidAUQcG9zaXRpb25Ob3Rpb25hbAEOZ2V0TWFyZ2luUmF0aW8BB190cmFkZXIJARZnZXRNYXJnaW5SYXRpb0J5T3B0aW9uAgUHX3RyYWRlcgUPUE5MX09QVElPTl9TUE9UARtnZXRQYXJ0aWFsTGlxdWlkYXRpb25BbW91bnQCB190cmFkZXINX3Bvc2l0aW9uU2l6ZQQMbWF4aW11bVJhdGlvCQEEdm1heAIJARdwYXJ0aWFsTGlxdWlkYXRpb25SYXRpbwAJAGUCBQxERUNJTUFMX1VOSVQJAQRkaXZkAgkBDmdldE1hcmdpblJhdGlvAQUHX3RyYWRlcgkBFm1haW50ZW5hbmNlTWFyZ2luUmF0aW8ABBhtYXhFeGNoYW5nZWRQb3NpdGlvblNpemUJAQRtdWxkAgkBA2FicwEFDV9wb3NpdGlvblNpemUFDG1heGltdW1SYXRpbwQKc3dhcFJlc3VsdAkBCnN3YXBPdXRwdXQDCQBmAgUNX3Bvc2l0aW9uU2l6ZQAABRhtYXhFeGNoYW5nZWRQb3NpdGlvblNpemUHBBxtYXhFeGNoYW5nZWRRdW90ZUFzc2V0QW1vdW50CAUKc3dhcFJlc3VsdAJfMQQLcHJpY2VJbXBhY3QIBQpzd2FwUmVzdWx0Al83AwkAZgIJAQ5tYXhQcmljZUltcGFjdAAFC3ByaWNlSW1wYWN0BRxtYXhFeGNoYW5nZWRRdW90ZUFzc2V0QW1vdW50BBVleGNoYW5nZWRQb3NpdGlvblNpemUJAQRtdWxkAgkBA2FicwEFDV9wb3NpdGlvblNpemUJARdwYXJ0aWFsTGlxdWlkYXRpb25SYXRpbwAEGWV4Y2hhbmdlZFF1b3RlQXNzZXRBbW91bnQICQEKc3dhcE91dHB1dAMJAGYCBQ1fcG9zaXRpb25TaXplAAAFFWV4Y2hhbmdlZFBvc2l0aW9uU2l6ZQcCXzEFGWV4Y2hhbmdlZFF1b3RlQXNzZXRBbW91bnQBFWludGVybmFsQ2xvc2VQb3NpdGlvbgIHX3RyYWRlchRfY2hlY2tNYXhQcmljZUltcGFjdAQNJHQwMjg5MTcyOTA0NQkBC2dldFBvc2l0aW9uAQUHX3RyYWRlcgQMcG9zaXRpb25TaXplCAUNJHQwMjg5MTcyOTA0NQJfMQQOcG9zaXRpb25NYXJnaW4IBQ0kdDAyODkxNzI5MDQ1Al8yBBRwb3NpdGlvbk9wZW5Ob3Rpb25hbAgFDSR0MDI4OTE3MjkwNDUCXzMEEXBvc2l0aW9uTHN0VXBkQ1BGCAUNJHQwMjg5MTcyOTA0NQJfNAQNdW5yZWFsaXplZFBubAgJASNnZXRQb3NpdGlvbk5vdGlvbmFsQW5kVW5yZWFsaXplZFBubAIFB190cmFkZXIFD1BOTF9PUFRJT05fU1BPVAJfMgQNJHQwMjkxNDAyOTMwOAkBImNhbGNSZW1haW5NYXJnaW5XaXRoRnVuZGluZ1BheW1lbnQEBQxwb3NpdGlvblNpemUFDnBvc2l0aW9uTWFyZ2luBRFwb3NpdGlvbkxzdFVwZENQRgUNdW5yZWFsaXplZFBubAQMcmVtYWluTWFyZ2luCAUNJHQwMjkxNDAyOTMwOAJfMQQHYmFkRGVidAgFDSR0MDI5MTQwMjkzMDgCXzIEFWV4Y2hhbmdlZFBvc2l0aW9uU2l6ZQkBAS0BBQxwb3NpdGlvblNpemUEC3JlYWxpemVkUG5sBQ11bnJlYWxpemVkUG5sBA1tYXJnaW5Ub1ZhdWx0CQEBLQEFDHJlbWFpbk1hcmdpbgQNJHQwMjk0MzUyOTcwOQkBCnN3YXBPdXRwdXQDCQBmAgUMcG9zaXRpb25TaXplAAAJAQNhYnMBBQxwb3NpdGlvblNpemUFFF9jaGVja01heFByaWNlSW1wYWN0BBlleGNoYW5nZWRRdW90ZUFzc2V0QW1vdW50CAUNJHQwMjk0MzUyOTcwOQJfMQQWcXVvdGVBc3NldFJlc2VydmVBZnRlcggFDSR0MDI5NDM1Mjk3MDkCXzIEFWJhc2VBc3NldFJlc2VydmVBZnRlcggFDSR0MDI5NDM1Mjk3MDkCXzMEFnRvdGFsUG9zaXRpb25TaXplQWZ0ZXIIBQ0kdDAyOTQzNTI5NzA5Al80BA50b3RhbExvbmdBZnRlcggFDSR0MDI5NDM1Mjk3MDkCXzUED3RvdGFsU2hvcnRBZnRlcggFDSR0MDI5NDM1Mjk3MDkCXzYEGW9wZW5JbnRlcmVzdE5vdGlvbmFsQWZ0ZXIJAGUCCQEUb3BlbkludGVyZXN0Tm90aW9uYWwABRRwb3NpdGlvbk9wZW5Ob3Rpb25hbAkAnwoNBRVleGNoYW5nZWRQb3NpdGlvblNpemUFB2JhZERlYnQFC3JlYWxpemVkUG5sBQ1tYXJnaW5Ub1ZhdWx0BRZxdW90ZUFzc2V0UmVzZXJ2ZUFmdGVyBRViYXNlQXNzZXRSZXNlcnZlQWZ0ZXIFFnRvdGFsUG9zaXRpb25TaXplQWZ0ZXIFGW9wZW5JbnRlcmVzdE5vdGlvbmFsQWZ0ZXIFGWV4Y2hhbmdlZFF1b3RlQXNzZXRBbW91bnQFDnRvdGFsTG9uZ0FmdGVyBQ90b3RhbFNob3J0QWZ0ZXIJAGUCCQEQb3BlbkludGVyZXN0TG9uZwADCQBmAgUMcG9zaXRpb25TaXplAAAFFHBvc2l0aW9uT3Blbk5vdGlvbmFsAAAJAGUCCQERb3BlbkludGVyZXN0U2hvcnQAAwkAZgIAAAUMcG9zaXRpb25TaXplBRRwb3NpdGlvbk9wZW5Ob3Rpb25hbAAAARBnZXRUd2FwU3BvdFByaWNlAAQIbWludXRlSWQJAGkCCQBpAggFCWxhc3RCbG9jawl0aW1lc3RhbXAA6AcAPAQNc3RhcnRNaW51dGVJZAkAZQIFCG1pbnV0ZUlkBQ1UV0FQX0lOVEVSVkFMBAdsaXN0U3RyCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMFDWtfbGFzdERhdGFTdHICAAQEbGlzdAkAtQkCBQdsaXN0U3RyAgEsCgEIZmlsdGVyRm4CC2FjY3VtdWxhdG9yBG5leHQDCQBnAgUNc3RhcnRNaW51dGVJZAkBDXBhcnNlSW50VmFsdWUBBQRuZXh0CQDNCAIFC2FjY3VtdWxhdG9yCQENcGFyc2VJbnRWYWx1ZQEFBG5leHQFC2FjY3VtdWxhdG9yBAVsaXN0RgoAAiRsBQRsaXN0CgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQhmaWx0ZXJGbgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMjAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUBAhtYXhJbmRleAMJAGYCCQCQAwEFBWxpc3RGAAAJAJYDAQUFbGlzdEYJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsaXN0AAAEDGxhc3RNaW51dGVJZAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQ5rX2xhc3RNaW51dGVJZAAABBZlbmRMYXN0Q3VtdWxhdGl2ZVByaWNlCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgkArAICBR1rX3R3YXBEYXRhTGFzdEN1bXVsYXRpdmVQcmljZQIBXwkApAMBBQxsYXN0TWludXRlSWQAAAQMZW5kTGFzdFByaWNlCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgkArAICBRNrX3R3YXBEYXRhTGFzdFByaWNlAgFfCQCkAwEFDGxhc3RNaW51dGVJZAAABBJub3dDdW11bGF0aXZlUHJpY2UJAGQCBRZlbmRMYXN0Q3VtdWxhdGl2ZVByaWNlCQBoAgkAZQIFCG1pbnV0ZUlkBQxsYXN0TWludXRlSWQFDGVuZExhc3RQcmljZQQYc3RhcnRMYXN0Q3VtdWxhdGl2ZVByaWNlCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgkArAICBR1rX3R3YXBEYXRhTGFzdEN1bXVsYXRpdmVQcmljZQIBXwkApAMBBQhtYXhJbmRleAAABA5zdGFydExhc3RQcmljZQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIJAKwCAgUTa190d2FwRGF0YUxhc3RQcmljZQIBXwkApAMBBQhtYXhJbmRleAAABBRzdGFydEN1bXVsYXRpdmVQcmljZQkAZAIFGHN0YXJ0TGFzdEN1bXVsYXRpdmVQcmljZQkAaAIJAGUCBQ1zdGFydE1pbnV0ZUlkBQhtYXhJbmRleAUOc3RhcnRMYXN0UHJpY2UJAGkCCQBlAgUSbm93Q3VtdWxhdGl2ZVByaWNlBRRzdGFydEN1bXVsYXRpdmVQcmljZQUNVFdBUF9JTlRFUlZBTAETZ2V0VGVybWluYWxBbW1TdGF0ZQAEDV9wb3NpdGlvblNpemUJARF0b3RhbFBvc2l0aW9uU2l6ZQADCQAAAgUNX3Bvc2l0aW9uU2l6ZQAACQCUCgIJAQZxdEFzdFIACQEGYnNBc3RSAAQJZGlyZWN0aW9uCQBmAgUNX3Bvc2l0aW9uU2l6ZQAABA0kdDAzMTgzMjMyMDExCQEKc3dhcE91dHB1dAMFCWRpcmVjdGlvbgkBA2FicwEFDV9wb3NpdGlvblNpemUHBBVjdXJyZW50TmV0TWFya2V0VmFsdWUIBQ0kdDAzMTgzMjMyMDExAl8xBBl0ZXJtaW5hbFF1b3RlQXNzZXRSZXNlcnZlCAUNJHQwMzE4MzIzMjAxMQJfMgQYdGVybWluYWxCYXNlQXNzZXRSZXNlcnZlCAUNJHQwMzE4MzIzMjAxMQJfMwkAlAoCBRl0ZXJtaW5hbFF1b3RlQXNzZXRSZXNlcnZlBRh0ZXJtaW5hbEJhc2VBc3NldFJlc2VydmUBE2dldFF1b3RlQXNzZXRXZWlnaHQEEGJhc2VBc3NldFJlc2VydmURdG90YWxQb3NpdGlvblNpemURcXVvdGVBc3NldFJlc2VydmULdGFyZ2V0UHJpY2UEAWIJALYCAQUQYmFzZUFzc2V0UmVzZXJ2ZQQCc3oJALYCAQURdG90YWxQb3NpdGlvblNpemUEAXEJALYCAQURcXVvdGVBc3NldFJlc2VydmUEAXAJALYCAQULdGFyZ2V0UHJpY2UEA2JzMgkBBWJwb3dkAgkAtwICBQFiBQJzegkAtgIBCQBoAgACBQxERUNJTUFMX1VOSVQEBHFiczIJAQVibXVsZAIFAXEFA2JzMgQDcHM0CQC5AgIJALYCAQAECQEFYm11bGQCBQFwBQJzegQDc3FyCQEGYnNxcnRkAQkBBWJtdWxkAgUEcWJzMgkAuAICBQFxBQNwczQEAmJxCQEFYm11bGQCBQFiBQFxBAJxcwkBBWJtdWxkAgUBcQUCc3oEA3RvcAkAtwICCQC3AgIJAL4CAQUDc3FyBQJicQUCcXMEA2JvdAkAuQICCQC2AgEAAgkBBWJtdWxkAgUBcQUCc3oEBnJlc3VsdAkBBWJkaXZkAgUDdG9wBQNib3QJAKADAQUGcmVzdWx0ARRnZXRTeW5jVGVybWluYWxQcmljZQMOX3Rlcm1pbmFsUHJpY2UHX3F0QXN0UgdfYnNBc3RSBA1fcG9zaXRpb25TaXplCQERdG90YWxQb3NpdGlvblNpemUAAwkAAAIFDV9wb3NpdGlvblNpemUAAAQJbmV3UXRBc3RXCQEEZGl2ZAIJAQRtdWxkAgUOX3Rlcm1pbmFsUHJpY2UFB19ic0FzdFIFB19xdEFzdFIJAJUKAwUJbmV3UXRBc3RXBQxERUNJTUFMX1VOSVQAAAQJZGlyZWN0aW9uCQBmAgUNX3Bvc2l0aW9uU2l6ZQAABBVjdXJyZW50TmV0TWFya2V0VmFsdWUICQEKc3dhcE91dHB1dAMFCWRpcmVjdGlvbgkBA2FicwEFDV9wb3NpdGlvblNpemUHAl8xBAluZXdRdEFzdFcJARNnZXRRdW90ZUFzc2V0V2VpZ2h0BAUHX2JzQXN0UgUNX3Bvc2l0aW9uU2l6ZQUHX3F0QXN0UgUOX3Rlcm1pbmFsUHJpY2UECW5ld0JzQXN0VwUMREVDSU1BTF9VTklUBA1tYXJnaW5Ub1ZhdWx0CAkBK2dldFBvc2l0aW9uTm90aW9uYWxBbmRVbnJlYWxpemVkUG5sQnlWYWx1ZXMHBQ1fcG9zaXRpb25TaXplBRVjdXJyZW50TmV0TWFya2V0VmFsdWUFB19xdEFzdFIFCW5ld1F0QXN0VwUHX2JzQXN0UgUJbmV3QnNBc3RXBQ9QTkxfT1BUSU9OX1NQT1QCXzIJAJUKAwUJbmV3UXRBc3RXBQluZXdCc0FzdFcFDW1hcmdpblRvVmF1bHQBCmdldEZ1bmRpbmcABA91bmRlcmx5aW5nUHJpY2UJAQ5nZXRPcmFjbGVQcmljZQAEDXNwb3RUd2FwUHJpY2UJARBnZXRUd2FwU3BvdFByaWNlAAQHcHJlbWl1bQkAZQIFDXNwb3RUd2FwUHJpY2UFD3VuZGVybHlpbmdQcmljZQMDAwkAAAIJARZ0b3RhbFNob3J0UG9zaXRpb25TaXplAAAABgkAAAIJARV0b3RhbExvbmdQb3NpdGlvblNpemUAAAAGCQEOaXNNYXJrZXRDbG9zZWQACQCUCgIAAAAAAwkAZgIAAAUHcHJlbWl1bQQUc2hvcnRQcmVtaXVtRnJhY3Rpb24JAQRkaXZkAgkBBG11bGQCBQdwcmVtaXVtCQEUZnVuZGluZ1BlcmlvZERlY2ltYWwABQdPTkVfREFZBBNsb25nUHJlbWl1bUZyYWN0aW9uCQEEZGl2ZAIJAQRtdWxkAgUUc2hvcnRQcmVtaXVtRnJhY3Rpb24JARZ0b3RhbFNob3J0UG9zaXRpb25TaXplAAkBFXRvdGFsTG9uZ1Bvc2l0aW9uU2l6ZQAJAJQKAgUUc2hvcnRQcmVtaXVtRnJhY3Rpb24FE2xvbmdQcmVtaXVtRnJhY3Rpb24EE2xvbmdQcmVtaXVtRnJhY3Rpb24JAQRkaXZkAgkBBG11bGQCBQdwcmVtaXVtCQEUZnVuZGluZ1BlcmlvZERlY2ltYWwABQdPTkVfREFZBBRzaG9ydFByZW1pdW1GcmFjdGlvbgkBBGRpdmQCCQEEbXVsZAIFE2xvbmdQcmVtaXVtRnJhY3Rpb24JARV0b3RhbExvbmdQb3NpdGlvblNpemUACQEWdG90YWxTaG9ydFBvc2l0aW9uU2l6ZQAJAJQKAgUUc2hvcnRQcmVtaXVtRnJhY3Rpb24FE2xvbmdQcmVtaXVtRnJhY3Rpb24BDmdldEFkanVzdGVkRmVlAgtfYXJ0aWZhY3RJZBBfYmFzZUZlZURpc2NvdW50BApiYXNlRmVlUmF3CQEDZmVlAAQHYmFzZUZlZQkBBG11bGQCBQpiYXNlRmVlUmF3BRBfYmFzZUZlZURpc2NvdW50BA0kdDAzNTA1OTM1NTU0AwkBAiE9AgULX2FydGlmYWN0SWQCAAQMYXJ0aWZhY3RLaW5kCQEEc3RyQQIJARFuZnRNYW5hZ2VyQWRkcmVzcwAJAQ50b0NvbXBvc2l0ZUtleQIFDGtfdG9rZW5fdHlwZQULX2FydGlmYWN0SWQDCQAAAgUMYXJ0aWZhY3RLaW5kBRhGRUVfUkVEVUNUSU9OX1RPS0VOX1RZUEUECXJlZHVjdGlvbgkBBGludEECCQERbmZ0TWFuYWdlckFkZHJlc3MACQEOdG9Db21wb3NpdGVLZXkCBQ1rX3Rva2VuX3BhcmFtBQtfYXJ0aWZhY3RJZAQLYWRqdXN0ZWRGZWUJAQRtdWxkAgUHYmFzZUZlZQUJcmVkdWN0aW9uCQCUCgIFC2FkanVzdGVkRmVlBgkAAgECGUludmFsaWQgYXR0YWNoZWQgYXJ0aWZhY3QJAJQKAgUHYmFzZUZlZQcEC2FkanVzdGVkRmVlCAUNJHQwMzUwNTkzNTU1NAJfMQQMYnVybkFydGlmYWN0CAUNJHQwMzUwNTkzNTU1NAJfMgkAlAoCBQthZGp1c3RlZEZlZQUMYnVybkFydGlmYWN0ARdpc1NhbWVBc3NldE9yTm9Qb3NpdGlvbgIHX3RyYWRlcghfYXNzZXRJZAQPb2xkUG9zaXRpb25TaXplCAkBC2dldFBvc2l0aW9uAQUHX3RyYWRlcgJfMQMJAAACBQ9vbGRQb3NpdGlvblNpemUAAAYJAAACCQEQZ2V0UG9zaXRpb25Bc3NldAEFB190cmFkZXIFCF9hc3NldElkAQtpc1NhbWVBc3NldAIHX3RyYWRlcghfYXNzZXRJZAkAAAIJARBnZXRQb3NpdGlvbkFzc2V0AQUHX3RyYWRlcgUIX2Fzc2V0SWQBHmdldEJvcnJvd2VkQnlUcmFkZXJJbk1hcmtldEtleQMEX2FtbQhfYXNzZXRJZAdfdHJhZGVyCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICBSBrX3RyYWRlcl9tYXJrZXRfYXNzZXRfY29sbGF0ZXJhbAIBXwUEX2FtbQIBXwUIX2Fzc2V0SWQCAV8FB190cmFkZXIBE2dldEJvcnJvd2VkQnlUcmFkZXIBB190cmFkZXIEDXBvc2l0aW9uQXNzZXQJARBnZXRQb3NpdGlvbkFzc2V0AQUHX3RyYWRlcgMJAAACBQ1wb3NpdGlvbkFzc2V0CQDYBAEJAQpxdW90ZUFzc2V0AAkAlAoCAAAFDXBvc2l0aW9uQXNzZXQEA2tleQkBHmdldEJvcnJvd2VkQnlUcmFkZXJJbk1hcmtldEtleQMJAKUIAQUEdGhpcwUNcG9zaXRpb25Bc3NldAUHX3RyYWRlcgQGYm9ycm93CQELdmFsdWVPckVsc2UCCQCaCAIJARFjb2xsYXRlcmFsQWRkcmVzcwAFA2tleQAACQCUCgIFBmJvcnJvdwUNcG9zaXRpb25Bc3NldAEYZ2V0Rm9yVHJhZGVyV2l0aEFydGlmYWN0AgdfdHJhZGVyC19hcnRpZmFjdElkBBBkb0dldEZlZURpc2NvdW50CQD8BwQJAQxtaW5lckFkZHJlc3MAAhJjb21wdXRlRmVlRGlzY291bnQJAMwIAgUHX3RyYWRlcgUDbmlsBQNuaWwDCQAAAgUQZG9HZXRGZWVEaXNjb3VudAUQZG9HZXRGZWVEaXNjb3VudAQLZmVlRGlzY291bnQEByRtYXRjaDAFEGRvR2V0RmVlRGlzY291bnQDCQABAgUHJG1hdGNoMAIDSW50BAF4BQckbWF0Y2gwBQF4CQACAQIhSW52YWxpZCBjb21wdXRlRmVlRGlzY291bnQgcmVzdWx0BA0kdDAzNjc4NTM2ODU5CQEOZ2V0QWRqdXN0ZWRGZWUCBQtfYXJ0aWZhY3RJZAULZmVlRGlzY291bnQEC2FkanVzdGVkRmVlCAUNJHQwMzY3ODUzNjg1OQJfMQQMYnVybkFydGlmYWN0CAUNJHQwMzY3ODUzNjg1OQJfMgkAlAoCBQthZGp1c3RlZEZlZQUMYnVybkFydGlmYWN0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQ1nZXRBcnRpZmFjdElkAQFpBAphcnRpZmFjdElkAwkAZgIJAJADAQgFAWkIcGF5bWVudHMAAQkA2AQBCQETdmFsdWVPckVycm9yTWVzc2FnZQIICQCRAwIIBQFpCHBheW1lbnRzAAEHYXNzZXRJZAISSW52YWxpZCBhcnRpZmFjdElkAgAFCmFydGlmYWN0SWQBDWRpc3RyaWJ1dGVGZWUBCl9mZWVBbW91bnQEDGZlZVRvU3Rha2VycwkBBG11bGQCBQpfZmVlQW1vdW50CQETZmVlVG9TdGFrZXJzUGVyY2VudAAECmZlZVRvVmF1bHQJAGUCBQpfZmVlQW1vdW50BQxmZWVUb1N0YWtlcnMJAJQKAgUMZmVlVG9TdGFrZXJzBQpmZWVUb1ZhdWx0AQ51cGRhdGVTZXR0aW5ncwwQX2luaXRNYXJnaW5SYXRpbwRfbW1yFF9saXF1aWRhdGlvbkZlZVJhdGlvDl9mdW5kaW5nUGVyaW9kBF9mZWUMX3NwcmVhZExpbWl0D19tYXhQcmljZUltcGFjdBhfcGFydGlhbExpcXVpZGF0aW9uUmF0aW8PX21heFByaWNlU3ByZWFkEF9tYXhPcGVuTm90aW9uYWwUX2ZlZVRvU3Rha2Vyc1BlcmNlbnQPX21heE9yYWNsZURlbGF5CQDMCAIJAQxJbnRlZ2VyRW50cnkCBRFrX2luaXRNYXJnaW5SYXRpbwUQX2luaXRNYXJnaW5SYXRpbwkAzAgCCQEMSW50ZWdlckVudHJ5AgUYa19tYWludGVuYW5jZU1hcmdpblJhdGlvBQRfbW1yCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRVrX2xpcXVpZGF0aW9uRmVlUmF0aW8FFF9saXF1aWRhdGlvbkZlZVJhdGlvCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQ9rX2Z1bmRpbmdQZXJpb2QFDl9mdW5kaW5nUGVyaW9kCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQVrX2ZlZQUEX2ZlZQkAzAgCCQEMSW50ZWdlckVudHJ5AgUNa19zcHJlYWRMaW1pdAUMX3NwcmVhZExpbWl0CQDMCAIJAQxJbnRlZ2VyRW50cnkCBRBrX21heFByaWNlSW1wYWN0BQ9fbWF4UHJpY2VJbXBhY3QJAMwIAgkBDEludGVnZXJFbnRyeQIFGWtfcGFydGlhbExpcXVpZGF0aW9uUmF0aW8FGF9wYXJ0aWFsTGlxdWlkYXRpb25SYXRpbwkAzAgCCQEMSW50ZWdlckVudHJ5AgUQa19tYXhQcmljZVNwcmVhZAUPX21heFByaWNlU3ByZWFkCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRFrX21heE9wZW5Ob3Rpb25hbAUQX21heE9wZW5Ob3Rpb25hbAkAzAgCCQEMSW50ZWdlckVudHJ5AgUVa19mZWVUb1N0YWtlcnNQZXJjZW50BRRfZmVlVG9TdGFrZXJzUGVyY2VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgUQa19tYXhPcmFjbGVEZWxheQUUX2ZlZVRvU3Rha2Vyc1BlcmNlbnQFA25pbAENdXBkYXRlRnVuZGluZwURX25leHRGdW5kaW5nQmxvY2skX2xhdGVzdExvbmdDdW11bGF0aXZlUHJlbWl1bUZyYWN0aW9uJV9sYXRlc3RTaG9ydEN1bXVsYXRpdmVQcmVtaXVtRnJhY3Rpb24QX2xvbmdGdW5kaW5nUmF0ZRFfc2hvcnRGdW5kaW5nUmF0ZQkAzAgCCQEMSW50ZWdlckVudHJ5AgUSa19uZXh0RnVuZGluZ0Jsb2NrBRFfbmV4dEZ1bmRpbmdCbG9jawkAzAgCCQEMSW50ZWdlckVudHJ5AgUla19sYXRlc3RMb25nQ3VtdWxhdGl2ZVByZW1pdW1GcmFjdGlvbgUkX2xhdGVzdExvbmdDdW11bGF0aXZlUHJlbWl1bUZyYWN0aW9uCQDMCAIJAQxJbnRlZ2VyRW50cnkCBSZrX2xhdGVzdFNob3J0Q3VtdWxhdGl2ZVByZW1pdW1GcmFjdGlvbgUlX2xhdGVzdFNob3J0Q3VtdWxhdGl2ZVByZW1pdW1GcmFjdGlvbgkAzAgCCQEMSW50ZWdlckVudHJ5AgURa19sb25nRnVuZGluZ1JhdGUFEF9sb25nRnVuZGluZ1JhdGUJAMwIAgkBDEludGVnZXJFbnRyeQIFEmtfc2hvcnRGdW5kaW5nUmF0ZQURX3Nob3J0RnVuZGluZ1JhdGUFA25pbAETdXBkYXRlUG9zaXRpb25Bc3NldAIIX2FkZHJlc3MIX2Fzc2V0SWQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDnRvQ29tcG9zaXRlS2V5AgUPa19wb3NpdGlvbkFzc2V0BQhfYWRkcmVzcwUIX2Fzc2V0SWQFA25pbAEfaW5jcmVtZW50UG9zaXRpb25TZXF1ZW5jZU51bWJlcgINaXNOZXdQb3NpdGlvbghfYWRkcmVzcwMFDWlzTmV3UG9zaXRpb24ED2N1cnJlbnRTZXF1ZW5jZQkBDGxhc3RTZXF1ZW5jZQAJAMwIAgkBDEludGVnZXJFbnRyeQIJAQ50b0NvbXBvc2l0ZUtleQIFEmtfcG9zaXRpb25TZXF1ZW5jZQUIX2FkZHJlc3MJAGQCBQ9jdXJyZW50U2VxdWVuY2UAAQkAzAgCCQEMSW50ZWdlckVudHJ5AgUKa19zZXF1ZW5jZQkAZAIFD2N1cnJlbnRTZXF1ZW5jZQABBQNuaWwFA25pbAEOdXBkYXRlUG9zaXRpb24FCF9hZGRyZXNzBV9zaXplB19tYXJnaW4NX29wZW5Ob3Rpb25hbCBfbGF0ZXN0Q3VtdWxhdGl2ZVByZW1pdW1GcmFjdGlvbgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDnRvQ29tcG9zaXRlS2V5AgUOa19wb3NpdGlvblNpemUFCF9hZGRyZXNzBQVfc2l6ZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDnRvQ29tcG9zaXRlS2V5AgUQa19wb3NpdGlvbk1hcmdpbgUIX2FkZHJlc3MFB19tYXJnaW4JAMwIAgkBDEludGVnZXJFbnRyeQIJAQ50b0NvbXBvc2l0ZUtleQIFFmtfcG9zaXRpb25PcGVuTm90aW9uYWwFCF9hZGRyZXNzBQ1fb3Blbk5vdGlvbmFsCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEOdG9Db21wb3NpdGVLZXkCBS5rX3Bvc2l0aW9uTGFzdFVwZGF0ZWRDdW11bGF0aXZlUHJlbWl1bUZyYWN0aW9uBQhfYWRkcmVzcwUgX2xhdGVzdEN1bXVsYXRpdmVQcmVtaXVtRnJhY3Rpb24FA25pbAEKYXBwZW5kVHdhcAEGX3ByaWNlBAhtaW51dGVJZAkAaQIJAGkCCAUJbGFzdEJsb2NrCXRpbWVzdGFtcADoBwA8BBBwcmV2aW91c01pbnV0ZUlkCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFDmtfbGFzdE1pbnV0ZUlkAAADCQBmAgUQcHJldmlvdXNNaW51dGVJZAUIbWludXRlSWQJAAIBAhFUV0FQIG91dC1vZi1vcmRlcgQMbGFzdE1pbnV0ZUlkAwkAAAIFEHByZXZpb3VzTWludXRlSWQAAAUIbWludXRlSWQFEHByZXZpb3VzTWludXRlSWQDCQBmAgUIbWludXRlSWQFEHByZXZpb3VzTWludXRlSWQEE3ByZXZDdW11bGF0aXZlUHJpY2UJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICCQCsAgIFHWtfdHdhcERhdGFMYXN0Q3VtdWxhdGl2ZVByaWNlAgFfCQCkAwEFEHByZXZpb3VzTWludXRlSWQAAAQJcHJldlByaWNlCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgkArAICBRNrX3R3YXBEYXRhTGFzdFByaWNlAgFfCQCkAwEFEHByZXZpb3VzTWludXRlSWQFBl9wcmljZQQTbGFzdEN1bXVsYXRpdmVQcmljZQkAZAIFE3ByZXZDdW11bGF0aXZlUHJpY2UJAGgCCQBlAgUIbWludXRlSWQFDGxhc3RNaW51dGVJZAUJcHJldlByaWNlBARsaXN0CQELcHVzaFRvUXVldWUDCQEJc3RyVG9MaXN0AQkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzBQ1rX2xhc3REYXRhU3RyAgAFDVRXQVBfSU5URVJWQUwJAKQDAQUIbWludXRlSWQJAMwIAgkBDEludGVnZXJFbnRyeQIJAQ50b0NvbXBvc2l0ZUtleQIFHWtfdHdhcERhdGFMYXN0Q3VtdWxhdGl2ZVByaWNlCQCkAwEFCG1pbnV0ZUlkBRNsYXN0Q3VtdWxhdGl2ZVByaWNlCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEOdG9Db21wb3NpdGVLZXkCBRNrX3R3YXBEYXRhTGFzdFByaWNlCQCkAwEFCG1pbnV0ZUlkBQZfcHJpY2UJAMwIAgkBDEludGVnZXJFbnRyeQIJAQ50b0NvbXBvc2l0ZUtleQIFGmtfdHdhcERhdGFQcmV2aW91c01pbnV0ZUlkCQCkAwEFCG1pbnV0ZUlkBRBwcmV2aW91c01pbnV0ZUlkCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQ5rX2xhc3RNaW51dGVJZAUIbWludXRlSWQJAMwIAgkBC1N0cmluZ0VudHJ5AgUNa19sYXN0RGF0YVN0cgkBCWxpc3RUb1N0cgEFBGxpc3QFA25pbAQYdHdhcERhdGFQcmV2aW91c01pbnV0ZUlkCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAQ50b0NvbXBvc2l0ZUtleQIFGmtfdHdhcERhdGFQcmV2aW91c01pbnV0ZUlkCQCkAwEFCG1pbnV0ZUlkAAAEE3ByZXZDdW11bGF0aXZlUHJpY2UJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBDnRvQ29tcG9zaXRlS2V5AgUda190d2FwRGF0YUxhc3RDdW11bGF0aXZlUHJpY2UJAKQDAQUYdHdhcERhdGFQcmV2aW91c01pbnV0ZUlkAAAECXByZXZQcmljZQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQEOdG9Db21wb3NpdGVLZXkCBRNrX3R3YXBEYXRhTGFzdFByaWNlCQCkAwEFGHR3YXBEYXRhUHJldmlvdXNNaW51dGVJZAUGX3ByaWNlBBNsYXN0Q3VtdWxhdGl2ZVByaWNlCQBkAgUTcHJldkN1bXVsYXRpdmVQcmljZQkAaAIJAGUCBQhtaW51dGVJZAUYdHdhcERhdGFQcmV2aW91c01pbnV0ZUlkBQlwcmV2UHJpY2UJAMwIAgkBDEludGVnZXJFbnRyeQIJAQ50b0NvbXBvc2l0ZUtleQIFHWtfdHdhcERhdGFMYXN0Q3VtdWxhdGl2ZVByaWNlCQCkAwEFCG1pbnV0ZUlkBRNsYXN0Q3VtdWxhdGl2ZVByaWNlCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEOdG9Db21wb3NpdGVLZXkCBRNrX3R3YXBEYXRhTGFzdFByaWNlCQCkAwEFCG1pbnV0ZUlkBQZfcHJpY2UFA25pbAERdXBkYXRlQW1tUmVzZXJ2ZXMCB19xdEFzdFIHX2JzQXN0UgkAzAgCCQEMSW50ZWdlckVudHJ5AgUTa19xdW90ZUFzc2V0UmVzZXJ2ZQUHX3F0QXN0UgkAzAgCCQEMSW50ZWdlckVudHJ5AgUSa19iYXNlQXNzZXRSZXNlcnZlBQdfYnNBc3RSBQNuaWwBEHVwZGF0ZUFtbVdlaWdodHMCB19xdEFzdFcHX2JzQXN0VwkAzAgCCQEMSW50ZWdlckVudHJ5AgUSa19xdW90ZUFzc2V0V2VpZ2h0BQdfcXRBc3RXCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRFrX2Jhc2VBc3NldFdlaWdodAUHX2JzQXN0VwUDbmlsAQl1cGRhdGVBbW0IB19xdEFzdFIHX2JzQXN0UhdfdG90YWxQb3NpdGlvblNpemVBZnRlchVfb3BlbkludGVyZXN0Tm90aW9uYWwWX3RvdGFsTG9uZ1Bvc2l0aW9uU2l6ZRdfdG90YWxTaG9ydFBvc2l0aW9uU2l6ZRZfdG90YWxMb25nT3Blbk5vdGlvbmFsF190b3RhbFNob3J0T3Blbk5vdGlvbmFsBAdfcXRBc3RXCQEGcXRBc3RXAAQHX2JzQXN0VwkBBmJzQXN0VwADCQECIT0CCQBlAgUWX3RvdGFsTG9uZ1Bvc2l0aW9uU2l6ZQUXX3RvdGFsU2hvcnRQb3NpdGlvblNpemUFF190b3RhbFBvc2l0aW9uU2l6ZUFmdGVyCQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgICGEludmFsaWQgQU1NIHN0YXRlIGRhdGE6IAkApAMBBRZfdG90YWxMb25nUG9zaXRpb25TaXplAgQgKyAgCQCkAwEFF190b3RhbFNob3J0UG9zaXRpb25TaXplAgQgIT0gCQCkAwEFF190b3RhbFBvc2l0aW9uU2l6ZUFmdGVyCQDOCAIJAM4IAgkBEXVwZGF0ZUFtbVJlc2VydmVzAgUHX3F0QXN0UgUHX2JzQXN0UgkAzAgCCQEMSW50ZWdlckVudHJ5AgUTa190b3RhbFBvc2l0aW9uU2l6ZQUXX3RvdGFsUG9zaXRpb25TaXplQWZ0ZXIJAMwIAgkBDEludGVnZXJFbnRyeQIFFmtfb3BlbkludGVyZXN0Tm90aW9uYWwFFV9vcGVuSW50ZXJlc3ROb3Rpb25hbAkAzAgCCQEMSW50ZWdlckVudHJ5AgUXa190b3RhbExvbmdQb3NpdGlvblNpemUFFl90b3RhbExvbmdQb3NpdGlvblNpemUJAMwIAgkBDEludGVnZXJFbnRyeQIFGGtfdG90YWxTaG9ydFBvc2l0aW9uU2l6ZQUXX3RvdGFsU2hvcnRQb3NpdGlvblNpemUJAMwIAgkBDEludGVnZXJFbnRyeQIFEmtfb3BlbkludGVyZXN0TG9uZwUWX3RvdGFsTG9uZ09wZW5Ob3Rpb25hbAkAzAgCCQEMSW50ZWdlckVudHJ5AgUTa19vcGVuSW50ZXJlc3RTaG9ydAUXX3RvdGFsU2hvcnRPcGVuTm90aW9uYWwFA25pbAkBCmFwcGVuZFR3YXABCQEEZGl2ZAIJAQRtdWxkAgUHX3F0QXN0UgUHX3F0QXN0VwkBBG11bGQCBQdfYnNBc3RSBQdfYnNBc3RXAQ5kZWxldGVQb3NpdGlvbgEIX2FkZHJlc3MJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBDnRvQ29tcG9zaXRlS2V5AgUOa19wb3NpdGlvblNpemUFCF9hZGRyZXNzCQDMCAIJAQtEZWxldGVFbnRyeQEJAQ50b0NvbXBvc2l0ZUtleQIFEGtfcG9zaXRpb25NYXJnaW4FCF9hZGRyZXNzCQDMCAIJAQtEZWxldGVFbnRyeQEJAQ50b0NvbXBvc2l0ZUtleQIFFmtfcG9zaXRpb25PcGVuTm90aW9uYWwFCF9hZGRyZXNzCQDMCAIJAQtEZWxldGVFbnRyeQEJAQ50b0NvbXBvc2l0ZUtleQIFLmtfcG9zaXRpb25MYXN0VXBkYXRlZEN1bXVsYXRpdmVQcmVtaXVtRnJhY3Rpb24FCF9hZGRyZXNzCQDMCAIJAQtEZWxldGVFbnRyeQEJAQ50b0NvbXBvc2l0ZUtleQIFD2tfcG9zaXRpb25Bc3NldAUIX2FkZHJlc3MFA25pbAEId2l0aGRyYXcCCF9hZGRyZXNzB19hbW91bnQEB2JhbGFuY2UJAPAHAgUEdGhpcwkBCnF1b3RlQXNzZXQAAwkAZgIFB19hbW91bnQFB2JhbGFuY2UJAAIBCQCsAgIJAKwCAgkArAICAhNVbmFibGUgdG8gd2l0aGRyYXcgCQCkAwEFB19hbW91bnQCFyBmcm9tIGNvbnRyYWN0IGJhbGFuY2UgCQCkAwEFB2JhbGFuY2UJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUIX2FkZHJlc3MFB19hbW91bnQJAQpxdW90ZUFzc2V0AAUDbmlsAQ11cGRhdGVCYWxhbmNlAQFpAwkAZgIAAAUBaQkAAgECB0JhbGFuY2UJAMwIAgkBDEludGVnZXJFbnRyeQIFCWtfYmFsYW5jZQUBaQUDbmlsAQt0cmFuc2ZlckZlZQEBaQkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEOc3Rha2luZ0FkZHJlc3MABQFpCQEKcXVvdGVBc3NldAAFA25pbAEOZG9CdXJuQXJ0aWZhY3QCDV9idXJuQXJ0aWZhY3QBaQMFDV9idXJuQXJ0aWZhY3QJAMwIAgkBBEJ1cm4CCQETdmFsdWVPckVycm9yTWVzc2FnZQIICQCRAwIIBQFpCHBheW1lbnRzAAEHYXNzZXRJZAIQSW52YWxpZCBhcnRpZmFjdAABBQNuaWwFA25pbBcBaQEFcGF1c2UAAwkBAiE9AggFAWkGY2FsbGVyCQEMYWRtaW5BZGRyZXNzAAkAAgECFEludmFsaWQgcGF1c2UgcGFyYW1zCQDMCAIJAQxCb29sZWFuRW50cnkCBQhrX3BhdXNlZAYFA25pbAFpAQd1bnBhdXNlAAMJAQIhPQIIBQFpBmNhbGxlcgkBDGFkbWluQWRkcmVzcwAJAAIBAhZJbnZhbGlkIHVucGF1c2UgcGFyYW1zCQDMCAIJAQxCb29sZWFuRW50cnkCBQhrX3BhdXNlZAcFA25pbAFpAQxzZXRDbG9zZU9ubHkAAwkBAiE9AggFAWkGY2FsbGVyCQEMYWRtaW5BZGRyZXNzAAkAAgECG0ludmFsaWQgc2V0Q2xvc2VPbmx5IHBhcmFtcwkAzAgCCQEMQm9vbGVhbkVudHJ5AgULa19jbG9zZU9ubHkGBQNuaWwBaQEOdW5zZXRDbG9zZU9ubHkAAwkBAiE9AggFAWkGY2FsbGVyCQEMYWRtaW5BZGRyZXNzAAkAAgECHUludmFsaWQgdW5zZXRDbG9zZU9ubHkgcGFyYW1zCQDMCAIJAQxCb29sZWFuRW50cnkCBQtrX2Nsb3NlT25seQcFA25pbAFpAQxhZGRMaXF1aWRpdHkBEV9xdW90ZUFzc2V0QW1vdW50AwMJAQIhPQIIBQFpBmNhbGxlcgkBDGFkbWluQWRkcmVzcwAGCQBnAgAABRFfcXVvdGVBc3NldEFtb3VudAkAAgECG0ludmFsaWQgYWRkTGlxdWlkaXR5IHBhcmFtcwQHX3F0QXN0UgkBBnF0QXN0UgAEB19ic0FzdFIJAQZic0FzdFIABAdfcXRBc3RXCQEGcXRBc3RXAAQHX2JzQXN0VwkBBmJzQXN0VwAEBXByaWNlCQEEZGl2ZAIJAQRtdWxkAgUHX3F0QXN0UgUHX3F0QXN0VwkBBG11bGQCBQdfYnNBc3RSBQdfYnNBc3RXBAtxdEFzdFJBZnRlcgkAZAIFB19xdEFzdFIFEV9xdW90ZUFzc2V0QW1vdW50BBRiYXNlQXNzZXRBbW91bnRUb0FkZAkAZQIJAQRkaXZkAgkBBG11bGQCBQtxdEFzdFJBZnRlcgUHX3F0QXN0VwUFcHJpY2UFB19ic0FzdFIEC2JzQXN0UkFmdGVyCQBkAgUHX2JzQXN0UgUUYmFzZUFzc2V0QW1vdW50VG9BZGQEDSR0MDQ1ODgxNDYwMzIJARRnZXRTeW5jVGVybWluYWxQcmljZQMJAQ5nZXRPcmFjbGVQcmljZQAFC3F0QXN0UkFmdGVyBQtic0FzdFJBZnRlcgQTbmV3UXVvdGVBc3NldFdlaWdodAgFDSR0MDQ1ODgxNDYwMzICXzEEEm5ld0Jhc2VBc3NldFdlaWdodAgFDSR0MDQ1ODgxNDYwMzICXzIEDW1hcmdpblRvVmF1bHQIBQ0kdDA0NTg4MTQ2MDMyAl8zBA1kb0V4Y2hhbmdlUG5MAwkBAiE9AgUNbWFyZ2luVG9WYXVsdAAABA1kb0V4Y2hhbmdlUG5MCQD8BwQJAQx2YXVsdEFkZHJlc3MAAhVleGNoYW5nZUZyZWVBbmRMb2NrZWQJAMwIAgUNbWFyZ2luVG9WYXVsdAUDbmlsBQNuaWwDCQAAAgUNZG9FeGNoYW5nZVBuTAUNZG9FeGNoYW5nZVBuTAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBQNuaWwDCQAAAgUNZG9FeGNoYW5nZVBuTAUNZG9FeGNoYW5nZVBuTAkAzggCCQERdXBkYXRlQW1tUmVzZXJ2ZXMCBQtxdEFzdFJBZnRlcgULYnNBc3RSQWZ0ZXIJARB1cGRhdGVBbW1XZWlnaHRzAgUTbmV3UXVvdGVBc3NldFdlaWdodAUSbmV3QmFzZUFzc2V0V2VpZ2h0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBD3JlbW92ZUxpcXVpZGl0eQERX3F1b3RlQXNzZXRBbW91bnQDAwkBAiE9AggFAWkGY2FsbGVyCQEMYWRtaW5BZGRyZXNzAAYJAGcCAAAFEV9xdW90ZUFzc2V0QW1vdW50CQACAQIeSW52YWxpZCByZW1vdmVMaXF1aWRpdHkgcGFyYW1zBAdfcXRBc3RSCQEGcXRBc3RSAAQHX2JzQXN0UgkBBmJzQXN0UgAEB19xdEFzdFcJAQZxdEFzdFcABAdfYnNBc3RXCQEGYnNBc3RXAAQFcHJpY2UJAQRkaXZkAgkBBG11bGQCBQdfcXRBc3RSBQdfcXRBc3RXCQEEbXVsZAIFB19ic0FzdFIFB19ic0FzdFcEF2Jhc2VBc3NldEFtb3VudFRvUmVtb3ZlCQEEZGl2ZAIFEV9xdW90ZUFzc2V0QW1vdW50BQVwcmljZQQLcXRBc3RSQWZ0ZXIJAGUCBQdfcXRBc3RSBRFfcXVvdGVBc3NldEFtb3VudAQLYnNBc3RSQWZ0ZXIJAGUCBQdfYnNBc3RSBRdiYXNlQXNzZXRBbW91bnRUb1JlbW92ZQkBEXVwZGF0ZUFtbVJlc2VydmVzAgULcXRBc3RSQWZ0ZXIFC2JzQXN0UkFmdGVyAWkBDmNoYW5nZVNldHRpbmdzDBBfaW5pdE1hcmdpblJhdGlvBF9tbXIUX2xpcXVpZGF0aW9uRmVlUmF0aW8OX2Z1bmRpbmdQZXJpb2QEX2ZlZQxfc3ByZWFkTGltaXQPX21heFByaWNlSW1wYWN0GF9wYXJ0aWFsTGlxdWlkYXRpb25SYXRpbw9fbWF4UHJpY2VTcHJlYWQQX21heE9wZW5Ob3Rpb25hbBRfZmVlVG9TdGFrZXJzUGVyY2VudA9fbWF4T3JhY2xlRGVsYXkDCQECIT0CCAUBaQZjYWxsZXIJAQxhZG1pbkFkZHJlc3MACQACAQIdSW52YWxpZCBjaGFuZ2VTZXR0aW5ncyBwYXJhbXMJAQ51cGRhdGVTZXR0aW5ncwwFEF9pbml0TWFyZ2luUmF0aW8FBF9tbXIFFF9saXF1aWRhdGlvbkZlZVJhdGlvBQ5fZnVuZGluZ1BlcmlvZAUEX2ZlZQUMX3NwcmVhZExpbWl0BQ9fbWF4UHJpY2VJbXBhY3QFGF9wYXJ0aWFsTGlxdWlkYXRpb25SYXRpbwUPX21heFByaWNlU3ByZWFkBRBfbWF4T3Blbk5vdGlvbmFsBRRfZmVlVG9TdGFrZXJzUGVyY2VudAUPX21heE9yYWNsZURlbGF5AWkBCmluaXRpYWxpemUSB19xdEFzdFIHX2JzQXN0Ug5fZnVuZGluZ1BlcmlvZBBfaW5pdE1hcmdpblJhdGlvBF9tbXIUX2xpcXVpZGF0aW9uRmVlUmF0aW8EX2ZlZQdfb3JhY2xlCl9vcmFjbGVLZXkPX29yYWNsZUJsb2NrS2V5DF9jb29yZGluYXRvcgxfc3ByZWFkTGltaXQPX21heFByaWNlSW1wYWN0GF9wYXJ0aWFsTGlxdWlkYXRpb25SYXRpbw9fbWF4UHJpY2VTcHJlYWQQX21heE9wZW5Ob3Rpb25hbBRfZmVlVG9TdGFrZXJzUGVyY2VudA9fbWF4T3JhY2xlRGVsYXkDAwMDAwMDAwMDAwMDAwMDCQBnAgAABQdfcXRBc3RSBgkAZwIAAAUHX2JzQXN0UgYJAGcCAAAFDl9mdW5kaW5nUGVyaW9kBgkAZwIAAAUQX2luaXRNYXJnaW5SYXRpbwYJAGcCAAAFBF9tbXIGCQBnAgAABRRfbGlxdWlkYXRpb25GZWVSYXRpbwYJAGcCAAAFBF9mZWUGCQBnAgAABQxfc3ByZWFkTGltaXQGCQBnAgAABQ9fbWF4UHJpY2VJbXBhY3QGCQBnAgAABRhfcGFydGlhbExpcXVpZGF0aW9uUmF0aW8GCQBnAgAABQ9fbWF4UHJpY2VTcHJlYWQGCQBnAgAABRBfbWF4T3Blbk5vdGlvbmFsBgkAZwIAAAUUX2ZlZVRvU3Rha2Vyc1BlcmNlbnQGCQBmAgUUX2ZlZVRvU3Rha2Vyc1BlcmNlbnQFDERFQ0lNQUxfVU5JVAYJAGcCAAAFD19tYXhPcmFjbGVEZWxheQYJAQtpbml0aWFsaXplZAAJAAIBAh1JbnZhbGlkIGluaXRpYWxpemUgcGFyYW1ldGVycwkAzggCCQDOCAIJAM4IAgkAzggCCQEJdXBkYXRlQW1tCAUHX3F0QXN0UgUHX2JzQXN0UgAAAAAAAAAAAAAAAAkBDnVwZGF0ZVNldHRpbmdzDAUQX2luaXRNYXJnaW5SYXRpbwUEX21tcgUUX2xpcXVpZGF0aW9uRmVlUmF0aW8FDl9mdW5kaW5nUGVyaW9kBQRfZmVlBQxfc3ByZWFkTGltaXQFD19tYXhQcmljZUltcGFjdAUYX3BhcnRpYWxMaXF1aWRhdGlvblJhdGlvBQ9fbWF4UHJpY2VTcHJlYWQFEF9tYXhPcGVuTm90aW9uYWwFFF9mZWVUb1N0YWtlcnNQZXJjZW50BQ9fbWF4T3JhY2xlRGVsYXkJAQ11cGRhdGVGdW5kaW5nBQkAZAIIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQ5fZnVuZGluZ1BlcmlvZAAAAAAAAAAACQENdXBkYXRlQmFsYW5jZQEAAAkAzAgCCQEMQm9vbGVhbkVudHJ5AgUNa19pbml0aWFsaXplZAYJAMwIAgkBC1N0cmluZ0VudHJ5AgUFa19vcmEFB19vcmFjbGUJAMwIAgkBC1N0cmluZ0VudHJ5AgUJa19vcmFfa2V5BQpfb3JhY2xlS2V5CQDMCAIJAQtTdHJpbmdFbnRyeQIFD2tfb3JhX2Jsb2NrX2tleQUPX29yYWNsZUJsb2NrS2V5CQDMCAIJAQtTdHJpbmdFbnRyeQIFFGtfY29vcmRpbmF0b3JBZGRyZXNzBQxfY29vcmRpbmF0b3IFA25pbAFpARBkZWNyZWFzZVBvc2l0aW9uAwdfYW1vdW50CV9sZXZlcmFnZRNfbWluQmFzZUFzc2V0QW1vdW50BARzeW5jCQD8BwQFBHRoaXMCGXN5bmNUZXJtaW5hbFByaWNlVG9PcmFjbGUFA25pbAUDbmlsAwkAAAIFBHN5bmMFBHN5bmMEB190cmFkZXIJAQ9nZXRBY3R1YWxDYWxsZXIBBQFpAwMDAwMDCQBnAgAABQdfYW1vdW50BgkBASEBCQELaW5pdGlhbGl6ZWQABgkBASEBCQEWcmVxdWlyZU1vcmVNYXJnaW5SYXRpbwMJAQRkaXZkAgUMREVDSU1BTF9VTklUBQlfbGV2ZXJhZ2UJAQ9pbml0TWFyZ2luUmF0aW8ABgYJAQEhAQkBE3JlcXVpcmVPcGVuUG9zaXRpb24BBQdfdHJhZGVyBgkBBnBhdXNlZAAGCQEOaXNNYXJrZXRDbG9zZWQACQACAQIjSW52YWxpZCBkZWNyZWFzZVBvc2l0aW9uIHBhcmFtZXRlcnMEDSR0MDQ5ODk5NTAwMzkJAQtnZXRQb3NpdGlvbgEFB190cmFkZXIED29sZFBvc2l0aW9uU2l6ZQgFDSR0MDQ5ODk5NTAwMzkCXzEEEW9sZFBvc2l0aW9uTWFyZ2luCAUNJHQwNDk4OTk1MDAzOQJfMgQXb2xkUG9zaXRpb25PcGVuTm90aW9uYWwIBQ0kdDA0OTg5OTUwMDM5Al8zBBRvbGRQb3NpdGlvbkxzdFVwZENQRggFDSR0MDQ5ODk5NTAwMzkCXzQECl9kaXJlY3Rpb24DCQBmAgUPb2xkUG9zaXRpb25TaXplAAAFCURJUl9TSE9SVAUIRElSX0xPTkcEBWlzQWRkCQAAAgUKX2RpcmVjdGlvbgUIRElSX0xPTkcEDG9wZW5Ob3Rpb25hbAkBBG11bGQCBQdfYW1vdW50BQlfbGV2ZXJhZ2UEDSR0MDUwMjEyNTAzMTYJASNnZXRQb3NpdGlvbk5vdGlvbmFsQW5kVW5yZWFsaXplZFBubAIFB190cmFkZXIFD1BOTF9PUFRJT05fU1BPVAQTb2xkUG9zaXRpb25Ob3Rpb25hbAgFDSR0MDUwMjEyNTAzMTYCXzEEDXVucmVhbGl6ZWRQbmwIBQ0kdDA1MDIxMjUwMzE2Al8yBA0kdDA1MDMyMjUyOTY0AwkAZgIFE29sZFBvc2l0aW9uTm90aW9uYWwFDG9wZW5Ob3Rpb25hbAQNJHQwNTA3Mzc1MDkyMQkBCXN3YXBJbnB1dAIFBWlzQWRkBQxvcGVuTm90aW9uYWwEFWV4Y2hhbmdlZFBvc2l0aW9uU2l6ZQgFDSR0MDUwNzM3NTA5MjECXzEEFnF1b3RlQXNzZXRSZXNlcnZlQWZ0ZXIIBQ0kdDA1MDczNzUwOTIxAl8yBBViYXNlQXNzZXRSZXNlcnZlQWZ0ZXIIBQ0kdDA1MDczNzUwOTIxAl8zBBZ0b3RhbFBvc2l0aW9uU2l6ZUFmdGVyCAUNJHQwNTA3Mzc1MDkyMQJfNAQYZXhjaGFuZ2VkUG9zaXRpb25TaXplQWJzCQEDYWJzAQUVZXhjaGFuZ2VkUG9zaXRpb25TaXplAwMJAQIhPQIFE19taW5CYXNlQXNzZXRBbW91bnQAAAkAZgIFE19taW5CYXNlQXNzZXRBbW91bnQFGGV4Y2hhbmdlZFBvc2l0aW9uU2l6ZUFicwcJAAIBCQCsAgIJAKwCAgkArAICAiVUb28gbGl0dGxlIGJhc2UgYXNzZXQgZXhjaGFuZ2VkLCBnb3QgCQCkAwEFGGV4Y2hhbmdlZFBvc2l0aW9uU2l6ZUFicwIKIGV4cGVjdGVkIAkApAMBBRNfbWluQmFzZUFzc2V0QW1vdW50BAtyZWFsaXplZFBubAkBBGRpdmQCCQEEbXVsZAIFDXVucmVhbGl6ZWRQbmwFGGV4Y2hhbmdlZFBvc2l0aW9uU2l6ZUFicwkBA2FicwEFD29sZFBvc2l0aW9uU2l6ZQQNJHQwNTEzNTg1MTU4NwkBImNhbGNSZW1haW5NYXJnaW5XaXRoRnVuZGluZ1BheW1lbnQEBQ9vbGRQb3NpdGlvblNpemUFEW9sZFBvc2l0aW9uTWFyZ2luBRRvbGRQb3NpdGlvbkxzdFVwZENQRgULcmVhbGl6ZWRQbmwEDHJlbWFpbk1hcmdpbggFDSR0MDUxMzU4NTE1ODcCXzEEB2JhZERlYnQIBQ0kdDA1MTM1ODUxNTg3Al8yBBlleGNoYW5nZWRRdW90ZUFzc2V0QW1vdW50BQxvcGVuTm90aW9uYWwEEnVucmVhbGl6ZWRQbmxBZnRlcgkAZQIFDXVucmVhbGl6ZWRQbmwFC3JlYWxpemVkUG5sBBJyZW1haW5PcGVuTm90aW9uYWwDCQBmAgUPb2xkUG9zaXRpb25TaXplAAAJAGUCCQBlAgUTb2xkUG9zaXRpb25Ob3Rpb25hbAUZZXhjaGFuZ2VkUXVvdGVBc3NldEFtb3VudAUSdW5yZWFsaXplZFBubEFmdGVyCQBlAgkAZAIFEnVucmVhbGl6ZWRQbmxBZnRlcgUTb2xkUG9zaXRpb25Ob3Rpb25hbAUZZXhjaGFuZ2VkUXVvdGVBc3NldEFtb3VudAQPbmV3UG9zaXRpb25TaXplCQBkAgUPb2xkUG9zaXRpb25TaXplBRVleGNoYW5nZWRQb3NpdGlvblNpemUJAJ4KDAUPbmV3UG9zaXRpb25TaXplBQxyZW1haW5NYXJnaW4JAQNhYnMBBRJyZW1haW5PcGVuTm90aW9uYWwJAR9sYXRlc3RDdW11bGF0aXZlUHJlbWl1bUZyYWN0aW9uAQUPbmV3UG9zaXRpb25TaXplBRViYXNlQXNzZXRSZXNlcnZlQWZ0ZXIFFnF1b3RlQXNzZXRSZXNlcnZlQWZ0ZXIFFnRvdGFsUG9zaXRpb25TaXplQWZ0ZXIJAGUCCQEUb3BlbkludGVyZXN0Tm90aW9uYWwABQxvcGVuTm90aW9uYWwJAGUCCQEVdG90YWxMb25nUG9zaXRpb25TaXplAAMJAGYCBQ9uZXdQb3NpdGlvblNpemUAAAkBA2FicwEFFWV4Y2hhbmdlZFBvc2l0aW9uU2l6ZQAACQBlAgkBFnRvdGFsU2hvcnRQb3NpdGlvblNpemUAAwkAZgIAAAUPbmV3UG9zaXRpb25TaXplCQEDYWJzAQUVZXhjaGFuZ2VkUG9zaXRpb25TaXplAAAJAGUCCQEQb3BlbkludGVyZXN0TG9uZwADCQBmAgUPbmV3UG9zaXRpb25TaXplAAAFDG9wZW5Ob3Rpb25hbAAACQBlAgkBEW9wZW5JbnRlcmVzdFNob3J0AAMJAGYCAAAFD25ld1Bvc2l0aW9uU2l6ZQUMb3Blbk5vdGlvbmFsAAAJAAIBAhRDbG9zZSBwb3NpdGlvbiBmaXJzdAQPbmV3UG9zaXRpb25TaXplCAUNJHQwNTAzMjI1Mjk2NAJfMQQXbmV3UG9zaXRpb25SZW1haW5NYXJnaW4IBQ0kdDA1MDMyMjUyOTY0Al8yBBduZXdQb3NpdGlvbk9wZW5Ob3Rpb25hbAgFDSR0MDUwMzIyNTI5NjQCXzMEFG5ld1Bvc2l0aW9uTGF0ZXN0Q1BGCAUNJHQwNTAzMjI1Mjk2NAJfNAQVYmFzZUFzc2V0UmVzZXJ2ZUFmdGVyCAUNJHQwNTAzMjI1Mjk2NAJfNQQWcXVvdGVBc3NldFJlc2VydmVBZnRlcggFDSR0MDUwMzIyNTI5NjQCXzYEFnRvdGFsUG9zaXRpb25TaXplQWZ0ZXIIBQ0kdDA1MDMyMjUyOTY0Al83BBlvcGVuSW50ZXJlc3ROb3Rpb25hbEFmdGVyCAUNJHQwNTAzMjI1Mjk2NAJfOAQOdG90YWxMb25nQWZ0ZXIIBQ0kdDA1MDMyMjUyOTY0Al85BA90b3RhbFNob3J0QWZ0ZXIIBQ0kdDA1MDMyMjUyOTY0A18xMAQadG90YWxMb25nT3BlbkludGVyZXN0QWZ0ZXIIBQ0kdDA1MDMyMjUyOTY0A18xMQQbdG90YWxTaG9ydE9wZW5JbnRlcmVzdEFmdGVyCAUNJHQwNTAzMjI1Mjk2NANfMTIEDm5vdGlmeU5vdGlvbmFsCQD8BwQJAQxtaW5lckFkZHJlc3MAAg5ub3RpZnlOb3Rpb25hbAkAzAgCBQdfdHJhZGVyCQDMCAIFF25ld1Bvc2l0aW9uT3Blbk5vdGlvbmFsBQNuaWwFA25pbAMJAAACBQ5ub3RpZnlOb3Rpb25hbAUObm90aWZ5Tm90aW9uYWwJAM4IAgkBDnVwZGF0ZVBvc2l0aW9uBQUHX3RyYWRlcgUPbmV3UG9zaXRpb25TaXplBRduZXdQb3NpdGlvblJlbWFpbk1hcmdpbgUXbmV3UG9zaXRpb25PcGVuTm90aW9uYWwFFG5ld1Bvc2l0aW9uTGF0ZXN0Q1BGCQEJdXBkYXRlQW1tCAUWcXVvdGVBc3NldFJlc2VydmVBZnRlcgUVYmFzZUFzc2V0UmVzZXJ2ZUFmdGVyBRZ0b3RhbFBvc2l0aW9uU2l6ZUFmdGVyBRlvcGVuSW50ZXJlc3ROb3Rpb25hbEFmdGVyBQ50b3RhbExvbmdBZnRlcgUPdG90YWxTaG9ydEFmdGVyBRp0b3RhbExvbmdPcGVuSW50ZXJlc3RBZnRlcgUbdG90YWxTaG9ydE9wZW5JbnRlcmVzdEFmdGVyCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBEGluY3JlYXNlUG9zaXRpb24ECl9kaXJlY3Rpb24JX2xldmVyYWdlE19taW5CYXNlQXNzZXRBbW91bnQIX3JlZkxpbmsEBHN5bmMJAPwHBAUEdGhpcwIZc3luY1Rlcm1pbmFsUHJpY2VUb09yYWNsZQUDbmlsBQNuaWwDCQAAAgUEc3luYwUEc3luYwQHX3RyYWRlcgkBD2dldEFjdHVhbENhbGxlcgEFAWkECl9yYXdBbW91bnQICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50BAhfYXNzZXRJZAgJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkBAtfYXNzZXRJZFN0cgkA2AQBCQEFdmFsdWUBBQhfYXNzZXRJZAQMaXNRdW90ZUFzc2V0CQAAAgUIX2Fzc2V0SWQJAQpxdW90ZUFzc2V0AAQRaXNDb2xsYXRlcmFsQXNzZXQJARBpc1doaXRlbGlzdEFzc2V0AQULX2Fzc2V0SWRTdHIDAwMDAwMDAwMDCQECIT0CBQpfZGlyZWN0aW9uBQhESVJfTE9ORwkBAiE9AgUKX2RpcmVjdGlvbgUJRElSX1NIT1JUBwYJAGcCAAAFCl9yYXdBbW91bnQGCQEBIQEJAQtpbml0aWFsaXplZAAGAwkBASEBBQxpc1F1b3RlQXNzZXQJAQEhAQURaXNDb2xsYXRlcmFsQXNzZXQHBgkBASEBCQEXaXNTYW1lQXNzZXRPck5vUG9zaXRpb24CBQdfdHJhZGVyBQtfYXNzZXRJZFN0cgYJAQEhAQkBFnJlcXVpcmVNb3JlTWFyZ2luUmF0aW8DCQEEZGl2ZAIFDERFQ0lNQUxfVU5JVAUJX2xldmVyYWdlCQEPaW5pdE1hcmdpblJhdGlvAAYGCQEGcGF1c2VkAAYJAQljbG9zZU9ubHkABgkBDmlzTWFya2V0Q2xvc2VkAAkAAgECI0ludmFsaWQgaW5jcmVhc2VQb3NpdGlvbiBwYXJhbWV0ZXJzBA0kdDA1NDQyNjU0NTExCQEYZ2V0Rm9yVHJhZGVyV2l0aEFydGlmYWN0AgUHX3RyYWRlcgkBDWdldEFydGlmYWN0SWQBBQFpBAthZGp1c3RlZEZlZQgFDSR0MDU0NDI2NTQ1MTECXzEEDGJ1cm5BcnRpZmFjdAgFDSR0MDU0NDI2NTQ1MTECXzIEDHJhd0ZlZUFtb3VudAkBBG11bGQCBQpfcmF3QW1vdW50BQthZGp1c3RlZEZlZQQHX2Ftb3VudAkAZQIFCl9yYXdBbW91bnQFDHJhd0ZlZUFtb3VudAQTZGlzdHJpYnV0ZUZlZUFtb3VudAMFEWlzQ29sbGF0ZXJhbEFzc2V0BAhkb0JvcnJvdwkA/AcECQERY29sbGF0ZXJhbEFkZHJlc3MAAgZib3Jyb3cJAMwIAgUHX3RyYWRlcgUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQhfYXNzZXRJZAUHX2Ftb3VudAUDbmlsAwkAAAIFCGRvQm9ycm93BQhkb0JvcnJvdwQNYmFsYW5jZUJlZm9yZQkA8AcCBQR0aGlzCQEKcXVvdGVBc3NldAADCQAAAgUNYmFsYW5jZUJlZm9yZQUNYmFsYW5jZUJlZm9yZQQGZG9Td2FwCQD8BwQJAQtzd2FwQWRkcmVzcwACBHN3YXAJAMwIAgkA2AQBCQEKcXVvdGVBc3NldAAJAMwIAgAABQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFCF9hc3NldElkBQxyYXdGZWVBbW91bnQFA25pbAMJAAACBQZkb1N3YXAFBmRvU3dhcAQMYmFsYW5jZUFmdGVyCQDwBwIFBHRoaXMJAQpxdW90ZUFzc2V0AAMJAAACBQxiYWxhbmNlQWZ0ZXIFDGJhbGFuY2VBZnRlcgQPZXhjaGFuZ2VkQW1vdW50CQBlAgUMYmFsYW5jZUFmdGVyBQ1iYWxhbmNlQmVmb3JlAwkAAAIFD2V4Y2hhbmdlZEFtb3VudAUPZXhjaGFuZ2VkQW1vdW50BQ9leGNoYW5nZWRBbW91bnQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4FDHJhd0ZlZUFtb3VudAMJAAACBRNkaXN0cmlidXRlRmVlQW1vdW50BRNkaXN0cmlidXRlRmVlQW1vdW50BA5yZWZlcnJlckZlZUFueQkA/AcECQEPcmVmZXJyYWxBZGRyZXNzAAIVYWNjZXB0UGF5bWVudFdpdGhMaW5rCQDMCAIFB190cmFkZXIJAMwIAgUIX3JlZkxpbmsFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkBCnF1b3RlQXNzZXQABRNkaXN0cmlidXRlRmVlQW1vdW50BQNuaWwDCQAAAgUOcmVmZXJyZXJGZWVBbnkFDnJlZmVycmVyRmVlQW55BAtyZWZlcnJlckZlZQQHJG1hdGNoMAUOcmVmZXJyZXJGZWVBbnkDCQABAgUHJG1hdGNoMAIDSW50BAF4BQckbWF0Y2gwBQF4CQACAQITSW52YWxpZCByZWZlcnJlckZlZQQJZmVlQW1vdW50CQBlAgUTZGlzdHJpYnV0ZUZlZUFtb3VudAULcmVmZXJyZXJGZWUEDSR0MDU1ODI3NTU5NjcJAQtnZXRQb3NpdGlvbgEFB190cmFkZXIED29sZFBvc2l0aW9uU2l6ZQgFDSR0MDU1ODI3NTU5NjcCXzEEEW9sZFBvc2l0aW9uTWFyZ2luCAUNJHQwNTU4Mjc1NTk2NwJfMgQXb2xkUG9zaXRpb25PcGVuTm90aW9uYWwIBQ0kdDA1NTgyNzU1OTY3Al8zBBRvbGRQb3NpdGlvbkxzdFVwZENQRggFDSR0MDU1ODI3NTU5NjcCXzQEDWlzTmV3UG9zaXRpb24JAAACBQ9vbGRQb3NpdGlvblNpemUAAAQPaXNTYW1lRGlyZWN0aW9uAwkAZgIFD29sZFBvc2l0aW9uU2l6ZQAACQAAAgUKX2RpcmVjdGlvbgUIRElSX0xPTkcJAAACBQpfZGlyZWN0aW9uBQlESVJfU0hPUlQEDmV4cGFuZEV4aXN0aW5nAwkBASEBBQ1pc05ld1Bvc2l0aW9uBQ9pc1NhbWVEaXJlY3Rpb24HBAVpc0FkZAkAAAIFCl9kaXJlY3Rpb24FCERJUl9MT05HBA0kdDA1NjI1NjU5Mjk3AwMFDWlzTmV3UG9zaXRpb24GBQ5leHBhbmRFeGlzdGluZwQMb3Blbk5vdGlvbmFsCQEEbXVsZAIFB19hbW91bnQFCV9sZXZlcmFnZQQNJHQwNTY3MTg1Njg5MQkBCXN3YXBJbnB1dAIFBWlzQWRkBQxvcGVuTm90aW9uYWwEFWFtb3VudEJhc2VBc3NldEJvdWdodAgFDSR0MDU2NzE4NTY4OTECXzEEFnF1b3RlQXNzZXRSZXNlcnZlQWZ0ZXIIBQ0kdDA1NjcxODU2ODkxAl8yBBViYXNlQXNzZXRSZXNlcnZlQWZ0ZXIIBQ0kdDA1NjcxODU2ODkxAl8zBBZ0b3RhbFBvc2l0aW9uU2l6ZUFmdGVyCAUNJHQwNTY3MTg1Njg5MQJfNAMDCQECIT0CBRNfbWluQmFzZUFzc2V0QW1vdW50AAAJAGYCBRNfbWluQmFzZUFzc2V0QW1vdW50CQEDYWJzAQUVYW1vdW50QmFzZUFzc2V0Qm91Z2h0BwkAAgEJAKwCAgkArAICCQCsAgICDUxpbWl0IGVycm9yOiAJAKQDAQkBA2FicwEFFWFtb3VudEJhc2VBc3NldEJvdWdodAIDIDwgCQCkAwEFE19taW5CYXNlQXNzZXRBbW91bnQED25ld1Bvc2l0aW9uU2l6ZQkAZAIFD29sZFBvc2l0aW9uU2l6ZQUVYW1vdW50QmFzZUFzc2V0Qm91Z2h0BBp0b3RhbExvbmdPcGVuSW50ZXJlc3RBZnRlcgkAZAIJARBvcGVuSW50ZXJlc3RMb25nAAMJAGYCBQ9uZXdQb3NpdGlvblNpemUAAAUMb3Blbk5vdGlvbmFsAAAEG3RvdGFsU2hvcnRPcGVuSW50ZXJlc3RBZnRlcgkAZAIJARFvcGVuSW50ZXJlc3RTaG9ydAADCQBmAgAABQ9uZXdQb3NpdGlvblNpemUFDG9wZW5Ob3Rpb25hbAAABBlpbmNyZWFzZU1hcmdpblJlcXVpcmVtZW50CQEEZGl2ZAIFDG9wZW5Ob3Rpb25hbAUJX2xldmVyYWdlBA0kdDA1NzQ5OTU3NzM4CQEiY2FsY1JlbWFpbk1hcmdpbldpdGhGdW5kaW5nUGF5bWVudAQFD29sZFBvc2l0aW9uU2l6ZQURb2xkUG9zaXRpb25NYXJnaW4FFG9sZFBvc2l0aW9uTHN0VXBkQ1BGBRlpbmNyZWFzZU1hcmdpblJlcXVpcmVtZW50BAxyZW1haW5NYXJnaW4IBQ0kdDA1NzQ5OTU3NzM4Al8xBAJ4MQgFDSR0MDU3NDk5NTc3MzgCXzIEAngyCAUNJHQwNTc0OTk1NzczOAJfMwMJAQEhAQkBGXJlcXVpcmVOb3RPdmVyU3ByZWFkTGltaXQCBRZxdW90ZUFzc2V0UmVzZXJ2ZUFmdGVyBRViYXNlQXNzZXRSZXNlcnZlQWZ0ZXIJAAIBAhVPdmVyIG1heCBzcHJlYWQgbGltaXQDCQEBIQEJAR1yZXF1aXJlTm90T3Zlck1heE9wZW5Ob3Rpb25hbAIFGnRvdGFsTG9uZ09wZW5JbnRlcmVzdEFmdGVyBRt0b3RhbFNob3J0T3BlbkludGVyZXN0QWZ0ZXIJAAIBAhZPdmVyIG1heCBvcGVuIG5vdGlvbmFsCQCeCgwFD25ld1Bvc2l0aW9uU2l6ZQUMcmVtYWluTWFyZ2luCQBkAgUXb2xkUG9zaXRpb25PcGVuTm90aW9uYWwFDG9wZW5Ob3Rpb25hbAkBH2xhdGVzdEN1bXVsYXRpdmVQcmVtaXVtRnJhY3Rpb24BBQ9uZXdQb3NpdGlvblNpemUFFWJhc2VBc3NldFJlc2VydmVBZnRlcgUWcXVvdGVBc3NldFJlc2VydmVBZnRlcgUWdG90YWxQb3NpdGlvblNpemVBZnRlcgkAZAIJARRvcGVuSW50ZXJlc3ROb3Rpb25hbAAFDG9wZW5Ob3Rpb25hbAkAZAIJARV0b3RhbExvbmdQb3NpdGlvblNpemUAAwkAZgIFD25ld1Bvc2l0aW9uU2l6ZQAACQEDYWJzAQUVYW1vdW50QmFzZUFzc2V0Qm91Z2h0AAAJAGQCCQEWdG90YWxTaG9ydFBvc2l0aW9uU2l6ZQADCQBmAgAABQ9uZXdQb3NpdGlvblNpemUJAQNhYnMBBRVhbW91bnRCYXNlQXNzZXRCb3VnaHQAAAUadG90YWxMb25nT3BlbkludGVyZXN0QWZ0ZXIFG3RvdGFsU2hvcnRPcGVuSW50ZXJlc3RBZnRlcgQMb3Blbk5vdGlvbmFsCQEEbXVsZAIFB19hbW91bnQFCV9sZXZlcmFnZQQNJHQwNTg5OTc1OTExMwkBI2dldFBvc2l0aW9uTm90aW9uYWxBbmRVbnJlYWxpemVkUG5sAgkApQgBCAUBaQZjYWxsZXIFD1BOTF9PUFRJT05fU1BPVAQTb2xkUG9zaXRpb25Ob3Rpb25hbAgFDSR0MDU4OTk3NTkxMTMCXzEEDXVucmVhbGl6ZWRQbmwIBQ0kdDA1ODk5NzU5MTEzAl8yAwkAZgIFE29sZFBvc2l0aW9uTm90aW9uYWwFDG9wZW5Ob3Rpb25hbAkAAgECLlVzZSBkZWNyZWFzZVBvc2l0aW9uIHRvIGRlY3JlYXNlIHBvc2l0aW9uIHNpemUJAAIBAhRDbG9zZSBwb3NpdGlvbiBmaXJzdAQPbmV3UG9zaXRpb25TaXplCAUNJHQwNTYyNTY1OTI5NwJfMQQXbmV3UG9zaXRpb25SZW1haW5NYXJnaW4IBQ0kdDA1NjI1NjU5Mjk3Al8yBBduZXdQb3NpdGlvbk9wZW5Ob3Rpb25hbAgFDSR0MDU2MjU2NTkyOTcCXzMEFG5ld1Bvc2l0aW9uTGF0ZXN0Q1BGCAUNJHQwNTYyNTY1OTI5NwJfNAQVYmFzZUFzc2V0UmVzZXJ2ZUFmdGVyCAUNJHQwNTYyNTY1OTI5NwJfNQQWcXVvdGVBc3NldFJlc2VydmVBZnRlcggFDSR0MDU2MjU2NTkyOTcCXzYEFnRvdGFsUG9zaXRpb25TaXplQWZ0ZXIIBQ0kdDA1NjI1NjU5Mjk3Al83BBlvcGVuSW50ZXJlc3ROb3Rpb25hbEFmdGVyCAUNJHQwNTYyNTY1OTI5NwJfOAQOdG90YWxMb25nQWZ0ZXIIBQ0kdDA1NjI1NjU5Mjk3Al85BA90b3RhbFNob3J0QWZ0ZXIIBQ0kdDA1NjI1NjU5Mjk3A18xMAQadG90YWxMb25nT3BlbkludGVyZXN0QWZ0ZXIIBQ0kdDA1NjI1NjU5Mjk3A18xMQQbdG90YWxTaG9ydE9wZW5JbnRlcmVzdEFmdGVyCAUNJHQwNTYyNTY1OTI5NwNfMTIEDSR0MDU5MzAzNTkzNjAJAQ1kaXN0cmlidXRlRmVlAQUJZmVlQW1vdW50BAxmZWVUb1N0YWtlcnMIBQ0kdDA1OTMwMzU5MzYwAl8xBApmZWVUb1ZhdWx0CAUNJHQwNTkzMDM1OTM2MAJfMgQFc3Rha2UDBQxpc1F1b3RlQXNzZXQEBXN0YWtlCQD8BwQJAQx2YXVsdEFkZHJlc3MAAglhZGRMb2NrZWQJAMwIAgcFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkBCnF1b3RlQXNzZXQABQdfYW1vdW50BQNuaWwDCQAAAgUFc3Rha2UFBXN0YWtlBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4FA25pbAMJAAACBQVzdGFrZQUFc3Rha2UEEGRlcG9zaXRJbnN1cmFuY2UJAPwHBAkBDHZhdWx0QWRkcmVzcwACB2FkZEZyZWUFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkBCnF1b3RlQXNzZXQABQpmZWVUb1ZhdWx0BQNuaWwDCQAAAgUQZGVwb3NpdEluc3VyYW5jZQUQZGVwb3NpdEluc3VyYW5jZQQJbm90aWZ5RmVlCQD8BwQJAQxtaW5lckFkZHJlc3MAAgpub3RpZnlGZWVzCQDMCAIFB190cmFkZXIJAMwIAgUJZmVlQW1vdW50BQNuaWwFA25pbAMJAAACBQlub3RpZnlGZWUFCW5vdGlmeUZlZQQObm90aWZ5Tm90aW9uYWwJAPwHBAkBDG1pbmVyQWRkcmVzcwACDm5vdGlmeU5vdGlvbmFsCQDMCAIFB190cmFkZXIJAMwIAgUXbmV3UG9zaXRpb25PcGVuTm90aW9uYWwFA25pbAUDbmlsAwkAAAIFDm5vdGlmeU5vdGlvbmFsBQ5ub3RpZnlOb3Rpb25hbAkAzggCCQDOCAIJAM4IAgkAzggCCQDOCAIJAM4IAgkBDnVwZGF0ZVBvc2l0aW9uBQUHX3RyYWRlcgUPbmV3UG9zaXRpb25TaXplBRduZXdQb3NpdGlvblJlbWFpbk1hcmdpbgUXbmV3UG9zaXRpb25PcGVuTm90aW9uYWwFFG5ld1Bvc2l0aW9uTGF0ZXN0Q1BGCQEfaW5jcmVtZW50UG9zaXRpb25TZXF1ZW5jZU51bWJlcgIFDWlzTmV3UG9zaXRpb24FB190cmFkZXIJARN1cGRhdGVQb3NpdGlvbkFzc2V0AgUHX3RyYWRlcgULX2Fzc2V0SWRTdHIJAQl1cGRhdGVBbW0IBRZxdW90ZUFzc2V0UmVzZXJ2ZUFmdGVyBRViYXNlQXNzZXRSZXNlcnZlQWZ0ZXIFFnRvdGFsUG9zaXRpb25TaXplQWZ0ZXIFGW9wZW5JbnRlcmVzdE5vdGlvbmFsQWZ0ZXIFDnRvdGFsTG9uZ0FmdGVyBQ90b3RhbFNob3J0QWZ0ZXIFGnRvdGFsTG9uZ09wZW5JbnRlcmVzdEFmdGVyBRt0b3RhbFNob3J0T3BlbkludGVyZXN0QWZ0ZXIJAQt0cmFuc2ZlckZlZQEFDGZlZVRvU3Rha2VycwkBDXVwZGF0ZUJhbGFuY2UBCQBkAgkBCGNiYWxhbmNlAAUHX2Ftb3VudAkBDmRvQnVybkFydGlmYWN0AgUMYnVybkFydGlmYWN0BQFpCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCWFkZE1hcmdpbgAEBHN5bmMJAPwHBAUEdGhpcwIZc3luY1Rlcm1pbmFsUHJpY2VUb09yYWNsZQUDbmlsBQNuaWwDCQAAAgUEc3luYwUEc3luYwQHX3RyYWRlcgkApQgBCAUBaQZjYWxsZXIECl9yYXdBbW91bnQICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50BAhfYXNzZXRJZAgJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkBAtfYXNzZXRJZFN0cgkA2AQBCQEFdmFsdWUBBQhfYXNzZXRJZAQMaXNRdW90ZUFzc2V0CQAAAgUIX2Fzc2V0SWQJAQpxdW90ZUFzc2V0AAQRaXNDb2xsYXRlcmFsQXNzZXQJARBpc1doaXRlbGlzdEFzc2V0AQULX2Fzc2V0SWRTdHIDAwMDAwMDAwkBASEBBQxpc1F1b3RlQXNzZXQJAQEhAQURaXNDb2xsYXRlcmFsQXNzZXQHBgkBASEBCQETcmVxdWlyZU9wZW5Qb3NpdGlvbgEJAKUIAQgFAWkGY2FsbGVyBgkBASEBCQELaXNTYW1lQXNzZXQCBQdfdHJhZGVyBQtfYXNzZXRJZFN0cgYJAQEhAQkBC2luaXRpYWxpemVkAAYJAQZwYXVzZWQABgkBCWNsb3NlT25seQAGCQEOaXNNYXJrZXRDbG9zZWQACQACAQIcSW52YWxpZCBhZGRNYXJnaW4gcGFyYW1ldGVycwQNJHQwNjEzMzI2MTQxNwkBGGdldEZvclRyYWRlcldpdGhBcnRpZmFjdAIFB190cmFkZXIJAQ1nZXRBcnRpZmFjdElkAQUBaQQLYWRqdXN0ZWRGZWUIBQ0kdDA2MTMzMjYxNDE3Al8xBAxidXJuQXJ0aWZhY3QIBQ0kdDA2MTMzMjYxNDE3Al8yBAxyYXdGZWVBbW91bnQJAQRtdWxkAgUKX3Jhd0Ftb3VudAULYWRqdXN0ZWRGZWUEB19hbW91bnQJAGUCBQpfcmF3QW1vdW50BQxyYXdGZWVBbW91bnQEE2Rpc3RyaWJ1dGVGZWVBbW91bnQDBRFpc0NvbGxhdGVyYWxBc3NldAQIZG9Cb3Jyb3cJAPwHBAkBEWNvbGxhdGVyYWxBZGRyZXNzAAIGYm9ycm93CQDMCAIFB190cmFkZXIFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUIX2Fzc2V0SWQFB19hbW91bnQFA25pbAMJAAACBQhkb0JvcnJvdwUIZG9Cb3Jyb3cEDWJhbGFuY2VCZWZvcmUJAPAHAgUEdGhpcwkBCnF1b3RlQXNzZXQAAwkAAAIFDWJhbGFuY2VCZWZvcmUFDWJhbGFuY2VCZWZvcmUEBmRvU3dhcAkA/AcECQELc3dhcEFkZHJlc3MAAgRzd2FwCQDMCAIJANgEAQkBCnF1b3RlQXNzZXQACQDMCAIAAAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQhfYXNzZXRJZAUMcmF3RmVlQW1vdW50BQNuaWwDCQAAAgUGZG9Td2FwBQZkb1N3YXAEDGJhbGFuY2VBZnRlcgkA8AcCBQR0aGlzCQEKcXVvdGVBc3NldAADCQAAAgUMYmFsYW5jZUFmdGVyBQxiYWxhbmNlQWZ0ZXIED2V4Y2hhbmdlZEFtb3VudAkAZQIFDGJhbGFuY2VBZnRlcgUNYmFsYW5jZUJlZm9yZQMJAAACBQ9leGNoYW5nZWRBbW91bnQFD2V4Y2hhbmdlZEFtb3VudAUPZXhjaGFuZ2VkQW1vdW50CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBQxyYXdGZWVBbW91bnQDCQAAAgUTZGlzdHJpYnV0ZUZlZUFtb3VudAUTZGlzdHJpYnV0ZUZlZUFtb3VudAQOcmVmZXJyZXJGZWVBbnkJAPwHBAkBD3JlZmVycmFsQWRkcmVzcwACDWFjY2VwdFBheW1lbnQJAMwIAgUHX3RyYWRlcgUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQEKcXVvdGVBc3NldAAFE2Rpc3RyaWJ1dGVGZWVBbW91bnQFA25pbAMJAAACBQ5yZWZlcnJlckZlZUFueQUOcmVmZXJyZXJGZWVBbnkEC3JlZmVycmVyRmVlBAckbWF0Y2gwBQ5yZWZlcnJlckZlZUFueQMJAAECBQckbWF0Y2gwAgNJbnQEAXgFByRtYXRjaDAFAXgJAAIBAhNJbnZhbGlkIHJlZmVycmVyRmVlBAlmZWVBbW91bnQJAGUCBRNkaXN0cmlidXRlRmVlQW1vdW50BQtyZWZlcnJlckZlZQQNJHQwNjI3MTY2Mjg1NgkBC2dldFBvc2l0aW9uAQUHX3RyYWRlcgQPb2xkUG9zaXRpb25TaXplCAUNJHQwNjI3MTY2Mjg1NgJfMQQRb2xkUG9zaXRpb25NYXJnaW4IBQ0kdDA2MjcxNjYyODU2Al8yBBdvbGRQb3NpdGlvbk9wZW5Ob3Rpb25hbAgFDSR0MDYyNzE2NjI4NTYCXzMEFG9sZFBvc2l0aW9uTHN0VXBkQ1BGCAUNJHQwNjI3MTY2Mjg1NgJfNAQNJHQwNjI4NjI2MjkxOQkBDWRpc3RyaWJ1dGVGZWUBBQlmZWVBbW91bnQEDGZlZVRvU3Rha2VycwgFDSR0MDYyODYyNjI5MTkCXzEECmZlZVRvVmF1bHQIBQ0kdDA2Mjg2MjYyOTE5Al8yBAVzdGFrZQMFDGlzUXVvdGVBc3NldAQFc3Rha2UJAPwHBAkBDHZhdWx0QWRkcmVzcwACCWFkZExvY2tlZAkAzAgCBwUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQEKcXVvdGVBc3NldAAFB19hbW91bnQFA25pbAMJAAACBQVzdGFrZQUFc3Rha2UFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgUDbmlsAwkAAAIFBXN0YWtlBQVzdGFrZQQQZGVwb3NpdEluc3VyYW5jZQkA/AcECQEMdmF1bHRBZGRyZXNzAAIHYWRkRnJlZQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQEKcXVvdGVBc3NldAAFCmZlZVRvVmF1bHQFA25pbAMJAAACBRBkZXBvc2l0SW5zdXJhbmNlBRBkZXBvc2l0SW5zdXJhbmNlBAlub3RpZnlGZWUJAPwHBAkBDG1pbmVyQWRkcmVzcwACCm5vdGlmeUZlZXMJAMwIAgUHX3RyYWRlcgkAzAgCBQlmZWVBbW91bnQFA25pbAUDbmlsAwkAAAIFCW5vdGlmeUZlZQUJbm90aWZ5RmVlCQDOCAIJAM4IAgkAzggCCQEOdXBkYXRlUG9zaXRpb24FBQdfdHJhZGVyBQ9vbGRQb3NpdGlvblNpemUJAGQCBRFvbGRQb3NpdGlvbk1hcmdpbgUHX2Ftb3VudAUXb2xkUG9zaXRpb25PcGVuTm90aW9uYWwFFG9sZFBvc2l0aW9uTHN0VXBkQ1BGCQELdHJhbnNmZXJGZWUBBQxmZWVUb1N0YWtlcnMJAQ11cGRhdGVCYWxhbmNlAQkAZAIJAQhjYmFsYW5jZQAFB19hbW91bnQJAQ5kb0J1cm5BcnRpZmFjdAIFDGJ1cm5BcnRpZmFjdAUBaQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQxyZW1vdmVNYXJnaW4BB19hbW91bnQEBHN5bmMJAPwHBAUEdGhpcwIZc3luY1Rlcm1pbmFsUHJpY2VUb09yYWNsZQUDbmlsBQNuaWwDCQAAAgUEc3luYwUEc3luYwQHX3RyYWRlcgkApQgBCAUBaQZjYWxsZXIDAwMDAwkAZwIAAAUHX2Ftb3VudAYJAQEhAQkBE3JlcXVpcmVPcGVuUG9zaXRpb24BBQdfdHJhZGVyBgkBASEBCQELaW5pdGlhbGl6ZWQABgkBBnBhdXNlZAAGCQEOaXNNYXJrZXRDbG9zZWQACQACAQIfSW52YWxpZCByZW1vdmVNYXJnaW4gcGFyYW1ldGVycwQNJHQwNjQwNTU2NDE5NQkBC2dldFBvc2l0aW9uAQUHX3RyYWRlcgQPb2xkUG9zaXRpb25TaXplCAUNJHQwNjQwNTU2NDE5NQJfMQQRb2xkUG9zaXRpb25NYXJnaW4IBQ0kdDA2NDA1NTY0MTk1Al8yBBdvbGRQb3NpdGlvbk9wZW5Ob3Rpb25hbAgFDSR0MDY0MDU1NjQxOTUCXzMEFG9sZFBvc2l0aW9uTHN0VXBkQ1BGCAUNJHQwNjQwNTU2NDE5NQJfNAQLbWFyZ2luRGVsdGEJAQEtAQUHX2Ftb3VudAQNJHQwNjQyMzI2NDQxMQkBImNhbGNSZW1haW5NYXJnaW5XaXRoRnVuZGluZ1BheW1lbnQEBQ9vbGRQb3NpdGlvblNpemUFEW9sZFBvc2l0aW9uTWFyZ2luBRRvbGRQb3NpdGlvbkxzdFVwZENQRgULbWFyZ2luRGVsdGEEDHJlbWFpbk1hcmdpbggFDSR0MDY0MjMyNjQ0MTECXzEEB2JhZERlYnQIBQ0kdDA2NDIzMjY0NDExAl8yAwkBAiE9AgUHYmFkRGVidAAACQACAQIdSW52YWxpZCByZW1vdmVkIG1hcmdpbiBhbW91bnQEC21hcmdpblJhdGlvCQEPY2FsY01hcmdpblJhdGlvAwUMcmVtYWluTWFyZ2luBQdiYWREZWJ0BRdvbGRQb3NpdGlvbk9wZW5Ob3Rpb25hbAMJAQEhAQkBFnJlcXVpcmVNb3JlTWFyZ2luUmF0aW8DBQttYXJnaW5SYXRpbwkBD2luaXRNYXJnaW5SYXRpbwAGCQACAQkArAICCQCsAgIJAKwCAgIZVG9vIG11Y2ggbWFyZ2luIHJlbW92ZWQ6IAkApAMBBQttYXJnaW5SYXRpbwIDIDwgCQCkAwEJAQ9pbml0TWFyZ2luUmF0aW8ABA1xdW90ZUFzc2V0U3RyCQDYBAEJAQpxdW90ZUFzc2V0AAQNJHQwNjQ4NTU2NDkwOQkBE2dldEJvcnJvd2VkQnlUcmFkZXIBBQdfdHJhZGVyBAhib3Jyb3dlZAgFDSR0MDY0ODU1NjQ5MDkCXzEEB2Fzc2V0SWQIBQ0kdDA2NDg1NTY0OTA5Al8yBAd0b1JlcGF5AwkAZgIFB19hbW91bnQFCGJvcnJvd2VkBQhib3Jyb3dlZAUHX2Ftb3VudAQKdG9XaXRoZHJhdwMJAGYCBQhib3Jyb3dlZAUHX2Ftb3VudAAACQBlAgUHX2Ftb3VudAUIYm9ycm93ZWQEC2ZpbmFsQm9ycm93CQBlAgUIYm9ycm93ZWQFB3RvUmVwYXkEFXN3aXRjaFBvc2l0aW9uVG9RdW90ZQMJAGYCBQtmaW5hbEJvcnJvdwAABQNuaWwJARN1cGRhdGVQb3NpdGlvbkFzc2V0AgUHX3RyYWRlcgUNcXVvdGVBc3NldFN0cgQNZG9TYW5pdHlDaGVjawMJAQIhPQIJAGQCBQd0b1JlcGF5BQp0b1dpdGhkcmF3BQdfYW1vdW50CQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgICCHRvUmVwYXk9CQCkAwEFB3RvUmVwYXkCDiArIHRvV2l0aGRyYXc9CQCkAwEFCnRvV2l0aGRyYXcCBCAhPSAJAKQDAQUHX2Ftb3VudAUDbmlsAwkAAAIFDWRvU2FuaXR5Q2hlY2sFDWRvU2FuaXR5Q2hlY2sECWRvVW5zdGFrZQMJAGYCBQp0b1dpdGhkcmF3AAAECWRvVW5zdGFrZQkA/AcECQEMdmF1bHRBZGRyZXNzAAIOd2l0aGRyYXdMb2NrZWQJAMwIAgUKdG9XaXRoZHJhdwUDbmlsBQNuaWwDCQAAAgUJZG9VbnN0YWtlBQlkb1Vuc3Rha2UFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgUDbmlsAwkAAAIFCWRvVW5zdGFrZQUJZG9VbnN0YWtlBBZyZXR1cm5Db2xsYXRlcmFsQWN0aW9uAwkAZgIFB3RvUmVwYXkAAAQHZG9SZXBheQkA/AcECQERY29sbGF0ZXJhbEFkZHJlc3MAAgVyZXBheQkAzAgCBQdfdHJhZGVyCQDMCAIFB3RvUmVwYXkJAMwIAgUHYXNzZXRJZAUDbmlsBQNuaWwDCQAAAgUHZG9SZXBheQUHZG9SZXBheQkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFB3RvUmVwYXkJANkEAQUHYXNzZXRJZAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBQNuaWwDCQAAAgUWcmV0dXJuQ29sbGF0ZXJhbEFjdGlvbgUWcmV0dXJuQ29sbGF0ZXJhbEFjdGlvbgkAzggCCQDOCAIJAM4IAgkAzggCCQEOdXBkYXRlUG9zaXRpb24FBQdfdHJhZGVyBQ9vbGRQb3NpdGlvblNpemUFDHJlbWFpbk1hcmdpbgUXb2xkUG9zaXRpb25PcGVuTm90aW9uYWwJAR9sYXRlc3RDdW11bGF0aXZlUHJlbWl1bUZyYWN0aW9uAQUPb2xkUG9zaXRpb25TaXplAwkAZgIFCnRvV2l0aGRyYXcAAAkBCHdpdGhkcmF3AggFAWkGY2FsbGVyBQp0b1dpdGhkcmF3BQNuaWwJAQ11cGRhdGVCYWxhbmNlAQkAZQIJAQhjYmFsYW5jZQAFB19hbW91bnQFFXN3aXRjaFBvc2l0aW9uVG9RdW90ZQUWcmV0dXJuQ29sbGF0ZXJhbEFjdGlvbgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQ1jbG9zZVBvc2l0aW9uAgVfc2l6ZRRfbWluUXVvdGVBc3NldEFtb3VudAQEc3luYwkA/AcEBQR0aGlzAhlzeW5jVGVybWluYWxQcmljZVRvT3JhY2xlBQNuaWwFA25pbAMJAAACBQRzeW5jBQRzeW5jBAdfdHJhZGVyCQEPZ2V0QWN0dWFsQ2FsbGVyAQUBaQQOX3RyYWRlckFkZHJlc3MJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBBQdfdHJhZGVyAg5JbnZhbGlkIGNhbGxlcgMDAwMDAwkBASEBCQETcmVxdWlyZU9wZW5Qb3NpdGlvbgEFB190cmFkZXIGCQEBIQEJAQtpbml0aWFsaXplZAAGCQEGcGF1c2VkAAYJAGcCAAAFBV9zaXplBgkAZgIAAAUUX21pblF1b3RlQXNzZXRBbW91bnQGCQEOaXNNYXJrZXRDbG9zZWQACQACAQIgSW52YWxpZCBjbG9zZVBvc2l0aW9uIHBhcmFtZXRlcnMEDSR0MDY3MDkzNjcyMzMJAQtnZXRQb3NpdGlvbgEFB190cmFkZXIED29sZFBvc2l0aW9uU2l6ZQgFDSR0MDY3MDkzNjcyMzMCXzEEEW9sZFBvc2l0aW9uTWFyZ2luCAUNJHQwNjcwOTM2NzIzMwJfMgQXb2xkUG9zaXRpb25PcGVuTm90aW9uYWwIBQ0kdDA2NzA5MzY3MjMzAl8zBBRvbGRQb3NpdGlvbkxzdFVwZENQRggFDSR0MDY3MDkzNjcyMzMCXzQEDSR0MDY3MjM5NzIzNjkDCQBmAgkBA2FicwEFD29sZFBvc2l0aW9uU2l6ZQUFX3NpemUECl9kaXJlY3Rpb24DCQBmAgUPb2xkUG9zaXRpb25TaXplAAAFCURJUl9TSE9SVAUIRElSX0xPTkcEBWlzQWRkCQAAAgUKX2RpcmVjdGlvbgUIRElSX0xPTkcEDSR0MDY3ODMwNjgwNTIJAQpzd2FwT3V0cHV0AwkAZgIFD29sZFBvc2l0aW9uU2l6ZQAABQVfc2l6ZQYEGWV4Y2hhbmdlZFF1b3RlQXNzZXRBbW91bnQIBQ0kdDA2NzgzMDY4MDUyAl8xBBZxdW90ZUFzc2V0UmVzZXJ2ZUFmdGVyCAUNJHQwNjc4MzA2ODA1MgJfMgQVYmFzZUFzc2V0UmVzZXJ2ZUFmdGVyCAUNJHQwNjc4MzA2ODA1MgJfMwQWdG90YWxQb3NpdGlvblNpemVBZnRlcggFDSR0MDY3ODMwNjgwNTICXzQEFWV4Y2hhbmdlZFBvc2l0aW9uU2l6ZQMJAGYCBQ9vbGRQb3NpdGlvblNpemUAAAkBAS0BBQVfc2l6ZQUFX3NpemUEDSR0MDY4MTQzNjgyOTcJASNnZXRQb3NpdGlvbk5vdGlvbmFsQW5kVW5yZWFsaXplZFBubAIFB190cmFkZXIFD1BOTF9PUFRJT05fU1BPVAQTb2xkUG9zaXRpb25Ob3Rpb25hbAgFDSR0MDY4MTQzNjgyOTcCXzEEDXVucmVhbGl6ZWRQbmwIBQ0kdDA2ODE0MzY4Mjk3Al8yBAJtcgkBFmdldE1hcmdpblJhdGlvQnlPcHRpb24CBQdfdHJhZGVyBQ9QTkxfT1BUSU9OX1NQT1QEDXJlYWxpemVkUmF0aW8JAQRkaXZkAgkBA2FicwEFFWV4Y2hhbmdlZFBvc2l0aW9uU2l6ZQkBA2FicwEFD29sZFBvc2l0aW9uU2l6ZQQLcmVhbGl6ZWRQbmwJAQRtdWxkAgUNdW5yZWFsaXplZFBubAUNcmVhbGl6ZWRSYXRpbwQScmVtYWluTWFyZ2luQmVmb3JlCAkBImNhbGNSZW1haW5NYXJnaW5XaXRoRnVuZGluZ1BheW1lbnQEBQ9vbGRQb3NpdGlvblNpemUFEW9sZFBvc2l0aW9uTWFyZ2luBRRvbGRQb3NpdGlvbkxzdFVwZENQRgUNdW5yZWFsaXplZFBubAJfMQQNJHQwNjg3OTg2OTAyNgkBImNhbGNSZW1haW5NYXJnaW5XaXRoRnVuZGluZ1BheW1lbnQEBQ9vbGRQb3NpdGlvblNpemUFEW9sZFBvc2l0aW9uTWFyZ2luBRRvbGRQb3NpdGlvbkxzdFVwZENQRgULcmVhbGl6ZWRQbmwEAngxCAUNJHQwNjg3OTg2OTAyNgJfMQQPcG9zaXRpb25CYWREZWJ0CAUNJHQwNjg3OTg2OTAyNgJfMgQOZnVuZGluZ1BheW1lbnQIBQ0kdDA2ODc5ODY5MDI2Al8zBBJ1bnJlYWxpemVkUG5sQWZ0ZXIJAGUCBQ11bnJlYWxpemVkUG5sBQtyZWFsaXplZFBubAQScmVtYWluT3Blbk5vdGlvbmFsAwkAZgIFD29sZFBvc2l0aW9uU2l6ZQAACQBlAgkAZQIFE29sZFBvc2l0aW9uTm90aW9uYWwFGWV4Y2hhbmdlZFF1b3RlQXNzZXRBbW91bnQFEnVucmVhbGl6ZWRQbmxBZnRlcgkAZQIJAGQCBRJ1bnJlYWxpemVkUG5sQWZ0ZXIFE29sZFBvc2l0aW9uTm90aW9uYWwFGWV4Y2hhbmdlZFF1b3RlQXNzZXRBbW91bnQEF25ld1Bvc2l0aW9uT3Blbk5vdGlvbmFsCQEDYWJzAQUScmVtYWluT3Blbk5vdGlvbmFsBBFuZXdQb3NpdGlvbk1hcmdpbgMJAGYCBQ9vbGRQb3NpdGlvblNpemUAAAkAZQIJAQRtdWxkAgkAZAIFF25ld1Bvc2l0aW9uT3Blbk5vdGlvbmFsBRJ1bnJlYWxpemVkUG5sQWZ0ZXIFAm1yBRJ1bnJlYWxpemVkUG5sQWZ0ZXIJAGUCCQEEbXVsZAIJAGUCBRduZXdQb3NpdGlvbk9wZW5Ob3Rpb25hbAUSdW5yZWFsaXplZFBubEFmdGVyBQJtcgUSdW5yZWFsaXplZFBubEFmdGVyBBFvcGVuTm90aW9uYWxEZWx0YQkAZQIFF29sZFBvc2l0aW9uT3Blbk5vdGlvbmFsBRduZXdQb3NpdGlvbk9wZW5Ob3Rpb25hbAQPbmV3UG9zaXRpb25TaXplCQBkAgUPb2xkUG9zaXRpb25TaXplBRVleGNoYW5nZWRQb3NpdGlvblNpemUEFG5ld1Bvc2l0aW9uTHN0VXBkQ1BGCQEfbGF0ZXN0Q3VtdWxhdGl2ZVByZW1pdW1GcmFjdGlvbgEFD25ld1Bvc2l0aW9uU2l6ZQQZb3BlbkludGVyZXN0Tm90aW9uYWxBZnRlcgkAZQIJARRvcGVuSW50ZXJlc3ROb3Rpb25hbAAFEW9wZW5Ob3Rpb25hbERlbHRhAwMJAQIhPQIFFF9taW5RdW90ZUFzc2V0QW1vdW50AAAJAGYCBRRfbWluUXVvdGVBc3NldEFtb3VudAUZZXhjaGFuZ2VkUXVvdGVBc3NldEFtb3VudAcJAAIBCQCsAgIJAKwCAgkArAICAg1MaW1pdCBlcnJvcjogCQCkAwEFGWV4Y2hhbmdlZFF1b3RlQXNzZXRBbW91bnQCAyA8IAkApAMBBRRfbWluUXVvdGVBc3NldEFtb3VudAkAoQoPBQ9uZXdQb3NpdGlvblNpemUFEW5ld1Bvc2l0aW9uTWFyZ2luBRduZXdQb3NpdGlvbk9wZW5Ob3Rpb25hbAUUbmV3UG9zaXRpb25Mc3RVcGRDUEYFD3Bvc2l0aW9uQmFkRGVidAULcmVhbGl6ZWRQbmwJAGUCBRJyZW1haW5NYXJnaW5CZWZvcmUJAGQCBRFuZXdQb3NpdGlvbk1hcmdpbgUSdW5yZWFsaXplZFBubEFmdGVyBRZxdW90ZUFzc2V0UmVzZXJ2ZUFmdGVyBRViYXNlQXNzZXRSZXNlcnZlQWZ0ZXIFFnRvdGFsUG9zaXRpb25TaXplQWZ0ZXIFGW9wZW5JbnRlcmVzdE5vdGlvbmFsQWZ0ZXIJAGUCCQEVdG90YWxMb25nUG9zaXRpb25TaXplAAMJAGYCBQ9uZXdQb3NpdGlvblNpemUAAAkBA2FicwEFFWV4Y2hhbmdlZFBvc2l0aW9uU2l6ZQAACQBlAgkBFnRvdGFsU2hvcnRQb3NpdGlvblNpemUAAwkAZgIAAAUPbmV3UG9zaXRpb25TaXplCQEDYWJzAQUVZXhjaGFuZ2VkUG9zaXRpb25TaXplAAAJAGUCCQEQb3BlbkludGVyZXN0TG9uZwADCQBmAgUPbmV3UG9zaXRpb25TaXplAAAFEW9wZW5Ob3Rpb25hbERlbHRhAAAJAGUCCQERb3BlbkludGVyZXN0U2hvcnQAAwkAZgIAAAUPbmV3UG9zaXRpb25TaXplBRFvcGVuTm90aW9uYWxEZWx0YQAAAwkAZgIFBV9zaXplCQEDYWJzAQUPb2xkUG9zaXRpb25TaXplCQACAQIgSW52YWxpZCBjbG9zZVBvc2l0aW9uIHBhcmFtZXRlcnMEDSR0MDcxMzEwNzE3MjkJARVpbnRlcm5hbENsb3NlUG9zaXRpb24CBQdfdHJhZGVyBgQZZXhjaGFuZ2VkUXVvdGVBc3NldEFtb3VudAgFDSR0MDcxMzEwNzE3MjkCXzEED3Bvc2l0aW9uQmFkRGVidAgFDSR0MDcxMzEwNzE3MjkCXzIEC3JlYWxpemVkUG5sCAUNJHQwNzEzMTA3MTcyOQJfMwQNbWFyZ2luVG9WYXVsdAgFDSR0MDcxMzEwNzE3MjkCXzQEFnF1b3RlQXNzZXRSZXNlcnZlQWZ0ZXIIBQ0kdDA3MTMxMDcxNzI5Al81BBViYXNlQXNzZXRSZXNlcnZlQWZ0ZXIIBQ0kdDA3MTMxMDcxNzI5Al82BBZ0b3RhbFBvc2l0aW9uU2l6ZUFmdGVyCAUNJHQwNzEzMTA3MTcyOQJfNwQZb3BlbkludGVyZXN0Tm90aW9uYWxBZnRlcggFDSR0MDcxMzEwNzE3MjkCXzgEAngyCAUNJHQwNzEzMTA3MTcyOQJfOQQOdG90YWxMb25nQWZ0ZXIIBQ0kdDA3MTMxMDcxNzI5A18xMAQPdG90YWxTaG9ydEFmdGVyCAUNJHQwNzEzMTA3MTcyOQNfMTEEGnRvdGFsTG9uZ09wZW5JbnRlcmVzdEFmdGVyCAUNJHQwNzEzMTA3MTcyOQNfMTIEG3RvdGFsU2hvcnRPcGVuSW50ZXJlc3RBZnRlcggFDSR0MDcxMzEwNzE3MjkDXzEzAwMJAQIhPQIFFF9taW5RdW90ZUFzc2V0QW1vdW50AAAJAGYCBRRfbWluUXVvdGVBc3NldEFtb3VudAUZZXhjaGFuZ2VkUXVvdGVBc3NldEFtb3VudAcJAAIBCQCsAgIJAKwCAgkArAICAg1MaW1pdCBlcnJvcjogCQCkAwEFGWV4Y2hhbmdlZFF1b3RlQXNzZXRBbW91bnQCAyA8IAkApAMBBRRfbWluUXVvdGVBc3NldEFtb3VudAkAoQoPAAAAAAAAAAAFD3Bvc2l0aW9uQmFkRGVidAULcmVhbGl6ZWRQbmwFDW1hcmdpblRvVmF1bHQFFnF1b3RlQXNzZXRSZXNlcnZlQWZ0ZXIFFWJhc2VBc3NldFJlc2VydmVBZnRlcgUWdG90YWxQb3NpdGlvblNpemVBZnRlcgUZb3BlbkludGVyZXN0Tm90aW9uYWxBZnRlcgUOdG90YWxMb25nQWZ0ZXIFD3RvdGFsU2hvcnRBZnRlcgUadG90YWxMb25nT3BlbkludGVyZXN0QWZ0ZXIFG3RvdGFsU2hvcnRPcGVuSW50ZXJlc3RBZnRlcgQPbmV3UG9zaXRpb25TaXplCAUNJHQwNjcyMzk3MjM2OQJfMQQRbmV3UG9zaXRpb25NYXJnaW4IBQ0kdDA2NzIzOTcyMzY5Al8yBBduZXdQb3NpdGlvbk9wZW5Ob3Rpb25hbAgFDSR0MDY3MjM5NzIzNjkCXzMEFG5ld1Bvc2l0aW9uTHN0VXBkQ1BGCAUNJHQwNjcyMzk3MjM2OQJfNAQPcG9zaXRpb25CYWREZWJ0CAUNJHQwNjcyMzk3MjM2OQJfNQQLcmVhbGl6ZWRQbmwIBQ0kdDA2NzIzOTcyMzY5Al82BA1tYXJnaW5Ub1ZhdWx0CAUNJHQwNjcyMzk3MjM2OQJfNwQWcXVvdGVBc3NldFJlc2VydmVBZnRlcggFDSR0MDY3MjM5NzIzNjkCXzgEFWJhc2VBc3NldFJlc2VydmVBZnRlcggFDSR0MDY3MjM5NzIzNjkCXzkEFnRvdGFsUG9zaXRpb25TaXplQWZ0ZXIIBQ0kdDA2NzIzOTcyMzY5A18xMAQZb3BlbkludGVyZXN0Tm90aW9uYWxBZnRlcggFDSR0MDY3MjM5NzIzNjkDXzExBA50b3RhbExvbmdBZnRlcggFDSR0MDY3MjM5NzIzNjkDXzEyBA90b3RhbFNob3J0QWZ0ZXIIBQ0kdDA2NzIzOTcyMzY5A18xMwQadG90YWxMb25nT3BlbkludGVyZXN0QWZ0ZXIIBQ0kdDA2NzIzOTcyMzY5A18xNAQbdG90YWxTaG9ydE9wZW5JbnRlcmVzdEFmdGVyCAUNJHQwNjcyMzk3MjM2OQNfMTUDCQBmAgUPcG9zaXRpb25CYWREZWJ0AAAJAAIBAiZVbmFibGUgdG8gY2xvc2UgcG9zaXRpb24gd2l0aCBiYWQgZGVidAQOd2l0aGRyYXdBbW91bnQJAQNhYnMBBQ1tYXJnaW5Ub1ZhdWx0BAphbW1CYWxhbmNlCQBlAgkBCGNiYWxhbmNlAAUOd2l0aGRyYXdBbW91bnQEDSR0MDcyNTc4NzI3ODUDCQBmAgAABQphbW1CYWxhbmNlCQCUCgIAAAkBA2FicwEFCmFtbUJhbGFuY2UJAJQKAgUKYW1tQmFsYW5jZQAABA1hbW1OZXdCYWxhbmNlCAUNJHQwNzI1Nzg3Mjc4NQJfMQQDeDExCAUNJHQwNzI1Nzg3Mjc4NQJfMgQNJHQwNzI3OTI3Mjg0NgkBE2dldEJvcnJvd2VkQnlUcmFkZXIBBQdfdHJhZGVyBAhib3Jyb3dlZAgFDSR0MDcyNzkyNzI4NDYCXzEEB2Fzc2V0SWQIBQ0kdDA3Mjc5MjcyODQ2Al8yBA0kdDA3Mjg2MTczNzIwAwkAZgIFCGJvcnJvd2VkAAADCQBnAgUOd2l0aGRyYXdBbW91bnQFCGJvcnJvd2VkBAdkb1JlcGF5CQD8BwQJARFjb2xsYXRlcmFsQWRkcmVzcwACBXJlcGF5CQDMCAIFB190cmFkZXIJAMwIAgUIYm9ycm93ZWQJAMwIAgUHYXNzZXRJZAUDbmlsBQNuaWwDCQAAAgUHZG9SZXBheQUHZG9SZXBheQkAlAoCCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFDl90cmFkZXJBZGRyZXNzBQhib3Jyb3dlZAkA2QQBBQdhc3NldElkBQNuaWwJAGUCBQ53aXRoZHJhd0Ftb3VudAUIYm9ycm93ZWQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4ED3JlYWxpemVBbmRDbG9zZQkA/AcECQERY29sbGF0ZXJhbEFkZHJlc3MAAhhyZWFsaXplUGFydGlhbGx5QW5kQ2xvc2UJAMwIAgUHX3RyYWRlcgkAzAgCBQ53aXRoZHJhd0Ftb3VudAkAzAgCBQdhc3NldElkBQNuaWwFA25pbAMJAAACBQ9yZWFsaXplQW5kQ2xvc2UFD3JlYWxpemVBbmRDbG9zZQkAlAoCCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFDl90cmFkZXJBZGRyZXNzBQ53aXRoZHJhd0Ftb3VudAkA2QQBBQdhc3NldElkBQNuaWwAAAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAlAoCBQNuaWwFDndpdGhkcmF3QW1vdW50AwkAAAIFDSR0MDcyODYxNzM3MjAFDSR0MDcyODYxNzM3MjAEE3F1b3RlV2l0aGRyYXdBbW91bnQIBQ0kdDA3Mjg2MTczNzIwAl8yBBRzZW5kQ29sbGF0ZXJhbEFjdGlvbggFDSR0MDcyODYxNzM3MjACXzEEB3Vuc3Rha2UDCQBmAgUTcXVvdGVXaXRoZHJhd0Ftb3VudAAABAd1bnN0YWtlCQD8BwQJAQx2YXVsdEFkZHJlc3MAAg53aXRoZHJhd0xvY2tlZAkAzAgCBRNxdW90ZVdpdGhkcmF3QW1vdW50BQNuaWwFA25pbAMJAAACBQd1bnN0YWtlBQd1bnN0YWtlBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4FA25pbAMJAAACBQd1bnN0YWtlBQd1bnN0YWtlBA5ub3RpZnlOb3Rpb25hbAkA/AcECQEMbWluZXJBZGRyZXNzAAIObm90aWZ5Tm90aW9uYWwJAMwIAgUHX3RyYWRlcgkAzAgCAAAFA25pbAUDbmlsAwkAAAIFDm5vdGlmeU5vdGlvbmFsBQ5ub3RpZnlOb3Rpb25hbAkAzggCCQDOCAIJAM4IAgkAzggCAwkAAAIFD25ld1Bvc2l0aW9uU2l6ZQAACQEOZGVsZXRlUG9zaXRpb24BBQdfdHJhZGVyCQEOdXBkYXRlUG9zaXRpb24FBQdfdHJhZGVyBQ9uZXdQb3NpdGlvblNpemUFEW5ld1Bvc2l0aW9uTWFyZ2luBRduZXdQb3NpdGlvbk9wZW5Ob3Rpb25hbAUUbmV3UG9zaXRpb25Mc3RVcGRDUEYJAQl1cGRhdGVBbW0IBRZxdW90ZUFzc2V0UmVzZXJ2ZUFmdGVyBRViYXNlQXNzZXRSZXNlcnZlQWZ0ZXIFFnRvdGFsUG9zaXRpb25TaXplQWZ0ZXIFGW9wZW5JbnRlcmVzdE5vdGlvbmFsQWZ0ZXIFDnRvdGFsTG9uZ0FmdGVyBQ90b3RhbFNob3J0QWZ0ZXIFGnRvdGFsTG9uZ09wZW5JbnRlcmVzdEFmdGVyBRt0b3RhbFNob3J0T3BlbkludGVyZXN0QWZ0ZXIDCQBmAgUTcXVvdGVXaXRoZHJhd0Ftb3VudAAACQEId2l0aGRyYXcCBQ5fdHJhZGVyQWRkcmVzcwUTcXVvdGVXaXRoZHJhd0Ftb3VudAUDbmlsCQENdXBkYXRlQmFsYW5jZQEFDWFtbU5ld0JhbGFuY2UFFHNlbmRDb2xsYXRlcmFsQWN0aW9uCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCWxpcXVpZGF0ZQEHX3RyYWRlcgQEc3luYwkA/AcEBQR0aGlzAhlzeW5jVGVybWluYWxQcmljZVRvT3JhY2xlBQNuaWwFA25pbAMJAAACBQRzeW5jBQRzeW5jBA9zcG90TWFyZ2luUmF0aW8JARZnZXRNYXJnaW5SYXRpb0J5T3B0aW9uAgUHX3RyYWRlcgUPUE5MX09QVElPTl9TUE9UBAttYXJnaW5SYXRpbwMJARZpc092ZXJGbHVjdHVhdGlvbkxpbWl0AAQRb3JhY2xlTWFyZ2luUmF0aW8JARZnZXRNYXJnaW5SYXRpb0J5T3B0aW9uAgUHX3RyYWRlcgURUE5MX09QVElPTl9PUkFDTEUJAQR2bWF4AgUPc3BvdE1hcmdpblJhdGlvBRFvcmFjbGVNYXJnaW5SYXRpbwUPc3BvdE1hcmdpblJhdGlvAwMDAwMJAQEhAQkBFnJlcXVpcmVNb3JlTWFyZ2luUmF0aW8DBQttYXJnaW5SYXRpbwkBFm1haW50ZW5hbmNlTWFyZ2luUmF0aW8ABwYJAQEhAQkBE3JlcXVpcmVPcGVuUG9zaXRpb24BBQdfdHJhZGVyBgkBASEBCQELaW5pdGlhbGl6ZWQABgkBBnBhdXNlZAAGCQEOaXNNYXJrZXRDbG9zZWQACQACAQITVW5hYmxlIHRvIGxpcXVpZGF0ZQMDAwkAZgIFD3Nwb3RNYXJnaW5SYXRpbwkBE2xpcXVpZGF0aW9uRmVlUmF0aW8ACQBmAgkBF3BhcnRpYWxMaXF1aWRhdGlvblJhdGlvAAAABwkAZgIFDERFQ0lNQUxfVU5JVAkBF3BhcnRpYWxMaXF1aWRhdGlvblJhdGlvAAcEDSR0MDc2MDQxNzYxOTEJAQtnZXRQb3NpdGlvbgEFB190cmFkZXIED29sZFBvc2l0aW9uU2l6ZQgFDSR0MDc2MDQxNzYxOTECXzEEEW9sZFBvc2l0aW9uTWFyZ2luCAUNJHQwNzYwNDE3NjE5MQJfMgQXb2xkUG9zaXRpb25PcGVuTm90aW9uYWwIBQ0kdDA3NjA0MTc2MTkxAl8zBBRvbGRQb3NpdGlvbkxzdFVwZENQRggFDSR0MDc2MDQxNzYxOTECXzQECl9kaXJlY3Rpb24DCQBmAgUPb2xkUG9zaXRpb25TaXplAAAFCURJUl9TSE9SVAUIRElSX0xPTkcEBWlzQWRkCQAAAgUKX2RpcmVjdGlvbgUIRElSX0xPTkcEGWV4Y2hhbmdlZFF1b3RlQXNzZXRBbW91bnQJARtnZXRQYXJ0aWFsTGlxdWlkYXRpb25BbW91bnQCBQdfdHJhZGVyBQ9vbGRQb3NpdGlvblNpemUEDSR0MDc2NDE2NzY1MjAJASNnZXRQb3NpdGlvbk5vdGlvbmFsQW5kVW5yZWFsaXplZFBubAIFB190cmFkZXIFD1BOTF9PUFRJT05fU1BPVAQTb2xkUG9zaXRpb25Ob3Rpb25hbAgFDSR0MDc2NDE2NzY1MjACXzEEDXVucmVhbGl6ZWRQbmwIBQ0kdDA3NjQxNjc2NTIwAl8yBA0kdDA3NjUyODc2NzE1CQEJc3dhcElucHV0AgUFaXNBZGQFGWV4Y2hhbmdlZFF1b3RlQXNzZXRBbW91bnQEFWV4Y2hhbmdlZFBvc2l0aW9uU2l6ZQgFDSR0MDc2NTI4NzY3MTUCXzEEFnF1b3RlQXNzZXRSZXNlcnZlQWZ0ZXIIBQ0kdDA3NjUyODc2NzE1Al8yBBViYXNlQXNzZXRSZXNlcnZlQWZ0ZXIIBQ0kdDA3NjUyODc2NzE1Al8zBBZ0b3RhbFBvc2l0aW9uU2l6ZUFmdGVyCAUNJHQwNzY1Mjg3NjcxNQJfNAQQbGlxdWlkYXRpb25SYXRpbwkBBGRpdmQCCQEDYWJzAQUVZXhjaGFuZ2VkUG9zaXRpb25TaXplCQEDYWJzAQUPb2xkUG9zaXRpb25TaXplBAtyZWFsaXplZFBubAkBBG11bGQCBQ11bnJlYWxpemVkUG5sBRBsaXF1aWRhdGlvblJhdGlvBA0kdDA3NzAwNDc3MjM3CQEiY2FsY1JlbWFpbk1hcmdpbldpdGhGdW5kaW5nUGF5bWVudAQFD29sZFBvc2l0aW9uU2l6ZQURb2xkUG9zaXRpb25NYXJnaW4FFG9sZFBvc2l0aW9uTHN0VXBkQ1BGBQtyZWFsaXplZFBubAQMcmVtYWluTWFyZ2luCAUNJHQwNzcwMDQ3NzIzNwJfMQQHYmFkRGVidAgFDSR0MDc3MDA0NzcyMzcCXzIEDmZ1bmRpbmdQYXltZW50CAUNJHQwNzcwMDQ3NzIzNwJfMwQSdW5yZWFsaXplZFBubEFmdGVyCQBlAgUNdW5yZWFsaXplZFBubAULcmVhbGl6ZWRQbmwEEnJlbWFpbk9wZW5Ob3Rpb25hbAMJAGYCBQ9vbGRQb3NpdGlvblNpemUAAAkAZQIJAGUCBRNvbGRQb3NpdGlvbk5vdGlvbmFsBRlleGNoYW5nZWRRdW90ZUFzc2V0QW1vdW50BRJ1bnJlYWxpemVkUG5sQWZ0ZXIJAGUCCQBkAgUSdW5yZWFsaXplZFBubEFmdGVyBRNvbGRQb3NpdGlvbk5vdGlvbmFsBRlleGNoYW5nZWRRdW90ZUFzc2V0QW1vdW50BBJsaXF1aWRhdGlvblBlbmFsdHkJAQRtdWxkAgUZZXhjaGFuZ2VkUXVvdGVBc3NldEFtb3VudAkBE2xpcXVpZGF0aW9uRmVlUmF0aW8ABA9mZWVUb0xpcXVpZGF0b3IJAGkCBRJsaXF1aWRhdGlvblBlbmFsdHkAAgQKZmVlVG9WYXVsdAkAZQIFEmxpcXVpZGF0aW9uUGVuYWx0eQUPZmVlVG9MaXF1aWRhdG9yBBFuZXdQb3NpdGlvbk1hcmdpbgkAZQIFDHJlbWFpbk1hcmdpbgUSbGlxdWlkYXRpb25QZW5hbHR5BA9uZXdQb3NpdGlvblNpemUJAGQCBQ9vbGRQb3NpdGlvblNpemUFFWV4Y2hhbmdlZFBvc2l0aW9uU2l6ZQQXbmV3UG9zaXRpb25PcGVuTm90aW9uYWwJAQNhYnMBBRJyZW1haW5PcGVuTm90aW9uYWwEEW9wZW5Ob3Rpb25hbERlbHRhCQBlAgUXb2xkUG9zaXRpb25PcGVuTm90aW9uYWwFF25ld1Bvc2l0aW9uT3Blbk5vdGlvbmFsBBRuZXdQb3NpdGlvbkxzdFVwZENQRgkBH2xhdGVzdEN1bXVsYXRpdmVQcmVtaXVtRnJhY3Rpb24BBQ9uZXdQb3NpdGlvblNpemUEGW9wZW5JbnRlcmVzdE5vdGlvbmFsQWZ0ZXIJAGUCCQEUb3BlbkludGVyZXN0Tm90aW9uYWwABRFvcGVuTm90aW9uYWxEZWx0YQQKYW1tQmFsYW5jZQkAZQIJAQhjYmFsYW5jZQAFEmxpcXVpZGF0aW9uUGVuYWx0eQQNJHQwNzg0Nzg3ODYwNwMJAGYCAAAFCmFtbUJhbGFuY2UJAJQKAgAACQEDYWJzAQUKYW1tQmFsYW5jZQkAlAoCBQphbW1CYWxhbmNlAAAEDW5ld0FtbUJhbGFuY2UIBQ0kdDA3ODQ3ODc4NjA3Al8xBAN4MTEIBQ0kdDA3ODQ3ODc4NjA3Al8yBA0kdDA3ODYxNTc4NjY5CQETZ2V0Qm9ycm93ZWRCeVRyYWRlcgEFB190cmFkZXIECGJvcnJvd2VkCAUNJHQwNzg2MTU3ODY2OQJfMQQHYXNzZXRJZAgFDSR0MDc4NjE1Nzg2NjkCXzIEFWRvTGlxdWlkYXRlQ29sbGF0ZXJhbAMJAGYCBQhib3Jyb3dlZAAABBBjb2xsYXRlcmFsVG9TZWxsCQEEbXVsZAIFCGJvcnJvd2VkBRBsaXF1aWRhdGlvblJhdGlvBA9yZWFsaXplQW5kQ2xvc2UJAPwHBAkBEWNvbGxhdGVyYWxBZGRyZXNzAAIQcmVhbGl6ZVBhcnRpYWxseQkAzAgCBQdfdHJhZGVyCQDMCAIFB2Fzc2V0SWQJAMwIAgUQY29sbGF0ZXJhbFRvU2VsbAUDbmlsBQNuaWwDCQAAAgUPcmVhbGl6ZUFuZENsb3NlBQ9yZWFsaXplQW5kQ2xvc2UFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgUDbmlsAwkAAAIFFWRvTGlxdWlkYXRlQ29sbGF0ZXJhbAUVZG9MaXF1aWRhdGVDb2xsYXRlcmFsBAd1bnN0YWtlCQD8BwQJAQx2YXVsdEFkZHJlc3MAAg53aXRoZHJhd0xvY2tlZAkAzAgCBRJsaXF1aWRhdGlvblBlbmFsdHkFA25pbAUDbmlsAwkAAAIFB3Vuc3Rha2UFB3Vuc3Rha2UEEGRlcG9zaXRJbnN1cmFuY2UJAPwHBAkBDHZhdWx0QWRkcmVzcwACB2FkZEZyZWUFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkBCnF1b3RlQXNzZXQABQpmZWVUb1ZhdWx0BQNuaWwDCQAAAgUQZGVwb3NpdEluc3VyYW5jZQUQZGVwb3NpdEluc3VyYW5jZQQObm90aWZ5Tm90aW9uYWwJAPwHBAkBDG1pbmVyQWRkcmVzcwACDm5vdGlmeU5vdGlvbmFsCQDMCAIFB190cmFkZXIJAMwIAgUXbmV3UG9zaXRpb25PcGVuTm90aW9uYWwFA25pbAUDbmlsAwkAAAIFDm5vdGlmeU5vdGlvbmFsBQ5ub3RpZnlOb3Rpb25hbAkAzggCCQDOCAIJAM4IAgkBDnVwZGF0ZVBvc2l0aW9uBQUHX3RyYWRlcgUPbmV3UG9zaXRpb25TaXplBRFuZXdQb3NpdGlvbk1hcmdpbgUXbmV3UG9zaXRpb25PcGVuTm90aW9uYWwFFG5ld1Bvc2l0aW9uTHN0VXBkQ1BGCQEJdXBkYXRlQW1tCAUWcXVvdGVBc3NldFJlc2VydmVBZnRlcgUVYmFzZUFzc2V0UmVzZXJ2ZUFmdGVyBRZ0b3RhbFBvc2l0aW9uU2l6ZUFmdGVyBRlvcGVuSW50ZXJlc3ROb3Rpb25hbEFmdGVyCQBlAgkBFXRvdGFsTG9uZ1Bvc2l0aW9uU2l6ZQADCQBmAgUPbmV3UG9zaXRpb25TaXplAAAJAQNhYnMBBRVleGNoYW5nZWRQb3NpdGlvblNpemUAAAkAZQIJARZ0b3RhbFNob3J0UG9zaXRpb25TaXplAAMJAGYCAAAFD25ld1Bvc2l0aW9uU2l6ZQkBA2FicwEFFWV4Y2hhbmdlZFBvc2l0aW9uU2l6ZQAACQBlAgkBEG9wZW5JbnRlcmVzdExvbmcAAwkAZgIFD25ld1Bvc2l0aW9uU2l6ZQAABRFvcGVuTm90aW9uYWxEZWx0YQAACQBlAgkBEW9wZW5JbnRlcmVzdFNob3J0AAMJAGYCAAAFD25ld1Bvc2l0aW9uU2l6ZQURb3Blbk5vdGlvbmFsRGVsdGEAAAkBCHdpdGhkcmF3AggFAWkGY2FsbGVyBQ9mZWVUb0xpcXVpZGF0b3IJAQ11cGRhdGVCYWxhbmNlAQUNbmV3QW1tQmFsYW5jZQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgQNJHQwODAzNDg4MDg0MwkBFWludGVybmFsQ2xvc2VQb3NpdGlvbgIFB190cmFkZXIHBAJ4MQgFDSR0MDgwMzQ4ODA4NDMCXzEEB2JhZERlYnQIBQ0kdDA4MDM0ODgwODQzAl8yBAJ4MggFDSR0MDgwMzQ4ODA4NDMCXzMEAngzCAUNJHQwODAzNDg4MDg0MwJfNAQWcXVvdGVBc3NldFJlc2VydmVBZnRlcggFDSR0MDgwMzQ4ODA4NDMCXzUEFWJhc2VBc3NldFJlc2VydmVBZnRlcggFDSR0MDgwMzQ4ODA4NDMCXzYEFnRvdGFsUG9zaXRpb25TaXplQWZ0ZXIIBQ0kdDA4MDM0ODgwODQzAl83BBlvcGVuSW50ZXJlc3ROb3Rpb25hbEFmdGVyCAUNJHQwODAzNDg4MDg0MwJfOAQZZXhjaGFuZ2VkUXVvdGVBc3NldEFtb3VudAgFDSR0MDgwMzQ4ODA4NDMCXzkEDnRvdGFsTG9uZ0FmdGVyCAUNJHQwODAzNDg4MDg0MwNfMTAED3RvdGFsU2hvcnRBZnRlcggFDSR0MDgwMzQ4ODA4NDMDXzExBBp0b3RhbExvbmdPcGVuSW50ZXJlc3RBZnRlcggFDSR0MDgwMzQ4ODA4NDMDXzEyBBt0b3RhbFNob3J0T3BlbkludGVyZXN0QWZ0ZXIIBQ0kdDA4MDM0ODgwODQzA18xMwQSbGlxdWlkYXRpb25QZW5hbHR5CQEEbXVsZAIFGWV4Y2hhbmdlZFF1b3RlQXNzZXRBbW91bnQJARNsaXF1aWRhdGlvbkZlZVJhdGlvAAQPZmVlVG9MaXF1aWRhdG9yCQBpAgUSbGlxdWlkYXRpb25QZW5hbHR5AAIECmZlZVRvVmF1bHQJAGUCBRJsaXF1aWRhdGlvblBlbmFsdHkFD2ZlZVRvTGlxdWlkYXRvcgQKYW1tQmFsYW5jZQkAZQIJAQhjYmFsYW5jZQAFEmxpcXVpZGF0aW9uUGVuYWx0eQQNJHQwODEyNTE4MTM4MAMJAGYCAAAFCmFtbUJhbGFuY2UJAJQKAgAACQEDYWJzAQUKYW1tQmFsYW5jZQkAlAoCBQphbW1CYWxhbmNlAAAEDW5ld0FtbUJhbGFuY2UIBQ0kdDA4MTI1MTgxMzgwAl8xBAN4MTEIBQ0kdDA4MTI1MTgxMzgwAl8yBA0kdDA4MTM4ODgxNDQyCQETZ2V0Qm9ycm93ZWRCeVRyYWRlcgEFB190cmFkZXIECGJvcnJvd2VkCAUNJHQwODEzODg4MTQ0MgJfMQQHYXNzZXRJZAgFDSR0MDgxMzg4ODE0NDICXzIEFWRvTGlxdWlkYXRlQ29sbGF0ZXJhbAMJAGYCBQhib3Jyb3dlZAAABA9yZWFsaXplQW5kQ2xvc2UJAPwHBAkBEWNvbGxhdGVyYWxBZGRyZXNzAAIYcmVhbGl6ZVBhcnRpYWxseUFuZENsb3NlCQDMCAIFB190cmFkZXIJAMwIAgAACQDMCAIFB2Fzc2V0SWQFA25pbAUDbmlsAwkAAAIFD3JlYWxpemVBbmRDbG9zZQUPcmVhbGl6ZUFuZENsb3NlBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4FA25pbAMJAAACBRVkb0xpcXVpZGF0ZUNvbGxhdGVyYWwFFWRvTGlxdWlkYXRlQ29sbGF0ZXJhbAQBeAMJAGYCBQdiYWREZWJ0AAAEC2xvY2tCYWREZWJ0CQD8BwQJAQx2YXVsdEFkZHJlc3MAAhVleGNoYW5nZUZyZWVBbmRMb2NrZWQJAMwIAgUHYmFkRGVidAUDbmlsBQNuaWwDCQAAAgULbG9ja0JhZERlYnQFC2xvY2tCYWREZWJ0BQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4FA25pbAMJAAACBQF4BQF4BAd1bnN0YWtlCQD8BwQJAQx2YXVsdEFkZHJlc3MAAg53aXRoZHJhd0xvY2tlZAkAzAgCBRJsaXF1aWRhdGlvblBlbmFsdHkFA25pbAUDbmlsAwkAAAIFB3Vuc3Rha2UFB3Vuc3Rha2UEEGRlcG9zaXRJbnN1cmFuY2UJAPwHBAkBDHZhdWx0QWRkcmVzcwACB2FkZEZyZWUFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkBCnF1b3RlQXNzZXQABQpmZWVUb1ZhdWx0BQNuaWwDCQAAAgUQZGVwb3NpdEluc3VyYW5jZQUQZGVwb3NpdEluc3VyYW5jZQQObm90aWZ5Tm90aW9uYWwJAPwHBAkBDG1pbmVyQWRkcmVzcwACDm5vdGlmeU5vdGlvbmFsCQDMCAIFB190cmFkZXIJAMwIAgAABQNuaWwFA25pbAMJAAACBQ5ub3RpZnlOb3Rpb25hbAUObm90aWZ5Tm90aW9uYWwJAM4IAgkAzggCCQDOCAIJAQ5kZWxldGVQb3NpdGlvbgEFB190cmFkZXIJAQl1cGRhdGVBbW0IBRZxdW90ZUFzc2V0UmVzZXJ2ZUFmdGVyBRViYXNlQXNzZXRSZXNlcnZlQWZ0ZXIFFnRvdGFsUG9zaXRpb25TaXplQWZ0ZXIFGW9wZW5JbnRlcmVzdE5vdGlvbmFsQWZ0ZXIFDnRvdGFsTG9uZ0FmdGVyBQ90b3RhbFNob3J0QWZ0ZXIFGnRvdGFsTG9uZ09wZW5JbnRlcmVzdEFmdGVyBRt0b3RhbFNob3J0T3BlbkludGVyZXN0QWZ0ZXIJAQh3aXRoZHJhdwIIBQFpBmNhbGxlcgUPZmVlVG9MaXF1aWRhdG9yCQENdXBkYXRlQmFsYW5jZQEFDW5ld0FtbUJhbGFuY2UJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEKcGF5RnVuZGluZwAEBHN5bmMJAPwHBAUEdGhpcwIZc3luY1Rlcm1pbmFsUHJpY2VUb09yYWNsZQUDbmlsBQNuaWwDCQAAAgUEc3luYwUEc3luYwQVZnVuZGluZ0Jsb2NrVGltZXN0YW1wCQEZbmV4dEZ1bmRpbmdCbG9ja1RpbWVzdGFtcAADAwMJAGYCBRVmdW5kaW5nQmxvY2tUaW1lc3RhbXAIBQlsYXN0QmxvY2sJdGltZXN0YW1wBgkBASEBCQELaW5pdGlhbGl6ZWQABgkBBnBhdXNlZAAJAAIBCQCsAgIJAKwCAgkArAICAiFJbnZhbGlkIGZ1bmRpbmcgYmxvY2sgdGltZXN0YW1wOiAJAKQDAQgFCWxhc3RCbG9jawl0aW1lc3RhbXACAyA8IAkApAMBBRVmdW5kaW5nQmxvY2tUaW1lc3RhbXAED3VuZGVybHlpbmdQcmljZQkBDmdldE9yYWNsZVByaWNlAAQNJHQwODMzMTQ4MzM3NgkBCmdldEZ1bmRpbmcABBRzaG9ydFByZW1pdW1GcmFjdGlvbggFDSR0MDgzMzE0ODMzNzYCXzEEE2xvbmdQcmVtaXVtRnJhY3Rpb24IBQ0kdDA4MzMxNDgzMzc2Al8yCQENdXBkYXRlRnVuZGluZwUJAGQCBRVmdW5kaW5nQmxvY2tUaW1lc3RhbXAJARRmdW5kaW5nUGVyaW9kU2Vjb25kcwAJAGQCCQEjbGF0ZXN0TG9uZ0N1bXVsYXRpdmVQcmVtaXVtRnJhY3Rpb24ABRNsb25nUHJlbWl1bUZyYWN0aW9uCQBkAgkBJGxhdGVzdFNob3J0Q3VtdWxhdGl2ZVByZW1pdW1GcmFjdGlvbgAFFHNob3J0UHJlbWl1bUZyYWN0aW9uCQEEZGl2ZAIFE2xvbmdQcmVtaXVtRnJhY3Rpb24FD3VuZGVybHlpbmdQcmljZQkBBGRpdmQCBRRzaG9ydFByZW1pdW1GcmFjdGlvbgUPdW5kZXJseWluZ1ByaWNlCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBGXN5bmNUZXJtaW5hbFByaWNlVG9PcmFjbGUABAdfcXRBc3RSCQEGcXRBc3RSAAQHX2JzQXN0UgkBBmJzQXN0UgAEDSR0MDgzODA4ODM5NDMJARRnZXRTeW5jVGVybWluYWxQcmljZQMJAQ5nZXRPcmFjbGVQcmljZQAFB19xdEFzdFIFB19ic0FzdFIEE25ld1F1b3RlQXNzZXRXZWlnaHQIBQ0kdDA4MzgwODgzOTQzAl8xBBJuZXdCYXNlQXNzZXRXZWlnaHQIBQ0kdDA4MzgwODgzOTQzAl8yBA1tYXJnaW5Ub1ZhdWx0CAUNJHQwODM4MDg4Mzk0MwJfMwQNZG9FeGNoYW5nZVBuTAMJAQIhPQIFDW1hcmdpblRvVmF1bHQAAAQNZG9FeGNoYW5nZVBuTAkA/AcECQEMdmF1bHRBZGRyZXNzAAIVZXhjaGFuZ2VGcmVlQW5kTG9ja2VkCQDMCAIFDW1hcmdpblRvVmF1bHQFA25pbAUDbmlsAwkAAAIFDWRvRXhjaGFuZ2VQbkwFDWRvRXhjaGFuZ2VQbkwFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgUDbmlsAwkAAAIFDWRvRXhjaGFuZ2VQbkwFDWRvRXhjaGFuZ2VQbkwJAM4IAgkBEHVwZGF0ZUFtbVdlaWdodHMCBRNuZXdRdW90ZUFzc2V0V2VpZ2h0BRJuZXdCYXNlQXNzZXRXZWlnaHQJAQphcHBlbmRUd2FwAQkBBGRpdmQCCQEEbXVsZAIFB19xdEFzdFIFE25ld1F1b3RlQXNzZXRXZWlnaHQJAQRtdWxkAgUHX2JzQXN0UgUSbmV3QmFzZUFzc2V0V2VpZ2h0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBJ3ZpZXdfY2FsY1JlbWFpbk1hcmdpbldpdGhGdW5kaW5nUGF5bWVudAEHX3RyYWRlcgQEc3luYwkA/AcEBQR0aGlzAhlzeW5jVGVybWluYWxQcmljZVRvT3JhY2xlBQNuaWwFA25pbAMJAAACBQRzeW5jBQRzeW5jBA0kdDA4NDUxMjg0NjEzCQELZ2V0UG9zaXRpb24BBQdfdHJhZGVyBAxwb3NpdGlvblNpemUIBQ0kdDA4NDUxMjg0NjEzAl8xBA5wb3NpdGlvbk1hcmdpbggFDSR0MDg0NTEyODQ2MTMCXzIEA3BvbggFDSR0MDg0NTEyODQ2MTMCXzMEEXBvc2l0aW9uTHN0VXBkQ1BGCAUNJHQwODQ1MTI4NDYxMwJfNAQNJHQwODQ2MTY4NDcxNwkBI2dldFBvc2l0aW9uTm90aW9uYWxBbmRVbnJlYWxpemVkUG5sAgUHX3RyYWRlcgUPUE5MX09QVElPTl9TUE9UBBBwb3NpdGlvbk5vdGlvbmFsCAUNJHQwODQ2MTY4NDcxNwJfMQQNdW5yZWFsaXplZFBubAgFDSR0MDg0NjE2ODQ3MTcCXzIEDSR0MDg0NzIwODQ4OTIJASJjYWxjUmVtYWluTWFyZ2luV2l0aEZ1bmRpbmdQYXltZW50BAUMcG9zaXRpb25TaXplBQ5wb3NpdGlvbk1hcmdpbgURcG9zaXRpb25Mc3RVcGRDUEYFDXVucmVhbGl6ZWRQbmwEDHJlbWFpbk1hcmdpbggFDSR0MDg0NzIwODQ4OTICXzEEB2JhZERlYnQIBQ0kdDA4NDcyMDg0ODkyAl8yBA5mdW5kaW5nUGF5bWVudAgFDSR0MDg0NzIwODQ4OTICXzMJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkBAXMBBQxyZW1haW5NYXJnaW4JAQFzAQUOZnVuZGluZ1BheW1lbnQJAQFzAQkBDmdldE1hcmdpblJhdGlvAQUHX3RyYWRlcgkBAXMBBQ11bnJlYWxpemVkUG5sCQEBcwEFB2JhZERlYnQJAQFzAQUQcG9zaXRpb25Ob3Rpb25hbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARV2aWV3X2dldFBlZ0FkanVzdENvc3QBBl9wcmljZQQHX3F0QXN0UgkBBnF0QXN0UgAEB19ic0FzdFIJAQZic0FzdFIABAZyZXN1bHQJARRnZXRTeW5jVGVybWluYWxQcmljZQMFBl9wcmljZQUHX3F0QXN0UgUHX2JzQXN0UgkAAgEJAKQDAQgFBnJlc3VsdAJfMwFpARh2aWV3X2dldFRlcm1pbmFsQW1tUHJpY2UABA0kdDA4NTMwODg1Mzg5CQETZ2V0VGVybWluYWxBbW1TdGF0ZQAEGXRlcm1pbmFsUXVvdGVBc3NldFJlc2VydmUIBQ0kdDA4NTMwODg1Mzg5Al8xBBh0ZXJtaW5hbEJhc2VBc3NldFJlc2VydmUIBQ0kdDA4NTMwODg1Mzg5Al8yBAVwcmljZQkBBGRpdmQCCQEEbXVsZAIFGXRlcm1pbmFsUXVvdGVBc3NldFJlc2VydmUJAQZxdEFzdFcACQEEbXVsZAIFGHRlcm1pbmFsQmFzZUFzc2V0UmVzZXJ2ZQkBBmJzQXN0VwAJAAIBCQCkAwEFBXByaWNlAWkBD3ZpZXdfZ2V0RnVuZGluZwAED3VuZGVybHlpbmdQcmljZQkBDmdldE9yYWNsZVByaWNlAAQNJHQwODU2MDQ4NTY2NgkBCmdldEZ1bmRpbmcABBRzaG9ydFByZW1pdW1GcmFjdGlvbggFDSR0MDg1NjA0ODU2NjYCXzEEE2xvbmdQcmVtaXVtRnJhY3Rpb24IBQ0kdDA4NTYwNDg1NjY2Al8yBAtsb25nRnVuZGluZwkBBGRpdmQCBRNsb25nUHJlbWl1bUZyYWN0aW9uBQ91bmRlcmx5aW5nUHJpY2UEDHNob3J0RnVuZGluZwkBBGRpdmQCBRRzaG9ydFByZW1pdW1GcmFjdGlvbgUPdW5kZXJseWluZ1ByaWNlCQACAQkArAICCQCsAgIJAKwCAgkBAXMBBQtsb25nRnVuZGluZwkBAXMBBQxzaG9ydEZ1bmRpbmcJAQFzAQkBEGdldFR3YXBTcG90UHJpY2UACQEBcwEJAQ5nZXRPcmFjbGVQcmljZQABaQEYdmlld19nZXRCb3Jyb3dlZEJ5VHJhZGVyAQdfdHJhZGVyBA0kdDA4NTk1Mjg2MDA2CQETZ2V0Qm9ycm93ZWRCeVRyYWRlcgEFB190cmFkZXIECGJvcnJvd2VkCAUNJHQwODU5NTI4NjAwNgJfMQQHYXNzZXRJZAgFDSR0MDg1OTUyODYwMDYCXzIJAAIBCQCsAgIJAQFzAQUIYm9ycm93ZWQFB2Fzc2V0SWQBaQEQY29tcHV0ZVNwb3RQcmljZQAEBnJlc3VsdAkBDGdldFNwb3RQcmljZQAJAJQKAgUDbmlsBQZyZXN1bHQBaQEfY29tcHV0ZUZlZUZvclRyYWRlcldpdGhBcnRpZmFjdAIHX3RyYWRlcgtfYXJ0aWZhY3RJZAQGcmVzdWx0CQEYZ2V0Rm9yVHJhZGVyV2l0aEFydGlmYWN0AgUHX3RyYWRlcgULX2FydGlmYWN0SWQJAJQKAgUDbmlsBQZyZXN1bHQBAnR4AQZ2ZXJpZnkACQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAACQEOYWRtaW5QdWJsaWNLZXkADgyvMw==", "height": 2390361, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 445QpJqbK2UXvSBxJUQwL1hYHgVqBCYXhGs8aU9Mo72s Next: 9Qbou3trG9mGcuEut5xcMGnwXwM1Yr4pmpiDYPjxvhHQ Diff:
OldNewDifferences
381381 if (if (cl)
382382 then (0 > cm)
383383 else false)
384- then throw("Invalid margin")
384+ then throw(((("Invalid margin: " + toString(cj)) + " < ") + toString(ck)))
385385 else if (if (!(cl))
386386 then (cm >= 0)
387387 else false)
388- then throw("Invalid margin")
388+ then throw(((("Invalid margin: " + toString(cj)) + " > ") + toString(ck)))
389389 else true
390390 }
391391
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "k_ora_key"
55
66 let b = "k_ora_block_key"
77
88 let c = "k_ora_open_key"
99
1010 let d = "k_ora"
1111
1212 let e = "k_balance"
1313
1414 let f = "k_sequence"
1515
1616 let g = "k_positionSize"
1717
1818 let h = "k_positionMargin"
1919
2020 let i = "k_positionOpenNotional"
2121
2222 let j = "k_positionFraction"
2323
2424 let k = "k_positionSequence"
2525
2626 let l = "k_positionAsset"
2727
2828 let m = "k_initialized"
2929
3030 let n = "k_paused"
3131
3232 let o = "k_closeOnly"
3333
3434 let p = "k_fee"
3535
3636 let q = "k_fundingPeriod"
3737
3838 let r = "k_initMarginRatio"
3939
4040 let s = "k_mmr"
4141
4242 let t = "k_liquidationFeeRatio"
4343
4444 let u = "k_partLiquidationRatio"
4545
4646 let v = "k_spreadLimit"
4747
4848 let w = "k_maxPriceImpact"
4949
5050 let x = "k_maxPriceSpread"
5151
5252 let y = "k_maxOpenNotional"
5353
5454 let z = "k_feeToStakersPercent"
5555
5656 let A = "k_maxOracleDelay"
5757
5858 let B = "k_lastDataStr"
5959
6060 let C = "k_lastMinuteId"
6161
6262 let D = "k_twapDataLastCumulativePrice"
6363
6464 let E = "k_twapDataLastPrice"
6565
6666 let F = "k_twapDataPreviousMinuteId"
6767
6868 let G = "k_latestLongPremiumFraction"
6969
7070 let H = "k_latestShortPremiumFraction"
7171
7272 let I = "k_nextFundingBlockMinTimestamp"
7373
7474 let J = "k_longFundingRate"
7575
7676 let K = "k_shortFundingRate"
7777
7878 let L = "k_qtAstR"
7979
8080 let M = "k_bsAstR"
8181
8282 let N = "k_qtAstW"
8383
8484 let O = "k_bsAstW"
8585
8686 let P = "k_totalPositionSize"
8787
8888 let Q = "k_totalLongPositionSize"
8989
9090 let R = "k_totalShortPositionSize"
9191
9292 let S = "k_openInterestNotional"
9393
9494 let T = "k_openInterestShort"
9595
9696 let U = "k_openInterestLong"
9797
9898 let V = "k_coordinatorAddress"
9999
100100 let W = "k_vault_address"
101101
102102 let X = "k_admin_address"
103103
104104 let Y = "k_admin_public_key"
105105
106106 let Z = "k_quote_asset"
107107
108108 let aa = "k_quote_staking"
109109
110110 let ab = "k_staking_address"
111111
112112 let ac = "k_miner_address"
113113
114114 let ad = "k_orders_address"
115115
116116 let ae = "k_referral_address"
117117
118118 let af = "k_collateral_address"
119119
120120 let ag = "k_exchange_address"
121121
122122 let ah = "k_nft_manager_address"
123123
124124 let ai = "k_trader_market_asset_collateral"
125125
126126 func aj (ak,al) = ((ak + "_") + al)
127127
128128
129129 func am () = valueOrErrorMessage(addressFromString(getStringValue(this, V)), "Coordinator not set")
130130
131131
132132 func an () = addressFromString(getStringValue(am(), X))
133133
134134
135135 func ao () = fromBase58String(getStringValue(am(), Y))
136136
137137
138138 func ap () = fromBase58String(getStringValue(am(), Z))
139139
140140
141141 func aq () = valueOrErrorMessage(addressFromString(getStringValue(am(), aa)), "Quote asset staking not set")
142142
143143
144144 func ar () = valueOrErrorMessage(addressFromString(getStringValue(am(), ab)), "Staking not set")
145145
146146
147147 func as () = valueOrErrorMessage(addressFromString(getStringValue(am(), W)), "Vault not set")
148148
149149
150150 func at () = valueOrErrorMessage(addressFromString(getStringValue(am(), ac)), "Miner not set")
151151
152152
153153 func au () = valueOrErrorMessage(addressFromString(getStringValue(am(), ad)), "Orders not set")
154154
155155
156156 func av () = valueOrErrorMessage(addressFromString(getStringValue(am(), ae)), "Referral not set")
157157
158158
159159 func aw () = valueOrErrorMessage(addressFromString(getStringValue(am(), ah)), "NFT Manager not set")
160160
161161
162162 func ax () = valueOrErrorMessage(addressFromString(getStringValue(am(), af)), "Collateral Manager not set")
163163
164164
165165 func ay () = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(am(), ag), "No swap address")), "Invalid swap address")
166166
167167
168168 let az = "k_whitelist_asset"
169169
170170 func aA (aB) = valueOrElse(getBoolean(ax(), aj(az, aB)), false)
171171
172172
173173 let aC = "k_token_param"
174174
175175 let aD = "k_token_type"
176176
177177 let aE = "fee_reduction"
178178
179179 let aF = 1
180180
181181 let aG = 2
182182
183183 let aH = 15
184184
185185 let aI = 15
186186
187187 let aJ = 1000
188188
189189 let aK = 6
190190
191191 let aL = (1 * (((((10 * 10) * 10) * 10) * 10) * 10))
192192
193193 let aM = (86400 * aL)
194194
195195 let aN = 100
196196
197197 let aO = 1
198198
199199 let aP = 2
200200
201201 func aQ (aR) = (toString(aR) + ",")
202202
203203
204204 func aS (aR,aT) = fraction(aR, aL, aT, HALFEVEN)
205205
206206
207207 func aU (aR,aT) = fraction(aR, aT, aL, HALFEVEN)
208208
209209
210210 func aV (aR) = sqrt(aR, aK, aK, HALFEVEN)
211211
212212
213213 func aW (aR,aT) = pow(aR, aK, aT, aK, aK, HALFEVEN)
214214
215215
216216 func aX (aR,aT) = fraction(aR, toBigInt(aL), aT, HALFEVEN)
217217
218218
219219 func aY (aR,aT) = fraction(aR, aT, toBigInt(aL), HALFEVEN)
220220
221221
222222 func aZ (aR) = sqrtBigInt(aR, aK, aK, HALFEVEN)
223223
224224
225225 func ba (aR,aT) = pow(aR, aK, aT, aK, aK, HALFEVEN)
226226
227227
228228 func bb (aR) = if ((aR > 0))
229229 then aR
230230 else -(aR)
231231
232232
233233 func bc (aR,aT) = if ((aR >= aT))
234234 then aR
235235 else aT
236236
237237
238238 func bd (be) = {
239239 func bf (bg,bh) = ((bg + bh) + ",")
240240
241241 let bi = {
242242 let bj = be
243243 let bk = size(bj)
244244 let bl = ""
245245 func bm (bn,bo) = if ((bo >= bk))
246246 then bn
247247 else bf(bn, bj[bo])
248248
249249 func bp (bn,bo) = if ((bo >= bk))
250250 then bn
251251 else throw("List size exceeds 20")
252252
253253 bp(bm(bm(bm(bm(bm(bm(bm(bm(bm(bm(bm(bm(bm(bm(bm(bm(bm(bm(bm(bm(bl, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
254254 }
255255 let bq = dropRight(bi, 1)
256256 let br = if ((take(bq, 1) == ","))
257257 then drop(bq, 1)
258258 else bq
259259 br
260260 }
261261
262262
263263 func bs (bt) = split(bt, ",")
264264
265265
266266 func bu (be,bv,bw) = if ((size(be) > bv))
267267 then (removeByIndex(be, 0) :+ bw)
268268 else (be :+ bw)
269269
270270
271271 func bx (by) = valueOrErrorMessage(getInteger(this, by), ("no value for " + by))
272272
273273
274274 func bz (by,bA) = valueOrElse(getInteger(this, by), bA)
275275
276276
277277 func bB (al,ak) = {
278278 let bh = valueOrErrorMessage(getString(al, ak), ("No value for key " + ak))
279279 bh
280280 }
281281
282282
283283 func bC (al,ak) = {
284284 let bh = valueOrErrorMessage(getInteger(al, ak), ("No value for key " + ak))
285285 bh
286286 }
287287
288288
289289 func bD () = bx(e)
290290
291291
292292 func bE () = bx(p)
293293
294294
295295 func bF () = bx(r)
296296
297297
298298 func bG () = bx(L)
299299
300300
301301 func bH () = bx(M)
302302
303303
304304 func bI () = bz(N, aL)
305305
306306
307307 func bJ () = bz(O, aL)
308308
309309
310310 func bK () = bx(P)
311311
312312
313313 func bL () = bx(S)
314314
315315
316316 func bM () = bx(T)
317317
318318
319319 func bN () = bx(U)
320320
321321
322322 func bO () = bx(I)
323323
324324
325325 func bP () = bx(q)
326326
327327
328328 func bQ () = (bP() * aL)
329329
330330
331331 func bR () = (bP() * aJ)
332332
333333
334334 func bS () = bx(s)
335335
336336
337337 func bT () = bx(t)
338338
339339
340340 func bU () = bx(u)
341341
342342
343343 func bV () = bx(v)
344344
345345
346346 func bW () = bx(w)
347347
348348
349349 func bX () = bx(x)
350350
351351
352352 func bY () = bx(y)
353353
354354
355355 func bZ () = bx(G)
356356
357357
358358 func ca () = bx(H)
359359
360360
361361 func cb () = bx(R)
362362
363363
364364 func cc () = bx(Q)
365365
366366
367367 func cd () = bz(f, 0)
368368
369369
370370 func ce () = bx(z)
371371
372372
373373 func cf () = bx(A)
374374
375375
376376 func cg (ch) = valueOrElse(getString(au(), "k_sender"), toString(ch.caller))
377377
378378
379379 func ci (cj,ck,cl) = {
380380 let cm = (cj - ck)
381381 if (if (cl)
382382 then (0 > cm)
383383 else false)
384- then throw("Invalid margin")
384+ then throw(((("Invalid margin: " + toString(cj)) + " < ") + toString(ck)))
385385 else if (if (!(cl))
386386 then (cm >= 0)
387387 else false)
388- then throw("Invalid margin")
388+ then throw(((("Invalid margin: " + toString(cj)) + " > ") + toString(ck)))
389389 else true
390390 }
391391
392392
393393 func cn (co) = if ((co == 0))
394394 then throw("Should not be called with _positionSize == 0")
395395 else if ((co > 0))
396396 then bZ()
397397 else ca()
398398
399399
400400 func cp (cq) = {
401401 let cr = getInteger(this, aj(g, cq))
402402 let cs = cr
403403 if ($isInstanceOf(cs, "Int"))
404404 then {
405405 let ct = cs
406406 $Tuple4(ct, getIntegerValue(this, aj(h, cq)), getIntegerValue(this, aj(i, cq)), getIntegerValue(this, aj(j, cq)))
407407 }
408408 else $Tuple4(0, 0, 0, 0)
409409 }
410410
411411
412412 func cu (cq) = {
413413 let cv = getString(this, aj(l, cq))
414414 let cs = cv
415415 if ($isInstanceOf(cs, "String"))
416416 then {
417417 let cw = cs
418418 cw
419419 }
420420 else toBase58String(ap())
421421 }
422422
423423
424424 func cx (cq) = if ((cp(cq)._1 == 0))
425425 then throw("No open position")
426426 else true
427427
428428
429429 func cy () = valueOrElse(getBoolean(this, m), false)
430430
431431
432432 func cz () = valueOrElse(getBoolean(this, n), false)
433433
434434
435435 func cA () = valueOrElse(getBoolean(this, o), false)
436436
437437
438438 func cB (cC,cD,cE) = if (cC)
439439 then {
440440 let cF = (bH() - cE)
441441 if ((0 >= cF))
442442 then throw("Tx lead to base asset reserve <= 0, revert")
443443 else $Tuple3((bG() + cD), cF, (bK() + cE))
444444 }
445445 else {
446446 let cG = (bG() - cD)
447447 if ((0 >= cG))
448448 then throw("Tx lead to base quote reserve <= 0, revert")
449449 else $Tuple3(cG, (bH() + cE), (bK() - cE))
450450 }
451451
452452
453453 func cH (cI,cJ,cK,cL) = {
454454 let cM = toBigInt(cI)
455455 let cN = toBigInt(cJ)
456456 let cO = toBigInt(cK)
457457 let cP = toBigInt(cL)
458458 aY(aY(cM, cN), aY(cO, cP))
459459 }
460460
461461
462462 func cQ (cC,cD) = {
463463 let cI = bG()
464464 let cK = bH()
465465 let cJ = bI()
466466 let cL = bJ()
467467 let by = cH(cI, cJ, cK, cL)
468468 let cR = if (cC)
469469 then (cI + cD)
470470 else (cI - cD)
471471 let cS = toInt(aX(by, toBigInt(aU(cR, cJ))))
472472 let cT = aS(bb((cS - cK)), cJ)
473473 let cU = if (cC)
474474 then cT
475475 else -(cT)
476476 let cV = cB(cC, cD, cT)
477477 let cW = cV._1
478478 let cX = cV._2
479479 let cY = cV._3
480480 let cZ = aS(aU(cI, cJ), aU(cK, cL))
481481 let da = aS(cD, cT)
482482 let db = bb((cZ - da))
483483 let dc = (aL - aS(cZ, (cZ + db)))
484484 let dd = bW()
485485 if ((dc > dd))
486486 then throw(((((((((((((("Price impact " + toString(dc)) + " > max price impact ") + toString(dd)) + " before quote asset: ") + toString(cI)) + " before base asset: ") + toString(cK)) + " quote asset amount to exchange: ") + toString(cD)) + " price before: ") + toString(cZ)) + " marketPrice: ") + toString(da)))
487487 else $Tuple4(cU, cW, cX, cY)
488488 }
489489
490490
491491 func de (df,dg,dh,di) = {
492492 let dj = if ((df != 0))
493493 then {
494494 let dk = cn(df)
495495 aU((dk - dh), df)
496496 }
497497 else 0
498498 let dl = ((di - dj) + dg)
499499 let dm = if ((0 > dl))
500500 then $Tuple2(0, bb(dl))
501501 else $Tuple2(bb(dl), 0)
502502 let dn = dm._1
503503 let do = dm._2
504504 $Tuple3(dn, do, dj)
505505 }
506506
507507
508508 func dp (cC,cE,dq,dr,ds,dt,du) = {
509509 let cZ = aS(aU(dr, ds), aU(dt, du))
510510 if ((cE == 0))
511511 then throw("Invalid base asset amount")
512512 else {
513513 let by = cH(dr, ds, dt, du)
514514 let dv = if (cC)
515515 then (dt + cE)
516516 else (dt - cE)
517517 let dw = toInt(aX(by, toBigInt(aU(dv, du))))
518518 let dx = bb((dw - aU(dr, ds)))
519519 let dd = bW()
520520 let dy = cB(!(cC), dx, cE)
521521 let cW = dy._1
522522 let cX = dy._2
523523 let cY = dy._3
524524 let da = aS(dx, cE)
525525 let db = bb((cZ - da))
526526 let dc = (aL - aS(cZ, (cZ + db)))
527527 if (if ((dc > dd))
528528 then dq
529529 else false)
530530 then throw(((((((((((((("Price impact " + toString(dc)) + " > max price impact ") + toString(dd)) + " before quote asset: ") + toString(dr)) + " before base asset: ") + toString(dt)) + " base asset amount to exchange: ") + toString(cE)) + " price before: ") + toString(cZ)) + " market price: ") + toString(da)))
531531 else $Tuple7(dx, cW, cX, cY, (cc() - (if (cC)
532532 then bb(cE)
533533 else 0)), (cb() - (if (!(cC))
534534 then bb(cE)
535535 else 0)), dc)
536536 }
537537 }
538538
539539
540540 func dz (cC,cE,dq) = dp(cC, cE, dq, bG(), bI(), bH(), bJ())
541541
542542
543543 func dA () = {
544544 let dB = valueOrErrorMessage(addressFromString(getStringValue(this, d)), "")
545545 let dC = getStringValue(this, a)
546546 let dD = valueOrErrorMessage(getInteger(dB, dC), ((("Can not get oracle price. Oracle: " + toString(dB)) + " key: ") + dC))
547547 let dE = valueOrElse(getString(this, b), "")
548548 if ((dE != ""))
549549 then {
550550 let dF = lastBlock.height
551551 let dG = valueOrErrorMessage(getInteger(dB, dE), ((("Can not get oracle block. Oracle: " + toString(dB)) + " key: ") + dE))
552552 if (((dF - dG) > cf()))
553553 then throw(((("Oracle stale data. Last oracle block: " + toString(dG)) + " current block: ") + toString(dF)))
554554 else dD
555555 }
556556 else dD
557557 }
558558
559559
560560 func dH () = {
561561 let dB = valueOrErrorMessage(addressFromString(getStringValue(this, d)), "")
562562 let dI = valueOrElse(getString(this, c), "")
563563 if ((dI != ""))
564564 then {
565565 let dJ = valueOrErrorMessage(getBoolean(dB, dI), ((("Can not get oracle is open/closed. Oracle: " + toString(dB)) + " key: ") + dI))
566566 !(dJ)
567567 }
568568 else false
569569 }
570570
571571
572572 func dK (dL,dr,dt,cJ,cL) = {
573573 let dM = aS(aU(dr, cJ), aU(dt, cL))
574574 let dN = aS((dL + dM), (2 * aL))
575575 let dK = aS(bb((dL - dM)), dN)
576576 dK
577577 }
578578
579579
580580 func dO (dr,dt) = {
581581 let dP = dA()
582582 let cJ = bI()
583583 let cL = bJ()
584584 let dQ = dK(dP, bG(), bH(), cJ, cL)
585585 let dR = dK(dP, dr, dt, cJ, cL)
586586 if (if ((dR > bX()))
587587 then (dR > dQ)
588588 else false)
589589 then throw(((("Price spread " + toString(dR)) + " > max price spread ") + toString(bX())))
590590 else true
591591 }
592592
593593
594594 func dS (dT,dU) = {
595595 let dV = bY()
596596 if ((dT > dV))
597597 then throw(((("Long open notional " + toString(dT)) + " > max open notional ") + toString(dV)))
598598 else if ((dU > dV))
599599 then throw(((("Short open notional " + toString(dU)) + " > max open notional ") + toString(dV)))
600600 else true
601601 }
602602
603603
604604 func dW () = {
605605 let dr = bG()
606606 let dt = bH()
607607 let cJ = bI()
608608 let cL = bJ()
609609 aS(aU(dr, cJ), aU(dt, cL))
610610 }
611611
612612
613613 func dX () = {
614614 let dP = dA()
615615 let dY = dW()
616616 (aS(bb((dP - dY)), dP) > bV())
617617 }
618618
619619
620620 func dZ (co,ea,dr,ds,dt,du) = {
621621 let eb = bb(co)
622622 let ec = (0 > co)
623623 let ed = if ((ea == aO))
624624 then {
625625 let ee = dp(!(ec), eb, false, dr, ds, dt, du)
626626 let ef = ee._1
627627 let eg = ee._2
628628 let eh = ee._3
629629 let ei = ee._4
630630 ef
631631 }
632632 else aU(eb, dA())
633633 ed
634634 }
635635
636636
637637 func ej (co,ek,dr,ds,dt,du,ea) = if ((co == 0))
638638 then throw("Invalid position size")
639639 else {
640640 let ec = (0 > co)
641641 let ed = dZ(co, ea, dr, ds, dt, du)
642642 let el = if (ec)
643643 then (ek - ed)
644644 else (ed - ek)
645645 $Tuple2(ed, el)
646646 }
647647
648648
649649 func em (cq,ea) = {
650650 let en = cp(cq)
651651 let ct = en._1
652652 let eo = en._2
653653 let ep = en._3
654654 let eq = en._4
655655 ej(ct, ep, bG(), bI(), bH(), bJ(), ea)
656656 }
657657
658658
659659 func er (es,et,eu) = aS((es - et), eu)
660660
661661
662662 func ev (cq,ea) = {
663663 let ew = cp(cq)
664664 let ct = ew._1
665665 let eo = ew._2
666666 let ex = ew._3
667667 let eq = ew._4
668668 let ey = em(cq, ea)
669669 let ed = ey._1
670670 let el = ey._2
671671 let ez = de(ct, eo, eq, el)
672672 let dn = ez._1
673673 let do = ez._2
674674 er(dn, do, ed)
675675 }
676676
677677
678678 func eA (cq) = ev(cq, aO)
679679
680680
681681 func eB (cq,co) = {
682682 let eC = bc(bU(), (aL - aS(eA(cq), bS())))
683683 let eD = aU(bb(co), eC)
684684 let eE = dz((co > 0), eD, false)
685685 let eF = eE._1
686686 let dc = eE._7
687687 if ((bW() > dc))
688688 then eF
689689 else {
690690 let eG = aU(bb(co), bU())
691691 let eH = dz((co > 0), eG, false)._1
692692 eH
693693 }
694694 }
695695
696696
697697 func eI (cq,dq) = {
698698 let eJ = cp(cq)
699699 let ct = eJ._1
700700 let eo = eJ._2
701701 let ep = eJ._3
702702 let eq = eJ._4
703703 let el = em(cq, aO)._2
704704 let eK = de(ct, eo, eq, el)
705705 let dn = eK._1
706706 let do = eK._2
707707 let eG = -(ct)
708708 let eL = el
709709 let eM = -(dn)
710710 let eN = dz((ct > 0), bb(ct), dq)
711711 let eH = eN._1
712712 let cR = eN._2
713713 let cS = eN._3
714714 let eO = eN._4
715715 let eP = eN._5
716716 let eQ = eN._6
717717 let eR = (bL() - ep)
718718 $Tuple13(eG, do, eL, eM, cR, cS, eO, eR, eH, eP, eQ, (bN() - (if ((ct > 0))
719719 then ep
720720 else 0)), (bM() - (if ((0 > ct))
721721 then ep
722722 else 0)))
723723 }
724724
725725
726726 func eS () = {
727727 let eT = ((lastBlock.timestamp / 1000) / 60)
728728 let eU = (eT - aH)
729729 let eV = valueOrElse(getString(this, B), "")
730730 let eW = split(eV, ",")
731731 func eX (bg,eY) = if ((eU >= parseIntValue(eY)))
732732 then (bg :+ parseIntValue(eY))
733733 else bg
734734
735735 let eZ = {
736736 let bj = eW
737737 let bk = size(bj)
738738 let bl = nil
739739 func bm (bn,bo) = if ((bo >= bk))
740740 then bn
741741 else eX(bn, bj[bo])
742742
743743 func bp (bn,bo) = if ((bo >= bk))
744744 then bn
745745 else throw("List size exceeds 20")
746746
747747 bp(bm(bm(bm(bm(bm(bm(bm(bm(bm(bm(bm(bm(bm(bm(bm(bm(bm(bm(bm(bm(bl, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
748748 }
749749 let fa = if ((size(eZ) > 0))
750750 then max(eZ)
751751 else parseIntValue(eW[0])
752752 let fb = valueOrElse(getInteger(this, C), 0)
753753 let fc = valueOrElse(getInteger(this, ((D + "_") + toString(fb))), 0)
754754 let fd = valueOrElse(getInteger(this, ((E + "_") + toString(fb))), 0)
755755 let fe = (fc + ((eT - fb) * fd))
756756 let ff = valueOrElse(getInteger(this, ((D + "_") + toString(fa))), 0)
757757 let fg = valueOrElse(getInteger(this, ((E + "_") + toString(fa))), 0)
758758 let fh = (ff + ((eU - fa) * fg))
759759 ((fe - fh) / aH)
760760 }
761761
762762
763763 func fi () = {
764764 let co = bK()
765765 if ((co == 0))
766766 then $Tuple2(bG(), bH())
767767 else {
768768 let fj = (co > 0)
769769 let fk = dz(fj, bb(co), false)
770770 let fl = fk._1
771771 let fm = fk._2
772772 let fn = fk._3
773773 $Tuple2(fm, fn)
774774 }
775775 }
776776
777777
778778 func fo (fp,bK,fq,fr) = {
779779 let fs = toBigInt(fp)
780780 let ft = toBigInt(bK)
781781 let fu = toBigInt(fq)
782782 let fv = toBigInt(fr)
783783 let fw = ba((fs + ft), toBigInt((2 * aL)))
784784 let fx = aY(fu, fw)
785785 let fy = (toBigInt(4) * aY(fv, ft))
786786 let fz = aZ(aY(fx, (fu - fy)))
787787 let fA = aY(fs, fu)
788788 let fB = aY(fu, ft)
789789 let fC = ((-(fz) + fA) + fB)
790790 let fD = (toBigInt(2) * aY(fu, ft))
791791 let fE = aX(fC, fD)
792792 toInt(fE)
793793 }
794794
795795
796796 func fF (fG,cI,cK) = {
797797 let co = bK()
798798 if ((co == 0))
799799 then {
800800 let fH = aS(aU(fG, cK), cI)
801801 $Tuple3(fH, aL, 0)
802802 }
803803 else {
804804 let fj = (co > 0)
805805 let fl = dz(fj, bb(co), false)._1
806806 let fH = fo(cK, co, cI, fG)
807807 let fI = aL
808808 let eM = ej(co, fl, cI, fH, cK, fI, aO)._2
809809 $Tuple3(fH, fI, eM)
810810 }
811811 }
812812
813813
814814 func fJ () = {
815815 let fK = dA()
816816 let fL = eS()
817817 let fM = (fL - fK)
818818 if (if (if ((cb() == 0))
819819 then true
820820 else (cc() == 0))
821821 then true
822822 else dH())
823823 then $Tuple2(0, 0)
824824 else if ((0 > fM))
825825 then {
826826 let fN = aS(aU(fM, bQ()), aM)
827827 let fO = aS(aU(fN, cb()), cc())
828828 $Tuple2(fN, fO)
829829 }
830830 else {
831831 let fO = aS(aU(fM, bQ()), aM)
832832 let fN = aS(aU(fO, cc()), cb())
833833 $Tuple2(fN, fO)
834834 }
835835 }
836836
837837
838838 func fP (fQ,fR) = {
839839 let fS = bE()
840840 let fT = aU(fS, fR)
841841 let fU = if ((fQ != ""))
842842 then {
843843 let fV = bB(aw(), aj(aD, fQ))
844844 if ((fV == aE))
845845 then {
846846 let fW = bC(aw(), aj(aC, fQ))
847847 let fX = aU(fT, fW)
848848 $Tuple2(fX, true)
849849 }
850850 else throw("Invalid attached artifact")
851851 }
852852 else $Tuple2(fT, false)
853853 let fX = fU._1
854854 let fY = fU._2
855855 $Tuple2(fX, fY)
856856 }
857857
858858
859859 func fZ (cq,aB) = {
860860 let ga = cp(cq)._1
861861 if ((ga == 0))
862862 then true
863863 else (cu(cq) == aB)
864864 }
865865
866866
867867 func gb (cq,aB) = (cu(cq) == aB)
868868
869869
870870 func gc (gd,aB,cq) = ((((((ai + "_") + gd) + "_") + aB) + "_") + cq)
871871
872872
873873 func ge (cq) = {
874874 let cw = cu(cq)
875875 if ((cw == toBase58String(ap())))
876876 then $Tuple2(0, cw)
877877 else {
878878 let gf = gc(toString(this), cw, cq)
879879 let gg = valueOrElse(getInteger(ax(), gf), 0)
880880 $Tuple2(gg, cw)
881881 }
882882 }
883883
884884
885885 func gh (cq,fQ) = {
886886 let gi = invoke(at(), "computeFeeDiscount", [cq], nil)
887887 if ((gi == gi))
888888 then {
889889 let gj = {
890890 let cs = gi
891891 if ($isInstanceOf(cs, "Int"))
892892 then {
893893 let gk = cs
894894 gk
895895 }
896896 else throw("Invalid computeFeeDiscount result")
897897 }
898898 let gl = fP(fQ, gj)
899899 let fX = gl._1
900900 let fY = gl._2
901901 $Tuple2(fX, fY)
902902 }
903903 else throw("Strict value is not equal to itself.")
904904 }
905905
906906
907907 func gm (ch) = {
908908 let gn = if ((size(ch.payments) > 1))
909909 then toBase58String(valueOrErrorMessage(ch.payments[1].assetId, "Invalid artifactId"))
910910 else ""
911911 gn
912912 }
913913
914914
915915 func go (gp) = {
916916 let gq = aU(gp, ce())
917917 let gr = (gp - gq)
918918 $Tuple2(gq, gr)
919919 }
920920
921921
922922 func gs (gt,gu,gv,gw,gx,gy,gz,gA,gB,dV,gC,gD) = [IntegerEntry(r, gt), IntegerEntry(s, gu), IntegerEntry(t, gv), IntegerEntry(q, gw), IntegerEntry(p, gx), IntegerEntry(v, gy), IntegerEntry(w, gz), IntegerEntry(u, gA), IntegerEntry(x, gB), IntegerEntry(y, dV), IntegerEntry(z, gC), IntegerEntry(A, gC)]
923923
924924
925925 func gE (gF,gG,gH,gI,gJ) = [IntegerEntry(I, gF), IntegerEntry(G, gG), IntegerEntry(H, gH), IntegerEntry(J, gI), IntegerEntry(K, gJ)]
926926
927927
928928 func gK (al,aB) = [StringEntry(aj(l, al), aB)]
929929
930930
931931 func gL (gM,al) = if (gM)
932932 then {
933933 let gN = cd()
934934 [IntegerEntry(aj(k, al), (gN + 1)), IntegerEntry(f, (gN + 1))]
935935 }
936936 else nil
937937
938938
939939 func gO (al,gP,gQ,gR,dk) = [IntegerEntry(aj(g, al), gP), IntegerEntry(aj(h, al), gQ), IntegerEntry(aj(i, al), gR), IntegerEntry(aj(j, al), dk)]
940940
941941
942942 func gS (gT) = {
943943 let eT = ((lastBlock.timestamp / 1000) / 60)
944944 let gU = valueOrElse(getInteger(this, C), 0)
945945 if ((gU > eT))
946946 then throw("TWAP out-of-order")
947947 else {
948948 let fb = if ((gU == 0))
949949 then eT
950950 else gU
951951 if ((eT > gU))
952952 then {
953953 let gV = valueOrElse(getInteger(this, ((D + "_") + toString(gU))), 0)
954954 let gW = valueOrElse(getInteger(this, ((E + "_") + toString(gU))), gT)
955955 let gX = (gV + ((eT - fb) * gW))
956956 let eW = bu(bs(valueOrElse(getString(this, B), "")), aH, toString(eT))
957957 [IntegerEntry(aj(D, toString(eT)), gX), IntegerEntry(aj(E, toString(eT)), gT), IntegerEntry(aj(F, toString(eT)), gU), IntegerEntry(C, eT), StringEntry(B, bd(eW))]
958958 }
959959 else {
960960 let gY = valueOrElse(getInteger(this, aj(F, toString(eT))), 0)
961961 let gV = valueOrElse(getInteger(this, aj(D, toString(gY))), 0)
962962 let gW = valueOrElse(getInteger(this, aj(E, toString(gY))), gT)
963963 let gX = (gV + ((eT - gY) * gW))
964964 [IntegerEntry(aj(D, toString(eT)), gX), IntegerEntry(aj(E, toString(eT)), gT)]
965965 }
966966 }
967967 }
968968
969969
970970 func gZ (cI,cK) = [IntegerEntry(L, cI), IntegerEntry(M, cK)]
971971
972972
973973 func ha (cJ,cL) = [IntegerEntry(N, cJ), IntegerEntry(O, cL)]
974974
975975
976976 func hb (cI,cK,hc,hd,he,hf,hg,hh) = {
977977 let cJ = bI()
978978 let cL = bJ()
979979 if (((he - hf) != hc))
980980 then throw(((((("Invalid AMM state data: " + toString(he)) + " + ") + toString(hf)) + " != ") + toString(hc)))
981981 else ((gZ(cI, cK) ++ [IntegerEntry(P, hc), IntegerEntry(S, hd), IntegerEntry(Q, he), IntegerEntry(R, hf), IntegerEntry(U, hg), IntegerEntry(T, hh)]) ++ gS(aS(aU(cI, cJ), aU(cK, cL))))
982982 }
983983
984984
985985 func hi (al) = [DeleteEntry(aj(g, al)), DeleteEntry(aj(h, al)), DeleteEntry(aj(i, al)), DeleteEntry(aj(j, al)), DeleteEntry(aj(l, al))]
986986
987987
988988 func hj (al,hk) = {
989989 let hl = assetBalance(this, ap())
990990 if ((hk > hl))
991991 then throw(((("Unable to withdraw " + toString(hk)) + " from contract balance ") + toString(hl)))
992992 else [ScriptTransfer(al, hk, ap())]
993993 }
994994
995995
996996 func hm (ch) = if ((0 > ch))
997997 then throw("Balance")
998998 else [IntegerEntry(e, ch)]
999999
10001000
10011001 func hn (ch) = [ScriptTransfer(ar(), ch, ap())]
10021002
10031003
10041004 func ho (hp,ch) = if (hp)
10051005 then [Burn(valueOrErrorMessage(ch.payments[1].assetId, "Invalid artifact"), 1)]
10061006 else nil
10071007
10081008
10091009 @Callable(ch)
10101010 func pause () = if ((ch.caller != an()))
10111011 then throw("Invalid pause params")
10121012 else [BooleanEntry(n, true)]
10131013
10141014
10151015
10161016 @Callable(ch)
10171017 func unpause () = if ((ch.caller != an()))
10181018 then throw("Invalid unpause params")
10191019 else [BooleanEntry(n, false)]
10201020
10211021
10221022
10231023 @Callable(ch)
10241024 func setCloseOnly () = if ((ch.caller != an()))
10251025 then throw("Invalid setCloseOnly params")
10261026 else [BooleanEntry(o, true)]
10271027
10281028
10291029
10301030 @Callable(ch)
10311031 func unsetCloseOnly () = if ((ch.caller != an()))
10321032 then throw("Invalid unsetCloseOnly params")
10331033 else [BooleanEntry(o, false)]
10341034
10351035
10361036
10371037 @Callable(ch)
10381038 func addLiquidity (cD) = if (if ((ch.caller != an()))
10391039 then true
10401040 else (0 >= cD))
10411041 then throw("Invalid addLiquidity params")
10421042 else {
10431043 let cI = bG()
10441044 let cK = bH()
10451045 let cJ = bI()
10461046 let cL = bJ()
10471047 let hq = aS(aU(cI, cJ), aU(cK, cL))
10481048 let hr = (cI + cD)
10491049 let hs = (aS(aU(hr, cJ), hq) - cK)
10501050 let ht = (cK + hs)
10511051 let hu = fF(dA(), hr, ht)
10521052 let hv = hu._1
10531053 let hw = hu._2
10541054 let eM = hu._3
10551055 let hx = if ((eM != 0))
10561056 then {
10571057 let hx = invoke(as(), "exchangeFreeAndLocked", [eM], nil)
10581058 if ((hx == hx))
10591059 then nil
10601060 else throw("Strict value is not equal to itself.")
10611061 }
10621062 else nil
10631063 if ((hx == hx))
10641064 then (gZ(hr, ht) ++ ha(hv, hw))
10651065 else throw("Strict value is not equal to itself.")
10661066 }
10671067
10681068
10691069
10701070 @Callable(ch)
10711071 func removeLiquidity (cD) = if (if ((ch.caller != an()))
10721072 then true
10731073 else (0 >= cD))
10741074 then throw("Invalid removeLiquidity params")
10751075 else {
10761076 let cI = bG()
10771077 let cK = bH()
10781078 let cJ = bI()
10791079 let cL = bJ()
10801080 let hq = aS(aU(cI, cJ), aU(cK, cL))
10811081 let hy = aS(cD, hq)
10821082 let hr = (cI - cD)
10831083 let ht = (cK - hy)
10841084 gZ(hr, ht)
10851085 }
10861086
10871087
10881088
10891089 @Callable(ch)
10901090 func changeSettings (gt,gu,gv,gw,gx,gy,gz,gA,gB,dV,gC,gD) = if ((ch.caller != an()))
10911091 then throw("Invalid changeSettings params")
10921092 else gs(gt, gu, gv, gw, gx, gy, gz, gA, gB, dV, gC, gD)
10931093
10941094
10951095
10961096 @Callable(ch)
10971097 func initialize (cI,cK,gw,gt,gu,gv,gx,hz,hA,hB,hC,gy,gz,gA,gB,dV,gC,gD) = if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if ((0 >= cI))
10981098 then true
10991099 else (0 >= cK))
11001100 then true
11011101 else (0 >= gw))
11021102 then true
11031103 else (0 >= gt))
11041104 then true
11051105 else (0 >= gu))
11061106 then true
11071107 else (0 >= gv))
11081108 then true
11091109 else (0 >= gx))
11101110 then true
11111111 else (0 >= gy))
11121112 then true
11131113 else (0 >= gz))
11141114 then true
11151115 else (0 >= gA))
11161116 then true
11171117 else (0 >= gB))
11181118 then true
11191119 else (0 >= dV))
11201120 then true
11211121 else (0 >= gC))
11221122 then true
11231123 else (gC > aL))
11241124 then true
11251125 else (0 >= gD))
11261126 then true
11271127 else cy())
11281128 then throw("Invalid initialize parameters")
11291129 else ((((hb(cI, cK, 0, 0, 0, 0, 0, 0) ++ gs(gt, gu, gv, gw, gx, gy, gz, gA, gB, dV, gC, gD)) ++ gE((lastBlock.timestamp + gw), 0, 0, 0, 0)) ++ hm(0)) ++ [BooleanEntry(m, true), StringEntry(d, hz), StringEntry(a, hA), StringEntry(b, hB), StringEntry(V, hC)])
11301130
11311131
11321132
11331133 @Callable(ch)
11341134 func decreasePosition (hk,hD,hE) = {
11351135 let hF = invoke(this, "syncTerminalPriceToOracle", nil, nil)
11361136 if ((hF == hF))
11371137 then {
11381138 let cq = cg(ch)
11391139 if (if (if (if (if (if ((0 >= hk))
11401140 then true
11411141 else !(cy()))
11421142 then true
11431143 else !(ci(aS(aL, hD), bF(), true)))
11441144 then true
11451145 else !(cx(cq)))
11461146 then true
11471147 else cz())
11481148 then true
11491149 else dH())
11501150 then throw("Invalid decreasePosition parameters")
11511151 else {
11521152 let hG = cp(cq)
11531153 let ga = hG._1
11541154 let hH = hG._2
11551155 let hI = hG._3
11561156 let hJ = hG._4
11571157 let hK = if ((ga > 0))
11581158 then aG
11591159 else aF
11601160 let hL = (hK == aF)
11611161 let hM = aU(hk, hD)
11621162 let hN = em(cq, aO)
11631163 let hO = hN._1
11641164 let el = hN._2
11651165 let hP = if ((hO > hM))
11661166 then {
11671167 let hQ = cQ(hL, hM)
11681168 let eG = hQ._1
11691169 let cR = hQ._2
11701170 let cS = hQ._3
11711171 let eO = hQ._4
11721172 let hR = bb(eG)
11731173 if (if ((hE != 0))
11741174 then (hE > hR)
11751175 else false)
11761176 then throw(((("Too little base asset exchanged, got " + toString(hR)) + " expected ") + toString(hE)))
11771177 else {
11781178 let eL = aS(aU(el, hR), bb(ga))
11791179 let hS = de(ga, hH, hJ, eL)
11801180 let dn = hS._1
11811181 let do = hS._2
11821182 let eH = hM
11831183 let hT = (el - eL)
11841184 let hU = if ((ga > 0))
11851185 then ((hO - eH) - hT)
11861186 else ((hT + hO) - eH)
11871187 let hV = (ga + eG)
11881188 $Tuple12(hV, dn, bb(hU), cn(hV), cS, cR, eO, (bL() - hM), (cc() - (if ((hV > 0))
11891189 then bb(eG)
11901190 else 0)), (cb() - (if ((0 > hV))
11911191 then bb(eG)
11921192 else 0)), (bN() - (if ((hV > 0))
11931193 then hM
11941194 else 0)), (bM() - (if ((0 > hV))
11951195 then hM
11961196 else 0)))
11971197 }
11981198 }
11991199 else throw("Close position first")
12001200 let hV = hP._1
12011201 let hW = hP._2
12021202 let hX = hP._3
12031203 let hY = hP._4
12041204 let cS = hP._5
12051205 let cR = hP._6
12061206 let eO = hP._7
12071207 let eR = hP._8
12081208 let eP = hP._9
12091209 let eQ = hP._10
12101210 let hZ = hP._11
12111211 let ia = hP._12
12121212 let ib = invoke(at(), "notifyNotional", [cq, hX], nil)
12131213 if ((ib == ib))
12141214 then (gO(cq, hV, hW, hX, hY) ++ hb(cR, cS, eO, eR, eP, eQ, hZ, ia))
12151215 else throw("Strict value is not equal to itself.")
12161216 }
12171217 }
12181218 else throw("Strict value is not equal to itself.")
12191219 }
12201220
12211221
12221222
12231223 @Callable(ch)
12241224 func increasePosition (hK,hD,hE,ic) = {
12251225 let hF = invoke(this, "syncTerminalPriceToOracle", nil, nil)
12261226 if ((hF == hF))
12271227 then {
12281228 let cq = cg(ch)
12291229 let id = ch.payments[0].amount
12301230 let aB = ch.payments[0].assetId
12311231 let ie = toBase58String(value(aB))
12321232 let if = (aB == ap())
12331233 let ig = aA(ie)
12341234 if (if (if (if (if (if (if (if (if (if ((hK != aF))
12351235 then (hK != aG)
12361236 else false)
12371237 then true
12381238 else (0 >= id))
12391239 then true
12401240 else !(cy()))
12411241 then true
12421242 else if (!(if))
12431243 then !(ig)
12441244 else false)
12451245 then true
12461246 else !(fZ(cq, ie)))
12471247 then true
12481248 else !(ci(aS(aL, hD), bF(), true)))
12491249 then true
12501250 else cz())
12511251 then true
12521252 else cA())
12531253 then true
12541254 else dH())
12551255 then throw("Invalid increasePosition parameters")
12561256 else {
12571257 let ih = gh(cq, gm(ch))
12581258 let fX = ih._1
12591259 let fY = ih._2
12601260 let ii = aU(id, fX)
12611261 let hk = (id - ii)
12621262 let ij = if (ig)
12631263 then {
12641264 let ik = invoke(ax(), "borrow", [cq], [AttachedPayment(aB, hk)])
12651265 if ((ik == ik))
12661266 then {
12671267 let il = assetBalance(this, ap())
12681268 if ((il == il))
12691269 then {
12701270 let im = invoke(ay(), "swap", [toBase58String(ap()), 0], [AttachedPayment(aB, ii)])
12711271 if ((im == im))
12721272 then {
12731273 let in = assetBalance(this, ap())
12741274 if ((in == in))
12751275 then {
12761276 let io = (in - il)
12771277 if ((io == io))
12781278 then io
12791279 else throw("Strict value is not equal to itself.")
12801280 }
12811281 else throw("Strict value is not equal to itself.")
12821282 }
12831283 else throw("Strict value is not equal to itself.")
12841284 }
12851285 else throw("Strict value is not equal to itself.")
12861286 }
12871287 else throw("Strict value is not equal to itself.")
12881288 }
12891289 else ii
12901290 if ((ij == ij))
12911291 then {
12921292 let ip = invoke(av(), "acceptPaymentWithLink", [cq, ic], [AttachedPayment(ap(), ij)])
12931293 if ((ip == ip))
12941294 then {
12951295 let iq = {
12961296 let cs = ip
12971297 if ($isInstanceOf(cs, "Int"))
12981298 then {
12991299 let gk = cs
13001300 gk
13011301 }
13021302 else throw("Invalid referrerFee")
13031303 }
13041304 let ir = (ij - iq)
13051305 let is = cp(cq)
13061306 let ga = is._1
13071307 let hH = is._2
13081308 let hI = is._3
13091309 let hJ = is._4
13101310 let gM = (ga == 0)
13111311 let it = if ((ga > 0))
13121312 then (hK == aF)
13131313 else (hK == aG)
13141314 let iu = if (!(gM))
13151315 then it
13161316 else false
13171317 let hL = (hK == aF)
13181318 let iv = if (if (gM)
13191319 then true
13201320 else iu)
13211321 then {
13221322 let hM = aU(hk, hD)
13231323 let iw = cQ(hL, hM)
13241324 let cU = iw._1
13251325 let cR = iw._2
13261326 let cS = iw._3
13271327 let eO = iw._4
13281328 if (if ((hE != 0))
13291329 then (hE > bb(cU))
13301330 else false)
13311331 then throw(((("Limit error: " + toString(bb(cU))) + " < ") + toString(hE)))
13321332 else {
13331333 let hV = (ga + cU)
13341334 let hZ = (bN() + (if ((hV > 0))
13351335 then hM
13361336 else 0))
13371337 let ia = (bM() + (if ((0 > hV))
13381338 then hM
13391339 else 0))
13401340 let ix = aS(hM, hD)
13411341 let iy = de(ga, hH, hJ, ix)
13421342 let dn = iy._1
13431343 let eg = iy._2
13441344 let eh = iy._3
13451345 if (!(dO(cR, cS)))
13461346 then throw("Over max spread limit")
13471347 else if (!(dS(hZ, ia)))
13481348 then throw("Over max open notional")
13491349 else $Tuple12(hV, dn, (hI + hM), cn(hV), cS, cR, eO, (bL() + hM), (cc() + (if ((hV > 0))
13501350 then bb(cU)
13511351 else 0)), (cb() + (if ((0 > hV))
13521352 then bb(cU)
13531353 else 0)), hZ, ia)
13541354 }
13551355 }
13561356 else {
13571357 let hM = aU(hk, hD)
13581358 let iz = em(toString(ch.caller), aO)
13591359 let hO = iz._1
13601360 let el = iz._2
13611361 if ((hO > hM))
13621362 then throw("Use decreasePosition to decrease position size")
13631363 else throw("Close position first")
13641364 }
13651365 let hV = iv._1
13661366 let hW = iv._2
13671367 let hX = iv._3
13681368 let hY = iv._4
13691369 let cS = iv._5
13701370 let cR = iv._6
13711371 let eO = iv._7
13721372 let eR = iv._8
13731373 let eP = iv._9
13741374 let eQ = iv._10
13751375 let hZ = iv._11
13761376 let ia = iv._12
13771377 let iA = go(ir)
13781378 let gq = iA._1
13791379 let gr = iA._2
13801380 let iB = if (if)
13811381 then {
13821382 let iB = invoke(as(), "addLocked", [false], [AttachedPayment(ap(), hk)])
13831383 if ((iB == iB))
13841384 then nil
13851385 else throw("Strict value is not equal to itself.")
13861386 }
13871387 else nil
13881388 if ((iB == iB))
13891389 then {
13901390 let iC = invoke(as(), "addFree", nil, [AttachedPayment(ap(), gr)])
13911391 if ((iC == iC))
13921392 then {
13931393 let iD = invoke(at(), "notifyFees", [cq, ir], nil)
13941394 if ((iD == iD))
13951395 then {
13961396 let ib = invoke(at(), "notifyNotional", [cq, hX], nil)
13971397 if ((ib == ib))
13981398 then ((((((gO(cq, hV, hW, hX, hY) ++ gL(gM, cq)) ++ gK(cq, ie)) ++ hb(cR, cS, eO, eR, eP, eQ, hZ, ia)) ++ hn(gq)) ++ hm((bD() + hk))) ++ ho(fY, ch))
13991399 else throw("Strict value is not equal to itself.")
14001400 }
14011401 else throw("Strict value is not equal to itself.")
14021402 }
14031403 else throw("Strict value is not equal to itself.")
14041404 }
14051405 else throw("Strict value is not equal to itself.")
14061406 }
14071407 else throw("Strict value is not equal to itself.")
14081408 }
14091409 else throw("Strict value is not equal to itself.")
14101410 }
14111411 }
14121412 else throw("Strict value is not equal to itself.")
14131413 }
14141414
14151415
14161416
14171417 @Callable(ch)
14181418 func addMargin () = {
14191419 let hF = invoke(this, "syncTerminalPriceToOracle", nil, nil)
14201420 if ((hF == hF))
14211421 then {
14221422 let cq = toString(ch.caller)
14231423 let id = ch.payments[0].amount
14241424 let aB = ch.payments[0].assetId
14251425 let ie = toBase58String(value(aB))
14261426 let if = (aB == ap())
14271427 let ig = aA(ie)
14281428 if (if (if (if (if (if (if (if (!(if))
14291429 then !(ig)
14301430 else false)
14311431 then true
14321432 else !(cx(toString(ch.caller))))
14331433 then true
14341434 else !(gb(cq, ie)))
14351435 then true
14361436 else !(cy()))
14371437 then true
14381438 else cz())
14391439 then true
14401440 else cA())
14411441 then true
14421442 else dH())
14431443 then throw("Invalid addMargin parameters")
14441444 else {
14451445 let iE = gh(cq, gm(ch))
14461446 let fX = iE._1
14471447 let fY = iE._2
14481448 let ii = aU(id, fX)
14491449 let hk = (id - ii)
14501450 let ij = if (ig)
14511451 then {
14521452 let ik = invoke(ax(), "borrow", [cq], [AttachedPayment(aB, hk)])
14531453 if ((ik == ik))
14541454 then {
14551455 let il = assetBalance(this, ap())
14561456 if ((il == il))
14571457 then {
14581458 let im = invoke(ay(), "swap", [toBase58String(ap()), 0], [AttachedPayment(aB, ii)])
14591459 if ((im == im))
14601460 then {
14611461 let in = assetBalance(this, ap())
14621462 if ((in == in))
14631463 then {
14641464 let io = (in - il)
14651465 if ((io == io))
14661466 then io
14671467 else throw("Strict value is not equal to itself.")
14681468 }
14691469 else throw("Strict value is not equal to itself.")
14701470 }
14711471 else throw("Strict value is not equal to itself.")
14721472 }
14731473 else throw("Strict value is not equal to itself.")
14741474 }
14751475 else throw("Strict value is not equal to itself.")
14761476 }
14771477 else ii
14781478 if ((ij == ij))
14791479 then {
14801480 let ip = invoke(av(), "acceptPayment", [cq], [AttachedPayment(ap(), ij)])
14811481 if ((ip == ip))
14821482 then {
14831483 let iq = {
14841484 let cs = ip
14851485 if ($isInstanceOf(cs, "Int"))
14861486 then {
14871487 let gk = cs
14881488 gk
14891489 }
14901490 else throw("Invalid referrerFee")
14911491 }
14921492 let ir = (ij - iq)
14931493 let iF = cp(cq)
14941494 let ga = iF._1
14951495 let hH = iF._2
14961496 let hI = iF._3
14971497 let hJ = iF._4
14981498 let iG = go(ir)
14991499 let gq = iG._1
15001500 let gr = iG._2
15011501 let iB = if (if)
15021502 then {
15031503 let iB = invoke(as(), "addLocked", [false], [AttachedPayment(ap(), hk)])
15041504 if ((iB == iB))
15051505 then nil
15061506 else throw("Strict value is not equal to itself.")
15071507 }
15081508 else nil
15091509 if ((iB == iB))
15101510 then {
15111511 let iC = invoke(as(), "addFree", nil, [AttachedPayment(ap(), gr)])
15121512 if ((iC == iC))
15131513 then {
15141514 let iD = invoke(at(), "notifyFees", [cq, ir], nil)
15151515 if ((iD == iD))
15161516 then (((gO(cq, ga, (hH + hk), hI, hJ) ++ hn(gq)) ++ hm((bD() + hk))) ++ ho(fY, ch))
15171517 else throw("Strict value is not equal to itself.")
15181518 }
15191519 else throw("Strict value is not equal to itself.")
15201520 }
15211521 else throw("Strict value is not equal to itself.")
15221522 }
15231523 else throw("Strict value is not equal to itself.")
15241524 }
15251525 else throw("Strict value is not equal to itself.")
15261526 }
15271527 }
15281528 else throw("Strict value is not equal to itself.")
15291529 }
15301530
15311531
15321532
15331533 @Callable(ch)
15341534 func removeMargin (hk) = {
15351535 let hF = invoke(this, "syncTerminalPriceToOracle", nil, nil)
15361536 if ((hF == hF))
15371537 then {
15381538 let cq = toString(ch.caller)
15391539 if (if (if (if (if ((0 >= hk))
15401540 then true
15411541 else !(cx(cq)))
15421542 then true
15431543 else !(cy()))
15441544 then true
15451545 else cz())
15461546 then true
15471547 else dH())
15481548 then throw("Invalid removeMargin parameters")
15491549 else {
15501550 let iH = cp(cq)
15511551 let ga = iH._1
15521552 let hH = iH._2
15531553 let hI = iH._3
15541554 let hJ = iH._4
15551555 let iI = -(hk)
15561556 let iJ = de(ga, hH, hJ, iI)
15571557 let dn = iJ._1
15581558 let do = iJ._2
15591559 if ((do != 0))
15601560 then throw("Invalid removed margin amount")
15611561 else {
15621562 let iK = er(dn, do, hI)
15631563 if (!(ci(iK, bF(), true)))
15641564 then throw(((("Too much margin removed: " + toString(iK)) + " < ") + toString(bF())))
15651565 else {
15661566 let iL = toBase58String(ap())
15671567 let iM = ge(cq)
15681568 let iN = iM._1
15691569 let iO = iM._2
15701570 let iP = if ((hk > iN))
15711571 then iN
15721572 else hk
15731573 let iQ = if ((iN > hk))
15741574 then 0
15751575 else (hk - iN)
15761576 let iR = (iN - iP)
15771577 let iS = if ((iR > 0))
15781578 then nil
15791579 else gK(cq, iL)
15801580 let iT = if (((iP + iQ) != hk))
15811581 then throw(((((("toRepay=" + toString(iP)) + " + toWithdraw=") + toString(iQ)) + " != ") + toString(hk)))
15821582 else nil
15831583 if ((iT == iT))
15841584 then {
15851585 let iU = if ((iQ > 0))
15861586 then {
15871587 let iU = invoke(as(), "withdrawLocked", [iQ], nil)
15881588 if ((iU == iU))
15891589 then nil
15901590 else throw("Strict value is not equal to itself.")
15911591 }
15921592 else nil
15931593 if ((iU == iU))
15941594 then {
15951595 let iV = if ((iP > 0))
15961596 then {
15971597 let iW = invoke(ax(), "repay", [cq, iP, iO], nil)
15981598 if ((iW == iW))
15991599 then [ScriptTransfer(ch.caller, iP, fromBase58String(iO))]
16001600 else throw("Strict value is not equal to itself.")
16011601 }
16021602 else nil
16031603 if ((iV == iV))
16041604 then ((((gO(cq, ga, dn, hI, cn(ga)) ++ (if ((iQ > 0))
16051605 then hj(ch.caller, iQ)
16061606 else nil)) ++ hm((bD() - hk))) ++ iS) ++ iV)
16071607 else throw("Strict value is not equal to itself.")
16081608 }
16091609 else throw("Strict value is not equal to itself.")
16101610 }
16111611 else throw("Strict value is not equal to itself.")
16121612 }
16131613 }
16141614 }
16151615 }
16161616 else throw("Strict value is not equal to itself.")
16171617 }
16181618
16191619
16201620
16211621 @Callable(ch)
16221622 func closePosition (gP,iX) = {
16231623 let hF = invoke(this, "syncTerminalPriceToOracle", nil, nil)
16241624 if ((hF == hF))
16251625 then {
16261626 let cq = cg(ch)
16271627 let iY = valueOrErrorMessage(addressFromString(cq), "Invalid caller")
16281628 if (if (if (if (if (if (!(cx(cq)))
16291629 then true
16301630 else !(cy()))
16311631 then true
16321632 else cz())
16331633 then true
16341634 else (0 >= gP))
16351635 then true
16361636 else (0 > iX))
16371637 then true
16381638 else dH())
16391639 then throw("Invalid closePosition parameters")
16401640 else {
16411641 let iZ = cp(cq)
16421642 let ga = iZ._1
16431643 let hH = iZ._2
16441644 let hI = iZ._3
16451645 let hJ = iZ._4
16461646 let ja = if ((bb(ga) > gP))
16471647 then {
16481648 let hK = if ((ga > 0))
16491649 then aG
16501650 else aF
16511651 let hL = (hK == aF)
16521652 let jb = dz((ga > 0), gP, true)
16531653 let eH = jb._1
16541654 let cR = jb._2
16551655 let cS = jb._3
16561656 let eO = jb._4
16571657 let eG = if ((ga > 0))
16581658 then -(gP)
16591659 else gP
16601660 let jc = em(cq, aO)
16611661 let hO = jc._1
16621662 let el = jc._2
16631663 let jd = ev(cq, aO)
16641664 let je = aS(bb(eG), bb(ga))
16651665 let eL = aU(el, je)
16661666 let jf = de(ga, hH, hJ, el)._1
16671667 let jg = de(ga, hH, hJ, eL)
16681668 let eg = jg._1
16691669 let jh = jg._2
16701670 let dj = jg._3
16711671 let hT = (el - eL)
16721672 let hU = if ((ga > 0))
16731673 then ((hO - eH) - hT)
16741674 else ((hT + hO) - eH)
16751675 let hX = bb(hU)
16761676 let ji = if ((ga > 0))
16771677 then (aU((hX + hT), jd) - hT)
16781678 else (aU((hX - hT), jd) - hT)
16791679 let jj = (hI - hX)
16801680 let hV = (ga + eG)
16811681 let jk = cn(hV)
16821682 let eR = (bL() - jj)
16831683 if (if ((iX != 0))
16841684 then (iX > eH)
16851685 else false)
16861686 then throw(((("Limit error: " + toString(eH)) + " < ") + toString(iX)))
16871687 else $Tuple15(hV, ji, hX, jk, jh, eL, (jf - (ji + hT)), cR, cS, eO, eR, (cc() - (if ((hV > 0))
16881688 then bb(eG)
16891689 else 0)), (cb() - (if ((0 > hV))
16901690 then bb(eG)
16911691 else 0)), (bN() - (if ((hV > 0))
16921692 then jj
16931693 else 0)), (bM() - (if ((0 > hV))
16941694 then jj
16951695 else 0)))
16961696 }
16971697 else if ((gP > bb(ga)))
16981698 then throw("Invalid closePosition parameters")
16991699 else {
17001700 let jl = eI(cq, true)
17011701 let eH = jl._1
17021702 let jh = jl._2
17031703 let eL = jl._3
17041704 let eM = jl._4
17051705 let cR = jl._5
17061706 let cS = jl._6
17071707 let eO = jl._7
17081708 let eR = jl._8
17091709 let eh = jl._9
17101710 let eP = jl._10
17111711 let eQ = jl._11
17121712 let hZ = jl._12
17131713 let ia = jl._13
17141714 if (if ((iX != 0))
17151715 then (iX > eH)
17161716 else false)
17171717 then throw(((("Limit error: " + toString(eH)) + " < ") + toString(iX)))
17181718 else $Tuple15(0, 0, 0, 0, jh, eL, eM, cR, cS, eO, eR, eP, eQ, hZ, ia)
17191719 }
17201720 let hV = ja._1
17211721 let ji = ja._2
17221722 let hX = ja._3
17231723 let jk = ja._4
17241724 let jh = ja._5
17251725 let eL = ja._6
17261726 let eM = ja._7
17271727 let cR = ja._8
17281728 let cS = ja._9
17291729 let eO = ja._10
17301730 let eR = ja._11
17311731 let eP = ja._12
17321732 let eQ = ja._13
17331733 let hZ = ja._14
17341734 let ia = ja._15
17351735 if ((jh > 0))
17361736 then throw("Unable to close position with bad debt")
17371737 else {
17381738 let jm = bb(eM)
17391739 let jn = (bD() - jm)
17401740 let jo = if ((0 > jn))
17411741 then $Tuple2(0, bb(jn))
17421742 else $Tuple2(jn, 0)
17431743 let jp = jo._1
17441744 let jq = jo._2
17451745 let jr = ge(cq)
17461746 let iN = jr._1
17471747 let iO = jr._2
17481748 let js = if ((iN > 0))
17491749 then if ((jm >= iN))
17501750 then {
17511751 let iW = invoke(ax(), "repay", [cq, iN, iO], nil)
17521752 if ((iW == iW))
17531753 then $Tuple2([ScriptTransfer(iY, iN, fromBase58String(iO))], (jm - iN))
17541754 else throw("Strict value is not equal to itself.")
17551755 }
17561756 else {
17571757 let jt = invoke(ax(), "realizePartiallyAndClose", [cq, jm, iO], nil)
17581758 if ((jt == jt))
17591759 then $Tuple2([ScriptTransfer(iY, jm, fromBase58String(iO))], 0)
17601760 else throw("Strict value is not equal to itself.")
17611761 }
17621762 else $Tuple2(nil, jm)
17631763 if ((js == js))
17641764 then {
17651765 let ju = js._2
17661766 let jv = js._1
17671767 let jw = if ((ju > 0))
17681768 then {
17691769 let jw = invoke(as(), "withdrawLocked", [ju], nil)
17701770 if ((jw == jw))
17711771 then nil
17721772 else throw("Strict value is not equal to itself.")
17731773 }
17741774 else nil
17751775 if ((jw == jw))
17761776 then {
17771777 let ib = invoke(at(), "notifyNotional", [cq, 0], nil)
17781778 if ((ib == ib))
17791779 then (((((if ((hV == 0))
17801780 then hi(cq)
17811781 else gO(cq, hV, ji, hX, jk)) ++ hb(cR, cS, eO, eR, eP, eQ, hZ, ia)) ++ (if ((ju > 0))
17821782 then hj(iY, ju)
17831783 else nil)) ++ hm(jp)) ++ jv)
17841784 else throw("Strict value is not equal to itself.")
17851785 }
17861786 else throw("Strict value is not equal to itself.")
17871787 }
17881788 else throw("Strict value is not equal to itself.")
17891789 }
17901790 }
17911791 }
17921792 else throw("Strict value is not equal to itself.")
17931793 }
17941794
17951795
17961796
17971797 @Callable(ch)
17981798 func liquidate (cq) = {
17991799 let hF = invoke(this, "syncTerminalPriceToOracle", nil, nil)
18001800 if ((hF == hF))
18011801 then {
18021802 let jx = ev(cq, aO)
18031803 let iK = if (dX())
18041804 then {
18051805 let jy = ev(cq, aP)
18061806 bc(jx, jy)
18071807 }
18081808 else jx
18091809 if (if (if (if (if (!(ci(iK, bS(), false)))
18101810 then true
18111811 else !(cx(cq)))
18121812 then true
18131813 else !(cy()))
18141814 then true
18151815 else cz())
18161816 then true
18171817 else dH())
18181818 then throw("Unable to liquidate")
18191819 else if (if (if ((jx > bT()))
18201820 then (bU() > 0)
18211821 else false)
18221822 then (aL > bU())
18231823 else false)
18241824 then {
18251825 let jz = cp(cq)
18261826 let ga = jz._1
18271827 let hH = jz._2
18281828 let hI = jz._3
18291829 let hJ = jz._4
18301830 let hK = if ((ga > 0))
18311831 then aG
18321832 else aF
18331833 let hL = (hK == aF)
18341834 let eH = eB(cq, ga)
18351835 let jA = em(cq, aO)
18361836 let hO = jA._1
18371837 let el = jA._2
18381838 let jB = cQ(hL, eH)
18391839 let eG = jB._1
18401840 let cR = jB._2
18411841 let cS = jB._3
18421842 let eO = jB._4
18431843 let jC = aS(bb(eG), bb(ga))
18441844 let eL = aU(el, jC)
18451845 let jD = de(ga, hH, hJ, eL)
18461846 let dn = jD._1
18471847 let do = jD._2
18481848 let dj = jD._3
18491849 let hT = (el - eL)
18501850 let hU = if ((ga > 0))
18511851 then ((hO - eH) - hT)
18521852 else ((hT + hO) - eH)
18531853 let jE = aU(eH, bT())
18541854 let jF = (jE / 2)
18551855 let gr = (jE - jF)
18561856 let ji = (dn - jE)
18571857 let hV = (ga + eG)
18581858 let hX = bb(hU)
18591859 let jj = (hI - hX)
18601860 let jk = cn(hV)
18611861 let eR = (bL() - jj)
18621862 let jn = (bD() - jE)
18631863 let jG = if ((0 > jn))
18641864 then $Tuple2(0, bb(jn))
18651865 else $Tuple2(jn, 0)
18661866 let jH = jG._1
18671867 let jq = jG._2
18681868 let jI = ge(cq)
18691869 let iN = jI._1
18701870 let iO = jI._2
18711871 let jJ = if ((iN > 0))
18721872 then {
18731873 let jK = aU(iN, jC)
18741874 let jt = invoke(ax(), "realizePartially", [cq, iO, jK], nil)
18751875 if ((jt == jt))
18761876 then nil
18771877 else throw("Strict value is not equal to itself.")
18781878 }
18791879 else nil
18801880 if ((jJ == jJ))
18811881 then {
18821882 let jw = invoke(as(), "withdrawLocked", [jE], nil)
18831883 if ((jw == jw))
18841884 then {
18851885 let iC = invoke(as(), "addFree", nil, [AttachedPayment(ap(), gr)])
18861886 if ((iC == iC))
18871887 then {
18881888 let ib = invoke(at(), "notifyNotional", [cq, hX], nil)
18891889 if ((ib == ib))
18901890 then (((gO(cq, hV, ji, hX, jk) ++ hb(cR, cS, eO, eR, (cc() - (if ((hV > 0))
18911891 then bb(eG)
18921892 else 0)), (cb() - (if ((0 > hV))
18931893 then bb(eG)
18941894 else 0)), (bN() - (if ((hV > 0))
18951895 then jj
18961896 else 0)), (bM() - (if ((0 > hV))
18971897 then jj
18981898 else 0)))) ++ hj(ch.caller, jF)) ++ hm(jH))
18991899 else throw("Strict value is not equal to itself.")
19001900 }
19011901 else throw("Strict value is not equal to itself.")
19021902 }
19031903 else throw("Strict value is not equal to itself.")
19041904 }
19051905 else throw("Strict value is not equal to itself.")
19061906 }
19071907 else {
19081908 let jL = eI(cq, false)
19091909 let eg = jL._1
19101910 let do = jL._2
19111911 let eh = jL._3
19121912 let ei = jL._4
19131913 let cR = jL._5
19141914 let cS = jL._6
19151915 let eO = jL._7
19161916 let eR = jL._8
19171917 let eH = jL._9
19181918 let eP = jL._10
19191919 let eQ = jL._11
19201920 let hZ = jL._12
19211921 let ia = jL._13
19221922 let jE = aU(eH, bT())
19231923 let jF = (jE / 2)
19241924 let gr = (jE - jF)
19251925 let jn = (bD() - jE)
19261926 let jM = if ((0 > jn))
19271927 then $Tuple2(0, bb(jn))
19281928 else $Tuple2(jn, 0)
19291929 let jH = jM._1
19301930 let jq = jM._2
19311931 let jN = ge(cq)
19321932 let iN = jN._1
19331933 let iO = jN._2
19341934 let jJ = if ((iN > 0))
19351935 then {
19361936 let jt = invoke(ax(), "realizePartiallyAndClose", [cq, 0, iO], nil)
19371937 if ((jt == jt))
19381938 then nil
19391939 else throw("Strict value is not equal to itself.")
19401940 }
19411941 else nil
19421942 if ((jJ == jJ))
19431943 then {
19441944 let gk = if ((do > 0))
19451945 then {
19461946 let jO = invoke(as(), "exchangeFreeAndLocked", [do], nil)
19471947 if ((jO == jO))
19481948 then nil
19491949 else throw("Strict value is not equal to itself.")
19501950 }
19511951 else nil
19521952 if ((gk == gk))
19531953 then {
19541954 let jw = invoke(as(), "withdrawLocked", [jE], nil)
19551955 if ((jw == jw))
19561956 then {
19571957 let iC = invoke(as(), "addFree", nil, [AttachedPayment(ap(), gr)])
19581958 if ((iC == iC))
19591959 then {
19601960 let ib = invoke(at(), "notifyNotional", [cq, 0], nil)
19611961 if ((ib == ib))
19621962 then (((hi(cq) ++ hb(cR, cS, eO, eR, eP, eQ, hZ, ia)) ++ hj(ch.caller, jF)) ++ hm(jH))
19631963 else throw("Strict value is not equal to itself.")
19641964 }
19651965 else throw("Strict value is not equal to itself.")
19661966 }
19671967 else throw("Strict value is not equal to itself.")
19681968 }
19691969 else throw("Strict value is not equal to itself.")
19701970 }
19711971 else throw("Strict value is not equal to itself.")
19721972 }
19731973 }
19741974 else throw("Strict value is not equal to itself.")
19751975 }
19761976
19771977
19781978
19791979 @Callable(ch)
19801980 func payFunding () = {
19811981 let hF = invoke(this, "syncTerminalPriceToOracle", nil, nil)
19821982 if ((hF == hF))
19831983 then {
19841984 let jP = bO()
19851985 if (if (if ((jP > lastBlock.timestamp))
19861986 then true
19871987 else !(cy()))
19881988 then true
19891989 else cz())
19901990 then throw(((("Invalid funding block timestamp: " + toString(lastBlock.timestamp)) + " < ") + toString(jP)))
19911991 else {
19921992 let fK = dA()
19931993 let jQ = fJ()
19941994 let fN = jQ._1
19951995 let fO = jQ._2
19961996 gE((jP + bR()), (bZ() + fO), (ca() + fN), aS(fO, fK), aS(fN, fK))
19971997 }
19981998 }
19991999 else throw("Strict value is not equal to itself.")
20002000 }
20012001
20022002
20032003
20042004 @Callable(ch)
20052005 func syncTerminalPriceToOracle () = {
20062006 let cI = bG()
20072007 let cK = bH()
20082008 let jR = fF(dA(), cI, cK)
20092009 let hv = jR._1
20102010 let hw = jR._2
20112011 let eM = jR._3
20122012 let hx = if ((eM != 0))
20132013 then {
20142014 let hx = invoke(as(), "exchangeFreeAndLocked", [eM], nil)
20152015 if ((hx == hx))
20162016 then nil
20172017 else throw("Strict value is not equal to itself.")
20182018 }
20192019 else nil
20202020 if ((hx == hx))
20212021 then (ha(hv, hw) ++ gS(aS(aU(cI, hv), aU(cK, hw))))
20222022 else throw("Strict value is not equal to itself.")
20232023 }
20242024
20252025
20262026
20272027 @Callable(ch)
20282028 func view_calcRemainMarginWithFundingPayment (cq) = {
20292029 let hF = invoke(this, "syncTerminalPriceToOracle", nil, nil)
20302030 if ((hF == hF))
20312031 then {
20322032 let jS = cp(cq)
20332033 let ct = jS._1
20342034 let eo = jS._2
20352035 let ex = jS._3
20362036 let eq = jS._4
20372037 let jT = em(cq, aO)
20382038 let ed = jT._1
20392039 let el = jT._2
20402040 let jU = de(ct, eo, eq, el)
20412041 let dn = jU._1
20422042 let do = jU._2
20432043 let dj = jU._3
20442044 throw((((((aQ(dn) + aQ(dj)) + aQ(eA(cq))) + aQ(el)) + aQ(do)) + aQ(ed)))
20452045 }
20462046 else throw("Strict value is not equal to itself.")
20472047 }
20482048
20492049
20502050
20512051 @Callable(ch)
20522052 func view_getPegAdjustCost (gT) = {
20532053 let cI = bG()
20542054 let cK = bH()
20552055 let fE = fF(gT, cI, cK)
20562056 throw(toString(fE._3))
20572057 }
20582058
20592059
20602060
20612061 @Callable(ch)
20622062 func view_getTerminalAmmPrice () = {
20632063 let jV = fi()
20642064 let fm = jV._1
20652065 let fn = jV._2
20662066 let hq = aS(aU(fm, bI()), aU(fn, bJ()))
20672067 throw(toString(hq))
20682068 }
20692069
20702070
20712071
20722072 @Callable(ch)
20732073 func view_getFunding () = {
20742074 let fK = dA()
20752075 let jW = fJ()
20762076 let fN = jW._1
20772077 let fO = jW._2
20782078 let jX = aS(fO, fK)
20792079 let jY = aS(fN, fK)
20802080 throw((((aQ(jX) + aQ(jY)) + aQ(eS())) + aQ(dA())))
20812081 }
20822082
20832083
20842084
20852085 @Callable(ch)
20862086 func view_getBorrowedByTrader (cq) = {
20872087 let jZ = ge(cq)
20882088 let iN = jZ._1
20892089 let iO = jZ._2
20902090 throw((aQ(iN) + iO))
20912091 }
20922092
20932093
20942094
20952095 @Callable(ch)
20962096 func computeSpotPrice () = {
20972097 let fE = dW()
20982098 $Tuple2(nil, fE)
20992099 }
21002100
21012101
21022102
21032103 @Callable(ch)
21042104 func computeFeeForTraderWithArtifact (cq,fQ) = {
21052105 let fE = gh(cq, fQ)
21062106 $Tuple2(nil, fE)
21072107 }
21082108
21092109
21102110 @Verifier(ka)
21112111 func kb () = sigVerify(ka.bodyBytes, ka.proofs[0], ao())
21122112

github/deemru/w8io/169f3d6 
159.65 ms