tx · EHki7ShqZPBSgtwFxCThNtbfK92WztqA3zVtppJxmNKk

3NDCyBG5q85JuaRiigUeEtainyjCQT3XpZm:  -0.10200000 Waves

2023.11.04 23:59 [2829111] smart account 3NDCyBG5q85JuaRiigUeEtainyjCQT3XpZm > SELF 0.00000000 Waves

{ "type": 13, "id": "EHki7ShqZPBSgtwFxCThNtbfK92WztqA3zVtppJxmNKk", "fee": 10200000, "feeAssetId": null, "timestamp": 1699131553515, "version": 2, "chainId": 84, "sender": "3NDCyBG5q85JuaRiigUeEtainyjCQT3XpZm", "senderPublicKey": "EVooykMNV691Venwp1dHUTBd7KWequzUcda57Wd3LQEX", "proofs": [ "3vSfyvV8Nq8tiqcaMCetMz3vCFdWfoTP6SqUycr7hggXAX6HHFwekF9BNJyfYiZTAuhXVK6CAUGp3agZewZYcp9m" ], "script": "base64:BgLcAQgCEgMKAQgSBAoCCAESAwoBBBIAEgMKAQgSABIDCgEIEgQKAgEIEgQKAgEIEgQKAgICEgUKAwEBARIAEgQKAggIEgASABIECgICAhIAEgMKAQgSBAoCCAgSAwoBGBIECgIICBIECgIICBIFCgMICAgSBAoCCAgSBwoFAQEBAQESAwoBARIFCgMBAQgSAwoBCBIDCgEIEgASBAoCCAESBAoCCAESAwoBCBIECgIICBIDCgEIEgASAwoBCBIDCgEIEgYKBAgBCAESABIECgICAhIECgICAhIAEgMKAQiiAgAJREFZTUlMTElTAIC4mSkBFGtleUxhc3RBcmJUaW1lQnlVc2VyAQRhZGRyCQCsAgICEGxhc3RBcmJUaW1lVXNlcl8FBGFkZHIBGmtleUFjcmVzU3Rha2VkQW1vdW50QnlVc2VyAQRhZGRyCQCsAgICGGFjcmVzU3Rha2VkQW1vdW50QnlVc2VyXwUEYWRkcgAGU0NBTEU4AIDC1y8ADHhwTGV2ZWxTY2FsZQCAGQAPeHBMZXZlbFJlY2lwUG93AKAfABJudW1Qb2ludHNPbkxldmVsVXAAAwAOcm9iYmVyeUNvc3RNaW4AgMLXLwAUcm9iYmVyeUNvb2xkb3duQ29lZmYAkAMADHJlcXVpcmVtZW50cwkAzAgCAghTdHJlbmd0aAkAzAgCAghBY2N1cmFjeQkAzAgCAglJbnRlbGxlY3QJAMwIAgIJRW5kdXJhbmNlCQDMCAICCURleHRlcml0eQkAzAgCAgVMZXZlbAkAzAgCAgZIZWFsdGgFA25pbAAMY2hhclN0cmVuZ3RoAAAADGNoYXJBY2N1cmFjeQABAA1jaGFySW50ZWxsZWN0AAIADWNoYXJFbmR1cmFuY2UAAwANY2hhckRleHRlcml0eQAEAAtzZWdCYWNrcGFjawAAAAtOVU1TRUdNRU5UUwAGAApOVU1NQUlOQVVYAAIACE1BWFNMT1RTAAIADU1BWFBST0RJTlNMT1QAHgAQbGFuZFJvYkNvb2xkb3ducwkAzAgCAAAJAMwIAgDAzyQJAMwIAgCg9zYJAMwIAgCA3MwUCQDMCAIAgK6mCgUDbmlsAA5NSU5fUkVTX1RPX1JPQgCA2sQJAAxyb2JJZHhMb2NrZWQAAQALZHVja0lkeEZyZWUAAAAQZHVja0lkeFByZXBhcmluZwABAQ1rZXlEdWNrSGVhbHRoAQtkdWNrQXNzZXRJZAkArAICAgtkdWNrSGVhbHRoXwULZHVja0Fzc2V0SWQBDGtleUR1Y2tDaGFycwELZHVja0Fzc2V0SWQJAKwCAgIKZHVja0NoYXJzXwULZHVja0Fzc2V0SWQBCWtleUR1Y2tYUAELZHVja0Fzc2V0SWQJAKwCAgIHZHVja1hQXwULZHVja0Fzc2V0SWQBDGtleUR1Y2tMZXZlbAELZHVja0Fzc2V0SWQJAKwCAgIKZHVja0xldmVsXwULZHVja0Fzc2V0SWQBEWtleUR1Y2tGcmVlUG9pbnRzAQtkdWNrQXNzZXRJZAkArAICAg9kdWNrRnJlZVBvaW50c18FC2R1Y2tBc3NldElkARBrZXlEdWNrRXF1aXBtZW50AQtkdWNrQXNzZXRJZAkArAICAg5kdWNrRXF1aXBtZW50XwULZHVja0Fzc2V0SWQBCWtleVVzZXJYUAEEYWRkcgkArAICAgd1c2VyWFBfBQRhZGRyAQxrZXlVc2VyTGV2ZWwBBGFkZHIJAKwCAgIKdXNlckxldmVsXwUEYWRkcgERa2V5VXNlckZyZWVQb2ludHMBBGFkZHIJAKwCAgIPdXNlckZyZWVQb2ludHNfBQRhZGRyAQ5rZXlTYXZlZEhlYWx0aAELZHVja0Fzc2V0SWQJAKwCAgIMc2F2ZWRIZWFsdGhfBQtkdWNrQXNzZXRJZAEQa2V5U2F2ZWRMb2NhdGlvbgELZHVja0Fzc2V0SWQJAKwCAgIOc2F2ZWRMb2NhdGlvbl8FC2R1Y2tBc3NldElkAQxrZXlEdWNrQnVmZnMBC2R1Y2tBc3NldElkCQCsAgICCmR1Y2tCdWZmc18FC2R1Y2tBc3NldElkARhrZXlMYXN0Um9iYmVyeVRpbWVCeUR1Y2sBC2R1Y2tBc3NldElkCQCsAgICEGxhc3RSb2JiZXJ5VGltZV8FC2R1Y2tBc3NldElkARhrZXlMYXN0Um9iYmVyeUNvc3RCeUR1Y2sBC2R1Y2tBc3NldElkCQCsAgICEGxhc3RSb2JiZXJ5Q29zdF8FC2R1Y2tBc3NldElkARNrZXlMYW5kUm9iYmVyeVN0YXRlAQtsYW5kQXNzZXRJZAkArAICAhFsYW5kUm9iYmVyeVN0YXRlXwULbGFuZEFzc2V0SWQBEmtleUxhbmRDb29sZG93bkVUQQELbGFuZEFzc2V0SWQJAKwCAgIQbGFuZENvb2xkb3duRVRBXwULbGFuZEFzc2V0SWQBE2tleUR1Y2tSb2JiZXJ5U3RhdGUBC2R1Y2tBc3NldElkCQCsAgICEWR1Y2tSb2JiZXJ5U3RhdGVfBQtkdWNrQXNzZXRJZAETa2V5TG9ja2VkTGFuZEJ5RHVjawELZHVja0Fzc2V0SWQJAKwCAgIRbG9ja2VkTGFuZEJ5RHVja18FC2R1Y2tBc3NldElkARZrZXlEZWxpdmVyeURlbGF5QnlEdWNrAQtkdWNrQXNzZXRJZAkArAICAhRkZWxpdmVyeURlbGF5QnlEdWNrXwULZHVja0Fzc2V0SWQBFGtleVVzZXJEZWxpdmVyeUNvdW50AQRhZGRyCQCsAgICEnVzZXJEZWxpdmVyeUNvdW50XwUEYWRkcgEWa2V5VXNlckxhc3REZWxpdmVyeURheQEEYWRkcgkArAICAhR1c2VyTGFzdERlbGl2ZXJ5RGF5XwUEYWRkcgAHeHBDbGFpbQCQTgAPeHBTdWNjZXNzRmxpZ2h0AJBOAAx4cEZhaWxGbGlnaHQA0A8ACHhwQ2FsbEVTAKCNBgAMeHBDdXN0b21OYW1lAMCEPQAKeHBOZXdTTGFuZADAlrECAA54cFVwZ3JhZGVJbmZyYQCQTgAHeHBNZXJnZQDAhD0ACXhwT25ib2FyZADAhD0ABnhwSGVhbACQTgEJbGV2ZWxCeVhQAQJ4cAkAawMFDHhwTGV2ZWxTY2FsZQkAbAYFAnhwAAQFD3hwTGV2ZWxSZWNpcFBvdwAEAAQFBERPV04FBlNDQUxFOAEJbWF4SGVhbHRoAQVsZXZlbAkAZAIAZAUFbGV2ZWwBB2xldmVsVXACCWN1cnJMZXZlbAVuZXdYUAQIbmV3TGV2ZWwJAQlsZXZlbEJ5WFABBQVuZXdYUAkAzAgCBQhuZXdMZXZlbAkAzAgCCQBoAgUSbnVtUG9pbnRzT25MZXZlbFVwCQBlAgUIbmV3TGV2ZWwFCWN1cnJMZXZlbAUDbmlsAQxnZXREdWNrU3RhdHMED3N0YWtpbmdDb250cmFjdAtkdWNrQXNzZXRJZApidWZmRWZmZWN0CmZvcmNlQnVmZnMEBWNoYXJzCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUPc3Rha2luZ0NvbnRyYWN0CQEMa2V5RHVja0NoYXJzAQULZHVja0Fzc2V0SWQCCTBfMF8wXzBfMAIBXwQDbHZsCQELdmFsdWVPckVsc2UCCQCaCAIFD3N0YWtpbmdDb250cmFjdAkBDGtleUR1Y2tMZXZlbAEFC2R1Y2tBc3NldElkAAAEBmhlYWx0aAkBC3ZhbHVlT3JFbHNlAgkAmggCBQ9zdGFraW5nQ29udHJhY3QJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQJAQltYXhIZWFsdGgBBQNsdmwECnN0YXRlQnVmZnMJALUJAgkBC3ZhbHVlT3JFbHNlAgkAnQgCBQ9zdGFraW5nQ29udHJhY3QJAQxrZXlEdWNrQnVmZnMBBQtkdWNrQXNzZXRJZAIJMF8wXzBfMF8wAgFfCQDOCAIJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBWNoYXJzBQxjaGFyU3RyZW5ndGgJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBWNoYXJzBQxjaGFyQWNjdXJhY3kJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBWNoYXJzBQ1jaGFySW50ZWxsZWN0CQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVjaGFycwUNY2hhckVuZHVyYW5jZQkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFY2hhcnMFDWNoYXJEZXh0ZXJpdHkJAMwIAgUDbHZsCQDMCAIFBmhlYWx0aAUDbmlsAwUKZm9yY2VCdWZmcwkAzAgCBQpidWZmRWZmZWN0CQDMCAIFCmJ1ZmZFZmZlY3QJAMwIAgUKYnVmZkVmZmVjdAkAzAgCBQpidWZmRWZmZWN0CQDMCAIFCmJ1ZmZFZmZlY3QFA25pbAkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKc3RhdGVCdWZmcwUMY2hhclN0cmVuZ3RoCQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQpzdGF0ZUJ1ZmZzBQxjaGFyQWNjdXJhY3kJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCnN0YXRlQnVmZnMFDWNoYXJJbnRlbGxlY3QJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCnN0YXRlQnVmZnMFDWNoYXJFbmR1cmFuY2UJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCnN0YXRlQnVmZnMFDWNoYXJEZXh0ZXJpdHkFA25pbAEOZ2V0Um9iYmVyeURhdGECD3N0YWtpbmdDb250cmFjdAtkdWNrQXNzZXRJZAQLbGFzdFJvYkNvc3QJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPc3Rha2luZ0NvbnRyYWN0CQEYa2V5TGFzdFJvYmJlcnlDb3N0QnlEdWNrAQULZHVja0Fzc2V0SWQAAAQLbGFzdFJvYlRpbWUJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPc3Rha2luZ0NvbnRyYWN0CQEYa2V5TGFzdFJvYmJlcnlUaW1lQnlEdWNrAQULZHVja0Fzc2V0SWQAAAQDbm93CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQHcm9iQ29zdAkAlgMBCQDMCAIFDnJvYmJlcnlDb3N0TWluCQDMCAIJAGUCBQtsYXN0Um9iQ29zdAkAaAIFFHJvYmJlcnlDb29sZG93bkNvZWZmCQBlAgUDbm93BQtsYXN0Um9iVGltZQUDbmlsBAlkdWNrU3RhdGUJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPc3Rha2luZ0NvbnRyYWN0CQETa2V5RHVja1JvYmJlcnlTdGF0ZQEFC2R1Y2tBc3NldElkAAAECmxvY2tlZExhbmQJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUPc3Rha2luZ0NvbnRyYWN0CQETa2V5TG9ja2VkTGFuZEJ5RHVjawEFC2R1Y2tBc3NldElkAgAEB2xhbmRFVEEJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPc3Rha2luZ0NvbnRyYWN0CQESa2V5TGFuZENvb2xkb3duRVRBAQUKbG9ja2VkTGFuZAAACQCXCgUFB3JvYkNvc3QFC2xhc3RSb2JUaW1lBQlkdWNrU3RhdGUFCmxvY2tlZExhbmQFB2xhbmRFVEEACkxBTkRQUkVGSVgCBExBTkQACkRVQ0tQUkVGSVgCBERVQ0sACkFSVFBSRVNBTEUCB1BSRVNBTEUABk5VTVJFUwAGABhNQVhfTEFORFNfU1RBS0VEX0JZX1VTRVIAGQAPREFJTFlSRVNCWVBJRUNFAID40gEADFdITVVMVElQTElFUgCAyK+gJQAPREVGQVVMVExPQ0FUSU9OAg9BZnJpY2FfRl9BZnJpY2EAEFJFU09VUkNFUFJJQ0VNSU4A1bUCAApFU1NFTExDT0VGAAoAFU1JTl9VU0RUX0ZFRV9ERUxJVkVSWQDQhgMAElRFTl9NSU5VVEVTX01JTExJUwDAzyQAF0FMTE9XRURfRlJFRV9ERUxJVkVSSUVTAAEAGkFDUkVTX0ZPUl9ERUxJVkVSWV9BVFRFTVBUAIDh6xcACXByb2RUeXBlcwkAzAgCAhBGaXJzdCBBaWQgS2l0IEwxCQDMCAICEEZpcnN0IEFpZCBLaXQgTDIJAMwIAgIQRmlyc3QgQWlkIEtpdCBMMwkAzAgCAgtCYWNrcGFjayBMMQkAzAgCAgtCYWNrcGFjayBMMgkAzAgCAgtCYWNrcGFjayBMMwkAzAgCAg5Gb29kIFJhdGlvbiBMMQkAzAgCAg5Gb29kIFJhdGlvbiBMMgkAzAgCAg5Gb29kIFJhdGlvbiBMMwkAzAgCAgtKZXQgUGFjayBMMQkAzAgCAgtKZXQgUGFjayBMMgkAzAgCAgtKZXQgUGFjayBMMwkAzAgCAglTaGllbGQgTDEJAMwIAgIJU2hpZWxkIEwyCQDMCAICCVNoaWVsZCBMMwkAzAgCAgdNaW5lIEwxCQDMCAICB01pbmUgTDIJAMwIAgIHTWluZSBMMwkAzAgCAgdUcmFwIEwxCQDMCAICB1RyYXAgTDIJAMwIAgIHVHJhcCBMMwUDbmlsAApjb250aW5lbnRzCQDMCAICCEFtZXJpY2FzCQDMCAICBkV1cm9wZQkAzAgCAgRBc2lhCQDMCAICBkFmcmljYQkAzAgCAgdPY2VhbmlhBQNuaWwACUNPRUZGMk1BVACAreIEABBmb3J0QWxsb3dlZFByb2RzCQDMCAIADwkAzAgCABAJAMwIAgARCQDMCAIAEgkAzAgCABMJAMwIAgAUBQNuaWwAEHByb2R1Y3Rpb25NYXRyaXgJAMwIAgIlOF84XzhfMTdfMTdfNDJfMTJfMF8zMF8wLDAsMCwwLDAsMCwwXwkAzAgCAiU4XzhfOF8xN18xN180Ml8yNF8wXzYwXzAsMCw1LDIsMCwwLDBfCQDMCAICJzhfOF84XzE3XzE3XzQyXzM2XzBfMTIwXzAsMCwxMCw0LDAsMCwwXwkAzAgCAik4XzE5XzE5XzhfMjdfMTlfMjZfMV8yMF8wLDAsMCwwLDAsMCwwXzAwMQkAzAgCAik4XzE5XzE5XzhfMjdfMTlfNTJfMV80MF8wLDAsMCwwLDAsMCwwXzAwMQkAzAgCAik4XzE5XzE5XzhfMjdfMTlfNzhfMV84MF8wLDAsMCwwLDAsMCwwXzAwMQkAzAgCAiU4XzhfOF84XzhfNjBfMTNfMl8yXzAsMCwwLDAsMCwwLDBfMDExCQDMCAICJThfOF84XzhfOF82MF8yNl8yXzRfMCwwLDAsMCwwLDAsMF8wMTEJAMwIAgIlOF84XzhfOF84XzYwXzM5XzJfOF8wLDAsMCwwLDAsMCwwXzAxMQkAzAgCAikzMF8zMF8zXzE3XzE3XzNfMzBfM18zMF8wLDAsMCwwLDAsMCwwXzExMQkAzAgCAikzMF8zMF8zXzE3XzE3XzNfNjBfM181MF8wLDAsMCwwLDAsMCwwXzExMQkAzAgCAikzMF8zMF8zXzE3XzE3XzNfOTBfM183MF8wLDAsMCwwLDAsMCwwXzExMQkAzAgCAisxOF8xOF8xMF8xOF8xOF8xOF8xMV80XzEwXzAsMCwwLDAsMCwwLDBfMjAxCQDMCAICKzE4XzE4XzEwXzE4XzE4XzE4XzIyXzRfMjBfMCwwLDAsMCwwLDAsMF8yMDEJAMwIAgIrMThfMThfMTBfMThfMThfMThfMzNfNF8zMF8wLDAsMCwwLDAsMCwwXzIwMQkAzAgCAio0XzEzXzIyXzRfMzVfMjJfMjNfMF81MCwxLDBfMCwwLDAsMCwwLDAsMF8JAMwIAgIqNF8xM18yMl80XzM1XzIyXzQ2XzBfNTAsMSwxXzAsMiw1LDAsMCwwLDBfCQDMCAICKzRfMTNfMjJfNF8zNV8yMl82OV8wXzUwLDIsMV8wLDUsMTAsMCwwLDAsMF8JAMwIAgIqNV8yNV80MF81XzEwXzE1XzIwXzFfMzAsMSwxXzAsMCwwLDAsMCwwLDBfCQDMCAICKjVfMjVfNDBfNV8xMF8xNV80MF8xXzMwLDEsMl8yLDEsMywwLDAsMCwwXwkAzAgCAio1XzI1XzQwXzVfMTBfMTVfNjBfMV8zMCwxLDNfNSwyLDgsMCwwLDAsMF8FA25pbAAJcklkeENvZWZmAAYACnJJZHhFZmZlY3QACAAQcklkeFJlcXVpcmVtZW50cwAJAAlySWR4U2xvdHMACgAOUFJPRFVDVFBLR1NJWkUACgALd2hJZHhMZXZlbHMAAAAId2hJZHhSZXMAAQAId2hJZHhNYXQAAgAJd2hJZHhQcm9kAAMACXdoSWR4TE9GVAAEAAl2b2xMb2NrZWQAAAALdm9sT2NjdXBpZWQAAQAHdm9sRnJlZQACAAh2b2xUb3RhbAADAApicElkeExldmVsAAAACGJwSWR4UmVzAAEACGJwSWR4TWF0AAIACWJwSWR4UHJvZAADAA9sb2NJZHhDb250aW5lbnQAAAAKbG9jSWR4VHlwZQABAAhsb2NJZHhJZAACARVrZXlMYW5kQXNzZXRJZFRvT3duZXIBB2Fzc2V0SWQJAKwCAgIDbm9fBQdhc3NldElkARprZXlMYW5kQXNzZXRJZFRvQ3VzdG9tTmFtZQEHYXNzZXRJZAkArAICAgVsY25hXwUHYXNzZXRJZAEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEHYXNzZXRJZAkArAICAgNzdF8FB2Fzc2V0SWQBIGtleUxhbmRBcnRTdGF0dXNCeVR5cGVBbmRBc3NldElkAgR0eXBlB2Fzc2V0SWQJALkJAgkAzAgCAgNsYXMJAMwIAgUEdHlwZQkAzAgCBQdhc3NldElkBQNuaWwCAV8BImtleVN0YWtlZFRpbWVCeVR5cGVBc3NldElkQW5kT3duZXIDB25mdFR5cGUHYXNzZXRJZAlvd25lckFkZHIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAgZzdHRhb18FB25mdFR5cGUCAV8FB2Fzc2V0SWQCAV8FCW93bmVyQWRkcgESa2V5V2FyZWhvdXNlQnlMYW5kAQtsYW5kQXNzZXRJZAkArAICAgN3aF8FC2xhbmRBc3NldElkARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQdhc3NldElkCQCsAgICC2luZnJhTGV2ZWxfBQdhc3NldElkARdrZXlGb3J0aWZpY2F0aW9uc0J5TGFuZAELbGFuZEFzc2V0SWQJAKwCAgIPZm9ydGlmaWNhdGlvbnNfBQtsYW5kQXNzZXRJZAEaa2V5RHVja0Fzc2V0SWRUb0N1c3RvbU5hbWUBB2Fzc2V0SWQJAKwCAgIYZHVja0N1c3RvbU5hbWVCeUFzc2V0SWRfBQdhc3NldElkARZrZXlBZGRyZXNzVG9DdXN0b21OYW1lAQRhZGRyCQCsAgICGGFjY291bnRDdXN0b21OYW1lQnlBZGRyXwUEYWRkcgEPa2V5QWRkcmVzc1JlZkJ5AQRhZGRyCQCsAgICCWFjY1JlZkJ5XwUEYWRkcgEca2V5T25ib2FyZEFydEFjdGl2YXRlZE9uRHVjawELZHVja0Fzc2V0SWQJAKwCAgIab25ib2FyZEFydEFjdGl2YXRlZE9uRHVja18FC2R1Y2tBc3NldElkARxrZXlPbmJvYXJkQXJ0RHVja0FjdGl2YXRlZEJ5AQRhZGRyCQCsAgICGm9uYm9hcmRBcnRBY3RpdmF0ZWREdWNrQnlfBQRhZGRyARNrZXlBZGRyZXNzUmVmZXJyYWxzAQRhZGRyCQCsAgICDWFjY1JlZmVycmFsc18FBGFkZHIBEGtleUR1Y2tJZFRvT3duZXIBB2Fzc2V0SWQJAKwCAgIKZHVja093bmVyXwUHYXNzZXRJZAEUa2V5U3Rha2VkRHVja0J5T3duZXIBCW93bmVyQWRkcgkArAICAhJzdGFrZWREdWNrQnlPd25lcl8FCW93bmVyQWRkcgERa2V5QmFja3BhY2tCeUR1Y2sBC2R1Y2tBc3NldElkCQCsAgICCWJhY2tQYWNrXwULZHVja0Fzc2V0SWQBD2tleUR1Y2tMb2NhdGlvbgELZHVja0Fzc2V0SWQJAKwCAgINZHVja0xvY2F0aW9uXwULZHVja0Fzc2V0SWQBFWtleVVzZXJHd2xSZWxlYXNlVGltZQEIdXNlckFkZHIJAKwCAgIaJXMlc19fdXNlckd3bFJlbGVhc2VUaW1lX18FCHVzZXJBZGRyAQ5rZXlFc1dhcmVob3VzZQACGmVtZXJnZW5jeVdhcmVob3VzZVByb2R1Y3RzAA9kZWxpdmVyeUZ1bmRLZXkCDGRlbGl2ZXJ5RnVuZAARZGVsaXZlcnlMb2NrZWRLZXkCDmRlbGl2ZXJ5TG9ja2VkAA1sYXN0VG91cklkS2V5Ag4lc19fbGFzdFRvdXJJZAEVa2V5VG91clN0YXRpY0RhdGFCeUlkAQN0SWQJAKwCAgIWJXMlZF9fdG91clN0YXRpY0RhdGFfXwkApAMBBQN0SWQBFmtleVRvdXJEeW5hbWljRGF0YUJ5SWQBA3RJZAkArAICAhclcyVkX190b3VyRHluYW1pY0RhdGFfXwkApAMBBQN0SWQBGmtleUJlc3RSZXN1bHRCeVRvdXJBbmREdWNrAgN0SWQLZHVja0Fzc2V0SWQJALkJAgkAzAgCAh8lcyVkJXNfX2Jlc3RSZXN1bHRCeVRvdXJBbmREdWNrCQDMCAIJAKQDAQUDdElkCQDMCAIFC2R1Y2tBc3NldElkBQNuaWwCAl9fAAlpZHhTdGF0aWMAAAAKaWR4RHluYW1pYwABAAp0U3RhdGljRW5kAAYADnREeW5hbWljU3RhdHVzAAEBC2dldFRvdXJEYXRhAgx0b3VyQ29udHJhY3QDdElkBAZzdGF0aWMJALUJAgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFDHRvdXJDb250cmFjdAkBFWtleVRvdXJTdGF0aWNEYXRhQnlJZAEFA3RJZAkArAICCQCsAgICGUVycm9yIHJlYWRpbmcgdG91cm5hbWVudCAJAKQDAQUDdElkAgUgZGF0YQICX18EB2R5bmFtaWMJALwJAgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFDHRvdXJDb250cmFjdAkBFmtleVRvdXJEeW5hbWljRGF0YUJ5SWQBBQN0SWQJAKwCAgkArAICAhlFcnJvciByZWFkaW5nIHRvdXJuYW1lbnQgCQCkAwEFA3RJZAIFIGRhdGECAl9fCQDMCAIFBnN0YXRpYwkAzAgCBQdkeW5hbWljBQNuaWwBDmlzSW5Ub3VybmFtZW50Agx0b3VyQ29udHJhY3QIbG9jYXRpb24EBmxhc3RJZAkBC3ZhbHVlT3JFbHNlAgkAmggCBQx0b3VyQ29udHJhY3QFDWxhc3RUb3VySWRLZXkAAAQDbG9jCQC1CQIFCGxvY2F0aW9uAgFfBANub3cIBQlsYXN0QmxvY2sJdGltZXN0YW1wBAV0RGF0YQkBC2dldFRvdXJEYXRhAgUMdG91ckNvbnRyYWN0BQZsYXN0SWQEBnN0YXRpYwkAkQMCBQV0RGF0YQUJaWR4U3RhdGljBAdkeW5hbWljCQCRAwIFBXREYXRhBQppZHhEeW5hbWljAwMDCQAAAgkAkQMCBQNsb2MFCmxvY0lkeFR5cGUCAVQJAAACCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDbG9jBQ9sb2NJZHhDb250aW5lbnQFBmxhc3RJZAcJAAACCQCRAwIFB2R5bmFtaWMFDnREeW5hbWljU3RhdHVzAgpJTlBST0dSRVNTBwkAZgIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQZzdGF0aWMFCnRTdGF0aWNFbmQFA25vdwcBDGlzSW5EZWxpdmVyeQEIbG9jYXRpb24EA2xvYwkAtQkCBQhsb2NhdGlvbgIBXwQDbm93CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQJc3RhcnRUaW1lCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDbG9jBQ9sb2NJZHhDb250aW5lbnQECGRpc3RhbmNlCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDbG9jBQhsb2NJZHhJZAMDCQAAAgkAkQMCBQNsb2MFCmxvY0lkeFR5cGUCAUQJAGYCCQBkAgUJc3RhcnRUaW1lBRJURU5fTUlOVVRFU19NSUxMSVMFA25vdwcJAGcCAAMFCGRpc3RhbmNlBwEPaXNVc3VhbExvY2F0aW9uAQhsb2NhdGlvbgQHbG9jVHlwZQkAkQMCCQC1CQIFCGxvY2F0aW9uAgFfBQpsb2NJZHhUeXBlAwkBAiE9AgUHbG9jVHlwZQIBVAkBAiE9AgUHbG9jVHlwZQIBRAcBCW9uTWlzc2lvbgIMdG91ckNvbnRyYWN0CGxvY2F0aW9uBAZsYXN0SWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUMdG91ckNvbnRyYWN0BQ1sYXN0VG91cklkS2V5AAAEA2xvYwkAtQkCBQhsb2NhdGlvbgIBXwQDbm93CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQFdERhdGEJAQtnZXRUb3VyRGF0YQIFDHRvdXJDb250cmFjdAUGbGFzdElkBAZzdGF0aWMJAJEDAgUFdERhdGEFCWlkeFN0YXRpYwQHZHluYW1pYwkAkQMCBQV0RGF0YQUKaWR4RHluYW1pYwQHbG9jVHlwZQkAkQMCBQNsb2MFCmxvY0lkeFR5cGUDCQAAAgUHbG9jVHlwZQIBRAYDAwMJAAACCQCRAwIFA2xvYwUKbG9jSWR4VHlwZQIBVAkAAAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNsb2MFD2xvY0lkeENvbnRpbmVudAUGbGFzdElkBwkAAAIJAJEDAgUHZHluYW1pYwUOdER5bmFtaWNTdGF0dXMCCklOUFJPR1JFU1MHCQBmAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBnN0YXRpYwUKdFN0YXRpY0VuZAUDbm93BwESZ2V0UmVjaXBlTWF0ZXJpYWxzAQZyZWNpcGUJAGgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUGcmVjaXBlBQlySWR4Q29lZmYFCUNPRUZGMk1BVAEMY2hlYXRBdHRlbXB0AwZvbGRMb2MGbmV3TG9jCWNoZWF0Q2FzZQkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAhZDaGVhdCBhdHRlbXB0OiBvbGRMb2M9BQZvbGRMb2MCCSwgbmV3TG9jPQUGbmV3TG9jAgcsIGNhc2U9CQCkAwEFCWNoZWF0Q2FzZQAWS1NfU0VQQVJBVEVfUFVCTElDX0tFWQcAGEtTX0FMTE9XX0JJR19JTkZSQV9NRVJHRQcACkRBWV9NSUxMSVMAgLiZKQAFY2hhaW4JAMkBAgkAygECCAUEdGhpcwVieXRlcwABAAEAC3VzZHRBc3NldElkBAckbWF0Y2gwBQVjaGFpbgMJAAACAQFXBQckbWF0Y2gwASCE2nqyCAM/TtG7yo7ui5O8yYLdC136B5ao1CP5qA//uQMJAAACAQFUBQckbWF0Y2gwASBVsdifcoeC7+XjW42sBatl3ppDoS8WuwXzGreHpfHFGAkAAgECDVVua25vd24gY2hhaW4AFWRlZmF1bHRSZXN0QWRkcmVzc1N0cgQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMAIjM1BRQ3V2RmJ2aDRMa1BVbnJuVTF6M2puYkExcDltM1dOaHYDCQAAAgEBVAUHJG1hdGNoMAIjM011bWtHR3p0Q0tBWHBXRHF4a2Rkb2ZxWFNVYnFRa3ZTSnkJAAIBAg1Vbmtub3duIGNoYWluABFJbmZyYVVwZ3JhZGVDb3N0UwQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMACAyK+gJQMJAAACAQFUBQckbWF0Y2gwAIDC1y8JAAIBAg1Vbmtub3duIGNoYWluAA5hcmJpdHJhZ2VEZWxheQQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMAUKREFZX01JTExJUwMJAAACAQFUBQckbWF0Y2gwAODUAwkAAgECDVVua25vd24gY2hhaW4AE0RFTElWRVJZX1BVTklTSE1FTlQEByRtYXRjaDAFBWNoYWluAwkAAAIBAVcFByRtYXRjaDAAgJeTBQMJAAACAQFUBQckbWF0Y2gwAKD3NgkAAgECDVVua25vd24gY2hhaW4AA1NFUAICX18ABU1VTFQ2AMCEPQAFTVVMVDgAgMLXLwAFU1NJWkUAGQAFTVNJWkUAZAAFTFNJWkUA4QEABlhMU0laRQCQAwAHWFhMU0laRQDxBAAFSVRFUjYJAMwIAgAACQDMCAIAAQkAzAgCAAIJAMwIAgADCQDMCAIABAkAzAgCAAUFA25pbAEPZ2V0U3RyaW5nT3JGYWlsAgdhZGRyZXNzA2tleQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFB2FkZHJlc3MFA2tleQkAuQkCCQDMCAICCm1hbmRhdG9yeSAJAMwIAgkApQgBBQdhZGRyZXNzCQDMCAICAS4JAMwIAgUDa2V5CQDMCAICDyBpcyBub3QgZGVmaW5lZAUDbmlsAgAAEUlkeENmZ1N0YWtpbmdEYXBwAAEAEUlkeENmZ0Vjb25vbXlEYXBwAAIAFElkeENmZ0dvdmVybmFuY2VEYXBwAAMADUlkeENmZ1dsZ0RhcHAABAAUSWR4Q2ZnVG91cm5hbWVudERhcHAABwAPSWR4Q2ZnQWNyZXNEYXBwAAgBCmtleVJlc3RDZmcAAg4lc19fcmVzdENvbmZpZwEOa2V5UmVzdEFkZHJlc3MAAgwlc19fcmVzdEFkZHIBEXJlYWRSZXN0Q2ZnT3JGYWlsAQRyZXN0CQC8CQIJAQ9nZXRTdHJpbmdPckZhaWwCBQRyZXN0CQEKa2V5UmVzdENmZwAFA1NFUAEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgdyZXN0Q2ZnA2lkeAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUHcmVzdENmZwUDaWR4CQCsAgICKlJlc3QgY2ZnIGRvZXNuJ3QgY29udGFpbiBhZGRyZXNzIGF0IGluZGV4IAkApAMBBQNpZHgADHJlc3RDb250cmFjdAkBEUBleHRyTmF0aXZlKDEwNjIpAQkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzCQEOa2V5UmVzdEFkZHJlc3MABRVkZWZhdWx0UmVzdEFkZHJlc3NTdHIAB3Jlc3RDZmcJARFyZWFkUmVzdENmZ09yRmFpbAEFDHJlc3RDb250cmFjdAAPc3Rha2luZ0NvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUHcmVzdENmZwURSWR4Q2ZnU3Rha2luZ0RhcHAAD2Vjb25vbXlDb250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFB3Jlc3RDZmcFEUlkeENmZ0Vjb25vbXlEYXBwAAtnb3ZDb250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFB3Jlc3RDZmcFFElkeENmZ0dvdmVybmFuY2VEYXBwAAt3bGdDb250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFB3Jlc3RDZmcFDUlkeENmZ1dsZ0RhcHAAEnRvdXJuYW1lbnRDb250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFB3Jlc3RDZmcFFElkeENmZ1RvdXJuYW1lbnREYXBwAA1hY3Jlc0NvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUHcmVzdENmZwUPSWR4Q2ZnQWNyZXNEYXBwAApyZWNMYW5kTnVtAAAAC3JlY0xhbmRTaXplAAEAC3JlY1RlcnJhaW5zAAIADHJlY0NvbnRpbmVudAADAA13bGdBc3NldElkS2V5Agt3bGdfYXNzZXRJZAAKd2xnQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCcCAIFC3dsZ0NvbnRyYWN0BQ13bGdBc3NldElkS2V5AhhXTEdPTEQgaXMgbm90IGlzc3VlZCB5ZXQAD2FjcmVzQXNzZXRJZEtleQIMYWNyZXNBc3NldElkAAxhY3Jlc0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnAgCBQ1hY3Jlc0NvbnRyYWN0BQ9hY3Jlc0Fzc2V0SWRLZXkCF0FDUkVTIGlzIG5vdCBpc3N1ZWQgeWV0AAtyYW5kb21EZWxheQACAQlrZXlDb21taXQBB2FkZHJlc3MJAKwCAgITZmluaXNoQmxvY2tGb3JBZGRyXwUHYWRkcmVzcwERa2V5UmVzUHJvcG9ydGlvbnMAAhNyZXNUeXBlc1Byb3BvcnRpb25zARZrZXlSZXNUeXBlc0J5Q29udGluZW50AQljb250aW5lbnQJAKwCAgIUcmVzVHlwZXNCeUNvbnRpbmVudF8FCWNvbnRpbmVudAEVa2V5U3Rha2VkTGFuZHNCeU93bmVyAQlvd25lckFkZHIJAKwCAgITc3Rha2VkTGFuZHNCeU93bmVyXwUJb3duZXJBZGRyARZrZXlTdGFrZWRQaWVjZXNCeU93bmVyAQlvd25lckFkZHIJAKwCAgIUc3Rha2VkUGllY2VzQnlPd25lcl8FCW93bmVyQWRkcgEIYXNTdHJpbmcBAXYEByRtYXRjaDAFAXYDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFzBQckbWF0Y2gwBQFzCQACAQIYZmFpbCB0byBjYXN0IGludG8gU3RyaW5nAQVhc0ludAEBdgQHJG1hdGNoMAUBdgMJAAECBQckbWF0Y2gwAgNJbnQEAW4FByRtYXRjaDAFAW4JAAIBAhVmYWlsIHRvIGNhc3QgaW50byBJbnQBCWFzQW55TGlzdAEBdgQHJG1hdGNoMAUBdgMJAAECBQckbWF0Y2gwAglMaXN0W0FueV0EAWwFByRtYXRjaDAFAWwJAAIBAhtmYWlsIHRvIGNhc3QgaW50byBMaXN0W0FueV0BCWFzQm9vbGVhbgEBdgQHJG1hdGNoMAUBdgMJAAECBQckbWF0Y2gwAgdCb29sZWFuBAFzBQckbWF0Y2gwBQFzCQACAQIZZmFpbCB0byBjYXN0IGludG8gQm9vbGVhbgEPbnVtUGllY2VzQnlTaXplAQhsYW5kU2l6ZQQHJG1hdGNoMAUIbGFuZFNpemUDCQAAAgIBUwUHJG1hdGNoMAUFU1NJWkUDCQAAAgIBTQUHJG1hdGNoMAUFTVNJWkUDCQAAAgIBTAUHJG1hdGNoMAUFTFNJWkUDCQAAAgICWEwFByRtYXRjaDAFBlhMU0laRQMJAAACAgNYWEwFByRtYXRjaDAFB1hYTFNJWkUJAAIBAhFVbmtub3duIGxhbmQgc2l6ZQEHaXNEaWdpdAEBcwkBCWlzRGVmaW5lZAEJALYJAQUBcwEKa2V5QmxvY2tlZAACEGNvbnRyYWN0c0Jsb2NrZWQBEWtleUxhc3RUeElkQnlVc2VyAQRhZGRyCQCsAgICD2xhc3RUeElkQnlVc2VyXwUEYWRkcgEKZml4ZWRQb2ludAIDdmFsCGRlY2ltYWxzBAZ0ZW5Qb3cJAGwGAAoAAAUIZGVjaW1hbHMAAAAABQRET1dOBAdsb3dQYXJ0CQCkAwEJAGoCBQN2YWwFBnRlblBvdwQGemVyb2VzCQCwAgIJAKQDAQUGdGVuUG93CQBkAgABCQCxAgEFB2xvd1BhcnQJAKwCAgkArAICCQCsAgIJAKQDAQkAaQIFA3ZhbAUGdGVuUG93AgEuBQZ6ZXJvZXMFB2xvd1BhcnQBD2dldFJhbmRvbU51bWJlcgMIbWF4VmFsdWUEc2FsdAdlbnRyb3B5BApyYW5kb21IYXNoCQD3AwEJAMsBAgUEc2FsdAUHZW50cm9weQkAagIJALEJAQUKcmFuZG9tSGFzaAUIbWF4VmFsdWUADWluY3ViYXRvckFkZHIEByRtYXRjaDAFBWNoYWluAwkAAAIBAVcFByRtYXRjaDAJARFAZXh0ck5hdGl2ZSgxMDYyKQECIzNQRWt0VnV4MlJoY2hTTjYzRHNEbzRiNG16NFFxektTZUR2AwkAAAIBAVQFByRtYXRjaDAFBHRoaXMJAAIBAg1Vbmtub3duIGNoYWluAAticmVlZGVyQWRkcgQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMAkBEUBleHRyTmF0aXZlKDEwNjIpAQIjM1BEVnVVNDVIN0VoNWRtdE5iblJOUlN0R3dVTEE3Tlk2SGIDCQAAAgEBVAUHJG1hdGNoMAUEdGhpcwkAAgECDVVua25vd24gY2hhaW4AA3B1YgQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMAMFFktTX1NFUEFSQVRFX1BVQkxJQ19LRVkBIKsXV48VZ+NZVEGw1nLrZpvEo9NmXtWZhlDfmDcfsgkIASBPU+IaP1So1p1SThMdRidVvbNT8yx7yVRUsP9DwbQUKAMJAAACAQFUBQckbWF0Y2gwASBPU+IaP1So1p1SThMdRidVvbNT8yx7yVRUsP9DwbQUKAkAAgECDVVua25vd24gY2hhaW4ADEVNUFRZX1BST0Q1MAGQAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEUZJVkVNSU5VVEVTTUlMTElTAOCnEgAMUkVOQU1JTkdDT1NUAMCWsQIACk1BWE5BTUVMRU4AMgAVSW5mcmFVcGdyYWRlQ29zdFNVc2R0AICt4gQADEVYUE1BVEVSSUFMUwQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMACm3YLtqwcDCQAAAgEBVAUHJG1hdGNoMACqp4GzCQkAAgECDVVua25vd24gY2hhaW4AB0VYUFVTRFQEByRtYXRjaDAFBWNoYWluAwkAAAIBAVcFByRtYXRjaDAAgOWadwMJAAACAQFUBQckbWF0Y2gwAIDlmncJAAIBAg1Vbmtub3duIGNoYWluAAxTX0NPU1RfQUNSRVMAgPKLqAkABUZJVkVYCQC2AgEABQAHVFdFTlRZWAkAtgIBABQACFRXRU5UWTJYCQC2AgEJAGgCABQAFAAIVFdFTlRZM1gJALYCAQkAaAIJAGgCABQAFAAUAAhUV0VOVFk0WAkAtgIBCQBoAgkAaAIJAGgCABQAFAAUABQACFRXRU5UWTVYCQC2AgEJAGgCCQBoAgkAaAIJAGgCABQAFAAUABQAFAAPUFJFU0FMRU5VTUxBTkRTAPQDARJrZXlOZXh0RnJlZUxhbmROdW0AAgtuZXh0TGFuZE51bQEaa2V5TGFuZEN1c3RvbU5hbWVUb0Fzc2V0SWQBBG5hbWUJAKwCAgIEbGNuXwUEbmFtZQEQa2V5TGFuZFRvQXNzZXRJZAEHbGFuZE51bQkArAICAgNsYV8FB2xhbmROdW0BHmtleUluZnJhTGV2ZWxCeUFzc2V0SWRBbmRPd25lcgIHYXNzZXRJZAlvd25lckFkZHIJAKwCAgkArAICCQCsAgICBWlsYW9fBQdhc3NldElkAgFfBQlvd25lckFkZHIBEWtleUxhbmROdW1Ub093bmVyAQdsYW5kTnVtCQCsAgICA2xvXwUHbGFuZE51bQEaa2V5RHVja0N1c3RvbU5hbWVUb0Fzc2V0SWQBBG5hbWUJAKwCAgIRZHVja0J5Q3VzdG9tTmFtZV8FBG5hbWUBFmtleUN1c3RvbU5hbWVUb0FkZHJlc3MBBG5hbWUJAKwCAgIUYWNjb3VudEJ5Q3VzdG9tTmFtZV8FBG5hbWUBCWtleU9sZGllcwACCm9sZGllc0xpc3QAC2NsYWltTW9kZVdoAAAADWNsYWltTW9kZUR1Y2sAAQATY2xhaW1Nb2RlV2hUaGVuRHVjawACAAhmbEhlYWx0aAAAAAtmbFRpbWVzdGFtcAAFAAdmbEJvbnVzAAYAC2ZsUHJvZHNVc2VkAAcBB25mdE5hbWUCB2xhbmROdW0IbGFuZFNpemUJAKwCAgkArAICBQpMQU5EUFJFRklYBQdsYW5kTnVtBQhsYW5kU2l6ZQEIdG9Wb2x1bWUCBmFtb3VudAdwa2dTaXplBARwa2dzAwkAZwIFBmFtb3VudAAACQBpAgkAZQIJAGQCBQZhbW91bnQFB3BrZ1NpemUAAQUHcGtnU2l6ZQkBAS0BCQBpAgkAZQIJAGQCCQEBLQEFBmFtb3VudAUHcGtnU2l6ZQABBQdwa2dTaXplCQBoAgUEcGtncwUFTVVMVDgBE2Rpc3RyaWJ1dGVCeVdlaWdodHMCBXRvdGFsB3dlaWdodHMEA3N1bQkAZAIJAGQCCQBkAgkAZAIJAGQCCQCRAwIFB3dlaWdodHMAAAkAkQMCBQd3ZWlnaHRzAAEJAJEDAgUHd2VpZ2h0cwACCQCRAwIFB3dlaWdodHMAAwkAkQMCBQd3ZWlnaHRzAAQJAJEDAgUHd2VpZ2h0cwAFAwkAZwIAAAUDc3VtCQACAQIQWmVybyB3ZWlnaHRzIHN1bQQFbm9ybTYJAGsDBQV0b3RhbAUFTVVMVDYFA3N1bQoBCm5vcm1hbGl6ZXICA2FjYwRlbGVtCQDNCAIFA2FjYwkAawMFBGVsZW0FBW5vcm02BQVNVUxUNgoAAiRsBQd3ZWlnaHRzCgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQpub3JtYWxpemVyAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA2CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGARJnZXROZWVkZWRNYXRlcmlhbHMBBXRvdGFsBAVwcm9wcwkAtQkCCQEFdmFsdWUBCQCiCAEJARFrZXlSZXNQcm9wb3J0aW9ucwACAV8DCQECIT0CCQCQAwEFBXByb3BzBQZOVU1SRVMJAAIBAhZXcm9uZyBwcm9wb3J0aW9ucyBkYXRhBAFyCQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwcm9wcwAACQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwcm9wcwABCQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwcm9wcwACCQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwcm9wcwADCQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwcm9wcwAECQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwcm9wcwAFBQNuaWwJARNkaXN0cmlidXRlQnlXZWlnaHRzAgUFdG90YWwFAXIBEXN1YnRyYWN0TWF0ZXJpYWxzAwxzaG91bGRVc2VNYXQDaGFzCXRvdGFsTmVlZAQEbmVlZAkBEmdldE5lZWRlZE1hdGVyaWFscwEFCXRvdGFsTmVlZAoBCnN1YnRyYWN0b3ICA2FjYwNpZHgEBnJlc3VsdAkAZQIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNoYXMFA2lkeAkAkQMCBQRuZWVkBQNpZHgDCQBmAgAABQZyZXN1bHQJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIYTm90IGVub3VnaCBtYXRlcmlh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BGhlYWQJAMkBAgUFcExpc3QJAGgCAAgFCnByb2R1Y3RJZHgEBGN1cnIJALEJAQkAyQECCQDKAQIFBXBMaXN0CQBoAgAIBQpwcm9kdWN0SWR4AAgEBHRhaWwJAMoBAgUFcExpc3QJAGgCAAgJAGQCBQpwcm9kdWN0SWR4AAEEBnJlY2lwZQkAtQkCCQCRAwIFEHByb2R1Y3Rpb25NYXRyaXgFCnByb2R1Y3RJZHgCAV8DAwkBASEBBQppc1Bvc2l0aXZlCQBmAgUFY291bnQFBGN1cnIHCQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgICCVlvdSBoYXZlIAkApAMBBQRjdXJyAgQgb2YgCQCRAwIFCXByb2RUeXBlcwUKcHJvZHVjdElkeAITLCBidXQgdHJpZWQgdG8gdXNlIAkApAMBBQVjb3VudAQGbmV3QW10AwMJAQEhAQUKaXNQb3NpdGl2ZQkBFWNoZWNrU3RhdFJlcXVpcmVtZW50cwIFCWR1Y2tTdGF0cwkAtQkCCQCRAwIFBnJlY2lwZQUQcklkeFJlcXVpcmVtZW50cwIBLAcJAGUCBQRjdXJyBQVjb3VudAkAZAIFBGN1cnIFBWNvdW50BAhkZWx0YVZvbAkAZQIJAQh0b1ZvbHVtZQIFBm5ld0FtdAUOUFJPRFVDVFBLR1NJWkUJAQh0b1ZvbHVtZQIFBGN1cnIFDlBST0RVQ1RQS0dTSVpFCQCVCgMJAMsBAgkAywECBQRoZWFkCQCaAwEFBm5ld0FtdAUEdGFpbAkAZAIFCG9jY3VwaWVkBQhkZWx0YVZvbAkAZQIFBGZyZWUFCGRlbHRhVm9sAQhhZGRQcm9kQgcGaWR4Q250BXBMaXN0CmlzUG9zaXRpdmUHc2VnbWVudAdtYWluQXV4BHNsb3QJZHVja1N0YXRzBAVwYXJ0cwkAtQkCBQZpZHhDbnQCAToDCQECIT0CCQCQAwEFBXBhcnRzAAIJAAIBAihJbmNvcnJlY3QgZm9ybWF0LCBzaG91bGQgYmUgaW5kZXg6YW1vdW50AwMJAQEhAQUKaXNQb3NpdGl2ZQkBAiE9AgkAsQIBCQCRAwIFBXBhcnRzAAAAAgcJAAIBAitQcm9kdWN0IGlkeCBzaG91bGQgYmUgMiBkaWdpdHMsIHplcm8gcGFkZGVkBApwcm9kdWN0SWR4CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFcGFydHMAAAQFY291bnQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwYXJ0cwABAwMJAGYCAAAFCnByb2R1Y3RJZHgGCQBnAgUKcHJvZHVjdElkeAkAkAMBBRBwcm9kdWN0aW9uTWF0cml4CQACAQITVW5rbm93biBwcm9kdWN0IGlkeAMJAGYCAAAFBWNvdW50CQACAQIXQ291bnQgY2FuJ3QgYmUgbmVnYXRpdmUDCQBmAgUFY291bnQFDU1BWFBST0RJTlNMT1QJAAIBCQCsAgIJAKwCAgkArAICAhRDYW4ndCBwdXQgbW9yZSB0aGFuIAkApAMBBQ1NQVhQUk9ESU5TTE9UAgQgb2YgCQCRAwIFCXByb2RUeXBlcwUKcHJvZHVjdElkeAMJAAACBQVjb3VudAAACQCUCgIFBXBMaXN0BwQEaGVhZAkAyQECBQVwTGlzdAkAaAIACAUKcHJvZHVjdElkeAQEY3VycgkAsQkBCQDJAQIJAMoBAgUFcExpc3QJAGgCAAgFCnByb2R1Y3RJZHgACAQEdGFpbAkAygECBQVwTGlzdAkAaAIACAkAZAIFCnByb2R1Y3RJZHgAAQQGcmVjaXBlCQC1CQIJAJEDAgUQcHJvZHVjdGlvbk1hdHJpeAUKcHJvZHVjdElkeAIBXwMDCQEBIQEFCmlzUG9zaXRpdmUJAGYCBQVjb3VudAUEY3VycgcJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIJWW91IGhhdmUgCQCkAwEFBGN1cnICBCBvZiAJAJEDAgUJcHJvZFR5cGVzBQpwcm9kdWN0SWR4AhMsIGJ1dCB0cmllZCB0byB1c2UgCQCkAwEFBWNvdW50BAlpc0JpZ0l0ZW0DAwkBASEBBQppc1Bvc2l0aXZlCQEVY2hlY2tTdGF0UmVxdWlyZW1lbnRzAgUJZHVja1N0YXRzCQC1CQIJAJEDAgUGcmVjaXBlBRBySWR4UmVxdWlyZW1lbnRzAgEsBwQGY29tcGF0CQCRAwIFBnJlY2lwZQUJcklkeFNsb3RzAwkAAAIFBmNvbXBhdAIACQACAQIXSXRlbSBjYW5ub3QgYmUgZXF1aXBwZWQEAWMJAQ1wYXJzZUludFZhbHVlAQUGY29tcGF0BARjU2VnCQBpAgUBYwBkAwkBAiE9AgUHc2VnbWVudAUEY1NlZwkAAgECFFNlZ21lbnQgaW5jb21wYXRpYmxlBAhjTWFpbkF1eAkAaQIJAGoCBQFjAGQACgMJAQIhPQIFB21haW5BdXgFCGNNYWluQXV4CQACAQIRU2xvdCBpbmNvbXBhdGlibGUECWNOdW1TbG90cwkAagIFAWMACgMDCQECIT0CBQRzbG90AAAJAGYCBQljTnVtU2xvdHMAAQcJAAIBAh5CaWcgaXRlbXMgc2hvdWxkIG9jY3VweSBzbG90IDAJAGYCBQljTnVtU2xvdHMAAQcJAJQKAgkAywECCQDLAQIFBGhlYWQJAJoDAQkAZAIFBGN1cnIDBQppc1Bvc2l0aXZlBQVjb3VudAkBAS0BBQVjb3VudAUEdGFpbAUJaXNCaWdJdGVtAQtzbG90c0dyb3VwQgYBZwRicEluCmlzUG9zaXRpdmUHc2VnbWVudAdtYWluQXV4BXN0YXRzAwkBAiE9AgUBZwIABAVzbG90cwkAtQkCBQFnAgEsAwkAZgIJAJADAQUFc2xvdHMFCE1BWFNMT1RTCQACAQISV3Jvbmcgc2xvdHMgZm9ybWF0BAJzMAkAkQMCBQVzbG90cwAABAJzMQMJAGYCCQCQAwEFBXNsb3RzAAEJAJEDAgUFc2xvdHMAAQIAAwMJAAACBQJzMAIACQAAAgUCczECAAcFBGJwSW4EBXRtcFMwAwkBAiE9AgUCczACAAkBCGFkZFByb2RCBwUCczAFBGJwSW4FCmlzUG9zaXRpdmUFB3NlZ21lbnQFB21haW5BdXgAAAUFc3RhdHMJAJQKAgUEYnBJbgcDCQECIT0CBQJzMQIAAwgFBXRtcFMwAl8yCQACAQIeQmlnIGl0ZW0gYWxyZWFkeSBvY2N1cGllcyBzbG90CAkBCGFkZFByb2RCBwUCczEIBQV0bXBTMAJfMQUKaXNQb3NpdGl2ZQUHc2VnbWVudAUHbWFpbkF1eAABBQVzdGF0cwJfMQgFBXRtcFMwAl8xBQRicEluAQZkcmVzc0IEB3NlZ0xpc3QGcEJ5dGVzCmlzUG9zaXRpdmUFc3RhdHMKAQdzZWdtZW50AgNhY2MDc2VnBAFqCAUDYWNjAl8xBAdtYWluQXV4CQC1CQIFA3NlZwIBOwMJAQIhPQIJAJADAQUHbWFpbkF1eAUKTlVN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cQUJdGVtcFByb2RCBwUFc3RhdHMJAAACBQhuZXdQcm9kQgUIbmV3UHJvZEIBGXVwZGF0ZVByb3BvcnRpb25zSW50ZXJuYWwECHByb3BMaXN0DXRlcnJhaW5Db3VudHMNbGFuZFNpemVJbmRleARzaWduAwkBAiE9AgkAkAMBBQhwcm9wTGlzdAUGTlVNUkVTCQACAQIWV3JvbmcgcHJvcG9ydGlvbnMgZGF0YQoBB3VwZGF0ZXICA2FjYwFpBAZyZXN1bHQJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUIcHJvcExpc3QFAWkJAGgCCQBoAgUEc2lnbgkAkQMCBQ10ZXJyYWluQ291bnRzBQFpBQ1sYW5kU2l6ZUluZGV4AwkAZgIAAAUGcmVzdWx0CQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAhZQYW5pYyEgUGllY2VzIG9mIHR5cGU9CQCkAwEFAWkCBywgc2lnbj0JAKQDAQUEc2lnbgITLCB0ZXJyYWluQ291bnRzW2ldPQkApAMBCQCRAwIFDXRlcnJhaW5Db3VudHMFAWkCECwgbGFuZFNpemVJbmRleD0JAKQDAQUNbGFuZFNpemVJbmRleAkAzQgCBQNhY2MJAKQDAQUGcmVzdWx0CgACJGwFBUlURVI2CgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQd1cGRhdGVyAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA2CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGARF1cGRhdGVQcm9wb3J0aW9ucwMNdGVycmFpbkNvdW50cw1sYW5kU2l6ZUluZGV4BHNpZ24ECHByb3BMaXN0CQC1CQIJAQt2YWx1ZU9yRWxzZQIJAKIIAQkBEWtleVJlc1Byb3BvcnRpb25zAAILMF8wXzBfMF8wXzACAV8JALkJAgkBGXVwZGF0ZVByb3BvcnRpb25zSW50ZXJuYWwEBQhwcm9wTGlzdAUNdGVycmFpbkNvdW50cwUNbGFuZFNpemVJbmRleAUEc2lnbgIBXwENY291bnRUZXJyYWlucwEIdGVycmFpbnMJAMwIAgkAZQIJAJADAQkAtQkCBQh0ZXJyYWlucwIBQQABCQDMCAIJAGUCCQCQAwEJALUJAgUIdGVycmFpbnMCAUIAAQkAzAgCCQBlAgkAkAMBCQC1CQIFCHRlcnJhaW5zAgFDAAEJAMwIAgkAZQIJAJADAQkAtQkCBQh0ZXJyYWlucwIBRAABCQDMCAIJAGUCCQCQAwEJALUJAgUIdGVycmFpbnMCAUUAAQkAzAgCCQBlAgkAkAMBCQC1CQIFCHRlcnJhaW5zAgFGAAEFA25pbAEGYWRkUmVzBQpjdXJyZW50UmVzDXRlcnJhaW5Db3VudHMJZGVsdGFUaW1lDWxhbmRTaXplSW5kZXgXZGFpbHlCeVBpZWNlV2l0aEJvbnVzZXMKAQVhZGRlcgIDYWNjAWkECXJlc09mVHlwZQkAaAIJAGgCCQBrAwUJZGVsdGFUaW1lBRdkYWlseUJ5UGllY2VXaXRoQm9udXNlcwUJREFZTUlMTElTCQCRAwIFDXRlcnJhaW5Db3VudHMFAWkFDWxhbmRTaXplSW5kZXgJAM0IAgUDYWNjCQCkAwEJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKY3VycmVudFJlcwUBaQUJcmVzT2ZUeXBlBAFyCgACJGwFBUlURVI2CgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQVhZGRlcgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNgkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgkAuQkCBQFyAgFfAQl2aXJ0Q2xhaW0EDXRlcnJhaW5Db3VudHMJZGVsdGFUaW1lDWxhbmRTaXplSW5kZXgXZGFpbHlCeVBpZWNlV2l0aEJvbnVzZXMKAQVhZGRlcgIDYWNjAWkECXJlc09mVHlwZQkAaAIJAGgCCQBrAwUJZGVsdGFUaW1lBRdkYWlseUJ5UGllY2VXaXRoQm9udXNlcwUJREFZTUlMTElTCQCRAwIFDXRlcnJhaW5Db3VudHMFAWkFDWxhbmRTaXplSW5kZXgJAJQKAgkAzQgCCAUDYWNjAl8xBQlyZXNPZlR5cGUJAGQCCAUDYWNjAl8yBQlyZXNPZlR5cGUKAAIkbAUFSVRFUjYKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCUCgIFA25pbAAACgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQVhZGRlcgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNgkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgENZGlzdHJpYnV0ZVJlcwQMY3VycmVudFdoUmVzDmN1cnJlbnRQYWNrUmVzCnJlc1RvQ2xhaW0Ld2hTcGFjZUxlZnQEDnJlc0xpc3RUb0NsYWltCAUKcmVzVG9DbGFpbQJfMQQMcmVzQW1Ub0NsYWltCAUKcmVzVG9DbGFpbQJfMgMJAAACBQxyZXNBbVRvQ2xhaW0AAAkAlAoCCQC5CQIFDGN1cnJlbnRXaFJlcwIBXwkAuQkCBQ5jdXJyZW50UGFja1JlcwIBXwMJAGcCBQt3aFNwYWNlTGVmdAUMcmVzQW1Ub0NsYWltCgEIYWRkTGlzdHMCA2FjYwFpCQDNCAIFA2FjYwkApAMBCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFDGN1cnJlbnRXaFJlcwUBaQkAkQMCBQ5yZXNMaXN0VG9DbGFpbQUBaQQBcgoAAiRsBQVJVEVSNgoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEIYWRkTGlzdHMCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDYJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYJAJQKAgkAuQkCBQFyAgFfCQC5CQIFDmN1cnJlbnRQYWNrUmVzAgFfCgEMYWRkUGFydExpc3RzAgNhY2MBaQQGd2hQYXJ0CQBrAwkAkQMCBQ5yZXNMaXN0VG9DbGFpbQUBaQULd2hTcGFjZUxlZnQFDHJlc0FtVG9DbGFpbQkAlAoCCQDNCAIIBQNhY2MCXzEJAKQDAQkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQxjdXJyZW50V2hSZXMFAWkFBndoUGFydAkAzQgCCAUDYWNjAl8yCQCkAwEJAGUCCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFDmN1cnJlbnRQYWNrUmVzBQFpCQCRAwIFDnJlc0xpc3RUb0NsYWltBQFpBQZ3aFBhcnQEAXIKAAIkbAUFSVRFUjYKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCUCgIFA25pbAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQxhZGRQYXJ0TGlzdHMCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDYJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYJAJQKAgkAuQkCCAUBcgJfMQIBXwkAuQkCCAUBcgJfMgIBXwEDYWJzAQF4AwkAwAICBQF4CQC2AgEAAAUBeAkAvgIBBQF4AARmcmVxCQDMCAIJAMwIAgAGCQDMCAIACQkAzAgCAA4JAMwIAgAPCQDMCAIAEAUDbmlsCQDMCAIJAMwIAgAFCQDMCAIACAkAzAgCAA0JAMwIAgAOCQDMCAIADwUDbmlsCQDMCAIJAMwIAgABCQDMCAIABAkAzAgCAAkJAMwIAgAKCQDMCAIADwUDbmlsCQDMCAIJAMwIAgABCQDMCAIABgkAzAgCAAcJAMwIAgAPCQDMCAIAEwUDbmlsCQDMCAIJAMwIAgAECQDMCAIABwkAzAgCAAgJAMwIAgANCQDMCAIAEgUDbmlsBQNuaWwBB2dlbkNoYXICAW4FZnJlcXMEA3JlbQkAoAMBCQC7AgIFAW4FB1RXRU5UWVgEBmxldHRlcgMJAGYCCQCRAwIFBWZyZXFzAAAFA3JlbQIBQQMJAGYCCQCRAwIFBWZyZXFzAAEFA3JlbQIBQgMJAGYCCQCRAwIFBWZyZXFzAAIFA3JlbQIBQwMJAGYCCQCRAwIFBWZyZXFzAAMFA3JlbQIBRAMJAGYCCQCRAwIFBWZyZXFzAAQFA3JlbQIBRQIBRgUGbGV0dGVyAQtnZW5UZXJyYWlucwIEc2VlZAxjb250aW5lbnRJZHgEAWYJAJEDAgUEZnJlcQUMY29udGluZW50SWR4CgEQdGVycmFpbkdlbmVyYXRvcgIDYWNjBGVsZW0JAJQKAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIIBQNhY2MCXzEJAQdnZW5DaGFyAggFA2FjYwJfMgUBZgkBB2dlbkNoYXICCQC6AgIIBQNhY2MCXzIFB1RXRU5UWVgFAWYJAQdnZW5DaGFyAgkAugICCAUDYWNjAl8yBQhUV0VOVFkyWAUBZgkBB2dlbkNoYXICCQC6AgIIBQNhY2MCXzIFCFRXRU5UWTNYBQFmCQEHZ2VuQ2hhcgIJALoCAggFA2FjYwJfMgUIVFdFTlRZNFgFAWYJALoCAggFA2FjYwJfMgUIVFdFTlRZNVgEAXQKAAIkbAkAzAgCAAEJAMwIAgACCQDMCAIAAwkAzAgCAAQJAMwIAgAFBQNuaWwKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCUCgICAAkAugICBQRzZWVkBQVGSVZFWAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEQdGVycmFpbkdlbmVyYXRvcgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNQkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUIBQF0Al8xAAZQRVJNMjUJAMwIAgAHCQDMCAIAAgkAzAgCAA8JAMwIAgATCQDMCAIACAkAzAgCABgJAMwIAgABCQDMCAIAFQkAzAgCABAJAMwIAgAFCQDMCAIAAAkAzAgCABYJAMwIAgAUCQDMCAIAFwkAzAgCAAsJAMwIAgAECQDMCAIAEgkAzAgCAAwJAMwIAgAGCQDMCAIACgkAzAgCAAMJAMwIAgARCQDMCAIADQkAzAgCAAkJAMwIAgAOBQNuaWwABlRDSEFSUwkAzAgCAgFBCQDMCAICAUIJAMwIAgIBQwkAzAgCAgFECQDMCAICAUUJAMwIAgIBRgUDbmlsARNnZW5UZXJyYWluc0Zvck1lcmdlAgtzdW1UZXJyYWlucw1sYW5kU2l6ZUluZGV4CgEFc3RlcDECA2FjYwFzBAFqCAUDYWNjAl8yBAJlbAkBDXBhcnNlSW50VmFsdWUBBQFzBAF4AwkAAAIFAmVsAAAAAAMJAGcCBQJlbAkAaAIABAUNbGFuZFNpemVJbmRleAkAaQIFAmVsBQ1sYW5kU2l6ZUluZGV4AwkAZgIFAmVsCQBoAgADBQ1sYW5kU2l6ZUluZGV4AAMJAGQCCQBpAgkAZQIFAmVsAAEFDWxhbmRTaXplSW5kZXgAAQkAlQoDCQDNCAIIBQNhY2MCXzEFAXgJAGQCCAUDYWNjAl8yAAEJAGQCCAUDYWNjAl8zBQF4BAF0CgACJGwFC3N1bVRlcnJhaW5zCgACJHMJAJADAQUCJGwKAAUkYWNjMAkAlQoDBQNuaWwAAAAACgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQVzdGVwMQIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNgkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgQDYXJyCAUBdAJfMQQGbWF4SWR4CQEFdmFsdWUBCQDPCAIFA2FycgkAlgMBBQNhcnIEBWRlbHRhCQBlAggFAXQCXzMAGQoBBnN1YmJlcgIDYWNjA2lkeAQDdmFsAwkAAAIFA2lkeAUGbWF4SWR4CQBlAgkAkQMCBQNhcnIFA2lkeAUFZGVsdGEJAJEDAgUDYXJyBQNpZHgEBnplcm9lcwMJAAACBQN2YWwAAAUDbmlsCQC1CQIJALACAgkApAMBCQBsBgAKAAAFA3ZhbAAAAAAFBERPV04AAQIABAFjCQCRAwIFBlRDSEFSUwUDaWR4CgEHbGlzdEdlbgICYWMHaWdub3JlZAkAzQgCBQJhYwUBYwQBegoAAiRsBQZ6ZXJvZXMKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjFfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBB2xpc3RHZW4CBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjFfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDI1CQEFJGYxXzICCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAAVABYAFwAYABkJAM4IAgUDYWNjBQF6BAFyCgACJGwFBUlURVI2CgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYxXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQZzdWJiZXICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjFfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDYJAQUkZjFfMgIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYKAQZwZXJtdXQCA2FjYwFqCQCsAgIFA2FjYwkAkQMCBQFyBQFqCgACJGwFBlBFUk0yNQoAAiRzCQCQAwEFAiRsCgAFJGFjYzACAAoBBSRmMl8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEGcGVybXV0AgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYyXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAyNQkBBSRmMl8yAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZAQtnZXRCYWNrcGFjawEFYnBLZXkEAXAJALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBBQVicEtleQIaMDowXzBfMF8wXzBfMDowXzBfMF8wXzBfMDoCAToJAMwIAgkApAMBCQELdmFsdWVPckVsc2UCCQC2CQEJAJEDAgUBcAUKYnBJZHhMZXZlbAAACQDMCAIDCQAAAgkAkAMBCQC1CQIJAJEDAgUBcAUIYnBJZHhSZXMCAV8FBk5VTVJFUwkAkQMCBQFwBQhicElkeFJlcwILMF8wXzBfMF8wXzAJAMwIAgMJAAACCQCQAwEJALUJAgkAkQMCBQFwBQhicElkeE1hdAIBXwUGTlVNUkVTCQCRAwIFAXAFCGJwSWR4TWF0AgswXzBfMF8wXzBfMAkAzAgCCQCRAwIFAXAFCWJwSWR4UHJvZAUDbmlsARdnZXRXYXJlaG91c2VUb3RhbFZvbHVtZQEJdm9sUHJlZml4BAVwYXJ0cwkAtQkCBQl2b2xQcmVmaXgCAV8JAGgCCQBoAgUMV0hNVUxUSVBMSUVSCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXBhcnRzAAEAAQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXBhcnRzAAABF2dldFdhcmVob3VzZU9jY3VwaWVkVm9sAQljdXJyZW50V2gEBWdvb2RzCQCRAwIFCWN1cnJlbnRXaAUJd2hJZHhQcm9kCgEJc3VtUmVzTWF0AgNhY2MEaXRlbQkAZAIFA2FjYwkBDXBhcnNlSW50VmFsdWUBBQRpdGVtCgEHc3VtUHJvZAIDYWNjBGl0ZW0EA2lkeAgFA2FjYwJfMQQEcGtncwkAaQIJAGUCCQBkAgkBDXBhcnNlSW50VmFsdWUBBQRpdGVtBQ5QUk9EVUNUUEtHU0laRQABBQ5QUk9EVUNUUEtHU0laRQkAlAoCCQBkAgUDaWR4AAEJAGQCCAUDYWNjAl8yCQBoAgUEcGtncwUFTVVMVDgECHdoUmVzVm9sCgACJGwJALUJAgkAkQMCBQljdXJyZW50V2gFCHdoSWR4UmVzAgFfCgACJHMJAJADAQUCJGwKAAUkYWNjMAAACgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQlzdW1SZXNNYXQCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDYJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYECHdoTWF0Vm9sCgACJGwJALUJAgkAkQMCBQljdXJyZW50V2gFCHdoSWR4TWF0AgFfCgACJHMJAJADAQUCJGwKAAUkYWNjMAAACgEFJGYxXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQlzdW1SZXNNYXQCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjFfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDYJAQUkZjFfMgIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYECndoR29vZHNWb2wDCQAAAgUFZ29vZHMCAAAACAoAAiRsCQC8CQIFBWdvb2RzAgFfCgACJHMJAJADAQUCJGwKAAUkYWNjMAkAlAoCAAAAAAoBBSRmMl8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEHc3VtUHJvZAIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMl8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgNTAJAQUkZjJfMgIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyAl8yCQBkAgkAZAIFCHdoUmVzVm9sBQh3aE1hdFZvbAUKd2hHb29kc1ZvbAEMZ2V0V2FyZWhvdXNlAwV3aEtleQlsYW5kSW5kZXgKaW5mcmFMZXZlbAQJdm9sUHJlZml4CQCsAgIJAKwCAgkApAMBBQlsYW5kSW5kZXgCAV8JAKQDAQUKaW5mcmFMZXZlbAQHd2hUb3RhbAkBF2dldFdhcmVob3VzZVRvdGFsVm9sdW1lAQUJdm9sUHJlZml4BAV3aFN0cgkBC3ZhbHVlT3JFbHNlAgkAoggBBQV3aEtleQkArAICBQl2b2xQcmVmaXgCGzowXzBfMF8wXzBfMDowXzBfMF8wXzBfMDo6MAQCd2gJALwJAgUFd2hTdHICAToECndoT2NjdXBpZWQJARdnZXRXYXJlaG91c2VPY2N1cGllZFZvbAEFAndoBAZ3aExvZnQDCQBmAgAFCQCQAwEFAndoCQC5CQIJAMwIAgIBMAkAzAgCCQCkAwEFCndoT2NjdXBpZWQJAMwIAgkApAMBCQBlAgUHd2hUb3RhbAUKd2hPY2N1cGllZAkAzAgCCQCkAwEFB3doVG90YWwFA25pbAIBXwQEbG9mdAkAtQkCCQCRAwIFAndoBQl3aElkeExPRlQCAV8ECHdoTG9ja2VkCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbG9mdAUJdm9sTG9ja2VkBANvY2MDCQBmAgkAkAMBBQRsb2Z0AAEJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQt2b2xPY2N1cGllZAUKd2hPY2N1cGllZAkAuQkCCQDMCAIJAKQDAQUId2hMb2NrZWQJAMwIAgkApAMBBQNvY2MJAMwIAgkApAMBCQBlAgkAZQIFB3doVG90YWwFCHdoTG9ja2VkBQNvY2MJAMwIAgkApAMBBQd3aFRvdGFsBQNuaWwCAV8JAMwIAgkAkQMCBQJ3aAULd2hJZHhMZXZlbHMJAMwIAgMJAAACCQCQAwEJALUJAgkAkQMCBQJ3aAUId2hJZHhSZXMCAV8FBk5VTVJFUwkAkQMCBQJ3aAUId2hJZHhSZXMCCzBfMF8wXzBfMF8wCQDMCAIDCQAAAgkAkAMBCQC1CQIJAJEDAgUCd2gFCHdoSWR4TWF0AgFfBQZOVU1SRVMJAJEDAgUCd2gFCHdoSWR4TWF0AgswXzBfMF8wXzBfMAkAzAgCCQCRAwIFAndoBQl3aElkeFByb2QJAMwIAgUGd2hMb2Z0BQNuaWwBFWdldFdhcmVob3VzZVNwYWNlTGVmdAEJY3VycmVudFdoBAtvY2N1cGllZFZvbAkBF2dldFdhcmVob3VzZU9jY3VwaWVkVm9sAQUJY3VycmVudFdoBA9jdXJyV2hMb2NrZWRWb2wJAQ1wYXJzZUludFZhbHVlAQkAkQMCCQC1CQIJAJEDAgUJY3VycmVudFdoBQl3aElkeExPRlQCAV8FCXZvbExvY2tlZAkAZQIJAGUCCQEXZ2V0V2FyZWhvdXNlVG90YWxWb2x1bWUBCQCRAwIFCWN1cnJlbnRXaAULd2hJZHhMZXZlbHMFC29jY3VwaWVkVm9sBQ9jdXJyV2hMb2NrZWRWb2wBCW1vdmVTdHVmZgMKY2FyZ29QYXJ0cwljdXJyZW50V2gLY3VycmVudFBhY2sDCQECIT0CCQCQAwEFCmNhcmdvUGFydHMAAwkAAgECNGNhcmdvTGlzdFN0ciBzaG91bGQgY29udGFpbiBleGFjdGx5IDIgJzonIHNlcGFyYXRvcnMECHJlc1BhcnRzCQC1CQIJAJEDAgUKY2FyZ29QYXJ0cwAAAgFfBAhtYXRQYXJ0cwkAtQkCCQCRAwIFCmNhcmdvUGFydHMAAQIBXwQJcHJvZFBhcnRzAwkAAAIJAJEDAgUKY2FyZ29QYXJ0cwACAgAFA25pbAkAvAkCCQCRAwIFCmNhcmdvUGFydHMAAgIBXwMJAQIhPQIJAJADAQUIcmVzUGFydHMFBk5VTVJFUwkAAgECIEFsbCA2IHJlc291cmNlcyBzaG91bGQgYmUgcGFzc2VkAwkBAiE9AgkAkAMBBQhtYXRQYXJ0cwUGTlVNUkVTCQACAQIgQWxsIDYgbWF0ZXJpYWxzIHNob3VsZCBiZSBwYXNzZWQEC3doU3BhY2VMZWZ0CQEVZ2V0V2FyZWhvdXNlU3BhY2VMZWZ0AQUJY3VycmVudFdoBAljdXJyV2hSZXMJALUJAgkAkQMCBQljdXJyZW50V2gFCHdoSWR4UmVzAgFfBAljdXJyV2hNYXQJALUJAgkAkQMCBQljdXJyZW50V2gFCHdoSWR4TWF0AgFfBApjdXJyV2hQcm9kAwkAAAIJAJEDAgUJY3VycmVudFdoBQl3aElkeFByb2QCAAUDbmlsCQC8CQIJAJEDAgUJY3VycmVudFdoBQl3aElkeFByb2QCAV8EDmN1cnJlbnRQYWNrUmVzCQC1CQIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4UmVzAgFfBA5jdXJyZW50UGFja01hdAkAtQkCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeE1hdAIBXwQPY3VycmVudFBhY2tQcm9kAwkAAAIJAJEDAgULY3VycmVudFBhY2sFCWJwSWR4UHJvZAIABQNuaWwJALwJAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kAgFfCgEDbXZSAgNhY2MEaXRlbQQBaQgFA2FjYwJfMQQCYW0JAQ1wYXJzZUludFZhbHVlAQUEaXRlbQQDd2hyCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUJY3VycldoUmVzBQFpBANicHIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQ5jdXJyZW50UGFja1JlcwUBaQMJAAACBQJhbQAACQCWCgQJAGQCBQFpAAEJAM0IAggFA2FjYwJfMgkAkQMCBQljdXJyV2hSZXMFAWkJAM0IAggFA2FjYwJfMwkAkQMCBQ5jdXJyZW50UGFja1JlcwUBaQgFA2FjYwJfNAMJAGYCBQJhbQAAAwkAZgIFAmFtBQNicHIJAAIBCQCsAgIJAKwCAgkArAICCQCsAgICEEF0dGVtcHQgdG8gdGFrZSAFBGl0ZW0CGSBmcm9tIGJhY2twYWNrLCBidXQgb25seSAJAKQDAQUDYnByAgogYXZhaWxhYmxlCQCWCgQJAGQCBQFpAAEJAM0IAggFA2FjYwJfMgkApAMBCQBkAgUDd2hyBQJhbQkAzQgCCAUDYWNjAl8zCQCkAwEJAGUCBQNicHIFAmFtCQBkAggFA2FjYwJfNAUCYW0DCQBmAgkBAS0BBQJhbQUDd2hyCQACAQkArAICCQCsAgIJAKwCAgkArAICAhBBdHRlbXB0IHRvIHRha2UgCQCkAwEJAQEtAQUCYW0CGiBmcm9tIHdhcmVob3VzZSwgYnV0IG9ubHkgCQCkAwEFA3docgIKIGF2YWlsYWJsZQkAlgoECQBkAgUBaQABCQDNCAIIBQNhY2MCXzIJAKQDAQkAZAIFA3docgUCYW0JAM0IAggFA2FjYwJfMwkApAMBCQBlAgUDYnByBQJhbQkAZAIIBQNhY2MCXzQFAmFtBAFyCgACJGwFCHJlc1BhcnRzCgACJHMJAJADAQUCJGwKAAUkYWNjMAkAlgoEAAAFA25pbAUDbmlsAAAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBA212UgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNgkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgoBA212TQIDYWNjBGl0ZW0EAWkIBQNhY2MCXzEEAmFtCQENcGFyc2VJbnRWYWx1ZQEFBGl0ZW0EA3dobQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCWN1cnJXaE1hdAUBaQQDYnBtCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUOY3VycmVudFBhY2tNYXQFAWkDCQAAAgUCYW0AAAkAlgoECQBkAgUBaQABCQDNCAIIBQNhY2MCXzIJAJEDAgUJY3VycldoTWF0BQFpCQDNCAIIBQNhY2MCXzMJAJEDAgUOY3VycmVudFBhY2tNYXQFAWkIBQNhY2MCXzQDCQBmAgUCYW0AAAMJAGYCBQJhbQUDYnBtCQACAQkArAICCQCsAgIJAKwCAgkArAICAhBBdHRlbXB0IHRvIHRha2UgBQRpdGVtAhkgZnJvbSBiYWNrcGFjaywgYnV0IG9ubHkgCQCkAwEFA2JwbQIKIGF2YWlsYWJsZQkAlgoECQBkAgUBaQABCQDNCAIIBQNhY2MCXzIJAKQDAQkAZAIFA3dobQUCYW0JAM0IAggFA2FjYwJfMwkApAMBCQBlAgUDYnBtBQJhbQkAZAIIBQNhY2MCXzQFAmFtAwkAZgIJAQEtAQUCYW0FA3dobQkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgIQQXR0ZW1wdCB0byB0YWtlIAkApAMBCQEBLQEFAmFtAhogZnJvbSB3YXJlaG91c2UsIGJ1dCBvbmx5IAkApAMBBQN3aG0CCiBhdmFpbGFibGUJAJYKBAkAZAIFAWkAAQkAzQgCCAUDYWNjAl8yCQCkAwEJAGQCBQN3aG0FAmFtCQDNCAIIBQNhY2MCXzMJAKQDAQkAZQIFA2JwbQUCYW0JAGQCCAUDYWNjAl80BQJhbQQBbQoAAiRsBQhtYXRQYXJ0cwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJYKBAAABQNuaWwFA25pbAgFAXICXzQKAQUkZjFfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBA212TQIFAiRhCQCRAwIFAiRsBQIk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ACcAKAApACoAKwAsAC0ALgAvADAAMQAyCQCWCgQAAAUKY3VycldoUHJvZAUPY3VycmVudFBhY2tQcm9kCAUBbQJfNAQIdm9sU2FsZG8IBQFwAl80AwkAZgIFCHZvbFNhbGRvBQt3aFNwYWNlTGVmdAkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgIVQXR0ZW1wdCB0byBwdXQgdG90YWwgCQCkAwEFCHZvbFNhbGRvAhEgc3R1ZmYsIGJ1dCBvbmx5IAkApAMBBQt3aFNwYWNlTGVmdAIVIHdhcmVob3VzZSBzcGFjZSBsZWZ0CQCZCgcJALkJAggFAXICXzICAV8JALkJAggFAW0CXzICAV8JALoJAggFAXACXzICAV8JALkJAggFAXICXzMCAV8JALkJAggFAW0CXzMCAV8JALoJAggFAXACXzMCAV8FCHZvbFNhbGRvARJleHBlZGl0aW9uSW50ZXJuYWwCBmNhbGxlcgR0eElkBAh1c2VyQWRkcgkApQgBBQZjYWxsZXIEBmJpZ051bQkBA2FicwEJAJ4DAQUEdHhJZAQHZnJlZU51bQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQESa2V5TmV4dEZyZWVMYW5kTnVtAAkAZAIFD1BSRVNBTEVOVU1MQU5EUwABBAdsYW5kTnVtCQCkAwEFB2ZyZWVOdW0EDGNvbnRpbmVudElkeAkAoAMBCQC7AgIFBmJpZ051bQUFRklWRVgECHRlcnJhaW5zCQELZ2VuVGVycmFpbnMCBQZiaWdOdW0FDGNvbnRpbmVudElkeAQJY29udGluZW50CQCRAwIFCmNvbnRpbmVudHMFDGNvbnRpbmVudElkeAQFaXNzdWUJAMIIBQkBB25mdE5hbWUCBQdsYW5kTnVtAgFTCQC5CQIJAMwIAgUHbGFuZE51bQkAzAgCAgFTCQDMCAIFCHRlcnJhaW5zCQDMCAIFCWNvbnRpbmVudAUDbmlsAgFfAAEAAAcEB2Fzc2V0SWQJALgIAQUFaXNzdWUEAmlkCQDYBAEFB2Fzc2V0SWQJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBEmtleU5leHRGcmVlTGFuZE51bQAJAGQCBQdmcmVlTnVtAAEJAMwIAgUFaXNzdWUJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEGtleUxhbmRUb0Fzc2V0SWQBBQdsYW5kTnVtBQJpZAkAzAgCCQELU3RyaW5nRW50cnkCCQEVa2V5TGFuZEFzc2V0SWRUb093bmVyAQUCaWQFCHVzZXJBZGRyCQDMCAIJAQtTdHJpbmdFbnRyeQIJARFrZXlMYW5kTnVtVG9Pd25lcgEFB2xhbmROdW0FCHVzZXJBZGRyCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEFAmlkAAAJAMwIAgkBDEludGVnZXJFbnRyeQIJAR5rZXlJbmZyYUxldmVsQnlBc3NldElkQW5kT3duZXICBQJpZAUIdXNlckFkZHIAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQZjYWxsZXIAAQUHYXNzZXRJZAUDbmlsCQCUCgIFAmlkBQljb250aW5lbnQBDGZsaWdodENvbW1vbgMIdXNlckFkZHIHbWVzc2FnZQNzaWcDCQEBIQEJAMQTAwUHbWVzc2FnZQUDc2lnBQNwdWIJAAIBAhhzaWduYXR1cmUgZG9lcyBub3QgbWF0Y2gEBXBhcnRzCQC8CQIJALAJAQUHbWVzc2FnZQIBOwQJZmxpZ2h0TG9nCQC8CQIJAJEDAgUFcGFydHMAAAIBfAQCaHAJALUJAgkAkQMCBQlmbGlnaHRMb2cFCGZsSGVhbHRoAgFfBAVjdXJIUAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmhwAAAEBW5ld0hQCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCaHAAAQQLbmV3TG9jVHhWZXIJALUJAgkAkQMCBQVwYXJ0cwABAgE6BAtuZXdMb2NhdGlvbgkAkQMCBQtuZXdMb2NUeFZlcgAABAR0aW1lCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUJZmxpZ2h0TG9nBQtmbFRpbWVzdGFtcAMDCQBmAgUEdGltZQkAZAIIBQlsYXN0QmxvY2sJdGltZXN0YW1wBRFGSVZFTUlOVVRFU01JTExJUwYJAGYCCQBlAggFCWxhc3RCbG9jawl0aW1lc3RhbXAFEUZJVkVNSU5VVEVTTUlMTElTBQR0aW1lCQACAQkArAICCQCsAgIJAKwCAgIcc2lnbmF0dXJlIG91dGRhdGVkOiBsb2dUaW1lPQkApAMBBQR0aW1lAgksIGJjVGltZT0JAKQDAQgFCWxhc3RCbG9jawl0aW1lc3RhbXAECXR4RnJvbU1zZwkAkQMCBQtuZXdMb2NUeFZlcgABBAZsYXN0VHgJAQt2YWx1ZU9yRWxzZQIJAKIIAQkBEWtleUxhc3RUeElkQnlVc2VyAQUIdXNlckFkZHICAAMJAQIhPQIFBmxhc3RUeAUJdHhGcm9tTXNnCQACAQkArAICCQCsAgIJAKwCAgIeVHggaWRzIGRvbid0IG1hdGNoISBJbiBzdGF0ZTogBQZsYXN0VHgCCiwgaW4gbXNnOiAFCXR4RnJvbU1zZwQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQh1c2VyQWRkcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAQJa2V5SGVhbHRoCQENa2V5RHVja0hlYWx0aAEFC2R1Y2tBc3NldElkBAVtYXhIUAkBCW1heEhlYWx0aAEJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBDGtleUR1Y2tMZXZlbAEFC2R1Y2tBc3NldElkAAAEDG9sZEZyb21TdGF0ZQkBC3ZhbHVlT3JFbHNlAgkAnwgBBQlrZXlIZWFsdGgFBW1heEhQAwkBAiE9AgUMb2xkRnJvbVN0YXRlBQVjdXJIUAkAAgEJAKwCAgkArAICCQCsAgICCm9sZEhlYWx0aD0JAKQDAQUMb2xkRnJvbVN0YXRlAi8gZnJvbSBzdGF0ZSBkb2VzIG5vdCBtYXRjaCBvbmUgZnJvbSBmbGlnaHQgbG9nPQkApAMBBQVjdXJIUAMJAGcCAAAFBWN1ckhQCQACAQIeWW91IGNhbid0IGZseSB3aXRoIHplcm8gaGVhbHRoAwkBASEBCQEXY2FuV2VhckN1cnJlbnRFcXVpcG1lbnQBBQtkdWNrQXNzZXRJZAkAAgECFkVxdWlwbWVudCBpbmNvbXBhdGlibGUEBWJvbnVzAwkAZgIJAJADAQUJZmxpZ2h0TG9nBQdmbEJvbnVzCQCRAwIFCWZsaWdodExvZwUHZmxCb251cwIABAhwcm9kVXNlZAMJAGYCCQCQAwEFCWZsaWdodExvZwULZmxQcm9kc1VzZWQJAJEDAgUJZmxpZ2h0TG9nBQtmbFByb2RzVXNlZAIABApzZW50QW1vdW50AwMJAGYCBQVuZXdIUAAACQAAAgUFYm9udXMCASQHCQEFYXNJbnQBCQD8BwQFDHJlc3RDb250cmFjdAINc2VuZFVzZHRQcml6ZQkAzAgCBQh1c2VyQWRkcgUDbmlsBQNuaWwAAAkAlwoFBQVuZXdIUAULZHVja0Fzc2V0SWQFCnNlbnRBbW91bnQFC25ld0xvY2F0aW9uBQhwcm9kVXNlZAEMYXBwbHlCb251c2VzAgtsYW5kQXNzZXRJZAZwaWVjZXMECmluZnJhTGV2ZWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAAABAlhcnRQaWVjZXMJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBIGtleUxhbmRBcnRTdGF0dXNCeVR5cGVBbmRBc3NldElkAgUKQVJUUFJFU0FMRQULbGFuZEFzc2V0SWQAAAQEYWRkNgkAaQIFCmluZnJhTGV2ZWwABgQEYWRkNwkAaQIFCmluZnJhTGV2ZWwABwkAZAIJAGQCBQ9EQUlMWVJFU0JZUElFQ0UJAGsDBQ9EQUlMWVJFU0JZUElFQ0UJAGQCCQBkAgUKaW5mcmFMZXZlbAUEYWRkNgkAaAIAAgUEYWRkNwAFCQBrAwUPREFJTFlSRVNCWVBJRUNFBQlhcnRQaWVjZXMJAGgCBQZwaWVjZXMABQEUY2hlY2tDbGFpbUNvbmRpdGlvbnMDBGFkZHIJY2xhaW1Nb2RlDWxhbmRBc3NldElkSW4EDSR0MDMzNzM4MzQyNzcDCQAAAgUJY2xhaW1Nb2RlBQtjbGFpbU1vZGVXaAkAlAoCBQ1sYW5kQXNzZXRJZEluCQELdmFsdWVPckVsc2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFBGFkZHICAAQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQRhZGRyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkBAtjdXJMb2NhdGlvbgkBC3ZhbHVlT3JFbHNlAgkAoggBCQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQFD0RFRkFVTFRMT0NBVElPTgQDbG9jCQC1CQIJAQV2YWx1ZQEFC2N1ckxvY2F0aW9uAgFfAwkBAiE9AgkAkQMCBQNsb2MFCmxvY0lkeFR5cGUCAUwJAAIBCQCsAgIJAKwCAgIWRHVjayBsb2NhdGlvbiB0eXBlIGlzIAkAkQMCBQNsb2MFCmxvY0lkeFR5cGUCESwgYnV0IHNob3VsZCBiZSBMCQCUCgIJAJEDAgUDbG9jBQhsb2NJZHhJZAULZHVja0Fzc2V0SWQEC2xhbmRBc3NldElkCAUNJHQwMzM3MzgzNDI3NwJfMQQGZHVja0lkCAUNJHQwMzM3MzgzNDI3NwJfMgQFYXNzZXQJAQV2YWx1ZQEJAOwHAQkA2QQBBQtsYW5kQXNzZXRJZAQHdGltZUtleQkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAQJc2F2ZWRUaW1lCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ8IAQUHdGltZUtleQkArAICCQCsAgICBUxhbmQgCAUFYXNzZXQEbmFtZQIOIGlzIG5vdCBzdGFrZWQEBW93bmVyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFWtleUxhbmRBc3NldElkVG9Pd25lcgEFC2xhbmRBc3NldElkCQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCDCBpcyBvcnBoYW5lZAMJAQIhPQIFBW93bmVyBQRhZGRyCQACAQkArAICBQpMQU5EUFJFRklYAg0gaXMgbm90IHlvdXJzBAFkCQC1CQIIBQVhc3NldAtkZXNjcmlwdGlvbgIBXwkAlgoEBQZkdWNrSWQFC2xhbmRBc3NldElkBQFkBQlzYXZlZFRpbWUBEGNsYWltUmVzSW50ZXJuYWwEBGFkZHIGYW1vdW50CWNsYWltTW9kZQ1sYW5kQXNzZXRJZEluAwkAZgIAAAUGYW1vdW50CQACAQIPTmVnYXRpdmUgYW1vdW50BAFjCQEUY2hlY2tDbGFpbUNvbmRpdGlvbnMDBQRhZGRyBQljbGFpbU1vZGUFDWxhbmRBc3NldElkSW4ECGxhbmRTaXplCQCRAwIIBQFjAl8zBQtyZWNMYW5kU2l6ZQQNdGVycmFpbkNvdW50cwkBDWNvdW50VGVycmFpbnMBCQCRAwIIBQFjAl8zBQtyZWNUZXJyYWlucwQJZGVsdGFUaW1lCQBlAggFCWxhc3RCbG9jawl0aW1lc3RhbXAIBQFjAl80AwkAZgIAAAUJZGVsdGFUaW1lCQACAQkArAICCQCsAgIJAKwCAgImU2F2ZWQgdGltZXN0YW1wIGlzIGluIGZ1dHVyZSwgc2F2ZWQgPSAJAKQDAQgFAWMCXzQCDCwgY3VycmVudCA9IAkApAMBCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQGcGllY2VzCQEPbnVtUGllY2VzQnlTaXplAQUIbGFuZFNpemUEFmRhaWx5UHJvZHVjdGlvbkJ5UGllY2UJAQxhcHBseUJvbnVzZXMCCAUBYwJfMgUGcGllY2VzBAhhdmFpbFJlcwkAawMFCWRlbHRhVGltZQkAaAIFFmRhaWx5UHJvZHVjdGlvbkJ5UGllY2UFBnBpZWNlcwUJREFZTUlMTElTAwkAZgIFBmFtb3VudAUIYXZhaWxSZXMJAAIBCQCsAgIJAKwCAgkArAICAiJOb3QgZW5vdWdoIHJlc291cmNlcywgYXZhaWxhYmxlID0gCQCkAwEFCGF2YWlsUmVzAg4sIHJlcXVlc3RlZCA9IAkApAMBBQZhbW91bnQEDG5ld0RlbHRhVGltZQkAawMJAGUCBQhhdmFpbFJlcwUGYW1vdW50BQlEQVlNSUxMSVMJAGgCBRZkYWlseVByb2R1Y3Rpb25CeVBpZWNlBQZwaWVjZXMEDG5ld1RpbWVzdGFtcAkAZQIIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQxuZXdEZWx0YVRpbWUECWxhbmRJbmRleAkAaQIFBnBpZWNlcwUFU1NJWkUECnJlc1RvQ2xhaW0JAQl2aXJ0Q2xhaW0EBQ10ZXJyYWluQ291bnRzCQBlAgUJZGVsdGFUaW1lBQxuZXdEZWx0YVRpbWUFCWxhbmRJbmRleAUWZGFpbHlQcm9kdWN0aW9uQnlQaWVjZQQFd2hLZXkJARJrZXlXYXJlaG91c2VCeUxhbmQBCAUBYwJfMgQKaW5mcmFMZXZlbAkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEIBQFjAl8yAAAECWN1cnJlbnRXaAkBDGdldFdhcmVob3VzZQMFBXdoS2V5BQlsYW5kSW5kZXgFCmluZnJhTGV2ZWwEBGxvZnQJALUJAgkAkQMCBQljdXJyZW50V2gFCXdoSWR4TE9GVAIBXwQLd2hTcGFjZUxlZnQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQd2b2xGcmVlAwMJAAACBQljbGFpbU1vZGUFC2NsYWltTW9kZVdoCQBmAgUGYW1vdW50BQt3aFNwYWNlTGVmdAcJAAIBCQCsAgIJAKwCAgIFT25seSAJAKQDAQULd2hTcGFjZUxlZnQCGCBzcGFjZSBsZWZ0IGluIHdhcmVob3VzZQQFYnBLZXkJARFrZXlCYWNrcGFja0J5RHVjawEIBQFjAl8xBAtjdXJyZW50UGFjawkBC2dldEJhY2twYWNrAQUFYnBLZXkEDmN1cnJlbnRQYWNrUmVzCQC1CQIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4UmVzAgFfBAxjdXJyZW50V2hSZXMJALUJAgkAkQMCBQljdXJyZW50V2gFCHdoSWR4UmVzAgFfBA0kdDAzNjY1MTM3NTIyAwkAAAIFCWNsYWltTW9kZQULY2xhaW1Nb2RlV2gJAJYKBAkBBmFkZFJlcwUFDGN1cnJlbnRXaFJlcwUNdGVycmFpbkNvdW50cwkAZQIFCWRlbHRhVGltZQUMbmV3RGVsdGFUaW1lBQlsYW5kSW5kZXgFFmRhaWx5UHJvZHVjdGlvbkJ5UGllY2UJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4UmVzCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFC3ZvbE9jY3VwaWVkCAUKcmVzVG9DbGFpbQJfMgkAZQIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQd2b2xGcmVlCAUKcmVzVG9DbGFpbQJfMgMJAAACBQljbGFpbU1vZGUFDWNsYWltTW9kZUR1Y2sJAJYKBAkAkQMCBQljdXJyZW50V2gFCHdoSWR4UmVzCQEGYWRkUmVzBQUOY3VycmVudFBhY2tSZXMFDXRlcnJhaW5Db3VudHMJAGUCBQlkZWx0YVRpbWUFDG5ld0RlbHRhVGltZQUJbGFuZEluZGV4BRZkYWlseVByb2R1Y3Rpb25CeVBpZWNlCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbG9mdAULdm9sT2NjdXBpZWQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQd2b2xGcmVlBAVkaXN0cgkBDWRpc3RyaWJ1dGVSZXMEBQxjdXJyZW50V2hSZXMFDmN1cnJlbnRQYWNrUmVzBQpyZXNUb0NsYWltBQt3aFNwYWNlTGVmdAQEd2hBbQkAlwMBCQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQd2b2xGcmVlCQDMCAIIBQpyZXNUb0NsYWltAl8yBQNuaWwJAJYKBAgFBWRpc3RyAl8xCAUFZGlzdHICXzIJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbG9mdAULdm9sT2NjdXBpZWQFBHdoQW0JAGUCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbG9mdAUHdm9sRnJlZQUEd2hBbQQFd2hSZXMIBQ0kdDAzNjY1MTM3NTIyAl8xBAVicFJlcwgFDSR0MDM2NjUxMzc1MjICXzIEBWxvZnRPCAUNJHQwMzY2NTEzNzUyMgJfMwQFbG9mdEYIBQ0kdDAzNjY1MTM3NTIyAl80CQCXCgUJAMwIAgkBDEludGVnZXJFbnRyeQIJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQgFAWMCXzIFDG5ld1RpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBImtleVN0YWtlZFRpbWVCeVR5cGVBc3NldElkQW5kT3duZXIDBQpMQU5EUFJFRklYCAUBYwJfMgUEYWRkcgUMbmV3VGltZXN0YW1wBQNuaWwFBWJwS2V5CQDMCAIJAJEDAgULY3VycmVudFBhY2sFCmJwSWR4TGV2ZWwJAMwIAgUFYnBSZXMJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhNYXQJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kBQNuaWwFBXdoS2V5CQDMCAIJAJEDAgUJY3VycmVudFdoBQt3aElkeExldmVscwkAzAgCBQV3aFJlcwkAzAgCCQCRAwIFCWN1cnJlbnRXaAUId2hJZHhNYXQJAMwIAgkAkQMCBQljdXJyZW50V2gFCXdoSWR4UHJvZAkAzAgCCQC5CQIJAMwIAgkAkQMCBQRsb2Z0BQl2b2xMb2NrZWQJAMwIAgkApAMBBQVsb2Z0TwkAzAgCCQCkAwEFBWxvZnRGCQDMCAIJAJEDAgUEbG9mdAUIdm9sVG90YWwFA25pbAIBXwUDbmlsAQhjbGFpbUFsbAQEYWRkcgtsYW5kQXNzZXRJZAZwaWVjZXMJY2xhaW1Nb2RlBAd0aW1lS2V5CQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFC2xhbmRBc3NldElkBAlzYXZlZFRpbWUJAQV2YWx1ZQEJAJ8IAQUHdGltZUtleQQIYXZhaWxSZXMJAGgCCQBrAwkAZQIIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQlzYXZlZFRpbWUJAQxhcHBseUJvbnVzZXMCBQtsYW5kQXNzZXRJZAUGcGllY2VzBQlEQVlNSUxMSVMFBnBpZWNlcwkBEGNsYWltUmVzSW50ZXJuYWwEBQRhZGRyBQhhdmFpbFJlcwUJY2xhaW1Nb2RlBQtsYW5kQXNzZXRJZAENdXBJbmZyYUNvbW1vbgQMc2hvdWxkVXNlTWF0BmNhbGxlcg1wYXltZW50QW1vdW50C2xhbmRBc3NldElkBARhZGRyCQClCAEFBmNhbGxlcgQBYwkBFGNoZWNrQ2xhaW1Db25kaXRpb25zAwUEYWRkcgUTY2xhaW1Nb2RlV2hUaGVuRHVjawULbGFuZEFzc2V0SWQEBnBpZWNlcwkBD251bVBpZWNlc0J5U2l6ZQEJAJEDAggFAWMCXzMFC3JlY0xhbmRTaXplBAhpbmZyYUtleQkBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBCAUBYwJfMgQIY3VyTGV2ZWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUIaW5mcmFLZXkAAAMDCQEBIQEFGEtTX0FMTE9XX0JJR19JTkZSQV9NRVJHRQkAZwIFCGN1ckxldmVsAAMHCQACAQImQ3VycmVudGx5IG1heCBpbmZyYXN0cnVjdHVyZSBsZXZlbCA9IDMECG1heEluZnJhCQBkAgkAaQIJAQRzcXJ0BAUGcGllY2VzAAAAAAUERE9XTgAFAAIECG5ld0xldmVsCQBkAgUIY3VyTGV2ZWwAAQMDBRhLU19BTExPV19CSUdfSU5GUkFfTUVSR0UJAGYCBQhuZXdMZXZlbAUIbWF4SW5mcmEHCQACAQkArAICAiVDdXJyZW50bHkgbWF4IGluZnJhc3RydWN0dXJlIGxldmVsID0gCQCkAwEFCG1heEluZnJhBARjb3N0CQBrAwUVSW5mcmFVcGdyYWRlQ29zdFNVc2R0CQBoAgUGcGllY2VzBQhuZXdMZXZlbAUFU1NJWkUDAwkBASEBBQxzaG91bGRVc2VNYXQJAQIhPQIFDXBheW1lbnRBbW91bnQFBGNvc3QHCQACAQkArAICAhtQYXltZW50IGF0dGFjaGVkIHNob3VsZCBiZSAJAKQDAQUEY29zdAQFYnBLZXkJARFrZXlCYWNrcGFja0J5RHVjawEIBQFjAl8xBAtjdXJyZW50UGFjawkBC2dldEJhY2twYWNrAQUFYnBLZXkEBW1MaXN0CQC1CQIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4TWF0AgFfBAdtYXRVc2VkCQBrAwURSW5mcmFVcGdyYWRlQ29zdFMJAGgCBQZwaWVjZXMFCG5ld0xldmVsBQVTU0laRQQGbmV3TWF0CQC5CQIJARFzdWJ0cmFjdE1hdGVyaWFscwMFDHNob3VsZFVzZU1hdAUFbUxpc3QFB21hdFVzZWQCAV8EC2NsYWltUmVzdWx0CQEIY2xhaW1BbGwEBQRhZGRyCAUBYwJfMgUGcGllY2VzBRNjbGFpbU1vZGVXaFRoZW5EdWNrBAZ3aERhdGEIBQtjbGFpbVJlc3VsdAJfNQQGb2xkVm9sCQEXZ2V0V2FyZWhvdXNlVG90YWxWb2x1bWUBCQCRAwIFBndoRGF0YQULd2hJZHhMZXZlbHMECm5ld1ZvbERhdGEJALkJAgkAzAgCCQCRAwIJALUJAgkAkQMCBQZ3aERhdGEFC3doSWR4TGV2ZWxzAgFfAAAJAMwIAgkApAMBBQhuZXdMZXZlbAUDbmlsAgFfBAZuZXdWb2wJARdnZXRXYXJlaG91c2VUb3RhbFZvbHVtZQEFCm5ld1ZvbERhdGEEBGxvZnQJALUJAgkAkQMCBQZ3aERhdGEFCXdoSWR4TE9GVAIBXwQKbmV3TG9mdFN0cgkAuQkCCQDMCAIJAJEDAgUEbG9mdAUJdm9sTG9ja2VkCQDMCAIJAJEDAgUEbG9mdAULdm9sT2NjdXBpZWQJAMwIAgkApAMBCQBlAgkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQd2b2xGcmVlBQZuZXdWb2wFBm9sZFZvbAkAzAgCCQCkAwEFBm5ld1ZvbAUDbmlsAgFfCQCVCgMJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUIaW5mcmFLZXkFCG5ld0xldmVsCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEea2V5SW5mcmFMZXZlbEJ5QXNzZXRJZEFuZE93bmVyAggFAWMCXzIFBGFkZHIFCG5ld0xldmVsCQDMCAIJAQtTdHJpbmdFbnRyeQIFBWJwS2V5CQC5CQIJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUKYnBJZHhMZXZlbAkAzAgCCQCRAwIIBQtjbGFpbVJlc3VsdAJfMwUIYnBJZHhSZXMJAMwIAgUGbmV3TWF0CQDMCAIJAJEDAgULY3VycmVudFBhY2sFCWJwSWR4UHJvZAUDbmlsAgE6CQDMCAIJAQtTdHJpbmdFbnRyeQIIBQtjbGFpbVJlc3VsdAJfNAkAuQkCCQDMCAIFCm5ld1ZvbERhdGEJAMwIAgkAkQMCBQZ3aERhdGEFCHdoSWR4UmVzCQDMCAIJAJEDAgUGd2hEYXRhBQh3aElkeE1hdAkAzAgCCQCRAwIFBndoRGF0YQUJd2hJZHhQcm9kCQDMCAIFCm5ld0xvZnRTdHIFA25pbAIBOgUDbmlsCAULY2xhaW1SZXN1bHQCXzEFCG5ld0xldmVsBQdtYXRVc2VkARN1cGRhdGVTdGF0c0ludGVybmFsBAZsdmxLZXkFeHBLZXkJcG9pbnRzS2V5B2RlbHRhWFAEAnhwCQELdmFsdWVPckVsc2UCCQCfCAEFBXhwS2V5AAAEBW5ld1hQCQBkAgUCeHAFB2RlbHRhWFAECWx2bFBvaW50cwkBB2xldmVsVXACCQELdmFsdWVPckVsc2UCCQCfCAEFBmx2bEtleQAABQVuZXdYUAkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQZsdmxLZXkJAJEDAgUJbHZsUG9pbnRzAAAJAMwIAgkBDEludGVnZXJFbnRyeQIFBXhwS2V5BQVuZXdYUAkAzAgCCQEMSW50ZWdlckVudHJ5AgUJcG9pbnRzS2V5CQBkAgkBC3ZhbHVlT3JFbHNlAgkAnwgBBQlwb2ludHNLZXkAAAkAkQMCBQlsdmxQb2ludHMAAQUDbmlsBQVuZXdYUAEXdXBkYXRlRHVja1N0YXRzSW50ZXJuYWwCC2R1Y2tBc3NldElkB2RlbHRhWFAJARN1cGRhdGVTdGF0c0ludGVybmFsBAkBDGtleUR1Y2tMZXZlbAEFC2R1Y2tBc3NldElkCQEJa2V5RHVja1hQAQULZHVja0Fzc2V0SWQJARFrZXlEdWNrRnJlZVBvaW50cwEFC2R1Y2tBc3NldElkBQdkZWx0YVhQARZ1cGRhdGVBY2NTdGF0c0ludGVybmFsAgRhZGRyB2RlbHRhWFAJARN1cGRhdGVTdGF0c0ludGVybmFsBAkBDGtleVVzZXJMZXZlbAEFBGFkZHIJAQlrZXlVc2VyWFABBQRhZGRyCQERa2V5VXNlckZyZWVQb2ludHMBBQRhZGRyBQdkZWx0YVhQARJhY3RpdmF0ZU9uYm9hcmRBcnQBBGFkZHIEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUEYWRkcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAQIcmVmQnlLZXkJAQ9rZXlBZGRyZXNzUmVmQnkBBQRhZGRyBAVyZWZCeQkAoggBBQhyZWZCeUtleQMJAQEhAQkBCWlzRGVmaW5lZAEFBXJlZkJ5CQACAQIpWW91IGFyZSBub3QgZWxpZ2libGUgZm9yIE9OQk9BUkQgYXJ0aWZhY3QEBmFydEtleQkBHGtleU9uYm9hcmRBcnREdWNrQWN0aXZhdGVkQnkBBQRhZGRyBAdhcnREdWNrCQCiCAEFBmFydEtleQMJAQlpc0RlZmluZWQBBQdhcnREdWNrCQACAQkArAICAi9Zb3UgYWxyZWFkeSB1c2VkIHlvdXIgT05CT0FSRCBhcnRpZmFjdCBvbiBkdWNrIAkBBXZhbHVlAQUHYXJ0RHVjawQQZHVja0FjdGl2YXRvcktleQkBHGtleU9uYm9hcmRBcnRBY3RpdmF0ZWRPbkR1Y2sBBQtkdWNrQXNzZXRJZAQNZHVja0FjdGl2YXRvcgkAoggBBRBkdWNrQWN0aXZhdG9yS2V5AwkBCWlzRGVmaW5lZAEFDWR1Y2tBY3RpdmF0b3IJAAIBCQCsAgIJAKwCAgkArAICAglUaGUgZHVjayAFC2R1Y2tBc3NldElkAjQgYWxyZWFkeSBnb3QgcG9pbnRzIGZyb20gT05CT0FSRCBhcnRpZmFjdCBmcm9tIHVzZXIgCQEFdmFsdWUBBQ1kdWNrQWN0aXZhdG9yCQDOCAIJAMwIAgkBC1N0cmluZ0VudHJ5AgUGYXJ0S2V5BQtkdWNrQXNzZXRJZAkAzAgCCQELU3RyaW5nRW50cnkCBRBkdWNrQWN0aXZhdG9yS2V5BQRhZGRyBQNuaWwICQEXdXBkYXRlRHVja1N0YXRzSW50ZXJuYWwCBQtkdWNrQXNzZXRJZAUJeHBPbmJvYXJkAl8xARJhY3RpdmF0ZVByZXNhbGVBcnQCBGFkZHINbGFuZEFzc2V0SWRJbgQBYwkBFGNoZWNrQ2xhaW1Db25kaXRpb25zAwUEYWRkcgUTY2xhaW1Nb2RlV2hUaGVuRHVjawUNbGFuZEFzc2V0SWRJbgQLbGFuZEFzc2V0SWQIBQFjAl8yBAZwaWVjZXMJAQ9udW1QaWVjZXNCeVNpemUBCQCRAwIIBQFjAl8zBQtyZWNMYW5kU2l6ZQQNYWN0aXZhdGlvbktleQkBIGtleUxhbmRBcnRTdGF0dXNCeVR5cGVBbmRBc3NldElkAgUKQVJUUFJFU0FMRQULbGFuZEFzc2V0SWQDCQBmAgkBC3ZhbHVlT3JFbHNlAgkAnwgBBQ1hY3RpdmF0aW9uS2V5AAAAAAkAAgECJVByZXNhbGUgYXJ0aWZhY3QgaXMgYWxyZWFkeSBhY3RpdmF0ZWQDCQBmAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIIBQFjAl8zBQpyZWNMYW5kTnVtBQ9QUkVTQUxFTlVNTEFORFMJAAIBCQCsAgIJAKwCAgkArAICBQpMQU5EUFJFRklYAgEgBQtsYW5kQXNzZXRJZAIlIGlzIG5vdCBlbGlnaWJsZSBmb3IgcHJlc2FsZSBhcnRpZmFjdAQLY2xhaW1SZXN1bHQJAQhjbGFpbUFsbAQFBGFkZHIFC2xhbmRBc3NldElkBQZwaWVjZXMFE2NsYWltTW9kZVdoVGhlbkR1Y2sJAM0IAgkAzQgCCQDNCAIIBQtjbGFpbVJlc3VsdAJfMQkBDEludGVnZXJFbnRyeQIFDWFjdGl2YXRpb25LZXkFBnBpZWNlcwkBC1N0cmluZ0VudHJ5AggFC2NsYWltUmVzdWx0Al8yCQC5CQIIBQtjbGFpbVJlc3VsdAJfMwIBOgkBC1N0cmluZ0VudHJ5AggFC2NsYWltUmVzdWx0Al80CQC5CQIIBQtjbGFpbVJlc3VsdAJfNQIBOgEPY2hlY2tUb3VybmFtZW50AQtkdWNrQXNzZXRJZAQGbGFzdElkCQELdmFsdWVPckVsc2UCCQCaCAIFEnRvdXJuYW1lbnRDb250cmFjdAUNbGFzdFRvdXJJZEtleQAABAtjdXJMb2NhdGlvbgkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAUPREVGQVVMVExPQ0FUSU9OAgFfBANub3cIBQlsYXN0QmxvY2sJdGltZXN0YW1wBAV0RGF0YQkBC2dldFRvdXJEYXRhAgUSdG91cm5hbWVudENvbnRyYWN0BQZsYXN0SWQEBnN0YXRpYwkAkQMCBQV0RGF0YQUJaWR4U3RhdGljBAdkeW5hbWljCQCRAwIFBXREYXRhBQppZHhEeW5hbWljAwkBAiE9AgkAkQMCBQtjdXJMb2NhdGlvbgUKbG9jSWR4VHlwZQIBVAcDAwMJAAACCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgULY3VyTG9jYXRpb24FD2xvY0lkeENvbnRpbmVudAUGbGFzdElkCQAAAgkAkQMCBQdkeW5hbWljBQ50RHluYW1pY1N0YXR1cwIKSU5QUk9HUkVTUwcJAGYCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUGc3RhdGljBQp0U3RhdGljRW5kBQNub3cHCQACAQIqWW91ciBkdWNrIGlzIHRha2luZyBwYXJ0IGluIHRoZSB0b3VybmFtZW50CQEJYXNCb29sZWFuAQkA/AcEBQR0aGlzAhZleGl0VG91cm5hbWVudEludGVybmFsCQDMCAIFC2R1Y2tBc3NldElkBQNuaWwFA25pbAENY2hlY2tEZWxpdmVyeQELZHVja0Fzc2V0SWQEC2N1ckxvY2F0aW9uCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAKIIAQkBD2tleUR1Y2tMb2NhdGlvbgEFC2R1Y2tBc3NldElkBQ9ERUZBVUxUTE9DQVRJT04CAV8EA25vdwgFCWxhc3RCbG9jawl0aW1lc3RhbXADCQECIT0CCQCRAwIFC2N1ckxvY2F0aW9uBQpsb2NJZHhUeXBlAgFEBwQJc3RhcnRUaW1lCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgULY3VyTG9jYXRpb24FD2xvY0lkeENvbnRpbmVudAQIZGlzdGFuY2UJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQtjdXJMb2NhdGlvbgUIbG9jSWR4SWQDAwkAZgIJAGQCBQlzdGFydFRpbWUFElRFTl9NSU5VVEVTX01JTExJUwUDbm93CQBmAgABBQhkaXN0YW5jZQcJAAIBAiBZb3VyIGR1Y2sgaXMgb24gZGVsaXZlcnkgbWlzc2lvbgkBCWFzQm9vbGVhbgEJAPwHBAUEdGhpcwIUZXhpdERlbGl2ZXJ5SW50ZXJuYWwJAMwIAgULZHVja0Fzc2V0SWQFA25pbAUDbmlsARJleGl0RGVsaXZlcnlDb21tb24EC2R1Y2tBc3NldElkBWNoZWNrBW5ld0hQBXNjb3JlBAtjdXJMb2NhdGlvbgkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAUPREVGQVVMVExPQ0FUSU9OAgFfBANub3cIBQlsYXN0QmxvY2sJdGltZXN0YW1wBAlzdGFydFRpbWUJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQtjdXJMb2NhdGlvbgUPbG9jSWR4Q29udGluZW50BAhkaXN0YW5jZQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFC2N1ckxvY2F0aW9uBQhsb2NJZHhJZAQFb3duZXIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEQa2V5RHVja0lkVG9Pd25lcgEFC2R1Y2tBc3NldElkAhRORlQgZHVjayBpcyBvcnBoYW5lZAQJaGVhbHRoS2V5CQENa2V5RHVja0hlYWx0aAEFC2R1Y2tBc3NldElkBAljdXJIZWFsdGgJARFAZXh0ck5hdGl2ZSgxMDU1KQEFCWhlYWx0aEtleQQOb3V0Y29tZUFjdGlvbnMDAwkAZgIFCGRpc3RhbmNlAAAGAwMFBWNoZWNrCQBmAgUFc2NvcmUAAAcJAGYCBQVuZXdIUAAABwQGcmV3YXJkCQD8BwQFD2Vjb25vbXlDb250cmFjdAISc2VuZERlbGl2ZXJ5UmV3YXJkCQDMCAIFBW93bmVyBQNuaWwFA25pbAMJAAACBQZyZXdhcmQFBnJld2FyZAQIY291bnRLZXkJARRrZXlVc2VyRGVsaXZlcnlDb3VudAEFBW93bmVyCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQhjb3VudEtleQkAZAIJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUIY291bnRLZXkAAAABCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEWa2V5VXNlckxhc3REZWxpdmVyeURheQEFBW93bmVyCQBpAgUJc3RhcnRUaW1lBQlEQVlNSUxMSVMFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgMDAwUFY2hlY2sJAGYCBQVuZXdIUAAABwkAZgIJAGQCBQlzdGFydFRpbWUFElRFTl9NSU5VVEVTX01JTExJUwUDbm93BwkAAgECJllvdXIgZHVjayBpcyBzdGlsbCBvbiBkZWxpdmVyeSBtaXNzaW9uBAtsb2NrZWRUb3RhbAkBC3ZhbHVlT3JFbHNlAgkAmggCBQ9lY29ub215Q29udHJhY3QFEWRlbGl2ZXJ5TG9ja2VkS2V5AAAEBnVubG9jawkA/AcEBQ9lY29ub215Q29udHJhY3QCFHVwZGF0ZURlbGl2ZXJ5TG9ja2VkCQDMCAIJAGUCBQtsb2NrZWRUb3RhbAUVTUlOX1VTRFRfRkVFX0RFTElWRVJZBQNuaWwFA25pbAMJAAACBQZ1bmxvY2sFBnVubG9jawMDAwUFY2hlY2sJAGcCAAAFBW5ld0hQBwYJAGcCAAAFCWN1ckhlYWx0aAUDbmlsCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEWa2V5RGVsaXZlcnlEZWxheUJ5RHVjawEFC2R1Y2tBc3NldElkCQBkAgUJc3RhcnRUaW1lBRNERUxJVkVSWV9QVU5JU0hNRU5UBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4EDXNhdmVkTG9jYXRpb24JARFAZXh0ck5hdGl2ZSgxMDU4KQEJARBrZXlTYXZlZExvY2F0aW9uAQULZHVja0Fzc2V0SWQJAJUKAwUOb3V0Y29tZUFjdGlvbnMJAMwIAgkBC1N0cmluZ0VudHJ5AgkBD2tleUR1Y2tMb2NhdGlvbgEFC2R1Y2tBc3NldElkBQ1zYXZlZExvY2F0aW9uBQNuaWwFDXNhdmVkTG9jYXRpb24BDW1lcmdlSW50ZXJuYWwGC25ld0xhbmRTaXplCG5ld0xldmVsB2Zvcm11bGEEYWRkcgxsYW5kQXNzZXRJZHMHbmVlZE1hdAQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQRhZGRyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkAwkBD2NoZWNrVG91cm5hbWVudAEFC2R1Y2tBc3NldElkCQACAQIdbWVyZ2VJbnRlcm5hbF9jaGVja1RvdXJuYW1lbnQDCQENY2hlY2tEZWxpdmVyeQEFC2R1Y2tBc3NldElkCQACAQIbbWVyZ2VJbnRlcm5hbF9jaGVja0RlbGl2ZXJ5CgEKY2hlY2tNZXJnZQIDYWNjC2xhbmRBc3NldElkBAVhc3NldAkBBXZhbHVlAQkA7AcBCQDZBAEFC2xhbmRBc3NldElkBAd0aW1lS2V5CQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFC2xhbmRBc3NldElkBAlzYXZlZFRpbWUJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnwgBBQd0aW1lS2V5CQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCDiBpcyBub3Qgc3Rha2VkBAVvd25lcgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARVrZXlMYW5kQXNzZXRJZFRvT3duZXIBBQtsYW5kQXNzZXRJZAkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAgwgaXMgb3JwaGFuZWQDCQECIT0CBQVvd25lcgUEYWRkcgkAAgEJAKwCAgUKTEFORFBSRUZJWAINIGlzIG5vdCB5b3VycwQBZAkAtQkCCAUFYXNzZXQLZGVzY3JpcHRpb24CAV8ECWNvbnRpbmVudAkAkQMCBQFkBQxyZWNDb250aW5lbnQDAwkBAiE9AggFA2FjYwJfMwIACQECIT0CCAUDYWNjAl8zBQljb250aW5lbnQHCQACAQIuTGFuZHMgc2hvdWxkIGJlIG9uIHRoZSBzYW1lIGNvbnRpbmVudCB0byBtZXJnZQQIbGFuZFNpemUJAJEDAgUBZAULcmVjTGFuZFNpemUEB3NpemVzSW4IBQNhY2MCXzEEAWkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAswkCBQdzaXplc0luBQhsYW5kU2l6ZQInWW91IGhhdmVuJ3QgcGFzc2VkIGFsbCB0aGUgbGFuZHMgbmVlZGVkBAhzaXplc091dAkArAICCQCvAgIFB3NpemVzSW4FAWkJALACAgUHc2l6ZXNJbgkAZAIFAWkAAQQGcGllY2VzCQEPbnVtUGllY2VzQnlTaXplAQUIbGFuZFNpemUEBGFydHMJAGQCCAUDYWNjAl8yCQELdmFsdWVPckVsc2UCCQCfCAEJASBrZXlMYW5kQXJ0U3RhdHVzQnlUeXBlQW5kQXNzZXRJZAIFCkFSVFBSRVNBTEUFC2xhbmRBc3NldElkAAAECmluZnJhTGV2ZWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAAABAhyZXFMZXZlbAQHJG1hdGNoMAUIbGFuZFNpemUDCQAAAgIBUwUHJG1hdGNoMAADAwkAAAICAU0FByRtYXRjaDAABAMJAAACAgFMBQckbWF0Y2gwAAUDCQAAAgICWEwFByRtYXRjaDAABgkAAgECGk9ubHkgUywgTSwgTCwgWEwgY2FuIG1lcmdlAwkBAiE9AgUKaW5mcmFMZXZlbAUIcmVxTGV2ZWwJAAIBAiJBbGwgbGFuZHMgc2hvdWxkIGJlIG1heGVkIHRvIG1lcmdlBAdsYW5kTnVtCQCRAwIFAWQFCnJlY0xhbmROdW0EDXRlcnJhaW5Db3VudHMJAQ1jb3VudFRlcnJhaW5zAQkAkQMCBQFkBQtyZWNUZXJyYWlucwQJZGVsdGFUaW1lCQBlAggFCWxhc3RCbG9jawl0aW1lc3RhbXAFCXNhdmVkVGltZQMJAGYCAAAFCWRlbHRhVGltZQkAAgEJAKwCAgkArAICCQCsAgICJlNhdmVkIHRpbWVzdGFtcCBpcyBpbiBmdXR1cmUsIHNhdmVkID0gCQCkAwEFCXNhdmVkVGltZQIMLCBjdXJyZW50ID0gCQCkAwEIBQlsYXN0QmxvY2sJdGltZXN0YW1wBBZkYWlseVByb2R1Y3Rpb25CeVBpZWNlCQEMYXBwbHlCb251c2VzAgULbGFuZEFzc2V0SWQFBnBpZWNlcwQJbGFuZEluZGV4CQBpAgUGcGllY2VzBQVTU0laRQQFYnBSZXMJAQZhZGRSZXMFCQC1CQIIBQNhY2MCXzQCAV8FDXRlcnJhaW5Db3VudHMFCWRlbHRhVGltZQUJbGFuZEluZGV4BRZkYWlseVByb2R1Y3Rpb25CeVBpZWNlBAVwcm9wcwkBGXVwZGF0ZVByb3BvcnRpb25zSW50ZXJuYWwECAUDYWNjAl82BQ10ZXJyYWluQ291bnRzBQlsYW5kSW5kZXgA////////////AQQGY1Byb3BzCQEZdXBkYXRlUHJvcG9ydGlvbnNJbnRlcm5hbAQIBQNhY2MDXzEwBQ10ZXJyYWluQ291bnRzBQlsYW5kSW5kZXgA////////////AQQLc3VtVGVycmFpbnMJARl1cGRhdGVQcm9wb3J0aW9uc0ludGVybmFsBAgFA2FjYwJfOQUNdGVycmFpbkNvdW50cwUJbGFuZEluZGV4AAEEBWxhbmRzCAUDYWNjAl83BANpZHgJAM8IAgUFbGFuZHMFC2xhbmRBc3NldElkAwkBASEBCQEJaXNEZWZpbmVkAQUDaWR4CQACAQkArAICAiBZb3VyIHN0YWtlZCBsYW5kcyBkb24ndCBjb250YWluIAULbGFuZEFzc2V0SWQECWN1c3RvbUtleQkBGmtleUxhbmRBc3NldElkVG9DdXN0b21OYW1lAQULbGFuZEFzc2V0SWQECmN1c3RvbU5hbWUJAQt2YWx1ZU9yRWxzZQIJAKIIAQUJY3VzdG9tS2V5AgAJAJwKCgUIc2l6ZXNPdXQFBGFydHMFCWNvbnRpbmVudAUFYnBSZXMJAM4IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIIBQNhY2MCXzUJAQtEZWxldGVFbnRyeQEJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQULbGFuZEFzc2V0SWQJAQtEZWxldGVFbnRyeQEJASJrZXlTdGFrZWRUaW1lQnlUeXBlQXNzZXRJZEFuZE93bmVyAwUKTEFORFBSRUZJWAULbGFuZEFzc2V0SWQFBGFkZHIJAQtEZWxldGVFbnRyeQEJARBrZXlMYW5kVG9Bc3NldElkAQUHbGFuZE51bQkBC0RlbGV0ZUVudHJ5AQkBFWtleUxhbmRBc3NldElkVG9Pd25lcgEFC2xhbmRBc3NldElkCQELRGVsZXRlRW50cnkBCQEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEFC2xhbmRBc3NldElkCQELRGVsZXRlRW50cnkBCQEea2V5SW5mcmFMZXZlbEJ5QXNzZXRJZEFuZE93bmVyAgULbGFuZEFzc2V0SWQFBGFkZHIJAQtEZWxldGVFbnRyeQEJASBrZXlMYW5kQXJ0U3RhdHVzQnlUeXBlQW5kQXNzZXRJZAIFCkFSVFBSRVNBTEUFC2xhbmRBc3NldElkCQELRGVsZXRlRW50cnkBCQERa2V5TGFuZE51bVRvT3duZXIBBQdsYW5kTnVtCQELRGVsZXRlRW50cnkBCQESa2V5V2FyZWhvdXNlQnlMYW5kAQULbGFuZEFzc2V0SWQJAQtEZWxldGVFbnRyeQEFCWN1c3RvbUtleQkBBEJ1cm4CCQDZBAEFC2xhbmRBc3NldElkAAEDCQECIT0CBQpjdXN0b21OYW1lAgAJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBGmtleUxhbmRDdXN0b21OYW1lVG9Bc3NldElkAQUKY3VzdG9tTmFtZQUDbmlsBQNuaWwFBXByb3BzCQDRCAIFBWxhbmRzCQEFdmFsdWUBBQNpZHgJAGQCCAUDYWNjAl84BQZwaWVjZXMFC3N1bVRlcnJhaW5zBQZjUHJvcHMEBWJwS2V5CQERa2V5QmFja3BhY2tCeUR1Y2sBBQtkdWNrQXNzZXRJZAQLY3VycmVudFBhY2sJAQtnZXRCYWNrcGFjawEFBWJwS2V5BAhwcm9wTGlzdAkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEJARFrZXlSZXNQcm9wb3J0aW9ucwACCzBfMF8wXzBfMF8wAgFfBAhsYW5kc0tleQkBFWtleVN0YWtlZExhbmRzQnlPd25lcgEFBGFkZHIECGxhbmRzU3RyCQCiCAEFCGxhbmRzS2V5BAdsYW5kc0luAwkBCWlzRGVmaW5lZAEFCGxhbmRzU3RyCQC9CQIJAQV2YWx1ZQEFCGxhbmRzU3RyAgFfBQNuaWwEBWNvbnQwCQCRAwIJALUJAggJAQV2YWx1ZQEJAOwHAQkA2QQBCQCRAwIFDGxhbmRBc3NldElkcwAAC2Rlc2NyaXB0aW9uAgFfBQxyZWNDb250aW5lbnQECWNvbnRQcm9wcwkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEJARZrZXlSZXNUeXBlc0J5Q29udGluZW50AQUFY29udDACCzBfMF8wXzBfMF8wAgFfBAFyCgACJGwFDGxhbmRBc3NldElkcwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJwKCgUHZm9ybXVsYQAAAgAJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4UmVzBQNuaWwFCHByb3BMaXN0BQdsYW5kc0luAAAJALUJAgILMF8wXzBfMF8wXzACAV8FCWNvbnRQcm9wcwoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEKY2hlY2tNZXJnZQIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNQkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUECWNvbnRpbmVudAgFAXICXzMEDGNvbnRpbmVudElkeAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDPCAIFCmNvbnRpbmVudHMFCWNvbnRpbmVudAkArAICAhNVbmtub3duIGNvbnRpbmVudDogBQljb250aW5lbnQECHRlcnJhaW5zCQETZ2VuVGVycmFpbnNGb3JNZXJnZQIIBQFyAl85CQBpAgkBD251bVBpZWNlc0J5U2l6ZQEFC25ld0xhbmRTaXplBQVTU0laRQQHZnJlZU51bQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQESa2V5TmV4dEZyZWVMYW5kTnVtAAkAZAIFD1BSRVNBTEVOVU1MQU5EUwABBApuZXdMYW5kTnVtCQCkAwEFB2ZyZWVOdW0EBWlzc3VlCQDCCAUJAQduZnROYW1lAgUKbmV3TGFuZE51bQULbmV3TGFuZFNpemUJALkJAgkAzAgCBQpuZXdMYW5kTnVtCQDMCAIFC25ld0xhbmRTaXplCQDMCAIFCHRlcnJhaW5zCQDMCAIFCWNvbnRpbmVudAUDbmlsAgFfAAEAAAcEB2Fzc2V0SWQJALgIAQUFaXNzdWUEDm5ld0xhbmRBc3NldElkCQDYBAEFB2Fzc2V0SWQEBm5ld01hdAkAuQkCCQERc3VidHJhY3RNYXRlcmlhbHMDCQBmAgUHbmVlZE1hdAAACQC1CQIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4TWF0AgFfBQduZWVkTWF0AgFfBAlwaWVjZXNLZXkJARZrZXlTdGFrZWRQaWVjZXNCeU93bmVyAQUEYWRkcgQMc3Rha2VkUGllY2VzCQELdmFsdWVPckVsc2UCCQCfCAEFCXBpZWNlc0tleQAACQCUCgIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIIBQFyAl81AwkAZgIJAJADAQgFAXICXzcAAAkBC1N0cmluZ0VudHJ5AgUIbGFuZHNLZXkJALsJAggFAXICXzcCAV8JAQtEZWxldGVFbnRyeQEFCGxhbmRzS2V5CQEMSW50ZWdlckVudHJ5AgUJcGllY2VzS2V5AwkAZgIIBQFyAl84BQxzdGFrZWRQaWVjZXMAAAkAZQIFDHN0YWtlZFBpZWNlcwgFAXICXzgJAQxJbnRlZ2VyRW50cnkCCQESa2V5TmV4dEZyZWVMYW5kTnVtAAkAZAIFB2ZyZWVOdW0AAQUFaXNzdWUJAQtTdHJpbmdFbnRyeQIJARBrZXlMYW5kVG9Bc3NldElkAQUKbmV3TGFuZE51bQUObmV3TGFuZEFzc2V0SWQJAQtTdHJpbmdFbnRyeQIJARVrZXlMYW5kQXNzZXRJZFRvT3duZXIBBQ5uZXdMYW5kQXNzZXRJZAUEYWRkcgkBC1N0cmluZ0VudHJ5AgkBEWtleUxhbmROdW1Ub093bmVyAQUKbmV3TGFuZE51bQUEYWRkcgkBDEludGVnZXJFbnRyeQIJASBrZXlMYW5kQXJ0U3RhdHVzQnlUeXBlQW5kQXNzZXRJZAIFCkFSVFBSRVNBTEUFDm5ld0xhbmRBc3NldElkCAUBcgJfMgkBDEludGVnZXJFbnRyeQIJARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQUObmV3TGFuZEFzc2V0SWQFCG5ld0xldmVsCQEMSW50ZWdlckVudHJ5AgkBHmtleUluZnJhTGV2ZWxCeUFzc2V0SWRBbmRPd25lcgIFDm5ld0xhbmRBc3NldElkBQRhZGRyBQhuZXdMZXZlbAkBC1N0cmluZ0VudHJ5AgUFYnBLZXkJALkJAgkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQpicElkeExldmVsCQDMCAIIBQFyAl80CQDMCAIFBm5ld01hdAkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QFA25pbAIBOgkBC1N0cmluZ0VudHJ5AgkBEWtleVJlc1Byb3BvcnRpb25zAAkAuQkCCAUBcgJfNgIBXwkBC1N0cmluZ0VudHJ5AgkBFmtleVJlc1R5cGVzQnlDb250aW5lbnQBBQljb250aW5lbnQJALkJAggFAXIDXzEwAgFfCQELU3RyaW5nRW50cnkCCQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQJALkJAgkAzAgCBQljb250aW5lbnQJAMwIAgIBTAkAzAgCBQ5uZXdMYW5kQXNzZXRJZAUDbmlsAgFfCQEOU2NyaXB0VHJhbnNmZXIDCQERQGV4dHJOYXRpdmUoMTA2MikBBQRhZGRyAAEFB2Fzc2V0SWQFDm5ld0xhbmRBc3NldElkAQNzMm0CBGFkZHIMbGFuZEFzc2V0SWRzCQENbWVyZ2VJbnRlcm5hbAYCAU0AAwIEU1NTUwUEYWRkcgUMbGFuZEFzc2V0SWRzAAABA20ybAIEYWRkcgxsYW5kQXNzZXRJZHMJAQ1tZXJnZUludGVybmFsBgIBTAAEAgNTTU0FBGFkZHIFDGxhbmRBc3NldElkcwkAaAIFEUluZnJhVXBncmFkZUNvc3RTAAQBBGwyeGwCBGFkZHIMbGFuZEFzc2V0SWRzCQENbWVyZ2VJbnRlcm5hbAYCAlhMAAUCBVNTU01MBQRhZGRyBQxsYW5kQXNzZXRJZHMJAGgCBRFJbmZyYVVwZ3JhZGVDb3N0UwAvAQZ4bDJ4eGwCBGFkZHIMbGFuZEFzc2V0SWRzCQENbWVyZ2VJbnRlcm5hbAYCA1hYTAAGAgNMWEwFBGFkZHIFDGxhbmRBc3NldElkcwkAaAIFEUluZnJhVXBncmFkZUNvc3RTADYBC21lcmdlQ29tbW9uAgRhZGRyDGxhbmRBc3NldElkcwQHJG1hdGNoMAkAkAMBBQxsYW5kQXNzZXRJZHMDCQAAAgAEBQckbWF0Y2gwCQEDczJtAgUEYWRkcgUMbGFuZEFzc2V0SWRzAwkAAAIAAwUHJG1hdGNoMAkBA20ybAIFBGFkZHIFDGxhbmRBc3NldElkcwMJAAACAAUFByRtYXRjaDAJAQRsMnhsAgUEYWRkcgUMbGFuZEFzc2V0SWRzAwkAAAIAAgUHJG1hdGNoMAkBBnhsMnh4bAIFBGFkZHIFDGxhbmRBc3NldElkcwkAAgECDVVua25vd24gbWVyZ2UBFWNoZWNrT3V0ZGF0ZWREZWxpdmVyeQEIdXNlckFkZHIEBGR1Y2sJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUIdXNlckFkZHIDCQEJaXNEZWZpbmVkAQUEZHVjawQLZHVja0Fzc2V0SWQJAQV2YWx1ZQEFBGR1Y2sEBmxvY0tleQkBD2tleUR1Y2tMb2NhdGlvbgEFC2R1Y2tBc3NldElkBANsb2MJALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBBQZsb2NLZXkFD0RFRkFVTFRMT0NBVElPTgIBXwQJc3RhcnRUaW1lCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDbG9jBQ9sb2NJZHhDb250aW5lbnQDAwkBAiE9AgkAkQMCBQNsb2MFCmxvY0lkeFR5cGUCAUQGCQBmAgkAZAIFCXN0YXJ0VGltZQUSVEVOX01JTlVURVNfTUlMTElTCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUDbmlsBAloZWFsdGhLZXkJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQDCQBmAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA2xvYwUIbG9jSWR4SWQAAAQGcmV3YXJkCQD8BwQFD2Vjb25vbXlDb250cmFjdAISc2VuZERlbGl2ZXJ5UmV3YXJkCQDMCAIFCHVzZXJBZGRyBQNuaWwFA25pbAMJAAACBQZyZXdhcmQFBnJld2FyZAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQDNCAIJAM0IAgQLbG9ja2VkVG90YWwJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPZWNvbm9teUNvbnRyYWN0BRFkZWxpdmVyeUxvY2tlZEtleQAABAZ1bmxvY2sJAPwHBAUPZWNvbm9teUNvbnRyYWN0AhR1cGRhdGVEZWxpdmVyeUxvY2tlZAkAzAgCCQBlAgULbG9ja2VkVG90YWwFFU1JTl9VU0RUX0ZFRV9ERUxJVkVSWQUDbmlsBQNuaWwDCQAAAgUGdW5sb2NrBQZ1bmxvY2sDCQBnAgAACQERQGV4dHJOYXRpdmUoMTA1NSkBBQloZWFsdGhLZXkFA25pbAQKcHVuaXNobWVudAkA/AcEBQR0aGlzAgtzYXZlSW50ZWdlcgkAzAgCCQEWa2V5RGVsaXZlcnlEZWxheUJ5RHVjawEFC2R1Y2tBc3NldElkCQDMCAIJAGQCBQlzdGFydFRpbWUFE0RFTElWRVJZX1BVTklTSE1FTlQFA25pbAUDbmlsAwkAAAIFCnB1bmlzaG1lbnQFCnB1bmlzaG1lbnQFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkBDEludGVnZXJFbnRyeQIFCWhlYWx0aEtleQkBEUBleHRyTmF0aXZlKDEwNTUpAQkBDmtleVNhdmVkSGVhbHRoAQULZHVja0Fzc2V0SWQJAQtTdHJpbmdFbnRyeQIFBmxvY0tleQkBEUBleHRyTmF0aXZlKDEwNTgpAQkBEGtleVNhdmVkTG9jYXRpb24BBQtkdWNrQXNzZXRJZAUDbmlsAQZwcm9sb2cBAWkDAwkBAiE9AggFAWkMb3JpZ2luQ2FsbGVyBQxyZXN0Q29udHJhY3QJAQt2YWx1ZU9yRWxzZQIJAKAIAQkBCmtleUJsb2NrZWQABwcJAAIBAh9Db250cmFjdHMgYXJlIHVuZGVyIG1haW50ZW5hbmNlBAh1c2VyQWRkcgkApQgBCAUBaQxvcmlnaW5DYWxsZXIJAM0IAgkBFWNoZWNrT3V0ZGF0ZWREZWxpdmVyeQEFCHVzZXJBZGRyCQELU3RyaW5nRW50cnkCCQERa2V5TGFzdFR4SWRCeVVzZXIBBQh1c2VyQWRkcgkA2AQBCAUBaQ10cmFuc2FjdGlvbklkAQxwcm9sb2dGbGlnaHQBAWkDAwkBAiE9AggFAWkMb3JpZ2luQ2FsbGVyBQxyZXN0Q29udHJhY3QJAQt2YWx1ZU9yRWxzZQIJAKAIAQkBCmtleUJsb2NrZWQABwcJAAIBAh9Db250cmFjdHMgYXJlIHVuZGVyIG1haW50ZW5hbmNlCQDMCAIJAQtTdHJpbmdFbnRyeQIJARFrZXlMYXN0VHhJZEJ5VXNlcgEJAKUIAQgFAWkMb3JpZ2luQ2FsbGVyCQDYBAEIBQFpDXRyYW5zYWN0aW9uSWQFA25pbCwBaQENY29uc3RydWN0b3JWMQEIcmVzdEFkZHIDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAkAzAgCCQELU3RyaW5nRW50cnkCCQEOa2V5UmVzdEFkZHJlc3MABQhyZXN0QWRkcgUDbmlsAWkBC3NhdmVJbnRlZ2VyAgNrZXkGYW1vdW50AwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQIgc2F2ZUludGVnZXIgaXMgbm90IHB1YmxpYyBtZXRob2QJAMwIAgkBDEludGVnZXJFbnRyeQIFA2tleQUGYW1vdW50BQNuaWwBaQEKc2V0QmxvY2tlZAEJaXNCbG9ja2VkAwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQIRcGVybWlzc2lvbiBkZW5pZWQJAMwIAgkBDEJvb2xlYW5FbnRyeQIJAQprZXlCbG9ja2VkAAUJaXNCbG9ja2VkBQNuaWwBaQEJc3Rha2VMYW5kAAQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAhxFeGFjdGx5IG9uZSBwYXltZW50IHJlcXVpcmVkBANwbXQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAQHYXNzZXRJZAkBBXZhbHVlAQgFA3BtdAdhc3NldElkBAdhZGRyZXNzCQClCAEIBQFpBmNhbGxlcgMJAQIhPQIIBQNwbXQGYW1vdW50AAEJAAIBCQCsAgIJAKwCAgIETkZUIAUKTEFORFBSRUZJWAIkIHRva2VuIHNob3VsZCBiZSBhdHRhY2hlZCBhcyBwYXltZW50BAVhc3NldAkBBXZhbHVlAQkA7AcBBQdhc3NldElkAwkBAiE9AggFBWFzc2V0Bmlzc3VlcgUEdGhpcwkAAgECF1Vua25vd24gaXNzdWVyIG9mIHRva2VuAwkBASEBCQEIY29udGFpbnMCCAUFYXNzZXQEbmFtZQUKTEFORFBSRUZJWAkAAgEJAKwCAgkArAICAglPbmx5IE5GVCAFCkxBTkRQUkVGSVgCFCB0b2tlbnMgYXJlIGFjY2VwdGVkBAtsYW5kTnVtU2l6ZQkAsAICCAUFYXNzZXQEbmFtZQAEBAdsYW5kTnVtAwkBCGNvbnRhaW5zAgULbGFuZE51bVNpemUCA1hYTAkAswICBQtsYW5kTnVtU2l6ZQADAwkBCGNvbnRhaW5zAgULbGFuZE51bVNpemUCAlhMCQCzAgIFC2xhbmROdW1TaXplAAIJALMCAgULbGFuZE51bVNpemUAAQMJAQEhAQkBCWlzRGVmaW5lZAEJALYJAQUHbGFuZE51bQkAAgEJAKwCAgIeQ2Fubm90IHBhcnNlIGxhbmQgbnVtYmVyIGZyb20gCAUFYXNzZXQEbmFtZQQLbGFuZEFzc2V0SWQJANgEAQUHYXNzZXRJZAQHdGltZUtleQkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAMJAQlpc0RlZmluZWQBCQCfCAEFB3RpbWVLZXkJAAIBCQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCEiBpcyBhbHJlYWR5IHN0YWtlZAQBZAkAtQkCCAUFYXNzZXQLZGVzY3JpcHRpb24CAV8EDXRlcnJhaW5Db3VudHMJAQ1jb3VudFRlcnJhaW5zAQkAkQMCBQFkBQtyZWNUZXJyYWlucwQGcGllY2VzCQEPbnVtUGllY2VzQnlTaXplAQkAkQMCBQFkBQtyZWNMYW5kU2l6ZQQJbGFuZEluZGV4CQBpAgUGcGllY2VzBQVTU0laRQQFcHJvcHMJARF1cGRhdGVQcm9wb3J0aW9ucwMFDXRlcnJhaW5Db3VudHMFCWxhbmRJbmRleAABBAxyZXNCeUNvbnRLZXkJARZrZXlSZXNUeXBlc0J5Q29udGluZW50AQkAkQMCBQFkBQxyZWNDb250aW5lbnQECWNvbnRQcm9wcwkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEFDHJlc0J5Q29udEtleQILMF8wXzBfMF8wXzACAV8EEHVwZGF0ZWRDb250UHJvcHMJALkJAgkBGXVwZGF0ZVByb3BvcnRpb25zSW50ZXJuYWwEBQljb250UHJvcHMFDXRlcnJhaW5Db3VudHMFCWxhbmRJbmRleAABAgFfBAhsYW5kc0tleQkBFWtleVN0YWtlZExhbmRzQnlPd25lcgEFB2FkZHJlc3MECGxhbmRzU3RyCQCiCAEFCGxhbmRzS2V5BAVsYW5kcwMJAQlpc0RlZmluZWQBBQhsYW5kc1N0cgkAvQkCCQEFdmFsdWUBBQhsYW5kc1N0cgIBXwUDbmlsAwkBD2NvbnRhaW5zRWxlbWVudAIFBWxhbmRzBQtsYW5kQXNzZXRJZAkAAgEJAKwCAgIiWW91ciBzdGFrZWQgbGFuZHMgYWxyZWFkeSBjb250YWluIAULbGFuZEFzc2V0SWQDCQBnAgkAkAMBBQVsYW5kcwUYTUFYX0xBTkRTX1NUQUtFRF9CWV9VU0VSCQACAQkArAICCQCsAgICGVlvdXIgYWxyZWFkeSBzdGFrZWQgbWF4ICgJAKQDAQUYTUFYX0xBTkRTX1NUQUtFRF9CWV9VU0VSAgcpIGxhbmRzBAppbmZyYUxldmVsCQELdmFsdWVPckVsc2UCCQCfCAEJARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQULbGFuZEFzc2V0SWQAAAQJcGllY2VzS2V5CQEWa2V5U3Rha2VkUGllY2VzQnlPd25lcgEFB2FkZHJlc3MECW9sZFBpZWNlcwkBC3ZhbHVlT3JFbHNlAgkAnwgBBQlwaWVjZXNLZXkAAAQJd2xnUmVzdWx0CQD8BwQFC3dsZ0NvbnRyYWN0AhJvblN0YWtlVW5zdGFrZUxhbmQJAMwIAgUHYWRkcmVzcwUDbmlsBQNuaWwJAJQKAgkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQd0aW1lS2V5CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBImtleVN0YWtlZFRpbWVCeVR5cGVBc3NldElkQW5kT3duZXIDBQpMQU5EUFJFRklYBQtsYW5kQXNzZXRJZAUHYWRkcmVzcwgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBC1N0cmluZ0VudHJ5AgUIbGFuZHNLZXkJALsJAgkAzQgCBQVsYW5kcwULbGFuZEFzc2V0SWQCAV8JAMwIAgkBDEludGVnZXJFbnRyeQIFCXBpZWNlc0tleQkAZAIFCW9sZFBpZWNlcwUGcGllY2VzCQDMCAIJAQtTdHJpbmdFbnRyeQIJARVrZXlMYW5kQXNzZXRJZFRvT3duZXIBBQtsYW5kQXNzZXRJZAUHYWRkcmVzcwkAzAgCCQELU3RyaW5nRW50cnkCCQERa2V5TGFuZE51bVRvT3duZXIBBQdsYW5kTnVtBQdhZGRyZXNzCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEea2V5SW5mcmFMZXZlbEJ5QXNzZXRJZEFuZE93bmVyAgULbGFuZEFzc2V0SWQFB2FkZHJlc3MFCmluZnJhTGV2ZWwJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEWtleVJlc1Byb3BvcnRpb25zAAUFcHJvcHMJAMwIAgkBC1N0cmluZ0VudHJ5AgUMcmVzQnlDb250S2V5BRB1cGRhdGVkQ29udFByb3BzBQNuaWwFDXByb2xvZ0FjdGlvbnMFCXdsZ1Jlc3VsdAFpAQt1bnN0YWtlTGFuZAENbGFuZEFzc2V0SWRJbgQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQEYWRkcgkApQgBCAUBaQZjYWxsZXIEAWMJARRjaGVja0NsYWltQ29uZGl0aW9ucwMFBGFkZHIFDWNsYWltTW9kZUR1Y2sFDWxhbmRBc3NldElkSW4EC2xhbmRBc3NldElkCAUBYwJfMgQBZAgFAWMCXzMECGxhbmRzS2V5CQEVa2V5U3Rha2VkTGFuZHNCeU93bmVyAQUEYWRkcgQNdGVycmFpbkNvdW50cwkBDWNvdW50VGVycmFpbnMBCQCRAwIFAWQFC3JlY1RlcnJhaW5zBAZwaWVjZXMJAQ9udW1QaWVjZXNCeVNpemUBCQCRAwIFAWQFC3JlY0xhbmRTaXplBAlsYW5kSW5kZXgJAGkCBQZwaWVjZXMFBVNTSVpFBAVwcm9wcwkBEXVwZGF0ZVByb3BvcnRpb25zAwUNdGVycmFpbkNvdW50cwUJbGFuZEluZGV4AP///////////wEEDHJlc0J5Q29udEtleQkBFmtleVJlc1R5cGVzQnlDb250aW5lbnQBCQCRAwIFAWQFDHJlY0NvbnRpbmVudAQJY29udFByb3BzCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAKIIAQUMcmVzQnlDb250S2V5AgswXzBfMF8wXzBfMAIBXwQQdXBkYXRlZENvbnRQcm9wcwkAuQkCCQEZdXBkYXRlUHJvcG9ydGlvbnNJbnRlcm5hbAQFCWNvbnRQcm9wcwUNdGVycmFpbkNvdW50cwUJbGFuZEluZGV4AP///////////wECAV8EC2NsYWltUmVzdWx0CQEIY2xhaW1BbGwEBQRhZGRyBQtsYW5kQXNzZXRJZAUGcGllY2VzBQ1jbGFpbU1vZGVEdWNrBAVsYW5kcwkAvQkCCQELdmFsdWVPckVsc2UCCQCiCAEFCGxhbmRzS2V5AgACAV8EA2lkeAkAzwgCBQVsYW5kcwULbGFuZEFzc2V0SWQDCQEBIQEJAQlpc0RlZmluZWQBBQNpZHgJAAIBCQCsAgICIFlvdXIgc3Rha2VkIGxhbmRzIGRvbid0IGNvbnRhaW4gBQtsYW5kQXNzZXRJZAQDbm93CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQOZ292UmVsZWFzZVRpbWUJAQt2YWx1ZU9yRWxzZQIJAJoIAgULZ292Q29udHJhY3QJARVrZXlVc2VyR3dsUmVsZWFzZVRpbWUBBQRhZGRyAAADCQBnAgUOZ292UmVsZWFzZVRpbWUFA25vdwkAAgEJAKwCAgI5WW91ciBnV0wgYXJlIHRha2luZyBwYXJ0IGluIHZvdGluZywgY2Fubm90IHVuc3Rha2UgdW50aWwgCQCkAwEFDmdvdlJlbGVhc2VUaW1lBA5hcmJSZWxlYXNlVGltZQkAZAIJAQt2YWx1ZU9yRWxzZQIJAJoIAgULd2xnQ29udHJhY3QJARRrZXlMYXN0QXJiVGltZUJ5VXNlcgEFBGFkZHIAAAUOYXJiaXRyYWdlRGVsYXkDCQBmAgUOYXJiUmVsZWFzZVRpbWUFA25vdwkAAgEJAKwCAgI/WW91ciBzdGFrZWQgbGFuZHMgdG9vayBwYXJ0IGluIGFyYml0cmFnZSwgY2Fubm90IHVuc3Rha2UgdW50aWwgCQCkAwEFDmFyYlJlbGVhc2VUaW1lBAlwaWVjZXNLZXkJARZrZXlTdGFrZWRQaWVjZXNCeU93bmVyAQUEYWRkcgQMc3Rha2VkUGllY2VzCQELdmFsdWVPckVsc2UCCQCfCAEFCXBpZWNlc0tleQAABAluZXdQaWVjZXMDCQBmAgUGcGllY2VzBQxzdGFrZWRQaWVjZXMAAAkAZQIFDHN0YWtlZFBpZWNlcwUGcGllY2VzBAl3bGdSZXN1bHQJAPwHBAULd2xnQ29udHJhY3QCEm9uU3Rha2VVbnN0YWtlTGFuZAkAzAgCBQRhZGRyBQNuaWwFA25pbAkAlAoCCQDOCAIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyAAEJANkEAQULbGFuZEFzc2V0SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAkAzAgCCQELRGVsZXRlRW50cnkBCQEia2V5U3Rha2VkVGltZUJ5VHlwZUFzc2V0SWRBbmRPd25lcgMFCkxBTkRQUkVGSVgFC2xhbmRBc3NldElkBQRhZGRyCQDMCAIJAQtTdHJpbmdFbnRyeQIJARFrZXlSZXNQcm9wb3J0aW9ucwAFBXByb3BzCQDMCAIJAQtTdHJpbmdFbnRyeQIFDHJlc0J5Q29udEtleQUQdXBkYXRlZENvbnRQcm9wcwkAzAgCCQELU3RyaW5nRW50cnkCCAULY2xhaW1SZXN1bHQCXzIJALkJAggFC2NsYWltUmVzdWx0Al8zAgE6CQDMCAIDCQBmAgkAkAMBBQVsYW5kcwABCQELU3RyaW5nRW50cnkCBQhsYW5kc0tleQkAuwkCCQDRCAIFBWxhbmRzCQEFdmFsdWUBBQNpZHgCAV8JAQtEZWxldGVFbnRyeQEFCGxhbmRzS2V5CQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlwaWVjZXNLZXkFCW5ld1BpZWNlcwUDbmlsBQ1wcm9sb2dBY3Rpb25zBQl3bGdSZXN1bHQBaQEJc3Rha2VEdWNrAAQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAhxFeGFjdGx5IG9uZSBwYXltZW50IHJlcXVpcmVkBANwbXQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAQHYXNzZXRJZAkBBXZhbHVlAQgFA3BtdAdhc3NldElkBAdhZGRyZXNzCQClCAEIBQFpBmNhbGxlcgMJAQIhPQIIBQNwbXQGYW1vdW50AAEJAAIBCQCsAgIJAKwCAgIETkZUIAUKRFVDS1BSRUZJWAIkIHRva2VuIHNob3VsZCBiZSBhdHRhY2hlZCBhcyBwYXltZW50BAVhc3NldAkBBXZhbHVlAQkA7AcBBQdhc3NldElkAwMJAQIhPQIIBQVhc3NldAZpc3N1ZXIFDWluY3ViYXRvckFkZHIJAQIhPQIIBQVhc3NldAZpc3N1ZXIFC2JyZWVkZXJBZGRyBwkAAgEJAKwCAgkArAICAhJVbmtub3duIGlzc3VlciBvZiAFCkRVQ0tQUkVGSVgCBiB0b2tlbgMJAQEhAQkBCGNvbnRhaW5zAggFBWFzc2V0BG5hbWUFCkRVQ0tQUkVGSVgJAAIBCQCsAgIJAKwCAgIJT25seSBORlQgBQpEVUNLUFJFRklYAhQgdG9rZW5zIGFyZSBhY2NlcHRlZAQKYXNzZXRJZFN0cgkA2AQBBQdhc3NldElkBAd0aW1lS2V5CQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFCmFzc2V0SWRTdHIDCQEJaXNEZWZpbmVkAQkAnwgBBQd0aW1lS2V5CQACAQkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAhIgaXMgYWxyZWFkeSBzdGFrZWQDCQEJaXNEZWZpbmVkAQkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQdhZGRyZXNzCQACAQkArAICAh1Zb3UgYWxyZWFkeSBzdGFrZWQgb25lIGR1Y2s6IAgFBWFzc2V0BG5hbWUEBmxvY0tleQkBD2tleUR1Y2tMb2NhdGlvbgEFCmFzc2V0SWRTdHIECGxvY2F0aW9uCQCiCAEFBmxvY0tleQQFYnBLZXkJARFrZXlCYWNrcGFja0J5RHVjawEFCmFzc2V0SWRTdHIECGJhY2twYWNrCQCiCAEFBWJwS2V5BAlrZXlIZWFsdGgJAQ1rZXlEdWNrSGVhbHRoAQUKYXNzZXRJZFN0cgQFbWF4SFAJAQltYXhIZWFsdGgBCQELdmFsdWVPckVsc2UCCQCfCAEJAQxrZXlEdWNrTGV2ZWwBBQphc3NldElkU3RyAAAECWN1ckhlYWx0aAkBC3ZhbHVlT3JFbHNlAgkAnwgBBQlrZXlIZWFsdGgFBW1heEhQCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIFB3RpbWVLZXkIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEia2V5U3Rha2VkVGltZUJ5VHlwZUFzc2V0SWRBbmRPd25lcgMFCkRVQ0tQUkVGSVgJANgEAQUHYXNzZXRJZAUHYWRkcmVzcwgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEGtleUR1Y2tJZFRvT3duZXIBBQphc3NldElkU3RyBQdhZGRyZXNzCQDMCAIJAQtTdHJpbmdFbnRyeQIJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFB2FkZHJlc3MFCmFzc2V0SWRTdHIFA25pbAMJAQlpc0RlZmluZWQBBQhsb2NhdGlvbgUDbmlsCQDOCAIJAMwIAgkBC1N0cmluZ0VudHJ5AgUGbG9jS2V5BQ9ERUZBVUxUTE9DQVRJT04FA25pbAMJAQlpc0RlZmluZWQBBQhiYWNrcGFjawUDbmlsCQDOCAIJAM0IAgkAzAgCCQELU3RyaW5nRW50cnkCBQVicEtleQIaMDowXzBfMF8wXzBfMDowXzBfMF8wXzBfMDoFA25pbAkBDEludGVnZXJFbnRyeQIFCWtleUhlYWx0aAUJY3VySGVhbHRoBQ1wcm9sb2dBY3Rpb25zAWkBC3Vuc3Rha2VEdWNrAQphc3NldElkU3RyBA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBAdhc3NldElkCQDZBAEFCmFzc2V0SWRTdHIEB2FkZHJlc3MJAKUIAQgFAWkGY2FsbGVyBAVhc3NldAkBBXZhbHVlAQkA7AcBBQdhc3NldElkBAd0aW1lS2V5CQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFCmFzc2V0SWRTdHIDCQEBIQEJAQlpc0RlZmluZWQBCQCfCAEFB3RpbWVLZXkJAAIBCQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCDiBpcyBub3Qgc3Rha2VkAwkBASEBCQEJaXNEZWZpbmVkAQkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQdhZGRyZXNzCQACAQkArAICCQCsAgICCVRoZSBkdWNrIAgFBWFzc2V0BG5hbWUCDiBpcyBub3Qgc3Rha2VkBAVvd25lcgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARBrZXlEdWNrSWRUb093bmVyAQUKYXNzZXRJZFN0cgkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAgwgaXMgb3JwaGFuZWQDCQECIT0CBQVvd25lcgUHYWRkcmVzcwkAAgECF1N0YWtlZCBORlQgaXMgbm90IHlvdXJzAwkBD2NoZWNrVG91cm5hbWVudAEFCmFzc2V0SWRTdHIJAAIBAht1bnN0YWtlRHVja19jaGVja1RvdXJuYW1lbnQDCQENY2hlY2tEZWxpdmVyeQEFCmFzc2V0SWRTdHIJAAIBAhl1bnN0YWtlRHVja19jaGVja0RlbGl2ZXJ5BAlrZXlIZWFsdGgJAQ1rZXlEdWNrSGVhbHRoAQUKYXNzZXRJZFN0cgQFbWF4SFAJAQltYXhIZWFsdGgBCQELdmFsdWVPckVsc2UCCQCfCAEJAQxrZXlEdWNrTGV2ZWwBBQphc3NldElkU3RyAAAEBmhlYWx0aAkBC3ZhbHVlT3JFbHNlAgkAnwgBBQlrZXlIZWFsdGgFBW1heEhQAwkAZgIFBW1heEhQBQZoZWFsdGgJAAIBCQCsAgIJAKwCAgIZUGxlYXNlIGhlYWwgeW91ciBkdWNrIHRvIAkApAMBBQVtYXhIUAITaHAgYmVmb3JlIHVuc3Rha2luZwkAzggCCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgABBQdhc3NldElkCQDMCAIJAQtEZWxldGVFbnRyeQEFB3RpbWVLZXkJAMwIAgkBC0RlbGV0ZUVudHJ5AQUJa2V5SGVhbHRoCQDMCAIJAQtEZWxldGVFbnRyeQEJAQ9rZXlEdWNrTG9jYXRpb24BBQphc3NldElkU3RyCQDMCAIJAQtEZWxldGVFbnRyeQEJARBrZXlEdWNrSWRUb093bmVyAQUKYXNzZXRJZFN0cgkAzAgCCQELRGVsZXRlRW50cnkBCQEia2V5U3Rha2VkVGltZUJ5VHlwZUFzc2V0SWRBbmRPd25lcgMFCkRVQ0tQUkVGSVgFCmFzc2V0SWRTdHIFB2FkZHJlc3MJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUHYWRkcmVzcwUDbmlsBQ1wcm9sb2dBY3Rpb25zAWkBCGNsYWltUmVzAgZhbW91bnQObGFuZEFzc2V0SWRTdHIEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQEBGFkZHIJAKUIAQgFAWkMb3JpZ2luQ2FsbGVyBAZyZXN1bHQJARBjbGFpbVJlc0ludGVybmFsBAUEYWRkcgUGYW1vdW50BQ1jbGFpbU1vZGVEdWNrBQ5sYW5kQXNzZXRJZFN0cgQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQRhZGRyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkCQCUCgIJAM4IAgkAzQgCCQDNCAIJAM4IAggFBnJlc3VsdAJfMQgJARd1cGRhdGVEdWNrU3RhdHNJbnRlcm5hbAIFC2R1Y2tBc3NldElkCQBrAwUHeHBDbGFpbQUGYW1vdW50BQVNVUxUOAJfMQkBC1N0cmluZ0VudHJ5AggFBnJlc3VsdAJfMgkAuQkCCAUGcmVzdWx0Al8zAgE6CQELU3RyaW5nRW50cnkCCAUGcmVzdWx0Al80CQC5CQIIBQZyZXN1bHQCXzUCAToFDXByb2xvZ0FjdGlvbnMJAJEDAggFBnJlc3VsdAJfMwUIYnBJZHhSZXMBaQEMY2xhaW1SZXNUb1dIAgZhbW91bnQObGFuZEFzc2V0SWRTdHIEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQEBGFkZHIJAKUIAQgFAWkMb3JpZ2luQ2FsbGVyBAZyZXN1bHQJARBjbGFpbVJlc0ludGVybmFsBAUEYWRkcgUGYW1vdW50BQtjbGFpbU1vZGVXaAUObGFuZEFzc2V0SWRTdHIJAJQKAgkAzggCCQDNCAIJAM0IAgkAzggCCAUGcmVzdWx0Al8xCAkBFnVwZGF0ZUFjY1N0YXRzSW50ZXJuYWwCBQRhZGRyCQBrAwUHeHBDbGFpbQUGYW1vdW50BQVNVUxUOAJfMQkBC1N0cmluZ0VudHJ5AggFBnJlc3VsdAJfMgkAuQkCCAUGcmVzdWx0Al8zAgE6CQELU3RyaW5nRW50cnkCCAUGcmVzdWx0Al80CQC5CQIIBQZyZXN1bHQCXzUCAToFDXByb2xvZ0FjdGlvbnMJAJEDAggFBnJlc3VsdAJfNQUId2hJZHhSZXMBaQEGZmxpZ2h0AgdtZXNzYWdlA3NpZwQNcHJvbG9nQWN0aW9ucwkBDHByb2xvZ0ZsaWdodAEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQIdXNlckFkZHIJAKUIAQgFAWkGY2FsbGVyBAFmCQEMZmxpZ2h0Q29tbW9uAwUIdXNlckFkZHIFB21lc3NhZ2UFA3NpZwQFbmV3SFAIBQFmAl8xBAtkdWNrQXNzZXRJZAgFAWYCXzIEBmxvY0tleQkBD2tleUR1Y2tMb2NhdGlvbgEFC2R1Y2tBc3NldElkBAtjdXJMb2NhdGlvbgkBC3ZhbHVlT3JFbHNlAgkAoggBBQZsb2NLZXkFD0RFRkFVTFRMT0NBVElPTgQLbmV3TG9jYXRpb24IBQFmAl80AwkAAAIFC25ld0xvY2F0aW9uBQtjdXJMb2NhdGlvbgkAAgECIllvdSBjYW4ndCBmbHkgdG8gdGhlIHNhbWUgbG9jYXRpb24EBm5ld0xvYwkAtQkCBQtuZXdMb2NhdGlvbgIBXwQGaXNUb3VyCQAAAgkAkQMCBQZuZXdMb2MFCmxvY0lkeFR5cGUCAVQEB2lzRGVsaXYJAAACCQCRAwIFBm5ld0xvYwUKbG9jSWR4VHlwZQIBRAQFZXFLZXkJARBrZXlEdWNrRXF1aXBtZW50AQULZHVja0Fzc2V0SWQECWN1cnJlbnRFcQkBC3ZhbHVlT3JFbHNlAgkAoggBBQVlcUtleQIXLDssXyw7LF8sOyxfLDssXyw7LF8sOywEDSR0MDcwMTY0NzAyNjEJARFzdWJ0cmFjdEVxdWlwbWVudAIFCWN1cnJlbnRFcQgFAWYCXzUEBW5ld0VxCAUNJHQwNzAxNjQ3MDI2MQJfMQQPc2hvdWxkWmVyb0J1ZmZzCAUNJHQwNzAxNjQ3MDI2MQJfMgQNJHQwNzAyNjQ3MzM3NgMJAQEhAQkBCW9uTWlzc2lvbgIFEnRvdXJuYW1lbnRDb250cmFjdAULY3VyTG9jYXRpb24DCQEBIQEJAQ9pc1VzdWFsTG9jYXRpb24BBQtuZXdMb2NhdGlvbgkBDGNoZWF0QXR0ZW1wdAMFC2N1ckxvY2F0aW9uBQtuZXdMb2NhdGlvbgAFAwkAZgIFBW5ld0hQAAAJAJQKAgULbmV3TG9jYXRpb24FBW5ld0hQCQCUCgIFC2N1ckxvY2F0aW9uAAADCQEOaXNJblRvdXJuYW1lbnQCBRJ0b3VybmFtZW50Q29udHJhY3QFC2N1ckxvY2F0aW9uAwkBASEBCQEOaXNJblRvdXJuYW1lbnQCBRJ0b3VybmFtZW50Q29udHJhY3QFC25ld0xvY2F0aW9uCQACAQIqWW91ciBkdWNrIGlzIHRha2luZyBwYXJ0IGluIHRoZSB0b3VybmFtZW50BAVzY29yZQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBm5ld0xvYwUIbG9jSWR4SWQEBmN1ckxvYwkAtQkCBQtjdXJMb2NhdGlvbgIBXwQGbGFzdElkCQELdmFsdWVPckVsc2UCCQCaCAIFEnRvdXJuYW1lbnRDb250cmFjdAUNbGFzdFRvdXJJZEtleQAAAwkBAiE9AgUFc2NvcmUJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUGY3VyTG9jBQhsb2NJZHhJZAABCQEMY2hlYXRBdHRlbXB0AwULY3VyTG9jYXRpb24FC25ld0xvY2F0aW9uAAcDCQBmAgUFbmV3SFAAAAQJbG9jYWxCZXN0CQELdmFsdWVPckVsc2UCCQCaCAIFEnRvdXJuYW1lbnRDb250cmFjdAkBGmtleUJlc3RSZXN1bHRCeVRvdXJBbmREdWNrAgUGbGFzdElkBQtkdWNrQXNzZXRJZAAABAh1cGRMb2NhbAMJAGYCBQVzY29yZQUJbG9jYWxCZXN0CQD8BwQFEnRvdXJuYW1lbnRDb250cmFjdAIOc2F2ZUR1Y2tSZXN1bHQJAMwIAgULZHVja0Fzc2V0SWQJAMwIAgUFc2NvcmUFA25pbAUDbmlsBQR1bml0AwkAAAIFCHVwZExvY2FsBQh1cGRMb2NhbAkAlAoCBQtuZXdMb2NhdGlvbgUFbmV3SFAJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAJQKAgULY3VyTG9jYXRpb24AAAMJAQEhAQkBDGlzSW5EZWxpdmVyeQEFC2N1ckxvY2F0aW9uBAhzYXZlZExvYwkBCGFzU3RyaW5nAQkA/AcEBQR0aGlzAhBhdXRvRXhpdERlbGl2ZXJ5CQDMCAIFC2R1Y2tBc3NldElkCQDMCAIFBW5ld0hQCQDMCAIDBQdpc0RlbGl2AgIxMAICMTEJAMwIAgAABQNuaWwFA25pbAMJAAACBQhzYXZlZExvYwUIc2F2ZWRMb2MDBQdpc0RlbGl2CQCUCgIFCHNhdmVkTG9jBQVuZXdIUAMJAGYCBQVuZXdIUAAACQCUCgIFC25ld0xvY2F0aW9uBQVuZXdIUAkAlAoCBQhzYXZlZExvYwAACQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAwkBASEBBQdpc0RlbGl2CQACAQIkWW91ciBkdWNrIGlzIHRha2luZyBwYXJ0IGluIGRlbGl2ZXJ5AwkBASEBCQEMaXNJbkRlbGl2ZXJ5AQULbmV3TG9jYXRpb24JAQxjaGVhdEF0dGVtcHQDBQtjdXJMb2NhdGlvbgULbmV3TG9jYXRpb24ADQQFc2NvcmUJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQZuZXdMb2MFCGxvY0lkeElkBAZjdXJMb2MJALUJAgULY3VyTG9jYXRpb24CAV8DCQECIT0CBQVzY29yZQkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQZjdXJMb2MFCGxvY0lkeElkAAEJAQxjaGVhdEF0dGVtcHQDBQtjdXJMb2NhdGlvbgULbmV3TG9jYXRpb24ADgMDCQBmAgUFbmV3SFAAAAkAZgIAAQUFc2NvcmUHCQCUCgIFC25ld0xvY2F0aW9uBQVuZXdIUAQIc2F2ZWRMb2MJAQhhc1N0cmluZwEJAPwHBAUEdGhpcwIQYXV0b0V4aXREZWxpdmVyeQkAzAgCBQtkdWNrQXNzZXRJZAkAzAgCBQVuZXdIUAkAzAgCAgUxNS0xNwkAzAgCBQVzY29yZQUDbmlsBQNuaWwDCQAAAgUIc2F2ZWRMb2MFCHNhdmVkTG9jCQCUCgIFCHNhdmVkTG9jBQVuZXdIUAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgQJbG9jVG9TYXZlCAUNJHQwNzAyNjQ3MzM3NgJfMQQIaHBUb1NhdmUIBQ0kdDA3MDI2NDczMzc2Al8yCQCUCgIJAM4IAgkAzggCCQDOCAIJAMwIAgkBC1N0cmluZ0VudHJ5AgUGbG9jS2V5BQlsb2NUb1NhdmUJAMwIAgkBC1N0cmluZ0VudHJ5AgUFZXFLZXkFBW5ld0VxCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQENa2V5RHVja0hlYWx0aAEFC2R1Y2tBc3NldElkBQhocFRvU2F2ZQUDbmlsBQ1wcm9sb2dBY3Rpb25zAwUPc2hvdWxkWmVyb0J1ZmZzCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQxrZXlEdWNrQnVmZnMBBQtkdWNrQXNzZXRJZAIJMF8wXzBfMF8wBQNuaWwFA25pbAgJARd1cGRhdGVEdWNrU3RhdHNJbnRlcm5hbAIFC2R1Y2tBc3NldElkAwkAZgIFBW5ld0hQAAAFD3hwU3VjY2Vzc0ZsaWdodAUMeHBGYWlsRmxpZ2h0Al8xCAUBZgJfMwFpAQRoZWFsAwpxdWFudGl0eUwxCnF1YW50aXR5TDIKcXVhbnRpdHlMMwQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDAwMJAGYCAAAFCnF1YW50aXR5TDEGCQBmAgAABQpxdWFudGl0eUwyBgkAZgIAAAUKcXVhbnRpdHlMMwkAAgECG1F1YW50aXR5IGNhbm5vdCBiZSBuZWdhdGl2ZQQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBCQClCAEIBQFpBmNhbGxlcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAMJAQ9jaGVja1RvdXJuYW1lbnQBBQtkdWNrQXNzZXRJZAkAAgECFGhlYWxfY2hlY2tUb3VybmFtZW50AwkBDWNoZWNrRGVsaXZlcnkBBQtkdWNrQXNzZXRJZAkAAgECEmhlYWxfY2hlY2tEZWxpdmVyeQQDcXRzCQDMCAIFCnF1YW50aXR5TDEJAMwIAgUKcXVhbnRpdHlMMgkAzAgCBQpxdWFudGl0eUwzBQNuaWwECWtleUhlYWx0aAkBDWtleUR1Y2tIZWFsdGgBBQtkdWNrQXNzZXRJZAQFbWF4SFAJAQltYXhIZWFsdGgBCQELdmFsdWVPckVsc2UCCQCfCAEJAQxrZXlEdWNrTGV2ZWwBBQtkdWNrQXNzZXRJZAAABAlvbGRIZWFsdGgJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJa2V5SGVhbHRoBQVtYXhIUAMJAGcCBQlvbGRIZWFsdGgFBW1heEhQCQACAQkArAICCQCsAgICD0hQIHNob3VsZCBiZSA8IAkApAMBBQVtYXhIUAIIIHRvIGhlYWwEBWJwS2V5CQERa2V5QmFja3BhY2tCeUR1Y2sBBQtkdWNrQXNzZXRJZAQLY3VycmVudFBhY2sJAQtnZXRCYWNrcGFjawEFBWJwS2V5BAhwcm9kTGlzdAMJAAACCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QCAAUDbmlsCQC8CQIJAJEDAgULY3VycmVudFBhY2sFCWJwSWR4UHJvZAIBXwoBC2l0ZXJhdGVQcm9kAgNhY2MGcmVjaXBlBAFuCAUDYWNjAl8yBAF4AwkAZgIJAJADAQUIcHJvZExpc3QFAW4JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQhwcm9kTGlzdAUBbgAAAwkAZgIAAwUBbgQBcQkAkQMCBQNxdHMFAW4DCQBmAgUBcQUBeAkAAgEJAKwCAgkArAICCQCsAgICDllvdSBoYXZlIG9ubHkgCQCkAwEFAXgCBCBvZiAJAJEDAgUJcHJvZFR5cGVzBQFuCQCVCgMJAM0IAggFA2FjYwJfMQkApAMBCQBlAgUBeAUBcQkAZAIFAW4AAQkAZAIIBQNhY2MCXzMJAGgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgkAtQkCBQZyZWNpcGUCAV8FCnJJZHhFZmZlY3QFAXEJAJUKAwkAzQgCCAUDYWNjAl8xCQCkAwEFAXgJAGQCBQFuAAEIBQNhY2MCXzMEBnJlc3VsdAoAAiRsBRBwcm9kdWN0aW9uTWF0cml4CgACJHMJAJADAQUCJGwKAAUkYWNjMAkAlQoDBQNuaWwAAAAACgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQtpdGVyYXRlUHJvZAIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgNTAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyBAluZXdIZWFsdGgJAJcDAQkAzAgCBQVtYXhIUAkAzAgCCQBkAgUJb2xkSGVhbHRoCAUGcmVzdWx0Al8zBQNuaWwJAJQKAgkAzggCCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIFCWtleUhlYWx0aAUJbmV3SGVhbHRoCQDMCAIJAQtTdHJpbmdFbnRyeQIFBWJwS2V5CQC6CQIJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUKYnBJZHhMZXZlbAkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeFJlcwkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeE1hdAkAzAgCCQC5CQIIBQZyZXN1bHQCXzECAV8FA25pbAIBOgUDbmlsBQ1wcm9sb2dBY3Rpb25zCAkBF3VwZGF0ZUR1Y2tTdGF0c0ludGVybmFsAgULZHVja0Fzc2V0SWQJAGgCBQZ4cEhlYWwJAGQCCQBkAgUKcXVhbnRpdHlMMQUKcXVhbnRpdHlMMgUKcXVhbnRpdHlMMwJfMQUJbmV3SGVhbHRoAWkBBmhlYWxFUwAEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQIcRXhhY3RseSBvbmUgcGF5bWVudCByZXF1aXJlZAQDcG10CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAADCQECIT0CCAUDcG10B2Fzc2V0SWQFC3VzZHRBc3NldElkCQACAQIaQWxsb3dlZCBVU0RUIHBheW1lbnQgb25seSEEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQkApQgBCAUBaQZjYWxsZXICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQDCQEPY2hlY2tUb3VybmFtZW50AQULZHVja0Fzc2V0SWQJAAIBAhZoZWFsRVNfY2hlY2tUb3VybmFtZW50AwkBDWNoZWNrRGVsaXZlcnkBBQtkdWNrQXNzZXRJZAkAAgECFGhlYWxFU19jaGVja0RlbGl2ZXJ5BAlrZXlIZWFsdGgJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQEBW1heEhQCQEJbWF4SGVhbHRoAQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEMa2V5RHVja0xldmVsAQULZHVja0Fzc2V0SWQAAAQJb2xkSGVhbHRoCQELdmFsdWVPckVsc2UCCQCfCAEFCWtleUhlYWx0aAUFbWF4SFADCQBmAgUJb2xkSGVhbHRoAAAJAAIBAihIUCBzaG91bGQgYmUgMCB0byBjYWxsIEVtZXJnZW5jeSBTZXJ2aWNlBAVicEtleQkBEWtleUJhY2twYWNrQnlEdWNrAQULZHVja0Fzc2V0SWQEC2N1cnJlbnRQYWNrCQELZ2V0QmFja3BhY2sBBQVicEtleQQIcHJvZExpc3QDCQAAAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kAgAFA25pbAkAvAkCCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QCAV8EDW1lZEtpdEFtb3VudDEDCQBmAgkAkAMBBQhwcm9kTGlzdAAACQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUIcHJvZExpc3QAAAAABA1tZWRLaXRBbW91bnQyAwkAZgIJAJADAQUIcHJvZExpc3QAAQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCHByb2RMaXN0AAEAAAQNbWVkS2l0QW1vdW50MwMJAGYCCQCQAwEFCHByb2RMaXN0AAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQhwcm9kTGlzdAACAAADAwMJAGYCBQ1tZWRLaXRBbW91bnQxAAAGCQBmAgUNbWVkS2l0QW1vdW50MgAABgkAZgIFDW1lZEtpdEFtb3VudDMAAAkAAgECH1lvdSBoYXZlIHRvIHVzZSBvd24gTWVkaWNhbCBLaXQECGV4aXN0U3RyCQCdCAIFD2Vjb25vbXlDb250cmFjdAkBDmtleUVzV2FyZWhvdXNlAAQMZXhpc3RBbW91bnRzAwkBCWlzRGVmaW5lZAEFCGV4aXN0U3RyCQC8CQIJAQV2YWx1ZQEFCGV4aXN0U3RyAgFfBQNuaWwEC2V4aXN0QW1vdW50AwkAZgIJAJADAQUMZXhpc3RBbW91bnRzAAAJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQxleGlzdEFtb3VudHMAAAAAAwkAZwIAAAULZXhpc3RBbW91bnQJAAIBAjlUaGVyZSBhcmUgbm8gTWVkaWNhbCBLaXRzIEwxIGF0IEVtZXJnZW5jeSBTZXJ2aWNlIHN0b3JhZ2UECW5ld0hlYWx0aAkAZAIFCW9sZEhlYWx0aAkBDXBhcnNlSW50VmFsdWUBCQCRAwIJALUJAgkAkQMCBRBwcm9kdWN0aW9uTWF0cml4AAACAV8FCnJJZHhFZmZlY3QEBW5ld0VTCQC5CQIJAMwIAgkApAMBCQBlAgULZXhpc3RBbW91bnQAAQkA0QgCBQxleGlzdEFtb3VudHMAAAIBXwQGcmVjaXBlCQC1CQIJAJEDAgUQcHJvZHVjdGlvbk1hdHJpeAAAAgFfBAh0b3RhbE1hdAkBEmdldFJlY2lwZU1hdGVyaWFscwEFBnJlY2lwZQQJc2VsbFByaWNlCQBrAwkAaAIFCHRvdGFsTWF0BQpFU1NFTExDT0VGBRBSRVNPVVJDRVBSSUNFTUlOCQBoAgUFTVVMVDgFDlBST0RVQ1RQS0dTSVpFAwkBAiE9AggFA3BtdAZhbW91bnQFCXNlbGxQcmljZQkAAgEJAKwCAgIbUGF5bWVudCBhdHRhY2hlZCBzaG91bGQgYmUgCQCkAwEFCXNlbGxQcmljZQQGcmVzdWx0CQEIYXNTdHJpbmcBCQD8BwQFD2Vjb25vbXlDb250cmFjdAIPdXBkYXRlRXNTdG9yYWdlCQDMCAIFBW5ld0VTBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFC3VzZHRBc3NldElkBQlzZWxsUHJpY2UFA25pbAkAlAoCCQDOCAIJAM0IAgUNcHJvbG9nQWN0aW9ucwkBDEludGVnZXJFbnRyeQIFCWtleUhlYWx0aAUJbmV3SGVhbHRoCAkBF3VwZGF0ZUR1Y2tTdGF0c0ludGVybmFsAgULZHVja0Fzc2V0SWQFCHhwQ2FsbEVTAl8xBQZyZXN1bHQBaQEOdXBkYXRlQmFja3BhY2sCC2R1Y2tBc3NldElkB25ld1BhY2sDCQECIT0CCAUBaQZjYWxsZXIFD2Vjb25vbXlDb250cmFjdAkAAgECEXBlcm1pc3Npb24gZGVuaWVkCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEWtleUJhY2twYWNrQnlEdWNrAQULZHVja0Fzc2V0SWQFB25ld1BhY2sFA25pbAUHbmV3UGFjawFpAQ9jb21taXRGb3JSYW5kb20ABA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQQLZmluaXNoQmxvY2sJAGQCBQZoZWlnaHQFC3JhbmRvbURlbGF5BARhZGRyCQClCAEIBQFpBmNhbGxlcgkAlAoCCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIJAQlrZXlDb21taXQBBQRhZGRyBQtmaW5pc2hCbG9jawUDbmlsBQ1wcm9sb2dBY3Rpb25zBQtmaW5pc2hCbG9jawFpAQhidXlTTGFuZAAEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQIcRXhhY3RseSBvbmUgcGF5bWVudCByZXF1aXJlZAQDcG10CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAADCQECIT0CCAUDcG10B2Fzc2V0SWQFC3VzZHRBc3NldElkCQACAQIaQWxsb3dlZCBVU0RUIHBheW1lbnQgb25seSEDCQECIT0CCAUDcG10BmFtb3VudAUHRVhQVVNEVAkAAgEJAKwCAgIbUGF5bWVudCBhdHRhY2hlZCBzaG91bGQgYmUgCQCkAwEFB0VYUFVTRFQEBnJlc3VsdAkBEmV4cGVkaXRpb25JbnRlcm5hbAIIBQFpBmNhbGxlcggFAWkNdHJhbnNhY3Rpb25JZAQLYWNyZXNSZXN1bHQJAQVhc0ludAEJAPwHBAUNYWNyZXNDb250cmFjdAIJYnVybkFjcmVzCQDMCAIFDFNfQ09TVF9BQ1JFUwUDbmlsBQNuaWwJAJQKAgkAzggCCQDOCAIJAM0IAggFBnJlc3VsdAJfMQkBDlNjcmlwdFRyYW5zZmVyAwUPZWNvbm9teUNvbnRyYWN0CAUDcG10BmFtb3VudAULdXNkdEFzc2V0SWQICQEWdXBkYXRlQWNjU3RhdHNJbnRlcm5hbAIJAKUIAQgFAWkGY2FsbGVyBQp4cE5ld1NMYW5kAl8xBQ1wcm9sb2dBY3Rpb25zCQCUCgIICAUGcmVzdWx0Al8yAl8xBQthY3Jlc1Jlc3VsdAFpAQpleHBlZGl0aW9uAgdtZXNzYWdlA3NpZwQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQIdXNlckFkZHIJAKUIAQgFAWkGY2FsbGVyBAFmCQEMZmxpZ2h0Q29tbW9uAwUIdXNlckFkZHIFB21lc3NhZ2UFA3NpZwQLZHVja0Fzc2V0SWQIBQFmAl8yBAlrZXlIZWFsdGgJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQEBWJwS2V5CQERa2V5QmFja3BhY2tCeUR1Y2sBBQtkdWNrQXNzZXRJZAQLY3VycmVudFBhY2sJAQtnZXRCYWNrcGFjawEFBWJwS2V5BAVtTGlzdAkAtQkCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeE1hdAIBXwQGbmV3TWF0CQC5CQIJARFzdWJ0cmFjdE1hdGVyaWFscwMGBQVtTGlzdAUMRVhQTUFURVJJQUxTAgFfBAVlcUtleQkBEGtleUR1Y2tFcXVpcG1lbnQBBQtkdWNrQXNzZXRJZAQJY3VycmVudEVxCQELdmFsdWVPckVsc2UCCQCiCAEFBWVxS2V5AhcsOyxfLDssXyw7LF8sOyxfLDssXyw7LAQNJHQwODA4MTY4MDkxMwkBEXN1YnRyYWN0RXF1aXBtZW50AgUJY3VycmVudEVxCAUBZgJfNQQFbmV3RXEIBQ0kdDA4MDgxNjgwOTEzAl8xBA9zaG91bGRaZXJvQnVmZnMIBQ0kdDA4MDgxNjgwOTEzAl8yBAFlCQESZXhwZWRpdGlvbkludGVybmFsAggFAWkGY2FsbGVyCAUBaQ10cmFuc2FjdGlvbklkBAJpZAgIBQFlAl8yAl8xBAZyZXN1bHQDCQBnAgAACAUBZgJfMQkAlQoDCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlrZXlIZWFsdGgAAAkAzAgCCQELU3RyaW5nRW50cnkCBQVlcUtleQUFbmV3RXEFA25pbAIAAAAJAJUKAwkAzggCCAUBZQJfMQMFD3Nob3VsZFplcm9CdWZmcwkAzAgCCQELU3RyaW5nRW50cnkCCQEMa2V5RHVja0J1ZmZzAQULZHVja0Fzc2V0SWQCCTBfMF8wXzBfMAUDbmlsCQDNCAIJAM0IAgkAzQgCCQDNCAIFA25pbAkBC1N0cmluZ0VudHJ5AgkBD2tleUR1Y2tMb2NhdGlvbgEFC2R1Y2tBc3NldElkCQC5CQIJAMwIAggIBQFlAl8yAl8yCQDMCAICAUwJAMwIAgUCaWQFA25pbAIBXwkBDEludGVnZXJFbnRyeQIFCWtleUhlYWx0aAgFAWYCXzEJAQtTdHJpbmdFbnRyeQIFBWVxS2V5BQVuZXdFcQkBC1N0cmluZ0VudHJ5AgUFYnBLZXkJALkJAgkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQpicElkeExldmVsCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4UmVzCQDMCAIFBm5ld01hdAkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QFA25pbAIBOgUCaWQIBQFmAl8zAwkBD2NoZWNrVG91cm5hbWVudAEFC2R1Y2tBc3NldElkCQACAQIaZXhwZWRpdGlvbl9jaGVja1RvdXJuYW1lbnQDCQENY2hlY2tEZWxpdmVyeQEFC2R1Y2tBc3NldElkCQACAQIYZXhwZWRpdGlvbl9jaGVja0RlbGl2ZXJ5BAthY3Jlc1Jlc3VsdAkBBWFzSW50AQkA/AcEBQ1hY3Jlc0NvbnRyYWN0AglidXJuQWNyZXMJAMwIAgUMU19DT1NUX0FDUkVTBQNuaWwFA25pbAkAlAoCCQDOCAIJAM4IAggFBnJlc3VsdAJfMQgJARd1cGRhdGVEdWNrU3RhdHNJbnRlcm5hbAIFC2R1Y2tBc3NldElkBQp4cE5ld1NMYW5kAl8xBQ1wcm9sb2dBY3Rpb25zCQCVCgMIBQZyZXN1bHQCXzIIBQZyZXN1bHQCXzMFC2FjcmVzUmVzdWx0AWkBEGJ1eVNMYW5kRm9yQWNyZXMABA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECImV4YWN0bHkgMSBwYXltZW50IG11c3QgYmUgYXR0YWNoZWQEA3BtdAkAkQMCCAUBaQhwYXltZW50cwAABANhbXQIBQNwbXQGYW1vdW50AwMJAQEhAQkBCWlzRGVmaW5lZAEIBQNwbXQHYXNzZXRJZAYJAQIhPQIJAQV2YWx1ZQEIBQNwbXQHYXNzZXRJZAUMYWNyZXNBc3NldElkCQACAQIUQUNSRVMgcGF5bWVudHMgb25seSEDCQECIT0CBQNhbXQFDFNfQ09TVF9BQ1JFUwkAAgEJAKwCAgIbUGF5bWVudCBhdHRhY2hlZCBzaG91bGQgYmUgCQCkAwEFDFNfQ09TVF9BQ1JFUwQGcmVzdWx0CQESZXhwZWRpdGlvbkludGVybmFsAggFAWkGY2FsbGVyCAUBaQ10cmFuc2FjdGlvbklkBAthY3Jlc1Jlc3VsdAkBBWFzSW50AQkA/AcEBQ1hY3Jlc0NvbnRyYWN0AglidXJuQWNyZXMJAMwIAgUMU19DT1NUX0FDUkVTBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFDGFjcmVzQXNzZXRJZAUDYW10BQNuaWwJAJQKAgkAzggCCQDOCAIIBQZyZXN1bHQCXzEICQEWdXBkYXRlQWNjU3RhdHNJbnRlcm5hbAIJAKUIAQgFAWkGY2FsbGVyBQp4cE5ld1NMYW5kAl8xBQ1wcm9sb2dBY3Rpb25zCQCUCgIICAUGcmVzdWx0Al8yAl8xBQthY3Jlc1Jlc3VsdAFpAQx1cGdyYWRlSW5mcmEBC2xhbmRBc3NldElkBA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBAZyZXN1bHQJAQ11cEluZnJhQ29tbW9uBAYIBQFpBmNhbGxlcgAABQtsYW5kQXNzZXRJZAQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBCQClCAEIBQFpBmNhbGxlcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAkAlAoCCQDOCAIJAM4IAggFBnJlc3VsdAJfMQUNcHJvbG9nQWN0aW9ucwgJARd1cGRhdGVEdWNrU3RhdHNJbnRlcm5hbAIFC2R1Y2tBc3NldElkCQBrAwUOeHBVcGdyYWRlSW5mcmEIBQZyZXN1bHQCXzMFBU1VTFQ4Al8xCAUGcmVzdWx0Al8yAWkBEGFjdGl2YXRlQXJ0aWZhY3QCB2FydE5hbWUObGFuZEFzc2V0SWRPcHQEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQEBGFkZHIJAKUIAQgFAWkGY2FsbGVyBAZyZXN1bHQEByRtYXRjaDAFB2FydE5hbWUDCQAAAgIHUFJFU0FMRQUHJG1hdGNoMAkBEmFjdGl2YXRlUHJlc2FsZUFydAIFBGFkZHIFDmxhbmRBc3NldElkT3B0AwkAAAICB09OQk9BUkQFByRtYXRjaDAJARJhY3RpdmF0ZU9uYm9hcmRBcnQBBQRhZGRyCQACAQIQVW5rbm93biBhcnRpZmFjdAkAzggCBQZyZXN1bHQFDXByb2xvZ0FjdGlvbnMBaQEKbWVyZ2VMYW5kcwEMbGFuZEFzc2V0SWRzBA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBAZyZXN1bHQJAQttZXJnZUNvbW1vbgIJAKUIAQgFAWkGY2FsbGVyBQxsYW5kQXNzZXRJZHMJAJQKAgkAzggCCQDOCAIIBQZyZXN1bHQCXzEFDXByb2xvZ0FjdGlvbnMICQEWdXBkYXRlQWNjU3RhdHNJbnRlcm5hbAIJAKUIAQgFAWkGY2FsbGVyBQd4cE1lcmdlAl8xCAUGcmVzdWx0Al8yAWkBDWNhcmdvRXhjaGFuZ2UCDGNhcmdvTGlzdFN0cgtsYW5kQXNzZXRJZAQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQKY2FyZ29QYXJ0cwkAvAkCBQxjYXJnb0xpc3RTdHICAToEBGFkZHIJAKUIAQgFAWkMb3JpZ2luQ2FsbGVyBAVhc3NldAkBBXZhbHVlAQkA7AcBCQDZBAEFC2xhbmRBc3NldElkBAd0aW1lS2V5CQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFC2xhbmRBc3NldElkAwkBASEBCQEJaXNEZWZpbmVkAQkAnwgBBQd0aW1lS2V5CQACAQkArAICCAUFYXNzZXQEbmFtZQIOIGlzIG5vdCBzdGFrZWQEBW93bmVyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFWtleUxhbmRBc3NldElkVG9Pd25lcgEFC2xhbmRBc3NldElkCQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCDCBpcyBvcnBoYW5lZAMJAQIhPQIFBW93bmVyBQRhZGRyCQACAQkArAICBQpMQU5EUFJFRklYAg0gaXMgbm90IHlvdXJzBAlsYW5kSW5kZXgJAGkCCQEPbnVtUGllY2VzQnlTaXplAQkAkQMCCQC1CQIIBQVhc3NldAtkZXNjcmlwdGlvbgIBXwULcmVjTGFuZFNpemUFBVNTSVpFBAppbmZyYUxldmVsCQELdmFsdWVPckVsc2UCCQCfCAEJARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQULbGFuZEFzc2V0SWQAAAQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQRhZGRyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkBAtjdXJMb2NhdGlvbgkBC3ZhbHVlT3JFbHNlAgkAoggBCQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQFD0RFRkFVTFRMT0NBVElPTgQDbG9jCQC1CQIJAQV2YWx1ZQEFC2N1ckxvY2F0aW9uAgFfAwkBAiE9AgkAkQMCBQNsb2MFCmxvY0lkeFR5cGUCAUwJAAIBCQCsAgIJAKwCAgIWRHVjayBsb2NhdGlvbiB0eXBlIGlzIAkAkQMCBQNsb2MFCmxvY0lkeFR5cGUCESwgYnV0IHNob3VsZCBiZSBMAwkBAiE9AgkAkQMCBQNsb2MFCGxvY0lkeElkBQtsYW5kQXNzZXRJZAkAAgEJAKwCAgIbRHVjayBzaG91bGQgYmUgb24gdGhlIGxhbmQgBQtsYW5kQXNzZXRJZAQFd2hLZXkJARJrZXlXYXJlaG91c2VCeUxhbmQBBQtsYW5kQXNzZXRJZAQJY3VycmVudFdoCQEMZ2V0V2FyZWhvdXNlAwUFd2hLZXkFCWxhbmRJbmRleAUKaW5mcmFMZXZlbAQFYnBLZXkJARFrZXlCYWNrcGFja0J5RHVjawEFC2R1Y2tBc3NldElkBAtjdXJyZW50UGFjawkBC2dldEJhY2twYWNrAQUFYnBLZXkEBnJlc3VsdAkBCW1vdmVTdHVmZgMFCmNhcmdvUGFydHMFCWN1cnJlbnRXaAULY3VycmVudFBhY2sEBGxvZnQJALUJAgkAkQMCBQljdXJyZW50V2gFCXdoSWR4TE9GVAIBXwQFbG9mdE8JAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbG9mdAULdm9sT2NjdXBpZWQIBQZyZXN1bHQCXzcEBWxvZnRGCQBlAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFB3ZvbEZyZWUIBQZyZXN1bHQCXzcJAM4IAgkAzAgCCQELU3RyaW5nRW50cnkCBQVicEtleQkAugkCCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCmJwSWR4TGV2ZWwJAMwIAggFBnJlc3VsdAJfNAkAzAgCCAUGcmVzdWx0Al81CQDMCAIIBQZyZXN1bHQCXzYFA25pbAIBOgkAzAgCCQELU3RyaW5nRW50cnkCBQV3aEtleQkAugkCCQDMCAIJAJEDAgUJY3VycmVudFdoBQt3aElkeExldmVscwkAzAgCCAUGcmVzdWx0Al8xCQDMCAIIBQZyZXN1bHQCXzIJAMwIAggFBnJlc3VsdAJfMwkAzAgCCQC5CQIJAMwIAgkAkQMCBQRsb2Z0BQl2b2xMb2NrZWQJAMwIAgkApAMBBQVsb2Z0TwkAzAgCCQCkAwEFBWxvZnRGCQDMCAIJAJEDAgUEbG9mdAUIdm9sVG90YWwFA25pbAIBXwUDbmlsAgE6BQNuaWwFDXByb2xvZ0FjdGlvbnMBaQENc2F2ZVdhcmVob3VzZQIFd2hTdHILbGFuZEFzc2V0SWQDCQECIT0CCAUBaQZjYWxsZXIFD2Vjb25vbXlDb250cmFjdAkAAgECDUFjY2VzcyBkZW5pZWQEBXdoS2V5CQESa2V5V2FyZWhvdXNlQnlMYW5kAQULbGFuZEFzc2V0SWQEAndoCQC8CQIFBXdoU3RyAgE6AwkBAiE9AgkAkAMBBQJ3aAAFCQACAQIwd2FyZWhvdXNlIHN0cmluZyBzaG91bGQgY29udGFpbiA0ICc6JyBzZXBhcmF0b3JzBAVsb2Z0TAkAkQMCCQC1CQIJAJEDAgUCd2gFCXdoSWR4TE9GVAIBXwUJdm9sTG9ja2VkBAVsb2Z0TwkBF2dldFdhcmVob3VzZU9jY3VwaWVkVm9sAQUCd2gEBWxvZnRUCQEXZ2V0V2FyZWhvdXNlVG90YWxWb2x1bWUBCQCRAwIFAndoBQt3aElkeExldmVscwQFbG9mdEYJAGUCCQBlAgUFbG9mdFQJAQ1wYXJzZUludFZhbHVlAQUFbG9mdEwFBWxvZnRPAwkAZgIAAAUFbG9mdEYJAAIBAjBPcGVyYXRpb24gbGVhZHMgdG8gbmVnYXRpdmUgZnJlZSB3YXJlaG91c2Ugc3BhY2UECG5ld1doU3RyCQC6CQIJAMwIAgkAkQMCBQJ3aAULd2hJZHhMZXZlbHMJAMwIAgkAkQMCBQJ3aAUId2hJZHhSZXMJAMwIAgkAkQMCBQJ3aAUId2hJZHhNYXQJAMwIAgkAkQMCBQJ3aAUJd2hJZHhQcm9kCQDMCAIJALkJAgkAzAgCBQVsb2Z0TAkAzAgCCQCkAwEFBWxvZnRPCQDMCAIJAKQDAQUFbG9mdEYJAMwIAgkApAMBBQVsb2Z0VAUDbmlsAgFfBQNuaWwCAToJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCBQV3aEtleQUIbmV3V2hTdHIFA25pbAUIbmV3V2hTdHIBaQENc2V0Q3VzdG9tTmFtZQMHYXNzZXRJZApjdXN0b21OYW1lBHR5cGUEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQIcRXhhY3RseSBvbmUgcGF5bWVudCByZXF1aXJlZAQDcG10CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAADCQECIT0CCAUDcG10B2Fzc2V0SWQFC3VzZHRBc3NldElkCQACAQIaQWxsb3dlZCBVU0RUIHBheW1lbnQgb25seSEDCQECIT0CCAUDcG10BmFtb3VudAUMUkVOQU1JTkdDT1NUCQACAQkArAICAhJQYXltZW50IHNob3VsZCBiZSAJAKQDAQUMUkVOQU1JTkdDT1NUAwkBCGNvbnRhaW5zAgUKY3VzdG9tTmFtZQICX18JAAIBCQCsAgICHk5hbWUgc2hvdWxkIG5vdCBjb250YWluICdfXyc6IAUKY3VzdG9tTmFtZQMJAGYCCQCxAgEFCmN1c3RvbU5hbWUFCk1BWE5BTUVMRU4JAAIBCQCsAgICGU5hbWUgdG9vIGxvbmcsIG1heExlbmd0aD0JAKQDAQUKTUFYTkFNRUxFTgQEYWRkcgkApQgBCAUBaQxvcmlnaW5DYWxsZXIEB2FjdGlvbnMEByRtYXRjaDAFBHR5cGUDCQAAAgIHQUNDT1VOVAUHJG1hdGNoMAQKcmV2ZXJzZUtleQkBFmtleUN1c3RvbU5hbWVUb0FkZHJlc3MBBQpjdXN0b21OYW1lBAluYW1lT3duZXIJAKIIAQUKcmV2ZXJzZUtleQMJAQlpc0RlZmluZWQBBQluYW1lT3duZXIJAAIBCQCsAgICGU5hbWUgYWxyZWFkeSByZWdpc3RlcmVkOiAFCmN1c3RvbU5hbWUEDWFkZHJUb05hbWVLZXkJARZrZXlBZGRyZXNzVG9DdXN0b21OYW1lAQUEYWRkcgQHb2xkTmFtZQkAoggBBQ1hZGRyVG9OYW1lS2V5BAdmcmVlT2xkAwkBCWlzRGVmaW5lZAEFB29sZE5hbWUJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBFmtleUN1c3RvbU5hbWVUb0FkZHJlc3MBCQEFdmFsdWUBBQdvbGROYW1lBQNuaWwFA25pbAkAzggCCQDNCAIJAM0IAgUHZnJlZU9sZAkBC1N0cmluZ0VudHJ5AgUNYWRkclRvTmFtZUtleQUKY3VzdG9tTmFtZQkBC1N0cmluZ0VudHJ5AgUKcmV2ZXJzZUtleQUEYWRkcggJARZ1cGRhdGVBY2NTdGF0c0ludGVybmFsAgUEYWRkcgUMeHBDdXN0b21OYW1lAl8xAwkAAAICBExBTkQFByRtYXRjaDAEBWFzc2V0CQEFdmFsdWUBCQDsBwEJANkEAQUHYXNzZXRJZAQHdGltZUtleQkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQdhc3NldElkAwkBASEBCQEJaXNEZWZpbmVkAQkAnwgBBQd0aW1lS2V5CQACAQkArAICCAUFYXNzZXQEbmFtZQIOIGlzIG5vdCBzdGFrZWQEBW93bmVyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFWtleUxhbmRBc3NldElkVG9Pd25lcgEFB2Fzc2V0SWQJAKwCAgkArAICAgRORlQgCAUFYXNzZXQEbmFtZQIMIGlzIG9ycGhhbmVkAwkBAiE9AgUFb3duZXIFBGFkZHIJAAIBCQCsAgIFCkxBTkRQUkVGSVgCDSBpcyBub3QgeW91cnMECnJldmVyc2VLZXkJARprZXlMYW5kQ3VzdG9tTmFtZVRvQXNzZXRJZAEFCmN1c3RvbU5hbWUECW5hbWVPd25lcgkAoggBBQpyZXZlcnNlS2V5AwkBCWlzRGVmaW5lZAEFCW5hbWVPd25lcgkAAgEJAKwCAgIZTmFtZSBhbHJlYWR5IHJlZ2lzdGVyZWQ6IAUKY3VzdG9tTmFtZQQOYXNzZXRUb05hbWVLZXkJARprZXlMYW5kQXNzZXRJZFRvQ3VzdG9tTmFtZQEFB2Fzc2V0SWQEB29sZE5hbWUJAKIIAQUOYXNzZXRUb05hbWVLZXkEB2ZyZWVPbGQDCQEJaXNEZWZpbmVkAQUHb2xkTmFtZQkAzAgCCQELRGVsZXRlRW50cnkBCQEaa2V5TGFuZEN1c3RvbU5hbWVUb0Fzc2V0SWQBCQEFdmFsdWUBBQdvbGROYW1lBQNuaWwFA25pbAkAzggCCQDNCAIJAM0IAgUHZnJlZU9sZAkBC1N0cmluZ0VudHJ5AgUOYXNzZXRUb05hbWVLZXkFCmN1c3RvbU5hbWUJAQtTdHJpbmdFbnRyeQIFCnJldmVyc2VLZXkFB2Fzc2V0SWQICQEWdXBkYXRlQWNjU3RhdHNJbnRlcm5hbAIFBGFkZHIFDHhwQ3VzdG9tTmFtZQJfMQMJAAACAgREVUNLBQckbWF0Y2gwBAVhc3NldAkBBXZhbHVlAQkA7AcBCQDZBAEFB2Fzc2V0SWQEB3RpbWVLZXkJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQUHYXNzZXRJZAMDCQEBIQEJAQlpc0RlZmluZWQBCQCfCAEFB3RpbWVLZXkGCQEBIQEJAQlpc0RlZmluZWQBCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFBGFkZHIJAAIBCQCsAgIIBQVhc3NldARuYW1lAg4gaXMgbm90IHN0YWtlZAQFb3duZXIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEQa2V5RHVja0lkVG9Pd25lcgEFB2Fzc2V0SWQJAKwCAgkArAICAgRORlQgCAUFYXNzZXQEbmFtZQIMIGlzIG9ycGhhbmVkAwkBAiE9AgUFb3duZXIFBGFkZHIJAAIBCQCsAgIFCkRVQ0tQUkVGSVgCDSBpcyBub3QgeW91cnMECnJldmVyc2VLZXkJARprZXlEdWNrQ3VzdG9tTmFtZVRvQXNzZXRJZAEFCmN1c3RvbU5hbWUECW5hbWVPd25lcgkAoggBBQpyZXZlcnNlS2V5AwkBCWlzRGVmaW5lZAEFCW5hbWVPd25lcgkAAgEJAKwCAgIZTmFtZSBhbHJlYWR5IHJlZ2lzdGVyZWQ6IAUKY3VzdG9tTmFtZQQOYXNzZXRUb05hbWVLZXkJARprZXlEdWNrQXNzZXRJZFRvQ3VzdG9tTmFtZQEFB2Fzc2V0SWQEB29sZE5hbWUJAKIIAQUOYXNzZXRUb05hbWVLZXkEB2ZyZWVPbGQDCQEJaXNEZWZpbmVkAQUHb2xkTmFtZQkAzAgCCQELRGVsZXRlRW50cnkBCQEaa2V5RHVja0N1c3RvbU5hbWVUb0Fzc2V0SWQBCQEFdmFsdWUBBQdvbGROYW1lBQNuaWwFA25pbAkAzggCCQDNCAIJAM0IAgUHZnJlZU9sZAkBC1N0cmluZ0VudHJ5AgUOYXNzZXRUb05hbWVLZXkFCmN1c3RvbU5hbWUJAQtTdHJpbmdFbnRyeQIFCnJldmVyc2VLZXkFB2Fzc2V0SWQICQEXdXBkYXRlRHVja1N0YXRzSW50ZXJuYWwCBQdhc3NldElkBQx4cEN1c3RvbU5hbWUCXzEJAAIBAhNVbmtub3duIGVudGl0eSB0eXBlCQCUCgIJAM4IAgkAzQgCBQdhY3Rpb25zCQEOU2NyaXB0VHJhbnNmZXIDBQ9lY29ub215Q29udHJhY3QIBQNwbXQGYW1vdW50BQt1c2R0QXNzZXRJZAUNcHJvbG9nQWN0aW9ucwAAAWkBDHNldFJlZmVycmFscwIJb2xkUGxheWVyCW5ld1BsYXllcgMJAQIhPQIIBQFpD2NhbGxlclB1YmxpY0tleQUDcHViCQACAQIRUGVybWlzc2lvbiBkZW5pZWQEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQDCQEBIQEJAQlpc0RlZmluZWQBCQCmCAEFCW9sZFBsYXllcgkAAgEJAKwCAgIRSW52YWxpZCBhZGRyZXNzOiAFCW9sZFBsYXllcgMJAQEhAQkBCWlzRGVmaW5lZAEJAKYIAQUJbmV3UGxheWVyCQACAQkArAICAhFJbnZhbGlkIGFkZHJlc3M6IAUJbmV3UGxheWVyBAdvbGRzS2V5CQEJa2V5T2xkaWVzAAQEb2xkcwkAoggBBQdvbGRzS2V5BAZvbGRpZXMDCQEJaXNEZWZpbmVkAQUEb2xkcwkAvAkCCQEFdmFsdWUBBQRvbGRzAgFfBQNuaWwDCQEPY29udGFpbnNFbGVtZW50AgUGb2xkaWVzBQluZXdQbGF5ZXIJAAIBCQCsAgIFCW5ld1BsYXllcgImIGlzIG5vdCBuZXdiaWUgKGFscmVhZHkgaGFzIHJlZmVycmFscykECHJlZkJ5S2V5CQEPa2V5QWRkcmVzc1JlZkJ5AQUJbmV3UGxheWVyBAVyZWZCeQkAoggBBQhyZWZCeUtleQMDCQEJaXNEZWZpbmVkAQUFcmVmQnkJAQlpc0RlZmluZWQBCQCmCAEJAQV2YWx1ZQEFBXJlZkJ5BwkAAgEJAKwCAgkArAICBQluZXdQbGF5ZXICFCBhbHJlYWR5IGhhcyByZWZCeTogCQEFdmFsdWUBBQVyZWZCeQQHcmVmc0tleQkBE2tleUFkZHJlc3NSZWZlcnJhbHMBBQlvbGRQbGF5ZXIEBHJlZnMJAKIIAQUHcmVmc0tleQQJcmVmc0FycmF5AwkBCWlzRGVmaW5lZAEFBHJlZnMJALwJAgkBBXZhbHVlAQUEcmVmcwIBXwUDbmlsAwkBD2NvbnRhaW5zRWxlbWVudAIFCXJlZnNBcnJheQUJbmV3UGxheWVyCQACAQkArAICCQCsAgIJAKwCAgUJb2xkUGxheWVyAhIgYWxyZWFkeSBjb250YWlucyAFCW5ld1BsYXllcgIRIHdpdGhpbiByZWZlcnJhbHMEB25ld1JlZnMJALoJAgkAzQgCBQlyZWZzQXJyYXkFCW5ld1BsYXllcgIBXwQHbmV3T2xkcwMJAQ9jb250YWluc0VsZW1lbnQCBQZvbGRpZXMFCW9sZFBsYXllcgkBBXZhbHVlAQUEb2xkcwkAugkCCQDNCAIFBm9sZGllcwUJb2xkUGxheWVyAgFfCQCUCgIJAM4IAgkAzAgCCQELU3RyaW5nRW50cnkCBQhyZWZCeUtleQUJb2xkUGxheWVyCQDMCAIJAQtTdHJpbmdFbnRyeQIFB3JlZnNLZXkFB25ld1JlZnMJAMwIAgkBC1N0cmluZ0VudHJ5AgUHb2xkc0tleQUHbmV3T2xkcwUDbmlsBQ1wcm9sb2dBY3Rpb25zAAABaQEQZGlzdHJpYnV0ZVBvaW50cwUIc3RyZW5ndGgIYWNjdXJhY3kJaW50ZWxsZWN0CWVuZHVyYW5jZQlkZXh0ZXJpdHkEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQEBGFkZHIJAKUIAQgFAWkMb3JpZ2luQ2FsbGVyBAt2aXJ0V2xnRGF0YQkBCWFzQW55TGlzdAEJAPwHBAULd2xnQ29udHJhY3QCEmNoZWNrV2xnWHBSRUFET05MWQkAzAgCBQRhZGRyBQNuaWwFA25pbAQNdmlydFdsZ1BvaW50cwkBBWFzSW50AQkAkQMCBQt2aXJ0V2xnRGF0YQABBA0kdDA5NjUzMzk2OTIzAwkAZwIAAAUNdmlydFdsZ1BvaW50cwkAlAoCAAAFA25pbAQHZGVsdGFYUAkBBWFzSW50AQkA/AcEBQt3bGdDb250cmFjdAIJdGFrZVdsZ1hwCQDMCAIFBGFkZHIFA25pbAUDbmlsAwkAAAIFB2RlbHRhWFAFB2RlbHRhWFAJAJQKAgUNdmlydFdsZ1BvaW50cwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDGtleVVzZXJMZXZlbAEFBGFkZHIJAQVhc0ludAEJAJEDAgULdmlydFdsZ0RhdGEAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBCWtleVVzZXJYUAEFBGFkZHIJAQVhc0ludAEJAJEDAgULdmlydFdsZ0RhdGEAAgUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBAl3bGdQb2ludHMIBQ0kdDA5NjUzMzk2OTIzAl8xBAp3bGdBY3Rpb25zCAUNJHQwOTY1MzM5NjkyMwJfMgQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQRhZGRyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkBApmcmVlS2V5QWNjCQERa2V5VXNlckZyZWVQb2ludHMBBQRhZGRyBA1mcmVlUG9pbnRzQWNjCQBkAgkBC3ZhbHVlT3JFbHNlAgkAnwgBBQpmcmVlS2V5QWNjAAAFCXdsZ1BvaW50cwQLZnJlZUtleUR1Y2sJARFrZXlEdWNrRnJlZVBvaW50cwEFC2R1Y2tBc3NldElkBA5mcmVlUG9pbnRzRHVjawkBC3ZhbHVlT3JFbHNlAgkAnwgBBQtmcmVlS2V5RHVjawAABAdzdW1GcmVlCQBkAgUNZnJlZVBvaW50c0FjYwUOZnJlZVBvaW50c0R1Y2sED3N1bVRvRGlzdHJpYnV0ZQkAZAIJAGQCCQBkAgkAZAIFCHN0cmVuZ3RoBQhhY2N1cmFjeQUJaW50ZWxsZWN0BQllbmR1cmFuY2UFCWRleHRlcml0eQMJAGYCBQ9zdW1Ub0Rpc3RyaWJ1dGUFB3N1bUZyZWUJAAIBCQCsAgIJAKwCAgIPVGhlcmUgYXJlIG9ubHkgCQCkAwEFB3N1bUZyZWUCGiBmcmVlIHBvaW50cyB0byBkaXN0cmlidXRlBAhjaGFyc0tleQkBDGtleUR1Y2tDaGFycwEFC2R1Y2tBc3NldElkBAVjaGFycwkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEFCGNoYXJzS2V5AgkwXzBfMF8wXzACAV8EBm5ld0FjYwkAZQIFDWZyZWVQb2ludHNBY2MFD3N1bVRvRGlzdHJpYnV0ZQkAlAoCCQDOCAIJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUKZnJlZUtleUFjYwMJAGYCAAAFBm5ld0FjYwAABQZuZXdBY2MJAMwIAgkBDEludGVnZXJFbnRyeQIFC2ZyZWVLZXlEdWNrAwkAZgIAAAUGbmV3QWNjCQBkAgUOZnJlZVBvaW50c0R1Y2sFBm5ld0FjYwUOZnJlZVBvaW50c0R1Y2sJAMwIAgkBC1N0cmluZ0VudHJ5AgUIY2hhcnNLZXkJALkJAgkAzAgCCQCkAwEJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFY2hhcnMFDGNoYXJTdHJlbmd0aAUIc3RyZW5ndGgJAMwIAgkApAMBCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBWNoYXJzBQxjaGFyQWNjdXJhY3kFCGFjY3VyYWN5CQDMCAIJAKQDAQkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVjaGFycwUNY2hhckludGVsbGVjdAUJaW50ZWxsZWN0CQDMCAIJAKQDAQkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVjaGFycwUNY2hhckVuZHVyYW5jZQUJZW5kdXJhbmNlCQDMCAIJAKQDAQkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVjaGFycwUNY2hhckRleHRlcml0eQUJZGV4dGVyaXR5BQNuaWwCAV8FA25pbAUNcHJvbG9nQWN0aW9ucwUKd2xnQWN0aW9ucwAAAWkBHHNwbGl0QnlHbG9iYWxXZWlnaHRzUkVBRE9OTFkBBmFtb3VudAkAlAoCBQNuaWwJARJnZXROZWVkZWRNYXRlcmlhbHMBBQZhbW91bnQBaQEkc3BsaXRCeUdsb2JhbEFuZExvY2FsV2VpZ2h0c1JFQURPTkxZAwltYXRBbW91bnQJcmVzQW1vdW50CHRlcnJhaW5zBA10ZXJyYWluQ291bnRzCQENY291bnRUZXJyYWlucwEFCHRlcnJhaW5zCQCUCgIFA25pbAkAlAoCCQESZ2V0TmVlZGVkTWF0ZXJpYWxzAQUJbWF0QW1vdW50CQETZGlzdHJpYnV0ZUJ5V2VpZ2h0cwIFCXJlc0Ftb3VudAUNdGVycmFpbkNvdW50cwFpARNnZXRCYWNrcGFja1JFQURPTkxZAQtkdWNrQXNzZXRJZAkAlAoCBQNuaWwJALkJAgkBC2dldEJhY2twYWNrAQkBEWtleUJhY2twYWNrQnlEdWNrAQULZHVja0Fzc2V0SWQCAToBaQEUZ2V0V2FyZWhvdXNlUkVBRE9OTFkBC2xhbmRBc3NldElkBAVhc3NldAkBBXZhbHVlAQkA7AcBCQDZBAEFC2xhbmRBc3NldElkBAlsYW5kSW5kZXgJAGkCCQEPbnVtUGllY2VzQnlTaXplAQkAkQMCCQC1CQIIBQVhc3NldAtkZXNjcmlwdGlvbgIBXwULcmVjTGFuZFNpemUFBVNTSVpFBAppbmZyYUxldmVsCQELdmFsdWVPckVsc2UCCQCfCAEJARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQULbGFuZEFzc2V0SWQAAAkAlAoCBQNuaWwJALoJAgkBDGdldFdhcmVob3VzZQMJARJrZXlXYXJlaG91c2VCeUxhbmQBBQtsYW5kQXNzZXRJZAUJbGFuZEluZGV4BQppbmZyYUxldmVsAgE6AWkBCnNhdmVMYXN0VHgAAwkBASEBCQEPY29udGFpbnNFbGVtZW50AgkAzAgCBQt3bGdDb250cmFjdAkAzAgCBQ9lY29ub215Q29udHJhY3QJAMwIAgUSdG91cm5hbWVudENvbnRyYWN0CQDMCAIFDWFjcmVzQ29udHJhY3QFA25pbAgFAWkGY2FsbGVyCQACAQINQWNjZXNzIGRlbmllZAkAlAoCCQEGcHJvbG9nAQUBaQAqAWkBD3VwZGF0ZUR1Y2tTdGF0cwILZHVja0Fzc2V0SWQHZGVsdGFYUAMJAQIhPQIIBQFpBmNhbGxlcgUPZWNvbm9teUNvbnRyYWN0CQACAQINQWNjZXNzIGRlbmllZAkBF3VwZGF0ZUR1Y2tTdGF0c0ludGVybmFsAgULZHVja0Fzc2V0SWQFB2RlbHRhWFABaQEOdXBkYXRlQWNjU3RhdHMCBGFkZHIHZGVsdGFYUAMJAQEhAQkBD2NvbnRhaW5zRWxlbWVudAIJAMwIAgULd2xnQ29udHJhY3QJAMwIAgUPZWNvbm9teUNvbnRyYWN0CQDMCAIFDWFjcmVzQ29udHJhY3QFA25pbAgFAWkGY2FsbGVyCQACAQINQWNjZXNzIGRlbmllZAkBFnVwZGF0ZUFjY1N0YXRzSW50ZXJuYWwCBQRhZGRyBQdkZWx0YVhQAWkBCWVxdWlwRHVjawEJZXF1aXBtZW50BA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBARhZGRyCQClCAEIBQFpDG9yaWdpbkNhbGxlcgQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQRhZGRyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkAwkBD2NoZWNrVG91cm5hbWVudAEFC2R1Y2tBc3NldElkCQACAQIZZXF1aXBEdWNrX2NoZWNrVG91cm5hbWVudAMJAQ1jaGVja0RlbGl2ZXJ5AQULZHVja0Fzc2V0SWQJAAIBAhdlcXVpcER1Y2tfY2hlY2tEZWxpdmVyeQQFZXFLZXkJARBrZXlEdWNrRXF1aXBtZW50AQULZHVja0Fzc2V0SWQEC2N1cnJlbnRTZWdzCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAKIIAQUFZXFLZXkCFyw7LF8sOyxfLDssXyw7LF8sOyxfLDssAgFfBAVicEtleQkBEWtleUJhY2twYWNrQnlEdWNrAQULZHVja0Fzc2V0SWQEC2N1cnJlbnRQYWNrCQELZ2V0QmFja3BhY2sBBQVicEtleQQFbmV3RXEJALUJAgUJZXF1aXBtZW50AgFfAwkBAiE9AgkAkAMBBQVuZXdFcQULTlVNU0VHTUVOVFMJAAIBAhZXcm9uZyBlcXVpcG1lbnQgc3RyaW5nBAl0ZW1wUHJvZEIJAQZkcmVzc0IEBQtjdXJyZW50U2VncwkBDnByb2RTdHJUb0J5dGVzAQkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kBgUDbmlsBAhzZWdCcEF1eAkAkQMCCQC1CQIJAJEDAgUFbmV3RXEFC3NlZ0JhY2twYWNrAgE7AAEECmJ1ZmZFZmZlY3QDCQAAAgUIc2VnQnBBdXgCAAAABARhdXgwCQCRAwIJALUJAgUIc2VnQnBBdXgCASwAAAMJAAACBQRhdXgwAgAAAAQGaWR4Q250CQC1CQIFBGF1eDACAToEA2lkeAkAkQMCBQZpZHhDbnQAAAQDY250CQCRAwIFBmlkeENudAABAwMDAwMJAAACBQNpZHgCAjA2BgkAAAIFA2lkeAICMDcGCQAAAgUDaWR4AgIwOAkBAiE9AgUDY250AgAHCQBmAgkBDXBhcnNlSW50VmFsdWUBBQNjbnQAAAcJAQ1wYXJzZUludFZhbHVlAQkAkQMCCQC1CQIJAJEDAgUQcHJvZHVjdGlvbk1hdHJpeAkBDXBhcnNlSW50VmFsdWUBBQNpZHgCAV8FCnJJZHhFZmZlY3QAAAQFc3RhdHMJAQxnZXREdWNrU3RhdHMEBQR0aGlzBQtkdWNrQXNzZXRJZAUKYnVmZkVmZmVjdAYECG5ld1Byb2RCCQEGZHJlc3NCBAUFbmV3RXEFCXRlbXBQcm9kQgcFBXN0YXRzBApuZXdQcm9kU3RyCQEOYnl0ZXNUb1Byb2RTdHIBBQhuZXdQcm9kQgkAlAoCCQDOCAIJAMwIAgkBC1N0cmluZ0VudHJ5AgUFZXFLZXkFCWVxdWlwbWVudAkAzAgCCQELU3RyaW5nRW50cnkCBQVicEtleQkAugkCCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCmJwSWR4TGV2ZWwJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhSZXMJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhNYXQJAMwIAgUKbmV3UHJvZFN0cgUDbmlsAgE6CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQxrZXlEdWNrQnVmZnMBBQtkdWNrQXNzZXRJZAkAuQkCCQDMCAIJAKQDAQkAkQMCBQVzdGF0cwAHCQDMCAIJAKQDAQkAkQMCBQVzdGF0cwAICQDMCAIJAKQDAQkAkQMCBQVzdGF0cwAJCQDMCAIJAKQDAQkAkQMCBQVzdGF0cwAKCQDMCAIJAKQDAQkAkQMCBQVzdGF0cwALBQNuaWwCAV8FA25pbAUNcHJvbG9nQWN0aW9ucwAAAWkBD2ZvcnRpZmljYXRlTGFuZAILbGFuZEFzc2V0SWQEcGxhbgQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQEYWRkcgkApQgBCAUBaQxvcmlnaW5DYWxsZXIEC2R1Y2tBc3NldElkCQELdmFsdWVPckVsc2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFBGFkZHICAAQJZHVja1N0YXRzCQEMZ2V0RHVja1N0YXRzBAUEdGhpcwULZHVja0Fzc2V0SWQAAAcEB2ZvcnRLZXkJARdrZXlGb3J0aWZpY2F0aW9uc0J5TGFuZAEFC2xhbmRBc3NldElkBAxjdXJyZW50Rm9ydHMJALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBBQdmb3J0S2V5Agw6MF8xNTowXzE4OjACAV8EBWFzc2V0CQEFdmFsdWUBCQDsBwEJANkEAQULbGFuZEFzc2V0SWQECWxhbmRJbmRleAkAaQIJAQ9udW1QaWVjZXNCeVNpemUBCQCRAwIJALUJAggFBWFzc2V0C2Rlc2NyaXB0aW9uAgFfBQtyZWNMYW5kU2l6ZQUFU1NJWkUECmluZnJhTGV2ZWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAAABAV3aEtleQkBEmtleVdhcmVob3VzZUJ5TGFuZAEFC2xhbmRBc3NldElkBAJ3aAkBDGdldFdhcmVob3VzZQMFBXdoS2V5BQlsYW5kSW5kZXgFCmluZnJhTGV2ZWwEB2N1ckxvZnQJALUJAgkAkQMCBQJ3aAUJd2hJZHhMT0ZUAgFfBARjdXJPCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUHY3VyTG9mdAULdm9sT2NjdXBpZWQEBGN1ckYJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQdjdXJMb2Z0BQd2b2xGcmVlBAhuZXdGb3J0cwkAtQkCBQRwbGFuAgFfBA8kdDAxMDM3NjExMDM4NzYJAQVmb3J0QgYFDGN1cnJlbnRGb3J0cwkBDnByb2RTdHJUb0J5dGVzAQkAkQMCBQJ3aAUJd2hJZHhQcm9kBQRjdXJPBQRjdXJGBgUDbmlsBAl0ZW1wUHJvZEIIBQ8kdDAxMDM3NjExMDM4NzYCXzEEBXRlbXBPCAUPJHQwMTAzNzYxMTAzODc2Al8yBAV0ZW1wRggFDyR0MDEwMzc2MTEwMzg3NgJfMwQPJHQwMTAzODc5MTAzOTc1CQEFZm9ydEIGBQhuZXdGb3J0cwUJdGVtcFByb2RCBQV0ZW1wTwUFdGVtcEYHBQlkdWNrU3RhdHMECG5ld1Byb2RCCAUPJHQwMTAzODc5MTAzOTc1Al8xBARuZXdPCAUPJHQwMTAzODc5MTAzOTc1Al8yBARuZXdGCAUPJHQwMTAzODc5MTAzOTc1Al8zBApuZXdQcm9kU3RyCQEOYnl0ZXNUb1Byb2RTdHIBBQhuZXdQcm9kQgQKbmV3TG9mdFN0cgkAuQkCCQDMCAIJAJEDAgUHY3VyTG9mdAUJdm9sTG9ja2VkCQDMCAIJAKQDAQUEbmV3TwkAzAgCCQCkAwEFBG5ld0YJAMwIAgkAkQMCBQdjdXJMb2Z0BQh2b2xUb3RhbAUDbmlsAgFfCQCUCgIJAM4IAgkAzAgCCQELU3RyaW5nRW50cnkCBQdmb3J0S2V5BQRwbGFuCQDMCAIJAQtTdHJpbmdFbnRyeQIFBXdoS2V5CQC6CQIJAMwIAgkAkQMCBQJ3aAULd2hJZHhMZXZlbHMJAMwIAgkAkQMCBQJ3aAUId2hJZHhSZXMJAMwIAgkAkQMCBQJ3aAUId2hJZHhNYXQJAMwIAgUKbmV3UHJvZFN0cgkAzAgCBQpuZXdMb2Z0U3RyBQNuaWwCAToFA25pbAUNcHJvbG9nQWN0aW9ucwAAAWkBE2luaXREdWNrVG91ckF0dGVtcHQBC2R1Y2tBc3NldElkAwkBAiE9AggFAWkGY2FsbGVyBRJ0b3VybmFtZW50Q29udHJhY3QJAAIBAg1BY2Nlc3MgZGVuaWVkBAlrZXlIZWFsdGgJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQEBW1heEhQCQEJbWF4SGVhbHRoAQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEMa2V5RHVja0xldmVsAQULZHVja0Fzc2V0SWQAAAQJY3VySGVhbHRoCQELdmFsdWVPckVsc2UCCQCfCAEFCWtleUhlYWx0aAUFbWF4SFAECWN1ckxvY0tleQkBD2tleUR1Y2tMb2NhdGlvbgEFC2R1Y2tBc3NldElkBAtjdXJMb2NhdGlvbgkBC3ZhbHVlT3JFbHNlAgkAoggBBQljdXJMb2NLZXkFD0RFRkFVTFRMT0NBVElPTgQGbGFzdElkCQELdmFsdWVPckVsc2UCCQCaCAIFEnRvdXJuYW1lbnRDb250cmFjdAUNbGFzdFRvdXJJZEtleQAABAx0b3VyTG9jYXRpb24JAKwCAgkApAMBBQZsYXN0SWQCBF9UXzAJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDmtleVNhdmVkSGVhbHRoAQULZHVja0Fzc2V0SWQFCWN1ckhlYWx0aAkAzAgCCQEMSW50ZWdlckVudHJ5AgUJa2V5SGVhbHRoBQVtYXhIUAkAzAgCCQELU3RyaW5nRW50cnkCCQEQa2V5U2F2ZWRMb2NhdGlvbgEFC2R1Y2tBc3NldElkBQtjdXJMb2NhdGlvbgkAzAgCCQELU3RyaW5nRW50cnkCBQljdXJMb2NLZXkFDHRvdXJMb2NhdGlvbgUDbmlsBQx0b3VyTG9jYXRpb24BaQEMYnJlYWtBdHRlbXB0AAQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQkApQgBCAUBaQZjYWxsZXICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQECWN1ckxvY0tleQkBD2tleUR1Y2tMb2NhdGlvbgEFC2R1Y2tBc3NldElkBAtjdXJMb2NhdGlvbgkBC3ZhbHVlT3JFbHNlAgkAoggBBQljdXJMb2NLZXkFD0RFRkFVTFRMT0NBVElPTgMJAQIhPQIJAJEDAgkAtQkCBQtjdXJMb2NhdGlvbgIBXwUKbG9jSWR4VHlwZQIBVAkAAgECIllvdXIgZHVjayBpcyBub3QgaW4gdGhlIHRvdXJuYW1lbnQEC3NhdmVkSGVhbHRoCQERQGV4dHJOYXRpdmUoMTA1NSkBCQEOa2V5U2F2ZWRIZWFsdGgBBQtkdWNrQXNzZXRJZAQNc2F2ZWRMb2NhdGlvbgkBEUBleHRyTmF0aXZlKDEwNTgpAQkBEGtleVNhdmVkTG9jYXRpb24BBQtkdWNrQXNzZXRJZAkAlAoCCQDNCAIJAM0IAgUNcHJvbG9nQWN0aW9ucwkBDEludGVnZXJFbnRyeQIJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQFC3NhdmVkSGVhbHRoCQELU3RyaW5nRW50cnkCBQljdXJMb2NLZXkFDXNhdmVkTG9jYXRpb24FC2N1ckxvY2F0aW9uAWkBFmV4aXRUb3VybmFtZW50SW50ZXJuYWwBC2R1Y2tBc3NldElkAwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQINQWNjZXNzIGRlbmllZAQLc2F2ZWRIZWFsdGgJARFAZXh0ck5hdGl2ZSgxMDU1KQEJAQ5rZXlTYXZlZEhlYWx0aAEFC2R1Y2tBc3NldElkBA1zYXZlZExvY2F0aW9uCQERQGV4dHJOYXRpdmUoMTA1OCkBCQEQa2V5U2F2ZWRMb2NhdGlvbgEFC2R1Y2tBc3NldElkCQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQFC3NhdmVkSGVhbHRoCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAUNc2F2ZWRMb2NhdGlvbgUDbmlsBwFpARRleGl0RGVsaXZlcnlJbnRlcm5hbAELZHVja0Fzc2V0SWQDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAg1BY2Nlc3MgZGVuaWVkBAFlCQESZXhpdERlbGl2ZXJ5Q29tbW9uBAULZHVja0Fzc2V0SWQHAAAAAAkAlAoCCQDOCAIIBQFlAl8xCAUBZQJfMgcBaQEQYXV0b0V4aXREZWxpdmVyeQQLZHVja0Fzc2V0SWQFbmV3SFAGcmVhc29uBXNjb3JlAwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQINQWNjZXNzIGRlbmllZAQBZQkBEmV4aXREZWxpdmVyeUNvbW1vbgQFC2R1Y2tBc3NldElkBgUFbmV3SFAFBXNjb3JlCQCUCgIIBQFlAl8xCAUBZQJfMwFpAQ1icmVha0RlbGl2ZXJ5AAkAlAoCCQEGcHJvbG9nAQUBaQINYnJlYWtEZWxpdmVyeQFpAQ5wcmVwYXJlUm9iYmVyeQIHbWVzc2FnZQNzaWcEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBASEBCQDEEwMFB21lc3NhZ2UFA3NpZwUDcHViCQACAQIYc2lnbmF0dXJlIGRvZXMgbm90IG1hdGNoAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQIiZXhhY3RseSAxIHBheW1lbnQgbXVzdCBiZSBhdHRhY2hlZAQDcG10CQCRAwIIBQFpCHBheW1lbnRzAAAEBndsZ0FtdAgFA3BtdAZhbW91bnQDAwkBASEBCQEJaXNEZWZpbmVkAQgFA3BtdAdhc3NldElkBgkBAiE9AgkBBXZhbHVlAQgFA3BtdAdhc3NldElkBQp3bGdBc3NldElkCQACAQIVV0xHT0xEIHBheW1lbnRzIG9ubHkhBAVwYXJ0cwkAtQkCCQCwCQEFB21lc3NhZ2UCAXwDCQBmAgACCQCQAwEFBXBhcnRzCQACAQIUV3JvbmcgbWVzc2FnZSBmb3JtYXQEC2R1Y2tBc3NldElkCQCRAwIFBXBhcnRzAAADCQEPY2hlY2tUb3VybmFtZW50AQULZHVja0Fzc2V0SWQJAAIBAh5wcmVwYXJlUm9iYmVyeV9jaGVja1RvdXJuYW1lbnQDCQENY2hlY2tEZWxpdmVyeQEFC2R1Y2tBc3NldElkCQACAQIccHJlcGFyZVJvYmJlcnlfY2hlY2tEZWxpdmVyeQQHcm9iQ29zdAgJAQ5nZXRSb2JiZXJ5RGF0YQIFBHRoaXMFC2R1Y2tBc3NldElkAl8xAwkAZgIFB3JvYkNvc3QFBndsZ0FtdAkAAgEJAKwCAgkArAICCQCsAgICCFBheW1lbnQgCQCkAwEFBndsZ0FtdAIMIDwgcmVxdWlyZWQgCQCkAwEFB3JvYkNvc3QECmNhbmRpZGF0ZXMJALUJAgkAkQMCBQVwYXJ0cwABAgFfBANub3cIBQlsYXN0QmxvY2sJdGltZXN0YW1wBAlkdWNrU3RhdGUJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBE2tleUR1Y2tSb2JiZXJ5U3RhdGUBBQtkdWNrQXNzZXRJZAAABApsb2NrZWRMYW5kCQELdmFsdWVPckVsc2UCCQCiCAEJARNrZXlMb2NrZWRMYW5kQnlEdWNrAQULZHVja0Fzc2V0SWQCAAQHbGFuZEVUQQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQESa2V5TGFuZENvb2xkb3duRVRBAQUKbG9ja2VkTGFuZAAAAwMJAQIhPQIFCWR1Y2tTdGF0ZQULZHVja0lkeEZyZWUJAGYCBQdsYW5kRVRBBQNub3cHCQACAQkArAICAidZb3UgYWxyZWFkeSBzdGFydGVkIHJvYmJpbmcsIHdhaXQgdGlsbCAJAKQDAQUHbGFuZEVUQQoBB2NoZWNrZXICA2FjYwtsYW5kQXNzZXRJZAQFc3RhdGUJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBE2tleUxhbmRSb2JiZXJ5U3RhdGUBBQtsYW5kQXNzZXRJZAAABAtjb29sZG93bkVUQQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQESa2V5TGFuZENvb2xkb3duRVRBAQULbGFuZEFzc2V0SWQAAAMJAGYCBQVzdGF0ZQkAkAMBBRBsYW5kUm9iQ29vbGRvd25zCQACAQINSW52YWxpZCBzdGF0ZQMJAGYCBQNub3cFC2Nvb2xkb3duRVRBBApzdGFrZWRUaW1lCQELdmFsdWVPckVsc2UCCQCfCAEJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQULbGFuZEFzc2V0SWQAAAMJAGcCAAAFCnN0YWtlZFRpbWUFA2FjYwQBYQkBBXZhbHVlAQkA7AcBCQDZBAEFC2xhbmRBc3NldElkBAFkCQC1CQIIBQFhC2Rlc2NyaXB0aW9uAgFfBAZwaWVjZXMJAQ9udW1QaWVjZXNCeVNpemUBCQCRAwIFAWQFC3JlY0xhbmRTaXplBAxwcm9kdWN0aXZpdHkJAQxhcHBseUJvbnVzZXMCBQtsYW5kQXNzZXRJZAUGcGllY2VzBAlkZWx0YVRpbWUJAGUCBQNub3cFCnN0YWtlZFRpbWUECGF2YWlsUmVzCQBrAwUJZGVsdGFUaW1lCQBoAgUMcHJvZHVjdGl2aXR5BQZwaWVjZXMFCURBWU1JTExJUwMJAGYCBQ5NSU5fUkVTX1RPX1JPQgUIYXZhaWxSZXMFA2FjYwkAzQgCBQNhY2MFC2xhbmRBc3NldElkBQNhY2MECGZpbHRlcmVkCgACJGwFCmNhbmRpZGF0ZXMKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBB2NoZWNrZXICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDEwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoDCQAAAgkAkAMBBQhmaWx0ZXJlZAAACQACAQIZTm8gY2FuZGlkYXRlcyBmb3Igcm9iYmVyeQQGcm5kSWR4CQEPZ2V0UmFuZG9tTnVtYmVyAwkAkAMBBQhmaWx0ZXJlZAUHbWVzc2FnZQUDc2lnBAtsYW5kQXNzZXRJZAkAkQMCBQhmaWx0ZXJlZAUGcm5kSWR4CQCUCgIJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBE2tleUxhbmRSb2JiZXJ5U3RhdGUBBQtsYW5kQXNzZXRJZAUMcm9iSWR4TG9ja2VkCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQESa2V5TGFuZENvb2xkb3duRVRBAQULbGFuZEFzc2V0SWQJAGQCBQNub3cJAJEDAgUQbGFuZFJvYkNvb2xkb3ducwUMcm9iSWR4TG9ja2VkCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQETa2V5RHVja1JvYmJlcnlTdGF0ZQEFC2R1Y2tBc3NldElkBRBkdWNrSWR4UHJlcGFyaW5nCQDMCAIJAQtTdHJpbmdFbnRyeQIJARNrZXlMb2NrZWRMYW5kQnlEdWNrAQULZHVja0Fzc2V0SWQFC2xhbmRBc3NldElkBQNuaWwFDXByb2xvZ0FjdGlvbnMFC2xhbmRBc3NldElkAWkBB3JvYkxhbmQCB21lc3NhZ2UDc2lnBA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQEhAQkAxBMDBQdtZXNzYWdlBQNzaWcFA3B1YgkAAgECGHNpZ25hdHVyZSBkb2VzIG5vdCBtYXRjaAQIdXNlckFkZHIJAKUIAQgFAWkGY2FsbGVyBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFCHVzZXJBZGRyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkBANub3cIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQCUCgIJAM0IAgUNcHJvbG9nQWN0aW9ucwkBDEludGVnZXJFbnRyeQIJARhrZXlMYXN0Um9iYmVyeVRpbWVCeUR1Y2sBBQtkdWNrQXNzZXRJZAUDbm93AAABaQEOYWNjZXB0RGVsaXZlcnkABA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQQIdXNlckFkZHIJAKUIAQgFAWkGY2FsbGVyBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFCHVzZXJBZGRyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkBAlmdW5kVG90YWwJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPZWNvbm9teUNvbnRyYWN0BQ9kZWxpdmVyeUZ1bmRLZXkAAAQLbG9ja2VkVG90YWwJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPZWNvbm9teUNvbnRyYWN0BRFkZWxpdmVyeUxvY2tlZEtleQAAAwkAZgIFFU1JTl9VU0RUX0ZFRV9ERUxJVkVSWQkAZQIFCWZ1bmRUb3RhbAULbG9ja2VkVG90YWwJAAIBCQCsAgIJAKwCAgkArAICAiBEZWxpdmVyeSBpcyBub3QgYXZhaWxhYmxlLCBmdW5kPQkBCmZpeGVkUG9pbnQCBQlmdW5kVG90YWwABgIJLCBsb2NrZWQ9CQEKZml4ZWRQb2ludAIFC2xvY2tlZFRvdGFsAAYEA25vdwgFCWxhc3RCbG9jawl0aW1lc3RhbXAECGRlbGF5RVRBCQELdmFsdWVPckVsc2UCCQCfCAEJARZrZXlEZWxpdmVyeURlbGF5QnlEdWNrAQULZHVja0Fzc2V0SWQAAAMJAGYCBQhkZWxheUVUQQUDbm93CQACAQkArAICAipEZWxpdmVyeSBpcyBmb3JiaWRkZW4gZm9yIHlvdXIgZHVjayB1bnRpbCAJAKQDAQUIZGVsYXlFVEEEBmhlYWx0aAkBEUBleHRyTmF0aXZlKDEwNTUpAQkBDWtleUR1Y2tIZWFsdGgBBQtkdWNrQXNzZXRJZAMJAGcCAAAFBmhlYWx0aAkAAgECK1lvdSBjYW5ub3QgYWNjZXB0IGRlbGl2ZXJ5IHdpdGggemVybyBoZWFsdGgECGNvdW50S2V5CQEUa2V5VXNlckRlbGl2ZXJ5Q291bnQBBQh1c2VyQWRkcgQFY291bnQJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUIY291bnRLZXkAAAQHbGFzdERheQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEWa2V5VXNlckxhc3REZWxpdmVyeURheQEFCHVzZXJBZGRyAAAEBXRvZGF5CQBpAgUDbm93BQlEQVlNSUxMSVMEBWFjcmVzCQELdmFsdWVPckVsc2UCCQCaCAIFDWFjcmVzQ29udHJhY3QJARprZXlBY3Jlc1N0YWtlZEFtb3VudEJ5VXNlcgEFCHVzZXJBZGRyAAAEEWFsbG93ZWREZWxpdmVyaWVzCQBkAgUXQUxMT1dFRF9GUkVFX0RFTElWRVJJRVMJAGkCBQVhY3JlcwUaQUNSRVNfRk9SX0RFTElWRVJZX0FUVEVNUFQDAwkAZwIFBWNvdW50BRFhbGxvd2VkRGVsaXZlcmllcwkAAAIFB2xhc3REYXkFBXRvZGF5BwkAAgEJAKwCAgkArAICAhFZb3UgYWxyZWFkeSB1c2VkIAkApAMBBRFhbGxvd2VkRGVsaXZlcmllcwIcIGRlbGl2ZXJ5IGF0dGVtcHRzIGZvciB0b2RheQMJAQ9jaGVja1RvdXJuYW1lbnQBBQtkdWNrQXNzZXRJZAkAAgECHmFjY2VwdERlbGl2ZXJ5X2NoZWNrVG91cm5hbWVudAMJAQ1jaGVja0RlbGl2ZXJ5AQULZHVja0Fzc2V0SWQJAAIBAhxhY2NlcHREZWxpdmVyeV9jaGVja0RlbGl2ZXJ5BA5uZXdMb2NrZWRUb3RhbAkBBWFzSW50AQkA/AcEBQ9lY29ub215Q29udHJhY3QCFHVwZGF0ZURlbGl2ZXJ5TG9ja2VkCQDMCAIJAGQCBQtsb2NrZWRUb3RhbAUVTUlOX1VTRFRfRkVFX0RFTElWRVJZBQNuaWwFA25pbAQJY3VyTG9jS2V5CQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQEC2N1ckxvY2F0aW9uCQELdmFsdWVPckVsc2UCCQCiCAEFCWN1ckxvY0tleQUPREVGQVVMVExPQ0FUSU9OBBBkZWxpdmVyeUxvY2F0aW9uCQCsAgIJAKQDAQUDbm93AgRfRF8wCQCUCgIJAM4IAgkAzAgCCQELU3RyaW5nRW50cnkCCQEQa2V5U2F2ZWRMb2NhdGlvbgEFC2R1Y2tBc3NldElkBQtjdXJMb2NhdGlvbgkAzAgCCQELU3RyaW5nRW50cnkCBQljdXJMb2NLZXkFEGRlbGl2ZXJ5TG9jYXRpb24JAMwIAgkBDEludGVnZXJFbnRyeQIFCGNvdW50S2V5AwkBAiE9AgUHbGFzdERheQUFdG9kYXkAAAUFY291bnQFA25pbAUNcHJvbG9nQWN0aW9ucwkAlAoCBRBkZWxpdmVyeUxvY2F0aW9uBQ5uZXdMb2NrZWRUb3RhbAFpARVjaGVja0RlbGl2ZXJ5Q2FsbGJhY2sBC2R1Y2tBc3NldElkAwkBAiE9AggFAWkGY2FsbGVyBRJ0b3VybmFtZW50Q29udHJhY3QJAAIBAg1BY2Nlc3MgZGVuaWVkCQCUCgIFA25pbAkBDWNoZWNrRGVsaXZlcnkBBQtkdWNrQXNzZXRJZAAdrSIe", "height": 2829111, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 6JQn6zjbVZccBYm5XhfrGCh2R1LZUiQ3jmVyQ495S3pC Next: 8C9oLw8dWj9p78E8TwauBAyEVZQWuCbScPpNFUMBsfVc Diff:
OldNewDifferences
179179
180180 let aI = 6
181181
182-let aJ = 5
183-
184-let aK = 25
185-
186-let aL = 3456000
187-
188-let aM = 10000000000
189-
190-let aN = "Africa_F_Africa"
191-
192-let aO = 39637
193-
194-let aP = 10
195-
196-let aQ = 50000
197-
198-let aR = 600000
199-
200-let aS = 1
201-
202-let aT = 50000000
203-
204-let aU = ["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"]
205-
206-let aV = ["Americas", "Europe", "Asia", "Africa", "Oceania"]
207-
208-let aW = 10000000
209-
210-let aX = [15, 16, 17, 18, 19, 20]
211-
212-let aY = ["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_"]
213-
214-let aZ = 6
215-
216-let ba = 8
217-
218-let bb = 9
182+let aJ = 25
183+
184+let aK = 3456000
185+
186+let aL = 10000000000
187+
188+let aM = "Africa_F_Africa"
189+
190+let aN = 39637
191+
192+let aO = 10
193+
194+let aP = 50000
195+
196+let aQ = 600000
197+
198+let aR = 1
199+
200+let aS = 50000000
201+
202+let aT = ["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"]
203+
204+let aU = ["Americas", "Europe", "Asia", "Africa", "Oceania"]
205+
206+let aV = 10000000
207+
208+let aW = [15, 16, 17, 18, 19, 20]
209+
210+let aX = ["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_"]
211+
212+let aY = 6
213+
214+let aZ = 8
215+
216+let ba = 9
217+
218+let bb = 10
219219
220220 let bc = 10
221221
222-let bd = 10
223-
224-let be = 0
225-
226-let bf = 1
227-
228-let bg = 2
229-
230-let bh = 3
231-
232-let bi = 4
233-
234-let bj = 0
235-
236-let bk = 1
237-
238-let bl = 2
239-
240-let bm = 3
241-
242-let bn = 0
243-
244-let bo = 1
245-
246-let bp = 2
247-
248-let bq = 3
249-
250-let br = 0
251-
252-let bs = 1
253-
254-let bt = 2
255-
256-func bu (bv) = ("no_" + bv)
257-
258-
259-func bw (bv) = ("lcna_" + bv)
260-
261-
262-func bx (bv) = ("st_" + bv)
263-
264-
265-func by (bz,bv) = makeString(["las", bz, bv], "_")
266-
267-
268-func bA (bB,bv,bC) = ((((("sttao_" + bB) + "_") + bv) + "_") + bC)
269-
270-
271-func bD (Q) = ("wh_" + Q)
272-
273-
274-func bE (bv) = ("infraLevel_" + bv)
275-
276-
277-func bF (Q) = ("fortifications_" + Q)
278-
279-
280-func bG (bv) = ("duckCustomNameByAssetId_" + bv)
281-
282-
283-func bH (c) = ("accountCustomNameByAddr_" + c)
284-
285-
286-func bI (c) = ("accRefBy_" + c)
287-
288-
289-func bJ (B) = ("onboardArtActivatedOnDuck_" + B)
290-
291-
292-func bK (c) = ("onboardArtActivatedDuckBy_" + c)
293-
294-
295-func bL (c) = ("accReferrals_" + c)
296-
297-
298-func bM (bv) = ("duckOwner_" + bv)
299-
300-
301-func bN (bC) = ("stakedDuckByOwner_" + bC)
302-
303-
304-func bO (B) = ("backPack_" + B)
305-
306-
307-func bP (B) = ("duckLocation_" + B)
308-
309-
310-func bQ (bR) = ("%s%s__userGwlReleaseTime__" + bR)
311-
312-
313-func bS () = "emergencyWarehouseProducts"
314-
315-
316-let bT = "deliveryFund"
317-
318-let bU = "deliveryLocked"
319-
320-let bV = "%s__lastTourId"
321-
322-func bW (bX) = ("%s%d__tourStaticData__" + toString(bX))
323-
324-
325-func bY (bX) = ("%s%d__tourDynamicData__" + toString(bX))
326-
327-
328-func bZ (bX,B) = makeString(["%s%d%s__bestResultByTourAndDuck", toString(bX), B], "__")
329-
330-
331-let ca = 0
332-
333-let cb = 1
334-
335-let cc = 6
336-
337-let cd = 1
338-
339-func ce (cf,bX) = {
340- let cg = split(valueOrErrorMessage(getString(cf, bW(bX)), (("Error reading tournament " + toString(bX)) + " data")), "__")
341- let ch = split_4C(valueOrErrorMessage(getString(cf, bY(bX)), (("Error reading tournament " + toString(bX)) + " data")), "__")
342-[cg, ch]
343- }
344-
345-
346-func ci (cf,cj) = {
347- let ck = valueOrElse(getInteger(cf, bV), 0)
348- let cl = split(cj, "_")
222+let bd = 0
223+
224+let be = 1
225+
226+let bf = 2
227+
228+let bg = 3
229+
230+let bh = 4
231+
232+let bi = 0
233+
234+let bj = 1
235+
236+let bk = 2
237+
238+let bl = 3
239+
240+let bm = 0
241+
242+let bn = 1
243+
244+let bo = 2
245+
246+let bp = 3
247+
248+let bq = 0
249+
250+let br = 1
251+
252+let bs = 2
253+
254+func bt (bu) = ("no_" + bu)
255+
256+
257+func bv (bu) = ("lcna_" + bu)
258+
259+
260+func bw (bu) = ("st_" + bu)
261+
262+
263+func bx (by,bu) = makeString(["las", by, bu], "_")
264+
265+
266+func bz (bA,bu,bB) = ((((("sttao_" + bA) + "_") + bu) + "_") + bB)
267+
268+
269+func bC (Q) = ("wh_" + Q)
270+
271+
272+func bD (bu) = ("infraLevel_" + bu)
273+
274+
275+func bE (Q) = ("fortifications_" + Q)
276+
277+
278+func bF (bu) = ("duckCustomNameByAssetId_" + bu)
279+
280+
281+func bG (c) = ("accountCustomNameByAddr_" + c)
282+
283+
284+func bH (c) = ("accRefBy_" + c)
285+
286+
287+func bI (B) = ("onboardArtActivatedOnDuck_" + B)
288+
289+
290+func bJ (c) = ("onboardArtActivatedDuckBy_" + c)
291+
292+
293+func bK (c) = ("accReferrals_" + c)
294+
295+
296+func bL (bu) = ("duckOwner_" + bu)
297+
298+
299+func bM (bB) = ("stakedDuckByOwner_" + bB)
300+
301+
302+func bN (B) = ("backPack_" + B)
303+
304+
305+func bO (B) = ("duckLocation_" + B)
306+
307+
308+func bP (bQ) = ("%s%s__userGwlReleaseTime__" + bQ)
309+
310+
311+func bR () = "emergencyWarehouseProducts"
312+
313+
314+let bS = "deliveryFund"
315+
316+let bT = "deliveryLocked"
317+
318+let bU = "%s__lastTourId"
319+
320+func bV (bW) = ("%s%d__tourStaticData__" + toString(bW))
321+
322+
323+func bX (bW) = ("%s%d__tourDynamicData__" + toString(bW))
324+
325+
326+func bY (bW,B) = makeString(["%s%d%s__bestResultByTourAndDuck", toString(bW), B], "__")
327+
328+
329+let bZ = 0
330+
331+let ca = 1
332+
333+let cb = 6
334+
335+let cc = 1
336+
337+func cd (ce,bW) = {
338+ let cf = split(valueOrErrorMessage(getString(ce, bV(bW)), (("Error reading tournament " + toString(bW)) + " data")), "__")
339+ let cg = split_4C(valueOrErrorMessage(getString(ce, bX(bW)), (("Error reading tournament " + toString(bW)) + " data")), "__")
340+[cf, cg]
341+ }
342+
343+
344+func ch (ce,ci) = {
345+ let cj = valueOrElse(getInteger(ce, bU), 0)
346+ let ck = split(ci, "_")
349347 let aA = lastBlock.timestamp
350- let cm = ce(cf, ck)
351- let cg = cm[ca]
352- let ch = cm[cb]
353- if (if (if ((cl[bs] == "T"))
354- then (parseIntValue(cl[br]) == ck)
348+ let cl = cd(ce, cj)
349+ let cf = cl[bZ]
350+ let cg = cl[ca]
351+ if (if (if ((ck[br] == "T"))
352+ then (parseIntValue(ck[bq]) == cj)
355353 else false)
356- then (ch[cd] == "INPROGRESS")
354+ then (cg[cc] == "INPROGRESS")
357355 else false)
358- then (parseIntValue(cg[cc]) > aA)
356+ then (parseIntValue(cf[cb]) > aA)
359357 else false
360358 }
361359
362360
363-func cn (cj) = {
364- let cl = split(cj, "_")
361+func cm (ci) = {
362+ let ck = split(ci, "_")
365363 let aA = lastBlock.timestamp
366- let co = parseIntValue(cl[br])
367- let cp = parseIntValue(cl[bt])
368- if (if ((cl[bs] == "D"))
369- then ((co + aR) > aA)
364+ let cn = parseIntValue(ck[bq])
365+ let co = parseIntValue(ck[bs])
366+ if (if ((ck[br] == "D"))
367+ then ((cn + aQ) > aA)
370368 else false)
371- then (3 >= cp)
369+ then (3 >= co)
372370 else false
373371 }
374372
375373
376-func cq (cj) = {
377- let cr = split(cj, "_")[bs]
378- if ((cr != "T"))
379- then (cr != "D")
374+func cp (ci) = {
375+ let cq = split(ci, "_")[br]
376+ if ((cq != "T"))
377+ then (cq != "D")
380378 else false
381379 }
382380
383381
384-func cs (cf,cj) = {
385- let ck = valueOrElse(getInteger(cf, bV), 0)
386- let cl = split(cj, "_")
382+func cr (ce,ci) = {
383+ let cj = valueOrElse(getInteger(ce, bU), 0)
384+ let ck = split(ci, "_")
387385 let aA = lastBlock.timestamp
388- let cm = ce(cf, ck)
389- let cg = cm[ca]
390- let ch = cm[cb]
391- let cr = cl[bs]
392- if ((cr == "D"))
386+ let cl = cd(ce, cj)
387+ let cf = cl[bZ]
388+ let cg = cl[ca]
389+ let cq = ck[br]
390+ if ((cq == "D"))
393391 then true
394- else if (if (if ((cl[bs] == "T"))
395- then (parseIntValue(cl[br]) == ck)
392+ else if (if (if ((ck[br] == "T"))
393+ then (parseIntValue(ck[bq]) == cj)
396394 else false)
397- then (ch[cd] == "INPROGRESS")
395+ then (cg[cc] == "INPROGRESS")
398396 else false)
399- then (parseIntValue(cg[cc]) > aA)
397+ then (parseIntValue(cf[cb]) > aA)
400398 else false
401399 }
402400
403401
404-func ct (cu) = (parseIntValue(cu[aZ]) * aW)
405-
406-
407-func cv (cw,cx,cy) = throw(((((("Cheat attempt: oldLoc=" + cw) + ", newLoc=") + cx) + ", case=") + toString(cy)))
408-
402+func cs (ct) = (parseIntValue(ct[aY]) * aV)
403+
404+
405+func cu (cv,cw,cx) = throw(((((("Cheat attempt: oldLoc=" + cv) + ", newLoc=") + cw) + ", case=") + toString(cx)))
406+
407+
408+let cy = false
409409
410410 let cz = false
411411
412-let cA = false
413-
414-let cB = 86400000
415-
416-let cC = take(drop(this.bytes, 1), 1)
417-
418-let cD = {
419- let cE = cC
420- if ((base58'2W' == cE))
412+let cA = 86400000
413+
414+let cB = take(drop(this.bytes, 1), 1)
415+
416+let cC = {
417+ let cD = cB
418+ if ((base58'2W' == cD))
421419 then base58'9wc3LXNA4TEBsXyKtoLE9mrbDD7WMHXvXrCjZvabLAsi'
422- else if ((base58'2T' == cE))
420+ else if ((base58'2T' == cD))
423421 then base58'6mWwf9mZBjVgkC54idpyaZLQfAosD914wT8fGf2iiY63'
424422 else throw("Unknown chain")
425423 }
426424
427-let cF = {
428- let cE = cC
429- if ((base58'2W' == cE))
425+let cE = {
426+ let cD = cB
427+ if ((base58'2W' == cD))
430428 then "3PQCuvFbvh4LkPUnrnU1z3jnbA1p9m3WNhv"
431- else if ((base58'2T' == cE))
429+ else if ((base58'2T' == cD))
432430 then "3MumkGGztCKAXpWDqxkddofqXSUbqQkvSJy"
433431 else throw("Unknown chain")
434432 }
435433
436-let cG = {
437- let cE = cC
438- if ((base58'2W' == cE))
434+let cF = {
435+ let cD = cB
436+ if ((base58'2W' == cD))
439437 then 10000000000
440- else if ((base58'2T' == cE))
438+ else if ((base58'2T' == cD))
441439 then 100000000
442440 else throw("Unknown chain")
443441 }
444442
445-let cH = {
446- let cE = cC
447- if ((base58'2W' == cE))
448- then cB
449- else if ((base58'2T' == cE))
443+let cG = {
444+ let cD = cB
445+ if ((base58'2W' == cD))
446+ then cA
447+ else if ((base58'2T' == cD))
450448 then 60000
451449 else throw("Unknown chain")
452450 }
453451
454-let cI = {
455- let cE = cC
456- if ((base58'2W' == cE))
452+let cH = {
453+ let cD = cB
454+ if ((base58'2W' == cD))
457455 then 10800000
458- else if ((base58'2T' == cE))
456+ else if ((base58'2T' == cD))
459457 then 900000
460458 else throw("Unknown chain")
461459 }
462460
463-let cJ = "__"
464-
465-let cK = 1000000
466-
467-let cL = 100000000
468-
469-let cM = 25
470-
471-let cN = 100
472-
473-let cO = 225
474-
475-let cP = 400
476-
477-let cQ = 625
478-
479-let cR = [0, 1, 2, 3, 4, 5]
480-
481-func cS (cT,cU) = valueOrErrorMessage(getString(cT, cU), makeString(["mandatory ", toString(cT), ".", cU, " is not defined"], ""))
482-
483-
484-let cV = 1
485-
486-let cW = 2
487-
488-let cX = 3
489-
490-let cY = 4
491-
492-let cZ = 7
493-
494-let da = 8
495-
496-func db () = "%s__restConfig"
497-
498-
499-func dc () = "%s__restAddr"
500-
501-
502-func dd (de) = split_4C(cS(de, db()), cJ)
503-
504-
505-func df (dg,dh) = valueOrErrorMessage(addressFromString(dg[dh]), ("Rest cfg doesn't contain address at index " + toString(dh)))
506-
507-
508-let di = addressFromStringValue(valueOrElse(getString(this, dc()), cF))
509-
510-let dg = dd(di)
511-
512-let aq = df(dg, cV)
513-
514-let dj = df(dg, cW)
515-
516-let dk = df(dg, cX)
517-
518-let dl = df(dg, cY)
519-
520-let dm = df(dg, cZ)
521-
522-let dn = df(dg, da)
523-
524-let do = 0
525-
526-let dp = 1
527-
528-let dq = 2
529-
530-let dr = 3
531-
532-let ds = "wlg_assetId"
533-
534-let dt = valueOrErrorMessage(getBinary(dl, ds), "WLGOLD is not issued yet")
535-
536-let du = "acresAssetId"
537-
538-let dv = valueOrErrorMessage(getBinary(dn, du), "ACRES is not issued yet")
539-
540-let dw = 2
541-
542-func dx (cT) = ("finishBlockForAddr_" + cT)
543-
544-
545-func dy () = "resTypesProportions"
546-
547-
548-func dz (dA) = ("resTypesByContinent_" + dA)
549-
550-
551-func dB (bC) = ("stakedLandsByOwner_" + bC)
552-
553-
554-func dC (bC) = ("stakedPiecesByOwner_" + bC)
555-
556-
557-func dD (dE) = {
558- let cE = dE
559- if ($isInstanceOf(cE, "String"))
461+let cI = "__"
462+
463+let cJ = 1000000
464+
465+let cK = 100000000
466+
467+let cL = 25
468+
469+let cM = 100
470+
471+let cN = 225
472+
473+let cO = 400
474+
475+let cP = 625
476+
477+let cQ = [0, 1, 2, 3, 4, 5]
478+
479+func cR (cS,cT) = valueOrErrorMessage(getString(cS, cT), makeString(["mandatory ", toString(cS), ".", cT, " is not defined"], ""))
480+
481+
482+let cU = 1
483+
484+let cV = 2
485+
486+let cW = 3
487+
488+let cX = 4
489+
490+let cY = 7
491+
492+let cZ = 8
493+
494+func da () = "%s__restConfig"
495+
496+
497+func db () = "%s__restAddr"
498+
499+
500+func dc (dd) = split_4C(cR(dd, da()), cI)
501+
502+
503+func de (df,dg) = valueOrErrorMessage(addressFromString(df[dg]), ("Rest cfg doesn't contain address at index " + toString(dg)))
504+
505+
506+let dh = addressFromStringValue(valueOrElse(getString(this, db()), cE))
507+
508+let df = dc(dh)
509+
510+let aq = de(df, cU)
511+
512+let di = de(df, cV)
513+
514+let dj = de(df, cW)
515+
516+let dk = de(df, cX)
517+
518+let dl = de(df, cY)
519+
520+let dm = de(df, cZ)
521+
522+let dn = 0
523+
524+let do = 1
525+
526+let dp = 2
527+
528+let dq = 3
529+
530+let dr = "wlg_assetId"
531+
532+let ds = valueOrErrorMessage(getBinary(dk, dr), "WLGOLD is not issued yet")
533+
534+let dt = "acresAssetId"
535+
536+let du = valueOrErrorMessage(getBinary(dm, dt), "ACRES is not issued yet")
537+
538+let dv = 2
539+
540+func dw (cS) = ("finishBlockForAddr_" + cS)
541+
542+
543+func dx () = "resTypesProportions"
544+
545+
546+func dy (dz) = ("resTypesByContinent_" + dz)
547+
548+
549+func dA (bB) = ("stakedLandsByOwner_" + bB)
550+
551+
552+func dB (bB) = ("stakedPiecesByOwner_" + bB)
553+
554+
555+func dC (dD) = {
556+ let cD = dD
557+ if ($isInstanceOf(cD, "String"))
560558 then {
561- let dF = cE
562- dF
559+ let dE = cD
560+ dE
563561 }
564562 else throw("fail to cast into String")
565563 }
566564
567565
568-func dG (dE) = {
569- let cE = dE
570- if ($isInstanceOf(cE, "Int"))
566+func dF (dD) = {
567+ let cD = dD
568+ if ($isInstanceOf(cD, "Int"))
571569 then {
572- let dH = cE
573- dH
570+ let dG = cD
571+ dG
574572 }
575573 else throw("fail to cast into Int")
576574 }
577575
578576
579-func dI (dE) = {
580- let cE = dE
581- if ($isInstanceOf(cE, "List[Any]"))
577+func dH (dD) = {
578+ let cD = dD
579+ if ($isInstanceOf(cD, "List[Any]"))
582580 then {
583- let dJ = cE
584- dJ
581+ let dI = cD
582+ dI
585583 }
586584 else throw("fail to cast into List[Any]")
587585 }
588586
589587
590-func dK (dE) = {
591- let cE = dE
592- if ($isInstanceOf(cE, "Boolean"))
588+func dJ (dD) = {
589+ let cD = dD
590+ if ($isInstanceOf(cD, "Boolean"))
593591 then {
594- let dF = cE
595- dF
592+ let dE = cD
593+ dE
596594 }
597595 else throw("fail to cast into Boolean")
598596 }
599597
600598
601-func dL (dM) = {
602- let cE = dM
603- if (("S" == cE))
604- then cM
605- else if (("M" == cE))
606- then cN
607- else if (("L" == cE))
608- then cO
609- else if (("XL" == cE))
610- then cP
611- else if (("XXL" == cE))
612- then cQ
599+func dK (dL) = {
600+ let cD = dL
601+ if (("S" == cD))
602+ then cL
603+ else if (("M" == cD))
604+ then cM
605+ else if (("L" == cD))
606+ then cN
607+ else if (("XL" == cD))
608+ then cO
609+ else if (("XXL" == cD))
610+ then cP
613611 else throw("Unknown land size")
614612 }
615613
616614
617-func dN (dF) = isDefined(parseInt(dF))
618-
619-
620-func dO () = "contractsBlocked"
621-
622-
623-func dP (c) = ("lastTxIdByUser_" + c)
624-
625-
626-func dQ (dR,dS) = {
627- let dT = pow(10, 0, dS, 0, 0, DOWN)
628- let dU = toString((dR % dT))
629- let dV = drop(toString(dT), (1 + size(dU)))
630- (((toString((dR / dT)) + ".") + dV) + dU)
631- }
632-
633-
634-func dW (dX,dY,dZ) = {
635- let ea = sha256((dY + dZ))
636- (toInt(ea) % dX)
637- }
638-
639-
640-let eb = {
641- let cE = cC
642- if ((base58'2W' == cE))
615+func dM (dE) = isDefined(parseInt(dE))
616+
617+
618+func dN () = "contractsBlocked"
619+
620+
621+func dO (c) = ("lastTxIdByUser_" + c)
622+
623+
624+func dP (dQ,dR) = {
625+ let dS = pow(10, 0, dR, 0, 0, DOWN)
626+ let dT = toString((dQ % dS))
627+ let dU = drop(toString(dS), (1 + size(dT)))
628+ (((toString((dQ / dS)) + ".") + dU) + dT)
629+ }
630+
631+
632+func dV (dW,dX,dY) = {
633+ let dZ = sha256((dX + dY))
634+ (toInt(dZ) % dW)
635+ }
636+
637+
638+let ea = {
639+ let cD = cB
640+ if ((base58'2W' == cD))
643641 then addressFromStringValue("3PEktVux2RhchSN63DsDo4b4mz4QqzKSeDv")
644- else if ((base58'2T' == cE))
642+ else if ((base58'2T' == cD))
645643 then this
646644 else throw("Unknown chain")
647645 }
648646
649-let ec = {
650- let cE = cC
651- if ((base58'2W' == cE))
647+let eb = {
648+ let cD = cB
649+ if ((base58'2W' == cD))
652650 then addressFromStringValue("3PDVuU45H7Eh5dmtNbnRNRStGwULA7NY6Hb")
653- else if ((base58'2T' == cE))
651+ else if ((base58'2T' == cD))
654652 then this
655653 else throw("Unknown chain")
656654 }
657655
658-let ed = {
659- let cE = cC
660- if ((base58'2W' == cE))
661- then if (cz)
656+let ec = {
657+ let cD = cB
658+ if ((base58'2W' == cD))
659+ then if (cy)
662660 then base58'CWsMtTZC5BjjoL4Q1ayW4Wwb1ehGACQB6DrKyPgotKfm'
663661 else base58'6LfPuKJjLgekmncBhMg2LZyMTNVzZBccXR28ySXm9uXD'
664- else if ((base58'2T' == cE))
662+ else if ((base58'2T' == cD))
665663 then base58'6LfPuKJjLgekmncBhMg2LZyMTNVzZBccXR28ySXm9uXD'
666664 else throw("Unknown chain")
667665 }
668666
669-let ee = base64'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=='
670-
671-let ef = 300000
672-
673-let eg = 5000000
674-
675-let eh = 50
676-
677-let ei = 10000000
678-
679-let ej = {
680- let cE = cC
681- if ((base58'2W' == cE))
667+let ed = base64'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=='
668+
669+let ee = 300000
670+
671+let ef = 5000000
672+
673+let eg = 50
674+
675+let eh = 10000000
676+
677+let ei = {
678+ let cD = cB
679+ if ((base58'2W' == cD))
682680 then 252289527462
683- else if ((base58'2T' == cE))
681+ else if ((base58'2T' == cD))
684682 then 2522895274
685683 else throw("Unknown chain")
686684 }
687685
688-let ek = {
689- let cE = cC
690- if ((base58'2W' == cE))
686+let ej = {
687+ let cD = cB
688+ if ((base58'2W' == cD))
691689 then 250000000
692- else if ((base58'2T' == cE))
690+ else if ((base58'2T' == cD))
693691 then 250000000
694692 else throw("Unknown chain")
695693 }
696694
697-let el = 2500000000
698-
699-let em = toBigInt(5)
700-
701-let en = toBigInt(20)
702-
703-let eo = toBigInt((20 * 20))
704-
705-let ep = toBigInt(((20 * 20) * 20))
706-
707-let eq = toBigInt((((20 * 20) * 20) * 20))
708-
709-let er = toBigInt(((((20 * 20) * 20) * 20) * 20))
710-
711-let es = 500
712-
713-func et () = "nextLandNum"
714-
715-
716-func eu (ev) = ("lcn_" + ev)
717-
718-
719-func ew (ex) = ("la_" + ex)
720-
721-
722-func ey (bv,bC) = ((("ilao_" + bv) + "_") + bC)
723-
724-
725-func ez (ex) = ("lo_" + ex)
726-
727-
728-func eA (ev) = ("duckByCustomName_" + ev)
729-
730-
731-func eB (ev) = ("accountByCustomName_" + ev)
732-
733-
734-func eC () = "oldiesList"
735-
736-
737-let eD = 0
738-
739-let eE = 1
740-
741-let eF = 2
742-
743-let eG = 0
744-
745-let eH = 5
746-
747-let eI = 6
748-
749-let eJ = 7
750-
751-func eK (ex,dM) = ((aF + ex) + dM)
752-
753-
754-func eL (eM,eN) = {
755- let eO = if ((eM >= 0))
756- then (((eM + eN) - 1) / eN)
757- else -((((-(eM) + eN) - 1) / eN))
758- (eO * cL)
759- }
760-
761-
762-func eP (eQ,eR) = {
763- let eS = (((((eR[0] + eR[1]) + eR[2]) + eR[3]) + eR[4]) + eR[5])
764- if ((0 >= eS))
695+let ek = 2500000000
696+
697+let el = toBigInt(5)
698+
699+let em = toBigInt(20)
700+
701+let en = toBigInt((20 * 20))
702+
703+let eo = toBigInt(((20 * 20) * 20))
704+
705+let ep = toBigInt((((20 * 20) * 20) * 20))
706+
707+let eq = toBigInt(((((20 * 20) * 20) * 20) * 20))
708+
709+let er = 500
710+
711+func es () = "nextLandNum"
712+
713+
714+func et (eu) = ("lcn_" + eu)
715+
716+
717+func ev (ew) = ("la_" + ew)
718+
719+
720+func ex (bu,bB) = ((("ilao_" + bu) + "_") + bB)
721+
722+
723+func ey (ew) = ("lo_" + ew)
724+
725+
726+func ez (eu) = ("duckByCustomName_" + eu)
727+
728+
729+func eA (eu) = ("accountByCustomName_" + eu)
730+
731+
732+func eB () = "oldiesList"
733+
734+
735+let eC = 0
736+
737+let eD = 1
738+
739+let eE = 2
740+
741+let eF = 0
742+
743+let eG = 5
744+
745+let eH = 6
746+
747+let eI = 7
748+
749+func eJ (ew,dL) = ((aF + ew) + dL)
750+
751+
752+func eK (eL,eM) = {
753+ let eN = if ((eL >= 0))
754+ then (((eL + eM) - 1) / eM)
755+ else -((((-(eL) + eM) - 1) / eM))
756+ (eN * cK)
757+ }
758+
759+
760+func eO (eP,eQ) = {
761+ let eR = (((((eQ[0] + eQ[1]) + eQ[2]) + eQ[3]) + eQ[4]) + eQ[5])
762+ if ((0 >= eR))
765763 then throw("Zero weights sum")
766764 else {
767- let eT = fraction(eQ, cK, eS)
768- func eU (eV,eW) = (eV :+ fraction(eW, eT, cK))
769-
770- let eX = eR
771- let eY = size(eX)
772- let eZ = nil
773- func fa (fb,fc) = if ((fc >= eY))
774- then fb
775- else eU(fb, eX[fc])
776-
777- func fd (fb,fc) = if ((fc >= eY))
778- then fb
765+ let eS = fraction(eP, cJ, eR)
766+ func eT (eU,eV) = (eU :+ fraction(eV, eS, cJ))
767+
768+ let eW = eQ
769+ let eX = size(eW)
770+ let eY = nil
771+ func eZ (fa,fb) = if ((fb >= eX))
772+ then fa
773+ else eT(fa, eW[fb])
774+
775+ func fc (fa,fb) = if ((fb >= eX))
776+ then fa
779777 else throw("List size exceeds 6")
780778
781- fd(fa(fa(fa(fa(fa(fa(eZ, 0), 1), 2), 3), 4), 5), 6)
782- }
783- }
784-
785-
786-func fe (eQ) = {
787- let ff = split(value(getString(dy())), "_")
788- if ((size(ff) != aI))
779+ fc(eZ(eZ(eZ(eZ(eZ(eZ(eY, 0), 1), 2), 3), 4), 5), 6)
780+ }
781+ }
782+
783+
784+func fd (eP) = {
785+ let fe = split(value(getString(dx())), "_")
786+ if ((size(fe) != aI))
789787 then throw("Wrong proportions data")
790788 else {
791- let fg = [parseIntValue(ff[0]), parseIntValue(ff[1]), parseIntValue(ff[2]), parseIntValue(ff[3]), parseIntValue(ff[4]), parseIntValue(ff[5])]
792- eP(eQ, fg)
793- }
794- }
795-
796-
797-func fh (fi,fj,fk) = {
798- let fl = fe(fk)
799- func fm (eV,dh) = {
800- let fn = (parseIntValue(fj[dh]) - fl[dh])
801- if ((0 > fn))
802- then throw(((((("Not enough material idx=" + toString(dh)) + ", you have ") + fj[dh]) + ", but need ") + toString(fl[dh])))
803- else (eV :+ toString(fn))
789+ let ff = [parseIntValue(fe[0]), parseIntValue(fe[1]), parseIntValue(fe[2]), parseIntValue(fe[3]), parseIntValue(fe[4]), parseIntValue(fe[5])]
790+ eO(eP, ff)
791+ }
792+ }
793+
794+
795+func fg (fh,fi,fj) = {
796+ let fk = fd(fj)
797+ func fl (eU,dg) = {
798+ let fm = (parseIntValue(fi[dg]) - fk[dg])
799+ if ((0 > fm))
800+ then throw(((((("Not enough material idx=" + toString(dg)) + ", you have ") + fi[dg]) + ", but need ") + toString(fk[dg])))
801+ else (eU :+ toString(fm))
804802 }
805803
806- if (fi)
804+ if (fh)
807805 then {
808- let eX = cR
809- let eY = size(eX)
810- let eZ = nil
811- func fa (fb,fc) = if ((fc >= eY))
812- then fb
813- else fm(fb, eX[fc])
814-
815- func fd (fb,fc) = if ((fc >= eY))
816- then fb
806+ let eW = cQ
807+ let eX = size(eW)
808+ let eY = nil
809+ func eZ (fa,fb) = if ((fb >= eX))
810+ then fa
811+ else fl(fa, eW[fb])
812+
813+ func fc (fa,fb) = if ((fb >= eX))
814+ then fa
817815 else throw("List size exceeds 6")
818816
819- fd(fa(fa(fa(fa(fa(fa(eZ, 0), 1), 2), 3), 4), 5), 6)
820- }
821- else fj
822- }
823-
824-
825-func fo (fp,fq) = if ((fq == ""))
826- then $Tuple2(fp, false)
817+ fc(eZ(eZ(eZ(eZ(eZ(eZ(eY, 0), 1), 2), 3), 4), 5), 6)
818+ }
819+ else fi
820+ }
821+
822+
823+func fn (fo,fp) = if ((fp == ""))
824+ then $Tuple2(fo, false)
827825 else {
828- func fr (eV,fs) = {
829- let ft = split(fs, ",")
830- if ((size(ft) != 2))
826+ func fq (eU,fr) = {
827+ let fs = split(fr, ",")
828+ if ((size(fs) != 2))
831829 then throw("Incorrect format, should be index,amount")
832830 else {
833- let dh = parseIntValue(ft[0])
834- if (if ((0 > dh))
831+ let dg = parseIntValue(fs[0])
832+ if (if ((0 > dg))
835833 then true
836- else (dh >= size(aY)))
834+ else (dg >= size(aX)))
837835 then throw("Unknown product idx")
838836 else {
839- let fu = parseIntValue(ft[1])
840- let fv = split(eV._1, (ft[0] + ":"))
841- if ((size(fv) != 2))
842- then throw((("You don't have " + aU[dh]) + " equipped"))
837+ let ft = parseIntValue(fs[1])
838+ let fu = split(eU._1, (fs[0] + ":"))
839+ if ((size(fu) != 2))
840+ then throw((("You don't have " + aT[dg]) + " equipped"))
843841 else {
844- let fw = fv[1]
845- let fx = if (dN(take(drop(fw, 1), 1)))
842+ let fv = fu[1]
843+ let fw = if (dM(take(drop(fv, 1), 1)))
846844 then 2
847845 else 1
848- let fy = parseIntValue(take(fw, fx))
849- let fz = drop(fw, fx)
850- let fA = if ((fy >= fu))
851- then (fy - fu)
852- else throw(((((("You equipped " + toString(fy)) + " of ") + aU[dh]) + ", but tried to use ") + toString(fu)))
853- $Tuple2(((((fv[0] + ft[0]) + ":") + toString(fA)) + fz), if (eV._2)
846+ let fx = parseIntValue(take(fv, fw))
847+ let fy = drop(fv, fw)
848+ let fz = if ((fx >= ft))
849+ then (fx - ft)
850+ else throw(((((("You equipped " + toString(fx)) + " of ") + aT[dg]) + ", but tried to use ") + toString(ft)))
851+ $Tuple2(((((fu[0] + fs[0]) + ":") + toString(fz)) + fy), if (eU._2)
854852 then true
855- else if (if ((dh >= 6))
856- then (8 >= dh)
853+ else if (if ((dg >= 6))
854+ then (8 >= dg)
857855 else false)
858- then (fA == 0)
856+ then (fz == 0)
859857 else false)
860858 }
861859 }
862860 }
863861 }
864862
865- let eX = split(fq, "_")
866- let eY = size(eX)
867- let eZ = $Tuple2(fp, false)
868- func fa (fb,fc) = if ((fc >= eY))
869- then fb
870- else fr(fb, eX[fc])
871-
872- func fd (fb,fc) = if ((fc >= eY))
873- then fb
863+ let eW = split(fp, "_")
864+ let eX = size(eW)
865+ let eY = $Tuple2(fo, false)
866+ func eZ (fa,fb) = if ((fb >= eX))
867+ then fa
868+ else fq(fa, eW[fb])
869+
870+ func fc (fa,fb) = if ((fb >= eX))
871+ then fa
874872 else throw("List size exceeds 10")
875873
876- fd(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(eZ, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
874+ fc(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eY, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
877875 }
878876
879877
880-func fB (fC) = {
881- let fD = if ((fC == ""))
878+func fA (fB) = {
879+ let fC = if ((fB == ""))
882880 then nil
883- else split_4C(fC, "_")
884- func fE (eV,cu) = {
885- let fF = (size(eV) / 8)
886- let fy = if ((size(fD) > fF))
887- then parseIntValue(fD[fF])
881+ else split_4C(fB, "_")
882+ func fD (eU,ct) = {
883+ let fE = (size(eU) / 8)
884+ let fx = if ((size(fC) > fE))
885+ then parseIntValue(fC[fE])
888886 else 0
889- (eV + toBytes(fy))
887+ (eU + toBytes(fx))
890888 }
891889
892- let eX = aY
893- let eY = size(eX)
894- let eZ = base58''
895- func fa (fb,fc) = if ((fc >= eY))
896- then fb
897- else fE(fb, eX[fc])
898-
899- func fd (fb,fc) = if ((fc >= eY))
900- then fb
890+ let eW = aX
891+ let eX = size(eW)
892+ let eY = base58''
893+ func eZ (fa,fb) = if ((fb >= eX))
894+ then fa
895+ else fD(fa, eW[fb])
896+
897+ func fc (fa,fb) = if ((fb >= eX))
898+ then fa
901899 else throw("List size exceeds 50")
902900
903- fd(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(eZ, 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)
904- }
905-
906-
907-func fG (fH) = {
908- func fI (eV,cu) = {
909- let fF = size(eV)
910- let fJ = take(drop(fH, (8 * fF)), 8)
911- (eV :+ toString(toInt(fJ)))
901+ fc(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eY, 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)
902+ }
903+
904+
905+func fF (fG) = {
906+ func fH (eU,ct) = {
907+ let fE = size(eU)
908+ let fI = take(drop(fG, (8 * fE)), 8)
909+ (eU :+ toString(toInt(fI)))
912910 }
913911
914912 makeString_2C({
915- let eX = aY
916- let eY = size(eX)
917- let eZ = nil
918- func fa (fb,fc) = if ((fc >= eY))
919- then fb
920- else fI(fb, eX[fc])
921-
922- func fd (fb,fc) = if ((fc >= eY))
923- then fb
913+ let eW = aX
914+ let eX = size(eW)
915+ let eY = nil
916+ func eZ (fa,fb) = if ((fb >= eX))
917+ then fa
918+ else fH(fa, eW[fb])
919+
920+ func fc (fa,fb) = if ((fb >= eX))
921+ then fa
924922 else throw("List size exceeds 50")
925923
926- fd(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(eZ, 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)
924+ fc(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eY, 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)
927925 }, "_")
928926 }
929927
930928
931-func fK (fL,fM) = {
932- func fN (eV,fF) = {
933- let fO = if ((size(fL) > (7 + fF)))
934- then fL[(7 + fF)]
929+func fJ (fK,fL) = {
930+ func fM (eU,fE) = {
931+ let fN = if ((size(fK) > (7 + fE)))
932+ then fK[(7 + fE)]
935933 else 0
936- if ((parseIntValue(fM[fF]) > (fL[fF] + fO)))
937- then throw(("Requirement not satisfied: " + k[fF]))
934+ if ((parseIntValue(fL[fE]) > (fK[fE] + fN)))
935+ then throw(("Requirement not satisfied: " + k[fE]))
938936 else true
939937 }
940938
941- let eX = [0, 1, 2, 3, 4, 5, 6]
942- let eY = size(eX)
943- let eZ = false
944- func fa (fb,fc) = if ((fc >= eY))
945- then fb
946- else fN(fb, eX[fc])
947-
948- func fd (fb,fc) = if ((fc >= eY))
949- then fb
939+ let eW = [0, 1, 2, 3, 4, 5, 6]
940+ let eX = size(eW)
941+ let eY = false
942+ func eZ (fa,fb) = if ((fb >= eX))
943+ then fa
944+ else fM(fa, eW[fb])
945+
946+ func fc (fa,fb) = if ((fb >= eX))
947+ then fa
950948 else throw("List size exceeds 7")
951949
952- fd(fa(fa(fa(fa(fa(fa(fa(eZ, 0), 1), 2), 3), 4), 5), 6), 7)
953- }
954-
955-
956-func fP (fQ,fD,fR,fL,fS,fT) = {
957- let ft = split(fQ, ":")
958- if ((size(ft) != 2))
950+ fc(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eY, 0), 1), 2), 3), 4), 5), 6), 7)
951+ }
952+
953+
954+func fO (fP,fC,fQ,fK,fR,fS) = {
955+ let fs = split(fP, ":")
956+ if ((size(fs) != 2))
959957 then throw("Incorrect format, should be index:amount")
960- else if (if (!(fR))
961- then (size(ft[0]) != 2)
958+ else if (if (!(fQ))
959+ then (size(fs[0]) != 2)
962960 else false)
963961 then throw("Product idx should be 2 digits, zero padded")
964962 else {
965- let fU = parseIntValue(ft[0])
966- let fV = parseIntValue(ft[1])
967- if (!(containsElement(aX, fU)))
968- then throw((("Product '" + aU[fU]) + "' cannot be used for land defense"))
969- else if ((0 > fV))
963+ let fT = parseIntValue(fs[0])
964+ let fU = parseIntValue(fs[1])
965+ if (!(containsElement(aW, fT)))
966+ then throw((("Product '" + aT[fT]) + "' cannot be used for land defense"))
967+ else if ((0 > fU))
970968 then throw("Count can't be negative")
971- else if ((fV > u))
972- then throw(((("Can't put more than " + toString(u)) + " of ") + aU[fU]))
973- else if ((fV == 0))
974- then $Tuple3(fD, fS, fT)
969+ else if ((fU > u))
970+ then throw(((("Can't put more than " + toString(u)) + " of ") + aT[fT]))
971+ else if ((fU == 0))
972+ then $Tuple3(fC, fR, fS)
975973 else {
976- let fW = take(fD, (8 * fU))
977- let fy = toInt(take(drop(fD, (8 * fU)), 8))
978- let fz = drop(fD, (8 * (fU + 1)))
979- let cu = split(aY[fU], "_")
980- if (if (!(fR))
981- then (fV > fy)
974+ let fV = take(fC, (8 * fT))
975+ let fx = toInt(take(drop(fC, (8 * fT)), 8))
976+ let fy = drop(fC, (8 * (fT + 1)))
977+ let ct = split(aX[fT], "_")
978+ if (if (!(fQ))
979+ then (fU > fx)
982980 else false)
983- then throw(((((("You have " + toString(fy)) + " of ") + aU[fU]) + ", but tried to use ") + toString(fV)))
981+ then throw(((((("You have " + toString(fx)) + " of ") + aT[fT]) + ", but tried to use ") + toString(fU)))
984982 else {
985- let fA = if (if (!(fR))
986- then fK(fL, split(cu[bb], ","))
983+ let fz = if (if (!(fQ))
984+ then fJ(fK, split(ct[ba], ","))
987985 else false)
988- then (fy - fV)
989- else (fy + fV)
990- let fX = (eL(fA, bd) - eL(fy, bd))
991- $Tuple3(((fW + toBytes(fA)) + fz), (fS + fX), (fT - fX))
986+ then (fx - fU)
987+ else (fx + fU)
988+ let fW = (eK(fz, bc) - eK(fx, bc))
989+ $Tuple3(((fV + toBytes(fz)) + fy), (fR + fW), (fS - fW))
992990 }
993991 }
994992 }
995993 }
996994
997995
998-func fY (fQ,fD,fR,fZ,ga,gb,fL) = {
999- let ft = split(fQ, ":")
1000- if ((size(ft) != 2))
996+func fX (fP,fC,fQ,fY,fZ,ga,fK) = {
997+ let fs = split(fP, ":")
998+ if ((size(fs) != 2))
1001999 then throw("Incorrect format, should be index:amount")
1002- else if (if (!(fR))
1003- then (size(ft[0]) != 2)
1000+ else if (if (!(fQ))
1001+ then (size(fs[0]) != 2)
10041002 else false)
10051003 then throw("Product idx should be 2 digits, zero padded")
10061004 else {
1007- let fU = parseIntValue(ft[0])
1008- let fV = parseIntValue(ft[1])
1009- if (if ((0 > fU))
1005+ let fT = parseIntValue(fs[0])
1006+ let fU = parseIntValue(fs[1])
1007+ if (if ((0 > fT))
10101008 then true
1011- else (fU >= size(aY)))
1009+ else (fT >= size(aX)))
10121010 then throw("Unknown product idx")
1013- else if ((0 > fV))
1011+ else if ((0 > fU))
10141012 then throw("Count can't be negative")
1015- else if ((fV > u))
1016- then throw(((("Can't put more than " + toString(u)) + " of ") + aU[fU]))
1017- else if ((fV == 0))
1018- then $Tuple2(fD, false)
1013+ else if ((fU > u))
1014+ then throw(((("Can't put more than " + toString(u)) + " of ") + aT[fT]))
1015+ else if ((fU == 0))
1016+ then $Tuple2(fC, false)
10191017 else {
1020- let fW = take(fD, (8 * fU))
1021- let fy = toInt(take(drop(fD, (8 * fU)), 8))
1022- let fz = drop(fD, (8 * (fU + 1)))
1023- let cu = split(aY[fU], "_")
1024- if (if (!(fR))
1025- then (fV > fy)
1018+ let fV = take(fC, (8 * fT))
1019+ let fx = toInt(take(drop(fC, (8 * fT)), 8))
1020+ let fy = drop(fC, (8 * (fT + 1)))
1021+ let ct = split(aX[fT], "_")
1022+ if (if (!(fQ))
1023+ then (fU > fx)
10261024 else false)
1027- then throw(((((("You have " + toString(fy)) + " of ") + aU[fU]) + ", but tried to use ") + toString(fV)))
1025+ then throw(((((("You have " + toString(fx)) + " of ") + aT[fT]) + ", but tried to use ") + toString(fU)))
10281026 else {
1029- let gc = if (if (!(fR))
1030- then fK(fL, split(cu[bb], ","))
1027+ let gb = if (if (!(fQ))
1028+ then fJ(fK, split(ct[ba], ","))
10311029 else false)
10321030 then {
1033- let gd = cu[bc]
1034- if ((gd == ""))
1031+ let gc = ct[bb]
1032+ if ((gc == ""))
10351033 then throw("Item cannot be equipped")
10361034 else {
1037- let ge = parseIntValue(gd)
1038- let gf = (ge / 100)
1039- if ((fZ != gf))
1035+ let gd = parseIntValue(gc)
1036+ let ge = (gd / 100)
1037+ if ((fY != ge))
10401038 then throw("Segment incompatible")
10411039 else {
1042- let gg = ((ge % 100) / 10)
1043- if ((ga != gg))
1040+ let gf = ((gd % 100) / 10)
1041+ if ((fZ != gf))
10441042 then throw("Slot incompatible")
10451043 else {
1046- let gh = (ge % 10)
1047- if (if ((gb != 0))
1048- then (gh > 1)
1044+ let gg = (gd % 10)
1045+ if (if ((ga != 0))
1046+ then (gg > 1)
10491047 else false)
10501048 then throw("Big items should occupy slot 0")
1051- else (gh > 1)
1049+ else (gg > 1)
10521050 }
10531051 }
10541052 }
10551053 }
10561054 else false
1057- $Tuple2(((fW + toBytes((fy + (if (fR)
1058- then fV
1059- else -(fV))))) + fz), gc)
1055+ $Tuple2(((fV + toBytes((fx + (if (fQ)
1056+ then fU
1057+ else -(fU))))) + fy), gb)
10601058 }
10611059 }
10621060 }
10631061 }
10641062
10651063
1066-func gi (gj,gk,fR,fZ,ga,gl) = if ((gj != ""))
1064+func gh (gi,gj,fQ,fY,fZ,gk) = if ((gi != ""))
10671065 then {
1068- let gm = split(gj, ",")
1069- if ((size(gm) > t))
1066+ let gl = split(gi, ",")
1067+ if ((size(gl) > t))
10701068 then throw("Wrong slots format")
10711069 else {
1072- let gn = gm[0]
1073- let go = if ((size(gm) > 1))
1074- then gm[1]
1070+ let gm = gl[0]
1071+ let gn = if ((size(gl) > 1))
1072+ then gl[1]
10751073 else ""
1076- if (if ((gn == ""))
1077- then (go == "")
1074+ if (if ((gm == ""))
1075+ then (gn == "")
10781076 else false)
1079- then gk
1077+ then gj
10801078 else {
1081- let gp = if ((gn != ""))
1082- then fY(gn, gk, fR, fZ, ga, 0, gl)
1083- else $Tuple2(gk, false)
1084- if ((go != ""))
1085- then if (gp._2)
1079+ let go = if ((gm != ""))
1080+ then fX(gm, gj, fQ, fY, fZ, 0, gk)
1081+ else $Tuple2(gj, false)
1082+ if ((gn != ""))
1083+ then if (go._2)
10861084 then throw("Big item already occupies slot")
1087- else fY(go, gp._1, fR, fZ, ga, 1, gl)._1
1088- else gp._1
1085+ else fX(gn, go._1, fQ, fY, fZ, 1, gk)._1
1086+ else go._1
10891087 }
10901088 }
10911089 }
1092- else gk
1093-
1094-
1095-func gq (gr,gs,fR,gl) = {
1096- func fZ (eV,gt) = {
1097- let fF = eV._1
1098- let ga = split(gt, ";")
1099- if ((size(ga) != s))
1090+ else gj
1091+
1092+
1093+func gp (gq,gr,fQ,gk) = {
1094+ func fY (eU,gs) = {
1095+ let fE = eU._1
1096+ let fZ = split(gs, ";")
1097+ if ((size(fZ) != s))
11001098 then throw("Wrong segment format")
11011099 else {
1102- let gu = ga[0]
1103- let gv = ga[1]
1104- if (if ((gu == ""))
1105- then (gv == "")
1100+ let gt = fZ[0]
1101+ let gu = fZ[1]
1102+ if (if ((gt == ""))
1103+ then (gu == "")
11061104 else false)
1107- then $Tuple2((fF + 1), eV._2)
1105+ then $Tuple2((fE + 1), eU._2)
11081106 else {
1109- let gw = gi(gu, eV._2, fR, fF, 0, gl)
1110- $Tuple2((fF + 1), gi(gv, gw, fR, fF, 1, gl))
1107+ let gv = gh(gt, eU._2, fQ, fE, 0, gk)
1108+ $Tuple2((fE + 1), gh(gu, gv, fQ, fE, 1, gk))
11111109 }
11121110 }
11131111 }
11141112
1115-( let eX = gr
1116- let eY = size(eX)
1117- let eZ = $Tuple2(0, gs)
1118- func fa (fb,fc) = if ((fc >= eY))
1119- then fb
1120- else fZ(fb, eX[fc])
1121-
1122- func fd (fb,fc) = if ((fc >= eY))
1123- then fb
1113+( let eW = gq
1114+ let eX = size(eW)
1115+ let eY = $Tuple2(0, gr)
1116+ func eZ (fa,fb) = if ((fb >= eX))
1117+ then fa
1118+ else fY(fa, eW[fb])
1119+
1120+ func fc (fa,fb) = if ((fb >= eX))
1121+ then fa
11241122 else throw("List size exceeds 6")
11251123
1126- fd(fa(fa(fa(fa(fa(fa(eZ, 0), 1), 2), 3), 4), 5), 6))._2
1127- }
1128-
1129-
1130-func gx (gr,gs,fS,fT,fR,fL) = if ((3 > size(gr)))
1124+ fc(eZ(eZ(eZ(eZ(eZ(eZ(eY, 0), 1), 2), 3), 4), 5), 6))._2
1125+ }
1126+
1127+
1128+func gw (gq,gr,fR,fS,fQ,fK) = if ((3 > size(gq)))
11311129 then throw("At least duck, mines and traps parts are required")
11321130 else {
1133- func fZ (eV,gt) = {
1134- let fF = eV._1
1135- if ((fF == 0))
1136- then $Tuple4((fF + 1), eV._2, eV._3, eV._4)
1131+ func fY (eU,gs) = {
1132+ let fE = eU._1
1133+ if ((fE == 0))
1134+ then $Tuple4((fE + 1), eU._2, eU._3, eU._4)
11371135 else {
1138- let gy = fP(gt, eV._2, fR, fL, eV._3, eV._4)
1139- $Tuple4((fF + 1), gy._1, gy._2, gy._3)
1136+ let gx = fO(gs, eU._2, fQ, fK, eU._3, eU._4)
1137+ $Tuple4((fE + 1), gx._1, gx._2, gx._3)
11401138 }
11411139 }
11421140
1143- let gz = {
1144- let eX = gr
1145- let eY = size(eX)
1146- let eZ = $Tuple4(0, gs, fS, fT)
1147- func fa (fb,fc) = if ((fc >= eY))
1148- then fb
1149- else fZ(fb, eX[fc])
1150-
1151- func fd (fb,fc) = if ((fc >= eY))
1152- then fb
1141+ let gy = {
1142+ let eW = gq
1143+ let eX = size(eW)
1144+ let eY = $Tuple4(0, gr, fR, fS)
1145+ func eZ (fa,fb) = if ((fb >= eX))
1146+ then fa
1147+ else fY(fa, eW[fb])
1148+
1149+ func fc (fa,fb) = if ((fb >= eX))
1150+ then fa
11531151 else throw("List size exceeds 10")
11541152
1155- fd(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(eZ, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
1156- }
1157- $Tuple3(gz._2, gz._3, gz._4)
1153+ fc(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eY, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
1154+ }
1155+ $Tuple3(gy._2, gy._3, gy._4)
11581156 }
11591157
11601158
1161-func gA (B) = {
1162- let gB = G(B)
1163- let gC = split(valueOrElse(getString(gB), ",;,_,;,_,;,_,;,_,;,_,;,"), "_")
1164- let gD = gq(gC, ee, true, nil)
1165- let gE = split(gC[q], ";")[1]
1166- let ar = if ((gE == ""))
1159+func gz (B) = {
1160+ let gA = G(B)
1161+ let gB = split(valueOrElse(getString(gA), ",;,_,;,_,;,_,;,_,;,_,;,"), "_")
1162+ let gC = gp(gB, ed, true, nil)
1163+ let gD = split(gB[q], ";")[1]
1164+ let ar = if ((gD == ""))
11671165 then 0
11681166 else {
1169- let gF = split(gE, ",")[0]
1170- if ((gF == ""))
1167+ let gE = split(gD, ",")[0]
1168+ if ((gE == ""))
11711169 then 0
11721170 else {
1173- let fQ = split(gF, ":")
1174- let dh = fQ[0]
1175- let gG = fQ[1]
1176- if (if (if (if (if ((dh == "06"))
1171+ let fP = split(gE, ":")
1172+ let dg = fP[0]
1173+ let gF = fP[1]
1174+ if (if (if (if (if ((dg == "06"))
11771175 then true
1178- else (dh == "07"))
1176+ else (dg == "07"))
11791177 then true
1180- else (dh == "08"))
1181- then (gG != "")
1178+ else (dg == "08"))
1179+ then (gF != "")
11821180 else false)
1183- then (parseIntValue(gG) > 0)
1181+ then (parseIntValue(gF) > 0)
11841182 else false)
1185- then parseIntValue(split(aY[parseIntValue(dh)], "_")[ba])
1183+ then parseIntValue(split(aX[parseIntValue(dg)], "_")[aZ])
11861184 else 0
11871185 }
11881186 }
1189- let gl = ap(this, B, ar, true)
1190- let gH = gq(gC, gD, false, gl)
1191- (gH == gH)
1192- }
1193-
1194-
1195-func gI (gJ,gK,gL,gM) = if ((size(gJ) != aI))
1187+ let gk = ap(this, B, ar, true)
1188+ let gG = gp(gB, gC, false, gk)
1189+ (gG == gG)
1190+ }
1191+
1192+
1193+func gH (gI,gJ,gK,gL) = if ((size(gI) != aI))
11961194 then throw("Wrong proportions data")
11971195 else {
1198- func gN (eV,gO) = {
1199- let fn = (parseIntValue(gJ[gO]) + ((gM * gK[gO]) * gL))
1200- if ((0 > fn))
1201- then throw(((((((("Panic! Pieces of type=" + toString(gO)) + ", sign=") + toString(gM)) + ", terrainCounts[i]=") + toString(gK[gO])) + ", landSizeIndex=") + toString(gL)))
1202- else (eV :+ toString(fn))
1203- }
1204-
1205- let eX = cR
1206- let eY = size(eX)
1207- let eZ = nil
1208- func fa (fb,fc) = if ((fc >= eY))
1209- then fb
1210- else gN(fb, eX[fc])
1211-
1212- func fd (fb,fc) = if ((fc >= eY))
1213- then fb
1196+ func gM (eU,gN) = {
1197+ let fm = (parseIntValue(gI[gN]) + ((gL * gJ[gN]) * gK))
1198+ if ((0 > fm))
1199+ then throw(((((((("Panic! Pieces of type=" + toString(gN)) + ", sign=") + toString(gL)) + ", terrainCounts[i]=") + toString(gJ[gN])) + ", landSizeIndex=") + toString(gK)))
1200+ else (eU :+ toString(fm))
1201+ }
1202+
1203+ let eW = cQ
1204+ let eX = size(eW)
1205+ let eY = nil
1206+ func eZ (fa,fb) = if ((fb >= eX))
1207+ then fa
1208+ else gM(fa, eW[fb])
1209+
1210+ func fc (fa,fb) = if ((fb >= eX))
1211+ then fa
12141212 else throw("List size exceeds 6")
12151213
1216- fd(fa(fa(fa(fa(fa(fa(eZ, 0), 1), 2), 3), 4), 5), 6)
1214+ fc(eZ(eZ(eZ(eZ(eZ(eZ(eY, 0), 1), 2), 3), 4), 5), 6)
12171215 }
12181216
12191217
1220-func gP (gK,gL,gM) = {
1221- let gJ = split(valueOrElse(getString(dy()), "0_0_0_0_0_0"), "_")
1222- makeString(gI(gJ, gK, gL, gM), "_")
1223- }
1224-
1225-
1226-func gQ (gR) = [(size(split(gR, "A")) - 1), (size(split(gR, "B")) - 1), (size(split(gR, "C")) - 1), (size(split(gR, "D")) - 1), (size(split(gR, "E")) - 1), (size(split(gR, "F")) - 1)]
1227-
1228-
1229-func gS (gT,gK,gU,gL,gV) = {
1230- func gW (eV,gO) = {
1231- let gX = ((fraction(gU, gV, a) * gK[gO]) * gL)
1232- (eV :+ toString((parseIntValue(gT[gO]) + gX)))
1218+func gO (gJ,gK,gL) = {
1219+ let gI = split(valueOrElse(getString(dx()), "0_0_0_0_0_0"), "_")
1220+ makeString(gH(gI, gJ, gK, gL), "_")
1221+ }
1222+
1223+
1224+func gP (gQ) = [(size(split(gQ, "A")) - 1), (size(split(gQ, "B")) - 1), (size(split(gQ, "C")) - 1), (size(split(gQ, "D")) - 1), (size(split(gQ, "E")) - 1), (size(split(gQ, "F")) - 1)]
1225+
1226+
1227+func gR (gS,gJ,gT,gK,gU) = {
1228+ func gV (eU,gN) = {
1229+ let gW = ((fraction(gT, gU, a) * gJ[gN]) * gK)
1230+ (eU :+ toString((parseIntValue(gS[gN]) + gW)))
12331231 }
12341232
1235- let fg = {
1236- let eX = cR
1237- let eY = size(eX)
1238- let eZ = nil
1239- func fa (fb,fc) = if ((fc >= eY))
1240- then fb
1241- else gW(fb, eX[fc])
1242-
1243- func fd (fb,fc) = if ((fc >= eY))
1244- then fb
1233+ let ff = {
1234+ let eW = cQ
1235+ let eX = size(eW)
1236+ let eY = nil
1237+ func eZ (fa,fb) = if ((fb >= eX))
1238+ then fa
1239+ else gV(fa, eW[fb])
1240+
1241+ func fc (fa,fb) = if ((fb >= eX))
1242+ then fa
12451243 else throw("List size exceeds 6")
12461244
1247- fd(fa(fa(fa(fa(fa(fa(eZ, 0), 1), 2), 3), 4), 5), 6)
1245+ fc(eZ(eZ(eZ(eZ(eZ(eZ(eY, 0), 1), 2), 3), 4), 5), 6)
12481246 }
1249- makeString(fg, "_")
1250- }
1251-
1252-
1253-func gY (gK,gU,gL,gV) = {
1254- func gW (eV,gO) = {
1255- let gX = ((fraction(gU, gV, a) * gK[gO]) * gL)
1256- $Tuple2((eV._1 :+ gX), (eV._2 + gX))
1247+ makeString(ff, "_")
1248+ }
1249+
1250+
1251+func gX (gJ,gT,gK,gU) = {
1252+ func gV (eU,gN) = {
1253+ let gW = ((fraction(gT, gU, a) * gJ[gN]) * gK)
1254+ $Tuple2((eU._1 :+ gW), (eU._2 + gW))
12571255 }
12581256
1259- let eX = cR
1260- let eY = size(eX)
1261- let eZ = $Tuple2(nil, 0)
1262- func fa (fb,fc) = if ((fc >= eY))
1263- then fb
1264- else gW(fb, eX[fc])
1265-
1266- func fd (fb,fc) = if ((fc >= eY))
1267- then fb
1257+ let eW = cQ
1258+ let eX = size(eW)
1259+ let eY = $Tuple2(nil, 0)
1260+ func eZ (fa,fb) = if ((fb >= eX))
1261+ then fa
1262+ else gV(fa, eW[fb])
1263+
1264+ func fc (fa,fb) = if ((fb >= eX))
1265+ then fa
12681266 else throw("List size exceeds 6")
12691267
1270- fd(fa(fa(fa(fa(fa(fa(eZ, 0), 1), 2), 3), 4), 5), 6)
1271- }
1272-
1273-
1274-func gZ (ha,hb,hc,hd) = {
1275- let he = hc._1
1276- let hf = hc._2
1277- if ((hf == 0))
1278- then $Tuple2(makeString(ha, "_"), makeString(hb, "_"))
1279- else if ((hd >= hf))
1268+ fc(eZ(eZ(eZ(eZ(eZ(eZ(eY, 0), 1), 2), 3), 4), 5), 6)
1269+ }
1270+
1271+
1272+func gY (gZ,ha,hb,hc) = {
1273+ let hd = hb._1
1274+ let he = hb._2
1275+ if ((he == 0))
1276+ then $Tuple2(makeString(gZ, "_"), makeString(ha, "_"))
1277+ else if ((hc >= he))
12801278 then {
1281- func hg (eV,gO) = (eV :+ toString((parseIntValue(ha[gO]) + he[gO])))
1282-
1283- let fg = {
1284- let eX = cR
1285- let eY = size(eX)
1286- let eZ = nil
1287- func fa (fb,fc) = if ((fc >= eY))
1288- then fb
1289- else hg(fb, eX[fc])
1290-
1291- func fd (fb,fc) = if ((fc >= eY))
1292- then fb
1279+ func hf (eU,gN) = (eU :+ toString((parseIntValue(gZ[gN]) + hd[gN])))
1280+
1281+ let ff = {
1282+ let eW = cQ
1283+ let eX = size(eW)
1284+ let eY = nil
1285+ func eZ (fa,fb) = if ((fb >= eX))
1286+ then fa
1287+ else hf(fa, eW[fb])
1288+
1289+ func fc (fa,fb) = if ((fb >= eX))
1290+ then fa
12931291 else throw("List size exceeds 6")
12941292
1295- fd(fa(fa(fa(fa(fa(fa(eZ, 0), 1), 2), 3), 4), 5), 6)
1293+ fc(eZ(eZ(eZ(eZ(eZ(eZ(eY, 0), 1), 2), 3), 4), 5), 6)
12961294 }
1297- $Tuple2(makeString(fg, "_"), makeString(hb, "_"))
1295+ $Tuple2(makeString(ff, "_"), makeString(ha, "_"))
12981296 }
12991297 else {
1300- func hh (eV,gO) = {
1301- let hi = fraction(he[gO], hd, hf)
1302- $Tuple2((eV._1 :+ toString((parseIntValue(ha[gO]) + hi))), (eV._2 :+ toString(((parseIntValue(hb[gO]) + he[gO]) - hi))))
1298+ func hg (eU,gN) = {
1299+ let hh = fraction(hd[gN], hc, he)
1300+ $Tuple2((eU._1 :+ toString((parseIntValue(gZ[gN]) + hh))), (eU._2 :+ toString(((parseIntValue(ha[gN]) + hd[gN]) - hh))))
13031301 }
13041302
1305- let fg = {
1306- let eX = cR
1307- let eY = size(eX)
1308- let eZ = $Tuple2(nil, nil)
1309- func fa (fb,fc) = if ((fc >= eY))
1310- then fb
1311- else hh(fb, eX[fc])
1312-
1313- func fd (fb,fc) = if ((fc >= eY))
1314- then fb
1303+ let ff = {
1304+ let eW = cQ
1305+ let eX = size(eW)
1306+ let eY = $Tuple2(nil, nil)
1307+ func eZ (fa,fb) = if ((fb >= eX))
1308+ then fa
1309+ else hg(fa, eW[fb])
1310+
1311+ func fc (fa,fb) = if ((fb >= eX))
1312+ then fa
13151313 else throw("List size exceeds 6")
13161314
1317- fd(fa(fa(fa(fa(fa(fa(eZ, 0), 1), 2), 3), 4), 5), 6)
1315+ fc(eZ(eZ(eZ(eZ(eZ(eZ(eY, 0), 1), 2), 3), 4), 5), 6)
13181316 }
1319- $Tuple2(makeString(fg._1, "_"), makeString(fg._2, "_"))
1317+ $Tuple2(makeString(ff._1, "_"), makeString(ff._2, "_"))
13201318 }
13211319 }
13221320
13231321
1324-func hj (hk) = if ((hk >= toBigInt(0)))
1325- then hk
1326- else -(hk)
1327-
1328-
1329-let hl = [[35, 18, 30, 7, 6, 24], [29, 18, 29, 7, 8, 29], [6, 18, 29, 8, 30, 29], [6, 28, 6, 48, 26, 6], [24, 18, 6, 30, 30, 12]]
1330-
1331-let hm = [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]
1332-
1333-let hn = ["A", "B", "C", "D", "E", "F"]
1334-
1335-let ho = 10
1336-
1337-func hp (eV,hq) = (eV + parseIntValue(hq))
1338-
1339-
1340-func hr (hs,ht) = if ((hs == 0))
1341- then throw("maxRand should be non-zero")
1342- else {
1343- let hu = toBigInt(hs)
1344- $Tuple2(toInt((ht % hu)), (ht / hu))
1345- }
1346-
1347-
1348-func hv (hw,hx,hy) = {
1349- func hz (eV,hq) = if (eV._1)
1350- then eV
1351- else {
1352- let hA = ((eV._3 - hq) - hy)
1353- if ((0 > hA))
1354- then $Tuple3(true, eV._2, 0)
1355- else $Tuple3(false, (eV._2 + 1), hA)
1356- }
1357-
1358- let fg = {
1359- let eX = hw
1360- let eY = size(eX)
1361- let eZ = $Tuple3(false, 0, hx)
1362- func fa (fb,fc) = if ((fc >= eY))
1363- then fb
1364- else hz(fb, eX[fc])
1365-
1366- func fd (fb,fc) = if ((fc >= eY))
1367- then fb
1368- else throw("List size exceeds 6")
1369-
1370- fd(fa(fa(fa(fa(fa(fa(eZ, 0), 1), 2), 3), 4), 5), 6)
1371- }
1372- fg._2
1373- }
1374-
1375-
1376-func hB (hC,gL,hD) = {
1377- func hE (hF,hG) = {
1378- let fy = split(valueOrElse(getString(dz(hG)), "0_0_0_0_0_0"), "_")
1379- let hH = {
1380- let eX = fy
1381- let eY = size(eX)
1382- let eZ = 0
1383- func fa (fb,fc) = if ((fc >= eY))
1384- then fb
1385- else hp(fb, eX[fc])
1386-
1387- func fd (fb,fc) = if ((fc >= eY))
1388- then fb
1389- else throw("List size exceeds 6")
1390-
1391- fd(fa(fa(fa(fa(fa(fa(eZ, 0), 1), 2), 3), 4), 5), 6)
1392- }
1393- $Tuple2((hF._1 :+ hH), (hF._2 + hH))
1394- }
1395-
1396- let hI = {
1397- let eX = aV
1398- let eY = size(eX)
1399- let eZ = $Tuple2(nil, 0)
1400- func fa (fb,fc) = if ((fc >= eY))
1401- then fb
1402- else hE(fb, eX[fc])
1403-
1404- func fd (fb,fc) = if ((fc >= eY))
1405- then fb
1406- else throw("List size exceeds 5")
1407-
1408- fd(fa(fa(fa(fa(fa(eZ, 0), 1), 2), 3), 4), 5)
1409- }
1410- let hJ = hI._1
1411- let eQ = hI._2
1412- let hK = max(hJ)
1413- let hL = ((hK * aJ) - eQ)
1414- let hM = (hL / (ho * aJ))
1415- let hN = if (if ((hD >= 0))
1416- then (aJ > hD)
1417- else false)
1418- then $Tuple2(hD, hC)
1419- else if ((hL == 0))
1420- then hr(aJ, hC)
1421- else {
1422- let hO = hr((hL + (hM * aJ)), hC)
1423- let fg = hO._1
1424- let hP = hO._2
1425- func hQ (eV,hq) = (eV :+ (hK - hq))
1426-
1427- let hR = {
1428- let eX = hJ
1429- let eY = size(eX)
1430- let eZ = nil
1431- func hS (fb,fc) = if ((fc >= eY))
1432- then fb
1433- else hQ(fb, eX[fc])
1434-
1435- func hT (fb,fc) = if ((fc >= eY))
1436- then fb
1437- else throw("List size exceeds 6")
1438-
1439- hT(hS(hS(hS(hS(hS(hS(eZ, 0), 1), 2), 3), 4), 5), 6)
1440- }
1441- $Tuple2(hv(hR, fg, hM), hP)
1442- }
1443- let hU = hN._1
1444- let hV = hN._2
1445- let hW = hl[hU]
1446- let hX = split(valueOrElse(getString(dz(aV[hU])), "0_0_0_0_0_0"), "_")
1447- func hY (eV,hq) = (eV :+ parseIntValue(hq))
1448-
1449- let hZ = {
1450- let eX = hX
1451- let eY = size(eX)
1452- let eZ = nil
1453- func hS (fb,fc) = if ((fc >= eY))
1454- then fb
1455- else hY(fb, eX[fc])
1456-
1457- func hT (fb,fc) = if ((fc >= eY))
1458- then fb
1459- else throw("List size exceeds 6")
1460-
1461- hT(hS(hS(hS(hS(hS(hS(eZ, 0), 1), 2), 3), 4), 5), 6)
1462- }
1463- let ia = hJ[hU]
1464- func ib (hF,ic) = {
1465- func id (eV,fF) = (eV :+ ((hF._2[fF] * 120) - (hW[fF] * hF._3)))
1466-
1467- let ie = {
1468- let eX = cR
1469- let eY = size(eX)
1470- let eZ = nil
1471- func if (fb,fc) = if ((fc >= eY))
1472- then fb
1473- else id(fb, eX[fc])
1474-
1475- func ig (fb,fc) = if ((fc >= eY))
1476- then fb
1477- else throw("List size exceeds 6")
1478-
1479- ig(if(if(if(if(if(if(eZ, 0), 1), 2), 3), 4), 5), 6)
1480- }
1481- let ih = max(ie)
1482- func ii (eV,hq) = {
1483- let dF = (ih - hq)
1484- $Tuple2((eV._1 :+ dF), (eV._2 + dF))
1485- }
1486-
1487- let ij = {
1488- let eX = ie
1489- let eY = size(eX)
1490- let eZ = $Tuple2(nil, 0)
1491- func ik (fb,fc) = if ((fc >= eY))
1492- then fb
1493- else ii(fb, eX[fc])
1494-
1495- func il (fb,fc) = if ((fc >= eY))
1496- then fb
1497- else throw("List size exceeds 6")
1498-
1499- il(ik(ik(ik(ik(ik(ik(eZ, 0), 1), 2), 3), 4), 5), 6)
1500- }
1501- let im = ij._1
1502- let in = ij._2
1503- let io = (in / (ho * aI))
1504- let ip = if ((in == 0))
1505- then hr(aI, hF._4)
1506- else {
1507- let iq = hr((in + (io * aI)), hF._4)
1508- let fg = iq._1
1509- let hP = iq._2
1510- $Tuple2(hv(im, fg, io), hP)
1511- }
1512- let dh = ip._1
1513- let ir = ip._2
1514- func is (eV,fF) = (eV :+ (hF._2[fF] + (if ((fF == dh))
1515- then gL
1516- else 0)))
1517-
1518- let it = {
1519- let eX = cR
1520- let eY = size(eX)
1521- let eZ = nil
1522- func iu (fb,fc) = if ((fc >= eY))
1523- then fb
1524- else is(fb, eX[fc])
1525-
1526- func iv (fb,fc) = if ((fc >= eY))
1527- then fb
1528- else throw("List size exceeds 6")
1529-
1530- iv(iu(iu(iu(iu(iu(iu(eZ, 0), 1), 2), 3), 4), 5), 6)
1531- }
1532- $Tuple4((hF._1 + hn[dh]), it, (hF._3 + gL), ir)
1533- }
1534-
1535- let fn = {
1536- let eX = hm
1537- let eY = size(eX)
1538- let eZ = $Tuple4("", hZ, ia, hV)
1539- func if (fb,fc) = if ((fc >= eY))
1540- then fb
1541- else ib(fb, eX[fc])
1542-
1543- func ig (fb,fc) = if ((fc >= eY))
1544- then fb
1545- else throw("List size exceeds 25")
1546-
1547- ig(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(eZ, 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)
1548- }
1549- $Tuple2(hU, fn._1)
1550- }
1551-
1552-
1553-let iw = [[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]]
1554-
1555-func ix (dH,iy) = {
1556- let hA = toInt((dH % en))
1557- let iz = if ((iy[0] > hA))
1322+func hi (hj) = if ((hj >= toBigInt(0)))
1323+ then hj
1324+ else -(hj)
1325+
1326+
1327+let hk = [[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]]
1328+
1329+func hl (dG,hm) = {
1330+ let hn = toInt((dG % em))
1331+ let ho = if ((hm[0] > hn))
15581332 then "A"
1559- else if ((iy[1] > hA))
1333+ else if ((hm[1] > hn))
15601334 then "B"
1561- else if ((iy[2] > hA))
1335+ else if ((hm[2] > hn))
15621336 then "C"
1563- else if ((iy[3] > hA))
1337+ else if ((hm[3] > hn))
15641338 then "D"
1565- else if ((iy[4] > hA))
1339+ else if ((hm[4] > hn))
15661340 then "E"
15671341 else "F"
1568- iz
1569- }
1570-
1571-
1572-func iA (iB,iC) = {
1573- let iD = iw[iC]
1574- func iE (eV,eW) = $Tuple2((((((eV._1 + ix(eV._2, iD)) + ix((eV._2 / en), iD)) + ix((eV._2 / eo), iD)) + ix((eV._2 / ep), iD)) + ix((eV._2 / eq), iD)), (eV._2 / er))
1575-
1576- let gz = {
1577- let eX = [1, 2, 3, 4, 5]
1578- let eY = size(eX)
1579- let eZ = $Tuple2("", (iB / em))
1580- func fa (fb,fc) = if ((fc >= eY))
1581- then fb
1582- else iE(fb, eX[fc])
1583-
1584- func fd (fb,fc) = if ((fc >= eY))
1585- then fb
1342+ ho
1343+ }
1344+
1345+
1346+func hp (hq,hr) = {
1347+ let hs = hk[hr]
1348+ func ht (eU,eV) = $Tuple2((((((eU._1 + hl(eU._2, hs)) + hl((eU._2 / em), hs)) + hl((eU._2 / en), hs)) + hl((eU._2 / eo), hs)) + hl((eU._2 / ep), hs)), (eU._2 / eq))
1349+
1350+ let gy = {
1351+ let eW = [1, 2, 3, 4, 5]
1352+ let eX = size(eW)
1353+ let eY = $Tuple2("", (hq / el))
1354+ func eZ (fa,fb) = if ((fb >= eX))
1355+ then fa
1356+ else ht(fa, eW[fb])
1357+
1358+ func fc (fa,fb) = if ((fb >= eX))
1359+ then fa
15861360 else throw("List size exceeds 5")
15871361
1588- fd(fa(fa(fa(fa(fa(eZ, 0), 1), 2), 3), 4), 5)
1362+ fc(eZ(eZ(eZ(eZ(eZ(eY, 0), 1), 2), 3), 4), 5)
15891363 }
1590- gz._1
1591- }
1592-
1593-
1594-func iF (iG,gL) = {
1595- func iH (eV,dF) = {
1596- let fF = eV._2
1597- let hq = parseIntValue(dF)
1598- let hk = if ((hq == 0))
1364+ gy._1
1365+ }
1366+
1367+
1368+let hu = [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]
1369+
1370+let hv = ["A", "B", "C", "D", "E", "F"]
1371+
1372+func hw (hx,gK) = {
1373+ func hy (eU,dE) = {
1374+ let fE = eU._2
1375+ let hz = parseIntValue(dE)
1376+ let hj = if ((hz == 0))
15991377 then 0
1600- else if ((hq >= (4 * gL)))
1601- then (hq / gL)
1602- else if ((hq > (3 * gL)))
1378+ else if ((hz >= (4 * gK)))
1379+ then (hz / gK)
1380+ else if ((hz > (3 * gK)))
16031381 then 3
1604- else (((hq - 1) / gL) + 1)
1605- $Tuple3((eV._1 :+ hk), (eV._2 + 1), (eV._3 + hk))
1382+ else (((hz - 1) / gK) + 1)
1383+ $Tuple3((eU._1 :+ hj), (eU._2 + 1), (eU._3 + hj))
16061384 }
16071385
1608- let gz = {
1609- let eX = iG
1610- let eY = size(eX)
1611- let eZ = $Tuple3(nil, 0, 0)
1612- func fa (fb,fc) = if ((fc >= eY))
1613- then fb
1614- else iH(fb, eX[fc])
1615-
1616- func fd (fb,fc) = if ((fc >= eY))
1617- then fb
1386+ let gy = {
1387+ let eW = hx
1388+ let eX = size(eW)
1389+ let eY = $Tuple3(nil, 0, 0)
1390+ func eZ (fa,fb) = if ((fb >= eX))
1391+ then fa
1392+ else hy(fa, eW[fb])
1393+
1394+ func fc (fa,fb) = if ((fb >= eX))
1395+ then fa
16181396 else throw("List size exceeds 6")
16191397
1620- fd(fa(fa(fa(fa(fa(fa(eZ, 0), 1), 2), 3), 4), 5), 6)
1398+ fc(eZ(eZ(eZ(eZ(eZ(eZ(eY, 0), 1), 2), 3), 4), 5), 6)
16211399 }
1622- let hw = gz._1
1623- let iI = value(indexOf(hw, max(hw)))
1624- let hy = (gz._3 - 25)
1625- func iJ (eV,dh) = {
1626- let dR = (hw[dh] - (if ((dh == iI))
1627- then hy
1628- else 0))
1629- let dV = if ((dR == 0))
1400+ let hA = gy._1
1401+ let hB = value(indexOf(hA, max(hA)))
1402+ let hC = (gy._3 - 25)
1403+ func hD (eU,dg) = {
1404+ let dQ = if ((dg == hB))
1405+ then (hA[dg] - hC)
1406+ else hA[dg]
1407+ let dU = if ((dQ == 0))
16301408 then nil
1631- else split(drop(toString(pow(10, 0, dR, 0, 0, DOWN)), 1), "")
1632- let ge = hn[dh]
1633- func iK (hF,ic) = (hF :+ ge)
1634-
1635- let iL = {
1636- let eX = dV
1637- let eY = size(eX)
1638- let eZ = nil
1639- func hS (fb,fc) = if ((fc >= eY))
1640- then fb
1641- else iK(fb, eX[fc])
1642-
1643- func hT (fb,fc) = if ((fc >= eY))
1644- then fb
1409+ else split(drop(toString(pow(10, 0, dQ, 0, 0, DOWN)), 1), "")
1410+ let gd = hv[dg]
1411+ func hE (hF,hG) = (hF :+ gd)
1412+
1413+ let hH = {
1414+ let eW = dU
1415+ let eX = size(eW)
1416+ let eY = nil
1417+ func hI (fa,fb) = if ((fb >= eX))
1418+ then fa
1419+ else hE(fa, eW[fb])
1420+
1421+ func hJ (fa,fb) = if ((fb >= eX))
1422+ then fa
16451423 else throw("List size exceeds 25")
16461424
1647- hT(hS(hS(hS(hS(hS(hS(hS(hS(hS(hS(hS(hS(hS(hS(hS(hS(hS(hS(hS(hS(hS(hS(hS(hS(hS(eZ, 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)
1648- }
1649- (eV ++ iL)
1425+ hJ(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(eY, 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)
1426+ }
1427+ (eU ++ hH)
16501428 }
16511429
1652- let fg = {
1653- let eX = cR
1654- let eY = size(eX)
1655- let eZ = nil
1656- func hS (fb,fc) = if ((fc >= eY))
1657- then fb
1658- else iJ(fb, eX[fc])
1659-
1660- func hT (fb,fc) = if ((fc >= eY))
1661- then fb
1430+ let ff = {
1431+ let eW = cQ
1432+ let eX = size(eW)
1433+ let eY = nil
1434+ func hI (fa,fb) = if ((fb >= eX))
1435+ then fa
1436+ else hD(fa, eW[fb])
1437+
1438+ func hJ (fa,fb) = if ((fb >= eX))
1439+ then fa
16621440 else throw("List size exceeds 6")
16631441
1664- hT(hS(hS(hS(hS(hS(hS(eZ, 0), 1), 2), 3), 4), 5), 6)
1442+ hJ(hI(hI(hI(hI(hI(hI(eY, 0), 1), 2), 3), 4), 5), 6)
16651443 }
1666- func iM (eV,fF) = (eV + fg[fF])
1667-
1668- let eX = hm
1669- let eY = size(eX)
1670- let eZ = ""
1671- func if (fb,fc) = if ((fc >= eY))
1672- then fb
1673- else iM(fb, eX[fc])
1674-
1675- func ig (fb,fc) = if ((fc >= eY))
1676- then fb
1444+ func hK (eU,fE) = (eU + ff[fE])
1445+
1446+ let eW = hu
1447+ let eX = size(eW)
1448+ let eY = ""
1449+ func hL (fa,fb) = if ((fb >= eX))
1450+ then fa
1451+ else hK(fa, eW[fb])
1452+
1453+ func hM (fa,fb) = if ((fb >= eX))
1454+ then fa
16771455 else throw("List size exceeds 25")
16781456
1679- ig(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(eZ, 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)
1680- }
1681-
1682-
1683-func iN (iO) = {
1684- let gy = split(valueOrElse(getString(iO), "0:0_0_0_0_0_0:0_0_0_0_0_0:"), ":")
1685-[toString(valueOrElse(parseInt(gy[bn]), 0)), if ((size(split(gy[bo], "_")) == aI))
1686- then gy[bo]
1687- else "0_0_0_0_0_0", if ((size(split(gy[bp], "_")) == aI))
1688- then gy[bp]
1689- else "0_0_0_0_0_0", gy[bq]]
1690- }
1691-
1692-
1693-func iP (iQ) = {
1694- let ft = split(iQ, "_")
1695- ((aM * (parseIntValue(ft[1]) + 1)) * parseIntValue(ft[0]))
1696- }
1697-
1698-
1699-func iR (iS) = {
1700- let iT = iS[bh]
1701- func iU (eV,iV) = (eV + parseIntValue(iV))
1702-
1703- func iW (eV,iV) = {
1704- let dh = eV._1
1705- let eO = (((parseIntValue(iV) + bd) - 1) / bd)
1706- $Tuple2((dh + 1), (eV._2 + (eO * cL)))
1457+ hM(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(eY, 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)
1458+ }
1459+
1460+
1461+func hN (hO) = {
1462+ let gx = split(valueOrElse(getString(hO), "0:0_0_0_0_0_0:0_0_0_0_0_0:"), ":")
1463+[toString(valueOrElse(parseInt(gx[bm]), 0)), if ((size(split(gx[bn], "_")) == aI))
1464+ then gx[bn]
1465+ else "0_0_0_0_0_0", if ((size(split(gx[bo], "_")) == aI))
1466+ then gx[bo]
1467+ else "0_0_0_0_0_0", gx[bp]]
1468+ }
1469+
1470+
1471+func hP (hQ) = {
1472+ let fs = split(hQ, "_")
1473+ ((aL * (parseIntValue(fs[1]) + 1)) * parseIntValue(fs[0]))
1474+ }
1475+
1476+
1477+func hR (hS) = {
1478+ let hT = hS[bg]
1479+ func hU (eU,hV) = (eU + parseIntValue(hV))
1480+
1481+ func hW (eU,hV) = {
1482+ let dg = eU._1
1483+ let eN = (((parseIntValue(hV) + bc) - 1) / bc)
1484+ $Tuple2((dg + 1), (eU._2 + (eN * cK)))
17071485 }
17081486
1709- let iX = {
1710- let eX = split(iS[bf], "_")
1711- let eY = size(eX)
1712- let eZ = 0
1713- func fa (fb,fc) = if ((fc >= eY))
1714- then fb
1715- else iU(fb, eX[fc])
1716-
1717- func fd (fb,fc) = if ((fc >= eY))
1718- then fb
1487+ let hX = {
1488+ let eW = split(hS[be], "_")
1489+ let eX = size(eW)
1490+ let eY = 0
1491+ func eZ (fa,fb) = if ((fb >= eX))
1492+ then fa
1493+ else hU(fa, eW[fb])
1494+
1495+ func fc (fa,fb) = if ((fb >= eX))
1496+ then fa
17191497 else throw("List size exceeds 6")
17201498
1721- fd(fa(fa(fa(fa(fa(fa(eZ, 0), 1), 2), 3), 4), 5), 6)
1499+ fc(eZ(eZ(eZ(eZ(eZ(eZ(eY, 0), 1), 2), 3), 4), 5), 6)
17221500 }
1723- let iY = {
1724- let eX = split(iS[bg], "_")
1725- let eY = size(eX)
1726- let eZ = 0
1727- func hS (fb,fc) = if ((fc >= eY))
1728- then fb
1729- else iU(fb, eX[fc])
1730-
1731- func hT (fb,fc) = if ((fc >= eY))
1732- then fb
1501+ let hY = {
1502+ let eW = split(hS[bf], "_")
1503+ let eX = size(eW)
1504+ let eY = 0
1505+ func hI (fa,fb) = if ((fb >= eX))
1506+ then fa
1507+ else hU(fa, eW[fb])
1508+
1509+ func hJ (fa,fb) = if ((fb >= eX))
1510+ then fa
17331511 else throw("List size exceeds 6")
17341512
1735- hT(hS(hS(hS(hS(hS(hS(eZ, 0), 1), 2), 3), 4), 5), 6)
1513+ hJ(hI(hI(hI(hI(hI(hI(eY, 0), 1), 2), 3), 4), 5), 6)
17361514 }
1737- let iZ = if ((iT == ""))
1515+ let hZ = if ((hT == ""))
17381516 then 0
1739- else ( let eX = split_4C(iT, "_")
1740- let eY = size(eX)
1741- let eZ = $Tuple2(0, 0)
1742- func if (fb,fc) = if ((fc >= eY))
1743- then fb
1744- else iW(fb, eX[fc])
1745-
1746- func ig (fb,fc) = if ((fc >= eY))
1747- then fb
1517+ else ( let eW = split_4C(hT, "_")
1518+ let eX = size(eW)
1519+ let eY = $Tuple2(0, 0)
1520+ func hL (fa,fb) = if ((fb >= eX))
1521+ then fa
1522+ else hW(fa, eW[fb])
1523+
1524+ func hM (fa,fb) = if ((fb >= eX))
1525+ then fa
17481526 else throw("List size exceeds 50")
17491527
1750- ig(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(eZ, 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
1751- ((iX + iY) + iZ)
1752- }
1753-
1754-
1755-func ja (jb,jc,jd) = {
1756- let iQ = ((toString(jc) + "_") + toString(jd))
1757- let je = iP(iQ)
1758- let jf = valueOrElse(getString(jb), (iQ + ":0_0_0_0_0_0:0_0_0_0_0_0::0"))
1759- let jg = split_4C(jf, ":")
1760- let jh = iR(jg)
1761- let ji = if ((5 > size(jg)))
1762- then makeString(["0", toString(jh), toString((je - jh)), toString(je)], "_")
1528+ hM(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(eY, 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
1529+ ((hX + hY) + hZ)
1530+ }
1531+
1532+
1533+func ia (ib,ic,id) = {
1534+ let hQ = ((toString(ic) + "_") + toString(id))
1535+ let ie = hP(hQ)
1536+ let if = valueOrElse(getString(ib), (hQ + ":0_0_0_0_0_0:0_0_0_0_0_0::0"))
1537+ let ig = split_4C(if, ":")
1538+ let ih = hR(ig)
1539+ let ii = if ((5 > size(ig)))
1540+ then makeString(["0", toString(ih), toString((ie - ih)), toString(ie)], "_")
17631541 else {
1764- let jj = split(jg[bi], "_")
1765- let jk = parseIntValue(jj[bj])
1766- let jl = if ((size(jj) > 1))
1767- then parseIntValue(jj[bk])
1768- else jh
1769- makeString([toString(jk), toString(jl), toString(((je - jk) - jl)), toString(je)], "_")
1770- }
1771-[jg[be], if ((size(split(jg[bf], "_")) == aI))
1772- then jg[bf]
1773- else "0_0_0_0_0_0", if ((size(split(jg[bg], "_")) == aI))
1774- then jg[bg]
1775- else "0_0_0_0_0_0", jg[bh], ji]
1776- }
1777-
1778-
1779-func jm (iS) = {
1780- let jn = iR(iS)
1781- let jo = parseIntValue(split(iS[bi], "_")[bj])
1782- ((iP(iS[be]) - jn) - jo)
1783- }
1784-
1785-
1786-func jp (jq,iS,jr) = if ((size(jq) != 3))
1542+ let ij = split(ig[bh], "_")
1543+ let ik = parseIntValue(ij[bi])
1544+ let il = if ((size(ij) > 1))
1545+ then parseIntValue(ij[bj])
1546+ else ih
1547+ makeString([toString(ik), toString(il), toString(((ie - ik) - il)), toString(ie)], "_")
1548+ }
1549+[ig[bd], if ((size(split(ig[be], "_")) == aI))
1550+ then ig[be]
1551+ else "0_0_0_0_0_0", if ((size(split(ig[bf], "_")) == aI))
1552+ then ig[bf]
1553+ else "0_0_0_0_0_0", ig[bg], ii]
1554+ }
1555+
1556+
1557+func im (hS) = {
1558+ let in = hR(hS)
1559+ let io = parseIntValue(split(hS[bh], "_")[bi])
1560+ ((hP(hS[bd]) - in) - io)
1561+ }
1562+
1563+
1564+func ip (iq,hS,ir) = if ((size(iq) != 3))
17871565 then throw("cargoListStr should contain exactly 2 ':' separators")
17881566 else {
1789- let js = split(jq[0], "_")
1790- let jt = split(jq[1], "_")
1791- let ju = if ((jq[2] == ""))
1567+ let is = split(iq[0], "_")
1568+ let it = split(iq[1], "_")
1569+ let iu = if ((iq[2] == ""))
17921570 then nil
1793- else split_4C(jq[2], "_")
1794- if ((size(js) != aI))
1571+ else split_4C(iq[2], "_")
1572+ if ((size(is) != aI))
17951573 then throw("All 6 resources should be passed")
1796- else if ((size(jt) != aI))
1574+ else if ((size(it) != aI))
17971575 then throw("All 6 materials should be passed")
17981576 else {
1799- let hd = jm(iS)
1800- let jv = split(iS[bf], "_")
1801- let jw = split(iS[bg], "_")
1802- let jx = if ((iS[bh] == ""))
1577+ let hc = im(hS)
1578+ let iv = split(hS[be], "_")
1579+ let iw = split(hS[bf], "_")
1580+ let ix = if ((hS[bg] == ""))
18031581 then nil
1804- else split_4C(iS[bh], "_")
1805- let hb = split(jr[bo], "_")
1806- let jy = split(jr[bp], "_")
1807- let jz = if ((jr[bq] == ""))
1582+ else split_4C(hS[bg], "_")
1583+ let ha = split(ir[bn], "_")
1584+ let iy = split(ir[bo], "_")
1585+ let iz = if ((ir[bp] == ""))
18081586 then nil
1809- else split_4C(jr[bq], "_")
1810- func jA (eV,iV) = {
1811- let gO = eV._1
1812- let jB = parseIntValue(iV)
1813- let jC = parseIntValue(jv[gO])
1814- let jD = parseIntValue(hb[gO])
1815- if ((jB == 0))
1816- then $Tuple4((gO + 1), (eV._2 :+ jv[gO]), (eV._3 :+ hb[gO]), eV._4)
1817- else if ((jB > 0))
1818- then if ((jB > jD))
1819- then throw((((("Attempt to take " + iV) + " from backpack, but only ") + toString(jD)) + " available"))
1820- else $Tuple4((gO + 1), (eV._2 :+ toString((jC + jB))), (eV._3 :+ toString((jD - jB))), (eV._4 + jB))
1821- else if ((-(jB) > jC))
1822- then throw((((("Attempt to take " + toString(-(jB))) + " from warehouse, but only ") + toString(jC)) + " available"))
1823- else $Tuple4((gO + 1), (eV._2 :+ toString((jC + jB))), (eV._3 :+ toString((jD - jB))), (eV._4 + jB))
1587+ else split_4C(ir[bp], "_")
1588+ func iA (eU,hV) = {
1589+ let gN = eU._1
1590+ let iB = parseIntValue(hV)
1591+ let iC = parseIntValue(iv[gN])
1592+ let iD = parseIntValue(ha[gN])
1593+ if ((iB == 0))
1594+ then $Tuple4((gN + 1), (eU._2 :+ iv[gN]), (eU._3 :+ ha[gN]), eU._4)
1595+ else if ((iB > 0))
1596+ then if ((iB > iD))
1597+ then throw((((("Attempt to take " + hV) + " from backpack, but only ") + toString(iD)) + " available"))
1598+ else $Tuple4((gN + 1), (eU._2 :+ toString((iC + iB))), (eU._3 :+ toString((iD - iB))), (eU._4 + iB))
1599+ else if ((-(iB) > iC))
1600+ then throw((((("Attempt to take " + toString(-(iB))) + " from warehouse, but only ") + toString(iC)) + " available"))
1601+ else $Tuple4((gN + 1), (eU._2 :+ toString((iC + iB))), (eU._3 :+ toString((iD - iB))), (eU._4 + iB))
18241602 }
18251603
1826- let fg = {
1827- let eX = js
1828- let eY = size(eX)
1829- let eZ = $Tuple4(0, nil, nil, 0)
1830- func fa (fb,fc) = if ((fc >= eY))
1831- then fb
1832- else jA(fb, eX[fc])
1833-
1834- func fd (fb,fc) = if ((fc >= eY))
1835- then fb
1604+ let ff = {
1605+ let eW = is
1606+ let eX = size(eW)
1607+ let eY = $Tuple4(0, nil, nil, 0)
1608+ func eZ (fa,fb) = if ((fb >= eX))
1609+ then fa
1610+ else iA(fa, eW[fb])
1611+
1612+ func fc (fa,fb) = if ((fb >= eX))
1613+ then fa
18361614 else throw("List size exceeds 6")
18371615
1838- fd(fa(fa(fa(fa(fa(fa(eZ, 0), 1), 2), 3), 4), 5), 6)
1616+ fc(eZ(eZ(eZ(eZ(eZ(eZ(eY, 0), 1), 2), 3), 4), 5), 6)
18391617 }
1840- func jE (eV,iV) = {
1841- let gO = eV._1
1842- let jB = parseIntValue(iV)
1843- let jF = parseIntValue(jw[gO])
1844- let jG = parseIntValue(jy[gO])
1845- if ((jB == 0))
1846- then $Tuple4((gO + 1), (eV._2 :+ jw[gO]), (eV._3 :+ jy[gO]), eV._4)
1847- else if ((jB > 0))
1848- then if ((jB > jG))
1849- then throw((((("Attempt to take " + iV) + " from backpack, but only ") + toString(jG)) + " available"))
1850- else $Tuple4((gO + 1), (eV._2 :+ toString((jF + jB))), (eV._3 :+ toString((jG - jB))), (eV._4 + jB))
1851- else if ((-(jB) > jF))
1852- then throw((((("Attempt to take " + toString(-(jB))) + " from warehouse, but only ") + toString(jF)) + " available"))
1853- else $Tuple4((gO + 1), (eV._2 :+ toString((jF + jB))), (eV._3 :+ toString((jG - jB))), (eV._4 + jB))
1618+ func iE (eU,hV) = {
1619+ let gN = eU._1
1620+ let iB = parseIntValue(hV)
1621+ let iF = parseIntValue(iw[gN])
1622+ let iG = parseIntValue(iy[gN])
1623+ if ((iB == 0))
1624+ then $Tuple4((gN + 1), (eU._2 :+ iw[gN]), (eU._3 :+ iy[gN]), eU._4)
1625+ else if ((iB > 0))
1626+ then if ((iB > iG))
1627+ then throw((((("Attempt to take " + hV) + " from backpack, but only ") + toString(iG)) + " available"))
1628+ else $Tuple4((gN + 1), (eU._2 :+ toString((iF + iB))), (eU._3 :+ toString((iG - iB))), (eU._4 + iB))
1629+ else if ((-(iB) > iF))
1630+ then throw((((("Attempt to take " + toString(-(iB))) + " from warehouse, but only ") + toString(iF)) + " available"))
1631+ else $Tuple4((gN + 1), (eU._2 :+ toString((iF + iB))), (eU._3 :+ toString((iG - iB))), (eU._4 + iB))
18541632 }
18551633
1856- let gu = {
1857- let eX = jt
1858- let eY = size(eX)
1859- let eZ = $Tuple4(0, nil, nil, fg._4)
1860- func hS (fb,fc) = if ((fc >= eY))
1861- then fb
1862- else jE(fb, eX[fc])
1863-
1864- func hT (fb,fc) = if ((fc >= eY))
1865- then fb
1634+ let gt = {
1635+ let eW = it
1636+ let eX = size(eW)
1637+ let eY = $Tuple4(0, nil, nil, ff._4)
1638+ func hI (fa,fb) = if ((fb >= eX))
1639+ then fa
1640+ else iE(fa, eW[fb])
1641+
1642+ func hJ (fa,fb) = if ((fb >= eX))
1643+ then fa
18661644 else throw("List size exceeds 6")
18671645
1868- hT(hS(hS(hS(hS(hS(hS(eZ, 0), 1), 2), 3), 4), 5), 6)
1646+ hJ(hI(hI(hI(hI(hI(hI(eY, 0), 1), 2), 3), 4), 5), 6)
18691647 }
1870- func jH (eV,iV) = {
1871- let gO = eV._1
1872- let jB = parseIntValue(iV)
1873- let jI = if ((size(jx) > gO))
1874- then parseIntValue(jx[gO])
1648+ func iH (eU,hV) = {
1649+ let gN = eU._1
1650+ let iB = parseIntValue(hV)
1651+ let iI = if ((size(ix) > gN))
1652+ then parseIntValue(ix[gN])
18751653 else 0
1876- let jJ = if ((size(jz) > gO))
1877- then parseIntValue(jz[gO])
1654+ let iJ = if ((size(iz) > gN))
1655+ then parseIntValue(iz[gN])
18781656 else 0
1879- if ((jB == 0))
1880- then $Tuple4((gO + 1), (eV._2 :+ toString(jI)), (eV._3 :+ toString(jJ)), eV._4)
1881- else if ((jB > 0))
1882- then if ((jB > jJ))
1883- then throw((((("Attempt to take " + iV) + " from backpack, but only ") + toString(jJ)) + " available"))
1657+ if ((iB == 0))
1658+ then $Tuple4((gN + 1), (eU._2 :+ toString(iI)), (eU._3 :+ toString(iJ)), eU._4)
1659+ else if ((iB > 0))
1660+ then if ((iB > iJ))
1661+ then throw((((("Attempt to take " + hV) + " from backpack, but only ") + toString(iJ)) + " available"))
18841662 else {
1885- let fX = (eL((jI + jB), bd) - eL(jI, bd))
1886- $Tuple4((gO + 1), (eV._2 :+ toString((jI + jB))), (eV._3 :+ toString((jJ - jB))), (eV._4 + fX))
1663+ let fW = (eK((iI + iB), bc) - eK(iI, bc))
1664+ $Tuple4((gN + 1), (eU._2 :+ toString((iI + iB))), (eU._3 :+ toString((iJ - iB))), (eU._4 + fW))
18871665 }
1888- else if ((-(jB) > jI))
1889- then throw((((("Attempt to take " + toString(-(jB))) + " from warehouse, but only ") + toString(jI)) + " available"))
1666+ else if ((-(iB) > iI))
1667+ then throw((((("Attempt to take " + toString(-(iB))) + " from warehouse, but only ") + toString(iI)) + " available"))
18901668 else {
1891- let fX = (eL((jI + jB), bd) - eL(jI, bd))
1892- $Tuple4((gO + 1), (eV._2 :+ toString((jI + jB))), (eV._3 :+ toString((jJ - jB))), (eV._4 + fX))
1669+ let fW = (eK((iI + iB), bc) - eK(iI, bc))
1670+ $Tuple4((gN + 1), (eU._2 :+ toString((iI + iB))), (eU._3 :+ toString((iJ - iB))), (eU._4 + fW))
18931671 }
18941672 }
18951673
1896- let gy = if ((size(ju) != 0))
1674+ let gx = if ((size(iu) != 0))
18971675 then {
1898- let eX = ju
1899- let eY = size(eX)
1900- let eZ = $Tuple4(0, nil, nil, gu._4)
1901- func if (fb,fc) = if ((fc >= eY))
1902- then fb
1903- else jH(fb, eX[fc])
1904-
1905- func ig (fb,fc) = if ((fc >= eY))
1906- then fb
1676+ let eW = iu
1677+ let eX = size(eW)
1678+ let eY = $Tuple4(0, nil, nil, gt._4)
1679+ func hL (fa,fb) = if ((fb >= eX))
1680+ then fa
1681+ else iH(fa, eW[fb])
1682+
1683+ func hM (fa,fb) = if ((fb >= eX))
1684+ then fa
19071685 else throw("List size exceeds 50")
19081686
1909- ig(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(eZ, 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)
1687+ hM(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(eY, 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)
19101688 }
1911- else $Tuple4(0, jx, jz, gu._4)
1912- let jK = gy._4
1913- if ((jK > hd))
1914- then throw((((("Attempt to put total " + toString(jK)) + " stuff, but only ") + toString(hd)) + " warehouse space left"))
1915- else $Tuple7(makeString(fg._2, "_"), makeString(gu._2, "_"), makeString_2C(gy._2, "_"), makeString(fg._3, "_"), makeString(gu._3, "_"), makeString_2C(gy._3, "_"), jK)
1689+ else $Tuple4(0, ix, iz, gt._4)
1690+ let iK = gx._4
1691+ if ((iK > hc))
1692+ then throw((((("Attempt to put total " + toString(iK)) + " stuff, but only ") + toString(hc)) + " warehouse space left"))
1693+ else $Tuple7(makeString(ff._2, "_"), makeString(gt._2, "_"), makeString_2C(gx._2, "_"), makeString(ff._3, "_"), makeString(gt._3, "_"), makeString_2C(gx._3, "_"), iK)
19161694 }
19171695 }
19181696
19191697
1920-func jL (jM,jN) = {
1921- let bR = toString(jM)
1922- let jO = hj(toBigInt(jN))
1923- let jP = valueOrElse(getInteger(et()), (es + 1))
1924- let ex = toString(jP)
1925- let iC = toInt((jO % em))
1926- let gR = iA(jO, iC)
1927- let dA = aV[iC]
1928- let jQ = Issue(eK(ex, "S"), makeString([ex, "S", gR, dA], "_"), 1, 0, false)
1929- let bv = calculateAssetId(jQ)
1930- let jR = toBase58String(bv)
1931- $Tuple2([IntegerEntry(et(), (jP + 1)), jQ, StringEntry(ew(ex), jR), StringEntry(bu(jR), bR), StringEntry(ez(ex), bR), IntegerEntry(bE(jR), 0), IntegerEntry(ey(jR, bR), 0), ScriptTransfer(jM, 1, bv)], $Tuple2(jR, dA))
1932- }
1933-
1934-
1935-func jS (bR,jT,jU) = if (!(sigVerify_8Kb(jT, jU, ed)))
1698+func iL (iM,iN) = {
1699+ let bQ = toString(iM)
1700+ let iO = hi(toBigInt(iN))
1701+ let iP = valueOrElse(getInteger(es()), (er + 1))
1702+ let ew = toString(iP)
1703+ let hr = toInt((iO % el))
1704+ let gQ = hp(iO, hr)
1705+ let dz = aU[hr]
1706+ let iQ = Issue(eJ(ew, "S"), makeString([ew, "S", gQ, dz], "_"), 1, 0, false)
1707+ let bu = calculateAssetId(iQ)
1708+ let iR = toBase58String(bu)
1709+ $Tuple2([IntegerEntry(es(), (iP + 1)), iQ, StringEntry(ev(ew), iR), StringEntry(bt(iR), bQ), StringEntry(ey(ew), bQ), IntegerEntry(bD(iR), 0), IntegerEntry(ex(iR, bQ), 0), ScriptTransfer(iM, 1, bu)], $Tuple2(iR, dz))
1710+ }
1711+
1712+
1713+func iS (bQ,iT,iU) = if (!(sigVerify_8Kb(iT, iU, ec)))
19361714 then throw("signature does not match")
19371715 else {
1938- let ft = split_4C(toUtf8String(jT), ";")
1939- let jV = split_4C(ft[0], "|")
1940- let jW = split(jV[eG], "_")
1941- let jX = parseIntValue(jW[0])
1942- let jY = parseIntValue(jW[1])
1943- let jZ = split(ft[1], ":")
1944- let ka = jZ[0]
1945- let kb = parseIntValue(jV[eH])
1946- if (if ((kb > (lastBlock.timestamp + ef)))
1716+ let fs = split_4C(toUtf8String(iT), ";")
1717+ let iV = split_4C(fs[0], "|")
1718+ let iW = split(iV[eF], "_")
1719+ let iX = parseIntValue(iW[0])
1720+ let iY = parseIntValue(iW[1])
1721+ let iZ = split(fs[1], ":")
1722+ let ja = iZ[0]
1723+ let jb = parseIntValue(iV[eG])
1724+ if (if ((jb > (lastBlock.timestamp + ee)))
19471725 then true
1948- else ((lastBlock.timestamp - ef) > kb))
1949- then throw(((("signature outdated: logTime=" + toString(kb)) + ", bcTime=") + toString(lastBlock.timestamp)))
1726+ else ((lastBlock.timestamp - ee) > jb))
1727+ then throw(((("signature outdated: logTime=" + toString(jb)) + ", bcTime=") + toString(lastBlock.timestamp)))
19501728 else {
1951- let kc = jZ[1]
1952- let kd = valueOrElse(getString(dP(bR)), "")
1953- if ((kd != kc))
1954- then throw(((("Tx ids don't match! In state: " + kd) + ", in msg: ") + kc))
1729+ let jc = iZ[1]
1730+ let jd = valueOrElse(getString(dO(bQ)), "")
1731+ if ((jd != jc))
1732+ then throw(((("Tx ids don't match! In state: " + jd) + ", in msg: ") + jc))
19551733 else {
1956- let B = valueOrErrorMessage(getString(bN(bR)), "You don't have a duck staked")
1957- let ke = A(B)
1958- let kf = aj(valueOrElse(getInteger(E(B)), 0))
1959- let kg = valueOrElse(getInteger(ke), kf)
1960- if ((kg != jX))
1961- then throw(((("oldHealth=" + toString(kg)) + " from state does not match one from flight log=") + toString(jX)))
1962- else if ((0 >= jX))
1734+ let B = valueOrErrorMessage(getString(bM(bQ)), "You don't have a duck staked")
1735+ let je = A(B)
1736+ let jf = aj(valueOrElse(getInteger(E(B)), 0))
1737+ let jg = valueOrElse(getInteger(je), jf)
1738+ if ((jg != iX))
1739+ then throw(((("oldHealth=" + toString(jg)) + " from state does not match one from flight log=") + toString(iX)))
1740+ else if ((0 >= iX))
19631741 then throw("You can't fly with zero health")
1964- else if (!(gA(B)))
1742+ else if (!(gz(B)))
19651743 then throw("Equipment incompatible")
19661744 else {
1967- let kh = if ((size(jV) > eI))
1968- then jV[eI]
1745+ let jh = if ((size(iV) > eH))
1746+ then iV[eH]
19691747 else ""
1970- let ki = if ((size(jV) > eJ))
1971- then jV[eJ]
1748+ let ji = if ((size(iV) > eI))
1749+ then iV[eI]
19721750 else ""
1973- let kj = if (if ((jY > 0))
1974- then (kh == "$")
1751+ let jj = if (if ((iY > 0))
1752+ then (jh == "$")
19751753 else false)
1976- then dG(invoke(di, "sendUsdtPrize", [bR], nil))
1754+ then dF(invoke(dh, "sendUsdtPrize", [bQ], nil))
19771755 else 0
1978- $Tuple5(jY, B, kj, ka, ki)
1756+ $Tuple5(iY, B, jj, ja, ji)
19791757 }
19801758 }
19811759 }
19821760 }
19831761
19841762
1985-func kk (Q,kl) = {
1986- let jd = valueOrElse(getInteger(bE(Q)), 0)
1987- let km = valueOrElse(getInteger(by(aH, Q)), 0)
1988- let kn = (jd / 6)
1989- let ko = (jd / 7)
1990- ((aL + fraction(aL, ((jd + kn) + (2 * ko)), 5)) + fraction(aL, km, (kl * 5)))
1991- }
1992-
1993-
1994-func kp (c,kq,kr) = {
1995- let ks = if ((kq == eD))
1996- then $Tuple2(kr, valueOrElse(getString(bN(c)), ""))
1763+func jk (Q,jl) = {
1764+ let id = valueOrElse(getInteger(bD(Q)), 0)
1765+ let jm = valueOrElse(getInteger(bx(aH, Q)), 0)
1766+ let jn = (id / 6)
1767+ let jo = (id / 7)
1768+ ((aK + fraction(aK, ((id + jn) + (2 * jo)), 5)) + fraction(aK, jm, (jl * 5)))
1769+ }
1770+
1771+
1772+func jp (c,jq,jr) = {
1773+ let js = if ((jq == eC))
1774+ then $Tuple2(jr, valueOrElse(getString(bM(c)), ""))
19971775 else {
1998- let B = valueOrErrorMessage(getString(bN(c)), "You don't have a duck staked")
1999- let kt = valueOrElse(getString(bP(B)), aN)
2000- let cl = split(value(kt), "_")
2001- if ((cl[bs] != "L"))
2002- then throw((("Duck location type is " + cl[bs]) + ", but should be L"))
2003- else $Tuple2(cl[bt], B)
2004- }
2005- let Q = ks._1
2006- let ku = ks._2
2007- let kv = value(assetInfo(fromBase58String(Q)))
2008- let kw = bx(Q)
2009- let kx = valueOrErrorMessage(getInteger(kw), (("Land " + kv.name) + " is not staked"))
2010- let ky = valueOrErrorMessage(getString(bu(Q)), (("NFT " + kv.name) + " is orphaned"))
2011- if ((ky != c))
1776+ let B = valueOrErrorMessage(getString(bM(c)), "You don't have a duck staked")
1777+ let jt = valueOrElse(getString(bO(B)), aM)
1778+ let ck = split(value(jt), "_")
1779+ if ((ck[br] != "L"))
1780+ then throw((("Duck location type is " + ck[br]) + ", but should be L"))
1781+ else $Tuple2(ck[bs], B)
1782+ }
1783+ let Q = js._1
1784+ let ju = js._2
1785+ let jv = value(assetInfo(fromBase58String(Q)))
1786+ let jw = bw(Q)
1787+ let jx = valueOrErrorMessage(getInteger(jw), (("Land " + jv.name) + " is not staked"))
1788+ let jy = valueOrErrorMessage(getString(bt(Q)), (("NFT " + jv.name) + " is orphaned"))
1789+ if ((jy != c))
20121790 then throw((aF + " is not yours"))
20131791 else {
2014- let kz = split(kv.description, "_")
2015- $Tuple4(ku, Q, kz, kx)
2016- }
2017- }
2018-
2019-
2020-func kA (c,eM,kq,kr) = if ((0 > eM))
1792+ let jz = split(jv.description, "_")
1793+ $Tuple4(ju, Q, jz, jx)
1794+ }
1795+ }
1796+
1797+
1798+func jA (c,eL,jq,jr) = if ((0 > eL))
20211799 then throw("Negative amount")
20221800 else {
2023- let ge = kp(c, kq, kr)
2024- let dM = ge._3[dp]
2025- let gK = gQ(ge._3[dq])
2026- let gU = (lastBlock.timestamp - ge._4)
2027- if ((0 > gU))
2028- then throw(((("Saved timestamp is in future, saved = " + toString(ge._4)) + ", current = ") + toString(lastBlock.timestamp)))
1801+ let gd = jp(c, jq, jr)
1802+ let dL = gd._3[do]
1803+ let gJ = gP(gd._3[dp])
1804+ let gT = (lastBlock.timestamp - gd._4)
1805+ if ((0 > gT))
1806+ then throw(((("Saved timestamp is in future, saved = " + toString(gd._4)) + ", current = ") + toString(lastBlock.timestamp)))
20291807 else {
2030- let kl = dL(dM)
2031- let kB = kk(ge._2, kl)
2032- let kC = fraction(gU, (kB * kl), a)
2033- if ((eM > kC))
2034- then throw(((("Not enough resources, available = " + toString(kC)) + ", requested = ") + toString(eM)))
1808+ let jl = dK(dL)
1809+ let jB = jk(gd._2, jl)
1810+ let jC = fraction(gT, (jB * jl), a)
1811+ if ((eL > jC))
1812+ then throw(((("Not enough resources, available = " + toString(jC)) + ", requested = ") + toString(eL)))
20351813 else {
2036- let kD = fraction((kC - eM), a, (kB * kl))
2037- let kE = (lastBlock.timestamp - kD)
2038- let jc = (kl / cM)
2039- let hc = gY(gK, (gU - kD), jc, kB)
2040- let jb = bD(ge._2)
2041- let jd = valueOrElse(getInteger(bE(ge._2)), 0)
2042- let iS = ja(jb, jc, jd)
2043- let jj = split(iS[bi], "_")
2044- let hd = parseIntValue(jj[bl])
2045- if (if ((kq == eD))
2046- then (eM > hd)
1814+ let jD = fraction((jC - eL), a, (jB * jl))
1815+ let jE = (lastBlock.timestamp - jD)
1816+ let ic = (jl / cL)
1817+ let hb = gX(gJ, (gT - jD), ic, jB)
1818+ let ib = bC(gd._2)
1819+ let id = valueOrElse(getInteger(bD(gd._2)), 0)
1820+ let hS = ia(ib, ic, id)
1821+ let ij = split(hS[bh], "_")
1822+ let hc = parseIntValue(ij[bk])
1823+ if (if ((jq == eC))
1824+ then (eL > hc)
20471825 else false)
2048- then throw((("Only " + toString(hd)) + " space left in warehouse"))
1826+ then throw((("Only " + toString(hc)) + " space left in warehouse"))
20491827 else {
2050- let iO = bO(ge._1)
2051- let jr = iN(iO)
2052- let hb = split(jr[bo], "_")
2053- let ha = split(iS[bf], "_")
2054- let kF = if ((kq == eD))
2055- then $Tuple4(gS(ha, gK, (gU - kD), jc, kB), jr[bo], (parseIntValue(jj[bk]) + hc._2), (parseIntValue(jj[bl]) - hc._2))
2056- else if ((kq == eE))
2057- then $Tuple4(iS[bf], gS(hb, gK, (gU - kD), jc, kB), parseIntValue(jj[bk]), parseIntValue(jj[bl]))
1828+ let hO = bN(gd._1)
1829+ let ir = hN(hO)
1830+ let ha = split(ir[bn], "_")
1831+ let gZ = split(hS[be], "_")
1832+ let jF = if ((jq == eC))
1833+ then $Tuple4(gR(gZ, gJ, (gT - jD), ic, jB), ir[bn], (parseIntValue(ij[bj]) + hb._2), (parseIntValue(ij[bk]) - hb._2))
1834+ else if ((jq == eD))
1835+ then $Tuple4(hS[be], gR(ha, gJ, (gT - jD), ic, jB), parseIntValue(ij[bj]), parseIntValue(ij[bk]))
20581836 else {
2059- let kG = gZ(ha, hb, hc, hd)
2060- let kH = min([parseIntValue(jj[bl]), hc._2])
2061- $Tuple4(kG._1, kG._2, (parseIntValue(jj[bk]) + kH), (parseIntValue(jj[bl]) - kH))
1837+ let jG = gY(gZ, ha, hb, hc)
1838+ let jH = min([parseIntValue(ij[bk]), hb._2])
1839+ $Tuple4(jG._1, jG._2, (parseIntValue(ij[bj]) + jH), (parseIntValue(ij[bk]) - jH))
20621840 }
2063- let kI = kF._1
2064- let kJ = kF._2
2065- let kK = kF._3
2066- let kL = kF._4
2067- $Tuple5([IntegerEntry(bx(ge._2), kE), IntegerEntry(bA(aF, ge._2, c), kE)], iO, [jr[bn], kJ, jr[bp], jr[bq]], jb, [iS[be], kI, iS[bg], iS[bh], makeString([jj[bj], toString(kK), toString(kL), jj[bm]], "_")])
1841+ let jI = jF._1
1842+ let jJ = jF._2
1843+ let jK = jF._3
1844+ let jL = jF._4
1845+ $Tuple5([IntegerEntry(bw(gd._2), jE), IntegerEntry(bz(aF, gd._2, c), jE)], hO, [ir[bm], jJ, ir[bo], ir[bp]], ib, [hS[bd], jI, hS[bf], hS[bg], makeString([ij[bi], toString(jK), toString(jL), ij[bl]], "_")])
20681846 }
20691847 }
20701848 }
20711849 }
20721850
20731851
2074-func kM (c,Q,kl,kq) = {
2075- let kw = bx(Q)
2076- let kx = value(getInteger(kw))
2077- let kC = (fraction((lastBlock.timestamp - kx), kk(Q, kl), a) * kl)
2078- kA(c, kC, kq, Q)
2079- }
2080-
2081-
2082-func kN (fi,jM,kO,Q) = {
2083- let c = toString(jM)
2084- let ge = kp(c, eF, Q)
2085- let kl = dL(ge._3[dp])
2086- let kP = bE(ge._2)
2087- let kQ = valueOrElse(getInteger(kP), 0)
2088- if (if (!(cA))
2089- then (kQ >= 3)
1852+func jM (c,Q,jl,jq) = {
1853+ let jw = bw(Q)
1854+ let jx = value(getInteger(jw))
1855+ let jC = (fraction((lastBlock.timestamp - jx), jk(Q, jl), a) * jl)
1856+ jA(c, jC, jq, Q)
1857+ }
1858+
1859+
1860+func jN (fh,iM,jO,Q) = {
1861+ let c = toString(iM)
1862+ let gd = jp(c, eE, Q)
1863+ let jl = dK(gd._3[do])
1864+ let jP = bD(gd._2)
1865+ let jQ = valueOrElse(getInteger(jP), 0)
1866+ if (if (!(cz))
1867+ then (jQ >= 3)
20901868 else false)
20911869 then throw("Currently max infrastructure level = 3")
20921870 else {
2093- let kR = ((sqrt(kl, 0, 0, DOWN) / 5) + 2)
2094- let ao = (kQ + 1)
2095- if (if (cA)
2096- then (ao > kR)
1871+ let jR = ((sqrt(jl, 0, 0, DOWN) / 5) + 2)
1872+ let ao = (jQ + 1)
1873+ if (if (cz)
1874+ then (ao > jR)
20971875 else false)
2098- then throw(("Currently max infrastructure level = " + toString(kR)))
1876+ then throw(("Currently max infrastructure level = " + toString(jR)))
20991877 else {
2100- let kS = fraction(ei, (kl * ao), cM)
2101- if (if (!(fi))
2102- then (kO != kS)
1878+ let jS = fraction(eh, (jl * ao), cL)
1879+ if (if (!(fh))
1880+ then (jO != jS)
21031881 else false)
2104- then throw(("Payment attached should be " + toString(kS)))
1882+ then throw(("Payment attached should be " + toString(jS)))
21051883 else {
2106- let iO = bO(ge._1)
2107- let jr = iN(iO)
2108- let kT = split(jr[bp], "_")
2109- let kU = fraction(cG, (kl * ao), cM)
2110- let kV = makeString(fh(fi, kT, kU), "_")
2111- let kW = kM(c, ge._2, kl, eF)
2112- let kX = kW._5
2113- let kY = iP(kX[be])
2114- let kZ = makeString([split(kX[be], "_")[0], toString(ao)], "_")
2115- let la = iP(kZ)
2116- let jj = split(kX[bi], "_")
2117- let lb = makeString([jj[bj], jj[bk], toString(((parseIntValue(jj[bl]) + la) - kY)), toString(la)], "_")
2118- $Tuple3(([IntegerEntry(kP, ao), IntegerEntry(ey(ge._2, c), ao), StringEntry(iO, makeString([jr[bn], kW._3[bo], kV, jr[bq]], ":")), StringEntry(kW._4, makeString([kZ, kX[bf], kX[bg], kX[bh], lb], ":"))] ++ kW._1), ao, kU)
1884+ let hO = bN(gd._1)
1885+ let ir = hN(hO)
1886+ let jT = split(ir[bo], "_")
1887+ let jU = fraction(cF, (jl * ao), cL)
1888+ let jV = makeString(fg(fh, jT, jU), "_")
1889+ let jW = jM(c, gd._2, jl, eE)
1890+ let jX = jW._5
1891+ let jY = hP(jX[bd])
1892+ let jZ = makeString([split(jX[bd], "_")[0], toString(ao)], "_")
1893+ let ka = hP(jZ)
1894+ let ij = split(jX[bh], "_")
1895+ let kb = makeString([ij[bi], ij[bj], toString(((parseIntValue(ij[bk]) + ka) - jY)), toString(ka)], "_")
1896+ $Tuple3(([IntegerEntry(jP, ao), IntegerEntry(ex(gd._2, c), ao), StringEntry(hO, makeString([ir[bm], jW._3[bn], jV, ir[bp]], ":")), StringEntry(jW._4, makeString([jZ, jX[be], jX[bf], jX[bg], kb], ":"))] ++ jW._1), ao, jU)
21191897 }
21201898 }
21211899 }
21221900 }
21231901
21241902
2125-func lc (ld,le,lf,lg) = {
2126- let ai = valueOrElse(getInteger(le), 0)
2127- let an = (ai + lg)
2128- let lh = al(valueOrElse(getInteger(ld), 0), an)
2129- $Tuple2([IntegerEntry(ld, lh[0]), IntegerEntry(le, an), IntegerEntry(lf, (valueOrElse(getInteger(lf), 0) + lh[1]))], an)
2130- }
2131-
2132-
2133-func li (B,lg) = lc(E(B), D(B), F(B), lg)
2134-
2135-
2136-func lj (c,lg) = lc(I(c), H(c), J(c), lg)
2137-
2138-
2139-func lk (c) = {
2140- let B = valueOrErrorMessage(getString(bN(c)), "You don't have a duck staked")
2141- let ll = bI(c)
2142- let lm = getString(ll)
2143- if (!(isDefined(lm)))
1903+func kc (kd,ke,kf,kg) = {
1904+ let ai = valueOrElse(getInteger(ke), 0)
1905+ let an = (ai + kg)
1906+ let kh = al(valueOrElse(getInteger(kd), 0), an)
1907+ $Tuple2([IntegerEntry(kd, kh[0]), IntegerEntry(ke, an), IntegerEntry(kf, (valueOrElse(getInteger(kf), 0) + kh[1]))], an)
1908+ }
1909+
1910+
1911+func ki (B,kg) = kc(E(B), D(B), F(B), kg)
1912+
1913+
1914+func kj (c,kg) = kc(I(c), H(c), J(c), kg)
1915+
1916+
1917+func kk (c) = {
1918+ let B = valueOrErrorMessage(getString(bM(c)), "You don't have a duck staked")
1919+ let kl = bH(c)
1920+ let km = getString(kl)
1921+ if (!(isDefined(km)))
21441922 then throw("You are not eligible for ONBOARD artifact")
21451923 else {
2146- let ln = bK(c)
2147- let lo = getString(ln)
2148- if (isDefined(lo))
2149- then throw(("You already used your ONBOARD artifact on duck " + value(lo)))
1924+ let kn = bJ(c)
1925+ let ko = getString(kn)
1926+ if (isDefined(ko))
1927+ then throw(("You already used your ONBOARD artifact on duck " + value(ko)))
21501928 else {
2151- let lp = bJ(B)
2152- let lq = getString(lp)
2153- if (isDefined(lq))
2154- then throw(((("The duck " + B) + " already got points from ONBOARD artifact from user ") + value(lq)))
2155- else ([StringEntry(ln, B), StringEntry(lp, c)] ++ li(B, af)._1)
1929+ let kp = bI(B)
1930+ let kq = getString(kp)
1931+ if (isDefined(kq))
1932+ then throw(((("The duck " + B) + " already got points from ONBOARD artifact from user ") + value(kq)))
1933+ else ([StringEntry(kn, B), StringEntry(kp, c)] ++ ki(B, af)._1)
21561934 }
21571935 }
21581936 }
21591937
21601938
2161-func lr (c,kr) = {
2162- let ge = kp(c, eF, kr)
2163- let Q = ge._2
2164- let kl = dL(ge._3[dp])
2165- let ls = by(aH, Q)
2166- if ((valueOrElse(getInteger(ls), 0) > 0))
1939+func kr (c,jr) = {
1940+ let gd = jp(c, eE, jr)
1941+ let Q = gd._2
1942+ let jl = dK(gd._3[do])
1943+ let ks = bx(aH, Q)
1944+ if ((valueOrElse(getInteger(ks), 0) > 0))
21671945 then throw("Presale artifact is already activated")
2168- else if ((parseIntValue(ge._3[do]) > es))
1946+ else if ((parseIntValue(gd._3[dn]) > er))
21691947 then throw((((aF + " ") + Q) + " is not eligible for presale artifact"))
21701948 else {
2171- let kW = kM(c, Q, kl, eF)
2172- (((kW._1 :+ IntegerEntry(ls, kl)) :+ StringEntry(kW._2, makeString(kW._3, ":"))) :+ StringEntry(kW._4, makeString(kW._5, ":")))
1949+ let jW = jM(c, Q, jl, eE)
1950+ (((jW._1 :+ IntegerEntry(ks, jl)) :+ StringEntry(jW._2, makeString(jW._3, ":"))) :+ StringEntry(jW._4, makeString(jW._5, ":")))
21731951 }
21741952 }
21751953
21761954
2177-func lt (B) = {
2178- let ck = valueOrElse(getInteger(dm, bV), 0)
2179- let kt = split(valueOrElse(getString(bP(B)), aN), "_")
1955+func kt (B) = {
1956+ let cj = valueOrElse(getInteger(dl, bU), 0)
1957+ let jt = split(valueOrElse(getString(bO(B)), aM), "_")
21801958 let aA = lastBlock.timestamp
2181- let cm = ce(dm, ck)
2182- let cg = cm[ca]
2183- let ch = cm[cb]
2184- if ((kt[bs] != "T"))
1959+ let cl = cd(dl, cj)
1960+ let cf = cl[bZ]
1961+ let cg = cl[ca]
1962+ if ((jt[br] != "T"))
21851963 then false
2186- else if (if (if ((parseIntValue(kt[br]) == ck))
2187- then (ch[cd] == "INPROGRESS")
1964+ else if (if (if ((parseIntValue(jt[bq]) == cj))
1965+ then (cg[cc] == "INPROGRESS")
21881966 else false)
2189- then (parseIntValue(cg[cc]) > aA)
1967+ then (parseIntValue(cf[cb]) > aA)
21901968 else false)
21911969 then throw("Your duck is taking part in the tournament")
2192- else dK(invoke(this, "exitTournamentInternal", [B], nil))
2193- }
2194-
2195-
2196-func lu (B) = {
2197- let kt = split(valueOrElse(getString(bP(B)), aN), "_")
1970+ else dJ(invoke(this, "exitTournamentInternal", [B], nil))
1971+ }
1972+
1973+
1974+func ku (B) = {
1975+ let jt = split(valueOrElse(getString(bO(B)), aM), "_")
21981976 let aA = lastBlock.timestamp
2199- if ((kt[bs] != "D"))
1977+ if ((jt[br] != "D"))
22001978 then false
22011979 else {
2202- let co = parseIntValue(kt[br])
2203- let cp = parseIntValue(kt[bt])
2204- if (if (((co + aR) > aA))
2205- then (1 > cp)
1980+ let cn = parseIntValue(jt[bq])
1981+ let co = parseIntValue(jt[bs])
1982+ if (if (((cn + aQ) > aA))
1983+ then (1 > co)
22061984 else false)
22071985 then throw("Your duck is on delivery mission")
2208- else dK(invoke(this, "exitDeliveryInternal", [B], nil))
2209- }
2210- }
2211-
2212-
2213-func lv (B,fN,jY,lw) = {
2214- let kt = split(valueOrElse(getString(bP(B)), aN), "_")
1986+ else dJ(invoke(this, "exitDeliveryInternal", [B], nil))
1987+ }
1988+ }
1989+
1990+
1991+func kv (B,fM,iY,kw) = {
1992+ let jt = split(valueOrElse(getString(bO(B)), aM), "_")
22151993 let aA = lastBlock.timestamp
2216- let co = parseIntValue(kt[br])
2217- let cp = parseIntValue(kt[bt])
2218- let ky = valueOrErrorMessage(getString(bM(B)), "NFT duck is orphaned")
2219- let lx = A(B)
2220- let ly = getIntegerValue(lx)
2221- let lz = if (if ((cp > 0))
1994+ let cn = parseIntValue(jt[bq])
1995+ let co = parseIntValue(jt[bs])
1996+ let jy = valueOrErrorMessage(getString(bL(B)), "NFT duck is orphaned")
1997+ let kx = A(B)
1998+ let ky = getIntegerValue(kx)
1999+ let kz = if (if ((co > 0))
22222000 then true
2223- else if (if (fN)
2224- then (lw > 0)
2001+ else if (if (fM)
2002+ then (kw > 0)
22252003 else false)
2226- then (jY > 0)
2004+ then (iY > 0)
22272005 else false)
22282006 then {
2229- let lA = invoke(dj, "sendDeliveryReward", [ky], nil)
2230- if ((lA == lA))
2007+ let kA = invoke(di, "sendDeliveryReward", [jy], nil)
2008+ if ((kA == kA))
22312009 then {
2232- let lB = V(ky)
2233-[IntegerEntry(lB, (valueOrElse(getInteger(lB), 0) + 1)), IntegerEntry(W(ky), (co / a))]
2010+ let kB = V(jy)
2011+[IntegerEntry(kB, (valueOrElse(getInteger(kB), 0) + 1)), IntegerEntry(W(jy), (cn / a))]
22342012 }
22352013 else throw("Strict value is not equal to itself.")
22362014 }
2237- else if (if (if (fN)
2238- then (jY > 0)
2015+ else if (if (if (fM)
2016+ then (iY > 0)
22392017 else false)
2240- then ((co + aR) > aA)
2018+ then ((cn + aQ) > aA)
22412019 else false)
22422020 then throw("Your duck is still on delivery mission")
22432021 else {
2244- let lC = valueOrElse(getInteger(dj, bU), 0)
2245- let lD = invoke(dj, "updateDeliveryLocked", [(lC - aQ)], nil)
2246- if ((lD == lD))
2247- then if (if (if (fN)
2248- then (0 >= jY)
2022+ let kC = valueOrElse(getInteger(di, bT), 0)
2023+ let kD = invoke(di, "updateDeliveryLocked", [(kC - aP)], nil)
2024+ if ((kD == kD))
2025+ then if (if (if (fM)
2026+ then (0 >= iY)
22492027 else false)
22502028 then true
2251- else (0 >= ly))
2029+ else (0 >= ky))
22522030 then nil
2253- else [IntegerEntry(U(B), (co + cI))]
2031+ else [IntegerEntry(U(B), (cn + cH))]
22542032 else throw("Strict value is not equal to itself.")
22552033 }
2256- let lE = getStringValue(L(B))
2257- $Tuple3(lz, [StringEntry(bP(B), lE)], lE)
2258- }
2259-
2260-
2261-func lF (lG,ao,lH,c,lI,lJ) = {
2262- let B = valueOrErrorMessage(getString(bN(c)), "You don't have a duck staked")
2263- if (lt(B))
2034+ let kE = getStringValue(L(B))
2035+ $Tuple3(kz, [StringEntry(bO(B), kE)], kE)
2036+ }
2037+
2038+
2039+func kF (kG,ao,kH,c,kI,kJ) = {
2040+ let B = valueOrErrorMessage(getString(bM(c)), "You don't have a duck staked")
2041+ if (kt(B))
22642042 then throw("mergeInternal_checkTournament")
2265- else if (lu(B))
2043+ else if (ku(B))
22662044 then throw("mergeInternal_checkDelivery")
22672045 else {
2268- func lK (eV,Q) = {
2269- let kv = value(assetInfo(fromBase58String(Q)))
2270- let kw = bx(Q)
2271- let kx = valueOrErrorMessage(getInteger(kw), (("NFT " + kv.name) + " is not staked"))
2272- let ky = valueOrErrorMessage(getString(bu(Q)), (("NFT " + kv.name) + " is orphaned"))
2273- if ((ky != c))
2046+ func kK (eU,Q) = {
2047+ let jv = value(assetInfo(fromBase58String(Q)))
2048+ let jw = bw(Q)
2049+ let jx = valueOrErrorMessage(getInteger(jw), (("NFT " + jv.name) + " is not staked"))
2050+ let jy = valueOrErrorMessage(getString(bt(Q)), (("NFT " + jv.name) + " is orphaned"))
2051+ if ((jy != c))
22742052 then throw((aF + " is not yours"))
22752053 else {
2276- let kz = split(kv.description, "_")
2277- let dA = kz[dr]
2278- if (if ((eV._3 != ""))
2279- then (eV._3 != dA)
2054+ let jz = split(jv.description, "_")
2055+ let dz = jz[dq]
2056+ if (if ((eU._3 != ""))
2057+ then (eU._3 != dz)
22802058 else false)
22812059 then throw("Lands should be on the same continent to merge")
22822060 else {
2283- let dM = kz[dp]
2284- let lL = eV._1
2285- let gO = valueOrErrorMessage(indexOf(lL, dM), "You haven't passed all the lands needed")
2286- let lM = (take(lL, gO) + drop(lL, (gO + 1)))
2287- let kl = dL(dM)
2288- let lN = (eV._2 + valueOrElse(getInteger(by(aH, Q)), 0))
2289- let jd = valueOrElse(getInteger(bE(Q)), 0)
2290- let lO = {
2291- let cE = dM
2292- if (("S" == cE))
2061+ let dL = jz[do]
2062+ let kL = eU._1
2063+ let gN = valueOrErrorMessage(indexOf(kL, dL), "You haven't passed all the lands needed")
2064+ let kM = (take(kL, gN) + drop(kL, (gN + 1)))
2065+ let jl = dK(dL)
2066+ let kN = (eU._2 + valueOrElse(getInteger(bx(aH, Q)), 0))
2067+ let id = valueOrElse(getInteger(bD(Q)), 0)
2068+ let kO = {
2069+ let cD = dL
2070+ if (("S" == cD))
22932071 then 3
2294- else if (("M" == cE))
2072+ else if (("M" == cD))
22952073 then 4
2296- else if (("L" == cE))
2074+ else if (("L" == cD))
22972075 then 5
2298- else if (("XL" == cE))
2076+ else if (("XL" == cD))
22992077 then 6
23002078 else throw("Only S, M, L, XL can merge")
23012079 }
2302- if ((jd != lO))
2080+ if ((id != kO))
23032081 then throw("All lands should be maxed to merge")
23042082 else {
2305- let ex = kz[do]
2306- let gK = gQ(kz[dq])
2307- let gU = (lastBlock.timestamp - kx)
2308- if ((0 > gU))
2309- then throw(((("Saved timestamp is in future, saved = " + toString(kx)) + ", current = ") + toString(lastBlock.timestamp)))
2083+ let ew = jz[dn]
2084+ let gJ = gP(jz[dp])
2085+ let gT = (lastBlock.timestamp - jx)
2086+ if ((0 > gT))
2087+ then throw(((("Saved timestamp is in future, saved = " + toString(jx)) + ", current = ") + toString(lastBlock.timestamp)))
23102088 else {
2311- let kB = kk(Q, kl)
2312- let jc = (kl / cM)
2313- let kJ = gS(split(eV._4, "_"), gK, gU, jc, kB)
2314- let ff = gI(eV._6, gK, jc, -1)
2315- let lP = gI(eV._10, gK, jc, -1)
2316- let iG = gI(eV._9, gK, jc, 1)
2317- let lQ = eV._7
2318- let dh = indexOf(lQ, Q)
2319- if (!(isDefined(dh)))
2089+ let jB = jk(Q, jl)
2090+ let ic = (jl / cL)
2091+ let jJ = gR(split(eU._4, "_"), gJ, gT, ic, jB)
2092+ let fe = gH(eU._6, gJ, ic, -1)
2093+ let kP = gH(eU._10, gJ, ic, -1)
2094+ let hx = gH(eU._9, gJ, ic, 1)
2095+ let kQ = eU._7
2096+ let dg = indexOf(kQ, Q)
2097+ if (!(isDefined(dg)))
23202098 then throw(("Your staked lands don't contain " + Q))
23212099 else {
2322- let lR = bw(Q)
2323- let lS = valueOrElse(getString(lR), "")
2324- $Tuple10(lM, lN, dA, kJ, ((((((((((((eV._5 :+ DeleteEntry(bx(Q))) :+ DeleteEntry(bA(aF, Q, c))) :+ DeleteEntry(ew(ex))) :+ DeleteEntry(bu(Q))) :+ DeleteEntry(bE(Q))) :+ DeleteEntry(ey(Q, c))) :+ DeleteEntry(by(aH, Q))) :+ DeleteEntry(ez(ex))) :+ DeleteEntry(bD(Q))) :+ DeleteEntry(lR)) :+ Burn(fromBase58String(Q), 1)) ++ (if ((lS != ""))
2325- then [DeleteEntry(eu(lS))]
2326- else nil)), ff, removeByIndex(lQ, value(dh)), (eV._8 + kl), iG, lP)
2100+ let kR = bv(Q)
2101+ let kS = valueOrElse(getString(kR), "")
2102+ $Tuple10(kM, kN, dz, jJ, ((((((((((((eU._5 :+ DeleteEntry(bw(Q))) :+ DeleteEntry(bz(aF, Q, c))) :+ DeleteEntry(ev(ew))) :+ DeleteEntry(bt(Q))) :+ DeleteEntry(bD(Q))) :+ DeleteEntry(ex(Q, c))) :+ DeleteEntry(bx(aH, Q))) :+ DeleteEntry(ey(ew))) :+ DeleteEntry(bC(Q))) :+ DeleteEntry(kR)) :+ Burn(fromBase58String(Q), 1)) ++ (if ((kS != ""))
2103+ then [DeleteEntry(et(kS))]
2104+ else nil)), fe, removeByIndex(kQ, value(dg)), (eU._8 + jl), hx, kP)
23272105 }
23282106 }
23292107 }
23312109 }
23322110 }
23332111
2334- let iO = bO(B)
2335- let jr = iN(iO)
2336- let gJ = split(valueOrElse(getString(dy()), "0_0_0_0_0_0"), "_")
2337- let lT = dB(c)
2338- let lU = getString(lT)
2339- let lV = if (isDefined(lU))
2340- then split_51C(value(lU), "_")
2112+ let hO = bN(B)
2113+ let ir = hN(hO)
2114+ let gI = split(valueOrElse(getString(dx()), "0_0_0_0_0_0"), "_")
2115+ let kT = dA(c)
2116+ let kU = getString(kT)
2117+ let kV = if (isDefined(kU))
2118+ then split_51C(value(kU), "_")
23412119 else nil
2342- let lW = split(value(assetInfo(fromBase58String(lI[0]))).description, "_")[dr]
2343- let lX = split(valueOrElse(getString(dz(lW)), "0_0_0_0_0_0"), "_")
2344- let fg = {
2345- let eX = lI
2346- let eY = size(eX)
2347- let eZ = $Tuple10(lH, 0, "", jr[bo], nil, gJ, lV, 0, split("0_0_0_0_0_0", "_"), lX)
2348- func fa (fb,fc) = if ((fc >= eY))
2349- then fb
2350- else lK(fb, eX[fc])
2351-
2352- func fd (fb,fc) = if ((fc >= eY))
2353- then fb
2120+ let kW = split(value(assetInfo(fromBase58String(kI[0]))).description, "_")[dq]
2121+ let kX = split(valueOrElse(getString(dy(kW)), "0_0_0_0_0_0"), "_")
2122+ let ff = {
2123+ let eW = kI
2124+ let eX = size(eW)
2125+ let eY = $Tuple10(kH, 0, "", ir[bn], nil, gI, kV, 0, split("0_0_0_0_0_0", "_"), kX)
2126+ func eZ (fa,fb) = if ((fb >= eX))
2127+ then fa
2128+ else kK(fa, eW[fb])
2129+
2130+ func fc (fa,fb) = if ((fb >= eX))
2131+ then fa
23542132 else throw("List size exceeds 5")
23552133
2356- fd(fa(fa(fa(fa(fa(eZ, 0), 1), 2), 3), 4), 5)
2134+ fc(eZ(eZ(eZ(eZ(eZ(eY, 0), 1), 2), 3), 4), 5)
23572135 }
2358- let dA = fg._3
2359- let iC = valueOrErrorMessage(indexOf(aV, dA), ("Unknown continent: " + dA))
2360- let gR = iF(fg._9, (dL(lG) / cM))
2361- let jP = valueOrElse(getInteger(et()), (es + 1))
2362- let lY = toString(jP)
2363- let jQ = Issue(eK(lY, lG), makeString([lY, lG, gR, dA], "_"), 1, 0, false)
2364- let bv = calculateAssetId(jQ)
2365- let lZ = toBase58String(bv)
2366- let kV = makeString(fh((lJ > 0), split(jr[bp], "_"), lJ), "_")
2367- let ma = dC(c)
2368- let mb = valueOrElse(getInteger(ma), 0)
2369- $Tuple2((((((((((((((((fg._5 :+ (if ((size(fg._7) > 0))
2370- then StringEntry(lT, makeString_11C(fg._7, "_"))
2371- else DeleteEntry(lT))) :+ IntegerEntry(ma, if ((fg._8 > mb))
2136+ let dz = ff._3
2137+ let hr = valueOrErrorMessage(indexOf(aU, dz), ("Unknown continent: " + dz))
2138+ let gQ = hw(ff._9, (dK(kG) / cL))
2139+ let iP = valueOrElse(getInteger(es()), (er + 1))
2140+ let kY = toString(iP)
2141+ let iQ = Issue(eJ(kY, kG), makeString([kY, kG, gQ, dz], "_"), 1, 0, false)
2142+ let bu = calculateAssetId(iQ)
2143+ let kZ = toBase58String(bu)
2144+ let jV = makeString(fg((kJ > 0), split(ir[bo], "_"), kJ), "_")
2145+ let la = dB(c)
2146+ let lb = valueOrElse(getInteger(la), 0)
2147+ $Tuple2((((((((((((((((ff._5 :+ (if ((size(ff._7) > 0))
2148+ then StringEntry(kT, makeString_11C(ff._7, "_"))
2149+ else DeleteEntry(kT))) :+ IntegerEntry(la, if ((ff._8 > lb))
23722150 then 0
2373- else (mb - fg._8))) :+ IntegerEntry(et(), (jP + 1))) :+ jQ) :+ StringEntry(ew(lY), lZ)) :+ StringEntry(bu(lZ), c)) :+ StringEntry(ez(lY), c)) :+ IntegerEntry(by(aH, lZ), fg._2)) :+ IntegerEntry(bE(lZ), ao)) :+ IntegerEntry(ey(lZ, c), ao)) :+ StringEntry(iO, makeString([jr[bn], fg._4, kV, jr[bq]], ":"))) :+ StringEntry(dy(), makeString(fg._6, "_"))) :+ StringEntry(dz(dA), makeString(fg._10, "_"))) :+ StringEntry(bP(B), makeString([dA, "L", lZ], "_"))) :+ ScriptTransfer(addressFromStringValue(c), 1, bv)), lZ)
2151+ else (lb - ff._8))) :+ IntegerEntry(es(), (iP + 1))) :+ iQ) :+ StringEntry(ev(kY), kZ)) :+ StringEntry(bt(kZ), c)) :+ StringEntry(ey(kY), c)) :+ IntegerEntry(bx(aH, kZ), ff._2)) :+ IntegerEntry(bD(kZ), ao)) :+ IntegerEntry(ex(kZ, c), ao)) :+ StringEntry(hO, makeString([ir[bm], ff._4, jV, ir[bp]], ":"))) :+ StringEntry(dx(), makeString(ff._6, "_"))) :+ StringEntry(dy(dz), makeString(ff._10, "_"))) :+ StringEntry(bO(B), makeString([dz, "L", kZ], "_"))) :+ ScriptTransfer(addressFromStringValue(c), 1, bu)), kZ)
23742152 }
23752153 }
23762154
23772155
2378-func mc (c,lI) = lF("M", 3, "SSSS", c, lI, 0)
2379-
2380-
2381-func md (c,lI) = lF("L", 4, "SMM", c, lI, (cG * 4))
2382-
2383-
2384-func me (c,lI) = lF("XL", 5, "SSSML", c, lI, (cG * 47))
2385-
2386-
2387-func mf (c,lI) = lF("XXL", 6, "LXL", c, lI, (cG * 54))
2388-
2389-
2390-func mg (c,lI) = {
2391- let cE = size(lI)
2392- if ((4 == cE))
2393- then mc(c, lI)
2394- else if ((3 == cE))
2395- then md(c, lI)
2396- else if ((5 == cE))
2397- then me(c, lI)
2398- else if ((2 == cE))
2399- then mf(c, lI)
2156+func lc (c,kI) = kF("M", 3, "SSSS", c, kI, 0)
2157+
2158+
2159+func ld (c,kI) = kF("L", 4, "SMM", c, kI, (cF * 4))
2160+
2161+
2162+func le (c,kI) = kF("XL", 5, "SSSML", c, kI, (cF * 47))
2163+
2164+
2165+func lf (c,kI) = kF("XXL", 6, "LXL", c, kI, (cF * 54))
2166+
2167+
2168+func lg (c,kI) = {
2169+ let cD = size(kI)
2170+ if ((4 == cD))
2171+ then lc(c, kI)
2172+ else if ((3 == cD))
2173+ then ld(c, kI)
2174+ else if ((5 == cD))
2175+ then le(c, kI)
2176+ else if ((2 == cD))
2177+ then lf(c, kI)
24002178 else throw("Unknown merge")
24012179 }
24022180
24032181
2404-func mh (bR) = {
2405- let mi = getString(bN(bR))
2406- if (isDefined(mi))
2182+func lh (bQ) = {
2183+ let li = getString(bM(bQ))
2184+ if (isDefined(li))
24072185 then {
2408- let B = value(mi)
2409- let mj = bP(B)
2410- let cl = split(valueOrElse(getString(mj), aN), "_")
2411- let co = parseIntValue(cl[br])
2412- if (if ((cl[bs] != "D"))
2186+ let B = value(li)
2187+ let lj = bO(B)
2188+ let ck = split(valueOrElse(getString(lj), aM), "_")
2189+ let cn = parseIntValue(ck[bq])
2190+ if (if ((ck[br] != "D"))
24132191 then true
2414- else ((co + aR) > lastBlock.timestamp))
2192+ else ((cn + aQ) > lastBlock.timestamp))
24152193 then nil
24162194 else {
2417- let lx = A(B)
2418- if ((parseIntValue(cl[bt]) > 0))
2195+ let kx = A(B)
2196+ if ((parseIntValue(ck[bs]) > 0))
24192197 then {
2420- let lA = invoke(dj, "sendDeliveryReward", [bR], nil)
2421- if ((lA == lA))
2198+ let kA = invoke(di, "sendDeliveryReward", [bQ], nil)
2199+ if ((kA == kA))
24222200 then nil
24232201 else throw("Strict value is not equal to itself.")
24242202 }
24252203 else (({
2426- let lC = valueOrElse(getInteger(dj, bU), 0)
2427- let lD = invoke(dj, "updateDeliveryLocked", [(lC - aQ)], nil)
2428- if ((lD == lD))
2429- then if ((0 >= getIntegerValue(lx)))
2204+ let kC = valueOrElse(getInteger(di, bT), 0)
2205+ let kD = invoke(di, "updateDeliveryLocked", [(kC - aP)], nil)
2206+ if ((kD == kD))
2207+ then if ((0 >= getIntegerValue(kx)))
24302208 then nil
24312209 else {
2432- let mk = invoke(this, "saveInteger", [U(B), (co + cI)], nil)
2433- if ((mk == mk))
2210+ let lk = invoke(this, "saveInteger", [U(B), (cn + cH)], nil)
2211+ if ((lk == lk))
24342212 then nil
24352213 else throw("Strict value is not equal to itself.")
24362214 }
24372215 else throw("Strict value is not equal to itself.")
2438- } :+ IntegerEntry(lx, getIntegerValue(K(B)))) :+ StringEntry(mj, getStringValue(L(B))))
2216+ } :+ IntegerEntry(kx, getIntegerValue(K(B)))) :+ StringEntry(lj, getStringValue(L(B))))
24392217 }
24402218 }
24412219 else nil
24422220 }
24432221
24442222
2445-func ml (gO) = if (if ((gO.originCaller != di))
2446- then valueOrElse(getBoolean(dO()), false)
2223+func ll (gN) = if (if ((gN.originCaller != dh))
2224+ then valueOrElse(getBoolean(dN()), false)
24472225 else false)
24482226 then throw("Contracts are under maintenance")
24492227 else {
2450- let bR = toString(gO.originCaller)
2451- (mh(bR) :+ StringEntry(dP(bR), toBase58String(gO.transactionId)))
2228+ let bQ = toString(gN.originCaller)
2229+ (lh(bQ) :+ StringEntry(dO(bQ), toBase58String(gN.transactionId)))
24522230 }
24532231
24542232
2455-func mm (gO) = if (if ((gO.originCaller != di))
2456- then valueOrElse(getBoolean(dO()), false)
2233+func lm (gN) = if (if ((gN.originCaller != dh))
2234+ then valueOrElse(getBoolean(dN()), false)
24572235 else false)
24582236 then throw("Contracts are under maintenance")
2459- else [StringEntry(dP(toString(gO.originCaller)), toBase58String(gO.transactionId))]
2460-
2461-
2462-@Callable(gO)
2463-func constructorV1 (mn) = if ((gO.caller != this))
2237+ else [StringEntry(dO(toString(gN.originCaller)), toBase58String(gN.transactionId))]
2238+
2239+
2240+@Callable(gN)
2241+func constructorV1 (ln) = if ((gN.caller != this))
24642242 then throw("Permission denied")
2465- else [StringEntry(dc(), mn)]
2466-
2467-
2468-
2469-@Callable(gO)
2470-func saveInteger (cU,eM) = if ((gO.caller != this))
2243+ else [StringEntry(db(), ln)]
2244+
2245+
2246+
2247+@Callable(gN)
2248+func saveInteger (cT,eL) = if ((gN.caller != this))
24712249 then throw("saveInteger is not public method")
2472- else [IntegerEntry(cU, eM)]
2473-
2474-
2475-
2476-@Callable(gO)
2477-func setBlocked (mo) = if ((gO.caller != this))
2250+ else [IntegerEntry(cT, eL)]
2251+
2252+
2253+
2254+@Callable(gN)
2255+func setBlocked (lo) = if ((gN.caller != this))
24782256 then throw("permission denied")
2479- else [BooleanEntry(dO(), mo)]
2480-
2481-
2482-
2483-@Callable(gO)
2257+ else [BooleanEntry(dN(), lo)]
2258+
2259+
2260+
2261+@Callable(gN)
24842262 func stakeLand () = {
2485- let mp = ml(gO)
2486- if ((size(gO.payments) != 1))
2263+ let lp = ll(gN)
2264+ if ((size(gN.payments) != 1))
24872265 then throw("Exactly one payment required")
24882266 else {
2489- let mq = value(gO.payments[0])
2490- let bv = value(mq.assetId)
2491- let cT = toString(gO.caller)
2492- if ((mq.amount != 1))
2267+ let lq = value(gN.payments[0])
2268+ let bu = value(lq.assetId)
2269+ let cS = toString(gN.caller)
2270+ if ((lq.amount != 1))
24932271 then throw((("NFT " + aF) + " token should be attached as payment"))
24942272 else {
2495- let kv = value(assetInfo(bv))
2496- if ((kv.issuer != this))
2273+ let jv = value(assetInfo(bu))
2274+ if ((jv.issuer != this))
24972275 then throw("Unknown issuer of token")
2498- else if (!(contains(kv.name, aF)))
2276+ else if (!(contains(jv.name, aF)))
24992277 then throw((("Only NFT " + aF) + " tokens are accepted"))
25002278 else {
2501- let mr = drop(kv.name, 4)
2502- let ex = if (contains(mr, "XXL"))
2503- then dropRight(mr, 3)
2504- else if (contains(mr, "XL"))
2505- then dropRight(mr, 2)
2506- else dropRight(mr, 1)
2507- if (!(isDefined(parseInt(ex))))
2508- then throw(("Cannot parse land number from " + kv.name))
2279+ let lr = drop(jv.name, 4)
2280+ let ew = if (contains(lr, "XXL"))
2281+ then dropRight(lr, 3)
2282+ else if (contains(lr, "XL"))
2283+ then dropRight(lr, 2)
2284+ else dropRight(lr, 1)
2285+ if (!(isDefined(parseInt(ew))))
2286+ then throw(("Cannot parse land number from " + jv.name))
25092287 else {
2510- let Q = toBase58String(bv)
2511- let kw = bx(Q)
2512- if (isDefined(getInteger(kw)))
2513- then throw((("NFT " + kv.name) + " is already staked"))
2288+ let Q = toBase58String(bu)
2289+ let jw = bw(Q)
2290+ if (isDefined(getInteger(jw)))
2291+ then throw((("NFT " + jv.name) + " is already staked"))
25142292 else {
2515- let kz = split(kv.description, "_")
2516- let gK = gQ(kz[dq])
2517- let kl = dL(kz[dp])
2518- let jc = (kl / cM)
2519- let ff = gP(gK, jc, 1)
2520- let ms = dz(kz[dr])
2521- let lX = split(valueOrElse(getString(ms), "0_0_0_0_0_0"), "_")
2522- let mt = makeString(gI(lX, gK, jc, 1), "_")
2523- let lT = dB(cT)
2524- let lU = getString(lT)
2525- let lQ = if (isDefined(lU))
2526- then split_51C(value(lU), "_")
2293+ let jz = split(jv.description, "_")
2294+ let gJ = gP(jz[dp])
2295+ let jl = dK(jz[do])
2296+ let ic = (jl / cL)
2297+ let fe = gO(gJ, ic, 1)
2298+ let ls = dy(jz[dq])
2299+ let kX = split(valueOrElse(getString(ls), "0_0_0_0_0_0"), "_")
2300+ let lt = makeString(gH(kX, gJ, ic, 1), "_")
2301+ let kT = dA(cS)
2302+ let kU = getString(kT)
2303+ let kQ = if (isDefined(kU))
2304+ then split_51C(value(kU), "_")
25272305 else nil
2528- if (containsElement(lQ, Q))
2306+ if (containsElement(kQ, Q))
25292307 then throw(("Your staked lands already contain " + Q))
2530- else if ((size(lQ) >= aK))
2531- then throw((("Your already staked max (" + toString(aK)) + ") lands"))
2308+ else if ((size(kQ) >= aJ))
2309+ then throw((("Your already staked max (" + toString(aJ)) + ") lands"))
25322310 else {
2533- let jd = valueOrElse(getInteger(bE(Q)), 0)
2534- let ma = dC(cT)
2535- let mu = valueOrElse(getInteger(ma), 0)
2536- let mv = invoke(dl, "onStakeUnstakeLand", [cT], nil)
2537- $Tuple2(([IntegerEntry(kw, lastBlock.timestamp), IntegerEntry(bA(aF, Q, cT), lastBlock.timestamp), StringEntry(lT, makeString_11C((lQ :+ Q), "_")), IntegerEntry(ma, (mu + kl)), StringEntry(bu(Q), cT), StringEntry(ez(ex), cT), IntegerEntry(ey(Q, cT), jd), StringEntry(dy(), ff), StringEntry(ms, mt)] ++ mp), mv)
2311+ let id = valueOrElse(getInteger(bD(Q)), 0)
2312+ let la = dB(cS)
2313+ let lu = valueOrElse(getInteger(la), 0)
2314+ let lv = invoke(dk, "onStakeUnstakeLand", [cS], nil)
2315+ $Tuple2(([IntegerEntry(jw, lastBlock.timestamp), IntegerEntry(bz(aF, Q, cS), lastBlock.timestamp), StringEntry(kT, makeString_11C((kQ :+ Q), "_")), IntegerEntry(la, (lu + jl)), StringEntry(bt(Q), cS), StringEntry(ey(ew), cS), IntegerEntry(ex(Q, cS), id), StringEntry(dx(), fe), StringEntry(ls, lt)] ++ lp), lv)
25382316 }
25392317 }
25402318 }
25452323
25462324
25472325
2548-@Callable(gO)
2549-func unstakeLand (kr) = {
2550- let mp = ml(gO)
2551- if ((size(gO.payments) != 0))
2326+@Callable(gN)
2327+func unstakeLand (jr) = {
2328+ let lp = ll(gN)
2329+ if ((size(gN.payments) != 0))
25522330 then throw("No payments required")
25532331 else {
2554- let c = toString(gO.caller)
2555- let ge = kp(c, eE, kr)
2556- let Q = ge._2
2557- let kz = ge._3
2558- let lT = dB(c)
2559- let gK = gQ(kz[dq])
2560- let kl = dL(kz[dp])
2561- let jc = (kl / cM)
2562- let ff = gP(gK, jc, -1)
2563- let ms = dz(kz[dr])
2564- let lX = split(valueOrElse(getString(ms), "0_0_0_0_0_0"), "_")
2565- let mt = makeString(gI(lX, gK, jc, -1), "_")
2566- let kW = kM(c, Q, kl, eE)
2567- let lQ = split_51C(valueOrElse(getString(lT), ""), "_")
2568- let dh = indexOf(lQ, Q)
2569- if (!(isDefined(dh)))
2332+ let c = toString(gN.caller)
2333+ let gd = jp(c, eD, jr)
2334+ let Q = gd._2
2335+ let jz = gd._3
2336+ let kT = dA(c)
2337+ let gJ = gP(jz[dp])
2338+ let jl = dK(jz[do])
2339+ let ic = (jl / cL)
2340+ let fe = gO(gJ, ic, -1)
2341+ let ls = dy(jz[dq])
2342+ let kX = split(valueOrElse(getString(ls), "0_0_0_0_0_0"), "_")
2343+ let lt = makeString(gH(kX, gJ, ic, -1), "_")
2344+ let jW = jM(c, Q, jl, eD)
2345+ let kQ = split_51C(valueOrElse(getString(kT), ""), "_")
2346+ let dg = indexOf(kQ, Q)
2347+ if (!(isDefined(dg)))
25702348 then throw(("Your staked lands don't contain " + Q))
25712349 else {
25722350 let aA = lastBlock.timestamp
2573- let mw = valueOrElse(getInteger(dk, bQ(c)), 0)
2574- if ((mw >= aA))
2575- then throw(("Your gWL are taking part in voting, cannot unstake until " + toString(mw)))
2351+ let lw = valueOrElse(getInteger(dj, bP(c)), 0)
2352+ if ((lw >= aA))
2353+ then throw(("Your gWL are taking part in voting, cannot unstake until " + toString(lw)))
25762354 else {
2577- let mx = (valueOrElse(getInteger(dl, b(c)), 0) + cH)
2578- if ((mx > aA))
2579- then throw(("Your staked lands took part in arbitrage, cannot unstake until " + toString(mx)))
2355+ let lx = (valueOrElse(getInteger(dk, b(c)), 0) + cG)
2356+ if ((lx > aA))
2357+ then throw(("Your staked lands took part in arbitrage, cannot unstake until " + toString(lx)))
25802358 else {
2581- let ma = dC(c)
2582- let mb = valueOrElse(getInteger(ma), 0)
2583- let my = if ((kl > mb))
2359+ let la = dB(c)
2360+ let lb = valueOrElse(getInteger(la), 0)
2361+ let ly = if ((jl > lb))
25842362 then 0
2585- else (mb - kl)
2586- let mv = invoke(dl, "onStakeUnstakeLand", [c], nil)
2587- $Tuple2(([ScriptTransfer(gO.caller, 1, fromBase58String(Q)), DeleteEntry(bx(Q)), DeleteEntry(bA(aF, Q, c)), StringEntry(dy(), ff), StringEntry(ms, mt), StringEntry(kW._2, makeString(kW._3, ":")), if ((size(lQ) > 1))
2588- then StringEntry(lT, makeString_11C(removeByIndex(lQ, value(dh)), "_"))
2589- else DeleteEntry(lT), IntegerEntry(ma, my)] ++ mp), mv)
2363+ else (lb - jl)
2364+ let lv = invoke(dk, "onStakeUnstakeLand", [c], nil)
2365+ $Tuple2(([ScriptTransfer(gN.caller, 1, fromBase58String(Q)), DeleteEntry(bw(Q)), DeleteEntry(bz(aF, Q, c)), StringEntry(dx(), fe), StringEntry(ls, lt), StringEntry(jW._2, makeString(jW._3, ":")), if ((size(kQ) > 1))
2366+ then StringEntry(kT, makeString_11C(removeByIndex(kQ, value(dg)), "_"))
2367+ else DeleteEntry(kT), IntegerEntry(la, ly)] ++ lp), lv)
25902368 }
25912369 }
25922370 }
25952373
25962374
25972375
2598-@Callable(gO)
2376+@Callable(gN)
25992377 func stakeDuck () = {
2600- let mp = ml(gO)
2601- if ((size(gO.payments) != 1))
2378+ let lp = ll(gN)
2379+ if ((size(gN.payments) != 1))
26022380 then throw("Exactly one payment required")
26032381 else {
2604- let mq = value(gO.payments[0])
2605- let bv = value(mq.assetId)
2606- let cT = toString(gO.caller)
2607- if ((mq.amount != 1))
2382+ let lq = value(gN.payments[0])
2383+ let bu = value(lq.assetId)
2384+ let cS = toString(gN.caller)
2385+ if ((lq.amount != 1))
26082386 then throw((("NFT " + aG) + " token should be attached as payment"))
26092387 else {
2610- let kv = value(assetInfo(bv))
2611- if (if ((kv.issuer != eb))
2612- then (kv.issuer != ec)
2388+ let jv = value(assetInfo(bu))
2389+ if (if ((jv.issuer != ea))
2390+ then (jv.issuer != eb)
26132391 else false)
26142392 then throw((("Unknown issuer of " + aG) + " token"))
2615- else if (!(contains(kv.name, aG)))
2393+ else if (!(contains(jv.name, aG)))
26162394 then throw((("Only NFT " + aG) + " tokens are accepted"))
26172395 else {
2618- let mz = toBase58String(bv)
2619- let kw = bx(mz)
2620- if (isDefined(getInteger(kw)))
2621- then throw((("NFT " + kv.name) + " is already staked"))
2622- else if (isDefined(getString(bN(cT))))
2623- then throw(("You already staked one duck: " + kv.name))
2396+ let lz = toBase58String(bu)
2397+ let jw = bw(lz)
2398+ if (isDefined(getInteger(jw)))
2399+ then throw((("NFT " + jv.name) + " is already staked"))
2400+ else if (isDefined(getString(bM(cS))))
2401+ then throw(("You already staked one duck: " + jv.name))
26242402 else {
2625- let mj = bP(mz)
2626- let cj = getString(mj)
2627- let iO = bO(mz)
2628- let mA = getString(iO)
2629- let ke = A(mz)
2630- let kf = aj(valueOrElse(getInteger(E(mz)), 0))
2631- let ly = valueOrElse(getInteger(ke), kf)
2632- ([IntegerEntry(kw, lastBlock.timestamp), IntegerEntry(bA(aG, toBase58String(bv), cT), lastBlock.timestamp), StringEntry(bM(mz), cT), StringEntry(bN(cT), mz)] ++ (if (isDefined(cj))
2403+ let lj = bO(lz)
2404+ let ci = getString(lj)
2405+ let hO = bN(lz)
2406+ let lA = getString(hO)
2407+ let je = A(lz)
2408+ let jf = aj(valueOrElse(getInteger(E(lz)), 0))
2409+ let ky = valueOrElse(getInteger(je), jf)
2410+ ([IntegerEntry(jw, lastBlock.timestamp), IntegerEntry(bz(aG, toBase58String(bu), cS), lastBlock.timestamp), StringEntry(bL(lz), cS), StringEntry(bM(cS), lz)] ++ (if (isDefined(ci))
26332411 then nil
2634- else ([StringEntry(mj, aN)] ++ (if (isDefined(mA))
2412+ else ([StringEntry(lj, aM)] ++ (if (isDefined(lA))
26352413 then nil
2636- else (([StringEntry(iO, "0:0_0_0_0_0_0:0_0_0_0_0_0:")] :+ IntegerEntry(ke, ly)) ++ mp)))))
2414+ else (([StringEntry(hO, "0:0_0_0_0_0_0:0_0_0_0_0_0:")] :+ IntegerEntry(je, ky)) ++ lp)))))
26372415 }
26382416 }
26392417 }
26422420
26432421
26442422
2645-@Callable(gO)
2646-func unstakeDuck (mz) = {
2647- let mp = ml(gO)
2648- if ((size(gO.payments) != 0))
2423+@Callable(gN)
2424+func unstakeDuck (lz) = {
2425+ let lp = ll(gN)
2426+ if ((size(gN.payments) != 0))
26492427 then throw("No payments required")
26502428 else {
2651- let bv = fromBase58String(mz)
2652- let cT = toString(gO.caller)
2653- let kv = value(assetInfo(bv))
2654- let kw = bx(mz)
2655- if (!(isDefined(getInteger(kw))))
2656- then throw((("NFT " + kv.name) + " is not staked"))
2657- else if (!(isDefined(getString(bN(cT)))))
2658- then throw((("The duck " + kv.name) + " is not staked"))
2429+ let bu = fromBase58String(lz)
2430+ let cS = toString(gN.caller)
2431+ let jv = value(assetInfo(bu))
2432+ let jw = bw(lz)
2433+ if (!(isDefined(getInteger(jw))))
2434+ then throw((("NFT " + jv.name) + " is not staked"))
2435+ else if (!(isDefined(getString(bM(cS)))))
2436+ then throw((("The duck " + jv.name) + " is not staked"))
26592437 else {
2660- let ky = valueOrErrorMessage(getString(bM(mz)), (("NFT " + kv.name) + " is orphaned"))
2661- if ((ky != cT))
2438+ let jy = valueOrErrorMessage(getString(bL(lz)), (("NFT " + jv.name) + " is orphaned"))
2439+ if ((jy != cS))
26622440 then throw("Staked NFT is not yours")
2663- else if (lt(mz))
2441+ else if (kt(lz))
26642442 then throw("unstakeDuck_checkTournament")
2665- else if (lu(mz))
2443+ else if (ku(lz))
26662444 then throw("unstakeDuck_checkDelivery")
26672445 else {
2668- let ke = A(mz)
2669- let kf = aj(valueOrElse(getInteger(E(mz)), 0))
2670- let av = valueOrElse(getInteger(ke), kf)
2671- if ((kf > av))
2672- then throw((("Please heal your duck to " + toString(kf)) + "hp before unstaking"))
2673- else ([ScriptTransfer(gO.caller, 1, bv), DeleteEntry(kw), DeleteEntry(ke), DeleteEntry(bP(mz)), DeleteEntry(bM(mz)), DeleteEntry(bA(aG, mz, cT)), DeleteEntry(bN(cT))] ++ mp)
2446+ let je = A(lz)
2447+ let jf = aj(valueOrElse(getInteger(E(lz)), 0))
2448+ let av = valueOrElse(getInteger(je), jf)
2449+ if ((jf > av))
2450+ then throw((("Please heal your duck to " + toString(jf)) + "hp before unstaking"))
2451+ else ([ScriptTransfer(gN.caller, 1, bu), DeleteEntry(jw), DeleteEntry(je), DeleteEntry(bO(lz)), DeleteEntry(bL(lz)), DeleteEntry(bz(aG, lz, cS)), DeleteEntry(bM(cS))] ++ lp)
26742452 }
26752453 }
26762454 }
26782456
26792457
26802458
2681-@Callable(gO)
2682-func claimRes (eM,mB) = {
2683- let mp = ml(gO)
2684- if ((size(gO.payments) != 0))
2459+@Callable(gN)
2460+func claimRes (eL,lB) = {
2461+ let lp = ll(gN)
2462+ if ((size(gN.payments) != 0))
26852463 then throw("No payments required")
26862464 else {
2687- let c = toString(gO.originCaller)
2688- let fn = kA(c, eM, eE, mB)
2689- let B = valueOrErrorMessage(getString(bN(c)), "You don't have a duck staked")
2690- $Tuple2(((((fn._1 ++ li(B, fraction(X, eM, cL))._1) :+ StringEntry(fn._2, makeString(fn._3, ":"))) :+ StringEntry(fn._4, makeString(fn._5, ":"))) ++ mp), fn._3[bo])
2691- }
2692- }
2693-
2694-
2695-
2696-@Callable(gO)
2697-func claimResToWH (eM,mB) = {
2698- let mp = ml(gO)
2699- if ((size(gO.payments) != 0))
2465+ let c = toString(gN.originCaller)
2466+ let fm = jA(c, eL, eD, lB)
2467+ let B = valueOrErrorMessage(getString(bM(c)), "You don't have a duck staked")
2468+ $Tuple2(((((fm._1 ++ ki(B, fraction(X, eL, cK))._1) :+ StringEntry(fm._2, makeString(fm._3, ":"))) :+ StringEntry(fm._4, makeString(fm._5, ":"))) ++ lp), fm._3[bn])
2469+ }
2470+ }
2471+
2472+
2473+
2474+@Callable(gN)
2475+func claimResToWH (eL,lB) = {
2476+ let lp = ll(gN)
2477+ if ((size(gN.payments) != 0))
27002478 then throw("No payments required")
27012479 else {
2702- let c = toString(gO.originCaller)
2703- let fn = kA(c, eM, eD, mB)
2704- $Tuple2(((((fn._1 ++ lj(c, fraction(X, eM, cL))._1) :+ StringEntry(fn._2, makeString(fn._3, ":"))) :+ StringEntry(fn._4, makeString(fn._5, ":"))) ++ mp), fn._5[bf])
2705- }
2706- }
2707-
2708-
2709-
2710-@Callable(gO)
2711-func flight (jT,jU) = {
2712- let mp = mm(gO)
2713- if ((size(gO.payments) != 0))
2480+ let c = toString(gN.originCaller)
2481+ let fm = jA(c, eL, eC, lB)
2482+ $Tuple2(((((fm._1 ++ kj(c, fraction(X, eL, cK))._1) :+ StringEntry(fm._2, makeString(fm._3, ":"))) :+ StringEntry(fm._4, makeString(fm._5, ":"))) ++ lp), fm._5[be])
2483+ }
2484+ }
2485+
2486+
2487+
2488+@Callable(gN)
2489+func flight (iT,iU) = {
2490+ let lp = lm(gN)
2491+ if ((size(gN.payments) != 0))
27142492 then throw("No payments required")
27152493 else {
2716- let bR = toString(gO.caller)
2717- let iD = jS(bR, jT, jU)
2718- let jY = iD._1
2719- let B = iD._2
2720- let mj = bP(B)
2721- let kt = valueOrElse(getString(mj), aN)
2722- let ka = iD._4
2723- if ((ka == kt))
2494+ let bQ = toString(gN.caller)
2495+ let hs = iS(bQ, iT, iU)
2496+ let iY = hs._1
2497+ let B = hs._2
2498+ let lj = bO(B)
2499+ let jt = valueOrElse(getString(lj), aM)
2500+ let ja = hs._4
2501+ if ((ja == jt))
27242502 then throw("You can't fly to the same location")
27252503 else {
2726- let cx = split(ka, "_")
2727- let mC = (cx[bs] == "T")
2728- let mD = (cx[bs] == "D")
2729- let gB = G(B)
2730- let mE = valueOrElse(getString(gB), ",;,_,;,_,;,_,;,_,;,_,;,")
2731- let mF = fo(mE, iD._5)
2732- let mG = mF._1
2733- let mH = mF._2
2734- let mI = if (!(cs(dm, kt)))
2735- then if (!(cq(ka)))
2736- then cv(kt, ka, 5)
2737- else if ((jY > 0))
2738- then $Tuple2(ka, jY)
2739- else $Tuple2(kt, 0)
2740- else if (ci(dm, kt))
2741- then if (!(ci(dm, ka)))
2504+ let cw = split(ja, "_")
2505+ let lC = (cw[br] == "T")
2506+ let lD = (cw[br] == "D")
2507+ let gA = G(B)
2508+ let lE = valueOrElse(getString(gA), ",;,_,;,_,;,_,;,_,;,_,;,")
2509+ let lF = fn(lE, hs._5)
2510+ let lG = lF._1
2511+ let lH = lF._2
2512+ let lI = if (!(cr(dl, jt)))
2513+ then if (!(cp(ja)))
2514+ then cu(jt, ja, 5)
2515+ else if ((iY > 0))
2516+ then $Tuple2(ja, iY)
2517+ else $Tuple2(jt, 0)
2518+ else if (ch(dl, jt))
2519+ then if (!(ch(dl, ja)))
27422520 then throw("Your duck is taking part in the tournament")
27432521 else {
2744- let lw = parseIntValue(cx[bt])
2745- let mJ = split(kt, "_")
2746- let ck = valueOrElse(getInteger(dm, bV), 0)
2747- if ((lw != (parseIntValue(mJ[bt]) + 1)))
2748- then cv(kt, ka, 7)
2749- else if ((jY > 0))
2522+ let kw = parseIntValue(cw[bs])
2523+ let lJ = split(jt, "_")
2524+ let cj = valueOrElse(getInteger(dl, bU), 0)
2525+ if ((kw != (parseIntValue(lJ[bs]) + 1)))
2526+ then cu(jt, ja, 7)
2527+ else if ((iY > 0))
27502528 then {
2751- let mK = valueOrElse(getInteger(dm, bZ(ck, B)), 0)
2752- let mL = if ((lw > mK))
2753- then invoke(dm, "saveDuckResult", [B, lw], nil)
2529+ let lK = valueOrElse(getInteger(dl, bY(cj, B)), 0)
2530+ let lL = if ((kw > lK))
2531+ then invoke(dl, "saveDuckResult", [B, kw], nil)
27542532 else unit
2755- if ((mL == mL))
2756- then $Tuple2(ka, jY)
2533+ if ((lL == lL))
2534+ then $Tuple2(ja, iY)
27572535 else throw("Strict value is not equal to itself.")
27582536 }
2759- else $Tuple2(kt, 0)
2537+ else $Tuple2(jt, 0)
27602538 }
2761- else if (!(cn(kt)))
2539+ else if (!(cm(jt)))
27622540 then {
2763- let mM = dD(invoke(this, "autoExitDelivery", [B, jY, if (mD)
2541+ let lM = dC(invoke(this, "autoExitDelivery", [B, iY, if (lD)
27642542 then "10"
27652543 else "11", 0], nil))
2766- if ((mM == mM))
2767- then if (mD)
2768- then $Tuple2(mM, jY)
2769- else if ((jY > 0))
2770- then $Tuple2(ka, jY)
2771- else $Tuple2(mM, 0)
2544+ if ((lM == lM))
2545+ then if (lD)
2546+ then $Tuple2(lM, iY)
2547+ else if ((iY > 0))
2548+ then $Tuple2(ja, iY)
2549+ else $Tuple2(lM, 0)
27722550 else throw("Strict value is not equal to itself.")
27732551 }
2774- else if (!(mD))
2552+ else if (!(lD))
27752553 then throw("Your duck is taking part in delivery")
2776- else if (!(cn(ka)))
2777- then cv(kt, ka, 13)
2554+ else if (!(cm(ja)))
2555+ then cu(jt, ja, 13)
27782556 else {
2779- let lw = parseIntValue(cx[bt])
2780- let mJ = split(kt, "_")
2781- if ((lw != (parseIntValue(mJ[bt]) + 1)))
2782- then cv(kt, ka, 14)
2783- else if (if ((jY > 0))
2784- then (1 > lw)
2557+ let kw = parseIntValue(cw[bs])
2558+ let lJ = split(jt, "_")
2559+ if ((kw != (parseIntValue(lJ[bs]) + 1)))
2560+ then cu(jt, ja, 14)
2561+ else if (if ((iY > 0))
2562+ then (1 > kw)
27852563 else false)
2786- then $Tuple2(ka, jY)
2564+ then $Tuple2(ja, iY)
27872565 else {
2788- let mM = dD(invoke(this, "autoExitDelivery", [B, jY, "15-17", lw], nil))
2789- if ((mM == mM))
2790- then $Tuple2(mM, jY)
2566+ let lM = dC(invoke(this, "autoExitDelivery", [B, iY, "15-17", kw], nil))
2567+ if ((lM == lM))
2568+ then $Tuple2(lM, iY)
27912569 else throw("Strict value is not equal to itself.")
27922570 }
27932571 }
2794- let mN = mI._1
2795- let mO = mI._2
2796- $Tuple2(((([StringEntry(mj, mN), StringEntry(gB, mG), IntegerEntry(A(B), mO)] ++ mp) ++ (if (mH)
2572+ let lN = lI._1
2573+ let lO = lI._2
2574+ $Tuple2(((([StringEntry(lj, lN), StringEntry(gA, lG), IntegerEntry(A(B), lO)] ++ lp) ++ (if (lH)
27972575 then [StringEntry(M(B), "0_0_0_0_0")]
2798- else nil)) ++ li(B, if ((jY > 0))
2576+ else nil)) ++ ki(B, if ((iY > 0))
27992577 then Y
2800- else Z)._1), iD._3)
2578+ else Z)._1), hs._3)
28012579 }
28022580 }
28032581 }
28042582
28052583
28062584
2807-@Callable(gO)
2808-func heal (mP,mQ,mR) = {
2809- let mp = ml(gO)
2810- if (if (if ((0 > mP))
2585+@Callable(gN)
2586+func heal (lP,lQ,lR) = {
2587+ let lp = ll(gN)
2588+ if (if (if ((0 > lP))
28112589 then true
2812- else (0 > mQ))
2590+ else (0 > lQ))
28132591 then true
2814- else (0 > mR))
2592+ else (0 > lR))
28152593 then throw("Quantity cannot be negative")
28162594 else {
2817- let B = valueOrErrorMessage(getString(bN(toString(gO.caller))), "You don't have a duck staked")
2818- if (lt(B))
2595+ let B = valueOrErrorMessage(getString(bM(toString(gN.caller))), "You don't have a duck staked")
2596+ if (kt(B))
28192597 then throw("heal_checkTournament")
2820- else if (lu(B))
2598+ else if (ku(B))
28212599 then throw("heal_checkDelivery")
28222600 else {
2823- let mS = [mP, mQ, mR]
2824- let ke = A(B)
2825- let kf = aj(valueOrElse(getInteger(E(B)), 0))
2826- let mT = valueOrElse(getInteger(ke), kf)
2827- if ((mT >= kf))
2828- then throw((("HP should be < " + toString(kf)) + " to heal"))
2601+ let lS = [lP, lQ, lR]
2602+ let je = A(B)
2603+ let jf = aj(valueOrElse(getInteger(E(B)), 0))
2604+ let lT = valueOrElse(getInteger(je), jf)
2605+ if ((lT >= jf))
2606+ then throw((("HP should be < " + toString(jf)) + " to heal"))
28292607 else {
2830- let iO = bO(B)
2831- let jr = iN(iO)
2832- let mU = if ((jr[bq] == ""))
2608+ let hO = bN(B)
2609+ let ir = hN(hO)
2610+ let lU = if ((ir[bp] == ""))
28332611 then nil
2834- else split_4C(jr[bq], "_")
2835- func mV (eV,cu) = {
2836- let dH = eV._2
2837- let hk = if ((size(mU) > dH))
2838- then parseIntValue(mU[dH])
2612+ else split_4C(ir[bp], "_")
2613+ func lV (eU,ct) = {
2614+ let dG = eU._2
2615+ let hj = if ((size(lU) > dG))
2616+ then parseIntValue(lU[dG])
28392617 else 0
2840- if ((3 > dH))
2618+ if ((3 > dG))
28412619 then {
2842- let mW = mS[dH]
2843- if ((mW > hk))
2844- then throw(((("You have only " + toString(hk)) + " of ") + aU[dH]))
2845- else $Tuple3((eV._1 :+ toString((hk - mW))), (dH + 1), (eV._3 + (parseIntValue(split(cu, "_")[ba]) * mW)))
2620+ let lW = lS[dG]
2621+ if ((lW > hj))
2622+ then throw(((("You have only " + toString(hj)) + " of ") + aT[dG]))
2623+ else $Tuple3((eU._1 :+ toString((hj - lW))), (dG + 1), (eU._3 + (parseIntValue(split(ct, "_")[aZ]) * lW)))
28462624 }
2847- else $Tuple3((eV._1 :+ toString(hk)), (dH + 1), eV._3)
2625+ else $Tuple3((eU._1 :+ toString(hj)), (dG + 1), eU._3)
28482626 }
28492627
2850- let fn = {
2851- let eX = aY
2852- let eY = size(eX)
2853- let eZ = $Tuple3(nil, 0, 0)
2854- func fa (fb,fc) = if ((fc >= eY))
2855- then fb
2856- else mV(fb, eX[fc])
2857-
2858- func fd (fb,fc) = if ((fc >= eY))
2859- then fb
2628+ let fm = {
2629+ let eW = aX
2630+ let eX = size(eW)
2631+ let eY = $Tuple3(nil, 0, 0)
2632+ func eZ (fa,fb) = if ((fb >= eX))
2633+ then fa
2634+ else lV(fa, eW[fb])
2635+
2636+ func fc (fa,fb) = if ((fb >= eX))
2637+ then fa
28602638 else throw("List size exceeds 50")
28612639
2862- fd(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(eZ, 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)
2640+ fc(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eY, 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)
28632641 }
2864- let mX = min([kf, (mT + fn._3)])
2865- $Tuple2((([IntegerEntry(ke, mX), StringEntry(iO, makeString_2C([jr[bn], jr[bo], jr[bp], makeString(fn._1, "_")], ":"))] ++ mp) ++ li(B, (ag * ((mP + mQ) + mR)))._1), mX)
2642+ let lX = min([jf, (lT + fm._3)])
2643+ $Tuple2((([IntegerEntry(je, lX), StringEntry(hO, makeString_2C([ir[bm], ir[bn], ir[bo], makeString(fm._1, "_")], ":"))] ++ lp) ++ ki(B, (ag * ((lP + lQ) + lR)))._1), lX)
28662644 }
28672645 }
28682646 }
28702648
28712649
28722650
2873-@Callable(gO)
2651+@Callable(gN)
28742652 func healES () = {
2875- let mp = ml(gO)
2876- if ((size(gO.payments) != 1))
2653+ let lp = ll(gN)
2654+ if ((size(gN.payments) != 1))
28772655 then throw("Exactly one payment required")
28782656 else {
2879- let mq = value(gO.payments[0])
2880- if ((mq.assetId != cD))
2657+ let lq = value(gN.payments[0])
2658+ if ((lq.assetId != cC))
28812659 then throw("Allowed USDT payment only!")
28822660 else {
2883- let B = valueOrErrorMessage(getString(bN(toString(gO.caller))), "You don't have a duck staked")
2884- if (lt(B))
2661+ let B = valueOrErrorMessage(getString(bM(toString(gN.caller))), "You don't have a duck staked")
2662+ if (kt(B))
28852663 then throw("healES_checkTournament")
2886- else if (lu(B))
2664+ else if (ku(B))
28872665 then throw("healES_checkDelivery")
28882666 else {
2889- let ke = A(B)
2890- let kf = aj(valueOrElse(getInteger(E(B)), 0))
2891- let mT = valueOrElse(getInteger(ke), kf)
2892- if ((mT > 0))
2667+ let je = A(B)
2668+ let jf = aj(valueOrElse(getInteger(E(B)), 0))
2669+ let lT = valueOrElse(getInteger(je), jf)
2670+ if ((lT > 0))
28932671 then throw("HP should be 0 to call Emergency Service")
28942672 else {
2895- let iO = bO(B)
2896- let jr = iN(iO)
2897- let mU = if ((jr[bq] == ""))
2673+ let hO = bN(B)
2674+ let ir = hN(hO)
2675+ let lU = if ((ir[bp] == ""))
28982676 then nil
2899- else split_4C(jr[bq], "_")
2900- let mY = if ((size(mU) > 0))
2901- then parseIntValue(mU[0])
2677+ else split_4C(ir[bp], "_")
2678+ let lY = if ((size(lU) > 0))
2679+ then parseIntValue(lU[0])
29022680 else 0
2903- let mZ = if ((size(mU) > 1))
2904- then parseIntValue(mU[1])
2681+ let lZ = if ((size(lU) > 1))
2682+ then parseIntValue(lU[1])
29052683 else 0
2906- let na = if ((size(mU) > 2))
2907- then parseIntValue(mU[2])
2684+ let ma = if ((size(lU) > 2))
2685+ then parseIntValue(lU[2])
29082686 else 0
2909- if (if (if ((mY > 0))
2687+ if (if (if ((lY > 0))
29102688 then true
2911- else (mZ > 0))
2689+ else (lZ > 0))
29122690 then true
2913- else (na > 0))
2691+ else (ma > 0))
29142692 then throw("You have to use own Medical Kit")
29152693 else {
2916- let nb = getString(dj, bS())
2917- let nc = if (isDefined(nb))
2918- then split_4C(value(nb), "_")
2694+ let mb = getString(di, bR())
2695+ let mc = if (isDefined(mb))
2696+ then split_4C(value(mb), "_")
29192697 else nil
2920- let nd = if ((size(nc) > 0))
2921- then parseIntValue(nc[0])
2698+ let md = if ((size(mc) > 0))
2699+ then parseIntValue(mc[0])
29222700 else 0
2923- if ((0 >= nd))
2701+ if ((0 >= md))
29242702 then throw("There are no Medical Kits L1 at Emergency Service storage")
29252703 else {
2926- let mX = (mT + parseIntValue(split(aY[0], "_")[ba]))
2927- let ne = makeString([toString((nd - 1)), removeByIndex(nc, 0)], "_")
2928- let cu = split(aY[0], "_")
2929- let nf = ct(cu)
2930- let ng = fraction((nf * aP), aO, (cL * bd))
2931- if ((mq.amount != ng))
2932- then throw(("Payment attached should be " + toString(ng)))
2704+ let lX = (lT + parseIntValue(split(aX[0], "_")[aZ]))
2705+ let me = makeString([toString((md - 1)), removeByIndex(mc, 0)], "_")
2706+ let ct = split(aX[0], "_")
2707+ let mf = cs(ct)
2708+ let mg = fraction((mf * aO), aN, (cK * bc))
2709+ if ((lq.amount != mg))
2710+ then throw(("Payment attached should be " + toString(mg)))
29332711 else {
2934- let fn = dD(invoke(dj, "updateEsStorage", [ne], [AttachedPayment(cD, ng)]))
2935- $Tuple2(((mp :+ IntegerEntry(ke, mX)) ++ li(B, aa)._1), fn)
2712+ let fm = dC(invoke(di, "updateEsStorage", [me], [AttachedPayment(cC, mg)]))
2713+ $Tuple2(((lp :+ IntegerEntry(je, lX)) ++ ki(B, aa)._1), fm)
29362714 }
29372715 }
29382716 }
29442722
29452723
29462724
2947-@Callable(gO)
2948-func updateBackpack (B,nh) = if ((gO.caller != dj))
2725+@Callable(gN)
2726+func updateBackpack (B,mh) = if ((gN.caller != di))
29492727 then throw("permission denied")
2950- else $Tuple2([StringEntry(bO(B), nh)], nh)
2951-
2952-
2953-
2954-@Callable(gO)
2728+ else $Tuple2([StringEntry(bN(B), mh)], mh)
2729+
2730+
2731+
2732+@Callable(gN)
29552733 func commitForRandom () = {
2956- let mp = ml(gO)
2957- let ni = (height + dw)
2958- let c = toString(gO.caller)
2959- $Tuple2(([IntegerEntry(dx(c), ni)] ++ mp), ni)
2960- }
2961-
2962-
2963-
2964-@Callable(gO)
2734+ let lp = ll(gN)
2735+ let mi = (height + dv)
2736+ let c = toString(gN.caller)
2737+ $Tuple2(([IntegerEntry(dw(c), mi)] ++ lp), mi)
2738+ }
2739+
2740+
2741+
2742+@Callable(gN)
29652743 func buySLand () = {
2966- let mp = ml(gO)
2967- if ((size(gO.payments) != 1))
2744+ let lp = ll(gN)
2745+ if ((size(gN.payments) != 1))
29682746 then throw("Exactly one payment required")
29692747 else {
2970- let mq = value(gO.payments[0])
2971- if ((mq.assetId != cD))
2748+ let lq = value(gN.payments[0])
2749+ if ((lq.assetId != cC))
29722750 then throw("Allowed USDT payment only!")
2973- else if ((mq.amount != ek))
2751+ else if ((lq.amount != ej))
2752+ then throw(("Payment attached should be " + toString(ej)))
2753+ else {
2754+ let fm = iL(gN.caller, gN.transactionId)
2755+ let mj = dF(invoke(dm, "burnAcres", [ek], nil))
2756+ $Tuple2((((fm._1 :+ ScriptTransfer(di, lq.amount, cC)) ++ kj(toString(gN.caller), ac)._1) ++ lp), $Tuple2(fm._2._1, mj))
2757+ }
2758+ }
2759+ }
2760+
2761+
2762+
2763+@Callable(gN)
2764+func expedition (iT,iU) = {
2765+ let lp = ll(gN)
2766+ if ((size(gN.payments) != 0))
2767+ then throw("No payments required")
2768+ else {
2769+ let bQ = toString(gN.caller)
2770+ let hs = iS(bQ, iT, iU)
2771+ let B = hs._2
2772+ let je = A(B)
2773+ let hO = bN(B)
2774+ let ir = hN(hO)
2775+ let jT = split(ir[bo], "_")
2776+ let jV = makeString(fg(true, jT, ei), "_")
2777+ let gA = G(B)
2778+ let lE = valueOrElse(getString(gA), ",;,_,;,_,;,_,;,_,;,_,;,")
2779+ let mk = fn(lE, hs._5)
2780+ let lG = mk._1
2781+ let lH = mk._2
2782+ let ml = iL(gN.caller, gN.transactionId)
2783+ let iR = ml._2._1
2784+ let fm = if ((0 >= hs._1))
2785+ then $Tuple3([IntegerEntry(je, 0), StringEntry(gA, lG)], "", 0)
2786+ else $Tuple3((ml._1 ++ (if (lH)
2787+ then [StringEntry(M(B), "0_0_0_0_0")]
2788+ else ((((nil :+ StringEntry(bO(B), makeString([ml._2._2, "L", iR], "_"))) :+ IntegerEntry(je, hs._1)) :+ StringEntry(gA, lG)) :+ StringEntry(hO, makeString([ir[bm], ir[bn], jV, ir[bp]], ":"))))), iR, hs._3)
2789+ if (kt(B))
2790+ then throw("expedition_checkTournament")
2791+ else if (ku(B))
2792+ then throw("expedition_checkDelivery")
2793+ else {
2794+ let mj = dF(invoke(dm, "burnAcres", [ek], nil))
2795+ $Tuple2(((fm._1 ++ ki(B, ac)._1) ++ lp), $Tuple3(fm._2, fm._3, mj))
2796+ }
2797+ }
2798+ }
2799+
2800+
2801+
2802+@Callable(gN)
2803+func buySLandForAcres () = {
2804+ let lp = ll(gN)
2805+ if ((size(gN.payments) != 1))
2806+ then throw("exactly 1 payment must be attached")
2807+ else {
2808+ let lq = gN.payments[0]
2809+ let ft = lq.amount
2810+ if (if (!(isDefined(lq.assetId)))
2811+ then true
2812+ else (value(lq.assetId) != du))
2813+ then throw("ACRES payments only!")
2814+ else if ((ft != ek))
29742815 then throw(("Payment attached should be " + toString(ek)))
29752816 else {
2976- let fn = jL(gO.caller, gO.transactionId)
2977- let nj = dG(invoke(dn, "burnAcres", [el], nil))
2978- $Tuple2((((fn._1 :+ ScriptTransfer(dj, mq.amount, cD)) ++ lj(toString(gO.caller), ac)._1) ++ mp), $Tuple2(fn._2._1, nj))
2817+ let fm = iL(gN.caller, gN.transactionId)
2818+ let mj = dF(invoke(dm, "burnAcres", [ek], [AttachedPayment(du, ft)]))
2819+ $Tuple2(((fm._1 ++ kj(toString(gN.caller), ac)._1) ++ lp), $Tuple2(fm._2._1, mj))
29792820 }
29802821 }
29812822 }
29822823
29832824
29842825
2985-@Callable(gO)
2986-func expedition (jT,jU) = {
2987- let mp = ml(gO)
2988- if ((size(gO.payments) != 0))
2826+@Callable(gN)
2827+func upgradeInfra (Q) = {
2828+ let lp = ll(gN)
2829+ if ((size(gN.payments) != 0))
29892830 then throw("No payments required")
29902831 else {
2991- let bR = toString(gO.caller)
2992- let iD = jS(bR, jT, jU)
2993- let B = iD._2
2994- let ke = A(B)
2995- let iO = bO(B)
2996- let jr = iN(iO)
2997- let kT = split(jr[bp], "_")
2998- let kV = makeString(fh(true, kT, ej), "_")
2999- let gB = G(B)
3000- let mE = valueOrElse(getString(gB), ",;,_,;,_,;,_,;,_,;,_,;,")
3001- let nk = fo(mE, iD._5)
3002- let mG = nk._1
3003- let mH = nk._2
3004- let nl = jL(gO.caller, gO.transactionId)
3005- let jR = nl._2._1
3006- let fn = if ((0 >= iD._1))
3007- then $Tuple3([IntegerEntry(ke, 0), StringEntry(gB, mG)], "", 0)
3008- else $Tuple3((nl._1 ++ (if (mH)
3009- then [StringEntry(M(B), "0_0_0_0_0")]
3010- else ((((nil :+ StringEntry(bP(B), makeString([nl._2._2, "L", jR], "_"))) :+ IntegerEntry(ke, iD._1)) :+ StringEntry(gB, mG)) :+ StringEntry(iO, makeString([jr[bn], jr[bo], kV, jr[bq]], ":"))))), jR, iD._3)
3011- if (lt(B))
3012- then throw("expedition_checkTournament")
3013- else if (lu(B))
3014- then throw("expedition_checkDelivery")
3015- else {
3016- let nj = dG(invoke(dn, "burnAcres", [el], nil))
3017- $Tuple2(((fn._1 ++ li(B, ac)._1) ++ mp), $Tuple3(fn._2, fn._3, nj))
3018- }
3019- }
3020- }
3021-
3022-
3023-
3024-@Callable(gO)
3025-func buySLandForAcres () = {
3026- let mp = ml(gO)
3027- if ((size(gO.payments) != 1))
3028- then throw("exactly 1 payment must be attached")
3029- else {
3030- let mq = gO.payments[0]
3031- let fu = mq.amount
3032- if (if (!(isDefined(mq.assetId)))
3033- then true
3034- else (value(mq.assetId) != dv))
3035- then throw("ACRES payments only!")
3036- else if ((fu != el))
3037- then throw(("Payment attached should be " + toString(el)))
3038- else {
3039- let fn = jL(gO.caller, gO.transactionId)
3040- let nj = dG(invoke(dn, "burnAcres", [el], [AttachedPayment(dv, fu)]))
3041- $Tuple2(((fn._1 ++ lj(toString(gO.caller), ac)._1) ++ mp), $Tuple2(fn._2._1, nj))
3042- }
3043- }
3044- }
3045-
3046-
3047-
3048-@Callable(gO)
3049-func upgradeInfra (Q) = {
3050- let mp = ml(gO)
3051- if ((size(gO.payments) != 0))
2832+ let fm = jN(true, gN.caller, 0, Q)
2833+ let B = valueOrErrorMessage(getString(bM(toString(gN.caller))), "You don't have a duck staked")
2834+ $Tuple2(((fm._1 ++ lp) ++ ki(B, fraction(ad, fm._3, cK))._1), fm._2)
2835+ }
2836+ }
2837+
2838+
2839+
2840+@Callable(gN)
2841+func activateArtifact (mm,mn) = {
2842+ let lp = ll(gN)
2843+ if ((size(gN.payments) != 0))
30522844 then throw("No payments required")
30532845 else {
3054- let fn = kN(true, gO.caller, 0, Q)
3055- let B = valueOrErrorMessage(getString(bN(toString(gO.caller))), "You don't have a duck staked")
3056- $Tuple2(((fn._1 ++ mp) ++ li(B, fraction(ad, fn._3, cL))._1), fn._2)
3057- }
3058- }
3059-
3060-
3061-
3062-@Callable(gO)
3063-func activateArtifact (nm,nn) = {
3064- let mp = ml(gO)
3065- if ((size(gO.payments) != 0))
2846+ let c = toString(gN.caller)
2847+ let fm = {
2848+ let cD = mm
2849+ if (("PRESALE" == cD))
2850+ then kr(c, mn)
2851+ else if (("ONBOARD" == cD))
2852+ then kk(c)
2853+ else throw("Unknown artifact")
2854+ }
2855+ (fm ++ lp)
2856+ }
2857+ }
2858+
2859+
2860+
2861+@Callable(gN)
2862+func mergeLands (kI) = {
2863+ let lp = ll(gN)
2864+ if ((size(gN.payments) != 0))
30662865 then throw("No payments required")
30672866 else {
3068- let c = toString(gO.caller)
3069- let fn = {
3070- let cE = nm
3071- if (("PRESALE" == cE))
3072- then lr(c, nn)
3073- else if (("ONBOARD" == cE))
3074- then lk(c)
3075- else throw("Unknown artifact")
3076- }
3077- (fn ++ mp)
3078- }
3079- }
3080-
3081-
3082-
3083-@Callable(gO)
3084-func mergeLands (lI) = {
3085- let mp = ml(gO)
3086- if ((size(gO.payments) != 0))
2867+ let fm = lg(toString(gN.caller), kI)
2868+ $Tuple2(((fm._1 ++ lp) ++ kj(toString(gN.caller), ae)._1), fm._2)
2869+ }
2870+ }
2871+
2872+
2873+
2874+@Callable(gN)
2875+func cargoExchange (mo,Q) = {
2876+ let lp = ll(gN)
2877+ if ((size(gN.payments) != 0))
30872878 then throw("No payments required")
30882879 else {
3089- let fn = mg(toString(gO.caller), lI)
3090- $Tuple2(((fn._1 ++ mp) ++ lj(toString(gO.caller), ae)._1), fn._2)
3091- }
3092- }
3093-
3094-
3095-
3096-@Callable(gO)
3097-func cargoExchange (no,Q) = {
3098- let mp = ml(gO)
3099- if ((size(gO.payments) != 0))
3100- then throw("No payments required")
3101- else {
3102- let jq = split_4C(no, ":")
3103- let c = toString(gO.originCaller)
3104- let kv = value(assetInfo(fromBase58String(Q)))
3105- let kw = bx(Q)
3106- if (!(isDefined(getInteger(kw))))
3107- then throw((kv.name + " is not staked"))
2880+ let iq = split_4C(mo, ":")
2881+ let c = toString(gN.originCaller)
2882+ let jv = value(assetInfo(fromBase58String(Q)))
2883+ let jw = bw(Q)
2884+ if (!(isDefined(getInteger(jw))))
2885+ then throw((jv.name + " is not staked"))
31082886 else {
3109- let ky = valueOrErrorMessage(getString(bu(Q)), (("NFT " + kv.name) + " is orphaned"))
3110- if ((ky != c))
2887+ let jy = valueOrErrorMessage(getString(bt(Q)), (("NFT " + jv.name) + " is orphaned"))
2888+ if ((jy != c))
31112889 then throw((aF + " is not yours"))
31122890 else {
3113- let jc = (dL(split(kv.description, "_")[dp]) / cM)
3114- let jd = valueOrElse(getInteger(bE(Q)), 0)
3115- let B = valueOrErrorMessage(getString(bN(c)), "You don't have a duck staked")
3116- let kt = valueOrElse(getString(bP(B)), aN)
3117- let cl = split(value(kt), "_")
3118- if ((cl[bs] != "L"))
3119- then throw((("Duck location type is " + cl[bs]) + ", but should be L"))
3120- else if ((cl[bt] != Q))
2891+ let ic = (dK(split(jv.description, "_")[do]) / cL)
2892+ let id = valueOrElse(getInteger(bD(Q)), 0)
2893+ let B = valueOrErrorMessage(getString(bM(c)), "You don't have a duck staked")
2894+ let jt = valueOrElse(getString(bO(B)), aM)
2895+ let ck = split(value(jt), "_")
2896+ if ((ck[br] != "L"))
2897+ then throw((("Duck location type is " + ck[br]) + ", but should be L"))
2898+ else if ((ck[bs] != Q))
31212899 then throw(("Duck should be on the land " + Q))
31222900 else {
3123- let jb = bD(Q)
3124- let iS = ja(jb, jc, jd)
3125- let iO = bO(B)
3126- let jr = iN(iO)
3127- let fn = jp(jq, iS, jr)
3128- let jj = split(iS[bi], "_")
3129- let kK = (parseIntValue(jj[bk]) + fn._7)
3130- let kL = (parseIntValue(jj[bl]) - fn._7)
3131- ([StringEntry(iO, makeString_2C([jr[bn], fn._4, fn._5, fn._6], ":")), StringEntry(jb, makeString_2C([iS[be], fn._1, fn._2, fn._3, makeString([jj[bj], toString(kK), toString(kL), jj[bm]], "_")], ":"))] ++ mp)
2901+ let ib = bC(Q)
2902+ let hS = ia(ib, ic, id)
2903+ let hO = bN(B)
2904+ let ir = hN(hO)
2905+ let fm = ip(iq, hS, ir)
2906+ let ij = split(hS[bh], "_")
2907+ let jK = (parseIntValue(ij[bj]) + fm._7)
2908+ let jL = (parseIntValue(ij[bk]) - fm._7)
2909+ ([StringEntry(hO, makeString_2C([ir[bm], fm._4, fm._5, fm._6], ":")), StringEntry(ib, makeString_2C([hS[bd], fm._1, fm._2, fm._3, makeString([ij[bi], toString(jK), toString(jL), ij[bl]], "_")], ":"))] ++ lp)
31322910 }
31332911 }
31342912 }
31372915
31382916
31392917
3140-@Callable(gO)
3141-func saveWarehouse (jf,Q) = if ((gO.caller != dj))
2918+@Callable(gN)
2919+func saveWarehouse (if,Q) = if ((gN.caller != di))
31422920 then throw("Access denied")
31432921 else {
3144- let jb = bD(Q)
3145- let jg = split_4C(jf, ":")
3146- if ((size(jg) != 5))
2922+ let ib = bC(Q)
2923+ let ig = split_4C(if, ":")
2924+ if ((size(ig) != 5))
31472925 then throw("warehouse string should contain 4 ':' separators")
31482926 else {
3149- let np = split(jg[bi], "_")[bj]
3150- let kK = iR(jg)
3151- let nq = iP(jg[be])
3152- let kL = ((nq - parseIntValue(np)) - kK)
3153- if ((0 > kL))
2927+ let mp = split(ig[bh], "_")[bi]
2928+ let jK = hR(ig)
2929+ let mq = hP(ig[bd])
2930+ let jL = ((mq - parseIntValue(mp)) - jK)
2931+ if ((0 > jL))
31542932 then throw("Operation leads to negative free warehouse space")
31552933 else {
3156- let nr = makeString_2C([jg[be], jg[bf], jg[bg], jg[bh], makeString([np, toString(kK), toString(kL), toString(nq)], "_")], ":")
3157- $Tuple2([StringEntry(jb, nr)], nr)
2934+ let mr = makeString_2C([ig[bd], ig[be], ig[bf], ig[bg], makeString([mp, toString(jK), toString(jL), toString(mq)], "_")], ":")
2935+ $Tuple2([StringEntry(ib, mr)], mr)
31582936 }
31592937 }
31602938 }
31612939
31622940
31632941
3164-@Callable(gO)
3165-func setCustomName (bv,lS,bz) = {
3166- let mp = ml(gO)
3167- if ((size(gO.payments) != 1))
2942+@Callable(gN)
2943+func setCustomName (bu,kS,by) = {
2944+ let lp = ll(gN)
2945+ if ((size(gN.payments) != 1))
31682946 then throw("Exactly one payment required")
31692947 else {
3170- let mq = value(gO.payments[0])
3171- if ((mq.assetId != cD))
2948+ let lq = value(gN.payments[0])
2949+ if ((lq.assetId != cC))
31722950 then throw("Allowed USDT payment only!")
3173- else if ((mq.amount != eg))
3174- then throw(("Payment should be " + toString(eg)))
3175- else if (contains(lS, "__"))
3176- then throw(("Name should not contain '__': " + lS))
3177- else if ((size(lS) > eh))
3178- then throw(("Name too long, maxLength=" + toString(eh)))
2951+ else if ((lq.amount != ef))
2952+ then throw(("Payment should be " + toString(ef)))
2953+ else if (contains(kS, "__"))
2954+ then throw(("Name should not contain '__': " + kS))
2955+ else if ((size(kS) > eg))
2956+ then throw(("Name too long, maxLength=" + toString(eg)))
31792957 else {
3180- let c = toString(gO.originCaller)
3181- let ns = {
3182- let cE = bz
3183- if (("ACCOUNT" == cE))
2958+ let c = toString(gN.originCaller)
2959+ let ms = {
2960+ let cD = by
2961+ if (("ACCOUNT" == cD))
31842962 then {
3185- let nt = eB(lS)
3186- let nu = getString(nt)
3187- if (isDefined(nu))
3188- then throw(("Name already registered: " + lS))
2963+ let mt = eA(kS)
2964+ let mu = getString(mt)
2965+ if (isDefined(mu))
2966+ then throw(("Name already registered: " + kS))
31892967 else {
3190- let nv = bH(c)
3191- let nw = getString(nv)
3192- let nx = if (isDefined(nw))
3193- then [DeleteEntry(eB(value(nw)))]
2968+ let mv = bG(c)
2969+ let mw = getString(mv)
2970+ let mx = if (isDefined(mw))
2971+ then [DeleteEntry(eA(value(mw)))]
31942972 else nil
3195- (((nx :+ StringEntry(nv, lS)) :+ StringEntry(nt, c)) ++ lj(c, ab)._1)
2973+ (((mx :+ StringEntry(mv, kS)) :+ StringEntry(mt, c)) ++ kj(c, ab)._1)
31962974 }
31972975 }
3198- else if (("LAND" == cE))
2976+ else if (("LAND" == cD))
31992977 then {
3200- let kv = value(assetInfo(fromBase58String(bv)))
3201- let kw = bx(bv)
3202- if (!(isDefined(getInteger(kw))))
3203- then throw((kv.name + " is not staked"))
2978+ let jv = value(assetInfo(fromBase58String(bu)))
2979+ let jw = bw(bu)
2980+ if (!(isDefined(getInteger(jw))))
2981+ then throw((jv.name + " is not staked"))
32042982 else {
3205- let ky = valueOrErrorMessage(getString(bu(bv)), (("NFT " + kv.name) + " is orphaned"))
3206- if ((ky != c))
2983+ let jy = valueOrErrorMessage(getString(bt(bu)), (("NFT " + jv.name) + " is orphaned"))
2984+ if ((jy != c))
32072985 then throw((aF + " is not yours"))
32082986 else {
3209- let nt = eu(lS)
3210- let nu = getString(nt)
3211- if (isDefined(nu))
3212- then throw(("Name already registered: " + lS))
2987+ let mt = et(kS)
2988+ let mu = getString(mt)
2989+ if (isDefined(mu))
2990+ then throw(("Name already registered: " + kS))
32132991 else {
3214- let ny = bw(bv)
3215- let nw = getString(ny)
3216- let nx = if (isDefined(nw))
3217- then [DeleteEntry(eu(value(nw)))]
2992+ let my = bv(bu)
2993+ let mw = getString(my)
2994+ let mx = if (isDefined(mw))
2995+ then [DeleteEntry(et(value(mw)))]
32182996 else nil
3219- (((nx :+ StringEntry(ny, lS)) :+ StringEntry(nt, bv)) ++ lj(c, ab)._1)
2997+ (((mx :+ StringEntry(my, kS)) :+ StringEntry(mt, bu)) ++ kj(c, ab)._1)
32202998 }
32212999 }
32223000 }
32233001 }
3224- else if (("DUCK" == cE))
3002+ else if (("DUCK" == cD))
32253003 then {
3226- let kv = value(assetInfo(fromBase58String(bv)))
3227- let kw = bx(bv)
3228- if (if (!(isDefined(getInteger(kw))))
3004+ let jv = value(assetInfo(fromBase58String(bu)))
3005+ let jw = bw(bu)
3006+ if (if (!(isDefined(getInteger(jw))))
32293007 then true
3230- else !(isDefined(getString(bN(c)))))
3231- then throw((kv.name + " is not staked"))
3008+ else !(isDefined(getString(bM(c)))))
3009+ then throw((jv.name + " is not staked"))
32323010 else {
3233- let ky = valueOrErrorMessage(getString(bM(bv)), (("NFT " + kv.name) + " is orphaned"))
3234- if ((ky != c))
3011+ let jy = valueOrErrorMessage(getString(bL(bu)), (("NFT " + jv.name) + " is orphaned"))
3012+ if ((jy != c))
32353013 then throw((aG + " is not yours"))
32363014 else {
3237- let nt = eA(lS)
3238- let nu = getString(nt)
3239- if (isDefined(nu))
3240- then throw(("Name already registered: " + lS))
3015+ let mt = ez(kS)
3016+ let mu = getString(mt)
3017+ if (isDefined(mu))
3018+ then throw(("Name already registered: " + kS))
32413019 else {
3242- let ny = bG(bv)
3243- let nw = getString(ny)
3244- let nx = if (isDefined(nw))
3245- then [DeleteEntry(eA(value(nw)))]
3020+ let my = bF(bu)
3021+ let mw = getString(my)
3022+ let mx = if (isDefined(mw))
3023+ then [DeleteEntry(ez(value(mw)))]
32463024 else nil
3247- (((nx :+ StringEntry(ny, lS)) :+ StringEntry(nt, bv)) ++ li(bv, ab)._1)
3025+ (((mx :+ StringEntry(my, kS)) :+ StringEntry(mt, bu)) ++ ki(bu, ab)._1)
32483026 }
32493027 }
32503028 }
32513029 }
32523030 else throw("Unknown entity type")
32533031 }
3254- $Tuple2(((ns :+ ScriptTransfer(dj, mq.amount, cD)) ++ mp), 0)
3032+ $Tuple2(((ms :+ ScriptTransfer(di, lq.amount, cC)) ++ lp), 0)
32553033 }
32563034 }
32573035 }
32583036
32593037
32603038
3261-@Callable(gO)
3262-func setReferrals (nz,nA) = if ((gO.callerPublicKey != ed))
3039+@Callable(gN)
3040+func setReferrals (mz,mA) = if ((gN.callerPublicKey != ec))
32633041 then throw("Permission denied")
32643042 else {
3265- let mp = ml(gO)
3266- if ((size(gO.payments) != 0))
3043+ let lp = ll(gN)
3044+ if ((size(gN.payments) != 0))
32673045 then throw("No payments required")
3268- else if (!(isDefined(addressFromString(nz))))
3269- then throw(("Invalid address: " + nz))
3270- else if (!(isDefined(addressFromString(nA))))
3271- then throw(("Invalid address: " + nA))
3046+ else if (!(isDefined(addressFromString(mz))))
3047+ then throw(("Invalid address: " + mz))
3048+ else if (!(isDefined(addressFromString(mA))))
3049+ then throw(("Invalid address: " + mA))
32723050 else {
3273- let nB = eC()
3274- let nC = getString(nB)
3275- let nD = if (isDefined(nC))
3276- then split_4C(value(nC), "_")
3051+ let mB = eB()
3052+ let mC = getString(mB)
3053+ let mD = if (isDefined(mC))
3054+ then split_4C(value(mC), "_")
32773055 else nil
3278- if (containsElement(nD, nA))
3279- then throw((nA + " is not newbie (already has referrals)"))
3056+ if (containsElement(mD, mA))
3057+ then throw((mA + " is not newbie (already has referrals)"))
32803058 else {
3281- let ll = bI(nA)
3282- let lm = getString(ll)
3283- if (if (isDefined(lm))
3284- then isDefined(addressFromString(value(lm)))
3059+ let kl = bH(mA)
3060+ let km = getString(kl)
3061+ if (if (isDefined(km))
3062+ then isDefined(addressFromString(value(km)))
32853063 else false)
3286- then throw(((nA + " already has refBy: ") + value(lm)))
3064+ then throw(((mA + " already has refBy: ") + value(km)))
32873065 else {
3288- let nE = bL(nz)
3289- let nF = getString(nE)
3290- let nG = if (isDefined(nF))
3291- then split_4C(value(nF), "_")
3066+ let mE = bK(mz)
3067+ let mF = getString(mE)
3068+ let mG = if (isDefined(mF))
3069+ then split_4C(value(mF), "_")
32923070 else nil
3293- if (containsElement(nG, nA))
3294- then throw((((nz + " already contains ") + nA) + " within referrals"))
3071+ if (containsElement(mG, mA))
3072+ then throw((((mz + " already contains ") + mA) + " within referrals"))
32953073 else {
3296- let nH = makeString_2C((nG :+ nA), "_")
3297- let nI = if (containsElement(nD, nz))
3298- then value(nC)
3299- else makeString_2C((nD :+ nz), "_")
3300- $Tuple2(([StringEntry(ll, nz), StringEntry(nE, nH), StringEntry(nB, nI)] ++ mp), 0)
3074+ let mH = makeString_2C((mG :+ mA), "_")
3075+ let mI = if (containsElement(mD, mz))
3076+ then value(mC)
3077+ else makeString_2C((mD :+ mz), "_")
3078+ $Tuple2(([StringEntry(kl, mz), StringEntry(mE, mH), StringEntry(mB, mI)] ++ lp), 0)
33013079 }
33023080 }
33033081 }
33063084
33073085
33083086
3309-@Callable(gO)
3310-func distributePoints (nJ,nK,nL,nM,nN) = {
3311- let mp = ml(gO)
3312- if ((size(gO.payments) != 0))
3087+@Callable(gN)
3088+func distributePoints (mJ,mK,mL,mM,mN) = {
3089+ let lp = ll(gN)
3090+ if ((size(gN.payments) != 0))
33133091 then throw("No payments required")
33143092 else {
3315- let c = toString(gO.originCaller)
3316- let nO = dI(invoke(dl, "checkWlgXpREADONLY", [c], nil))
3317- let nP = dG(nO[1])
3318- let nQ = if ((0 >= nP))
3093+ let c = toString(gN.originCaller)
3094+ let mO = dH(invoke(dk, "checkWlgXpREADONLY", [c], nil))
3095+ let mP = dF(mO[1])
3096+ let mQ = if ((0 >= mP))
33193097 then $Tuple2(0, nil)
33203098 else {
3321- let lg = dG(invoke(dl, "takeWlgXp", [c], nil))
3322- if ((lg == lg))
3323- then $Tuple2(nP, [IntegerEntry(I(c), dG(nO[0])), IntegerEntry(H(c), dG(nO[2]))])
3099+ let kg = dF(invoke(dk, "takeWlgXp", [c], nil))
3100+ if ((kg == kg))
3101+ then $Tuple2(mP, [IntegerEntry(I(c), dF(mO[0])), IntegerEntry(H(c), dF(mO[2]))])
33243102 else throw("Strict value is not equal to itself.")
33253103 }
3326- let nR = nQ._1
3327- let nS = nQ._2
3328- let B = valueOrErrorMessage(getString(bN(c)), "You don't have a duck staked")
3329- let nT = J(c)
3330- let nU = (valueOrElse(getInteger(nT), 0) + nR)
3331- let nV = F(B)
3332- let nW = valueOrElse(getInteger(nV), 0)
3333- let nX = (nU + nW)
3334- let nY = ((((nJ + nK) + nL) + nM) + nN)
3335- if ((nY > nX))
3336- then throw((("There are only " + toString(nX)) + " free points to distribute"))
3104+ let mR = mQ._1
3105+ let mS = mQ._2
3106+ let B = valueOrErrorMessage(getString(bM(c)), "You don't have a duck staked")
3107+ let mT = J(c)
3108+ let mU = (valueOrElse(getInteger(mT), 0) + mR)
3109+ let mV = F(B)
3110+ let mW = valueOrElse(getInteger(mV), 0)
3111+ let mX = (mU + mW)
3112+ let mY = ((((mJ + mK) + mL) + mM) + mN)
3113+ if ((mY > mX))
3114+ then throw((("There are only " + toString(mX)) + " free points to distribute"))
33373115 else {
3338- let nZ = C(B)
3339- let at = split(valueOrElse(getString(nZ), "0_0_0_0_0"), "_")
3340- let oa = (nU - nY)
3341- $Tuple2((([IntegerEntry(nT, if ((0 > oa))
3116+ let mZ = C(B)
3117+ let at = split(valueOrElse(getString(mZ), "0_0_0_0_0"), "_")
3118+ let na = (mU - mY)
3119+ $Tuple2((([IntegerEntry(mT, if ((0 > na))
33423120 then 0
3343- else oa), IntegerEntry(nV, if ((0 > oa))
3344- then (nW + oa)
3345- else nW), StringEntry(nZ, makeString([toString((parseIntValue(at[l]) + nJ)), toString((parseIntValue(at[m]) + nK)), toString((parseIntValue(at[n]) + nL)), toString((parseIntValue(at[o]) + nM)), toString((parseIntValue(at[p]) + nN))], "_"))] ++ mp) ++ nS), 0)
3121+ else na), IntegerEntry(mV, if ((0 > na))
3122+ then (mW + na)
3123+ else mW), StringEntry(mZ, makeString([toString((parseIntValue(at[l]) + mJ)), toString((parseIntValue(at[m]) + mK)), toString((parseIntValue(at[n]) + mL)), toString((parseIntValue(at[o]) + mM)), toString((parseIntValue(at[p]) + mN))], "_"))] ++ lp) ++ mS), 0)
33463124 }
33473125 }
33483126 }
33493127
33503128
33513129
3352-@Callable(gO)
3353-func splitByGlobalWeightsREADONLY (eM) = $Tuple2(nil, fe(eM))
3354-
3355-
3356-
3357-@Callable(gO)
3358-func splitByGlobalAndLocalWeightsREADONLY (ob,oc,gR) = {
3359- let gK = gQ(gR)
3360- $Tuple2(nil, $Tuple2(fe(ob), eP(oc, gK)))
3361- }
3362-
3363-
3364-
3365-@Callable(gO)
3366-func getBackpackREADONLY (B) = $Tuple2(nil, makeString(iN(bO(B)), ":"))
3367-
3368-
3369-
3370-@Callable(gO)
3130+@Callable(gN)
3131+func splitByGlobalWeightsREADONLY (eL) = $Tuple2(nil, fd(eL))
3132+
3133+
3134+
3135+@Callable(gN)
3136+func splitByGlobalAndLocalWeightsREADONLY (nb,nc,gQ) = {
3137+ let gJ = gP(gQ)
3138+ $Tuple2(nil, $Tuple2(fd(nb), eO(nc, gJ)))
3139+ }
3140+
3141+
3142+
3143+@Callable(gN)
3144+func getBackpackREADONLY (B) = $Tuple2(nil, makeString(hN(bN(B)), ":"))
3145+
3146+
3147+
3148+@Callable(gN)
33713149 func getWarehouseREADONLY (Q) = {
3372- let kv = value(assetInfo(fromBase58String(Q)))
3373- let jc = (dL(split(kv.description, "_")[dp]) / cM)
3374- let jd = valueOrElse(getInteger(bE(Q)), 0)
3375- $Tuple2(nil, makeString_2C(ja(bD(Q), jc, jd), ":"))
3376- }
3377-
3378-
3379-
3380-@Callable(gO)
3381-func saveLastTx () = if (!(containsElement([dl, dj, dm, dn], gO.caller)))
3150+ let jv = value(assetInfo(fromBase58String(Q)))
3151+ let ic = (dK(split(jv.description, "_")[do]) / cL)
3152+ let id = valueOrElse(getInteger(bD(Q)), 0)
3153+ $Tuple2(nil, makeString_2C(ia(bC(Q), ic, id), ":"))
3154+ }
3155+
3156+
3157+
3158+@Callable(gN)
3159+func saveLastTx () = if (!(containsElement([dk, di, dl, dm], gN.caller)))
33823160 then throw("Access denied")
3383- else $Tuple2(ml(gO), 42)
3384-
3385-
3386-
3387-@Callable(gO)
3388-func updateDuckStats (B,lg) = if ((gO.caller != dj))
3161+ else $Tuple2(ll(gN), 42)
3162+
3163+
3164+
3165+@Callable(gN)
3166+func updateDuckStats (B,kg) = if ((gN.caller != di))
33893167 then throw("Access denied")
3390- else li(B, lg)
3391-
3392-
3393-
3394-@Callable(gO)
3395-func updateAccStats (c,lg) = if (!(containsElement([dl, dj, dn], gO.caller)))
3168+ else ki(B, kg)
3169+
3170+
3171+
3172+@Callable(gN)
3173+func updateAccStats (c,kg) = if (!(containsElement([dk, di, dm], gN.caller)))
33963174 then throw("Access denied")
3397- else lj(c, lg)
3398-
3399-
3400-
3401-@Callable(gO)
3402-func equipDuck (od) = {
3403- let mp = ml(gO)
3404- if ((size(gO.payments) != 0))
3175+ else kj(c, kg)
3176+
3177+
3178+
3179+@Callable(gN)
3180+func equipDuck (nd) = {
3181+ let lp = ll(gN)
3182+ if ((size(gN.payments) != 0))
34053183 then throw("No payments required")
34063184 else {
3407- let c = toString(gO.originCaller)
3408- let B = valueOrErrorMessage(getString(bN(c)), "You don't have a duck staked")
3409- if (lt(B))
3185+ let c = toString(gN.originCaller)
3186+ let B = valueOrErrorMessage(getString(bM(c)), "You don't have a duck staked")
3187+ if (kt(B))
34103188 then throw("equipDuck_checkTournament")
3411- else if (lu(B))
3189+ else if (ku(B))
34123190 then throw("equipDuck_checkDelivery")
34133191 else {
3414- let gB = G(B)
3415- let oe = split(valueOrElse(getString(gB), ",;,_,;,_,;,_,;,_,;,_,;,"), "_")
3416- let iO = bO(B)
3417- let jr = iN(iO)
3418- let mG = split(od, "_")
3419- if ((size(mG) != r))
3192+ let gA = G(B)
3193+ let ne = split(valueOrElse(getString(gA), ",;,_,;,_,;,_,;,_,;,_,;,"), "_")
3194+ let hO = bN(B)
3195+ let ir = hN(hO)
3196+ let lG = split(nd, "_")
3197+ if ((size(lG) != r))
34203198 then throw("Wrong equipment string")
34213199 else {
3422- let gD = gq(oe, fB(jr[bq]), true, nil)
3423- let gE = split(mG[q], ";")[1]
3424- let ar = if ((gE == ""))
3200+ let gC = gp(ne, fA(ir[bp]), true, nil)
3201+ let gD = split(lG[q], ";")[1]
3202+ let ar = if ((gD == ""))
34253203 then 0
34263204 else {
3427- let gF = split(gE, ",")[0]
3428- if ((gF == ""))
3205+ let gE = split(gD, ",")[0]
3206+ if ((gE == ""))
34293207 then 0
34303208 else {
3431- let fQ = split(gF, ":")
3432- let dh = fQ[0]
3433- let gG = fQ[1]
3434- if (if (if (if (if ((dh == "06"))
3209+ let fP = split(gE, ":")
3210+ let dg = fP[0]
3211+ let gF = fP[1]
3212+ if (if (if (if (if ((dg == "06"))
34353213 then true
3436- else (dh == "07"))
3214+ else (dg == "07"))
34373215 then true
3438- else (dh == "08"))
3439- then (gG != "")
3216+ else (dg == "08"))
3217+ then (gF != "")
34403218 else false)
3441- then (parseIntValue(gG) > 0)
3219+ then (parseIntValue(gF) > 0)
34423220 else false)
3443- then parseIntValue(split(aY[parseIntValue(dh)], "_")[ba])
3221+ then parseIntValue(split(aX[parseIntValue(dg)], "_")[aZ])
34443222 else 0
34453223 }
34463224 }
3447- let gl = ap(this, B, ar, true)
3448- let gH = gq(mG, gD, false, gl)
3449- let of = fG(gH)
3450- $Tuple2(([StringEntry(gB, od), StringEntry(iO, makeString_2C([jr[bn], jr[bo], jr[bp], of], ":")), StringEntry(M(B), makeString([toString(gl[7]), toString(gl[8]), toString(gl[9]), toString(gl[10]), toString(gl[11])], "_"))] ++ mp), 0)
3225+ let gk = ap(this, B, ar, true)
3226+ let gG = gp(lG, gC, false, gk)
3227+ let nf = fF(gG)
3228+ $Tuple2(([StringEntry(gA, nd), StringEntry(hO, makeString_2C([ir[bm], ir[bn], ir[bo], nf], ":")), StringEntry(M(B), makeString([toString(gk[7]), toString(gk[8]), toString(gk[9]), toString(gk[10]), toString(gk[11])], "_"))] ++ lp), 0)
34513229 }
34523230 }
34533231 }
34553233
34563234
34573235
3458-@Callable(gO)
3459-func fortificateLand (Q,og) = {
3460- let mp = ml(gO)
3461- if ((size(gO.payments) != 0))
3236+@Callable(gN)
3237+func fortificateLand (Q,ng) = {
3238+ let lp = ll(gN)
3239+ if ((size(gN.payments) != 0))
34623240 then throw("No payments required")
34633241 else {
3464- let c = toString(gO.originCaller)
3465- let B = valueOrElse(getString(bN(c)), "")
3466- let fL = ap(this, B, 0, false)
3467- let oh = bF(Q)
3468- let oi = split(valueOrElse(getString(oh), ":0_15:0_18:0"), "_")
3469- let kv = value(assetInfo(fromBase58String(Q)))
3470- let jc = (dL(split(kv.description, "_")[dp]) / cM)
3471- let jd = valueOrElse(getInteger(bE(Q)), 0)
3472- let jb = bD(Q)
3473- let jg = ja(jb, jc, jd)
3474- let oj = split(jg[bi], "_")
3475- let ok = parseIntValue(oj[bk])
3476- let ol = parseIntValue(oj[bl])
3477- let om = split(og, "_")
3478- let on = gx(oi, fB(jg[bh]), ok, ol, true, nil)
3479- let gD = on._1
3480- let oo = on._2
3481- let op = on._3
3482- let oq = gx(om, gD, oo, op, false, fL)
3483- let gH = oq._1
3484- let or = oq._2
3485- let os = oq._3
3486- let of = fG(gH)
3487- let lb = makeString([oj[bj], toString(or), toString(os), oj[bm]], "_")
3488- $Tuple2(([StringEntry(oh, og), StringEntry(jb, makeString_2C([jg[be], jg[bf], jg[bg], of, lb], ":"))] ++ mp), 0)
3489- }
3490- }
3491-
3492-
3493-
3494-@Callable(gO)
3495-func initDuckTourAttempt (B) = if ((gO.caller != dm))
3242+ let c = toString(gN.originCaller)
3243+ let B = valueOrElse(getString(bM(c)), "")
3244+ let fK = ap(this, B, 0, false)
3245+ let nh = bE(Q)
3246+ let ni = split(valueOrElse(getString(nh), ":0_15:0_18:0"), "_")
3247+ let jv = value(assetInfo(fromBase58String(Q)))
3248+ let ic = (dK(split(jv.description, "_")[do]) / cL)
3249+ let id = valueOrElse(getInteger(bD(Q)), 0)
3250+ let ib = bC(Q)
3251+ let ig = ia(ib, ic, id)
3252+ let nj = split(ig[bh], "_")
3253+ let nk = parseIntValue(nj[bj])
3254+ let nl = parseIntValue(nj[bk])
3255+ let nm = split(ng, "_")
3256+ let nn = gw(ni, fA(ig[bg]), nk, nl, true, nil)
3257+ let gC = nn._1
3258+ let no = nn._2
3259+ let np = nn._3
3260+ let nq = gw(nm, gC, no, np, false, fK)
3261+ let gG = nq._1
3262+ let nr = nq._2
3263+ let ns = nq._3
3264+ let nf = fF(gG)
3265+ let kb = makeString([nj[bi], toString(nr), toString(ns), nj[bl]], "_")
3266+ $Tuple2(([StringEntry(nh, ng), StringEntry(ib, makeString_2C([ig[bd], ig[be], ig[bf], nf, kb], ":"))] ++ lp), 0)
3267+ }
3268+ }
3269+
3270+
3271+
3272+@Callable(gN)
3273+func initDuckTourAttempt (B) = if ((gN.caller != dl))
34963274 then throw("Access denied")
34973275 else {
3498- let ke = A(B)
3499- let kf = aj(valueOrElse(getInteger(E(B)), 0))
3500- let ly = valueOrElse(getInteger(ke), kf)
3501- let ot = bP(B)
3502- let kt = valueOrElse(getString(ot), aN)
3503- let ck = valueOrElse(getInteger(dm, bV), 0)
3504- let ou = (toString(ck) + "_T_0")
3505- $Tuple2([IntegerEntry(K(B), ly), IntegerEntry(ke, kf), StringEntry(L(B), kt), StringEntry(ot, ou)], ou)
3276+ let je = A(B)
3277+ let jf = aj(valueOrElse(getInteger(E(B)), 0))
3278+ let ky = valueOrElse(getInteger(je), jf)
3279+ let nt = bO(B)
3280+ let jt = valueOrElse(getString(nt), aM)
3281+ let cj = valueOrElse(getInteger(dl, bU), 0)
3282+ let nu = (toString(cj) + "_T_0")
3283+ $Tuple2([IntegerEntry(K(B), ky), IntegerEntry(je, jf), StringEntry(L(B), jt), StringEntry(nt, nu)], nu)
35063284 }
35073285
35083286
35093287
3510-@Callable(gO)
3288+@Callable(gN)
35113289 func breakAttempt () = {
3512- let mp = ml(gO)
3513- let B = valueOrErrorMessage(getString(bN(toString(gO.caller))), "You don't have a duck staked")
3514- let ot = bP(B)
3515- let kt = valueOrElse(getString(ot), aN)
3516- if ((split(kt, "_")[bs] != "T"))
3290+ let lp = ll(gN)
3291+ let B = valueOrErrorMessage(getString(bM(toString(gN.caller))), "You don't have a duck staked")
3292+ let nt = bO(B)
3293+ let jt = valueOrElse(getString(nt), aM)
3294+ if ((split(jt, "_")[br] != "T"))
35173295 then throw("Your duck is not in the tournament")
35183296 else {
3519- let ov = getIntegerValue(K(B))
3520- let lE = getStringValue(L(B))
3521- $Tuple2(((mp :+ IntegerEntry(A(B), ov)) :+ StringEntry(ot, lE)), kt)
3522- }
3523- }
3524-
3525-
3526-
3527-@Callable(gO)
3528-func exitTournamentInternal (B) = if ((gO.caller != this))
3297+ let nv = getIntegerValue(K(B))
3298+ let kE = getStringValue(L(B))
3299+ $Tuple2(((lp :+ IntegerEntry(A(B), nv)) :+ StringEntry(nt, kE)), jt)
3300+ }
3301+ }
3302+
3303+
3304+
3305+@Callable(gN)
3306+func exitTournamentInternal (B) = if ((gN.caller != this))
35293307 then throw("Access denied")
35303308 else {
3531- let ov = getIntegerValue(K(B))
3532- let lE = getStringValue(L(B))
3533- $Tuple2([IntegerEntry(A(B), ov), StringEntry(bP(B), lE)], false)
3309+ let nv = getIntegerValue(K(B))
3310+ let kE = getStringValue(L(B))
3311+ $Tuple2([IntegerEntry(A(B), nv), StringEntry(bO(B), kE)], false)
35343312 }
35353313
35363314
35373315
3538-@Callable(gO)
3539-func exitDeliveryInternal (B) = if ((gO.caller != this))
3316+@Callable(gN)
3317+func exitDeliveryInternal (B) = if ((gN.caller != this))
35403318 then throw("Access denied")
35413319 else {
3542- let nl = lv(B, false, 0, 0)
3543- $Tuple2((nl._1 ++ nl._2), false)
3320+ let ml = kv(B, false, 0, 0)
3321+ $Tuple2((ml._1 ++ ml._2), false)
35443322 }
35453323
35463324
35473325
3548-@Callable(gO)
3549-func autoExitDelivery (B,jY,ow,lw) = if ((gO.caller != this))
3326+@Callable(gN)
3327+func autoExitDelivery (B,iY,nw,kw) = if ((gN.caller != this))
35503328 then throw("Access denied")
35513329 else {
3552- let nl = lv(B, true, jY, lw)
3553- $Tuple2(nl._1, nl._3)
3330+ let ml = kv(B, true, iY, kw)
3331+ $Tuple2(ml._1, ml._3)
35543332 }
35553333
35563334
35573335
3558-@Callable(gO)
3559-func breakDelivery () = $Tuple2(ml(gO), "breakDelivery")
3560-
3561-
3562-
3563-@Callable(gO)
3564-func prepareRobbery (jT,jU) = {
3565- let mp = ml(gO)
3566- if (!(sigVerify_8Kb(jT, jU, ed)))
3336+@Callable(gN)
3337+func breakDelivery () = $Tuple2(ll(gN), "breakDelivery")
3338+
3339+
3340+
3341+@Callable(gN)
3342+func prepareRobbery (iT,iU) = {
3343+ let lp = ll(gN)
3344+ if (!(sigVerify_8Kb(iT, iU, ec)))
35673345 then throw("signature does not match")
3568- else if ((size(gO.payments) != 1))
3346+ else if ((size(gN.payments) != 1))
35693347 then throw("exactly 1 payment must be attached")
35703348 else {
3571- let mq = gO.payments[0]
3572- let ox = mq.amount
3573- if (if (!(isDefined(mq.assetId)))
3349+ let lq = gN.payments[0]
3350+ let nx = lq.amount
3351+ if (if (!(isDefined(lq.assetId)))
35743352 then true
3575- else (value(mq.assetId) != dt))
3353+ else (value(lq.assetId) != ds))
35763354 then throw("WLGOLD payments only!")
35773355 else {
3578- let ft = split(toUtf8String(jT), "|")
3579- if ((size(ft) != 2))
3356+ let fs = split(toUtf8String(iT), "|")
3357+ if ((2 > size(fs)))
35803358 then throw("Wrong message format")
35813359 else {
3582- let B = ft[0]
3583- if (lt(B))
3360+ let B = fs[0]
3361+ if (kt(B))
35843362 then throw("prepareRobbery_checkTournament")
3585- else if (lu(B))
3363+ else if (ku(B))
35863364 then throw("prepareRobbery_checkDelivery")
35873365 else {
35883366 let aB = ax(this, B)._1
3589- if ((aB > ox))
3590- then throw(((("Payment " + toString(ox)) + " < required ") + toString(aB)))
3367+ if ((aB > nx))
3368+ then throw(((("Payment " + toString(nx)) + " < required ") + toString(aB)))
35913369 else {
3592- let oy = split(ft[1], "_")
3370+ let ny = split(fs[1], "_")
35933371 let aA = lastBlock.timestamp
35943372 let aC = valueOrElse(getInteger(S(B)), 0)
35953373 let aD = valueOrElse(getString(T(B)), "")
35993377 else false)
36003378 then throw(("You already started robbing, wait till " + toString(aE)))
36013379 else {
3602- func oz (eV,Q) = {
3603- let oA = valueOrElse(getInteger(P(Q)), 0)
3604- let oB = valueOrElse(getInteger(R(Q)), 0)
3605- if ((oA > size(v)))
3380+ func nz (eU,Q) = {
3381+ let nA = valueOrElse(getInteger(P(Q)), 0)
3382+ let nB = valueOrElse(getInteger(R(Q)), 0)
3383+ if ((nA > size(v)))
36063384 then throw("Invalid state")
3607- else if ((aA > oB))
3385+ else if ((aA > nB))
36083386 then {
3609- let oC = valueOrElse(getInteger(bx(Q)), 0)
3610- if ((0 >= oC))
3611- then eV
3387+ let nC = valueOrElse(getInteger(bw(Q)), 0)
3388+ if ((0 >= nC))
3389+ then eU
36123390 else {
3613- let gv = value(assetInfo(fromBase58String(Q)))
3614- let kz = split(gv.description, "_")
3615- let kl = dL(kz[dp])
3616- let oD = kk(Q, kl)
3617- let gU = (aA - oC)
3618- let kC = fraction(gU, (oD * kl), a)
3619- if ((w > kC))
3620- then eV
3621- else (eV :+ Q)
3391+ let gu = value(assetInfo(fromBase58String(Q)))
3392+ let jz = split(gu.description, "_")
3393+ let jl = dK(jz[do])
3394+ let nD = jk(Q, jl)
3395+ let gT = (aA - nC)
3396+ let jC = fraction(gT, (nD * jl), a)
3397+ if ((w > jC))
3398+ then eU
3399+ else (eU :+ Q)
36223400 }
36233401 }
3624- else eV
3402+ else eU
36253403 }
36263404
3627- let oE = {
3628- let eX = oy
3629- let eY = size(eX)
3630- let eZ = nil
3631- func fa (fb,fc) = if ((fc >= eY))
3632- then fb
3633- else oz(fb, eX[fc])
3634-
3635- func fd (fb,fc) = if ((fc >= eY))
3636- then fb
3405+ let nE = {
3406+ let eW = ny
3407+ let eX = size(eW)
3408+ let eY = nil
3409+ func eZ (fa,fb) = if ((fb >= eX))
3410+ then fa
3411+ else nz(fa, eW[fb])
3412+
3413+ func fc (fa,fb) = if ((fb >= eX))
3414+ then fa
36373415 else throw("List size exceeds 10")
36383416
3639- fd(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(eZ, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
3417+ fc(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eY, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
36403418 }
3641- if ((size(oE) == 0))
3419+ if ((size(nE) == 0))
36423420 then throw("No candidates for robbery")
36433421 else {
3644- let oF = dW(size(oE), jT, jU)
3645- let Q = oE[oF]
3646- $Tuple2(([IntegerEntry(P(Q), x), IntegerEntry(R(Q), (aA + v[x])), IntegerEntry(S(B), z), StringEntry(T(B), Q)] ++ mp), Q)
3422+ let nF = dV(size(nE), iT, iU)
3423+ let Q = nE[nF]
3424+ $Tuple2(([IntegerEntry(P(Q), x), IntegerEntry(R(Q), (aA + v[x])), IntegerEntry(S(B), z), StringEntry(T(B), Q)] ++ lp), Q)
36473425 }
36483426 }
36493427 }
36553433
36563434
36573435
3658-@Callable(gO)
3659-func robLand (jT,jU) = {
3660- let mp = ml(gO)
3661- if (!(sigVerify_8Kb(jT, jU, ed)))
3436+@Callable(gN)
3437+func robLand (iT,iU) = {
3438+ let lp = ll(gN)
3439+ if (!(sigVerify_8Kb(iT, iU, ec)))
36623440 then throw("signature does not match")
36633441 else {
3664- let bR = toString(gO.caller)
3665- let B = valueOrErrorMessage(getString(bN(bR)), "You don't have a duck staked")
3442+ let bQ = toString(gN.caller)
3443+ let B = valueOrErrorMessage(getString(bM(bQ)), "You don't have a duck staked")
36663444 let aA = lastBlock.timestamp
3667- $Tuple2((mp :+ IntegerEntry(N(B), aA)), 0)
3668- }
3669- }
3670-
3671-
3672-
3673-@Callable(gO)
3445+ $Tuple2((lp :+ IntegerEntry(N(B), aA)), 0)
3446+ }
3447+ }
3448+
3449+
3450+
3451+@Callable(gN)
36743452 func acceptDelivery () = {
3675- let mp = ml(gO)
3676- let bR = toString(gO.caller)
3677- let B = valueOrErrorMessage(getString(bN(bR)), "You don't have a duck staked")
3678- let oG = valueOrElse(getInteger(dj, bT), 0)
3679- let lC = valueOrElse(getInteger(dj, bU), 0)
3680- if ((aQ > (oG - lC)))
3681- then throw(((("Delivery is not available, fund=" + dQ(oG, 6)) + ", locked=") + dQ(lC, 6)))
3453+ let lp = ll(gN)
3454+ let bQ = toString(gN.caller)
3455+ let B = valueOrErrorMessage(getString(bM(bQ)), "You don't have a duck staked")
3456+ let nG = valueOrElse(getInteger(di, bS), 0)
3457+ let kC = valueOrElse(getInteger(di, bT), 0)
3458+ if ((aP > (nG - kC)))
3459+ then throw(((("Delivery is not available, fund=" + dP(nG, 6)) + ", locked=") + dP(kC, 6)))
36823460 else {
36833461 let aA = lastBlock.timestamp
3684- let oH = valueOrElse(getInteger(U(B)), 0)
3685- if ((oH > aA))
3686- then throw(("Delivery is forbidden for your duck until " + toString(oH)))
3462+ let nH = valueOrElse(getInteger(U(B)), 0)
3463+ if ((nH > aA))
3464+ then throw(("Delivery is forbidden for your duck until " + toString(nH)))
36873465 else {
36883466 let av = getIntegerValue(A(B))
36893467 if ((0 >= av))
36903468 then throw("You cannot accept delivery with zero health")
36913469 else {
3692- let lB = V(bR)
3693- let fV = valueOrElse(getInteger(lB), 0)
3694- let oI = valueOrElse(getInteger(W(bR)), 0)
3695- let oJ = (aA / a)
3696- let oK = valueOrElse(getInteger(dn, d(bR)), 0)
3697- let oL = (aS + (oK / aT))
3698- if (if ((fV >= oL))
3699- then (oI == oJ)
3470+ let kB = V(bQ)
3471+ let fU = valueOrElse(getInteger(kB), 0)
3472+ let nI = valueOrElse(getInteger(W(bQ)), 0)
3473+ let nJ = (aA / a)
3474+ let nK = valueOrElse(getInteger(dm, d(bQ)), 0)
3475+ let nL = (aR + (nK / aS))
3476+ if (if ((fU >= nL))
3477+ then (nI == nJ)
37003478 else false)
3701- then throw((("You already used " + toString(oL)) + " delivery attempts for today"))
3702- else if (lt(B))
3479+ then throw((("You already used " + toString(nL)) + " delivery attempts for today"))
3480+ else if (kt(B))
37033481 then throw("acceptDelivery_checkTournament")
3704- else if (lu(B))
3482+ else if (ku(B))
37053483 then throw("acceptDelivery_checkDelivery")
37063484 else {
3707- let oM = dG(invoke(dj, "updateDeliveryLocked", [(lC + aQ)], nil))
3708- let ot = bP(B)
3709- let kt = valueOrElse(getString(ot), aN)
3710- let oN = (toString(aA) + "_D_0")
3711- $Tuple2(([StringEntry(L(B), kt), StringEntry(ot, oN), IntegerEntry(lB, if ((oI != oJ))
3485+ let nM = dF(invoke(di, "updateDeliveryLocked", [(kC + aP)], nil))
3486+ let nt = bO(B)
3487+ let jt = valueOrElse(getString(nt), aM)
3488+ let nN = (toString(aA) + "_D_0")
3489+ $Tuple2(([StringEntry(L(B), jt), StringEntry(nt, nN), IntegerEntry(kB, if ((nI != nJ))
37123490 then 0
3713- else fV)] ++ mp), $Tuple2(oN, oM))
3491+ else fU)] ++ lp), $Tuple2(nN, nM))
37143492 }
37153493 }
37163494 }
37193497
37203498
37213499
3722-@Callable(gO)
3723-func checkDeliveryCallback (B) = if ((gO.caller != dm))
3500+@Callable(gN)
3501+func checkDeliveryCallback (B) = if ((gN.caller != dl))
37243502 then throw("Access denied")
3725- else $Tuple2(nil, lu(B))
3726-
3727-
3728-
3729-@Callable(gO)
3730-func genTestREADONLY (iB,gL) = {
3731- let oO = value(value(blockInfoByHeight(2827006)).vrf)
3732- let jO = hj(toBigInt((oO + sha256(toBytes(iB)))))
3733- $Tuple2(nil, hB(jO, gL, -1))
3734- }
3503+ else $Tuple2(nil, ku(B))
37353504
37363505
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 86400000
55
66 func b (c) = ("lastArbTimeUser_" + c)
77
88
99 func d (c) = ("acresStakedAmountByUser_" + c)
1010
1111
1212 let e = 100000000
1313
1414 let f = 3200
1515
1616 let g = 4000
1717
1818 let h = 3
1919
2020 let i = 100000000
2121
2222 let j = 400
2323
2424 let k = ["Strength", "Accuracy", "Intellect", "Endurance", "Dexterity", "Level", "Health"]
2525
2626 let l = 0
2727
2828 let m = 1
2929
3030 let n = 2
3131
3232 let o = 3
3333
3434 let p = 4
3535
3636 let q = 0
3737
3838 let r = 6
3939
4040 let s = 2
4141
4242 let t = 2
4343
4444 let u = 30
4545
4646 let v = [0, 600000, 900000, 43200000, 21600000]
4747
4848 let w = 20000000
4949
5050 let x = 1
5151
5252 let y = 0
5353
5454 let z = 1
5555
5656 func A (B) = ("duckHealth_" + B)
5757
5858
5959 func C (B) = ("duckChars_" + B)
6060
6161
6262 func D (B) = ("duckXP_" + B)
6363
6464
6565 func E (B) = ("duckLevel_" + B)
6666
6767
6868 func F (B) = ("duckFreePoints_" + B)
6969
7070
7171 func G (B) = ("duckEquipment_" + B)
7272
7373
7474 func H (c) = ("userXP_" + c)
7575
7676
7777 func I (c) = ("userLevel_" + c)
7878
7979
8080 func J (c) = ("userFreePoints_" + c)
8181
8282
8383 func K (B) = ("savedHealth_" + B)
8484
8585
8686 func L (B) = ("savedLocation_" + B)
8787
8888
8989 func M (B) = ("duckBuffs_" + B)
9090
9191
9292 func N (B) = ("lastRobberyTime_" + B)
9393
9494
9595 func O (B) = ("lastRobberyCost_" + B)
9696
9797
9898 func P (Q) = ("landRobberyState_" + Q)
9999
100100
101101 func R (Q) = ("landCooldownETA_" + Q)
102102
103103
104104 func S (B) = ("duckRobberyState_" + B)
105105
106106
107107 func T (B) = ("lockedLandByDuck_" + B)
108108
109109
110110 func U (B) = ("deliveryDelayByDuck_" + B)
111111
112112
113113 func V (c) = ("userDeliveryCount_" + c)
114114
115115
116116 func W (c) = ("userLastDeliveryDay_" + c)
117117
118118
119119 let X = 10000
120120
121121 let Y = 10000
122122
123123 let Z = 2000
124124
125125 let aa = 100000
126126
127127 let ab = 1000000
128128
129129 let ac = 5000000
130130
131131 let ad = 10000
132132
133133 let ae = 1000000
134134
135135 let af = 1000000
136136
137137 let ag = 10000
138138
139139 func ah (ai) = fraction(f, pow(ai, 4, g, 4, 4, DOWN), e)
140140
141141
142142 func aj (ak) = (100 + ak)
143143
144144
145145 func al (am,an) = {
146146 let ao = ah(an)
147147 [ao, (h * (ao - am))]
148148 }
149149
150150
151151 func ap (aq,B,ar,as) = {
152152 let at = split(valueOrElse(getString(aq, C(B)), "0_0_0_0_0"), "_")
153153 let au = valueOrElse(getInteger(aq, E(B)), 0)
154154 let av = valueOrElse(getInteger(aq, A(B)), aj(au))
155155 let aw = split(valueOrElse(getString(aq, M(B)), "0_0_0_0_0"), "_")
156156 ([parseIntValue(at[l]), parseIntValue(at[m]), parseIntValue(at[n]), parseIntValue(at[o]), parseIntValue(at[p]), au, av] ++ (if (as)
157157 then [ar, ar, ar, ar, ar]
158158 else [parseIntValue(aw[l]), parseIntValue(aw[m]), parseIntValue(aw[n]), parseIntValue(aw[o]), parseIntValue(aw[p])]))
159159 }
160160
161161
162162 func ax (aq,B) = {
163163 let ay = valueOrElse(getInteger(aq, O(B)), 0)
164164 let az = valueOrElse(getInteger(aq, N(B)), 0)
165165 let aA = lastBlock.timestamp
166166 let aB = max([i, (ay - (j * (aA - az)))])
167167 let aC = valueOrElse(getInteger(aq, S(B)), 0)
168168 let aD = valueOrElse(getString(aq, T(B)), "")
169169 let aE = valueOrElse(getInteger(aq, R(aD)), 0)
170170 $Tuple5(aB, az, aC, aD, aE)
171171 }
172172
173173
174174 let aF = "LAND"
175175
176176 let aG = "DUCK"
177177
178178 let aH = "PRESALE"
179179
180180 let aI = 6
181181
182-let aJ = 5
183-
184-let aK = 25
185-
186-let aL = 3456000
187-
188-let aM = 10000000000
189-
190-let aN = "Africa_F_Africa"
191-
192-let aO = 39637
193-
194-let aP = 10
195-
196-let aQ = 50000
197-
198-let aR = 600000
199-
200-let aS = 1
201-
202-let aT = 50000000
203-
204-let aU = ["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"]
205-
206-let aV = ["Americas", "Europe", "Asia", "Africa", "Oceania"]
207-
208-let aW = 10000000
209-
210-let aX = [15, 16, 17, 18, 19, 20]
211-
212-let aY = ["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_"]
213-
214-let aZ = 6
215-
216-let ba = 8
217-
218-let bb = 9
182+let aJ = 25
183+
184+let aK = 3456000
185+
186+let aL = 10000000000
187+
188+let aM = "Africa_F_Africa"
189+
190+let aN = 39637
191+
192+let aO = 10
193+
194+let aP = 50000
195+
196+let aQ = 600000
197+
198+let aR = 1
199+
200+let aS = 50000000
201+
202+let aT = ["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"]
203+
204+let aU = ["Americas", "Europe", "Asia", "Africa", "Oceania"]
205+
206+let aV = 10000000
207+
208+let aW = [15, 16, 17, 18, 19, 20]
209+
210+let aX = ["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_"]
211+
212+let aY = 6
213+
214+let aZ = 8
215+
216+let ba = 9
217+
218+let bb = 10
219219
220220 let bc = 10
221221
222-let bd = 10
223-
224-let be = 0
225-
226-let bf = 1
227-
228-let bg = 2
229-
230-let bh = 3
231-
232-let bi = 4
233-
234-let bj = 0
235-
236-let bk = 1
237-
238-let bl = 2
239-
240-let bm = 3
241-
242-let bn = 0
243-
244-let bo = 1
245-
246-let bp = 2
247-
248-let bq = 3
249-
250-let br = 0
251-
252-let bs = 1
253-
254-let bt = 2
255-
256-func bu (bv) = ("no_" + bv)
257-
258-
259-func bw (bv) = ("lcna_" + bv)
260-
261-
262-func bx (bv) = ("st_" + bv)
263-
264-
265-func by (bz,bv) = makeString(["las", bz, bv], "_")
266-
267-
268-func bA (bB,bv,bC) = ((((("sttao_" + bB) + "_") + bv) + "_") + bC)
269-
270-
271-func bD (Q) = ("wh_" + Q)
272-
273-
274-func bE (bv) = ("infraLevel_" + bv)
275-
276-
277-func bF (Q) = ("fortifications_" + Q)
278-
279-
280-func bG (bv) = ("duckCustomNameByAssetId_" + bv)
281-
282-
283-func bH (c) = ("accountCustomNameByAddr_" + c)
284-
285-
286-func bI (c) = ("accRefBy_" + c)
287-
288-
289-func bJ (B) = ("onboardArtActivatedOnDuck_" + B)
290-
291-
292-func bK (c) = ("onboardArtActivatedDuckBy_" + c)
293-
294-
295-func bL (c) = ("accReferrals_" + c)
296-
297-
298-func bM (bv) = ("duckOwner_" + bv)
299-
300-
301-func bN (bC) = ("stakedDuckByOwner_" + bC)
302-
303-
304-func bO (B) = ("backPack_" + B)
305-
306-
307-func bP (B) = ("duckLocation_" + B)
308-
309-
310-func bQ (bR) = ("%s%s__userGwlReleaseTime__" + bR)
311-
312-
313-func bS () = "emergencyWarehouseProducts"
314-
315-
316-let bT = "deliveryFund"
317-
318-let bU = "deliveryLocked"
319-
320-let bV = "%s__lastTourId"
321-
322-func bW (bX) = ("%s%d__tourStaticData__" + toString(bX))
323-
324-
325-func bY (bX) = ("%s%d__tourDynamicData__" + toString(bX))
326-
327-
328-func bZ (bX,B) = makeString(["%s%d%s__bestResultByTourAndDuck", toString(bX), B], "__")
329-
330-
331-let ca = 0
332-
333-let cb = 1
334-
335-let cc = 6
336-
337-let cd = 1
338-
339-func ce (cf,bX) = {
340- let cg = split(valueOrErrorMessage(getString(cf, bW(bX)), (("Error reading tournament " + toString(bX)) + " data")), "__")
341- let ch = split_4C(valueOrErrorMessage(getString(cf, bY(bX)), (("Error reading tournament " + toString(bX)) + " data")), "__")
342-[cg, ch]
343- }
344-
345-
346-func ci (cf,cj) = {
347- let ck = valueOrElse(getInteger(cf, bV), 0)
348- let cl = split(cj, "_")
222+let bd = 0
223+
224+let be = 1
225+
226+let bf = 2
227+
228+let bg = 3
229+
230+let bh = 4
231+
232+let bi = 0
233+
234+let bj = 1
235+
236+let bk = 2
237+
238+let bl = 3
239+
240+let bm = 0
241+
242+let bn = 1
243+
244+let bo = 2
245+
246+let bp = 3
247+
248+let bq = 0
249+
250+let br = 1
251+
252+let bs = 2
253+
254+func bt (bu) = ("no_" + bu)
255+
256+
257+func bv (bu) = ("lcna_" + bu)
258+
259+
260+func bw (bu) = ("st_" + bu)
261+
262+
263+func bx (by,bu) = makeString(["las", by, bu], "_")
264+
265+
266+func bz (bA,bu,bB) = ((((("sttao_" + bA) + "_") + bu) + "_") + bB)
267+
268+
269+func bC (Q) = ("wh_" + Q)
270+
271+
272+func bD (bu) = ("infraLevel_" + bu)
273+
274+
275+func bE (Q) = ("fortifications_" + Q)
276+
277+
278+func bF (bu) = ("duckCustomNameByAssetId_" + bu)
279+
280+
281+func bG (c) = ("accountCustomNameByAddr_" + c)
282+
283+
284+func bH (c) = ("accRefBy_" + c)
285+
286+
287+func bI (B) = ("onboardArtActivatedOnDuck_" + B)
288+
289+
290+func bJ (c) = ("onboardArtActivatedDuckBy_" + c)
291+
292+
293+func bK (c) = ("accReferrals_" + c)
294+
295+
296+func bL (bu) = ("duckOwner_" + bu)
297+
298+
299+func bM (bB) = ("stakedDuckByOwner_" + bB)
300+
301+
302+func bN (B) = ("backPack_" + B)
303+
304+
305+func bO (B) = ("duckLocation_" + B)
306+
307+
308+func bP (bQ) = ("%s%s__userGwlReleaseTime__" + bQ)
309+
310+
311+func bR () = "emergencyWarehouseProducts"
312+
313+
314+let bS = "deliveryFund"
315+
316+let bT = "deliveryLocked"
317+
318+let bU = "%s__lastTourId"
319+
320+func bV (bW) = ("%s%d__tourStaticData__" + toString(bW))
321+
322+
323+func bX (bW) = ("%s%d__tourDynamicData__" + toString(bW))
324+
325+
326+func bY (bW,B) = makeString(["%s%d%s__bestResultByTourAndDuck", toString(bW), B], "__")
327+
328+
329+let bZ = 0
330+
331+let ca = 1
332+
333+let cb = 6
334+
335+let cc = 1
336+
337+func cd (ce,bW) = {
338+ let cf = split(valueOrErrorMessage(getString(ce, bV(bW)), (("Error reading tournament " + toString(bW)) + " data")), "__")
339+ let cg = split_4C(valueOrErrorMessage(getString(ce, bX(bW)), (("Error reading tournament " + toString(bW)) + " data")), "__")
340+[cf, cg]
341+ }
342+
343+
344+func ch (ce,ci) = {
345+ let cj = valueOrElse(getInteger(ce, bU), 0)
346+ let ck = split(ci, "_")
349347 let aA = lastBlock.timestamp
350- let cm = ce(cf, ck)
351- let cg = cm[ca]
352- let ch = cm[cb]
353- if (if (if ((cl[bs] == "T"))
354- then (parseIntValue(cl[br]) == ck)
348+ let cl = cd(ce, cj)
349+ let cf = cl[bZ]
350+ let cg = cl[ca]
351+ if (if (if ((ck[br] == "T"))
352+ then (parseIntValue(ck[bq]) == cj)
355353 else false)
356- then (ch[cd] == "INPROGRESS")
354+ then (cg[cc] == "INPROGRESS")
357355 else false)
358- then (parseIntValue(cg[cc]) > aA)
356+ then (parseIntValue(cf[cb]) > aA)
359357 else false
360358 }
361359
362360
363-func cn (cj) = {
364- let cl = split(cj, "_")
361+func cm (ci) = {
362+ let ck = split(ci, "_")
365363 let aA = lastBlock.timestamp
366- let co = parseIntValue(cl[br])
367- let cp = parseIntValue(cl[bt])
368- if (if ((cl[bs] == "D"))
369- then ((co + aR) > aA)
364+ let cn = parseIntValue(ck[bq])
365+ let co = parseIntValue(ck[bs])
366+ if (if ((ck[br] == "D"))
367+ then ((cn + aQ) > aA)
370368 else false)
371- then (3 >= cp)
369+ then (3 >= co)
372370 else false
373371 }
374372
375373
376-func cq (cj) = {
377- let cr = split(cj, "_")[bs]
378- if ((cr != "T"))
379- then (cr != "D")
374+func cp (ci) = {
375+ let cq = split(ci, "_")[br]
376+ if ((cq != "T"))
377+ then (cq != "D")
380378 else false
381379 }
382380
383381
384-func cs (cf,cj) = {
385- let ck = valueOrElse(getInteger(cf, bV), 0)
386- let cl = split(cj, "_")
382+func cr (ce,ci) = {
383+ let cj = valueOrElse(getInteger(ce, bU), 0)
384+ let ck = split(ci, "_")
387385 let aA = lastBlock.timestamp
388- let cm = ce(cf, ck)
389- let cg = cm[ca]
390- let ch = cm[cb]
391- let cr = cl[bs]
392- if ((cr == "D"))
386+ let cl = cd(ce, cj)
387+ let cf = cl[bZ]
388+ let cg = cl[ca]
389+ let cq = ck[br]
390+ if ((cq == "D"))
393391 then true
394- else if (if (if ((cl[bs] == "T"))
395- then (parseIntValue(cl[br]) == ck)
392+ else if (if (if ((ck[br] == "T"))
393+ then (parseIntValue(ck[bq]) == cj)
396394 else false)
397- then (ch[cd] == "INPROGRESS")
395+ then (cg[cc] == "INPROGRESS")
398396 else false)
399- then (parseIntValue(cg[cc]) > aA)
397+ then (parseIntValue(cf[cb]) > aA)
400398 else false
401399 }
402400
403401
404-func ct (cu) = (parseIntValue(cu[aZ]) * aW)
405-
406-
407-func cv (cw,cx,cy) = throw(((((("Cheat attempt: oldLoc=" + cw) + ", newLoc=") + cx) + ", case=") + toString(cy)))
408-
402+func cs (ct) = (parseIntValue(ct[aY]) * aV)
403+
404+
405+func cu (cv,cw,cx) = throw(((((("Cheat attempt: oldLoc=" + cv) + ", newLoc=") + cw) + ", case=") + toString(cx)))
406+
407+
408+let cy = false
409409
410410 let cz = false
411411
412-let cA = false
413-
414-let cB = 86400000
415-
416-let cC = take(drop(this.bytes, 1), 1)
417-
418-let cD = {
419- let cE = cC
420- if ((base58'2W' == cE))
412+let cA = 86400000
413+
414+let cB = take(drop(this.bytes, 1), 1)
415+
416+let cC = {
417+ let cD = cB
418+ if ((base58'2W' == cD))
421419 then base58'9wc3LXNA4TEBsXyKtoLE9mrbDD7WMHXvXrCjZvabLAsi'
422- else if ((base58'2T' == cE))
420+ else if ((base58'2T' == cD))
423421 then base58'6mWwf9mZBjVgkC54idpyaZLQfAosD914wT8fGf2iiY63'
424422 else throw("Unknown chain")
425423 }
426424
427-let cF = {
428- let cE = cC
429- if ((base58'2W' == cE))
425+let cE = {
426+ let cD = cB
427+ if ((base58'2W' == cD))
430428 then "3PQCuvFbvh4LkPUnrnU1z3jnbA1p9m3WNhv"
431- else if ((base58'2T' == cE))
429+ else if ((base58'2T' == cD))
432430 then "3MumkGGztCKAXpWDqxkddofqXSUbqQkvSJy"
433431 else throw("Unknown chain")
434432 }
435433
436-let cG = {
437- let cE = cC
438- if ((base58'2W' == cE))
434+let cF = {
435+ let cD = cB
436+ if ((base58'2W' == cD))
439437 then 10000000000
440- else if ((base58'2T' == cE))
438+ else if ((base58'2T' == cD))
441439 then 100000000
442440 else throw("Unknown chain")
443441 }
444442
445-let cH = {
446- let cE = cC
447- if ((base58'2W' == cE))
448- then cB
449- else if ((base58'2T' == cE))
443+let cG = {
444+ let cD = cB
445+ if ((base58'2W' == cD))
446+ then cA
447+ else if ((base58'2T' == cD))
450448 then 60000
451449 else throw("Unknown chain")
452450 }
453451
454-let cI = {
455- let cE = cC
456- if ((base58'2W' == cE))
452+let cH = {
453+ let cD = cB
454+ if ((base58'2W' == cD))
457455 then 10800000
458- else if ((base58'2T' == cE))
456+ else if ((base58'2T' == cD))
459457 then 900000
460458 else throw("Unknown chain")
461459 }
462460
463-let cJ = "__"
464-
465-let cK = 1000000
466-
467-let cL = 100000000
468-
469-let cM = 25
470-
471-let cN = 100
472-
473-let cO = 225
474-
475-let cP = 400
476-
477-let cQ = 625
478-
479-let cR = [0, 1, 2, 3, 4, 5]
480-
481-func cS (cT,cU) = valueOrErrorMessage(getString(cT, cU), makeString(["mandatory ", toString(cT), ".", cU, " is not defined"], ""))
482-
483-
484-let cV = 1
485-
486-let cW = 2
487-
488-let cX = 3
489-
490-let cY = 4
491-
492-let cZ = 7
493-
494-let da = 8
495-
496-func db () = "%s__restConfig"
497-
498-
499-func dc () = "%s__restAddr"
500-
501-
502-func dd (de) = split_4C(cS(de, db()), cJ)
503-
504-
505-func df (dg,dh) = valueOrErrorMessage(addressFromString(dg[dh]), ("Rest cfg doesn't contain address at index " + toString(dh)))
506-
507-
508-let di = addressFromStringValue(valueOrElse(getString(this, dc()), cF))
509-
510-let dg = dd(di)
511-
512-let aq = df(dg, cV)
513-
514-let dj = df(dg, cW)
515-
516-let dk = df(dg, cX)
517-
518-let dl = df(dg, cY)
519-
520-let dm = df(dg, cZ)
521-
522-let dn = df(dg, da)
523-
524-let do = 0
525-
526-let dp = 1
527-
528-let dq = 2
529-
530-let dr = 3
531-
532-let ds = "wlg_assetId"
533-
534-let dt = valueOrErrorMessage(getBinary(dl, ds), "WLGOLD is not issued yet")
535-
536-let du = "acresAssetId"
537-
538-let dv = valueOrErrorMessage(getBinary(dn, du), "ACRES is not issued yet")
539-
540-let dw = 2
541-
542-func dx (cT) = ("finishBlockForAddr_" + cT)
543-
544-
545-func dy () = "resTypesProportions"
546-
547-
548-func dz (dA) = ("resTypesByContinent_" + dA)
549-
550-
551-func dB (bC) = ("stakedLandsByOwner_" + bC)
552-
553-
554-func dC (bC) = ("stakedPiecesByOwner_" + bC)
555-
556-
557-func dD (dE) = {
558- let cE = dE
559- if ($isInstanceOf(cE, "String"))
461+let cI = "__"
462+
463+let cJ = 1000000
464+
465+let cK = 100000000
466+
467+let cL = 25
468+
469+let cM = 100
470+
471+let cN = 225
472+
473+let cO = 400
474+
475+let cP = 625
476+
477+let cQ = [0, 1, 2, 3, 4, 5]
478+
479+func cR (cS,cT) = valueOrErrorMessage(getString(cS, cT), makeString(["mandatory ", toString(cS), ".", cT, " is not defined"], ""))
480+
481+
482+let cU = 1
483+
484+let cV = 2
485+
486+let cW = 3
487+
488+let cX = 4
489+
490+let cY = 7
491+
492+let cZ = 8
493+
494+func da () = "%s__restConfig"
495+
496+
497+func db () = "%s__restAddr"
498+
499+
500+func dc (dd) = split_4C(cR(dd, da()), cI)
501+
502+
503+func de (df,dg) = valueOrErrorMessage(addressFromString(df[dg]), ("Rest cfg doesn't contain address at index " + toString(dg)))
504+
505+
506+let dh = addressFromStringValue(valueOrElse(getString(this, db()), cE))
507+
508+let df = dc(dh)
509+
510+let aq = de(df, cU)
511+
512+let di = de(df, cV)
513+
514+let dj = de(df, cW)
515+
516+let dk = de(df, cX)
517+
518+let dl = de(df, cY)
519+
520+let dm = de(df, cZ)
521+
522+let dn = 0
523+
524+let do = 1
525+
526+let dp = 2
527+
528+let dq = 3
529+
530+let dr = "wlg_assetId"
531+
532+let ds = valueOrErrorMessage(getBinary(dk, dr), "WLGOLD is not issued yet")
533+
534+let dt = "acresAssetId"
535+
536+let du = valueOrErrorMessage(getBinary(dm, dt), "ACRES is not issued yet")
537+
538+let dv = 2
539+
540+func dw (cS) = ("finishBlockForAddr_" + cS)
541+
542+
543+func dx () = "resTypesProportions"
544+
545+
546+func dy (dz) = ("resTypesByContinent_" + dz)
547+
548+
549+func dA (bB) = ("stakedLandsByOwner_" + bB)
550+
551+
552+func dB (bB) = ("stakedPiecesByOwner_" + bB)
553+
554+
555+func dC (dD) = {
556+ let cD = dD
557+ if ($isInstanceOf(cD, "String"))
560558 then {
561- let dF = cE
562- dF
559+ let dE = cD
560+ dE
563561 }
564562 else throw("fail to cast into String")
565563 }
566564
567565
568-func dG (dE) = {
569- let cE = dE
570- if ($isInstanceOf(cE, "Int"))
566+func dF (dD) = {
567+ let cD = dD
568+ if ($isInstanceOf(cD, "Int"))
571569 then {
572- let dH = cE
573- dH
570+ let dG = cD
571+ dG
574572 }
575573 else throw("fail to cast into Int")
576574 }
577575
578576
579-func dI (dE) = {
580- let cE = dE
581- if ($isInstanceOf(cE, "List[Any]"))
577+func dH (dD) = {
578+ let cD = dD
579+ if ($isInstanceOf(cD, "List[Any]"))
582580 then {
583- let dJ = cE
584- dJ
581+ let dI = cD
582+ dI
585583 }
586584 else throw("fail to cast into List[Any]")
587585 }
588586
589587
590-func dK (dE) = {
591- let cE = dE
592- if ($isInstanceOf(cE, "Boolean"))
588+func dJ (dD) = {
589+ let cD = dD
590+ if ($isInstanceOf(cD, "Boolean"))
593591 then {
594- let dF = cE
595- dF
592+ let dE = cD
593+ dE
596594 }
597595 else throw("fail to cast into Boolean")
598596 }
599597
600598
601-func dL (dM) = {
602- let cE = dM
603- if (("S" == cE))
604- then cM
605- else if (("M" == cE))
606- then cN
607- else if (("L" == cE))
608- then cO
609- else if (("XL" == cE))
610- then cP
611- else if (("XXL" == cE))
612- then cQ
599+func dK (dL) = {
600+ let cD = dL
601+ if (("S" == cD))
602+ then cL
603+ else if (("M" == cD))
604+ then cM
605+ else if (("L" == cD))
606+ then cN
607+ else if (("XL" == cD))
608+ then cO
609+ else if (("XXL" == cD))
610+ then cP
613611 else throw("Unknown land size")
614612 }
615613
616614
617-func dN (dF) = isDefined(parseInt(dF))
618-
619-
620-func dO () = "contractsBlocked"
621-
622-
623-func dP (c) = ("lastTxIdByUser_" + c)
624-
625-
626-func dQ (dR,dS) = {
627- let dT = pow(10, 0, dS, 0, 0, DOWN)
628- let dU = toString((dR % dT))
629- let dV = drop(toString(dT), (1 + size(dU)))
630- (((toString((dR / dT)) + ".") + dV) + dU)
631- }
632-
633-
634-func dW (dX,dY,dZ) = {
635- let ea = sha256((dY + dZ))
636- (toInt(ea) % dX)
637- }
638-
639-
640-let eb = {
641- let cE = cC
642- if ((base58'2W' == cE))
615+func dM (dE) = isDefined(parseInt(dE))
616+
617+
618+func dN () = "contractsBlocked"
619+
620+
621+func dO (c) = ("lastTxIdByUser_" + c)
622+
623+
624+func dP (dQ,dR) = {
625+ let dS = pow(10, 0, dR, 0, 0, DOWN)
626+ let dT = toString((dQ % dS))
627+ let dU = drop(toString(dS), (1 + size(dT)))
628+ (((toString((dQ / dS)) + ".") + dU) + dT)
629+ }
630+
631+
632+func dV (dW,dX,dY) = {
633+ let dZ = sha256((dX + dY))
634+ (toInt(dZ) % dW)
635+ }
636+
637+
638+let ea = {
639+ let cD = cB
640+ if ((base58'2W' == cD))
643641 then addressFromStringValue("3PEktVux2RhchSN63DsDo4b4mz4QqzKSeDv")
644- else if ((base58'2T' == cE))
642+ else if ((base58'2T' == cD))
645643 then this
646644 else throw("Unknown chain")
647645 }
648646
649-let ec = {
650- let cE = cC
651- if ((base58'2W' == cE))
647+let eb = {
648+ let cD = cB
649+ if ((base58'2W' == cD))
652650 then addressFromStringValue("3PDVuU45H7Eh5dmtNbnRNRStGwULA7NY6Hb")
653- else if ((base58'2T' == cE))
651+ else if ((base58'2T' == cD))
654652 then this
655653 else throw("Unknown chain")
656654 }
657655
658-let ed = {
659- let cE = cC
660- if ((base58'2W' == cE))
661- then if (cz)
656+let ec = {
657+ let cD = cB
658+ if ((base58'2W' == cD))
659+ then if (cy)
662660 then base58'CWsMtTZC5BjjoL4Q1ayW4Wwb1ehGACQB6DrKyPgotKfm'
663661 else base58'6LfPuKJjLgekmncBhMg2LZyMTNVzZBccXR28ySXm9uXD'
664- else if ((base58'2T' == cE))
662+ else if ((base58'2T' == cD))
665663 then base58'6LfPuKJjLgekmncBhMg2LZyMTNVzZBccXR28ySXm9uXD'
666664 else throw("Unknown chain")
667665 }
668666
669-let ee = base64'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=='
670-
671-let ef = 300000
672-
673-let eg = 5000000
674-
675-let eh = 50
676-
677-let ei = 10000000
678-
679-let ej = {
680- let cE = cC
681- if ((base58'2W' == cE))
667+let ed = base64'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=='
668+
669+let ee = 300000
670+
671+let ef = 5000000
672+
673+let eg = 50
674+
675+let eh = 10000000
676+
677+let ei = {
678+ let cD = cB
679+ if ((base58'2W' == cD))
682680 then 252289527462
683- else if ((base58'2T' == cE))
681+ else if ((base58'2T' == cD))
684682 then 2522895274
685683 else throw("Unknown chain")
686684 }
687685
688-let ek = {
689- let cE = cC
690- if ((base58'2W' == cE))
686+let ej = {
687+ let cD = cB
688+ if ((base58'2W' == cD))
691689 then 250000000
692- else if ((base58'2T' == cE))
690+ else if ((base58'2T' == cD))
693691 then 250000000
694692 else throw("Unknown chain")
695693 }
696694
697-let el = 2500000000
698-
699-let em = toBigInt(5)
700-
701-let en = toBigInt(20)
702-
703-let eo = toBigInt((20 * 20))
704-
705-let ep = toBigInt(((20 * 20) * 20))
706-
707-let eq = toBigInt((((20 * 20) * 20) * 20))
708-
709-let er = toBigInt(((((20 * 20) * 20) * 20) * 20))
710-
711-let es = 500
712-
713-func et () = "nextLandNum"
714-
715-
716-func eu (ev) = ("lcn_" + ev)
717-
718-
719-func ew (ex) = ("la_" + ex)
720-
721-
722-func ey (bv,bC) = ((("ilao_" + bv) + "_") + bC)
723-
724-
725-func ez (ex) = ("lo_" + ex)
726-
727-
728-func eA (ev) = ("duckByCustomName_" + ev)
729-
730-
731-func eB (ev) = ("accountByCustomName_" + ev)
732-
733-
734-func eC () = "oldiesList"
735-
736-
737-let eD = 0
738-
739-let eE = 1
740-
741-let eF = 2
742-
743-let eG = 0
744-
745-let eH = 5
746-
747-let eI = 6
748-
749-let eJ = 7
750-
751-func eK (ex,dM) = ((aF + ex) + dM)
752-
753-
754-func eL (eM,eN) = {
755- let eO = if ((eM >= 0))
756- then (((eM + eN) - 1) / eN)
757- else -((((-(eM) + eN) - 1) / eN))
758- (eO * cL)
759- }
760-
761-
762-func eP (eQ,eR) = {
763- let eS = (((((eR[0] + eR[1]) + eR[2]) + eR[3]) + eR[4]) + eR[5])
764- if ((0 >= eS))
695+let ek = 2500000000
696+
697+let el = toBigInt(5)
698+
699+let em = toBigInt(20)
700+
701+let en = toBigInt((20 * 20))
702+
703+let eo = toBigInt(((20 * 20) * 20))
704+
705+let ep = toBigInt((((20 * 20) * 20) * 20))
706+
707+let eq = toBigInt(((((20 * 20) * 20) * 20) * 20))
708+
709+let er = 500
710+
711+func es () = "nextLandNum"
712+
713+
714+func et (eu) = ("lcn_" + eu)
715+
716+
717+func ev (ew) = ("la_" + ew)
718+
719+
720+func ex (bu,bB) = ((("ilao_" + bu) + "_") + bB)
721+
722+
723+func ey (ew) = ("lo_" + ew)
724+
725+
726+func ez (eu) = ("duckByCustomName_" + eu)
727+
728+
729+func eA (eu) = ("accountByCustomName_" + eu)
730+
731+
732+func eB () = "oldiesList"
733+
734+
735+let eC = 0
736+
737+let eD = 1
738+
739+let eE = 2
740+
741+let eF = 0
742+
743+let eG = 5
744+
745+let eH = 6
746+
747+let eI = 7
748+
749+func eJ (ew,dL) = ((aF + ew) + dL)
750+
751+
752+func eK (eL,eM) = {
753+ let eN = if ((eL >= 0))
754+ then (((eL + eM) - 1) / eM)
755+ else -((((-(eL) + eM) - 1) / eM))
756+ (eN * cK)
757+ }
758+
759+
760+func eO (eP,eQ) = {
761+ let eR = (((((eQ[0] + eQ[1]) + eQ[2]) + eQ[3]) + eQ[4]) + eQ[5])
762+ if ((0 >= eR))
765763 then throw("Zero weights sum")
766764 else {
767- let eT = fraction(eQ, cK, eS)
768- func eU (eV,eW) = (eV :+ fraction(eW, eT, cK))
769-
770- let eX = eR
771- let eY = size(eX)
772- let eZ = nil
773- func fa (fb,fc) = if ((fc >= eY))
774- then fb
775- else eU(fb, eX[fc])
776-
777- func fd (fb,fc) = if ((fc >= eY))
778- then fb
765+ let eS = fraction(eP, cJ, eR)
766+ func eT (eU,eV) = (eU :+ fraction(eV, eS, cJ))
767+
768+ let eW = eQ
769+ let eX = size(eW)
770+ let eY = nil
771+ func eZ (fa,fb) = if ((fb >= eX))
772+ then fa
773+ else eT(fa, eW[fb])
774+
775+ func fc (fa,fb) = if ((fb >= eX))
776+ then fa
779777 else throw("List size exceeds 6")
780778
781- fd(fa(fa(fa(fa(fa(fa(eZ, 0), 1), 2), 3), 4), 5), 6)
782- }
783- }
784-
785-
786-func fe (eQ) = {
787- let ff = split(value(getString(dy())), "_")
788- if ((size(ff) != aI))
779+ fc(eZ(eZ(eZ(eZ(eZ(eZ(eY, 0), 1), 2), 3), 4), 5), 6)
780+ }
781+ }
782+
783+
784+func fd (eP) = {
785+ let fe = split(value(getString(dx())), "_")
786+ if ((size(fe) != aI))
789787 then throw("Wrong proportions data")
790788 else {
791- let fg = [parseIntValue(ff[0]), parseIntValue(ff[1]), parseIntValue(ff[2]), parseIntValue(ff[3]), parseIntValue(ff[4]), parseIntValue(ff[5])]
792- eP(eQ, fg)
793- }
794- }
795-
796-
797-func fh (fi,fj,fk) = {
798- let fl = fe(fk)
799- func fm (eV,dh) = {
800- let fn = (parseIntValue(fj[dh]) - fl[dh])
801- if ((0 > fn))
802- then throw(((((("Not enough material idx=" + toString(dh)) + ", you have ") + fj[dh]) + ", but need ") + toString(fl[dh])))
803- else (eV :+ toString(fn))
789+ let ff = [parseIntValue(fe[0]), parseIntValue(fe[1]), parseIntValue(fe[2]), parseIntValue(fe[3]), parseIntValue(fe[4]), parseIntValue(fe[5])]
790+ eO(eP, ff)
791+ }
792+ }
793+
794+
795+func fg (fh,fi,fj) = {
796+ let fk = fd(fj)
797+ func fl (eU,dg) = {
798+ let fm = (parseIntValue(fi[dg]) - fk[dg])
799+ if ((0 > fm))
800+ then throw(((((("Not enough material idx=" + toString(dg)) + ", you have ") + fi[dg]) + ", but need ") + toString(fk[dg])))
801+ else (eU :+ toString(fm))
804802 }
805803
806- if (fi)
804+ if (fh)
807805 then {
808- let eX = cR
809- let eY = size(eX)
810- let eZ = nil
811- func fa (fb,fc) = if ((fc >= eY))
812- then fb
813- else fm(fb, eX[fc])
814-
815- func fd (fb,fc) = if ((fc >= eY))
816- then fb
806+ let eW = cQ
807+ let eX = size(eW)
808+ let eY = nil
809+ func eZ (fa,fb) = if ((fb >= eX))
810+ then fa
811+ else fl(fa, eW[fb])
812+
813+ func fc (fa,fb) = if ((fb >= eX))
814+ then fa
817815 else throw("List size exceeds 6")
818816
819- fd(fa(fa(fa(fa(fa(fa(eZ, 0), 1), 2), 3), 4), 5), 6)
820- }
821- else fj
822- }
823-
824-
825-func fo (fp,fq) = if ((fq == ""))
826- then $Tuple2(fp, false)
817+ fc(eZ(eZ(eZ(eZ(eZ(eZ(eY, 0), 1), 2), 3), 4), 5), 6)
818+ }
819+ else fi
820+ }
821+
822+
823+func fn (fo,fp) = if ((fp == ""))
824+ then $Tuple2(fo, false)
827825 else {
828- func fr (eV,fs) = {
829- let ft = split(fs, ",")
830- if ((size(ft) != 2))
826+ func fq (eU,fr) = {
827+ let fs = split(fr, ",")
828+ if ((size(fs) != 2))
831829 then throw("Incorrect format, should be index,amount")
832830 else {
833- let dh = parseIntValue(ft[0])
834- if (if ((0 > dh))
831+ let dg = parseIntValue(fs[0])
832+ if (if ((0 > dg))
835833 then true
836- else (dh >= size(aY)))
834+ else (dg >= size(aX)))
837835 then throw("Unknown product idx")
838836 else {
839- let fu = parseIntValue(ft[1])
840- let fv = split(eV._1, (ft[0] + ":"))
841- if ((size(fv) != 2))
842- then throw((("You don't have " + aU[dh]) + " equipped"))
837+ let ft = parseIntValue(fs[1])
838+ let fu = split(eU._1, (fs[0] + ":"))
839+ if ((size(fu) != 2))
840+ then throw((("You don't have " + aT[dg]) + " equipped"))
843841 else {
844- let fw = fv[1]
845- let fx = if (dN(take(drop(fw, 1), 1)))
842+ let fv = fu[1]
843+ let fw = if (dM(take(drop(fv, 1), 1)))
846844 then 2
847845 else 1
848- let fy = parseIntValue(take(fw, fx))
849- let fz = drop(fw, fx)
850- let fA = if ((fy >= fu))
851- then (fy - fu)
852- else throw(((((("You equipped " + toString(fy)) + " of ") + aU[dh]) + ", but tried to use ") + toString(fu)))
853- $Tuple2(((((fv[0] + ft[0]) + ":") + toString(fA)) + fz), if (eV._2)
846+ let fx = parseIntValue(take(fv, fw))
847+ let fy = drop(fv, fw)
848+ let fz = if ((fx >= ft))
849+ then (fx - ft)
850+ else throw(((((("You equipped " + toString(fx)) + " of ") + aT[dg]) + ", but tried to use ") + toString(ft)))
851+ $Tuple2(((((fu[0] + fs[0]) + ":") + toString(fz)) + fy), if (eU._2)
854852 then true
855- else if (if ((dh >= 6))
856- then (8 >= dh)
853+ else if (if ((dg >= 6))
854+ then (8 >= dg)
857855 else false)
858- then (fA == 0)
856+ then (fz == 0)
859857 else false)
860858 }
861859 }
862860 }
863861 }
864862
865- let eX = split(fq, "_")
866- let eY = size(eX)
867- let eZ = $Tuple2(fp, false)
868- func fa (fb,fc) = if ((fc >= eY))
869- then fb
870- else fr(fb, eX[fc])
871-
872- func fd (fb,fc) = if ((fc >= eY))
873- then fb
863+ let eW = split(fp, "_")
864+ let eX = size(eW)
865+ let eY = $Tuple2(fo, false)
866+ func eZ (fa,fb) = if ((fb >= eX))
867+ then fa
868+ else fq(fa, eW[fb])
869+
870+ func fc (fa,fb) = if ((fb >= eX))
871+ then fa
874872 else throw("List size exceeds 10")
875873
876- fd(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(eZ, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
874+ fc(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eY, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
877875 }
878876
879877
880-func fB (fC) = {
881- let fD = if ((fC == ""))
878+func fA (fB) = {
879+ let fC = if ((fB == ""))
882880 then nil
883- else split_4C(fC, "_")
884- func fE (eV,cu) = {
885- let fF = (size(eV) / 8)
886- let fy = if ((size(fD) > fF))
887- then parseIntValue(fD[fF])
881+ else split_4C(fB, "_")
882+ func fD (eU,ct) = {
883+ let fE = (size(eU) / 8)
884+ let fx = if ((size(fC) > fE))
885+ then parseIntValue(fC[fE])
888886 else 0
889- (eV + toBytes(fy))
887+ (eU + toBytes(fx))
890888 }
891889
892- let eX = aY
893- let eY = size(eX)
894- let eZ = base58''
895- func fa (fb,fc) = if ((fc >= eY))
896- then fb
897- else fE(fb, eX[fc])
898-
899- func fd (fb,fc) = if ((fc >= eY))
900- then fb
890+ let eW = aX
891+ let eX = size(eW)
892+ let eY = base58''
893+ func eZ (fa,fb) = if ((fb >= eX))
894+ then fa
895+ else fD(fa, eW[fb])
896+
897+ func fc (fa,fb) = if ((fb >= eX))
898+ then fa
901899 else throw("List size exceeds 50")
902900
903- fd(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(eZ, 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)
904- }
905-
906-
907-func fG (fH) = {
908- func fI (eV,cu) = {
909- let fF = size(eV)
910- let fJ = take(drop(fH, (8 * fF)), 8)
911- (eV :+ toString(toInt(fJ)))
901+ fc(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eY, 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)
902+ }
903+
904+
905+func fF (fG) = {
906+ func fH (eU,ct) = {
907+ let fE = size(eU)
908+ let fI = take(drop(fG, (8 * fE)), 8)
909+ (eU :+ toString(toInt(fI)))
912910 }
913911
914912 makeString_2C({
915- let eX = aY
916- let eY = size(eX)
917- let eZ = nil
918- func fa (fb,fc) = if ((fc >= eY))
919- then fb
920- else fI(fb, eX[fc])
921-
922- func fd (fb,fc) = if ((fc >= eY))
923- then fb
913+ let eW = aX
914+ let eX = size(eW)
915+ let eY = nil
916+ func eZ (fa,fb) = if ((fb >= eX))
917+ then fa
918+ else fH(fa, eW[fb])
919+
920+ func fc (fa,fb) = if ((fb >= eX))
921+ then fa
924922 else throw("List size exceeds 50")
925923
926- fd(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(eZ, 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)
924+ fc(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eY, 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)
927925 }, "_")
928926 }
929927
930928
931-func fK (fL,fM) = {
932- func fN (eV,fF) = {
933- let fO = if ((size(fL) > (7 + fF)))
934- then fL[(7 + fF)]
929+func fJ (fK,fL) = {
930+ func fM (eU,fE) = {
931+ let fN = if ((size(fK) > (7 + fE)))
932+ then fK[(7 + fE)]
935933 else 0
936- if ((parseIntValue(fM[fF]) > (fL[fF] + fO)))
937- then throw(("Requirement not satisfied: " + k[fF]))
934+ if ((parseIntValue(fL[fE]) > (fK[fE] + fN)))
935+ then throw(("Requirement not satisfied: " + k[fE]))
938936 else true
939937 }
940938
941- let eX = [0, 1, 2, 3, 4, 5, 6]
942- let eY = size(eX)
943- let eZ = false
944- func fa (fb,fc) = if ((fc >= eY))
945- then fb
946- else fN(fb, eX[fc])
947-
948- func fd (fb,fc) = if ((fc >= eY))
949- then fb
939+ let eW = [0, 1, 2, 3, 4, 5, 6]
940+ let eX = size(eW)
941+ let eY = false
942+ func eZ (fa,fb) = if ((fb >= eX))
943+ then fa
944+ else fM(fa, eW[fb])
945+
946+ func fc (fa,fb) = if ((fb >= eX))
947+ then fa
950948 else throw("List size exceeds 7")
951949
952- fd(fa(fa(fa(fa(fa(fa(fa(eZ, 0), 1), 2), 3), 4), 5), 6), 7)
953- }
954-
955-
956-func fP (fQ,fD,fR,fL,fS,fT) = {
957- let ft = split(fQ, ":")
958- if ((size(ft) != 2))
950+ fc(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eY, 0), 1), 2), 3), 4), 5), 6), 7)
951+ }
952+
953+
954+func fO (fP,fC,fQ,fK,fR,fS) = {
955+ let fs = split(fP, ":")
956+ if ((size(fs) != 2))
959957 then throw("Incorrect format, should be index:amount")
960- else if (if (!(fR))
961- then (size(ft[0]) != 2)
958+ else if (if (!(fQ))
959+ then (size(fs[0]) != 2)
962960 else false)
963961 then throw("Product idx should be 2 digits, zero padded")
964962 else {
965- let fU = parseIntValue(ft[0])
966- let fV = parseIntValue(ft[1])
967- if (!(containsElement(aX, fU)))
968- then throw((("Product '" + aU[fU]) + "' cannot be used for land defense"))
969- else if ((0 > fV))
963+ let fT = parseIntValue(fs[0])
964+ let fU = parseIntValue(fs[1])
965+ if (!(containsElement(aW, fT)))
966+ then throw((("Product '" + aT[fT]) + "' cannot be used for land defense"))
967+ else if ((0 > fU))
970968 then throw("Count can't be negative")
971- else if ((fV > u))
972- then throw(((("Can't put more than " + toString(u)) + " of ") + aU[fU]))
973- else if ((fV == 0))
974- then $Tuple3(fD, fS, fT)
969+ else if ((fU > u))
970+ then throw(((("Can't put more than " + toString(u)) + " of ") + aT[fT]))
971+ else if ((fU == 0))
972+ then $Tuple3(fC, fR, fS)
975973 else {
976- let fW = take(fD, (8 * fU))
977- let fy = toInt(take(drop(fD, (8 * fU)), 8))
978- let fz = drop(fD, (8 * (fU + 1)))
979- let cu = split(aY[fU], "_")
980- if (if (!(fR))
981- then (fV > fy)
974+ let fV = take(fC, (8 * fT))
975+ let fx = toInt(take(drop(fC, (8 * fT)), 8))
976+ let fy = drop(fC, (8 * (fT + 1)))
977+ let ct = split(aX[fT], "_")
978+ if (if (!(fQ))
979+ then (fU > fx)
982980 else false)
983- then throw(((((("You have " + toString(fy)) + " of ") + aU[fU]) + ", but tried to use ") + toString(fV)))
981+ then throw(((((("You have " + toString(fx)) + " of ") + aT[fT]) + ", but tried to use ") + toString(fU)))
984982 else {
985- let fA = if (if (!(fR))
986- then fK(fL, split(cu[bb], ","))
983+ let fz = if (if (!(fQ))
984+ then fJ(fK, split(ct[ba], ","))
987985 else false)
988- then (fy - fV)
989- else (fy + fV)
990- let fX = (eL(fA, bd) - eL(fy, bd))
991- $Tuple3(((fW + toBytes(fA)) + fz), (fS + fX), (fT - fX))
986+ then (fx - fU)
987+ else (fx + fU)
988+ let fW = (eK(fz, bc) - eK(fx, bc))
989+ $Tuple3(((fV + toBytes(fz)) + fy), (fR + fW), (fS - fW))
992990 }
993991 }
994992 }
995993 }
996994
997995
998-func fY (fQ,fD,fR,fZ,ga,gb,fL) = {
999- let ft = split(fQ, ":")
1000- if ((size(ft) != 2))
996+func fX (fP,fC,fQ,fY,fZ,ga,fK) = {
997+ let fs = split(fP, ":")
998+ if ((size(fs) != 2))
1001999 then throw("Incorrect format, should be index:amount")
1002- else if (if (!(fR))
1003- then (size(ft[0]) != 2)
1000+ else if (if (!(fQ))
1001+ then (size(fs[0]) != 2)
10041002 else false)
10051003 then throw("Product idx should be 2 digits, zero padded")
10061004 else {
1007- let fU = parseIntValue(ft[0])
1008- let fV = parseIntValue(ft[1])
1009- if (if ((0 > fU))
1005+ let fT = parseIntValue(fs[0])
1006+ let fU = parseIntValue(fs[1])
1007+ if (if ((0 > fT))
10101008 then true
1011- else (fU >= size(aY)))
1009+ else (fT >= size(aX)))
10121010 then throw("Unknown product idx")
1013- else if ((0 > fV))
1011+ else if ((0 > fU))
10141012 then throw("Count can't be negative")
1015- else if ((fV > u))
1016- then throw(((("Can't put more than " + toString(u)) + " of ") + aU[fU]))
1017- else if ((fV == 0))
1018- then $Tuple2(fD, false)
1013+ else if ((fU > u))
1014+ then throw(((("Can't put more than " + toString(u)) + " of ") + aT[fT]))
1015+ else if ((fU == 0))
1016+ then $Tuple2(fC, false)
10191017 else {
1020- let fW = take(fD, (8 * fU))
1021- let fy = toInt(take(drop(fD, (8 * fU)), 8))
1022- let fz = drop(fD, (8 * (fU + 1)))
1023- let cu = split(aY[fU], "_")
1024- if (if (!(fR))
1025- then (fV > fy)
1018+ let fV = take(fC, (8 * fT))
1019+ let fx = toInt(take(drop(fC, (8 * fT)), 8))
1020+ let fy = drop(fC, (8 * (fT + 1)))
1021+ let ct = split(aX[fT], "_")
1022+ if (if (!(fQ))
1023+ then (fU > fx)
10261024 else false)
1027- then throw(((((("You have " + toString(fy)) + " of ") + aU[fU]) + ", but tried to use ") + toString(fV)))
1025+ then throw(((((("You have " + toString(fx)) + " of ") + aT[fT]) + ", but tried to use ") + toString(fU)))
10281026 else {
1029- let gc = if (if (!(fR))
1030- then fK(fL, split(cu[bb], ","))
1027+ let gb = if (if (!(fQ))
1028+ then fJ(fK, split(ct[ba], ","))
10311029 else false)
10321030 then {
1033- let gd = cu[bc]
1034- if ((gd == ""))
1031+ let gc = ct[bb]
1032+ if ((gc == ""))
10351033 then throw("Item cannot be equipped")
10361034 else {
1037- let ge = parseIntValue(gd)
1038- let gf = (ge / 100)
1039- if ((fZ != gf))
1035+ let gd = parseIntValue(gc)
1036+ let ge = (gd / 100)
1037+ if ((fY != ge))
10401038 then throw("Segment incompatible")
10411039 else {
1042- let gg = ((ge % 100) / 10)
1043- if ((ga != gg))
1040+ let gf = ((gd % 100) / 10)
1041+ if ((fZ != gf))
10441042 then throw("Slot incompatible")
10451043 else {
1046- let gh = (ge % 10)
1047- if (if ((gb != 0))
1048- then (gh > 1)
1044+ let gg = (gd % 10)
1045+ if (if ((ga != 0))
1046+ then (gg > 1)
10491047 else false)
10501048 then throw("Big items should occupy slot 0")
1051- else (gh > 1)
1049+ else (gg > 1)
10521050 }
10531051 }
10541052 }
10551053 }
10561054 else false
1057- $Tuple2(((fW + toBytes((fy + (if (fR)
1058- then fV
1059- else -(fV))))) + fz), gc)
1055+ $Tuple2(((fV + toBytes((fx + (if (fQ)
1056+ then fU
1057+ else -(fU))))) + fy), gb)
10601058 }
10611059 }
10621060 }
10631061 }
10641062
10651063
1066-func gi (gj,gk,fR,fZ,ga,gl) = if ((gj != ""))
1064+func gh (gi,gj,fQ,fY,fZ,gk) = if ((gi != ""))
10671065 then {
1068- let gm = split(gj, ",")
1069- if ((size(gm) > t))
1066+ let gl = split(gi, ",")
1067+ if ((size(gl) > t))
10701068 then throw("Wrong slots format")
10711069 else {
1072- let gn = gm[0]
1073- let go = if ((size(gm) > 1))
1074- then gm[1]
1070+ let gm = gl[0]
1071+ let gn = if ((size(gl) > 1))
1072+ then gl[1]
10751073 else ""
1076- if (if ((gn == ""))
1077- then (go == "")
1074+ if (if ((gm == ""))
1075+ then (gn == "")
10781076 else false)
1079- then gk
1077+ then gj
10801078 else {
1081- let gp = if ((gn != ""))
1082- then fY(gn, gk, fR, fZ, ga, 0, gl)
1083- else $Tuple2(gk, false)
1084- if ((go != ""))
1085- then if (gp._2)
1079+ let go = if ((gm != ""))
1080+ then fX(gm, gj, fQ, fY, fZ, 0, gk)
1081+ else $Tuple2(gj, false)
1082+ if ((gn != ""))
1083+ then if (go._2)
10861084 then throw("Big item already occupies slot")
1087- else fY(go, gp._1, fR, fZ, ga, 1, gl)._1
1088- else gp._1
1085+ else fX(gn, go._1, fQ, fY, fZ, 1, gk)._1
1086+ else go._1
10891087 }
10901088 }
10911089 }
1092- else gk
1093-
1094-
1095-func gq (gr,gs,fR,gl) = {
1096- func fZ (eV,gt) = {
1097- let fF = eV._1
1098- let ga = split(gt, ";")
1099- if ((size(ga) != s))
1090+ else gj
1091+
1092+
1093+func gp (gq,gr,fQ,gk) = {
1094+ func fY (eU,gs) = {
1095+ let fE = eU._1
1096+ let fZ = split(gs, ";")
1097+ if ((size(fZ) != s))
11001098 then throw("Wrong segment format")
11011099 else {
1102- let gu = ga[0]
1103- let gv = ga[1]
1104- if (if ((gu == ""))
1105- then (gv == "")
1100+ let gt = fZ[0]
1101+ let gu = fZ[1]
1102+ if (if ((gt == ""))
1103+ then (gu == "")
11061104 else false)
1107- then $Tuple2((fF + 1), eV._2)
1105+ then $Tuple2((fE + 1), eU._2)
11081106 else {
1109- let gw = gi(gu, eV._2, fR, fF, 0, gl)
1110- $Tuple2((fF + 1), gi(gv, gw, fR, fF, 1, gl))
1107+ let gv = gh(gt, eU._2, fQ, fE, 0, gk)
1108+ $Tuple2((fE + 1), gh(gu, gv, fQ, fE, 1, gk))
11111109 }
11121110 }
11131111 }
11141112
1115-( let eX = gr
1116- let eY = size(eX)
1117- let eZ = $Tuple2(0, gs)
1118- func fa (fb,fc) = if ((fc >= eY))
1119- then fb
1120- else fZ(fb, eX[fc])
1121-
1122- func fd (fb,fc) = if ((fc >= eY))
1123- then fb
1113+( let eW = gq
1114+ let eX = size(eW)
1115+ let eY = $Tuple2(0, gr)
1116+ func eZ (fa,fb) = if ((fb >= eX))
1117+ then fa
1118+ else fY(fa, eW[fb])
1119+
1120+ func fc (fa,fb) = if ((fb >= eX))
1121+ then fa
11241122 else throw("List size exceeds 6")
11251123
1126- fd(fa(fa(fa(fa(fa(fa(eZ, 0), 1), 2), 3), 4), 5), 6))._2
1127- }
1128-
1129-
1130-func gx (gr,gs,fS,fT,fR,fL) = if ((3 > size(gr)))
1124+ fc(eZ(eZ(eZ(eZ(eZ(eZ(eY, 0), 1), 2), 3), 4), 5), 6))._2
1125+ }
1126+
1127+
1128+func gw (gq,gr,fR,fS,fQ,fK) = if ((3 > size(gq)))
11311129 then throw("At least duck, mines and traps parts are required")
11321130 else {
1133- func fZ (eV,gt) = {
1134- let fF = eV._1
1135- if ((fF == 0))
1136- then $Tuple4((fF + 1), eV._2, eV._3, eV._4)
1131+ func fY (eU,gs) = {
1132+ let fE = eU._1
1133+ if ((fE == 0))
1134+ then $Tuple4((fE + 1), eU._2, eU._3, eU._4)
11371135 else {
1138- let gy = fP(gt, eV._2, fR, fL, eV._3, eV._4)
1139- $Tuple4((fF + 1), gy._1, gy._2, gy._3)
1136+ let gx = fO(gs, eU._2, fQ, fK, eU._3, eU._4)
1137+ $Tuple4((fE + 1), gx._1, gx._2, gx._3)
11401138 }
11411139 }
11421140
1143- let gz = {
1144- let eX = gr
1145- let eY = size(eX)
1146- let eZ = $Tuple4(0, gs, fS, fT)
1147- func fa (fb,fc) = if ((fc >= eY))
1148- then fb
1149- else fZ(fb, eX[fc])
1150-
1151- func fd (fb,fc) = if ((fc >= eY))
1152- then fb
1141+ let gy = {
1142+ let eW = gq
1143+ let eX = size(eW)
1144+ let eY = $Tuple4(0, gr, fR, fS)
1145+ func eZ (fa,fb) = if ((fb >= eX))
1146+ then fa
1147+ else fY(fa, eW[fb])
1148+
1149+ func fc (fa,fb) = if ((fb >= eX))
1150+ then fa
11531151 else throw("List size exceeds 10")
11541152
1155- fd(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(eZ, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
1156- }
1157- $Tuple3(gz._2, gz._3, gz._4)
1153+ fc(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eY, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
1154+ }
1155+ $Tuple3(gy._2, gy._3, gy._4)
11581156 }
11591157
11601158
1161-func gA (B) = {
1162- let gB = G(B)
1163- let gC = split(valueOrElse(getString(gB), ",;,_,;,_,;,_,;,_,;,_,;,"), "_")
1164- let gD = gq(gC, ee, true, nil)
1165- let gE = split(gC[q], ";")[1]
1166- let ar = if ((gE == ""))
1159+func gz (B) = {
1160+ let gA = G(B)
1161+ let gB = split(valueOrElse(getString(gA), ",;,_,;,_,;,_,;,_,;,_,;,"), "_")
1162+ let gC = gp(gB, ed, true, nil)
1163+ let gD = split(gB[q], ";")[1]
1164+ let ar = if ((gD == ""))
11671165 then 0
11681166 else {
1169- let gF = split(gE, ",")[0]
1170- if ((gF == ""))
1167+ let gE = split(gD, ",")[0]
1168+ if ((gE == ""))
11711169 then 0
11721170 else {
1173- let fQ = split(gF, ":")
1174- let dh = fQ[0]
1175- let gG = fQ[1]
1176- if (if (if (if (if ((dh == "06"))
1171+ let fP = split(gE, ":")
1172+ let dg = fP[0]
1173+ let gF = fP[1]
1174+ if (if (if (if (if ((dg == "06"))
11771175 then true
1178- else (dh == "07"))
1176+ else (dg == "07"))
11791177 then true
1180- else (dh == "08"))
1181- then (gG != "")
1178+ else (dg == "08"))
1179+ then (gF != "")
11821180 else false)
1183- then (parseIntValue(gG) > 0)
1181+ then (parseIntValue(gF) > 0)
11841182 else false)
1185- then parseIntValue(split(aY[parseIntValue(dh)], "_")[ba])
1183+ then parseIntValue(split(aX[parseIntValue(dg)], "_")[aZ])
11861184 else 0
11871185 }
11881186 }
1189- let gl = ap(this, B, ar, true)
1190- let gH = gq(gC, gD, false, gl)
1191- (gH == gH)
1192- }
1193-
1194-
1195-func gI (gJ,gK,gL,gM) = if ((size(gJ) != aI))
1187+ let gk = ap(this, B, ar, true)
1188+ let gG = gp(gB, gC, false, gk)
1189+ (gG == gG)
1190+ }
1191+
1192+
1193+func gH (gI,gJ,gK,gL) = if ((size(gI) != aI))
11961194 then throw("Wrong proportions data")
11971195 else {
1198- func gN (eV,gO) = {
1199- let fn = (parseIntValue(gJ[gO]) + ((gM * gK[gO]) * gL))
1200- if ((0 > fn))
1201- then throw(((((((("Panic! Pieces of type=" + toString(gO)) + ", sign=") + toString(gM)) + ", terrainCounts[i]=") + toString(gK[gO])) + ", landSizeIndex=") + toString(gL)))
1202- else (eV :+ toString(fn))
1203- }
1204-
1205- let eX = cR
1206- let eY = size(eX)
1207- let eZ = nil
1208- func fa (fb,fc) = if ((fc >= eY))
1209- then fb
1210- else gN(fb, eX[fc])
1211-
1212- func fd (fb,fc) = if ((fc >= eY))
1213- then fb
1196+ func gM (eU,gN) = {
1197+ let fm = (parseIntValue(gI[gN]) + ((gL * gJ[gN]) * gK))
1198+ if ((0 > fm))
1199+ then throw(((((((("Panic! Pieces of type=" + toString(gN)) + ", sign=") + toString(gL)) + ", terrainCounts[i]=") + toString(gJ[gN])) + ", landSizeIndex=") + toString(gK)))
1200+ else (eU :+ toString(fm))
1201+ }
1202+
1203+ let eW = cQ
1204+ let eX = size(eW)
1205+ let eY = nil
1206+ func eZ (fa,fb) = if ((fb >= eX))
1207+ then fa
1208+ else gM(fa, eW[fb])
1209+
1210+ func fc (fa,fb) = if ((fb >= eX))
1211+ then fa
12141212 else throw("List size exceeds 6")
12151213
1216- fd(fa(fa(fa(fa(fa(fa(eZ, 0), 1), 2), 3), 4), 5), 6)
1214+ fc(eZ(eZ(eZ(eZ(eZ(eZ(eY, 0), 1), 2), 3), 4), 5), 6)
12171215 }
12181216
12191217
1220-func gP (gK,gL,gM) = {
1221- let gJ = split(valueOrElse(getString(dy()), "0_0_0_0_0_0"), "_")
1222- makeString(gI(gJ, gK, gL, gM), "_")
1223- }
1224-
1225-
1226-func gQ (gR) = [(size(split(gR, "A")) - 1), (size(split(gR, "B")) - 1), (size(split(gR, "C")) - 1), (size(split(gR, "D")) - 1), (size(split(gR, "E")) - 1), (size(split(gR, "F")) - 1)]
1227-
1228-
1229-func gS (gT,gK,gU,gL,gV) = {
1230- func gW (eV,gO) = {
1231- let gX = ((fraction(gU, gV, a) * gK[gO]) * gL)
1232- (eV :+ toString((parseIntValue(gT[gO]) + gX)))
1218+func gO (gJ,gK,gL) = {
1219+ let gI = split(valueOrElse(getString(dx()), "0_0_0_0_0_0"), "_")
1220+ makeString(gH(gI, gJ, gK, gL), "_")
1221+ }
1222+
1223+
1224+func gP (gQ) = [(size(split(gQ, "A")) - 1), (size(split(gQ, "B")) - 1), (size(split(gQ, "C")) - 1), (size(split(gQ, "D")) - 1), (size(split(gQ, "E")) - 1), (size(split(gQ, "F")) - 1)]
1225+
1226+
1227+func gR (gS,gJ,gT,gK,gU) = {
1228+ func gV (eU,gN) = {
1229+ let gW = ((fraction(gT, gU, a) * gJ[gN]) * gK)
1230+ (eU :+ toString((parseIntValue(gS[gN]) + gW)))
12331231 }
12341232
1235- let fg = {
1236- let eX = cR
1237- let eY = size(eX)
1238- let eZ = nil
1239- func fa (fb,fc) = if ((fc >= eY))
1240- then fb
1241- else gW(fb, eX[fc])
1242-
1243- func fd (fb,fc) = if ((fc >= eY))
1244- then fb
1233+ let ff = {
1234+ let eW = cQ
1235+ let eX = size(eW)
1236+ let eY = nil
1237+ func eZ (fa,fb) = if ((fb >= eX))
1238+ then fa
1239+ else gV(fa, eW[fb])
1240+
1241+ func fc (fa,fb) = if ((fb >= eX))
1242+ then fa
12451243 else throw("List size exceeds 6")
12461244
1247- fd(fa(fa(fa(fa(fa(fa(eZ, 0), 1), 2), 3), 4), 5), 6)
1245+ fc(eZ(eZ(eZ(eZ(eZ(eZ(eY, 0), 1), 2), 3), 4), 5), 6)
12481246 }
1249- makeString(fg, "_")
1250- }
1251-
1252-
1253-func gY (gK,gU,gL,gV) = {
1254- func gW (eV,gO) = {
1255- let gX = ((fraction(gU, gV, a) * gK[gO]) * gL)
1256- $Tuple2((eV._1 :+ gX), (eV._2 + gX))
1247+ makeString(ff, "_")
1248+ }
1249+
1250+
1251+func gX (gJ,gT,gK,gU) = {
1252+ func gV (eU,gN) = {
1253+ let gW = ((fraction(gT, gU, a) * gJ[gN]) * gK)
1254+ $Tuple2((eU._1 :+ gW), (eU._2 + gW))
12571255 }
12581256
1259- let eX = cR
1260- let eY = size(eX)
1261- let eZ = $Tuple2(nil, 0)
1262- func fa (fb,fc) = if ((fc >= eY))
1263- then fb
1264- else gW(fb, eX[fc])
1265-
1266- func fd (fb,fc) = if ((fc >= eY))
1267- then fb
1257+ let eW = cQ
1258+ let eX = size(eW)
1259+ let eY = $Tuple2(nil, 0)
1260+ func eZ (fa,fb) = if ((fb >= eX))
1261+ then fa
1262+ else gV(fa, eW[fb])
1263+
1264+ func fc (fa,fb) = if ((fb >= eX))
1265+ then fa
12681266 else throw("List size exceeds 6")
12691267
1270- fd(fa(fa(fa(fa(fa(fa(eZ, 0), 1), 2), 3), 4), 5), 6)
1271- }
1272-
1273-
1274-func gZ (ha,hb,hc,hd) = {
1275- let he = hc._1
1276- let hf = hc._2
1277- if ((hf == 0))
1278- then $Tuple2(makeString(ha, "_"), makeString(hb, "_"))
1279- else if ((hd >= hf))
1268+ fc(eZ(eZ(eZ(eZ(eZ(eZ(eY, 0), 1), 2), 3), 4), 5), 6)
1269+ }
1270+
1271+
1272+func gY (gZ,ha,hb,hc) = {
1273+ let hd = hb._1
1274+ let he = hb._2
1275+ if ((he == 0))
1276+ then $Tuple2(makeString(gZ, "_"), makeString(ha, "_"))
1277+ else if ((hc >= he))
12801278 then {
1281- func hg (eV,gO) = (eV :+ toString((parseIntValue(ha[gO]) + he[gO])))
1282-
1283- let fg = {
1284- let eX = cR
1285- let eY = size(eX)
1286- let eZ = nil
1287- func fa (fb,fc) = if ((fc >= eY))
1288- then fb
1289- else hg(fb, eX[fc])
1290-
1291- func fd (fb,fc) = if ((fc >= eY))
1292- then fb
1279+ func hf (eU,gN) = (eU :+ toString((parseIntValue(gZ[gN]) + hd[gN])))
1280+
1281+ let ff = {
1282+ let eW = cQ
1283+ let eX = size(eW)
1284+ let eY = nil
1285+ func eZ (fa,fb) = if ((fb >= eX))
1286+ then fa
1287+ else hf(fa, eW[fb])
1288+
1289+ func fc (fa,fb) = if ((fb >= eX))
1290+ then fa
12931291 else throw("List size exceeds 6")
12941292
1295- fd(fa(fa(fa(fa(fa(fa(eZ, 0), 1), 2), 3), 4), 5), 6)
1293+ fc(eZ(eZ(eZ(eZ(eZ(eZ(eY, 0), 1), 2), 3), 4), 5), 6)
12961294 }
1297- $Tuple2(makeString(fg, "_"), makeString(hb, "_"))
1295+ $Tuple2(makeString(ff, "_"), makeString(ha, "_"))
12981296 }
12991297 else {
1300- func hh (eV,gO) = {
1301- let hi = fraction(he[gO], hd, hf)
1302- $Tuple2((eV._1 :+ toString((parseIntValue(ha[gO]) + hi))), (eV._2 :+ toString(((parseIntValue(hb[gO]) + he[gO]) - hi))))
1298+ func hg (eU,gN) = {
1299+ let hh = fraction(hd[gN], hc, he)
1300+ $Tuple2((eU._1 :+ toString((parseIntValue(gZ[gN]) + hh))), (eU._2 :+ toString(((parseIntValue(ha[gN]) + hd[gN]) - hh))))
13031301 }
13041302
1305- let fg = {
1306- let eX = cR
1307- let eY = size(eX)
1308- let eZ = $Tuple2(nil, nil)
1309- func fa (fb,fc) = if ((fc >= eY))
1310- then fb
1311- else hh(fb, eX[fc])
1312-
1313- func fd (fb,fc) = if ((fc >= eY))
1314- then fb
1303+ let ff = {
1304+ let eW = cQ
1305+ let eX = size(eW)
1306+ let eY = $Tuple2(nil, nil)
1307+ func eZ (fa,fb) = if ((fb >= eX))
1308+ then fa
1309+ else hg(fa, eW[fb])
1310+
1311+ func fc (fa,fb) = if ((fb >= eX))
1312+ then fa
13151313 else throw("List size exceeds 6")
13161314
1317- fd(fa(fa(fa(fa(fa(fa(eZ, 0), 1), 2), 3), 4), 5), 6)
1315+ fc(eZ(eZ(eZ(eZ(eZ(eZ(eY, 0), 1), 2), 3), 4), 5), 6)
13181316 }
1319- $Tuple2(makeString(fg._1, "_"), makeString(fg._2, "_"))
1317+ $Tuple2(makeString(ff._1, "_"), makeString(ff._2, "_"))
13201318 }
13211319 }
13221320
13231321
1324-func hj (hk) = if ((hk >= toBigInt(0)))
1325- then hk
1326- else -(hk)
1327-
1328-
1329-let hl = [[35, 18, 30, 7, 6, 24], [29, 18, 29, 7, 8, 29], [6, 18, 29, 8, 30, 29], [6, 28, 6, 48, 26, 6], [24, 18, 6, 30, 30, 12]]
1330-
1331-let hm = [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]
1332-
1333-let hn = ["A", "B", "C", "D", "E", "F"]
1334-
1335-let ho = 10
1336-
1337-func hp (eV,hq) = (eV + parseIntValue(hq))
1338-
1339-
1340-func hr (hs,ht) = if ((hs == 0))
1341- then throw("maxRand should be non-zero")
1342- else {
1343- let hu = toBigInt(hs)
1344- $Tuple2(toInt((ht % hu)), (ht / hu))
1345- }
1346-
1347-
1348-func hv (hw,hx,hy) = {
1349- func hz (eV,hq) = if (eV._1)
1350- then eV
1351- else {
1352- let hA = ((eV._3 - hq) - hy)
1353- if ((0 > hA))
1354- then $Tuple3(true, eV._2, 0)
1355- else $Tuple3(false, (eV._2 + 1), hA)
1356- }
1357-
1358- let fg = {
1359- let eX = hw
1360- let eY = size(eX)
1361- let eZ = $Tuple3(false, 0, hx)
1362- func fa (fb,fc) = if ((fc >= eY))
1363- then fb
1364- else hz(fb, eX[fc])
1365-
1366- func fd (fb,fc) = if ((fc >= eY))
1367- then fb
1368- else throw("List size exceeds 6")
1369-
1370- fd(fa(fa(fa(fa(fa(fa(eZ, 0), 1), 2), 3), 4), 5), 6)
1371- }
1372- fg._2
1373- }
1374-
1375-
1376-func hB (hC,gL,hD) = {
1377- func hE (hF,hG) = {
1378- let fy = split(valueOrElse(getString(dz(hG)), "0_0_0_0_0_0"), "_")
1379- let hH = {
1380- let eX = fy
1381- let eY = size(eX)
1382- let eZ = 0
1383- func fa (fb,fc) = if ((fc >= eY))
1384- then fb
1385- else hp(fb, eX[fc])
1386-
1387- func fd (fb,fc) = if ((fc >= eY))
1388- then fb
1389- else throw("List size exceeds 6")
1390-
1391- fd(fa(fa(fa(fa(fa(fa(eZ, 0), 1), 2), 3), 4), 5), 6)
1392- }
1393- $Tuple2((hF._1 :+ hH), (hF._2 + hH))
1394- }
1395-
1396- let hI = {
1397- let eX = aV
1398- let eY = size(eX)
1399- let eZ = $Tuple2(nil, 0)
1400- func fa (fb,fc) = if ((fc >= eY))
1401- then fb
1402- else hE(fb, eX[fc])
1403-
1404- func fd (fb,fc) = if ((fc >= eY))
1405- then fb
1406- else throw("List size exceeds 5")
1407-
1408- fd(fa(fa(fa(fa(fa(eZ, 0), 1), 2), 3), 4), 5)
1409- }
1410- let hJ = hI._1
1411- let eQ = hI._2
1412- let hK = max(hJ)
1413- let hL = ((hK * aJ) - eQ)
1414- let hM = (hL / (ho * aJ))
1415- let hN = if (if ((hD >= 0))
1416- then (aJ > hD)
1417- else false)
1418- then $Tuple2(hD, hC)
1419- else if ((hL == 0))
1420- then hr(aJ, hC)
1421- else {
1422- let hO = hr((hL + (hM * aJ)), hC)
1423- let fg = hO._1
1424- let hP = hO._2
1425- func hQ (eV,hq) = (eV :+ (hK - hq))
1426-
1427- let hR = {
1428- let eX = hJ
1429- let eY = size(eX)
1430- let eZ = nil
1431- func hS (fb,fc) = if ((fc >= eY))
1432- then fb
1433- else hQ(fb, eX[fc])
1434-
1435- func hT (fb,fc) = if ((fc >= eY))
1436- then fb
1437- else throw("List size exceeds 6")
1438-
1439- hT(hS(hS(hS(hS(hS(hS(eZ, 0), 1), 2), 3), 4), 5), 6)
1440- }
1441- $Tuple2(hv(hR, fg, hM), hP)
1442- }
1443- let hU = hN._1
1444- let hV = hN._2
1445- let hW = hl[hU]
1446- let hX = split(valueOrElse(getString(dz(aV[hU])), "0_0_0_0_0_0"), "_")
1447- func hY (eV,hq) = (eV :+ parseIntValue(hq))
1448-
1449- let hZ = {
1450- let eX = hX
1451- let eY = size(eX)
1452- let eZ = nil
1453- func hS (fb,fc) = if ((fc >= eY))
1454- then fb
1455- else hY(fb, eX[fc])
1456-
1457- func hT (fb,fc) = if ((fc >= eY))
1458- then fb
1459- else throw("List size exceeds 6")
1460-
1461- hT(hS(hS(hS(hS(hS(hS(eZ, 0), 1), 2), 3), 4), 5), 6)
1462- }
1463- let ia = hJ[hU]
1464- func ib (hF,ic) = {
1465- func id (eV,fF) = (eV :+ ((hF._2[fF] * 120) - (hW[fF] * hF._3)))
1466-
1467- let ie = {
1468- let eX = cR
1469- let eY = size(eX)
1470- let eZ = nil
1471- func if (fb,fc) = if ((fc >= eY))
1472- then fb
1473- else id(fb, eX[fc])
1474-
1475- func ig (fb,fc) = if ((fc >= eY))
1476- then fb
1477- else throw("List size exceeds 6")
1478-
1479- ig(if(if(if(if(if(if(eZ, 0), 1), 2), 3), 4), 5), 6)
1480- }
1481- let ih = max(ie)
1482- func ii (eV,hq) = {
1483- let dF = (ih - hq)
1484- $Tuple2((eV._1 :+ dF), (eV._2 + dF))
1485- }
1486-
1487- let ij = {
1488- let eX = ie
1489- let eY = size(eX)
1490- let eZ = $Tuple2(nil, 0)
1491- func ik (fb,fc) = if ((fc >= eY))
1492- then fb
1493- else ii(fb, eX[fc])
1494-
1495- func il (fb,fc) = if ((fc >= eY))
1496- then fb
1497- else throw("List size exceeds 6")
1498-
1499- il(ik(ik(ik(ik(ik(ik(eZ, 0), 1), 2), 3), 4), 5), 6)
1500- }
1501- let im = ij._1
1502- let in = ij._2
1503- let io = (in / (ho * aI))
1504- let ip = if ((in == 0))
1505- then hr(aI, hF._4)
1506- else {
1507- let iq = hr((in + (io * aI)), hF._4)
1508- let fg = iq._1
1509- let hP = iq._2
1510- $Tuple2(hv(im, fg, io), hP)
1511- }
1512- let dh = ip._1
1513- let ir = ip._2
1514- func is (eV,fF) = (eV :+ (hF._2[fF] + (if ((fF == dh))
1515- then gL
1516- else 0)))
1517-
1518- let it = {
1519- let eX = cR
1520- let eY = size(eX)
1521- let eZ = nil
1522- func iu (fb,fc) = if ((fc >= eY))
1523- then fb
1524- else is(fb, eX[fc])
1525-
1526- func iv (fb,fc) = if ((fc >= eY))
1527- then fb
1528- else throw("List size exceeds 6")
1529-
1530- iv(iu(iu(iu(iu(iu(iu(eZ, 0), 1), 2), 3), 4), 5), 6)
1531- }
1532- $Tuple4((hF._1 + hn[dh]), it, (hF._3 + gL), ir)
1533- }
1534-
1535- let fn = {
1536- let eX = hm
1537- let eY = size(eX)
1538- let eZ = $Tuple4("", hZ, ia, hV)
1539- func if (fb,fc) = if ((fc >= eY))
1540- then fb
1541- else ib(fb, eX[fc])
1542-
1543- func ig (fb,fc) = if ((fc >= eY))
1544- then fb
1545- else throw("List size exceeds 25")
1546-
1547- ig(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(eZ, 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)
1548- }
1549- $Tuple2(hU, fn._1)
1550- }
1551-
1552-
1553-let iw = [[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]]
1554-
1555-func ix (dH,iy) = {
1556- let hA = toInt((dH % en))
1557- let iz = if ((iy[0] > hA))
1322+func hi (hj) = if ((hj >= toBigInt(0)))
1323+ then hj
1324+ else -(hj)
1325+
1326+
1327+let hk = [[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]]
1328+
1329+func hl (dG,hm) = {
1330+ let hn = toInt((dG % em))
1331+ let ho = if ((hm[0] > hn))
15581332 then "A"
1559- else if ((iy[1] > hA))
1333+ else if ((hm[1] > hn))
15601334 then "B"
1561- else if ((iy[2] > hA))
1335+ else if ((hm[2] > hn))
15621336 then "C"
1563- else if ((iy[3] > hA))
1337+ else if ((hm[3] > hn))
15641338 then "D"
1565- else if ((iy[4] > hA))
1339+ else if ((hm[4] > hn))
15661340 then "E"
15671341 else "F"
1568- iz
1569- }
1570-
1571-
1572-func iA (iB,iC) = {
1573- let iD = iw[iC]
1574- func iE (eV,eW) = $Tuple2((((((eV._1 + ix(eV._2, iD)) + ix((eV._2 / en), iD)) + ix((eV._2 / eo), iD)) + ix((eV._2 / ep), iD)) + ix((eV._2 / eq), iD)), (eV._2 / er))
1575-
1576- let gz = {
1577- let eX = [1, 2, 3, 4, 5]
1578- let eY = size(eX)
1579- let eZ = $Tuple2("", (iB / em))
1580- func fa (fb,fc) = if ((fc >= eY))
1581- then fb
1582- else iE(fb, eX[fc])
1583-
1584- func fd (fb,fc) = if ((fc >= eY))
1585- then fb
1342+ ho
1343+ }
1344+
1345+
1346+func hp (hq,hr) = {
1347+ let hs = hk[hr]
1348+ func ht (eU,eV) = $Tuple2((((((eU._1 + hl(eU._2, hs)) + hl((eU._2 / em), hs)) + hl((eU._2 / en), hs)) + hl((eU._2 / eo), hs)) + hl((eU._2 / ep), hs)), (eU._2 / eq))
1349+
1350+ let gy = {
1351+ let eW = [1, 2, 3, 4, 5]
1352+ let eX = size(eW)
1353+ let eY = $Tuple2("", (hq / el))
1354+ func eZ (fa,fb) = if ((fb >= eX))
1355+ then fa
1356+ else ht(fa, eW[fb])
1357+
1358+ func fc (fa,fb) = if ((fb >= eX))
1359+ then fa
15861360 else throw("List size exceeds 5")
15871361
1588- fd(fa(fa(fa(fa(fa(eZ, 0), 1), 2), 3), 4), 5)
1362+ fc(eZ(eZ(eZ(eZ(eZ(eY, 0), 1), 2), 3), 4), 5)
15891363 }
1590- gz._1
1591- }
1592-
1593-
1594-func iF (iG,gL) = {
1595- func iH (eV,dF) = {
1596- let fF = eV._2
1597- let hq = parseIntValue(dF)
1598- let hk = if ((hq == 0))
1364+ gy._1
1365+ }
1366+
1367+
1368+let hu = [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]
1369+
1370+let hv = ["A", "B", "C", "D", "E", "F"]
1371+
1372+func hw (hx,gK) = {
1373+ func hy (eU,dE) = {
1374+ let fE = eU._2
1375+ let hz = parseIntValue(dE)
1376+ let hj = if ((hz == 0))
15991377 then 0
1600- else if ((hq >= (4 * gL)))
1601- then (hq / gL)
1602- else if ((hq > (3 * gL)))
1378+ else if ((hz >= (4 * gK)))
1379+ then (hz / gK)
1380+ else if ((hz > (3 * gK)))
16031381 then 3
1604- else (((hq - 1) / gL) + 1)
1605- $Tuple3((eV._1 :+ hk), (eV._2 + 1), (eV._3 + hk))
1382+ else (((hz - 1) / gK) + 1)
1383+ $Tuple3((eU._1 :+ hj), (eU._2 + 1), (eU._3 + hj))
16061384 }
16071385
1608- let gz = {
1609- let eX = iG
1610- let eY = size(eX)
1611- let eZ = $Tuple3(nil, 0, 0)
1612- func fa (fb,fc) = if ((fc >= eY))
1613- then fb
1614- else iH(fb, eX[fc])
1615-
1616- func fd (fb,fc) = if ((fc >= eY))
1617- then fb
1386+ let gy = {
1387+ let eW = hx
1388+ let eX = size(eW)
1389+ let eY = $Tuple3(nil, 0, 0)
1390+ func eZ (fa,fb) = if ((fb >= eX))
1391+ then fa
1392+ else hy(fa, eW[fb])
1393+
1394+ func fc (fa,fb) = if ((fb >= eX))
1395+ then fa
16181396 else throw("List size exceeds 6")
16191397
1620- fd(fa(fa(fa(fa(fa(fa(eZ, 0), 1), 2), 3), 4), 5), 6)
1398+ fc(eZ(eZ(eZ(eZ(eZ(eZ(eY, 0), 1), 2), 3), 4), 5), 6)
16211399 }
1622- let hw = gz._1
1623- let iI = value(indexOf(hw, max(hw)))
1624- let hy = (gz._3 - 25)
1625- func iJ (eV,dh) = {
1626- let dR = (hw[dh] - (if ((dh == iI))
1627- then hy
1628- else 0))
1629- let dV = if ((dR == 0))
1400+ let hA = gy._1
1401+ let hB = value(indexOf(hA, max(hA)))
1402+ let hC = (gy._3 - 25)
1403+ func hD (eU,dg) = {
1404+ let dQ = if ((dg == hB))
1405+ then (hA[dg] - hC)
1406+ else hA[dg]
1407+ let dU = if ((dQ == 0))
16301408 then nil
1631- else split(drop(toString(pow(10, 0, dR, 0, 0, DOWN)), 1), "")
1632- let ge = hn[dh]
1633- func iK (hF,ic) = (hF :+ ge)
1634-
1635- let iL = {
1636- let eX = dV
1637- let eY = size(eX)
1638- let eZ = nil
1639- func hS (fb,fc) = if ((fc >= eY))
1640- then fb
1641- else iK(fb, eX[fc])
1642-
1643- func hT (fb,fc) = if ((fc >= eY))
1644- then fb
1409+ else split(drop(toString(pow(10, 0, dQ, 0, 0, DOWN)), 1), "")
1410+ let gd = hv[dg]
1411+ func hE (hF,hG) = (hF :+ gd)
1412+
1413+ let hH = {
1414+ let eW = dU
1415+ let eX = size(eW)
1416+ let eY = nil
1417+ func hI (fa,fb) = if ((fb >= eX))
1418+ then fa
1419+ else hE(fa, eW[fb])
1420+
1421+ func hJ (fa,fb) = if ((fb >= eX))
1422+ then fa
16451423 else throw("List size exceeds 25")
16461424
1647- hT(hS(hS(hS(hS(hS(hS(hS(hS(hS(hS(hS(hS(hS(hS(hS(hS(hS(hS(hS(hS(hS(hS(hS(hS(hS(eZ, 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)
1648- }
1649- (eV ++ iL)
1425+ hJ(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(eY, 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)
1426+ }
1427+ (eU ++ hH)
16501428 }
16511429
1652- let fg = {
1653- let eX = cR
1654- let eY = size(eX)
1655- let eZ = nil
1656- func hS (fb,fc) = if ((fc >= eY))
1657- then fb
1658- else iJ(fb, eX[fc])
1659-
1660- func hT (fb,fc) = if ((fc >= eY))
1661- then fb
1430+ let ff = {
1431+ let eW = cQ
1432+ let eX = size(eW)
1433+ let eY = nil
1434+ func hI (fa,fb) = if ((fb >= eX))
1435+ then fa
1436+ else hD(fa, eW[fb])
1437+
1438+ func hJ (fa,fb) = if ((fb >= eX))
1439+ then fa
16621440 else throw("List size exceeds 6")
16631441
1664- hT(hS(hS(hS(hS(hS(hS(eZ, 0), 1), 2), 3), 4), 5), 6)
1442+ hJ(hI(hI(hI(hI(hI(hI(eY, 0), 1), 2), 3), 4), 5), 6)
16651443 }
1666- func iM (eV,fF) = (eV + fg[fF])
1667-
1668- let eX = hm
1669- let eY = size(eX)
1670- let eZ = ""
1671- func if (fb,fc) = if ((fc >= eY))
1672- then fb
1673- else iM(fb, eX[fc])
1674-
1675- func ig (fb,fc) = if ((fc >= eY))
1676- then fb
1444+ func hK (eU,fE) = (eU + ff[fE])
1445+
1446+ let eW = hu
1447+ let eX = size(eW)
1448+ let eY = ""
1449+ func hL (fa,fb) = if ((fb >= eX))
1450+ then fa
1451+ else hK(fa, eW[fb])
1452+
1453+ func hM (fa,fb) = if ((fb >= eX))
1454+ then fa
16771455 else throw("List size exceeds 25")
16781456
1679- ig(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(eZ, 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)
1680- }
1681-
1682-
1683-func iN (iO) = {
1684- let gy = split(valueOrElse(getString(iO), "0:0_0_0_0_0_0:0_0_0_0_0_0:"), ":")
1685-[toString(valueOrElse(parseInt(gy[bn]), 0)), if ((size(split(gy[bo], "_")) == aI))
1686- then gy[bo]
1687- else "0_0_0_0_0_0", if ((size(split(gy[bp], "_")) == aI))
1688- then gy[bp]
1689- else "0_0_0_0_0_0", gy[bq]]
1690- }
1691-
1692-
1693-func iP (iQ) = {
1694- let ft = split(iQ, "_")
1695- ((aM * (parseIntValue(ft[1]) + 1)) * parseIntValue(ft[0]))
1696- }
1697-
1698-
1699-func iR (iS) = {
1700- let iT = iS[bh]
1701- func iU (eV,iV) = (eV + parseIntValue(iV))
1702-
1703- func iW (eV,iV) = {
1704- let dh = eV._1
1705- let eO = (((parseIntValue(iV) + bd) - 1) / bd)
1706- $Tuple2((dh + 1), (eV._2 + (eO * cL)))
1457+ hM(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(eY, 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)
1458+ }
1459+
1460+
1461+func hN (hO) = {
1462+ let gx = split(valueOrElse(getString(hO), "0:0_0_0_0_0_0:0_0_0_0_0_0:"), ":")
1463+[toString(valueOrElse(parseInt(gx[bm]), 0)), if ((size(split(gx[bn], "_")) == aI))
1464+ then gx[bn]
1465+ else "0_0_0_0_0_0", if ((size(split(gx[bo], "_")) == aI))
1466+ then gx[bo]
1467+ else "0_0_0_0_0_0", gx[bp]]
1468+ }
1469+
1470+
1471+func hP (hQ) = {
1472+ let fs = split(hQ, "_")
1473+ ((aL * (parseIntValue(fs[1]) + 1)) * parseIntValue(fs[0]))
1474+ }
1475+
1476+
1477+func hR (hS) = {
1478+ let hT = hS[bg]
1479+ func hU (eU,hV) = (eU + parseIntValue(hV))
1480+
1481+ func hW (eU,hV) = {
1482+ let dg = eU._1
1483+ let eN = (((parseIntValue(hV) + bc) - 1) / bc)
1484+ $Tuple2((dg + 1), (eU._2 + (eN * cK)))
17071485 }
17081486
1709- let iX = {
1710- let eX = split(iS[bf], "_")
1711- let eY = size(eX)
1712- let eZ = 0
1713- func fa (fb,fc) = if ((fc >= eY))
1714- then fb
1715- else iU(fb, eX[fc])
1716-
1717- func fd (fb,fc) = if ((fc >= eY))
1718- then fb
1487+ let hX = {
1488+ let eW = split(hS[be], "_")
1489+ let eX = size(eW)
1490+ let eY = 0
1491+ func eZ (fa,fb) = if ((fb >= eX))
1492+ then fa
1493+ else hU(fa, eW[fb])
1494+
1495+ func fc (fa,fb) = if ((fb >= eX))
1496+ then fa
17191497 else throw("List size exceeds 6")
17201498
1721- fd(fa(fa(fa(fa(fa(fa(eZ, 0), 1), 2), 3), 4), 5), 6)
1499+ fc(eZ(eZ(eZ(eZ(eZ(eZ(eY, 0), 1), 2), 3), 4), 5), 6)
17221500 }
1723- let iY = {
1724- let eX = split(iS[bg], "_")
1725- let eY = size(eX)
1726- let eZ = 0
1727- func hS (fb,fc) = if ((fc >= eY))
1728- then fb
1729- else iU(fb, eX[fc])
1730-
1731- func hT (fb,fc) = if ((fc >= eY))
1732- then fb
1501+ let hY = {
1502+ let eW = split(hS[bf], "_")
1503+ let eX = size(eW)
1504+ let eY = 0
1505+ func hI (fa,fb) = if ((fb >= eX))
1506+ then fa
1507+ else hU(fa, eW[fb])
1508+
1509+ func hJ (fa,fb) = if ((fb >= eX))
1510+ then fa
17331511 else throw("List size exceeds 6")
17341512
1735- hT(hS(hS(hS(hS(hS(hS(eZ, 0), 1), 2), 3), 4), 5), 6)
1513+ hJ(hI(hI(hI(hI(hI(hI(eY, 0), 1), 2), 3), 4), 5), 6)
17361514 }
1737- let iZ = if ((iT == ""))
1515+ let hZ = if ((hT == ""))
17381516 then 0
1739- else ( let eX = split_4C(iT, "_")
1740- let eY = size(eX)
1741- let eZ = $Tuple2(0, 0)
1742- func if (fb,fc) = if ((fc >= eY))
1743- then fb
1744- else iW(fb, eX[fc])
1745-
1746- func ig (fb,fc) = if ((fc >= eY))
1747- then fb
1517+ else ( let eW = split_4C(hT, "_")
1518+ let eX = size(eW)
1519+ let eY = $Tuple2(0, 0)
1520+ func hL (fa,fb) = if ((fb >= eX))
1521+ then fa
1522+ else hW(fa, eW[fb])
1523+
1524+ func hM (fa,fb) = if ((fb >= eX))
1525+ then fa
17481526 else throw("List size exceeds 50")
17491527
1750- ig(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(eZ, 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
1751- ((iX + iY) + iZ)
1752- }
1753-
1754-
1755-func ja (jb,jc,jd) = {
1756- let iQ = ((toString(jc) + "_") + toString(jd))
1757- let je = iP(iQ)
1758- let jf = valueOrElse(getString(jb), (iQ + ":0_0_0_0_0_0:0_0_0_0_0_0::0"))
1759- let jg = split_4C(jf, ":")
1760- let jh = iR(jg)
1761- let ji = if ((5 > size(jg)))
1762- then makeString(["0", toString(jh), toString((je - jh)), toString(je)], "_")
1528+ hM(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(eY, 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
1529+ ((hX + hY) + hZ)
1530+ }
1531+
1532+
1533+func ia (ib,ic,id) = {
1534+ let hQ = ((toString(ic) + "_") + toString(id))
1535+ let ie = hP(hQ)
1536+ let if = valueOrElse(getString(ib), (hQ + ":0_0_0_0_0_0:0_0_0_0_0_0::0"))
1537+ let ig = split_4C(if, ":")
1538+ let ih = hR(ig)
1539+ let ii = if ((5 > size(ig)))
1540+ then makeString(["0", toString(ih), toString((ie - ih)), toString(ie)], "_")
17631541 else {
1764- let jj = split(jg[bi], "_")
1765- let jk = parseIntValue(jj[bj])
1766- let jl = if ((size(jj) > 1))
1767- then parseIntValue(jj[bk])
1768- else jh
1769- makeString([toString(jk), toString(jl), toString(((je - jk) - jl)), toString(je)], "_")
1770- }
1771-[jg[be], if ((size(split(jg[bf], "_")) == aI))
1772- then jg[bf]
1773- else "0_0_0_0_0_0", if ((size(split(jg[bg], "_")) == aI))
1774- then jg[bg]
1775- else "0_0_0_0_0_0", jg[bh], ji]
1776- }
1777-
1778-
1779-func jm (iS) = {
1780- let jn = iR(iS)
1781- let jo = parseIntValue(split(iS[bi], "_")[bj])
1782- ((iP(iS[be]) - jn) - jo)
1783- }
1784-
1785-
1786-func jp (jq,iS,jr) = if ((size(jq) != 3))
1542+ let ij = split(ig[bh], "_")
1543+ let ik = parseIntValue(ij[bi])
1544+ let il = if ((size(ij) > 1))
1545+ then parseIntValue(ij[bj])
1546+ else ih
1547+ makeString([toString(ik), toString(il), toString(((ie - ik) - il)), toString(ie)], "_")
1548+ }
1549+[ig[bd], if ((size(split(ig[be], "_")) == aI))
1550+ then ig[be]
1551+ else "0_0_0_0_0_0", if ((size(split(ig[bf], "_")) == aI))
1552+ then ig[bf]
1553+ else "0_0_0_0_0_0", ig[bg], ii]
1554+ }
1555+
1556+
1557+func im (hS) = {
1558+ let in = hR(hS)
1559+ let io = parseIntValue(split(hS[bh], "_")[bi])
1560+ ((hP(hS[bd]) - in) - io)
1561+ }
1562+
1563+
1564+func ip (iq,hS,ir) = if ((size(iq) != 3))
17871565 then throw("cargoListStr should contain exactly 2 ':' separators")
17881566 else {
1789- let js = split(jq[0], "_")
1790- let jt = split(jq[1], "_")
1791- let ju = if ((jq[2] == ""))
1567+ let is = split(iq[0], "_")
1568+ let it = split(iq[1], "_")
1569+ let iu = if ((iq[2] == ""))
17921570 then nil
1793- else split_4C(jq[2], "_")
1794- if ((size(js) != aI))
1571+ else split_4C(iq[2], "_")
1572+ if ((size(is) != aI))
17951573 then throw("All 6 resources should be passed")
1796- else if ((size(jt) != aI))
1574+ else if ((size(it) != aI))
17971575 then throw("All 6 materials should be passed")
17981576 else {
1799- let hd = jm(iS)
1800- let jv = split(iS[bf], "_")
1801- let jw = split(iS[bg], "_")
1802- let jx = if ((iS[bh] == ""))
1577+ let hc = im(hS)
1578+ let iv = split(hS[be], "_")
1579+ let iw = split(hS[bf], "_")
1580+ let ix = if ((hS[bg] == ""))
18031581 then nil
1804- else split_4C(iS[bh], "_")
1805- let hb = split(jr[bo], "_")
1806- let jy = split(jr[bp], "_")
1807- let jz = if ((jr[bq] == ""))
1582+ else split_4C(hS[bg], "_")
1583+ let ha = split(ir[bn], "_")
1584+ let iy = split(ir[bo], "_")
1585+ let iz = if ((ir[bp] == ""))
18081586 then nil
1809- else split_4C(jr[bq], "_")
1810- func jA (eV,iV) = {
1811- let gO = eV._1
1812- let jB = parseIntValue(iV)
1813- let jC = parseIntValue(jv[gO])
1814- let jD = parseIntValue(hb[gO])
1815- if ((jB == 0))
1816- then $Tuple4((gO + 1), (eV._2 :+ jv[gO]), (eV._3 :+ hb[gO]), eV._4)
1817- else if ((jB > 0))
1818- then if ((jB > jD))
1819- then throw((((("Attempt to take " + iV) + " from backpack, but only ") + toString(jD)) + " available"))
1820- else $Tuple4((gO + 1), (eV._2 :+ toString((jC + jB))), (eV._3 :+ toString((jD - jB))), (eV._4 + jB))
1821- else if ((-(jB) > jC))
1822- then throw((((("Attempt to take " + toString(-(jB))) + " from warehouse, but only ") + toString(jC)) + " available"))
1823- else $Tuple4((gO + 1), (eV._2 :+ toString((jC + jB))), (eV._3 :+ toString((jD - jB))), (eV._4 + jB))
1587+ else split_4C(ir[bp], "_")
1588+ func iA (eU,hV) = {
1589+ let gN = eU._1
1590+ let iB = parseIntValue(hV)
1591+ let iC = parseIntValue(iv[gN])
1592+ let iD = parseIntValue(ha[gN])
1593+ if ((iB == 0))
1594+ then $Tuple4((gN + 1), (eU._2 :+ iv[gN]), (eU._3 :+ ha[gN]), eU._4)
1595+ else if ((iB > 0))
1596+ then if ((iB > iD))
1597+ then throw((((("Attempt to take " + hV) + " from backpack, but only ") + toString(iD)) + " available"))
1598+ else $Tuple4((gN + 1), (eU._2 :+ toString((iC + iB))), (eU._3 :+ toString((iD - iB))), (eU._4 + iB))
1599+ else if ((-(iB) > iC))
1600+ then throw((((("Attempt to take " + toString(-(iB))) + " from warehouse, but only ") + toString(iC)) + " available"))
1601+ else $Tuple4((gN + 1), (eU._2 :+ toString((iC + iB))), (eU._3 :+ toString((iD - iB))), (eU._4 + iB))
18241602 }
18251603
1826- let fg = {
1827- let eX = js
1828- let eY = size(eX)
1829- let eZ = $Tuple4(0, nil, nil, 0)
1830- func fa (fb,fc) = if ((fc >= eY))
1831- then fb
1832- else jA(fb, eX[fc])
1833-
1834- func fd (fb,fc) = if ((fc >= eY))
1835- then fb
1604+ let ff = {
1605+ let eW = is
1606+ let eX = size(eW)
1607+ let eY = $Tuple4(0, nil, nil, 0)
1608+ func eZ (fa,fb) = if ((fb >= eX))
1609+ then fa
1610+ else iA(fa, eW[fb])
1611+
1612+ func fc (fa,fb) = if ((fb >= eX))
1613+ then fa
18361614 else throw("List size exceeds 6")
18371615
1838- fd(fa(fa(fa(fa(fa(fa(eZ, 0), 1), 2), 3), 4), 5), 6)
1616+ fc(eZ(eZ(eZ(eZ(eZ(eZ(eY, 0), 1), 2), 3), 4), 5), 6)
18391617 }
1840- func jE (eV,iV) = {
1841- let gO = eV._1
1842- let jB = parseIntValue(iV)
1843- let jF = parseIntValue(jw[gO])
1844- let jG = parseIntValue(jy[gO])
1845- if ((jB == 0))
1846- then $Tuple4((gO + 1), (eV._2 :+ jw[gO]), (eV._3 :+ jy[gO]), eV._4)
1847- else if ((jB > 0))
1848- then if ((jB > jG))
1849- then throw((((("Attempt to take " + iV) + " from backpack, but only ") + toString(jG)) + " available"))
1850- else $Tuple4((gO + 1), (eV._2 :+ toString((jF + jB))), (eV._3 :+ toString((jG - jB))), (eV._4 + jB))
1851- else if ((-(jB) > jF))
1852- then throw((((("Attempt to take " + toString(-(jB))) + " from warehouse, but only ") + toString(jF)) + " available"))
1853- else $Tuple4((gO + 1), (eV._2 :+ toString((jF + jB))), (eV._3 :+ toString((jG - jB))), (eV._4 + jB))
1618+ func iE (eU,hV) = {
1619+ let gN = eU._1
1620+ let iB = parseIntValue(hV)
1621+ let iF = parseIntValue(iw[gN])
1622+ let iG = parseIntValue(iy[gN])
1623+ if ((iB == 0))
1624+ then $Tuple4((gN + 1), (eU._2 :+ iw[gN]), (eU._3 :+ iy[gN]), eU._4)
1625+ else if ((iB > 0))
1626+ then if ((iB > iG))
1627+ then throw((((("Attempt to take " + hV) + " from backpack, but only ") + toString(iG)) + " available"))
1628+ else $Tuple4((gN + 1), (eU._2 :+ toString((iF + iB))), (eU._3 :+ toString((iG - iB))), (eU._4 + iB))
1629+ else if ((-(iB) > iF))
1630+ then throw((((("Attempt to take " + toString(-(iB))) + " from warehouse, but only ") + toString(iF)) + " available"))
1631+ else $Tuple4((gN + 1), (eU._2 :+ toString((iF + iB))), (eU._3 :+ toString((iG - iB))), (eU._4 + iB))
18541632 }
18551633
1856- let gu = {
1857- let eX = jt
1858- let eY = size(eX)
1859- let eZ = $Tuple4(0, nil, nil, fg._4)
1860- func hS (fb,fc) = if ((fc >= eY))
1861- then fb
1862- else jE(fb, eX[fc])
1863-
1864- func hT (fb,fc) = if ((fc >= eY))
1865- then fb
1634+ let gt = {
1635+ let eW = it
1636+ let eX = size(eW)
1637+ let eY = $Tuple4(0, nil, nil, ff._4)
1638+ func hI (fa,fb) = if ((fb >= eX))
1639+ then fa
1640+ else iE(fa, eW[fb])
1641+
1642+ func hJ (fa,fb) = if ((fb >= eX))
1643+ then fa
18661644 else throw("List size exceeds 6")
18671645
1868- hT(hS(hS(hS(hS(hS(hS(eZ, 0), 1), 2), 3), 4), 5), 6)
1646+ hJ(hI(hI(hI(hI(hI(hI(eY, 0), 1), 2), 3), 4), 5), 6)
18691647 }
1870- func jH (eV,iV) = {
1871- let gO = eV._1
1872- let jB = parseIntValue(iV)
1873- let jI = if ((size(jx) > gO))
1874- then parseIntValue(jx[gO])
1648+ func iH (eU,hV) = {
1649+ let gN = eU._1
1650+ let iB = parseIntValue(hV)
1651+ let iI = if ((size(ix) > gN))
1652+ then parseIntValue(ix[gN])
18751653 else 0
1876- let jJ = if ((size(jz) > gO))
1877- then parseIntValue(jz[gO])
1654+ let iJ = if ((size(iz) > gN))
1655+ then parseIntValue(iz[gN])
18781656 else 0
1879- if ((jB == 0))
1880- then $Tuple4((gO + 1), (eV._2 :+ toString(jI)), (eV._3 :+ toString(jJ)), eV._4)
1881- else if ((jB > 0))
1882- then if ((jB > jJ))
1883- then throw((((("Attempt to take " + iV) + " from backpack, but only ") + toString(jJ)) + " available"))
1657+ if ((iB == 0))
1658+ then $Tuple4((gN + 1), (eU._2 :+ toString(iI)), (eU._3 :+ toString(iJ)), eU._4)
1659+ else if ((iB > 0))
1660+ then if ((iB > iJ))
1661+ then throw((((("Attempt to take " + hV) + " from backpack, but only ") + toString(iJ)) + " available"))
18841662 else {
1885- let fX = (eL((jI + jB), bd) - eL(jI, bd))
1886- $Tuple4((gO + 1), (eV._2 :+ toString((jI + jB))), (eV._3 :+ toString((jJ - jB))), (eV._4 + fX))
1663+ let fW = (eK((iI + iB), bc) - eK(iI, bc))
1664+ $Tuple4((gN + 1), (eU._2 :+ toString((iI + iB))), (eU._3 :+ toString((iJ - iB))), (eU._4 + fW))
18871665 }
1888- else if ((-(jB) > jI))
1889- then throw((((("Attempt to take " + toString(-(jB))) + " from warehouse, but only ") + toString(jI)) + " available"))
1666+ else if ((-(iB) > iI))
1667+ then throw((((("Attempt to take " + toString(-(iB))) + " from warehouse, but only ") + toString(iI)) + " available"))
18901668 else {
1891- let fX = (eL((jI + jB), bd) - eL(jI, bd))
1892- $Tuple4((gO + 1), (eV._2 :+ toString((jI + jB))), (eV._3 :+ toString((jJ - jB))), (eV._4 + fX))
1669+ let fW = (eK((iI + iB), bc) - eK(iI, bc))
1670+ $Tuple4((gN + 1), (eU._2 :+ toString((iI + iB))), (eU._3 :+ toString((iJ - iB))), (eU._4 + fW))
18931671 }
18941672 }
18951673
1896- let gy = if ((size(ju) != 0))
1674+ let gx = if ((size(iu) != 0))
18971675 then {
1898- let eX = ju
1899- let eY = size(eX)
1900- let eZ = $Tuple4(0, nil, nil, gu._4)
1901- func if (fb,fc) = if ((fc >= eY))
1902- then fb
1903- else jH(fb, eX[fc])
1904-
1905- func ig (fb,fc) = if ((fc >= eY))
1906- then fb
1676+ let eW = iu
1677+ let eX = size(eW)
1678+ let eY = $Tuple4(0, nil, nil, gt._4)
1679+ func hL (fa,fb) = if ((fb >= eX))
1680+ then fa
1681+ else iH(fa, eW[fb])
1682+
1683+ func hM (fa,fb) = if ((fb >= eX))
1684+ then fa
19071685 else throw("List size exceeds 50")
19081686
1909- ig(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(if(eZ, 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)
1687+ hM(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(hL(eY, 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)
19101688 }
1911- else $Tuple4(0, jx, jz, gu._4)
1912- let jK = gy._4
1913- if ((jK > hd))
1914- then throw((((("Attempt to put total " + toString(jK)) + " stuff, but only ") + toString(hd)) + " warehouse space left"))
1915- else $Tuple7(makeString(fg._2, "_"), makeString(gu._2, "_"), makeString_2C(gy._2, "_"), makeString(fg._3, "_"), makeString(gu._3, "_"), makeString_2C(gy._3, "_"), jK)
1689+ else $Tuple4(0, ix, iz, gt._4)
1690+ let iK = gx._4
1691+ if ((iK > hc))
1692+ then throw((((("Attempt to put total " + toString(iK)) + " stuff, but only ") + toString(hc)) + " warehouse space left"))
1693+ else $Tuple7(makeString(ff._2, "_"), makeString(gt._2, "_"), makeString_2C(gx._2, "_"), makeString(ff._3, "_"), makeString(gt._3, "_"), makeString_2C(gx._3, "_"), iK)
19161694 }
19171695 }
19181696
19191697
1920-func jL (jM,jN) = {
1921- let bR = toString(jM)
1922- let jO = hj(toBigInt(jN))
1923- let jP = valueOrElse(getInteger(et()), (es + 1))
1924- let ex = toString(jP)
1925- let iC = toInt((jO % em))
1926- let gR = iA(jO, iC)
1927- let dA = aV[iC]
1928- let jQ = Issue(eK(ex, "S"), makeString([ex, "S", gR, dA], "_"), 1, 0, false)
1929- let bv = calculateAssetId(jQ)
1930- let jR = toBase58String(bv)
1931- $Tuple2([IntegerEntry(et(), (jP + 1)), jQ, StringEntry(ew(ex), jR), StringEntry(bu(jR), bR), StringEntry(ez(ex), bR), IntegerEntry(bE(jR), 0), IntegerEntry(ey(jR, bR), 0), ScriptTransfer(jM, 1, bv)], $Tuple2(jR, dA))
1932- }
1933-
1934-
1935-func jS (bR,jT,jU) = if (!(sigVerify_8Kb(jT, jU, ed)))
1698+func iL (iM,iN) = {
1699+ let bQ = toString(iM)
1700+ let iO = hi(toBigInt(iN))
1701+ let iP = valueOrElse(getInteger(es()), (er + 1))
1702+ let ew = toString(iP)
1703+ let hr = toInt((iO % el))
1704+ let gQ = hp(iO, hr)
1705+ let dz = aU[hr]
1706+ let iQ = Issue(eJ(ew, "S"), makeString([ew, "S", gQ, dz], "_"), 1, 0, false)
1707+ let bu = calculateAssetId(iQ)
1708+ let iR = toBase58String(bu)
1709+ $Tuple2([IntegerEntry(es(), (iP + 1)), iQ, StringEntry(ev(ew), iR), StringEntry(bt(iR), bQ), StringEntry(ey(ew), bQ), IntegerEntry(bD(iR), 0), IntegerEntry(ex(iR, bQ), 0), ScriptTransfer(iM, 1, bu)], $Tuple2(iR, dz))
1710+ }
1711+
1712+
1713+func iS (bQ,iT,iU) = if (!(sigVerify_8Kb(iT, iU, ec)))
19361714 then throw("signature does not match")
19371715 else {
1938- let ft = split_4C(toUtf8String(jT), ";")
1939- let jV = split_4C(ft[0], "|")
1940- let jW = split(jV[eG], "_")
1941- let jX = parseIntValue(jW[0])
1942- let jY = parseIntValue(jW[1])
1943- let jZ = split(ft[1], ":")
1944- let ka = jZ[0]
1945- let kb = parseIntValue(jV[eH])
1946- if (if ((kb > (lastBlock.timestamp + ef)))
1716+ let fs = split_4C(toUtf8String(iT), ";")
1717+ let iV = split_4C(fs[0], "|")
1718+ let iW = split(iV[eF], "_")
1719+ let iX = parseIntValue(iW[0])
1720+ let iY = parseIntValue(iW[1])
1721+ let iZ = split(fs[1], ":")
1722+ let ja = iZ[0]
1723+ let jb = parseIntValue(iV[eG])
1724+ if (if ((jb > (lastBlock.timestamp + ee)))
19471725 then true
1948- else ((lastBlock.timestamp - ef) > kb))
1949- then throw(((("signature outdated: logTime=" + toString(kb)) + ", bcTime=") + toString(lastBlock.timestamp)))
1726+ else ((lastBlock.timestamp - ee) > jb))
1727+ then throw(((("signature outdated: logTime=" + toString(jb)) + ", bcTime=") + toString(lastBlock.timestamp)))
19501728 else {
1951- let kc = jZ[1]
1952- let kd = valueOrElse(getString(dP(bR)), "")
1953- if ((kd != kc))
1954- then throw(((("Tx ids don't match! In state: " + kd) + ", in msg: ") + kc))
1729+ let jc = iZ[1]
1730+ let jd = valueOrElse(getString(dO(bQ)), "")
1731+ if ((jd != jc))
1732+ then throw(((("Tx ids don't match! In state: " + jd) + ", in msg: ") + jc))
19551733 else {
1956- let B = valueOrErrorMessage(getString(bN(bR)), "You don't have a duck staked")
1957- let ke = A(B)
1958- let kf = aj(valueOrElse(getInteger(E(B)), 0))
1959- let kg = valueOrElse(getInteger(ke), kf)
1960- if ((kg != jX))
1961- then throw(((("oldHealth=" + toString(kg)) + " from state does not match one from flight log=") + toString(jX)))
1962- else if ((0 >= jX))
1734+ let B = valueOrErrorMessage(getString(bM(bQ)), "You don't have a duck staked")
1735+ let je = A(B)
1736+ let jf = aj(valueOrElse(getInteger(E(B)), 0))
1737+ let jg = valueOrElse(getInteger(je), jf)
1738+ if ((jg != iX))
1739+ then throw(((("oldHealth=" + toString(jg)) + " from state does not match one from flight log=") + toString(iX)))
1740+ else if ((0 >= iX))
19631741 then throw("You can't fly with zero health")
1964- else if (!(gA(B)))
1742+ else if (!(gz(B)))
19651743 then throw("Equipment incompatible")
19661744 else {
1967- let kh = if ((size(jV) > eI))
1968- then jV[eI]
1745+ let jh = if ((size(iV) > eH))
1746+ then iV[eH]
19691747 else ""
1970- let ki = if ((size(jV) > eJ))
1971- then jV[eJ]
1748+ let ji = if ((size(iV) > eI))
1749+ then iV[eI]
19721750 else ""
1973- let kj = if (if ((jY > 0))
1974- then (kh == "$")
1751+ let jj = if (if ((iY > 0))
1752+ then (jh == "$")
19751753 else false)
1976- then dG(invoke(di, "sendUsdtPrize", [bR], nil))
1754+ then dF(invoke(dh, "sendUsdtPrize", [bQ], nil))
19771755 else 0
1978- $Tuple5(jY, B, kj, ka, ki)
1756+ $Tuple5(iY, B, jj, ja, ji)
19791757 }
19801758 }
19811759 }
19821760 }
19831761
19841762
1985-func kk (Q,kl) = {
1986- let jd = valueOrElse(getInteger(bE(Q)), 0)
1987- let km = valueOrElse(getInteger(by(aH, Q)), 0)
1988- let kn = (jd / 6)
1989- let ko = (jd / 7)
1990- ((aL + fraction(aL, ((jd + kn) + (2 * ko)), 5)) + fraction(aL, km, (kl * 5)))
1991- }
1992-
1993-
1994-func kp (c,kq,kr) = {
1995- let ks = if ((kq == eD))
1996- then $Tuple2(kr, valueOrElse(getString(bN(c)), ""))
1763+func jk (Q,jl) = {
1764+ let id = valueOrElse(getInteger(bD(Q)), 0)
1765+ let jm = valueOrElse(getInteger(bx(aH, Q)), 0)
1766+ let jn = (id / 6)
1767+ let jo = (id / 7)
1768+ ((aK + fraction(aK, ((id + jn) + (2 * jo)), 5)) + fraction(aK, jm, (jl * 5)))
1769+ }
1770+
1771+
1772+func jp (c,jq,jr) = {
1773+ let js = if ((jq == eC))
1774+ then $Tuple2(jr, valueOrElse(getString(bM(c)), ""))
19971775 else {
1998- let B = valueOrErrorMessage(getString(bN(c)), "You don't have a duck staked")
1999- let kt = valueOrElse(getString(bP(B)), aN)
2000- let cl = split(value(kt), "_")
2001- if ((cl[bs] != "L"))
2002- then throw((("Duck location type is " + cl[bs]) + ", but should be L"))
2003- else $Tuple2(cl[bt], B)
2004- }
2005- let Q = ks._1
2006- let ku = ks._2
2007- let kv = value(assetInfo(fromBase58String(Q)))
2008- let kw = bx(Q)
2009- let kx = valueOrErrorMessage(getInteger(kw), (("Land " + kv.name) + " is not staked"))
2010- let ky = valueOrErrorMessage(getString(bu(Q)), (("NFT " + kv.name) + " is orphaned"))
2011- if ((ky != c))
1776+ let B = valueOrErrorMessage(getString(bM(c)), "You don't have a duck staked")
1777+ let jt = valueOrElse(getString(bO(B)), aM)
1778+ let ck = split(value(jt), "_")
1779+ if ((ck[br] != "L"))
1780+ then throw((("Duck location type is " + ck[br]) + ", but should be L"))
1781+ else $Tuple2(ck[bs], B)
1782+ }
1783+ let Q = js._1
1784+ let ju = js._2
1785+ let jv = value(assetInfo(fromBase58String(Q)))
1786+ let jw = bw(Q)
1787+ let jx = valueOrErrorMessage(getInteger(jw), (("Land " + jv.name) + " is not staked"))
1788+ let jy = valueOrErrorMessage(getString(bt(Q)), (("NFT " + jv.name) + " is orphaned"))
1789+ if ((jy != c))
20121790 then throw((aF + " is not yours"))
20131791 else {
2014- let kz = split(kv.description, "_")
2015- $Tuple4(ku, Q, kz, kx)
2016- }
2017- }
2018-
2019-
2020-func kA (c,eM,kq,kr) = if ((0 > eM))
1792+ let jz = split(jv.description, "_")
1793+ $Tuple4(ju, Q, jz, jx)
1794+ }
1795+ }
1796+
1797+
1798+func jA (c,eL,jq,jr) = if ((0 > eL))
20211799 then throw("Negative amount")
20221800 else {
2023- let ge = kp(c, kq, kr)
2024- let dM = ge._3[dp]
2025- let gK = gQ(ge._3[dq])
2026- let gU = (lastBlock.timestamp - ge._4)
2027- if ((0 > gU))
2028- then throw(((("Saved timestamp is in future, saved = " + toString(ge._4)) + ", current = ") + toString(lastBlock.timestamp)))
1801+ let gd = jp(c, jq, jr)
1802+ let dL = gd._3[do]
1803+ let gJ = gP(gd._3[dp])
1804+ let gT = (lastBlock.timestamp - gd._4)
1805+ if ((0 > gT))
1806+ then throw(((("Saved timestamp is in future, saved = " + toString(gd._4)) + ", current = ") + toString(lastBlock.timestamp)))
20291807 else {
2030- let kl = dL(dM)
2031- let kB = kk(ge._2, kl)
2032- let kC = fraction(gU, (kB * kl), a)
2033- if ((eM > kC))
2034- then throw(((("Not enough resources, available = " + toString(kC)) + ", requested = ") + toString(eM)))
1808+ let jl = dK(dL)
1809+ let jB = jk(gd._2, jl)
1810+ let jC = fraction(gT, (jB * jl), a)
1811+ if ((eL > jC))
1812+ then throw(((("Not enough resources, available = " + toString(jC)) + ", requested = ") + toString(eL)))
20351813 else {
2036- let kD = fraction((kC - eM), a, (kB * kl))
2037- let kE = (lastBlock.timestamp - kD)
2038- let jc = (kl / cM)
2039- let hc = gY(gK, (gU - kD), jc, kB)
2040- let jb = bD(ge._2)
2041- let jd = valueOrElse(getInteger(bE(ge._2)), 0)
2042- let iS = ja(jb, jc, jd)
2043- let jj = split(iS[bi], "_")
2044- let hd = parseIntValue(jj[bl])
2045- if (if ((kq == eD))
2046- then (eM > hd)
1814+ let jD = fraction((jC - eL), a, (jB * jl))
1815+ let jE = (lastBlock.timestamp - jD)
1816+ let ic = (jl / cL)
1817+ let hb = gX(gJ, (gT - jD), ic, jB)
1818+ let ib = bC(gd._2)
1819+ let id = valueOrElse(getInteger(bD(gd._2)), 0)
1820+ let hS = ia(ib, ic, id)
1821+ let ij = split(hS[bh], "_")
1822+ let hc = parseIntValue(ij[bk])
1823+ if (if ((jq == eC))
1824+ then (eL > hc)
20471825 else false)
2048- then throw((("Only " + toString(hd)) + " space left in warehouse"))
1826+ then throw((("Only " + toString(hc)) + " space left in warehouse"))
20491827 else {
2050- let iO = bO(ge._1)
2051- let jr = iN(iO)
2052- let hb = split(jr[bo], "_")
2053- let ha = split(iS[bf], "_")
2054- let kF = if ((kq == eD))
2055- then $Tuple4(gS(ha, gK, (gU - kD), jc, kB), jr[bo], (parseIntValue(jj[bk]) + hc._2), (parseIntValue(jj[bl]) - hc._2))
2056- else if ((kq == eE))
2057- then $Tuple4(iS[bf], gS(hb, gK, (gU - kD), jc, kB), parseIntValue(jj[bk]), parseIntValue(jj[bl]))
1828+ let hO = bN(gd._1)
1829+ let ir = hN(hO)
1830+ let ha = split(ir[bn], "_")
1831+ let gZ = split(hS[be], "_")
1832+ let jF = if ((jq == eC))
1833+ then $Tuple4(gR(gZ, gJ, (gT - jD), ic, jB), ir[bn], (parseIntValue(ij[bj]) + hb._2), (parseIntValue(ij[bk]) - hb._2))
1834+ else if ((jq == eD))
1835+ then $Tuple4(hS[be], gR(ha, gJ, (gT - jD), ic, jB), parseIntValue(ij[bj]), parseIntValue(ij[bk]))
20581836 else {
2059- let kG = gZ(ha, hb, hc, hd)
2060- let kH = min([parseIntValue(jj[bl]), hc._2])
2061- $Tuple4(kG._1, kG._2, (parseIntValue(jj[bk]) + kH), (parseIntValue(jj[bl]) - kH))
1837+ let jG = gY(gZ, ha, hb, hc)
1838+ let jH = min([parseIntValue(ij[bk]), hb._2])
1839+ $Tuple4(jG._1, jG._2, (parseIntValue(ij[bj]) + jH), (parseIntValue(ij[bk]) - jH))
20621840 }
2063- let kI = kF._1
2064- let kJ = kF._2
2065- let kK = kF._3
2066- let kL = kF._4
2067- $Tuple5([IntegerEntry(bx(ge._2), kE), IntegerEntry(bA(aF, ge._2, c), kE)], iO, [jr[bn], kJ, jr[bp], jr[bq]], jb, [iS[be], kI, iS[bg], iS[bh], makeString([jj[bj], toString(kK), toString(kL), jj[bm]], "_")])
1841+ let jI = jF._1
1842+ let jJ = jF._2
1843+ let jK = jF._3
1844+ let jL = jF._4
1845+ $Tuple5([IntegerEntry(bw(gd._2), jE), IntegerEntry(bz(aF, gd._2, c), jE)], hO, [ir[bm], jJ, ir[bo], ir[bp]], ib, [hS[bd], jI, hS[bf], hS[bg], makeString([ij[bi], toString(jK), toString(jL), ij[bl]], "_")])
20681846 }
20691847 }
20701848 }
20711849 }
20721850
20731851
2074-func kM (c,Q,kl,kq) = {
2075- let kw = bx(Q)
2076- let kx = value(getInteger(kw))
2077- let kC = (fraction((lastBlock.timestamp - kx), kk(Q, kl), a) * kl)
2078- kA(c, kC, kq, Q)
2079- }
2080-
2081-
2082-func kN (fi,jM,kO,Q) = {
2083- let c = toString(jM)
2084- let ge = kp(c, eF, Q)
2085- let kl = dL(ge._3[dp])
2086- let kP = bE(ge._2)
2087- let kQ = valueOrElse(getInteger(kP), 0)
2088- if (if (!(cA))
2089- then (kQ >= 3)
1852+func jM (c,Q,jl,jq) = {
1853+ let jw = bw(Q)
1854+ let jx = value(getInteger(jw))
1855+ let jC = (fraction((lastBlock.timestamp - jx), jk(Q, jl), a) * jl)
1856+ jA(c, jC, jq, Q)
1857+ }
1858+
1859+
1860+func jN (fh,iM,jO,Q) = {
1861+ let c = toString(iM)
1862+ let gd = jp(c, eE, Q)
1863+ let jl = dK(gd._3[do])
1864+ let jP = bD(gd._2)
1865+ let jQ = valueOrElse(getInteger(jP), 0)
1866+ if (if (!(cz))
1867+ then (jQ >= 3)
20901868 else false)
20911869 then throw("Currently max infrastructure level = 3")
20921870 else {
2093- let kR = ((sqrt(kl, 0, 0, DOWN) / 5) + 2)
2094- let ao = (kQ + 1)
2095- if (if (cA)
2096- then (ao > kR)
1871+ let jR = ((sqrt(jl, 0, 0, DOWN) / 5) + 2)
1872+ let ao = (jQ + 1)
1873+ if (if (cz)
1874+ then (ao > jR)
20971875 else false)
2098- then throw(("Currently max infrastructure level = " + toString(kR)))
1876+ then throw(("Currently max infrastructure level = " + toString(jR)))
20991877 else {
2100- let kS = fraction(ei, (kl * ao), cM)
2101- if (if (!(fi))
2102- then (kO != kS)
1878+ let jS = fraction(eh, (jl * ao), cL)
1879+ if (if (!(fh))
1880+ then (jO != jS)
21031881 else false)
2104- then throw(("Payment attached should be " + toString(kS)))
1882+ then throw(("Payment attached should be " + toString(jS)))
21051883 else {
2106- let iO = bO(ge._1)
2107- let jr = iN(iO)
2108- let kT = split(jr[bp], "_")
2109- let kU = fraction(cG, (kl * ao), cM)
2110- let kV = makeString(fh(fi, kT, kU), "_")
2111- let kW = kM(c, ge._2, kl, eF)
2112- let kX = kW._5
2113- let kY = iP(kX[be])
2114- let kZ = makeString([split(kX[be], "_")[0], toString(ao)], "_")
2115- let la = iP(kZ)
2116- let jj = split(kX[bi], "_")
2117- let lb = makeString([jj[bj], jj[bk], toString(((parseIntValue(jj[bl]) + la) - kY)), toString(la)], "_")
2118- $Tuple3(([IntegerEntry(kP, ao), IntegerEntry(ey(ge._2, c), ao), StringEntry(iO, makeString([jr[bn], kW._3[bo], kV, jr[bq]], ":")), StringEntry(kW._4, makeString([kZ, kX[bf], kX[bg], kX[bh], lb], ":"))] ++ kW._1), ao, kU)
1884+ let hO = bN(gd._1)
1885+ let ir = hN(hO)
1886+ let jT = split(ir[bo], "_")
1887+ let jU = fraction(cF, (jl * ao), cL)
1888+ let jV = makeString(fg(fh, jT, jU), "_")
1889+ let jW = jM(c, gd._2, jl, eE)
1890+ let jX = jW._5
1891+ let jY = hP(jX[bd])
1892+ let jZ = makeString([split(jX[bd], "_")[0], toString(ao)], "_")
1893+ let ka = hP(jZ)
1894+ let ij = split(jX[bh], "_")
1895+ let kb = makeString([ij[bi], ij[bj], toString(((parseIntValue(ij[bk]) + ka) - jY)), toString(ka)], "_")
1896+ $Tuple3(([IntegerEntry(jP, ao), IntegerEntry(ex(gd._2, c), ao), StringEntry(hO, makeString([ir[bm], jW._3[bn], jV, ir[bp]], ":")), StringEntry(jW._4, makeString([jZ, jX[be], jX[bf], jX[bg], kb], ":"))] ++ jW._1), ao, jU)
21191897 }
21201898 }
21211899 }
21221900 }
21231901
21241902
2125-func lc (ld,le,lf,lg) = {
2126- let ai = valueOrElse(getInteger(le), 0)
2127- let an = (ai + lg)
2128- let lh = al(valueOrElse(getInteger(ld), 0), an)
2129- $Tuple2([IntegerEntry(ld, lh[0]), IntegerEntry(le, an), IntegerEntry(lf, (valueOrElse(getInteger(lf), 0) + lh[1]))], an)
2130- }
2131-
2132-
2133-func li (B,lg) = lc(E(B), D(B), F(B), lg)
2134-
2135-
2136-func lj (c,lg) = lc(I(c), H(c), J(c), lg)
2137-
2138-
2139-func lk (c) = {
2140- let B = valueOrErrorMessage(getString(bN(c)), "You don't have a duck staked")
2141- let ll = bI(c)
2142- let lm = getString(ll)
2143- if (!(isDefined(lm)))
1903+func kc (kd,ke,kf,kg) = {
1904+ let ai = valueOrElse(getInteger(ke), 0)
1905+ let an = (ai + kg)
1906+ let kh = al(valueOrElse(getInteger(kd), 0), an)
1907+ $Tuple2([IntegerEntry(kd, kh[0]), IntegerEntry(ke, an), IntegerEntry(kf, (valueOrElse(getInteger(kf), 0) + kh[1]))], an)
1908+ }
1909+
1910+
1911+func ki (B,kg) = kc(E(B), D(B), F(B), kg)
1912+
1913+
1914+func kj (c,kg) = kc(I(c), H(c), J(c), kg)
1915+
1916+
1917+func kk (c) = {
1918+ let B = valueOrErrorMessage(getString(bM(c)), "You don't have a duck staked")
1919+ let kl = bH(c)
1920+ let km = getString(kl)
1921+ if (!(isDefined(km)))
21441922 then throw("You are not eligible for ONBOARD artifact")
21451923 else {
2146- let ln = bK(c)
2147- let lo = getString(ln)
2148- if (isDefined(lo))
2149- then throw(("You already used your ONBOARD artifact on duck " + value(lo)))
1924+ let kn = bJ(c)
1925+ let ko = getString(kn)
1926+ if (isDefined(ko))
1927+ then throw(("You already used your ONBOARD artifact on duck " + value(ko)))
21501928 else {
2151- let lp = bJ(B)
2152- let lq = getString(lp)
2153- if (isDefined(lq))
2154- then throw(((("The duck " + B) + " already got points from ONBOARD artifact from user ") + value(lq)))
2155- else ([StringEntry(ln, B), StringEntry(lp, c)] ++ li(B, af)._1)
1929+ let kp = bI(B)
1930+ let kq = getString(kp)
1931+ if (isDefined(kq))
1932+ then throw(((("The duck " + B) + " already got points from ONBOARD artifact from user ") + value(kq)))
1933+ else ([StringEntry(kn, B), StringEntry(kp, c)] ++ ki(B, af)._1)
21561934 }
21571935 }
21581936 }
21591937
21601938
2161-func lr (c,kr) = {
2162- let ge = kp(c, eF, kr)
2163- let Q = ge._2
2164- let kl = dL(ge._3[dp])
2165- let ls = by(aH, Q)
2166- if ((valueOrElse(getInteger(ls), 0) > 0))
1939+func kr (c,jr) = {
1940+ let gd = jp(c, eE, jr)
1941+ let Q = gd._2
1942+ let jl = dK(gd._3[do])
1943+ let ks = bx(aH, Q)
1944+ if ((valueOrElse(getInteger(ks), 0) > 0))
21671945 then throw("Presale artifact is already activated")
2168- else if ((parseIntValue(ge._3[do]) > es))
1946+ else if ((parseIntValue(gd._3[dn]) > er))
21691947 then throw((((aF + " ") + Q) + " is not eligible for presale artifact"))
21701948 else {
2171- let kW = kM(c, Q, kl, eF)
2172- (((kW._1 :+ IntegerEntry(ls, kl)) :+ StringEntry(kW._2, makeString(kW._3, ":"))) :+ StringEntry(kW._4, makeString(kW._5, ":")))
1949+ let jW = jM(c, Q, jl, eE)
1950+ (((jW._1 :+ IntegerEntry(ks, jl)) :+ StringEntry(jW._2, makeString(jW._3, ":"))) :+ StringEntry(jW._4, makeString(jW._5, ":")))
21731951 }
21741952 }
21751953
21761954
2177-func lt (B) = {
2178- let ck = valueOrElse(getInteger(dm, bV), 0)
2179- let kt = split(valueOrElse(getString(bP(B)), aN), "_")
1955+func kt (B) = {
1956+ let cj = valueOrElse(getInteger(dl, bU), 0)
1957+ let jt = split(valueOrElse(getString(bO(B)), aM), "_")
21801958 let aA = lastBlock.timestamp
2181- let cm = ce(dm, ck)
2182- let cg = cm[ca]
2183- let ch = cm[cb]
2184- if ((kt[bs] != "T"))
1959+ let cl = cd(dl, cj)
1960+ let cf = cl[bZ]
1961+ let cg = cl[ca]
1962+ if ((jt[br] != "T"))
21851963 then false
2186- else if (if (if ((parseIntValue(kt[br]) == ck))
2187- then (ch[cd] == "INPROGRESS")
1964+ else if (if (if ((parseIntValue(jt[bq]) == cj))
1965+ then (cg[cc] == "INPROGRESS")
21881966 else false)
2189- then (parseIntValue(cg[cc]) > aA)
1967+ then (parseIntValue(cf[cb]) > aA)
21901968 else false)
21911969 then throw("Your duck is taking part in the tournament")
2192- else dK(invoke(this, "exitTournamentInternal", [B], nil))
2193- }
2194-
2195-
2196-func lu (B) = {
2197- let kt = split(valueOrElse(getString(bP(B)), aN), "_")
1970+ else dJ(invoke(this, "exitTournamentInternal", [B], nil))
1971+ }
1972+
1973+
1974+func ku (B) = {
1975+ let jt = split(valueOrElse(getString(bO(B)), aM), "_")
21981976 let aA = lastBlock.timestamp
2199- if ((kt[bs] != "D"))
1977+ if ((jt[br] != "D"))
22001978 then false
22011979 else {
2202- let co = parseIntValue(kt[br])
2203- let cp = parseIntValue(kt[bt])
2204- if (if (((co + aR) > aA))
2205- then (1 > cp)
1980+ let cn = parseIntValue(jt[bq])
1981+ let co = parseIntValue(jt[bs])
1982+ if (if (((cn + aQ) > aA))
1983+ then (1 > co)
22061984 else false)
22071985 then throw("Your duck is on delivery mission")
2208- else dK(invoke(this, "exitDeliveryInternal", [B], nil))
2209- }
2210- }
2211-
2212-
2213-func lv (B,fN,jY,lw) = {
2214- let kt = split(valueOrElse(getString(bP(B)), aN), "_")
1986+ else dJ(invoke(this, "exitDeliveryInternal", [B], nil))
1987+ }
1988+ }
1989+
1990+
1991+func kv (B,fM,iY,kw) = {
1992+ let jt = split(valueOrElse(getString(bO(B)), aM), "_")
22151993 let aA = lastBlock.timestamp
2216- let co = parseIntValue(kt[br])
2217- let cp = parseIntValue(kt[bt])
2218- let ky = valueOrErrorMessage(getString(bM(B)), "NFT duck is orphaned")
2219- let lx = A(B)
2220- let ly = getIntegerValue(lx)
2221- let lz = if (if ((cp > 0))
1994+ let cn = parseIntValue(jt[bq])
1995+ let co = parseIntValue(jt[bs])
1996+ let jy = valueOrErrorMessage(getString(bL(B)), "NFT duck is orphaned")
1997+ let kx = A(B)
1998+ let ky = getIntegerValue(kx)
1999+ let kz = if (if ((co > 0))
22222000 then true
2223- else if (if (fN)
2224- then (lw > 0)
2001+ else if (if (fM)
2002+ then (kw > 0)
22252003 else false)
2226- then (jY > 0)
2004+ then (iY > 0)
22272005 else false)
22282006 then {
2229- let lA = invoke(dj, "sendDeliveryReward", [ky], nil)
2230- if ((lA == lA))
2007+ let kA = invoke(di, "sendDeliveryReward", [jy], nil)
2008+ if ((kA == kA))
22312009 then {
2232- let lB = V(ky)
2233-[IntegerEntry(lB, (valueOrElse(getInteger(lB), 0) + 1)), IntegerEntry(W(ky), (co / a))]
2010+ let kB = V(jy)
2011+[IntegerEntry(kB, (valueOrElse(getInteger(kB), 0) + 1)), IntegerEntry(W(jy), (cn / a))]
22342012 }
22352013 else throw("Strict value is not equal to itself.")
22362014 }
2237- else if (if (if (fN)
2238- then (jY > 0)
2015+ else if (if (if (fM)
2016+ then (iY > 0)
22392017 else false)
2240- then ((co + aR) > aA)
2018+ then ((cn + aQ) > aA)
22412019 else false)
22422020 then throw("Your duck is still on delivery mission")
22432021 else {
2244- let lC = valueOrElse(getInteger(dj, bU), 0)
2245- let lD = invoke(dj, "updateDeliveryLocked", [(lC - aQ)], nil)
2246- if ((lD == lD))
2247- then if (if (if (fN)
2248- then (0 >= jY)
2022+ let kC = valueOrElse(getInteger(di, bT), 0)
2023+ let kD = invoke(di, "updateDeliveryLocked", [(kC - aP)], nil)
2024+ if ((kD == kD))
2025+ then if (if (if (fM)
2026+ then (0 >= iY)
22492027 else false)
22502028 then true
2251- else (0 >= ly))
2029+ else (0 >= ky))
22522030 then nil
2253- else [IntegerEntry(U(B), (co + cI))]
2031+ else [IntegerEntry(U(B), (cn + cH))]
22542032 else throw("Strict value is not equal to itself.")
22552033 }
2256- let lE = getStringValue(L(B))
2257- $Tuple3(lz, [StringEntry(bP(B), lE)], lE)
2258- }
2259-
2260-
2261-func lF (lG,ao,lH,c,lI,lJ) = {
2262- let B = valueOrErrorMessage(getString(bN(c)), "You don't have a duck staked")
2263- if (lt(B))
2034+ let kE = getStringValue(L(B))
2035+ $Tuple3(kz, [StringEntry(bO(B), kE)], kE)
2036+ }
2037+
2038+
2039+func kF (kG,ao,kH,c,kI,kJ) = {
2040+ let B = valueOrErrorMessage(getString(bM(c)), "You don't have a duck staked")
2041+ if (kt(B))
22642042 then throw("mergeInternal_checkTournament")
2265- else if (lu(B))
2043+ else if (ku(B))
22662044 then throw("mergeInternal_checkDelivery")
22672045 else {
2268- func lK (eV,Q) = {
2269- let kv = value(assetInfo(fromBase58String(Q)))
2270- let kw = bx(Q)
2271- let kx = valueOrErrorMessage(getInteger(kw), (("NFT " + kv.name) + " is not staked"))
2272- let ky = valueOrErrorMessage(getString(bu(Q)), (("NFT " + kv.name) + " is orphaned"))
2273- if ((ky != c))
2046+ func kK (eU,Q) = {
2047+ let jv = value(assetInfo(fromBase58String(Q)))
2048+ let jw = bw(Q)
2049+ let jx = valueOrErrorMessage(getInteger(jw), (("NFT " + jv.name) + " is not staked"))
2050+ let jy = valueOrErrorMessage(getString(bt(Q)), (("NFT " + jv.name) + " is orphaned"))
2051+ if ((jy != c))
22742052 then throw((aF + " is not yours"))
22752053 else {
2276- let kz = split(kv.description, "_")
2277- let dA = kz[dr]
2278- if (if ((eV._3 != ""))
2279- then (eV._3 != dA)
2054+ let jz = split(jv.description, "_")
2055+ let dz = jz[dq]
2056+ if (if ((eU._3 != ""))
2057+ then (eU._3 != dz)
22802058 else false)
22812059 then throw("Lands should be on the same continent to merge")
22822060 else {
2283- let dM = kz[dp]
2284- let lL = eV._1
2285- let gO = valueOrErrorMessage(indexOf(lL, dM), "You haven't passed all the lands needed")
2286- let lM = (take(lL, gO) + drop(lL, (gO + 1)))
2287- let kl = dL(dM)
2288- let lN = (eV._2 + valueOrElse(getInteger(by(aH, Q)), 0))
2289- let jd = valueOrElse(getInteger(bE(Q)), 0)
2290- let lO = {
2291- let cE = dM
2292- if (("S" == cE))
2061+ let dL = jz[do]
2062+ let kL = eU._1
2063+ let gN = valueOrErrorMessage(indexOf(kL, dL), "You haven't passed all the lands needed")
2064+ let kM = (take(kL, gN) + drop(kL, (gN + 1)))
2065+ let jl = dK(dL)
2066+ let kN = (eU._2 + valueOrElse(getInteger(bx(aH, Q)), 0))
2067+ let id = valueOrElse(getInteger(bD(Q)), 0)
2068+ let kO = {
2069+ let cD = dL
2070+ if (("S" == cD))
22932071 then 3
2294- else if (("M" == cE))
2072+ else if (("M" == cD))
22952073 then 4
2296- else if (("L" == cE))
2074+ else if (("L" == cD))
22972075 then 5
2298- else if (("XL" == cE))
2076+ else if (("XL" == cD))
22992077 then 6
23002078 else throw("Only S, M, L, XL can merge")
23012079 }
2302- if ((jd != lO))
2080+ if ((id != kO))
23032081 then throw("All lands should be maxed to merge")
23042082 else {
2305- let ex = kz[do]
2306- let gK = gQ(kz[dq])
2307- let gU = (lastBlock.timestamp - kx)
2308- if ((0 > gU))
2309- then throw(((("Saved timestamp is in future, saved = " + toString(kx)) + ", current = ") + toString(lastBlock.timestamp)))
2083+ let ew = jz[dn]
2084+ let gJ = gP(jz[dp])
2085+ let gT = (lastBlock.timestamp - jx)
2086+ if ((0 > gT))
2087+ then throw(((("Saved timestamp is in future, saved = " + toString(jx)) + ", current = ") + toString(lastBlock.timestamp)))
23102088 else {
2311- let kB = kk(Q, kl)
2312- let jc = (kl / cM)
2313- let kJ = gS(split(eV._4, "_"), gK, gU, jc, kB)
2314- let ff = gI(eV._6, gK, jc, -1)
2315- let lP = gI(eV._10, gK, jc, -1)
2316- let iG = gI(eV._9, gK, jc, 1)
2317- let lQ = eV._7
2318- let dh = indexOf(lQ, Q)
2319- if (!(isDefined(dh)))
2089+ let jB = jk(Q, jl)
2090+ let ic = (jl / cL)
2091+ let jJ = gR(split(eU._4, "_"), gJ, gT, ic, jB)
2092+ let fe = gH(eU._6, gJ, ic, -1)
2093+ let kP = gH(eU._10, gJ, ic, -1)
2094+ let hx = gH(eU._9, gJ, ic, 1)
2095+ let kQ = eU._7
2096+ let dg = indexOf(kQ, Q)
2097+ if (!(isDefined(dg)))
23202098 then throw(("Your staked lands don't contain " + Q))
23212099 else {
2322- let lR = bw(Q)
2323- let lS = valueOrElse(getString(lR), "")
2324- $Tuple10(lM, lN, dA, kJ, ((((((((((((eV._5 :+ DeleteEntry(bx(Q))) :+ DeleteEntry(bA(aF, Q, c))) :+ DeleteEntry(ew(ex))) :+ DeleteEntry(bu(Q))) :+ DeleteEntry(bE(Q))) :+ DeleteEntry(ey(Q, c))) :+ DeleteEntry(by(aH, Q))) :+ DeleteEntry(ez(ex))) :+ DeleteEntry(bD(Q))) :+ DeleteEntry(lR)) :+ Burn(fromBase58String(Q), 1)) ++ (if ((lS != ""))
2325- then [DeleteEntry(eu(lS))]
2326- else nil)), ff, removeByIndex(lQ, value(dh)), (eV._8 + kl), iG, lP)
2100+ let kR = bv(Q)
2101+ let kS = valueOrElse(getString(kR), "")
2102+ $Tuple10(kM, kN, dz, jJ, ((((((((((((eU._5 :+ DeleteEntry(bw(Q))) :+ DeleteEntry(bz(aF, Q, c))) :+ DeleteEntry(ev(ew))) :+ DeleteEntry(bt(Q))) :+ DeleteEntry(bD(Q))) :+ DeleteEntry(ex(Q, c))) :+ DeleteEntry(bx(aH, Q))) :+ DeleteEntry(ey(ew))) :+ DeleteEntry(bC(Q))) :+ DeleteEntry(kR)) :+ Burn(fromBase58String(Q), 1)) ++ (if ((kS != ""))
2103+ then [DeleteEntry(et(kS))]
2104+ else nil)), fe, removeByIndex(kQ, value(dg)), (eU._8 + jl), hx, kP)
23272105 }
23282106 }
23292107 }
23302108 }
23312109 }
23322110 }
23332111
2334- let iO = bO(B)
2335- let jr = iN(iO)
2336- let gJ = split(valueOrElse(getString(dy()), "0_0_0_0_0_0"), "_")
2337- let lT = dB(c)
2338- let lU = getString(lT)
2339- let lV = if (isDefined(lU))
2340- then split_51C(value(lU), "_")
2112+ let hO = bN(B)
2113+ let ir = hN(hO)
2114+ let gI = split(valueOrElse(getString(dx()), "0_0_0_0_0_0"), "_")
2115+ let kT = dA(c)
2116+ let kU = getString(kT)
2117+ let kV = if (isDefined(kU))
2118+ then split_51C(value(kU), "_")
23412119 else nil
2342- let lW = split(value(assetInfo(fromBase58String(lI[0]))).description, "_")[dr]
2343- let lX = split(valueOrElse(getString(dz(lW)), "0_0_0_0_0_0"), "_")
2344- let fg = {
2345- let eX = lI
2346- let eY = size(eX)
2347- let eZ = $Tuple10(lH, 0, "", jr[bo], nil, gJ, lV, 0, split("0_0_0_0_0_0", "_"), lX)
2348- func fa (fb,fc) = if ((fc >= eY))
2349- then fb
2350- else lK(fb, eX[fc])
2351-
2352- func fd (fb,fc) = if ((fc >= eY))
2353- then fb
2120+ let kW = split(value(assetInfo(fromBase58String(kI[0]))).description, "_")[dq]
2121+ let kX = split(valueOrElse(getString(dy(kW)), "0_0_0_0_0_0"), "_")
2122+ let ff = {
2123+ let eW = kI
2124+ let eX = size(eW)
2125+ let eY = $Tuple10(kH, 0, "", ir[bn], nil, gI, kV, 0, split("0_0_0_0_0_0", "_"), kX)
2126+ func eZ (fa,fb) = if ((fb >= eX))
2127+ then fa
2128+ else kK(fa, eW[fb])
2129+
2130+ func fc (fa,fb) = if ((fb >= eX))
2131+ then fa
23542132 else throw("List size exceeds 5")
23552133
2356- fd(fa(fa(fa(fa(fa(eZ, 0), 1), 2), 3), 4), 5)
2134+ fc(eZ(eZ(eZ(eZ(eZ(eY, 0), 1), 2), 3), 4), 5)
23572135 }
2358- let dA = fg._3
2359- let iC = valueOrErrorMessage(indexOf(aV, dA), ("Unknown continent: " + dA))
2360- let gR = iF(fg._9, (dL(lG) / cM))
2361- let jP = valueOrElse(getInteger(et()), (es + 1))
2362- let lY = toString(jP)
2363- let jQ = Issue(eK(lY, lG), makeString([lY, lG, gR, dA], "_"), 1, 0, false)
2364- let bv = calculateAssetId(jQ)
2365- let lZ = toBase58String(bv)
2366- let kV = makeString(fh((lJ > 0), split(jr[bp], "_"), lJ), "_")
2367- let ma = dC(c)
2368- let mb = valueOrElse(getInteger(ma), 0)
2369- $Tuple2((((((((((((((((fg._5 :+ (if ((size(fg._7) > 0))
2370- then StringEntry(lT, makeString_11C(fg._7, "_"))
2371- else DeleteEntry(lT))) :+ IntegerEntry(ma, if ((fg._8 > mb))
2136+ let dz = ff._3
2137+ let hr = valueOrErrorMessage(indexOf(aU, dz), ("Unknown continent: " + dz))
2138+ let gQ = hw(ff._9, (dK(kG) / cL))
2139+ let iP = valueOrElse(getInteger(es()), (er + 1))
2140+ let kY = toString(iP)
2141+ let iQ = Issue(eJ(kY, kG), makeString([kY, kG, gQ, dz], "_"), 1, 0, false)
2142+ let bu = calculateAssetId(iQ)
2143+ let kZ = toBase58String(bu)
2144+ let jV = makeString(fg((kJ > 0), split(ir[bo], "_"), kJ), "_")
2145+ let la = dB(c)
2146+ let lb = valueOrElse(getInteger(la), 0)
2147+ $Tuple2((((((((((((((((ff._5 :+ (if ((size(ff._7) > 0))
2148+ then StringEntry(kT, makeString_11C(ff._7, "_"))
2149+ else DeleteEntry(kT))) :+ IntegerEntry(la, if ((ff._8 > lb))
23722150 then 0
2373- else (mb - fg._8))) :+ IntegerEntry(et(), (jP + 1))) :+ jQ) :+ StringEntry(ew(lY), lZ)) :+ StringEntry(bu(lZ), c)) :+ StringEntry(ez(lY), c)) :+ IntegerEntry(by(aH, lZ), fg._2)) :+ IntegerEntry(bE(lZ), ao)) :+ IntegerEntry(ey(lZ, c), ao)) :+ StringEntry(iO, makeString([jr[bn], fg._4, kV, jr[bq]], ":"))) :+ StringEntry(dy(), makeString(fg._6, "_"))) :+ StringEntry(dz(dA), makeString(fg._10, "_"))) :+ StringEntry(bP(B), makeString([dA, "L", lZ], "_"))) :+ ScriptTransfer(addressFromStringValue(c), 1, bv)), lZ)
2151+ else (lb - ff._8))) :+ IntegerEntry(es(), (iP + 1))) :+ iQ) :+ StringEntry(ev(kY), kZ)) :+ StringEntry(bt(kZ), c)) :+ StringEntry(ey(kY), c)) :+ IntegerEntry(bx(aH, kZ), ff._2)) :+ IntegerEntry(bD(kZ), ao)) :+ IntegerEntry(ex(kZ, c), ao)) :+ StringEntry(hO, makeString([ir[bm], ff._4, jV, ir[bp]], ":"))) :+ StringEntry(dx(), makeString(ff._6, "_"))) :+ StringEntry(dy(dz), makeString(ff._10, "_"))) :+ StringEntry(bO(B), makeString([dz, "L", kZ], "_"))) :+ ScriptTransfer(addressFromStringValue(c), 1, bu)), kZ)
23742152 }
23752153 }
23762154
23772155
2378-func mc (c,lI) = lF("M", 3, "SSSS", c, lI, 0)
2379-
2380-
2381-func md (c,lI) = lF("L", 4, "SMM", c, lI, (cG * 4))
2382-
2383-
2384-func me (c,lI) = lF("XL", 5, "SSSML", c, lI, (cG * 47))
2385-
2386-
2387-func mf (c,lI) = lF("XXL", 6, "LXL", c, lI, (cG * 54))
2388-
2389-
2390-func mg (c,lI) = {
2391- let cE = size(lI)
2392- if ((4 == cE))
2393- then mc(c, lI)
2394- else if ((3 == cE))
2395- then md(c, lI)
2396- else if ((5 == cE))
2397- then me(c, lI)
2398- else if ((2 == cE))
2399- then mf(c, lI)
2156+func lc (c,kI) = kF("M", 3, "SSSS", c, kI, 0)
2157+
2158+
2159+func ld (c,kI) = kF("L", 4, "SMM", c, kI, (cF * 4))
2160+
2161+
2162+func le (c,kI) = kF("XL", 5, "SSSML", c, kI, (cF * 47))
2163+
2164+
2165+func lf (c,kI) = kF("XXL", 6, "LXL", c, kI, (cF * 54))
2166+
2167+
2168+func lg (c,kI) = {
2169+ let cD = size(kI)
2170+ if ((4 == cD))
2171+ then lc(c, kI)
2172+ else if ((3 == cD))
2173+ then ld(c, kI)
2174+ else if ((5 == cD))
2175+ then le(c, kI)
2176+ else if ((2 == cD))
2177+ then lf(c, kI)
24002178 else throw("Unknown merge")
24012179 }
24022180
24032181
2404-func mh (bR) = {
2405- let mi = getString(bN(bR))
2406- if (isDefined(mi))
2182+func lh (bQ) = {
2183+ let li = getString(bM(bQ))
2184+ if (isDefined(li))
24072185 then {
2408- let B = value(mi)
2409- let mj = bP(B)
2410- let cl = split(valueOrElse(getString(mj), aN), "_")
2411- let co = parseIntValue(cl[br])
2412- if (if ((cl[bs] != "D"))
2186+ let B = value(li)
2187+ let lj = bO(B)
2188+ let ck = split(valueOrElse(getString(lj), aM), "_")
2189+ let cn = parseIntValue(ck[bq])
2190+ if (if ((ck[br] != "D"))
24132191 then true
2414- else ((co + aR) > lastBlock.timestamp))
2192+ else ((cn + aQ) > lastBlock.timestamp))
24152193 then nil
24162194 else {
2417- let lx = A(B)
2418- if ((parseIntValue(cl[bt]) > 0))
2195+ let kx = A(B)
2196+ if ((parseIntValue(ck[bs]) > 0))
24192197 then {
2420- let lA = invoke(dj, "sendDeliveryReward", [bR], nil)
2421- if ((lA == lA))
2198+ let kA = invoke(di, "sendDeliveryReward", [bQ], nil)
2199+ if ((kA == kA))
24222200 then nil
24232201 else throw("Strict value is not equal to itself.")
24242202 }
24252203 else (({
2426- let lC = valueOrElse(getInteger(dj, bU), 0)
2427- let lD = invoke(dj, "updateDeliveryLocked", [(lC - aQ)], nil)
2428- if ((lD == lD))
2429- then if ((0 >= getIntegerValue(lx)))
2204+ let kC = valueOrElse(getInteger(di, bT), 0)
2205+ let kD = invoke(di, "updateDeliveryLocked", [(kC - aP)], nil)
2206+ if ((kD == kD))
2207+ then if ((0 >= getIntegerValue(kx)))
24302208 then nil
24312209 else {
2432- let mk = invoke(this, "saveInteger", [U(B), (co + cI)], nil)
2433- if ((mk == mk))
2210+ let lk = invoke(this, "saveInteger", [U(B), (cn + cH)], nil)
2211+ if ((lk == lk))
24342212 then nil
24352213 else throw("Strict value is not equal to itself.")
24362214 }
24372215 else throw("Strict value is not equal to itself.")
2438- } :+ IntegerEntry(lx, getIntegerValue(K(B)))) :+ StringEntry(mj, getStringValue(L(B))))
2216+ } :+ IntegerEntry(kx, getIntegerValue(K(B)))) :+ StringEntry(lj, getStringValue(L(B))))
24392217 }
24402218 }
24412219 else nil
24422220 }
24432221
24442222
2445-func ml (gO) = if (if ((gO.originCaller != di))
2446- then valueOrElse(getBoolean(dO()), false)
2223+func ll (gN) = if (if ((gN.originCaller != dh))
2224+ then valueOrElse(getBoolean(dN()), false)
24472225 else false)
24482226 then throw("Contracts are under maintenance")
24492227 else {
2450- let bR = toString(gO.originCaller)
2451- (mh(bR) :+ StringEntry(dP(bR), toBase58String(gO.transactionId)))
2228+ let bQ = toString(gN.originCaller)
2229+ (lh(bQ) :+ StringEntry(dO(bQ), toBase58String(gN.transactionId)))
24522230 }
24532231
24542232
2455-func mm (gO) = if (if ((gO.originCaller != di))
2456- then valueOrElse(getBoolean(dO()), false)
2233+func lm (gN) = if (if ((gN.originCaller != dh))
2234+ then valueOrElse(getBoolean(dN()), false)
24572235 else false)
24582236 then throw("Contracts are under maintenance")
2459- else [StringEntry(dP(toString(gO.originCaller)), toBase58String(gO.transactionId))]
2460-
2461-
2462-@Callable(gO)
2463-func constructorV1 (mn) = if ((gO.caller != this))
2237+ else [StringEntry(dO(toString(gN.originCaller)), toBase58String(gN.transactionId))]
2238+
2239+
2240+@Callable(gN)
2241+func constructorV1 (ln) = if ((gN.caller != this))
24642242 then throw("Permission denied")
2465- else [StringEntry(dc(), mn)]
2466-
2467-
2468-
2469-@Callable(gO)
2470-func saveInteger (cU,eM) = if ((gO.caller != this))
2243+ else [StringEntry(db(), ln)]
2244+
2245+
2246+
2247+@Callable(gN)
2248+func saveInteger (cT,eL) = if ((gN.caller != this))
24712249 then throw("saveInteger is not public method")
2472- else [IntegerEntry(cU, eM)]
2473-
2474-
2475-
2476-@Callable(gO)
2477-func setBlocked (mo) = if ((gO.caller != this))
2250+ else [IntegerEntry(cT, eL)]
2251+
2252+
2253+
2254+@Callable(gN)
2255+func setBlocked (lo) = if ((gN.caller != this))
24782256 then throw("permission denied")
2479- else [BooleanEntry(dO(), mo)]
2480-
2481-
2482-
2483-@Callable(gO)
2257+ else [BooleanEntry(dN(), lo)]
2258+
2259+
2260+
2261+@Callable(gN)
24842262 func stakeLand () = {
2485- let mp = ml(gO)
2486- if ((size(gO.payments) != 1))
2263+ let lp = ll(gN)
2264+ if ((size(gN.payments) != 1))
24872265 then throw("Exactly one payment required")
24882266 else {
2489- let mq = value(gO.payments[0])
2490- let bv = value(mq.assetId)
2491- let cT = toString(gO.caller)
2492- if ((mq.amount != 1))
2267+ let lq = value(gN.payments[0])
2268+ let bu = value(lq.assetId)
2269+ let cS = toString(gN.caller)
2270+ if ((lq.amount != 1))
24932271 then throw((("NFT " + aF) + " token should be attached as payment"))
24942272 else {
2495- let kv = value(assetInfo(bv))
2496- if ((kv.issuer != this))
2273+ let jv = value(assetInfo(bu))
2274+ if ((jv.issuer != this))
24972275 then throw("Unknown issuer of token")
2498- else if (!(contains(kv.name, aF)))
2276+ else if (!(contains(jv.name, aF)))
24992277 then throw((("Only NFT " + aF) + " tokens are accepted"))
25002278 else {
2501- let mr = drop(kv.name, 4)
2502- let ex = if (contains(mr, "XXL"))
2503- then dropRight(mr, 3)
2504- else if (contains(mr, "XL"))
2505- then dropRight(mr, 2)
2506- else dropRight(mr, 1)
2507- if (!(isDefined(parseInt(ex))))
2508- then throw(("Cannot parse land number from " + kv.name))
2279+ let lr = drop(jv.name, 4)
2280+ let ew = if (contains(lr, "XXL"))
2281+ then dropRight(lr, 3)
2282+ else if (contains(lr, "XL"))
2283+ then dropRight(lr, 2)
2284+ else dropRight(lr, 1)
2285+ if (!(isDefined(parseInt(ew))))
2286+ then throw(("Cannot parse land number from " + jv.name))
25092287 else {
2510- let Q = toBase58String(bv)
2511- let kw = bx(Q)
2512- if (isDefined(getInteger(kw)))
2513- then throw((("NFT " + kv.name) + " is already staked"))
2288+ let Q = toBase58String(bu)
2289+ let jw = bw(Q)
2290+ if (isDefined(getInteger(jw)))
2291+ then throw((("NFT " + jv.name) + " is already staked"))
25142292 else {
2515- let kz = split(kv.description, "_")
2516- let gK = gQ(kz[dq])
2517- let kl = dL(kz[dp])
2518- let jc = (kl / cM)
2519- let ff = gP(gK, jc, 1)
2520- let ms = dz(kz[dr])
2521- let lX = split(valueOrElse(getString(ms), "0_0_0_0_0_0"), "_")
2522- let mt = makeString(gI(lX, gK, jc, 1), "_")
2523- let lT = dB(cT)
2524- let lU = getString(lT)
2525- let lQ = if (isDefined(lU))
2526- then split_51C(value(lU), "_")
2293+ let jz = split(jv.description, "_")
2294+ let gJ = gP(jz[dp])
2295+ let jl = dK(jz[do])
2296+ let ic = (jl / cL)
2297+ let fe = gO(gJ, ic, 1)
2298+ let ls = dy(jz[dq])
2299+ let kX = split(valueOrElse(getString(ls), "0_0_0_0_0_0"), "_")
2300+ let lt = makeString(gH(kX, gJ, ic, 1), "_")
2301+ let kT = dA(cS)
2302+ let kU = getString(kT)
2303+ let kQ = if (isDefined(kU))
2304+ then split_51C(value(kU), "_")
25272305 else nil
2528- if (containsElement(lQ, Q))
2306+ if (containsElement(kQ, Q))
25292307 then throw(("Your staked lands already contain " + Q))
2530- else if ((size(lQ) >= aK))
2531- then throw((("Your already staked max (" + toString(aK)) + ") lands"))
2308+ else if ((size(kQ) >= aJ))
2309+ then throw((("Your already staked max (" + toString(aJ)) + ") lands"))
25322310 else {
2533- let jd = valueOrElse(getInteger(bE(Q)), 0)
2534- let ma = dC(cT)
2535- let mu = valueOrElse(getInteger(ma), 0)
2536- let mv = invoke(dl, "onStakeUnstakeLand", [cT], nil)
2537- $Tuple2(([IntegerEntry(kw, lastBlock.timestamp), IntegerEntry(bA(aF, Q, cT), lastBlock.timestamp), StringEntry(lT, makeString_11C((lQ :+ Q), "_")), IntegerEntry(ma, (mu + kl)), StringEntry(bu(Q), cT), StringEntry(ez(ex), cT), IntegerEntry(ey(Q, cT), jd), StringEntry(dy(), ff), StringEntry(ms, mt)] ++ mp), mv)
2311+ let id = valueOrElse(getInteger(bD(Q)), 0)
2312+ let la = dB(cS)
2313+ let lu = valueOrElse(getInteger(la), 0)
2314+ let lv = invoke(dk, "onStakeUnstakeLand", [cS], nil)
2315+ $Tuple2(([IntegerEntry(jw, lastBlock.timestamp), IntegerEntry(bz(aF, Q, cS), lastBlock.timestamp), StringEntry(kT, makeString_11C((kQ :+ Q), "_")), IntegerEntry(la, (lu + jl)), StringEntry(bt(Q), cS), StringEntry(ey(ew), cS), IntegerEntry(ex(Q, cS), id), StringEntry(dx(), fe), StringEntry(ls, lt)] ++ lp), lv)
25382316 }
25392317 }
25402318 }
25412319 }
25422320 }
25432321 }
25442322 }
25452323
25462324
25472325
2548-@Callable(gO)
2549-func unstakeLand (kr) = {
2550- let mp = ml(gO)
2551- if ((size(gO.payments) != 0))
2326+@Callable(gN)
2327+func unstakeLand (jr) = {
2328+ let lp = ll(gN)
2329+ if ((size(gN.payments) != 0))
25522330 then throw("No payments required")
25532331 else {
2554- let c = toString(gO.caller)
2555- let ge = kp(c, eE, kr)
2556- let Q = ge._2
2557- let kz = ge._3
2558- let lT = dB(c)
2559- let gK = gQ(kz[dq])
2560- let kl = dL(kz[dp])
2561- let jc = (kl / cM)
2562- let ff = gP(gK, jc, -1)
2563- let ms = dz(kz[dr])
2564- let lX = split(valueOrElse(getString(ms), "0_0_0_0_0_0"), "_")
2565- let mt = makeString(gI(lX, gK, jc, -1), "_")
2566- let kW = kM(c, Q, kl, eE)
2567- let lQ = split_51C(valueOrElse(getString(lT), ""), "_")
2568- let dh = indexOf(lQ, Q)
2569- if (!(isDefined(dh)))
2332+ let c = toString(gN.caller)
2333+ let gd = jp(c, eD, jr)
2334+ let Q = gd._2
2335+ let jz = gd._3
2336+ let kT = dA(c)
2337+ let gJ = gP(jz[dp])
2338+ let jl = dK(jz[do])
2339+ let ic = (jl / cL)
2340+ let fe = gO(gJ, ic, -1)
2341+ let ls = dy(jz[dq])
2342+ let kX = split(valueOrElse(getString(ls), "0_0_0_0_0_0"), "_")
2343+ let lt = makeString(gH(kX, gJ, ic, -1), "_")
2344+ let jW = jM(c, Q, jl, eD)
2345+ let kQ = split_51C(valueOrElse(getString(kT), ""), "_")
2346+ let dg = indexOf(kQ, Q)
2347+ if (!(isDefined(dg)))
25702348 then throw(("Your staked lands don't contain " + Q))
25712349 else {
25722350 let aA = lastBlock.timestamp
2573- let mw = valueOrElse(getInteger(dk, bQ(c)), 0)
2574- if ((mw >= aA))
2575- then throw(("Your gWL are taking part in voting, cannot unstake until " + toString(mw)))
2351+ let lw = valueOrElse(getInteger(dj, bP(c)), 0)
2352+ if ((lw >= aA))
2353+ then throw(("Your gWL are taking part in voting, cannot unstake until " + toString(lw)))
25762354 else {
2577- let mx = (valueOrElse(getInteger(dl, b(c)), 0) + cH)
2578- if ((mx > aA))
2579- then throw(("Your staked lands took part in arbitrage, cannot unstake until " + toString(mx)))
2355+ let lx = (valueOrElse(getInteger(dk, b(c)), 0) + cG)
2356+ if ((lx > aA))
2357+ then throw(("Your staked lands took part in arbitrage, cannot unstake until " + toString(lx)))
25802358 else {
2581- let ma = dC(c)
2582- let mb = valueOrElse(getInteger(ma), 0)
2583- let my = if ((kl > mb))
2359+ let la = dB(c)
2360+ let lb = valueOrElse(getInteger(la), 0)
2361+ let ly = if ((jl > lb))
25842362 then 0
2585- else (mb - kl)
2586- let mv = invoke(dl, "onStakeUnstakeLand", [c], nil)
2587- $Tuple2(([ScriptTransfer(gO.caller, 1, fromBase58String(Q)), DeleteEntry(bx(Q)), DeleteEntry(bA(aF, Q, c)), StringEntry(dy(), ff), StringEntry(ms, mt), StringEntry(kW._2, makeString(kW._3, ":")), if ((size(lQ) > 1))
2588- then StringEntry(lT, makeString_11C(removeByIndex(lQ, value(dh)), "_"))
2589- else DeleteEntry(lT), IntegerEntry(ma, my)] ++ mp), mv)
2363+ else (lb - jl)
2364+ let lv = invoke(dk, "onStakeUnstakeLand", [c], nil)
2365+ $Tuple2(([ScriptTransfer(gN.caller, 1, fromBase58String(Q)), DeleteEntry(bw(Q)), DeleteEntry(bz(aF, Q, c)), StringEntry(dx(), fe), StringEntry(ls, lt), StringEntry(jW._2, makeString(jW._3, ":")), if ((size(kQ) > 1))
2366+ then StringEntry(kT, makeString_11C(removeByIndex(kQ, value(dg)), "_"))
2367+ else DeleteEntry(kT), IntegerEntry(la, ly)] ++ lp), lv)
25902368 }
25912369 }
25922370 }
25932371 }
25942372 }
25952373
25962374
25972375
2598-@Callable(gO)
2376+@Callable(gN)
25992377 func stakeDuck () = {
2600- let mp = ml(gO)
2601- if ((size(gO.payments) != 1))
2378+ let lp = ll(gN)
2379+ if ((size(gN.payments) != 1))
26022380 then throw("Exactly one payment required")
26032381 else {
2604- let mq = value(gO.payments[0])
2605- let bv = value(mq.assetId)
2606- let cT = toString(gO.caller)
2607- if ((mq.amount != 1))
2382+ let lq = value(gN.payments[0])
2383+ let bu = value(lq.assetId)
2384+ let cS = toString(gN.caller)
2385+ if ((lq.amount != 1))
26082386 then throw((("NFT " + aG) + " token should be attached as payment"))
26092387 else {
2610- let kv = value(assetInfo(bv))
2611- if (if ((kv.issuer != eb))
2612- then (kv.issuer != ec)
2388+ let jv = value(assetInfo(bu))
2389+ if (if ((jv.issuer != ea))
2390+ then (jv.issuer != eb)
26132391 else false)
26142392 then throw((("Unknown issuer of " + aG) + " token"))
2615- else if (!(contains(kv.name, aG)))
2393+ else if (!(contains(jv.name, aG)))
26162394 then throw((("Only NFT " + aG) + " tokens are accepted"))
26172395 else {
2618- let mz = toBase58String(bv)
2619- let kw = bx(mz)
2620- if (isDefined(getInteger(kw)))
2621- then throw((("NFT " + kv.name) + " is already staked"))
2622- else if (isDefined(getString(bN(cT))))
2623- then throw(("You already staked one duck: " + kv.name))
2396+ let lz = toBase58String(bu)
2397+ let jw = bw(lz)
2398+ if (isDefined(getInteger(jw)))
2399+ then throw((("NFT " + jv.name) + " is already staked"))
2400+ else if (isDefined(getString(bM(cS))))
2401+ then throw(("You already staked one duck: " + jv.name))
26242402 else {
2625- let mj = bP(mz)
2626- let cj = getString(mj)
2627- let iO = bO(mz)
2628- let mA = getString(iO)
2629- let ke = A(mz)
2630- let kf = aj(valueOrElse(getInteger(E(mz)), 0))
2631- let ly = valueOrElse(getInteger(ke), kf)
2632- ([IntegerEntry(kw, lastBlock.timestamp), IntegerEntry(bA(aG, toBase58String(bv), cT), lastBlock.timestamp), StringEntry(bM(mz), cT), StringEntry(bN(cT), mz)] ++ (if (isDefined(cj))
2403+ let lj = bO(lz)
2404+ let ci = getString(lj)
2405+ let hO = bN(lz)
2406+ let lA = getString(hO)
2407+ let je = A(lz)
2408+ let jf = aj(valueOrElse(getInteger(E(lz)), 0))
2409+ let ky = valueOrElse(getInteger(je), jf)
2410+ ([IntegerEntry(jw, lastBlock.timestamp), IntegerEntry(bz(aG, toBase58String(bu), cS), lastBlock.timestamp), StringEntry(bL(lz), cS), StringEntry(bM(cS), lz)] ++ (if (isDefined(ci))
26332411 then nil
2634- else ([StringEntry(mj, aN)] ++ (if (isDefined(mA))
2412+ else ([StringEntry(lj, aM)] ++ (if (isDefined(lA))
26352413 then nil
2636- else (([StringEntry(iO, "0:0_0_0_0_0_0:0_0_0_0_0_0:")] :+ IntegerEntry(ke, ly)) ++ mp)))))
2414+ else (([StringEntry(hO, "0:0_0_0_0_0_0:0_0_0_0_0_0:")] :+ IntegerEntry(je, ky)) ++ lp)))))
26372415 }
26382416 }
26392417 }
26402418 }
26412419 }
26422420
26432421
26442422
2645-@Callable(gO)
2646-func unstakeDuck (mz) = {
2647- let mp = ml(gO)
2648- if ((size(gO.payments) != 0))
2423+@Callable(gN)
2424+func unstakeDuck (lz) = {
2425+ let lp = ll(gN)
2426+ if ((size(gN.payments) != 0))
26492427 then throw("No payments required")
26502428 else {
2651- let bv = fromBase58String(mz)
2652- let cT = toString(gO.caller)
2653- let kv = value(assetInfo(bv))
2654- let kw = bx(mz)
2655- if (!(isDefined(getInteger(kw))))
2656- then throw((("NFT " + kv.name) + " is not staked"))
2657- else if (!(isDefined(getString(bN(cT)))))
2658- then throw((("The duck " + kv.name) + " is not staked"))
2429+ let bu = fromBase58String(lz)
2430+ let cS = toString(gN.caller)
2431+ let jv = value(assetInfo(bu))
2432+ let jw = bw(lz)
2433+ if (!(isDefined(getInteger(jw))))
2434+ then throw((("NFT " + jv.name) + " is not staked"))
2435+ else if (!(isDefined(getString(bM(cS)))))
2436+ then throw((("The duck " + jv.name) + " is not staked"))
26592437 else {
2660- let ky = valueOrErrorMessage(getString(bM(mz)), (("NFT " + kv.name) + " is orphaned"))
2661- if ((ky != cT))
2438+ let jy = valueOrErrorMessage(getString(bL(lz)), (("NFT " + jv.name) + " is orphaned"))
2439+ if ((jy != cS))
26622440 then throw("Staked NFT is not yours")
2663- else if (lt(mz))
2441+ else if (kt(lz))
26642442 then throw("unstakeDuck_checkTournament")
2665- else if (lu(mz))
2443+ else if (ku(lz))
26662444 then throw("unstakeDuck_checkDelivery")
26672445 else {
2668- let ke = A(mz)
2669- let kf = aj(valueOrElse(getInteger(E(mz)), 0))
2670- let av = valueOrElse(getInteger(ke), kf)
2671- if ((kf > av))
2672- then throw((("Please heal your duck to " + toString(kf)) + "hp before unstaking"))
2673- else ([ScriptTransfer(gO.caller, 1, bv), DeleteEntry(kw), DeleteEntry(ke), DeleteEntry(bP(mz)), DeleteEntry(bM(mz)), DeleteEntry(bA(aG, mz, cT)), DeleteEntry(bN(cT))] ++ mp)
2446+ let je = A(lz)
2447+ let jf = aj(valueOrElse(getInteger(E(lz)), 0))
2448+ let av = valueOrElse(getInteger(je), jf)
2449+ if ((jf > av))
2450+ then throw((("Please heal your duck to " + toString(jf)) + "hp before unstaking"))
2451+ else ([ScriptTransfer(gN.caller, 1, bu), DeleteEntry(jw), DeleteEntry(je), DeleteEntry(bO(lz)), DeleteEntry(bL(lz)), DeleteEntry(bz(aG, lz, cS)), DeleteEntry(bM(cS))] ++ lp)
26742452 }
26752453 }
26762454 }
26772455 }
26782456
26792457
26802458
2681-@Callable(gO)
2682-func claimRes (eM,mB) = {
2683- let mp = ml(gO)
2684- if ((size(gO.payments) != 0))
2459+@Callable(gN)
2460+func claimRes (eL,lB) = {
2461+ let lp = ll(gN)
2462+ if ((size(gN.payments) != 0))
26852463 then throw("No payments required")
26862464 else {
2687- let c = toString(gO.originCaller)
2688- let fn = kA(c, eM, eE, mB)
2689- let B = valueOrErrorMessage(getString(bN(c)), "You don't have a duck staked")
2690- $Tuple2(((((fn._1 ++ li(B, fraction(X, eM, cL))._1) :+ StringEntry(fn._2, makeString(fn._3, ":"))) :+ StringEntry(fn._4, makeString(fn._5, ":"))) ++ mp), fn._3[bo])
2691- }
2692- }
2693-
2694-
2695-
2696-@Callable(gO)
2697-func claimResToWH (eM,mB) = {
2698- let mp = ml(gO)
2699- if ((size(gO.payments) != 0))
2465+ let c = toString(gN.originCaller)
2466+ let fm = jA(c, eL, eD, lB)
2467+ let B = valueOrErrorMessage(getString(bM(c)), "You don't have a duck staked")
2468+ $Tuple2(((((fm._1 ++ ki(B, fraction(X, eL, cK))._1) :+ StringEntry(fm._2, makeString(fm._3, ":"))) :+ StringEntry(fm._4, makeString(fm._5, ":"))) ++ lp), fm._3[bn])
2469+ }
2470+ }
2471+
2472+
2473+
2474+@Callable(gN)
2475+func claimResToWH (eL,lB) = {
2476+ let lp = ll(gN)
2477+ if ((size(gN.payments) != 0))
27002478 then throw("No payments required")
27012479 else {
2702- let c = toString(gO.originCaller)
2703- let fn = kA(c, eM, eD, mB)
2704- $Tuple2(((((fn._1 ++ lj(c, fraction(X, eM, cL))._1) :+ StringEntry(fn._2, makeString(fn._3, ":"))) :+ StringEntry(fn._4, makeString(fn._5, ":"))) ++ mp), fn._5[bf])
2705- }
2706- }
2707-
2708-
2709-
2710-@Callable(gO)
2711-func flight (jT,jU) = {
2712- let mp = mm(gO)
2713- if ((size(gO.payments) != 0))
2480+ let c = toString(gN.originCaller)
2481+ let fm = jA(c, eL, eC, lB)
2482+ $Tuple2(((((fm._1 ++ kj(c, fraction(X, eL, cK))._1) :+ StringEntry(fm._2, makeString(fm._3, ":"))) :+ StringEntry(fm._4, makeString(fm._5, ":"))) ++ lp), fm._5[be])
2483+ }
2484+ }
2485+
2486+
2487+
2488+@Callable(gN)
2489+func flight (iT,iU) = {
2490+ let lp = lm(gN)
2491+ if ((size(gN.payments) != 0))
27142492 then throw("No payments required")
27152493 else {
2716- let bR = toString(gO.caller)
2717- let iD = jS(bR, jT, jU)
2718- let jY = iD._1
2719- let B = iD._2
2720- let mj = bP(B)
2721- let kt = valueOrElse(getString(mj), aN)
2722- let ka = iD._4
2723- if ((ka == kt))
2494+ let bQ = toString(gN.caller)
2495+ let hs = iS(bQ, iT, iU)
2496+ let iY = hs._1
2497+ let B = hs._2
2498+ let lj = bO(B)
2499+ let jt = valueOrElse(getString(lj), aM)
2500+ let ja = hs._4
2501+ if ((ja == jt))
27242502 then throw("You can't fly to the same location")
27252503 else {
2726- let cx = split(ka, "_")
2727- let mC = (cx[bs] == "T")
2728- let mD = (cx[bs] == "D")
2729- let gB = G(B)
2730- let mE = valueOrElse(getString(gB), ",;,_,;,_,;,_,;,_,;,_,;,")
2731- let mF = fo(mE, iD._5)
2732- let mG = mF._1
2733- let mH = mF._2
2734- let mI = if (!(cs(dm, kt)))
2735- then if (!(cq(ka)))
2736- then cv(kt, ka, 5)
2737- else if ((jY > 0))
2738- then $Tuple2(ka, jY)
2739- else $Tuple2(kt, 0)
2740- else if (ci(dm, kt))
2741- then if (!(ci(dm, ka)))
2504+ let cw = split(ja, "_")
2505+ let lC = (cw[br] == "T")
2506+ let lD = (cw[br] == "D")
2507+ let gA = G(B)
2508+ let lE = valueOrElse(getString(gA), ",;,_,;,_,;,_,;,_,;,_,;,")
2509+ let lF = fn(lE, hs._5)
2510+ let lG = lF._1
2511+ let lH = lF._2
2512+ let lI = if (!(cr(dl, jt)))
2513+ then if (!(cp(ja)))
2514+ then cu(jt, ja, 5)
2515+ else if ((iY > 0))
2516+ then $Tuple2(ja, iY)
2517+ else $Tuple2(jt, 0)
2518+ else if (ch(dl, jt))
2519+ then if (!(ch(dl, ja)))
27422520 then throw("Your duck is taking part in the tournament")
27432521 else {
2744- let lw = parseIntValue(cx[bt])
2745- let mJ = split(kt, "_")
2746- let ck = valueOrElse(getInteger(dm, bV), 0)
2747- if ((lw != (parseIntValue(mJ[bt]) + 1)))
2748- then cv(kt, ka, 7)
2749- else if ((jY > 0))
2522+ let kw = parseIntValue(cw[bs])
2523+ let lJ = split(jt, "_")
2524+ let cj = valueOrElse(getInteger(dl, bU), 0)
2525+ if ((kw != (parseIntValue(lJ[bs]) + 1)))
2526+ then cu(jt, ja, 7)
2527+ else if ((iY > 0))
27502528 then {
2751- let mK = valueOrElse(getInteger(dm, bZ(ck, B)), 0)
2752- let mL = if ((lw > mK))
2753- then invoke(dm, "saveDuckResult", [B, lw], nil)
2529+ let lK = valueOrElse(getInteger(dl, bY(cj, B)), 0)
2530+ let lL = if ((kw > lK))
2531+ then invoke(dl, "saveDuckResult", [B, kw], nil)
27542532 else unit
2755- if ((mL == mL))
2756- then $Tuple2(ka, jY)
2533+ if ((lL == lL))
2534+ then $Tuple2(ja, iY)
27572535 else throw("Strict value is not equal to itself.")
27582536 }
2759- else $Tuple2(kt, 0)
2537+ else $Tuple2(jt, 0)
27602538 }
2761- else if (!(cn(kt)))
2539+ else if (!(cm(jt)))
27622540 then {
2763- let mM = dD(invoke(this, "autoExitDelivery", [B, jY, if (mD)
2541+ let lM = dC(invoke(this, "autoExitDelivery", [B, iY, if (lD)
27642542 then "10"
27652543 else "11", 0], nil))
2766- if ((mM == mM))
2767- then if (mD)
2768- then $Tuple2(mM, jY)
2769- else if ((jY > 0))
2770- then $Tuple2(ka, jY)
2771- else $Tuple2(mM, 0)
2544+ if ((lM == lM))
2545+ then if (lD)
2546+ then $Tuple2(lM, iY)
2547+ else if ((iY > 0))
2548+ then $Tuple2(ja, iY)
2549+ else $Tuple2(lM, 0)
27722550 else throw("Strict value is not equal to itself.")
27732551 }
2774- else if (!(mD))
2552+ else if (!(lD))
27752553 then throw("Your duck is taking part in delivery")
2776- else if (!(cn(ka)))
2777- then cv(kt, ka, 13)
2554+ else if (!(cm(ja)))
2555+ then cu(jt, ja, 13)
27782556 else {
2779- let lw = parseIntValue(cx[bt])
2780- let mJ = split(kt, "_")
2781- if ((lw != (parseIntValue(mJ[bt]) + 1)))
2782- then cv(kt, ka, 14)
2783- else if (if ((jY > 0))
2784- then (1 > lw)
2557+ let kw = parseIntValue(cw[bs])
2558+ let lJ = split(jt, "_")
2559+ if ((kw != (parseIntValue(lJ[bs]) + 1)))
2560+ then cu(jt, ja, 14)
2561+ else if (if ((iY > 0))
2562+ then (1 > kw)
27852563 else false)
2786- then $Tuple2(ka, jY)
2564+ then $Tuple2(ja, iY)
27872565 else {
2788- let mM = dD(invoke(this, "autoExitDelivery", [B, jY, "15-17", lw], nil))
2789- if ((mM == mM))
2790- then $Tuple2(mM, jY)
2566+ let lM = dC(invoke(this, "autoExitDelivery", [B, iY, "15-17", kw], nil))
2567+ if ((lM == lM))
2568+ then $Tuple2(lM, iY)
27912569 else throw("Strict value is not equal to itself.")
27922570 }
27932571 }
2794- let mN = mI._1
2795- let mO = mI._2
2796- $Tuple2(((([StringEntry(mj, mN), StringEntry(gB, mG), IntegerEntry(A(B), mO)] ++ mp) ++ (if (mH)
2572+ let lN = lI._1
2573+ let lO = lI._2
2574+ $Tuple2(((([StringEntry(lj, lN), StringEntry(gA, lG), IntegerEntry(A(B), lO)] ++ lp) ++ (if (lH)
27972575 then [StringEntry(M(B), "0_0_0_0_0")]
2798- else nil)) ++ li(B, if ((jY > 0))
2576+ else nil)) ++ ki(B, if ((iY > 0))
27992577 then Y
2800- else Z)._1), iD._3)
2578+ else Z)._1), hs._3)
28012579 }
28022580 }
28032581 }
28042582
28052583
28062584
2807-@Callable(gO)
2808-func heal (mP,mQ,mR) = {
2809- let mp = ml(gO)
2810- if (if (if ((0 > mP))
2585+@Callable(gN)
2586+func heal (lP,lQ,lR) = {
2587+ let lp = ll(gN)
2588+ if (if (if ((0 > lP))
28112589 then true
2812- else (0 > mQ))
2590+ else (0 > lQ))
28132591 then true
2814- else (0 > mR))
2592+ else (0 > lR))
28152593 then throw("Quantity cannot be negative")
28162594 else {
2817- let B = valueOrErrorMessage(getString(bN(toString(gO.caller))), "You don't have a duck staked")
2818- if (lt(B))
2595+ let B = valueOrErrorMessage(getString(bM(toString(gN.caller))), "You don't have a duck staked")
2596+ if (kt(B))
28192597 then throw("heal_checkTournament")
2820- else if (lu(B))
2598+ else if (ku(B))
28212599 then throw("heal_checkDelivery")
28222600 else {
2823- let mS = [mP, mQ, mR]
2824- let ke = A(B)
2825- let kf = aj(valueOrElse(getInteger(E(B)), 0))
2826- let mT = valueOrElse(getInteger(ke), kf)
2827- if ((mT >= kf))
2828- then throw((("HP should be < " + toString(kf)) + " to heal"))
2601+ let lS = [lP, lQ, lR]
2602+ let je = A(B)
2603+ let jf = aj(valueOrElse(getInteger(E(B)), 0))
2604+ let lT = valueOrElse(getInteger(je), jf)
2605+ if ((lT >= jf))
2606+ then throw((("HP should be < " + toString(jf)) + " to heal"))
28292607 else {
2830- let iO = bO(B)
2831- let jr = iN(iO)
2832- let mU = if ((jr[bq] == ""))
2608+ let hO = bN(B)
2609+ let ir = hN(hO)
2610+ let lU = if ((ir[bp] == ""))
28332611 then nil
2834- else split_4C(jr[bq], "_")
2835- func mV (eV,cu) = {
2836- let dH = eV._2
2837- let hk = if ((size(mU) > dH))
2838- then parseIntValue(mU[dH])
2612+ else split_4C(ir[bp], "_")
2613+ func lV (eU,ct) = {
2614+ let dG = eU._2
2615+ let hj = if ((size(lU) > dG))
2616+ then parseIntValue(lU[dG])
28392617 else 0
2840- if ((3 > dH))
2618+ if ((3 > dG))
28412619 then {
2842- let mW = mS[dH]
2843- if ((mW > hk))
2844- then throw(((("You have only " + toString(hk)) + " of ") + aU[dH]))
2845- else $Tuple3((eV._1 :+ toString((hk - mW))), (dH + 1), (eV._3 + (parseIntValue(split(cu, "_")[ba]) * mW)))
2620+ let lW = lS[dG]
2621+ if ((lW > hj))
2622+ then throw(((("You have only " + toString(hj)) + " of ") + aT[dG]))
2623+ else $Tuple3((eU._1 :+ toString((hj - lW))), (dG + 1), (eU._3 + (parseIntValue(split(ct, "_")[aZ]) * lW)))
28462624 }
2847- else $Tuple3((eV._1 :+ toString(hk)), (dH + 1), eV._3)
2625+ else $Tuple3((eU._1 :+ toString(hj)), (dG + 1), eU._3)
28482626 }
28492627
2850- let fn = {
2851- let eX = aY
2852- let eY = size(eX)
2853- let eZ = $Tuple3(nil, 0, 0)
2854- func fa (fb,fc) = if ((fc >= eY))
2855- then fb
2856- else mV(fb, eX[fc])
2857-
2858- func fd (fb,fc) = if ((fc >= eY))
2859- then fb
2628+ let fm = {
2629+ let eW = aX
2630+ let eX = size(eW)
2631+ let eY = $Tuple3(nil, 0, 0)
2632+ func eZ (fa,fb) = if ((fb >= eX))
2633+ then fa
2634+ else lV(fa, eW[fb])
2635+
2636+ func fc (fa,fb) = if ((fb >= eX))
2637+ then fa
28602638 else throw("List size exceeds 50")
28612639
2862- fd(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(eZ, 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)
2640+ fc(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eY, 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)
28632641 }
2864- let mX = min([kf, (mT + fn._3)])
2865- $Tuple2((([IntegerEntry(ke, mX), StringEntry(iO, makeString_2C([jr[bn], jr[bo], jr[bp], makeString(fn._1, "_")], ":"))] ++ mp) ++ li(B, (ag * ((mP + mQ) + mR)))._1), mX)
2642+ let lX = min([jf, (lT + fm._3)])
2643+ $Tuple2((([IntegerEntry(je, lX), StringEntry(hO, makeString_2C([ir[bm], ir[bn], ir[bo], makeString(fm._1, "_")], ":"))] ++ lp) ++ ki(B, (ag * ((lP + lQ) + lR)))._1), lX)
28662644 }
28672645 }
28682646 }
28692647 }
28702648
28712649
28722650
2873-@Callable(gO)
2651+@Callable(gN)
28742652 func healES () = {
2875- let mp = ml(gO)
2876- if ((size(gO.payments) != 1))
2653+ let lp = ll(gN)
2654+ if ((size(gN.payments) != 1))
28772655 then throw("Exactly one payment required")
28782656 else {
2879- let mq = value(gO.payments[0])
2880- if ((mq.assetId != cD))
2657+ let lq = value(gN.payments[0])
2658+ if ((lq.assetId != cC))
28812659 then throw("Allowed USDT payment only!")
28822660 else {
2883- let B = valueOrErrorMessage(getString(bN(toString(gO.caller))), "You don't have a duck staked")
2884- if (lt(B))
2661+ let B = valueOrErrorMessage(getString(bM(toString(gN.caller))), "You don't have a duck staked")
2662+ if (kt(B))
28852663 then throw("healES_checkTournament")
2886- else if (lu(B))
2664+ else if (ku(B))
28872665 then throw("healES_checkDelivery")
28882666 else {
2889- let ke = A(B)
2890- let kf = aj(valueOrElse(getInteger(E(B)), 0))
2891- let mT = valueOrElse(getInteger(ke), kf)
2892- if ((mT > 0))
2667+ let je = A(B)
2668+ let jf = aj(valueOrElse(getInteger(E(B)), 0))
2669+ let lT = valueOrElse(getInteger(je), jf)
2670+ if ((lT > 0))
28932671 then throw("HP should be 0 to call Emergency Service")
28942672 else {
2895- let iO = bO(B)
2896- let jr = iN(iO)
2897- let mU = if ((jr[bq] == ""))
2673+ let hO = bN(B)
2674+ let ir = hN(hO)
2675+ let lU = if ((ir[bp] == ""))
28982676 then nil
2899- else split_4C(jr[bq], "_")
2900- let mY = if ((size(mU) > 0))
2901- then parseIntValue(mU[0])
2677+ else split_4C(ir[bp], "_")
2678+ let lY = if ((size(lU) > 0))
2679+ then parseIntValue(lU[0])
29022680 else 0
2903- let mZ = if ((size(mU) > 1))
2904- then parseIntValue(mU[1])
2681+ let lZ = if ((size(lU) > 1))
2682+ then parseIntValue(lU[1])
29052683 else 0
2906- let na = if ((size(mU) > 2))
2907- then parseIntValue(mU[2])
2684+ let ma = if ((size(lU) > 2))
2685+ then parseIntValue(lU[2])
29082686 else 0
2909- if (if (if ((mY > 0))
2687+ if (if (if ((lY > 0))
29102688 then true
2911- else (mZ > 0))
2689+ else (lZ > 0))
29122690 then true
2913- else (na > 0))
2691+ else (ma > 0))
29142692 then throw("You have to use own Medical Kit")
29152693 else {
2916- let nb = getString(dj, bS())
2917- let nc = if (isDefined(nb))
2918- then split_4C(value(nb), "_")
2694+ let mb = getString(di, bR())
2695+ let mc = if (isDefined(mb))
2696+ then split_4C(value(mb), "_")
29192697 else nil
2920- let nd = if ((size(nc) > 0))
2921- then parseIntValue(nc[0])
2698+ let md = if ((size(mc) > 0))
2699+ then parseIntValue(mc[0])
29222700 else 0
2923- if ((0 >= nd))
2701+ if ((0 >= md))
29242702 then throw("There are no Medical Kits L1 at Emergency Service storage")
29252703 else {
2926- let mX = (mT + parseIntValue(split(aY[0], "_")[ba]))
2927- let ne = makeString([toString((nd - 1)), removeByIndex(nc, 0)], "_")
2928- let cu = split(aY[0], "_")
2929- let nf = ct(cu)
2930- let ng = fraction((nf * aP), aO, (cL * bd))
2931- if ((mq.amount != ng))
2932- then throw(("Payment attached should be " + toString(ng)))
2704+ let lX = (lT + parseIntValue(split(aX[0], "_")[aZ]))
2705+ let me = makeString([toString((md - 1)), removeByIndex(mc, 0)], "_")
2706+ let ct = split(aX[0], "_")
2707+ let mf = cs(ct)
2708+ let mg = fraction((mf * aO), aN, (cK * bc))
2709+ if ((lq.amount != mg))
2710+ then throw(("Payment attached should be " + toString(mg)))
29332711 else {
2934- let fn = dD(invoke(dj, "updateEsStorage", [ne], [AttachedPayment(cD, ng)]))
2935- $Tuple2(((mp :+ IntegerEntry(ke, mX)) ++ li(B, aa)._1), fn)
2712+ let fm = dC(invoke(di, "updateEsStorage", [me], [AttachedPayment(cC, mg)]))
2713+ $Tuple2(((lp :+ IntegerEntry(je, lX)) ++ ki(B, aa)._1), fm)
29362714 }
29372715 }
29382716 }
29392717 }
29402718 }
29412719 }
29422720 }
29432721 }
29442722
29452723
29462724
2947-@Callable(gO)
2948-func updateBackpack (B,nh) = if ((gO.caller != dj))
2725+@Callable(gN)
2726+func updateBackpack (B,mh) = if ((gN.caller != di))
29492727 then throw("permission denied")
2950- else $Tuple2([StringEntry(bO(B), nh)], nh)
2951-
2952-
2953-
2954-@Callable(gO)
2728+ else $Tuple2([StringEntry(bN(B), mh)], mh)
2729+
2730+
2731+
2732+@Callable(gN)
29552733 func commitForRandom () = {
2956- let mp = ml(gO)
2957- let ni = (height + dw)
2958- let c = toString(gO.caller)
2959- $Tuple2(([IntegerEntry(dx(c), ni)] ++ mp), ni)
2960- }
2961-
2962-
2963-
2964-@Callable(gO)
2734+ let lp = ll(gN)
2735+ let mi = (height + dv)
2736+ let c = toString(gN.caller)
2737+ $Tuple2(([IntegerEntry(dw(c), mi)] ++ lp), mi)
2738+ }
2739+
2740+
2741+
2742+@Callable(gN)
29652743 func buySLand () = {
2966- let mp = ml(gO)
2967- if ((size(gO.payments) != 1))
2744+ let lp = ll(gN)
2745+ if ((size(gN.payments) != 1))
29682746 then throw("Exactly one payment required")
29692747 else {
2970- let mq = value(gO.payments[0])
2971- if ((mq.assetId != cD))
2748+ let lq = value(gN.payments[0])
2749+ if ((lq.assetId != cC))
29722750 then throw("Allowed USDT payment only!")
2973- else if ((mq.amount != ek))
2751+ else if ((lq.amount != ej))
2752+ then throw(("Payment attached should be " + toString(ej)))
2753+ else {
2754+ let fm = iL(gN.caller, gN.transactionId)
2755+ let mj = dF(invoke(dm, "burnAcres", [ek], nil))
2756+ $Tuple2((((fm._1 :+ ScriptTransfer(di, lq.amount, cC)) ++ kj(toString(gN.caller), ac)._1) ++ lp), $Tuple2(fm._2._1, mj))
2757+ }
2758+ }
2759+ }
2760+
2761+
2762+
2763+@Callable(gN)
2764+func expedition (iT,iU) = {
2765+ let lp = ll(gN)
2766+ if ((size(gN.payments) != 0))
2767+ then throw("No payments required")
2768+ else {
2769+ let bQ = toString(gN.caller)
2770+ let hs = iS(bQ, iT, iU)
2771+ let B = hs._2
2772+ let je = A(B)
2773+ let hO = bN(B)
2774+ let ir = hN(hO)
2775+ let jT = split(ir[bo], "_")
2776+ let jV = makeString(fg(true, jT, ei), "_")
2777+ let gA = G(B)
2778+ let lE = valueOrElse(getString(gA), ",;,_,;,_,;,_,;,_,;,_,;,")
2779+ let mk = fn(lE, hs._5)
2780+ let lG = mk._1
2781+ let lH = mk._2
2782+ let ml = iL(gN.caller, gN.transactionId)
2783+ let iR = ml._2._1
2784+ let fm = if ((0 >= hs._1))
2785+ then $Tuple3([IntegerEntry(je, 0), StringEntry(gA, lG)], "", 0)
2786+ else $Tuple3((ml._1 ++ (if (lH)
2787+ then [StringEntry(M(B), "0_0_0_0_0")]
2788+ else ((((nil :+ StringEntry(bO(B), makeString([ml._2._2, "L", iR], "_"))) :+ IntegerEntry(je, hs._1)) :+ StringEntry(gA, lG)) :+ StringEntry(hO, makeString([ir[bm], ir[bn], jV, ir[bp]], ":"))))), iR, hs._3)
2789+ if (kt(B))
2790+ then throw("expedition_checkTournament")
2791+ else if (ku(B))
2792+ then throw("expedition_checkDelivery")
2793+ else {
2794+ let mj = dF(invoke(dm, "burnAcres", [ek], nil))
2795+ $Tuple2(((fm._1 ++ ki(B, ac)._1) ++ lp), $Tuple3(fm._2, fm._3, mj))
2796+ }
2797+ }
2798+ }
2799+
2800+
2801+
2802+@Callable(gN)
2803+func buySLandForAcres () = {
2804+ let lp = ll(gN)
2805+ if ((size(gN.payments) != 1))
2806+ then throw("exactly 1 payment must be attached")
2807+ else {
2808+ let lq = gN.payments[0]
2809+ let ft = lq.amount
2810+ if (if (!(isDefined(lq.assetId)))
2811+ then true
2812+ else (value(lq.assetId) != du))
2813+ then throw("ACRES payments only!")
2814+ else if ((ft != ek))
29742815 then throw(("Payment attached should be " + toString(ek)))
29752816 else {
2976- let fn = jL(gO.caller, gO.transactionId)
2977- let nj = dG(invoke(dn, "burnAcres", [el], nil))
2978- $Tuple2((((fn._1 :+ ScriptTransfer(dj, mq.amount, cD)) ++ lj(toString(gO.caller), ac)._1) ++ mp), $Tuple2(fn._2._1, nj))
2817+ let fm = iL(gN.caller, gN.transactionId)
2818+ let mj = dF(invoke(dm, "burnAcres", [ek], [AttachedPayment(du, ft)]))
2819+ $Tuple2(((fm._1 ++ kj(toString(gN.caller), ac)._1) ++ lp), $Tuple2(fm._2._1, mj))
29792820 }
29802821 }
29812822 }
29822823
29832824
29842825
2985-@Callable(gO)
2986-func expedition (jT,jU) = {
2987- let mp = ml(gO)
2988- if ((size(gO.payments) != 0))
2826+@Callable(gN)
2827+func upgradeInfra (Q) = {
2828+ let lp = ll(gN)
2829+ if ((size(gN.payments) != 0))
29892830 then throw("No payments required")
29902831 else {
2991- let bR = toString(gO.caller)
2992- let iD = jS(bR, jT, jU)
2993- let B = iD._2
2994- let ke = A(B)
2995- let iO = bO(B)
2996- let jr = iN(iO)
2997- let kT = split(jr[bp], "_")
2998- let kV = makeString(fh(true, kT, ej), "_")
2999- let gB = G(B)
3000- let mE = valueOrElse(getString(gB), ",;,_,;,_,;,_,;,_,;,_,;,")
3001- let nk = fo(mE, iD._5)
3002- let mG = nk._1
3003- let mH = nk._2
3004- let nl = jL(gO.caller, gO.transactionId)
3005- let jR = nl._2._1
3006- let fn = if ((0 >= iD._1))
3007- then $Tuple3([IntegerEntry(ke, 0), StringEntry(gB, mG)], "", 0)
3008- else $Tuple3((nl._1 ++ (if (mH)
3009- then [StringEntry(M(B), "0_0_0_0_0")]
3010- else ((((nil :+ StringEntry(bP(B), makeString([nl._2._2, "L", jR], "_"))) :+ IntegerEntry(ke, iD._1)) :+ StringEntry(gB, mG)) :+ StringEntry(iO, makeString([jr[bn], jr[bo], kV, jr[bq]], ":"))))), jR, iD._3)
3011- if (lt(B))
3012- then throw("expedition_checkTournament")
3013- else if (lu(B))
3014- then throw("expedition_checkDelivery")
3015- else {
3016- let nj = dG(invoke(dn, "burnAcres", [el], nil))
3017- $Tuple2(((fn._1 ++ li(B, ac)._1) ++ mp), $Tuple3(fn._2, fn._3, nj))
3018- }
3019- }
3020- }
3021-
3022-
3023-
3024-@Callable(gO)
3025-func buySLandForAcres () = {
3026- let mp = ml(gO)
3027- if ((size(gO.payments) != 1))
3028- then throw("exactly 1 payment must be attached")
3029- else {
3030- let mq = gO.payments[0]
3031- let fu = mq.amount
3032- if (if (!(isDefined(mq.assetId)))
3033- then true
3034- else (value(mq.assetId) != dv))
3035- then throw("ACRES payments only!")
3036- else if ((fu != el))
3037- then throw(("Payment attached should be " + toString(el)))
3038- else {
3039- let fn = jL(gO.caller, gO.transactionId)
3040- let nj = dG(invoke(dn, "burnAcres", [el], [AttachedPayment(dv, fu)]))
3041- $Tuple2(((fn._1 ++ lj(toString(gO.caller), ac)._1) ++ mp), $Tuple2(fn._2._1, nj))
3042- }
3043- }
3044- }
3045-
3046-
3047-
3048-@Callable(gO)
3049-func upgradeInfra (Q) = {
3050- let mp = ml(gO)
3051- if ((size(gO.payments) != 0))
2832+ let fm = jN(true, gN.caller, 0, Q)
2833+ let B = valueOrErrorMessage(getString(bM(toString(gN.caller))), "You don't have a duck staked")
2834+ $Tuple2(((fm._1 ++ lp) ++ ki(B, fraction(ad, fm._3, cK))._1), fm._2)
2835+ }
2836+ }
2837+
2838+
2839+
2840+@Callable(gN)
2841+func activateArtifact (mm,mn) = {
2842+ let lp = ll(gN)
2843+ if ((size(gN.payments) != 0))
30522844 then throw("No payments required")
30532845 else {
3054- let fn = kN(true, gO.caller, 0, Q)
3055- let B = valueOrErrorMessage(getString(bN(toString(gO.caller))), "You don't have a duck staked")
3056- $Tuple2(((fn._1 ++ mp) ++ li(B, fraction(ad, fn._3, cL))._1), fn._2)
3057- }
3058- }
3059-
3060-
3061-
3062-@Callable(gO)
3063-func activateArtifact (nm,nn) = {
3064- let mp = ml(gO)
3065- if ((size(gO.payments) != 0))
2846+ let c = toString(gN.caller)
2847+ let fm = {
2848+ let cD = mm
2849+ if (("PRESALE" == cD))
2850+ then kr(c, mn)
2851+ else if (("ONBOARD" == cD))
2852+ then kk(c)
2853+ else throw("Unknown artifact")
2854+ }
2855+ (fm ++ lp)
2856+ }
2857+ }
2858+
2859+
2860+
2861+@Callable(gN)
2862+func mergeLands (kI) = {
2863+ let lp = ll(gN)
2864+ if ((size(gN.payments) != 0))
30662865 then throw("No payments required")
30672866 else {
3068- let c = toString(gO.caller)
3069- let fn = {
3070- let cE = nm
3071- if (("PRESALE" == cE))
3072- then lr(c, nn)
3073- else if (("ONBOARD" == cE))
3074- then lk(c)
3075- else throw("Unknown artifact")
3076- }
3077- (fn ++ mp)
3078- }
3079- }
3080-
3081-
3082-
3083-@Callable(gO)
3084-func mergeLands (lI) = {
3085- let mp = ml(gO)
3086- if ((size(gO.payments) != 0))
2867+ let fm = lg(toString(gN.caller), kI)
2868+ $Tuple2(((fm._1 ++ lp) ++ kj(toString(gN.caller), ae)._1), fm._2)
2869+ }
2870+ }
2871+
2872+
2873+
2874+@Callable(gN)
2875+func cargoExchange (mo,Q) = {
2876+ let lp = ll(gN)
2877+ if ((size(gN.payments) != 0))
30872878 then throw("No payments required")
30882879 else {
3089- let fn = mg(toString(gO.caller), lI)
3090- $Tuple2(((fn._1 ++ mp) ++ lj(toString(gO.caller), ae)._1), fn._2)
3091- }
3092- }
3093-
3094-
3095-
3096-@Callable(gO)
3097-func cargoExchange (no,Q) = {
3098- let mp = ml(gO)
3099- if ((size(gO.payments) != 0))
3100- then throw("No payments required")
3101- else {
3102- let jq = split_4C(no, ":")
3103- let c = toString(gO.originCaller)
3104- let kv = value(assetInfo(fromBase58String(Q)))
3105- let kw = bx(Q)
3106- if (!(isDefined(getInteger(kw))))
3107- then throw((kv.name + " is not staked"))
2880+ let iq = split_4C(mo, ":")
2881+ let c = toString(gN.originCaller)
2882+ let jv = value(assetInfo(fromBase58String(Q)))
2883+ let jw = bw(Q)
2884+ if (!(isDefined(getInteger(jw))))
2885+ then throw((jv.name + " is not staked"))
31082886 else {
3109- let ky = valueOrErrorMessage(getString(bu(Q)), (("NFT " + kv.name) + " is orphaned"))
3110- if ((ky != c))
2887+ let jy = valueOrErrorMessage(getString(bt(Q)), (("NFT " + jv.name) + " is orphaned"))
2888+ if ((jy != c))
31112889 then throw((aF + " is not yours"))
31122890 else {
3113- let jc = (dL(split(kv.description, "_")[dp]) / cM)
3114- let jd = valueOrElse(getInteger(bE(Q)), 0)
3115- let B = valueOrErrorMessage(getString(bN(c)), "You don't have a duck staked")
3116- let kt = valueOrElse(getString(bP(B)), aN)
3117- let cl = split(value(kt), "_")
3118- if ((cl[bs] != "L"))
3119- then throw((("Duck location type is " + cl[bs]) + ", but should be L"))
3120- else if ((cl[bt] != Q))
2891+ let ic = (dK(split(jv.description, "_")[do]) / cL)
2892+ let id = valueOrElse(getInteger(bD(Q)), 0)
2893+ let B = valueOrErrorMessage(getString(bM(c)), "You don't have a duck staked")
2894+ let jt = valueOrElse(getString(bO(B)), aM)
2895+ let ck = split(value(jt), "_")
2896+ if ((ck[br] != "L"))
2897+ then throw((("Duck location type is " + ck[br]) + ", but should be L"))
2898+ else if ((ck[bs] != Q))
31212899 then throw(("Duck should be on the land " + Q))
31222900 else {
3123- let jb = bD(Q)
3124- let iS = ja(jb, jc, jd)
3125- let iO = bO(B)
3126- let jr = iN(iO)
3127- let fn = jp(jq, iS, jr)
3128- let jj = split(iS[bi], "_")
3129- let kK = (parseIntValue(jj[bk]) + fn._7)
3130- let kL = (parseIntValue(jj[bl]) - fn._7)
3131- ([StringEntry(iO, makeString_2C([jr[bn], fn._4, fn._5, fn._6], ":")), StringEntry(jb, makeString_2C([iS[be], fn._1, fn._2, fn._3, makeString([jj[bj], toString(kK), toString(kL), jj[bm]], "_")], ":"))] ++ mp)
2901+ let ib = bC(Q)
2902+ let hS = ia(ib, ic, id)
2903+ let hO = bN(B)
2904+ let ir = hN(hO)
2905+ let fm = ip(iq, hS, ir)
2906+ let ij = split(hS[bh], "_")
2907+ let jK = (parseIntValue(ij[bj]) + fm._7)
2908+ let jL = (parseIntValue(ij[bk]) - fm._7)
2909+ ([StringEntry(hO, makeString_2C([ir[bm], fm._4, fm._5, fm._6], ":")), StringEntry(ib, makeString_2C([hS[bd], fm._1, fm._2, fm._3, makeString([ij[bi], toString(jK), toString(jL), ij[bl]], "_")], ":"))] ++ lp)
31322910 }
31332911 }
31342912 }
31352913 }
31362914 }
31372915
31382916
31392917
3140-@Callable(gO)
3141-func saveWarehouse (jf,Q) = if ((gO.caller != dj))
2918+@Callable(gN)
2919+func saveWarehouse (if,Q) = if ((gN.caller != di))
31422920 then throw("Access denied")
31432921 else {
3144- let jb = bD(Q)
3145- let jg = split_4C(jf, ":")
3146- if ((size(jg) != 5))
2922+ let ib = bC(Q)
2923+ let ig = split_4C(if, ":")
2924+ if ((size(ig) != 5))
31472925 then throw("warehouse string should contain 4 ':' separators")
31482926 else {
3149- let np = split(jg[bi], "_")[bj]
3150- let kK = iR(jg)
3151- let nq = iP(jg[be])
3152- let kL = ((nq - parseIntValue(np)) - kK)
3153- if ((0 > kL))
2927+ let mp = split(ig[bh], "_")[bi]
2928+ let jK = hR(ig)
2929+ let mq = hP(ig[bd])
2930+ let jL = ((mq - parseIntValue(mp)) - jK)
2931+ if ((0 > jL))
31542932 then throw("Operation leads to negative free warehouse space")
31552933 else {
3156- let nr = makeString_2C([jg[be], jg[bf], jg[bg], jg[bh], makeString([np, toString(kK), toString(kL), toString(nq)], "_")], ":")
3157- $Tuple2([StringEntry(jb, nr)], nr)
2934+ let mr = makeString_2C([ig[bd], ig[be], ig[bf], ig[bg], makeString([mp, toString(jK), toString(jL), toString(mq)], "_")], ":")
2935+ $Tuple2([StringEntry(ib, mr)], mr)
31582936 }
31592937 }
31602938 }
31612939
31622940
31632941
3164-@Callable(gO)
3165-func setCustomName (bv,lS,bz) = {
3166- let mp = ml(gO)
3167- if ((size(gO.payments) != 1))
2942+@Callable(gN)
2943+func setCustomName (bu,kS,by) = {
2944+ let lp = ll(gN)
2945+ if ((size(gN.payments) != 1))
31682946 then throw("Exactly one payment required")
31692947 else {
3170- let mq = value(gO.payments[0])
3171- if ((mq.assetId != cD))
2948+ let lq = value(gN.payments[0])
2949+ if ((lq.assetId != cC))
31722950 then throw("Allowed USDT payment only!")
3173- else if ((mq.amount != eg))
3174- then throw(("Payment should be " + toString(eg)))
3175- else if (contains(lS, "__"))
3176- then throw(("Name should not contain '__': " + lS))
3177- else if ((size(lS) > eh))
3178- then throw(("Name too long, maxLength=" + toString(eh)))
2951+ else if ((lq.amount != ef))
2952+ then throw(("Payment should be " + toString(ef)))
2953+ else if (contains(kS, "__"))
2954+ then throw(("Name should not contain '__': " + kS))
2955+ else if ((size(kS) > eg))
2956+ then throw(("Name too long, maxLength=" + toString(eg)))
31792957 else {
3180- let c = toString(gO.originCaller)
3181- let ns = {
3182- let cE = bz
3183- if (("ACCOUNT" == cE))
2958+ let c = toString(gN.originCaller)
2959+ let ms = {
2960+ let cD = by
2961+ if (("ACCOUNT" == cD))
31842962 then {
3185- let nt = eB(lS)
3186- let nu = getString(nt)
3187- if (isDefined(nu))
3188- then throw(("Name already registered: " + lS))
2963+ let mt = eA(kS)
2964+ let mu = getString(mt)
2965+ if (isDefined(mu))
2966+ then throw(("Name already registered: " + kS))
31892967 else {
3190- let nv = bH(c)
3191- let nw = getString(nv)
3192- let nx = if (isDefined(nw))
3193- then [DeleteEntry(eB(value(nw)))]
2968+ let mv = bG(c)
2969+ let mw = getString(mv)
2970+ let mx = if (isDefined(mw))
2971+ then [DeleteEntry(eA(value(mw)))]
31942972 else nil
3195- (((nx :+ StringEntry(nv, lS)) :+ StringEntry(nt, c)) ++ lj(c, ab)._1)
2973+ (((mx :+ StringEntry(mv, kS)) :+ StringEntry(mt, c)) ++ kj(c, ab)._1)
31962974 }
31972975 }
3198- else if (("LAND" == cE))
2976+ else if (("LAND" == cD))
31992977 then {
3200- let kv = value(assetInfo(fromBase58String(bv)))
3201- let kw = bx(bv)
3202- if (!(isDefined(getInteger(kw))))
3203- then throw((kv.name + " is not staked"))
2978+ let jv = value(assetInfo(fromBase58String(bu)))
2979+ let jw = bw(bu)
2980+ if (!(isDefined(getInteger(jw))))
2981+ then throw((jv.name + " is not staked"))
32042982 else {
3205- let ky = valueOrErrorMessage(getString(bu(bv)), (("NFT " + kv.name) + " is orphaned"))
3206- if ((ky != c))
2983+ let jy = valueOrErrorMessage(getString(bt(bu)), (("NFT " + jv.name) + " is orphaned"))
2984+ if ((jy != c))
32072985 then throw((aF + " is not yours"))
32082986 else {
3209- let nt = eu(lS)
3210- let nu = getString(nt)
3211- if (isDefined(nu))
3212- then throw(("Name already registered: " + lS))
2987+ let mt = et(kS)
2988+ let mu = getString(mt)
2989+ if (isDefined(mu))
2990+ then throw(("Name already registered: " + kS))
32132991 else {
3214- let ny = bw(bv)
3215- let nw = getString(ny)
3216- let nx = if (isDefined(nw))
3217- then [DeleteEntry(eu(value(nw)))]
2992+ let my = bv(bu)
2993+ let mw = getString(my)
2994+ let mx = if (isDefined(mw))
2995+ then [DeleteEntry(et(value(mw)))]
32182996 else nil
3219- (((nx :+ StringEntry(ny, lS)) :+ StringEntry(nt, bv)) ++ lj(c, ab)._1)
2997+ (((mx :+ StringEntry(my, kS)) :+ StringEntry(mt, bu)) ++ kj(c, ab)._1)
32202998 }
32212999 }
32223000 }
32233001 }
3224- else if (("DUCK" == cE))
3002+ else if (("DUCK" == cD))
32253003 then {
3226- let kv = value(assetInfo(fromBase58String(bv)))
3227- let kw = bx(bv)
3228- if (if (!(isDefined(getInteger(kw))))
3004+ let jv = value(assetInfo(fromBase58String(bu)))
3005+ let jw = bw(bu)
3006+ if (if (!(isDefined(getInteger(jw))))
32293007 then true
3230- else !(isDefined(getString(bN(c)))))
3231- then throw((kv.name + " is not staked"))
3008+ else !(isDefined(getString(bM(c)))))
3009+ then throw((jv.name + " is not staked"))
32323010 else {
3233- let ky = valueOrErrorMessage(getString(bM(bv)), (("NFT " + kv.name) + " is orphaned"))
3234- if ((ky != c))
3011+ let jy = valueOrErrorMessage(getString(bL(bu)), (("NFT " + jv.name) + " is orphaned"))
3012+ if ((jy != c))
32353013 then throw((aG + " is not yours"))
32363014 else {
3237- let nt = eA(lS)
3238- let nu = getString(nt)
3239- if (isDefined(nu))
3240- then throw(("Name already registered: " + lS))
3015+ let mt = ez(kS)
3016+ let mu = getString(mt)
3017+ if (isDefined(mu))
3018+ then throw(("Name already registered: " + kS))
32413019 else {
3242- let ny = bG(bv)
3243- let nw = getString(ny)
3244- let nx = if (isDefined(nw))
3245- then [DeleteEntry(eA(value(nw)))]
3020+ let my = bF(bu)
3021+ let mw = getString(my)
3022+ let mx = if (isDefined(mw))
3023+ then [DeleteEntry(ez(value(mw)))]
32463024 else nil
3247- (((nx :+ StringEntry(ny, lS)) :+ StringEntry(nt, bv)) ++ li(bv, ab)._1)
3025+ (((mx :+ StringEntry(my, kS)) :+ StringEntry(mt, bu)) ++ ki(bu, ab)._1)
32483026 }
32493027 }
32503028 }
32513029 }
32523030 else throw("Unknown entity type")
32533031 }
3254- $Tuple2(((ns :+ ScriptTransfer(dj, mq.amount, cD)) ++ mp), 0)
3032+ $Tuple2(((ms :+ ScriptTransfer(di, lq.amount, cC)) ++ lp), 0)
32553033 }
32563034 }
32573035 }
32583036
32593037
32603038
3261-@Callable(gO)
3262-func setReferrals (nz,nA) = if ((gO.callerPublicKey != ed))
3039+@Callable(gN)
3040+func setReferrals (mz,mA) = if ((gN.callerPublicKey != ec))
32633041 then throw("Permission denied")
32643042 else {
3265- let mp = ml(gO)
3266- if ((size(gO.payments) != 0))
3043+ let lp = ll(gN)
3044+ if ((size(gN.payments) != 0))
32673045 then throw("No payments required")
3268- else if (!(isDefined(addressFromString(nz))))
3269- then throw(("Invalid address: " + nz))
3270- else if (!(isDefined(addressFromString(nA))))
3271- then throw(("Invalid address: " + nA))
3046+ else if (!(isDefined(addressFromString(mz))))
3047+ then throw(("Invalid address: " + mz))
3048+ else if (!(isDefined(addressFromString(mA))))
3049+ then throw(("Invalid address: " + mA))
32723050 else {
3273- let nB = eC()
3274- let nC = getString(nB)
3275- let nD = if (isDefined(nC))
3276- then split_4C(value(nC), "_")
3051+ let mB = eB()
3052+ let mC = getString(mB)
3053+ let mD = if (isDefined(mC))
3054+ then split_4C(value(mC), "_")
32773055 else nil
3278- if (containsElement(nD, nA))
3279- then throw((nA + " is not newbie (already has referrals)"))
3056+ if (containsElement(mD, mA))
3057+ then throw((mA + " is not newbie (already has referrals)"))
32803058 else {
3281- let ll = bI(nA)
3282- let lm = getString(ll)
3283- if (if (isDefined(lm))
3284- then isDefined(addressFromString(value(lm)))
3059+ let kl = bH(mA)
3060+ let km = getString(kl)
3061+ if (if (isDefined(km))
3062+ then isDefined(addressFromString(value(km)))
32853063 else false)
3286- then throw(((nA + " already has refBy: ") + value(lm)))
3064+ then throw(((mA + " already has refBy: ") + value(km)))
32873065 else {
3288- let nE = bL(nz)
3289- let nF = getString(nE)
3290- let nG = if (isDefined(nF))
3291- then split_4C(value(nF), "_")
3066+ let mE = bK(mz)
3067+ let mF = getString(mE)
3068+ let mG = if (isDefined(mF))
3069+ then split_4C(value(mF), "_")
32923070 else nil
3293- if (containsElement(nG, nA))
3294- then throw((((nz + " already contains ") + nA) + " within referrals"))
3071+ if (containsElement(mG, mA))
3072+ then throw((((mz + " already contains ") + mA) + " within referrals"))
32953073 else {
3296- let nH = makeString_2C((nG :+ nA), "_")
3297- let nI = if (containsElement(nD, nz))
3298- then value(nC)
3299- else makeString_2C((nD :+ nz), "_")
3300- $Tuple2(([StringEntry(ll, nz), StringEntry(nE, nH), StringEntry(nB, nI)] ++ mp), 0)
3074+ let mH = makeString_2C((mG :+ mA), "_")
3075+ let mI = if (containsElement(mD, mz))
3076+ then value(mC)
3077+ else makeString_2C((mD :+ mz), "_")
3078+ $Tuple2(([StringEntry(kl, mz), StringEntry(mE, mH), StringEntry(mB, mI)] ++ lp), 0)
33013079 }
33023080 }
33033081 }
33043082 }
33053083 }
33063084
33073085
33083086
3309-@Callable(gO)
3310-func distributePoints (nJ,nK,nL,nM,nN) = {
3311- let mp = ml(gO)
3312- if ((size(gO.payments) != 0))
3087+@Callable(gN)
3088+func distributePoints (mJ,mK,mL,mM,mN) = {
3089+ let lp = ll(gN)
3090+ if ((size(gN.payments) != 0))
33133091 then throw("No payments required")
33143092 else {
3315- let c = toString(gO.originCaller)
3316- let nO = dI(invoke(dl, "checkWlgXpREADONLY", [c], nil))
3317- let nP = dG(nO[1])
3318- let nQ = if ((0 >= nP))
3093+ let c = toString(gN.originCaller)
3094+ let mO = dH(invoke(dk, "checkWlgXpREADONLY", [c], nil))
3095+ let mP = dF(mO[1])
3096+ let mQ = if ((0 >= mP))
33193097 then $Tuple2(0, nil)
33203098 else {
3321- let lg = dG(invoke(dl, "takeWlgXp", [c], nil))
3322- if ((lg == lg))
3323- then $Tuple2(nP, [IntegerEntry(I(c), dG(nO[0])), IntegerEntry(H(c), dG(nO[2]))])
3099+ let kg = dF(invoke(dk, "takeWlgXp", [c], nil))
3100+ if ((kg == kg))
3101+ then $Tuple2(mP, [IntegerEntry(I(c), dF(mO[0])), IntegerEntry(H(c), dF(mO[2]))])
33243102 else throw("Strict value is not equal to itself.")
33253103 }
3326- let nR = nQ._1
3327- let nS = nQ._2
3328- let B = valueOrErrorMessage(getString(bN(c)), "You don't have a duck staked")
3329- let nT = J(c)
3330- let nU = (valueOrElse(getInteger(nT), 0) + nR)
3331- let nV = F(B)
3332- let nW = valueOrElse(getInteger(nV), 0)
3333- let nX = (nU + nW)
3334- let nY = ((((nJ + nK) + nL) + nM) + nN)
3335- if ((nY > nX))
3336- then throw((("There are only " + toString(nX)) + " free points to distribute"))
3104+ let mR = mQ._1
3105+ let mS = mQ._2
3106+ let B = valueOrErrorMessage(getString(bM(c)), "You don't have a duck staked")
3107+ let mT = J(c)
3108+ let mU = (valueOrElse(getInteger(mT), 0) + mR)
3109+ let mV = F(B)
3110+ let mW = valueOrElse(getInteger(mV), 0)
3111+ let mX = (mU + mW)
3112+ let mY = ((((mJ + mK) + mL) + mM) + mN)
3113+ if ((mY > mX))
3114+ then throw((("There are only " + toString(mX)) + " free points to distribute"))
33373115 else {
3338- let nZ = C(B)
3339- let at = split(valueOrElse(getString(nZ), "0_0_0_0_0"), "_")
3340- let oa = (nU - nY)
3341- $Tuple2((([IntegerEntry(nT, if ((0 > oa))
3116+ let mZ = C(B)
3117+ let at = split(valueOrElse(getString(mZ), "0_0_0_0_0"), "_")
3118+ let na = (mU - mY)
3119+ $Tuple2((([IntegerEntry(mT, if ((0 > na))
33423120 then 0
3343- else oa), IntegerEntry(nV, if ((0 > oa))
3344- then (nW + oa)
3345- else nW), StringEntry(nZ, makeString([toString((parseIntValue(at[l]) + nJ)), toString((parseIntValue(at[m]) + nK)), toString((parseIntValue(at[n]) + nL)), toString((parseIntValue(at[o]) + nM)), toString((parseIntValue(at[p]) + nN))], "_"))] ++ mp) ++ nS), 0)
3121+ else na), IntegerEntry(mV, if ((0 > na))
3122+ then (mW + na)
3123+ else mW), StringEntry(mZ, makeString([toString((parseIntValue(at[l]) + mJ)), toString((parseIntValue(at[m]) + mK)), toString((parseIntValue(at[n]) + mL)), toString((parseIntValue(at[o]) + mM)), toString((parseIntValue(at[p]) + mN))], "_"))] ++ lp) ++ mS), 0)
33463124 }
33473125 }
33483126 }
33493127
33503128
33513129
3352-@Callable(gO)
3353-func splitByGlobalWeightsREADONLY (eM) = $Tuple2(nil, fe(eM))
3354-
3355-
3356-
3357-@Callable(gO)
3358-func splitByGlobalAndLocalWeightsREADONLY (ob,oc,gR) = {
3359- let gK = gQ(gR)
3360- $Tuple2(nil, $Tuple2(fe(ob), eP(oc, gK)))
3361- }
3362-
3363-
3364-
3365-@Callable(gO)
3366-func getBackpackREADONLY (B) = $Tuple2(nil, makeString(iN(bO(B)), ":"))
3367-
3368-
3369-
3370-@Callable(gO)
3130+@Callable(gN)
3131+func splitByGlobalWeightsREADONLY (eL) = $Tuple2(nil, fd(eL))
3132+
3133+
3134+
3135+@Callable(gN)
3136+func splitByGlobalAndLocalWeightsREADONLY (nb,nc,gQ) = {
3137+ let gJ = gP(gQ)
3138+ $Tuple2(nil, $Tuple2(fd(nb), eO(nc, gJ)))
3139+ }
3140+
3141+
3142+
3143+@Callable(gN)
3144+func getBackpackREADONLY (B) = $Tuple2(nil, makeString(hN(bN(B)), ":"))
3145+
3146+
3147+
3148+@Callable(gN)
33713149 func getWarehouseREADONLY (Q) = {
3372- let kv = value(assetInfo(fromBase58String(Q)))
3373- let jc = (dL(split(kv.description, "_")[dp]) / cM)
3374- let jd = valueOrElse(getInteger(bE(Q)), 0)
3375- $Tuple2(nil, makeString_2C(ja(bD(Q), jc, jd), ":"))
3376- }
3377-
3378-
3379-
3380-@Callable(gO)
3381-func saveLastTx () = if (!(containsElement([dl, dj, dm, dn], gO.caller)))
3150+ let jv = value(assetInfo(fromBase58String(Q)))
3151+ let ic = (dK(split(jv.description, "_")[do]) / cL)
3152+ let id = valueOrElse(getInteger(bD(Q)), 0)
3153+ $Tuple2(nil, makeString_2C(ia(bC(Q), ic, id), ":"))
3154+ }
3155+
3156+
3157+
3158+@Callable(gN)
3159+func saveLastTx () = if (!(containsElement([dk, di, dl, dm], gN.caller)))
33823160 then throw("Access denied")
3383- else $Tuple2(ml(gO), 42)
3384-
3385-
3386-
3387-@Callable(gO)
3388-func updateDuckStats (B,lg) = if ((gO.caller != dj))
3161+ else $Tuple2(ll(gN), 42)
3162+
3163+
3164+
3165+@Callable(gN)
3166+func updateDuckStats (B,kg) = if ((gN.caller != di))
33893167 then throw("Access denied")
3390- else li(B, lg)
3391-
3392-
3393-
3394-@Callable(gO)
3395-func updateAccStats (c,lg) = if (!(containsElement([dl, dj, dn], gO.caller)))
3168+ else ki(B, kg)
3169+
3170+
3171+
3172+@Callable(gN)
3173+func updateAccStats (c,kg) = if (!(containsElement([dk, di, dm], gN.caller)))
33963174 then throw("Access denied")
3397- else lj(c, lg)
3398-
3399-
3400-
3401-@Callable(gO)
3402-func equipDuck (od) = {
3403- let mp = ml(gO)
3404- if ((size(gO.payments) != 0))
3175+ else kj(c, kg)
3176+
3177+
3178+
3179+@Callable(gN)
3180+func equipDuck (nd) = {
3181+ let lp = ll(gN)
3182+ if ((size(gN.payments) != 0))
34053183 then throw("No payments required")
34063184 else {
3407- let c = toString(gO.originCaller)
3408- let B = valueOrErrorMessage(getString(bN(c)), "You don't have a duck staked")
3409- if (lt(B))
3185+ let c = toString(gN.originCaller)
3186+ let B = valueOrErrorMessage(getString(bM(c)), "You don't have a duck staked")
3187+ if (kt(B))
34103188 then throw("equipDuck_checkTournament")
3411- else if (lu(B))
3189+ else if (ku(B))
34123190 then throw("equipDuck_checkDelivery")
34133191 else {
3414- let gB = G(B)
3415- let oe = split(valueOrElse(getString(gB), ",;,_,;,_,;,_,;,_,;,_,;,"), "_")
3416- let iO = bO(B)
3417- let jr = iN(iO)
3418- let mG = split(od, "_")
3419- if ((size(mG) != r))
3192+ let gA = G(B)
3193+ let ne = split(valueOrElse(getString(gA), ",;,_,;,_,;,_,;,_,;,_,;,"), "_")
3194+ let hO = bN(B)
3195+ let ir = hN(hO)
3196+ let lG = split(nd, "_")
3197+ if ((size(lG) != r))
34203198 then throw("Wrong equipment string")
34213199 else {
3422- let gD = gq(oe, fB(jr[bq]), true, nil)
3423- let gE = split(mG[q], ";")[1]
3424- let ar = if ((gE == ""))
3200+ let gC = gp(ne, fA(ir[bp]), true, nil)
3201+ let gD = split(lG[q], ";")[1]
3202+ let ar = if ((gD == ""))
34253203 then 0
34263204 else {
3427- let gF = split(gE, ",")[0]
3428- if ((gF == ""))
3205+ let gE = split(gD, ",")[0]
3206+ if ((gE == ""))
34293207 then 0
34303208 else {
3431- let fQ = split(gF, ":")
3432- let dh = fQ[0]
3433- let gG = fQ[1]
3434- if (if (if (if (if ((dh == "06"))
3209+ let fP = split(gE, ":")
3210+ let dg = fP[0]
3211+ let gF = fP[1]
3212+ if (if (if (if (if ((dg == "06"))
34353213 then true
3436- else (dh == "07"))
3214+ else (dg == "07"))
34373215 then true
3438- else (dh == "08"))
3439- then (gG != "")
3216+ else (dg == "08"))
3217+ then (gF != "")
34403218 else false)
3441- then (parseIntValue(gG) > 0)
3219+ then (parseIntValue(gF) > 0)
34423220 else false)
3443- then parseIntValue(split(aY[parseIntValue(dh)], "_")[ba])
3221+ then parseIntValue(split(aX[parseIntValue(dg)], "_")[aZ])
34443222 else 0
34453223 }
34463224 }
3447- let gl = ap(this, B, ar, true)
3448- let gH = gq(mG, gD, false, gl)
3449- let of = fG(gH)
3450- $Tuple2(([StringEntry(gB, od), StringEntry(iO, makeString_2C([jr[bn], jr[bo], jr[bp], of], ":")), StringEntry(M(B), makeString([toString(gl[7]), toString(gl[8]), toString(gl[9]), toString(gl[10]), toString(gl[11])], "_"))] ++ mp), 0)
3225+ let gk = ap(this, B, ar, true)
3226+ let gG = gp(lG, gC, false, gk)
3227+ let nf = fF(gG)
3228+ $Tuple2(([StringEntry(gA, nd), StringEntry(hO, makeString_2C([ir[bm], ir[bn], ir[bo], nf], ":")), StringEntry(M(B), makeString([toString(gk[7]), toString(gk[8]), toString(gk[9]), toString(gk[10]), toString(gk[11])], "_"))] ++ lp), 0)
34513229 }
34523230 }
34533231 }
34543232 }
34553233
34563234
34573235
3458-@Callable(gO)
3459-func fortificateLand (Q,og) = {
3460- let mp = ml(gO)
3461- if ((size(gO.payments) != 0))
3236+@Callable(gN)
3237+func fortificateLand (Q,ng) = {
3238+ let lp = ll(gN)
3239+ if ((size(gN.payments) != 0))
34623240 then throw("No payments required")
34633241 else {
3464- let c = toString(gO.originCaller)
3465- let B = valueOrElse(getString(bN(c)), "")
3466- let fL = ap(this, B, 0, false)
3467- let oh = bF(Q)
3468- let oi = split(valueOrElse(getString(oh), ":0_15:0_18:0"), "_")
3469- let kv = value(assetInfo(fromBase58String(Q)))
3470- let jc = (dL(split(kv.description, "_")[dp]) / cM)
3471- let jd = valueOrElse(getInteger(bE(Q)), 0)
3472- let jb = bD(Q)
3473- let jg = ja(jb, jc, jd)
3474- let oj = split(jg[bi], "_")
3475- let ok = parseIntValue(oj[bk])
3476- let ol = parseIntValue(oj[bl])
3477- let om = split(og, "_")
3478- let on = gx(oi, fB(jg[bh]), ok, ol, true, nil)
3479- let gD = on._1
3480- let oo = on._2
3481- let op = on._3
3482- let oq = gx(om, gD, oo, op, false, fL)
3483- let gH = oq._1
3484- let or = oq._2
3485- let os = oq._3
3486- let of = fG(gH)
3487- let lb = makeString([oj[bj], toString(or), toString(os), oj[bm]], "_")
3488- $Tuple2(([StringEntry(oh, og), StringEntry(jb, makeString_2C([jg[be], jg[bf], jg[bg], of, lb], ":"))] ++ mp), 0)
3489- }
3490- }
3491-
3492-
3493-
3494-@Callable(gO)
3495-func initDuckTourAttempt (B) = if ((gO.caller != dm))
3242+ let c = toString(gN.originCaller)
3243+ let B = valueOrElse(getString(bM(c)), "")
3244+ let fK = ap(this, B, 0, false)
3245+ let nh = bE(Q)
3246+ let ni = split(valueOrElse(getString(nh), ":0_15:0_18:0"), "_")
3247+ let jv = value(assetInfo(fromBase58String(Q)))
3248+ let ic = (dK(split(jv.description, "_")[do]) / cL)
3249+ let id = valueOrElse(getInteger(bD(Q)), 0)
3250+ let ib = bC(Q)
3251+ let ig = ia(ib, ic, id)
3252+ let nj = split(ig[bh], "_")
3253+ let nk = parseIntValue(nj[bj])
3254+ let nl = parseIntValue(nj[bk])
3255+ let nm = split(ng, "_")
3256+ let nn = gw(ni, fA(ig[bg]), nk, nl, true, nil)
3257+ let gC = nn._1
3258+ let no = nn._2
3259+ let np = nn._3
3260+ let nq = gw(nm, gC, no, np, false, fK)
3261+ let gG = nq._1
3262+ let nr = nq._2
3263+ let ns = nq._3
3264+ let nf = fF(gG)
3265+ let kb = makeString([nj[bi], toString(nr), toString(ns), nj[bl]], "_")
3266+ $Tuple2(([StringEntry(nh, ng), StringEntry(ib, makeString_2C([ig[bd], ig[be], ig[bf], nf, kb], ":"))] ++ lp), 0)
3267+ }
3268+ }
3269+
3270+
3271+
3272+@Callable(gN)
3273+func initDuckTourAttempt (B) = if ((gN.caller != dl))
34963274 then throw("Access denied")
34973275 else {
3498- let ke = A(B)
3499- let kf = aj(valueOrElse(getInteger(E(B)), 0))
3500- let ly = valueOrElse(getInteger(ke), kf)
3501- let ot = bP(B)
3502- let kt = valueOrElse(getString(ot), aN)
3503- let ck = valueOrElse(getInteger(dm, bV), 0)
3504- let ou = (toString(ck) + "_T_0")
3505- $Tuple2([IntegerEntry(K(B), ly), IntegerEntry(ke, kf), StringEntry(L(B), kt), StringEntry(ot, ou)], ou)
3276+ let je = A(B)
3277+ let jf = aj(valueOrElse(getInteger(E(B)), 0))
3278+ let ky = valueOrElse(getInteger(je), jf)
3279+ let nt = bO(B)
3280+ let jt = valueOrElse(getString(nt), aM)
3281+ let cj = valueOrElse(getInteger(dl, bU), 0)
3282+ let nu = (toString(cj) + "_T_0")
3283+ $Tuple2([IntegerEntry(K(B), ky), IntegerEntry(je, jf), StringEntry(L(B), jt), StringEntry(nt, nu)], nu)
35063284 }
35073285
35083286
35093287
3510-@Callable(gO)
3288+@Callable(gN)
35113289 func breakAttempt () = {
3512- let mp = ml(gO)
3513- let B = valueOrErrorMessage(getString(bN(toString(gO.caller))), "You don't have a duck staked")
3514- let ot = bP(B)
3515- let kt = valueOrElse(getString(ot), aN)
3516- if ((split(kt, "_")[bs] != "T"))
3290+ let lp = ll(gN)
3291+ let B = valueOrErrorMessage(getString(bM(toString(gN.caller))), "You don't have a duck staked")
3292+ let nt = bO(B)
3293+ let jt = valueOrElse(getString(nt), aM)
3294+ if ((split(jt, "_")[br] != "T"))
35173295 then throw("Your duck is not in the tournament")
35183296 else {
3519- let ov = getIntegerValue(K(B))
3520- let lE = getStringValue(L(B))
3521- $Tuple2(((mp :+ IntegerEntry(A(B), ov)) :+ StringEntry(ot, lE)), kt)
3522- }
3523- }
3524-
3525-
3526-
3527-@Callable(gO)
3528-func exitTournamentInternal (B) = if ((gO.caller != this))
3297+ let nv = getIntegerValue(K(B))
3298+ let kE = getStringValue(L(B))
3299+ $Tuple2(((lp :+ IntegerEntry(A(B), nv)) :+ StringEntry(nt, kE)), jt)
3300+ }
3301+ }
3302+
3303+
3304+
3305+@Callable(gN)
3306+func exitTournamentInternal (B) = if ((gN.caller != this))
35293307 then throw("Access denied")
35303308 else {
3531- let ov = getIntegerValue(K(B))
3532- let lE = getStringValue(L(B))
3533- $Tuple2([IntegerEntry(A(B), ov), StringEntry(bP(B), lE)], false)
3309+ let nv = getIntegerValue(K(B))
3310+ let kE = getStringValue(L(B))
3311+ $Tuple2([IntegerEntry(A(B), nv), StringEntry(bO(B), kE)], false)
35343312 }
35353313
35363314
35373315
3538-@Callable(gO)
3539-func exitDeliveryInternal (B) = if ((gO.caller != this))
3316+@Callable(gN)
3317+func exitDeliveryInternal (B) = if ((gN.caller != this))
35403318 then throw("Access denied")
35413319 else {
3542- let nl = lv(B, false, 0, 0)
3543- $Tuple2((nl._1 ++ nl._2), false)
3320+ let ml = kv(B, false, 0, 0)
3321+ $Tuple2((ml._1 ++ ml._2), false)
35443322 }
35453323
35463324
35473325
3548-@Callable(gO)
3549-func autoExitDelivery (B,jY,ow,lw) = if ((gO.caller != this))
3326+@Callable(gN)
3327+func autoExitDelivery (B,iY,nw,kw) = if ((gN.caller != this))
35503328 then throw("Access denied")
35513329 else {
3552- let nl = lv(B, true, jY, lw)
3553- $Tuple2(nl._1, nl._3)
3330+ let ml = kv(B, true, iY, kw)
3331+ $Tuple2(ml._1, ml._3)
35543332 }
35553333
35563334
35573335
3558-@Callable(gO)
3559-func breakDelivery () = $Tuple2(ml(gO), "breakDelivery")
3560-
3561-
3562-
3563-@Callable(gO)
3564-func prepareRobbery (jT,jU) = {
3565- let mp = ml(gO)
3566- if (!(sigVerify_8Kb(jT, jU, ed)))
3336+@Callable(gN)
3337+func breakDelivery () = $Tuple2(ll(gN), "breakDelivery")
3338+
3339+
3340+
3341+@Callable(gN)
3342+func prepareRobbery (iT,iU) = {
3343+ let lp = ll(gN)
3344+ if (!(sigVerify_8Kb(iT, iU, ec)))
35673345 then throw("signature does not match")
3568- else if ((size(gO.payments) != 1))
3346+ else if ((size(gN.payments) != 1))
35693347 then throw("exactly 1 payment must be attached")
35703348 else {
3571- let mq = gO.payments[0]
3572- let ox = mq.amount
3573- if (if (!(isDefined(mq.assetId)))
3349+ let lq = gN.payments[0]
3350+ let nx = lq.amount
3351+ if (if (!(isDefined(lq.assetId)))
35743352 then true
3575- else (value(mq.assetId) != dt))
3353+ else (value(lq.assetId) != ds))
35763354 then throw("WLGOLD payments only!")
35773355 else {
3578- let ft = split(toUtf8String(jT), "|")
3579- if ((size(ft) != 2))
3356+ let fs = split(toUtf8String(iT), "|")
3357+ if ((2 > size(fs)))
35803358 then throw("Wrong message format")
35813359 else {
3582- let B = ft[0]
3583- if (lt(B))
3360+ let B = fs[0]
3361+ if (kt(B))
35843362 then throw("prepareRobbery_checkTournament")
3585- else if (lu(B))
3363+ else if (ku(B))
35863364 then throw("prepareRobbery_checkDelivery")
35873365 else {
35883366 let aB = ax(this, B)._1
3589- if ((aB > ox))
3590- then throw(((("Payment " + toString(ox)) + " < required ") + toString(aB)))
3367+ if ((aB > nx))
3368+ then throw(((("Payment " + toString(nx)) + " < required ") + toString(aB)))
35913369 else {
3592- let oy = split(ft[1], "_")
3370+ let ny = split(fs[1], "_")
35933371 let aA = lastBlock.timestamp
35943372 let aC = valueOrElse(getInteger(S(B)), 0)
35953373 let aD = valueOrElse(getString(T(B)), "")
35963374 let aE = valueOrElse(getInteger(R(aD)), 0)
35973375 if (if ((aC != y))
35983376 then (aE > aA)
35993377 else false)
36003378 then throw(("You already started robbing, wait till " + toString(aE)))
36013379 else {
3602- func oz (eV,Q) = {
3603- let oA = valueOrElse(getInteger(P(Q)), 0)
3604- let oB = valueOrElse(getInteger(R(Q)), 0)
3605- if ((oA > size(v)))
3380+ func nz (eU,Q) = {
3381+ let nA = valueOrElse(getInteger(P(Q)), 0)
3382+ let nB = valueOrElse(getInteger(R(Q)), 0)
3383+ if ((nA > size(v)))
36063384 then throw("Invalid state")
3607- else if ((aA > oB))
3385+ else if ((aA > nB))
36083386 then {
3609- let oC = valueOrElse(getInteger(bx(Q)), 0)
3610- if ((0 >= oC))
3611- then eV
3387+ let nC = valueOrElse(getInteger(bw(Q)), 0)
3388+ if ((0 >= nC))
3389+ then eU
36123390 else {
3613- let gv = value(assetInfo(fromBase58String(Q)))
3614- let kz = split(gv.description, "_")
3615- let kl = dL(kz[dp])
3616- let oD = kk(Q, kl)
3617- let gU = (aA - oC)
3618- let kC = fraction(gU, (oD * kl), a)
3619- if ((w > kC))
3620- then eV
3621- else (eV :+ Q)
3391+ let gu = value(assetInfo(fromBase58String(Q)))
3392+ let jz = split(gu.description, "_")
3393+ let jl = dK(jz[do])
3394+ let nD = jk(Q, jl)
3395+ let gT = (aA - nC)
3396+ let jC = fraction(gT, (nD * jl), a)
3397+ if ((w > jC))
3398+ then eU
3399+ else (eU :+ Q)
36223400 }
36233401 }
3624- else eV
3402+ else eU
36253403 }
36263404
3627- let oE = {
3628- let eX = oy
3629- let eY = size(eX)
3630- let eZ = nil
3631- func fa (fb,fc) = if ((fc >= eY))
3632- then fb
3633- else oz(fb, eX[fc])
3634-
3635- func fd (fb,fc) = if ((fc >= eY))
3636- then fb
3405+ let nE = {
3406+ let eW = ny
3407+ let eX = size(eW)
3408+ let eY = nil
3409+ func eZ (fa,fb) = if ((fb >= eX))
3410+ then fa
3411+ else nz(fa, eW[fb])
3412+
3413+ func fc (fa,fb) = if ((fb >= eX))
3414+ then fa
36373415 else throw("List size exceeds 10")
36383416
3639- fd(fa(fa(fa(fa(fa(fa(fa(fa(fa(fa(eZ, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
3417+ fc(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eZ(eY, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
36403418 }
3641- if ((size(oE) == 0))
3419+ if ((size(nE) == 0))
36423420 then throw("No candidates for robbery")
36433421 else {
3644- let oF = dW(size(oE), jT, jU)
3645- let Q = oE[oF]
3646- $Tuple2(([IntegerEntry(P(Q), x), IntegerEntry(R(Q), (aA + v[x])), IntegerEntry(S(B), z), StringEntry(T(B), Q)] ++ mp), Q)
3422+ let nF = dV(size(nE), iT, iU)
3423+ let Q = nE[nF]
3424+ $Tuple2(([IntegerEntry(P(Q), x), IntegerEntry(R(Q), (aA + v[x])), IntegerEntry(S(B), z), StringEntry(T(B), Q)] ++ lp), Q)
36473425 }
36483426 }
36493427 }
36503428 }
36513429 }
36523430 }
36533431 }
36543432 }
36553433
36563434
36573435
3658-@Callable(gO)
3659-func robLand (jT,jU) = {
3660- let mp = ml(gO)
3661- if (!(sigVerify_8Kb(jT, jU, ed)))
3436+@Callable(gN)
3437+func robLand (iT,iU) = {
3438+ let lp = ll(gN)
3439+ if (!(sigVerify_8Kb(iT, iU, ec)))
36623440 then throw("signature does not match")
36633441 else {
3664- let bR = toString(gO.caller)
3665- let B = valueOrErrorMessage(getString(bN(bR)), "You don't have a duck staked")
3442+ let bQ = toString(gN.caller)
3443+ let B = valueOrErrorMessage(getString(bM(bQ)), "You don't have a duck staked")
36663444 let aA = lastBlock.timestamp
3667- $Tuple2((mp :+ IntegerEntry(N(B), aA)), 0)
3668- }
3669- }
3670-
3671-
3672-
3673-@Callable(gO)
3445+ $Tuple2((lp :+ IntegerEntry(N(B), aA)), 0)
3446+ }
3447+ }
3448+
3449+
3450+
3451+@Callable(gN)
36743452 func acceptDelivery () = {
3675- let mp = ml(gO)
3676- let bR = toString(gO.caller)
3677- let B = valueOrErrorMessage(getString(bN(bR)), "You don't have a duck staked")
3678- let oG = valueOrElse(getInteger(dj, bT), 0)
3679- let lC = valueOrElse(getInteger(dj, bU), 0)
3680- if ((aQ > (oG - lC)))
3681- then throw(((("Delivery is not available, fund=" + dQ(oG, 6)) + ", locked=") + dQ(lC, 6)))
3453+ let lp = ll(gN)
3454+ let bQ = toString(gN.caller)
3455+ let B = valueOrErrorMessage(getString(bM(bQ)), "You don't have a duck staked")
3456+ let nG = valueOrElse(getInteger(di, bS), 0)
3457+ let kC = valueOrElse(getInteger(di, bT), 0)
3458+ if ((aP > (nG - kC)))
3459+ then throw(((("Delivery is not available, fund=" + dP(nG, 6)) + ", locked=") + dP(kC, 6)))
36823460 else {
36833461 let aA = lastBlock.timestamp
3684- let oH = valueOrElse(getInteger(U(B)), 0)
3685- if ((oH > aA))
3686- then throw(("Delivery is forbidden for your duck until " + toString(oH)))
3462+ let nH = valueOrElse(getInteger(U(B)), 0)
3463+ if ((nH > aA))
3464+ then throw(("Delivery is forbidden for your duck until " + toString(nH)))
36873465 else {
36883466 let av = getIntegerValue(A(B))
36893467 if ((0 >= av))
36903468 then throw("You cannot accept delivery with zero health")
36913469 else {
3692- let lB = V(bR)
3693- let fV = valueOrElse(getInteger(lB), 0)
3694- let oI = valueOrElse(getInteger(W(bR)), 0)
3695- let oJ = (aA / a)
3696- let oK = valueOrElse(getInteger(dn, d(bR)), 0)
3697- let oL = (aS + (oK / aT))
3698- if (if ((fV >= oL))
3699- then (oI == oJ)
3470+ let kB = V(bQ)
3471+ let fU = valueOrElse(getInteger(kB), 0)
3472+ let nI = valueOrElse(getInteger(W(bQ)), 0)
3473+ let nJ = (aA / a)
3474+ let nK = valueOrElse(getInteger(dm, d(bQ)), 0)
3475+ let nL = (aR + (nK / aS))
3476+ if (if ((fU >= nL))
3477+ then (nI == nJ)
37003478 else false)
3701- then throw((("You already used " + toString(oL)) + " delivery attempts for today"))
3702- else if (lt(B))
3479+ then throw((("You already used " + toString(nL)) + " delivery attempts for today"))
3480+ else if (kt(B))
37033481 then throw("acceptDelivery_checkTournament")
3704- else if (lu(B))
3482+ else if (ku(B))
37053483 then throw("acceptDelivery_checkDelivery")
37063484 else {
3707- let oM = dG(invoke(dj, "updateDeliveryLocked", [(lC + aQ)], nil))
3708- let ot = bP(B)
3709- let kt = valueOrElse(getString(ot), aN)
3710- let oN = (toString(aA) + "_D_0")
3711- $Tuple2(([StringEntry(L(B), kt), StringEntry(ot, oN), IntegerEntry(lB, if ((oI != oJ))
3485+ let nM = dF(invoke(di, "updateDeliveryLocked", [(kC + aP)], nil))
3486+ let nt = bO(B)
3487+ let jt = valueOrElse(getString(nt), aM)
3488+ let nN = (toString(aA) + "_D_0")
3489+ $Tuple2(([StringEntry(L(B), jt), StringEntry(nt, nN), IntegerEntry(kB, if ((nI != nJ))
37123490 then 0
3713- else fV)] ++ mp), $Tuple2(oN, oM))
3491+ else fU)] ++ lp), $Tuple2(nN, nM))
37143492 }
37153493 }
37163494 }
37173495 }
37183496 }
37193497
37203498
37213499
3722-@Callable(gO)
3723-func checkDeliveryCallback (B) = if ((gO.caller != dm))
3500+@Callable(gN)
3501+func checkDeliveryCallback (B) = if ((gN.caller != dl))
37243502 then throw("Access denied")
3725- else $Tuple2(nil, lu(B))
3726-
3727-
3728-
3729-@Callable(gO)
3730-func genTestREADONLY (iB,gL) = {
3731- let oO = value(value(blockInfoByHeight(2827006)).vrf)
3732- let jO = hj(toBigInt((oO + sha256(toBytes(iB)))))
3733- $Tuple2(nil, hB(jO, gL, -1))
3734- }
3503+ else $Tuple2(nil, ku(B))
37353504
37363505

github/deemru/w8io/c3f4982 
1392.68 ms