tx · AT9B6QnaHUvuwepSMjJJo8WP8dL6hKSNDEWqeZ5Gzh2A 3NDCyBG5q85JuaRiigUeEtainyjCQT3XpZm: -0.10800000 Waves 2023.10.10 19:50 [2792789] smart account 3NDCyBG5q85JuaRiigUeEtainyjCQT3XpZm > SELF 0.00000000 Waves
{ "type": 13, "id": "AT9B6QnaHUvuwepSMjJJo8WP8dL6hKSNDEWqeZ5Gzh2A", "fee": 10800000, "feeAssetId": null, "timestamp": 1696956631209, "version": 2, "chainId": 84, "sender": "3NDCyBG5q85JuaRiigUeEtainyjCQT3XpZm", "senderPublicKey": "EVooykMNV691Venwp1dHUTBd7KWequzUcda57Wd3LQEX", "proofs": [ "2ivL7JDaPDEky7XnYzVpc63ZkKv5Yv5JuZrpXoP56Vyx8EFPGJzF5aQAA1eJV89fv2qZY7Dh7Z5VvaRZrUiabWCt" ], "script": "base64:BgLkAQgCEgMKAQgSBAoCCAESAwoBBBIAEgMKAQgSABIDCgEIEgQKAgEIEgQKAgEIEgQKAgICEgUKAwEBARIAEgQKAggIEgASABIECgICAhIAEgMKAQgSBAoCCAgSAwoBGBIECgIICBIECgIICBIDCgEIEgMKARgSAwoBCBIFCgMICAgSBAoCCAgSBwoFAQEBAQESAwoBARIFCgMBAQgSAwoBCBIDCgEIEgASBAoCCAESBAoCCAESAwoBCBIECgIICBIDCgEIEgASAwoBCBIDCgEIEgYKBAgBCAESBAoCAgISBAoCAgISAKICAAlEQVlNSUxMSVMAgLiZKQATREVMSVZFUllfUFVOSVNITUVOVADg1AMBFGtleUxhc3RBcmJUaW1lQnlVc2VyAQRhZGRyCQCsAgICEGxhc3RBcmJUaW1lVXNlcl8FBGFkZHIBGmtleUFjcmVzU3Rha2VkQW1vdW50QnlVc2VyAQRhZGRyCQCsAgICGGFjcmVzU3Rha2VkQW1vdW50QnlVc2VyXwUEYWRkcgAGU0NBTEU4AIDC1y8ADHhwTGV2ZWxTY2FsZQCAGQAPeHBMZXZlbFJlY2lwUG93AKAfABJudW1Qb2ludHNPbkxldmVsVXAAAwAOcm9iYmVyeUNvc3RNaW4AgMLXLwAUcm9iYmVyeUNvb2xkb3duQ29lZmYAkAMADHJlcXVpcmVtZW50cwkAzAgCAghTdHJlbmd0aAkAzAgCAghBY2N1cmFjeQkAzAgCAglJbnRlbGxlY3QJAMwIAgIJRW5kdXJhbmNlCQDMCAICCURleHRlcml0eQkAzAgCAgVMZXZlbAkAzAgCAgZIZWFsdGgFA25pbAAMY2hhclN0cmVuZ3RoAAAADGNoYXJBY2N1cmFjeQABAA1jaGFySW50ZWxsZWN0AAIADWNoYXJFbmR1cmFuY2UAAwANY2hhckRleHRlcml0eQAEAAtzZWdCYWNrcGFjawAAAAtOVU1TRUdNRU5UUwAGAApOVU1NQUlOQVVYAAIACE1BWFNMT1RTAAIADU1BWFBST0RJTlNMT1QAHgAQbGFuZFJvYkNvb2xkb3ducwkAzAgCAAAJAMwIAgDAzyQJAMwIAgCg9zYJAMwIAgCA3MwUCQDMCAIAgK6mCgUDbmlsAA5NSU5fUkVTX1RPX1JPQgCA2sQJAAxyb2JJZHhMb2NrZWQAAQALZHVja0lkeEZyZWUAAAAQZHVja0lkeFByZXBhcmluZwABAQ1rZXlEdWNrSGVhbHRoAQtkdWNrQXNzZXRJZAkArAICAgtkdWNrSGVhbHRoXwULZHVja0Fzc2V0SWQBDGtleUR1Y2tDaGFycwELZHVja0Fzc2V0SWQJAKwCAgIKZHVja0NoYXJzXwULZHVja0Fzc2V0SWQBCWtleUR1Y2tYUAELZHVja0Fzc2V0SWQJAKwCAgIHZHVja1hQXwULZHVja0Fzc2V0SWQBDGtleUR1Y2tMZXZlbAELZHVja0Fzc2V0SWQJAKwCAgIKZHVja0xldmVsXwULZHVja0Fzc2V0SWQBEWtleUR1Y2tGcmVlUG9pbnRzAQtkdWNrQXNzZXRJZAkArAICAg9kdWNrRnJlZVBvaW50c18FC2R1Y2tBc3NldElkARBrZXlEdWNrRXF1aXBtZW50AQtkdWNrQXNzZXRJZAkArAICAg5kdWNrRXF1aXBtZW50XwULZHVja0Fzc2V0SWQBCWtleVVzZXJYUAEEYWRkcgkArAICAgd1c2VyWFBfBQRhZGRyAQxrZXlVc2VyTGV2ZWwBBGFkZHIJAKwCAgIKdXNlckxldmVsXwUEYWRkcgERa2V5VXNlckZyZWVQb2ludHMBBGFkZHIJAKwCAgIPdXNlckZyZWVQb2ludHNfBQRhZGRyAQ5rZXlTYXZlZEhlYWx0aAELZHVja0Fzc2V0SWQJAKwCAgIMc2F2ZWRIZWFsdGhfBQtkdWNrQXNzZXRJZAEQa2V5U2F2ZWRMb2NhdGlvbgELZHVja0Fzc2V0SWQJAKwCAgIOc2F2ZWRMb2NhdGlvbl8FC2R1Y2tBc3NldElkAQxrZXlEdWNrQnVmZnMBC2R1Y2tBc3NldElkCQCsAgICCmR1Y2tCdWZmc18FC2R1Y2tBc3NldElkARhrZXlMYXN0Um9iYmVyeVRpbWVCeUR1Y2sBC2R1Y2tBc3NldElkCQCsAgICEGxhc3RSb2JiZXJ5VGltZV8FC2R1Y2tBc3NldElkARhrZXlMYXN0Um9iYmVyeUNvc3RCeUR1Y2sBC2R1Y2tBc3NldElkCQCsAgICEGxhc3RSb2JiZXJ5Q29zdF8FC2R1Y2tBc3NldElkARNrZXlMYW5kUm9iYmVyeVN0YXRlAQtsYW5kQXNzZXRJZAkArAICAhFsYW5kUm9iYmVyeVN0YXRlXwULbGFuZEFzc2V0SWQBEmtleUxhbmRDb29sZG93bkVUQQELbGFuZEFzc2V0SWQJAKwCAgIQbGFuZENvb2xkb3duRVRBXwULbGFuZEFzc2V0SWQBE2tleUR1Y2tSb2JiZXJ5U3RhdGUBC2R1Y2tBc3NldElkCQCsAgICEWR1Y2tSb2JiZXJ5U3RhdGVfBQtkdWNrQXNzZXRJZAETa2V5TG9ja2VkTGFuZEJ5RHVjawELZHVja0Fzc2V0SWQJAKwCAgIRbG9ja2VkTGFuZEJ5RHVja18FC2R1Y2tBc3NldElkARZrZXlEZWxpdmVyeURlbGF5QnlEdWNrAQtkdWNrQXNzZXRJZAkArAICAhRkZWxpdmVyeURlbGF5QnlEdWNrXwULZHVja0Fzc2V0SWQBFGtleVVzZXJEZWxpdmVyeUNvdW50AQRhZGRyCQCsAgICEnVzZXJEZWxpdmVyeWNvdW50XwUEYWRkcgEWa2V5VXNlckxhc3REZWxpdmVyeURheQEEYWRkcgkArAICAhR1c2VyTGFzdERlbGl2ZXJ5RGF5XwUEYWRkcgAHeHBDbGFpbQCQTgAPeHBTdWNjZXNzRmxpZ2h0AJBOAAx4cEZhaWxGbGlnaHQA0A8ACHhwQ2FsbEVTAKCNBgAMeHBDdXN0b21OYW1lAMCEPQAKeHBOZXdTTGFuZADAlrECAA54cFVwZ3JhZGVJbmZyYQCQTgAHeHBNZXJnZQDAhD0ACXhwT25ib2FyZADAhD0ABnhwSGVhbACQTgEJbGV2ZWxCeVhQAQJ4cAkAawMFDHhwTGV2ZWxTY2FsZQkAbAYFAnhwAAQFD3hwTGV2ZWxSZWNpcFBvdwAEAAQFBERPV04FBlNDQUxFOAEJbWF4SGVhbHRoAQVsZXZlbAkAZAIAZAUFbGV2ZWwBB2xldmVsVXACCWN1cnJMZXZlbAVuZXdYUAQIbmV3TGV2ZWwJAQlsZXZlbEJ5WFABBQVuZXdYUAkAzAgCBQhuZXdMZXZlbAkAzAgCCQBoAgUSbnVtUG9pbnRzT25MZXZlbFVwCQBlAgUIbmV3TGV2ZWwFCWN1cnJMZXZlbAUDbmlsAQxnZXREdWNrU3RhdHMED3N0YWtpbmdDb250cmFjdAtkdWNrQXNzZXRJZApidWZmRWZmZWN0CmZvcmNlQnVmZnMEBWNoYXJzCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUPc3Rha2luZ0NvbnRyYWN0CQEMa2V5RHVja0NoYXJzAQULZHVja0Fzc2V0SWQCCTBfMF8wXzBfMAIBXwQDbHZsCQELdmFsdWVPckVsc2UCCQCaCAIFD3N0YWtpbmdDb250cmFjdAkBDGtleUR1Y2tMZXZlbAEFC2R1Y2tBc3NldElkAAAEBmhlYWx0aAkBC3ZhbHVlT3JFbHNlAgkAmggCBQ9zdGFraW5nQ29udHJhY3QJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQJAQltYXhIZWFsdGgBBQNsdmwECnN0YXRlQnVmZnMJALUJAgkBC3ZhbHVlT3JFbHNlAgkAnQgCBQ9zdGFraW5nQ29udHJhY3QJAQxrZXlEdWNrQnVmZnMBBQtkdWNrQXNzZXRJZAIJMF8wXzBfMF8wAgFfCQDOCAIJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBWNoYXJzBQxjaGFyU3RyZW5ndGgJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBWNoYXJzBQxjaGFyQWNjdXJhY3kJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBWNoYXJzBQ1jaGFySW50ZWxsZWN0CQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVjaGFycwUNY2hhckVuZHVyYW5jZQkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFY2hhcnMFDWNoYXJEZXh0ZXJpdHkJAMwIAgUDbHZsCQDMCAIFBmhlYWx0aAUDbmlsAwUKZm9yY2VCdWZmcwkAzAgCBQpidWZmRWZmZWN0CQDMCAIFCmJ1ZmZFZmZlY3QJAMwIAgUKYnVmZkVmZmVjdAkAzAgCBQpidWZmRWZmZWN0CQDMCAIFCmJ1ZmZFZmZlY3QFA25pbAkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKc3RhdGVCdWZmcwUMY2hhclN0cmVuZ3RoCQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQpzdGF0ZUJ1ZmZzBQxjaGFyQWNjdXJhY3kJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCnN0YXRlQnVmZnMFDWNoYXJJbnRlbGxlY3QJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCnN0YXRlQnVmZnMFDWNoYXJFbmR1cmFuY2UJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCnN0YXRlQnVmZnMFDWNoYXJEZXh0ZXJpdHkFA25pbAEOZ2V0Um9iYmVyeURhdGECD3N0YWtpbmdDb250cmFjdAtkdWNrQXNzZXRJZAQLbGFzdFJvYkNvc3QJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPc3Rha2luZ0NvbnRyYWN0CQEYa2V5TGFzdFJvYmJlcnlDb3N0QnlEdWNrAQULZHVja0Fzc2V0SWQAAAQLbGFzdFJvYlRpbWUJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPc3Rha2luZ0NvbnRyYWN0CQEYa2V5TGFzdFJvYmJlcnlUaW1lQnlEdWNrAQULZHVja0Fzc2V0SWQAAAQDbm93CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQHcm9iQ29zdAkAlgMBCQDMCAIFDnJvYmJlcnlDb3N0TWluCQDMCAIJAGUCBQtsYXN0Um9iQ29zdAkAaAIFFHJvYmJlcnlDb29sZG93bkNvZWZmCQBlAgUDbm93BQtsYXN0Um9iVGltZQUDbmlsBAlkdWNrU3RhdGUJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPc3Rha2luZ0NvbnRyYWN0CQETa2V5RHVja1JvYmJlcnlTdGF0ZQEFC2R1Y2tBc3NldElkAAAECmxvY2tlZExhbmQJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUPc3Rha2luZ0NvbnRyYWN0CQETa2V5TG9ja2VkTGFuZEJ5RHVjawEFC2R1Y2tBc3NldElkAgAEB2xhbmRFVEEJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPc3Rha2luZ0NvbnRyYWN0CQESa2V5TGFuZENvb2xkb3duRVRBAQUKbG9ja2VkTGFuZAAACQCXCgUFB3JvYkNvc3QFC2xhc3RSb2JUaW1lBQlkdWNrU3RhdGUFCmxvY2tlZExhbmQFB2xhbmRFVEEACkxBTkRQUkVGSVgCBExBTkQACkRVQ0tQUkVGSVgCBERVQ0sACkFSVFBSRVNBTEUCB1BSRVNBTEUABk5VTVJFUwAGABhNQVhfTEFORFNfU1RBS0VEX0JZX1VTRVIAGQAPREFJTFlSRVNCWVBJRUNFAID40gEADFdITVVMVElQTElFUgCAyK+gJQAPREVGQVVMVExPQ0FUSU9OAg9BZnJpY2FfRl9BZnJpY2EAEFJFU09VUkNFUFJJQ0VNSU4A1bUCAApFU1NFTExDT0VGAAoAFU1JTl9VU0RUX0ZFRV9ERUxJVkVSWQDQhgMAElRFTl9NSU5VVEVTX01JTExJUwDAzyQAF0FMTE9XRURfRlJFRV9ERUxJVkVSSUVTAAMAGkFDUkVTX0ZPUl9ERUxJVkVSWV9BVFRFTVBUAIDaxAkACXByb2RUeXBlcwkAzAgCAhBGaXJzdCBBaWQgS2l0IEwxCQDMCAICEEZpcnN0IEFpZCBLaXQgTDIJAMwIAgIQRmlyc3QgQWlkIEtpdCBMMwkAzAgCAgtCYWNrcGFjayBMMQkAzAgCAgtCYWNrcGFjayBMMgkAzAgCAgtCYWNrcGFjayBMMwkAzAgCAg5Gb29kIFJhdGlvbiBMMQkAzAgCAg5Gb29kIFJhdGlvbiBMMgkAzAgCAg5Gb29kIFJhdGlvbiBMMwkAzAgCAgtKZXQgUGFjayBMMQkAzAgCAgtKZXQgUGFjayBMMgkAzAgCAgtKZXQgUGFjayBMMwkAzAgCAglTaGllbGQgTDEJAMwIAgIJU2hpZWxkIEwyCQDMCAICCVNoaWVsZCBMMwkAzAgCAgdNaW5lIEwxCQDMCAICB01pbmUgTDIJAMwIAgIHTWluZSBMMwkAzAgCAgdUcmFwIEwxCQDMCAICB1RyYXAgTDIJAMwIAgIHVHJhcCBMMwUDbmlsAApjb250aW5lbnRzCQDMCAICCEFtZXJpY2FzCQDMCAICBkV1cm9wZQkAzAgCAgRBc2lhCQDMCAICBkFmcmljYQkAzAgCAgdPY2VhbmlhBQNuaWwACUNPRUZGMk1BVACAreIEABBmb3J0QWxsb3dlZFByb2RzCQDMCAIADwkAzAgCABAJAMwIAgARCQDMCAIAEgkAzAgCABMJAMwIAgAUBQNuaWwAEHByb2R1Y3Rpb25NYXRyaXgJAMwIAgIlOF84XzhfMTdfMTdfNDJfMTJfMF8zMF8wLDAsMCwwLDAsMCwwXwkAzAgCAiU4XzhfOF8xN18xN180Ml8yNF8wXzYwXzAsMCw1LDIsMCwwLDBfCQDMCAICJzhfOF84XzE3XzE3XzQyXzM2XzBfMTIwXzAsMCwxMCw0LDAsMCwwXwkAzAgCAik4XzE5XzE5XzhfMjdfMTlfMjZfMV8yMF8wLDAsMCwwLDAsMCwwXzAwMQkAzAgCAik4XzE5XzE5XzhfMjdfMTlfNTJfMV80MF8wLDAsMCwwLDAsMCwwXzAwMQkAzAgCAik4XzE5XzE5XzhfMjdfMTlfNzhfMV84MF8wLDAsMCwwLDAsMCwwXzAwMQkAzAgCAiU4XzhfOF84XzhfNjBfMTNfMl8yXzAsMCwwLDAsMCwwLDBfMDExCQDMCAICJThfOF84XzhfOF82MF8yNl8yXzRfMCwwLDAsMCwwLDAsMF8wMTEJAMwIAgIlOF84XzhfOF84XzYwXzM5XzJfOF8wLDAsMCwwLDAsMCwwXzAxMQkAzAgCAikzMF8zMF8zXzE3XzE3XzNfMzBfM18zMF8wLDAsMCwwLDAsMCwwXzExMQkAzAgCAikzMF8zMF8zXzE3XzE3XzNfNjBfM181MF8wLDAsMCwwLDAsMCwwXzExMQkAzAgCAikzMF8zMF8zXzE3XzE3XzNfOTBfM183MF8wLDAsMCwwLDAsMCwwXzExMQkAzAgCAisxOF8xOF8xMF8xOF8xOF8xOF8xMV80XzEwXzAsMCwwLDAsMCwwLDBfMjAxCQDMCAICKzE4XzE4XzEwXzE4XzE4XzE4XzIyXzRfMjBfMCwwLDAsMCwwLDAsMF8yMDEJAMwIAgIrMThfMThfMTBfMThfMThfMThfMzNfNF8zMF8wLDAsMCwwLDAsMCwwXzIwMQkAzAgCAio0XzEzXzIyXzRfMzVfMjJfMjNfMF81MCwxLDBfMCwwLDAsMCwwLDAsMF8JAMwIAgIqNF8xM18yMl80XzM1XzIyXzQ2XzBfNTAsMSwxXzAsMiw1LDAsMCwwLDBfCQDMCAICKzRfMTNfMjJfNF8zNV8yMl82OV8wXzUwLDIsMV8wLDUsMTAsMCwwLDAsMF8JAMwIAgIqNV8yNV80MF81XzEwXzE1XzIwXzFfMzAsMSwxXzAsMCwwLDAsMCwwLDBfCQDMCAICKjVfMjVfNDBfNV8xMF8xNV80MF8xXzMwLDEsMl8yLDEsMywwLDAsMCwwXwkAzAgCAio1XzI1XzQwXzVfMTBfMTVfNjBfMV8zMCwxLDNfNSwyLDgsMCwwLDAsMF8FA25pbAAJcklkeENvZWZmAAYACnJJZHhFZmZlY3QACAAQcklkeFJlcXVpcmVtZW50cwAJAAlySWR4U2xvdHMACgAOUFJPRFVDVFBLR1NJWkUACgALd2hJZHhMZXZlbHMAAAAId2hJZHhSZXMAAQAId2hJZHhNYXQAAgAJd2hJZHhQcm9kAAMACXdoSWR4TE9GVAAEAAl2b2xMb2NrZWQAAAALdm9sT2NjdXBpZWQAAQAHdm9sRnJlZQACAAh2b2xUb3RhbAADAApicElkeExldmVsAAAACGJwSWR4UmVzAAEACGJwSWR4TWF0AAIACWJwSWR4UHJvZAADAA9sb2NJZHhDb250aW5lbnQAAAAKbG9jSWR4VHlwZQABAAhsb2NJZHhJZAACARVrZXlMYW5kQXNzZXRJZFRvT3duZXIBB2Fzc2V0SWQJAKwCAgIDbm9fBQdhc3NldElkARprZXlMYW5kQXNzZXRJZFRvQ3VzdG9tTmFtZQEHYXNzZXRJZAkArAICAgVsY25hXwUHYXNzZXRJZAEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEHYXNzZXRJZAkArAICAgNzdF8FB2Fzc2V0SWQBIGtleUxhbmRBcnRTdGF0dXNCeVR5cGVBbmRBc3NldElkAgR0eXBlB2Fzc2V0SWQJALkJAgkAzAgCAgNsYXMJAMwIAgUEdHlwZQkAzAgCBQdhc3NldElkBQNuaWwCAV8BImtleVN0YWtlZFRpbWVCeVR5cGVBc3NldElkQW5kT3duZXIDB25mdFR5cGUHYXNzZXRJZAlvd25lckFkZHIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAgZzdHRhb18FB25mdFR5cGUCAV8FB2Fzc2V0SWQCAV8FCW93bmVyQWRkcgESa2V5V2FyZWhvdXNlQnlMYW5kAQtsYW5kQXNzZXRJZAkArAICAgN3aF8FC2xhbmRBc3NldElkARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQdhc3NldElkCQCsAgICC2luZnJhTGV2ZWxfBQdhc3NldElkARdrZXlGb3J0aWZpY2F0aW9uc0J5TGFuZAELbGFuZEFzc2V0SWQJAKwCAgIPZm9ydGlmaWNhdGlvbnNfBQtsYW5kQXNzZXRJZAEaa2V5RHVja0Fzc2V0SWRUb0N1c3RvbU5hbWUBB2Fzc2V0SWQJAKwCAgIYZHVja0N1c3RvbU5hbWVCeUFzc2V0SWRfBQdhc3NldElkARZrZXlBZGRyZXNzVG9DdXN0b21OYW1lAQRhZGRyCQCsAgICGGFjY291bnRDdXN0b21OYW1lQnlBZGRyXwUEYWRkcgEPa2V5QWRkcmVzc1JlZkJ5AQRhZGRyCQCsAgICCWFjY1JlZkJ5XwUEYWRkcgEca2V5T25ib2FyZEFydEFjdGl2YXRlZE9uRHVjawELZHVja0Fzc2V0SWQJAKwCAgIab25ib2FyZEFydEFjdGl2YXRlZE9uRHVja18FC2R1Y2tBc3NldElkARxrZXlPbmJvYXJkQXJ0RHVja0FjdGl2YXRlZEJ5AQRhZGRyCQCsAgICGm9uYm9hcmRBcnRBY3RpdmF0ZWREdWNrQnlfBQRhZGRyARNrZXlBZGRyZXNzUmVmZXJyYWxzAQRhZGRyCQCsAgICDWFjY1JlZmVycmFsc18FBGFkZHIBEGtleUR1Y2tJZFRvT3duZXIBB2Fzc2V0SWQJAKwCAgIKZHVja093bmVyXwUHYXNzZXRJZAEUa2V5U3Rha2VkRHVja0J5T3duZXIBCW93bmVyQWRkcgkArAICAhJzdGFrZWREdWNrQnlPd25lcl8FCW93bmVyQWRkcgERa2V5QmFja3BhY2tCeUR1Y2sBC2R1Y2tBc3NldElkCQCsAgICCWJhY2tQYWNrXwULZHVja0Fzc2V0SWQBD2tleUR1Y2tMb2NhdGlvbgELZHVja0Fzc2V0SWQJAKwCAgINZHVja0xvY2F0aW9uXwULZHVja0Fzc2V0SWQBFWtleVVzZXJHd2xSZWxlYXNlVGltZQEIdXNlckFkZHIJAKwCAgIaJXMlc19fdXNlckd3bFJlbGVhc2VUaW1lX18FCHVzZXJBZGRyAQ5rZXlFc1dhcmVob3VzZQACGmVtZXJnZW5jeVdhcmVob3VzZVByb2R1Y3RzAA9kZWxpdmVyeUZ1bmRLZXkCDGRlbGl2ZXJ5RnVuZAARZGVsaXZlcnlMb2NrZWRLZXkCDmRlbGl2ZXJ5TG9ja2VkAA1sYXN0VG91cklkS2V5Ag4lc19fbGFzdFRvdXJJZAEVa2V5VG91clN0YXRpY0RhdGFCeUlkAQN0SWQJAKwCAgIWJXMlZF9fdG91clN0YXRpY0RhdGFfXwkApAMBBQN0SWQBFmtleVRvdXJEeW5hbWljRGF0YUJ5SWQBA3RJZAkArAICAhclcyVkX190b3VyRHluYW1pY0RhdGFfXwkApAMBBQN0SWQBGmtleUJlc3RSZXN1bHRCeVRvdXJBbmREdWNrAgN0SWQLZHVja0Fzc2V0SWQJALkJAgkAzAgCAh8lcyVkJXNfX2Jlc3RSZXN1bHRCeVRvdXJBbmREdWNrCQDMCAIJAKQDAQUDdElkCQDMCAIFC2R1Y2tBc3NldElkBQNuaWwCAl9fAAlpZHhTdGF0aWMAAAAKaWR4RHluYW1pYwABAAp0U3RhdGljRW5kAAYADnREeW5hbWljU3RhdHVzAAEBC2dldFRvdXJEYXRhAgx0b3VyQ29udHJhY3QDdElkBAZzdGF0aWMJALUJAgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFDHRvdXJDb250cmFjdAkBFWtleVRvdXJTdGF0aWNEYXRhQnlJZAEFA3RJZAkArAICCQCsAgICGUVycm9yIHJlYWRpbmcgdG91cm5hbWVudCAJAKQDAQUDdElkAgUgZGF0YQICX18EB2R5bmFtaWMJALwJAgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFDHRvdXJDb250cmFjdAkBFmtleVRvdXJEeW5hbWljRGF0YUJ5SWQBBQN0SWQJAKwCAgkArAICAhlFcnJvciByZWFkaW5nIHRvdXJuYW1lbnQgCQCkAwEFA3RJZAIFIGRhdGECAl9fCQDMCAIFBnN0YXRpYwkAzAgCBQdkeW5hbWljBQNuaWwBDmlzSW5Ub3VybmFtZW50Agx0b3VyQ29udHJhY3QIbG9jYXRpb24EBmxhc3RJZAkBC3ZhbHVlT3JFbHNlAgkAmggCBQx0b3VyQ29udHJhY3QFDWxhc3RUb3VySWRLZXkAAAQDbG9jCQC1CQIFCGxvY2F0aW9uAgFfBANub3cIBQlsYXN0QmxvY2sJdGltZXN0YW1wBAV0RGF0YQkBC2dldFRvdXJEYXRhAgUMdG91ckNvbnRyYWN0BQZsYXN0SWQEBnN0YXRpYwkAkQMCBQV0RGF0YQUJaWR4U3RhdGljBAdkeW5hbWljCQCRAwIFBXREYXRhBQppZHhEeW5hbWljAwMDCQAAAgkAkQMCBQNsb2MFCmxvY0lkeFR5cGUCAVQJAAACCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDbG9jBQ9sb2NJZHhDb250aW5lbnQFBmxhc3RJZAcJAAACCQCRAwIFB2R5bmFtaWMFDnREeW5hbWljU3RhdHVzAgpJTlBST0dSRVNTBwkAZgIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQZzdGF0aWMFCnRTdGF0aWNFbmQFA25vdwcBDGlzSW5EZWxpdmVyeQEIbG9jYXRpb24EA2xvYwkAtQkCBQhsb2NhdGlvbgIBXwQDbm93CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQJc3RhcnRUaW1lCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDbG9jBQ9sb2NJZHhDb250aW5lbnQECGRpc3RhbmNlCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDbG9jBQhsb2NJZHhJZAMDCQAAAgkAkQMCBQNsb2MFCmxvY0lkeFR5cGUCAUQJAGYCCQBkAgUJc3RhcnRUaW1lBRJURU5fTUlOVVRFU19NSUxMSVMFA25vdwcJAGcCAAMFCGRpc3RhbmNlBwEPaXNVc3VhbExvY2F0aW9uAQhsb2NhdGlvbgQHbG9jVHlwZQkAkQMCCQC1CQIFCGxvY2F0aW9uAgFfBQpsb2NJZHhUeXBlAwkBAiE9AgUHbG9jVHlwZQIBVAkBAiE9AgUHbG9jVHlwZQIBRAcBCW9uTWlzc2lvbgIMdG91ckNvbnRyYWN0CGxvY2F0aW9uBAZsYXN0SWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUMdG91ckNvbnRyYWN0BQ1sYXN0VG91cklkS2V5AAAEA2xvYwkAtQkCBQhsb2NhdGlvbgIBXwQDbm93CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQFdERhdGEJAQtnZXRUb3VyRGF0YQIFDHRvdXJDb250cmFjdAUGbGFzdElkBAZzdGF0aWMJAJEDAgUFdERhdGEFCWlkeFN0YXRpYwQHZHluYW1pYwkAkQMCBQV0RGF0YQUKaWR4RHluYW1pYwQHbG9jVHlwZQkAkQMCBQNsb2MFCmxvY0lkeFR5cGUDCQAAAgUHbG9jVHlwZQIBRAYDAwMJAAACCQCRAwIFA2xvYwUKbG9jSWR4VHlwZQIBVAkAAAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNsb2MFD2xvY0lkeENvbnRpbmVudAUGbGFzdElkBwkAAAIJAJEDAgUHZHluYW1pYwUOdER5bmFtaWNTdGF0dXMCCklOUFJPR1JFU1MHCQBmAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBnN0YXRpYwUKdFN0YXRpY0VuZAUDbm93BwESZ2V0UmVjaXBlTWF0ZXJpYWxzAQZyZWNpcGUJAGgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUGcmVjaXBlBQlySWR4Q29lZmYFCUNPRUZGMk1BVAEMY2hlYXRBdHRlbXB0AwZvbGRMb2MGbmV3TG9jCWNoZWF0Q2FzZQkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAhZDaGVhdCBhdHRlbXB0OiBvbGRMb2M9BQZvbGRMb2MCCSwgbmV3TG9jPQUGbmV3TG9jAgcsIGNhc2U9CQCkAwEFCWNoZWF0Q2FzZQAWS1NfU0VQQVJBVEVfUFVCTElDX0tFWQcAGEtTX0FMTE9XX0JJR19JTkZSQV9NRVJHRQcAEUtTX0FMTE9XX0RFTElWRVJZBgAFY2hhaW4JAMkBAgkAygECCAUEdGhpcwVieXRlcwABAAEAC3VzZHRBc3NldElkBAckbWF0Y2gwBQVjaGFpbgMJAAACAQFXBQckbWF0Y2gwASCE2nqyCAM/TtG7yo7ui5O8yYLdC136B5ao1CP5qA//uQMJAAACAQFUBQckbWF0Y2gwASBVsdifcoeC7+XjW42sBatl3ppDoS8WuwXzGreHpfHFGAkAAgECDVVua25vd24gY2hhaW4AFWRlZmF1bHRSZXN0QWRkcmVzc1N0cgQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMAIjM1BRQ3V2RmJ2aDRMa1BVbnJuVTF6M2puYkExcDltM1dOaHYDCQAAAgEBVAUHJG1hdGNoMAIjM011bWtHR3p0Q0tBWHBXRHF4a2Rkb2ZxWFNVYnFRa3ZTSnkJAAIBAg1Vbmtub3duIGNoYWluABFJbmZyYVVwZ3JhZGVDb3N0UwQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMACAyK+gJQMJAAACAQFUBQckbWF0Y2gwAIDC1y8JAAIBAg1Vbmtub3duIGNoYWluAA5hcmJpdHJhZ2VEZWxheQQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMACAuJkpAwkAAAIBAVQFByRtYXRjaDAA4NQDCQACAQINVW5rbm93biBjaGFpbgADU0VQAgJfXwAFTVVMVDYAwIQ9AAVNVUxUOACAwtcvAAVTU0laRQAZAAVNU0laRQBkAAVMU0laRQDhAQAGWExTSVpFAJADAAdYWExTSVpFAPEEAAVJVEVSNgkAzAgCAAAJAMwIAgABCQDMCAIAAgkAzAgCAAMJAMwIAgAECQDMCAIABQUDbmlsAQ9nZXRTdHJpbmdPckZhaWwCB2FkZHJlc3MDa2V5CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUHYWRkcmVzcwUDa2V5CQC5CQIJAMwIAgIKbWFuZGF0b3J5IAkAzAgCCQClCAEFB2FkZHJlc3MJAMwIAgIBLgkAzAgCBQNrZXkJAMwIAgIPIGlzIG5vdCBkZWZpbmVkBQNuaWwCAAARSWR4Q2ZnU3Rha2luZ0RhcHAAAQARSWR4Q2ZnRWNvbm9teURhcHAAAgAUSWR4Q2ZnR292ZXJuYW5jZURhcHAAAwANSWR4Q2ZnV2xnRGFwcAAEABRJZHhDZmdUb3VybmFtZW50RGFwcAAHAA9JZHhDZmdBY3Jlc0RhcHAACAEKa2V5UmVzdENmZwACDiVzX19yZXN0Q29uZmlnAQ5rZXlSZXN0QWRkcmVzcwACDCVzX19yZXN0QWRkcgERcmVhZFJlc3RDZmdPckZhaWwBBHJlc3QJALwJAgkBD2dldFN0cmluZ09yRmFpbAIFBHJlc3QJAQprZXlSZXN0Q2ZnAAUDU0VQARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCB3Jlc3RDZmcDaWR4CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQdyZXN0Q2ZnBQNpZHgJAKwCAgIqUmVzdCBjZmcgZG9lc24ndCBjb250YWluIGFkZHJlc3MgYXQgaW5kZXggCQCkAwEFA2lkeAAMcmVzdENvbnRyYWN0CQERQGV4dHJOYXRpdmUoMTA2MikBCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMJAQ5rZXlSZXN0QWRkcmVzcwAFFWRlZmF1bHRSZXN0QWRkcmVzc1N0cgAHcmVzdENmZwkBEXJlYWRSZXN0Q2ZnT3JGYWlsAQUMcmVzdENvbnRyYWN0AA9zdGFraW5nQ29udHJhY3QJARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCBQdyZXN0Q2ZnBRFJZHhDZmdTdGFraW5nRGFwcAAPZWNvbm9teUNvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUHcmVzdENmZwURSWR4Q2ZnRWNvbm9teURhcHAAC2dvdkNvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUHcmVzdENmZwUUSWR4Q2ZnR292ZXJuYW5jZURhcHAAC3dsZ0NvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUHcmVzdENmZwUNSWR4Q2ZnV2xnRGFwcAASdG91cm5hbWVudENvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUHcmVzdENmZwUUSWR4Q2ZnVG91cm5hbWVudERhcHAADWFjcmVzQ29udHJhY3QJARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCBQdyZXN0Q2ZnBQ9JZHhDZmdBY3Jlc0RhcHAACnJlY0xhbmROdW0AAAALcmVjTGFuZFNpemUAAQALcmVjVGVycmFpbnMAAgAMcmVjQ29udGluZW50AAMADXdsZ0Fzc2V0SWRLZXkCC3dsZ19hc3NldElkAAp3bGdBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJwIAgULd2xnQ29udHJhY3QFDXdsZ0Fzc2V0SWRLZXkCGFdMR09MRCBpcyBub3QgaXNzdWVkIHlldAAPYWNyZXNBc3NldElkS2V5AgxhY3Jlc0Fzc2V0SWQADGFjcmVzQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCcCAIFDWFjcmVzQ29udHJhY3QFD2FjcmVzQXNzZXRJZEtleQIXQUNSRVMgaXMgbm90IGlzc3VlZCB5ZXQAC3JhbmRvbURlbGF5AAIBCWtleUNvbW1pdAEHYWRkcmVzcwkArAICAhNmaW5pc2hCbG9ja0ZvckFkZHJfBQdhZGRyZXNzARFrZXlSZXNQcm9wb3J0aW9ucwACE3Jlc1R5cGVzUHJvcG9ydGlvbnMBFmtleVJlc1R5cGVzQnlDb250aW5lbnQBCWNvbnRpbmVudAkArAICAhRyZXNUeXBlc0J5Q29udGluZW50XwUJY29udGluZW50ARVrZXlTdGFrZWRMYW5kc0J5T3duZXIBCW93bmVyQWRkcgkArAICAhNzdGFrZWRMYW5kc0J5T3duZXJfBQlvd25lckFkZHIBFmtleVN0YWtlZFBpZWNlc0J5T3duZXIBCW93bmVyQWRkcgkArAICAhRzdGFrZWRQaWVjZXNCeU93bmVyXwUJb3duZXJBZGRyAQhhc1N0cmluZwEBdgQHJG1hdGNoMAUBdgMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAFAXMJAAIBAhhmYWlsIHRvIGNhc3QgaW50byBTdHJpbmcBBWFzSW50AQF2BAckbWF0Y2gwBQF2AwkAAQIFByRtYXRjaDACA0ludAQBbgUHJG1hdGNoMAUBbgkAAgECFWZhaWwgdG8gY2FzdCBpbnRvIEludAEJYXNBbnlMaXN0AQF2BAckbWF0Y2gwBQF2AwkAAQIFByRtYXRjaDACCUxpc3RbQW55XQQBbAUHJG1hdGNoMAUBbAkAAgECG2ZhaWwgdG8gY2FzdCBpbnRvIExpc3RbQW55XQEJYXNCb29sZWFuAQF2BAckbWF0Y2gwBQF2AwkAAQIFByRtYXRjaDACB0Jvb2xlYW4EAXMFByRtYXRjaDAFAXMJAAIBAhlmYWlsIHRvIGNhc3QgaW50byBCb29sZWFuARBhc1N0cmluZ0ludFR1cGxlAQN2YWwEByRtYXRjaDAFA3ZhbAMJAAECBQckbWF0Y2gwAg0oU3RyaW5nLCBJbnQpBAJ0MgUHJG1hdGNoMAUCdDIJAAIBAh9mYWlsIHRvIGNhc3QgaW50byAoU3RyaW5nLCBJbnQpAQ9udW1QaWVjZXNCeVNpemUBCGxhbmRTaXplBAckbWF0Y2gwBQhsYW5kU2l6ZQMJAAACAgFTBQckbWF0Y2gwBQVTU0laRQMJAAACAgFNBQckbWF0Y2gwBQVNU0laRQMJAAACAgFMBQckbWF0Y2gwBQVMU0laRQMJAAACAgJYTAUHJG1hdGNoMAUGWExTSVpFAwkAAAICA1hYTAUHJG1hdGNoMAUHWFhMU0laRQkAAgECEVVua25vd24gbGFuZCBzaXplAQdpc0RpZ2l0AQFzCQEJaXNEZWZpbmVkAQkAtgkBBQFzAQprZXlCbG9ja2VkAAIQY29udHJhY3RzQmxvY2tlZAERa2V5TGFzdFR4SWRCeVVzZXIBBGFkZHIJAKwCAgIPbGFzdFR4SWRCeVVzZXJfBQRhZGRyAQpmaXhlZFBvaW50AgN2YWwIZGVjaW1hbHMEBnRlblBvdwkAbAYACgAABQhkZWNpbWFscwAAAAAFBERPV04EB2xvd1BhcnQJAKQDAQkAagIFA3ZhbAUGdGVuUG93BAZ6ZXJvZXMJALACAgkApAMBBQZ0ZW5Qb3cJAGQCAAEJALECAQUHbG93UGFydAkArAICCQCsAgIJAKwCAgkApAMBCQBpAgUDdmFsBQZ0ZW5Qb3cCAS4FBnplcm9lcwUHbG93UGFydAEPZ2V0UmFuZG9tTnVtYmVyAwhtYXhWYWx1ZQxmaW5pc2hIZWlnaHQKYXV4RW50cm9weQQPcmFuZG9tU2VlZEJsb2NrCQEFdmFsdWUBCQDtBwEFDGZpbmlzaEhlaWdodAQKcmFuZG9tSGFzaAkA9wMBCQDLAQIJAQV2YWx1ZQEIBQ9yYW5kb21TZWVkQmxvY2sDdnJmBQphdXhFbnRyb3B5CQBqAgkAsQkBBQpyYW5kb21IYXNoBQhtYXhWYWx1ZQANaW5jdWJhdG9yQWRkcgQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMAkBEUBleHRyTmF0aXZlKDEwNjIpAQIjM1BFa3RWdXgyUmhjaFNONjNEc0RvNGI0bXo0UXF6S1NlRHYDCQAAAgEBVAUHJG1hdGNoMAUEdGhpcwkAAgECDVVua25vd24gY2hhaW4AC2JyZWVkZXJBZGRyBAckbWF0Y2gwBQVjaGFpbgMJAAACAQFXBQckbWF0Y2gwCQERQGV4dHJOYXRpdmUoMTA2MikBAiMzUERWdVU0NUg3RWg1ZG10TmJuUk5SU3RHd1VMQTdOWTZIYgMJAAACAQFUBQckbWF0Y2gwBQR0aGlzCQACAQINVW5rbm93biBjaGFpbgADcHViBAckbWF0Y2gwBQVjaGFpbgMJAAACAQFXBQckbWF0Y2gwAwUWS1NfU0VQQVJBVEVfUFVCTElDX0tFWQEgqxdXjxVn41lUQbDWcutmm8Sj02Ze1ZmGUN+YNx+yCQgBIE9T4ho/VKjWnVJOEx1GJ1W9s1PzLHvJVFSw/0PBtBQoAwkAAAIBAVQFByRtYXRjaDABIE9T4ho/VKjWnVJOEx1GJ1W9s1PzLHvJVFSw/0PBtBQoCQACAQINVW5rbm93biBjaGFpbgAMRU1QVFlfUFJPRDUwAZADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARRklWRU1JTlVURVNNSUxMSVMA4KcSAAxSRU5BTUlOR0NPU1QAwJaxAgAKTUFYTkFNRUxFTgAyABVJbmZyYVVwZ3JhZGVDb3N0U1VzZHQAgK3iBAAMRVhQTUFURVJJQUxTBAckbWF0Y2gwBQVjaGFpbgMJAAACAQFXBQckbWF0Y2gwAKbdgu2rBwMJAAACAQFUBQckbWF0Y2gwAKqngbMJCQACAQINVW5rbm93biBjaGFpbgAHRVhQVVNEVAQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMACA5Zp3AwkAAAIBAVQFByRtYXRjaDAAgOWadwkAAgECDVVua25vd24gY2hhaW4ADFNfQ09TVF9BQ1JFUwCA8ouoCQAFRklWRVgJALYCAQAFAAdUV0VOVFlYCQC2AgEAFAAIVFdFTlRZMlgJALYCAQkAaAIAFAAUAAhUV0VOVFkzWAkAtgIBCQBoAgkAaAIAFAAUABQACFRXRU5UWTRYCQC2AgEJAGgCCQBoAgkAaAIAFAAUABQAFAAIVFdFTlRZNVgJALYCAQkAaAIJAGgCCQBoAgkAaAIAFAAUABQAFAAUAA9QUkVTQUxFTlVNTEFORFMA9AMBEmtleU5leHRGcmVlTGFuZE51bQACC25leHRMYW5kTnVtARprZXlMYW5kQ3VzdG9tTmFtZVRvQXNzZXRJZAEEbmFtZQkArAICAgRsY25fBQRuYW1lARBrZXlMYW5kVG9Bc3NldElkAQdsYW5kTnVtCQCsAgICA2xhXwUHbGFuZE51bQEea2V5SW5mcmFMZXZlbEJ5QXNzZXRJZEFuZE93bmVyAgdhc3NldElkCW93bmVyQWRkcgkArAICCQCsAgIJAKwCAgIFaWxhb18FB2Fzc2V0SWQCAV8FCW93bmVyQWRkcgERa2V5TGFuZE51bVRvT3duZXIBB2xhbmROdW0JAKwCAgIDbG9fBQdsYW5kTnVtARprZXlEdWNrQ3VzdG9tTmFtZVRvQXNzZXRJZAEEbmFtZQkArAICAhFkdWNrQnlDdXN0b21OYW1lXwUEbmFtZQEWa2V5Q3VzdG9tTmFtZVRvQWRkcmVzcwEEbmFtZQkArAICAhRhY2NvdW50QnlDdXN0b21OYW1lXwUEbmFtZQEJa2V5T2xkaWVzAAIKb2xkaWVzTGlzdAALY2xhaW1Nb2RlV2gAAAANY2xhaW1Nb2RlRHVjawABABNjbGFpbU1vZGVXaFRoZW5EdWNrAAIACGZsSGVhbHRoAAAAC2ZsVGltZXN0YW1wAAUAB2ZsQm9udXMABgALZmxQcm9kc1VzZWQABwEHbmZ0TmFtZQIHbGFuZE51bQhsYW5kU2l6ZQkArAICCQCsAgIFCkxBTkRQUkVGSVgFB2xhbmROdW0FCGxhbmRTaXplAQh0b1ZvbHVtZQIGYW1vdW50B3BrZ1NpemUEBHBrZ3MDCQBnAgUGYW1vdW50AAAJAGkCCQBlAgkAZAIFBmFtb3VudAUHcGtnU2l6ZQABBQdwa2dTaXplCQEBLQEJAGkCCQBlAgkAZAIJAQEtAQUGYW1vdW50BQdwa2dTaXplAAEFB3BrZ1NpemUJAGgCBQRwa2dzBQVNVUxUOAETZGlzdHJpYnV0ZUJ5V2VpZ2h0cwIFdG90YWwHd2VpZ2h0cwQDc3VtCQBkAgkAZAIJAGQCCQBkAgkAZAIJAJEDAgUHd2VpZ2h0cwAACQCRAwIFB3dlaWdodHMAAQkAkQMCBQd3ZWlnaHRzAAIJAJEDAgUHd2VpZ2h0cwADCQCRAwIFB3dlaWdodHMABAkAkQMCBQd3ZWlnaHRzAAUDCQBnAgAABQNzdW0JAAIBAhBaZXJvIHdlaWdodHMgc3VtBAVub3JtNgkAawMFBXRvdGFsBQVNVUxUNgUDc3VtCgEKbm9ybWFsaXplcgIDYWNjBGVsZW0JAM0IAgUDYWNjCQBrAwUEZWxlbQUFbm9ybTYFBU1VTFQ2CgACJGwFB3dlaWdodHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBCm5vcm1hbGl6ZXICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDYJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYBEmdldE5lZWRlZE1hdGVyaWFscwEFdG90YWwEBXByb3BzCQC1CQIJAQV2YWx1ZQEJAKIIAQkBEWtleVJlc1Byb3BvcnRpb25zAAIBXwMJAQIhPQIJAJADAQUFcHJvcHMFBk5VTVJFUwkAAgECFldyb25nIHByb3BvcnRpb25zIGRhdGEEAXIJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXByb3BzAAAJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXByb3BzAAEJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXByb3BzAAIJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXByb3BzAAMJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXByb3BzAAQJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXByb3BzAAUFA25pbAkBE2Rpc3RyaWJ1dGVCeVdlaWdodHMCBQV0b3RhbAUBcgERc3VidHJhY3RNYXRlcmlhbHMDDHNob3VsZFVzZU1hdANoYXMJdG90YWxOZWVkBARuZWVkCQESZ2V0TmVlZGVkTWF0ZXJpYWxzAQUJdG90YWxOZWVkCgEKc3VidHJhY3RvcgIDYWNjA2lkeAQGcmVzdWx0CQBlAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA2hhcwUDaWR4CQCRAwIFBG5lZWQFA2lkeAMJAGYCAAAFBnJlc3VsdAkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAhhOb3QgZW5vdWdoIG1hdGVyaWFsIGlkeD0JAKQDAQUDaWR4AgssIHlvdSBoYXZlIAkAkQMCBQNoYXMFA2lkeAILLCBidXQgbmVlZCAJAKQDAQkAkQMCBQRuZWVkBQNpZHgJAM0IAgUDYWNjCQCkAwEFBnJlc3VsdAMFDHNob3VsZFVzZU1hdAoAAiRsBQVJVEVSNgoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEKc3VidHJhY3RvcgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNgkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgUDaGFzARFzdWJ0cmFjdEVxdWlwbWVudAIFb2xkRXEFcFVzZWQDCQAAAgUFcFVzZWQCAAkAlAoCBQVvbGRFcQcKAQdzdWJVc2VkAgNhY2MGaWR4QW10BAVwYXJ0cwkAtQkCBQZpZHhBbXQCASwDCQECIT0CCQCQAwEFBXBhcnRzAAIJAAIBAihJbmNvcnJlY3QgZm9ybWF0LCBzaG91bGQgYmUgaW5kZXgsYW1vdW50BANpZHgJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwYXJ0cwAAAwMJAGYCAAAFA2lkeAYJAGcCBQNpZHgJAJADAQUQcHJvZHVjdGlvbk1hdHJpeAkAAgECE1Vua25vd24gcHJvZHVjdCBpZHgEA2FtdAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXBhcnRzAAEEB2VxUGFydHMJALUJAggFA2FjYwJfMQkArAICCQCRAwIFBXBhcnRzAAACAToDCQECIT0CCQCQAwEFB2VxUGFydHMAAgkAAgEJAKwCAgkArAICAg9Zb3UgZG9uJ3QgaGF2ZSAJAJEDAgUJcHJvZFR5cGVzBQNpZHgCCSBlcXVpcHBlZAQDdG1wCQCRAwIFB2VxUGFydHMAAQQGbnVtTGVuAwkBB2lzRGlnaXQBCQCvAgIJALACAgUDdG1wAAEAAQACAAEEBGN1cnIJAQ1wYXJzZUludFZhbHVlAQkArwICBQN0bXAFBm51bUxlbgQEdGFpbAkAsAICBQN0bXAFBm51bUxlbgQGbmV3QW10AwkAZwIFBGN1cnIFA2FtdAkAZQIFBGN1cnIFA2FtdAkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAg1Zb3UgZXF1aXBwZWQgCQCkAwEFBGN1cnICBCBvZiAJAJEDAgUJcHJvZFR5cGVzBQNpZHgCEywgYnV0IHRyaWVkIHRvIHVzZSAJAKQDAQUDYW10CQCUCgIJAKwCAgkArAICCQCsAgIJAKwCAgkAkQMCBQdlcVBhcnRzAAAJAJEDAgUFcGFydHMAAAIBOgkApAMBBQZuZXdBbXQFBHRhaWwDCAUDYWNjAl8yBgMDCQBnAgUDaWR4AAYJAGcCAAgFA2lkeAcJAAACBQZuZXdBbXQAAAcKAAIkbAkAtQkCBQVwVXNlZAIBXwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJQKAgUFb2xkRXEHCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQdzdWJVc2VkAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAQ5wcm9kU3RyVG9CeXRlcwEHcHJvZFN0cgQFcExpc3QDCQAAAgUHcHJvZFN0cgIABQNuaWwJALwJAgUHcHJvZFN0cgIBXwoBBHRvQlYCA2FjYwZyZWNpcGUEAWoJAGkCCQDIAQEFA2FjYwAIBARjdXJyAwkAZgIJAJADAQUFcExpc3QFAWoJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwTGlzdAUBagAACQDLAQIFA2FjYwkAmgMBBQRjdXJyCgACJGwFEHByb2R1Y3Rpb25NYXRyaXgKAAIkcwkAkAMBBQIkbAoABSRhY2MwAQAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBBHRvQlYCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDUwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIAIwAkACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgEOYnl0ZXNUb1Byb2RTdHIBAmJ2CgEGZnJvbUJWAgNhY2MGcmVjaXBlBAFqCQCQAwEFA2FjYwQBYgkAyQECCQDKAQIFAmJ2CQBoAgAIBQFqAAgJAM0IAgUDYWNjCQCkAwEJALEJAQUBYgkAugkCCgACJGwFEHByb2R1Y3Rpb25NYXRyaXgKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBBmZyb21CVgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgNTAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyAgFfARVjaGVja1N0YXRSZXF1aXJlbWVudHMCCWR1Y2tTdGF0cwRyZXFzCgEFY2hlY2sCA2FjYwFqBARidWZmAwkAZgIJAJADAQUJZHVja1N0YXRzCQBkAgAHBQFqCQCRAwIFCWR1Y2tTdGF0cwkAZAIABwUBagAAAwkAZgIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRyZXFzBQFqCQBkAgkAkQMCBQlkdWNrU3RhdHMFAWoFBGJ1ZmYJAAIBCQCsAgICG1JlcXVpcmVtZW50IG5vdCBzYXRpc2ZpZWQ6IAkAkQMCBQxyZXF1aXJlbWVudHMFAWoGCgACJGwJAMwIAgAACQDMCAIAAQkAzAgCAAIJAMwIAgADCQDMCAIABAkAzAgCAAUJAMwIAgAGBQNuaWwKAAIkcwkAkAMBBQIkbAoABSRhY2MwBwoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEFY2hlY2sCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDcJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwEKcGxhY2VQcm9kQgYGaWR4Q250BXBMaXN0CmlzUG9zaXRpdmUJZHVja1N0YXRzCG9jY3VwaWVkBGZyZWUEBXBhcnRzCQC1CQIFBmlkeENudAIBOgMJAQIhPQIJAJADAQUFcGFydHMAAgkAAgECKEluY29ycmVjdCBmb3JtYXQsIHNob3VsZCBiZSBpbmRleDphbW91bnQDAwkBASEBBQppc1Bvc2l0aXZlCQECIT0CCQCxAgEJAJEDAgUFcGFydHMAAAACBwkAAgECK1Byb2R1Y3QgaWR4IHNob3VsZCBiZSAyIGRpZ2l0cywgemVybyBwYWRkZWQECnByb2R1Y3RJZHgJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwYXJ0cwAABAVjb3VudAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXBhcnRzAAEDCQEBIQEJAQ9jb250YWluc0VsZW1lbnQCBRBmb3J0QWxsb3dlZFByb2RzBQpwcm9kdWN0SWR4CQACAQkArAICCQCsAgICCVByb2R1Y3QgJwkAkQMCBQlwcm9kVHlwZXMFCnByb2R1Y3RJZHgCIScgY2Fubm90IGJlIHVzZWQgZm9yIGxhbmQgZGVmZW5zZQMJAGYCAAAFBWNvdW50CQACAQIXQ291bnQgY2FuJ3QgYmUgbmVnYXRpdmUDCQBmAgUFY291bnQFDU1BWFBST0RJTlNMT1QJAAIBCQCsAgIJAKwCAgkArAICAhRDYW4ndCBwdXQgbW9yZSB0aGFuIAkApAMBBQ1NQVhQUk9ESU5TTE9UAgQgb2YgCQCRAwIFCXByb2RUeXBlcwUKcHJvZHVjdElkeAMJAAACBQVjb3VudAAACQCVCgMFBXBMaXN0BQhvY2N1cGllZAUEZnJlZQQEaGVhZAkAyQECBQVwTGlzdAkAaAIACAUKcHJvZHVjdElkeAQEY3VycgkAsQkBCQDJAQIJAMoBAgUFcExpc3QJAGgCAAgFCnByb2R1Y3RJZHgACAQEdGFpbAkAygECBQVwTGlzdAkAaAIACAkAZAIFCnByb2R1Y3RJZHgAAQQGcmVjaXBlCQC1CQIJAJEDAgUQcHJvZHVjdGlvbk1hdHJpeAUKcHJvZHVjdElkeAIBXwMDCQEBIQEFCmlzUG9zaXRpdmUJAGYCBQVjb3VudAUEY3VycgcJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIJWW91IGhhdmUgCQCkAwEFBGN1cnICBCBvZiAJAJEDAgUJcHJvZFR5cGVzBQpwcm9kdWN0SWR4AhMsIGJ1dCB0cmllZCB0byB1c2UgCQCkAwEFBWNvdW50BAZuZXdBbXQDAwkBASEBBQppc1Bvc2l0aXZlCQEVY2hlY2tTdGF0UmVxdWlyZW1lbnRzAgUJZHVja1N0YXRzCQC1CQIJAJEDAgUGcmVjaXBlBRBySWR4UmVxdWlyZW1lbnRzAgEsBwkAZQIFBGN1cnIFBWNvdW50CQBkAgUEY3VycgUFY291bnQECGRlbHRhVm9sCQBlAgkBCHRvVm9sdW1lAgUGbmV3QW10BQ5QUk9EVUNUUEtHU0laRQkBCHRvVm9sdW1lAgUEY3VycgUOUFJPRFVDVFBLR1NJWkUJAJUKAwkAywECCQDLAQIFBGhlYWQJAJoDAQUGbmV3QW10BQR0YWlsCQBkAgUIb2NjdXBpZWQFCGRlbHRhVm9sCQBlAgUEZnJlZQUIZGVsdGFWb2wBCGFkZFByb2RCBwZpZHhDbnQFcExpc3QKaXNQb3NpdGl2ZQdzZWdtZW50B21haW5BdXgEc2xvdAlkdWNrU3RhdHMEBXBhcnRzCQC1CQIFBmlkeENudAIBOgMJAQIhPQIJAJADAQUFcGFydHMAAgkAAgECKEluY29ycmVjdCBmb3JtYXQsIHNob3VsZCBiZSBpbmRleDphbW91bnQDAwkBASEBBQppc1Bvc2l0aXZlCQECIT0CCQCxAgEJAJEDAgUFcGFydHMAAAACBwkAAgECK1Byb2R1Y3QgaWR4IHNob3VsZCBiZSAyIGRpZ2l0cywgemVybyBwYWRkZWQECnByb2R1Y3RJZHgJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwYXJ0cwAABAVjb3VudAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXBhcnRzAAEDAwkAZgIAAAUKcHJvZHVjdElkeAYJAGcCBQpwcm9kdWN0SWR4CQCQAwEFEHByb2R1Y3Rpb25NYXRyaXgJAAIBAhNVbmtub3duIHByb2R1Y3QgaWR4AwkAZgIAAAUFY291bnQJAAIBAhdDb3VudCBjYW4ndCBiZSBuZWdhdGl2ZQMJAGYCBQVjb3VudAUNTUFYUFJPRElOU0xPVAkAAgEJAKwCAgkArAICCQCsAgICFENhbid0IHB1dCBtb3JlIHRoYW4gCQCkAwEFDU1BWFBST0RJTlNMT1QCBCBvZiAJAJEDAgUJcHJvZFR5cGVzBQpwcm9kdWN0SWR4AwkAAAIFBWNvdW50AAAJAJQKAgUFcExpc3QHBARoZWFkCQDJAQIFBXBMaXN0CQBoAgAIBQpwcm9kdWN0SWR4BARjdXJyCQCxCQEJAMkBAgkAygECBQVwTGlzdAkAaAIACAUKcHJvZHVjdElkeAAIBAR0YWlsCQDKAQIFBXBMaXN0CQBoAgAICQBkAgUKcHJvZHVjdElkeAABBAZyZWNpcGUJALUJAgkAkQMCBRBwcm9kdWN0aW9uTWF0cml4BQpwcm9kdWN0SWR4AgFfAwMJAQEhAQUKaXNQb3NpdGl2ZQkAZgIFBWNvdW50BQRjdXJyBwkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAglZb3UgaGF2ZSAJAKQDAQUEY3VycgIEIG9mIAkAkQMCBQlwcm9kVHlwZXMFCnByb2R1Y3RJZHgCEywgYnV0IHRyaWVkIHRvIHVzZSAJAKQDAQUFY291bnQECWlzQmlnSXRlbQMDCQEBIQEFCmlzUG9zaXRpdmUJARVjaGVja1N0YXRSZXF1aXJlbWVudHMCBQlkdWNrU3RhdHMJALUJAgkAkQMCBQZyZWNpcGUFEHJJZHhSZXF1aXJlbWVudHMCASwHBAZjb21wYXQJAJEDAgUGcmVjaXBlBQlySWR4U2xvdHMDCQAAAgUGY29tcGF0AgAJAAIBAhdJdGVtIGNhbm5vdCBiZSBlcXVpcHBlZAQBYwkBDXBhcnNlSW50VmFsdWUBBQZjb21wYXQEBGNTZWcJAGkCBQFjAGQDCQECIT0CBQdzZWdtZW50BQRjU2VnCQACAQIUU2VnbWVudCBpbmNvbXBhdGlibGUECGNNYWluQXV4CQBpAgkAagIFAWMAZAAKAwkBAiE9AgUHbWFpbkF1eAUIY01haW5BdXgJAAIBAhFTbG90IGluY29tcGF0aWJsZQQJY051bVNsb3RzCQBqAgUBYwAKAwMJAQIhPQIFBHNsb3QAAAkAZgIFCWNOdW1TbG90cwABBwkAAgECHkJpZyBpdGVtcyBzaG91bGQgb2NjdXB5IHNsb3QgMAkAZgIFCWNOdW1TbG90cwABBwkAlAoCCQDLAQIJAMsBAgUEaGVhZAkAmgMBCQBkAgUEY3VycgMFCmlzUG9zaXRpdmUFBWNvdW50CQEBLQEFBWNvdW50BQR0YWlsBQlpc0JpZ0l0ZW0BC3Nsb3RzR3JvdXBCBgFnBGJwSW4KaXNQb3NpdGl2ZQdzZWdtZW50B21haW5BdXgFc3RhdHMDCQECIT0CBQFnAgAEBXNsb3RzCQC1CQIFAWcCASwDCQBmAgkAkAMBBQVzbG90cwUITUFYU0xPVFMJAAIBAhJXcm9uZyBzbG90cyBmb3JtYXQEAnMwCQCRAwIFBXNsb3RzAAAEAnMxAwkAZgIJAJADAQUFc2xvdHMAAQkAkQMCBQVzbG90cwABAgADAwkAAAIFAnMwAgAJAAACBQJzMQIABwUEYnBJbgQFdG1wUzADCQECIT0CBQJzMAIACQEIYWRkUHJvZEIHBQJzMAUEYnBJbgUKaXNQb3NpdGl2ZQUHc2VnbWVudAUHbWFpbkF1eAAABQVzdGF0cwkAlAoCBQRicEluBwMJAQIhPQIFAnMxAgADCAUFdG1wUzACXzIJAAIBAh5CaWcgaXRlbSBhbHJlYWR5IG9jY3VwaWVzIHNsb3QICQEIYWRkUHJvZEIHBQJzMQgFBXRtcFMwAl8xBQppc1Bvc2l0aXZlBQdzZWdtZW50BQdtYWluQXV4AAEFBXN0YXRzAl8xCAUFdG1wUzACXzEFBGJwSW4BBmRyZXNzQgQHc2VnTGlzdAZwQnl0ZXMKaXNQb3NpdGl2ZQVzdGF0cwoBB3NlZ21lbnQCA2FjYwNzZWcEAWoIBQNhY2MCXzEEB21haW5BdXgJALUJAgUDc2VnAgE7AwkBAiE9AgkAkAMBBQdtYWluQXV4BQpOVU1NQUlOQVVYCQACAQIUV3Jvbmcgc2VnbWVudCBmb3JtYXQEAW0JAJEDAgUHbWFpbkF1eAAABAFhCQCRAwIFB21haW5BdXgAAQMDCQAAAgUBbQIACQAAAgUBYQIABwkAlAoCCQBkAgUBagABCAUDYWNjAl8yBAR0bXBNCQELc2xvdHNHcm91cEIGBQFtCAUDYWNjAl8yBQppc1Bvc2l0aXZlBQFqAAAFBXN0YXRzCQCUCgIJAGQCBQFqAAEJAQtzbG90c0dyb3VwQgYFAWEFBHRtcE0FCmlzUG9zaXRpdmUFAWoAAQUFc3RhdHMICgACJGwFB3NlZ0xpc3QKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCUCgIAAAUGcEJ5dGVzCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQdzZWdtZW50AgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA2CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAl8yAQVmb3J0QgYHc2VnTGlzdAZwQnl0ZXMIb2NjdXBpZWQEZnJlZQppc1Bvc2l0aXZlCWR1Y2tTdGF0cwMJAGYCAAMJAJADAQUHc2VnTGlzdAkAAgECMUF0IGxlYXN0IGR1Y2ssIG1pbmVzIGFuZCB0cmFwcyBwYXJ0cyBhcmUgcmVxdWlyZWQKAQdzZWdtZW50AgNhY2MDc2VnBAFqCAUDYWNjAl8xAwkAAAIFAWoAAAkAlgoECQBkAgUBagABCAUDYWNjAl8yCAUDYWNjAl8zCAUDYWNjAl80BAFwCQEKcGxhY2VQcm9kQgYFA3NlZwgFA2FjYwJfMgUKaXNQb3NpdGl2ZQUJZHVja1N0YXRzCAUDYWNjAl8zCAUDYWNjAl80CQCWCgQJAGQCBQFqAAEIBQFwAl8xCAUBcAJfMggFAXACXzMEAXQKAAIkbAUHc2VnTGlzdAoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJYKBAAABQZwQnl0ZXMFCG9jY3VwaWVkBQRmcmVlCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQdzZWdtZW50AgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKCQCVCgMIBQF0Al8yCAUBdAJfMwgFAXQCXzQBF2NhbldlYXJDdXJyZW50RXF1aXBtZW50AQtkdWNrQXNzZXRJZAQFZXFLZXkJARBrZXlEdWNrRXF1aXBtZW50AQULZHVja0Fzc2V0SWQEBmN1cnJFcQkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEFBWVxS2V5AhcsOyxfLDssXyw7LF8sOyxfLDssXyw7LAIBXwQJdGVtcFByb2RCCQEGZHJlc3NCBAUGY3VyckVxBQxFTVBUWV9QUk9ENTAGBQNuaWwECHNlZ0JwQXV4CQCRAwIJALUJAgkAkQMCBQZjdXJyRXEFC3NlZ0JhY2twYWNrAgE7AAEECmJ1ZmZFZmZlY3QDCQAAAgUIc2VnQnBBdXgCAAAABARhdXgwCQCRAwIJALUJAgUIc2VnQnBBdXgCASwAAAMJAAACBQRhdXgwAgAAAAQGaWR4Q250CQC1CQIFBGF1eDACAToEA2lkeAkAkQMCBQZpZHhDbnQAAAQDY250CQCRAwIFBmlkeENudAABAwMDAwMJAAACBQNpZHgCAjA2BgkAAAIFA2lkeAICMDcGCQAAAgUDaWR4AgIwOAkBAiE9AgUDY250AgAHCQBmAgkBDXBhcnNlSW50VmFsdWUBBQNjbnQAAAcJAQ1wYXJzZUludFZhbHVlAQkAkQMCCQC1CQIJAJEDAgUQcHJvZHVjdGlvbk1hdHJpeAkBDXBhcnNlSW50VmFsdWUBBQNpZHgCAV8FCnJJZHhFZmZlY3QAAAQFc3RhdHMJAQxnZXREdWNrU3RhdHMEBQR0aGlzBQtkdWNrQXNzZXRJZAUKYnVmZkVmZmVjdAYECG5ld1Byb2RCCQEGZHJlc3NCBAUGY3VyckVxBQl0ZW1wUHJvZEIHBQVzdGF0cwkAAAIFCG5ld1Byb2RCBQhuZXdQcm9kQgEZdXBkYXRlUHJvcG9ydGlvbnNJbnRlcm5hbAQIcHJvcExpc3QNdGVycmFpbkNvdW50cw1sYW5kU2l6ZUluZGV4BHNpZ24DCQECIT0CCQCQAwEFCHByb3BMaXN0BQZOVU1SRVMJAAIBAhZXcm9uZyBwcm9wb3J0aW9ucyBkYXRhCgEHdXBkYXRlcgIDYWNjAWkEBnJlc3VsdAkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQhwcm9wTGlzdAUBaQkAaAIJAGgCBQRzaWduCQCRAwIFDXRlcnJhaW5Db3VudHMFAWkFDWxhbmRTaXplSW5kZXgDCQBmAgAABQZyZXN1bHQJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICFlBhbmljISBQaWVjZXMgb2YgdHlwZT0JAKQDAQUBaQIHLCBzaWduPQkApAMBBQRzaWduAhMsIHRlcnJhaW5Db3VudHNbaV09CQCkAwEJAJEDAgUNdGVycmFpbkNvdW50cwUBaQIQLCBsYW5kU2l6ZUluZGV4PQkApAMBBQ1sYW5kU2l6ZUluZGV4CQDNCAIFA2FjYwkApAMBBQZyZXN1bHQKAAIkbAUFSVRFUjYKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBB3VwZGF0ZXICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDYJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYBEXVwZGF0ZVByb3BvcnRpb25zAw10ZXJyYWluQ291bnRzDWxhbmRTaXplSW5kZXgEc2lnbgQIcHJvcExpc3QJALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBCQERa2V5UmVzUHJvcG9ydGlvbnMAAgswXzBfMF8wXzBfMAIBXwkAuQkCCQEZdXBkYXRlUHJvcG9ydGlvbnNJbnRlcm5hbAQFCHByb3BMaXN0BQ10ZXJyYWluQ291bnRzBQ1sYW5kU2l6ZUluZGV4BQRzaWduAgFfAQ1jb3VudFRlcnJhaW5zAQh0ZXJyYWlucwkAzAgCCQBlAgkAkAMBCQC1CQIFCHRlcnJhaW5zAgFBAAEJAMwIAgkAZQIJAJADAQkAtQkCBQh0ZXJyYWlucwIBQgABCQDMCAIJAGUCCQCQAwEJALUJAgUIdGVycmFpbnMCAUMAAQkAzAgCCQBlAgkAkAMBCQC1CQIFCHRlcnJhaW5zAgFEAAEJAMwIAgkAZQIJAJADAQkAtQkCBQh0ZXJyYWlucwIBRQABCQDMCAIJAGUCCQCQAwEJALUJAgUIdGVycmFpbnMCAUYAAQUDbmlsAQZhZGRSZXMFCmN1cnJlbnRSZXMNdGVycmFpbkNvdW50cwlkZWx0YVRpbWUNbGFuZFNpemVJbmRleBdkYWlseUJ5UGllY2VXaXRoQm9udXNlcwoBBWFkZGVyAgNhY2MBaQQJcmVzT2ZUeXBlCQBoAgkAaAIJAGsDBQlkZWx0YVRpbWUFF2RhaWx5QnlQaWVjZVdpdGhCb251c2VzBQlEQVlNSUxMSVMJAJEDAgUNdGVycmFpbkNvdW50cwUBaQUNbGFuZFNpemVJbmRleAkAzQgCBQNhY2MJAKQDAQkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQpjdXJyZW50UmVzBQFpBQlyZXNPZlR5cGUEAXIKAAIkbAUFSVRFUjYKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBBWFkZGVyAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA2CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGCQC5CQIFAXICAV8BCXZpcnRDbGFpbQQNdGVycmFpbkNvdW50cwlkZWx0YVRpbWUNbGFuZFNpemVJbmRleBdkYWlseUJ5UGllY2VXaXRoQm9udXNlcwoBBWFkZGVyAgNhY2MBaQQJcmVzT2ZUeXBlCQBoAgkAaAIJAGsDBQlkZWx0YVRpbWUFF2RhaWx5QnlQaWVjZVdpdGhCb251c2VzBQlEQVlNSUxMSVMJAJEDAgUNdGVycmFpbkNvdW50cwUBaQUNbGFuZFNpemVJbmRleAkAlAoCCQDNCAIIBQNhY2MCXzEFCXJlc09mVHlwZQkAZAIIBQNhY2MCXzIFCXJlc09mVHlwZQoAAiRsBQVJVEVSNgoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJQKAgUDbmlsAAAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBBWFkZGVyAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA2CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAQ1kaXN0cmlidXRlUmVzBAxjdXJyZW50V2hSZXMOY3VycmVudFBhY2tSZXMKcmVzVG9DbGFpbQt3aFNwYWNlTGVmdAQOcmVzTGlzdFRvQ2xhaW0IBQpyZXNUb0NsYWltAl8xBAxyZXNBbVRvQ2xhaW0IBQpyZXNUb0NsYWltAl8yAwkAAAIFDHJlc0FtVG9DbGFpbQAACQCUCgIJALkJAgUMY3VycmVudFdoUmVzAgFfCQC5CQIFDmN1cnJlbnRQYWNrUmVzAgFfAwkAZwIFC3doU3BhY2VMZWZ0BQxyZXNBbVRvQ2xhaW0KAQhhZGRMaXN0cwIDYWNjAWkJAM0IAgUDYWNjCQCkAwEJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUMY3VycmVudFdoUmVzBQFpCQCRAwIFDnJlc0xpc3RUb0NsYWltBQFpBAFyCgACJGwFBUlURVI2CgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQhhZGRMaXN0cwIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNgkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgkAlAoCCQC5CQIFAXICAV8JALkJAgUOY3VycmVudFBhY2tSZXMCAV8KAQxhZGRQYXJ0TGlzdHMCA2FjYwFpBAZ3aFBhcnQJAGsDCQCRAwIFDnJlc0xpc3RUb0NsYWltBQFpBQt3aFNwYWNlTGVmdAUMcmVzQW1Ub0NsYWltCQCUCgIJAM0IAggFA2FjYwJfMQkApAMBCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFDGN1cnJlbnRXaFJlcwUBaQUGd2hQYXJ0CQDNCAIIBQNhY2MCXzIJAKQDAQkAZQIJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUOY3VycmVudFBhY2tSZXMFAWkJAJEDAgUOcmVzTGlzdFRvQ2xhaW0FAWkFBndoUGFydAQBcgoAAiRsBQVJVEVSNgoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJQKAgUDbmlsBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBDGFkZFBhcnRMaXN0cwIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNgkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgkAlAoCCQC5CQIIBQFyAl8xAgFfCQC5CQIIBQFyAl8yAgFfAQNhYnMBAXgDCQDAAgIFAXgJALYCAQAABQF4CQC+AgEFAXgABGZyZXEJAMwIAgkAzAgCAAYJAMwIAgAJCQDMCAIADgkAzAgCAA8JAMwIAgAQBQNuaWwJAMwIAgkAzAgCAAUJAMwIAgAICQDMCAIADQkAzAgCAA4JAMwIAgAPBQNuaWwJAMwIAgkAzAgCAAEJAMwIAgAECQDMCAIACQkAzAgCAAoJAMwIAgAPBQNuaWwJAMwIAgkAzAgCAAEJAMwIAgAGCQDMCAIABwkAzAgCAA8JAMwIAgATBQNuaWwJAMwIAgkAzAgCAAQJAMwIAgAHCQDMCAIACAkAzAgCAA0JAMwIAgASBQNuaWwFA25pbAEHZ2VuQ2hhcgIBbgVmcmVxcwQDcmVtCQCgAwEJALsCAgUBbgUHVFdFTlRZWAQGbGV0dGVyAwkAZgIJAJEDAgUFZnJlcXMAAAUDcmVtAgFBAwkAZgIJAJEDAgUFZnJlcXMAAQUDcmVtAgFCAwkAZgIJAJEDAgUFZnJlcXMAAgUDcmVtAgFDAwkAZgIJAJEDAgUFZnJlcXMAAwUDcmVtAgFEAwkAZgIJAJEDAgUFZnJlcXMABAUDcmVtAgFFAgFGBQZsZXR0ZXIBC2dlblRlcnJhaW5zAgRzZWVkDGNvbnRpbmVudElkeAQBZgkAkQMCBQRmcmVxBQxjb250aW5lbnRJZHgKARB0ZXJyYWluR2VuZXJhdG9yAgNhY2MEZWxlbQkAlAoCCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAggFA2FjYwJfMQkBB2dlbkNoYXICCAUDYWNjAl8yBQFmCQEHZ2VuQ2hhcgIJALoCAggFA2FjYwJfMgUHVFdFTlRZWAUBZgkBB2dlbkNoYXICCQC6AgIIBQNhY2MCXzIFCFRXRU5UWTJYBQFmCQEHZ2VuQ2hhcgIJALoCAggFA2FjYwJfMgUIVFdFTlRZM1gFAWYJAQdnZW5DaGFyAgkAugICCAUDYWNjAl8yBQhUV0VOVFk0WAUBZgkAugICCAUDYWNjAl8yBQhUV0VOVFk1WAQBdAoAAiRsCQDMCAIAAQkAzAgCAAIJAMwIAgADCQDMCAIABAkAzAgCAAUFA25pbAoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJQKAgIACQC6AgIFBHNlZWQFBUZJVkVYCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJARB0ZXJyYWluR2VuZXJhdG9yAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA1CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQgFAXQCXzEABlBFUk0yNQkAzAgCAAcJAMwIAgACCQDMCAIADwkAzAgCABMJAMwIAgAICQDMCAIAGAkAzAgCAAEJAMwIAgAVCQDMCAIAEAkAzAgCAAUJAMwIAgAACQDMCAIAFgkAzAgCABQJAMwIAgAXCQDMCAIACwkAzAgCAAQJAMwIAgASCQDMCAIADAkAzAgCAAYJAMwIAgAKCQDMCAIAAwkAzAgCABEJAMwIAgANCQDMCAIACQkAzAgCAA4FA25pbAAGVENIQVJTCQDMCAICAUEJAMwIAgIBQgkAzAgCAgFDCQDMCAICAUQJAMwIAgIBRQkAzAgCAgFGBQNuaWwBE2dlblRlcnJhaW5zRm9yTWVyZ2UCC3N1bVRlcnJhaW5zDWxhbmRTaXplSW5kZXgKAQVzdGVwMQIDYWNjAXMEAWoIBQNhY2MCXzIEAmVsCQENcGFyc2VJbnRWYWx1ZQEFAXMEAXgDCQAAAgUCZWwAAAAAAwkAZwIFAmVsCQBoAgAEBQ1sYW5kU2l6ZUluZGV4CQBpAgUCZWwFDWxhbmRTaXplSW5kZXgDCQBmAgUCZWwJAGgCAAMFDWxhbmRTaXplSW5kZXgAAwkAZAIJAGkCCQBlAgUCZWwAAQUNbGFuZFNpemVJbmRleAABCQCVCgMJAM0IAggFA2FjYwJfMQUBeAkAZAIIBQNhY2MCXzIAAQkAZAIIBQNhY2MCXzMFAXgEAXQKAAIkbAULc3VtVGVycmFpbnMKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCVCgMFA25pbAAAAAAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBBXN0ZXAxAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA2CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGBANhcnIIBQF0Al8xBAZtYXhJZHgJAQV2YWx1ZQEJAM8IAgUDYXJyCQCWAwEFA2FycgQFZGVsdGEJAGUCCAUBdAJfMwAZCgEGc3ViYmVyAgNhY2MDaWR4BAN2YWwDCQAAAgUDaWR4BQZtYXhJZHgJAGUCCQCRAwIFA2FycgUDaWR4BQVkZWx0YQkAkQMCBQNhcnIFA2lkeAQGemVyb2VzAwkAAAIFA3ZhbAAABQNuaWwJALUJAgkAsAICCQCkAwEJAGwGAAoAAAUDdmFsAAAAAAUERE9XTgABAgAEAWMJAJEDAgUGVENIQVJTBQNpZHgKAQdsaXN0R2VuAgJhYwdpZ25vcmVkCQDNCAIFAmFjBQFjBAF6CgACJGwFBnplcm9lcwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFA25pbAoBBSRmMV8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEHbGlzdEdlbgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMV8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMjUJAQUkZjFfMgIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQkAzggCBQNhY2MFAXoEAXIKAAIkbAUFSVRFUjYKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjFfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBBnN1YmJlcgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMV8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNgkBBSRmMV8yAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgoBBnBlcm11dAIDYWNjAWoJAKwCAgUDYWNjCQCRAwIFAXIFAWoKAAIkbAUGUEVSTTI1CgACJHMJAJADAQUCJGwKAAUkYWNjMAIACgEFJGYyXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQZwZXJtdXQCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjJfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDI1CQEFJGYyXzICCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAAVABYAFwAYABkBC2dldEJhY2twYWNrAQVicEtleQQBcAkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEFBWJwS2V5AhowOjBfMF8wXzBfMF8wOjBfMF8wXzBfMF8wOgIBOgkAzAgCCQCkAwEJAQt2YWx1ZU9yRWxzZQIJALYJAQkAkQMCBQFwBQpicElkeExldmVsAAAJAMwIAgMJAAACCQCQAwEJALUJAgkAkQMCBQFwBQhicElkeFJlcwIBXwUGTlVNUkVTCQCRAwIFAXAFCGJwSWR4UmVzAgswXzBfMF8wXzBfMAkAzAgCAwkAAAIJAJADAQkAtQkCCQCRAwIFAXAFCGJwSWR4TWF0AgFfBQZOVU1SRVMJAJEDAgUBcAUIYnBJZHhNYXQCCzBfMF8wXzBfMF8wCQDMCAIJAJEDAgUBcAUJYnBJZHhQcm9kBQNuaWwBF2dldFdhcmVob3VzZVRvdGFsVm9sdW1lAQl2b2xQcmVmaXgEBXBhcnRzCQC1CQIFCXZvbFByZWZpeAIBXwkAaAIJAGgCBQxXSE1VTFRJUExJRVIJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFcGFydHMAAQABCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFcGFydHMAAAEXZ2V0V2FyZWhvdXNlT2NjdXBpZWRWb2wBCWN1cnJlbnRXaAQFZ29vZHMJAJEDAgUJY3VycmVudFdoBQl3aElkeFByb2QKAQlzdW1SZXNNYXQCA2FjYwRpdGVtCQBkAgUDYWNjCQENcGFyc2VJbnRWYWx1ZQEFBGl0ZW0KAQdzdW1Qcm9kAgNhY2MEaXRlbQQDaWR4CAUDYWNjAl8xBARwa2dzCQBpAgkAZQIJAGQCCQENcGFyc2VJbnRWYWx1ZQEFBGl0ZW0FDlBST0RVQ1RQS0dTSVpFAAEFDlBST0RVQ1RQS0dTSVpFCQCUCgIJAGQCBQNpZHgAAQkAZAIIBQNhY2MCXzIJAGgCBQRwa2dzBQVNVUxUOAQId2hSZXNWb2wKAAIkbAkAtQkCCQCRAwIFCWN1cnJlbnRXaAUId2hJZHhSZXMCAV8KAAIkcwkAkAMBBQIkbAoABSRhY2MwAAAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBCXN1bVJlc01hdAIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNgkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgQId2hNYXRWb2wKAAIkbAkAtQkCCQCRAwIFCWN1cnJlbnRXaAUId2hJZHhNYXQCAV8KAAIkcwkAkAMBBQIkbAoABSRhY2MwAAAKAQUkZjFfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBCXN1bVJlc01hdAIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMV8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNgkBBSRmMV8yAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgQKd2hHb29kc1ZvbAMJAAACBQVnb29kcwIAAAAICgACJGwJALwJAgUFZ29vZHMCAV8KAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCUCgIAAAAACgEFJGYyXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQdzdW1Qcm9kAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYyXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyA1MAkBBSRmMl8yAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADICXzIJAGQCCQBkAgUId2hSZXNWb2wFCHdoTWF0Vm9sBQp3aEdvb2RzVm9sAQxnZXRXYXJlaG91c2UDBXdoS2V5CWxhbmRJbmRleAppbmZyYUxldmVsBAl2b2xQcmVmaXgJAKwCAgkArAICCQCkAwEFCWxhbmRJbmRleAIBXwkApAMBBQppbmZyYUxldmVsBAd3aFRvdGFsCQEXZ2V0V2FyZWhvdXNlVG90YWxWb2x1bWUBBQl2b2xQcmVmaXgEBXdoU3RyCQELdmFsdWVPckVsc2UCCQCiCAEFBXdoS2V5CQCsAgIFCXZvbFByZWZpeAIbOjBfMF8wXzBfMF8wOjBfMF8wXzBfMF8wOjowBAJ3aAkAvAkCBQV3aFN0cgIBOgQKd2hPY2N1cGllZAkBF2dldFdhcmVob3VzZU9jY3VwaWVkVm9sAQUCd2gEBndoTG9mdAMJAGYCAAUJAJADAQUCd2gJALkJAgkAzAgCAgEwCQDMCAIJAKQDAQUKd2hPY2N1cGllZAkAzAgCCQCkAwEJAGUCBQd3aFRvdGFsBQp3aE9jY3VwaWVkCQDMCAIJAKQDAQUHd2hUb3RhbAUDbmlsAgFfBARsb2Z0CQC1CQIJAJEDAgUCd2gFCXdoSWR4TE9GVAIBXwQId2hMb2NrZWQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQl2b2xMb2NrZWQEA29jYwMJAGYCCQCQAwEFBGxvZnQAAQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFC3ZvbE9jY3VwaWVkBQp3aE9jY3VwaWVkCQC5CQIJAMwIAgkApAMBBQh3aExvY2tlZAkAzAgCCQCkAwEFA29jYwkAzAgCCQCkAwEJAGUCCQBlAgUHd2hUb3RhbAUId2hMb2NrZWQFA29jYwkAzAgCCQCkAwEFB3doVG90YWwFA25pbAIBXwkAzAgCCQCRAwIFAndoBQt3aElkeExldmVscwkAzAgCAwkAAAIJAJADAQkAtQkCCQCRAwIFAndoBQh3aElkeFJlcwIBXwUGTlVNUkVTCQCRAwIFAndoBQh3aElkeFJlcwILMF8wXzBfMF8wXzAJAMwIAgMJAAACCQCQAwEJALUJAgkAkQMCBQJ3aAUId2hJZHhNYXQCAV8FBk5VTVJFUwkAkQMCBQJ3aAUId2hJZHhNYXQCCzBfMF8wXzBfMF8wCQDMCAIJAJEDAgUCd2gFCXdoSWR4UHJvZAkAzAgCBQZ3aExvZnQFA25pbAEVZ2V0V2FyZWhvdXNlU3BhY2VMZWZ0AQljdXJyZW50V2gEC29jY3VwaWVkVm9sCQEXZ2V0V2FyZWhvdXNlT2NjdXBpZWRWb2wBBQljdXJyZW50V2gED2N1cnJXaExvY2tlZFZvbAkBDXBhcnNlSW50VmFsdWUBCQCRAwIJALUJAgkAkQMCBQljdXJyZW50V2gFCXdoSWR4TE9GVAIBXwUJdm9sTG9ja2VkCQBlAgkAZQIJARdnZXRXYXJlaG91c2VUb3RhbFZvbHVtZQEJAJEDAgUJY3VycmVudFdoBQt3aElkeExldmVscwULb2NjdXBpZWRWb2wFD2N1cnJXaExvY2tlZFZvbAEJbW92ZVN0dWZmAwpjYXJnb1BhcnRzCWN1cnJlbnRXaAtjdXJyZW50UGFjawMJAQIhPQIJAJADAQUKY2FyZ29QYXJ0cwADCQACAQI0Y2FyZ29MaXN0U3RyIHNob3VsZCBjb250YWluIGV4YWN0bHkgMiAnOicgc2VwYXJhdG9ycwQIcmVzUGFydHMJALUJAgkAkQMCBQpjYXJnb1BhcnRzAAACAV8ECG1hdFBhcnRzCQC1CQIJAJEDAgUKY2FyZ29QYXJ0cwABAgFfBAlwcm9kUGFydHMDCQAAAgkAkQMCBQpjYXJnb1BhcnRzAAICAAUDbmlsCQC8CQIJAJEDAgUKY2FyZ29QYXJ0cwACAgFfAwkBAiE9AgkAkAMBBQhyZXNQYXJ0cwUGTlVNUkVTCQACAQIgQWxsIDYgcmVzb3VyY2VzIHNob3VsZCBiZSBwYXNzZWQDCQECIT0CCQCQAwEFCG1hdFBhcnRzBQZOVU1SRVMJAAIBAiBBbGwgNiBtYXRlcmlhbHMgc2hvdWxkIGJlIHBhc3NlZAQLd2hTcGFjZUxlZnQJARVnZXRXYXJlaG91c2VTcGFjZUxlZnQBBQljdXJyZW50V2gECWN1cnJXaFJlcwkAtQkCCQCRAwIFCWN1cnJlbnRXaAUId2hJZHhSZXMCAV8ECWN1cnJXaE1hdAkAtQkCCQCRAwIFCWN1cnJlbnRXaAUId2hJZHhNYXQCAV8ECmN1cnJXaFByb2QDCQAAAgkAkQMCBQljdXJyZW50V2gFCXdoSWR4UHJvZAIABQNuaWwJALwJAgkAkQMCBQljdXJyZW50V2gFCXdoSWR4UHJvZAIBXwQOY3VycmVudFBhY2tSZXMJALUJAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhSZXMCAV8EDmN1cnJlbnRQYWNrTWF0CQC1CQIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4TWF0AgFfBA9jdXJyZW50UGFja1Byb2QDCQAAAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kAgAFA25pbAkAvAkCCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QCAV8KAQNtdlICA2FjYwRpdGVtBAFpCAUDYWNjAl8xBAJhbQkBDXBhcnNlSW50VmFsdWUBBQRpdGVtBAN3aHIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQljdXJyV2hSZXMFAWkEA2JwcgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFDmN1cnJlbnRQYWNrUmVzBQFpAwkAAAIFAmFtAAAJAJYKBAkAZAIFAWkAAQkAzQgCCAUDYWNjAl8yCQCRAwIFCWN1cnJXaFJlcwUBaQkAzQgCCAUDYWNjAl8zCQCRAwIFDmN1cnJlbnRQYWNrUmVzBQFpCAUDYWNjAl80AwkAZgIFAmFtAAADCQBmAgUCYW0FA2JwcgkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgIQQXR0ZW1wdCB0byB0YWtlIAUEaXRlbQIZIGZyb20gYmFja3BhY2ssIGJ1dCBvbmx5IAkApAMBBQNicHICCiBhdmFpbGFibGUJAJYKBAkAZAIFAWkAAQkAzQgCCAUDYWNjAl8yCQCkAwEJAGQCBQN3aHIFAmFtCQDNCAIIBQNhY2MCXzMJAKQDAQkAZQIFA2JwcgUCYW0JAGQCCAUDYWNjAl80BQJhbQMJAGYCCQEBLQEFAmFtBQN3aHIJAAIBCQCsAgIJAKwCAgkArAICCQCsAgICEEF0dGVtcHQgdG8gdGFrZSAJAKQDAQkBAS0BBQJhbQIaIGZyb20gd2FyZWhvdXNlLCBidXQgb25seSAJAKQDAQUDd2hyAgogYXZhaWxhYmxlCQCWCgQJAGQCBQFpAAEJAM0IAggFA2FjYwJfMgkApAMBCQBkAgUDd2hyBQJhbQkAzQgCCAUDYWNjAl8zCQCkAwEJAGUCBQNicHIFAmFtCQBkAggFA2FjYwJfNAUCYW0EAXIKAAIkbAUIcmVzUGFydHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCWCgQAAAUDbmlsBQNuaWwAAAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEDbXZSAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA2CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGCgEDbXZNAgNhY2MEaXRlbQQBaQgFA2FjYwJfMQQCYW0JAQ1wYXJzZUludFZhbHVlAQUEaXRlbQQDd2htCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUJY3VycldoTWF0BQFpBANicG0JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQ5jdXJyZW50UGFja01hdAUBaQMJAAACBQJhbQAACQCWCgQJAGQCBQFpAAEJAM0IAggFA2FjYwJfMgkAkQMCBQljdXJyV2hNYXQFAWkJAM0IAggFA2FjYwJfMwkAkQMCBQ5jdXJyZW50UGFja01hdAUBaQgFA2FjYwJfNAMJAGYCBQJhbQAAAwkAZgIFAmFtBQNicG0JAAIBCQCsAgIJAKwCAgkArAICCQCsAgICEEF0dGVtcHQgdG8gdGFrZSAFBGl0ZW0CGSBmcm9tIGJhY2twYWNrLCBidXQgb25seSAJAKQDAQUDYnBtAgogYXZhaWxhYmxlCQCWCgQJAGQCBQFpAAEJAM0IAggFA2FjYwJfMgkApAMBCQBkAgUDd2htBQJhbQkAzQgCCAUDYWNjAl8zCQCkAwEJAGUCBQNicG0FAmFtCQBkAggFA2FjYwJfNAUCYW0DCQBmAgkBAS0BBQJhbQUDd2htCQACAQkArAICCQCsAgIJAKwCAgkArAICAhBBdHRlbXB0IHRvIHRha2UgCQCkAwEJAQEtAQUCYW0CGiBmcm9tIHdhcmVob3VzZSwgYnV0IG9ubHkgCQCkAwEFA3dobQIKIGF2YWlsYWJsZQkAlgoECQBkAgUBaQABCQDNCAIIBQNhY2MCXzIJAKQDAQkAZAIFA3dobQUCYW0JAM0IAggFA2FjYwJfMwkApAMBCQBlAgUDYnBtBQJhbQkAZAIIBQNhY2MCXzQFAmFtBAFtCgACJGwFCG1hdFBhcnRzCgACJHMJAJADAQUCJGwKAAUkYWNjMAkAlgoEAAAFA25pbAUDbmlsCAUBcgJfNAoBBSRmMV8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEDbXZNAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYxXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA2CQEFJGYxXzICCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECBQUkYWNjMAAAAAEAAgADAAQABQAGCgEDbXZQAgNhY2MEaXRlbQQBaQgFA2FjYwJfMQQCYW0JAQ1wYXJzZUludFZhbHVlAQUEaXRlbQQDd2hwAwkAZgIJAJADAQUKY3VycldoUHJvZAUBaQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCmN1cnJXaFByb2QFAWkAAAQDYnBwAwkAZgIJAJADAQUPY3VycmVudFBhY2tQcm9kBQFpCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUPY3VycmVudFBhY2tQcm9kBQFpAAADCQAAAgUCYW0AAAkAlgoECQBkAgUBaQABCQDNCAIIBQNhY2MCXzIJAKQDAQUDd2hwCQDNCAIIBQNhY2MCXzMJAKQDAQUDYnBwCAUDYWNjAl80AwkAZgIFAmFtAAADCQBmAgUCYW0FA2JwcAkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgIQQXR0ZW1wdCB0byB0YWtlIAUEaXRlbQIZIGZyb20gYmFja3BhY2ssIGJ1dCBvbmx5IAkApAMBBQNicHACCiBhdmFpbGFibGUECGRlbHRhVm9sCQBlAgkBCHRvVm9sdW1lAgkAZAIFA3docAUCYW0FDlBST0RVQ1RQS0dTSVpFCQEIdG9Wb2x1bWUCBQN3aHAFDlBST0RVQ1RQS0dTSVpFCQCWCgQJAGQCBQFpAAEJAM0IAggFA2FjYwJfMgkApAMBCQBkAgUDd2hwBQJhbQkAzQgCCAUDYWNjAl8zCQCkAwEJAGUCBQNicHAFAmFtCQBkAggFA2FjYwJfNAUIZGVsdGFWb2wDCQBmAgkBAS0BBQJhbQUDd2hwCQACAQkArAICCQCsAgIJAKwCAgkArAICAhBBdHRlbXB0IHRvIHRha2UgCQCkAwEJAQEtAQUCYW0CGiBmcm9tIHdhcmVob3VzZSwgYnV0IG9ubHkgCQCkAwEFA3docAIKIGF2YWlsYWJsZQQIZGVsdGFWb2wJAGUCCQEIdG9Wb2x1bWUCCQBkAgUDd2hwBQJhbQUOUFJPRFVDVFBLR1NJWkUJAQh0b1ZvbHVtZQIFA3docAUOUFJPRFVDVFBLR1NJWkUJAJYKBAkAZAIFAWkAAQkAzQgCCAUDYWNjAl8yCQCkAwEJAGQCBQN3aHAFAmFtCQDNCAIIBQNhY2MCXzMJAKQDAQkAZQIFA2JwcAUCYW0JAGQCCAUDYWNjAl80BQhkZWx0YVZvbAQBcAMJAQIhPQIJAJADAQUJcHJvZFBhcnRzAAAKAAIkbAUJcHJvZFBhcnRzCgACJHMJAJADAQUCJGwKAAUkYWNjMAkAlgoEAAAFA25pbAUDbmlsCAUBbQJfNAoBBSRmMl8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEDbXZQAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYyXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyA1MAkBBSRmMl8yAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIJAJYKBAAABQpjdXJyV2hQcm9kBQ9jdXJyZW50UGFja1Byb2QIBQFtAl80BAh2b2xTYWxkbwgFAXACXzQDCQBmAgUIdm9sU2FsZG8FC3doU3BhY2VMZWZ0CQACAQkArAICCQCsAgIJAKwCAgkArAICAhVBdHRlbXB0IHRvIHB1dCB0b3RhbCAJAKQDAQUIdm9sU2FsZG8CESBzdHVmZiwgYnV0IG9ubHkgCQCkAwEFC3doU3BhY2VMZWZ0AhUgd2FyZWhvdXNlIHNwYWNlIGxlZnQJAJkKBwkAuQkCCAUBcgJfMgIBXwkAuQkCCAUBbQJfMgIBXwkAugkCCAUBcAJfMgIBXwkAuQkCCAUBcgJfMwIBXwkAuQkCCAUBbQJfMwIBXwkAugkCCAUBcAJfMwIBXwUIdm9sU2FsZG8BEmV4cGVkaXRpb25JbnRlcm5hbAIGY2FsbGVyBHR4SWQECHVzZXJBZGRyCQClCAEFBmNhbGxlcgQGYmlnTnVtCQEDYWJzAQkAngMBBQR0eElkBAdmcmVlTnVtCQELdmFsdWVPckVsc2UCCQCfCAEJARJrZXlOZXh0RnJlZUxhbmROdW0ACQBkAgUPUFJFU0FMRU5VTUxBTkRTAAEEB2xhbmROdW0JAKQDAQUHZnJlZU51bQQMY29udGluZW50SWR4CQCgAwEJALsCAgUGYmlnTnVtBQVGSVZFWAQIdGVycmFpbnMJAQtnZW5UZXJyYWlucwIFBmJpZ051bQUMY29udGluZW50SWR4BAljb250aW5lbnQJAJEDAgUKY29udGluZW50cwUMY29udGluZW50SWR4BAVpc3N1ZQkAwggFCQEHbmZ0TmFtZQIFB2xhbmROdW0CAVMJALkJAgkAzAgCBQdsYW5kTnVtCQDMCAICAVMJAMwIAgUIdGVycmFpbnMJAMwIAgUJY29udGluZW50BQNuaWwCAV8AAQAABwQHYXNzZXRJZAkAuAgBBQVpc3N1ZQQCaWQJANgEAQUHYXNzZXRJZAkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQESa2V5TmV4dEZyZWVMYW5kTnVtAAkAZAIFB2ZyZWVOdW0AAQkAzAgCBQVpc3N1ZQkAzAgCCQELU3RyaW5nRW50cnkCCQEQa2V5TGFuZFRvQXNzZXRJZAEFB2xhbmROdW0FAmlkCQDMCAIJAQtTdHJpbmdFbnRyeQIJARVrZXlMYW5kQXNzZXRJZFRvT3duZXIBBQJpZAUIdXNlckFkZHIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEWtleUxhbmROdW1Ub093bmVyAQUHbGFuZE51bQUIdXNlckFkZHIJAMwIAgkBDEludGVnZXJFbnRyeQIJARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQUCaWQAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBHmtleUluZnJhTGV2ZWxCeUFzc2V0SWRBbmRPd25lcgIFAmlkBQh1c2VyQWRkcgAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFBmNhbGxlcgABBQdhc3NldElkBQNuaWwJAJQKAgUCaWQFCWNvbnRpbmVudAEMZmxpZ2h0Q29tbW9uAwh1c2VyQWRkcgdtZXNzYWdlA3NpZwMJAQEhAQkAxBMDBQdtZXNzYWdlBQNzaWcFA3B1YgkAAgECGHNpZ25hdHVyZSBkb2VzIG5vdCBtYXRjaAQFcGFydHMJALwJAgkAsAkBBQdtZXNzYWdlAgE7BAlmbGlnaHRMb2cJALwJAgkAkQMCBQVwYXJ0cwAAAgF8BAJocAkAtQkCCQCRAwIFCWZsaWdodExvZwUIZmxIZWFsdGgCAV8EBWN1ckhQCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCaHAAAAQFbmV3SFAJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJocAABBAtuZXdMb2NUeFZlcgkAtQkCCQCRAwIFBXBhcnRzAAECAToEC25ld0xvY2F0aW9uCQCRAwIFC25ld0xvY1R4VmVyAAAEBHRpbWUJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQlmbGlnaHRMb2cFC2ZsVGltZXN0YW1wAwMJAGYCBQR0aW1lCQBkAggFCWxhc3RCbG9jawl0aW1lc3RhbXAFEUZJVkVNSU5VVEVTTUlMTElTBgkAZgIJAGUCCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAURRklWRU1JTlVURVNNSUxMSVMFBHRpbWUJAAIBCQCsAgIJAKwCAgkArAICAhxzaWduYXR1cmUgb3V0ZGF0ZWQ6IGxvZ1RpbWU9CQCkAwEFBHRpbWUCCSwgYmNUaW1lPQkApAMBCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQJdHhGcm9tTXNnCQCRAwIFC25ld0xvY1R4VmVyAAEEBmxhc3RUeAkBC3ZhbHVlT3JFbHNlAgkAoggBCQERa2V5TGFzdFR4SWRCeVVzZXIBBQh1c2VyQWRkcgIAAwkBAiE9AgUGbGFzdFR4BQl0eEZyb21Nc2cJAAIBCQCsAgIJAKwCAgkArAICAh5UeCBpZHMgZG9uJ3QgbWF0Y2ghIEluIHN0YXRlOiAFBmxhc3RUeAIKLCBpbiBtc2c6IAUJdHhGcm9tTXNnBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFCHVzZXJBZGRyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkBAlrZXlIZWFsdGgJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQEBW1heEhQCQEJbWF4SGVhbHRoAQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEMa2V5RHVja0xldmVsAQULZHVja0Fzc2V0SWQAAAQMb2xkRnJvbVN0YXRlCQELdmFsdWVPckVsc2UCCQCfCAEFCWtleUhlYWx0aAUFbWF4SFADCQECIT0CBQxvbGRGcm9tU3RhdGUFBWN1ckhQCQACAQkArAICCQCsAgIJAKwCAgIKb2xkSGVhbHRoPQkApAMBBQxvbGRGcm9tU3RhdGUCLyBmcm9tIHN0YXRlIGRvZXMgbm90IG1hdGNoIG9uZSBmcm9tIGZsaWdodCBsb2c9CQCkAwEFBWN1ckhQAwkAZwIAAAUFY3VySFAJAAIBAh5Zb3UgY2FuJ3QgZmx5IHdpdGggemVybyBoZWFsdGgDCQEBIQEJARdjYW5XZWFyQ3VycmVudEVxdWlwbWVudAEFC2R1Y2tBc3NldElkCQACAQIWRXF1aXBtZW50IGluY29tcGF0aWJsZQQFYm9udXMDCQBmAgkAkAMBBQlmbGlnaHRMb2cFB2ZsQm9udXMJAJEDAgUJZmxpZ2h0TG9nBQdmbEJvbnVzAgAECHByb2RVc2VkAwkAZgIJAJADAQUJZmxpZ2h0TG9nBQtmbFByb2RzVXNlZAkAkQMCBQlmbGlnaHRMb2cFC2ZsUHJvZHNVc2VkAgAECnNlbnRBbW91bnQDAwkAZgIFBW5ld0hQAAAJAAACBQVib251cwIBJAcJAQVhc0ludAEJAPwHBAUMcmVzdENvbnRyYWN0Ag1zZW5kVXNkdFByaXplCQDMCAIFCHVzZXJBZGRyBQNuaWwFA25pbAAACQCXCgUFBW5ld0hQBQtkdWNrQXNzZXRJZAUKc2VudEFtb3VudAULbmV3TG9jYXRpb24FCHByb2RVc2VkAQxhcHBseUJvbnVzZXMCC2xhbmRBc3NldElkBnBpZWNlcwQKaW5mcmFMZXZlbAkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEFC2xhbmRBc3NldElkAAAECWFydFBpZWNlcwkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEga2V5TGFuZEFydFN0YXR1c0J5VHlwZUFuZEFzc2V0SWQCBQpBUlRQUkVTQUxFBQtsYW5kQXNzZXRJZAAABARhZGQ2CQBpAgUKaW5mcmFMZXZlbAAGBARhZGQ3CQBpAgUKaW5mcmFMZXZlbAAHCQBkAgkAZAIFD0RBSUxZUkVTQllQSUVDRQkAawMFD0RBSUxZUkVTQllQSUVDRQkAZAIJAGQCBQppbmZyYUxldmVsBQRhZGQ2CQBoAgACBQRhZGQ3AAUJAGsDBQ9EQUlMWVJFU0JZUElFQ0UFCWFydFBpZWNlcwkAaAIFBnBpZWNlcwAFARRjaGVja0NsYWltQ29uZGl0aW9ucwMEYWRkcgljbGFpbU1vZGUNbGFuZEFzc2V0SWRJbgQNJHQwMzM3MzgzNDI3NwMJAAACBQljbGFpbU1vZGUFC2NsYWltTW9kZVdoCQCUCgIFDWxhbmRBc3NldElkSW4JAQt2YWx1ZU9yRWxzZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUEYWRkcgIABAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFBGFkZHICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQEC2N1ckxvY2F0aW9uCQELdmFsdWVPckVsc2UCCQCiCAEJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAUPREVGQVVMVExPQ0FUSU9OBANsb2MJALUJAgkBBXZhbHVlAQULY3VyTG9jYXRpb24CAV8DCQECIT0CCQCRAwIFA2xvYwUKbG9jSWR4VHlwZQIBTAkAAgEJAKwCAgkArAICAhZEdWNrIGxvY2F0aW9uIHR5cGUgaXMgCQCRAwIFA2xvYwUKbG9jSWR4VHlwZQIRLCBidXQgc2hvdWxkIGJlIEwJAJQKAgkAkQMCBQNsb2MFCGxvY0lkeElkBQtkdWNrQXNzZXRJZAQLbGFuZEFzc2V0SWQIBQ0kdDAzMzczODM0Mjc3Al8xBAZkdWNrSWQIBQ0kdDAzMzczODM0Mjc3Al8yBAVhc3NldAkBBXZhbHVlAQkA7AcBCQDZBAEFC2xhbmRBc3NldElkBAd0aW1lS2V5CQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFC2xhbmRBc3NldElkBAlzYXZlZFRpbWUJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnwgBBQd0aW1lS2V5CQCsAgIJAKwCAgIFTGFuZCAIBQVhc3NldARuYW1lAg4gaXMgbm90IHN0YWtlZAQFb3duZXIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEVa2V5TGFuZEFzc2V0SWRUb093bmVyAQULbGFuZEFzc2V0SWQJAKwCAgkArAICAgRORlQgCAUFYXNzZXQEbmFtZQIMIGlzIG9ycGhhbmVkAwkBAiE9AgUFb3duZXIFBGFkZHIJAAIBCQCsAgIFCkxBTkRQUkVGSVgCDSBpcyBub3QgeW91cnMEAWQJALUJAggFBWFzc2V0C2Rlc2NyaXB0aW9uAgFfCQCWCgQFBmR1Y2tJZAULbGFuZEFzc2V0SWQFAWQFCXNhdmVkVGltZQEQY2xhaW1SZXNJbnRlcm5hbAQEYWRkcgZhbW91bnQJY2xhaW1Nb2RlDWxhbmRBc3NldElkSW4DCQBmAgAABQZhbW91bnQJAAIBAg9OZWdhdGl2ZSBhbW91bnQEAWMJARRjaGVja0NsYWltQ29uZGl0aW9ucwMFBGFkZHIFCWNsYWltTW9kZQUNbGFuZEFzc2V0SWRJbgQIbGFuZFNpemUJAJEDAggFAWMCXzMFC3JlY0xhbmRTaXplBA10ZXJyYWluQ291bnRzCQENY291bnRUZXJyYWlucwEJAJEDAggFAWMCXzMFC3JlY1RlcnJhaW5zBAlkZWx0YVRpbWUJAGUCCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAgFAWMCXzQDCQBmAgAABQlkZWx0YVRpbWUJAAIBCQCsAgIJAKwCAgkArAICAiZTYXZlZCB0aW1lc3RhbXAgaXMgaW4gZnV0dXJlLCBzYXZlZCA9IAkApAMBCAUBYwJfNAIMLCBjdXJyZW50ID0gCQCkAwEIBQlsYXN0QmxvY2sJdGltZXN0YW1wBAZwaWVjZXMJAQ9udW1QaWVjZXNCeVNpemUBBQhsYW5kU2l6ZQQWZGFpbHlQcm9kdWN0aW9uQnlQaWVjZQkBDGFwcGx5Qm9udXNlcwIIBQFjAl8yBQZwaWVjZXMECGF2YWlsUmVzCQBrAwUJZGVsdGFUaW1lCQBoAgUWZGFpbHlQcm9kdWN0aW9uQnlQaWVjZQUGcGllY2VzBQlEQVlNSUxMSVMDCQBmAgUGYW1vdW50BQhhdmFpbFJlcwkAAgEJAKwCAgkArAICCQCsAgICIk5vdCBlbm91Z2ggcmVzb3VyY2VzLCBhdmFpbGFibGUgPSAJAKQDAQUIYXZhaWxSZXMCDiwgcmVxdWVzdGVkID0gCQCkAwEFBmFtb3VudAQMbmV3RGVsdGFUaW1lCQBrAwkAZQIFCGF2YWlsUmVzBQZhbW91bnQFCURBWU1JTExJUwkAaAIFFmRhaWx5UHJvZHVjdGlvbkJ5UGllY2UFBnBpZWNlcwQMbmV3VGltZXN0YW1wCQBlAggFCWxhc3RCbG9jawl0aW1lc3RhbXAFDG5ld0RlbHRhVGltZQQJbGFuZEluZGV4CQBpAgUGcGllY2VzBQVTU0laRQQKcmVzVG9DbGFpbQkBCXZpcnRDbGFpbQQFDXRlcnJhaW5Db3VudHMJAGUCBQlkZWx0YVRpbWUFDG5ld0RlbHRhVGltZQUJbGFuZEluZGV4BRZkYWlseVByb2R1Y3Rpb25CeVBpZWNlBAV3aEtleQkBEmtleVdhcmVob3VzZUJ5TGFuZAEIBQFjAl8yBAppbmZyYUxldmVsCQELdmFsdWVPckVsc2UCCQCfCAEJARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQgFAWMCXzIAAAQJY3VycmVudFdoCQEMZ2V0V2FyZWhvdXNlAwUFd2hLZXkFCWxhbmRJbmRleAUKaW5mcmFMZXZlbAQEbG9mdAkAtQkCCQCRAwIFCWN1cnJlbnRXaAUJd2hJZHhMT0ZUAgFfBAt3aFNwYWNlTGVmdAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFB3ZvbEZyZWUDAwkAAAIFCWNsYWltTW9kZQULY2xhaW1Nb2RlV2gJAGYCBQZhbW91bnQFC3doU3BhY2VMZWZ0BwkAAgEJAKwCAgkArAICAgVPbmx5IAkApAMBBQt3aFNwYWNlTGVmdAIYIHNwYWNlIGxlZnQgaW4gd2FyZWhvdXNlBAVicEtleQkBEWtleUJhY2twYWNrQnlEdWNrAQgFAWMCXzEEC2N1cnJlbnRQYWNrCQELZ2V0QmFja3BhY2sBBQVicEtleQQOY3VycmVudFBhY2tSZXMJALUJAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhSZXMCAV8EDGN1cnJlbnRXaFJlcwkAtQkCCQCRAwIFCWN1cnJlbnRXaAUId2hJZHhSZXMCAV8EDSR0MDM2NjUxMzc1MjIDCQAAAgUJY2xhaW1Nb2RlBQtjbGFpbU1vZGVXaAkAlgoECQEGYWRkUmVzBQUMY3VycmVudFdoUmVzBQ10ZXJyYWluQ291bnRzCQBlAgUJZGVsdGFUaW1lBQxuZXdEZWx0YVRpbWUFCWxhbmRJbmRleAUWZGFpbHlQcm9kdWN0aW9uQnlQaWVjZQkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhSZXMJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbG9mdAULdm9sT2NjdXBpZWQIBQpyZXNUb0NsYWltAl8yCQBlAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFB3ZvbEZyZWUIBQpyZXNUb0NsYWltAl8yAwkAAAIFCWNsYWltTW9kZQUNY2xhaW1Nb2RlRHVjawkAlgoECQCRAwIFCWN1cnJlbnRXaAUId2hJZHhSZXMJAQZhZGRSZXMFBQ5jdXJyZW50UGFja1JlcwUNdGVycmFpbkNvdW50cwkAZQIFCWRlbHRhVGltZQUMbmV3RGVsdGFUaW1lBQlsYW5kSW5kZXgFFmRhaWx5UHJvZHVjdGlvbkJ5UGllY2UJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQt2b2xPY2N1cGllZAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFB3ZvbEZyZWUEBWRpc3RyCQENZGlzdHJpYnV0ZVJlcwQFDGN1cnJlbnRXaFJlcwUOY3VycmVudFBhY2tSZXMFCnJlc1RvQ2xhaW0FC3doU3BhY2VMZWZ0BAR3aEFtCQCXAwEJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFB3ZvbEZyZWUJAMwIAggFCnJlc1RvQ2xhaW0CXzIFA25pbAkAlgoECAUFZGlzdHICXzEIBQVkaXN0cgJfMgkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQt2b2xPY2N1cGllZAUEd2hBbQkAZQIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQd2b2xGcmVlBQR3aEFtBAV3aFJlcwgFDSR0MDM2NjUxMzc1MjICXzEEBWJwUmVzCAUNJHQwMzY2NTEzNzUyMgJfMgQFbG9mdE8IBQ0kdDAzNjY1MTM3NTIyAl8zBAVsb2Z0RggFDSR0MDM2NjUxMzc1MjICXzQJAJcKBQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBCAUBYwJfMgUMbmV3VGltZXN0YW1wCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEia2V5U3Rha2VkVGltZUJ5VHlwZUFzc2V0SWRBbmRPd25lcgMFCkxBTkRQUkVGSVgIBQFjAl8yBQRhZGRyBQxuZXdUaW1lc3RhbXAFA25pbAUFYnBLZXkJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUKYnBJZHhMZXZlbAkAzAgCBQVicFJlcwkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeE1hdAkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QFA25pbAUFd2hLZXkJAMwIAgkAkQMCBQljdXJyZW50V2gFC3doSWR4TGV2ZWxzCQDMCAIFBXdoUmVzCQDMCAIJAJEDAgUJY3VycmVudFdoBQh3aElkeE1hdAkAzAgCCQCRAwIFCWN1cnJlbnRXaAUJd2hJZHhQcm9kCQDMCAIJALkJAgkAzAgCCQCRAwIFBGxvZnQFCXZvbExvY2tlZAkAzAgCCQCkAwEFBWxvZnRPCQDMCAIJAKQDAQUFbG9mdEYJAMwIAgkAkQMCBQRsb2Z0BQh2b2xUb3RhbAUDbmlsAgFfBQNuaWwBCGNsYWltQWxsBARhZGRyC2xhbmRBc3NldElkBnBpZWNlcwljbGFpbU1vZGUEB3RpbWVLZXkJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQULbGFuZEFzc2V0SWQECXNhdmVkVGltZQkBBXZhbHVlAQkAnwgBBQd0aW1lS2V5BAhhdmFpbFJlcwkAaAIJAGsDCQBlAggFCWxhc3RCbG9jawl0aW1lc3RhbXAFCXNhdmVkVGltZQkBDGFwcGx5Qm9udXNlcwIFC2xhbmRBc3NldElkBQZwaWVjZXMFCURBWU1JTExJUwUGcGllY2VzCQEQY2xhaW1SZXNJbnRlcm5hbAQFBGFkZHIFCGF2YWlsUmVzBQljbGFpbU1vZGUFC2xhbmRBc3NldElkAQ11cEluZnJhQ29tbW9uBAxzaG91bGRVc2VNYXQGY2FsbGVyDXBheW1lbnRBbW91bnQLbGFuZEFzc2V0SWQEBGFkZHIJAKUIAQUGY2FsbGVyBAFjCQEUY2hlY2tDbGFpbUNvbmRpdGlvbnMDBQRhZGRyBRNjbGFpbU1vZGVXaFRoZW5EdWNrBQtsYW5kQXNzZXRJZAQGcGllY2VzCQEPbnVtUGllY2VzQnlTaXplAQkAkQMCCAUBYwJfMwULcmVjTGFuZFNpemUECGluZnJhS2V5CQEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEIBQFjAl8yBAhjdXJMZXZlbAkBC3ZhbHVlT3JFbHNlAgkAnwgBBQhpbmZyYUtleQAAAwMJAQEhAQUYS1NfQUxMT1dfQklHX0lORlJBX01FUkdFCQBnAgUIY3VyTGV2ZWwAAwcJAAIBAiZDdXJyZW50bHkgbWF4IGluZnJhc3RydWN0dXJlIGxldmVsID0gMwQIbWF4SW5mcmEJAGQCCQBpAgkBBHNxcnQEBQZwaWVjZXMAAAAABQRET1dOAAUAAgQIbmV3TGV2ZWwJAGQCBQhjdXJMZXZlbAABAwMFGEtTX0FMTE9XX0JJR19JTkZSQV9NRVJHRQkAZgIFCG5ld0xldmVsBQhtYXhJbmZyYQcJAAIBCQCsAgICJUN1cnJlbnRseSBtYXggaW5mcmFzdHJ1Y3R1cmUgbGV2ZWwgPSAJAKQDAQUIbWF4SW5mcmEEBGNvc3QJAGsDBRVJbmZyYVVwZ3JhZGVDb3N0U1VzZHQJAGgCBQZwaWVjZXMFCG5ld0xldmVsBQVTU0laRQMDCQEBIQEFDHNob3VsZFVzZU1hdAkBAiE9AgUNcGF5bWVudEFtb3VudAUEY29zdAcJAAIBCQCsAgICG1BheW1lbnQgYXR0YWNoZWQgc2hvdWxkIGJlIAkApAMBBQRjb3N0BAVicEtleQkBEWtleUJhY2twYWNrQnlEdWNrAQgFAWMCXzEEC2N1cnJlbnRQYWNrCQELZ2V0QmFja3BhY2sBBQVicEtleQQFbUxpc3QJALUJAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhNYXQCAV8EB21hdFVzZWQJAGsDBRFJbmZyYVVwZ3JhZGVDb3N0UwkAaAIFBnBpZWNlcwUIbmV3TGV2ZWwFBVNTSVpFBAZuZXdNYXQJALkJAgkBEXN1YnRyYWN0TWF0ZXJpYWxzAwUMc2hvdWxkVXNlTWF0BQVtTGlzdAUHbWF0VXNlZAIBXwQLY2xhaW1SZXN1bHQJAQhjbGFpbUFsbAQFBGFkZHIIBQFjAl8yBQZwaWVjZXMFE2NsYWltTW9kZVdoVGhlbkR1Y2sEBndoRGF0YQgFC2NsYWltUmVzdWx0Al81BAZvbGRWb2wJARdnZXRXYXJlaG91c2VUb3RhbFZvbHVtZQEJAJEDAgUGd2hEYXRhBQt3aElkeExldmVscwQKbmV3Vm9sRGF0YQkAuQkCCQDMCAIJAJEDAgkAtQkCCQCRAwIFBndoRGF0YQULd2hJZHhMZXZlbHMCAV8AAAkAzAgCCQCkAwEFCG5ld0xldmVsBQNuaWwCAV8EBm5ld1ZvbAkBF2dldFdhcmVob3VzZVRvdGFsVm9sdW1lAQUKbmV3Vm9sRGF0YQQEbG9mdAkAtQkCCQCRAwIFBndoRGF0YQUJd2hJZHhMT0ZUAgFfBApuZXdMb2Z0U3RyCQC5CQIJAMwIAgkAkQMCBQRsb2Z0BQl2b2xMb2NrZWQJAMwIAgkAkQMCBQRsb2Z0BQt2b2xPY2N1cGllZAkAzAgCCQCkAwEJAGUCCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFB3ZvbEZyZWUFBm5ld1ZvbAUGb2xkVm9sCQDMCAIJAKQDAQUGbmV3Vm9sBQNuaWwCAV8JAJUKAwkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQhpbmZyYUtleQUIbmV3TGV2ZWwJAMwIAgkBDEludGVnZXJFbnRyeQIJAR5rZXlJbmZyYUxldmVsQnlBc3NldElkQW5kT3duZXICCAUBYwJfMgUEYWRkcgUIbmV3TGV2ZWwJAMwIAgkBC1N0cmluZ0VudHJ5AgUFYnBLZXkJALkJAgkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQpicElkeExldmVsCQDMCAIJAJEDAggFC2NsYWltUmVzdWx0Al8zBQhicElkeFJlcwkAzAgCBQZuZXdNYXQJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kBQNuaWwCAToJAMwIAgkBC1N0cmluZ0VudHJ5AggFC2NsYWltUmVzdWx0Al80CQC5CQIJAMwIAgUKbmV3Vm9sRGF0YQkAzAgCCQCRAwIFBndoRGF0YQUId2hJZHhSZXMJAMwIAgkAkQMCBQZ3aERhdGEFCHdoSWR4TWF0CQDMCAIJAJEDAgUGd2hEYXRhBQl3aElkeFByb2QJAMwIAgUKbmV3TG9mdFN0cgUDbmlsAgE6BQNuaWwIBQtjbGFpbVJlc3VsdAJfMQUIbmV3TGV2ZWwFB21hdFVzZWQBF3VwZGF0ZUR1Y2tTdGF0c0ludGVybmFsAgtkdWNrQXNzZXRJZAdkZWx0YVhQBAZsdmxLZXkJAQxrZXlEdWNrTGV2ZWwBBQtkdWNrQXNzZXRJZAQFeHBLZXkJAQlrZXlEdWNrWFABBQtkdWNrQXNzZXRJZAQCeHAJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUFeHBLZXkAAAQFbmV3WFAJAGQCBQJ4cAUHZGVsdGFYUAQJbHZsUG9pbnRzCQEHbGV2ZWxVcAIJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUGbHZsS2V5AAAFBW5ld1hQBAlrZXlQb2ludHMJARFrZXlEdWNrRnJlZVBvaW50cwEFC2R1Y2tBc3NldElkCQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIFBmx2bEtleQkAkQMCBQlsdmxQb2ludHMAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgUFeHBLZXkFBW5ld1hQCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlrZXlQb2ludHMJAGQCCQELdmFsdWVPckVsc2UCCQCfCAEFCWtleVBvaW50cwAACQCRAwIFCWx2bFBvaW50cwABBQNuaWwFBW5ld1hQARZ1cGRhdGVBY2NTdGF0c0ludGVybmFsAgRhZGRyB2RlbHRhWFAEBmx2bEtleQkBDGtleVVzZXJMZXZlbAEFBGFkZHIEBXhwS2V5CQEJa2V5VXNlclhQAQUEYWRkcgQCeHAJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUFeHBLZXkAAAQFbmV3WFAJAGQCBQJ4cAUHZGVsdGFYUAQJbHZsUG9pbnRzCQEHbGV2ZWxVcAIJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUGbHZsS2V5AAAFBW5ld1hQBAlrZXlQb2ludHMJARFrZXlVc2VyRnJlZVBvaW50cwEFBGFkZHIJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUGbHZsS2V5CQCRAwIFCWx2bFBvaW50cwAACQDMCAIJAQxJbnRlZ2VyRW50cnkCBQV4cEtleQUFbmV3WFAJAMwIAgkBDEludGVnZXJFbnRyeQIFCWtleVBvaW50cwkAZAIJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJa2V5UG9pbnRzAAAJAJEDAgUJbHZsUG9pbnRzAAEFA25pbAUFbmV3WFABEmFjdGl2YXRlT25ib2FyZEFydAEEYWRkcgQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQRhZGRyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkBAhyZWZCeUtleQkBD2tleUFkZHJlc3NSZWZCeQEFBGFkZHIEBXJlZkJ5CQCiCAEFCHJlZkJ5S2V5AwkBASEBCQEJaXNEZWZpbmVkAQUFcmVmQnkJAAIBAilZb3UgYXJlIG5vdCBlbGlnaWJsZSBmb3IgT05CT0FSRCBhcnRpZmFjdAQGYXJ0S2V5CQEca2V5T25ib2FyZEFydER1Y2tBY3RpdmF0ZWRCeQEFBGFkZHIEB2FydER1Y2sJAKIIAQUGYXJ0S2V5AwkBCWlzRGVmaW5lZAEFB2FydER1Y2sJAAIBCQCsAgICL1lvdSBhbHJlYWR5IHVzZWQgeW91ciBPTkJPQVJEIGFydGlmYWN0IG9uIGR1Y2sgCQEFdmFsdWUBBQdhcnREdWNrBBBkdWNrQWN0aXZhdG9yS2V5CQEca2V5T25ib2FyZEFydEFjdGl2YXRlZE9uRHVjawEFC2R1Y2tBc3NldElkBA1kdWNrQWN0aXZhdG9yCQCiCAEFEGR1Y2tBY3RpdmF0b3JLZXkDCQEJaXNEZWZpbmVkAQUNZHVja0FjdGl2YXRvcgkAAgEJAKwCAgkArAICCQCsAgICCVRoZSBkdWNrIAULZHVja0Fzc2V0SWQCNCBhbHJlYWR5IGdvdCBwb2ludHMgZnJvbSBPTkJPQVJEIGFydGlmYWN0IGZyb20gdXNlciAJAQV2YWx1ZQEFDWR1Y2tBY3RpdmF0b3IJAM4IAgkAzAgCCQELU3RyaW5nRW50cnkCBQZhcnRLZXkFC2R1Y2tBc3NldElkCQDMCAIJAQtTdHJpbmdFbnRyeQIFEGR1Y2tBY3RpdmF0b3JLZXkFBGFkZHIFA25pbAgJARd1cGRhdGVEdWNrU3RhdHNJbnRlcm5hbAIFC2R1Y2tBc3NldElkBQl4cE9uYm9hcmQCXzEBEmFjdGl2YXRlUHJlc2FsZUFydAIEYWRkcg1sYW5kQXNzZXRJZEluBAFjCQEUY2hlY2tDbGFpbUNvbmRpdGlvbnMDBQRhZGRyBRNjbGFpbU1vZGVXaFRoZW5EdWNrBQ1sYW5kQXNzZXRJZEluBAtsYW5kQXNzZXRJZAgFAWMCXzIEBnBpZWNlcwkBD251bVBpZWNlc0J5U2l6ZQEJAJEDAggFAWMCXzMFC3JlY0xhbmRTaXplBA1hY3RpdmF0aW9uS2V5CQEga2V5TGFuZEFydFN0YXR1c0J5VHlwZUFuZEFzc2V0SWQCBQpBUlRQUkVTQUxFBQtsYW5kQXNzZXRJZAMJAGYCCQELdmFsdWVPckVsc2UCCQCfCAEFDWFjdGl2YXRpb25LZXkAAAAACQACAQIlUHJlc2FsZSBhcnRpZmFjdCBpcyBhbHJlYWR5IGFjdGl2YXRlZAMJAGYCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAggFAWMCXzMFCnJlY0xhbmROdW0FD1BSRVNBTEVOVU1MQU5EUwkAAgEJAKwCAgkArAICCQCsAgIFCkxBTkRQUkVGSVgCASAFC2xhbmRBc3NldElkAiUgaXMgbm90IGVsaWdpYmxlIGZvciBwcmVzYWxlIGFydGlmYWN0BAtjbGFpbVJlc3VsdAkBCGNsYWltQWxsBAUEYWRkcgULbGFuZEFzc2V0SWQFBnBpZWNlcwUTY2xhaW1Nb2RlV2hUaGVuRHVjawkAzQgCCQDNCAIJAM0IAggFC2NsYWltUmVzdWx0Al8xCQEMSW50ZWdlckVudHJ5AgUNYWN0aXZhdGlvbktleQUGcGllY2VzCQELU3RyaW5nRW50cnkCCAULY2xhaW1SZXN1bHQCXzIJALkJAggFC2NsYWltUmVzdWx0Al8zAgE6CQELU3RyaW5nRW50cnkCCAULY2xhaW1SZXN1bHQCXzQJALkJAggFC2NsYWltUmVzdWx0Al81AgE6AQ9jaGVja1RvdXJuYW1lbnQBC2R1Y2tBc3NldElkBAZsYXN0SWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUSdG91cm5hbWVudENvbnRyYWN0BQ1sYXN0VG91cklkS2V5AAAEC2N1ckxvY2F0aW9uCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAKIIAQkBD2tleUR1Y2tMb2NhdGlvbgEFC2R1Y2tBc3NldElkBQ9ERUZBVUxUTE9DQVRJT04CAV8EA25vdwgFCWxhc3RCbG9jawl0aW1lc3RhbXAEBXREYXRhCQELZ2V0VG91ckRhdGECBRJ0b3VybmFtZW50Q29udHJhY3QFBmxhc3RJZAQGc3RhdGljCQCRAwIFBXREYXRhBQlpZHhTdGF0aWMEB2R5bmFtaWMJAJEDAgUFdERhdGEFCmlkeER5bmFtaWMDCQECIT0CCQCRAwIFC2N1ckxvY2F0aW9uBQpsb2NJZHhUeXBlAgFUBwMDAwkAAAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQtjdXJMb2NhdGlvbgUPbG9jSWR4Q29udGluZW50BQZsYXN0SWQJAAACCQCRAwIFB2R5bmFtaWMFDnREeW5hbWljU3RhdHVzAgpJTlBST0dSRVNTBwkAZgIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQZzdGF0aWMFCnRTdGF0aWNFbmQFA25vdwcJAAIBAipZb3VyIGR1Y2sgaXMgdGFraW5nIHBhcnQgaW4gdGhlIHRvdXJuYW1lbnQJAQlhc0Jvb2xlYW4BCQD8BwQFBHRoaXMCFmV4aXRUb3VybmFtZW50SW50ZXJuYWwJAMwIAgULZHVja0Fzc2V0SWQFA25pbAUDbmlsAQ1jaGVja0RlbGl2ZXJ5AQtkdWNrQXNzZXRJZAMJAQEhAQURS1NfQUxMT1dfREVMSVZFUlkHBAtjdXJMb2NhdGlvbgkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAUPREVGQVVMVExPQ0FUSU9OAgFfBANub3cIBQlsYXN0QmxvY2sJdGltZXN0YW1wAwkBAiE9AgkAkQMCBQtjdXJMb2NhdGlvbgUKbG9jSWR4VHlwZQIBRAcECXN0YXJ0VGltZQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFC2N1ckxvY2F0aW9uBQ9sb2NJZHhDb250aW5lbnQECGRpc3RhbmNlCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgULY3VyTG9jYXRpb24FCGxvY0lkeElkAwMJAGYCBQNub3cJAGQCBQlzdGFydFRpbWUFElRFTl9NSU5VVEVTX01JTExJUwkAZgIAAwUIZGlzdGFuY2UHCQACAQIgWW91ciBkdWNrIGlzIG9uIGRlbGl2ZXJ5IG1pc3Npb24JAQlhc0Jvb2xlYW4BCQD8BwQFBHRoaXMCFGV4aXREZWxpdmVyeUludGVybmFsCQDMCAIFC2R1Y2tBc3NldElkBQNuaWwFA25pbAESZXhpdERlbGl2ZXJ5Q29tbW9uBAtkdWNrQXNzZXRJZAVjaGVjawVuZXdIUAVzY29yZQQLY3VyTG9jYXRpb24JALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBCQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQFD0RFRkFVTFRMT0NBVElPTgIBXwQDbm93CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQJc3RhcnRUaW1lCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgULY3VyTG9jYXRpb24FD2xvY0lkeENvbnRpbmVudAQIZGlzdGFuY2UJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQtjdXJMb2NhdGlvbgUIbG9jSWR4SWQEBW93bmVyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBEGtleUR1Y2tJZFRvT3duZXIBBQtkdWNrQXNzZXRJZAIUTkZUIGR1Y2sgaXMgb3JwaGFuZWQECWhlYWx0aEtleQkBDWtleUR1Y2tIZWFsdGgBBQtkdWNrQXNzZXRJZAQJY3VySGVhbHRoCQERQGV4dHJOYXRpdmUoMTA1NSkBBQloZWFsdGhLZXkEDm91dGNvbWVBY3Rpb25zAwMJAGcCBQhkaXN0YW5jZQADBgMDBQVjaGVjawkAZwIFBXNjb3JlAAMHCQBmAgUFbmV3SFAAAAcEBnJld2FyZAkA/AcEBQ9lY29ub215Q29udHJhY3QCEnNlbmREZWxpdmVyeVJld2FyZAkAzAgCBQVvd25lcgUDbmlsBQNuaWwDCQAAAgUGcmV3YXJkBQZyZXdhcmQECGNvdW50S2V5CQEUa2V5VXNlckRlbGl2ZXJ5Q291bnQBBQVvd25lcgkAzAgCCQEMSW50ZWdlckVudHJ5AgUIY291bnRLZXkJAGQCCQELdmFsdWVPckVsc2UCCQCfCAEFCGNvdW50S2V5AAAAAQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBFmtleVVzZXJMYXN0RGVsaXZlcnlEYXkBBQVvd25lcgkAaQIFCXN0YXJ0VGltZQUJREFZTUlMTElTBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4DAwMFBWNoZWNrCQBmAgUFbmV3SFAAAAcJAGYCCQBkAgUJc3RhcnRUaW1lBRJURU5fTUlOVVRFU19NSUxMSVMFA25vdwcJAAIBAiZZb3VyIGR1Y2sgaXMgc3RpbGwgb24gZGVsaXZlcnkgbWlzc2lvbgQLbG9ja2VkVG90YWwJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPZWNvbm9teUNvbnRyYWN0BRFkZWxpdmVyeUxvY2tlZEtleQAABAZ1bmxvY2sJAPwHBAUPZWNvbm9teUNvbnRyYWN0AhR1cGRhdGVEZWxpdmVyeUxvY2tlZAkAzAgCCQBlAgULbG9ja2VkVG90YWwFFU1JTl9VU0RUX0ZFRV9ERUxJVkVSWQUDbmlsBQNuaWwDCQAAAgUGdW5sb2NrBQZ1bmxvY2sDAwMFBWNoZWNrCQBnAgAABQVuZXdIUAcGCQBnAgAABQljdXJIZWFsdGgFA25pbAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBFmtleURlbGl2ZXJ5RGVsYXlCeUR1Y2sBBQtkdWNrQXNzZXRJZAkAZAIFCXN0YXJ0VGltZQUTREVMSVZFUllfUFVOSVNITUVOVAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBAtzYXZlZEhlYWx0aAkBEUBleHRyTmF0aXZlKDEwNTUpAQkBDmtleVNhdmVkSGVhbHRoAQULZHVja0Fzc2V0SWQEDXNhdmVkTG9jYXRpb24JARFAZXh0ck5hdGl2ZSgxMDU4KQEJARBrZXlTYXZlZExvY2F0aW9uAQULZHVja0Fzc2V0SWQJAJYKBAUOb3V0Y29tZUFjdGlvbnMJAMwIAgkBDEludGVnZXJFbnRyeQIFCWhlYWx0aEtleQULc2F2ZWRIZWFsdGgJAMwIAgkBC1N0cmluZ0VudHJ5AgkBD2tleUR1Y2tMb2NhdGlvbgEFC2R1Y2tBc3NldElkBQ1zYXZlZExvY2F0aW9uBQNuaWwFDXNhdmVkTG9jYXRpb24FC3NhdmVkSGVhbHRoAQ1tZXJnZUludGVybmFsBgtuZXdMYW5kU2l6ZQhuZXdMZXZlbAdmb3JtdWxhBGFkZHIMbGFuZEFzc2V0SWRzB25lZWRNYXQEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUEYWRkcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAMJAQ9jaGVja1RvdXJuYW1lbnQBBQtkdWNrQXNzZXRJZAkAAgECHW1lcmdlSW50ZXJuYWxfY2hlY2tUb3VybmFtZW50AwkBDWNoZWNrRGVsaXZlcnkBBQtkdWNrQXNzZXRJZAkAAgECG21lcmdlSW50ZXJuYWxfY2hlY2tEZWxpdmVyeQoBCmNoZWNrTWVyZ2UCA2FjYwtsYW5kQXNzZXRJZAQFYXNzZXQJAQV2YWx1ZQEJAOwHAQkA2QQBBQtsYW5kQXNzZXRJZAQHdGltZUtleQkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAQJc2F2ZWRUaW1lCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ8IAQUHdGltZUtleQkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAg4gaXMgbm90IHN0YWtlZAQFb3duZXIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEVa2V5TGFuZEFzc2V0SWRUb093bmVyAQULbGFuZEFzc2V0SWQJAKwCAgkArAICAgRORlQgCAUFYXNzZXQEbmFtZQIMIGlzIG9ycGhhbmVkAwkBAiE9AgUFb3duZXIFBGFkZHIJAAIBCQCsAgIFCkxBTkRQUkVGSVgCDSBpcyBub3QgeW91cnMEAWQJALUJAggFBWFzc2V0C2Rlc2NyaXB0aW9uAgFfBAljb250aW5lbnQJAJEDAgUBZAUMcmVjQ29udGluZW50AwMJAQIhPQIIBQNhY2MCXzMCAAkBAiE9AggFA2FjYwJfMwUJY29udGluZW50BwkAAgECLkxhbmRzIHNob3VsZCBiZSBvbiB0aGUgc2FtZSBjb250aW5lbnQgdG8gbWVyZ2UECGxhbmRTaXplCQCRAwIFAWQFC3JlY0xhbmRTaXplBAdzaXplc0luCAUDYWNjAl8xBAFpCQETdmFsdWVPckVycm9yTWVzc2FnZQIJALMJAgUHc2l6ZXNJbgUIbGFuZFNpemUCJ1lvdSBoYXZlbid0IHBhc3NlZCBhbGwgdGhlIGxhbmRzIG5lZWRlZAQIc2l6ZXNPdXQJAKwCAgkArwICBQdzaXplc0luBQFpCQCwAgIFB3NpemVzSW4JAGQCBQFpAAEEBnBpZWNlcwkBD251bVBpZWNlc0J5U2l6ZQEFCGxhbmRTaXplBARhcnRzCQBkAggFA2FjYwJfMgkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEga2V5TGFuZEFydFN0YXR1c0J5VHlwZUFuZEFzc2V0SWQCBQpBUlRQUkVTQUxFBQtsYW5kQXNzZXRJZAAABAppbmZyYUxldmVsCQELdmFsdWVPckVsc2UCCQCfCAEJARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQULbGFuZEFzc2V0SWQAAAQIcmVxTGV2ZWwEByRtYXRjaDAFCGxhbmRTaXplAwkAAAICAVMFByRtYXRjaDAAAwMJAAACAgFNBQckbWF0Y2gwAAQDCQAAAgIBTAUHJG1hdGNoMAAFAwkAAAICAlhMBQckbWF0Y2gwAAYJAAIBAhpPbmx5IFMsIE0sIEwsIFhMIGNhbiBtZXJnZQMJAQIhPQIFCmluZnJhTGV2ZWwFCHJlcUxldmVsCQACAQIiQWxsIGxhbmRzIHNob3VsZCBiZSBtYXhlZCB0byBtZXJnZQQHbGFuZE51bQkAkQMCBQFkBQpyZWNMYW5kTnVtBA10ZXJyYWluQ291bnRzCQENY291bnRUZXJyYWlucwEJAJEDAgUBZAULcmVjVGVycmFpbnMECWRlbHRhVGltZQkAZQIIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQlzYXZlZFRpbWUDCQBmAgAABQlkZWx0YVRpbWUJAAIBCQCsAgIJAKwCAgkArAICAiZTYXZlZCB0aW1lc3RhbXAgaXMgaW4gZnV0dXJlLCBzYXZlZCA9IAkApAMBBQlzYXZlZFRpbWUCDCwgY3VycmVudCA9IAkApAMBCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQWZGFpbHlQcm9kdWN0aW9uQnlQaWVjZQkBDGFwcGx5Qm9udXNlcwIFC2xhbmRBc3NldElkBQZwaWVjZXMECWxhbmRJbmRleAkAaQIFBnBpZWNlcwUFU1NJWkUEBWJwUmVzCQEGYWRkUmVzBQkAtQkCCAUDYWNjAl80AgFfBQ10ZXJyYWluQ291bnRzBQlkZWx0YVRpbWUFCWxhbmRJbmRleAUWZGFpbHlQcm9kdWN0aW9uQnlQaWVjZQQFcHJvcHMJARl1cGRhdGVQcm9wb3J0aW9uc0ludGVybmFsBAgFA2FjYwJfNgUNdGVycmFpbkNvdW50cwUJbGFuZEluZGV4AP///////////wEEBmNQcm9wcwkBGXVwZGF0ZVByb3BvcnRpb25zSW50ZXJuYWwECAUDYWNjA18xMAUNdGVycmFpbkNvdW50cwUJbGFuZEluZGV4AP///////////wEEC3N1bVRlcnJhaW5zCQEZdXBkYXRlUHJvcG9ydGlvbnNJbnRlcm5hbAQIBQNhY2MCXzkFDXRlcnJhaW5Db3VudHMFCWxhbmRJbmRleAABBAVsYW5kcwgFA2FjYwJfNwQDaWR4CQDPCAIFBWxhbmRzBQtsYW5kQXNzZXRJZAMJAQEhAQkBCWlzRGVmaW5lZAEFA2lkeAkAAgEJAKwCAgIgWW91ciBzdGFrZWQgbGFuZHMgZG9uJ3QgY29udGFpbiAFC2xhbmRBc3NldElkBAljdXN0b21LZXkJARprZXlMYW5kQXNzZXRJZFRvQ3VzdG9tTmFtZQEFC2xhbmRBc3NldElkBApjdXN0b21OYW1lCQELdmFsdWVPckVsc2UCCQCiCAEFCWN1c3RvbUtleQIACQCcCgoFCHNpemVzT3V0BQRhcnRzBQljb250aW5lbnQFBWJwUmVzCQDOCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCAUDYWNjAl81CQELRGVsZXRlRW50cnkBCQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFC2xhbmRBc3NldElkCQELRGVsZXRlRW50cnkBCQEia2V5U3Rha2VkVGltZUJ5VHlwZUFzc2V0SWRBbmRPd25lcgMFCkxBTkRQUkVGSVgFC2xhbmRBc3NldElkBQRhZGRyCQELRGVsZXRlRW50cnkBCQEQa2V5TGFuZFRvQXNzZXRJZAEFB2xhbmROdW0JAQtEZWxldGVFbnRyeQEJARVrZXlMYW5kQXNzZXRJZFRvT3duZXIBBQtsYW5kQXNzZXRJZAkBC0RlbGV0ZUVudHJ5AQkBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAkBC0RlbGV0ZUVudHJ5AQkBHmtleUluZnJhTGV2ZWxCeUFzc2V0SWRBbmRPd25lcgIFC2xhbmRBc3NldElkBQRhZGRyCQELRGVsZXRlRW50cnkBCQEga2V5TGFuZEFydFN0YXR1c0J5VHlwZUFuZEFzc2V0SWQCBQpBUlRQUkVTQUxFBQtsYW5kQXNzZXRJZAkBC0RlbGV0ZUVudHJ5AQkBEWtleUxhbmROdW1Ub093bmVyAQUHbGFuZE51bQkBC0RlbGV0ZUVudHJ5AQkBEmtleVdhcmVob3VzZUJ5TGFuZAEFC2xhbmRBc3NldElkCQELRGVsZXRlRW50cnkBBQljdXN0b21LZXkJAQRCdXJuAgkA2QQBBQtsYW5kQXNzZXRJZAABAwkBAiE9AgUKY3VzdG9tTmFtZQIACQDMCAIJAQtEZWxldGVFbnRyeQEJARprZXlMYW5kQ3VzdG9tTmFtZVRvQXNzZXRJZAEFCmN1c3RvbU5hbWUFA25pbAUDbmlsBQVwcm9wcwkA0QgCBQVsYW5kcwkBBXZhbHVlAQUDaWR4CQBkAggFA2FjYwJfOAUGcGllY2VzBQtzdW1UZXJyYWlucwUGY1Byb3BzBAVicEtleQkBEWtleUJhY2twYWNrQnlEdWNrAQULZHVja0Fzc2V0SWQEC2N1cnJlbnRQYWNrCQELZ2V0QmFja3BhY2sBBQVicEtleQQIcHJvcExpc3QJALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBCQERa2V5UmVzUHJvcG9ydGlvbnMAAgswXzBfMF8wXzBfMAIBXwQIbGFuZHNLZXkJARVrZXlTdGFrZWRMYW5kc0J5T3duZXIBBQRhZGRyBAhsYW5kc1N0cgkAoggBBQhsYW5kc0tleQQHbGFuZHNJbgMJAQlpc0RlZmluZWQBBQhsYW5kc1N0cgkAvQkCCQEFdmFsdWUBBQhsYW5kc1N0cgIBXwUDbmlsBAVjb250MAkAkQMCCQC1CQIICQEFdmFsdWUBCQDsBwEJANkEAQkAkQMCBQxsYW5kQXNzZXRJZHMAAAtkZXNjcmlwdGlvbgIBXwUMcmVjQ29udGluZW50BAljb250UHJvcHMJALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBCQEWa2V5UmVzVHlwZXNCeUNvbnRpbmVudAEFBWNvbnQwAgswXzBfMF8wXzBfMAIBXwQBcgoAAiRsBQxsYW5kQXNzZXRJZHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCcCgoFB2Zvcm11bGEAAAIACQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeFJlcwUDbmlsBQhwcm9wTGlzdAUHbGFuZHNJbgAACQC1CQICCzBfMF8wXzBfMF8wAgFfBQljb250UHJvcHMKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBCmNoZWNrTWVyZ2UCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDUJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFBAljb250aW5lbnQIBQFyAl8zBAxjb250aW5lbnRJZHgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAzwgCBQpjb250aW5lbnRzBQljb250aW5lbnQJAKwCAgITVW5rbm93biBjb250aW5lbnQ6IAUJY29udGluZW50BAh0ZXJyYWlucwkBE2dlblRlcnJhaW5zRm9yTWVyZ2UCCAUBcgJfOQkAaQIJAQ9udW1QaWVjZXNCeVNpemUBBQtuZXdMYW5kU2l6ZQUFU1NJWkUEB2ZyZWVOdW0JAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBEmtleU5leHRGcmVlTGFuZE51bQAJAGQCBQ9QUkVTQUxFTlVNTEFORFMAAQQKbmV3TGFuZE51bQkApAMBBQdmcmVlTnVtBAVpc3N1ZQkAwggFCQEHbmZ0TmFtZQIFCm5ld0xhbmROdW0FC25ld0xhbmRTaXplCQC5CQIJAMwIAgUKbmV3TGFuZE51bQkAzAgCBQtuZXdMYW5kU2l6ZQkAzAgCBQh0ZXJyYWlucwkAzAgCBQljb250aW5lbnQFA25pbAIBXwABAAAHBAdhc3NldElkCQC4CAEFBWlzc3VlBA5uZXdMYW5kQXNzZXRJZAkA2AQBBQdhc3NldElkBAZuZXdNYXQJALkJAgkBEXN1YnRyYWN0TWF0ZXJpYWxzAwkAZgIFB25lZWRNYXQAAAkAtQkCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeE1hdAIBXwUHbmVlZE1hdAIBXwQJcGllY2VzS2V5CQEWa2V5U3Rha2VkUGllY2VzQnlPd25lcgEFBGFkZHIEDHN0YWtlZFBpZWNlcwkBC3ZhbHVlT3JFbHNlAgkAnwgBBQlwaWVjZXNLZXkAAAkAlAoCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCAUBcgJfNQMJAGYCCQCQAwEIBQFyAl83AAAJAQtTdHJpbmdFbnRyeQIFCGxhbmRzS2V5CQC7CQIIBQFyAl83AgFfCQELRGVsZXRlRW50cnkBBQhsYW5kc0tleQkBDEludGVnZXJFbnRyeQIFCXBpZWNlc0tleQMJAGYCCAUBcgJfOAUMc3Rha2VkUGllY2VzAAAJAGUCBQxzdGFrZWRQaWVjZXMIBQFyAl84CQEMSW50ZWdlckVudHJ5AgkBEmtleU5leHRGcmVlTGFuZE51bQAJAGQCBQdmcmVlTnVtAAEFBWlzc3VlCQELU3RyaW5nRW50cnkCCQEQa2V5TGFuZFRvQXNzZXRJZAEFCm5ld0xhbmROdW0FDm5ld0xhbmRBc3NldElkCQELU3RyaW5nRW50cnkCCQEVa2V5TGFuZEFzc2V0SWRUb093bmVyAQUObmV3TGFuZEFzc2V0SWQFBGFkZHIJAQtTdHJpbmdFbnRyeQIJARFrZXlMYW5kTnVtVG9Pd25lcgEFCm5ld0xhbmROdW0FBGFkZHIJAQxJbnRlZ2VyRW50cnkCCQEga2V5TGFuZEFydFN0YXR1c0J5VHlwZUFuZEFzc2V0SWQCBQpBUlRQUkVTQUxFBQ5uZXdMYW5kQXNzZXRJZAgFAXICXzIJAQxJbnRlZ2VyRW50cnkCCQEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEFDm5ld0xhbmRBc3NldElkBQhuZXdMZXZlbAkBDEludGVnZXJFbnRyeQIJAR5rZXlJbmZyYUxldmVsQnlBc3NldElkQW5kT3duZXICBQ5uZXdMYW5kQXNzZXRJZAUEYWRkcgUIbmV3TGV2ZWwJAQtTdHJpbmdFbnRyeQIFBWJwS2V5CQC5CQIJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUKYnBJZHhMZXZlbAkAzAgCCAUBcgJfNAkAzAgCBQZuZXdNYXQJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kBQNuaWwCAToJAQtTdHJpbmdFbnRyeQIJARFrZXlSZXNQcm9wb3J0aW9ucwAJALkJAggFAXICXzYCAV8JAQtTdHJpbmdFbnRyeQIJARZrZXlSZXNUeXBlc0J5Q29udGluZW50AQUJY29udGluZW50CQC5CQIIBQFyA18xMAIBXwkBC1N0cmluZ0VudHJ5AgkBD2tleUR1Y2tMb2NhdGlvbgEFC2R1Y2tBc3NldElkCQC5CQIJAMwIAgUJY29udGluZW50CQDMCAICAUwJAMwIAgUObmV3TGFuZEFzc2V0SWQFA25pbAIBXwkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQUEYWRkcgABBQdhc3NldElkBQ5uZXdMYW5kQXNzZXRJZAEDczJtAgRhZGRyDGxhbmRBc3NldElkcwkBDW1lcmdlSW50ZXJuYWwGAgFNAAMCBFNTU1MFBGFkZHIFDGxhbmRBc3NldElkcwAAAQNtMmwCBGFkZHIMbGFuZEFzc2V0SWRzCQENbWVyZ2VJbnRlcm5hbAYCAUwABAIDU01NBQRhZGRyBQxsYW5kQXNzZXRJZHMJAGgCBRFJbmZyYVVwZ3JhZGVDb3N0UwAEAQRsMnhsAgRhZGRyDGxhbmRBc3NldElkcwkBDW1lcmdlSW50ZXJuYWwGAgJYTAAFAgVTU1NNTAUEYWRkcgUMbGFuZEFzc2V0SWRzCQBoAgURSW5mcmFVcGdyYWRlQ29zdFMALwEGeGwyeHhsAgRhZGRyDGxhbmRBc3NldElkcwkBDW1lcmdlSW50ZXJuYWwGAgNYWEwABgIDTFhMBQRhZGRyBQxsYW5kQXNzZXRJZHMJAGgCBRFJbmZyYVVwZ3JhZGVDb3N0UwA2AQttZXJnZUNvbW1vbgIEYWRkcgxsYW5kQXNzZXRJZHMEByRtYXRjaDAJAJADAQUMbGFuZEFzc2V0SWRzAwkAAAIABAUHJG1hdGNoMAkBA3MybQIFBGFkZHIFDGxhbmRBc3NldElkcwMJAAACAAMFByRtYXRjaDAJAQNtMmwCBQRhZGRyBQxsYW5kQXNzZXRJZHMDCQAAAgAFBQckbWF0Y2gwCQEEbDJ4bAIFBGFkZHIFDGxhbmRBc3NldElkcwMJAAACAAIFByRtYXRjaDAJAQZ4bDJ4eGwCBQRhZGRyBQxsYW5kQXNzZXRJZHMJAAIBAg1Vbmtub3duIG1lcmdlARVjaGVja091dGRhdGVkRGVsaXZlcnkBCHVzZXJBZGRyBARkdWNrCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFCHVzZXJBZGRyAwMFEUtTX0FMTE9XX0RFTElWRVJZCQEJaXNEZWZpbmVkAQUEZHVjawcEC2R1Y2tBc3NldElkCQEFdmFsdWUBBQRkdWNrBAZsb2NLZXkJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAQDbG9jCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAKIIAQUGbG9jS2V5BQ9ERUZBVUxUTE9DQVRJT04CAV8ECXN0YXJ0VGltZQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA2xvYwUPbG9jSWR4Q29udGluZW50AwMJAQIhPQIJAJEDAgUDbG9jBQpsb2NJZHhUeXBlAgFEBgkAZgIIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQBkAgUJc3RhcnRUaW1lBRJURU5fTUlOVVRFU19NSUxMSVMFA25pbAQJaGVhbHRoS2V5CQENa2V5RHVja0hlYWx0aAEFC2R1Y2tBc3NldElkAwkAZwIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNsb2MFCGxvY0lkeElkAAMEBnJld2FyZAkA/AcEBQ9lY29ub215Q29udHJhY3QCEnNlbmREZWxpdmVyeVJld2FyZAkAzAgCBQh1c2VyQWRkcgUDbmlsBQNuaWwDCQAAAgUGcmV3YXJkBQZyZXdhcmQFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAzQgCCQDNCAIEC2xvY2tlZFRvdGFsCQELdmFsdWVPckVsc2UCCQCaCAIFD2Vjb25vbXlDb250cmFjdAURZGVsaXZlcnlMb2NrZWRLZXkAAAQGdW5sb2NrCQD8BwQFD2Vjb25vbXlDb250cmFjdAIUdXBkYXRlRGVsaXZlcnlMb2NrZWQJAMwIAgkAZQIFC2xvY2tlZFRvdGFsBRVNSU5fVVNEVF9GRUVfREVMSVZFUlkFA25pbAUDbmlsAwkAAAIFBnVubG9jawUGdW5sb2NrAwkAZwIAAAkBEUBleHRyTmF0aXZlKDEwNTUpAQUJaGVhbHRoS2V5BQNuaWwECnB1bmlzaG1lbnQJAPwHBAUEdGhpcwILc2F2ZUludGVnZXIJAMwIAgkBFmtleURlbGl2ZXJ5RGVsYXlCeUR1Y2sBBQtkdWNrQXNzZXRJZAkAzAgCCQBkAgUJc3RhcnRUaW1lBRNERUxJVkVSWV9QVU5JU0hNRU5UBQNuaWwFA25pbAMJAAACBQpwdW5pc2htZW50BQpwdW5pc2htZW50BQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAQxJbnRlZ2VyRW50cnkCBQloZWFsdGhLZXkJARFAZXh0ck5hdGl2ZSgxMDU1KQEJAQ5rZXlTYXZlZEhlYWx0aAEFC2R1Y2tBc3NldElkCQELU3RyaW5nRW50cnkCBQZsb2NLZXkJARFAZXh0ck5hdGl2ZSgxMDU4KQEJARBrZXlTYXZlZExvY2F0aW9uAQULZHVja0Fzc2V0SWQFA25pbAEGcHJvbG9nAQFpAwMJAQIhPQIIBQFpDG9yaWdpbkNhbGxlcgUMcmVzdENvbnRyYWN0CQELdmFsdWVPckVsc2UCCQCgCAEJAQprZXlCbG9ja2VkAAcHCQACAQIfQ29udHJhY3RzIGFyZSB1bmRlciBtYWludGVuYW5jZQQIdXNlckFkZHIJAKUIAQgFAWkMb3JpZ2luQ2FsbGVyCQDNCAIJARVjaGVja091dGRhdGVkRGVsaXZlcnkBBQh1c2VyQWRkcgkBC1N0cmluZ0VudHJ5AgkBEWtleUxhc3RUeElkQnlVc2VyAQUIdXNlckFkZHIJANgEAQgFAWkNdHJhbnNhY3Rpb25JZAEMcHJvbG9nRmxpZ2h0AQFpAwMJAQIhPQIIBQFpDG9yaWdpbkNhbGxlcgUMcmVzdENvbnRyYWN0CQELdmFsdWVPckVsc2UCCQCgCAEJAQprZXlCbG9ja2VkAAcHCQACAQIfQ29udHJhY3RzIGFyZSB1bmRlciBtYWludGVuYW5jZQkAzAgCCQELU3RyaW5nRW50cnkCCQERa2V5TGFzdFR4SWRCeVVzZXIBCQClCAEIBQFpDG9yaWdpbkNhbGxlcgkA2AQBCAUBaQ10cmFuc2FjdGlvbklkBQNuaWwtAWkBDWNvbnN0cnVjdG9yVjEBCHJlc3RBZGRyAwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQIRUGVybWlzc2lvbiBkZW5pZWQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDmtleVJlc3RBZGRyZXNzAAUIcmVzdEFkZHIFA25pbAFpAQtzYXZlSW50ZWdlcgIDa2V5BmFtb3VudAMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECIHNhdmVJbnRlZ2VyIGlzIG5vdCBwdWJsaWMgbWV0aG9kCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQNrZXkFBmFtb3VudAUDbmlsAWkBCnNldEJsb2NrZWQBCWlzQmxvY2tlZAMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECEXBlcm1pc3Npb24gZGVuaWVkCQDMCAIJAQxCb29sZWFuRW50cnkCCQEKa2V5QmxvY2tlZAAFCWlzQmxvY2tlZAUDbmlsAWkBCXN0YWtlTGFuZAAEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQIcRXhhY3RseSBvbmUgcGF5bWVudCByZXF1aXJlZAQDcG10CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAEB2Fzc2V0SWQJAQV2YWx1ZQEIBQNwbXQHYXNzZXRJZAQHYWRkcmVzcwkApQgBCAUBaQZjYWxsZXIDCQECIT0CCAUDcG10BmFtb3VudAABCQACAQkArAICCQCsAgICBE5GVCAFCkxBTkRQUkVGSVgCJCB0b2tlbiBzaG91bGQgYmUgYXR0YWNoZWQgYXMgcGF5bWVudAQFYXNzZXQJAQV2YWx1ZQEJAOwHAQUHYXNzZXRJZAMJAQIhPQIIBQVhc3NldAZpc3N1ZXIFBHRoaXMJAAIBAhdVbmtub3duIGlzc3VlciBvZiB0b2tlbgMJAQEhAQkBCGNvbnRhaW5zAggFBWFzc2V0BG5hbWUFCkxBTkRQUkVGSVgJAAIBCQCsAgIJAKwCAgIJT25seSBORlQgBQpMQU5EUFJFRklYAhQgdG9rZW5zIGFyZSBhY2NlcHRlZAQLbGFuZE51bVNpemUJALACAggFBWFzc2V0BG5hbWUABAQHbGFuZE51bQMJAQhjb250YWlucwIFC2xhbmROdW1TaXplAgNYWEwJALMCAgULbGFuZE51bVNpemUAAwMJAQhjb250YWlucwIFC2xhbmROdW1TaXplAgJYTAkAswICBQtsYW5kTnVtU2l6ZQACCQCzAgIFC2xhbmROdW1TaXplAAEDCQEBIQEJAQlpc0RlZmluZWQBCQC2CQEFB2xhbmROdW0JAAIBCQCsAgICHkNhbm5vdCBwYXJzZSBsYW5kIG51bWJlciBmcm9tIAgFBWFzc2V0BG5hbWUEC2xhbmRBc3NldElkCQDYBAEFB2Fzc2V0SWQEB3RpbWVLZXkJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQULbGFuZEFzc2V0SWQDCQEJaXNEZWZpbmVkAQkAnwgBBQd0aW1lS2V5CQACAQkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAhIgaXMgYWxyZWFkeSBzdGFrZWQEAWQJALUJAggFBWFzc2V0C2Rlc2NyaXB0aW9uAgFfBA10ZXJyYWluQ291bnRzCQENY291bnRUZXJyYWlucwEJAJEDAgUBZAULcmVjVGVycmFpbnMEBnBpZWNlcwkBD251bVBpZWNlc0J5U2l6ZQEJAJEDAgUBZAULcmVjTGFuZFNpemUECWxhbmRJbmRleAkAaQIFBnBpZWNlcwUFU1NJWkUEBXByb3BzCQERdXBkYXRlUHJvcG9ydGlvbnMDBQ10ZXJyYWluQ291bnRzBQlsYW5kSW5kZXgAAQQMcmVzQnlDb250S2V5CQEWa2V5UmVzVHlwZXNCeUNvbnRpbmVudAEJAJEDAgUBZAUMcmVjQ29udGluZW50BAljb250UHJvcHMJALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBBQxyZXNCeUNvbnRLZXkCCzBfMF8wXzBfMF8wAgFfBBB1cGRhdGVkQ29udFByb3BzCQC5CQIJARl1cGRhdGVQcm9wb3J0aW9uc0ludGVybmFsBAUJY29udFByb3BzBQ10ZXJyYWluQ291bnRzBQlsYW5kSW5kZXgAAQIBXwQIbGFuZHNLZXkJARVrZXlTdGFrZWRMYW5kc0J5T3duZXIBBQdhZGRyZXNzBAhsYW5kc1N0cgkAoggBBQhsYW5kc0tleQQFbGFuZHMDCQEJaXNEZWZpbmVkAQUIbGFuZHNTdHIJAL0JAgkBBXZhbHVlAQUIbGFuZHNTdHICAV8FA25pbAMJAQ9jb250YWluc0VsZW1lbnQCBQVsYW5kcwULbGFuZEFzc2V0SWQJAAIBCQCsAgICIllvdXIgc3Rha2VkIGxhbmRzIGFscmVhZHkgY29udGFpbiAFC2xhbmRBc3NldElkAwkAZwIJAJADAQUFbGFuZHMFGE1BWF9MQU5EU19TVEFLRURfQllfVVNFUgkAAgEJAKwCAgkArAICAhlZb3VyIGFscmVhZHkgc3Rha2VkIG1heCAoCQCkAwEFGE1BWF9MQU5EU19TVEFLRURfQllfVVNFUgIHKSBsYW5kcwQKaW5mcmFMZXZlbAkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEFC2xhbmRBc3NldElkAAAECXBpZWNlc0tleQkBFmtleVN0YWtlZFBpZWNlc0J5T3duZXIBBQdhZGRyZXNzBAlvbGRQaWVjZXMJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJcGllY2VzS2V5AAAECXdsZ1Jlc3VsdAkA/AcEBQt3bGdDb250cmFjdAISb25TdGFrZVVuc3Rha2VMYW5kCQDMCAIFB2FkZHJlc3MFA25pbAUDbmlsCQCUCgIJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUHdGltZUtleQgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJASJrZXlTdGFrZWRUaW1lQnlUeXBlQXNzZXRJZEFuZE93bmVyAwUKTEFORFBSRUZJWAULbGFuZEFzc2V0SWQFB2FkZHJlc3MIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQtTdHJpbmdFbnRyeQIFCGxhbmRzS2V5CQC7CQIJAM0IAgUFbGFuZHMFC2xhbmRBc3NldElkAgFfCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlwaWVjZXNLZXkJAGQCBQlvbGRQaWVjZXMFBnBpZWNlcwkAzAgCCQELU3RyaW5nRW50cnkCCQEVa2V5TGFuZEFzc2V0SWRUb093bmVyAQULbGFuZEFzc2V0SWQFB2FkZHJlc3MJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEWtleUxhbmROdW1Ub093bmVyAQUHbGFuZE51bQUHYWRkcmVzcwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBHmtleUluZnJhTGV2ZWxCeUFzc2V0SWRBbmRPd25lcgIFC2xhbmRBc3NldElkBQdhZGRyZXNzBQppbmZyYUxldmVsCQDMCAIJAQtTdHJpbmdFbnRyeQIJARFrZXlSZXNQcm9wb3J0aW9ucwAFBXByb3BzCQDMCAIJAQtTdHJpbmdFbnRyeQIFDHJlc0J5Q29udEtleQUQdXBkYXRlZENvbnRQcm9wcwUDbmlsBQ1wcm9sb2dBY3Rpb25zBQl3bGdSZXN1bHQBaQELdW5zdGFrZUxhbmQBDWxhbmRBc3NldElkSW4EDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQEBGFkZHIJAKUIAQgFAWkGY2FsbGVyBAFjCQEUY2hlY2tDbGFpbUNvbmRpdGlvbnMDBQRhZGRyBQ1jbGFpbU1vZGVEdWNrBQ1sYW5kQXNzZXRJZEluBAtsYW5kQXNzZXRJZAgFAWMCXzIEAWQIBQFjAl8zBAhsYW5kc0tleQkBFWtleVN0YWtlZExhbmRzQnlPd25lcgEFBGFkZHIEDXRlcnJhaW5Db3VudHMJAQ1jb3VudFRlcnJhaW5zAQkAkQMCBQFkBQtyZWNUZXJyYWlucwQGcGllY2VzCQEPbnVtUGllY2VzQnlTaXplAQkAkQMCBQFkBQtyZWNMYW5kU2l6ZQQJbGFuZEluZGV4CQBpAgUGcGllY2VzBQVTU0laRQQFcHJvcHMJARF1cGRhdGVQcm9wb3J0aW9ucwMFDXRlcnJhaW5Db3VudHMFCWxhbmRJbmRleAD///////////8BBAxyZXNCeUNvbnRLZXkJARZrZXlSZXNUeXBlc0J5Q29udGluZW50AQkAkQMCBQFkBQxyZWNDb250aW5lbnQECWNvbnRQcm9wcwkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEFDHJlc0J5Q29udEtleQILMF8wXzBfMF8wXzACAV8EEHVwZGF0ZWRDb250UHJvcHMJALkJAgkBGXVwZGF0ZVByb3BvcnRpb25zSW50ZXJuYWwEBQljb250UHJvcHMFDXRlcnJhaW5Db3VudHMFCWxhbmRJbmRleAD///////////8BAgFfBAtjbGFpbVJlc3VsdAkBCGNsYWltQWxsBAUEYWRkcgULbGFuZEFzc2V0SWQFBnBpZWNlcwUNY2xhaW1Nb2RlRHVjawQFbGFuZHMJAL0JAgkBC3ZhbHVlT3JFbHNlAgkAoggBBQhsYW5kc0tleQIAAgFfBANpZHgJAM8IAgUFbGFuZHMFC2xhbmRBc3NldElkAwkBASEBCQEJaXNEZWZpbmVkAQUDaWR4CQACAQkArAICAiBZb3VyIHN0YWtlZCBsYW5kcyBkb24ndCBjb250YWluIAULbGFuZEFzc2V0SWQEA25vdwgFCWxhc3RCbG9jawl0aW1lc3RhbXAEDmdvdlJlbGVhc2VUaW1lCQELdmFsdWVPckVsc2UCCQCaCAIFC2dvdkNvbnRyYWN0CQEVa2V5VXNlckd3bFJlbGVhc2VUaW1lAQUEYWRkcgAAAwkAZwIFDmdvdlJlbGVhc2VUaW1lBQNub3cJAAIBCQCsAgICOVlvdXIgZ1dMIGFyZSB0YWtpbmcgcGFydCBpbiB2b3RpbmcsIGNhbm5vdCB1bnN0YWtlIHVudGlsIAkApAMBBQ5nb3ZSZWxlYXNlVGltZQQOYXJiUmVsZWFzZVRpbWUJAGQCCQELdmFsdWVPckVsc2UCCQCaCAIFC3dsZ0NvbnRyYWN0CQEUa2V5TGFzdEFyYlRpbWVCeVVzZXIBBQRhZGRyAAAFDmFyYml0cmFnZURlbGF5AwkAZgIFDmFyYlJlbGVhc2VUaW1lBQNub3cJAAIBCQCsAgICP1lvdXIgc3Rha2VkIGxhbmRzIHRvb2sgcGFydCBpbiBhcmJpdHJhZ2UsIGNhbm5vdCB1bnN0YWtlIHVudGlsIAkApAMBBQ5hcmJSZWxlYXNlVGltZQQJcGllY2VzS2V5CQEWa2V5U3Rha2VkUGllY2VzQnlPd25lcgEFBGFkZHIEDHN0YWtlZFBpZWNlcwkBC3ZhbHVlT3JFbHNlAgkAnwgBBQlwaWVjZXNLZXkAAAQJbmV3UGllY2VzAwkAZgIFBnBpZWNlcwUMc3Rha2VkUGllY2VzAAAJAGUCBQxzdGFrZWRQaWVjZXMFBnBpZWNlcwQJd2xnUmVzdWx0CQD8BwQFC3dsZ0NvbnRyYWN0AhJvblN0YWtlVW5zdGFrZUxhbmQJAMwIAgUEYWRkcgUDbmlsBQNuaWwJAJQKAgkAzggCCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgABCQDZBAEFC2xhbmRBc3NldElkCQDMCAIJAQtEZWxldGVFbnRyeQEJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQULbGFuZEFzc2V0SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBImtleVN0YWtlZFRpbWVCeVR5cGVBc3NldElkQW5kT3duZXIDBQpMQU5EUFJFRklYBQtsYW5kQXNzZXRJZAUEYWRkcgkAzAgCCQELU3RyaW5nRW50cnkCCQERa2V5UmVzUHJvcG9ydGlvbnMABQVwcm9wcwkAzAgCCQELU3RyaW5nRW50cnkCBQxyZXNCeUNvbnRLZXkFEHVwZGF0ZWRDb250UHJvcHMJAMwIAgkBC1N0cmluZ0VudHJ5AggFC2NsYWltUmVzdWx0Al8yCQC5CQIIBQtjbGFpbVJlc3VsdAJfMwIBOgkAzAgCAwkAZgIJAJADAQUFbGFuZHMAAQkBC1N0cmluZ0VudHJ5AgUIbGFuZHNLZXkJALsJAgkA0QgCBQVsYW5kcwkBBXZhbHVlAQUDaWR4AgFfCQELRGVsZXRlRW50cnkBBQhsYW5kc0tleQkAzAgCCQEMSW50ZWdlckVudHJ5AgUJcGllY2VzS2V5BQluZXdQaWVjZXMFA25pbAUNcHJvbG9nQWN0aW9ucwUJd2xnUmVzdWx0AWkBCXN0YWtlRHVjawAEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQIcRXhhY3RseSBvbmUgcGF5bWVudCByZXF1aXJlZAQDcG10CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAEB2Fzc2V0SWQJAQV2YWx1ZQEIBQNwbXQHYXNzZXRJZAQHYWRkcmVzcwkApQgBCAUBaQZjYWxsZXIDCQECIT0CCAUDcG10BmFtb3VudAABCQACAQkArAICCQCsAgICBE5GVCAFCkRVQ0tQUkVGSVgCJCB0b2tlbiBzaG91bGQgYmUgYXR0YWNoZWQgYXMgcGF5bWVudAQFYXNzZXQJAQV2YWx1ZQEJAOwHAQUHYXNzZXRJZAMDCQECIT0CCAUFYXNzZXQGaXNzdWVyBQ1pbmN1YmF0b3JBZGRyCQECIT0CCAUFYXNzZXQGaXNzdWVyBQticmVlZGVyQWRkcgcJAAIBCQCsAgIJAKwCAgISVW5rbm93biBpc3N1ZXIgb2YgBQpEVUNLUFJFRklYAgYgdG9rZW4DCQEBIQEJAQhjb250YWlucwIIBQVhc3NldARuYW1lBQpEVUNLUFJFRklYCQACAQkArAICCQCsAgICCU9ubHkgTkZUIAUKRFVDS1BSRUZJWAIUIHRva2VucyBhcmUgYWNjZXB0ZWQECmFzc2V0SWRTdHIJANgEAQUHYXNzZXRJZAQHdGltZUtleQkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQphc3NldElkU3RyAwkBCWlzRGVmaW5lZAEJAJ8IAQUHdGltZUtleQkAAgEJAKwCAgkArAICAgRORlQgCAUFYXNzZXQEbmFtZQISIGlzIGFscmVhZHkgc3Rha2VkAwkBCWlzRGVmaW5lZAEJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUHYWRkcmVzcwkAAgEJAKwCAgIdWW91IGFscmVhZHkgc3Rha2VkIG9uZSBkdWNrOiAIBQVhc3NldARuYW1lBAZsb2NLZXkJAQ9rZXlEdWNrTG9jYXRpb24BBQphc3NldElkU3RyBAhsb2NhdGlvbgkAoggBBQZsb2NLZXkEBWJwS2V5CQERa2V5QmFja3BhY2tCeUR1Y2sBBQphc3NldElkU3RyBAhiYWNrcGFjawkAoggBBQVicEtleQQJa2V5SGVhbHRoCQENa2V5RHVja0hlYWx0aAEFCmFzc2V0SWRTdHIEBW1heEhQCQEJbWF4SGVhbHRoAQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEMa2V5RHVja0xldmVsAQUKYXNzZXRJZFN0cgAABAljdXJIZWFsdGgJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJa2V5SGVhbHRoBQVtYXhIUAkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQd0aW1lS2V5CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBImtleVN0YWtlZFRpbWVCeVR5cGVBc3NldElkQW5kT3duZXIDBQpEVUNLUFJFRklYCQDYBAEFB2Fzc2V0SWQFB2FkZHJlc3MIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQtTdHJpbmdFbnRyeQIJARBrZXlEdWNrSWRUb093bmVyAQUKYXNzZXRJZFN0cgUHYWRkcmVzcwkAzAgCCQELU3RyaW5nRW50cnkCCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQdhZGRyZXNzBQphc3NldElkU3RyBQNuaWwDCQEJaXNEZWZpbmVkAQUIbG9jYXRpb24FA25pbAkAzggCCQDMCAIJAQtTdHJpbmdFbnRyeQIFBmxvY0tleQUPREVGQVVMVExPQ0FUSU9OBQNuaWwDCQEJaXNEZWZpbmVkAQUIYmFja3BhY2sFA25pbAkAzggCCQDNCAIJAMwIAgkBC1N0cmluZ0VudHJ5AgUFYnBLZXkCGjA6MF8wXzBfMF8wXzA6MF8wXzBfMF8wXzA6BQNuaWwJAQxJbnRlZ2VyRW50cnkCBQlrZXlIZWFsdGgFCWN1ckhlYWx0aAUNcHJvbG9nQWN0aW9ucwFpAQt1bnN0YWtlRHVjawEKYXNzZXRJZFN0cgQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQHYXNzZXRJZAkA2QQBBQphc3NldElkU3RyBAdhZGRyZXNzCQClCAEIBQFpBmNhbGxlcgQFYXNzZXQJAQV2YWx1ZQEJAOwHAQUHYXNzZXRJZAQHdGltZUtleQkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQphc3NldElkU3RyAwkBASEBCQEJaXNEZWZpbmVkAQkAnwgBBQd0aW1lS2V5CQACAQkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAg4gaXMgbm90IHN0YWtlZAMJAQEhAQkBCWlzRGVmaW5lZAEJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUHYWRkcmVzcwkAAgEJAKwCAgkArAICAglUaGUgZHVjayAIBQVhc3NldARuYW1lAg4gaXMgbm90IHN0YWtlZAQFb3duZXIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEQa2V5RHVja0lkVG9Pd25lcgEFCmFzc2V0SWRTdHIJAKwCAgkArAICAgRORlQgCAUFYXNzZXQEbmFtZQIMIGlzIG9ycGhhbmVkAwkBAiE9AgUFb3duZXIFB2FkZHJlc3MJAAIBAhdTdGFrZWQgTkZUIGlzIG5vdCB5b3VycwMJAQ9jaGVja1RvdXJuYW1lbnQBBQphc3NldElkU3RyCQACAQIbdW5zdGFrZUR1Y2tfY2hlY2tUb3VybmFtZW50AwkBDWNoZWNrRGVsaXZlcnkBBQphc3NldElkU3RyCQACAQIZdW5zdGFrZUR1Y2tfY2hlY2tEZWxpdmVyeQQJa2V5SGVhbHRoCQENa2V5RHVja0hlYWx0aAEFCmFzc2V0SWRTdHIEBW1heEhQCQEJbWF4SGVhbHRoAQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEMa2V5RHVja0xldmVsAQUKYXNzZXRJZFN0cgAABAZoZWFsdGgJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJa2V5SGVhbHRoBQVtYXhIUAMJAGYCBQVtYXhIUAUGaGVhbHRoCQACAQkArAICCQCsAgICGVBsZWFzZSBoZWFsIHlvdXIgZHVjayB0byAJAKQDAQUFbWF4SFACE2hwIGJlZm9yZSB1bnN0YWtpbmcJAM4IAgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIAAQUHYXNzZXRJZAkAzAgCCQELRGVsZXRlRW50cnkBBQd0aW1lS2V5CQDMCAIJAQtEZWxldGVFbnRyeQEFCWtleUhlYWx0aAkAzAgCCQELRGVsZXRlRW50cnkBCQEPa2V5RHVja0xvY2F0aW9uAQUKYXNzZXRJZFN0cgkAzAgCCQELRGVsZXRlRW50cnkBCQEQa2V5RHVja0lkVG9Pd25lcgEFCmFzc2V0SWRTdHIJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBImtleVN0YWtlZFRpbWVCeVR5cGVBc3NldElkQW5kT3duZXIDBQpEVUNLUFJFRklYBQphc3NldElkU3RyBQdhZGRyZXNzCQDMCAIJAQtEZWxldGVFbnRyeQEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFB2FkZHJlc3MFA25pbAUNcHJvbG9nQWN0aW9ucwFpAQhjbGFpbVJlcwIGYW1vdW50DmxhbmRBc3NldElkU3RyBA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBARhZGRyCQClCAEIBQFpDG9yaWdpbkNhbGxlcgQGcmVzdWx0CQEQY2xhaW1SZXNJbnRlcm5hbAQFBGFkZHIFBmFtb3VudAUNY2xhaW1Nb2RlRHVjawUObGFuZEFzc2V0SWRTdHIEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUEYWRkcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAkAlAoCCQDOCAIJAM0IAgkAzQgCCQDOCAIIBQZyZXN1bHQCXzEICQEXdXBkYXRlRHVja1N0YXRzSW50ZXJuYWwCBQtkdWNrQXNzZXRJZAkAawMFB3hwQ2xhaW0FBmFtb3VudAUFTVVMVDgCXzEJAQtTdHJpbmdFbnRyeQIIBQZyZXN1bHQCXzIJALkJAggFBnJlc3VsdAJfMwIBOgkBC1N0cmluZ0VudHJ5AggFBnJlc3VsdAJfNAkAuQkCCAUGcmVzdWx0Al81AgE6BQ1wcm9sb2dBY3Rpb25zCQCRAwIIBQZyZXN1bHQCXzMFCGJwSWR4UmVzAWkBDGNsYWltUmVzVG9XSAIGYW1vdW50DmxhbmRBc3NldElkU3RyBA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBARhZGRyCQClCAEIBQFpDG9yaWdpbkNhbGxlcgQGcmVzdWx0CQEQY2xhaW1SZXNJbnRlcm5hbAQFBGFkZHIFBmFtb3VudAULY2xhaW1Nb2RlV2gFDmxhbmRBc3NldElkU3RyCQCUCgIJAM4IAgkAzQgCCQDNCAIJAM4IAggFBnJlc3VsdAJfMQgJARZ1cGRhdGVBY2NTdGF0c0ludGVybmFsAgUEYWRkcgkAawMFB3hwQ2xhaW0FBmFtb3VudAUFTVVMVDgCXzEJAQtTdHJpbmdFbnRyeQIIBQZyZXN1bHQCXzIJALkJAggFBnJlc3VsdAJfMwIBOgkBC1N0cmluZ0VudHJ5AggFBnJlc3VsdAJfNAkAuQkCCAUGcmVzdWx0Al81AgE6BQ1wcm9sb2dBY3Rpb25zCQCRAwIIBQZyZXN1bHQCXzUFCHdoSWR4UmVzAWkBBmZsaWdodAIHbWVzc2FnZQNzaWcEDXByb2xvZ0FjdGlvbnMJAQxwcm9sb2dGbGlnaHQBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQECHVzZXJBZGRyCQClCAEIBQFpBmNhbGxlcgQBZgkBDGZsaWdodENvbW1vbgMFCHVzZXJBZGRyBQdtZXNzYWdlBQNzaWcEBW5ld0hQCAUBZgJfMQQLZHVja0Fzc2V0SWQIBQFmAl8yBAZsb2NLZXkJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAQLY3VyTG9jYXRpb24JAQt2YWx1ZU9yRWxzZQIJAKIIAQUGbG9jS2V5BQ9ERUZBVUxUTE9DQVRJT04EC25ld0xvY2F0aW9uCAUBZgJfNAMJAAACBQtuZXdMb2NhdGlvbgULY3VyTG9jYXRpb24JAAIBAiJZb3UgY2FuJ3QgZmx5IHRvIHRoZSBzYW1lIGxvY2F0aW9uBAZuZXdMb2MJALUJAgULbmV3TG9jYXRpb24CAV8EBmlzVG91cgkAAAIJAJEDAgUGbmV3TG9jBQpsb2NJZHhUeXBlAgFUBAdpc0RlbGl2CQAAAgkAkQMCBQZuZXdMb2MFCmxvY0lkeFR5cGUCAUQEBWVxS2V5CQEQa2V5RHVja0VxdWlwbWVudAEFC2R1Y2tBc3NldElkBAljdXJyZW50RXEJAQt2YWx1ZU9yRWxzZQIJAKIIAQUFZXFLZXkCFyw7LF8sOyxfLDssXyw7LF8sOyxfLDssBA0kdDA3MDYxMTcwNzA4CQERc3VidHJhY3RFcXVpcG1lbnQCBQljdXJyZW50RXEIBQFmAl81BAVuZXdFcQgFDSR0MDcwNjExNzA3MDgCXzEED3Nob3VsZFplcm9CdWZmcwgFDSR0MDcwNjExNzA3MDgCXzIEDSR0MDcwNzExNzM4MjkDCQEBIQEJAQlvbk1pc3Npb24CBRJ0b3VybmFtZW50Q29udHJhY3QFC2N1ckxvY2F0aW9uAwkBASEBCQEPaXNVc3VhbExvY2F0aW9uAQULbmV3TG9jYXRpb24JAQxjaGVhdEF0dGVtcHQDBQtjdXJMb2NhdGlvbgULbmV3TG9jYXRpb24ABQMJAGYCBQVuZXdIUAAACQCUCgIFC25ld0xvY2F0aW9uBQVuZXdIUAkAlAoCBQtjdXJMb2NhdGlvbgAAAwkBDmlzSW5Ub3VybmFtZW50AgUSdG91cm5hbWVudENvbnRyYWN0BQtjdXJMb2NhdGlvbgMJAQEhAQkBDmlzSW5Ub3VybmFtZW50AgUSdG91cm5hbWVudENvbnRyYWN0BQtuZXdMb2NhdGlvbgkAAgECKllvdXIgZHVjayBpcyB0YWtpbmcgcGFydCBpbiB0aGUgdG91cm5hbWVudAQFc2NvcmUJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQZuZXdMb2MFCGxvY0lkeElkBAZjdXJMb2MJALUJAgULY3VyTG9jYXRpb24CAV8EBmxhc3RJZAkBC3ZhbHVlT3JFbHNlAgkAmggCBRJ0b3VybmFtZW50Q29udHJhY3QFDWxhc3RUb3VySWRLZXkAAAMJAQIhPQIFBXNjb3JlCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBmN1ckxvYwUIbG9jSWR4SWQAAQkBDGNoZWF0QXR0ZW1wdAMFC2N1ckxvY2F0aW9uBQtuZXdMb2NhdGlvbgAHAwkAZgIFBW5ld0hQAAAECWxvY2FsQmVzdAkBC3ZhbHVlT3JFbHNlAgkAmggCBRJ0b3VybmFtZW50Q29udHJhY3QJARprZXlCZXN0UmVzdWx0QnlUb3VyQW5kRHVjawIFBmxhc3RJZAULZHVja0Fzc2V0SWQAAAQIdXBkTG9jYWwDCQBmAgUFc2NvcmUFCWxvY2FsQmVzdAkA/AcEBRJ0b3VybmFtZW50Q29udHJhY3QCDnNhdmVEdWNrUmVzdWx0CQDMCAIFC2R1Y2tBc3NldElkCQDMCAIFBXNjb3JlBQNuaWwFA25pbAUEdW5pdAMJAAACBQh1cGRMb2NhbAUIdXBkTG9jYWwJAJQKAgULbmV3TG9jYXRpb24FBW5ld0hQCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQCUCgIFC2N1ckxvY2F0aW9uAAADCQEBIQEJAQxpc0luRGVsaXZlcnkBBQtjdXJMb2NhdGlvbgQJbG9jSGVhbHRoCQEQYXNTdHJpbmdJbnRUdXBsZQEJAPwHBAUEdGhpcwIQYXV0b0V4aXREZWxpdmVyeQkAzAgCBQtkdWNrQXNzZXRJZAkAzAgCBQVuZXdIUAkAzAgCAwUHaXNEZWxpdgICMTACAjExCQDMCAIAAAUDbmlsBQNuaWwDCQAAAgUJbG9jSGVhbHRoBQlsb2NIZWFsdGgDBQdpc0RlbGl2BQlsb2NIZWFsdGgDCQBmAgUFbmV3SFAAAAkAlAoCBQtuZXdMb2NhdGlvbgUFbmV3SFAJAJQKAggFCWxvY0hlYWx0aAJfMQAACQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAwkBASEBBQdpc0RlbGl2CQACAQIkWW91ciBkdWNrIGlzIHRha2luZyBwYXJ0IGluIGRlbGl2ZXJ5AwkBASEBCQEMaXNJbkRlbGl2ZXJ5AQULbmV3TG9jYXRpb24JAQxjaGVhdEF0dGVtcHQDBQtjdXJMb2NhdGlvbgULbmV3TG9jYXRpb24ADQQFc2NvcmUJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQZuZXdMb2MFCGxvY0lkeElkBAZjdXJMb2MJALUJAgULY3VyTG9jYXRpb24CAV8DCQECIT0CBQVzY29yZQkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQZjdXJMb2MFCGxvY0lkeElkAAEJAQxjaGVhdEF0dGVtcHQDBQtjdXJMb2NhdGlvbgULbmV3TG9jYXRpb24ADgMDCQBmAgUFbmV3SFAAAAkAZgIAAwUFc2NvcmUHCQCUCgIFC25ld0xvY2F0aW9uBQVuZXdIUAQJbG9jSGVhbHRoCQEQYXNTdHJpbmdJbnRUdXBsZQEJAPwHBAUEdGhpcwIQYXV0b0V4aXREZWxpdmVyeQkAzAgCBQtkdWNrQXNzZXRJZAkAzAgCBQVuZXdIUAkAzAgCAgUxNS0xNwkAzAgCBQVzY29yZQUDbmlsBQNuaWwDCQAAAgUJbG9jSGVhbHRoBQlsb2NIZWFsdGgFCWxvY0hlYWx0aAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgQJbG9jVG9TYXZlCAUNJHQwNzA3MTE3MzgyOQJfMQQIaHBUb1NhdmUIBQ0kdDA3MDcxMTczODI5Al8yCQCUCgIJAM4IAgkAzggCCQDOCAIJAMwIAgkBC1N0cmluZ0VudHJ5AgUGbG9jS2V5BQlsb2NUb1NhdmUJAMwIAgkBC1N0cmluZ0VudHJ5AgUFZXFLZXkFBW5ld0VxCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQENa2V5RHVja0hlYWx0aAEFC2R1Y2tBc3NldElkBQhocFRvU2F2ZQUDbmlsBQ1wcm9sb2dBY3Rpb25zAwUPc2hvdWxkWmVyb0J1ZmZzCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQxrZXlEdWNrQnVmZnMBBQtkdWNrQXNzZXRJZAIJMF8wXzBfMF8wBQNuaWwFA25pbAgJARd1cGRhdGVEdWNrU3RhdHNJbnRlcm5hbAIFC2R1Y2tBc3NldElkAwkAZgIFBW5ld0hQAAAFD3hwU3VjY2Vzc0ZsaWdodAUMeHBGYWlsRmxpZ2h0Al8xCAUBZgJfMwFpAQRoZWFsAwpxdWFudGl0eUwxCnF1YW50aXR5TDIKcXVhbnRpdHlMMwQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDAwMJAGYCAAAFCnF1YW50aXR5TDEGCQBmAgAABQpxdWFudGl0eUwyBgkAZgIAAAUKcXVhbnRpdHlMMwkAAgECG1F1YW50aXR5IGNhbm5vdCBiZSBuZWdhdGl2ZQQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBCQClCAEIBQFpBmNhbGxlcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAMJAQ9jaGVja1RvdXJuYW1lbnQBBQtkdWNrQXNzZXRJZAkAAgECFGhlYWxfY2hlY2tUb3VybmFtZW50AwkBDWNoZWNrRGVsaXZlcnkBBQtkdWNrQXNzZXRJZAkAAgECEmhlYWxfY2hlY2tEZWxpdmVyeQQDcXRzCQDMCAIFCnF1YW50aXR5TDEJAMwIAgUKcXVhbnRpdHlMMgkAzAgCBQpxdWFudGl0eUwzBQNuaWwECWtleUhlYWx0aAkBDWtleUR1Y2tIZWFsdGgBBQtkdWNrQXNzZXRJZAQFbWF4SFAJAQltYXhIZWFsdGgBCQELdmFsdWVPckVsc2UCCQCfCAEJAQxrZXlEdWNrTGV2ZWwBBQtkdWNrQXNzZXRJZAAABAlvbGRIZWFsdGgJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJa2V5SGVhbHRoBQVtYXhIUAMJAGcCBQlvbGRIZWFsdGgFBW1heEhQCQACAQkArAICCQCsAgICD0hQIHNob3VsZCBiZSA8IAkApAMBBQVtYXhIUAIIIHRvIGhlYWwEBWJwS2V5CQERa2V5QmFja3BhY2tCeUR1Y2sBBQtkdWNrQXNzZXRJZAQLY3VycmVudFBhY2sJAQtnZXRCYWNrcGFjawEFBWJwS2V5BAhwcm9kTGlzdAMJAAACCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QCAAUDbmlsCQC8CQIJAJEDAgULY3VycmVudFBhY2sFCWJwSWR4UHJvZAIBXwoBC2l0ZXJhdGVQcm9kAgNhY2MGcmVjaXBlBAFuCAUDYWNjAl8yBAF4AwkAZgIJAJADAQUIcHJvZExpc3QFAW4JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQhwcm9kTGlzdAUBbgAAAwkAZgIAAwUBbgQBcQkAkQMCBQNxdHMFAW4DCQBmAgUBcQUBeAkAAgEJAKwCAgkArAICCQCsAgICDllvdSBoYXZlIG9ubHkgCQCkAwEFAXgCBCBvZiAJAJEDAgUJcHJvZFR5cGVzBQFuCQCVCgMJAM0IAggFA2FjYwJfMQkApAMBCQBlAgUBeAUBcQkAZAIFAW4AAQkAZAIIBQNhY2MCXzMJAGgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgkAtQkCBQZyZWNpcGUCAV8FCnJJZHhFZmZlY3QFAXEJAJUKAwkAzQgCCAUDYWNjAl8xCQCkAwEFAXgJAGQCBQFuAAEIBQNhY2MCXzMEBnJlc3VsdAoAAiRsBRBwcm9kdWN0aW9uTWF0cml4CgACJHMJAJADAQUCJGwKAAUkYWNjMAkAlQoDBQNuaWwAAAAACgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQtpdGVyYXRlUHJvZAIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgNTAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyBAluZXdIZWFsdGgJAJcDAQkAzAgCBQVtYXhIUAkAzAgCCQBkAgUJb2xkSGVhbHRoCAUGcmVzdWx0Al8zBQNuaWwJAJQKAgkAzggCCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIFCWtleUhlYWx0aAUJbmV3SGVhbHRoCQDMCAIJAQtTdHJpbmdFbnRyeQIFBWJwS2V5CQC6CQIJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUKYnBJZHhMZXZlbAkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeFJlcwkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeE1hdAkAzAgCCQC5CQIIBQZyZXN1bHQCXzECAV8FA25pbAIBOgUDbmlsBQ1wcm9sb2dBY3Rpb25zCAkBF3VwZGF0ZUR1Y2tTdGF0c0ludGVybmFsAgULZHVja0Fzc2V0SWQJAGgCBQZ4cEhlYWwJAGQCCQBkAgUKcXVhbnRpdHlMMQUKcXVhbnRpdHlMMgUKcXVhbnRpdHlMMwJfMQUJbmV3SGVhbHRoAWkBBmhlYWxFUwAEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQIcRXhhY3RseSBvbmUgcGF5bWVudCByZXF1aXJlZAQDcG10CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAADCQECIT0CCAUDcG10B2Fzc2V0SWQFC3VzZHRBc3NldElkCQACAQIaQWxsb3dlZCBVU0RUIHBheW1lbnQgb25seSEEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQkApQgBCAUBaQZjYWxsZXICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQDCQEPY2hlY2tUb3VybmFtZW50AQULZHVja0Fzc2V0SWQJAAIBAhZoZWFsRVNfY2hlY2tUb3VybmFtZW50AwkBDWNoZWNrRGVsaXZlcnkBBQtkdWNrQXNzZXRJZAkAAgECFGhlYWxFU19jaGVja0RlbGl2ZXJ5BAlrZXlIZWFsdGgJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQEBW1heEhQCQEJbWF4SGVhbHRoAQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEMa2V5RHVja0xldmVsAQULZHVja0Fzc2V0SWQAAAQJb2xkSGVhbHRoCQELdmFsdWVPckVsc2UCCQCfCAEFCWtleUhlYWx0aAUFbWF4SFADCQBmAgUJb2xkSGVhbHRoAAAJAAIBAihIUCBzaG91bGQgYmUgMCB0byBjYWxsIEVtZXJnZW5jeSBTZXJ2aWNlBAVicEtleQkBEWtleUJhY2twYWNrQnlEdWNrAQULZHVja0Fzc2V0SWQEC2N1cnJlbnRQYWNrCQELZ2V0QmFja3BhY2sBBQVicEtleQQIcHJvZExpc3QDCQAAAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kAgAFA25pbAkAvAkCCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QCAV8EDW1lZEtpdEFtb3VudDEDCQBmAgkAkAMBBQhwcm9kTGlzdAAACQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUIcHJvZExpc3QAAAAABA1tZWRLaXRBbW91bnQyAwkAZgIJAJADAQUIcHJvZExpc3QAAQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCHByb2RMaXN0AAEAAAQNbWVkS2l0QW1vdW50MwMJAGYCCQCQAwEFCHByb2RMaXN0AAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQhwcm9kTGlzdAACAAADAwMJAGYCBQ1tZWRLaXRBbW91bnQxAAAGCQBmAgUNbWVkS2l0QW1vdW50MgAABgkAZgIFDW1lZEtpdEFtb3VudDMAAAkAAgECH1lvdSBoYXZlIHRvIHVzZSBvd24gTWVkaWNhbCBLaXQECGV4aXN0U3RyCQCdCAIFD2Vjb25vbXlDb250cmFjdAkBDmtleUVzV2FyZWhvdXNlAAQMZXhpc3RBbW91bnRzAwkBCWlzRGVmaW5lZAEFCGV4aXN0U3RyCQC8CQIJAQV2YWx1ZQEFCGV4aXN0U3RyAgFfBQNuaWwEC2V4aXN0QW1vdW50AwkAZgIJAJADAQUMZXhpc3RBbW91bnRzAAAJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQxleGlzdEFtb3VudHMAAAAAAwkAZwIAAAULZXhpc3RBbW91bnQJAAIBAjlUaGVyZSBhcmUgbm8gTWVkaWNhbCBLaXRzIEwxIGF0IEVtZXJnZW5jeSBTZXJ2aWNlIHN0b3JhZ2UECW5ld0hlYWx0aAkAZAIFCW9sZEhlYWx0aAkBDXBhcnNlSW50VmFsdWUBCQCRAwIJALUJAgkAkQMCBRBwcm9kdWN0aW9uTWF0cml4AAACAV8FCnJJZHhFZmZlY3QEBW5ld0VTCQC5CQIJAMwIAgkApAMBCQBlAgULZXhpc3RBbW91bnQAAQkA0QgCBQxleGlzdEFtb3VudHMAAAIBXwQGcmVjaXBlCQC1CQIJAJEDAgUQcHJvZHVjdGlvbk1hdHJpeAAAAgFfBAh0b3RhbE1hdAkBEmdldFJlY2lwZU1hdGVyaWFscwEFBnJlY2lwZQQJc2VsbFByaWNlCQBrAwkAaAIFCHRvdGFsTWF0BQpFU1NFTExDT0VGBRBSRVNPVVJDRVBSSUNFTUlOCQBoAgUFTVVMVDgFDlBST0RVQ1RQS0dTSVpFAwkBAiE9AggFA3BtdAZhbW91bnQFCXNlbGxQcmljZQkAAgEJAKwCAgIbUGF5bWVudCBhdHRhY2hlZCBzaG91bGQgYmUgCQCkAwEFCXNlbGxQcmljZQQGcmVzdWx0CQEIYXNTdHJpbmcBCQD8BwQFD2Vjb25vbXlDb250cmFjdAIPdXBkYXRlRXNTdG9yYWdlCQDMCAIFBW5ld0VTBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFC3VzZHRBc3NldElkBQlzZWxsUHJpY2UFA25pbAkAlAoCCQDOCAIJAM0IAgUNcHJvbG9nQWN0aW9ucwkBDEludGVnZXJFbnRyeQIFCWtleUhlYWx0aAUJbmV3SGVhbHRoCAkBF3VwZGF0ZUR1Y2tTdGF0c0ludGVybmFsAgULZHVja0Fzc2V0SWQFCHhwQ2FsbEVTAl8xBQZyZXN1bHQBaQEOdXBkYXRlQmFja3BhY2sCC2R1Y2tBc3NldElkB25ld1BhY2sDCQECIT0CCAUBaQZjYWxsZXIFD2Vjb25vbXlDb250cmFjdAkAAgECEXBlcm1pc3Npb24gZGVuaWVkCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEWtleUJhY2twYWNrQnlEdWNrAQULZHVja0Fzc2V0SWQFB25ld1BhY2sFA25pbAUHbmV3UGFjawFpAQ9jb21taXRGb3JSYW5kb20ABA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQQLZmluaXNoQmxvY2sJAGQCBQZoZWlnaHQFC3JhbmRvbURlbGF5BARhZGRyCQClCAEIBQFpBmNhbGxlcgkAlAoCCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIJAQlrZXlDb21taXQBBQRhZGRyBQtmaW5pc2hCbG9jawUDbmlsBQ1wcm9sb2dBY3Rpb25zBQtmaW5pc2hCbG9jawFpAQhidXlTTGFuZAAEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQIcRXhhY3RseSBvbmUgcGF5bWVudCByZXF1aXJlZAQDcG10CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAADCQECIT0CCAUDcG10B2Fzc2V0SWQFC3VzZHRBc3NldElkCQACAQIaQWxsb3dlZCBVU0RUIHBheW1lbnQgb25seSEDCQECIT0CCAUDcG10BmFtb3VudAUHRVhQVVNEVAkAAgEJAKwCAgIbUGF5bWVudCBhdHRhY2hlZCBzaG91bGQgYmUgCQCkAwEFB0VYUFVTRFQEBnJlc3VsdAkBEmV4cGVkaXRpb25JbnRlcm5hbAIIBQFpBmNhbGxlcggFAWkNdHJhbnNhY3Rpb25JZAQLYWNyZXNSZXN1bHQJAQVhc0ludAEJAPwHBAUNYWNyZXNDb250cmFjdAIJYnVybkFjcmVzCQDMCAIFDFNfQ09TVF9BQ1JFUwUDbmlsBQNuaWwJAJQKAgkAzggCCQDOCAIJAM0IAggFBnJlc3VsdAJfMQkBDlNjcmlwdFRyYW5zZmVyAwUPZWNvbm9teUNvbnRyYWN0CAUDcG10BmFtb3VudAULdXNkdEFzc2V0SWQICQEWdXBkYXRlQWNjU3RhdHNJbnRlcm5hbAIJAKUIAQgFAWkGY2FsbGVyBQp4cE5ld1NMYW5kAl8xBQ1wcm9sb2dBY3Rpb25zCQCUCgIICAUGcmVzdWx0Al8yAl8xBQthY3Jlc1Jlc3VsdAFpAQpleHBlZGl0aW9uAgdtZXNzYWdlA3NpZwQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQIdXNlckFkZHIJAKUIAQgFAWkGY2FsbGVyBAFmCQEMZmxpZ2h0Q29tbW9uAwUIdXNlckFkZHIFB21lc3NhZ2UFA3NpZwQLZHVja0Fzc2V0SWQIBQFmAl8yBAlrZXlIZWFsdGgJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQEBWJwS2V5CQERa2V5QmFja3BhY2tCeUR1Y2sBBQtkdWNrQXNzZXRJZAQLY3VycmVudFBhY2sJAQtnZXRCYWNrcGFjawEFBWJwS2V5BAVtTGlzdAkAtQkCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeE1hdAIBXwQGbmV3TWF0CQC5CQIJARFzdWJ0cmFjdE1hdGVyaWFscwMGBQVtTGlzdAUMRVhQTUFURVJJQUxTAgFfBAVlcUtleQkBEGtleUR1Y2tFcXVpcG1lbnQBBQtkdWNrQXNzZXRJZAQJY3VycmVudEVxCQELdmFsdWVPckVsc2UCCQCiCAEFBWVxS2V5AhcsOyxfLDssXyw7LF8sOyxfLDssXyw7LAQNJHQwODEyNjk4MTM2NgkBEXN1YnRyYWN0RXF1aXBtZW50AgUJY3VycmVudEVxCAUBZgJfNQQFbmV3RXEIBQ0kdDA4MTI2OTgxMzY2Al8xBA9zaG91bGRaZXJvQnVmZnMIBQ0kdDA4MTI2OTgxMzY2Al8yBAFlCQESZXhwZWRpdGlvbkludGVybmFsAggFAWkGY2FsbGVyCAUBaQ10cmFuc2FjdGlvbklkBAJpZAgIBQFlAl8yAl8xBAZyZXN1bHQDCQBnAgAACAUBZgJfMQkAlQoDCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlrZXlIZWFsdGgAAAkAzAgCCQELU3RyaW5nRW50cnkCBQVlcUtleQUFbmV3RXEFA25pbAIAAAAJAJUKAwkAzggCCAUBZQJfMQMFD3Nob3VsZFplcm9CdWZmcwkAzAgCCQELU3RyaW5nRW50cnkCCQEMa2V5RHVja0J1ZmZzAQULZHVja0Fzc2V0SWQCCTBfMF8wXzBfMAUDbmlsCQDNCAIJAM0IAgkAzQgCCQDNCAIFA25pbAkBC1N0cmluZ0VudHJ5AgkBD2tleUR1Y2tMb2NhdGlvbgEFC2R1Y2tBc3NldElkCQC5CQIJAMwIAggIBQFlAl8yAl8yCQDMCAICAUwJAMwIAgUCaWQFA25pbAIBXwkBDEludGVnZXJFbnRyeQIFCWtleUhlYWx0aAgFAWYCXzEJAQtTdHJpbmdFbnRyeQIFBWVxS2V5BQVuZXdFcQkBC1N0cmluZ0VudHJ5AgUFYnBLZXkJALkJAgkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQpicElkeExldmVsCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4UmVzCQDMCAIFBm5ld01hdAkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QFA25pbAIBOgUCaWQIBQFmAl8zAwkBD2NoZWNrVG91cm5hbWVudAEFC2R1Y2tBc3NldElkCQACAQIaZXhwZWRpdGlvbl9jaGVja1RvdXJuYW1lbnQDCQENY2hlY2tEZWxpdmVyeQEFC2R1Y2tBc3NldElkCQACAQIYZXhwZWRpdGlvbl9jaGVja0RlbGl2ZXJ5BAthY3Jlc1Jlc3VsdAkBBWFzSW50AQkA/AcEBQ1hY3Jlc0NvbnRyYWN0AglidXJuQWNyZXMJAMwIAgUMU19DT1NUX0FDUkVTBQNuaWwFA25pbAkAlAoCCQDOCAIJAM4IAggFBnJlc3VsdAJfMQgJARd1cGRhdGVEdWNrU3RhdHNJbnRlcm5hbAIFC2R1Y2tBc3NldElkBQp4cE5ld1NMYW5kAl8xBQ1wcm9sb2dBY3Rpb25zCQCVCgMIBQZyZXN1bHQCXzIIBQZyZXN1bHQCXzMFC2FjcmVzUmVzdWx0AWkBEGJ1eVNMYW5kRm9yQWNyZXMABA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECImV4YWN0bHkgMSBwYXltZW50IG11c3QgYmUgYXR0YWNoZWQEA3BtdAkAkQMCCAUBaQhwYXltZW50cwAABANhbXQIBQNwbXQGYW1vdW50AwMJAQEhAQkBCWlzRGVmaW5lZAEIBQNwbXQHYXNzZXRJZAYJAQIhPQIJAQV2YWx1ZQEIBQNwbXQHYXNzZXRJZAUMYWNyZXNBc3NldElkCQACAQIUQUNSRVMgcGF5bWVudHMgb25seSEDCQECIT0CBQNhbXQFDFNfQ09TVF9BQ1JFUwkAAgEJAKwCAgIbUGF5bWVudCBhdHRhY2hlZCBzaG91bGQgYmUgCQCkAwEFDFNfQ09TVF9BQ1JFUwQGcmVzdWx0CQESZXhwZWRpdGlvbkludGVybmFsAggFAWkGY2FsbGVyCAUBaQ10cmFuc2FjdGlvbklkBAthY3Jlc1Jlc3VsdAkBBWFzSW50AQkA/AcEBQ1hY3Jlc0NvbnRyYWN0AglidXJuQWNyZXMJAMwIAgUMU19DT1NUX0FDUkVTBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFDGFjcmVzQXNzZXRJZAUDYW10BQNuaWwJAJQKAgkAzggCCQDOCAIIBQZyZXN1bHQCXzEICQEWdXBkYXRlQWNjU3RhdHNJbnRlcm5hbAIJAKUIAQgFAWkGY2FsbGVyBQp4cE5ld1NMYW5kAl8xBQ1wcm9sb2dBY3Rpb25zCQCUCgIICAUGcmVzdWx0Al8yAl8xBQthY3Jlc1Jlc3VsdAFpAQx1cGdyYWRlSW5mcmEBC2xhbmRBc3NldElkBA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBAZyZXN1bHQJAQ11cEluZnJhQ29tbW9uBAYIBQFpBmNhbGxlcgAABQtsYW5kQXNzZXRJZAQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBCQClCAEIBQFpBmNhbGxlcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAkAlAoCCQDOCAIJAM4IAggFBnJlc3VsdAJfMQUNcHJvbG9nQWN0aW9ucwgJARd1cGRhdGVEdWNrU3RhdHNJbnRlcm5hbAIFC2R1Y2tBc3NldElkCQBrAwUOeHBVcGdyYWRlSW5mcmEIBQZyZXN1bHQCXzMFBU1VTFQ4Al8xCAUGcmVzdWx0Al8yAWkBEGFjdGl2YXRlQXJ0aWZhY3QCB2FydE5hbWUObGFuZEFzc2V0SWRPcHQEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQEBGFkZHIJAKUIAQgFAWkGY2FsbGVyBAZyZXN1bHQEByRtYXRjaDAFB2FydE5hbWUDCQAAAgIHUFJFU0FMRQUHJG1hdGNoMAkBEmFjdGl2YXRlUHJlc2FsZUFydAIFBGFkZHIFDmxhbmRBc3NldElkT3B0AwkAAAICB09OQk9BUkQFByRtYXRjaDAJARJhY3RpdmF0ZU9uYm9hcmRBcnQBBQRhZGRyCQACAQIQVW5rbm93biBhcnRpZmFjdAkAzggCBQZyZXN1bHQFDXByb2xvZ0FjdGlvbnMBaQEKbWVyZ2VMYW5kcwEMbGFuZEFzc2V0SWRzBA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBAZyZXN1bHQJAQttZXJnZUNvbW1vbgIJAKUIAQgFAWkGY2FsbGVyBQxsYW5kQXNzZXRJZHMJAJQKAgkAzggCCQDOCAIIBQZyZXN1bHQCXzEFDXByb2xvZ0FjdGlvbnMICQEWdXBkYXRlQWNjU3RhdHNJbnRlcm5hbAIJAKUIAQgFAWkGY2FsbGVyBQd4cE1lcmdlAl8xCAUGcmVzdWx0Al8yAWkBDWNhcmdvRXhjaGFuZ2UCDGNhcmdvTGlzdFN0cgtsYW5kQXNzZXRJZAQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQKY2FyZ29QYXJ0cwkAvAkCBQxjYXJnb0xpc3RTdHICAToEBGFkZHIJAKUIAQgFAWkMb3JpZ2luQ2FsbGVyBAVhc3NldAkBBXZhbHVlAQkA7AcBCQDZBAEFC2xhbmRBc3NldElkBAd0aW1lS2V5CQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFC2xhbmRBc3NldElkAwkBASEBCQEJaXNEZWZpbmVkAQkAnwgBBQd0aW1lS2V5CQACAQkArAICCAUFYXNzZXQEbmFtZQIOIGlzIG5vdCBzdGFrZWQEBW93bmVyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFWtleUxhbmRBc3NldElkVG9Pd25lcgEFC2xhbmRBc3NldElkCQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCDCBpcyBvcnBoYW5lZAMJAQIhPQIFBW93bmVyBQRhZGRyCQACAQkArAICBQpMQU5EUFJFRklYAg0gaXMgbm90IHlvdXJzBAlsYW5kSW5kZXgJAGkCCQEPbnVtUGllY2VzQnlTaXplAQkAkQMCCQC1CQIIBQVhc3NldAtkZXNjcmlwdGlvbgIBXwULcmVjTGFuZFNpemUFBVNTSVpFBAppbmZyYUxldmVsCQELdmFsdWVPckVsc2UCCQCfCAEJARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQULbGFuZEFzc2V0SWQAAAQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQRhZGRyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkBAtjdXJMb2NhdGlvbgkBC3ZhbHVlT3JFbHNlAgkAoggBCQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQFD0RFRkFVTFRMT0NBVElPTgQDbG9jCQC1CQIJAQV2YWx1ZQEFC2N1ckxvY2F0aW9uAgFfAwkBAiE9AgkAkQMCBQNsb2MFCmxvY0lkeFR5cGUCAUwJAAIBCQCsAgIJAKwCAgIWRHVjayBsb2NhdGlvbiB0eXBlIGlzIAkAkQMCBQNsb2MFCmxvY0lkeFR5cGUCESwgYnV0IHNob3VsZCBiZSBMAwkBAiE9AgkAkQMCBQNsb2MFCGxvY0lkeElkBQtsYW5kQXNzZXRJZAkAAgEJAKwCAgIbRHVjayBzaG91bGQgYmUgb24gdGhlIGxhbmQgBQtsYW5kQXNzZXRJZAQFd2hLZXkJARJrZXlXYXJlaG91c2VCeUxhbmQBBQtsYW5kQXNzZXRJZAQJY3VycmVudFdoCQEMZ2V0V2FyZWhvdXNlAwUFd2hLZXkFCWxhbmRJbmRleAUKaW5mcmFMZXZlbAQFYnBLZXkJARFrZXlCYWNrcGFja0J5RHVjawEFC2R1Y2tBc3NldElkBAtjdXJyZW50UGFjawkBC2dldEJhY2twYWNrAQUFYnBLZXkEBnJlc3VsdAkBCW1vdmVTdHVmZgMFCmNhcmdvUGFydHMFCWN1cnJlbnRXaAULY3VycmVudFBhY2sEBGxvZnQJALUJAgkAkQMCBQljdXJyZW50V2gFCXdoSWR4TE9GVAIBXwQFbG9mdE8JAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbG9mdAULdm9sT2NjdXBpZWQIBQZyZXN1bHQCXzcEBWxvZnRGCQBlAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFB3ZvbEZyZWUIBQZyZXN1bHQCXzcJAM4IAgkAzAgCCQELU3RyaW5nRW50cnkCBQVicEtleQkAugkCCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCmJwSWR4TGV2ZWwJAMwIAggFBnJlc3VsdAJfNAkAzAgCCAUGcmVzdWx0Al81CQDMCAIIBQZyZXN1bHQCXzYFA25pbAIBOgkAzAgCCQELU3RyaW5nRW50cnkCBQV3aEtleQkAugkCCQDMCAIJAJEDAgUJY3VycmVudFdoBQt3aElkeExldmVscwkAzAgCCAUGcmVzdWx0Al8xCQDMCAIIBQZyZXN1bHQCXzIJAMwIAggFBnJlc3VsdAJfMwkAzAgCCQC5CQIJAMwIAgkAkQMCBQRsb2Z0BQl2b2xMb2NrZWQJAMwIAgkApAMBBQVsb2Z0TwkAzAgCCQCkAwEFBWxvZnRGCQDMCAIJAJEDAgUEbG9mdAUIdm9sVG90YWwFA25pbAIBXwUDbmlsAgE6BQNuaWwFDXByb2xvZ0FjdGlvbnMBaQENc2F2ZVdhcmVob3VzZQIFd2hTdHILbGFuZEFzc2V0SWQDCQECIT0CCAUBaQZjYWxsZXIFD2Vjb25vbXlDb250cmFjdAkAAgECDUFjY2VzcyBkZW5pZWQEBXdoS2V5CQESa2V5V2FyZWhvdXNlQnlMYW5kAQULbGFuZEFzc2V0SWQEAndoCQC8CQIFBXdoU3RyAgE6AwkBAiE9AgkAkAMBBQJ3aAAFCQACAQIwd2FyZWhvdXNlIHN0cmluZyBzaG91bGQgY29udGFpbiA0ICc6JyBzZXBhcmF0b3JzBAVsb2Z0TAkAkQMCCQC1CQIJAJEDAgUCd2gFCXdoSWR4TE9GVAIBXwUJdm9sTG9ja2VkBAVsb2Z0TwkBF2dldFdhcmVob3VzZU9jY3VwaWVkVm9sAQUCd2gEBWxvZnRUCQEXZ2V0V2FyZWhvdXNlVG90YWxWb2x1bWUBCQCRAwIFAndoBQt3aElkeExldmVscwQFbG9mdEYJAGUCCQBlAgUFbG9mdFQJAQ1wYXJzZUludFZhbHVlAQUFbG9mdEwFBWxvZnRPBAhuZXdXaFN0cgkAugkCCQDMCAIJAJEDAgUCd2gFC3doSWR4TGV2ZWxzCQDMCAIJAJEDAgUCd2gFCHdoSWR4UmVzCQDMCAIJAJEDAgUCd2gFCHdoSWR4TWF0CQDMCAIJAJEDAgUCd2gFCXdoSWR4UHJvZAkAzAgCCQC5CQIJAMwIAgUFbG9mdEwJAMwIAgkApAMBBQVsb2Z0TwkAzAgCCQCkAwEFBWxvZnRGCQDMCAIJAKQDAQUFbG9mdFQFA25pbAIBXwUDbmlsAgE6CQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgUFd2hLZXkFCG5ld1doU3RyBQNuaWwFCG5ld1doU3RyAWkBEmZpeFdhcmVob3VzZUZvcm1hdAELbGFuZEFzc2V0SWQDCQECIT0CCAUBaQZjYWxsZXIFDHJlc3RDb250cmFjdAkAAgECDUFjY2VzcyBkZW5pZWQEBXdoS2V5CQESa2V5V2FyZWhvdXNlQnlMYW5kAQULbGFuZEFzc2V0SWQEBWFzc2V0CQEFdmFsdWUBCQDsBwEJANkEAQULbGFuZEFzc2V0SWQECWxhbmRJbmRleAkAaQIJAQ9udW1QaWVjZXNCeVNpemUBCQCRAwIJALUJAggFBWFzc2V0C2Rlc2NyaXB0aW9uAgFfBQtyZWNMYW5kU2l6ZQUFU1NJWkUECmluZnJhTGV2ZWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAAABAJ3aAkBDGdldFdhcmVob3VzZQMFBXdoS2V5BQlsYW5kSW5kZXgFCmluZnJhTGV2ZWwEBWxvZnRMCQEFYXNJbnQBCQD8BwQFD2Vjb25vbXlDb250cmFjdAIacmVjYWxjTG9ja2VkVm9sdW1lUkVBRE9OTFkJAMwIAgULbGFuZEFzc2V0SWQJAMwIAgUCd2gFA25pbAUDbmlsBAVsb2Z0TwkBF2dldFdhcmVob3VzZU9jY3VwaWVkVm9sAQUCd2gEBWxvZnRUCQEXZ2V0V2FyZWhvdXNlVG90YWxWb2x1bWUBCQCRAwIFAndoBQt3aElkeExldmVscwQFbG9mdEYJAGUCCQBlAgUFbG9mdFQFBWxvZnRMBQVsb2Z0TwQIbmV3V2hTdHIJALoJAgkAzAgCCQCRAwIFAndoBQt3aElkeExldmVscwkAzAgCCQCRAwIFAndoBQh3aElkeFJlcwkAzAgCCQCRAwIFAndoBQh3aElkeE1hdAkAzAgCCQCRAwIFAndoBQl3aElkeFByb2QJAMwIAgkAuQkCCQDMCAIJAKQDAQUFbG9mdEwJAMwIAgkApAMBBQVsb2Z0TwkAzAgCCQCkAwEFBWxvZnRGCQDMCAIJAKQDAQUFbG9mdFQFA25pbAIBXwUDbmlsAgE6CQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgUFd2hLZXkFCG5ld1doU3RyBQNuaWwFCG5ld1doU3RyAWkBF2ZpeENvbnRpbmVudFByb3BvcnRpb25zAQxsYW5kQXNzZXRJZHMDCQECIT0CCAUBaQZjYWxsZXIFDHJlc3RDb250cmFjdAkAAgECDUFjY2VzcyBkZW5pZWQKAQhnZXRQcm9wcwIDYWNjBGNvbnQJAM0IAgUDYWNjCQELdmFsdWVPckVsc2UCCQCiCAEJARZrZXlSZXNUeXBlc0J5Q29udGluZW50AQUEY29udAILMF8wXzBfMF8wXzAEAXAKAAIkbAUKY29udGluZW50cwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEIZ2V0UHJvcHMCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDUJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFCgEJcHJvY2Vzc29yAgNhY2MLbGFuZEFzc2V0SWQEBWFzc2V0CQEFdmFsdWUBCQDsBwEJANkEAQULbGFuZEFzc2V0SWQEAWQJALUJAggFBWFzc2V0C2Rlc2NyaXB0aW9uAgFfBAlsYW5kSW5kZXgJAGkCCQEPbnVtUGllY2VzQnlTaXplAQkAkQMCBQFkBQtyZWNMYW5kU2l6ZQUFU1NJWkUEBGNvbnQJAJEDAgUBZAUMcmVjQ29udGluZW50BA10ZXJyYWluQ291bnRzCQENY291bnRUZXJyYWlucwEJAJEDAgUBZAULcmVjVGVycmFpbnMEDGNvbnRpbmVudElkeAkBBXZhbHVlAQkAzwgCBQpjb250aW5lbnRzBQRjb250BAljb250UHJvcHMJALUJAgkAkQMCBQNhY2MFDGNvbnRpbmVudElkeAIBXwQHdXBkYXRlZAkAuQkCCQEZdXBkYXRlUHJvcG9ydGlvbnNJbnRlcm5hbAQFCWNvbnRQcm9wcwUNdGVycmFpbkNvdW50cwUJbGFuZEluZGV4AAECAV8EByRtYXRjaDAFBGNvbnQDCQAAAgIIQW1lcmljYXMFByRtYXRjaDAJAMwIAgUHdXBkYXRlZAkAzAgCCQCRAwIFA2FjYwABCQDMCAIJAJEDAgUDYWNjAAIJAMwIAgkAkQMCBQNhY2MAAwkAzAgCCQCRAwIFA2FjYwAEBQNuaWwDCQAAAgIGRXVyb3BlBQckbWF0Y2gwCQDMCAIJAJEDAgUDYWNjAAAJAMwIAgUHdXBkYXRlZAkAzAgCCQCRAwIFA2FjYwACCQDMCAIJAJEDAgUDYWNjAAMJAMwIAgkAkQMCBQNhY2MABAUDbmlsAwkAAAICBEFzaWEFByRtYXRjaDAJAMwIAgkAkQMCBQNhY2MAAAkAzAgCCQCRAwIFA2FjYwABCQDMCAIFB3VwZGF0ZWQJAMwIAgkAkQMCBQNhY2MAAwkAzAgCCQCRAwIFA2FjYwAEBQNuaWwDCQAAAgIGQWZyaWNhBQckbWF0Y2gwCQDMCAIJAJEDAgUDYWNjAAAJAMwIAgkAkQMCBQNhY2MAAQkAzAgCCQCRAwIFA2FjYwACCQDMCAIFB3VwZGF0ZWQJAMwIAgkAkQMCBQNhY2MABAUDbmlsAwkAAAICB09jZWFuaWEFByRtYXRjaDAJAMwIAgkAkQMCBQNhY2MAAAkAzAgCCQCRAwIFA2FjYwABCQDMCAIJAJEDAgUDYWNjAAIJAMwIAgkAkQMCBQNhY2MAAwkAzAgCBQd1cGRhdGVkBQNuaWwJAAIBAg93cm9uZyBjb250aW5lbnQEAXIKAAIkbAUMbGFuZEFzc2V0SWRzCgACJHMJAJADAQUCJGwKAAUkYWNjMAUBcAoBBSRmMV8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEJcHJvY2Vzc29yAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYxXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhVMaXN0IHNpemUgZXhjZWVkcyAxMDAJAQUkZjFfMgIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyADMANAA1ADYANwA4ADkAOgA7ADwAPQA+AD8AQABBAEIAQwBEAEUARgBHAEgASQBKAEsATABNAE4ATwBQAFEAUgBTAFQAVQBWAFcAWABZAFoAWwBcAF0AXgBfAGAAYQBiAGMAZAkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIJARZrZXlSZXNUeXBlc0J5Q29udGluZW50AQIIQW1lcmljYXMJAJEDAgUBcgAACQDMCAIJAQtTdHJpbmdFbnRyeQIJARZrZXlSZXNUeXBlc0J5Q29udGluZW50AQIGRXVyb3BlCQCRAwIFAXIAAQkAzAgCCQELU3RyaW5nRW50cnkCCQEWa2V5UmVzVHlwZXNCeUNvbnRpbmVudAECBEFzaWEJAJEDAgUBcgACCQDMCAIJAQtTdHJpbmdFbnRyeQIJARZrZXlSZXNUeXBlc0J5Q29udGluZW50AQIGQWZyaWNhCQCRAwIFAXIAAwkAzAgCCQELU3RyaW5nRW50cnkCCQEWa2V5UmVzVHlwZXNCeUNvbnRpbmVudAECB09jZWFuaWEJAJEDAgUBcgAEBQNuaWwAAAFpAQ9maXhTdGFrZWRQaWVjZXMBB2FkZHJlc3MDCQECIT0CCAUBaQZjYWxsZXIFDHJlc3RDb250cmFjdAkAAgECDUFjY2VzcyBkZW5pZWQEDHN0YWtlZFBpZWNlcwMJAAACBQdhZGRyZXNzAgAAAAQIbGFuZHNTdHIJAJ0IAgUPc3Rha2luZ0NvbnRyYWN0CQEVa2V5U3Rha2VkTGFuZHNCeU93bmVyAQUHYWRkcmVzcwQFbGFuZHMDCQEJaXNEZWZpbmVkAQUIbGFuZHNTdHIJAL0JAgkBBXZhbHVlAQUIbGFuZHNTdHICAV8FA25pbAoBB29uZUxhbmQCA2FjYwtsYW5kQXNzZXRJZAQFYXNzZXQJAQV2YWx1ZQEJAOwHAQkA2QQBBQtsYW5kQXNzZXRJZAQIbGFuZFNpemUJAJEDAgkAtQkCCAUFYXNzZXQLZGVzY3JpcHRpb24CAV8FC3JlY0xhbmRTaXplCQBkAgUDYWNjCQEPbnVtUGllY2VzQnlTaXplAQUIbGFuZFNpemUKAAIkbAUFbGFuZHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwAAAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBB29uZUxhbmQCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFUxpc3Qgc2l6ZSBleGNlZWRzIDEwMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQA6ADsAPAA9AD4APwBAAEEAQgBDAEQARQBGAEcASABJAEoASwBMAE0ATgBPAFAAUQBSAFMAVABVAFYAVwBYAFkAWgBbAFwAXQBeAF8AYABhAGIAYwBkCQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIJARZrZXlTdGFrZWRQaWVjZXNCeU93bmVyAQUHYWRkcmVzcwUMc3Rha2VkUGllY2VzBQNuaWwFDHN0YWtlZFBpZWNlcwFpAQ1zZXRDdXN0b21OYW1lAwdhc3NldElkCmN1c3RvbU5hbWUEdHlwZQQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAhxFeGFjdGx5IG9uZSBwYXltZW50IHJlcXVpcmVkBANwbXQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAMJAQIhPQIIBQNwbXQHYXNzZXRJZAULdXNkdEFzc2V0SWQJAAIBAhpBbGxvd2VkIFVTRFQgcGF5bWVudCBvbmx5IQMJAQIhPQIIBQNwbXQGYW1vdW50BQxSRU5BTUlOR0NPU1QJAAIBCQCsAgICElBheW1lbnQgc2hvdWxkIGJlIAkApAMBBQxSRU5BTUlOR0NPU1QDCQEIY29udGFpbnMCBQpjdXN0b21OYW1lAgJfXwkAAgEJAKwCAgIeTmFtZSBzaG91bGQgbm90IGNvbnRhaW4gJ19fJzogBQpjdXN0b21OYW1lAwkAZgIJALECAQUKY3VzdG9tTmFtZQUKTUFYTkFNRUxFTgkAAgEJAKwCAgIZTmFtZSB0b28gbG9uZywgbWF4TGVuZ3RoPQkApAMBBQpNQVhOQU1FTEVOBARhZGRyCQClCAEIBQFpDG9yaWdpbkNhbGxlcgQHYWN0aW9ucwQHJG1hdGNoMAUEdHlwZQMJAAACAgdBQ0NPVU5UBQckbWF0Y2gwBApyZXZlcnNlS2V5CQEWa2V5Q3VzdG9tTmFtZVRvQWRkcmVzcwEFCmN1c3RvbU5hbWUECW5hbWVPd25lcgkAoggBBQpyZXZlcnNlS2V5AwkBCWlzRGVmaW5lZAEFCW5hbWVPd25lcgkAAgEJAKwCAgIZTmFtZSBhbHJlYWR5IHJlZ2lzdGVyZWQ6IAUKY3VzdG9tTmFtZQQNYWRkclRvTmFtZUtleQkBFmtleUFkZHJlc3NUb0N1c3RvbU5hbWUBBQRhZGRyBAdvbGROYW1lCQCiCAEFDWFkZHJUb05hbWVLZXkEB2ZyZWVPbGQDCQEJaXNEZWZpbmVkAQUHb2xkTmFtZQkAzAgCCQELRGVsZXRlRW50cnkBCQEWa2V5Q3VzdG9tTmFtZVRvQWRkcmVzcwEJAQV2YWx1ZQEFB29sZE5hbWUFA25pbAUDbmlsCQDOCAIJAM0IAgkAzQgCBQdmcmVlT2xkCQELU3RyaW5nRW50cnkCBQ1hZGRyVG9OYW1lS2V5BQpjdXN0b21OYW1lCQELU3RyaW5nRW50cnkCBQpyZXZlcnNlS2V5BQRhZGRyCAkBFnVwZGF0ZUFjY1N0YXRzSW50ZXJuYWwCBQRhZGRyBQx4cEN1c3RvbU5hbWUCXzEDCQAAAgIETEFORAUHJG1hdGNoMAQFYXNzZXQJAQV2YWx1ZQEJAOwHAQkA2QQBBQdhc3NldElkBAd0aW1lS2V5CQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFB2Fzc2V0SWQDCQEBIQEJAQlpc0RlZmluZWQBCQCfCAEFB3RpbWVLZXkJAAIBCQCsAgIIBQVhc3NldARuYW1lAg4gaXMgbm90IHN0YWtlZAQFb3duZXIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEVa2V5TGFuZEFzc2V0SWRUb093bmVyAQUHYXNzZXRJZAkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAgwgaXMgb3JwaGFuZWQDCQECIT0CBQVvd25lcgUEYWRkcgkAAgEJAKwCAgUKTEFORFBSRUZJWAINIGlzIG5vdCB5b3VycwQKcmV2ZXJzZUtleQkBGmtleUxhbmRDdXN0b21OYW1lVG9Bc3NldElkAQUKY3VzdG9tTmFtZQQJbmFtZU93bmVyCQCiCAEFCnJldmVyc2VLZXkDCQEJaXNEZWZpbmVkAQUJbmFtZU93bmVyCQACAQkArAICAhlOYW1lIGFscmVhZHkgcmVnaXN0ZXJlZDogBQpjdXN0b21OYW1lBA5hc3NldFRvTmFtZUtleQkBGmtleUxhbmRBc3NldElkVG9DdXN0b21OYW1lAQUHYXNzZXRJZAQHb2xkTmFtZQkAoggBBQ5hc3NldFRvTmFtZUtleQQHZnJlZU9sZAMJAQlpc0RlZmluZWQBBQdvbGROYW1lCQDMCAIJAQtEZWxldGVFbnRyeQEJARprZXlMYW5kQ3VzdG9tTmFtZVRvQXNzZXRJZAEJAQV2YWx1ZQEFB29sZE5hbWUFA25pbAUDbmlsCQDOCAIJAM0IAgkAzQgCBQdmcmVlT2xkCQELU3RyaW5nRW50cnkCBQ5hc3NldFRvTmFtZUtleQUKY3VzdG9tTmFtZQkBC1N0cmluZ0VudHJ5AgUKcmV2ZXJzZUtleQUHYXNzZXRJZAgJARZ1cGRhdGVBY2NTdGF0c0ludGVybmFsAgUEYWRkcgUMeHBDdXN0b21OYW1lAl8xAwkAAAICBERVQ0sFByRtYXRjaDAEBWFzc2V0CQEFdmFsdWUBCQDsBwEJANkEAQUHYXNzZXRJZAQHdGltZUtleQkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQdhc3NldElkAwMJAQEhAQkBCWlzRGVmaW5lZAEJAJ8IAQUHdGltZUtleQYJAQEhAQkBCWlzRGVmaW5lZAEJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUEYWRkcgkAAgEJAKwCAggFBWFzc2V0BG5hbWUCDiBpcyBub3Qgc3Rha2VkBAVvd25lcgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARBrZXlEdWNrSWRUb093bmVyAQUHYXNzZXRJZAkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAgwgaXMgb3JwaGFuZWQDCQECIT0CBQVvd25lcgUEYWRkcgkAAgEJAKwCAgUKRFVDS1BSRUZJWAINIGlzIG5vdCB5b3VycwQKcmV2ZXJzZUtleQkBGmtleUR1Y2tDdXN0b21OYW1lVG9Bc3NldElkAQUKY3VzdG9tTmFtZQQJbmFtZU93bmVyCQCiCAEFCnJldmVyc2VLZXkDCQEJaXNEZWZpbmVkAQUJbmFtZU93bmVyCQACAQkArAICAhlOYW1lIGFscmVhZHkgcmVnaXN0ZXJlZDogBQpjdXN0b21OYW1lBA5hc3NldFRvTmFtZUtleQkBGmtleUR1Y2tBc3NldElkVG9DdXN0b21OYW1lAQUHYXNzZXRJZAQHb2xkTmFtZQkAoggBBQ5hc3NldFRvTmFtZUtleQQHZnJlZU9sZAMJAQlpc0RlZmluZWQBBQdvbGROYW1lCQDMCAIJAQtEZWxldGVFbnRyeQEJARprZXlEdWNrQ3VzdG9tTmFtZVRvQXNzZXRJZAEJAQV2YWx1ZQEFB29sZE5hbWUFA25pbAUDbmlsCQDOCAIJAM0IAgkAzQgCBQdmcmVlT2xkCQELU3RyaW5nRW50cnkCBQ5hc3NldFRvTmFtZUtleQUKY3VzdG9tTmFtZQkBC1N0cmluZ0VudHJ5AgUKcmV2ZXJzZUtleQUHYXNzZXRJZAgJARd1cGRhdGVEdWNrU3RhdHNJbnRlcm5hbAIFB2Fzc2V0SWQFDHhwQ3VzdG9tTmFtZQJfMQkAAgECE1Vua25vd24gZW50aXR5IHR5cGUJAJQKAgkAzggCCQDNCAIFB2FjdGlvbnMJAQ5TY3JpcHRUcmFuc2ZlcgMFD2Vjb25vbXlDb250cmFjdAgFA3BtdAZhbW91bnQFC3VzZHRBc3NldElkBQ1wcm9sb2dBY3Rpb25zAAABaQEMc2V0UmVmZXJyYWxzAglvbGRQbGF5ZXIJbmV3UGxheWVyAwkBAiE9AggFAWkPY2FsbGVyUHVibGljS2V5BQNwdWIJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAMJAQEhAQkBCWlzRGVmaW5lZAEJAKYIAQUJb2xkUGxheWVyCQACAQkArAICAhFJbnZhbGlkIGFkZHJlc3M6IAUJb2xkUGxheWVyAwkBASEBCQEJaXNEZWZpbmVkAQkApggBBQluZXdQbGF5ZXIJAAIBCQCsAgICEUludmFsaWQgYWRkcmVzczogBQluZXdQbGF5ZXIEB29sZHNLZXkJAQlrZXlPbGRpZXMABARvbGRzCQCiCAEFB29sZHNLZXkEBm9sZGllcwMJAQlpc0RlZmluZWQBBQRvbGRzCQC8CQIJAQV2YWx1ZQEFBG9sZHMCAV8FA25pbAMJAQ9jb250YWluc0VsZW1lbnQCBQZvbGRpZXMFCW5ld1BsYXllcgkAAgEJAKwCAgUJbmV3UGxheWVyAiYgaXMgbm90IG5ld2JpZSAoYWxyZWFkeSBoYXMgcmVmZXJyYWxzKQQIcmVmQnlLZXkJAQ9rZXlBZGRyZXNzUmVmQnkBBQluZXdQbGF5ZXIEBXJlZkJ5CQCiCAEFCHJlZkJ5S2V5AwMJAQlpc0RlZmluZWQBBQVyZWZCeQkBCWlzRGVmaW5lZAEJAKYIAQkBBXZhbHVlAQUFcmVmQnkHCQACAQkArAICCQCsAgIFCW5ld1BsYXllcgIUIGFscmVhZHkgaGFzIHJlZkJ5OiAJAQV2YWx1ZQEFBXJlZkJ5BAdyZWZzS2V5CQETa2V5QWRkcmVzc1JlZmVycmFscwEFCW9sZFBsYXllcgQEcmVmcwkAoggBBQdyZWZzS2V5BAlyZWZzQXJyYXkDCQEJaXNEZWZpbmVkAQUEcmVmcwkAvAkCCQEFdmFsdWUBBQRyZWZzAgFfBQNuaWwDCQEPY29udGFpbnNFbGVtZW50AgUJcmVmc0FycmF5BQluZXdQbGF5ZXIJAAIBCQCsAgIJAKwCAgkArAICBQlvbGRQbGF5ZXICEiBhbHJlYWR5IGNvbnRhaW5zIAUJbmV3UGxheWVyAhEgd2l0aGluIHJlZmVycmFscwQHbmV3UmVmcwkAugkCCQDNCAIFCXJlZnNBcnJheQUJbmV3UGxheWVyAgFfBAduZXdPbGRzAwkBD2NvbnRhaW5zRWxlbWVudAIFBm9sZGllcwUJb2xkUGxheWVyCQEFdmFsdWUBBQRvbGRzCQC6CQIJAM0IAgUGb2xkaWVzBQlvbGRQbGF5ZXICAV8JAJQKAgkAzggCCQDMCAIJAQtTdHJpbmdFbnRyeQIFCHJlZkJ5S2V5BQlvbGRQbGF5ZXIJAMwIAgkBC1N0cmluZ0VudHJ5AgUHcmVmc0tleQUHbmV3UmVmcwkAzAgCCQELU3RyaW5nRW50cnkCBQdvbGRzS2V5BQduZXdPbGRzBQNuaWwFDXByb2xvZ0FjdGlvbnMAAAFpARBkaXN0cmlidXRlUG9pbnRzBQhzdHJlbmd0aAhhY2N1cmFjeQlpbnRlbGxlY3QJZW5kdXJhbmNlCWRleHRlcml0eQQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQEYWRkcgkApQgBCAUBaQxvcmlnaW5DYWxsZXIEC3ZpcnRXbGdEYXRhCQEJYXNBbnlMaXN0AQkA/AcEBQt3bGdDb250cmFjdAISY2hlY2tXbGdYcFJFQURPTkxZCQDMCAIFBGFkZHIFA25pbAUDbmlsBA12aXJ0V2xnUG9pbnRzCQEFYXNJbnQBCQCRAwIFC3ZpcnRXbGdEYXRhAAEEDSR0MDk2NzUxOTcxNDEDCQBnAgAABQ12aXJ0V2xnUG9pbnRzCQCUCgIAAAUDbmlsBAdkZWx0YVhQCQEFYXNJbnQBCQD8BwQFC3dsZ0NvbnRyYWN0Agl0YWtlV2xnWHAJAMwIAgUEYWRkcgUDbmlsBQNuaWwDCQAAAgUHZGVsdGFYUAUHZGVsdGFYUAkAlAoCBQ12aXJ0V2xnUG9pbnRzCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEMa2V5VXNlckxldmVsAQUEYWRkcgkBBWFzSW50AQkAkQMCBQt2aXJ0V2xnRGF0YQAACQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEJa2V5VXNlclhQAQUEYWRkcgkBBWFzSW50AQkAkQMCBQt2aXJ0V2xnRGF0YQACBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4ECXdsZ1BvaW50cwgFDSR0MDk2NzUxOTcxNDECXzEECndsZ0FjdGlvbnMIBQ0kdDA5Njc1MTk3MTQxAl8yBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFBGFkZHICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQECmZyZWVLZXlBY2MJARFrZXlVc2VyRnJlZVBvaW50cwEFBGFkZHIEDWZyZWVQb2ludHNBY2MJAGQCCQELdmFsdWVPckVsc2UCCQCfCAEFCmZyZWVLZXlBY2MAAAUJd2xnUG9pbnRzBAtmcmVlS2V5RHVjawkBEWtleUR1Y2tGcmVlUG9pbnRzAQULZHVja0Fzc2V0SWQEDmZyZWVQb2ludHNEdWNrCQELdmFsdWVPckVsc2UCCQCfCAEFC2ZyZWVLZXlEdWNrAAAEB3N1bUZyZWUJAGQCBQ1mcmVlUG9pbnRzQWNjBQ5mcmVlUG9pbnRzRHVjawQPc3VtVG9EaXN0cmlidXRlCQBkAgkAZAIJAGQCCQBkAgUIc3RyZW5ndGgFCGFjY3VyYWN5BQlpbnRlbGxlY3QFCWVuZHVyYW5jZQUJZGV4dGVyaXR5AwkAZgIFD3N1bVRvRGlzdHJpYnV0ZQUHc3VtRnJlZQkAAgEJAKwCAgkArAICAg9UaGVyZSBhcmUgb25seSAJAKQDAQUHc3VtRnJlZQIaIGZyZWUgcG9pbnRzIHRvIGRpc3RyaWJ1dGUECGNoYXJzS2V5CQEMa2V5RHVja0NoYXJzAQULZHVja0Fzc2V0SWQEBWNoYXJzCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAKIIAQUIY2hhcnNLZXkCCTBfMF8wXzBfMAIBXwQGbmV3QWNjCQBlAgUNZnJlZVBvaW50c0FjYwUPc3VtVG9EaXN0cmlidXRlCQCUCgIJAM4IAgkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQpmcmVlS2V5QWNjAwkAZgIAAAUGbmV3QWNjAAAFBm5ld0FjYwkAzAgCCQEMSW50ZWdlckVudHJ5AgULZnJlZUtleUR1Y2sDCQBmAgAABQZuZXdBY2MJAGQCBQ5mcmVlUG9pbnRzRHVjawUGbmV3QWNjBQ5mcmVlUG9pbnRzRHVjawkAzAgCCQELU3RyaW5nRW50cnkCBQhjaGFyc0tleQkAuQkCCQDMCAIJAKQDAQkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVjaGFycwUMY2hhclN0cmVuZ3RoBQhzdHJlbmd0aAkAzAgCCQCkAwEJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFY2hhcnMFDGNoYXJBY2N1cmFjeQUIYWNjdXJhY3kJAMwIAgkApAMBCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBWNoYXJzBQ1jaGFySW50ZWxsZWN0BQlpbnRlbGxlY3QJAMwIAgkApAMBCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBWNoYXJzBQ1jaGFyRW5kdXJhbmNlBQllbmR1cmFuY2UJAMwIAgkApAMBCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBWNoYXJzBQ1jaGFyRGV4dGVyaXR5BQlkZXh0ZXJpdHkFA25pbAIBXwUDbmlsBQ1wcm9sb2dBY3Rpb25zBQp3bGdBY3Rpb25zAAABaQEcc3BsaXRCeUdsb2JhbFdlaWdodHNSRUFET05MWQEGYW1vdW50CQCUCgIFA25pbAkBEmdldE5lZWRlZE1hdGVyaWFscwEFBmFtb3VudAFpASRzcGxpdEJ5R2xvYmFsQW5kTG9jYWxXZWlnaHRzUkVBRE9OTFkDCW1hdEFtb3VudAlyZXNBbW91bnQIdGVycmFpbnMEDXRlcnJhaW5Db3VudHMJAQ1jb3VudFRlcnJhaW5zAQUIdGVycmFpbnMJAJQKAgUDbmlsCQCUCgIJARJnZXROZWVkZWRNYXRlcmlhbHMBBQltYXRBbW91bnQJARNkaXN0cmlidXRlQnlXZWlnaHRzAgUJcmVzQW1vdW50BQ10ZXJyYWluQ291bnRzAWkBE2dldEJhY2twYWNrUkVBRE9OTFkBC2R1Y2tBc3NldElkCQCUCgIFA25pbAkAuQkCCQELZ2V0QmFja3BhY2sBCQERa2V5QmFja3BhY2tCeUR1Y2sBBQtkdWNrQXNzZXRJZAIBOgFpARRnZXRXYXJlaG91c2VSRUFET05MWQELbGFuZEFzc2V0SWQEBWFzc2V0CQEFdmFsdWUBCQDsBwEJANkEAQULbGFuZEFzc2V0SWQECWxhbmRJbmRleAkAaQIJAQ9udW1QaWVjZXNCeVNpemUBCQCRAwIJALUJAggFBWFzc2V0C2Rlc2NyaXB0aW9uAgFfBQtyZWNMYW5kU2l6ZQUFU1NJWkUECmluZnJhTGV2ZWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAAACQCUCgIFA25pbAkAugkCCQEMZ2V0V2FyZWhvdXNlAwkBEmtleVdhcmVob3VzZUJ5TGFuZAEFC2xhbmRBc3NldElkBQlsYW5kSW5kZXgFCmluZnJhTGV2ZWwCAToBaQEKc2F2ZUxhc3RUeAADCQEBIQEJAQ9jb250YWluc0VsZW1lbnQCCQDMCAIFC3dsZ0NvbnRyYWN0CQDMCAIFD2Vjb25vbXlDb250cmFjdAkAzAgCBRJ0b3VybmFtZW50Q29udHJhY3QJAMwIAgUNYWNyZXNDb250cmFjdAUDbmlsCAUBaQZjYWxsZXIJAAIBAg1BY2Nlc3MgZGVuaWVkCQCUCgIJAQZwcm9sb2cBBQFpACoBaQEPdXBkYXRlRHVja1N0YXRzAgtkdWNrQXNzZXRJZAdkZWx0YVhQAwkBAiE9AggFAWkGY2FsbGVyBQ9lY29ub215Q29udHJhY3QJAAIBAg1BY2Nlc3MgZGVuaWVkCQEXdXBkYXRlRHVja1N0YXRzSW50ZXJuYWwCBQtkdWNrQXNzZXRJZAUHZGVsdGFYUAFpAQ51cGRhdGVBY2NTdGF0cwIEYWRkcgdkZWx0YVhQAwkBASEBCQEPY29udGFpbnNFbGVtZW50AgkAzAgCBQt3bGdDb250cmFjdAkAzAgCBQ9lY29ub215Q29udHJhY3QJAMwIAgUNYWNyZXNDb250cmFjdAUDbmlsCAUBaQZjYWxsZXIJAAIBAg1BY2Nlc3MgZGVuaWVkCQEWdXBkYXRlQWNjU3RhdHNJbnRlcm5hbAIFBGFkZHIFB2RlbHRhWFABaQEJZXF1aXBEdWNrAQllcXVpcG1lbnQEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQEBGFkZHIJAKUIAQgFAWkMb3JpZ2luQ2FsbGVyBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFBGFkZHICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQDCQEPY2hlY2tUb3VybmFtZW50AQULZHVja0Fzc2V0SWQJAAIBAhllcXVpcER1Y2tfY2hlY2tUb3VybmFtZW50AwkBDWNoZWNrRGVsaXZlcnkBBQtkdWNrQXNzZXRJZAkAAgECF2VxdWlwRHVja19jaGVja0RlbGl2ZXJ5BAVlcUtleQkBEGtleUR1Y2tFcXVpcG1lbnQBBQtkdWNrQXNzZXRJZAQLY3VycmVudFNlZ3MJALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBBQVlcUtleQIXLDssXyw7LF8sOyxfLDssXyw7LF8sOywCAV8EBWJwS2V5CQERa2V5QmFja3BhY2tCeUR1Y2sBBQtkdWNrQXNzZXRJZAQLY3VycmVudFBhY2sJAQtnZXRCYWNrcGFjawEFBWJwS2V5BAVuZXdFcQkAtQkCBQllcXVpcG1lbnQCAV8DCQECIT0CCQCQAwEFBW5ld0VxBQtOVU1TRUdNRU5UUwkAAgECFldyb25nIGVxdWlwbWVudCBzdHJpbmcECXRlbXBQcm9kQgkBBmRyZXNzQgQFC2N1cnJlbnRTZWdzCQEOcHJvZFN0clRvQnl0ZXMBCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QGBQNuaWwECHNlZ0JwQXV4CQCRAwIJALUJAgkAkQMCBQVuZXdFcQULc2VnQmFja3BhY2sCATsAAQQKYnVmZkVmZmVjdAMJAAACBQhzZWdCcEF1eAIAAAAEBGF1eDAJAJEDAgkAtQkCBQhzZWdCcEF1eAIBLAAAAwkAAAIFBGF1eDACAAAABAZpZHhDbnQJALUJAgUEYXV4MAIBOgQDaWR4CQCRAwIFBmlkeENudAAABANjbnQJAJEDAgUGaWR4Q250AAEDAwMDAwkAAAIFA2lkeAICMDYGCQAAAgUDaWR4AgIwNwYJAAACBQNpZHgCAjA4CQECIT0CBQNjbnQCAAcJAGYCCQENcGFyc2VJbnRWYWx1ZQEFA2NudAAABwkBDXBhcnNlSW50VmFsdWUBCQCRAwIJALUJAgkAkQMCBRBwcm9kdWN0aW9uTWF0cml4CQENcGFyc2VJbnRWYWx1ZQEFA2lkeAIBXwUKcklkeEVmZmVjdAAABAVzdGF0cwkBDGdldER1Y2tTdGF0cwQFBHRoaXMFC2R1Y2tBc3NldElkBQpidWZmRWZmZWN0BgQIbmV3UHJvZEIJAQZkcmVzc0IEBQVuZXdFcQUJdGVtcFByb2RCBwUFc3RhdHMECm5ld1Byb2RTdHIJAQ5ieXRlc1RvUHJvZFN0cgEFCG5ld1Byb2RCCQCUCgIJAM4IAgkAzAgCCQELU3RyaW5nRW50cnkCBQVlcUtleQUJZXF1aXBtZW50CQDMCAIJAQtTdHJpbmdFbnRyeQIFBWJwS2V5CQC6CQIJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUKYnBJZHhMZXZlbAkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeFJlcwkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeE1hdAkAzAgCBQpuZXdQcm9kU3RyBQNuaWwCAToJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDGtleUR1Y2tCdWZmcwEFC2R1Y2tBc3NldElkCQC5CQIJAMwIAgkApAMBCQCRAwIFBXN0YXRzAAcJAMwIAgkApAMBCQCRAwIFBXN0YXRzAAgJAMwIAgkApAMBCQCRAwIFBXN0YXRzAAkJAMwIAgkApAMBCQCRAwIFBXN0YXRzAAoJAMwIAgkApAMBCQCRAwIFBXN0YXRzAAsFA25pbAIBXwUDbmlsBQ1wcm9sb2dBY3Rpb25zAAABaQEPZm9ydGlmaWNhdGVMYW5kAgtsYW5kQXNzZXRJZARwbGFuBA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBARhZGRyCQClCAEIBQFpDG9yaWdpbkNhbGxlcgQLZHVja0Fzc2V0SWQJAQt2YWx1ZU9yRWxzZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUEYWRkcgIABAlkdWNrU3RhdHMJAQxnZXREdWNrU3RhdHMEBQR0aGlzBQtkdWNrQXNzZXRJZAAABwQHZm9ydEtleQkBF2tleUZvcnRpZmljYXRpb25zQnlMYW5kAQULbGFuZEFzc2V0SWQEDGN1cnJlbnRGb3J0cwkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEFB2ZvcnRLZXkCDDowXzE1OjBfMTg6MAIBXwQFYXNzZXQJAQV2YWx1ZQEJAOwHAQkA2QQBBQtsYW5kQXNzZXRJZAQJbGFuZEluZGV4CQBpAgkBD251bVBpZWNlc0J5U2l6ZQEJAJEDAgkAtQkCCAUFYXNzZXQLZGVzY3JpcHRpb24CAV8FC3JlY0xhbmRTaXplBQVTU0laRQQKaW5mcmFMZXZlbAkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEFC2xhbmRBc3NldElkAAAEBXdoS2V5CQESa2V5V2FyZWhvdXNlQnlMYW5kAQULbGFuZEFzc2V0SWQEAndoCQEMZ2V0V2FyZWhvdXNlAwUFd2hLZXkFCWxhbmRJbmRleAUKaW5mcmFMZXZlbAQHY3VyTG9mdAkAtQkCCQCRAwIFAndoBQl3aElkeExPRlQCAV8EBGN1ck8JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQdjdXJMb2Z0BQt2b2xPY2N1cGllZAQEY3VyRgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFB2N1ckxvZnQFB3ZvbEZyZWUECG5ld0ZvcnRzCQC1CQIFBHBsYW4CAV8EDyR0MDEwMzk3OTEwNDA5NAkBBWZvcnRCBgUMY3VycmVudEZvcnRzCQEOcHJvZFN0clRvQnl0ZXMBCQCRAwIFAndoBQl3aElkeFByb2QFBGN1ck8FBGN1ckYGBQNuaWwECXRlbXBQcm9kQggFDyR0MDEwMzk3OTEwNDA5NAJfMQQFdGVtcE8IBQ8kdDAxMDM5NzkxMDQwOTQCXzIEBXRlbXBGCAUPJHQwMTAzOTc5MTA0MDk0Al8zBA8kdDAxMDQwOTcxMDQxOTMJAQVmb3J0QgYFCG5ld0ZvcnRzBQl0ZW1wUHJvZEIFBXRlbXBPBQV0ZW1wRgcFCWR1Y2tTdGF0cwQIbmV3UHJvZEIIBQ8kdDAxMDQwOTcxMDQxOTMCXzEEBG5ld08IBQ8kdDAxMDQwOTcxMDQxOTMCXzIEBG5ld0YIBQ8kdDAxMDQwOTcxMDQxOTMCXzMECm5ld1Byb2RTdHIJAQ5ieXRlc1RvUHJvZFN0cgEFCG5ld1Byb2RCBApuZXdMb2Z0U3RyCQC5CQIJAMwIAgkAkQMCBQdjdXJMb2Z0BQl2b2xMb2NrZWQJAMwIAgkApAMBBQRuZXdPCQDMCAIJAKQDAQUEbmV3RgkAzAgCCQCRAwIFB2N1ckxvZnQFCHZvbFRvdGFsBQNuaWwCAV8JAJQKAgkAzggCCQDMCAIJAQtTdHJpbmdFbnRyeQIFB2ZvcnRLZXkFBHBsYW4JAMwIAgkBC1N0cmluZ0VudHJ5AgUFd2hLZXkJALoJAgkAzAgCCQCRAwIFAndoBQt3aElkeExldmVscwkAzAgCCQCRAwIFAndoBQh3aElkeFJlcwkAzAgCCQCRAwIFAndoBQh3aElkeE1hdAkAzAgCBQpuZXdQcm9kU3RyCQDMCAIFCm5ld0xvZnRTdHIFA25pbAIBOgUDbmlsBQ1wcm9sb2dBY3Rpb25zAAABaQETaW5pdER1Y2tUb3VyQXR0ZW1wdAELZHVja0Fzc2V0SWQDCQECIT0CCAUBaQZjYWxsZXIFEnRvdXJuYW1lbnRDb250cmFjdAkAAgECDUFjY2VzcyBkZW5pZWQECWtleUhlYWx0aAkBDWtleUR1Y2tIZWFsdGgBBQtkdWNrQXNzZXRJZAQFbWF4SFAJAQltYXhIZWFsdGgBCQELdmFsdWVPckVsc2UCCQCfCAEJAQxrZXlEdWNrTGV2ZWwBBQtkdWNrQXNzZXRJZAAABAljdXJIZWFsdGgJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJa2V5SGVhbHRoBQVtYXhIUAQJY3VyTG9jS2V5CQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQEC2N1ckxvY2F0aW9uCQELdmFsdWVPckVsc2UCCQCiCAEFCWN1ckxvY0tleQUPREVGQVVMVExPQ0FUSU9OBAZsYXN0SWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUSdG91cm5hbWVudENvbnRyYWN0BQ1sYXN0VG91cklkS2V5AAAEDHRvdXJMb2NhdGlvbgkArAICCQCkAwEFBmxhc3RJZAIEX1RfMAkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEOa2V5U2F2ZWRIZWFsdGgBBQtkdWNrQXNzZXRJZAUJY3VySGVhbHRoCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlrZXlIZWFsdGgFBW1heEhQCQDMCAIJAQtTdHJpbmdFbnRyeQIJARBrZXlTYXZlZExvY2F0aW9uAQULZHVja0Fzc2V0SWQFC2N1ckxvY2F0aW9uCQDMCAIJAQtTdHJpbmdFbnRyeQIFCWN1ckxvY0tleQUMdG91ckxvY2F0aW9uBQNuaWwFDHRvdXJMb2NhdGlvbgFpAQxicmVha0F0dGVtcHQABA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBCQClCAEIBQFpBmNhbGxlcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAQJY3VyTG9jS2V5CQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQEC2N1ckxvY2F0aW9uCQELdmFsdWVPckVsc2UCCQCiCAEFCWN1ckxvY0tleQUPREVGQVVMVExPQ0FUSU9OAwkBAiE9AgkAkQMCCQC1CQIFC2N1ckxvY2F0aW9uAgFfBQpsb2NJZHhUeXBlAgFUCQACAQIiWW91ciBkdWNrIGlzIG5vdCBpbiB0aGUgdG91cm5hbWVudAQLc2F2ZWRIZWFsdGgJARFAZXh0ck5hdGl2ZSgxMDU1KQEJAQ5rZXlTYXZlZEhlYWx0aAEFC2R1Y2tBc3NldElkBA1zYXZlZExvY2F0aW9uCQERQGV4dHJOYXRpdmUoMTA1OCkBCQEQa2V5U2F2ZWRMb2NhdGlvbgEFC2R1Y2tBc3NldElkCQCUCgIJAM0IAgkAzQgCBQ1wcm9sb2dBY3Rpb25zCQEMSW50ZWdlckVudHJ5AgkBDWtleUR1Y2tIZWFsdGgBBQtkdWNrQXNzZXRJZAULc2F2ZWRIZWFsdGgJAQtTdHJpbmdFbnRyeQIFCWN1ckxvY0tleQUNc2F2ZWRMb2NhdGlvbgULY3VyTG9jYXRpb24BaQEWZXhpdFRvdXJuYW1lbnRJbnRlcm5hbAELZHVja0Fzc2V0SWQDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAg1BY2Nlc3MgZGVuaWVkBAtzYXZlZEhlYWx0aAkBEUBleHRyTmF0aXZlKDEwNTUpAQkBDmtleVNhdmVkSGVhbHRoAQULZHVja0Fzc2V0SWQEDXNhdmVkTG9jYXRpb24JARFAZXh0ck5hdGl2ZSgxMDU4KQEJARBrZXlTYXZlZExvY2F0aW9uAQULZHVja0Fzc2V0SWQJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDWtleUR1Y2tIZWFsdGgBBQtkdWNrQXNzZXRJZAULc2F2ZWRIZWFsdGgJAMwIAgkBC1N0cmluZ0VudHJ5AgkBD2tleUR1Y2tMb2NhdGlvbgEFC2R1Y2tBc3NldElkBQ1zYXZlZExvY2F0aW9uBQNuaWwHAWkBFGV4aXREZWxpdmVyeUludGVybmFsAQtkdWNrQXNzZXRJZAMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECDUFjY2VzcyBkZW5pZWQEAWUJARJleGl0RGVsaXZlcnlDb21tb24EBQtkdWNrQXNzZXRJZAcAAAAACQCUCgIJAM4IAggFAWUCXzEIBQFlAl8yBwFpARBhdXRvRXhpdERlbGl2ZXJ5BAtkdWNrQXNzZXRJZAVuZXdIUAZyZWFzb24Fc2NvcmUDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAg1BY2Nlc3MgZGVuaWVkBAFlCQESZXhpdERlbGl2ZXJ5Q29tbW9uBAULZHVja0Fzc2V0SWQGBQVuZXdIUAUFc2NvcmUJAJQKAggFAWUCXzEJAJQKAggFAWUCXzMIBQFlAl80AWkBDnByZXBhcmVSb2JiZXJ5AgdtZXNzYWdlA3NpZwQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQEBIQEJAMQTAwUHbWVzc2FnZQUDc2lnBQNwdWIJAAIBAhhzaWduYXR1cmUgZG9lcyBub3QgbWF0Y2gDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAiJleGFjdGx5IDEgcGF5bWVudCBtdXN0IGJlIGF0dGFjaGVkBANwbXQJAJEDAggFAWkIcGF5bWVudHMAAAQGd2xnQW10CAUDcG10BmFtb3VudAMDCQEBIQEJAQlpc0RlZmluZWQBCAUDcG10B2Fzc2V0SWQGCQECIT0CCQEFdmFsdWUBCAUDcG10B2Fzc2V0SWQFCndsZ0Fzc2V0SWQJAAIBAhVXTEdPTEQgcGF5bWVudHMgb25seSEEBXBhcnRzCQC1CQIJALAJAQUHbWVzc2FnZQIBfAMJAQIhPQIJAJADAQUFcGFydHMAAgkAAgECFFdyb25nIG1lc3NhZ2UgZm9ybWF0BAtkdWNrQXNzZXRJZAkAkQMCBQVwYXJ0cwAAAwkBD2NoZWNrVG91cm5hbWVudAEFC2R1Y2tBc3NldElkCQACAQIecHJlcGFyZVJvYmJlcnlfY2hlY2tUb3VybmFtZW50AwkBDWNoZWNrRGVsaXZlcnkBBQtkdWNrQXNzZXRJZAkAAgECHHByZXBhcmVSb2JiZXJ5X2NoZWNrRGVsaXZlcnkEB3JvYkNvc3QICQEOZ2V0Um9iYmVyeURhdGECBQR0aGlzBQtkdWNrQXNzZXRJZAJfMQMJAGYCBQdyb2JDb3N0BQZ3bGdBbXQJAAIBCQCsAgIJAKwCAgkArAICAghQYXltZW50IAkApAMBBQZ3bGdBbXQCDCA8IHJlcXVpcmVkIAkApAMBBQdyb2JDb3N0BApjYW5kaWRhdGVzCQC1CQIJAJEDAgUFcGFydHMAAQIBXwQDbm93CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQJZHVja1N0YXRlCQELdmFsdWVPckVsc2UCCQCfCAEJARNrZXlEdWNrUm9iYmVyeVN0YXRlAQULZHVja0Fzc2V0SWQAAAQKbG9ja2VkTGFuZAkBC3ZhbHVlT3JFbHNlAgkAoggBCQETa2V5TG9ja2VkTGFuZEJ5RHVjawEFC2R1Y2tBc3NldElkAgAEB2xhbmRFVEEJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBEmtleUxhbmRDb29sZG93bkVUQQEFCmxvY2tlZExhbmQAAAMDCQECIT0CBQlkdWNrU3RhdGUFC2R1Y2tJZHhGcmVlCQBmAgUHbGFuZEVUQQUDbm93BwkAAgEJAKwCAgInWW91IGFscmVhZHkgc3RhcnRlZCByb2JiaW5nLCB3YWl0IHRpbGwgCQCkAwEFB2xhbmRFVEEKAQdjaGVja2VyAgNhY2MLbGFuZEFzc2V0SWQEBXN0YXRlCQELdmFsdWVPckVsc2UCCQCfCAEJARNrZXlMYW5kUm9iYmVyeVN0YXRlAQULbGFuZEFzc2V0SWQAAAQLY29vbGRvd25FVEEJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBEmtleUxhbmRDb29sZG93bkVUQQEFC2xhbmRBc3NldElkAAADCQBmAgUFc3RhdGUJAJADAQUQbGFuZFJvYkNvb2xkb3ducwkAAgECDUludmFsaWQgc3RhdGUDCQBmAgUDbm93BQtjb29sZG93bkVUQQQKc3Rha2VkVGltZQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFC2xhbmRBc3NldElkAAADCQBnAgAABQpzdGFrZWRUaW1lBQNhY2MEAWEJAQV2YWx1ZQEJAOwHAQkA2QQBBQtsYW5kQXNzZXRJZAQBZAkAtQkCCAUBYQtkZXNjcmlwdGlvbgIBXwQGcGllY2VzCQEPbnVtUGllY2VzQnlTaXplAQkAkQMCBQFkBQtyZWNMYW5kU2l6ZQQMcHJvZHVjdGl2aXR5CQEMYXBwbHlCb251c2VzAgULbGFuZEFzc2V0SWQFBnBpZWNlcwQJZGVsdGFUaW1lCQBlAgUDbm93BQpzdGFrZWRUaW1lBAhhdmFpbFJlcwkAawMFCWRlbHRhVGltZQkAaAIFDHByb2R1Y3Rpdml0eQUGcGllY2VzBQlEQVlNSUxMSVMDCQBmAgUOTUlOX1JFU19UT19ST0IFCGF2YWlsUmVzBQNhY2MJAM0IAgUDYWNjBQtsYW5kQXNzZXRJZAUDYWNjBAhmaWx0ZXJlZAoAAiRsBQpjYW5kaWRhdGVzCgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQdjaGVja2VyAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAwkAAAIJAJADAQUIZmlsdGVyZWQAAAkAAgECGU5vIGNhbmRpZGF0ZXMgZm9yIHJvYmJlcnkEBnJuZElkeAkBD2dldFJhbmRvbU51bWJlcgMJAJADAQUIZmlsdGVyZWQFBmhlaWdodAkAywECBQNzaWcIBQFpDXRyYW5zYWN0aW9uSWQEC2xhbmRBc3NldElkCQCRAwIFCGZpbHRlcmVkBQZybmRJZHgJAJQKAgkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQETa2V5TGFuZFJvYmJlcnlTdGF0ZQEFC2xhbmRBc3NldElkBQxyb2JJZHhMb2NrZWQJAMwIAgkBDEludGVnZXJFbnRyeQIJARJrZXlMYW5kQ29vbGRvd25FVEEBBQtsYW5kQXNzZXRJZAkAZAIFA25vdwkAkQMCBRBsYW5kUm9iQ29vbGRvd25zBQxyb2JJZHhMb2NrZWQJAMwIAgkBDEludGVnZXJFbnRyeQIJARNrZXlEdWNrUm9iYmVyeVN0YXRlAQULZHVja0Fzc2V0SWQFEGR1Y2tJZHhQcmVwYXJpbmcJAMwIAgkBC1N0cmluZ0VudHJ5AgkBE2tleUxvY2tlZExhbmRCeUR1Y2sBBQtkdWNrQXNzZXRJZAULbGFuZEFzc2V0SWQFA25pbAUNcHJvbG9nQWN0aW9ucwULbGFuZEFzc2V0SWQBaQEHcm9iTGFuZAIHbWVzc2FnZQNzaWcEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBASEBCQDEEwMFB21lc3NhZ2UFA3NpZwUDcHViCQACAQIYc2lnbmF0dXJlIGRvZXMgbm90IG1hdGNoBAh1c2VyQWRkcgkApQgBCAUBaQZjYWxsZXIEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUIdXNlckFkZHICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQEA25vdwgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAJQKAgkAzQgCBQ1wcm9sb2dBY3Rpb25zCQEMSW50ZWdlckVudHJ5AgkBGGtleUxhc3RSb2JiZXJ5VGltZUJ5RHVjawEFC2R1Y2tBc3NldElkBQNub3cAAAFpAQ5hY2NlcHREZWxpdmVyeQADCQEBIQEFEUtTX0FMTE9XX0RFTElWRVJZCQACAQIfRGVsaXZlcnkgZmVhdHVyZSBpcyB0dXJuZWQgb2ZmIQQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkECHVzZXJBZGRyCQClCAEIBQFpBmNhbGxlcgQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQh1c2VyQWRkcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAQJZnVuZFRvdGFsCQELdmFsdWVPckVsc2UCCQCaCAIFD2Vjb25vbXlDb250cmFjdAUPZGVsaXZlcnlGdW5kS2V5AAAEC2xvY2tlZFRvdGFsCQELdmFsdWVPckVsc2UCCQCaCAIFD2Vjb25vbXlDb250cmFjdAURZGVsaXZlcnlMb2NrZWRLZXkAAAMJAGYCBRVNSU5fVVNEVF9GRUVfREVMSVZFUlkJAGUCBQlmdW5kVG90YWwFC2xvY2tlZFRvdGFsCQACAQkArAICCQCsAgIJAKwCAgIgRGVsaXZlcnkgaXMgbm90IGF2YWlsYWJsZSwgZnVuZD0JAQpmaXhlZFBvaW50AgUJZnVuZFRvdGFsAAYCCSwgbG9ja2VkPQkBCmZpeGVkUG9pbnQCBQtsb2NrZWRUb3RhbAAGBANub3cIBQlsYXN0QmxvY2sJdGltZXN0YW1wBAhkZWxheUVUQQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEWa2V5RGVsaXZlcnlEZWxheUJ5RHVjawEFC2R1Y2tBc3NldElkAAADCQBmAgUIZGVsYXlFVEEFA25vdwkAAgEJAKwCAgIqRGVsaXZlcnkgaXMgZm9yYmlkZGVuIGZvciB5b3VyIGR1Y2sgdW50aWwgCQCkAwEFCGRlbGF5RVRBBAVjb3VudAkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEUa2V5VXNlckRlbGl2ZXJ5Q291bnQBBQh1c2VyQWRkcgAABAdsYXN0RGF5CQELdmFsdWVPckVsc2UCCQCfCAEJARZrZXlVc2VyTGFzdERlbGl2ZXJ5RGF5AQUIdXNlckFkZHIAAAQFdG9kYXkJAGkCBQNub3cFCURBWU1JTExJUwQFYWNyZXMJAQt2YWx1ZU9yRWxzZQIJAJoIAgUNYWNyZXNDb250cmFjdAkBGmtleUFjcmVzU3Rha2VkQW1vdW50QnlVc2VyAQUIdXNlckFkZHIAAAQRYWxsb3dlZERlbGl2ZXJpZXMJAGQCBRdBTExPV0VEX0ZSRUVfREVMSVZFUklFUwkAaQIFBWFjcmVzBRpBQ1JFU19GT1JfREVMSVZFUllfQVRURU1QVAMDCQBnAgUFY291bnQFEWFsbG93ZWREZWxpdmVyaWVzCQBnAgUHbGFzdERheQUFdG9kYXkHCQACAQkArAICCQCsAgICEVlvdSBhbHJlYWR5IHVzZWQgCQCkAwEFEWFsbG93ZWREZWxpdmVyaWVzAhwgZGVsaXZlcnkgYXR0ZW1wdHMgZm9yIHRvZGF5AwkBD2NoZWNrVG91cm5hbWVudAEFC2R1Y2tBc3NldElkCQACAQIeYWNjZXB0RGVsaXZlcnlfY2hlY2tUb3VybmFtZW50AwkBDWNoZWNrRGVsaXZlcnkBBQtkdWNrQXNzZXRJZAkAAgECHGFjY2VwdERlbGl2ZXJ5X2NoZWNrRGVsaXZlcnkEDm5ld0xvY2tlZFRvdGFsCQEFYXNJbnQBCQD8BwQFD2Vjb25vbXlDb250cmFjdAIUdXBkYXRlRGVsaXZlcnlMb2NrZWQJAMwIAgkAZAIFC2xvY2tlZFRvdGFsBRVNSU5fVVNEVF9GRUVfREVMSVZFUlkFA25pbAUDbmlsBAlrZXlIZWFsdGgJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQEBW1heEhQCQEJbWF4SGVhbHRoAQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEMa2V5RHVja0xldmVsAQULZHVja0Fzc2V0SWQAAAQJY3VySGVhbHRoCQELdmFsdWVPckVsc2UCCQCfCAEFCWtleUhlYWx0aAUFbWF4SFAECWN1ckxvY0tleQkBD2tleUR1Y2tMb2NhdGlvbgEFC2R1Y2tBc3NldElkBAtjdXJMb2NhdGlvbgkBC3ZhbHVlT3JFbHNlAgkAoggBBQljdXJMb2NLZXkFD0RFRkFVTFRMT0NBVElPTgQQZGVsaXZlcnlMb2NhdGlvbgkArAICCQCkAwEFA25vdwIEX0RfMAkAlAoCCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIJAQ5rZXlTYXZlZEhlYWx0aAEFC2R1Y2tBc3NldElkBQljdXJIZWFsdGgJAMwIAgkBDEludGVnZXJFbnRyeQIFCWtleUhlYWx0aAUFbWF4SFAJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEGtleVNhdmVkTG9jYXRpb24BBQtkdWNrQXNzZXRJZAULY3VyTG9jYXRpb24JAMwIAgkBC1N0cmluZ0VudHJ5AgUJY3VyTG9jS2V5BRBkZWxpdmVyeUxvY2F0aW9uBQNuaWwFDXByb2xvZ0FjdGlvbnMJAJQKAgUQZGVsaXZlcnlMb2NhdGlvbgUObmV3TG9ja2VkVG90YWwAwRIrtg==", "height": 2792789, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 9d2rSLYLDGdMMVmSniKuxYJJNP7L3wHvfzBsKHwcZkuz Next: AJWsqJF692chTzKrxu1vnN55pnoLTwjr66f4oDFWwuUw Diff:
Old | New | Differences | |
---|---|---|---|
8 | 8 | func c (d) = ("lastArbTimeUser_" + d) | |
9 | 9 | ||
10 | 10 | ||
11 | - | let e = 100000000 | |
12 | - | ||
13 | - | let f = 3200 | |
14 | - | ||
15 | - | let g = 4000 | |
16 | - | ||
17 | - | let h = 3 | |
18 | - | ||
19 | - | let i = 100000000 | |
20 | - | ||
21 | - | let j = 400 | |
22 | - | ||
23 | - | let k = ["Strength", "Accuracy", "Intellect", "Endurance", "Dexterity", "Level", "Health"] | |
24 | - | ||
25 | - | let l = 0 | |
26 | - | ||
27 | - | let m = 1 | |
28 | - | ||
29 | - | let n = 2 | |
30 | - | ||
31 | - | let o = 3 | |
32 | - | ||
33 | - | let p = 4 | |
34 | - | ||
35 | - | let q = 0 | |
36 | - | ||
37 | - | let r = 6 | |
38 | - | ||
39 | - | let s = 2 | |
11 | + | func e (d) = ("acresStakedAmountByUser_" + d) | |
12 | + | ||
13 | + | ||
14 | + | let f = 100000000 | |
15 | + | ||
16 | + | let g = 3200 | |
17 | + | ||
18 | + | let h = 4000 | |
19 | + | ||
20 | + | let i = 3 | |
21 | + | ||
22 | + | let j = 100000000 | |
23 | + | ||
24 | + | let k = 400 | |
25 | + | ||
26 | + | let l = ["Strength", "Accuracy", "Intellect", "Endurance", "Dexterity", "Level", "Health"] | |
27 | + | ||
28 | + | let m = 0 | |
29 | + | ||
30 | + | let n = 1 | |
31 | + | ||
32 | + | let o = 2 | |
33 | + | ||
34 | + | let p = 3 | |
35 | + | ||
36 | + | let q = 4 | |
37 | + | ||
38 | + | let r = 0 | |
39 | + | ||
40 | + | let s = 6 | |
40 | 41 | ||
41 | 42 | let t = 2 | |
42 | 43 | ||
43 | - | let u = 30 | |
44 | - | ||
45 | - | let v = [0, 600000, 900000, 43200000, 21600000] | |
46 | - | ||
47 | - | let w = 20000000 | |
48 | - | ||
49 | - | let x = 1 | |
50 | - | ||
51 | - | let y = 0 | |
52 | - | ||
53 | - | let z = 1 | |
54 | - | ||
55 | - | func A (B) = ("duckHealth_" + B) | |
56 | - | ||
57 | - | ||
58 | - | func C (B) = ("duckChars_" + B) | |
59 | - | ||
60 | - | ||
61 | - | func D (B) = ("duckXP_" + B) | |
62 | - | ||
63 | - | ||
64 | - | func E (B) = ("duckLevel_" + B) | |
65 | - | ||
66 | - | ||
67 | - | func F (B) = ("duckFreePoints_" + B) | |
68 | - | ||
69 | - | ||
70 | - | func G (B) = ("duckEquipment_" + B) | |
71 | - | ||
72 | - | ||
73 | - | func H (d) = ("userXP_" + d) | |
74 | - | ||
75 | - | ||
76 | - | func I (d) = ("userLevel_" + d) | |
77 | - | ||
78 | - | ||
79 | - | func J (d) = ("userFreePoints_" + d) | |
80 | - | ||
81 | - | ||
82 | - | func K (B) = ("savedHealth_" + B) | |
83 | - | ||
84 | - | ||
85 | - | func L (B) = ("savedLocation_" + B) | |
86 | - | ||
87 | - | ||
88 | - | func M (B) = ("duckBuffs_" + B) | |
89 | - | ||
90 | - | ||
91 | - | func N (B) = ("lastRobberyTime_" + B) | |
92 | - | ||
93 | - | ||
94 | - | func O (B) = ("lastRobberyCost_" + B) | |
95 | - | ||
96 | - | ||
97 | - | func P (Q) = ("landRobberyState_" + Q) | |
98 | - | ||
99 | - | ||
100 | - | func R (Q) = ("landCooldownETA_" + Q) | |
101 | - | ||
102 | - | ||
103 | - | func S (B) = ("duckRobberyState_" + B) | |
104 | - | ||
105 | - | ||
106 | - | func T (B) = ("lockedLandByDuck_" + B) | |
107 | - | ||
108 | - | ||
109 | - | func U (B) = ("deliveryDelayByDuck_" + B) | |
110 | - | ||
111 | - | ||
112 | - | let V = 10000 | |
113 | - | ||
114 | - | let W = 10000 | |
115 | - | ||
116 | - | let X = 2000 | |
117 | - | ||
118 | - | let Y = 100000 | |
119 | - | ||
120 | - | let Z = 1000000 | |
121 | - | ||
122 | - | let aa = 5000000 | |
123 | - | ||
124 | - | let ab = 10000 | |
44 | + | let u = 2 | |
45 | + | ||
46 | + | let v = 30 | |
47 | + | ||
48 | + | let w = [0, 600000, 900000, 43200000, 21600000] | |
49 | + | ||
50 | + | let x = 20000000 | |
51 | + | ||
52 | + | let y = 1 | |
53 | + | ||
54 | + | let z = 0 | |
55 | + | ||
56 | + | let A = 1 | |
57 | + | ||
58 | + | func B (C) = ("duckHealth_" + C) | |
59 | + | ||
60 | + | ||
61 | + | func D (C) = ("duckChars_" + C) | |
62 | + | ||
63 | + | ||
64 | + | func E (C) = ("duckXP_" + C) | |
65 | + | ||
66 | + | ||
67 | + | func F (C) = ("duckLevel_" + C) | |
68 | + | ||
69 | + | ||
70 | + | func G (C) = ("duckFreePoints_" + C) | |
71 | + | ||
72 | + | ||
73 | + | func H (C) = ("duckEquipment_" + C) | |
74 | + | ||
75 | + | ||
76 | + | func I (d) = ("userXP_" + d) | |
77 | + | ||
78 | + | ||
79 | + | func J (d) = ("userLevel_" + d) | |
80 | + | ||
81 | + | ||
82 | + | func K (d) = ("userFreePoints_" + d) | |
83 | + | ||
84 | + | ||
85 | + | func L (C) = ("savedHealth_" + C) | |
86 | + | ||
87 | + | ||
88 | + | func M (C) = ("savedLocation_" + C) | |
89 | + | ||
90 | + | ||
91 | + | func N (C) = ("duckBuffs_" + C) | |
92 | + | ||
93 | + | ||
94 | + | func O (C) = ("lastRobberyTime_" + C) | |
95 | + | ||
96 | + | ||
97 | + | func P (C) = ("lastRobberyCost_" + C) | |
98 | + | ||
99 | + | ||
100 | + | func Q (R) = ("landRobberyState_" + R) | |
101 | + | ||
102 | + | ||
103 | + | func S (R) = ("landCooldownETA_" + R) | |
104 | + | ||
105 | + | ||
106 | + | func T (C) = ("duckRobberyState_" + C) | |
107 | + | ||
108 | + | ||
109 | + | func U (C) = ("lockedLandByDuck_" + C) | |
110 | + | ||
111 | + | ||
112 | + | func V (C) = ("deliveryDelayByDuck_" + C) | |
113 | + | ||
114 | + | ||
115 | + | func W (d) = ("userDeliverycount_" + d) | |
116 | + | ||
117 | + | ||
118 | + | func X (d) = ("userLastDeliveryDay_" + d) | |
119 | + | ||
120 | + | ||
121 | + | let Y = 10000 | |
122 | + | ||
123 | + | let Z = 10000 | |
124 | + | ||
125 | + | let aa = 2000 | |
126 | + | ||
127 | + | let ab = 100000 | |
125 | 128 | ||
126 | 129 | let ac = 1000000 | |
127 | 130 | ||
128 | - | let ad = | |
131 | + | let ad = 5000000 | |
129 | 132 | ||
130 | 133 | let ae = 10000 | |
131 | 134 | ||
132 | - | ||
133 | - | ||
134 | - | ||
135 | - | ||
136 | - | ||
137 | - | ||
138 | - | func | |
139 | - | ||
140 | - | ||
141 | - | ||
142 | - | ||
143 | - | ||
144 | - | func | |
145 | - | let | |
146 | - | ||
147 | - | | |
148 | - | ||
149 | - | ||
150 | - | ||
151 | - | | |
152 | - | | |
153 | - | ||
154 | - | ||
155 | - | ||
156 | - | | |
157 | - | | |
158 | - | | |
159 | - | ||
160 | - | ||
161 | - | ||
162 | - | let | |
163 | - | | |
164 | - | | |
165 | - | ||
166 | - | ||
167 | - | let | |
168 | - | ||
169 | - | ||
170 | - | ||
171 | - | ||
172 | - | ||
173 | - | let aG = | |
174 | - | ||
175 | - | let aH = | |
176 | - | ||
177 | - | let aI = | |
178 | - | ||
179 | - | let aJ = | |
180 | - | ||
181 | - | let aK = | |
182 | - | ||
183 | - | let aL = | |
184 | - | ||
185 | - | let aM = | |
186 | - | ||
187 | - | let aN = | |
188 | - | ||
189 | - | let aO = | |
190 | - | ||
191 | - | let aP = | |
192 | - | ||
193 | - | let aQ = | |
194 | - | ||
195 | - | let aR = | |
196 | - | ||
197 | - | let aS = | |
198 | - | ||
199 | - | let aT = | |
200 | - | ||
201 | - | let aU = | |
202 | - | ||
203 | - | let aV = | |
204 | - | ||
205 | - | let aW = | |
206 | - | ||
207 | - | let aX = | |
208 | - | ||
209 | - | let aY = 10 | |
210 | - | ||
211 | - | let aZ = | |
212 | - | ||
213 | - | let ba = | |
214 | - | ||
215 | - | let bb = | |
216 | - | ||
217 | - | let bc = | |
218 | - | ||
219 | - | let bd = | |
135 | + | let af = 1000000 | |
136 | + | ||
137 | + | let ag = 1000000 | |
138 | + | ||
139 | + | let ah = 10000 | |
140 | + | ||
141 | + | func ai (aj) = fraction(g, pow(aj, 4, h, 4, 4, DOWN), f) | |
142 | + | ||
143 | + | ||
144 | + | func ak (al) = (100 + al) | |
145 | + | ||
146 | + | ||
147 | + | func am (an,ao) = { | |
148 | + | let ap = ai(ao) | |
149 | + | [ap, (i * (ap - an))] | |
150 | + | } | |
151 | + | ||
152 | + | ||
153 | + | func aq (ar,C,as,at) = { | |
154 | + | let au = split(valueOrElse(getString(ar, D(C)), "0_0_0_0_0"), "_") | |
155 | + | let av = valueOrElse(getInteger(ar, F(C)), 0) | |
156 | + | let aw = valueOrElse(getInteger(ar, B(C)), ak(av)) | |
157 | + | let ax = split(valueOrElse(getString(ar, N(C)), "0_0_0_0_0"), "_") | |
158 | + | ([parseIntValue(au[m]), parseIntValue(au[n]), parseIntValue(au[o]), parseIntValue(au[p]), parseIntValue(au[q]), av, aw] ++ (if (at) | |
159 | + | then [as, as, as, as, as] | |
160 | + | else [parseIntValue(ax[m]), parseIntValue(ax[n]), parseIntValue(ax[o]), parseIntValue(ax[p]), parseIntValue(ax[q])])) | |
161 | + | } | |
162 | + | ||
163 | + | ||
164 | + | func ay (ar,C) = { | |
165 | + | let az = valueOrElse(getInteger(ar, P(C)), 0) | |
166 | + | let aA = valueOrElse(getInteger(ar, O(C)), 0) | |
167 | + | let aB = lastBlock.timestamp | |
168 | + | let aC = max([j, (az - (k * (aB - aA)))]) | |
169 | + | let aD = valueOrElse(getInteger(ar, T(C)), 0) | |
170 | + | let aE = valueOrElse(getString(ar, U(C)), "") | |
171 | + | let aF = valueOrElse(getInteger(ar, S(aE)), 0) | |
172 | + | $Tuple5(aC, aA, aD, aE, aF) | |
173 | + | } | |
174 | + | ||
175 | + | ||
176 | + | let aG = "LAND" | |
177 | + | ||
178 | + | let aH = "DUCK" | |
179 | + | ||
180 | + | let aI = "PRESALE" | |
181 | + | ||
182 | + | let aJ = 6 | |
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 = 3 | |
201 | + | ||
202 | + | let aT = 20000000 | |
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 | |
219 | + | ||
220 | + | let bc = 10 | |
221 | + | ||
222 | + | let bd = 10 | |
220 | 223 | ||
221 | 224 | let be = 0 | |
222 | 225 | ||
226 | 229 | ||
227 | 230 | let bh = 3 | |
228 | 231 | ||
229 | - | let bi = 0 | |
230 | - | ||
231 | - | let bj = 1 | |
232 | - | ||
233 | - | let bk = 2 | |
234 | - | ||
235 | - | let bl = 3 | |
236 | - | ||
237 | - | let bm = 0 | |
238 | - | ||
239 | - | let bn = 1 | |
240 | - | ||
241 | - | let bo = 2 | |
242 | - | ||
243 | - | func bp (bq) = ("no_" + bq) | |
244 | - | ||
245 | - | ||
246 | - | func br (bq) = ("lcna_" + bq) | |
247 | - | ||
248 | - | ||
249 | - | func bs (bq) = ("st_" + bq) | |
250 | - | ||
251 | - | ||
252 | - | func bt (bu,bq) = makeString(["las", bu, bq], "_") | |
253 | - | ||
254 | - | ||
255 | - | func bv (bw,bq,bx) = ((((("sttao_" + bw) + "_") + bq) + "_") + bx) | |
256 | - | ||
257 | - | ||
258 | - | func by (Q) = ("wh_" + Q) | |
259 | - | ||
260 | - | ||
261 | - | func bz (bq) = ("infraLevel_" + bq) | |
262 | - | ||
263 | - | ||
264 | - | func bA (Q) = ("fortifications_" + Q) | |
265 | - | ||
266 | - | ||
267 | - | func bB (bq) = ("duckCustomNameByAssetId_" + bq) | |
268 | - | ||
269 | - | ||
270 | - | func bC (d) = ("accountCustomNameByAddr_" + d) | |
271 | - | ||
272 | - | ||
273 | - | func bD (d) = ("accRefBy_" + d) | |
274 | - | ||
275 | - | ||
276 | - | func bE (B) = ("onboardArtActivatedOnDuck_" + B) | |
277 | - | ||
278 | - | ||
279 | - | func bF (d) = ("onboardArtActivatedDuckBy_" + d) | |
280 | - | ||
281 | - | ||
282 | - | func bG (d) = ("accReferrals_" + d) | |
283 | - | ||
284 | - | ||
285 | - | func bH (bq) = ("duckOwner_" + bq) | |
286 | - | ||
287 | - | ||
288 | - | func bI (bx) = ("stakedDuckByOwner_" + bx) | |
289 | - | ||
290 | - | ||
291 | - | func bJ (B) = ("backPack_" + B) | |
292 | - | ||
293 | - | ||
294 | - | func bK (B) = ("duckLocation_" + B) | |
295 | - | ||
296 | - | ||
297 | - | func bL (bM) = ("%s%s__userGwlReleaseTime__" + bM) | |
298 | - | ||
299 | - | ||
300 | - | func bN () = "emergencyWarehouseProducts" | |
301 | - | ||
302 | - | ||
303 | - | let bO = "deliveryFund" | |
304 | - | ||
305 | - | let bP = "deliveryLocked" | |
306 | - | ||
307 | - | let bQ = "%s__lastTourId" | |
308 | - | ||
309 | - | func bR (bS) = ("%s%d__tourStaticData__" + toString(bS)) | |
310 | - | ||
311 | - | ||
312 | - | func bT (bS) = ("%s%d__tourDynamicData__" + toString(bS)) | |
313 | - | ||
314 | - | ||
315 | - | func bU (bS,B) = makeString(["%s%d%s__bestResultByTourAndDuck", toString(bS), B], "__") | |
316 | - | ||
317 | - | ||
318 | - | let bV = 0 | |
319 | - | ||
320 | - | let bW = 1 | |
321 | - | ||
322 | - | let bX = 6 | |
323 | - | ||
324 | - | let bY = 1 | |
325 | - | ||
326 | - | func bZ (ca,bS) = { | |
327 | - | let cb = split(valueOrErrorMessage(getString(ca, bR(bS)), (("Error reading tournament " + toString(bS)) + " data")), "__") | |
328 | - | let cc = split_4C(valueOrErrorMessage(getString(ca, bT(bS)), (("Error reading tournament " + toString(bS)) + " data")), "__") | |
329 | - | [cb, cc] | |
330 | - | } | |
331 | - | ||
332 | - | ||
333 | - | func cd (ca,ce) = { | |
334 | - | let cf = valueOrElse(getInteger(ca, bQ), 0) | |
335 | - | let cg = split(ce, "_") | |
336 | - | let ay = lastBlock.timestamp | |
337 | - | let ch = bZ(ca, cf) | |
338 | - | let cb = ch[bV] | |
339 | - | let cc = ch[bW] | |
340 | - | if (if (if ((cg[bn] == "T")) | |
341 | - | then (parseIntValue(cg[bm]) == cf) | |
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 (R) = ("wh_" + R) | |
272 | + | ||
273 | + | ||
274 | + | func bE (bv) = ("infraLevel_" + bv) | |
275 | + | ||
276 | + | ||
277 | + | func bF (R) = ("fortifications_" + R) | |
278 | + | ||
279 | + | ||
280 | + | func bG (bv) = ("duckCustomNameByAssetId_" + bv) | |
281 | + | ||
282 | + | ||
283 | + | func bH (d) = ("accountCustomNameByAddr_" + d) | |
284 | + | ||
285 | + | ||
286 | + | func bI (d) = ("accRefBy_" + d) | |
287 | + | ||
288 | + | ||
289 | + | func bJ (C) = ("onboardArtActivatedOnDuck_" + C) | |
290 | + | ||
291 | + | ||
292 | + | func bK (d) = ("onboardArtActivatedDuckBy_" + d) | |
293 | + | ||
294 | + | ||
295 | + | func bL (d) = ("accReferrals_" + d) | |
296 | + | ||
297 | + | ||
298 | + | func bM (bv) = ("duckOwner_" + bv) | |
299 | + | ||
300 | + | ||
301 | + | func bN (bC) = ("stakedDuckByOwner_" + bC) | |
302 | + | ||
303 | + | ||
304 | + | func bO (C) = ("backPack_" + C) | |
305 | + | ||
306 | + | ||
307 | + | func bP (C) = ("duckLocation_" + C) | |
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,C) = makeString(["%s%d%s__bestResultByTourAndDuck", toString(bX), C], "__") | |
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, "_") | |
349 | + | let aB = 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) | |
342 | 355 | else false) | |
343 | - | then ( | |
356 | + | then (ch[cd] == "INPROGRESS") | |
344 | 357 | else false) | |
345 | - | then (parseIntValue( | |
358 | + | then (parseIntValue(cg[cc]) > aB) | |
346 | 359 | else false | |
347 | 360 | } | |
348 | 361 | ||
349 | 362 | ||
350 | - | func | |
351 | - | let | |
352 | - | let | |
353 | - | let | |
354 | - | let | |
355 | - | if (if (( | |
356 | - | then (( | |
363 | + | func cn (cj) = { | |
364 | + | let cl = split(cj, "_") | |
365 | + | let aB = lastBlock.timestamp | |
366 | + | let co = parseIntValue(cl[br]) | |
367 | + | let cp = parseIntValue(cl[bt]) | |
368 | + | if (if ((cl[bs] == "D")) | |
369 | + | then ((co + aR) > aB) | |
357 | 370 | else false) | |
358 | - | then (3 >= | |
371 | + | then (3 >= cp) | |
359 | 372 | else false | |
360 | 373 | } | |
361 | 374 | ||
362 | 375 | ||
363 | - | func | |
364 | - | let | |
365 | - | if (( | |
366 | - | then ( | |
376 | + | func cq (cj) = { | |
377 | + | let cr = split(cj, "_")[bs] | |
378 | + | if ((cr != "T")) | |
379 | + | then (cr != "D") | |
367 | 380 | else false | |
368 | 381 | } | |
369 | 382 | ||
370 | 383 | ||
371 | - | func | |
372 | - | let | |
373 | - | let | |
374 | - | let | |
375 | - | let | |
376 | - | let | |
377 | - | let | |
378 | - | let | |
379 | - | if (( | |
384 | + | func cs (cf,cj) = { | |
385 | + | let ck = valueOrElse(getInteger(cf, bV), 0) | |
386 | + | let cl = split(cj, "_") | |
387 | + | let aB = 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")) | |
380 | 393 | then true | |
381 | - | else if (if (if (( | |
382 | - | then (parseIntValue( | |
394 | + | else if (if (if ((cl[bs] == "T")) | |
395 | + | then (parseIntValue(cl[br]) == ck) | |
383 | 396 | else false) | |
384 | - | then ( | |
397 | + | then (ch[cd] == "INPROGRESS") | |
385 | 398 | else false) | |
386 | - | then (parseIntValue( | |
399 | + | then (parseIntValue(cg[cc]) > aB) | |
387 | 400 | else false | |
388 | 401 | } | |
389 | 402 | ||
390 | 403 | ||
391 | - | func | |
392 | - | ||
393 | - | ||
394 | - | func | |
395 | - | ||
396 | - | ||
397 | - | let | |
398 | - | ||
399 | - | let | |
400 | - | ||
401 | - | let | |
402 | - | ||
403 | - | let | |
404 | - | ||
405 | - | let | |
406 | - | let | |
407 | - | if ((base58'2W' == | |
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 | + | ||
409 | + | ||
410 | + | let cz = false | |
411 | + | ||
412 | + | let cA = false | |
413 | + | ||
414 | + | let cB = true | |
415 | + | ||
416 | + | let cC = take(drop(this.bytes, 1), 1) | |
417 | + | ||
418 | + | let cD = { | |
419 | + | let cE = cC | |
420 | + | if ((base58'2W' == cE)) | |
408 | 421 | then base58'9wc3LXNA4TEBsXyKtoLE9mrbDD7WMHXvXrCjZvabLAsi' | |
409 | - | else if ((base58'2T' == | |
422 | + | else if ((base58'2T' == cE)) | |
410 | 423 | then base58'6mWwf9mZBjVgkC54idpyaZLQfAosD914wT8fGf2iiY63' | |
411 | 424 | else throw("Unknown chain") | |
412 | 425 | } | |
413 | 426 | ||
414 | - | let | |
415 | - | let | |
416 | - | if ((base58'2W' == | |
427 | + | let cF = { | |
428 | + | let cE = cC | |
429 | + | if ((base58'2W' == cE)) | |
417 | 430 | then "3PQCuvFbvh4LkPUnrnU1z3jnbA1p9m3WNhv" | |
418 | - | else if ((base58'2T' == | |
431 | + | else if ((base58'2T' == cE)) | |
419 | 432 | then "3MumkGGztCKAXpWDqxkddofqXSUbqQkvSJy" | |
420 | 433 | else throw("Unknown chain") | |
421 | 434 | } | |
422 | 435 | ||
423 | - | let | |
424 | - | let | |
425 | - | if ((base58'2W' == | |
436 | + | let cG = { | |
437 | + | let cE = cC | |
438 | + | if ((base58'2W' == cE)) | |
426 | 439 | then 10000000000 | |
427 | - | else if ((base58'2T' == | |
440 | + | else if ((base58'2T' == cE)) | |
428 | 441 | then 100000000 | |
429 | 442 | else throw("Unknown chain") | |
430 | 443 | } | |
431 | 444 | ||
432 | - | let | |
433 | - | let | |
434 | - | if ((base58'2W' == | |
445 | + | let cH = { | |
446 | + | let cE = cC | |
447 | + | if ((base58'2W' == cE)) | |
435 | 448 | then 86400000 | |
436 | - | else if ((base58'2T' == | |
449 | + | else if ((base58'2T' == cE)) | |
437 | 450 | then 60000 | |
438 | 451 | else throw("Unknown chain") | |
439 | 452 | } | |
440 | 453 | ||
441 | - | let | |
442 | - | ||
443 | - | let | |
444 | - | ||
445 | - | let | |
446 | - | ||
447 | - | let | |
448 | - | ||
449 | - | let | |
450 | - | ||
451 | - | let | |
452 | - | ||
453 | - | let | |
454 | - | ||
455 | - | let | |
456 | - | ||
457 | - | let | |
458 | - | ||
459 | - | func | |
460 | - | ||
461 | - | ||
462 | - | let | |
463 | - | ||
464 | - | let | |
465 | - | ||
466 | - | let | |
467 | - | ||
468 | - | let | |
469 | - | ||
470 | - | let | |
471 | - | ||
472 | - | let | |
473 | - | ||
474 | - | func | |
475 | - | ||
476 | - | ||
477 | - | func | |
478 | - | ||
479 | - | ||
480 | - | func | |
481 | - | ||
482 | - | ||
483 | - | func | |
484 | - | ||
485 | - | ||
486 | - | let | |
487 | - | ||
488 | - | let | |
489 | - | ||
490 | - | let | |
491 | - | ||
492 | - | let | |
493 | - | ||
494 | - | let | |
495 | - | ||
496 | - | let | |
497 | - | ||
498 | - | let | |
499 | - | ||
500 | - | let | |
501 | - | ||
502 | - | let | |
503 | - | ||
504 | - | let | |
505 | - | ||
506 | - | let | |
507 | - | ||
508 | - | let | |
509 | - | ||
510 | - | let | |
511 | - | ||
512 | - | let | |
513 | - | ||
514 | - | let | |
515 | - | ||
516 | - | let | |
517 | - | ||
518 | - | let | |
519 | - | ||
520 | - | func | |
521 | - | ||
522 | - | ||
523 | - | func | |
524 | - | ||
525 | - | ||
526 | - | func | |
527 | - | ||
528 | - | ||
529 | - | func | |
530 | - | ||
531 | - | ||
532 | - | func | |
533 | - | ||
534 | - | ||
535 | - | func | |
536 | - | let | |
537 | - | if ($isInstanceOf( | |
454 | + | let cI = "__" | |
455 | + | ||
456 | + | let cJ = 1000000 | |
457 | + | ||
458 | + | let cK = 100000000 | |
459 | + | ||
460 | + | let cL = 25 | |
461 | + | ||
462 | + | let cM = 100 | |
463 | + | ||
464 | + | let cN = 225 | |
465 | + | ||
466 | + | let cO = 400 | |
467 | + | ||
468 | + | let cP = 625 | |
469 | + | ||
470 | + | let cQ = [0, 1, 2, 3, 4, 5] | |
471 | + | ||
472 | + | func cR (cS,cT) = valueOrErrorMessage(getString(cS, cT), makeString(["mandatory ", toString(cS), ".", cT, " is not defined"], "")) | |
473 | + | ||
474 | + | ||
475 | + | let cU = 1 | |
476 | + | ||
477 | + | let cV = 2 | |
478 | + | ||
479 | + | let cW = 3 | |
480 | + | ||
481 | + | let cX = 4 | |
482 | + | ||
483 | + | let cY = 7 | |
484 | + | ||
485 | + | let cZ = 8 | |
486 | + | ||
487 | + | func da () = "%s__restConfig" | |
488 | + | ||
489 | + | ||
490 | + | func db () = "%s__restAddr" | |
491 | + | ||
492 | + | ||
493 | + | func dc (dd) = split_4C(cR(dd, da()), cI) | |
494 | + | ||
495 | + | ||
496 | + | func de (df,dg) = valueOrErrorMessage(addressFromString(df[dg]), ("Rest cfg doesn't contain address at index " + toString(dg))) | |
497 | + | ||
498 | + | ||
499 | + | let dh = addressFromStringValue(valueOrElse(getString(this, db()), cF)) | |
500 | + | ||
501 | + | let df = dc(dh) | |
502 | + | ||
503 | + | let ar = de(df, cU) | |
504 | + | ||
505 | + | let di = de(df, cV) | |
506 | + | ||
507 | + | let dj = de(df, cW) | |
508 | + | ||
509 | + | let dk = de(df, cX) | |
510 | + | ||
511 | + | let dl = de(df, cY) | |
512 | + | ||
513 | + | let dm = de(df, cZ) | |
514 | + | ||
515 | + | let dn = 0 | |
516 | + | ||
517 | + | let do = 1 | |
518 | + | ||
519 | + | let dp = 2 | |
520 | + | ||
521 | + | let dq = 3 | |
522 | + | ||
523 | + | let dr = "wlg_assetId" | |
524 | + | ||
525 | + | let ds = valueOrErrorMessage(getBinary(dk, dr), "WLGOLD is not issued yet") | |
526 | + | ||
527 | + | let dt = "acresAssetId" | |
528 | + | ||
529 | + | let du = valueOrErrorMessage(getBinary(dm, dt), "ACRES is not issued yet") | |
530 | + | ||
531 | + | let dv = 2 | |
532 | + | ||
533 | + | func dw (cS) = ("finishBlockForAddr_" + cS) | |
534 | + | ||
535 | + | ||
536 | + | func dx () = "resTypesProportions" | |
537 | + | ||
538 | + | ||
539 | + | func dy (dz) = ("resTypesByContinent_" + dz) | |
540 | + | ||
541 | + | ||
542 | + | func dA (bC) = ("stakedLandsByOwner_" + bC) | |
543 | + | ||
544 | + | ||
545 | + | func dB (bC) = ("stakedPiecesByOwner_" + bC) | |
546 | + | ||
547 | + | ||
548 | + | func dC (dD) = { | |
549 | + | let cE = dD | |
550 | + | if ($isInstanceOf(cE, "String")) | |
538 | 551 | then { | |
539 | - | let | |
540 | - | | |
552 | + | let dE = cE | |
553 | + | dE | |
541 | 554 | } | |
542 | 555 | else throw("fail to cast into String") | |
543 | 556 | } | |
544 | 557 | ||
545 | 558 | ||
546 | - | func | |
547 | - | let | |
548 | - | if ($isInstanceOf( | |
559 | + | func dF (dD) = { | |
560 | + | let cE = dD | |
561 | + | if ($isInstanceOf(cE, "Int")) | |
549 | 562 | then { | |
550 | - | let | |
551 | - | | |
563 | + | let dG = cE | |
564 | + | dG | |
552 | 565 | } | |
553 | 566 | else throw("fail to cast into Int") | |
554 | 567 | } | |
555 | 568 | ||
556 | 569 | ||
557 | - | func | |
558 | - | let | |
559 | - | if ($isInstanceOf( | |
570 | + | func dH (dD) = { | |
571 | + | let cE = dD | |
572 | + | if ($isInstanceOf(cE, "List[Any]")) | |
560 | 573 | then { | |
561 | - | let | |
562 | - | | |
574 | + | let dI = cE | |
575 | + | dI | |
563 | 576 | } | |
564 | 577 | else throw("fail to cast into List[Any]") | |
565 | 578 | } | |
566 | 579 | ||
567 | 580 | ||
568 | - | func | |
569 | - | let | |
570 | - | if ($isInstanceOf( | |
581 | + | func dJ (dD) = { | |
582 | + | let cE = dD | |
583 | + | if ($isInstanceOf(cE, "Boolean")) | |
571 | 584 | then { | |
572 | - | let | |
573 | - | | |
585 | + | let dE = cE | |
586 | + | dE | |
574 | 587 | } | |
575 | 588 | else throw("fail to cast into Boolean") | |
576 | 589 | } | |
577 | 590 | ||
578 | 591 | ||
579 | - | func | |
580 | - | let | |
581 | - | if ($isInstanceOf( | |
592 | + | func dK (dL) = { | |
593 | + | let cE = dL | |
594 | + | if ($isInstanceOf(cE, "(String, Int)")) | |
582 | 595 | then { | |
583 | - | let | |
584 | - | | |
596 | + | let dM = cE | |
597 | + | dM | |
585 | 598 | } | |
586 | 599 | else throw("fail to cast into (String, Int)") | |
587 | 600 | } | |
588 | 601 | ||
589 | 602 | ||
590 | - | func | |
591 | - | let | |
592 | - | if (("S" == | |
593 | - | then | |
594 | - | else if (("M" == | |
595 | - | then | |
596 | - | else if (("L" == | |
597 | - | then | |
598 | - | else if (("XL" == | |
599 | - | then | |
600 | - | else if (("XXL" == | |
601 | - | then | |
603 | + | func dN (dO) = { | |
604 | + | let cE = dO | |
605 | + | if (("S" == cE)) | |
606 | + | then cL | |
607 | + | else if (("M" == cE)) | |
608 | + | then cM | |
609 | + | else if (("L" == cE)) | |
610 | + | then cN | |
611 | + | else if (("XL" == cE)) | |
612 | + | then cO | |
613 | + | else if (("XXL" == cE)) | |
614 | + | then cP | |
602 | 615 | else throw("Unknown land size") | |
603 | 616 | } | |
604 | 617 | ||
605 | 618 | ||
606 | - | func | |
607 | - | ||
608 | - | ||
609 | - | func | |
610 | - | ||
611 | - | ||
612 | - | func | |
613 | - | ||
614 | - | ||
615 | - | func | |
616 | - | let | |
617 | - | let | |
618 | - | let | |
619 | - | (((toString(( | |
620 | - | } | |
621 | - | ||
622 | - | ||
623 | - | func | |
624 | - | let | |
625 | - | let | |
626 | - | (toInt( | |
627 | - | } | |
628 | - | ||
629 | - | ||
630 | - | let | |
631 | - | let | |
632 | - | if ((base58'2W' == | |
619 | + | func dP (dE) = isDefined(parseInt(dE)) | |
620 | + | ||
621 | + | ||
622 | + | func dQ () = "contractsBlocked" | |
623 | + | ||
624 | + | ||
625 | + | func dR (d) = ("lastTxIdByUser_" + d) | |
626 | + | ||
627 | + | ||
628 | + | func dS (dL,dT) = { | |
629 | + | let dU = pow(10, 0, dT, 0, 0, DOWN) | |
630 | + | let dV = toString((dL % dU)) | |
631 | + | let dW = drop(toString(dU), (1 + size(dV))) | |
632 | + | (((toString((dL / dU)) + ".") + dW) + dV) | |
633 | + | } | |
634 | + | ||
635 | + | ||
636 | + | func dX (dY,dZ,ea) = { | |
637 | + | let eb = value(blockInfoByHeight(dZ)) | |
638 | + | let ec = sha256((value(eb.vrf) + ea)) | |
639 | + | (toInt(ec) % dY) | |
640 | + | } | |
641 | + | ||
642 | + | ||
643 | + | let ed = { | |
644 | + | let cE = cC | |
645 | + | if ((base58'2W' == cE)) | |
633 | 646 | then addressFromStringValue("3PEktVux2RhchSN63DsDo4b4mz4QqzKSeDv") | |
634 | - | else if ((base58'2T' == | |
647 | + | else if ((base58'2T' == cE)) | |
635 | 648 | then this | |
636 | 649 | else throw("Unknown chain") | |
637 | 650 | } | |
638 | 651 | ||
639 | - | let | |
640 | - | let | |
641 | - | if ((base58'2W' == | |
652 | + | let ee = { | |
653 | + | let cE = cC | |
654 | + | if ((base58'2W' == cE)) | |
642 | 655 | then addressFromStringValue("3PDVuU45H7Eh5dmtNbnRNRStGwULA7NY6Hb") | |
643 | - | else if ((base58'2T' == | |
656 | + | else if ((base58'2T' == cE)) | |
644 | 657 | then this | |
645 | 658 | else throw("Unknown chain") | |
646 | 659 | } | |
647 | 660 | ||
648 | - | let | |
649 | - | let | |
650 | - | if ((base58'2W' == | |
651 | - | then if ( | |
661 | + | let ef = { | |
662 | + | let cE = cC | |
663 | + | if ((base58'2W' == cE)) | |
664 | + | then if (cz) | |
652 | 665 | then base58'CWsMtTZC5BjjoL4Q1ayW4Wwb1ehGACQB6DrKyPgotKfm' | |
653 | 666 | else base58'6LfPuKJjLgekmncBhMg2LZyMTNVzZBccXR28ySXm9uXD' | |
654 | - | else if ((base58'2T' == | |
667 | + | else if ((base58'2T' == cE)) | |
655 | 668 | then base58'6LfPuKJjLgekmncBhMg2LZyMTNVzZBccXR28ySXm9uXD' | |
656 | 669 | else throw("Unknown chain") | |
657 | 670 | } | |
658 | 671 | ||
659 | - | let | |
660 | - | ||
661 | - | let | |
662 | - | ||
663 | - | let | |
664 | - | ||
665 | - | let | |
666 | - | ||
667 | - | let | |
668 | - | ||
669 | - | let | |
670 | - | let | |
671 | - | if ((base58'2W' == | |
672 | + | let eg = base64'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==' | |
673 | + | ||
674 | + | let eh = 300000 | |
675 | + | ||
676 | + | let ei = 5000000 | |
677 | + | ||
678 | + | let ej = 50 | |
679 | + | ||
680 | + | let ek = 10000000 | |
681 | + | ||
682 | + | let el = { | |
683 | + | let cE = cC | |
684 | + | if ((base58'2W' == cE)) | |
672 | 685 | then 252289527462 | |
673 | - | else if ((base58'2T' == | |
686 | + | else if ((base58'2T' == cE)) | |
674 | 687 | then 2522895274 | |
675 | 688 | else throw("Unknown chain") | |
676 | 689 | } | |
677 | 690 | ||
678 | - | let | |
679 | - | let | |
680 | - | if ((base58'2W' == | |
691 | + | let em = { | |
692 | + | let cE = cC | |
693 | + | if ((base58'2W' == cE)) | |
681 | 694 | then 250000000 | |
682 | - | else if ((base58'2T' == | |
695 | + | else if ((base58'2T' == cE)) | |
683 | 696 | then 250000000 | |
684 | 697 | else throw("Unknown chain") | |
685 | 698 | } | |
686 | 699 | ||
687 | - | let | |
688 | - | ||
689 | - | let | |
690 | - | ||
691 | - | let | |
692 | - | ||
693 | - | let | |
694 | - | ||
695 | - | let | |
696 | - | ||
697 | - | let | |
698 | - | ||
699 | - | let | |
700 | - | ||
701 | - | let | |
702 | - | ||
703 | - | func | |
704 | - | ||
705 | - | ||
706 | - | func | |
707 | - | ||
708 | - | ||
709 | - | func | |
710 | - | ||
711 | - | ||
712 | - | func | |
713 | - | ||
714 | - | ||
715 | - | func | |
716 | - | ||
717 | - | ||
718 | - | func | |
719 | - | ||
720 | - | ||
721 | - | func | |
722 | - | ||
723 | - | ||
724 | - | func | |
725 | - | ||
726 | - | ||
727 | - | let | |
728 | - | ||
729 | - | let | |
730 | - | ||
731 | - | let | |
732 | - | ||
733 | - | let | |
734 | - | ||
735 | - | let | |
736 | - | ||
737 | - | let | |
738 | - | ||
739 | - | let | |
740 | - | ||
741 | - | func | |
742 | - | ||
743 | - | ||
744 | - | func | |
745 | - | let | |
746 | - | then ((( | |
747 | - | else -((((-( | |
748 | - | ( | |
749 | - | } | |
750 | - | ||
751 | - | ||
752 | - | func | |
753 | - | let | |
754 | - | if ((0 >= | |
700 | + | let en = 2500000000 | |
701 | + | ||
702 | + | let eo = toBigInt(5) | |
703 | + | ||
704 | + | let ep = toBigInt(20) | |
705 | + | ||
706 | + | let eq = toBigInt((20 * 20)) | |
707 | + | ||
708 | + | let er = toBigInt(((20 * 20) * 20)) | |
709 | + | ||
710 | + | let es = toBigInt((((20 * 20) * 20) * 20)) | |
711 | + | ||
712 | + | let et = toBigInt(((((20 * 20) * 20) * 20) * 20)) | |
713 | + | ||
714 | + | let eu = 500 | |
715 | + | ||
716 | + | func ev () = "nextLandNum" | |
717 | + | ||
718 | + | ||
719 | + | func ew (ex) = ("lcn_" + ex) | |
720 | + | ||
721 | + | ||
722 | + | func ey (ez) = ("la_" + ez) | |
723 | + | ||
724 | + | ||
725 | + | func eA (bv,bC) = ((("ilao_" + bv) + "_") + bC) | |
726 | + | ||
727 | + | ||
728 | + | func eB (ez) = ("lo_" + ez) | |
729 | + | ||
730 | + | ||
731 | + | func eC (ex) = ("duckByCustomName_" + ex) | |
732 | + | ||
733 | + | ||
734 | + | func eD (ex) = ("accountByCustomName_" + ex) | |
735 | + | ||
736 | + | ||
737 | + | func eE () = "oldiesList" | |
738 | + | ||
739 | + | ||
740 | + | let eF = 0 | |
741 | + | ||
742 | + | let eG = 1 | |
743 | + | ||
744 | + | let eH = 2 | |
745 | + | ||
746 | + | let eI = 0 | |
747 | + | ||
748 | + | let eJ = 5 | |
749 | + | ||
750 | + | let eK = 6 | |
751 | + | ||
752 | + | let eL = 7 | |
753 | + | ||
754 | + | func eM (ez,dO) = ((aG + ez) + dO) | |
755 | + | ||
756 | + | ||
757 | + | func eN (eO,eP) = { | |
758 | + | let eQ = if ((eO >= 0)) | |
759 | + | then (((eO + eP) - 1) / eP) | |
760 | + | else -((((-(eO) + eP) - 1) / eP)) | |
761 | + | (eQ * cK) | |
762 | + | } | |
763 | + | ||
764 | + | ||
765 | + | func eR (eS,eT) = { | |
766 | + | let eU = (((((eT[0] + eT[1]) + eT[2]) + eT[3]) + eT[4]) + eT[5]) | |
767 | + | if ((0 >= eU)) | |
755 | 768 | then throw("Zero weights sum") | |
756 | 769 | else { | |
757 | - | let | |
758 | - | func | |
759 | - | ||
760 | - | let | |
761 | - | let | |
762 | - | let | |
763 | - | func | |
764 | - | then | |
765 | - | else | |
766 | - | ||
767 | - | func | |
768 | - | then | |
770 | + | let eV = fraction(eS, cJ, eU) | |
771 | + | func eW (eX,eY) = (eX :+ fraction(eY, eV, cJ)) | |
772 | + | ||
773 | + | let eZ = eT | |
774 | + | let fa = size(eZ) | |
775 | + | let fb = nil | |
776 | + | func fc (fd,fe) = if ((fe >= fa)) | |
777 | + | then fd | |
778 | + | else eW(fd, eZ[fe]) | |
779 | + | ||
780 | + | func ff (fd,fe) = if ((fe >= fa)) | |
781 | + | then fd | |
769 | 782 | else throw("List size exceeds 6") | |
770 | 783 | ||
771 | - | | |
772 | - | } | |
773 | - | } | |
774 | - | ||
775 | - | ||
776 | - | func | |
777 | - | let | |
778 | - | if ((size( | |
784 | + | ff(fc(fc(fc(fc(fc(fc(fb, 0), 1), 2), 3), 4), 5), 6) | |
785 | + | } | |
786 | + | } | |
787 | + | ||
788 | + | ||
789 | + | func fg (eS) = { | |
790 | + | let fh = split(value(getString(dx())), "_") | |
791 | + | if ((size(fh) != aJ)) | |
779 | 792 | then throw("Wrong proportions data") | |
780 | 793 | else { | |
781 | - | let | |
782 | - | | |
783 | - | } | |
784 | - | } | |
785 | - | ||
786 | - | ||
787 | - | func | |
788 | - | let | |
789 | - | func | |
790 | - | let | |
791 | - | if ((0 > | |
792 | - | then throw(((((("Not enough material idx=" + toString( | |
793 | - | else ( | |
794 | + | let fi = [parseIntValue(fh[0]), parseIntValue(fh[1]), parseIntValue(fh[2]), parseIntValue(fh[3]), parseIntValue(fh[4]), parseIntValue(fh[5])] | |
795 | + | eR(eS, fi) | |
796 | + | } | |
797 | + | } | |
798 | + | ||
799 | + | ||
800 | + | func fj (fk,fl,fm) = { | |
801 | + | let fn = fg(fm) | |
802 | + | func fo (eX,dg) = { | |
803 | + | let fp = (parseIntValue(fl[dg]) - fn[dg]) | |
804 | + | if ((0 > fp)) | |
805 | + | then throw(((((("Not enough material idx=" + toString(dg)) + ", you have ") + fl[dg]) + ", but need ") + toString(fn[dg]))) | |
806 | + | else (eX :+ toString(fp)) | |
794 | 807 | } | |
795 | 808 | ||
796 | - | if ( | |
809 | + | if (fk) | |
797 | 810 | then { | |
798 | - | let | |
799 | - | let | |
800 | - | let | |
801 | - | func | |
802 | - | then | |
803 | - | else | |
804 | - | ||
805 | - | func | |
806 | - | then | |
811 | + | let eZ = cQ | |
812 | + | let fa = size(eZ) | |
813 | + | let fb = nil | |
814 | + | func fc (fd,fe) = if ((fe >= fa)) | |
815 | + | then fd | |
816 | + | else fo(fd, eZ[fe]) | |
817 | + | ||
818 | + | func ff (fd,fe) = if ((fe >= fa)) | |
819 | + | then fd | |
807 | 820 | else throw("List size exceeds 6") | |
808 | 821 | ||
809 | - | | |
810 | - | } | |
811 | - | else | |
812 | - | } | |
813 | - | ||
814 | - | ||
815 | - | func | |
816 | - | then $Tuple2( | |
822 | + | ff(fc(fc(fc(fc(fc(fc(fb, 0), 1), 2), 3), 4), 5), 6) | |
823 | + | } | |
824 | + | else fl | |
825 | + | } | |
826 | + | ||
827 | + | ||
828 | + | func fq (fr,fs) = if ((fs == "")) | |
829 | + | then $Tuple2(fr, false) | |
817 | 830 | else { | |
818 | - | func | |
819 | - | let | |
820 | - | if ((size( | |
831 | + | func ft (eX,fu) = { | |
832 | + | let fv = split(fu, ",") | |
833 | + | if ((size(fv) != 2)) | |
821 | 834 | then throw("Incorrect format, should be index,amount") | |
822 | 835 | else { | |
823 | - | let | |
824 | - | if (if ((0 > | |
836 | + | let dg = parseIntValue(fv[0]) | |
837 | + | if (if ((0 > dg)) | |
825 | 838 | then true | |
826 | - | else ( | |
839 | + | else (dg >= size(aY))) | |
827 | 840 | then throw("Unknown product idx") | |
828 | 841 | else { | |
829 | - | let | |
830 | - | let | |
831 | - | if ((size( | |
832 | - | then throw((("You don't have " + | |
842 | + | let fw = parseIntValue(fv[1]) | |
843 | + | let fx = split(eX._1, (fv[0] + ":")) | |
844 | + | if ((size(fx) != 2)) | |
845 | + | then throw((("You don't have " + aU[dg]) + " equipped")) | |
833 | 846 | else { | |
834 | - | let | |
835 | - | let | |
847 | + | let fy = fx[1] | |
848 | + | let fz = if (dP(take(drop(fy, 1), 1))) | |
836 | 849 | then 2 | |
837 | 850 | else 1 | |
838 | - | let | |
839 | - | let | |
840 | - | let | |
841 | - | then ( | |
842 | - | else throw(((((("You equipped " + toString( | |
843 | - | $Tuple2((((( | |
851 | + | let fA = parseIntValue(take(fy, fz)) | |
852 | + | let fB = drop(fy, fz) | |
853 | + | let fC = if ((fA >= fw)) | |
854 | + | then (fA - fw) | |
855 | + | else throw(((((("You equipped " + toString(fA)) + " of ") + aU[dg]) + ", but tried to use ") + toString(fw))) | |
856 | + | $Tuple2(((((fx[0] + fv[0]) + ":") + toString(fC)) + fB), if (eX._2) | |
844 | 857 | then true | |
845 | - | else if (if (( | |
846 | - | then (8 >= | |
858 | + | else if (if ((dg >= 6)) | |
859 | + | then (8 >= dg) | |
847 | 860 | else false) | |
848 | - | then ( | |
861 | + | then (fC == 0) | |
849 | 862 | else false) | |
850 | 863 | } | |
851 | 864 | } | |
852 | 865 | } | |
853 | 866 | } | |
854 | 867 | ||
855 | - | let | |
856 | - | let | |
857 | - | let | |
858 | - | func | |
859 | - | then | |
860 | - | else | |
861 | - | ||
862 | - | func | |
863 | - | then | |
868 | + | let eZ = split(fs, "_") | |
869 | + | let fa = size(eZ) | |
870 | + | let fb = $Tuple2(fr, false) | |
871 | + | func fc (fd,fe) = if ((fe >= fa)) | |
872 | + | then fd | |
873 | + | else ft(fd, eZ[fe]) | |
874 | + | ||
875 | + | func ff (fd,fe) = if ((fe >= fa)) | |
876 | + | then fd | |
864 | 877 | else throw("List size exceeds 10") | |
865 | 878 | ||
866 | - | | |
879 | + | ff(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fb, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
867 | 880 | } | |
868 | 881 | ||
869 | 882 | ||
870 | - | func | |
871 | - | let | |
883 | + | func fD (fE) = { | |
884 | + | let fF = if ((fE == "")) | |
872 | 885 | then nil | |
873 | - | else split_4C( | |
874 | - | func | |
875 | - | let | |
876 | - | let | |
877 | - | then parseIntValue( | |
886 | + | else split_4C(fE, "_") | |
887 | + | func fG (eX,cu) = { | |
888 | + | let fH = (size(eX) / 8) | |
889 | + | let fA = if ((size(fF) > fH)) | |
890 | + | then parseIntValue(fF[fH]) | |
878 | 891 | else 0 | |
879 | - | ( | |
892 | + | (eX + toBytes(fA)) | |
880 | 893 | } | |
881 | 894 | ||
882 | - | let | |
883 | - | let | |
884 | - | let | |
885 | - | func | |
886 | - | then | |
887 | - | else | |
888 | - | ||
889 | - | func | |
890 | - | then | |
895 | + | let eZ = aY | |
896 | + | let fa = size(eZ) | |
897 | + | let fb = base58'' | |
898 | + | func fc (fd,fe) = if ((fe >= fa)) | |
899 | + | then fd | |
900 | + | else fG(fd, eZ[fe]) | |
901 | + | ||
902 | + | func ff (fd,fe) = if ((fe >= fa)) | |
903 | + | then fd | |
891 | 904 | else throw("List size exceeds 50") | |
892 | 905 | ||
893 | - | | |
894 | - | } | |
895 | - | ||
896 | - | ||
897 | - | func | |
898 | - | func | |
899 | - | let | |
900 | - | let | |
901 | - | ( | |
906 | + | ff(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fb, 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) | |
907 | + | } | |
908 | + | ||
909 | + | ||
910 | + | func fI (fJ) = { | |
911 | + | func fK (eX,cu) = { | |
912 | + | let fH = size(eX) | |
913 | + | let fL = take(drop(fJ, (8 * fH)), 8) | |
914 | + | (eX :+ toString(toInt(fL))) | |
902 | 915 | } | |
903 | 916 | ||
904 | 917 | makeString_2C({ | |
905 | - | let | |
906 | - | let | |
907 | - | let | |
908 | - | func | |
909 | - | then | |
910 | - | else | |
911 | - | ||
912 | - | func | |
913 | - | then | |
918 | + | let eZ = aY | |
919 | + | let fa = size(eZ) | |
920 | + | let fb = nil | |
921 | + | func fc (fd,fe) = if ((fe >= fa)) | |
922 | + | then fd | |
923 | + | else fK(fd, eZ[fe]) | |
924 | + | ||
925 | + | func ff (fd,fe) = if ((fe >= fa)) | |
926 | + | then fd | |
914 | 927 | else throw("List size exceeds 50") | |
915 | 928 | ||
916 | - | | |
929 | + | ff(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fb, 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) | |
917 | 930 | }, "_") | |
918 | 931 | } | |
919 | 932 | ||
920 | 933 | ||
921 | - | func | |
922 | - | func | |
923 | - | let | |
924 | - | then | |
934 | + | func fM (fN,fO) = { | |
935 | + | func fP (eX,fH) = { | |
936 | + | let fQ = if ((size(fN) > (7 + fH))) | |
937 | + | then fN[(7 + fH)] | |
925 | 938 | else 0 | |
926 | - | if ((parseIntValue( | |
927 | - | then throw(("Requirement not satisfied: " + | |
939 | + | if ((parseIntValue(fO[fH]) > (fN[fH] + fQ))) | |
940 | + | then throw(("Requirement not satisfied: " + l[fH])) | |
928 | 941 | else true | |
929 | 942 | } | |
930 | 943 | ||
931 | - | let | |
932 | - | let | |
933 | - | let | |
934 | - | func | |
935 | - | then | |
936 | - | else | |
937 | - | ||
938 | - | func | |
939 | - | then | |
944 | + | let eZ = [0, 1, 2, 3, 4, 5, 6] | |
945 | + | let fa = size(eZ) | |
946 | + | let fb = false | |
947 | + | func fc (fd,fe) = if ((fe >= fa)) | |
948 | + | then fd | |
949 | + | else fP(fd, eZ[fe]) | |
950 | + | ||
951 | + | func ff (fd,fe) = if ((fe >= fa)) | |
952 | + | then fd | |
940 | 953 | else throw("List size exceeds 7") | |
941 | 954 | ||
942 | - | | |
943 | - | } | |
944 | - | ||
945 | - | ||
946 | - | func | |
947 | - | let | |
948 | - | if ((size( | |
955 | + | ff(fc(fc(fc(fc(fc(fc(fc(fb, 0), 1), 2), 3), 4), 5), 6), 7) | |
956 | + | } | |
957 | + | ||
958 | + | ||
959 | + | func fR (fS,fF,fT,fN,fU,fV) = { | |
960 | + | let fv = split(fS, ":") | |
961 | + | if ((size(fv) != 2)) | |
949 | 962 | then throw("Incorrect format, should be index:amount") | |
950 | - | else if (if (!( | |
951 | - | then (size( | |
963 | + | else if (if (!(fT)) | |
964 | + | then (size(fv[0]) != 2) | |
952 | 965 | else false) | |
953 | 966 | then throw("Product idx should be 2 digits, zero padded") | |
954 | 967 | else { | |
955 | - | let | |
956 | - | let | |
957 | - | if (!(containsElement( | |
958 | - | then throw((("Product '" + | |
959 | - | else if ((0 > | |
968 | + | let fW = parseIntValue(fv[0]) | |
969 | + | let fX = parseIntValue(fv[1]) | |
970 | + | if (!(containsElement(aX, fW))) | |
971 | + | then throw((("Product '" + aU[fW]) + "' cannot be used for land defense")) | |
972 | + | else if ((0 > fX)) | |
960 | 973 | then throw("Count can't be negative") | |
961 | - | else if (( | |
962 | - | then throw(((("Can't put more than " + toString( | |
963 | - | else if (( | |
964 | - | then $Tuple3( | |
974 | + | else if ((fX > v)) | |
975 | + | then throw(((("Can't put more than " + toString(v)) + " of ") + aU[fW])) | |
976 | + | else if ((fX == 0)) | |
977 | + | then $Tuple3(fF, fU, fV) | |
965 | 978 | else { | |
966 | - | let | |
967 | - | let | |
968 | - | let | |
969 | - | let | |
970 | - | if (if (!( | |
971 | - | then ( | |
979 | + | let fY = take(fF, (8 * fW)) | |
980 | + | let fA = toInt(take(drop(fF, (8 * fW)), 8)) | |
981 | + | let fB = drop(fF, (8 * (fW + 1))) | |
982 | + | let cu = split(aY[fW], "_") | |
983 | + | if (if (!(fT)) | |
984 | + | then (fX > fA) | |
972 | 985 | else false) | |
973 | - | then throw(((((("You have " + toString( | |
986 | + | then throw(((((("You have " + toString(fA)) + " of ") + aU[fW]) + ", but tried to use ") + toString(fX))) | |
974 | 987 | else { | |
975 | - | let | |
976 | - | then | |
988 | + | let fC = if (if (!(fT)) | |
989 | + | then fM(fN, split(cu[bb], ",")) | |
977 | 990 | else false) | |
978 | - | then ( | |
979 | - | else ( | |
980 | - | let | |
981 | - | $Tuple3((( | |
991 | + | then (fA - fX) | |
992 | + | else (fA + fX) | |
993 | + | let fZ = (eN(fC, bd) - eN(fA, bd)) | |
994 | + | $Tuple3(((fY + toBytes(fC)) + fB), (fU + fZ), (fV - fZ)) | |
982 | 995 | } | |
983 | 996 | } | |
984 | 997 | } | |
985 | 998 | } | |
986 | 999 | ||
987 | 1000 | ||
988 | - | func | |
989 | - | let | |
990 | - | if ((size( | |
1001 | + | func ga (fS,fF,fT,gb,gc,gd,fN) = { | |
1002 | + | let fv = split(fS, ":") | |
1003 | + | if ((size(fv) != 2)) | |
991 | 1004 | then throw("Incorrect format, should be index:amount") | |
992 | - | else if (if (!( | |
993 | - | then (size( | |
1005 | + | else if (if (!(fT)) | |
1006 | + | then (size(fv[0]) != 2) | |
994 | 1007 | else false) | |
995 | 1008 | then throw("Product idx should be 2 digits, zero padded") | |
996 | 1009 | else { | |
997 | - | let | |
998 | - | let | |
999 | - | if (if ((0 > | |
1010 | + | let fW = parseIntValue(fv[0]) | |
1011 | + | let fX = parseIntValue(fv[1]) | |
1012 | + | if (if ((0 > fW)) | |
1000 | 1013 | then true | |
1001 | - | else ( | |
1014 | + | else (fW >= size(aY))) | |
1002 | 1015 | then throw("Unknown product idx") | |
1003 | - | else if ((0 > | |
1016 | + | else if ((0 > fX)) | |
1004 | 1017 | then throw("Count can't be negative") | |
1005 | - | else if (( | |
1006 | - | then throw(((("Can't put more than " + toString( | |
1007 | - | else if (( | |
1008 | - | then $Tuple2( | |
1018 | + | else if ((fX > v)) | |
1019 | + | then throw(((("Can't put more than " + toString(v)) + " of ") + aU[fW])) | |
1020 | + | else if ((fX == 0)) | |
1021 | + | then $Tuple2(fF, false) | |
1009 | 1022 | else { | |
1010 | - | let | |
1011 | - | let | |
1012 | - | let | |
1013 | - | let | |
1014 | - | if (if (!( | |
1015 | - | then ( | |
1023 | + | let fY = take(fF, (8 * fW)) | |
1024 | + | let fA = toInt(take(drop(fF, (8 * fW)), 8)) | |
1025 | + | let fB = drop(fF, (8 * (fW + 1))) | |
1026 | + | let cu = split(aY[fW], "_") | |
1027 | + | if (if (!(fT)) | |
1028 | + | then (fX > fA) | |
1016 | 1029 | else false) | |
1017 | - | then throw(((((("You have " + toString( | |
1030 | + | then throw(((((("You have " + toString(fA)) + " of ") + aU[fW]) + ", but tried to use ") + toString(fX))) | |
1018 | 1031 | else { | |
1019 | - | let | |
1020 | - | then | |
1032 | + | let ge = if (if (!(fT)) | |
1033 | + | then fM(fN, split(cu[bb], ",")) | |
1021 | 1034 | else false) | |
1022 | 1035 | then { | |
1023 | - | let | |
1024 | - | if (( | |
1036 | + | let gf = cu[bc] | |
1037 | + | if ((gf == "")) | |
1025 | 1038 | then throw("Item cannot be equipped") | |
1026 | 1039 | else { | |
1027 | - | let | |
1028 | - | let | |
1029 | - | if (( | |
1040 | + | let gg = parseIntValue(gf) | |
1041 | + | let gh = (gg / 100) | |
1042 | + | if ((gb != gh)) | |
1030 | 1043 | then throw("Segment incompatible") | |
1031 | 1044 | else { | |
1032 | - | let | |
1033 | - | if (( | |
1045 | + | let gi = ((gg % 100) / 10) | |
1046 | + | if ((gc != gi)) | |
1034 | 1047 | then throw("Slot incompatible") | |
1035 | 1048 | else { | |
1036 | - | let | |
1037 | - | if (if (( | |
1038 | - | then ( | |
1049 | + | let gj = (gg % 10) | |
1050 | + | if (if ((gd != 0)) | |
1051 | + | then (gj > 1) | |
1039 | 1052 | else false) | |
1040 | 1053 | then throw("Big items should occupy slot 0") | |
1041 | - | else ( | |
1054 | + | else (gj > 1) | |
1042 | 1055 | } | |
1043 | 1056 | } | |
1044 | 1057 | } | |
1045 | 1058 | } | |
1046 | 1059 | else false | |
1047 | - | $Tuple2((( | |
1048 | - | then | |
1049 | - | else -( | |
1060 | + | $Tuple2(((fY + toBytes((fA + (if (fT) | |
1061 | + | then fX | |
1062 | + | else -(fX))))) + fB), ge) | |
1050 | 1063 | } | |
1051 | 1064 | } | |
1052 | 1065 | } | |
1053 | 1066 | } | |
1054 | 1067 | ||
1055 | 1068 | ||
1056 | - | func | |
1069 | + | func gk (gl,gm,fT,gb,gc,gn) = if ((gl != "")) | |
1057 | 1070 | then { | |
1058 | - | let | |
1059 | - | if ((size( | |
1071 | + | let go = split(gl, ",") | |
1072 | + | if ((size(go) > u)) | |
1060 | 1073 | then throw("Wrong slots format") | |
1061 | 1074 | else { | |
1062 | - | let | |
1063 | - | let | |
1064 | - | then | |
1075 | + | let gp = go[0] | |
1076 | + | let gq = if ((size(go) > 1)) | |
1077 | + | then go[1] | |
1065 | 1078 | else "" | |
1066 | - | if (if (( | |
1067 | - | then ( | |
1079 | + | if (if ((gp == "")) | |
1080 | + | then (gq == "") | |
1068 | 1081 | else false) | |
1069 | - | then | |
1082 | + | then gm | |
1070 | 1083 | else { | |
1071 | - | let | |
1072 | - | then | |
1073 | - | else $Tuple2( | |
1074 | - | if (( | |
1075 | - | then if ( | |
1084 | + | let gr = if ((gp != "")) | |
1085 | + | then ga(gp, gm, fT, gb, gc, 0, gn) | |
1086 | + | else $Tuple2(gm, false) | |
1087 | + | if ((gq != "")) | |
1088 | + | then if (gr._2) | |
1076 | 1089 | then throw("Big item already occupies slot") | |
1077 | - | else | |
1078 | - | else | |
1090 | + | else ga(gq, gr._1, fT, gb, gc, 1, gn)._1 | |
1091 | + | else gr._1 | |
1079 | 1092 | } | |
1080 | 1093 | } | |
1081 | 1094 | } | |
1082 | - | else | |
1083 | - | ||
1084 | - | ||
1085 | - | func | |
1086 | - | func | |
1087 | - | let | |
1088 | - | let | |
1089 | - | if ((size( | |
1095 | + | else gm | |
1096 | + | ||
1097 | + | ||
1098 | + | func gs (gt,gu,fT,gn) = { | |
1099 | + | func gb (eX,gv) = { | |
1100 | + | let fH = eX._1 | |
1101 | + | let gc = split(gv, ";") | |
1102 | + | if ((size(gc) != t)) | |
1090 | 1103 | then throw("Wrong segment format") | |
1091 | 1104 | else { | |
1092 | - | let | |
1093 | - | let | |
1094 | - | if (if (( | |
1095 | - | then ( | |
1105 | + | let gw = gc[0] | |
1106 | + | let gx = gc[1] | |
1107 | + | if (if ((gw == "")) | |
1108 | + | then (gx == "") | |
1096 | 1109 | else false) | |
1097 | - | then $Tuple2(( | |
1110 | + | then $Tuple2((fH + 1), eX._2) | |
1098 | 1111 | else { | |
1099 | - | let | |
1100 | - | $Tuple2(( | |
1112 | + | let gy = gk(gw, eX._2, fT, fH, 0, gn) | |
1113 | + | $Tuple2((fH + 1), gk(gx, gy, fT, fH, 1, gn)) | |
1101 | 1114 | } | |
1102 | 1115 | } | |
1103 | 1116 | } | |
1104 | 1117 | ||
1105 | - | ( let | |
1106 | - | let | |
1107 | - | let | |
1108 | - | func | |
1109 | - | then | |
1110 | - | else | |
1111 | - | ||
1112 | - | func | |
1113 | - | then | |
1118 | + | ( let eZ = gt | |
1119 | + | let fa = size(eZ) | |
1120 | + | let fb = $Tuple2(0, gu) | |
1121 | + | func fc (fd,fe) = if ((fe >= fa)) | |
1122 | + | then fd | |
1123 | + | else gb(fd, eZ[fe]) | |
1124 | + | ||
1125 | + | func ff (fd,fe) = if ((fe >= fa)) | |
1126 | + | then fd | |
1114 | 1127 | else throw("List size exceeds 6") | |
1115 | 1128 | ||
1116 | - | | |
1117 | - | } | |
1118 | - | ||
1119 | - | ||
1120 | - | func | |
1129 | + | ff(fc(fc(fc(fc(fc(fc(fb, 0), 1), 2), 3), 4), 5), 6))._2 | |
1130 | + | } | |
1131 | + | ||
1132 | + | ||
1133 | + | func gz (gt,gu,fU,fV,fT,fN) = if ((3 > size(gt))) | |
1121 | 1134 | then throw("At least duck, mines and traps parts are required") | |
1122 | 1135 | else { | |
1123 | - | func | |
1124 | - | let | |
1125 | - | if (( | |
1126 | - | then $Tuple4(( | |
1136 | + | func gb (eX,gv) = { | |
1137 | + | let fH = eX._1 | |
1138 | + | if ((fH == 0)) | |
1139 | + | then $Tuple4((fH + 1), eX._2, eX._3, eX._4) | |
1127 | 1140 | else { | |
1128 | - | let | |
1129 | - | $Tuple4(( | |
1141 | + | let gA = fR(gv, eX._2, fT, fN, eX._3, eX._4) | |
1142 | + | $Tuple4((fH + 1), gA._1, gA._2, gA._3) | |
1130 | 1143 | } | |
1131 | 1144 | } | |
1132 | 1145 | ||
1133 | - | let | |
1134 | - | let | |
1135 | - | let | |
1136 | - | let | |
1137 | - | func | |
1138 | - | then | |
1139 | - | else | |
1140 | - | ||
1141 | - | func | |
1142 | - | then | |
1146 | + | let gB = { | |
1147 | + | let eZ = gt | |
1148 | + | let fa = size(eZ) | |
1149 | + | let fb = $Tuple4(0, gu, fU, fV) | |
1150 | + | func fc (fd,fe) = if ((fe >= fa)) | |
1151 | + | then fd | |
1152 | + | else gb(fd, eZ[fe]) | |
1153 | + | ||
1154 | + | func ff (fd,fe) = if ((fe >= fa)) | |
1155 | + | then fd | |
1143 | 1156 | else throw("List size exceeds 10") | |
1144 | 1157 | ||
1145 | - | | |
1146 | - | } | |
1147 | - | $Tuple3( | |
1158 | + | ff(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fb, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
1159 | + | } | |
1160 | + | $Tuple3(gB._2, gB._3, gB._4) | |
1148 | 1161 | } | |
1149 | 1162 | ||
1150 | 1163 | ||
1151 | - | func | |
1152 | - | let | |
1153 | - | let | |
1154 | - | let | |
1155 | - | let | |
1156 | - | let | |
1164 | + | func gC (C) = { | |
1165 | + | let gD = H(C) | |
1166 | + | let gE = split(valueOrElse(getString(gD), ",;,_,;,_,;,_,;,_,;,_,;,"), "_") | |
1167 | + | let gF = gs(gE, eg, true, nil) | |
1168 | + | let gG = split(gE[r], ";")[1] | |
1169 | + | let as = if ((gG == "")) | |
1157 | 1170 | then 0 | |
1158 | 1171 | else { | |
1159 | - | let | |
1160 | - | if (( | |
1172 | + | let gH = split(gG, ",")[0] | |
1173 | + | if ((gH == "")) | |
1161 | 1174 | then 0 | |
1162 | 1175 | else { | |
1163 | - | let | |
1164 | - | let | |
1165 | - | let | |
1166 | - | if (if (if (if (if (( | |
1176 | + | let fS = split(gH, ":") | |
1177 | + | let dg = fS[0] | |
1178 | + | let gI = fS[1] | |
1179 | + | if (if (if (if (if ((dg == "06")) | |
1167 | 1180 | then true | |
1168 | - | else ( | |
1181 | + | else (dg == "07")) | |
1169 | 1182 | then true | |
1170 | - | else ( | |
1171 | - | then ( | |
1183 | + | else (dg == "08")) | |
1184 | + | then (gI != "") | |
1172 | 1185 | else false) | |
1173 | - | then (parseIntValue( | |
1186 | + | then (parseIntValue(gI) > 0) | |
1174 | 1187 | else false) | |
1175 | - | then parseIntValue(split( | |
1188 | + | then parseIntValue(split(aY[parseIntValue(dg)], "_")[ba]) | |
1176 | 1189 | else 0 | |
1177 | 1190 | } | |
1178 | 1191 | } | |
1179 | - | let | |
1180 | - | let | |
1181 | - | ( | |
1182 | - | } | |
1183 | - | ||
1184 | - | ||
1185 | - | func | |
1192 | + | let gn = aq(this, C, as, true) | |
1193 | + | let gJ = gs(gE, gF, false, gn) | |
1194 | + | (gJ == gJ) | |
1195 | + | } | |
1196 | + | ||
1197 | + | ||
1198 | + | func gK (gL,gM,gN,gO) = if ((size(gL) != aJ)) | |
1186 | 1199 | then throw("Wrong proportions data") | |
1187 | 1200 | else { | |
1188 | - | func | |
1189 | - | let | |
1190 | - | if ((0 > | |
1191 | - | then throw(((((((("Panic! Pieces of type=" + toString( | |
1192 | - | else ( | |
1193 | - | } | |
1194 | - | ||
1195 | - | let | |
1196 | - | let | |
1197 | - | let | |
1198 | - | func | |
1199 | - | then | |
1200 | - | else | |
1201 | - | ||
1202 | - | func | |
1203 | - | then | |
1201 | + | func gP (eX,gQ) = { | |
1202 | + | let fp = (parseIntValue(gL[gQ]) + ((gO * gM[gQ]) * gN)) | |
1203 | + | if ((0 > fp)) | |
1204 | + | then throw(((((((("Panic! Pieces of type=" + toString(gQ)) + ", sign=") + toString(gO)) + ", terrainCounts[i]=") + toString(gM[gQ])) + ", landSizeIndex=") + toString(gN))) | |
1205 | + | else (eX :+ toString(fp)) | |
1206 | + | } | |
1207 | + | ||
1208 | + | let eZ = cQ | |
1209 | + | let fa = size(eZ) | |
1210 | + | let fb = nil | |
1211 | + | func fc (fd,fe) = if ((fe >= fa)) | |
1212 | + | then fd | |
1213 | + | else gP(fd, eZ[fe]) | |
1214 | + | ||
1215 | + | func ff (fd,fe) = if ((fe >= fa)) | |
1216 | + | then fd | |
1204 | 1217 | else throw("List size exceeds 6") | |
1205 | 1218 | ||
1206 | - | | |
1219 | + | ff(fc(fc(fc(fc(fc(fc(fb, 0), 1), 2), 3), 4), 5), 6) | |
1207 | 1220 | } | |
1208 | 1221 | ||
1209 | 1222 | ||
1210 | - | func | |
1211 | - | let | |
1212 | - | makeString( | |
1213 | - | } | |
1214 | - | ||
1215 | - | ||
1216 | - | func | |
1217 | - | ||
1218 | - | ||
1219 | - | func | |
1220 | - | func | |
1221 | - | let | |
1222 | - | ( | |
1223 | + | func gR (gM,gN,gO) = { | |
1224 | + | let gL = split(valueOrElse(getString(dx()), "0_0_0_0_0_0"), "_") | |
1225 | + | makeString(gK(gL, gM, gN, gO), "_") | |
1226 | + | } | |
1227 | + | ||
1228 | + | ||
1229 | + | func gS (gT) = [(size(split(gT, "A")) - 1), (size(split(gT, "B")) - 1), (size(split(gT, "C")) - 1), (size(split(gT, "D")) - 1), (size(split(gT, "E")) - 1), (size(split(gT, "F")) - 1)] | |
1230 | + | ||
1231 | + | ||
1232 | + | func gU (gV,gM,gW,gN,gX) = { | |
1233 | + | func gY (eX,gQ) = { | |
1234 | + | let gZ = ((fraction(gW, gX, a) * gM[gQ]) * gN) | |
1235 | + | (eX :+ toString((parseIntValue(gV[gQ]) + gZ))) | |
1223 | 1236 | } | |
1224 | 1237 | ||
1225 | - | let | |
1226 | - | let | |
1227 | - | let | |
1228 | - | let | |
1229 | - | func | |
1230 | - | then | |
1231 | - | else | |
1232 | - | ||
1233 | - | func | |
1234 | - | then | |
1238 | + | let fi = { | |
1239 | + | let eZ = cQ | |
1240 | + | let fa = size(eZ) | |
1241 | + | let fb = nil | |
1242 | + | func fc (fd,fe) = if ((fe >= fa)) | |
1243 | + | then fd | |
1244 | + | else gY(fd, eZ[fe]) | |
1245 | + | ||
1246 | + | func ff (fd,fe) = if ((fe >= fa)) | |
1247 | + | then fd | |
1235 | 1248 | else throw("List size exceeds 6") | |
1236 | 1249 | ||
1237 | - | | |
1250 | + | ff(fc(fc(fc(fc(fc(fc(fb, 0), 1), 2), 3), 4), 5), 6) | |
1238 | 1251 | } | |
1239 | - | makeString( | |
1240 | - | } | |
1241 | - | ||
1242 | - | ||
1243 | - | func | |
1244 | - | func | |
1245 | - | let | |
1246 | - | $Tuple2(( | |
1252 | + | makeString(fi, "_") | |
1253 | + | } | |
1254 | + | ||
1255 | + | ||
1256 | + | func ha (gM,gW,gN,gX) = { | |
1257 | + | func gY (eX,gQ) = { | |
1258 | + | let gZ = ((fraction(gW, gX, a) * gM[gQ]) * gN) | |
1259 | + | $Tuple2((eX._1 :+ gZ), (eX._2 + gZ)) | |
1247 | 1260 | } | |
1248 | 1261 | ||
1249 | - | let | |
1250 | - | let | |
1251 | - | let | |
1252 | - | func | |
1253 | - | then | |
1254 | - | else | |
1255 | - | ||
1256 | - | func | |
1257 | - | then | |
1262 | + | let eZ = cQ | |
1263 | + | let fa = size(eZ) | |
1264 | + | let fb = $Tuple2(nil, 0) | |
1265 | + | func fc (fd,fe) = if ((fe >= fa)) | |
1266 | + | then fd | |
1267 | + | else gY(fd, eZ[fe]) | |
1268 | + | ||
1269 | + | func ff (fd,fe) = if ((fe >= fa)) | |
1270 | + | then fd | |
1258 | 1271 | else throw("List size exceeds 6") | |
1259 | 1272 | ||
1260 | - | | |
1261 | - | } | |
1262 | - | ||
1263 | - | ||
1264 | - | func | |
1265 | - | let | |
1266 | - | let | |
1267 | - | if (( | |
1268 | - | then $Tuple2(makeString( | |
1269 | - | else if (( | |
1273 | + | ff(fc(fc(fc(fc(fc(fc(fb, 0), 1), 2), 3), 4), 5), 6) | |
1274 | + | } | |
1275 | + | ||
1276 | + | ||
1277 | + | func hb (hc,hd,he,hf) = { | |
1278 | + | let hg = he._1 | |
1279 | + | let hh = he._2 | |
1280 | + | if ((hh == 0)) | |
1281 | + | then $Tuple2(makeString(hc, "_"), makeString(hd, "_")) | |
1282 | + | else if ((hf >= hh)) | |
1270 | 1283 | then { | |
1271 | - | func | |
1272 | - | ||
1273 | - | let | |
1274 | - | let | |
1275 | - | let | |
1276 | - | let | |
1277 | - | func | |
1278 | - | then | |
1279 | - | else | |
1280 | - | ||
1281 | - | func | |
1282 | - | then | |
1284 | + | func hi (eX,gQ) = (eX :+ toString((parseIntValue(hc[gQ]) + hg[gQ]))) | |
1285 | + | ||
1286 | + | let fi = { | |
1287 | + | let eZ = cQ | |
1288 | + | let fa = size(eZ) | |
1289 | + | let fb = nil | |
1290 | + | func fc (fd,fe) = if ((fe >= fa)) | |
1291 | + | then fd | |
1292 | + | else hi(fd, eZ[fe]) | |
1293 | + | ||
1294 | + | func ff (fd,fe) = if ((fe >= fa)) | |
1295 | + | then fd | |
1283 | 1296 | else throw("List size exceeds 6") | |
1284 | 1297 | ||
1285 | - | | |
1298 | + | ff(fc(fc(fc(fc(fc(fc(fb, 0), 1), 2), 3), 4), 5), 6) | |
1286 | 1299 | } | |
1287 | - | $Tuple2(makeString( | |
1300 | + | $Tuple2(makeString(fi, "_"), makeString(hd, "_")) | |
1288 | 1301 | } | |
1289 | 1302 | else { | |
1290 | - | func | |
1291 | - | let | |
1292 | - | $Tuple2(( | |
1303 | + | func hj (eX,gQ) = { | |
1304 | + | let hk = fraction(hg[gQ], hf, hh) | |
1305 | + | $Tuple2((eX._1 :+ toString((parseIntValue(hc[gQ]) + hk))), (eX._2 :+ toString(((parseIntValue(hd[gQ]) + hg[gQ]) - hk)))) | |
1293 | 1306 | } | |
1294 | 1307 | ||
1295 | - | let | |
1296 | - | let | |
1297 | - | let | |
1298 | - | let | |
1299 | - | func | |
1300 | - | then | |
1301 | - | else | |
1302 | - | ||
1303 | - | func | |
1304 | - | then | |
1308 | + | let fi = { | |
1309 | + | let eZ = cQ | |
1310 | + | let fa = size(eZ) | |
1311 | + | let fb = $Tuple2(nil, nil) | |
1312 | + | func fc (fd,fe) = if ((fe >= fa)) | |
1313 | + | then fd | |
1314 | + | else hj(fd, eZ[fe]) | |
1315 | + | ||
1316 | + | func ff (fd,fe) = if ((fe >= fa)) | |
1317 | + | then fd | |
1305 | 1318 | else throw("List size exceeds 6") | |
1306 | 1319 | ||
1307 | - | | |
1320 | + | ff(fc(fc(fc(fc(fc(fc(fb, 0), 1), 2), 3), 4), 5), 6) | |
1308 | 1321 | } | |
1309 | - | $Tuple2(makeString( | |
1322 | + | $Tuple2(makeString(fi._1, "_"), makeString(fi._2, "_")) | |
1310 | 1323 | } | |
1311 | 1324 | } | |
1312 | 1325 | ||
1313 | 1326 | ||
1314 | - | func | |
1315 | - | then | |
1316 | - | else -( | |
1317 | - | ||
1318 | - | ||
1319 | - | let | |
1320 | - | ||
1321 | - | func | |
1322 | - | let | |
1323 | - | let | |
1327 | + | func hl (hm) = if ((hm >= toBigInt(0))) | |
1328 | + | then hm | |
1329 | + | else -(hm) | |
1330 | + | ||
1331 | + | ||
1332 | + | let hn = [[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]] | |
1333 | + | ||
1334 | + | func ho (dG,hp) = { | |
1335 | + | let hq = toInt((dG % ep)) | |
1336 | + | let hr = if ((hp[0] > hq)) | |
1324 | 1337 | then "A" | |
1325 | - | else if (( | |
1338 | + | else if ((hp[1] > hq)) | |
1326 | 1339 | then "B" | |
1327 | - | else if (( | |
1340 | + | else if ((hp[2] > hq)) | |
1328 | 1341 | then "C" | |
1329 | - | else if (( | |
1342 | + | else if ((hp[3] > hq)) | |
1330 | 1343 | then "D" | |
1331 | - | else if (( | |
1344 | + | else if ((hp[4] > hq)) | |
1332 | 1345 | then "E" | |
1333 | 1346 | else "F" | |
1334 | - | | |
1335 | - | } | |
1336 | - | ||
1337 | - | ||
1338 | - | func | |
1339 | - | let | |
1340 | - | func | |
1341 | - | ||
1342 | - | let | |
1343 | - | let | |
1344 | - | let | |
1345 | - | let | |
1346 | - | func | |
1347 | - | then | |
1348 | - | else | |
1349 | - | ||
1350 | - | func | |
1351 | - | then | |
1347 | + | hr | |
1348 | + | } | |
1349 | + | ||
1350 | + | ||
1351 | + | func hs (ht,hu) = { | |
1352 | + | let hv = hn[hu] | |
1353 | + | func hw (eX,eY) = $Tuple2((((((eX._1 + ho(eX._2, hv)) + ho((eX._2 / ep), hv)) + ho((eX._2 / eq), hv)) + ho((eX._2 / er), hv)) + ho((eX._2 / es), hv)), (eX._2 / et)) | |
1354 | + | ||
1355 | + | let gB = { | |
1356 | + | let eZ = [1, 2, 3, 4, 5] | |
1357 | + | let fa = size(eZ) | |
1358 | + | let fb = $Tuple2("", (ht / eo)) | |
1359 | + | func fc (fd,fe) = if ((fe >= fa)) | |
1360 | + | then fd | |
1361 | + | else hw(fd, eZ[fe]) | |
1362 | + | ||
1363 | + | func ff (fd,fe) = if ((fe >= fa)) | |
1364 | + | then fd | |
1352 | 1365 | else throw("List size exceeds 5") | |
1353 | 1366 | ||
1354 | - | | |
1367 | + | ff(fc(fc(fc(fc(fc(fb, 0), 1), 2), 3), 4), 5) | |
1355 | 1368 | } | |
1356 | - | | |
1357 | - | } | |
1358 | - | ||
1359 | - | ||
1360 | - | let | |
1361 | - | ||
1362 | - | let | |
1363 | - | ||
1364 | - | func | |
1365 | - | func | |
1366 | - | let | |
1367 | - | let | |
1368 | - | let | |
1369 | + | gB._1 | |
1370 | + | } | |
1371 | + | ||
1372 | + | ||
1373 | + | let hx = [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] | |
1374 | + | ||
1375 | + | let hy = ["A", "B", "C", "D", "E", "F"] | |
1376 | + | ||
1377 | + | func hz (hA,gN) = { | |
1378 | + | func hB (eX,dE) = { | |
1379 | + | let fH = eX._2 | |
1380 | + | let hC = parseIntValue(dE) | |
1381 | + | let hm = if ((hC == 0)) | |
1369 | 1382 | then 0 | |
1370 | - | else if (( | |
1371 | - | then ( | |
1372 | - | else if (( | |
1383 | + | else if ((hC >= (4 * gN))) | |
1384 | + | then (hC / gN) | |
1385 | + | else if ((hC > (3 * gN))) | |
1373 | 1386 | then 3 | |
1374 | - | else ((( | |
1375 | - | $Tuple3(( | |
1387 | + | else (((hC - 1) / gN) + 1) | |
1388 | + | $Tuple3((eX._1 :+ hm), (eX._2 + 1), (eX._3 + hm)) | |
1376 | 1389 | } | |
1377 | 1390 | ||
1378 | - | let | |
1379 | - | let | |
1380 | - | let | |
1381 | - | let | |
1382 | - | func | |
1383 | - | then | |
1384 | - | else | |
1385 | - | ||
1386 | - | func | |
1387 | - | then | |
1391 | + | let gB = { | |
1392 | + | let eZ = hA | |
1393 | + | let fa = size(eZ) | |
1394 | + | let fb = $Tuple3(nil, 0, 0) | |
1395 | + | func fc (fd,fe) = if ((fe >= fa)) | |
1396 | + | then fd | |
1397 | + | else hB(fd, eZ[fe]) | |
1398 | + | ||
1399 | + | func ff (fd,fe) = if ((fe >= fa)) | |
1400 | + | then fd | |
1388 | 1401 | else throw("List size exceeds 6") | |
1389 | 1402 | ||
1390 | - | | |
1403 | + | ff(fc(fc(fc(fc(fc(fc(fb, 0), 1), 2), 3), 4), 5), 6) | |
1391 | 1404 | } | |
1392 | - | let | |
1393 | - | let | |
1394 | - | let | |
1395 | - | func | |
1396 | - | let | |
1397 | - | then ( | |
1398 | - | else | |
1399 | - | let | |
1405 | + | let hD = gB._1 | |
1406 | + | let hE = value(indexOf(hD, max(hD))) | |
1407 | + | let hF = (gB._3 - 25) | |
1408 | + | func hG (eX,dg) = { | |
1409 | + | let dL = if ((dg == hE)) | |
1410 | + | then (hD[dg] - hF) | |
1411 | + | else hD[dg] | |
1412 | + | let dW = if ((dL == 0)) | |
1400 | 1413 | then nil | |
1401 | - | else split(drop(toString(pow(10, 0, | |
1402 | - | let | |
1403 | - | func | |
1404 | - | ||
1405 | - | let | |
1406 | - | let | |
1407 | - | let | |
1408 | - | let | |
1409 | - | func | |
1410 | - | then | |
1411 | - | else | |
1412 | - | ||
1413 | - | func | |
1414 | - | then | |
1414 | + | else split(drop(toString(pow(10, 0, dL, 0, 0, DOWN)), 1), "") | |
1415 | + | let gg = hy[dg] | |
1416 | + | func hH (hI,hJ) = (hI :+ gg) | |
1417 | + | ||
1418 | + | let hK = { | |
1419 | + | let eZ = dW | |
1420 | + | let fa = size(eZ) | |
1421 | + | let fb = nil | |
1422 | + | func hL (fd,fe) = if ((fe >= fa)) | |
1423 | + | then fd | |
1424 | + | else hH(fd, eZ[fe]) | |
1425 | + | ||
1426 | + | func hM (fd,fe) = if ((fe >= fa)) | |
1427 | + | then fd | |
1415 | 1428 | else throw("List size exceeds 25") | |
1416 | 1429 | ||
1417 | - | | |
1418 | - | } | |
1419 | - | ( | |
1430 | + | 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(fb, 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) | |
1431 | + | } | |
1432 | + | (eX ++ hK) | |
1420 | 1433 | } | |
1421 | 1434 | ||
1422 | - | let | |
1423 | - | let | |
1424 | - | let | |
1425 | - | let | |
1426 | - | func | |
1427 | - | then | |
1428 | - | else | |
1429 | - | ||
1430 | - | func | |
1431 | - | then | |
1435 | + | let fi = { | |
1436 | + | let eZ = cQ | |
1437 | + | let fa = size(eZ) | |
1438 | + | let fb = nil | |
1439 | + | func hL (fd,fe) = if ((fe >= fa)) | |
1440 | + | then fd | |
1441 | + | else hG(fd, eZ[fe]) | |
1442 | + | ||
1443 | + | func hM (fd,fe) = if ((fe >= fa)) | |
1444 | + | then fd | |
1432 | 1445 | else throw("List size exceeds 6") | |
1433 | 1446 | ||
1434 | - | | |
1447 | + | hM(hL(hL(hL(hL(hL(hL(fb, 0), 1), 2), 3), 4), 5), 6) | |
1435 | 1448 | } | |
1436 | - | func | |
1437 | - | ||
1438 | - | let | |
1439 | - | let | |
1440 | - | let | |
1441 | - | func | |
1442 | - | then | |
1443 | - | else | |
1444 | - | ||
1445 | - | func | |
1446 | - | then | |
1449 | + | func hN (eX,fH) = (eX + fi[fH]) | |
1450 | + | ||
1451 | + | let eZ = hx | |
1452 | + | let fa = size(eZ) | |
1453 | + | let fb = "" | |
1454 | + | func hO (fd,fe) = if ((fe >= fa)) | |
1455 | + | then fd | |
1456 | + | else hN(fd, eZ[fe]) | |
1457 | + | ||
1458 | + | func hP (fd,fe) = if ((fe >= fa)) | |
1459 | + | then fd | |
1447 | 1460 | else throw("List size exceeds 25") | |
1448 | 1461 | ||
1449 | - | | |
1450 | - | } | |
1451 | - | ||
1452 | - | ||
1453 | - | func | |
1454 | - | let | |
1455 | - | [toString(valueOrElse(parseInt( | |
1456 | - | then | |
1457 | - | else "0_0_0_0_0_0", if ((size(split( | |
1458 | - | then | |
1459 | - | else "0_0_0_0_0_0", | |
1460 | - | } | |
1461 | - | ||
1462 | - | ||
1463 | - | func | |
1464 | - | let | |
1465 | - | (( | |
1466 | - | } | |
1467 | - | ||
1468 | - | ||
1469 | - | func | |
1470 | - | let | |
1471 | - | func | |
1472 | - | ||
1473 | - | func | |
1474 | - | let | |
1475 | - | let | |
1476 | - | $Tuple2(( | |
1462 | + | hP(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(fb, 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) | |
1463 | + | } | |
1464 | + | ||
1465 | + | ||
1466 | + | func hQ (hR) = { | |
1467 | + | let gA = split(valueOrElse(getString(hR), "0:0_0_0_0_0_0:0_0_0_0_0_0:"), ":") | |
1468 | + | [toString(valueOrElse(parseInt(gA[bn]), 0)), if ((size(split(gA[bo], "_")) == aJ)) | |
1469 | + | then gA[bo] | |
1470 | + | else "0_0_0_0_0_0", if ((size(split(gA[bp], "_")) == aJ)) | |
1471 | + | then gA[bp] | |
1472 | + | else "0_0_0_0_0_0", gA[bq]] | |
1473 | + | } | |
1474 | + | ||
1475 | + | ||
1476 | + | func hS (hT) = { | |
1477 | + | let fv = split(hT, "_") | |
1478 | + | ((aM * (parseIntValue(fv[1]) + 1)) * parseIntValue(fv[0])) | |
1479 | + | } | |
1480 | + | ||
1481 | + | ||
1482 | + | func hU (hV) = { | |
1483 | + | let hW = hV[bh] | |
1484 | + | func hX (eX,hY) = (eX + parseIntValue(hY)) | |
1485 | + | ||
1486 | + | func hZ (eX,hY) = { | |
1487 | + | let dg = eX._1 | |
1488 | + | let eQ = (((parseIntValue(hY) + bd) - 1) / bd) | |
1489 | + | $Tuple2((dg + 1), (eX._2 + (eQ * cK))) | |
1477 | 1490 | } | |
1478 | 1491 | ||
1479 | - | let | |
1480 | - | let | |
1481 | - | let | |
1482 | - | let | |
1483 | - | func | |
1484 | - | then | |
1485 | - | else | |
1486 | - | ||
1487 | - | func | |
1488 | - | then | |
1492 | + | let ia = { | |
1493 | + | let eZ = split(hV[bf], "_") | |
1494 | + | let fa = size(eZ) | |
1495 | + | let fb = 0 | |
1496 | + | func fc (fd,fe) = if ((fe >= fa)) | |
1497 | + | then fd | |
1498 | + | else hX(fd, eZ[fe]) | |
1499 | + | ||
1500 | + | func ff (fd,fe) = if ((fe >= fa)) | |
1501 | + | then fd | |
1489 | 1502 | else throw("List size exceeds 6") | |
1490 | 1503 | ||
1491 | - | | |
1504 | + | ff(fc(fc(fc(fc(fc(fc(fb, 0), 1), 2), 3), 4), 5), 6) | |
1492 | 1505 | } | |
1493 | - | let | |
1494 | - | let | |
1495 | - | let | |
1496 | - | let | |
1497 | - | func | |
1498 | - | then | |
1499 | - | else | |
1500 | - | ||
1501 | - | func | |
1502 | - | then | |
1506 | + | let ib = { | |
1507 | + | let eZ = split(hV[bg], "_") | |
1508 | + | let fa = size(eZ) | |
1509 | + | let fb = 0 | |
1510 | + | func hL (fd,fe) = if ((fe >= fa)) | |
1511 | + | then fd | |
1512 | + | else hX(fd, eZ[fe]) | |
1513 | + | ||
1514 | + | func hM (fd,fe) = if ((fe >= fa)) | |
1515 | + | then fd | |
1503 | 1516 | else throw("List size exceeds 6") | |
1504 | 1517 | ||
1505 | - | | |
1518 | + | hM(hL(hL(hL(hL(hL(hL(fb, 0), 1), 2), 3), 4), 5), 6) | |
1506 | 1519 | } | |
1507 | - | let | |
1520 | + | let ic = if ((hW == "")) | |
1508 | 1521 | then 0 | |
1509 | - | else ( let | |
1510 | - | let | |
1511 | - | let | |
1512 | - | func | |
1513 | - | then | |
1514 | - | else | |
1515 | - | ||
1516 | - | func | |
1517 | - | then | |
1522 | + | else ( let eZ = split_4C(hW, "_") | |
1523 | + | let fa = size(eZ) | |
1524 | + | let fb = $Tuple2(0, 0) | |
1525 | + | func hO (fd,fe) = if ((fe >= fa)) | |
1526 | + | then fd | |
1527 | + | else hZ(fd, eZ[fe]) | |
1528 | + | ||
1529 | + | func hP (fd,fe) = if ((fe >= fa)) | |
1530 | + | then fd | |
1518 | 1531 | else throw("List size exceeds 50") | |
1519 | 1532 | ||
1520 | - | | |
1521 | - | (( | |
1522 | - | } | |
1523 | - | ||
1524 | - | ||
1525 | - | func | |
1526 | - | let | |
1527 | - | let | |
1528 | - | let | |
1529 | - | let | |
1530 | - | let | |
1531 | - | let | |
1532 | - | then makeString(["0", toString( | |
1533 | + | hP(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(fb, 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 | |
1534 | + | ((ia + ib) + ic) | |
1535 | + | } | |
1536 | + | ||
1537 | + | ||
1538 | + | func id (ie,if,ig) = { | |
1539 | + | let hT = ((toString(if) + "_") + toString(ig)) | |
1540 | + | let ih = hS(hT) | |
1541 | + | let ii = valueOrElse(getString(ie), (hT + ":0_0_0_0_0_0:0_0_0_0_0_0::0")) | |
1542 | + | let ij = split_4C(ii, ":") | |
1543 | + | let ik = hU(ij) | |
1544 | + | let il = if ((5 > size(ij))) | |
1545 | + | then makeString(["0", toString(ik), toString((ih - ik)), toString(ih)], "_") | |
1533 | 1546 | else { | |
1534 | - | let | |
1535 | - | let | |
1536 | - | let | |
1537 | - | then parseIntValue( | |
1538 | - | else | |
1539 | - | makeString([toString( | |
1540 | - | } | |
1541 | - | [ | |
1542 | - | then | |
1543 | - | else "0_0_0_0_0_0", if ((size(split( | |
1544 | - | then | |
1545 | - | else "0_0_0_0_0_0", | |
1546 | - | } | |
1547 | - | ||
1548 | - | ||
1549 | - | func | |
1550 | - | let | |
1551 | - | let | |
1552 | - | (( | |
1553 | - | } | |
1554 | - | ||
1555 | - | ||
1556 | - | func | |
1547 | + | let im = split(ij[bi], "_") | |
1548 | + | let in = parseIntValue(im[bj]) | |
1549 | + | let io = if ((size(im) > 1)) | |
1550 | + | then parseIntValue(im[bk]) | |
1551 | + | else ik | |
1552 | + | makeString([toString(in), toString(io), toString(((ih - in) - io)), toString(ih)], "_") | |
1553 | + | } | |
1554 | + | [ij[be], if ((size(split(ij[bf], "_")) == aJ)) | |
1555 | + | then ij[bf] | |
1556 | + | else "0_0_0_0_0_0", if ((size(split(ij[bg], "_")) == aJ)) | |
1557 | + | then ij[bg] | |
1558 | + | else "0_0_0_0_0_0", ij[bh], il] | |
1559 | + | } | |
1560 | + | ||
1561 | + | ||
1562 | + | func ip (hV) = { | |
1563 | + | let iq = hU(hV) | |
1564 | + | let ir = parseIntValue(split(hV[bi], "_")[bj]) | |
1565 | + | ((hS(hV[be]) - iq) - ir) | |
1566 | + | } | |
1567 | + | ||
1568 | + | ||
1569 | + | func is (it,hV,iu) = if ((size(it) != 3)) | |
1557 | 1570 | then throw("cargoListStr should contain exactly 2 ':' separators") | |
1558 | 1571 | else { | |
1559 | - | let | |
1560 | - | let | |
1561 | - | let | |
1572 | + | let iv = split(it[0], "_") | |
1573 | + | let iw = split(it[1], "_") | |
1574 | + | let ix = if ((it[2] == "")) | |
1562 | 1575 | then nil | |
1563 | - | else split_4C( | |
1564 | - | if ((size( | |
1576 | + | else split_4C(it[2], "_") | |
1577 | + | if ((size(iv) != aJ)) | |
1565 | 1578 | then throw("All 6 resources should be passed") | |
1566 | - | else if ((size( | |
1579 | + | else if ((size(iw) != aJ)) | |
1567 | 1580 | then throw("All 6 materials should be passed") | |
1568 | 1581 | else { | |
1569 | - | let | |
1570 | - | let | |
1571 | - | let | |
1572 | - | let | |
1582 | + | let hf = ip(hV) | |
1583 | + | let iy = split(hV[bf], "_") | |
1584 | + | let iz = split(hV[bg], "_") | |
1585 | + | let iA = if ((hV[bh] == "")) | |
1573 | 1586 | then nil | |
1574 | - | else split_4C( | |
1575 | - | let | |
1576 | - | let | |
1577 | - | let | |
1587 | + | else split_4C(hV[bh], "_") | |
1588 | + | let hd = split(iu[bo], "_") | |
1589 | + | let iB = split(iu[bp], "_") | |
1590 | + | let iC = if ((iu[bq] == "")) | |
1578 | 1591 | then nil | |
1579 | - | else split_4C( | |
1580 | - | func | |
1581 | - | let | |
1582 | - | let | |
1583 | - | let | |
1584 | - | let | |
1585 | - | if (( | |
1586 | - | then $Tuple4(( | |
1587 | - | else if (( | |
1588 | - | then if (( | |
1589 | - | then throw((((("Attempt to take " + | |
1590 | - | else $Tuple4(( | |
1591 | - | else if ((-( | |
1592 | - | then throw((((("Attempt to take " + toString(-( | |
1593 | - | else $Tuple4(( | |
1592 | + | else split_4C(iu[bq], "_") | |
1593 | + | func iD (eX,hY) = { | |
1594 | + | let gQ = eX._1 | |
1595 | + | let iE = parseIntValue(hY) | |
1596 | + | let iF = parseIntValue(iy[gQ]) | |
1597 | + | let iG = parseIntValue(hd[gQ]) | |
1598 | + | if ((iE == 0)) | |
1599 | + | then $Tuple4((gQ + 1), (eX._2 :+ iy[gQ]), (eX._3 :+ hd[gQ]), eX._4) | |
1600 | + | else if ((iE > 0)) | |
1601 | + | then if ((iE > iG)) | |
1602 | + | then throw((((("Attempt to take " + hY) + " from backpack, but only ") + toString(iG)) + " available")) | |
1603 | + | else $Tuple4((gQ + 1), (eX._2 :+ toString((iF + iE))), (eX._3 :+ toString((iG - iE))), (eX._4 + iE)) | |
1604 | + | else if ((-(iE) > iF)) | |
1605 | + | then throw((((("Attempt to take " + toString(-(iE))) + " from warehouse, but only ") + toString(iF)) + " available")) | |
1606 | + | else $Tuple4((gQ + 1), (eX._2 :+ toString((iF + iE))), (eX._3 :+ toString((iG - iE))), (eX._4 + iE)) | |
1594 | 1607 | } | |
1595 | 1608 | ||
1596 | - | let | |
1597 | - | let | |
1598 | - | let | |
1599 | - | let | |
1600 | - | func | |
1601 | - | then | |
1602 | - | else | |
1603 | - | ||
1604 | - | func | |
1605 | - | then | |
1609 | + | let fi = { | |
1610 | + | let eZ = iv | |
1611 | + | let fa = size(eZ) | |
1612 | + | let fb = $Tuple4(0, nil, nil, 0) | |
1613 | + | func fc (fd,fe) = if ((fe >= fa)) | |
1614 | + | then fd | |
1615 | + | else iD(fd, eZ[fe]) | |
1616 | + | ||
1617 | + | func ff (fd,fe) = if ((fe >= fa)) | |
1618 | + | then fd | |
1606 | 1619 | else throw("List size exceeds 6") | |
1607 | 1620 | ||
1608 | - | | |
1621 | + | ff(fc(fc(fc(fc(fc(fc(fb, 0), 1), 2), 3), 4), 5), 6) | |
1609 | 1622 | } | |
1610 | - | func | |
1611 | - | let | |
1612 | - | let | |
1613 | - | let | |
1614 | - | let | |
1615 | - | if (( | |
1616 | - | then $Tuple4(( | |
1617 | - | else if (( | |
1618 | - | then if (( | |
1619 | - | then throw((((("Attempt to take " + | |
1620 | - | else $Tuple4(( | |
1621 | - | else if ((-( | |
1622 | - | then throw((((("Attempt to take " + toString(-( | |
1623 | - | else $Tuple4(( | |
1623 | + | func iH (eX,hY) = { | |
1624 | + | let gQ = eX._1 | |
1625 | + | let iE = parseIntValue(hY) | |
1626 | + | let iI = parseIntValue(iz[gQ]) | |
1627 | + | let iJ = parseIntValue(iB[gQ]) | |
1628 | + | if ((iE == 0)) | |
1629 | + | then $Tuple4((gQ + 1), (eX._2 :+ iz[gQ]), (eX._3 :+ iB[gQ]), eX._4) | |
1630 | + | else if ((iE > 0)) | |
1631 | + | then if ((iE > iJ)) | |
1632 | + | then throw((((("Attempt to take " + hY) + " from backpack, but only ") + toString(iJ)) + " available")) | |
1633 | + | else $Tuple4((gQ + 1), (eX._2 :+ toString((iI + iE))), (eX._3 :+ toString((iJ - iE))), (eX._4 + iE)) | |
1634 | + | else if ((-(iE) > iI)) | |
1635 | + | then throw((((("Attempt to take " + toString(-(iE))) + " from warehouse, but only ") + toString(iI)) + " available")) | |
1636 | + | else $Tuple4((gQ + 1), (eX._2 :+ toString((iI + iE))), (eX._3 :+ toString((iJ - iE))), (eX._4 + iE)) | |
1624 | 1637 | } | |
1625 | 1638 | ||
1626 | - | let | |
1627 | - | let | |
1628 | - | let | |
1629 | - | let | |
1630 | - | func | |
1631 | - | then | |
1632 | - | else | |
1633 | - | ||
1634 | - | func | |
1635 | - | then | |
1639 | + | let gw = { | |
1640 | + | let eZ = iw | |
1641 | + | let fa = size(eZ) | |
1642 | + | let fb = $Tuple4(0, nil, nil, fi._4) | |
1643 | + | func hL (fd,fe) = if ((fe >= fa)) | |
1644 | + | then fd | |
1645 | + | else iH(fd, eZ[fe]) | |
1646 | + | ||
1647 | + | func hM (fd,fe) = if ((fe >= fa)) | |
1648 | + | then fd | |
1636 | 1649 | else throw("List size exceeds 6") | |
1637 | 1650 | ||
1638 | - | | |
1651 | + | hM(hL(hL(hL(hL(hL(hL(fb, 0), 1), 2), 3), 4), 5), 6) | |
1639 | 1652 | } | |
1640 | - | func | |
1641 | - | let | |
1642 | - | let | |
1643 | - | let | |
1644 | - | then parseIntValue( | |
1653 | + | func iK (eX,hY) = { | |
1654 | + | let gQ = eX._1 | |
1655 | + | let iE = parseIntValue(hY) | |
1656 | + | let iL = if ((size(iA) > gQ)) | |
1657 | + | then parseIntValue(iA[gQ]) | |
1645 | 1658 | else 0 | |
1646 | - | let | |
1647 | - | then parseIntValue( | |
1659 | + | let iM = if ((size(iC) > gQ)) | |
1660 | + | then parseIntValue(iC[gQ]) | |
1648 | 1661 | else 0 | |
1649 | - | if (( | |
1650 | - | then $Tuple4(( | |
1651 | - | else if (( | |
1652 | - | then if (( | |
1653 | - | then throw((((("Attempt to take " + | |
1662 | + | if ((iE == 0)) | |
1663 | + | then $Tuple4((gQ + 1), (eX._2 :+ toString(iL)), (eX._3 :+ toString(iM)), eX._4) | |
1664 | + | else if ((iE > 0)) | |
1665 | + | then if ((iE > iM)) | |
1666 | + | then throw((((("Attempt to take " + hY) + " from backpack, but only ") + toString(iM)) + " available")) | |
1654 | 1667 | else { | |
1655 | - | let | |
1656 | - | $Tuple4(( | |
1668 | + | let fZ = (eN((iL + iE), bd) - eN(iL, bd)) | |
1669 | + | $Tuple4((gQ + 1), (eX._2 :+ toString((iL + iE))), (eX._3 :+ toString((iM - iE))), (eX._4 + fZ)) | |
1657 | 1670 | } | |
1658 | - | else if ((-( | |
1659 | - | then throw((((("Attempt to take " + toString(-( | |
1671 | + | else if ((-(iE) > iL)) | |
1672 | + | then throw((((("Attempt to take " + toString(-(iE))) + " from warehouse, but only ") + toString(iL)) + " available")) | |
1660 | 1673 | else { | |
1661 | - | let | |
1662 | - | $Tuple4(( | |
1674 | + | let fZ = (eN((iL + iE), bd) - eN(iL, bd)) | |
1675 | + | $Tuple4((gQ + 1), (eX._2 :+ toString((iL + iE))), (eX._3 :+ toString((iM - iE))), (eX._4 + fZ)) | |
1663 | 1676 | } | |
1664 | 1677 | } | |
1665 | 1678 | ||
1666 | - | let | |
1679 | + | let gA = if ((size(ix) != 0)) | |
1667 | 1680 | then { | |
1668 | - | let | |
1669 | - | let | |
1670 | - | let | |
1671 | - | func | |
1672 | - | then | |
1673 | - | else | |
1674 | - | ||
1675 | - | func | |
1676 | - | then | |
1681 | + | let eZ = ix | |
1682 | + | let fa = size(eZ) | |
1683 | + | let fb = $Tuple4(0, nil, nil, gw._4) | |
1684 | + | func hO (fd,fe) = if ((fe >= fa)) | |
1685 | + | then fd | |
1686 | + | else iK(fd, eZ[fe]) | |
1687 | + | ||
1688 | + | func hP (fd,fe) = if ((fe >= fa)) | |
1689 | + | then fd | |
1677 | 1690 | else throw("List size exceeds 50") | |
1678 | 1691 | ||
1679 | - | | |
1692 | + | hP(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(fb, 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) | |
1680 | 1693 | } | |
1681 | - | else $Tuple4(0, | |
1682 | - | let | |
1683 | - | if (( | |
1684 | - | then throw((((("Attempt to put total " + toString( | |
1685 | - | else $Tuple7(makeString( | |
1694 | + | else $Tuple4(0, iA, iC, gw._4) | |
1695 | + | let iN = gA._4 | |
1696 | + | if ((iN > hf)) | |
1697 | + | then throw((((("Attempt to put total " + toString(iN)) + " stuff, but only ") + toString(hf)) + " warehouse space left")) | |
1698 | + | else $Tuple7(makeString(fi._2, "_"), makeString(gw._2, "_"), makeString_2C(gA._2, "_"), makeString(fi._3, "_"), makeString(gw._3, "_"), makeString_2C(gA._3, "_"), iN) | |
1686 | 1699 | } | |
1687 | 1700 | } | |
1688 | 1701 | ||
1689 | 1702 | ||
1690 | - | func | |
1691 | - | let | |
1692 | - | let | |
1693 | - | let | |
1694 | - | let | |
1695 | - | let | |
1696 | - | let | |
1697 | - | let | |
1698 | - | let | |
1699 | - | let | |
1700 | - | let | |
1701 | - | $Tuple2([IntegerEntry( | |
1702 | - | } | |
1703 | - | ||
1704 | - | ||
1705 | - | func | |
1703 | + | func iO (iP,iQ) = { | |
1704 | + | let bR = toString(iP) | |
1705 | + | let iR = hl(toBigInt(iQ)) | |
1706 | + | let iS = valueOrElse(getInteger(ev()), (eu + 1)) | |
1707 | + | let ez = toString(iS) | |
1708 | + | let hu = toInt((iR % eo)) | |
1709 | + | let gT = hs(iR, hu) | |
1710 | + | let dz = aV[hu] | |
1711 | + | let iT = Issue(eM(ez, "S"), makeString([ez, "S", gT, dz], "_"), 1, 0, false) | |
1712 | + | let bv = calculateAssetId(iT) | |
1713 | + | let iU = toBase58String(bv) | |
1714 | + | $Tuple2([IntegerEntry(ev(), (iS + 1)), iT, StringEntry(ey(ez), iU), StringEntry(bu(iU), bR), StringEntry(eB(ez), bR), IntegerEntry(bE(iU), 0), IntegerEntry(eA(iU, bR), 0), ScriptTransfer(iP, 1, bv)], $Tuple2(iU, dz)) | |
1715 | + | } | |
1716 | + | ||
1717 | + | ||
1718 | + | func iV (bR,iW,iX) = if (!(sigVerify_8Kb(iW, iX, ef))) | |
1706 | 1719 | then throw("signature does not match") | |
1707 | 1720 | else { | |
1708 | - | let | |
1709 | - | let | |
1710 | - | let | |
1711 | - | let | |
1712 | - | let | |
1713 | - | let | |
1714 | - | let | |
1715 | - | let | |
1716 | - | if (if (( | |
1721 | + | let fv = split_4C(toUtf8String(iW), ";") | |
1722 | + | let iY = split_4C(fv[0], "|") | |
1723 | + | let iZ = split(iY[eI], "_") | |
1724 | + | let ja = parseIntValue(iZ[0]) | |
1725 | + | let jb = parseIntValue(iZ[1]) | |
1726 | + | let jc = split(fv[1], ":") | |
1727 | + | let jd = jc[0] | |
1728 | + | let je = parseIntValue(iY[eJ]) | |
1729 | + | if (if ((je > (lastBlock.timestamp + eh))) | |
1717 | 1730 | then true | |
1718 | - | else ((lastBlock.timestamp - | |
1719 | - | then throw(((("signature outdated: logTime=" + toString( | |
1731 | + | else ((lastBlock.timestamp - eh) > je)) | |
1732 | + | then throw(((("signature outdated: logTime=" + toString(je)) + ", bcTime=") + toString(lastBlock.timestamp))) | |
1720 | 1733 | else { | |
1721 | - | let | |
1722 | - | let | |
1723 | - | if (( | |
1724 | - | then throw(((("Tx ids don't match! In state: " + | |
1734 | + | let jf = jc[1] | |
1735 | + | let jg = valueOrElse(getString(dR(bR)), "") | |
1736 | + | if ((jg != jf)) | |
1737 | + | then throw(((("Tx ids don't match! In state: " + jg) + ", in msg: ") + jf)) | |
1725 | 1738 | else { | |
1726 | - | let | |
1727 | - | let | |
1728 | - | let | |
1729 | - | let | |
1730 | - | if (( | |
1731 | - | then throw(((("oldHealth=" + toString( | |
1732 | - | else if ((0 >= | |
1739 | + | let C = valueOrErrorMessage(getString(bN(bR)), "You don't have a duck staked") | |
1740 | + | let jh = B(C) | |
1741 | + | let ji = ak(valueOrElse(getInteger(F(C)), 0)) | |
1742 | + | let jj = valueOrElse(getInteger(jh), ji) | |
1743 | + | if ((jj != ja)) | |
1744 | + | then throw(((("oldHealth=" + toString(jj)) + " from state does not match one from flight log=") + toString(ja))) | |
1745 | + | else if ((0 >= ja)) | |
1733 | 1746 | then throw("You can't fly with zero health") | |
1734 | - | else if (!( | |
1747 | + | else if (!(gC(C))) | |
1735 | 1748 | then throw("Equipment incompatible") | |
1736 | 1749 | else { | |
1737 | - | let | |
1738 | - | then | |
1750 | + | let jk = if ((size(iY) > eK)) | |
1751 | + | then iY[eK] | |
1739 | 1752 | else "" | |
1740 | - | let | |
1741 | - | then | |
1753 | + | let jl = if ((size(iY) > eL)) | |
1754 | + | then iY[eL] | |
1742 | 1755 | else "" | |
1743 | - | let | |
1744 | - | then ( | |
1756 | + | let jm = if (if ((jb > 0)) | |
1757 | + | then (jk == "$") | |
1745 | 1758 | else false) | |
1746 | - | then | |
1759 | + | then dF(invoke(dh, "sendUsdtPrize", [bR], nil)) | |
1747 | 1760 | else 0 | |
1748 | - | $Tuple5( | |
1761 | + | $Tuple5(jb, C, jm, jd, jl) | |
1749 | 1762 | } | |
1750 | 1763 | } | |
1751 | 1764 | } | |
1752 | 1765 | } | |
1753 | 1766 | ||
1754 | 1767 | ||
1755 | - | func | |
1756 | - | let | |
1757 | - | let | |
1758 | - | let | |
1759 | - | let | |
1760 | - | (( | |
1761 | - | } | |
1762 | - | ||
1763 | - | ||
1764 | - | func | |
1765 | - | let | |
1766 | - | then $Tuple2( | |
1768 | + | func jn (R,jo) = { | |
1769 | + | let ig = valueOrElse(getInteger(bE(R)), 0) | |
1770 | + | let jp = valueOrElse(getInteger(by(aI, R)), 0) | |
1771 | + | let jq = (ig / 6) | |
1772 | + | let jr = (ig / 7) | |
1773 | + | ((aL + fraction(aL, ((ig + jq) + (2 * jr)), 5)) + fraction(aL, jp, (jo * 5))) | |
1774 | + | } | |
1775 | + | ||
1776 | + | ||
1777 | + | func js (d,jt,ju) = { | |
1778 | + | let jv = if ((jt == eF)) | |
1779 | + | then $Tuple2(ju, valueOrElse(getString(bN(d)), "")) | |
1767 | 1780 | else { | |
1768 | - | let | |
1769 | - | let | |
1770 | - | let | |
1771 | - | if (( | |
1772 | - | then throw((("Duck location type is " + | |
1773 | - | else $Tuple2( | |
1774 | - | } | |
1775 | - | let | |
1776 | - | let | |
1777 | - | let | |
1778 | - | let | |
1779 | - | let | |
1780 | - | let | |
1781 | - | if (( | |
1782 | - | then throw(( | |
1781 | + | let C = valueOrErrorMessage(getString(bN(d)), "You don't have a duck staked") | |
1782 | + | let jw = valueOrElse(getString(bP(C)), aN) | |
1783 | + | let cl = split(value(jw), "_") | |
1784 | + | if ((cl[bs] != "L")) | |
1785 | + | then throw((("Duck location type is " + cl[bs]) + ", but should be L")) | |
1786 | + | else $Tuple2(cl[bt], C) | |
1787 | + | } | |
1788 | + | let R = jv._1 | |
1789 | + | let jx = jv._2 | |
1790 | + | let jy = value(assetInfo(fromBase58String(R))) | |
1791 | + | let jz = bx(R) | |
1792 | + | let jA = valueOrErrorMessage(getInteger(jz), (("Land " + jy.name) + " is not staked")) | |
1793 | + | let jB = valueOrErrorMessage(getString(bu(R)), (("NFT " + jy.name) + " is orphaned")) | |
1794 | + | if ((jB != d)) | |
1795 | + | then throw((aG + " is not yours")) | |
1783 | 1796 | else { | |
1784 | - | let | |
1785 | - | $Tuple4( | |
1786 | - | } | |
1787 | - | } | |
1788 | - | ||
1789 | - | ||
1790 | - | func | |
1797 | + | let jC = split(jy.description, "_") | |
1798 | + | $Tuple4(jx, R, jC, jA) | |
1799 | + | } | |
1800 | + | } | |
1801 | + | ||
1802 | + | ||
1803 | + | func jD (d,eO,jt,ju) = if ((0 > eO)) | |
1791 | 1804 | then throw("Negative amount") | |
1792 | 1805 | else { | |
1793 | - | let | |
1794 | - | let | |
1795 | - | let | |
1796 | - | let | |
1797 | - | if ((0 > | |
1798 | - | then throw(((("Saved timestamp is in future, saved = " + toString( | |
1806 | + | let gg = js(d, jt, ju) | |
1807 | + | let dO = gg._3[do] | |
1808 | + | let gM = gS(gg._3[dp]) | |
1809 | + | let gW = (lastBlock.timestamp - gg._4) | |
1810 | + | if ((0 > gW)) | |
1811 | + | then throw(((("Saved timestamp is in future, saved = " + toString(gg._4)) + ", current = ") + toString(lastBlock.timestamp))) | |
1799 | 1812 | else { | |
1800 | - | let | |
1801 | - | let | |
1802 | - | let | |
1803 | - | if (( | |
1804 | - | then throw(((("Not enough resources, available = " + toString( | |
1813 | + | let jo = dN(dO) | |
1814 | + | let jE = jn(gg._2, jo) | |
1815 | + | let jF = fraction(gW, (jE * jo), a) | |
1816 | + | if ((eO > jF)) | |
1817 | + | then throw(((("Not enough resources, available = " + toString(jF)) + ", requested = ") + toString(eO))) | |
1805 | 1818 | else { | |
1806 | - | let | |
1807 | - | let | |
1808 | - | let | |
1809 | - | let | |
1810 | - | let | |
1811 | - | let | |
1812 | - | let | |
1813 | - | let | |
1814 | - | let | |
1815 | - | if (if (( | |
1816 | - | then ( | |
1819 | + | let jG = fraction((jF - eO), a, (jE * jo)) | |
1820 | + | let jH = (lastBlock.timestamp - jG) | |
1821 | + | let if = (jo / cL) | |
1822 | + | let he = ha(gM, (gW - jG), if, jE) | |
1823 | + | let ie = bD(gg._2) | |
1824 | + | let ig = valueOrElse(getInteger(bE(gg._2)), 0) | |
1825 | + | let hV = id(ie, if, ig) | |
1826 | + | let im = split(hV[bi], "_") | |
1827 | + | let hf = parseIntValue(im[bl]) | |
1828 | + | if (if ((jt == eF)) | |
1829 | + | then (eO > hf) | |
1817 | 1830 | else false) | |
1818 | - | then throw((("Only " + toString( | |
1831 | + | then throw((("Only " + toString(hf)) + " space left in warehouse")) | |
1819 | 1832 | else { | |
1820 | - | let | |
1821 | - | let | |
1822 | - | let | |
1823 | - | let | |
1824 | - | let | |
1825 | - | then $Tuple4( | |
1826 | - | else if (( | |
1827 | - | then $Tuple4( | |
1833 | + | let hR = bO(gg._1) | |
1834 | + | let iu = hQ(hR) | |
1835 | + | let hd = split(iu[bo], "_") | |
1836 | + | let hc = split(hV[bf], "_") | |
1837 | + | let jI = if ((jt == eF)) | |
1838 | + | then $Tuple4(gU(hc, gM, (gW - jG), if, jE), iu[bo], (parseIntValue(im[bk]) + he._2), (parseIntValue(im[bl]) - he._2)) | |
1839 | + | else if ((jt == eG)) | |
1840 | + | then $Tuple4(hV[bf], gU(hd, gM, (gW - jG), if, jE), parseIntValue(im[bk]), parseIntValue(im[bl])) | |
1828 | 1841 | else { | |
1829 | - | let | |
1830 | - | let | |
1831 | - | $Tuple4( | |
1842 | + | let jJ = hb(hc, hd, he, hf) | |
1843 | + | let jK = min([parseIntValue(im[bl]), he._2]) | |
1844 | + | $Tuple4(jJ._1, jJ._2, (parseIntValue(im[bk]) + jK), (parseIntValue(im[bl]) - jK)) | |
1832 | 1845 | } | |
1833 | - | let | |
1834 | - | let | |
1835 | - | let | |
1836 | - | let | |
1837 | - | $Tuple5([IntegerEntry( | |
1846 | + | let jL = jI._1 | |
1847 | + | let jM = jI._2 | |
1848 | + | let jN = jI._3 | |
1849 | + | let jO = jI._4 | |
1850 | + | $Tuple5([IntegerEntry(bx(gg._2), jH), IntegerEntry(bA(aG, gg._2, d), jH)], hR, [iu[bn], jM, iu[bp], iu[bq]], ie, [hV[be], jL, hV[bg], hV[bh], makeString([im[bj], toString(jN), toString(jO), im[bm]], "_")]) | |
1838 | 1851 | } | |
1839 | 1852 | } | |
1840 | 1853 | } | |
1841 | 1854 | } | |
1842 | 1855 | ||
1843 | 1856 | ||
1844 | - | func | |
1845 | - | let | |
1846 | - | let | |
1847 | - | let | |
1848 | - | | |
1849 | - | } | |
1850 | - | ||
1851 | - | ||
1852 | - | func | |
1853 | - | let d = toString( | |
1854 | - | let | |
1855 | - | let | |
1856 | - | let | |
1857 | - | let | |
1858 | - | if (if (!( | |
1859 | - | then ( | |
1857 | + | func jP (d,R,jo,jt) = { | |
1858 | + | let jz = bx(R) | |
1859 | + | let jA = value(getInteger(jz)) | |
1860 | + | let jF = (fraction((lastBlock.timestamp - jA), jn(R, jo), a) * jo) | |
1861 | + | jD(d, jF, jt, R) | |
1862 | + | } | |
1863 | + | ||
1864 | + | ||
1865 | + | func jQ (fk,iP,jR,R) = { | |
1866 | + | let d = toString(iP) | |
1867 | + | let gg = js(d, eH, R) | |
1868 | + | let jo = dN(gg._3[do]) | |
1869 | + | let jS = bE(gg._2) | |
1870 | + | let jT = valueOrElse(getInteger(jS), 0) | |
1871 | + | if (if (!(cA)) | |
1872 | + | then (jT >= 3) | |
1860 | 1873 | else false) | |
1861 | 1874 | then throw("Currently max infrastructure level = 3") | |
1862 | 1875 | else { | |
1863 | - | let | |
1864 | - | let | |
1865 | - | if (if ( | |
1866 | - | then ( | |
1876 | + | let jU = ((sqrt(jo, 0, 0, DOWN) / 5) + 2) | |
1877 | + | let ap = (jT + 1) | |
1878 | + | if (if (cA) | |
1879 | + | then (ap > jU) | |
1867 | 1880 | else false) | |
1868 | - | then throw(("Currently max infrastructure level = " + toString( | |
1881 | + | then throw(("Currently max infrastructure level = " + toString(jU))) | |
1869 | 1882 | else { | |
1870 | - | let | |
1871 | - | if (if (!( | |
1872 | - | then ( | |
1883 | + | let jV = fraction(ek, (jo * ap), cL) | |
1884 | + | if (if (!(fk)) | |
1885 | + | then (jR != jV) | |
1873 | 1886 | else false) | |
1874 | - | then throw(("Payment attached should be " + toString( | |
1887 | + | then throw(("Payment attached should be " + toString(jV))) | |
1875 | 1888 | else { | |
1876 | - | let | |
1877 | - | let | |
1878 | - | let | |
1879 | - | let | |
1880 | - | let | |
1881 | - | let | |
1882 | - | let | |
1883 | - | let | |
1884 | - | let | |
1885 | - | let | |
1886 | - | let | |
1887 | - | let | |
1888 | - | $Tuple3(([IntegerEntry( | |
1889 | + | let hR = bO(gg._1) | |
1890 | + | let iu = hQ(hR) | |
1891 | + | let jW = split(iu[bp], "_") | |
1892 | + | let jX = fraction(cG, (jo * ap), cL) | |
1893 | + | let jY = makeString(fj(fk, jW, jX), "_") | |
1894 | + | let jZ = jP(d, gg._2, jo, eH) | |
1895 | + | let ka = jZ._5 | |
1896 | + | let kb = hS(ka[be]) | |
1897 | + | let kc = makeString([split(ka[be], "_")[0], toString(ap)], "_") | |
1898 | + | let kd = hS(kc) | |
1899 | + | let im = split(ka[bi], "_") | |
1900 | + | let ke = makeString([im[bj], im[bk], toString(((parseIntValue(im[bl]) + kd) - kb)), toString(kd)], "_") | |
1901 | + | $Tuple3(([IntegerEntry(jS, ap), IntegerEntry(eA(gg._2, d), ap), StringEntry(hR, makeString([iu[bn], jZ._3[bo], jY, iu[bq]], ":")), StringEntry(jZ._4, makeString([kc, ka[bf], ka[bg], ka[bh], ke], ":"))] ++ jZ._1), ap, jX) | |
1889 | 1902 | } | |
1890 | 1903 | } | |
1891 | 1904 | } | |
1892 | 1905 | } | |
1893 | 1906 | ||
1894 | 1907 | ||
1895 | - | func | |
1896 | - | let | |
1897 | - | let | |
1898 | - | let | |
1899 | - | let | |
1900 | - | let | |
1901 | - | let | |
1902 | - | $Tuple2([IntegerEntry( | |
1903 | - | } | |
1904 | - | ||
1905 | - | ||
1906 | - | func | |
1907 | - | let | |
1908 | - | let | |
1909 | - | let | |
1910 | - | let | |
1911 | - | let | |
1912 | - | let | |
1913 | - | $Tuple2([IntegerEntry( | |
1914 | - | } | |
1915 | - | ||
1916 | - | ||
1917 | - | func | |
1918 | - | let | |
1919 | - | let | |
1920 | - | let | |
1921 | - | if (!(isDefined( | |
1908 | + | func kf (C,kg) = { | |
1909 | + | let kh = F(C) | |
1910 | + | let ki = E(C) | |
1911 | + | let aj = valueOrElse(getInteger(ki), 0) | |
1912 | + | let ao = (aj + kg) | |
1913 | + | let kj = am(valueOrElse(getInteger(kh), 0), ao) | |
1914 | + | let kk = G(C) | |
1915 | + | $Tuple2([IntegerEntry(kh, kj[0]), IntegerEntry(ki, ao), IntegerEntry(kk, (valueOrElse(getInteger(kk), 0) + kj[1]))], ao) | |
1916 | + | } | |
1917 | + | ||
1918 | + | ||
1919 | + | func kl (d,kg) = { | |
1920 | + | let kh = J(d) | |
1921 | + | let ki = I(d) | |
1922 | + | let aj = valueOrElse(getInteger(ki), 0) | |
1923 | + | let ao = (aj + kg) | |
1924 | + | let kj = am(valueOrElse(getInteger(kh), 0), ao) | |
1925 | + | let kk = K(d) | |
1926 | + | $Tuple2([IntegerEntry(kh, kj[0]), IntegerEntry(ki, ao), IntegerEntry(kk, (valueOrElse(getInteger(kk), 0) + kj[1]))], ao) | |
1927 | + | } | |
1928 | + | ||
1929 | + | ||
1930 | + | func km (d) = { | |
1931 | + | let C = valueOrErrorMessage(getString(bN(d)), "You don't have a duck staked") | |
1932 | + | let kn = bI(d) | |
1933 | + | let ko = getString(kn) | |
1934 | + | if (!(isDefined(ko))) | |
1922 | 1935 | then throw("You are not eligible for ONBOARD artifact") | |
1923 | 1936 | else { | |
1924 | - | let | |
1925 | - | let | |
1926 | - | if (isDefined( | |
1927 | - | then throw(("You already used your ONBOARD artifact on duck " + value( | |
1937 | + | let kp = bK(d) | |
1938 | + | let kq = getString(kp) | |
1939 | + | if (isDefined(kq)) | |
1940 | + | then throw(("You already used your ONBOARD artifact on duck " + value(kq))) | |
1928 | 1941 | else { | |
1929 | - | let | |
1930 | - | let | |
1931 | - | if (isDefined( | |
1932 | - | then throw(((("The duck " + | |
1933 | - | else ([StringEntry( | |
1942 | + | let kr = bJ(C) | |
1943 | + | let ks = getString(kr) | |
1944 | + | if (isDefined(ks)) | |
1945 | + | then throw(((("The duck " + C) + " already got points from ONBOARD artifact from user ") + value(ks))) | |
1946 | + | else ([StringEntry(kp, C), StringEntry(kr, d)] ++ kf(C, ag)._1) | |
1934 | 1947 | } | |
1935 | 1948 | } | |
1936 | 1949 | } | |
1937 | 1950 | ||
1938 | 1951 | ||
1939 | - | func | |
1940 | - | let | |
1941 | - | let | |
1942 | - | let | |
1943 | - | let | |
1944 | - | if ((valueOrElse(getInteger( | |
1952 | + | func kt (d,ju) = { | |
1953 | + | let gg = js(d, eH, ju) | |
1954 | + | let R = gg._2 | |
1955 | + | let jo = dN(gg._3[do]) | |
1956 | + | let ku = by(aI, R) | |
1957 | + | if ((valueOrElse(getInteger(ku), 0) > 0)) | |
1945 | 1958 | then throw("Presale artifact is already activated") | |
1946 | - | else if ((parseIntValue( | |
1947 | - | then throw(((( | |
1959 | + | else if ((parseIntValue(gg._3[dn]) > eu)) | |
1960 | + | then throw((((aG + " ") + R) + " is not eligible for presale artifact")) | |
1948 | 1961 | else { | |
1949 | - | let | |
1950 | - | ((( | |
1962 | + | let jZ = jP(d, R, jo, eH) | |
1963 | + | (((jZ._1 :+ IntegerEntry(ku, jo)) :+ StringEntry(jZ._2, makeString(jZ._3, ":"))) :+ StringEntry(jZ._4, makeString(jZ._5, ":"))) | |
1951 | 1964 | } | |
1952 | 1965 | } | |
1953 | 1966 | ||
1954 | 1967 | ||
1955 | - | func | |
1956 | - | let | |
1957 | - | let | |
1958 | - | let | |
1959 | - | let | |
1960 | - | let | |
1961 | - | let | |
1962 | - | if (( | |
1968 | + | func kv (C) = { | |
1969 | + | let ck = valueOrElse(getInteger(dl, bV), 0) | |
1970 | + | let jw = split(valueOrElse(getString(bP(C)), aN), "_") | |
1971 | + | let aB = lastBlock.timestamp | |
1972 | + | let cm = ce(dl, ck) | |
1973 | + | let cg = cm[ca] | |
1974 | + | let ch = cm[cb] | |
1975 | + | if ((jw[bs] != "T")) | |
1963 | 1976 | then false | |
1964 | - | else if (if (if ((parseIntValue( | |
1965 | - | then ( | |
1977 | + | else if (if (if ((parseIntValue(jw[br]) == ck)) | |
1978 | + | then (ch[cd] == "INPROGRESS") | |
1966 | 1979 | else false) | |
1967 | - | then (parseIntValue( | |
1980 | + | then (parseIntValue(cg[cc]) > aB) | |
1968 | 1981 | else false) | |
1969 | 1982 | then throw("Your duck is taking part in the tournament") | |
1970 | - | else | |
1971 | - | } | |
1972 | - | ||
1973 | - | ||
1974 | - | func | |
1983 | + | else dJ(invoke(this, "exitTournamentInternal", [C], nil)) | |
1984 | + | } | |
1985 | + | ||
1986 | + | ||
1987 | + | func kw (C) = if (!(cB)) | |
1975 | 1988 | then false | |
1976 | 1989 | else { | |
1977 | - | let | |
1978 | - | let | |
1979 | - | if (( | |
1990 | + | let jw = split(valueOrElse(getString(bP(C)), aN), "_") | |
1991 | + | let aB = lastBlock.timestamp | |
1992 | + | if ((jw[bs] != "D")) | |
1980 | 1993 | then false | |
1981 | 1994 | else { | |
1982 | - | let | |
1983 | - | let | |
1984 | - | if (if (( | |
1985 | - | then (3 > | |
1995 | + | let co = parseIntValue(jw[br]) | |
1996 | + | let cp = parseIntValue(jw[bt]) | |
1997 | + | if (if ((aB > (co + aR))) | |
1998 | + | then (3 > cp) | |
1986 | 1999 | else false) | |
1987 | 2000 | then throw("Your duck is on delivery mission") | |
1988 | - | else | |
2001 | + | else dJ(invoke(this, "exitDeliveryInternal", [C], nil)) | |
1989 | 2002 | } | |
1990 | 2003 | } | |
1991 | 2004 | ||
1992 | 2005 | ||
1993 | - | func | |
1994 | - | let | |
1995 | - | let | |
1996 | - | let | |
1997 | - | let | |
1998 | - | let | |
1999 | - | let | |
2000 | - | let | |
2001 | - | let | |
2006 | + | func kx (C,fP,jb,ky) = { | |
2007 | + | let jw = split(valueOrElse(getString(bP(C)), aN), "_") | |
2008 | + | let aB = lastBlock.timestamp | |
2009 | + | let co = parseIntValue(jw[br]) | |
2010 | + | let cp = parseIntValue(jw[bt]) | |
2011 | + | let jB = valueOrErrorMessage(getString(bM(C)), "NFT duck is orphaned") | |
2012 | + | let kz = B(C) | |
2013 | + | let kA = getIntegerValue(kz) | |
2014 | + | let kB = if (if ((cp >= 3)) | |
2002 | 2015 | then true | |
2003 | - | else if (if ( | |
2004 | - | then ( | |
2016 | + | else if (if (fP) | |
2017 | + | then (ky >= 3) | |
2005 | 2018 | else false) | |
2006 | - | then ( | |
2019 | + | then (jb > 0) | |
2007 | 2020 | else false) | |
2008 | 2021 | then { | |
2009 | - | let kx = invoke(dd, "sendDeliveryReward", [jw], nil) | |
2010 | - | if ((kx == kx)) | |
2011 | - | then nil | |
2022 | + | let kC = invoke(di, "sendDeliveryReward", [jB], nil) | |
2023 | + | if ((kC == kC)) | |
2024 | + | then { | |
2025 | + | let kD = W(jB) | |
2026 | + | [IntegerEntry(kD, (valueOrElse(getInteger(kD), 0) + 1)), IntegerEntry(X(jB), (co / a))] | |
2027 | + | } | |
2012 | 2028 | else throw("Strict value is not equal to itself.") | |
2013 | 2029 | } | |
2014 | - | else if (if (if ( | |
2015 | - | then ( | |
2030 | + | else if (if (if (fP) | |
2031 | + | then (jb > 0) | |
2016 | 2032 | else false) | |
2017 | - | then (( | |
2033 | + | then ((co + aR) > aB) | |
2018 | 2034 | else false) | |
2019 | 2035 | then throw("Your duck is still on delivery mission") | |
2020 | 2036 | else { | |
2021 | - | let | |
2022 | - | let | |
2023 | - | if (( | |
2024 | - | then if (if (if ( | |
2025 | - | then (0 >= | |
2037 | + | let kE = valueOrElse(getInteger(di, bU), 0) | |
2038 | + | let kF = invoke(di, "updateDeliveryLocked", [(kE - aQ)], nil) | |
2039 | + | if ((kF == kF)) | |
2040 | + | then if (if (if (fP) | |
2041 | + | then (0 >= jb) | |
2026 | 2042 | else false) | |
2027 | 2043 | then true | |
2028 | - | else (0 >= | |
2044 | + | else (0 >= kA)) | |
2029 | 2045 | then nil | |
2030 | - | else [IntegerEntry( | |
2046 | + | else [IntegerEntry(V(C), (co + b))] | |
2031 | 2047 | else throw("Strict value is not equal to itself.") | |
2032 | 2048 | } | |
2033 | - | let | |
2034 | - | let | |
2035 | - | $Tuple4( | |
2036 | - | } | |
2037 | - | ||
2038 | - | ||
2039 | - | func | |
2040 | - | let | |
2041 | - | if ( | |
2049 | + | let kG = getIntegerValue(L(C)) | |
2050 | + | let kH = getStringValue(M(C)) | |
2051 | + | $Tuple4(kB, [IntegerEntry(kz, kG), StringEntry(bP(C), kH)], kH, kG) | |
2052 | + | } | |
2053 | + | ||
2054 | + | ||
2055 | + | func kI (kJ,ap,kK,d,kL,kM) = { | |
2056 | + | let C = valueOrErrorMessage(getString(bN(d)), "You don't have a duck staked") | |
2057 | + | if (kv(C)) | |
2042 | 2058 | then throw("mergeInternal_checkTournament") | |
2043 | - | else if ( | |
2059 | + | else if (kw(C)) | |
2044 | 2060 | then throw("mergeInternal_checkDelivery") | |
2045 | 2061 | else { | |
2046 | - | func | |
2047 | - | let | |
2048 | - | let | |
2049 | - | let | |
2050 | - | let | |
2051 | - | if (( | |
2052 | - | then throw(( | |
2062 | + | func kN (eX,R) = { | |
2063 | + | let jy = value(assetInfo(fromBase58String(R))) | |
2064 | + | let jz = bx(R) | |
2065 | + | let jA = valueOrErrorMessage(getInteger(jz), (("NFT " + jy.name) + " is not staked")) | |
2066 | + | let jB = valueOrErrorMessage(getString(bu(R)), (("NFT " + jy.name) + " is orphaned")) | |
2067 | + | if ((jB != d)) | |
2068 | + | then throw((aG + " is not yours")) | |
2053 | 2069 | else { | |
2054 | - | let | |
2055 | - | let | |
2056 | - | if (if (( | |
2057 | - | then ( | |
2070 | + | let jC = split(jy.description, "_") | |
2071 | + | let dz = jC[dq] | |
2072 | + | if (if ((eX._3 != "")) | |
2073 | + | then (eX._3 != dz) | |
2058 | 2074 | else false) | |
2059 | 2075 | then throw("Lands should be on the same continent to merge") | |
2060 | 2076 | else { | |
2061 | - | let | |
2062 | - | let | |
2063 | - | let | |
2064 | - | let | |
2065 | - | let | |
2066 | - | let | |
2067 | - | let | |
2068 | - | let | |
2069 | - | let | |
2070 | - | if (("S" == | |
2077 | + | let dO = jC[do] | |
2078 | + | let kO = eX._1 | |
2079 | + | let gQ = valueOrErrorMessage(indexOf(kO, dO), "You haven't passed all the lands needed") | |
2080 | + | let kP = (take(kO, gQ) + drop(kO, (gQ + 1))) | |
2081 | + | let jo = dN(dO) | |
2082 | + | let kQ = (eX._2 + valueOrElse(getInteger(by(aI, R)), 0)) | |
2083 | + | let ig = valueOrElse(getInteger(bE(R)), 0) | |
2084 | + | let kR = { | |
2085 | + | let cE = dO | |
2086 | + | if (("S" == cE)) | |
2071 | 2087 | then 3 | |
2072 | - | else if (("M" == | |
2088 | + | else if (("M" == cE)) | |
2073 | 2089 | then 4 | |
2074 | - | else if (("L" == | |
2090 | + | else if (("L" == cE)) | |
2075 | 2091 | then 5 | |
2076 | - | else if (("XL" == | |
2092 | + | else if (("XL" == cE)) | |
2077 | 2093 | then 6 | |
2078 | 2094 | else throw("Only S, M, L, XL can merge") | |
2079 | 2095 | } | |
2080 | - | if (( | |
2096 | + | if ((ig != kR)) | |
2081 | 2097 | then throw("All lands should be maxed to merge") | |
2082 | 2098 | else { | |
2083 | - | let | |
2084 | - | let | |
2085 | - | let | |
2086 | - | if ((0 > | |
2087 | - | then throw(((("Saved timestamp is in future, saved = " + toString( | |
2099 | + | let ez = jC[dn] | |
2100 | + | let gM = gS(jC[dp]) | |
2101 | + | let gW = (lastBlock.timestamp - jA) | |
2102 | + | if ((0 > gW)) | |
2103 | + | then throw(((("Saved timestamp is in future, saved = " + toString(jA)) + ", current = ") + toString(lastBlock.timestamp))) | |
2088 | 2104 | else { | |
2089 | - | let | |
2090 | - | let | |
2091 | - | let | |
2092 | - | let | |
2093 | - | let | |
2094 | - | let | |
2095 | - | let | |
2096 | - | let | |
2097 | - | if (!(isDefined( | |
2098 | - | then throw(("Your staked lands don't contain " + | |
2105 | + | let jE = jn(R, jo) | |
2106 | + | let if = (jo / cL) | |
2107 | + | let jM = gU(split(eX._4, "_"), gM, gW, if, jE) | |
2108 | + | let fh = gK(eX._6, gM, if, -1) | |
2109 | + | let kS = gK(eX._10, gM, if, -1) | |
2110 | + | let hA = gK(eX._9, gM, if, 1) | |
2111 | + | let kT = eX._7 | |
2112 | + | let dg = indexOf(kT, R) | |
2113 | + | if (!(isDefined(dg))) | |
2114 | + | then throw(("Your staked lands don't contain " + R)) | |
2099 | 2115 | else { | |
2100 | - | let | |
2101 | - | let | |
2102 | - | $Tuple10( | |
2103 | - | then [DeleteEntry( | |
2104 | - | else nil)), | |
2116 | + | let kU = bw(R) | |
2117 | + | let kV = valueOrElse(getString(kU), "") | |
2118 | + | $Tuple10(kP, kQ, dz, jM, ((((((((((((eX._5 :+ DeleteEntry(bx(R))) :+ DeleteEntry(bA(aG, R, d))) :+ DeleteEntry(ey(ez))) :+ DeleteEntry(bu(R))) :+ DeleteEntry(bE(R))) :+ DeleteEntry(eA(R, d))) :+ DeleteEntry(by(aI, R))) :+ DeleteEntry(eB(ez))) :+ DeleteEntry(bD(R))) :+ DeleteEntry(kU)) :+ Burn(fromBase58String(R), 1)) ++ (if ((kV != "")) | |
2119 | + | then [DeleteEntry(ew(kV))] | |
2120 | + | else nil)), fh, removeByIndex(kT, value(dg)), (eX._8 + jo), hA, kS) | |
2105 | 2121 | } | |
2106 | 2122 | } | |
2107 | 2123 | } | |
2109 | 2125 | } | |
2110 | 2126 | } | |
2111 | 2127 | ||
2112 | - | let | |
2113 | - | let | |
2114 | - | let | |
2115 | - | let | |
2116 | - | let | |
2117 | - | let | |
2118 | - | then split_51C(value( | |
2128 | + | let hR = bO(C) | |
2129 | + | let iu = hQ(hR) | |
2130 | + | let gL = split(valueOrElse(getString(dx()), "0_0_0_0_0_0"), "_") | |
2131 | + | let kW = dA(d) | |
2132 | + | let kX = getString(kW) | |
2133 | + | let kY = if (isDefined(kX)) | |
2134 | + | then split_51C(value(kX), "_") | |
2119 | 2135 | else nil | |
2120 | - | let | |
2121 | - | let | |
2122 | - | let | |
2123 | - | let | |
2124 | - | let | |
2125 | - | let | |
2126 | - | func | |
2127 | - | then | |
2128 | - | else | |
2129 | - | ||
2130 | - | func | |
2131 | - | then | |
2136 | + | let kZ = split(value(assetInfo(fromBase58String(kL[0]))).description, "_")[dq] | |
2137 | + | let la = split(valueOrElse(getString(dy(kZ)), "0_0_0_0_0_0"), "_") | |
2138 | + | let fi = { | |
2139 | + | let eZ = kL | |
2140 | + | let fa = size(eZ) | |
2141 | + | let fb = $Tuple10(kK, 0, "", iu[bo], nil, gL, kY, 0, split("0_0_0_0_0_0", "_"), la) | |
2142 | + | func fc (fd,fe) = if ((fe >= fa)) | |
2143 | + | then fd | |
2144 | + | else kN(fd, eZ[fe]) | |
2145 | + | ||
2146 | + | func ff (fd,fe) = if ((fe >= fa)) | |
2147 | + | then fd | |
2132 | 2148 | else throw("List size exceeds 5") | |
2133 | 2149 | ||
2134 | - | | |
2150 | + | ff(fc(fc(fc(fc(fc(fb, 0), 1), 2), 3), 4), 5) | |
2135 | 2151 | } | |
2136 | - | let | |
2137 | - | let | |
2138 | - | let | |
2139 | - | let | |
2140 | - | let | |
2141 | - | let | |
2142 | - | let | |
2143 | - | let | |
2144 | - | let | |
2145 | - | let | |
2146 | - | let | |
2147 | - | $Tuple2(((((((((((((((( | |
2148 | - | then StringEntry( | |
2149 | - | else DeleteEntry( | |
2152 | + | let dz = fi._3 | |
2153 | + | let hu = valueOrErrorMessage(indexOf(aV, dz), ("Unknown continent: " + dz)) | |
2154 | + | let gT = hz(fi._9, (dN(kJ) / cL)) | |
2155 | + | let iS = valueOrElse(getInteger(ev()), (eu + 1)) | |
2156 | + | let lb = toString(iS) | |
2157 | + | let iT = Issue(eM(lb, kJ), makeString([lb, kJ, gT, dz], "_"), 1, 0, false) | |
2158 | + | let bv = calculateAssetId(iT) | |
2159 | + | let lc = toBase58String(bv) | |
2160 | + | let jY = makeString(fj((kM > 0), split(iu[bp], "_"), kM), "_") | |
2161 | + | let ld = dB(d) | |
2162 | + | let le = valueOrElse(getInteger(ld), 0) | |
2163 | + | $Tuple2((((((((((((((((fi._5 :+ (if ((size(fi._7) > 0)) | |
2164 | + | then StringEntry(kW, makeString_11C(fi._7, "_")) | |
2165 | + | else DeleteEntry(kW))) :+ IntegerEntry(ld, if ((fi._8 > le)) | |
2150 | 2166 | then 0 | |
2151 | - | else ( | |
2167 | + | else (le - fi._8))) :+ IntegerEntry(ev(), (iS + 1))) :+ iT) :+ StringEntry(ey(lb), lc)) :+ StringEntry(bu(lc), d)) :+ StringEntry(eB(lb), d)) :+ IntegerEntry(by(aI, lc), fi._2)) :+ IntegerEntry(bE(lc), ap)) :+ IntegerEntry(eA(lc, d), ap)) :+ StringEntry(hR, makeString([iu[bn], fi._4, jY, iu[bq]], ":"))) :+ StringEntry(dx(), makeString(fi._6, "_"))) :+ StringEntry(dy(dz), makeString(fi._10, "_"))) :+ StringEntry(bP(C), makeString([dz, "L", lc], "_"))) :+ ScriptTransfer(addressFromStringValue(d), 1, bv)), lc) | |
2152 | 2168 | } | |
2153 | 2169 | } | |
2154 | 2170 | ||
2155 | 2171 | ||
2156 | - | func | |
2157 | - | ||
2158 | - | ||
2159 | - | func | |
2160 | - | ||
2161 | - | ||
2162 | - | func | |
2163 | - | ||
2164 | - | ||
2165 | - | func | |
2166 | - | ||
2167 | - | ||
2168 | - | func | |
2169 | - | let | |
2170 | - | if ((4 == | |
2171 | - | then | |
2172 | - | else if ((3 == | |
2173 | - | then | |
2174 | - | else if ((5 == | |
2175 | - | then | |
2176 | - | else if ((2 == | |
2177 | - | then | |
2172 | + | func lf (d,kL) = kI("M", 3, "SSSS", d, kL, 0) | |
2173 | + | ||
2174 | + | ||
2175 | + | func lg (d,kL) = kI("L", 4, "SMM", d, kL, (cG * 4)) | |
2176 | + | ||
2177 | + | ||
2178 | + | func lh (d,kL) = kI("XL", 5, "SSSML", d, kL, (cG * 47)) | |
2179 | + | ||
2180 | + | ||
2181 | + | func li (d,kL) = kI("XXL", 6, "LXL", d, kL, (cG * 54)) | |
2182 | + | ||
2183 | + | ||
2184 | + | func lj (d,kL) = { | |
2185 | + | let cE = size(kL) | |
2186 | + | if ((4 == cE)) | |
2187 | + | then lf(d, kL) | |
2188 | + | else if ((3 == cE)) | |
2189 | + | then lg(d, kL) | |
2190 | + | else if ((5 == cE)) | |
2191 | + | then lh(d, kL) | |
2192 | + | else if ((2 == cE)) | |
2193 | + | then li(d, kL) | |
2178 | 2194 | else throw("Unknown merge") | |
2179 | 2195 | } | |
2180 | 2196 | ||
2181 | 2197 | ||
2182 | - | func | |
2183 | - | let | |
2184 | - | if (if ( | |
2185 | - | then isDefined( | |
2198 | + | func lk (bR) = { | |
2199 | + | let ll = getString(bN(bR)) | |
2200 | + | if (if (cB) | |
2201 | + | then isDefined(ll) | |
2186 | 2202 | else false) | |
2187 | 2203 | then { | |
2188 | - | let | |
2189 | - | let | |
2190 | - | let | |
2191 | - | let | |
2192 | - | if (if (( | |
2204 | + | let C = value(ll) | |
2205 | + | let lm = bP(C) | |
2206 | + | let cl = split(valueOrElse(getString(lm), aN), "_") | |
2207 | + | let co = parseIntValue(cl[br]) | |
2208 | + | if (if ((cl[bs] != "D")) | |
2193 | 2209 | then true | |
2194 | - | else (lastBlock.timestamp > ( | |
2210 | + | else (lastBlock.timestamp > (co + aR))) | |
2195 | 2211 | then nil | |
2196 | 2212 | else { | |
2197 | - | let | |
2198 | - | if ((parseIntValue( | |
2213 | + | let kz = B(C) | |
2214 | + | if ((parseIntValue(cl[bt]) >= 3)) | |
2199 | 2215 | then { | |
2200 | - | let | |
2201 | - | if (( | |
2216 | + | let kC = invoke(di, "sendDeliveryReward", [bR], nil) | |
2217 | + | if ((kC == kC)) | |
2202 | 2218 | then nil | |
2203 | 2219 | else throw("Strict value is not equal to itself.") | |
2204 | 2220 | } | |
2205 | 2221 | else (({ | |
2206 | - | let | |
2207 | - | let | |
2208 | - | if (( | |
2209 | - | then if ((0 >= getIntegerValue( | |
2222 | + | let kE = valueOrElse(getInteger(di, bU), 0) | |
2223 | + | let kF = invoke(di, "updateDeliveryLocked", [(kE - aQ)], nil) | |
2224 | + | if ((kF == kF)) | |
2225 | + | then if ((0 >= getIntegerValue(kz))) | |
2210 | 2226 | then nil | |
2211 | 2227 | else { | |
2212 | - | let | |
2213 | - | if (( | |
2228 | + | let ln = invoke(this, "saveInteger", [V(C), (co + b)], nil) | |
2229 | + | if ((ln == ln)) | |
2214 | 2230 | then nil | |
2215 | 2231 | else throw("Strict value is not equal to itself.") | |
2216 | 2232 | } | |
2217 | 2233 | else throw("Strict value is not equal to itself.") | |
2218 | - | } :+ IntegerEntry( | |
2234 | + | } :+ IntegerEntry(kz, getIntegerValue(L(C)))) :+ StringEntry(lm, getStringValue(M(C)))) | |
2219 | 2235 | } | |
2220 | 2236 | } | |
2221 | 2237 | else nil | |
2222 | 2238 | } | |
2223 | 2239 | ||
2224 | 2240 | ||
2225 | - | func | |
2226 | - | then valueOrElse(getBoolean( | |
2241 | + | func lo (gQ) = if (if ((gQ.originCaller != dh)) | |
2242 | + | then valueOrElse(getBoolean(dQ()), false) | |
2227 | 2243 | else false) | |
2228 | 2244 | then throw("Contracts are under maintenance") | |
2229 | 2245 | else { | |
2230 | - | let | |
2231 | - | ( | |
2246 | + | let bR = toString(gQ.originCaller) | |
2247 | + | (lk(bR) :+ StringEntry(dR(bR), toBase58String(gQ.transactionId))) | |
2232 | 2248 | } | |
2233 | 2249 | ||
2234 | 2250 | ||
2235 | - | func | |
2236 | - | then valueOrElse(getBoolean( | |
2251 | + | func lp (gQ) = if (if ((gQ.originCaller != dh)) | |
2252 | + | then valueOrElse(getBoolean(dQ()), false) | |
2237 | 2253 | else false) | |
2238 | 2254 | then throw("Contracts are under maintenance") | |
2239 | - | else [StringEntry( | |
2240 | - | ||
2241 | - | ||
2242 | - | @Callable( | |
2243 | - | func constructorV1 ( | |
2255 | + | else [StringEntry(dR(toString(gQ.originCaller)), toBase58String(gQ.transactionId))] | |
2256 | + | ||
2257 | + | ||
2258 | + | @Callable(gQ) | |
2259 | + | func constructorV1 (lq) = if ((gQ.caller != this)) | |
2244 | 2260 | then throw("Permission denied") | |
2245 | - | else [StringEntry( | |
2246 | - | ||
2247 | - | ||
2248 | - | ||
2249 | - | @Callable( | |
2250 | - | func saveInteger ( | |
2261 | + | else [StringEntry(db(), lq)] | |
2262 | + | ||
2263 | + | ||
2264 | + | ||
2265 | + | @Callable(gQ) | |
2266 | + | func saveInteger (cT,eO) = if ((gQ.caller != this)) | |
2251 | 2267 | then throw("saveInteger is not public method") | |
2252 | - | else [IntegerEntry( | |
2253 | - | ||
2254 | - | ||
2255 | - | ||
2256 | - | @Callable( | |
2257 | - | func setBlocked ( | |
2268 | + | else [IntegerEntry(cT, eO)] | |
2269 | + | ||
2270 | + | ||
2271 | + | ||
2272 | + | @Callable(gQ) | |
2273 | + | func setBlocked (lr) = if ((gQ.caller != this)) | |
2258 | 2274 | then throw("permission denied") | |
2259 | - | else [BooleanEntry( | |
2260 | - | ||
2261 | - | ||
2262 | - | ||
2263 | - | @Callable( | |
2275 | + | else [BooleanEntry(dQ(), lr)] | |
2276 | + | ||
2277 | + | ||
2278 | + | ||
2279 | + | @Callable(gQ) | |
2264 | 2280 | func stakeLand () = { | |
2265 | - | let | |
2266 | - | if ((size( | |
2281 | + | let ls = lo(gQ) | |
2282 | + | if ((size(gQ.payments) != 1)) | |
2267 | 2283 | then throw("Exactly one payment required") | |
2268 | 2284 | else { | |
2269 | - | let | |
2270 | - | let | |
2271 | - | let | |
2272 | - | if (( | |
2273 | - | then throw((("NFT " + | |
2285 | + | let lt = value(gQ.payments[0]) | |
2286 | + | let bv = value(lt.assetId) | |
2287 | + | let cS = toString(gQ.caller) | |
2288 | + | if ((lt.amount != 1)) | |
2289 | + | then throw((("NFT " + aG) + " token should be attached as payment")) | |
2274 | 2290 | else { | |
2275 | - | let | |
2276 | - | if (( | |
2291 | + | let jy = value(assetInfo(bv)) | |
2292 | + | if ((jy.issuer != this)) | |
2277 | 2293 | then throw("Unknown issuer of token") | |
2278 | - | else if (!(contains( | |
2279 | - | then throw((("Only NFT " + | |
2294 | + | else if (!(contains(jy.name, aG))) | |
2295 | + | then throw((("Only NFT " + aG) + " tokens are accepted")) | |
2280 | 2296 | else { | |
2281 | - | let | |
2282 | - | let | |
2283 | - | then dropRight( | |
2284 | - | else if (contains( | |
2285 | - | then dropRight( | |
2286 | - | else dropRight( | |
2287 | - | if (!(isDefined(parseInt( | |
2288 | - | then throw(("Cannot parse land number from " + | |
2297 | + | let lu = drop(jy.name, 4) | |
2298 | + | let ez = if (contains(lu, "XXL")) | |
2299 | + | then dropRight(lu, 3) | |
2300 | + | else if (contains(lu, "XL")) | |
2301 | + | then dropRight(lu, 2) | |
2302 | + | else dropRight(lu, 1) | |
2303 | + | if (!(isDefined(parseInt(ez)))) | |
2304 | + | then throw(("Cannot parse land number from " + jy.name)) | |
2289 | 2305 | else { | |
2290 | - | let | |
2291 | - | let | |
2292 | - | if (isDefined(getInteger( | |
2293 | - | then throw((("NFT " + | |
2306 | + | let R = toBase58String(bv) | |
2307 | + | let jz = bx(R) | |
2308 | + | if (isDefined(getInteger(jz))) | |
2309 | + | then throw((("NFT " + jy.name) + " is already staked")) | |
2294 | 2310 | else { | |
2295 | - | let | |
2296 | - | let | |
2297 | - | let | |
2298 | - | let | |
2299 | - | let | |
2300 | - | let | |
2301 | - | let | |
2302 | - | let | |
2303 | - | let | |
2304 | - | let | |
2305 | - | let | |
2306 | - | then split_51C(value( | |
2311 | + | let jC = split(jy.description, "_") | |
2312 | + | let gM = gS(jC[dp]) | |
2313 | + | let jo = dN(jC[do]) | |
2314 | + | let if = (jo / cL) | |
2315 | + | let fh = gR(gM, if, 1) | |
2316 | + | let lv = dy(jC[dq]) | |
2317 | + | let la = split(valueOrElse(getString(lv), "0_0_0_0_0_0"), "_") | |
2318 | + | let lw = makeString(gK(la, gM, if, 1), "_") | |
2319 | + | let kW = dA(cS) | |
2320 | + | let kX = getString(kW) | |
2321 | + | let kT = if (isDefined(kX)) | |
2322 | + | then split_51C(value(kX), "_") | |
2307 | 2323 | else nil | |
2308 | - | if (containsElement( | |
2309 | - | then throw(("Your staked lands already contain " + | |
2310 | - | else if ((size( | |
2311 | - | then throw((("Your already staked max (" + toString( | |
2324 | + | if (containsElement(kT, R)) | |
2325 | + | then throw(("Your staked lands already contain " + R)) | |
2326 | + | else if ((size(kT) >= aK)) | |
2327 | + | then throw((("Your already staked max (" + toString(aK)) + ") lands")) | |
2312 | 2328 | else { | |
2313 | - | let | |
2314 | - | let | |
2315 | - | let | |
2316 | - | let | |
2317 | - | $Tuple2(([IntegerEntry( | |
2329 | + | let ig = valueOrElse(getInteger(bE(R)), 0) | |
2330 | + | let ld = dB(cS) | |
2331 | + | let lx = valueOrElse(getInteger(ld), 0) | |
2332 | + | let ly = invoke(dk, "onStakeUnstakeLand", [cS], nil) | |
2333 | + | $Tuple2(([IntegerEntry(jz, lastBlock.timestamp), IntegerEntry(bA(aG, R, cS), lastBlock.timestamp), StringEntry(kW, makeString_11C((kT :+ R), "_")), IntegerEntry(ld, (lx + jo)), StringEntry(bu(R), cS), StringEntry(eB(ez), cS), IntegerEntry(eA(R, cS), ig), StringEntry(dx(), fh), StringEntry(lv, lw)] ++ ls), ly) | |
2318 | 2334 | } | |
2319 | 2335 | } | |
2320 | 2336 | } | |
2325 | 2341 | ||
2326 | 2342 | ||
2327 | 2343 | ||
2328 | - | @Callable( | |
2329 | - | func unstakeLand ( | |
2330 | - | let | |
2331 | - | if ((size( | |
2344 | + | @Callable(gQ) | |
2345 | + | func unstakeLand (ju) = { | |
2346 | + | let ls = lo(gQ) | |
2347 | + | if ((size(gQ.payments) != 0)) | |
2332 | 2348 | then throw("No payments required") | |
2333 | 2349 | else { | |
2334 | - | let d = toString( | |
2335 | - | let | |
2336 | - | let | |
2337 | - | let | |
2338 | - | let | |
2339 | - | let | |
2340 | - | let | |
2341 | - | let | |
2342 | - | let | |
2343 | - | let | |
2344 | - | let | |
2345 | - | let | |
2346 | - | let | |
2347 | - | let | |
2348 | - | let | |
2349 | - | if (!(isDefined( | |
2350 | - | then throw(("Your staked lands don't contain " + | |
2350 | + | let d = toString(gQ.caller) | |
2351 | + | let gg = js(d, eG, ju) | |
2352 | + | let R = gg._2 | |
2353 | + | let jC = gg._3 | |
2354 | + | let kW = dA(d) | |
2355 | + | let gM = gS(jC[dp]) | |
2356 | + | let jo = dN(jC[do]) | |
2357 | + | let if = (jo / cL) | |
2358 | + | let fh = gR(gM, if, -1) | |
2359 | + | let lv = dy(jC[dq]) | |
2360 | + | let la = split(valueOrElse(getString(lv), "0_0_0_0_0_0"), "_") | |
2361 | + | let lw = makeString(gK(la, gM, if, -1), "_") | |
2362 | + | let jZ = jP(d, R, jo, eG) | |
2363 | + | let kT = split_51C(valueOrElse(getString(kW), ""), "_") | |
2364 | + | let dg = indexOf(kT, R) | |
2365 | + | if (!(isDefined(dg))) | |
2366 | + | then throw(("Your staked lands don't contain " + R)) | |
2351 | 2367 | else { | |
2352 | - | let | |
2353 | - | let | |
2354 | - | if (( | |
2355 | - | then throw(("Your gWL are taking part in voting, cannot unstake until " + toString( | |
2368 | + | let aB = lastBlock.timestamp | |
2369 | + | let lz = valueOrElse(getInteger(dj, bQ(d)), 0) | |
2370 | + | if ((lz >= aB)) | |
2371 | + | then throw(("Your gWL are taking part in voting, cannot unstake until " + toString(lz))) | |
2356 | 2372 | else { | |
2357 | - | let | |
2358 | - | if (( | |
2359 | - | then throw(("Your staked lands took part in arbitrage, cannot unstake until " + toString( | |
2373 | + | let lA = (valueOrElse(getInteger(dk, c(d)), 0) + cH) | |
2374 | + | if ((lA > aB)) | |
2375 | + | then throw(("Your staked lands took part in arbitrage, cannot unstake until " + toString(lA))) | |
2360 | 2376 | else { | |
2361 | - | let | |
2362 | - | let | |
2363 | - | let | |
2377 | + | let ld = dB(d) | |
2378 | + | let le = valueOrElse(getInteger(ld), 0) | |
2379 | + | let lB = if ((jo > le)) | |
2364 | 2380 | then 0 | |
2365 | - | else ( | |
2366 | - | let | |
2367 | - | $Tuple2(([ScriptTransfer( | |
2368 | - | then StringEntry( | |
2369 | - | else DeleteEntry( | |
2381 | + | else (le - jo) | |
2382 | + | let ly = invoke(dk, "onStakeUnstakeLand", [d], nil) | |
2383 | + | $Tuple2(([ScriptTransfer(gQ.caller, 1, fromBase58String(R)), DeleteEntry(bx(R)), DeleteEntry(bA(aG, R, d)), StringEntry(dx(), fh), StringEntry(lv, lw), StringEntry(jZ._2, makeString(jZ._3, ":")), if ((size(kT) > 1)) | |
2384 | + | then StringEntry(kW, makeString_11C(removeByIndex(kT, value(dg)), "_")) | |
2385 | + | else DeleteEntry(kW), IntegerEntry(ld, lB)] ++ ls), ly) | |
2370 | 2386 | } | |
2371 | 2387 | } | |
2372 | 2388 | } | |
2375 | 2391 | ||
2376 | 2392 | ||
2377 | 2393 | ||
2378 | - | @Callable( | |
2394 | + | @Callable(gQ) | |
2379 | 2395 | func stakeDuck () = { | |
2380 | - | let | |
2381 | - | if ((size( | |
2396 | + | let ls = lo(gQ) | |
2397 | + | if ((size(gQ.payments) != 1)) | |
2382 | 2398 | then throw("Exactly one payment required") | |
2383 | 2399 | else { | |
2384 | - | let | |
2385 | - | let | |
2386 | - | let | |
2387 | - | if (( | |
2388 | - | then throw((("NFT " + | |
2400 | + | let lt = value(gQ.payments[0]) | |
2401 | + | let bv = value(lt.assetId) | |
2402 | + | let cS = toString(gQ.caller) | |
2403 | + | if ((lt.amount != 1)) | |
2404 | + | then throw((("NFT " + aH) + " token should be attached as payment")) | |
2389 | 2405 | else { | |
2390 | - | let | |
2391 | - | if (if (( | |
2392 | - | then ( | |
2406 | + | let jy = value(assetInfo(bv)) | |
2407 | + | if (if ((jy.issuer != ed)) | |
2408 | + | then (jy.issuer != ee) | |
2393 | 2409 | else false) | |
2394 | - | then throw((("Unknown issuer of " + | |
2395 | - | else if (!(contains( | |
2396 | - | then throw((("Only NFT " + | |
2410 | + | then throw((("Unknown issuer of " + aH) + " token")) | |
2411 | + | else if (!(contains(jy.name, aH))) | |
2412 | + | then throw((("Only NFT " + aH) + " tokens are accepted")) | |
2397 | 2413 | else { | |
2398 | - | let | |
2399 | - | let | |
2400 | - | if (isDefined(getInteger( | |
2401 | - | then throw((("NFT " + | |
2402 | - | else if (isDefined(getString( | |
2403 | - | then throw(("You already staked one duck: " + | |
2414 | + | let lC = toBase58String(bv) | |
2415 | + | let jz = bx(lC) | |
2416 | + | if (isDefined(getInteger(jz))) | |
2417 | + | then throw((("NFT " + jy.name) + " is already staked")) | |
2418 | + | else if (isDefined(getString(bN(cS)))) | |
2419 | + | then throw(("You already staked one duck: " + jy.name)) | |
2404 | 2420 | else { | |
2405 | - | let | |
2406 | - | let | |
2407 | - | let | |
2408 | - | let | |
2409 | - | let | |
2410 | - | let | |
2411 | - | let | |
2412 | - | ([IntegerEntry( | |
2421 | + | let lm = bP(lC) | |
2422 | + | let cj = getString(lm) | |
2423 | + | let hR = bO(lC) | |
2424 | + | let lD = getString(hR) | |
2425 | + | let jh = B(lC) | |
2426 | + | let ji = ak(valueOrElse(getInteger(F(lC)), 0)) | |
2427 | + | let kA = valueOrElse(getInteger(jh), ji) | |
2428 | + | ([IntegerEntry(jz, lastBlock.timestamp), IntegerEntry(bA(aH, toBase58String(bv), cS), lastBlock.timestamp), StringEntry(bM(lC), cS), StringEntry(bN(cS), lC)] ++ (if (isDefined(cj)) | |
2413 | 2429 | then nil | |
2414 | - | else ([StringEntry( | |
2430 | + | else ([StringEntry(lm, aN)] ++ (if (isDefined(lD)) | |
2415 | 2431 | then nil | |
2416 | - | else (([StringEntry( | |
2432 | + | else (([StringEntry(hR, "0:0_0_0_0_0_0:0_0_0_0_0_0:")] :+ IntegerEntry(jh, kA)) ++ ls))))) | |
2417 | 2433 | } | |
2418 | 2434 | } | |
2419 | 2435 | } | |
2422 | 2438 | ||
2423 | 2439 | ||
2424 | 2440 | ||
2425 | - | @Callable( | |
2426 | - | func unstakeDuck ( | |
2427 | - | let | |
2428 | - | if ((size( | |
2441 | + | @Callable(gQ) | |
2442 | + | func unstakeDuck (lC) = { | |
2443 | + | let ls = lo(gQ) | |
2444 | + | if ((size(gQ.payments) != 0)) | |
2429 | 2445 | then throw("No payments required") | |
2430 | 2446 | else { | |
2431 | - | let | |
2432 | - | let | |
2433 | - | let | |
2434 | - | let | |
2435 | - | if (!(isDefined(getInteger( | |
2436 | - | then throw((("NFT " + | |
2437 | - | else if (!(isDefined(getString( | |
2438 | - | then throw((("The duck " + | |
2447 | + | let bv = fromBase58String(lC) | |
2448 | + | let cS = toString(gQ.caller) | |
2449 | + | let jy = value(assetInfo(bv)) | |
2450 | + | let jz = bx(lC) | |
2451 | + | if (!(isDefined(getInteger(jz)))) | |
2452 | + | then throw((("NFT " + jy.name) + " is not staked")) | |
2453 | + | else if (!(isDefined(getString(bN(cS))))) | |
2454 | + | then throw((("The duck " + jy.name) + " is not staked")) | |
2439 | 2455 | else { | |
2440 | - | let | |
2441 | - | if (( | |
2456 | + | let jB = valueOrErrorMessage(getString(bM(lC)), (("NFT " + jy.name) + " is orphaned")) | |
2457 | + | if ((jB != cS)) | |
2442 | 2458 | then throw("Staked NFT is not yours") | |
2443 | - | else if ( | |
2459 | + | else if (kv(lC)) | |
2444 | 2460 | then throw("unstakeDuck_checkTournament") | |
2445 | - | else if ( | |
2461 | + | else if (kw(lC)) | |
2446 | 2462 | then throw("unstakeDuck_checkDelivery") | |
2447 | 2463 | else { | |
2448 | - | let | |
2449 | - | let | |
2450 | - | let | |
2451 | - | if (( | |
2452 | - | then throw((("Please heal your duck to " + toString( | |
2453 | - | else ([ScriptTransfer( | |
2464 | + | let jh = B(lC) | |
2465 | + | let ji = ak(valueOrElse(getInteger(F(lC)), 0)) | |
2466 | + | let aw = valueOrElse(getInteger(jh), ji) | |
2467 | + | if ((ji > aw)) | |
2468 | + | then throw((("Please heal your duck to " + toString(ji)) + "hp before unstaking")) | |
2469 | + | else ([ScriptTransfer(gQ.caller, 1, bv), DeleteEntry(jz), DeleteEntry(jh), DeleteEntry(bP(lC)), DeleteEntry(bM(lC)), DeleteEntry(bA(aH, lC, cS)), DeleteEntry(bN(cS))] ++ ls) | |
2454 | 2470 | } | |
2455 | 2471 | } | |
2456 | 2472 | } | |
2458 | 2474 | ||
2459 | 2475 | ||
2460 | 2476 | ||
2461 | - | @Callable( | |
2462 | - | func claimRes ( | |
2463 | - | let | |
2464 | - | if ((size( | |
2477 | + | @Callable(gQ) | |
2478 | + | func claimRes (eO,lE) = { | |
2479 | + | let ls = lo(gQ) | |
2480 | + | if ((size(gQ.payments) != 0)) | |
2465 | 2481 | then throw("No payments required") | |
2466 | 2482 | else { | |
2467 | - | let d = toString( | |
2468 | - | let | |
2469 | - | let | |
2470 | - | $Tuple2((((( | |
2471 | - | } | |
2472 | - | } | |
2473 | - | ||
2474 | - | ||
2475 | - | ||
2476 | - | @Callable( | |
2477 | - | func claimResToWH ( | |
2478 | - | let | |
2479 | - | if ((size( | |
2483 | + | let d = toString(gQ.originCaller) | |
2484 | + | let fp = jD(d, eO, eG, lE) | |
2485 | + | let C = valueOrErrorMessage(getString(bN(d)), "You don't have a duck staked") | |
2486 | + | $Tuple2(((((fp._1 ++ kf(C, fraction(Y, eO, cK))._1) :+ StringEntry(fp._2, makeString(fp._3, ":"))) :+ StringEntry(fp._4, makeString(fp._5, ":"))) ++ ls), fp._3[bo]) | |
2487 | + | } | |
2488 | + | } | |
2489 | + | ||
2490 | + | ||
2491 | + | ||
2492 | + | @Callable(gQ) | |
2493 | + | func claimResToWH (eO,lE) = { | |
2494 | + | let ls = lo(gQ) | |
2495 | + | if ((size(gQ.payments) != 0)) | |
2480 | 2496 | then throw("No payments required") | |
2481 | 2497 | else { | |
2482 | - | let d = toString( | |
2483 | - | let | |
2484 | - | $Tuple2((((( | |
2485 | - | } | |
2486 | - | } | |
2487 | - | ||
2488 | - | ||
2489 | - | ||
2490 | - | @Callable( | |
2491 | - | func flight ( | |
2492 | - | let | |
2493 | - | if ((size( | |
2498 | + | let d = toString(gQ.originCaller) | |
2499 | + | let fp = jD(d, eO, eF, lE) | |
2500 | + | $Tuple2(((((fp._1 ++ kl(d, fraction(Y, eO, cK))._1) :+ StringEntry(fp._2, makeString(fp._3, ":"))) :+ StringEntry(fp._4, makeString(fp._5, ":"))) ++ ls), fp._5[bf]) | |
2501 | + | } | |
2502 | + | } | |
2503 | + | ||
2504 | + | ||
2505 | + | ||
2506 | + | @Callable(gQ) | |
2507 | + | func flight (iW,iX) = { | |
2508 | + | let ls = lp(gQ) | |
2509 | + | if ((size(gQ.payments) != 0)) | |
2494 | 2510 | then throw("No payments required") | |
2495 | 2511 | else { | |
2496 | - | let | |
2497 | - | let | |
2498 | - | let | |
2499 | - | let | |
2500 | - | let | |
2501 | - | let | |
2502 | - | let | |
2503 | - | if (( | |
2512 | + | let bR = toString(gQ.caller) | |
2513 | + | let hv = iV(bR, iW, iX) | |
2514 | + | let jb = hv._1 | |
2515 | + | let C = hv._2 | |
2516 | + | let lm = bP(C) | |
2517 | + | let jw = valueOrElse(getString(lm), aN) | |
2518 | + | let jd = hv._4 | |
2519 | + | if ((jd == jw)) | |
2504 | 2520 | then throw("You can't fly to the same location") | |
2505 | 2521 | else { | |
2506 | - | let | |
2507 | - | let | |
2508 | - | let | |
2509 | - | let | |
2510 | - | let | |
2511 | - | let | |
2512 | - | let | |
2513 | - | let | |
2514 | - | let | |
2515 | - | then if (!( | |
2516 | - | then | |
2517 | - | else if (( | |
2518 | - | then $Tuple2( | |
2519 | - | else $Tuple2( | |
2520 | - | else if ( | |
2521 | - | then if (!( | |
2522 | + | let cx = split(jd, "_") | |
2523 | + | let lF = (cx[bs] == "T") | |
2524 | + | let lG = (cx[bs] == "D") | |
2525 | + | let gD = H(C) | |
2526 | + | let lH = valueOrElse(getString(gD), ",;,_,;,_,;,_,;,_,;,_,;,") | |
2527 | + | let lI = fq(lH, hv._5) | |
2528 | + | let lJ = lI._1 | |
2529 | + | let lK = lI._2 | |
2530 | + | let lL = if (!(cs(dl, jw))) | |
2531 | + | then if (!(cq(jd))) | |
2532 | + | then cv(jw, jd, 5) | |
2533 | + | else if ((jb > 0)) | |
2534 | + | then $Tuple2(jd, jb) | |
2535 | + | else $Tuple2(jw, 0) | |
2536 | + | else if (ci(dl, jw)) | |
2537 | + | then if (!(ci(dl, jd))) | |
2522 | 2538 | then throw("Your duck is taking part in the tournament") | |
2523 | 2539 | else { | |
2524 | - | let | |
2525 | - | let | |
2526 | - | let | |
2527 | - | if (( | |
2528 | - | then | |
2529 | - | else if (( | |
2540 | + | let ky = parseIntValue(cx[bt]) | |
2541 | + | let lM = split(jw, "_") | |
2542 | + | let ck = valueOrElse(getInteger(dl, bV), 0) | |
2543 | + | if ((ky != (parseIntValue(lM[bt]) + 1))) | |
2544 | + | then cv(jw, jd, 7) | |
2545 | + | else if ((jb > 0)) | |
2530 | 2546 | then { | |
2531 | - | let | |
2532 | - | let | |
2533 | - | then invoke( | |
2547 | + | let lN = valueOrElse(getInteger(dl, bZ(ck, C)), 0) | |
2548 | + | let lO = if ((ky > lN)) | |
2549 | + | then invoke(dl, "saveDuckResult", [C, ky], nil) | |
2534 | 2550 | else unit | |
2535 | - | if (( | |
2536 | - | then $Tuple2( | |
2551 | + | if ((lO == lO)) | |
2552 | + | then $Tuple2(jd, jb) | |
2537 | 2553 | else throw("Strict value is not equal to itself.") | |
2538 | 2554 | } | |
2539 | - | else $Tuple2( | |
2555 | + | else $Tuple2(jw, 0) | |
2540 | 2556 | } | |
2541 | - | else if (!( | |
2557 | + | else if (!(cn(jw))) | |
2542 | 2558 | then { | |
2543 | - | let | |
2559 | + | let lP = dK(invoke(this, "autoExitDelivery", [C, jb, if (lG) | |
2544 | 2560 | then "10" | |
2545 | 2561 | else "11", 0], nil)) | |
2546 | - | if (( | |
2547 | - | then if ( | |
2548 | - | then | |
2549 | - | else if (( | |
2550 | - | then $Tuple2( | |
2551 | - | else $Tuple2( | |
2562 | + | if ((lP == lP)) | |
2563 | + | then if (lG) | |
2564 | + | then lP | |
2565 | + | else if ((jb > 0)) | |
2566 | + | then $Tuple2(jd, jb) | |
2567 | + | else $Tuple2(lP._1, 0) | |
2552 | 2568 | else throw("Strict value is not equal to itself.") | |
2553 | 2569 | } | |
2554 | - | else if (!( | |
2570 | + | else if (!(lG)) | |
2555 | 2571 | then throw("Your duck is taking part in delivery") | |
2556 | - | else if (!( | |
2557 | - | then | |
2572 | + | else if (!(cn(jd))) | |
2573 | + | then cv(jw, jd, 13) | |
2558 | 2574 | else { | |
2559 | - | let | |
2560 | - | let | |
2561 | - | if (( | |
2562 | - | then | |
2563 | - | else if (if (( | |
2564 | - | then (3 > | |
2575 | + | let ky = parseIntValue(cx[bt]) | |
2576 | + | let lM = split(jw, "_") | |
2577 | + | if ((ky != (parseIntValue(lM[bt]) + 1))) | |
2578 | + | then cv(jw, jd, 14) | |
2579 | + | else if (if ((jb > 0)) | |
2580 | + | then (3 > ky) | |
2565 | 2581 | else false) | |
2566 | - | then $Tuple2( | |
2582 | + | then $Tuple2(jd, jb) | |
2567 | 2583 | else { | |
2568 | - | let | |
2569 | - | if (( | |
2570 | - | then | |
2584 | + | let lP = dK(invoke(this, "autoExitDelivery", [C, jb, "15-17", ky], nil)) | |
2585 | + | if ((lP == lP)) | |
2586 | + | then lP | |
2571 | 2587 | else throw("Strict value is not equal to itself.") | |
2572 | 2588 | } | |
2573 | 2589 | } | |
2574 | - | let | |
2575 | - | let | |
2576 | - | $Tuple2(((([StringEntry( | |
2577 | - | then [StringEntry( | |
2578 | - | else nil)) ++ | |
2579 | - | then | |
2580 | - | else | |
2590 | + | let lQ = lL._1 | |
2591 | + | let lR = lL._2 | |
2592 | + | $Tuple2(((([StringEntry(lm, lQ), StringEntry(gD, lJ), IntegerEntry(B(C), lR)] ++ ls) ++ (if (lK) | |
2593 | + | then [StringEntry(N(C), "0_0_0_0_0")] | |
2594 | + | else nil)) ++ kf(C, if ((jb > 0)) | |
2595 | + | then Z | |
2596 | + | else aa)._1), hv._3) | |
2581 | 2597 | } | |
2582 | 2598 | } | |
2583 | 2599 | } | |
2584 | 2600 | ||
2585 | 2601 | ||
2586 | 2602 | ||
2587 | - | @Callable( | |
2588 | - | func heal ( | |
2589 | - | let | |
2590 | - | if (if (if ((0 > | |
2603 | + | @Callable(gQ) | |
2604 | + | func heal (lS,lT,lU) = { | |
2605 | + | let ls = lo(gQ) | |
2606 | + | if (if (if ((0 > lS)) | |
2591 | 2607 | then true | |
2592 | - | else (0 > | |
2608 | + | else (0 > lT)) | |
2593 | 2609 | then true | |
2594 | - | else (0 > | |
2610 | + | else (0 > lU)) | |
2595 | 2611 | then throw("Quantity cannot be negative") | |
2596 | 2612 | else { | |
2597 | - | let | |
2598 | - | if ( | |
2613 | + | let C = valueOrErrorMessage(getString(bN(toString(gQ.caller))), "You don't have a duck staked") | |
2614 | + | if (kv(C)) | |
2599 | 2615 | then throw("heal_checkTournament") | |
2600 | - | else if ( | |
2616 | + | else if (kw(C)) | |
2601 | 2617 | then throw("heal_checkDelivery") | |
2602 | 2618 | else { | |
2603 | - | let | |
2604 | - | let | |
2605 | - | let | |
2606 | - | let | |
2607 | - | if (( | |
2608 | - | then throw((("HP should be < " + toString( | |
2619 | + | let lV = [lS, lT, lU] | |
2620 | + | let jh = B(C) | |
2621 | + | let ji = ak(valueOrElse(getInteger(F(C)), 0)) | |
2622 | + | let lW = valueOrElse(getInteger(jh), ji) | |
2623 | + | if ((lW >= ji)) | |
2624 | + | then throw((("HP should be < " + toString(ji)) + " to heal")) | |
2609 | 2625 | else { | |
2610 | - | let | |
2611 | - | let | |
2612 | - | let | |
2626 | + | let hR = bO(C) | |
2627 | + | let iu = hQ(hR) | |
2628 | + | let lX = if ((iu[bq] == "")) | |
2613 | 2629 | then nil | |
2614 | - | else split_4C( | |
2615 | - | func | |
2616 | - | let | |
2617 | - | let | |
2618 | - | then parseIntValue( | |
2630 | + | else split_4C(iu[bq], "_") | |
2631 | + | func lY (eX,cu) = { | |
2632 | + | let dG = eX._2 | |
2633 | + | let hm = if ((size(lX) > dG)) | |
2634 | + | then parseIntValue(lX[dG]) | |
2619 | 2635 | else 0 | |
2620 | - | if ((3 > | |
2636 | + | if ((3 > dG)) | |
2621 | 2637 | then { | |
2622 | - | let | |
2623 | - | if (( | |
2624 | - | then throw(((("You have only " + toString( | |
2625 | - | else $Tuple3(( | |
2638 | + | let lZ = lV[dG] | |
2639 | + | if ((lZ > hm)) | |
2640 | + | then throw(((("You have only " + toString(hm)) + " of ") + aU[dG])) | |
2641 | + | else $Tuple3((eX._1 :+ toString((hm - lZ))), (dG + 1), (eX._3 + (parseIntValue(split(cu, "_")[ba]) * lZ))) | |
2626 | 2642 | } | |
2627 | - | else $Tuple3(( | |
2643 | + | else $Tuple3((eX._1 :+ toString(hm)), (dG + 1), eX._3) | |
2628 | 2644 | } | |
2629 | 2645 | ||
2630 | - | let | |
2631 | - | let | |
2632 | - | let | |
2633 | - | let | |
2634 | - | func | |
2635 | - | then | |
2636 | - | else | |
2637 | - | ||
2638 | - | func | |
2639 | - | then | |
2646 | + | let fp = { | |
2647 | + | let eZ = aY | |
2648 | + | let fa = size(eZ) | |
2649 | + | let fb = $Tuple3(nil, 0, 0) | |
2650 | + | func fc (fd,fe) = if ((fe >= fa)) | |
2651 | + | then fd | |
2652 | + | else lY(fd, eZ[fe]) | |
2653 | + | ||
2654 | + | func ff (fd,fe) = if ((fe >= fa)) | |
2655 | + | then fd | |
2640 | 2656 | else throw("List size exceeds 50") | |
2641 | 2657 | ||
2642 | - | | |
2658 | + | ff(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fb, 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) | |
2643 | 2659 | } | |
2644 | - | let | |
2645 | - | $Tuple2((([IntegerEntry( | |
2660 | + | let ma = min([ji, (lW + fp._3)]) | |
2661 | + | $Tuple2((([IntegerEntry(jh, ma), StringEntry(hR, makeString_2C([iu[bn], iu[bo], iu[bp], makeString(fp._1, "_")], ":"))] ++ ls) ++ kf(C, (ah * ((lS + lT) + lU)))._1), ma) | |
2646 | 2662 | } | |
2647 | 2663 | } | |
2648 | 2664 | } | |
2650 | 2666 | ||
2651 | 2667 | ||
2652 | 2668 | ||
2653 | - | @Callable( | |
2669 | + | @Callable(gQ) | |
2654 | 2670 | func healES () = { | |
2655 | - | let | |
2656 | - | if ((size( | |
2671 | + | let ls = lo(gQ) | |
2672 | + | if ((size(gQ.payments) != 1)) | |
2657 | 2673 | then throw("Exactly one payment required") | |
2658 | 2674 | else { | |
2659 | - | let | |
2660 | - | if (( | |
2675 | + | let lt = value(gQ.payments[0]) | |
2676 | + | if ((lt.assetId != cD)) | |
2661 | 2677 | then throw("Allowed USDT payment only!") | |
2662 | 2678 | else { | |
2663 | - | let | |
2664 | - | if ( | |
2679 | + | let C = valueOrErrorMessage(getString(bN(toString(gQ.caller))), "You don't have a duck staked") | |
2680 | + | if (kv(C)) | |
2665 | 2681 | then throw("healES_checkTournament") | |
2666 | - | else if ( | |
2682 | + | else if (kw(C)) | |
2667 | 2683 | then throw("healES_checkDelivery") | |
2668 | 2684 | else { | |
2669 | - | let | |
2670 | - | let | |
2671 | - | let | |
2672 | - | if (( | |
2685 | + | let jh = B(C) | |
2686 | + | let ji = ak(valueOrElse(getInteger(F(C)), 0)) | |
2687 | + | let lW = valueOrElse(getInteger(jh), ji) | |
2688 | + | if ((lW > 0)) | |
2673 | 2689 | then throw("HP should be 0 to call Emergency Service") | |
2674 | 2690 | else { | |
2675 | - | let | |
2676 | - | let | |
2677 | - | let | |
2691 | + | let hR = bO(C) | |
2692 | + | let iu = hQ(hR) | |
2693 | + | let lX = if ((iu[bq] == "")) | |
2678 | 2694 | then nil | |
2679 | - | else split_4C( | |
2680 | - | let | |
2681 | - | then parseIntValue( | |
2695 | + | else split_4C(iu[bq], "_") | |
2696 | + | let mb = if ((size(lX) > 0)) | |
2697 | + | then parseIntValue(lX[0]) | |
2682 | 2698 | else 0 | |
2683 | - | let | |
2684 | - | then parseIntValue( | |
2699 | + | let mc = if ((size(lX) > 1)) | |
2700 | + | then parseIntValue(lX[1]) | |
2685 | 2701 | else 0 | |
2686 | - | let | |
2687 | - | then parseIntValue( | |
2702 | + | let md = if ((size(lX) > 2)) | |
2703 | + | then parseIntValue(lX[2]) | |
2688 | 2704 | else 0 | |
2689 | - | if (if (if (( | |
2705 | + | if (if (if ((mb > 0)) | |
2690 | 2706 | then true | |
2691 | - | else ( | |
2707 | + | else (mc > 0)) | |
2692 | 2708 | then true | |
2693 | - | else ( | |
2709 | + | else (md > 0)) | |
2694 | 2710 | then throw("You have to use own Medical Kit") | |
2695 | 2711 | else { | |
2696 | - | let | |
2697 | - | let | |
2698 | - | then split_4C(value( | |
2712 | + | let me = getString(di, bS()) | |
2713 | + | let mf = if (isDefined(me)) | |
2714 | + | then split_4C(value(me), "_") | |
2699 | 2715 | else nil | |
2700 | - | let | |
2701 | - | then parseIntValue( | |
2716 | + | let mg = if ((size(mf) > 0)) | |
2717 | + | then parseIntValue(mf[0]) | |
2702 | 2718 | else 0 | |
2703 | - | if ((0 >= | |
2719 | + | if ((0 >= mg)) | |
2704 | 2720 | then throw("There are no Medical Kits L1 at Emergency Service storage") | |
2705 | 2721 | else { | |
2706 | - | let | |
2707 | - | let | |
2708 | - | let | |
2709 | - | let | |
2710 | - | let | |
2711 | - | if (( | |
2712 | - | then throw(("Payment attached should be " + toString( | |
2722 | + | let ma = (lW + parseIntValue(split(aY[0], "_")[ba])) | |
2723 | + | let mh = makeString([toString((mg - 1)), removeByIndex(mf, 0)], "_") | |
2724 | + | let cu = split(aY[0], "_") | |
2725 | + | let mi = ct(cu) | |
2726 | + | let mj = fraction((mi * aP), aO, (cK * bd)) | |
2727 | + | if ((lt.amount != mj)) | |
2728 | + | then throw(("Payment attached should be " + toString(mj))) | |
2713 | 2729 | else { | |
2714 | - | let | |
2715 | - | $Tuple2((( | |
2730 | + | let fp = dC(invoke(di, "updateEsStorage", [mh], [AttachedPayment(cD, mj)])) | |
2731 | + | $Tuple2(((ls :+ IntegerEntry(jh, ma)) ++ kf(C, ab)._1), fp) | |
2716 | 2732 | } | |
2717 | 2733 | } | |
2718 | 2734 | } | |
2724 | 2740 | ||
2725 | 2741 | ||
2726 | 2742 | ||
2727 | - | @Callable( | |
2728 | - | func updateBackpack ( | |
2743 | + | @Callable(gQ) | |
2744 | + | func updateBackpack (C,mk) = if ((gQ.caller != di)) | |
2729 | 2745 | then throw("permission denied") | |
2730 | - | else $Tuple2([StringEntry( | |
2731 | - | ||
2732 | - | ||
2733 | - | ||
2734 | - | @Callable( | |
2746 | + | else $Tuple2([StringEntry(bO(C), mk)], mk) | |
2747 | + | ||
2748 | + | ||
2749 | + | ||
2750 | + | @Callable(gQ) | |
2735 | 2751 | func commitForRandom () = { | |
2736 | - | let | |
2737 | - | let | |
2738 | - | let d = toString( | |
2739 | - | $Tuple2(([IntegerEntry( | |
2740 | - | } | |
2741 | - | ||
2742 | - | ||
2743 | - | ||
2744 | - | @Callable( | |
2752 | + | let ls = lo(gQ) | |
2753 | + | let ml = (height + dv) | |
2754 | + | let d = toString(gQ.caller) | |
2755 | + | $Tuple2(([IntegerEntry(dw(d), ml)] ++ ls), ml) | |
2756 | + | } | |
2757 | + | ||
2758 | + | ||
2759 | + | ||
2760 | + | @Callable(gQ) | |
2745 | 2761 | func buySLand () = { | |
2746 | - | let | |
2747 | - | if ((size( | |
2762 | + | let ls = lo(gQ) | |
2763 | + | if ((size(gQ.payments) != 1)) | |
2748 | 2764 | then throw("Exactly one payment required") | |
2749 | 2765 | else { | |
2750 | - | let | |
2751 | - | if (( | |
2766 | + | let lt = value(gQ.payments[0]) | |
2767 | + | if ((lt.assetId != cD)) | |
2752 | 2768 | then throw("Allowed USDT payment only!") | |
2753 | - | else if (( | |
2754 | - | then throw(("Payment attached should be " + toString( | |
2769 | + | else if ((lt.amount != em)) | |
2770 | + | then throw(("Payment attached should be " + toString(em))) | |
2755 | 2771 | else { | |
2756 | - | let | |
2757 | - | let | |
2758 | - | $Tuple2(((( | |
2772 | + | let fp = iO(gQ.caller, gQ.transactionId) | |
2773 | + | let mm = dF(invoke(dm, "burnAcres", [en], nil)) | |
2774 | + | $Tuple2((((fp._1 :+ ScriptTransfer(di, lt.amount, cD)) ++ kl(toString(gQ.caller), ad)._1) ++ ls), $Tuple2(fp._2._1, mm)) | |
2759 | 2775 | } | |
2760 | 2776 | } | |
2761 | 2777 | } | |
2762 | 2778 | ||
2763 | 2779 | ||
2764 | 2780 | ||
2765 | - | @Callable( | |
2766 | - | func expedition ( | |
2767 | - | let | |
2768 | - | if ((size( | |
2781 | + | @Callable(gQ) | |
2782 | + | func expedition (iW,iX) = { | |
2783 | + | let ls = lo(gQ) | |
2784 | + | if ((size(gQ.payments) != 0)) | |
2769 | 2785 | then throw("No payments required") | |
2770 | 2786 | else { | |
2771 | - | let | |
2772 | - | let | |
2773 | - | let | |
2774 | - | let | |
2775 | - | let | |
2776 | - | let | |
2777 | - | let | |
2778 | - | let | |
2779 | - | let | |
2780 | - | let | |
2781 | - | let | |
2782 | - | let | |
2783 | - | let | |
2784 | - | let | |
2785 | - | let | |
2786 | - | let | |
2787 | - | then $Tuple3([IntegerEntry( | |
2788 | - | else $Tuple3(( | |
2789 | - | then [StringEntry( | |
2790 | - | else ((((nil :+ StringEntry( | |
2791 | - | if ( | |
2787 | + | let bR = toString(gQ.caller) | |
2788 | + | let hv = iV(bR, iW, iX) | |
2789 | + | let C = hv._2 | |
2790 | + | let jh = B(C) | |
2791 | + | let hR = bO(C) | |
2792 | + | let iu = hQ(hR) | |
2793 | + | let jW = split(iu[bp], "_") | |
2794 | + | let jY = makeString(fj(true, jW, el), "_") | |
2795 | + | let gD = H(C) | |
2796 | + | let lH = valueOrElse(getString(gD), ",;,_,;,_,;,_,;,_,;,_,;,") | |
2797 | + | let mn = fq(lH, hv._5) | |
2798 | + | let lJ = mn._1 | |
2799 | + | let lK = mn._2 | |
2800 | + | let mo = iO(gQ.caller, gQ.transactionId) | |
2801 | + | let iU = mo._2._1 | |
2802 | + | let fp = if ((0 >= hv._1)) | |
2803 | + | then $Tuple3([IntegerEntry(jh, 0), StringEntry(gD, lJ)], "", 0) | |
2804 | + | else $Tuple3((mo._1 ++ (if (lK) | |
2805 | + | then [StringEntry(N(C), "0_0_0_0_0")] | |
2806 | + | else ((((nil :+ StringEntry(bP(C), makeString([mo._2._2, "L", iU], "_"))) :+ IntegerEntry(jh, hv._1)) :+ StringEntry(gD, lJ)) :+ StringEntry(hR, makeString([iu[bn], iu[bo], jY, iu[bq]], ":"))))), iU, hv._3) | |
2807 | + | if (kv(C)) | |
2792 | 2808 | then throw("expedition_checkTournament") | |
2793 | - | else if ( | |
2809 | + | else if (kw(C)) | |
2794 | 2810 | then throw("expedition_checkDelivery") | |
2795 | 2811 | else { | |
2796 | - | let | |
2797 | - | $Tuple2((( | |
2812 | + | let mm = dF(invoke(dm, "burnAcres", [en], nil)) | |
2813 | + | $Tuple2(((fp._1 ++ kf(C, ad)._1) ++ ls), $Tuple3(fp._2, fp._3, mm)) | |
2798 | 2814 | } | |
2799 | 2815 | } | |
2800 | 2816 | } | |
2801 | 2817 | ||
2802 | 2818 | ||
2803 | 2819 | ||
2804 | - | @Callable( | |
2820 | + | @Callable(gQ) | |
2805 | 2821 | func buySLandForAcres () = { | |
2806 | - | let | |
2807 | - | if ((size( | |
2822 | + | let ls = lo(gQ) | |
2823 | + | if ((size(gQ.payments) != 1)) | |
2808 | 2824 | then throw("exactly 1 payment must be attached") | |
2809 | 2825 | else { | |
2810 | - | let | |
2811 | - | let | |
2812 | - | if (if (!(isDefined( | |
2826 | + | let lt = gQ.payments[0] | |
2827 | + | let fw = lt.amount | |
2828 | + | if (if (!(isDefined(lt.assetId))) | |
2813 | 2829 | then true | |
2814 | - | else (value( | |
2830 | + | else (value(lt.assetId) != du)) | |
2815 | 2831 | then throw("ACRES payments only!") | |
2816 | - | else if (( | |
2817 | - | then throw(("Payment attached should be " + toString( | |
2832 | + | else if ((fw != en)) | |
2833 | + | then throw(("Payment attached should be " + toString(en))) | |
2818 | 2834 | else { | |
2819 | - | let | |
2820 | - | let | |
2821 | - | $Tuple2((( | |
2835 | + | let fp = iO(gQ.caller, gQ.transactionId) | |
2836 | + | let mm = dF(invoke(dm, "burnAcres", [en], [AttachedPayment(du, fw)])) | |
2837 | + | $Tuple2(((fp._1 ++ kl(toString(gQ.caller), ad)._1) ++ ls), $Tuple2(fp._2._1, mm)) | |
2822 | 2838 | } | |
2823 | 2839 | } | |
2824 | 2840 | } | |
2825 | 2841 | ||
2826 | 2842 | ||
2827 | 2843 | ||
2828 | - | @Callable( | |
2829 | - | func upgradeInfra ( | |
2830 | - | let | |
2831 | - | if ((size( | |
2844 | + | @Callable(gQ) | |
2845 | + | func upgradeInfra (R) = { | |
2846 | + | let ls = lo(gQ) | |
2847 | + | if ((size(gQ.payments) != 0)) | |
2832 | 2848 | then throw("No payments required") | |
2833 | 2849 | else { | |
2834 | - | let | |
2835 | - | let | |
2836 | - | $Tuple2((( | |
2837 | - | } | |
2838 | - | } | |
2839 | - | ||
2840 | - | ||
2841 | - | ||
2842 | - | @Callable( | |
2843 | - | func activateArtifact ( | |
2844 | - | let | |
2845 | - | if ((size( | |
2850 | + | let fp = jQ(true, gQ.caller, 0, R) | |
2851 | + | let C = valueOrErrorMessage(getString(bN(toString(gQ.caller))), "You don't have a duck staked") | |
2852 | + | $Tuple2(((fp._1 ++ ls) ++ kf(C, fraction(ae, fp._3, cK))._1), fp._2) | |
2853 | + | } | |
2854 | + | } | |
2855 | + | ||
2856 | + | ||
2857 | + | ||
2858 | + | @Callable(gQ) | |
2859 | + | func activateArtifact (mp,mq) = { | |
2860 | + | let ls = lo(gQ) | |
2861 | + | if ((size(gQ.payments) != 0)) | |
2846 | 2862 | then throw("No payments required") | |
2847 | 2863 | else { | |
2848 | - | let d = toString( | |
2849 | - | let | |
2850 | - | let | |
2851 | - | if (("PRESALE" == | |
2852 | - | then | |
2853 | - | else if (("ONBOARD" == | |
2854 | - | then | |
2864 | + | let d = toString(gQ.caller) | |
2865 | + | let fp = { | |
2866 | + | let cE = mp | |
2867 | + | if (("PRESALE" == cE)) | |
2868 | + | then kt(d, mq) | |
2869 | + | else if (("ONBOARD" == cE)) | |
2870 | + | then km(d) | |
2855 | 2871 | else throw("Unknown artifact") | |
2856 | 2872 | } | |
2857 | - | ( | |
2858 | - | } | |
2859 | - | } | |
2860 | - | ||
2861 | - | ||
2862 | - | ||
2863 | - | @Callable( | |
2864 | - | func mergeLands ( | |
2865 | - | let | |
2866 | - | if ((size( | |
2873 | + | (fp ++ ls) | |
2874 | + | } | |
2875 | + | } | |
2876 | + | ||
2877 | + | ||
2878 | + | ||
2879 | + | @Callable(gQ) | |
2880 | + | func mergeLands (kL) = { | |
2881 | + | let ls = lo(gQ) | |
2882 | + | if ((size(gQ.payments) != 0)) | |
2867 | 2883 | then throw("No payments required") | |
2868 | 2884 | else { | |
2869 | - | let | |
2870 | - | $Tuple2((( | |
2871 | - | } | |
2872 | - | } | |
2873 | - | ||
2874 | - | ||
2875 | - | ||
2876 | - | @Callable( | |
2877 | - | func cargoExchange ( | |
2878 | - | let | |
2879 | - | if ((size( | |
2885 | + | let fp = lj(toString(gQ.caller), kL) | |
2886 | + | $Tuple2(((fp._1 ++ ls) ++ kl(toString(gQ.caller), af)._1), fp._2) | |
2887 | + | } | |
2888 | + | } | |
2889 | + | ||
2890 | + | ||
2891 | + | ||
2892 | + | @Callable(gQ) | |
2893 | + | func cargoExchange (mr,R) = { | |
2894 | + | let ls = lo(gQ) | |
2895 | + | if ((size(gQ.payments) != 0)) | |
2880 | 2896 | then throw("No payments required") | |
2881 | 2897 | else { | |
2882 | - | let | |
2883 | - | let d = toString( | |
2884 | - | let | |
2885 | - | let | |
2886 | - | if (!(isDefined(getInteger( | |
2887 | - | then throw(( | |
2898 | + | let it = split_4C(mr, ":") | |
2899 | + | let d = toString(gQ.originCaller) | |
2900 | + | let jy = value(assetInfo(fromBase58String(R))) | |
2901 | + | let jz = bx(R) | |
2902 | + | if (!(isDefined(getInteger(jz)))) | |
2903 | + | then throw((jy.name + " is not staked")) | |
2888 | 2904 | else { | |
2889 | - | let | |
2890 | - | if (( | |
2891 | - | then throw(( | |
2905 | + | let jB = valueOrErrorMessage(getString(bu(R)), (("NFT " + jy.name) + " is orphaned")) | |
2906 | + | if ((jB != d)) | |
2907 | + | then throw((aG + " is not yours")) | |
2892 | 2908 | else { | |
2893 | - | let | |
2894 | - | let | |
2895 | - | let | |
2896 | - | let | |
2897 | - | let | |
2898 | - | if (( | |
2899 | - | then throw((("Duck location type is " + | |
2900 | - | else if (( | |
2901 | - | then throw(("Duck should be on the land " + | |
2909 | + | let if = (dN(split(jy.description, "_")[do]) / cL) | |
2910 | + | let ig = valueOrElse(getInteger(bE(R)), 0) | |
2911 | + | let C = valueOrErrorMessage(getString(bN(d)), "You don't have a duck staked") | |
2912 | + | let jw = valueOrElse(getString(bP(C)), aN) | |
2913 | + | let cl = split(value(jw), "_") | |
2914 | + | if ((cl[bs] != "L")) | |
2915 | + | then throw((("Duck location type is " + cl[bs]) + ", but should be L")) | |
2916 | + | else if ((cl[bt] != R)) | |
2917 | + | then throw(("Duck should be on the land " + R)) | |
2902 | 2918 | else { | |
2903 | - | let | |
2904 | - | let | |
2905 | - | let | |
2906 | - | let | |
2907 | - | let | |
2908 | - | let | |
2909 | - | let | |
2910 | - | let | |
2911 | - | ([StringEntry( | |
2919 | + | let ie = bD(R) | |
2920 | + | let hV = id(ie, if, ig) | |
2921 | + | let hR = bO(C) | |
2922 | + | let iu = hQ(hR) | |
2923 | + | let fp = is(it, hV, iu) | |
2924 | + | let im = split(hV[bi], "_") | |
2925 | + | let jN = (parseIntValue(im[bk]) + fp._7) | |
2926 | + | let jO = (parseIntValue(im[bl]) - fp._7) | |
2927 | + | ([StringEntry(hR, makeString_2C([iu[bn], fp._4, fp._5, fp._6], ":")), StringEntry(ie, makeString_2C([hV[be], fp._1, fp._2, fp._3, makeString([im[bj], toString(jN), toString(jO), im[bm]], "_")], ":"))] ++ ls) | |
2912 | 2928 | } | |
2913 | 2929 | } | |
2914 | 2930 | } | |
2917 | 2933 | ||
2918 | 2934 | ||
2919 | 2935 | ||
2920 | - | @Callable( | |
2921 | - | func saveWarehouse ( | |
2936 | + | @Callable(gQ) | |
2937 | + | func saveWarehouse (ii,R) = if ((gQ.caller != di)) | |
2922 | 2938 | then throw("Access denied") | |
2923 | 2939 | else { | |
2924 | - | let | |
2925 | - | let | |
2926 | - | if ((size( | |
2940 | + | let ie = bD(R) | |
2941 | + | let ij = split_4C(ii, ":") | |
2942 | + | if ((size(ij) != 5)) | |
2927 | 2943 | then throw("warehouse string should contain 4 ':' separators") | |
2928 | 2944 | else { | |
2929 | - | let | |
2930 | - | let | |
2931 | - | let | |
2932 | - | let | |
2933 | - | let | |
2934 | - | $Tuple2([StringEntry( | |
2945 | + | let ms = split(ij[bi], "_")[bj] | |
2946 | + | let jN = hU(ij) | |
2947 | + | let mt = hS(ij[be]) | |
2948 | + | let jO = ((mt - parseIntValue(ms)) - jN) | |
2949 | + | let mu = makeString_2C([ij[be], ij[bf], ij[bg], ij[bh], makeString([ms, toString(jN), toString(jO), toString(mt)], "_")], ":") | |
2950 | + | $Tuple2([StringEntry(ie, mu)], mu) | |
2935 | 2951 | } | |
2936 | 2952 | } | |
2937 | 2953 | ||
2938 | 2954 | ||
2939 | 2955 | ||
2940 | - | @Callable( | |
2941 | - | func fixWarehouseFormat ( | |
2956 | + | @Callable(gQ) | |
2957 | + | func fixWarehouseFormat (R) = if ((gQ.caller != dh)) | |
2942 | 2958 | then throw("Access denied") | |
2943 | 2959 | else { | |
2944 | - | let | |
2945 | - | let | |
2946 | - | let | |
2947 | - | let | |
2948 | - | let | |
2949 | - | let | |
2950 | - | let | |
2951 | - | let | |
2952 | - | let | |
2953 | - | let | |
2954 | - | $Tuple2([StringEntry( | |
2960 | + | let ie = bD(R) | |
2961 | + | let jy = value(assetInfo(fromBase58String(R))) | |
2962 | + | let if = (dN(split(jy.description, "_")[do]) / cL) | |
2963 | + | let ig = valueOrElse(getInteger(bE(R)), 0) | |
2964 | + | let ij = id(ie, if, ig) | |
2965 | + | let ms = dF(invoke(di, "recalcLockedVolumeREADONLY", [R, ij], nil)) | |
2966 | + | let jN = hU(ij) | |
2967 | + | let mt = hS(ij[be]) | |
2968 | + | let jO = ((mt - ms) - jN) | |
2969 | + | let mu = makeString_2C([ij[be], ij[bf], ij[bg], ij[bh], makeString([toString(ms), toString(jN), toString(jO), toString(mt)], "_")], ":") | |
2970 | + | $Tuple2([StringEntry(ie, mu)], mu) | |
2955 | 2971 | } | |
2956 | 2972 | ||
2957 | 2973 | ||
2958 | 2974 | ||
2959 | - | @Callable( | |
2960 | - | func fixContinentProportions ( | |
2975 | + | @Callable(gQ) | |
2976 | + | func fixContinentProportions (kL) = if ((gQ.caller != dh)) | |
2961 | 2977 | then throw("Access denied") | |
2962 | 2978 | else { | |
2963 | - | func | |
2964 | - | ||
2965 | - | let | |
2966 | - | let | |
2967 | - | let | |
2968 | - | let | |
2969 | - | func | |
2970 | - | then | |
2971 | - | else | |
2972 | - | ||
2973 | - | func | |
2974 | - | then | |
2979 | + | func mv (eX,mw) = (eX :+ valueOrElse(getString(dy(mw)), "0_0_0_0_0_0")) | |
2980 | + | ||
2981 | + | let gA = { | |
2982 | + | let eZ = aV | |
2983 | + | let fa = size(eZ) | |
2984 | + | let fb = nil | |
2985 | + | func fc (fd,fe) = if ((fe >= fa)) | |
2986 | + | then fd | |
2987 | + | else mv(fd, eZ[fe]) | |
2988 | + | ||
2989 | + | func ff (fd,fe) = if ((fe >= fa)) | |
2990 | + | then fd | |
2975 | 2991 | else throw("List size exceeds 5") | |
2976 | 2992 | ||
2977 | - | | |
2978 | - | } | |
2979 | - | func | |
2980 | - | let | |
2981 | - | let | |
2982 | - | let | |
2983 | - | let | |
2984 | - | let | |
2985 | - | let | |
2986 | - | let | |
2987 | - | let | |
2988 | - | let | |
2989 | - | if (("Americas" == | |
2990 | - | then [ | |
2991 | - | else if (("Europe" == | |
2992 | - | then [ | |
2993 | - | else if (("Asia" == | |
2994 | - | then [ | |
2995 | - | else if (("Africa" == | |
2996 | - | then [ | |
2997 | - | else if (("Oceania" == | |
2998 | - | then [ | |
2993 | + | ff(fc(fc(fc(fc(fc(fb, 0), 1), 2), 3), 4), 5) | |
2994 | + | } | |
2995 | + | func mx (eX,R) = { | |
2996 | + | let jy = value(assetInfo(fromBase58String(R))) | |
2997 | + | let jC = split(jy.description, "_") | |
2998 | + | let if = (dN(jC[do]) / cL) | |
2999 | + | let mw = jC[dq] | |
3000 | + | let gM = gS(jC[dp]) | |
3001 | + | let hu = value(indexOf(aV, mw)) | |
3002 | + | let la = split(eX[hu], "_") | |
3003 | + | let my = makeString(gK(la, gM, if, 1), "_") | |
3004 | + | let cE = mw | |
3005 | + | if (("Americas" == cE)) | |
3006 | + | then [my, eX[1], eX[2], eX[3], eX[4]] | |
3007 | + | else if (("Europe" == cE)) | |
3008 | + | then [eX[0], my, eX[2], eX[3], eX[4]] | |
3009 | + | else if (("Asia" == cE)) | |
3010 | + | then [eX[0], eX[1], my, eX[3], eX[4]] | |
3011 | + | else if (("Africa" == cE)) | |
3012 | + | then [eX[0], eX[1], eX[2], my, eX[4]] | |
3013 | + | else if (("Oceania" == cE)) | |
3014 | + | then [eX[0], eX[1], eX[2], eX[3], my] | |
2999 | 3015 | else throw("wrong continent") | |
3000 | 3016 | } | |
3001 | 3017 | ||
3002 | - | let | |
3003 | - | let | |
3004 | - | let | |
3005 | - | let | |
3006 | - | func | |
3007 | - | then | |
3008 | - | else | |
3009 | - | ||
3010 | - | func | |
3011 | - | then | |
3018 | + | let fi = { | |
3019 | + | let eZ = kL | |
3020 | + | let fa = size(eZ) | |
3021 | + | let fb = gA | |
3022 | + | func hL (fd,fe) = if ((fe >= fa)) | |
3023 | + | then fd | |
3024 | + | else mx(fd, eZ[fe]) | |
3025 | + | ||
3026 | + | func hM (fd,fe) = if ((fe >= fa)) | |
3027 | + | then fd | |
3012 | 3028 | else throw("List size exceeds 100") | |
3013 | 3029 | ||
3014 | - | | |
3015 | - | } | |
3016 | - | $Tuple2([StringEntry( | |
3030 | + | 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(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(fb, 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), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100) | |
3031 | + | } | |
3032 | + | $Tuple2([StringEntry(dy("Americas"), fi[0]), StringEntry(dy("Europe"), fi[1]), StringEntry(dy("Asia"), fi[2]), StringEntry(dy("Africa"), fi[3]), StringEntry(dy("Oceania"), fi[4])], 0) | |
3017 | 3033 | } | |
3018 | 3034 | ||
3019 | 3035 | ||
3020 | 3036 | ||
3021 | - | @Callable( | |
3022 | - | func fixStakedPieces ( | |
3037 | + | @Callable(gQ) | |
3038 | + | func fixStakedPieces (cS) = if ((gQ.caller != dh)) | |
3023 | 3039 | then throw("Access denied") | |
3024 | 3040 | else { | |
3025 | - | let | |
3041 | + | let le = if ((cS == "")) | |
3026 | 3042 | then 0 | |
3027 | 3043 | else { | |
3028 | - | let | |
3029 | - | let | |
3030 | - | then split_51C(value( | |
3044 | + | let kX = getString(ar, dA(cS)) | |
3045 | + | let kT = if (isDefined(kX)) | |
3046 | + | then split_51C(value(kX), "_") | |
3031 | 3047 | else nil | |
3032 | - | func | |
3033 | - | let | |
3034 | - | let | |
3035 | - | ( | |
3048 | + | func mz (eX,R) = { | |
3049 | + | let jy = value(assetInfo(fromBase58String(R))) | |
3050 | + | let dO = split(jy.description, "_")[do] | |
3051 | + | (eX + dN(dO)) | |
3036 | 3052 | } | |
3037 | 3053 | ||
3038 | - | let | |
3039 | - | let | |
3040 | - | let | |
3041 | - | func | |
3042 | - | then | |
3043 | - | else | |
3044 | - | ||
3045 | - | func | |
3046 | - | then | |
3054 | + | let eZ = kT | |
3055 | + | let fa = size(eZ) | |
3056 | + | let fb = 0 | |
3057 | + | func fc (fd,fe) = if ((fe >= fa)) | |
3058 | + | then fd | |
3059 | + | else mz(fd, eZ[fe]) | |
3060 | + | ||
3061 | + | func ff (fd,fe) = if ((fe >= fa)) | |
3062 | + | then fd | |
3047 | 3063 | else throw("List size exceeds 100") | |
3048 | 3064 | ||
3049 | - | | |
3065 | + | ff(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fb, 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), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100) | |
3050 | 3066 | } | |
3051 | - | $Tuple2([IntegerEntry( | |
3067 | + | $Tuple2([IntegerEntry(dB(cS), le)], le) | |
3052 | 3068 | } | |
3053 | 3069 | ||
3054 | 3070 | ||
3055 | 3071 | ||
3056 | - | @Callable( | |
3057 | - | func setCustomName ( | |
3058 | - | let | |
3059 | - | if ((size( | |
3072 | + | @Callable(gQ) | |
3073 | + | func setCustomName (bv,kV,bz) = { | |
3074 | + | let ls = lo(gQ) | |
3075 | + | if ((size(gQ.payments) != 1)) | |
3060 | 3076 | then throw("Exactly one payment required") | |
3061 | 3077 | else { | |
3062 | - | let | |
3063 | - | if (( | |
3078 | + | let lt = value(gQ.payments[0]) | |
3079 | + | if ((lt.assetId != cD)) | |
3064 | 3080 | then throw("Allowed USDT payment only!") | |
3065 | - | else if (( | |
3066 | - | then throw(("Payment should be " + toString( | |
3067 | - | else if (contains( | |
3068 | - | then throw(("Name should not contain '__': " + | |
3069 | - | else if ((size( | |
3070 | - | then throw(("Name too long, maxLength=" + toString( | |
3081 | + | else if ((lt.amount != ei)) | |
3082 | + | then throw(("Payment should be " + toString(ei))) | |
3083 | + | else if (contains(kV, "__")) | |
3084 | + | then throw(("Name should not contain '__': " + kV)) | |
3085 | + | else if ((size(kV) > ej)) | |
3086 | + | then throw(("Name too long, maxLength=" + toString(ej))) | |
3071 | 3087 | else { | |
3072 | - | let d = toString( | |
3073 | - | let | |
3074 | - | let | |
3075 | - | if (("ACCOUNT" == | |
3088 | + | let d = toString(gQ.originCaller) | |
3089 | + | let mA = { | |
3090 | + | let cE = bz | |
3091 | + | if (("ACCOUNT" == cE)) | |
3076 | 3092 | then { | |
3077 | - | let | |
3078 | - | let | |
3079 | - | if (isDefined( | |
3080 | - | then throw(("Name already registered: " + | |
3093 | + | let mB = eD(kV) | |
3094 | + | let mC = getString(mB) | |
3095 | + | if (isDefined(mC)) | |
3096 | + | then throw(("Name already registered: " + kV)) | |
3081 | 3097 | else { | |
3082 | - | let | |
3083 | - | let | |
3084 | - | let | |
3085 | - | then [DeleteEntry( | |
3098 | + | let mD = bH(d) | |
3099 | + | let mE = getString(mD) | |
3100 | + | let mF = if (isDefined(mE)) | |
3101 | + | then [DeleteEntry(eD(value(mE)))] | |
3086 | 3102 | else nil | |
3087 | - | ((( | |
3103 | + | (((mF :+ StringEntry(mD, kV)) :+ StringEntry(mB, d)) ++ kl(d, ac)._1) | |
3088 | 3104 | } | |
3089 | 3105 | } | |
3090 | - | else if (("LAND" == | |
3106 | + | else if (("LAND" == cE)) | |
3091 | 3107 | then { | |
3092 | - | let | |
3093 | - | let | |
3094 | - | if (!(isDefined(getInteger( | |
3095 | - | then throw(( | |
3108 | + | let jy = value(assetInfo(fromBase58String(bv))) | |
3109 | + | let jz = bx(bv) | |
3110 | + | if (!(isDefined(getInteger(jz)))) | |
3111 | + | then throw((jy.name + " is not staked")) | |
3096 | 3112 | else { | |
3097 | - | let | |
3098 | - | if (( | |
3099 | - | then throw(( | |
3113 | + | let jB = valueOrErrorMessage(getString(bu(bv)), (("NFT " + jy.name) + " is orphaned")) | |
3114 | + | if ((jB != d)) | |
3115 | + | then throw((aG + " is not yours")) | |
3100 | 3116 | else { | |
3101 | - | let | |
3102 | - | let | |
3103 | - | if (isDefined( | |
3104 | - | then throw(("Name already registered: " + | |
3117 | + | let mB = ew(kV) | |
3118 | + | let mC = getString(mB) | |
3119 | + | if (isDefined(mC)) | |
3120 | + | then throw(("Name already registered: " + kV)) | |
3105 | 3121 | else { | |
3106 | - | let | |
3107 | - | let | |
3108 | - | let | |
3109 | - | then [DeleteEntry( | |
3122 | + | let mG = bw(bv) | |
3123 | + | let mE = getString(mG) | |
3124 | + | let mF = if (isDefined(mE)) | |
3125 | + | then [DeleteEntry(ew(value(mE)))] | |
3110 | 3126 | else nil | |
3111 | - | ((( | |
3127 | + | (((mF :+ StringEntry(mG, kV)) :+ StringEntry(mB, bv)) ++ kl(d, ac)._1) | |
3112 | 3128 | } | |
3113 | 3129 | } | |
3114 | 3130 | } | |
3115 | 3131 | } | |
3116 | - | else if (("DUCK" == | |
3132 | + | else if (("DUCK" == cE)) | |
3117 | 3133 | then { | |
3118 | - | let | |
3119 | - | let | |
3120 | - | if (if (!(isDefined(getInteger( | |
3134 | + | let jy = value(assetInfo(fromBase58String(bv))) | |
3135 | + | let jz = bx(bv) | |
3136 | + | if (if (!(isDefined(getInteger(jz)))) | |
3121 | 3137 | then true | |
3122 | - | else !(isDefined(getString( | |
3123 | - | then throw(( | |
3138 | + | else !(isDefined(getString(bN(d))))) | |
3139 | + | then throw((jy.name + " is not staked")) | |
3124 | 3140 | else { | |
3125 | - | let | |
3126 | - | if (( | |
3127 | - | then throw(( | |
3141 | + | let jB = valueOrErrorMessage(getString(bM(bv)), (("NFT " + jy.name) + " is orphaned")) | |
3142 | + | if ((jB != d)) | |
3143 | + | then throw((aH + " is not yours")) | |
3128 | 3144 | else { | |
3129 | - | let | |
3130 | - | let | |
3131 | - | if (isDefined( | |
3132 | - | then throw(("Name already registered: " + | |
3145 | + | let mB = eC(kV) | |
3146 | + | let mC = getString(mB) | |
3147 | + | if (isDefined(mC)) | |
3148 | + | then throw(("Name already registered: " + kV)) | |
3133 | 3149 | else { | |
3134 | - | let | |
3135 | - | let | |
3136 | - | let | |
3137 | - | then [DeleteEntry( | |
3150 | + | let mG = bG(bv) | |
3151 | + | let mE = getString(mG) | |
3152 | + | let mF = if (isDefined(mE)) | |
3153 | + | then [DeleteEntry(eC(value(mE)))] | |
3138 | 3154 | else nil | |
3139 | - | ((( | |
3155 | + | (((mF :+ StringEntry(mG, kV)) :+ StringEntry(mB, bv)) ++ kf(bv, ac)._1) | |
3140 | 3156 | } | |
3141 | 3157 | } | |
3142 | 3158 | } | |
3143 | 3159 | } | |
3144 | 3160 | else throw("Unknown entity type") | |
3145 | 3161 | } | |
3146 | - | $Tuple2((( | |
3162 | + | $Tuple2(((mA :+ ScriptTransfer(di, lt.amount, cD)) ++ ls), 0) | |
3147 | 3163 | } | |
3148 | 3164 | } | |
3149 | 3165 | } | |
3150 | 3166 | ||
3151 | 3167 | ||
3152 | 3168 | ||
3153 | - | @Callable( | |
3154 | - | func setReferrals ( | |
3169 | + | @Callable(gQ) | |
3170 | + | func setReferrals (mH,mI) = if ((gQ.callerPublicKey != ef)) | |
3155 | 3171 | then throw("Permission denied") | |
3156 | 3172 | else { | |
3157 | - | let | |
3158 | - | if ((size( | |
3173 | + | let ls = lo(gQ) | |
3174 | + | if ((size(gQ.payments) != 0)) | |
3159 | 3175 | then throw("No payments required") | |
3160 | - | else if (!(isDefined(addressFromString( | |
3161 | - | then throw(("Invalid address: " + | |
3162 | - | else if (!(isDefined(addressFromString( | |
3163 | - | then throw(("Invalid address: " + | |
3176 | + | else if (!(isDefined(addressFromString(mH)))) | |
3177 | + | then throw(("Invalid address: " + mH)) | |
3178 | + | else if (!(isDefined(addressFromString(mI)))) | |
3179 | + | then throw(("Invalid address: " + mI)) | |
3164 | 3180 | else { | |
3165 | - | let | |
3166 | - | let | |
3167 | - | let | |
3168 | - | then split_4C(value( | |
3181 | + | let mJ = eE() | |
3182 | + | let mK = getString(mJ) | |
3183 | + | let mL = if (isDefined(mK)) | |
3184 | + | then split_4C(value(mK), "_") | |
3169 | 3185 | else nil | |
3170 | - | if (containsElement( | |
3171 | - | then throw(( | |
3186 | + | if (containsElement(mL, mI)) | |
3187 | + | then throw((mI + " is not newbie (already has referrals)")) | |
3172 | 3188 | else { | |
3173 | - | let | |
3174 | - | let | |
3175 | - | if (if (isDefined( | |
3176 | - | then isDefined(addressFromString(value( | |
3189 | + | let kn = bI(mI) | |
3190 | + | let ko = getString(kn) | |
3191 | + | if (if (isDefined(ko)) | |
3192 | + | then isDefined(addressFromString(value(ko))) | |
3177 | 3193 | else false) | |
3178 | - | then throw((( | |
3194 | + | then throw(((mI + " already has refBy: ") + value(ko))) | |
3179 | 3195 | else { | |
3180 | - | let | |
3181 | - | let | |
3182 | - | let | |
3183 | - | then split_4C(value( | |
3196 | + | let mM = bL(mH) | |
3197 | + | let mN = getString(mM) | |
3198 | + | let mO = if (isDefined(mN)) | |
3199 | + | then split_4C(value(mN), "_") | |
3184 | 3200 | else nil | |
3185 | - | if (containsElement( | |
3186 | - | then throw(((( | |
3201 | + | if (containsElement(mO, mI)) | |
3202 | + | then throw((((mH + " already contains ") + mI) + " within referrals")) | |
3187 | 3203 | else { | |
3188 | - | let | |
3189 | - | let | |
3190 | - | then value( | |
3191 | - | else makeString_2C(( | |
3192 | - | $Tuple2(([StringEntry( | |
3204 | + | let mP = makeString_2C((mO :+ mI), "_") | |
3205 | + | let mQ = if (containsElement(mL, mH)) | |
3206 | + | then value(mK) | |
3207 | + | else makeString_2C((mL :+ mH), "_") | |
3208 | + | $Tuple2(([StringEntry(kn, mH), StringEntry(mM, mP), StringEntry(mJ, mQ)] ++ ls), 0) | |
3193 | 3209 | } | |
3194 | 3210 | } | |
3195 | 3211 | } | |
3198 | 3214 | ||
3199 | 3215 | ||
3200 | 3216 | ||
3201 | - | @Callable( | |
3202 | - | func distributePoints ( | |
3203 | - | let | |
3204 | - | if ((size( | |
3217 | + | @Callable(gQ) | |
3218 | + | func distributePoints (mR,mS,mT,mU,mV) = { | |
3219 | + | let ls = lo(gQ) | |
3220 | + | if ((size(gQ.payments) != 0)) | |
3205 | 3221 | then throw("No payments required") | |
3206 | 3222 | else { | |
3207 | - | let d = toString( | |
3208 | - | let | |
3209 | - | let | |
3210 | - | let | |
3223 | + | let d = toString(gQ.originCaller) | |
3224 | + | let mW = dH(invoke(dk, "checkWlgXpREADONLY", [d], nil)) | |
3225 | + | let mX = dF(mW[1]) | |
3226 | + | let mY = if ((0 >= mX)) | |
3211 | 3227 | then $Tuple2(0, nil) | |
3212 | 3228 | else { | |
3213 | - | let | |
3214 | - | if (( | |
3215 | - | then $Tuple2( | |
3229 | + | let kg = dF(invoke(dk, "takeWlgXp", [d], nil)) | |
3230 | + | if ((kg == kg)) | |
3231 | + | then $Tuple2(mX, [IntegerEntry(J(d), dF(mW[0])), IntegerEntry(I(d), dF(mW[2]))]) | |
3216 | 3232 | else throw("Strict value is not equal to itself.") | |
3217 | 3233 | } | |
3218 | - | let | |
3219 | - | let | |
3220 | - | let | |
3221 | - | let | |
3222 | - | let | |
3223 | - | let | |
3224 | - | let | |
3225 | - | let | |
3226 | - | let | |
3227 | - | if (( | |
3228 | - | then throw((("There are only " + toString( | |
3234 | + | let mZ = mY._1 | |
3235 | + | let na = mY._2 | |
3236 | + | let C = valueOrErrorMessage(getString(bN(d)), "You don't have a duck staked") | |
3237 | + | let nb = K(d) | |
3238 | + | let nc = (valueOrElse(getInteger(nb), 0) + mZ) | |
3239 | + | let nd = G(C) | |
3240 | + | let ne = valueOrElse(getInteger(nd), 0) | |
3241 | + | let nf = (nc + ne) | |
3242 | + | let ng = ((((mR + mS) + mT) + mU) + mV) | |
3243 | + | if ((ng > nf)) | |
3244 | + | then throw((("There are only " + toString(nf)) + " free points to distribute")) | |
3229 | 3245 | else { | |
3230 | - | let | |
3231 | - | let | |
3232 | - | let | |
3233 | - | $Tuple2((([IntegerEntry( | |
3246 | + | let nh = D(C) | |
3247 | + | let au = split(valueOrElse(getString(nh), "0_0_0_0_0"), "_") | |
3248 | + | let ni = (nc - ng) | |
3249 | + | $Tuple2((([IntegerEntry(nb, if ((0 > ni)) | |
3234 | 3250 | then 0 | |
3235 | - | else | |
3236 | - | then ( | |
3237 | - | else | |
3251 | + | else ni), IntegerEntry(nd, if ((0 > ni)) | |
3252 | + | then (ne + ni) | |
3253 | + | else ne), StringEntry(nh, makeString([toString((parseIntValue(au[m]) + mR)), toString((parseIntValue(au[n]) + mS)), toString((parseIntValue(au[o]) + mT)), toString((parseIntValue(au[p]) + mU)), toString((parseIntValue(au[q]) + mV))], "_"))] ++ ls) ++ na), 0) | |
3238 | 3254 | } | |
3239 | 3255 | } | |
3240 | 3256 | } | |
3241 | 3257 | ||
3242 | 3258 | ||
3243 | 3259 | ||
3244 | - | @Callable( | |
3245 | - | func splitByGlobalWeightsREADONLY ( | |
3246 | - | ||
3247 | - | ||
3248 | - | ||
3249 | - | @Callable( | |
3250 | - | func splitByGlobalAndLocalWeightsREADONLY ( | |
3251 | - | let | |
3252 | - | $Tuple2(nil, $Tuple2( | |
3253 | - | } | |
3254 | - | ||
3255 | - | ||
3256 | - | ||
3257 | - | @Callable( | |
3258 | - | func getBackpackREADONLY ( | |
3259 | - | ||
3260 | - | ||
3261 | - | ||
3262 | - | @Callable( | |
3263 | - | func getWarehouseREADONLY ( | |
3264 | - | let | |
3265 | - | let | |
3266 | - | let | |
3267 | - | $Tuple2(nil, makeString_2C( | |
3268 | - | } | |
3269 | - | ||
3270 | - | ||
3271 | - | ||
3272 | - | @Callable( | |
3273 | - | func saveLastTx () = if (!(containsElement([ | |
3260 | + | @Callable(gQ) | |
3261 | + | func splitByGlobalWeightsREADONLY (eO) = $Tuple2(nil, fg(eO)) | |
3262 | + | ||
3263 | + | ||
3264 | + | ||
3265 | + | @Callable(gQ) | |
3266 | + | func splitByGlobalAndLocalWeightsREADONLY (nj,nk,gT) = { | |
3267 | + | let gM = gS(gT) | |
3268 | + | $Tuple2(nil, $Tuple2(fg(nj), eR(nk, gM))) | |
3269 | + | } | |
3270 | + | ||
3271 | + | ||
3272 | + | ||
3273 | + | @Callable(gQ) | |
3274 | + | func getBackpackREADONLY (C) = $Tuple2(nil, makeString(hQ(bO(C)), ":")) | |
3275 | + | ||
3276 | + | ||
3277 | + | ||
3278 | + | @Callable(gQ) | |
3279 | + | func getWarehouseREADONLY (R) = { | |
3280 | + | let jy = value(assetInfo(fromBase58String(R))) | |
3281 | + | let if = (dN(split(jy.description, "_")[do]) / cL) | |
3282 | + | let ig = valueOrElse(getInteger(bE(R)), 0) | |
3283 | + | $Tuple2(nil, makeString_2C(id(bD(R), if, ig), ":")) | |
3284 | + | } | |
3285 | + | ||
3286 | + | ||
3287 | + | ||
3288 | + | @Callable(gQ) | |
3289 | + | func saveLastTx () = if (!(containsElement([dk, di, dl, dm], gQ.caller))) | |
3274 | 3290 | then throw("Access denied") | |
3275 | - | else $Tuple2( | |
3276 | - | ||
3277 | - | ||
3278 | - | ||
3279 | - | @Callable( | |
3280 | - | func updateDuckStats ( | |
3291 | + | else $Tuple2(lo(gQ), 42) | |
3292 | + | ||
3293 | + | ||
3294 | + | ||
3295 | + | @Callable(gQ) | |
3296 | + | func updateDuckStats (C,kg) = if ((gQ.caller != di)) | |
3281 | 3297 | then throw("Access denied") | |
3282 | - | else | |
3283 | - | ||
3284 | - | ||
3285 | - | ||
3286 | - | @Callable( | |
3287 | - | func updateAccStats (d, | |
3298 | + | else kf(C, kg) | |
3299 | + | ||
3300 | + | ||
3301 | + | ||
3302 | + | @Callable(gQ) | |
3303 | + | func updateAccStats (d,kg) = if (!(containsElement([dk, di, dm], gQ.caller))) | |
3288 | 3304 | then throw("Access denied") | |
3289 | - | else | |
3290 | - | ||
3291 | - | ||
3292 | - | ||
3293 | - | @Callable( | |
3294 | - | func equipDuck ( | |
3295 | - | let | |
3296 | - | if ((size( | |
3305 | + | else kl(d, kg) | |
3306 | + | ||
3307 | + | ||
3308 | + | ||
3309 | + | @Callable(gQ) | |
3310 | + | func equipDuck (nl) = { | |
3311 | + | let ls = lo(gQ) | |
3312 | + | if ((size(gQ.payments) != 0)) | |
3297 | 3313 | then throw("No payments required") | |
3298 | 3314 | else { | |
3299 | - | let d = toString( | |
3300 | - | let | |
3301 | - | if ( | |
3315 | + | let d = toString(gQ.originCaller) | |
3316 | + | let C = valueOrErrorMessage(getString(bN(d)), "You don't have a duck staked") | |
3317 | + | if (kv(C)) | |
3302 | 3318 | then throw("equipDuck_checkTournament") | |
3303 | - | else if ( | |
3319 | + | else if (kw(C)) | |
3304 | 3320 | then throw("equipDuck_checkDelivery") | |
3305 | 3321 | else { | |
3306 | - | let | |
3307 | - | let | |
3308 | - | let | |
3309 | - | let | |
3310 | - | let | |
3311 | - | if ((size( | |
3322 | + | let gD = H(C) | |
3323 | + | let nm = split(valueOrElse(getString(gD), ",;,_,;,_,;,_,;,_,;,_,;,"), "_") | |
3324 | + | let hR = bO(C) | |
3325 | + | let iu = hQ(hR) | |
3326 | + | let lJ = split(nl, "_") | |
3327 | + | if ((size(lJ) != s)) | |
3312 | 3328 | then throw("Wrong equipment string") | |
3313 | 3329 | else { | |
3314 | - | let | |
3315 | - | let | |
3316 | - | let | |
3330 | + | let gF = gs(nm, fD(iu[bq]), true, nil) | |
3331 | + | let gG = split(lJ[r], ";")[1] | |
3332 | + | let as = if ((gG == "")) | |
3317 | 3333 | then 0 | |
3318 | 3334 | else { | |
3319 | - | let | |
3320 | - | if (( | |
3335 | + | let gH = split(gG, ",")[0] | |
3336 | + | if ((gH == "")) | |
3321 | 3337 | then 0 | |
3322 | 3338 | else { | |
3323 | - | let | |
3324 | - | let | |
3325 | - | let | |
3326 | - | if (if (if (if (if (( | |
3339 | + | let fS = split(gH, ":") | |
3340 | + | let dg = fS[0] | |
3341 | + | let gI = fS[1] | |
3342 | + | if (if (if (if (if ((dg == "06")) | |
3327 | 3343 | then true | |
3328 | - | else ( | |
3344 | + | else (dg == "07")) | |
3329 | 3345 | then true | |
3330 | - | else ( | |
3331 | - | then ( | |
3346 | + | else (dg == "08")) | |
3347 | + | then (gI != "") | |
3332 | 3348 | else false) | |
3333 | - | then (parseIntValue( | |
3349 | + | then (parseIntValue(gI) > 0) | |
3334 | 3350 | else false) | |
3335 | - | then parseIntValue(split( | |
3351 | + | then parseIntValue(split(aY[parseIntValue(dg)], "_")[ba]) | |
3336 | 3352 | else 0 | |
3337 | 3353 | } | |
3338 | 3354 | } | |
3339 | - | let | |
3340 | - | let | |
3341 | - | let | |
3342 | - | $Tuple2(([StringEntry( | |
3355 | + | let gn = aq(this, C, as, true) | |
3356 | + | let gJ = gs(lJ, gF, false, gn) | |
3357 | + | let nn = fI(gJ) | |
3358 | + | $Tuple2(([StringEntry(gD, nl), StringEntry(hR, makeString_2C([iu[bn], iu[bo], iu[bp], nn], ":")), StringEntry(N(C), makeString([toString(gn[7]), toString(gn[8]), toString(gn[9]), toString(gn[10]), toString(gn[11])], "_"))] ++ ls), 0) | |
3343 | 3359 | } | |
3344 | 3360 | } | |
3345 | 3361 | } | |
3347 | 3363 | ||
3348 | 3364 | ||
3349 | 3365 | ||
3350 | - | @Callable( | |
3351 | - | func fortificateLand ( | |
3352 | - | let | |
3353 | - | if ((size( | |
3366 | + | @Callable(gQ) | |
3367 | + | func fortificateLand (R,no) = { | |
3368 | + | let ls = lo(gQ) | |
3369 | + | if ((size(gQ.payments) != 0)) | |
3354 | 3370 | then throw("No payments required") | |
3355 | 3371 | else { | |
3356 | - | let d = toString( | |
3357 | - | let | |
3358 | - | let | |
3359 | - | let | |
3360 | - | let | |
3361 | - | let | |
3362 | - | let | |
3363 | - | let | |
3364 | - | let | |
3365 | - | let | |
3366 | - | let | |
3367 | - | let | |
3368 | - | let | |
3369 | - | let | |
3370 | - | let | |
3371 | - | let | |
3372 | - | let | |
3373 | - | let | |
3374 | - | let | |
3375 | - | let | |
3376 | - | let | |
3377 | - | let | |
3378 | - | let | |
3379 | - | let | |
3380 | - | $Tuple2(([StringEntry( | |
3381 | - | } | |
3382 | - | } | |
3383 | - | ||
3384 | - | ||
3385 | - | ||
3386 | - | @Callable( | |
3387 | - | func initDuckTourAttempt ( | |
3372 | + | let d = toString(gQ.originCaller) | |
3373 | + | let C = valueOrElse(getString(bN(d)), "") | |
3374 | + | let fN = aq(this, C, 0, false) | |
3375 | + | let np = bF(R) | |
3376 | + | let nq = split(valueOrElse(getString(np), ":0_15:0_18:0"), "_") | |
3377 | + | let jy = value(assetInfo(fromBase58String(R))) | |
3378 | + | let if = (dN(split(jy.description, "_")[do]) / cL) | |
3379 | + | let ig = valueOrElse(getInteger(bE(R)), 0) | |
3380 | + | let ie = bD(R) | |
3381 | + | let ij = id(ie, if, ig) | |
3382 | + | let nr = split(ij[bi], "_") | |
3383 | + | let ns = parseIntValue(nr[bk]) | |
3384 | + | let nt = parseIntValue(nr[bl]) | |
3385 | + | let nu = split(no, "_") | |
3386 | + | let nv = gz(nq, fD(ij[bh]), ns, nt, true, nil) | |
3387 | + | let gF = nv._1 | |
3388 | + | let nw = nv._2 | |
3389 | + | let nx = nv._3 | |
3390 | + | let ny = gz(nu, gF, nw, nx, false, fN) | |
3391 | + | let gJ = ny._1 | |
3392 | + | let nz = ny._2 | |
3393 | + | let nA = ny._3 | |
3394 | + | let nn = fI(gJ) | |
3395 | + | let ke = makeString([nr[bj], toString(nz), toString(nA), nr[bm]], "_") | |
3396 | + | $Tuple2(([StringEntry(np, no), StringEntry(ie, makeString_2C([ij[be], ij[bf], ij[bg], nn, ke], ":"))] ++ ls), 0) | |
3397 | + | } | |
3398 | + | } | |
3399 | + | ||
3400 | + | ||
3401 | + | ||
3402 | + | @Callable(gQ) | |
3403 | + | func initDuckTourAttempt (C) = if ((gQ.caller != dl)) | |
3388 | 3404 | then throw("Access denied") | |
3389 | 3405 | else { | |
3390 | - | let | |
3391 | - | let | |
3392 | - | let | |
3393 | - | let | |
3394 | - | let | |
3395 | - | let | |
3396 | - | let | |
3397 | - | $Tuple2([IntegerEntry( | |
3406 | + | let jh = B(C) | |
3407 | + | let ji = ak(valueOrElse(getInteger(F(C)), 0)) | |
3408 | + | let kA = valueOrElse(getInteger(jh), ji) | |
3409 | + | let nB = bP(C) | |
3410 | + | let jw = valueOrElse(getString(nB), aN) | |
3411 | + | let ck = valueOrElse(getInteger(dl, bV), 0) | |
3412 | + | let nC = (toString(ck) + "_T_0") | |
3413 | + | $Tuple2([IntegerEntry(L(C), kA), IntegerEntry(jh, ji), StringEntry(M(C), jw), StringEntry(nB, nC)], nC) | |
3398 | 3414 | } | |
3399 | 3415 | ||
3400 | 3416 | ||
3401 | 3417 | ||
3402 | - | @Callable( | |
3418 | + | @Callable(gQ) | |
3403 | 3419 | func breakAttempt () = { | |
3404 | - | let | |
3405 | - | let | |
3406 | - | let | |
3407 | - | let | |
3408 | - | if ((split( | |
3420 | + | let ls = lo(gQ) | |
3421 | + | let C = valueOrErrorMessage(getString(bN(toString(gQ.caller))), "You don't have a duck staked") | |
3422 | + | let nB = bP(C) | |
3423 | + | let jw = valueOrElse(getString(nB), aN) | |
3424 | + | if ((split(jw, "_")[bs] != "T")) | |
3409 | 3425 | then throw("Your duck is not in the tournament") | |
3410 | 3426 | else { | |
3411 | - | let | |
3412 | - | let | |
3413 | - | $Tuple2((( | |
3414 | - | } | |
3415 | - | } | |
3416 | - | ||
3417 | - | ||
3418 | - | ||
3419 | - | @Callable( | |
3420 | - | func exitTournamentInternal ( | |
3427 | + | let kG = getIntegerValue(L(C)) | |
3428 | + | let kH = getStringValue(M(C)) | |
3429 | + | $Tuple2(((ls :+ IntegerEntry(B(C), kG)) :+ StringEntry(nB, kH)), jw) | |
3430 | + | } | |
3431 | + | } | |
3432 | + | ||
3433 | + | ||
3434 | + | ||
3435 | + | @Callable(gQ) | |
3436 | + | func exitTournamentInternal (C) = if ((gQ.caller != this)) | |
3421 | 3437 | then throw("Access denied") | |
3422 | 3438 | else { | |
3423 | - | let | |
3424 | - | let | |
3425 | - | $Tuple2([IntegerEntry( | |
3439 | + | let kG = getIntegerValue(L(C)) | |
3440 | + | let kH = getStringValue(M(C)) | |
3441 | + | $Tuple2([IntegerEntry(B(C), kG), StringEntry(bP(C), kH)], false) | |
3426 | 3442 | } | |
3427 | 3443 | ||
3428 | 3444 | ||
3429 | 3445 | ||
3430 | - | @Callable( | |
3431 | - | func exitDeliveryInternal ( | |
3446 | + | @Callable(gQ) | |
3447 | + | func exitDeliveryInternal (C) = if ((gQ.caller != this)) | |
3432 | 3448 | then throw("Access denied") | |
3433 | 3449 | else { | |
3434 | - | let | |
3435 | - | $Tuple2(( | |
3450 | + | let mo = kx(C, false, 0, 0) | |
3451 | + | $Tuple2((mo._1 ++ mo._2), false) | |
3436 | 3452 | } | |
3437 | 3453 | ||
3438 | 3454 | ||
3439 | 3455 | ||
3440 | - | @Callable( | |
3441 | - | func autoExitDelivery ( | |
3456 | + | @Callable(gQ) | |
3457 | + | func autoExitDelivery (C,jb,nD,ky) = if ((gQ.caller != this)) | |
3442 | 3458 | then throw("Access denied") | |
3443 | 3459 | else { | |
3444 | - | let | |
3445 | - | $Tuple2( | |
3460 | + | let mo = kx(C, true, jb, ky) | |
3461 | + | $Tuple2(mo._1, $Tuple2(mo._3, mo._4)) | |
3446 | 3462 | } | |
3447 | 3463 | ||
3448 | 3464 | ||
3449 | 3465 | ||
3450 | - | @Callable( | |
3451 | - | func prepareRobbery ( | |
3452 | - | let | |
3453 | - | if (!(sigVerify_8Kb( | |
3466 | + | @Callable(gQ) | |
3467 | + | func prepareRobbery (iW,iX) = { | |
3468 | + | let ls = lo(gQ) | |
3469 | + | if (!(sigVerify_8Kb(iW, iX, ef))) | |
3454 | 3470 | then throw("signature does not match") | |
3455 | - | else if ((size( | |
3471 | + | else if ((size(gQ.payments) != 1)) | |
3456 | 3472 | then throw("exactly 1 payment must be attached") | |
3457 | 3473 | else { | |
3458 | - | let | |
3459 | - | let | |
3460 | - | if (if (!(isDefined( | |
3474 | + | let lt = gQ.payments[0] | |
3475 | + | let nE = lt.amount | |
3476 | + | if (if (!(isDefined(lt.assetId))) | |
3461 | 3477 | then true | |
3462 | - | else (value( | |
3478 | + | else (value(lt.assetId) != ds)) | |
3463 | 3479 | then throw("WLGOLD payments only!") | |
3464 | 3480 | else { | |
3465 | - | let | |
3466 | - | if ((size( | |
3481 | + | let fv = split(toUtf8String(iW), "|") | |
3482 | + | if ((size(fv) != 2)) | |
3467 | 3483 | then throw("Wrong message format") | |
3468 | 3484 | else { | |
3469 | - | let | |
3470 | - | if ( | |
3485 | + | let C = fv[0] | |
3486 | + | if (kv(C)) | |
3471 | 3487 | then throw("prepareRobbery_checkTournament") | |
3472 | - | else if ( | |
3488 | + | else if (kw(C)) | |
3473 | 3489 | then throw("prepareRobbery_checkDelivery") | |
3474 | 3490 | else { | |
3475 | - | let | |
3476 | - | if (( | |
3477 | - | then throw(((("Payment " + toString( | |
3491 | + | let aC = ay(this, C)._1 | |
3492 | + | if ((aC > nE)) | |
3493 | + | then throw(((("Payment " + toString(nE)) + " < required ") + toString(aC))) | |
3478 | 3494 | else { | |
3479 | - | let | |
3480 | - | let | |
3481 | - | let | |
3482 | - | let | |
3483 | - | let | |
3484 | - | if (if (( | |
3485 | - | then ( | |
3495 | + | let nF = split(fv[1], "_") | |
3496 | + | let aB = lastBlock.timestamp | |
3497 | + | let aD = valueOrElse(getInteger(T(C)), 0) | |
3498 | + | let aE = valueOrElse(getString(U(C)), "") | |
3499 | + | let aF = valueOrElse(getInteger(S(aE)), 0) | |
3500 | + | if (if ((aD != z)) | |
3501 | + | then (aF > aB) | |
3486 | 3502 | else false) | |
3487 | - | then throw(("You already started robbing, wait till " + toString( | |
3503 | + | then throw(("You already started robbing, wait till " + toString(aF))) | |
3488 | 3504 | else { | |
3489 | - | func | |
3490 | - | let | |
3491 | - | let | |
3492 | - | if (( | |
3505 | + | func nG (eX,R) = { | |
3506 | + | let nH = valueOrElse(getInteger(Q(R)), 0) | |
3507 | + | let nI = valueOrElse(getInteger(S(R)), 0) | |
3508 | + | if ((nH > size(w))) | |
3493 | 3509 | then throw("Invalid state") | |
3494 | - | else if (( | |
3510 | + | else if ((aB > nI)) | |
3495 | 3511 | then { | |
3496 | - | let | |
3497 | - | if ((0 >= | |
3498 | - | then | |
3512 | + | let nJ = valueOrElse(getInteger(bx(R)), 0) | |
3513 | + | if ((0 >= nJ)) | |
3514 | + | then eX | |
3499 | 3515 | else { | |
3500 | - | let | |
3501 | - | let | |
3502 | - | let | |
3503 | - | let | |
3504 | - | let | |
3505 | - | let | |
3506 | - | if (( | |
3507 | - | then | |
3508 | - | else ( | |
3516 | + | let gx = value(assetInfo(fromBase58String(R))) | |
3517 | + | let jC = split(gx.description, "_") | |
3518 | + | let jo = dN(jC[do]) | |
3519 | + | let nK = jn(R, jo) | |
3520 | + | let gW = (aB - nJ) | |
3521 | + | let jF = fraction(gW, (nK * jo), a) | |
3522 | + | if ((x > jF)) | |
3523 | + | then eX | |
3524 | + | else (eX :+ R) | |
3509 | 3525 | } | |
3510 | 3526 | } | |
3511 | - | else | |
3527 | + | else eX | |
3512 | 3528 | } | |
3513 | 3529 | ||
3514 | - | let | |
3515 | - | let | |
3516 | - | let | |
3517 | - | let | |
3518 | - | func | |
3519 | - | then | |
3520 | - | else | |
3521 | - | ||
3522 | - | func | |
3523 | - | then | |
3530 | + | let nL = { | |
3531 | + | let eZ = nF | |
3532 | + | let fa = size(eZ) | |
3533 | + | let fb = nil | |
3534 | + | func fc (fd,fe) = if ((fe >= fa)) | |
3535 | + | then fd | |
3536 | + | else nG(fd, eZ[fe]) | |
3537 | + | ||
3538 | + | func ff (fd,fe) = if ((fe >= fa)) | |
3539 | + | then fd | |
3524 | 3540 | else throw("List size exceeds 10") | |
3525 | 3541 | ||
3526 | - | | |
3542 | + | ff(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fb, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
3527 | 3543 | } | |
3528 | - | if ((size( | |
3544 | + | if ((size(nL) == 0)) | |
3529 | 3545 | then throw("No candidates for robbery") | |
3530 | 3546 | else { | |
3531 | - | let | |
3532 | - | let | |
3533 | - | $Tuple2(([IntegerEntry( | |
3547 | + | let nM = dX(size(nL), height, (iX + gQ.transactionId)) | |
3548 | + | let R = nL[nM] | |
3549 | + | $Tuple2(([IntegerEntry(Q(R), y), IntegerEntry(S(R), (aB + w[y])), IntegerEntry(T(C), A), StringEntry(U(C), R)] ++ ls), R) | |
3534 | 3550 | } | |
3535 | 3551 | } | |
3536 | 3552 | } | |
3542 | 3558 | ||
3543 | 3559 | ||
3544 | 3560 | ||
3545 | - | @Callable( | |
3546 | - | func robLand ( | |
3547 | - | let | |
3548 | - | if (!(sigVerify_8Kb( | |
3561 | + | @Callable(gQ) | |
3562 | + | func robLand (iW,iX) = { | |
3563 | + | let ls = lo(gQ) | |
3564 | + | if (!(sigVerify_8Kb(iW, iX, ef))) | |
3549 | 3565 | then throw("signature does not match") | |
3550 | 3566 | else { | |
3551 | - | let | |
3552 | - | let | |
3553 | - | let | |
3554 | - | $Tuple2(( | |
3555 | - | } | |
3556 | - | } | |
3557 | - | ||
3558 | - | ||
3559 | - | ||
3560 | - | @Callable( | |
3561 | - | func acceptDelivery () = if (!( | |
3567 | + | let bR = toString(gQ.caller) | |
3568 | + | let C = valueOrErrorMessage(getString(bN(bR)), "You don't have a duck staked") | |
3569 | + | let aB = lastBlock.timestamp | |
3570 | + | $Tuple2((ls :+ IntegerEntry(O(C), aB)), 0) | |
3571 | + | } | |
3572 | + | } | |
3573 | + | ||
3574 | + | ||
3575 | + | ||
3576 | + | @Callable(gQ) | |
3577 | + | func acceptDelivery () = if (!(cB)) | |
3562 | 3578 | then throw("Delivery feature is turned off!") | |
3563 | 3579 | else { | |
3564 | - | let | |
3565 | - | let | |
3566 | - | let | |
3567 | - | let | |
3568 | - | let | |
3569 | - | if (( | |
3570 | - | then throw(((("Delivery is not available, fund=" + | |
3580 | + | let ls = lo(gQ) | |
3581 | + | let bR = toString(gQ.caller) | |
3582 | + | let C = valueOrErrorMessage(getString(bN(bR)), "You don't have a duck staked") | |
3583 | + | let nN = valueOrElse(getInteger(di, bT), 0) | |
3584 | + | let kE = valueOrElse(getInteger(di, bU), 0) | |
3585 | + | if ((aQ > (nN - kE))) | |
3586 | + | then throw(((("Delivery is not available, fund=" + dS(nN, 6)) + ", locked=") + dS(kE, 6))) | |
3571 | 3587 | else { | |
3572 | - | let ay = lastBlock.timestamp | |
3573 | - | let nI = valueOrElse(getInteger(U(B)), 0) | |
3574 | - | if ((nI > ay)) | |
3575 | - | then throw(("Delivery is forbidden for your duck until " + toString(nI))) | |
3576 | - | else if (kq(B)) | |
3577 | - | then throw("acceptDelivery_checkTournament") | |
3578 | - | else if (kr(B)) | |
3579 | - | then throw("acceptDelivery_checkDelivery") | |
3580 | - | else { | |
3581 | - | let nJ = dA(invoke(dd, "updateDeliveryLocked", [(ky + aN)], nil)) | |
3582 | - | let jc = A(B) | |
3583 | - | let jd = ah(valueOrElse(getInteger(E(B)), 0)) | |
3584 | - | let kv = valueOrElse(getInteger(jc), jd) | |
3585 | - | let nv = bK(B) | |
3586 | - | let jr = valueOrElse(getString(nv), aK) | |
3587 | - | let nK = (toString(ay) + "_D_0") | |
3588 | - | $Tuple2(([IntegerEntry(K(B), kv), IntegerEntry(jc, jd), StringEntry(L(B), jr), StringEntry(nv, nK)] ++ lm), $Tuple2(nK, nJ)) | |
3589 | - | } | |
3588 | + | let aB = lastBlock.timestamp | |
3589 | + | let nO = valueOrElse(getInteger(V(C)), 0) | |
3590 | + | if ((nO > aB)) | |
3591 | + | then throw(("Delivery is forbidden for your duck until " + toString(nO))) | |
3592 | + | else { | |
3593 | + | let fX = valueOrElse(getInteger(W(bR)), 0) | |
3594 | + | let nP = valueOrElse(getInteger(X(bR)), 0) | |
3595 | + | let nQ = (aB / a) | |
3596 | + | let nR = valueOrElse(getInteger(dm, e(bR)), 0) | |
3597 | + | let nS = (aS + (nR / aT)) | |
3598 | + | if (if ((fX >= nS)) | |
3599 | + | then (nP >= nQ) | |
3600 | + | else false) | |
3601 | + | then throw((("You already used " + toString(nS)) + " delivery attempts for today")) | |
3602 | + | else if (kv(C)) | |
3603 | + | then throw("acceptDelivery_checkTournament") | |
3604 | + | else if (kw(C)) | |
3605 | + | then throw("acceptDelivery_checkDelivery") | |
3606 | + | else { | |
3607 | + | let nT = dF(invoke(di, "updateDeliveryLocked", [(kE + aQ)], nil)) | |
3608 | + | let jh = B(C) | |
3609 | + | let ji = ak(valueOrElse(getInteger(F(C)), 0)) | |
3610 | + | let kA = valueOrElse(getInteger(jh), ji) | |
3611 | + | let nB = bP(C) | |
3612 | + | let jw = valueOrElse(getString(nB), aN) | |
3613 | + | let nU = (toString(aB) + "_D_0") | |
3614 | + | $Tuple2(([IntegerEntry(L(C), kA), IntegerEntry(jh, ji), StringEntry(M(C), jw), StringEntry(nB, nU)] ++ ls), $Tuple2(nU, nT)) | |
3615 | + | } | |
3616 | + | } | |
3590 | 3617 | } | |
3591 | 3618 | } | |
3592 | 3619 |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 6 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | let a = 86400000 | |
5 | 5 | ||
6 | 6 | let b = 60000 | |
7 | 7 | ||
8 | 8 | func c (d) = ("lastArbTimeUser_" + d) | |
9 | 9 | ||
10 | 10 | ||
11 | - | let e = 100000000 | |
12 | - | ||
13 | - | let f = 3200 | |
14 | - | ||
15 | - | let g = 4000 | |
16 | - | ||
17 | - | let h = 3 | |
18 | - | ||
19 | - | let i = 100000000 | |
20 | - | ||
21 | - | let j = 400 | |
22 | - | ||
23 | - | let k = ["Strength", "Accuracy", "Intellect", "Endurance", "Dexterity", "Level", "Health"] | |
24 | - | ||
25 | - | let l = 0 | |
26 | - | ||
27 | - | let m = 1 | |
28 | - | ||
29 | - | let n = 2 | |
30 | - | ||
31 | - | let o = 3 | |
32 | - | ||
33 | - | let p = 4 | |
34 | - | ||
35 | - | let q = 0 | |
36 | - | ||
37 | - | let r = 6 | |
38 | - | ||
39 | - | let s = 2 | |
11 | + | func e (d) = ("acresStakedAmountByUser_" + d) | |
12 | + | ||
13 | + | ||
14 | + | let f = 100000000 | |
15 | + | ||
16 | + | let g = 3200 | |
17 | + | ||
18 | + | let h = 4000 | |
19 | + | ||
20 | + | let i = 3 | |
21 | + | ||
22 | + | let j = 100000000 | |
23 | + | ||
24 | + | let k = 400 | |
25 | + | ||
26 | + | let l = ["Strength", "Accuracy", "Intellect", "Endurance", "Dexterity", "Level", "Health"] | |
27 | + | ||
28 | + | let m = 0 | |
29 | + | ||
30 | + | let n = 1 | |
31 | + | ||
32 | + | let o = 2 | |
33 | + | ||
34 | + | let p = 3 | |
35 | + | ||
36 | + | let q = 4 | |
37 | + | ||
38 | + | let r = 0 | |
39 | + | ||
40 | + | let s = 6 | |
40 | 41 | ||
41 | 42 | let t = 2 | |
42 | 43 | ||
43 | - | let u = 30 | |
44 | - | ||
45 | - | let v = [0, 600000, 900000, 43200000, 21600000] | |
46 | - | ||
47 | - | let w = 20000000 | |
48 | - | ||
49 | - | let x = 1 | |
50 | - | ||
51 | - | let y = 0 | |
52 | - | ||
53 | - | let z = 1 | |
54 | - | ||
55 | - | func A (B) = ("duckHealth_" + B) | |
56 | - | ||
57 | - | ||
58 | - | func C (B) = ("duckChars_" + B) | |
59 | - | ||
60 | - | ||
61 | - | func D (B) = ("duckXP_" + B) | |
62 | - | ||
63 | - | ||
64 | - | func E (B) = ("duckLevel_" + B) | |
65 | - | ||
66 | - | ||
67 | - | func F (B) = ("duckFreePoints_" + B) | |
68 | - | ||
69 | - | ||
70 | - | func G (B) = ("duckEquipment_" + B) | |
71 | - | ||
72 | - | ||
73 | - | func H (d) = ("userXP_" + d) | |
74 | - | ||
75 | - | ||
76 | - | func I (d) = ("userLevel_" + d) | |
77 | - | ||
78 | - | ||
79 | - | func J (d) = ("userFreePoints_" + d) | |
80 | - | ||
81 | - | ||
82 | - | func K (B) = ("savedHealth_" + B) | |
83 | - | ||
84 | - | ||
85 | - | func L (B) = ("savedLocation_" + B) | |
86 | - | ||
87 | - | ||
88 | - | func M (B) = ("duckBuffs_" + B) | |
89 | - | ||
90 | - | ||
91 | - | func N (B) = ("lastRobberyTime_" + B) | |
92 | - | ||
93 | - | ||
94 | - | func O (B) = ("lastRobberyCost_" + B) | |
95 | - | ||
96 | - | ||
97 | - | func P (Q) = ("landRobberyState_" + Q) | |
98 | - | ||
99 | - | ||
100 | - | func R (Q) = ("landCooldownETA_" + Q) | |
101 | - | ||
102 | - | ||
103 | - | func S (B) = ("duckRobberyState_" + B) | |
104 | - | ||
105 | - | ||
106 | - | func T (B) = ("lockedLandByDuck_" + B) | |
107 | - | ||
108 | - | ||
109 | - | func U (B) = ("deliveryDelayByDuck_" + B) | |
110 | - | ||
111 | - | ||
112 | - | let V = 10000 | |
113 | - | ||
114 | - | let W = 10000 | |
115 | - | ||
116 | - | let X = 2000 | |
117 | - | ||
118 | - | let Y = 100000 | |
119 | - | ||
120 | - | let Z = 1000000 | |
121 | - | ||
122 | - | let aa = 5000000 | |
123 | - | ||
124 | - | let ab = 10000 | |
44 | + | let u = 2 | |
45 | + | ||
46 | + | let v = 30 | |
47 | + | ||
48 | + | let w = [0, 600000, 900000, 43200000, 21600000] | |
49 | + | ||
50 | + | let x = 20000000 | |
51 | + | ||
52 | + | let y = 1 | |
53 | + | ||
54 | + | let z = 0 | |
55 | + | ||
56 | + | let A = 1 | |
57 | + | ||
58 | + | func B (C) = ("duckHealth_" + C) | |
59 | + | ||
60 | + | ||
61 | + | func D (C) = ("duckChars_" + C) | |
62 | + | ||
63 | + | ||
64 | + | func E (C) = ("duckXP_" + C) | |
65 | + | ||
66 | + | ||
67 | + | func F (C) = ("duckLevel_" + C) | |
68 | + | ||
69 | + | ||
70 | + | func G (C) = ("duckFreePoints_" + C) | |
71 | + | ||
72 | + | ||
73 | + | func H (C) = ("duckEquipment_" + C) | |
74 | + | ||
75 | + | ||
76 | + | func I (d) = ("userXP_" + d) | |
77 | + | ||
78 | + | ||
79 | + | func J (d) = ("userLevel_" + d) | |
80 | + | ||
81 | + | ||
82 | + | func K (d) = ("userFreePoints_" + d) | |
83 | + | ||
84 | + | ||
85 | + | func L (C) = ("savedHealth_" + C) | |
86 | + | ||
87 | + | ||
88 | + | func M (C) = ("savedLocation_" + C) | |
89 | + | ||
90 | + | ||
91 | + | func N (C) = ("duckBuffs_" + C) | |
92 | + | ||
93 | + | ||
94 | + | func O (C) = ("lastRobberyTime_" + C) | |
95 | + | ||
96 | + | ||
97 | + | func P (C) = ("lastRobberyCost_" + C) | |
98 | + | ||
99 | + | ||
100 | + | func Q (R) = ("landRobberyState_" + R) | |
101 | + | ||
102 | + | ||
103 | + | func S (R) = ("landCooldownETA_" + R) | |
104 | + | ||
105 | + | ||
106 | + | func T (C) = ("duckRobberyState_" + C) | |
107 | + | ||
108 | + | ||
109 | + | func U (C) = ("lockedLandByDuck_" + C) | |
110 | + | ||
111 | + | ||
112 | + | func V (C) = ("deliveryDelayByDuck_" + C) | |
113 | + | ||
114 | + | ||
115 | + | func W (d) = ("userDeliverycount_" + d) | |
116 | + | ||
117 | + | ||
118 | + | func X (d) = ("userLastDeliveryDay_" + d) | |
119 | + | ||
120 | + | ||
121 | + | let Y = 10000 | |
122 | + | ||
123 | + | let Z = 10000 | |
124 | + | ||
125 | + | let aa = 2000 | |
126 | + | ||
127 | + | let ab = 100000 | |
125 | 128 | ||
126 | 129 | let ac = 1000000 | |
127 | 130 | ||
128 | - | let ad = | |
131 | + | let ad = 5000000 | |
129 | 132 | ||
130 | 133 | let ae = 10000 | |
131 | 134 | ||
132 | - | ||
133 | - | ||
134 | - | ||
135 | - | ||
136 | - | ||
137 | - | ||
138 | - | func | |
139 | - | ||
140 | - | ||
141 | - | ||
142 | - | ||
143 | - | ||
144 | - | func | |
145 | - | let | |
146 | - | ||
147 | - | | |
148 | - | ||
149 | - | ||
150 | - | ||
151 | - | | |
152 | - | | |
153 | - | ||
154 | - | ||
155 | - | ||
156 | - | | |
157 | - | | |
158 | - | | |
159 | - | ||
160 | - | ||
161 | - | ||
162 | - | let | |
163 | - | | |
164 | - | | |
165 | - | ||
166 | - | ||
167 | - | let | |
168 | - | ||
169 | - | ||
170 | - | ||
171 | - | ||
172 | - | ||
173 | - | let aG = | |
174 | - | ||
175 | - | let aH = | |
176 | - | ||
177 | - | let aI = | |
178 | - | ||
179 | - | let aJ = | |
180 | - | ||
181 | - | let aK = | |
182 | - | ||
183 | - | let aL = | |
184 | - | ||
185 | - | let aM = | |
186 | - | ||
187 | - | let aN = | |
188 | - | ||
189 | - | let aO = | |
190 | - | ||
191 | - | let aP = | |
192 | - | ||
193 | - | let aQ = | |
194 | - | ||
195 | - | let aR = | |
196 | - | ||
197 | - | let aS = | |
198 | - | ||
199 | - | let aT = | |
200 | - | ||
201 | - | let aU = | |
202 | - | ||
203 | - | let aV = | |
204 | - | ||
205 | - | let aW = | |
206 | - | ||
207 | - | let aX = | |
208 | - | ||
209 | - | let aY = 10 | |
210 | - | ||
211 | - | let aZ = | |
212 | - | ||
213 | - | let ba = | |
214 | - | ||
215 | - | let bb = | |
216 | - | ||
217 | - | let bc = | |
218 | - | ||
219 | - | let bd = | |
135 | + | let af = 1000000 | |
136 | + | ||
137 | + | let ag = 1000000 | |
138 | + | ||
139 | + | let ah = 10000 | |
140 | + | ||
141 | + | func ai (aj) = fraction(g, pow(aj, 4, h, 4, 4, DOWN), f) | |
142 | + | ||
143 | + | ||
144 | + | func ak (al) = (100 + al) | |
145 | + | ||
146 | + | ||
147 | + | func am (an,ao) = { | |
148 | + | let ap = ai(ao) | |
149 | + | [ap, (i * (ap - an))] | |
150 | + | } | |
151 | + | ||
152 | + | ||
153 | + | func aq (ar,C,as,at) = { | |
154 | + | let au = split(valueOrElse(getString(ar, D(C)), "0_0_0_0_0"), "_") | |
155 | + | let av = valueOrElse(getInteger(ar, F(C)), 0) | |
156 | + | let aw = valueOrElse(getInteger(ar, B(C)), ak(av)) | |
157 | + | let ax = split(valueOrElse(getString(ar, N(C)), "0_0_0_0_0"), "_") | |
158 | + | ([parseIntValue(au[m]), parseIntValue(au[n]), parseIntValue(au[o]), parseIntValue(au[p]), parseIntValue(au[q]), av, aw] ++ (if (at) | |
159 | + | then [as, as, as, as, as] | |
160 | + | else [parseIntValue(ax[m]), parseIntValue(ax[n]), parseIntValue(ax[o]), parseIntValue(ax[p]), parseIntValue(ax[q])])) | |
161 | + | } | |
162 | + | ||
163 | + | ||
164 | + | func ay (ar,C) = { | |
165 | + | let az = valueOrElse(getInteger(ar, P(C)), 0) | |
166 | + | let aA = valueOrElse(getInteger(ar, O(C)), 0) | |
167 | + | let aB = lastBlock.timestamp | |
168 | + | let aC = max([j, (az - (k * (aB - aA)))]) | |
169 | + | let aD = valueOrElse(getInteger(ar, T(C)), 0) | |
170 | + | let aE = valueOrElse(getString(ar, U(C)), "") | |
171 | + | let aF = valueOrElse(getInteger(ar, S(aE)), 0) | |
172 | + | $Tuple5(aC, aA, aD, aE, aF) | |
173 | + | } | |
174 | + | ||
175 | + | ||
176 | + | let aG = "LAND" | |
177 | + | ||
178 | + | let aH = "DUCK" | |
179 | + | ||
180 | + | let aI = "PRESALE" | |
181 | + | ||
182 | + | let aJ = 6 | |
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 = 3 | |
201 | + | ||
202 | + | let aT = 20000000 | |
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 | |
219 | + | ||
220 | + | let bc = 10 | |
221 | + | ||
222 | + | let bd = 10 | |
220 | 223 | ||
221 | 224 | let be = 0 | |
222 | 225 | ||
223 | 226 | let bf = 1 | |
224 | 227 | ||
225 | 228 | let bg = 2 | |
226 | 229 | ||
227 | 230 | let bh = 3 | |
228 | 231 | ||
229 | - | let bi = 0 | |
230 | - | ||
231 | - | let bj = 1 | |
232 | - | ||
233 | - | let bk = 2 | |
234 | - | ||
235 | - | let bl = 3 | |
236 | - | ||
237 | - | let bm = 0 | |
238 | - | ||
239 | - | let bn = 1 | |
240 | - | ||
241 | - | let bo = 2 | |
242 | - | ||
243 | - | func bp (bq) = ("no_" + bq) | |
244 | - | ||
245 | - | ||
246 | - | func br (bq) = ("lcna_" + bq) | |
247 | - | ||
248 | - | ||
249 | - | func bs (bq) = ("st_" + bq) | |
250 | - | ||
251 | - | ||
252 | - | func bt (bu,bq) = makeString(["las", bu, bq], "_") | |
253 | - | ||
254 | - | ||
255 | - | func bv (bw,bq,bx) = ((((("sttao_" + bw) + "_") + bq) + "_") + bx) | |
256 | - | ||
257 | - | ||
258 | - | func by (Q) = ("wh_" + Q) | |
259 | - | ||
260 | - | ||
261 | - | func bz (bq) = ("infraLevel_" + bq) | |
262 | - | ||
263 | - | ||
264 | - | func bA (Q) = ("fortifications_" + Q) | |
265 | - | ||
266 | - | ||
267 | - | func bB (bq) = ("duckCustomNameByAssetId_" + bq) | |
268 | - | ||
269 | - | ||
270 | - | func bC (d) = ("accountCustomNameByAddr_" + d) | |
271 | - | ||
272 | - | ||
273 | - | func bD (d) = ("accRefBy_" + d) | |
274 | - | ||
275 | - | ||
276 | - | func bE (B) = ("onboardArtActivatedOnDuck_" + B) | |
277 | - | ||
278 | - | ||
279 | - | func bF (d) = ("onboardArtActivatedDuckBy_" + d) | |
280 | - | ||
281 | - | ||
282 | - | func bG (d) = ("accReferrals_" + d) | |
283 | - | ||
284 | - | ||
285 | - | func bH (bq) = ("duckOwner_" + bq) | |
286 | - | ||
287 | - | ||
288 | - | func bI (bx) = ("stakedDuckByOwner_" + bx) | |
289 | - | ||
290 | - | ||
291 | - | func bJ (B) = ("backPack_" + B) | |
292 | - | ||
293 | - | ||
294 | - | func bK (B) = ("duckLocation_" + B) | |
295 | - | ||
296 | - | ||
297 | - | func bL (bM) = ("%s%s__userGwlReleaseTime__" + bM) | |
298 | - | ||
299 | - | ||
300 | - | func bN () = "emergencyWarehouseProducts" | |
301 | - | ||
302 | - | ||
303 | - | let bO = "deliveryFund" | |
304 | - | ||
305 | - | let bP = "deliveryLocked" | |
306 | - | ||
307 | - | let bQ = "%s__lastTourId" | |
308 | - | ||
309 | - | func bR (bS) = ("%s%d__tourStaticData__" + toString(bS)) | |
310 | - | ||
311 | - | ||
312 | - | func bT (bS) = ("%s%d__tourDynamicData__" + toString(bS)) | |
313 | - | ||
314 | - | ||
315 | - | func bU (bS,B) = makeString(["%s%d%s__bestResultByTourAndDuck", toString(bS), B], "__") | |
316 | - | ||
317 | - | ||
318 | - | let bV = 0 | |
319 | - | ||
320 | - | let bW = 1 | |
321 | - | ||
322 | - | let bX = 6 | |
323 | - | ||
324 | - | let bY = 1 | |
325 | - | ||
326 | - | func bZ (ca,bS) = { | |
327 | - | let cb = split(valueOrErrorMessage(getString(ca, bR(bS)), (("Error reading tournament " + toString(bS)) + " data")), "__") | |
328 | - | let cc = split_4C(valueOrErrorMessage(getString(ca, bT(bS)), (("Error reading tournament " + toString(bS)) + " data")), "__") | |
329 | - | [cb, cc] | |
330 | - | } | |
331 | - | ||
332 | - | ||
333 | - | func cd (ca,ce) = { | |
334 | - | let cf = valueOrElse(getInteger(ca, bQ), 0) | |
335 | - | let cg = split(ce, "_") | |
336 | - | let ay = lastBlock.timestamp | |
337 | - | let ch = bZ(ca, cf) | |
338 | - | let cb = ch[bV] | |
339 | - | let cc = ch[bW] | |
340 | - | if (if (if ((cg[bn] == "T")) | |
341 | - | then (parseIntValue(cg[bm]) == cf) | |
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 (R) = ("wh_" + R) | |
272 | + | ||
273 | + | ||
274 | + | func bE (bv) = ("infraLevel_" + bv) | |
275 | + | ||
276 | + | ||
277 | + | func bF (R) = ("fortifications_" + R) | |
278 | + | ||
279 | + | ||
280 | + | func bG (bv) = ("duckCustomNameByAssetId_" + bv) | |
281 | + | ||
282 | + | ||
283 | + | func bH (d) = ("accountCustomNameByAddr_" + d) | |
284 | + | ||
285 | + | ||
286 | + | func bI (d) = ("accRefBy_" + d) | |
287 | + | ||
288 | + | ||
289 | + | func bJ (C) = ("onboardArtActivatedOnDuck_" + C) | |
290 | + | ||
291 | + | ||
292 | + | func bK (d) = ("onboardArtActivatedDuckBy_" + d) | |
293 | + | ||
294 | + | ||
295 | + | func bL (d) = ("accReferrals_" + d) | |
296 | + | ||
297 | + | ||
298 | + | func bM (bv) = ("duckOwner_" + bv) | |
299 | + | ||
300 | + | ||
301 | + | func bN (bC) = ("stakedDuckByOwner_" + bC) | |
302 | + | ||
303 | + | ||
304 | + | func bO (C) = ("backPack_" + C) | |
305 | + | ||
306 | + | ||
307 | + | func bP (C) = ("duckLocation_" + C) | |
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,C) = makeString(["%s%d%s__bestResultByTourAndDuck", toString(bX), C], "__") | |
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, "_") | |
349 | + | let aB = 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) | |
342 | 355 | else false) | |
343 | - | then ( | |
356 | + | then (ch[cd] == "INPROGRESS") | |
344 | 357 | else false) | |
345 | - | then (parseIntValue( | |
358 | + | then (parseIntValue(cg[cc]) > aB) | |
346 | 359 | else false | |
347 | 360 | } | |
348 | 361 | ||
349 | 362 | ||
350 | - | func | |
351 | - | let | |
352 | - | let | |
353 | - | let | |
354 | - | let | |
355 | - | if (if (( | |
356 | - | then (( | |
363 | + | func cn (cj) = { | |
364 | + | let cl = split(cj, "_") | |
365 | + | let aB = lastBlock.timestamp | |
366 | + | let co = parseIntValue(cl[br]) | |
367 | + | let cp = parseIntValue(cl[bt]) | |
368 | + | if (if ((cl[bs] == "D")) | |
369 | + | then ((co + aR) > aB) | |
357 | 370 | else false) | |
358 | - | then (3 >= | |
371 | + | then (3 >= cp) | |
359 | 372 | else false | |
360 | 373 | } | |
361 | 374 | ||
362 | 375 | ||
363 | - | func | |
364 | - | let | |
365 | - | if (( | |
366 | - | then ( | |
376 | + | func cq (cj) = { | |
377 | + | let cr = split(cj, "_")[bs] | |
378 | + | if ((cr != "T")) | |
379 | + | then (cr != "D") | |
367 | 380 | else false | |
368 | 381 | } | |
369 | 382 | ||
370 | 383 | ||
371 | - | func | |
372 | - | let | |
373 | - | let | |
374 | - | let | |
375 | - | let | |
376 | - | let | |
377 | - | let | |
378 | - | let | |
379 | - | if (( | |
384 | + | func cs (cf,cj) = { | |
385 | + | let ck = valueOrElse(getInteger(cf, bV), 0) | |
386 | + | let cl = split(cj, "_") | |
387 | + | let aB = 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")) | |
380 | 393 | then true | |
381 | - | else if (if (if (( | |
382 | - | then (parseIntValue( | |
394 | + | else if (if (if ((cl[bs] == "T")) | |
395 | + | then (parseIntValue(cl[br]) == ck) | |
383 | 396 | else false) | |
384 | - | then ( | |
397 | + | then (ch[cd] == "INPROGRESS") | |
385 | 398 | else false) | |
386 | - | then (parseIntValue( | |
399 | + | then (parseIntValue(cg[cc]) > aB) | |
387 | 400 | else false | |
388 | 401 | } | |
389 | 402 | ||
390 | 403 | ||
391 | - | func | |
392 | - | ||
393 | - | ||
394 | - | func | |
395 | - | ||
396 | - | ||
397 | - | let | |
398 | - | ||
399 | - | let | |
400 | - | ||
401 | - | let | |
402 | - | ||
403 | - | let | |
404 | - | ||
405 | - | let | |
406 | - | let | |
407 | - | if ((base58'2W' == | |
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 | + | ||
409 | + | ||
410 | + | let cz = false | |
411 | + | ||
412 | + | let cA = false | |
413 | + | ||
414 | + | let cB = true | |
415 | + | ||
416 | + | let cC = take(drop(this.bytes, 1), 1) | |
417 | + | ||
418 | + | let cD = { | |
419 | + | let cE = cC | |
420 | + | if ((base58'2W' == cE)) | |
408 | 421 | then base58'9wc3LXNA4TEBsXyKtoLE9mrbDD7WMHXvXrCjZvabLAsi' | |
409 | - | else if ((base58'2T' == | |
422 | + | else if ((base58'2T' == cE)) | |
410 | 423 | then base58'6mWwf9mZBjVgkC54idpyaZLQfAosD914wT8fGf2iiY63' | |
411 | 424 | else throw("Unknown chain") | |
412 | 425 | } | |
413 | 426 | ||
414 | - | let | |
415 | - | let | |
416 | - | if ((base58'2W' == | |
427 | + | let cF = { | |
428 | + | let cE = cC | |
429 | + | if ((base58'2W' == cE)) | |
417 | 430 | then "3PQCuvFbvh4LkPUnrnU1z3jnbA1p9m3WNhv" | |
418 | - | else if ((base58'2T' == | |
431 | + | else if ((base58'2T' == cE)) | |
419 | 432 | then "3MumkGGztCKAXpWDqxkddofqXSUbqQkvSJy" | |
420 | 433 | else throw("Unknown chain") | |
421 | 434 | } | |
422 | 435 | ||
423 | - | let | |
424 | - | let | |
425 | - | if ((base58'2W' == | |
436 | + | let cG = { | |
437 | + | let cE = cC | |
438 | + | if ((base58'2W' == cE)) | |
426 | 439 | then 10000000000 | |
427 | - | else if ((base58'2T' == | |
440 | + | else if ((base58'2T' == cE)) | |
428 | 441 | then 100000000 | |
429 | 442 | else throw("Unknown chain") | |
430 | 443 | } | |
431 | 444 | ||
432 | - | let | |
433 | - | let | |
434 | - | if ((base58'2W' == | |
445 | + | let cH = { | |
446 | + | let cE = cC | |
447 | + | if ((base58'2W' == cE)) | |
435 | 448 | then 86400000 | |
436 | - | else if ((base58'2T' == | |
449 | + | else if ((base58'2T' == cE)) | |
437 | 450 | then 60000 | |
438 | 451 | else throw("Unknown chain") | |
439 | 452 | } | |
440 | 453 | ||
441 | - | let | |
442 | - | ||
443 | - | let | |
444 | - | ||
445 | - | let | |
446 | - | ||
447 | - | let | |
448 | - | ||
449 | - | let | |
450 | - | ||
451 | - | let | |
452 | - | ||
453 | - | let | |
454 | - | ||
455 | - | let | |
456 | - | ||
457 | - | let | |
458 | - | ||
459 | - | func | |
460 | - | ||
461 | - | ||
462 | - | let | |
463 | - | ||
464 | - | let | |
465 | - | ||
466 | - | let | |
467 | - | ||
468 | - | let | |
469 | - | ||
470 | - | let | |
471 | - | ||
472 | - | let | |
473 | - | ||
474 | - | func | |
475 | - | ||
476 | - | ||
477 | - | func | |
478 | - | ||
479 | - | ||
480 | - | func | |
481 | - | ||
482 | - | ||
483 | - | func | |
484 | - | ||
485 | - | ||
486 | - | let | |
487 | - | ||
488 | - | let | |
489 | - | ||
490 | - | let | |
491 | - | ||
492 | - | let | |
493 | - | ||
494 | - | let | |
495 | - | ||
496 | - | let | |
497 | - | ||
498 | - | let | |
499 | - | ||
500 | - | let | |
501 | - | ||
502 | - | let | |
503 | - | ||
504 | - | let | |
505 | - | ||
506 | - | let | |
507 | - | ||
508 | - | let | |
509 | - | ||
510 | - | let | |
511 | - | ||
512 | - | let | |
513 | - | ||
514 | - | let | |
515 | - | ||
516 | - | let | |
517 | - | ||
518 | - | let | |
519 | - | ||
520 | - | func | |
521 | - | ||
522 | - | ||
523 | - | func | |
524 | - | ||
525 | - | ||
526 | - | func | |
527 | - | ||
528 | - | ||
529 | - | func | |
530 | - | ||
531 | - | ||
532 | - | func | |
533 | - | ||
534 | - | ||
535 | - | func | |
536 | - | let | |
537 | - | if ($isInstanceOf( | |
454 | + | let cI = "__" | |
455 | + | ||
456 | + | let cJ = 1000000 | |
457 | + | ||
458 | + | let cK = 100000000 | |
459 | + | ||
460 | + | let cL = 25 | |
461 | + | ||
462 | + | let cM = 100 | |
463 | + | ||
464 | + | let cN = 225 | |
465 | + | ||
466 | + | let cO = 400 | |
467 | + | ||
468 | + | let cP = 625 | |
469 | + | ||
470 | + | let cQ = [0, 1, 2, 3, 4, 5] | |
471 | + | ||
472 | + | func cR (cS,cT) = valueOrErrorMessage(getString(cS, cT), makeString(["mandatory ", toString(cS), ".", cT, " is not defined"], "")) | |
473 | + | ||
474 | + | ||
475 | + | let cU = 1 | |
476 | + | ||
477 | + | let cV = 2 | |
478 | + | ||
479 | + | let cW = 3 | |
480 | + | ||
481 | + | let cX = 4 | |
482 | + | ||
483 | + | let cY = 7 | |
484 | + | ||
485 | + | let cZ = 8 | |
486 | + | ||
487 | + | func da () = "%s__restConfig" | |
488 | + | ||
489 | + | ||
490 | + | func db () = "%s__restAddr" | |
491 | + | ||
492 | + | ||
493 | + | func dc (dd) = split_4C(cR(dd, da()), cI) | |
494 | + | ||
495 | + | ||
496 | + | func de (df,dg) = valueOrErrorMessage(addressFromString(df[dg]), ("Rest cfg doesn't contain address at index " + toString(dg))) | |
497 | + | ||
498 | + | ||
499 | + | let dh = addressFromStringValue(valueOrElse(getString(this, db()), cF)) | |
500 | + | ||
501 | + | let df = dc(dh) | |
502 | + | ||
503 | + | let ar = de(df, cU) | |
504 | + | ||
505 | + | let di = de(df, cV) | |
506 | + | ||
507 | + | let dj = de(df, cW) | |
508 | + | ||
509 | + | let dk = de(df, cX) | |
510 | + | ||
511 | + | let dl = de(df, cY) | |
512 | + | ||
513 | + | let dm = de(df, cZ) | |
514 | + | ||
515 | + | let dn = 0 | |
516 | + | ||
517 | + | let do = 1 | |
518 | + | ||
519 | + | let dp = 2 | |
520 | + | ||
521 | + | let dq = 3 | |
522 | + | ||
523 | + | let dr = "wlg_assetId" | |
524 | + | ||
525 | + | let ds = valueOrErrorMessage(getBinary(dk, dr), "WLGOLD is not issued yet") | |
526 | + | ||
527 | + | let dt = "acresAssetId" | |
528 | + | ||
529 | + | let du = valueOrErrorMessage(getBinary(dm, dt), "ACRES is not issued yet") | |
530 | + | ||
531 | + | let dv = 2 | |
532 | + | ||
533 | + | func dw (cS) = ("finishBlockForAddr_" + cS) | |
534 | + | ||
535 | + | ||
536 | + | func dx () = "resTypesProportions" | |
537 | + | ||
538 | + | ||
539 | + | func dy (dz) = ("resTypesByContinent_" + dz) | |
540 | + | ||
541 | + | ||
542 | + | func dA (bC) = ("stakedLandsByOwner_" + bC) | |
543 | + | ||
544 | + | ||
545 | + | func dB (bC) = ("stakedPiecesByOwner_" + bC) | |
546 | + | ||
547 | + | ||
548 | + | func dC (dD) = { | |
549 | + | let cE = dD | |
550 | + | if ($isInstanceOf(cE, "String")) | |
538 | 551 | then { | |
539 | - | let | |
540 | - | | |
552 | + | let dE = cE | |
553 | + | dE | |
541 | 554 | } | |
542 | 555 | else throw("fail to cast into String") | |
543 | 556 | } | |
544 | 557 | ||
545 | 558 | ||
546 | - | func | |
547 | - | let | |
548 | - | if ($isInstanceOf( | |
559 | + | func dF (dD) = { | |
560 | + | let cE = dD | |
561 | + | if ($isInstanceOf(cE, "Int")) | |
549 | 562 | then { | |
550 | - | let | |
551 | - | | |
563 | + | let dG = cE | |
564 | + | dG | |
552 | 565 | } | |
553 | 566 | else throw("fail to cast into Int") | |
554 | 567 | } | |
555 | 568 | ||
556 | 569 | ||
557 | - | func | |
558 | - | let | |
559 | - | if ($isInstanceOf( | |
570 | + | func dH (dD) = { | |
571 | + | let cE = dD | |
572 | + | if ($isInstanceOf(cE, "List[Any]")) | |
560 | 573 | then { | |
561 | - | let | |
562 | - | | |
574 | + | let dI = cE | |
575 | + | dI | |
563 | 576 | } | |
564 | 577 | else throw("fail to cast into List[Any]") | |
565 | 578 | } | |
566 | 579 | ||
567 | 580 | ||
568 | - | func | |
569 | - | let | |
570 | - | if ($isInstanceOf( | |
581 | + | func dJ (dD) = { | |
582 | + | let cE = dD | |
583 | + | if ($isInstanceOf(cE, "Boolean")) | |
571 | 584 | then { | |
572 | - | let | |
573 | - | | |
585 | + | let dE = cE | |
586 | + | dE | |
574 | 587 | } | |
575 | 588 | else throw("fail to cast into Boolean") | |
576 | 589 | } | |
577 | 590 | ||
578 | 591 | ||
579 | - | func | |
580 | - | let | |
581 | - | if ($isInstanceOf( | |
592 | + | func dK (dL) = { | |
593 | + | let cE = dL | |
594 | + | if ($isInstanceOf(cE, "(String, Int)")) | |
582 | 595 | then { | |
583 | - | let | |
584 | - | | |
596 | + | let dM = cE | |
597 | + | dM | |
585 | 598 | } | |
586 | 599 | else throw("fail to cast into (String, Int)") | |
587 | 600 | } | |
588 | 601 | ||
589 | 602 | ||
590 | - | func | |
591 | - | let | |
592 | - | if (("S" == | |
593 | - | then | |
594 | - | else if (("M" == | |
595 | - | then | |
596 | - | else if (("L" == | |
597 | - | then | |
598 | - | else if (("XL" == | |
599 | - | then | |
600 | - | else if (("XXL" == | |
601 | - | then | |
603 | + | func dN (dO) = { | |
604 | + | let cE = dO | |
605 | + | if (("S" == cE)) | |
606 | + | then cL | |
607 | + | else if (("M" == cE)) | |
608 | + | then cM | |
609 | + | else if (("L" == cE)) | |
610 | + | then cN | |
611 | + | else if (("XL" == cE)) | |
612 | + | then cO | |
613 | + | else if (("XXL" == cE)) | |
614 | + | then cP | |
602 | 615 | else throw("Unknown land size") | |
603 | 616 | } | |
604 | 617 | ||
605 | 618 | ||
606 | - | func | |
607 | - | ||
608 | - | ||
609 | - | func | |
610 | - | ||
611 | - | ||
612 | - | func | |
613 | - | ||
614 | - | ||
615 | - | func | |
616 | - | let | |
617 | - | let | |
618 | - | let | |
619 | - | (((toString(( | |
620 | - | } | |
621 | - | ||
622 | - | ||
623 | - | func | |
624 | - | let | |
625 | - | let | |
626 | - | (toInt( | |
627 | - | } | |
628 | - | ||
629 | - | ||
630 | - | let | |
631 | - | let | |
632 | - | if ((base58'2W' == | |
619 | + | func dP (dE) = isDefined(parseInt(dE)) | |
620 | + | ||
621 | + | ||
622 | + | func dQ () = "contractsBlocked" | |
623 | + | ||
624 | + | ||
625 | + | func dR (d) = ("lastTxIdByUser_" + d) | |
626 | + | ||
627 | + | ||
628 | + | func dS (dL,dT) = { | |
629 | + | let dU = pow(10, 0, dT, 0, 0, DOWN) | |
630 | + | let dV = toString((dL % dU)) | |
631 | + | let dW = drop(toString(dU), (1 + size(dV))) | |
632 | + | (((toString((dL / dU)) + ".") + dW) + dV) | |
633 | + | } | |
634 | + | ||
635 | + | ||
636 | + | func dX (dY,dZ,ea) = { | |
637 | + | let eb = value(blockInfoByHeight(dZ)) | |
638 | + | let ec = sha256((value(eb.vrf) + ea)) | |
639 | + | (toInt(ec) % dY) | |
640 | + | } | |
641 | + | ||
642 | + | ||
643 | + | let ed = { | |
644 | + | let cE = cC | |
645 | + | if ((base58'2W' == cE)) | |
633 | 646 | then addressFromStringValue("3PEktVux2RhchSN63DsDo4b4mz4QqzKSeDv") | |
634 | - | else if ((base58'2T' == | |
647 | + | else if ((base58'2T' == cE)) | |
635 | 648 | then this | |
636 | 649 | else throw("Unknown chain") | |
637 | 650 | } | |
638 | 651 | ||
639 | - | let | |
640 | - | let | |
641 | - | if ((base58'2W' == | |
652 | + | let ee = { | |
653 | + | let cE = cC | |
654 | + | if ((base58'2W' == cE)) | |
642 | 655 | then addressFromStringValue("3PDVuU45H7Eh5dmtNbnRNRStGwULA7NY6Hb") | |
643 | - | else if ((base58'2T' == | |
656 | + | else if ((base58'2T' == cE)) | |
644 | 657 | then this | |
645 | 658 | else throw("Unknown chain") | |
646 | 659 | } | |
647 | 660 | ||
648 | - | let | |
649 | - | let | |
650 | - | if ((base58'2W' == | |
651 | - | then if ( | |
661 | + | let ef = { | |
662 | + | let cE = cC | |
663 | + | if ((base58'2W' == cE)) | |
664 | + | then if (cz) | |
652 | 665 | then base58'CWsMtTZC5BjjoL4Q1ayW4Wwb1ehGACQB6DrKyPgotKfm' | |
653 | 666 | else base58'6LfPuKJjLgekmncBhMg2LZyMTNVzZBccXR28ySXm9uXD' | |
654 | - | else if ((base58'2T' == | |
667 | + | else if ((base58'2T' == cE)) | |
655 | 668 | then base58'6LfPuKJjLgekmncBhMg2LZyMTNVzZBccXR28ySXm9uXD' | |
656 | 669 | else throw("Unknown chain") | |
657 | 670 | } | |
658 | 671 | ||
659 | - | let | |
660 | - | ||
661 | - | let | |
662 | - | ||
663 | - | let | |
664 | - | ||
665 | - | let | |
666 | - | ||
667 | - | let | |
668 | - | ||
669 | - | let | |
670 | - | let | |
671 | - | if ((base58'2W' == | |
672 | + | let eg = base64'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==' | |
673 | + | ||
674 | + | let eh = 300000 | |
675 | + | ||
676 | + | let ei = 5000000 | |
677 | + | ||
678 | + | let ej = 50 | |
679 | + | ||
680 | + | let ek = 10000000 | |
681 | + | ||
682 | + | let el = { | |
683 | + | let cE = cC | |
684 | + | if ((base58'2W' == cE)) | |
672 | 685 | then 252289527462 | |
673 | - | else if ((base58'2T' == | |
686 | + | else if ((base58'2T' == cE)) | |
674 | 687 | then 2522895274 | |
675 | 688 | else throw("Unknown chain") | |
676 | 689 | } | |
677 | 690 | ||
678 | - | let | |
679 | - | let | |
680 | - | if ((base58'2W' == | |
691 | + | let em = { | |
692 | + | let cE = cC | |
693 | + | if ((base58'2W' == cE)) | |
681 | 694 | then 250000000 | |
682 | - | else if ((base58'2T' == | |
695 | + | else if ((base58'2T' == cE)) | |
683 | 696 | then 250000000 | |
684 | 697 | else throw("Unknown chain") | |
685 | 698 | } | |
686 | 699 | ||
687 | - | let | |
688 | - | ||
689 | - | let | |
690 | - | ||
691 | - | let | |
692 | - | ||
693 | - | let | |
694 | - | ||
695 | - | let | |
696 | - | ||
697 | - | let | |
698 | - | ||
699 | - | let | |
700 | - | ||
701 | - | let | |
702 | - | ||
703 | - | func | |
704 | - | ||
705 | - | ||
706 | - | func | |
707 | - | ||
708 | - | ||
709 | - | func | |
710 | - | ||
711 | - | ||
712 | - | func | |
713 | - | ||
714 | - | ||
715 | - | func | |
716 | - | ||
717 | - | ||
718 | - | func | |
719 | - | ||
720 | - | ||
721 | - | func | |
722 | - | ||
723 | - | ||
724 | - | func | |
725 | - | ||
726 | - | ||
727 | - | let | |
728 | - | ||
729 | - | let | |
730 | - | ||
731 | - | let | |
732 | - | ||
733 | - | let | |
734 | - | ||
735 | - | let | |
736 | - | ||
737 | - | let | |
738 | - | ||
739 | - | let | |
740 | - | ||
741 | - | func | |
742 | - | ||
743 | - | ||
744 | - | func | |
745 | - | let | |
746 | - | then ((( | |
747 | - | else -((((-( | |
748 | - | ( | |
749 | - | } | |
750 | - | ||
751 | - | ||
752 | - | func | |
753 | - | let | |
754 | - | if ((0 >= | |
700 | + | let en = 2500000000 | |
701 | + | ||
702 | + | let eo = toBigInt(5) | |
703 | + | ||
704 | + | let ep = toBigInt(20) | |
705 | + | ||
706 | + | let eq = toBigInt((20 * 20)) | |
707 | + | ||
708 | + | let er = toBigInt(((20 * 20) * 20)) | |
709 | + | ||
710 | + | let es = toBigInt((((20 * 20) * 20) * 20)) | |
711 | + | ||
712 | + | let et = toBigInt(((((20 * 20) * 20) * 20) * 20)) | |
713 | + | ||
714 | + | let eu = 500 | |
715 | + | ||
716 | + | func ev () = "nextLandNum" | |
717 | + | ||
718 | + | ||
719 | + | func ew (ex) = ("lcn_" + ex) | |
720 | + | ||
721 | + | ||
722 | + | func ey (ez) = ("la_" + ez) | |
723 | + | ||
724 | + | ||
725 | + | func eA (bv,bC) = ((("ilao_" + bv) + "_") + bC) | |
726 | + | ||
727 | + | ||
728 | + | func eB (ez) = ("lo_" + ez) | |
729 | + | ||
730 | + | ||
731 | + | func eC (ex) = ("duckByCustomName_" + ex) | |
732 | + | ||
733 | + | ||
734 | + | func eD (ex) = ("accountByCustomName_" + ex) | |
735 | + | ||
736 | + | ||
737 | + | func eE () = "oldiesList" | |
738 | + | ||
739 | + | ||
740 | + | let eF = 0 | |
741 | + | ||
742 | + | let eG = 1 | |
743 | + | ||
744 | + | let eH = 2 | |
745 | + | ||
746 | + | let eI = 0 | |
747 | + | ||
748 | + | let eJ = 5 | |
749 | + | ||
750 | + | let eK = 6 | |
751 | + | ||
752 | + | let eL = 7 | |
753 | + | ||
754 | + | func eM (ez,dO) = ((aG + ez) + dO) | |
755 | + | ||
756 | + | ||
757 | + | func eN (eO,eP) = { | |
758 | + | let eQ = if ((eO >= 0)) | |
759 | + | then (((eO + eP) - 1) / eP) | |
760 | + | else -((((-(eO) + eP) - 1) / eP)) | |
761 | + | (eQ * cK) | |
762 | + | } | |
763 | + | ||
764 | + | ||
765 | + | func eR (eS,eT) = { | |
766 | + | let eU = (((((eT[0] + eT[1]) + eT[2]) + eT[3]) + eT[4]) + eT[5]) | |
767 | + | if ((0 >= eU)) | |
755 | 768 | then throw("Zero weights sum") | |
756 | 769 | else { | |
757 | - | let | |
758 | - | func | |
759 | - | ||
760 | - | let | |
761 | - | let | |
762 | - | let | |
763 | - | func | |
764 | - | then | |
765 | - | else | |
766 | - | ||
767 | - | func | |
768 | - | then | |
770 | + | let eV = fraction(eS, cJ, eU) | |
771 | + | func eW (eX,eY) = (eX :+ fraction(eY, eV, cJ)) | |
772 | + | ||
773 | + | let eZ = eT | |
774 | + | let fa = size(eZ) | |
775 | + | let fb = nil | |
776 | + | func fc (fd,fe) = if ((fe >= fa)) | |
777 | + | then fd | |
778 | + | else eW(fd, eZ[fe]) | |
779 | + | ||
780 | + | func ff (fd,fe) = if ((fe >= fa)) | |
781 | + | then fd | |
769 | 782 | else throw("List size exceeds 6") | |
770 | 783 | ||
771 | - | | |
772 | - | } | |
773 | - | } | |
774 | - | ||
775 | - | ||
776 | - | func | |
777 | - | let | |
778 | - | if ((size( | |
784 | + | ff(fc(fc(fc(fc(fc(fc(fb, 0), 1), 2), 3), 4), 5), 6) | |
785 | + | } | |
786 | + | } | |
787 | + | ||
788 | + | ||
789 | + | func fg (eS) = { | |
790 | + | let fh = split(value(getString(dx())), "_") | |
791 | + | if ((size(fh) != aJ)) | |
779 | 792 | then throw("Wrong proportions data") | |
780 | 793 | else { | |
781 | - | let | |
782 | - | | |
783 | - | } | |
784 | - | } | |
785 | - | ||
786 | - | ||
787 | - | func | |
788 | - | let | |
789 | - | func | |
790 | - | let | |
791 | - | if ((0 > | |
792 | - | then throw(((((("Not enough material idx=" + toString( | |
793 | - | else ( | |
794 | + | let fi = [parseIntValue(fh[0]), parseIntValue(fh[1]), parseIntValue(fh[2]), parseIntValue(fh[3]), parseIntValue(fh[4]), parseIntValue(fh[5])] | |
795 | + | eR(eS, fi) | |
796 | + | } | |
797 | + | } | |
798 | + | ||
799 | + | ||
800 | + | func fj (fk,fl,fm) = { | |
801 | + | let fn = fg(fm) | |
802 | + | func fo (eX,dg) = { | |
803 | + | let fp = (parseIntValue(fl[dg]) - fn[dg]) | |
804 | + | if ((0 > fp)) | |
805 | + | then throw(((((("Not enough material idx=" + toString(dg)) + ", you have ") + fl[dg]) + ", but need ") + toString(fn[dg]))) | |
806 | + | else (eX :+ toString(fp)) | |
794 | 807 | } | |
795 | 808 | ||
796 | - | if ( | |
809 | + | if (fk) | |
797 | 810 | then { | |
798 | - | let | |
799 | - | let | |
800 | - | let | |
801 | - | func | |
802 | - | then | |
803 | - | else | |
804 | - | ||
805 | - | func | |
806 | - | then | |
811 | + | let eZ = cQ | |
812 | + | let fa = size(eZ) | |
813 | + | let fb = nil | |
814 | + | func fc (fd,fe) = if ((fe >= fa)) | |
815 | + | then fd | |
816 | + | else fo(fd, eZ[fe]) | |
817 | + | ||
818 | + | func ff (fd,fe) = if ((fe >= fa)) | |
819 | + | then fd | |
807 | 820 | else throw("List size exceeds 6") | |
808 | 821 | ||
809 | - | | |
810 | - | } | |
811 | - | else | |
812 | - | } | |
813 | - | ||
814 | - | ||
815 | - | func | |
816 | - | then $Tuple2( | |
822 | + | ff(fc(fc(fc(fc(fc(fc(fb, 0), 1), 2), 3), 4), 5), 6) | |
823 | + | } | |
824 | + | else fl | |
825 | + | } | |
826 | + | ||
827 | + | ||
828 | + | func fq (fr,fs) = if ((fs == "")) | |
829 | + | then $Tuple2(fr, false) | |
817 | 830 | else { | |
818 | - | func | |
819 | - | let | |
820 | - | if ((size( | |
831 | + | func ft (eX,fu) = { | |
832 | + | let fv = split(fu, ",") | |
833 | + | if ((size(fv) != 2)) | |
821 | 834 | then throw("Incorrect format, should be index,amount") | |
822 | 835 | else { | |
823 | - | let | |
824 | - | if (if ((0 > | |
836 | + | let dg = parseIntValue(fv[0]) | |
837 | + | if (if ((0 > dg)) | |
825 | 838 | then true | |
826 | - | else ( | |
839 | + | else (dg >= size(aY))) | |
827 | 840 | then throw("Unknown product idx") | |
828 | 841 | else { | |
829 | - | let | |
830 | - | let | |
831 | - | if ((size( | |
832 | - | then throw((("You don't have " + | |
842 | + | let fw = parseIntValue(fv[1]) | |
843 | + | let fx = split(eX._1, (fv[0] + ":")) | |
844 | + | if ((size(fx) != 2)) | |
845 | + | then throw((("You don't have " + aU[dg]) + " equipped")) | |
833 | 846 | else { | |
834 | - | let | |
835 | - | let | |
847 | + | let fy = fx[1] | |
848 | + | let fz = if (dP(take(drop(fy, 1), 1))) | |
836 | 849 | then 2 | |
837 | 850 | else 1 | |
838 | - | let | |
839 | - | let | |
840 | - | let | |
841 | - | then ( | |
842 | - | else throw(((((("You equipped " + toString( | |
843 | - | $Tuple2((((( | |
851 | + | let fA = parseIntValue(take(fy, fz)) | |
852 | + | let fB = drop(fy, fz) | |
853 | + | let fC = if ((fA >= fw)) | |
854 | + | then (fA - fw) | |
855 | + | else throw(((((("You equipped " + toString(fA)) + " of ") + aU[dg]) + ", but tried to use ") + toString(fw))) | |
856 | + | $Tuple2(((((fx[0] + fv[0]) + ":") + toString(fC)) + fB), if (eX._2) | |
844 | 857 | then true | |
845 | - | else if (if (( | |
846 | - | then (8 >= | |
858 | + | else if (if ((dg >= 6)) | |
859 | + | then (8 >= dg) | |
847 | 860 | else false) | |
848 | - | then ( | |
861 | + | then (fC == 0) | |
849 | 862 | else false) | |
850 | 863 | } | |
851 | 864 | } | |
852 | 865 | } | |
853 | 866 | } | |
854 | 867 | ||
855 | - | let | |
856 | - | let | |
857 | - | let | |
858 | - | func | |
859 | - | then | |
860 | - | else | |
861 | - | ||
862 | - | func | |
863 | - | then | |
868 | + | let eZ = split(fs, "_") | |
869 | + | let fa = size(eZ) | |
870 | + | let fb = $Tuple2(fr, false) | |
871 | + | func fc (fd,fe) = if ((fe >= fa)) | |
872 | + | then fd | |
873 | + | else ft(fd, eZ[fe]) | |
874 | + | ||
875 | + | func ff (fd,fe) = if ((fe >= fa)) | |
876 | + | then fd | |
864 | 877 | else throw("List size exceeds 10") | |
865 | 878 | ||
866 | - | | |
879 | + | ff(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fb, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
867 | 880 | } | |
868 | 881 | ||
869 | 882 | ||
870 | - | func | |
871 | - | let | |
883 | + | func fD (fE) = { | |
884 | + | let fF = if ((fE == "")) | |
872 | 885 | then nil | |
873 | - | else split_4C( | |
874 | - | func | |
875 | - | let | |
876 | - | let | |
877 | - | then parseIntValue( | |
886 | + | else split_4C(fE, "_") | |
887 | + | func fG (eX,cu) = { | |
888 | + | let fH = (size(eX) / 8) | |
889 | + | let fA = if ((size(fF) > fH)) | |
890 | + | then parseIntValue(fF[fH]) | |
878 | 891 | else 0 | |
879 | - | ( | |
892 | + | (eX + toBytes(fA)) | |
880 | 893 | } | |
881 | 894 | ||
882 | - | let | |
883 | - | let | |
884 | - | let | |
885 | - | func | |
886 | - | then | |
887 | - | else | |
888 | - | ||
889 | - | func | |
890 | - | then | |
895 | + | let eZ = aY | |
896 | + | let fa = size(eZ) | |
897 | + | let fb = base58'' | |
898 | + | func fc (fd,fe) = if ((fe >= fa)) | |
899 | + | then fd | |
900 | + | else fG(fd, eZ[fe]) | |
901 | + | ||
902 | + | func ff (fd,fe) = if ((fe >= fa)) | |
903 | + | then fd | |
891 | 904 | else throw("List size exceeds 50") | |
892 | 905 | ||
893 | - | | |
894 | - | } | |
895 | - | ||
896 | - | ||
897 | - | func | |
898 | - | func | |
899 | - | let | |
900 | - | let | |
901 | - | ( | |
906 | + | ff(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fb, 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) | |
907 | + | } | |
908 | + | ||
909 | + | ||
910 | + | func fI (fJ) = { | |
911 | + | func fK (eX,cu) = { | |
912 | + | let fH = size(eX) | |
913 | + | let fL = take(drop(fJ, (8 * fH)), 8) | |
914 | + | (eX :+ toString(toInt(fL))) | |
902 | 915 | } | |
903 | 916 | ||
904 | 917 | makeString_2C({ | |
905 | - | let | |
906 | - | let | |
907 | - | let | |
908 | - | func | |
909 | - | then | |
910 | - | else | |
911 | - | ||
912 | - | func | |
913 | - | then | |
918 | + | let eZ = aY | |
919 | + | let fa = size(eZ) | |
920 | + | let fb = nil | |
921 | + | func fc (fd,fe) = if ((fe >= fa)) | |
922 | + | then fd | |
923 | + | else fK(fd, eZ[fe]) | |
924 | + | ||
925 | + | func ff (fd,fe) = if ((fe >= fa)) | |
926 | + | then fd | |
914 | 927 | else throw("List size exceeds 50") | |
915 | 928 | ||
916 | - | | |
929 | + | ff(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fb, 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) | |
917 | 930 | }, "_") | |
918 | 931 | } | |
919 | 932 | ||
920 | 933 | ||
921 | - | func | |
922 | - | func | |
923 | - | let | |
924 | - | then | |
934 | + | func fM (fN,fO) = { | |
935 | + | func fP (eX,fH) = { | |
936 | + | let fQ = if ((size(fN) > (7 + fH))) | |
937 | + | then fN[(7 + fH)] | |
925 | 938 | else 0 | |
926 | - | if ((parseIntValue( | |
927 | - | then throw(("Requirement not satisfied: " + | |
939 | + | if ((parseIntValue(fO[fH]) > (fN[fH] + fQ))) | |
940 | + | then throw(("Requirement not satisfied: " + l[fH])) | |
928 | 941 | else true | |
929 | 942 | } | |
930 | 943 | ||
931 | - | let | |
932 | - | let | |
933 | - | let | |
934 | - | func | |
935 | - | then | |
936 | - | else | |
937 | - | ||
938 | - | func | |
939 | - | then | |
944 | + | let eZ = [0, 1, 2, 3, 4, 5, 6] | |
945 | + | let fa = size(eZ) | |
946 | + | let fb = false | |
947 | + | func fc (fd,fe) = if ((fe >= fa)) | |
948 | + | then fd | |
949 | + | else fP(fd, eZ[fe]) | |
950 | + | ||
951 | + | func ff (fd,fe) = if ((fe >= fa)) | |
952 | + | then fd | |
940 | 953 | else throw("List size exceeds 7") | |
941 | 954 | ||
942 | - | | |
943 | - | } | |
944 | - | ||
945 | - | ||
946 | - | func | |
947 | - | let | |
948 | - | if ((size( | |
955 | + | ff(fc(fc(fc(fc(fc(fc(fc(fb, 0), 1), 2), 3), 4), 5), 6), 7) | |
956 | + | } | |
957 | + | ||
958 | + | ||
959 | + | func fR (fS,fF,fT,fN,fU,fV) = { | |
960 | + | let fv = split(fS, ":") | |
961 | + | if ((size(fv) != 2)) | |
949 | 962 | then throw("Incorrect format, should be index:amount") | |
950 | - | else if (if (!( | |
951 | - | then (size( | |
963 | + | else if (if (!(fT)) | |
964 | + | then (size(fv[0]) != 2) | |
952 | 965 | else false) | |
953 | 966 | then throw("Product idx should be 2 digits, zero padded") | |
954 | 967 | else { | |
955 | - | let | |
956 | - | let | |
957 | - | if (!(containsElement( | |
958 | - | then throw((("Product '" + | |
959 | - | else if ((0 > | |
968 | + | let fW = parseIntValue(fv[0]) | |
969 | + | let fX = parseIntValue(fv[1]) | |
970 | + | if (!(containsElement(aX, fW))) | |
971 | + | then throw((("Product '" + aU[fW]) + "' cannot be used for land defense")) | |
972 | + | else if ((0 > fX)) | |
960 | 973 | then throw("Count can't be negative") | |
961 | - | else if (( | |
962 | - | then throw(((("Can't put more than " + toString( | |
963 | - | else if (( | |
964 | - | then $Tuple3( | |
974 | + | else if ((fX > v)) | |
975 | + | then throw(((("Can't put more than " + toString(v)) + " of ") + aU[fW])) | |
976 | + | else if ((fX == 0)) | |
977 | + | then $Tuple3(fF, fU, fV) | |
965 | 978 | else { | |
966 | - | let | |
967 | - | let | |
968 | - | let | |
969 | - | let | |
970 | - | if (if (!( | |
971 | - | then ( | |
979 | + | let fY = take(fF, (8 * fW)) | |
980 | + | let fA = toInt(take(drop(fF, (8 * fW)), 8)) | |
981 | + | let fB = drop(fF, (8 * (fW + 1))) | |
982 | + | let cu = split(aY[fW], "_") | |
983 | + | if (if (!(fT)) | |
984 | + | then (fX > fA) | |
972 | 985 | else false) | |
973 | - | then throw(((((("You have " + toString( | |
986 | + | then throw(((((("You have " + toString(fA)) + " of ") + aU[fW]) + ", but tried to use ") + toString(fX))) | |
974 | 987 | else { | |
975 | - | let | |
976 | - | then | |
988 | + | let fC = if (if (!(fT)) | |
989 | + | then fM(fN, split(cu[bb], ",")) | |
977 | 990 | else false) | |
978 | - | then ( | |
979 | - | else ( | |
980 | - | let | |
981 | - | $Tuple3((( | |
991 | + | then (fA - fX) | |
992 | + | else (fA + fX) | |
993 | + | let fZ = (eN(fC, bd) - eN(fA, bd)) | |
994 | + | $Tuple3(((fY + toBytes(fC)) + fB), (fU + fZ), (fV - fZ)) | |
982 | 995 | } | |
983 | 996 | } | |
984 | 997 | } | |
985 | 998 | } | |
986 | 999 | ||
987 | 1000 | ||
988 | - | func | |
989 | - | let | |
990 | - | if ((size( | |
1001 | + | func ga (fS,fF,fT,gb,gc,gd,fN) = { | |
1002 | + | let fv = split(fS, ":") | |
1003 | + | if ((size(fv) != 2)) | |
991 | 1004 | then throw("Incorrect format, should be index:amount") | |
992 | - | else if (if (!( | |
993 | - | then (size( | |
1005 | + | else if (if (!(fT)) | |
1006 | + | then (size(fv[0]) != 2) | |
994 | 1007 | else false) | |
995 | 1008 | then throw("Product idx should be 2 digits, zero padded") | |
996 | 1009 | else { | |
997 | - | let | |
998 | - | let | |
999 | - | if (if ((0 > | |
1010 | + | let fW = parseIntValue(fv[0]) | |
1011 | + | let fX = parseIntValue(fv[1]) | |
1012 | + | if (if ((0 > fW)) | |
1000 | 1013 | then true | |
1001 | - | else ( | |
1014 | + | else (fW >= size(aY))) | |
1002 | 1015 | then throw("Unknown product idx") | |
1003 | - | else if ((0 > | |
1016 | + | else if ((0 > fX)) | |
1004 | 1017 | then throw("Count can't be negative") | |
1005 | - | else if (( | |
1006 | - | then throw(((("Can't put more than " + toString( | |
1007 | - | else if (( | |
1008 | - | then $Tuple2( | |
1018 | + | else if ((fX > v)) | |
1019 | + | then throw(((("Can't put more than " + toString(v)) + " of ") + aU[fW])) | |
1020 | + | else if ((fX == 0)) | |
1021 | + | then $Tuple2(fF, false) | |
1009 | 1022 | else { | |
1010 | - | let | |
1011 | - | let | |
1012 | - | let | |
1013 | - | let | |
1014 | - | if (if (!( | |
1015 | - | then ( | |
1023 | + | let fY = take(fF, (8 * fW)) | |
1024 | + | let fA = toInt(take(drop(fF, (8 * fW)), 8)) | |
1025 | + | let fB = drop(fF, (8 * (fW + 1))) | |
1026 | + | let cu = split(aY[fW], "_") | |
1027 | + | if (if (!(fT)) | |
1028 | + | then (fX > fA) | |
1016 | 1029 | else false) | |
1017 | - | then throw(((((("You have " + toString( | |
1030 | + | then throw(((((("You have " + toString(fA)) + " of ") + aU[fW]) + ", but tried to use ") + toString(fX))) | |
1018 | 1031 | else { | |
1019 | - | let | |
1020 | - | then | |
1032 | + | let ge = if (if (!(fT)) | |
1033 | + | then fM(fN, split(cu[bb], ",")) | |
1021 | 1034 | else false) | |
1022 | 1035 | then { | |
1023 | - | let | |
1024 | - | if (( | |
1036 | + | let gf = cu[bc] | |
1037 | + | if ((gf == "")) | |
1025 | 1038 | then throw("Item cannot be equipped") | |
1026 | 1039 | else { | |
1027 | - | let | |
1028 | - | let | |
1029 | - | if (( | |
1040 | + | let gg = parseIntValue(gf) | |
1041 | + | let gh = (gg / 100) | |
1042 | + | if ((gb != gh)) | |
1030 | 1043 | then throw("Segment incompatible") | |
1031 | 1044 | else { | |
1032 | - | let | |
1033 | - | if (( | |
1045 | + | let gi = ((gg % 100) / 10) | |
1046 | + | if ((gc != gi)) | |
1034 | 1047 | then throw("Slot incompatible") | |
1035 | 1048 | else { | |
1036 | - | let | |
1037 | - | if (if (( | |
1038 | - | then ( | |
1049 | + | let gj = (gg % 10) | |
1050 | + | if (if ((gd != 0)) | |
1051 | + | then (gj > 1) | |
1039 | 1052 | else false) | |
1040 | 1053 | then throw("Big items should occupy slot 0") | |
1041 | - | else ( | |
1054 | + | else (gj > 1) | |
1042 | 1055 | } | |
1043 | 1056 | } | |
1044 | 1057 | } | |
1045 | 1058 | } | |
1046 | 1059 | else false | |
1047 | - | $Tuple2((( | |
1048 | - | then | |
1049 | - | else -( | |
1060 | + | $Tuple2(((fY + toBytes((fA + (if (fT) | |
1061 | + | then fX | |
1062 | + | else -(fX))))) + fB), ge) | |
1050 | 1063 | } | |
1051 | 1064 | } | |
1052 | 1065 | } | |
1053 | 1066 | } | |
1054 | 1067 | ||
1055 | 1068 | ||
1056 | - | func | |
1069 | + | func gk (gl,gm,fT,gb,gc,gn) = if ((gl != "")) | |
1057 | 1070 | then { | |
1058 | - | let | |
1059 | - | if ((size( | |
1071 | + | let go = split(gl, ",") | |
1072 | + | if ((size(go) > u)) | |
1060 | 1073 | then throw("Wrong slots format") | |
1061 | 1074 | else { | |
1062 | - | let | |
1063 | - | let | |
1064 | - | then | |
1075 | + | let gp = go[0] | |
1076 | + | let gq = if ((size(go) > 1)) | |
1077 | + | then go[1] | |
1065 | 1078 | else "" | |
1066 | - | if (if (( | |
1067 | - | then ( | |
1079 | + | if (if ((gp == "")) | |
1080 | + | then (gq == "") | |
1068 | 1081 | else false) | |
1069 | - | then | |
1082 | + | then gm | |
1070 | 1083 | else { | |
1071 | - | let | |
1072 | - | then | |
1073 | - | else $Tuple2( | |
1074 | - | if (( | |
1075 | - | then if ( | |
1084 | + | let gr = if ((gp != "")) | |
1085 | + | then ga(gp, gm, fT, gb, gc, 0, gn) | |
1086 | + | else $Tuple2(gm, false) | |
1087 | + | if ((gq != "")) | |
1088 | + | then if (gr._2) | |
1076 | 1089 | then throw("Big item already occupies slot") | |
1077 | - | else | |
1078 | - | else | |
1090 | + | else ga(gq, gr._1, fT, gb, gc, 1, gn)._1 | |
1091 | + | else gr._1 | |
1079 | 1092 | } | |
1080 | 1093 | } | |
1081 | 1094 | } | |
1082 | - | else | |
1083 | - | ||
1084 | - | ||
1085 | - | func | |
1086 | - | func | |
1087 | - | let | |
1088 | - | let | |
1089 | - | if ((size( | |
1095 | + | else gm | |
1096 | + | ||
1097 | + | ||
1098 | + | func gs (gt,gu,fT,gn) = { | |
1099 | + | func gb (eX,gv) = { | |
1100 | + | let fH = eX._1 | |
1101 | + | let gc = split(gv, ";") | |
1102 | + | if ((size(gc) != t)) | |
1090 | 1103 | then throw("Wrong segment format") | |
1091 | 1104 | else { | |
1092 | - | let | |
1093 | - | let | |
1094 | - | if (if (( | |
1095 | - | then ( | |
1105 | + | let gw = gc[0] | |
1106 | + | let gx = gc[1] | |
1107 | + | if (if ((gw == "")) | |
1108 | + | then (gx == "") | |
1096 | 1109 | else false) | |
1097 | - | then $Tuple2(( | |
1110 | + | then $Tuple2((fH + 1), eX._2) | |
1098 | 1111 | else { | |
1099 | - | let | |
1100 | - | $Tuple2(( | |
1112 | + | let gy = gk(gw, eX._2, fT, fH, 0, gn) | |
1113 | + | $Tuple2((fH + 1), gk(gx, gy, fT, fH, 1, gn)) | |
1101 | 1114 | } | |
1102 | 1115 | } | |
1103 | 1116 | } | |
1104 | 1117 | ||
1105 | - | ( let | |
1106 | - | let | |
1107 | - | let | |
1108 | - | func | |
1109 | - | then | |
1110 | - | else | |
1111 | - | ||
1112 | - | func | |
1113 | - | then | |
1118 | + | ( let eZ = gt | |
1119 | + | let fa = size(eZ) | |
1120 | + | let fb = $Tuple2(0, gu) | |
1121 | + | func fc (fd,fe) = if ((fe >= fa)) | |
1122 | + | then fd | |
1123 | + | else gb(fd, eZ[fe]) | |
1124 | + | ||
1125 | + | func ff (fd,fe) = if ((fe >= fa)) | |
1126 | + | then fd | |
1114 | 1127 | else throw("List size exceeds 6") | |
1115 | 1128 | ||
1116 | - | | |
1117 | - | } | |
1118 | - | ||
1119 | - | ||
1120 | - | func | |
1129 | + | ff(fc(fc(fc(fc(fc(fc(fb, 0), 1), 2), 3), 4), 5), 6))._2 | |
1130 | + | } | |
1131 | + | ||
1132 | + | ||
1133 | + | func gz (gt,gu,fU,fV,fT,fN) = if ((3 > size(gt))) | |
1121 | 1134 | then throw("At least duck, mines and traps parts are required") | |
1122 | 1135 | else { | |
1123 | - | func | |
1124 | - | let | |
1125 | - | if (( | |
1126 | - | then $Tuple4(( | |
1136 | + | func gb (eX,gv) = { | |
1137 | + | let fH = eX._1 | |
1138 | + | if ((fH == 0)) | |
1139 | + | then $Tuple4((fH + 1), eX._2, eX._3, eX._4) | |
1127 | 1140 | else { | |
1128 | - | let | |
1129 | - | $Tuple4(( | |
1141 | + | let gA = fR(gv, eX._2, fT, fN, eX._3, eX._4) | |
1142 | + | $Tuple4((fH + 1), gA._1, gA._2, gA._3) | |
1130 | 1143 | } | |
1131 | 1144 | } | |
1132 | 1145 | ||
1133 | - | let | |
1134 | - | let | |
1135 | - | let | |
1136 | - | let | |
1137 | - | func | |
1138 | - | then | |
1139 | - | else | |
1140 | - | ||
1141 | - | func | |
1142 | - | then | |
1146 | + | let gB = { | |
1147 | + | let eZ = gt | |
1148 | + | let fa = size(eZ) | |
1149 | + | let fb = $Tuple4(0, gu, fU, fV) | |
1150 | + | func fc (fd,fe) = if ((fe >= fa)) | |
1151 | + | then fd | |
1152 | + | else gb(fd, eZ[fe]) | |
1153 | + | ||
1154 | + | func ff (fd,fe) = if ((fe >= fa)) | |
1155 | + | then fd | |
1143 | 1156 | else throw("List size exceeds 10") | |
1144 | 1157 | ||
1145 | - | | |
1146 | - | } | |
1147 | - | $Tuple3( | |
1158 | + | ff(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fb, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
1159 | + | } | |
1160 | + | $Tuple3(gB._2, gB._3, gB._4) | |
1148 | 1161 | } | |
1149 | 1162 | ||
1150 | 1163 | ||
1151 | - | func | |
1152 | - | let | |
1153 | - | let | |
1154 | - | let | |
1155 | - | let | |
1156 | - | let | |
1164 | + | func gC (C) = { | |
1165 | + | let gD = H(C) | |
1166 | + | let gE = split(valueOrElse(getString(gD), ",;,_,;,_,;,_,;,_,;,_,;,"), "_") | |
1167 | + | let gF = gs(gE, eg, true, nil) | |
1168 | + | let gG = split(gE[r], ";")[1] | |
1169 | + | let as = if ((gG == "")) | |
1157 | 1170 | then 0 | |
1158 | 1171 | else { | |
1159 | - | let | |
1160 | - | if (( | |
1172 | + | let gH = split(gG, ",")[0] | |
1173 | + | if ((gH == "")) | |
1161 | 1174 | then 0 | |
1162 | 1175 | else { | |
1163 | - | let | |
1164 | - | let | |
1165 | - | let | |
1166 | - | if (if (if (if (if (( | |
1176 | + | let fS = split(gH, ":") | |
1177 | + | let dg = fS[0] | |
1178 | + | let gI = fS[1] | |
1179 | + | if (if (if (if (if ((dg == "06")) | |
1167 | 1180 | then true | |
1168 | - | else ( | |
1181 | + | else (dg == "07")) | |
1169 | 1182 | then true | |
1170 | - | else ( | |
1171 | - | then ( | |
1183 | + | else (dg == "08")) | |
1184 | + | then (gI != "") | |
1172 | 1185 | else false) | |
1173 | - | then (parseIntValue( | |
1186 | + | then (parseIntValue(gI) > 0) | |
1174 | 1187 | else false) | |
1175 | - | then parseIntValue(split( | |
1188 | + | then parseIntValue(split(aY[parseIntValue(dg)], "_")[ba]) | |
1176 | 1189 | else 0 | |
1177 | 1190 | } | |
1178 | 1191 | } | |
1179 | - | let | |
1180 | - | let | |
1181 | - | ( | |
1182 | - | } | |
1183 | - | ||
1184 | - | ||
1185 | - | func | |
1192 | + | let gn = aq(this, C, as, true) | |
1193 | + | let gJ = gs(gE, gF, false, gn) | |
1194 | + | (gJ == gJ) | |
1195 | + | } | |
1196 | + | ||
1197 | + | ||
1198 | + | func gK (gL,gM,gN,gO) = if ((size(gL) != aJ)) | |
1186 | 1199 | then throw("Wrong proportions data") | |
1187 | 1200 | else { | |
1188 | - | func | |
1189 | - | let | |
1190 | - | if ((0 > | |
1191 | - | then throw(((((((("Panic! Pieces of type=" + toString( | |
1192 | - | else ( | |
1193 | - | } | |
1194 | - | ||
1195 | - | let | |
1196 | - | let | |
1197 | - | let | |
1198 | - | func | |
1199 | - | then | |
1200 | - | else | |
1201 | - | ||
1202 | - | func | |
1203 | - | then | |
1201 | + | func gP (eX,gQ) = { | |
1202 | + | let fp = (parseIntValue(gL[gQ]) + ((gO * gM[gQ]) * gN)) | |
1203 | + | if ((0 > fp)) | |
1204 | + | then throw(((((((("Panic! Pieces of type=" + toString(gQ)) + ", sign=") + toString(gO)) + ", terrainCounts[i]=") + toString(gM[gQ])) + ", landSizeIndex=") + toString(gN))) | |
1205 | + | else (eX :+ toString(fp)) | |
1206 | + | } | |
1207 | + | ||
1208 | + | let eZ = cQ | |
1209 | + | let fa = size(eZ) | |
1210 | + | let fb = nil | |
1211 | + | func fc (fd,fe) = if ((fe >= fa)) | |
1212 | + | then fd | |
1213 | + | else gP(fd, eZ[fe]) | |
1214 | + | ||
1215 | + | func ff (fd,fe) = if ((fe >= fa)) | |
1216 | + | then fd | |
1204 | 1217 | else throw("List size exceeds 6") | |
1205 | 1218 | ||
1206 | - | | |
1219 | + | ff(fc(fc(fc(fc(fc(fc(fb, 0), 1), 2), 3), 4), 5), 6) | |
1207 | 1220 | } | |
1208 | 1221 | ||
1209 | 1222 | ||
1210 | - | func | |
1211 | - | let | |
1212 | - | makeString( | |
1213 | - | } | |
1214 | - | ||
1215 | - | ||
1216 | - | func | |
1217 | - | ||
1218 | - | ||
1219 | - | func | |
1220 | - | func | |
1221 | - | let | |
1222 | - | ( | |
1223 | + | func gR (gM,gN,gO) = { | |
1224 | + | let gL = split(valueOrElse(getString(dx()), "0_0_0_0_0_0"), "_") | |
1225 | + | makeString(gK(gL, gM, gN, gO), "_") | |
1226 | + | } | |
1227 | + | ||
1228 | + | ||
1229 | + | func gS (gT) = [(size(split(gT, "A")) - 1), (size(split(gT, "B")) - 1), (size(split(gT, "C")) - 1), (size(split(gT, "D")) - 1), (size(split(gT, "E")) - 1), (size(split(gT, "F")) - 1)] | |
1230 | + | ||
1231 | + | ||
1232 | + | func gU (gV,gM,gW,gN,gX) = { | |
1233 | + | func gY (eX,gQ) = { | |
1234 | + | let gZ = ((fraction(gW, gX, a) * gM[gQ]) * gN) | |
1235 | + | (eX :+ toString((parseIntValue(gV[gQ]) + gZ))) | |
1223 | 1236 | } | |
1224 | 1237 | ||
1225 | - | let | |
1226 | - | let | |
1227 | - | let | |
1228 | - | let | |
1229 | - | func | |
1230 | - | then | |
1231 | - | else | |
1232 | - | ||
1233 | - | func | |
1234 | - | then | |
1238 | + | let fi = { | |
1239 | + | let eZ = cQ | |
1240 | + | let fa = size(eZ) | |
1241 | + | let fb = nil | |
1242 | + | func fc (fd,fe) = if ((fe >= fa)) | |
1243 | + | then fd | |
1244 | + | else gY(fd, eZ[fe]) | |
1245 | + | ||
1246 | + | func ff (fd,fe) = if ((fe >= fa)) | |
1247 | + | then fd | |
1235 | 1248 | else throw("List size exceeds 6") | |
1236 | 1249 | ||
1237 | - | | |
1250 | + | ff(fc(fc(fc(fc(fc(fc(fb, 0), 1), 2), 3), 4), 5), 6) | |
1238 | 1251 | } | |
1239 | - | makeString( | |
1240 | - | } | |
1241 | - | ||
1242 | - | ||
1243 | - | func | |
1244 | - | func | |
1245 | - | let | |
1246 | - | $Tuple2(( | |
1252 | + | makeString(fi, "_") | |
1253 | + | } | |
1254 | + | ||
1255 | + | ||
1256 | + | func ha (gM,gW,gN,gX) = { | |
1257 | + | func gY (eX,gQ) = { | |
1258 | + | let gZ = ((fraction(gW, gX, a) * gM[gQ]) * gN) | |
1259 | + | $Tuple2((eX._1 :+ gZ), (eX._2 + gZ)) | |
1247 | 1260 | } | |
1248 | 1261 | ||
1249 | - | let | |
1250 | - | let | |
1251 | - | let | |
1252 | - | func | |
1253 | - | then | |
1254 | - | else | |
1255 | - | ||
1256 | - | func | |
1257 | - | then | |
1262 | + | let eZ = cQ | |
1263 | + | let fa = size(eZ) | |
1264 | + | let fb = $Tuple2(nil, 0) | |
1265 | + | func fc (fd,fe) = if ((fe >= fa)) | |
1266 | + | then fd | |
1267 | + | else gY(fd, eZ[fe]) | |
1268 | + | ||
1269 | + | func ff (fd,fe) = if ((fe >= fa)) | |
1270 | + | then fd | |
1258 | 1271 | else throw("List size exceeds 6") | |
1259 | 1272 | ||
1260 | - | | |
1261 | - | } | |
1262 | - | ||
1263 | - | ||
1264 | - | func | |
1265 | - | let | |
1266 | - | let | |
1267 | - | if (( | |
1268 | - | then $Tuple2(makeString( | |
1269 | - | else if (( | |
1273 | + | ff(fc(fc(fc(fc(fc(fc(fb, 0), 1), 2), 3), 4), 5), 6) | |
1274 | + | } | |
1275 | + | ||
1276 | + | ||
1277 | + | func hb (hc,hd,he,hf) = { | |
1278 | + | let hg = he._1 | |
1279 | + | let hh = he._2 | |
1280 | + | if ((hh == 0)) | |
1281 | + | then $Tuple2(makeString(hc, "_"), makeString(hd, "_")) | |
1282 | + | else if ((hf >= hh)) | |
1270 | 1283 | then { | |
1271 | - | func | |
1272 | - | ||
1273 | - | let | |
1274 | - | let | |
1275 | - | let | |
1276 | - | let | |
1277 | - | func | |
1278 | - | then | |
1279 | - | else | |
1280 | - | ||
1281 | - | func | |
1282 | - | then | |
1284 | + | func hi (eX,gQ) = (eX :+ toString((parseIntValue(hc[gQ]) + hg[gQ]))) | |
1285 | + | ||
1286 | + | let fi = { | |
1287 | + | let eZ = cQ | |
1288 | + | let fa = size(eZ) | |
1289 | + | let fb = nil | |
1290 | + | func fc (fd,fe) = if ((fe >= fa)) | |
1291 | + | then fd | |
1292 | + | else hi(fd, eZ[fe]) | |
1293 | + | ||
1294 | + | func ff (fd,fe) = if ((fe >= fa)) | |
1295 | + | then fd | |
1283 | 1296 | else throw("List size exceeds 6") | |
1284 | 1297 | ||
1285 | - | | |
1298 | + | ff(fc(fc(fc(fc(fc(fc(fb, 0), 1), 2), 3), 4), 5), 6) | |
1286 | 1299 | } | |
1287 | - | $Tuple2(makeString( | |
1300 | + | $Tuple2(makeString(fi, "_"), makeString(hd, "_")) | |
1288 | 1301 | } | |
1289 | 1302 | else { | |
1290 | - | func | |
1291 | - | let | |
1292 | - | $Tuple2(( | |
1303 | + | func hj (eX,gQ) = { | |
1304 | + | let hk = fraction(hg[gQ], hf, hh) | |
1305 | + | $Tuple2((eX._1 :+ toString((parseIntValue(hc[gQ]) + hk))), (eX._2 :+ toString(((parseIntValue(hd[gQ]) + hg[gQ]) - hk)))) | |
1293 | 1306 | } | |
1294 | 1307 | ||
1295 | - | let | |
1296 | - | let | |
1297 | - | let | |
1298 | - | let | |
1299 | - | func | |
1300 | - | then | |
1301 | - | else | |
1302 | - | ||
1303 | - | func | |
1304 | - | then | |
1308 | + | let fi = { | |
1309 | + | let eZ = cQ | |
1310 | + | let fa = size(eZ) | |
1311 | + | let fb = $Tuple2(nil, nil) | |
1312 | + | func fc (fd,fe) = if ((fe >= fa)) | |
1313 | + | then fd | |
1314 | + | else hj(fd, eZ[fe]) | |
1315 | + | ||
1316 | + | func ff (fd,fe) = if ((fe >= fa)) | |
1317 | + | then fd | |
1305 | 1318 | else throw("List size exceeds 6") | |
1306 | 1319 | ||
1307 | - | | |
1320 | + | ff(fc(fc(fc(fc(fc(fc(fb, 0), 1), 2), 3), 4), 5), 6) | |
1308 | 1321 | } | |
1309 | - | $Tuple2(makeString( | |
1322 | + | $Tuple2(makeString(fi._1, "_"), makeString(fi._2, "_")) | |
1310 | 1323 | } | |
1311 | 1324 | } | |
1312 | 1325 | ||
1313 | 1326 | ||
1314 | - | func | |
1315 | - | then | |
1316 | - | else -( | |
1317 | - | ||
1318 | - | ||
1319 | - | let | |
1320 | - | ||
1321 | - | func | |
1322 | - | let | |
1323 | - | let | |
1327 | + | func hl (hm) = if ((hm >= toBigInt(0))) | |
1328 | + | then hm | |
1329 | + | else -(hm) | |
1330 | + | ||
1331 | + | ||
1332 | + | let hn = [[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]] | |
1333 | + | ||
1334 | + | func ho (dG,hp) = { | |
1335 | + | let hq = toInt((dG % ep)) | |
1336 | + | let hr = if ((hp[0] > hq)) | |
1324 | 1337 | then "A" | |
1325 | - | else if (( | |
1338 | + | else if ((hp[1] > hq)) | |
1326 | 1339 | then "B" | |
1327 | - | else if (( | |
1340 | + | else if ((hp[2] > hq)) | |
1328 | 1341 | then "C" | |
1329 | - | else if (( | |
1342 | + | else if ((hp[3] > hq)) | |
1330 | 1343 | then "D" | |
1331 | - | else if (( | |
1344 | + | else if ((hp[4] > hq)) | |
1332 | 1345 | then "E" | |
1333 | 1346 | else "F" | |
1334 | - | | |
1335 | - | } | |
1336 | - | ||
1337 | - | ||
1338 | - | func | |
1339 | - | let | |
1340 | - | func | |
1341 | - | ||
1342 | - | let | |
1343 | - | let | |
1344 | - | let | |
1345 | - | let | |
1346 | - | func | |
1347 | - | then | |
1348 | - | else | |
1349 | - | ||
1350 | - | func | |
1351 | - | then | |
1347 | + | hr | |
1348 | + | } | |
1349 | + | ||
1350 | + | ||
1351 | + | func hs (ht,hu) = { | |
1352 | + | let hv = hn[hu] | |
1353 | + | func hw (eX,eY) = $Tuple2((((((eX._1 + ho(eX._2, hv)) + ho((eX._2 / ep), hv)) + ho((eX._2 / eq), hv)) + ho((eX._2 / er), hv)) + ho((eX._2 / es), hv)), (eX._2 / et)) | |
1354 | + | ||
1355 | + | let gB = { | |
1356 | + | let eZ = [1, 2, 3, 4, 5] | |
1357 | + | let fa = size(eZ) | |
1358 | + | let fb = $Tuple2("", (ht / eo)) | |
1359 | + | func fc (fd,fe) = if ((fe >= fa)) | |
1360 | + | then fd | |
1361 | + | else hw(fd, eZ[fe]) | |
1362 | + | ||
1363 | + | func ff (fd,fe) = if ((fe >= fa)) | |
1364 | + | then fd | |
1352 | 1365 | else throw("List size exceeds 5") | |
1353 | 1366 | ||
1354 | - | | |
1367 | + | ff(fc(fc(fc(fc(fc(fb, 0), 1), 2), 3), 4), 5) | |
1355 | 1368 | } | |
1356 | - | | |
1357 | - | } | |
1358 | - | ||
1359 | - | ||
1360 | - | let | |
1361 | - | ||
1362 | - | let | |
1363 | - | ||
1364 | - | func | |
1365 | - | func | |
1366 | - | let | |
1367 | - | let | |
1368 | - | let | |
1369 | + | gB._1 | |
1370 | + | } | |
1371 | + | ||
1372 | + | ||
1373 | + | let hx = [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] | |
1374 | + | ||
1375 | + | let hy = ["A", "B", "C", "D", "E", "F"] | |
1376 | + | ||
1377 | + | func hz (hA,gN) = { | |
1378 | + | func hB (eX,dE) = { | |
1379 | + | let fH = eX._2 | |
1380 | + | let hC = parseIntValue(dE) | |
1381 | + | let hm = if ((hC == 0)) | |
1369 | 1382 | then 0 | |
1370 | - | else if (( | |
1371 | - | then ( | |
1372 | - | else if (( | |
1383 | + | else if ((hC >= (4 * gN))) | |
1384 | + | then (hC / gN) | |
1385 | + | else if ((hC > (3 * gN))) | |
1373 | 1386 | then 3 | |
1374 | - | else ((( | |
1375 | - | $Tuple3(( | |
1387 | + | else (((hC - 1) / gN) + 1) | |
1388 | + | $Tuple3((eX._1 :+ hm), (eX._2 + 1), (eX._3 + hm)) | |
1376 | 1389 | } | |
1377 | 1390 | ||
1378 | - | let | |
1379 | - | let | |
1380 | - | let | |
1381 | - | let | |
1382 | - | func | |
1383 | - | then | |
1384 | - | else | |
1385 | - | ||
1386 | - | func | |
1387 | - | then | |
1391 | + | let gB = { | |
1392 | + | let eZ = hA | |
1393 | + | let fa = size(eZ) | |
1394 | + | let fb = $Tuple3(nil, 0, 0) | |
1395 | + | func fc (fd,fe) = if ((fe >= fa)) | |
1396 | + | then fd | |
1397 | + | else hB(fd, eZ[fe]) | |
1398 | + | ||
1399 | + | func ff (fd,fe) = if ((fe >= fa)) | |
1400 | + | then fd | |
1388 | 1401 | else throw("List size exceeds 6") | |
1389 | 1402 | ||
1390 | - | | |
1403 | + | ff(fc(fc(fc(fc(fc(fc(fb, 0), 1), 2), 3), 4), 5), 6) | |
1391 | 1404 | } | |
1392 | - | let | |
1393 | - | let | |
1394 | - | let | |
1395 | - | func | |
1396 | - | let | |
1397 | - | then ( | |
1398 | - | else | |
1399 | - | let | |
1405 | + | let hD = gB._1 | |
1406 | + | let hE = value(indexOf(hD, max(hD))) | |
1407 | + | let hF = (gB._3 - 25) | |
1408 | + | func hG (eX,dg) = { | |
1409 | + | let dL = if ((dg == hE)) | |
1410 | + | then (hD[dg] - hF) | |
1411 | + | else hD[dg] | |
1412 | + | let dW = if ((dL == 0)) | |
1400 | 1413 | then nil | |
1401 | - | else split(drop(toString(pow(10, 0, | |
1402 | - | let | |
1403 | - | func | |
1404 | - | ||
1405 | - | let | |
1406 | - | let | |
1407 | - | let | |
1408 | - | let | |
1409 | - | func | |
1410 | - | then | |
1411 | - | else | |
1412 | - | ||
1413 | - | func | |
1414 | - | then | |
1414 | + | else split(drop(toString(pow(10, 0, dL, 0, 0, DOWN)), 1), "") | |
1415 | + | let gg = hy[dg] | |
1416 | + | func hH (hI,hJ) = (hI :+ gg) | |
1417 | + | ||
1418 | + | let hK = { | |
1419 | + | let eZ = dW | |
1420 | + | let fa = size(eZ) | |
1421 | + | let fb = nil | |
1422 | + | func hL (fd,fe) = if ((fe >= fa)) | |
1423 | + | then fd | |
1424 | + | else hH(fd, eZ[fe]) | |
1425 | + | ||
1426 | + | func hM (fd,fe) = if ((fe >= fa)) | |
1427 | + | then fd | |
1415 | 1428 | else throw("List size exceeds 25") | |
1416 | 1429 | ||
1417 | - | | |
1418 | - | } | |
1419 | - | ( | |
1430 | + | 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(fb, 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) | |
1431 | + | } | |
1432 | + | (eX ++ hK) | |
1420 | 1433 | } | |
1421 | 1434 | ||
1422 | - | let | |
1423 | - | let | |
1424 | - | let | |
1425 | - | let | |
1426 | - | func | |
1427 | - | then | |
1428 | - | else | |
1429 | - | ||
1430 | - | func | |
1431 | - | then | |
1435 | + | let fi = { | |
1436 | + | let eZ = cQ | |
1437 | + | let fa = size(eZ) | |
1438 | + | let fb = nil | |
1439 | + | func hL (fd,fe) = if ((fe >= fa)) | |
1440 | + | then fd | |
1441 | + | else hG(fd, eZ[fe]) | |
1442 | + | ||
1443 | + | func hM (fd,fe) = if ((fe >= fa)) | |
1444 | + | then fd | |
1432 | 1445 | else throw("List size exceeds 6") | |
1433 | 1446 | ||
1434 | - | | |
1447 | + | hM(hL(hL(hL(hL(hL(hL(fb, 0), 1), 2), 3), 4), 5), 6) | |
1435 | 1448 | } | |
1436 | - | func | |
1437 | - | ||
1438 | - | let | |
1439 | - | let | |
1440 | - | let | |
1441 | - | func | |
1442 | - | then | |
1443 | - | else | |
1444 | - | ||
1445 | - | func | |
1446 | - | then | |
1449 | + | func hN (eX,fH) = (eX + fi[fH]) | |
1450 | + | ||
1451 | + | let eZ = hx | |
1452 | + | let fa = size(eZ) | |
1453 | + | let fb = "" | |
1454 | + | func hO (fd,fe) = if ((fe >= fa)) | |
1455 | + | then fd | |
1456 | + | else hN(fd, eZ[fe]) | |
1457 | + | ||
1458 | + | func hP (fd,fe) = if ((fe >= fa)) | |
1459 | + | then fd | |
1447 | 1460 | else throw("List size exceeds 25") | |
1448 | 1461 | ||
1449 | - | | |
1450 | - | } | |
1451 | - | ||
1452 | - | ||
1453 | - | func | |
1454 | - | let | |
1455 | - | [toString(valueOrElse(parseInt( | |
1456 | - | then | |
1457 | - | else "0_0_0_0_0_0", if ((size(split( | |
1458 | - | then | |
1459 | - | else "0_0_0_0_0_0", | |
1460 | - | } | |
1461 | - | ||
1462 | - | ||
1463 | - | func | |
1464 | - | let | |
1465 | - | (( | |
1466 | - | } | |
1467 | - | ||
1468 | - | ||
1469 | - | func | |
1470 | - | let | |
1471 | - | func | |
1472 | - | ||
1473 | - | func | |
1474 | - | let | |
1475 | - | let | |
1476 | - | $Tuple2(( | |
1462 | + | hP(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(fb, 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) | |
1463 | + | } | |
1464 | + | ||
1465 | + | ||
1466 | + | func hQ (hR) = { | |
1467 | + | let gA = split(valueOrElse(getString(hR), "0:0_0_0_0_0_0:0_0_0_0_0_0:"), ":") | |
1468 | + | [toString(valueOrElse(parseInt(gA[bn]), 0)), if ((size(split(gA[bo], "_")) == aJ)) | |
1469 | + | then gA[bo] | |
1470 | + | else "0_0_0_0_0_0", if ((size(split(gA[bp], "_")) == aJ)) | |
1471 | + | then gA[bp] | |
1472 | + | else "0_0_0_0_0_0", gA[bq]] | |
1473 | + | } | |
1474 | + | ||
1475 | + | ||
1476 | + | func hS (hT) = { | |
1477 | + | let fv = split(hT, "_") | |
1478 | + | ((aM * (parseIntValue(fv[1]) + 1)) * parseIntValue(fv[0])) | |
1479 | + | } | |
1480 | + | ||
1481 | + | ||
1482 | + | func hU (hV) = { | |
1483 | + | let hW = hV[bh] | |
1484 | + | func hX (eX,hY) = (eX + parseIntValue(hY)) | |
1485 | + | ||
1486 | + | func hZ (eX,hY) = { | |
1487 | + | let dg = eX._1 | |
1488 | + | let eQ = (((parseIntValue(hY) + bd) - 1) / bd) | |
1489 | + | $Tuple2((dg + 1), (eX._2 + (eQ * cK))) | |
1477 | 1490 | } | |
1478 | 1491 | ||
1479 | - | let | |
1480 | - | let | |
1481 | - | let | |
1482 | - | let | |
1483 | - | func | |
1484 | - | then | |
1485 | - | else | |
1486 | - | ||
1487 | - | func | |
1488 | - | then | |
1492 | + | let ia = { | |
1493 | + | let eZ = split(hV[bf], "_") | |
1494 | + | let fa = size(eZ) | |
1495 | + | let fb = 0 | |
1496 | + | func fc (fd,fe) = if ((fe >= fa)) | |
1497 | + | then fd | |
1498 | + | else hX(fd, eZ[fe]) | |
1499 | + | ||
1500 | + | func ff (fd,fe) = if ((fe >= fa)) | |
1501 | + | then fd | |
1489 | 1502 | else throw("List size exceeds 6") | |
1490 | 1503 | ||
1491 | - | | |
1504 | + | ff(fc(fc(fc(fc(fc(fc(fb, 0), 1), 2), 3), 4), 5), 6) | |
1492 | 1505 | } | |
1493 | - | let | |
1494 | - | let | |
1495 | - | let | |
1496 | - | let | |
1497 | - | func | |
1498 | - | then | |
1499 | - | else | |
1500 | - | ||
1501 | - | func | |
1502 | - | then | |
1506 | + | let ib = { | |
1507 | + | let eZ = split(hV[bg], "_") | |
1508 | + | let fa = size(eZ) | |
1509 | + | let fb = 0 | |
1510 | + | func hL (fd,fe) = if ((fe >= fa)) | |
1511 | + | then fd | |
1512 | + | else hX(fd, eZ[fe]) | |
1513 | + | ||
1514 | + | func hM (fd,fe) = if ((fe >= fa)) | |
1515 | + | then fd | |
1503 | 1516 | else throw("List size exceeds 6") | |
1504 | 1517 | ||
1505 | - | | |
1518 | + | hM(hL(hL(hL(hL(hL(hL(fb, 0), 1), 2), 3), 4), 5), 6) | |
1506 | 1519 | } | |
1507 | - | let | |
1520 | + | let ic = if ((hW == "")) | |
1508 | 1521 | then 0 | |
1509 | - | else ( let | |
1510 | - | let | |
1511 | - | let | |
1512 | - | func | |
1513 | - | then | |
1514 | - | else | |
1515 | - | ||
1516 | - | func | |
1517 | - | then | |
1522 | + | else ( let eZ = split_4C(hW, "_") | |
1523 | + | let fa = size(eZ) | |
1524 | + | let fb = $Tuple2(0, 0) | |
1525 | + | func hO (fd,fe) = if ((fe >= fa)) | |
1526 | + | then fd | |
1527 | + | else hZ(fd, eZ[fe]) | |
1528 | + | ||
1529 | + | func hP (fd,fe) = if ((fe >= fa)) | |
1530 | + | then fd | |
1518 | 1531 | else throw("List size exceeds 50") | |
1519 | 1532 | ||
1520 | - | | |
1521 | - | (( | |
1522 | - | } | |
1523 | - | ||
1524 | - | ||
1525 | - | func | |
1526 | - | let | |
1527 | - | let | |
1528 | - | let | |
1529 | - | let | |
1530 | - | let | |
1531 | - | let | |
1532 | - | then makeString(["0", toString( | |
1533 | + | hP(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(fb, 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 | |
1534 | + | ((ia + ib) + ic) | |
1535 | + | } | |
1536 | + | ||
1537 | + | ||
1538 | + | func id (ie,if,ig) = { | |
1539 | + | let hT = ((toString(if) + "_") + toString(ig)) | |
1540 | + | let ih = hS(hT) | |
1541 | + | let ii = valueOrElse(getString(ie), (hT + ":0_0_0_0_0_0:0_0_0_0_0_0::0")) | |
1542 | + | let ij = split_4C(ii, ":") | |
1543 | + | let ik = hU(ij) | |
1544 | + | let il = if ((5 > size(ij))) | |
1545 | + | then makeString(["0", toString(ik), toString((ih - ik)), toString(ih)], "_") | |
1533 | 1546 | else { | |
1534 | - | let | |
1535 | - | let | |
1536 | - | let | |
1537 | - | then parseIntValue( | |
1538 | - | else | |
1539 | - | makeString([toString( | |
1540 | - | } | |
1541 | - | [ | |
1542 | - | then | |
1543 | - | else "0_0_0_0_0_0", if ((size(split( | |
1544 | - | then | |
1545 | - | else "0_0_0_0_0_0", | |
1546 | - | } | |
1547 | - | ||
1548 | - | ||
1549 | - | func | |
1550 | - | let | |
1551 | - | let | |
1552 | - | (( | |
1553 | - | } | |
1554 | - | ||
1555 | - | ||
1556 | - | func | |
1547 | + | let im = split(ij[bi], "_") | |
1548 | + | let in = parseIntValue(im[bj]) | |
1549 | + | let io = if ((size(im) > 1)) | |
1550 | + | then parseIntValue(im[bk]) | |
1551 | + | else ik | |
1552 | + | makeString([toString(in), toString(io), toString(((ih - in) - io)), toString(ih)], "_") | |
1553 | + | } | |
1554 | + | [ij[be], if ((size(split(ij[bf], "_")) == aJ)) | |
1555 | + | then ij[bf] | |
1556 | + | else "0_0_0_0_0_0", if ((size(split(ij[bg], "_")) == aJ)) | |
1557 | + | then ij[bg] | |
1558 | + | else "0_0_0_0_0_0", ij[bh], il] | |
1559 | + | } | |
1560 | + | ||
1561 | + | ||
1562 | + | func ip (hV) = { | |
1563 | + | let iq = hU(hV) | |
1564 | + | let ir = parseIntValue(split(hV[bi], "_")[bj]) | |
1565 | + | ((hS(hV[be]) - iq) - ir) | |
1566 | + | } | |
1567 | + | ||
1568 | + | ||
1569 | + | func is (it,hV,iu) = if ((size(it) != 3)) | |
1557 | 1570 | then throw("cargoListStr should contain exactly 2 ':' separators") | |
1558 | 1571 | else { | |
1559 | - | let | |
1560 | - | let | |
1561 | - | let | |
1572 | + | let iv = split(it[0], "_") | |
1573 | + | let iw = split(it[1], "_") | |
1574 | + | let ix = if ((it[2] == "")) | |
1562 | 1575 | then nil | |
1563 | - | else split_4C( | |
1564 | - | if ((size( | |
1576 | + | else split_4C(it[2], "_") | |
1577 | + | if ((size(iv) != aJ)) | |
1565 | 1578 | then throw("All 6 resources should be passed") | |
1566 | - | else if ((size( | |
1579 | + | else if ((size(iw) != aJ)) | |
1567 | 1580 | then throw("All 6 materials should be passed") | |
1568 | 1581 | else { | |
1569 | - | let | |
1570 | - | let | |
1571 | - | let | |
1572 | - | let | |
1582 | + | let hf = ip(hV) | |
1583 | + | let iy = split(hV[bf], "_") | |
1584 | + | let iz = split(hV[bg], "_") | |
1585 | + | let iA = if ((hV[bh] == "")) | |
1573 | 1586 | then nil | |
1574 | - | else split_4C( | |
1575 | - | let | |
1576 | - | let | |
1577 | - | let | |
1587 | + | else split_4C(hV[bh], "_") | |
1588 | + | let hd = split(iu[bo], "_") | |
1589 | + | let iB = split(iu[bp], "_") | |
1590 | + | let iC = if ((iu[bq] == "")) | |
1578 | 1591 | then nil | |
1579 | - | else split_4C( | |
1580 | - | func | |
1581 | - | let | |
1582 | - | let | |
1583 | - | let | |
1584 | - | let | |
1585 | - | if (( | |
1586 | - | then $Tuple4(( | |
1587 | - | else if (( | |
1588 | - | then if (( | |
1589 | - | then throw((((("Attempt to take " + | |
1590 | - | else $Tuple4(( | |
1591 | - | else if ((-( | |
1592 | - | then throw((((("Attempt to take " + toString(-( | |
1593 | - | else $Tuple4(( | |
1592 | + | else split_4C(iu[bq], "_") | |
1593 | + | func iD (eX,hY) = { | |
1594 | + | let gQ = eX._1 | |
1595 | + | let iE = parseIntValue(hY) | |
1596 | + | let iF = parseIntValue(iy[gQ]) | |
1597 | + | let iG = parseIntValue(hd[gQ]) | |
1598 | + | if ((iE == 0)) | |
1599 | + | then $Tuple4((gQ + 1), (eX._2 :+ iy[gQ]), (eX._3 :+ hd[gQ]), eX._4) | |
1600 | + | else if ((iE > 0)) | |
1601 | + | then if ((iE > iG)) | |
1602 | + | then throw((((("Attempt to take " + hY) + " from backpack, but only ") + toString(iG)) + " available")) | |
1603 | + | else $Tuple4((gQ + 1), (eX._2 :+ toString((iF + iE))), (eX._3 :+ toString((iG - iE))), (eX._4 + iE)) | |
1604 | + | else if ((-(iE) > iF)) | |
1605 | + | then throw((((("Attempt to take " + toString(-(iE))) + " from warehouse, but only ") + toString(iF)) + " available")) | |
1606 | + | else $Tuple4((gQ + 1), (eX._2 :+ toString((iF + iE))), (eX._3 :+ toString((iG - iE))), (eX._4 + iE)) | |
1594 | 1607 | } | |
1595 | 1608 | ||
1596 | - | let | |
1597 | - | let | |
1598 | - | let | |
1599 | - | let | |
1600 | - | func | |
1601 | - | then | |
1602 | - | else | |
1603 | - | ||
1604 | - | func | |
1605 | - | then | |
1609 | + | let fi = { | |
1610 | + | let eZ = iv | |
1611 | + | let fa = size(eZ) | |
1612 | + | let fb = $Tuple4(0, nil, nil, 0) | |
1613 | + | func fc (fd,fe) = if ((fe >= fa)) | |
1614 | + | then fd | |
1615 | + | else iD(fd, eZ[fe]) | |
1616 | + | ||
1617 | + | func ff (fd,fe) = if ((fe >= fa)) | |
1618 | + | then fd | |
1606 | 1619 | else throw("List size exceeds 6") | |
1607 | 1620 | ||
1608 | - | | |
1621 | + | ff(fc(fc(fc(fc(fc(fc(fb, 0), 1), 2), 3), 4), 5), 6) | |
1609 | 1622 | } | |
1610 | - | func | |
1611 | - | let | |
1612 | - | let | |
1613 | - | let | |
1614 | - | let | |
1615 | - | if (( | |
1616 | - | then $Tuple4(( | |
1617 | - | else if (( | |
1618 | - | then if (( | |
1619 | - | then throw((((("Attempt to take " + | |
1620 | - | else $Tuple4(( | |
1621 | - | else if ((-( | |
1622 | - | then throw((((("Attempt to take " + toString(-( | |
1623 | - | else $Tuple4(( | |
1623 | + | func iH (eX,hY) = { | |
1624 | + | let gQ = eX._1 | |
1625 | + | let iE = parseIntValue(hY) | |
1626 | + | let iI = parseIntValue(iz[gQ]) | |
1627 | + | let iJ = parseIntValue(iB[gQ]) | |
1628 | + | if ((iE == 0)) | |
1629 | + | then $Tuple4((gQ + 1), (eX._2 :+ iz[gQ]), (eX._3 :+ iB[gQ]), eX._4) | |
1630 | + | else if ((iE > 0)) | |
1631 | + | then if ((iE > iJ)) | |
1632 | + | then throw((((("Attempt to take " + hY) + " from backpack, but only ") + toString(iJ)) + " available")) | |
1633 | + | else $Tuple4((gQ + 1), (eX._2 :+ toString((iI + iE))), (eX._3 :+ toString((iJ - iE))), (eX._4 + iE)) | |
1634 | + | else if ((-(iE) > iI)) | |
1635 | + | then throw((((("Attempt to take " + toString(-(iE))) + " from warehouse, but only ") + toString(iI)) + " available")) | |
1636 | + | else $Tuple4((gQ + 1), (eX._2 :+ toString((iI + iE))), (eX._3 :+ toString((iJ - iE))), (eX._4 + iE)) | |
1624 | 1637 | } | |
1625 | 1638 | ||
1626 | - | let | |
1627 | - | let | |
1628 | - | let | |
1629 | - | let | |
1630 | - | func | |
1631 | - | then | |
1632 | - | else | |
1633 | - | ||
1634 | - | func | |
1635 | - | then | |
1639 | + | let gw = { | |
1640 | + | let eZ = iw | |
1641 | + | let fa = size(eZ) | |
1642 | + | let fb = $Tuple4(0, nil, nil, fi._4) | |
1643 | + | func hL (fd,fe) = if ((fe >= fa)) | |
1644 | + | then fd | |
1645 | + | else iH(fd, eZ[fe]) | |
1646 | + | ||
1647 | + | func hM (fd,fe) = if ((fe >= fa)) | |
1648 | + | then fd | |
1636 | 1649 | else throw("List size exceeds 6") | |
1637 | 1650 | ||
1638 | - | | |
1651 | + | hM(hL(hL(hL(hL(hL(hL(fb, 0), 1), 2), 3), 4), 5), 6) | |
1639 | 1652 | } | |
1640 | - | func | |
1641 | - | let | |
1642 | - | let | |
1643 | - | let | |
1644 | - | then parseIntValue( | |
1653 | + | func iK (eX,hY) = { | |
1654 | + | let gQ = eX._1 | |
1655 | + | let iE = parseIntValue(hY) | |
1656 | + | let iL = if ((size(iA) > gQ)) | |
1657 | + | then parseIntValue(iA[gQ]) | |
1645 | 1658 | else 0 | |
1646 | - | let | |
1647 | - | then parseIntValue( | |
1659 | + | let iM = if ((size(iC) > gQ)) | |
1660 | + | then parseIntValue(iC[gQ]) | |
1648 | 1661 | else 0 | |
1649 | - | if (( | |
1650 | - | then $Tuple4(( | |
1651 | - | else if (( | |
1652 | - | then if (( | |
1653 | - | then throw((((("Attempt to take " + | |
1662 | + | if ((iE == 0)) | |
1663 | + | then $Tuple4((gQ + 1), (eX._2 :+ toString(iL)), (eX._3 :+ toString(iM)), eX._4) | |
1664 | + | else if ((iE > 0)) | |
1665 | + | then if ((iE > iM)) | |
1666 | + | then throw((((("Attempt to take " + hY) + " from backpack, but only ") + toString(iM)) + " available")) | |
1654 | 1667 | else { | |
1655 | - | let | |
1656 | - | $Tuple4(( | |
1668 | + | let fZ = (eN((iL + iE), bd) - eN(iL, bd)) | |
1669 | + | $Tuple4((gQ + 1), (eX._2 :+ toString((iL + iE))), (eX._3 :+ toString((iM - iE))), (eX._4 + fZ)) | |
1657 | 1670 | } | |
1658 | - | else if ((-( | |
1659 | - | then throw((((("Attempt to take " + toString(-( | |
1671 | + | else if ((-(iE) > iL)) | |
1672 | + | then throw((((("Attempt to take " + toString(-(iE))) + " from warehouse, but only ") + toString(iL)) + " available")) | |
1660 | 1673 | else { | |
1661 | - | let | |
1662 | - | $Tuple4(( | |
1674 | + | let fZ = (eN((iL + iE), bd) - eN(iL, bd)) | |
1675 | + | $Tuple4((gQ + 1), (eX._2 :+ toString((iL + iE))), (eX._3 :+ toString((iM - iE))), (eX._4 + fZ)) | |
1663 | 1676 | } | |
1664 | 1677 | } | |
1665 | 1678 | ||
1666 | - | let | |
1679 | + | let gA = if ((size(ix) != 0)) | |
1667 | 1680 | then { | |
1668 | - | let | |
1669 | - | let | |
1670 | - | let | |
1671 | - | func | |
1672 | - | then | |
1673 | - | else | |
1674 | - | ||
1675 | - | func | |
1676 | - | then | |
1681 | + | let eZ = ix | |
1682 | + | let fa = size(eZ) | |
1683 | + | let fb = $Tuple4(0, nil, nil, gw._4) | |
1684 | + | func hO (fd,fe) = if ((fe >= fa)) | |
1685 | + | then fd | |
1686 | + | else iK(fd, eZ[fe]) | |
1687 | + | ||
1688 | + | func hP (fd,fe) = if ((fe >= fa)) | |
1689 | + | then fd | |
1677 | 1690 | else throw("List size exceeds 50") | |
1678 | 1691 | ||
1679 | - | | |
1692 | + | hP(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(hO(fb, 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) | |
1680 | 1693 | } | |
1681 | - | else $Tuple4(0, | |
1682 | - | let | |
1683 | - | if (( | |
1684 | - | then throw((((("Attempt to put total " + toString( | |
1685 | - | else $Tuple7(makeString( | |
1694 | + | else $Tuple4(0, iA, iC, gw._4) | |
1695 | + | let iN = gA._4 | |
1696 | + | if ((iN > hf)) | |
1697 | + | then throw((((("Attempt to put total " + toString(iN)) + " stuff, but only ") + toString(hf)) + " warehouse space left")) | |
1698 | + | else $Tuple7(makeString(fi._2, "_"), makeString(gw._2, "_"), makeString_2C(gA._2, "_"), makeString(fi._3, "_"), makeString(gw._3, "_"), makeString_2C(gA._3, "_"), iN) | |
1686 | 1699 | } | |
1687 | 1700 | } | |
1688 | 1701 | ||
1689 | 1702 | ||
1690 | - | func | |
1691 | - | let | |
1692 | - | let | |
1693 | - | let | |
1694 | - | let | |
1695 | - | let | |
1696 | - | let | |
1697 | - | let | |
1698 | - | let | |
1699 | - | let | |
1700 | - | let | |
1701 | - | $Tuple2([IntegerEntry( | |
1702 | - | } | |
1703 | - | ||
1704 | - | ||
1705 | - | func | |
1703 | + | func iO (iP,iQ) = { | |
1704 | + | let bR = toString(iP) | |
1705 | + | let iR = hl(toBigInt(iQ)) | |
1706 | + | let iS = valueOrElse(getInteger(ev()), (eu + 1)) | |
1707 | + | let ez = toString(iS) | |
1708 | + | let hu = toInt((iR % eo)) | |
1709 | + | let gT = hs(iR, hu) | |
1710 | + | let dz = aV[hu] | |
1711 | + | let iT = Issue(eM(ez, "S"), makeString([ez, "S", gT, dz], "_"), 1, 0, false) | |
1712 | + | let bv = calculateAssetId(iT) | |
1713 | + | let iU = toBase58String(bv) | |
1714 | + | $Tuple2([IntegerEntry(ev(), (iS + 1)), iT, StringEntry(ey(ez), iU), StringEntry(bu(iU), bR), StringEntry(eB(ez), bR), IntegerEntry(bE(iU), 0), IntegerEntry(eA(iU, bR), 0), ScriptTransfer(iP, 1, bv)], $Tuple2(iU, dz)) | |
1715 | + | } | |
1716 | + | ||
1717 | + | ||
1718 | + | func iV (bR,iW,iX) = if (!(sigVerify_8Kb(iW, iX, ef))) | |
1706 | 1719 | then throw("signature does not match") | |
1707 | 1720 | else { | |
1708 | - | let | |
1709 | - | let | |
1710 | - | let | |
1711 | - | let | |
1712 | - | let | |
1713 | - | let | |
1714 | - | let | |
1715 | - | let | |
1716 | - | if (if (( | |
1721 | + | let fv = split_4C(toUtf8String(iW), ";") | |
1722 | + | let iY = split_4C(fv[0], "|") | |
1723 | + | let iZ = split(iY[eI], "_") | |
1724 | + | let ja = parseIntValue(iZ[0]) | |
1725 | + | let jb = parseIntValue(iZ[1]) | |
1726 | + | let jc = split(fv[1], ":") | |
1727 | + | let jd = jc[0] | |
1728 | + | let je = parseIntValue(iY[eJ]) | |
1729 | + | if (if ((je > (lastBlock.timestamp + eh))) | |
1717 | 1730 | then true | |
1718 | - | else ((lastBlock.timestamp - | |
1719 | - | then throw(((("signature outdated: logTime=" + toString( | |
1731 | + | else ((lastBlock.timestamp - eh) > je)) | |
1732 | + | then throw(((("signature outdated: logTime=" + toString(je)) + ", bcTime=") + toString(lastBlock.timestamp))) | |
1720 | 1733 | else { | |
1721 | - | let | |
1722 | - | let | |
1723 | - | if (( | |
1724 | - | then throw(((("Tx ids don't match! In state: " + | |
1734 | + | let jf = jc[1] | |
1735 | + | let jg = valueOrElse(getString(dR(bR)), "") | |
1736 | + | if ((jg != jf)) | |
1737 | + | then throw(((("Tx ids don't match! In state: " + jg) + ", in msg: ") + jf)) | |
1725 | 1738 | else { | |
1726 | - | let | |
1727 | - | let | |
1728 | - | let | |
1729 | - | let | |
1730 | - | if (( | |
1731 | - | then throw(((("oldHealth=" + toString( | |
1732 | - | else if ((0 >= | |
1739 | + | let C = valueOrErrorMessage(getString(bN(bR)), "You don't have a duck staked") | |
1740 | + | let jh = B(C) | |
1741 | + | let ji = ak(valueOrElse(getInteger(F(C)), 0)) | |
1742 | + | let jj = valueOrElse(getInteger(jh), ji) | |
1743 | + | if ((jj != ja)) | |
1744 | + | then throw(((("oldHealth=" + toString(jj)) + " from state does not match one from flight log=") + toString(ja))) | |
1745 | + | else if ((0 >= ja)) | |
1733 | 1746 | then throw("You can't fly with zero health") | |
1734 | - | else if (!( | |
1747 | + | else if (!(gC(C))) | |
1735 | 1748 | then throw("Equipment incompatible") | |
1736 | 1749 | else { | |
1737 | - | let | |
1738 | - | then | |
1750 | + | let jk = if ((size(iY) > eK)) | |
1751 | + | then iY[eK] | |
1739 | 1752 | else "" | |
1740 | - | let | |
1741 | - | then | |
1753 | + | let jl = if ((size(iY) > eL)) | |
1754 | + | then iY[eL] | |
1742 | 1755 | else "" | |
1743 | - | let | |
1744 | - | then ( | |
1756 | + | let jm = if (if ((jb > 0)) | |
1757 | + | then (jk == "$") | |
1745 | 1758 | else false) | |
1746 | - | then | |
1759 | + | then dF(invoke(dh, "sendUsdtPrize", [bR], nil)) | |
1747 | 1760 | else 0 | |
1748 | - | $Tuple5( | |
1761 | + | $Tuple5(jb, C, jm, jd, jl) | |
1749 | 1762 | } | |
1750 | 1763 | } | |
1751 | 1764 | } | |
1752 | 1765 | } | |
1753 | 1766 | ||
1754 | 1767 | ||
1755 | - | func | |
1756 | - | let | |
1757 | - | let | |
1758 | - | let | |
1759 | - | let | |
1760 | - | (( | |
1761 | - | } | |
1762 | - | ||
1763 | - | ||
1764 | - | func | |
1765 | - | let | |
1766 | - | then $Tuple2( | |
1768 | + | func jn (R,jo) = { | |
1769 | + | let ig = valueOrElse(getInteger(bE(R)), 0) | |
1770 | + | let jp = valueOrElse(getInteger(by(aI, R)), 0) | |
1771 | + | let jq = (ig / 6) | |
1772 | + | let jr = (ig / 7) | |
1773 | + | ((aL + fraction(aL, ((ig + jq) + (2 * jr)), 5)) + fraction(aL, jp, (jo * 5))) | |
1774 | + | } | |
1775 | + | ||
1776 | + | ||
1777 | + | func js (d,jt,ju) = { | |
1778 | + | let jv = if ((jt == eF)) | |
1779 | + | then $Tuple2(ju, valueOrElse(getString(bN(d)), "")) | |
1767 | 1780 | else { | |
1768 | - | let | |
1769 | - | let | |
1770 | - | let | |
1771 | - | if (( | |
1772 | - | then throw((("Duck location type is " + | |
1773 | - | else $Tuple2( | |
1774 | - | } | |
1775 | - | let | |
1776 | - | let | |
1777 | - | let | |
1778 | - | let | |
1779 | - | let | |
1780 | - | let | |
1781 | - | if (( | |
1782 | - | then throw(( | |
1781 | + | let C = valueOrErrorMessage(getString(bN(d)), "You don't have a duck staked") | |
1782 | + | let jw = valueOrElse(getString(bP(C)), aN) | |
1783 | + | let cl = split(value(jw), "_") | |
1784 | + | if ((cl[bs] != "L")) | |
1785 | + | then throw((("Duck location type is " + cl[bs]) + ", but should be L")) | |
1786 | + | else $Tuple2(cl[bt], C) | |
1787 | + | } | |
1788 | + | let R = jv._1 | |
1789 | + | let jx = jv._2 | |
1790 | + | let jy = value(assetInfo(fromBase58String(R))) | |
1791 | + | let jz = bx(R) | |
1792 | + | let jA = valueOrErrorMessage(getInteger(jz), (("Land " + jy.name) + " is not staked")) | |
1793 | + | let jB = valueOrErrorMessage(getString(bu(R)), (("NFT " + jy.name) + " is orphaned")) | |
1794 | + | if ((jB != d)) | |
1795 | + | then throw((aG + " is not yours")) | |
1783 | 1796 | else { | |
1784 | - | let | |
1785 | - | $Tuple4( | |
1786 | - | } | |
1787 | - | } | |
1788 | - | ||
1789 | - | ||
1790 | - | func | |
1797 | + | let jC = split(jy.description, "_") | |
1798 | + | $Tuple4(jx, R, jC, jA) | |
1799 | + | } | |
1800 | + | } | |
1801 | + | ||
1802 | + | ||
1803 | + | func jD (d,eO,jt,ju) = if ((0 > eO)) | |
1791 | 1804 | then throw("Negative amount") | |
1792 | 1805 | else { | |
1793 | - | let | |
1794 | - | let | |
1795 | - | let | |
1796 | - | let | |
1797 | - | if ((0 > | |
1798 | - | then throw(((("Saved timestamp is in future, saved = " + toString( | |
1806 | + | let gg = js(d, jt, ju) | |
1807 | + | let dO = gg._3[do] | |
1808 | + | let gM = gS(gg._3[dp]) | |
1809 | + | let gW = (lastBlock.timestamp - gg._4) | |
1810 | + | if ((0 > gW)) | |
1811 | + | then throw(((("Saved timestamp is in future, saved = " + toString(gg._4)) + ", current = ") + toString(lastBlock.timestamp))) | |
1799 | 1812 | else { | |
1800 | - | let | |
1801 | - | let | |
1802 | - | let | |
1803 | - | if (( | |
1804 | - | then throw(((("Not enough resources, available = " + toString( | |
1813 | + | let jo = dN(dO) | |
1814 | + | let jE = jn(gg._2, jo) | |
1815 | + | let jF = fraction(gW, (jE * jo), a) | |
1816 | + | if ((eO > jF)) | |
1817 | + | then throw(((("Not enough resources, available = " + toString(jF)) + ", requested = ") + toString(eO))) | |
1805 | 1818 | else { | |
1806 | - | let | |
1807 | - | let | |
1808 | - | let | |
1809 | - | let | |
1810 | - | let | |
1811 | - | let | |
1812 | - | let | |
1813 | - | let | |
1814 | - | let | |
1815 | - | if (if (( | |
1816 | - | then ( | |
1819 | + | let jG = fraction((jF - eO), a, (jE * jo)) | |
1820 | + | let jH = (lastBlock.timestamp - jG) | |
1821 | + | let if = (jo / cL) | |
1822 | + | let he = ha(gM, (gW - jG), if, jE) | |
1823 | + | let ie = bD(gg._2) | |
1824 | + | let ig = valueOrElse(getInteger(bE(gg._2)), 0) | |
1825 | + | let hV = id(ie, if, ig) | |
1826 | + | let im = split(hV[bi], "_") | |
1827 | + | let hf = parseIntValue(im[bl]) | |
1828 | + | if (if ((jt == eF)) | |
1829 | + | then (eO > hf) | |
1817 | 1830 | else false) | |
1818 | - | then throw((("Only " + toString( | |
1831 | + | then throw((("Only " + toString(hf)) + " space left in warehouse")) | |
1819 | 1832 | else { | |
1820 | - | let | |
1821 | - | let | |
1822 | - | let | |
1823 | - | let | |
1824 | - | let | |
1825 | - | then $Tuple4( | |
1826 | - | else if (( | |
1827 | - | then $Tuple4( | |
1833 | + | let hR = bO(gg._1) | |
1834 | + | let iu = hQ(hR) | |
1835 | + | let hd = split(iu[bo], "_") | |
1836 | + | let hc = split(hV[bf], "_") | |
1837 | + | let jI = if ((jt == eF)) | |
1838 | + | then $Tuple4(gU(hc, gM, (gW - jG), if, jE), iu[bo], (parseIntValue(im[bk]) + he._2), (parseIntValue(im[bl]) - he._2)) | |
1839 | + | else if ((jt == eG)) | |
1840 | + | then $Tuple4(hV[bf], gU(hd, gM, (gW - jG), if, jE), parseIntValue(im[bk]), parseIntValue(im[bl])) | |
1828 | 1841 | else { | |
1829 | - | let | |
1830 | - | let | |
1831 | - | $Tuple4( | |
1842 | + | let jJ = hb(hc, hd, he, hf) | |
1843 | + | let jK = min([parseIntValue(im[bl]), he._2]) | |
1844 | + | $Tuple4(jJ._1, jJ._2, (parseIntValue(im[bk]) + jK), (parseIntValue(im[bl]) - jK)) | |
1832 | 1845 | } | |
1833 | - | let | |
1834 | - | let | |
1835 | - | let | |
1836 | - | let | |
1837 | - | $Tuple5([IntegerEntry( | |
1846 | + | let jL = jI._1 | |
1847 | + | let jM = jI._2 | |
1848 | + | let jN = jI._3 | |
1849 | + | let jO = jI._4 | |
1850 | + | $Tuple5([IntegerEntry(bx(gg._2), jH), IntegerEntry(bA(aG, gg._2, d), jH)], hR, [iu[bn], jM, iu[bp], iu[bq]], ie, [hV[be], jL, hV[bg], hV[bh], makeString([im[bj], toString(jN), toString(jO), im[bm]], "_")]) | |
1838 | 1851 | } | |
1839 | 1852 | } | |
1840 | 1853 | } | |
1841 | 1854 | } | |
1842 | 1855 | ||
1843 | 1856 | ||
1844 | - | func | |
1845 | - | let | |
1846 | - | let | |
1847 | - | let | |
1848 | - | | |
1849 | - | } | |
1850 | - | ||
1851 | - | ||
1852 | - | func | |
1853 | - | let d = toString( | |
1854 | - | let | |
1855 | - | let | |
1856 | - | let | |
1857 | - | let | |
1858 | - | if (if (!( | |
1859 | - | then ( | |
1857 | + | func jP (d,R,jo,jt) = { | |
1858 | + | let jz = bx(R) | |
1859 | + | let jA = value(getInteger(jz)) | |
1860 | + | let jF = (fraction((lastBlock.timestamp - jA), jn(R, jo), a) * jo) | |
1861 | + | jD(d, jF, jt, R) | |
1862 | + | } | |
1863 | + | ||
1864 | + | ||
1865 | + | func jQ (fk,iP,jR,R) = { | |
1866 | + | let d = toString(iP) | |
1867 | + | let gg = js(d, eH, R) | |
1868 | + | let jo = dN(gg._3[do]) | |
1869 | + | let jS = bE(gg._2) | |
1870 | + | let jT = valueOrElse(getInteger(jS), 0) | |
1871 | + | if (if (!(cA)) | |
1872 | + | then (jT >= 3) | |
1860 | 1873 | else false) | |
1861 | 1874 | then throw("Currently max infrastructure level = 3") | |
1862 | 1875 | else { | |
1863 | - | let | |
1864 | - | let | |
1865 | - | if (if ( | |
1866 | - | then ( | |
1876 | + | let jU = ((sqrt(jo, 0, 0, DOWN) / 5) + 2) | |
1877 | + | let ap = (jT + 1) | |
1878 | + | if (if (cA) | |
1879 | + | then (ap > jU) | |
1867 | 1880 | else false) | |
1868 | - | then throw(("Currently max infrastructure level = " + toString( | |
1881 | + | then throw(("Currently max infrastructure level = " + toString(jU))) | |
1869 | 1882 | else { | |
1870 | - | let | |
1871 | - | if (if (!( | |
1872 | - | then ( | |
1883 | + | let jV = fraction(ek, (jo * ap), cL) | |
1884 | + | if (if (!(fk)) | |
1885 | + | then (jR != jV) | |
1873 | 1886 | else false) | |
1874 | - | then throw(("Payment attached should be " + toString( | |
1887 | + | then throw(("Payment attached should be " + toString(jV))) | |
1875 | 1888 | else { | |
1876 | - | let | |
1877 | - | let | |
1878 | - | let | |
1879 | - | let | |
1880 | - | let | |
1881 | - | let | |
1882 | - | let | |
1883 | - | let | |
1884 | - | let | |
1885 | - | let | |
1886 | - | let | |
1887 | - | let | |
1888 | - | $Tuple3(([IntegerEntry( | |
1889 | + | let hR = bO(gg._1) | |
1890 | + | let iu = hQ(hR) | |
1891 | + | let jW = split(iu[bp], "_") | |
1892 | + | let jX = fraction(cG, (jo * ap), cL) | |
1893 | + | let jY = makeString(fj(fk, jW, jX), "_") | |
1894 | + | let jZ = jP(d, gg._2, jo, eH) | |
1895 | + | let ka = jZ._5 | |
1896 | + | let kb = hS(ka[be]) | |
1897 | + | let kc = makeString([split(ka[be], "_")[0], toString(ap)], "_") | |
1898 | + | let kd = hS(kc) | |
1899 | + | let im = split(ka[bi], "_") | |
1900 | + | let ke = makeString([im[bj], im[bk], toString(((parseIntValue(im[bl]) + kd) - kb)), toString(kd)], "_") | |
1901 | + | $Tuple3(([IntegerEntry(jS, ap), IntegerEntry(eA(gg._2, d), ap), StringEntry(hR, makeString([iu[bn], jZ._3[bo], jY, iu[bq]], ":")), StringEntry(jZ._4, makeString([kc, ka[bf], ka[bg], ka[bh], ke], ":"))] ++ jZ._1), ap, jX) | |
1889 | 1902 | } | |
1890 | 1903 | } | |
1891 | 1904 | } | |
1892 | 1905 | } | |
1893 | 1906 | ||
1894 | 1907 | ||
1895 | - | func | |
1896 | - | let | |
1897 | - | let | |
1898 | - | let | |
1899 | - | let | |
1900 | - | let | |
1901 | - | let | |
1902 | - | $Tuple2([IntegerEntry( | |
1903 | - | } | |
1904 | - | ||
1905 | - | ||
1906 | - | func | |
1907 | - | let | |
1908 | - | let | |
1909 | - | let | |
1910 | - | let | |
1911 | - | let | |
1912 | - | let | |
1913 | - | $Tuple2([IntegerEntry( | |
1914 | - | } | |
1915 | - | ||
1916 | - | ||
1917 | - | func | |
1918 | - | let | |
1919 | - | let | |
1920 | - | let | |
1921 | - | if (!(isDefined( | |
1908 | + | func kf (C,kg) = { | |
1909 | + | let kh = F(C) | |
1910 | + | let ki = E(C) | |
1911 | + | let aj = valueOrElse(getInteger(ki), 0) | |
1912 | + | let ao = (aj + kg) | |
1913 | + | let kj = am(valueOrElse(getInteger(kh), 0), ao) | |
1914 | + | let kk = G(C) | |
1915 | + | $Tuple2([IntegerEntry(kh, kj[0]), IntegerEntry(ki, ao), IntegerEntry(kk, (valueOrElse(getInteger(kk), 0) + kj[1]))], ao) | |
1916 | + | } | |
1917 | + | ||
1918 | + | ||
1919 | + | func kl (d,kg) = { | |
1920 | + | let kh = J(d) | |
1921 | + | let ki = I(d) | |
1922 | + | let aj = valueOrElse(getInteger(ki), 0) | |
1923 | + | let ao = (aj + kg) | |
1924 | + | let kj = am(valueOrElse(getInteger(kh), 0), ao) | |
1925 | + | let kk = K(d) | |
1926 | + | $Tuple2([IntegerEntry(kh, kj[0]), IntegerEntry(ki, ao), IntegerEntry(kk, (valueOrElse(getInteger(kk), 0) + kj[1]))], ao) | |
1927 | + | } | |
1928 | + | ||
1929 | + | ||
1930 | + | func km (d) = { | |
1931 | + | let C = valueOrErrorMessage(getString(bN(d)), "You don't have a duck staked") | |
1932 | + | let kn = bI(d) | |
1933 | + | let ko = getString(kn) | |
1934 | + | if (!(isDefined(ko))) | |
1922 | 1935 | then throw("You are not eligible for ONBOARD artifact") | |
1923 | 1936 | else { | |
1924 | - | let | |
1925 | - | let | |
1926 | - | if (isDefined( | |
1927 | - | then throw(("You already used your ONBOARD artifact on duck " + value( | |
1937 | + | let kp = bK(d) | |
1938 | + | let kq = getString(kp) | |
1939 | + | if (isDefined(kq)) | |
1940 | + | then throw(("You already used your ONBOARD artifact on duck " + value(kq))) | |
1928 | 1941 | else { | |
1929 | - | let | |
1930 | - | let | |
1931 | - | if (isDefined( | |
1932 | - | then throw(((("The duck " + | |
1933 | - | else ([StringEntry( | |
1942 | + | let kr = bJ(C) | |
1943 | + | let ks = getString(kr) | |
1944 | + | if (isDefined(ks)) | |
1945 | + | then throw(((("The duck " + C) + " already got points from ONBOARD artifact from user ") + value(ks))) | |
1946 | + | else ([StringEntry(kp, C), StringEntry(kr, d)] ++ kf(C, ag)._1) | |
1934 | 1947 | } | |
1935 | 1948 | } | |
1936 | 1949 | } | |
1937 | 1950 | ||
1938 | 1951 | ||
1939 | - | func | |
1940 | - | let | |
1941 | - | let | |
1942 | - | let | |
1943 | - | let | |
1944 | - | if ((valueOrElse(getInteger( | |
1952 | + | func kt (d,ju) = { | |
1953 | + | let gg = js(d, eH, ju) | |
1954 | + | let R = gg._2 | |
1955 | + | let jo = dN(gg._3[do]) | |
1956 | + | let ku = by(aI, R) | |
1957 | + | if ((valueOrElse(getInteger(ku), 0) > 0)) | |
1945 | 1958 | then throw("Presale artifact is already activated") | |
1946 | - | else if ((parseIntValue( | |
1947 | - | then throw(((( | |
1959 | + | else if ((parseIntValue(gg._3[dn]) > eu)) | |
1960 | + | then throw((((aG + " ") + R) + " is not eligible for presale artifact")) | |
1948 | 1961 | else { | |
1949 | - | let | |
1950 | - | ((( | |
1962 | + | let jZ = jP(d, R, jo, eH) | |
1963 | + | (((jZ._1 :+ IntegerEntry(ku, jo)) :+ StringEntry(jZ._2, makeString(jZ._3, ":"))) :+ StringEntry(jZ._4, makeString(jZ._5, ":"))) | |
1951 | 1964 | } | |
1952 | 1965 | } | |
1953 | 1966 | ||
1954 | 1967 | ||
1955 | - | func | |
1956 | - | let | |
1957 | - | let | |
1958 | - | let | |
1959 | - | let | |
1960 | - | let | |
1961 | - | let | |
1962 | - | if (( | |
1968 | + | func kv (C) = { | |
1969 | + | let ck = valueOrElse(getInteger(dl, bV), 0) | |
1970 | + | let jw = split(valueOrElse(getString(bP(C)), aN), "_") | |
1971 | + | let aB = lastBlock.timestamp | |
1972 | + | let cm = ce(dl, ck) | |
1973 | + | let cg = cm[ca] | |
1974 | + | let ch = cm[cb] | |
1975 | + | if ((jw[bs] != "T")) | |
1963 | 1976 | then false | |
1964 | - | else if (if (if ((parseIntValue( | |
1965 | - | then ( | |
1977 | + | else if (if (if ((parseIntValue(jw[br]) == ck)) | |
1978 | + | then (ch[cd] == "INPROGRESS") | |
1966 | 1979 | else false) | |
1967 | - | then (parseIntValue( | |
1980 | + | then (parseIntValue(cg[cc]) > aB) | |
1968 | 1981 | else false) | |
1969 | 1982 | then throw("Your duck is taking part in the tournament") | |
1970 | - | else | |
1971 | - | } | |
1972 | - | ||
1973 | - | ||
1974 | - | func | |
1983 | + | else dJ(invoke(this, "exitTournamentInternal", [C], nil)) | |
1984 | + | } | |
1985 | + | ||
1986 | + | ||
1987 | + | func kw (C) = if (!(cB)) | |
1975 | 1988 | then false | |
1976 | 1989 | else { | |
1977 | - | let | |
1978 | - | let | |
1979 | - | if (( | |
1990 | + | let jw = split(valueOrElse(getString(bP(C)), aN), "_") | |
1991 | + | let aB = lastBlock.timestamp | |
1992 | + | if ((jw[bs] != "D")) | |
1980 | 1993 | then false | |
1981 | 1994 | else { | |
1982 | - | let | |
1983 | - | let | |
1984 | - | if (if (( | |
1985 | - | then (3 > | |
1995 | + | let co = parseIntValue(jw[br]) | |
1996 | + | let cp = parseIntValue(jw[bt]) | |
1997 | + | if (if ((aB > (co + aR))) | |
1998 | + | then (3 > cp) | |
1986 | 1999 | else false) | |
1987 | 2000 | then throw("Your duck is on delivery mission") | |
1988 | - | else | |
2001 | + | else dJ(invoke(this, "exitDeliveryInternal", [C], nil)) | |
1989 | 2002 | } | |
1990 | 2003 | } | |
1991 | 2004 | ||
1992 | 2005 | ||
1993 | - | func | |
1994 | - | let | |
1995 | - | let | |
1996 | - | let | |
1997 | - | let | |
1998 | - | let | |
1999 | - | let | |
2000 | - | let | |
2001 | - | let | |
2006 | + | func kx (C,fP,jb,ky) = { | |
2007 | + | let jw = split(valueOrElse(getString(bP(C)), aN), "_") | |
2008 | + | let aB = lastBlock.timestamp | |
2009 | + | let co = parseIntValue(jw[br]) | |
2010 | + | let cp = parseIntValue(jw[bt]) | |
2011 | + | let jB = valueOrErrorMessage(getString(bM(C)), "NFT duck is orphaned") | |
2012 | + | let kz = B(C) | |
2013 | + | let kA = getIntegerValue(kz) | |
2014 | + | let kB = if (if ((cp >= 3)) | |
2002 | 2015 | then true | |
2003 | - | else if (if ( | |
2004 | - | then ( | |
2016 | + | else if (if (fP) | |
2017 | + | then (ky >= 3) | |
2005 | 2018 | else false) | |
2006 | - | then ( | |
2019 | + | then (jb > 0) | |
2007 | 2020 | else false) | |
2008 | 2021 | then { | |
2009 | - | let kx = invoke(dd, "sendDeliveryReward", [jw], nil) | |
2010 | - | if ((kx == kx)) | |
2011 | - | then nil | |
2022 | + | let kC = invoke(di, "sendDeliveryReward", [jB], nil) | |
2023 | + | if ((kC == kC)) | |
2024 | + | then { | |
2025 | + | let kD = W(jB) | |
2026 | + | [IntegerEntry(kD, (valueOrElse(getInteger(kD), 0) + 1)), IntegerEntry(X(jB), (co / a))] | |
2027 | + | } | |
2012 | 2028 | else throw("Strict value is not equal to itself.") | |
2013 | 2029 | } | |
2014 | - | else if (if (if ( | |
2015 | - | then ( | |
2030 | + | else if (if (if (fP) | |
2031 | + | then (jb > 0) | |
2016 | 2032 | else false) | |
2017 | - | then (( | |
2033 | + | then ((co + aR) > aB) | |
2018 | 2034 | else false) | |
2019 | 2035 | then throw("Your duck is still on delivery mission") | |
2020 | 2036 | else { | |
2021 | - | let | |
2022 | - | let | |
2023 | - | if (( | |
2024 | - | then if (if (if ( | |
2025 | - | then (0 >= | |
2037 | + | let kE = valueOrElse(getInteger(di, bU), 0) | |
2038 | + | let kF = invoke(di, "updateDeliveryLocked", [(kE - aQ)], nil) | |
2039 | + | if ((kF == kF)) | |
2040 | + | then if (if (if (fP) | |
2041 | + | then (0 >= jb) | |
2026 | 2042 | else false) | |
2027 | 2043 | then true | |
2028 | - | else (0 >= | |
2044 | + | else (0 >= kA)) | |
2029 | 2045 | then nil | |
2030 | - | else [IntegerEntry( | |
2046 | + | else [IntegerEntry(V(C), (co + b))] | |
2031 | 2047 | else throw("Strict value is not equal to itself.") | |
2032 | 2048 | } | |
2033 | - | let | |
2034 | - | let | |
2035 | - | $Tuple4( | |
2036 | - | } | |
2037 | - | ||
2038 | - | ||
2039 | - | func | |
2040 | - | let | |
2041 | - | if ( | |
2049 | + | let kG = getIntegerValue(L(C)) | |
2050 | + | let kH = getStringValue(M(C)) | |
2051 | + | $Tuple4(kB, [IntegerEntry(kz, kG), StringEntry(bP(C), kH)], kH, kG) | |
2052 | + | } | |
2053 | + | ||
2054 | + | ||
2055 | + | func kI (kJ,ap,kK,d,kL,kM) = { | |
2056 | + | let C = valueOrErrorMessage(getString(bN(d)), "You don't have a duck staked") | |
2057 | + | if (kv(C)) | |
2042 | 2058 | then throw("mergeInternal_checkTournament") | |
2043 | - | else if ( | |
2059 | + | else if (kw(C)) | |
2044 | 2060 | then throw("mergeInternal_checkDelivery") | |
2045 | 2061 | else { | |
2046 | - | func | |
2047 | - | let | |
2048 | - | let | |
2049 | - | let | |
2050 | - | let | |
2051 | - | if (( | |
2052 | - | then throw(( | |
2062 | + | func kN (eX,R) = { | |
2063 | + | let jy = value(assetInfo(fromBase58String(R))) | |
2064 | + | let jz = bx(R) | |
2065 | + | let jA = valueOrErrorMessage(getInteger(jz), (("NFT " + jy.name) + " is not staked")) | |
2066 | + | let jB = valueOrErrorMessage(getString(bu(R)), (("NFT " + jy.name) + " is orphaned")) | |
2067 | + | if ((jB != d)) | |
2068 | + | then throw((aG + " is not yours")) | |
2053 | 2069 | else { | |
2054 | - | let | |
2055 | - | let | |
2056 | - | if (if (( | |
2057 | - | then ( | |
2070 | + | let jC = split(jy.description, "_") | |
2071 | + | let dz = jC[dq] | |
2072 | + | if (if ((eX._3 != "")) | |
2073 | + | then (eX._3 != dz) | |
2058 | 2074 | else false) | |
2059 | 2075 | then throw("Lands should be on the same continent to merge") | |
2060 | 2076 | else { | |
2061 | - | let | |
2062 | - | let | |
2063 | - | let | |
2064 | - | let | |
2065 | - | let | |
2066 | - | let | |
2067 | - | let | |
2068 | - | let | |
2069 | - | let | |
2070 | - | if (("S" == | |
2077 | + | let dO = jC[do] | |
2078 | + | let kO = eX._1 | |
2079 | + | let gQ = valueOrErrorMessage(indexOf(kO, dO), "You haven't passed all the lands needed") | |
2080 | + | let kP = (take(kO, gQ) + drop(kO, (gQ + 1))) | |
2081 | + | let jo = dN(dO) | |
2082 | + | let kQ = (eX._2 + valueOrElse(getInteger(by(aI, R)), 0)) | |
2083 | + | let ig = valueOrElse(getInteger(bE(R)), 0) | |
2084 | + | let kR = { | |
2085 | + | let cE = dO | |
2086 | + | if (("S" == cE)) | |
2071 | 2087 | then 3 | |
2072 | - | else if (("M" == | |
2088 | + | else if (("M" == cE)) | |
2073 | 2089 | then 4 | |
2074 | - | else if (("L" == | |
2090 | + | else if (("L" == cE)) | |
2075 | 2091 | then 5 | |
2076 | - | else if (("XL" == | |
2092 | + | else if (("XL" == cE)) | |
2077 | 2093 | then 6 | |
2078 | 2094 | else throw("Only S, M, L, XL can merge") | |
2079 | 2095 | } | |
2080 | - | if (( | |
2096 | + | if ((ig != kR)) | |
2081 | 2097 | then throw("All lands should be maxed to merge") | |
2082 | 2098 | else { | |
2083 | - | let | |
2084 | - | let | |
2085 | - | let | |
2086 | - | if ((0 > | |
2087 | - | then throw(((("Saved timestamp is in future, saved = " + toString( | |
2099 | + | let ez = jC[dn] | |
2100 | + | let gM = gS(jC[dp]) | |
2101 | + | let gW = (lastBlock.timestamp - jA) | |
2102 | + | if ((0 > gW)) | |
2103 | + | then throw(((("Saved timestamp is in future, saved = " + toString(jA)) + ", current = ") + toString(lastBlock.timestamp))) | |
2088 | 2104 | else { | |
2089 | - | let | |
2090 | - | let | |
2091 | - | let | |
2092 | - | let | |
2093 | - | let | |
2094 | - | let | |
2095 | - | let | |
2096 | - | let | |
2097 | - | if (!(isDefined( | |
2098 | - | then throw(("Your staked lands don't contain " + | |
2105 | + | let jE = jn(R, jo) | |
2106 | + | let if = (jo / cL) | |
2107 | + | let jM = gU(split(eX._4, "_"), gM, gW, if, jE) | |
2108 | + | let fh = gK(eX._6, gM, if, -1) | |
2109 | + | let kS = gK(eX._10, gM, if, -1) | |
2110 | + | let hA = gK(eX._9, gM, if, 1) | |
2111 | + | let kT = eX._7 | |
2112 | + | let dg = indexOf(kT, R) | |
2113 | + | if (!(isDefined(dg))) | |
2114 | + | then throw(("Your staked lands don't contain " + R)) | |
2099 | 2115 | else { | |
2100 | - | let | |
2101 | - | let | |
2102 | - | $Tuple10( | |
2103 | - | then [DeleteEntry( | |
2104 | - | else nil)), | |
2116 | + | let kU = bw(R) | |
2117 | + | let kV = valueOrElse(getString(kU), "") | |
2118 | + | $Tuple10(kP, kQ, dz, jM, ((((((((((((eX._5 :+ DeleteEntry(bx(R))) :+ DeleteEntry(bA(aG, R, d))) :+ DeleteEntry(ey(ez))) :+ DeleteEntry(bu(R))) :+ DeleteEntry(bE(R))) :+ DeleteEntry(eA(R, d))) :+ DeleteEntry(by(aI, R))) :+ DeleteEntry(eB(ez))) :+ DeleteEntry(bD(R))) :+ DeleteEntry(kU)) :+ Burn(fromBase58String(R), 1)) ++ (if ((kV != "")) | |
2119 | + | then [DeleteEntry(ew(kV))] | |
2120 | + | else nil)), fh, removeByIndex(kT, value(dg)), (eX._8 + jo), hA, kS) | |
2105 | 2121 | } | |
2106 | 2122 | } | |
2107 | 2123 | } | |
2108 | 2124 | } | |
2109 | 2125 | } | |
2110 | 2126 | } | |
2111 | 2127 | ||
2112 | - | let | |
2113 | - | let | |
2114 | - | let | |
2115 | - | let | |
2116 | - | let | |
2117 | - | let | |
2118 | - | then split_51C(value( | |
2128 | + | let hR = bO(C) | |
2129 | + | let iu = hQ(hR) | |
2130 | + | let gL = split(valueOrElse(getString(dx()), "0_0_0_0_0_0"), "_") | |
2131 | + | let kW = dA(d) | |
2132 | + | let kX = getString(kW) | |
2133 | + | let kY = if (isDefined(kX)) | |
2134 | + | then split_51C(value(kX), "_") | |
2119 | 2135 | else nil | |
2120 | - | let | |
2121 | - | let | |
2122 | - | let | |
2123 | - | let | |
2124 | - | let | |
2125 | - | let | |
2126 | - | func | |
2127 | - | then | |
2128 | - | else | |
2129 | - | ||
2130 | - | func | |
2131 | - | then | |
2136 | + | let kZ = split(value(assetInfo(fromBase58String(kL[0]))).description, "_")[dq] | |
2137 | + | let la = split(valueOrElse(getString(dy(kZ)), "0_0_0_0_0_0"), "_") | |
2138 | + | let fi = { | |
2139 | + | let eZ = kL | |
2140 | + | let fa = size(eZ) | |
2141 | + | let fb = $Tuple10(kK, 0, "", iu[bo], nil, gL, kY, 0, split("0_0_0_0_0_0", "_"), la) | |
2142 | + | func fc (fd,fe) = if ((fe >= fa)) | |
2143 | + | then fd | |
2144 | + | else kN(fd, eZ[fe]) | |
2145 | + | ||
2146 | + | func ff (fd,fe) = if ((fe >= fa)) | |
2147 | + | then fd | |
2132 | 2148 | else throw("List size exceeds 5") | |
2133 | 2149 | ||
2134 | - | | |
2150 | + | ff(fc(fc(fc(fc(fc(fb, 0), 1), 2), 3), 4), 5) | |
2135 | 2151 | } | |
2136 | - | let | |
2137 | - | let | |
2138 | - | let | |
2139 | - | let | |
2140 | - | let | |
2141 | - | let | |
2142 | - | let | |
2143 | - | let | |
2144 | - | let | |
2145 | - | let | |
2146 | - | let | |
2147 | - | $Tuple2(((((((((((((((( | |
2148 | - | then StringEntry( | |
2149 | - | else DeleteEntry( | |
2152 | + | let dz = fi._3 | |
2153 | + | let hu = valueOrErrorMessage(indexOf(aV, dz), ("Unknown continent: " + dz)) | |
2154 | + | let gT = hz(fi._9, (dN(kJ) / cL)) | |
2155 | + | let iS = valueOrElse(getInteger(ev()), (eu + 1)) | |
2156 | + | let lb = toString(iS) | |
2157 | + | let iT = Issue(eM(lb, kJ), makeString([lb, kJ, gT, dz], "_"), 1, 0, false) | |
2158 | + | let bv = calculateAssetId(iT) | |
2159 | + | let lc = toBase58String(bv) | |
2160 | + | let jY = makeString(fj((kM > 0), split(iu[bp], "_"), kM), "_") | |
2161 | + | let ld = dB(d) | |
2162 | + | let le = valueOrElse(getInteger(ld), 0) | |
2163 | + | $Tuple2((((((((((((((((fi._5 :+ (if ((size(fi._7) > 0)) | |
2164 | + | then StringEntry(kW, makeString_11C(fi._7, "_")) | |
2165 | + | else DeleteEntry(kW))) :+ IntegerEntry(ld, if ((fi._8 > le)) | |
2150 | 2166 | then 0 | |
2151 | - | else ( | |
2167 | + | else (le - fi._8))) :+ IntegerEntry(ev(), (iS + 1))) :+ iT) :+ StringEntry(ey(lb), lc)) :+ StringEntry(bu(lc), d)) :+ StringEntry(eB(lb), d)) :+ IntegerEntry(by(aI, lc), fi._2)) :+ IntegerEntry(bE(lc), ap)) :+ IntegerEntry(eA(lc, d), ap)) :+ StringEntry(hR, makeString([iu[bn], fi._4, jY, iu[bq]], ":"))) :+ StringEntry(dx(), makeString(fi._6, "_"))) :+ StringEntry(dy(dz), makeString(fi._10, "_"))) :+ StringEntry(bP(C), makeString([dz, "L", lc], "_"))) :+ ScriptTransfer(addressFromStringValue(d), 1, bv)), lc) | |
2152 | 2168 | } | |
2153 | 2169 | } | |
2154 | 2170 | ||
2155 | 2171 | ||
2156 | - | func | |
2157 | - | ||
2158 | - | ||
2159 | - | func | |
2160 | - | ||
2161 | - | ||
2162 | - | func | |
2163 | - | ||
2164 | - | ||
2165 | - | func | |
2166 | - | ||
2167 | - | ||
2168 | - | func | |
2169 | - | let | |
2170 | - | if ((4 == | |
2171 | - | then | |
2172 | - | else if ((3 == | |
2173 | - | then | |
2174 | - | else if ((5 == | |
2175 | - | then | |
2176 | - | else if ((2 == | |
2177 | - | then | |
2172 | + | func lf (d,kL) = kI("M", 3, "SSSS", d, kL, 0) | |
2173 | + | ||
2174 | + | ||
2175 | + | func lg (d,kL) = kI("L", 4, "SMM", d, kL, (cG * 4)) | |
2176 | + | ||
2177 | + | ||
2178 | + | func lh (d,kL) = kI("XL", 5, "SSSML", d, kL, (cG * 47)) | |
2179 | + | ||
2180 | + | ||
2181 | + | func li (d,kL) = kI("XXL", 6, "LXL", d, kL, (cG * 54)) | |
2182 | + | ||
2183 | + | ||
2184 | + | func lj (d,kL) = { | |
2185 | + | let cE = size(kL) | |
2186 | + | if ((4 == cE)) | |
2187 | + | then lf(d, kL) | |
2188 | + | else if ((3 == cE)) | |
2189 | + | then lg(d, kL) | |
2190 | + | else if ((5 == cE)) | |
2191 | + | then lh(d, kL) | |
2192 | + | else if ((2 == cE)) | |
2193 | + | then li(d, kL) | |
2178 | 2194 | else throw("Unknown merge") | |
2179 | 2195 | } | |
2180 | 2196 | ||
2181 | 2197 | ||
2182 | - | func | |
2183 | - | let | |
2184 | - | if (if ( | |
2185 | - | then isDefined( | |
2198 | + | func lk (bR) = { | |
2199 | + | let ll = getString(bN(bR)) | |
2200 | + | if (if (cB) | |
2201 | + | then isDefined(ll) | |
2186 | 2202 | else false) | |
2187 | 2203 | then { | |
2188 | - | let | |
2189 | - | let | |
2190 | - | let | |
2191 | - | let | |
2192 | - | if (if (( | |
2204 | + | let C = value(ll) | |
2205 | + | let lm = bP(C) | |
2206 | + | let cl = split(valueOrElse(getString(lm), aN), "_") | |
2207 | + | let co = parseIntValue(cl[br]) | |
2208 | + | if (if ((cl[bs] != "D")) | |
2193 | 2209 | then true | |
2194 | - | else (lastBlock.timestamp > ( | |
2210 | + | else (lastBlock.timestamp > (co + aR))) | |
2195 | 2211 | then nil | |
2196 | 2212 | else { | |
2197 | - | let | |
2198 | - | if ((parseIntValue( | |
2213 | + | let kz = B(C) | |
2214 | + | if ((parseIntValue(cl[bt]) >= 3)) | |
2199 | 2215 | then { | |
2200 | - | let | |
2201 | - | if (( | |
2216 | + | let kC = invoke(di, "sendDeliveryReward", [bR], nil) | |
2217 | + | if ((kC == kC)) | |
2202 | 2218 | then nil | |
2203 | 2219 | else throw("Strict value is not equal to itself.") | |
2204 | 2220 | } | |
2205 | 2221 | else (({ | |
2206 | - | let | |
2207 | - | let | |
2208 | - | if (( | |
2209 | - | then if ((0 >= getIntegerValue( | |
2222 | + | let kE = valueOrElse(getInteger(di, bU), 0) | |
2223 | + | let kF = invoke(di, "updateDeliveryLocked", [(kE - aQ)], nil) | |
2224 | + | if ((kF == kF)) | |
2225 | + | then if ((0 >= getIntegerValue(kz))) | |
2210 | 2226 | then nil | |
2211 | 2227 | else { | |
2212 | - | let | |
2213 | - | if (( | |
2228 | + | let ln = invoke(this, "saveInteger", [V(C), (co + b)], nil) | |
2229 | + | if ((ln == ln)) | |
2214 | 2230 | then nil | |
2215 | 2231 | else throw("Strict value is not equal to itself.") | |
2216 | 2232 | } | |
2217 | 2233 | else throw("Strict value is not equal to itself.") | |
2218 | - | } :+ IntegerEntry( | |
2234 | + | } :+ IntegerEntry(kz, getIntegerValue(L(C)))) :+ StringEntry(lm, getStringValue(M(C)))) | |
2219 | 2235 | } | |
2220 | 2236 | } | |
2221 | 2237 | else nil | |
2222 | 2238 | } | |
2223 | 2239 | ||
2224 | 2240 | ||
2225 | - | func | |
2226 | - | then valueOrElse(getBoolean( | |
2241 | + | func lo (gQ) = if (if ((gQ.originCaller != dh)) | |
2242 | + | then valueOrElse(getBoolean(dQ()), false) | |
2227 | 2243 | else false) | |
2228 | 2244 | then throw("Contracts are under maintenance") | |
2229 | 2245 | else { | |
2230 | - | let | |
2231 | - | ( | |
2246 | + | let bR = toString(gQ.originCaller) | |
2247 | + | (lk(bR) :+ StringEntry(dR(bR), toBase58String(gQ.transactionId))) | |
2232 | 2248 | } | |
2233 | 2249 | ||
2234 | 2250 | ||
2235 | - | func | |
2236 | - | then valueOrElse(getBoolean( | |
2251 | + | func lp (gQ) = if (if ((gQ.originCaller != dh)) | |
2252 | + | then valueOrElse(getBoolean(dQ()), false) | |
2237 | 2253 | else false) | |
2238 | 2254 | then throw("Contracts are under maintenance") | |
2239 | - | else [StringEntry( | |
2240 | - | ||
2241 | - | ||
2242 | - | @Callable( | |
2243 | - | func constructorV1 ( | |
2255 | + | else [StringEntry(dR(toString(gQ.originCaller)), toBase58String(gQ.transactionId))] | |
2256 | + | ||
2257 | + | ||
2258 | + | @Callable(gQ) | |
2259 | + | func constructorV1 (lq) = if ((gQ.caller != this)) | |
2244 | 2260 | then throw("Permission denied") | |
2245 | - | else [StringEntry( | |
2246 | - | ||
2247 | - | ||
2248 | - | ||
2249 | - | @Callable( | |
2250 | - | func saveInteger ( | |
2261 | + | else [StringEntry(db(), lq)] | |
2262 | + | ||
2263 | + | ||
2264 | + | ||
2265 | + | @Callable(gQ) | |
2266 | + | func saveInteger (cT,eO) = if ((gQ.caller != this)) | |
2251 | 2267 | then throw("saveInteger is not public method") | |
2252 | - | else [IntegerEntry( | |
2253 | - | ||
2254 | - | ||
2255 | - | ||
2256 | - | @Callable( | |
2257 | - | func setBlocked ( | |
2268 | + | else [IntegerEntry(cT, eO)] | |
2269 | + | ||
2270 | + | ||
2271 | + | ||
2272 | + | @Callable(gQ) | |
2273 | + | func setBlocked (lr) = if ((gQ.caller != this)) | |
2258 | 2274 | then throw("permission denied") | |
2259 | - | else [BooleanEntry( | |
2260 | - | ||
2261 | - | ||
2262 | - | ||
2263 | - | @Callable( | |
2275 | + | else [BooleanEntry(dQ(), lr)] | |
2276 | + | ||
2277 | + | ||
2278 | + | ||
2279 | + | @Callable(gQ) | |
2264 | 2280 | func stakeLand () = { | |
2265 | - | let | |
2266 | - | if ((size( | |
2281 | + | let ls = lo(gQ) | |
2282 | + | if ((size(gQ.payments) != 1)) | |
2267 | 2283 | then throw("Exactly one payment required") | |
2268 | 2284 | else { | |
2269 | - | let | |
2270 | - | let | |
2271 | - | let | |
2272 | - | if (( | |
2273 | - | then throw((("NFT " + | |
2285 | + | let lt = value(gQ.payments[0]) | |
2286 | + | let bv = value(lt.assetId) | |
2287 | + | let cS = toString(gQ.caller) | |
2288 | + | if ((lt.amount != 1)) | |
2289 | + | then throw((("NFT " + aG) + " token should be attached as payment")) | |
2274 | 2290 | else { | |
2275 | - | let | |
2276 | - | if (( | |
2291 | + | let jy = value(assetInfo(bv)) | |
2292 | + | if ((jy.issuer != this)) | |
2277 | 2293 | then throw("Unknown issuer of token") | |
2278 | - | else if (!(contains( | |
2279 | - | then throw((("Only NFT " + | |
2294 | + | else if (!(contains(jy.name, aG))) | |
2295 | + | then throw((("Only NFT " + aG) + " tokens are accepted")) | |
2280 | 2296 | else { | |
2281 | - | let | |
2282 | - | let | |
2283 | - | then dropRight( | |
2284 | - | else if (contains( | |
2285 | - | then dropRight( | |
2286 | - | else dropRight( | |
2287 | - | if (!(isDefined(parseInt( | |
2288 | - | then throw(("Cannot parse land number from " + | |
2297 | + | let lu = drop(jy.name, 4) | |
2298 | + | let ez = if (contains(lu, "XXL")) | |
2299 | + | then dropRight(lu, 3) | |
2300 | + | else if (contains(lu, "XL")) | |
2301 | + | then dropRight(lu, 2) | |
2302 | + | else dropRight(lu, 1) | |
2303 | + | if (!(isDefined(parseInt(ez)))) | |
2304 | + | then throw(("Cannot parse land number from " + jy.name)) | |
2289 | 2305 | else { | |
2290 | - | let | |
2291 | - | let | |
2292 | - | if (isDefined(getInteger( | |
2293 | - | then throw((("NFT " + | |
2306 | + | let R = toBase58String(bv) | |
2307 | + | let jz = bx(R) | |
2308 | + | if (isDefined(getInteger(jz))) | |
2309 | + | then throw((("NFT " + jy.name) + " is already staked")) | |
2294 | 2310 | else { | |
2295 | - | let | |
2296 | - | let | |
2297 | - | let | |
2298 | - | let | |
2299 | - | let | |
2300 | - | let | |
2301 | - | let | |
2302 | - | let | |
2303 | - | let | |
2304 | - | let | |
2305 | - | let | |
2306 | - | then split_51C(value( | |
2311 | + | let jC = split(jy.description, "_") | |
2312 | + | let gM = gS(jC[dp]) | |
2313 | + | let jo = dN(jC[do]) | |
2314 | + | let if = (jo / cL) | |
2315 | + | let fh = gR(gM, if, 1) | |
2316 | + | let lv = dy(jC[dq]) | |
2317 | + | let la = split(valueOrElse(getString(lv), "0_0_0_0_0_0"), "_") | |
2318 | + | let lw = makeString(gK(la, gM, if, 1), "_") | |
2319 | + | let kW = dA(cS) | |
2320 | + | let kX = getString(kW) | |
2321 | + | let kT = if (isDefined(kX)) | |
2322 | + | then split_51C(value(kX), "_") | |
2307 | 2323 | else nil | |
2308 | - | if (containsElement( | |
2309 | - | then throw(("Your staked lands already contain " + | |
2310 | - | else if ((size( | |
2311 | - | then throw((("Your already staked max (" + toString( | |
2324 | + | if (containsElement(kT, R)) | |
2325 | + | then throw(("Your staked lands already contain " + R)) | |
2326 | + | else if ((size(kT) >= aK)) | |
2327 | + | then throw((("Your already staked max (" + toString(aK)) + ") lands")) | |
2312 | 2328 | else { | |
2313 | - | let | |
2314 | - | let | |
2315 | - | let | |
2316 | - | let | |
2317 | - | $Tuple2(([IntegerEntry( | |
2329 | + | let ig = valueOrElse(getInteger(bE(R)), 0) | |
2330 | + | let ld = dB(cS) | |
2331 | + | let lx = valueOrElse(getInteger(ld), 0) | |
2332 | + | let ly = invoke(dk, "onStakeUnstakeLand", [cS], nil) | |
2333 | + | $Tuple2(([IntegerEntry(jz, lastBlock.timestamp), IntegerEntry(bA(aG, R, cS), lastBlock.timestamp), StringEntry(kW, makeString_11C((kT :+ R), "_")), IntegerEntry(ld, (lx + jo)), StringEntry(bu(R), cS), StringEntry(eB(ez), cS), IntegerEntry(eA(R, cS), ig), StringEntry(dx(), fh), StringEntry(lv, lw)] ++ ls), ly) | |
2318 | 2334 | } | |
2319 | 2335 | } | |
2320 | 2336 | } | |
2321 | 2337 | } | |
2322 | 2338 | } | |
2323 | 2339 | } | |
2324 | 2340 | } | |
2325 | 2341 | ||
2326 | 2342 | ||
2327 | 2343 | ||
2328 | - | @Callable( | |
2329 | - | func unstakeLand ( | |
2330 | - | let | |
2331 | - | if ((size( | |
2344 | + | @Callable(gQ) | |
2345 | + | func unstakeLand (ju) = { | |
2346 | + | let ls = lo(gQ) | |
2347 | + | if ((size(gQ.payments) != 0)) | |
2332 | 2348 | then throw("No payments required") | |
2333 | 2349 | else { | |
2334 | - | let d = toString( | |
2335 | - | let | |
2336 | - | let | |
2337 | - | let | |
2338 | - | let | |
2339 | - | let | |
2340 | - | let | |
2341 | - | let | |
2342 | - | let | |
2343 | - | let | |
2344 | - | let | |
2345 | - | let | |
2346 | - | let | |
2347 | - | let | |
2348 | - | let | |
2349 | - | if (!(isDefined( | |
2350 | - | then throw(("Your staked lands don't contain " + | |
2350 | + | let d = toString(gQ.caller) | |
2351 | + | let gg = js(d, eG, ju) | |
2352 | + | let R = gg._2 | |
2353 | + | let jC = gg._3 | |
2354 | + | let kW = dA(d) | |
2355 | + | let gM = gS(jC[dp]) | |
2356 | + | let jo = dN(jC[do]) | |
2357 | + | let if = (jo / cL) | |
2358 | + | let fh = gR(gM, if, -1) | |
2359 | + | let lv = dy(jC[dq]) | |
2360 | + | let la = split(valueOrElse(getString(lv), "0_0_0_0_0_0"), "_") | |
2361 | + | let lw = makeString(gK(la, gM, if, -1), "_") | |
2362 | + | let jZ = jP(d, R, jo, eG) | |
2363 | + | let kT = split_51C(valueOrElse(getString(kW), ""), "_") | |
2364 | + | let dg = indexOf(kT, R) | |
2365 | + | if (!(isDefined(dg))) | |
2366 | + | then throw(("Your staked lands don't contain " + R)) | |
2351 | 2367 | else { | |
2352 | - | let | |
2353 | - | let | |
2354 | - | if (( | |
2355 | - | then throw(("Your gWL are taking part in voting, cannot unstake until " + toString( | |
2368 | + | let aB = lastBlock.timestamp | |
2369 | + | let lz = valueOrElse(getInteger(dj, bQ(d)), 0) | |
2370 | + | if ((lz >= aB)) | |
2371 | + | then throw(("Your gWL are taking part in voting, cannot unstake until " + toString(lz))) | |
2356 | 2372 | else { | |
2357 | - | let | |
2358 | - | if (( | |
2359 | - | then throw(("Your staked lands took part in arbitrage, cannot unstake until " + toString( | |
2373 | + | let lA = (valueOrElse(getInteger(dk, c(d)), 0) + cH) | |
2374 | + | if ((lA > aB)) | |
2375 | + | then throw(("Your staked lands took part in arbitrage, cannot unstake until " + toString(lA))) | |
2360 | 2376 | else { | |
2361 | - | let | |
2362 | - | let | |
2363 | - | let | |
2377 | + | let ld = dB(d) | |
2378 | + | let le = valueOrElse(getInteger(ld), 0) | |
2379 | + | let lB = if ((jo > le)) | |
2364 | 2380 | then 0 | |
2365 | - | else ( | |
2366 | - | let | |
2367 | - | $Tuple2(([ScriptTransfer( | |
2368 | - | then StringEntry( | |
2369 | - | else DeleteEntry( | |
2381 | + | else (le - jo) | |
2382 | + | let ly = invoke(dk, "onStakeUnstakeLand", [d], nil) | |
2383 | + | $Tuple2(([ScriptTransfer(gQ.caller, 1, fromBase58String(R)), DeleteEntry(bx(R)), DeleteEntry(bA(aG, R, d)), StringEntry(dx(), fh), StringEntry(lv, lw), StringEntry(jZ._2, makeString(jZ._3, ":")), if ((size(kT) > 1)) | |
2384 | + | then StringEntry(kW, makeString_11C(removeByIndex(kT, value(dg)), "_")) | |
2385 | + | else DeleteEntry(kW), IntegerEntry(ld, lB)] ++ ls), ly) | |
2370 | 2386 | } | |
2371 | 2387 | } | |
2372 | 2388 | } | |
2373 | 2389 | } | |
2374 | 2390 | } | |
2375 | 2391 | ||
2376 | 2392 | ||
2377 | 2393 | ||
2378 | - | @Callable( | |
2394 | + | @Callable(gQ) | |
2379 | 2395 | func stakeDuck () = { | |
2380 | - | let | |
2381 | - | if ((size( | |
2396 | + | let ls = lo(gQ) | |
2397 | + | if ((size(gQ.payments) != 1)) | |
2382 | 2398 | then throw("Exactly one payment required") | |
2383 | 2399 | else { | |
2384 | - | let | |
2385 | - | let | |
2386 | - | let | |
2387 | - | if (( | |
2388 | - | then throw((("NFT " + | |
2400 | + | let lt = value(gQ.payments[0]) | |
2401 | + | let bv = value(lt.assetId) | |
2402 | + | let cS = toString(gQ.caller) | |
2403 | + | if ((lt.amount != 1)) | |
2404 | + | then throw((("NFT " + aH) + " token should be attached as payment")) | |
2389 | 2405 | else { | |
2390 | - | let | |
2391 | - | if (if (( | |
2392 | - | then ( | |
2406 | + | let jy = value(assetInfo(bv)) | |
2407 | + | if (if ((jy.issuer != ed)) | |
2408 | + | then (jy.issuer != ee) | |
2393 | 2409 | else false) | |
2394 | - | then throw((("Unknown issuer of " + | |
2395 | - | else if (!(contains( | |
2396 | - | then throw((("Only NFT " + | |
2410 | + | then throw((("Unknown issuer of " + aH) + " token")) | |
2411 | + | else if (!(contains(jy.name, aH))) | |
2412 | + | then throw((("Only NFT " + aH) + " tokens are accepted")) | |
2397 | 2413 | else { | |
2398 | - | let | |
2399 | - | let | |
2400 | - | if (isDefined(getInteger( | |
2401 | - | then throw((("NFT " + | |
2402 | - | else if (isDefined(getString( | |
2403 | - | then throw(("You already staked one duck: " + | |
2414 | + | let lC = toBase58String(bv) | |
2415 | + | let jz = bx(lC) | |
2416 | + | if (isDefined(getInteger(jz))) | |
2417 | + | then throw((("NFT " + jy.name) + " is already staked")) | |
2418 | + | else if (isDefined(getString(bN(cS)))) | |
2419 | + | then throw(("You already staked one duck: " + jy.name)) | |
2404 | 2420 | else { | |
2405 | - | let | |
2406 | - | let | |
2407 | - | let | |
2408 | - | let | |
2409 | - | let | |
2410 | - | let | |
2411 | - | let | |
2412 | - | ([IntegerEntry( | |
2421 | + | let lm = bP(lC) | |
2422 | + | let cj = getString(lm) | |
2423 | + | let hR = bO(lC) | |
2424 | + | let lD = getString(hR) | |
2425 | + | let jh = B(lC) | |
2426 | + | let ji = ak(valueOrElse(getInteger(F(lC)), 0)) | |
2427 | + | let kA = valueOrElse(getInteger(jh), ji) | |
2428 | + | ([IntegerEntry(jz, lastBlock.timestamp), IntegerEntry(bA(aH, toBase58String(bv), cS), lastBlock.timestamp), StringEntry(bM(lC), cS), StringEntry(bN(cS), lC)] ++ (if (isDefined(cj)) | |
2413 | 2429 | then nil | |
2414 | - | else ([StringEntry( | |
2430 | + | else ([StringEntry(lm, aN)] ++ (if (isDefined(lD)) | |
2415 | 2431 | then nil | |
2416 | - | else (([StringEntry( | |
2432 | + | else (([StringEntry(hR, "0:0_0_0_0_0_0:0_0_0_0_0_0:")] :+ IntegerEntry(jh, kA)) ++ ls))))) | |
2417 | 2433 | } | |
2418 | 2434 | } | |
2419 | 2435 | } | |
2420 | 2436 | } | |
2421 | 2437 | } | |
2422 | 2438 | ||
2423 | 2439 | ||
2424 | 2440 | ||
2425 | - | @Callable( | |
2426 | - | func unstakeDuck ( | |
2427 | - | let | |
2428 | - | if ((size( | |
2441 | + | @Callable(gQ) | |
2442 | + | func unstakeDuck (lC) = { | |
2443 | + | let ls = lo(gQ) | |
2444 | + | if ((size(gQ.payments) != 0)) | |
2429 | 2445 | then throw("No payments required") | |
2430 | 2446 | else { | |
2431 | - | let | |
2432 | - | let | |
2433 | - | let | |
2434 | - | let | |
2435 | - | if (!(isDefined(getInteger( | |
2436 | - | then throw((("NFT " + | |
2437 | - | else if (!(isDefined(getString( | |
2438 | - | then throw((("The duck " + | |
2447 | + | let bv = fromBase58String(lC) | |
2448 | + | let cS = toString(gQ.caller) | |
2449 | + | let jy = value(assetInfo(bv)) | |
2450 | + | let jz = bx(lC) | |
2451 | + | if (!(isDefined(getInteger(jz)))) | |
2452 | + | then throw((("NFT " + jy.name) + " is not staked")) | |
2453 | + | else if (!(isDefined(getString(bN(cS))))) | |
2454 | + | then throw((("The duck " + jy.name) + " is not staked")) | |
2439 | 2455 | else { | |
2440 | - | let | |
2441 | - | if (( | |
2456 | + | let jB = valueOrErrorMessage(getString(bM(lC)), (("NFT " + jy.name) + " is orphaned")) | |
2457 | + | if ((jB != cS)) | |
2442 | 2458 | then throw("Staked NFT is not yours") | |
2443 | - | else if ( | |
2459 | + | else if (kv(lC)) | |
2444 | 2460 | then throw("unstakeDuck_checkTournament") | |
2445 | - | else if ( | |
2461 | + | else if (kw(lC)) | |
2446 | 2462 | then throw("unstakeDuck_checkDelivery") | |
2447 | 2463 | else { | |
2448 | - | let | |
2449 | - | let | |
2450 | - | let | |
2451 | - | if (( | |
2452 | - | then throw((("Please heal your duck to " + toString( | |
2453 | - | else ([ScriptTransfer( | |
2464 | + | let jh = B(lC) | |
2465 | + | let ji = ak(valueOrElse(getInteger(F(lC)), 0)) | |
2466 | + | let aw = valueOrElse(getInteger(jh), ji) | |
2467 | + | if ((ji > aw)) | |
2468 | + | then throw((("Please heal your duck to " + toString(ji)) + "hp before unstaking")) | |
2469 | + | else ([ScriptTransfer(gQ.caller, 1, bv), DeleteEntry(jz), DeleteEntry(jh), DeleteEntry(bP(lC)), DeleteEntry(bM(lC)), DeleteEntry(bA(aH, lC, cS)), DeleteEntry(bN(cS))] ++ ls) | |
2454 | 2470 | } | |
2455 | 2471 | } | |
2456 | 2472 | } | |
2457 | 2473 | } | |
2458 | 2474 | ||
2459 | 2475 | ||
2460 | 2476 | ||
2461 | - | @Callable( | |
2462 | - | func claimRes ( | |
2463 | - | let | |
2464 | - | if ((size( | |
2477 | + | @Callable(gQ) | |
2478 | + | func claimRes (eO,lE) = { | |
2479 | + | let ls = lo(gQ) | |
2480 | + | if ((size(gQ.payments) != 0)) | |
2465 | 2481 | then throw("No payments required") | |
2466 | 2482 | else { | |
2467 | - | let d = toString( | |
2468 | - | let | |
2469 | - | let | |
2470 | - | $Tuple2((((( | |
2471 | - | } | |
2472 | - | } | |
2473 | - | ||
2474 | - | ||
2475 | - | ||
2476 | - | @Callable( | |
2477 | - | func claimResToWH ( | |
2478 | - | let | |
2479 | - | if ((size( | |
2483 | + | let d = toString(gQ.originCaller) | |
2484 | + | let fp = jD(d, eO, eG, lE) | |
2485 | + | let C = valueOrErrorMessage(getString(bN(d)), "You don't have a duck staked") | |
2486 | + | $Tuple2(((((fp._1 ++ kf(C, fraction(Y, eO, cK))._1) :+ StringEntry(fp._2, makeString(fp._3, ":"))) :+ StringEntry(fp._4, makeString(fp._5, ":"))) ++ ls), fp._3[bo]) | |
2487 | + | } | |
2488 | + | } | |
2489 | + | ||
2490 | + | ||
2491 | + | ||
2492 | + | @Callable(gQ) | |
2493 | + | func claimResToWH (eO,lE) = { | |
2494 | + | let ls = lo(gQ) | |
2495 | + | if ((size(gQ.payments) != 0)) | |
2480 | 2496 | then throw("No payments required") | |
2481 | 2497 | else { | |
2482 | - | let d = toString( | |
2483 | - | let | |
2484 | - | $Tuple2((((( | |
2485 | - | } | |
2486 | - | } | |
2487 | - | ||
2488 | - | ||
2489 | - | ||
2490 | - | @Callable( | |
2491 | - | func flight ( | |
2492 | - | let | |
2493 | - | if ((size( | |
2498 | + | let d = toString(gQ.originCaller) | |
2499 | + | let fp = jD(d, eO, eF, lE) | |
2500 | + | $Tuple2(((((fp._1 ++ kl(d, fraction(Y, eO, cK))._1) :+ StringEntry(fp._2, makeString(fp._3, ":"))) :+ StringEntry(fp._4, makeString(fp._5, ":"))) ++ ls), fp._5[bf]) | |
2501 | + | } | |
2502 | + | } | |
2503 | + | ||
2504 | + | ||
2505 | + | ||
2506 | + | @Callable(gQ) | |
2507 | + | func flight (iW,iX) = { | |
2508 | + | let ls = lp(gQ) | |
2509 | + | if ((size(gQ.payments) != 0)) | |
2494 | 2510 | then throw("No payments required") | |
2495 | 2511 | else { | |
2496 | - | let | |
2497 | - | let | |
2498 | - | let | |
2499 | - | let | |
2500 | - | let | |
2501 | - | let | |
2502 | - | let | |
2503 | - | if (( | |
2512 | + | let bR = toString(gQ.caller) | |
2513 | + | let hv = iV(bR, iW, iX) | |
2514 | + | let jb = hv._1 | |
2515 | + | let C = hv._2 | |
2516 | + | let lm = bP(C) | |
2517 | + | let jw = valueOrElse(getString(lm), aN) | |
2518 | + | let jd = hv._4 | |
2519 | + | if ((jd == jw)) | |
2504 | 2520 | then throw("You can't fly to the same location") | |
2505 | 2521 | else { | |
2506 | - | let | |
2507 | - | let | |
2508 | - | let | |
2509 | - | let | |
2510 | - | let | |
2511 | - | let | |
2512 | - | let | |
2513 | - | let | |
2514 | - | let | |
2515 | - | then if (!( | |
2516 | - | then | |
2517 | - | else if (( | |
2518 | - | then $Tuple2( | |
2519 | - | else $Tuple2( | |
2520 | - | else if ( | |
2521 | - | then if (!( | |
2522 | + | let cx = split(jd, "_") | |
2523 | + | let lF = (cx[bs] == "T") | |
2524 | + | let lG = (cx[bs] == "D") | |
2525 | + | let gD = H(C) | |
2526 | + | let lH = valueOrElse(getString(gD), ",;,_,;,_,;,_,;,_,;,_,;,") | |
2527 | + | let lI = fq(lH, hv._5) | |
2528 | + | let lJ = lI._1 | |
2529 | + | let lK = lI._2 | |
2530 | + | let lL = if (!(cs(dl, jw))) | |
2531 | + | then if (!(cq(jd))) | |
2532 | + | then cv(jw, jd, 5) | |
2533 | + | else if ((jb > 0)) | |
2534 | + | then $Tuple2(jd, jb) | |
2535 | + | else $Tuple2(jw, 0) | |
2536 | + | else if (ci(dl, jw)) | |
2537 | + | then if (!(ci(dl, jd))) | |
2522 | 2538 | then throw("Your duck is taking part in the tournament") | |
2523 | 2539 | else { | |
2524 | - | let | |
2525 | - | let | |
2526 | - | let | |
2527 | - | if (( | |
2528 | - | then | |
2529 | - | else if (( | |
2540 | + | let ky = parseIntValue(cx[bt]) | |
2541 | + | let lM = split(jw, "_") | |
2542 | + | let ck = valueOrElse(getInteger(dl, bV), 0) | |
2543 | + | if ((ky != (parseIntValue(lM[bt]) + 1))) | |
2544 | + | then cv(jw, jd, 7) | |
2545 | + | else if ((jb > 0)) | |
2530 | 2546 | then { | |
2531 | - | let | |
2532 | - | let | |
2533 | - | then invoke( | |
2547 | + | let lN = valueOrElse(getInteger(dl, bZ(ck, C)), 0) | |
2548 | + | let lO = if ((ky > lN)) | |
2549 | + | then invoke(dl, "saveDuckResult", [C, ky], nil) | |
2534 | 2550 | else unit | |
2535 | - | if (( | |
2536 | - | then $Tuple2( | |
2551 | + | if ((lO == lO)) | |
2552 | + | then $Tuple2(jd, jb) | |
2537 | 2553 | else throw("Strict value is not equal to itself.") | |
2538 | 2554 | } | |
2539 | - | else $Tuple2( | |
2555 | + | else $Tuple2(jw, 0) | |
2540 | 2556 | } | |
2541 | - | else if (!( | |
2557 | + | else if (!(cn(jw))) | |
2542 | 2558 | then { | |
2543 | - | let | |
2559 | + | let lP = dK(invoke(this, "autoExitDelivery", [C, jb, if (lG) | |
2544 | 2560 | then "10" | |
2545 | 2561 | else "11", 0], nil)) | |
2546 | - | if (( | |
2547 | - | then if ( | |
2548 | - | then | |
2549 | - | else if (( | |
2550 | - | then $Tuple2( | |
2551 | - | else $Tuple2( | |
2562 | + | if ((lP == lP)) | |
2563 | + | then if (lG) | |
2564 | + | then lP | |
2565 | + | else if ((jb > 0)) | |
2566 | + | then $Tuple2(jd, jb) | |
2567 | + | else $Tuple2(lP._1, 0) | |
2552 | 2568 | else throw("Strict value is not equal to itself.") | |
2553 | 2569 | } | |
2554 | - | else if (!( | |
2570 | + | else if (!(lG)) | |
2555 | 2571 | then throw("Your duck is taking part in delivery") | |
2556 | - | else if (!( | |
2557 | - | then | |
2572 | + | else if (!(cn(jd))) | |
2573 | + | then cv(jw, jd, 13) | |
2558 | 2574 | else { | |
2559 | - | let | |
2560 | - | let | |
2561 | - | if (( | |
2562 | - | then | |
2563 | - | else if (if (( | |
2564 | - | then (3 > | |
2575 | + | let ky = parseIntValue(cx[bt]) | |
2576 | + | let lM = split(jw, "_") | |
2577 | + | if ((ky != (parseIntValue(lM[bt]) + 1))) | |
2578 | + | then cv(jw, jd, 14) | |
2579 | + | else if (if ((jb > 0)) | |
2580 | + | then (3 > ky) | |
2565 | 2581 | else false) | |
2566 | - | then $Tuple2( | |
2582 | + | then $Tuple2(jd, jb) | |
2567 | 2583 | else { | |
2568 | - | let | |
2569 | - | if (( | |
2570 | - | then | |
2584 | + | let lP = dK(invoke(this, "autoExitDelivery", [C, jb, "15-17", ky], nil)) | |
2585 | + | if ((lP == lP)) | |
2586 | + | then lP | |
2571 | 2587 | else throw("Strict value is not equal to itself.") | |
2572 | 2588 | } | |
2573 | 2589 | } | |
2574 | - | let | |
2575 | - | let | |
2576 | - | $Tuple2(((([StringEntry( | |
2577 | - | then [StringEntry( | |
2578 | - | else nil)) ++ | |
2579 | - | then | |
2580 | - | else | |
2590 | + | let lQ = lL._1 | |
2591 | + | let lR = lL._2 | |
2592 | + | $Tuple2(((([StringEntry(lm, lQ), StringEntry(gD, lJ), IntegerEntry(B(C), lR)] ++ ls) ++ (if (lK) | |
2593 | + | then [StringEntry(N(C), "0_0_0_0_0")] | |
2594 | + | else nil)) ++ kf(C, if ((jb > 0)) | |
2595 | + | then Z | |
2596 | + | else aa)._1), hv._3) | |
2581 | 2597 | } | |
2582 | 2598 | } | |
2583 | 2599 | } | |
2584 | 2600 | ||
2585 | 2601 | ||
2586 | 2602 | ||
2587 | - | @Callable( | |
2588 | - | func heal ( | |
2589 | - | let | |
2590 | - | if (if (if ((0 > | |
2603 | + | @Callable(gQ) | |
2604 | + | func heal (lS,lT,lU) = { | |
2605 | + | let ls = lo(gQ) | |
2606 | + | if (if (if ((0 > lS)) | |
2591 | 2607 | then true | |
2592 | - | else (0 > | |
2608 | + | else (0 > lT)) | |
2593 | 2609 | then true | |
2594 | - | else (0 > | |
2610 | + | else (0 > lU)) | |
2595 | 2611 | then throw("Quantity cannot be negative") | |
2596 | 2612 | else { | |
2597 | - | let | |
2598 | - | if ( | |
2613 | + | let C = valueOrErrorMessage(getString(bN(toString(gQ.caller))), "You don't have a duck staked") | |
2614 | + | if (kv(C)) | |
2599 | 2615 | then throw("heal_checkTournament") | |
2600 | - | else if ( | |
2616 | + | else if (kw(C)) | |
2601 | 2617 | then throw("heal_checkDelivery") | |
2602 | 2618 | else { | |
2603 | - | let | |
2604 | - | let | |
2605 | - | let | |
2606 | - | let | |
2607 | - | if (( | |
2608 | - | then throw((("HP should be < " + toString( | |
2619 | + | let lV = [lS, lT, lU] | |
2620 | + | let jh = B(C) | |
2621 | + | let ji = ak(valueOrElse(getInteger(F(C)), 0)) | |
2622 | + | let lW = valueOrElse(getInteger(jh), ji) | |
2623 | + | if ((lW >= ji)) | |
2624 | + | then throw((("HP should be < " + toString(ji)) + " to heal")) | |
2609 | 2625 | else { | |
2610 | - | let | |
2611 | - | let | |
2612 | - | let | |
2626 | + | let hR = bO(C) | |
2627 | + | let iu = hQ(hR) | |
2628 | + | let lX = if ((iu[bq] == "")) | |
2613 | 2629 | then nil | |
2614 | - | else split_4C( | |
2615 | - | func | |
2616 | - | let | |
2617 | - | let | |
2618 | - | then parseIntValue( | |
2630 | + | else split_4C(iu[bq], "_") | |
2631 | + | func lY (eX,cu) = { | |
2632 | + | let dG = eX._2 | |
2633 | + | let hm = if ((size(lX) > dG)) | |
2634 | + | then parseIntValue(lX[dG]) | |
2619 | 2635 | else 0 | |
2620 | - | if ((3 > | |
2636 | + | if ((3 > dG)) | |
2621 | 2637 | then { | |
2622 | - | let | |
2623 | - | if (( | |
2624 | - | then throw(((("You have only " + toString( | |
2625 | - | else $Tuple3(( | |
2638 | + | let lZ = lV[dG] | |
2639 | + | if ((lZ > hm)) | |
2640 | + | then throw(((("You have only " + toString(hm)) + " of ") + aU[dG])) | |
2641 | + | else $Tuple3((eX._1 :+ toString((hm - lZ))), (dG + 1), (eX._3 + (parseIntValue(split(cu, "_")[ba]) * lZ))) | |
2626 | 2642 | } | |
2627 | - | else $Tuple3(( | |
2643 | + | else $Tuple3((eX._1 :+ toString(hm)), (dG + 1), eX._3) | |
2628 | 2644 | } | |
2629 | 2645 | ||
2630 | - | let | |
2631 | - | let | |
2632 | - | let | |
2633 | - | let | |
2634 | - | func | |
2635 | - | then | |
2636 | - | else | |
2637 | - | ||
2638 | - | func | |
2639 | - | then | |
2646 | + | let fp = { | |
2647 | + | let eZ = aY | |
2648 | + | let fa = size(eZ) | |
2649 | + | let fb = $Tuple3(nil, 0, 0) | |
2650 | + | func fc (fd,fe) = if ((fe >= fa)) | |
2651 | + | then fd | |
2652 | + | else lY(fd, eZ[fe]) | |
2653 | + | ||
2654 | + | func ff (fd,fe) = if ((fe >= fa)) | |
2655 | + | then fd | |
2640 | 2656 | else throw("List size exceeds 50") | |
2641 | 2657 | ||
2642 | - | | |
2658 | + | ff(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fb, 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) | |
2643 | 2659 | } | |
2644 | - | let | |
2645 | - | $Tuple2((([IntegerEntry( | |
2660 | + | let ma = min([ji, (lW + fp._3)]) | |
2661 | + | $Tuple2((([IntegerEntry(jh, ma), StringEntry(hR, makeString_2C([iu[bn], iu[bo], iu[bp], makeString(fp._1, "_")], ":"))] ++ ls) ++ kf(C, (ah * ((lS + lT) + lU)))._1), ma) | |
2646 | 2662 | } | |
2647 | 2663 | } | |
2648 | 2664 | } | |
2649 | 2665 | } | |
2650 | 2666 | ||
2651 | 2667 | ||
2652 | 2668 | ||
2653 | - | @Callable( | |
2669 | + | @Callable(gQ) | |
2654 | 2670 | func healES () = { | |
2655 | - | let | |
2656 | - | if ((size( | |
2671 | + | let ls = lo(gQ) | |
2672 | + | if ((size(gQ.payments) != 1)) | |
2657 | 2673 | then throw("Exactly one payment required") | |
2658 | 2674 | else { | |
2659 | - | let | |
2660 | - | if (( | |
2675 | + | let lt = value(gQ.payments[0]) | |
2676 | + | if ((lt.assetId != cD)) | |
2661 | 2677 | then throw("Allowed USDT payment only!") | |
2662 | 2678 | else { | |
2663 | - | let | |
2664 | - | if ( | |
2679 | + | let C = valueOrErrorMessage(getString(bN(toString(gQ.caller))), "You don't have a duck staked") | |
2680 | + | if (kv(C)) | |
2665 | 2681 | then throw("healES_checkTournament") | |
2666 | - | else if ( | |
2682 | + | else if (kw(C)) | |
2667 | 2683 | then throw("healES_checkDelivery") | |
2668 | 2684 | else { | |
2669 | - | let | |
2670 | - | let | |
2671 | - | let | |
2672 | - | if (( | |
2685 | + | let jh = B(C) | |
2686 | + | let ji = ak(valueOrElse(getInteger(F(C)), 0)) | |
2687 | + | let lW = valueOrElse(getInteger(jh), ji) | |
2688 | + | if ((lW > 0)) | |
2673 | 2689 | then throw("HP should be 0 to call Emergency Service") | |
2674 | 2690 | else { | |
2675 | - | let | |
2676 | - | let | |
2677 | - | let | |
2691 | + | let hR = bO(C) | |
2692 | + | let iu = hQ(hR) | |
2693 | + | let lX = if ((iu[bq] == "")) | |
2678 | 2694 | then nil | |
2679 | - | else split_4C( | |
2680 | - | let | |
2681 | - | then parseIntValue( | |
2695 | + | else split_4C(iu[bq], "_") | |
2696 | + | let mb = if ((size(lX) > 0)) | |
2697 | + | then parseIntValue(lX[0]) | |
2682 | 2698 | else 0 | |
2683 | - | let | |
2684 | - | then parseIntValue( | |
2699 | + | let mc = if ((size(lX) > 1)) | |
2700 | + | then parseIntValue(lX[1]) | |
2685 | 2701 | else 0 | |
2686 | - | let | |
2687 | - | then parseIntValue( | |
2702 | + | let md = if ((size(lX) > 2)) | |
2703 | + | then parseIntValue(lX[2]) | |
2688 | 2704 | else 0 | |
2689 | - | if (if (if (( | |
2705 | + | if (if (if ((mb > 0)) | |
2690 | 2706 | then true | |
2691 | - | else ( | |
2707 | + | else (mc > 0)) | |
2692 | 2708 | then true | |
2693 | - | else ( | |
2709 | + | else (md > 0)) | |
2694 | 2710 | then throw("You have to use own Medical Kit") | |
2695 | 2711 | else { | |
2696 | - | let | |
2697 | - | let | |
2698 | - | then split_4C(value( | |
2712 | + | let me = getString(di, bS()) | |
2713 | + | let mf = if (isDefined(me)) | |
2714 | + | then split_4C(value(me), "_") | |
2699 | 2715 | else nil | |
2700 | - | let | |
2701 | - | then parseIntValue( | |
2716 | + | let mg = if ((size(mf) > 0)) | |
2717 | + | then parseIntValue(mf[0]) | |
2702 | 2718 | else 0 | |
2703 | - | if ((0 >= | |
2719 | + | if ((0 >= mg)) | |
2704 | 2720 | then throw("There are no Medical Kits L1 at Emergency Service storage") | |
2705 | 2721 | else { | |
2706 | - | let | |
2707 | - | let | |
2708 | - | let | |
2709 | - | let | |
2710 | - | let | |
2711 | - | if (( | |
2712 | - | then throw(("Payment attached should be " + toString( | |
2722 | + | let ma = (lW + parseIntValue(split(aY[0], "_")[ba])) | |
2723 | + | let mh = makeString([toString((mg - 1)), removeByIndex(mf, 0)], "_") | |
2724 | + | let cu = split(aY[0], "_") | |
2725 | + | let mi = ct(cu) | |
2726 | + | let mj = fraction((mi * aP), aO, (cK * bd)) | |
2727 | + | if ((lt.amount != mj)) | |
2728 | + | then throw(("Payment attached should be " + toString(mj))) | |
2713 | 2729 | else { | |
2714 | - | let | |
2715 | - | $Tuple2((( | |
2730 | + | let fp = dC(invoke(di, "updateEsStorage", [mh], [AttachedPayment(cD, mj)])) | |
2731 | + | $Tuple2(((ls :+ IntegerEntry(jh, ma)) ++ kf(C, ab)._1), fp) | |
2716 | 2732 | } | |
2717 | 2733 | } | |
2718 | 2734 | } | |
2719 | 2735 | } | |
2720 | 2736 | } | |
2721 | 2737 | } | |
2722 | 2738 | } | |
2723 | 2739 | } | |
2724 | 2740 | ||
2725 | 2741 | ||
2726 | 2742 | ||
2727 | - | @Callable( | |
2728 | - | func updateBackpack ( | |
2743 | + | @Callable(gQ) | |
2744 | + | func updateBackpack (C,mk) = if ((gQ.caller != di)) | |
2729 | 2745 | then throw("permission denied") | |
2730 | - | else $Tuple2([StringEntry( | |
2731 | - | ||
2732 | - | ||
2733 | - | ||
2734 | - | @Callable( | |
2746 | + | else $Tuple2([StringEntry(bO(C), mk)], mk) | |
2747 | + | ||
2748 | + | ||
2749 | + | ||
2750 | + | @Callable(gQ) | |
2735 | 2751 | func commitForRandom () = { | |
2736 | - | let | |
2737 | - | let | |
2738 | - | let d = toString( | |
2739 | - | $Tuple2(([IntegerEntry( | |
2740 | - | } | |
2741 | - | ||
2742 | - | ||
2743 | - | ||
2744 | - | @Callable( | |
2752 | + | let ls = lo(gQ) | |
2753 | + | let ml = (height + dv) | |
2754 | + | let d = toString(gQ.caller) | |
2755 | + | $Tuple2(([IntegerEntry(dw(d), ml)] ++ ls), ml) | |
2756 | + | } | |
2757 | + | ||
2758 | + | ||
2759 | + | ||
2760 | + | @Callable(gQ) | |
2745 | 2761 | func buySLand () = { | |
2746 | - | let | |
2747 | - | if ((size( | |
2762 | + | let ls = lo(gQ) | |
2763 | + | if ((size(gQ.payments) != 1)) | |
2748 | 2764 | then throw("Exactly one payment required") | |
2749 | 2765 | else { | |
2750 | - | let | |
2751 | - | if (( | |
2766 | + | let lt = value(gQ.payments[0]) | |
2767 | + | if ((lt.assetId != cD)) | |
2752 | 2768 | then throw("Allowed USDT payment only!") | |
2753 | - | else if (( | |
2754 | - | then throw(("Payment attached should be " + toString( | |
2769 | + | else if ((lt.amount != em)) | |
2770 | + | then throw(("Payment attached should be " + toString(em))) | |
2755 | 2771 | else { | |
2756 | - | let | |
2757 | - | let | |
2758 | - | $Tuple2(((( | |
2772 | + | let fp = iO(gQ.caller, gQ.transactionId) | |
2773 | + | let mm = dF(invoke(dm, "burnAcres", [en], nil)) | |
2774 | + | $Tuple2((((fp._1 :+ ScriptTransfer(di, lt.amount, cD)) ++ kl(toString(gQ.caller), ad)._1) ++ ls), $Tuple2(fp._2._1, mm)) | |
2759 | 2775 | } | |
2760 | 2776 | } | |
2761 | 2777 | } | |
2762 | 2778 | ||
2763 | 2779 | ||
2764 | 2780 | ||
2765 | - | @Callable( | |
2766 | - | func expedition ( | |
2767 | - | let | |
2768 | - | if ((size( | |
2781 | + | @Callable(gQ) | |
2782 | + | func expedition (iW,iX) = { | |
2783 | + | let ls = lo(gQ) | |
2784 | + | if ((size(gQ.payments) != 0)) | |
2769 | 2785 | then throw("No payments required") | |
2770 | 2786 | else { | |
2771 | - | let | |
2772 | - | let | |
2773 | - | let | |
2774 | - | let | |
2775 | - | let | |
2776 | - | let | |
2777 | - | let | |
2778 | - | let | |
2779 | - | let | |
2780 | - | let | |
2781 | - | let | |
2782 | - | let | |
2783 | - | let | |
2784 | - | let | |
2785 | - | let | |
2786 | - | let | |
2787 | - | then $Tuple3([IntegerEntry( | |
2788 | - | else $Tuple3(( | |
2789 | - | then [StringEntry( | |
2790 | - | else ((((nil :+ StringEntry( | |
2791 | - | if ( | |
2787 | + | let bR = toString(gQ.caller) | |
2788 | + | let hv = iV(bR, iW, iX) | |
2789 | + | let C = hv._2 | |
2790 | + | let jh = B(C) | |
2791 | + | let hR = bO(C) | |
2792 | + | let iu = hQ(hR) | |
2793 | + | let jW = split(iu[bp], "_") | |
2794 | + | let jY = makeString(fj(true, jW, el), "_") | |
2795 | + | let gD = H(C) | |
2796 | + | let lH = valueOrElse(getString(gD), ",;,_,;,_,;,_,;,_,;,_,;,") | |
2797 | + | let mn = fq(lH, hv._5) | |
2798 | + | let lJ = mn._1 | |
2799 | + | let lK = mn._2 | |
2800 | + | let mo = iO(gQ.caller, gQ.transactionId) | |
2801 | + | let iU = mo._2._1 | |
2802 | + | let fp = if ((0 >= hv._1)) | |
2803 | + | then $Tuple3([IntegerEntry(jh, 0), StringEntry(gD, lJ)], "", 0) | |
2804 | + | else $Tuple3((mo._1 ++ (if (lK) | |
2805 | + | then [StringEntry(N(C), "0_0_0_0_0")] | |
2806 | + | else ((((nil :+ StringEntry(bP(C), makeString([mo._2._2, "L", iU], "_"))) :+ IntegerEntry(jh, hv._1)) :+ StringEntry(gD, lJ)) :+ StringEntry(hR, makeString([iu[bn], iu[bo], jY, iu[bq]], ":"))))), iU, hv._3) | |
2807 | + | if (kv(C)) | |
2792 | 2808 | then throw("expedition_checkTournament") | |
2793 | - | else if ( | |
2809 | + | else if (kw(C)) | |
2794 | 2810 | then throw("expedition_checkDelivery") | |
2795 | 2811 | else { | |
2796 | - | let | |
2797 | - | $Tuple2((( | |
2812 | + | let mm = dF(invoke(dm, "burnAcres", [en], nil)) | |
2813 | + | $Tuple2(((fp._1 ++ kf(C, ad)._1) ++ ls), $Tuple3(fp._2, fp._3, mm)) | |
2798 | 2814 | } | |
2799 | 2815 | } | |
2800 | 2816 | } | |
2801 | 2817 | ||
2802 | 2818 | ||
2803 | 2819 | ||
2804 | - | @Callable( | |
2820 | + | @Callable(gQ) | |
2805 | 2821 | func buySLandForAcres () = { | |
2806 | - | let | |
2807 | - | if ((size( | |
2822 | + | let ls = lo(gQ) | |
2823 | + | if ((size(gQ.payments) != 1)) | |
2808 | 2824 | then throw("exactly 1 payment must be attached") | |
2809 | 2825 | else { | |
2810 | - | let | |
2811 | - | let | |
2812 | - | if (if (!(isDefined( | |
2826 | + | let lt = gQ.payments[0] | |
2827 | + | let fw = lt.amount | |
2828 | + | if (if (!(isDefined(lt.assetId))) | |
2813 | 2829 | then true | |
2814 | - | else (value( | |
2830 | + | else (value(lt.assetId) != du)) | |
2815 | 2831 | then throw("ACRES payments only!") | |
2816 | - | else if (( | |
2817 | - | then throw(("Payment attached should be " + toString( | |
2832 | + | else if ((fw != en)) | |
2833 | + | then throw(("Payment attached should be " + toString(en))) | |
2818 | 2834 | else { | |
2819 | - | let | |
2820 | - | let | |
2821 | - | $Tuple2((( | |
2835 | + | let fp = iO(gQ.caller, gQ.transactionId) | |
2836 | + | let mm = dF(invoke(dm, "burnAcres", [en], [AttachedPayment(du, fw)])) | |
2837 | + | $Tuple2(((fp._1 ++ kl(toString(gQ.caller), ad)._1) ++ ls), $Tuple2(fp._2._1, mm)) | |
2822 | 2838 | } | |
2823 | 2839 | } | |
2824 | 2840 | } | |
2825 | 2841 | ||
2826 | 2842 | ||
2827 | 2843 | ||
2828 | - | @Callable( | |
2829 | - | func upgradeInfra ( | |
2830 | - | let | |
2831 | - | if ((size( | |
2844 | + | @Callable(gQ) | |
2845 | + | func upgradeInfra (R) = { | |
2846 | + | let ls = lo(gQ) | |
2847 | + | if ((size(gQ.payments) != 0)) | |
2832 | 2848 | then throw("No payments required") | |
2833 | 2849 | else { | |
2834 | - | let | |
2835 | - | let | |
2836 | - | $Tuple2((( | |
2837 | - | } | |
2838 | - | } | |
2839 | - | ||
2840 | - | ||
2841 | - | ||
2842 | - | @Callable( | |
2843 | - | func activateArtifact ( | |
2844 | - | let | |
2845 | - | if ((size( | |
2850 | + | let fp = jQ(true, gQ.caller, 0, R) | |
2851 | + | let C = valueOrErrorMessage(getString(bN(toString(gQ.caller))), "You don't have a duck staked") | |
2852 | + | $Tuple2(((fp._1 ++ ls) ++ kf(C, fraction(ae, fp._3, cK))._1), fp._2) | |
2853 | + | } | |
2854 | + | } | |
2855 | + | ||
2856 | + | ||
2857 | + | ||
2858 | + | @Callable(gQ) | |
2859 | + | func activateArtifact (mp,mq) = { | |
2860 | + | let ls = lo(gQ) | |
2861 | + | if ((size(gQ.payments) != 0)) | |
2846 | 2862 | then throw("No payments required") | |
2847 | 2863 | else { | |
2848 | - | let d = toString( | |
2849 | - | let | |
2850 | - | let | |
2851 | - | if (("PRESALE" == | |
2852 | - | then | |
2853 | - | else if (("ONBOARD" == | |
2854 | - | then | |
2864 | + | let d = toString(gQ.caller) | |
2865 | + | let fp = { | |
2866 | + | let cE = mp | |
2867 | + | if (("PRESALE" == cE)) | |
2868 | + | then kt(d, mq) | |
2869 | + | else if (("ONBOARD" == cE)) | |
2870 | + | then km(d) | |
2855 | 2871 | else throw("Unknown artifact") | |
2856 | 2872 | } | |
2857 | - | ( | |
2858 | - | } | |
2859 | - | } | |
2860 | - | ||
2861 | - | ||
2862 | - | ||
2863 | - | @Callable( | |
2864 | - | func mergeLands ( | |
2865 | - | let | |
2866 | - | if ((size( | |
2873 | + | (fp ++ ls) | |
2874 | + | } | |
2875 | + | } | |
2876 | + | ||
2877 | + | ||
2878 | + | ||
2879 | + | @Callable(gQ) | |
2880 | + | func mergeLands (kL) = { | |
2881 | + | let ls = lo(gQ) | |
2882 | + | if ((size(gQ.payments) != 0)) | |
2867 | 2883 | then throw("No payments required") | |
2868 | 2884 | else { | |
2869 | - | let | |
2870 | - | $Tuple2((( | |
2871 | - | } | |
2872 | - | } | |
2873 | - | ||
2874 | - | ||
2875 | - | ||
2876 | - | @Callable( | |
2877 | - | func cargoExchange ( | |
2878 | - | let | |
2879 | - | if ((size( | |
2885 | + | let fp = lj(toString(gQ.caller), kL) | |
2886 | + | $Tuple2(((fp._1 ++ ls) ++ kl(toString(gQ.caller), af)._1), fp._2) | |
2887 | + | } | |
2888 | + | } | |
2889 | + | ||
2890 | + | ||
2891 | + | ||
2892 | + | @Callable(gQ) | |
2893 | + | func cargoExchange (mr,R) = { | |
2894 | + | let ls = lo(gQ) | |
2895 | + | if ((size(gQ.payments) != 0)) | |
2880 | 2896 | then throw("No payments required") | |
2881 | 2897 | else { | |
2882 | - | let | |
2883 | - | let d = toString( | |
2884 | - | let | |
2885 | - | let | |
2886 | - | if (!(isDefined(getInteger( | |
2887 | - | then throw(( | |
2898 | + | let it = split_4C(mr, ":") | |
2899 | + | let d = toString(gQ.originCaller) | |
2900 | + | let jy = value(assetInfo(fromBase58String(R))) | |
2901 | + | let jz = bx(R) | |
2902 | + | if (!(isDefined(getInteger(jz)))) | |
2903 | + | then throw((jy.name + " is not staked")) | |
2888 | 2904 | else { | |
2889 | - | let | |
2890 | - | if (( | |
2891 | - | then throw(( | |
2905 | + | let jB = valueOrErrorMessage(getString(bu(R)), (("NFT " + jy.name) + " is orphaned")) | |
2906 | + | if ((jB != d)) | |
2907 | + | then throw((aG + " is not yours")) | |
2892 | 2908 | else { | |
2893 | - | let | |
2894 | - | let | |
2895 | - | let | |
2896 | - | let | |
2897 | - | let | |
2898 | - | if (( | |
2899 | - | then throw((("Duck location type is " + | |
2900 | - | else if (( | |
2901 | - | then throw(("Duck should be on the land " + | |
2909 | + | let if = (dN(split(jy.description, "_")[do]) / cL) | |
2910 | + | let ig = valueOrElse(getInteger(bE(R)), 0) | |
2911 | + | let C = valueOrErrorMessage(getString(bN(d)), "You don't have a duck staked") | |
2912 | + | let jw = valueOrElse(getString(bP(C)), aN) | |
2913 | + | let cl = split(value(jw), "_") | |
2914 | + | if ((cl[bs] != "L")) | |
2915 | + | then throw((("Duck location type is " + cl[bs]) + ", but should be L")) | |
2916 | + | else if ((cl[bt] != R)) | |
2917 | + | then throw(("Duck should be on the land " + R)) | |
2902 | 2918 | else { | |
2903 | - | let | |
2904 | - | let | |
2905 | - | let | |
2906 | - | let | |
2907 | - | let | |
2908 | - | let | |
2909 | - | let | |
2910 | - | let | |
2911 | - | ([StringEntry( | |
2919 | + | let ie = bD(R) | |
2920 | + | let hV = id(ie, if, ig) | |
2921 | + | let hR = bO(C) | |
2922 | + | let iu = hQ(hR) | |
2923 | + | let fp = is(it, hV, iu) | |
2924 | + | let im = split(hV[bi], "_") | |
2925 | + | let jN = (parseIntValue(im[bk]) + fp._7) | |
2926 | + | let jO = (parseIntValue(im[bl]) - fp._7) | |
2927 | + | ([StringEntry(hR, makeString_2C([iu[bn], fp._4, fp._5, fp._6], ":")), StringEntry(ie, makeString_2C([hV[be], fp._1, fp._2, fp._3, makeString([im[bj], toString(jN), toString(jO), im[bm]], "_")], ":"))] ++ ls) | |
2912 | 2928 | } | |
2913 | 2929 | } | |
2914 | 2930 | } | |
2915 | 2931 | } | |
2916 | 2932 | } | |
2917 | 2933 | ||
2918 | 2934 | ||
2919 | 2935 | ||
2920 | - | @Callable( | |
2921 | - | func saveWarehouse ( | |
2936 | + | @Callable(gQ) | |
2937 | + | func saveWarehouse (ii,R) = if ((gQ.caller != di)) | |
2922 | 2938 | then throw("Access denied") | |
2923 | 2939 | else { | |
2924 | - | let | |
2925 | - | let | |
2926 | - | if ((size( | |
2940 | + | let ie = bD(R) | |
2941 | + | let ij = split_4C(ii, ":") | |
2942 | + | if ((size(ij) != 5)) | |
2927 | 2943 | then throw("warehouse string should contain 4 ':' separators") | |
2928 | 2944 | else { | |
2929 | - | let | |
2930 | - | let | |
2931 | - | let | |
2932 | - | let | |
2933 | - | let | |
2934 | - | $Tuple2([StringEntry( | |
2945 | + | let ms = split(ij[bi], "_")[bj] | |
2946 | + | let jN = hU(ij) | |
2947 | + | let mt = hS(ij[be]) | |
2948 | + | let jO = ((mt - parseIntValue(ms)) - jN) | |
2949 | + | let mu = makeString_2C([ij[be], ij[bf], ij[bg], ij[bh], makeString([ms, toString(jN), toString(jO), toString(mt)], "_")], ":") | |
2950 | + | $Tuple2([StringEntry(ie, mu)], mu) | |
2935 | 2951 | } | |
2936 | 2952 | } | |
2937 | 2953 | ||
2938 | 2954 | ||
2939 | 2955 | ||
2940 | - | @Callable( | |
2941 | - | func fixWarehouseFormat ( | |
2956 | + | @Callable(gQ) | |
2957 | + | func fixWarehouseFormat (R) = if ((gQ.caller != dh)) | |
2942 | 2958 | then throw("Access denied") | |
2943 | 2959 | else { | |
2944 | - | let | |
2945 | - | let | |
2946 | - | let | |
2947 | - | let | |
2948 | - | let | |
2949 | - | let | |
2950 | - | let | |
2951 | - | let | |
2952 | - | let | |
2953 | - | let | |
2954 | - | $Tuple2([StringEntry( | |
2960 | + | let ie = bD(R) | |
2961 | + | let jy = value(assetInfo(fromBase58String(R))) | |
2962 | + | let if = (dN(split(jy.description, "_")[do]) / cL) | |
2963 | + | let ig = valueOrElse(getInteger(bE(R)), 0) | |
2964 | + | let ij = id(ie, if, ig) | |
2965 | + | let ms = dF(invoke(di, "recalcLockedVolumeREADONLY", [R, ij], nil)) | |
2966 | + | let jN = hU(ij) | |
2967 | + | let mt = hS(ij[be]) | |
2968 | + | let jO = ((mt - ms) - jN) | |
2969 | + | let mu = makeString_2C([ij[be], ij[bf], ij[bg], ij[bh], makeString([toString(ms), toString(jN), toString(jO), toString(mt)], "_")], ":") | |
2970 | + | $Tuple2([StringEntry(ie, mu)], mu) | |
2955 | 2971 | } | |
2956 | 2972 | ||
2957 | 2973 | ||
2958 | 2974 | ||
2959 | - | @Callable( | |
2960 | - | func fixContinentProportions ( | |
2975 | + | @Callable(gQ) | |
2976 | + | func fixContinentProportions (kL) = if ((gQ.caller != dh)) | |
2961 | 2977 | then throw("Access denied") | |
2962 | 2978 | else { | |
2963 | - | func | |
2964 | - | ||
2965 | - | let | |
2966 | - | let | |
2967 | - | let | |
2968 | - | let | |
2969 | - | func | |
2970 | - | then | |
2971 | - | else | |
2972 | - | ||
2973 | - | func | |
2974 | - | then | |
2979 | + | func mv (eX,mw) = (eX :+ valueOrElse(getString(dy(mw)), "0_0_0_0_0_0")) | |
2980 | + | ||
2981 | + | let gA = { | |
2982 | + | let eZ = aV | |
2983 | + | let fa = size(eZ) | |
2984 | + | let fb = nil | |
2985 | + | func fc (fd,fe) = if ((fe >= fa)) | |
2986 | + | then fd | |
2987 | + | else mv(fd, eZ[fe]) | |
2988 | + | ||
2989 | + | func ff (fd,fe) = if ((fe >= fa)) | |
2990 | + | then fd | |
2975 | 2991 | else throw("List size exceeds 5") | |
2976 | 2992 | ||
2977 | - | | |
2978 | - | } | |
2979 | - | func | |
2980 | - | let | |
2981 | - | let | |
2982 | - | let | |
2983 | - | let | |
2984 | - | let | |
2985 | - | let | |
2986 | - | let | |
2987 | - | let | |
2988 | - | let | |
2989 | - | if (("Americas" == | |
2990 | - | then [ | |
2991 | - | else if (("Europe" == | |
2992 | - | then [ | |
2993 | - | else if (("Asia" == | |
2994 | - | then [ | |
2995 | - | else if (("Africa" == | |
2996 | - | then [ | |
2997 | - | else if (("Oceania" == | |
2998 | - | then [ | |
2993 | + | ff(fc(fc(fc(fc(fc(fb, 0), 1), 2), 3), 4), 5) | |
2994 | + | } | |
2995 | + | func mx (eX,R) = { | |
2996 | + | let jy = value(assetInfo(fromBase58String(R))) | |
2997 | + | let jC = split(jy.description, "_") | |
2998 | + | let if = (dN(jC[do]) / cL) | |
2999 | + | let mw = jC[dq] | |
3000 | + | let gM = gS(jC[dp]) | |
3001 | + | let hu = value(indexOf(aV, mw)) | |
3002 | + | let la = split(eX[hu], "_") | |
3003 | + | let my = makeString(gK(la, gM, if, 1), "_") | |
3004 | + | let cE = mw | |
3005 | + | if (("Americas" == cE)) | |
3006 | + | then [my, eX[1], eX[2], eX[3], eX[4]] | |
3007 | + | else if (("Europe" == cE)) | |
3008 | + | then [eX[0], my, eX[2], eX[3], eX[4]] | |
3009 | + | else if (("Asia" == cE)) | |
3010 | + | then [eX[0], eX[1], my, eX[3], eX[4]] | |
3011 | + | else if (("Africa" == cE)) | |
3012 | + | then [eX[0], eX[1], eX[2], my, eX[4]] | |
3013 | + | else if (("Oceania" == cE)) | |
3014 | + | then [eX[0], eX[1], eX[2], eX[3], my] | |
2999 | 3015 | else throw("wrong continent") | |
3000 | 3016 | } | |
3001 | 3017 | ||
3002 | - | let | |
3003 | - | let | |
3004 | - | let | |
3005 | - | let | |
3006 | - | func | |
3007 | - | then | |
3008 | - | else | |
3009 | - | ||
3010 | - | func | |
3011 | - | then | |
3018 | + | let fi = { | |
3019 | + | let eZ = kL | |
3020 | + | let fa = size(eZ) | |
3021 | + | let fb = gA | |
3022 | + | func hL (fd,fe) = if ((fe >= fa)) | |
3023 | + | then fd | |
3024 | + | else mx(fd, eZ[fe]) | |
3025 | + | ||
3026 | + | func hM (fd,fe) = if ((fe >= fa)) | |
3027 | + | then fd | |
3012 | 3028 | else throw("List size exceeds 100") | |
3013 | 3029 | ||
3014 | - | | |
3015 | - | } | |
3016 | - | $Tuple2([StringEntry( | |
3030 | + | 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(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(fb, 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), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100) | |
3031 | + | } | |
3032 | + | $Tuple2([StringEntry(dy("Americas"), fi[0]), StringEntry(dy("Europe"), fi[1]), StringEntry(dy("Asia"), fi[2]), StringEntry(dy("Africa"), fi[3]), StringEntry(dy("Oceania"), fi[4])], 0) | |
3017 | 3033 | } | |
3018 | 3034 | ||
3019 | 3035 | ||
3020 | 3036 | ||
3021 | - | @Callable( | |
3022 | - | func fixStakedPieces ( | |
3037 | + | @Callable(gQ) | |
3038 | + | func fixStakedPieces (cS) = if ((gQ.caller != dh)) | |
3023 | 3039 | then throw("Access denied") | |
3024 | 3040 | else { | |
3025 | - | let | |
3041 | + | let le = if ((cS == "")) | |
3026 | 3042 | then 0 | |
3027 | 3043 | else { | |
3028 | - | let | |
3029 | - | let | |
3030 | - | then split_51C(value( | |
3044 | + | let kX = getString(ar, dA(cS)) | |
3045 | + | let kT = if (isDefined(kX)) | |
3046 | + | then split_51C(value(kX), "_") | |
3031 | 3047 | else nil | |
3032 | - | func | |
3033 | - | let | |
3034 | - | let | |
3035 | - | ( | |
3048 | + | func mz (eX,R) = { | |
3049 | + | let jy = value(assetInfo(fromBase58String(R))) | |
3050 | + | let dO = split(jy.description, "_")[do] | |
3051 | + | (eX + dN(dO)) | |
3036 | 3052 | } | |
3037 | 3053 | ||
3038 | - | let | |
3039 | - | let | |
3040 | - | let | |
3041 | - | func | |
3042 | - | then | |
3043 | - | else | |
3044 | - | ||
3045 | - | func | |
3046 | - | then | |
3054 | + | let eZ = kT | |
3055 | + | let fa = size(eZ) | |
3056 | + | let fb = 0 | |
3057 | + | func fc (fd,fe) = if ((fe >= fa)) | |
3058 | + | then fd | |
3059 | + | else mz(fd, eZ[fe]) | |
3060 | + | ||
3061 | + | func ff (fd,fe) = if ((fe >= fa)) | |
3062 | + | then fd | |
3047 | 3063 | else throw("List size exceeds 100") | |
3048 | 3064 | ||
3049 | - | | |
3065 | + | ff(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fb, 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), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100) | |
3050 | 3066 | } | |
3051 | - | $Tuple2([IntegerEntry( | |
3067 | + | $Tuple2([IntegerEntry(dB(cS), le)], le) | |
3052 | 3068 | } | |
3053 | 3069 | ||
3054 | 3070 | ||
3055 | 3071 | ||
3056 | - | @Callable( | |
3057 | - | func setCustomName ( | |
3058 | - | let | |
3059 | - | if ((size( | |
3072 | + | @Callable(gQ) | |
3073 | + | func setCustomName (bv,kV,bz) = { | |
3074 | + | let ls = lo(gQ) | |
3075 | + | if ((size(gQ.payments) != 1)) | |
3060 | 3076 | then throw("Exactly one payment required") | |
3061 | 3077 | else { | |
3062 | - | let | |
3063 | - | if (( | |
3078 | + | let lt = value(gQ.payments[0]) | |
3079 | + | if ((lt.assetId != cD)) | |
3064 | 3080 | then throw("Allowed USDT payment only!") | |
3065 | - | else if (( | |
3066 | - | then throw(("Payment should be " + toString( | |
3067 | - | else if (contains( | |
3068 | - | then throw(("Name should not contain '__': " + | |
3069 | - | else if ((size( | |
3070 | - | then throw(("Name too long, maxLength=" + toString( | |
3081 | + | else if ((lt.amount != ei)) | |
3082 | + | then throw(("Payment should be " + toString(ei))) | |
3083 | + | else if (contains(kV, "__")) | |
3084 | + | then throw(("Name should not contain '__': " + kV)) | |
3085 | + | else if ((size(kV) > ej)) | |
3086 | + | then throw(("Name too long, maxLength=" + toString(ej))) | |
3071 | 3087 | else { | |
3072 | - | let d = toString( | |
3073 | - | let | |
3074 | - | let | |
3075 | - | if (("ACCOUNT" == | |
3088 | + | let d = toString(gQ.originCaller) | |
3089 | + | let mA = { | |
3090 | + | let cE = bz | |
3091 | + | if (("ACCOUNT" == cE)) | |
3076 | 3092 | then { | |
3077 | - | let | |
3078 | - | let | |
3079 | - | if (isDefined( | |
3080 | - | then throw(("Name already registered: " + | |
3093 | + | let mB = eD(kV) | |
3094 | + | let mC = getString(mB) | |
3095 | + | if (isDefined(mC)) | |
3096 | + | then throw(("Name already registered: " + kV)) | |
3081 | 3097 | else { | |
3082 | - | let | |
3083 | - | let | |
3084 | - | let | |
3085 | - | then [DeleteEntry( | |
3098 | + | let mD = bH(d) | |
3099 | + | let mE = getString(mD) | |
3100 | + | let mF = if (isDefined(mE)) | |
3101 | + | then [DeleteEntry(eD(value(mE)))] | |
3086 | 3102 | else nil | |
3087 | - | ((( | |
3103 | + | (((mF :+ StringEntry(mD, kV)) :+ StringEntry(mB, d)) ++ kl(d, ac)._1) | |
3088 | 3104 | } | |
3089 | 3105 | } | |
3090 | - | else if (("LAND" == | |
3106 | + | else if (("LAND" == cE)) | |
3091 | 3107 | then { | |
3092 | - | let | |
3093 | - | let | |
3094 | - | if (!(isDefined(getInteger( | |
3095 | - | then throw(( | |
3108 | + | let jy = value(assetInfo(fromBase58String(bv))) | |
3109 | + | let jz = bx(bv) | |
3110 | + | if (!(isDefined(getInteger(jz)))) | |
3111 | + | then throw((jy.name + " is not staked")) | |
3096 | 3112 | else { | |
3097 | - | let | |
3098 | - | if (( | |
3099 | - | then throw(( | |
3113 | + | let jB = valueOrErrorMessage(getString(bu(bv)), (("NFT " + jy.name) + " is orphaned")) | |
3114 | + | if ((jB != d)) | |
3115 | + | then throw((aG + " is not yours")) | |
3100 | 3116 | else { | |
3101 | - | let | |
3102 | - | let | |
3103 | - | if (isDefined( | |
3104 | - | then throw(("Name already registered: " + | |
3117 | + | let mB = ew(kV) | |
3118 | + | let mC = getString(mB) | |
3119 | + | if (isDefined(mC)) | |
3120 | + | then throw(("Name already registered: " + kV)) | |
3105 | 3121 | else { | |
3106 | - | let | |
3107 | - | let | |
3108 | - | let | |
3109 | - | then [DeleteEntry( | |
3122 | + | let mG = bw(bv) | |
3123 | + | let mE = getString(mG) | |
3124 | + | let mF = if (isDefined(mE)) | |
3125 | + | then [DeleteEntry(ew(value(mE)))] | |
3110 | 3126 | else nil | |
3111 | - | ((( | |
3127 | + | (((mF :+ StringEntry(mG, kV)) :+ StringEntry(mB, bv)) ++ kl(d, ac)._1) | |
3112 | 3128 | } | |
3113 | 3129 | } | |
3114 | 3130 | } | |
3115 | 3131 | } | |
3116 | - | else if (("DUCK" == | |
3132 | + | else if (("DUCK" == cE)) | |
3117 | 3133 | then { | |
3118 | - | let | |
3119 | - | let | |
3120 | - | if (if (!(isDefined(getInteger( | |
3134 | + | let jy = value(assetInfo(fromBase58String(bv))) | |
3135 | + | let jz = bx(bv) | |
3136 | + | if (if (!(isDefined(getInteger(jz)))) | |
3121 | 3137 | then true | |
3122 | - | else !(isDefined(getString( | |
3123 | - | then throw(( | |
3138 | + | else !(isDefined(getString(bN(d))))) | |
3139 | + | then throw((jy.name + " is not staked")) | |
3124 | 3140 | else { | |
3125 | - | let | |
3126 | - | if (( | |
3127 | - | then throw(( | |
3141 | + | let jB = valueOrErrorMessage(getString(bM(bv)), (("NFT " + jy.name) + " is orphaned")) | |
3142 | + | if ((jB != d)) | |
3143 | + | then throw((aH + " is not yours")) | |
3128 | 3144 | else { | |
3129 | - | let | |
3130 | - | let | |
3131 | - | if (isDefined( | |
3132 | - | then throw(("Name already registered: " + | |
3145 | + | let mB = eC(kV) | |
3146 | + | let mC = getString(mB) | |
3147 | + | if (isDefined(mC)) | |
3148 | + | then throw(("Name already registered: " + kV)) | |
3133 | 3149 | else { | |
3134 | - | let | |
3135 | - | let | |
3136 | - | let | |
3137 | - | then [DeleteEntry( | |
3150 | + | let mG = bG(bv) | |
3151 | + | let mE = getString(mG) | |
3152 | + | let mF = if (isDefined(mE)) | |
3153 | + | then [DeleteEntry(eC(value(mE)))] | |
3138 | 3154 | else nil | |
3139 | - | ((( | |
3155 | + | (((mF :+ StringEntry(mG, kV)) :+ StringEntry(mB, bv)) ++ kf(bv, ac)._1) | |
3140 | 3156 | } | |
3141 | 3157 | } | |
3142 | 3158 | } | |
3143 | 3159 | } | |
3144 | 3160 | else throw("Unknown entity type") | |
3145 | 3161 | } | |
3146 | - | $Tuple2((( | |
3162 | + | $Tuple2(((mA :+ ScriptTransfer(di, lt.amount, cD)) ++ ls), 0) | |
3147 | 3163 | } | |
3148 | 3164 | } | |
3149 | 3165 | } | |
3150 | 3166 | ||
3151 | 3167 | ||
3152 | 3168 | ||
3153 | - | @Callable( | |
3154 | - | func setReferrals ( | |
3169 | + | @Callable(gQ) | |
3170 | + | func setReferrals (mH,mI) = if ((gQ.callerPublicKey != ef)) | |
3155 | 3171 | then throw("Permission denied") | |
3156 | 3172 | else { | |
3157 | - | let | |
3158 | - | if ((size( | |
3173 | + | let ls = lo(gQ) | |
3174 | + | if ((size(gQ.payments) != 0)) | |
3159 | 3175 | then throw("No payments required") | |
3160 | - | else if (!(isDefined(addressFromString( | |
3161 | - | then throw(("Invalid address: " + | |
3162 | - | else if (!(isDefined(addressFromString( | |
3163 | - | then throw(("Invalid address: " + | |
3176 | + | else if (!(isDefined(addressFromString(mH)))) | |
3177 | + | then throw(("Invalid address: " + mH)) | |
3178 | + | else if (!(isDefined(addressFromString(mI)))) | |
3179 | + | then throw(("Invalid address: " + mI)) | |
3164 | 3180 | else { | |
3165 | - | let | |
3166 | - | let | |
3167 | - | let | |
3168 | - | then split_4C(value( | |
3181 | + | let mJ = eE() | |
3182 | + | let mK = getString(mJ) | |
3183 | + | let mL = if (isDefined(mK)) | |
3184 | + | then split_4C(value(mK), "_") | |
3169 | 3185 | else nil | |
3170 | - | if (containsElement( | |
3171 | - | then throw(( | |
3186 | + | if (containsElement(mL, mI)) | |
3187 | + | then throw((mI + " is not newbie (already has referrals)")) | |
3172 | 3188 | else { | |
3173 | - | let | |
3174 | - | let | |
3175 | - | if (if (isDefined( | |
3176 | - | then isDefined(addressFromString(value( | |
3189 | + | let kn = bI(mI) | |
3190 | + | let ko = getString(kn) | |
3191 | + | if (if (isDefined(ko)) | |
3192 | + | then isDefined(addressFromString(value(ko))) | |
3177 | 3193 | else false) | |
3178 | - | then throw((( | |
3194 | + | then throw(((mI + " already has refBy: ") + value(ko))) | |
3179 | 3195 | else { | |
3180 | - | let | |
3181 | - | let | |
3182 | - | let | |
3183 | - | then split_4C(value( | |
3196 | + | let mM = bL(mH) | |
3197 | + | let mN = getString(mM) | |
3198 | + | let mO = if (isDefined(mN)) | |
3199 | + | then split_4C(value(mN), "_") | |
3184 | 3200 | else nil | |
3185 | - | if (containsElement( | |
3186 | - | then throw(((( | |
3201 | + | if (containsElement(mO, mI)) | |
3202 | + | then throw((((mH + " already contains ") + mI) + " within referrals")) | |
3187 | 3203 | else { | |
3188 | - | let | |
3189 | - | let | |
3190 | - | then value( | |
3191 | - | else makeString_2C(( | |
3192 | - | $Tuple2(([StringEntry( | |
3204 | + | let mP = makeString_2C((mO :+ mI), "_") | |
3205 | + | let mQ = if (containsElement(mL, mH)) | |
3206 | + | then value(mK) | |
3207 | + | else makeString_2C((mL :+ mH), "_") | |
3208 | + | $Tuple2(([StringEntry(kn, mH), StringEntry(mM, mP), StringEntry(mJ, mQ)] ++ ls), 0) | |
3193 | 3209 | } | |
3194 | 3210 | } | |
3195 | 3211 | } | |
3196 | 3212 | } | |
3197 | 3213 | } | |
3198 | 3214 | ||
3199 | 3215 | ||
3200 | 3216 | ||
3201 | - | @Callable( | |
3202 | - | func distributePoints ( | |
3203 | - | let | |
3204 | - | if ((size( | |
3217 | + | @Callable(gQ) | |
3218 | + | func distributePoints (mR,mS,mT,mU,mV) = { | |
3219 | + | let ls = lo(gQ) | |
3220 | + | if ((size(gQ.payments) != 0)) | |
3205 | 3221 | then throw("No payments required") | |
3206 | 3222 | else { | |
3207 | - | let d = toString( | |
3208 | - | let | |
3209 | - | let | |
3210 | - | let | |
3223 | + | let d = toString(gQ.originCaller) | |
3224 | + | let mW = dH(invoke(dk, "checkWlgXpREADONLY", [d], nil)) | |
3225 | + | let mX = dF(mW[1]) | |
3226 | + | let mY = if ((0 >= mX)) | |
3211 | 3227 | then $Tuple2(0, nil) | |
3212 | 3228 | else { | |
3213 | - | let | |
3214 | - | if (( | |
3215 | - | then $Tuple2( | |
3229 | + | let kg = dF(invoke(dk, "takeWlgXp", [d], nil)) | |
3230 | + | if ((kg == kg)) | |
3231 | + | then $Tuple2(mX, [IntegerEntry(J(d), dF(mW[0])), IntegerEntry(I(d), dF(mW[2]))]) | |
3216 | 3232 | else throw("Strict value is not equal to itself.") | |
3217 | 3233 | } | |
3218 | - | let | |
3219 | - | let | |
3220 | - | let | |
3221 | - | let | |
3222 | - | let | |
3223 | - | let | |
3224 | - | let | |
3225 | - | let | |
3226 | - | let | |
3227 | - | if (( | |
3228 | - | then throw((("There are only " + toString( | |
3234 | + | let mZ = mY._1 | |
3235 | + | let na = mY._2 | |
3236 | + | let C = valueOrErrorMessage(getString(bN(d)), "You don't have a duck staked") | |
3237 | + | let nb = K(d) | |
3238 | + | let nc = (valueOrElse(getInteger(nb), 0) + mZ) | |
3239 | + | let nd = G(C) | |
3240 | + | let ne = valueOrElse(getInteger(nd), 0) | |
3241 | + | let nf = (nc + ne) | |
3242 | + | let ng = ((((mR + mS) + mT) + mU) + mV) | |
3243 | + | if ((ng > nf)) | |
3244 | + | then throw((("There are only " + toString(nf)) + " free points to distribute")) | |
3229 | 3245 | else { | |
3230 | - | let | |
3231 | - | let | |
3232 | - | let | |
3233 | - | $Tuple2((([IntegerEntry( | |
3246 | + | let nh = D(C) | |
3247 | + | let au = split(valueOrElse(getString(nh), "0_0_0_0_0"), "_") | |
3248 | + | let ni = (nc - ng) | |
3249 | + | $Tuple2((([IntegerEntry(nb, if ((0 > ni)) | |
3234 | 3250 | then 0 | |
3235 | - | else | |
3236 | - | then ( | |
3237 | - | else | |
3251 | + | else ni), IntegerEntry(nd, if ((0 > ni)) | |
3252 | + | then (ne + ni) | |
3253 | + | else ne), StringEntry(nh, makeString([toString((parseIntValue(au[m]) + mR)), toString((parseIntValue(au[n]) + mS)), toString((parseIntValue(au[o]) + mT)), toString((parseIntValue(au[p]) + mU)), toString((parseIntValue(au[q]) + mV))], "_"))] ++ ls) ++ na), 0) | |
3238 | 3254 | } | |
3239 | 3255 | } | |
3240 | 3256 | } | |
3241 | 3257 | ||
3242 | 3258 | ||
3243 | 3259 | ||
3244 | - | @Callable( | |
3245 | - | func splitByGlobalWeightsREADONLY ( | |
3246 | - | ||
3247 | - | ||
3248 | - | ||
3249 | - | @Callable( | |
3250 | - | func splitByGlobalAndLocalWeightsREADONLY ( | |
3251 | - | let | |
3252 | - | $Tuple2(nil, $Tuple2( | |
3253 | - | } | |
3254 | - | ||
3255 | - | ||
3256 | - | ||
3257 | - | @Callable( | |
3258 | - | func getBackpackREADONLY ( | |
3259 | - | ||
3260 | - | ||
3261 | - | ||
3262 | - | @Callable( | |
3263 | - | func getWarehouseREADONLY ( | |
3264 | - | let | |
3265 | - | let | |
3266 | - | let | |
3267 | - | $Tuple2(nil, makeString_2C( | |
3268 | - | } | |
3269 | - | ||
3270 | - | ||
3271 | - | ||
3272 | - | @Callable( | |
3273 | - | func saveLastTx () = if (!(containsElement([ | |
3260 | + | @Callable(gQ) | |
3261 | + | func splitByGlobalWeightsREADONLY (eO) = $Tuple2(nil, fg(eO)) | |
3262 | + | ||
3263 | + | ||
3264 | + | ||
3265 | + | @Callable(gQ) | |
3266 | + | func splitByGlobalAndLocalWeightsREADONLY (nj,nk,gT) = { | |
3267 | + | let gM = gS(gT) | |
3268 | + | $Tuple2(nil, $Tuple2(fg(nj), eR(nk, gM))) | |
3269 | + | } | |
3270 | + | ||
3271 | + | ||
3272 | + | ||
3273 | + | @Callable(gQ) | |
3274 | + | func getBackpackREADONLY (C) = $Tuple2(nil, makeString(hQ(bO(C)), ":")) | |
3275 | + | ||
3276 | + | ||
3277 | + | ||
3278 | + | @Callable(gQ) | |
3279 | + | func getWarehouseREADONLY (R) = { | |
3280 | + | let jy = value(assetInfo(fromBase58String(R))) | |
3281 | + | let if = (dN(split(jy.description, "_")[do]) / cL) | |
3282 | + | let ig = valueOrElse(getInteger(bE(R)), 0) | |
3283 | + | $Tuple2(nil, makeString_2C(id(bD(R), if, ig), ":")) | |
3284 | + | } | |
3285 | + | ||
3286 | + | ||
3287 | + | ||
3288 | + | @Callable(gQ) | |
3289 | + | func saveLastTx () = if (!(containsElement([dk, di, dl, dm], gQ.caller))) | |
3274 | 3290 | then throw("Access denied") | |
3275 | - | else $Tuple2( | |
3276 | - | ||
3277 | - | ||
3278 | - | ||
3279 | - | @Callable( | |
3280 | - | func updateDuckStats ( | |
3291 | + | else $Tuple2(lo(gQ), 42) | |
3292 | + | ||
3293 | + | ||
3294 | + | ||
3295 | + | @Callable(gQ) | |
3296 | + | func updateDuckStats (C,kg) = if ((gQ.caller != di)) | |
3281 | 3297 | then throw("Access denied") | |
3282 | - | else | |
3283 | - | ||
3284 | - | ||
3285 | - | ||
3286 | - | @Callable( | |
3287 | - | func updateAccStats (d, | |
3298 | + | else kf(C, kg) | |
3299 | + | ||
3300 | + | ||
3301 | + | ||
3302 | + | @Callable(gQ) | |
3303 | + | func updateAccStats (d,kg) = if (!(containsElement([dk, di, dm], gQ.caller))) | |
3288 | 3304 | then throw("Access denied") | |
3289 | - | else | |
3290 | - | ||
3291 | - | ||
3292 | - | ||
3293 | - | @Callable( | |
3294 | - | func equipDuck ( | |
3295 | - | let | |
3296 | - | if ((size( | |
3305 | + | else kl(d, kg) | |
3306 | + | ||
3307 | + | ||
3308 | + | ||
3309 | + | @Callable(gQ) | |
3310 | + | func equipDuck (nl) = { | |
3311 | + | let ls = lo(gQ) | |
3312 | + | if ((size(gQ.payments) != 0)) | |
3297 | 3313 | then throw("No payments required") | |
3298 | 3314 | else { | |
3299 | - | let d = toString( | |
3300 | - | let | |
3301 | - | if ( | |
3315 | + | let d = toString(gQ.originCaller) | |
3316 | + | let C = valueOrErrorMessage(getString(bN(d)), "You don't have a duck staked") | |
3317 | + | if (kv(C)) | |
3302 | 3318 | then throw("equipDuck_checkTournament") | |
3303 | - | else if ( | |
3319 | + | else if (kw(C)) | |
3304 | 3320 | then throw("equipDuck_checkDelivery") | |
3305 | 3321 | else { | |
3306 | - | let | |
3307 | - | let | |
3308 | - | let | |
3309 | - | let | |
3310 | - | let | |
3311 | - | if ((size( | |
3322 | + | let gD = H(C) | |
3323 | + | let nm = split(valueOrElse(getString(gD), ",;,_,;,_,;,_,;,_,;,_,;,"), "_") | |
3324 | + | let hR = bO(C) | |
3325 | + | let iu = hQ(hR) | |
3326 | + | let lJ = split(nl, "_") | |
3327 | + | if ((size(lJ) != s)) | |
3312 | 3328 | then throw("Wrong equipment string") | |
3313 | 3329 | else { | |
3314 | - | let | |
3315 | - | let | |
3316 | - | let | |
3330 | + | let gF = gs(nm, fD(iu[bq]), true, nil) | |
3331 | + | let gG = split(lJ[r], ";")[1] | |
3332 | + | let as = if ((gG == "")) | |
3317 | 3333 | then 0 | |
3318 | 3334 | else { | |
3319 | - | let | |
3320 | - | if (( | |
3335 | + | let gH = split(gG, ",")[0] | |
3336 | + | if ((gH == "")) | |
3321 | 3337 | then 0 | |
3322 | 3338 | else { | |
3323 | - | let | |
3324 | - | let | |
3325 | - | let | |
3326 | - | if (if (if (if (if (( | |
3339 | + | let fS = split(gH, ":") | |
3340 | + | let dg = fS[0] | |
3341 | + | let gI = fS[1] | |
3342 | + | if (if (if (if (if ((dg == "06")) | |
3327 | 3343 | then true | |
3328 | - | else ( | |
3344 | + | else (dg == "07")) | |
3329 | 3345 | then true | |
3330 | - | else ( | |
3331 | - | then ( | |
3346 | + | else (dg == "08")) | |
3347 | + | then (gI != "") | |
3332 | 3348 | else false) | |
3333 | - | then (parseIntValue( | |
3349 | + | then (parseIntValue(gI) > 0) | |
3334 | 3350 | else false) | |
3335 | - | then parseIntValue(split( | |
3351 | + | then parseIntValue(split(aY[parseIntValue(dg)], "_")[ba]) | |
3336 | 3352 | else 0 | |
3337 | 3353 | } | |
3338 | 3354 | } | |
3339 | - | let | |
3340 | - | let | |
3341 | - | let | |
3342 | - | $Tuple2(([StringEntry( | |
3355 | + | let gn = aq(this, C, as, true) | |
3356 | + | let gJ = gs(lJ, gF, false, gn) | |
3357 | + | let nn = fI(gJ) | |
3358 | + | $Tuple2(([StringEntry(gD, nl), StringEntry(hR, makeString_2C([iu[bn], iu[bo], iu[bp], nn], ":")), StringEntry(N(C), makeString([toString(gn[7]), toString(gn[8]), toString(gn[9]), toString(gn[10]), toString(gn[11])], "_"))] ++ ls), 0) | |
3343 | 3359 | } | |
3344 | 3360 | } | |
3345 | 3361 | } | |
3346 | 3362 | } | |
3347 | 3363 | ||
3348 | 3364 | ||
3349 | 3365 | ||
3350 | - | @Callable( | |
3351 | - | func fortificateLand ( | |
3352 | - | let | |
3353 | - | if ((size( | |
3366 | + | @Callable(gQ) | |
3367 | + | func fortificateLand (R,no) = { | |
3368 | + | let ls = lo(gQ) | |
3369 | + | if ((size(gQ.payments) != 0)) | |
3354 | 3370 | then throw("No payments required") | |
3355 | 3371 | else { | |
3356 | - | let d = toString( | |
3357 | - | let | |
3358 | - | let | |
3359 | - | let | |
3360 | - | let | |
3361 | - | let | |
3362 | - | let | |
3363 | - | let | |
3364 | - | let | |
3365 | - | let | |
3366 | - | let | |
3367 | - | let | |
3368 | - | let | |
3369 | - | let | |
3370 | - | let | |
3371 | - | let | |
3372 | - | let | |
3373 | - | let | |
3374 | - | let | |
3375 | - | let | |
3376 | - | let | |
3377 | - | let | |
3378 | - | let | |
3379 | - | let | |
3380 | - | $Tuple2(([StringEntry( | |
3381 | - | } | |
3382 | - | } | |
3383 | - | ||
3384 | - | ||
3385 | - | ||
3386 | - | @Callable( | |
3387 | - | func initDuckTourAttempt ( | |
3372 | + | let d = toString(gQ.originCaller) | |
3373 | + | let C = valueOrElse(getString(bN(d)), "") | |
3374 | + | let fN = aq(this, C, 0, false) | |
3375 | + | let np = bF(R) | |
3376 | + | let nq = split(valueOrElse(getString(np), ":0_15:0_18:0"), "_") | |
3377 | + | let jy = value(assetInfo(fromBase58String(R))) | |
3378 | + | let if = (dN(split(jy.description, "_")[do]) / cL) | |
3379 | + | let ig = valueOrElse(getInteger(bE(R)), 0) | |
3380 | + | let ie = bD(R) | |
3381 | + | let ij = id(ie, if, ig) | |
3382 | + | let nr = split(ij[bi], "_") | |
3383 | + | let ns = parseIntValue(nr[bk]) | |
3384 | + | let nt = parseIntValue(nr[bl]) | |
3385 | + | let nu = split(no, "_") | |
3386 | + | let nv = gz(nq, fD(ij[bh]), ns, nt, true, nil) | |
3387 | + | let gF = nv._1 | |
3388 | + | let nw = nv._2 | |
3389 | + | let nx = nv._3 | |
3390 | + | let ny = gz(nu, gF, nw, nx, false, fN) | |
3391 | + | let gJ = ny._1 | |
3392 | + | let nz = ny._2 | |
3393 | + | let nA = ny._3 | |
3394 | + | let nn = fI(gJ) | |
3395 | + | let ke = makeString([nr[bj], toString(nz), toString(nA), nr[bm]], "_") | |
3396 | + | $Tuple2(([StringEntry(np, no), StringEntry(ie, makeString_2C([ij[be], ij[bf], ij[bg], nn, ke], ":"))] ++ ls), 0) | |
3397 | + | } | |
3398 | + | } | |
3399 | + | ||
3400 | + | ||
3401 | + | ||
3402 | + | @Callable(gQ) | |
3403 | + | func initDuckTourAttempt (C) = if ((gQ.caller != dl)) | |
3388 | 3404 | then throw("Access denied") | |
3389 | 3405 | else { | |
3390 | - | let | |
3391 | - | let | |
3392 | - | let | |
3393 | - | let | |
3394 | - | let | |
3395 | - | let | |
3396 | - | let | |
3397 | - | $Tuple2([IntegerEntry( | |
3406 | + | let jh = B(C) | |
3407 | + | let ji = ak(valueOrElse(getInteger(F(C)), 0)) | |
3408 | + | let kA = valueOrElse(getInteger(jh), ji) | |
3409 | + | let nB = bP(C) | |
3410 | + | let jw = valueOrElse(getString(nB), aN) | |
3411 | + | let ck = valueOrElse(getInteger(dl, bV), 0) | |
3412 | + | let nC = (toString(ck) + "_T_0") | |
3413 | + | $Tuple2([IntegerEntry(L(C), kA), IntegerEntry(jh, ji), StringEntry(M(C), jw), StringEntry(nB, nC)], nC) | |
3398 | 3414 | } | |
3399 | 3415 | ||
3400 | 3416 | ||
3401 | 3417 | ||
3402 | - | @Callable( | |
3418 | + | @Callable(gQ) | |
3403 | 3419 | func breakAttempt () = { | |
3404 | - | let | |
3405 | - | let | |
3406 | - | let | |
3407 | - | let | |
3408 | - | if ((split( | |
3420 | + | let ls = lo(gQ) | |
3421 | + | let C = valueOrErrorMessage(getString(bN(toString(gQ.caller))), "You don't have a duck staked") | |
3422 | + | let nB = bP(C) | |
3423 | + | let jw = valueOrElse(getString(nB), aN) | |
3424 | + | if ((split(jw, "_")[bs] != "T")) | |
3409 | 3425 | then throw("Your duck is not in the tournament") | |
3410 | 3426 | else { | |
3411 | - | let | |
3412 | - | let | |
3413 | - | $Tuple2((( | |
3414 | - | } | |
3415 | - | } | |
3416 | - | ||
3417 | - | ||
3418 | - | ||
3419 | - | @Callable( | |
3420 | - | func exitTournamentInternal ( | |
3427 | + | let kG = getIntegerValue(L(C)) | |
3428 | + | let kH = getStringValue(M(C)) | |
3429 | + | $Tuple2(((ls :+ IntegerEntry(B(C), kG)) :+ StringEntry(nB, kH)), jw) | |
3430 | + | } | |
3431 | + | } | |
3432 | + | ||
3433 | + | ||
3434 | + | ||
3435 | + | @Callable(gQ) | |
3436 | + | func exitTournamentInternal (C) = if ((gQ.caller != this)) | |
3421 | 3437 | then throw("Access denied") | |
3422 | 3438 | else { | |
3423 | - | let | |
3424 | - | let | |
3425 | - | $Tuple2([IntegerEntry( | |
3439 | + | let kG = getIntegerValue(L(C)) | |
3440 | + | let kH = getStringValue(M(C)) | |
3441 | + | $Tuple2([IntegerEntry(B(C), kG), StringEntry(bP(C), kH)], false) | |
3426 | 3442 | } | |
3427 | 3443 | ||
3428 | 3444 | ||
3429 | 3445 | ||
3430 | - | @Callable( | |
3431 | - | func exitDeliveryInternal ( | |
3446 | + | @Callable(gQ) | |
3447 | + | func exitDeliveryInternal (C) = if ((gQ.caller != this)) | |
3432 | 3448 | then throw("Access denied") | |
3433 | 3449 | else { | |
3434 | - | let | |
3435 | - | $Tuple2(( | |
3450 | + | let mo = kx(C, false, 0, 0) | |
3451 | + | $Tuple2((mo._1 ++ mo._2), false) | |
3436 | 3452 | } | |
3437 | 3453 | ||
3438 | 3454 | ||
3439 | 3455 | ||
3440 | - | @Callable( | |
3441 | - | func autoExitDelivery ( | |
3456 | + | @Callable(gQ) | |
3457 | + | func autoExitDelivery (C,jb,nD,ky) = if ((gQ.caller != this)) | |
3442 | 3458 | then throw("Access denied") | |
3443 | 3459 | else { | |
3444 | - | let | |
3445 | - | $Tuple2( | |
3460 | + | let mo = kx(C, true, jb, ky) | |
3461 | + | $Tuple2(mo._1, $Tuple2(mo._3, mo._4)) | |
3446 | 3462 | } | |
3447 | 3463 | ||
3448 | 3464 | ||
3449 | 3465 | ||
3450 | - | @Callable( | |
3451 | - | func prepareRobbery ( | |
3452 | - | let | |
3453 | - | if (!(sigVerify_8Kb( | |
3466 | + | @Callable(gQ) | |
3467 | + | func prepareRobbery (iW,iX) = { | |
3468 | + | let ls = lo(gQ) | |
3469 | + | if (!(sigVerify_8Kb(iW, iX, ef))) | |
3454 | 3470 | then throw("signature does not match") | |
3455 | - | else if ((size( | |
3471 | + | else if ((size(gQ.payments) != 1)) | |
3456 | 3472 | then throw("exactly 1 payment must be attached") | |
3457 | 3473 | else { | |
3458 | - | let | |
3459 | - | let | |
3460 | - | if (if (!(isDefined( | |
3474 | + | let lt = gQ.payments[0] | |
3475 | + | let nE = lt.amount | |
3476 | + | if (if (!(isDefined(lt.assetId))) | |
3461 | 3477 | then true | |
3462 | - | else (value( | |
3478 | + | else (value(lt.assetId) != ds)) | |
3463 | 3479 | then throw("WLGOLD payments only!") | |
3464 | 3480 | else { | |
3465 | - | let | |
3466 | - | if ((size( | |
3481 | + | let fv = split(toUtf8String(iW), "|") | |
3482 | + | if ((size(fv) != 2)) | |
3467 | 3483 | then throw("Wrong message format") | |
3468 | 3484 | else { | |
3469 | - | let | |
3470 | - | if ( | |
3485 | + | let C = fv[0] | |
3486 | + | if (kv(C)) | |
3471 | 3487 | then throw("prepareRobbery_checkTournament") | |
3472 | - | else if ( | |
3488 | + | else if (kw(C)) | |
3473 | 3489 | then throw("prepareRobbery_checkDelivery") | |
3474 | 3490 | else { | |
3475 | - | let | |
3476 | - | if (( | |
3477 | - | then throw(((("Payment " + toString( | |
3491 | + | let aC = ay(this, C)._1 | |
3492 | + | if ((aC > nE)) | |
3493 | + | then throw(((("Payment " + toString(nE)) + " < required ") + toString(aC))) | |
3478 | 3494 | else { | |
3479 | - | let | |
3480 | - | let | |
3481 | - | let | |
3482 | - | let | |
3483 | - | let | |
3484 | - | if (if (( | |
3485 | - | then ( | |
3495 | + | let nF = split(fv[1], "_") | |
3496 | + | let aB = lastBlock.timestamp | |
3497 | + | let aD = valueOrElse(getInteger(T(C)), 0) | |
3498 | + | let aE = valueOrElse(getString(U(C)), "") | |
3499 | + | let aF = valueOrElse(getInteger(S(aE)), 0) | |
3500 | + | if (if ((aD != z)) | |
3501 | + | then (aF > aB) | |
3486 | 3502 | else false) | |
3487 | - | then throw(("You already started robbing, wait till " + toString( | |
3503 | + | then throw(("You already started robbing, wait till " + toString(aF))) | |
3488 | 3504 | else { | |
3489 | - | func | |
3490 | - | let | |
3491 | - | let | |
3492 | - | if (( | |
3505 | + | func nG (eX,R) = { | |
3506 | + | let nH = valueOrElse(getInteger(Q(R)), 0) | |
3507 | + | let nI = valueOrElse(getInteger(S(R)), 0) | |
3508 | + | if ((nH > size(w))) | |
3493 | 3509 | then throw("Invalid state") | |
3494 | - | else if (( | |
3510 | + | else if ((aB > nI)) | |
3495 | 3511 | then { | |
3496 | - | let | |
3497 | - | if ((0 >= | |
3498 | - | then | |
3512 | + | let nJ = valueOrElse(getInteger(bx(R)), 0) | |
3513 | + | if ((0 >= nJ)) | |
3514 | + | then eX | |
3499 | 3515 | else { | |
3500 | - | let | |
3501 | - | let | |
3502 | - | let | |
3503 | - | let | |
3504 | - | let | |
3505 | - | let | |
3506 | - | if (( | |
3507 | - | then | |
3508 | - | else ( | |
3516 | + | let gx = value(assetInfo(fromBase58String(R))) | |
3517 | + | let jC = split(gx.description, "_") | |
3518 | + | let jo = dN(jC[do]) | |
3519 | + | let nK = jn(R, jo) | |
3520 | + | let gW = (aB - nJ) | |
3521 | + | let jF = fraction(gW, (nK * jo), a) | |
3522 | + | if ((x > jF)) | |
3523 | + | then eX | |
3524 | + | else (eX :+ R) | |
3509 | 3525 | } | |
3510 | 3526 | } | |
3511 | - | else | |
3527 | + | else eX | |
3512 | 3528 | } | |
3513 | 3529 | ||
3514 | - | let | |
3515 | - | let | |
3516 | - | let | |
3517 | - | let | |
3518 | - | func | |
3519 | - | then | |
3520 | - | else | |
3521 | - | ||
3522 | - | func | |
3523 | - | then | |
3530 | + | let nL = { | |
3531 | + | let eZ = nF | |
3532 | + | let fa = size(eZ) | |
3533 | + | let fb = nil | |
3534 | + | func fc (fd,fe) = if ((fe >= fa)) | |
3535 | + | then fd | |
3536 | + | else nG(fd, eZ[fe]) | |
3537 | + | ||
3538 | + | func ff (fd,fe) = if ((fe >= fa)) | |
3539 | + | then fd | |
3524 | 3540 | else throw("List size exceeds 10") | |
3525 | 3541 | ||
3526 | - | | |
3542 | + | ff(fc(fc(fc(fc(fc(fc(fc(fc(fc(fc(fb, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
3527 | 3543 | } | |
3528 | - | if ((size( | |
3544 | + | if ((size(nL) == 0)) | |
3529 | 3545 | then throw("No candidates for robbery") | |
3530 | 3546 | else { | |
3531 | - | let | |
3532 | - | let | |
3533 | - | $Tuple2(([IntegerEntry( | |
3547 | + | let nM = dX(size(nL), height, (iX + gQ.transactionId)) | |
3548 | + | let R = nL[nM] | |
3549 | + | $Tuple2(([IntegerEntry(Q(R), y), IntegerEntry(S(R), (aB + w[y])), IntegerEntry(T(C), A), StringEntry(U(C), R)] ++ ls), R) | |
3534 | 3550 | } | |
3535 | 3551 | } | |
3536 | 3552 | } | |
3537 | 3553 | } | |
3538 | 3554 | } | |
3539 | 3555 | } | |
3540 | 3556 | } | |
3541 | 3557 | } | |
3542 | 3558 | ||
3543 | 3559 | ||
3544 | 3560 | ||
3545 | - | @Callable( | |
3546 | - | func robLand ( | |
3547 | - | let | |
3548 | - | if (!(sigVerify_8Kb( | |
3561 | + | @Callable(gQ) | |
3562 | + | func robLand (iW,iX) = { | |
3563 | + | let ls = lo(gQ) | |
3564 | + | if (!(sigVerify_8Kb(iW, iX, ef))) | |
3549 | 3565 | then throw("signature does not match") | |
3550 | 3566 | else { | |
3551 | - | let | |
3552 | - | let | |
3553 | - | let | |
3554 | - | $Tuple2(( | |
3555 | - | } | |
3556 | - | } | |
3557 | - | ||
3558 | - | ||
3559 | - | ||
3560 | - | @Callable( | |
3561 | - | func acceptDelivery () = if (!( | |
3567 | + | let bR = toString(gQ.caller) | |
3568 | + | let C = valueOrErrorMessage(getString(bN(bR)), "You don't have a duck staked") | |
3569 | + | let aB = lastBlock.timestamp | |
3570 | + | $Tuple2((ls :+ IntegerEntry(O(C), aB)), 0) | |
3571 | + | } | |
3572 | + | } | |
3573 | + | ||
3574 | + | ||
3575 | + | ||
3576 | + | @Callable(gQ) | |
3577 | + | func acceptDelivery () = if (!(cB)) | |
3562 | 3578 | then throw("Delivery feature is turned off!") | |
3563 | 3579 | else { | |
3564 | - | let | |
3565 | - | let | |
3566 | - | let | |
3567 | - | let | |
3568 | - | let | |
3569 | - | if (( | |
3570 | - | then throw(((("Delivery is not available, fund=" + | |
3580 | + | let ls = lo(gQ) | |
3581 | + | let bR = toString(gQ.caller) | |
3582 | + | let C = valueOrErrorMessage(getString(bN(bR)), "You don't have a duck staked") | |
3583 | + | let nN = valueOrElse(getInteger(di, bT), 0) | |
3584 | + | let kE = valueOrElse(getInteger(di, bU), 0) | |
3585 | + | if ((aQ > (nN - kE))) | |
3586 | + | then throw(((("Delivery is not available, fund=" + dS(nN, 6)) + ", locked=") + dS(kE, 6))) | |
3571 | 3587 | else { | |
3572 | - | let ay = lastBlock.timestamp | |
3573 | - | let nI = valueOrElse(getInteger(U(B)), 0) | |
3574 | - | if ((nI > ay)) | |
3575 | - | then throw(("Delivery is forbidden for your duck until " + toString(nI))) | |
3576 | - | else if (kq(B)) | |
3577 | - | then throw("acceptDelivery_checkTournament") | |
3578 | - | else if (kr(B)) | |
3579 | - | then throw("acceptDelivery_checkDelivery") | |
3580 | - | else { | |
3581 | - | let nJ = dA(invoke(dd, "updateDeliveryLocked", [(ky + aN)], nil)) | |
3582 | - | let jc = A(B) | |
3583 | - | let jd = ah(valueOrElse(getInteger(E(B)), 0)) | |
3584 | - | let kv = valueOrElse(getInteger(jc), jd) | |
3585 | - | let nv = bK(B) | |
3586 | - | let jr = valueOrElse(getString(nv), aK) | |
3587 | - | let nK = (toString(ay) + "_D_0") | |
3588 | - | $Tuple2(([IntegerEntry(K(B), kv), IntegerEntry(jc, jd), StringEntry(L(B), jr), StringEntry(nv, nK)] ++ lm), $Tuple2(nK, nJ)) | |
3589 | - | } | |
3588 | + | let aB = lastBlock.timestamp | |
3589 | + | let nO = valueOrElse(getInteger(V(C)), 0) | |
3590 | + | if ((nO > aB)) | |
3591 | + | then throw(("Delivery is forbidden for your duck until " + toString(nO))) | |
3592 | + | else { | |
3593 | + | let fX = valueOrElse(getInteger(W(bR)), 0) | |
3594 | + | let nP = valueOrElse(getInteger(X(bR)), 0) | |
3595 | + | let nQ = (aB / a) | |
3596 | + | let nR = valueOrElse(getInteger(dm, e(bR)), 0) | |
3597 | + | let nS = (aS + (nR / aT)) | |
3598 | + | if (if ((fX >= nS)) | |
3599 | + | then (nP >= nQ) | |
3600 | + | else false) | |
3601 | + | then throw((("You already used " + toString(nS)) + " delivery attempts for today")) | |
3602 | + | else if (kv(C)) | |
3603 | + | then throw("acceptDelivery_checkTournament") | |
3604 | + | else if (kw(C)) | |
3605 | + | then throw("acceptDelivery_checkDelivery") | |
3606 | + | else { | |
3607 | + | let nT = dF(invoke(di, "updateDeliveryLocked", [(kE + aQ)], nil)) | |
3608 | + | let jh = B(C) | |
3609 | + | let ji = ak(valueOrElse(getInteger(F(C)), 0)) | |
3610 | + | let kA = valueOrElse(getInteger(jh), ji) | |
3611 | + | let nB = bP(C) | |
3612 | + | let jw = valueOrElse(getString(nB), aN) | |
3613 | + | let nU = (toString(aB) + "_D_0") | |
3614 | + | $Tuple2(([IntegerEntry(L(C), kA), IntegerEntry(jh, ji), StringEntry(M(C), jw), StringEntry(nB, nU)] ++ ls), $Tuple2(nU, nT)) | |
3615 | + | } | |
3616 | + | } | |
3590 | 3617 | } | |
3591 | 3618 | } | |
3592 | 3619 | ||
3593 | 3620 |
github/deemru/w8io/169f3d6 1803.45 ms ◑