tx · 8B2fhS4Zq69gjGusVTnD4w3eLioHdYYZYHMc6q1rNf34

3NDCyBG5q85JuaRiigUeEtainyjCQT3XpZm:  -0.10300000 Waves

2024.09.15 14:50 [3284739] smart account 3NDCyBG5q85JuaRiigUeEtainyjCQT3XpZm > SELF 0.00000000 Waves

{ "type": 13, "id": "8B2fhS4Zq69gjGusVTnD4w3eLioHdYYZYHMc6q1rNf34", "fee": 10300000, "feeAssetId": null, "timestamp": 1726400969118, "version": 2, "chainId": 84, "sender": "3NDCyBG5q85JuaRiigUeEtainyjCQT3XpZm", "senderPublicKey": "EVooykMNV691Venwp1dHUTBd7KWequzUcda57Wd3LQEX", "proofs": [ "4jSEXzwhG1kbYJRJFG3qUVu1wjV41V5JFBQpgpHBVpPqGd2jVn8sbnvZpdhX5QV8kpu7UKMgBRhqAAKMwwPaRCZr" ], "script": "base64:BgLnAQgCEgMKAQgSBAoCCAESAwoBBBIAEgMKAQgSBAoCCAgSBAoCCAgSAwoBCBIAEgASAwoBCBIECgIICBIECgIICBIECgIBCBIECgIBCBIECgICAhIFCgMBAQESABIECgIICBIAEgMKAQESABIECgICAhIAEgMKAQgSBAoCCAgSAwoBGBIECgIICBIECgIICBIFCgMICAgSBAoCCAgSBwoFAQEBAQESAwoBARIFCgMBAQgSAwoBCBIDCgEIEgASBAoCCAESBAoCCAESAwoBCBIDCgEIEgASABIDCgEIEgMKAQgSBAoCAgISAJ4CABZLU19TRVBBUkFURV9QVUJMSUNfS0VZBwAYS1NfQUxMT1dfQklHX0lORlJBX01FUkdFBwATS1NfQUxMT1dfUk9CT19EVUNLUwcACkRBWV9NSUxMSVMAgLiZKQAFY2hhaW4JAMkBAgkAygECCAUEdGhpcwVieXRlcwABAAEAA3B1YgQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMAMFFktTX1NFUEFSQVRFX1BVQkxJQ19LRVkBIKsXV48VZ+NZVEGw1nLrZpvEo9NmXtWZhlDfmDcfsgkIASBPU+IaP1So1p1SThMdRidVvbNT8yx7yVRUsP9DwbQUKAMJAAACAQFUBQckbWF0Y2gwASBPU+IaP1So1p1SThMdRidVvbNT8yx7yVRUsP9DwbQUKAkAAgECDVVua25vd24gY2hhaW4AC3VzZHRBc3NldElkBAckbWF0Y2gwBQVjaGFpbgMJAAACAQFXBQckbWF0Y2gwASCE2nqyCAM/TtG7yo7ui5O8yYLdC136B5ao1CP5qA//uQMJAAACAQFUBQckbWF0Y2gwASBVsdifcoeC7+XjW42sBatl3ppDoS8WuwXzGreHpfHFGAkAAgECDVVua25vd24gY2hhaW4AFWRlZmF1bHRSZXN0QWRkcmVzc1N0cgQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMAIjM1BRQ3V2RmJ2aDRMa1BVbnJuVTF6M2puYkExcDltM1dOaHYDCQAAAgEBVAUHJG1hdGNoMAIjM011bWtHR3p0Q0tBWHBXRHF4a2Rkb2ZxWFNVYnFRa3ZTSnkJAAIBAg1Vbmtub3duIGNoYWluABBhY3JlczJBZGRyZXNzU3RyBAckbWF0Y2gwBQVjaGFpbgMJAAACAQFXBQckbWF0Y2gwAiMzUDRVSDNUOW5YcE1OcFVtU21RalBtRXozRzg1dDN6bjZlQQMJAAACAQFUBQckbWF0Y2gwAiMzTkJQeDFGY2l1M0pRTkVHWjIxalNuVGR1dExOR0dCVVNYaAkAAgECDVVua25vd24gY2hhaW4AEUluZnJhVXBncmFkZUNvc3RTBAckbWF0Y2gwBQVjaGFpbgMJAAACAQFXBQckbWF0Y2gwAIDIr6AlAwkAAAIBAVQFByRtYXRjaDAAgMLXLwkAAgECDVVua25vd24gY2hhaW4ADmFyYml0cmFnZURlbGF5BAckbWF0Y2gwBQVjaGFpbgMJAAACAQFXBQckbWF0Y2gwBQpEQVlfTUlMTElTAwkAAAIBAVQFByRtYXRjaDAA4NQDCQACAQINVW5rbm93biBjaGFpbgADU0VQAgJfXwAFTVVMVDYAwIQ9AAVNVUxUOACAwtcvAAVTU0laRQAZAAVNU0laRQBkAAVMU0laRQDhAQAGWExTSVpFAJADAAdYWExTSVpFAPEEAAVJVEVSNgkAzAgCAAAJAMwIAgABCQDMCAIAAgkAzAgCAAMJAMwIAgAECQDMCAIABQUDbmlsAQ9nZXRTdHJpbmdPckZhaWwCB2FkZHJlc3MDa2V5CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUHYWRkcmVzcwUDa2V5CQC5CQIJAMwIAgIKbWFuZGF0b3J5IAkAzAgCCQClCAEFB2FkZHJlc3MJAMwIAgIBLgkAzAgCBQNrZXkJAMwIAgIPIGlzIG5vdCBkZWZpbmVkBQNuaWwCAAARSWR4Q2ZnU3Rha2luZ0RhcHAAAQARSWR4Q2ZnRWNvbm9teURhcHAAAgAUSWR4Q2ZnR292ZXJuYW5jZURhcHAAAwANSWR4Q2ZnV2xnRGFwcAAEABRJZHhDZmdUb3VybmFtZW50RGFwcAAHAA9JZHhDZmdBY3Jlc0RhcHAACAEKa2V5UmVzdENmZwACDiVzX19yZXN0Q29uZmlnAQ5rZXlSZXN0QWRkcmVzcwACDCVzX19yZXN0QWRkcgERcmVhZFJlc3RDZmdPckZhaWwBBHJlc3QJALwJAgkBD2dldFN0cmluZ09yRmFpbAIFBHJlc3QJAQprZXlSZXN0Q2ZnAAUDU0VQARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCB3Jlc3RDZmcDaWR4CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQdyZXN0Q2ZnBQNpZHgJAKwCAgIqUmVzdCBjZmcgZG9lc24ndCBjb250YWluIGFkZHJlc3MgYXQgaW5kZXggCQCkAwEFA2lkeAAMcmVzdENvbnRyYWN0CQERQGV4dHJOYXRpdmUoMTA2MikBCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMJAQ5rZXlSZXN0QWRkcmVzcwAFFWRlZmF1bHRSZXN0QWRkcmVzc1N0cgAHcmVzdENmZwkBEXJlYWRSZXN0Q2ZnT3JGYWlsAQUMcmVzdENvbnRyYWN0AA9zdGFraW5nQ29udHJhY3QJARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCBQdyZXN0Q2ZnBRFJZHhDZmdTdGFraW5nRGFwcAAPZWNvbm9teUNvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUHcmVzdENmZwURSWR4Q2ZnRWNvbm9teURhcHAAC2dvdkNvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUHcmVzdENmZwUUSWR4Q2ZnR292ZXJuYW5jZURhcHAAC3dsZ0NvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUHcmVzdENmZwUNSWR4Q2ZnV2xnRGFwcAASdG91cm5hbWVudENvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUHcmVzdENmZwUUSWR4Q2ZnVG91cm5hbWVudERhcHAADWFjcmVzQ29udHJhY3QJARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCBQdyZXN0Q2ZnBQ9JZHhDZmdBY3Jlc0RhcHAACnJlY0xhbmROdW0AAAALcmVjTGFuZFNpemUAAQALcmVjVGVycmFpbnMAAgAMcmVjQ29udGluZW50AAMADXdsZ0Fzc2V0SWRLZXkCC3dsZ19hc3NldElkAAp3bGdBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJwIAgULd2xnQ29udHJhY3QFDXdsZ0Fzc2V0SWRLZXkCGFdMR09MRCBpcyBub3QgaXNzdWVkIHlldAAPYWNyZXNBc3NldElkS2V5AgxhY3Jlc0Fzc2V0SWQADGFjcmVzQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCcCAIFDWFjcmVzQ29udHJhY3QFD2FjcmVzQXNzZXRJZEtleQIXQUNSRVMgaXMgbm90IGlzc3VlZCB5ZXQAC3JhbmRvbURlbGF5AAIBCWtleUNvbW1pdAEHYWRkcmVzcwkArAICAg9maW5pc2hCbG9ja0Zvcl8FB2FkZHJlc3MBEWtleVJlc1Byb3BvcnRpb25zAAITcmVzVHlwZXNQcm9wb3J0aW9ucwEWa2V5UmVzVHlwZXNCeUNvbnRpbmVudAEJY29udGluZW50CQCsAgICFHJlc1R5cGVzQnlDb250aW5lbnRfBQljb250aW5lbnQBFWtleVN0YWtlZExhbmRzQnlPd25lcgEJb3duZXJBZGRyCQCsAgICE3N0YWtlZExhbmRzQnlPd25lcl8FCW93bmVyQWRkcgEWa2V5U3Rha2VkUGllY2VzQnlPd25lcgEJb3duZXJBZGRyCQCsAgICFHN0YWtlZFBpZWNlc0J5T3duZXJfBQlvd25lckFkZHIBCGFzU3RyaW5nAQF2BAckbWF0Y2gwBQF2AwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAUBcwkAAgECGGZhaWwgdG8gY2FzdCBpbnRvIFN0cmluZwEFYXNJbnQBAXYEByRtYXRjaDAFAXYDCQABAgUHJG1hdGNoMAIDSW50BAFuBQckbWF0Y2gwBQFuCQACAQIVZmFpbCB0byBjYXN0IGludG8gSW50AQlhc0FueUxpc3QBAXYEByRtYXRjaDAFAXYDCQABAgUHJG1hdGNoMAIJTGlzdFtBbnldBAFsBQckbWF0Y2gwBQFsCQACAQIbZmFpbCB0byBjYXN0IGludG8gTGlzdFtBbnldAQlhc0Jvb2xlYW4BAXYEByRtYXRjaDAFAXYDCQABAgUHJG1hdGNoMAIHQm9vbGVhbgQBcwUHJG1hdGNoMAUBcwkAAgECGWZhaWwgdG8gY2FzdCBpbnRvIEJvb2xlYW4BD251bVBpZWNlc0J5U2l6ZQEIbGFuZFNpemUEByRtYXRjaDAFCGxhbmRTaXplAwkAAAICAVMFByRtYXRjaDAFBVNTSVpFAwkAAAICAU0FByRtYXRjaDAFBU1TSVpFAwkAAAICAUwFByRtYXRjaDAFBUxTSVpFAwkAAAICAlhMBQckbWF0Y2gwBQZYTFNJWkUDCQAAAgIDWFhMBQckbWF0Y2gwBQdYWExTSVpFCQACAQIRVW5rbm93biBsYW5kIHNpemUBB2lzRGlnaXQBAXMJAQlpc0RlZmluZWQBCQC2CQEFAXMBCmtleUJsb2NrZWQAAhBjb250cmFjdHNCbG9ja2VkARFrZXlMYXN0VHhJZEJ5VXNlcgEEYWRkcgkArAICAg9sYXN0VHhJZEJ5VXNlcl8FBGFkZHIBCmZpeGVkUG9pbnQCA3ZhbAhkZWNpbWFscwQGdGVuUG93CQBsBgAKAAAFCGRlY2ltYWxzAAAAAAUERE9XTgQHbG93UGFydAkApAMBCQBqAgUDdmFsBQZ0ZW5Qb3cEBnplcm9lcwkAsAICCQCkAwEFBnRlblBvdwkAZAIAAQkAsQIBBQdsb3dQYXJ0CQCsAgIJAKwCAgkArAICCQCkAwEJAGkCBQN2YWwFBnRlblBvdwIBLgUGemVyb2VzBQdsb3dQYXJ0AQ9nZXRSYW5kb21OdW1iZXIDCG1heFZhbHVlBHNhbHQHZW50cm9weQMJAGcCAAAFCG1heFZhbHVlCQACAQIWbWF4VmFsdWUgc2hvdWxkIGJlID4gMAQKcmFuZG9tSGFzaAkA9wMBCQDLAQIFBHNhbHQFB2VudHJvcHkJAGoCCQCxCQEFCnJhbmRvbUhhc2gFCG1heFZhbHVlAQlmaW5hbFRpbWUACQCXAwEJAMwIAggFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgCY0IGrpDIFA25pbAAKTEFORFBSRUZJWAIETEFORAAKRFVDS1BSRUZJWAIERFVDSwALUk9CT19QUkVGSVgCBFJPQk8ACkFSVFBSRVNBTEUCB1BSRVNBTEUABk5VTVJFUwAGABhNQVhfTEFORFNfU1RBS0VEX0JZX1VTRVIAGQAPREFJTFlSRVNCWVBJRUNFAID40gEADFdITVVMVElQTElFUgCAyK+gJQAPREVGQVVMVExPQ0FUSU9OAg9BZnJpY2FfRl9BZnJpY2EAEFJFU09VUkNFUFJJQ0VNSU4A1bUCAApFU1NFTExDT0VGAAoAFU1JTl9VU0RUX0ZFRV9ERUxJVkVSWQDQhgMAFVVTRFQyQUNSRVNfTVVMVElQTElFUgAKABJNSU5fV0xHT0xEX1JPQkJFUlkAgMLXLwAWQUxMT1dFRF9GUkVFX1JPQkJFUklFUwAAABlBQ1JFU19GT1JfUk9CQkVSWV9BVFRFTVBUAICEr18AF0FMTE9XRURfRlJFRV9ERUxJVkVSSUVTAAAAGkFDUkVTX0ZPUl9ERUxJVkVSWV9BVFRFTVBUAICEr18ACXByb2RUeXBlcwkAzAgCAhBGaXJzdCBBaWQgS2l0IEwxCQDMCAICEEZpcnN0IEFpZCBLaXQgTDIJAMwIAgIQRmlyc3QgQWlkIEtpdCBMMwkAzAgCAgtCYWNrcGFjayBMMQkAzAgCAgtCYWNrcGFjayBMMgkAzAgCAgtCYWNrcGFjayBMMwkAzAgCAg5Gb29kIFJhdGlvbiBMMQkAzAgCAg5Gb29kIFJhdGlvbiBMMgkAzAgCAg5Gb29kIFJhdGlvbiBMMwkAzAgCAgtKZXQgUGFjayBMMQkAzAgCAgtKZXQgUGFjayBMMgkAzAgCAgtKZXQgUGFjayBMMwkAzAgCAglTaGllbGQgTDEJAMwIAgIJU2hpZWxkIEwyCQDMCAICCVNoaWVsZCBMMwkAzAgCAgdNaW5lIEwxCQDMCAICB01pbmUgTDIJAMwIAgIHTWluZSBMMwkAzAgCAgdUcmFwIEwxCQDMCAICB1RyYXAgTDIJAMwIAgIHVHJhcCBMMwkAzAgCAgtCb29tLURvZyBMMQkAzAgCAgtCb29tLURvZyBMMgkAzAgCAgtCb29tLURvZyBMMwUDbmlsAApjb250aW5lbnRzCQDMCAICCEFtZXJpY2FzCQDMCAICBkV1cm9wZQkAzAgCAgRBc2lhCQDMCAICBkFmcmljYQkAzAgCAgdPY2VhbmlhBQNuaWwACUNPRUZGMk1BVACAreIEABBwcm9kdWN0aW9uTWF0cml4CQDMCAICJThfOF84XzE3XzE3XzQyXzEyXzBfMzBfMCwwLDAsMCwwLDAsMF8JAMwIAgIlOF84XzhfMTdfMTdfNDJfMjRfMF82MF8wLDAsNSwyLDAsMCwwXwkAzAgCAic4XzhfOF8xN18xN180Ml8zNl8wXzEyMF8wLDAsMTAsNCwwLDAsMF8JAMwIAgIpOF8xOV8xOV84XzI3XzE5XzI2XzFfMjBfMCwwLDAsMCwwLDAsMF8wMDEJAMwIAgIpOF8xOV8xOV84XzI3XzE5XzUyXzFfNDBfMCwwLDAsMCwwLDAsMF8wMDEJAMwIAgIpOF8xOV8xOV84XzI3XzE5Xzc4XzFfODBfMCwwLDAsMCwwLDAsMF8wMDEJAMwIAgIlOF84XzhfOF84XzYwXzEzXzJfMl8wLDAsMCwwLDAsMCwwXzAxMQkAzAgCAiU4XzhfOF84XzhfNjBfMjZfMl80XzAsMCwwLDAsMCwwLDBfMDExCQDMCAICJThfOF84XzhfOF82MF8zOV8yXzhfMCwwLDAsMCwwLDAsMF8wMTEJAMwIAgIpMzBfMzBfM18xN18xN18zXzMwXzNfMzBfMCwwLDAsMCwwLDAsMF8xMTEJAMwIAgIpMzBfMzBfM18xN18xN18zXzYwXzNfNTBfMCwwLDAsMCwwLDAsMF8xMTEJAMwIAgIpMzBfMzBfM18xN18xN18zXzkwXzNfNzBfMCwwLDAsMCwwLDAsMF8xMTEJAMwIAgIrMThfMThfMTBfMThfMThfMThfMTFfNF8xMF8wLDAsMCwwLDAsMCwwXzIwMQkAzAgCAisxOF8xOF8xMF8xOF8xOF8xOF8yMl80XzIwXzAsMCwwLDAsMCwwLDBfMjAxCQDMCAICKzE4XzE4XzEwXzE4XzE4XzE4XzMzXzRfMzBfMCwwLDAsMCwwLDAsMF8yMDEJAMwIAgIqNF8xM18yMl80XzM1XzIyXzIzXzBfNTAsMSwwXzAsMCwwLDAsMCwwLDBfCQDMCAICKjRfMTNfMjJfNF8zNV8yMl80Nl8wXzUwLDEsMV8wLDIsNSwwLDAsMCwwXwkAzAgCAis0XzEzXzIyXzRfMzVfMjJfNjlfMF81MCwyLDFfMCw1LDEwLDAsMCwwLDBfCQDMCAICKjVfMjVfNDBfNV8xMF8xNV8yMF8xXzMwLDEsMV8wLDAsMCwwLDAsMCwwXwkAzAgCAio1XzI1XzQwXzVfMTBfMTVfNDBfMV8zMCwxLDJfMiwxLDMsMCwwLDAsMF8JAMwIAgIqNV8yNV80MF81XzEwXzE1XzYwXzFfMzAsMSwzXzUsMiw4LDAsMCwwLDBfCQDMCAICJzIzXzIzXzVfMjBfMjNfNl8zNV8yXzEwMF8wLDAsMCwwLDAsMCwwXwkAzAgCAicyM18yM181XzIwXzIzXzZfNzBfMl8xNTBfMCwwLDAsMCwwLDAsMF8JAMwIAgIoMjNfMjNfNV8yMF8yM182XzEwNV8yXzIwMF8wLDAsMCwwLDAsMCwwXwUDbmlsAAlySWR4Q29lZmYABgAKcklkeEVmZmVjdAAIABBySWR4UmVxdWlyZW1lbnRzAAkACXJJZHhTbG90cwAKAA5QUk9EVUNUUEtHU0laRQAKAAt3aElkeExldmVscwAAAAh3aElkeFJlcwABAAh3aElkeE1hdAACAAl3aElkeFByb2QAAwAJd2hJZHhMT0ZUAAQACXZvbExvY2tlZAAAAAt2b2xPY2N1cGllZAABAAd2b2xGcmVlAAIACHZvbFRvdGFsAAMACmJwSWR4TGV2ZWwAAAAIYnBJZHhSZXMAAQAIYnBJZHhNYXQAAgAJYnBJZHhQcm9kAAMAD2xvY0lkeENvbnRpbmVudAAAAApsb2NJZHhUeXBlAAEACGxvY0lkeElkAAIBFWtleUxhbmRBc3NldElkVG9Pd25lcgEHYXNzZXRJZAkArAICAgNub18FB2Fzc2V0SWQBGmtleUxhbmRBc3NldElkVG9DdXN0b21OYW1lAQdhc3NldElkCQCsAgICBWxjbmFfBQdhc3NldElkARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQdhc3NldElkCQCsAgICA3N0XwUHYXNzZXRJZAEga2V5TGFuZEFydFN0YXR1c0J5VHlwZUFuZEFzc2V0SWQCBHR5cGUHYXNzZXRJZAkAuQkCCQDMCAICA2xhcwkAzAgCBQR0eXBlCQDMCAIFB2Fzc2V0SWQFA25pbAIBXwEia2V5U3Rha2VkVGltZUJ5VHlwZUFzc2V0SWRBbmRPd25lcgMHbmZ0VHlwZQdhc3NldElkCW93bmVyQWRkcgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICBnN0dGFvXwUHbmZ0VHlwZQIBXwUHYXNzZXRJZAIBXwUJb3duZXJBZGRyARJrZXlXYXJlaG91c2VCeUxhbmQBC2xhbmRBc3NldElkCQCsAgICA3doXwULbGFuZEFzc2V0SWQBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBB2Fzc2V0SWQJAKwCAgILaW5mcmFMZXZlbF8FB2Fzc2V0SWQBGmtleUR1Y2tBc3NldElkVG9DdXN0b21OYW1lAQdhc3NldElkCQCsAgICGGR1Y2tDdXN0b21OYW1lQnlBc3NldElkXwUHYXNzZXRJZAEWa2V5QWRkcmVzc1RvQ3VzdG9tTmFtZQEEYWRkcgkArAICAhhhY2NvdW50Q3VzdG9tTmFtZUJ5QWRkcl8FBGFkZHIBD2tleUFkZHJlc3NSZWZCeQEEYWRkcgkArAICAglhY2NSZWZCeV8FBGFkZHIBHGtleU9uYm9hcmRBcnRBY3RpdmF0ZWRPbkR1Y2sBC2R1Y2tBc3NldElkCQCsAgICGm9uYm9hcmRBcnRBY3RpdmF0ZWRPbkR1Y2tfBQtkdWNrQXNzZXRJZAEca2V5T25ib2FyZEFydER1Y2tBY3RpdmF0ZWRCeQEEYWRkcgkArAICAhpvbmJvYXJkQXJ0QWN0aXZhdGVkRHVja0J5XwUEYWRkcgETa2V5QWRkcmVzc1JlZmVycmFscwEEYWRkcgkArAICAg1hY2NSZWZlcnJhbHNfBQRhZGRyARBrZXlEdWNrSWRUb093bmVyAQdhc3NldElkCQCsAgICCmR1Y2tPd25lcl8FB2Fzc2V0SWQBFGtleVN0YWtlZER1Y2tCeU93bmVyAQlvd25lckFkZHIJAKwCAgISc3Rha2VkRHVja0J5T3duZXJfBQlvd25lckFkZHIBEWtleUJhY2twYWNrQnlEdWNrAQtkdWNrQXNzZXRJZAkArAICAgliYWNrUGFja18FC2R1Y2tBc3NldElkAQ9rZXlEdWNrTG9jYXRpb24BC2R1Y2tBc3NldElkCQCsAgICDWR1Y2tMb2NhdGlvbl8FC2R1Y2tBc3NldElkARVrZXlVc2VyR3dsUmVsZWFzZVRpbWUBCHVzZXJBZGRyCQCsAgICGiVzJXNfX3VzZXJHd2xSZWxlYXNlVGltZV9fBQh1c2VyQWRkcgEOa2V5RXNXYXJlaG91c2UAAhplbWVyZ2VuY3lXYXJlaG91c2VQcm9kdWN0cwAPZGVsaXZlcnlGdW5kS2V5AgxkZWxpdmVyeUZ1bmQADWxhc3RUb3VySWRLZXkCDiVzX19sYXN0VG91cklkARVrZXlUb3VyU3RhdGljRGF0YUJ5SWQBA3RJZAkArAICAhYlcyVkX190b3VyU3RhdGljRGF0YV9fCQCkAwEFA3RJZAEWa2V5VG91ckR5bmFtaWNEYXRhQnlJZAEDdElkCQCsAgICFyVzJWRfX3RvdXJEeW5hbWljRGF0YV9fCQCkAwEFA3RJZAEaa2V5QmVzdFJlc3VsdEJ5VG91ckFuZER1Y2sCA3RJZAtkdWNrQXNzZXRJZAkAuQkCCQDMCAICHyVzJWQlc19fYmVzdFJlc3VsdEJ5VG91ckFuZER1Y2sJAMwIAgkApAMBBQN0SWQJAMwIAgULZHVja0Fzc2V0SWQFA25pbAICX18ACWlkeFN0YXRpYwAAAAppZHhEeW5hbWljAAEACnRTdGF0aWNFbmQABgAOdER5bmFtaWNTdGF0dXMAAQELZ2V0VG91ckRhdGECDHRvdXJDb250cmFjdAN0SWQEBnN0YXRpYwkAtQkCCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUMdG91ckNvbnRyYWN0CQEVa2V5VG91clN0YXRpY0RhdGFCeUlkAQUDdElkCQCsAgIJAKwCAgIZRXJyb3IgcmVhZGluZyB0b3VybmFtZW50IAkApAMBBQN0SWQCBSBkYXRhAgJfXwQHZHluYW1pYwkAvAkCCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUMdG91ckNvbnRyYWN0CQEWa2V5VG91ckR5bmFtaWNEYXRhQnlJZAEFA3RJZAkArAICCQCsAgICGUVycm9yIHJlYWRpbmcgdG91cm5hbWVudCAJAKQDAQUDdElkAgUgZGF0YQICX18JAMwIAgUGc3RhdGljCQDMCAIFB2R5bmFtaWMFA25pbAEOaXNJblRvdXJuYW1lbnQCDHRvdXJDb250cmFjdAhsb2NhdGlvbgQGbGFzdElkCQELdmFsdWVPckVsc2UCCQCaCAIFDHRvdXJDb250cmFjdAUNbGFzdFRvdXJJZEtleQAABANsb2MJALUJAgUIbG9jYXRpb24CAV8EA25vdwgFCWxhc3RCbG9jawl0aW1lc3RhbXAEBXREYXRhCQELZ2V0VG91ckRhdGECBQx0b3VyQ29udHJhY3QFBmxhc3RJZAQGc3RhdGljCQCRAwIFBXREYXRhBQlpZHhTdGF0aWMEB2R5bmFtaWMJAJEDAgUFdERhdGEFCmlkeER5bmFtaWMDAwMJAAACCQCRAwIFA2xvYwUKbG9jSWR4VHlwZQIBVAkAAAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNsb2MFD2xvY0lkeENvbnRpbmVudAUGbGFzdElkBwkAAAIJAJEDAgUHZHluYW1pYwUOdER5bmFtaWNTdGF0dXMCCklOUFJPR1JFU1MHCQBmAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBnN0YXRpYwUKdFN0YXRpY0VuZAUDbm93BwEJb25NaXNzaW9uAgx0b3VyQ29udHJhY3QIbG9jYXRpb24EBmxhc3RJZAkBC3ZhbHVlT3JFbHNlAgkAmggCBQx0b3VyQ29udHJhY3QFDWxhc3RUb3VySWRLZXkAAAQDbG9jCQC1CQIFCGxvY2F0aW9uAgFfBANub3cIBQlsYXN0QmxvY2sJdGltZXN0YW1wBAV0RGF0YQkBC2dldFRvdXJEYXRhAgUMdG91ckNvbnRyYWN0BQZsYXN0SWQEBnN0YXRpYwkAkQMCBQV0RGF0YQUJaWR4U3RhdGljBAdkeW5hbWljCQCRAwIFBXREYXRhBQppZHhEeW5hbWljBAdsb2NUeXBlCQCRAwIFA2xvYwUKbG9jSWR4VHlwZQMDAwkAAAIJAJEDAgUDbG9jBQpsb2NJZHhUeXBlAgFUCQAAAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA2xvYwUPbG9jSWR4Q29udGluZW50BQZsYXN0SWQHCQAAAgkAkQMCBQdkeW5hbWljBQ50RHluYW1pY1N0YXR1cwIKSU5QUk9HUkVTUwcJAGYCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUGc3RhdGljBQp0U3RhdGljRW5kBQNub3cHARJnZXRSZWNpcGVNYXRlcmlhbHMBBnJlY2lwZQkAaAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQZyZWNpcGUFCXJJZHhDb2VmZgUJQ09FRkYyTUFUAQxjaGVhdEF0dGVtcHQDBm9sZExvYwZuZXdMb2MJY2hlYXRDYXNlCQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgICFkNoZWF0IGF0dGVtcHQ6IG9sZExvYz0FBm9sZExvYwIJLCBuZXdMb2M9BQZuZXdMb2MCBywgY2FzZT0JAKQDAQUJY2hlYXRDYXNlAAZTQ0FMRTgAgMLXLwAMeHBMZXZlbFNjYWxlAIAZAA94cExldmVsUmVjaXBQb3cAoB8AEm51bVBvaW50c09uTGV2ZWxVcAADAAxyZXF1aXJlbWVudHMJAMwIAgIIU3RyZW5ndGgJAMwIAgIIQWNjdXJhY3kJAMwIAgIJSW50ZWxsZWN0CQDMCAICCUVuZHVyYW5jZQkAzAgCAglEZXh0ZXJpdHkJAMwIAgIFTGV2ZWwJAMwIAgIGSGVhbHRoBQNuaWwADGNoYXJTdHJlbmd0aAAAAAxjaGFyQWNjdXJhY3kAAQANY2hhckludGVsbGVjdAACAA1jaGFyRW5kdXJhbmNlAAMADWNoYXJEZXh0ZXJpdHkABAALc2VnQmFja3BhY2sAAAALTlVNU0VHTUVOVFMABgAKTlVNTUFJTkFVWAACAAhNQVhTTE9UUwACAA1NQVhQUk9ESU5TTE9UAB4BDWtleUR1Y2tIZWFsdGgBC2R1Y2tBc3NldElkCQCsAgICC2R1Y2tIZWFsdGhfBQtkdWNrQXNzZXRJZAEMa2V5RHVja0NoYXJzAQtkdWNrQXNzZXRJZAkArAICAgpkdWNrQ2hhcnNfBQtkdWNrQXNzZXRJZAEJa2V5RHVja1hQAQtkdWNrQXNzZXRJZAkArAICAgdkdWNrWFBfBQtkdWNrQXNzZXRJZAEMa2V5RHVja0xldmVsAQtkdWNrQXNzZXRJZAkArAICAgpkdWNrTGV2ZWxfBQtkdWNrQXNzZXRJZAERa2V5RHVja0ZyZWVQb2ludHMBC2R1Y2tBc3NldElkCQCsAgICD2R1Y2tGcmVlUG9pbnRzXwULZHVja0Fzc2V0SWQBEGtleUR1Y2tFcXVpcG1lbnQBC2R1Y2tBc3NldElkCQCsAgICDmR1Y2tFcXVpcG1lbnRfBQtkdWNrQXNzZXRJZAEJa2V5VXNlclhQAQRhZGRyCQCsAgICB3VzZXJYUF8FBGFkZHIBDGtleVVzZXJMZXZlbAEEYWRkcgkArAICAgp1c2VyTGV2ZWxfBQRhZGRyARFrZXlVc2VyRnJlZVBvaW50cwEEYWRkcgkArAICAg91c2VyRnJlZVBvaW50c18FBGFkZHIBDmtleVNhdmVkSGVhbHRoAQtkdWNrQXNzZXRJZAkArAICAgxzYXZlZEhlYWx0aF8FC2R1Y2tBc3NldElkARBrZXlTYXZlZExvY2F0aW9uAQtkdWNrQXNzZXRJZAkArAICAg5zYXZlZExvY2F0aW9uXwULZHVja0Fzc2V0SWQBDGtleUR1Y2tCdWZmcwELZHVja0Fzc2V0SWQJAKwCAgIKZHVja0J1ZmZzXwULZHVja0Fzc2V0SWQBGGtleUxhc3RSb2JiZXJ5VGltZUJ5RHVjawELZHVja0Fzc2V0SWQJAKwCAgIQbGFzdFJvYmJlcnlUaW1lXwULZHVja0Fzc2V0SWQBE2tleUR1Y2tSb2JiZXJ5Q291bnQBC2R1Y2tBc3NldElkCQCsAgICGHRvdGFsUm9iYmVyeUNvdW50QnlEdWNrXwULZHVja0Fzc2V0SWQBE2tleVVzZXJSb2JiZXJ5Q291bnQBBGFkZHIJAKwCAgIRdXNlclJvYmJlcnlDb3VudF8FBGFkZHIBFWtleVVzZXJMYXN0Um9iYmVyeURheQEEYWRkcgkArAICAhN1c2VyTGFzdFJvYmJlcnlEYXlfBQRhZGRyARRrZXlEdWNrRGVsaXZlcnlDb3VudAELZHVja0Fzc2V0SWQJAKwCAgIZdG90YWxEZWxpdmVyeUNvdW50QnlEdWNrXwULZHVja0Fzc2V0SWQBFGtleVVzZXJEZWxpdmVyeUNvdW50AQRhZGRyCQCsAgICEnVzZXJEZWxpdmVyeUNvdW50XwUEYWRkcgEWa2V5VXNlckxhc3REZWxpdmVyeURheQEEYWRkcgkArAICAhR1c2VyTGFzdERlbGl2ZXJ5RGF5XwUEYWRkcgAHeHBDbGFpbQCQTgAPeHBTdWNjZXNzRmxpZ2h0AJBOAAx4cEZhaWxGbGlnaHQA0A8ADHhwU3VjY2Vzc1JvYgCQTgAJeHBGYWlsUm9iANAPAAh4cENhbGxFUwCgjQYADHhwQ3VzdG9tTmFtZQDAhD0ACnhwTmV3U0xhbmQAwJaxAgAOeHBVcGdyYWRlSW5mcmEAkE4AB3hwTWVyZ2UAwIQ9AAl4cE9uYm9hcmQAwIQ9AAZ4cEhlYWwAkE4BCWxldmVsQnlYUAECeHAJAGsDBQx4cExldmVsU2NhbGUJAGwGBQJ4cAAEBQ94cExldmVsUmVjaXBQb3cABAAEBQRET1dOBQZTQ0FMRTgBCW1heEhlYWx0aAEFbGV2ZWwJAGQCAGQFBWxldmVsAQdsZXZlbFVwAgljdXJyTGV2ZWwFbmV3WFAECG5ld0xldmVsCQEJbGV2ZWxCeVhQAQUFbmV3WFAJAMwIAgUIbmV3TGV2ZWwJAMwIAgkAaAIFEm51bVBvaW50c09uTGV2ZWxVcAkAZQIFCG5ld0xldmVsBQljdXJyTGV2ZWwFA25pbAEMZ2V0RHVja1N0YXRzBA9zdGFraW5nQ29udHJhY3QLZHVja0Fzc2V0SWQKYnVmZkVmZmVjdApmb3JjZUJ1ZmZzBAVjaGFycwkAtQkCCQELdmFsdWVPckVsc2UCCQCdCAIFD3N0YWtpbmdDb250cmFjdAkBDGtleUR1Y2tDaGFycwEFC2R1Y2tBc3NldElkAgkwXzBfMF8wXzACAV8EA2x2bAkBC3ZhbHVlT3JFbHNlAgkAmggCBQ9zdGFraW5nQ29udHJhY3QJAQxrZXlEdWNrTGV2ZWwBBQtkdWNrQXNzZXRJZAAABAZoZWFsdGgJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPc3Rha2luZ0NvbnRyYWN0CQENa2V5RHVja0hlYWx0aAEFC2R1Y2tBc3NldElkCQEJbWF4SGVhbHRoAQUDbHZsBApzdGF0ZUJ1ZmZzCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUPc3Rha2luZ0NvbnRyYWN0CQEMa2V5RHVja0J1ZmZzAQULZHVja0Fzc2V0SWQCCTBfMF8wXzBfMAIBXwkAzggCCQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVjaGFycwUMY2hhclN0cmVuZ3RoCQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVjaGFycwUMY2hhckFjY3VyYWN5CQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVjaGFycwUNY2hhckludGVsbGVjdAkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFY2hhcnMFDWNoYXJFbmR1cmFuY2UJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBWNoYXJzBQ1jaGFyRGV4dGVyaXR5CQDMCAIFA2x2bAkAzAgCBQZoZWFsdGgFA25pbAMFCmZvcmNlQnVmZnMJAMwIAgUKYnVmZkVmZmVjdAkAzAgCBQpidWZmRWZmZWN0CQDMCAIFCmJ1ZmZFZmZlY3QJAMwIAgUKYnVmZkVmZmVjdAkAzAgCBQpidWZmRWZmZWN0BQNuaWwJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCnN0YXRlQnVmZnMFDGNoYXJTdHJlbmd0aAkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKc3RhdGVCdWZmcwUMY2hhckFjY3VyYWN5CQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQpzdGF0ZUJ1ZmZzBQ1jaGFySW50ZWxsZWN0CQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQpzdGF0ZUJ1ZmZzBQ1jaGFyRW5kdXJhbmNlCQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQpzdGF0ZUJ1ZmZzBQ1jaGFyRGV4dGVyaXR5BQNuaWwACURBWU1JTExJUwCAuJkpARRrZXlMYXN0QXJiVGltZUJ5VXNlcgEEYWRkcgkArAICAhBsYXN0QXJiVGltZVVzZXJfBQRhZGRyARprZXlBY3Jlc1N0YWtlZEFtb3VudEJ5VXNlcgEEYWRkcgkArAICAhhhY3Jlc1N0YWtlZEFtb3VudEJ5VXNlcl8FBGFkZHIADWluY3ViYXRvckFkZHIEByRtYXRjaDAFBWNoYWluAwkAAAIBAVcFByRtYXRjaDAJARFAZXh0ck5hdGl2ZSgxMDYyKQECIzNQRWt0VnV4MlJoY2hTTjYzRHNEbzRiNG16NFFxektTZUR2AwkAAAIBAVQFByRtYXRjaDAFBHRoaXMJAAIBAg1Vbmtub3duIGNoYWluAAticmVlZGVyQWRkcgQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMAkBEUBleHRyTmF0aXZlKDEwNjIpAQIjM1BEVnVVNDVIN0VoNWRtdE5iblJOUlN0R3dVTEE3Tlk2SGIDCQAAAgEBVAUHJG1hdGNoMAUEdGhpcwkAAgECDVVua25vd24gY2hhaW4AEUZJVkVNSU5VVEVTTUlMTElTAOCnEgAMUkVOQU1JTkdDT1NUAMCWsQIACk1BWE5BTUVMRU4AMgAVSW5mcmFVcGdyYWRlQ29zdFNVc2R0AICt4gQADEVYUE1BVEVSSUFMUwQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMACm3YLtqwcDCQAAAgEBVAUHJG1hdGNoMACqp4GzCQkAAgECDVVua25vd24gY2hhaW4AB0VYUFVTRFQEByRtYXRjaDAFBWNoYWluAwkAAAIBAVcFByRtYXRjaDAAgOWadwMJAAACAQFUBQckbWF0Y2gwAIDlmncJAAIBAg1Vbmtub3duIGNoYWluAA5ST0JPX0RVQ0tfVVNEVACgjQYADFNfQ09TVF9BQ1JFUwCA8ouoCQAFRklWRVgJALYCAQAFAAdUV0VOVFlYCQC2AgEAFAAIVFdFTlRZMlgJALYCAQkAaAIAFAAUAAhUV0VOVFkzWAkAtgIBCQBoAgkAaAIAFAAUABQACFRXRU5UWTRYCQC2AgEJAGgCCQBoAgkAaAIAFAAUABQAFAAIVFdFTlRZNVgJALYCAQkAaAIJAGgCCQBoAgkAaAIAFAAUABQAFAAUAA9QUkVTQUxFTlVNTEFORFMA9AMBEmtleU5leHRGcmVlTGFuZE51bQACC25leHRMYW5kTnVtARprZXlMYW5kQ3VzdG9tTmFtZVRvQXNzZXRJZAEEbmFtZQkArAICAgRsY25fBQRuYW1lARBrZXlMYW5kVG9Bc3NldElkAQdsYW5kTnVtCQCsAgICA2xhXwUHbGFuZE51bQEea2V5SW5mcmFMZXZlbEJ5QXNzZXRJZEFuZE93bmVyAgdhc3NldElkCW93bmVyQWRkcgkArAICCQCsAgIJAKwCAgIFaWxhb18FB2Fzc2V0SWQCAV8FCW93bmVyQWRkcgERa2V5TGFuZE51bVRvT3duZXIBB2xhbmROdW0JAKwCAgIDbG9fBQdsYW5kTnVtARprZXlEdWNrQ3VzdG9tTmFtZVRvQXNzZXRJZAEEbmFtZQkArAICAhFkdWNrQnlDdXN0b21OYW1lXwUEbmFtZQEWa2V5Q3VzdG9tTmFtZVRvQWRkcmVzcwEEbmFtZQkArAICAhRhY2NvdW50QnlDdXN0b21OYW1lXwUEbmFtZQEJa2V5T2xkaWVzAAIKb2xkaWVzTGlzdAEPa2V5TmV4dFJvYm9EdWNrAAIMbmV4dFJvYm9EdWNrAAtjbGFpbU1vZGVXaAAAAA1jbGFpbU1vZGVEdWNrAAEAE2NsYWltTW9kZVdoVGhlbkR1Y2sAAgAIZmxIZWFsdGgAAAALZmxUaW1lc3RhbXAABQAHZmxCb251cwAGAAtmbFByb2RzVXNlZAAHAAhybEhlYWx0aAAAAAtybFByb2RzVXNlZAABAAZybFR5cGUAAAAIcmxMYXN0VHgAAgALcmxUaW1lc3RhbXAAAwEHbmZ0TmFtZQIHbGFuZE51bQhsYW5kU2l6ZQkArAICCQCsAgIFCkxBTkRQUkVGSVgFB2xhbmROdW0FCGxhbmRTaXplAQh0b1ZvbHVtZQIGYW1vdW50B3BrZ1NpemUEBHBrZ3MDCQBnAgUGYW1vdW50AAAJAGkCCQBlAgkAZAIFBmFtb3VudAUHcGtnU2l6ZQABBQdwa2dTaXplCQEBLQEJAGkCCQBlAgkAZAIJAQEtAQUGYW1vdW50BQdwa2dTaXplAAEFB3BrZ1NpemUJAGgCBQRwa2dzBQVNVUxUOAETZGlzdHJpYnV0ZUJ5V2VpZ2h0cwIFdG90YWwHd2VpZ2h0cwQDc3VtCQBkAgkAZAIJAGQCCQBkAgkAZAIJAJEDAgUHd2VpZ2h0cwAACQCRAwIFB3dlaWdodHMAAQkAkQMCBQd3ZWlnaHRzAAIJAJEDAgUHd2VpZ2h0cwADCQCRAwIFB3dlaWdodHMABAkAkQMCBQd3ZWlnaHRzAAUDCQBnAgAABQNzdW0JAAIBAhBaZXJvIHdlaWdodHMgc3VtBAVub3JtNgkAawMFBXRvdGFsBQVNVUxUNgUDc3VtCgEKbm9ybWFsaXplcgIDYWNjBGVsZW0JAM0IAgUDYWNjCQBrAwUEZWxlbQUFbm9ybTYFBU1VTFQ2CgACJGwFB3dlaWdodHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBCm5vcm1hbGl6ZXICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDYJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYBEmdldE5lZWRlZE1hdGVyaWFscwEFdG90YWwEBXByb3BzCQC1CQIJAQV2YWx1ZQEJAKIIAQkBEWtleVJlc1Byb3BvcnRpb25zAAIBXwMJAQIhPQIJAJADAQUFcHJvcHMFBk5VTVJFUwkAAgECFldyb25nIHByb3BvcnRpb25zIGRhdGEEAXIJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXByb3BzAAAJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXByb3BzAAEJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXByb3BzAAIJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXByb3BzAAMJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXByb3BzAAQJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXByb3BzAAUFA25pbAkBE2Rpc3RyaWJ1dGVCeVdlaWdodHMCBQV0b3RhbAUBcgERc3VidHJhY3RNYXRlcmlhbHMDDHNob3VsZFVzZU1hdANoYXMJdG90YWxOZWVkBARuZWVkCQESZ2V0TmVlZGVkTWF0ZXJpYWxzAQUJdG90YWxOZWVkCgEKc3VidHJhY3RvcgIDYWNjA2lkeAQGcmVzdWx0CQBlAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA2hhcwUDaWR4CQCRAwIFBG5lZWQFA2lkeAMJAGYCAAAFBnJlc3VsdAkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAhhOb3QgZW5vdWdoIG1hdGVyaWFsIGlkeD0JAKQDAQUDaWR4AgssIHlvdSBoYXZlIAkAkQMCBQNoYXMFA2lkeAILLCBidXQgbmVlZCAJAKQDAQkAkQMCBQRuZWVkBQNpZHgJAM0IAgUDYWNjCQCkAwEFBnJlc3VsdAMFDHNob3VsZFVzZU1hdAoAAiRsBQVJVEVSNgoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEKc3VidHJhY3RvcgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNgkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgUDaGFzARFzdWJ0cmFjdEVxdWlwbWVudAIFb2xkRXEFcFVzZWQDCQAAAgUFcFVzZWQCAAkAlQoDBQVvbGRFcQcHCgEHc3ViVXNlZAIDYWNjBmlkeEFtdAQFcGFydHMJALUJAgUGaWR4QW10AgEsAwkBAiE9AgkAkAMBBQVwYXJ0cwACCQACAQIoSW5jb3JyZWN0IGZvcm1hdCwgc2hvdWxkIGJlIGluZGV4LGFtb3VudAQDaWR4CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFcGFydHMAAAMDCQBmAgAABQNpZHgGCQBnAgUDaWR4CQCQAwEFEHByb2R1Y3Rpb25NYXRyaXgJAAIBAhNVbmtub3duIHByb2R1Y3QgaWR4BANhbXQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwYXJ0cwABBAdlcVBhcnRzCQC1CQIIBQNhY2MCXzEJAKwCAgkAkQMCBQVwYXJ0cwAAAgE6AwkBAiE9AgkAkAMBBQdlcVBhcnRzAAIJAAIBCQCsAgIJAKwCAgIPWW91IGRvbid0IGhhdmUgCQCRAwIFCXByb2RUeXBlcwUDaWR4AgkgZXF1aXBwZWQEA3RtcAkAkQMCBQdlcVBhcnRzAAEEBm51bUxlbgMJAQdpc0RpZ2l0AQkArwICCQCwAgIFA3RtcAABAAEAAgABBARjdXJyCQENcGFyc2VJbnRWYWx1ZQEJAK8CAgUDdG1wBQZudW1MZW4EBHRhaWwJALACAgUDdG1wBQZudW1MZW4EBm5ld0FtdAMJAGcCBQRjdXJyBQNhbXQJAGUCBQRjdXJyBQNhbXQJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgINWW91IGVxdWlwcGVkIAkApAMBBQRjdXJyAgQgb2YgCQCRAwIFCXByb2RUeXBlcwUDaWR4AhMsIGJ1dCB0cmllZCB0byB1c2UgCQCkAwEFA2FtdAkAlQoDCQCsAgIJAKwCAgkArAICCQCsAgIJAJEDAgUHZXFQYXJ0cwAACQCRAwIFBXBhcnRzAAACAToJAKQDAQUGbmV3QW10BQR0YWlsAwgFA2FjYwJfMgYDAwkAZwIFA2lkeAAGCQBnAgAIBQNpZHgHCQAAAgUGbmV3QW10AAAHAwgFA2FjYwJfMwYDAwkAZwIFA2lkeAADCQBnAgAFBQNpZHgHCQBmAgUDYW10AAAHCgACJGwJALUJAgUFcFVzZWQCAV8KAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCVCgMFBW9sZEVxBwcKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBB3N1YlVzZWQCBQIkYQkA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AgcJAAIBAitQcm9kdWN0IGlkeCBzaG91bGQgYmUgMiBkaWdpdHMsIHplcm8gcGFkZGVkBApwcm9kdWN0SWR4CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFcGFydHMAAAQFY291bnQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwYXJ0cwABAwMJAGYCAAAFCnByb2R1Y3RJZHgGCQBnAgUKcHJvZHVjdElkeAkAkAMBBRBwcm9kdWN0aW9uTWF0cml4CQACAQITVW5rbm93biBwcm9kdWN0IGlkeAMJAGYCAAAFBWNvdW50CQACAQIXQ291bnQgY2FuJ3QgYmUgbmVnYXRpdmUDCQBmAgUFY291bnQFDU1BWFBST0RJTlNMT1QJAAIBCQCsAgIJAKwCAgkArAICAhRDYW4ndCBwdXQgbW9yZSB0aGFuIAkApAMBBQ1NQVhQUk9ESU5TTE9UAgQgb2YgCQCRAwIFCXByb2RUeXBlcwUKcHJvZHVjdElkeAMJAAACBQVjb3VudAAACQCUCgIFBXBMaXN0BwQEaGVhZAkAyQECBQVwTGlzdAkAaAIACAUKcHJvZHVjdElkeAQEY3VycgkAsQkBCQDJAQIJAMoBAgUFcExpc3QJAGgCAAgFCnByb2R1Y3RJZHgACAQEdGFpbAkAygECBQVwTGlzdAkAaAIACAkAZAIFCnByb2R1Y3RJZHgAAQQGcmVjaXBlCQC1CQIJAJEDAgUQcHJvZHVjdGlvbk1hdHJpeAUKcHJvZHVjdElkeAIBXwMDCQEBIQEFCmlzUG9zaXRpdmUJAGYCBQVjb3VudAUEY3VycgcJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIJWW91IGhhdmUgCQCkAwEFBGN1cnICBCBvZiAJAJEDAgUJcHJvZFR5cGVzBQpwcm9kdWN0SWR4AhMsIGJ1dCB0cmllZCB0byB1c2UgCQCkAwEFBWNvdW50BAlpc0JpZ0l0ZW0DAwkBASEBBQppc1Bvc2l0aXZlCQEVY2hlY2tTdGF0UmVxdWlyZW1lbnRzAgUJZHVja1N0YXRzCQC1CQIJAJEDAgUGcmVjaXBlBRBySWR4UmVxdWlyZW1lbnRzAgEsBwQGY29tcGF0CQCRAwIFBnJlY2lwZQUJcklkeFNsb3RzAwkAAAIFBmNvbXBhdAIACQACAQIXSXRlbSBjYW5ub3QgYmUgZXF1aXBwZWQEAWMJAQ1wYXJzZUludFZhbHVlAQUGY29tcGF0BARjU2VnCQBpAgUBYwBkAwkBAiE9AgUHc2VnbWVudAUEY1NlZwkAAgECFFNlZ21lbnQgaW5jb21wYXRpYmxlBAhjTWFpbkF1eAkAaQIJAGoCBQFjAGQACgMJAQIhPQIFB21haW5BdXgFCGNNYWluQXV4CQACAQIRU2xvdCBpbmNvbXBhdGlibGUECWNOdW1TbG90cwkAagIFAWMACgMDCQECIT0CBQRzbG90AAAJAGYCBQljTnVtU2xvdHMAAQcJAAIBAh5CaWcgaXRlbXMgc2hvdWxkIG9jY3VweSBzbG90IDAJAGYCBQljTnVtU2xvdHMAAQcJAJQKAgkAywECCQDLAQIFBGhlYWQJAJoDAQkAZAIFBGN1cnIDBQppc1Bvc2l0aXZlBQVjb3VudAkBAS0BBQVjb3VudAUEdGFpbAUJaXNCaWdJdGVtAQtzbG90c0dyb3VwQgYBZwRicEluCmlzUG9zaXRpdmUHc2VnbWVudAdtYWluQXV4BXN0YXRzAwkBAiE9AgUBZwIABAVzbG90cwkAtQkCBQFnAgEsAwkAZgIJAJADAQUFc2xvdHMFCE1BWFNMT1RTCQACAQISV3Jvbmcgc2xvdHMgZm9ybWF0BAJzMAkAkQMCBQVzbG90cwAABAJzMQMJAGYCCQCQAwEFBXNsb3RzAAEJAJEDAgUFc2xvdHMAAQIAAwMJAAACBQJzMAIACQAAAgUCczECAAcFBGJwSW4EBXRtcFMwAwkBAiE9AgUCczACAAkBCGFkZFByb2RCBwUCczAFBGJwSW4FCmlzUG9zaXRpdmUFB3NlZ21lbnQFB21haW5BdXgAAAUFc3RhdHMJAJQKAgUEYnBJbgcDCQECIT0CBQJzMQIAAwgFBXRtcFMwAl8yCQACAQIeQmlnIGl0ZW0gYWxyZWFkeSBvY2N1cGllcyBzbG90CAkBCGFkZFByb2RCBwUCczEIBQV0bXBTMAJfMQUKaXNQb3NpdGl2ZQUHc2VnbWVudAUHbWFpbkF1eAABBQVzdGF0cwJfMQgFBXRtcFMwAl8xBQRicEluAQZkcmVzc0IEB3NlZ0xpc3QGcEJ5dGVzCmlzUG9zaXRpdmUFc3RhdHMKAQdzZWdtZW50AgNhY2MD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Y2MBaQQGcmVzdWx0CQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCHByb3BMaXN0BQFpCQBoAgkAaAIFBHNpZ24JAJEDAgUNdGVycmFpbkNvdW50cwUBaQUNbGFuZFNpemVJbmRleAMJAGYCAAAFBnJlc3VsdAkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIWUGFuaWMhIFBpZWNlcyBvZiB0eXBlPQkApAMBBQFpAgcsIHNpZ249CQCkAwEFBHNpZ24CEywgdGVycmFpbkNvdW50c1tpXT0JAKQDAQkAkQMCBQ10ZXJyYWluQ291bnRzBQFpAhAsIGxhbmRTaXplSW5kZXg9CQCkAwEFDWxhbmRTaXplSW5kZXgJAM0IAgUDYWNjCQCkAwEFBnJlc3VsdAoAAiRsBQVJVEVSNgoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEHdXBkYXRlcgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNgkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgERdXBkYXRlUHJvcG9ydGlvbnMDDXRlcnJhaW5Db3VudHMNbGFuZFNpemVJbmRleARzaWduBAhwcm9wTGlzdAkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEJARFrZXlSZXNQcm9wb3J0aW9ucwACCzBfMF8wXzBfMF8wAgFfCQC5CQIJARl1cGRhdGVQcm9wb3J0aW9uc0ludGVybmFsBAUIcHJvcExpc3QFDXRlcnJhaW5Db3VudHMFDWxhbmRTaXplSW5kZXgFBHNpZ24CAV8BDWNvdW50VGVycmFpbnMBCHRlcnJhaW5zCQDMCAIJAGUCCQCQAwEJALUJAgUIdGVycmFpbnMCAUEAAQkAzAgCCQBlAgkAkAMBCQC1CQIFCHRlcnJhaW5zAgFCAAEJAMwIAgkAZQIJAJADAQkAtQkCBQh0ZXJyYWlucwIBQwABCQDMCAIJAGUCCQCQAwEJALUJAgUIdGVycmFpbnMCAUQAAQkAzAgCCQBlAgkAkAMBCQC1CQIFCHRlcnJhaW5zAgFFAAEJAMwIAgkAZQIJAJADAQkAtQkCBQh0ZXJyYWlucwIBRgABBQNuaWwBBmFkZFJlcwUKY3VycmVudFJlcw10ZXJyYWluQ291bnRzCWRlbHRhVGltZQ1sYW5kU2l6ZUluZGV4F2RhaWx5QnlQaWVjZVdpdGhCb251c2VzCgEFYWRkZXICA2FjYwFpBAlyZXNPZlR5cGUJAGgCCQBoAgkAawMFCWRlbHRhVGltZQUXZGFpbHlCeVBpZWNlV2l0aEJvbnVzZXMFCURBWU1JTExJUwkAkQMCBQ10ZXJyYWluQ291bnRzBQFpBQ1sYW5kU2l6ZUluZGV4CQDNCAIFA2FjYwkApAMBCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCmN1cnJlbnRSZXMFAWkFCXJlc09mVHlwZQQBcgoAAiRsBQVJVEVSNgoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEFYWRkZXICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDYJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYJALkJAgUBcgIBXwEPdmlydENsYWltQWRkUmVzBQpjdXJyZW50UmVzDXRlcnJhaW5Db3VudHMJZGVsdGFUaW1lDWxhbmRTaXplSW5kZXgXZGFpbHlCeVBpZWNlV2l0aEJvbnVzZXMKAQVhZGRlcgIDYWNjAWkECXJlc09mVHlwZQkAaAIJAGgCCQBrAwUJZGVsdGFUaW1lBRdkYWlseUJ5UGllY2VXaXRoQm9udXNlcwUJREFZTUlMTElTCQCRAwIFDXRlcnJhaW5Db3VudHMFAWkFDWxhbmRTaXplSW5kZXgEDHRvdGFsUmVzVHlwZQkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQpjdXJyZW50UmVzBQFpBQlyZXNPZlR5cGUJAJQKAgkAzQgCCAUDYWNjAl8xBQx0b3RhbFJlc1R5cGUJAGQCCAUDYWNjAl8yBQx0b3RhbFJlc1R5cGUKAAIkbAUFSVRFUjYKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCUCgIFA25pbAAACgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQVhZGRlcgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNgkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgEJdmlydENsYWltBA10ZXJyYWluQ291bnRzCWRlbHRhVGltZQ1sYW5kU2l6ZUluZGV4F2RhaWx5QnlQaWVjZVdpdGhCb251c2VzCgEFYWRkZXICA2FjYwx0ZXJyYWluQ291bnQECXJlc09mVHlwZQkAaAIJAGgCCQBrAwUJZGVsdGFUaW1lBRdkYWlseUJ5UGllY2VXaXRoQm9udXNlcwUJREFZTUlMTElTBQx0ZXJyYWluQ291bnQFDWxhbmRTaXplSW5kZXgJAJQKAgkAzQgCCAUDYWNjAl8xBQlyZXNPZlR5cGUJAGQCCAUDYWNjAl8yBQlyZXNPZlR5cGUKAAIkbAUNdGVycmFpbkNvdW50cwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJQKAgUDbmlsAAAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBBWFkZGVyAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA2CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAQ1kaXN0cmlidXRlUmVzBAxjdXJyZW50V2hSZXMOY3VycmVudFBhY2tSZXMKcmVzVG9DbGFpbQt3aFNwYWNlTGVmdAQOcmVzTGlzdFRvQ2xhaW0IBQpyZXNUb0NsYWltAl8xBAxyZXNBbVRvQ2xhaW0IBQpyZXNUb0NsYWltAl8yAwkAAAIFDHJlc0FtVG9DbGFpbQAACQCUCgIJALkJAgUMY3VycmVudFdoUmVzAgFfCQC5CQIFDmN1cnJlbnRQYWNrUmVzAgFfAwkAZwIFC3doU3BhY2VMZWZ0BQxyZXNBbVRvQ2xhaW0KAQhhZGRMaXN0cwIDYWNjAWkJAM0IAgUDYWNjCQCkAwEJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUMY3VycmVudFdoUmVzBQFpCQCRAwIFDnJlc0xpc3RUb0NsYWltBQFpBAFyCgACJGwFBUlURVI2CgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQhhZGRMaXN0cwIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNgkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgkAlAoCCQC5CQIFAXICAV8JALkJAgUOY3VycmVudFBhY2tSZXMCAV8KAQxhZGRQYXJ0TGlzdHMCA2FjYwFpBAZ3aFBhcnQJAGsDCQCRAwIFDnJlc0xpc3RUb0NsYWltBQFpBQt3aFNwYWNlTGVmdAUMcmVzQW1Ub0NsYWltCQCUCgIJAM0IAggFA2FjYwJfMQkApAMBCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFDGN1cnJlbnRXaFJlcwUBaQUGd2hQYXJ0CQDNCAIIBQNhY2MCXzIJAKQDAQkAZQIJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUOY3VycmVudFBhY2tSZXMFAWkJAJEDAgUOcmVzTGlzdFRvQ2xhaW0FAWkFBndoUGFydAQBcgoAAiRsBQVJVEVSNgoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJQKAgUDbmlsBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBDGFkZFBhcnRMaXN0cwIFAiRhCQCR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OjBfMF8wXzBfMF8wOjBfMF8wXzBfMF8wOgIBOgkAzAgCCQCkAwEJAQt2YWx1ZU9yRWxzZQIJALYJAQkAkQMCBQFwBQpicElkeExldmVsAAAJAMwIAgMJAAACCQCQAwEJALUJAgkAkQMCBQFwBQhicElkeFJlcwIBXwUGTlVNUkVTCQCRAwIFAXAFCGJwSWR4UmVzAgswXzBfMF8wXzBfMAkAzAgCAwkAAAIJAJADAQkAtQkCCQCRAwIFAXAFCGJwSWR4TWF0AgFfBQZOVU1SRVMJAJEDAgUBcAUIYnBJZHhNYXQCCzBfMF8wXzBfMF8wCQDMCAIJAJEDAgUBcAUJYnBJZHhQcm9kBQNuaWwBF2dldFdhcmVob3VzZVRvdGFsVm9sdW1lAQl2b2xQcmVmaXgEBXBhcnRzCQC1CQIFCXZvbFByZWZpeAIBXwkAaAIJAGgCBQxXSE1VTFRJUExJRVIJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFcGFydHMAAQABCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFcGFydHMAAAEXZ2V0V2FyZWhvdXNlT2NjdXBpZWRWb2wBCWN1cnJlbnRXaAQFZ29vZHMJAJEDAgUJY3VycmVudFdoBQl3aElkeFByb2QKAQlzdW1SZXNNYXQCA2FjYwRpdGVtCQBkAgUDYWNjCQENcGFyc2VJbnRWYWx1ZQEFBGl0ZW0KAQdzdW1Qcm9kAgNhY2MEaXRlbQQDaWR4CAUDYWNjAl8xBARwa2dzCQBpAgkAZQIJAGQCCQENcGFyc2VJbnRWYWx1ZQEFBGl0ZW0FDlBST0RVQ1RQS0dTSVpFAAEFDlBST0RVQ1RQS0dTSVpFCQCUCgIJAGQCBQNpZHgAAQkAZAIIBQNhY2MCXzIJAGgCBQRwa2dzBQVNVUxUOAQId2hSZXNWb2wKAAIkbAkAtQkCCQCRAwIFCWN1cnJlbnRXaAUId2hJZHhSZXMCAV8KAAIkcwkAkAMBBQIkbAoABSRhY2MwAAAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBCXN1bVJlc01hdAIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNgkBBSRmMF8y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b2NrZWQFA29jYwkAzAgCCQCkAwEFB3doVG90YWwFA25pbAIBXwkAzAgCCQCRAwIFAndoBQt3aElkeExldmVscwkAzAgCAwkAAAIJAJADAQkAtQkCCQCRAwIFAndoBQh3aElkeFJlcwIBXwUGTlVNUkVTCQCRAwIFAndoBQh3aElkeFJlcwILMF8wXzBfMF8wXzAJAMwIAgMJAAACCQCQAwEJALUJAgkAkQMCBQJ3aAUId2hJZHhNYXQCAV8FBk5VTVJFUwkAkQMCBQJ3aAUId2hJZHhNYXQCCzBfMF8wXzBfMF8wCQDMCAIJAJEDAgUCd2gFCXdoSWR4UHJvZAkAzAgCBQZ3aExvZnQFA25pbAEVZ2V0V2FyZWhvdXNlU3BhY2VMZWZ0AQljdXJyZW50V2gEC29jY3VwaWVkVm9sCQEXZ2V0V2FyZWhvdXNlT2NjdXBpZWRWb2wBBQljdXJyZW50V2gED2N1cnJXaExvY2tlZFZvbAkBDXBhcnNlSW50VmFsdWUBCQCRAwIJALUJAgkAkQMCBQljdXJyZW50V2gFCXdoSWR4TE9GVAIBXwUJdm9sTG9ja2VkCQBlAgkAZQIJARdnZXRXYXJlaG91c2VUb3RhbFZvbHVtZQEJAJEDAgUJY3VycmVudFdoBQt3aElkeExldmVscwULb2NjdXBpZWRWb2wFD2N1cnJXaExvY2tlZFZvbAEJbW92ZVN0dWZmAwpjYXJnb1BhcnRzCWN1cnJlbnRXaAtjdXJyZW50UGFjawMJAQIhPQIJAJADAQUKY2FyZ29QYXJ0cwADCQACAQI0Y2FyZ29MaXN0U3RyIHNob3VsZCBjb250YWluIGV4YWN0bHkgMiAnOicgc2VwYXJhdG9ycwQIcmVzUGFydHMJALUJAgkAkQMCBQpjYXJnb1BhcnRzAAACAV8ECG1hdFBhcnRzCQC1CQIJAJEDAgUKY2FyZ29QYXJ0cwABAgFfBAlwcm9kUGFydHMDCQAAAgkAkQMCBQpjYXJnb1BhcnRzAAICAAUDbmlsCQC8CQIJAJEDAgUKY2FyZ29QYXJ0cwACAgFfAwkBAiE9AgkAkAMBBQhyZXNQYXJ0cwUGTlVNUkVTCQACAQIgQWxsIDYgcmVzb3VyY2VzIHNob3VsZCBiZSBwYXNzZWQDCQECIT0CCQCQAwEFCG1hdFBhcnRzBQZOVU1SRVMJAAIBAiBBbGwgNiBtYXRlcmlhbHMgc2hvdWxkIGJlIHBhc3NlZAQLd2hTcGFjZUxlZnQJARVnZXRXYXJlaG91c2VTcGFjZUxlZnQBBQljdXJyZW50V2gECWN1cnJXaFJlcwkAtQkCCQCRAwIFCWN1cnJlbnRXaAUId2hJZHhSZXMCAV8ECWN1cnJXaE1hdAkAtQkCCQCRAwIFCWN1cnJlbnRXaAUId2hJZHhNYXQCAV8ECmN1cnJXaFByb2QDCQAAAgkAkQMCBQljdXJyZW50V2gFCXdoSWR4UHJvZAIABQNuaWwJALwJAgkAkQMCBQljdXJyZW50V2gFCXdoSWR4UHJvZAIBXwQOY3VycmVudFBhY2tSZXMJALUJAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhSZXMCAV8EDmN1cnJlbnRQYWNrTWF0CQC1CQIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4TWF0AgFfBA9jdXJyZW50UGFja1Byb2QDCQAAAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kAgAFA25pbAkAvAkCCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QCAV8KAQNtdlICA2FjYwRpdGVtBAFpCAUDYWNjAl8xBAJhbQkBDXBhcnNlSW50VmFsdWUBBQRpdGVtBAN3aHIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQljdXJyV2hSZXMFAWkEA2JwcgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFDmN1cnJlbnRQYWNrUmVzBQFpAwkAAAIFAmFtAAAJAJYKBAkAZAIFAWkAAQkAzQgCCAUDYWNjAl8yCQCRAwIFCWN1cnJXaFJlcwUBaQkAzQgCCAUDYWNjAl8zCQCRAwIFDmN1cnJlbnRQYWNrUmVzBQFpCAUDYWNjAl80AwkAZgIFAmFtAAADCQBmAgUCYW0FA2JwcgkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgIQQXR0ZW1wdCB0byB0YWtlIAUEaXRlbQIZIGZyb20gYmFja3BhY2ssIGJ1dCBvbmx5IAkApAMBBQNicHICCiBhdmFpbGFibGUJAJYKBAkAZAIFAWkAAQkAzQgCCAUDYWNjAl8yCQCkAwEJAGQCBQN3aHIFAmFtCQDNCAIIBQNhY2MCXzMJAKQD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TkRTAAEEB2xhbmROdW0JAKQDAQUHZnJlZU51bQQMY29udGluZW50SWR4CQCgAwEJALsCAgUGYmlnTnVtBQVGSVZFWAQIdGVycmFpbnMJAQtnZW5UZXJyYWlucwIFBmJpZ051bQUMY29udGluZW50SWR4BAljb250aW5lbnQJAJEDAgUKY29udGluZW50cwUMY29udGluZW50SWR4BAVpc3N1ZQkAwggFCQEHbmZ0TmFtZQIFB2xhbmROdW0CAVMJALkJAgkAzAgCBQdsYW5kTnVtCQDMCAICAVMJAMwIAgUIdGVycmFpbnMJAMwIAgUJY29udGluZW50BQNuaWwCAV8AAQAABwQHYXNzZXRJZAkAuAgBBQVpc3N1ZQQCaWQJANgEAQUHYXNzZXRJZAkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQESa2V5TmV4dEZyZWVMYW5kTnVtAAkAZAIFB2ZyZWVOdW0AAQkAzAgCBQVpc3N1ZQkAzAgCCQELU3RyaW5nRW50cnkCCQEQa2V5TGFuZFRvQXNzZXRJZAEFB2xhbmROdW0FAmlkCQDMCAIJAQtTdHJpbmdFbnRyeQIJARVrZXlMYW5kQXNzZXRJZFRvT3duZXIBBQJpZAUIdXNlckFkZHIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEWtleUxhbmROdW1Ub093bmVyAQUHbGFuZE51bQUIdXNlckFkZHIJAMwIAgkBDEludGVnZXJFbnRyeQIJARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQUCaWQAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBHmtleUluZnJhTGV2ZWxCeUFzc2V0SWRBbmRPd25lcgIFAmlkBQh1c2VyQWRkcgAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFBmNhbGxlcgABBQdhc3NldElkBQNuaWwJAJQKAgUCaWQFCWNvbnRpbmVudAEMZmxpZ2h0Q29tbW9uAwh1c2VyQWRkcgdtZXNzYWdlA3NpZwMJAQEhAQkAxBMDBQdtZXNzYWdlBQNzaWcFA3B1YgkAAgECGHNpZ25hdHVyZSBkb2VzIG5vdCBtYXRjaAQFcGFydHMJALwJAgkAsAkBBQdtZXNzYWdlAgE7BAlmbGlnaHRMb2cJALwJAgkAkQMCBQVwYXJ0cwAAAgF8BAJocAkAtQkCCQCRAwIFCWZsaWdodExvZwUIZmxIZWFsdGgCAV8EBWN1ckhQCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCaHAAAAQFbmV3SFAJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJocAABBAtuZXdMb2NUeFZlcgkAtQkCCQCRAwIFBXBhcnRzAAECAToEC25ld0xvY2F0aW9uCQCRAwIFC25ld0xvY1R4VmVyAAAEBHRpbWUJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQlmbGlnaHRMb2cFC2ZsVGltZXN0YW1wAwMJAGYCBQR0aW1lCQBkAggFCWxhc3RCbG9jawl0aW1lc3RhbXAFEUZJVkVNSU5VVEVTTUlMTElTBgkAZgIJAGUCCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAURRklWRU1JTlVURVNNSUxMSVMFBHRpbWUJAAIBCQCsAgIJAKwCAgkArAICAhxzaWduYXR1cmUgb3V0ZGF0ZWQ6IGxvZ1RpbWU9CQCkAwEFBHRpbWUCCSwgYmNUaW1lPQkApAMBCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQJdHhGcm9tTXNnCQCRAwIFC25ld0xvY1R4VmVyAAEEBmxhc3RUeAkBC3ZhbHVlT3JFbHNlAgkAoggBCQERa2V5TGFzdFR4SWRCeVVzZXIBBQh1c2VyQWRkcgIAAwkBAiE9AgUGbGFzdFR4BQl0eEZyb21Nc2cJAAIBCQCsAgIJAKwCAgkArAICAh5UeCBpZHMgZG9uJ3QgbWF0Y2ghIEluIHN0YXRlOiAFBmxhc3RUeAIKLCBpbiBtc2c6IAUJdHhGcm9tTXNnBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFCHVzZXJBZGRyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkBAlrZXlIZWFsdGgJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQEBW1heEhQCQEJbWF4SGVhbHRoAQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEMa2V5RHVja0xldmVsAQULZHVja0Fzc2V0SWQAAAQMb2xkRnJvbVN0YXRlCQELdmFsdWVPckVsc2UCCQCfCAEFCWtleUhlYWx0aAUFbWF4SFADCQECIT0CBQxvbGRGcm9tU3RhdGUFBWN1ckhQCQACAQkArAICCQCsAgIJAKwCAgIKb2xkSGVhbHRoPQkApAMBBQxvbGRGcm9tU3RhdGUCLyBmcm9tIHN0YXRlIGRvZXMgbm90IG1hdGNoIG9uZSBmcm9tIGZsaWdodCBsb2c9CQCkAwEFBWN1ckhQAwkAZwIAAAUFY3VySFAJAAIBAh5Zb3UgY2FuJ3QgZmx5IHdpdGggemVybyBoZWFsdGgDCQEBIQEJARdjYW5XZWFyQ3VycmVudEVxdWlwbWVudAEFC2R1Y2tBc3NldElkCQACAQIWRXF1aXBtZW50IGluY29tcGF0aWJsZQQFYm9udXMDCQBmAgkAkAMBBQlmbGlnaHRMb2cFB2ZsQm9udXMJAJEDAgUJZmxpZ2h0TG9nBQdmbEJvbnVzAgAECHByb2RVc2VkAwkAZgIJAJADAQUJZmxpZ2h0TG9nBQtmbFByb2RzVXNlZAkAkQMCBQlmbGlnaHRMb2cFC2ZsUHJvZHNVc2VkAgAECnNlbnRBbW91bnQDAwkAZgIFBW5ld0hQAAAJAAACBQVib251cwIBJAcJAQVhc0ludAEJAPwHBAUMcmVzdENvbnRyYWN0Ag1zZW5kVXNkdFByaXplCQDMCAIFCHVzZXJBZGRyBQNuaWwFA25pbAAACQCXCgUFBW5ld0hQBQtkdWNrQXNzZXRJZAUKc2VudEFtb3VudAULbmV3TG9jYXRpb24FCHByb2RVc2VkAQxhcHBseUJvbnVzZXMCC2xhbmRBc3NldElkBnBpZWNlcwQKaW5mcmFMZXZlbAkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEFC2xhbmRBc3NldElkAAAECWFydFBpZWNlcwkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEga2V5TGFuZEFydFN0YXR1c0J5VHlwZUFuZEFzc2V0SWQCBQpBUlRQUkVTQUxFBQtsYW5kQXNzZXRJZAAABARhZGQ2CQBpAgUKaW5mcmFMZXZlbAAGBARhZGQ3CQBpAgUKaW5mcmFMZXZlbAAHCQBkAgkAZAIFD0RBSUxZUkVTQllQSUVDRQkAawMFD0RBSUxZUkVTQllQSUVDRQkAZAIJAGQCBQppbmZyYUxldmVsBQRhZGQ2CQBoAgACBQRhZGQ3AAUJAGsDBQ9EQUlMWVJFU0JZUElFQ0UFCWFydFBpZWNlcwkAaAIFBnBpZWNlcwAFARRjaGVja0NsYWltQ29uZGl0aW9ucwMEYWRkcgljbGFpbU1vZGUNbGFuZEFzc2V0SWRJbgQNJHQwMzQxNTMzNDY5MgMJAAACBQljbGFpbU1vZGUFC2NsYWltTW9kZVdoCQCUCgIFDWxhbmRBc3NldElkSW4JAQt2YWx1ZU9yRWxzZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUEYWRkcgIABAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFBGFkZHICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQEC2N1ckxvY2F0aW9uCQELdmFsdWVPckVsc2UCCQCiCAEJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAUPREVGQVVMVExPQ0FUSU9OBANsb2MJALUJAgkBBXZhbHVlAQULY3VyTG9jYXRpb24CAV8DCQECIT0CCQCRAwIFA2xvYwUKbG9jSWR4VHlwZQIBTAkAAgEJAKwCAgkArAICAhZEdWNrIGxvY2F0aW9uIHR5cGUgaXMgCQCRAwIFA2xvYwUKbG9jSWR4VHlwZQIRLCBidXQgc2hvdWxkIGJlIEwJAJQKAgkAkQMCBQNsb2MFCGxvY0lkeElkBQtkdWNrQXNzZXRJZAQLbGFuZEFzc2V0SWQIBQ0kdDAzNDE1MzM0NjkyAl8xBAZkdWNrSWQIBQ0kdDAzNDE1MzM0NjkyAl8yBAVhc3NldAkBBXZhbHVlAQkA7AcBCQDZBAEFC2xhbmRBc3NldElkBAd0aW1lS2V5CQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFC2xhbmRBc3NldElkBAlzYXZlZFRpbWUJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnwgBBQd0aW1lS2V5CQCsAgIJAKwCAgIFTGFuZCAIBQVhc3NldARuYW1lAg4gaXMgbm90IHN0YWtlZAQFb3duZXIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEVa2V5TGFuZEFzc2V0SWRUb093bmVyAQULbGFuZEFzc2V0SWQJAKwCAgkArAICAgRORlQgCAUFYXNzZXQEbmFtZQIMIGlzIG9ycGhhbmVkAwkBAiE9AgUFb3duZXIFBGFkZHIJAAIBCQCsAgIFCkxBTkRQUkVGSVgCDSBpcyBub3QgeW91cnMEAWQJALUJAggFBWFzc2V0C2Rlc2NyaXB0aW9uAgFfCQCWCgQFBmR1Y2tJZAULbGFuZEFzc2V0SWQFAWQFCXNhdmVkVGltZQEQY2xhaW1SZXNJbnRlcm5hbAQEYWRkcgZhbW91bnQJY2xhaW1Nb2RlDWxhbmRBc3NldElkSW4DCQBmAgAABQZhbW91bnQJAAIBAg9OZWdhdGl2ZSBhbW91bnQEAWMJARRjaGVja0NsYWltQ29uZGl0aW9ucwMFBGFkZHIFCWNsYWltTW9kZQUNbGFuZEFzc2V0SWRJbgQIbGFuZFNpemUJAJEDAggFAWMCXzMFC3JlY0xhbmRTaXplBA10ZXJyYWluQ291bnRzCQENY291bnRUZXJyYWlucwEJAJEDAggFAWMCXzMFC3JlY1RlcnJhaW5zBAlkZWx0YVRpbWUJAGUCCQEJZmluYWxUaW1lAAgFAWMCXzQDCQBmAgAABQlkZWx0YVRpbWUJAAIBCQCsAgIJAKwCAgkArAICAiZTYXZlZCB0aW1lc3RhbXAgaXMgaW4gZnV0dXJlLCBzYXZlZCA9IAkApAMBCAUBYwJfNAIKLCBmaW5hbCA9IAkApAMBCQEJZmluYWxUaW1lAAQGcGllY2VzCQEPbnVtUGllY2VzQnlTaXplAQUIbGFuZFNpemUEFmRhaWx5UHJvZHVjdGlvbkJ5UGllY2UJAQxhcHBseUJvbnVzZXMCCAUBYwJfMgUGcGllY2VzBAhhdmFpbFJlcwkAawMFCWRlbHRhVGltZQkAaAIFFmRhaWx5UHJvZHVjdGlvbkJ5UGllY2UFBnBpZWNlcwUJREFZTUlMTElTAwkAZgIFBmFtb3VudAUIYXZhaWxSZXMJAAIBCQCsAgIJAKwCAgkArAICAiJOb3QgZW5vdWdoIHJlc291cmNlcywgYXZhaWxhYmxlID0gCQCkAwEFCGF2YWlsUmVzAg4sIHJlcXVlc3RlZCA9IAkApAMBBQZhbW91bnQEDG5ld0RlbHRhVGltZQkAawMJAGUCBQhhdmFpbFJlcwUGYW1vdW50BQlEQVlNSUxMSVMJAGgCBRZkYWlseVByb2R1Y3Rpb25CeVBpZWNlBQZwaWVjZXMEDG5ld1RpbWVzdGFtcAkAZQIJAQlmaW5hbFRpbWUABQxuZXdEZWx0YVRpbWUECWxhbmRJbmRleAkAaQIFBnBpZWNlcwUFU1NJWkUECnJlc1RvQ2xhaW0JAQl2aXJ0Q2xhaW0EBQ10ZXJyYWluQ291bnRzCQBlAgUJZGVsdGFUaW1lBQxuZXdEZWx0YVRpbWUFCWxhbmRJbmRleAUWZGFpbHlQcm9kdWN0aW9uQnlQaWVjZQQFd2hLZXkJARJrZXlXYXJlaG91c2VCeUxhbmQBCAUBYwJfMgQKaW5mcmFMZXZlbAkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEIBQFjAl8yAAAECWN1cnJlbnRXaAkBDGdldFdhcmVob3VzZQMFBXdoS2V5BQlsYW5kSW5kZXgFCmluZnJhTGV2ZWwEBGxvZnQJALUJAgkAkQMCBQljdXJyZW50V2gFCXdoSWR4TE9GVAIBXwQLd2hTcGFjZUxlZnQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQd2b2xGcmVlAwMJAAACBQljbGFpbU1vZGUFC2NsYWltTW9kZVdoCQBmAgUGYW1vdW50BQt3aFNwYWNlTGVmdAcJAAIBCQCsAgIJAKwCAgIFT25seSAJAKQDAQULd2hTcGFjZUxlZnQCGCBzcGFjZSBsZWZ0IGluIHdhcmVob3VzZQQFYnBLZXkJARFrZXlCYWNrcGFja0J5RHVjawEIBQFjAl8xBAtjdXJyZW50UGFjawkBC2dldEJhY2twYWNrAQUFYnBLZXkEDmN1cnJlbnRQYWNrUmVzCQC1CQIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4UmVzAgFfBAxjdXJyZW50V2hSZXMJALUJAgkAkQMCBQljdXJyZW50V2gFCHdoSWR4UmVzAgFfBA0kdDAzNzA2MjM3OTMzAwkAAAIFCWNsYWltTW9kZQULY2xhaW1Nb2RlV2gJAJYKBAkBBmFkZFJlcwUFDGN1cnJlbnRXaFJlcwUNdGVycmFpbkNvdW50cwkAZQIFCWRlbHRhVGltZQUMbmV3RGVsdGFUaW1lBQlsYW5kSW5kZXgFFmRhaWx5UHJvZHVjdGlvbkJ5UGllY2UJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4UmVzCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFC3ZvbE9jY3VwaWVkCAUKcmVzVG9DbGFpbQJfMgkAZQIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQd2b2xGcmVlCAUKcmVzVG9DbGFpbQJfMgMJAAACBQljbGFpbU1vZGUFDWNsYWltTW9kZUR1Y2sJAJYKBAkAkQMCBQljdXJyZW50V2gFCHdoSWR4UmVzCQEGYWRkUmVzBQUOY3VycmVudFBhY2tSZXMFDXRlcnJhaW5Db3VudHMJAGUCBQlkZWx0YVRpbWUFDG5ld0RlbHRhVGltZQUJbGFuZEluZGV4BRZkYWlseVByb2R1Y3Rpb25CeVBpZWNlCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbG9mdAULdm9sT2NjdXBpZWQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQd2b2xGcmVlBAVkaXN0cgkBDWRpc3RyaWJ1dGVSZXMEBQxjdXJyZW50V2hSZXMFDmN1cnJlbnRQYWNrUmVzBQpyZXNUb0NsYWltBQt3aFNwYWNlTGVmdAQEd2hBbQkAlwMBCQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQd2b2xGcmVlCQDMCAIIBQpyZXNUb0NsYWltAl8yBQNuaWwJAJYKBAgFBWRpc3RyAl8xCAUFZGlzdHICXzIJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbG9mdAULdm9sT2NjdXBpZWQFBHdoQW0JAGUCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbG9mdAUHdm9sRnJlZQUEd2hBbQQFd2hSZXMIBQ0kdDAzNzA2MjM3OTMzAl8xBAVicFJlcwgFDSR0MDM3MDYyMzc5MzMCXzIEBWxvZnRPCAUNJHQwMzcwNjIzNzkzMwJfMwQFbG9mdEYIBQ0kdDAzNzA2MjM3OTMzAl80CQCXCgUJAMwIAgkBDEludGVnZXJFbnRyeQIJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQgFAWMCXzIFDG5ld1RpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBImtleVN0YWtlZFRpbWVCeVR5cGVBc3NldElkQW5kT3duZXIDBQpMQU5EUFJFRklYCAUBYwJfMgUEYWRkcgUMbmV3VGltZXN0YW1wBQNuaWwFBWJwS2V5CQDMCAIJAJEDAgULY3VycmVudFBhY2sFCmJwSWR4TGV2ZWwJAMwIAgUFYnBSZXMJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhNYXQJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kBQNuaWwFBXdoS2V5CQDMCAIJAJEDAgUJY3VycmVudFdoBQt3aElkeExldmVscwkAzAgCBQV3aFJlcwkAzAgCCQCRAwIFCWN1cnJlbnRXaAUId2hJZHhNYXQJAMwIAgkAkQMCBQljdXJyZW50V2gFCXdoSWR4UHJvZAkAzAgCCQC5CQIJAMwIAgkAkQMCBQRsb2Z0BQl2b2xMb2NrZWQJAMwIAgkApAMBBQVsb2Z0TwkAzAgCCQCkAwEFBWxvZnRGCQDMCAIJAJEDAgUEbG9mdAUIdm9sVG90YWwFA25pbAIBXwUDbmlsAQhjbGFpbUFsbAQEYWRkcgtsYW5kQXNzZXRJZAZwaWVjZXMJY2xhaW1Nb2RlBAd0aW1lS2V5CQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFC2xhbmRBc3NldElkBAlzYXZlZFRpbWUJAQV2YWx1ZQEJAJ8IAQUHdGltZUtleQQIYXZhaWxSZXMJAGgCCQBrAwkAZQIJAQlmaW5hbFRpbWUABQlzYXZlZFRpbWUJAQxhcHBseUJvbnVzZXMCBQtsYW5kQXNzZXRJZAUGcGllY2VzBQlEQVlNSUxMSVMFBnBpZWNlcwkBEGNsYWltUmVzSW50ZXJuYWwEBQRhZGRyBQhhdmFpbFJlcwUJY2xhaW1Nb2RlBQtsYW5kQXNzZXRJZAENdXBJbmZyYUNvbW1vbgQMc2hvdWxkVXNlTWF0BmNhbGxlcg1wYXltZW50QW1vdW50C2xhbmRBc3NldElkBARhZGRyCQClCAEFBmNhbGxlcgQBYwkBFGNoZWNrQ2xhaW1Db25kaXRpb25zAwUEYWRkcgUTY2xhaW1Nb2RlV2hUaGVuRHVjawULbGFuZEFzc2V0SWQEBnBpZWNlcwkBD251bVBpZWNlc0J5U2l6ZQEJAJEDAggFAWMCXzMFC3JlY0xhbmRTaXplBAhpbmZyYUtleQkBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBCAUBYwJfMgQIY3VyTGV2ZWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUIaW5mcmFLZXkAAAMDCQEBIQEFGEtTX0FMTE9XX0JJR19JTkZSQV9NRVJHRQkAZwIFCGN1ckxldmVsAAMHCQACAQImQ3VycmVudGx5IG1heCBpbmZyYXN0cnVjdHVyZSBsZXZlbCA9IDMECG1heEluZnJhCQBkAgkAaQIJAQRzcXJ0BAUGcGllY2VzAAAAAAUERE9XTgAFAAIECG5ld0xldmVsCQBkAgUIY3VyTGV2ZWwAAQMDBRhLU19BTExPV19CSUdfSU5GUkFfTUVSR0UJAGYCBQhuZXdMZXZlbAUIbWF4SW5mcmEHCQACAQkArAICAiVDdXJyZW50bHkgbWF4IGluZnJhc3RydWN0dXJlIGxldmVsID0gCQCkAwEFCG1heEluZnJhBARjb3N0CQBrAwUVSW5mcmFVcGdyYWRlQ29zdFNVc2R0CQBoAgUGcGllY2VzBQhuZXdMZXZlbAUFU1NJWkUDAwkBASEBBQxzaG91bGRVc2VNYXQJAQIhPQIFDXBheW1lbnRBbW91bnQFBGNvc3QHCQACAQkArAICAhtQYXltZW50IGF0dGFjaGVkIHNob3VsZCBiZSAJAKQDAQUEY29zdAQFYnBLZXkJARFrZXlCYWNrcGFja0J5RHVjawEIBQFjAl8xBAtjdXJyZW50UGFjawkBC2dldEJhY2twYWNrAQUFYnBLZXkEBW1MaXN0CQC1CQIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4TWF0AgFfBAdtYXRVc2VkCQBrAwURSW5mcmFVcGdyYWRlQ29zdFMJAGgCBQZwaWVjZXMFCG5ld0xldmVsBQVTU0laRQQGbmV3TWF0CQC5CQIJARFzdWJ0cmFjdE1hdGVyaWFscwMFDHNob3VsZFVzZU1hdAUFbUxpc3QFB21hdFVzZWQCAV8EC2NsYWltUmVzdWx0CQEIY2xhaW1BbGwEBQRhZGRyCAUBYwJfMgUGcGllY2VzBRNjbGFpbU1vZGVXaFRoZW5EdWNrBAZ3aERhdGEIBQtjbGFpbVJlc3VsdAJfNQQGb2xkVm9sCQEXZ2V0V2FyZWhvdXNlVG90YWxWb2x1bWUBCQCRAwIFBndoRGF0YQULd2hJZHhMZXZlbHMECm5ld1ZvbERhdGEJALkJAgkAzAgCCQCRAwIJALUJAgkAkQMCBQZ3aERhdGEFC3doSWR4TGV2ZWxzAgFfAAAJAMwIAgkApAMBBQhuZXdMZXZlbAUDbmlsAgFfBAZuZXdWb2wJARdnZXRXYXJlaG91c2VUb3RhbFZvbHVtZQEFCm5ld1ZvbERhdGEEBGxvZnQJALUJAgkAkQMCBQZ3aERhdGEFCXdoSWR4TE9GVAIBXwQKbmV3TG9mdFN0cgkAuQkCCQDMCAIJAJEDAgUEbG9mdAUJdm9sTG9ja2VkCQDMCAIJAJEDAgUEbG9mdAULdm9sT2NjdXBpZWQJAMwIAgkApAMBCQBlAgkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQd2b2xGcmVlBQZuZXdWb2wFBm9sZFZvbAkAzAgCCQCkAwEFBm5ld1ZvbAUDbmlsAgFfCQCVCgMJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUIaW5mcmFLZXkFCG5ld0xldmVsCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEea2V5SW5mcmFMZXZlbEJ5QXNzZXRJZEFuZE93bmVyAggFAWMCXzIFBGFkZHIFCG5ld0xldmVsCQDMCAIJAQtTdHJpbmdFbnRyeQIFBWJwS2V5CQC5CQIJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUKYnBJZHhMZXZlbAkAzAgCCQCRAwIIBQtjbGFpbVJlc3VsdAJfMwUIYnBJZHhSZXMJAMwIAgUGbmV3TWF0CQDMCAIJAJEDAgULY3VycmVudFBhY2sFCWJwSWR4UHJvZAUDbmlsAgE6CQDMCAIJAQtTdHJpbmdFbnRyeQIIBQtjbGFpbVJlc3VsdAJfNAkAuQkCCQDMCAIFCm5ld1ZvbERhdGEJAMwIAgkAkQMCBQZ3aERhdGEFCHdoSWR4UmVzCQDMCAIJAJEDAgUGd2hEYXRhBQh3aElkeE1hdAkAzAgCCQCRAwIFBndoRGF0YQUJd2hJZHhQcm9kCQDMCAIFCm5ld0xvZnRTdHIFA25pbAIBOgUDbmlsCAULY2xhaW1SZXN1bHQCXzEFCG5ld0xldmVsBQdtYXRVc2VkARN1cGRhdGVTdGF0c0ludGVybmFsBAZsdmxLZXkFeHBLZXkJcG9pbnRzS2V5B2RlbHRhWFAEAnhwCQELdmFsdWVPckVsc2UCCQCfCAEFBXhwS2V5AAAEBW5ld1hQCQBkAgUCeHAFB2RlbHRhWFAECWx2bFBvaW50cwkBB2xldmVsVXACCQELdmFsdWVPckVsc2UCCQCfCAEFBmx2bEtleQAABQVuZXdYUAkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQZsdmxLZXkJAJEDAgUJbHZsUG9pbnRzAAAJAMwIAgkBDEludGVnZXJFbnRyeQIFBXhwS2V5BQVuZXdYUAkAzAgCCQEMSW50ZWdlckVudHJ5AgUJcG9pbnRzS2V5CQBkAgkBC3ZhbHVlT3JFbHNlAgkAnwgBBQlwb2ludHNLZXkAAAkAkQMCBQlsdmxQb2ludHMAAQUDbmlsBQVuZXdYUAEXdXBkYXRlRHVja1N0YXRzSW50ZXJuYWwCC2R1Y2tBc3NldElkB2RlbHRhWFAEBWFzc2V0CQEFdmFsdWUBCQDsBwEJANkEAQULZHVja0Fzc2V0SWQEBGFkZHIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEQa2V5RHVja0lkVG9Pd25lcgEFC2R1Y2tBc3NldElkCQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCDCBpcyBvcnBoYW5lZAMDAwUTS1NfQUxMT1dfUk9CT19EVUNLUwkAAAIIBQVhc3NldAZpc3N1ZXIFBHRoaXMHCQEIY29udGFpbnMCCAUFYXNzZXQEbmFtZQULUk9CT19QUkVGSVgHCQETdXBkYXRlU3RhdHNJbnRlcm5hbAQJAQxrZXlVc2VyTGV2ZWwBBQRhZGRyCQEJa2V5VXNlclhQAQUEYWRkcgkBEWtleVVzZXJGcmVlUG9pbnRzAQUEYWRkcgUHZGVsdGFYUAkBE3VwZGF0ZVN0YXRzSW50ZXJuYWwECQEMa2V5RHVja0xldmVsAQULZHVja0Fzc2V0SWQJAQlrZXlEdWNrWFABBQtkdWNrQXNzZXRJZAkBEWtleUR1Y2tGcmVlUG9pbnRzAQULZHVja0Fzc2V0SWQFB2RlbHRhWFABFnVwZGF0ZUFjY1N0YXRzSW50ZXJuYWwCBGFkZHIHZGVsdGFYUAkBE3VwZGF0ZVN0YXRzSW50ZXJuYWwECQEMa2V5VXNlckxldmVsAQUEYWRkcgkBCWtleVVzZXJYUAEFBGFkZHIJARFrZXlVc2VyRnJlZVBvaW50cwEFBGFkZHIFB2RlbHRhWFABEmFjdGl2YXRlT25ib2FyZEFydAEEYWRkcgQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQRhZGRyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkBAhyZWZCeUtleQkBD2tleUFkZHJlc3NSZWZCeQEFBGFkZHIEBXJlZkJ5CQCiCAEFCHJlZkJ5S2V5AwkBASEBCQEJaXNEZWZpbmVkAQUFcmVmQnkJAAIBAilZb3UgYXJlIG5vdCBlbGlnaWJsZSBmb3IgT05CT0FSRCBhcnRpZmFjdAQGYXJ0S2V5CQEca2V5T25ib2FyZEFydER1Y2tBY3RpdmF0ZWRCeQEFBGFkZHIEB2FydER1Y2sJAKIIAQUGYXJ0S2V5AwkBCWlzRGVmaW5lZAEFB2FydER1Y2sJAAIBCQCsAgICL1lvdSBhbHJlYWR5IHVzZWQgeW91ciBPTkJPQVJEIGFydGlmYWN0IG9uIGR1Y2sgCQEFdmFsdWUBBQdhcnREdWNrBBBkdWNrQWN0aXZhdG9yS2V5CQEca2V5T25ib2FyZEFydEFjdGl2YXRlZE9uRHVjawEFC2R1Y2tBc3NldElkBA1kdWNrQWN0aXZhdG9yCQCiCAEFEGR1Y2tBY3RpdmF0b3JLZXkDCQEJaXNEZWZpbmVkAQUNZHVja0FjdGl2YXRvcgkAAgEJAKwCAgkArAICCQCsAgICCVRoZSBkdWNrIAULZHVja0Fzc2V0SWQCNCBhbHJlYWR5IGdvdCBwb2ludHMgZnJvbSBPTkJPQVJEIGFydGlmYWN0IGZyb20gdXNlciAJAQV2YWx1ZQEFDWR1Y2tBY3RpdmF0b3IJAM4IAgkAzAgCCQELU3RyaW5nRW50cnkCBQZhcnRLZXkFC2R1Y2tBc3NldElkCQDMCAIJAQtTdHJpbmdFbnRyeQIFEGR1Y2tBY3RpdmF0b3JLZXkFBGFkZHIFA25pbAgJARd1cGRhdGVEdWNrU3RhdHNJbnRlcm5hbAIFC2R1Y2tBc3NldElkBQl4cE9uYm9hcmQCXzEBEmFjdGl2YXRlUHJlc2FsZUFydAIEYWRkcg1sYW5kQXNzZXRJZEluBAFjCQEUY2hlY2tDbGFpbUNvbmRpdGlvbnMDBQRhZGRyBRNjbGFpbU1vZGVXaFRoZW5EdWNrBQ1sYW5kQXNzZXRJZEluBAtsYW5kQXNzZXRJZAgFAWMCXzIEBnBpZWNlcwkBD251bVBpZWNlc0J5U2l6ZQEJAJEDAggFAWMCXzMFC3JlY0xhbmRTaXplBA1hY3RpdmF0aW9uS2V5CQEga2V5TGFuZEFydFN0YXR1c0J5VHlwZUFuZEFzc2V0SWQCBQpBUlRQUkVTQUxFBQtsYW5kQXNzZXRJZAMJAGYCCQELdmFsdWVPckVsc2UCCQCfCAEFDWFjdGl2YXRpb25LZXkAAAAACQACAQIlUHJlc2FsZSBhcnRpZmFjdCBpcyBhbHJlYWR5IGFjdGl2YXRlZAMJAGYCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAggFAWMCXzMFCnJlY0xhbmROdW0FD1BSRVNBTEVOVU1MQU5EUwkAAgEJAKwCAgkArAICCQCsAgIFCkxBTkRQUkVGSVgCASAFC2xhbmRBc3NldElkAiUgaXMgbm90IGVsaWdpYmxlIGZvciBwcmVzYWxlIGFydGlmYWN0BAtjbGFpbVJlc3VsdAkBCGNsYWltQWxsBAUEYWRkcgULbGFuZEFzc2V0SWQFBnBpZWNlcwUTY2xhaW1Nb2RlV2hUaGVuRHVjawkAzQgCCQDNCAIJAM0IAggFC2NsYWltUmVzdWx0Al8xCQEMSW50ZWdlckVudHJ5AgUNYWN0aXZhdGlvbktleQUGcGllY2VzCQELU3RyaW5nRW50cnkCCAULY2xhaW1SZXN1bHQCXzIJALkJAggFC2NsYWltUmVzdWx0Al8zAgE6CQELU3RyaW5nRW50cnkCCAULY2xhaW1SZXN1bHQCXzQJALkJAggFC2NsYWltUmVzdWx0Al81AgE6AQ9jaGVja1RvdXJuYW1lbnQBC2R1Y2tBc3NldElkBAZsYXN0SWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUSdG91cm5hbWVudENvbnRyYWN0BQ1sYXN0VG91cklkS2V5AAAEC2N1ckxvY2F0aW9uCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAKIIAQkBD2tleUR1Y2tMb2NhdGlvbgEFC2R1Y2tBc3NldElkBQ9ERUZBVUxUTE9DQVRJT04CAV8EA25vdwgFCWxhc3RCbG9jawl0aW1lc3RhbXAEBXREYXRhCQELZ2V0VG91ckRhdGECBRJ0b3VybmFtZW50Q29udHJhY3QFBmxhc3RJZAQGc3RhdGljCQCRAwIFBXREYXRhBQlpZHhTdGF0aWMEB2R5bmFtaWMJAJEDAgUFdERhdGEFCmlkeER5bmFtaWMDCQECIT0CCQCRAwIFC2N1ckxvY2F0aW9uBQpsb2NJZHhUeXBlAgFUBwMDAwkAAAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQtjdXJMb2NhdGlvbgUPbG9jSWR4Q29udGluZW50BQZsYXN0SWQJAAACCQCRAwIFB2R5bmFtaWMFDnREeW5hbWljU3RhdHVzAgpJTlBST0dSRVNTBwkAZgIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQZzdGF0aWMFCnRTdGF0aWNFbmQFA25vdwcJAAIBAipZb3VyIGR1Y2sgaXMgdGFraW5nIHBhcnQgaW4gdGhlIHRvdXJuYW1lbnQJAQlhc0Jvb2xlYW4BCQD8BwQFBHRoaXMCFmV4aXRUb3VybmFtZW50SW50ZXJuYWwJAMwIAgULZHVja0Fzc2V0SWQFA25pbAUDbmlsAQ1tZXJnZUludGVybmFsBgtuZXdMYW5kU2l6ZQhuZXdMZXZlbAdmb3JtdWxhBGFkZHIMbGFuZEFzc2V0SWRzB25lZWRNYXQEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUEYWRkcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAMJAQ9jaGVja1RvdXJuYW1lbnQBBQtkdWNrQXNzZXRJZAkAAgECHW1lcmdlSW50ZXJuYWxfY2hlY2tUb3VybmFtZW50CgEKY2hlY2tNZXJnZQIDYWNjC2xhbmRBc3NldElkBAVhc3NldAkBBXZhbHVlAQkA7AcBCQDZBAEFC2xhbmRBc3NldElkBAd0aW1lS2V5CQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFC2xhbmRBc3NldElkBAlzYXZlZFRpbWUJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnwgBBQd0aW1lS2V5CQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCDiBpcyBub3Qgc3Rha2VkBAVvd25lcgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARVrZXlMYW5kQXNzZXRJZFRvT3duZXIBBQtsYW5kQXNzZXRJZAkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAgwgaXMgb3JwaGFuZWQDCQECIT0CBQVvd25lcgUEYWRkcgkAAgEJAKwCAgUKTEFORFBSRUZJWAINIGlzIG5vdCB5b3VycwQBZAkAtQkCCAUFYXNzZXQLZGVzY3JpcHRpb24CAV8ECWNvbnRpbmVudAkAkQMCBQFkBQxyZWNDb250aW5lbnQDAwkBAiE9AggFA2FjYwJfMwIACQECIT0CCAUDYWNjAl8zBQljb250aW5lbnQHCQACAQIuTGFuZHMgc2hvdWxkIGJlIG9uIHRoZSBzYW1lIGNvbnRpbmVudCB0byBtZXJnZQQIbGFuZFNpemUJAJEDAgUBZAULcmVjTGFuZFNpemUEB3NpemVzSW4IBQNhY2MCXzEEAWkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAswkCBQdzaXplc0luBQhsYW5kU2l6ZQInWW91IGhhdmVuJ3QgcGFzc2VkIGFsbCB0aGUgbGFuZHMgbmVlZGVkBAhzaXplc091dAkArAICCQCvAgIFB3NpemVzSW4FAWkJALACAgUHc2l6ZXNJbgkAZAIFAWkAAQQGcGllY2VzCQEPbnVtUGllY2VzQnlTaXplAQUIbGFuZFNpemUEBGFydHMJAGQCCAUDYWNjAl8yCQELdmFsdWVPckVsc2UCCQCfCAEJASBrZXlMYW5kQXJ0U3RhdHVzQnlUeXBlQW5kQXNzZXRJZAIFCkFSVFBSRVNBTEUFC2xhbmRBc3NldElkAAAECmluZnJhTGV2ZWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAAABAhyZXFMZXZlbAQHJG1hdGNoMAUIbGFuZFNpemUDCQAAAgIBUwUHJG1hdGNoMAADAwkAAAICAU0FByRtYXRjaDAABAMJAAACAgFMBQckbWF0Y2gwAAUDCQAAAgICWEwFByRtYXRjaDAABgkAAgECGk9ubHkgUywgTSwgTCwgWEwgY2FuIG1lcmdlAwkBAiE9AgUKaW5mcmFMZXZlbAUIcmVxTGV2ZWwJAAIBAiJBbGwgbGFuZHMgc2hvdWxkIGJlIG1heGVkIHRvIG1lcmdlBAdsYW5kTnVtCQCRAwIFAWQFCnJlY0xhbmROdW0EDXRlcnJhaW5Db3VudHMJAQ1jb3VudFRlcnJhaW5zAQkAkQMCBQFkBQtyZWNUZXJyYWlucwQJZGVsdGFUaW1lCQBlAggFCWxhc3RCbG9jawl0aW1lc3RhbXAFCXNhdmVkVGltZQMJAGYCAAAFCWRlbHRhVGltZQkAAgEJAKwCAgkArAICCQCsAgICJlNhdmVkIHRpbWVzdGFtcCBpcyBpbiBmdXR1cmUsIHNhdmVkID0gCQCkAwEFCXNhdmVkVGltZQIMLCBjdXJyZW50ID0gCQCkAwEIBQlsYXN0QmxvY2sJdGltZXN0YW1wBBZkYWlseVByb2R1Y3Rpb25CeVBpZWNlCQEMYXBwbHlCb251c2VzAgULbGFuZEFzc2V0SWQFBnBpZWNlcwQJbGFuZEluZGV4CQBpAgUGcGllY2VzBQVTU0laRQQFYnBSZXMJAQZhZGRSZXMFCQC1CQIIBQNhY2MCXzQCAV8FDXRlcnJhaW5Db3VudHMFCWRlbHRhVGltZQUJbGFuZEluZGV4BRZkYWlseVByb2R1Y3Rpb25CeVBpZWNlBAVwcm9wcwkBGXVwZGF0ZVByb3BvcnRpb25zSW50ZXJuYWwECAUDYWNjAl82BQ10ZXJyYWluQ291bnRzBQlsYW5kSW5kZXgA////////////AQQGY1Byb3BzCQEZdXBkYXRlUHJvcG9ydGlvbnNJbnRlcm5hbAQIBQNhY2MDXzEwBQ10ZXJyYWluQ291bnRzBQlsYW5kSW5kZXgA////////////AQQLc3VtVGVycmFpbnMJARl1cGRhdGVQcm9wb3J0aW9uc0ludGVybmFsBAgFA2FjYwJfOQUNdGVycmFpbkNvdW50cwUJbGFuZEluZGV4AAEEBWxhbmRzCAUDYWNjAl83BANpZHgJAM8IAgUFbGFuZHMFC2xhbmRBc3NldElkAwkBASEBCQEJaXNEZWZpbmVkAQUDaWR4CQACAQkArAICAiBZb3VyIHN0YWtlZCBsYW5kcyBkb24ndCBjb250YWluIAULbGFuZEFzc2V0SWQECWN1c3RvbUtleQkBGmtleUxhbmRBc3NldElkVG9DdXN0b21OYW1lAQULbGFuZEFzc2V0SWQECmN1c3RvbU5hbWUJAQt2YWx1ZU9yRWxzZQIJAKIIAQUJY3VzdG9tS2V5AgAJAJwKCgUIc2l6ZXNPdXQFBGFydHMFCWNvbnRpbmVudAUFYnBSZXMJAM4IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIIBQNhY2MCXzUJAQtEZWxldGVFbnRyeQEJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQULbGFuZEFzc2V0SWQJAQtEZWxldGVFbnRyeQEJASJrZXlTdGFrZWRUaW1lQnlUeXBlQXNzZXRJZEFuZE93bmVyAwUKTEFORFBSRUZJWAULbGFuZEFzc2V0SWQFBGFkZHIJAQtEZWxldGVFbnRyeQEJARBrZXlMYW5kVG9Bc3NldElkAQUHbGFuZE51bQkBC0RlbGV0ZUVudHJ5AQkBFWtleUxhbmRBc3NldElkVG9Pd25lcgEFC2xhbmRBc3NldElkCQELRGVsZXRlRW50cnkBCQEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEFC2xhbmRBc3NldElkCQELRGVsZXRlRW50cnkBCQEea2V5SW5mcmFMZXZlbEJ5QXNzZXRJZEFuZE93bmVyAgULbGFuZEFzc2V0SWQFBGFkZHIJAQtEZWxldGVFbnRyeQEJASBrZXlMYW5kQXJ0U3RhdHVzQnlUeXBlQW5kQXNzZXRJZAIFCkFSVFBSRVNBTEUFC2xhbmRBc3NldElkCQELRGVsZXRlRW50cnkBCQERa2V5TGFuZE51bVRvT3duZXIBBQdsYW5kTnVtCQELRGVsZXRlRW50cnkBCQESa2V5V2FyZWhvdXNlQnlMYW5kAQULbGFuZEFzc2V0SWQJAQtEZWxldGVFbnRyeQEFCWN1c3RvbUtleQkBBEJ1cm4CCQDZBAEFC2xhbmRBc3NldElkAAEDCQECIT0CBQpjdXN0b21OYW1lAgAJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBGmtleUxhbmRDdXN0b21OYW1lVG9Bc3NldElkAQUKY3VzdG9tTmFtZQUDbmlsBQNuaWwFBXByb3BzCQDRCAIFBWxhbmRzCQEFdmFsdWUBBQNpZHgJAGQCCAUDYWNjAl84BQZwaWVjZXMFC3N1bVRlcnJhaW5zBQZjUHJvcHMEBWJwS2V5CQERa2V5QmFja3BhY2tCeUR1Y2sBBQtkdWNrQXNzZXRJZAQLY3VycmVudFBhY2sJAQtnZXRCYWNrcGFjawEFBWJwS2V5BAhwcm9wTGlzdAkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEJARFrZXlSZXNQcm9wb3J0aW9ucwACCzBfMF8wXzBfMF8wAgFfBAhsYW5kc0tleQkBFWtleVN0YWtlZExhbmRzQnlPd25lcgEFBGFkZHIECGxhbmRzU3RyCQCiCAEFCGxhbmRzS2V5BAdsYW5kc0luAwkBCWlzRGVmaW5lZAEFCGxhbmRzU3RyCQC9CQIJAQV2YWx1ZQEFCGxhbmRzU3RyAgFfBQNuaWwEBWNvbnQwCQCRAwIJALUJAggJAQV2YWx1ZQEJAOwHAQkA2QQBCQCRAwIFDGxhbmRBc3NldElkcwAAC2Rlc2NyaXB0aW9uAgFfBQxyZWNDb250aW5lbnQECWNvbnRQcm9wcwkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEJARZrZXlSZXNUeXBlc0J5Q29udGluZW50AQUFY29udDACCzBfMF8wXzBfMF8wAgFfBAFyCgACJGwFDGxhbmRBc3NldElkcwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJwKCgUHZm9ybXVsYQAAAgAJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4UmVzBQNuaWwFCHByb3BMaXN0BQdsYW5kc0luAAAJALUJAgILMF8wXzBfMF8wXzACAV8FCWNvbnRQcm9wcwoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEKY2hlY2tNZXJnZQIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNQkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUECWNvbnRpbmVudAgFAXICXzMEDGNvbnRpbmVudElkeAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDPCAIFCmNvbnRpbmVudHMFCWNvbnRpbmVudAkArAICAhNVbmtub3duIGNvbnRpbmVudDogBQljb250aW5lbnQECHRlcnJhaW5zCQETZ2VuVGVycmFpbnNGb3JNZXJnZQIIBQFyAl85CQBpAgkBD251bVBpZWNlc0J5U2l6ZQEFC25ld0xhbmRTaXplBQVTU0laRQQHZnJlZU51bQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQESa2V5TmV4dEZyZWVMYW5kTnVtAAkAZAIFD1BSRVNBTEVOVU1MQU5EUwABBApuZXdMYW5kTnVtCQCkAwEFB2ZyZWVOdW0EBWlzc3VlCQDCCAUJAQduZnROYW1lAgUKbmV3TGFuZE51bQULbmV3TGFuZFNpemUJALkJAgkAzAgCBQpuZXdMYW5kTnVtCQDMCAIFC25ld0xhbmRTaXplCQDMCAIFCHRlcnJhaW5zCQDMCAIFCWNvbnRpbmVudAUDbmlsAgFfAAEAAAcEB2Fzc2V0SWQJALgIAQUFaXNzdWUEDm5ld0xhbmRBc3NldElkCQDYBAEFB2Fzc2V0SWQEBm5ld01hdAkAuQkCCQERc3VidHJhY3RNYXRlcmlhbHMDCQBmAgUHbmVlZE1hdAAACQC1CQIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4TWF0AgFfBQduZWVkTWF0AgFfBAlwaWVjZXNLZXkJARZrZXlTdGFrZWRQaWVjZXNCeU93bmVyAQUEYWRkcgQMc3Rha2VkUGllY2VzCQELdmFsdWVPckVsc2UCCQCfCAEFCXBpZWNlc0tleQAACQCUCgIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIIBQFyAl81AwkAZgIJAJADAQgFAXICXzcAAAkBC1N0cmluZ0VudHJ5AgUIbGFuZHNLZXkJALsJAggFAXICXzcCAV8JAQtEZWxldGVFbnRyeQEFCGxhbmRzS2V5CQEMSW50ZWdlckVudHJ5AgUJcGllY2VzS2V5AwkAZgIIBQFyAl84BQxzdGFrZWRQaWVjZXMAAAkAZQIFDHN0YWtlZFBpZWNlcwgFAXICXzgJAQxJbnRlZ2VyRW50cnkCCQESa2V5TmV4dEZyZWVMYW5kTnVtAAkAZAIFB2ZyZWVOdW0AAQUFaXNzdWUJAQtTdHJpbmdFbnRyeQIJARBrZXlMYW5kVG9Bc3NldElkAQUKbmV3TGFuZE51bQUObmV3TGFuZEFzc2V0SWQJAQtTdHJpbmdFbnRyeQIJARVrZXlMYW5kQXNzZXRJZFRvT3duZXIBBQ5uZXdMYW5kQXNzZXRJZAUEYWRkcgkBC1N0cmluZ0VudHJ5AgkBEWtleUxhbmROdW1Ub093bmVyAQUKbmV3TGFuZE51bQUEYWRkcgkBDEludGVnZXJFbnRyeQIJASBrZXlMYW5kQXJ0U3RhdHVzQnlUeXBlQW5kQXNzZXRJZAIFCkFSVFBSRVNBTEUFDm5ld0xhbmRBc3NldElkCAUBcgJfMgkBDEludGVnZXJFbnRyeQIJARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQUObmV3TGFuZEFzc2V0SWQFCG5ld0xldmVsCQEMSW50ZWdlckVudHJ5AgkBHmtleUluZnJhTGV2ZWxCeUFzc2V0SWRBbmRPd25lcgIFDm5ld0xhbmRBc3NldElkBQRhZGRyBQhuZXdMZXZlbAkBC1N0cmluZ0VudHJ5AgUFYnBLZXkJALkJAgkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQpicElkeExldmVsCQDMCAIIBQFyAl80CQDMCAIFBm5ld01hdAkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QFA25pbAIBOgkBC1N0cmluZ0VudHJ5AgkBEWtleVJlc1Byb3BvcnRpb25zAAkAuQkCCAUBcgJfNgIBXwkBC1N0cmluZ0VudHJ5AgkBFmtleVJlc1R5cGVzQnlDb250aW5lbnQBBQljb250aW5lbnQJALkJAggFAXIDXzEwAgFfCQELU3RyaW5nRW50cnkCCQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQJALkJAgkAzAgCBQljb250aW5lbnQJAMwIAgIBTAkAzAgCBQ5uZXdMYW5kQXNzZXRJZAUDbmlsAgFfCQEOU2NyaXB0VHJhbnNmZXIDCQERQGV4dHJOYXRpdmUoMTA2MikBBQRhZGRyAAEFB2Fzc2V0SWQFDm5ld0xhbmRBc3NldElkAQNzMm0CBGFkZHIMbGFuZEFzc2V0SWRzCQENbWVyZ2VJbnRlcm5hbAYCAU0AAwIEU1NTUwUEYWRkcgUMbGFuZEFzc2V0SWRzAAABA20ybAIEYWRkcgxsYW5kQXNzZXRJZHMJAQ1tZXJnZUludGVybmFsBgIBTAAEAgNTTU0FBGFkZHIFDGxhbmRBc3NldElkcwkAaAIFEUluZnJhVXBncmFkZUNvc3RTAAQBBGwyeGwCBGFkZHIMbGFuZEFzc2V0SWRzCQENbWVyZ2VJbnRlcm5hbAYCAlhMAAUCBVNTU01MBQRhZGRyBQxsYW5kQXNzZXRJZHMJAGgCBRFJbmZyYVVwZ3JhZGVDb3N0UwAvAQZ4bDJ4eGwCBGFkZHIMbGFuZEFzc2V0SWRzCQENbWVyZ2VJbnRlcm5hbAYCA1hYTAAGAgNMWEwFBGFkZHIFDGxhbmRBc3NldElkcwkAaAIFEUluZnJhVXBncmFkZUNvc3RTADYBC21lcmdlQ29tbW9uAgRhZGRyDGxhbmRBc3NldElkcwQHJG1hdGNoMAkAkAMBBQxsYW5kQXNzZXRJZHMDCQAAAgAEBQckbWF0Y2gwCQEDczJtAgUEYWRkcgUMbGFuZEFzc2V0SWRzAwkAAAIAAwUHJG1hdGNoMAkBA20ybAIFBGFkZHIFDGxhbmRBc3NldElkcwMJAAACAAUFByRtYXRjaDAJAQRsMnhsAgUEYWRkcgUMbGFuZEFzc2V0SWRzAwkAAAIAAgUHJG1hdGNoMAkBBnhsMnh4bAIFBGFkZHIFDGxhbmRBc3NldElkcwkAAgECDVVua25vd24gbWVyZ2UBBnByb2xvZwEBaQMDCQECIT0CCAUBaQxvcmlnaW5DYWxsZXIFDHJlc3RDb250cmFjdAkBC3ZhbHVlT3JFbHNlAgkAoAgBCQEKa2V5QmxvY2tlZAAHBwkAAgECH0NvbnRyYWN0cyBhcmUgdW5kZXIgbWFpbnRlbmFuY2UJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEWtleUxhc3RUeElkQnlVc2VyAQkApQgBCAUBaQxvcmlnaW5DYWxsZXIJANgEAQgFAWkNdHJhbnNhY3Rpb25JZAUDbmlsARN1bnN0YWtlTGFuZEludGVybmFsAgRhZGRyC2xhbmRBc3NldElkBAV3aEtleQkBEmtleVdhcmVob3VzZUJ5TGFuZAEFC2xhbmRBc3NldElkBAhsYW5kSW5mbwkAtQkCCAkBBXZhbHVlAQkA7AcBCQDZBAEFC2xhbmRBc3NldElkC2Rlc2NyaXB0aW9uAgFfBAhsYW5kU2l6ZQkAkQMCBQhsYW5kSW5mbwULcmVjTGFuZFNpemUEBnBpZWNlcwkBD251bVBpZWNlc0J5U2l6ZQEFCGxhbmRTaXplBAppbmZyYUxldmVsCQELdmFsdWVPckVsc2UCCQCfCAEJARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQULbGFuZEFzc2V0SWQAAAQJbGFuZEluZGV4CQBpAgUGcGllY2VzBQVTU0laRQQNdGVycmFpbkNvdW50cwkBDWNvdW50VGVycmFpbnMBCQCRAwIFCGxhbmRJbmZvBQtyZWNUZXJyYWlucwQJY3VycmVudFdoCQEMZ2V0V2FyZWhvdXNlAwUFd2hLZXkFCWxhbmRJbmRleAUKaW5mcmFMZXZlbAQMY3VycmVudFdoUmVzCQC1CQIJAJEDAgUJY3VycmVudFdoBQh3aElkeFJlcwIBXwQHdGltZUtleQkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAQJc2F2ZWRUaW1lCQERQGV4dHJOYXRpdmUoMTA1NSkBBQd0aW1lS2V5BAlkZWx0YVRpbWUJAGUCCQEJZmluYWxUaW1lAAUJc2F2ZWRUaW1lAwkAZgIAAAUJZGVsdGFUaW1lCQACAQkArAICCQCsAgIJAKwCAgImU2F2ZWQgdGltZXN0YW1wIGlzIGluIGZ1dHVyZSwgc2F2ZWQgPSAJAKQDAQUJc2F2ZWRUaW1lAgosIGZpbmFsID0gCQCkAwEJAQlmaW5hbFRpbWUABBZkYWlseVByb2R1Y3Rpb25CeVBpZWNlCQEMYXBwbHlCb251c2VzAgULbGFuZEFzc2V0SWQFBnBpZWNlcwQNcmVzQWZ0ZXJDbGFpbQkBD3ZpcnRDbGFpbUFkZFJlcwUFDGN1cnJlbnRXaFJlcwUNdGVycmFpbkNvdW50cwUJZGVsdGFUaW1lBQlsYW5kSW5kZXgFFmRhaWx5UHJvZHVjdGlvbkJ5UGllY2UECWFydFBpZWNlcwkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEga2V5TGFuZEFydFN0YXR1c0J5VHlwZUFuZEFzc2V0SWQCBQpBUlRQUkVTQUxFBQtsYW5kQXNzZXRJZAAABA9hY3Jlc0Zyb21QaWVjZXMJAGQCCQBoAgUGcGllY2VzBQVNVUxUOAkAaQIJAGgCCQBkAgkAaAIFBnBpZWNlcwUKaW5mcmFMZXZlbAUJYXJ0UGllY2VzBQVNVUxUOAAFBAxhY3Jlc0Zyb21SZXMJAGgCCQBrAwgFDXJlc0FmdGVyQ2xhaW0CXzIFEFJFU09VUkNFUFJJQ0VNSU4FBU1VTFQ4BRVVU0RUMkFDUkVTX01VTFRJUExJRVIKAQZzdW1NYXQCA2FjYwRpdGVtCQBkAgUDYWNjCQENcGFyc2VJbnRWYWx1ZQEFBGl0ZW0EBXdoTWF0CgACJGwJALUJAgkAkQMCBQljdXJyZW50V2gFCHdoSWR4TWF0AgFfCgACJHMJAJADAQUCJGwKAAUkYWNjMAAACgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQZzdW1NYXQCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDYJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYEDGFjcmVzRnJvbU1hdAkAaAIJAGsDBQV3aE1hdAkAaAIAAgUQUkVTT1VSQ0VQUklDRU1JTgUFTVVMVDgFFVVTRFQyQUNSRVNfTVVMVElQTElFUgQFcHJvZHMDCQAAAgkAkQMCBQljdXJyZW50V2gFCXdoSWR4UHJvZAIABQNuaWwJALwJAgkAkQMCBQljdXJyZW50V2gFCXdoSWR4UHJvZAIBXwoBB3N1bVByb2QCA2FjYwRpdGVtBAFqCAUDYWNjAl8yBAtyZWNpcGVDb2VmZgkBDXBhcnNlSW50VmFsdWUBCQCRAwIJALUJAgkAkQMCBRBwcm9kdWN0aW9uTWF0cml4BQFqAgFfBQlySWR4Q29lZmYJAJQKAgkAZAIIBQNhY2MCXzEJAGgCCQBoAgkBDXBhcnNlSW50VmFsdWUBBQRpdGVtBQtyZWNpcGVDb2VmZgUFTVVMVDYJAGQCBQFqAAEEBndoUHJvZAoAAiRsBQVwcm9kcwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJQKAgAAAAAKAQUkZjFfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBB3N1bVByb2QCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjFfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDI0CQEFJGYxXzICCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAAVABYAFwAYBA1hY3Jlc0Zyb21Qcm9kCQBoAgkAawMIBQZ3aFByb2QCXzEJAGgCAAIFEFJFU09VUkNFUFJJQ0VNSU4FBU1VTFQ4BRVVU0RUMkFDUkVTX01VTFRJUExJRVIJAJYKBAUPYWNyZXNGcm9tUGllY2VzBQxhY3Jlc0Zyb21SZXMFDGFjcmVzRnJvbU1hdAUNYWNyZXNGcm9tUHJvZAETdW5zdGFrZUR1Y2tJbnRlcm5hbAIEYWRkcgtkdWNrQXNzZXRJZAQFZXFLZXkJARBrZXlEdWNrRXF1aXBtZW50AQULZHVja0Fzc2V0SWQEC2N1cnJlbnRTZWdzCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAKIIAQUFZXFLZXkCFyw7LF8sOyxfLDssXyw7LF8sOyxfLDssAgFfBAVicEtleQkBEWtleUJhY2twYWNrQnlEdWNrAQULZHVja0Fzc2V0SWQEC2N1cnJlbnRQYWNrCQELZ2V0QmFja3BhY2sBBQVicEtleQQJdGVtcFByb2RCCQEGZHJlc3NCBAULY3VycmVudFNlZ3MJAQ5wcm9kU3RyVG9CeXRlcwEJAJEDAgUL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dGVnZXICA2tleQZhbW91bnQDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAiBzYXZlSW50ZWdlciBpcyBub3QgcHVibGljIG1ldGhvZAkAzAgCCQEMSW50ZWdlckVudHJ5AgUDa2V5BQZhbW91bnQFA25pbAFpAQpzZXRCbG9ja2VkAQlpc0Jsb2NrZWQDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAhFwZXJtaXNzaW9uIGRlbmllZAkAzAgCCQEMQm9vbGVhbkVudHJ5AgkBCmtleUJsb2NrZWQABQlpc0Jsb2NrZWQFA25pbAFpAQlzdGFrZUxhbmQABA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECHEV4YWN0bHkgb25lIHBheW1lbnQgcmVxdWlyZWQEA3BtdAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAABAdhc3NldElkCQEFdmFsdWUBCAUDcG10B2Fzc2V0SWQEB2FkZHJlc3MJAKUIAQgFAWkGY2FsbGVyAwkBAiE9AggFA3BtdAZhbW91bnQAAQkAAgEJAKwCAgkArAICAgRORlQgBQpMQU5EUFJFRklYAiQgdG9rZW4gc2hvdWxkIGJlIGF0dGFjaGVkIGFzIHBheW1lbnQEBWFzc2V0CQEFdmFsdWUBCQDsBwEFB2Fzc2V0SWQDCQECIT0CCAUFYXNzZXQGaXNzdWVyBQR0aGlzCQACAQIXVW5rbm93biBpc3N1ZXIgb2YgdG9rZW4DCQEBIQEJAQhjb250YWlucwIIBQVhc3NldARuYW1lBQpMQU5EUFJFRklYCQACAQkArAICCQCsAgICCU9ubHkgTkZUIAUKTEFORFBSRUZJWAIUIHRva2VucyBhcmUgYWNjZXB0ZWQEC2xhbmROdW1TaXplCQCwAgIIBQVhc3NldARuYW1lAAQEB2xhbmROdW0DCQEIY29udGFpbnMCBQtsYW5kTnVtU2l6ZQIDWFhMCQCzAgIFC2xhbmROdW1TaXplAAMDCQEIY29udGFpbnMCBQtsYW5kTnVtU2l6ZQICWEwJALMCAgULbGFuZE51bVNpemUAAgkAswICBQtsYW5kTnVtU2l6ZQABAwkBASEBCQEJaXNEZWZpbmVkAQkAtgkBBQdsYW5kTnVtCQACAQkArAICAh5DYW5ub3QgcGFyc2UgbGFuZCBudW1iZXIgZnJvbSAIBQVhc3NldARuYW1lBAtsYW5kQXNzZXRJZAkA2AQBBQdhc3NldElkBAd0aW1lS2V5CQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFC2xhbmRBc3NldElkAwkBCWlzRGVmaW5lZAEJAJ8IAQUHdGltZUtleQkAAgEJAKwCAgkArAICAgRORlQgCAUFYXNzZXQEbmFtZQISIGlzIGFscmVhZHkgc3Rha2VkBAFkCQC1CQIIBQVhc3NldAtkZXNjcmlwdGlvbgIBXwQNdGVycmFpbkNvdW50cwkBDWNvdW50VGVycmFpbnMBCQCRAwIFAWQFC3JlY1RlcnJhaW5zBAZwaWVjZXMJAQ9udW1QaWVjZXNCeVNpemUBCQCRAwIFAWQFC3JlY0xhbmRTaXplBAlsYW5kSW5kZXgJAGkCBQZwaWVjZXMFBVNTSVpFBAVwcm9wcwkBEXVwZGF0ZVByb3BvcnRpb25zAwUNdGVycmFpbkNvdW50cwUJbGFuZEluZGV4AAEEDHJlc0J5Q29udEtleQkBFmtleVJlc1R5cGVzQnlDb250aW5lbnQBCQCRAwIFAWQFDHJlY0NvbnRpbmVudAQJY29udFByb3BzCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAKIIAQUMcmVzQnlDb250S2V5AgswXzBfMF8wXzBfMAIBXwQQdXBkYXRlZENvbnRQcm9wcwkAuQkCCQEZdXBkYXRlUHJvcG9ydGlvbnNJbnRlcm5hbAQFCWNvbnRQcm9wcwUNdGVycmFpbkNvdW50cwUJbGFuZEluZGV4AAECAV8ECGxhbmRzS2V5CQEVa2V5U3Rha2VkTGFuZHNCeU93bmVyAQUHYWRkcmVzcwQIbGFuZHNTdHIJAKIIAQUIbGFuZHNLZXkEBWxhbmRzAwkBCWlzRGVmaW5lZAEFCGxhbmRzU3RyCQC9CQIJAQV2YWx1ZQEFCGxhbmRzU3RyAgFfBQNuaWwDCQEPY29udGFpbnNFbGVtZW50AgUFbGFuZHMFC2xhbmRBc3NldElkCQACAQkArAICAiJZb3VyIHN0YWtlZCBsYW5kcyBhbHJlYWR5IGNvbnRhaW4gBQtsYW5kQXNzZXRJZAMJAGcCCQCQAwEFBWxhbmRzBRhNQVhfTEFORFNfU1RBS0VEX0JZX1VTRVIJAAIBCQCsAgIJAKwCAgIZWW91ciBhbHJlYWR5IHN0YWtlZCBtYXggKAkApAMBBRhNQVhfTEFORFNfU1RBS0VEX0JZX1VTRVICBykgbGFuZHMECmluZnJhTGV2ZWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAAABAlwaWVjZXNLZXkJARZrZXlTdGFrZWRQaWVjZXNCeU93bmVyAQUHYWRkcmVzcwQJb2xkUGllY2VzCQELdmFsdWVPckVsc2UCCQCfCAEFCXBpZWNlc0tleQAABAl3bGdSZXN1bHQJAPwHBAULd2xnQ29udHJhY3QCEm9uU3Rha2VVbnN0YWtlTGFuZAkAzAgCBQdhZGRyZXNzBQNuaWwFA25pbAkAlAoCCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIFB3RpbWVLZXkIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEia2V5U3Rha2VkVGltZUJ5VHlwZUFzc2V0SWRBbmRPd25lcgMFCkxBTkRQUkVGSVgFC2xhbmRBc3NldElkBQdhZGRyZXNzCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQELU3RyaW5nRW50cnkCBQhsYW5kc0tleQkAuwkCCQDNCAIFBWxhbmRzBQtsYW5kQXNzZXRJZAIBXwkAzAgCCQEMSW50ZWdlckVudHJ5AgUJcGllY2VzS2V5CQBkAgUJb2xkUGllY2VzBQZwaWVjZXMJAMwIAgkBC1N0cmluZ0VudHJ5AgkBFWtleUxhbmRBc3NldElkVG9Pd25lcgEFC2xhbmRBc3NldElkBQdhZGRyZXNzCQDMCAIJAQtTdHJpbmdFbnRyeQIJARFrZXlMYW5kTnVtVG9Pd25lcgEFB2xhbmROdW0FB2FkZHJlc3MJAMwIAgkBDEludGVnZXJFbnRyeQIJAR5rZXlJbmZyYUxldmVsQnlBc3NldElkQW5kT3duZXICBQtsYW5kQXNzZXRJZAUHYWRkcmVzcwUKaW5mcmFMZXZlbAkAzAgCCQELU3RyaW5nRW50cnkCCQERa2V5UmVzUHJvcG9ydGlvbnMABQVwcm9wcwkAzAgCCQELU3RyaW5nRW50cnkCBQxyZXNCeUNvbnRLZXkFEHVwZGF0ZWRDb250UHJvcHMFA25pbAUNcHJvbG9nQWN0aW9ucwUJd2xnUmVzdWx0AWkBC3Vuc3Rha2VMYW5kAQ1sYW5kQXNzZXRJZEluBA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBARhZGRyCQClCAEIBQFpBmNhbGxlcgQBYwkBFGNoZWNrQ2xhaW1Db25kaXRpb25zAwUEYWRkcgUNY2xhaW1Nb2RlRHVjawUNbGFuZEFzc2V0SWRJbgQLbGFuZEFzc2V0SWQIBQFjAl8yBAFkCAUBYwJfMwQIbGFuZHNLZXkJARVrZXlTdGFrZWRMYW5kc0J5T3duZXIBBQRhZGRyBA10ZXJyYWluQ291bnRzCQENY291bnRUZXJyYWlucwEJAJEDAgUBZAULcmVjVGVycmFpbnMEBnBpZWNlcwkBD251bVBpZWNlc0J5U2l6ZQEJAJEDAgUBZAULcmVjTGFuZFNpemUECWxhbmRJbmRleAkAaQIFBnBpZWNlcwUFU1NJWkUEBXByb3BzCQERdXBkYXRlUHJvcG9ydGlvbnMDBQ10ZXJyYWluQ291bnRzBQlsYW5kSW5kZXgA////////////AQQMcmVzQnlDb250S2V5CQEWa2V5UmVzVHlwZXNCeUNvbnRpbmVudAEJAJEDAgUBZAUMcmVjQ29udGluZW50BAljb250UHJvcHMJALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBBQxyZXNCeUNvbnRLZXkCCzBfMF8wXzBfMF8wAgFfBBB1cGRhdGVkQ29udFByb3BzCQC5CQIJARl1cGRhdGVQcm9wb3J0aW9uc0ludGVybmFsBAUJY29udFByb3BzBQ10ZXJyYWluQ291bnRzBQlsYW5kSW5kZXgA////////////AQIBXwQLY2xhaW1SZXN1bHQJAQhjbGFpbUFsbAQFBGFkZHIFC2xhbmRBc3NldElkBQZwaWVjZXMFDWNsYWltTW9kZUR1Y2sEBWxhbmRzCQC9CQIJAQt2YWx1ZU9yRWxzZQIJAKIIAQUIbGFuZHNLZXkCAAIBXwQDaWR4CQDPCAIFBWxhbmRzBQtsYW5kQXNzZXRJZAMJAQEhAQkBCWlzRGVmaW5lZAEFA2lkeAkAAgEJAKwCAgIgWW91ciBzdGFrZWQgbGFuZHMgZG9uJ3QgY29udGFpbiAFC2xhbmRBc3NldElkBANub3cIBQlsYXN0QmxvY2sJdGltZXN0YW1wBA5nb3ZSZWxlYXNlVGltZQkBC3ZhbHVlT3JFbHNlAgkAmggCBQtnb3ZDb250cmFjdAkBFWtleVVzZXJHd2xSZWxlYXNlVGltZQEFBGFkZHIAAAMJAGcCBQ5nb3ZSZWxlYXNlVGltZQUDbm93CQACAQkArAICAjlZb3VyIGdXTCBhcmUgdGFraW5nIHBhcnQgaW4gdm90aW5nLCBjYW5ub3QgdW5zdGFrZSB1bnRpbCAJAKQDAQUOZ292UmVsZWFzZVRpbWUEDmFyYlJlbGVhc2VUaW1lCQBkAgkBC3ZhbHVlT3JFbHNlAgkAmggCBQt3bGdDb250cmFjdAkBFGtleUxhc3RBcmJUaW1lQnlVc2VyAQUEYWRkcgAABQ5hcmJpdHJhZ2VEZWxheQMJAGYCBQ5hcmJSZWxlYXNlVGltZQUDbm93CQACAQkArAICAj9Zb3VyIHN0YWtlZCBsYW5kcyB0b29rIHBhcnQgaW4gYXJiaXRyYWdlLCBjYW5ub3QgdW5zdGFrZSB1bnRpbCAJAKQDAQUOYXJiUmVsZWFzZVRpbWUECXBpZWNlc0tleQkBFmtleVN0YWtlZFBpZWNlc0J5T3duZXIBBQRhZGRyBAxzdGFrZWRQaWVjZXMJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJcGllY2VzS2V5AAAECW5ld1BpZWNlcwMJAGYCBQZwaWVjZXMFDHN0YWtlZFBpZWNlcwAACQBlAgUMc3Rha2VkUGllY2VzBQZwaWVjZXMECXdsZ1Jlc3VsdAkA/AcEBQt3bGdDb250cmFjdAISb25TdGFrZVVuc3Rha2VMYW5kCQDMCAIFBGFkZHIFA25pbAUDbmlsCQCUCgIJAM4IAgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIAAQkA2QQBBQtsYW5kQXNzZXRJZAkAzAgCCQELRGVsZXRlRW50cnkBCQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFC2xhbmRBc3NldElkCQDMCAIJAQtEZWxldGVFbnRyeQEJASJrZXlTdGFrZWRUaW1lQnlUeXBlQXNzZXRJZEFuZE93bmVyAwUKTEFORFBSRUZJWAULbGFuZEFzc2V0SWQFBGFkZHIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEWtleVJlc1Byb3BvcnRpb25zAAUFcHJvcHMJAMwIAgkBC1N0cmluZ0VudHJ5AgUMcmVzQnlDb250S2V5BRB1cGRhdGVkQ29udFByb3BzCQDMCAIJAQtTdHJpbmdFbnRyeQIIBQtjbGFpbVJlc3VsdAJfMgkAuQkCCAULY2xhaW1SZXN1bHQCXzMCAToJAMwIAgMJAGYCCQCQAwEFBWxhbmRzAAEJAQtTdHJpbmdFbnRyeQIFCGxhbmRzS2V5CQC7CQIJANEIAgUFbGFuZHMJAQV2YWx1ZQEFA2lkeAIBXwkBC0RlbGV0ZUVudHJ5AQUIbGFuZHNLZXkJAMwIAgkBDEludGVnZXJFbnRyeQIFCXBpZWNlc0tleQUJbmV3UGllY2VzBQNuaWwFDXByb2xvZ0FjdGlvbnMFCXdsZ1Jlc3VsdAFpARN1bnN0YWtlTGFuZENhbGxiYWNrAgtsYW5kQXNzZXRJZARhZGRyAwkBAiE9AgkApQgBCAUBaQZjYWxsZXIFEGFjcmVzMkFkZHJlc3NTdHIJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAQNdW5zdGFrZVJlc3VsdAkBE3Vuc3Rha2VMYW5kSW50ZXJuYWwCBQRhZGRyBQtsYW5kQXNzZXRJZAQJd2xnUmVzdWx0CQD8BwQFC3dsZ0NvbnRyYWN0AhJvblN0YWtlVW5zdGFrZUxhbmQJAMwIAgUEYWRkcgUDbmlsBQNuaWwJAJQKAgkAzAgCCQEEQnVybgIJANkEAQULbGFuZEFzc2V0SWQAAQkAzAgCCQELRGVsZXRlRW50cnkBCQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFC2xhbmRBc3NldElkCQDMCAIJAQtEZWxldGVFbnRyeQEJASJrZXlTdGFrZWRUaW1lQnlUeXBlQXNzZXRJZEFuZE93bmVyAwUKTEFORFBSRUZJWAULbGFuZEFzc2V0SWQFBGFkZHIFA25pbAkAlwoFCAUNdW5zdGFrZVJlc3VsdAJfMQgFDXVuc3Rha2VSZXN1bHQCXzIIBQ11bnN0YWtlUmVzdWx0Al8zCAUNdW5zdGFrZVJlc3VsdAJfNAUJd2xnUmVzdWx0AWkBE3Vuc3Rha2VMYW5kUkVBRE9OTFkCC2xhbmRBc3NldElkBGFkZHIEDXVuc3Rha2VSZXN1bHQJARN1bnN0YWtlTGFuZEludGVybmFsAgUEYWRkcgULbGFuZEFzc2V0SWQJAJQKAgUDbmlsBQ11bnN0YWtlUmVzdWx0AWkBHHVuc3Rha2VMYW5kc0ZpbmFsaXplQ2FsbGJhY2sBBGFkZHIDCQECIT0CCQClCAEIBQFpBmNhbGxlcgUQYWNyZXMyQWRkcmVzc1N0cgkAAgECEVBlcm1pc3Npb24gZGVuaWVkCQCUCgIJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBFWtleVN0YWtlZExhbmRzQnlPd25lcgEFBGFkZHIJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBFmtleVN0YWtlZFBpZWNlc0J5T3duZXIBBQRhZGRyBQNuaWwAAAFpARRjb252ZXJ0VW5zdGFrZWRMYW5kcwADCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAhxFeGFjdGx5IG9uZSBwYXltZW50IHJlcXVpcmVkBANwbXQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAQHYXNzZXRJZAkBBXZhbHVlAQgFA3BtdAdhc3NldElkBAdhZGRyZXNzCQClCAEIBQFpBmNhbGxlcgMJAQIhPQIIBQNwbXQGYW1vdW50AAEJAAIBCQCsAgIJAKwCAgIETkZUIAUKTEFORFBSRUZJWAIkIHRva2VuIHNob3VsZCBiZSBhdHRhY2hlZCBhcyBwYXltZW50BAVhc3NldAkBBXZhbHVlAQkA7AcBBQdhc3NldElkAwkBAiE9AggFBWFzc2V0Bmlzc3VlcgUEdGhpcwkAAgECF1Vua25vd24gaXNzdWVyIG9mIHRva2VuAwkBASEBCQEIY29udGFpbnMCCAUFYXNzZXQEbmFtZQUKTEFORFBSRUZJWAkAAgEJAKwCAgkArAICAglPbmx5IE5GVCAFCkxBTkRQUkVGSVgCFCB0b2tlbnMgYXJlIGFjY2VwdGVkBAtsYW5kQXNzZXRJZAkA2AQBBQdhc3NldElkBAFkCQC1CQIIBQVhc3NldAtkZXNjcmlwdGlvbgIBXwQGcGllY2VzCQEPbnVtUGllY2VzQnlTaXplAQkAkQMCBQFkBQtyZWNMYW5kU2l6ZQQKaW5mcmFMZXZlbAkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEFC2xhbmRBc3NldElkAAAECWFydFBpZWNlcwkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEga2V5TGFuZEFydFN0YXR1c0J5VHlwZUFuZEFzc2V0SWQCBQpBUlRQUkVTQUxFBQtsYW5kQXNzZXRJZAAABAthY3Jlc0Ftb3VudAkAZAIJAGgCBQZwaWVjZXMFBU1VTFQ4CQBpAgkAaAIJAGQCCQBoAgUGcGllY2VzBQppbmZyYUxldmVsBQlhcnRQaWVjZXMFBU1VTFQ4AAUEA3JlcQkA/AcEBQ1hY3Jlc0NvbnRyYWN0AhRyZXF1ZXN0QWNyZXNDYWxsYmFjawkAzAgCBQthY3Jlc0Ftb3VudAUDbmlsBQNuaWwDCQAAAgUDcmVxBQNyZXEEBWNhbGxiCQD8BwQJARFAZXh0ck5hdGl2ZSgxMDYyKQEFEGFjcmVzMkFkZHJlc3NTdHICEnN0YWtlQWNyZXNDYWxsYmFjawkAzAgCBQdhZGRyZXNzBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFDGFjcmVzQXNzZXRJZAULYWNyZXNBbW91bnQFA25pbAMJAAACBQVjYWxsYgUFY2FsbGIJAJQKAgkAzAgCCQEEQnVybgIJANkEAQULbGFuZEFzc2V0SWQAAQUDbmlsAAAJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEJc3Rha2VEdWNrAAQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAhxFeGFjdGx5IG9uZSBwYXltZW50IHJlcXVpcmVkBANwbXQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAQHYXNzZXRJZAkBBXZhbHVlAQgFA3BtdAdhc3NldElkBAdhZGRyZXNzCQClCAEIBQFpBmNhbGxlcgMJAQIhPQIIBQNwbXQGYW1vdW50AAEJAAIBCQCsAgIJAKwCAgIETkZUIAUKRFVDS1BSRUZJWAIkIHRva2VuIHNob3VsZCBiZSBhdHRhY2hlZCBhcyBwYXltZW50BAVhc3NldAkBBXZhbHVlAQkA7AcBBQdhc3NldElkBAZpc1JvYm8DAwUTS1NfQUxMT1dfUk9CT19EVUNLUwkAAAIIBQVhc3NldAZpc3N1ZXIFBHRoaXMHCQEIY29udGFpbnMCCAUFYXNzZXQEbmFtZQULUk9CT19QUkVGSVgHAwMDCQECIT0CCAUFYXNzZXQGaXNzdWVyBQ1pbmN1YmF0b3JBZGRyCQECIT0CCAUFYXNzZXQGaXNzdWVyBQticmVlZGVyQWRkcgcJAQEhAQUGaXNSb2JvBwkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgISVW5rbm93biBpc3N1ZXIgb2YgBQpEVUNLUFJFRklYAgQgb3IgBQtST0JPX1BSRUZJWAIGIHRva2VuAwMJAQEhAQkBCGNvbnRhaW5zAggFBWFzc2V0BG5hbWUFCkRVQ0tQUkVGSVgJAQEhAQUGaXNSb2JvBwkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgIJT25seSBORlQgBQpEVUNLUFJFRklYAgQgb3IgBQtST0JPX1BSRUZJWAIUIHRva2VucyBhcmUgYWNjZXB0ZWQECmFzc2V0SWRTdHIJANgEAQUHYXNzZXRJZAQHdGltZUtleQkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQphc3NldElkU3RyAwkBCWlzRGVmaW5lZAEJAJ8IAQUHdGltZUtleQkAAgEJAKwCAgkArAICAgRORlQgCAUFYXNzZXQEbmFtZQISIGlzIGFscmVhZHkgc3Rha2VkAwkBCWlzRGVmaW5lZAEJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUHYWRkcmVzcwkAAgEJAKwCAgIdWW91IGFscmVhZHkgc3Rha2VkIG9uZSBkdWNrOiAIBQVhc3NldARuYW1lBAZsb2NLZXkJAQ9rZXlEdWNrTG9jYXRpb24BBQphc3NldElkU3RyBAhsb2NhdGlvbgkAoggBBQZsb2NLZXkEBWJwS2V5CQERa2V5QmFja3BhY2tCeUR1Y2sBBQphc3NldElkU3RyBAhiYWNrcGFjawkAoggBBQVicEtleQQJa2V5SGVhbHRoCQENa2V5RHVja0hlYWx0aAEFCmFzc2V0SWRTdHIEBW1heEhQCQEJbWF4SGVhbHRoAQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEMa2V5RHVja0xldmVsAQUKYXNzZXRJZFN0cgAABAljdXJIZWFsdGgJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJa2V5SGVhbHRoBQVtYXhIUAkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQd0aW1lS2V5CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBImtleVN0YWtlZFRpbWVCeVR5cGVBc3NldElkQW5kT3duZXIDBQpEVUNLUFJFRklYCQDYBAEFB2Fzc2V0SWQFB2FkZHJlc3MIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQtTdHJpbmdFbnRyeQIJARBrZXlEdWNrSWRUb093bmVyAQUKYXNzZXRJZFN0cgUHYWRkcmVzcwkAzAgCCQELU3RyaW5nRW50cnkCCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQdhZGRyZXNzBQphc3NldElkU3RyBQNuaWwDCQEJaXNEZWZpbmVkAQUIbG9jYXRpb24FA25pbAkAzggCCQDMCAIJAQtTdHJpbmdFbnRyeQIFBmxvY0tleQUPREVGQVVMVExPQ0FUSU9OBQNuaWwDCQEJaXNEZWZpbmVkAQUIYmFja3BhY2sFA25pbAkAzggCCQDNCAIJAMwIAgkBC1N0cmluZ0VudHJ5AgUFYnBLZXkCGjA6MF8wXzBfMF8wXzA6MF8wXzBfMF8wXzA6BQNuaWwJAQxJbnRlZ2VyRW50cnkCBQlrZXlIZWFsdGgFCWN1ckhlYWx0aAUNcHJvbG9nQWN0aW9ucwFpAQt1bnN0YWtlRHVjawEKYXNzZXRJZFN0cgQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQHYXNzZXRJZAkA2QQBBQphc3NldElkU3RyBAdhZGRyZXNzCQClCAEIBQFpBmNhbGxlcgQFYXNzZXQJAQV2YWx1ZQEJAOwHAQUHYXNzZXRJZAQHdGltZUtleQkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQphc3NldElkU3RyAwkBASEBCQEJaXNEZWZpbmVkAQkAnwgBBQd0aW1lS2V5CQACAQkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAg4gaXMgbm90IHN0YWtlZAMJAQEhAQkBCWlzRGVmaW5lZAEJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUHYWRkcmVzcwkAAgEJAKwCAgkArAICAglUaGUgZHVjayAIBQVhc3NldARuYW1lAg4gaXMgbm90IHN0YWtlZAQFb3duZXIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEQa2V5RHVja0lkVG9Pd25lcgEFCmFzc2V0SWRTdHIJAKwCAgkArAICAgRORlQgCAUFYXNzZXQEbmFtZQIMIGlzIG9ycGhhbmVkAwkBAiE9AgUFb3duZXIFB2FkZHJlc3MJAAIBAhdTdGFrZWQgTkZUIGlzIG5vdCB5b3VycwMJAQ9jaGVja1RvdXJuYW1lbnQBBQphc3NldElkU3RyCQACAQIbdW5zdGFrZUR1Y2tfY2hlY2tUb3VybmFtZW50BAlrZXlIZWFsdGgJAQ1rZXlEdWNrSGVhbHRoAQUKYXNzZXRJZFN0cgQFbWF4SFAJAQltYXhIZWFsdGgBCQELdmFsdWVPckVsc2UCCQCfCAEJAQxrZXlEdWNrTGV2ZWwBBQphc3NldElkU3RyAAAEBmhlYWx0aAkBC3ZhbHVlT3JFbHNlAgkAnwgBBQlrZXlIZWFsdGgFBW1heEhQAwkAZgIFBW1heEhQBQZoZWFsdGgJAAIBCQCsAgIJAKwCAgIZUGxlYXNlIGhlYWwgeW91ciBkdWNrIHRvIAkApAMBBQVtYXhIUAITaHAgYmVmb3JlIHVuc3Rha2luZwkAzggCCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgABBQdhc3NldElkCQDMCAIJAQtEZWxldGVFbnRyeQEFB3RpbWVLZXkJAMwIAgkBC0RlbGV0ZUVudHJ5AQUJa2V5SGVhbHRoCQDMCAIJAQtEZWxldGVFbnRyeQEJAQ9rZXlEdWNrTG9jYXRpb24BBQphc3NldElkU3RyCQDMCAIJAQtEZWxldGVFbnRyeQEJARBrZXlEdWNrSWRUb093bmVyAQUKYXNzZXRJZFN0cgkAzAgCCQELRGVsZXRlRW50cnkBCQEia2V5U3Rha2VkVGltZUJ5VHlwZUFzc2V0SWRBbmRPd25lcgMFCkRVQ0tQUkVGSVgFCmFzc2V0SWRTdHIFB2FkZHJlc3MJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUHYWRkcmVzcwUDbmlsBQ1wcm9sb2dBY3Rpb25zAWkBE3Vuc3Rha2VEdWNrQ2FsbGJhY2sCC2R1Y2tBc3NldElkBGFkZHIDCQECIT0CCQClCAEIBQFpBmNhbGxlcgUQYWNyZXMyQWRkcmVzc1N0cgkAAgECEVBlcm1pc3Npb24gZGVuaWVkBA11bnN0YWtlUmVzdWx0CQETdW5zdGFrZUR1Y2tJbnRlcm5hbAIFBGFkZHIFC2R1Y2tBc3NldElkCQCUCgIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQUEYWRkcgABCQDZBAEFC2R1Y2tBc3NldElkCQDMCAIJAQtEZWxldGVFbnRyeQEJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQULZHVja0Fzc2V0SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBEGtleUR1Y2tJZFRvT3duZXIBBQtkdWNrQXNzZXRJZAkAzAgCCQELRGVsZXRlRW50cnkBCQEia2V5U3Rha2VkVGltZUJ5VHlwZUFzc2V0SWRBbmRPd25lcgMFCkRVQ0tQUkVGSVgFC2R1Y2tBc3NldElkBQRhZGRyCQDMCAIJAQtEZWxldGVFbnRyeQEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFBGFkZHIFA25pbAUNdW5zdGFrZVJlc3VsdAFpARN1bnN0YWtlRHVja1JFQURPTkxZAgtkdWNrQXNzZXRJZARhZGRyBA11bnN0YWtlUmVzdWx0CQETdW5zdGFrZUR1Y2tJbnRlcm5hbAIFBGFkZHIFC2R1Y2tBc3NldElkCQCUCgIFA25pbAUNdW5zdGFrZVJlc3VsdAFpAQhjbGFpbVJlcwIGYW1vdW50DmxhbmRBc3NldElkU3RyBA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBARhZGRyCQClCAEIBQFpDG9yaWdpbkNhbGxlcgQGcmVzdWx0CQEQY2xhaW1SZXNJbnRlcm5hbAQFBGFkZHIFBmFtb3VudAUNY2xhaW1Nb2RlRHVjawUObGFuZEFzc2V0SWRTdHIEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUEYWRkcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAkAlAoCCQDOCAIJAM0IAgkAzQgCCQDOCAIIBQZyZXN1bHQCXzEICQEXdXBkYXRlRHVja1N0YXRzSW50ZXJuYWwCBQtkdWNrQXNzZXRJZAkAawMFB3hwQ2xhaW0FBmFtb3VudAUFTVVMVDgCXzEJAQtTdHJpbmdFbnRyeQIIBQZyZXN1bHQCXzIJALkJAggFBnJlc3VsdAJfMwIBOgkBC1N0cmluZ0VudHJ5AggFBnJlc3VsdAJfNAkAuQkCCAUGcmVzdWx0Al81AgE6BQ1wcm9sb2dBY3Rpb25zCQCRAwIIBQZyZXN1bHQCXzMFCGJwSWR4UmVzAWkBDGNsYWltUmVzVG9XSAIGYW1vdW50DmxhbmRBc3NldElkU3RyBA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBARhZGRyCQClCAEIBQFpDG9yaWdpbkNhbGxlcgQGcmVzdWx0CQEQY2xhaW1SZXNJbnRlcm5hbAQFBGFkZHIFBmFtb3VudAULY2xhaW1Nb2RlV2gFDmxhbmRBc3NldElkU3RyCQCUCgIJAM4IAgkAzQgCCQDNCAIJAM4IAggFBnJlc3VsdAJfMQgJARZ1cGRhdGVBY2NTdGF0c0ludGVybmFsAgUEYWRkcgkAawMFB3hwQ2xhaW0FBmFtb3VudAUFTVVMVDgCXzEJAQtTdHJpbmdFbnRyeQIIBQZyZXN1bHQCXzIJALkJAggFBnJlc3VsdAJfMwIBOgkBC1N0cmluZ0VudHJ5AggFBnJlc3VsdAJfNAkAuQkCCAUGcmVzdWx0Al81AgE6BQ1wcm9sb2dBY3Rpb25zCQCRAwIIBQZyZXN1bHQCXzUFCHdoSWR4UmVzAWkBBmZsaWdodAIHbWVzc2FnZQNzaWcEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQECHVzZXJBZGRyCQClCAEIBQFpBmNhbGxlcgQBZgkBDGZsaWdodENvbW1vbgMFCHVzZXJBZGRyBQdtZXNzYWdlBQNzaWcEBW5ld0hQCAUBZgJfMQQLZHVja0Fzc2V0SWQIBQFmAl8yBAZsb2NLZXkJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAQLY3VyTG9jYXRpb24JAQt2YWx1ZU9yRWxzZQIJAKIIAQUGbG9jS2V5BQ9ERUZBVUxUTE9DQVRJT04EC25ld0xvY2F0aW9uCAUBZgJfNAMJAAACBQtuZXdMb2NhdGlvbgULY3VyTG9jYXRpb24JAAIBAiJZb3UgY2FuJ3QgZmx5IHRvIHRoZSBzYW1lIGxvY2F0aW9uBAZuZXdMb2MJALUJAgULbmV3TG9jYXRpb24CAV8EBmlzVG91cgkAAAIJAJEDAgUGbmV3TG9jBQpsb2NJZHhUeXBlAgFUBAdpc0RlbGl2CQAAAgkAkQMCBQZuZXdMb2MFCmxvY0lkeFR5cGUCAUQEBWVxS2V5CQEQa2V5RHVja0VxdWlwbWVudAEFC2R1Y2tBc3NldElkBAljdXJyZW50RXEJAQt2YWx1ZU9yRWxzZQIJAKIIAQUFZXFLZXkCFyw7LF8sOyxfLDssXyw7LF8sOyxfLDssBA0kdDA3Mzc2OTczODc1CQERc3VidHJhY3RFcXVpcG1lbnQCBQljdXJyZW50RXEIBQFmAl81BAVuZXdFcQgFDSR0MDczNzY5NzM4NzUCXzEED3Nob3VsZFplcm9CdWZmcwgFDSR0MDczNzY5NzM4NzUCXzIEB2lnbm9yZWQIBQ0kdDA3Mzc2OTczODc1Al8zBA0kdDA3Mzg3ODc1NzEwAwkBASEBCQEJb25NaXNzaW9uAgUSdG91cm5hbWVudENvbnRyYWN0BQtjdXJMb2NhdGlvbgMFBmlzVG91cgkBDGNoZWF0QXR0ZW1wdAMFC2N1ckxvY2F0aW9uBQtuZXdMb2NhdGlvbgAFAwkBASEBBQdpc0RlbGl2AwkAZgIFBW5ld0hQAAAJAJQKAgULbmV3TG9jYXRpb24FBW5ld0hQCQCUCgIFC2N1ckxvY2F0aW9uAAADCQBmAgUFbmV3SFAAAAQBcwkA/AcEBQR0aGlzAg9wcm9jZXNzRGVsaXZlcnkJAMwIAgULZHVja0Fzc2V0SWQFA25pbAUDbmlsAwkAAAIFAXMFAXMJAJQKAgULY3VyTG9jYXRpb24FBW5ld0hQCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQCUCgIFC2N1ckxvY2F0aW9uAAADCQEOaXNJblRvdXJuYW1lbnQCBRJ0b3VybmFtZW50Q29udHJhY3QFC2N1ckxvY2F0aW9uAwkBASEBCQEOaXNJblRvdXJuYW1lbnQCBRJ0b3VybmFtZW50Q29udHJhY3QFC25ld0xvY2F0aW9uCQACAQIqWW91ciBkdWNrIGlzIHRha2luZyBwYXJ0IGluIHRoZSB0b3VybmFtZW50BAVzY29yZQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBm5ld0xvYwUIbG9jSWR4SWQEBmN1ckxvYwkAtQkCBQtjdXJMb2NhdGlvbgIBXwQGbGFzdElkCQELdmFsdWVPckVsc2UCCQCaCAIFEnRvdXJuYW1lbnRDb250cmFjdAUNbGFzdFRvdXJJZEtleQAAAwkBAiE9AgUFc2NvcmUJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUGY3VyTG9jBQhsb2NJZHhJZAABCQEMY2hlYXRBdHRlbXB0AwULY3VyTG9jYXRpb24FC25ld0xvY2F0aW9uAAcDCQBmAgUFbmV3SFAAAAQJbG9jYWxCZXN0CQELdmFsdWVPckVsc2UCCQCaCAIFEnRvdXJuYW1lbnRDb250cmFjdAkBGmtleUJlc3RSZXN1bHRCeVRvdXJBbmREdWNrAgUGbGFzdElkBQtkdWNrQXNzZXRJZAAABAh1cGRMb2NhbAMJAGYCBQVzY29yZQUJbG9jYWxCZXN0CQD8BwQFEnRvdXJuYW1lbnRDb250cmFjdAIOc2F2ZUR1Y2tSZXN1bHQJAMwIAgULZHVja0Fzc2V0SWQJAMwIAgUFc2NvcmUFA25pbAUDbmlsBQR1bml0AwkAAAIFCHVwZExvY2FsBQh1cGRMb2NhbAkAlAoCBQtuZXdMb2NhdGlvbgUFbmV3SFAJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAJQKAgULY3VyTG9jYXRpb24AAAkAAgEJAKwCAgIUVW5rbm93biBjdXJMb2NhdGlvbjoFC2N1ckxvY2F0aW9uBAlsb2NUb1NhdmUIBQ0kdDA3Mzg3ODc1NzEwAl8xBAhocFRvU2F2ZQgFDSR0MDczODc4NzU3MTACXzIJAJQKAgkAzggCCQDOCAIJAM4IAgkAzAgCCQELU3RyaW5nRW50cnkCBQZsb2NLZXkFCWxvY1RvU2F2ZQkAzAgCCQELU3RyaW5nRW50cnkCBQVlcUtleQUFbmV3RXEJAMwIAgkBDEludGVnZXJFbnRyeQIJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQFCGhwVG9TYXZlBQNuaWwFDXByb2xvZ0FjdGlvbnMDBQ9zaG91bGRaZXJvQnVmZnMJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDGtleUR1Y2tCdWZmcwEFC2R1Y2tBc3NldElkAgkwXzBfMF8wXzAFA25pbAUDbmlsCAkBF3VwZGF0ZUR1Y2tTdGF0c0ludGVybmFsAgULZHVja0Fzc2V0SWQDCQBmAgUFbmV3SFAAAAUPeHBTdWNjZXNzRmxpZ2h0BQx4cEZhaWxGbGlnaHQCXzEIBQFmAl8zAWkBBGhlYWwDCnF1YW50aXR5TDEKcXVhbnRpdHlMMgpxdWFudGl0eUwzBA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMDAwkAZgIAAAUKcXVhbnRpdHlMMQYJAGYCAAAFCnF1YW50aXR5TDIGCQBmAgAABQpxdWFudGl0eUwzCQACAQIbUXVhbnRpdHkgY2Fubm90IGJlIG5lZ2F0aXZlBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEJAKUIAQgFAWkGY2FsbGVyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkAwkBD2NoZWNrVG91cm5hbWVudAEFC2R1Y2tBc3NldElkCQACAQIUaGVhbF9jaGVja1RvdXJuYW1lbnQEA3F0cwkAzAgCBQpxdWFudGl0eUwxCQDMCAIFCnF1YW50aXR5TDIJAMwIAgUKcXVhbnRpdHlMMwUDbmlsBAlrZXlIZWFsdGgJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQEBW1heEhQCQEJbWF4SGVhbHRoAQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEMa2V5RHVja0xldmVsAQULZHVja0Fzc2V0SWQAAAQJb2xkSGVhbHRoCQELdmFsdWVPckVsc2UCCQCfCAEFCWtleUhlYWx0aAUFbWF4SFADCQBnAgUJb2xkSGVhbHRoBQVtYXhIUAkAAgEJAKwCAgkArAICAg9IUCBzaG91bGQgYmUgPCAJAKQDAQUFbWF4SFACCCB0byBoZWFsBAVicEtleQkBEWtleUJhY2twYWNrQnlEdWNrAQULZHVja0Fzc2V0SWQEC2N1cnJlbnRQYWNrCQELZ2V0QmFja3BhY2sBBQVicEtleQQIcHJvZExpc3QDCQAAAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kAgAFA25pbAkAvAkCCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QCAV8KAQtpdGVyYXRlUHJvZAIDYWNjBnJlY2lwZQQBbggFA2FjYwJfMgQBeAMJAGYCCQCQAwEFCHByb2RMaXN0BQFuCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUIcHJvZExpc3QFAW4AAAMJAGYCAAMFAW4EAXEJAJEDAgUDcXRzBQFuAwkAZgIFAXEFAXgJAAIBCQCsAgIJAKwCAgkArAICAg5Zb3UgaGF2ZSBvbmx5IAkApAMBBQF4AgQgb2YgCQCRAwIFCXByb2RUeXBlcwUBbgkAlQoDCQDNCAIIBQNhY2MCXzEJAKQDAQkAZQIFAXgFAXEJAGQCBQFuAAEJAGQCCAUDYWNjAl8zCQBoAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIJALUJAgUGcmVjaXBlAgFfBQpySWR4RWZmZWN0BQFxCQCVCgMJAM0IAggFA2FjYwJfMQkApAMBBQF4CQBkAgUBbgABCAUDYWNjAl8zBAZyZXN1bHQKAAIkbAUQcHJvZHVjdGlvbk1hdHJpeAoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJUKAwUDbmlsAAAAAAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQELaXRlcmF0ZVByb2QCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDUwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIAIwAkACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgQJbmV3SGVhbHRoCQCXAwEJAMwIAgUFbWF4SFAJAMwIAgkAZAIFCW9sZEhlYWx0aAgFBnJlc3VsdAJfMwUDbmlsCQCUCgIJAM4IAgkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlrZXlIZWFsdGgFCW5ld0hlYWx0aAkAzAgCCQELU3RyaW5nRW50cnkCBQVicEtleQkAugkCCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCmJwSWR4TGV2ZWwJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhSZXMJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhNYXQJAMwIAgkAuQkCCAUGcmVzdWx0Al8xAgFfBQNuaWwCAToFA25pbAUNcHJvbG9nQWN0aW9ucwgJARd1cGRhdGVEdWNrU3RhdHNJbnRlcm5hbAIFC2R1Y2tBc3NldElkCQBoAgUGeHBIZWFsCQBkAgkAZAIFCnF1YW50aXR5TDEFCnF1YW50aXR5TDIFCnF1YW50aXR5TDMCXzEFCW5ld0hlYWx0aAFpAQZoZWFsRVMABA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECHEV4YWN0bHkgb25lIHBheW1lbnQgcmVxdWlyZWQEA3BtdAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAAAwkBAiE9AggFA3BtdAdhc3NldElkBQt1c2R0QXNzZXRJZAkAAgECGkFsbG93ZWQgVVNEVCBwYXltZW50IG9ubHkhBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEJAKUIAQgFAWkGY2FsbGVyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkAwkBD2NoZWNrVG91cm5hbWVudAEFC2R1Y2tBc3NldElkCQACAQIWaGVhbEVTX2NoZWNrVG91cm5hbWVudAQJa2V5SGVhbHRoCQENa2V5RHVja0hlYWx0aAEFC2R1Y2tBc3NldElkBAVtYXhIUAkBCW1heEhlYWx0aAEJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBDGtleUR1Y2tMZXZlbAEFC2R1Y2tBc3NldElkAAAECW9sZEhlYWx0aAkBC3ZhbHVlT3JFbHNlAgkAnwgBBQlrZXlIZWFsdGgFBW1heEhQAwkAZgIFCW9sZEhlYWx0aAAACQACAQIoSFAgc2hvdWxkIGJlIDAgdG8gY2FsbCBFbWVyZ2VuY3kgU2VydmljZQQFYnBLZXkJARFrZXlCYWNrcGFja0J5RHVjawEFC2R1Y2tBc3NldElkBAtjdXJyZW50UGFjawkBC2dldEJhY2twYWNrAQUFYnBLZXkECHByb2RMaXN0AwkAAAIJAJEDAgULY3VycmVudFBhY2sFCWJwSWR4UHJvZAIABQNuaWwJALwJAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kAgFfBA1tZWRLaXRBbW91bnQxAwkAZgIJAJADAQUIcHJvZExpc3QAAAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCHByb2RMaXN0AAAAAAQNbWVkS2l0QW1vdW50MgMJAGYCCQCQAwEFCHByb2RMaXN0AAEJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQhwcm9kTGlzdAABAAAEDW1lZEtpdEFtb3VudDMDCQBmAgkAkAMBBQhwcm9kTGlzdAACCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUIcHJvZExpc3QAAgAAAwMDCQBmAgUNbWVkS2l0QW1vdW50MQAABgkAZgIFDW1lZEtpdEFtb3VudDIAAAYJAGYCBQ1tZWRLaXRBbW91bnQzAAAJAAIBAh9Zb3UgaGF2ZSB0byB1c2Ugb3duIE1lZGljYWwgS2l0BAhleGlzdFN0cgkAnQgCBQ9lY29ub215Q29udHJhY3QJAQ5rZXlFc1dhcmVob3VzZQAEDGV4aXN0QW1vdW50cwMJAQlpc0RlZmluZWQBBQhleGlzdFN0cgkAvAkCCQEFdmFsdWUBBQhleGlzdFN0cgIBXwUDbmlsBAtleGlzdEFtb3VudAMJAGYCCQCQAwEFDGV4aXN0QW1vdW50cwAACQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUMZXhpc3RBbW91bnRzAAAAAAMJAGcCAAAFC2V4aXN0QW1vdW50CQACAQI5VGhlcmUgYXJlIG5vIE1lZGljYWwgS2l0cyBMMSBhdCBFbWVyZ2VuY3kgU2VydmljZSBzdG9yYWdlBAluZXdIZWFsdGgJAGQCBQlvbGRIZWFsdGgJAQ1wYXJzZUludFZhbHVlAQkAkQMCCQC1CQIJAJEDAgUQcHJvZHVjdGlvbk1hdHJpeAAAAgFfBQpySWR4RWZmZWN0BAVuZXdFUwkAuQkCCQDMCAIJAKQDAQkAZQIFC2V4aXN0QW1vdW50AAEJANEIAgUMZXhpc3RBbW91bnRzAAACAV8EBnJlY2lwZQkAtQkCCQCRAwIFEHByb2R1Y3Rpb25NYXRyaXgAAAIBXwQIdG90YWxNYXQJARJnZXRSZWNpcGVNYXRlcmlhbHMBBQZyZWNpcGUECXNlbGxQcmljZQkAawMJAGgCBQh0b3RhbE1hdAUKRVNTRUxMQ09FRgUQUkVTT1VSQ0VQUklDRU1JTgkAaAIFBU1VTFQ4BQ5QUk9EVUNUUEtHU0laRQMJAQIhPQIIBQNwbXQGYW1vdW50BQlzZWxsUHJpY2UJAAIBCQCsAgICG1BheW1lbnQgYXR0YWNoZWQgc2hvdWxkIGJlIAkApAMBBQlzZWxsUHJpY2UEBnJlc3VsdAkBCGFzU3RyaW5nAQkA/AcEBQ9lY29ub215Q29udHJhY3QCD3VwZGF0ZUVzU3RvcmFnZQkAzAgCBQVuZXdFUwUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQt1c2R0QXNzZXRJZAUJc2VsbFByaWNlBQNuaWwJAJQKAgkAzggCCQDNCAIFDXByb2xvZ0FjdGlvbnMJAQxJbnRlZ2VyRW50cnkCBQlrZXlIZWFsdGgFCW5ld0hlYWx0aAgJARd1cGRhdGVEdWNrU3RhdHNJbnRlcm5hbAIFC2R1Y2tBc3NldElkBQh4cENhbGxFUwJfMQUGcmVzdWx0AWkBDnVwZGF0ZUJhY2twYWNrAgtkdWNrQXNzZXRJZAduZXdQYWNrAwkBAiE9AggFAWkGY2FsbGVyBQ9lY29ub215Q29udHJhY3QJAAIBAhFwZXJtaXNzaW9uIGRlbmllZAkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIJARFrZXlCYWNrcGFja0J5RHVjawEFC2R1Y2tBc3NldElkBQduZXdQYWNrBQNuaWwFB25ld1BhY2sBaQEPY29tbWl0Rm9yUmFuZG9tAAQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkEC2ZpbmlzaEJsb2NrCQBkAgUGaGVpZ2h0BQtyYW5kb21EZWxheQQEYWRkcgkApQgBCAUBaQZjYWxsZXIJAJQKAgkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEJa2V5Q29tbWl0AQUEYWRkcgULZmluaXNoQmxvY2sFA25pbAUNcHJvbG9nQWN0aW9ucwULZmluaXNoQmxvY2sBaQEMcmV2ZWFsUmFuZG9tAQhtYXhWYWx1ZQQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkEBGFkZHIJAKUIAQgFAWkGY2FsbGVyBAlmaW5pc2hLZXkJAQlrZXlDb21taXQBBQRhZGRyBAtmaW5pc2hCbG9jawkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCfCAEFCWZpbmlzaEtleQIkWW91IGhhdmUgdG8gY29tbWl0Rm9yUmFuZG9tKCkgZmlyc3QhAwkAZgIFC2ZpbmlzaEJsb2NrBQZoZWlnaHQJAAIBCQCsAgICNFJhbmRvbSBudW1iZXIgaXMgbm90IHJlYWR5IHlldCwgd2FpdCB1bnRpbCBoZWlnaHQgPSAJAKQDAQULZmluaXNoQmxvY2sEB2VudHJvcHkJAQV2YWx1ZQEICQEFdmFsdWUBCQDtBwEFC2ZpbmlzaEJsb2NrA3ZyZgQEc2FsdAkAmwMBCQELdmFsdWVPckVsc2UCCQCiCAEJARFrZXlMYXN0VHhJZEJ5VXNlcgEFBGFkZHICAAQEcmFuZAkBD2dldFJhbmRvbU51bWJlcgMFCG1heFZhbHVlBQRzYWx0BQdlbnRyb3B5CQCUCgIJAM4IAgkAzAgCCQELRGVsZXRlRW50cnkBBQlmaW5pc2hLZXkFA25pbAUNcHJvbG9nQWN0aW9ucwUEcmFuZAFpAQhidXlTTGFuZAAEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQIcRXhhY3RseSBvbmUgcGF5bWVudCByZXF1aXJlZAQDcG10CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAADCQECIT0CCAUDcG10B2Fzc2V0SWQFC3VzZHRBc3NldElkCQACAQIaQWxsb3dlZCBVU0RUIHBheW1lbnQgb25seSEDCQECIT0CCAUDcG10BmFtb3VudAUHRVhQVVNEVAkAAgEJAKwCAgIbUGF5bWVudCBhdHRhY2hlZCBzaG91bGQgYmUgCQCkAwEFB0VYUFVTRFQEBnJlc3VsdAkBEmV4cGVkaXRpb25JbnRlcm5hbAIIBQFpBmNhbGxlcggFAWkNdHJhbnNhY3Rpb25JZAQLYWNyZXNSZXN1bHQJAQVhc0ludAEJAPwHBAUNYWNyZXNDb250cmFjdAIJYnVybkFjcmVzCQDMCAIFDFNfQ09TVF9BQ1JFUwUDbmlsBQNuaWwJAJQKAgkAzggCCQDOCAIJAM0IAggFBnJlc3VsdAJfMQkBDlNjcmlwdFRyYW5zZmVyAwUPZWNvbm9teUNvbnRyYWN0CAUDcG10BmFtb3VudAULdXNkdEFzc2V0SWQICQEWdXBkYXRlQWNjU3RhdHNJbnRlcm5hbAIJAKUIAQgFAWkGY2FsbGVyBQp4cE5ld1NMYW5kAl8xBQ1wcm9sb2dBY3Rpb25zCQCUCgIICAUGcmVzdWx0Al8yAl8xBQthY3Jlc1Jlc3VsdAFpAQpleHBlZGl0aW9uAgdtZXNzYWdlA3NpZwQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQIdXNlckFkZHIJAKUIAQgFAWkGY2FsbGVyBAFmCQEMZmxpZ2h0Q29tbW9uAwUIdXNlckFkZHIFB21lc3NhZ2UFA3NpZwQLZHVja0Fzc2V0SWQIBQFmAl8yBAlrZXlIZWFsdGgJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQEBWJwS2V5CQERa2V5QmFja3BhY2tCeUR1Y2sBBQtkdWNrQXNzZXRJZAQLY3VycmVudFBhY2sJAQtnZXRCYWNrcGFjawEFBWJwS2V5BAVtTGlzdAkAtQkCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeE1hdAIBXwQGbmV3TWF0CQC5CQIJARFzdWJ0cmFjdE1hdGVyaWFscwMGBQVtTGlzdAUMRVhQTUFURVJJQUxTAgFfBAVlcUtleQkBEGtleUR1Y2tFcXVpcG1lbnQBBQtkdWNrQXNzZXRJZAQJY3VycmVudEVxCQELdmFsdWVPckVsc2UCCQCiCAEFBWVxS2V5AhcsOyxfLDssXyw7LF8sOyxfLDssXyw7LAQNJHQwODM2MzA4MzczNgkBEXN1YnRyYWN0RXF1aXBtZW50AgUJY3VycmVudEVxCAUBZgJfNQQFbmV3RXEIBQ0kdDA4MzYzMDgzNzM2Al8xBA9zaG91bGRaZXJvQnVmZnMIBQ0kdDA4MzYzMDgzNzM2Al8yBAdpZ25vcmVkCAUNJHQwODM2MzA4MzczNgJfMwQBZQkBEmV4cGVkaXRpb25JbnRlcm5hbAIIBQFpBmNhbGxlcggFAWkNdHJhbnNhY3Rpb25JZAQCaWQICAUBZQJfMgJfMQQGcmVzdWx0AwkAZwIAAAgFAWYCXzEJAJUKAwkAzAgCCQEMSW50ZWdlckVudHJ5AgUJa2V5SGVhbHRoAAAJAMwIAgkBC1N0cmluZ0VudHJ5AgUFZXFLZXkFBW5ld0VxBQNuaWwCAAAACQCVCgMJAM4IAggFAWUCXzEDBQ9zaG91bGRaZXJvQnVmZnMJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDGtleUR1Y2tCdWZmcwEFC2R1Y2tBc3NldElkAgkwXzBfMF8wXzAFA25pbAkAzQgCCQDNCAIJAM0IAgkAzQgCBQNuaWwJAQtTdHJpbmdFbnRyeQIJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAkAuQkCCQDMCAIICAUBZQJfMgJfMgkAzAgCAgFMCQDMCAIFAmlkBQNuaWwCAV8JAQxJbnRlZ2VyRW50cnkCBQlrZXlIZWFsdGgIBQFmAl8xCQELU3RyaW5nRW50cnkCBQVlcUtleQUFbmV3RXEJAQtTdHJpbmdFbnRyeQIFBWJwS2V5CQC5CQIJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUKYnBJZHhMZXZlbAkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeFJlcwkAzAgCBQZuZXdNYXQJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kBQNuaWwCAToFAmlkCAUBZgJfMwMJAQ9jaGVja1RvdXJuYW1lbnQBBQtkdWNrQXNzZXRJZAkAAgECGmV4cGVkaXRpb25fY2hlY2tUb3VybmFtZW50BAthY3Jlc1Jlc3VsdAkBBWFzSW50AQkA/AcEBQ1hY3Jlc0NvbnRyYWN0AglidXJuQWNyZXMJAMwIAgUMU19DT1NUX0FDUkVTBQNuaWwFA25pbAkAlAoCCQDOCAIJAM4IAggFBnJlc3VsdAJfMQgJARd1cGRhdGVEdWNrU3RhdHNJbnRlcm5hbAIFC2R1Y2tBc3NldElkBQp4cE5ld1NMYW5kAl8xBQ1wcm9sb2dBY3Rpb25zCQCVCgMIBQZyZXN1bHQCXzIIBQZyZXN1bHQCXzMFC2FjcmVzUmVzdWx0AWkBEGJ1eVNMYW5kRm9yQWNyZXMABA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECImV4YWN0bHkgMSBwYXltZW50IG11c3QgYmUgYXR0YWNoZWQEA3BtdAkAkQMCCAUBaQhwYXltZW50cwAABANhbXQIBQNwbXQGYW1vdW50AwMJAQEhAQkBCWlzRGVmaW5lZAEIBQNwbXQHYXNzZXRJZAYJAQIhPQIJAQV2YWx1ZQEIBQNwbXQHYXNzZXRJZAUMYWNyZXNBc3NldElkCQACAQIUQUNSRVMgcGF5bWVudHMgb25seSEDCQECIT0CBQNhbXQFDFNfQ09TVF9BQ1JFUwkAAgEJAKwCAgIbUGF5bWVudCBhdHRhY2hlZCBzaG91bGQgYmUgCQCkAwEFDFNfQ09TVF9BQ1JFUwQGcmVzdWx0CQESZXhwZWRpdGlvbkludGVybmFsAggFAWkGY2FsbGVyCAUBaQ10cmFuc2FjdGlvbklkBAthY3Jlc1Jlc3VsdAkBBWFzSW50AQkA/AcEBQ1hY3Jlc0NvbnRyYWN0AglidXJuQWNyZXMJAMwIAgUMU19DT1NUX0FDUkVTBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFDGFjcmVzQXNzZXRJZAUDYW10BQNuaWwJAJQKAgkAzggCCQDOCAIIBQZyZXN1bHQCXzEICQEWdXBkYXRlQWNjU3RhdHNJbnRlcm5hbAIJAKUIAQgFAWkGY2FsbGVyBQp4cE5ld1NMYW5kAl8xBQ1wcm9sb2dBY3Rpb25zCQCUCgIICAUGcmVzdWx0Al8yAl8xBQthY3Jlc1Jlc3VsdAFpAQx1cGdyYWRlSW5mcmEBC2xhbmRBc3NldElkBA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBAZyZXN1bHQJAQ11cEluZnJhQ29tbW9uBAYIBQFpBmNhbGxlcgAABQtsYW5kQXNzZXRJZAQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBCQClCAEIBQFpBmNhbGxlcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAkAlAoCCQDOCAIJAM4IAggFBnJlc3VsdAJfMQUNcHJvbG9nQWN0aW9ucwgJARd1cGRhdGVEdWNrU3RhdHNJbnRlcm5hbAIFC2R1Y2tBc3NldElkCQBrAwUOeHBVcGdyYWRlSW5mcmEIBQZyZXN1bHQCXzMFBU1VTFQ4Al8xCAUGcmVzdWx0Al8yAWkBEGFjdGl2YXRlQXJ0aWZhY3QCB2FydE5hbWUObGFuZEFzc2V0SWRPcHQEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQEBGFkZHIJAKUIAQgFAWkGY2FsbGVyBAZyZXN1bHQEByRtYXRjaDAFB2FydE5hbWUDCQAAAgIHUFJFU0FMRQUHJG1hdGNoMAkBEmFjdGl2YXRlUHJlc2FsZUFydAIFBGFkZHIFDmxhbmRBc3NldElkT3B0AwkAAAICB09OQk9BUkQFByRtYXRjaDAJARJhY3RpdmF0ZU9uYm9hcmRBcnQBBQRhZGRyCQACAQIQVW5rbm93biBhcnRpZmFjdAkAzggCBQZyZXN1bHQFDXByb2xvZ0FjdGlvbnMBaQEKbWVyZ2VMYW5kcwEMbGFuZEFzc2V0SWRzBA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBAZyZXN1bHQJAQttZXJnZUNvbW1vbgIJAKUIAQgFAWkGY2FsbGVyBQxsYW5kQXNzZXRJZHMJAJQKAgkAzggCCQDOCAIIBQZyZXN1bHQCXzEFDXByb2xvZ0FjdGlvbnMICQEWdXBkYXRlQWNjU3RhdHNJbnRlcm5hbAIJAKUIAQgFAWkGY2FsbGVyBQd4cE1lcmdlAl8xCAUGcmVzdWx0Al8yAWkBDWNhcmdvRXhjaGFuZ2UCDGNhcmdvTGlzdFN0cgtsYW5kQXNzZXRJZAQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQKY2FyZ29QYXJ0cwkAvAkCBQxjYXJnb0xpc3RTdHICAToEBGFkZHIJAKUIAQgFAWkMb3JpZ2luQ2FsbGVyBAVhc3NldAkBBXZhbHVlAQkA7AcBCQDZBAEFC2xhbmRBc3NldElkBAd0aW1lS2V5CQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFC2xhbmRBc3NldElkAwkBASEBCQEJaXNEZWZpbmVkAQkAnwgBBQd0aW1lS2V5CQACAQkArAICCAUFYXNzZXQEbmFtZQIOIGlzIG5vdCBzdGFrZWQEBW93bmVyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFWtleUxhbmRBc3NldElkVG9Pd25lcgEFC2xhbmRBc3NldElkCQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCDCBpcyBvcnBoYW5lZAMJAQIhPQIFBW93bmVyBQRhZGRyCQACAQkArAICBQpMQU5EUFJFRklYAg0gaXMgbm90IHlvdXJzBAlsYW5kSW5kZXgJAGkCCQEPbnVtUGllY2VzQnlTaXplAQkAkQMCCQC1CQIIBQVhc3NldAtkZXNjcmlwdGlvbgIBXwULcmVjTGFuZFNpemUFBVNTSVpFBAppbmZyYUxldmVsCQELdmFsdWVPckVsc2UCCQCfCAEJARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQULbGFuZEFzc2V0SWQAAAQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQRhZGRyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkBAtjdXJMb2NhdGlvbgkBC3ZhbHVlT3JFbHNlAgkAoggBCQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQFD0RFRkFVTFRMT0NBVElPTgQDbG9jCQC1CQIJAQV2YWx1ZQEFC2N1ckxvY2F0aW9uAgFfAwkBAiE9AgkAkQMCBQNsb2MFCmxvY0lkeFR5cGUCAUwJAAIBCQCsAgIJAKwCAgIWRHVjayBsb2NhdGlvbiB0eXBlIGlzIAkAkQMCBQNsb2MFCmxvY0lkeFR5cGUCESwgYnV0IHNob3VsZCBiZSBMAwkBAiE9AgkAkQMCBQNsb2MFCGxvY0lkeElkBQtsYW5kQXNzZXRJZAkAAgEJAKwCAgIbRHVjayBzaG91bGQgYmUgb24gdGhlIGxhbmQgBQtsYW5kQXNzZXRJZAQFd2hLZXkJARJrZXlXYXJlaG91c2VCeUxhbmQBBQtsYW5kQXNzZXRJZAQJY3VycmVudFdoCQEMZ2V0V2FyZWhvdXNlAwUFd2hLZXkFCWxhbmRJbmRleAUKaW5mcmFMZXZlbAQFYnBLZXkJARFrZXlCYWNrcGFja0J5RHVjawEFC2R1Y2tBc3NldElkBAtjdXJyZW50UGFjawkBC2dldEJhY2twYWNrAQUFYnBLZXkEBnJlc3VsdAkBCW1vdmVTdHVmZgMFCmNhcmdvUGFydHMFCWN1cnJlbnRXaAULY3VycmVudFBhY2sEBGxvZnQJALUJAgkAkQMCBQljdXJyZW50V2gFCXdoSWR4TE9GVAIBXwQFbG9mdE8JAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbG9mdAULdm9sT2NjdXBpZWQIBQZyZXN1bHQCXzcEBWxvZnRGCQBlAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFB3ZvbEZyZWUIBQZyZXN1bHQCXzcJAM4IAgkAzAgCCQELU3RyaW5nRW50cnkCBQVicEtleQkAugkCCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCmJwSWR4TGV2ZWwJAMwIAggFBnJlc3VsdAJfNAkAzAgCCAUGcmVzdWx0Al81CQDMCAIIBQZyZXN1bHQCXzYFA25pbAIBOgkAzAgCCQELU3RyaW5nRW50cnkCBQV3aEtleQkAugkCCQDMCAIJAJEDAgUJY3VycmVudFdoBQt3aElkeExldmVscwkAzAgCCAUGcmVzdWx0Al8xCQDMCAIIBQZyZXN1bHQCXzIJAMwIAggFBnJlc3VsdAJfMwkAzAgCCQC5CQIJAMwIAgkAkQMCBQRsb2Z0BQl2b2xMb2NrZWQJAMwIAgkApAMBBQVsb2Z0TwkAzAgCCQCkAwEFBWxvZnRGCQDMCAIJAJEDAgUEbG9mdAUIdm9sVG90YWwFA25pbAIBXwUDbmlsAgE6BQNuaWwFDXByb2xvZ0FjdGlvbnMBaQENc2F2ZVdhcmVob3VzZQIFd2hTdHILbGFuZEFzc2V0SWQDCQECIT0CCAUBaQZjYWxsZXIFD2Vjb25vbXlDb250cmFjdAkAAgECDUFjY2VzcyBkZW5pZWQEBXdoS2V5CQESa2V5V2FyZWhvdXNlQnlMYW5kAQULbGFuZEFzc2V0SWQEAndoCQC8CQIFBXdoU3RyAgE6AwkBAiE9AgkAkAMBBQJ3aAAFCQACAQIwd2FyZWhvdXNlIHN0cmluZyBzaG91bGQgY29udGFpbiA0ICc6JyBzZXBhcmF0b3JzBAVsb2Z0TAkAkQMCCQC1CQIJAJEDAgUCd2gFCXdoSWR4TE9GVAIBXwUJdm9sTG9ja2VkBAVsb2Z0TwkBF2dldFdhcmVob3VzZU9jY3VwaWVkVm9sAQUCd2gEBWxvZnRUCQEXZ2V0V2FyZWhvdXNlVG90YWxWb2x1bWUBCQCRAwIFAndoBQt3aElkeExldmVscwQFbG9mdEYJAGUCCQBlAgUFbG9mdFQJAQ1wYXJzZUludFZhbHVlAQUFbG9mdEwFBWxvZnRPAwkAZgIAAAUFbG9mdEYJAAIBAjBPcGVyYXRpb24gbGVhZHMgdG8gbmVnYXRpdmUgZnJlZSB3YXJlaG91c2Ugc3BhY2UECG5ld1doU3RyCQC6CQIJAMwIAgkAkQMCBQJ3aAULd2hJZHhMZXZlbHMJAMwIAgkAkQMCBQJ3aAUId2hJZHhSZXMJAMwIAgkAkQMCBQJ3aAUId2hJZHhNYXQJAMwIAgkAkQMCBQJ3aAUJd2hJZHhQcm9kCQDMCAIJALkJAgkAzAgCBQVsb2Z0TAkAzAgCCQCkAwEFBWxvZnRPCQDMCAIJAKQDAQUFbG9mdEYJAMwIAgkApAMBBQVsb2Z0VAUDbmlsAgFfBQNuaWwCAToJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCBQV3aEtleQUIbmV3V2hTdHIFA25pbAUIbmV3V2hTdHIBaQENc2V0Q3VzdG9tTmFtZQMHYXNzZXRJZApjdXN0b21OYW1lBHR5cGUEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQIcRXhhY3RseSBvbmUgcGF5bWVudCByZXF1aXJlZAQDcG10CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAADCQECIT0CCAUDcG10B2Fzc2V0SWQFC3VzZHRBc3NldElkCQACAQIaQWxsb3dlZCBVU0RUIHBheW1lbnQgb25seSEDCQECIT0CCAUDcG10BmFtb3VudAUMUkVOQU1JTkdDT1NUCQACAQkArAICAhJQYXltZW50IHNob3VsZCBiZSAJAKQDAQUMUkVOQU1JTkdDT1NUAwkBCGNvbnRhaW5zAgUKY3VzdG9tTmFtZQICX18JAAIBCQCsAgICHk5hbWUgc2hvdWxkIG5vdCBjb250YWluICdfXyc6IAUKY3VzdG9tTmFtZQMJAGYCCQCxAgEFCmN1c3RvbU5hbWUFCk1BWE5BTUVMRU4JAAIBCQCsAgICGU5hbWUgdG9vIGxvbmcsIG1heExlbmd0aD0JAKQDAQUKTUFYTkFNRUxFTgQEYWRkcgkApQgBCAUBaQxvcmlnaW5DYWxsZXIEB2FjdGlvbnMEByRtYXRjaDAFBHR5cGUDCQAAAgIHQUNDT1VOVAUHJG1hdGNoMAQKcmV2ZXJzZUtleQkBFmtleUN1c3RvbU5hbWVUb0FkZHJlc3MBBQpjdXN0b21OYW1lBAluYW1lT3duZXIJAKIIAQUKcmV2ZXJzZUtleQMJAQlpc0RlZmluZWQBBQluYW1lT3duZXIJAAIBCQCsAgICGU5hbWUgYWxyZWFkeSByZWdpc3RlcmVkOiAFCmN1c3RvbU5hbWUEDWFkZHJUb05hbWVLZXkJARZrZXlBZGRyZXNzVG9DdXN0b21OYW1lAQUEYWRkcgQHb2xkTmFtZQkAoggBBQ1hZGRyVG9OYW1lS2V5BAdmcmVlT2xkAwkBCWlzRGVmaW5lZAEFB29sZE5hbWUJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBFmtleUN1c3RvbU5hbWVUb0FkZHJlc3MBCQEFdmFsdWUBBQdvbGROYW1lBQNuaWwFA25pbAkAzggCCQDNCAIJAM0IAgUHZnJlZU9sZAkBC1N0cmluZ0VudHJ5AgUNYWRkclRvTmFtZUtleQUKY3VzdG9tTmFtZQkBC1N0cmluZ0VudHJ5AgUKcmV2ZXJzZUtleQUEYWRkcggJARZ1cGRhdGVBY2NTdGF0c0ludGVybmFsAgUEYWRkcgUMeHBDdXN0b21OYW1lAl8xAwkAAAICBExBTkQFByRtYXRjaDAEBWFzc2V0CQEFdmFsdWUBCQDsBwEJANkEAQUHYXNzZXRJZAQHdGltZUtleQkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQdhc3NldElkAwkBASEBCQEJaXNEZWZpbmVkAQkAnwgBBQd0aW1lS2V5CQACAQkArAICCAUFYXNzZXQEbmFtZQIOIGlzIG5vdCBzdGFrZWQEBW93bmVyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFWtleUxhbmRBc3NldElkVG9Pd25lcgEFB2Fzc2V0SWQJAKwCAgkArAICAgRORlQgCAUFYXNzZXQEbmFtZQIMIGlzIG9ycGhhbmVkAwkBAiE9AgUFb3duZXIFBGFkZHIJAAIBCQCsAgIFCkxBTkRQUkVGSVgCDSBpcyBub3QgeW91cnMECnJldmVyc2VLZXkJARprZXlMYW5kQ3VzdG9tTmFtZVRvQXNzZXRJZAEFCmN1c3RvbU5hbWUECW5hbWVPd25lcgkAoggBBQpyZXZlcnNlS2V5AwkBCWlzRGVmaW5lZAEFCW5hbWVPd25lcgkAAgEJAKwCAgIZTmFtZSBhbHJlYWR5IHJlZ2lzdGVyZWQ6IAUKY3VzdG9tTmFtZQQOYXNzZXRUb05hbWVLZXkJARprZXlMYW5kQXNzZXRJZFRvQ3VzdG9tTmFtZQEFB2Fzc2V0SWQEB29sZE5hbWUJAKIIAQUOYXNzZXRUb05hbWVLZXkEB2ZyZWVPbGQDCQEJaXNEZWZpbmVkAQUHb2xkTmFtZQkAzAgCCQELRGVsZXRlRW50cnkBCQEaa2V5TGFuZEN1c3RvbU5hbWVUb0Fzc2V0SWQBCQEFdmFsdWUBBQdvbGROYW1lBQNuaWwFA25pbAkAzggCCQDNCAIJAM0IAgUHZnJlZU9sZAkBC1N0cmluZ0VudHJ5AgUOYXNzZXRUb05hbWVLZXkFCmN1c3RvbU5hbWUJAQtTdHJpbmdFbnRyeQIFCnJldmVyc2VLZXkFB2Fzc2V0SWQICQEWdXBkYXRlQWNjU3RhdHNJbnRlcm5hbAIFBGFkZHIFDHhwQ3VzdG9tTmFtZQJfMQMJAAACAgREVUNLBQckbWF0Y2gwBAVhc3NldAkBBXZhbHVlAQkA7AcBCQDZBAEFB2Fzc2V0SWQEB3RpbWVLZXkJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQUHYXNzZXRJZAMDCQEBIQEJAQlpc0RlZmluZWQBCQCfCAEFB3RpbWVLZXkGCQEBIQEJAQlpc0RlZmluZWQBCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFBGFkZHIJAAIBCQCsAgIIBQVhc3NldARuYW1lAg4gaXMgbm90IHN0YWtlZAQFb3duZXIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEQa2V5RHVja0lkVG9Pd25lcgEFB2Fzc2V0SWQJAKwCAgkArAICAgRORlQgCAUFYXNzZXQEbmFtZQIMIGlzIG9ycGhhbmVkAwkBAiE9AgUFb3duZXIFBGFkZHIJAAIBCQCsAgIFCkRVQ0tQUkVGSVgCDSBpcyBub3QgeW91cnMECnJldmVyc2VLZXkJARprZXlEdWNrQ3VzdG9tTmFtZVRvQXNzZXRJZAEFCmN1c3RvbU5hbWUECW5hbWVPd25lcgkAoggBBQpyZXZlcnNlS2V5AwkBCWlzRGVmaW5lZAEFCW5hbWVPd25lcgkAAgEJAKwCAgIZTmFtZSBhbHJlYWR5IHJlZ2lzdGVyZWQ6IAUKY3VzdG9tTmFtZQQOYXNzZXRUb05hbWVLZXkJARprZXlEdWNrQXNzZXRJZFRvQ3VzdG9tTmFtZQEFB2Fzc2V0SWQEB29sZE5hbWUJAKIIAQUOYXNzZXRUb05hbWVLZXkEB2ZyZWVPbGQDCQEJaXNEZWZpbmVkAQUHb2xkTmFtZQkAzAgCCQELRGVsZXRlRW50cnkBCQEaa2V5RHVja0N1c3RvbU5hbWVUb0Fzc2V0SWQBCQEFdmFsdWUBBQdvbGROYW1lBQNuaWwFA25pbAkAzggCCQDNCAIJAM0IAgUHZnJlZU9sZAkBC1N0cmluZ0VudHJ5AgUOYXNzZXRUb05hbWVLZXkFCmN1c3RvbU5hbWUJAQtTdHJpbmdFbnRyeQIFCnJldmVyc2VLZXkFB2Fzc2V0SWQICQEXdXBkYXRlRHVja1N0YXRzSW50ZXJuYWwCBQdhc3NldElkBQx4cEN1c3RvbU5hbWUCXzEJAAIBAhNVbmtub3duIGVudGl0eSB0eXBlCQCUCgIJAM4IAgkAzQgCBQdhY3Rpb25zCQEOU2NyaXB0VHJhbnNmZXIDBQ9lY29ub215Q29udHJhY3QIBQNwbXQGYW1vdW50BQt1c2R0QXNzZXRJZAUNcHJvbG9nQWN0aW9ucwAAAWkBDHNldFJlZmVycmFscwIJb2xkUGxheWVyCW5ld1BsYXllcgMJAQIhPQIIBQFpD2NhbGxlclB1YmxpY0tleQUDcHViCQACAQIRUGVybWlzc2lvbiBkZW5pZWQEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQDCQEBIQEJAQlpc0RlZmluZWQBCQCmCAEFCW9sZFBsYXllcgkAAgEJAKwCAgIRSW52YWxpZCBhZGRyZXNzOiAFCW9sZFBsYXllcgQKbmV3YmllQWRkcgkApggBBQluZXdQbGF5ZXIDCQEBIQEJAQlpc0RlZmluZWQBBQpuZXdiaWVBZGRyCQACAQkArAICAhFJbnZhbGlkIGFkZHJlc3M6IAUJbmV3UGxheWVyBAlvbGRMYXN0VHgJAKIIAQkBEWtleUxhc3RUeElkQnlVc2VyAQUJb2xkUGxheWVyAwkBASEBCQEJaXNEZWZpbmVkAQUJb2xkTGFzdFR4CQACAQIib2xkUGxheWVyIGRpZG4ndCBkbyBhbnkgdHggaW4gZ2FtZQMJAGcCAAAICQDvBwEJAQV2YWx1ZQEFCm5ld2JpZUFkZHIJYXZhaWxhYmxlCQACAQIWbmV3UGxheWVyIGhhcyBubyBXQVZFUwQHb2xkc0tleQkBCWtleU9sZGllcwAEBG9sZHMJAKIIAQUHb2xkc0tleQQGb2xkaWVzAwkBCWlzRGVmaW5lZAEFBG9sZHMJALwJAgkBBXZhbHVlAQUEb2xkcwIBXwUDbmlsAwkBD2NvbnRhaW5zRWxlbWVudAIFBm9sZGllcwUJbmV3UGxheWVyCQACAQkArAICBQluZXdQbGF5ZXICJiBpcyBub3QgbmV3YmllIChhbHJlYWR5IGhhcyByZWZlcnJhbHMpBAhyZWZCeUtleQkBD2tleUFkZHJlc3NSZWZCeQEFCW5ld1BsYXllcgQFcmVmQnkJAKIIAQUIcmVmQnlLZXkDAwkBCWlzRGVmaW5lZAEFBXJlZkJ5CQEJaXNEZWZpbmVkAQkApggBCQEFdmFsdWUBBQVyZWZCeQcJAAIBCQCsAgIJAKwCAgUJbmV3UGxheWVyAhQgYWxyZWFkeSBoYXMgcmVmQnk6IAkBBXZhbHVlAQUFcmVmQnkEB3JlZnNLZXkJARNrZXlBZGRyZXNzUmVmZXJyYWxzAQUJb2xkUGxheWVyBARyZWZzCQCiCAEFB3JlZnNLZXkECXJlZnNBcnJheQMJAQlpc0RlZmluZWQBBQRyZWZzCQC8CQIJAQV2YWx1ZQEFBHJlZnMCAV8FA25pbAMJAQ9jb250YWluc0VsZW1lbnQCBQlyZWZzQXJyYXkFCW5ld1BsYXllcgkAAgEJAKwCAgkArAICCQCsAgIFCW9sZFBsYXllcgISIGFscmVhZHkgY29udGFpbnMgBQluZXdQbGF5ZXICESB3aXRoaW4gcmVmZXJyYWxzBAduZXdSZWZzCQC6CQIJAM0IAgUJcmVmc0FycmF5BQluZXdQbGF5ZXICAV8EB25ld09sZHMDCQEPY29udGFpbnNFbGVtZW50AgUGb2xkaWVzBQlvbGRQbGF5ZXIJAQV2YWx1ZQEFBG9sZHMJALoJAgkAzQgCBQZvbGRpZXMFCW9sZFBsYXllcgIBXwkAlAoCCQDOCAIJAMwIAgkBC1N0cmluZ0VudHJ5AgUIcmVmQnlLZXkFCW9sZFBsYXllcgkAzAgCCQELU3RyaW5nRW50cnkCBQdyZWZzS2V5BQduZXdSZWZzCQDMCAIJAQtTdHJpbmdFbnRyeQIFB29sZHNLZXkFB25ld09sZHMFA25pbAUNcHJvbG9nQWN0aW9ucwAAAWkBEGRpc3RyaWJ1dGVQb2ludHMFCHN0cmVuZ3RoCGFjY3VyYWN5CWludGVsbGVjdAllbmR1cmFuY2UJZGV4dGVyaXR5BA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBARhZGRyCQClCAEIBQFpDG9yaWdpbkNhbGxlcgQLdmlydFdsZ0RhdGEJAQlhc0FueUxpc3QBCQD8BwQFC3dsZ0NvbnRyYWN0AhJjaGVja1dsZ1hwUkVBRE9OTFkJAMwIAgUEYWRkcgUDbmlsBQNuaWwEDXZpcnRXbGdQb2ludHMJAQVhc0ludAEJAJEDAgULdmlydFdsZ0RhdGEAAQQNJHQwOTk1NDg5OTkzOAMJAGcCAAAFDXZpcnRXbGdQb2ludHMJAJQKAgAABQNuaWwEB2RlbHRhWFAJAQVhc0ludAEJAPwHBAULd2xnQ29udHJhY3QCCXRha2VXbGdYcAkAzAgCBQRhZGRyBQNuaWwFA25pbAMJAAACBQdkZWx0YVhQBQdkZWx0YVhQCQCUCgIFDXZpcnRXbGdQb2ludHMJAMwIAgkBDEludGVnZXJFbnRyeQIJAQxrZXlVc2VyTGV2ZWwBBQRhZGRyCQEFYXNJbnQBCQCRAwIFC3ZpcnRXbGdEYXRhAAAJAMwIAgkBDEludGVnZXJFbnRyeQIJAQlrZXlVc2VyWFABBQRhZGRyCQEFYXNJbnQBCQCRAwIFC3ZpcnRXbGdEYXRhAAIFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgQJd2xnUG9pbnRzCAUNJHQwOTk1NDg5OTkzOAJfMQQKd2xnQWN0aW9ucwgFDSR0MDk5NTQ4OTk5MzgCXzIEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUEYWRkcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAQKZnJlZUtleUFjYwkBEWtleVVzZXJGcmVlUG9pbnRzAQUEYWRkcgQNZnJlZVBvaW50c0FjYwkAZAIJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUKZnJlZUtleUFjYwAABQl3bGdQb2ludHMEC2ZyZWVLZXlEdWNrCQERa2V5RHVja0ZyZWVQb2ludHMBBQtkdWNrQXNzZXRJZAQOZnJlZVBvaW50c0R1Y2sJAQt2YWx1ZU9yRWxzZQIJAJ8IAQULZnJlZUtleUR1Y2sAAAQHc3VtRnJlZQkAZAIFDWZyZWVQb2ludHNBY2MFDmZyZWVQb2ludHNEdWNrBA9zdW1Ub0Rpc3RyaWJ1dGUJAGQCCQBkAgkAZAIJAGQCBQhzdHJlbmd0aAUIYWNjdXJhY3kFCWludGVsbGVjdAUJZW5kdXJhbmNlBQlkZXh0ZXJpdHkDCQBmAgUPc3VtVG9EaXN0cmlidXRlBQdzdW1GcmVlCQACAQkArAICCQCsAgICD1RoZXJlIGFyZSBvbmx5IAkApAMBBQdzdW1GcmVlAhogZnJlZSBwb2ludHMgdG8gZGlzdHJpYnV0ZQQIY2hhcnNLZXkJAQxrZXlEdWNrQ2hhcnMBBQtkdWNrQXNzZXRJZAQFY2hhcnMJALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBBQhjaGFyc0tleQIJMF8wXzBfMF8wAgFfBAZuZXdBY2MJAGUCBQ1mcmVlUG9pbnRzQWNjBQ9zdW1Ub0Rpc3RyaWJ1dGUJAJQKAgkAzggCCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIFCmZyZWVLZXlBY2MDCQBmAgAABQZuZXdBY2MAAAUGbmV3QWNjCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQtmcmVlS2V5RHVjawMJAGYCAAAFBm5ld0FjYwkAZAIFDmZyZWVQb2ludHNEdWNrBQZuZXdBY2MFDmZyZWVQb2ludHNEdWNrCQDMCAIJAQtTdHJpbmdFbnRyeQIFCGNoYXJzS2V5CQC5CQIJAMwIAgkApAMBCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBWNoYXJzBQxjaGFyU3RyZW5ndGgFCHN0cmVuZ3RoCQDMCAIJAKQDAQkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVjaGFycwUMY2hhckFjY3VyYWN5BQhhY2N1cmFjeQkAzAgCCQCkAwEJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFY2hhcnMFDWNoYXJJbnRlbGxlY3QFCWludGVsbGVjdAkAzAgCCQCkAwEJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFY2hhcnMFDWNoYXJFbmR1cmFuY2UFCWVuZHVyYW5jZQkAzAgCCQCkAwEJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFY2hhcnMFDWNoYXJEZXh0ZXJpdHkFCWRleHRlcml0eQUDbmlsAgFfBQNuaWwFDXByb2xvZ0FjdGlvbnMFCndsZ0FjdGlvbnMAAAFpARxzcGxpdEJ5R2xvYmFsV2VpZ2h0c1JFQURPTkxZAQZhbW91bnQJAJQKAgUDbmlsCQESZ2V0TmVlZGVkTWF0ZXJpYWxzAQUGYW1vdW50AWkBJHNwbGl0QnlHbG9iYWxBbmRMb2NhbFdlaWdodHNSRUFET05MWQMJbWF0QW1vdW50CXJlc0Ftb3VudAh0ZXJyYWlucwQNdGVycmFpbkNvdW50cwkBDWNvdW50VGVycmFpbnMBBQh0ZXJyYWlucwkAlAoCBQNuaWwJAJQKAgkBEmdldE5lZWRlZE1hdGVyaWFscwEFCW1hdEFtb3VudAkBE2Rpc3RyaWJ1dGVCeVdlaWdodHMCBQlyZXNBbW91bnQFDXRlcnJhaW5Db3VudHMBaQETZ2V0QmFja3BhY2tSRUFET05MWQELZHVja0Fzc2V0SWQJAJQKAgUDbmlsCQC5CQIJAQtnZXRCYWNrcGFjawEJARFrZXlCYWNrcGFja0J5RHVjawEFC2R1Y2tBc3NldElkAgE6AWkBFGdldFdhcmVob3VzZVJFQURPTkxZAQtsYW5kQXNzZXRJZAQFYXNzZXQJAQV2YWx1ZQEJAOwHAQkA2QQBBQtsYW5kQXNzZXRJZAQJbGFuZEluZGV4CQBpAgkBD251bVBpZWNlc0J5U2l6ZQEJAJEDAgkAtQkCCAUFYXNzZXQLZGVzY3JpcHRpb24CAV8FC3JlY0xhbmRTaXplBQVTU0laRQQKaW5mcmFMZXZlbAkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEFC2xhbmRBc3NldElkAAAJAJQKAgUDbmlsCQC6CQIJAQxnZXRXYXJlaG91c2UDCQESa2V5V2FyZWhvdXNlQnlMYW5kAQULbGFuZEFzc2V0SWQFCWxhbmRJbmRleAUKaW5mcmFMZXZlbAIBOgFpAQpzYXZlTGFzdFR4AAMJAQEhAQkBD2NvbnRhaW5zRWxlbWVudAIJAMwIAgULd2xnQ29udHJhY3QJAMwIAgUPZWNvbm9teUNvbnRyYWN0CQDMCAIFEnRvdXJuYW1lbnRDb250cmFjdAkAzAgCBQ1hY3Jlc0NvbnRyYWN0BQNuaWwIBQFpBmNhbGxlcgkAAgECDUFjY2VzcyBkZW5pZWQJAJQKAgkBBnByb2xvZwEFAWkAKgFpAQ91cGRhdGVEdWNrU3RhdHMCC2R1Y2tBc3NldElkB2RlbHRhWFADCQECIT0CCAUBaQZjYWxsZXIFD2Vjb25vbXlDb250cmFjdAkAAgECDUFjY2VzcyBkZW5pZWQJARd1cGRhdGVEdWNrU3RhdHNJbnRlcm5hbAIFC2R1Y2tBc3NldElkBQdkZWx0YVhQAWkBDnVwZGF0ZUFjY1N0YXRzAgRhZGRyB2RlbHRhWFADCQEBIQEJAQ9jb250YWluc0VsZW1lbnQCCQDMCAIFC3dsZ0NvbnRyYWN0CQDMCAIFD2Vjb25vbXlDb250cmFjdAkAzAgCBQ1hY3Jlc0NvbnRyYWN0BQNuaWwIBQFpBmNhbGxlcgkAAgECDUFjY2VzcyBkZW5pZWQJARZ1cGRhdGVBY2NTdGF0c0ludGVybmFsAgUEYWRkcgUHZGVsdGFYUAFpAQllcXVpcER1Y2sBCWVxdWlwbWVudAQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQEYWRkcgkApQgBCAUBaQxvcmlnaW5DYWxsZXIEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUEYWRkcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAMJAQ9jaGVja1RvdXJuYW1lbnQBBQtkdWNrQXNzZXRJZAkAAgECGWVxdWlwRHVja19jaGVja1RvdXJuYW1lbnQEBWVxS2V5CQEQa2V5RHVja0VxdWlwbWVudAEFC2R1Y2tBc3NldElkBAtjdXJyZW50U2VncwkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEFBWVxS2V5AhcsOyxfLDssXyw7LF8sOyxfLDssXyw7LAIBXwQFYnBLZXkJARFrZXlCYWNrcGFja0J5RHVjawEFC2R1Y2tBc3NldElkBAtjdXJyZW50UGFjawkBC2dldEJhY2twYWNrAQUFYnBLZXkEBW5ld0VxCQC1CQIFCWVxdWlwbWVudAIBXwMJAQIhPQIJAJADAQUFbmV3RXEFC05VTVNFR01FTlRTCQACAQIWV3JvbmcgZXF1aXBtZW50IHN0cmluZwQJdGVtcFByb2RCCQEGZHJlc3NCBAULY3VycmVudFNlZ3MJAQ5wcm9kU3RyVG9CeXRlcwEJAJEDAgULY3VycmVudFBhY2sFCWJwSWR4UHJvZAYFA25pbAQIc2VnQnBBdXgJAJEDAgkAtQkCCQCRAwIFBW5ld0VxBQtzZWdCYWNrcGFjawIBOwABBApidWZmRWZmZWN0AwkAAAIFCHNlZ0JwQXV4AgAAAAQEYXV4MAkAkQMCCQC1CQIFCHNlZ0JwQXV4AgEsAAADCQAAAgUEYXV4MAIAAAAEBmlkeENudAkAtQkCBQRhdXgwAgE6BANpZHgJAJEDAgUGaWR4Q250AAAEA2NudAkAkQMCBQZpZHhDbnQAAQMDAwMDCQAAAgUDaWR4AgIwNgYJAAACBQNpZHgCAjA3BgkAAAIFA2lkeAICMDgJAQIhPQIFA2NudAIABwkAZgIJAQ1wYXJzZUludFZhbHVlAQUDY250AAAHCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgkAtQkCCQCRAwIFEHByb2R1Y3Rpb25NYXRyaXgJAQ1wYXJzZUludFZhbHVlAQUDaWR4AgFfBQpySWR4RWZmZWN0AAAEBXN0YXRzCQEMZ2V0RHVja1N0YXRzBAUEdGhpcwULZHVja0Fzc2V0SWQFCmJ1ZmZFZmZlY3QGBAhuZXdQcm9kQgkBBmRyZXNzQgQFBW5ld0VxBQl0ZW1wUHJvZEIHBQVzdGF0cwQKbmV3UHJvZFN0cgkBDmJ5dGVzVG9Qcm9kU3RyAQUIbmV3UHJvZEIJAJQKAgkAzggCCQDMCAIJAQtTdHJpbmdFbnRyeQIFBWVxS2V5BQllcXVpcG1lbnQJAMwIAgkBC1N0cmluZ0VudHJ5AgUFYnBLZXkJALoJAgkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQpicElkeExldmVsCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4UmVzCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4TWF0CQDMCAIFCm5ld1Byb2RTdHIFA25pbAIBOgkAzAgCCQELU3RyaW5nRW50cnkCCQEMa2V5RHVja0J1ZmZzAQULZHVja0Fzc2V0SWQJALkJAgkAzAgCCQCkAwEJAJEDAgUFc3RhdHMABwkAzAgCCQCkAwEJAJEDAgUFc3RhdHMACAkAzAgCCQCkAwEJAJEDAgUFc3RhdHMACQkAzAgCCQCkAwEJAJEDAgUFc3RhdHMACgkAzAgCCQCkAwEJAJEDAgUFc3RhdHMACwUDbmlsAgFfBQNuaWwFDXByb2xvZ0FjdGlvbnMAAAFpARNpbml0RHVja1RvdXJBdHRlbXB0AQtkdWNrQXNzZXRJZAMJAQIhPQIIBQFpBmNhbGxlcgUSdG91cm5hbWVudENvbnRyYWN0CQACAQINQWNjZXNzIGRlbmllZAQJa2V5SGVhbHRoCQENa2V5RHVja0hlYWx0aAEFC2R1Y2tBc3NldElkBAVtYXhIUAkBCW1heEhlYWx0aAEJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBDGtleUR1Y2tMZXZlbAEFC2R1Y2tBc3NldElkAAAECWN1ckhlYWx0aAkBC3ZhbHVlT3JFbHNlAgkAnwgBBQlrZXlIZWFsdGgFBW1heEhQBAljdXJMb2NLZXkJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAQLY3VyTG9jYXRpb24JAQt2YWx1ZU9yRWxzZQIJAKIIAQUJY3VyTG9jS2V5BQ9ERUZBVUxUTE9DQVRJT04EBmxhc3RJZAkBC3ZhbHVlT3JFbHNlAgkAmggCBRJ0b3VybmFtZW50Q29udHJhY3QFDWxhc3RUb3VySWRLZXkAAAQMdG91ckxvY2F0aW9uCQCsAgIJAKQDAQUGbGFzdElkAgRfVF8wCQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIJAQ5rZXlTYXZlZEhlYWx0aAEFC2R1Y2tBc3NldElkBQljdXJIZWFsdGgJAMwIAgkBDEludGVnZXJFbnRyeQIFCWtleUhlYWx0aAUFbWF4SFAJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEGtleVNhdmVkTG9jYXRpb24BBQtkdWNrQXNzZXRJZAULY3VyTG9jYXRpb24JAMwIAgkBC1N0cmluZ0VudHJ5AgUJY3VyTG9jS2V5BQx0b3VyTG9jYXRpb24FA25pbAUMdG91ckxvY2F0aW9uAWkBDGJyZWFrQXR0ZW1wdAAEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEJAKUIAQgFAWkGY2FsbGVyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkBAljdXJMb2NLZXkJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAQLY3VyTG9jYXRpb24JAQt2YWx1ZU9yRWxzZQIJAKIIAQUJY3VyTG9jS2V5BQ9ERUZBVUxUTE9DQVRJT04DCQECIT0CCQCRAwIJALUJAgULY3VyTG9jYXRpb24CAV8FCmxvY0lkeFR5cGUCAVQJAAIBAiJZb3VyIGR1Y2sgaXMgbm90IGluIHRoZSB0b3VybmFtZW50BAtzYXZlZEhlYWx0aAkBEUBleHRyTmF0aXZlKDEwNTUpAQkBDmtleVNhdmVkSGVhbHRoAQULZHVja0Fzc2V0SWQEDXNhdmVkTG9jYXRpb24JARFAZXh0ck5hdGl2ZSgxMDU4KQEJARBrZXlTYXZlZExvY2F0aW9uAQULZHVja0Fzc2V0SWQJAJQKAgkAzQgCCQDNCAIFDXByb2xvZ0FjdGlvbnMJAQxJbnRlZ2VyRW50cnkCCQENa2V5RHVja0hlYWx0aAEFC2R1Y2tBc3NldElkBQtzYXZlZEhlYWx0aAkBC1N0cmluZ0VudHJ5AgUJY3VyTG9jS2V5BQ1zYXZlZExvY2F0aW9uBQtjdXJMb2NhdGlvbgFpARRicmVha0F0dGVtcHRDYWxsYmFjawADCQECIT0CCAUBaQZjYWxsZXIFEnRvdXJuYW1lbnRDb250cmFjdAkAAgECDUFjY2VzcyBkZW5pZWQEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQkApQgBCAUBaQxvcmlnaW5DYWxsZXICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDWtleUR1Y2tIZWFsdGgBBQtkdWNrQXNzZXRJZAkBEUBleHRyTmF0aXZlKDEwNTUpAQkBDmtleVNhdmVkSGVhbHRoAQULZHVja0Fzc2V0SWQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBD2tleUR1Y2tMb2NhdGlvbgEFC2R1Y2tBc3NldElkCQERQGV4dHJOYXRpdmUoMTA1OCkBCQEQa2V5U2F2ZWRMb2NhdGlvbgEFC2R1Y2tBc3NldElkBQNuaWwCFGJyZWFrQXR0ZW1wdENhbGxiYWNrAWkBFmV4aXRUb3VybmFtZW50SW50ZXJuYWwBC2R1Y2tBc3NldElkAwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQINQWNjZXNzIGRlbmllZAQLc2F2ZWRIZWFsdGgJARFAZXh0ck5hdGl2ZSgxMDU1KQEJAQ5rZXlTYXZlZEhlYWx0aAEFC2R1Y2tBc3NldElkBA1zYXZlZExvY2F0aW9uCQERQGV4dHJOYXRpdmUoMTA1OCkBCQEQa2V5U2F2ZWRMb2NhdGlvbgEFC2R1Y2tBc3NldElkCQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQFC3NhdmVkSGVhbHRoCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAUNc2F2ZWRMb2NhdGlvbgUDbmlsBwFpAQ9wcm9jZXNzRGVsaXZlcnkBC2R1Y2tBc3NldElkAwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQINQWNjZXNzIGRlbmllZAQEYWRkcgkApQgBCAUBaQxvcmlnaW5DYWxsZXIECWZ1bmRUb3RhbAkBC3ZhbHVlT3JFbHNlAgkAmggCBQ9lY29ub215Q29udHJhY3QFD2RlbGl2ZXJ5RnVuZEtleQAAAwkAZgIFFU1JTl9VU0RUX0ZFRV9ERUxJVkVSWQUJZnVuZFRvdGFsCQACAQkArAICAiBEZWxpdmVyeSBpcyBub3QgYXZhaWxhYmxlLCBmdW5kPQkBCmZpeGVkUG9pbnQCBQlmdW5kVG90YWwABgQDbm93CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQIY291bnRLZXkJARRrZXlVc2VyRGVsaXZlcnlDb3VudAEFBGFkZHIEB2xhc3REYXkJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBFmtleVVzZXJMYXN0RGVsaXZlcnlEYXkBBQRhZGRyAAAEBXRvZGF5CQBpAgUDbm93BQlEQVlNSUxMSVMEBWNvdW50AwkAAAIFB2xhc3REYXkFBXRvZGF5CQELdmFsdWVPckVsc2UCCQCfCAEFCGNvdW50S2V5AAAAAAQFYWNyZXMJAQt2YWx1ZU9yRWxzZQIJAJoIAgUNYWNyZXNDb250cmFjdAkBGmtleUFjcmVzU3Rha2VkQW1vdW50QnlVc2VyAQUEYWRkcgAABBFhbGxvd2VkRGVsaXZlcmllcwkAZAIFF0FMTE9XRURfRlJFRV9ERUxJVkVSSUVTCQBpAgUFYWNyZXMFGkFDUkVTX0ZPUl9ERUxJVkVSWV9BVFRFTVBUAwkAZwIFBWNvdW50BRFhbGxvd2VkRGVsaXZlcmllcwkAAgEJAKwCAgkArAICAhFZb3UgYWxyZWFkeSB1c2VkIAkApAMBBRFhbGxvd2VkRGVsaXZlcmllcwIcIGRlbGl2ZXJ5IGF0dGVtcHRzIGZvciB0b2RheQQOZ2xvYmFsQ291bnRLZXkJARRrZXlEdWNrRGVsaXZlcnlDb3VudAEFC2R1Y2tBc3NldElkBAZyZXdhcmQJAPwHBAUPZWNvbm9teUNvbnRyYWN0AhJzZW5kRGVsaXZlcnlSZXdhcmQJAMwIAgUEYWRkcgUDbmlsBQNuaWwJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUIY291bnRLZXkJAGQCBQVjb3VudAABCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEWa2V5VXNlckxhc3REZWxpdmVyeURheQEFBGFkZHIFBXRvZGF5CQDMCAIJAQxJbnRlZ2VyRW50cnkCBQ5nbG9iYWxDb3VudEtleQkAZAIJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUOZ2xvYmFsQ291bnRLZXkAAAABBQNuaWwFBnJld2FyZAFpAQdyb2JMYW5kAgdtZXNzYWdlA3NpZwQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAiJleGFjdGx5IDEgcGF5bWVudCBtdXN0IGJlIGF0dGFjaGVkBANwbXQJAJEDAggFAWkIcGF5bWVudHMAAAQGd2xnQW10CAUDcG10BmFtb3VudAMDCQEBIQEJAQlpc0RlZmluZWQBCAUDcG10B2Fzc2V0SWQGCQECIT0CCQEFdmFsdWUBCAUDcG10B2Fzc2V0SWQFCndsZ0Fzc2V0SWQJAAIBAhVXTEdPTEQgcGF5bWVudHMgb25seSEDCQECIT0CBQZ3bGdBbXQFEk1JTl9XTEdPTERfUk9CQkVSWQkAAgEJAKwCAgkArAICAhJQYXltZW50IHNob3VsZCBiZSAJAQpmaXhlZFBvaW50AgUSTUlOX1dMR09MRF9ST0JCRVJZAAgCByBXTEdPTEQEBGFkZHIJAKUIAQgFAWkGY2FsbGVyAwkBASEBCQDEEwMFB21lc3NhZ2UFA3NpZwUDcHViCQACAQIYc2lnbmF0dXJlIGRvZXMgbm90IG1hdGNoBAVwYXJ0cwkAvAkCCQCwCQEFB21lc3NhZ2UCATsEBnJvYkxvZwkAvAkCCQCRAwIFBXBhcnRzAAACAXwEAmhwCQC1CQIJAJEDAgUGcm9iTG9nBQhybEhlYWx0aAIBXwQFY3VySFAJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJocAAABAVuZXdIUAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmhwAAEECHByb2RVc2VkCQCRAwIFBnJvYkxvZwULcmxQcm9kc1VzZWQECGxhc3RQYXJ0CQC1CQIJAJEDAgUFcGFydHMAAQIBfAQHcm9iVHlwZQkAkQMCBQhsYXN0UGFydAUGcmxUeXBlAwkBAiE9AgUHcm9iVHlwZQIBQgkAAgECHk9ubHkgYmFuayByb2JiZXJ5IGlzIHN1cHBvcnRlZAQEdGltZQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCGxhc3RQYXJ0BQtybFRpbWVzdGFtcAMDCQBmAgUEdGltZQkAZAIIBQlsYXN0QmxvY2sJdGltZXN0YW1wBRFGSVZFTUlOVVRFU01JTExJUwYJAGYCCQBlAggFCWxhc3RCbG9jawl0aW1lc3RhbXAFEUZJVkVNSU5VVEVTTUlMTElTBQR0aW1lCQACAQkArAICCQCsAgIJAKwCAgIcc2lnbmF0dXJlIG91dGRhdGVkOiBsb2dUaW1lPQkApAMBBQR0aW1lAgksIGJjVGltZT0JAKQDAQgFCWxhc3RCbG9jawl0aW1lc3RhbXAECXR4RnJvbU1zZwkAkQMCBQhsYXN0UGFydAUIcmxMYXN0VHgEBmxhc3RUeAkBC3ZhbHVlT3JFbHNlAgkAoggBCQERa2V5TGFzdFR4SWRCeVVzZXIBBQRhZGRyAgADCQECIT0CBQZsYXN0VHgFCXR4RnJvbU1zZwkAAgEJAKwCAgkArAICCQCsAgICHlR4IGlkcyBkb24ndCBtYXRjaCEgSW4gc3RhdGU6IAUGbGFzdFR4AgosIGluIG1zZzogBQl0eEZyb21Nc2cEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUEYWRkcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAQFZXFLZXkJARBrZXlEdWNrRXF1aXBtZW50AQULZHVja0Fzc2V0SWQECWN1cnJlbnRFcQkBC3ZhbHVlT3JFbHNlAgkAoggBBQVlcUtleQIXLDssXyw7LF8sOyxfLDssXyw7LF8sOywEDyR0MDExNzExNjExNzIyNwkBEXN1YnRyYWN0RXF1aXBtZW50AgUJY3VycmVudEVxBQhwcm9kVXNlZAQFbmV3RXEIBQ8kdDAxMTcxMTYxMTcyMjcCXzEED3Nob3VsZFplcm9CdWZmcwgFDyR0MDExNzExNjExNzIyNwJfMgQIaXNCcFVzZWQIBQ8kdDAxMTcxMTYxMTcyMjcCXzMEC2N1ckxvY2F0aW9uCQELdmFsdWVPckVsc2UCCQCiCAEJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAUPREVGQVVMVExPQ0FUSU9OAwkBDmlzSW5Ub3VybmFtZW50AgUSdG91cm5hbWVudENvbnRyYWN0BQtjdXJMb2NhdGlvbgkAAgECKllvdXIgZHVjayBpcyB0YWtpbmcgcGFydCBpbiB0aGUgdG91cm5hbWVudAQDbm93CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQIY291bnRLZXkJARNrZXlVc2VyUm9iYmVyeUNvdW50AQUEYWRkcgQHbGFzdERheQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEVa2V5VXNlckxhc3RSb2JiZXJ5RGF5AQUEYWRkcgAABAV0b2RheQkAaQIFA25vdwUJREFZTUlMTElTBAVjb3VudAMJAAACBQdsYXN0RGF5BQV0b2RheQkBC3ZhbHVlT3JFbHNlAgkAnwgBBQhjb3VudEtleQAAAAAEBWFjcmVzCQELdmFsdWVPckVsc2UCCQCaCAIFDWFjcmVzQ29udHJhY3QJARprZXlBY3Jlc1N0YWtlZEFtb3VudEJ5VXNlcgEFBGFkZHIAAAQQYWxsb3dlZFJvYmJlcmllcwkAZAIFFkFMTE9XRURfRlJFRV9ST0JCRVJJRVMJAGkCBQVhY3JlcwUZQUNSRVNfRk9SX1JPQkJFUllfQVRURU1QVAMJAGcCBQVjb3VudAUQYWxsb3dlZFJvYmJlcmllcwkAAgEJAKwCAgkArAICAhFZb3UgYWxyZWFkeSB1c2VkIAkApAMBBRBhbGxvd2VkUm9iYmVyaWVzAhsgcm9iYmVyeSBhdHRlbXB0cyBmb3IgdG9kYXkEDmdsb2JhbENvdW50S2V5CQETa2V5RHVja1JvYmJlcnlDb3VudAEFC2R1Y2tBc3NldElkBARsb290AwkAZgIFBW5ld0hQAAAECWZ1bmRUb3RhbAkA8AcCBQR0aGlzBQp3bGdBc3NldElkBAVwcml6ZQMFCGlzQnBVc2VkCQBoAgACBRJNSU5fV0xHT0xEX1JPQkJFUlkJAGgCAAUFEk1JTl9XTEdPTERfUk9CQkVSWQMJAGYCBQVwcml6ZQUJZnVuZFRvdGFsCQACAQkArAICCQCsAgIJAKwCAgIiUm9iYmVyeSBpcyBub3QgYXZhaWxhYmxlLCBmdW5kcyA9IAkBCmZpeGVkUG9pbnQCBQlmdW5kVG90YWwACAIUIFdMR09MRCwgcmVxdWlyZWQgPSAJAQpmaXhlZFBvaW50AgUFcHJpemUACAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFBXByaXplBQp3bGdBc3NldElkBQNuaWwFA25pbAkAlAoCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDOCAIJAM4IAgkAzggCBQ1wcm9sb2dBY3Rpb25zBQRsb290AwUPc2hvdWxkWmVyb0J1ZmZzCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQxrZXlEdWNrQnVmZnMBBQtkdWNrQXNzZXRJZAIJMF8wXzBfMF8wBQNuaWwFA25pbAgJARd1cGRhdGVEdWNrU3RhdHNJbnRlcm5hbAIFC2R1Y2tBc3NldElkAwkAZgIFBW5ld0hQAAAFDHhwU3VjY2Vzc1JvYgUJeHBGYWlsUm9iAl8xCQEMSW50ZWdlckVudHJ5AgkBGGtleUxhc3RSb2JiZXJ5VGltZUJ5RHVjawEFC2R1Y2tBc3NldElkBQNub3cJAQxJbnRlZ2VyRW50cnkCBQhjb3VudEtleQkAZAIFBWNvdW50AAEJAQxJbnRlZ2VyRW50cnkCCQEVa2V5VXNlckxhc3RSb2JiZXJ5RGF5AQUEYWRkcgUFdG9kYXkJAQxJbnRlZ2VyRW50cnkCBQ5nbG9iYWxDb3VudEtleQkAZAIJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUOZ2xvYmFsQ291bnRLZXkAAAABCQELU3RyaW5nRW50cnkCBQVlcUtleQUFbmV3RXEJAQxJbnRlZ2VyRW50cnkCCQENa2V5RHVja0hlYWx0aAEFC2R1Y2tBc3NldElkCQCWAwEJAMwIAgUFbmV3SFAJAMwIAgAABQNuaWwAAAFpAQtidXlSb2JvRHVjawADCQEBIQEFE0tTX0FMTE9XX1JPQk9fRFVDS1MJAAIBAhVGZWF0dXJlIGlzIHR1cm5lZCBvZmYEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQIcRXhhY3RseSBvbmUgcGF5bWVudCByZXF1aXJlZAQDcG10CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAADCQECIT0CCAUDcG10B2Fzc2V0SWQFC3VzZHRBc3NldElkCQACAQIaQWxsb3dlZCBVU0RUIHBheW1lbnQgb25seSEDCQECIT0CCAUDcG10BmFtb3VudAUOUk9CT19EVUNLX1VTRFQJAAIBCQCsAgIJAKwCAgIbUGF5bWVudCBhdHRhY2hlZCBzaG91bGQgYmUgCQEKZml4ZWRQb2ludAIFDlJPQk9fRFVDS19VU0RUAAYCBSBVU0RUBAduZXh0TnVtCQELdmFsdWVPckVsc2UCCQCfCAEJAQ9rZXlOZXh0Um9ib0R1Y2sAAAAEBWJ5dGV6CQCaAwEFB25leHROdW0EBG5hbWUJAKwCAgkArAICBQtST0JPX1BSRUZJWAIBLQkAsgICCQDcBAEFBWJ5dGV6AAgEBWNvbG9yCQCyAgIJANwEAQkA1BYBBQVieXRlegAGBAVpc3N1ZQkAwggFBQRuYW1lCQCsAgICN1JvYm8gRHVjayBORlQgZm9yIFdhdmVzTGFuZHMgZ2FtZSwgYmFja2dyb3VuZCBjb2xvciA9ICMFBWNvbG9yAAEAAAcEB2Fzc2V0SWQJALgIAQUFaXNzdWUJAJQKAgkAzQgCCQDNCAIJAM0IAgkAzQgCBQ1wcm9sb2dBY3Rpb25zCQEMSW50ZWdlckVudHJ5AgkBD2tleU5leHRSb2JvRHVjawAJAGQCBQduZXh0TnVtAAEFBWlzc3VlCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQxvcmlnaW5DYWxsZXIAAQUHYXNzZXRJZAkBDlNjcmlwdFRyYW5zZmVyAwUPZWNvbm9teUNvbnRyYWN0CAUDcG10BmFtb3VudAULdXNkdEFzc2V0SWQJAJQKAgkA2AQBBQdhc3NldElkBQVjb2xvcgBsj+gq", "height": 3284739, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: DXTNpodtsUc25pZtwKYtocxkwX2r6zmvEX8AxdTNjwxj Next: GZ8xfNNnLpZFe5iFt5ry9L1SEP8ZGCYzE29gtVRQ6d6v Diff:
OldNewDifferences
23312331 else {
23322332 let lr = kO(av, bI)
23332333 let ln = invoke(P, "onStakeUnstakeLand", [av], nil)
2334- $Tuple2([ScriptTransfer(addressFromStringValue(av), 1, fromBase58String(bI)), DeleteEntry(bC(bI)), DeleteEntry(bF(aI, bI, av))], $Tuple5(lr._1, lr._2, lr._3, lr._4, ln))
2334+ $Tuple2([Burn(fromBase58String(bI), 1), DeleteEntry(bC(bI)), DeleteEntry(bF(aI, bI, av))], $Tuple5(lr._1, lr._2, lr._3, lr._4, ln))
23352335 }
23362336
23372337
23482348 func unstakeLandsFinalizeCallback (av) = if ((toString(gy.caller) != j))
23492349 then throw("Permission denied")
23502350 else $Tuple2([DeleteEntry(af(av)), DeleteEntry(ah(av))], 0)
2351+
2352+
2353+
2354+@Callable(gy)
2355+func convertUnstakedLands () = if ((size(gy.payments) != 1))
2356+ then throw("Exactly one payment required")
2357+ else {
2358+ let li = value(gy.payments[0])
2359+ let bA = value(li.assetId)
2360+ let w = toString(gy.caller)
2361+ if ((li.amount != 1))
2362+ then throw((("NFT " + aI) + " token should be attached as payment"))
2363+ else {
2364+ let jm = value(assetInfo(bA))
2365+ if ((jm.issuer != this))
2366+ then throw("Unknown issuer of token")
2367+ else if (!(contains(jm.name, aI)))
2368+ then throw((("Only NFT " + aI) + " tokens are accepted"))
2369+ else {
2370+ let bI = toBase58String(bA)
2371+ let jq = split(jm.description, "_")
2372+ let jc = aq(jq[T])
2373+ let hT = valueOrElse(getInteger(bJ(bI)), 0)
2374+ let jd = valueOrElse(getInteger(bD(aL, bI)), 0)
2375+ let ls = ((jc * o) + ((((jc * hT) + jd) * o) / 5))
2376+ let lt = invoke(R, "requestAcresCallback", [ls], nil)
2377+ if ((lt == lt))
2378+ then {
2379+ let lu = invoke(addressFromStringValue(j), "stakeAcresCallback", [w], [AttachedPayment(Z, ls)])
2380+ if ((lu == lu))
2381+ then $Tuple2([Burn(fromBase58String(bI), 1)], 0)
2382+ else throw("Strict value is not equal to itself.")
2383+ }
2384+ else throw("Strict value is not equal to itself.")
2385+ }
2386+ }
2387+ }
23512388
23522389
23532390
23642401 then throw((("NFT " + aJ) + " token should be attached as payment"))
23652402 else {
23662403 let jm = value(assetInfo(bA))
2367- let ls = if (if (c)
2404+ let lv = if (if (c)
23682405 then (jm.issuer == this)
23692406 else false)
23702407 then contains(jm.name, aK)
23722409 if (if (if ((jm.issuer != dM))
23732410 then (jm.issuer != dN)
23742411 else false)
2375- then !(ls)
2412+ then !(lv)
23762413 else false)
23772414 then throw((((("Unknown issuer of " + aJ) + " or ") + aK) + " token"))
23782415 else if (if (!(contains(jm.name, aJ)))
2379- then !(ls)
2416+ then !(lv)
23802417 else false)
23812418 then throw((((("Only NFT " + aJ) + " or ") + aK) + " tokens are accepted"))
23822419 else {
2383- let lt = toBase58String(bA)
2384- let jn = bC(lt)
2420+ let lw = toBase58String(bA)
2421+ let jn = bC(lw)
23852422 if (isDefined(getInteger(jn)))
23862423 then throw((("NFT " + jm.name) + " is already staked"))
23872424 else if (isDefined(getString(bS(w))))
23882425 then throw(("You already staked one duck: " + jm.name))
23892426 else {
2390- let lu = bU(lt)
2391- let cn = getString(lu)
2392- let hD = bT(lt)
2393- let lv = getString(hD)
2394- let iV = cP(lt)
2395- let iW = dw(valueOrElse(getInteger(cS(lt)), 0))
2396- let lw = valueOrElse(getInteger(iV), iW)
2397- ([IntegerEntry(jn, lastBlock.timestamp), IntegerEntry(bF(aJ, toBase58String(bA), w), lastBlock.timestamp), StringEntry(bR(lt), w), StringEntry(bS(w), lt)] ++ (if (isDefined(cn))
2427+ let lx = bU(lw)
2428+ let cn = getString(lx)
2429+ let hD = bT(lw)
2430+ let ly = getString(hD)
2431+ let iV = cP(lw)
2432+ let iW = dw(valueOrElse(getInteger(cS(lw)), 0))
2433+ let lz = valueOrElse(getInteger(iV), iW)
2434+ ([IntegerEntry(jn, lastBlock.timestamp), IntegerEntry(bF(aJ, toBase58String(bA), w), lastBlock.timestamp), StringEntry(bR(lw), w), StringEntry(bS(w), lw)] ++ (if (isDefined(cn))
23982435 then nil
2399- else ([StringEntry(lu, aQ)] ++ (if (isDefined(lv))
2436+ else ([StringEntry(lx, aQ)] ++ (if (isDefined(ly))
24002437 then nil
2401- else (([StringEntry(hD, "0:0_0_0_0_0_0:0_0_0_0_0_0:")] :+ IntegerEntry(iV, lw)) ++ lh)))))
2438+ else (([StringEntry(hD, "0:0_0_0_0_0_0:0_0_0_0_0_0:")] :+ IntegerEntry(iV, lz)) ++ lh)))))
24022439 }
24032440 }
24042441 }
24082445
24092446
24102447 @Callable(gy)
2411-func unstakeDuck (lt) = {
2448+func unstakeDuck (lw) = {
24122449 let lh = kN(gy)
24132450 if ((size(gy.payments) != 0))
24142451 then throw("No payments required")
24152452 else {
2416- let bA = fromBase58String(lt)
2453+ let bA = fromBase58String(lw)
24172454 let w = toString(gy.caller)
24182455 let jm = value(assetInfo(bA))
2419- let jn = bC(lt)
2456+ let jn = bC(lw)
24202457 if (!(isDefined(getInteger(jn))))
24212458 then throw((("NFT " + jm.name) + " is not staked"))
24222459 else if (!(isDefined(getString(bS(w)))))
24232460 then throw((("The duck " + jm.name) + " is not staked"))
24242461 else {
2425- let jp = valueOrErrorMessage(getString(bR(lt)), (("NFT " + jm.name) + " is orphaned"))
2462+ let jp = valueOrErrorMessage(getString(bR(lw)), (("NFT " + jm.name) + " is orphaned"))
24262463 if ((jp != w))
24272464 then throw("Staked NFT is not yours")
2428- else if (kk(lt))
2465+ else if (kk(lw))
24292466 then throw("unstakeDuck_checkTournament")
24302467 else {
2431- let iV = cP(lt)
2432- let iW = dw(valueOrElse(getInteger(cS(lt)), 0))
2468+ let iV = cP(lw)
2469+ let iW = dw(valueOrElse(getInteger(cS(lw)), 0))
24332470 let dH = valueOrElse(getInteger(iV), iW)
24342471 if ((iW > dH))
24352472 then throw((("Please heal your duck to " + toString(iW)) + "hp before unstaking"))
2436- else ([ScriptTransfer(gy.caller, 1, bA), DeleteEntry(jn), DeleteEntry(iV), DeleteEntry(bU(lt)), DeleteEntry(bR(lt)), DeleteEntry(bF(aJ, lt, w)), DeleteEntry(bS(w))] ++ lh)
2473+ else ([ScriptTransfer(gy.caller, 1, bA), DeleteEntry(jn), DeleteEntry(iV), DeleteEntry(bU(lw)), DeleteEntry(bR(lw)), DeleteEntry(bF(aJ, lw, w)), DeleteEntry(bS(w))] ++ lh)
24372474 }
24382475 }
24392476 }
24602497
24612498
24622499 @Callable(gy)
2463-func claimRes (eC,lx) = {
2500+func claimRes (eC,lA) = {
24642501 let lh = kN(gy)
24652502 if ((size(gy.payments) != 0))
24662503 then throw("No payments required")
24672504 else {
24682505 let av = toString(gy.originCaller)
2469- let fd = jr(av, eC, ep, lx)
2506+ let fd = jr(av, eC, ep, lA)
24702507 let bO = valueOrErrorMessage(getString(bS(av)), "You don't have a duck staked")
24712508 $Tuple2(((((fd._1 ++ jZ(bO, fraction(di, eC, o))._1) :+ StringEntry(fd._2, makeString(fd._3, ":"))) :+ StringEntry(fd._4, makeString(fd._5, ":"))) ++ lh), fd._3[bt])
24722509 }
24752512
24762513
24772514 @Callable(gy)
2478-func claimResToWH (eC,lx) = {
2515+func claimResToWH (eC,lA) = {
24792516 let lh = kN(gy)
24802517 if ((size(gy.payments) != 0))
24812518 then throw("No payments required")
24822519 else {
24832520 let av = toString(gy.originCaller)
2484- let fd = jr(av, eC, eo, lx)
2521+ let fd = jr(av, eC, eo, lA)
24852522 $Tuple2(((((fd._1 ++ ka(av, fraction(di, eC, o))._1) :+ StringEntry(fd._2, makeString(fd._3, ":"))) :+ StringEntry(fd._4, makeString(fd._5, ":"))) ++ lh), fd._5[bk])
24862523 }
24872524 }
24982535 let hg = iJ(bW, iK, iL)
24992536 let iP = hg._1
25002537 let bO = hg._2
2501- let lu = bU(bO)
2502- let jk = valueOrElse(getString(lu), aQ)
2538+ let lx = bU(bO)
2539+ let jk = valueOrElse(getString(lx), aQ)
25032540 let iR = hg._4
25042541 if ((iR == jk))
25052542 then throw("You can't fly to the same location")
25062543 else {
25072544 let cy = split(iR, "_")
2508- let ly = (cy[bx] == "T")
2509- let lz = (cy[bx] == "D")
2545+ let lB = (cy[bx] == "T")
2546+ let lC = (cy[bx] == "D")
25102547 let gk = cU(bO)
2511- let lA = valueOrElse(getString(gk), ",;,_,;,_,;,_,;,_,;,_,;,")
2512- let lB = fe(lA, hg._5)
2513- let lC = lB._1
2514- let lD = lB._2
2515- let hv = lB._3
2516- let lE = if (!(cs(Q, jk)))
2517- then if (ly)
2548+ let lD = valueOrElse(getString(gk), ",;,_,;,_,;,_,;,_,;,_,;,")
2549+ let lE = fe(lD, hg._5)
2550+ let lF = lE._1
2551+ let lG = lE._2
2552+ let hv = lE._3
2553+ let lH = if (!(cs(Q, jk)))
2554+ then if (lB)
25182555 then cw(jk, iR, 5)
2519- else if (!(lz))
2556+ else if (!(lC))
25202557 then if ((iP > 0))
25212558 then $Tuple2(iR, iP)
25222559 else $Tuple2(jk, 0)
25322569 then if (!(cm(Q, iR)))
25332570 then throw("Your duck is taking part in the tournament")
25342571 else {
2535- let lF = parseIntValue(cy[by])
2536- let lG = split(jk, "_")
2572+ let lI = parseIntValue(cy[by])
2573+ let lJ = split(jk, "_")
25372574 let co = valueOrElse(getInteger(Q, bZ), 0)
2538- if ((lF != (parseIntValue(lG[by]) + 1)))
2575+ if ((lI != (parseIntValue(lJ[by]) + 1)))
25392576 then cw(jk, iR, 7)
25402577 else if ((iP > 0))
25412578 then {
2542- let lH = valueOrElse(getInteger(Q, cd(co, bO)), 0)
2543- let lI = if ((lF > lH))
2544- then invoke(Q, "saveDuckResult", [bO, lF], nil)
2579+ let lK = valueOrElse(getInteger(Q, cd(co, bO)), 0)
2580+ let lL = if ((lI > lK))
2581+ then invoke(Q, "saveDuckResult", [bO, lI], nil)
25452582 else unit
2546- if ((lI == lI))
2583+ if ((lL == lL))
25472584 then $Tuple2(iR, iP)
25482585 else throw("Strict value is not equal to itself.")
25492586 }
25502587 else $Tuple2(jk, 0)
25512588 }
25522589 else throw(("Unknown curLocation:" + jk))
2553- let lJ = lE._1
2554- let lK = lE._2
2555- $Tuple2(((([StringEntry(lu, lJ), StringEntry(gk, lC), IntegerEntry(cP(bO), lK)] ++ lh) ++ (if (lD)
2590+ let lM = lH._1
2591+ let lN = lH._2
2592+ $Tuple2(((([StringEntry(lx, lM), StringEntry(gk, lF), IntegerEntry(cP(bO), lN)] ++ lh) ++ (if (lG)
25562593 then [StringEntry(da(bO), "0_0_0_0_0")]
25572594 else nil)) ++ jZ(bO, if ((iP > 0))
25582595 then dj
25642601
25652602
25662603 @Callable(gy)
2567-func heal (lL,lM,lN) = {
2604+func heal (lO,lP,lQ) = {
25682605 let lh = kN(gy)
2569- if (if (if ((0 > lL))
2606+ if (if (if ((0 > lO))
25702607 then true
2571- else (0 > lM))
2608+ else (0 > lP))
25722609 then true
2573- else (0 > lN))
2610+ else (0 > lQ))
25742611 then throw("Quantity cannot be negative")
25752612 else {
25762613 let bO = valueOrErrorMessage(getString(bS(toString(gy.caller))), "You don't have a duck staked")
25772614 if (kk(bO))
25782615 then throw("heal_checkTournament")
25792616 else {
2580- let lO = [lL, lM, lN]
2617+ let lR = [lO, lP, lQ]
25812618 let iV = cP(bO)
25822619 let iW = dw(valueOrElse(getInteger(cS(bO)), 0))
2583- let lP = valueOrElse(getInteger(iV), iW)
2584- if ((lP >= iW))
2620+ let lS = valueOrElse(getInteger(iV), iW)
2621+ if ((lS >= iW))
25852622 then throw((("HP should be < " + toString(iW)) + " to heal"))
25862623 else {
25872624 let hD = bT(bO)
25882625 let ih = hC(hD)
2589- let lQ = if ((ih[bv] == ""))
2626+ let lT = if ((ih[bv] == ""))
25902627 then nil
25912628 else split_4C(ih[bv], "_")
2592- func lR (eL,cv) = {
2629+ func lU (eL,cv) = {
25932630 let am = eL._2
2594- let gX = if ((size(lQ) > am))
2595- then parseIntValue(lQ[am])
2631+ let gX = if ((size(lT) > am))
2632+ then parseIntValue(lT[am])
25962633 else 0
25972634 if ((3 > am))
25982635 then {
2599- let lS = lO[am]
2600- if ((lS > gX))
2636+ let lV = lR[am]
2637+ if ((lV > gX))
26012638 then throw(((("You have only " + toString(gX)) + " of ") + ba[am]))
2602- else $Tuple3((eL._1 :+ toString((gX - lS))), (am + 1), (eL._3 + (parseIntValue(split(cv, "_")[bf]) * lS)))
2639+ else $Tuple3((eL._1 :+ toString((gX - lV))), (am + 1), (eL._3 + (parseIntValue(split(cv, "_")[bf]) * lV)))
26032640 }
26042641 else $Tuple3((eL._1 :+ toString(gX)), (am + 1), eL._3)
26052642 }
26102647 let eP = $Tuple3(nil, 0, 0)
26112648 func eQ (eR,eS) = if ((eS >= eO))
26122649 then eR
2613- else lR(eR, eN[eS])
2650+ else lU(eR, eN[eS])
26142651
26152652 func eT (eR,eS) = if ((eS >= eO))
26162653 then eR
26182655
26192656 eT(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eP, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50)
26202657 }
2621- let lT = min([iW, (lP + fd._3)])
2622- $Tuple2((([IntegerEntry(iV, lT), StringEntry(hD, makeString_2C([ih[bs], ih[bt], ih[bu], makeString(fd._1, "_")], ":"))] ++ lh) ++ jZ(bO, (dt * ((lL + lM) + lN)))._1), lT)
2658+ let lW = min([iW, (lS + fd._3)])
2659+ $Tuple2((([IntegerEntry(iV, lW), StringEntry(hD, makeString_2C([ih[bs], ih[bt], ih[bu], makeString(fd._1, "_")], ":"))] ++ lh) ++ jZ(bO, (dt * ((lO + lP) + lQ)))._1), lW)
26232660 }
26242661 }
26252662 }
26432680 else {
26442681 let iV = cP(bO)
26452682 let iW = dw(valueOrElse(getInteger(cS(bO)), 0))
2646- let lP = valueOrElse(getInteger(iV), iW)
2647- if ((lP > 0))
2683+ let lS = valueOrElse(getInteger(iV), iW)
2684+ if ((lS > 0))
26482685 then throw("HP should be 0 to call Emergency Service")
26492686 else {
26502687 let hD = bT(bO)
26512688 let ih = hC(hD)
2652- let lQ = if ((ih[bv] == ""))
2689+ let lT = if ((ih[bv] == ""))
26532690 then nil
26542691 else split_4C(ih[bv], "_")
2655- let lU = if ((size(lQ) > 0))
2656- then parseIntValue(lQ[0])
2692+ let lX = if ((size(lT) > 0))
2693+ then parseIntValue(lT[0])
26572694 else 0
2658- let lV = if ((size(lQ) > 1))
2659- then parseIntValue(lQ[1])
2695+ let lY = if ((size(lT) > 1))
2696+ then parseIntValue(lT[1])
26602697 else 0
2661- let lW = if ((size(lQ) > 2))
2662- then parseIntValue(lQ[2])
2698+ let lZ = if ((size(lT) > 2))
2699+ then parseIntValue(lT[2])
26632700 else 0
2664- if (if (if ((lU > 0))
2701+ if (if (if ((lX > 0))
26652702 then true
2666- else (lV > 0))
2703+ else (lY > 0))
26672704 then true
2668- else (lW > 0))
2705+ else (lZ > 0))
26692706 then throw("You have to use own Medical Kit")
26702707 else {
2671- let lX = getString(N, bX())
2672- let lY = if (isDefined(lX))
2673- then split_4C(value(lX), "_")
2708+ let ma = getString(N, bX())
2709+ let mb = if (isDefined(ma))
2710+ then split_4C(value(ma), "_")
26742711 else nil
2675- let lZ = if ((size(lY) > 0))
2676- then parseIntValue(lY[0])
2712+ let mc = if ((size(mb) > 0))
2713+ then parseIntValue(mb[0])
26772714 else 0
2678- if ((0 >= lZ))
2715+ if ((0 >= mc))
26792716 then throw("There are no Medical Kits L1 at Emergency Service storage")
26802717 else {
2681- let lT = (lP + parseIntValue(split(bd[0], "_")[bf]))
2682- let ma = makeString([toString((lZ - 1)), removeByIndex(lY, 0)], "_")
2718+ let lW = (lS + parseIntValue(split(bd[0], "_")[bf]))
2719+ let md = makeString([toString((mc - 1)), removeByIndex(mb, 0)], "_")
26832720 let cv = split(bd[0], "_")
2684- let mb = cu(cv)
2685- let mc = fraction((mb * aS), aR, (o * bi))
2686- if ((li.amount != mc))
2687- then throw(("Payment attached should be " + toString(mc)))
2721+ let me = cu(cv)
2722+ let mf = fraction((me * aS), aR, (o * bi))
2723+ if ((li.amount != mf))
2724+ then throw(("Payment attached should be " + toString(mf)))
26882725 else {
2689- let fd = ai(invoke(N, "updateEsStorage", [ma], [AttachedPayment(h, mc)]))
2690- $Tuple2(((lh :+ IntegerEntry(iV, lT)) ++ jZ(bO, dn)._1), fd)
2726+ let fd = ai(invoke(N, "updateEsStorage", [md], [AttachedPayment(h, mf)]))
2727+ $Tuple2(((lh :+ IntegerEntry(iV, lW)) ++ jZ(bO, dn)._1), fd)
26912728 }
26922729 }
26932730 }
27002737
27012738
27022739 @Callable(gy)
2703-func updateBackpack (bO,md) = if ((gy.caller != N))
2740+func updateBackpack (bO,mg) = if ((gy.caller != N))
27042741 then throw("permission denied")
2705- else $Tuple2([StringEntry(bT(bO), md)], md)
2742+ else $Tuple2([StringEntry(bT(bO), mg)], mg)
27062743
27072744
27082745
27092746 @Callable(gy)
27102747 func commitForRandom () = {
27112748 let lh = kN(gy)
2712- let me = (height + aa)
2749+ let mh = (height + aa)
27132750 let av = toString(gy.caller)
2714- $Tuple2(([IntegerEntry(ab(av), me)] ++ lh), me)
2751+ $Tuple2(([IntegerEntry(ab(av), mh)] ++ lh), mh)
27152752 }
27162753
27172754
27202757 func revealRandom (aD) = {
27212758 let lh = kN(gy)
27222759 let av = toString(gy.caller)
2723- let mf = ab(av)
2724- let me = valueOrErrorMessage(getInteger(mf), "You have to commitForRandom() first!")
2725- if ((me > height))
2726- then throw(("Random number is not ready yet, wait until height = " + toString(me)))
2760+ let mi = ab(av)
2761+ let mh = valueOrErrorMessage(getInteger(mi), "You have to commitForRandom() first!")
2762+ if ((mh > height))
2763+ then throw(("Random number is not ready yet, wait until height = " + toString(mh)))
27272764 else {
2728- let aF = value(value(blockInfoByHeight(me)).vrf)
2765+ let aF = value(value(blockInfoByHeight(mh)).vrf)
27292766 let aE = toBytes(valueOrElse(getString(au(av)), ""))
2730- let mg = aC(aD, aE, aF)
2731- $Tuple2(([DeleteEntry(mf)] ++ lh), mg)
2767+ let mj = aC(aD, aE, aF)
2768+ $Tuple2(([DeleteEntry(mi)] ++ lh), mj)
27322769 }
27332770 }
27342771
27472784 then throw(("Payment attached should be " + toString(dT)))
27482785 else {
27492786 let fd = iC(gy.caller, gy.transactionId)
2750- let mh = al(invoke(R, "burnAcres", [dV], nil))
2751- $Tuple2((((fd._1 :+ ScriptTransfer(N, li.amount, h)) ++ ka(toString(gy.caller), dp)._1) ++ lh), $Tuple2(fd._2._1, mh))
2787+ let mk = al(invoke(R, "burnAcres", [dV], nil))
2788+ $Tuple2((((fd._1 :+ ScriptTransfer(N, li.amount, h)) ++ ka(toString(gy.caller), dp)._1) ++ lh), $Tuple2(fd._2._1, mk))
27522789 }
27532790 }
27542791 }
27702807 let jK = split(ih[bu], "_")
27712808 let jM = makeString(eX(true, jK, dS), "_")
27722809 let gk = cU(bO)
2773- let lA = valueOrElse(getString(gk), ",;,_,;,_,;,_,;,_,;,_,;,")
2774- let mi = fe(lA, hg._5)
2775- let lC = mi._1
2776- let lD = mi._2
2777- let hv = mi._3
2778- let mj = iC(gy.caller, gy.transactionId)
2779- let iI = mj._2._1
2810+ let lD = valueOrElse(getString(gk), ",;,_,;,_,;,_,;,_,;,_,;,")
2811+ let ml = fe(lD, hg._5)
2812+ let lF = ml._1
2813+ let lG = ml._2
2814+ let hv = ml._3
2815+ let mm = iC(gy.caller, gy.transactionId)
2816+ let iI = mm._2._1
27802817 let fd = if ((0 >= hg._1))
2781- then $Tuple3([IntegerEntry(iV, 0), StringEntry(gk, lC)], "", 0)
2782- else $Tuple3((mj._1 ++ (if (lD)
2818+ then $Tuple3([IntegerEntry(iV, 0), StringEntry(gk, lF)], "", 0)
2819+ else $Tuple3((mm._1 ++ (if (lG)
27832820 then [StringEntry(da(bO), "0_0_0_0_0")]
2784- else ((((nil :+ StringEntry(bU(bO), makeString([mj._2._2, "L", iI], "_"))) :+ IntegerEntry(iV, hg._1)) :+ StringEntry(gk, lC)) :+ StringEntry(hD, makeString([ih[bs], ih[bt], jM, ih[bv]], ":"))))), iI, hg._3)
2821+ else ((((nil :+ StringEntry(bU(bO), makeString([mm._2._2, "L", iI], "_"))) :+ IntegerEntry(iV, hg._1)) :+ StringEntry(gk, lF)) :+ StringEntry(hD, makeString([ih[bs], ih[bt], jM, ih[bv]], ":"))))), iI, hg._3)
27852822 if (kk(bO))
27862823 then throw("expedition_checkTournament")
27872824 else {
2788- let mh = al(invoke(R, "burnAcres", [dV], nil))
2789- $Tuple2(((fd._1 ++ jZ(bO, dp)._1) ++ lh), $Tuple3(fd._2, fd._3, mh))
2825+ let mk = al(invoke(R, "burnAcres", [dV], nil))
2826+ $Tuple2(((fd._1 ++ jZ(bO, dp)._1) ++ lh), $Tuple3(fd._2, fd._3, mk))
27902827 }
27912828 }
27922829 }
28092846 then throw(("Payment attached should be " + toString(dV)))
28102847 else {
28112848 let fd = iC(gy.caller, gy.transactionId)
2812- let mh = al(invoke(R, "burnAcres", [dV], [AttachedPayment(Z, fk)]))
2813- $Tuple2(((fd._1 ++ ka(toString(gy.caller), dp)._1) ++ lh), $Tuple2(fd._2._1, mh))
2849+ let mk = al(invoke(R, "burnAcres", [dV], [AttachedPayment(Z, fk)]))
2850+ $Tuple2(((fd._1 ++ ka(toString(gy.caller), dp)._1) ++ lh), $Tuple2(fd._2._1, mk))
28142851 }
28152852 }
28162853 }
28322869
28332870
28342871 @Callable(gy)
2835-func activateArtifact (mk,ml) = {
2872+func activateArtifact (mn,mo) = {
28362873 let lh = kN(gy)
28372874 if ((size(gy.payments) != 0))
28382875 then throw("No payments required")
28392876 else {
28402877 let av = toString(gy.caller)
28412878 let fd = {
2842- let g = mk
2879+ let g = mn
28432880 if (("PRESALE" == g))
2844- then ki(av, ml)
2881+ then ki(av, mo)
28452882 else if (("ONBOARD" == g))
28462883 then kb(av)
28472884 else throw("Unknown artifact")
28662903
28672904
28682905 @Callable(gy)
2869-func cargoExchange (mm,bI) = {
2906+func cargoExchange (mp,bI) = {
28702907 let lh = kN(gy)
28712908 if ((size(gy.payments) != 0))
28722909 then throw("No payments required")
28732910 else {
2874- let ig = split_4C(mm, ":")
2911+ let ig = split_4C(mp, ":")
28752912 let av = toString(gy.originCaller)
28762913 let jm = value(assetInfo(fromBase58String(bI)))
28772914 let jn = bC(bI)
29182955 if ((size(hW) != 5))
29192956 then throw("warehouse string should contain 4 ':' separators")
29202957 else {
2921- let mn = split(hW[bn], "_")[bo]
2958+ let mq = split(hW[bn], "_")[bo]
29222959 let jB = hH(hW)
2923- let mo = hF(hW[bj])
2924- let jC = ((mo - parseIntValue(mn)) - jB)
2960+ let mr = hF(hW[bj])
2961+ let jC = ((mr - parseIntValue(mq)) - jB)
29252962 if ((0 > jC))
29262963 then throw("Operation leads to negative free warehouse space")
29272964 else {
2928- let mp = makeString_2C([hW[bj], hW[bk], hW[bl], hW[bm], makeString([mn, toString(jB), toString(jC), toString(mo)], "_")], ":")
2929- $Tuple2([StringEntry(hR, mp)], mp)
2965+ let ms = makeString_2C([hW[bj], hW[bk], hW[bl], hW[bm], makeString([mq, toString(jB), toString(jC), toString(mr)], "_")], ":")
2966+ $Tuple2([StringEntry(hR, ms)], ms)
29302967 }
29312968 }
29322969 }
29502987 then throw(("Name too long, maxLength=" + toString(dQ)))
29512988 else {
29522989 let av = toString(gy.originCaller)
2953- let mq = {
2990+ let mt = {
29542991 let g = bE
29552992 if (("ACCOUNT" == g))
29562993 then {
2957- let mr = el(ky)
2958- let ms = getString(mr)
2959- if (isDefined(ms))
2994+ let mu = el(ky)
2995+ let mv = getString(mu)
2996+ if (isDefined(mv))
29602997 then throw(("Name already registered: " + ky))
29612998 else {
2962- let mt = bL(av)
2963- let mu = getString(mt)
2964- let mv = if (isDefined(mu))
2965- then [DeleteEntry(el(value(mu)))]
2999+ let mw = bL(av)
3000+ let mx = getString(mw)
3001+ let my = if (isDefined(mx))
3002+ then [DeleteEntry(el(value(mx)))]
29663003 else nil
2967- (((mv :+ StringEntry(mt, ky)) :+ StringEntry(mr, av)) ++ ka(av, do)._1)
3004+ (((my :+ StringEntry(mw, ky)) :+ StringEntry(mu, av)) ++ ka(av, do)._1)
29683005 }
29693006 }
29703007 else if (("LAND" == g))
29783015 if ((jp != av))
29793016 then throw((aI + " is not yours"))
29803017 else {
2981- let mr = ee(ky)
2982- let ms = getString(mr)
2983- if (isDefined(ms))
3018+ let mu = ee(ky)
3019+ let mv = getString(mu)
3020+ if (isDefined(mv))
29843021 then throw(("Name already registered: " + ky))
29853022 else {
2986- let mw = bB(bA)
2987- let mu = getString(mw)
2988- let mv = if (isDefined(mu))
2989- then [DeleteEntry(ee(value(mu)))]
3023+ let mz = bB(bA)
3024+ let mx = getString(mz)
3025+ let my = if (isDefined(mx))
3026+ then [DeleteEntry(ee(value(mx)))]
29903027 else nil
2991- (((mv :+ StringEntry(mw, ky)) :+ StringEntry(mr, bA)) ++ ka(av, do)._1)
3028+ (((my :+ StringEntry(mz, ky)) :+ StringEntry(mu, bA)) ++ ka(av, do)._1)
29923029 }
29933030 }
29943031 }
30063043 if ((jp != av))
30073044 then throw((aJ + " is not yours"))
30083045 else {
3009- let mr = ek(ky)
3010- let ms = getString(mr)
3011- if (isDefined(ms))
3046+ let mu = ek(ky)
3047+ let mv = getString(mu)
3048+ if (isDefined(mv))
30123049 then throw(("Name already registered: " + ky))
30133050 else {
3014- let mw = bK(bA)
3015- let mu = getString(mw)
3016- let mv = if (isDefined(mu))
3017- then [DeleteEntry(ek(value(mu)))]
3051+ let mz = bK(bA)
3052+ let mx = getString(mz)
3053+ let my = if (isDefined(mx))
3054+ then [DeleteEntry(ek(value(mx)))]
30183055 else nil
3019- (((mv :+ StringEntry(mw, ky)) :+ StringEntry(mr, bA)) ++ jZ(bA, do)._1)
3056+ (((my :+ StringEntry(mz, ky)) :+ StringEntry(mu, bA)) ++ jZ(bA, do)._1)
30203057 }
30213058 }
30223059 }
30233060 }
30243061 else throw("Unknown entity type")
30253062 }
3026- $Tuple2(((mq :+ ScriptTransfer(N, li.amount, h)) ++ lh), 0)
3063+ $Tuple2(((mt :+ ScriptTransfer(N, li.amount, h)) ++ lh), 0)
30273064 }
30283065 }
30293066 }
30313068
30323069
30333070 @Callable(gy)
3034-func setReferrals (mx,my) = if ((gy.callerPublicKey != f))
3071+func setReferrals (mA,mB) = if ((gy.callerPublicKey != f))
30353072 then throw("Permission denied")
30363073 else {
30373074 let lh = kN(gy)
30383075 if ((size(gy.payments) != 0))
30393076 then throw("No payments required")
3040- else if (!(isDefined(addressFromString(mx))))
3041- then throw(("Invalid address: " + mx))
3077+ else if (!(isDefined(addressFromString(mA))))
3078+ then throw(("Invalid address: " + mA))
30423079 else {
3043- let mz = addressFromString(my)
3044- if (!(isDefined(mz)))
3045- then throw(("Invalid address: " + my))
3080+ let mC = addressFromString(mB)
3081+ if (!(isDefined(mC)))
3082+ then throw(("Invalid address: " + mB))
30463083 else {
3047- let mA = getString(au(mx))
3048- if (!(isDefined(mA)))
3084+ let mD = getString(au(mA))
3085+ if (!(isDefined(mD)))
30493086 then throw("oldPlayer didn't do any tx in game")
3050- else if ((0 >= wavesBalance(value(mz)).available))
3087+ else if ((0 >= wavesBalance(value(mC)).available))
30513088 then throw("newPlayer has no WAVES")
30523089 else {
3053- let mB = em()
3054- let mC = getString(mB)
3055- let mD = if (isDefined(mC))
3056- then split_4C(value(mC), "_")
3090+ let mE = em()
3091+ let mF = getString(mE)
3092+ let mG = if (isDefined(mF))
3093+ then split_4C(value(mF), "_")
30573094 else nil
3058- if (containsElement(mD, my))
3059- then throw((my + " is not newbie (already has referrals)"))
3095+ if (containsElement(mG, mB))
3096+ then throw((mB + " is not newbie (already has referrals)"))
30603097 else {
3061- let kc = bM(my)
3098+ let kc = bM(mB)
30623099 let kd = getString(kc)
30633100 if (if (isDefined(kd))
30643101 then isDefined(addressFromString(value(kd)))
30653102 else false)
3066- then throw(((my + " already has refBy: ") + value(kd)))
3103+ then throw(((mB + " already has refBy: ") + value(kd)))
30673104 else {
3068- let mE = bQ(mx)
3069- let mF = getString(mE)
3070- let mG = if (isDefined(mF))
3071- then split_4C(value(mF), "_")
3105+ let mH = bQ(mA)
3106+ let mI = getString(mH)
3107+ let mJ = if (isDefined(mI))
3108+ then split_4C(value(mI), "_")
30723109 else nil
3073- if (containsElement(mG, my))
3074- then throw((((mx + " already contains ") + my) + " within referrals"))
3110+ if (containsElement(mJ, mB))
3111+ then throw((((mA + " already contains ") + mB) + " within referrals"))
30753112 else {
3076- let mH = makeString_2C((mG :+ my), "_")
3077- let mI = if (containsElement(mD, mx))
3078- then value(mC)
3079- else makeString_2C((mD :+ mx), "_")
3080- $Tuple2(([StringEntry(kc, mx), StringEntry(mE, mH), StringEntry(mB, mI)] ++ lh), 0)
3113+ let mK = makeString_2C((mJ :+ mB), "_")
3114+ let mL = if (containsElement(mG, mA))
3115+ then value(mF)
3116+ else makeString_2C((mG :+ mA), "_")
3117+ $Tuple2(([StringEntry(kc, mA), StringEntry(mH, mK), StringEntry(mE, mL)] ++ lh), 0)
30813118 }
30823119 }
30833120 }
30893126
30903127
30913128 @Callable(gy)
3092-func distributePoints (mJ,mK,mL,mM,mN) = {
3129+func distributePoints (mM,mN,mO,mP,mQ) = {
30933130 let lh = kN(gy)
30943131 if ((size(gy.payments) != 0))
30953132 then throw("No payments required")
30963133 else {
30973134 let av = toString(gy.originCaller)
3098- let mO = an(invoke(P, "checkWlgXpREADONLY", [av], nil))
3099- let mP = al(mO[1])
3100- let mQ = if ((0 >= mP))
3135+ let mR = an(invoke(P, "checkWlgXpREADONLY", [av], nil))
3136+ let mS = al(mR[1])
3137+ let mT = if ((0 >= mS))
31013138 then $Tuple2(0, nil)
31023139 else {
31033140 let jX = al(invoke(P, "takeWlgXp", [av], nil))
31043141 if ((jX == jX))
3105- then $Tuple2(mP, [IntegerEntry(cW(av), al(mO[0])), IntegerEntry(cV(av), al(mO[2]))])
3142+ then $Tuple2(mS, [IntegerEntry(cW(av), al(mR[0])), IntegerEntry(cV(av), al(mR[2]))])
31063143 else throw("Strict value is not equal to itself.")
31073144 }
3108- let mR = mQ._1
3109- let mS = mQ._2
3145+ let mU = mT._1
3146+ let mV = mT._2
31103147 let bO = valueOrErrorMessage(getString(bS(av)), "You don't have a duck staked")
3111- let mT = cX(av)
3112- let mU = (valueOrElse(getInteger(mT), 0) + mR)
3113- let mV = cT(bO)
3114- let mW = valueOrElse(getInteger(mV), 0)
3115- let mX = (mU + mW)
3116- let mY = ((((mJ + mK) + mL) + mM) + mN)
3117- if ((mY > mX))
3118- then throw((("There are only " + toString(mX)) + " free points to distribute"))
3148+ let mW = cX(av)
3149+ let mX = (valueOrElse(getInteger(mW), 0) + mU)
3150+ let mY = cT(bO)
3151+ let mZ = valueOrElse(getInteger(mY), 0)
3152+ let na = (mX + mZ)
3153+ let nb = ((((mM + mN) + mO) + mP) + mQ)
3154+ if ((nb > na))
3155+ then throw((("There are only " + toString(na)) + " free points to distribute"))
31193156 else {
3120- let mZ = cQ(bO)
3121- let dF = split(valueOrElse(getString(mZ), "0_0_0_0_0"), "_")
3122- let na = (mU - mY)
3123- $Tuple2((([IntegerEntry(mT, if ((0 > na))
3157+ let nc = cQ(bO)
3158+ let dF = split(valueOrElse(getString(nc), "0_0_0_0_0"), "_")
3159+ let nd = (mX - nb)
3160+ $Tuple2((([IntegerEntry(mW, if ((0 > nd))
31243161 then 0
3125- else na), IntegerEntry(mV, if ((0 > na))
3126- then (mW + na)
3127- else mW), StringEntry(mZ, makeString([toString((parseIntValue(dF[cF]) + mJ)), toString((parseIntValue(dF[cG]) + mK)), toString((parseIntValue(dF[cH]) + mL)), toString((parseIntValue(dF[cI]) + mM)), toString((parseIntValue(dF[cJ]) + mN))], "_"))] ++ lh) ++ mS), 0)
3162+ else nd), IntegerEntry(mY, if ((0 > nd))
3163+ then (mZ + nd)
3164+ else mZ), StringEntry(nc, makeString([toString((parseIntValue(dF[cF]) + mM)), toString((parseIntValue(dF[cG]) + mN)), toString((parseIntValue(dF[cH]) + mO)), toString((parseIntValue(dF[cI]) + mP)), toString((parseIntValue(dF[cJ]) + mQ))], "_"))] ++ lh) ++ mV), 0)
31283165 }
31293166 }
31303167 }
31373174
31383175
31393176 @Callable(gy)
3140-func splitByGlobalAndLocalWeightsREADONLY (nb,nc,gB) = {
3177+func splitByGlobalAndLocalWeightsREADONLY (ne,nf,gB) = {
31413178 let gu = gA(gB)
3142- $Tuple2(nil, $Tuple2(eU(nb), eF(nc, gu)))
3179+ $Tuple2(nil, $Tuple2(eU(ne), eF(nf, gu)))
31433180 }
31443181
31453182
31813218
31823219
31833220 @Callable(gy)
3184-func equipDuck (nd) = {
3221+func equipDuck (ng) = {
31853222 let lh = kN(gy)
31863223 if ((size(gy.payments) != 0))
31873224 then throw("No payments required")
31953232 let lb = split(valueOrElse(getString(gk), ",;,_,;,_,;,_,;,_,;,_,;,"), "_")
31963233 let hD = bT(bO)
31973234 let ih = hC(hD)
3198- let lC = split(nd, "_")
3199- if ((size(lC) != cL))
3235+ let lF = split(ng, "_")
3236+ if ((size(lF) != cL))
32003237 then throw("Wrong equipment string")
32013238 else {
32023239 let gn = gc(lb, fr(ih[bv]), true, nil)
3203- let go = split(lC[cK], ";")[1]
3240+ let go = split(lF[cK], ";")[1]
32043241 let dD = if ((go == ""))
32053242 then 0
32063243 else {
32253262 }
32263263 }
32273264 let fX = dC(this, bO, dD, true)
3228- let gr = gc(lC, gn, false, fX)
3265+ let gr = gc(lF, gn, false, fX)
32293266 let lc = fw(gr)
3230- $Tuple2(([StringEntry(gk, nd), StringEntry(hD, makeString_2C([ih[bs], ih[bt], ih[bu], lc], ":")), StringEntry(da(bO), makeString([toString(fX[7]), toString(fX[8]), toString(fX[9]), toString(fX[10]), toString(fX[11])], "_"))] ++ lh), 0)
3267+ $Tuple2(([StringEntry(gk, ng), StringEntry(hD, makeString_2C([ih[bs], ih[bt], ih[bu], lc], ":")), StringEntry(da(bO), makeString([toString(fX[7]), toString(fX[8]), toString(fX[9]), toString(fX[10]), toString(fX[11])], "_"))] ++ lh), 0)
32313268 }
32323269 }
32333270 }
32413278 else {
32423279 let iV = cP(bO)
32433280 let iW = dw(valueOrElse(getInteger(cS(bO)), 0))
3244- let lw = valueOrElse(getInteger(iV), iW)
3245- let ne = bU(bO)
3246- let jk = valueOrElse(getString(ne), aQ)
3281+ let lz = valueOrElse(getInteger(iV), iW)
3282+ let nh = bU(bO)
3283+ let jk = valueOrElse(getString(nh), aQ)
32473284 let co = valueOrElse(getInteger(Q, bZ), 0)
3248- let nf = (toString(co) + "_T_0")
3249- $Tuple2([IntegerEntry(cY(bO), lw), IntegerEntry(iV, iW), StringEntry(cZ(bO), jk), StringEntry(ne, nf)], nf)
3285+ let ni = (toString(co) + "_T_0")
3286+ $Tuple2([IntegerEntry(cY(bO), lz), IntegerEntry(iV, iW), StringEntry(cZ(bO), jk), StringEntry(nh, ni)], ni)
32503287 }
32513288
32523289
32553292 func breakAttempt () = {
32563293 let lh = kN(gy)
32573294 let bO = valueOrErrorMessage(getString(bS(toString(gy.caller))), "You don't have a duck staked")
3258- let ne = bU(bO)
3259- let jk = valueOrElse(getString(ne), aQ)
3295+ let nh = bU(bO)
3296+ let jk = valueOrElse(getString(nh), aQ)
32603297 if ((split(jk, "_")[bx] != "T"))
32613298 then throw("Your duck is not in the tournament")
32623299 else {
3263- let ng = getIntegerValue(cY(bO))
3264- let nh = getStringValue(cZ(bO))
3265- $Tuple2(((lh :+ IntegerEntry(cP(bO), ng)) :+ StringEntry(ne, nh)), jk)
3300+ let nj = getIntegerValue(cY(bO))
3301+ let nk = getStringValue(cZ(bO))
3302+ $Tuple2(((lh :+ IntegerEntry(cP(bO), nj)) :+ StringEntry(nh, nk)), jk)
32663303 }
32673304 }
32683305
32823319 func exitTournamentInternal (bO) = if ((gy.caller != this))
32833320 then throw("Access denied")
32843321 else {
3285- let ng = getIntegerValue(cY(bO))
3286- let nh = getStringValue(cZ(bO))
3287- $Tuple2([IntegerEntry(cP(bO), ng), StringEntry(bU(bO), nh)], false)
3322+ let nj = getIntegerValue(cY(bO))
3323+ let nk = getStringValue(cZ(bO))
3324+ $Tuple2([IntegerEntry(cP(bO), nj), StringEntry(bU(bO), nk)], false)
32883325 }
32893326
32903327
32943331 then throw("Access denied")
32953332 else {
32963333 let av = toString(gy.originCaller)
3297- let ni = valueOrElse(getInteger(N, bY), 0)
3298- if ((aT > ni))
3299- then throw(("Delivery is not available, fund=" + aw(ni, 6)))
3334+ let nl = valueOrElse(getInteger(N, bY), 0)
3335+ if ((aT > nl))
3336+ then throw(("Delivery is not available, fund=" + aw(nl, 6)))
33003337 else {
33013338 let cq = lastBlock.timestamp
3302- let nj = dg(av)
3303- let nk = valueOrElse(getInteger(dh(av)), 0)
3304- let nl = (cq / dJ)
3305- let fM = if ((nk == nl))
3306- then valueOrElse(getInteger(nj), 0)
3339+ let nm = dg(av)
3340+ let nn = valueOrElse(getInteger(dh(av)), 0)
3341+ let no = (cq / dJ)
3342+ let fM = if ((nn == no))
3343+ then valueOrElse(getInteger(nm), 0)
33073344 else 0
3308- let nm = valueOrElse(getInteger(R, dL(av)), 0)
3309- let nn = (aY + (nm / aZ))
3310- if ((fM >= nn))
3311- then throw((("You already used " + toString(nn)) + " delivery attempts for today"))
3345+ let np = valueOrElse(getInteger(R, dL(av)), 0)
3346+ let nq = (aY + (np / aZ))
3347+ if ((fM >= nq))
3348+ then throw((("You already used " + toString(nq)) + " delivery attempts for today"))
33123349 else {
3313- let no = df(bO)
3314- let np = invoke(N, "sendDeliveryReward", [av], nil)
3315- $Tuple2([IntegerEntry(nj, (fM + 1)), IntegerEntry(dh(av), nl), IntegerEntry(no, (valueOrElse(getInteger(no), 0) + 1))], np)
3350+ let nr = df(bO)
3351+ let ns = invoke(N, "sendDeliveryReward", [av], nil)
3352+ $Tuple2([IntegerEntry(nm, (fM + 1)), IntegerEntry(dh(av), no), IntegerEntry(nr, (valueOrElse(getInteger(nr), 0) + 1))], ns)
33163353 }
33173354 }
33183355 }
33263363 then throw("exactly 1 payment must be attached")
33273364 else {
33283365 let li = gy.payments[0]
3329- let nq = li.amount
3366+ let nt = li.amount
33303367 if (if (!(isDefined(li.assetId)))
33313368 then true
33323369 else (value(li.assetId) != X))
33333370 then throw("WLGOLD payments only!")
3334- else if ((nq != aV))
3371+ else if ((nt != aV))
33353372 then throw((("Payment should be " + aw(aV, 8)) + " WLGOLD"))
33363373 else {
33373374 let av = toString(gy.caller)
33393376 then throw("signature does not match")
33403377 else {
33413378 let fj = split_4C(toUtf8String(iK), ";")
3342- let nr = split_4C(fj[0], "|")
3343- let iN = split(nr[ev], "_")
3379+ let nu = split_4C(fj[0], "|")
3380+ let iN = split(nu[ev], "_")
33443381 let iO = parseIntValue(iN[0])
33453382 let iP = parseIntValue(iN[1])
3346- let iZ = nr[ew]
3347- let ns = split(fj[1], "|")
3348- let nt = ns[ex]
3349- if ((nt != "B"))
3383+ let iZ = nu[ew]
3384+ let nv = split(fj[1], "|")
3385+ let nw = nv[ex]
3386+ if ((nw != "B"))
33503387 then throw("Only bank robbery is supported")
33513388 else {
3352- let iS = parseIntValue(ns[ez])
3389+ let iS = parseIntValue(nv[ez])
33533390 if (if ((iS > (lastBlock.timestamp + dO)))
33543391 then true
33553392 else ((lastBlock.timestamp - dO) > iS))
33563393 then throw(((("signature outdated: logTime=" + toString(iS)) + ", bcTime=") + toString(lastBlock.timestamp)))
33573394 else {
3358- let iT = ns[ey]
3395+ let iT = nv[ey]
33593396 let iU = valueOrElse(getString(au(av)), "")
33603397 if ((iU != iT))
33613398 then throw(((("Tx ids don't match! In state: " + iU) + ", in msg: ") + iT))
33623399 else {
33633400 let bO = valueOrErrorMessage(getString(bS(av)), "You don't have a duck staked")
33643401 let gk = cU(bO)
3365- let lA = valueOrElse(getString(gk), ",;,_,;,_,;,_,;,_,;,_,;,")
3366- let nu = fe(lA, iZ)
3367- let lC = nu._1
3368- let lD = nu._2
3369- let nv = nu._3
3402+ let lD = valueOrElse(getString(gk), ",;,_,;,_,;,_,;,_,;,_,;,")
3403+ let nx = fe(lD, iZ)
3404+ let lF = nx._1
3405+ let lG = nx._2
3406+ let ny = nx._3
33703407 let jk = valueOrElse(getString(bU(bO)), aQ)
33713408 if (cm(Q, jk))
33723409 then throw("Your duck is taking part in the tournament")
33733410 else {
33743411 let cq = lastBlock.timestamp
3375- let nj = dd(av)
3376- let nk = valueOrElse(getInteger(de(av)), 0)
3377- let nl = (cq / dJ)
3378- let fM = if ((nk == nl))
3379- then valueOrElse(getInteger(nj), 0)
3412+ let nm = dd(av)
3413+ let nn = valueOrElse(getInteger(de(av)), 0)
3414+ let no = (cq / dJ)
3415+ let fM = if ((nn == no))
3416+ then valueOrElse(getInteger(nm), 0)
33803417 else 0
3381- let nm = valueOrElse(getInteger(R, dL(av)), 0)
3382- let nw = (aW + (nm / aX))
3383- if ((fM >= nw))
3384- then throw((("You already used " + toString(nw)) + " robbery attempts for today"))
3418+ let np = valueOrElse(getInteger(R, dL(av)), 0)
3419+ let nz = (aW + (np / aX))
3420+ if ((fM >= nz))
3421+ then throw((("You already used " + toString(nz)) + " robbery attempts for today"))
33853422 else {
3386- let no = dc(bO)
3387- let nx = if ((iP > 0))
3423+ let nr = dc(bO)
3424+ let nA = if ((iP > 0))
33883425 then {
3389- let ni = assetBalance(this, X)
3390- let ny = if (nv)
3426+ let nl = assetBalance(this, X)
3427+ let nB = if (ny)
33913428 then (2 * aV)
33923429 else (5 * aV)
3393- if ((ny > ni))
3394- then throw(((("Robbery is not available, funds = " + aw(ni, 8)) + " WLGOLD, required = ") + aw(ny, 8)))
3395- else [ScriptTransfer(gy.caller, ny, X)]
3430+ if ((nB > nl))
3431+ then throw(((("Robbery is not available, funds = " + aw(nl, 8)) + " WLGOLD, required = ") + aw(nB, 8)))
3432+ else [ScriptTransfer(gy.caller, nB, X)]
33963433 }
33973434 else nil
3398- $Tuple2((((((((((lh ++ nx) ++ (if (lD)
3435+ $Tuple2((((((((((lh ++ nA) ++ (if (lG)
33993436 then [StringEntry(da(bO), "0_0_0_0_0")]
34003437 else nil)) ++ jZ(bO, if ((iP > 0))
34013438 then dl
3402- else dm)._1) :+ IntegerEntry(db(bO), cq)) :+ IntegerEntry(nj, (fM + 1))) :+ IntegerEntry(de(av), nl)) :+ IntegerEntry(no, (valueOrElse(getInteger(no), 0) + 1))) :+ StringEntry(gk, lC)) :+ IntegerEntry(cP(bO), max([iP, 0]))), 0)
3439+ else dm)._1) :+ IntegerEntry(db(bO), cq)) :+ IntegerEntry(nm, (fM + 1))) :+ IntegerEntry(de(av), no)) :+ IntegerEntry(nr, (valueOrElse(getInteger(nr), 0) + 1))) :+ StringEntry(gk, lF)) :+ IntegerEntry(cP(bO), max([iP, 0]))), 0)
34033440 }
34043441 }
34053442 }
34263463 else if ((li.amount != dU))
34273464 then throw((("Payment attached should be " + aw(dU, 6)) + " USDT"))
34283465 else {
3429- let nz = valueOrElse(getInteger(en()), 0)
3430- let nA = toBytes(nz)
3431- let ef = ((aK + "-") + takeRight(toBase16String(nA), 8))
3432- let nB = takeRight(toBase16String(sha256_16Kb(nA)), 6)
3433- let iH = Issue(ef, ("Robo Duck NFT for WavesLands game, background color = #" + nB), 1, 0, false)
3466+ let nC = valueOrElse(getInteger(en()), 0)
3467+ let nD = toBytes(nC)
3468+ let ef = ((aK + "-") + takeRight(toBase16String(nD), 8))
3469+ let nE = takeRight(toBase16String(sha256_16Kb(nD)), 6)
3470+ let iH = Issue(ef, ("Robo Duck NFT for WavesLands game, background color = #" + nE), 1, 0, false)
34343471 let bA = calculateAssetId(iH)
3435- $Tuple2(((((lh :+ IntegerEntry(en(), (nz + 1))) :+ iH) :+ ScriptTransfer(gy.originCaller, 1, bA)) :+ ScriptTransfer(N, li.amount, h)), $Tuple2(toBase58String(bA), nB))
3472+ $Tuple2(((((lh :+ IntegerEntry(en(), (nC + 1))) :+ iH) :+ ScriptTransfer(gy.originCaller, 1, bA)) :+ ScriptTransfer(N, li.amount, h)), $Tuple2(toBase58String(bA), nE))
34363473 }
34373474 }
34383475 }
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = false
55
66 let b = false
77
88 let c = false
99
1010 let d = 86400000
1111
1212 let e = take(drop(this.bytes, 1), 1)
1313
1414 let f = {
1515 let g = e
1616 if ((base58'2W' == g))
1717 then if (a)
1818 then base58'CWsMtTZC5BjjoL4Q1ayW4Wwb1ehGACQB6DrKyPgotKfm'
1919 else base58'6LfPuKJjLgekmncBhMg2LZyMTNVzZBccXR28ySXm9uXD'
2020 else if ((base58'2T' == g))
2121 then base58'6LfPuKJjLgekmncBhMg2LZyMTNVzZBccXR28ySXm9uXD'
2222 else throw("Unknown chain")
2323 }
2424
2525 let h = {
2626 let g = e
2727 if ((base58'2W' == g))
2828 then base58'9wc3LXNA4TEBsXyKtoLE9mrbDD7WMHXvXrCjZvabLAsi'
2929 else if ((base58'2T' == g))
3030 then base58'6mWwf9mZBjVgkC54idpyaZLQfAosD914wT8fGf2iiY63'
3131 else throw("Unknown chain")
3232 }
3333
3434 let i = {
3535 let g = e
3636 if ((base58'2W' == g))
3737 then "3PQCuvFbvh4LkPUnrnU1z3jnbA1p9m3WNhv"
3838 else if ((base58'2T' == g))
3939 then "3MumkGGztCKAXpWDqxkddofqXSUbqQkvSJy"
4040 else throw("Unknown chain")
4141 }
4242
4343 let j = {
4444 let g = e
4545 if ((base58'2W' == g))
4646 then "3P4UH3T9nXpMNpUmSmQjPmEz3G85t3zn6eA"
4747 else if ((base58'2T' == g))
4848 then "3NBPx1Fciu3JQNEGZ21jSnTdutLNGGBUSXh"
4949 else throw("Unknown chain")
5050 }
5151
5252 let k = {
5353 let g = e
5454 if ((base58'2W' == g))
5555 then 10000000000
5656 else if ((base58'2T' == g))
5757 then 100000000
5858 else throw("Unknown chain")
5959 }
6060
6161 let l = {
6262 let g = e
6363 if ((base58'2W' == g))
6464 then d
6565 else if ((base58'2T' == g))
6666 then 60000
6767 else throw("Unknown chain")
6868 }
6969
7070 let m = "__"
7171
7272 let n = 1000000
7373
7474 let o = 100000000
7575
7676 let p = 25
7777
7878 let q = 100
7979
8080 let r = 225
8181
8282 let s = 400
8383
8484 let t = 625
8585
8686 let u = [0, 1, 2, 3, 4, 5]
8787
8888 func v (w,x) = valueOrErrorMessage(getString(w, x), makeString(["mandatory ", toString(w), ".", x, " is not defined"], ""))
8989
9090
9191 let y = 1
9292
9393 let z = 2
9494
9595 let A = 3
9696
9797 let B = 4
9898
9999 let C = 7
100100
101101 let D = 8
102102
103103 func E () = "%s__restConfig"
104104
105105
106106 func F () = "%s__restAddr"
107107
108108
109109 func G (H) = split_4C(v(H, E()), m)
110110
111111
112112 func I (J,K) = valueOrErrorMessage(addressFromString(J[K]), ("Rest cfg doesn't contain address at index " + toString(K)))
113113
114114
115115 let L = addressFromStringValue(valueOrElse(getString(this, F()), i))
116116
117117 let J = G(L)
118118
119119 let M = I(J, y)
120120
121121 let N = I(J, z)
122122
123123 let O = I(J, A)
124124
125125 let P = I(J, B)
126126
127127 let Q = I(J, C)
128128
129129 let R = I(J, D)
130130
131131 let S = 0
132132
133133 let T = 1
134134
135135 let U = 2
136136
137137 let V = 3
138138
139139 let W = "wlg_assetId"
140140
141141 let X = valueOrErrorMessage(getBinary(P, W), "WLGOLD is not issued yet")
142142
143143 let Y = "acresAssetId"
144144
145145 let Z = valueOrErrorMessage(getBinary(R, Y), "ACRES is not issued yet")
146146
147147 let aa = 2
148148
149149 func ab (w) = ("finishBlockFor_" + w)
150150
151151
152152 func ac () = "resTypesProportions"
153153
154154
155155 func ad (ae) = ("resTypesByContinent_" + ae)
156156
157157
158158 func af (ag) = ("stakedLandsByOwner_" + ag)
159159
160160
161161 func ah (ag) = ("stakedPiecesByOwner_" + ag)
162162
163163
164164 func ai (aj) = {
165165 let g = aj
166166 if ($isInstanceOf(g, "String"))
167167 then {
168168 let ak = g
169169 ak
170170 }
171171 else throw("fail to cast into String")
172172 }
173173
174174
175175 func al (aj) = {
176176 let g = aj
177177 if ($isInstanceOf(g, "Int"))
178178 then {
179179 let am = g
180180 am
181181 }
182182 else throw("fail to cast into Int")
183183 }
184184
185185
186186 func an (aj) = {
187187 let g = aj
188188 if ($isInstanceOf(g, "List[Any]"))
189189 then {
190190 let ao = g
191191 ao
192192 }
193193 else throw("fail to cast into List[Any]")
194194 }
195195
196196
197197 func ap (aj) = {
198198 let g = aj
199199 if ($isInstanceOf(g, "Boolean"))
200200 then {
201201 let ak = g
202202 ak
203203 }
204204 else throw("fail to cast into Boolean")
205205 }
206206
207207
208208 func aq (ar) = {
209209 let g = ar
210210 if (("S" == g))
211211 then p
212212 else if (("M" == g))
213213 then q
214214 else if (("L" == g))
215215 then r
216216 else if (("XL" == g))
217217 then s
218218 else if (("XXL" == g))
219219 then t
220220 else throw("Unknown land size")
221221 }
222222
223223
224224 func as (ak) = isDefined(parseInt(ak))
225225
226226
227227 func at () = "contractsBlocked"
228228
229229
230230 func au (av) = ("lastTxIdByUser_" + av)
231231
232232
233233 func aw (ax,ay) = {
234234 let az = pow(10, 0, ay, 0, 0, DOWN)
235235 let aA = toString((ax % az))
236236 let aB = drop(toString(az), (1 + size(aA)))
237237 (((toString((ax / az)) + ".") + aB) + aA)
238238 }
239239
240240
241241 func aC (aD,aE,aF) = if ((0 >= aD))
242242 then throw("maxValue should be > 0")
243243 else {
244244 let aG = sha256((aE + aF))
245245 (toInt(aG) % aD)
246246 }
247247
248248
249249 func aH () = min([lastBlock.timestamp, 1727740799000])
250250
251251
252252 let aI = "LAND"
253253
254254 let aJ = "DUCK"
255255
256256 let aK = "ROBO"
257257
258258 let aL = "PRESALE"
259259
260260 let aM = 6
261261
262262 let aN = 25
263263
264264 let aO = 3456000
265265
266266 let aP = 10000000000
267267
268268 let aQ = "Africa_F_Africa"
269269
270270 let aR = 39637
271271
272272 let aS = 10
273273
274274 let aT = 50000
275275
276276 let aU = 10
277277
278278 let aV = 100000000
279279
280280 let aW = 0
281281
282282 let aX = 200000000
283283
284284 let aY = 0
285285
286286 let aZ = 200000000
287287
288288 let ba = ["First Aid Kit L1", "First Aid Kit L2", "First Aid Kit L3", "Backpack L1", "Backpack L2", "Backpack L3", "Food Ration L1", "Food Ration L2", "Food Ration L3", "Jet Pack L1", "Jet Pack L2", "Jet Pack L3", "Shield L1", "Shield L2", "Shield L3", "Mine L1", "Mine L2", "Mine L3", "Trap L1", "Trap L2", "Trap L3", "Boom-Dog L1", "Boom-Dog L2", "Boom-Dog L3"]
289289
290290 let bb = ["Americas", "Europe", "Asia", "Africa", "Oceania"]
291291
292292 let bc = 10000000
293293
294294 let bd = ["8_8_8_17_17_42_12_0_30_0,0,0,0,0,0,0_", "8_8_8_17_17_42_24_0_60_0,0,5,2,0,0,0_", "8_8_8_17_17_42_36_0_120_0,0,10,4,0,0,0_", "8_19_19_8_27_19_26_1_20_0,0,0,0,0,0,0_001", "8_19_19_8_27_19_52_1_40_0,0,0,0,0,0,0_001", "8_19_19_8_27_19_78_1_80_0,0,0,0,0,0,0_001", "8_8_8_8_8_60_13_2_2_0,0,0,0,0,0,0_011", "8_8_8_8_8_60_26_2_4_0,0,0,0,0,0,0_011", "8_8_8_8_8_60_39_2_8_0,0,0,0,0,0,0_011", "30_30_3_17_17_3_30_3_30_0,0,0,0,0,0,0_111", "30_30_3_17_17_3_60_3_50_0,0,0,0,0,0,0_111", "30_30_3_17_17_3_90_3_70_0,0,0,0,0,0,0_111", "18_18_10_18_18_18_11_4_10_0,0,0,0,0,0,0_201", "18_18_10_18_18_18_22_4_20_0,0,0,0,0,0,0_201", "18_18_10_18_18_18_33_4_30_0,0,0,0,0,0,0_201", "4_13_22_4_35_22_23_0_50,1,0_0,0,0,0,0,0,0_", "4_13_22_4_35_22_46_0_50,1,1_0,2,5,0,0,0,0_", "4_13_22_4_35_22_69_0_50,2,1_0,5,10,0,0,0,0_", "5_25_40_5_10_15_20_1_30,1,1_0,0,0,0,0,0,0_", "5_25_40_5_10_15_40_1_30,1,2_2,1,3,0,0,0,0_", "5_25_40_5_10_15_60_1_30,1,3_5,2,8,0,0,0,0_", "23_23_5_20_23_6_35_2_100_0,0,0,0,0,0,0_", "23_23_5_20_23_6_70_2_150_0,0,0,0,0,0,0_", "23_23_5_20_23_6_105_2_200_0,0,0,0,0,0,0_"]
295295
296296 let be = 6
297297
298298 let bf = 8
299299
300300 let bg = 9
301301
302302 let bh = 10
303303
304304 let bi = 10
305305
306306 let bj = 0
307307
308308 let bk = 1
309309
310310 let bl = 2
311311
312312 let bm = 3
313313
314314 let bn = 4
315315
316316 let bo = 0
317317
318318 let bp = 1
319319
320320 let bq = 2
321321
322322 let br = 3
323323
324324 let bs = 0
325325
326326 let bt = 1
327327
328328 let bu = 2
329329
330330 let bv = 3
331331
332332 let bw = 0
333333
334334 let bx = 1
335335
336336 let by = 2
337337
338338 func bz (bA) = ("no_" + bA)
339339
340340
341341 func bB (bA) = ("lcna_" + bA)
342342
343343
344344 func bC (bA) = ("st_" + bA)
345345
346346
347347 func bD (bE,bA) = makeString(["las", bE, bA], "_")
348348
349349
350350 func bF (bG,bA,ag) = ((((("sttao_" + bG) + "_") + bA) + "_") + ag)
351351
352352
353353 func bH (bI) = ("wh_" + bI)
354354
355355
356356 func bJ (bA) = ("infraLevel_" + bA)
357357
358358
359359 func bK (bA) = ("duckCustomNameByAssetId_" + bA)
360360
361361
362362 func bL (av) = ("accountCustomNameByAddr_" + av)
363363
364364
365365 func bM (av) = ("accRefBy_" + av)
366366
367367
368368 func bN (bO) = ("onboardArtActivatedOnDuck_" + bO)
369369
370370
371371 func bP (av) = ("onboardArtActivatedDuckBy_" + av)
372372
373373
374374 func bQ (av) = ("accReferrals_" + av)
375375
376376
377377 func bR (bA) = ("duckOwner_" + bA)
378378
379379
380380 func bS (ag) = ("stakedDuckByOwner_" + ag)
381381
382382
383383 func bT (bO) = ("backPack_" + bO)
384384
385385
386386 func bU (bO) = ("duckLocation_" + bO)
387387
388388
389389 func bV (bW) = ("%s%s__userGwlReleaseTime__" + bW)
390390
391391
392392 func bX () = "emergencyWarehouseProducts"
393393
394394
395395 let bY = "deliveryFund"
396396
397397 let bZ = "%s__lastTourId"
398398
399399 func ca (cb) = ("%s%d__tourStaticData__" + toString(cb))
400400
401401
402402 func cc (cb) = ("%s%d__tourDynamicData__" + toString(cb))
403403
404404
405405 func cd (cb,bO) = makeString(["%s%d%s__bestResultByTourAndDuck", toString(cb), bO], "__")
406406
407407
408408 let ce = 0
409409
410410 let cf = 1
411411
412412 let cg = 6
413413
414414 let ch = 1
415415
416416 func ci (cj,cb) = {
417417 let ck = split(valueOrErrorMessage(getString(cj, ca(cb)), (("Error reading tournament " + toString(cb)) + " data")), "__")
418418 let cl = split_4C(valueOrErrorMessage(getString(cj, cc(cb)), (("Error reading tournament " + toString(cb)) + " data")), "__")
419419 [ck, cl]
420420 }
421421
422422
423423 func cm (cj,cn) = {
424424 let co = valueOrElse(getInteger(cj, bZ), 0)
425425 let cp = split(cn, "_")
426426 let cq = lastBlock.timestamp
427427 let cr = ci(cj, co)
428428 let ck = cr[ce]
429429 let cl = cr[cf]
430430 if (if (if ((cp[bx] == "T"))
431431 then (parseIntValue(cp[bw]) == co)
432432 else false)
433433 then (cl[ch] == "INPROGRESS")
434434 else false)
435435 then (parseIntValue(ck[cg]) > cq)
436436 else false
437437 }
438438
439439
440440 func cs (cj,cn) = {
441441 let co = valueOrElse(getInteger(cj, bZ), 0)
442442 let cp = split(cn, "_")
443443 let cq = lastBlock.timestamp
444444 let cr = ci(cj, co)
445445 let ck = cr[ce]
446446 let cl = cr[cf]
447447 let ct = cp[bx]
448448 if (if (if ((cp[bx] == "T"))
449449 then (parseIntValue(cp[bw]) == co)
450450 else false)
451451 then (cl[ch] == "INPROGRESS")
452452 else false)
453453 then (parseIntValue(ck[cg]) > cq)
454454 else false
455455 }
456456
457457
458458 func cu (cv) = (parseIntValue(cv[be]) * bc)
459459
460460
461461 func cw (cx,cy,cz) = throw(((((("Cheat attempt: oldLoc=" + cx) + ", newLoc=") + cy) + ", case=") + toString(cz)))
462462
463463
464464 let cA = 100000000
465465
466466 let cB = 3200
467467
468468 let cC = 4000
469469
470470 let cD = 3
471471
472472 let cE = ["Strength", "Accuracy", "Intellect", "Endurance", "Dexterity", "Level", "Health"]
473473
474474 let cF = 0
475475
476476 let cG = 1
477477
478478 let cH = 2
479479
480480 let cI = 3
481481
482482 let cJ = 4
483483
484484 let cK = 0
485485
486486 let cL = 6
487487
488488 let cM = 2
489489
490490 let cN = 2
491491
492492 let cO = 30
493493
494494 func cP (bO) = ("duckHealth_" + bO)
495495
496496
497497 func cQ (bO) = ("duckChars_" + bO)
498498
499499
500500 func cR (bO) = ("duckXP_" + bO)
501501
502502
503503 func cS (bO) = ("duckLevel_" + bO)
504504
505505
506506 func cT (bO) = ("duckFreePoints_" + bO)
507507
508508
509509 func cU (bO) = ("duckEquipment_" + bO)
510510
511511
512512 func cV (av) = ("userXP_" + av)
513513
514514
515515 func cW (av) = ("userLevel_" + av)
516516
517517
518518 func cX (av) = ("userFreePoints_" + av)
519519
520520
521521 func cY (bO) = ("savedHealth_" + bO)
522522
523523
524524 func cZ (bO) = ("savedLocation_" + bO)
525525
526526
527527 func da (bO) = ("duckBuffs_" + bO)
528528
529529
530530 func db (bO) = ("lastRobberyTime_" + bO)
531531
532532
533533 func dc (bO) = ("totalRobberyCountByDuck_" + bO)
534534
535535
536536 func dd (av) = ("userRobberyCount_" + av)
537537
538538
539539 func de (av) = ("userLastRobberyDay_" + av)
540540
541541
542542 func df (bO) = ("totalDeliveryCountByDuck_" + bO)
543543
544544
545545 func dg (av) = ("userDeliveryCount_" + av)
546546
547547
548548 func dh (av) = ("userLastDeliveryDay_" + av)
549549
550550
551551 let di = 10000
552552
553553 let dj = 10000
554554
555555 let dk = 2000
556556
557557 let dl = 10000
558558
559559 let dm = 2000
560560
561561 let dn = 100000
562562
563563 let do = 1000000
564564
565565 let dp = 5000000
566566
567567 let dq = 10000
568568
569569 let dr = 1000000
570570
571571 let ds = 1000000
572572
573573 let dt = 10000
574574
575575 func du (dv) = fraction(cB, pow(dv, 4, cC, 4, 4, DOWN), cA)
576576
577577
578578 func dw (dx) = (100 + dx)
579579
580580
581581 func dy (dz,dA) = {
582582 let dB = du(dA)
583583 [dB, (cD * (dB - dz))]
584584 }
585585
586586
587587 func dC (M,bO,dD,dE) = {
588588 let dF = split(valueOrElse(getString(M, cQ(bO)), "0_0_0_0_0"), "_")
589589 let dG = valueOrElse(getInteger(M, cS(bO)), 0)
590590 let dH = valueOrElse(getInteger(M, cP(bO)), dw(dG))
591591 let dI = split(valueOrElse(getString(M, da(bO)), "0_0_0_0_0"), "_")
592592 ([parseIntValue(dF[cF]), parseIntValue(dF[cG]), parseIntValue(dF[cH]), parseIntValue(dF[cI]), parseIntValue(dF[cJ]), dG, dH] ++ (if (dE)
593593 then [dD, dD, dD, dD, dD]
594594 else [parseIntValue(dI[cF]), parseIntValue(dI[cG]), parseIntValue(dI[cH]), parseIntValue(dI[cI]), parseIntValue(dI[cJ])]))
595595 }
596596
597597
598598 let dJ = 86400000
599599
600600 func dK (av) = ("lastArbTimeUser_" + av)
601601
602602
603603 func dL (av) = ("acresStakedAmountByUser_" + av)
604604
605605
606606 let dM = {
607607 let g = e
608608 if ((base58'2W' == g))
609609 then addressFromStringValue("3PEktVux2RhchSN63DsDo4b4mz4QqzKSeDv")
610610 else if ((base58'2T' == g))
611611 then this
612612 else throw("Unknown chain")
613613 }
614614
615615 let dN = {
616616 let g = e
617617 if ((base58'2W' == g))
618618 then addressFromStringValue("3PDVuU45H7Eh5dmtNbnRNRStGwULA7NY6Hb")
619619 else if ((base58'2T' == g))
620620 then this
621621 else throw("Unknown chain")
622622 }
623623
624624 let dO = 300000
625625
626626 let dP = 5000000
627627
628628 let dQ = 50
629629
630630 let dR = 10000000
631631
632632 let dS = {
633633 let g = e
634634 if ((base58'2W' == g))
635635 then 252289527462
636636 else if ((base58'2T' == g))
637637 then 2522895274
638638 else throw("Unknown chain")
639639 }
640640
641641 let dT = {
642642 let g = e
643643 if ((base58'2W' == g))
644644 then 250000000
645645 else if ((base58'2T' == g))
646646 then 250000000
647647 else throw("Unknown chain")
648648 }
649649
650650 let dU = 100000
651651
652652 let dV = 2500000000
653653
654654 let dW = toBigInt(5)
655655
656656 let dX = toBigInt(20)
657657
658658 let dY = toBigInt((20 * 20))
659659
660660 let dZ = toBigInt(((20 * 20) * 20))
661661
662662 let ea = toBigInt((((20 * 20) * 20) * 20))
663663
664664 let eb = toBigInt(((((20 * 20) * 20) * 20) * 20))
665665
666666 let ec = 500
667667
668668 func ed () = "nextLandNum"
669669
670670
671671 func ee (ef) = ("lcn_" + ef)
672672
673673
674674 func eg (eh) = ("la_" + eh)
675675
676676
677677 func ei (bA,ag) = ((("ilao_" + bA) + "_") + ag)
678678
679679
680680 func ej (eh) = ("lo_" + eh)
681681
682682
683683 func ek (ef) = ("duckByCustomName_" + ef)
684684
685685
686686 func el (ef) = ("accountByCustomName_" + ef)
687687
688688
689689 func em () = "oldiesList"
690690
691691
692692 func en () = "nextRoboDuck"
693693
694694
695695 let eo = 0
696696
697697 let ep = 1
698698
699699 let eq = 2
700700
701701 let er = 0
702702
703703 let es = 5
704704
705705 let et = 6
706706
707707 let eu = 7
708708
709709 let ev = 0
710710
711711 let ew = 1
712712
713713 let ex = 0
714714
715715 let ey = 2
716716
717717 let ez = 3
718718
719719 func eA (eh,ar) = ((aI + eh) + ar)
720720
721721
722722 func eB (eC,eD) = {
723723 let eE = if ((eC >= 0))
724724 then (((eC + eD) - 1) / eD)
725725 else -((((-(eC) + eD) - 1) / eD))
726726 (eE * o)
727727 }
728728
729729
730730 func eF (eG,eH) = {
731731 let eI = (((((eH[0] + eH[1]) + eH[2]) + eH[3]) + eH[4]) + eH[5])
732732 if ((0 >= eI))
733733 then throw("Zero weights sum")
734734 else {
735735 let eJ = fraction(eG, n, eI)
736736 func eK (eL,eM) = (eL :+ fraction(eM, eJ, n))
737737
738738 let eN = eH
739739 let eO = size(eN)
740740 let eP = nil
741741 func eQ (eR,eS) = if ((eS >= eO))
742742 then eR
743743 else eK(eR, eN[eS])
744744
745745 func eT (eR,eS) = if ((eS >= eO))
746746 then eR
747747 else throw("List size exceeds 6")
748748
749749 eT(eQ(eQ(eQ(eQ(eQ(eQ(eP, 0), 1), 2), 3), 4), 5), 6)
750750 }
751751 }
752752
753753
754754 func eU (eG) = {
755755 let eV = split(value(getString(ac())), "_")
756756 if ((size(eV) != aM))
757757 then throw("Wrong proportions data")
758758 else {
759759 let eW = [parseIntValue(eV[0]), parseIntValue(eV[1]), parseIntValue(eV[2]), parseIntValue(eV[3]), parseIntValue(eV[4]), parseIntValue(eV[5])]
760760 eF(eG, eW)
761761 }
762762 }
763763
764764
765765 func eX (eY,eZ,fa) = {
766766 let fb = eU(fa)
767767 func fc (eL,K) = {
768768 let fd = (parseIntValue(eZ[K]) - fb[K])
769769 if ((0 > fd))
770770 then throw(((((("Not enough material idx=" + toString(K)) + ", you have ") + eZ[K]) + ", but need ") + toString(fb[K])))
771771 else (eL :+ toString(fd))
772772 }
773773
774774 if (eY)
775775 then {
776776 let eN = u
777777 let eO = size(eN)
778778 let eP = nil
779779 func eQ (eR,eS) = if ((eS >= eO))
780780 then eR
781781 else fc(eR, eN[eS])
782782
783783 func eT (eR,eS) = if ((eS >= eO))
784784 then eR
785785 else throw("List size exceeds 6")
786786
787787 eT(eQ(eQ(eQ(eQ(eQ(eQ(eP, 0), 1), 2), 3), 4), 5), 6)
788788 }
789789 else eZ
790790 }
791791
792792
793793 func fe (ff,fg) = if ((fg == ""))
794794 then $Tuple3(ff, false, false)
795795 else {
796796 func fh (eL,fi) = {
797797 let fj = split(fi, ",")
798798 if ((size(fj) != 2))
799799 then throw("Incorrect format, should be index,amount")
800800 else {
801801 let K = parseIntValue(fj[0])
802802 if (if ((0 > K))
803803 then true
804804 else (K >= size(bd)))
805805 then throw("Unknown product idx")
806806 else {
807807 let fk = parseIntValue(fj[1])
808808 let fl = split(eL._1, (fj[0] + ":"))
809809 if ((size(fl) != 2))
810810 then throw((("You don't have " + ba[K]) + " equipped"))
811811 else {
812812 let fm = fl[1]
813813 let fn = if (as(take(drop(fm, 1), 1)))
814814 then 2
815815 else 1
816816 let fo = parseIntValue(take(fm, fn))
817817 let fp = drop(fm, fn)
818818 let fq = if ((fo >= fk))
819819 then (fo - fk)
820820 else throw(((((("You equipped " + toString(fo)) + " of ") + ba[K]) + ", but tried to use ") + toString(fk)))
821821 $Tuple3(((((fl[0] + fj[0]) + ":") + toString(fq)) + fp), if (eL._2)
822822 then true
823823 else if (if ((K >= 6))
824824 then (8 >= K)
825825 else false)
826826 then (fq == 0)
827827 else false, if (eL._3)
828828 then true
829829 else if (if ((K >= 3))
830830 then (5 >= K)
831831 else false)
832832 then (fk > 0)
833833 else false)
834834 }
835835 }
836836 }
837837 }
838838
839839 let eN = split(fg, "_")
840840 let eO = size(eN)
841841 let eP = $Tuple3(ff, false, false)
842842 func eQ (eR,eS) = if ((eS >= eO))
843843 then eR
844844 else fh(eR, eN[eS])
845845
846846 func eT (eR,eS) = if ((eS >= eO))
847847 then eR
848848 else throw("List size exceeds 10")
849849
850850 eT(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eP, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
851851 }
852852
853853
854854 func fr (fs) = {
855855 let ft = if ((fs == ""))
856856 then nil
857857 else split_4C(fs, "_")
858858 func fu (eL,cv) = {
859859 let fv = (size(eL) / 8)
860860 let fo = if ((size(ft) > fv))
861861 then parseIntValue(ft[fv])
862862 else 0
863863 (eL + toBytes(fo))
864864 }
865865
866866 let eN = bd
867867 let eO = size(eN)
868868 let eP = base58''
869869 func eQ (eR,eS) = if ((eS >= eO))
870870 then eR
871871 else fu(eR, eN[eS])
872872
873873 func eT (eR,eS) = if ((eS >= eO))
874874 then eR
875875 else throw("List size exceeds 50")
876876
877877 eT(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eP, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50)
878878 }
879879
880880
881881 func fw (fx) = {
882882 func fy (eL,cv) = {
883883 let fv = size(eL)
884884 let fz = take(drop(fx, (8 * fv)), 8)
885885 (eL :+ toString(toInt(fz)))
886886 }
887887
888888 makeString_2C({
889889 let eN = bd
890890 let eO = size(eN)
891891 let eP = nil
892892 func eQ (eR,eS) = if ((eS >= eO))
893893 then eR
894894 else fy(eR, eN[eS])
895895
896896 func eT (eR,eS) = if ((eS >= eO))
897897 then eR
898898 else throw("List size exceeds 50")
899899
900900 eT(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eP, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50)
901901 }, "_")
902902 }
903903
904904
905905 func fA (fB,fC) = {
906906 func fD (eL,fv) = {
907907 let fE = if ((size(fB) > (7 + fv)))
908908 then fB[(7 + fv)]
909909 else 0
910910 if ((parseIntValue(fC[fv]) > (fB[fv] + fE)))
911911 then throw(("Requirement not satisfied: " + cE[fv]))
912912 else true
913913 }
914914
915915 let eN = [0, 1, 2, 3, 4, 5, 6]
916916 let eO = size(eN)
917917 let eP = false
918918 func eQ (eR,eS) = if ((eS >= eO))
919919 then eR
920920 else fD(eR, eN[eS])
921921
922922 func eT (eR,eS) = if ((eS >= eO))
923923 then eR
924924 else throw("List size exceeds 7")
925925
926926 eT(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eP, 0), 1), 2), 3), 4), 5), 6), 7)
927927 }
928928
929929
930930 func fF (fG,ft,fH,fI,fJ,fK,fB) = {
931931 let fj = split(fG, ":")
932932 if ((size(fj) != 2))
933933 then throw("Incorrect format, should be index:amount")
934934 else if (if (!(fH))
935935 then (size(fj[0]) != 2)
936936 else false)
937937 then throw("Product idx should be 2 digits, zero padded")
938938 else {
939939 let fL = parseIntValue(fj[0])
940940 let fM = parseIntValue(fj[1])
941941 if (if ((0 > fL))
942942 then true
943943 else (fL >= size(bd)))
944944 then throw("Unknown product idx")
945945 else if ((0 > fM))
946946 then throw("Count can't be negative")
947947 else if ((fM > cO))
948948 then throw(((("Can't put more than " + toString(cO)) + " of ") + ba[fL]))
949949 else if ((fM == 0))
950950 then $Tuple2(ft, false)
951951 else {
952952 let fN = take(ft, (8 * fL))
953953 let fo = toInt(take(drop(ft, (8 * fL)), 8))
954954 let fp = drop(ft, (8 * (fL + 1)))
955955 let cv = split(bd[fL], "_")
956956 if (if (!(fH))
957957 then (fM > fo)
958958 else false)
959959 then throw(((((("You have " + toString(fo)) + " of ") + ba[fL]) + ", but tried to use ") + toString(fM)))
960960 else {
961961 let fO = if (if (!(fH))
962962 then fA(fB, split(cv[bg], ","))
963963 else false)
964964 then {
965965 let fP = cv[bh]
966966 if ((fP == ""))
967967 then throw("Item cannot be equipped")
968968 else {
969969 let fQ = parseIntValue(fP)
970970 let fR = (fQ / 100)
971971 if ((fI != fR))
972972 then throw("Segment incompatible")
973973 else {
974974 let fS = ((fQ % 100) / 10)
975975 if ((fJ != fS))
976976 then throw("Slot incompatible")
977977 else {
978978 let fT = (fQ % 10)
979979 if (if ((fK != 0))
980980 then (fT > 1)
981981 else false)
982982 then throw("Big items should occupy slot 0")
983983 else (fT > 1)
984984 }
985985 }
986986 }
987987 }
988988 else false
989989 $Tuple2(((fN + toBytes((fo + (if (fH)
990990 then fM
991991 else -(fM))))) + fp), fO)
992992 }
993993 }
994994 }
995995 }
996996
997997
998998 func fU (fV,fW,fH,fI,fJ,fX) = if ((fV != ""))
999999 then {
10001000 let fY = split(fV, ",")
10011001 if ((size(fY) > cN))
10021002 then throw("Wrong slots format")
10031003 else {
10041004 let fZ = fY[0]
10051005 let ga = if ((size(fY) > 1))
10061006 then fY[1]
10071007 else ""
10081008 if (if ((fZ == ""))
10091009 then (ga == "")
10101010 else false)
10111011 then fW
10121012 else {
10131013 let gb = if ((fZ != ""))
10141014 then fF(fZ, fW, fH, fI, fJ, 0, fX)
10151015 else $Tuple2(fW, false)
10161016 if ((ga != ""))
10171017 then if (gb._2)
10181018 then throw("Big item already occupies slot")
10191019 else fF(ga, gb._1, fH, fI, fJ, 1, fX)._1
10201020 else gb._1
10211021 }
10221022 }
10231023 }
10241024 else fW
10251025
10261026
10271027 func gc (gd,ge,fH,fX) = {
10281028 func fI (eL,gf) = {
10291029 let fv = eL._1
10301030 let fJ = split(gf, ";")
10311031 if ((size(fJ) != cM))
10321032 then throw("Wrong segment format")
10331033 else {
10341034 let gg = fJ[0]
10351035 let gh = fJ[1]
10361036 if (if ((gg == ""))
10371037 then (gh == "")
10381038 else false)
10391039 then $Tuple2((fv + 1), eL._2)
10401040 else {
10411041 let gi = fU(gg, eL._2, fH, fv, 0, fX)
10421042 $Tuple2((fv + 1), fU(gh, gi, fH, fv, 1, fX))
10431043 }
10441044 }
10451045 }
10461046
10471047 ( let eN = gd
10481048 let eO = size(eN)
10491049 let eP = $Tuple2(0, ge)
10501050 func eQ (eR,eS) = if ((eS >= eO))
10511051 then eR
10521052 else fI(eR, eN[eS])
10531053
10541054 func eT (eR,eS) = if ((eS >= eO))
10551055 then eR
10561056 else throw("List size exceeds 6")
10571057
10581058 eT(eQ(eQ(eQ(eQ(eQ(eQ(eP, 0), 1), 2), 3), 4), 5), 6))._2
10591059 }
10601060
10611061
10621062 func gj (bO) = {
10631063 let gk = cU(bO)
10641064 let gl = split(valueOrElse(getString(gk), ",;,_,;,_,;,_,;,_,;,_,;,"), "_")
10651065 let gm = base64'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=='
10661066 let gn = gc(gl, gm, true, nil)
10671067 let go = split(gl[cK], ";")[1]
10681068 let dD = if ((go == ""))
10691069 then 0
10701070 else {
10711071 let gp = split(go, ",")[0]
10721072 if ((gp == ""))
10731073 then 0
10741074 else {
10751075 let fG = split(gp, ":")
10761076 let K = fG[0]
10771077 let gq = fG[1]
10781078 if (if (if (if (if ((K == "06"))
10791079 then true
10801080 else (K == "07"))
10811081 then true
10821082 else (K == "08"))
10831083 then (gq != "")
10841084 else false)
10851085 then (parseIntValue(gq) > 0)
10861086 else false)
10871087 then parseIntValue(split(bd[parseIntValue(K)], "_")[bf])
10881088 else 0
10891089 }
10901090 }
10911091 let fX = dC(this, bO, dD, true)
10921092 let gr = gc(gl, gn, false, fX)
10931093 (gr == gr)
10941094 }
10951095
10961096
10971097 func gs (gt,gu,gv,gw) = if ((size(gt) != aM))
10981098 then throw("Wrong proportions data")
10991099 else {
11001100 func gx (eL,gy) = {
11011101 let fd = (parseIntValue(gt[gy]) + ((gw * gu[gy]) * gv))
11021102 if ((0 > fd))
11031103 then throw(((((((("Panic! Pieces of type=" + toString(gy)) + ", sign=") + toString(gw)) + ", terrainCounts[i]=") + toString(gu[gy])) + ", landSizeIndex=") + toString(gv)))
11041104 else (eL :+ toString(fd))
11051105 }
11061106
11071107 let eN = u
11081108 let eO = size(eN)
11091109 let eP = nil
11101110 func eQ (eR,eS) = if ((eS >= eO))
11111111 then eR
11121112 else gx(eR, eN[eS])
11131113
11141114 func eT (eR,eS) = if ((eS >= eO))
11151115 then eR
11161116 else throw("List size exceeds 6")
11171117
11181118 eT(eQ(eQ(eQ(eQ(eQ(eQ(eP, 0), 1), 2), 3), 4), 5), 6)
11191119 }
11201120
11211121
11221122 func gz (gu,gv,gw) = {
11231123 let gt = split(valueOrElse(getString(ac()), "0_0_0_0_0_0"), "_")
11241124 makeString(gs(gt, gu, gv, gw), "_")
11251125 }
11261126
11271127
11281128 func gA (gB) = [(size(split(gB, "A")) - 1), (size(split(gB, "B")) - 1), (size(split(gB, "C")) - 1), (size(split(gB, "D")) - 1), (size(split(gB, "E")) - 1), (size(split(gB, "F")) - 1)]
11291129
11301130
11311131 func gC (gD,gu,gE,gv,gF) = {
11321132 func gG (eL,gy) = {
11331133 let gH = ((fraction(gE, gF, dJ) * gu[gy]) * gv)
11341134 (eL :+ toString((parseIntValue(gD[gy]) + gH)))
11351135 }
11361136
11371137 let eW = {
11381138 let eN = u
11391139 let eO = size(eN)
11401140 let eP = nil
11411141 func eQ (eR,eS) = if ((eS >= eO))
11421142 then eR
11431143 else gG(eR, eN[eS])
11441144
11451145 func eT (eR,eS) = if ((eS >= eO))
11461146 then eR
11471147 else throw("List size exceeds 6")
11481148
11491149 eT(eQ(eQ(eQ(eQ(eQ(eQ(eP, 0), 1), 2), 3), 4), 5), 6)
11501150 }
11511151 makeString(eW, "_")
11521152 }
11531153
11541154
11551155 func gI (gD,gu,gE,gv,gF) = {
11561156 func gG (eL,gy) = {
11571157 let gH = ((fraction(gE, gF, dJ) * gu[gy]) * gv)
11581158 let gJ = (parseIntValue(gD[gy]) + gH)
11591159 $Tuple2((eL._1 :+ gJ), (eL._2 + gJ))
11601160 }
11611161
11621162 let eN = u
11631163 let eO = size(eN)
11641164 let eP = $Tuple2(nil, 0)
11651165 func eQ (eR,eS) = if ((eS >= eO))
11661166 then eR
11671167 else gG(eR, eN[eS])
11681168
11691169 func eT (eR,eS) = if ((eS >= eO))
11701170 then eR
11711171 else throw("List size exceeds 6")
11721172
11731173 eT(eQ(eQ(eQ(eQ(eQ(eQ(eP, 0), 1), 2), 3), 4), 5), 6)
11741174 }
11751175
11761176
11771177 func gK (gu,gE,gv,gF) = {
11781178 func gG (eL,gL) = {
11791179 let gH = ((fraction(gE, gF, dJ) * gL) * gv)
11801180 $Tuple2((eL._1 :+ gH), (eL._2 + gH))
11811181 }
11821182
11831183 let eN = gu
11841184 let eO = size(eN)
11851185 let eP = $Tuple2(nil, 0)
11861186 func eQ (eR,eS) = if ((eS >= eO))
11871187 then eR
11881188 else gG(eR, eN[eS])
11891189
11901190 func eT (eR,eS) = if ((eS >= eO))
11911191 then eR
11921192 else throw("List size exceeds 6")
11931193
11941194 eT(eQ(eQ(eQ(eQ(eQ(eQ(eP, 0), 1), 2), 3), 4), 5), 6)
11951195 }
11961196
11971197
11981198 func gM (gN,gO,gP,gQ) = {
11991199 let gR = gP._1
12001200 let gS = gP._2
12011201 if ((gS == 0))
12021202 then $Tuple2(makeString(gN, "_"), makeString(gO, "_"))
12031203 else if ((gQ >= gS))
12041204 then {
12051205 func gT (eL,gy) = (eL :+ toString((parseIntValue(gN[gy]) + gR[gy])))
12061206
12071207 let eW = {
12081208 let eN = u
12091209 let eO = size(eN)
12101210 let eP = nil
12111211 func eQ (eR,eS) = if ((eS >= eO))
12121212 then eR
12131213 else gT(eR, eN[eS])
12141214
12151215 func eT (eR,eS) = if ((eS >= eO))
12161216 then eR
12171217 else throw("List size exceeds 6")
12181218
12191219 eT(eQ(eQ(eQ(eQ(eQ(eQ(eP, 0), 1), 2), 3), 4), 5), 6)
12201220 }
12211221 $Tuple2(makeString(eW, "_"), makeString(gO, "_"))
12221222 }
12231223 else {
12241224 func gU (eL,gy) = {
12251225 let gV = fraction(gR[gy], gQ, gS)
12261226 $Tuple2((eL._1 :+ toString((parseIntValue(gN[gy]) + gV))), (eL._2 :+ toString(((parseIntValue(gO[gy]) + gR[gy]) - gV))))
12271227 }
12281228
12291229 let eW = {
12301230 let eN = u
12311231 let eO = size(eN)
12321232 let eP = $Tuple2(nil, nil)
12331233 func eQ (eR,eS) = if ((eS >= eO))
12341234 then eR
12351235 else gU(eR, eN[eS])
12361236
12371237 func eT (eR,eS) = if ((eS >= eO))
12381238 then eR
12391239 else throw("List size exceeds 6")
12401240
12411241 eT(eQ(eQ(eQ(eQ(eQ(eQ(eP, 0), 1), 2), 3), 4), 5), 6)
12421242 }
12431243 $Tuple2(makeString(eW._1, "_"), makeString(eW._2, "_"))
12441244 }
12451245 }
12461246
12471247
12481248 func gW (gX) = if ((gX >= toBigInt(0)))
12491249 then gX
12501250 else -(gX)
12511251
12521252
12531253 let gY = [[6, 9, 14, 15, 16], [5, 8, 13, 14, 15], [1, 4, 9, 10, 15], [1, 6, 7, 15, 19], [4, 7, 8, 13, 18]]
12541254
12551255 func gZ (am,ha) = {
12561256 let hb = toInt((am % dX))
12571257 let hc = if ((ha[0] > hb))
12581258 then "A"
12591259 else if ((ha[1] > hb))
12601260 then "B"
12611261 else if ((ha[2] > hb))
12621262 then "C"
12631263 else if ((ha[3] > hb))
12641264 then "D"
12651265 else if ((ha[4] > hb))
12661266 then "E"
12671267 else "F"
12681268 hc
12691269 }
12701270
12711271
12721272 func hd (he,hf) = {
12731273 let hg = gY[hf]
12741274 func hh (eL,eM) = $Tuple2((((((eL._1 + gZ(eL._2, hg)) + gZ((eL._2 / dX), hg)) + gZ((eL._2 / dY), hg)) + gZ((eL._2 / dZ), hg)) + gZ((eL._2 / ea), hg)), (eL._2 / eb))
12751275
12761276 let hi = {
12771277 let eN = [1, 2, 3, 4, 5]
12781278 let eO = size(eN)
12791279 let eP = $Tuple2("", (he / dW))
12801280 func eQ (eR,eS) = if ((eS >= eO))
12811281 then eR
12821282 else hh(eR, eN[eS])
12831283
12841284 func eT (eR,eS) = if ((eS >= eO))
12851285 then eR
12861286 else throw("List size exceeds 5")
12871287
12881288 eT(eQ(eQ(eQ(eQ(eQ(eP, 0), 1), 2), 3), 4), 5)
12891289 }
12901290 hi._1
12911291 }
12921292
12931293
12941294 let hj = [7, 2, 15, 19, 8, 24, 1, 21, 16, 5, 0, 22, 20, 23, 11, 4, 18, 12, 6, 10, 3, 17, 13, 9, 14]
12951295
12961296 let hk = ["A", "B", "C", "D", "E", "F"]
12971297
12981298 func hl (hm,gv) = {
12991299 func hn (eL,ak) = {
13001300 let fv = eL._2
13011301 let ho = parseIntValue(ak)
13021302 let gX = if ((ho == 0))
13031303 then 0
13041304 else if ((ho >= (4 * gv)))
13051305 then (ho / gv)
13061306 else if ((ho > (3 * gv)))
13071307 then 3
13081308 else (((ho - 1) / gv) + 1)
13091309 $Tuple3((eL._1 :+ gX), (eL._2 + 1), (eL._3 + gX))
13101310 }
13111311
13121312 let hi = {
13131313 let eN = hm
13141314 let eO = size(eN)
13151315 let eP = $Tuple3(nil, 0, 0)
13161316 func eQ (eR,eS) = if ((eS >= eO))
13171317 then eR
13181318 else hn(eR, eN[eS])
13191319
13201320 func eT (eR,eS) = if ((eS >= eO))
13211321 then eR
13221322 else throw("List size exceeds 6")
13231323
13241324 eT(eQ(eQ(eQ(eQ(eQ(eQ(eP, 0), 1), 2), 3), 4), 5), 6)
13251325 }
13261326 let hp = hi._1
13271327 let hq = value(indexOf(hp, max(hp)))
13281328 let hr = (hi._3 - 25)
13291329 func hs (eL,K) = {
13301330 let ax = if ((K == hq))
13311331 then (hp[K] - hr)
13321332 else hp[K]
13331333 let aB = if ((ax == 0))
13341334 then nil
13351335 else split(drop(toString(pow(10, 0, ax, 0, 0, DOWN)), 1), "")
13361336 let fQ = hk[K]
13371337 func ht (hu,hv) = (hu :+ fQ)
13381338
13391339 let hw = {
13401340 let eN = aB
13411341 let eO = size(eN)
13421342 let eP = nil
13431343 func hx (eR,eS) = if ((eS >= eO))
13441344 then eR
13451345 else ht(eR, eN[eS])
13461346
13471347 func hy (eR,eS) = if ((eS >= eO))
13481348 then eR
13491349 else throw("List size exceeds 25")
13501350
13511351 hy(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(eP, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25)
13521352 }
13531353 (eL ++ hw)
13541354 }
13551355
13561356 let eW = {
13571357 let eN = u
13581358 let eO = size(eN)
13591359 let eP = nil
13601360 func hx (eR,eS) = if ((eS >= eO))
13611361 then eR
13621362 else hs(eR, eN[eS])
13631363
13641364 func hy (eR,eS) = if ((eS >= eO))
13651365 then eR
13661366 else throw("List size exceeds 6")
13671367
13681368 hy(hx(hx(hx(hx(hx(hx(eP, 0), 1), 2), 3), 4), 5), 6)
13691369 }
13701370 func hz (eL,fv) = (eL + eW[fv])
13711371
13721372 let eN = hj
13731373 let eO = size(eN)
13741374 let eP = ""
13751375 func hA (eR,eS) = if ((eS >= eO))
13761376 then eR
13771377 else hz(eR, eN[eS])
13781378
13791379 func hB (eR,eS) = if ((eS >= eO))
13801380 then eR
13811381 else throw("List size exceeds 25")
13821382
13831383 hB(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(eP, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25)
13841384 }
13851385
13861386
13871387 func hC (hD) = {
13881388 let hE = split(valueOrElse(getString(hD), "0:0_0_0_0_0_0:0_0_0_0_0_0:"), ":")
13891389 [toString(valueOrElse(parseInt(hE[bs]), 0)), if ((size(split(hE[bt], "_")) == aM))
13901390 then hE[bt]
13911391 else "0_0_0_0_0_0", if ((size(split(hE[bu], "_")) == aM))
13921392 then hE[bu]
13931393 else "0_0_0_0_0_0", hE[bv]]
13941394 }
13951395
13961396
13971397 func hF (hG) = {
13981398 let fj = split(hG, "_")
13991399 ((aP * (parseIntValue(fj[1]) + 1)) * parseIntValue(fj[0]))
14001400 }
14011401
14021402
14031403 func hH (hI) = {
14041404 let hJ = hI[bm]
14051405 func hK (eL,hL) = (eL + parseIntValue(hL))
14061406
14071407 func hM (eL,hL) = {
14081408 let K = eL._1
14091409 let eE = (((parseIntValue(hL) + bi) - 1) / bi)
14101410 $Tuple2((K + 1), (eL._2 + (eE * o)))
14111411 }
14121412
14131413 let hN = {
14141414 let eN = split(hI[bk], "_")
14151415 let eO = size(eN)
14161416 let eP = 0
14171417 func eQ (eR,eS) = if ((eS >= eO))
14181418 then eR
14191419 else hK(eR, eN[eS])
14201420
14211421 func eT (eR,eS) = if ((eS >= eO))
14221422 then eR
14231423 else throw("List size exceeds 6")
14241424
14251425 eT(eQ(eQ(eQ(eQ(eQ(eQ(eP, 0), 1), 2), 3), 4), 5), 6)
14261426 }
14271427 let hO = {
14281428 let eN = split(hI[bl], "_")
14291429 let eO = size(eN)
14301430 let eP = 0
14311431 func hx (eR,eS) = if ((eS >= eO))
14321432 then eR
14331433 else hK(eR, eN[eS])
14341434
14351435 func hy (eR,eS) = if ((eS >= eO))
14361436 then eR
14371437 else throw("List size exceeds 6")
14381438
14391439 hy(hx(hx(hx(hx(hx(hx(eP, 0), 1), 2), 3), 4), 5), 6)
14401440 }
14411441 let hP = if ((hJ == ""))
14421442 then 0
14431443 else ( let eN = split_4C(hJ, "_")
14441444 let eO = size(eN)
14451445 let eP = $Tuple2(0, 0)
14461446 func hA (eR,eS) = if ((eS >= eO))
14471447 then eR
14481448 else hM(eR, eN[eS])
14491449
14501450 func hB (eR,eS) = if ((eS >= eO))
14511451 then eR
14521452 else throw("List size exceeds 50")
14531453
14541454 hB(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(eP, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50))._2
14551455 ((hN + hO) + hP)
14561456 }
14571457
14581458
14591459 func hQ (hR,hS,hT) = {
14601460 let hG = ((toString(hS) + "_") + toString(hT))
14611461 let hU = hF(hG)
14621462 let hV = valueOrElse(getString(hR), (hG + ":0_0_0_0_0_0:0_0_0_0_0_0::0"))
14631463 let hW = split_4C(hV, ":")
14641464 let hX = hH(hW)
14651465 let hY = if ((5 > size(hW)))
14661466 then makeString(["0", toString(hX), toString((hU - hX)), toString(hU)], "_")
14671467 else {
14681468 let hZ = split(hW[bn], "_")
14691469 let ia = parseIntValue(hZ[bo])
14701470 let ib = if ((size(hZ) > 1))
14711471 then parseIntValue(hZ[bp])
14721472 else hX
14731473 makeString([toString(ia), toString(ib), toString(((hU - ia) - ib)), toString(hU)], "_")
14741474 }
14751475 [hW[bj], if ((size(split(hW[bk], "_")) == aM))
14761476 then hW[bk]
14771477 else "0_0_0_0_0_0", if ((size(split(hW[bl], "_")) == aM))
14781478 then hW[bl]
14791479 else "0_0_0_0_0_0", hW[bm], hY]
14801480 }
14811481
14821482
14831483 func ic (hI) = {
14841484 let id = hH(hI)
14851485 let ie = parseIntValue(split(hI[bn], "_")[bo])
14861486 ((hF(hI[bj]) - id) - ie)
14871487 }
14881488
14891489
14901490 func if (ig,hI,ih) = if ((size(ig) != 3))
14911491 then throw("cargoListStr should contain exactly 2 ':' separators")
14921492 else {
14931493 let ii = split(ig[0], "_")
14941494 let ij = split(ig[1], "_")
14951495 let ik = if ((ig[2] == ""))
14961496 then nil
14971497 else split_4C(ig[2], "_")
14981498 if ((size(ii) != aM))
14991499 then throw("All 6 resources should be passed")
15001500 else if ((size(ij) != aM))
15011501 then throw("All 6 materials should be passed")
15021502 else {
15031503 let gQ = ic(hI)
15041504 let il = split(hI[bk], "_")
15051505 let im = split(hI[bl], "_")
15061506 let in = if ((hI[bm] == ""))
15071507 then nil
15081508 else split_4C(hI[bm], "_")
15091509 let gO = split(ih[bt], "_")
15101510 let io = split(ih[bu], "_")
15111511 let ip = if ((ih[bv] == ""))
15121512 then nil
15131513 else split_4C(ih[bv], "_")
15141514 func iq (eL,hL) = {
15151515 let gy = eL._1
15161516 let ir = parseIntValue(hL)
15171517 let is = parseIntValue(il[gy])
15181518 let it = parseIntValue(gO[gy])
15191519 if ((ir == 0))
15201520 then $Tuple4((gy + 1), (eL._2 :+ il[gy]), (eL._3 :+ gO[gy]), eL._4)
15211521 else if ((ir > 0))
15221522 then if ((ir > it))
15231523 then throw((((("Attempt to take " + hL) + " from backpack, but only ") + toString(it)) + " available"))
15241524 else $Tuple4((gy + 1), (eL._2 :+ toString((is + ir))), (eL._3 :+ toString((it - ir))), (eL._4 + ir))
15251525 else if ((-(ir) > is))
15261526 then throw((((("Attempt to take " + toString(-(ir))) + " from warehouse, but only ") + toString(is)) + " available"))
15271527 else $Tuple4((gy + 1), (eL._2 :+ toString((is + ir))), (eL._3 :+ toString((it - ir))), (eL._4 + ir))
15281528 }
15291529
15301530 let eW = {
15311531 let eN = ii
15321532 let eO = size(eN)
15331533 let eP = $Tuple4(0, nil, nil, 0)
15341534 func eQ (eR,eS) = if ((eS >= eO))
15351535 then eR
15361536 else iq(eR, eN[eS])
15371537
15381538 func eT (eR,eS) = if ((eS >= eO))
15391539 then eR
15401540 else throw("List size exceeds 6")
15411541
15421542 eT(eQ(eQ(eQ(eQ(eQ(eQ(eP, 0), 1), 2), 3), 4), 5), 6)
15431543 }
15441544 func iu (eL,hL) = {
15451545 let gy = eL._1
15461546 let ir = parseIntValue(hL)
15471547 let iv = parseIntValue(im[gy])
15481548 let iw = parseIntValue(io[gy])
15491549 if ((ir == 0))
15501550 then $Tuple4((gy + 1), (eL._2 :+ im[gy]), (eL._3 :+ io[gy]), eL._4)
15511551 else if ((ir > 0))
15521552 then if ((ir > iw))
15531553 then throw((((("Attempt to take " + hL) + " from backpack, but only ") + toString(iw)) + " available"))
15541554 else $Tuple4((gy + 1), (eL._2 :+ toString((iv + ir))), (eL._3 :+ toString((iw - ir))), (eL._4 + ir))
15551555 else if ((-(ir) > iv))
15561556 then throw((((("Attempt to take " + toString(-(ir))) + " from warehouse, but only ") + toString(iv)) + " available"))
15571557 else $Tuple4((gy + 1), (eL._2 :+ toString((iv + ir))), (eL._3 :+ toString((iw - ir))), (eL._4 + ir))
15581558 }
15591559
15601560 let gg = {
15611561 let eN = ij
15621562 let eO = size(eN)
15631563 let eP = $Tuple4(0, nil, nil, eW._4)
15641564 func hx (eR,eS) = if ((eS >= eO))
15651565 then eR
15661566 else iu(eR, eN[eS])
15671567
15681568 func hy (eR,eS) = if ((eS >= eO))
15691569 then eR
15701570 else throw("List size exceeds 6")
15711571
15721572 hy(hx(hx(hx(hx(hx(hx(eP, 0), 1), 2), 3), 4), 5), 6)
15731573 }
15741574 func ix (eL,hL) = {
15751575 let gy = eL._1
15761576 let ir = parseIntValue(hL)
15771577 let iy = if ((size(in) > gy))
15781578 then parseIntValue(in[gy])
15791579 else 0
15801580 let iz = if ((size(ip) > gy))
15811581 then parseIntValue(ip[gy])
15821582 else 0
15831583 if ((ir == 0))
15841584 then $Tuple4((gy + 1), (eL._2 :+ toString(iy)), (eL._3 :+ toString(iz)), eL._4)
15851585 else if ((ir > 0))
15861586 then if ((ir > iz))
15871587 then throw((((("Attempt to take " + hL) + " from backpack, but only ") + toString(iz)) + " available"))
15881588 else {
15891589 let iA = (eB((iy + ir), bi) - eB(iy, bi))
15901590 $Tuple4((gy + 1), (eL._2 :+ toString((iy + ir))), (eL._3 :+ toString((iz - ir))), (eL._4 + iA))
15911591 }
15921592 else if ((-(ir) > iy))
15931593 then throw((((("Attempt to take " + toString(-(ir))) + " from warehouse, but only ") + toString(iy)) + " available"))
15941594 else {
15951595 let iA = (eB((iy + ir), bi) - eB(iy, bi))
15961596 $Tuple4((gy + 1), (eL._2 :+ toString((iy + ir))), (eL._3 :+ toString((iz - ir))), (eL._4 + iA))
15971597 }
15981598 }
15991599
16001600 let hE = if ((size(ik) != 0))
16011601 then {
16021602 let eN = ik
16031603 let eO = size(eN)
16041604 let eP = $Tuple4(0, nil, nil, gg._4)
16051605 func hA (eR,eS) = if ((eS >= eO))
16061606 then eR
16071607 else ix(eR, eN[eS])
16081608
16091609 func hB (eR,eS) = if ((eS >= eO))
16101610 then eR
16111611 else throw("List size exceeds 50")
16121612
16131613 hB(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(eP, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50)
16141614 }
16151615 else $Tuple4(0, in, ip, gg._4)
16161616 let iB = hE._4
16171617 if ((iB > gQ))
16181618 then throw((((("Attempt to put total " + toString(iB)) + " stuff, but only ") + toString(gQ)) + " warehouse space left"))
16191619 else $Tuple7(makeString(eW._2, "_"), makeString(gg._2, "_"), makeString_2C(hE._2, "_"), makeString(eW._3, "_"), makeString(gg._3, "_"), makeString_2C(hE._3, "_"), iB)
16201620 }
16211621 }
16221622
16231623
16241624 func iC (iD,iE) = {
16251625 let bW = toString(iD)
16261626 let iF = gW(toBigInt(iE))
16271627 let iG = valueOrElse(getInteger(ed()), (ec + 1))
16281628 let eh = toString(iG)
16291629 let hf = toInt((iF % dW))
16301630 let gB = hd(iF, hf)
16311631 let ae = bb[hf]
16321632 let iH = Issue(eA(eh, "S"), makeString([eh, "S", gB, ae], "_"), 1, 0, false)
16331633 let bA = calculateAssetId(iH)
16341634 let iI = toBase58String(bA)
16351635 $Tuple2([IntegerEntry(ed(), (iG + 1)), iH, StringEntry(eg(eh), iI), StringEntry(bz(iI), bW), StringEntry(ej(eh), bW), IntegerEntry(bJ(iI), 0), IntegerEntry(ei(iI, bW), 0), ScriptTransfer(iD, 1, bA)], $Tuple2(iI, ae))
16361636 }
16371637
16381638
16391639 func iJ (bW,iK,iL) = if (!(sigVerify_8Kb(iK, iL, f)))
16401640 then throw("signature does not match")
16411641 else {
16421642 let fj = split_4C(toUtf8String(iK), ";")
16431643 let iM = split_4C(fj[0], "|")
16441644 let iN = split(iM[er], "_")
16451645 let iO = parseIntValue(iN[0])
16461646 let iP = parseIntValue(iN[1])
16471647 let iQ = split(fj[1], ":")
16481648 let iR = iQ[0]
16491649 let iS = parseIntValue(iM[es])
16501650 if (if ((iS > (lastBlock.timestamp + dO)))
16511651 then true
16521652 else ((lastBlock.timestamp - dO) > iS))
16531653 then throw(((("signature outdated: logTime=" + toString(iS)) + ", bcTime=") + toString(lastBlock.timestamp)))
16541654 else {
16551655 let iT = iQ[1]
16561656 let iU = valueOrElse(getString(au(bW)), "")
16571657 if ((iU != iT))
16581658 then throw(((("Tx ids don't match! In state: " + iU) + ", in msg: ") + iT))
16591659 else {
16601660 let bO = valueOrErrorMessage(getString(bS(bW)), "You don't have a duck staked")
16611661 let iV = cP(bO)
16621662 let iW = dw(valueOrElse(getInteger(cS(bO)), 0))
16631663 let iX = valueOrElse(getInteger(iV), iW)
16641664 if ((iX != iO))
16651665 then throw(((("oldHealth=" + toString(iX)) + " from state does not match one from flight log=") + toString(iO)))
16661666 else if ((0 >= iO))
16671667 then throw("You can't fly with zero health")
16681668 else if (!(gj(bO)))
16691669 then throw("Equipment incompatible")
16701670 else {
16711671 let iY = if ((size(iM) > et))
16721672 then iM[et]
16731673 else ""
16741674 let iZ = if ((size(iM) > eu))
16751675 then iM[eu]
16761676 else ""
16771677 let ja = if (if ((iP > 0))
16781678 then (iY == "$")
16791679 else false)
16801680 then al(invoke(L, "sendUsdtPrize", [bW], nil))
16811681 else 0
16821682 $Tuple5(iP, bO, ja, iR, iZ)
16831683 }
16841684 }
16851685 }
16861686 }
16871687
16881688
16891689 func jb (bI,jc) = {
16901690 let hT = valueOrElse(getInteger(bJ(bI)), 0)
16911691 let jd = valueOrElse(getInteger(bD(aL, bI)), 0)
16921692 let je = (hT / 6)
16931693 let jf = (hT / 7)
16941694 ((aO + fraction(aO, ((hT + je) + (2 * jf)), 5)) + fraction(aO, jd, (jc * 5)))
16951695 }
16961696
16971697
16981698 func jg (av,jh,ji) = {
16991699 let jj = if ((jh == eo))
17001700 then $Tuple2(ji, valueOrElse(getString(bS(av)), ""))
17011701 else {
17021702 let bO = valueOrErrorMessage(getString(bS(av)), "You don't have a duck staked")
17031703 let jk = valueOrElse(getString(bU(bO)), aQ)
17041704 let cp = split(value(jk), "_")
17051705 if ((cp[bx] != "L"))
17061706 then throw((("Duck location type is " + cp[bx]) + ", but should be L"))
17071707 else $Tuple2(cp[by], bO)
17081708 }
17091709 let bI = jj._1
17101710 let jl = jj._2
17111711 let jm = value(assetInfo(fromBase58String(bI)))
17121712 let jn = bC(bI)
17131713 let jo = valueOrErrorMessage(getInteger(jn), (("Land " + jm.name) + " is not staked"))
17141714 let jp = valueOrErrorMessage(getString(bz(bI)), (("NFT " + jm.name) + " is orphaned"))
17151715 if ((jp != av))
17161716 then throw((aI + " is not yours"))
17171717 else {
17181718 let jq = split(jm.description, "_")
17191719 $Tuple4(jl, bI, jq, jo)
17201720 }
17211721 }
17221722
17231723
17241724 func jr (av,eC,jh,ji) = if ((0 > eC))
17251725 then throw("Negative amount")
17261726 else {
17271727 let fQ = jg(av, jh, ji)
17281728 let ar = fQ._3[T]
17291729 let gu = gA(fQ._3[U])
17301730 let gE = (aH() - fQ._4)
17311731 if ((0 > gE))
17321732 then throw(((("Saved timestamp is in future, saved = " + toString(fQ._4)) + ", final = ") + toString(aH())))
17331733 else {
17341734 let jc = aq(ar)
17351735 let js = jb(fQ._2, jc)
17361736 let jt = fraction(gE, (js * jc), dJ)
17371737 if ((eC > jt))
17381738 then throw(((("Not enough resources, available = " + toString(jt)) + ", requested = ") + toString(eC)))
17391739 else {
17401740 let ju = fraction((jt - eC), dJ, (js * jc))
17411741 let jv = (aH() - ju)
17421742 let hS = (jc / p)
17431743 let gP = gK(gu, (gE - ju), hS, js)
17441744 let hR = bH(fQ._2)
17451745 let hT = valueOrElse(getInteger(bJ(fQ._2)), 0)
17461746 let hI = hQ(hR, hS, hT)
17471747 let hZ = split(hI[bn], "_")
17481748 let gQ = parseIntValue(hZ[bq])
17491749 if (if ((jh == eo))
17501750 then (eC > gQ)
17511751 else false)
17521752 then throw((("Only " + toString(gQ)) + " space left in warehouse"))
17531753 else {
17541754 let hD = bT(fQ._1)
17551755 let ih = hC(hD)
17561756 let gO = split(ih[bt], "_")
17571757 let gN = split(hI[bk], "_")
17581758 let jw = if ((jh == eo))
17591759 then $Tuple4(gC(gN, gu, (gE - ju), hS, js), ih[bt], (parseIntValue(hZ[bp]) + gP._2), (parseIntValue(hZ[bq]) - gP._2))
17601760 else if ((jh == ep))
17611761 then $Tuple4(hI[bk], gC(gO, gu, (gE - ju), hS, js), parseIntValue(hZ[bp]), parseIntValue(hZ[bq]))
17621762 else {
17631763 let jx = gM(gN, gO, gP, gQ)
17641764 let jy = min([parseIntValue(hZ[bq]), gP._2])
17651765 $Tuple4(jx._1, jx._2, (parseIntValue(hZ[bp]) + jy), (parseIntValue(hZ[bq]) - jy))
17661766 }
17671767 let jz = jw._1
17681768 let jA = jw._2
17691769 let jB = jw._3
17701770 let jC = jw._4
17711771 $Tuple5([IntegerEntry(bC(fQ._2), jv), IntegerEntry(bF(aI, fQ._2, av), jv)], hD, [ih[bs], jA, ih[bu], ih[bv]], hR, [hI[bj], jz, hI[bl], hI[bm], makeString([hZ[bo], toString(jB), toString(jC), hZ[br]], "_")])
17721772 }
17731773 }
17741774 }
17751775 }
17761776
17771777
17781778 func jD (av,bI,jc,jh) = {
17791779 let jn = bC(bI)
17801780 let jo = value(getInteger(jn))
17811781 let jt = (fraction((aH() - jo), jb(bI, jc), dJ) * jc)
17821782 jr(av, jt, jh, bI)
17831783 }
17841784
17851785
17861786 func jE (eY,iD,jF,bI) = {
17871787 let av = toString(iD)
17881788 let fQ = jg(av, eq, bI)
17891789 let jc = aq(fQ._3[T])
17901790 let jG = bJ(fQ._2)
17911791 let jH = valueOrElse(getInteger(jG), 0)
17921792 if (if (!(b))
17931793 then (jH >= 3)
17941794 else false)
17951795 then throw("Currently max infrastructure level = 3")
17961796 else {
17971797 let jI = ((sqrt(jc, 0, 0, DOWN) / 5) + 2)
17981798 let dB = (jH + 1)
17991799 if (if (b)
18001800 then (dB > jI)
18011801 else false)
18021802 then throw(("Currently max infrastructure level = " + toString(jI)))
18031803 else {
18041804 let jJ = fraction(dR, (jc * dB), p)
18051805 if (if (!(eY))
18061806 then (jF != jJ)
18071807 else false)
18081808 then throw(("Payment attached should be " + toString(jJ)))
18091809 else {
18101810 let hD = bT(fQ._1)
18111811 let ih = hC(hD)
18121812 let jK = split(ih[bu], "_")
18131813 let jL = fraction(k, (jc * dB), p)
18141814 let jM = makeString(eX(eY, jK, jL), "_")
18151815 let jN = jD(av, fQ._2, jc, eq)
18161816 let jO = jN._5
18171817 let jP = hF(jO[bj])
18181818 let jQ = makeString([split(jO[bj], "_")[0], toString(dB)], "_")
18191819 let jR = hF(jQ)
18201820 let hZ = split(jO[bn], "_")
18211821 let jS = makeString([hZ[bo], hZ[bp], toString(((parseIntValue(hZ[bq]) + jR) - jP)), toString(jR)], "_")
18221822 $Tuple3(([IntegerEntry(jG, dB), IntegerEntry(ei(fQ._2, av), dB), StringEntry(hD, makeString([ih[bs], jN._3[bt], jM, ih[bv]], ":")), StringEntry(jN._4, makeString([jQ, jO[bk], jO[bl], jO[bm], jS], ":"))] ++ jN._1), dB, jL)
18231823 }
18241824 }
18251825 }
18261826 }
18271827
18281828
18291829 func jT (jU,jV,jW,jX) = {
18301830 let dv = valueOrElse(getInteger(jV), 0)
18311831 let dA = (dv + jX)
18321832 let jY = dy(valueOrElse(getInteger(jU), 0), dA)
18331833 $Tuple2([IntegerEntry(jU, jY[0]), IntegerEntry(jV, dA), IntegerEntry(jW, (valueOrElse(getInteger(jW), 0) + jY[1]))], dA)
18341834 }
18351835
18361836
18371837 func jZ (bO,jX) = {
18381838 let jm = value(assetInfo(fromBase58String(bO)))
18391839 let av = valueOrErrorMessage(getString(bR(bO)), (("NFT " + jm.name) + " is orphaned"))
18401840 if (if (if (c)
18411841 then (jm.issuer == this)
18421842 else false)
18431843 then contains(jm.name, aK)
18441844 else false)
18451845 then jT(cW(av), cV(av), cX(av), jX)
18461846 else jT(cS(bO), cR(bO), cT(bO), jX)
18471847 }
18481848
18491849
18501850 func ka (av,jX) = jT(cW(av), cV(av), cX(av), jX)
18511851
18521852
18531853 func kb (av) = {
18541854 let bO = valueOrErrorMessage(getString(bS(av)), "You don't have a duck staked")
18551855 let kc = bM(av)
18561856 let kd = getString(kc)
18571857 if (!(isDefined(kd)))
18581858 then throw("You are not eligible for ONBOARD artifact")
18591859 else {
18601860 let ke = bP(av)
18611861 let kf = getString(ke)
18621862 if (isDefined(kf))
18631863 then throw(("You already used your ONBOARD artifact on duck " + value(kf)))
18641864 else {
18651865 let kg = bN(bO)
18661866 let kh = getString(kg)
18671867 if (isDefined(kh))
18681868 then throw(((("The duck " + bO) + " already got points from ONBOARD artifact from user ") + value(kh)))
18691869 else ([StringEntry(ke, bO), StringEntry(kg, av)] ++ jZ(bO, ds)._1)
18701870 }
18711871 }
18721872 }
18731873
18741874
18751875 func ki (av,ji) = {
18761876 let fQ = jg(av, eq, ji)
18771877 let bI = fQ._2
18781878 let jc = aq(fQ._3[T])
18791879 let kj = bD(aL, bI)
18801880 if ((valueOrElse(getInteger(kj), 0) > 0))
18811881 then throw("Presale artifact is already activated")
18821882 else if ((parseIntValue(fQ._3[S]) > ec))
18831883 then throw((((aI + " ") + bI) + " is not eligible for presale artifact"))
18841884 else {
18851885 let jN = jD(av, bI, jc, eq)
18861886 (((jN._1 :+ IntegerEntry(kj, jc)) :+ StringEntry(jN._2, makeString(jN._3, ":"))) :+ StringEntry(jN._4, makeString(jN._5, ":")))
18871887 }
18881888 }
18891889
18901890
18911891 func kk (bO) = {
18921892 let co = valueOrElse(getInteger(Q, bZ), 0)
18931893 let jk = split(valueOrElse(getString(bU(bO)), aQ), "_")
18941894 let cq = lastBlock.timestamp
18951895 let cr = ci(Q, co)
18961896 let ck = cr[ce]
18971897 let cl = cr[cf]
18981898 if ((jk[bx] != "T"))
18991899 then false
19001900 else if (if (if ((parseIntValue(jk[bw]) == co))
19011901 then (cl[ch] == "INPROGRESS")
19021902 else false)
19031903 then (parseIntValue(ck[cg]) > cq)
19041904 else false)
19051905 then throw("Your duck is taking part in the tournament")
19061906 else ap(invoke(this, "exitTournamentInternal", [bO], nil))
19071907 }
19081908
19091909
19101910 func kl (km,dB,kn,av,ko,kp) = {
19111911 let bO = valueOrErrorMessage(getString(bS(av)), "You don't have a duck staked")
19121912 if (kk(bO))
19131913 then throw("mergeInternal_checkTournament")
19141914 else {
19151915 func kq (eL,bI) = {
19161916 let jm = value(assetInfo(fromBase58String(bI)))
19171917 let jn = bC(bI)
19181918 let jo = valueOrErrorMessage(getInteger(jn), (("NFT " + jm.name) + " is not staked"))
19191919 let jp = valueOrErrorMessage(getString(bz(bI)), (("NFT " + jm.name) + " is orphaned"))
19201920 if ((jp != av))
19211921 then throw((aI + " is not yours"))
19221922 else {
19231923 let jq = split(jm.description, "_")
19241924 let ae = jq[V]
19251925 if (if ((eL._3 != ""))
19261926 then (eL._3 != ae)
19271927 else false)
19281928 then throw("Lands should be on the same continent to merge")
19291929 else {
19301930 let ar = jq[T]
19311931 let kr = eL._1
19321932 let gy = valueOrErrorMessage(indexOf(kr, ar), "You haven't passed all the lands needed")
19331933 let ks = (take(kr, gy) + drop(kr, (gy + 1)))
19341934 let jc = aq(ar)
19351935 let kt = (eL._2 + valueOrElse(getInteger(bD(aL, bI)), 0))
19361936 let hT = valueOrElse(getInteger(bJ(bI)), 0)
19371937 let ku = {
19381938 let g = ar
19391939 if (("S" == g))
19401940 then 3
19411941 else if (("M" == g))
19421942 then 4
19431943 else if (("L" == g))
19441944 then 5
19451945 else if (("XL" == g))
19461946 then 6
19471947 else throw("Only S, M, L, XL can merge")
19481948 }
19491949 if ((hT != ku))
19501950 then throw("All lands should be maxed to merge")
19511951 else {
19521952 let eh = jq[S]
19531953 let gu = gA(jq[U])
19541954 let gE = (lastBlock.timestamp - jo)
19551955 if ((0 > gE))
19561956 then throw(((("Saved timestamp is in future, saved = " + toString(jo)) + ", current = ") + toString(lastBlock.timestamp)))
19571957 else {
19581958 let js = jb(bI, jc)
19591959 let hS = (jc / p)
19601960 let jA = gC(split(eL._4, "_"), gu, gE, hS, js)
19611961 let eV = gs(eL._6, gu, hS, -1)
19621962 let kv = gs(eL._10, gu, hS, -1)
19631963 let hm = gs(eL._9, gu, hS, 1)
19641964 let kw = eL._7
19651965 let K = indexOf(kw, bI)
19661966 if (!(isDefined(K)))
19671967 then throw(("Your staked lands don't contain " + bI))
19681968 else {
19691969 let kx = bB(bI)
19701970 let ky = valueOrElse(getString(kx), "")
19711971 $Tuple10(ks, kt, ae, jA, ((((((((((((eL._5 :+ DeleteEntry(bC(bI))) :+ DeleteEntry(bF(aI, bI, av))) :+ DeleteEntry(eg(eh))) :+ DeleteEntry(bz(bI))) :+ DeleteEntry(bJ(bI))) :+ DeleteEntry(ei(bI, av))) :+ DeleteEntry(bD(aL, bI))) :+ DeleteEntry(ej(eh))) :+ DeleteEntry(bH(bI))) :+ DeleteEntry(kx)) :+ Burn(fromBase58String(bI), 1)) ++ (if ((ky != ""))
19721972 then [DeleteEntry(ee(ky))]
19731973 else nil)), eV, removeByIndex(kw, value(K)), (eL._8 + jc), hm, kv)
19741974 }
19751975 }
19761976 }
19771977 }
19781978 }
19791979 }
19801980
19811981 let hD = bT(bO)
19821982 let ih = hC(hD)
19831983 let gt = split(valueOrElse(getString(ac()), "0_0_0_0_0_0"), "_")
19841984 let kz = af(av)
19851985 let kA = getString(kz)
19861986 let kB = if (isDefined(kA))
19871987 then split_51C(value(kA), "_")
19881988 else nil
19891989 let kC = split(value(assetInfo(fromBase58String(ko[0]))).description, "_")[V]
19901990 let kD = split(valueOrElse(getString(ad(kC)), "0_0_0_0_0_0"), "_")
19911991 let eW = {
19921992 let eN = ko
19931993 let eO = size(eN)
19941994 let eP = $Tuple10(kn, 0, "", ih[bt], nil, gt, kB, 0, split("0_0_0_0_0_0", "_"), kD)
19951995 func eQ (eR,eS) = if ((eS >= eO))
19961996 then eR
19971997 else kq(eR, eN[eS])
19981998
19991999 func eT (eR,eS) = if ((eS >= eO))
20002000 then eR
20012001 else throw("List size exceeds 5")
20022002
20032003 eT(eQ(eQ(eQ(eQ(eQ(eP, 0), 1), 2), 3), 4), 5)
20042004 }
20052005 let ae = eW._3
20062006 let hf = valueOrErrorMessage(indexOf(bb, ae), ("Unknown continent: " + ae))
20072007 let gB = hl(eW._9, (aq(km) / p))
20082008 let iG = valueOrElse(getInteger(ed()), (ec + 1))
20092009 let kE = toString(iG)
20102010 let iH = Issue(eA(kE, km), makeString([kE, km, gB, ae], "_"), 1, 0, false)
20112011 let bA = calculateAssetId(iH)
20122012 let kF = toBase58String(bA)
20132013 let jM = makeString(eX((kp > 0), split(ih[bu], "_"), kp), "_")
20142014 let kG = ah(av)
20152015 let kH = valueOrElse(getInteger(kG), 0)
20162016 $Tuple2((((((((((((((((eW._5 :+ (if ((size(eW._7) > 0))
20172017 then StringEntry(kz, makeString_11C(eW._7, "_"))
20182018 else DeleteEntry(kz))) :+ IntegerEntry(kG, if ((eW._8 > kH))
20192019 then 0
20202020 else (kH - eW._8))) :+ IntegerEntry(ed(), (iG + 1))) :+ iH) :+ StringEntry(eg(kE), kF)) :+ StringEntry(bz(kF), av)) :+ StringEntry(ej(kE), av)) :+ IntegerEntry(bD(aL, kF), eW._2)) :+ IntegerEntry(bJ(kF), dB)) :+ IntegerEntry(ei(kF, av), dB)) :+ StringEntry(hD, makeString([ih[bs], eW._4, jM, ih[bv]], ":"))) :+ StringEntry(ac(), makeString(eW._6, "_"))) :+ StringEntry(ad(ae), makeString(eW._10, "_"))) :+ StringEntry(bU(bO), makeString([ae, "L", kF], "_"))) :+ ScriptTransfer(addressFromStringValue(av), 1, bA)), kF)
20212021 }
20222022 }
20232023
20242024
20252025 func kI (av,ko) = kl("M", 3, "SSSS", av, ko, 0)
20262026
20272027
20282028 func kJ (av,ko) = kl("L", 4, "SMM", av, ko, (k * 4))
20292029
20302030
20312031 func kK (av,ko) = kl("XL", 5, "SSSML", av, ko, (k * 47))
20322032
20332033
20342034 func kL (av,ko) = kl("XXL", 6, "LXL", av, ko, (k * 54))
20352035
20362036
20372037 func kM (av,ko) = {
20382038 let g = size(ko)
20392039 if ((4 == g))
20402040 then kI(av, ko)
20412041 else if ((3 == g))
20422042 then kJ(av, ko)
20432043 else if ((5 == g))
20442044 then kK(av, ko)
20452045 else if ((2 == g))
20462046 then kL(av, ko)
20472047 else throw("Unknown merge")
20482048 }
20492049
20502050
20512051 func kN (gy) = if (if ((gy.originCaller != L))
20522052 then valueOrElse(getBoolean(at()), false)
20532053 else false)
20542054 then throw("Contracts are under maintenance")
20552055 else [StringEntry(au(toString(gy.originCaller)), toBase58String(gy.transactionId))]
20562056
20572057
20582058 func kO (av,bI) = {
20592059 let hR = bH(bI)
20602060 let kP = split(value(assetInfo(fromBase58String(bI))).description, "_")
20612061 let ar = kP[T]
20622062 let jc = aq(ar)
20632063 let hT = valueOrElse(getInteger(bJ(bI)), 0)
20642064 let hS = (jc / p)
20652065 let gu = gA(kP[U])
20662066 let hI = hQ(hR, hS, hT)
20672067 let gN = split(hI[bk], "_")
20682068 let jn = bC(bI)
20692069 let jo = getIntegerValue(jn)
20702070 let gE = (aH() - jo)
20712071 if ((0 > gE))
20722072 then throw(((("Saved timestamp is in future, saved = " + toString(jo)) + ", final = ") + toString(aH())))
20732073 else {
20742074 let js = jb(bI, jc)
20752075 let kQ = gI(gN, gu, gE, hS, js)
20762076 let jd = valueOrElse(getInteger(bD(aL, bI)), 0)
20772077 let kR = ((jc * o) + ((((jc * hT) + jd) * o) / 5))
20782078 let kS = (fraction(kQ._2, aR, o) * aU)
20792079 func kT (eL,hL) = (eL + parseIntValue(hL))
20802080
20812081 let kU = {
20822082 let eN = split(hI[bl], "_")
20832083 let eO = size(eN)
20842084 let eP = 0
20852085 func eQ (eR,eS) = if ((eS >= eO))
20862086 then eR
20872087 else kT(eR, eN[eS])
20882088
20892089 func eT (eR,eS) = if ((eS >= eO))
20902090 then eR
20912091 else throw("List size exceeds 6")
20922092
20932093 eT(eQ(eQ(eQ(eQ(eQ(eQ(eP, 0), 1), 2), 3), 4), 5), 6)
20942094 }
20952095 let kV = (fraction(kU, (2 * aR), o) * aU)
20962096 let kW = if ((hI[bm] == ""))
20972097 then nil
20982098 else split_4C(hI[bm], "_")
20992099 func hM (eL,hL) = {
21002100 let fv = eL._2
21012101 let kX = parseIntValue(split(bd[fv], "_")[be])
21022102 $Tuple2((eL._1 + ((parseIntValue(hL) * kX) * n)), (fv + 1))
21032103 }
21042104
21052105 let kY = {
21062106 let eN = kW
21072107 let eO = size(eN)
21082108 let eP = $Tuple2(0, 0)
21092109 func hx (eR,eS) = if ((eS >= eO))
21102110 then eR
21112111 else hM(eR, eN[eS])
21122112
21132113 func hy (eR,eS) = if ((eS >= eO))
21142114 then eR
21152115 else throw("List size exceeds 24")
21162116
21172117 hy(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(eP, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24)
21182118 }
21192119 let kZ = (fraction(kY._1, (2 * aR), o) * aU)
21202120 $Tuple4(kR, kS, kV, kZ)
21212121 }
21222122 }
21232123
21242124
21252125 func la (av,bO) = {
21262126 let gk = cU(bO)
21272127 let lb = split(valueOrElse(getString(gk), ",;,_,;,_,;,_,;,_,;,_,;,"), "_")
21282128 let hD = bT(bO)
21292129 let ih = hC(hD)
21302130 let gn = gc(lb, fr(ih[bv]), true, nil)
21312131 let lc = fw(gn)
21322132 func hK (eL,hL) = (eL + parseIntValue(hL))
21332133
21342134 let jA = {
21352135 let eN = split(ih[bt], "_")
21362136 let eO = size(eN)
21372137 let eP = 0
21382138 func eQ (eR,eS) = if ((eS >= eO))
21392139 then eR
21402140 else hK(eR, eN[eS])
21412141
21422142 func eT (eR,eS) = if ((eS >= eO))
21432143 then eR
21442144 else throw("List size exceeds 6")
21452145
21462146 eT(eQ(eQ(eQ(eQ(eQ(eQ(eP, 0), 1), 2), 3), 4), 5), 6)
21472147 }
21482148 let kS = (fraction(jA, aR, o) * aU)
21492149 let ld = {
21502150 let eN = split(ih[bu], "_")
21512151 let eO = size(eN)
21522152 let eP = 0
21532153 func hx (eR,eS) = if ((eS >= eO))
21542154 then eR
21552155 else hK(eR, eN[eS])
21562156
21572157 func hy (eR,eS) = if ((eS >= eO))
21582158 then eR
21592159 else throw("List size exceeds 6")
21602160
21612161 hy(hx(hx(hx(hx(hx(hx(eP, 0), 1), 2), 3), 4), 5), 6)
21622162 }
21632163 let kV = (fraction(ld, (2 * aR), o) * aU)
21642164 let kW = if ((lc == ""))
21652165 then nil
21662166 else split_4C(lc, "_")
21672167 func hM (eL,hL) = {
21682168 let fv = eL._2
21692169 let kX = parseIntValue(split(bd[fv], "_")[be])
21702170 $Tuple2((eL._1 + ((parseIntValue(hL) * kX) * n)), (fv + 1))
21712171 }
21722172
21732173 let le = {
21742174 let eN = kW
21752175 let eO = size(eN)
21762176 let eP = $Tuple2(0, 0)
21772177 func hA (eR,eS) = if ((eS >= eO))
21782178 then eR
21792179 else hM(eR, eN[eS])
21802180
21812181 func hB (eR,eS) = if ((eS >= eO))
21822182 then eR
21832183 else throw("List size exceeds 24")
21842184
21852185 hB(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(eP, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24)
21862186 }
21872187 let kZ = (fraction(le._1, (2 * aR), o) * aU)
21882188 $Tuple3(kS, kV, kZ)
21892189 }
21902190
21912191
21922192 @Callable(gy)
21932193 func constructorV1 (lf) = if ((gy.caller != this))
21942194 then throw("Permission denied")
21952195 else [StringEntry(F(), lf)]
21962196
21972197
21982198
21992199 @Callable(gy)
22002200 func saveInteger (x,eC) = if ((gy.caller != this))
22012201 then throw("saveInteger is not public method")
22022202 else [IntegerEntry(x, eC)]
22032203
22042204
22052205
22062206 @Callable(gy)
22072207 func setBlocked (lg) = if ((gy.caller != this))
22082208 then throw("permission denied")
22092209 else [BooleanEntry(at(), lg)]
22102210
22112211
22122212
22132213 @Callable(gy)
22142214 func stakeLand () = {
22152215 let lh = kN(gy)
22162216 if ((size(gy.payments) != 1))
22172217 then throw("Exactly one payment required")
22182218 else {
22192219 let li = value(gy.payments[0])
22202220 let bA = value(li.assetId)
22212221 let w = toString(gy.caller)
22222222 if ((li.amount != 1))
22232223 then throw((("NFT " + aI) + " token should be attached as payment"))
22242224 else {
22252225 let jm = value(assetInfo(bA))
22262226 if ((jm.issuer != this))
22272227 then throw("Unknown issuer of token")
22282228 else if (!(contains(jm.name, aI)))
22292229 then throw((("Only NFT " + aI) + " tokens are accepted"))
22302230 else {
22312231 let lj = drop(jm.name, 4)
22322232 let eh = if (contains(lj, "XXL"))
22332233 then dropRight(lj, 3)
22342234 else if (contains(lj, "XL"))
22352235 then dropRight(lj, 2)
22362236 else dropRight(lj, 1)
22372237 if (!(isDefined(parseInt(eh))))
22382238 then throw(("Cannot parse land number from " + jm.name))
22392239 else {
22402240 let bI = toBase58String(bA)
22412241 let jn = bC(bI)
22422242 if (isDefined(getInteger(jn)))
22432243 then throw((("NFT " + jm.name) + " is already staked"))
22442244 else {
22452245 let jq = split(jm.description, "_")
22462246 let gu = gA(jq[U])
22472247 let jc = aq(jq[T])
22482248 let hS = (jc / p)
22492249 let eV = gz(gu, hS, 1)
22502250 let lk = ad(jq[V])
22512251 let kD = split(valueOrElse(getString(lk), "0_0_0_0_0_0"), "_")
22522252 let ll = makeString(gs(kD, gu, hS, 1), "_")
22532253 let kz = af(w)
22542254 let kA = getString(kz)
22552255 let kw = if (isDefined(kA))
22562256 then split_51C(value(kA), "_")
22572257 else nil
22582258 if (containsElement(kw, bI))
22592259 then throw(("Your staked lands already contain " + bI))
22602260 else if ((size(kw) >= aN))
22612261 then throw((("Your already staked max (" + toString(aN)) + ") lands"))
22622262 else {
22632263 let hT = valueOrElse(getInteger(bJ(bI)), 0)
22642264 let kG = ah(w)
22652265 let lm = valueOrElse(getInteger(kG), 0)
22662266 let ln = invoke(P, "onStakeUnstakeLand", [w], nil)
22672267 $Tuple2(([IntegerEntry(jn, lastBlock.timestamp), IntegerEntry(bF(aI, bI, w), lastBlock.timestamp), StringEntry(kz, makeString_11C((kw :+ bI), "_")), IntegerEntry(kG, (lm + jc)), StringEntry(bz(bI), w), StringEntry(ej(eh), w), IntegerEntry(ei(bI, w), hT), StringEntry(ac(), eV), StringEntry(lk, ll)] ++ lh), ln)
22682268 }
22692269 }
22702270 }
22712271 }
22722272 }
22732273 }
22742274 }
22752275
22762276
22772277
22782278 @Callable(gy)
22792279 func unstakeLand (ji) = {
22802280 let lh = kN(gy)
22812281 if ((size(gy.payments) != 0))
22822282 then throw("No payments required")
22832283 else {
22842284 let av = toString(gy.caller)
22852285 let fQ = jg(av, ep, ji)
22862286 let bI = fQ._2
22872287 let jq = fQ._3
22882288 let kz = af(av)
22892289 let gu = gA(jq[U])
22902290 let jc = aq(jq[T])
22912291 let hS = (jc / p)
22922292 let eV = gz(gu, hS, -1)
22932293 let lk = ad(jq[V])
22942294 let kD = split(valueOrElse(getString(lk), "0_0_0_0_0_0"), "_")
22952295 let ll = makeString(gs(kD, gu, hS, -1), "_")
22962296 let jN = jD(av, bI, jc, ep)
22972297 let kw = split_51C(valueOrElse(getString(kz), ""), "_")
22982298 let K = indexOf(kw, bI)
22992299 if (!(isDefined(K)))
23002300 then throw(("Your staked lands don't contain " + bI))
23012301 else {
23022302 let cq = lastBlock.timestamp
23032303 let lo = valueOrElse(getInteger(O, bV(av)), 0)
23042304 if ((lo >= cq))
23052305 then throw(("Your gWL are taking part in voting, cannot unstake until " + toString(lo)))
23062306 else {
23072307 let lp = (valueOrElse(getInteger(P, dK(av)), 0) + l)
23082308 if ((lp > cq))
23092309 then throw(("Your staked lands took part in arbitrage, cannot unstake until " + toString(lp)))
23102310 else {
23112311 let kG = ah(av)
23122312 let kH = valueOrElse(getInteger(kG), 0)
23132313 let lq = if ((jc > kH))
23142314 then 0
23152315 else (kH - jc)
23162316 let ln = invoke(P, "onStakeUnstakeLand", [av], nil)
23172317 $Tuple2(([ScriptTransfer(gy.caller, 1, fromBase58String(bI)), DeleteEntry(bC(bI)), DeleteEntry(bF(aI, bI, av)), StringEntry(ac(), eV), StringEntry(lk, ll), StringEntry(jN._2, makeString(jN._3, ":")), if ((size(kw) > 1))
23182318 then StringEntry(kz, makeString_11C(removeByIndex(kw, value(K)), "_"))
23192319 else DeleteEntry(kz), IntegerEntry(kG, lq)] ++ lh), ln)
23202320 }
23212321 }
23222322 }
23232323 }
23242324 }
23252325
23262326
23272327
23282328 @Callable(gy)
23292329 func unstakeLandCallback (bI,av) = if ((toString(gy.caller) != j))
23302330 then throw("Permission denied")
23312331 else {
23322332 let lr = kO(av, bI)
23332333 let ln = invoke(P, "onStakeUnstakeLand", [av], nil)
2334- $Tuple2([ScriptTransfer(addressFromStringValue(av), 1, fromBase58String(bI)), DeleteEntry(bC(bI)), DeleteEntry(bF(aI, bI, av))], $Tuple5(lr._1, lr._2, lr._3, lr._4, ln))
2334+ $Tuple2([Burn(fromBase58String(bI), 1), DeleteEntry(bC(bI)), DeleteEntry(bF(aI, bI, av))], $Tuple5(lr._1, lr._2, lr._3, lr._4, ln))
23352335 }
23362336
23372337
23382338
23392339 @Callable(gy)
23402340 func unstakeLandREADONLY (bI,av) = {
23412341 let lr = kO(av, bI)
23422342 $Tuple2(nil, lr)
23432343 }
23442344
23452345
23462346
23472347 @Callable(gy)
23482348 func unstakeLandsFinalizeCallback (av) = if ((toString(gy.caller) != j))
23492349 then throw("Permission denied")
23502350 else $Tuple2([DeleteEntry(af(av)), DeleteEntry(ah(av))], 0)
2351+
2352+
2353+
2354+@Callable(gy)
2355+func convertUnstakedLands () = if ((size(gy.payments) != 1))
2356+ then throw("Exactly one payment required")
2357+ else {
2358+ let li = value(gy.payments[0])
2359+ let bA = value(li.assetId)
2360+ let w = toString(gy.caller)
2361+ if ((li.amount != 1))
2362+ then throw((("NFT " + aI) + " token should be attached as payment"))
2363+ else {
2364+ let jm = value(assetInfo(bA))
2365+ if ((jm.issuer != this))
2366+ then throw("Unknown issuer of token")
2367+ else if (!(contains(jm.name, aI)))
2368+ then throw((("Only NFT " + aI) + " tokens are accepted"))
2369+ else {
2370+ let bI = toBase58String(bA)
2371+ let jq = split(jm.description, "_")
2372+ let jc = aq(jq[T])
2373+ let hT = valueOrElse(getInteger(bJ(bI)), 0)
2374+ let jd = valueOrElse(getInteger(bD(aL, bI)), 0)
2375+ let ls = ((jc * o) + ((((jc * hT) + jd) * o) / 5))
2376+ let lt = invoke(R, "requestAcresCallback", [ls], nil)
2377+ if ((lt == lt))
2378+ then {
2379+ let lu = invoke(addressFromStringValue(j), "stakeAcresCallback", [w], [AttachedPayment(Z, ls)])
2380+ if ((lu == lu))
2381+ then $Tuple2([Burn(fromBase58String(bI), 1)], 0)
2382+ else throw("Strict value is not equal to itself.")
2383+ }
2384+ else throw("Strict value is not equal to itself.")
2385+ }
2386+ }
2387+ }
23512388
23522389
23532390
23542391 @Callable(gy)
23552392 func stakeDuck () = {
23562393 let lh = kN(gy)
23572394 if ((size(gy.payments) != 1))
23582395 then throw("Exactly one payment required")
23592396 else {
23602397 let li = value(gy.payments[0])
23612398 let bA = value(li.assetId)
23622399 let w = toString(gy.caller)
23632400 if ((li.amount != 1))
23642401 then throw((("NFT " + aJ) + " token should be attached as payment"))
23652402 else {
23662403 let jm = value(assetInfo(bA))
2367- let ls = if (if (c)
2404+ let lv = if (if (c)
23682405 then (jm.issuer == this)
23692406 else false)
23702407 then contains(jm.name, aK)
23712408 else false
23722409 if (if (if ((jm.issuer != dM))
23732410 then (jm.issuer != dN)
23742411 else false)
2375- then !(ls)
2412+ then !(lv)
23762413 else false)
23772414 then throw((((("Unknown issuer of " + aJ) + " or ") + aK) + " token"))
23782415 else if (if (!(contains(jm.name, aJ)))
2379- then !(ls)
2416+ then !(lv)
23802417 else false)
23812418 then throw((((("Only NFT " + aJ) + " or ") + aK) + " tokens are accepted"))
23822419 else {
2383- let lt = toBase58String(bA)
2384- let jn = bC(lt)
2420+ let lw = toBase58String(bA)
2421+ let jn = bC(lw)
23852422 if (isDefined(getInteger(jn)))
23862423 then throw((("NFT " + jm.name) + " is already staked"))
23872424 else if (isDefined(getString(bS(w))))
23882425 then throw(("You already staked one duck: " + jm.name))
23892426 else {
2390- let lu = bU(lt)
2391- let cn = getString(lu)
2392- let hD = bT(lt)
2393- let lv = getString(hD)
2394- let iV = cP(lt)
2395- let iW = dw(valueOrElse(getInteger(cS(lt)), 0))
2396- let lw = valueOrElse(getInteger(iV), iW)
2397- ([IntegerEntry(jn, lastBlock.timestamp), IntegerEntry(bF(aJ, toBase58String(bA), w), lastBlock.timestamp), StringEntry(bR(lt), w), StringEntry(bS(w), lt)] ++ (if (isDefined(cn))
2427+ let lx = bU(lw)
2428+ let cn = getString(lx)
2429+ let hD = bT(lw)
2430+ let ly = getString(hD)
2431+ let iV = cP(lw)
2432+ let iW = dw(valueOrElse(getInteger(cS(lw)), 0))
2433+ let lz = valueOrElse(getInteger(iV), iW)
2434+ ([IntegerEntry(jn, lastBlock.timestamp), IntegerEntry(bF(aJ, toBase58String(bA), w), lastBlock.timestamp), StringEntry(bR(lw), w), StringEntry(bS(w), lw)] ++ (if (isDefined(cn))
23982435 then nil
2399- else ([StringEntry(lu, aQ)] ++ (if (isDefined(lv))
2436+ else ([StringEntry(lx, aQ)] ++ (if (isDefined(ly))
24002437 then nil
2401- else (([StringEntry(hD, "0:0_0_0_0_0_0:0_0_0_0_0_0:")] :+ IntegerEntry(iV, lw)) ++ lh)))))
2438+ else (([StringEntry(hD, "0:0_0_0_0_0_0:0_0_0_0_0_0:")] :+ IntegerEntry(iV, lz)) ++ lh)))))
24022439 }
24032440 }
24042441 }
24052442 }
24062443 }
24072444
24082445
24092446
24102447 @Callable(gy)
2411-func unstakeDuck (lt) = {
2448+func unstakeDuck (lw) = {
24122449 let lh = kN(gy)
24132450 if ((size(gy.payments) != 0))
24142451 then throw("No payments required")
24152452 else {
2416- let bA = fromBase58String(lt)
2453+ let bA = fromBase58String(lw)
24172454 let w = toString(gy.caller)
24182455 let jm = value(assetInfo(bA))
2419- let jn = bC(lt)
2456+ let jn = bC(lw)
24202457 if (!(isDefined(getInteger(jn))))
24212458 then throw((("NFT " + jm.name) + " is not staked"))
24222459 else if (!(isDefined(getString(bS(w)))))
24232460 then throw((("The duck " + jm.name) + " is not staked"))
24242461 else {
2425- let jp = valueOrErrorMessage(getString(bR(lt)), (("NFT " + jm.name) + " is orphaned"))
2462+ let jp = valueOrErrorMessage(getString(bR(lw)), (("NFT " + jm.name) + " is orphaned"))
24262463 if ((jp != w))
24272464 then throw("Staked NFT is not yours")
2428- else if (kk(lt))
2465+ else if (kk(lw))
24292466 then throw("unstakeDuck_checkTournament")
24302467 else {
2431- let iV = cP(lt)
2432- let iW = dw(valueOrElse(getInteger(cS(lt)), 0))
2468+ let iV = cP(lw)
2469+ let iW = dw(valueOrElse(getInteger(cS(lw)), 0))
24332470 let dH = valueOrElse(getInteger(iV), iW)
24342471 if ((iW > dH))
24352472 then throw((("Please heal your duck to " + toString(iW)) + "hp before unstaking"))
2436- else ([ScriptTransfer(gy.caller, 1, bA), DeleteEntry(jn), DeleteEntry(iV), DeleteEntry(bU(lt)), DeleteEntry(bR(lt)), DeleteEntry(bF(aJ, lt, w)), DeleteEntry(bS(w))] ++ lh)
2473+ else ([ScriptTransfer(gy.caller, 1, bA), DeleteEntry(jn), DeleteEntry(iV), DeleteEntry(bU(lw)), DeleteEntry(bR(lw)), DeleteEntry(bF(aJ, lw, w)), DeleteEntry(bS(w))] ++ lh)
24372474 }
24382475 }
24392476 }
24402477 }
24412478
24422479
24432480
24442481 @Callable(gy)
24452482 func unstakeDuckCallback (bO,av) = if ((toString(gy.caller) != j))
24462483 then throw("Permission denied")
24472484 else {
24482485 let lr = la(av, bO)
24492486 $Tuple2([ScriptTransfer(addressFromStringValue(av), 1, fromBase58String(bO)), DeleteEntry(bC(bO)), DeleteEntry(bR(bO)), DeleteEntry(bF(aJ, bO, av)), DeleteEntry(bS(av))], lr)
24502487 }
24512488
24522489
24532490
24542491 @Callable(gy)
24552492 func unstakeDuckREADONLY (bO,av) = {
24562493 let lr = la(av, bO)
24572494 $Tuple2(nil, lr)
24582495 }
24592496
24602497
24612498
24622499 @Callable(gy)
2463-func claimRes (eC,lx) = {
2500+func claimRes (eC,lA) = {
24642501 let lh = kN(gy)
24652502 if ((size(gy.payments) != 0))
24662503 then throw("No payments required")
24672504 else {
24682505 let av = toString(gy.originCaller)
2469- let fd = jr(av, eC, ep, lx)
2506+ let fd = jr(av, eC, ep, lA)
24702507 let bO = valueOrErrorMessage(getString(bS(av)), "You don't have a duck staked")
24712508 $Tuple2(((((fd._1 ++ jZ(bO, fraction(di, eC, o))._1) :+ StringEntry(fd._2, makeString(fd._3, ":"))) :+ StringEntry(fd._4, makeString(fd._5, ":"))) ++ lh), fd._3[bt])
24722509 }
24732510 }
24742511
24752512
24762513
24772514 @Callable(gy)
2478-func claimResToWH (eC,lx) = {
2515+func claimResToWH (eC,lA) = {
24792516 let lh = kN(gy)
24802517 if ((size(gy.payments) != 0))
24812518 then throw("No payments required")
24822519 else {
24832520 let av = toString(gy.originCaller)
2484- let fd = jr(av, eC, eo, lx)
2521+ let fd = jr(av, eC, eo, lA)
24852522 $Tuple2(((((fd._1 ++ ka(av, fraction(di, eC, o))._1) :+ StringEntry(fd._2, makeString(fd._3, ":"))) :+ StringEntry(fd._4, makeString(fd._5, ":"))) ++ lh), fd._5[bk])
24862523 }
24872524 }
24882525
24892526
24902527
24912528 @Callable(gy)
24922529 func flight (iK,iL) = {
24932530 let lh = kN(gy)
24942531 if ((size(gy.payments) != 0))
24952532 then throw("No payments required")
24962533 else {
24972534 let bW = toString(gy.caller)
24982535 let hg = iJ(bW, iK, iL)
24992536 let iP = hg._1
25002537 let bO = hg._2
2501- let lu = bU(bO)
2502- let jk = valueOrElse(getString(lu), aQ)
2538+ let lx = bU(bO)
2539+ let jk = valueOrElse(getString(lx), aQ)
25032540 let iR = hg._4
25042541 if ((iR == jk))
25052542 then throw("You can't fly to the same location")
25062543 else {
25072544 let cy = split(iR, "_")
2508- let ly = (cy[bx] == "T")
2509- let lz = (cy[bx] == "D")
2545+ let lB = (cy[bx] == "T")
2546+ let lC = (cy[bx] == "D")
25102547 let gk = cU(bO)
2511- let lA = valueOrElse(getString(gk), ",;,_,;,_,;,_,;,_,;,_,;,")
2512- let lB = fe(lA, hg._5)
2513- let lC = lB._1
2514- let lD = lB._2
2515- let hv = lB._3
2516- let lE = if (!(cs(Q, jk)))
2517- then if (ly)
2548+ let lD = valueOrElse(getString(gk), ",;,_,;,_,;,_,;,_,;,_,;,")
2549+ let lE = fe(lD, hg._5)
2550+ let lF = lE._1
2551+ let lG = lE._2
2552+ let hv = lE._3
2553+ let lH = if (!(cs(Q, jk)))
2554+ then if (lB)
25182555 then cw(jk, iR, 5)
2519- else if (!(lz))
2556+ else if (!(lC))
25202557 then if ((iP > 0))
25212558 then $Tuple2(iR, iP)
25222559 else $Tuple2(jk, 0)
25232560 else if ((iP > 0))
25242561 then {
25252562 let ak = invoke(this, "processDelivery", [bO], nil)
25262563 if ((ak == ak))
25272564 then $Tuple2(jk, iP)
25282565 else throw("Strict value is not equal to itself.")
25292566 }
25302567 else $Tuple2(jk, 0)
25312568 else if (cm(Q, jk))
25322569 then if (!(cm(Q, iR)))
25332570 then throw("Your duck is taking part in the tournament")
25342571 else {
2535- let lF = parseIntValue(cy[by])
2536- let lG = split(jk, "_")
2572+ let lI = parseIntValue(cy[by])
2573+ let lJ = split(jk, "_")
25372574 let co = valueOrElse(getInteger(Q, bZ), 0)
2538- if ((lF != (parseIntValue(lG[by]) + 1)))
2575+ if ((lI != (parseIntValue(lJ[by]) + 1)))
25392576 then cw(jk, iR, 7)
25402577 else if ((iP > 0))
25412578 then {
2542- let lH = valueOrElse(getInteger(Q, cd(co, bO)), 0)
2543- let lI = if ((lF > lH))
2544- then invoke(Q, "saveDuckResult", [bO, lF], nil)
2579+ let lK = valueOrElse(getInteger(Q, cd(co, bO)), 0)
2580+ let lL = if ((lI > lK))
2581+ then invoke(Q, "saveDuckResult", [bO, lI], nil)
25452582 else unit
2546- if ((lI == lI))
2583+ if ((lL == lL))
25472584 then $Tuple2(iR, iP)
25482585 else throw("Strict value is not equal to itself.")
25492586 }
25502587 else $Tuple2(jk, 0)
25512588 }
25522589 else throw(("Unknown curLocation:" + jk))
2553- let lJ = lE._1
2554- let lK = lE._2
2555- $Tuple2(((([StringEntry(lu, lJ), StringEntry(gk, lC), IntegerEntry(cP(bO), lK)] ++ lh) ++ (if (lD)
2590+ let lM = lH._1
2591+ let lN = lH._2
2592+ $Tuple2(((([StringEntry(lx, lM), StringEntry(gk, lF), IntegerEntry(cP(bO), lN)] ++ lh) ++ (if (lG)
25562593 then [StringEntry(da(bO), "0_0_0_0_0")]
25572594 else nil)) ++ jZ(bO, if ((iP > 0))
25582595 then dj
25592596 else dk)._1), hg._3)
25602597 }
25612598 }
25622599 }
25632600
25642601
25652602
25662603 @Callable(gy)
2567-func heal (lL,lM,lN) = {
2604+func heal (lO,lP,lQ) = {
25682605 let lh = kN(gy)
2569- if (if (if ((0 > lL))
2606+ if (if (if ((0 > lO))
25702607 then true
2571- else (0 > lM))
2608+ else (0 > lP))
25722609 then true
2573- else (0 > lN))
2610+ else (0 > lQ))
25742611 then throw("Quantity cannot be negative")
25752612 else {
25762613 let bO = valueOrErrorMessage(getString(bS(toString(gy.caller))), "You don't have a duck staked")
25772614 if (kk(bO))
25782615 then throw("heal_checkTournament")
25792616 else {
2580- let lO = [lL, lM, lN]
2617+ let lR = [lO, lP, lQ]
25812618 let iV = cP(bO)
25822619 let iW = dw(valueOrElse(getInteger(cS(bO)), 0))
2583- let lP = valueOrElse(getInteger(iV), iW)
2584- if ((lP >= iW))
2620+ let lS = valueOrElse(getInteger(iV), iW)
2621+ if ((lS >= iW))
25852622 then throw((("HP should be < " + toString(iW)) + " to heal"))
25862623 else {
25872624 let hD = bT(bO)
25882625 let ih = hC(hD)
2589- let lQ = if ((ih[bv] == ""))
2626+ let lT = if ((ih[bv] == ""))
25902627 then nil
25912628 else split_4C(ih[bv], "_")
2592- func lR (eL,cv) = {
2629+ func lU (eL,cv) = {
25932630 let am = eL._2
2594- let gX = if ((size(lQ) > am))
2595- then parseIntValue(lQ[am])
2631+ let gX = if ((size(lT) > am))
2632+ then parseIntValue(lT[am])
25962633 else 0
25972634 if ((3 > am))
25982635 then {
2599- let lS = lO[am]
2600- if ((lS > gX))
2636+ let lV = lR[am]
2637+ if ((lV > gX))
26012638 then throw(((("You have only " + toString(gX)) + " of ") + ba[am]))
2602- else $Tuple3((eL._1 :+ toString((gX - lS))), (am + 1), (eL._3 + (parseIntValue(split(cv, "_")[bf]) * lS)))
2639+ else $Tuple3((eL._1 :+ toString((gX - lV))), (am + 1), (eL._3 + (parseIntValue(split(cv, "_")[bf]) * lV)))
26032640 }
26042641 else $Tuple3((eL._1 :+ toString(gX)), (am + 1), eL._3)
26052642 }
26062643
26072644 let fd = {
26082645 let eN = bd
26092646 let eO = size(eN)
26102647 let eP = $Tuple3(nil, 0, 0)
26112648 func eQ (eR,eS) = if ((eS >= eO))
26122649 then eR
2613- else lR(eR, eN[eS])
2650+ else lU(eR, eN[eS])
26142651
26152652 func eT (eR,eS) = if ((eS >= eO))
26162653 then eR
26172654 else throw("List size exceeds 50")
26182655
26192656 eT(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eP, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50)
26202657 }
2621- let lT = min([iW, (lP + fd._3)])
2622- $Tuple2((([IntegerEntry(iV, lT), StringEntry(hD, makeString_2C([ih[bs], ih[bt], ih[bu], makeString(fd._1, "_")], ":"))] ++ lh) ++ jZ(bO, (dt * ((lL + lM) + lN)))._1), lT)
2658+ let lW = min([iW, (lS + fd._3)])
2659+ $Tuple2((([IntegerEntry(iV, lW), StringEntry(hD, makeString_2C([ih[bs], ih[bt], ih[bu], makeString(fd._1, "_")], ":"))] ++ lh) ++ jZ(bO, (dt * ((lO + lP) + lQ)))._1), lW)
26232660 }
26242661 }
26252662 }
26262663 }
26272664
26282665
26292666
26302667 @Callable(gy)
26312668 func healES () = {
26322669 let lh = kN(gy)
26332670 if ((size(gy.payments) != 1))
26342671 then throw("Exactly one payment required")
26352672 else {
26362673 let li = value(gy.payments[0])
26372674 if ((li.assetId != h))
26382675 then throw("Allowed USDT payment only!")
26392676 else {
26402677 let bO = valueOrErrorMessage(getString(bS(toString(gy.caller))), "You don't have a duck staked")
26412678 if (kk(bO))
26422679 then throw("healES_checkTournament")
26432680 else {
26442681 let iV = cP(bO)
26452682 let iW = dw(valueOrElse(getInteger(cS(bO)), 0))
2646- let lP = valueOrElse(getInteger(iV), iW)
2647- if ((lP > 0))
2683+ let lS = valueOrElse(getInteger(iV), iW)
2684+ if ((lS > 0))
26482685 then throw("HP should be 0 to call Emergency Service")
26492686 else {
26502687 let hD = bT(bO)
26512688 let ih = hC(hD)
2652- let lQ = if ((ih[bv] == ""))
2689+ let lT = if ((ih[bv] == ""))
26532690 then nil
26542691 else split_4C(ih[bv], "_")
2655- let lU = if ((size(lQ) > 0))
2656- then parseIntValue(lQ[0])
2692+ let lX = if ((size(lT) > 0))
2693+ then parseIntValue(lT[0])
26572694 else 0
2658- let lV = if ((size(lQ) > 1))
2659- then parseIntValue(lQ[1])
2695+ let lY = if ((size(lT) > 1))
2696+ then parseIntValue(lT[1])
26602697 else 0
2661- let lW = if ((size(lQ) > 2))
2662- then parseIntValue(lQ[2])
2698+ let lZ = if ((size(lT) > 2))
2699+ then parseIntValue(lT[2])
26632700 else 0
2664- if (if (if ((lU > 0))
2701+ if (if (if ((lX > 0))
26652702 then true
2666- else (lV > 0))
2703+ else (lY > 0))
26672704 then true
2668- else (lW > 0))
2705+ else (lZ > 0))
26692706 then throw("You have to use own Medical Kit")
26702707 else {
2671- let lX = getString(N, bX())
2672- let lY = if (isDefined(lX))
2673- then split_4C(value(lX), "_")
2708+ let ma = getString(N, bX())
2709+ let mb = if (isDefined(ma))
2710+ then split_4C(value(ma), "_")
26742711 else nil
2675- let lZ = if ((size(lY) > 0))
2676- then parseIntValue(lY[0])
2712+ let mc = if ((size(mb) > 0))
2713+ then parseIntValue(mb[0])
26772714 else 0
2678- if ((0 >= lZ))
2715+ if ((0 >= mc))
26792716 then throw("There are no Medical Kits L1 at Emergency Service storage")
26802717 else {
2681- let lT = (lP + parseIntValue(split(bd[0], "_")[bf]))
2682- let ma = makeString([toString((lZ - 1)), removeByIndex(lY, 0)], "_")
2718+ let lW = (lS + parseIntValue(split(bd[0], "_")[bf]))
2719+ let md = makeString([toString((mc - 1)), removeByIndex(mb, 0)], "_")
26832720 let cv = split(bd[0], "_")
2684- let mb = cu(cv)
2685- let mc = fraction((mb * aS), aR, (o * bi))
2686- if ((li.amount != mc))
2687- then throw(("Payment attached should be " + toString(mc)))
2721+ let me = cu(cv)
2722+ let mf = fraction((me * aS), aR, (o * bi))
2723+ if ((li.amount != mf))
2724+ then throw(("Payment attached should be " + toString(mf)))
26882725 else {
2689- let fd = ai(invoke(N, "updateEsStorage", [ma], [AttachedPayment(h, mc)]))
2690- $Tuple2(((lh :+ IntegerEntry(iV, lT)) ++ jZ(bO, dn)._1), fd)
2726+ let fd = ai(invoke(N, "updateEsStorage", [md], [AttachedPayment(h, mf)]))
2727+ $Tuple2(((lh :+ IntegerEntry(iV, lW)) ++ jZ(bO, dn)._1), fd)
26912728 }
26922729 }
26932730 }
26942731 }
26952732 }
26962733 }
26972734 }
26982735 }
26992736
27002737
27012738
27022739 @Callable(gy)
2703-func updateBackpack (bO,md) = if ((gy.caller != N))
2740+func updateBackpack (bO,mg) = if ((gy.caller != N))
27042741 then throw("permission denied")
2705- else $Tuple2([StringEntry(bT(bO), md)], md)
2742+ else $Tuple2([StringEntry(bT(bO), mg)], mg)
27062743
27072744
27082745
27092746 @Callable(gy)
27102747 func commitForRandom () = {
27112748 let lh = kN(gy)
2712- let me = (height + aa)
2749+ let mh = (height + aa)
27132750 let av = toString(gy.caller)
2714- $Tuple2(([IntegerEntry(ab(av), me)] ++ lh), me)
2751+ $Tuple2(([IntegerEntry(ab(av), mh)] ++ lh), mh)
27152752 }
27162753
27172754
27182755
27192756 @Callable(gy)
27202757 func revealRandom (aD) = {
27212758 let lh = kN(gy)
27222759 let av = toString(gy.caller)
2723- let mf = ab(av)
2724- let me = valueOrErrorMessage(getInteger(mf), "You have to commitForRandom() first!")
2725- if ((me > height))
2726- then throw(("Random number is not ready yet, wait until height = " + toString(me)))
2760+ let mi = ab(av)
2761+ let mh = valueOrErrorMessage(getInteger(mi), "You have to commitForRandom() first!")
2762+ if ((mh > height))
2763+ then throw(("Random number is not ready yet, wait until height = " + toString(mh)))
27272764 else {
2728- let aF = value(value(blockInfoByHeight(me)).vrf)
2765+ let aF = value(value(blockInfoByHeight(mh)).vrf)
27292766 let aE = toBytes(valueOrElse(getString(au(av)), ""))
2730- let mg = aC(aD, aE, aF)
2731- $Tuple2(([DeleteEntry(mf)] ++ lh), mg)
2767+ let mj = aC(aD, aE, aF)
2768+ $Tuple2(([DeleteEntry(mi)] ++ lh), mj)
27322769 }
27332770 }
27342771
27352772
27362773
27372774 @Callable(gy)
27382775 func buySLand () = {
27392776 let lh = kN(gy)
27402777 if ((size(gy.payments) != 1))
27412778 then throw("Exactly one payment required")
27422779 else {
27432780 let li = value(gy.payments[0])
27442781 if ((li.assetId != h))
27452782 then throw("Allowed USDT payment only!")
27462783 else if ((li.amount != dT))
27472784 then throw(("Payment attached should be " + toString(dT)))
27482785 else {
27492786 let fd = iC(gy.caller, gy.transactionId)
2750- let mh = al(invoke(R, "burnAcres", [dV], nil))
2751- $Tuple2((((fd._1 :+ ScriptTransfer(N, li.amount, h)) ++ ka(toString(gy.caller), dp)._1) ++ lh), $Tuple2(fd._2._1, mh))
2787+ let mk = al(invoke(R, "burnAcres", [dV], nil))
2788+ $Tuple2((((fd._1 :+ ScriptTransfer(N, li.amount, h)) ++ ka(toString(gy.caller), dp)._1) ++ lh), $Tuple2(fd._2._1, mk))
27522789 }
27532790 }
27542791 }
27552792
27562793
27572794
27582795 @Callable(gy)
27592796 func expedition (iK,iL) = {
27602797 let lh = kN(gy)
27612798 if ((size(gy.payments) != 0))
27622799 then throw("No payments required")
27632800 else {
27642801 let bW = toString(gy.caller)
27652802 let hg = iJ(bW, iK, iL)
27662803 let bO = hg._2
27672804 let iV = cP(bO)
27682805 let hD = bT(bO)
27692806 let ih = hC(hD)
27702807 let jK = split(ih[bu], "_")
27712808 let jM = makeString(eX(true, jK, dS), "_")
27722809 let gk = cU(bO)
2773- let lA = valueOrElse(getString(gk), ",;,_,;,_,;,_,;,_,;,_,;,")
2774- let mi = fe(lA, hg._5)
2775- let lC = mi._1
2776- let lD = mi._2
2777- let hv = mi._3
2778- let mj = iC(gy.caller, gy.transactionId)
2779- let iI = mj._2._1
2810+ let lD = valueOrElse(getString(gk), ",;,_,;,_,;,_,;,_,;,_,;,")
2811+ let ml = fe(lD, hg._5)
2812+ let lF = ml._1
2813+ let lG = ml._2
2814+ let hv = ml._3
2815+ let mm = iC(gy.caller, gy.transactionId)
2816+ let iI = mm._2._1
27802817 let fd = if ((0 >= hg._1))
2781- then $Tuple3([IntegerEntry(iV, 0), StringEntry(gk, lC)], "", 0)
2782- else $Tuple3((mj._1 ++ (if (lD)
2818+ then $Tuple3([IntegerEntry(iV, 0), StringEntry(gk, lF)], "", 0)
2819+ else $Tuple3((mm._1 ++ (if (lG)
27832820 then [StringEntry(da(bO), "0_0_0_0_0")]
2784- else ((((nil :+ StringEntry(bU(bO), makeString([mj._2._2, "L", iI], "_"))) :+ IntegerEntry(iV, hg._1)) :+ StringEntry(gk, lC)) :+ StringEntry(hD, makeString([ih[bs], ih[bt], jM, ih[bv]], ":"))))), iI, hg._3)
2821+ else ((((nil :+ StringEntry(bU(bO), makeString([mm._2._2, "L", iI], "_"))) :+ IntegerEntry(iV, hg._1)) :+ StringEntry(gk, lF)) :+ StringEntry(hD, makeString([ih[bs], ih[bt], jM, ih[bv]], ":"))))), iI, hg._3)
27852822 if (kk(bO))
27862823 then throw("expedition_checkTournament")
27872824 else {
2788- let mh = al(invoke(R, "burnAcres", [dV], nil))
2789- $Tuple2(((fd._1 ++ jZ(bO, dp)._1) ++ lh), $Tuple3(fd._2, fd._3, mh))
2825+ let mk = al(invoke(R, "burnAcres", [dV], nil))
2826+ $Tuple2(((fd._1 ++ jZ(bO, dp)._1) ++ lh), $Tuple3(fd._2, fd._3, mk))
27902827 }
27912828 }
27922829 }
27932830
27942831
27952832
27962833 @Callable(gy)
27972834 func buySLandForAcres () = {
27982835 let lh = kN(gy)
27992836 if ((size(gy.payments) != 1))
28002837 then throw("exactly 1 payment must be attached")
28012838 else {
28022839 let li = gy.payments[0]
28032840 let fk = li.amount
28042841 if (if (!(isDefined(li.assetId)))
28052842 then true
28062843 else (value(li.assetId) != Z))
28072844 then throw("ACRES payments only!")
28082845 else if ((fk != dV))
28092846 then throw(("Payment attached should be " + toString(dV)))
28102847 else {
28112848 let fd = iC(gy.caller, gy.transactionId)
2812- let mh = al(invoke(R, "burnAcres", [dV], [AttachedPayment(Z, fk)]))
2813- $Tuple2(((fd._1 ++ ka(toString(gy.caller), dp)._1) ++ lh), $Tuple2(fd._2._1, mh))
2849+ let mk = al(invoke(R, "burnAcres", [dV], [AttachedPayment(Z, fk)]))
2850+ $Tuple2(((fd._1 ++ ka(toString(gy.caller), dp)._1) ++ lh), $Tuple2(fd._2._1, mk))
28142851 }
28152852 }
28162853 }
28172854
28182855
28192856
28202857 @Callable(gy)
28212858 func upgradeInfra (bI) = {
28222859 let lh = kN(gy)
28232860 if ((size(gy.payments) != 0))
28242861 then throw("No payments required")
28252862 else {
28262863 let fd = jE(true, gy.caller, 0, bI)
28272864 let bO = valueOrErrorMessage(getString(bS(toString(gy.caller))), "You don't have a duck staked")
28282865 $Tuple2(((fd._1 ++ lh) ++ jZ(bO, fraction(dq, fd._3, o))._1), fd._2)
28292866 }
28302867 }
28312868
28322869
28332870
28342871 @Callable(gy)
2835-func activateArtifact (mk,ml) = {
2872+func activateArtifact (mn,mo) = {
28362873 let lh = kN(gy)
28372874 if ((size(gy.payments) != 0))
28382875 then throw("No payments required")
28392876 else {
28402877 let av = toString(gy.caller)
28412878 let fd = {
2842- let g = mk
2879+ let g = mn
28432880 if (("PRESALE" == g))
2844- then ki(av, ml)
2881+ then ki(av, mo)
28452882 else if (("ONBOARD" == g))
28462883 then kb(av)
28472884 else throw("Unknown artifact")
28482885 }
28492886 (fd ++ lh)
28502887 }
28512888 }
28522889
28532890
28542891
28552892 @Callable(gy)
28562893 func mergeLands (ko) = {
28572894 let lh = kN(gy)
28582895 if ((size(gy.payments) != 0))
28592896 then throw("No payments required")
28602897 else {
28612898 let fd = kM(toString(gy.caller), ko)
28622899 $Tuple2(((fd._1 ++ lh) ++ ka(toString(gy.caller), dr)._1), fd._2)
28632900 }
28642901 }
28652902
28662903
28672904
28682905 @Callable(gy)
2869-func cargoExchange (mm,bI) = {
2906+func cargoExchange (mp,bI) = {
28702907 let lh = kN(gy)
28712908 if ((size(gy.payments) != 0))
28722909 then throw("No payments required")
28732910 else {
2874- let ig = split_4C(mm, ":")
2911+ let ig = split_4C(mp, ":")
28752912 let av = toString(gy.originCaller)
28762913 let jm = value(assetInfo(fromBase58String(bI)))
28772914 let jn = bC(bI)
28782915 if (!(isDefined(getInteger(jn))))
28792916 then throw((jm.name + " is not staked"))
28802917 else {
28812918 let jp = valueOrErrorMessage(getString(bz(bI)), (("NFT " + jm.name) + " is orphaned"))
28822919 if ((jp != av))
28832920 then throw((aI + " is not yours"))
28842921 else {
28852922 let hS = (aq(split(jm.description, "_")[T]) / p)
28862923 let hT = valueOrElse(getInteger(bJ(bI)), 0)
28872924 let bO = valueOrErrorMessage(getString(bS(av)), "You don't have a duck staked")
28882925 let jk = valueOrElse(getString(bU(bO)), aQ)
28892926 let cp = split(value(jk), "_")
28902927 if ((cp[bx] != "L"))
28912928 then throw((("Duck location type is " + cp[bx]) + ", but should be L"))
28922929 else if ((cp[by] != bI))
28932930 then throw(("Duck should be on the land " + bI))
28942931 else {
28952932 let hR = bH(bI)
28962933 let hI = hQ(hR, hS, hT)
28972934 let hD = bT(bO)
28982935 let ih = hC(hD)
28992936 let fd = if(ig, hI, ih)
29002937 let hZ = split(hI[bn], "_")
29012938 let jB = (parseIntValue(hZ[bp]) + fd._7)
29022939 let jC = (parseIntValue(hZ[bq]) - fd._7)
29032940 ([StringEntry(hD, makeString_2C([ih[bs], fd._4, fd._5, fd._6], ":")), StringEntry(hR, makeString_2C([hI[bj], fd._1, fd._2, fd._3, makeString([hZ[bo], toString(jB), toString(jC), hZ[br]], "_")], ":"))] ++ lh)
29042941 }
29052942 }
29062943 }
29072944 }
29082945 }
29092946
29102947
29112948
29122949 @Callable(gy)
29132950 func saveWarehouse (hV,bI) = if ((gy.caller != N))
29142951 then throw("Access denied")
29152952 else {
29162953 let hR = bH(bI)
29172954 let hW = split_4C(hV, ":")
29182955 if ((size(hW) != 5))
29192956 then throw("warehouse string should contain 4 ':' separators")
29202957 else {
2921- let mn = split(hW[bn], "_")[bo]
2958+ let mq = split(hW[bn], "_")[bo]
29222959 let jB = hH(hW)
2923- let mo = hF(hW[bj])
2924- let jC = ((mo - parseIntValue(mn)) - jB)
2960+ let mr = hF(hW[bj])
2961+ let jC = ((mr - parseIntValue(mq)) - jB)
29252962 if ((0 > jC))
29262963 then throw("Operation leads to negative free warehouse space")
29272964 else {
2928- let mp = makeString_2C([hW[bj], hW[bk], hW[bl], hW[bm], makeString([mn, toString(jB), toString(jC), toString(mo)], "_")], ":")
2929- $Tuple2([StringEntry(hR, mp)], mp)
2965+ let ms = makeString_2C([hW[bj], hW[bk], hW[bl], hW[bm], makeString([mq, toString(jB), toString(jC), toString(mr)], "_")], ":")
2966+ $Tuple2([StringEntry(hR, ms)], ms)
29302967 }
29312968 }
29322969 }
29332970
29342971
29352972
29362973 @Callable(gy)
29372974 func setCustomName (bA,ky,bE) = {
29382975 let lh = kN(gy)
29392976 if ((size(gy.payments) != 1))
29402977 then throw("Exactly one payment required")
29412978 else {
29422979 let li = value(gy.payments[0])
29432980 if ((li.assetId != h))
29442981 then throw("Allowed USDT payment only!")
29452982 else if ((li.amount != dP))
29462983 then throw(("Payment should be " + toString(dP)))
29472984 else if (contains(ky, "__"))
29482985 then throw(("Name should not contain '__': " + ky))
29492986 else if ((size(ky) > dQ))
29502987 then throw(("Name too long, maxLength=" + toString(dQ)))
29512988 else {
29522989 let av = toString(gy.originCaller)
2953- let mq = {
2990+ let mt = {
29542991 let g = bE
29552992 if (("ACCOUNT" == g))
29562993 then {
2957- let mr = el(ky)
2958- let ms = getString(mr)
2959- if (isDefined(ms))
2994+ let mu = el(ky)
2995+ let mv = getString(mu)
2996+ if (isDefined(mv))
29602997 then throw(("Name already registered: " + ky))
29612998 else {
2962- let mt = bL(av)
2963- let mu = getString(mt)
2964- let mv = if (isDefined(mu))
2965- then [DeleteEntry(el(value(mu)))]
2999+ let mw = bL(av)
3000+ let mx = getString(mw)
3001+ let my = if (isDefined(mx))
3002+ then [DeleteEntry(el(value(mx)))]
29663003 else nil
2967- (((mv :+ StringEntry(mt, ky)) :+ StringEntry(mr, av)) ++ ka(av, do)._1)
3004+ (((my :+ StringEntry(mw, ky)) :+ StringEntry(mu, av)) ++ ka(av, do)._1)
29683005 }
29693006 }
29703007 else if (("LAND" == g))
29713008 then {
29723009 let jm = value(assetInfo(fromBase58String(bA)))
29733010 let jn = bC(bA)
29743011 if (!(isDefined(getInteger(jn))))
29753012 then throw((jm.name + " is not staked"))
29763013 else {
29773014 let jp = valueOrErrorMessage(getString(bz(bA)), (("NFT " + jm.name) + " is orphaned"))
29783015 if ((jp != av))
29793016 then throw((aI + " is not yours"))
29803017 else {
2981- let mr = ee(ky)
2982- let ms = getString(mr)
2983- if (isDefined(ms))
3018+ let mu = ee(ky)
3019+ let mv = getString(mu)
3020+ if (isDefined(mv))
29843021 then throw(("Name already registered: " + ky))
29853022 else {
2986- let mw = bB(bA)
2987- let mu = getString(mw)
2988- let mv = if (isDefined(mu))
2989- then [DeleteEntry(ee(value(mu)))]
3023+ let mz = bB(bA)
3024+ let mx = getString(mz)
3025+ let my = if (isDefined(mx))
3026+ then [DeleteEntry(ee(value(mx)))]
29903027 else nil
2991- (((mv :+ StringEntry(mw, ky)) :+ StringEntry(mr, bA)) ++ ka(av, do)._1)
3028+ (((my :+ StringEntry(mz, ky)) :+ StringEntry(mu, bA)) ++ ka(av, do)._1)
29923029 }
29933030 }
29943031 }
29953032 }
29963033 else if (("DUCK" == g))
29973034 then {
29983035 let jm = value(assetInfo(fromBase58String(bA)))
29993036 let jn = bC(bA)
30003037 if (if (!(isDefined(getInteger(jn))))
30013038 then true
30023039 else !(isDefined(getString(bS(av)))))
30033040 then throw((jm.name + " is not staked"))
30043041 else {
30053042 let jp = valueOrErrorMessage(getString(bR(bA)), (("NFT " + jm.name) + " is orphaned"))
30063043 if ((jp != av))
30073044 then throw((aJ + " is not yours"))
30083045 else {
3009- let mr = ek(ky)
3010- let ms = getString(mr)
3011- if (isDefined(ms))
3046+ let mu = ek(ky)
3047+ let mv = getString(mu)
3048+ if (isDefined(mv))
30123049 then throw(("Name already registered: " + ky))
30133050 else {
3014- let mw = bK(bA)
3015- let mu = getString(mw)
3016- let mv = if (isDefined(mu))
3017- then [DeleteEntry(ek(value(mu)))]
3051+ let mz = bK(bA)
3052+ let mx = getString(mz)
3053+ let my = if (isDefined(mx))
3054+ then [DeleteEntry(ek(value(mx)))]
30183055 else nil
3019- (((mv :+ StringEntry(mw, ky)) :+ StringEntry(mr, bA)) ++ jZ(bA, do)._1)
3056+ (((my :+ StringEntry(mz, ky)) :+ StringEntry(mu, bA)) ++ jZ(bA, do)._1)
30203057 }
30213058 }
30223059 }
30233060 }
30243061 else throw("Unknown entity type")
30253062 }
3026- $Tuple2(((mq :+ ScriptTransfer(N, li.amount, h)) ++ lh), 0)
3063+ $Tuple2(((mt :+ ScriptTransfer(N, li.amount, h)) ++ lh), 0)
30273064 }
30283065 }
30293066 }
30303067
30313068
30323069
30333070 @Callable(gy)
3034-func setReferrals (mx,my) = if ((gy.callerPublicKey != f))
3071+func setReferrals (mA,mB) = if ((gy.callerPublicKey != f))
30353072 then throw("Permission denied")
30363073 else {
30373074 let lh = kN(gy)
30383075 if ((size(gy.payments) != 0))
30393076 then throw("No payments required")
3040- else if (!(isDefined(addressFromString(mx))))
3041- then throw(("Invalid address: " + mx))
3077+ else if (!(isDefined(addressFromString(mA))))
3078+ then throw(("Invalid address: " + mA))
30423079 else {
3043- let mz = addressFromString(my)
3044- if (!(isDefined(mz)))
3045- then throw(("Invalid address: " + my))
3080+ let mC = addressFromString(mB)
3081+ if (!(isDefined(mC)))
3082+ then throw(("Invalid address: " + mB))
30463083 else {
3047- let mA = getString(au(mx))
3048- if (!(isDefined(mA)))
3084+ let mD = getString(au(mA))
3085+ if (!(isDefined(mD)))
30493086 then throw("oldPlayer didn't do any tx in game")
3050- else if ((0 >= wavesBalance(value(mz)).available))
3087+ else if ((0 >= wavesBalance(value(mC)).available))
30513088 then throw("newPlayer has no WAVES")
30523089 else {
3053- let mB = em()
3054- let mC = getString(mB)
3055- let mD = if (isDefined(mC))
3056- then split_4C(value(mC), "_")
3090+ let mE = em()
3091+ let mF = getString(mE)
3092+ let mG = if (isDefined(mF))
3093+ then split_4C(value(mF), "_")
30573094 else nil
3058- if (containsElement(mD, my))
3059- then throw((my + " is not newbie (already has referrals)"))
3095+ if (containsElement(mG, mB))
3096+ then throw((mB + " is not newbie (already has referrals)"))
30603097 else {
3061- let kc = bM(my)
3098+ let kc = bM(mB)
30623099 let kd = getString(kc)
30633100 if (if (isDefined(kd))
30643101 then isDefined(addressFromString(value(kd)))
30653102 else false)
3066- then throw(((my + " already has refBy: ") + value(kd)))
3103+ then throw(((mB + " already has refBy: ") + value(kd)))
30673104 else {
3068- let mE = bQ(mx)
3069- let mF = getString(mE)
3070- let mG = if (isDefined(mF))
3071- then split_4C(value(mF), "_")
3105+ let mH = bQ(mA)
3106+ let mI = getString(mH)
3107+ let mJ = if (isDefined(mI))
3108+ then split_4C(value(mI), "_")
30723109 else nil
3073- if (containsElement(mG, my))
3074- then throw((((mx + " already contains ") + my) + " within referrals"))
3110+ if (containsElement(mJ, mB))
3111+ then throw((((mA + " already contains ") + mB) + " within referrals"))
30753112 else {
3076- let mH = makeString_2C((mG :+ my), "_")
3077- let mI = if (containsElement(mD, mx))
3078- then value(mC)
3079- else makeString_2C((mD :+ mx), "_")
3080- $Tuple2(([StringEntry(kc, mx), StringEntry(mE, mH), StringEntry(mB, mI)] ++ lh), 0)
3113+ let mK = makeString_2C((mJ :+ mB), "_")
3114+ let mL = if (containsElement(mG, mA))
3115+ then value(mF)
3116+ else makeString_2C((mG :+ mA), "_")
3117+ $Tuple2(([StringEntry(kc, mA), StringEntry(mH, mK), StringEntry(mE, mL)] ++ lh), 0)
30813118 }
30823119 }
30833120 }
30843121 }
30853122 }
30863123 }
30873124 }
30883125
30893126
30903127
30913128 @Callable(gy)
3092-func distributePoints (mJ,mK,mL,mM,mN) = {
3129+func distributePoints (mM,mN,mO,mP,mQ) = {
30933130 let lh = kN(gy)
30943131 if ((size(gy.payments) != 0))
30953132 then throw("No payments required")
30963133 else {
30973134 let av = toString(gy.originCaller)
3098- let mO = an(invoke(P, "checkWlgXpREADONLY", [av], nil))
3099- let mP = al(mO[1])
3100- let mQ = if ((0 >= mP))
3135+ let mR = an(invoke(P, "checkWlgXpREADONLY", [av], nil))
3136+ let mS = al(mR[1])
3137+ let mT = if ((0 >= mS))
31013138 then $Tuple2(0, nil)
31023139 else {
31033140 let jX = al(invoke(P, "takeWlgXp", [av], nil))
31043141 if ((jX == jX))
3105- then $Tuple2(mP, [IntegerEntry(cW(av), al(mO[0])), IntegerEntry(cV(av), al(mO[2]))])
3142+ then $Tuple2(mS, [IntegerEntry(cW(av), al(mR[0])), IntegerEntry(cV(av), al(mR[2]))])
31063143 else throw("Strict value is not equal to itself.")
31073144 }
3108- let mR = mQ._1
3109- let mS = mQ._2
3145+ let mU = mT._1
3146+ let mV = mT._2
31103147 let bO = valueOrErrorMessage(getString(bS(av)), "You don't have a duck staked")
3111- let mT = cX(av)
3112- let mU = (valueOrElse(getInteger(mT), 0) + mR)
3113- let mV = cT(bO)
3114- let mW = valueOrElse(getInteger(mV), 0)
3115- let mX = (mU + mW)
3116- let mY = ((((mJ + mK) + mL) + mM) + mN)
3117- if ((mY > mX))
3118- then throw((("There are only " + toString(mX)) + " free points to distribute"))
3148+ let mW = cX(av)
3149+ let mX = (valueOrElse(getInteger(mW), 0) + mU)
3150+ let mY = cT(bO)
3151+ let mZ = valueOrElse(getInteger(mY), 0)
3152+ let na = (mX + mZ)
3153+ let nb = ((((mM + mN) + mO) + mP) + mQ)
3154+ if ((nb > na))
3155+ then throw((("There are only " + toString(na)) + " free points to distribute"))
31193156 else {
3120- let mZ = cQ(bO)
3121- let dF = split(valueOrElse(getString(mZ), "0_0_0_0_0"), "_")
3122- let na = (mU - mY)
3123- $Tuple2((([IntegerEntry(mT, if ((0 > na))
3157+ let nc = cQ(bO)
3158+ let dF = split(valueOrElse(getString(nc), "0_0_0_0_0"), "_")
3159+ let nd = (mX - nb)
3160+ $Tuple2((([IntegerEntry(mW, if ((0 > nd))
31243161 then 0
3125- else na), IntegerEntry(mV, if ((0 > na))
3126- then (mW + na)
3127- else mW), StringEntry(mZ, makeString([toString((parseIntValue(dF[cF]) + mJ)), toString((parseIntValue(dF[cG]) + mK)), toString((parseIntValue(dF[cH]) + mL)), toString((parseIntValue(dF[cI]) + mM)), toString((parseIntValue(dF[cJ]) + mN))], "_"))] ++ lh) ++ mS), 0)
3162+ else nd), IntegerEntry(mY, if ((0 > nd))
3163+ then (mZ + nd)
3164+ else mZ), StringEntry(nc, makeString([toString((parseIntValue(dF[cF]) + mM)), toString((parseIntValue(dF[cG]) + mN)), toString((parseIntValue(dF[cH]) + mO)), toString((parseIntValue(dF[cI]) + mP)), toString((parseIntValue(dF[cJ]) + mQ))], "_"))] ++ lh) ++ mV), 0)
31283165 }
31293166 }
31303167 }
31313168
31323169
31333170
31343171 @Callable(gy)
31353172 func splitByGlobalWeightsREADONLY (eC) = $Tuple2(nil, eU(eC))
31363173
31373174
31383175
31393176 @Callable(gy)
3140-func splitByGlobalAndLocalWeightsREADONLY (nb,nc,gB) = {
3177+func splitByGlobalAndLocalWeightsREADONLY (ne,nf,gB) = {
31413178 let gu = gA(gB)
3142- $Tuple2(nil, $Tuple2(eU(nb), eF(nc, gu)))
3179+ $Tuple2(nil, $Tuple2(eU(ne), eF(nf, gu)))
31433180 }
31443181
31453182
31463183
31473184 @Callable(gy)
31483185 func getBackpackREADONLY (bO) = $Tuple2(nil, makeString(hC(bT(bO)), ":"))
31493186
31503187
31513188
31523189 @Callable(gy)
31533190 func getWarehouseREADONLY (bI) = {
31543191 let jm = value(assetInfo(fromBase58String(bI)))
31553192 let hS = (aq(split(jm.description, "_")[T]) / p)
31563193 let hT = valueOrElse(getInteger(bJ(bI)), 0)
31573194 $Tuple2(nil, makeString_2C(hQ(bH(bI), hS, hT), ":"))
31583195 }
31593196
31603197
31613198
31623199 @Callable(gy)
31633200 func saveLastTx () = if (!(containsElement([P, N, Q, R], gy.caller)))
31643201 then throw("Access denied")
31653202 else $Tuple2(kN(gy), 42)
31663203
31673204
31683205
31693206 @Callable(gy)
31703207 func updateDuckStats (bO,jX) = if ((gy.caller != N))
31713208 then throw("Access denied")
31723209 else jZ(bO, jX)
31733210
31743211
31753212
31763213 @Callable(gy)
31773214 func updateAccStats (av,jX) = if (!(containsElement([P, N, R], gy.caller)))
31783215 then throw("Access denied")
31793216 else ka(av, jX)
31803217
31813218
31823219
31833220 @Callable(gy)
3184-func equipDuck (nd) = {
3221+func equipDuck (ng) = {
31853222 let lh = kN(gy)
31863223 if ((size(gy.payments) != 0))
31873224 then throw("No payments required")
31883225 else {
31893226 let av = toString(gy.originCaller)
31903227 let bO = valueOrErrorMessage(getString(bS(av)), "You don't have a duck staked")
31913228 if (kk(bO))
31923229 then throw("equipDuck_checkTournament")
31933230 else {
31943231 let gk = cU(bO)
31953232 let lb = split(valueOrElse(getString(gk), ",;,_,;,_,;,_,;,_,;,_,;,"), "_")
31963233 let hD = bT(bO)
31973234 let ih = hC(hD)
3198- let lC = split(nd, "_")
3199- if ((size(lC) != cL))
3235+ let lF = split(ng, "_")
3236+ if ((size(lF) != cL))
32003237 then throw("Wrong equipment string")
32013238 else {
32023239 let gn = gc(lb, fr(ih[bv]), true, nil)
3203- let go = split(lC[cK], ";")[1]
3240+ let go = split(lF[cK], ";")[1]
32043241 let dD = if ((go == ""))
32053242 then 0
32063243 else {
32073244 let gp = split(go, ",")[0]
32083245 if ((gp == ""))
32093246 then 0
32103247 else {
32113248 let fG = split(gp, ":")
32123249 let K = fG[0]
32133250 let gq = fG[1]
32143251 if (if (if (if (if ((K == "06"))
32153252 then true
32163253 else (K == "07"))
32173254 then true
32183255 else (K == "08"))
32193256 then (gq != "")
32203257 else false)
32213258 then (parseIntValue(gq) > 0)
32223259 else false)
32233260 then parseIntValue(split(bd[parseIntValue(K)], "_")[bf])
32243261 else 0
32253262 }
32263263 }
32273264 let fX = dC(this, bO, dD, true)
3228- let gr = gc(lC, gn, false, fX)
3265+ let gr = gc(lF, gn, false, fX)
32293266 let lc = fw(gr)
3230- $Tuple2(([StringEntry(gk, nd), StringEntry(hD, makeString_2C([ih[bs], ih[bt], ih[bu], lc], ":")), StringEntry(da(bO), makeString([toString(fX[7]), toString(fX[8]), toString(fX[9]), toString(fX[10]), toString(fX[11])], "_"))] ++ lh), 0)
3267+ $Tuple2(([StringEntry(gk, ng), StringEntry(hD, makeString_2C([ih[bs], ih[bt], ih[bu], lc], ":")), StringEntry(da(bO), makeString([toString(fX[7]), toString(fX[8]), toString(fX[9]), toString(fX[10]), toString(fX[11])], "_"))] ++ lh), 0)
32313268 }
32323269 }
32333270 }
32343271 }
32353272
32363273
32373274
32383275 @Callable(gy)
32393276 func initDuckTourAttempt (bO) = if ((gy.caller != Q))
32403277 then throw("Access denied")
32413278 else {
32423279 let iV = cP(bO)
32433280 let iW = dw(valueOrElse(getInteger(cS(bO)), 0))
3244- let lw = valueOrElse(getInteger(iV), iW)
3245- let ne = bU(bO)
3246- let jk = valueOrElse(getString(ne), aQ)
3281+ let lz = valueOrElse(getInteger(iV), iW)
3282+ let nh = bU(bO)
3283+ let jk = valueOrElse(getString(nh), aQ)
32473284 let co = valueOrElse(getInteger(Q, bZ), 0)
3248- let nf = (toString(co) + "_T_0")
3249- $Tuple2([IntegerEntry(cY(bO), lw), IntegerEntry(iV, iW), StringEntry(cZ(bO), jk), StringEntry(ne, nf)], nf)
3285+ let ni = (toString(co) + "_T_0")
3286+ $Tuple2([IntegerEntry(cY(bO), lz), IntegerEntry(iV, iW), StringEntry(cZ(bO), jk), StringEntry(nh, ni)], ni)
32503287 }
32513288
32523289
32533290
32543291 @Callable(gy)
32553292 func breakAttempt () = {
32563293 let lh = kN(gy)
32573294 let bO = valueOrErrorMessage(getString(bS(toString(gy.caller))), "You don't have a duck staked")
3258- let ne = bU(bO)
3259- let jk = valueOrElse(getString(ne), aQ)
3295+ let nh = bU(bO)
3296+ let jk = valueOrElse(getString(nh), aQ)
32603297 if ((split(jk, "_")[bx] != "T"))
32613298 then throw("Your duck is not in the tournament")
32623299 else {
3263- let ng = getIntegerValue(cY(bO))
3264- let nh = getStringValue(cZ(bO))
3265- $Tuple2(((lh :+ IntegerEntry(cP(bO), ng)) :+ StringEntry(ne, nh)), jk)
3300+ let nj = getIntegerValue(cY(bO))
3301+ let nk = getStringValue(cZ(bO))
3302+ $Tuple2(((lh :+ IntegerEntry(cP(bO), nj)) :+ StringEntry(nh, nk)), jk)
32663303 }
32673304 }
32683305
32693306
32703307
32713308 @Callable(gy)
32723309 func breakAttemptCallback () = if ((gy.caller != Q))
32733310 then throw("Access denied")
32743311 else {
32753312 let bO = valueOrErrorMessage(getString(bS(toString(gy.originCaller))), "You don't have a duck staked")
32763313 $Tuple2([IntegerEntry(cP(bO), getIntegerValue(cY(bO))), StringEntry(bU(bO), getStringValue(cZ(bO)))], "breakAttemptCallback")
32773314 }
32783315
32793316
32803317
32813318 @Callable(gy)
32823319 func exitTournamentInternal (bO) = if ((gy.caller != this))
32833320 then throw("Access denied")
32843321 else {
3285- let ng = getIntegerValue(cY(bO))
3286- let nh = getStringValue(cZ(bO))
3287- $Tuple2([IntegerEntry(cP(bO), ng), StringEntry(bU(bO), nh)], false)
3322+ let nj = getIntegerValue(cY(bO))
3323+ let nk = getStringValue(cZ(bO))
3324+ $Tuple2([IntegerEntry(cP(bO), nj), StringEntry(bU(bO), nk)], false)
32883325 }
32893326
32903327
32913328
32923329 @Callable(gy)
32933330 func processDelivery (bO) = if ((gy.caller != this))
32943331 then throw("Access denied")
32953332 else {
32963333 let av = toString(gy.originCaller)
3297- let ni = valueOrElse(getInteger(N, bY), 0)
3298- if ((aT > ni))
3299- then throw(("Delivery is not available, fund=" + aw(ni, 6)))
3334+ let nl = valueOrElse(getInteger(N, bY), 0)
3335+ if ((aT > nl))
3336+ then throw(("Delivery is not available, fund=" + aw(nl, 6)))
33003337 else {
33013338 let cq = lastBlock.timestamp
3302- let nj = dg(av)
3303- let nk = valueOrElse(getInteger(dh(av)), 0)
3304- let nl = (cq / dJ)
3305- let fM = if ((nk == nl))
3306- then valueOrElse(getInteger(nj), 0)
3339+ let nm = dg(av)
3340+ let nn = valueOrElse(getInteger(dh(av)), 0)
3341+ let no = (cq / dJ)
3342+ let fM = if ((nn == no))
3343+ then valueOrElse(getInteger(nm), 0)
33073344 else 0
3308- let nm = valueOrElse(getInteger(R, dL(av)), 0)
3309- let nn = (aY + (nm / aZ))
3310- if ((fM >= nn))
3311- then throw((("You already used " + toString(nn)) + " delivery attempts for today"))
3345+ let np = valueOrElse(getInteger(R, dL(av)), 0)
3346+ let nq = (aY + (np / aZ))
3347+ if ((fM >= nq))
3348+ then throw((("You already used " + toString(nq)) + " delivery attempts for today"))
33123349 else {
3313- let no = df(bO)
3314- let np = invoke(N, "sendDeliveryReward", [av], nil)
3315- $Tuple2([IntegerEntry(nj, (fM + 1)), IntegerEntry(dh(av), nl), IntegerEntry(no, (valueOrElse(getInteger(no), 0) + 1))], np)
3350+ let nr = df(bO)
3351+ let ns = invoke(N, "sendDeliveryReward", [av], nil)
3352+ $Tuple2([IntegerEntry(nm, (fM + 1)), IntegerEntry(dh(av), no), IntegerEntry(nr, (valueOrElse(getInteger(nr), 0) + 1))], ns)
33163353 }
33173354 }
33183355 }
33193356
33203357
33213358
33223359 @Callable(gy)
33233360 func robLand (iK,iL) = {
33243361 let lh = kN(gy)
33253362 if ((size(gy.payments) != 1))
33263363 then throw("exactly 1 payment must be attached")
33273364 else {
33283365 let li = gy.payments[0]
3329- let nq = li.amount
3366+ let nt = li.amount
33303367 if (if (!(isDefined(li.assetId)))
33313368 then true
33323369 else (value(li.assetId) != X))
33333370 then throw("WLGOLD payments only!")
3334- else if ((nq != aV))
3371+ else if ((nt != aV))
33353372 then throw((("Payment should be " + aw(aV, 8)) + " WLGOLD"))
33363373 else {
33373374 let av = toString(gy.caller)
33383375 if (!(sigVerify_8Kb(iK, iL, f)))
33393376 then throw("signature does not match")
33403377 else {
33413378 let fj = split_4C(toUtf8String(iK), ";")
3342- let nr = split_4C(fj[0], "|")
3343- let iN = split(nr[ev], "_")
3379+ let nu = split_4C(fj[0], "|")
3380+ let iN = split(nu[ev], "_")
33443381 let iO = parseIntValue(iN[0])
33453382 let iP = parseIntValue(iN[1])
3346- let iZ = nr[ew]
3347- let ns = split(fj[1], "|")
3348- let nt = ns[ex]
3349- if ((nt != "B"))
3383+ let iZ = nu[ew]
3384+ let nv = split(fj[1], "|")
3385+ let nw = nv[ex]
3386+ if ((nw != "B"))
33503387 then throw("Only bank robbery is supported")
33513388 else {
3352- let iS = parseIntValue(ns[ez])
3389+ let iS = parseIntValue(nv[ez])
33533390 if (if ((iS > (lastBlock.timestamp + dO)))
33543391 then true
33553392 else ((lastBlock.timestamp - dO) > iS))
33563393 then throw(((("signature outdated: logTime=" + toString(iS)) + ", bcTime=") + toString(lastBlock.timestamp)))
33573394 else {
3358- let iT = ns[ey]
3395+ let iT = nv[ey]
33593396 let iU = valueOrElse(getString(au(av)), "")
33603397 if ((iU != iT))
33613398 then throw(((("Tx ids don't match! In state: " + iU) + ", in msg: ") + iT))
33623399 else {
33633400 let bO = valueOrErrorMessage(getString(bS(av)), "You don't have a duck staked")
33643401 let gk = cU(bO)
3365- let lA = valueOrElse(getString(gk), ",;,_,;,_,;,_,;,_,;,_,;,")
3366- let nu = fe(lA, iZ)
3367- let lC = nu._1
3368- let lD = nu._2
3369- let nv = nu._3
3402+ let lD = valueOrElse(getString(gk), ",;,_,;,_,;,_,;,_,;,_,;,")
3403+ let nx = fe(lD, iZ)
3404+ let lF = nx._1
3405+ let lG = nx._2
3406+ let ny = nx._3
33703407 let jk = valueOrElse(getString(bU(bO)), aQ)
33713408 if (cm(Q, jk))
33723409 then throw("Your duck is taking part in the tournament")
33733410 else {
33743411 let cq = lastBlock.timestamp
3375- let nj = dd(av)
3376- let nk = valueOrElse(getInteger(de(av)), 0)
3377- let nl = (cq / dJ)
3378- let fM = if ((nk == nl))
3379- then valueOrElse(getInteger(nj), 0)
3412+ let nm = dd(av)
3413+ let nn = valueOrElse(getInteger(de(av)), 0)
3414+ let no = (cq / dJ)
3415+ let fM = if ((nn == no))
3416+ then valueOrElse(getInteger(nm), 0)
33803417 else 0
3381- let nm = valueOrElse(getInteger(R, dL(av)), 0)
3382- let nw = (aW + (nm / aX))
3383- if ((fM >= nw))
3384- then throw((("You already used " + toString(nw)) + " robbery attempts for today"))
3418+ let np = valueOrElse(getInteger(R, dL(av)), 0)
3419+ let nz = (aW + (np / aX))
3420+ if ((fM >= nz))
3421+ then throw((("You already used " + toString(nz)) + " robbery attempts for today"))
33853422 else {
3386- let no = dc(bO)
3387- let nx = if ((iP > 0))
3423+ let nr = dc(bO)
3424+ let nA = if ((iP > 0))
33883425 then {
3389- let ni = assetBalance(this, X)
3390- let ny = if (nv)
3426+ let nl = assetBalance(this, X)
3427+ let nB = if (ny)
33913428 then (2 * aV)
33923429 else (5 * aV)
3393- if ((ny > ni))
3394- then throw(((("Robbery is not available, funds = " + aw(ni, 8)) + " WLGOLD, required = ") + aw(ny, 8)))
3395- else [ScriptTransfer(gy.caller, ny, X)]
3430+ if ((nB > nl))
3431+ then throw(((("Robbery is not available, funds = " + aw(nl, 8)) + " WLGOLD, required = ") + aw(nB, 8)))
3432+ else [ScriptTransfer(gy.caller, nB, X)]
33963433 }
33973434 else nil
3398- $Tuple2((((((((((lh ++ nx) ++ (if (lD)
3435+ $Tuple2((((((((((lh ++ nA) ++ (if (lG)
33993436 then [StringEntry(da(bO), "0_0_0_0_0")]
34003437 else nil)) ++ jZ(bO, if ((iP > 0))
34013438 then dl
3402- else dm)._1) :+ IntegerEntry(db(bO), cq)) :+ IntegerEntry(nj, (fM + 1))) :+ IntegerEntry(de(av), nl)) :+ IntegerEntry(no, (valueOrElse(getInteger(no), 0) + 1))) :+ StringEntry(gk, lC)) :+ IntegerEntry(cP(bO), max([iP, 0]))), 0)
3439+ else dm)._1) :+ IntegerEntry(db(bO), cq)) :+ IntegerEntry(nm, (fM + 1))) :+ IntegerEntry(de(av), no)) :+ IntegerEntry(nr, (valueOrElse(getInteger(nr), 0) + 1))) :+ StringEntry(gk, lF)) :+ IntegerEntry(cP(bO), max([iP, 0]))), 0)
34033440 }
34043441 }
34053442 }
34063443 }
34073444 }
34083445 }
34093446 }
34103447 }
34113448 }
34123449
34133450
34143451
34153452 @Callable(gy)
34163453 func buyRoboDuck () = if (!(c))
34173454 then throw("Feature is turned off")
34183455 else {
34193456 let lh = kN(gy)
34203457 if ((size(gy.payments) != 1))
34213458 then throw("Exactly one payment required")
34223459 else {
34233460 let li = value(gy.payments[0])
34243461 if ((li.assetId != h))
34253462 then throw("Allowed USDT payment only!")
34263463 else if ((li.amount != dU))
34273464 then throw((("Payment attached should be " + aw(dU, 6)) + " USDT"))
34283465 else {
3429- let nz = valueOrElse(getInteger(en()), 0)
3430- let nA = toBytes(nz)
3431- let ef = ((aK + "-") + takeRight(toBase16String(nA), 8))
3432- let nB = takeRight(toBase16String(sha256_16Kb(nA)), 6)
3433- let iH = Issue(ef, ("Robo Duck NFT for WavesLands game, background color = #" + nB), 1, 0, false)
3466+ let nC = valueOrElse(getInteger(en()), 0)
3467+ let nD = toBytes(nC)
3468+ let ef = ((aK + "-") + takeRight(toBase16String(nD), 8))
3469+ let nE = takeRight(toBase16String(sha256_16Kb(nD)), 6)
3470+ let iH = Issue(ef, ("Robo Duck NFT for WavesLands game, background color = #" + nE), 1, 0, false)
34343471 let bA = calculateAssetId(iH)
3435- $Tuple2(((((lh :+ IntegerEntry(en(), (nz + 1))) :+ iH) :+ ScriptTransfer(gy.originCaller, 1, bA)) :+ ScriptTransfer(N, li.amount, h)), $Tuple2(toBase58String(bA), nB))
3472+ $Tuple2(((((lh :+ IntegerEntry(en(), (nC + 1))) :+ iH) :+ ScriptTransfer(gy.originCaller, 1, bA)) :+ ScriptTransfer(N, li.amount, h)), $Tuple2(toBase58String(bA), nE))
34363473 }
34373474 }
34383475 }
34393476
34403477

github/deemru/w8io/169f3d6 
665.52 ms