tx · 9VRFbgU7DEesCrNx5CzXQJKAc5iqakarZNoenLCrzBFF 3NDCyBG5q85JuaRiigUeEtainyjCQT3XpZm: -0.10700000 Waves 2023.10.09 19:23 [2791327] smart account 3NDCyBG5q85JuaRiigUeEtainyjCQT3XpZm > SELF 0.00000000 Waves
{ "type": 13, "id": "9VRFbgU7DEesCrNx5CzXQJKAc5iqakarZNoenLCrzBFF", "fee": 10700000, "feeAssetId": null, "timestamp": 1696868624771, "version": 2, "chainId": 84, "sender": "3NDCyBG5q85JuaRiigUeEtainyjCQT3XpZm", "senderPublicKey": "EVooykMNV691Venwp1dHUTBd7KWequzUcda57Wd3LQEX", "proofs": [ "512uoZrguEmRKiiTDxnbgEB234sFpu2s4mw1MaHcXgEKFe5Vhkgd94XJkKzr4cLZJ5kf56sHTsNx7nwV6MtyxLpx" ], "script": "base64:BgLiAQgCEgMKAQgSBAoCCAESAwoBBBIAEgMKAQgSABIDCgEIEgQKAgEIEgQKAgEIEgQKAgICEgUKAwEBARIAEgQKAggIEgASABIECgICAhIAEgMKAQgSBAoCCAgSAwoBGBIECgIICBIECgIICBIDCgEIEgMKARgSAwoBCBIFCgMICAgSBAoCCAgSBwoFAQEBAQESAwoBARIFCgMBAQgSAwoBCBIDCgEIEgASBAoCCAESBAoCCAESAwoBCBIECgIICBIDCgEIEgASAwoBCBIDCgEIEgQKAggBEgQKAgICEgQKAgICEgCdAgAJREFZTUlMTElTAIC4mSkAE0RFTElWRVJZX1BVTklTSE1FTlQA4NQDARRrZXlMYXN0QXJiVGltZUJ5VXNlcgEEYWRkcgkArAICAhBsYXN0QXJiVGltZVVzZXJfBQRhZGRyAAZTQ0FMRTgAgMLXLwAMeHBMZXZlbFNjYWxlAIAZAA94cExldmVsUmVjaXBQb3cAoB8AEm51bVBvaW50c09uTGV2ZWxVcAADAA5yb2JiZXJ5Q29zdE1pbgCAwtcvABRyb2JiZXJ5Q29vbGRvd25Db2VmZgCQAwAMcmVxdWlyZW1lbnRzCQDMCAICCFN0cmVuZ3RoCQDMCAICCEFjY3VyYWN5CQDMCAICCUludGVsbGVjdAkAzAgCAglFbmR1cmFuY2UJAMwIAgIJRGV4dGVyaXR5CQDMCAICBUxldmVsCQDMCAICBkhlYWx0aAUDbmlsAAxjaGFyU3RyZW5ndGgAAAAMY2hhckFjY3VyYWN5AAEADWNoYXJJbnRlbGxlY3QAAgANY2hhckVuZHVyYW5jZQADAA1jaGFyRGV4dGVyaXR5AAQAC3NlZ0JhY2twYWNrAAAAC05VTVNFR01FTlRTAAYACk5VTU1BSU5BVVgAAgAITUFYU0xPVFMAAgANTUFYUFJPRElOU0xPVAAeABBsYW5kUm9iQ29vbGRvd25zCQDMCAIAAAkAzAgCAMDPJAkAzAgCAKD3NgkAzAgCAIDczBQJAMwIAgCArqYKBQNuaWwADk1JTl9SRVNfVE9fUk9CAIDaxAkADHJvYklkeExvY2tlZAABAAtkdWNrSWR4RnJlZQAAABBkdWNrSWR4UHJlcGFyaW5nAAEBDWtleUR1Y2tIZWFsdGgBC2R1Y2tBc3NldElkCQCsAgICC2R1Y2tIZWFsdGhfBQtkdWNrQXNzZXRJZAEMa2V5RHVja0NoYXJzAQtkdWNrQXNzZXRJZAkArAICAgpkdWNrQ2hhcnNfBQtkdWNrQXNzZXRJZAEJa2V5RHVja1hQAQtkdWNrQXNzZXRJZAkArAICAgdkdWNrWFBfBQtkdWNrQXNzZXRJZAEMa2V5RHVja0xldmVsAQtkdWNrQXNzZXRJZAkArAICAgpkdWNrTGV2ZWxfBQtkdWNrQXNzZXRJZAERa2V5RHVja0ZyZWVQb2ludHMBC2R1Y2tBc3NldElkCQCsAgICD2R1Y2tGcmVlUG9pbnRzXwULZHVja0Fzc2V0SWQBEGtleUR1Y2tFcXVpcG1lbnQBC2R1Y2tBc3NldElkCQCsAgICDmR1Y2tFcXVpcG1lbnRfBQtkdWNrQXNzZXRJZAEJa2V5VXNlclhQAQRhZGRyCQCsAgICB3VzZXJYUF8FBGFkZHIBDGtleVVzZXJMZXZlbAEEYWRkcgkArAICAgp1c2VyTGV2ZWxfBQRhZGRyARFrZXlVc2VyRnJlZVBvaW50cwEEYWRkcgkArAICAg91c2VyRnJlZVBvaW50c18FBGFkZHIBDmtleVNhdmVkSGVhbHRoAQtkdWNrQXNzZXRJZAkArAICAgxzYXZlZEhlYWx0aF8FC2R1Y2tBc3NldElkARBrZXlTYXZlZExvY2F0aW9uAQtkdWNrQXNzZXRJZAkArAICAg5zYXZlZExvY2F0aW9uXwULZHVja0Fzc2V0SWQBDGtleUR1Y2tCdWZmcwELZHVja0Fzc2V0SWQJAKwCAgIKZHVja0J1ZmZzXwULZHVja0Fzc2V0SWQBGGtleUxhc3RSb2JiZXJ5VGltZUJ5RHVjawELZHVja0Fzc2V0SWQJAKwCAgIQbGFzdFJvYmJlcnlUaW1lXwULZHVja0Fzc2V0SWQBGGtleUxhc3RSb2JiZXJ5Q29zdEJ5RHVjawELZHVja0Fzc2V0SWQJAKwCAgIQbGFzdFJvYmJlcnlDb3N0XwULZHVja0Fzc2V0SWQBE2tleUxhbmRSb2JiZXJ5U3RhdGUBC2xhbmRBc3NldElkCQCsAgICEWxhbmRSb2JiZXJ5U3RhdGVfBQtsYW5kQXNzZXRJZAESa2V5TGFuZENvb2xkb3duRVRBAQtsYW5kQXNzZXRJZAkArAICAhBsYW5kQ29vbGRvd25FVEFfBQtsYW5kQXNzZXRJZAETa2V5RHVja1JvYmJlcnlTdGF0ZQELZHVja0Fzc2V0SWQJAKwCAgIRZHVja1JvYmJlcnlTdGF0ZV8FC2R1Y2tBc3NldElkARNrZXlMb2NrZWRMYW5kQnlEdWNrAQtkdWNrQXNzZXRJZAkArAICAhFsb2NrZWRMYW5kQnlEdWNrXwULZHVja0Fzc2V0SWQBFmtleURlbGl2ZXJ5RGVsYXlCeUR1Y2sBC2R1Y2tBc3NldElkCQCsAgICFGRlbGl2ZXJ5RGVsYXlCeUR1Y2tfBQtkdWNrQXNzZXRJZAAHeHBDbGFpbQCQTgAPeHBTdWNjZXNzRmxpZ2h0AJBOAAx4cEZhaWxGbGlnaHQA0A8ACHhwQ2FsbEVTAKCNBgAMeHBDdXN0b21OYW1lAMCEPQAKeHBOZXdTTGFuZADAlrECAA54cFVwZ3JhZGVJbmZyYQCQTgAHeHBNZXJnZQDAhD0ACXhwT25ib2FyZADAhD0ABnhwSGVhbACQTgEJbGV2ZWxCeVhQAQJ4cAkAawMFDHhwTGV2ZWxTY2FsZQkAbAYFAnhwAAQFD3hwTGV2ZWxSZWNpcFBvdwAEAAQFBERPV04FBlNDQUxFOAEJbWF4SGVhbHRoAQVsZXZlbAkAZAIAZAUFbGV2ZWwBB2xldmVsVXACCWN1cnJMZXZlbAVuZXdYUAQIbmV3TGV2ZWwJAQlsZXZlbEJ5WFABBQVuZXdYUAkAzAgCBQhuZXdMZXZlbAkAzAgCCQBoAgUSbnVtUG9pbnRzT25MZXZlbFVwCQBlAgUIbmV3TGV2ZWwFCWN1cnJMZXZlbAUDbmlsAQxnZXREdWNrU3RhdHMED3N0YWtpbmdDb250cmFjdAtkdWNrQXNzZXRJZApidWZmRWZmZWN0CmZvcmNlQnVmZnMEBWNoYXJzCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUPc3Rha2luZ0NvbnRyYWN0CQEMa2V5RHVja0NoYXJzAQULZHVja0Fzc2V0SWQCCTBfMF8wXzBfMAIBXwQDbHZsCQELdmFsdWVPckVsc2UCCQCaCAIFD3N0YWtpbmdDb250cmFjdAkBDGtleUR1Y2tMZXZlbAEFC2R1Y2tBc3NldElkAAAEBmhlYWx0aAkBC3ZhbHVlT3JFbHNlAgkAmggCBQ9zdGFraW5nQ29udHJhY3QJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQJAQltYXhIZWFsdGgBBQNsdmwECnN0YXRlQnVmZnMJALUJAgkBC3ZhbHVlT3JFbHNlAgkAnQgCBQ9zdGFraW5nQ29udHJhY3QJAQxrZXlEdWNrQnVmZnMBBQtkdWNrQXNzZXRJZAIJMF8wXzBfMF8wAgFfCQDOCAIJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBWNoYXJzBQxjaGFyU3RyZW5ndGgJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBWNoYXJzBQxjaGFyQWNjdXJhY3kJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBWNoYXJzBQ1jaGFySW50ZWxsZWN0CQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVjaGFycwUNY2hhckVuZHVyYW5jZQkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFY2hhcnMFDWNoYXJEZXh0ZXJpdHkJAMwIAgUDbHZsCQDMCAIFBmhlYWx0aAUDbmlsAwUKZm9yY2VCdWZmcwkAzAgCBQpidWZmRWZmZWN0CQDMCAIFCmJ1ZmZFZmZlY3QJAMwIAgUKYnVmZkVmZmVjdAkAzAgCBQpidWZmRWZmZWN0CQDMCAIFCmJ1ZmZFZmZlY3QFA25pbAkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKc3RhdGVCdWZmcwUMY2hhclN0cmVuZ3RoCQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQpzdGF0ZUJ1ZmZzBQxjaGFyQWNjdXJhY3kJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCnN0YXRlQnVmZnMFDWNoYXJJbnRlbGxlY3QJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCnN0YXRlQnVmZnMFDWNoYXJFbmR1cmFuY2UJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCnN0YXRlQnVmZnMFDWNoYXJEZXh0ZXJpdHkFA25pbAEOZ2V0Um9iYmVyeURhdGECD3N0YWtpbmdDb250cmFjdAtkdWNrQXNzZXRJZAQLbGFzdFJvYkNvc3QJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPc3Rha2luZ0NvbnRyYWN0CQEYa2V5TGFzdFJvYmJlcnlDb3N0QnlEdWNrAQULZHVja0Fzc2V0SWQAAAQLbGFzdFJvYlRpbWUJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPc3Rha2luZ0NvbnRyYWN0CQEYa2V5TGFzdFJvYmJlcnlUaW1lQnlEdWNrAQULZHVja0Fzc2V0SWQAAAQDbm93CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQHcm9iQ29zdAkAlgMBCQDMCAIFDnJvYmJlcnlDb3N0TWluCQDMCAIJAGUCBQtsYXN0Um9iQ29zdAkAaAIFFHJvYmJlcnlDb29sZG93bkNvZWZmCQBlAgUDbm93BQtsYXN0Um9iVGltZQUDbmlsBAlkdWNrU3RhdGUJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPc3Rha2luZ0NvbnRyYWN0CQETa2V5RHVja1JvYmJlcnlTdGF0ZQEFC2R1Y2tBc3NldElkAAAECmxvY2tlZExhbmQJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUPc3Rha2luZ0NvbnRyYWN0CQETa2V5TG9ja2VkTGFuZEJ5RHVjawEFC2R1Y2tBc3NldElkAgAEB2xhbmRFVEEJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPc3Rha2luZ0NvbnRyYWN0CQESa2V5TGFuZENvb2xkb3duRVRBAQUKbG9ja2VkTGFuZAAACQCXCgUFB3JvYkNvc3QFC2xhc3RSb2JUaW1lBQlkdWNrU3RhdGUFCmxvY2tlZExhbmQFB2xhbmRFVEEACkxBTkRQUkVGSVgCBExBTkQACkRVQ0tQUkVGSVgCBERVQ0sACkFSVFBSRVNBTEUCB1BSRVNBTEUABk5VTVJFUwAGABhNQVhfTEFORFNfU1RBS0VEX0JZX1VTRVIAGQAPREFJTFlSRVNCWVBJRUNFAID40gEADFdITVVMVElQTElFUgCAyK+gJQAPREVGQVVMVExPQ0FUSU9OAg9BZnJpY2FfRl9BZnJpY2EAEFJFU09VUkNFUFJJQ0VNSU4A1bUCAApFU1NFTExDT0VGAAoAFU1JTl9VU0RUX0ZFRV9ERUxJVkVSWQDQhgMAElRFTl9NSU5VVEVTX01JTExJUwDAzyQACXByb2RUeXBlcwkAzAgCAhBGaXJzdCBBaWQgS2l0IEwxCQDMCAICEEZpcnN0IEFpZCBLaXQgTDIJAMwIAgIQRmlyc3QgQWlkIEtpdCBMMwkAzAgCAgtCYWNrcGFjayBMMQkAzAgCAgtCYWNrcGFjayBMMgkAzAgCAgtCYWNrcGFjayBMMwkAzAgCAg5Gb29kIFJhdGlvbiBMMQkAzAgCAg5Gb29kIFJhdGlvbiBMMgkAzAgCAg5Gb29kIFJhdGlvbiBMMwkAzAgCAgtKZXQgUGFjayBMMQkAzAgCAgtKZXQgUGFjayBMMgkAzAgCAgtKZXQgUGFjayBMMwkAzAgCAglTaGllbGQgTDEJAMwIAgIJU2hpZWxkIEwyCQDMCAICCVNoaWVsZCBMMwkAzAgCAgdNaW5lIEwxCQDMCAICB01pbmUgTDIJAMwIAgIHTWluZSBMMwkAzAgCAgdUcmFwIEwxCQDMCAICB1RyYXAgTDIJAMwIAgIHVHJhcCBMMwUDbmlsAApjb250aW5lbnRzCQDMCAICCEFtZXJpY2FzCQDMCAICBkV1cm9wZQkAzAgCAgRBc2lhCQDMCAICBkFmcmljYQkAzAgCAgdPY2VhbmlhBQNuaWwACUNPRUZGMk1BVACAreIEABBmb3J0QWxsb3dlZFByb2RzCQDMCAIADwkAzAgCABAJAMwIAgARCQDMCAIAEgkAzAgCABMJAMwIAgAUBQNuaWwAEHByb2R1Y3Rpb25NYXRyaXgJAMwIAgIlOF84XzhfMTdfMTdfNDJfMTJfMF8zMF8wLDAsMCwwLDAsMCwwXwkAzAgCAiU4XzhfOF8xN18xN180Ml8yNF8wXzYwXzAsMCw1LDIsMCwwLDBfCQDMCAICJzhfOF84XzE3XzE3XzQyXzM2XzBfMTIwXzAsMCwxMCw0LDAsMCwwXwkAzAgCAik4XzE5XzE5XzhfMjdfMTlfMjZfMV8yMF8wLDAsMCwwLDAsMCwwXzAwMQkAzAgCAik4XzE5XzE5XzhfMjdfMTlfNTJfMV80MF8wLDAsMCwwLDAsMCwwXzAwMQkAzAgCAik4XzE5XzE5XzhfMjdfMTlfNzhfMV84MF8wLDAsMCwwLDAsMCwwXzAwMQkAzAgCAiU4XzhfOF84XzhfNjBfMTNfMl8yXzAsMCwwLDAsMCwwLDBfMDExCQDMCAICJThfOF84XzhfOF82MF8yNl8yXzRfMCwwLDAsMCwwLDAsMF8wMTEJAMwIAgIlOF84XzhfOF84XzYwXzM5XzJfOF8wLDAsMCwwLDAsMCwwXzAxMQkAzAgCAikzMF8zMF8zXzE3XzE3XzNfMzBfM18zMF8wLDAsMCwwLDAsMCwwXzExMQkAzAgCAikzMF8zMF8zXzE3XzE3XzNfNjBfM181MF8wLDAsMCwwLDAsMCwwXzExMQkAzAgCAikzMF8zMF8zXzE3XzE3XzNfOTBfM183MF8wLDAsMCwwLDAsMCwwXzExMQkAzAgCAisxOF8xOF8xMF8xOF8xOF8xOF8xMV80XzEwXzAsMCwwLDAsMCwwLDBfMjAxCQDMCAICKzE4XzE4XzEwXzE4XzE4XzE4XzIyXzRfMjBfMCwwLDAsMCwwLDAsMF8yMDEJAMwIAgIrMThfMThfMTBfMThfMThfMThfMzNfNF8zMF8wLDAsMCwwLDAsMCwwXzIwMQkAzAgCAio0XzEzXzIyXzRfMzVfMjJfMjNfMF81MCwxLDBfMCwwLDAsMCwwLDAsMF8JAMwIAgIqNF8xM18yMl80XzM1XzIyXzQ2XzBfNTAsMSwxXzAsMiw1LDAsMCwwLDBfCQDMCAICKzRfMTNfMjJfNF8zNV8yMl82OV8wXzUwLDIsMV8wLDUsMTAsMCwwLDAsMF8JAMwIAgIqNV8yNV80MF81XzEwXzE1XzIwXzFfMzAsMSwxXzAsMCwwLDAsMCwwLDBfCQDMCAICKjVfMjVfNDBfNV8xMF8xNV80MF8xXzMwLDEsMl8yLDEsMywwLDAsMCwwXwkAzAgCAio1XzI1XzQwXzVfMTBfMTVfNjBfMV8zMCwxLDNfNSwyLDgsMCwwLDAsMF8FA25pbAAJcklkeENvZWZmAAYACnJJZHhFZmZlY3QACAAQcklkeFJlcXVpcmVtZW50cwAJAAlySWR4U2xvdHMACgAOUFJPRFVDVFBLR1NJWkUACgALd2hJZHhMZXZlbHMAAAAId2hJZHhSZXMAAQAId2hJZHhNYXQAAgAJd2hJZHhQcm9kAAMACXdoSWR4TE9GVAAEAAl2b2xMb2NrZWQAAAALdm9sT2NjdXBpZWQAAQAHdm9sRnJlZQACAAh2b2xUb3RhbAADAApicElkeExldmVsAAAACGJwSWR4UmVzAAEACGJwSWR4TWF0AAIACWJwSWR4UHJvZAADAA9sb2NJZHhDb250aW5lbnQAAAAKbG9jSWR4VHlwZQABAAhsb2NJZHhJZAACARVrZXlMYW5kQXNzZXRJZFRvT3duZXIBB2Fzc2V0SWQJAKwCAgIDbm9fBQdhc3NldElkARprZXlMYW5kQXNzZXRJZFRvQ3VzdG9tTmFtZQEHYXNzZXRJZAkArAICAgVsY25hXwUHYXNzZXRJZAEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEHYXNzZXRJZAkArAICAgNzdF8FB2Fzc2V0SWQBIGtleUxhbmRBcnRTdGF0dXNCeVR5cGVBbmRBc3NldElkAgR0eXBlB2Fzc2V0SWQJALkJAgkAzAgCAgNsYXMJAMwIAgUEdHlwZQkAzAgCBQdhc3NldElkBQNuaWwCAV8BImtleVN0YWtlZFRpbWVCeVR5cGVBc3NldElkQW5kT3duZXIDB25mdFR5cGUHYXNzZXRJZAlvd25lckFkZHIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAgZzdHRhb18FB25mdFR5cGUCAV8FB2Fzc2V0SWQCAV8FCW93bmVyQWRkcgESa2V5V2FyZWhvdXNlQnlMYW5kAQtsYW5kQXNzZXRJZAkArAICAgN3aF8FC2xhbmRBc3NldElkARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQdhc3NldElkCQCsAgICC2luZnJhTGV2ZWxfBQdhc3NldElkARdrZXlGb3J0aWZpY2F0aW9uc0J5TGFuZAELbGFuZEFzc2V0SWQJAKwCAgIPZm9ydGlmaWNhdGlvbnNfBQtsYW5kQXNzZXRJZAEaa2V5RHVja0Fzc2V0SWRUb0N1c3RvbU5hbWUBB2Fzc2V0SWQJAKwCAgIYZHVja0N1c3RvbU5hbWVCeUFzc2V0SWRfBQdhc3NldElkARZrZXlBZGRyZXNzVG9DdXN0b21OYW1lAQRhZGRyCQCsAgICGGFjY291bnRDdXN0b21OYW1lQnlBZGRyXwUEYWRkcgEPa2V5QWRkcmVzc1JlZkJ5AQRhZGRyCQCsAgICCWFjY1JlZkJ5XwUEYWRkcgEca2V5T25ib2FyZEFydEFjdGl2YXRlZE9uRHVjawELZHVja0Fzc2V0SWQJAKwCAgIab25ib2FyZEFydEFjdGl2YXRlZE9uRHVja18FC2R1Y2tBc3NldElkARxrZXlPbmJvYXJkQXJ0RHVja0FjdGl2YXRlZEJ5AQRhZGRyCQCsAgICGm9uYm9hcmRBcnRBY3RpdmF0ZWREdWNrQnlfBQRhZGRyARNrZXlBZGRyZXNzUmVmZXJyYWxzAQRhZGRyCQCsAgICDWFjY1JlZmVycmFsc18FBGFkZHIBEGtleUR1Y2tJZFRvT3duZXIBB2Fzc2V0SWQJAKwCAgIKZHVja093bmVyXwUHYXNzZXRJZAEUa2V5U3Rha2VkRHVja0J5T3duZXIBCW93bmVyQWRkcgkArAICAhJzdGFrZWREdWNrQnlPd25lcl8FCW93bmVyQWRkcgERa2V5QmFja3BhY2tCeUR1Y2sBC2R1Y2tBc3NldElkCQCsAgICCWJhY2tQYWNrXwULZHVja0Fzc2V0SWQBD2tleUR1Y2tMb2NhdGlvbgELZHVja0Fzc2V0SWQJAKwCAgINZHVja0xvY2F0aW9uXwULZHVja0Fzc2V0SWQBFWtleVVzZXJHd2xSZWxlYXNlVGltZQEIdXNlckFkZHIJAKwCAgIaJXMlc19fdXNlckd3bFJlbGVhc2VUaW1lX18FCHVzZXJBZGRyAQ5rZXlFc1dhcmVob3VzZQACGmVtZXJnZW5jeVdhcmVob3VzZVByb2R1Y3RzAA9kZWxpdmVyeUZ1bmRLZXkCDGRlbGl2ZXJ5RnVuZAARZGVsaXZlcnlMb2NrZWRLZXkCDmRlbGl2ZXJ5TG9ja2VkAA1sYXN0VG91cklkS2V5Ag4lc19fbGFzdFRvdXJJZAEVa2V5VG91clN0YXRpY0RhdGFCeUlkAQN0SWQJAKwCAgIWJXMlZF9fdG91clN0YXRpY0RhdGFfXwkApAMBBQN0SWQBFmtleVRvdXJEeW5hbWljRGF0YUJ5SWQBA3RJZAkArAICAhclcyVkX190b3VyRHluYW1pY0RhdGFfXwkApAMBBQN0SWQBGmtleUJlc3RSZXN1bHRCeVRvdXJBbmREdWNrAgN0SWQLZHVja0Fzc2V0SWQJALkJAgkAzAgCAh8lcyVkJXNfX2Jlc3RSZXN1bHRCeVRvdXJBbmREdWNrCQDMCAIJAKQDAQUDdElkCQDMCAIFC2R1Y2tBc3NldElkBQNuaWwCAl9fAAlpZHhTdGF0aWMAAAAKaWR4RHluYW1pYwABAAp0U3RhdGljRW5kAAYADnREeW5hbWljU3RhdHVzAAEBC2dldFRvdXJEYXRhAgx0b3VyQ29udHJhY3QDdElkBAZzdGF0aWMJALUJAgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFDHRvdXJDb250cmFjdAkBFWtleVRvdXJTdGF0aWNEYXRhQnlJZAEFA3RJZAkArAICCQCsAgICGUVycm9yIHJlYWRpbmcgdG91cm5hbWVudCAJAKQDAQUDdElkAgUgZGF0YQICX18EB2R5bmFtaWMJALwJAgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFDHRvdXJDb250cmFjdAkBFmtleVRvdXJEeW5hbWljRGF0YUJ5SWQBBQN0SWQJAKwCAgkArAICAhlFcnJvciByZWFkaW5nIHRvdXJuYW1lbnQgCQCkAwEFA3RJZAIFIGRhdGECAl9fCQDMCAIFBnN0YXRpYwkAzAgCBQdkeW5hbWljBQNuaWwBDmlzSW5Ub3VybmFtZW50Agx0b3VyQ29udHJhY3QIbG9jYXRpb24EBmxhc3RJZAkBC3ZhbHVlT3JFbHNlAgkAmggCBQx0b3VyQ29udHJhY3QFDWxhc3RUb3VySWRLZXkAAAQDbG9jCQC1CQIFCGxvY2F0aW9uAgFfBANub3cIBQlsYXN0QmxvY2sJdGltZXN0YW1wBAV0RGF0YQkBC2dldFRvdXJEYXRhAgUMdG91ckNvbnRyYWN0BQZsYXN0SWQEBnN0YXRpYwkAkQMCBQV0RGF0YQUJaWR4U3RhdGljBAdkeW5hbWljCQCRAwIFBXREYXRhBQppZHhEeW5hbWljAwMDCQAAAgkAkQMCBQNsb2MFCmxvY0lkeFR5cGUCAVQJAAACCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDbG9jBQ9sb2NJZHhDb250aW5lbnQFBmxhc3RJZAcJAAACCQCRAwIFB2R5bmFtaWMFDnREeW5hbWljU3RhdHVzAgpJTlBST0dSRVNTBwkAZgIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQZzdGF0aWMFCnRTdGF0aWNFbmQFA25vdwcBDGlzSW5EZWxpdmVyeQEIbG9jYXRpb24EA2xvYwkAtQkCBQhsb2NhdGlvbgIBXwQDbm93CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQJc3RhcnRUaW1lCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDbG9jBQ9sb2NJZHhDb250aW5lbnQECGRpc3RhbmNlCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDbG9jBQhsb2NJZHhJZAMDCQAAAgkAkQMCBQNsb2MFCmxvY0lkeFR5cGUCAUQJAGYCBQNub3cJAGQCBQlzdGFydFRpbWUFElRFTl9NSU5VVEVTX01JTExJUwcJAGcCAAMFCGRpc3RhbmNlBwEPaXNVc3VhbExvY2F0aW9uAQhsb2NhdGlvbgQHbG9jVHlwZQkAkQMCCQC1CQIFCGxvY2F0aW9uAgFfBQpsb2NJZHhUeXBlAwkBAiE9AgUHbG9jVHlwZQIBVAkBAiE9AgUHbG9jVHlwZQIBRAcBCW9uTWlzc2lvbgIMdG91ckNvbnRyYWN0CGxvY2F0aW9uBAZsYXN0SWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUMdG91ckNvbnRyYWN0BQ1sYXN0VG91cklkS2V5AAAEA2xvYwkAtQkCBQhsb2NhdGlvbgIBXwQDbm93CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQFdERhdGEJAQtnZXRUb3VyRGF0YQIFDHRvdXJDb250cmFjdAUGbGFzdElkBAZzdGF0aWMJAJEDAgUFdERhdGEFCWlkeFN0YXRpYwQHZHluYW1pYwkAkQMCBQV0RGF0YQUKaWR4RHluYW1pYwQHbG9jVHlwZQkAkQMCBQNsb2MFCmxvY0lkeFR5cGUDCQAAAgUHbG9jVHlwZQIBRAYDAwMJAAACCQCRAwIFA2xvYwUKbG9jSWR4VHlwZQIBVAkAAAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNsb2MFD2xvY0lkeENvbnRpbmVudAUGbGFzdElkBwkAAAIJAJEDAgUHZHluYW1pYwUOdER5bmFtaWNTdGF0dXMCCklOUFJPR1JFU1MHCQBmAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBnN0YXRpYwUKdFN0YXRpY0VuZAUDbm93BwESZ2V0UmVjaXBlTWF0ZXJpYWxzAQZyZWNpcGUJAGgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUGcmVjaXBlBQlySWR4Q29lZmYFCUNPRUZGMk1BVAEMY2hlYXRBdHRlbXB0AwZvbGRMb2MGbmV3TG9jCWNoZWF0Q2FzZQkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAhZDaGVhdCBhdHRlbXB0OiBvbGRMb2M9BQZvbGRMb2MCCSwgbmV3TG9jPQUGbmV3TG9jAgcsIGNhc2U9CQCkAwEFCWNoZWF0Q2FzZQAWS1NfU0VQQVJBVEVfUFVCTElDX0tFWQcAGEtTX0FMTE9XX0JJR19JTkZSQV9NRVJHRQcAEUtTX0FMTE9XX0RFTElWRVJZBgAFY2hhaW4JAMkBAgkAygECCAUEdGhpcwVieXRlcwABAAEAC3VzZHRBc3NldElkBAckbWF0Y2gwBQVjaGFpbgMJAAACAQFXBQckbWF0Y2gwASCE2nqyCAM/TtG7yo7ui5O8yYLdC136B5ao1CP5qA//uQMJAAACAQFUBQckbWF0Y2gwASBVsdifcoeC7+XjW42sBatl3ppDoS8WuwXzGreHpfHFGAkAAgECDVVua25vd24gY2hhaW4AFWRlZmF1bHRSZXN0QWRkcmVzc1N0cgQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMAIjM1BRQ3V2RmJ2aDRMa1BVbnJuVTF6M2puYkExcDltM1dOaHYDCQAAAgEBVAUHJG1hdGNoMAIjM011bWtHR3p0Q0tBWHBXRHF4a2Rkb2ZxWFNVYnFRa3ZTSnkJAAIBAg1Vbmtub3duIGNoYWluABFJbmZyYVVwZ3JhZGVDb3N0UwQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMACAyK+gJQMJAAACAQFUBQckbWF0Y2gwAIDC1y8JAAIBAg1Vbmtub3duIGNoYWluAA5hcmJpdHJhZ2VEZWxheQQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMACAuJkpAwkAAAIBAVQFByRtYXRjaDAA4NQDCQACAQINVW5rbm93biBjaGFpbgADU0VQAgJfXwAFTVVMVDYAwIQ9AAVNVUxUOACAwtcvAAVTU0laRQAZAAVNU0laRQBkAAVMU0laRQDhAQAGWExTSVpFAJADAAdYWExTSVpFAPEEAAVJVEVSNgkAzAgCAAAJAMwIAgABCQDMCAIAAgkAzAgCAAMJAMwIAgAECQDMCAIABQUDbmlsAQ9nZXRTdHJpbmdPckZhaWwCB2FkZHJlc3MDa2V5CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUHYWRkcmVzcwUDa2V5CQC5CQIJAMwIAgIKbWFuZGF0b3J5IAkAzAgCCQClCAEFB2FkZHJlc3MJAMwIAgIBLgkAzAgCBQNrZXkJAMwIAgIPIGlzIG5vdCBkZWZpbmVkBQNuaWwCAAARSWR4Q2ZnU3Rha2luZ0RhcHAAAQARSWR4Q2ZnRWNvbm9teURhcHAAAgAUSWR4Q2ZnR292ZXJuYW5jZURhcHAAAwANSWR4Q2ZnV2xnRGFwcAAEABRJZHhDZmdUb3VybmFtZW50RGFwcAAHAA9JZHhDZmdBY3Jlc0RhcHAACAEKa2V5UmVzdENmZwACDiVzX19yZXN0Q29uZmlnAQ5rZXlSZXN0QWRkcmVzcwACDCVzX19yZXN0QWRkcgERcmVhZFJlc3RDZmdPckZhaWwBBHJlc3QJALwJAgkBD2dldFN0cmluZ09yRmFpbAIFBHJlc3QJAQprZXlSZXN0Q2ZnAAUDU0VQARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCB3Jlc3RDZmcDaWR4CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQdyZXN0Q2ZnBQNpZHgJAKwCAgIqUmVzdCBjZmcgZG9lc24ndCBjb250YWluIGFkZHJlc3MgYXQgaW5kZXggCQCkAwEFA2lkeAAMcmVzdENvbnRyYWN0CQERQGV4dHJOYXRpdmUoMTA2MikBCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMJAQ5rZXlSZXN0QWRkcmVzcwAFFWRlZmF1bHRSZXN0QWRkcmVzc1N0cgAHcmVzdENmZwkBEXJlYWRSZXN0Q2ZnT3JGYWlsAQUMcmVzdENvbnRyYWN0AA9zdGFraW5nQ29udHJhY3QJARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCBQdyZXN0Q2ZnBRFJZHhDZmdTdGFraW5nRGFwcAAPZWNvbm9teUNvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUHcmVzdENmZwURSWR4Q2ZnRWNvbm9teURhcHAAC2dvdkNvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUHcmVzdENmZwUUSWR4Q2ZnR292ZXJuYW5jZURhcHAAC3dsZ0NvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUHcmVzdENmZwUNSWR4Q2ZnV2xnRGFwcAASdG91cm5hbWVudENvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUHcmVzdENmZwUUSWR4Q2ZnVG91cm5hbWVudERhcHAADWFjcmVzQ29udHJhY3QJARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCBQdyZXN0Q2ZnBQ9JZHhDZmdBY3Jlc0RhcHAACnJlY0xhbmROdW0AAAALcmVjTGFuZFNpemUAAQALcmVjVGVycmFpbnMAAgAMcmVjQ29udGluZW50AAMADXdsZ0Fzc2V0SWRLZXkCC3dsZ19hc3NldElkAAp3bGdBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJwIAgULd2xnQ29udHJhY3QFDXdsZ0Fzc2V0SWRLZXkCGFdMR09MRCBpcyBub3QgaXNzdWVkIHlldAAPYWNyZXNBc3NldElkS2V5AgxhY3Jlc0Fzc2V0SWQADGFjcmVzQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCcCAIFDWFjcmVzQ29udHJhY3QFD2FjcmVzQXNzZXRJZEtleQIXQUNSRVMgaXMgbm90IGlzc3VlZCB5ZXQAC3JhbmRvbURlbGF5AAIBCWtleUNvbW1pdAEHYWRkcmVzcwkArAICAhNmaW5pc2hCbG9ja0ZvckFkZHJfBQdhZGRyZXNzARFrZXlSZXNQcm9wb3J0aW9ucwACE3Jlc1R5cGVzUHJvcG9ydGlvbnMBFmtleVJlc1R5cGVzQnlDb250aW5lbnQBCWNvbnRpbmVudAkArAICAhRyZXNUeXBlc0J5Q29udGluZW50XwUJY29udGluZW50ARVrZXlTdGFrZWRMYW5kc0J5T3duZXIBCW93bmVyQWRkcgkArAICAhNzdGFrZWRMYW5kc0J5T3duZXJfBQlvd25lckFkZHIBFmtleVN0YWtlZFBpZWNlc0J5T3duZXIBCW93bmVyQWRkcgkArAICAhRzdGFrZWRQaWVjZXNCeU93bmVyXwUJb3duZXJBZGRyAQhhc1N0cmluZwEBdgQHJG1hdGNoMAUBdgMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAFAXMJAAIBAhhmYWlsIHRvIGNhc3QgaW50byBTdHJpbmcBBWFzSW50AQF2BAckbWF0Y2gwBQF2AwkAAQIFByRtYXRjaDACA0ludAQBbgUHJG1hdGNoMAUBbgkAAgECFWZhaWwgdG8gY2FzdCBpbnRvIEludAEJYXNBbnlMaXN0AQF2BAckbWF0Y2gwBQF2AwkAAQIFByRtYXRjaDACCUxpc3RbQW55XQQBbAUHJG1hdGNoMAUBbAkAAgECG2ZhaWwgdG8gY2FzdCBpbnRvIExpc3RbQW55XQEJYXNCb29sZWFuAQF2BAckbWF0Y2gwBQF2AwkAAQIFByRtYXRjaDACB0Jvb2xlYW4EAXMFByRtYXRjaDAFAXMJAAIBAhlmYWlsIHRvIGNhc3QgaW50byBCb29sZWFuARBhc1N0cmluZ0ludFR1cGxlAQN2YWwEByRtYXRjaDAFA3ZhbAMJAAECBQckbWF0Y2gwAg0oU3RyaW5nLCBJbnQpBAJ0MgUHJG1hdGNoMAUCdDIJAAIBAh9mYWlsIHRvIGNhc3QgaW50byAoU3RyaW5nLCBJbnQpAQ9udW1QaWVjZXNCeVNpemUBCGxhbmRTaXplBAckbWF0Y2gwBQhsYW5kU2l6ZQMJAAACAgFTBQckbWF0Y2gwBQVTU0laRQMJAAACAgFNBQckbWF0Y2gwBQVNU0laRQMJAAACAgFMBQckbWF0Y2gwBQVMU0laRQMJAAACAgJYTAUHJG1hdGNoMAUGWExTSVpFAwkAAAICA1hYTAUHJG1hdGNoMAUHWFhMU0laRQkAAgECEVVua25vd24gbGFuZCBzaXplAQdpc0RpZ2l0AQFzCQEJaXNEZWZpbmVkAQkAtgkBBQFzAQprZXlCbG9ja2VkAAIQY29udHJhY3RzQmxvY2tlZAERa2V5TGFzdFR4SWRCeVVzZXIBBGFkZHIJAKwCAgIPbGFzdFR4SWRCeVVzZXJfBQRhZGRyAQpmaXhlZFBvaW50AgN2YWwIZGVjaW1hbHMEBnRlblBvdwkAbAYACgAABQhkZWNpbWFscwAAAAAFBERPV04EB2xvd1BhcnQJAKQDAQkAagIFA3ZhbAUGdGVuUG93BAZ6ZXJvZXMJALACAgkApAMBBQZ0ZW5Qb3cJAGQCAAEJALECAQUHbG93UGFydAkArAICCQCsAgIJAKwCAgkApAMBCQBpAgUDdmFsBQZ0ZW5Qb3cCAS4FBnplcm9lcwUHbG93UGFydAEPZ2V0UmFuZG9tTnVtYmVyAwhtYXhWYWx1ZQxmaW5pc2hIZWlnaHQKYXV4RW50cm9weQQPcmFuZG9tU2VlZEJsb2NrCQEFdmFsdWUBCQDtBwEFDGZpbmlzaEhlaWdodAQKcmFuZG9tSGFzaAkA9wMBCQDLAQIJAQV2YWx1ZQEIBQ9yYW5kb21TZWVkQmxvY2sDdnJmBQphdXhFbnRyb3B5CQBqAgkAsQkBBQpyYW5kb21IYXNoBQhtYXhWYWx1ZQANaW5jdWJhdG9yQWRkcgQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMAkBEUBleHRyTmF0aXZlKDEwNjIpAQIjM1BFa3RWdXgyUmhjaFNONjNEc0RvNGI0bXo0UXF6S1NlRHYDCQAAAgEBVAUHJG1hdGNoMAUEdGhpcwkAAgECDVVua25vd24gY2hhaW4AC2JyZWVkZXJBZGRyBAckbWF0Y2gwBQVjaGFpbgMJAAACAQFXBQckbWF0Y2gwCQERQGV4dHJOYXRpdmUoMTA2MikBAiMzUERWdVU0NUg3RWg1ZG10TmJuUk5SU3RHd1VMQTdOWTZIYgMJAAACAQFUBQckbWF0Y2gwBQR0aGlzCQACAQINVW5rbm93biBjaGFpbgADcHViBAckbWF0Y2gwBQVjaGFpbgMJAAACAQFXBQckbWF0Y2gwAwUWS1NfU0VQQVJBVEVfUFVCTElDX0tFWQEgqxdXjxVn41lUQbDWcutmm8Sj02Ze1ZmGUN+YNx+yCQgBIE9T4ho/VKjWnVJOEx1GJ1W9s1PzLHvJVFSw/0PBtBQoAwkAAAIBAVQFByRtYXRjaDABIE9T4ho/VKjWnVJOEx1GJ1W9s1PzLHvJVFSw/0PBtBQoCQACAQINVW5rbm93biBjaGFpbgAMRU1QVFlfUFJPRDUwAZADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARRklWRU1JTlVURVNNSUxMSVMA4KcSAAxSRU5BTUlOR0NPU1QAwJaxAgAKTUFYTkFNRUxFTgAyABVJbmZyYVVwZ3JhZGVDb3N0U1VzZHQAgK3iBAAMRVhQTUFURVJJQUxTBAckbWF0Y2gwBQVjaGFpbgMJAAACAQFXBQckbWF0Y2gwAKbdgu2rBwMJAAACAQFUBQckbWF0Y2gwAKqngbMJCQACAQINVW5rbm93biBjaGFpbgAHRVhQVVNEVAQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMACA5Zp3AwkAAAIBAVQFByRtYXRjaDAAgOWadwkAAgECDVVua25vd24gY2hhaW4ADFNfQ09TVF9BQ1JFUwCA8ouoCQAFRklWRVgJALYCAQAFAAdUV0VOVFlYCQC2AgEAFAAIVFdFTlRZMlgJALYCAQkAaAIAFAAUAAhUV0VOVFkzWAkAtgIBCQBoAgkAaAIAFAAUABQACFRXRU5UWTRYCQC2AgEJAGgCCQBoAgkAaAIAFAAUABQAFAAIVFdFTlRZNVgJALYCAQkAaAIJAGgCCQBoAgkAaAIAFAAUABQAFAAUAA9QUkVTQUxFTlVNTEFORFMA9AMBEmtleU5leHRGcmVlTGFuZE51bQACC25leHRMYW5kTnVtARprZXlMYW5kQ3VzdG9tTmFtZVRvQXNzZXRJZAEEbmFtZQkArAICAgRsY25fBQRuYW1lARBrZXlMYW5kVG9Bc3NldElkAQdsYW5kTnVtCQCsAgICA2xhXwUHbGFuZE51bQEea2V5SW5mcmFMZXZlbEJ5QXNzZXRJZEFuZE93bmVyAgdhc3NldElkCW93bmVyQWRkcgkArAICCQCsAgIJAKwCAgIFaWxhb18FB2Fzc2V0SWQCAV8FCW93bmVyQWRkcgERa2V5TGFuZE51bVRvT3duZXIBB2xhbmROdW0JAKwCAgIDbG9fBQdsYW5kTnVtARprZXlEdWNrQ3VzdG9tTmFtZVRvQXNzZXRJZAEEbmFtZQkArAICAhFkdWNrQnlDdXN0b21OYW1lXwUEbmFtZQEWa2V5Q3VzdG9tTmFtZVRvQWRkcmVzcwEEbmFtZQkArAICAhRhY2NvdW50QnlDdXN0b21OYW1lXwUEbmFtZQEJa2V5T2xkaWVzAAIKb2xkaWVzTGlzdAALY2xhaW1Nb2RlV2gAAAANY2xhaW1Nb2RlRHVjawABABNjbGFpbU1vZGVXaFRoZW5EdWNrAAIACGZsSGVhbHRoAAAAC2ZsVGltZXN0YW1wAAUAB2ZsQm9udXMABgALZmxQcm9kc1VzZWQABwEHbmZ0TmFtZQIHbGFuZE51bQhsYW5kU2l6ZQkArAICCQCsAgIFCkxBTkRQUkVGSVgFB2xhbmROdW0FCGxhbmRTaXplAQh0b1ZvbHVtZQIGYW1vdW50B3BrZ1NpemUEBHBrZ3MDCQBnAgUGYW1vdW50AAAJAGkCCQBlAgkAZAIFBmFtb3VudAUHcGtnU2l6ZQABBQdwa2dTaXplCQEBLQEJAGkCCQBlAgkAZAIJAQEtAQUGYW1vdW50BQdwa2dTaXplAAEFB3BrZ1NpemUJAGgCBQRwa2dzBQVNVUxUOAETZGlzdHJpYnV0ZUJ5V2VpZ2h0cwIFdG90YWwHd2VpZ2h0cwQDc3VtCQBkAgkAZAIJAGQCCQBkAgkAZAIJAJEDAgUHd2VpZ2h0cwAACQCRAwIFB3dlaWdodHMAAQkAkQMCBQd3ZWlnaHRzAAIJAJEDAgUHd2VpZ2h0cwADCQCRAwIFB3dlaWdodHMABAkAkQMCBQd3ZWlnaHRzAAUDCQBnAgAABQNzdW0JAAIBAhBaZXJvIHdlaWdodHMgc3VtBAVub3JtNgkAawMFBXRvdGFsBQVNVUxUNgUDc3VtCgEKbm9ybWFsaXplcgIDYWNjBGVsZW0JAM0IAgUDYWNjCQBrAwUEZWxlbQUFbm9ybTYFBU1VTFQ2CgACJGwFB3dlaWdodHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBCm5vcm1hbGl6ZXICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDYJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYBEmdldE5lZWRlZE1hdGVyaWFscwEFdG90YWwEBXByb3BzCQC1CQIJAQV2YWx1ZQEJAKIIAQkBEWtleVJlc1Byb3BvcnRpb25zAAIBXwMJAQIhPQIJAJADAQUFcHJvcHMFBk5VTVJFUwkAAgECFldyb25nIHByb3BvcnRpb25zIGRhdGEEAXIJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXByb3BzAAAJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXByb3BzAAEJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXByb3BzAAIJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXByb3BzAAMJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXByb3BzAAQJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXByb3BzAAUFA25pbAkBE2Rpc3RyaWJ1dGVCeVdlaWdodHMCBQV0b3RhbAUBcgERc3VidHJhY3RNYXRlcmlhbHMDDHNob3VsZFVzZU1hdANoYXMJdG90YWxOZWVkBARuZWVkCQESZ2V0TmVlZGVkTWF0ZXJpYWxzAQUJdG90YWxOZWVkCgEKc3VidHJhY3RvcgIDYWNjA2lkeAQGcmVzdWx0CQBlAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA2hhcwUDaWR4CQCRAwIFBG5lZWQFA2lkeAMJAGYCAAAFBnJlc3VsdAkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAhhOb3QgZW5vdWdoIG1hdGVyaWFsIGlkeD0JAKQDAQUDaWR4AgssIHlvdSBoYXZlIAkAkQMCBQNoYXMFA2lkeAILLCBidXQgbmVlZCAJAKQDAQkAkQMCBQRuZWVkBQNpZHgJAM0IAgUDYWNjCQCkAwEFBnJlc3VsdAMFDHNob3VsZFVzZU1hdAoAAiRsBQVJVEVSNgoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEKc3VidHJhY3RvcgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNgkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgUDaGFzARFzdWJ0cmFjdEVxdWlwbWVudAIFb2xkRXEFcFVzZWQDCQAAAgUFcFVzZWQCAAkAlAoCBQVvbGRFcQcKAQdzdWJVc2VkAgNhY2MGaWR4QW10BAVwYXJ0cwkAtQkCBQZpZHhBbXQCASwDCQECIT0CCQCQAwEFBXBhcnRzAAIJAAIBAihJbmNvcnJlY3QgZm9ybWF0LCBzaG91bGQgYmUgaW5kZXgsYW1vdW50BANpZHgJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwYXJ0cwAAAwMJAGYCAAAFA2lkeAYJAGcCBQNpZHgJAJADAQUQcHJvZHVjdGlvbk1hdHJpeAkAAgECE1Vua25vd24gcHJvZHVjdCBpZHgEA2FtdAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXBhcnRzAAEEB2VxUGFydHMJALUJAggFA2FjYwJfMQkArAICCQCRAwIFBXBhcnRzAAACAToDCQECIT0CCQCQAwEFB2VxUGFydHMAAgkAAgEJAKwCAgkArAICAg9Zb3UgZG9uJ3QgaGF2ZSAJAJEDAgUJcHJvZFR5cGVzBQNpZHgCCSBlcXVpcHBlZAQDdG1wCQCRAwIFB2VxUGFydHMAAQQGbnVtTGVuAwkBB2lzRGlnaXQBCQCvAgIJALACAgUDdG1wAAEAAQACAAEEBGN1cnIJAQ1wYXJzZUludFZhbHVlAQkArwICBQN0bXAFBm51bUxlbgQEdGFpbAkAsAICBQN0bXAFBm51bUxlbgQGbmV3QW10AwkAZwIFBGN1cnIFA2FtdAkAZQIFBGN1cnIFA2FtdAkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAg1Zb3UgZXF1aXBwZWQgCQCkAwEFBGN1cnICBCBvZiAJAJEDAgUJcHJvZFR5cGVzBQNpZHgCEywgYnV0IHRyaWVkIHRvIHVzZSAJAKQDAQUDYW10CQCUCgIJAKwCAgkArAICCQCsAgIJAKwCAgkAkQMCBQdlcVBhcnRzAAAJAJEDAgUFcGFydHMAAAIBOgkApAMBBQZuZXdBbXQFBHRhaWwDCAUDYWNjAl8yBgMDCQBnAgUDaWR4AAYJAGcCAAgFA2lkeAcJAAACBQZuZXdBbXQAAAcKAAIkbAkAtQkCBQVwVXNlZAIBXwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJQKAgUFb2xkRXEHCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQdzdWJVc2VkAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAQ5wcm9kU3RyVG9CeXRlcwEHcHJvZFN0cgQFcExpc3QDCQAAAgUHcHJvZFN0cgIABQNuaWwJALwJAgUHcHJvZFN0cgIBXwoBBHRvQlYCA2FjYwZyZWNpcGUEAWoJAGkCCQDIAQEFA2FjYwAIBARjdXJyAwkAZgIJAJADAQUFcExpc3QFAWoJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwTGlzdAUBagAACQDLAQIFA2FjYwkAmgMBBQRjdXJyCgACJGwFEHByb2R1Y3Rpb25NYXRyaXgKAAIkcwkAkAMBBQIkbAoABSRhY2MwAQAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBBHRvQlYCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDUwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIAIwAkACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgEOYnl0ZXNUb1Byb2RTdHIBAmJ2CgEGZnJvbUJWAgNhY2MGcmVjaXBlBAFqCQCQAwEFA2FjYwQBYgkAyQECCQDKAQIFAmJ2CQBoAgAIBQFqAAgJAM0IAgUDYWNjCQCkAwEJALEJAQUBYgkAugkCCgACJGwFEHByb2R1Y3Rpb25NYXRyaXgKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBBmZyb21CVgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgNTAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyAgFfARVjaGVja1N0YXRSZXF1aXJlbWVudHMCCWR1Y2tTdGF0cwRyZXFzCgEFY2hlY2sCA2FjYwFqBARidWZmAwkAZgIJAJADAQUJZHVja1N0YXRzCQBkAgAHBQFqCQCRAwIFCWR1Y2tTdGF0cwkAZAIABwUBagAAAwkAZgIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRyZXFzBQFqCQBkAgkAkQMCBQlkdWNrU3RhdHMFAWoFBGJ1ZmYJAAIBCQCsAgICG1JlcXVpcmVtZW50IG5vdCBzYXRpc2ZpZWQ6IAkAkQMCBQxyZXF1aXJlbWVudHMFAWoGCgACJGwJAMwIAgAACQDMCAIAAQkAzAgCAAIJAMwIAgADCQDMCAIABAkAzAgCAAUJAMwIAgAGBQNuaWwKAAIkcwkAkAMBBQIkbAoABSRhY2MwBwoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEFY2hlY2sCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDcJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwEKcGxhY2VQcm9kQgYGaWR4Q250BXBMaXN0CmlzUG9zaXRpdmUJZHVja1N0YXRzCG9jY3VwaWVkBGZyZWUEBXBhcnRzCQC1CQIFBmlkeENudAIBOgMJAQIhPQIJAJADAQUFcGFydHMAAgkAAgECKEluY29ycmVjdCBmb3JtYXQsIHNob3VsZCBiZSBpbmRleDphbW91bnQDAwkBASEBBQppc1Bvc2l0aXZlCQECIT0CCQCxAgEJAJEDAgUFcGFydHMAAAACBwkAAgECK1Byb2R1Y3QgaWR4IHNob3VsZCBiZSAyIGRpZ2l0cywgemVybyBwYWRkZWQECnByb2R1Y3RJZHgJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwYXJ0cwAABAVjb3VudAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXBhcnRzAAEDCQEBIQEJAQ9jb250YWluc0VsZW1lbnQCBRBmb3J0QWxsb3dlZFByb2RzBQpwcm9kdWN0SWR4CQACAQkArAICCQCsAgICCVByb2R1Y3QgJwkAkQMCBQlwcm9kVHlwZXMFCnByb2R1Y3RJZHgCIScgY2Fubm90IGJlIHVzZWQgZm9yIGxhbmQgZGVmZW5zZQMJAGYCAAAFBWNvdW50CQACAQIXQ291bnQgY2FuJ3QgYmUgbmVnYXRpdmUDCQBmAgUFY291bnQFDU1BWFBST0RJTlNMT1QJAAIBCQCsAgIJAKwCAgkArAICAhRDYW4ndCBwdXQgbW9yZSB0aGFuIAkApAMBBQ1NQVhQUk9ESU5TTE9UAgQgb2YgCQCRAwIFCXByb2RUeXBlcwUKcHJvZHVjdElkeAMJAAACBQVjb3VudAAACQCVCgMFBXBMaXN0BQhvY2N1cGllZAUEZnJlZQQEaGVhZAkAyQECBQVwTGlzdAkAaAIACAUKcHJvZHVjdElkeAQEY3VycgkAsQkBCQDJAQIJAMoBAgUFcExpc3QJAGgCAAgFCnByb2R1Y3RJZHgACAQEdGFpbAkAygECBQVwTGlzdAkAaAIACAkAZAIFCnByb2R1Y3RJZHgAAQQGcmVjaXBlCQC1CQIJAJEDAgUQcHJvZHVjdGlvbk1hdHJpeAUKcHJvZHVjdElkeAIBXwMDCQEBIQEFCmlzUG9zaXRpdmUJAGYCBQVjb3VudAUEY3VycgcJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIJWW91IGhhdmUgCQCkAwEFBGN1cnICBCBvZiAJAJEDAgUJcHJvZFR5cGVzBQpwcm9kdWN0SWR4AhMsIGJ1dCB0cmllZCB0byB1c2UgCQCkAwEFBWNvdW50BAZuZXdBbXQDAwkBASEBBQppc1Bvc2l0aXZlCQEVY2hlY2tTdGF0UmVxdWlyZW1lbnRzAgUJZHVja1N0YXRzCQC1CQIJAJEDAgUGcmVjaXBlBRBySWR4UmVxdWlyZW1lbnRzAgEsBwkAZQIFBGN1cnIFBWNvdW50CQBkAgUEY3VycgUFY291bnQECGRlbHRhVm9sCQBlAgkBCHRvVm9sdW1lAgUGbmV3QW10BQ5QUk9EVUNUUEtHU0laRQkBCHRvVm9sdW1lAgUEY3VycgUOUFJPRFVDVFBLR1NJWkUJAJUKAwkAywECCQDLAQIFBGhlYWQJAJoDAQUGbmV3QW10BQR0YWlsCQBkAgUIb2NjdXBpZWQFCGRlbHRhVm9sCQBlAgUEZnJlZQUIZGVsdGFWb2wBCGFkZFByb2RCBwZpZHhDbnQFcExpc3QKaXNQb3NpdGl2ZQdzZWdtZW50B21haW5BdXgEc2xvdAlkdWNrU3RhdHMEBXBhcnRzCQC1CQIFBmlkeENudAIBOgMJAQIhPQIJAJADAQUFcGFydHMAAgkAAgECKEluY29ycmVjdCBmb3JtYXQsIHNob3VsZCBiZSBpbmRleDphbW91bnQDAwkBASEBBQppc1Bvc2l0aXZlCQECIT0CCQCxAgEJAJEDAgUFcGFydHMAAAACBwkAAgECK1Byb2R1Y3QgaWR4IHNob3VsZCBiZSAyIGRpZ2l0cywgemVybyBwYWRkZWQECnByb2R1Y3RJZHgJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwYXJ0cwAABAVjb3VudAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXBhcnRzAAEDAwkAZgIAAAUKcHJvZHVjdElkeAYJAGcCBQpwcm9kdWN0SWR4CQCQAwEFEHByb2R1Y3Rpb25NYXRyaXgJAAIBAhNVbmtub3duIHByb2R1Y3QgaWR4AwkAZgIAAAUFY291bnQJAAIBAhdDb3VudCBjYW4ndCBiZSBuZWdhdGl2ZQMJAGYCBQVjb3VudAUNTUFYUFJPRElOU0xPVAkAAgEJAKwCAgkArAICCQCsAgICFENhbid0IHB1dCBtb3JlIHRoYW4gCQCkAwEFDU1BWFBST0RJTlNMT1QCBCBvZiAJAJEDAgUJcHJvZFR5cGVzBQpwcm9kdWN0SWR4AwkAAAIFBWNvdW50AAAJAJQKAgUFcExpc3QHBARoZWFkCQDJAQIFBXBMaXN0CQBoAgAIBQpwcm9kdWN0SWR4BARjdXJyCQCxCQEJAMkBAgkAygECBQVwTGlzdAkAaAIACAUKcHJvZHVjdElkeAAIBAR0YWlsCQDKAQIFBXBMaXN0CQBoAgAICQBkAgUKcHJvZHVjdElkeAABBAZyZWNpcGUJALUJAgkAkQMCBRBwcm9kdWN0aW9uTWF0cml4BQpwcm9kdWN0SWR4AgFfAwMJAQEhAQUKaXNQb3NpdGl2ZQkAZgIFBWNvdW50BQRjdXJyBwkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAglZb3UgaGF2ZSAJAKQDAQUEY3VycgIEIG9mIAkAkQMCBQlwcm9kVHlwZXMFCnByb2R1Y3RJZHgCEywgYnV0IHRyaWVkIHRvIHVzZSAJAKQDAQUFY291bnQECWlzQmlnSXRlbQMDCQEBIQEFCmlzUG9zaXRpdmUJARVjaGVja1N0YXRSZXF1aXJlbWVudHMCBQlkdWNrU3RhdHMJALUJAgkAkQMCBQZyZWNpcGUFEHJJZHhSZXF1aXJlbWVudHMCASwHBAZjb21wYXQJAJEDAgUGcmVjaXBlBQlySWR4U2xvdHMDCQAAAgUGY29tcGF0AgAJAAIBAhdJdGVtIGNhbm5vdCBiZSBlcXVpcHBlZAQBYwkBDXBhcnNlSW50VmFsdWUBBQZjb21wYXQEBGNTZWcJAGkCBQFjAGQDCQECIT0CBQdzZWdtZW50BQRjU2VnCQACAQIUU2VnbWVudCBpbmNvbXBhdGlibGUECGNNYWluQXV4CQBpAgkAagIFAWMAZAAKAwkBAiE9AgUHbWFpbkF1eAUIY01haW5BdXgJAAIBAhFTbG90IGluY29tcGF0aWJsZQQJY051bVNsb3RzCQBqAgUBYwAKAwMJAQIhPQIFBHNsb3QAAAkAZgIFCWNOdW1TbG90cwABBwkAAgECHkJpZyBpdGVtcyBzaG91bGQgb2NjdXB5IHNsb3QgMAkAZgIFCWNOdW1TbG90cwABBwkAlAoCCQDLAQIJAMsBAgUEaGVhZAkAmgMBCQBkAgUEY3VycgMFCmlzUG9zaXRpdmUFBWNvdW50CQEBLQEFBWNvdW50BQR0YWlsBQlpc0JpZ0l0ZW0BC3Nsb3RzR3JvdXBCBgFnBGJwSW4KaXNQb3NpdGl2ZQdzZWdtZW50B21haW5BdXgFc3RhdHMDCQECIT0CBQFnAgAEBXNsb3RzCQC1CQIFAWcCASwDCQBmAgkAkAMBBQVzbG90cwUITUFYU0xPVFMJAAIBAhJXcm9uZyBzbG90cyBmb3JtYXQEAnMwCQCRAwIFBXNsb3RzAAAEAnMxAwkAZgIJAJADAQUFc2xvdHMAAQkAkQMCBQVzbG90cwABAgADAwkAAAIFAnMwAgAJAAACBQJzMQIABwUEYnBJbgQFdG1wUzADCQECIT0CBQJzMAIACQEIYWRkUHJvZEIHBQJzMAUEYnBJbgUKaXNQb3NpdGl2ZQUHc2VnbWVudAUHbWFpbkF1eAAABQVzdGF0cwkAlAoCBQRicEluBwMJAQIhPQIFAnMxAgADCAUFdG1wUzACXzIJAAIBAh5CaWcgaXRlbSBhbHJlYWR5IG9jY3VwaWVzIHNsb3QICQEIYWRkUHJvZEIHBQJzMQgFBXRtcFMwAl8xBQppc1Bvc2l0aXZlBQdzZWdtZW50BQdtYWluQXV4AAEFBXN0YXRzAl8xCAUFdG1wUzACXzEFBGJwSW4BBmRyZXNzQgQHc2VnTGlzdAZwQnl0ZXMKaXNQb3NpdGl2ZQVzdGF0cwoBB3NlZ21lbnQCA2FjYwNzZWcEAWoIBQNhY2MCXzEEB21haW5BdXgJALUJAgUDc2VnAgE7AwkBAiE9AgkAkAMBBQdtYWluQXV4BQpOVU1NQUlOQVVYCQACAQIUV3Jvbmcgc2VnbWVudCBmb3JtYXQEAW0JAJEDAgUHbWFpbkF1eAAABAFhCQCRAwIFB21haW5BdXgAAQMDCQAAAgUBbQIACQAAAgUBYQIABwkAlAoCCQBkAgUBagABCAUDYWNjAl8yBAR0bXBNCQELc2xvdHNHcm91cEIGBQFtCAUDYWNjAl8yBQppc1Bvc2l0aXZlBQFqAAAFBXN0YXRzCQCUCgIJAGQCBQFqAAEJAQtzbG90c0dyb3VwQgYFAWEFBHRtcE0FCmlzUG9zaXRpdmUFAWoAAQUFc3RhdHMICgACJGwFB3NlZ0xpc3QKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCUCgIAAAUGcEJ5dGVzCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQdzZWdtZW50AgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA2CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAl8yAQVmb3J0QgYHc2VnTGlzdAZwQnl0ZXMIb2NjdXBpZWQEZnJlZQppc1Bvc2l0aXZlCWR1Y2tTdGF0cwMJAGYCAAMJAJADAQUHc2VnTGlzdAkAAgECMUF0IGxlYXN0IGR1Y2ssIG1pbmVzIGFuZCB0cmFwcyBwYXJ0cyBhcmUgcmVxdWlyZWQKAQdzZWdtZW50AgNhY2MDc2VnBAFqCAUDYWNjAl8xAwkAAAIFAWoAAAkAlgoECQBkAgUBagABCAUDYWNjAl8yCAUDYWNjAl8zCAUDYWNjAl80BAFwCQEKcGxhY2VQcm9kQgYFA3NlZwgFA2FjYwJfMgUKaXNQb3NpdGl2ZQUJZHVja1N0YXRzCAUDYWNjAl8zCAUDYWNjAl80CQCWCgQJAGQCBQFqAAEIBQFwAl8xCAUBcAJfMggFAXACXzMEAXQKAAIkbAUHc2VnTGlzdAoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJYKBAAABQZwQnl0ZXMFCG9jY3VwaWVkBQRmcmVlCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQdzZWdtZW50AgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKCQCVCgMIBQF0Al8yCAUBdAJfMwgFAXQCXzQBF2NhbldlYXJDdXJyZW50RXF1aXBtZW50AQtkdWNrQXNzZXRJZAQFZXFLZXkJARBrZXlEdWNrRXF1aXBtZW50AQULZHVja0Fzc2V0SWQEBmN1cnJFcQkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEFBWVxS2V5AhcsOyxfLDssXyw7LF8sOyxfLDssXyw7LAIBXwQJdGVtcFByb2RCCQEGZHJlc3NCBAUGY3VyckVxBQxFTVBUWV9QUk9ENTAGBQNuaWwECHNlZ0JwQXV4CQCRAwIJALUJAgkAkQMCBQZjdXJyRXEFC3NlZ0JhY2twYWNrAgE7AAEECmJ1ZmZFZmZlY3QDCQAAAgUIc2VnQnBBdXgCAAAABARhdXgwCQCRAwIJALUJAgUIc2VnQnBBdXgCASwAAAMJAAACBQRhdXgwAgAAAAQGaWR4Q250CQC1CQIFBGF1eDACAToEA2lkeAkAkQMCBQZpZHhDbnQAAAQDY250CQCRAwIFBmlkeENudAABAwMDAwMJAAACBQNpZHgCAjA2BgkAAAIFA2lkeAICMDcGCQAAAgUDaWR4AgIwOAkBAiE9AgUDY250AgAHCQBmAgkBDXBhcnNlSW50VmFsdWUBBQNjbnQAAAcJAQ1wYXJzZUludFZhbHVlAQkAkQMCCQC1CQIJAJEDAgUQcHJvZHVjdGlvbk1hdHJpeAkBDXBhcnNlSW50VmFsdWUBBQNpZHgCAV8FCnJJZHhFZmZlY3QAAAQFc3RhdHMJAQxnZXREdWNrU3RhdHMEBQR0aGlzBQtkdWNrQXNzZXRJZAUKYnVmZkVmZmVjdAYECG5ld1Byb2RCCQEGZHJlc3NCBAUGY3VyckVxBQl0ZW1wUHJvZEIHBQVzdGF0cwkAAAIFCG5ld1Byb2RCBQhuZXdQcm9kQgEZdXBkYXRlUHJvcG9ydGlvbnNJbnRlcm5hbAQIcHJvcExpc3QNdGVycmFpbkNvdW50cw1sYW5kU2l6ZUluZGV4BHNpZ24DCQECIT0CCQCQAwEFCHByb3BMaXN0BQZOVU1SRVMJAAIBAhZXcm9uZyBwcm9wb3J0aW9ucyBkYXRhCgEHdXBkYXRlcgIDYWNjAWkEBnJlc3VsdAkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQhwcm9wTGlzdAUBaQkAaAIJAGgCBQRzaWduCQCRAwIFDXRlcnJhaW5Db3VudHMFAWkFDWxhbmRTaXplSW5kZXgDCQBmAgAABQZyZXN1bHQJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICFlBhbmljISBQaWVjZXMgb2YgdHlwZT0JAKQDAQUBaQIHLCBzaWduPQkApAMBBQRzaWduAhMsIHRlcnJhaW5Db3VudHNbaV09CQCkAwEJAJEDAgUNdGVycmFpbkNvdW50cwUBaQIQLCBsYW5kU2l6ZUluZGV4PQkApAMBBQ1sYW5kU2l6ZUluZGV4CQDNCAIFA2FjYwkApAMBBQZyZXN1bHQKAAIkbAUFSVRFUjYKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBB3VwZGF0ZXICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDYJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYBEXVwZGF0ZVByb3BvcnRpb25zAw10ZXJyYWluQ291bnRzDWxhbmRTaXplSW5kZXgEc2lnbgQIcHJvcExpc3QJALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBCQERa2V5UmVzUHJvcG9ydGlvbnMAAgswXzBfMF8wXzBfMAIBXwkAuQkCCQEZdXBkYXRlUHJvcG9ydGlvbnNJbnRlcm5hbAQFCHByb3BMaXN0BQ10ZXJyYWluQ291bnRzBQ1sYW5kU2l6ZUluZGV4BQRzaWduAgFfAQ1jb3VudFRlcnJhaW5zAQh0ZXJyYWlucwkAzAgCCQBlAgkAkAMBCQC1CQIFCHRlcnJhaW5zAgFBAAEJAMwIAgkAZQIJAJADAQkAtQkCBQh0ZXJyYWlucwIBQgABCQDMCAIJAGUCCQCQAwEJALUJAgUIdGVycmFpbnMCAUMAAQkAzAgCCQBlAgkAkAMBCQC1CQIFCHRlcnJhaW5zAgFEAAEJAMwIAgkAZQIJAJADAQkAtQkCBQh0ZXJyYWlucwIBRQABCQDMCAIJAGUCCQCQAwEJALUJAgUIdGVycmFpbnMCAUYAAQUDbmlsAQZhZGRSZXMFCmN1cnJlbnRSZXMNdGVycmFpbkNvdW50cwlkZWx0YVRpbWUNbGFuZFNpemVJbmRleBdkYWlseUJ5UGllY2VXaXRoQm9udXNlcwoBBWFkZGVyAgNhY2MBaQQJcmVzT2ZUeXBlCQBoAgkAaAIJAGsDBQlkZWx0YVRpbWUFF2RhaWx5QnlQaWVjZVdpdGhCb251c2VzBQlEQVlNSUxMSVMJAJEDAgUNdGVycmFpbkNvdW50cwUBaQUNbGFuZFNpemVJbmRleAkAzQgCBQNhY2MJAKQDAQkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQpjdXJyZW50UmVzBQFpBQlyZXNPZlR5cGUEAXIKAAIkbAUFSVRFUjYKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBBWFkZGVyAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA2CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGCQC5CQIFAXICAV8BCXZpcnRDbGFpbQQNdGVycmFpbkNvdW50cwlkZWx0YVRpbWUNbGFuZFNpemVJbmRleBdkYWlseUJ5UGllY2VXaXRoQm9udXNlcwoBBWFkZGVyAgNhY2MBaQQJcmVzT2ZUeXBlCQBoAgkAaAIJAGsDBQlkZWx0YVRpbWUFF2RhaWx5QnlQaWVjZVdpdGhCb251c2VzBQlEQVlNSUxMSVMJAJEDAgUNdGVycmFpbkNvdW50cwUBaQUNbGFuZFNpemVJbmRleAkAlAoCCQDNCAIIBQNhY2MCXzEFCXJlc09mVHlwZQkAZAIIBQNhY2MCXzIFCXJlc09mVHlwZQoAAiRsBQVJVEVSNgoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJQKAgUDbmlsAAAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBBWFkZGVyAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA2CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAQ1kaXN0cmlidXRlUmVzBAxjdXJyZW50V2hSZXMOY3VycmVudFBhY2tSZXMKcmVzVG9DbGFpbQt3aFNwYWNlTGVmdAQOcmVzTGlzdFRvQ2xhaW0IBQpyZXNUb0NsYWltAl8xBAxyZXNBbVRvQ2xhaW0IBQpyZXNUb0NsYWltAl8yAwkAAAIFDHJlc0FtVG9DbGFpbQAACQCUCgIJALkJAgUMY3VycmVudFdoUmVzAgFfCQC5CQIFDmN1cnJlbnRQYWNrUmVzAgFfAwkAZwIFC3doU3BhY2VMZWZ0BQxyZXNBbVRvQ2xhaW0KAQhhZGRMaXN0cwIDYWNjAWkJAM0IAgUDYWNjCQCkAwEJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUMY3VycmVudFdoUmVzBQFpCQCRAwIFDnJlc0xpc3RUb0NsYWltBQFpBAFyCgACJGwFBUlURVI2CgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQhhZGRMaXN0cwIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNgkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgkAlAoCCQC5CQIFAXICAV8JALkJAgUOY3VycmVudFBhY2tSZXMCAV8KAQxhZGRQYXJ0TGlzdHMCA2FjYwFpBAZ3aFBhcnQJAGsDCQCRAwIFDnJlc0xpc3RUb0NsYWltBQFpBQt3aFNwYWNlTGVmdAUMcmVzQW1Ub0NsYWltCQCUCgIJAM0IAggFA2FjYwJfMQkApAMBCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFDGN1cnJlbnRXaFJlcwUBaQUGd2hQYXJ0CQDNCAIIBQNhY2MCXzIJAKQDAQkAZQIJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUOY3VycmVudFBhY2tSZXMFAWkJAJEDAgUOcmVzTGlzdFRvQ2xhaW0FAWkFBndoUGFydAQBcgoAAiRsBQVJVEVSNgoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJQKAgUDbmlsBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBDGFkZFBhcnRMaXN0cwIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNgkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgkAlAoCCQC5CQIIBQFyAl8xAgFfCQC5CQIIBQFyAl8yAgFfAQNhYnMBAXgDCQDAAgIFAXgJALYCAQAABQF4CQC+AgEFAXgABGZyZXEJAMwIAgkAzAgCAAYJAMwIAgAJCQDMCAIADgkAzAgCAA8JAMwIAgAQBQNuaWwJAMwIAgkAzAgCAAUJAMwIAgAICQDMCAIADQkAzAgCAA4JAMwIAgAPBQNuaWwJAMwIAgkAzAgCAAEJAMwIAgAECQDMCAIACQkAzAgCAAoJAMwIAgAPBQNuaWwJAMwIAgkAzAgCAAEJAMwIAgAGCQDMCAIABwkAzAgCAA8JAMwIAgATBQNuaWwJAMwIAgkAzAgCAAQJAMwIAgAHCQDMCAIACAkAzAgCAA0JAMwIAgASBQNuaWwFA25pbAEHZ2VuQ2hhcgIBbgVmcmVxcwQDcmVtCQCgAwEJALsCAgUBbgUHVFdFTlRZWAQGbGV0dGVyAwkAZgIJAJEDAgUFZnJlcXMAAAUDcmVtAgFBAwkAZgIJAJEDAgUFZnJlcXMAAQUDcmVtAgFCAwkAZgIJAJEDAgUFZnJlcXMAAgUDcmVtAgFDAwkAZgIJAJEDAgUFZnJlcXMAAwUDcmVtAgFEAwkAZgIJAJEDAgUFZnJlcXMABAUDcmVtAgFFAgFGBQZsZXR0ZXIBC2dlblRlcnJhaW5zAgRzZWVkDGNvbnRpbmVudElkeAQBZgkAkQMCBQRmcmVxBQxjb250aW5lbnRJZHgKARB0ZXJyYWluR2VuZXJhdG9yAgNhY2MEZWxlbQkAlAoCCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAggFA2FjYwJfMQkBB2dlbkNoYXICCAUDYWNjAl8yBQFmCQEHZ2VuQ2hhcgIJALoCAggFA2FjYwJfMgUHVFdFTlRZWAUBZgkBB2dlbkNoYXICCQC6AgIIBQNhY2MCXzIFCFRXRU5UWTJYBQFmCQEHZ2VuQ2hhcgIJALoCAggFA2FjYwJfMgUIVFdFTlRZM1gFAWYJAQdnZW5DaGFyAgkAugICCAUDYWNjAl8yBQhUV0VOVFk0WAUBZgkAugICCAUDYWNjAl8yBQhUV0VOVFk1WAQBdAoAAiRsCQDMCAIAAQkAzAgCAAIJAMwIAgADCQDMCAIABAkAzAgCAAUFA25pbAoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJQKAgIACQC6AgIFBHNlZWQFBUZJVkVYCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJARB0ZXJyYWluR2VuZXJhdG9yAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA1CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQgFAXQCXzEABlBFUk0yNQkAzAgCAAcJAMwIAgACCQDMCAIADwkAzAgCABMJAMwIAgAICQDMCAIAGAkAzAgCAAEJAMwIAgAVCQDMCAIAEAkAzAgCAAUJAMwIAgAACQDMCAIAFgkAzAgCABQJAMwIAgAXCQDMCAIACwkAzAgCAAQJAMwIAgASCQDMCAIADAkAzAgCAAYJAMwIAgAKCQDMCAIAAwkAzAgCABEJAMwIAgANCQDMCAIACQkAzAgCAA4FA25pbAAGVENIQVJTCQDMCAICAUEJAMwIAgIBQgkAzAgCAgFDCQDMCAICAUQJAMwIAgIBRQkAzAgCAgFGBQNuaWwBE2dlblRlcnJhaW5zRm9yTWVyZ2UCC3N1bVRlcnJhaW5zDWxhbmRTaXplSW5kZXgKAQVzdGVwMQIDYWNjAXMEAWoIBQNhY2MCXzIEAmVsCQENcGFyc2VJbnRWYWx1ZQEFAXMEAXgDCQAAAgUCZWwAAAAAAwkAZwIFAmVsCQBoAgAEBQ1sYW5kU2l6ZUluZGV4CQBpAgUCZWwFDWxhbmRTaXplSW5kZXgDCQBmAgUCZWwJAGgCAAMFDWxhbmRTaXplSW5kZXgAAwkAZAIJAGkCCQBlAgUCZWwAAQUNbGFuZFNpemVJbmRleAABCQCVCgMJAM0IAggFA2FjYwJfMQUBeAkAZAIIBQNhY2MCXzIAAQkAZAIIBQNhY2MCXzMFAXgEAXQKAAIkbAULc3VtVGVycmFpbnMKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCVCgMFA25pbAAAAAAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBBXN0ZXAxAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA2CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGBANhcnIIBQF0Al8xBAZtYXhJZHgJAQV2YWx1ZQEJAM8IAgUDYXJyCQCWAwEFA2FycgQFZGVsdGEJAGUCCAUBdAJfMwAZCgEGc3ViYmVyAgNhY2MDaWR4BAN2YWwDCQAAAgUDaWR4BQZtYXhJZHgJAGUCCQCRAwIFA2FycgUDaWR4BQVkZWx0YQkAkQMCBQNhcnIFA2lkeAQGemVyb2VzAwkAAAIFA3ZhbAAABQNuaWwJALUJAgkAsAICCQCkAwEJAGwGAAoAAAUDdmFsAAAAAAUERE9XTgABAgAEAWMJAJEDAgUGVENIQVJTBQNpZHgKAQdsaXN0R2VuAgJhYwdpZ25vcmVkCQDNCAIFAmFjBQFjBAF6CgACJGwFBnplcm9lcwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFA25pbAoBBSRmMV8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEHbGlzdEdlbgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMV8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMjUJAQUkZjFfMgIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQkAzggCBQNhY2MFAXoEAXIKAAIkbAUFSVRFUjYKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjFfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBBnN1YmJlcgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMV8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNgkBBSRmMV8yAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgoBBnBlcm11dAIDYWNjAWoJAKwCAgUDYWNjCQCRAwIFAXIFAWoKAAIkbAUGUEVSTTI1CgACJHMJAJADAQUCJGwKAAUkYWNjMAIACgEFJGYyXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQZwZXJtdXQCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjJfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDI1CQEFJGYyXzICCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAAVABYAFwAYABkBC2dldEJhY2twYWNrAQVicEtleQQBcAkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEFBWJwS2V5AhowOjBfMF8wXzBfMF8wOjBfMF8wXzBfMF8wOgIBOgkAzAgCCQCkAwEJAQt2YWx1ZU9yRWxzZQIJALYJAQkAkQMCBQFwBQpicElkeExldmVsAAAJAMwIAgMJAAACCQCQAwEJALUJAgkAkQMCBQFwBQhicElkeFJlcwIBXwUGTlVNUkVTCQCRAwIFAXAFCGJwSWR4UmVzAgswXzBfMF8wXzBfMAkAzAgCAwkAAAIJAJADAQkAtQkCCQCRAwIFAXAFCGJwSWR4TWF0AgFfBQZOVU1SRVMJAJEDAgUBcAUIYnBJZHhNYXQCCzBfMF8wXzBfMF8wCQDMCAIJAJEDAgUBcAUJYnBJZHhQcm9kBQNuaWwBF2dldFdhcmVob3VzZVRvdGFsVm9sdW1lAQl2b2xQcmVmaXgEBXBhcnRzCQC1CQIFCXZvbFByZWZpeAIBXwkAaAIJAGgCBQxXSE1VTFRJUExJRVIJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFcGFydHMAAQABCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFcGFydHMAAAEXZ2V0V2FyZWhvdXNlT2NjdXBpZWRWb2wBCWN1cnJlbnRXaAQFZ29vZHMJAJEDAgUJY3VycmVudFdoBQl3aElkeFByb2QKAQlzdW1SZXNNYXQCA2FjYwRpdGVtCQBkAgUDYWNjCQENcGFyc2VJbnRWYWx1ZQEFBGl0ZW0KAQdzdW1Qcm9kAgNhY2MEaXRlbQQDaWR4CAUDYWNjAl8xBARwa2dzCQBpAgkAZQIJAGQCCQENcGFyc2VJbnRWYWx1ZQEFBGl0ZW0FDlBST0RVQ1RQS0dTSVpFAAEFDlBST0RVQ1RQS0dTSVpFCQCUCgIJAGQCBQNpZHgAAQkAZAIIBQNhY2MCXzIJAGgCBQRwa2dzBQVNVUxUOAQId2hSZXNWb2wKAAIkbAkAtQkCCQCRAwIFCWN1cnJlbnRXaAUId2hJZHhSZXMCAV8KAAIkcwkAkAMBBQIkbAoABSRhY2MwAAAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBCXN1bVJlc01hdAIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNgkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgQId2hNYXRWb2wKAAIkbAkAtQkCCQCRAwIFCWN1cnJlbnRXaAUId2hJZHhNYXQCAV8KAAIkcwkAkAMBBQIkbAoABSRhY2MwAAAKAQUkZjFfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBCXN1bVJlc01hdAIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMV8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNgkBBSRmMV8yAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgQKd2hHb29kc1ZvbAMJAAACBQVnb29kcwIAAAAICgACJGwJALwJAgUFZ29vZHMCAV8KAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCUCgIAAAAACgEFJGYyXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQdzdW1Qcm9kAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYyXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyA1MAkBBSRmMl8yAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADICXzIJAGQCCQBkAgUId2hSZXNWb2wFCHdoTWF0Vm9sBQp3aEdvb2RzVm9sAQxnZXRXYXJlaG91c2UDBXdoS2V5CWxhbmRJbmRleAppbmZyYUxldmVsBAl2b2xQcmVmaXgJAKwCAgkArAICCQCkAwEFCWxhbmRJbmRleAIBXwkApAMBBQppbmZyYUxldmVsBAd3aFRvdGFsCQEXZ2V0V2FyZWhvdXNlVG90YWxWb2x1bWUBBQl2b2xQcmVmaXgEBXdoU3RyCQELdmFsdWVPckVsc2UCCQCiCAEFBXdoS2V5CQCsAgIFCXZvbFByZWZpeAIbOjBfMF8wXzBfMF8wOjBfMF8wXzBfMF8wOjowBAJ3aAkAvAkCBQV3aFN0cgIBOgQKd2hPY2N1cGllZAkBF2dldFdhcmVob3VzZU9jY3VwaWVkVm9sAQUCd2gEBndoTG9mdAMJAGYCAAUJAJADAQUCd2gJALkJAgkAzAgCAgEwCQDMCAIJAKQDAQUKd2hPY2N1cGllZAkAzAgCCQCkAwEJAGUCBQd3aFRvdGFsBQp3aE9jY3VwaWVkCQDMCAIJAKQDAQUHd2hUb3RhbAUDbmlsAgFfBARsb2Z0CQC1CQIJAJEDAgUCd2gFCXdoSWR4TE9GVAIBXwQId2hMb2NrZWQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQl2b2xMb2NrZWQEA29jYwMJAGYCCQCQAwEFBGxvZnQAAQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFC3ZvbE9jY3VwaWVkBQp3aE9jY3VwaWVkCQC5CQIJAMwIAgkApAMBBQh3aExvY2tlZAkAzAgCCQCkAwEFA29jYwkAzAgCCQCkAwEJAGUCCQBlAgUHd2hUb3RhbAUId2hMb2NrZWQFA29jYwkAzAgCCQCkAwEFB3doVG90YWwFA25pbAIBXwkAzAgCCQCRAwIFAndoBQt3aElkeExldmVscwkAzAgCAwkAAAIJAJADAQkAtQkCCQCRAwIFAndoBQh3aElkeFJlcwIBXwUGTlVNUkVTCQCRAwIFAndoBQh3aElkeFJlcwILMF8wXzBfMF8wXzAJAMwIAgMJAAACCQCQAwEJALUJAgkAkQMCBQJ3aAUId2hJZHhNYXQCAV8FBk5VTVJFUwkAkQMCBQJ3aAUId2hJZHhNYXQCCzBfMF8wXzBfMF8wCQDMCAIJAJEDAgUCd2gFCXdoSWR4UHJvZAkAzAgCBQZ3aExvZnQFA25pbAEVZ2V0V2FyZWhvdXNlU3BhY2VMZWZ0AQljdXJyZW50V2gEC29jY3VwaWVkVm9sCQEXZ2V0V2FyZWhvdXNlT2NjdXBpZWRWb2wBBQljdXJyZW50V2gED2N1cnJXaExvY2tlZFZvbAkBDXBhcnNlSW50VmFsdWUBCQCRAwIJALUJAgkAkQMCBQljdXJyZW50V2gFCXdoSWR4TE9GVAIBXwUJdm9sTG9ja2VkCQBlAgkAZQIJARdnZXRXYXJlaG91c2VUb3RhbFZvbHVtZQEJAJEDAgUJY3VycmVudFdoBQt3aElkeExldmVscwULb2NjdXBpZWRWb2wFD2N1cnJXaExvY2tlZFZvbAEJbW92ZVN0dWZmAwpjYXJnb1BhcnRzCWN1cnJlbnRXaAtjdXJyZW50UGFjawMJAQIhPQIJAJADAQUKY2FyZ29QYXJ0cwADCQACAQI0Y2FyZ29MaXN0U3RyIHNob3VsZCBjb250YWluIGV4YWN0bHkgMiAnOicgc2VwYXJhdG9ycwQIcmVzUGFydHMJALUJAgkAkQMCBQpjYXJnb1BhcnRzAAACAV8ECG1hdFBhcnRzCQC1CQIJAJEDAgUKY2FyZ29QYXJ0cwABAgFfBAlwcm9kUGFydHMDCQAAAgkAkQMCBQpjYXJnb1BhcnRzAAICAAUDbmlsCQC8CQIJAJEDAgUKY2FyZ29QYXJ0cwACAgFfAwkBAiE9AgkAkAMBBQhyZXNQYXJ0cwUGTlVNUkVTCQACAQIgQWxsIDYgcmVzb3VyY2VzIHNob3VsZCBiZSBwYXNzZWQDCQECIT0CCQCQAwEFCG1hdFBhcnRzBQZOVU1SRVMJAAIBAiBBbGwgNiBtYXRlcmlhbHMgc2hvdWxkIGJlIHBhc3NlZAQLd2hTcGFjZUxlZnQJARVnZXRXYXJlaG91c2VTcGFjZUxlZnQBBQljdXJyZW50V2gECWN1cnJXaFJlcwkAtQkCCQCRAwIFCWN1cnJlbnRXaAUId2hJZHhSZXMCAV8ECWN1cnJXaE1hdAkAtQkCCQCRAwIFCWN1cnJlbnRXaAUId2hJZHhNYXQCAV8ECmN1cnJXaFByb2QDCQAAAgkAkQMCBQljdXJyZW50V2gFCXdoSWR4UHJvZAIABQNuaWwJALwJAgkAkQMCBQljdXJyZW50V2gFCXdoSWR4UHJvZAIBXwQOY3VycmVudFBhY2tSZXMJALUJAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhSZXMCAV8EDmN1cnJlbnRQYWNrTWF0CQC1CQIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4TWF0AgFfBA9jdXJyZW50UGFja1Byb2QDCQAAAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kAgAFA25pbAkAvAkCCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QCAV8KAQNtdlICA2FjYwRpdGVtBAFpCAUDYWNjAl8xBAJhbQkBDXBhcnNlSW50VmFsdWUBBQRpdGVtBAN3aHIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQljdXJyV2hSZXMFAWkEA2JwcgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFDmN1cnJlbnRQYWNrUmVzBQFpAwkAAAIFAmFtAAAJAJYKBAkAZAIFAWkAAQkAzQgCCAUDYWNjAl8yCQCRAwIFCWN1cnJXaFJlcwUBaQkAzQgCCAUDYWNjAl8zCQCRAwIFDmN1cnJlbnRQYWNrUmVzBQFpCAUDYWNjAl80AwkAZgIFAmFtAAADCQBmAgUCYW0FA2JwcgkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgIQQXR0ZW1wdCB0byB0YWtlIAUEaXRlbQIZIGZyb20gYmFja3BhY2ssIGJ1dCBvbmx5IAkApAMBBQNicHICCiBhdmFpbGFibGUJAJYKBAkAZAIFAWkAAQkAzQgCCAUDYWNjAl8yCQCkAwEJAGQCBQN3aHIFAmFtCQDNCAIIBQNhY2MCXzMJAKQDAQkAZQIFA2JwcgUCYW0JAGQCCAUDYWNjAl80BQJhbQMJAGYCCQEBLQEFAmFtBQN3aHIJAAIBCQCsAgIJAKwCAgkArAICCQCsAgICEEF0dGVtcHQgdG8gdGFrZSAJAKQDAQkBAS0BBQJhbQIaIGZyb20gd2FyZWhvdXNlLCBidXQgb25seSAJAKQDAQUDd2hyAgogYXZhaWxhYmxlCQCWCgQJAGQCBQFpAAEJAM0IAggFA2FjYwJfMgkApAMBCQBkAgUDd2hyBQJhbQkAzQgCCAUDYWNjAl8zCQCkAwEJAGUCBQNicHIFAmFtCQBkAggFA2FjYwJfNAUCYW0EAXIKAAIkbAUIcmVzUGFydHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCWCgQAAAUDbmlsBQNuaWwAAAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEDbXZSAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA2CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGCgEDbXZNAgNhY2MEaXRlbQQBaQgFA2FjYwJfMQQCYW0JAQ1wYXJzZUludFZhbHVlAQUEaXRlbQQDd2htCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUJY3VycldoTWF0BQFpBANicG0JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQ5jdXJyZW50UGFja01hdAUBaQMJAAACBQJhbQAACQCWCgQJAGQCBQFpAAEJAM0IAggFA2FjYwJfMgkAkQMCBQljdXJyV2hNYXQFAWkJAM0IAggFA2FjYwJfMwkAkQMCBQ5jdXJyZW50UGFja01hdAUBaQgFA2FjYwJfNAMJAGYCBQJhbQAAAwkAZgIFAmFtBQNicG0JAAIBCQCsAgIJAKwCAgkArAICCQCsAgICEEF0dGVtcHQgdG8gdGFrZSAFBGl0ZW0CGSBmcm9tIGJhY2twYWNrLCBidXQgb25seSAJAKQDAQUDYnBtAgogYXZhaWxhYmxlCQCWCgQJAGQCBQFpAAEJAM0IAggFA2FjYwJfMgkApAMBCQBkAgUDd2htBQJhbQkAzQgCCAUDYWNjAl8zCQCkAwEJAGUCBQNicG0FAmFtCQBkAggFA2FjYwJfNAUCYW0DCQBmAgkBAS0BBQJhbQUDd2htCQACAQkArAICCQCsAgIJAKwCAgkArAICAhBBdHRlbXB0IHRvIHRha2UgCQCkAwEJAQEtAQUCYW0CGiBmcm9tIHdhcmVob3VzZSwgYnV0IG9ubHkgCQCkAwEFA3dobQIKIGF2YWlsYWJsZQkAlgoECQBkAgUBaQABCQDNCAIIBQNhY2MCXzIJAKQDAQkAZAIFA3dobQUCYW0JAM0IAggFA2FjYwJfMwkApAMBCQBlAgUDYnBtBQJhbQkAZAIIBQNhY2MCXzQFAmFtBAFtCgACJGwFCG1hdFBhcnRzCgACJHMJAJADAQUCJGwKAAUkYWNjMAkAlgoEAAAFA25pbAUDbmlsCAUBcgJfNAoBBSRmMV8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEDbXZNAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYxXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA2CQEFJGYxXzICCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECBQUkYWNjMAAAAAEAAgADAAQABQAGCgEDbXZQAgNhY2MEaXRlbQQBaQgFA2FjYwJfMQQCYW0JAQ1wYXJzZUludFZhbHVlAQUEaXRlbQQDd2hwAwkAZgIJAJADAQUKY3VycldoUHJvZAUBaQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCmN1cnJXaFByb2QFAWkAAAQDYnBwAwkAZgIJAJADAQUPY3VycmVudFBhY2tQcm9kBQFpCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUPY3VycmVudFBhY2tQcm9kBQFpAAADCQAAAgUCYW0AAAkAlgoECQBkAgUBaQABCQDNCAIIBQNhY2MCXzIJAKQDAQUDd2hwCQDNCAIIBQNhY2MCXzMJAKQDAQUDYnBwCAUDYWNjAl80AwkAZgIFAmFtAAADCQBmAgUCYW0FA2JwcAkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgIQQXR0ZW1wdCB0byB0YWtlIAUEaXRlbQIZIGZyb20gYmFja3BhY2ssIGJ1dCBvbmx5IAkApAMBBQNicHACCiBhdmFpbGFibGUECGRlbHRhVm9sCQBlAgkBCHRvVm9sdW1lAgkAZAIFA3docAUCYW0FDlBST0RVQ1RQS0dTSVpFCQEIdG9Wb2x1bWUCBQN3aHAFDlBST0RVQ1RQS0dTSVpFCQCWCgQJAGQCBQFpAAEJAM0IAggFA2FjYwJfMgkApAMBCQBkAgUDd2hwBQJhbQkAzQgCCAUDYWNjAl8zCQCkAwEJAGUCBQNicHAFAmFtCQBkAggFA2FjYwJfNAUIZGVsdGFWb2wDCQBmAgkBAS0BBQJhbQUDd2hwCQACAQkArAICCQCsAgIJAKwCAgkArAICAhBBdHRlbXB0IHRvIHRha2UgCQCkAwEJAQEtAQUCYW0CGiBmcm9tIHdhcmVob3VzZSwgYnV0IG9ubHkgCQCkAwEFA3docAIKIGF2YWlsYWJsZQQIZGVsdGFWb2wJAGUCCQEIdG9Wb2x1bWUCCQBkAgUDd2hwBQJhbQUOUFJPRFVDVFBLR1NJWkUJAQh0b1ZvbHVtZQIFA3docAUOUFJPRFVDVFBLR1NJWkUJAJYKBAkAZAIFAWkAAQkAzQgCCAUDYWNjAl8yCQCkAwEJAGQCBQN3aHAFAmFtCQDNCAIIBQNhY2MCXzMJAKQDAQkAZQIFA2JwcAUCYW0JAGQCCAUDYWNjAl80BQhkZWx0YVZvbAQBcAMJAQIhPQIJAJADAQUJcHJvZFBhcnRzAAAKAAIkbAUJcHJvZFBhcnRzCgACJHMJAJADAQUCJGwKAAUkYWNjMAkAlgoEAAAFA25pbAUDbmlsCAUBbQJfNAoBBSRmMl8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEDbXZQAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYyXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyA1MAkBBSRmMl8yAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIJAJYKBAAABQpjdXJyV2hQcm9kBQ9jdXJyZW50UGFja1Byb2QIBQFtAl80BAh2b2xTYWxkbwgFAXACXzQDCQBmAgUIdm9sU2FsZG8FC3doU3BhY2VMZWZ0CQACAQkArAICCQCsAgIJAKwCAgkArAICAhVBdHRlbXB0IHRvIHB1dCB0b3RhbCAJAKQDAQUIdm9sU2FsZG8CESBzdHVmZiwgYnV0IG9ubHkgCQCkAwEFC3doU3BhY2VMZWZ0AhUgd2FyZWhvdXNlIHNwYWNlIGxlZnQJAJkKBwkAuQkCCAUBcgJfMgIBXwkAuQkCCAUBbQJfMgIBXwkAugkCCAUBcAJfMgIBXwkAuQkCCAUBcgJfMwIBXwkAuQkCCAUBbQJfMwIBXwkAugkCCAUBcAJfMwIBXwUIdm9sU2FsZG8BEmV4cGVkaXRpb25JbnRlcm5hbAIGY2FsbGVyBHR4SWQECHVzZXJBZGRyCQClCAEFBmNhbGxlcgQGYmlnTnVtCQEDYWJzAQkAngMBBQR0eElkBAdmcmVlTnVtCQELdmFsdWVPckVsc2UCCQCfCAEJARJrZXlOZXh0RnJlZUxhbmROdW0ACQBkAgUPUFJFU0FMRU5VTUxBTkRTAAEEB2xhbmROdW0JAKQDAQUHZnJlZU51bQQMY29udGluZW50SWR4CQCgAwEJALsCAgUGYmlnTnVtBQVGSVZFWAQIdGVycmFpbnMJAQtnZW5UZXJyYWlucwIFBmJpZ051bQUMY29udGluZW50SWR4BAljb250aW5lbnQJAJEDAgUKY29udGluZW50cwUMY29udGluZW50SWR4BAVpc3N1ZQkAwggFCQEHbmZ0TmFtZQIFB2xhbmROdW0CAVMJALkJAgkAzAgCBQdsYW5kTnVtCQDMCAICAVMJAMwIAgUIdGVycmFpbnMJAMwIAgUJY29udGluZW50BQNuaWwCAV8AAQAABwQHYXNzZXRJZAkAuAgBBQVpc3N1ZQQCaWQJANgEAQUHYXNzZXRJZAkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQESa2V5TmV4dEZyZWVMYW5kTnVtAAkAZAIFB2ZyZWVOdW0AAQkAzAgCBQVpc3N1ZQkAzAgCCQELU3RyaW5nRW50cnkCCQEQa2V5TGFuZFRvQXNzZXRJZAEFB2xhbmROdW0FAmlkCQDMCAIJAQtTdHJpbmdFbnRyeQIJARVrZXlMYW5kQXNzZXRJZFRvT3duZXIBBQJpZAUIdXNlckFkZHIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEWtleUxhbmROdW1Ub093bmVyAQUHbGFuZE51bQUIdXNlckFkZHIJAMwIAgkBDEludGVnZXJFbnRyeQIJARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQUCaWQAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBHmtleUluZnJhTGV2ZWxCeUFzc2V0SWRBbmRPd25lcgIFAmlkBQh1c2VyQWRkcgAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFBmNhbGxlcgABBQdhc3NldElkBQNuaWwJAJQKAgUCaWQFCWNvbnRpbmVudAEMZmxpZ2h0Q29tbW9uAwh1c2VyQWRkcgdtZXNzYWdlA3NpZwMJAQEhAQkAxBMDBQdtZXNzYWdlBQNzaWcFA3B1YgkAAgECGHNpZ25hdHVyZSBkb2VzIG5vdCBtYXRjaAQFcGFydHMJALwJAgkAsAkBBQdtZXNzYWdlAgE7BAlmbGlnaHRMb2cJALwJAgkAkQMCBQVwYXJ0cwAAAgF8BAJocAkAtQkCCQCRAwIFCWZsaWdodExvZwUIZmxIZWFsdGgCAV8EBWN1ckhQCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCaHAAAAQFbmV3SFAJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJocAABBAtuZXdMb2NUeFZlcgkAtQkCCQCRAwIFBXBhcnRzAAECAToEC25ld0xvY2F0aW9uCQCRAwIFC25ld0xvY1R4VmVyAAAEBHRpbWUJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQlmbGlnaHRMb2cFC2ZsVGltZXN0YW1wAwMJAGYCBQR0aW1lCQBkAggFCWxhc3RCbG9jawl0aW1lc3RhbXAFEUZJVkVNSU5VVEVTTUlMTElTBgkAZgIJAGUCCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAURRklWRU1JTlVURVNNSUxMSVMFBHRpbWUJAAIBCQCsAgIJAKwCAgkArAICAhxzaWduYXR1cmUgb3V0ZGF0ZWQ6IGxvZ1RpbWU9CQCkAwEFBHRpbWUCCSwgYmNUaW1lPQkApAMBCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQJdHhGcm9tTXNnCQCRAwIFC25ld0xvY1R4VmVyAAEEBmxhc3RUeAkBC3ZhbHVlT3JFbHNlAgkAoggBCQERa2V5TGFzdFR4SWRCeVVzZXIBBQh1c2VyQWRkcgIAAwkBAiE9AgUGbGFzdFR4BQl0eEZyb21Nc2cJAAIBCQCsAgIJAKwCAgkArAICAh5UeCBpZHMgZG9uJ3QgbWF0Y2ghIEluIHN0YXRlOiAFBmxhc3RUeAIKLCBpbiBtc2c6IAUJdHhGcm9tTXNnBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFCHVzZXJBZGRyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkBAlrZXlIZWFsdGgJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQEBW1heEhQCQEJbWF4SGVhbHRoAQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEMa2V5RHVja0xldmVsAQULZHVja0Fzc2V0SWQAAAQMb2xkRnJvbVN0YXRlCQELdmFsdWVPckVsc2UCCQCfCAEFCWtleUhlYWx0aAUFbWF4SFADCQECIT0CBQxvbGRGcm9tU3RhdGUFBWN1ckhQCQACAQkArAICCQCsAgIJAKwCAgIKb2xkSGVhbHRoPQkApAMBBQxvbGRGcm9tU3RhdGUCLyBmcm9tIHN0YXRlIGRvZXMgbm90IG1hdGNoIG9uZSBmcm9tIGZsaWdodCBsb2c9CQCkAwEFBWN1ckhQAwkAZwIAAAUFY3VySFAJAAIBAh5Zb3UgY2FuJ3QgZmx5IHdpdGggemVybyBoZWFsdGgDCQEBIQEJARdjYW5XZWFyQ3VycmVudEVxdWlwbWVudAEFC2R1Y2tBc3NldElkCQACAQIWRXF1aXBtZW50IGluY29tcGF0aWJsZQQFYm9udXMDCQBmAgkAkAMBBQlmbGlnaHRMb2cFB2ZsQm9udXMJAJEDAgUJZmxpZ2h0TG9nBQdmbEJvbnVzAgAECHByb2RVc2VkAwkAZgIJAJADAQUJZmxpZ2h0TG9nBQtmbFByb2RzVXNlZAkAkQMCBQlmbGlnaHRMb2cFC2ZsUHJvZHNVc2VkAgAECnNlbnRBbW91bnQDAwkAZgIFBW5ld0hQAAAJAAACBQVib251cwIBJAcJAQVhc0ludAEJAPwHBAUMcmVzdENvbnRyYWN0Ag1zZW5kVXNkdFByaXplCQDMCAIFCHVzZXJBZGRyBQNuaWwFA25pbAAACQCXCgUFBW5ld0hQBQtkdWNrQXNzZXRJZAUKc2VudEFtb3VudAULbmV3TG9jYXRpb24FCHByb2RVc2VkAQxhcHBseUJvbnVzZXMCC2xhbmRBc3NldElkBnBpZWNlcwQKaW5mcmFMZXZlbAkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEFC2xhbmRBc3NldElkAAAECWFydFBpZWNlcwkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEga2V5TGFuZEFydFN0YXR1c0J5VHlwZUFuZEFzc2V0SWQCBQpBUlRQUkVTQUxFBQtsYW5kQXNzZXRJZAAABARhZGQ2CQBpAgUKaW5mcmFMZXZlbAAGBARhZGQ3CQBpAgUKaW5mcmFMZXZlbAAHCQBkAgkAZAIFD0RBSUxZUkVTQllQSUVDRQkAawMFD0RBSUxZUkVTQllQSUVDRQkAZAIJAGQCBQppbmZyYUxldmVsBQRhZGQ2CQBoAgACBQRhZGQ3AAUJAGsDBQ9EQUlMWVJFU0JZUElFQ0UFCWFydFBpZWNlcwkAaAIFBnBpZWNlcwAFARRjaGVja0NsYWltQ29uZGl0aW9ucwMEYWRkcgljbGFpbU1vZGUNbGFuZEFzc2V0SWRJbgQNJHQwMzM3MzgzNDI3NwMJAAACBQljbGFpbU1vZGUFC2NsYWltTW9kZVdoCQCUCgIFDWxhbmRBc3NldElkSW4JAQt2YWx1ZU9yRWxzZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUEYWRkcgIABAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFBGFkZHICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQEC2N1ckxvY2F0aW9uCQELdmFsdWVPckVsc2UCCQCiCAEJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAUPREVGQVVMVExPQ0FUSU9OBANsb2MJALUJAgkBBXZhbHVlAQULY3VyTG9jYXRpb24CAV8DCQECIT0CCQCRAwIFA2xvYwUKbG9jSWR4VHlwZQIBTAkAAgEJAKwCAgkArAICAhZEdWNrIGxvY2F0aW9uIHR5cGUgaXMgCQCRAwIFA2xvYwUKbG9jSWR4VHlwZQIRLCBidXQgc2hvdWxkIGJlIEwJAJQKAgkAkQMCBQNsb2MFCGxvY0lkeElkBQtkdWNrQXNzZXRJZAQLbGFuZEFzc2V0SWQIBQ0kdDAzMzczODM0Mjc3Al8xBAZkdWNrSWQIBQ0kdDAzMzczODM0Mjc3Al8yBAVhc3NldAkBBXZhbHVlAQkA7AcBCQDZBAEFC2xhbmRBc3NldElkBAd0aW1lS2V5CQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFC2xhbmRBc3NldElkBAlzYXZlZFRpbWUJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnwgBBQd0aW1lS2V5CQCsAgIJAKwCAgIFTGFuZCAIBQVhc3NldARuYW1lAg4gaXMgbm90IHN0YWtlZAQFb3duZXIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEVa2V5TGFuZEFzc2V0SWRUb093bmVyAQULbGFuZEFzc2V0SWQJAKwCAgkArAICAgRORlQgCAUFYXNzZXQEbmFtZQIMIGlzIG9ycGhhbmVkAwkBAiE9AgUFb3duZXIFBGFkZHIJAAIBCQCsAgIFCkxBTkRQUkVGSVgCDSBpcyBub3QgeW91cnMEAWQJALUJAggFBWFzc2V0C2Rlc2NyaXB0aW9uAgFfCQCWCgQFBmR1Y2tJZAULbGFuZEFzc2V0SWQFAWQFCXNhdmVkVGltZQEQY2xhaW1SZXNJbnRlcm5hbAQEYWRkcgZhbW91bnQJY2xhaW1Nb2RlDWxhbmRBc3NldElkSW4DCQBmAgAABQZhbW91bnQJAAIBAg9OZWdhdGl2ZSBhbW91bnQEAWMJARRjaGVja0NsYWltQ29uZGl0aW9ucwMFBGFkZHIFCWNsYWltTW9kZQUNbGFuZEFzc2V0SWRJbgQIbGFuZFNpemUJAJEDAggFAWMCXzMFC3JlY0xhbmRTaXplBA10ZXJyYWluQ291bnRzCQENY291bnRUZXJyYWlucwEJAJEDAggFAWMCXzMFC3JlY1RlcnJhaW5zBAlkZWx0YVRpbWUJAGUCCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAgFAWMCXzQDCQBmAgAABQlkZWx0YVRpbWUJAAIBCQCsAgIJAKwCAgkArAICAiZTYXZlZCB0aW1lc3RhbXAgaXMgaW4gZnV0dXJlLCBzYXZlZCA9IAkApAMBCAUBYwJfNAIMLCBjdXJyZW50ID0gCQCkAwEIBQlsYXN0QmxvY2sJdGltZXN0YW1wBAZwaWVjZXMJAQ9udW1QaWVjZXNCeVNpemUBBQhsYW5kU2l6ZQQWZGFpbHlQcm9kdWN0aW9uQnlQaWVjZQkBDGFwcGx5Qm9udXNlcwIIBQFjAl8yBQZwaWVjZXMECGF2YWlsUmVzCQBrAwUJZGVsdGFUaW1lCQBoAgUWZGFpbHlQcm9kdWN0aW9uQnlQaWVjZQUGcGllY2VzBQlEQVlNSUxMSVMDCQBmAgUGYW1vdW50BQhhdmFpbFJlcwkAAgEJAKwCAgkArAICCQCsAgICIk5vdCBlbm91Z2ggcmVzb3VyY2VzLCBhdmFpbGFibGUgPSAJAKQDAQUIYXZhaWxSZXMCDiwgcmVxdWVzdGVkID0gCQCkAwEFBmFtb3VudAQMbmV3RGVsdGFUaW1lCQBrAwkAZQIFCGF2YWlsUmVzBQZhbW91bnQFCURBWU1JTExJUwkAaAIFFmRhaWx5UHJvZHVjdGlvbkJ5UGllY2UFBnBpZWNlcwQMbmV3VGltZXN0YW1wCQBlAggFCWxhc3RCbG9jawl0aW1lc3RhbXAFDG5ld0RlbHRhVGltZQQJbGFuZEluZGV4CQBpAgUGcGllY2VzBQVTU0laRQQKcmVzVG9DbGFpbQkBCXZpcnRDbGFpbQQFDXRlcnJhaW5Db3VudHMJAGUCBQlkZWx0YVRpbWUFDG5ld0RlbHRhVGltZQUJbGFuZEluZGV4BRZkYWlseVByb2R1Y3Rpb25CeVBpZWNlBAV3aEtleQkBEmtleVdhcmVob3VzZUJ5TGFuZAEIBQFjAl8yBAppbmZyYUxldmVsCQELdmFsdWVPckVsc2UCCQCfCAEJARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQgFAWMCXzIAAAQJY3VycmVudFdoCQEMZ2V0V2FyZWhvdXNlAwUFd2hLZXkFCWxhbmRJbmRleAUKaW5mcmFMZXZlbAQEbG9mdAkAtQkCCQCRAwIFCWN1cnJlbnRXaAUJd2hJZHhMT0ZUAgFfBAt3aFNwYWNlTGVmdAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFB3ZvbEZyZWUDAwkAAAIFCWNsYWltTW9kZQULY2xhaW1Nb2RlV2gJAGYCBQZhbW91bnQFC3doU3BhY2VMZWZ0BwkAAgEJAKwCAgkArAICAgVPbmx5IAkApAMBBQt3aFNwYWNlTGVmdAIYIHNwYWNlIGxlZnQgaW4gd2FyZWhvdXNlBAVicEtleQkBEWtleUJhY2twYWNrQnlEdWNrAQgFAWMCXzEEC2N1cnJlbnRQYWNrCQELZ2V0QmFja3BhY2sBBQVicEtleQQOY3VycmVudFBhY2tSZXMJALUJAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhSZXMCAV8EDGN1cnJlbnRXaFJlcwkAtQkCCQCRAwIFCWN1cnJlbnRXaAUId2hJZHhSZXMCAV8EDSR0MDM2NjUxMzc1MjIDCQAAAgUJY2xhaW1Nb2RlBQtjbGFpbU1vZGVXaAkAlgoECQEGYWRkUmVzBQUMY3VycmVudFdoUmVzBQ10ZXJyYWluQ291bnRzCQBlAgUJZGVsdGFUaW1lBQxuZXdEZWx0YVRpbWUFCWxhbmRJbmRleAUWZGFpbHlQcm9kdWN0aW9uQnlQaWVjZQkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhSZXMJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbG9mdAULdm9sT2NjdXBpZWQIBQpyZXNUb0NsYWltAl8yCQBlAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFB3ZvbEZyZWUIBQpyZXNUb0NsYWltAl8yAwkAAAIFCWNsYWltTW9kZQUNY2xhaW1Nb2RlRHVjawkAlgoECQCRAwIFCWN1cnJlbnRXaAUId2hJZHhSZXMJAQZhZGRSZXMFBQ5jdXJyZW50UGFja1JlcwUNdGVycmFpbkNvdW50cwkAZQIFCWRlbHRhVGltZQUMbmV3RGVsdGFUaW1lBQlsYW5kSW5kZXgFFmRhaWx5UHJvZHVjdGlvbkJ5UGllY2UJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQt2b2xPY2N1cGllZAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFB3ZvbEZyZWUEBWRpc3RyCQENZGlzdHJpYnV0ZVJlcwQFDGN1cnJlbnRXaFJlcwUOY3VycmVudFBhY2tSZXMFCnJlc1RvQ2xhaW0FC3doU3BhY2VMZWZ0BAR3aEFtCQCXAwEJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFB3ZvbEZyZWUJAMwIAggFCnJlc1RvQ2xhaW0CXzIFA25pbAkAlgoECAUFZGlzdHICXzEIBQVkaXN0cgJfMgkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQt2b2xPY2N1cGllZAUEd2hBbQkAZQIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQd2b2xGcmVlBQR3aEFtBAV3aFJlcwgFDSR0MDM2NjUxMzc1MjICXzEEBWJwUmVzCAUNJHQwMzY2NTEzNzUyMgJfMgQFbG9mdE8IBQ0kdDAzNjY1MTM3NTIyAl8zBAVsb2Z0RggFDSR0MDM2NjUxMzc1MjICXzQJAJcKBQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBCAUBYwJfMgUMbmV3VGltZXN0YW1wCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEia2V5U3Rha2VkVGltZUJ5VHlwZUFzc2V0SWRBbmRPd25lcgMFCkxBTkRQUkVGSVgIBQFjAl8yBQRhZGRyBQxuZXdUaW1lc3RhbXAFA25pbAUFYnBLZXkJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUKYnBJZHhMZXZlbAkAzAgCBQVicFJlcwkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeE1hdAkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QFA25pbAUFd2hLZXkJAMwIAgkAkQMCBQljdXJyZW50V2gFC3doSWR4TGV2ZWxzCQDMCAIFBXdoUmVzCQDMCAIJAJEDAgUJY3VycmVudFdoBQh3aElkeE1hdAkAzAgCCQCRAwIFCWN1cnJlbnRXaAUJd2hJZHhQcm9kCQDMCAIJALkJAgkAzAgCCQCRAwIFBGxvZnQFCXZvbExvY2tlZAkAzAgCCQCkAwEFBWxvZnRPCQDMCAIJAKQDAQUFbG9mdEYJAMwIAgkAkQMCBQRsb2Z0BQh2b2xUb3RhbAUDbmlsAgFfBQNuaWwBCGNsYWltQWxsBARhZGRyC2xhbmRBc3NldElkBnBpZWNlcwljbGFpbU1vZGUEB3RpbWVLZXkJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQULbGFuZEFzc2V0SWQECXNhdmVkVGltZQkBBXZhbHVlAQkAnwgBBQd0aW1lS2V5BAhhdmFpbFJlcwkAaAIJAGsDCQBlAggFCWxhc3RCbG9jawl0aW1lc3RhbXAFCXNhdmVkVGltZQkBDGFwcGx5Qm9udXNlcwIFC2xhbmRBc3NldElkBQZwaWVjZXMFCURBWU1JTExJUwUGcGllY2VzCQEQY2xhaW1SZXNJbnRlcm5hbAQFBGFkZHIFCGF2YWlsUmVzBQljbGFpbU1vZGUFC2xhbmRBc3NldElkAQ11cEluZnJhQ29tbW9uBAxzaG91bGRVc2VNYXQGY2FsbGVyDXBheW1lbnRBbW91bnQLbGFuZEFzc2V0SWQEBGFkZHIJAKUIAQUGY2FsbGVyBAFjCQEUY2hlY2tDbGFpbUNvbmRpdGlvbnMDBQRhZGRyBRNjbGFpbU1vZGVXaFRoZW5EdWNrBQtsYW5kQXNzZXRJZAQGcGllY2VzCQEPbnVtUGllY2VzQnlTaXplAQkAkQMCCAUBYwJfMwULcmVjTGFuZFNpemUECGluZnJhS2V5CQEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEIBQFjAl8yBAhjdXJMZXZlbAkBC3ZhbHVlT3JFbHNlAgkAnwgBBQhpbmZyYUtleQAAAwMJAQEhAQUYS1NfQUxMT1dfQklHX0lORlJBX01FUkdFCQBnAgUIY3VyTGV2ZWwAAwcJAAIBAiZDdXJyZW50bHkgbWF4IGluZnJhc3RydWN0dXJlIGxldmVsID0gMwQIbWF4SW5mcmEJAGQCCQBpAgkBBHNxcnQEBQZwaWVjZXMAAAAABQRET1dOAAUAAgQIbmV3TGV2ZWwJAGQCBQhjdXJMZXZlbAABAwMFGEtTX0FMTE9XX0JJR19JTkZSQV9NRVJHRQkAZgIFCG5ld0xldmVsBQhtYXhJbmZyYQcJAAIBCQCsAgICJUN1cnJlbnRseSBtYXggaW5mcmFzdHJ1Y3R1cmUgbGV2ZWwgPSAJAKQDAQUIbWF4SW5mcmEEBGNvc3QJAGsDBRVJbmZyYVVwZ3JhZGVDb3N0U1VzZHQJAGgCBQZwaWVjZXMFCG5ld0xldmVsBQVTU0laRQMDCQEBIQEFDHNob3VsZFVzZU1hdAkBAiE9AgUNcGF5bWVudEFtb3VudAUEY29zdAcJAAIBCQCsAgICG1BheW1lbnQgYXR0YWNoZWQgc2hvdWxkIGJlIAkApAMBBQRjb3N0BAVicEtleQkBEWtleUJhY2twYWNrQnlEdWNrAQgFAWMCXzEEC2N1cnJlbnRQYWNrCQELZ2V0QmFja3BhY2sBBQVicEtleQQFbUxpc3QJALUJAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhNYXQCAV8EB21hdFVzZWQJAGsDBRFJbmZyYVVwZ3JhZGVDb3N0UwkAaAIFBnBpZWNlcwUIbmV3TGV2ZWwFBVNTSVpFBAZuZXdNYXQJALkJAgkBEXN1YnRyYWN0TWF0ZXJpYWxzAwUMc2hvdWxkVXNlTWF0BQVtTGlzdAUHbWF0VXNlZAIBXwQLY2xhaW1SZXN1bHQJAQhjbGFpbUFsbAQFBGFkZHIIBQFjAl8yBQZwaWVjZXMFE2NsYWltTW9kZVdoVGhlbkR1Y2sEBndoRGF0YQgFC2NsYWltUmVzdWx0Al81BAZvbGRWb2wJARdnZXRXYXJlaG91c2VUb3RhbFZvbHVtZQEJAJEDAgUGd2hEYXRhBQt3aElkeExldmVscwQKbmV3Vm9sRGF0YQkAuQkCCQDMCAIJAJEDAgkAtQkCCQCRAwIFBndoRGF0YQULd2hJZHhMZXZlbHMCAV8AAAkAzAgCCQCkAwEFCG5ld0xldmVsBQNuaWwCAV8EBm5ld1ZvbAkBF2dldFdhcmVob3VzZVRvdGFsVm9sdW1lAQUKbmV3Vm9sRGF0YQQEbG9mdAkAtQkCCQCRAwIFBndoRGF0YQUJd2hJZHhMT0ZUAgFfBApuZXdMb2Z0U3RyCQC5CQIJAMwIAgkAkQMCBQRsb2Z0BQl2b2xMb2NrZWQJAMwIAgkAkQMCBQRsb2Z0BQt2b2xPY2N1cGllZAkAzAgCCQCkAwEJAGUCCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFB3ZvbEZyZWUFBm5ld1ZvbAUGb2xkVm9sCQDMCAIJAKQDAQUGbmV3Vm9sBQNuaWwCAV8JAJUKAwkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQhpbmZyYUtleQUIbmV3TGV2ZWwJAMwIAgkBDEludGVnZXJFbnRyeQIJAR5rZXlJbmZyYUxldmVsQnlBc3NldElkQW5kT3duZXICCAUBYwJfMgUEYWRkcgUIbmV3TGV2ZWwJAMwIAgkBC1N0cmluZ0VudHJ5AgUFYnBLZXkJALkJAgkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQpicElkeExldmVsCQDMCAIJAJEDAggFC2NsYWltUmVzdWx0Al8zBQhicElkeFJlcwkAzAgCBQZuZXdNYXQJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kBQNuaWwCAToJAMwIAgkBC1N0cmluZ0VudHJ5AggFC2NsYWltUmVzdWx0Al80CQC5CQIJAMwIAgUKbmV3Vm9sRGF0YQkAzAgCCQCRAwIFBndoRGF0YQUId2hJZHhSZXMJAMwIAgkAkQMCBQZ3aERhdGEFCHdoSWR4TWF0CQDMCAIJAJEDAgUGd2hEYXRhBQl3aElkeFByb2QJAMwIAgUKbmV3TG9mdFN0cgUDbmlsAgE6BQNuaWwIBQtjbGFpbVJlc3VsdAJfMQUIbmV3TGV2ZWwFB21hdFVzZWQBF3VwZGF0ZUR1Y2tTdGF0c0ludGVybmFsAgtkdWNrQXNzZXRJZAdkZWx0YVhQBAZsdmxLZXkJAQxrZXlEdWNrTGV2ZWwBBQtkdWNrQXNzZXRJZAQFeHBLZXkJAQlrZXlEdWNrWFABBQtkdWNrQXNzZXRJZAQCeHAJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUFeHBLZXkAAAQFbmV3WFAJAGQCBQJ4cAUHZGVsdGFYUAQJbHZsUG9pbnRzCQEHbGV2ZWxVcAIJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUGbHZsS2V5AAAFBW5ld1hQBAlrZXlQb2ludHMJARFrZXlEdWNrRnJlZVBvaW50cwEFC2R1Y2tBc3NldElkCQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIFBmx2bEtleQkAkQMCBQlsdmxQb2ludHMAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgUFeHBLZXkFBW5ld1hQCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlrZXlQb2ludHMJAGQCCQELdmFsdWVPckVsc2UCCQCfCAEFCWtleVBvaW50cwAACQCRAwIFCWx2bFBvaW50cwABBQNuaWwFBW5ld1hQARZ1cGRhdGVBY2NTdGF0c0ludGVybmFsAgRhZGRyB2RlbHRhWFAEBmx2bEtleQkBDGtleVVzZXJMZXZlbAEFBGFkZHIEBXhwS2V5CQEJa2V5VXNlclhQAQUEYWRkcgQCeHAJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUFeHBLZXkAAAQFbmV3WFAJAGQCBQJ4cAUHZGVsdGFYUAQJbHZsUG9pbnRzCQEHbGV2ZWxVcAIJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUGbHZsS2V5AAAFBW5ld1hQBAlrZXlQb2ludHMJARFrZXlVc2VyRnJlZVBvaW50cwEFBGFkZHIJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUGbHZsS2V5CQCRAwIFCWx2bFBvaW50cwAACQDMCAIJAQxJbnRlZ2VyRW50cnkCBQV4cEtleQUFbmV3WFAJAMwIAgkBDEludGVnZXJFbnRyeQIFCWtleVBvaW50cwkAZAIJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJa2V5UG9pbnRzAAAJAJEDAgUJbHZsUG9pbnRzAAEFA25pbAUFbmV3WFABEmFjdGl2YXRlT25ib2FyZEFydAEEYWRkcgQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQRhZGRyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkBAhyZWZCeUtleQkBD2tleUFkZHJlc3NSZWZCeQEFBGFkZHIEBXJlZkJ5CQCiCAEFCHJlZkJ5S2V5AwkBASEBCQEJaXNEZWZpbmVkAQUFcmVmQnkJAAIBAilZb3UgYXJlIG5vdCBlbGlnaWJsZSBmb3IgT05CT0FSRCBhcnRpZmFjdAQGYXJ0S2V5CQEca2V5T25ib2FyZEFydER1Y2tBY3RpdmF0ZWRCeQEFBGFkZHIEB2FydER1Y2sJAKIIAQUGYXJ0S2V5AwkBCWlzRGVmaW5lZAEFB2FydER1Y2sJAAIBCQCsAgICL1lvdSBhbHJlYWR5IHVzZWQgeW91ciBPTkJPQVJEIGFydGlmYWN0IG9uIGR1Y2sgCQEFdmFsdWUBBQdhcnREdWNrBBBkdWNrQWN0aXZhdG9yS2V5CQEca2V5T25ib2FyZEFydEFjdGl2YXRlZE9uRHVjawEFC2R1Y2tBc3NldElkBA1kdWNrQWN0aXZhdG9yCQCiCAEFEGR1Y2tBY3RpdmF0b3JLZXkDCQEJaXNEZWZpbmVkAQUNZHVja0FjdGl2YXRvcgkAAgEJAKwCAgkArAICCQCsAgICCVRoZSBkdWNrIAULZHVja0Fzc2V0SWQCNCBhbHJlYWR5IGdvdCBwb2ludHMgZnJvbSBPTkJPQVJEIGFydGlmYWN0IGZyb20gdXNlciAJAQV2YWx1ZQEFDWR1Y2tBY3RpdmF0b3IJAM4IAgkAzAgCCQELU3RyaW5nRW50cnkCBQZhcnRLZXkFC2R1Y2tBc3NldElkCQDMCAIJAQtTdHJpbmdFbnRyeQIFEGR1Y2tBY3RpdmF0b3JLZXkFBGFkZHIFA25pbAgJARd1cGRhdGVEdWNrU3RhdHNJbnRlcm5hbAIFC2R1Y2tBc3NldElkBQl4cE9uYm9hcmQCXzEBEmFjdGl2YXRlUHJlc2FsZUFydAIEYWRkcg1sYW5kQXNzZXRJZEluBAFjCQEUY2hlY2tDbGFpbUNvbmRpdGlvbnMDBQRhZGRyBRNjbGFpbU1vZGVXaFRoZW5EdWNrBQ1sYW5kQXNzZXRJZEluBAtsYW5kQXNzZXRJZAgFAWMCXzIEBnBpZWNlcwkBD251bVBpZWNlc0J5U2l6ZQEJAJEDAggFAWMCXzMFC3JlY0xhbmRTaXplBA1hY3RpdmF0aW9uS2V5CQEga2V5TGFuZEFydFN0YXR1c0J5VHlwZUFuZEFzc2V0SWQCBQpBUlRQUkVTQUxFBQtsYW5kQXNzZXRJZAMJAGYCCQELdmFsdWVPckVsc2UCCQCfCAEFDWFjdGl2YXRpb25LZXkAAAAACQACAQIlUHJlc2FsZSBhcnRpZmFjdCBpcyBhbHJlYWR5IGFjdGl2YXRlZAMJAGYCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAggFAWMCXzMFCnJlY0xhbmROdW0FD1BSRVNBTEVOVU1MQU5EUwkAAgEJAKwCAgkArAICCQCsAgIFCkxBTkRQUkVGSVgCASAFC2xhbmRBc3NldElkAiUgaXMgbm90IGVsaWdpYmxlIGZvciBwcmVzYWxlIGFydGlmYWN0BAtjbGFpbVJlc3VsdAkBCGNsYWltQWxsBAUEYWRkcgULbGFuZEFzc2V0SWQFBnBpZWNlcwUTY2xhaW1Nb2RlV2hUaGVuRHVjawkAzQgCCQDNCAIJAM0IAggFC2NsYWltUmVzdWx0Al8xCQEMSW50ZWdlckVudHJ5AgUNYWN0aXZhdGlvbktleQUGcGllY2VzCQELU3RyaW5nRW50cnkCCAULY2xhaW1SZXN1bHQCXzIJALkJAggFC2NsYWltUmVzdWx0Al8zAgE6CQELU3RyaW5nRW50cnkCCAULY2xhaW1SZXN1bHQCXzQJALkJAggFC2NsYWltUmVzdWx0Al81AgE6AQ9jaGVja1RvdXJuYW1lbnQBC2R1Y2tBc3NldElkBAZsYXN0SWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUSdG91cm5hbWVudENvbnRyYWN0BQ1sYXN0VG91cklkS2V5AAAEC2N1ckxvY2F0aW9uCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAKIIAQkBD2tleUR1Y2tMb2NhdGlvbgEFC2R1Y2tBc3NldElkBQ9ERUZBVUxUTE9DQVRJT04CAV8EA25vdwgFCWxhc3RCbG9jawl0aW1lc3RhbXAEBXREYXRhCQELZ2V0VG91ckRhdGECBRJ0b3VybmFtZW50Q29udHJhY3QFBmxhc3RJZAQGc3RhdGljCQCRAwIFBXREYXRhBQlpZHhTdGF0aWMEB2R5bmFtaWMJAJEDAgUFdERhdGEFCmlkeER5bmFtaWMDCQECIT0CCQCRAwIFC2N1ckxvY2F0aW9uBQpsb2NJZHhUeXBlAgFUBwMDAwkAAAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQtjdXJMb2NhdGlvbgUPbG9jSWR4Q29udGluZW50BQZsYXN0SWQJAAACCQCRAwIFB2R5bmFtaWMFDnREeW5hbWljU3RhdHVzAgpJTlBST0dSRVNTBwkAZgIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQZzdGF0aWMFCnRTdGF0aWNFbmQFA25vdwcJAAIBAipZb3VyIGR1Y2sgaXMgdGFraW5nIHBhcnQgaW4gdGhlIHRvdXJuYW1lbnQJAQlhc0Jvb2xlYW4BCQD8BwQFBHRoaXMCFmV4aXRUb3VybmFtZW50SW50ZXJuYWwJAMwIAgULZHVja0Fzc2V0SWQFA25pbAUDbmlsAQ1jaGVja0RlbGl2ZXJ5AQtkdWNrQXNzZXRJZAMJAQEhAQURS1NfQUxMT1dfREVMSVZFUlkHBAtjdXJMb2NhdGlvbgkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAUPREVGQVVMVExPQ0FUSU9OAgFfBANub3cIBQlsYXN0QmxvY2sJdGltZXN0YW1wAwkBAiE9AgkAkQMCBQtjdXJMb2NhdGlvbgUKbG9jSWR4VHlwZQIBRAcECXN0YXJ0VGltZQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFC2N1ckxvY2F0aW9uBQ9sb2NJZHhDb250aW5lbnQECGRpc3RhbmNlCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgULY3VyTG9jYXRpb24FCGxvY0lkeElkAwMJAGYCBQNub3cJAGQCBQlzdGFydFRpbWUFElRFTl9NSU5VVEVTX01JTExJUwkAZgIAAwUIZGlzdGFuY2UHCQACAQIgWW91ciBkdWNrIGlzIG9uIGRlbGl2ZXJ5IG1pc3Npb24JAQlhc0Jvb2xlYW4BCQD8BwQFBHRoaXMCFGV4aXREZWxpdmVyeUludGVybmFsCQDMCAIFC2R1Y2tBc3NldElkBQNuaWwFA25pbAESZXhpdERlbGl2ZXJ5Q29tbW9uAwtkdWNrQXNzZXRJZApjaGVja05ld0hQBW5ld0hQBAtjdXJMb2NhdGlvbgkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAUPREVGQVVMVExPQ0FUSU9OAgFfBANub3cIBQlsYXN0QmxvY2sJdGltZXN0YW1wBAlzdGFydFRpbWUJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQtjdXJMb2NhdGlvbgUPbG9jSWR4Q29udGluZW50BAhkaXN0YW5jZQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFC2N1ckxvY2F0aW9uBQhsb2NJZHhJZAQFb3duZXIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEQa2V5RHVja0lkVG9Pd25lcgEFC2R1Y2tBc3NldElkAhRORlQgZHVjayBpcyBvcnBoYW5lZAQJaGVhbHRoS2V5CQENa2V5RHVja0hlYWx0aAEFC2R1Y2tBc3NldElkBAljdXJIZWFsdGgJARFAZXh0ck5hdGl2ZSgxMDU1KQEFCWhlYWx0aEtleQQOb3V0Y29tZUFjdGlvbnMDCQBnAgUIZGlzdGFuY2UAAwQGcmV3YXJkCQD8BwQFD2Vjb25vbXlDb250cmFjdAISc2VuZERlbGl2ZXJ5UmV3YXJkCQDMCAIFBW93bmVyBQNuaWwFA25pbAMJAAACBQZyZXdhcmQFBnJld2FyZAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAwMDBQpjaGVja05ld0hQCQBmAgUFbmV3SFAAAAcJAGYCBQNub3cJAGQCBQlzdGFydFRpbWUFElRFTl9NSU5VVEVTX01JTExJUwcJAAIBAiZZb3VyIGR1Y2sgaXMgc3RpbGwgb24gZGVsaXZlcnkgbWlzc2lvbgQLbG9ja2VkVG90YWwJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPZWNvbm9teUNvbnRyYWN0BRFkZWxpdmVyeUxvY2tlZEtleQAABAZ1bmxvY2sJAPwHBAUPZWNvbm9teUNvbnRyYWN0AhR1cGRhdGVEZWxpdmVyeUxvY2tlZAkAzAgCCQBlAgULbG9ja2VkVG90YWwFFU1JTl9VU0RUX0ZFRV9ERUxJVkVSWQUDbmlsBQNuaWwDCQAAAgUGdW5sb2NrBQZ1bmxvY2sDCQBnAgAABQljdXJIZWFsdGgFA25pbAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBFmtleURlbGl2ZXJ5RGVsYXlCeUR1Y2sBBQtkdWNrQXNzZXRJZAkAZAIFCXN0YXJ0VGltZQUTREVMSVZFUllfUFVOSVNITUVOVAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBAtzYXZlZEhlYWx0aAkBEUBleHRyTmF0aXZlKDEwNTUpAQkBDmtleVNhdmVkSGVhbHRoAQULZHVja0Fzc2V0SWQEDXNhdmVkTG9jYXRpb24JARFAZXh0ck5hdGl2ZSgxMDU4KQEJARBrZXlTYXZlZExvY2F0aW9uAQULZHVja0Fzc2V0SWQJAJYKBAUOb3V0Y29tZUFjdGlvbnMJAMwIAgkBDEludGVnZXJFbnRyeQIFCWhlYWx0aEtleQULc2F2ZWRIZWFsdGgJAMwIAgkBC1N0cmluZ0VudHJ5AgkBD2tleUR1Y2tMb2NhdGlvbgEFC2R1Y2tBc3NldElkBQ1zYXZlZExvY2F0aW9uBQNuaWwFDXNhdmVkTG9jYXRpb24FC3NhdmVkSGVhbHRoAQ1tZXJnZUludGVybmFsBgtuZXdMYW5kU2l6ZQhuZXdMZXZlbAdmb3JtdWxhBGFkZHIMbGFuZEFzc2V0SWRzB25lZWRNYXQEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUEYWRkcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAMJAQ9jaGVja1RvdXJuYW1lbnQBBQtkdWNrQXNzZXRJZAkAAgECHW1lcmdlSW50ZXJuYWxfY2hlY2tUb3VybmFtZW50AwkBDWNoZWNrRGVsaXZlcnkBBQtkdWNrQXNzZXRJZAkAAgECG21lcmdlSW50ZXJuYWxfY2hlY2tEZWxpdmVyeQoBCmNoZWNrTWVyZ2UCA2FjYwtsYW5kQXNzZXRJZAQFYXNzZXQJAQV2YWx1ZQEJAOwHAQkA2QQBBQtsYW5kQXNzZXRJZAQHdGltZUtleQkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAQJc2F2ZWRUaW1lCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ8IAQUHdGltZUtleQkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAg4gaXMgbm90IHN0YWtlZAQFb3duZXIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEVa2V5TGFuZEFzc2V0SWRUb093bmVyAQULbGFuZEFzc2V0SWQJAKwCAgkArAICAgRORlQgCAUFYXNzZXQEbmFtZQIMIGlzIG9ycGhhbmVkAwkBAiE9AgUFb3duZXIFBGFkZHIJAAIBCQCsAgIFCkxBTkRQUkVGSVgCDSBpcyBub3QgeW91cnMEAWQJALUJAggFBWFzc2V0C2Rlc2NyaXB0aW9uAgFfBAljb250aW5lbnQJAJEDAgUBZAUMcmVjQ29udGluZW50AwMJAQIhPQIIBQNhY2MCXzMCAAkBAiE9AggFA2FjYwJfMwUJY29udGluZW50BwkAAgECLkxhbmRzIHNob3VsZCBiZSBvbiB0aGUgc2FtZSBjb250aW5lbnQgdG8gbWVyZ2UECGxhbmRTaXplCQCRAwIFAWQFC3JlY0xhbmRTaXplBAdzaXplc0luCAUDYWNjAl8xBAFpCQETdmFsdWVPckVycm9yTWVzc2FnZQIJALMJAgUHc2l6ZXNJbgUIbGFuZFNpemUCJ1lvdSBoYXZlbid0IHBhc3NlZCBhbGwgdGhlIGxhbmRzIG5lZWRlZAQIc2l6ZXNPdXQJAKwCAgkArwICBQdzaXplc0luBQFpCQCwAgIFB3NpemVzSW4JAGQCBQFpAAEEBnBpZWNlcwkBD251bVBpZWNlc0J5U2l6ZQEFCGxhbmRTaXplBARhcnRzCQBkAggFA2FjYwJfMgkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEga2V5TGFuZEFydFN0YXR1c0J5VHlwZUFuZEFzc2V0SWQCBQpBUlRQUkVTQUxFBQtsYW5kQXNzZXRJZAAABAppbmZyYUxldmVsCQELdmFsdWVPckVsc2UCCQCfCAEJARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQULbGFuZEFzc2V0SWQAAAQIcmVxTGV2ZWwEByRtYXRjaDAFCGxhbmRTaXplAwkAAAICAVMFByRtYXRjaDAAAwMJAAACAgFNBQckbWF0Y2gwAAQDCQAAAgIBTAUHJG1hdGNoMAAFAwkAAAICAlhMBQckbWF0Y2gwAAYJAAIBAhpPbmx5IFMsIE0sIEwsIFhMIGNhbiBtZXJnZQMJAQIhPQIFCmluZnJhTGV2ZWwFCHJlcUxldmVsCQACAQIiQWxsIGxhbmRzIHNob3VsZCBiZSBtYXhlZCB0byBtZXJnZQQHbGFuZE51bQkAkQMCBQFkBQpyZWNMYW5kTnVtBA10ZXJyYWluQ291bnRzCQENY291bnRUZXJyYWlucwEJAJEDAgUBZAULcmVjVGVycmFpbnMECWRlbHRhVGltZQkAZQIIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQlzYXZlZFRpbWUDCQBmAgAABQlkZWx0YVRpbWUJAAIBCQCsAgIJAKwCAgkArAICAiZTYXZlZCB0aW1lc3RhbXAgaXMgaW4gZnV0dXJlLCBzYXZlZCA9IAkApAMBBQlzYXZlZFRpbWUCDCwgY3VycmVudCA9IAkApAMBCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQWZGFpbHlQcm9kdWN0aW9uQnlQaWVjZQkBDGFwcGx5Qm9udXNlcwIFC2xhbmRBc3NldElkBQZwaWVjZXMECWxhbmRJbmRleAkAaQIFBnBpZWNlcwUFU1NJWkUEBWJwUmVzCQEGYWRkUmVzBQkAtQkCCAUDYWNjAl80AgFfBQ10ZXJyYWluQ291bnRzBQlkZWx0YVRpbWUFCWxhbmRJbmRleAUWZGFpbHlQcm9kdWN0aW9uQnlQaWVjZQQFcHJvcHMJARl1cGRhdGVQcm9wb3J0aW9uc0ludGVybmFsBAgFA2FjYwJfNgUNdGVycmFpbkNvdW50cwUJbGFuZEluZGV4AP///////////wEEBmNQcm9wcwkBGXVwZGF0ZVByb3BvcnRpb25zSW50ZXJuYWwECAUDYWNjA18xMAUNdGVycmFpbkNvdW50cwUJbGFuZEluZGV4AP///////////wEEC3N1bVRlcnJhaW5zCQEZdXBkYXRlUHJvcG9ydGlvbnNJbnRlcm5hbAQIBQNhY2MCXzkFDXRlcnJhaW5Db3VudHMFCWxhbmRJbmRleAABBAVsYW5kcwgFA2FjYwJfNwQDaWR4CQDPCAIFBWxhbmRzBQtsYW5kQXNzZXRJZAMJAQEhAQkBCWlzRGVmaW5lZAEFA2lkeAkAAgEJAKwCAgIgWW91ciBzdGFrZWQgbGFuZHMgZG9uJ3QgY29udGFpbiAFC2xhbmRBc3NldElkBAljdXN0b21LZXkJARprZXlMYW5kQXNzZXRJZFRvQ3VzdG9tTmFtZQEFC2xhbmRBc3NldElkBApjdXN0b21OYW1lCQELdmFsdWVPckVsc2UCCQCiCAEFCWN1c3RvbUtleQIACQCcCgoFCHNpemVzT3V0BQRhcnRzBQljb250aW5lbnQFBWJwUmVzCQDOCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCAUDYWNjAl81CQELRGVsZXRlRW50cnkBCQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFC2xhbmRBc3NldElkCQELRGVsZXRlRW50cnkBCQEia2V5U3Rha2VkVGltZUJ5VHlwZUFzc2V0SWRBbmRPd25lcgMFCkxBTkRQUkVGSVgFC2xhbmRBc3NldElkBQRhZGRyCQELRGVsZXRlRW50cnkBCQEQa2V5TGFuZFRvQXNzZXRJZAEFB2xhbmROdW0JAQtEZWxldGVFbnRyeQEJARVrZXlMYW5kQXNzZXRJZFRvT3duZXIBBQtsYW5kQXNzZXRJZAkBC0RlbGV0ZUVudHJ5AQkBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAkBC0RlbGV0ZUVudHJ5AQkBHmtleUluZnJhTGV2ZWxCeUFzc2V0SWRBbmRPd25lcgIFC2xhbmRBc3NldElkBQRhZGRyCQELRGVsZXRlRW50cnkBCQEga2V5TGFuZEFydFN0YXR1c0J5VHlwZUFuZEFzc2V0SWQCBQpBUlRQUkVTQUxFBQtsYW5kQXNzZXRJZAkBC0RlbGV0ZUVudHJ5AQkBEWtleUxhbmROdW1Ub093bmVyAQUHbGFuZE51bQkBC0RlbGV0ZUVudHJ5AQkBEmtleVdhcmVob3VzZUJ5TGFuZAEFC2xhbmRBc3NldElkCQELRGVsZXRlRW50cnkBBQljdXN0b21LZXkJAQRCdXJuAgkA2QQBBQtsYW5kQXNzZXRJZAABAwkBAiE9AgUKY3VzdG9tTmFtZQIACQDMCAIJAQtEZWxldGVFbnRyeQEJARprZXlMYW5kQ3VzdG9tTmFtZVRvQXNzZXRJZAEFCmN1c3RvbU5hbWUFA25pbAUDbmlsBQVwcm9wcwkA0QgCBQVsYW5kcwkBBXZhbHVlAQUDaWR4CQBkAggFA2FjYwJfOAUGcGllY2VzBQtzdW1UZXJyYWlucwUGY1Byb3BzBAVicEtleQkBEWtleUJhY2twYWNrQnlEdWNrAQULZHVja0Fzc2V0SWQEC2N1cnJlbnRQYWNrCQELZ2V0QmFja3BhY2sBBQVicEtleQQIcHJvcExpc3QJALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBCQERa2V5UmVzUHJvcG9ydGlvbnMAAgswXzBfMF8wXzBfMAIBXwQIbGFuZHNLZXkJARVrZXlTdGFrZWRMYW5kc0J5T3duZXIBBQRhZGRyBAhsYW5kc1N0cgkAoggBBQhsYW5kc0tleQQHbGFuZHNJbgMJAQlpc0RlZmluZWQBBQhsYW5kc1N0cgkAvQkCCQEFdmFsdWUBBQhsYW5kc1N0cgIBXwUDbmlsBAVjb250MAkAkQMCCQC1CQIICQEFdmFsdWUBCQDsBwEJANkEAQkAkQMCBQxsYW5kQXNzZXRJZHMAAAtkZXNjcmlwdGlvbgIBXwUMcmVjQ29udGluZW50BAljb250UHJvcHMJALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBCQEWa2V5UmVzVHlwZXNCeUNvbnRpbmVudAEFBWNvbnQwAgswXzBfMF8wXzBfMAIBXwQBcgoAAiRsBQxsYW5kQXNzZXRJZHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCcCgoFB2Zvcm11bGEAAAIACQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeFJlcwUDbmlsBQhwcm9wTGlzdAUHbGFuZHNJbgAACQC1CQICCzBfMF8wXzBfMF8wAgFfBQljb250UHJvcHMKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBCmNoZWNrTWVyZ2UCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDUJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFBAljb250aW5lbnQIBQFyAl8zBAxjb250aW5lbnRJZHgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAzwgCBQpjb250aW5lbnRzBQljb250aW5lbnQJAKwCAgITVW5rbm93biBjb250aW5lbnQ6IAUJY29udGluZW50BAh0ZXJyYWlucwkBE2dlblRlcnJhaW5zRm9yTWVyZ2UCCAUBcgJfOQkAaQIJAQ9udW1QaWVjZXNCeVNpemUBBQtuZXdMYW5kU2l6ZQUFU1NJWkUEB2ZyZWVOdW0JAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBEmtleU5leHRGcmVlTGFuZE51bQAJAGQCBQ9QUkVTQUxFTlVNTEFORFMAAQQKbmV3TGFuZE51bQkApAMBBQdmcmVlTnVtBAVpc3N1ZQkAwggFCQEHbmZ0TmFtZQIFCm5ld0xhbmROdW0FC25ld0xhbmRTaXplCQC5CQIJAMwIAgUKbmV3TGFuZE51bQkAzAgCBQtuZXdMYW5kU2l6ZQkAzAgCBQh0ZXJyYWlucwkAzAgCBQljb250aW5lbnQFA25pbAIBXwABAAAHBAdhc3NldElkCQC4CAEFBWlzc3VlBA5uZXdMYW5kQXNzZXRJZAkA2AQBBQdhc3NldElkBAZuZXdNYXQJALkJAgkBEXN1YnRyYWN0TWF0ZXJpYWxzAwkAZgIFB25lZWRNYXQAAAkAtQkCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeE1hdAIBXwUHbmVlZE1hdAIBXwQJcGllY2VzS2V5CQEWa2V5U3Rha2VkUGllY2VzQnlPd25lcgEFBGFkZHIEDHN0YWtlZFBpZWNlcwkBC3ZhbHVlT3JFbHNlAgkAnwgBBQlwaWVjZXNLZXkAAAkAlAoCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCAUBcgJfNQMJAGYCCQCQAwEIBQFyAl83AAAJAQtTdHJpbmdFbnRyeQIFCGxhbmRzS2V5CQC7CQIIBQFyAl83AgFfCQELRGVsZXRlRW50cnkBBQhsYW5kc0tleQkBDEludGVnZXJFbnRyeQIFCXBpZWNlc0tleQMJAGYCCAUBcgJfOAUMc3Rha2VkUGllY2VzAAAJAGUCBQxzdGFrZWRQaWVjZXMIBQFyAl84CQEMSW50ZWdlckVudHJ5AgkBEmtleU5leHRGcmVlTGFuZE51bQAJAGQCBQdmcmVlTnVtAAEFBWlzc3VlCQELU3RyaW5nRW50cnkCCQEQa2V5TGFuZFRvQXNzZXRJZAEFCm5ld0xhbmROdW0FDm5ld0xhbmRBc3NldElkCQELU3RyaW5nRW50cnkCCQEVa2V5TGFuZEFzc2V0SWRUb093bmVyAQUObmV3TGFuZEFzc2V0SWQFBGFkZHIJAQtTdHJpbmdFbnRyeQIJARFrZXlMYW5kTnVtVG9Pd25lcgEFCm5ld0xhbmROdW0FBGFkZHIJAQxJbnRlZ2VyRW50cnkCCQEga2V5TGFuZEFydFN0YXR1c0J5VHlwZUFuZEFzc2V0SWQCBQpBUlRQUkVTQUxFBQ5uZXdMYW5kQXNzZXRJZAgFAXICXzIJAQxJbnRlZ2VyRW50cnkCCQEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEFDm5ld0xhbmRBc3NldElkBQhuZXdMZXZlbAkBDEludGVnZXJFbnRyeQIJAR5rZXlJbmZyYUxldmVsQnlBc3NldElkQW5kT3duZXICBQ5uZXdMYW5kQXNzZXRJZAUEYWRkcgUIbmV3TGV2ZWwJAQtTdHJpbmdFbnRyeQIFBWJwS2V5CQC5CQIJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUKYnBJZHhMZXZlbAkAzAgCCAUBcgJfNAkAzAgCBQZuZXdNYXQJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kBQNuaWwCAToJAQtTdHJpbmdFbnRyeQIJARFrZXlSZXNQcm9wb3J0aW9ucwAJALkJAggFAXICXzYCAV8JAQtTdHJpbmdFbnRyeQIJARZrZXlSZXNUeXBlc0J5Q29udGluZW50AQUJY29udGluZW50CQC5CQIIBQFyA18xMAIBXwkBC1N0cmluZ0VudHJ5AgkBD2tleUR1Y2tMb2NhdGlvbgEFC2R1Y2tBc3NldElkCQC5CQIJAMwIAgUJY29udGluZW50CQDMCAICAUwJAMwIAgUObmV3TGFuZEFzc2V0SWQFA25pbAIBXwkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQUEYWRkcgABBQdhc3NldElkBQ5uZXdMYW5kQXNzZXRJZAEDczJtAgRhZGRyDGxhbmRBc3NldElkcwkBDW1lcmdlSW50ZXJuYWwGAgFNAAMCBFNTU1MFBGFkZHIFDGxhbmRBc3NldElkcwAAAQNtMmwCBGFkZHIMbGFuZEFzc2V0SWRzCQENbWVyZ2VJbnRlcm5hbAYCAUwABAIDU01NBQRhZGRyBQxsYW5kQXNzZXRJZHMJAGgCBRFJbmZyYVVwZ3JhZGVDb3N0UwAEAQRsMnhsAgRhZGRyDGxhbmRBc3NldElkcwkBDW1lcmdlSW50ZXJuYWwGAgJYTAAFAgVTU1NNTAUEYWRkcgUMbGFuZEFzc2V0SWRzCQBoAgURSW5mcmFVcGdyYWRlQ29zdFMALwEGeGwyeHhsAgRhZGRyDGxhbmRBc3NldElkcwkBDW1lcmdlSW50ZXJuYWwGAgNYWEwABgIDTFhMBQRhZGRyBQxsYW5kQXNzZXRJZHMJAGgCBRFJbmZyYVVwZ3JhZGVDb3N0UwA2AQttZXJnZUNvbW1vbgIEYWRkcgxsYW5kQXNzZXRJZHMEByRtYXRjaDAJAJADAQUMbGFuZEFzc2V0SWRzAwkAAAIABAUHJG1hdGNoMAkBA3MybQIFBGFkZHIFDGxhbmRBc3NldElkcwMJAAACAAMFByRtYXRjaDAJAQNtMmwCBQRhZGRyBQxsYW5kQXNzZXRJZHMDCQAAAgAFBQckbWF0Y2gwCQEEbDJ4bAIFBGFkZHIFDGxhbmRBc3NldElkcwMJAAACAAIFByRtYXRjaDAJAQZ4bDJ4eGwCBQRhZGRyBQxsYW5kQXNzZXRJZHMJAAIBAg1Vbmtub3duIG1lcmdlARVjaGVja091dGRhdGVkRGVsaXZlcnkBCHVzZXJBZGRyBARkdWNrCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFCHVzZXJBZGRyAwMFEUtTX0FMTE9XX0RFTElWRVJZCQEJaXNEZWZpbmVkAQUEZHVjawcEC2R1Y2tBc3NldElkCQEFdmFsdWUBBQRkdWNrBAZsb2NLZXkJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAQDbG9jCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAKIIAQUGbG9jS2V5BQ9ERUZBVUxUTE9DQVRJT04CAV8ECXN0YXJ0VGltZQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA2xvYwUPbG9jSWR4Q29udGluZW50AwMJAQIhPQIJAJEDAgUDbG9jBQpsb2NJZHhUeXBlAgFEBgkAZgIIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQBkAgUJc3RhcnRUaW1lBRJURU5fTUlOVVRFU19NSUxMSVMFA25pbAQJaGVhbHRoS2V5CQENa2V5RHVja0hlYWx0aAEFC2R1Y2tBc3NldElkAwkAZwIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNsb2MFCGxvY0lkeElkAAMEBnJld2FyZAkA/AcEBQ9lY29ub215Q29udHJhY3QCEnNlbmREZWxpdmVyeVJld2FyZAkAzAgCBQh1c2VyQWRkcgUDbmlsBQNuaWwDCQAAAgUGcmV3YXJkBQZyZXdhcmQFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAzQgCCQDNCAIEC2xvY2tlZFRvdGFsCQELdmFsdWVPckVsc2UCCQCaCAIFD2Vjb25vbXlDb250cmFjdAURZGVsaXZlcnlMb2NrZWRLZXkAAAQGdW5sb2NrCQD8BwQFD2Vjb25vbXlDb250cmFjdAIUdXBkYXRlRGVsaXZlcnlMb2NrZWQJAMwIAgkAZQIFC2xvY2tlZFRvdGFsBRVNSU5fVVNEVF9GRUVfREVMSVZFUlkFA25pbAUDbmlsAwkAAAIFBnVubG9jawUGdW5sb2NrAwkAZwIAAAkBEUBleHRyTmF0aXZlKDEwNTUpAQUJaGVhbHRoS2V5BQNuaWwECnB1bmlzaG1lbnQJAPwHBAUEdGhpcwILc2F2ZUludGVnZXIJAMwIAgkBFmtleURlbGl2ZXJ5RGVsYXlCeUR1Y2sBBQtkdWNrQXNzZXRJZAkAzAgCCQBkAgUJc3RhcnRUaW1lBRNERUxJVkVSWV9QVU5JU0hNRU5UBQNuaWwFA25pbAMJAAACBQpwdW5pc2htZW50BQpwdW5pc2htZW50BQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAQxJbnRlZ2VyRW50cnkCBQloZWFsdGhLZXkJARFAZXh0ck5hdGl2ZSgxMDU1KQEJAQ5rZXlTYXZlZEhlYWx0aAEFC2R1Y2tBc3NldElkCQELU3RyaW5nRW50cnkCBQZsb2NLZXkJARFAZXh0ck5hdGl2ZSgxMDU4KQEJARBrZXlTYXZlZExvY2F0aW9uAQULZHVja0Fzc2V0SWQFA25pbAEGcHJvbG9nAQFpAwMJAQIhPQIIBQFpDG9yaWdpbkNhbGxlcgUMcmVzdENvbnRyYWN0CQELdmFsdWVPckVsc2UCCQCgCAEJAQprZXlCbG9ja2VkAAcHCQACAQIfQ29udHJhY3RzIGFyZSB1bmRlciBtYWludGVuYW5jZQQIdXNlckFkZHIJAKUIAQgFAWkMb3JpZ2luQ2FsbGVyCQDNCAIJARVjaGVja091dGRhdGVkRGVsaXZlcnkBBQh1c2VyQWRkcgkBC1N0cmluZ0VudHJ5AgkBEWtleUxhc3RUeElkQnlVc2VyAQUIdXNlckFkZHIJANgEAQgFAWkNdHJhbnNhY3Rpb25JZAEMcHJvbG9nRmxpZ2h0AQFpAwMJAQIhPQIIBQFpDG9yaWdpbkNhbGxlcgUMcmVzdENvbnRyYWN0CQELdmFsdWVPckVsc2UCCQCgCAEJAQprZXlCbG9ja2VkAAcHCQACAQIfQ29udHJhY3RzIGFyZSB1bmRlciBtYWludGVuYW5jZQkAzAgCCQELU3RyaW5nRW50cnkCCQERa2V5TGFzdFR4SWRCeVVzZXIBCQClCAEIBQFpDG9yaWdpbkNhbGxlcgkA2AQBCAUBaQ10cmFuc2FjdGlvbklkBQNuaWwtAWkBDWNvbnN0cnVjdG9yVjEBCHJlc3RBZGRyAwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQIRUGVybWlzc2lvbiBkZW5pZWQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDmtleVJlc3RBZGRyZXNzAAUIcmVzdEFkZHIFA25pbAFpAQtzYXZlSW50ZWdlcgIDa2V5BmFtb3VudAMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECIHNhdmVJbnRlZ2VyIGlzIG5vdCBwdWJsaWMgbWV0aG9kCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQNrZXkFBmFtb3VudAUDbmlsAWkBCnNldEJsb2NrZWQBCWlzQmxvY2tlZAMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECEXBlcm1pc3Npb24gZGVuaWVkCQDMCAIJAQxCb29sZWFuRW50cnkCCQEKa2V5QmxvY2tlZAAFCWlzQmxvY2tlZAUDbmlsAWkBCXN0YWtlTGFuZAAEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQIcRXhhY3RseSBvbmUgcGF5bWVudCByZXF1aXJlZAQDcG10CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAEB2Fzc2V0SWQJAQV2YWx1ZQEIBQNwbXQHYXNzZXRJZAQHYWRkcmVzcwkApQgBCAUBaQZjYWxsZXIDCQECIT0CCAUDcG10BmFtb3VudAABCQACAQkArAICCQCsAgICBE5GVCAFCkxBTkRQUkVGSVgCJCB0b2tlbiBzaG91bGQgYmUgYXR0YWNoZWQgYXMgcGF5bWVudAQFYXNzZXQJAQV2YWx1ZQEJAOwHAQUHYXNzZXRJZAMJAQIhPQIIBQVhc3NldAZpc3N1ZXIFBHRoaXMJAAIBAhdVbmtub3duIGlzc3VlciBvZiB0b2tlbgMJAQEhAQkBCGNvbnRhaW5zAggFBWFzc2V0BG5hbWUFCkxBTkRQUkVGSVgJAAIBCQCsAgIJAKwCAgIJT25seSBORlQgBQpMQU5EUFJFRklYAhQgdG9rZW5zIGFyZSBhY2NlcHRlZAQLbGFuZE51bVNpemUJALACAggFBWFzc2V0BG5hbWUABAQHbGFuZE51bQMJAQhjb250YWlucwIFC2xhbmROdW1TaXplAgNYWEwJALMCAgULbGFuZE51bVNpemUAAwMJAQhjb250YWlucwIFC2xhbmROdW1TaXplAgJYTAkAswICBQtsYW5kTnVtU2l6ZQACCQCzAgIFC2xhbmROdW1TaXplAAEDCQEBIQEJAQlpc0RlZmluZWQBCQC2CQEFB2xhbmROdW0JAAIBCQCsAgICHkNhbm5vdCBwYXJzZSBsYW5kIG51bWJlciBmcm9tIAgFBWFzc2V0BG5hbWUEC2xhbmRBc3NldElkCQDYBAEFB2Fzc2V0SWQEB3RpbWVLZXkJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQULbGFuZEFzc2V0SWQDCQEJaXNEZWZpbmVkAQkAnwgBBQd0aW1lS2V5CQACAQkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAhIgaXMgYWxyZWFkeSBzdGFrZWQEAWQJALUJAggFBWFzc2V0C2Rlc2NyaXB0aW9uAgFfBA10ZXJyYWluQ291bnRzCQENY291bnRUZXJyYWlucwEJAJEDAgUBZAULcmVjVGVycmFpbnMEBnBpZWNlcwkBD251bVBpZWNlc0J5U2l6ZQEJAJEDAgUBZAULcmVjTGFuZFNpemUECWxhbmRJbmRleAkAaQIFBnBpZWNlcwUFU1NJWkUEBXByb3BzCQERdXBkYXRlUHJvcG9ydGlvbnMDBQ10ZXJyYWluQ291bnRzBQlsYW5kSW5kZXgAAQQMcmVzQnlDb250S2V5CQEWa2V5UmVzVHlwZXNCeUNvbnRpbmVudAEJAJEDAgUBZAUMcmVjQ29udGluZW50BAljb250UHJvcHMJALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBBQxyZXNCeUNvbnRLZXkCCzBfMF8wXzBfMF8wAgFfBBB1cGRhdGVkQ29udFByb3BzCQC5CQIJARl1cGRhdGVQcm9wb3J0aW9uc0ludGVybmFsBAUJY29udFByb3BzBQ10ZXJyYWluQ291bnRzBQlsYW5kSW5kZXgAAQIBXwQIbGFuZHNLZXkJARVrZXlTdGFrZWRMYW5kc0J5T3duZXIBBQdhZGRyZXNzBAhsYW5kc1N0cgkAoggBBQhsYW5kc0tleQQFbGFuZHMDCQEJaXNEZWZpbmVkAQUIbGFuZHNTdHIJAL0JAgkBBXZhbHVlAQUIbGFuZHNTdHICAV8FA25pbAMJAQ9jb250YWluc0VsZW1lbnQCBQVsYW5kcwULbGFuZEFzc2V0SWQJAAIBCQCsAgICIllvdXIgc3Rha2VkIGxhbmRzIGFscmVhZHkgY29udGFpbiAFC2xhbmRBc3NldElkAwkAZwIJAJADAQUFbGFuZHMFGE1BWF9MQU5EU19TVEFLRURfQllfVVNFUgkAAgEJAKwCAgkArAICAhlZb3VyIGFscmVhZHkgc3Rha2VkIG1heCAoCQCkAwEFGE1BWF9MQU5EU19TVEFLRURfQllfVVNFUgIHKSBsYW5kcwQKaW5mcmFMZXZlbAkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEFC2xhbmRBc3NldElkAAAECXBpZWNlc0tleQkBFmtleVN0YWtlZFBpZWNlc0J5T3duZXIBBQdhZGRyZXNzBAlvbGRQaWVjZXMJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJcGllY2VzS2V5AAAECXdsZ1Jlc3VsdAkA/AcEBQt3bGdDb250cmFjdAISb25TdGFrZVVuc3Rha2VMYW5kCQDMCAIFB2FkZHJlc3MFA25pbAUDbmlsCQCUCgIJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUHdGltZUtleQgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJASJrZXlTdGFrZWRUaW1lQnlUeXBlQXNzZXRJZEFuZE93bmVyAwUKTEFORFBSRUZJWAULbGFuZEFzc2V0SWQFB2FkZHJlc3MIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQtTdHJpbmdFbnRyeQIFCGxhbmRzS2V5CQC7CQIJAM0IAgUFbGFuZHMFC2xhbmRBc3NldElkAgFfCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlwaWVjZXNLZXkJAGQCBQlvbGRQaWVjZXMFBnBpZWNlcwkAzAgCCQELU3RyaW5nRW50cnkCCQEVa2V5TGFuZEFzc2V0SWRUb093bmVyAQULbGFuZEFzc2V0SWQFB2FkZHJlc3MJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEWtleUxhbmROdW1Ub093bmVyAQUHbGFuZE51bQUHYWRkcmVzcwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBHmtleUluZnJhTGV2ZWxCeUFzc2V0SWRBbmRPd25lcgIFC2xhbmRBc3NldElkBQdhZGRyZXNzBQppbmZyYUxldmVsCQDMCAIJAQtTdHJpbmdFbnRyeQIJARFrZXlSZXNQcm9wb3J0aW9ucwAFBXByb3BzCQDMCAIJAQtTdHJpbmdFbnRyeQIFDHJlc0J5Q29udEtleQUQdXBkYXRlZENvbnRQcm9wcwUDbmlsBQ1wcm9sb2dBY3Rpb25zBQl3bGdSZXN1bHQBaQELdW5zdGFrZUxhbmQBDWxhbmRBc3NldElkSW4EDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQEBGFkZHIJAKUIAQgFAWkGY2FsbGVyBAFjCQEUY2hlY2tDbGFpbUNvbmRpdGlvbnMDBQRhZGRyBQ1jbGFpbU1vZGVEdWNrBQ1sYW5kQXNzZXRJZEluBAtsYW5kQXNzZXRJZAgFAWMCXzIEAWQIBQFjAl8zBAhsYW5kc0tleQkBFWtleVN0YWtlZExhbmRzQnlPd25lcgEFBGFkZHIEDXRlcnJhaW5Db3VudHMJAQ1jb3VudFRlcnJhaW5zAQkAkQMCBQFkBQtyZWNUZXJyYWlucwQGcGllY2VzCQEPbnVtUGllY2VzQnlTaXplAQkAkQMCBQFkBQtyZWNMYW5kU2l6ZQQJbGFuZEluZGV4CQBpAgUGcGllY2VzBQVTU0laRQQFcHJvcHMJARF1cGRhdGVQcm9wb3J0aW9ucwMFDXRlcnJhaW5Db3VudHMFCWxhbmRJbmRleAD///////////8BBAxyZXNCeUNvbnRLZXkJARZrZXlSZXNUeXBlc0J5Q29udGluZW50AQkAkQMCBQFkBQxyZWNDb250aW5lbnQECWNvbnRQcm9wcwkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEFDHJlc0J5Q29udEtleQILMF8wXzBfMF8wXzACAV8EEHVwZGF0ZWRDb250UHJvcHMJALkJAgkBGXVwZGF0ZVByb3BvcnRpb25zSW50ZXJuYWwEBQljb250UHJvcHMFDXRlcnJhaW5Db3VudHMFCWxhbmRJbmRleAD///////////8BAgFfBAtjbGFpbVJlc3VsdAkBCGNsYWltQWxsBAUEYWRkcgULbGFuZEFzc2V0SWQFBnBpZWNlcwUNY2xhaW1Nb2RlRHVjawQFbGFuZHMJAL0JAgkBC3ZhbHVlT3JFbHNlAgkAoggBBQhsYW5kc0tleQIAAgFfBANpZHgJAM8IAgUFbGFuZHMFC2xhbmRBc3NldElkAwkBASEBCQEJaXNEZWZpbmVkAQUDaWR4CQACAQkArAICAiBZb3VyIHN0YWtlZCBsYW5kcyBkb24ndCBjb250YWluIAULbGFuZEFzc2V0SWQEA25vdwgFCWxhc3RCbG9jawl0aW1lc3RhbXAEDmdvdlJlbGVhc2VUaW1lCQELdmFsdWVPckVsc2UCCQCaCAIFC2dvdkNvbnRyYWN0CQEVa2V5VXNlckd3bFJlbGVhc2VUaW1lAQUEYWRkcgAAAwkAZwIFDmdvdlJlbGVhc2VUaW1lBQNub3cJAAIBCQCsAgICOVlvdXIgZ1dMIGFyZSB0YWtpbmcgcGFydCBpbiB2b3RpbmcsIGNhbm5vdCB1bnN0YWtlIHVudGlsIAkApAMBBQ5nb3ZSZWxlYXNlVGltZQQOYXJiUmVsZWFzZVRpbWUJAGQCCQELdmFsdWVPckVsc2UCCQCaCAIFC3dsZ0NvbnRyYWN0CQEUa2V5TGFzdEFyYlRpbWVCeVVzZXIBBQRhZGRyAAAFDmFyYml0cmFnZURlbGF5AwkAZgIFDmFyYlJlbGVhc2VUaW1lBQNub3cJAAIBCQCsAgICP1lvdXIgc3Rha2VkIGxhbmRzIHRvb2sgcGFydCBpbiBhcmJpdHJhZ2UsIGNhbm5vdCB1bnN0YWtlIHVudGlsIAkApAMBBQ5hcmJSZWxlYXNlVGltZQQJcGllY2VzS2V5CQEWa2V5U3Rha2VkUGllY2VzQnlPd25lcgEFBGFkZHIEDHN0YWtlZFBpZWNlcwkBC3ZhbHVlT3JFbHNlAgkAnwgBBQlwaWVjZXNLZXkAAAQJbmV3UGllY2VzAwkAZgIFBnBpZWNlcwUMc3Rha2VkUGllY2VzAAAJAGUCBQxzdGFrZWRQaWVjZXMFBnBpZWNlcwQJd2xnUmVzdWx0CQD8BwQFC3dsZ0NvbnRyYWN0AhJvblN0YWtlVW5zdGFrZUxhbmQJAMwIAgUEYWRkcgUDbmlsBQNuaWwJAJQKAgkAzggCCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgABCQDZBAEFC2xhbmRBc3NldElkCQDMCAIJAQtEZWxldGVFbnRyeQEJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQULbGFuZEFzc2V0SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBImtleVN0YWtlZFRpbWVCeVR5cGVBc3NldElkQW5kT3duZXIDBQpMQU5EUFJFRklYBQtsYW5kQXNzZXRJZAUEYWRkcgkAzAgCCQELU3RyaW5nRW50cnkCCQERa2V5UmVzUHJvcG9ydGlvbnMABQVwcm9wcwkAzAgCCQELU3RyaW5nRW50cnkCBQxyZXNCeUNvbnRLZXkFEHVwZGF0ZWRDb250UHJvcHMJAMwIAgkBC1N0cmluZ0VudHJ5AggFC2NsYWltUmVzdWx0Al8yCQC5CQIIBQtjbGFpbVJlc3VsdAJfMwIBOgkAzAgCAwkAZgIJAJADAQUFbGFuZHMAAQkBC1N0cmluZ0VudHJ5AgUIbGFuZHNLZXkJALsJAgkA0QgCBQVsYW5kcwkBBXZhbHVlAQUDaWR4AgFfCQELRGVsZXRlRW50cnkBBQhsYW5kc0tleQkAzAgCCQEMSW50ZWdlckVudHJ5AgUJcGllY2VzS2V5BQluZXdQaWVjZXMFA25pbAUNcHJvbG9nQWN0aW9ucwUJd2xnUmVzdWx0AWkBCXN0YWtlRHVjawAEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQIcRXhhY3RseSBvbmUgcGF5bWVudCByZXF1aXJlZAQDcG10CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAEB2Fzc2V0SWQJAQV2YWx1ZQEIBQNwbXQHYXNzZXRJZAQHYWRkcmVzcwkApQgBCAUBaQZjYWxsZXIDCQECIT0CCAUDcG10BmFtb3VudAABCQACAQkArAICCQCsAgICBE5GVCAFCkRVQ0tQUkVGSVgCJCB0b2tlbiBzaG91bGQgYmUgYXR0YWNoZWQgYXMgcGF5bWVudAQFYXNzZXQJAQV2YWx1ZQEJAOwHAQUHYXNzZXRJZAMDCQECIT0CCAUFYXNzZXQGaXNzdWVyBQ1pbmN1YmF0b3JBZGRyCQECIT0CCAUFYXNzZXQGaXNzdWVyBQticmVlZGVyQWRkcgcJAAIBCQCsAgIJAKwCAgISVW5rbm93biBpc3N1ZXIgb2YgBQpEVUNLUFJFRklYAgYgdG9rZW4DCQEBIQEJAQhjb250YWlucwIIBQVhc3NldARuYW1lBQpEVUNLUFJFRklYCQACAQkArAICCQCsAgICCU9ubHkgTkZUIAUKRFVDS1BSRUZJWAIUIHRva2VucyBhcmUgYWNjZXB0ZWQECmFzc2V0SWRTdHIJANgEAQUHYXNzZXRJZAQHdGltZUtleQkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQphc3NldElkU3RyAwkBCWlzRGVmaW5lZAEJAJ8IAQUHdGltZUtleQkAAgEJAKwCAgkArAICAgRORlQgCAUFYXNzZXQEbmFtZQISIGlzIGFscmVhZHkgc3Rha2VkAwkBCWlzRGVmaW5lZAEJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUHYWRkcmVzcwkAAgEJAKwCAgIdWW91IGFscmVhZHkgc3Rha2VkIG9uZSBkdWNrOiAIBQVhc3NldARuYW1lBAZsb2NLZXkJAQ9rZXlEdWNrTG9jYXRpb24BBQphc3NldElkU3RyBAhsb2NhdGlvbgkAoggBBQZsb2NLZXkEBWJwS2V5CQERa2V5QmFja3BhY2tCeUR1Y2sBBQphc3NldElkU3RyBAhiYWNrcGFjawkAoggBBQVicEtleQQJa2V5SGVhbHRoCQENa2V5RHVja0hlYWx0aAEFCmFzc2V0SWRTdHIEBW1heEhQCQEJbWF4SGVhbHRoAQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEMa2V5RHVja0xldmVsAQUKYXNzZXRJZFN0cgAABAljdXJIZWFsdGgJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJa2V5SGVhbHRoBQVtYXhIUAkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQd0aW1lS2V5CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBImtleVN0YWtlZFRpbWVCeVR5cGVBc3NldElkQW5kT3duZXIDBQpEVUNLUFJFRklYCQDYBAEFB2Fzc2V0SWQFB2FkZHJlc3MIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQtTdHJpbmdFbnRyeQIJARBrZXlEdWNrSWRUb093bmVyAQUKYXNzZXRJZFN0cgUHYWRkcmVzcwkAzAgCCQELU3RyaW5nRW50cnkCCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQdhZGRyZXNzBQphc3NldElkU3RyBQNuaWwDCQEJaXNEZWZpbmVkAQUIbG9jYXRpb24FA25pbAkAzggCCQDMCAIJAQtTdHJpbmdFbnRyeQIFBmxvY0tleQUPREVGQVVMVExPQ0FUSU9OBQNuaWwDCQEJaXNEZWZpbmVkAQUIYmFja3BhY2sFA25pbAkAzggCCQDNCAIJAMwIAgkBC1N0cmluZ0VudHJ5AgUFYnBLZXkCGjA6MF8wXzBfMF8wXzA6MF8wXzBfMF8wXzA6BQNuaWwJAQxJbnRlZ2VyRW50cnkCBQlrZXlIZWFsdGgFCWN1ckhlYWx0aAUNcHJvbG9nQWN0aW9ucwFpAQt1bnN0YWtlRHVjawEKYXNzZXRJZFN0cgQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQHYXNzZXRJZAkA2QQBBQphc3NldElkU3RyBAdhZGRyZXNzCQClCAEIBQFpBmNhbGxlcgQFYXNzZXQJAQV2YWx1ZQEJAOwHAQUHYXNzZXRJZAQHdGltZUtleQkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQphc3NldElkU3RyAwkBASEBCQEJaXNEZWZpbmVkAQkAnwgBBQd0aW1lS2V5CQACAQkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAg4gaXMgbm90IHN0YWtlZAMJAQEhAQkBCWlzRGVmaW5lZAEJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUHYWRkcmVzcwkAAgEJAKwCAgkArAICAglUaGUgZHVjayAIBQVhc3NldARuYW1lAg4gaXMgbm90IHN0YWtlZAQFb3duZXIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEQa2V5RHVja0lkVG9Pd25lcgEFCmFzc2V0SWRTdHIJAKwCAgkArAICAgRORlQgCAUFYXNzZXQEbmFtZQIMIGlzIG9ycGhhbmVkAwkBAiE9AgUFb3duZXIFB2FkZHJlc3MJAAIBAhdTdGFrZWQgTkZUIGlzIG5vdCB5b3VycwMJAQ9jaGVja1RvdXJuYW1lbnQBBQphc3NldElkU3RyCQACAQIbdW5zdGFrZUR1Y2tfY2hlY2tUb3VybmFtZW50AwkBDWNoZWNrRGVsaXZlcnkBBQphc3NldElkU3RyCQACAQIZdW5zdGFrZUR1Y2tfY2hlY2tEZWxpdmVyeQQJa2V5SGVhbHRoCQENa2V5RHVja0hlYWx0aAEFCmFzc2V0SWRTdHIEBW1heEhQCQEJbWF4SGVhbHRoAQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEMa2V5RHVja0xldmVsAQUKYXNzZXRJZFN0cgAABAZoZWFsdGgJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJa2V5SGVhbHRoBQVtYXhIUAMJAGYCBQVtYXhIUAUGaGVhbHRoCQACAQkArAICCQCsAgICGVBsZWFzZSBoZWFsIHlvdXIgZHVjayB0byAJAKQDAQUFbWF4SFACE2hwIGJlZm9yZSB1bnN0YWtpbmcJAM4IAgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIAAQUHYXNzZXRJZAkAzAgCCQELRGVsZXRlRW50cnkBBQd0aW1lS2V5CQDMCAIJAQtEZWxldGVFbnRyeQEFCWtleUhlYWx0aAkAzAgCCQELRGVsZXRlRW50cnkBCQEPa2V5RHVja0xvY2F0aW9uAQUKYXNzZXRJZFN0cgkAzAgCCQELRGVsZXRlRW50cnkBCQEQa2V5RHVja0lkVG9Pd25lcgEFCmFzc2V0SWRTdHIJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBImtleVN0YWtlZFRpbWVCeVR5cGVBc3NldElkQW5kT3duZXIDBQpEVUNLUFJFRklYBQphc3NldElkU3RyBQdhZGRyZXNzCQDMCAIJAQtEZWxldGVFbnRyeQEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFB2FkZHJlc3MFA25pbAUNcHJvbG9nQWN0aW9ucwFpAQhjbGFpbVJlcwIGYW1vdW50DmxhbmRBc3NldElkU3RyBA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBARhZGRyCQClCAEIBQFpDG9yaWdpbkNhbGxlcgQGcmVzdWx0CQEQY2xhaW1SZXNJbnRlcm5hbAQFBGFkZHIFBmFtb3VudAUNY2xhaW1Nb2RlRHVjawUObGFuZEFzc2V0SWRTdHIEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUEYWRkcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAkAlAoCCQDOCAIJAM0IAgkAzQgCCQDOCAIIBQZyZXN1bHQCXzEICQEXdXBkYXRlRHVja1N0YXRzSW50ZXJuYWwCBQtkdWNrQXNzZXRJZAkAawMFB3hwQ2xhaW0FBmFtb3VudAUFTVVMVDgCXzEJAQtTdHJpbmdFbnRyeQIIBQZyZXN1bHQCXzIJALkJAggFBnJlc3VsdAJfMwIBOgkBC1N0cmluZ0VudHJ5AggFBnJlc3VsdAJfNAkAuQkCCAUGcmVzdWx0Al81AgE6BQ1wcm9sb2dBY3Rpb25zCQCRAwIIBQZyZXN1bHQCXzMFCGJwSWR4UmVzAWkBDGNsYWltUmVzVG9XSAIGYW1vdW50DmxhbmRBc3NldElkU3RyBA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBARhZGRyCQClCAEIBQFpDG9yaWdpbkNhbGxlcgQGcmVzdWx0CQEQY2xhaW1SZXNJbnRlcm5hbAQFBGFkZHIFBmFtb3VudAULY2xhaW1Nb2RlV2gFDmxhbmRBc3NldElkU3RyCQCUCgIJAM4IAgkAzQgCCQDNCAIJAM4IAggFBnJlc3VsdAJfMQgJARZ1cGRhdGVBY2NTdGF0c0ludGVybmFsAgUEYWRkcgkAawMFB3hwQ2xhaW0FBmFtb3VudAUFTVVMVDgCXzEJAQtTdHJpbmdFbnRyeQIIBQZyZXN1bHQCXzIJALkJAggFBnJlc3VsdAJfMwIBOgkBC1N0cmluZ0VudHJ5AggFBnJlc3VsdAJfNAkAuQkCCAUGcmVzdWx0Al81AgE6BQ1wcm9sb2dBY3Rpb25zCQCRAwIIBQZyZXN1bHQCXzUFCHdoSWR4UmVzAWkBBmZsaWdodAIHbWVzc2FnZQNzaWcEDXByb2xvZ0FjdGlvbnMJAQxwcm9sb2dGbGlnaHQBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQECHVzZXJBZGRyCQClCAEIBQFpBmNhbGxlcgQBZgkBDGZsaWdodENvbW1vbgMFCHVzZXJBZGRyBQdtZXNzYWdlBQNzaWcEBW5ld0hQCAUBZgJfMQQLZHVja0Fzc2V0SWQIBQFmAl8yBAZsb2NLZXkJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAQLY3VyTG9jYXRpb24JAQt2YWx1ZU9yRWxzZQIJAKIIAQUGbG9jS2V5BQ9ERUZBVUxUTE9DQVRJT04EC25ld0xvY2F0aW9uCAUBZgJfNAMJAAACBQtuZXdMb2NhdGlvbgULY3VyTG9jYXRpb24JAAIBAiJZb3UgY2FuJ3QgZmx5IHRvIHRoZSBzYW1lIGxvY2F0aW9uBAZuZXdMb2MJALUJAgULbmV3TG9jYXRpb24CAV8EBmlzVG91cgkAAAIJAJEDAgUGbmV3TG9jBQpsb2NJZHhUeXBlAgFUBAdpc0RlbGl2CQAAAgkAkQMCBQZuZXdMb2MFCmxvY0lkeFR5cGUCAUQEBWVxS2V5CQEQa2V5RHVja0VxdWlwbWVudAEFC2R1Y2tBc3NldElkBAljdXJyZW50RXEJAQt2YWx1ZU9yRWxzZQIJAKIIAQUFZXFLZXkCFyw7LF8sOyxfLDssXyw7LF8sOyxfLDssBA0kdDA3MDMxMzcwNDEwCQERc3VidHJhY3RFcXVpcG1lbnQCBQljdXJyZW50RXEIBQFmAl81BAVuZXdFcQgFDSR0MDcwMzEzNzA0MTACXzEED3Nob3VsZFplcm9CdWZmcwgFDSR0MDcwMzEzNzA0MTACXzIEDSR0MDcwNDEzNzM0NzgDCQEBIQEJAQlvbk1pc3Npb24CBRJ0b3VybmFtZW50Q29udHJhY3QFC2N1ckxvY2F0aW9uAwkBASEBCQEPaXNVc3VhbExvY2F0aW9uAQULbmV3TG9jYXRpb24JAQxjaGVhdEF0dGVtcHQDBQtjdXJMb2NhdGlvbgULbmV3TG9jYXRpb24ABQMJAGYCBQVuZXdIUAAACQCUCgIFC25ld0xvY2F0aW9uBQVuZXdIUAkAlAoCBQtjdXJMb2NhdGlvbgAAAwkBDmlzSW5Ub3VybmFtZW50AgUSdG91cm5hbWVudENvbnRyYWN0BQtjdXJMb2NhdGlvbgMJAQEhAQkBDmlzSW5Ub3VybmFtZW50AgUSdG91cm5hbWVudENvbnRyYWN0BQtuZXdMb2NhdGlvbgkAAgECKllvdXIgZHVjayBpcyB0YWtpbmcgcGFydCBpbiB0aGUgdG91cm5hbWVudAQFc2NvcmUJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQZuZXdMb2MFCGxvY0lkeElkBAZjdXJMb2MJALUJAgULY3VyTG9jYXRpb24CAV8EBmxhc3RJZAkBC3ZhbHVlT3JFbHNlAgkAmggCBRJ0b3VybmFtZW50Q29udHJhY3QFDWxhc3RUb3VySWRLZXkAAAMJAQIhPQIFBXNjb3JlCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBmN1ckxvYwUIbG9jSWR4SWQAAQkBDGNoZWF0QXR0ZW1wdAMFC2N1ckxvY2F0aW9uBQtuZXdMb2NhdGlvbgAHAwkAZgIFBW5ld0hQAAAECWxvY2FsQmVzdAkBC3ZhbHVlT3JFbHNlAgkAmggCBRJ0b3VybmFtZW50Q29udHJhY3QJARprZXlCZXN0UmVzdWx0QnlUb3VyQW5kRHVjawIFBmxhc3RJZAULZHVja0Fzc2V0SWQAAAQIdXBkTG9jYWwDCQBmAgUFc2NvcmUFCWxvY2FsQmVzdAkA/AcEBRJ0b3VybmFtZW50Q29udHJhY3QCDnNhdmVEdWNrUmVzdWx0CQDMCAIFC2R1Y2tBc3NldElkCQDMCAIFBXNjb3JlBQNuaWwFA25pbAUEdW5pdAMJAAACBQh1cGRMb2NhbAUIdXBkTG9jYWwJAJQKAgULbmV3TG9jYXRpb24FBW5ld0hQCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQCUCgIFC2N1ckxvY2F0aW9uAAADCQEBIQEJAQxpc0luRGVsaXZlcnkBBQtjdXJMb2NhdGlvbgQJbG9jSGVhbHRoCQEQYXNTdHJpbmdJbnRUdXBsZQEJAPwHBAUEdGhpcwIQYXV0b0V4aXREZWxpdmVyeQkAzAgCBQtkdWNrQXNzZXRJZAkAzAgCBQVuZXdIUAUDbmlsBQNuaWwDCQAAAgUJbG9jSGVhbHRoBQlsb2NIZWFsdGgDBQdpc0RlbGl2BQlsb2NIZWFsdGgDCQBmAgUFbmV3SFAAAAkAlAoCBQtuZXdMb2NhdGlvbgUFbmV3SFAJAJQKAggFCWxvY0hlYWx0aAJfMQAACQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAwkBASEBBQdpc0RlbGl2CQACAQIkWW91ciBkdWNrIGlzIHRha2luZyBwYXJ0IGluIGRlbGl2ZXJ5AwkBASEBCQEMaXNJbkRlbGl2ZXJ5AQULbmV3TG9jYXRpb24JAQxjaGVhdEF0dGVtcHQDBQtjdXJMb2NhdGlvbgULbmV3TG9jYXRpb24ADQQFc2NvcmUJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQZuZXdMb2MFCGxvY0lkeElkBAZjdXJMb2MJALUJAgULY3VyTG9jYXRpb24CAV8DCQECIT0CBQVzY29yZQkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQZjdXJMb2MFCGxvY0lkeElkAAEJAQxjaGVhdEF0dGVtcHQDBQtjdXJMb2NhdGlvbgULbmV3TG9jYXRpb24ADgMDCQBmAgUFbmV3SFAAAAkAZgIAAwUFc2NvcmUHCQCUCgIFC25ld0xvY2F0aW9uBQVuZXdIUAQJbG9jSGVhbHRoCQEQYXNTdHJpbmdJbnRUdXBsZQEJAPwHBAUEdGhpcwIQYXV0b0V4aXREZWxpdmVyeQkAzAgCBQtkdWNrQXNzZXRJZAkAzAgCBQVuZXdIUAUDbmlsBQNuaWwDCQAAAgUJbG9jSGVhbHRoBQlsb2NIZWFsdGgFCWxvY0hlYWx0aAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgQJbG9jVG9TYXZlCAUNJHQwNzA0MTM3MzQ3OAJfMQQIaHBUb1NhdmUIBQ0kdDA3MDQxMzczNDc4Al8yCQCUCgIJAM4IAgkAzggCCQDOCAIJAMwIAgkBC1N0cmluZ0VudHJ5AgUGbG9jS2V5BQlsb2NUb1NhdmUJAMwIAgkBC1N0cmluZ0VudHJ5AgUFZXFLZXkFBW5ld0VxCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQENa2V5RHVja0hlYWx0aAEFC2R1Y2tBc3NldElkBQVuZXdIUAUDbmlsBQ1wcm9sb2dBY3Rpb25zAwUPc2hvdWxkWmVyb0J1ZmZzCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQxrZXlEdWNrQnVmZnMBBQtkdWNrQXNzZXRJZAIJMF8wXzBfMF8wBQNuaWwFA25pbAgJARd1cGRhdGVEdWNrU3RhdHNJbnRlcm5hbAIFC2R1Y2tBc3NldElkAwkAZgIFBW5ld0hQAAAFD3hwU3VjY2Vzc0ZsaWdodAUMeHBGYWlsRmxpZ2h0Al8xCAUBZgJfMwFpAQRoZWFsAwpxdWFudGl0eUwxCnF1YW50aXR5TDIKcXVhbnRpdHlMMwQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDAwMJAGYCAAAFCnF1YW50aXR5TDEGCQBmAgAABQpxdWFudGl0eUwyBgkAZgIAAAUKcXVhbnRpdHlMMwkAAgECG1F1YW50aXR5IGNhbm5vdCBiZSBuZWdhdGl2ZQQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBCQClCAEIBQFpBmNhbGxlcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAMJAQ9jaGVja1RvdXJuYW1lbnQBBQtkdWNrQXNzZXRJZAkAAgECFGhlYWxfY2hlY2tUb3VybmFtZW50AwkBDWNoZWNrRGVsaXZlcnkBBQtkdWNrQXNzZXRJZAkAAgECEmhlYWxfY2hlY2tEZWxpdmVyeQQDcXRzCQDMCAIFCnF1YW50aXR5TDEJAMwIAgUKcXVhbnRpdHlMMgkAzAgCBQpxdWFudGl0eUwzBQNuaWwECWtleUhlYWx0aAkBDWtleUR1Y2tIZWFsdGgBBQtkdWNrQXNzZXRJZAQFbWF4SFAJAQltYXhIZWFsdGgBCQELdmFsdWVPckVsc2UCCQCfCAEJAQxrZXlEdWNrTGV2ZWwBBQtkdWNrQXNzZXRJZAAABAlvbGRIZWFsdGgJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJa2V5SGVhbHRoBQVtYXhIUAMJAGcCBQlvbGRIZWFsdGgFBW1heEhQCQACAQkArAICCQCsAgICD0hQIHNob3VsZCBiZSA8IAkApAMBBQVtYXhIUAIIIHRvIGhlYWwEBWJwS2V5CQERa2V5QmFja3BhY2tCeUR1Y2sBBQtkdWNrQXNzZXRJZAQLY3VycmVudFBhY2sJAQtnZXRCYWNrcGFjawEFBWJwS2V5BAhwcm9kTGlzdAMJAAACCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QCAAUDbmlsCQC8CQIJAJEDAgULY3VycmVudFBhY2sFCWJwSWR4UHJvZAIBXwoBC2l0ZXJhdGVQcm9kAgNhY2MGcmVjaXBlBAFuCAUDYWNjAl8yBAF4AwkAZgIJAJADAQUIcHJvZExpc3QFAW4JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQhwcm9kTGlzdAUBbgAAAwkAZgIAAwUBbgQBcQkAkQMCBQNxdHMFAW4DCQBmAgUBcQUBeAkAAgEJAKwCAgkArAICCQCsAgICDllvdSBoYXZlIG9ubHkgCQCkAwEFAXgCBCBvZiAJAJEDAgUJcHJvZFR5cGVzBQFuCQCVCgMJAM0IAggFA2FjYwJfMQkApAMBCQBlAgUBeAUBcQkAZAIFAW4AAQkAZAIIBQNhY2MCXzMJAGgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgkAtQkCBQZyZWNpcGUCAV8FCnJJZHhFZmZlY3QFAXEJAJUKAwkAzQgCCAUDYWNjAl8xCQCkAwEFAXgJAGQCBQFuAAEIBQNhY2MCXzMEBnJlc3VsdAoAAiRsBRBwcm9kdWN0aW9uTWF0cml4CgACJHMJAJADAQUCJGwKAAUkYWNjMAkAlQoDBQNuaWwAAAAACgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQtpdGVyYXRlUHJvZAIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgNTAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyBAluZXdIZWFsdGgJAJcDAQkAzAgCBQVtYXhIUAkAzAgCCQBkAgUJb2xkSGVhbHRoCAUGcmVzdWx0Al8zBQNuaWwJAJQKAgkAzggCCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIFCWtleUhlYWx0aAUJbmV3SGVhbHRoCQDMCAIJAQtTdHJpbmdFbnRyeQIFBWJwS2V5CQC6CQIJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUKYnBJZHhMZXZlbAkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeFJlcwkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeE1hdAkAzAgCCQC5CQIIBQZyZXN1bHQCXzECAV8FA25pbAIBOgUDbmlsBQ1wcm9sb2dBY3Rpb25zCAkBF3VwZGF0ZUR1Y2tTdGF0c0ludGVybmFsAgULZHVja0Fzc2V0SWQJAGgCBQZ4cEhlYWwJAGQCCQBkAgUKcXVhbnRpdHlMMQUKcXVhbnRpdHlMMgUKcXVhbnRpdHlMMwJfMQUJbmV3SGVhbHRoAWkBBmhlYWxFUwAEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQIcRXhhY3RseSBvbmUgcGF5bWVudCByZXF1aXJlZAQDcG10CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAADCQECIT0CCAUDcG10B2Fzc2V0SWQFC3VzZHRBc3NldElkCQACAQIaQWxsb3dlZCBVU0RUIHBheW1lbnQgb25seSEEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQkApQgBCAUBaQZjYWxsZXICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQDCQEPY2hlY2tUb3VybmFtZW50AQULZHVja0Fzc2V0SWQJAAIBAhZoZWFsRVNfY2hlY2tUb3VybmFtZW50AwkBDWNoZWNrRGVsaXZlcnkBBQtkdWNrQXNzZXRJZAkAAgECFGhlYWxFU19jaGVja0RlbGl2ZXJ5BAlrZXlIZWFsdGgJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQEBW1heEhQCQEJbWF4SGVhbHRoAQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEMa2V5RHVja0xldmVsAQULZHVja0Fzc2V0SWQAAAQJb2xkSGVhbHRoCQELdmFsdWVPckVsc2UCCQCfCAEFCWtleUhlYWx0aAUFbWF4SFADCQBmAgUJb2xkSGVhbHRoAAAJAAIBAihIUCBzaG91bGQgYmUgMCB0byBjYWxsIEVtZXJnZW5jeSBTZXJ2aWNlBAVicEtleQkBEWtleUJhY2twYWNrQnlEdWNrAQULZHVja0Fzc2V0SWQEC2N1cnJlbnRQYWNrCQELZ2V0QmFja3BhY2sBBQVicEtleQQIcHJvZExpc3QDCQAAAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kAgAFA25pbAkAvAkCCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QCAV8EDW1lZEtpdEFtb3VudDEDCQBmAgkAkAMBBQhwcm9kTGlzdAAACQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUIcHJvZExpc3QAAAAABA1tZWRLaXRBbW91bnQyAwkAZgIJAJADAQUIcHJvZExpc3QAAQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCHByb2RMaXN0AAEAAAQNbWVkS2l0QW1vdW50MwMJAGYCCQCQAwEFCHByb2RMaXN0AAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQhwcm9kTGlzdAACAAADAwMJAGYCBQ1tZWRLaXRBbW91bnQxAAAGCQBmAgUNbWVkS2l0QW1vdW50MgAABgkAZgIFDW1lZEtpdEFtb3VudDMAAAkAAgECH1lvdSBoYXZlIHRvIHVzZSBvd24gTWVkaWNhbCBLaXQECGV4aXN0U3RyCQCdCAIFD2Vjb25vbXlDb250cmFjdAkBDmtleUVzV2FyZWhvdXNlAAQMZXhpc3RBbW91bnRzAwkBCWlzRGVmaW5lZAEFCGV4aXN0U3RyCQC8CQIJAQV2YWx1ZQEFCGV4aXN0U3RyAgFfBQNuaWwEC2V4aXN0QW1vdW50AwkAZgIJAJADAQUMZXhpc3RBbW91bnRzAAAJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQxleGlzdEFtb3VudHMAAAAAAwkAZwIAAAULZXhpc3RBbW91bnQJAAIBAjlUaGVyZSBhcmUgbm8gTWVkaWNhbCBLaXRzIEwxIGF0IEVtZXJnZW5jeSBTZXJ2aWNlIHN0b3JhZ2UECW5ld0hlYWx0aAkAZAIFCW9sZEhlYWx0aAkBDXBhcnNlSW50VmFsdWUBCQCRAwIJALUJAgkAkQMCBRBwcm9kdWN0aW9uTWF0cml4AAACAV8FCnJJZHhFZmZlY3QEBW5ld0VTCQC5CQIJAMwIAgkApAMBCQBlAgULZXhpc3RBbW91bnQAAQkA0QgCBQxleGlzdEFtb3VudHMAAAIBXwQGcmVjaXBlCQC1CQIJAJEDAgUQcHJvZHVjdGlvbk1hdHJpeAAAAgFfBAh0b3RhbE1hdAkBEmdldFJlY2lwZU1hdGVyaWFscwEFBnJlY2lwZQQJc2VsbFByaWNlCQBrAwkAaAIFCHRvdGFsTWF0BQpFU1NFTExDT0VGBRBSRVNPVVJDRVBSSUNFTUlOCQBoAgUFTVVMVDgFDlBST0RVQ1RQS0dTSVpFAwkBAiE9AggFA3BtdAZhbW91bnQFCXNlbGxQcmljZQkAAgEJAKwCAgIbUGF5bWVudCBhdHRhY2hlZCBzaG91bGQgYmUgCQCkAwEFCXNlbGxQcmljZQQGcmVzdWx0CQEIYXNTdHJpbmcBCQD8BwQFD2Vjb25vbXlDb250cmFjdAIPdXBkYXRlRXNTdG9yYWdlCQDMCAIFBW5ld0VTBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFC3VzZHRBc3NldElkBQlzZWxsUHJpY2UFA25pbAkAlAoCCQDOCAIJAM0IAgUNcHJvbG9nQWN0aW9ucwkBDEludGVnZXJFbnRyeQIFCWtleUhlYWx0aAUJbmV3SGVhbHRoCAkBF3VwZGF0ZUR1Y2tTdGF0c0ludGVybmFsAgULZHVja0Fzc2V0SWQFCHhwQ2FsbEVTAl8xBQZyZXN1bHQBaQEOdXBkYXRlQmFja3BhY2sCC2R1Y2tBc3NldElkB25ld1BhY2sDCQECIT0CCAUBaQZjYWxsZXIFD2Vjb25vbXlDb250cmFjdAkAAgECEXBlcm1pc3Npb24gZGVuaWVkCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEWtleUJhY2twYWNrQnlEdWNrAQULZHVja0Fzc2V0SWQFB25ld1BhY2sFA25pbAUHbmV3UGFjawFpAQ9jb21taXRGb3JSYW5kb20ABA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQQLZmluaXNoQmxvY2sJAGQCBQZoZWlnaHQFC3JhbmRvbURlbGF5BARhZGRyCQClCAEIBQFpBmNhbGxlcgkAlAoCCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIJAQlrZXlDb21taXQBBQRhZGRyBQtmaW5pc2hCbG9jawUDbmlsBQ1wcm9sb2dBY3Rpb25zBQtmaW5pc2hCbG9jawFpAQhidXlTTGFuZAAEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQIcRXhhY3RseSBvbmUgcGF5bWVudCByZXF1aXJlZAQDcG10CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAADCQECIT0CCAUDcG10B2Fzc2V0SWQFC3VzZHRBc3NldElkCQACAQIaQWxsb3dlZCBVU0RUIHBheW1lbnQgb25seSEDCQECIT0CCAUDcG10BmFtb3VudAUHRVhQVVNEVAkAAgEJAKwCAgIbUGF5bWVudCBhdHRhY2hlZCBzaG91bGQgYmUgCQCkAwEFB0VYUFVTRFQEBnJlc3VsdAkBEmV4cGVkaXRpb25JbnRlcm5hbAIIBQFpBmNhbGxlcggFAWkNdHJhbnNhY3Rpb25JZAQLYWNyZXNSZXN1bHQJAQVhc0ludAEJAPwHBAUNYWNyZXNDb250cmFjdAIJYnVybkFjcmVzCQDMCAIFDFNfQ09TVF9BQ1JFUwUDbmlsBQNuaWwJAJQKAgkAzggCCQDOCAIJAM0IAggFBnJlc3VsdAJfMQkBDlNjcmlwdFRyYW5zZmVyAwUPZWNvbm9teUNvbnRyYWN0CAUDcG10BmFtb3VudAULdXNkdEFzc2V0SWQICQEWdXBkYXRlQWNjU3RhdHNJbnRlcm5hbAIJAKUIAQgFAWkGY2FsbGVyBQp4cE5ld1NMYW5kAl8xBQ1wcm9sb2dBY3Rpb25zCQCUCgIICAUGcmVzdWx0Al8yAl8xBQthY3Jlc1Jlc3VsdAFpAQpleHBlZGl0aW9uAgdtZXNzYWdlA3NpZwQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQIdXNlckFkZHIJAKUIAQgFAWkGY2FsbGVyBAFmCQEMZmxpZ2h0Q29tbW9uAwUIdXNlckFkZHIFB21lc3NhZ2UFA3NpZwQLZHVja0Fzc2V0SWQIBQFmAl8yBAlrZXlIZWFsdGgJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQEBWJwS2V5CQERa2V5QmFja3BhY2tCeUR1Y2sBBQtkdWNrQXNzZXRJZAQLY3VycmVudFBhY2sJAQtnZXRCYWNrcGFjawEFBWJwS2V5BAVtTGlzdAkAtQkCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeE1hdAIBXwQGbmV3TWF0CQC5CQIJARFzdWJ0cmFjdE1hdGVyaWFscwMGBQVtTGlzdAUMRVhQTUFURVJJQUxTAgFfBAVlcUtleQkBEGtleUR1Y2tFcXVpcG1lbnQBBQtkdWNrQXNzZXRJZAQJY3VycmVudEVxCQELdmFsdWVPckVsc2UCCQCiCAEFBWVxS2V5AhcsOyxfLDssXyw7LF8sOyxfLDssXyw7LAQNJHQwODA5MTU4MTAxMgkBEXN1YnRyYWN0RXF1aXBtZW50AgUJY3VycmVudEVxCAUBZgJfNQQFbmV3RXEIBQ0kdDA4MDkxNTgxMDEyAl8xBA9zaG91bGRaZXJvQnVmZnMIBQ0kdDA4MDkxNTgxMDEyAl8yBAFlCQESZXhwZWRpdGlvbkludGVybmFsAggFAWkGY2FsbGVyCAUBaQ10cmFuc2FjdGlvbklkBAJpZAgIBQFlAl8yAl8xBAZyZXN1bHQDCQBnAgAACAUBZgJfMQkAlQoDCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlrZXlIZWFsdGgAAAkAzAgCCQELU3RyaW5nRW50cnkCBQVlcUtleQUFbmV3RXEFA25pbAIAAAAJAJUKAwkAzggCCAUBZQJfMQMFD3Nob3VsZFplcm9CdWZmcwkAzAgCCQELU3RyaW5nRW50cnkCCQEMa2V5RHVja0J1ZmZzAQULZHVja0Fzc2V0SWQCCTBfMF8wXzBfMAUDbmlsCQDNCAIJAM0IAgkAzQgCCQDNCAIFA25pbAkBC1N0cmluZ0VudHJ5AgkBD2tleUR1Y2tMb2NhdGlvbgEFC2R1Y2tBc3NldElkCQC5CQIJAMwIAggIBQFlAl8yAl8yCQDMCAICAUwJAMwIAgUCaWQFA25pbAIBXwkBDEludGVnZXJFbnRyeQIFCWtleUhlYWx0aAgFAWYCXzEJAQtTdHJpbmdFbnRyeQIFBWVxS2V5BQVuZXdFcQkBC1N0cmluZ0VudHJ5AgUFYnBLZXkJALkJAgkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQpicElkeExldmVsCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4UmVzCQDMCAIFBm5ld01hdAkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QFA25pbAIBOgUCaWQIBQFmAl8zAwkBD2NoZWNrVG91cm5hbWVudAEFC2R1Y2tBc3NldElkCQACAQIaZXhwZWRpdGlvbl9jaGVja1RvdXJuYW1lbnQDCQENY2hlY2tEZWxpdmVyeQEFC2R1Y2tBc3NldElkCQACAQIYZXhwZWRpdGlvbl9jaGVja0RlbGl2ZXJ5BAthY3Jlc1Jlc3VsdAkBBWFzSW50AQkA/AcEBQ1hY3Jlc0NvbnRyYWN0AglidXJuQWNyZXMJAMwIAgUMU19DT1NUX0FDUkVTBQNuaWwFA25pbAkAlAoCCQDOCAIJAM4IAggFBnJlc3VsdAJfMQgJARd1cGRhdGVEdWNrU3RhdHNJbnRlcm5hbAIFC2R1Y2tBc3NldElkBQp4cE5ld1NMYW5kAl8xBQ1wcm9sb2dBY3Rpb25zCQCVCgMIBQZyZXN1bHQCXzIIBQZyZXN1bHQCXzMFC2FjcmVzUmVzdWx0AWkBEGJ1eVNMYW5kRm9yQWNyZXMABA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECImV4YWN0bHkgMSBwYXltZW50IG11c3QgYmUgYXR0YWNoZWQEA3BtdAkAkQMCCAUBaQhwYXltZW50cwAABANhbXQIBQNwbXQGYW1vdW50AwMJAQEhAQkBCWlzRGVmaW5lZAEIBQNwbXQHYXNzZXRJZAYJAQIhPQIJAQV2YWx1ZQEIBQNwbXQHYXNzZXRJZAUMYWNyZXNBc3NldElkCQACAQIUQUNSRVMgcGF5bWVudHMgb25seSEDCQECIT0CBQNhbXQFDFNfQ09TVF9BQ1JFUwkAAgEJAKwCAgIbUGF5bWVudCBhdHRhY2hlZCBzaG91bGQgYmUgCQCkAwEFDFNfQ09TVF9BQ1JFUwQGcmVzdWx0CQESZXhwZWRpdGlvbkludGVybmFsAggFAWkGY2FsbGVyCAUBaQ10cmFuc2FjdGlvbklkBAthY3Jlc1Jlc3VsdAkBBWFzSW50AQkA/AcEBQ1hY3Jlc0NvbnRyYWN0AglidXJuQWNyZXMJAMwIAgUMU19DT1NUX0FDUkVTBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFDGFjcmVzQXNzZXRJZAUDYW10BQNuaWwJAJQKAgkAzggCCQDOCAIIBQZyZXN1bHQCXzEICQEWdXBkYXRlQWNjU3RhdHNJbnRlcm5hbAIJAKUIAQgFAWkGY2FsbGVyBQp4cE5ld1NMYW5kAl8xBQ1wcm9sb2dBY3Rpb25zCQCUCgIICAUGcmVzdWx0Al8yAl8xBQthY3Jlc1Jlc3VsdAFpAQx1cGdyYWRlSW5mcmEBC2xhbmRBc3NldElkBA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBAZyZXN1bHQJAQ11cEluZnJhQ29tbW9uBAYIBQFpBmNhbGxlcgAABQtsYW5kQXNzZXRJZAQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBCQClCAEIBQFpBmNhbGxlcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAkAlAoCCQDOCAIJAM4IAggFBnJlc3VsdAJfMQUNcHJvbG9nQWN0aW9ucwgJARd1cGRhdGVEdWNrU3RhdHNJbnRlcm5hbAIFC2R1Y2tBc3NldElkCQBrAwUOeHBVcGdyYWRlSW5mcmEIBQZyZXN1bHQCXzMFBU1VTFQ4Al8xCAUGcmVzdWx0Al8yAWkBEGFjdGl2YXRlQXJ0aWZhY3QCB2FydE5hbWUObGFuZEFzc2V0SWRPcHQEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQEBGFkZHIJAKUIAQgFAWkGY2FsbGVyBAZyZXN1bHQEByRtYXRjaDAFB2FydE5hbWUDCQAAAgIHUFJFU0FMRQUHJG1hdGNoMAkBEmFjdGl2YXRlUHJlc2FsZUFydAIFBGFkZHIFDmxhbmRBc3NldElkT3B0AwkAAAICB09OQk9BUkQFByRtYXRjaDAJARJhY3RpdmF0ZU9uYm9hcmRBcnQBBQRhZGRyCQACAQIQVW5rbm93biBhcnRpZmFjdAkAzggCBQZyZXN1bHQFDXByb2xvZ0FjdGlvbnMBaQEKbWVyZ2VMYW5kcwEMbGFuZEFzc2V0SWRzBA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBAZyZXN1bHQJAQttZXJnZUNvbW1vbgIJAKUIAQgFAWkGY2FsbGVyBQxsYW5kQXNzZXRJZHMJAJQKAgkAzggCCQDOCAIIBQZyZXN1bHQCXzEFDXByb2xvZ0FjdGlvbnMICQEWdXBkYXRlQWNjU3RhdHNJbnRlcm5hbAIJAKUIAQgFAWkGY2FsbGVyBQd4cE1lcmdlAl8xCAUGcmVzdWx0Al8yAWkBDWNhcmdvRXhjaGFuZ2UCDGNhcmdvTGlzdFN0cgtsYW5kQXNzZXRJZAQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQKY2FyZ29QYXJ0cwkAvAkCBQxjYXJnb0xpc3RTdHICAToEBGFkZHIJAKUIAQgFAWkMb3JpZ2luQ2FsbGVyBAVhc3NldAkBBXZhbHVlAQkA7AcBCQDZBAEFC2xhbmRBc3NldElkBAd0aW1lS2V5CQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFC2xhbmRBc3NldElkAwkBASEBCQEJaXNEZWZpbmVkAQkAnwgBBQd0aW1lS2V5CQACAQkArAICCAUFYXNzZXQEbmFtZQIOIGlzIG5vdCBzdGFrZWQEBW93bmVyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFWtleUxhbmRBc3NldElkVG9Pd25lcgEFC2xhbmRBc3NldElkCQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCDCBpcyBvcnBoYW5lZAMJAQIhPQIFBW93bmVyBQRhZGRyCQACAQkArAICBQpMQU5EUFJFRklYAg0gaXMgbm90IHlvdXJzBAlsYW5kSW5kZXgJAGkCCQEPbnVtUGllY2VzQnlTaXplAQkAkQMCCQC1CQIIBQVhc3NldAtkZXNjcmlwdGlvbgIBXwULcmVjTGFuZFNpemUFBVNTSVpFBAppbmZyYUxldmVsCQELdmFsdWVPckVsc2UCCQCfCAEJARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQULbGFuZEFzc2V0SWQAAAQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQRhZGRyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkBAtjdXJMb2NhdGlvbgkBC3ZhbHVlT3JFbHNlAgkAoggBCQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQFD0RFRkFVTFRMT0NBVElPTgQDbG9jCQC1CQIJAQV2YWx1ZQEFC2N1ckxvY2F0aW9uAgFfAwkBAiE9AgkAkQMCBQNsb2MFCmxvY0lkeFR5cGUCAUwJAAIBCQCsAgIJAKwCAgIWRHVjayBsb2NhdGlvbiB0eXBlIGlzIAkAkQMCBQNsb2MFCmxvY0lkeFR5cGUCESwgYnV0IHNob3VsZCBiZSBMAwkBAiE9AgkAkQMCBQNsb2MFCGxvY0lkeElkBQtsYW5kQXNzZXRJZAkAAgEJAKwCAgIbRHVjayBzaG91bGQgYmUgb24gdGhlIGxhbmQgBQtsYW5kQXNzZXRJZAQFd2hLZXkJARJrZXlXYXJlaG91c2VCeUxhbmQBBQtsYW5kQXNzZXRJZAQJY3VycmVudFdoCQEMZ2V0V2FyZWhvdXNlAwUFd2hLZXkFCWxhbmRJbmRleAUKaW5mcmFMZXZlbAQFYnBLZXkJARFrZXlCYWNrcGFja0J5RHVjawEFC2R1Y2tBc3NldElkBAtjdXJyZW50UGFjawkBC2dldEJhY2twYWNrAQUFYnBLZXkEBnJlc3VsdAkBCW1vdmVTdHVmZgMFCmNhcmdvUGFydHMFCWN1cnJlbnRXaAULY3VycmVudFBhY2sEBGxvZnQJALUJAgkAkQMCBQljdXJyZW50V2gFCXdoSWR4TE9GVAIBXwQFbG9mdE8JAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbG9mdAULdm9sT2NjdXBpZWQIBQZyZXN1bHQCXzcEBWxvZnRGCQBlAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFB3ZvbEZyZWUIBQZyZXN1bHQCXzcJAM4IAgkAzAgCCQELU3RyaW5nRW50cnkCBQVicEtleQkAugkCCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCmJwSWR4TGV2ZWwJAMwIAggFBnJlc3VsdAJfNAkAzAgCCAUGcmVzdWx0Al81CQDMCAIIBQZyZXN1bHQCXzYFA25pbAIBOgkAzAgCCQELU3RyaW5nRW50cnkCBQV3aEtleQkAugkCCQDMCAIJAJEDAgUJY3VycmVudFdoBQt3aElkeExldmVscwkAzAgCCAUGcmVzdWx0Al8xCQDMCAIIBQZyZXN1bHQCXzIJAMwIAggFBnJlc3VsdAJfMwkAzAgCCQC5CQIJAMwIAgkAkQMCBQRsb2Z0BQl2b2xMb2NrZWQJAMwIAgkApAMBBQVsb2Z0TwkAzAgCCQCkAwEFBWxvZnRGCQDMCAIJAJEDAgUEbG9mdAUIdm9sVG90YWwFA25pbAIBXwUDbmlsAgE6BQNuaWwFDXByb2xvZ0FjdGlvbnMBaQENc2F2ZVdhcmVob3VzZQIFd2hTdHILbGFuZEFzc2V0SWQDCQECIT0CCAUBaQZjYWxsZXIFD2Vjb25vbXlDb250cmFjdAkAAgECDUFjY2VzcyBkZW5pZWQEBXdoS2V5CQESa2V5V2FyZWhvdXNlQnlMYW5kAQULbGFuZEFzc2V0SWQEAndoCQC8CQIFBXdoU3RyAgE6AwkBAiE9AgkAkAMBBQJ3aAAFCQACAQIwd2FyZWhvdXNlIHN0cmluZyBzaG91bGQgY29udGFpbiA0ICc6JyBzZXBhcmF0b3JzBAVsb2Z0TAkAkQMCCQC1CQIJAJEDAgUCd2gFCXdoSWR4TE9GVAIBXwUJdm9sTG9ja2VkBAVsb2Z0TwkBF2dldFdhcmVob3VzZU9jY3VwaWVkVm9sAQUCd2gEBWxvZnRUCQEXZ2V0V2FyZWhvdXNlVG90YWxWb2x1bWUBCQCRAwIFAndoBQt3aElkeExldmVscwQFbG9mdEYJAGUCCQBlAgUFbG9mdFQJAQ1wYXJzZUludFZhbHVlAQUFbG9mdEwFBWxvZnRPBAhuZXdXaFN0cgkAugkCCQDMCAIJAJEDAgUCd2gFC3doSWR4TGV2ZWxzCQDMCAIJAJEDAgUCd2gFCHdoSWR4UmVzCQDMCAIJAJEDAgUCd2gFCHdoSWR4TWF0CQDMCAIJAJEDAgUCd2gFCXdoSWR4UHJvZAkAzAgCCQC5CQIJAMwIAgUFbG9mdEwJAMwIAgkApAMBBQVsb2Z0TwkAzAgCCQCkAwEFBWxvZnRGCQDMCAIJAKQDAQUFbG9mdFQFA25pbAIBXwUDbmlsAgE6CQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgUFd2hLZXkFCG5ld1doU3RyBQNuaWwFCG5ld1doU3RyAWkBEmZpeFdhcmVob3VzZUZvcm1hdAELbGFuZEFzc2V0SWQDCQECIT0CCAUBaQZjYWxsZXIFDHJlc3RDb250cmFjdAkAAgECDUFjY2VzcyBkZW5pZWQEBXdoS2V5CQESa2V5V2FyZWhvdXNlQnlMYW5kAQULbGFuZEFzc2V0SWQEBWFzc2V0CQEFdmFsdWUBCQDsBwEJANkEAQULbGFuZEFzc2V0SWQECWxhbmRJbmRleAkAaQIJAQ9udW1QaWVjZXNCeVNpemUBCQCRAwIJALUJAggFBWFzc2V0C2Rlc2NyaXB0aW9uAgFfBQtyZWNMYW5kU2l6ZQUFU1NJWkUECmluZnJhTGV2ZWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAAABAJ3aAkBDGdldFdhcmVob3VzZQMFBXdoS2V5BQlsYW5kSW5kZXgFCmluZnJhTGV2ZWwEBWxvZnRMCQEFYXNJbnQBCQD8BwQFD2Vjb25vbXlDb250cmFjdAIacmVjYWxjTG9ja2VkVm9sdW1lUkVBRE9OTFkJAMwIAgULbGFuZEFzc2V0SWQJAMwIAgUCd2gFA25pbAUDbmlsBAVsb2Z0TwkBF2dldFdhcmVob3VzZU9jY3VwaWVkVm9sAQUCd2gEBWxvZnRUCQEXZ2V0V2FyZWhvdXNlVG90YWxWb2x1bWUBCQCRAwIFAndoBQt3aElkeExldmVscwQFbG9mdEYJAGUCCQBlAgUFbG9mdFQFBWxvZnRMBQVsb2Z0TwQIbmV3V2hTdHIJALoJAgkAzAgCCQCRAwIFAndoBQt3aElkeExldmVscwkAzAgCCQCRAwIFAndoBQh3aElkeFJlcwkAzAgCCQCRAwIFAndoBQh3aElkeE1hdAkAzAgCCQCRAwIFAndoBQl3aElkeFByb2QJAMwIAgkAuQkCCQDMCAIJAKQDAQUFbG9mdEwJAMwIAgkApAMBBQVsb2Z0TwkAzAgCCQCkAwEFBWxvZnRGCQDMCAIJAKQDAQUFbG9mdFQFA25pbAIBXwUDbmlsAgE6CQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgUFd2hLZXkFCG5ld1doU3RyBQNuaWwFCG5ld1doU3RyAWkBF2ZpeENvbnRpbmVudFByb3BvcnRpb25zAQxsYW5kQXNzZXRJZHMDCQECIT0CCAUBaQZjYWxsZXIFDHJlc3RDb250cmFjdAkAAgECDUFjY2VzcyBkZW5pZWQKAQhnZXRQcm9wcwIDYWNjBGNvbnQJAM0IAgUDYWNjCQELdmFsdWVPckVsc2UCCQCiCAEJARZrZXlSZXNUeXBlc0J5Q29udGluZW50AQUEY29udAILMF8wXzBfMF8wXzAEAXAKAAIkbAUKY29udGluZW50cwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEIZ2V0UHJvcHMCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDUJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFCgEJcHJvY2Vzc29yAgNhY2MLbGFuZEFzc2V0SWQEBWFzc2V0CQEFdmFsdWUBCQDsBwEJANkEAQULbGFuZEFzc2V0SWQEAWQJALUJAggFBWFzc2V0C2Rlc2NyaXB0aW9uAgFfBAlsYW5kSW5kZXgJAGkCCQEPbnVtUGllY2VzQnlTaXplAQkAkQMCBQFkBQtyZWNMYW5kU2l6ZQUFU1NJWkUEBGNvbnQJAJEDAgUBZAUMcmVjQ29udGluZW50BA10ZXJyYWluQ291bnRzCQENY291bnRUZXJyYWlucwEJAJEDAgUBZAULcmVjVGVycmFpbnMEDGNvbnRpbmVudElkeAkBBXZhbHVlAQkAzwgCBQpjb250aW5lbnRzBQRjb250BAljb250UHJvcHMJALUJAgkAkQMCBQNhY2MFDGNvbnRpbmVudElkeAIBXwQHdXBkYXRlZAkAuQkCCQEZdXBkYXRlUHJvcG9ydGlvbnNJbnRlcm5hbAQFCWNvbnRQcm9wcwUNdGVycmFpbkNvdW50cwUJbGFuZEluZGV4AAECAV8EByRtYXRjaDAFBGNvbnQDCQAAAgIIQW1lcmljYXMFByRtYXRjaDAJAMwIAgUHdXBkYXRlZAkAzAgCCQCRAwIFA2FjYwABCQDMCAIJAJEDAgUDYWNjAAIJAMwIAgkAkQMCBQNhY2MAAwkAzAgCCQCRAwIFA2FjYwAEBQNuaWwDCQAAAgIGRXVyb3BlBQckbWF0Y2gwCQDMCAIJAJEDAgUDYWNjAAAJAMwIAgUHdXBkYXRlZAkAzAgCCQCRAwIFA2FjYwACCQDMCAIJAJEDAgUDYWNjAAMJAMwIAgkAkQMCBQNhY2MABAUDbmlsAwkAAAICBEFzaWEFByRtYXRjaDAJAMwIAgkAkQMCBQNhY2MAAAkAzAgCCQCRAwIFA2FjYwABCQDMCAIFB3VwZGF0ZWQJAMwIAgkAkQMCBQNhY2MAAwkAzAgCCQCRAwIFA2FjYwAEBQNuaWwDCQAAAgIGQWZyaWNhBQckbWF0Y2gwCQDMCAIJAJEDAgUDYWNjAAAJAMwIAgkAkQMCBQNhY2MAAQkAzAgCCQCRAwIFA2FjYwACCQDMCAIFB3VwZGF0ZWQJAMwIAgkAkQMCBQNhY2MABAUDbmlsAwkAAAICB09jZWFuaWEFByRtYXRjaDAJAMwIAgkAkQMCBQNhY2MAAAkAzAgCCQCRAwIFA2FjYwABCQDMCAIJAJEDAgUDYWNjAAIJAMwIAgkAkQMCBQNhY2MAAwkAzAgCBQd1cGRhdGVkBQNuaWwJAAIBAg93cm9uZyBjb250aW5lbnQEAXIKAAIkbAUMbGFuZEFzc2V0SWRzCgACJHMJAJADAQUCJGwKAAUkYWNjMAUBcAoBBSRmMV8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEJcHJvY2Vzc29yAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYxXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhVMaXN0IHNpemUgZXhjZWVkcyAxMDAJAQUkZjFfMgIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyADMANAA1ADYANwA4ADkAOgA7ADwAPQA+AD8AQABBAEIAQwBEAEUARgBHAEgASQBKAEsATABNAE4ATwBQAFEAUgBTAFQAVQBWAFcAWABZAFoAWwBcAF0AXgBfAGAAYQBiAGMAZAkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIJARZrZXlSZXNUeXBlc0J5Q29udGluZW50AQIIQW1lcmljYXMJAJEDAgUBcgAACQDMCAIJAQtTdHJpbmdFbnRyeQIJARZrZXlSZXNUeXBlc0J5Q29udGluZW50AQIGRXVyb3BlCQCRAwIFAXIAAQkAzAgCCQELU3RyaW5nRW50cnkCCQEWa2V5UmVzVHlwZXNCeUNvbnRpbmVudAECBEFzaWEJAJEDAgUBcgACCQDMCAIJAQtTdHJpbmdFbnRyeQIJARZrZXlSZXNUeXBlc0J5Q29udGluZW50AQIGQWZyaWNhCQCRAwIFAXIAAwkAzAgCCQELU3RyaW5nRW50cnkCCQEWa2V5UmVzVHlwZXNCeUNvbnRpbmVudAECB09jZWFuaWEJAJEDAgUBcgAEBQNuaWwAAAFpAQ9maXhTdGFrZWRQaWVjZXMBB2FkZHJlc3MDCQECIT0CCAUBaQZjYWxsZXIFDHJlc3RDb250cmFjdAkAAgECDUFjY2VzcyBkZW5pZWQEDHN0YWtlZFBpZWNlcwMJAAACBQdhZGRyZXNzAgAAAAQIbGFuZHNTdHIJAJ0IAgUPc3Rha2luZ0NvbnRyYWN0CQEVa2V5U3Rha2VkTGFuZHNCeU93bmVyAQUHYWRkcmVzcwQFbGFuZHMDCQEJaXNEZWZpbmVkAQUIbGFuZHNTdHIJAL0JAgkBBXZhbHVlAQUIbGFuZHNTdHICAV8FA25pbAoBB29uZUxhbmQCA2FjYwtsYW5kQXNzZXRJZAQFYXNzZXQJAQV2YWx1ZQEJAOwHAQkA2QQBBQtsYW5kQXNzZXRJZAQIbGFuZFNpemUJAJEDAgkAtQkCCAUFYXNzZXQLZGVzY3JpcHRpb24CAV8FC3JlY0xhbmRTaXplCQBkAgUDYWNjCQEPbnVtUGllY2VzQnlTaXplAQUIbGFuZFNpemUKAAIkbAUFbGFuZHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwAAAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBB29uZUxhbmQCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFUxpc3Qgc2l6ZSBleGNlZWRzIDEwMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQA6ADsAPAA9AD4APwBAAEEAQgBDAEQARQBGAEcASABJAEoASwBMAE0ATgBPAFAAUQBSAFMAVABVAFYAVwBYAFkAWgBbAFwAXQBeAF8AYABhAGIAYwBkCQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIJARZrZXlTdGFrZWRQaWVjZXNCeU93bmVyAQUHYWRkcmVzcwUMc3Rha2VkUGllY2VzBQNuaWwFDHN0YWtlZFBpZWNlcwFpAQ1zZXRDdXN0b21OYW1lAwdhc3NldElkCmN1c3RvbU5hbWUEdHlwZQQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAhxFeGFjdGx5IG9uZSBwYXltZW50IHJlcXVpcmVkBANwbXQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAMJAQIhPQIIBQNwbXQHYXNzZXRJZAULdXNkdEFzc2V0SWQJAAIBAhpBbGxvd2VkIFVTRFQgcGF5bWVudCBvbmx5IQMJAQIhPQIIBQNwbXQGYW1vdW50BQxSRU5BTUlOR0NPU1QJAAIBCQCsAgICElBheW1lbnQgc2hvdWxkIGJlIAkApAMBBQxSRU5BTUlOR0NPU1QDCQEIY29udGFpbnMCBQpjdXN0b21OYW1lAgJfXwkAAgEJAKwCAgIeTmFtZSBzaG91bGQgbm90IGNvbnRhaW4gJ19fJzogBQpjdXN0b21OYW1lAwkAZgIJALECAQUKY3VzdG9tTmFtZQUKTUFYTkFNRUxFTgkAAgEJAKwCAgIZTmFtZSB0b28gbG9uZywgbWF4TGVuZ3RoPQkApAMBBQpNQVhOQU1FTEVOBARhZGRyCQClCAEIBQFpDG9yaWdpbkNhbGxlcgQHYWN0aW9ucwQHJG1hdGNoMAUEdHlwZQMJAAACAgdBQ0NPVU5UBQckbWF0Y2gwBApyZXZlcnNlS2V5CQEWa2V5Q3VzdG9tTmFtZVRvQWRkcmVzcwEFCmN1c3RvbU5hbWUECW5hbWVPd25lcgkAoggBBQpyZXZlcnNlS2V5AwkBCWlzRGVmaW5lZAEFCW5hbWVPd25lcgkAAgEJAKwCAgIZTmFtZSBhbHJlYWR5IHJlZ2lzdGVyZWQ6IAUKY3VzdG9tTmFtZQQNYWRkclRvTmFtZUtleQkBFmtleUFkZHJlc3NUb0N1c3RvbU5hbWUBBQRhZGRyBAdvbGROYW1lCQCiCAEFDWFkZHJUb05hbWVLZXkEB2ZyZWVPbGQDCQEJaXNEZWZpbmVkAQUHb2xkTmFtZQkAzAgCCQELRGVsZXRlRW50cnkBCQEWa2V5Q3VzdG9tTmFtZVRvQWRkcmVzcwEJAQV2YWx1ZQEFB29sZE5hbWUFA25pbAUDbmlsCQDOCAIJAM0IAgkAzQgCBQdmcmVlT2xkCQELU3RyaW5nRW50cnkCBQ1hZGRyVG9OYW1lS2V5BQpjdXN0b21OYW1lCQELU3RyaW5nRW50cnkCBQpyZXZlcnNlS2V5BQRhZGRyCAkBFnVwZGF0ZUFjY1N0YXRzSW50ZXJuYWwCBQRhZGRyBQx4cEN1c3RvbU5hbWUCXzEDCQAAAgIETEFORAUHJG1hdGNoMAQFYXNzZXQJAQV2YWx1ZQEJAOwHAQkA2QQBBQdhc3NldElkBAd0aW1lS2V5CQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFB2Fzc2V0SWQDCQEBIQEJAQlpc0RlZmluZWQBCQCfCAEFB3RpbWVLZXkJAAIBCQCsAgIIBQVhc3NldARuYW1lAg4gaXMgbm90IHN0YWtlZAQFb3duZXIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEVa2V5TGFuZEFzc2V0SWRUb093bmVyAQUHYXNzZXRJZAkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAgwgaXMgb3JwaGFuZWQDCQECIT0CBQVvd25lcgUEYWRkcgkAAgEJAKwCAgUKTEFORFBSRUZJWAINIGlzIG5vdCB5b3VycwQKcmV2ZXJzZUtleQkBGmtleUxhbmRDdXN0b21OYW1lVG9Bc3NldElkAQUKY3VzdG9tTmFtZQQJbmFtZU93bmVyCQCiCAEFCnJldmVyc2VLZXkDCQEJaXNEZWZpbmVkAQUJbmFtZU93bmVyCQACAQkArAICAhlOYW1lIGFscmVhZHkgcmVnaXN0ZXJlZDogBQpjdXN0b21OYW1lBA5hc3NldFRvTmFtZUtleQkBGmtleUxhbmRBc3NldElkVG9DdXN0b21OYW1lAQUHYXNzZXRJZAQHb2xkTmFtZQkAoggBBQ5hc3NldFRvTmFtZUtleQQHZnJlZU9sZAMJAQlpc0RlZmluZWQBBQdvbGROYW1lCQDMCAIJAQtEZWxldGVFbnRyeQEJARprZXlMYW5kQ3VzdG9tTmFtZVRvQXNzZXRJZAEJAQV2YWx1ZQEFB29sZE5hbWUFA25pbAUDbmlsCQDOCAIJAM0IAgkAzQgCBQdmcmVlT2xkCQELU3RyaW5nRW50cnkCBQ5hc3NldFRvTmFtZUtleQUKY3VzdG9tTmFtZQkBC1N0cmluZ0VudHJ5AgUKcmV2ZXJzZUtleQUHYXNzZXRJZAgJARZ1cGRhdGVBY2NTdGF0c0ludGVybmFsAgUEYWRkcgUMeHBDdXN0b21OYW1lAl8xAwkAAAICBERVQ0sFByRtYXRjaDAEBWFzc2V0CQEFdmFsdWUBCQDsBwEJANkEAQUHYXNzZXRJZAQHdGltZUtleQkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQdhc3NldElkAwMJAQEhAQkBCWlzRGVmaW5lZAEJAJ8IAQUHdGltZUtleQYJAQEhAQkBCWlzRGVmaW5lZAEJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUEYWRkcgkAAgEJAKwCAggFBWFzc2V0BG5hbWUCDiBpcyBub3Qgc3Rha2VkBAVvd25lcgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARBrZXlEdWNrSWRUb093bmVyAQUHYXNzZXRJZAkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAgwgaXMgb3JwaGFuZWQDCQECIT0CBQVvd25lcgUEYWRkcgkAAgEJAKwCAgUKRFVDS1BSRUZJWAINIGlzIG5vdCB5b3VycwQKcmV2ZXJzZUtleQkBGmtleUR1Y2tDdXN0b21OYW1lVG9Bc3NldElkAQUKY3VzdG9tTmFtZQQJbmFtZU93bmVyCQCiCAEFCnJldmVyc2VLZXkDCQEJaXNEZWZpbmVkAQUJbmFtZU93bmVyCQACAQkArAICAhlOYW1lIGFscmVhZHkgcmVnaXN0ZXJlZDogBQpjdXN0b21OYW1lBA5hc3NldFRvTmFtZUtleQkBGmtleUR1Y2tBc3NldElkVG9DdXN0b21OYW1lAQUHYXNzZXRJZAQHb2xkTmFtZQkAoggBBQ5hc3NldFRvTmFtZUtleQQHZnJlZU9sZAMJAQlpc0RlZmluZWQBBQdvbGROYW1lCQDMCAIJAQtEZWxldGVFbnRyeQEJARprZXlEdWNrQ3VzdG9tTmFtZVRvQXNzZXRJZAEJAQV2YWx1ZQEFB29sZE5hbWUFA25pbAUDbmlsCQDOCAIJAM0IAgkAzQgCBQdmcmVlT2xkCQELU3RyaW5nRW50cnkCBQ5hc3NldFRvTmFtZUtleQUKY3VzdG9tTmFtZQkBC1N0cmluZ0VudHJ5AgUKcmV2ZXJzZUtleQUHYXNzZXRJZAgJARd1cGRhdGVEdWNrU3RhdHNJbnRlcm5hbAIFB2Fzc2V0SWQFDHhwQ3VzdG9tTmFtZQJfMQkAAgECE1Vua25vd24gZW50aXR5IHR5cGUJAJQKAgkAzggCCQDNCAIFB2FjdGlvbnMJAQ5TY3JpcHRUcmFuc2ZlcgMFD2Vjb25vbXlDb250cmFjdAgFA3BtdAZhbW91bnQFC3VzZHRBc3NldElkBQ1wcm9sb2dBY3Rpb25zAAABaQEMc2V0UmVmZXJyYWxzAglvbGRQbGF5ZXIJbmV3UGxheWVyAwkBAiE9AggFAWkPY2FsbGVyUHVibGljS2V5BQNwdWIJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAMJAQEhAQkBCWlzRGVmaW5lZAEJAKYIAQUJb2xkUGxheWVyCQACAQkArAICAhFJbnZhbGlkIGFkZHJlc3M6IAUJb2xkUGxheWVyAwkBASEBCQEJaXNEZWZpbmVkAQkApggBBQluZXdQbGF5ZXIJAAIBCQCsAgICEUludmFsaWQgYWRkcmVzczogBQluZXdQbGF5ZXIEB29sZHNLZXkJAQlrZXlPbGRpZXMABARvbGRzCQCiCAEFB29sZHNLZXkEBm9sZGllcwMJAQlpc0RlZmluZWQBBQRvbGRzCQC8CQIJAQV2YWx1ZQEFBG9sZHMCAV8FA25pbAMJAQ9jb250YWluc0VsZW1lbnQCBQZvbGRpZXMFCW5ld1BsYXllcgkAAgEJAKwCAgUJbmV3UGxheWVyAiYgaXMgbm90IG5ld2JpZSAoYWxyZWFkeSBoYXMgcmVmZXJyYWxzKQQIcmVmQnlLZXkJAQ9rZXlBZGRyZXNzUmVmQnkBBQluZXdQbGF5ZXIEBXJlZkJ5CQCiCAEFCHJlZkJ5S2V5AwMJAQlpc0RlZmluZWQBBQVyZWZCeQkBCWlzRGVmaW5lZAEJAKYIAQkBBXZhbHVlAQUFcmVmQnkHCQACAQkArAICCQCsAgIFCW5ld1BsYXllcgIUIGFscmVhZHkgaGFzIHJlZkJ5OiAJAQV2YWx1ZQEFBXJlZkJ5BAdyZWZzS2V5CQETa2V5QWRkcmVzc1JlZmVycmFscwEFCW9sZFBsYXllcgQEcmVmcwkAoggBBQdyZWZzS2V5BAlyZWZzQXJyYXkDCQEJaXNEZWZpbmVkAQUEcmVmcwkAvAkCCQEFdmFsdWUBBQRyZWZzAgFfBQNuaWwDCQEPY29udGFpbnNFbGVtZW50AgUJcmVmc0FycmF5BQluZXdQbGF5ZXIJAAIBCQCsAgIJAKwCAgkArAICBQlvbGRQbGF5ZXICEiBhbHJlYWR5IGNvbnRhaW5zIAUJbmV3UGxheWVyAhEgd2l0aGluIHJlZmVycmFscwQHbmV3UmVmcwkAugkCCQDNCAIFCXJlZnNBcnJheQUJbmV3UGxheWVyAgFfBAduZXdPbGRzAwkBD2NvbnRhaW5zRWxlbWVudAIFBm9sZGllcwUJb2xkUGxheWVyCQEFdmFsdWUBBQRvbGRzCQC6CQIJAM0IAgUGb2xkaWVzBQlvbGRQbGF5ZXICAV8JAJQKAgkAzggCCQDMCAIJAQtTdHJpbmdFbnRyeQIFCHJlZkJ5S2V5BQlvbGRQbGF5ZXIJAMwIAgkBC1N0cmluZ0VudHJ5AgUHcmVmc0tleQUHbmV3UmVmcwkAzAgCCQELU3RyaW5nRW50cnkCBQdvbGRzS2V5BQduZXdPbGRzBQNuaWwFDXByb2xvZ0FjdGlvbnMAAAFpARBkaXN0cmlidXRlUG9pbnRzBQhzdHJlbmd0aAhhY2N1cmFjeQlpbnRlbGxlY3QJZW5kdXJhbmNlCWRleHRlcml0eQQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQEYWRkcgkApQgBCAUBaQxvcmlnaW5DYWxsZXIEC3ZpcnRXbGdEYXRhCQEJYXNBbnlMaXN0AQkA/AcEBQt3bGdDb250cmFjdAISY2hlY2tXbGdYcFJFQURPTkxZCQDMCAIFBGFkZHIFA25pbAUDbmlsBA12aXJ0V2xnUG9pbnRzCQEFYXNJbnQBCQCRAwIFC3ZpcnRXbGdEYXRhAAEEDSR0MDk2Mzk3OTY3ODcDCQBnAgAABQ12aXJ0V2xnUG9pbnRzCQCUCgIAAAUDbmlsBAdkZWx0YVhQCQEFYXNJbnQBCQD8BwQFC3dsZ0NvbnRyYWN0Agl0YWtlV2xnWHAJAMwIAgUEYWRkcgUDbmlsBQNuaWwDCQAAAgUHZGVsdGFYUAUHZGVsdGFYUAkAlAoCBQ12aXJ0V2xnUG9pbnRzCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEMa2V5VXNlckxldmVsAQUEYWRkcgkBBWFzSW50AQkAkQMCBQt2aXJ0V2xnRGF0YQAACQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEJa2V5VXNlclhQAQUEYWRkcgkBBWFzSW50AQkAkQMCBQt2aXJ0V2xnRGF0YQACBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4ECXdsZ1BvaW50cwgFDSR0MDk2Mzk3OTY3ODcCXzEECndsZ0FjdGlvbnMIBQ0kdDA5NjM5Nzk2Nzg3Al8yBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFBGFkZHICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQECmZyZWVLZXlBY2MJARFrZXlVc2VyRnJlZVBvaW50cwEFBGFkZHIEDWZyZWVQb2ludHNBY2MJAGQCCQELdmFsdWVPckVsc2UCCQCfCAEFCmZyZWVLZXlBY2MAAAUJd2xnUG9pbnRzBAtmcmVlS2V5RHVjawkBEWtleUR1Y2tGcmVlUG9pbnRzAQULZHVja0Fzc2V0SWQEDmZyZWVQb2ludHNEdWNrCQELdmFsdWVPckVsc2UCCQCfCAEFC2ZyZWVLZXlEdWNrAAAEB3N1bUZyZWUJAGQCBQ1mcmVlUG9pbnRzQWNjBQ5mcmVlUG9pbnRzRHVjawQPc3VtVG9EaXN0cmlidXRlCQBkAgkAZAIJAGQCCQBkAgUIc3RyZW5ndGgFCGFjY3VyYWN5BQlpbnRlbGxlY3QFCWVuZHVyYW5jZQUJZGV4dGVyaXR5AwkAZgIFD3N1bVRvRGlzdHJpYnV0ZQUHc3VtRnJlZQkAAgEJAKwCAgkArAICAg9UaGVyZSBhcmUgb25seSAJAKQDAQUHc3VtRnJlZQIaIGZyZWUgcG9pbnRzIHRvIGRpc3RyaWJ1dGUECGNoYXJzS2V5CQEMa2V5RHVja0NoYXJzAQULZHVja0Fzc2V0SWQEBWNoYXJzCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAKIIAQUIY2hhcnNLZXkCCTBfMF8wXzBfMAIBXwQGbmV3QWNjCQBlAgUNZnJlZVBvaW50c0FjYwUPc3VtVG9EaXN0cmlidXRlCQCUCgIJAM4IAgkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQpmcmVlS2V5QWNjAwkAZgIAAAUGbmV3QWNjAAAFBm5ld0FjYwkAzAgCCQEMSW50ZWdlckVudHJ5AgULZnJlZUtleUR1Y2sDCQBmAgAABQZuZXdBY2MJAGQCBQ5mcmVlUG9pbnRzRHVjawUGbmV3QWNjBQ5mcmVlUG9pbnRzRHVjawkAzAgCCQELU3RyaW5nRW50cnkCBQhjaGFyc0tleQkAuQkCCQDMCAIJAKQDAQkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVjaGFycwUMY2hhclN0cmVuZ3RoBQhzdHJlbmd0aAkAzAgCCQCkAwEJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFY2hhcnMFDGNoYXJBY2N1cmFjeQUIYWNjdXJhY3kJAMwIAgkApAMBCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBWNoYXJzBQ1jaGFySW50ZWxsZWN0BQlpbnRlbGxlY3QJAMwIAgkApAMBCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBWNoYXJzBQ1jaGFyRW5kdXJhbmNlBQllbmR1cmFuY2UJAMwIAgkApAMBCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBWNoYXJzBQ1jaGFyRGV4dGVyaXR5BQlkZXh0ZXJpdHkFA25pbAIBXwUDbmlsBQ1wcm9sb2dBY3Rpb25zBQp3bGdBY3Rpb25zAAABaQEcc3BsaXRCeUdsb2JhbFdlaWdodHNSRUFET05MWQEGYW1vdW50CQCUCgIFA25pbAkBEmdldE5lZWRlZE1hdGVyaWFscwEFBmFtb3VudAFpASRzcGxpdEJ5R2xvYmFsQW5kTG9jYWxXZWlnaHRzUkVBRE9OTFkDCW1hdEFtb3VudAlyZXNBbW91bnQIdGVycmFpbnMEDXRlcnJhaW5Db3VudHMJAQ1jb3VudFRlcnJhaW5zAQUIdGVycmFpbnMJAJQKAgUDbmlsCQCUCgIJARJnZXROZWVkZWRNYXRlcmlhbHMBBQltYXRBbW91bnQJARNkaXN0cmlidXRlQnlXZWlnaHRzAgUJcmVzQW1vdW50BQ10ZXJyYWluQ291bnRzAWkBE2dldEJhY2twYWNrUkVBRE9OTFkBC2R1Y2tBc3NldElkCQCUCgIFA25pbAkAuQkCCQELZ2V0QmFja3BhY2sBCQERa2V5QmFja3BhY2tCeUR1Y2sBBQtkdWNrQXNzZXRJZAIBOgFpARRnZXRXYXJlaG91c2VSRUFET05MWQELbGFuZEFzc2V0SWQEBWFzc2V0CQEFdmFsdWUBCQDsBwEJANkEAQULbGFuZEFzc2V0SWQECWxhbmRJbmRleAkAaQIJAQ9udW1QaWVjZXNCeVNpemUBCQCRAwIJALUJAggFBWFzc2V0C2Rlc2NyaXB0aW9uAgFfBQtyZWNMYW5kU2l6ZQUFU1NJWkUECmluZnJhTGV2ZWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAAACQCUCgIFA25pbAkAugkCCQEMZ2V0V2FyZWhvdXNlAwkBEmtleVdhcmVob3VzZUJ5TGFuZAEFC2xhbmRBc3NldElkBQlsYW5kSW5kZXgFCmluZnJhTGV2ZWwCAToBaQEKc2F2ZUxhc3RUeAADCQEBIQEJAQ9jb250YWluc0VsZW1lbnQCCQDMCAIFC3dsZ0NvbnRyYWN0CQDMCAIFD2Vjb25vbXlDb250cmFjdAkAzAgCBRJ0b3VybmFtZW50Q29udHJhY3QJAMwIAgUNYWNyZXNDb250cmFjdAUDbmlsCAUBaQZjYWxsZXIJAAIBAg1BY2Nlc3MgZGVuaWVkCQCUCgIJAQZwcm9sb2cBBQFpACoBaQEPdXBkYXRlRHVja1N0YXRzAgtkdWNrQXNzZXRJZAdkZWx0YVhQAwkBAiE9AggFAWkGY2FsbGVyBQ9lY29ub215Q29udHJhY3QJAAIBAg1BY2Nlc3MgZGVuaWVkCQEXdXBkYXRlRHVja1N0YXRzSW50ZXJuYWwCBQtkdWNrQXNzZXRJZAUHZGVsdGFYUAFpAQ51cGRhdGVBY2NTdGF0cwIEYWRkcgdkZWx0YVhQAwkBASEBCQEPY29udGFpbnNFbGVtZW50AgkAzAgCBQt3bGdDb250cmFjdAkAzAgCBQ9lY29ub215Q29udHJhY3QJAMwIAgUNYWNyZXNDb250cmFjdAUDbmlsCAUBaQZjYWxsZXIJAAIBAg1BY2Nlc3MgZGVuaWVkCQEWdXBkYXRlQWNjU3RhdHNJbnRlcm5hbAIFBGFkZHIFB2RlbHRhWFABaQEJZXF1aXBEdWNrAQllcXVpcG1lbnQEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQEBGFkZHIJAKUIAQgFAWkMb3JpZ2luQ2FsbGVyBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFBGFkZHICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQDCQEPY2hlY2tUb3VybmFtZW50AQULZHVja0Fzc2V0SWQJAAIBAhllcXVpcER1Y2tfY2hlY2tUb3VybmFtZW50AwkBDWNoZWNrRGVsaXZlcnkBBQtkdWNrQXNzZXRJZAkAAgECF2VxdWlwRHVja19jaGVja0RlbGl2ZXJ5BAVlcUtleQkBEGtleUR1Y2tFcXVpcG1lbnQBBQtkdWNrQXNzZXRJZAQLY3VycmVudFNlZ3MJALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBBQVlcUtleQIXLDssXyw7LF8sOyxfLDssXyw7LF8sOywCAV8EBWJwS2V5CQERa2V5QmFja3BhY2tCeUR1Y2sBBQtkdWNrQXNzZXRJZAQLY3VycmVudFBhY2sJAQtnZXRCYWNrcGFjawEFBWJwS2V5BAVuZXdFcQkAtQkCBQllcXVpcG1lbnQCAV8DCQECIT0CCQCQAwEFBW5ld0VxBQtOVU1TRUdNRU5UUwkAAgECFldyb25nIGVxdWlwbWVudCBzdHJpbmcECXRlbXBQcm9kQgkBBmRyZXNzQgQFC2N1cnJlbnRTZWdzCQEOcHJvZFN0clRvQnl0ZXMBCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QGBQNuaWwECHNlZ0JwQXV4CQCRAwIJALUJAgkAkQMCBQVuZXdFcQULc2VnQmFja3BhY2sCATsAAQQKYnVmZkVmZmVjdAMJAAACBQhzZWdCcEF1eAIAAAAEBGF1eDAJAJEDAgkAtQkCBQhzZWdCcEF1eAIBLAAAAwkAAAIFBGF1eDACAAAABAZpZHhDbnQJALUJAgUEYXV4MAIBOgQDaWR4CQCRAwIFBmlkeENudAAABANjbnQJAJEDAgUGaWR4Q250AAEDAwMDAwkAAAIFA2lkeAICMDYGCQAAAgUDaWR4AgIwNwYJAAACBQNpZHgCAjA4CQECIT0CBQNjbnQCAAcJAGYCCQENcGFyc2VJbnRWYWx1ZQEFA2NudAAABwkBDXBhcnNlSW50VmFsdWUBCQCRAwIJALUJAgkAkQMCBRBwcm9kdWN0aW9uTWF0cml4CQENcGFyc2VJbnRWYWx1ZQEFA2lkeAIBXwUKcklkeEVmZmVjdAAABAVzdGF0cwkBDGdldER1Y2tTdGF0cwQFBHRoaXMFC2R1Y2tBc3NldElkBQpidWZmRWZmZWN0BgQIbmV3UHJvZEIJAQZkcmVzc0IEBQVuZXdFcQUJdGVtcFByb2RCBwUFc3RhdHMECm5ld1Byb2RTdHIJAQ5ieXRlc1RvUHJvZFN0cgEFCG5ld1Byb2RCCQCUCgIJAM4IAgkAzAgCCQELU3RyaW5nRW50cnkCBQVlcUtleQUJZXF1aXBtZW50CQDMCAIJAQtTdHJpbmdFbnRyeQIFBWJwS2V5CQC6CQIJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUKYnBJZHhMZXZlbAkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeFJlcwkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeE1hdAkAzAgCBQpuZXdQcm9kU3RyBQNuaWwCAToJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDGtleUR1Y2tCdWZmcwEFC2R1Y2tBc3NldElkCQC5CQIJAMwIAgkApAMBCQCRAwIFBXN0YXRzAAcJAMwIAgkApAMBCQCRAwIFBXN0YXRzAAgJAMwIAgkApAMBCQCRAwIFBXN0YXRzAAkJAMwIAgkApAMBCQCRAwIFBXN0YXRzAAoJAMwIAgkApAMBCQCRAwIFBXN0YXRzAAsFA25pbAIBXwUDbmlsBQ1wcm9sb2dBY3Rpb25zAAABaQEPZm9ydGlmaWNhdGVMYW5kAgtsYW5kQXNzZXRJZARwbGFuBA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBARhZGRyCQClCAEIBQFpDG9yaWdpbkNhbGxlcgQLZHVja0Fzc2V0SWQJAQt2YWx1ZU9yRWxzZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUEYWRkcgIABAlkdWNrU3RhdHMJAQxnZXREdWNrU3RhdHMEBQR0aGlzBQtkdWNrQXNzZXRJZAAABwQHZm9ydEtleQkBF2tleUZvcnRpZmljYXRpb25zQnlMYW5kAQULbGFuZEFzc2V0SWQEDGN1cnJlbnRGb3J0cwkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEFB2ZvcnRLZXkCDDowXzE1OjBfMTg6MAIBXwQFYXNzZXQJAQV2YWx1ZQEJAOwHAQkA2QQBBQtsYW5kQXNzZXRJZAQJbGFuZEluZGV4CQBpAgkBD251bVBpZWNlc0J5U2l6ZQEJAJEDAgkAtQkCCAUFYXNzZXQLZGVzY3JpcHRpb24CAV8FC3JlY0xhbmRTaXplBQVTU0laRQQKaW5mcmFMZXZlbAkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEFC2xhbmRBc3NldElkAAAEBXdoS2V5CQESa2V5V2FyZWhvdXNlQnlMYW5kAQULbGFuZEFzc2V0SWQEAndoCQEMZ2V0V2FyZWhvdXNlAwUFd2hLZXkFCWxhbmRJbmRleAUKaW5mcmFMZXZlbAQHY3VyTG9mdAkAtQkCCQCRAwIFAndoBQl3aElkeExPRlQCAV8EBGN1ck8JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQdjdXJMb2Z0BQt2b2xPY2N1cGllZAQEY3VyRgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFB2N1ckxvZnQFB3ZvbEZyZWUECG5ld0ZvcnRzCQC1CQIFBHBsYW4CAV8EDyR0MDEwMzYyNTEwMzc0MAkBBWZvcnRCBgUMY3VycmVudEZvcnRzCQEOcHJvZFN0clRvQnl0ZXMBCQCRAwIFAndoBQl3aElkeFByb2QFBGN1ck8FBGN1ckYGBQNuaWwECXRlbXBQcm9kQggFDyR0MDEwMzYyNTEwMzc0MAJfMQQFdGVtcE8IBQ8kdDAxMDM2MjUxMDM3NDACXzIEBXRlbXBGCAUPJHQwMTAzNjI1MTAzNzQwAl8zBA8kdDAxMDM3NDMxMDM4MzkJAQVmb3J0QgYFCG5ld0ZvcnRzBQl0ZW1wUHJvZEIFBXRlbXBPBQV0ZW1wRgcFCWR1Y2tTdGF0cwQIbmV3UHJvZEIIBQ8kdDAxMDM3NDMxMDM4MzkCXzEEBG5ld08IBQ8kdDAxMDM3NDMxMDM4MzkCXzIEBG5ld0YIBQ8kdDAxMDM3NDMxMDM4MzkCXzMECm5ld1Byb2RTdHIJAQ5ieXRlc1RvUHJvZFN0cgEFCG5ld1Byb2RCBApuZXdMb2Z0U3RyCQC5CQIJAMwIAgkAkQMCBQdjdXJMb2Z0BQl2b2xMb2NrZWQJAMwIAgkApAMBBQRuZXdPCQDMCAIJAKQDAQUEbmV3RgkAzAgCCQCRAwIFB2N1ckxvZnQFCHZvbFRvdGFsBQNuaWwCAV8JAJQKAgkAzggCCQDMCAIJAQtTdHJpbmdFbnRyeQIFB2ZvcnRLZXkFBHBsYW4JAMwIAgkBC1N0cmluZ0VudHJ5AgUFd2hLZXkJALoJAgkAzAgCCQCRAwIFAndoBQt3aElkeExldmVscwkAzAgCCQCRAwIFAndoBQh3aElkeFJlcwkAzAgCCQCRAwIFAndoBQh3aElkeE1hdAkAzAgCBQpuZXdQcm9kU3RyCQDMCAIFCm5ld0xvZnRTdHIFA25pbAIBOgUDbmlsBQ1wcm9sb2dBY3Rpb25zAAABaQETaW5pdER1Y2tUb3VyQXR0ZW1wdAELZHVja0Fzc2V0SWQDCQECIT0CCAUBaQZjYWxsZXIFEnRvdXJuYW1lbnRDb250cmFjdAkAAgECDUFjY2VzcyBkZW5pZWQECWtleUhlYWx0aAkBDWtleUR1Y2tIZWFsdGgBBQtkdWNrQXNzZXRJZAQFbWF4SFAJAQltYXhIZWFsdGgBCQELdmFsdWVPckVsc2UCCQCfCAEJAQxrZXlEdWNrTGV2ZWwBBQtkdWNrQXNzZXRJZAAABAljdXJIZWFsdGgJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJa2V5SGVhbHRoBQVtYXhIUAQJY3VyTG9jS2V5CQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQEC2N1ckxvY2F0aW9uCQELdmFsdWVPckVsc2UCCQCiCAEFCWN1ckxvY0tleQUPREVGQVVMVExPQ0FUSU9OBAZsYXN0SWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUSdG91cm5hbWVudENvbnRyYWN0BQ1sYXN0VG91cklkS2V5AAAEDHRvdXJMb2NhdGlvbgkArAICCQCkAwEFBmxhc3RJZAIEX1RfMAkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEOa2V5U2F2ZWRIZWFsdGgBBQtkdWNrQXNzZXRJZAUJY3VySGVhbHRoCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlrZXlIZWFsdGgFBW1heEhQCQDMCAIJAQtTdHJpbmdFbnRyeQIJARBrZXlTYXZlZExvY2F0aW9uAQULZHVja0Fzc2V0SWQFC2N1ckxvY2F0aW9uCQDMCAIJAQtTdHJpbmdFbnRyeQIFCWN1ckxvY0tleQUMdG91ckxvY2F0aW9uBQNuaWwFDHRvdXJMb2NhdGlvbgFpAQxicmVha0F0dGVtcHQABA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBCQClCAEIBQFpBmNhbGxlcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAQJY3VyTG9jS2V5CQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQEC2N1ckxvY2F0aW9uCQELdmFsdWVPckVsc2UCCQCiCAEFCWN1ckxvY0tleQUPREVGQVVMVExPQ0FUSU9OAwkBAiE9AgkAkQMCCQC1CQIFC2N1ckxvY2F0aW9uAgFfBQpsb2NJZHhUeXBlAgFUCQACAQIiWW91ciBkdWNrIGlzIG5vdCBpbiB0aGUgdG91cm5hbWVudAQLc2F2ZWRIZWFsdGgJARFAZXh0ck5hdGl2ZSgxMDU1KQEJAQ5rZXlTYXZlZEhlYWx0aAEFC2R1Y2tBc3NldElkBA1zYXZlZExvY2F0aW9uCQERQGV4dHJOYXRpdmUoMTA1OCkBCQEQa2V5U2F2ZWRMb2NhdGlvbgEFC2R1Y2tBc3NldElkCQCUCgIJAM0IAgkAzQgCBQ1wcm9sb2dBY3Rpb25zCQEMSW50ZWdlckVudHJ5AgkBDWtleUR1Y2tIZWFsdGgBBQtkdWNrQXNzZXRJZAULc2F2ZWRIZWFsdGgJAQtTdHJpbmdFbnRyeQIFCWN1ckxvY0tleQUNc2F2ZWRMb2NhdGlvbgULY3VyTG9jYXRpb24BaQEWZXhpdFRvdXJuYW1lbnRJbnRlcm5hbAELZHVja0Fzc2V0SWQDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAg1BY2Nlc3MgZGVuaWVkBAtzYXZlZEhlYWx0aAkBEUBleHRyTmF0aXZlKDEwNTUpAQkBDmtleVNhdmVkSGVhbHRoAQULZHVja0Fzc2V0SWQEDXNhdmVkTG9jYXRpb24JARFAZXh0ck5hdGl2ZSgxMDU4KQEJARBrZXlTYXZlZExvY2F0aW9uAQULZHVja0Fzc2V0SWQJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDWtleUR1Y2tIZWFsdGgBBQtkdWNrQXNzZXRJZAULc2F2ZWRIZWFsdGgJAMwIAgkBC1N0cmluZ0VudHJ5AgkBD2tleUR1Y2tMb2NhdGlvbgEFC2R1Y2tBc3NldElkBQ1zYXZlZExvY2F0aW9uBQNuaWwHAWkBFGV4aXREZWxpdmVyeUludGVybmFsAQtkdWNrQXNzZXRJZAMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECDUFjY2VzcyBkZW5pZWQEAWUJARJleGl0RGVsaXZlcnlDb21tb24DBQtkdWNrQXNzZXRJZAcAAAkAlAoCCQDOCAIIBQFlAl8xCAUBZQJfMgcBaQEQYXV0b0V4aXREZWxpdmVyeQILZHVja0Fzc2V0SWQFbmV3SFADCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAg1BY2Nlc3MgZGVuaWVkBAFlCQESZXhpdERlbGl2ZXJ5Q29tbW9uAwULZHVja0Fzc2V0SWQGBQVuZXdIUAkAlAoCCAUBZQJfMQkAlAoCCAUBZQJfMwgFAWUCXzQBaQEOcHJlcGFyZVJvYmJlcnkCB21lc3NhZ2UDc2lnBA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQEhAQkAxBMDBQdtZXNzYWdlBQNzaWcFA3B1YgkAAgECGHNpZ25hdHVyZSBkb2VzIG5vdCBtYXRjaAMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECImV4YWN0bHkgMSBwYXltZW50IG11c3QgYmUgYXR0YWNoZWQEA3BtdAkAkQMCCAUBaQhwYXltZW50cwAABAZ3bGdBbXQIBQNwbXQGYW1vdW50AwMJAQEhAQkBCWlzRGVmaW5lZAEIBQNwbXQHYXNzZXRJZAYJAQIhPQIJAQV2YWx1ZQEIBQNwbXQHYXNzZXRJZAUKd2xnQXNzZXRJZAkAAgECFVdMR09MRCBwYXltZW50cyBvbmx5IQQFcGFydHMJALUJAgkAsAkBBQdtZXNzYWdlAgF8AwkBAiE9AgkAkAMBBQVwYXJ0cwACCQACAQIUV3JvbmcgbWVzc2FnZSBmb3JtYXQEC2R1Y2tBc3NldElkCQCRAwIFBXBhcnRzAAADCQEPY2hlY2tUb3VybmFtZW50AQULZHVja0Fzc2V0SWQJAAIBAh5wcmVwYXJlUm9iYmVyeV9jaGVja1RvdXJuYW1lbnQDCQENY2hlY2tEZWxpdmVyeQEFC2R1Y2tBc3NldElkCQACAQIccHJlcGFyZVJvYmJlcnlfY2hlY2tEZWxpdmVyeQQHcm9iQ29zdAgJAQ5nZXRSb2JiZXJ5RGF0YQIFBHRoaXMFC2R1Y2tBc3NldElkAl8xAwkAZgIFB3JvYkNvc3QFBndsZ0FtdAkAAgEJAKwCAgkArAICCQCsAgICCFBheW1lbnQgCQCkAwEFBndsZ0FtdAIMIDwgcmVxdWlyZWQgCQCkAwEFB3JvYkNvc3QECmNhbmRpZGF0ZXMJALUJAgkAkQMCBQVwYXJ0cwABAgFfBANub3cIBQlsYXN0QmxvY2sJdGltZXN0YW1wBAlkdWNrU3RhdGUJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBE2tleUR1Y2tSb2JiZXJ5U3RhdGUBBQtkdWNrQXNzZXRJZAAABApsb2NrZWRMYW5kCQELdmFsdWVPckVsc2UCCQCiCAEJARNrZXlMb2NrZWRMYW5kQnlEdWNrAQULZHVja0Fzc2V0SWQCAAQHbGFuZEVUQQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQESa2V5TGFuZENvb2xkb3duRVRBAQUKbG9ja2VkTGFuZAAAAwMJAQIhPQIFCWR1Y2tTdGF0ZQULZHVja0lkeEZyZWUJAGYCBQdsYW5kRVRBBQNub3cHCQACAQkArAICAidZb3UgYWxyZWFkeSBzdGFydGVkIHJvYmJpbmcsIHdhaXQgdGlsbCAJAKQDAQUHbGFuZEVUQQoBB2NoZWNrZXICA2FjYwtsYW5kQXNzZXRJZAQFc3RhdGUJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBE2tleUxhbmRSb2JiZXJ5U3RhdGUBBQtsYW5kQXNzZXRJZAAABAtjb29sZG93bkVUQQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQESa2V5TGFuZENvb2xkb3duRVRBAQULbGFuZEFzc2V0SWQAAAMJAGYCBQVzdGF0ZQkAkAMBBRBsYW5kUm9iQ29vbGRvd25zCQACAQINSW52YWxpZCBzdGF0ZQMJAGYCBQNub3cFC2Nvb2xkb3duRVRBBApzdGFrZWRUaW1lCQELdmFsdWVPckVsc2UCCQCfCAEJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQULbGFuZEFzc2V0SWQAAAMJAGcCAAAFCnN0YWtlZFRpbWUFA2FjYwQBYQkBBXZhbHVlAQkA7AcBCQDZBAEFC2xhbmRBc3NldElkBAFkCQC1CQIIBQFhC2Rlc2NyaXB0aW9uAgFfBAZwaWVjZXMJAQ9udW1QaWVjZXNCeVNpemUBCQCRAwIFAWQFC3JlY0xhbmRTaXplBAxwcm9kdWN0aXZpdHkJAQxhcHBseUJvbnVzZXMCBQtsYW5kQXNzZXRJZAUGcGllY2VzBAlkZWx0YVRpbWUJAGUCBQNub3cFCnN0YWtlZFRpbWUECGF2YWlsUmVzCQBrAwUJZGVsdGFUaW1lCQBoAgUMcHJvZHVjdGl2aXR5BQZwaWVjZXMFCURBWU1JTExJUwMJAGYCBQ5NSU5fUkVTX1RPX1JPQgUIYXZhaWxSZXMFA2FjYwkAzQgCBQNhY2MFC2xhbmRBc3NldElkBQNhY2MECGZpbHRlcmVkCgACJGwFCmNhbmRpZGF0ZXMKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBB2NoZWNrZXICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDEwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoDCQAAAgkAkAMBBQhmaWx0ZXJlZAAACQACAQIZTm8gY2FuZGlkYXRlcyBmb3Igcm9iYmVyeQQGcm5kSWR4CQEPZ2V0UmFuZG9tTnVtYmVyAwkAkAMBBQhmaWx0ZXJlZAUGaGVpZ2h0CQDLAQIFA3NpZwgFAWkNdHJhbnNhY3Rpb25JZAQLbGFuZEFzc2V0SWQJAJEDAgUIZmlsdGVyZWQFBnJuZElkeAkAlAoCCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIJARNrZXlMYW5kUm9iYmVyeVN0YXRlAQULbGFuZEFzc2V0SWQFDHJvYklkeExvY2tlZAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBEmtleUxhbmRDb29sZG93bkVUQQEFC2xhbmRBc3NldElkCQBkAgUDbm93CQCRAwIFEGxhbmRSb2JDb29sZG93bnMFDHJvYklkeExvY2tlZAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBE2tleUR1Y2tSb2JiZXJ5U3RhdGUBBQtkdWNrQXNzZXRJZAUQZHVja0lkeFByZXBhcmluZwkAzAgCCQELU3RyaW5nRW50cnkCCQETa2V5TG9ja2VkTGFuZEJ5RHVjawEFC2R1Y2tBc3NldElkBQtsYW5kQXNzZXRJZAUDbmlsBQ1wcm9sb2dBY3Rpb25zBQtsYW5kQXNzZXRJZAFpAQdyb2JMYW5kAgdtZXNzYWdlA3NpZwQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQEBIQEJAMQTAwUHbWVzc2FnZQUDc2lnBQNwdWIJAAIBAhhzaWduYXR1cmUgZG9lcyBub3QgbWF0Y2gECHVzZXJBZGRyCQClCAEIBQFpBmNhbGxlcgQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQh1c2VyQWRkcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAQDbm93CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAlAoCCQDNCAIFDXByb2xvZ0FjdGlvbnMJAQxJbnRlZ2VyRW50cnkCCQEYa2V5TGFzdFJvYmJlcnlUaW1lQnlEdWNrAQULZHVja0Fzc2V0SWQFA25vdwAAAWkBDmFjY2VwdERlbGl2ZXJ5AAMJAQEhAQURS1NfQUxMT1dfREVMSVZFUlkJAAIBAh9EZWxpdmVyeSBmZWF0dXJlIGlzIHR1cm5lZCBvZmYhBA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQQIdXNlckFkZHIJAKUIAQgFAWkGY2FsbGVyBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFCHVzZXJBZGRyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkBAlmdW5kVG90YWwJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPZWNvbm9teUNvbnRyYWN0BQ9kZWxpdmVyeUZ1bmRLZXkAAAQLbG9ja2VkVG90YWwJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPZWNvbm9teUNvbnRyYWN0BRFkZWxpdmVyeUxvY2tlZEtleQAAAwkAZgIFFU1JTl9VU0RUX0ZFRV9ERUxJVkVSWQkAZQIFCWZ1bmRUb3RhbAULbG9ja2VkVG90YWwJAAIBCQCsAgIJAKwCAgkArAICAiBEZWxpdmVyeSBpcyBub3QgYXZhaWxhYmxlLCBmdW5kPQkBCmZpeGVkUG9pbnQCBQlmdW5kVG90YWwABgIJLCBsb2NrZWQ9CQEKZml4ZWRQb2ludAIFC2xvY2tlZFRvdGFsAAYEA25vdwgFCWxhc3RCbG9jawl0aW1lc3RhbXAECGRlbGF5RVRBCQELdmFsdWVPckVsc2UCCQCfCAEJARZrZXlEZWxpdmVyeURlbGF5QnlEdWNrAQULZHVja0Fzc2V0SWQAAAMJAGYCBQhkZWxheUVUQQUDbm93CQACAQkArAICAipEZWxpdmVyeSBpcyBmb3JiaWRkZW4gZm9yIHlvdXIgZHVjayB1bnRpbCAJAKQDAQUIZGVsYXlFVEEDCQEPY2hlY2tUb3VybmFtZW50AQULZHVja0Fzc2V0SWQJAAIBAh5hY2NlcHREZWxpdmVyeV9jaGVja1RvdXJuYW1lbnQDCQENY2hlY2tEZWxpdmVyeQEFC2R1Y2tBc3NldElkCQACAQIcYWNjZXB0RGVsaXZlcnlfY2hlY2tEZWxpdmVyeQQObmV3TG9ja2VkVG90YWwJAQVhc0ludAEJAPwHBAUPZWNvbm9teUNvbnRyYWN0AhR1cGRhdGVEZWxpdmVyeUxvY2tlZAkAzAgCCQBkAgULbG9ja2VkVG90YWwFFU1JTl9VU0RUX0ZFRV9ERUxJVkVSWQUDbmlsBQNuaWwECWtleUhlYWx0aAkBDWtleUR1Y2tIZWFsdGgBBQtkdWNrQXNzZXRJZAQFbWF4SFAJAQltYXhIZWFsdGgBCQELdmFsdWVPckVsc2UCCQCfCAEJAQxrZXlEdWNrTGV2ZWwBBQtkdWNrQXNzZXRJZAAABAljdXJIZWFsdGgJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJa2V5SGVhbHRoBQVtYXhIUAQJY3VyTG9jS2V5CQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQEC2N1ckxvY2F0aW9uCQELdmFsdWVPckVsc2UCCQCiCAEFCWN1ckxvY0tleQUPREVGQVVMVExPQ0FUSU9OBBBkZWxpdmVyeUxvY2F0aW9uCQCsAgIJAKQDAQUDbm93AgRfRF8wCQCUCgIJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDmtleVNhdmVkSGVhbHRoAQULZHVja0Fzc2V0SWQFCWN1ckhlYWx0aAkAzAgCCQEMSW50ZWdlckVudHJ5AgUJa2V5SGVhbHRoBQVtYXhIUAkAzAgCCQELU3RyaW5nRW50cnkCCQEQa2V5U2F2ZWRMb2NhdGlvbgEFC2R1Y2tBc3NldElkBQtjdXJMb2NhdGlvbgkAzAgCCQELU3RyaW5nRW50cnkCBQljdXJMb2NLZXkFEGRlbGl2ZXJ5TG9jYXRpb24FA25pbAUNcHJvbG9nQWN0aW9ucwkAlAoCBRBkZWxpdmVyeUxvY2F0aW9uBQ5uZXdMb2NrZWRUb3RhbAAMaUWA", "height": 2791327, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: Dj5wY6S2UuhUK6rrW5AcXiVJHWY368zjfYbhsuQP1VZd Next: 3JaEF7XvsGn31zRN5KHg6FiXajhMYboYrLwHdkdsxGNE Diff:
Old | New | Differences | |
---|---|---|---|
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | let a = 86400000 | |
5 | 5 | ||
6 | - | ||
7 | - | ||
8 | - | ||
9 | - | ||
10 | - | ||
11 | - | let e = | |
12 | - | ||
13 | - | let f = | |
14 | - | ||
15 | - | let g = | |
16 | - | ||
17 | - | let h = | |
18 | - | ||
19 | - | let i = | |
20 | - | ||
21 | - | let j = | |
22 | - | ||
23 | - | let k = | |
24 | - | ||
25 | - | let l = | |
26 | - | ||
27 | - | let m = | |
28 | - | ||
29 | - | let n = | |
30 | - | ||
31 | - | let o = | |
32 | - | ||
33 | - | let p = | |
34 | - | ||
35 | - | let q = | |
36 | - | ||
37 | - | let r = | |
6 | + | let b = 60000 | |
7 | + | ||
8 | + | func c (d) = ("lastArbTimeUser_" + d) | |
9 | + | ||
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 | 38 | ||
39 | 39 | let s = 2 | |
40 | 40 | ||
41 | - | let t = | |
42 | - | ||
43 | - | let u = | |
44 | - | ||
45 | - | let v = | |
46 | - | ||
47 | - | let w = | |
48 | - | ||
49 | - | let x = | |
50 | - | ||
51 | - | let y = | |
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 | - | ||
101 | - | ||
102 | - | ||
103 | - | ||
104 | - | ||
105 | - | ||
106 | - | ||
107 | - | ||
108 | - | ||
109 | - | ||
110 | - | ||
41 | + | let t = 2 | |
42 | + | ||
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 | 111 | ||
112 | 112 | let V = 10000 | |
113 | 113 | ||
114 | - | let W = | |
115 | - | ||
116 | - | let X = | |
117 | - | ||
118 | - | let Y = | |
119 | - | ||
120 | - | let Z = | |
121 | - | ||
122 | - | let aa = | |
123 | - | ||
124 | - | let ab = | |
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 | |
125 | 125 | ||
126 | 126 | let ac = 1000000 | |
127 | 127 | ||
128 | - | let ad = | |
129 | - | ||
130 | - | ||
131 | - | ||
132 | - | ||
133 | - | ||
134 | - | ||
135 | - | ||
136 | - | ||
137 | - | ||
138 | - | ||
139 | - | | |
140 | - | ||
141 | - | ||
142 | - | ||
143 | - | ||
144 | - | ||
145 | - | let | |
146 | - | let | |
147 | - | ( | |
148 | - | | |
149 | - | | |
150 | - | | |
151 | - | ||
152 | - | ||
153 | - | ||
154 | - | ||
155 | - | ||
156 | - | let | |
157 | - | let | |
158 | - | let | |
159 | - | let | |
160 | - | let | |
161 | - | | |
162 | - | | |
163 | - | ||
164 | - | ||
165 | - | ||
166 | - | ||
167 | - | let aD = " | |
168 | - | ||
169 | - | let aE = " | |
170 | - | ||
171 | - | let aF = | |
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 = | |
128 | + | let ad = 1000000 | |
129 | + | ||
130 | + | let ae = 10000 | |
131 | + | ||
132 | + | func af (ag) = fraction(f, pow(ag, 4, g, 4, 4, DOWN), e) | |
133 | + | ||
134 | + | ||
135 | + | func ah (ai) = (100 + ai) | |
136 | + | ||
137 | + | ||
138 | + | func aj (ak,al) = { | |
139 | + | let am = af(al) | |
140 | + | [am, (h * (am - ak))] | |
141 | + | } | |
142 | + | ||
143 | + | ||
144 | + | func an (ao,B,ap,aq) = { | |
145 | + | let ar = split(valueOrElse(getString(ao, C(B)), "0_0_0_0_0"), "_") | |
146 | + | let as = valueOrElse(getInteger(ao, E(B)), 0) | |
147 | + | let at = valueOrElse(getInteger(ao, A(B)), ah(as)) | |
148 | + | let au = split(valueOrElse(getString(ao, M(B)), "0_0_0_0_0"), "_") | |
149 | + | ([parseIntValue(ar[l]), parseIntValue(ar[m]), parseIntValue(ar[n]), parseIntValue(ar[o]), parseIntValue(ar[p]), as, at] ++ (if (aq) | |
150 | + | then [ap, ap, ap, ap, ap] | |
151 | + | else [parseIntValue(au[l]), parseIntValue(au[m]), parseIntValue(au[n]), parseIntValue(au[o]), parseIntValue(au[p])])) | |
152 | + | } | |
153 | + | ||
154 | + | ||
155 | + | func av (ao,B) = { | |
156 | + | let aw = valueOrElse(getInteger(ao, O(B)), 0) | |
157 | + | let ax = valueOrElse(getInteger(ao, N(B)), 0) | |
158 | + | let ay = lastBlock.timestamp | |
159 | + | let az = max([i, (aw - (j * (ay - ax)))]) | |
160 | + | let aA = valueOrElse(getInteger(ao, S(B)), 0) | |
161 | + | let aB = valueOrElse(getString(ao, T(B)), "") | |
162 | + | let aC = valueOrElse(getInteger(ao, R(aB)), 0) | |
163 | + | $Tuple5(az, ax, aA, aB, aC) | |
164 | + | } | |
165 | + | ||
166 | + | ||
167 | + | let aD = "LAND" | |
168 | + | ||
169 | + | let aE = "DUCK" | |
170 | + | ||
171 | + | let aF = "PRESALE" | |
172 | + | ||
173 | + | let aG = 6 | |
174 | + | ||
175 | + | let aH = 25 | |
176 | + | ||
177 | + | let aI = 3456000 | |
178 | + | ||
179 | + | let aJ = 10000000000 | |
180 | + | ||
181 | + | let aK = "Africa_F_Africa" | |
182 | + | ||
183 | + | let aL = 39637 | |
184 | + | ||
185 | + | let aM = 10 | |
186 | + | ||
187 | + | let aN = 50000 | |
188 | + | ||
189 | + | let aO = 600000 | |
190 | + | ||
191 | + | let aP = ["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"] | |
192 | + | ||
193 | + | let aQ = ["Americas", "Europe", "Asia", "Africa", "Oceania"] | |
194 | + | ||
195 | + | let aR = 10000000 | |
196 | + | ||
197 | + | let aS = [15, 16, 17, 18, 19, 20] | |
198 | + | ||
199 | + | let aT = ["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_"] | |
200 | + | ||
201 | + | let aU = 6 | |
202 | + | ||
203 | + | let aV = 8 | |
204 | + | ||
205 | + | let aW = 9 | |
206 | 206 | ||
207 | 207 | let aX = 10 | |
208 | 208 | ||
209 | - | let aY = 0 | |
210 | - | ||
211 | - | let aZ = 1 | |
212 | - | ||
213 | - | let ba = 2 | |
214 | - | ||
215 | - | let bb = 3 | |
216 | - | ||
217 | - | let bc = 4 | |
218 | - | ||
219 | - | let bd = 0 | |
220 | - | ||
221 | - | let be = 1 | |
222 | - | ||
223 | - | let bf = 2 | |
224 | - | ||
225 | - | let bg = 3 | |
226 | - | ||
227 | - | let bh = 0 | |
228 | - | ||
229 | - | let bi = 1 | |
230 | - | ||
231 | - | let bj = 2 | |
232 | - | ||
233 | - | let bk = 3 | |
234 | - | ||
235 | - | let bl = 0 | |
236 | - | ||
237 | - | let bm = 1 | |
238 | - | ||
239 | - | let bn = 2 | |
240 | - | ||
241 | - | func bo (bp) = ("no_" + bp) | |
242 | - | ||
243 | - | ||
244 | - | func bq (bp) = ("lcna_" + bp) | |
245 | - | ||
246 | - | ||
247 | - | func br (bp) = ("st_" + bp) | |
248 | - | ||
249 | - | ||
250 | - | func bs (bt,bp) = makeString(["las", bt, bp], "_") | |
251 | - | ||
252 | - | ||
253 | - | func bu (bv,bp,bw) = ((((("sttao_" + bv) + "_") + bp) + "_") + bw) | |
254 | - | ||
255 | - | ||
256 | - | func bx (P) = ("wh_" + P) | |
257 | - | ||
258 | - | ||
259 | - | func by (bp) = ("infraLevel_" + bp) | |
260 | - | ||
261 | - | ||
262 | - | func bz (P) = ("fortifications_" + P) | |
263 | - | ||
264 | - | ||
265 | - | func bA (bp) = ("duckCustomNameByAssetId_" + bp) | |
266 | - | ||
267 | - | ||
268 | - | func bB (c) = ("accountCustomNameByAddr_" + c) | |
269 | - | ||
270 | - | ||
271 | - | func bC (c) = ("accRefBy_" + c) | |
272 | - | ||
273 | - | ||
274 | - | func bD (A) = ("onboardArtActivatedOnDuck_" + A) | |
275 | - | ||
276 | - | ||
277 | - | func bE (c) = ("onboardArtActivatedDuckBy_" + c) | |
278 | - | ||
279 | - | ||
280 | - | func bF (c) = ("accReferrals_" + c) | |
281 | - | ||
282 | - | ||
283 | - | func bG (bp) = ("duckOwner_" + bp) | |
284 | - | ||
285 | - | ||
286 | - | func bH (bw) = ("stakedDuckByOwner_" + bw) | |
287 | - | ||
288 | - | ||
289 | - | func bI (A) = ("backPack_" + A) | |
290 | - | ||
291 | - | ||
292 | - | func bJ (A) = ("duckLocation_" + A) | |
293 | - | ||
294 | - | ||
295 | - | func bK (bL) = ("%s%s__userGwlReleaseTime__" + bL) | |
296 | - | ||
297 | - | ||
298 | - | func bM () = "emergencyWarehouseProducts" | |
299 | - | ||
300 | - | ||
301 | - | let bN = "deliveryFund" | |
302 | - | ||
303 | - | let bO = "deliveryLocked" | |
304 | - | ||
305 | - | let bP = "%s__lastTourId" | |
306 | - | ||
307 | - | func bQ (bR) = ("%s%d__tourStaticData__" + toString(bR)) | |
308 | - | ||
309 | - | ||
310 | - | func bS (bR) = ("%s%d__tourDynamicData__" + toString(bR)) | |
311 | - | ||
312 | - | ||
313 | - | func bT (bR,A) = makeString(["%s%d%s__bestResultByTourAndDuck", toString(bR), A], "__") | |
314 | - | ||
315 | - | ||
316 | - | let bU = 0 | |
317 | - | ||
318 | - | let bV = 1 | |
319 | - | ||
320 | - | let bW = 6 | |
321 | - | ||
322 | - | let bX = 1 | |
323 | - | ||
324 | - | func bY (bZ,bR) = { | |
325 | - | let ca = split(valueOrErrorMessage(getString(bZ, bQ(bR)), (("Error reading tournament " + toString(bR)) + " data")), "__") | |
326 | - | let cb = split_4C(valueOrErrorMessage(getString(bZ, bS(bR)), (("Error reading tournament " + toString(bR)) + " data")), "__") | |
327 | - | [ca, cb] | |
328 | - | } | |
329 | - | ||
330 | - | ||
331 | - | func cc (bZ,cd) = { | |
332 | - | let ce = valueOrElse(getInteger(bZ, bP), 0) | |
333 | - | let cf = split(cd, "_") | |
334 | - | let ax = lastBlock.timestamp | |
335 | - | let cg = bY(bZ, ce) | |
336 | - | let ca = cg[bU] | |
337 | - | let cb = cg[bV] | |
338 | - | if (if (if ((cf[bm] == "T")) | |
339 | - | then (parseIntValue(cf[bl]) == ce) | |
209 | + | let aY = 10 | |
210 | + | ||
211 | + | let aZ = 0 | |
212 | + | ||
213 | + | let ba = 1 | |
214 | + | ||
215 | + | let bb = 2 | |
216 | + | ||
217 | + | let bc = 3 | |
218 | + | ||
219 | + | let bd = 4 | |
220 | + | ||
221 | + | let be = 0 | |
222 | + | ||
223 | + | let bf = 1 | |
224 | + | ||
225 | + | let bg = 2 | |
226 | + | ||
227 | + | let bh = 3 | |
228 | + | ||
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) | |
340 | 342 | else false) | |
341 | - | then ( | |
343 | + | then (cc[bY] == "INPROGRESS") | |
342 | 344 | else false) | |
343 | - | then (parseIntValue( | |
345 | + | then (parseIntValue(cb[bX]) > ay) | |
344 | 346 | else false | |
345 | 347 | } | |
346 | 348 | ||
347 | 349 | ||
348 | - | func | |
349 | - | let | |
350 | - | let | |
351 | - | let | |
352 | - | let | |
353 | - | if (if (( | |
354 | - | then ( | |
350 | + | func ci (ce) = { | |
351 | + | let cg = split(ce, "_") | |
352 | + | let ay = lastBlock.timestamp | |
353 | + | let cj = parseIntValue(cg[bm]) | |
354 | + | let ck = parseIntValue(cg[bo]) | |
355 | + | if (if ((cg[bn] == "D")) | |
356 | + | then (ay > (cj + aO)) | |
355 | 357 | else false) | |
356 | - | then (3 >= | |
358 | + | then (3 >= ck) | |
357 | 359 | else false | |
358 | 360 | } | |
359 | 361 | ||
360 | 362 | ||
361 | - | func | |
362 | - | let | |
363 | - | if (( | |
364 | - | then ( | |
363 | + | func cl (ce) = { | |
364 | + | let cm = split(ce, "_")[bn] | |
365 | + | if ((cm != "T")) | |
366 | + | then (cm != "D") | |
365 | 367 | else false | |
366 | 368 | } | |
367 | 369 | ||
368 | 370 | ||
369 | - | func | |
370 | - | let | |
371 | - | let | |
372 | - | let | |
373 | - | let | |
374 | - | let | |
375 | - | let | |
376 | - | let | |
377 | - | if (( | |
371 | + | func cn (ca,ce) = { | |
372 | + | let cf = valueOrElse(getInteger(ca, bQ), 0) | |
373 | + | let cg = split(ce, "_") | |
374 | + | let ay = lastBlock.timestamp | |
375 | + | let ch = bZ(ca, cf) | |
376 | + | let cb = ch[bV] | |
377 | + | let cc = ch[bW] | |
378 | + | let cm = cg[bn] | |
379 | + | if ((cm == "D")) | |
378 | 380 | then true | |
379 | - | else if (if (if (( | |
380 | - | then (parseIntValue( | |
381 | + | else if (if (if ((cg[bn] == "T")) | |
382 | + | then (parseIntValue(cg[bm]) == cf) | |
381 | 383 | else false) | |
382 | - | then ( | |
384 | + | then (cc[bY] == "INPROGRESS") | |
383 | 385 | else false) | |
384 | - | then (parseIntValue( | |
386 | + | then (parseIntValue(cb[bX]) > ay) | |
385 | 387 | else false | |
386 | 388 | } | |
387 | 389 | ||
388 | 390 | ||
389 | - | func cn (co) = (parseIntValue(co[aT]) * aQ) | |
390 | - | ||
391 | - | ||
392 | - | func cp (cq,cr,cs) = throw(((((("Cheat attempt: oldLoc=" + cq) + ", newLoc=") + cr) + ", case=") + toString(cs))) | |
393 | - | ||
394 | - | ||
395 | - | let ct = false | |
391 | + | func co (cp) = (parseIntValue(cp[aU]) * aR) | |
392 | + | ||
393 | + | ||
394 | + | func cq (cr,cs,ct) = throw(((((("Cheat attempt: oldLoc=" + cr) + ", newLoc=") + cs) + ", case=") + toString(ct))) | |
395 | + | ||
396 | 396 | ||
397 | 397 | let cu = false | |
398 | 398 | ||
399 | - | let cv = true | |
400 | - | ||
401 | - | let cw = take(drop(this.bytes, 1), 1) | |
402 | - | ||
403 | - | let cx = { | |
404 | - | let cy = cw | |
405 | - | if ((base58'2W' == cy)) | |
399 | + | let cv = false | |
400 | + | ||
401 | + | let cw = true | |
402 | + | ||
403 | + | let cx = take(drop(this.bytes, 1), 1) | |
404 | + | ||
405 | + | let cy = { | |
406 | + | let cz = cx | |
407 | + | if ((base58'2W' == cz)) | |
406 | 408 | then base58'9wc3LXNA4TEBsXyKtoLE9mrbDD7WMHXvXrCjZvabLAsi' | |
407 | - | else if ((base58'2T' == | |
409 | + | else if ((base58'2T' == cz)) | |
408 | 410 | then base58'6mWwf9mZBjVgkC54idpyaZLQfAosD914wT8fGf2iiY63' | |
409 | 411 | else throw("Unknown chain") | |
410 | 412 | } | |
411 | 413 | ||
412 | - | let | |
413 | - | let | |
414 | - | if ((base58'2W' == | |
414 | + | let cA = { | |
415 | + | let cz = cx | |
416 | + | if ((base58'2W' == cz)) | |
415 | 417 | then "3PQCuvFbvh4LkPUnrnU1z3jnbA1p9m3WNhv" | |
416 | - | else if ((base58'2T' == | |
418 | + | else if ((base58'2T' == cz)) | |
417 | 419 | then "3MumkGGztCKAXpWDqxkddofqXSUbqQkvSJy" | |
418 | 420 | else throw("Unknown chain") | |
419 | 421 | } | |
420 | 422 | ||
421 | - | let | |
422 | - | let | |
423 | - | if ((base58'2W' == | |
423 | + | let cB = { | |
424 | + | let cz = cx | |
425 | + | if ((base58'2W' == cz)) | |
424 | 426 | then 10000000000 | |
425 | - | else if ((base58'2T' == | |
427 | + | else if ((base58'2T' == cz)) | |
426 | 428 | then 100000000 | |
427 | 429 | else throw("Unknown chain") | |
428 | 430 | } | |
429 | 431 | ||
430 | - | let | |
431 | - | let | |
432 | - | if ((base58'2W' == | |
432 | + | let cC = { | |
433 | + | let cz = cx | |
434 | + | if ((base58'2W' == cz)) | |
433 | 435 | then 86400000 | |
434 | - | else if ((base58'2T' == | |
436 | + | else if ((base58'2T' == cz)) | |
435 | 437 | then 60000 | |
436 | 438 | else throw("Unknown chain") | |
437 | 439 | } | |
438 | 440 | ||
439 | - | let | |
440 | - | ||
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 | - | func | |
458 | - | ||
459 | - | ||
460 | - | let | |
461 | - | ||
462 | - | let | |
463 | - | ||
464 | - | let | |
465 | - | ||
466 | - | let | |
467 | - | ||
468 | - | let | |
469 | - | ||
470 | - | let | |
471 | - | ||
472 | - | func | |
473 | - | ||
474 | - | ||
475 | - | func | |
476 | - | ||
477 | - | ||
478 | - | func | |
479 | - | ||
480 | - | ||
481 | - | func | |
482 | - | ||
483 | - | ||
484 | - | let | |
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 | - | func | |
519 | - | ||
520 | - | ||
521 | - | func | |
522 | - | ||
523 | - | ||
524 | - | func | |
525 | - | ||
526 | - | ||
527 | - | func | |
528 | - | ||
529 | - | ||
530 | - | func | |
531 | - | ||
532 | - | ||
533 | - | func | |
534 | - | let | |
535 | - | if ($isInstanceOf( | |
441 | + | let cD = "__" | |
442 | + | ||
443 | + | let cE = 1000000 | |
444 | + | ||
445 | + | let cF = 100000000 | |
446 | + | ||
447 | + | let cG = 25 | |
448 | + | ||
449 | + | let cH = 100 | |
450 | + | ||
451 | + | let cI = 225 | |
452 | + | ||
453 | + | let cJ = 400 | |
454 | + | ||
455 | + | let cK = 625 | |
456 | + | ||
457 | + | let cL = [0, 1, 2, 3, 4, 5] | |
458 | + | ||
459 | + | func cM (cN,cO) = valueOrErrorMessage(getString(cN, cO), makeString(["mandatory ", toString(cN), ".", cO, " is not defined"], "")) | |
460 | + | ||
461 | + | ||
462 | + | let cP = 1 | |
463 | + | ||
464 | + | let cQ = 2 | |
465 | + | ||
466 | + | let cR = 3 | |
467 | + | ||
468 | + | let cS = 4 | |
469 | + | ||
470 | + | let cT = 7 | |
471 | + | ||
472 | + | let cU = 8 | |
473 | + | ||
474 | + | func cV () = "%s__restConfig" | |
475 | + | ||
476 | + | ||
477 | + | func cW () = "%s__restAddr" | |
478 | + | ||
479 | + | ||
480 | + | func cX (cY) = split_4C(cM(cY, cV()), cD) | |
481 | + | ||
482 | + | ||
483 | + | func cZ (da,db) = valueOrErrorMessage(addressFromString(da[db]), ("Rest cfg doesn't contain address at index " + toString(db))) | |
484 | + | ||
485 | + | ||
486 | + | let dc = addressFromStringValue(valueOrElse(getString(this, cW()), cA)) | |
487 | + | ||
488 | + | let da = cX(dc) | |
489 | + | ||
490 | + | let ao = cZ(da, cP) | |
491 | + | ||
492 | + | let dd = cZ(da, cQ) | |
493 | + | ||
494 | + | let de = cZ(da, cR) | |
495 | + | ||
496 | + | let df = cZ(da, cS) | |
497 | + | ||
498 | + | let dg = cZ(da, cT) | |
499 | + | ||
500 | + | let dh = cZ(da, cU) | |
501 | + | ||
502 | + | let di = 0 | |
503 | + | ||
504 | + | let dj = 1 | |
505 | + | ||
506 | + | let dk = 2 | |
507 | + | ||
508 | + | let dl = 3 | |
509 | + | ||
510 | + | let dm = "wlg_assetId" | |
511 | + | ||
512 | + | let dn = valueOrErrorMessage(getBinary(df, dm), "WLGOLD is not issued yet") | |
513 | + | ||
514 | + | let do = "acresAssetId" | |
515 | + | ||
516 | + | let dp = valueOrErrorMessage(getBinary(dh, do), "ACRES is not issued yet") | |
517 | + | ||
518 | + | let dq = 2 | |
519 | + | ||
520 | + | func dr (cN) = ("finishBlockForAddr_" + cN) | |
521 | + | ||
522 | + | ||
523 | + | func ds () = "resTypesProportions" | |
524 | + | ||
525 | + | ||
526 | + | func dt (du) = ("resTypesByContinent_" + du) | |
527 | + | ||
528 | + | ||
529 | + | func dv (bx) = ("stakedLandsByOwner_" + bx) | |
530 | + | ||
531 | + | ||
532 | + | func dw (bx) = ("stakedPiecesByOwner_" + bx) | |
533 | + | ||
534 | + | ||
535 | + | func dx (dy) = { | |
536 | + | let cz = dy | |
537 | + | if ($isInstanceOf(cz, "String")) | |
536 | 538 | then { | |
537 | - | let | |
538 | - | | |
539 | + | let dz = cz | |
540 | + | dz | |
539 | 541 | } | |
540 | 542 | else throw("fail to cast into String") | |
541 | 543 | } | |
542 | 544 | ||
543 | 545 | ||
544 | - | func | |
545 | - | let | |
546 | - | if ($isInstanceOf( | |
546 | + | func dA (dy) = { | |
547 | + | let cz = dy | |
548 | + | if ($isInstanceOf(cz, "Int")) | |
547 | 549 | then { | |
548 | - | let | |
549 | - | | |
550 | + | let dB = cz | |
551 | + | dB | |
550 | 552 | } | |
551 | 553 | else throw("fail to cast into Int") | |
552 | 554 | } | |
553 | 555 | ||
554 | 556 | ||
555 | - | func | |
556 | - | let | |
557 | - | if ($isInstanceOf( | |
557 | + | func dC (dy) = { | |
558 | + | let cz = dy | |
559 | + | if ($isInstanceOf(cz, "List[Any]")) | |
558 | 560 | then { | |
559 | - | let | |
560 | - | | |
561 | + | let dD = cz | |
562 | + | dD | |
561 | 563 | } | |
562 | 564 | else throw("fail to cast into List[Any]") | |
563 | 565 | } | |
564 | 566 | ||
565 | 567 | ||
566 | - | func | |
567 | - | let | |
568 | - | if ($isInstanceOf( | |
568 | + | func dE (dy) = { | |
569 | + | let cz = dy | |
570 | + | if ($isInstanceOf(cz, "Boolean")) | |
569 | 571 | then { | |
570 | - | let | |
571 | - | | |
572 | + | let dz = cz | |
573 | + | dz | |
572 | 574 | } | |
573 | 575 | else throw("fail to cast into Boolean") | |
574 | 576 | } | |
575 | 577 | ||
576 | 578 | ||
577 | - | func | |
578 | - | let | |
579 | - | if ($isInstanceOf( | |
579 | + | func dF (dG) = { | |
580 | + | let cz = dG | |
581 | + | if ($isInstanceOf(cz, "(String, Int)")) | |
580 | 582 | then { | |
581 | - | let | |
582 | - | | |
583 | + | let dH = cz | |
584 | + | dH | |
583 | 585 | } | |
584 | 586 | else throw("fail to cast into (String, Int)") | |
585 | 587 | } | |
586 | 588 | ||
587 | 589 | ||
588 | - | func | |
589 | - | let | |
590 | - | if (("S" == | |
591 | - | then | |
592 | - | else if (("M" == | |
593 | - | then | |
594 | - | else if (("L" == | |
595 | - | then | |
596 | - | else if (("XL" == | |
597 | - | then | |
598 | - | else if (("XXL" == | |
599 | - | then | |
590 | + | func dI (dJ) = { | |
591 | + | let cz = dJ | |
592 | + | if (("S" == cz)) | |
593 | + | then cG | |
594 | + | else if (("M" == cz)) | |
595 | + | then cH | |
596 | + | else if (("L" == cz)) | |
597 | + | then cI | |
598 | + | else if (("XL" == cz)) | |
599 | + | then cJ | |
600 | + | else if (("XXL" == cz)) | |
601 | + | then cK | |
600 | 602 | else throw("Unknown land size") | |
601 | 603 | } | |
602 | 604 | ||
603 | 605 | ||
604 | - | func | |
605 | - | ||
606 | - | ||
607 | - | func | |
608 | - | ||
609 | - | ||
610 | - | func | |
611 | - | ||
612 | - | ||
613 | - | func | |
614 | - | let | |
615 | - | let | |
616 | - | let | |
617 | - | (((toString(( | |
618 | - | } | |
619 | - | ||
620 | - | ||
621 | - | func | |
622 | - | let | |
623 | - | let | |
624 | - | (toInt( | |
625 | - | } | |
626 | - | ||
627 | - | ||
628 | - | let | |
629 | - | let | |
630 | - | if ((base58'2W' == | |
606 | + | func dK (dz) = isDefined(parseInt(dz)) | |
607 | + | ||
608 | + | ||
609 | + | func dL () = "contractsBlocked" | |
610 | + | ||
611 | + | ||
612 | + | func dM (d) = ("lastTxIdByUser_" + d) | |
613 | + | ||
614 | + | ||
615 | + | func dN (dG,dO) = { | |
616 | + | let dP = pow(10, 0, dO, 0, 0, DOWN) | |
617 | + | let dQ = toString((dG % dP)) | |
618 | + | let dR = drop(toString(dP), (1 + size(dQ))) | |
619 | + | (((toString((dG / dP)) + ".") + dR) + dQ) | |
620 | + | } | |
621 | + | ||
622 | + | ||
623 | + | func dS (dT,dU,dV) = { | |
624 | + | let dW = value(blockInfoByHeight(dU)) | |
625 | + | let dX = sha256((value(dW.vrf) + dV)) | |
626 | + | (toInt(dX) % dT) | |
627 | + | } | |
628 | + | ||
629 | + | ||
630 | + | let dY = { | |
631 | + | let cz = cx | |
632 | + | if ((base58'2W' == cz)) | |
631 | 633 | then addressFromStringValue("3PEktVux2RhchSN63DsDo4b4mz4QqzKSeDv") | |
632 | - | else if ((base58'2T' == | |
634 | + | else if ((base58'2T' == cz)) | |
633 | 635 | then this | |
634 | 636 | else throw("Unknown chain") | |
635 | 637 | } | |
636 | 638 | ||
637 | - | let | |
638 | - | let | |
639 | - | if ((base58'2W' == | |
639 | + | let dZ = { | |
640 | + | let cz = cx | |
641 | + | if ((base58'2W' == cz)) | |
640 | 642 | then addressFromStringValue("3PDVuU45H7Eh5dmtNbnRNRStGwULA7NY6Hb") | |
641 | - | else if ((base58'2T' == | |
643 | + | else if ((base58'2T' == cz)) | |
642 | 644 | then this | |
643 | 645 | else throw("Unknown chain") | |
644 | 646 | } | |
645 | 647 | ||
646 | - | let | |
647 | - | let | |
648 | - | if ((base58'2W' == | |
649 | - | then if ( | |
648 | + | let ea = { | |
649 | + | let cz = cx | |
650 | + | if ((base58'2W' == cz)) | |
651 | + | then if (cu) | |
650 | 652 | then base58'CWsMtTZC5BjjoL4Q1ayW4Wwb1ehGACQB6DrKyPgotKfm' | |
651 | 653 | else base58'6LfPuKJjLgekmncBhMg2LZyMTNVzZBccXR28ySXm9uXD' | |
652 | - | else if ((base58'2T' == | |
654 | + | else if ((base58'2T' == cz)) | |
653 | 655 | then base58'6LfPuKJjLgekmncBhMg2LZyMTNVzZBccXR28ySXm9uXD' | |
654 | 656 | else throw("Unknown chain") | |
655 | 657 | } | |
656 | 658 | ||
657 | - | let | |
658 | - | ||
659 | - | let | |
660 | - | ||
661 | - | let | |
662 | - | ||
663 | - | let | |
664 | - | ||
665 | - | let | |
666 | - | ||
667 | - | let | |
668 | - | let | |
669 | - | if ((base58'2W' == | |
659 | + | let eb = base64'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==' | |
660 | + | ||
661 | + | let ec = 300000 | |
662 | + | ||
663 | + | let ed = 5000000 | |
664 | + | ||
665 | + | let ee = 50 | |
666 | + | ||
667 | + | let ef = 10000000 | |
668 | + | ||
669 | + | let eg = { | |
670 | + | let cz = cx | |
671 | + | if ((base58'2W' == cz)) | |
670 | 672 | then 252289527462 | |
671 | - | else if ((base58'2T' == | |
673 | + | else if ((base58'2T' == cz)) | |
672 | 674 | then 2522895274 | |
673 | 675 | else throw("Unknown chain") | |
674 | 676 | } | |
675 | 677 | ||
676 | - | let | |
677 | - | let | |
678 | - | if ((base58'2W' == | |
678 | + | let eh = { | |
679 | + | let cz = cx | |
680 | + | if ((base58'2W' == cz)) | |
679 | 681 | then 250000000 | |
680 | - | else if ((base58'2T' == | |
682 | + | else if ((base58'2T' == cz)) | |
681 | 683 | then 250000000 | |
682 | 684 | else throw("Unknown chain") | |
683 | 685 | } | |
684 | 686 | ||
685 | - | let | |
686 | - | ||
687 | - | let | |
688 | - | ||
689 | - | let | |
690 | - | ||
691 | - | let | |
692 | - | ||
693 | - | let | |
694 | - | ||
695 | - | let | |
696 | - | ||
697 | - | let | |
698 | - | ||
699 | - | let | |
700 | - | ||
701 | - | func | |
702 | - | ||
703 | - | ||
704 | - | func | |
705 | - | ||
706 | - | ||
707 | - | func | |
708 | - | ||
709 | - | ||
710 | - | func | |
711 | - | ||
712 | - | ||
713 | - | func | |
714 | - | ||
715 | - | ||
716 | - | func | |
717 | - | ||
718 | - | ||
719 | - | func | |
720 | - | ||
721 | - | ||
722 | - | func | |
723 | - | ||
724 | - | ||
725 | - | let | |
726 | - | ||
727 | - | let | |
728 | - | ||
729 | - | let | |
730 | - | ||
731 | - | let | |
732 | - | ||
733 | - | let | |
734 | - | ||
735 | - | let | |
736 | - | ||
737 | - | let | |
738 | - | ||
739 | - | func | |
740 | - | ||
741 | - | ||
742 | - | func | |
743 | - | let | |
744 | - | then ((( | |
745 | - | else -((((-( | |
746 | - | ( | |
747 | - | } | |
748 | - | ||
749 | - | ||
750 | - | func | |
751 | - | let | |
752 | - | if ((0 >= | |
687 | + | let ei = 2500000000 | |
688 | + | ||
689 | + | let ej = toBigInt(5) | |
690 | + | ||
691 | + | let ek = toBigInt(20) | |
692 | + | ||
693 | + | let el = toBigInt((20 * 20)) | |
694 | + | ||
695 | + | let em = toBigInt(((20 * 20) * 20)) | |
696 | + | ||
697 | + | let en = toBigInt((((20 * 20) * 20) * 20)) | |
698 | + | ||
699 | + | let eo = toBigInt(((((20 * 20) * 20) * 20) * 20)) | |
700 | + | ||
701 | + | let ep = 500 | |
702 | + | ||
703 | + | func eq () = "nextLandNum" | |
704 | + | ||
705 | + | ||
706 | + | func er (es) = ("lcn_" + es) | |
707 | + | ||
708 | + | ||
709 | + | func et (eu) = ("la_" + eu) | |
710 | + | ||
711 | + | ||
712 | + | func ev (bq,bx) = ((("ilao_" + bq) + "_") + bx) | |
713 | + | ||
714 | + | ||
715 | + | func ew (eu) = ("lo_" + eu) | |
716 | + | ||
717 | + | ||
718 | + | func ex (es) = ("duckByCustomName_" + es) | |
719 | + | ||
720 | + | ||
721 | + | func ey (es) = ("accountByCustomName_" + es) | |
722 | + | ||
723 | + | ||
724 | + | func ez () = "oldiesList" | |
725 | + | ||
726 | + | ||
727 | + | let eA = 0 | |
728 | + | ||
729 | + | let eB = 1 | |
730 | + | ||
731 | + | let eC = 2 | |
732 | + | ||
733 | + | let eD = 0 | |
734 | + | ||
735 | + | let eE = 5 | |
736 | + | ||
737 | + | let eF = 6 | |
738 | + | ||
739 | + | let eG = 7 | |
740 | + | ||
741 | + | func eH (eu,dJ) = ((aD + eu) + dJ) | |
742 | + | ||
743 | + | ||
744 | + | func eI (eJ,eK) = { | |
745 | + | let eL = if ((eJ >= 0)) | |
746 | + | then (((eJ + eK) - 1) / eK) | |
747 | + | else -((((-(eJ) + eK) - 1) / eK)) | |
748 | + | (eL * cF) | |
749 | + | } | |
750 | + | ||
751 | + | ||
752 | + | func eM (eN,eO) = { | |
753 | + | let eP = (((((eO[0] + eO[1]) + eO[2]) + eO[3]) + eO[4]) + eO[5]) | |
754 | + | if ((0 >= eP)) | |
753 | 755 | then throw("Zero weights sum") | |
754 | 756 | else { | |
755 | - | let | |
756 | - | func | |
757 | - | ||
758 | - | let | |
759 | - | let | |
760 | - | let | |
761 | - | func | |
762 | - | then | |
763 | - | else | |
764 | - | ||
765 | - | func | |
766 | - | then | |
757 | + | let eQ = fraction(eN, cE, eP) | |
758 | + | func eR (eS,eT) = (eS :+ fraction(eT, eQ, cE)) | |
759 | + | ||
760 | + | let eU = eO | |
761 | + | let eV = size(eU) | |
762 | + | let eW = nil | |
763 | + | func eX (eY,eZ) = if ((eZ >= eV)) | |
764 | + | then eY | |
765 | + | else eR(eY, eU[eZ]) | |
766 | + | ||
767 | + | func fa (eY,eZ) = if ((eZ >= eV)) | |
768 | + | then eY | |
767 | 769 | else throw("List size exceeds 6") | |
768 | 770 | ||
769 | - | | |
770 | - | } | |
771 | - | } | |
772 | - | ||
773 | - | ||
774 | - | func | |
775 | - | let | |
776 | - | if ((size( | |
771 | + | fa(eX(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5), 6) | |
772 | + | } | |
773 | + | } | |
774 | + | ||
775 | + | ||
776 | + | func fb (eN) = { | |
777 | + | let fc = split(value(getString(ds())), "_") | |
778 | + | if ((size(fc) != aG)) | |
777 | 779 | then throw("Wrong proportions data") | |
778 | 780 | else { | |
779 | - | let | |
780 | - | | |
781 | - | } | |
782 | - | } | |
783 | - | ||
784 | - | ||
785 | - | func | |
786 | - | let | |
787 | - | func | |
788 | - | let | |
789 | - | if ((0 > | |
790 | - | then throw(((((("Not enough material idx=" + toString( | |
791 | - | else ( | |
781 | + | let fd = [parseIntValue(fc[0]), parseIntValue(fc[1]), parseIntValue(fc[2]), parseIntValue(fc[3]), parseIntValue(fc[4]), parseIntValue(fc[5])] | |
782 | + | eM(eN, fd) | |
783 | + | } | |
784 | + | } | |
785 | + | ||
786 | + | ||
787 | + | func fe (ff,fg,fh) = { | |
788 | + | let fi = fb(fh) | |
789 | + | func fj (eS,db) = { | |
790 | + | let fk = (parseIntValue(fg[db]) - fi[db]) | |
791 | + | if ((0 > fk)) | |
792 | + | then throw(((((("Not enough material idx=" + toString(db)) + ", you have ") + fg[db]) + ", but need ") + toString(fi[db]))) | |
793 | + | else (eS :+ toString(fk)) | |
792 | 794 | } | |
793 | 795 | ||
794 | - | if ( | |
796 | + | if (ff) | |
795 | 797 | then { | |
796 | - | let | |
797 | - | let | |
798 | - | let | |
799 | - | func | |
800 | - | then | |
801 | - | else | |
802 | - | ||
803 | - | func | |
804 | - | then | |
798 | + | let eU = cL | |
799 | + | let eV = size(eU) | |
800 | + | let eW = nil | |
801 | + | func eX (eY,eZ) = if ((eZ >= eV)) | |
802 | + | then eY | |
803 | + | else fj(eY, eU[eZ]) | |
804 | + | ||
805 | + | func fa (eY,eZ) = if ((eZ >= eV)) | |
806 | + | then eY | |
805 | 807 | else throw("List size exceeds 6") | |
806 | 808 | ||
807 | - | | |
808 | - | } | |
809 | - | else | |
810 | - | } | |
811 | - | ||
812 | - | ||
813 | - | func | |
814 | - | then $Tuple2( | |
809 | + | fa(eX(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5), 6) | |
810 | + | } | |
811 | + | else fg | |
812 | + | } | |
813 | + | ||
814 | + | ||
815 | + | func fl (fm,fn) = if ((fn == "")) | |
816 | + | then $Tuple2(fm, false) | |
815 | 817 | else { | |
816 | - | func | |
817 | - | let | |
818 | - | if ((size( | |
818 | + | func fo (eS,fp) = { | |
819 | + | let fq = split(fp, ",") | |
820 | + | if ((size(fq) != 2)) | |
819 | 821 | then throw("Incorrect format, should be index,amount") | |
820 | 822 | else { | |
821 | - | let | |
822 | - | if (if ((0 > | |
823 | + | let db = parseIntValue(fq[0]) | |
824 | + | if (if ((0 > db)) | |
823 | 825 | then true | |
824 | - | else ( | |
826 | + | else (db >= size(aT))) | |
825 | 827 | then throw("Unknown product idx") | |
826 | 828 | else { | |
827 | - | let | |
828 | - | let | |
829 | - | if ((size( | |
830 | - | then throw((("You don't have " + | |
829 | + | let fr = parseIntValue(fq[1]) | |
830 | + | let fs = split(eS._1, (fq[0] + ":")) | |
831 | + | if ((size(fs) != 2)) | |
832 | + | then throw((("You don't have " + aP[db]) + " equipped")) | |
831 | 833 | else { | |
832 | - | let | |
833 | - | let | |
834 | + | let ft = fs[1] | |
835 | + | let fu = if (dK(take(drop(ft, 1), 1))) | |
834 | 836 | then 2 | |
835 | 837 | else 1 | |
836 | - | let | |
837 | - | let | |
838 | - | let | |
839 | - | then ( | |
840 | - | else throw(((((("You equipped " + toString( | |
841 | - | $Tuple2((((( | |
838 | + | let fv = parseIntValue(take(ft, fu)) | |
839 | + | let fw = drop(ft, fu) | |
840 | + | let fx = if ((fv >= fr)) | |
841 | + | then (fv - fr) | |
842 | + | else throw(((((("You equipped " + toString(fv)) + " of ") + aP[db]) + ", but tried to use ") + toString(fr))) | |
843 | + | $Tuple2(((((fs[0] + fq[0]) + ":") + toString(fx)) + fw), if (eS._2) | |
842 | 844 | then true | |
843 | - | else if (if (( | |
844 | - | then (8 >= | |
845 | + | else if (if ((db >= 6)) | |
846 | + | then (8 >= db) | |
845 | 847 | else false) | |
846 | - | then ( | |
848 | + | then (fx == 0) | |
847 | 849 | else false) | |
848 | 850 | } | |
849 | 851 | } | |
850 | 852 | } | |
851 | 853 | } | |
852 | 854 | ||
853 | - | let | |
854 | - | let | |
855 | - | let | |
856 | - | func | |
857 | - | then | |
858 | - | else | |
859 | - | ||
860 | - | func | |
861 | - | then | |
855 | + | let eU = split(fn, "_") | |
856 | + | let eV = size(eU) | |
857 | + | let eW = $Tuple2(fm, false) | |
858 | + | func eX (eY,eZ) = if ((eZ >= eV)) | |
859 | + | then eY | |
860 | + | else fo(eY, eU[eZ]) | |
861 | + | ||
862 | + | func fa (eY,eZ) = if ((eZ >= eV)) | |
863 | + | then eY | |
862 | 864 | else throw("List size exceeds 10") | |
863 | 865 | ||
864 | - | | |
866 | + | fa(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
865 | 867 | } | |
866 | 868 | ||
867 | 869 | ||
868 | - | func | |
869 | - | let | |
870 | + | func fy (fz) = { | |
871 | + | let fA = if ((fz == "")) | |
870 | 872 | then nil | |
871 | - | else split_4C( | |
872 | - | func | |
873 | - | let | |
874 | - | let | |
875 | - | then parseIntValue( | |
873 | + | else split_4C(fz, "_") | |
874 | + | func fB (eS,cp) = { | |
875 | + | let fC = (size(eS) / 8) | |
876 | + | let fv = if ((size(fA) > fC)) | |
877 | + | then parseIntValue(fA[fC]) | |
876 | 878 | else 0 | |
877 | - | ( | |
879 | + | (eS + toBytes(fv)) | |
878 | 880 | } | |
879 | 881 | ||
880 | - | let | |
881 | - | let | |
882 | - | let | |
883 | - | func | |
884 | - | then | |
885 | - | else | |
886 | - | ||
887 | - | func | |
888 | - | then | |
882 | + | let eU = aT | |
883 | + | let eV = size(eU) | |
884 | + | let eW = base58'' | |
885 | + | func eX (eY,eZ) = if ((eZ >= eV)) | |
886 | + | then eY | |
887 | + | else fB(eY, eU[eZ]) | |
888 | + | ||
889 | + | func fa (eY,eZ) = if ((eZ >= eV)) | |
890 | + | then eY | |
889 | 891 | else throw("List size exceeds 50") | |
890 | 892 | ||
891 | - | | |
892 | - | } | |
893 | - | ||
894 | - | ||
895 | - | func | |
896 | - | func | |
897 | - | let | |
898 | - | let | |
899 | - | ( | |
893 | + | fa(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eW, 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) | |
894 | + | } | |
895 | + | ||
896 | + | ||
897 | + | func fD (fE) = { | |
898 | + | func fF (eS,cp) = { | |
899 | + | let fC = size(eS) | |
900 | + | let fG = take(drop(fE, (8 * fC)), 8) | |
901 | + | (eS :+ toString(toInt(fG))) | |
900 | 902 | } | |
901 | 903 | ||
902 | 904 | makeString_2C({ | |
903 | - | let | |
904 | - | let | |
905 | - | let | |
906 | - | func | |
907 | - | then | |
908 | - | else | |
909 | - | ||
910 | - | func | |
911 | - | then | |
905 | + | let eU = aT | |
906 | + | let eV = size(eU) | |
907 | + | let eW = nil | |
908 | + | func eX (eY,eZ) = if ((eZ >= eV)) | |
909 | + | then eY | |
910 | + | else fF(eY, eU[eZ]) | |
911 | + | ||
912 | + | func fa (eY,eZ) = if ((eZ >= eV)) | |
913 | + | then eY | |
912 | 914 | else throw("List size exceeds 50") | |
913 | 915 | ||
914 | - | | |
916 | + | fa(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eW, 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) | |
915 | 917 | }, "_") | |
916 | 918 | } | |
917 | 919 | ||
918 | 920 | ||
919 | - | func | |
920 | - | func | |
921 | - | let | |
922 | - | then | |
921 | + | func fH (fI,fJ) = { | |
922 | + | func fK (eS,fC) = { | |
923 | + | let fL = if ((size(fI) > (7 + fC))) | |
924 | + | then fI[(7 + fC)] | |
923 | 925 | else 0 | |
924 | - | if ((parseIntValue( | |
925 | - | then throw(("Requirement not satisfied: " + | |
926 | + | if ((parseIntValue(fJ[fC]) > (fI[fC] + fL))) | |
927 | + | then throw(("Requirement not satisfied: " + k[fC])) | |
926 | 928 | else true | |
927 | 929 | } | |
928 | 930 | ||
929 | - | let | |
930 | - | let | |
931 | - | let | |
932 | - | func | |
933 | - | then | |
934 | - | else | |
935 | - | ||
936 | - | func | |
937 | - | then | |
931 | + | let eU = [0, 1, 2, 3, 4, 5, 6] | |
932 | + | let eV = size(eU) | |
933 | + | let eW = false | |
934 | + | func eX (eY,eZ) = if ((eZ >= eV)) | |
935 | + | then eY | |
936 | + | else fK(eY, eU[eZ]) | |
937 | + | ||
938 | + | func fa (eY,eZ) = if ((eZ >= eV)) | |
939 | + | then eY | |
938 | 940 | else throw("List size exceeds 7") | |
939 | 941 | ||
940 | - | | |
941 | - | } | |
942 | - | ||
943 | - | ||
944 | - | func | |
945 | - | let | |
946 | - | if ((size( | |
942 | + | fa(eX(eX(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5), 6), 7) | |
943 | + | } | |
944 | + | ||
945 | + | ||
946 | + | func fM (fN,fA,fO,fI,fP,fQ) = { | |
947 | + | let fq = split(fN, ":") | |
948 | + | if ((size(fq) != 2)) | |
947 | 949 | then throw("Incorrect format, should be index:amount") | |
948 | - | else if (if (!( | |
949 | - | then (size( | |
950 | + | else if (if (!(fO)) | |
951 | + | then (size(fq[0]) != 2) | |
950 | 952 | else false) | |
951 | 953 | then throw("Product idx should be 2 digits, zero padded") | |
952 | 954 | else { | |
953 | - | let | |
954 | - | let | |
955 | - | if (!(containsElement( | |
956 | - | then throw((("Product '" + | |
957 | - | else if ((0 > | |
955 | + | let fR = parseIntValue(fq[0]) | |
956 | + | let fS = parseIntValue(fq[1]) | |
957 | + | if (!(containsElement(aS, fR))) | |
958 | + | then throw((("Product '" + aP[fR]) + "' cannot be used for land defense")) | |
959 | + | else if ((0 > fS)) | |
958 | 960 | then throw("Count can't be negative") | |
959 | - | else if (( | |
960 | - | then throw(((("Can't put more than " + toString( | |
961 | - | else if (( | |
962 | - | then $Tuple3( | |
961 | + | else if ((fS > u)) | |
962 | + | then throw(((("Can't put more than " + toString(u)) + " of ") + aP[fR])) | |
963 | + | else if ((fS == 0)) | |
964 | + | then $Tuple3(fA, fP, fQ) | |
963 | 965 | else { | |
964 | - | let | |
965 | - | let | |
966 | - | let | |
967 | - | let | |
968 | - | if (if (!( | |
969 | - | then ( | |
966 | + | let fT = take(fA, (8 * fR)) | |
967 | + | let fv = toInt(take(drop(fA, (8 * fR)), 8)) | |
968 | + | let fw = drop(fA, (8 * (fR + 1))) | |
969 | + | let cp = split(aT[fR], "_") | |
970 | + | if (if (!(fO)) | |
971 | + | then (fS > fv) | |
970 | 972 | else false) | |
971 | - | then throw(((((("You have " + toString( | |
973 | + | then throw(((((("You have " + toString(fv)) + " of ") + aP[fR]) + ", but tried to use ") + toString(fS))) | |
972 | 974 | else { | |
973 | - | let | |
974 | - | then | |
975 | + | let fx = if (if (!(fO)) | |
976 | + | then fH(fI, split(cp[aW], ",")) | |
975 | 977 | else false) | |
976 | - | then ( | |
977 | - | else ( | |
978 | - | let | |
979 | - | $Tuple3((( | |
978 | + | then (fv - fS) | |
979 | + | else (fv + fS) | |
980 | + | let fU = (eI(fx, aY) - eI(fv, aY)) | |
981 | + | $Tuple3(((fT + toBytes(fx)) + fw), (fP + fU), (fQ - fU)) | |
980 | 982 | } | |
981 | 983 | } | |
982 | 984 | } | |
983 | 985 | } | |
984 | 986 | ||
985 | 987 | ||
986 | - | func | |
987 | - | let | |
988 | - | if ((size( | |
988 | + | func fV (fN,fA,fO,fW,fX,fY,fI) = { | |
989 | + | let fq = split(fN, ":") | |
990 | + | if ((size(fq) != 2)) | |
989 | 991 | then throw("Incorrect format, should be index:amount") | |
990 | - | else if (if (!( | |
991 | - | then (size( | |
992 | + | else if (if (!(fO)) | |
993 | + | then (size(fq[0]) != 2) | |
992 | 994 | else false) | |
993 | 995 | then throw("Product idx should be 2 digits, zero padded") | |
994 | 996 | else { | |
995 | - | let | |
996 | - | let | |
997 | - | if (if ((0 > | |
997 | + | let fR = parseIntValue(fq[0]) | |
998 | + | let fS = parseIntValue(fq[1]) | |
999 | + | if (if ((0 > fR)) | |
998 | 1000 | then true | |
999 | - | else ( | |
1001 | + | else (fR >= size(aT))) | |
1000 | 1002 | then throw("Unknown product idx") | |
1001 | - | else if ((0 > | |
1003 | + | else if ((0 > fS)) | |
1002 | 1004 | then throw("Count can't be negative") | |
1003 | - | else if (( | |
1004 | - | then throw(((("Can't put more than " + toString( | |
1005 | - | else if (( | |
1006 | - | then $Tuple2( | |
1005 | + | else if ((fS > u)) | |
1006 | + | then throw(((("Can't put more than " + toString(u)) + " of ") + aP[fR])) | |
1007 | + | else if ((fS == 0)) | |
1008 | + | then $Tuple2(fA, false) | |
1007 | 1009 | else { | |
1008 | - | let | |
1009 | - | let | |
1010 | - | let | |
1011 | - | let | |
1012 | - | if (if (!( | |
1013 | - | then ( | |
1010 | + | let fT = take(fA, (8 * fR)) | |
1011 | + | let fv = toInt(take(drop(fA, (8 * fR)), 8)) | |
1012 | + | let fw = drop(fA, (8 * (fR + 1))) | |
1013 | + | let cp = split(aT[fR], "_") | |
1014 | + | if (if (!(fO)) | |
1015 | + | then (fS > fv) | |
1014 | 1016 | else false) | |
1015 | - | then throw(((((("You have " + toString( | |
1017 | + | then throw(((((("You have " + toString(fv)) + " of ") + aP[fR]) + ", but tried to use ") + toString(fS))) | |
1016 | 1018 | else { | |
1017 | - | let | |
1018 | - | then | |
1019 | + | let fZ = if (if (!(fO)) | |
1020 | + | then fH(fI, split(cp[aW], ",")) | |
1019 | 1021 | else false) | |
1020 | 1022 | then { | |
1021 | - | let | |
1022 | - | if (( | |
1023 | + | let ga = cp[aX] | |
1024 | + | if ((ga == "")) | |
1023 | 1025 | then throw("Item cannot be equipped") | |
1024 | 1026 | else { | |
1025 | - | let | |
1026 | - | let | |
1027 | - | if (( | |
1027 | + | let gb = parseIntValue(ga) | |
1028 | + | let gc = (gb / 100) | |
1029 | + | if ((fW != gc)) | |
1028 | 1030 | then throw("Segment incompatible") | |
1029 | 1031 | else { | |
1030 | - | let | |
1031 | - | if (( | |
1032 | + | let gd = ((gb % 100) / 10) | |
1033 | + | if ((fX != gd)) | |
1032 | 1034 | then throw("Slot incompatible") | |
1033 | 1035 | else { | |
1034 | - | let | |
1035 | - | if (if (( | |
1036 | - | then ( | |
1036 | + | let ge = (gb % 10) | |
1037 | + | if (if ((fY != 0)) | |
1038 | + | then (ge > 1) | |
1037 | 1039 | else false) | |
1038 | 1040 | then throw("Big items should occupy slot 0") | |
1039 | - | else ( | |
1041 | + | else (ge > 1) | |
1040 | 1042 | } | |
1041 | 1043 | } | |
1042 | 1044 | } | |
1043 | 1045 | } | |
1044 | 1046 | else false | |
1045 | - | $Tuple2((( | |
1046 | - | then | |
1047 | - | else -( | |
1047 | + | $Tuple2(((fT + toBytes((fv + (if (fO) | |
1048 | + | then fS | |
1049 | + | else -(fS))))) + fw), fZ) | |
1048 | 1050 | } | |
1049 | 1051 | } | |
1050 | 1052 | } | |
1051 | 1053 | } | |
1052 | 1054 | ||
1053 | 1055 | ||
1054 | - | func | |
1056 | + | func gf (gg,gh,fO,fW,fX,gi) = if ((gg != "")) | |
1055 | 1057 | then { | |
1056 | - | let | |
1057 | - | if ((size( | |
1058 | + | let gj = split(gg, ",") | |
1059 | + | if ((size(gj) > t)) | |
1058 | 1060 | then throw("Wrong slots format") | |
1059 | 1061 | else { | |
1060 | - | let | |
1061 | - | let | |
1062 | - | then | |
1062 | + | let gk = gj[0] | |
1063 | + | let gl = if ((size(gj) > 1)) | |
1064 | + | then gj[1] | |
1063 | 1065 | else "" | |
1064 | - | if (if (( | |
1065 | - | then ( | |
1066 | + | if (if ((gk == "")) | |
1067 | + | then (gl == "") | |
1066 | 1068 | else false) | |
1067 | - | then | |
1069 | + | then gh | |
1068 | 1070 | else { | |
1069 | - | let | |
1070 | - | then | |
1071 | - | else $Tuple2( | |
1072 | - | if (( | |
1073 | - | then if ( | |
1071 | + | let gm = if ((gk != "")) | |
1072 | + | then fV(gk, gh, fO, fW, fX, 0, gi) | |
1073 | + | else $Tuple2(gh, false) | |
1074 | + | if ((gl != "")) | |
1075 | + | then if (gm._2) | |
1074 | 1076 | then throw("Big item already occupies slot") | |
1075 | - | else | |
1076 | - | else | |
1077 | + | else fV(gl, gm._1, fO, fW, fX, 1, gi)._1 | |
1078 | + | else gm._1 | |
1077 | 1079 | } | |
1078 | 1080 | } | |
1079 | 1081 | } | |
1080 | - | else | |
1081 | - | ||
1082 | - | ||
1083 | - | func | |
1084 | - | func | |
1085 | - | let | |
1086 | - | let | |
1087 | - | if ((size( | |
1082 | + | else gh | |
1083 | + | ||
1084 | + | ||
1085 | + | func gn (go,gp,fO,gi) = { | |
1086 | + | func fW (eS,gq) = { | |
1087 | + | let fC = eS._1 | |
1088 | + | let fX = split(gq, ";") | |
1089 | + | if ((size(fX) != s)) | |
1088 | 1090 | then throw("Wrong segment format") | |
1089 | 1091 | else { | |
1090 | - | let | |
1091 | - | let | |
1092 | - | if (if (( | |
1093 | - | then ( | |
1092 | + | let gr = fX[0] | |
1093 | + | let gs = fX[1] | |
1094 | + | if (if ((gr == "")) | |
1095 | + | then (gs == "") | |
1094 | 1096 | else false) | |
1095 | - | then $Tuple2(( | |
1097 | + | then $Tuple2((fC + 1), eS._2) | |
1096 | 1098 | else { | |
1097 | - | let | |
1098 | - | $Tuple2(( | |
1099 | + | let gt = gf(gr, eS._2, fO, fC, 0, gi) | |
1100 | + | $Tuple2((fC + 1), gf(gs, gt, fO, fC, 1, gi)) | |
1099 | 1101 | } | |
1100 | 1102 | } | |
1101 | 1103 | } | |
1102 | 1104 | ||
1103 | - | ( let | |
1104 | - | let | |
1105 | - | let | |
1106 | - | func | |
1107 | - | then | |
1108 | - | else | |
1109 | - | ||
1110 | - | func | |
1111 | - | then | |
1105 | + | ( let eU = go | |
1106 | + | let eV = size(eU) | |
1107 | + | let eW = $Tuple2(0, gp) | |
1108 | + | func eX (eY,eZ) = if ((eZ >= eV)) | |
1109 | + | then eY | |
1110 | + | else fW(eY, eU[eZ]) | |
1111 | + | ||
1112 | + | func fa (eY,eZ) = if ((eZ >= eV)) | |
1113 | + | then eY | |
1112 | 1114 | else throw("List size exceeds 6") | |
1113 | 1115 | ||
1114 | - | | |
1115 | - | } | |
1116 | - | ||
1117 | - | ||
1118 | - | func | |
1116 | + | fa(eX(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5), 6))._2 | |
1117 | + | } | |
1118 | + | ||
1119 | + | ||
1120 | + | func gu (go,gp,fP,fQ,fO,fI) = if ((3 > size(go))) | |
1119 | 1121 | then throw("At least duck, mines and traps parts are required") | |
1120 | 1122 | else { | |
1121 | - | func | |
1122 | - | let | |
1123 | - | if (( | |
1124 | - | then $Tuple4(( | |
1123 | + | func fW (eS,gq) = { | |
1124 | + | let fC = eS._1 | |
1125 | + | if ((fC == 0)) | |
1126 | + | then $Tuple4((fC + 1), eS._2, eS._3, eS._4) | |
1125 | 1127 | else { | |
1126 | - | let | |
1127 | - | $Tuple4(( | |
1128 | + | let gv = fM(gq, eS._2, fO, fI, eS._3, eS._4) | |
1129 | + | $Tuple4((fC + 1), gv._1, gv._2, gv._3) | |
1128 | 1130 | } | |
1129 | 1131 | } | |
1130 | 1132 | ||
1131 | - | let | |
1132 | - | let | |
1133 | - | let | |
1134 | - | let | |
1135 | - | func | |
1136 | - | then | |
1137 | - | else | |
1138 | - | ||
1139 | - | func | |
1140 | - | then | |
1133 | + | let gw = { | |
1134 | + | let eU = go | |
1135 | + | let eV = size(eU) | |
1136 | + | let eW = $Tuple4(0, gp, fP, fQ) | |
1137 | + | func eX (eY,eZ) = if ((eZ >= eV)) | |
1138 | + | then eY | |
1139 | + | else fW(eY, eU[eZ]) | |
1140 | + | ||
1141 | + | func fa (eY,eZ) = if ((eZ >= eV)) | |
1142 | + | then eY | |
1141 | 1143 | else throw("List size exceeds 10") | |
1142 | 1144 | ||
1143 | - | | |
1144 | - | } | |
1145 | - | $Tuple3( | |
1145 | + | fa(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
1146 | + | } | |
1147 | + | $Tuple3(gw._2, gw._3, gw._4) | |
1146 | 1148 | } | |
1147 | 1149 | ||
1148 | 1150 | ||
1149 | - | func | |
1150 | - | let | |
1151 | - | let | |
1152 | - | let | |
1153 | - | let | |
1154 | - | let | |
1151 | + | func gx (B) = { | |
1152 | + | let gy = G(B) | |
1153 | + | let gz = split(valueOrElse(getString(gy), ",;,_,;,_,;,_,;,_,;,_,;,"), "_") | |
1154 | + | let gA = gn(gz, eb, true, nil) | |
1155 | + | let gB = split(gz[q], ";")[1] | |
1156 | + | let ap = if ((gB == "")) | |
1155 | 1157 | then 0 | |
1156 | 1158 | else { | |
1157 | - | let | |
1158 | - | if (( | |
1159 | + | let gC = split(gB, ",")[0] | |
1160 | + | if ((gC == "")) | |
1159 | 1161 | then 0 | |
1160 | 1162 | else { | |
1161 | - | let | |
1162 | - | let | |
1163 | - | let | |
1164 | - | if (if (if (if (if (( | |
1163 | + | let fN = split(gC, ":") | |
1164 | + | let db = fN[0] | |
1165 | + | let gD = fN[1] | |
1166 | + | if (if (if (if (if ((db == "06")) | |
1165 | 1167 | then true | |
1166 | - | else ( | |
1168 | + | else (db == "07")) | |
1167 | 1169 | then true | |
1168 | - | else ( | |
1169 | - | then ( | |
1170 | + | else (db == "08")) | |
1171 | + | then (gD != "") | |
1170 | 1172 | else false) | |
1171 | - | then (parseIntValue( | |
1173 | + | then (parseIntValue(gD) > 0) | |
1172 | 1174 | else false) | |
1173 | - | then parseIntValue(split( | |
1175 | + | then parseIntValue(split(aT[parseIntValue(db)], "_")[aV]) | |
1174 | 1176 | else 0 | |
1175 | 1177 | } | |
1176 | 1178 | } | |
1177 | - | let | |
1178 | - | let | |
1179 | - | ( | |
1180 | - | } | |
1181 | - | ||
1182 | - | ||
1183 | - | func | |
1179 | + | let gi = an(this, B, ap, true) | |
1180 | + | let gE = gn(gz, gA, false, gi) | |
1181 | + | (gE == gE) | |
1182 | + | } | |
1183 | + | ||
1184 | + | ||
1185 | + | func gF (gG,gH,gI,gJ) = if ((size(gG) != aG)) | |
1184 | 1186 | then throw("Wrong proportions data") | |
1185 | 1187 | else { | |
1186 | - | func | |
1187 | - | let | |
1188 | - | if ((0 > | |
1189 | - | then throw(((((((("Panic! Pieces of type=" + toString( | |
1190 | - | else ( | |
1191 | - | } | |
1192 | - | ||
1193 | - | let | |
1194 | - | let | |
1195 | - | let | |
1196 | - | func | |
1197 | - | then | |
1198 | - | else | |
1199 | - | ||
1200 | - | func | |
1201 | - | then | |
1188 | + | func gK (eS,gL) = { | |
1189 | + | let fk = (parseIntValue(gG[gL]) + ((gJ * gH[gL]) * gI)) | |
1190 | + | if ((0 > fk)) | |
1191 | + | then throw(((((((("Panic! Pieces of type=" + toString(gL)) + ", sign=") + toString(gJ)) + ", terrainCounts[i]=") + toString(gH[gL])) + ", landSizeIndex=") + toString(gI))) | |
1192 | + | else (eS :+ toString(fk)) | |
1193 | + | } | |
1194 | + | ||
1195 | + | let eU = cL | |
1196 | + | let eV = size(eU) | |
1197 | + | let eW = nil | |
1198 | + | func eX (eY,eZ) = if ((eZ >= eV)) | |
1199 | + | then eY | |
1200 | + | else gK(eY, eU[eZ]) | |
1201 | + | ||
1202 | + | func fa (eY,eZ) = if ((eZ >= eV)) | |
1203 | + | then eY | |
1202 | 1204 | else throw("List size exceeds 6") | |
1203 | 1205 | ||
1204 | - | | |
1206 | + | fa(eX(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5), 6) | |
1205 | 1207 | } | |
1206 | 1208 | ||
1207 | 1209 | ||
1208 | - | func | |
1209 | - | let | |
1210 | - | makeString( | |
1211 | - | } | |
1212 | - | ||
1213 | - | ||
1214 | - | func | |
1215 | - | ||
1216 | - | ||
1217 | - | func | |
1218 | - | func | |
1219 | - | let | |
1220 | - | ( | |
1210 | + | func gM (gH,gI,gJ) = { | |
1211 | + | let gG = split(valueOrElse(getString(ds()), "0_0_0_0_0_0"), "_") | |
1212 | + | makeString(gF(gG, gH, gI, gJ), "_") | |
1213 | + | } | |
1214 | + | ||
1215 | + | ||
1216 | + | func gN (gO) = [(size(split(gO, "A")) - 1), (size(split(gO, "B")) - 1), (size(split(gO, "C")) - 1), (size(split(gO, "D")) - 1), (size(split(gO, "E")) - 1), (size(split(gO, "F")) - 1)] | |
1217 | + | ||
1218 | + | ||
1219 | + | func gP (gQ,gH,gR,gI,gS) = { | |
1220 | + | func gT (eS,gL) = { | |
1221 | + | let gU = ((fraction(gR, gS, a) * gH[gL]) * gI) | |
1222 | + | (eS :+ toString((parseIntValue(gQ[gL]) + gU))) | |
1221 | 1223 | } | |
1222 | 1224 | ||
1223 | - | let | |
1224 | - | let | |
1225 | - | let | |
1226 | - | let | |
1227 | - | func | |
1228 | - | then | |
1229 | - | else | |
1230 | - | ||
1231 | - | func | |
1232 | - | then | |
1225 | + | let fd = { | |
1226 | + | let eU = cL | |
1227 | + | let eV = size(eU) | |
1228 | + | let eW = nil | |
1229 | + | func eX (eY,eZ) = if ((eZ >= eV)) | |
1230 | + | then eY | |
1231 | + | else gT(eY, eU[eZ]) | |
1232 | + | ||
1233 | + | func fa (eY,eZ) = if ((eZ >= eV)) | |
1234 | + | then eY | |
1233 | 1235 | else throw("List size exceeds 6") | |
1234 | 1236 | ||
1235 | - | | |
1237 | + | fa(eX(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5), 6) | |
1236 | 1238 | } | |
1237 | - | makeString( | |
1238 | - | } | |
1239 | - | ||
1240 | - | ||
1241 | - | func | |
1242 | - | func | |
1243 | - | let | |
1244 | - | $Tuple2(( | |
1239 | + | makeString(fd, "_") | |
1240 | + | } | |
1241 | + | ||
1242 | + | ||
1243 | + | func gV (gH,gR,gI,gS) = { | |
1244 | + | func gT (eS,gL) = { | |
1245 | + | let gU = ((fraction(gR, gS, a) * gH[gL]) * gI) | |
1246 | + | $Tuple2((eS._1 :+ gU), (eS._2 + gU)) | |
1245 | 1247 | } | |
1246 | 1248 | ||
1247 | - | let | |
1248 | - | let | |
1249 | - | let | |
1250 | - | func | |
1251 | - | then | |
1252 | - | else | |
1253 | - | ||
1254 | - | func | |
1255 | - | then | |
1249 | + | let eU = cL | |
1250 | + | let eV = size(eU) | |
1251 | + | let eW = $Tuple2(nil, 0) | |
1252 | + | func eX (eY,eZ) = if ((eZ >= eV)) | |
1253 | + | then eY | |
1254 | + | else gT(eY, eU[eZ]) | |
1255 | + | ||
1256 | + | func fa (eY,eZ) = if ((eZ >= eV)) | |
1257 | + | then eY | |
1256 | 1258 | else throw("List size exceeds 6") | |
1257 | 1259 | ||
1258 | - | | |
1259 | - | } | |
1260 | - | ||
1261 | - | ||
1262 | - | func | |
1263 | - | let | |
1264 | - | let | |
1265 | - | if (( | |
1266 | - | then $Tuple2(makeString( | |
1267 | - | else if (( | |
1260 | + | fa(eX(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5), 6) | |
1261 | + | } | |
1262 | + | ||
1263 | + | ||
1264 | + | func gW (gX,gY,gZ,ha) = { | |
1265 | + | let hb = gZ._1 | |
1266 | + | let hc = gZ._2 | |
1267 | + | if ((hc == 0)) | |
1268 | + | then $Tuple2(makeString(gX, "_"), makeString(gY, "_")) | |
1269 | + | else if ((ha >= hc)) | |
1268 | 1270 | then { | |
1269 | - | func | |
1270 | - | ||
1271 | - | let | |
1272 | - | let | |
1273 | - | let | |
1274 | - | let | |
1275 | - | func | |
1276 | - | then | |
1277 | - | else | |
1278 | - | ||
1279 | - | func | |
1280 | - | then | |
1271 | + | func hd (eS,gL) = (eS :+ toString((parseIntValue(gX[gL]) + hb[gL]))) | |
1272 | + | ||
1273 | + | let fd = { | |
1274 | + | let eU = cL | |
1275 | + | let eV = size(eU) | |
1276 | + | let eW = nil | |
1277 | + | func eX (eY,eZ) = if ((eZ >= eV)) | |
1278 | + | then eY | |
1279 | + | else hd(eY, eU[eZ]) | |
1280 | + | ||
1281 | + | func fa (eY,eZ) = if ((eZ >= eV)) | |
1282 | + | then eY | |
1281 | 1283 | else throw("List size exceeds 6") | |
1282 | 1284 | ||
1283 | - | | |
1285 | + | fa(eX(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5), 6) | |
1284 | 1286 | } | |
1285 | - | $Tuple2(makeString( | |
1287 | + | $Tuple2(makeString(fd, "_"), makeString(gY, "_")) | |
1286 | 1288 | } | |
1287 | 1289 | else { | |
1288 | - | func | |
1289 | - | let | |
1290 | - | $Tuple2(( | |
1290 | + | func he (eS,gL) = { | |
1291 | + | let hf = fraction(hb[gL], ha, hc) | |
1292 | + | $Tuple2((eS._1 :+ toString((parseIntValue(gX[gL]) + hf))), (eS._2 :+ toString(((parseIntValue(gY[gL]) + hb[gL]) - hf)))) | |
1291 | 1293 | } | |
1292 | 1294 | ||
1293 | - | let | |
1294 | - | let | |
1295 | - | let | |
1296 | - | let | |
1297 | - | func | |
1298 | - | then | |
1299 | - | else | |
1300 | - | ||
1301 | - | func | |
1302 | - | then | |
1295 | + | let fd = { | |
1296 | + | let eU = cL | |
1297 | + | let eV = size(eU) | |
1298 | + | let eW = $Tuple2(nil, nil) | |
1299 | + | func eX (eY,eZ) = if ((eZ >= eV)) | |
1300 | + | then eY | |
1301 | + | else he(eY, eU[eZ]) | |
1302 | + | ||
1303 | + | func fa (eY,eZ) = if ((eZ >= eV)) | |
1304 | + | then eY | |
1303 | 1305 | else throw("List size exceeds 6") | |
1304 | 1306 | ||
1305 | - | | |
1307 | + | fa(eX(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5), 6) | |
1306 | 1308 | } | |
1307 | - | $Tuple2(makeString( | |
1309 | + | $Tuple2(makeString(fd._1, "_"), makeString(fd._2, "_")) | |
1308 | 1310 | } | |
1309 | 1311 | } | |
1310 | 1312 | ||
1311 | 1313 | ||
1312 | - | func | |
1313 | - | then | |
1314 | - | else -( | |
1315 | - | ||
1316 | - | ||
1317 | - | let | |
1318 | - | ||
1319 | - | func | |
1320 | - | let | |
1321 | - | let | |
1314 | + | func hg (hh) = if ((hh >= toBigInt(0))) | |
1315 | + | then hh | |
1316 | + | else -(hh) | |
1317 | + | ||
1318 | + | ||
1319 | + | let hi = [[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]] | |
1320 | + | ||
1321 | + | func hj (dB,hk) = { | |
1322 | + | let hl = toInt((dB % ek)) | |
1323 | + | let hm = if ((hk[0] > hl)) | |
1322 | 1324 | then "A" | |
1323 | - | else if (( | |
1325 | + | else if ((hk[1] > hl)) | |
1324 | 1326 | then "B" | |
1325 | - | else if (( | |
1327 | + | else if ((hk[2] > hl)) | |
1326 | 1328 | then "C" | |
1327 | - | else if (( | |
1329 | + | else if ((hk[3] > hl)) | |
1328 | 1330 | then "D" | |
1329 | - | else if (( | |
1331 | + | else if ((hk[4] > hl)) | |
1330 | 1332 | then "E" | |
1331 | 1333 | else "F" | |
1332 | - | | |
1333 | - | } | |
1334 | - | ||
1335 | - | ||
1336 | - | func | |
1337 | - | let | |
1338 | - | func | |
1339 | - | ||
1340 | - | let | |
1341 | - | let | |
1342 | - | let | |
1343 | - | let | |
1344 | - | func | |
1345 | - | then | |
1346 | - | else | |
1347 | - | ||
1348 | - | func | |
1349 | - | then | |
1334 | + | hm | |
1335 | + | } | |
1336 | + | ||
1337 | + | ||
1338 | + | func hn (ho,hp) = { | |
1339 | + | let hq = hi[hp] | |
1340 | + | func hr (eS,eT) = $Tuple2((((((eS._1 + hj(eS._2, hq)) + hj((eS._2 / ek), hq)) + hj((eS._2 / el), hq)) + hj((eS._2 / em), hq)) + hj((eS._2 / en), hq)), (eS._2 / eo)) | |
1341 | + | ||
1342 | + | let gw = { | |
1343 | + | let eU = [1, 2, 3, 4, 5] | |
1344 | + | let eV = size(eU) | |
1345 | + | let eW = $Tuple2("", (ho / ej)) | |
1346 | + | func eX (eY,eZ) = if ((eZ >= eV)) | |
1347 | + | then eY | |
1348 | + | else hr(eY, eU[eZ]) | |
1349 | + | ||
1350 | + | func fa (eY,eZ) = if ((eZ >= eV)) | |
1351 | + | then eY | |
1350 | 1352 | else throw("List size exceeds 5") | |
1351 | 1353 | ||
1352 | - | | |
1354 | + | fa(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5) | |
1353 | 1355 | } | |
1354 | - | | |
1355 | - | } | |
1356 | - | ||
1357 | - | ||
1358 | - | let | |
1359 | - | ||
1360 | - | let | |
1361 | - | ||
1362 | - | func | |
1363 | - | func | |
1364 | - | let | |
1365 | - | let | |
1366 | - | let | |
1356 | + | gw._1 | |
1357 | + | } | |
1358 | + | ||
1359 | + | ||
1360 | + | let hs = [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] | |
1361 | + | ||
1362 | + | let ht = ["A", "B", "C", "D", "E", "F"] | |
1363 | + | ||
1364 | + | func hu (hv,gI) = { | |
1365 | + | func hw (eS,dz) = { | |
1366 | + | let fC = eS._2 | |
1367 | + | let hx = parseIntValue(dz) | |
1368 | + | let hh = if ((hx == 0)) | |
1367 | 1369 | then 0 | |
1368 | - | else if (( | |
1369 | - | then ( | |
1370 | - | else if (( | |
1370 | + | else if ((hx >= (4 * gI))) | |
1371 | + | then (hx / gI) | |
1372 | + | else if ((hx > (3 * gI))) | |
1371 | 1373 | then 3 | |
1372 | - | else ((( | |
1373 | - | $Tuple3(( | |
1374 | + | else (((hx - 1) / gI) + 1) | |
1375 | + | $Tuple3((eS._1 :+ hh), (eS._2 + 1), (eS._3 + hh)) | |
1374 | 1376 | } | |
1375 | 1377 | ||
1376 | - | let | |
1377 | - | let | |
1378 | - | let | |
1379 | - | let | |
1380 | - | func | |
1381 | - | then | |
1382 | - | else | |
1383 | - | ||
1384 | - | func | |
1385 | - | then | |
1378 | + | let gw = { | |
1379 | + | let eU = hv | |
1380 | + | let eV = size(eU) | |
1381 | + | let eW = $Tuple3(nil, 0, 0) | |
1382 | + | func eX (eY,eZ) = if ((eZ >= eV)) | |
1383 | + | then eY | |
1384 | + | else hw(eY, eU[eZ]) | |
1385 | + | ||
1386 | + | func fa (eY,eZ) = if ((eZ >= eV)) | |
1387 | + | then eY | |
1386 | 1388 | else throw("List size exceeds 6") | |
1387 | 1389 | ||
1388 | - | | |
1390 | + | fa(eX(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5), 6) | |
1389 | 1391 | } | |
1390 | - | let | |
1391 | - | let | |
1392 | - | let | |
1393 | - | func | |
1394 | - | let | |
1395 | - | then ( | |
1396 | - | else | |
1397 | - | let | |
1392 | + | let hy = gw._1 | |
1393 | + | let hz = value(indexOf(hy, max(hy))) | |
1394 | + | let hA = (gw._3 - 25) | |
1395 | + | func hB (eS,db) = { | |
1396 | + | let dG = if ((db == hz)) | |
1397 | + | then (hy[db] - hA) | |
1398 | + | else hy[db] | |
1399 | + | let dR = if ((dG == 0)) | |
1398 | 1400 | then nil | |
1399 | - | else split(drop(toString(pow(10, 0, | |
1400 | - | let | |
1401 | - | func | |
1402 | - | ||
1403 | - | let | |
1404 | - | let | |
1405 | - | let | |
1406 | - | let | |
1407 | - | func | |
1408 | - | then | |
1409 | - | else | |
1410 | - | ||
1411 | - | func | |
1412 | - | then | |
1401 | + | else split(drop(toString(pow(10, 0, dG, 0, 0, DOWN)), 1), "") | |
1402 | + | let gb = ht[db] | |
1403 | + | func hC (hD,hE) = (hD :+ gb) | |
1404 | + | ||
1405 | + | let hF = { | |
1406 | + | let eU = dR | |
1407 | + | let eV = size(eU) | |
1408 | + | let eW = nil | |
1409 | + | func hG (eY,eZ) = if ((eZ >= eV)) | |
1410 | + | then eY | |
1411 | + | else hC(eY, eU[eZ]) | |
1412 | + | ||
1413 | + | func hH (eY,eZ) = if ((eZ >= eV)) | |
1414 | + | then eY | |
1413 | 1415 | else throw("List size exceeds 25") | |
1414 | 1416 | ||
1415 | - | hG( | |
1416 | - | } | |
1417 | - | ( | |
1417 | + | hH(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(eW, 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) | |
1418 | + | } | |
1419 | + | (eS ++ hF) | |
1418 | 1420 | } | |
1419 | 1421 | ||
1420 | - | let | |
1421 | - | let | |
1422 | - | let | |
1423 | - | let | |
1424 | - | func | |
1425 | - | then | |
1426 | - | else | |
1427 | - | ||
1428 | - | func | |
1429 | - | then | |
1422 | + | let fd = { | |
1423 | + | let eU = cL | |
1424 | + | let eV = size(eU) | |
1425 | + | let eW = nil | |
1426 | + | func hG (eY,eZ) = if ((eZ >= eV)) | |
1427 | + | then eY | |
1428 | + | else hB(eY, eU[eZ]) | |
1429 | + | ||
1430 | + | func hH (eY,eZ) = if ((eZ >= eV)) | |
1431 | + | then eY | |
1430 | 1432 | else throw("List size exceeds 6") | |
1431 | 1433 | ||
1432 | - | hG( | |
1434 | + | hH(hG(hG(hG(hG(hG(hG(eW, 0), 1), 2), 3), 4), 5), 6) | |
1433 | 1435 | } | |
1434 | - | func | |
1435 | - | ||
1436 | - | let | |
1437 | - | let | |
1438 | - | let | |
1439 | - | func | |
1440 | - | then | |
1441 | - | else | |
1442 | - | ||
1443 | - | func | |
1444 | - | then | |
1436 | + | func hI (eS,fC) = (eS + fd[fC]) | |
1437 | + | ||
1438 | + | let eU = hs | |
1439 | + | let eV = size(eU) | |
1440 | + | let eW = "" | |
1441 | + | func hJ (eY,eZ) = if ((eZ >= eV)) | |
1442 | + | then eY | |
1443 | + | else hI(eY, eU[eZ]) | |
1444 | + | ||
1445 | + | func hK (eY,eZ) = if ((eZ >= eV)) | |
1446 | + | then eY | |
1445 | 1447 | else throw("List size exceeds 25") | |
1446 | 1448 | ||
1447 | - | hJ( | |
1448 | - | } | |
1449 | - | ||
1450 | - | ||
1451 | - | func | |
1452 | - | let | |
1453 | - | [toString(valueOrElse(parseInt( | |
1454 | - | then | |
1455 | - | else "0_0_0_0_0_0", if ((size(split( | |
1456 | - | then | |
1457 | - | else "0_0_0_0_0_0", | |
1458 | - | } | |
1459 | - | ||
1460 | - | ||
1461 | - | func | |
1462 | - | let | |
1463 | - | (( | |
1464 | - | } | |
1465 | - | ||
1466 | - | ||
1467 | - | func | |
1468 | - | let | |
1469 | - | func | |
1470 | - | ||
1471 | - | func | |
1472 | - | let | |
1473 | - | let | |
1474 | - | $Tuple2(( | |
1449 | + | hK(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(eW, 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) | |
1450 | + | } | |
1451 | + | ||
1452 | + | ||
1453 | + | func hL (hM) = { | |
1454 | + | let gv = split(valueOrElse(getString(hM), "0:0_0_0_0_0_0:0_0_0_0_0_0:"), ":") | |
1455 | + | [toString(valueOrElse(parseInt(gv[bi]), 0)), if ((size(split(gv[bj], "_")) == aG)) | |
1456 | + | then gv[bj] | |
1457 | + | else "0_0_0_0_0_0", if ((size(split(gv[bk], "_")) == aG)) | |
1458 | + | then gv[bk] | |
1459 | + | else "0_0_0_0_0_0", gv[bl]] | |
1460 | + | } | |
1461 | + | ||
1462 | + | ||
1463 | + | func hN (hO) = { | |
1464 | + | let fq = split(hO, "_") | |
1465 | + | ((aJ * (parseIntValue(fq[1]) + 1)) * parseIntValue(fq[0])) | |
1466 | + | } | |
1467 | + | ||
1468 | + | ||
1469 | + | func hP (hQ) = { | |
1470 | + | let hR = hQ[bc] | |
1471 | + | func hS (eS,hT) = (eS + parseIntValue(hT)) | |
1472 | + | ||
1473 | + | func hU (eS,hT) = { | |
1474 | + | let db = eS._1 | |
1475 | + | let eL = (((parseIntValue(hT) + aY) - 1) / aY) | |
1476 | + | $Tuple2((db + 1), (eS._2 + (eL * cF))) | |
1475 | 1477 | } | |
1476 | 1478 | ||
1477 | - | let | |
1478 | - | let | |
1479 | - | let | |
1480 | - | let | |
1481 | - | func | |
1482 | - | then | |
1483 | - | else | |
1484 | - | ||
1485 | - | func | |
1486 | - | then | |
1479 | + | let hV = { | |
1480 | + | let eU = split(hQ[ba], "_") | |
1481 | + | let eV = size(eU) | |
1482 | + | let eW = 0 | |
1483 | + | func eX (eY,eZ) = if ((eZ >= eV)) | |
1484 | + | then eY | |
1485 | + | else hS(eY, eU[eZ]) | |
1486 | + | ||
1487 | + | func fa (eY,eZ) = if ((eZ >= eV)) | |
1488 | + | then eY | |
1487 | 1489 | else throw("List size exceeds 6") | |
1488 | 1490 | ||
1489 | - | | |
1491 | + | fa(eX(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5), 6) | |
1490 | 1492 | } | |
1491 | - | let | |
1492 | - | let | |
1493 | - | let | |
1494 | - | let | |
1495 | - | func | |
1496 | - | then | |
1497 | - | else | |
1498 | - | ||
1499 | - | func | |
1500 | - | then | |
1493 | + | let hW = { | |
1494 | + | let eU = split(hQ[bb], "_") | |
1495 | + | let eV = size(eU) | |
1496 | + | let eW = 0 | |
1497 | + | func hG (eY,eZ) = if ((eZ >= eV)) | |
1498 | + | then eY | |
1499 | + | else hS(eY, eU[eZ]) | |
1500 | + | ||
1501 | + | func hH (eY,eZ) = if ((eZ >= eV)) | |
1502 | + | then eY | |
1501 | 1503 | else throw("List size exceeds 6") | |
1502 | 1504 | ||
1503 | - | hG( | |
1505 | + | hH(hG(hG(hG(hG(hG(hG(eW, 0), 1), 2), 3), 4), 5), 6) | |
1504 | 1506 | } | |
1505 | - | let | |
1507 | + | let hX = if ((hR == "")) | |
1506 | 1508 | then 0 | |
1507 | - | else ( let | |
1508 | - | let | |
1509 | - | let | |
1510 | - | func | |
1511 | - | then | |
1512 | - | else | |
1513 | - | ||
1514 | - | func | |
1515 | - | then | |
1509 | + | else ( let eU = split_4C(hR, "_") | |
1510 | + | let eV = size(eU) | |
1511 | + | let eW = $Tuple2(0, 0) | |
1512 | + | func hJ (eY,eZ) = if ((eZ >= eV)) | |
1513 | + | then eY | |
1514 | + | else hU(eY, eU[eZ]) | |
1515 | + | ||
1516 | + | func hK (eY,eZ) = if ((eZ >= eV)) | |
1517 | + | then eY | |
1516 | 1518 | else throw("List size exceeds 50") | |
1517 | 1519 | ||
1518 | - | hJ( | |
1519 | - | (( | |
1520 | - | } | |
1521 | - | ||
1522 | - | ||
1523 | - | func | |
1524 | - | let | |
1525 | - | let | |
1526 | - | let | |
1527 | - | let | |
1528 | - | let | |
1529 | - | let | |
1530 | - | then makeString(["0", toString( | |
1520 | + | hK(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(eW, 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 | |
1521 | + | ((hV + hW) + hX) | |
1522 | + | } | |
1523 | + | ||
1524 | + | ||
1525 | + | func hY (hZ,ia,ib) = { | |
1526 | + | let hO = ((toString(ia) + "_") + toString(ib)) | |
1527 | + | let ic = hN(hO) | |
1528 | + | let id = valueOrElse(getString(hZ), (hO + ":0_0_0_0_0_0:0_0_0_0_0_0::0")) | |
1529 | + | let ie = split_4C(id, ":") | |
1530 | + | let if = hP(ie) | |
1531 | + | let ig = if ((5 > size(ie))) | |
1532 | + | then makeString(["0", toString(if), toString((ic - if)), toString(ic)], "_") | |
1531 | 1533 | else { | |
1532 | - | let | |
1533 | - | let | |
1534 | - | let | |
1535 | - | then parseIntValue( | |
1536 | - | else | |
1537 | - | makeString([toString( | |
1538 | - | } | |
1539 | - | [ | |
1540 | - | then | |
1541 | - | else "0_0_0_0_0_0", if ((size(split( | |
1542 | - | then | |
1543 | - | else "0_0_0_0_0_0", | |
1544 | - | } | |
1545 | - | ||
1546 | - | ||
1547 | - | func | |
1548 | - | let | |
1549 | - | let | |
1550 | - | (( | |
1551 | - | } | |
1552 | - | ||
1553 | - | ||
1554 | - | func | |
1534 | + | let ih = split(ie[bd], "_") | |
1535 | + | let ii = parseIntValue(ih[be]) | |
1536 | + | let ij = if ((size(ih) > 1)) | |
1537 | + | then parseIntValue(ih[bf]) | |
1538 | + | else if | |
1539 | + | makeString([toString(ii), toString(ij), toString(((ic - ii) - ij)), toString(ic)], "_") | |
1540 | + | } | |
1541 | + | [ie[aZ], if ((size(split(ie[ba], "_")) == aG)) | |
1542 | + | then ie[ba] | |
1543 | + | else "0_0_0_0_0_0", if ((size(split(ie[bb], "_")) == aG)) | |
1544 | + | then ie[bb] | |
1545 | + | else "0_0_0_0_0_0", ie[bc], ig] | |
1546 | + | } | |
1547 | + | ||
1548 | + | ||
1549 | + | func ik (hQ) = { | |
1550 | + | let il = hP(hQ) | |
1551 | + | let im = parseIntValue(split(hQ[bd], "_")[be]) | |
1552 | + | ((hN(hQ[aZ]) - il) - im) | |
1553 | + | } | |
1554 | + | ||
1555 | + | ||
1556 | + | func in (io,hQ,ip) = if ((size(io) != 3)) | |
1555 | 1557 | then throw("cargoListStr should contain exactly 2 ':' separators") | |
1556 | 1558 | else { | |
1557 | - | let | |
1558 | - | let | |
1559 | - | let | |
1559 | + | let iq = split(io[0], "_") | |
1560 | + | let ir = split(io[1], "_") | |
1561 | + | let is = if ((io[2] == "")) | |
1560 | 1562 | then nil | |
1561 | - | else split_4C( | |
1562 | - | if ((size( | |
1563 | + | else split_4C(io[2], "_") | |
1564 | + | if ((size(iq) != aG)) | |
1563 | 1565 | then throw("All 6 resources should be passed") | |
1564 | - | else if ((size( | |
1566 | + | else if ((size(ir) != aG)) | |
1565 | 1567 | then throw("All 6 materials should be passed") | |
1566 | 1568 | else { | |
1567 | - | let | |
1568 | - | let | |
1569 | - | let | |
1570 | - | let | |
1569 | + | let ha = ik(hQ) | |
1570 | + | let it = split(hQ[ba], "_") | |
1571 | + | let iu = split(hQ[bb], "_") | |
1572 | + | let iv = if ((hQ[bc] == "")) | |
1571 | 1573 | then nil | |
1572 | - | else split_4C( | |
1573 | - | let | |
1574 | - | let | |
1575 | - | let | |
1574 | + | else split_4C(hQ[bc], "_") | |
1575 | + | let gY = split(ip[bj], "_") | |
1576 | + | let iw = split(ip[bk], "_") | |
1577 | + | let ix = if ((ip[bl] == "")) | |
1576 | 1578 | then nil | |
1577 | - | else split_4C( | |
1578 | - | func | |
1579 | - | let | |
1580 | - | let | |
1581 | - | let | |
1582 | - | let | |
1583 | - | if (( | |
1584 | - | then $Tuple4(( | |
1585 | - | else if (( | |
1586 | - | then if (( | |
1587 | - | then throw((((("Attempt to take " + | |
1588 | - | else $Tuple4(( | |
1589 | - | else if ((-( | |
1590 | - | then throw((((("Attempt to take " + toString(-( | |
1591 | - | else $Tuple4(( | |
1579 | + | else split_4C(ip[bl], "_") | |
1580 | + | func iy (eS,hT) = { | |
1581 | + | let gL = eS._1 | |
1582 | + | let iz = parseIntValue(hT) | |
1583 | + | let iA = parseIntValue(it[gL]) | |
1584 | + | let iB = parseIntValue(gY[gL]) | |
1585 | + | if ((iz == 0)) | |
1586 | + | then $Tuple4((gL + 1), (eS._2 :+ it[gL]), (eS._3 :+ gY[gL]), eS._4) | |
1587 | + | else if ((iz > 0)) | |
1588 | + | then if ((iz > iB)) | |
1589 | + | then throw((((("Attempt to take " + hT) + " from backpack, but only ") + toString(iB)) + " available")) | |
1590 | + | else $Tuple4((gL + 1), (eS._2 :+ toString((iA + iz))), (eS._3 :+ toString((iB - iz))), (eS._4 + iz)) | |
1591 | + | else if ((-(iz) > iA)) | |
1592 | + | then throw((((("Attempt to take " + toString(-(iz))) + " from warehouse, but only ") + toString(iA)) + " available")) | |
1593 | + | else $Tuple4((gL + 1), (eS._2 :+ toString((iA + iz))), (eS._3 :+ toString((iB - iz))), (eS._4 + iz)) | |
1592 | 1594 | } | |
1593 | 1595 | ||
1594 | - | let | |
1595 | - | let | |
1596 | - | let | |
1597 | - | let | |
1598 | - | func | |
1599 | - | then | |
1600 | - | else | |
1601 | - | ||
1602 | - | func | |
1603 | - | then | |
1596 | + | let fd = { | |
1597 | + | let eU = iq | |
1598 | + | let eV = size(eU) | |
1599 | + | let eW = $Tuple4(0, nil, nil, 0) | |
1600 | + | func eX (eY,eZ) = if ((eZ >= eV)) | |
1601 | + | then eY | |
1602 | + | else iy(eY, eU[eZ]) | |
1603 | + | ||
1604 | + | func fa (eY,eZ) = if ((eZ >= eV)) | |
1605 | + | then eY | |
1604 | 1606 | else throw("List size exceeds 6") | |
1605 | 1607 | ||
1606 | - | | |
1608 | + | fa(eX(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5), 6) | |
1607 | 1609 | } | |
1608 | - | func | |
1609 | - | let | |
1610 | - | let | |
1611 | - | let | |
1612 | - | let | |
1613 | - | if (( | |
1614 | - | then $Tuple4(( | |
1615 | - | else if (( | |
1616 | - | then if (( | |
1617 | - | then throw((((("Attempt to take " + | |
1618 | - | else $Tuple4(( | |
1619 | - | else if ((-( | |
1620 | - | then throw((((("Attempt to take " + toString(-( | |
1621 | - | else $Tuple4(( | |
1610 | + | func iC (eS,hT) = { | |
1611 | + | let gL = eS._1 | |
1612 | + | let iz = parseIntValue(hT) | |
1613 | + | let iD = parseIntValue(iu[gL]) | |
1614 | + | let iE = parseIntValue(iw[gL]) | |
1615 | + | if ((iz == 0)) | |
1616 | + | then $Tuple4((gL + 1), (eS._2 :+ iu[gL]), (eS._3 :+ iw[gL]), eS._4) | |
1617 | + | else if ((iz > 0)) | |
1618 | + | then if ((iz > iE)) | |
1619 | + | then throw((((("Attempt to take " + hT) + " from backpack, but only ") + toString(iE)) + " available")) | |
1620 | + | else $Tuple4((gL + 1), (eS._2 :+ toString((iD + iz))), (eS._3 :+ toString((iE - iz))), (eS._4 + iz)) | |
1621 | + | else if ((-(iz) > iD)) | |
1622 | + | then throw((((("Attempt to take " + toString(-(iz))) + " from warehouse, but only ") + toString(iD)) + " available")) | |
1623 | + | else $Tuple4((gL + 1), (eS._2 :+ toString((iD + iz))), (eS._3 :+ toString((iE - iz))), (eS._4 + iz)) | |
1622 | 1624 | } | |
1623 | 1625 | ||
1624 | - | let | |
1625 | - | let | |
1626 | - | let | |
1627 | - | let | |
1628 | - | func | |
1629 | - | then | |
1630 | - | else | |
1631 | - | ||
1632 | - | func | |
1633 | - | then | |
1626 | + | let gr = { | |
1627 | + | let eU = ir | |
1628 | + | let eV = size(eU) | |
1629 | + | let eW = $Tuple4(0, nil, nil, fd._4) | |
1630 | + | func hG (eY,eZ) = if ((eZ >= eV)) | |
1631 | + | then eY | |
1632 | + | else iC(eY, eU[eZ]) | |
1633 | + | ||
1634 | + | func hH (eY,eZ) = if ((eZ >= eV)) | |
1635 | + | then eY | |
1634 | 1636 | else throw("List size exceeds 6") | |
1635 | 1637 | ||
1636 | - | hG( | |
1638 | + | hH(hG(hG(hG(hG(hG(hG(eW, 0), 1), 2), 3), 4), 5), 6) | |
1637 | 1639 | } | |
1638 | - | func | |
1639 | - | let | |
1640 | - | let | |
1641 | - | let | |
1642 | - | then parseIntValue( | |
1640 | + | func iF (eS,hT) = { | |
1641 | + | let gL = eS._1 | |
1642 | + | let iz = parseIntValue(hT) | |
1643 | + | let iG = if ((size(iv) > gL)) | |
1644 | + | then parseIntValue(iv[gL]) | |
1643 | 1645 | else 0 | |
1644 | - | let | |
1645 | - | then parseIntValue( | |
1646 | + | let iH = if ((size(ix) > gL)) | |
1647 | + | then parseIntValue(ix[gL]) | |
1646 | 1648 | else 0 | |
1647 | - | if (( | |
1648 | - | then $Tuple4(( | |
1649 | - | else if (( | |
1650 | - | then if (( | |
1651 | - | then throw((((("Attempt to take " + | |
1649 | + | if ((iz == 0)) | |
1650 | + | then $Tuple4((gL + 1), (eS._2 :+ toString(iG)), (eS._3 :+ toString(iH)), eS._4) | |
1651 | + | else if ((iz > 0)) | |
1652 | + | then if ((iz > iH)) | |
1653 | + | then throw((((("Attempt to take " + hT) + " from backpack, but only ") + toString(iH)) + " available")) | |
1652 | 1654 | else { | |
1653 | - | let | |
1654 | - | $Tuple4(( | |
1655 | + | let fU = (eI((iG + iz), aY) - eI(iG, aY)) | |
1656 | + | $Tuple4((gL + 1), (eS._2 :+ toString((iG + iz))), (eS._3 :+ toString((iH - iz))), (eS._4 + fU)) | |
1655 | 1657 | } | |
1656 | - | else if ((-( | |
1657 | - | then throw((((("Attempt to take " + toString(-( | |
1658 | + | else if ((-(iz) > iG)) | |
1659 | + | then throw((((("Attempt to take " + toString(-(iz))) + " from warehouse, but only ") + toString(iG)) + " available")) | |
1658 | 1660 | else { | |
1659 | - | let | |
1660 | - | $Tuple4(( | |
1661 | + | let fU = (eI((iG + iz), aY) - eI(iG, aY)) | |
1662 | + | $Tuple4((gL + 1), (eS._2 :+ toString((iG + iz))), (eS._3 :+ toString((iH - iz))), (eS._4 + fU)) | |
1661 | 1663 | } | |
1662 | 1664 | } | |
1663 | 1665 | ||
1664 | - | let | |
1666 | + | let gv = if ((size(is) != 0)) | |
1665 | 1667 | then { | |
1666 | - | let | |
1667 | - | let | |
1668 | - | let | |
1669 | - | func | |
1670 | - | then | |
1671 | - | else | |
1672 | - | ||
1673 | - | func | |
1674 | - | then | |
1668 | + | let eU = is | |
1669 | + | let eV = size(eU) | |
1670 | + | let eW = $Tuple4(0, nil, nil, gr._4) | |
1671 | + | func hJ (eY,eZ) = if ((eZ >= eV)) | |
1672 | + | then eY | |
1673 | + | else iF(eY, eU[eZ]) | |
1674 | + | ||
1675 | + | func hK (eY,eZ) = if ((eZ >= eV)) | |
1676 | + | then eY | |
1675 | 1677 | else throw("List size exceeds 50") | |
1676 | 1678 | ||
1677 | - | hJ( | |
1679 | + | hK(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(eW, 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) | |
1678 | 1680 | } | |
1679 | - | else $Tuple4(0, | |
1680 | - | let | |
1681 | - | if (( | |
1682 | - | then throw((((("Attempt to put total " + toString( | |
1683 | - | else $Tuple7(makeString( | |
1681 | + | else $Tuple4(0, iv, ix, gr._4) | |
1682 | + | let iI = gv._4 | |
1683 | + | if ((iI > ha)) | |
1684 | + | then throw((((("Attempt to put total " + toString(iI)) + " stuff, but only ") + toString(ha)) + " warehouse space left")) | |
1685 | + | else $Tuple7(makeString(fd._2, "_"), makeString(gr._2, "_"), makeString_2C(gv._2, "_"), makeString(fd._3, "_"), makeString(gr._3, "_"), makeString_2C(gv._3, "_"), iI) | |
1684 | 1686 | } | |
1685 | 1687 | } | |
1686 | 1688 | ||
1687 | 1689 | ||
1688 | - | func | |
1689 | - | let | |
1690 | - | let | |
1691 | - | let | |
1692 | - | let | |
1693 | - | let | |
1694 | - | let | |
1695 | - | let | |
1696 | - | let | |
1697 | - | let | |
1698 | - | let | |
1699 | - | $Tuple2([IntegerEntry( | |
1700 | - | } | |
1701 | - | ||
1702 | - | ||
1703 | - | func | |
1690 | + | func iJ (iK,iL) = { | |
1691 | + | let bM = toString(iK) | |
1692 | + | let iM = hg(toBigInt(iL)) | |
1693 | + | let iN = valueOrElse(getInteger(eq()), (ep + 1)) | |
1694 | + | let eu = toString(iN) | |
1695 | + | let hp = toInt((iM % ej)) | |
1696 | + | let gO = hn(iM, hp) | |
1697 | + | let du = aQ[hp] | |
1698 | + | let iO = Issue(eH(eu, "S"), makeString([eu, "S", gO, du], "_"), 1, 0, false) | |
1699 | + | let bq = calculateAssetId(iO) | |
1700 | + | let iP = toBase58String(bq) | |
1701 | + | $Tuple2([IntegerEntry(eq(), (iN + 1)), iO, StringEntry(et(eu), iP), StringEntry(bp(iP), bM), StringEntry(ew(eu), bM), IntegerEntry(bz(iP), 0), IntegerEntry(ev(iP, bM), 0), ScriptTransfer(iK, 1, bq)], $Tuple2(iP, du)) | |
1702 | + | } | |
1703 | + | ||
1704 | + | ||
1705 | + | func iQ (bM,iR,iS) = if (!(sigVerify_8Kb(iR, iS, ea))) | |
1704 | 1706 | then throw("signature does not match") | |
1705 | 1707 | else { | |
1706 | - | let | |
1707 | - | let | |
1708 | - | let | |
1709 | - | let | |
1710 | - | let | |
1711 | - | let | |
1712 | - | let | |
1713 | - | let | |
1714 | - | if (if (( | |
1708 | + | let fq = split_4C(toUtf8String(iR), ";") | |
1709 | + | let iT = split_4C(fq[0], "|") | |
1710 | + | let iU = split(iT[eD], "_") | |
1711 | + | let iV = parseIntValue(iU[0]) | |
1712 | + | let iW = parseIntValue(iU[1]) | |
1713 | + | let iX = split(fq[1], ":") | |
1714 | + | let iY = iX[0] | |
1715 | + | let iZ = parseIntValue(iT[eE]) | |
1716 | + | if (if ((iZ > (lastBlock.timestamp + ec))) | |
1715 | 1717 | then true | |
1716 | - | else ((lastBlock.timestamp - | |
1717 | - | then throw(((("signature outdated: logTime=" + toString( | |
1718 | + | else ((lastBlock.timestamp - ec) > iZ)) | |
1719 | + | then throw(((("signature outdated: logTime=" + toString(iZ)) + ", bcTime=") + toString(lastBlock.timestamp))) | |
1718 | 1720 | else { | |
1719 | - | let | |
1720 | - | let | |
1721 | - | if (( | |
1722 | - | then throw(((("Tx ids don't match! In state: " + | |
1721 | + | let ja = iX[1] | |
1722 | + | let jb = valueOrElse(getString(dM(bM)), "") | |
1723 | + | if ((jb != ja)) | |
1724 | + | then throw(((("Tx ids don't match! In state: " + jb) + ", in msg: ") + ja)) | |
1723 | 1725 | else { | |
1724 | - | let | |
1725 | - | let | |
1726 | - | let | |
1727 | - | let | |
1728 | - | if (( | |
1729 | - | then throw(((("oldHealth=" + toString( | |
1730 | - | else if ((0 >= | |
1726 | + | let B = valueOrErrorMessage(getString(bI(bM)), "You don't have a duck staked") | |
1727 | + | let jc = A(B) | |
1728 | + | let jd = ah(valueOrElse(getInteger(E(B)), 0)) | |
1729 | + | let je = valueOrElse(getInteger(jc), jd) | |
1730 | + | if ((je != iV)) | |
1731 | + | then throw(((("oldHealth=" + toString(je)) + " from state does not match one from flight log=") + toString(iV))) | |
1732 | + | else if ((0 >= iV)) | |
1731 | 1733 | then throw("You can't fly with zero health") | |
1732 | - | else if (!( | |
1734 | + | else if (!(gx(B))) | |
1733 | 1735 | then throw("Equipment incompatible") | |
1734 | 1736 | else { | |
1735 | - | let | |
1736 | - | then | |
1737 | + | let jf = if ((size(iT) > eF)) | |
1738 | + | then iT[eF] | |
1737 | 1739 | else "" | |
1738 | - | let | |
1739 | - | then | |
1740 | + | let jg = if ((size(iT) > eG)) | |
1741 | + | then iT[eG] | |
1740 | 1742 | else "" | |
1741 | - | let | |
1742 | - | then ( | |
1743 | + | let jh = if (if ((iW > 0)) | |
1744 | + | then (jf == "$") | |
1743 | 1745 | else false) | |
1744 | - | then | |
1746 | + | then dA(invoke(dc, "sendUsdtPrize", [bM], nil)) | |
1745 | 1747 | else 0 | |
1746 | - | $Tuple5( | |
1748 | + | $Tuple5(iW, B, jh, iY, jg) | |
1747 | 1749 | } | |
1748 | 1750 | } | |
1749 | 1751 | } | |
1750 | 1752 | } | |
1751 | 1753 | ||
1752 | 1754 | ||
1753 | - | func | |
1754 | - | let | |
1755 | - | let | |
1756 | - | let | |
1757 | - | let | |
1758 | - | (( | |
1759 | - | } | |
1760 | - | ||
1761 | - | ||
1762 | - | func | |
1763 | - | let | |
1764 | - | then $Tuple2( | |
1755 | + | func ji (Q,jj) = { | |
1756 | + | let ib = valueOrElse(getInteger(bz(Q)), 0) | |
1757 | + | let jk = valueOrElse(getInteger(bt(aF, Q)), 0) | |
1758 | + | let jl = (ib / 6) | |
1759 | + | let jm = (ib / 7) | |
1760 | + | ((aI + fraction(aI, ((ib + jl) + (2 * jm)), 5)) + fraction(aI, jk, (jj * 5))) | |
1761 | + | } | |
1762 | + | ||
1763 | + | ||
1764 | + | func jn (d,jo,jp) = { | |
1765 | + | let jq = if ((jo == eA)) | |
1766 | + | then $Tuple2(jp, valueOrElse(getString(bI(d)), "")) | |
1765 | 1767 | else { | |
1766 | - | let | |
1767 | - | let | |
1768 | - | let | |
1769 | - | if (( | |
1770 | - | then throw((("Duck location type is " + | |
1771 | - | else $Tuple2( | |
1772 | - | } | |
1773 | - | let | |
1774 | - | let | |
1775 | - | let | |
1776 | - | let | |
1777 | - | let | |
1778 | - | let | |
1779 | - | if (( | |
1780 | - | then throw(( | |
1768 | + | let B = valueOrErrorMessage(getString(bI(d)), "You don't have a duck staked") | |
1769 | + | let jr = valueOrElse(getString(bK(B)), aK) | |
1770 | + | let cg = split(value(jr), "_") | |
1771 | + | if ((cg[bn] != "L")) | |
1772 | + | then throw((("Duck location type is " + cg[bn]) + ", but should be L")) | |
1773 | + | else $Tuple2(cg[bo], B) | |
1774 | + | } | |
1775 | + | let Q = jq._1 | |
1776 | + | let js = jq._2 | |
1777 | + | let jt = value(assetInfo(fromBase58String(Q))) | |
1778 | + | let ju = bs(Q) | |
1779 | + | let jv = valueOrErrorMessage(getInteger(ju), (("Land " + jt.name) + " is not staked")) | |
1780 | + | let jw = valueOrErrorMessage(getString(bp(Q)), (("NFT " + jt.name) + " is orphaned")) | |
1781 | + | if ((jw != d)) | |
1782 | + | then throw((aD + " is not yours")) | |
1781 | 1783 | else { | |
1782 | - | let | |
1783 | - | $Tuple4( | |
1784 | - | } | |
1785 | - | } | |
1786 | - | ||
1787 | - | ||
1788 | - | func | |
1784 | + | let jx = split(jt.description, "_") | |
1785 | + | $Tuple4(js, Q, jx, jv) | |
1786 | + | } | |
1787 | + | } | |
1788 | + | ||
1789 | + | ||
1790 | + | func jy (d,eJ,jo,jp) = if ((0 > eJ)) | |
1789 | 1791 | then throw("Negative amount") | |
1790 | 1792 | else { | |
1791 | - | let | |
1792 | - | let | |
1793 | - | let | |
1794 | - | let | |
1795 | - | if ((0 > | |
1796 | - | then throw(((("Saved timestamp is in future, saved = " + toString( | |
1793 | + | let gb = jn(d, jo, jp) | |
1794 | + | let dJ = gb._3[dj] | |
1795 | + | let gH = gN(gb._3[dk]) | |
1796 | + | let gR = (lastBlock.timestamp - gb._4) | |
1797 | + | if ((0 > gR)) | |
1798 | + | then throw(((("Saved timestamp is in future, saved = " + toString(gb._4)) + ", current = ") + toString(lastBlock.timestamp))) | |
1797 | 1799 | else { | |
1798 | - | let | |
1799 | - | let | |
1800 | - | let | |
1801 | - | if (( | |
1802 | - | then throw(((("Not enough resources, available = " + toString( | |
1800 | + | let jj = dI(dJ) | |
1801 | + | let jz = ji(gb._2, jj) | |
1802 | + | let jA = fraction(gR, (jz * jj), a) | |
1803 | + | if ((eJ > jA)) | |
1804 | + | then throw(((("Not enough resources, available = " + toString(jA)) + ", requested = ") + toString(eJ))) | |
1803 | 1805 | else { | |
1804 | - | let | |
1805 | - | let | |
1806 | - | let | |
1807 | - | let | |
1808 | - | let | |
1809 | - | let | |
1810 | - | let | |
1811 | - | let | |
1812 | - | let | |
1813 | - | if (if (( | |
1814 | - | then ( | |
1806 | + | let jB = fraction((jA - eJ), a, (jz * jj)) | |
1807 | + | let jC = (lastBlock.timestamp - jB) | |
1808 | + | let ia = (jj / cG) | |
1809 | + | let gZ = gV(gH, (gR - jB), ia, jz) | |
1810 | + | let hZ = by(gb._2) | |
1811 | + | let ib = valueOrElse(getInteger(bz(gb._2)), 0) | |
1812 | + | let hQ = hY(hZ, ia, ib) | |
1813 | + | let ih = split(hQ[bd], "_") | |
1814 | + | let ha = parseIntValue(ih[bg]) | |
1815 | + | if (if ((jo == eA)) | |
1816 | + | then (eJ > ha) | |
1815 | 1817 | else false) | |
1816 | - | then throw((("Only " + toString( | |
1818 | + | then throw((("Only " + toString(ha)) + " space left in warehouse")) | |
1817 | 1819 | else { | |
1818 | - | let | |
1819 | - | let | |
1820 | - | let | |
1821 | - | let | |
1822 | - | let | |
1823 | - | then $Tuple4( | |
1824 | - | else if (( | |
1825 | - | then $Tuple4( | |
1820 | + | let hM = bJ(gb._1) | |
1821 | + | let ip = hL(hM) | |
1822 | + | let gY = split(ip[bj], "_") | |
1823 | + | let gX = split(hQ[ba], "_") | |
1824 | + | let jD = if ((jo == eA)) | |
1825 | + | then $Tuple4(gP(gX, gH, (gR - jB), ia, jz), ip[bj], (parseIntValue(ih[bf]) + gZ._2), (parseIntValue(ih[bg]) - gZ._2)) | |
1826 | + | else if ((jo == eB)) | |
1827 | + | then $Tuple4(hQ[ba], gP(gY, gH, (gR - jB), ia, jz), parseIntValue(ih[bf]), parseIntValue(ih[bg])) | |
1826 | 1828 | else { | |
1827 | - | let | |
1828 | - | let | |
1829 | - | $Tuple4( | |
1829 | + | let jE = gW(gX, gY, gZ, ha) | |
1830 | + | let jF = min([parseIntValue(ih[bg]), gZ._2]) | |
1831 | + | $Tuple4(jE._1, jE._2, (parseIntValue(ih[bf]) + jF), (parseIntValue(ih[bg]) - jF)) | |
1830 | 1832 | } | |
1831 | - | let | |
1832 | - | let | |
1833 | - | let | |
1834 | - | let | |
1835 | - | $Tuple5([IntegerEntry( | |
1833 | + | let jG = jD._1 | |
1834 | + | let jH = jD._2 | |
1835 | + | let jI = jD._3 | |
1836 | + | let jJ = jD._4 | |
1837 | + | $Tuple5([IntegerEntry(bs(gb._2), jC), IntegerEntry(bv(aD, gb._2, d), jC)], hM, [ip[bi], jH, ip[bk], ip[bl]], hZ, [hQ[aZ], jG, hQ[bb], hQ[bc], makeString([ih[be], toString(jI), toString(jJ), ih[bh]], "_")]) | |
1836 | 1838 | } | |
1837 | 1839 | } | |
1838 | 1840 | } | |
1839 | 1841 | } | |
1840 | 1842 | ||
1841 | 1843 | ||
1842 | - | func | |
1843 | - | let | |
1844 | - | let | |
1845 | - | let | |
1846 | - | | |
1847 | - | } | |
1848 | - | ||
1849 | - | ||
1850 | - | func | |
1851 | - | let | |
1852 | - | let | |
1853 | - | let | |
1854 | - | let | |
1855 | - | let | |
1856 | - | if (if (!( | |
1857 | - | then ( | |
1844 | + | func jK (d,Q,jj,jo) = { | |
1845 | + | let ju = bs(Q) | |
1846 | + | let jv = value(getInteger(ju)) | |
1847 | + | let jA = (fraction((lastBlock.timestamp - jv), ji(Q, jj), a) * jj) | |
1848 | + | jy(d, jA, jo, Q) | |
1849 | + | } | |
1850 | + | ||
1851 | + | ||
1852 | + | func jL (ff,iK,jM,Q) = { | |
1853 | + | let d = toString(iK) | |
1854 | + | let gb = jn(d, eC, Q) | |
1855 | + | let jj = dI(gb._3[dj]) | |
1856 | + | let jN = bz(gb._2) | |
1857 | + | let jO = valueOrElse(getInteger(jN), 0) | |
1858 | + | if (if (!(cv)) | |
1859 | + | then (jO >= 3) | |
1858 | 1860 | else false) | |
1859 | 1861 | then throw("Currently max infrastructure level = 3") | |
1860 | 1862 | else { | |
1861 | - | let | |
1862 | - | let | |
1863 | - | if (if ( | |
1864 | - | then ( | |
1863 | + | let jP = ((sqrt(jj, 0, 0, DOWN) / 5) + 2) | |
1864 | + | let am = (jO + 1) | |
1865 | + | if (if (cv) | |
1866 | + | then (am > jP) | |
1865 | 1867 | else false) | |
1866 | - | then throw(("Currently max infrastructure level = " + toString( | |
1868 | + | then throw(("Currently max infrastructure level = " + toString(jP))) | |
1867 | 1869 | else { | |
1868 | - | let | |
1869 | - | if (if (!( | |
1870 | - | then ( | |
1870 | + | let jQ = fraction(ef, (jj * am), cG) | |
1871 | + | if (if (!(ff)) | |
1872 | + | then (jM != jQ) | |
1871 | 1873 | else false) | |
1872 | - | then throw(("Payment attached should be " + toString( | |
1874 | + | then throw(("Payment attached should be " + toString(jQ))) | |
1873 | 1875 | else { | |
1874 | - | let | |
1875 | - | let | |
1876 | - | let | |
1877 | - | let | |
1878 | - | let | |
1879 | - | let | |
1880 | - | let | |
1881 | - | let | |
1882 | - | let | |
1883 | - | let | |
1884 | - | let | |
1885 | - | let | |
1886 | - | $Tuple3(([IntegerEntry( | |
1876 | + | let hM = bJ(gb._1) | |
1877 | + | let ip = hL(hM) | |
1878 | + | let jR = split(ip[bk], "_") | |
1879 | + | let jS = fraction(cB, (jj * am), cG) | |
1880 | + | let jT = makeString(fe(ff, jR, jS), "_") | |
1881 | + | let jU = jK(d, gb._2, jj, eC) | |
1882 | + | let jV = jU._5 | |
1883 | + | let jW = hN(jV[aZ]) | |
1884 | + | let jX = makeString([split(jV[aZ], "_")[0], toString(am)], "_") | |
1885 | + | let jY = hN(jX) | |
1886 | + | let ih = split(jV[bd], "_") | |
1887 | + | let jZ = makeString([ih[be], ih[bf], toString(((parseIntValue(ih[bg]) + jY) - jW)), toString(jY)], "_") | |
1888 | + | $Tuple3(([IntegerEntry(jN, am), IntegerEntry(ev(gb._2, d), am), StringEntry(hM, makeString([ip[bi], jU._3[bj], jT, ip[bl]], ":")), StringEntry(jU._4, makeString([jX, jV[ba], jV[bb], jV[bc], jZ], ":"))] ++ jU._1), am, jS) | |
1887 | 1889 | } | |
1888 | 1890 | } | |
1889 | 1891 | } | |
1890 | 1892 | } | |
1891 | 1893 | ||
1892 | 1894 | ||
1893 | - | func | |
1894 | - | let | |
1895 | - | let | |
1896 | - | let | |
1897 | - | let | |
1898 | - | let | |
1899 | - | let | |
1900 | - | $Tuple2([IntegerEntry( | |
1901 | - | } | |
1902 | - | ||
1903 | - | ||
1904 | - | func | |
1905 | - | let | |
1906 | - | let | |
1907 | - | let | |
1908 | - | let | |
1909 | - | let | |
1910 | - | let | |
1911 | - | $Tuple2([IntegerEntry( | |
1912 | - | } | |
1913 | - | ||
1914 | - | ||
1915 | - | func | |
1916 | - | let | |
1917 | - | let | |
1918 | - | let | |
1919 | - | if (!(isDefined( | |
1895 | + | func ka (B,kb) = { | |
1896 | + | let kc = E(B) | |
1897 | + | let kd = D(B) | |
1898 | + | let ag = valueOrElse(getInteger(kd), 0) | |
1899 | + | let al = (ag + kb) | |
1900 | + | let ke = aj(valueOrElse(getInteger(kc), 0), al) | |
1901 | + | let kf = F(B) | |
1902 | + | $Tuple2([IntegerEntry(kc, ke[0]), IntegerEntry(kd, al), IntegerEntry(kf, (valueOrElse(getInteger(kf), 0) + ke[1]))], al) | |
1903 | + | } | |
1904 | + | ||
1905 | + | ||
1906 | + | func kg (d,kb) = { | |
1907 | + | let kc = I(d) | |
1908 | + | let kd = H(d) | |
1909 | + | let ag = valueOrElse(getInteger(kd), 0) | |
1910 | + | let al = (ag + kb) | |
1911 | + | let ke = aj(valueOrElse(getInteger(kc), 0), al) | |
1912 | + | let kf = J(d) | |
1913 | + | $Tuple2([IntegerEntry(kc, ke[0]), IntegerEntry(kd, al), IntegerEntry(kf, (valueOrElse(getInteger(kf), 0) + ke[1]))], al) | |
1914 | + | } | |
1915 | + | ||
1916 | + | ||
1917 | + | func kh (d) = { | |
1918 | + | let B = valueOrErrorMessage(getString(bI(d)), "You don't have a duck staked") | |
1919 | + | let ki = bD(d) | |
1920 | + | let kj = getString(ki) | |
1921 | + | if (!(isDefined(kj))) | |
1920 | 1922 | then throw("You are not eligible for ONBOARD artifact") | |
1921 | 1923 | else { | |
1922 | - | let | |
1923 | - | let | |
1924 | - | if (isDefined( | |
1925 | - | then throw(("You already used your ONBOARD artifact on duck " + value( | |
1924 | + | let kk = bF(d) | |
1925 | + | let kl = getString(kk) | |
1926 | + | if (isDefined(kl)) | |
1927 | + | then throw(("You already used your ONBOARD artifact on duck " + value(kl))) | |
1926 | 1928 | else { | |
1927 | - | let | |
1928 | - | let | |
1929 | - | if (isDefined( | |
1930 | - | then throw(((("The duck " + | |
1931 | - | else ([StringEntry( | |
1929 | + | let km = bE(B) | |
1930 | + | let kn = getString(km) | |
1931 | + | if (isDefined(kn)) | |
1932 | + | then throw(((("The duck " + B) + " already got points from ONBOARD artifact from user ") + value(kn))) | |
1933 | + | else ([StringEntry(kk, B), StringEntry(km, d)] ++ ka(B, ad)._1) | |
1932 | 1934 | } | |
1933 | 1935 | } | |
1934 | 1936 | } | |
1935 | 1937 | ||
1936 | 1938 | ||
1937 | - | func | |
1938 | - | let | |
1939 | - | let | |
1940 | - | let | |
1941 | - | let | |
1942 | - | if ((valueOrElse(getInteger( | |
1939 | + | func ko (d,jp) = { | |
1940 | + | let gb = jn(d, eC, jp) | |
1941 | + | let Q = gb._2 | |
1942 | + | let jj = dI(gb._3[dj]) | |
1943 | + | let kp = bt(aF, Q) | |
1944 | + | if ((valueOrElse(getInteger(kp), 0) > 0)) | |
1943 | 1945 | then throw("Presale artifact is already activated") | |
1944 | - | else if ((parseIntValue( | |
1945 | - | then throw(((( | |
1946 | + | else if ((parseIntValue(gb._3[di]) > ep)) | |
1947 | + | then throw((((aD + " ") + Q) + " is not eligible for presale artifact")) | |
1946 | 1948 | else { | |
1947 | - | let | |
1948 | - | ((( | |
1949 | + | let jU = jK(d, Q, jj, eC) | |
1950 | + | (((jU._1 :+ IntegerEntry(kp, jj)) :+ StringEntry(jU._2, makeString(jU._3, ":"))) :+ StringEntry(jU._4, makeString(jU._5, ":"))) | |
1949 | 1951 | } | |
1950 | 1952 | } | |
1951 | 1953 | ||
1952 | 1954 | ||
1953 | - | func | |
1954 | - | let | |
1955 | - | let | |
1956 | - | let | |
1957 | - | let | |
1958 | - | let | |
1959 | - | let | |
1960 | - | if (( | |
1955 | + | func kq (B) = { | |
1956 | + | let cf = valueOrElse(getInteger(dg, bQ), 0) | |
1957 | + | let jr = split(valueOrElse(getString(bK(B)), aK), "_") | |
1958 | + | let ay = lastBlock.timestamp | |
1959 | + | let ch = bZ(dg, cf) | |
1960 | + | let cb = ch[bV] | |
1961 | + | let cc = ch[bW] | |
1962 | + | if ((jr[bn] != "T")) | |
1961 | 1963 | then false | |
1962 | - | else if (if (if ((parseIntValue( | |
1963 | - | then ( | |
1964 | + | else if (if (if ((parseIntValue(jr[bm]) == cf)) | |
1965 | + | then (cc[bY] == "INPROGRESS") | |
1964 | 1966 | else false) | |
1965 | - | then (parseIntValue( | |
1967 | + | then (parseIntValue(cb[bX]) > ay) | |
1966 | 1968 | else false) | |
1967 | 1969 | then throw("Your duck is taking part in the tournament") | |
1968 | - | else | |
1969 | - | } | |
1970 | - | ||
1971 | - | ||
1972 | - | func | |
1970 | + | else dE(invoke(this, "exitTournamentInternal", [B], nil)) | |
1971 | + | } | |
1972 | + | ||
1973 | + | ||
1974 | + | func kr (B) = if (!(cw)) | |
1973 | 1975 | then false | |
1974 | 1976 | else { | |
1975 | - | let | |
1976 | - | let | |
1977 | - | if (( | |
1977 | + | let jr = split(valueOrElse(getString(bK(B)), aK), "_") | |
1978 | + | let ay = lastBlock.timestamp | |
1979 | + | if ((jr[bn] != "D")) | |
1978 | 1980 | then false | |
1979 | 1981 | else { | |
1980 | - | let | |
1981 | - | let | |
1982 | - | if (if (( | |
1983 | - | then (3 > | |
1982 | + | let cj = parseIntValue(jr[bm]) | |
1983 | + | let ck = parseIntValue(jr[bo]) | |
1984 | + | if (if ((ay > (cj + aO))) | |
1985 | + | then (3 > ck) | |
1984 | 1986 | else false) | |
1985 | 1987 | then throw("Your duck is on delivery mission") | |
1986 | - | else | |
1988 | + | else dE(invoke(this, "exitDeliveryInternal", [B], nil)) | |
1987 | 1989 | } | |
1988 | 1990 | } | |
1989 | 1991 | ||
1990 | 1992 | ||
1991 | - | func | |
1992 | - | let | |
1993 | - | let | |
1994 | - | let | |
1995 | - | let | |
1996 | - | let | |
1997 | - | let | |
1998 | - | let | |
1999 | - | let | |
1993 | + | func ks (B,kt,iW) = { | |
1994 | + | let jr = split(valueOrElse(getString(bK(B)), aK), "_") | |
1995 | + | let ay = lastBlock.timestamp | |
1996 | + | let cj = parseIntValue(jr[bm]) | |
1997 | + | let ck = parseIntValue(jr[bo]) | |
1998 | + | let jw = valueOrErrorMessage(getString(bH(B)), "NFT duck is orphaned") | |
1999 | + | let ku = A(B) | |
2000 | + | let kv = getIntegerValue(ku) | |
2001 | + | let kw = if ((ck >= 3)) | |
2000 | 2002 | then { | |
2001 | - | let | |
2002 | - | if (( | |
2003 | + | let kx = invoke(dd, "sendDeliveryReward", [jw], nil) | |
2004 | + | if ((kx == kx)) | |
2003 | 2005 | then nil | |
2004 | 2006 | else throw("Strict value is not equal to itself.") | |
2005 | 2007 | } | |
2006 | - | else if (if (if ( | |
2007 | - | then ( | |
2008 | + | else if (if (if (kt) | |
2009 | + | then (iW > 0) | |
2008 | 2010 | else false) | |
2009 | - | then ( | |
2011 | + | then (ay > (cj + aO)) | |
2010 | 2012 | else false) | |
2011 | 2013 | then throw("Your duck is still on delivery mission") | |
2012 | 2014 | else { | |
2013 | - | let | |
2014 | - | let | |
2015 | - | if (( | |
2016 | - | then if ((0 >= | |
2015 | + | let ky = valueOrElse(getInteger(dd, bP), 0) | |
2016 | + | let kz = invoke(dd, "updateDeliveryLocked", [(ky - aN)], nil) | |
2017 | + | if ((kz == kz)) | |
2018 | + | then if ((0 >= kv)) | |
2017 | 2019 | then nil | |
2018 | - | else [IntegerEntry( | |
2020 | + | else [IntegerEntry(U(B), (cj + b))] | |
2019 | 2021 | else throw("Strict value is not equal to itself.") | |
2020 | 2022 | } | |
2021 | - | let | |
2022 | - | let | |
2023 | - | $Tuple4( | |
2024 | - | } | |
2025 | - | ||
2026 | - | ||
2027 | - | func | |
2028 | - | let | |
2029 | - | if ( | |
2023 | + | let kA = getIntegerValue(K(B)) | |
2024 | + | let kB = getStringValue(L(B)) | |
2025 | + | $Tuple4(kw, [IntegerEntry(ku, kA), StringEntry(bK(B), kB)], kB, kA) | |
2026 | + | } | |
2027 | + | ||
2028 | + | ||
2029 | + | func kC (kD,am,kE,d,kF,kG) = { | |
2030 | + | let B = valueOrErrorMessage(getString(bI(d)), "You don't have a duck staked") | |
2031 | + | if (kq(B)) | |
2030 | 2032 | then throw("mergeInternal_checkTournament") | |
2031 | - | else if ( | |
2033 | + | else if (kr(B)) | |
2032 | 2034 | then throw("mergeInternal_checkDelivery") | |
2033 | 2035 | else { | |
2034 | - | func | |
2035 | - | let | |
2036 | - | let | |
2037 | - | let | |
2038 | - | let | |
2039 | - | if (( | |
2040 | - | then throw(( | |
2036 | + | func kH (eS,Q) = { | |
2037 | + | let jt = value(assetInfo(fromBase58String(Q))) | |
2038 | + | let ju = bs(Q) | |
2039 | + | let jv = valueOrErrorMessage(getInteger(ju), (("NFT " + jt.name) + " is not staked")) | |
2040 | + | let jw = valueOrErrorMessage(getString(bp(Q)), (("NFT " + jt.name) + " is orphaned")) | |
2041 | + | if ((jw != d)) | |
2042 | + | then throw((aD + " is not yours")) | |
2041 | 2043 | else { | |
2042 | - | let | |
2043 | - | let | |
2044 | - | if (if (( | |
2045 | - | then ( | |
2044 | + | let jx = split(jt.description, "_") | |
2045 | + | let du = jx[dl] | |
2046 | + | if (if ((eS._3 != "")) | |
2047 | + | then (eS._3 != du) | |
2046 | 2048 | else false) | |
2047 | 2049 | then throw("Lands should be on the same continent to merge") | |
2048 | 2050 | else { | |
2049 | - | let | |
2050 | - | let | |
2051 | - | let | |
2052 | - | let | |
2053 | - | let | |
2054 | - | let | |
2055 | - | let | |
2056 | - | let | |
2057 | - | let | |
2058 | - | if (("S" == | |
2051 | + | let dJ = jx[dj] | |
2052 | + | let kI = eS._1 | |
2053 | + | let gL = valueOrErrorMessage(indexOf(kI, dJ), "You haven't passed all the lands needed") | |
2054 | + | let kJ = (take(kI, gL) + drop(kI, (gL + 1))) | |
2055 | + | let jj = dI(dJ) | |
2056 | + | let kK = (eS._2 + valueOrElse(getInteger(bt(aF, Q)), 0)) | |
2057 | + | let ib = valueOrElse(getInteger(bz(Q)), 0) | |
2058 | + | let kL = { | |
2059 | + | let cz = dJ | |
2060 | + | if (("S" == cz)) | |
2059 | 2061 | then 3 | |
2060 | - | else if (("M" == | |
2062 | + | else if (("M" == cz)) | |
2061 | 2063 | then 4 | |
2062 | - | else if (("L" == | |
2064 | + | else if (("L" == cz)) | |
2063 | 2065 | then 5 | |
2064 | - | else if (("XL" == | |
2066 | + | else if (("XL" == cz)) | |
2065 | 2067 | then 6 | |
2066 | 2068 | else throw("Only S, M, L, XL can merge") | |
2067 | 2069 | } | |
2068 | - | if (( | |
2070 | + | if ((ib != kL)) | |
2069 | 2071 | then throw("All lands should be maxed to merge") | |
2070 | 2072 | else { | |
2071 | - | let | |
2072 | - | let | |
2073 | - | let | |
2074 | - | if ((0 > | |
2075 | - | then throw(((("Saved timestamp is in future, saved = " + toString( | |
2073 | + | let eu = jx[di] | |
2074 | + | let gH = gN(jx[dk]) | |
2075 | + | let gR = (lastBlock.timestamp - jv) | |
2076 | + | if ((0 > gR)) | |
2077 | + | then throw(((("Saved timestamp is in future, saved = " + toString(jv)) + ", current = ") + toString(lastBlock.timestamp))) | |
2076 | 2078 | else { | |
2077 | - | let | |
2078 | - | let | |
2079 | - | let | |
2080 | - | let | |
2081 | - | let | |
2082 | - | let | |
2083 | - | let | |
2084 | - | let | |
2085 | - | if (!(isDefined( | |
2086 | - | then throw(("Your staked lands don't contain " + | |
2079 | + | let jz = ji(Q, jj) | |
2080 | + | let ia = (jj / cG) | |
2081 | + | let jH = gP(split(eS._4, "_"), gH, gR, ia, jz) | |
2082 | + | let fc = gF(eS._6, gH, ia, -1) | |
2083 | + | let kM = gF(eS._10, gH, ia, -1) | |
2084 | + | let hv = gF(eS._9, gH, ia, 1) | |
2085 | + | let kN = eS._7 | |
2086 | + | let db = indexOf(kN, Q) | |
2087 | + | if (!(isDefined(db))) | |
2088 | + | then throw(("Your staked lands don't contain " + Q)) | |
2087 | 2089 | else { | |
2088 | - | let | |
2089 | - | let | |
2090 | - | $Tuple10( | |
2091 | - | then [DeleteEntry( | |
2092 | - | else nil)), | |
2090 | + | let kO = br(Q) | |
2091 | + | let kP = valueOrElse(getString(kO), "") | |
2092 | + | $Tuple10(kJ, kK, du, jH, ((((((((((((eS._5 :+ DeleteEntry(bs(Q))) :+ DeleteEntry(bv(aD, Q, d))) :+ DeleteEntry(et(eu))) :+ DeleteEntry(bp(Q))) :+ DeleteEntry(bz(Q))) :+ DeleteEntry(ev(Q, d))) :+ DeleteEntry(bt(aF, Q))) :+ DeleteEntry(ew(eu))) :+ DeleteEntry(by(Q))) :+ DeleteEntry(kO)) :+ Burn(fromBase58String(Q), 1)) ++ (if ((kP != "")) | |
2093 | + | then [DeleteEntry(er(kP))] | |
2094 | + | else nil)), fc, removeByIndex(kN, value(db)), (eS._8 + jj), hv, kM) | |
2093 | 2095 | } | |
2094 | 2096 | } | |
2095 | 2097 | } | |
2097 | 2099 | } | |
2098 | 2100 | } | |
2099 | 2101 | ||
2100 | - | let | |
2101 | - | let | |
2102 | - | let | |
2103 | - | let | |
2104 | - | let | |
2105 | - | let | |
2106 | - | then split_51C(value( | |
2102 | + | let hM = bJ(B) | |
2103 | + | let ip = hL(hM) | |
2104 | + | let gG = split(valueOrElse(getString(ds()), "0_0_0_0_0_0"), "_") | |
2105 | + | let kQ = dv(d) | |
2106 | + | let kR = getString(kQ) | |
2107 | + | let kS = if (isDefined(kR)) | |
2108 | + | then split_51C(value(kR), "_") | |
2107 | 2109 | else nil | |
2108 | - | let | |
2109 | - | let | |
2110 | - | let | |
2111 | - | let | |
2112 | - | let | |
2113 | - | let | |
2114 | - | func | |
2115 | - | then | |
2116 | - | else | |
2117 | - | ||
2118 | - | func | |
2119 | - | then | |
2110 | + | let kT = split(value(assetInfo(fromBase58String(kF[0]))).description, "_")[dl] | |
2111 | + | let kU = split(valueOrElse(getString(dt(kT)), "0_0_0_0_0_0"), "_") | |
2112 | + | let fd = { | |
2113 | + | let eU = kF | |
2114 | + | let eV = size(eU) | |
2115 | + | let eW = $Tuple10(kE, 0, "", ip[bj], nil, gG, kS, 0, split("0_0_0_0_0_0", "_"), kU) | |
2116 | + | func eX (eY,eZ) = if ((eZ >= eV)) | |
2117 | + | then eY | |
2118 | + | else kH(eY, eU[eZ]) | |
2119 | + | ||
2120 | + | func fa (eY,eZ) = if ((eZ >= eV)) | |
2121 | + | then eY | |
2120 | 2122 | else throw("List size exceeds 5") | |
2121 | 2123 | ||
2122 | - | | |
2124 | + | fa(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5) | |
2123 | 2125 | } | |
2124 | - | let | |
2125 | - | let | |
2126 | - | let | |
2127 | - | let | |
2128 | - | let | |
2129 | - | let | |
2130 | - | let | |
2131 | - | let | |
2132 | - | let | |
2133 | - | let | |
2134 | - | let | |
2135 | - | $Tuple2(((((((((((((((( | |
2136 | - | then StringEntry( | |
2137 | - | else DeleteEntry( | |
2126 | + | let du = fd._3 | |
2127 | + | let hp = valueOrErrorMessage(indexOf(aQ, du), ("Unknown continent: " + du)) | |
2128 | + | let gO = hu(fd._9, (dI(kD) / cG)) | |
2129 | + | let iN = valueOrElse(getInteger(eq()), (ep + 1)) | |
2130 | + | let kV = toString(iN) | |
2131 | + | let iO = Issue(eH(kV, kD), makeString([kV, kD, gO, du], "_"), 1, 0, false) | |
2132 | + | let bq = calculateAssetId(iO) | |
2133 | + | let kW = toBase58String(bq) | |
2134 | + | let jT = makeString(fe((kG > 0), split(ip[bk], "_"), kG), "_") | |
2135 | + | let kX = dw(d) | |
2136 | + | let kY = valueOrElse(getInteger(kX), 0) | |
2137 | + | $Tuple2((((((((((((((((fd._5 :+ (if ((size(fd._7) > 0)) | |
2138 | + | then StringEntry(kQ, makeString_11C(fd._7, "_")) | |
2139 | + | else DeleteEntry(kQ))) :+ IntegerEntry(kX, if ((fd._8 > kY)) | |
2138 | 2140 | then 0 | |
2139 | - | else ( | |
2141 | + | else (kY - fd._8))) :+ IntegerEntry(eq(), (iN + 1))) :+ iO) :+ StringEntry(et(kV), kW)) :+ StringEntry(bp(kW), d)) :+ StringEntry(ew(kV), d)) :+ IntegerEntry(bt(aF, kW), fd._2)) :+ IntegerEntry(bz(kW), am)) :+ IntegerEntry(ev(kW, d), am)) :+ StringEntry(hM, makeString([ip[bi], fd._4, jT, ip[bl]], ":"))) :+ StringEntry(ds(), makeString(fd._6, "_"))) :+ StringEntry(dt(du), makeString(fd._10, "_"))) :+ StringEntry(bK(B), makeString([du, "L", kW], "_"))) :+ ScriptTransfer(addressFromStringValue(d), 1, bq)), kW) | |
2140 | 2142 | } | |
2141 | 2143 | } | |
2142 | 2144 | ||
2143 | 2145 | ||
2144 | - | func | |
2145 | - | ||
2146 | - | ||
2147 | - | func | |
2148 | - | ||
2149 | - | ||
2150 | - | func | |
2151 | - | ||
2152 | - | ||
2153 | - | func | |
2154 | - | ||
2155 | - | ||
2156 | - | func | |
2157 | - | let | |
2158 | - | if ((4 == | |
2159 | - | then | |
2160 | - | else if ((3 == | |
2161 | - | then | |
2162 | - | else if ((5 == | |
2163 | - | then | |
2164 | - | else if ((2 == | |
2165 | - | then | |
2146 | + | func kZ (d,kF) = kC("M", 3, "SSSS", d, kF, 0) | |
2147 | + | ||
2148 | + | ||
2149 | + | func la (d,kF) = kC("L", 4, "SMM", d, kF, (cB * 4)) | |
2150 | + | ||
2151 | + | ||
2152 | + | func lb (d,kF) = kC("XL", 5, "SSSML", d, kF, (cB * 47)) | |
2153 | + | ||
2154 | + | ||
2155 | + | func lc (d,kF) = kC("XXL", 6, "LXL", d, kF, (cB * 54)) | |
2156 | + | ||
2157 | + | ||
2158 | + | func ld (d,kF) = { | |
2159 | + | let cz = size(kF) | |
2160 | + | if ((4 == cz)) | |
2161 | + | then kZ(d, kF) | |
2162 | + | else if ((3 == cz)) | |
2163 | + | then la(d, kF) | |
2164 | + | else if ((5 == cz)) | |
2165 | + | then lb(d, kF) | |
2166 | + | else if ((2 == cz)) | |
2167 | + | then lc(d, kF) | |
2166 | 2168 | else throw("Unknown merge") | |
2167 | 2169 | } | |
2168 | 2170 | ||
2169 | 2171 | ||
2170 | - | func | |
2171 | - | let | |
2172 | - | if (if ( | |
2173 | - | then isDefined( | |
2172 | + | func le (bM) = { | |
2173 | + | let lf = getString(bI(bM)) | |
2174 | + | if (if (cw) | |
2175 | + | then isDefined(lf) | |
2174 | 2176 | else false) | |
2175 | 2177 | then { | |
2176 | - | let | |
2177 | - | let | |
2178 | - | let | |
2179 | - | let | |
2180 | - | if (if (( | |
2178 | + | let B = value(lf) | |
2179 | + | let lg = bK(B) | |
2180 | + | let cg = split(valueOrElse(getString(lg), aK), "_") | |
2181 | + | let cj = parseIntValue(cg[bm]) | |
2182 | + | if (if ((cg[bn] != "D")) | |
2181 | 2183 | then true | |
2182 | - | else (lastBlock.timestamp > ( | |
2184 | + | else (lastBlock.timestamp > (cj + aO))) | |
2183 | 2185 | then nil | |
2184 | 2186 | else { | |
2185 | - | let | |
2186 | - | if ((parseIntValue( | |
2187 | + | let ku = A(B) | |
2188 | + | if ((parseIntValue(cg[bo]) >= 3)) | |
2187 | 2189 | then { | |
2188 | - | let | |
2189 | - | if (( | |
2190 | + | let kx = invoke(dd, "sendDeliveryReward", [bM], nil) | |
2191 | + | if ((kx == kx)) | |
2190 | 2192 | then nil | |
2191 | 2193 | else throw("Strict value is not equal to itself.") | |
2192 | 2194 | } | |
2193 | 2195 | else (({ | |
2194 | - | let | |
2195 | - | let | |
2196 | - | if (( | |
2197 | - | then if ((0 >= getIntegerValue( | |
2196 | + | let ky = valueOrElse(getInteger(dd, bP), 0) | |
2197 | + | let kz = invoke(dd, "updateDeliveryLocked", [(ky - aN)], nil) | |
2198 | + | if ((kz == kz)) | |
2199 | + | then if ((0 >= getIntegerValue(ku))) | |
2198 | 2200 | then nil | |
2199 | 2201 | else { | |
2200 | - | let | |
2201 | - | if (( | |
2202 | + | let lh = invoke(this, "saveInteger", [U(B), (cj + b)], nil) | |
2203 | + | if ((lh == lh)) | |
2202 | 2204 | then nil | |
2203 | 2205 | else throw("Strict value is not equal to itself.") | |
2204 | 2206 | } | |
2205 | 2207 | else throw("Strict value is not equal to itself.") | |
2206 | - | } :+ IntegerEntry( | |
2208 | + | } :+ IntegerEntry(ku, getIntegerValue(K(B)))) :+ StringEntry(lg, getStringValue(L(B)))) | |
2207 | 2209 | } | |
2208 | 2210 | } | |
2209 | 2211 | else nil | |
2210 | 2212 | } | |
2211 | 2213 | ||
2212 | 2214 | ||
2213 | - | func | |
2214 | - | then valueOrElse(getBoolean( | |
2215 | + | func li (gL) = if (if ((gL.originCaller != dc)) | |
2216 | + | then valueOrElse(getBoolean(dL()), false) | |
2215 | 2217 | else false) | |
2216 | 2218 | then throw("Contracts are under maintenance") | |
2217 | 2219 | else { | |
2218 | - | let | |
2219 | - | ( | |
2220 | + | let bM = toString(gL.originCaller) | |
2221 | + | (le(bM) :+ StringEntry(dM(bM), toBase58String(gL.transactionId))) | |
2220 | 2222 | } | |
2221 | 2223 | ||
2222 | 2224 | ||
2223 | - | func | |
2224 | - | then valueOrElse(getBoolean( | |
2225 | + | func lj (gL) = if (if ((gL.originCaller != dc)) | |
2226 | + | then valueOrElse(getBoolean(dL()), false) | |
2225 | 2227 | else false) | |
2226 | 2228 | then throw("Contracts are under maintenance") | |
2227 | - | else [StringEntry( | |
2228 | - | ||
2229 | - | ||
2230 | - | @Callable( | |
2231 | - | func constructorV1 ( | |
2229 | + | else [StringEntry(dM(toString(gL.originCaller)), toBase58String(gL.transactionId))] | |
2230 | + | ||
2231 | + | ||
2232 | + | @Callable(gL) | |
2233 | + | func constructorV1 (lk) = if ((gL.caller != this)) | |
2232 | 2234 | then throw("Permission denied") | |
2233 | - | else [StringEntry( | |
2234 | - | ||
2235 | - | ||
2236 | - | ||
2237 | - | @Callable( | |
2238 | - | func saveInteger ( | |
2235 | + | else [StringEntry(cW(), lk)] | |
2236 | + | ||
2237 | + | ||
2238 | + | ||
2239 | + | @Callable(gL) | |
2240 | + | func saveInteger (cO,eJ) = if ((gL.caller != this)) | |
2239 | 2241 | then throw("saveInteger is not public method") | |
2240 | - | else [IntegerEntry( | |
2241 | - | ||
2242 | - | ||
2243 | - | ||
2244 | - | @Callable( | |
2245 | - | func setBlocked ( | |
2242 | + | else [IntegerEntry(cO, eJ)] | |
2243 | + | ||
2244 | + | ||
2245 | + | ||
2246 | + | @Callable(gL) | |
2247 | + | func setBlocked (ll) = if ((gL.caller != this)) | |
2246 | 2248 | then throw("permission denied") | |
2247 | - | else [BooleanEntry( | |
2248 | - | ||
2249 | - | ||
2250 | - | ||
2251 | - | @Callable( | |
2249 | + | else [BooleanEntry(dL(), ll)] | |
2250 | + | ||
2251 | + | ||
2252 | + | ||
2253 | + | @Callable(gL) | |
2252 | 2254 | func stakeLand () = { | |
2253 | - | let | |
2254 | - | if ((size( | |
2255 | + | let lm = li(gL) | |
2256 | + | if ((size(gL.payments) != 1)) | |
2255 | 2257 | then throw("Exactly one payment required") | |
2256 | 2258 | else { | |
2257 | - | let | |
2258 | - | let | |
2259 | - | let | |
2260 | - | if (( | |
2261 | - | then throw((("NFT " + | |
2259 | + | let ln = value(gL.payments[0]) | |
2260 | + | let bq = value(ln.assetId) | |
2261 | + | let cN = toString(gL.caller) | |
2262 | + | if ((ln.amount != 1)) | |
2263 | + | then throw((("NFT " + aD) + " token should be attached as payment")) | |
2262 | 2264 | else { | |
2263 | - | let | |
2264 | - | if (( | |
2265 | + | let jt = value(assetInfo(bq)) | |
2266 | + | if ((jt.issuer != this)) | |
2265 | 2267 | then throw("Unknown issuer of token") | |
2266 | - | else if (!(contains( | |
2267 | - | then throw((("Only NFT " + | |
2268 | + | else if (!(contains(jt.name, aD))) | |
2269 | + | then throw((("Only NFT " + aD) + " tokens are accepted")) | |
2268 | 2270 | else { | |
2269 | - | let | |
2270 | - | let | |
2271 | - | then dropRight( | |
2272 | - | else if (contains( | |
2273 | - | then dropRight( | |
2274 | - | else dropRight( | |
2275 | - | if (!(isDefined(parseInt( | |
2276 | - | then throw(("Cannot parse land number from " + | |
2271 | + | let lo = drop(jt.name, 4) | |
2272 | + | let eu = if (contains(lo, "XXL")) | |
2273 | + | then dropRight(lo, 3) | |
2274 | + | else if (contains(lo, "XL")) | |
2275 | + | then dropRight(lo, 2) | |
2276 | + | else dropRight(lo, 1) | |
2277 | + | if (!(isDefined(parseInt(eu)))) | |
2278 | + | then throw(("Cannot parse land number from " + jt.name)) | |
2277 | 2279 | else { | |
2278 | - | let | |
2279 | - | let | |
2280 | - | if (isDefined(getInteger( | |
2281 | - | then throw((("NFT " + | |
2280 | + | let Q = toBase58String(bq) | |
2281 | + | let ju = bs(Q) | |
2282 | + | if (isDefined(getInteger(ju))) | |
2283 | + | then throw((("NFT " + jt.name) + " is already staked")) | |
2282 | 2284 | else { | |
2283 | - | let | |
2284 | - | let | |
2285 | - | let | |
2286 | - | let | |
2287 | - | let | |
2288 | - | let | |
2289 | - | let | |
2290 | - | let | |
2291 | - | let | |
2292 | - | let | |
2293 | - | let | |
2294 | - | then split_51C(value( | |
2285 | + | let jx = split(jt.description, "_") | |
2286 | + | let gH = gN(jx[dk]) | |
2287 | + | let jj = dI(jx[dj]) | |
2288 | + | let ia = (jj / cG) | |
2289 | + | let fc = gM(gH, ia, 1) | |
2290 | + | let lp = dt(jx[dl]) | |
2291 | + | let kU = split(valueOrElse(getString(lp), "0_0_0_0_0_0"), "_") | |
2292 | + | let lq = makeString(gF(kU, gH, ia, 1), "_") | |
2293 | + | let kQ = dv(cN) | |
2294 | + | let kR = getString(kQ) | |
2295 | + | let kN = if (isDefined(kR)) | |
2296 | + | then split_51C(value(kR), "_") | |
2295 | 2297 | else nil | |
2296 | - | if (containsElement( | |
2297 | - | then throw(("Your staked lands already contain " + | |
2298 | - | else if ((size( | |
2299 | - | then throw((("Your already staked max (" + toString( | |
2298 | + | if (containsElement(kN, Q)) | |
2299 | + | then throw(("Your staked lands already contain " + Q)) | |
2300 | + | else if ((size(kN) >= aH)) | |
2301 | + | then throw((("Your already staked max (" + toString(aH)) + ") lands")) | |
2300 | 2302 | else { | |
2301 | - | let | |
2302 | - | let | |
2303 | - | let | |
2304 | - | let | |
2305 | - | $Tuple2(([IntegerEntry( | |
2303 | + | let ib = valueOrElse(getInteger(bz(Q)), 0) | |
2304 | + | let kX = dw(cN) | |
2305 | + | let lr = valueOrElse(getInteger(kX), 0) | |
2306 | + | let ls = invoke(df, "onStakeUnstakeLand", [cN], nil) | |
2307 | + | $Tuple2(([IntegerEntry(ju, lastBlock.timestamp), IntegerEntry(bv(aD, Q, cN), lastBlock.timestamp), StringEntry(kQ, makeString_11C((kN :+ Q), "_")), IntegerEntry(kX, (lr + jj)), StringEntry(bp(Q), cN), StringEntry(ew(eu), cN), IntegerEntry(ev(Q, cN), ib), StringEntry(ds(), fc), StringEntry(lp, lq)] ++ lm), ls) | |
2306 | 2308 | } | |
2307 | 2309 | } | |
2308 | 2310 | } | |
2313 | 2315 | ||
2314 | 2316 | ||
2315 | 2317 | ||
2316 | - | @Callable( | |
2317 | - | func unstakeLand ( | |
2318 | - | let | |
2319 | - | if ((size( | |
2318 | + | @Callable(gL) | |
2319 | + | func unstakeLand (jp) = { | |
2320 | + | let lm = li(gL) | |
2321 | + | if ((size(gL.payments) != 0)) | |
2320 | 2322 | then throw("No payments required") | |
2321 | 2323 | else { | |
2322 | - | let | |
2323 | - | let | |
2324 | - | let | |
2325 | - | let | |
2326 | - | let | |
2327 | - | let | |
2328 | - | let | |
2329 | - | let | |
2330 | - | let | |
2331 | - | let | |
2332 | - | let | |
2333 | - | let | |
2334 | - | let | |
2335 | - | let | |
2336 | - | let | |
2337 | - | if (!(isDefined( | |
2338 | - | then throw(("Your staked lands don't contain " + | |
2324 | + | let d = toString(gL.caller) | |
2325 | + | let gb = jn(d, eB, jp) | |
2326 | + | let Q = gb._2 | |
2327 | + | let jx = gb._3 | |
2328 | + | let kQ = dv(d) | |
2329 | + | let gH = gN(jx[dk]) | |
2330 | + | let jj = dI(jx[dj]) | |
2331 | + | let ia = (jj / cG) | |
2332 | + | let fc = gM(gH, ia, -1) | |
2333 | + | let lp = dt(jx[dl]) | |
2334 | + | let kU = split(valueOrElse(getString(lp), "0_0_0_0_0_0"), "_") | |
2335 | + | let lq = makeString(gF(kU, gH, ia, -1), "_") | |
2336 | + | let jU = jK(d, Q, jj, eB) | |
2337 | + | let kN = split_51C(valueOrElse(getString(kQ), ""), "_") | |
2338 | + | let db = indexOf(kN, Q) | |
2339 | + | if (!(isDefined(db))) | |
2340 | + | then throw(("Your staked lands don't contain " + Q)) | |
2339 | 2341 | else { | |
2340 | - | let | |
2341 | - | let | |
2342 | - | if (( | |
2343 | - | then throw(("Your gWL are taking part in voting, cannot unstake until " + toString( | |
2342 | + | let ay = lastBlock.timestamp | |
2343 | + | let lt = valueOrElse(getInteger(de, bL(d)), 0) | |
2344 | + | if ((lt >= ay)) | |
2345 | + | then throw(("Your gWL are taking part in voting, cannot unstake until " + toString(lt))) | |
2344 | 2346 | else { | |
2345 | - | let | |
2346 | - | if (( | |
2347 | - | then throw(("Your staked lands took part in arbitrage, cannot unstake until " + toString( | |
2347 | + | let lu = (valueOrElse(getInteger(df, c(d)), 0) + cC) | |
2348 | + | if ((lu > ay)) | |
2349 | + | then throw(("Your staked lands took part in arbitrage, cannot unstake until " + toString(lu))) | |
2348 | 2350 | else { | |
2349 | - | let | |
2350 | - | let | |
2351 | - | let | |
2351 | + | let kX = dw(d) | |
2352 | + | let kY = valueOrElse(getInteger(kX), 0) | |
2353 | + | let lv = if ((jj > kY)) | |
2352 | 2354 | then 0 | |
2353 | - | else ( | |
2354 | - | let | |
2355 | - | $Tuple2(([ScriptTransfer( | |
2356 | - | then StringEntry( | |
2357 | - | else DeleteEntry( | |
2355 | + | else (kY - jj) | |
2356 | + | let ls = invoke(df, "onStakeUnstakeLand", [d], nil) | |
2357 | + | $Tuple2(([ScriptTransfer(gL.caller, 1, fromBase58String(Q)), DeleteEntry(bs(Q)), DeleteEntry(bv(aD, Q, d)), StringEntry(ds(), fc), StringEntry(lp, lq), StringEntry(jU._2, makeString(jU._3, ":")), if ((size(kN) > 1)) | |
2358 | + | then StringEntry(kQ, makeString_11C(removeByIndex(kN, value(db)), "_")) | |
2359 | + | else DeleteEntry(kQ), IntegerEntry(kX, lv)] ++ lm), ls) | |
2358 | 2360 | } | |
2359 | 2361 | } | |
2360 | 2362 | } | |
2363 | 2365 | ||
2364 | 2366 | ||
2365 | 2367 | ||
2366 | - | @Callable( | |
2368 | + | @Callable(gL) | |
2367 | 2369 | func stakeDuck () = { | |
2368 | - | let | |
2369 | - | if ((size( | |
2370 | + | let lm = li(gL) | |
2371 | + | if ((size(gL.payments) != 1)) | |
2370 | 2372 | then throw("Exactly one payment required") | |
2371 | 2373 | else { | |
2372 | - | let | |
2373 | - | let | |
2374 | - | let | |
2375 | - | if (( | |
2376 | - | then throw((("NFT " + | |
2374 | + | let ln = value(gL.payments[0]) | |
2375 | + | let bq = value(ln.assetId) | |
2376 | + | let cN = toString(gL.caller) | |
2377 | + | if ((ln.amount != 1)) | |
2378 | + | then throw((("NFT " + aE) + " token should be attached as payment")) | |
2377 | 2379 | else { | |
2378 | - | let | |
2379 | - | if (if (( | |
2380 | - | then ( | |
2380 | + | let jt = value(assetInfo(bq)) | |
2381 | + | if (if ((jt.issuer != dY)) | |
2382 | + | then (jt.issuer != dZ) | |
2381 | 2383 | else false) | |
2382 | - | then throw((("Unknown issuer of " + | |
2383 | - | else if (!(contains( | |
2384 | - | then throw((("Only NFT " + | |
2384 | + | then throw((("Unknown issuer of " + aE) + " token")) | |
2385 | + | else if (!(contains(jt.name, aE))) | |
2386 | + | then throw((("Only NFT " + aE) + " tokens are accepted")) | |
2385 | 2387 | else { | |
2386 | - | let | |
2387 | - | let | |
2388 | - | if (isDefined(getInteger( | |
2389 | - | then throw((("NFT " + | |
2390 | - | else if (isDefined(getString( | |
2391 | - | then throw(("You already staked one duck: " + | |
2388 | + | let lw = toBase58String(bq) | |
2389 | + | let ju = bs(lw) | |
2390 | + | if (isDefined(getInteger(ju))) | |
2391 | + | then throw((("NFT " + jt.name) + " is already staked")) | |
2392 | + | else if (isDefined(getString(bI(cN)))) | |
2393 | + | then throw(("You already staked one duck: " + jt.name)) | |
2392 | 2394 | else { | |
2393 | - | let | |
2394 | - | let | |
2395 | - | let | |
2396 | - | let | |
2397 | - | let | |
2398 | - | let | |
2399 | - | let | |
2400 | - | ([IntegerEntry( | |
2395 | + | let lg = bK(lw) | |
2396 | + | let ce = getString(lg) | |
2397 | + | let hM = bJ(lw) | |
2398 | + | let lx = getString(hM) | |
2399 | + | let jc = A(lw) | |
2400 | + | let jd = ah(valueOrElse(getInteger(E(lw)), 0)) | |
2401 | + | let kv = valueOrElse(getInteger(jc), jd) | |
2402 | + | ([IntegerEntry(ju, lastBlock.timestamp), IntegerEntry(bv(aE, toBase58String(bq), cN), lastBlock.timestamp), StringEntry(bH(lw), cN), StringEntry(bI(cN), lw)] ++ (if (isDefined(ce)) | |
2401 | 2403 | then nil | |
2402 | - | else ([StringEntry( | |
2404 | + | else ([StringEntry(lg, aK)] ++ (if (isDefined(lx)) | |
2403 | 2405 | then nil | |
2404 | - | else (([StringEntry( | |
2406 | + | else (([StringEntry(hM, "0:0_0_0_0_0_0:0_0_0_0_0_0:")] :+ IntegerEntry(jc, kv)) ++ lm))))) | |
2405 | 2407 | } | |
2406 | 2408 | } | |
2407 | 2409 | } | |
2410 | 2412 | ||
2411 | 2413 | ||
2412 | 2414 | ||
2413 | - | @Callable( | |
2414 | - | func unstakeDuck ( | |
2415 | - | let | |
2416 | - | if ((size( | |
2415 | + | @Callable(gL) | |
2416 | + | func unstakeDuck (lw) = { | |
2417 | + | let lm = li(gL) | |
2418 | + | if ((size(gL.payments) != 0)) | |
2417 | 2419 | then throw("No payments required") | |
2418 | 2420 | else { | |
2419 | - | let | |
2420 | - | let | |
2421 | - | let | |
2422 | - | let | |
2423 | - | if (!(isDefined(getInteger( | |
2424 | - | then throw((("NFT " + | |
2425 | - | else if (!(isDefined(getString( | |
2426 | - | then throw((("The duck " + | |
2421 | + | let bq = fromBase58String(lw) | |
2422 | + | let cN = toString(gL.caller) | |
2423 | + | let jt = value(assetInfo(bq)) | |
2424 | + | let ju = bs(lw) | |
2425 | + | if (!(isDefined(getInteger(ju)))) | |
2426 | + | then throw((("NFT " + jt.name) + " is not staked")) | |
2427 | + | else if (!(isDefined(getString(bI(cN))))) | |
2428 | + | then throw((("The duck " + jt.name) + " is not staked")) | |
2427 | 2429 | else { | |
2428 | - | let | |
2429 | - | if (( | |
2430 | + | let jw = valueOrErrorMessage(getString(bH(lw)), (("NFT " + jt.name) + " is orphaned")) | |
2431 | + | if ((jw != cN)) | |
2430 | 2432 | then throw("Staked NFT is not yours") | |
2431 | - | else if ( | |
2433 | + | else if (kq(lw)) | |
2432 | 2434 | then throw("unstakeDuck_checkTournament") | |
2433 | - | else if ( | |
2435 | + | else if (kr(lw)) | |
2434 | 2436 | then throw("unstakeDuck_checkDelivery") | |
2435 | 2437 | else { | |
2436 | - | let | |
2437 | - | let | |
2438 | - | let | |
2439 | - | if (( | |
2440 | - | then throw((("Please heal your duck to " + toString( | |
2441 | - | else ([ScriptTransfer( | |
2438 | + | let jc = A(lw) | |
2439 | + | let jd = ah(valueOrElse(getInteger(E(lw)), 0)) | |
2440 | + | let at = valueOrElse(getInteger(jc), jd) | |
2441 | + | if ((jd > at)) | |
2442 | + | then throw((("Please heal your duck to " + toString(jd)) + "hp before unstaking")) | |
2443 | + | else ([ScriptTransfer(gL.caller, 1, bq), DeleteEntry(ju), DeleteEntry(jc), DeleteEntry(bK(lw)), DeleteEntry(bH(lw)), DeleteEntry(bv(aE, lw, cN)), DeleteEntry(bI(cN))] ++ lm) | |
2442 | 2444 | } | |
2443 | 2445 | } | |
2444 | 2446 | } | |
2446 | 2448 | ||
2447 | 2449 | ||
2448 | 2450 | ||
2449 | - | @Callable( | |
2450 | - | func claimRes ( | |
2451 | - | let | |
2452 | - | if ((size( | |
2451 | + | @Callable(gL) | |
2452 | + | func claimRes (eJ,ly) = { | |
2453 | + | let lm = li(gL) | |
2454 | + | if ((size(gL.payments) != 0)) | |
2453 | 2455 | then throw("No payments required") | |
2454 | 2456 | else { | |
2455 | - | let | |
2456 | - | let | |
2457 | - | let | |
2458 | - | $Tuple2((((( | |
2459 | - | } | |
2460 | - | } | |
2461 | - | ||
2462 | - | ||
2463 | - | ||
2464 | - | @Callable( | |
2465 | - | func claimResToWH ( | |
2466 | - | let | |
2467 | - | if ((size( | |
2457 | + | let d = toString(gL.originCaller) | |
2458 | + | let fk = jy(d, eJ, eB, ly) | |
2459 | + | let B = valueOrErrorMessage(getString(bI(d)), "You don't have a duck staked") | |
2460 | + | $Tuple2(((((fk._1 ++ ka(B, fraction(V, eJ, cF))._1) :+ StringEntry(fk._2, makeString(fk._3, ":"))) :+ StringEntry(fk._4, makeString(fk._5, ":"))) ++ lm), fk._3[bj]) | |
2461 | + | } | |
2462 | + | } | |
2463 | + | ||
2464 | + | ||
2465 | + | ||
2466 | + | @Callable(gL) | |
2467 | + | func claimResToWH (eJ,ly) = { | |
2468 | + | let lm = li(gL) | |
2469 | + | if ((size(gL.payments) != 0)) | |
2468 | 2470 | then throw("No payments required") | |
2469 | 2471 | else { | |
2470 | - | let | |
2471 | - | let | |
2472 | - | $Tuple2((((( | |
2473 | - | } | |
2474 | - | } | |
2475 | - | ||
2476 | - | ||
2477 | - | ||
2478 | - | @Callable( | |
2479 | - | func flight ( | |
2480 | - | let | |
2481 | - | if ((size( | |
2472 | + | let d = toString(gL.originCaller) | |
2473 | + | let fk = jy(d, eJ, eA, ly) | |
2474 | + | $Tuple2(((((fk._1 ++ kg(d, fraction(V, eJ, cF))._1) :+ StringEntry(fk._2, makeString(fk._3, ":"))) :+ StringEntry(fk._4, makeString(fk._5, ":"))) ++ lm), fk._5[ba]) | |
2475 | + | } | |
2476 | + | } | |
2477 | + | ||
2478 | + | ||
2479 | + | ||
2480 | + | @Callable(gL) | |
2481 | + | func flight (iR,iS) = { | |
2482 | + | let lm = lj(gL) | |
2483 | + | if ((size(gL.payments) != 0)) | |
2482 | 2484 | then throw("No payments required") | |
2483 | 2485 | else { | |
2484 | - | let | |
2485 | - | let | |
2486 | - | let | |
2487 | - | let | |
2488 | - | let | |
2489 | - | let | |
2490 | - | let | |
2491 | - | if (( | |
2486 | + | let bM = toString(gL.caller) | |
2487 | + | let hq = iQ(bM, iR, iS) | |
2488 | + | let iW = hq._1 | |
2489 | + | let B = hq._2 | |
2490 | + | let lg = bK(B) | |
2491 | + | let jr = valueOrElse(getString(lg), aK) | |
2492 | + | let iY = hq._4 | |
2493 | + | if ((iY == jr)) | |
2492 | 2494 | then throw("You can't fly to the same location") | |
2493 | 2495 | else { | |
2494 | - | let | |
2495 | - | let | |
2496 | - | let | |
2497 | - | let | |
2498 | - | let | |
2499 | - | let | |
2500 | - | let | |
2501 | - | let | |
2502 | - | let | |
2503 | - | then if (!( | |
2504 | - | then | |
2505 | - | else if (( | |
2506 | - | then $Tuple2( | |
2507 | - | else $Tuple2( | |
2508 | - | else if ( | |
2509 | - | then if (!( | |
2496 | + | let cs = split(iY, "_") | |
2497 | + | let lz = (cs[bn] == "T") | |
2498 | + | let lA = (cs[bn] == "D") | |
2499 | + | let gy = G(B) | |
2500 | + | let lB = valueOrElse(getString(gy), ",;,_,;,_,;,_,;,_,;,_,;,") | |
2501 | + | let lC = fl(lB, hq._5) | |
2502 | + | let lD = lC._1 | |
2503 | + | let lE = lC._2 | |
2504 | + | let lF = if (!(cn(dg, jr))) | |
2505 | + | then if (!(cl(iY))) | |
2506 | + | then cq(jr, iY, 5) | |
2507 | + | else if ((iW > 0)) | |
2508 | + | then $Tuple2(iY, iW) | |
2509 | + | else $Tuple2(jr, 0) | |
2510 | + | else if (cd(dg, jr)) | |
2511 | + | then if (!(cd(dg, iY))) | |
2510 | 2512 | then throw("Your duck is taking part in the tournament") | |
2511 | 2513 | else { | |
2512 | - | let | |
2513 | - | let | |
2514 | - | let | |
2515 | - | if (( | |
2516 | - | then | |
2517 | - | else if (( | |
2514 | + | let lG = parseIntValue(cs[bo]) | |
2515 | + | let lH = split(jr, "_") | |
2516 | + | let cf = valueOrElse(getInteger(dg, bQ), 0) | |
2517 | + | if ((lG != (parseIntValue(lH[bo]) + 1))) | |
2518 | + | then cq(jr, iY, 7) | |
2519 | + | else if ((iW > 0)) | |
2518 | 2520 | then { | |
2519 | - | let | |
2520 | - | let | |
2521 | - | then invoke( | |
2521 | + | let lI = valueOrElse(getInteger(dg, bU(cf, B)), 0) | |
2522 | + | let lJ = if ((lG > lI)) | |
2523 | + | then invoke(dg, "saveDuckResult", [B, lG], nil) | |
2522 | 2524 | else unit | |
2523 | - | if (( | |
2524 | - | then $Tuple2( | |
2525 | + | if ((lJ == lJ)) | |
2526 | + | then $Tuple2(iY, iW) | |
2525 | 2527 | else throw("Strict value is not equal to itself.") | |
2526 | 2528 | } | |
2527 | - | else $Tuple2( | |
2529 | + | else $Tuple2(jr, 0) | |
2528 | 2530 | } | |
2529 | - | else if (!( | |
2531 | + | else if (!(ci(jr))) | |
2530 | 2532 | then { | |
2531 | - | let | |
2532 | - | if (( | |
2533 | - | then if ( | |
2534 | - | then | |
2535 | - | else if (( | |
2536 | - | then $Tuple2( | |
2537 | - | else $Tuple2( | |
2533 | + | let lK = dF(invoke(this, "autoExitDelivery", [B, iW], nil)) | |
2534 | + | if ((lK == lK)) | |
2535 | + | then if (lA) | |
2536 | + | then lK | |
2537 | + | else if ((iW > 0)) | |
2538 | + | then $Tuple2(iY, iW) | |
2539 | + | else $Tuple2(lK._1, 0) | |
2538 | 2540 | else throw("Strict value is not equal to itself.") | |
2539 | 2541 | } | |
2540 | - | else if (!( | |
2542 | + | else if (!(lA)) | |
2541 | 2543 | then throw("Your duck is taking part in delivery") | |
2542 | - | else if (!( | |
2543 | - | then | |
2544 | + | else if (!(ci(iY))) | |
2545 | + | then cq(jr, iY, 13) | |
2544 | 2546 | else { | |
2545 | - | let | |
2546 | - | let | |
2547 | - | if (( | |
2548 | - | then | |
2549 | - | else if (if (( | |
2550 | - | then (3 > | |
2547 | + | let lG = parseIntValue(cs[bo]) | |
2548 | + | let lH = split(jr, "_") | |
2549 | + | if ((lG != (parseIntValue(lH[bo]) + 1))) | |
2550 | + | then cq(jr, iY, 14) | |
2551 | + | else if (if ((iW > 0)) | |
2552 | + | then (3 > lG) | |
2551 | 2553 | else false) | |
2552 | - | then $Tuple2( | |
2554 | + | then $Tuple2(iY, iW) | |
2553 | 2555 | else { | |
2554 | - | let | |
2555 | - | if (( | |
2556 | - | then | |
2556 | + | let lK = dF(invoke(this, "autoExitDelivery", [B, iW], nil)) | |
2557 | + | if ((lK == lK)) | |
2558 | + | then lK | |
2557 | 2559 | else throw("Strict value is not equal to itself.") | |
2558 | 2560 | } | |
2559 | 2561 | } | |
2560 | - | let | |
2561 | - | let | |
2562 | - | $Tuple2(((([StringEntry( | |
2563 | - | then [StringEntry( | |
2564 | - | else nil)) ++ | |
2565 | - | then | |
2566 | - | else | |
2562 | + | let lL = lF._1 | |
2563 | + | let lM = lF._2 | |
2564 | + | $Tuple2(((([StringEntry(lg, lL), StringEntry(gy, lD), IntegerEntry(A(B), iW)] ++ lm) ++ (if (lE) | |
2565 | + | then [StringEntry(M(B), "0_0_0_0_0")] | |
2566 | + | else nil)) ++ ka(B, if ((iW > 0)) | |
2567 | + | then W | |
2568 | + | else X)._1), hq._3) | |
2567 | 2569 | } | |
2568 | 2570 | } | |
2569 | 2571 | } | |
2570 | 2572 | ||
2571 | 2573 | ||
2572 | 2574 | ||
2573 | - | @Callable(gK) | |
2574 | - | func heal (lM,lN,lO) = { | |
2575 | - | let ll = lh(gK) | |
2576 | - | if (if (if ((0 > lM)) | |
2577 | - | then true | |
2578 | - | else (0 > lN)) | |
2575 | + | @Callable(gL) | |
2576 | + | func heal (lN,lO,lP) = { | |
2577 | + | let lm = li(gL) | |
2578 | + | if (if (if ((0 > lN)) | |
2579 | 2579 | then true | |
2580 | 2580 | else (0 > lO)) | |
2581 | + | then true | |
2582 | + | else (0 > lP)) | |
2581 | 2583 | then throw("Quantity cannot be negative") | |
2582 | 2584 | else { | |
2583 | - | let | |
2584 | - | if ( | |
2585 | + | let B = valueOrErrorMessage(getString(bI(toString(gL.caller))), "You don't have a duck staked") | |
2586 | + | if (kq(B)) | |
2585 | 2587 | then throw("heal_checkTournament") | |
2586 | - | else if ( | |
2588 | + | else if (kr(B)) | |
2587 | 2589 | then throw("heal_checkDelivery") | |
2588 | 2590 | else { | |
2589 | - | let | |
2590 | - | let | |
2591 | - | let | |
2592 | - | let | |
2593 | - | if (( | |
2594 | - | then throw((("HP should be < " + toString( | |
2591 | + | let lQ = [lN, lO, lP] | |
2592 | + | let jc = A(B) | |
2593 | + | let jd = ah(valueOrElse(getInteger(E(B)), 0)) | |
2594 | + | let lR = valueOrElse(getInteger(jc), jd) | |
2595 | + | if ((lR >= jd)) | |
2596 | + | then throw((("HP should be < " + toString(jd)) + " to heal")) | |
2595 | 2597 | else { | |
2596 | - | let | |
2597 | - | let | |
2598 | - | let | |
2598 | + | let hM = bJ(B) | |
2599 | + | let ip = hL(hM) | |
2600 | + | let lS = if ((ip[bl] == "")) | |
2599 | 2601 | then nil | |
2600 | - | else split_4C( | |
2601 | - | func | |
2602 | - | let | |
2603 | - | let | |
2604 | - | then parseIntValue( | |
2602 | + | else split_4C(ip[bl], "_") | |
2603 | + | func lT (eS,cp) = { | |
2604 | + | let dB = eS._2 | |
2605 | + | let hh = if ((size(lS) > dB)) | |
2606 | + | then parseIntValue(lS[dB]) | |
2605 | 2607 | else 0 | |
2606 | - | if ((3 > | |
2608 | + | if ((3 > dB)) | |
2607 | 2609 | then { | |
2608 | - | let | |
2609 | - | if (( | |
2610 | - | then throw(((("You have only " + toString( | |
2611 | - | else $Tuple3(( | |
2610 | + | let lU = lQ[dB] | |
2611 | + | if ((lU > hh)) | |
2612 | + | then throw(((("You have only " + toString(hh)) + " of ") + aP[dB])) | |
2613 | + | else $Tuple3((eS._1 :+ toString((hh - lU))), (dB + 1), (eS._3 + (parseIntValue(split(cp, "_")[aV]) * lU))) | |
2612 | 2614 | } | |
2613 | - | else $Tuple3(( | |
2615 | + | else $Tuple3((eS._1 :+ toString(hh)), (dB + 1), eS._3) | |
2614 | 2616 | } | |
2615 | 2617 | ||
2616 | - | let | |
2617 | - | let | |
2618 | - | let | |
2619 | - | let | |
2620 | - | func | |
2621 | - | then | |
2622 | - | else | |
2623 | - | ||
2624 | - | func | |
2625 | - | then | |
2618 | + | let fk = { | |
2619 | + | let eU = aT | |
2620 | + | let eV = size(eU) | |
2621 | + | let eW = $Tuple3(nil, 0, 0) | |
2622 | + | func eX (eY,eZ) = if ((eZ >= eV)) | |
2623 | + | then eY | |
2624 | + | else lT(eY, eU[eZ]) | |
2625 | + | ||
2626 | + | func fa (eY,eZ) = if ((eZ >= eV)) | |
2627 | + | then eY | |
2626 | 2628 | else throw("List size exceeds 50") | |
2627 | 2629 | ||
2628 | - | | |
2630 | + | fa(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eW, 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) | |
2629 | 2631 | } | |
2630 | - | let | |
2631 | - | $Tuple2((([IntegerEntry( | |
2632 | + | let lV = min([jd, (lR + fk._3)]) | |
2633 | + | $Tuple2((([IntegerEntry(jc, lV), StringEntry(hM, makeString_2C([ip[bi], ip[bj], ip[bk], makeString(fk._1, "_")], ":"))] ++ lm) ++ ka(B, (ae * ((lN + lO) + lP)))._1), lV) | |
2632 | 2634 | } | |
2633 | 2635 | } | |
2634 | 2636 | } | |
2636 | 2638 | ||
2637 | 2639 | ||
2638 | 2640 | ||
2639 | - | @Callable( | |
2641 | + | @Callable(gL) | |
2640 | 2642 | func healES () = { | |
2641 | - | let | |
2642 | - | if ((size( | |
2643 | + | let lm = li(gL) | |
2644 | + | if ((size(gL.payments) != 1)) | |
2643 | 2645 | then throw("Exactly one payment required") | |
2644 | 2646 | else { | |
2645 | - | let | |
2646 | - | if (( | |
2647 | + | let ln = value(gL.payments[0]) | |
2648 | + | if ((ln.assetId != cy)) | |
2647 | 2649 | then throw("Allowed USDT payment only!") | |
2648 | 2650 | else { | |
2649 | - | let | |
2650 | - | if ( | |
2651 | + | let B = valueOrErrorMessage(getString(bI(toString(gL.caller))), "You don't have a duck staked") | |
2652 | + | if (kq(B)) | |
2651 | 2653 | then throw("healES_checkTournament") | |
2652 | - | else if ( | |
2654 | + | else if (kr(B)) | |
2653 | 2655 | then throw("healES_checkDelivery") | |
2654 | 2656 | else { | |
2655 | - | let | |
2656 | - | let | |
2657 | - | let | |
2658 | - | if (( | |
2657 | + | let jc = A(B) | |
2658 | + | let jd = ah(valueOrElse(getInteger(E(B)), 0)) | |
2659 | + | let lR = valueOrElse(getInteger(jc), jd) | |
2660 | + | if ((lR > 0)) | |
2659 | 2661 | then throw("HP should be 0 to call Emergency Service") | |
2660 | 2662 | else { | |
2661 | - | let | |
2662 | - | let | |
2663 | - | let | |
2663 | + | let hM = bJ(B) | |
2664 | + | let ip = hL(hM) | |
2665 | + | let lS = if ((ip[bl] == "")) | |
2664 | 2666 | then nil | |
2665 | - | else split_4C( | |
2666 | - | let | |
2667 | - | then parseIntValue( | |
2667 | + | else split_4C(ip[bl], "_") | |
2668 | + | let lW = if ((size(lS) > 0)) | |
2669 | + | then parseIntValue(lS[0]) | |
2668 | 2670 | else 0 | |
2669 | - | let | |
2670 | - | then parseIntValue( | |
2671 | + | let lX = if ((size(lS) > 1)) | |
2672 | + | then parseIntValue(lS[1]) | |
2671 | 2673 | else 0 | |
2672 | - | let | |
2673 | - | then parseIntValue( | |
2674 | + | let lY = if ((size(lS) > 2)) | |
2675 | + | then parseIntValue(lS[2]) | |
2674 | 2676 | else 0 | |
2675 | - | if (if (if ((lV > 0)) | |
2676 | - | then true | |
2677 | - | else (lW > 0)) | |
2677 | + | if (if (if ((lW > 0)) | |
2678 | 2678 | then true | |
2679 | 2679 | else (lX > 0)) | |
2680 | + | then true | |
2681 | + | else (lY > 0)) | |
2680 | 2682 | then throw("You have to use own Medical Kit") | |
2681 | 2683 | else { | |
2682 | - | let | |
2683 | - | let | |
2684 | - | then split_4C(value( | |
2684 | + | let lZ = getString(dd, bN()) | |
2685 | + | let ma = if (isDefined(lZ)) | |
2686 | + | then split_4C(value(lZ), "_") | |
2685 | 2687 | else nil | |
2686 | - | let | |
2687 | - | then parseIntValue( | |
2688 | + | let mb = if ((size(ma) > 0)) | |
2689 | + | then parseIntValue(ma[0]) | |
2688 | 2690 | else 0 | |
2689 | - | if ((0 >= | |
2691 | + | if ((0 >= mb)) | |
2690 | 2692 | then throw("There are no Medical Kits L1 at Emergency Service storage") | |
2691 | 2693 | else { | |
2692 | - | let | |
2693 | - | let | |
2694 | - | let | |
2695 | - | let | |
2696 | - | let | |
2697 | - | if (( | |
2698 | - | then throw(("Payment attached should be " + toString( | |
2694 | + | let lV = (lR + parseIntValue(split(aT[0], "_")[aV])) | |
2695 | + | let mc = makeString([toString((mb - 1)), removeByIndex(ma, 0)], "_") | |
2696 | + | let cp = split(aT[0], "_") | |
2697 | + | let md = co(cp) | |
2698 | + | let me = fraction((md * aM), aL, (cF * aY)) | |
2699 | + | if ((ln.amount != me)) | |
2700 | + | then throw(("Payment attached should be " + toString(me))) | |
2699 | 2701 | else { | |
2700 | - | let | |
2701 | - | $Tuple2((( | |
2702 | + | let fk = dx(invoke(dd, "updateEsStorage", [mc], [AttachedPayment(cy, me)])) | |
2703 | + | $Tuple2(((lm :+ IntegerEntry(jc, lV)) ++ ka(B, Y)._1), fk) | |
2702 | 2704 | } | |
2703 | 2705 | } | |
2704 | 2706 | } | |
2710 | 2712 | ||
2711 | 2713 | ||
2712 | 2714 | ||
2713 | - | @Callable( | |
2714 | - | func updateBackpack ( | |
2715 | + | @Callable(gL) | |
2716 | + | func updateBackpack (B,mf) = if ((gL.caller != dd)) | |
2715 | 2717 | then throw("permission denied") | |
2716 | - | else $Tuple2([StringEntry( | |
2717 | - | ||
2718 | - | ||
2719 | - | ||
2720 | - | @Callable( | |
2718 | + | else $Tuple2([StringEntry(bJ(B), mf)], mf) | |
2719 | + | ||
2720 | + | ||
2721 | + | ||
2722 | + | @Callable(gL) | |
2721 | 2723 | func commitForRandom () = { | |
2722 | - | let | |
2723 | - | let | |
2724 | - | let | |
2725 | - | $Tuple2(([IntegerEntry( | |
2726 | - | } | |
2727 | - | ||
2728 | - | ||
2729 | - | ||
2730 | - | @Callable( | |
2724 | + | let lm = li(gL) | |
2725 | + | let mg = (height + dq) | |
2726 | + | let d = toString(gL.caller) | |
2727 | + | $Tuple2(([IntegerEntry(dr(d), mg)] ++ lm), mg) | |
2728 | + | } | |
2729 | + | ||
2730 | + | ||
2731 | + | ||
2732 | + | @Callable(gL) | |
2731 | 2733 | func buySLand () = { | |
2732 | - | let | |
2733 | - | if ((size( | |
2734 | + | let lm = li(gL) | |
2735 | + | if ((size(gL.payments) != 1)) | |
2734 | 2736 | then throw("Exactly one payment required") | |
2735 | 2737 | else { | |
2736 | - | let | |
2737 | - | if (( | |
2738 | + | let ln = value(gL.payments[0]) | |
2739 | + | if ((ln.assetId != cy)) | |
2738 | 2740 | then throw("Allowed USDT payment only!") | |
2739 | - | else if (( | |
2740 | - | then throw(("Payment attached should be " + toString( | |
2741 | + | else if ((ln.amount != eh)) | |
2742 | + | then throw(("Payment attached should be " + toString(eh))) | |
2741 | 2743 | else { | |
2742 | - | let | |
2743 | - | let | |
2744 | - | $Tuple2(((( | |
2744 | + | let fk = iJ(gL.caller, gL.transactionId) | |
2745 | + | let mh = dA(invoke(dh, "burnAcres", [ei], nil)) | |
2746 | + | $Tuple2((((fk._1 :+ ScriptTransfer(dd, ln.amount, cy)) ++ kg(toString(gL.caller), aa)._1) ++ lm), $Tuple2(fk._2._1, mh)) | |
2745 | 2747 | } | |
2746 | 2748 | } | |
2747 | 2749 | } | |
2748 | 2750 | ||
2749 | 2751 | ||
2750 | 2752 | ||
2751 | - | @Callable( | |
2752 | - | func expedition ( | |
2753 | - | let | |
2754 | - | if ((size( | |
2753 | + | @Callable(gL) | |
2754 | + | func expedition (iR,iS) = { | |
2755 | + | let lm = li(gL) | |
2756 | + | if ((size(gL.payments) != 0)) | |
2755 | 2757 | then throw("No payments required") | |
2756 | 2758 | else { | |
2757 | - | let | |
2758 | - | let | |
2759 | - | let | |
2760 | - | let | |
2761 | - | let | |
2762 | - | let | |
2763 | - | let | |
2764 | - | let | |
2765 | - | let | |
2766 | - | let | |
2767 | - | let | |
2768 | - | let | |
2769 | - | let | |
2770 | - | let | |
2771 | - | let | |
2772 | - | let | |
2773 | - | then $Tuple3([IntegerEntry( | |
2774 | - | else $Tuple3(( | |
2775 | - | then [StringEntry( | |
2776 | - | else ((((nil :+ StringEntry( | |
2777 | - | if ( | |
2759 | + | let bM = toString(gL.caller) | |
2760 | + | let hq = iQ(bM, iR, iS) | |
2761 | + | let B = hq._2 | |
2762 | + | let jc = A(B) | |
2763 | + | let hM = bJ(B) | |
2764 | + | let ip = hL(hM) | |
2765 | + | let jR = split(ip[bk], "_") | |
2766 | + | let jT = makeString(fe(true, jR, eg), "_") | |
2767 | + | let gy = G(B) | |
2768 | + | let lB = valueOrElse(getString(gy), ",;,_,;,_,;,_,;,_,;,_,;,") | |
2769 | + | let mi = fl(lB, hq._5) | |
2770 | + | let lD = mi._1 | |
2771 | + | let lE = mi._2 | |
2772 | + | let mj = iJ(gL.caller, gL.transactionId) | |
2773 | + | let iP = mj._2._1 | |
2774 | + | let fk = if ((0 >= hq._1)) | |
2775 | + | then $Tuple3([IntegerEntry(jc, 0), StringEntry(gy, lD)], "", 0) | |
2776 | + | else $Tuple3((mj._1 ++ (if (lE) | |
2777 | + | then [StringEntry(M(B), "0_0_0_0_0")] | |
2778 | + | else ((((nil :+ StringEntry(bK(B), makeString([mj._2._2, "L", iP], "_"))) :+ IntegerEntry(jc, hq._1)) :+ StringEntry(gy, lD)) :+ StringEntry(hM, makeString([ip[bi], ip[bj], jT, ip[bl]], ":"))))), iP, hq._3) | |
2779 | + | if (kq(B)) | |
2778 | 2780 | then throw("expedition_checkTournament") | |
2779 | - | else if ( | |
2781 | + | else if (kr(B)) | |
2780 | 2782 | then throw("expedition_checkDelivery") | |
2781 | 2783 | else { | |
2782 | - | let | |
2783 | - | $Tuple2((( | |
2784 | + | let mh = dA(invoke(dh, "burnAcres", [ei], nil)) | |
2785 | + | $Tuple2(((fk._1 ++ ka(B, aa)._1) ++ lm), $Tuple3(fk._2, fk._3, mh)) | |
2784 | 2786 | } | |
2785 | 2787 | } | |
2786 | 2788 | } | |
2787 | 2789 | ||
2788 | 2790 | ||
2789 | 2791 | ||
2790 | - | @Callable( | |
2792 | + | @Callable(gL) | |
2791 | 2793 | func buySLandForAcres () = { | |
2792 | - | let | |
2793 | - | if ((size( | |
2794 | + | let lm = li(gL) | |
2795 | + | if ((size(gL.payments) != 1)) | |
2794 | 2796 | then throw("exactly 1 payment must be attached") | |
2795 | 2797 | else { | |
2796 | - | let | |
2797 | - | let | |
2798 | - | if (if (!(isDefined( | |
2798 | + | let ln = gL.payments[0] | |
2799 | + | let fr = ln.amount | |
2800 | + | if (if (!(isDefined(ln.assetId))) | |
2799 | 2801 | then true | |
2800 | - | else (value( | |
2802 | + | else (value(ln.assetId) != dp)) | |
2801 | 2803 | then throw("ACRES payments only!") | |
2802 | - | else if (( | |
2803 | - | then throw(("Payment attached should be " + toString( | |
2804 | + | else if ((fr != ei)) | |
2805 | + | then throw(("Payment attached should be " + toString(ei))) | |
2804 | 2806 | else { | |
2805 | - | let | |
2806 | - | let | |
2807 | - | $Tuple2((( | |
2807 | + | let fk = iJ(gL.caller, gL.transactionId) | |
2808 | + | let mh = dA(invoke(dh, "burnAcres", [ei], [AttachedPayment(dp, fr)])) | |
2809 | + | $Tuple2(((fk._1 ++ kg(toString(gL.caller), aa)._1) ++ lm), $Tuple2(fk._2._1, mh)) | |
2808 | 2810 | } | |
2809 | 2811 | } | |
2810 | 2812 | } | |
2811 | 2813 | ||
2812 | 2814 | ||
2813 | 2815 | ||
2814 | - | @Callable( | |
2815 | - | func upgradeInfra ( | |
2816 | - | let | |
2817 | - | if ((size( | |
2816 | + | @Callable(gL) | |
2817 | + | func upgradeInfra (Q) = { | |
2818 | + | let lm = li(gL) | |
2819 | + | if ((size(gL.payments) != 0)) | |
2818 | 2820 | then throw("No payments required") | |
2819 | 2821 | else { | |
2820 | - | let | |
2821 | - | let | |
2822 | - | $Tuple2((( | |
2823 | - | } | |
2824 | - | } | |
2825 | - | ||
2826 | - | ||
2827 | - | ||
2828 | - | @Callable( | |
2829 | - | func activateArtifact ( | |
2830 | - | let | |
2831 | - | if ((size( | |
2822 | + | let fk = jL(true, gL.caller, 0, Q) | |
2823 | + | let B = valueOrErrorMessage(getString(bI(toString(gL.caller))), "You don't have a duck staked") | |
2824 | + | $Tuple2(((fk._1 ++ lm) ++ ka(B, fraction(ab, fk._3, cF))._1), fk._2) | |
2825 | + | } | |
2826 | + | } | |
2827 | + | ||
2828 | + | ||
2829 | + | ||
2830 | + | @Callable(gL) | |
2831 | + | func activateArtifact (mk,ml) = { | |
2832 | + | let lm = li(gL) | |
2833 | + | if ((size(gL.payments) != 0)) | |
2832 | 2834 | then throw("No payments required") | |
2833 | 2835 | else { | |
2834 | - | let | |
2835 | - | let | |
2836 | - | let | |
2837 | - | if (("PRESALE" == | |
2838 | - | then | |
2839 | - | else if (("ONBOARD" == | |
2840 | - | then | |
2836 | + | let d = toString(gL.caller) | |
2837 | + | let fk = { | |
2838 | + | let cz = mk | |
2839 | + | if (("PRESALE" == cz)) | |
2840 | + | then ko(d, ml) | |
2841 | + | else if (("ONBOARD" == cz)) | |
2842 | + | then kh(d) | |
2841 | 2843 | else throw("Unknown artifact") | |
2842 | 2844 | } | |
2843 | - | ( | |
2844 | - | } | |
2845 | - | } | |
2846 | - | ||
2847 | - | ||
2848 | - | ||
2849 | - | @Callable( | |
2850 | - | func mergeLands ( | |
2851 | - | let | |
2852 | - | if ((size( | |
2845 | + | (fk ++ lm) | |
2846 | + | } | |
2847 | + | } | |
2848 | + | ||
2849 | + | ||
2850 | + | ||
2851 | + | @Callable(gL) | |
2852 | + | func mergeLands (kF) = { | |
2853 | + | let lm = li(gL) | |
2854 | + | if ((size(gL.payments) != 0)) | |
2853 | 2855 | then throw("No payments required") | |
2854 | 2856 | else { | |
2855 | - | let | |
2856 | - | $Tuple2((( | |
2857 | - | } | |
2858 | - | } | |
2859 | - | ||
2860 | - | ||
2861 | - | ||
2862 | - | @Callable( | |
2863 | - | func cargoExchange ( | |
2864 | - | let | |
2865 | - | if ((size( | |
2857 | + | let fk = ld(toString(gL.caller), kF) | |
2858 | + | $Tuple2(((fk._1 ++ lm) ++ kg(toString(gL.caller), ac)._1), fk._2) | |
2859 | + | } | |
2860 | + | } | |
2861 | + | ||
2862 | + | ||
2863 | + | ||
2864 | + | @Callable(gL) | |
2865 | + | func cargoExchange (mm,Q) = { | |
2866 | + | let lm = li(gL) | |
2867 | + | if ((size(gL.payments) != 0)) | |
2866 | 2868 | then throw("No payments required") | |
2867 | 2869 | else { | |
2868 | - | let | |
2869 | - | let | |
2870 | - | let | |
2871 | - | let | |
2872 | - | if (!(isDefined(getInteger( | |
2873 | - | then throw(( | |
2870 | + | let io = split_4C(mm, ":") | |
2871 | + | let d = toString(gL.originCaller) | |
2872 | + | let jt = value(assetInfo(fromBase58String(Q))) | |
2873 | + | let ju = bs(Q) | |
2874 | + | if (!(isDefined(getInteger(ju)))) | |
2875 | + | then throw((jt.name + " is not staked")) | |
2874 | 2876 | else { | |
2875 | - | let | |
2876 | - | if (( | |
2877 | - | then throw(( | |
2877 | + | let jw = valueOrErrorMessage(getString(bp(Q)), (("NFT " + jt.name) + " is orphaned")) | |
2878 | + | if ((jw != d)) | |
2879 | + | then throw((aD + " is not yours")) | |
2878 | 2880 | else { | |
2879 | - | let | |
2880 | - | let | |
2881 | - | let | |
2882 | - | let | |
2883 | - | let | |
2884 | - | if (( | |
2885 | - | then throw((("Duck location type is " + | |
2886 | - | else if (( | |
2887 | - | then throw(("Duck should be on the land " + | |
2881 | + | let ia = (dI(split(jt.description, "_")[dj]) / cG) | |
2882 | + | let ib = valueOrElse(getInteger(bz(Q)), 0) | |
2883 | + | let B = valueOrErrorMessage(getString(bI(d)), "You don't have a duck staked") | |
2884 | + | let jr = valueOrElse(getString(bK(B)), aK) | |
2885 | + | let cg = split(value(jr), "_") | |
2886 | + | if ((cg[bn] != "L")) | |
2887 | + | then throw((("Duck location type is " + cg[bn]) + ", but should be L")) | |
2888 | + | else if ((cg[bo] != Q)) | |
2889 | + | then throw(("Duck should be on the land " + Q)) | |
2888 | 2890 | else { | |
2889 | - | let | |
2890 | - | let | |
2891 | - | let | |
2892 | - | let | |
2893 | - | let | |
2894 | - | let | |
2895 | - | let | |
2896 | - | let | |
2897 | - | ([StringEntry( | |
2891 | + | let hZ = by(Q) | |
2892 | + | let hQ = hY(hZ, ia, ib) | |
2893 | + | let hM = bJ(B) | |
2894 | + | let ip = hL(hM) | |
2895 | + | let fk = in(io, hQ, ip) | |
2896 | + | let ih = split(hQ[bd], "_") | |
2897 | + | let jI = (parseIntValue(ih[bf]) + fk._7) | |
2898 | + | let jJ = (parseIntValue(ih[bg]) - fk._7) | |
2899 | + | ([StringEntry(hM, makeString_2C([ip[bi], fk._4, fk._5, fk._6], ":")), StringEntry(hZ, makeString_2C([hQ[aZ], fk._1, fk._2, fk._3, makeString([ih[be], toString(jI), toString(jJ), ih[bh]], "_")], ":"))] ++ lm) | |
2898 | 2900 | } | |
2899 | 2901 | } | |
2900 | 2902 | } | |
2903 | 2905 | ||
2904 | 2906 | ||
2905 | 2907 | ||
2906 | - | @Callable( | |
2907 | - | func saveWarehouse ( | |
2908 | + | @Callable(gL) | |
2909 | + | func saveWarehouse (id,Q) = if ((gL.caller != dd)) | |
2908 | 2910 | then throw("Access denied") | |
2909 | 2911 | else { | |
2910 | - | let | |
2911 | - | let | |
2912 | - | if ((size( | |
2912 | + | let hZ = by(Q) | |
2913 | + | let ie = split_4C(id, ":") | |
2914 | + | if ((size(ie) != 5)) | |
2913 | 2915 | then throw("warehouse string should contain 4 ':' separators") | |
2914 | 2916 | else { | |
2915 | - | let | |
2916 | - | let | |
2917 | - | let | |
2918 | - | let | |
2919 | - | let | |
2920 | - | $Tuple2([StringEntry( | |
2917 | + | let mn = split(ie[bd], "_")[be] | |
2918 | + | let jI = hP(ie) | |
2919 | + | let mo = hN(ie[aZ]) | |
2920 | + | let jJ = ((mo - parseIntValue(mn)) - jI) | |
2921 | + | let mp = makeString_2C([ie[aZ], ie[ba], ie[bb], ie[bc], makeString([mn, toString(jI), toString(jJ), toString(mo)], "_")], ":") | |
2922 | + | $Tuple2([StringEntry(hZ, mp)], mp) | |
2921 | 2923 | } | |
2922 | 2924 | } | |
2923 | 2925 | ||
2924 | 2926 | ||
2925 | 2927 | ||
2926 | - | @Callable( | |
2927 | - | func fixWarehouseFormat ( | |
2928 | + | @Callable(gL) | |
2929 | + | func fixWarehouseFormat (Q) = if ((gL.caller != dc)) | |
2928 | 2930 | then throw("Access denied") | |
2929 | 2931 | else { | |
2930 | - | let | |
2931 | - | let | |
2932 | - | let | |
2933 | - | let | |
2934 | - | let | |
2935 | - | let | |
2936 | - | let | |
2937 | - | let | |
2938 | - | let | |
2939 | - | let | |
2940 | - | $Tuple2([StringEntry( | |
2932 | + | let hZ = by(Q) | |
2933 | + | let jt = value(assetInfo(fromBase58String(Q))) | |
2934 | + | let ia = (dI(split(jt.description, "_")[dj]) / cG) | |
2935 | + | let ib = valueOrElse(getInteger(bz(Q)), 0) | |
2936 | + | let ie = hY(hZ, ia, ib) | |
2937 | + | let mn = dA(invoke(dd, "recalcLockedVolumeREADONLY", [Q, ie], nil)) | |
2938 | + | let jI = hP(ie) | |
2939 | + | let mo = hN(ie[aZ]) | |
2940 | + | let jJ = ((mo - mn) - jI) | |
2941 | + | let mp = makeString_2C([ie[aZ], ie[ba], ie[bb], ie[bc], makeString([toString(mn), toString(jI), toString(jJ), toString(mo)], "_")], ":") | |
2942 | + | $Tuple2([StringEntry(hZ, mp)], mp) | |
2941 | 2943 | } | |
2942 | 2944 | ||
2943 | 2945 | ||
2944 | 2946 | ||
2945 | - | @Callable( | |
2946 | - | func fixContinentProportions ( | |
2947 | + | @Callable(gL) | |
2948 | + | func fixContinentProportions (kF) = if ((gL.caller != dc)) | |
2947 | 2949 | then throw("Access denied") | |
2948 | 2950 | else { | |
2949 | - | func | |
2950 | - | ||
2951 | - | let | |
2952 | - | let | |
2953 | - | let | |
2954 | - | let | |
2955 | - | func | |
2956 | - | then | |
2957 | - | else | |
2958 | - | ||
2959 | - | func | |
2960 | - | then | |
2951 | + | func mq (eS,mr) = (eS :+ valueOrElse(getString(dt(mr)), "0_0_0_0_0_0")) | |
2952 | + | ||
2953 | + | let gv = { | |
2954 | + | let eU = aQ | |
2955 | + | let eV = size(eU) | |
2956 | + | let eW = nil | |
2957 | + | func eX (eY,eZ) = if ((eZ >= eV)) | |
2958 | + | then eY | |
2959 | + | else mq(eY, eU[eZ]) | |
2960 | + | ||
2961 | + | func fa (eY,eZ) = if ((eZ >= eV)) | |
2962 | + | then eY | |
2961 | 2963 | else throw("List size exceeds 5") | |
2962 | 2964 | ||
2963 | - | | |
2964 | - | } | |
2965 | - | func | |
2966 | - | let | |
2967 | - | let | |
2968 | - | let | |
2969 | - | let | |
2970 | - | let | |
2971 | - | let | |
2972 | - | let | |
2973 | - | let | |
2974 | - | let | |
2975 | - | if (("Americas" == | |
2976 | - | then [ | |
2977 | - | else if (("Europe" == | |
2978 | - | then [ | |
2979 | - | else if (("Asia" == | |
2980 | - | then [ | |
2981 | - | else if (("Africa" == | |
2982 | - | then [ | |
2983 | - | else if (("Oceania" == | |
2984 | - | then [ | |
2965 | + | fa(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5) | |
2966 | + | } | |
2967 | + | func ms (eS,Q) = { | |
2968 | + | let jt = value(assetInfo(fromBase58String(Q))) | |
2969 | + | let jx = split(jt.description, "_") | |
2970 | + | let ia = (dI(jx[dj]) / cG) | |
2971 | + | let mr = jx[dl] | |
2972 | + | let gH = gN(jx[dk]) | |
2973 | + | let hp = value(indexOf(aQ, mr)) | |
2974 | + | let kU = split(eS[hp], "_") | |
2975 | + | let mt = makeString(gF(kU, gH, ia, 1), "_") | |
2976 | + | let cz = mr | |
2977 | + | if (("Americas" == cz)) | |
2978 | + | then [mt, eS[1], eS[2], eS[3], eS[4]] | |
2979 | + | else if (("Europe" == cz)) | |
2980 | + | then [eS[0], mt, eS[2], eS[3], eS[4]] | |
2981 | + | else if (("Asia" == cz)) | |
2982 | + | then [eS[0], eS[1], mt, eS[3], eS[4]] | |
2983 | + | else if (("Africa" == cz)) | |
2984 | + | then [eS[0], eS[1], eS[2], mt, eS[4]] | |
2985 | + | else if (("Oceania" == cz)) | |
2986 | + | then [eS[0], eS[1], eS[2], eS[3], mt] | |
2985 | 2987 | else throw("wrong continent") | |
2986 | 2988 | } | |
2987 | 2989 | ||
2988 | - | let | |
2989 | - | let | |
2990 | - | let | |
2991 | - | let | |
2992 | - | func | |
2993 | - | then | |
2994 | - | else | |
2995 | - | ||
2996 | - | func | |
2997 | - | then | |
2990 | + | let fd = { | |
2991 | + | let eU = kF | |
2992 | + | let eV = size(eU) | |
2993 | + | let eW = gv | |
2994 | + | func hG (eY,eZ) = if ((eZ >= eV)) | |
2995 | + | then eY | |
2996 | + | else ms(eY, eU[eZ]) | |
2997 | + | ||
2998 | + | func hH (eY,eZ) = if ((eZ >= eV)) | |
2999 | + | then eY | |
2998 | 3000 | else throw("List size exceeds 100") | |
2999 | 3001 | ||
3000 | - | hG( | |
3001 | - | } | |
3002 | - | $Tuple2([StringEntry( | |
3002 | + | hH(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(eW, 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) | |
3003 | + | } | |
3004 | + | $Tuple2([StringEntry(dt("Americas"), fd[0]), StringEntry(dt("Europe"), fd[1]), StringEntry(dt("Asia"), fd[2]), StringEntry(dt("Africa"), fd[3]), StringEntry(dt("Oceania"), fd[4])], 0) | |
3003 | 3005 | } | |
3004 | 3006 | ||
3005 | 3007 | ||
3006 | 3008 | ||
3007 | - | @Callable( | |
3008 | - | func fixStakedPieces ( | |
3009 | + | @Callable(gL) | |
3010 | + | func fixStakedPieces (cN) = if ((gL.caller != dc)) | |
3009 | 3011 | then throw("Access denied") | |
3010 | 3012 | else { | |
3011 | - | let | |
3013 | + | let kY = if ((cN == "")) | |
3012 | 3014 | then 0 | |
3013 | 3015 | else { | |
3014 | - | let | |
3015 | - | let | |
3016 | - | then split_51C(value( | |
3016 | + | let kR = getString(ao, dv(cN)) | |
3017 | + | let kN = if (isDefined(kR)) | |
3018 | + | then split_51C(value(kR), "_") | |
3017 | 3019 | else nil | |
3018 | - | func | |
3019 | - | let | |
3020 | - | let | |
3021 | - | ( | |
3020 | + | func mu (eS,Q) = { | |
3021 | + | let jt = value(assetInfo(fromBase58String(Q))) | |
3022 | + | let dJ = split(jt.description, "_")[dj] | |
3023 | + | (eS + dI(dJ)) | |
3022 | 3024 | } | |
3023 | 3025 | ||
3024 | - | let | |
3025 | - | let | |
3026 | - | let | |
3027 | - | func | |
3028 | - | then | |
3029 | - | else | |
3030 | - | ||
3031 | - | func | |
3032 | - | then | |
3026 | + | let eU = kN | |
3027 | + | let eV = size(eU) | |
3028 | + | let eW = 0 | |
3029 | + | func eX (eY,eZ) = if ((eZ >= eV)) | |
3030 | + | then eY | |
3031 | + | else mu(eY, eU[eZ]) | |
3032 | + | ||
3033 | + | func fa (eY,eZ) = if ((eZ >= eV)) | |
3034 | + | then eY | |
3033 | 3035 | else throw("List size exceeds 100") | |
3034 | 3036 | ||
3035 | - | | |
3037 | + | fa(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eW, 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) | |
3036 | 3038 | } | |
3037 | - | $Tuple2([IntegerEntry( | |
3039 | + | $Tuple2([IntegerEntry(dw(cN), kY)], kY) | |
3038 | 3040 | } | |
3039 | 3041 | ||
3040 | 3042 | ||
3041 | 3043 | ||
3042 | - | @Callable( | |
3043 | - | func setCustomName ( | |
3044 | - | let | |
3045 | - | if ((size( | |
3044 | + | @Callable(gL) | |
3045 | + | func setCustomName (bq,kP,bu) = { | |
3046 | + | let lm = li(gL) | |
3047 | + | if ((size(gL.payments) != 1)) | |
3046 | 3048 | then throw("Exactly one payment required") | |
3047 | 3049 | else { | |
3048 | - | let | |
3049 | - | if (( | |
3050 | + | let ln = value(gL.payments[0]) | |
3051 | + | if ((ln.assetId != cy)) | |
3050 | 3052 | then throw("Allowed USDT payment only!") | |
3051 | - | else if (( | |
3052 | - | then throw(("Payment should be " + toString( | |
3053 | - | else if (contains( | |
3054 | - | then throw(("Name should not contain '__': " + | |
3055 | - | else if ((size( | |
3056 | - | then throw(("Name too long, maxLength=" + toString( | |
3053 | + | else if ((ln.amount != ed)) | |
3054 | + | then throw(("Payment should be " + toString(ed))) | |
3055 | + | else if (contains(kP, "__")) | |
3056 | + | then throw(("Name should not contain '__': " + kP)) | |
3057 | + | else if ((size(kP) > ee)) | |
3058 | + | then throw(("Name too long, maxLength=" + toString(ee))) | |
3057 | 3059 | else { | |
3058 | - | let | |
3059 | - | let | |
3060 | - | let | |
3061 | - | if (("ACCOUNT" == | |
3060 | + | let d = toString(gL.originCaller) | |
3061 | + | let mv = { | |
3062 | + | let cz = bu | |
3063 | + | if (("ACCOUNT" == cz)) | |
3062 | 3064 | then { | |
3063 | - | let | |
3064 | - | let | |
3065 | - | if (isDefined( | |
3066 | - | then throw(("Name already registered: " + | |
3065 | + | let mw = ey(kP) | |
3066 | + | let mx = getString(mw) | |
3067 | + | if (isDefined(mx)) | |
3068 | + | then throw(("Name already registered: " + kP)) | |
3067 | 3069 | else { | |
3068 | - | let | |
3069 | - | let | |
3070 | - | let | |
3071 | - | then [DeleteEntry( | |
3070 | + | let my = bC(d) | |
3071 | + | let mz = getString(my) | |
3072 | + | let mA = if (isDefined(mz)) | |
3073 | + | then [DeleteEntry(ey(value(mz)))] | |
3072 | 3074 | else nil | |
3073 | - | ((( | |
3075 | + | (((mA :+ StringEntry(my, kP)) :+ StringEntry(mw, d)) ++ kg(d, Z)._1) | |
3074 | 3076 | } | |
3075 | 3077 | } | |
3076 | - | else if (("LAND" == | |
3078 | + | else if (("LAND" == cz)) | |
3077 | 3079 | then { | |
3078 | - | let | |
3079 | - | let | |
3080 | - | if (!(isDefined(getInteger( | |
3081 | - | then throw(( | |
3080 | + | let jt = value(assetInfo(fromBase58String(bq))) | |
3081 | + | let ju = bs(bq) | |
3082 | + | if (!(isDefined(getInteger(ju)))) | |
3083 | + | then throw((jt.name + " is not staked")) | |
3082 | 3084 | else { | |
3083 | - | let | |
3084 | - | if (( | |
3085 | - | then throw(( | |
3085 | + | let jw = valueOrErrorMessage(getString(bp(bq)), (("NFT " + jt.name) + " is orphaned")) | |
3086 | + | if ((jw != d)) | |
3087 | + | then throw((aD + " is not yours")) | |
3086 | 3088 | else { | |
3087 | - | let | |
3088 | - | let | |
3089 | - | if (isDefined( | |
3090 | - | then throw(("Name already registered: " + | |
3089 | + | let mw = er(kP) | |
3090 | + | let mx = getString(mw) | |
3091 | + | if (isDefined(mx)) | |
3092 | + | then throw(("Name already registered: " + kP)) | |
3091 | 3093 | else { | |
3092 | - | let | |
3093 | - | let | |
3094 | - | let | |
3095 | - | then [DeleteEntry( | |
3094 | + | let mB = br(bq) | |
3095 | + | let mz = getString(mB) | |
3096 | + | let mA = if (isDefined(mz)) | |
3097 | + | then [DeleteEntry(er(value(mz)))] | |
3096 | 3098 | else nil | |
3097 | - | ((( | |
3099 | + | (((mA :+ StringEntry(mB, kP)) :+ StringEntry(mw, bq)) ++ kg(d, Z)._1) | |
3098 | 3100 | } | |
3099 | 3101 | } | |
3100 | 3102 | } | |
3101 | 3103 | } | |
3102 | - | else if (("DUCK" == | |
3104 | + | else if (("DUCK" == cz)) | |
3103 | 3105 | then { | |
3104 | - | let | |
3105 | - | let | |
3106 | - | if (if (!(isDefined(getInteger( | |
3106 | + | let jt = value(assetInfo(fromBase58String(bq))) | |
3107 | + | let ju = bs(bq) | |
3108 | + | if (if (!(isDefined(getInteger(ju)))) | |
3107 | 3109 | then true | |
3108 | - | else !(isDefined(getString( | |
3109 | - | then throw(( | |
3110 | + | else !(isDefined(getString(bI(d))))) | |
3111 | + | then throw((jt.name + " is not staked")) | |
3110 | 3112 | else { | |
3111 | - | let | |
3112 | - | if (( | |
3113 | - | then throw(( | |
3113 | + | let jw = valueOrErrorMessage(getString(bH(bq)), (("NFT " + jt.name) + " is orphaned")) | |
3114 | + | if ((jw != d)) | |
3115 | + | then throw((aE + " is not yours")) | |
3114 | 3116 | else { | |
3115 | - | let | |
3116 | - | let | |
3117 | - | if (isDefined( | |
3118 | - | then throw(("Name already registered: " + | |
3117 | + | let mw = ex(kP) | |
3118 | + | let mx = getString(mw) | |
3119 | + | if (isDefined(mx)) | |
3120 | + | then throw(("Name already registered: " + kP)) | |
3119 | 3121 | else { | |
3120 | - | let | |
3121 | - | let | |
3122 | - | let | |
3123 | - | then [DeleteEntry( | |
3122 | + | let mB = bB(bq) | |
3123 | + | let mz = getString(mB) | |
3124 | + | let mA = if (isDefined(mz)) | |
3125 | + | then [DeleteEntry(ex(value(mz)))] | |
3124 | 3126 | else nil | |
3125 | - | ((( | |
3127 | + | (((mA :+ StringEntry(mB, kP)) :+ StringEntry(mw, bq)) ++ ka(bq, Z)._1) | |
3126 | 3128 | } | |
3127 | 3129 | } | |
3128 | 3130 | } | |
3129 | 3131 | } | |
3130 | 3132 | else throw("Unknown entity type") | |
3131 | 3133 | } | |
3132 | - | $Tuple2((( | |
3134 | + | $Tuple2(((mv :+ ScriptTransfer(dd, ln.amount, cy)) ++ lm), 0) | |
3133 | 3135 | } | |
3134 | 3136 | } | |
3135 | 3137 | } | |
3136 | 3138 | ||
3137 | 3139 | ||
3138 | 3140 | ||
3139 | - | @Callable( | |
3140 | - | func setReferrals ( | |
3141 | + | @Callable(gL) | |
3142 | + | func setReferrals (mC,mD) = if ((gL.callerPublicKey != ea)) | |
3141 | 3143 | then throw("Permission denied") | |
3142 | 3144 | else { | |
3143 | - | let | |
3144 | - | if ((size( | |
3145 | + | let lm = li(gL) | |
3146 | + | if ((size(gL.payments) != 0)) | |
3145 | 3147 | then throw("No payments required") | |
3146 | - | else if (!(isDefined(addressFromString( | |
3147 | - | then throw(("Invalid address: " + | |
3148 | - | else if (!(isDefined(addressFromString( | |
3149 | - | then throw(("Invalid address: " + | |
3148 | + | else if (!(isDefined(addressFromString(mC)))) | |
3149 | + | then throw(("Invalid address: " + mC)) | |
3150 | + | else if (!(isDefined(addressFromString(mD)))) | |
3151 | + | then throw(("Invalid address: " + mD)) | |
3150 | 3152 | else { | |
3151 | - | let | |
3152 | - | let | |
3153 | - | let | |
3154 | - | then split_4C(value( | |
3153 | + | let mE = ez() | |
3154 | + | let mF = getString(mE) | |
3155 | + | let mG = if (isDefined(mF)) | |
3156 | + | then split_4C(value(mF), "_") | |
3155 | 3157 | else nil | |
3156 | - | if (containsElement( | |
3157 | - | then throw(( | |
3158 | + | if (containsElement(mG, mD)) | |
3159 | + | then throw((mD + " is not newbie (already has referrals)")) | |
3158 | 3160 | else { | |
3159 | - | let | |
3160 | - | let | |
3161 | - | if (if (isDefined( | |
3162 | - | then isDefined(addressFromString(value( | |
3161 | + | let ki = bD(mD) | |
3162 | + | let kj = getString(ki) | |
3163 | + | if (if (isDefined(kj)) | |
3164 | + | then isDefined(addressFromString(value(kj))) | |
3163 | 3165 | else false) | |
3164 | - | then throw((( | |
3166 | + | then throw(((mD + " already has refBy: ") + value(kj))) | |
3165 | 3167 | else { | |
3166 | - | let | |
3167 | - | let | |
3168 | - | let | |
3169 | - | then split_4C(value( | |
3168 | + | let mH = bG(mC) | |
3169 | + | let mI = getString(mH) | |
3170 | + | let mJ = if (isDefined(mI)) | |
3171 | + | then split_4C(value(mI), "_") | |
3170 | 3172 | else nil | |
3171 | - | if (containsElement( | |
3172 | - | then throw(((( | |
3173 | + | if (containsElement(mJ, mD)) | |
3174 | + | then throw((((mC + " already contains ") + mD) + " within referrals")) | |
3173 | 3175 | else { | |
3174 | - | let | |
3175 | - | let | |
3176 | - | then value( | |
3177 | - | else makeString_2C(( | |
3178 | - | $Tuple2(([StringEntry( | |
3176 | + | let mK = makeString_2C((mJ :+ mD), "_") | |
3177 | + | let mL = if (containsElement(mG, mC)) | |
3178 | + | then value(mF) | |
3179 | + | else makeString_2C((mG :+ mC), "_") | |
3180 | + | $Tuple2(([StringEntry(ki, mC), StringEntry(mH, mK), StringEntry(mE, mL)] ++ lm), 0) | |
3179 | 3181 | } | |
3180 | 3182 | } | |
3181 | 3183 | } | |
3184 | 3186 | ||
3185 | 3187 | ||
3186 | 3188 | ||
3187 | - | @Callable( | |
3188 | - | func distributePoints ( | |
3189 | - | let | |
3190 | - | if ((size( | |
3189 | + | @Callable(gL) | |
3190 | + | func distributePoints (mM,mN,mO,mP,mQ) = { | |
3191 | + | let lm = li(gL) | |
3192 | + | if ((size(gL.payments) != 0)) | |
3191 | 3193 | then throw("No payments required") | |
3192 | 3194 | else { | |
3193 | - | let | |
3194 | - | let | |
3195 | - | let | |
3196 | - | let | |
3195 | + | let d = toString(gL.originCaller) | |
3196 | + | let mR = dC(invoke(df, "checkWlgXpREADONLY", [d], nil)) | |
3197 | + | let mS = dA(mR[1]) | |
3198 | + | let mT = if ((0 >= mS)) | |
3197 | 3199 | then $Tuple2(0, nil) | |
3198 | 3200 | else { | |
3199 | - | let | |
3200 | - | if (( | |
3201 | - | then $Tuple2( | |
3201 | + | let kb = dA(invoke(df, "takeWlgXp", [d], nil)) | |
3202 | + | if ((kb == kb)) | |
3203 | + | then $Tuple2(mS, [IntegerEntry(I(d), dA(mR[0])), IntegerEntry(H(d), dA(mR[2]))]) | |
3202 | 3204 | else throw("Strict value is not equal to itself.") | |
3203 | 3205 | } | |
3204 | - | let | |
3205 | - | let | |
3206 | - | let | |
3207 | - | let | |
3208 | - | let | |
3209 | - | let | |
3210 | - | let | |
3211 | - | let | |
3212 | - | let | |
3213 | - | if (( | |
3214 | - | then throw((("There are only " + toString( | |
3206 | + | let mU = mT._1 | |
3207 | + | let mV = mT._2 | |
3208 | + | let B = valueOrErrorMessage(getString(bI(d)), "You don't have a duck staked") | |
3209 | + | let mW = J(d) | |
3210 | + | let mX = (valueOrElse(getInteger(mW), 0) + mU) | |
3211 | + | let mY = F(B) | |
3212 | + | let mZ = valueOrElse(getInteger(mY), 0) | |
3213 | + | let na = (mX + mZ) | |
3214 | + | let nb = ((((mM + mN) + mO) + mP) + mQ) | |
3215 | + | if ((nb > na)) | |
3216 | + | then throw((("There are only " + toString(na)) + " free points to distribute")) | |
3215 | 3217 | else { | |
3216 | - | let | |
3217 | - | let | |
3218 | - | let | |
3219 | - | $Tuple2((([IntegerEntry( | |
3218 | + | let nc = C(B) | |
3219 | + | let ar = split(valueOrElse(getString(nc), "0_0_0_0_0"), "_") | |
3220 | + | let nd = (mX - nb) | |
3221 | + | $Tuple2((([IntegerEntry(mW, if ((0 > nd)) | |
3220 | 3222 | then 0 | |
3221 | - | else | |
3222 | - | then ( | |
3223 | - | else | |
3223 | + | else nd), IntegerEntry(mY, if ((0 > nd)) | |
3224 | + | then (mZ + nd) | |
3225 | + | else mZ), StringEntry(nc, makeString([toString((parseIntValue(ar[l]) + mM)), toString((parseIntValue(ar[m]) + mN)), toString((parseIntValue(ar[n]) + mO)), toString((parseIntValue(ar[o]) + mP)), toString((parseIntValue(ar[p]) + mQ))], "_"))] ++ lm) ++ mV), 0) | |
3224 | 3226 | } | |
3225 | 3227 | } | |
3226 | 3228 | } | |
3227 | 3229 | ||
3228 | 3230 | ||
3229 | 3231 | ||
3230 | - | @Callable( | |
3231 | - | func splitByGlobalWeightsREADONLY ( | |
3232 | - | ||
3233 | - | ||
3234 | - | ||
3235 | - | @Callable( | |
3236 | - | func splitByGlobalAndLocalWeightsREADONLY ( | |
3237 | - | let | |
3238 | - | $Tuple2(nil, $Tuple2( | |
3239 | - | } | |
3240 | - | ||
3241 | - | ||
3242 | - | ||
3243 | - | @Callable( | |
3244 | - | func getBackpackREADONLY ( | |
3245 | - | ||
3246 | - | ||
3247 | - | ||
3248 | - | @Callable( | |
3249 | - | func getWarehouseREADONLY ( | |
3250 | - | let | |
3251 | - | let | |
3252 | - | let | |
3253 | - | $Tuple2(nil, makeString_2C( | |
3254 | - | } | |
3255 | - | ||
3256 | - | ||
3257 | - | ||
3258 | - | @Callable( | |
3259 | - | func saveLastTx () = if (!(containsElement([ | |
3232 | + | @Callable(gL) | |
3233 | + | func splitByGlobalWeightsREADONLY (eJ) = $Tuple2(nil, fb(eJ)) | |
3234 | + | ||
3235 | + | ||
3236 | + | ||
3237 | + | @Callable(gL) | |
3238 | + | func splitByGlobalAndLocalWeightsREADONLY (ne,nf,gO) = { | |
3239 | + | let gH = gN(gO) | |
3240 | + | $Tuple2(nil, $Tuple2(fb(ne), eM(nf, gH))) | |
3241 | + | } | |
3242 | + | ||
3243 | + | ||
3244 | + | ||
3245 | + | @Callable(gL) | |
3246 | + | func getBackpackREADONLY (B) = $Tuple2(nil, makeString(hL(bJ(B)), ":")) | |
3247 | + | ||
3248 | + | ||
3249 | + | ||
3250 | + | @Callable(gL) | |
3251 | + | func getWarehouseREADONLY (Q) = { | |
3252 | + | let jt = value(assetInfo(fromBase58String(Q))) | |
3253 | + | let ia = (dI(split(jt.description, "_")[dj]) / cG) | |
3254 | + | let ib = valueOrElse(getInteger(bz(Q)), 0) | |
3255 | + | $Tuple2(nil, makeString_2C(hY(by(Q), ia, ib), ":")) | |
3256 | + | } | |
3257 | + | ||
3258 | + | ||
3259 | + | ||
3260 | + | @Callable(gL) | |
3261 | + | func saveLastTx () = if (!(containsElement([df, dd, dg, dh], gL.caller))) | |
3260 | 3262 | then throw("Access denied") | |
3261 | - | else $Tuple2( | |
3262 | - | ||
3263 | - | ||
3264 | - | ||
3265 | - | @Callable( | |
3266 | - | func updateDuckStats ( | |
3263 | + | else $Tuple2(li(gL), 42) | |
3264 | + | ||
3265 | + | ||
3266 | + | ||
3267 | + | @Callable(gL) | |
3268 | + | func updateDuckStats (B,kb) = if ((gL.caller != dd)) | |
3267 | 3269 | then throw("Access denied") | |
3268 | - | else | |
3269 | - | ||
3270 | - | ||
3271 | - | ||
3272 | - | @Callable( | |
3273 | - | func updateAccStats ( | |
3270 | + | else ka(B, kb) | |
3271 | + | ||
3272 | + | ||
3273 | + | ||
3274 | + | @Callable(gL) | |
3275 | + | func updateAccStats (d,kb) = if (!(containsElement([df, dd, dh], gL.caller))) | |
3274 | 3276 | then throw("Access denied") | |
3275 | - | else | |
3276 | - | ||
3277 | - | ||
3278 | - | ||
3279 | - | @Callable( | |
3280 | - | func equipDuck ( | |
3281 | - | let | |
3282 | - | if ((size( | |
3277 | + | else kg(d, kb) | |
3278 | + | ||
3279 | + | ||
3280 | + | ||
3281 | + | @Callable(gL) | |
3282 | + | func equipDuck (ng) = { | |
3283 | + | let lm = li(gL) | |
3284 | + | if ((size(gL.payments) != 0)) | |
3283 | 3285 | then throw("No payments required") | |
3284 | 3286 | else { | |
3285 | - | let | |
3286 | - | let | |
3287 | - | if ( | |
3287 | + | let d = toString(gL.originCaller) | |
3288 | + | let B = valueOrErrorMessage(getString(bI(d)), "You don't have a duck staked") | |
3289 | + | if (kq(B)) | |
3288 | 3290 | then throw("equipDuck_checkTournament") | |
3289 | - | else if ( | |
3291 | + | else if (kr(B)) | |
3290 | 3292 | then throw("equipDuck_checkDelivery") | |
3291 | 3293 | else { | |
3292 | - | let | |
3293 | - | let | |
3294 | - | let | |
3295 | - | let | |
3296 | - | let | |
3297 | - | if ((size( | |
3294 | + | let gy = G(B) | |
3295 | + | let nh = split(valueOrElse(getString(gy), ",;,_,;,_,;,_,;,_,;,_,;,"), "_") | |
3296 | + | let hM = bJ(B) | |
3297 | + | let ip = hL(hM) | |
3298 | + | let lD = split(ng, "_") | |
3299 | + | if ((size(lD) != r)) | |
3298 | 3300 | then throw("Wrong equipment string") | |
3299 | 3301 | else { | |
3300 | - | let | |
3301 | - | let | |
3302 | - | let | |
3302 | + | let gA = gn(nh, fy(ip[bl]), true, nil) | |
3303 | + | let gB = split(lD[q], ";")[1] | |
3304 | + | let ap = if ((gB == "")) | |
3303 | 3305 | then 0 | |
3304 | 3306 | else { | |
3305 | - | let | |
3306 | - | if (( | |
3307 | + | let gC = split(gB, ",")[0] | |
3308 | + | if ((gC == "")) | |
3307 | 3309 | then 0 | |
3308 | 3310 | else { | |
3309 | - | let | |
3310 | - | let | |
3311 | - | let | |
3312 | - | if (if (if (if (if (( | |
3311 | + | let fN = split(gC, ":") | |
3312 | + | let db = fN[0] | |
3313 | + | let gD = fN[1] | |
3314 | + | if (if (if (if (if ((db == "06")) | |
3313 | 3315 | then true | |
3314 | - | else ( | |
3316 | + | else (db == "07")) | |
3315 | 3317 | then true | |
3316 | - | else ( | |
3317 | - | then ( | |
3318 | + | else (db == "08")) | |
3319 | + | then (gD != "") | |
3318 | 3320 | else false) | |
3319 | - | then (parseIntValue( | |
3321 | + | then (parseIntValue(gD) > 0) | |
3320 | 3322 | else false) | |
3321 | - | then parseIntValue(split( | |
3323 | + | then parseIntValue(split(aT[parseIntValue(db)], "_")[aV]) | |
3322 | 3324 | else 0 | |
3323 | 3325 | } | |
3324 | 3326 | } | |
3325 | - | let | |
3326 | - | let | |
3327 | - | let | |
3328 | - | $Tuple2(([StringEntry( | |
3327 | + | let gi = an(this, B, ap, true) | |
3328 | + | let gE = gn(lD, gA, false, gi) | |
3329 | + | let ni = fD(gE) | |
3330 | + | $Tuple2(([StringEntry(gy, ng), StringEntry(hM, makeString_2C([ip[bi], ip[bj], ip[bk], ni], ":")), StringEntry(M(B), makeString([toString(gi[7]), toString(gi[8]), toString(gi[9]), toString(gi[10]), toString(gi[11])], "_"))] ++ lm), 0) | |
3329 | 3331 | } | |
3330 | 3332 | } | |
3331 | 3333 | } | |
3333 | 3335 | ||
3334 | 3336 | ||
3335 | 3337 | ||
3336 | - | @Callable( | |
3337 | - | func fortificateLand ( | |
3338 | - | let | |
3339 | - | if ((size( | |
3338 | + | @Callable(gL) | |
3339 | + | func fortificateLand (Q,nj) = { | |
3340 | + | let lm = li(gL) | |
3341 | + | if ((size(gL.payments) != 0)) | |
3340 | 3342 | then throw("No payments required") | |
3341 | 3343 | else { | |
3342 | - | let | |
3343 | - | let | |
3344 | - | let | |
3345 | - | let | |
3346 | - | let | |
3347 | - | let | |
3348 | - | let | |
3349 | - | let | |
3350 | - | let | |
3351 | - | let | |
3352 | - | let | |
3353 | - | let | |
3354 | - | let | |
3355 | - | let | |
3356 | - | let | |
3357 | - | let | |
3358 | - | let | |
3359 | - | let | |
3360 | - | let | |
3361 | - | let | |
3362 | - | let | |
3363 | - | let | |
3364 | - | let | |
3365 | - | let | |
3366 | - | $Tuple2(([StringEntry( | |
3367 | - | } | |
3368 | - | } | |
3369 | - | ||
3370 | - | ||
3371 | - | ||
3372 | - | @Callable( | |
3373 | - | func initDuckTourAttempt ( | |
3344 | + | let d = toString(gL.originCaller) | |
3345 | + | let B = valueOrElse(getString(bI(d)), "") | |
3346 | + | let fI = an(this, B, 0, false) | |
3347 | + | let nk = bA(Q) | |
3348 | + | let nl = split(valueOrElse(getString(nk), ":0_15:0_18:0"), "_") | |
3349 | + | let jt = value(assetInfo(fromBase58String(Q))) | |
3350 | + | let ia = (dI(split(jt.description, "_")[dj]) / cG) | |
3351 | + | let ib = valueOrElse(getInteger(bz(Q)), 0) | |
3352 | + | let hZ = by(Q) | |
3353 | + | let ie = hY(hZ, ia, ib) | |
3354 | + | let nm = split(ie[bd], "_") | |
3355 | + | let nn = parseIntValue(nm[bf]) | |
3356 | + | let no = parseIntValue(nm[bg]) | |
3357 | + | let np = split(nj, "_") | |
3358 | + | let nq = gu(nl, fy(ie[bc]), nn, no, true, nil) | |
3359 | + | let gA = nq._1 | |
3360 | + | let nr = nq._2 | |
3361 | + | let ns = nq._3 | |
3362 | + | let nt = gu(np, gA, nr, ns, false, fI) | |
3363 | + | let gE = nt._1 | |
3364 | + | let nu = nt._2 | |
3365 | + | let nv = nt._3 | |
3366 | + | let ni = fD(gE) | |
3367 | + | let jZ = makeString([nm[be], toString(nu), toString(nv), nm[bh]], "_") | |
3368 | + | $Tuple2(([StringEntry(nk, nj), StringEntry(hZ, makeString_2C([ie[aZ], ie[ba], ie[bb], ni, jZ], ":"))] ++ lm), 0) | |
3369 | + | } | |
3370 | + | } | |
3371 | + | ||
3372 | + | ||
3373 | + | ||
3374 | + | @Callable(gL) | |
3375 | + | func initDuckTourAttempt (B) = if ((gL.caller != dg)) | |
3374 | 3376 | then throw("Access denied") | |
3375 | 3377 | else { | |
3376 | - | let | |
3377 | - | let | |
3378 | - | let | |
3379 | - | let | |
3380 | - | let | |
3381 | - | let | |
3382 | - | let | |
3383 | - | $Tuple2([IntegerEntry( | |
3378 | + | let jc = A(B) | |
3379 | + | let jd = ah(valueOrElse(getInteger(E(B)), 0)) | |
3380 | + | let kv = valueOrElse(getInteger(jc), jd) | |
3381 | + | let nw = bK(B) | |
3382 | + | let jr = valueOrElse(getString(nw), aK) | |
3383 | + | let cf = valueOrElse(getInteger(dg, bQ), 0) | |
3384 | + | let nx = (toString(cf) + "_T_0") | |
3385 | + | $Tuple2([IntegerEntry(K(B), kv), IntegerEntry(jc, jd), StringEntry(L(B), jr), StringEntry(nw, nx)], nx) | |
3384 | 3386 | } | |
3385 | 3387 | ||
3386 | 3388 | ||
3387 | 3389 | ||
3388 | - | @Callable( | |
3390 | + | @Callable(gL) | |
3389 | 3391 | func breakAttempt () = { | |
3390 | - | let | |
3391 | - | let | |
3392 | - | let | |
3393 | - | let | |
3394 | - | if ((split( | |
3392 | + | let lm = li(gL) | |
3393 | + | let B = valueOrErrorMessage(getString(bI(toString(gL.caller))), "You don't have a duck staked") | |
3394 | + | let nw = bK(B) | |
3395 | + | let jr = valueOrElse(getString(nw), aK) | |
3396 | + | if ((split(jr, "_")[bn] != "T")) | |
3395 | 3397 | then throw("Your duck is not in the tournament") | |
3396 | 3398 | else { | |
3397 | - | let | |
3398 | - | let | |
3399 | - | $Tuple2((( | |
3400 | - | } | |
3401 | - | } | |
3402 | - | ||
3403 | - | ||
3404 | - | ||
3405 | - | @Callable( | |
3406 | - | func exitTournamentInternal ( | |
3399 | + | let kA = getIntegerValue(K(B)) | |
3400 | + | let kB = getStringValue(L(B)) | |
3401 | + | $Tuple2(((lm :+ IntegerEntry(A(B), kA)) :+ StringEntry(nw, kB)), jr) | |
3402 | + | } | |
3403 | + | } | |
3404 | + | ||
3405 | + | ||
3406 | + | ||
3407 | + | @Callable(gL) | |
3408 | + | func exitTournamentInternal (B) = if ((gL.caller != this)) | |
3407 | 3409 | then throw("Access denied") | |
3408 | 3410 | else { | |
3409 | - | let | |
3410 | - | let | |
3411 | - | $Tuple2([IntegerEntry( | |
3411 | + | let kA = getIntegerValue(K(B)) | |
3412 | + | let kB = getStringValue(L(B)) | |
3413 | + | $Tuple2([IntegerEntry(A(B), kA), StringEntry(bK(B), kB)], false) | |
3412 | 3414 | } | |
3413 | 3415 | ||
3414 | 3416 | ||
3415 | 3417 | ||
3416 | - | @Callable( | |
3417 | - | func exitDeliveryInternal ( | |
3418 | + | @Callable(gL) | |
3419 | + | func exitDeliveryInternal (B) = if ((gL.caller != this)) | |
3418 | 3420 | then throw("Access denied") | |
3419 | 3421 | else { | |
3420 | - | let | |
3421 | - | $Tuple2(( | |
3422 | + | let mj = ks(B, false, 0) | |
3423 | + | $Tuple2((mj._1 ++ mj._2), false) | |
3422 | 3424 | } | |
3423 | 3425 | ||
3424 | 3426 | ||
3425 | 3427 | ||
3426 | - | @Callable( | |
3427 | - | func autoExitDelivery ( | |
3428 | + | @Callable(gL) | |
3429 | + | func autoExitDelivery (B,iW) = if ((gL.caller != this)) | |
3428 | 3430 | then throw("Access denied") | |
3429 | 3431 | else { | |
3430 | - | let | |
3431 | - | $Tuple2( | |
3432 | + | let mj = ks(B, true, iW) | |
3433 | + | $Tuple2(mj._1, $Tuple2(mj._3, mj._4)) | |
3432 | 3434 | } | |
3433 | 3435 | ||
3434 | 3436 | ||
3435 | 3437 | ||
3436 | - | @Callable( | |
3437 | - | func prepareRobbery ( | |
3438 | - | let | |
3439 | - | if (!(sigVerify_8Kb( | |
3438 | + | @Callable(gL) | |
3439 | + | func prepareRobbery (iR,iS) = { | |
3440 | + | let lm = li(gL) | |
3441 | + | if (!(sigVerify_8Kb(iR, iS, ea))) | |
3440 | 3442 | then throw("signature does not match") | |
3441 | - | else if ((size( | |
3443 | + | else if ((size(gL.payments) != 1)) | |
3442 | 3444 | then throw("exactly 1 payment must be attached") | |
3443 | 3445 | else { | |
3444 | - | let | |
3445 | - | let | |
3446 | - | if (if (!(isDefined( | |
3446 | + | let ln = gL.payments[0] | |
3447 | + | let ny = ln.amount | |
3448 | + | if (if (!(isDefined(ln.assetId))) | |
3447 | 3449 | then true | |
3448 | - | else (value( | |
3450 | + | else (value(ln.assetId) != dn)) | |
3449 | 3451 | then throw("WLGOLD payments only!") | |
3450 | 3452 | else { | |
3451 | - | let | |
3452 | - | if ((size( | |
3453 | + | let fq = split(toUtf8String(iR), "|") | |
3454 | + | if ((size(fq) != 2)) | |
3453 | 3455 | then throw("Wrong message format") | |
3454 | 3456 | else { | |
3455 | - | let | |
3456 | - | if ( | |
3457 | + | let B = fq[0] | |
3458 | + | if (kq(B)) | |
3457 | 3459 | then throw("prepareRobbery_checkTournament") | |
3458 | - | else if ( | |
3460 | + | else if (kr(B)) | |
3459 | 3461 | then throw("prepareRobbery_checkDelivery") | |
3460 | 3462 | else { | |
3461 | - | let | |
3462 | - | if (( | |
3463 | - | then throw(((("Payment " + toString( | |
3463 | + | let az = av(this, B)._1 | |
3464 | + | if ((az > ny)) | |
3465 | + | then throw(((("Payment " + toString(ny)) + " < required ") + toString(az))) | |
3464 | 3466 | else { | |
3465 | - | let | |
3466 | - | let | |
3467 | - | let | |
3468 | - | let | |
3469 | - | let | |
3470 | - | if (if (( | |
3471 | - | then ( | |
3467 | + | let nz = split(fq[1], "_") | |
3468 | + | let ay = lastBlock.timestamp | |
3469 | + | let aA = valueOrElse(getInteger(S(B)), 0) | |
3470 | + | let aB = valueOrElse(getString(T(B)), "") | |
3471 | + | let aC = valueOrElse(getInteger(R(aB)), 0) | |
3472 | + | if (if ((aA != y)) | |
3473 | + | then (aC > ay) | |
3472 | 3474 | else false) | |
3473 | - | then throw(("You already started robbing, wait till " + toString( | |
3475 | + | then throw(("You already started robbing, wait till " + toString(aC))) | |
3474 | 3476 | else { | |
3475 | - | func | |
3476 | - | let | |
3477 | - | let | |
3478 | - | if (( | |
3477 | + | func nA (eS,Q) = { | |
3478 | + | let nB = valueOrElse(getInteger(P(Q)), 0) | |
3479 | + | let nC = valueOrElse(getInteger(R(Q)), 0) | |
3480 | + | if ((nB > size(v))) | |
3479 | 3481 | then throw("Invalid state") | |
3480 | - | else if (( | |
3482 | + | else if ((ay > nC)) | |
3481 | 3483 | then { | |
3482 | - | let | |
3483 | - | if ((0 >= | |
3484 | - | then | |
3484 | + | let nD = valueOrElse(getInteger(bs(Q)), 0) | |
3485 | + | if ((0 >= nD)) | |
3486 | + | then eS | |
3485 | 3487 | else { | |
3486 | - | let | |
3487 | - | let | |
3488 | - | let | |
3489 | - | let | |
3490 | - | let | |
3491 | - | let | |
3492 | - | if (( | |
3493 | - | then | |
3494 | - | else ( | |
3488 | + | let gs = value(assetInfo(fromBase58String(Q))) | |
3489 | + | let jx = split(gs.description, "_") | |
3490 | + | let jj = dI(jx[dj]) | |
3491 | + | let nE = ji(Q, jj) | |
3492 | + | let gR = (ay - nD) | |
3493 | + | let jA = fraction(gR, (nE * jj), a) | |
3494 | + | if ((w > jA)) | |
3495 | + | then eS | |
3496 | + | else (eS :+ Q) | |
3495 | 3497 | } | |
3496 | 3498 | } | |
3497 | - | else | |
3499 | + | else eS | |
3498 | 3500 | } | |
3499 | 3501 | ||
3500 | - | let | |
3501 | - | let | |
3502 | - | let | |
3503 | - | let | |
3504 | - | func | |
3505 | - | then | |
3506 | - | else | |
3507 | - | ||
3508 | - | func | |
3509 | - | then | |
3502 | + | let nF = { | |
3503 | + | let eU = nz | |
3504 | + | let eV = size(eU) | |
3505 | + | let eW = nil | |
3506 | + | func eX (eY,eZ) = if ((eZ >= eV)) | |
3507 | + | then eY | |
3508 | + | else nA(eY, eU[eZ]) | |
3509 | + | ||
3510 | + | func fa (eY,eZ) = if ((eZ >= eV)) | |
3511 | + | then eY | |
3510 | 3512 | else throw("List size exceeds 10") | |
3511 | 3513 | ||
3512 | - | | |
3514 | + | fa(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
3513 | 3515 | } | |
3514 | - | if ((size( | |
3516 | + | if ((size(nF) == 0)) | |
3515 | 3517 | then throw("No candidates for robbery") | |
3516 | 3518 | else { | |
3517 | - | let | |
3518 | - | let | |
3519 | - | $Tuple2(([IntegerEntry( | |
3519 | + | let nG = dS(size(nF), height, (iS + gL.transactionId)) | |
3520 | + | let Q = nF[nG] | |
3521 | + | $Tuple2(([IntegerEntry(P(Q), x), IntegerEntry(R(Q), (ay + v[x])), IntegerEntry(S(B), z), StringEntry(T(B), Q)] ++ lm), Q) | |
3520 | 3522 | } | |
3521 | 3523 | } | |
3522 | 3524 | } | |
3528 | 3530 | ||
3529 | 3531 | ||
3530 | 3532 | ||
3531 | - | @Callable( | |
3532 | - | func robLand ( | |
3533 | - | let | |
3534 | - | if (!(sigVerify_8Kb( | |
3533 | + | @Callable(gL) | |
3534 | + | func robLand (iR,iS) = { | |
3535 | + | let lm = li(gL) | |
3536 | + | if (!(sigVerify_8Kb(iR, iS, ea))) | |
3535 | 3537 | then throw("signature does not match") | |
3536 | 3538 | else { | |
3537 | - | let | |
3538 | - | let | |
3539 | - | let | |
3540 | - | $Tuple2(( | |
3541 | - | } | |
3542 | - | } | |
3543 | - | ||
3544 | - | ||
3545 | - | ||
3546 | - | @Callable( | |
3547 | - | func acceptDelivery () = if (!( | |
3539 | + | let bM = toString(gL.caller) | |
3540 | + | let B = valueOrErrorMessage(getString(bI(bM)), "You don't have a duck staked") | |
3541 | + | let ay = lastBlock.timestamp | |
3542 | + | $Tuple2((lm :+ IntegerEntry(N(B), ay)), 0) | |
3543 | + | } | |
3544 | + | } | |
3545 | + | ||
3546 | + | ||
3547 | + | ||
3548 | + | @Callable(gL) | |
3549 | + | func acceptDelivery () = if (!(cw)) | |
3548 | 3550 | then throw("Delivery feature is turned off!") | |
3549 | 3551 | else { | |
3550 | - | let | |
3551 | - | let | |
3552 | - | let | |
3553 | - | let | |
3554 | - | let | |
3555 | - | if (( | |
3556 | - | then throw(((("Delivery is not available, fund=" + | |
3552 | + | let lm = li(gL) | |
3553 | + | let bM = toString(gL.caller) | |
3554 | + | let B = valueOrErrorMessage(getString(bI(bM)), "You don't have a duck staked") | |
3555 | + | let nH = valueOrElse(getInteger(dd, bO), 0) | |
3556 | + | let ky = valueOrElse(getInteger(dd, bP), 0) | |
3557 | + | if ((aN > (nH - ky))) | |
3558 | + | then throw(((("Delivery is not available, fund=" + dN(nH, 6)) + ", locked=") + dN(ky, 6))) | |
3557 | 3559 | else { | |
3558 | - | let | |
3559 | - | let | |
3560 | - | if (( | |
3561 | - | then throw(("Delivery is forbidden for your duck until " + toString( | |
3562 | - | else if ( | |
3560 | + | let ay = lastBlock.timestamp | |
3561 | + | let nI = valueOrElse(getInteger(U(B)), 0) | |
3562 | + | if ((nI > ay)) | |
3563 | + | then throw(("Delivery is forbidden for your duck until " + toString(nI))) | |
3564 | + | else if (kq(B)) | |
3563 | 3565 | then throw("acceptDelivery_checkTournament") | |
3564 | - | else if ( | |
3566 | + | else if (kr(B)) | |
3565 | 3567 | then throw("acceptDelivery_checkDelivery") | |
3566 | 3568 | else { | |
3567 | - | let | |
3568 | - | let | |
3569 | - | let | |
3570 | - | let | |
3571 | - | let | |
3572 | - | let | |
3573 | - | let | |
3574 | - | $Tuple2(([IntegerEntry( | |
3569 | + | let nJ = dA(invoke(dd, "updateDeliveryLocked", [(ky + aN)], nil)) | |
3570 | + | let jc = A(B) | |
3571 | + | let jd = ah(valueOrElse(getInteger(E(B)), 0)) | |
3572 | + | let kv = valueOrElse(getInteger(jc), jd) | |
3573 | + | let nw = bK(B) | |
3574 | + | let jr = valueOrElse(getString(nw), aK) | |
3575 | + | let nK = (toString(ay) + "_D_0") | |
3576 | + | $Tuple2(([IntegerEntry(K(B), kv), IntegerEntry(jc, jd), StringEntry(L(B), jr), StringEntry(nw, nK)] ++ lm), $Tuple2(nK, nJ)) | |
3575 | 3577 | } | |
3576 | 3578 | } | |
3577 | 3579 | } |
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 | - | ||
7 | - | ||
8 | - | ||
9 | - | ||
10 | - | ||
11 | - | let e = | |
12 | - | ||
13 | - | let f = | |
14 | - | ||
15 | - | let g = | |
16 | - | ||
17 | - | let h = | |
18 | - | ||
19 | - | let i = | |
20 | - | ||
21 | - | let j = | |
22 | - | ||
23 | - | let k = | |
24 | - | ||
25 | - | let l = | |
26 | - | ||
27 | - | let m = | |
28 | - | ||
29 | - | let n = | |
30 | - | ||
31 | - | let o = | |
32 | - | ||
33 | - | let p = | |
34 | - | ||
35 | - | let q = | |
36 | - | ||
37 | - | let r = | |
6 | + | let b = 60000 | |
7 | + | ||
8 | + | func c (d) = ("lastArbTimeUser_" + d) | |
9 | + | ||
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 | 38 | ||
39 | 39 | let s = 2 | |
40 | 40 | ||
41 | - | let t = | |
42 | - | ||
43 | - | let u = | |
44 | - | ||
45 | - | let v = | |
46 | - | ||
47 | - | let w = | |
48 | - | ||
49 | - | let x = | |
50 | - | ||
51 | - | let y = | |
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 | - | ||
101 | - | ||
102 | - | ||
103 | - | ||
104 | - | ||
105 | - | ||
106 | - | ||
107 | - | ||
108 | - | ||
109 | - | ||
110 | - | ||
41 | + | let t = 2 | |
42 | + | ||
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 | 111 | ||
112 | 112 | let V = 10000 | |
113 | 113 | ||
114 | - | let W = | |
115 | - | ||
116 | - | let X = | |
117 | - | ||
118 | - | let Y = | |
119 | - | ||
120 | - | let Z = | |
121 | - | ||
122 | - | let aa = | |
123 | - | ||
124 | - | let ab = | |
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 | |
125 | 125 | ||
126 | 126 | let ac = 1000000 | |
127 | 127 | ||
128 | - | let ad = | |
129 | - | ||
130 | - | ||
131 | - | ||
132 | - | ||
133 | - | ||
134 | - | ||
135 | - | ||
136 | - | ||
137 | - | ||
138 | - | ||
139 | - | | |
140 | - | ||
141 | - | ||
142 | - | ||
143 | - | ||
144 | - | ||
145 | - | let | |
146 | - | let | |
147 | - | ( | |
148 | - | | |
149 | - | | |
150 | - | | |
151 | - | ||
152 | - | ||
153 | - | ||
154 | - | ||
155 | - | ||
156 | - | let | |
157 | - | let | |
158 | - | let | |
159 | - | let | |
160 | - | let | |
161 | - | | |
162 | - | | |
163 | - | ||
164 | - | ||
165 | - | ||
166 | - | ||
167 | - | let aD = " | |
168 | - | ||
169 | - | let aE = " | |
170 | - | ||
171 | - | let aF = | |
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 = | |
128 | + | let ad = 1000000 | |
129 | + | ||
130 | + | let ae = 10000 | |
131 | + | ||
132 | + | func af (ag) = fraction(f, pow(ag, 4, g, 4, 4, DOWN), e) | |
133 | + | ||
134 | + | ||
135 | + | func ah (ai) = (100 + ai) | |
136 | + | ||
137 | + | ||
138 | + | func aj (ak,al) = { | |
139 | + | let am = af(al) | |
140 | + | [am, (h * (am - ak))] | |
141 | + | } | |
142 | + | ||
143 | + | ||
144 | + | func an (ao,B,ap,aq) = { | |
145 | + | let ar = split(valueOrElse(getString(ao, C(B)), "0_0_0_0_0"), "_") | |
146 | + | let as = valueOrElse(getInteger(ao, E(B)), 0) | |
147 | + | let at = valueOrElse(getInteger(ao, A(B)), ah(as)) | |
148 | + | let au = split(valueOrElse(getString(ao, M(B)), "0_0_0_0_0"), "_") | |
149 | + | ([parseIntValue(ar[l]), parseIntValue(ar[m]), parseIntValue(ar[n]), parseIntValue(ar[o]), parseIntValue(ar[p]), as, at] ++ (if (aq) | |
150 | + | then [ap, ap, ap, ap, ap] | |
151 | + | else [parseIntValue(au[l]), parseIntValue(au[m]), parseIntValue(au[n]), parseIntValue(au[o]), parseIntValue(au[p])])) | |
152 | + | } | |
153 | + | ||
154 | + | ||
155 | + | func av (ao,B) = { | |
156 | + | let aw = valueOrElse(getInteger(ao, O(B)), 0) | |
157 | + | let ax = valueOrElse(getInteger(ao, N(B)), 0) | |
158 | + | let ay = lastBlock.timestamp | |
159 | + | let az = max([i, (aw - (j * (ay - ax)))]) | |
160 | + | let aA = valueOrElse(getInteger(ao, S(B)), 0) | |
161 | + | let aB = valueOrElse(getString(ao, T(B)), "") | |
162 | + | let aC = valueOrElse(getInteger(ao, R(aB)), 0) | |
163 | + | $Tuple5(az, ax, aA, aB, aC) | |
164 | + | } | |
165 | + | ||
166 | + | ||
167 | + | let aD = "LAND" | |
168 | + | ||
169 | + | let aE = "DUCK" | |
170 | + | ||
171 | + | let aF = "PRESALE" | |
172 | + | ||
173 | + | let aG = 6 | |
174 | + | ||
175 | + | let aH = 25 | |
176 | + | ||
177 | + | let aI = 3456000 | |
178 | + | ||
179 | + | let aJ = 10000000000 | |
180 | + | ||
181 | + | let aK = "Africa_F_Africa" | |
182 | + | ||
183 | + | let aL = 39637 | |
184 | + | ||
185 | + | let aM = 10 | |
186 | + | ||
187 | + | let aN = 50000 | |
188 | + | ||
189 | + | let aO = 600000 | |
190 | + | ||
191 | + | let aP = ["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"] | |
192 | + | ||
193 | + | let aQ = ["Americas", "Europe", "Asia", "Africa", "Oceania"] | |
194 | + | ||
195 | + | let aR = 10000000 | |
196 | + | ||
197 | + | let aS = [15, 16, 17, 18, 19, 20] | |
198 | + | ||
199 | + | let aT = ["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_"] | |
200 | + | ||
201 | + | let aU = 6 | |
202 | + | ||
203 | + | let aV = 8 | |
204 | + | ||
205 | + | let aW = 9 | |
206 | 206 | ||
207 | 207 | let aX = 10 | |
208 | 208 | ||
209 | - | let aY = 0 | |
210 | - | ||
211 | - | let aZ = 1 | |
212 | - | ||
213 | - | let ba = 2 | |
214 | - | ||
215 | - | let bb = 3 | |
216 | - | ||
217 | - | let bc = 4 | |
218 | - | ||
219 | - | let bd = 0 | |
220 | - | ||
221 | - | let be = 1 | |
222 | - | ||
223 | - | let bf = 2 | |
224 | - | ||
225 | - | let bg = 3 | |
226 | - | ||
227 | - | let bh = 0 | |
228 | - | ||
229 | - | let bi = 1 | |
230 | - | ||
231 | - | let bj = 2 | |
232 | - | ||
233 | - | let bk = 3 | |
234 | - | ||
235 | - | let bl = 0 | |
236 | - | ||
237 | - | let bm = 1 | |
238 | - | ||
239 | - | let bn = 2 | |
240 | - | ||
241 | - | func bo (bp) = ("no_" + bp) | |
242 | - | ||
243 | - | ||
244 | - | func bq (bp) = ("lcna_" + bp) | |
245 | - | ||
246 | - | ||
247 | - | func br (bp) = ("st_" + bp) | |
248 | - | ||
249 | - | ||
250 | - | func bs (bt,bp) = makeString(["las", bt, bp], "_") | |
251 | - | ||
252 | - | ||
253 | - | func bu (bv,bp,bw) = ((((("sttao_" + bv) + "_") + bp) + "_") + bw) | |
254 | - | ||
255 | - | ||
256 | - | func bx (P) = ("wh_" + P) | |
257 | - | ||
258 | - | ||
259 | - | func by (bp) = ("infraLevel_" + bp) | |
260 | - | ||
261 | - | ||
262 | - | func bz (P) = ("fortifications_" + P) | |
263 | - | ||
264 | - | ||
265 | - | func bA (bp) = ("duckCustomNameByAssetId_" + bp) | |
266 | - | ||
267 | - | ||
268 | - | func bB (c) = ("accountCustomNameByAddr_" + c) | |
269 | - | ||
270 | - | ||
271 | - | func bC (c) = ("accRefBy_" + c) | |
272 | - | ||
273 | - | ||
274 | - | func bD (A) = ("onboardArtActivatedOnDuck_" + A) | |
275 | - | ||
276 | - | ||
277 | - | func bE (c) = ("onboardArtActivatedDuckBy_" + c) | |
278 | - | ||
279 | - | ||
280 | - | func bF (c) = ("accReferrals_" + c) | |
281 | - | ||
282 | - | ||
283 | - | func bG (bp) = ("duckOwner_" + bp) | |
284 | - | ||
285 | - | ||
286 | - | func bH (bw) = ("stakedDuckByOwner_" + bw) | |
287 | - | ||
288 | - | ||
289 | - | func bI (A) = ("backPack_" + A) | |
290 | - | ||
291 | - | ||
292 | - | func bJ (A) = ("duckLocation_" + A) | |
293 | - | ||
294 | - | ||
295 | - | func bK (bL) = ("%s%s__userGwlReleaseTime__" + bL) | |
296 | - | ||
297 | - | ||
298 | - | func bM () = "emergencyWarehouseProducts" | |
299 | - | ||
300 | - | ||
301 | - | let bN = "deliveryFund" | |
302 | - | ||
303 | - | let bO = "deliveryLocked" | |
304 | - | ||
305 | - | let bP = "%s__lastTourId" | |
306 | - | ||
307 | - | func bQ (bR) = ("%s%d__tourStaticData__" + toString(bR)) | |
308 | - | ||
309 | - | ||
310 | - | func bS (bR) = ("%s%d__tourDynamicData__" + toString(bR)) | |
311 | - | ||
312 | - | ||
313 | - | func bT (bR,A) = makeString(["%s%d%s__bestResultByTourAndDuck", toString(bR), A], "__") | |
314 | - | ||
315 | - | ||
316 | - | let bU = 0 | |
317 | - | ||
318 | - | let bV = 1 | |
319 | - | ||
320 | - | let bW = 6 | |
321 | - | ||
322 | - | let bX = 1 | |
323 | - | ||
324 | - | func bY (bZ,bR) = { | |
325 | - | let ca = split(valueOrErrorMessage(getString(bZ, bQ(bR)), (("Error reading tournament " + toString(bR)) + " data")), "__") | |
326 | - | let cb = split_4C(valueOrErrorMessage(getString(bZ, bS(bR)), (("Error reading tournament " + toString(bR)) + " data")), "__") | |
327 | - | [ca, cb] | |
328 | - | } | |
329 | - | ||
330 | - | ||
331 | - | func cc (bZ,cd) = { | |
332 | - | let ce = valueOrElse(getInteger(bZ, bP), 0) | |
333 | - | let cf = split(cd, "_") | |
334 | - | let ax = lastBlock.timestamp | |
335 | - | let cg = bY(bZ, ce) | |
336 | - | let ca = cg[bU] | |
337 | - | let cb = cg[bV] | |
338 | - | if (if (if ((cf[bm] == "T")) | |
339 | - | then (parseIntValue(cf[bl]) == ce) | |
209 | + | let aY = 10 | |
210 | + | ||
211 | + | let aZ = 0 | |
212 | + | ||
213 | + | let ba = 1 | |
214 | + | ||
215 | + | let bb = 2 | |
216 | + | ||
217 | + | let bc = 3 | |
218 | + | ||
219 | + | let bd = 4 | |
220 | + | ||
221 | + | let be = 0 | |
222 | + | ||
223 | + | let bf = 1 | |
224 | + | ||
225 | + | let bg = 2 | |
226 | + | ||
227 | + | let bh = 3 | |
228 | + | ||
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) | |
340 | 342 | else false) | |
341 | - | then ( | |
343 | + | then (cc[bY] == "INPROGRESS") | |
342 | 344 | else false) | |
343 | - | then (parseIntValue( | |
345 | + | then (parseIntValue(cb[bX]) > ay) | |
344 | 346 | else false | |
345 | 347 | } | |
346 | 348 | ||
347 | 349 | ||
348 | - | func | |
349 | - | let | |
350 | - | let | |
351 | - | let | |
352 | - | let | |
353 | - | if (if (( | |
354 | - | then ( | |
350 | + | func ci (ce) = { | |
351 | + | let cg = split(ce, "_") | |
352 | + | let ay = lastBlock.timestamp | |
353 | + | let cj = parseIntValue(cg[bm]) | |
354 | + | let ck = parseIntValue(cg[bo]) | |
355 | + | if (if ((cg[bn] == "D")) | |
356 | + | then (ay > (cj + aO)) | |
355 | 357 | else false) | |
356 | - | then (3 >= | |
358 | + | then (3 >= ck) | |
357 | 359 | else false | |
358 | 360 | } | |
359 | 361 | ||
360 | 362 | ||
361 | - | func | |
362 | - | let | |
363 | - | if (( | |
364 | - | then ( | |
363 | + | func cl (ce) = { | |
364 | + | let cm = split(ce, "_")[bn] | |
365 | + | if ((cm != "T")) | |
366 | + | then (cm != "D") | |
365 | 367 | else false | |
366 | 368 | } | |
367 | 369 | ||
368 | 370 | ||
369 | - | func | |
370 | - | let | |
371 | - | let | |
372 | - | let | |
373 | - | let | |
374 | - | let | |
375 | - | let | |
376 | - | let | |
377 | - | if (( | |
371 | + | func cn (ca,ce) = { | |
372 | + | let cf = valueOrElse(getInteger(ca, bQ), 0) | |
373 | + | let cg = split(ce, "_") | |
374 | + | let ay = lastBlock.timestamp | |
375 | + | let ch = bZ(ca, cf) | |
376 | + | let cb = ch[bV] | |
377 | + | let cc = ch[bW] | |
378 | + | let cm = cg[bn] | |
379 | + | if ((cm == "D")) | |
378 | 380 | then true | |
379 | - | else if (if (if (( | |
380 | - | then (parseIntValue( | |
381 | + | else if (if (if ((cg[bn] == "T")) | |
382 | + | then (parseIntValue(cg[bm]) == cf) | |
381 | 383 | else false) | |
382 | - | then ( | |
384 | + | then (cc[bY] == "INPROGRESS") | |
383 | 385 | else false) | |
384 | - | then (parseIntValue( | |
386 | + | then (parseIntValue(cb[bX]) > ay) | |
385 | 387 | else false | |
386 | 388 | } | |
387 | 389 | ||
388 | 390 | ||
389 | - | func cn (co) = (parseIntValue(co[aT]) * aQ) | |
390 | - | ||
391 | - | ||
392 | - | func cp (cq,cr,cs) = throw(((((("Cheat attempt: oldLoc=" + cq) + ", newLoc=") + cr) + ", case=") + toString(cs))) | |
393 | - | ||
394 | - | ||
395 | - | let ct = false | |
391 | + | func co (cp) = (parseIntValue(cp[aU]) * aR) | |
392 | + | ||
393 | + | ||
394 | + | func cq (cr,cs,ct) = throw(((((("Cheat attempt: oldLoc=" + cr) + ", newLoc=") + cs) + ", case=") + toString(ct))) | |
395 | + | ||
396 | 396 | ||
397 | 397 | let cu = false | |
398 | 398 | ||
399 | - | let cv = true | |
400 | - | ||
401 | - | let cw = take(drop(this.bytes, 1), 1) | |
402 | - | ||
403 | - | let cx = { | |
404 | - | let cy = cw | |
405 | - | if ((base58'2W' == cy)) | |
399 | + | let cv = false | |
400 | + | ||
401 | + | let cw = true | |
402 | + | ||
403 | + | let cx = take(drop(this.bytes, 1), 1) | |
404 | + | ||
405 | + | let cy = { | |
406 | + | let cz = cx | |
407 | + | if ((base58'2W' == cz)) | |
406 | 408 | then base58'9wc3LXNA4TEBsXyKtoLE9mrbDD7WMHXvXrCjZvabLAsi' | |
407 | - | else if ((base58'2T' == | |
409 | + | else if ((base58'2T' == cz)) | |
408 | 410 | then base58'6mWwf9mZBjVgkC54idpyaZLQfAosD914wT8fGf2iiY63' | |
409 | 411 | else throw("Unknown chain") | |
410 | 412 | } | |
411 | 413 | ||
412 | - | let | |
413 | - | let | |
414 | - | if ((base58'2W' == | |
414 | + | let cA = { | |
415 | + | let cz = cx | |
416 | + | if ((base58'2W' == cz)) | |
415 | 417 | then "3PQCuvFbvh4LkPUnrnU1z3jnbA1p9m3WNhv" | |
416 | - | else if ((base58'2T' == | |
418 | + | else if ((base58'2T' == cz)) | |
417 | 419 | then "3MumkGGztCKAXpWDqxkddofqXSUbqQkvSJy" | |
418 | 420 | else throw("Unknown chain") | |
419 | 421 | } | |
420 | 422 | ||
421 | - | let | |
422 | - | let | |
423 | - | if ((base58'2W' == | |
423 | + | let cB = { | |
424 | + | let cz = cx | |
425 | + | if ((base58'2W' == cz)) | |
424 | 426 | then 10000000000 | |
425 | - | else if ((base58'2T' == | |
427 | + | else if ((base58'2T' == cz)) | |
426 | 428 | then 100000000 | |
427 | 429 | else throw("Unknown chain") | |
428 | 430 | } | |
429 | 431 | ||
430 | - | let | |
431 | - | let | |
432 | - | if ((base58'2W' == | |
432 | + | let cC = { | |
433 | + | let cz = cx | |
434 | + | if ((base58'2W' == cz)) | |
433 | 435 | then 86400000 | |
434 | - | else if ((base58'2T' == | |
436 | + | else if ((base58'2T' == cz)) | |
435 | 437 | then 60000 | |
436 | 438 | else throw("Unknown chain") | |
437 | 439 | } | |
438 | 440 | ||
439 | - | let | |
440 | - | ||
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 | - | func | |
458 | - | ||
459 | - | ||
460 | - | let | |
461 | - | ||
462 | - | let | |
463 | - | ||
464 | - | let | |
465 | - | ||
466 | - | let | |
467 | - | ||
468 | - | let | |
469 | - | ||
470 | - | let | |
471 | - | ||
472 | - | func | |
473 | - | ||
474 | - | ||
475 | - | func | |
476 | - | ||
477 | - | ||
478 | - | func | |
479 | - | ||
480 | - | ||
481 | - | func | |
482 | - | ||
483 | - | ||
484 | - | let | |
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 | - | func | |
519 | - | ||
520 | - | ||
521 | - | func | |
522 | - | ||
523 | - | ||
524 | - | func | |
525 | - | ||
526 | - | ||
527 | - | func | |
528 | - | ||
529 | - | ||
530 | - | func | |
531 | - | ||
532 | - | ||
533 | - | func | |
534 | - | let | |
535 | - | if ($isInstanceOf( | |
441 | + | let cD = "__" | |
442 | + | ||
443 | + | let cE = 1000000 | |
444 | + | ||
445 | + | let cF = 100000000 | |
446 | + | ||
447 | + | let cG = 25 | |
448 | + | ||
449 | + | let cH = 100 | |
450 | + | ||
451 | + | let cI = 225 | |
452 | + | ||
453 | + | let cJ = 400 | |
454 | + | ||
455 | + | let cK = 625 | |
456 | + | ||
457 | + | let cL = [0, 1, 2, 3, 4, 5] | |
458 | + | ||
459 | + | func cM (cN,cO) = valueOrErrorMessage(getString(cN, cO), makeString(["mandatory ", toString(cN), ".", cO, " is not defined"], "")) | |
460 | + | ||
461 | + | ||
462 | + | let cP = 1 | |
463 | + | ||
464 | + | let cQ = 2 | |
465 | + | ||
466 | + | let cR = 3 | |
467 | + | ||
468 | + | let cS = 4 | |
469 | + | ||
470 | + | let cT = 7 | |
471 | + | ||
472 | + | let cU = 8 | |
473 | + | ||
474 | + | func cV () = "%s__restConfig" | |
475 | + | ||
476 | + | ||
477 | + | func cW () = "%s__restAddr" | |
478 | + | ||
479 | + | ||
480 | + | func cX (cY) = split_4C(cM(cY, cV()), cD) | |
481 | + | ||
482 | + | ||
483 | + | func cZ (da,db) = valueOrErrorMessage(addressFromString(da[db]), ("Rest cfg doesn't contain address at index " + toString(db))) | |
484 | + | ||
485 | + | ||
486 | + | let dc = addressFromStringValue(valueOrElse(getString(this, cW()), cA)) | |
487 | + | ||
488 | + | let da = cX(dc) | |
489 | + | ||
490 | + | let ao = cZ(da, cP) | |
491 | + | ||
492 | + | let dd = cZ(da, cQ) | |
493 | + | ||
494 | + | let de = cZ(da, cR) | |
495 | + | ||
496 | + | let df = cZ(da, cS) | |
497 | + | ||
498 | + | let dg = cZ(da, cT) | |
499 | + | ||
500 | + | let dh = cZ(da, cU) | |
501 | + | ||
502 | + | let di = 0 | |
503 | + | ||
504 | + | let dj = 1 | |
505 | + | ||
506 | + | let dk = 2 | |
507 | + | ||
508 | + | let dl = 3 | |
509 | + | ||
510 | + | let dm = "wlg_assetId" | |
511 | + | ||
512 | + | let dn = valueOrErrorMessage(getBinary(df, dm), "WLGOLD is not issued yet") | |
513 | + | ||
514 | + | let do = "acresAssetId" | |
515 | + | ||
516 | + | let dp = valueOrErrorMessage(getBinary(dh, do), "ACRES is not issued yet") | |
517 | + | ||
518 | + | let dq = 2 | |
519 | + | ||
520 | + | func dr (cN) = ("finishBlockForAddr_" + cN) | |
521 | + | ||
522 | + | ||
523 | + | func ds () = "resTypesProportions" | |
524 | + | ||
525 | + | ||
526 | + | func dt (du) = ("resTypesByContinent_" + du) | |
527 | + | ||
528 | + | ||
529 | + | func dv (bx) = ("stakedLandsByOwner_" + bx) | |
530 | + | ||
531 | + | ||
532 | + | func dw (bx) = ("stakedPiecesByOwner_" + bx) | |
533 | + | ||
534 | + | ||
535 | + | func dx (dy) = { | |
536 | + | let cz = dy | |
537 | + | if ($isInstanceOf(cz, "String")) | |
536 | 538 | then { | |
537 | - | let | |
538 | - | | |
539 | + | let dz = cz | |
540 | + | dz | |
539 | 541 | } | |
540 | 542 | else throw("fail to cast into String") | |
541 | 543 | } | |
542 | 544 | ||
543 | 545 | ||
544 | - | func | |
545 | - | let | |
546 | - | if ($isInstanceOf( | |
546 | + | func dA (dy) = { | |
547 | + | let cz = dy | |
548 | + | if ($isInstanceOf(cz, "Int")) | |
547 | 549 | then { | |
548 | - | let | |
549 | - | | |
550 | + | let dB = cz | |
551 | + | dB | |
550 | 552 | } | |
551 | 553 | else throw("fail to cast into Int") | |
552 | 554 | } | |
553 | 555 | ||
554 | 556 | ||
555 | - | func | |
556 | - | let | |
557 | - | if ($isInstanceOf( | |
557 | + | func dC (dy) = { | |
558 | + | let cz = dy | |
559 | + | if ($isInstanceOf(cz, "List[Any]")) | |
558 | 560 | then { | |
559 | - | let | |
560 | - | | |
561 | + | let dD = cz | |
562 | + | dD | |
561 | 563 | } | |
562 | 564 | else throw("fail to cast into List[Any]") | |
563 | 565 | } | |
564 | 566 | ||
565 | 567 | ||
566 | - | func | |
567 | - | let | |
568 | - | if ($isInstanceOf( | |
568 | + | func dE (dy) = { | |
569 | + | let cz = dy | |
570 | + | if ($isInstanceOf(cz, "Boolean")) | |
569 | 571 | then { | |
570 | - | let | |
571 | - | | |
572 | + | let dz = cz | |
573 | + | dz | |
572 | 574 | } | |
573 | 575 | else throw("fail to cast into Boolean") | |
574 | 576 | } | |
575 | 577 | ||
576 | 578 | ||
577 | - | func | |
578 | - | let | |
579 | - | if ($isInstanceOf( | |
579 | + | func dF (dG) = { | |
580 | + | let cz = dG | |
581 | + | if ($isInstanceOf(cz, "(String, Int)")) | |
580 | 582 | then { | |
581 | - | let | |
582 | - | | |
583 | + | let dH = cz | |
584 | + | dH | |
583 | 585 | } | |
584 | 586 | else throw("fail to cast into (String, Int)") | |
585 | 587 | } | |
586 | 588 | ||
587 | 589 | ||
588 | - | func | |
589 | - | let | |
590 | - | if (("S" == | |
591 | - | then | |
592 | - | else if (("M" == | |
593 | - | then | |
594 | - | else if (("L" == | |
595 | - | then | |
596 | - | else if (("XL" == | |
597 | - | then | |
598 | - | else if (("XXL" == | |
599 | - | then | |
590 | + | func dI (dJ) = { | |
591 | + | let cz = dJ | |
592 | + | if (("S" == cz)) | |
593 | + | then cG | |
594 | + | else if (("M" == cz)) | |
595 | + | then cH | |
596 | + | else if (("L" == cz)) | |
597 | + | then cI | |
598 | + | else if (("XL" == cz)) | |
599 | + | then cJ | |
600 | + | else if (("XXL" == cz)) | |
601 | + | then cK | |
600 | 602 | else throw("Unknown land size") | |
601 | 603 | } | |
602 | 604 | ||
603 | 605 | ||
604 | - | func | |
605 | - | ||
606 | - | ||
607 | - | func | |
608 | - | ||
609 | - | ||
610 | - | func | |
611 | - | ||
612 | - | ||
613 | - | func | |
614 | - | let | |
615 | - | let | |
616 | - | let | |
617 | - | (((toString(( | |
618 | - | } | |
619 | - | ||
620 | - | ||
621 | - | func | |
622 | - | let | |
623 | - | let | |
624 | - | (toInt( | |
625 | - | } | |
626 | - | ||
627 | - | ||
628 | - | let | |
629 | - | let | |
630 | - | if ((base58'2W' == | |
606 | + | func dK (dz) = isDefined(parseInt(dz)) | |
607 | + | ||
608 | + | ||
609 | + | func dL () = "contractsBlocked" | |
610 | + | ||
611 | + | ||
612 | + | func dM (d) = ("lastTxIdByUser_" + d) | |
613 | + | ||
614 | + | ||
615 | + | func dN (dG,dO) = { | |
616 | + | let dP = pow(10, 0, dO, 0, 0, DOWN) | |
617 | + | let dQ = toString((dG % dP)) | |
618 | + | let dR = drop(toString(dP), (1 + size(dQ))) | |
619 | + | (((toString((dG / dP)) + ".") + dR) + dQ) | |
620 | + | } | |
621 | + | ||
622 | + | ||
623 | + | func dS (dT,dU,dV) = { | |
624 | + | let dW = value(blockInfoByHeight(dU)) | |
625 | + | let dX = sha256((value(dW.vrf) + dV)) | |
626 | + | (toInt(dX) % dT) | |
627 | + | } | |
628 | + | ||
629 | + | ||
630 | + | let dY = { | |
631 | + | let cz = cx | |
632 | + | if ((base58'2W' == cz)) | |
631 | 633 | then addressFromStringValue("3PEktVux2RhchSN63DsDo4b4mz4QqzKSeDv") | |
632 | - | else if ((base58'2T' == | |
634 | + | else if ((base58'2T' == cz)) | |
633 | 635 | then this | |
634 | 636 | else throw("Unknown chain") | |
635 | 637 | } | |
636 | 638 | ||
637 | - | let | |
638 | - | let | |
639 | - | if ((base58'2W' == | |
639 | + | let dZ = { | |
640 | + | let cz = cx | |
641 | + | if ((base58'2W' == cz)) | |
640 | 642 | then addressFromStringValue("3PDVuU45H7Eh5dmtNbnRNRStGwULA7NY6Hb") | |
641 | - | else if ((base58'2T' == | |
643 | + | else if ((base58'2T' == cz)) | |
642 | 644 | then this | |
643 | 645 | else throw("Unknown chain") | |
644 | 646 | } | |
645 | 647 | ||
646 | - | let | |
647 | - | let | |
648 | - | if ((base58'2W' == | |
649 | - | then if ( | |
648 | + | let ea = { | |
649 | + | let cz = cx | |
650 | + | if ((base58'2W' == cz)) | |
651 | + | then if (cu) | |
650 | 652 | then base58'CWsMtTZC5BjjoL4Q1ayW4Wwb1ehGACQB6DrKyPgotKfm' | |
651 | 653 | else base58'6LfPuKJjLgekmncBhMg2LZyMTNVzZBccXR28ySXm9uXD' | |
652 | - | else if ((base58'2T' == | |
654 | + | else if ((base58'2T' == cz)) | |
653 | 655 | then base58'6LfPuKJjLgekmncBhMg2LZyMTNVzZBccXR28ySXm9uXD' | |
654 | 656 | else throw("Unknown chain") | |
655 | 657 | } | |
656 | 658 | ||
657 | - | let | |
658 | - | ||
659 | - | let | |
660 | - | ||
661 | - | let | |
662 | - | ||
663 | - | let | |
664 | - | ||
665 | - | let | |
666 | - | ||
667 | - | let | |
668 | - | let | |
669 | - | if ((base58'2W' == | |
659 | + | let eb = base64'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==' | |
660 | + | ||
661 | + | let ec = 300000 | |
662 | + | ||
663 | + | let ed = 5000000 | |
664 | + | ||
665 | + | let ee = 50 | |
666 | + | ||
667 | + | let ef = 10000000 | |
668 | + | ||
669 | + | let eg = { | |
670 | + | let cz = cx | |
671 | + | if ((base58'2W' == cz)) | |
670 | 672 | then 252289527462 | |
671 | - | else if ((base58'2T' == | |
673 | + | else if ((base58'2T' == cz)) | |
672 | 674 | then 2522895274 | |
673 | 675 | else throw("Unknown chain") | |
674 | 676 | } | |
675 | 677 | ||
676 | - | let | |
677 | - | let | |
678 | - | if ((base58'2W' == | |
678 | + | let eh = { | |
679 | + | let cz = cx | |
680 | + | if ((base58'2W' == cz)) | |
679 | 681 | then 250000000 | |
680 | - | else if ((base58'2T' == | |
682 | + | else if ((base58'2T' == cz)) | |
681 | 683 | then 250000000 | |
682 | 684 | else throw("Unknown chain") | |
683 | 685 | } | |
684 | 686 | ||
685 | - | let | |
686 | - | ||
687 | - | let | |
688 | - | ||
689 | - | let | |
690 | - | ||
691 | - | let | |
692 | - | ||
693 | - | let | |
694 | - | ||
695 | - | let | |
696 | - | ||
697 | - | let | |
698 | - | ||
699 | - | let | |
700 | - | ||
701 | - | func | |
702 | - | ||
703 | - | ||
704 | - | func | |
705 | - | ||
706 | - | ||
707 | - | func | |
708 | - | ||
709 | - | ||
710 | - | func | |
711 | - | ||
712 | - | ||
713 | - | func | |
714 | - | ||
715 | - | ||
716 | - | func | |
717 | - | ||
718 | - | ||
719 | - | func | |
720 | - | ||
721 | - | ||
722 | - | func | |
723 | - | ||
724 | - | ||
725 | - | let | |
726 | - | ||
727 | - | let | |
728 | - | ||
729 | - | let | |
730 | - | ||
731 | - | let | |
732 | - | ||
733 | - | let | |
734 | - | ||
735 | - | let | |
736 | - | ||
737 | - | let | |
738 | - | ||
739 | - | func | |
740 | - | ||
741 | - | ||
742 | - | func | |
743 | - | let | |
744 | - | then ((( | |
745 | - | else -((((-( | |
746 | - | ( | |
747 | - | } | |
748 | - | ||
749 | - | ||
750 | - | func | |
751 | - | let | |
752 | - | if ((0 >= | |
687 | + | let ei = 2500000000 | |
688 | + | ||
689 | + | let ej = toBigInt(5) | |
690 | + | ||
691 | + | let ek = toBigInt(20) | |
692 | + | ||
693 | + | let el = toBigInt((20 * 20)) | |
694 | + | ||
695 | + | let em = toBigInt(((20 * 20) * 20)) | |
696 | + | ||
697 | + | let en = toBigInt((((20 * 20) * 20) * 20)) | |
698 | + | ||
699 | + | let eo = toBigInt(((((20 * 20) * 20) * 20) * 20)) | |
700 | + | ||
701 | + | let ep = 500 | |
702 | + | ||
703 | + | func eq () = "nextLandNum" | |
704 | + | ||
705 | + | ||
706 | + | func er (es) = ("lcn_" + es) | |
707 | + | ||
708 | + | ||
709 | + | func et (eu) = ("la_" + eu) | |
710 | + | ||
711 | + | ||
712 | + | func ev (bq,bx) = ((("ilao_" + bq) + "_") + bx) | |
713 | + | ||
714 | + | ||
715 | + | func ew (eu) = ("lo_" + eu) | |
716 | + | ||
717 | + | ||
718 | + | func ex (es) = ("duckByCustomName_" + es) | |
719 | + | ||
720 | + | ||
721 | + | func ey (es) = ("accountByCustomName_" + es) | |
722 | + | ||
723 | + | ||
724 | + | func ez () = "oldiesList" | |
725 | + | ||
726 | + | ||
727 | + | let eA = 0 | |
728 | + | ||
729 | + | let eB = 1 | |
730 | + | ||
731 | + | let eC = 2 | |
732 | + | ||
733 | + | let eD = 0 | |
734 | + | ||
735 | + | let eE = 5 | |
736 | + | ||
737 | + | let eF = 6 | |
738 | + | ||
739 | + | let eG = 7 | |
740 | + | ||
741 | + | func eH (eu,dJ) = ((aD + eu) + dJ) | |
742 | + | ||
743 | + | ||
744 | + | func eI (eJ,eK) = { | |
745 | + | let eL = if ((eJ >= 0)) | |
746 | + | then (((eJ + eK) - 1) / eK) | |
747 | + | else -((((-(eJ) + eK) - 1) / eK)) | |
748 | + | (eL * cF) | |
749 | + | } | |
750 | + | ||
751 | + | ||
752 | + | func eM (eN,eO) = { | |
753 | + | let eP = (((((eO[0] + eO[1]) + eO[2]) + eO[3]) + eO[4]) + eO[5]) | |
754 | + | if ((0 >= eP)) | |
753 | 755 | then throw("Zero weights sum") | |
754 | 756 | else { | |
755 | - | let | |
756 | - | func | |
757 | - | ||
758 | - | let | |
759 | - | let | |
760 | - | let | |
761 | - | func | |
762 | - | then | |
763 | - | else | |
764 | - | ||
765 | - | func | |
766 | - | then | |
757 | + | let eQ = fraction(eN, cE, eP) | |
758 | + | func eR (eS,eT) = (eS :+ fraction(eT, eQ, cE)) | |
759 | + | ||
760 | + | let eU = eO | |
761 | + | let eV = size(eU) | |
762 | + | let eW = nil | |
763 | + | func eX (eY,eZ) = if ((eZ >= eV)) | |
764 | + | then eY | |
765 | + | else eR(eY, eU[eZ]) | |
766 | + | ||
767 | + | func fa (eY,eZ) = if ((eZ >= eV)) | |
768 | + | then eY | |
767 | 769 | else throw("List size exceeds 6") | |
768 | 770 | ||
769 | - | | |
770 | - | } | |
771 | - | } | |
772 | - | ||
773 | - | ||
774 | - | func | |
775 | - | let | |
776 | - | if ((size( | |
771 | + | fa(eX(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5), 6) | |
772 | + | } | |
773 | + | } | |
774 | + | ||
775 | + | ||
776 | + | func fb (eN) = { | |
777 | + | let fc = split(value(getString(ds())), "_") | |
778 | + | if ((size(fc) != aG)) | |
777 | 779 | then throw("Wrong proportions data") | |
778 | 780 | else { | |
779 | - | let | |
780 | - | | |
781 | - | } | |
782 | - | } | |
783 | - | ||
784 | - | ||
785 | - | func | |
786 | - | let | |
787 | - | func | |
788 | - | let | |
789 | - | if ((0 > | |
790 | - | then throw(((((("Not enough material idx=" + toString( | |
791 | - | else ( | |
781 | + | let fd = [parseIntValue(fc[0]), parseIntValue(fc[1]), parseIntValue(fc[2]), parseIntValue(fc[3]), parseIntValue(fc[4]), parseIntValue(fc[5])] | |
782 | + | eM(eN, fd) | |
783 | + | } | |
784 | + | } | |
785 | + | ||
786 | + | ||
787 | + | func fe (ff,fg,fh) = { | |
788 | + | let fi = fb(fh) | |
789 | + | func fj (eS,db) = { | |
790 | + | let fk = (parseIntValue(fg[db]) - fi[db]) | |
791 | + | if ((0 > fk)) | |
792 | + | then throw(((((("Not enough material idx=" + toString(db)) + ", you have ") + fg[db]) + ", but need ") + toString(fi[db]))) | |
793 | + | else (eS :+ toString(fk)) | |
792 | 794 | } | |
793 | 795 | ||
794 | - | if ( | |
796 | + | if (ff) | |
795 | 797 | then { | |
796 | - | let | |
797 | - | let | |
798 | - | let | |
799 | - | func | |
800 | - | then | |
801 | - | else | |
802 | - | ||
803 | - | func | |
804 | - | then | |
798 | + | let eU = cL | |
799 | + | let eV = size(eU) | |
800 | + | let eW = nil | |
801 | + | func eX (eY,eZ) = if ((eZ >= eV)) | |
802 | + | then eY | |
803 | + | else fj(eY, eU[eZ]) | |
804 | + | ||
805 | + | func fa (eY,eZ) = if ((eZ >= eV)) | |
806 | + | then eY | |
805 | 807 | else throw("List size exceeds 6") | |
806 | 808 | ||
807 | - | | |
808 | - | } | |
809 | - | else | |
810 | - | } | |
811 | - | ||
812 | - | ||
813 | - | func | |
814 | - | then $Tuple2( | |
809 | + | fa(eX(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5), 6) | |
810 | + | } | |
811 | + | else fg | |
812 | + | } | |
813 | + | ||
814 | + | ||
815 | + | func fl (fm,fn) = if ((fn == "")) | |
816 | + | then $Tuple2(fm, false) | |
815 | 817 | else { | |
816 | - | func | |
817 | - | let | |
818 | - | if ((size( | |
818 | + | func fo (eS,fp) = { | |
819 | + | let fq = split(fp, ",") | |
820 | + | if ((size(fq) != 2)) | |
819 | 821 | then throw("Incorrect format, should be index,amount") | |
820 | 822 | else { | |
821 | - | let | |
822 | - | if (if ((0 > | |
823 | + | let db = parseIntValue(fq[0]) | |
824 | + | if (if ((0 > db)) | |
823 | 825 | then true | |
824 | - | else ( | |
826 | + | else (db >= size(aT))) | |
825 | 827 | then throw("Unknown product idx") | |
826 | 828 | else { | |
827 | - | let | |
828 | - | let | |
829 | - | if ((size( | |
830 | - | then throw((("You don't have " + | |
829 | + | let fr = parseIntValue(fq[1]) | |
830 | + | let fs = split(eS._1, (fq[0] + ":")) | |
831 | + | if ((size(fs) != 2)) | |
832 | + | then throw((("You don't have " + aP[db]) + " equipped")) | |
831 | 833 | else { | |
832 | - | let | |
833 | - | let | |
834 | + | let ft = fs[1] | |
835 | + | let fu = if (dK(take(drop(ft, 1), 1))) | |
834 | 836 | then 2 | |
835 | 837 | else 1 | |
836 | - | let | |
837 | - | let | |
838 | - | let | |
839 | - | then ( | |
840 | - | else throw(((((("You equipped " + toString( | |
841 | - | $Tuple2((((( | |
838 | + | let fv = parseIntValue(take(ft, fu)) | |
839 | + | let fw = drop(ft, fu) | |
840 | + | let fx = if ((fv >= fr)) | |
841 | + | then (fv - fr) | |
842 | + | else throw(((((("You equipped " + toString(fv)) + " of ") + aP[db]) + ", but tried to use ") + toString(fr))) | |
843 | + | $Tuple2(((((fs[0] + fq[0]) + ":") + toString(fx)) + fw), if (eS._2) | |
842 | 844 | then true | |
843 | - | else if (if (( | |
844 | - | then (8 >= | |
845 | + | else if (if ((db >= 6)) | |
846 | + | then (8 >= db) | |
845 | 847 | else false) | |
846 | - | then ( | |
848 | + | then (fx == 0) | |
847 | 849 | else false) | |
848 | 850 | } | |
849 | 851 | } | |
850 | 852 | } | |
851 | 853 | } | |
852 | 854 | ||
853 | - | let | |
854 | - | let | |
855 | - | let | |
856 | - | func | |
857 | - | then | |
858 | - | else | |
859 | - | ||
860 | - | func | |
861 | - | then | |
855 | + | let eU = split(fn, "_") | |
856 | + | let eV = size(eU) | |
857 | + | let eW = $Tuple2(fm, false) | |
858 | + | func eX (eY,eZ) = if ((eZ >= eV)) | |
859 | + | then eY | |
860 | + | else fo(eY, eU[eZ]) | |
861 | + | ||
862 | + | func fa (eY,eZ) = if ((eZ >= eV)) | |
863 | + | then eY | |
862 | 864 | else throw("List size exceeds 10") | |
863 | 865 | ||
864 | - | | |
866 | + | fa(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
865 | 867 | } | |
866 | 868 | ||
867 | 869 | ||
868 | - | func | |
869 | - | let | |
870 | + | func fy (fz) = { | |
871 | + | let fA = if ((fz == "")) | |
870 | 872 | then nil | |
871 | - | else split_4C( | |
872 | - | func | |
873 | - | let | |
874 | - | let | |
875 | - | then parseIntValue( | |
873 | + | else split_4C(fz, "_") | |
874 | + | func fB (eS,cp) = { | |
875 | + | let fC = (size(eS) / 8) | |
876 | + | let fv = if ((size(fA) > fC)) | |
877 | + | then parseIntValue(fA[fC]) | |
876 | 878 | else 0 | |
877 | - | ( | |
879 | + | (eS + toBytes(fv)) | |
878 | 880 | } | |
879 | 881 | ||
880 | - | let | |
881 | - | let | |
882 | - | let | |
883 | - | func | |
884 | - | then | |
885 | - | else | |
886 | - | ||
887 | - | func | |
888 | - | then | |
882 | + | let eU = aT | |
883 | + | let eV = size(eU) | |
884 | + | let eW = base58'' | |
885 | + | func eX (eY,eZ) = if ((eZ >= eV)) | |
886 | + | then eY | |
887 | + | else fB(eY, eU[eZ]) | |
888 | + | ||
889 | + | func fa (eY,eZ) = if ((eZ >= eV)) | |
890 | + | then eY | |
889 | 891 | else throw("List size exceeds 50") | |
890 | 892 | ||
891 | - | | |
892 | - | } | |
893 | - | ||
894 | - | ||
895 | - | func | |
896 | - | func | |
897 | - | let | |
898 | - | let | |
899 | - | ( | |
893 | + | fa(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eW, 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) | |
894 | + | } | |
895 | + | ||
896 | + | ||
897 | + | func fD (fE) = { | |
898 | + | func fF (eS,cp) = { | |
899 | + | let fC = size(eS) | |
900 | + | let fG = take(drop(fE, (8 * fC)), 8) | |
901 | + | (eS :+ toString(toInt(fG))) | |
900 | 902 | } | |
901 | 903 | ||
902 | 904 | makeString_2C({ | |
903 | - | let | |
904 | - | let | |
905 | - | let | |
906 | - | func | |
907 | - | then | |
908 | - | else | |
909 | - | ||
910 | - | func | |
911 | - | then | |
905 | + | let eU = aT | |
906 | + | let eV = size(eU) | |
907 | + | let eW = nil | |
908 | + | func eX (eY,eZ) = if ((eZ >= eV)) | |
909 | + | then eY | |
910 | + | else fF(eY, eU[eZ]) | |
911 | + | ||
912 | + | func fa (eY,eZ) = if ((eZ >= eV)) | |
913 | + | then eY | |
912 | 914 | else throw("List size exceeds 50") | |
913 | 915 | ||
914 | - | | |
916 | + | fa(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eW, 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) | |
915 | 917 | }, "_") | |
916 | 918 | } | |
917 | 919 | ||
918 | 920 | ||
919 | - | func | |
920 | - | func | |
921 | - | let | |
922 | - | then | |
921 | + | func fH (fI,fJ) = { | |
922 | + | func fK (eS,fC) = { | |
923 | + | let fL = if ((size(fI) > (7 + fC))) | |
924 | + | then fI[(7 + fC)] | |
923 | 925 | else 0 | |
924 | - | if ((parseIntValue( | |
925 | - | then throw(("Requirement not satisfied: " + | |
926 | + | if ((parseIntValue(fJ[fC]) > (fI[fC] + fL))) | |
927 | + | then throw(("Requirement not satisfied: " + k[fC])) | |
926 | 928 | else true | |
927 | 929 | } | |
928 | 930 | ||
929 | - | let | |
930 | - | let | |
931 | - | let | |
932 | - | func | |
933 | - | then | |
934 | - | else | |
935 | - | ||
936 | - | func | |
937 | - | then | |
931 | + | let eU = [0, 1, 2, 3, 4, 5, 6] | |
932 | + | let eV = size(eU) | |
933 | + | let eW = false | |
934 | + | func eX (eY,eZ) = if ((eZ >= eV)) | |
935 | + | then eY | |
936 | + | else fK(eY, eU[eZ]) | |
937 | + | ||
938 | + | func fa (eY,eZ) = if ((eZ >= eV)) | |
939 | + | then eY | |
938 | 940 | else throw("List size exceeds 7") | |
939 | 941 | ||
940 | - | | |
941 | - | } | |
942 | - | ||
943 | - | ||
944 | - | func | |
945 | - | let | |
946 | - | if ((size( | |
942 | + | fa(eX(eX(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5), 6), 7) | |
943 | + | } | |
944 | + | ||
945 | + | ||
946 | + | func fM (fN,fA,fO,fI,fP,fQ) = { | |
947 | + | let fq = split(fN, ":") | |
948 | + | if ((size(fq) != 2)) | |
947 | 949 | then throw("Incorrect format, should be index:amount") | |
948 | - | else if (if (!( | |
949 | - | then (size( | |
950 | + | else if (if (!(fO)) | |
951 | + | then (size(fq[0]) != 2) | |
950 | 952 | else false) | |
951 | 953 | then throw("Product idx should be 2 digits, zero padded") | |
952 | 954 | else { | |
953 | - | let | |
954 | - | let | |
955 | - | if (!(containsElement( | |
956 | - | then throw((("Product '" + | |
957 | - | else if ((0 > | |
955 | + | let fR = parseIntValue(fq[0]) | |
956 | + | let fS = parseIntValue(fq[1]) | |
957 | + | if (!(containsElement(aS, fR))) | |
958 | + | then throw((("Product '" + aP[fR]) + "' cannot be used for land defense")) | |
959 | + | else if ((0 > fS)) | |
958 | 960 | then throw("Count can't be negative") | |
959 | - | else if (( | |
960 | - | then throw(((("Can't put more than " + toString( | |
961 | - | else if (( | |
962 | - | then $Tuple3( | |
961 | + | else if ((fS > u)) | |
962 | + | then throw(((("Can't put more than " + toString(u)) + " of ") + aP[fR])) | |
963 | + | else if ((fS == 0)) | |
964 | + | then $Tuple3(fA, fP, fQ) | |
963 | 965 | else { | |
964 | - | let | |
965 | - | let | |
966 | - | let | |
967 | - | let | |
968 | - | if (if (!( | |
969 | - | then ( | |
966 | + | let fT = take(fA, (8 * fR)) | |
967 | + | let fv = toInt(take(drop(fA, (8 * fR)), 8)) | |
968 | + | let fw = drop(fA, (8 * (fR + 1))) | |
969 | + | let cp = split(aT[fR], "_") | |
970 | + | if (if (!(fO)) | |
971 | + | then (fS > fv) | |
970 | 972 | else false) | |
971 | - | then throw(((((("You have " + toString( | |
973 | + | then throw(((((("You have " + toString(fv)) + " of ") + aP[fR]) + ", but tried to use ") + toString(fS))) | |
972 | 974 | else { | |
973 | - | let | |
974 | - | then | |
975 | + | let fx = if (if (!(fO)) | |
976 | + | then fH(fI, split(cp[aW], ",")) | |
975 | 977 | else false) | |
976 | - | then ( | |
977 | - | else ( | |
978 | - | let | |
979 | - | $Tuple3((( | |
978 | + | then (fv - fS) | |
979 | + | else (fv + fS) | |
980 | + | let fU = (eI(fx, aY) - eI(fv, aY)) | |
981 | + | $Tuple3(((fT + toBytes(fx)) + fw), (fP + fU), (fQ - fU)) | |
980 | 982 | } | |
981 | 983 | } | |
982 | 984 | } | |
983 | 985 | } | |
984 | 986 | ||
985 | 987 | ||
986 | - | func | |
987 | - | let | |
988 | - | if ((size( | |
988 | + | func fV (fN,fA,fO,fW,fX,fY,fI) = { | |
989 | + | let fq = split(fN, ":") | |
990 | + | if ((size(fq) != 2)) | |
989 | 991 | then throw("Incorrect format, should be index:amount") | |
990 | - | else if (if (!( | |
991 | - | then (size( | |
992 | + | else if (if (!(fO)) | |
993 | + | then (size(fq[0]) != 2) | |
992 | 994 | else false) | |
993 | 995 | then throw("Product idx should be 2 digits, zero padded") | |
994 | 996 | else { | |
995 | - | let | |
996 | - | let | |
997 | - | if (if ((0 > | |
997 | + | let fR = parseIntValue(fq[0]) | |
998 | + | let fS = parseIntValue(fq[1]) | |
999 | + | if (if ((0 > fR)) | |
998 | 1000 | then true | |
999 | - | else ( | |
1001 | + | else (fR >= size(aT))) | |
1000 | 1002 | then throw("Unknown product idx") | |
1001 | - | else if ((0 > | |
1003 | + | else if ((0 > fS)) | |
1002 | 1004 | then throw("Count can't be negative") | |
1003 | - | else if (( | |
1004 | - | then throw(((("Can't put more than " + toString( | |
1005 | - | else if (( | |
1006 | - | then $Tuple2( | |
1005 | + | else if ((fS > u)) | |
1006 | + | then throw(((("Can't put more than " + toString(u)) + " of ") + aP[fR])) | |
1007 | + | else if ((fS == 0)) | |
1008 | + | then $Tuple2(fA, false) | |
1007 | 1009 | else { | |
1008 | - | let | |
1009 | - | let | |
1010 | - | let | |
1011 | - | let | |
1012 | - | if (if (!( | |
1013 | - | then ( | |
1010 | + | let fT = take(fA, (8 * fR)) | |
1011 | + | let fv = toInt(take(drop(fA, (8 * fR)), 8)) | |
1012 | + | let fw = drop(fA, (8 * (fR + 1))) | |
1013 | + | let cp = split(aT[fR], "_") | |
1014 | + | if (if (!(fO)) | |
1015 | + | then (fS > fv) | |
1014 | 1016 | else false) | |
1015 | - | then throw(((((("You have " + toString( | |
1017 | + | then throw(((((("You have " + toString(fv)) + " of ") + aP[fR]) + ", but tried to use ") + toString(fS))) | |
1016 | 1018 | else { | |
1017 | - | let | |
1018 | - | then | |
1019 | + | let fZ = if (if (!(fO)) | |
1020 | + | then fH(fI, split(cp[aW], ",")) | |
1019 | 1021 | else false) | |
1020 | 1022 | then { | |
1021 | - | let | |
1022 | - | if (( | |
1023 | + | let ga = cp[aX] | |
1024 | + | if ((ga == "")) | |
1023 | 1025 | then throw("Item cannot be equipped") | |
1024 | 1026 | else { | |
1025 | - | let | |
1026 | - | let | |
1027 | - | if (( | |
1027 | + | let gb = parseIntValue(ga) | |
1028 | + | let gc = (gb / 100) | |
1029 | + | if ((fW != gc)) | |
1028 | 1030 | then throw("Segment incompatible") | |
1029 | 1031 | else { | |
1030 | - | let | |
1031 | - | if (( | |
1032 | + | let gd = ((gb % 100) / 10) | |
1033 | + | if ((fX != gd)) | |
1032 | 1034 | then throw("Slot incompatible") | |
1033 | 1035 | else { | |
1034 | - | let | |
1035 | - | if (if (( | |
1036 | - | then ( | |
1036 | + | let ge = (gb % 10) | |
1037 | + | if (if ((fY != 0)) | |
1038 | + | then (ge > 1) | |
1037 | 1039 | else false) | |
1038 | 1040 | then throw("Big items should occupy slot 0") | |
1039 | - | else ( | |
1041 | + | else (ge > 1) | |
1040 | 1042 | } | |
1041 | 1043 | } | |
1042 | 1044 | } | |
1043 | 1045 | } | |
1044 | 1046 | else false | |
1045 | - | $Tuple2((( | |
1046 | - | then | |
1047 | - | else -( | |
1047 | + | $Tuple2(((fT + toBytes((fv + (if (fO) | |
1048 | + | then fS | |
1049 | + | else -(fS))))) + fw), fZ) | |
1048 | 1050 | } | |
1049 | 1051 | } | |
1050 | 1052 | } | |
1051 | 1053 | } | |
1052 | 1054 | ||
1053 | 1055 | ||
1054 | - | func | |
1056 | + | func gf (gg,gh,fO,fW,fX,gi) = if ((gg != "")) | |
1055 | 1057 | then { | |
1056 | - | let | |
1057 | - | if ((size( | |
1058 | + | let gj = split(gg, ",") | |
1059 | + | if ((size(gj) > t)) | |
1058 | 1060 | then throw("Wrong slots format") | |
1059 | 1061 | else { | |
1060 | - | let | |
1061 | - | let | |
1062 | - | then | |
1062 | + | let gk = gj[0] | |
1063 | + | let gl = if ((size(gj) > 1)) | |
1064 | + | then gj[1] | |
1063 | 1065 | else "" | |
1064 | - | if (if (( | |
1065 | - | then ( | |
1066 | + | if (if ((gk == "")) | |
1067 | + | then (gl == "") | |
1066 | 1068 | else false) | |
1067 | - | then | |
1069 | + | then gh | |
1068 | 1070 | else { | |
1069 | - | let | |
1070 | - | then | |
1071 | - | else $Tuple2( | |
1072 | - | if (( | |
1073 | - | then if ( | |
1071 | + | let gm = if ((gk != "")) | |
1072 | + | then fV(gk, gh, fO, fW, fX, 0, gi) | |
1073 | + | else $Tuple2(gh, false) | |
1074 | + | if ((gl != "")) | |
1075 | + | then if (gm._2) | |
1074 | 1076 | then throw("Big item already occupies slot") | |
1075 | - | else | |
1076 | - | else | |
1077 | + | else fV(gl, gm._1, fO, fW, fX, 1, gi)._1 | |
1078 | + | else gm._1 | |
1077 | 1079 | } | |
1078 | 1080 | } | |
1079 | 1081 | } | |
1080 | - | else | |
1081 | - | ||
1082 | - | ||
1083 | - | func | |
1084 | - | func | |
1085 | - | let | |
1086 | - | let | |
1087 | - | if ((size( | |
1082 | + | else gh | |
1083 | + | ||
1084 | + | ||
1085 | + | func gn (go,gp,fO,gi) = { | |
1086 | + | func fW (eS,gq) = { | |
1087 | + | let fC = eS._1 | |
1088 | + | let fX = split(gq, ";") | |
1089 | + | if ((size(fX) != s)) | |
1088 | 1090 | then throw("Wrong segment format") | |
1089 | 1091 | else { | |
1090 | - | let | |
1091 | - | let | |
1092 | - | if (if (( | |
1093 | - | then ( | |
1092 | + | let gr = fX[0] | |
1093 | + | let gs = fX[1] | |
1094 | + | if (if ((gr == "")) | |
1095 | + | then (gs == "") | |
1094 | 1096 | else false) | |
1095 | - | then $Tuple2(( | |
1097 | + | then $Tuple2((fC + 1), eS._2) | |
1096 | 1098 | else { | |
1097 | - | let | |
1098 | - | $Tuple2(( | |
1099 | + | let gt = gf(gr, eS._2, fO, fC, 0, gi) | |
1100 | + | $Tuple2((fC + 1), gf(gs, gt, fO, fC, 1, gi)) | |
1099 | 1101 | } | |
1100 | 1102 | } | |
1101 | 1103 | } | |
1102 | 1104 | ||
1103 | - | ( let | |
1104 | - | let | |
1105 | - | let | |
1106 | - | func | |
1107 | - | then | |
1108 | - | else | |
1109 | - | ||
1110 | - | func | |
1111 | - | then | |
1105 | + | ( let eU = go | |
1106 | + | let eV = size(eU) | |
1107 | + | let eW = $Tuple2(0, gp) | |
1108 | + | func eX (eY,eZ) = if ((eZ >= eV)) | |
1109 | + | then eY | |
1110 | + | else fW(eY, eU[eZ]) | |
1111 | + | ||
1112 | + | func fa (eY,eZ) = if ((eZ >= eV)) | |
1113 | + | then eY | |
1112 | 1114 | else throw("List size exceeds 6") | |
1113 | 1115 | ||
1114 | - | | |
1115 | - | } | |
1116 | - | ||
1117 | - | ||
1118 | - | func | |
1116 | + | fa(eX(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5), 6))._2 | |
1117 | + | } | |
1118 | + | ||
1119 | + | ||
1120 | + | func gu (go,gp,fP,fQ,fO,fI) = if ((3 > size(go))) | |
1119 | 1121 | then throw("At least duck, mines and traps parts are required") | |
1120 | 1122 | else { | |
1121 | - | func | |
1122 | - | let | |
1123 | - | if (( | |
1124 | - | then $Tuple4(( | |
1123 | + | func fW (eS,gq) = { | |
1124 | + | let fC = eS._1 | |
1125 | + | if ((fC == 0)) | |
1126 | + | then $Tuple4((fC + 1), eS._2, eS._3, eS._4) | |
1125 | 1127 | else { | |
1126 | - | let | |
1127 | - | $Tuple4(( | |
1128 | + | let gv = fM(gq, eS._2, fO, fI, eS._3, eS._4) | |
1129 | + | $Tuple4((fC + 1), gv._1, gv._2, gv._3) | |
1128 | 1130 | } | |
1129 | 1131 | } | |
1130 | 1132 | ||
1131 | - | let | |
1132 | - | let | |
1133 | - | let | |
1134 | - | let | |
1135 | - | func | |
1136 | - | then | |
1137 | - | else | |
1138 | - | ||
1139 | - | func | |
1140 | - | then | |
1133 | + | let gw = { | |
1134 | + | let eU = go | |
1135 | + | let eV = size(eU) | |
1136 | + | let eW = $Tuple4(0, gp, fP, fQ) | |
1137 | + | func eX (eY,eZ) = if ((eZ >= eV)) | |
1138 | + | then eY | |
1139 | + | else fW(eY, eU[eZ]) | |
1140 | + | ||
1141 | + | func fa (eY,eZ) = if ((eZ >= eV)) | |
1142 | + | then eY | |
1141 | 1143 | else throw("List size exceeds 10") | |
1142 | 1144 | ||
1143 | - | | |
1144 | - | } | |
1145 | - | $Tuple3( | |
1145 | + | fa(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
1146 | + | } | |
1147 | + | $Tuple3(gw._2, gw._3, gw._4) | |
1146 | 1148 | } | |
1147 | 1149 | ||
1148 | 1150 | ||
1149 | - | func | |
1150 | - | let | |
1151 | - | let | |
1152 | - | let | |
1153 | - | let | |
1154 | - | let | |
1151 | + | func gx (B) = { | |
1152 | + | let gy = G(B) | |
1153 | + | let gz = split(valueOrElse(getString(gy), ",;,_,;,_,;,_,;,_,;,_,;,"), "_") | |
1154 | + | let gA = gn(gz, eb, true, nil) | |
1155 | + | let gB = split(gz[q], ";")[1] | |
1156 | + | let ap = if ((gB == "")) | |
1155 | 1157 | then 0 | |
1156 | 1158 | else { | |
1157 | - | let | |
1158 | - | if (( | |
1159 | + | let gC = split(gB, ",")[0] | |
1160 | + | if ((gC == "")) | |
1159 | 1161 | then 0 | |
1160 | 1162 | else { | |
1161 | - | let | |
1162 | - | let | |
1163 | - | let | |
1164 | - | if (if (if (if (if (( | |
1163 | + | let fN = split(gC, ":") | |
1164 | + | let db = fN[0] | |
1165 | + | let gD = fN[1] | |
1166 | + | if (if (if (if (if ((db == "06")) | |
1165 | 1167 | then true | |
1166 | - | else ( | |
1168 | + | else (db == "07")) | |
1167 | 1169 | then true | |
1168 | - | else ( | |
1169 | - | then ( | |
1170 | + | else (db == "08")) | |
1171 | + | then (gD != "") | |
1170 | 1172 | else false) | |
1171 | - | then (parseIntValue( | |
1173 | + | then (parseIntValue(gD) > 0) | |
1172 | 1174 | else false) | |
1173 | - | then parseIntValue(split( | |
1175 | + | then parseIntValue(split(aT[parseIntValue(db)], "_")[aV]) | |
1174 | 1176 | else 0 | |
1175 | 1177 | } | |
1176 | 1178 | } | |
1177 | - | let | |
1178 | - | let | |
1179 | - | ( | |
1180 | - | } | |
1181 | - | ||
1182 | - | ||
1183 | - | func | |
1179 | + | let gi = an(this, B, ap, true) | |
1180 | + | let gE = gn(gz, gA, false, gi) | |
1181 | + | (gE == gE) | |
1182 | + | } | |
1183 | + | ||
1184 | + | ||
1185 | + | func gF (gG,gH,gI,gJ) = if ((size(gG) != aG)) | |
1184 | 1186 | then throw("Wrong proportions data") | |
1185 | 1187 | else { | |
1186 | - | func | |
1187 | - | let | |
1188 | - | if ((0 > | |
1189 | - | then throw(((((((("Panic! Pieces of type=" + toString( | |
1190 | - | else ( | |
1191 | - | } | |
1192 | - | ||
1193 | - | let | |
1194 | - | let | |
1195 | - | let | |
1196 | - | func | |
1197 | - | then | |
1198 | - | else | |
1199 | - | ||
1200 | - | func | |
1201 | - | then | |
1188 | + | func gK (eS,gL) = { | |
1189 | + | let fk = (parseIntValue(gG[gL]) + ((gJ * gH[gL]) * gI)) | |
1190 | + | if ((0 > fk)) | |
1191 | + | then throw(((((((("Panic! Pieces of type=" + toString(gL)) + ", sign=") + toString(gJ)) + ", terrainCounts[i]=") + toString(gH[gL])) + ", landSizeIndex=") + toString(gI))) | |
1192 | + | else (eS :+ toString(fk)) | |
1193 | + | } | |
1194 | + | ||
1195 | + | let eU = cL | |
1196 | + | let eV = size(eU) | |
1197 | + | let eW = nil | |
1198 | + | func eX (eY,eZ) = if ((eZ >= eV)) | |
1199 | + | then eY | |
1200 | + | else gK(eY, eU[eZ]) | |
1201 | + | ||
1202 | + | func fa (eY,eZ) = if ((eZ >= eV)) | |
1203 | + | then eY | |
1202 | 1204 | else throw("List size exceeds 6") | |
1203 | 1205 | ||
1204 | - | | |
1206 | + | fa(eX(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5), 6) | |
1205 | 1207 | } | |
1206 | 1208 | ||
1207 | 1209 | ||
1208 | - | func | |
1209 | - | let | |
1210 | - | makeString( | |
1211 | - | } | |
1212 | - | ||
1213 | - | ||
1214 | - | func | |
1215 | - | ||
1216 | - | ||
1217 | - | func | |
1218 | - | func | |
1219 | - | let | |
1220 | - | ( | |
1210 | + | func gM (gH,gI,gJ) = { | |
1211 | + | let gG = split(valueOrElse(getString(ds()), "0_0_0_0_0_0"), "_") | |
1212 | + | makeString(gF(gG, gH, gI, gJ), "_") | |
1213 | + | } | |
1214 | + | ||
1215 | + | ||
1216 | + | func gN (gO) = [(size(split(gO, "A")) - 1), (size(split(gO, "B")) - 1), (size(split(gO, "C")) - 1), (size(split(gO, "D")) - 1), (size(split(gO, "E")) - 1), (size(split(gO, "F")) - 1)] | |
1217 | + | ||
1218 | + | ||
1219 | + | func gP (gQ,gH,gR,gI,gS) = { | |
1220 | + | func gT (eS,gL) = { | |
1221 | + | let gU = ((fraction(gR, gS, a) * gH[gL]) * gI) | |
1222 | + | (eS :+ toString((parseIntValue(gQ[gL]) + gU))) | |
1221 | 1223 | } | |
1222 | 1224 | ||
1223 | - | let | |
1224 | - | let | |
1225 | - | let | |
1226 | - | let | |
1227 | - | func | |
1228 | - | then | |
1229 | - | else | |
1230 | - | ||
1231 | - | func | |
1232 | - | then | |
1225 | + | let fd = { | |
1226 | + | let eU = cL | |
1227 | + | let eV = size(eU) | |
1228 | + | let eW = nil | |
1229 | + | func eX (eY,eZ) = if ((eZ >= eV)) | |
1230 | + | then eY | |
1231 | + | else gT(eY, eU[eZ]) | |
1232 | + | ||
1233 | + | func fa (eY,eZ) = if ((eZ >= eV)) | |
1234 | + | then eY | |
1233 | 1235 | else throw("List size exceeds 6") | |
1234 | 1236 | ||
1235 | - | | |
1237 | + | fa(eX(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5), 6) | |
1236 | 1238 | } | |
1237 | - | makeString( | |
1238 | - | } | |
1239 | - | ||
1240 | - | ||
1241 | - | func | |
1242 | - | func | |
1243 | - | let | |
1244 | - | $Tuple2(( | |
1239 | + | makeString(fd, "_") | |
1240 | + | } | |
1241 | + | ||
1242 | + | ||
1243 | + | func gV (gH,gR,gI,gS) = { | |
1244 | + | func gT (eS,gL) = { | |
1245 | + | let gU = ((fraction(gR, gS, a) * gH[gL]) * gI) | |
1246 | + | $Tuple2((eS._1 :+ gU), (eS._2 + gU)) | |
1245 | 1247 | } | |
1246 | 1248 | ||
1247 | - | let | |
1248 | - | let | |
1249 | - | let | |
1250 | - | func | |
1251 | - | then | |
1252 | - | else | |
1253 | - | ||
1254 | - | func | |
1255 | - | then | |
1249 | + | let eU = cL | |
1250 | + | let eV = size(eU) | |
1251 | + | let eW = $Tuple2(nil, 0) | |
1252 | + | func eX (eY,eZ) = if ((eZ >= eV)) | |
1253 | + | then eY | |
1254 | + | else gT(eY, eU[eZ]) | |
1255 | + | ||
1256 | + | func fa (eY,eZ) = if ((eZ >= eV)) | |
1257 | + | then eY | |
1256 | 1258 | else throw("List size exceeds 6") | |
1257 | 1259 | ||
1258 | - | | |
1259 | - | } | |
1260 | - | ||
1261 | - | ||
1262 | - | func | |
1263 | - | let | |
1264 | - | let | |
1265 | - | if (( | |
1266 | - | then $Tuple2(makeString( | |
1267 | - | else if (( | |
1260 | + | fa(eX(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5), 6) | |
1261 | + | } | |
1262 | + | ||
1263 | + | ||
1264 | + | func gW (gX,gY,gZ,ha) = { | |
1265 | + | let hb = gZ._1 | |
1266 | + | let hc = gZ._2 | |
1267 | + | if ((hc == 0)) | |
1268 | + | then $Tuple2(makeString(gX, "_"), makeString(gY, "_")) | |
1269 | + | else if ((ha >= hc)) | |
1268 | 1270 | then { | |
1269 | - | func | |
1270 | - | ||
1271 | - | let | |
1272 | - | let | |
1273 | - | let | |
1274 | - | let | |
1275 | - | func | |
1276 | - | then | |
1277 | - | else | |
1278 | - | ||
1279 | - | func | |
1280 | - | then | |
1271 | + | func hd (eS,gL) = (eS :+ toString((parseIntValue(gX[gL]) + hb[gL]))) | |
1272 | + | ||
1273 | + | let fd = { | |
1274 | + | let eU = cL | |
1275 | + | let eV = size(eU) | |
1276 | + | let eW = nil | |
1277 | + | func eX (eY,eZ) = if ((eZ >= eV)) | |
1278 | + | then eY | |
1279 | + | else hd(eY, eU[eZ]) | |
1280 | + | ||
1281 | + | func fa (eY,eZ) = if ((eZ >= eV)) | |
1282 | + | then eY | |
1281 | 1283 | else throw("List size exceeds 6") | |
1282 | 1284 | ||
1283 | - | | |
1285 | + | fa(eX(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5), 6) | |
1284 | 1286 | } | |
1285 | - | $Tuple2(makeString( | |
1287 | + | $Tuple2(makeString(fd, "_"), makeString(gY, "_")) | |
1286 | 1288 | } | |
1287 | 1289 | else { | |
1288 | - | func | |
1289 | - | let | |
1290 | - | $Tuple2(( | |
1290 | + | func he (eS,gL) = { | |
1291 | + | let hf = fraction(hb[gL], ha, hc) | |
1292 | + | $Tuple2((eS._1 :+ toString((parseIntValue(gX[gL]) + hf))), (eS._2 :+ toString(((parseIntValue(gY[gL]) + hb[gL]) - hf)))) | |
1291 | 1293 | } | |
1292 | 1294 | ||
1293 | - | let | |
1294 | - | let | |
1295 | - | let | |
1296 | - | let | |
1297 | - | func | |
1298 | - | then | |
1299 | - | else | |
1300 | - | ||
1301 | - | func | |
1302 | - | then | |
1295 | + | let fd = { | |
1296 | + | let eU = cL | |
1297 | + | let eV = size(eU) | |
1298 | + | let eW = $Tuple2(nil, nil) | |
1299 | + | func eX (eY,eZ) = if ((eZ >= eV)) | |
1300 | + | then eY | |
1301 | + | else he(eY, eU[eZ]) | |
1302 | + | ||
1303 | + | func fa (eY,eZ) = if ((eZ >= eV)) | |
1304 | + | then eY | |
1303 | 1305 | else throw("List size exceeds 6") | |
1304 | 1306 | ||
1305 | - | | |
1307 | + | fa(eX(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5), 6) | |
1306 | 1308 | } | |
1307 | - | $Tuple2(makeString( | |
1309 | + | $Tuple2(makeString(fd._1, "_"), makeString(fd._2, "_")) | |
1308 | 1310 | } | |
1309 | 1311 | } | |
1310 | 1312 | ||
1311 | 1313 | ||
1312 | - | func | |
1313 | - | then | |
1314 | - | else -( | |
1315 | - | ||
1316 | - | ||
1317 | - | let | |
1318 | - | ||
1319 | - | func | |
1320 | - | let | |
1321 | - | let | |
1314 | + | func hg (hh) = if ((hh >= toBigInt(0))) | |
1315 | + | then hh | |
1316 | + | else -(hh) | |
1317 | + | ||
1318 | + | ||
1319 | + | let hi = [[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]] | |
1320 | + | ||
1321 | + | func hj (dB,hk) = { | |
1322 | + | let hl = toInt((dB % ek)) | |
1323 | + | let hm = if ((hk[0] > hl)) | |
1322 | 1324 | then "A" | |
1323 | - | else if (( | |
1325 | + | else if ((hk[1] > hl)) | |
1324 | 1326 | then "B" | |
1325 | - | else if (( | |
1327 | + | else if ((hk[2] > hl)) | |
1326 | 1328 | then "C" | |
1327 | - | else if (( | |
1329 | + | else if ((hk[3] > hl)) | |
1328 | 1330 | then "D" | |
1329 | - | else if (( | |
1331 | + | else if ((hk[4] > hl)) | |
1330 | 1332 | then "E" | |
1331 | 1333 | else "F" | |
1332 | - | | |
1333 | - | } | |
1334 | - | ||
1335 | - | ||
1336 | - | func | |
1337 | - | let | |
1338 | - | func | |
1339 | - | ||
1340 | - | let | |
1341 | - | let | |
1342 | - | let | |
1343 | - | let | |
1344 | - | func | |
1345 | - | then | |
1346 | - | else | |
1347 | - | ||
1348 | - | func | |
1349 | - | then | |
1334 | + | hm | |
1335 | + | } | |
1336 | + | ||
1337 | + | ||
1338 | + | func hn (ho,hp) = { | |
1339 | + | let hq = hi[hp] | |
1340 | + | func hr (eS,eT) = $Tuple2((((((eS._1 + hj(eS._2, hq)) + hj((eS._2 / ek), hq)) + hj((eS._2 / el), hq)) + hj((eS._2 / em), hq)) + hj((eS._2 / en), hq)), (eS._2 / eo)) | |
1341 | + | ||
1342 | + | let gw = { | |
1343 | + | let eU = [1, 2, 3, 4, 5] | |
1344 | + | let eV = size(eU) | |
1345 | + | let eW = $Tuple2("", (ho / ej)) | |
1346 | + | func eX (eY,eZ) = if ((eZ >= eV)) | |
1347 | + | then eY | |
1348 | + | else hr(eY, eU[eZ]) | |
1349 | + | ||
1350 | + | func fa (eY,eZ) = if ((eZ >= eV)) | |
1351 | + | then eY | |
1350 | 1352 | else throw("List size exceeds 5") | |
1351 | 1353 | ||
1352 | - | | |
1354 | + | fa(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5) | |
1353 | 1355 | } | |
1354 | - | | |
1355 | - | } | |
1356 | - | ||
1357 | - | ||
1358 | - | let | |
1359 | - | ||
1360 | - | let | |
1361 | - | ||
1362 | - | func | |
1363 | - | func | |
1364 | - | let | |
1365 | - | let | |
1366 | - | let | |
1356 | + | gw._1 | |
1357 | + | } | |
1358 | + | ||
1359 | + | ||
1360 | + | let hs = [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] | |
1361 | + | ||
1362 | + | let ht = ["A", "B", "C", "D", "E", "F"] | |
1363 | + | ||
1364 | + | func hu (hv,gI) = { | |
1365 | + | func hw (eS,dz) = { | |
1366 | + | let fC = eS._2 | |
1367 | + | let hx = parseIntValue(dz) | |
1368 | + | let hh = if ((hx == 0)) | |
1367 | 1369 | then 0 | |
1368 | - | else if (( | |
1369 | - | then ( | |
1370 | - | else if (( | |
1370 | + | else if ((hx >= (4 * gI))) | |
1371 | + | then (hx / gI) | |
1372 | + | else if ((hx > (3 * gI))) | |
1371 | 1373 | then 3 | |
1372 | - | else ((( | |
1373 | - | $Tuple3(( | |
1374 | + | else (((hx - 1) / gI) + 1) | |
1375 | + | $Tuple3((eS._1 :+ hh), (eS._2 + 1), (eS._3 + hh)) | |
1374 | 1376 | } | |
1375 | 1377 | ||
1376 | - | let | |
1377 | - | let | |
1378 | - | let | |
1379 | - | let | |
1380 | - | func | |
1381 | - | then | |
1382 | - | else | |
1383 | - | ||
1384 | - | func | |
1385 | - | then | |
1378 | + | let gw = { | |
1379 | + | let eU = hv | |
1380 | + | let eV = size(eU) | |
1381 | + | let eW = $Tuple3(nil, 0, 0) | |
1382 | + | func eX (eY,eZ) = if ((eZ >= eV)) | |
1383 | + | then eY | |
1384 | + | else hw(eY, eU[eZ]) | |
1385 | + | ||
1386 | + | func fa (eY,eZ) = if ((eZ >= eV)) | |
1387 | + | then eY | |
1386 | 1388 | else throw("List size exceeds 6") | |
1387 | 1389 | ||
1388 | - | | |
1390 | + | fa(eX(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5), 6) | |
1389 | 1391 | } | |
1390 | - | let | |
1391 | - | let | |
1392 | - | let | |
1393 | - | func | |
1394 | - | let | |
1395 | - | then ( | |
1396 | - | else | |
1397 | - | let | |
1392 | + | let hy = gw._1 | |
1393 | + | let hz = value(indexOf(hy, max(hy))) | |
1394 | + | let hA = (gw._3 - 25) | |
1395 | + | func hB (eS,db) = { | |
1396 | + | let dG = if ((db == hz)) | |
1397 | + | then (hy[db] - hA) | |
1398 | + | else hy[db] | |
1399 | + | let dR = if ((dG == 0)) | |
1398 | 1400 | then nil | |
1399 | - | else split(drop(toString(pow(10, 0, | |
1400 | - | let | |
1401 | - | func | |
1402 | - | ||
1403 | - | let | |
1404 | - | let | |
1405 | - | let | |
1406 | - | let | |
1407 | - | func | |
1408 | - | then | |
1409 | - | else | |
1410 | - | ||
1411 | - | func | |
1412 | - | then | |
1401 | + | else split(drop(toString(pow(10, 0, dG, 0, 0, DOWN)), 1), "") | |
1402 | + | let gb = ht[db] | |
1403 | + | func hC (hD,hE) = (hD :+ gb) | |
1404 | + | ||
1405 | + | let hF = { | |
1406 | + | let eU = dR | |
1407 | + | let eV = size(eU) | |
1408 | + | let eW = nil | |
1409 | + | func hG (eY,eZ) = if ((eZ >= eV)) | |
1410 | + | then eY | |
1411 | + | else hC(eY, eU[eZ]) | |
1412 | + | ||
1413 | + | func hH (eY,eZ) = if ((eZ >= eV)) | |
1414 | + | then eY | |
1413 | 1415 | else throw("List size exceeds 25") | |
1414 | 1416 | ||
1415 | - | hG( | |
1416 | - | } | |
1417 | - | ( | |
1417 | + | hH(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(eW, 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) | |
1418 | + | } | |
1419 | + | (eS ++ hF) | |
1418 | 1420 | } | |
1419 | 1421 | ||
1420 | - | let | |
1421 | - | let | |
1422 | - | let | |
1423 | - | let | |
1424 | - | func | |
1425 | - | then | |
1426 | - | else | |
1427 | - | ||
1428 | - | func | |
1429 | - | then | |
1422 | + | let fd = { | |
1423 | + | let eU = cL | |
1424 | + | let eV = size(eU) | |
1425 | + | let eW = nil | |
1426 | + | func hG (eY,eZ) = if ((eZ >= eV)) | |
1427 | + | then eY | |
1428 | + | else hB(eY, eU[eZ]) | |
1429 | + | ||
1430 | + | func hH (eY,eZ) = if ((eZ >= eV)) | |
1431 | + | then eY | |
1430 | 1432 | else throw("List size exceeds 6") | |
1431 | 1433 | ||
1432 | - | hG( | |
1434 | + | hH(hG(hG(hG(hG(hG(hG(eW, 0), 1), 2), 3), 4), 5), 6) | |
1433 | 1435 | } | |
1434 | - | func | |
1435 | - | ||
1436 | - | let | |
1437 | - | let | |
1438 | - | let | |
1439 | - | func | |
1440 | - | then | |
1441 | - | else | |
1442 | - | ||
1443 | - | func | |
1444 | - | then | |
1436 | + | func hI (eS,fC) = (eS + fd[fC]) | |
1437 | + | ||
1438 | + | let eU = hs | |
1439 | + | let eV = size(eU) | |
1440 | + | let eW = "" | |
1441 | + | func hJ (eY,eZ) = if ((eZ >= eV)) | |
1442 | + | then eY | |
1443 | + | else hI(eY, eU[eZ]) | |
1444 | + | ||
1445 | + | func hK (eY,eZ) = if ((eZ >= eV)) | |
1446 | + | then eY | |
1445 | 1447 | else throw("List size exceeds 25") | |
1446 | 1448 | ||
1447 | - | hJ( | |
1448 | - | } | |
1449 | - | ||
1450 | - | ||
1451 | - | func | |
1452 | - | let | |
1453 | - | [toString(valueOrElse(parseInt( | |
1454 | - | then | |
1455 | - | else "0_0_0_0_0_0", if ((size(split( | |
1456 | - | then | |
1457 | - | else "0_0_0_0_0_0", | |
1458 | - | } | |
1459 | - | ||
1460 | - | ||
1461 | - | func | |
1462 | - | let | |
1463 | - | (( | |
1464 | - | } | |
1465 | - | ||
1466 | - | ||
1467 | - | func | |
1468 | - | let | |
1469 | - | func | |
1470 | - | ||
1471 | - | func | |
1472 | - | let | |
1473 | - | let | |
1474 | - | $Tuple2(( | |
1449 | + | hK(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(eW, 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) | |
1450 | + | } | |
1451 | + | ||
1452 | + | ||
1453 | + | func hL (hM) = { | |
1454 | + | let gv = split(valueOrElse(getString(hM), "0:0_0_0_0_0_0:0_0_0_0_0_0:"), ":") | |
1455 | + | [toString(valueOrElse(parseInt(gv[bi]), 0)), if ((size(split(gv[bj], "_")) == aG)) | |
1456 | + | then gv[bj] | |
1457 | + | else "0_0_0_0_0_0", if ((size(split(gv[bk], "_")) == aG)) | |
1458 | + | then gv[bk] | |
1459 | + | else "0_0_0_0_0_0", gv[bl]] | |
1460 | + | } | |
1461 | + | ||
1462 | + | ||
1463 | + | func hN (hO) = { | |
1464 | + | let fq = split(hO, "_") | |
1465 | + | ((aJ * (parseIntValue(fq[1]) + 1)) * parseIntValue(fq[0])) | |
1466 | + | } | |
1467 | + | ||
1468 | + | ||
1469 | + | func hP (hQ) = { | |
1470 | + | let hR = hQ[bc] | |
1471 | + | func hS (eS,hT) = (eS + parseIntValue(hT)) | |
1472 | + | ||
1473 | + | func hU (eS,hT) = { | |
1474 | + | let db = eS._1 | |
1475 | + | let eL = (((parseIntValue(hT) + aY) - 1) / aY) | |
1476 | + | $Tuple2((db + 1), (eS._2 + (eL * cF))) | |
1475 | 1477 | } | |
1476 | 1478 | ||
1477 | - | let | |
1478 | - | let | |
1479 | - | let | |
1480 | - | let | |
1481 | - | func | |
1482 | - | then | |
1483 | - | else | |
1484 | - | ||
1485 | - | func | |
1486 | - | then | |
1479 | + | let hV = { | |
1480 | + | let eU = split(hQ[ba], "_") | |
1481 | + | let eV = size(eU) | |
1482 | + | let eW = 0 | |
1483 | + | func eX (eY,eZ) = if ((eZ >= eV)) | |
1484 | + | then eY | |
1485 | + | else hS(eY, eU[eZ]) | |
1486 | + | ||
1487 | + | func fa (eY,eZ) = if ((eZ >= eV)) | |
1488 | + | then eY | |
1487 | 1489 | else throw("List size exceeds 6") | |
1488 | 1490 | ||
1489 | - | | |
1491 | + | fa(eX(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5), 6) | |
1490 | 1492 | } | |
1491 | - | let | |
1492 | - | let | |
1493 | - | let | |
1494 | - | let | |
1495 | - | func | |
1496 | - | then | |
1497 | - | else | |
1498 | - | ||
1499 | - | func | |
1500 | - | then | |
1493 | + | let hW = { | |
1494 | + | let eU = split(hQ[bb], "_") | |
1495 | + | let eV = size(eU) | |
1496 | + | let eW = 0 | |
1497 | + | func hG (eY,eZ) = if ((eZ >= eV)) | |
1498 | + | then eY | |
1499 | + | else hS(eY, eU[eZ]) | |
1500 | + | ||
1501 | + | func hH (eY,eZ) = if ((eZ >= eV)) | |
1502 | + | then eY | |
1501 | 1503 | else throw("List size exceeds 6") | |
1502 | 1504 | ||
1503 | - | hG( | |
1505 | + | hH(hG(hG(hG(hG(hG(hG(eW, 0), 1), 2), 3), 4), 5), 6) | |
1504 | 1506 | } | |
1505 | - | let | |
1507 | + | let hX = if ((hR == "")) | |
1506 | 1508 | then 0 | |
1507 | - | else ( let | |
1508 | - | let | |
1509 | - | let | |
1510 | - | func | |
1511 | - | then | |
1512 | - | else | |
1513 | - | ||
1514 | - | func | |
1515 | - | then | |
1509 | + | else ( let eU = split_4C(hR, "_") | |
1510 | + | let eV = size(eU) | |
1511 | + | let eW = $Tuple2(0, 0) | |
1512 | + | func hJ (eY,eZ) = if ((eZ >= eV)) | |
1513 | + | then eY | |
1514 | + | else hU(eY, eU[eZ]) | |
1515 | + | ||
1516 | + | func hK (eY,eZ) = if ((eZ >= eV)) | |
1517 | + | then eY | |
1516 | 1518 | else throw("List size exceeds 50") | |
1517 | 1519 | ||
1518 | - | hJ( | |
1519 | - | (( | |
1520 | - | } | |
1521 | - | ||
1522 | - | ||
1523 | - | func | |
1524 | - | let | |
1525 | - | let | |
1526 | - | let | |
1527 | - | let | |
1528 | - | let | |
1529 | - | let | |
1530 | - | then makeString(["0", toString( | |
1520 | + | hK(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(eW, 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 | |
1521 | + | ((hV + hW) + hX) | |
1522 | + | } | |
1523 | + | ||
1524 | + | ||
1525 | + | func hY (hZ,ia,ib) = { | |
1526 | + | let hO = ((toString(ia) + "_") + toString(ib)) | |
1527 | + | let ic = hN(hO) | |
1528 | + | let id = valueOrElse(getString(hZ), (hO + ":0_0_0_0_0_0:0_0_0_0_0_0::0")) | |
1529 | + | let ie = split_4C(id, ":") | |
1530 | + | let if = hP(ie) | |
1531 | + | let ig = if ((5 > size(ie))) | |
1532 | + | then makeString(["0", toString(if), toString((ic - if)), toString(ic)], "_") | |
1531 | 1533 | else { | |
1532 | - | let | |
1533 | - | let | |
1534 | - | let | |
1535 | - | then parseIntValue( | |
1536 | - | else | |
1537 | - | makeString([toString( | |
1538 | - | } | |
1539 | - | [ | |
1540 | - | then | |
1541 | - | else "0_0_0_0_0_0", if ((size(split( | |
1542 | - | then | |
1543 | - | else "0_0_0_0_0_0", | |
1544 | - | } | |
1545 | - | ||
1546 | - | ||
1547 | - | func | |
1548 | - | let | |
1549 | - | let | |
1550 | - | (( | |
1551 | - | } | |
1552 | - | ||
1553 | - | ||
1554 | - | func | |
1534 | + | let ih = split(ie[bd], "_") | |
1535 | + | let ii = parseIntValue(ih[be]) | |
1536 | + | let ij = if ((size(ih) > 1)) | |
1537 | + | then parseIntValue(ih[bf]) | |
1538 | + | else if | |
1539 | + | makeString([toString(ii), toString(ij), toString(((ic - ii) - ij)), toString(ic)], "_") | |
1540 | + | } | |
1541 | + | [ie[aZ], if ((size(split(ie[ba], "_")) == aG)) | |
1542 | + | then ie[ba] | |
1543 | + | else "0_0_0_0_0_0", if ((size(split(ie[bb], "_")) == aG)) | |
1544 | + | then ie[bb] | |
1545 | + | else "0_0_0_0_0_0", ie[bc], ig] | |
1546 | + | } | |
1547 | + | ||
1548 | + | ||
1549 | + | func ik (hQ) = { | |
1550 | + | let il = hP(hQ) | |
1551 | + | let im = parseIntValue(split(hQ[bd], "_")[be]) | |
1552 | + | ((hN(hQ[aZ]) - il) - im) | |
1553 | + | } | |
1554 | + | ||
1555 | + | ||
1556 | + | func in (io,hQ,ip) = if ((size(io) != 3)) | |
1555 | 1557 | then throw("cargoListStr should contain exactly 2 ':' separators") | |
1556 | 1558 | else { | |
1557 | - | let | |
1558 | - | let | |
1559 | - | let | |
1559 | + | let iq = split(io[0], "_") | |
1560 | + | let ir = split(io[1], "_") | |
1561 | + | let is = if ((io[2] == "")) | |
1560 | 1562 | then nil | |
1561 | - | else split_4C( | |
1562 | - | if ((size( | |
1563 | + | else split_4C(io[2], "_") | |
1564 | + | if ((size(iq) != aG)) | |
1563 | 1565 | then throw("All 6 resources should be passed") | |
1564 | - | else if ((size( | |
1566 | + | else if ((size(ir) != aG)) | |
1565 | 1567 | then throw("All 6 materials should be passed") | |
1566 | 1568 | else { | |
1567 | - | let | |
1568 | - | let | |
1569 | - | let | |
1570 | - | let | |
1569 | + | let ha = ik(hQ) | |
1570 | + | let it = split(hQ[ba], "_") | |
1571 | + | let iu = split(hQ[bb], "_") | |
1572 | + | let iv = if ((hQ[bc] == "")) | |
1571 | 1573 | then nil | |
1572 | - | else split_4C( | |
1573 | - | let | |
1574 | - | let | |
1575 | - | let | |
1574 | + | else split_4C(hQ[bc], "_") | |
1575 | + | let gY = split(ip[bj], "_") | |
1576 | + | let iw = split(ip[bk], "_") | |
1577 | + | let ix = if ((ip[bl] == "")) | |
1576 | 1578 | then nil | |
1577 | - | else split_4C( | |
1578 | - | func | |
1579 | - | let | |
1580 | - | let | |
1581 | - | let | |
1582 | - | let | |
1583 | - | if (( | |
1584 | - | then $Tuple4(( | |
1585 | - | else if (( | |
1586 | - | then if (( | |
1587 | - | then throw((((("Attempt to take " + | |
1588 | - | else $Tuple4(( | |
1589 | - | else if ((-( | |
1590 | - | then throw((((("Attempt to take " + toString(-( | |
1591 | - | else $Tuple4(( | |
1579 | + | else split_4C(ip[bl], "_") | |
1580 | + | func iy (eS,hT) = { | |
1581 | + | let gL = eS._1 | |
1582 | + | let iz = parseIntValue(hT) | |
1583 | + | let iA = parseIntValue(it[gL]) | |
1584 | + | let iB = parseIntValue(gY[gL]) | |
1585 | + | if ((iz == 0)) | |
1586 | + | then $Tuple4((gL + 1), (eS._2 :+ it[gL]), (eS._3 :+ gY[gL]), eS._4) | |
1587 | + | else if ((iz > 0)) | |
1588 | + | then if ((iz > iB)) | |
1589 | + | then throw((((("Attempt to take " + hT) + " from backpack, but only ") + toString(iB)) + " available")) | |
1590 | + | else $Tuple4((gL + 1), (eS._2 :+ toString((iA + iz))), (eS._3 :+ toString((iB - iz))), (eS._4 + iz)) | |
1591 | + | else if ((-(iz) > iA)) | |
1592 | + | then throw((((("Attempt to take " + toString(-(iz))) + " from warehouse, but only ") + toString(iA)) + " available")) | |
1593 | + | else $Tuple4((gL + 1), (eS._2 :+ toString((iA + iz))), (eS._3 :+ toString((iB - iz))), (eS._4 + iz)) | |
1592 | 1594 | } | |
1593 | 1595 | ||
1594 | - | let | |
1595 | - | let | |
1596 | - | let | |
1597 | - | let | |
1598 | - | func | |
1599 | - | then | |
1600 | - | else | |
1601 | - | ||
1602 | - | func | |
1603 | - | then | |
1596 | + | let fd = { | |
1597 | + | let eU = iq | |
1598 | + | let eV = size(eU) | |
1599 | + | let eW = $Tuple4(0, nil, nil, 0) | |
1600 | + | func eX (eY,eZ) = if ((eZ >= eV)) | |
1601 | + | then eY | |
1602 | + | else iy(eY, eU[eZ]) | |
1603 | + | ||
1604 | + | func fa (eY,eZ) = if ((eZ >= eV)) | |
1605 | + | then eY | |
1604 | 1606 | else throw("List size exceeds 6") | |
1605 | 1607 | ||
1606 | - | | |
1608 | + | fa(eX(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5), 6) | |
1607 | 1609 | } | |
1608 | - | func | |
1609 | - | let | |
1610 | - | let | |
1611 | - | let | |
1612 | - | let | |
1613 | - | if (( | |
1614 | - | then $Tuple4(( | |
1615 | - | else if (( | |
1616 | - | then if (( | |
1617 | - | then throw((((("Attempt to take " + | |
1618 | - | else $Tuple4(( | |
1619 | - | else if ((-( | |
1620 | - | then throw((((("Attempt to take " + toString(-( | |
1621 | - | else $Tuple4(( | |
1610 | + | func iC (eS,hT) = { | |
1611 | + | let gL = eS._1 | |
1612 | + | let iz = parseIntValue(hT) | |
1613 | + | let iD = parseIntValue(iu[gL]) | |
1614 | + | let iE = parseIntValue(iw[gL]) | |
1615 | + | if ((iz == 0)) | |
1616 | + | then $Tuple4((gL + 1), (eS._2 :+ iu[gL]), (eS._3 :+ iw[gL]), eS._4) | |
1617 | + | else if ((iz > 0)) | |
1618 | + | then if ((iz > iE)) | |
1619 | + | then throw((((("Attempt to take " + hT) + " from backpack, but only ") + toString(iE)) + " available")) | |
1620 | + | else $Tuple4((gL + 1), (eS._2 :+ toString((iD + iz))), (eS._3 :+ toString((iE - iz))), (eS._4 + iz)) | |
1621 | + | else if ((-(iz) > iD)) | |
1622 | + | then throw((((("Attempt to take " + toString(-(iz))) + " from warehouse, but only ") + toString(iD)) + " available")) | |
1623 | + | else $Tuple4((gL + 1), (eS._2 :+ toString((iD + iz))), (eS._3 :+ toString((iE - iz))), (eS._4 + iz)) | |
1622 | 1624 | } | |
1623 | 1625 | ||
1624 | - | let | |
1625 | - | let | |
1626 | - | let | |
1627 | - | let | |
1628 | - | func | |
1629 | - | then | |
1630 | - | else | |
1631 | - | ||
1632 | - | func | |
1633 | - | then | |
1626 | + | let gr = { | |
1627 | + | let eU = ir | |
1628 | + | let eV = size(eU) | |
1629 | + | let eW = $Tuple4(0, nil, nil, fd._4) | |
1630 | + | func hG (eY,eZ) = if ((eZ >= eV)) | |
1631 | + | then eY | |
1632 | + | else iC(eY, eU[eZ]) | |
1633 | + | ||
1634 | + | func hH (eY,eZ) = if ((eZ >= eV)) | |
1635 | + | then eY | |
1634 | 1636 | else throw("List size exceeds 6") | |
1635 | 1637 | ||
1636 | - | hG( | |
1638 | + | hH(hG(hG(hG(hG(hG(hG(eW, 0), 1), 2), 3), 4), 5), 6) | |
1637 | 1639 | } | |
1638 | - | func | |
1639 | - | let | |
1640 | - | let | |
1641 | - | let | |
1642 | - | then parseIntValue( | |
1640 | + | func iF (eS,hT) = { | |
1641 | + | let gL = eS._1 | |
1642 | + | let iz = parseIntValue(hT) | |
1643 | + | let iG = if ((size(iv) > gL)) | |
1644 | + | then parseIntValue(iv[gL]) | |
1643 | 1645 | else 0 | |
1644 | - | let | |
1645 | - | then parseIntValue( | |
1646 | + | let iH = if ((size(ix) > gL)) | |
1647 | + | then parseIntValue(ix[gL]) | |
1646 | 1648 | else 0 | |
1647 | - | if (( | |
1648 | - | then $Tuple4(( | |
1649 | - | else if (( | |
1650 | - | then if (( | |
1651 | - | then throw((((("Attempt to take " + | |
1649 | + | if ((iz == 0)) | |
1650 | + | then $Tuple4((gL + 1), (eS._2 :+ toString(iG)), (eS._3 :+ toString(iH)), eS._4) | |
1651 | + | else if ((iz > 0)) | |
1652 | + | then if ((iz > iH)) | |
1653 | + | then throw((((("Attempt to take " + hT) + " from backpack, but only ") + toString(iH)) + " available")) | |
1652 | 1654 | else { | |
1653 | - | let | |
1654 | - | $Tuple4(( | |
1655 | + | let fU = (eI((iG + iz), aY) - eI(iG, aY)) | |
1656 | + | $Tuple4((gL + 1), (eS._2 :+ toString((iG + iz))), (eS._3 :+ toString((iH - iz))), (eS._4 + fU)) | |
1655 | 1657 | } | |
1656 | - | else if ((-( | |
1657 | - | then throw((((("Attempt to take " + toString(-( | |
1658 | + | else if ((-(iz) > iG)) | |
1659 | + | then throw((((("Attempt to take " + toString(-(iz))) + " from warehouse, but only ") + toString(iG)) + " available")) | |
1658 | 1660 | else { | |
1659 | - | let | |
1660 | - | $Tuple4(( | |
1661 | + | let fU = (eI((iG + iz), aY) - eI(iG, aY)) | |
1662 | + | $Tuple4((gL + 1), (eS._2 :+ toString((iG + iz))), (eS._3 :+ toString((iH - iz))), (eS._4 + fU)) | |
1661 | 1663 | } | |
1662 | 1664 | } | |
1663 | 1665 | ||
1664 | - | let | |
1666 | + | let gv = if ((size(is) != 0)) | |
1665 | 1667 | then { | |
1666 | - | let | |
1667 | - | let | |
1668 | - | let | |
1669 | - | func | |
1670 | - | then | |
1671 | - | else | |
1672 | - | ||
1673 | - | func | |
1674 | - | then | |
1668 | + | let eU = is | |
1669 | + | let eV = size(eU) | |
1670 | + | let eW = $Tuple4(0, nil, nil, gr._4) | |
1671 | + | func hJ (eY,eZ) = if ((eZ >= eV)) | |
1672 | + | then eY | |
1673 | + | else iF(eY, eU[eZ]) | |
1674 | + | ||
1675 | + | func hK (eY,eZ) = if ((eZ >= eV)) | |
1676 | + | then eY | |
1675 | 1677 | else throw("List size exceeds 50") | |
1676 | 1678 | ||
1677 | - | hJ( | |
1679 | + | hK(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(eW, 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) | |
1678 | 1680 | } | |
1679 | - | else $Tuple4(0, | |
1680 | - | let | |
1681 | - | if (( | |
1682 | - | then throw((((("Attempt to put total " + toString( | |
1683 | - | else $Tuple7(makeString( | |
1681 | + | else $Tuple4(0, iv, ix, gr._4) | |
1682 | + | let iI = gv._4 | |
1683 | + | if ((iI > ha)) | |
1684 | + | then throw((((("Attempt to put total " + toString(iI)) + " stuff, but only ") + toString(ha)) + " warehouse space left")) | |
1685 | + | else $Tuple7(makeString(fd._2, "_"), makeString(gr._2, "_"), makeString_2C(gv._2, "_"), makeString(fd._3, "_"), makeString(gr._3, "_"), makeString_2C(gv._3, "_"), iI) | |
1684 | 1686 | } | |
1685 | 1687 | } | |
1686 | 1688 | ||
1687 | 1689 | ||
1688 | - | func | |
1689 | - | let | |
1690 | - | let | |
1691 | - | let | |
1692 | - | let | |
1693 | - | let | |
1694 | - | let | |
1695 | - | let | |
1696 | - | let | |
1697 | - | let | |
1698 | - | let | |
1699 | - | $Tuple2([IntegerEntry( | |
1700 | - | } | |
1701 | - | ||
1702 | - | ||
1703 | - | func | |
1690 | + | func iJ (iK,iL) = { | |
1691 | + | let bM = toString(iK) | |
1692 | + | let iM = hg(toBigInt(iL)) | |
1693 | + | let iN = valueOrElse(getInteger(eq()), (ep + 1)) | |
1694 | + | let eu = toString(iN) | |
1695 | + | let hp = toInt((iM % ej)) | |
1696 | + | let gO = hn(iM, hp) | |
1697 | + | let du = aQ[hp] | |
1698 | + | let iO = Issue(eH(eu, "S"), makeString([eu, "S", gO, du], "_"), 1, 0, false) | |
1699 | + | let bq = calculateAssetId(iO) | |
1700 | + | let iP = toBase58String(bq) | |
1701 | + | $Tuple2([IntegerEntry(eq(), (iN + 1)), iO, StringEntry(et(eu), iP), StringEntry(bp(iP), bM), StringEntry(ew(eu), bM), IntegerEntry(bz(iP), 0), IntegerEntry(ev(iP, bM), 0), ScriptTransfer(iK, 1, bq)], $Tuple2(iP, du)) | |
1702 | + | } | |
1703 | + | ||
1704 | + | ||
1705 | + | func iQ (bM,iR,iS) = if (!(sigVerify_8Kb(iR, iS, ea))) | |
1704 | 1706 | then throw("signature does not match") | |
1705 | 1707 | else { | |
1706 | - | let | |
1707 | - | let | |
1708 | - | let | |
1709 | - | let | |
1710 | - | let | |
1711 | - | let | |
1712 | - | let | |
1713 | - | let | |
1714 | - | if (if (( | |
1708 | + | let fq = split_4C(toUtf8String(iR), ";") | |
1709 | + | let iT = split_4C(fq[0], "|") | |
1710 | + | let iU = split(iT[eD], "_") | |
1711 | + | let iV = parseIntValue(iU[0]) | |
1712 | + | let iW = parseIntValue(iU[1]) | |
1713 | + | let iX = split(fq[1], ":") | |
1714 | + | let iY = iX[0] | |
1715 | + | let iZ = parseIntValue(iT[eE]) | |
1716 | + | if (if ((iZ > (lastBlock.timestamp + ec))) | |
1715 | 1717 | then true | |
1716 | - | else ((lastBlock.timestamp - | |
1717 | - | then throw(((("signature outdated: logTime=" + toString( | |
1718 | + | else ((lastBlock.timestamp - ec) > iZ)) | |
1719 | + | then throw(((("signature outdated: logTime=" + toString(iZ)) + ", bcTime=") + toString(lastBlock.timestamp))) | |
1718 | 1720 | else { | |
1719 | - | let | |
1720 | - | let | |
1721 | - | if (( | |
1722 | - | then throw(((("Tx ids don't match! In state: " + | |
1721 | + | let ja = iX[1] | |
1722 | + | let jb = valueOrElse(getString(dM(bM)), "") | |
1723 | + | if ((jb != ja)) | |
1724 | + | then throw(((("Tx ids don't match! In state: " + jb) + ", in msg: ") + ja)) | |
1723 | 1725 | else { | |
1724 | - | let | |
1725 | - | let | |
1726 | - | let | |
1727 | - | let | |
1728 | - | if (( | |
1729 | - | then throw(((("oldHealth=" + toString( | |
1730 | - | else if ((0 >= | |
1726 | + | let B = valueOrErrorMessage(getString(bI(bM)), "You don't have a duck staked") | |
1727 | + | let jc = A(B) | |
1728 | + | let jd = ah(valueOrElse(getInteger(E(B)), 0)) | |
1729 | + | let je = valueOrElse(getInteger(jc), jd) | |
1730 | + | if ((je != iV)) | |
1731 | + | then throw(((("oldHealth=" + toString(je)) + " from state does not match one from flight log=") + toString(iV))) | |
1732 | + | else if ((0 >= iV)) | |
1731 | 1733 | then throw("You can't fly with zero health") | |
1732 | - | else if (!( | |
1734 | + | else if (!(gx(B))) | |
1733 | 1735 | then throw("Equipment incompatible") | |
1734 | 1736 | else { | |
1735 | - | let | |
1736 | - | then | |
1737 | + | let jf = if ((size(iT) > eF)) | |
1738 | + | then iT[eF] | |
1737 | 1739 | else "" | |
1738 | - | let | |
1739 | - | then | |
1740 | + | let jg = if ((size(iT) > eG)) | |
1741 | + | then iT[eG] | |
1740 | 1742 | else "" | |
1741 | - | let | |
1742 | - | then ( | |
1743 | + | let jh = if (if ((iW > 0)) | |
1744 | + | then (jf == "$") | |
1743 | 1745 | else false) | |
1744 | - | then | |
1746 | + | then dA(invoke(dc, "sendUsdtPrize", [bM], nil)) | |
1745 | 1747 | else 0 | |
1746 | - | $Tuple5( | |
1748 | + | $Tuple5(iW, B, jh, iY, jg) | |
1747 | 1749 | } | |
1748 | 1750 | } | |
1749 | 1751 | } | |
1750 | 1752 | } | |
1751 | 1753 | ||
1752 | 1754 | ||
1753 | - | func | |
1754 | - | let | |
1755 | - | let | |
1756 | - | let | |
1757 | - | let | |
1758 | - | (( | |
1759 | - | } | |
1760 | - | ||
1761 | - | ||
1762 | - | func | |
1763 | - | let | |
1764 | - | then $Tuple2( | |
1755 | + | func ji (Q,jj) = { | |
1756 | + | let ib = valueOrElse(getInteger(bz(Q)), 0) | |
1757 | + | let jk = valueOrElse(getInteger(bt(aF, Q)), 0) | |
1758 | + | let jl = (ib / 6) | |
1759 | + | let jm = (ib / 7) | |
1760 | + | ((aI + fraction(aI, ((ib + jl) + (2 * jm)), 5)) + fraction(aI, jk, (jj * 5))) | |
1761 | + | } | |
1762 | + | ||
1763 | + | ||
1764 | + | func jn (d,jo,jp) = { | |
1765 | + | let jq = if ((jo == eA)) | |
1766 | + | then $Tuple2(jp, valueOrElse(getString(bI(d)), "")) | |
1765 | 1767 | else { | |
1766 | - | let | |
1767 | - | let | |
1768 | - | let | |
1769 | - | if (( | |
1770 | - | then throw((("Duck location type is " + | |
1771 | - | else $Tuple2( | |
1772 | - | } | |
1773 | - | let | |
1774 | - | let | |
1775 | - | let | |
1776 | - | let | |
1777 | - | let | |
1778 | - | let | |
1779 | - | if (( | |
1780 | - | then throw(( | |
1768 | + | let B = valueOrErrorMessage(getString(bI(d)), "You don't have a duck staked") | |
1769 | + | let jr = valueOrElse(getString(bK(B)), aK) | |
1770 | + | let cg = split(value(jr), "_") | |
1771 | + | if ((cg[bn] != "L")) | |
1772 | + | then throw((("Duck location type is " + cg[bn]) + ", but should be L")) | |
1773 | + | else $Tuple2(cg[bo], B) | |
1774 | + | } | |
1775 | + | let Q = jq._1 | |
1776 | + | let js = jq._2 | |
1777 | + | let jt = value(assetInfo(fromBase58String(Q))) | |
1778 | + | let ju = bs(Q) | |
1779 | + | let jv = valueOrErrorMessage(getInteger(ju), (("Land " + jt.name) + " is not staked")) | |
1780 | + | let jw = valueOrErrorMessage(getString(bp(Q)), (("NFT " + jt.name) + " is orphaned")) | |
1781 | + | if ((jw != d)) | |
1782 | + | then throw((aD + " is not yours")) | |
1781 | 1783 | else { | |
1782 | - | let | |
1783 | - | $Tuple4( | |
1784 | - | } | |
1785 | - | } | |
1786 | - | ||
1787 | - | ||
1788 | - | func | |
1784 | + | let jx = split(jt.description, "_") | |
1785 | + | $Tuple4(js, Q, jx, jv) | |
1786 | + | } | |
1787 | + | } | |
1788 | + | ||
1789 | + | ||
1790 | + | func jy (d,eJ,jo,jp) = if ((0 > eJ)) | |
1789 | 1791 | then throw("Negative amount") | |
1790 | 1792 | else { | |
1791 | - | let | |
1792 | - | let | |
1793 | - | let | |
1794 | - | let | |
1795 | - | if ((0 > | |
1796 | - | then throw(((("Saved timestamp is in future, saved = " + toString( | |
1793 | + | let gb = jn(d, jo, jp) | |
1794 | + | let dJ = gb._3[dj] | |
1795 | + | let gH = gN(gb._3[dk]) | |
1796 | + | let gR = (lastBlock.timestamp - gb._4) | |
1797 | + | if ((0 > gR)) | |
1798 | + | then throw(((("Saved timestamp is in future, saved = " + toString(gb._4)) + ", current = ") + toString(lastBlock.timestamp))) | |
1797 | 1799 | else { | |
1798 | - | let | |
1799 | - | let | |
1800 | - | let | |
1801 | - | if (( | |
1802 | - | then throw(((("Not enough resources, available = " + toString( | |
1800 | + | let jj = dI(dJ) | |
1801 | + | let jz = ji(gb._2, jj) | |
1802 | + | let jA = fraction(gR, (jz * jj), a) | |
1803 | + | if ((eJ > jA)) | |
1804 | + | then throw(((("Not enough resources, available = " + toString(jA)) + ", requested = ") + toString(eJ))) | |
1803 | 1805 | else { | |
1804 | - | let | |
1805 | - | let | |
1806 | - | let | |
1807 | - | let | |
1808 | - | let | |
1809 | - | let | |
1810 | - | let | |
1811 | - | let | |
1812 | - | let | |
1813 | - | if (if (( | |
1814 | - | then ( | |
1806 | + | let jB = fraction((jA - eJ), a, (jz * jj)) | |
1807 | + | let jC = (lastBlock.timestamp - jB) | |
1808 | + | let ia = (jj / cG) | |
1809 | + | let gZ = gV(gH, (gR - jB), ia, jz) | |
1810 | + | let hZ = by(gb._2) | |
1811 | + | let ib = valueOrElse(getInteger(bz(gb._2)), 0) | |
1812 | + | let hQ = hY(hZ, ia, ib) | |
1813 | + | let ih = split(hQ[bd], "_") | |
1814 | + | let ha = parseIntValue(ih[bg]) | |
1815 | + | if (if ((jo == eA)) | |
1816 | + | then (eJ > ha) | |
1815 | 1817 | else false) | |
1816 | - | then throw((("Only " + toString( | |
1818 | + | then throw((("Only " + toString(ha)) + " space left in warehouse")) | |
1817 | 1819 | else { | |
1818 | - | let | |
1819 | - | let | |
1820 | - | let | |
1821 | - | let | |
1822 | - | let | |
1823 | - | then $Tuple4( | |
1824 | - | else if (( | |
1825 | - | then $Tuple4( | |
1820 | + | let hM = bJ(gb._1) | |
1821 | + | let ip = hL(hM) | |
1822 | + | let gY = split(ip[bj], "_") | |
1823 | + | let gX = split(hQ[ba], "_") | |
1824 | + | let jD = if ((jo == eA)) | |
1825 | + | then $Tuple4(gP(gX, gH, (gR - jB), ia, jz), ip[bj], (parseIntValue(ih[bf]) + gZ._2), (parseIntValue(ih[bg]) - gZ._2)) | |
1826 | + | else if ((jo == eB)) | |
1827 | + | then $Tuple4(hQ[ba], gP(gY, gH, (gR - jB), ia, jz), parseIntValue(ih[bf]), parseIntValue(ih[bg])) | |
1826 | 1828 | else { | |
1827 | - | let | |
1828 | - | let | |
1829 | - | $Tuple4( | |
1829 | + | let jE = gW(gX, gY, gZ, ha) | |
1830 | + | let jF = min([parseIntValue(ih[bg]), gZ._2]) | |
1831 | + | $Tuple4(jE._1, jE._2, (parseIntValue(ih[bf]) + jF), (parseIntValue(ih[bg]) - jF)) | |
1830 | 1832 | } | |
1831 | - | let | |
1832 | - | let | |
1833 | - | let | |
1834 | - | let | |
1835 | - | $Tuple5([IntegerEntry( | |
1833 | + | let jG = jD._1 | |
1834 | + | let jH = jD._2 | |
1835 | + | let jI = jD._3 | |
1836 | + | let jJ = jD._4 | |
1837 | + | $Tuple5([IntegerEntry(bs(gb._2), jC), IntegerEntry(bv(aD, gb._2, d), jC)], hM, [ip[bi], jH, ip[bk], ip[bl]], hZ, [hQ[aZ], jG, hQ[bb], hQ[bc], makeString([ih[be], toString(jI), toString(jJ), ih[bh]], "_")]) | |
1836 | 1838 | } | |
1837 | 1839 | } | |
1838 | 1840 | } | |
1839 | 1841 | } | |
1840 | 1842 | ||
1841 | 1843 | ||
1842 | - | func | |
1843 | - | let | |
1844 | - | let | |
1845 | - | let | |
1846 | - | | |
1847 | - | } | |
1848 | - | ||
1849 | - | ||
1850 | - | func | |
1851 | - | let | |
1852 | - | let | |
1853 | - | let | |
1854 | - | let | |
1855 | - | let | |
1856 | - | if (if (!( | |
1857 | - | then ( | |
1844 | + | func jK (d,Q,jj,jo) = { | |
1845 | + | let ju = bs(Q) | |
1846 | + | let jv = value(getInteger(ju)) | |
1847 | + | let jA = (fraction((lastBlock.timestamp - jv), ji(Q, jj), a) * jj) | |
1848 | + | jy(d, jA, jo, Q) | |
1849 | + | } | |
1850 | + | ||
1851 | + | ||
1852 | + | func jL (ff,iK,jM,Q) = { | |
1853 | + | let d = toString(iK) | |
1854 | + | let gb = jn(d, eC, Q) | |
1855 | + | let jj = dI(gb._3[dj]) | |
1856 | + | let jN = bz(gb._2) | |
1857 | + | let jO = valueOrElse(getInteger(jN), 0) | |
1858 | + | if (if (!(cv)) | |
1859 | + | then (jO >= 3) | |
1858 | 1860 | else false) | |
1859 | 1861 | then throw("Currently max infrastructure level = 3") | |
1860 | 1862 | else { | |
1861 | - | let | |
1862 | - | let | |
1863 | - | if (if ( | |
1864 | - | then ( | |
1863 | + | let jP = ((sqrt(jj, 0, 0, DOWN) / 5) + 2) | |
1864 | + | let am = (jO + 1) | |
1865 | + | if (if (cv) | |
1866 | + | then (am > jP) | |
1865 | 1867 | else false) | |
1866 | - | then throw(("Currently max infrastructure level = " + toString( | |
1868 | + | then throw(("Currently max infrastructure level = " + toString(jP))) | |
1867 | 1869 | else { | |
1868 | - | let | |
1869 | - | if (if (!( | |
1870 | - | then ( | |
1870 | + | let jQ = fraction(ef, (jj * am), cG) | |
1871 | + | if (if (!(ff)) | |
1872 | + | then (jM != jQ) | |
1871 | 1873 | else false) | |
1872 | - | then throw(("Payment attached should be " + toString( | |
1874 | + | then throw(("Payment attached should be " + toString(jQ))) | |
1873 | 1875 | else { | |
1874 | - | let | |
1875 | - | let | |
1876 | - | let | |
1877 | - | let | |
1878 | - | let | |
1879 | - | let | |
1880 | - | let | |
1881 | - | let | |
1882 | - | let | |
1883 | - | let | |
1884 | - | let | |
1885 | - | let | |
1886 | - | $Tuple3(([IntegerEntry( | |
1876 | + | let hM = bJ(gb._1) | |
1877 | + | let ip = hL(hM) | |
1878 | + | let jR = split(ip[bk], "_") | |
1879 | + | let jS = fraction(cB, (jj * am), cG) | |
1880 | + | let jT = makeString(fe(ff, jR, jS), "_") | |
1881 | + | let jU = jK(d, gb._2, jj, eC) | |
1882 | + | let jV = jU._5 | |
1883 | + | let jW = hN(jV[aZ]) | |
1884 | + | let jX = makeString([split(jV[aZ], "_")[0], toString(am)], "_") | |
1885 | + | let jY = hN(jX) | |
1886 | + | let ih = split(jV[bd], "_") | |
1887 | + | let jZ = makeString([ih[be], ih[bf], toString(((parseIntValue(ih[bg]) + jY) - jW)), toString(jY)], "_") | |
1888 | + | $Tuple3(([IntegerEntry(jN, am), IntegerEntry(ev(gb._2, d), am), StringEntry(hM, makeString([ip[bi], jU._3[bj], jT, ip[bl]], ":")), StringEntry(jU._4, makeString([jX, jV[ba], jV[bb], jV[bc], jZ], ":"))] ++ jU._1), am, jS) | |
1887 | 1889 | } | |
1888 | 1890 | } | |
1889 | 1891 | } | |
1890 | 1892 | } | |
1891 | 1893 | ||
1892 | 1894 | ||
1893 | - | func | |
1894 | - | let | |
1895 | - | let | |
1896 | - | let | |
1897 | - | let | |
1898 | - | let | |
1899 | - | let | |
1900 | - | $Tuple2([IntegerEntry( | |
1901 | - | } | |
1902 | - | ||
1903 | - | ||
1904 | - | func | |
1905 | - | let | |
1906 | - | let | |
1907 | - | let | |
1908 | - | let | |
1909 | - | let | |
1910 | - | let | |
1911 | - | $Tuple2([IntegerEntry( | |
1912 | - | } | |
1913 | - | ||
1914 | - | ||
1915 | - | func | |
1916 | - | let | |
1917 | - | let | |
1918 | - | let | |
1919 | - | if (!(isDefined( | |
1895 | + | func ka (B,kb) = { | |
1896 | + | let kc = E(B) | |
1897 | + | let kd = D(B) | |
1898 | + | let ag = valueOrElse(getInteger(kd), 0) | |
1899 | + | let al = (ag + kb) | |
1900 | + | let ke = aj(valueOrElse(getInteger(kc), 0), al) | |
1901 | + | let kf = F(B) | |
1902 | + | $Tuple2([IntegerEntry(kc, ke[0]), IntegerEntry(kd, al), IntegerEntry(kf, (valueOrElse(getInteger(kf), 0) + ke[1]))], al) | |
1903 | + | } | |
1904 | + | ||
1905 | + | ||
1906 | + | func kg (d,kb) = { | |
1907 | + | let kc = I(d) | |
1908 | + | let kd = H(d) | |
1909 | + | let ag = valueOrElse(getInteger(kd), 0) | |
1910 | + | let al = (ag + kb) | |
1911 | + | let ke = aj(valueOrElse(getInteger(kc), 0), al) | |
1912 | + | let kf = J(d) | |
1913 | + | $Tuple2([IntegerEntry(kc, ke[0]), IntegerEntry(kd, al), IntegerEntry(kf, (valueOrElse(getInteger(kf), 0) + ke[1]))], al) | |
1914 | + | } | |
1915 | + | ||
1916 | + | ||
1917 | + | func kh (d) = { | |
1918 | + | let B = valueOrErrorMessage(getString(bI(d)), "You don't have a duck staked") | |
1919 | + | let ki = bD(d) | |
1920 | + | let kj = getString(ki) | |
1921 | + | if (!(isDefined(kj))) | |
1920 | 1922 | then throw("You are not eligible for ONBOARD artifact") | |
1921 | 1923 | else { | |
1922 | - | let | |
1923 | - | let | |
1924 | - | if (isDefined( | |
1925 | - | then throw(("You already used your ONBOARD artifact on duck " + value( | |
1924 | + | let kk = bF(d) | |
1925 | + | let kl = getString(kk) | |
1926 | + | if (isDefined(kl)) | |
1927 | + | then throw(("You already used your ONBOARD artifact on duck " + value(kl))) | |
1926 | 1928 | else { | |
1927 | - | let | |
1928 | - | let | |
1929 | - | if (isDefined( | |
1930 | - | then throw(((("The duck " + | |
1931 | - | else ([StringEntry( | |
1929 | + | let km = bE(B) | |
1930 | + | let kn = getString(km) | |
1931 | + | if (isDefined(kn)) | |
1932 | + | then throw(((("The duck " + B) + " already got points from ONBOARD artifact from user ") + value(kn))) | |
1933 | + | else ([StringEntry(kk, B), StringEntry(km, d)] ++ ka(B, ad)._1) | |
1932 | 1934 | } | |
1933 | 1935 | } | |
1934 | 1936 | } | |
1935 | 1937 | ||
1936 | 1938 | ||
1937 | - | func | |
1938 | - | let | |
1939 | - | let | |
1940 | - | let | |
1941 | - | let | |
1942 | - | if ((valueOrElse(getInteger( | |
1939 | + | func ko (d,jp) = { | |
1940 | + | let gb = jn(d, eC, jp) | |
1941 | + | let Q = gb._2 | |
1942 | + | let jj = dI(gb._3[dj]) | |
1943 | + | let kp = bt(aF, Q) | |
1944 | + | if ((valueOrElse(getInteger(kp), 0) > 0)) | |
1943 | 1945 | then throw("Presale artifact is already activated") | |
1944 | - | else if ((parseIntValue( | |
1945 | - | then throw(((( | |
1946 | + | else if ((parseIntValue(gb._3[di]) > ep)) | |
1947 | + | then throw((((aD + " ") + Q) + " is not eligible for presale artifact")) | |
1946 | 1948 | else { | |
1947 | - | let | |
1948 | - | ((( | |
1949 | + | let jU = jK(d, Q, jj, eC) | |
1950 | + | (((jU._1 :+ IntegerEntry(kp, jj)) :+ StringEntry(jU._2, makeString(jU._3, ":"))) :+ StringEntry(jU._4, makeString(jU._5, ":"))) | |
1949 | 1951 | } | |
1950 | 1952 | } | |
1951 | 1953 | ||
1952 | 1954 | ||
1953 | - | func | |
1954 | - | let | |
1955 | - | let | |
1956 | - | let | |
1957 | - | let | |
1958 | - | let | |
1959 | - | let | |
1960 | - | if (( | |
1955 | + | func kq (B) = { | |
1956 | + | let cf = valueOrElse(getInteger(dg, bQ), 0) | |
1957 | + | let jr = split(valueOrElse(getString(bK(B)), aK), "_") | |
1958 | + | let ay = lastBlock.timestamp | |
1959 | + | let ch = bZ(dg, cf) | |
1960 | + | let cb = ch[bV] | |
1961 | + | let cc = ch[bW] | |
1962 | + | if ((jr[bn] != "T")) | |
1961 | 1963 | then false | |
1962 | - | else if (if (if ((parseIntValue( | |
1963 | - | then ( | |
1964 | + | else if (if (if ((parseIntValue(jr[bm]) == cf)) | |
1965 | + | then (cc[bY] == "INPROGRESS") | |
1964 | 1966 | else false) | |
1965 | - | then (parseIntValue( | |
1967 | + | then (parseIntValue(cb[bX]) > ay) | |
1966 | 1968 | else false) | |
1967 | 1969 | then throw("Your duck is taking part in the tournament") | |
1968 | - | else | |
1969 | - | } | |
1970 | - | ||
1971 | - | ||
1972 | - | func | |
1970 | + | else dE(invoke(this, "exitTournamentInternal", [B], nil)) | |
1971 | + | } | |
1972 | + | ||
1973 | + | ||
1974 | + | func kr (B) = if (!(cw)) | |
1973 | 1975 | then false | |
1974 | 1976 | else { | |
1975 | - | let | |
1976 | - | let | |
1977 | - | if (( | |
1977 | + | let jr = split(valueOrElse(getString(bK(B)), aK), "_") | |
1978 | + | let ay = lastBlock.timestamp | |
1979 | + | if ((jr[bn] != "D")) | |
1978 | 1980 | then false | |
1979 | 1981 | else { | |
1980 | - | let | |
1981 | - | let | |
1982 | - | if (if (( | |
1983 | - | then (3 > | |
1982 | + | let cj = parseIntValue(jr[bm]) | |
1983 | + | let ck = parseIntValue(jr[bo]) | |
1984 | + | if (if ((ay > (cj + aO))) | |
1985 | + | then (3 > ck) | |
1984 | 1986 | else false) | |
1985 | 1987 | then throw("Your duck is on delivery mission") | |
1986 | - | else | |
1988 | + | else dE(invoke(this, "exitDeliveryInternal", [B], nil)) | |
1987 | 1989 | } | |
1988 | 1990 | } | |
1989 | 1991 | ||
1990 | 1992 | ||
1991 | - | func | |
1992 | - | let | |
1993 | - | let | |
1994 | - | let | |
1995 | - | let | |
1996 | - | let | |
1997 | - | let | |
1998 | - | let | |
1999 | - | let | |
1993 | + | func ks (B,kt,iW) = { | |
1994 | + | let jr = split(valueOrElse(getString(bK(B)), aK), "_") | |
1995 | + | let ay = lastBlock.timestamp | |
1996 | + | let cj = parseIntValue(jr[bm]) | |
1997 | + | let ck = parseIntValue(jr[bo]) | |
1998 | + | let jw = valueOrErrorMessage(getString(bH(B)), "NFT duck is orphaned") | |
1999 | + | let ku = A(B) | |
2000 | + | let kv = getIntegerValue(ku) | |
2001 | + | let kw = if ((ck >= 3)) | |
2000 | 2002 | then { | |
2001 | - | let | |
2002 | - | if (( | |
2003 | + | let kx = invoke(dd, "sendDeliveryReward", [jw], nil) | |
2004 | + | if ((kx == kx)) | |
2003 | 2005 | then nil | |
2004 | 2006 | else throw("Strict value is not equal to itself.") | |
2005 | 2007 | } | |
2006 | - | else if (if (if ( | |
2007 | - | then ( | |
2008 | + | else if (if (if (kt) | |
2009 | + | then (iW > 0) | |
2008 | 2010 | else false) | |
2009 | - | then ( | |
2011 | + | then (ay > (cj + aO)) | |
2010 | 2012 | else false) | |
2011 | 2013 | then throw("Your duck is still on delivery mission") | |
2012 | 2014 | else { | |
2013 | - | let | |
2014 | - | let | |
2015 | - | if (( | |
2016 | - | then if ((0 >= | |
2015 | + | let ky = valueOrElse(getInteger(dd, bP), 0) | |
2016 | + | let kz = invoke(dd, "updateDeliveryLocked", [(ky - aN)], nil) | |
2017 | + | if ((kz == kz)) | |
2018 | + | then if ((0 >= kv)) | |
2017 | 2019 | then nil | |
2018 | - | else [IntegerEntry( | |
2020 | + | else [IntegerEntry(U(B), (cj + b))] | |
2019 | 2021 | else throw("Strict value is not equal to itself.") | |
2020 | 2022 | } | |
2021 | - | let | |
2022 | - | let | |
2023 | - | $Tuple4( | |
2024 | - | } | |
2025 | - | ||
2026 | - | ||
2027 | - | func | |
2028 | - | let | |
2029 | - | if ( | |
2023 | + | let kA = getIntegerValue(K(B)) | |
2024 | + | let kB = getStringValue(L(B)) | |
2025 | + | $Tuple4(kw, [IntegerEntry(ku, kA), StringEntry(bK(B), kB)], kB, kA) | |
2026 | + | } | |
2027 | + | ||
2028 | + | ||
2029 | + | func kC (kD,am,kE,d,kF,kG) = { | |
2030 | + | let B = valueOrErrorMessage(getString(bI(d)), "You don't have a duck staked") | |
2031 | + | if (kq(B)) | |
2030 | 2032 | then throw("mergeInternal_checkTournament") | |
2031 | - | else if ( | |
2033 | + | else if (kr(B)) | |
2032 | 2034 | then throw("mergeInternal_checkDelivery") | |
2033 | 2035 | else { | |
2034 | - | func | |
2035 | - | let | |
2036 | - | let | |
2037 | - | let | |
2038 | - | let | |
2039 | - | if (( | |
2040 | - | then throw(( | |
2036 | + | func kH (eS,Q) = { | |
2037 | + | let jt = value(assetInfo(fromBase58String(Q))) | |
2038 | + | let ju = bs(Q) | |
2039 | + | let jv = valueOrErrorMessage(getInteger(ju), (("NFT " + jt.name) + " is not staked")) | |
2040 | + | let jw = valueOrErrorMessage(getString(bp(Q)), (("NFT " + jt.name) + " is orphaned")) | |
2041 | + | if ((jw != d)) | |
2042 | + | then throw((aD + " is not yours")) | |
2041 | 2043 | else { | |
2042 | - | let | |
2043 | - | let | |
2044 | - | if (if (( | |
2045 | - | then ( | |
2044 | + | let jx = split(jt.description, "_") | |
2045 | + | let du = jx[dl] | |
2046 | + | if (if ((eS._3 != "")) | |
2047 | + | then (eS._3 != du) | |
2046 | 2048 | else false) | |
2047 | 2049 | then throw("Lands should be on the same continent to merge") | |
2048 | 2050 | else { | |
2049 | - | let | |
2050 | - | let | |
2051 | - | let | |
2052 | - | let | |
2053 | - | let | |
2054 | - | let | |
2055 | - | let | |
2056 | - | let | |
2057 | - | let | |
2058 | - | if (("S" == | |
2051 | + | let dJ = jx[dj] | |
2052 | + | let kI = eS._1 | |
2053 | + | let gL = valueOrErrorMessage(indexOf(kI, dJ), "You haven't passed all the lands needed") | |
2054 | + | let kJ = (take(kI, gL) + drop(kI, (gL + 1))) | |
2055 | + | let jj = dI(dJ) | |
2056 | + | let kK = (eS._2 + valueOrElse(getInteger(bt(aF, Q)), 0)) | |
2057 | + | let ib = valueOrElse(getInteger(bz(Q)), 0) | |
2058 | + | let kL = { | |
2059 | + | let cz = dJ | |
2060 | + | if (("S" == cz)) | |
2059 | 2061 | then 3 | |
2060 | - | else if (("M" == | |
2062 | + | else if (("M" == cz)) | |
2061 | 2063 | then 4 | |
2062 | - | else if (("L" == | |
2064 | + | else if (("L" == cz)) | |
2063 | 2065 | then 5 | |
2064 | - | else if (("XL" == | |
2066 | + | else if (("XL" == cz)) | |
2065 | 2067 | then 6 | |
2066 | 2068 | else throw("Only S, M, L, XL can merge") | |
2067 | 2069 | } | |
2068 | - | if (( | |
2070 | + | if ((ib != kL)) | |
2069 | 2071 | then throw("All lands should be maxed to merge") | |
2070 | 2072 | else { | |
2071 | - | let | |
2072 | - | let | |
2073 | - | let | |
2074 | - | if ((0 > | |
2075 | - | then throw(((("Saved timestamp is in future, saved = " + toString( | |
2073 | + | let eu = jx[di] | |
2074 | + | let gH = gN(jx[dk]) | |
2075 | + | let gR = (lastBlock.timestamp - jv) | |
2076 | + | if ((0 > gR)) | |
2077 | + | then throw(((("Saved timestamp is in future, saved = " + toString(jv)) + ", current = ") + toString(lastBlock.timestamp))) | |
2076 | 2078 | else { | |
2077 | - | let | |
2078 | - | let | |
2079 | - | let | |
2080 | - | let | |
2081 | - | let | |
2082 | - | let | |
2083 | - | let | |
2084 | - | let | |
2085 | - | if (!(isDefined( | |
2086 | - | then throw(("Your staked lands don't contain " + | |
2079 | + | let jz = ji(Q, jj) | |
2080 | + | let ia = (jj / cG) | |
2081 | + | let jH = gP(split(eS._4, "_"), gH, gR, ia, jz) | |
2082 | + | let fc = gF(eS._6, gH, ia, -1) | |
2083 | + | let kM = gF(eS._10, gH, ia, -1) | |
2084 | + | let hv = gF(eS._9, gH, ia, 1) | |
2085 | + | let kN = eS._7 | |
2086 | + | let db = indexOf(kN, Q) | |
2087 | + | if (!(isDefined(db))) | |
2088 | + | then throw(("Your staked lands don't contain " + Q)) | |
2087 | 2089 | else { | |
2088 | - | let | |
2089 | - | let | |
2090 | - | $Tuple10( | |
2091 | - | then [DeleteEntry( | |
2092 | - | else nil)), | |
2090 | + | let kO = br(Q) | |
2091 | + | let kP = valueOrElse(getString(kO), "") | |
2092 | + | $Tuple10(kJ, kK, du, jH, ((((((((((((eS._5 :+ DeleteEntry(bs(Q))) :+ DeleteEntry(bv(aD, Q, d))) :+ DeleteEntry(et(eu))) :+ DeleteEntry(bp(Q))) :+ DeleteEntry(bz(Q))) :+ DeleteEntry(ev(Q, d))) :+ DeleteEntry(bt(aF, Q))) :+ DeleteEntry(ew(eu))) :+ DeleteEntry(by(Q))) :+ DeleteEntry(kO)) :+ Burn(fromBase58String(Q), 1)) ++ (if ((kP != "")) | |
2093 | + | then [DeleteEntry(er(kP))] | |
2094 | + | else nil)), fc, removeByIndex(kN, value(db)), (eS._8 + jj), hv, kM) | |
2093 | 2095 | } | |
2094 | 2096 | } | |
2095 | 2097 | } | |
2096 | 2098 | } | |
2097 | 2099 | } | |
2098 | 2100 | } | |
2099 | 2101 | ||
2100 | - | let | |
2101 | - | let | |
2102 | - | let | |
2103 | - | let | |
2104 | - | let | |
2105 | - | let | |
2106 | - | then split_51C(value( | |
2102 | + | let hM = bJ(B) | |
2103 | + | let ip = hL(hM) | |
2104 | + | let gG = split(valueOrElse(getString(ds()), "0_0_0_0_0_0"), "_") | |
2105 | + | let kQ = dv(d) | |
2106 | + | let kR = getString(kQ) | |
2107 | + | let kS = if (isDefined(kR)) | |
2108 | + | then split_51C(value(kR), "_") | |
2107 | 2109 | else nil | |
2108 | - | let | |
2109 | - | let | |
2110 | - | let | |
2111 | - | let | |
2112 | - | let | |
2113 | - | let | |
2114 | - | func | |
2115 | - | then | |
2116 | - | else | |
2117 | - | ||
2118 | - | func | |
2119 | - | then | |
2110 | + | let kT = split(value(assetInfo(fromBase58String(kF[0]))).description, "_")[dl] | |
2111 | + | let kU = split(valueOrElse(getString(dt(kT)), "0_0_0_0_0_0"), "_") | |
2112 | + | let fd = { | |
2113 | + | let eU = kF | |
2114 | + | let eV = size(eU) | |
2115 | + | let eW = $Tuple10(kE, 0, "", ip[bj], nil, gG, kS, 0, split("0_0_0_0_0_0", "_"), kU) | |
2116 | + | func eX (eY,eZ) = if ((eZ >= eV)) | |
2117 | + | then eY | |
2118 | + | else kH(eY, eU[eZ]) | |
2119 | + | ||
2120 | + | func fa (eY,eZ) = if ((eZ >= eV)) | |
2121 | + | then eY | |
2120 | 2122 | else throw("List size exceeds 5") | |
2121 | 2123 | ||
2122 | - | | |
2124 | + | fa(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5) | |
2123 | 2125 | } | |
2124 | - | let | |
2125 | - | let | |
2126 | - | let | |
2127 | - | let | |
2128 | - | let | |
2129 | - | let | |
2130 | - | let | |
2131 | - | let | |
2132 | - | let | |
2133 | - | let | |
2134 | - | let | |
2135 | - | $Tuple2(((((((((((((((( | |
2136 | - | then StringEntry( | |
2137 | - | else DeleteEntry( | |
2126 | + | let du = fd._3 | |
2127 | + | let hp = valueOrErrorMessage(indexOf(aQ, du), ("Unknown continent: " + du)) | |
2128 | + | let gO = hu(fd._9, (dI(kD) / cG)) | |
2129 | + | let iN = valueOrElse(getInteger(eq()), (ep + 1)) | |
2130 | + | let kV = toString(iN) | |
2131 | + | let iO = Issue(eH(kV, kD), makeString([kV, kD, gO, du], "_"), 1, 0, false) | |
2132 | + | let bq = calculateAssetId(iO) | |
2133 | + | let kW = toBase58String(bq) | |
2134 | + | let jT = makeString(fe((kG > 0), split(ip[bk], "_"), kG), "_") | |
2135 | + | let kX = dw(d) | |
2136 | + | let kY = valueOrElse(getInteger(kX), 0) | |
2137 | + | $Tuple2((((((((((((((((fd._5 :+ (if ((size(fd._7) > 0)) | |
2138 | + | then StringEntry(kQ, makeString_11C(fd._7, "_")) | |
2139 | + | else DeleteEntry(kQ))) :+ IntegerEntry(kX, if ((fd._8 > kY)) | |
2138 | 2140 | then 0 | |
2139 | - | else ( | |
2141 | + | else (kY - fd._8))) :+ IntegerEntry(eq(), (iN + 1))) :+ iO) :+ StringEntry(et(kV), kW)) :+ StringEntry(bp(kW), d)) :+ StringEntry(ew(kV), d)) :+ IntegerEntry(bt(aF, kW), fd._2)) :+ IntegerEntry(bz(kW), am)) :+ IntegerEntry(ev(kW, d), am)) :+ StringEntry(hM, makeString([ip[bi], fd._4, jT, ip[bl]], ":"))) :+ StringEntry(ds(), makeString(fd._6, "_"))) :+ StringEntry(dt(du), makeString(fd._10, "_"))) :+ StringEntry(bK(B), makeString([du, "L", kW], "_"))) :+ ScriptTransfer(addressFromStringValue(d), 1, bq)), kW) | |
2140 | 2142 | } | |
2141 | 2143 | } | |
2142 | 2144 | ||
2143 | 2145 | ||
2144 | - | func | |
2145 | - | ||
2146 | - | ||
2147 | - | func | |
2148 | - | ||
2149 | - | ||
2150 | - | func | |
2151 | - | ||
2152 | - | ||
2153 | - | func | |
2154 | - | ||
2155 | - | ||
2156 | - | func | |
2157 | - | let | |
2158 | - | if ((4 == | |
2159 | - | then | |
2160 | - | else if ((3 == | |
2161 | - | then | |
2162 | - | else if ((5 == | |
2163 | - | then | |
2164 | - | else if ((2 == | |
2165 | - | then | |
2146 | + | func kZ (d,kF) = kC("M", 3, "SSSS", d, kF, 0) | |
2147 | + | ||
2148 | + | ||
2149 | + | func la (d,kF) = kC("L", 4, "SMM", d, kF, (cB * 4)) | |
2150 | + | ||
2151 | + | ||
2152 | + | func lb (d,kF) = kC("XL", 5, "SSSML", d, kF, (cB * 47)) | |
2153 | + | ||
2154 | + | ||
2155 | + | func lc (d,kF) = kC("XXL", 6, "LXL", d, kF, (cB * 54)) | |
2156 | + | ||
2157 | + | ||
2158 | + | func ld (d,kF) = { | |
2159 | + | let cz = size(kF) | |
2160 | + | if ((4 == cz)) | |
2161 | + | then kZ(d, kF) | |
2162 | + | else if ((3 == cz)) | |
2163 | + | then la(d, kF) | |
2164 | + | else if ((5 == cz)) | |
2165 | + | then lb(d, kF) | |
2166 | + | else if ((2 == cz)) | |
2167 | + | then lc(d, kF) | |
2166 | 2168 | else throw("Unknown merge") | |
2167 | 2169 | } | |
2168 | 2170 | ||
2169 | 2171 | ||
2170 | - | func | |
2171 | - | let | |
2172 | - | if (if ( | |
2173 | - | then isDefined( | |
2172 | + | func le (bM) = { | |
2173 | + | let lf = getString(bI(bM)) | |
2174 | + | if (if (cw) | |
2175 | + | then isDefined(lf) | |
2174 | 2176 | else false) | |
2175 | 2177 | then { | |
2176 | - | let | |
2177 | - | let | |
2178 | - | let | |
2179 | - | let | |
2180 | - | if (if (( | |
2178 | + | let B = value(lf) | |
2179 | + | let lg = bK(B) | |
2180 | + | let cg = split(valueOrElse(getString(lg), aK), "_") | |
2181 | + | let cj = parseIntValue(cg[bm]) | |
2182 | + | if (if ((cg[bn] != "D")) | |
2181 | 2183 | then true | |
2182 | - | else (lastBlock.timestamp > ( | |
2184 | + | else (lastBlock.timestamp > (cj + aO))) | |
2183 | 2185 | then nil | |
2184 | 2186 | else { | |
2185 | - | let | |
2186 | - | if ((parseIntValue( | |
2187 | + | let ku = A(B) | |
2188 | + | if ((parseIntValue(cg[bo]) >= 3)) | |
2187 | 2189 | then { | |
2188 | - | let | |
2189 | - | if (( | |
2190 | + | let kx = invoke(dd, "sendDeliveryReward", [bM], nil) | |
2191 | + | if ((kx == kx)) | |
2190 | 2192 | then nil | |
2191 | 2193 | else throw("Strict value is not equal to itself.") | |
2192 | 2194 | } | |
2193 | 2195 | else (({ | |
2194 | - | let | |
2195 | - | let | |
2196 | - | if (( | |
2197 | - | then if ((0 >= getIntegerValue( | |
2196 | + | let ky = valueOrElse(getInteger(dd, bP), 0) | |
2197 | + | let kz = invoke(dd, "updateDeliveryLocked", [(ky - aN)], nil) | |
2198 | + | if ((kz == kz)) | |
2199 | + | then if ((0 >= getIntegerValue(ku))) | |
2198 | 2200 | then nil | |
2199 | 2201 | else { | |
2200 | - | let | |
2201 | - | if (( | |
2202 | + | let lh = invoke(this, "saveInteger", [U(B), (cj + b)], nil) | |
2203 | + | if ((lh == lh)) | |
2202 | 2204 | then nil | |
2203 | 2205 | else throw("Strict value is not equal to itself.") | |
2204 | 2206 | } | |
2205 | 2207 | else throw("Strict value is not equal to itself.") | |
2206 | - | } :+ IntegerEntry( | |
2208 | + | } :+ IntegerEntry(ku, getIntegerValue(K(B)))) :+ StringEntry(lg, getStringValue(L(B)))) | |
2207 | 2209 | } | |
2208 | 2210 | } | |
2209 | 2211 | else nil | |
2210 | 2212 | } | |
2211 | 2213 | ||
2212 | 2214 | ||
2213 | - | func | |
2214 | - | then valueOrElse(getBoolean( | |
2215 | + | func li (gL) = if (if ((gL.originCaller != dc)) | |
2216 | + | then valueOrElse(getBoolean(dL()), false) | |
2215 | 2217 | else false) | |
2216 | 2218 | then throw("Contracts are under maintenance") | |
2217 | 2219 | else { | |
2218 | - | let | |
2219 | - | ( | |
2220 | + | let bM = toString(gL.originCaller) | |
2221 | + | (le(bM) :+ StringEntry(dM(bM), toBase58String(gL.transactionId))) | |
2220 | 2222 | } | |
2221 | 2223 | ||
2222 | 2224 | ||
2223 | - | func | |
2224 | - | then valueOrElse(getBoolean( | |
2225 | + | func lj (gL) = if (if ((gL.originCaller != dc)) | |
2226 | + | then valueOrElse(getBoolean(dL()), false) | |
2225 | 2227 | else false) | |
2226 | 2228 | then throw("Contracts are under maintenance") | |
2227 | - | else [StringEntry( | |
2228 | - | ||
2229 | - | ||
2230 | - | @Callable( | |
2231 | - | func constructorV1 ( | |
2229 | + | else [StringEntry(dM(toString(gL.originCaller)), toBase58String(gL.transactionId))] | |
2230 | + | ||
2231 | + | ||
2232 | + | @Callable(gL) | |
2233 | + | func constructorV1 (lk) = if ((gL.caller != this)) | |
2232 | 2234 | then throw("Permission denied") | |
2233 | - | else [StringEntry( | |
2234 | - | ||
2235 | - | ||
2236 | - | ||
2237 | - | @Callable( | |
2238 | - | func saveInteger ( | |
2235 | + | else [StringEntry(cW(), lk)] | |
2236 | + | ||
2237 | + | ||
2238 | + | ||
2239 | + | @Callable(gL) | |
2240 | + | func saveInteger (cO,eJ) = if ((gL.caller != this)) | |
2239 | 2241 | then throw("saveInteger is not public method") | |
2240 | - | else [IntegerEntry( | |
2241 | - | ||
2242 | - | ||
2243 | - | ||
2244 | - | @Callable( | |
2245 | - | func setBlocked ( | |
2242 | + | else [IntegerEntry(cO, eJ)] | |
2243 | + | ||
2244 | + | ||
2245 | + | ||
2246 | + | @Callable(gL) | |
2247 | + | func setBlocked (ll) = if ((gL.caller != this)) | |
2246 | 2248 | then throw("permission denied") | |
2247 | - | else [BooleanEntry( | |
2248 | - | ||
2249 | - | ||
2250 | - | ||
2251 | - | @Callable( | |
2249 | + | else [BooleanEntry(dL(), ll)] | |
2250 | + | ||
2251 | + | ||
2252 | + | ||
2253 | + | @Callable(gL) | |
2252 | 2254 | func stakeLand () = { | |
2253 | - | let | |
2254 | - | if ((size( | |
2255 | + | let lm = li(gL) | |
2256 | + | if ((size(gL.payments) != 1)) | |
2255 | 2257 | then throw("Exactly one payment required") | |
2256 | 2258 | else { | |
2257 | - | let | |
2258 | - | let | |
2259 | - | let | |
2260 | - | if (( | |
2261 | - | then throw((("NFT " + | |
2259 | + | let ln = value(gL.payments[0]) | |
2260 | + | let bq = value(ln.assetId) | |
2261 | + | let cN = toString(gL.caller) | |
2262 | + | if ((ln.amount != 1)) | |
2263 | + | then throw((("NFT " + aD) + " token should be attached as payment")) | |
2262 | 2264 | else { | |
2263 | - | let | |
2264 | - | if (( | |
2265 | + | let jt = value(assetInfo(bq)) | |
2266 | + | if ((jt.issuer != this)) | |
2265 | 2267 | then throw("Unknown issuer of token") | |
2266 | - | else if (!(contains( | |
2267 | - | then throw((("Only NFT " + | |
2268 | + | else if (!(contains(jt.name, aD))) | |
2269 | + | then throw((("Only NFT " + aD) + " tokens are accepted")) | |
2268 | 2270 | else { | |
2269 | - | let | |
2270 | - | let | |
2271 | - | then dropRight( | |
2272 | - | else if (contains( | |
2273 | - | then dropRight( | |
2274 | - | else dropRight( | |
2275 | - | if (!(isDefined(parseInt( | |
2276 | - | then throw(("Cannot parse land number from " + | |
2271 | + | let lo = drop(jt.name, 4) | |
2272 | + | let eu = if (contains(lo, "XXL")) | |
2273 | + | then dropRight(lo, 3) | |
2274 | + | else if (contains(lo, "XL")) | |
2275 | + | then dropRight(lo, 2) | |
2276 | + | else dropRight(lo, 1) | |
2277 | + | if (!(isDefined(parseInt(eu)))) | |
2278 | + | then throw(("Cannot parse land number from " + jt.name)) | |
2277 | 2279 | else { | |
2278 | - | let | |
2279 | - | let | |
2280 | - | if (isDefined(getInteger( | |
2281 | - | then throw((("NFT " + | |
2280 | + | let Q = toBase58String(bq) | |
2281 | + | let ju = bs(Q) | |
2282 | + | if (isDefined(getInteger(ju))) | |
2283 | + | then throw((("NFT " + jt.name) + " is already staked")) | |
2282 | 2284 | else { | |
2283 | - | let | |
2284 | - | let | |
2285 | - | let | |
2286 | - | let | |
2287 | - | let | |
2288 | - | let | |
2289 | - | let | |
2290 | - | let | |
2291 | - | let | |
2292 | - | let | |
2293 | - | let | |
2294 | - | then split_51C(value( | |
2285 | + | let jx = split(jt.description, "_") | |
2286 | + | let gH = gN(jx[dk]) | |
2287 | + | let jj = dI(jx[dj]) | |
2288 | + | let ia = (jj / cG) | |
2289 | + | let fc = gM(gH, ia, 1) | |
2290 | + | let lp = dt(jx[dl]) | |
2291 | + | let kU = split(valueOrElse(getString(lp), "0_0_0_0_0_0"), "_") | |
2292 | + | let lq = makeString(gF(kU, gH, ia, 1), "_") | |
2293 | + | let kQ = dv(cN) | |
2294 | + | let kR = getString(kQ) | |
2295 | + | let kN = if (isDefined(kR)) | |
2296 | + | then split_51C(value(kR), "_") | |
2295 | 2297 | else nil | |
2296 | - | if (containsElement( | |
2297 | - | then throw(("Your staked lands already contain " + | |
2298 | - | else if ((size( | |
2299 | - | then throw((("Your already staked max (" + toString( | |
2298 | + | if (containsElement(kN, Q)) | |
2299 | + | then throw(("Your staked lands already contain " + Q)) | |
2300 | + | else if ((size(kN) >= aH)) | |
2301 | + | then throw((("Your already staked max (" + toString(aH)) + ") lands")) | |
2300 | 2302 | else { | |
2301 | - | let | |
2302 | - | let | |
2303 | - | let | |
2304 | - | let | |
2305 | - | $Tuple2(([IntegerEntry( | |
2303 | + | let ib = valueOrElse(getInteger(bz(Q)), 0) | |
2304 | + | let kX = dw(cN) | |
2305 | + | let lr = valueOrElse(getInteger(kX), 0) | |
2306 | + | let ls = invoke(df, "onStakeUnstakeLand", [cN], nil) | |
2307 | + | $Tuple2(([IntegerEntry(ju, lastBlock.timestamp), IntegerEntry(bv(aD, Q, cN), lastBlock.timestamp), StringEntry(kQ, makeString_11C((kN :+ Q), "_")), IntegerEntry(kX, (lr + jj)), StringEntry(bp(Q), cN), StringEntry(ew(eu), cN), IntegerEntry(ev(Q, cN), ib), StringEntry(ds(), fc), StringEntry(lp, lq)] ++ lm), ls) | |
2306 | 2308 | } | |
2307 | 2309 | } | |
2308 | 2310 | } | |
2309 | 2311 | } | |
2310 | 2312 | } | |
2311 | 2313 | } | |
2312 | 2314 | } | |
2313 | 2315 | ||
2314 | 2316 | ||
2315 | 2317 | ||
2316 | - | @Callable( | |
2317 | - | func unstakeLand ( | |
2318 | - | let | |
2319 | - | if ((size( | |
2318 | + | @Callable(gL) | |
2319 | + | func unstakeLand (jp) = { | |
2320 | + | let lm = li(gL) | |
2321 | + | if ((size(gL.payments) != 0)) | |
2320 | 2322 | then throw("No payments required") | |
2321 | 2323 | else { | |
2322 | - | let | |
2323 | - | let | |
2324 | - | let | |
2325 | - | let | |
2326 | - | let | |
2327 | - | let | |
2328 | - | let | |
2329 | - | let | |
2330 | - | let | |
2331 | - | let | |
2332 | - | let | |
2333 | - | let | |
2334 | - | let | |
2335 | - | let | |
2336 | - | let | |
2337 | - | if (!(isDefined( | |
2338 | - | then throw(("Your staked lands don't contain " + | |
2324 | + | let d = toString(gL.caller) | |
2325 | + | let gb = jn(d, eB, jp) | |
2326 | + | let Q = gb._2 | |
2327 | + | let jx = gb._3 | |
2328 | + | let kQ = dv(d) | |
2329 | + | let gH = gN(jx[dk]) | |
2330 | + | let jj = dI(jx[dj]) | |
2331 | + | let ia = (jj / cG) | |
2332 | + | let fc = gM(gH, ia, -1) | |
2333 | + | let lp = dt(jx[dl]) | |
2334 | + | let kU = split(valueOrElse(getString(lp), "0_0_0_0_0_0"), "_") | |
2335 | + | let lq = makeString(gF(kU, gH, ia, -1), "_") | |
2336 | + | let jU = jK(d, Q, jj, eB) | |
2337 | + | let kN = split_51C(valueOrElse(getString(kQ), ""), "_") | |
2338 | + | let db = indexOf(kN, Q) | |
2339 | + | if (!(isDefined(db))) | |
2340 | + | then throw(("Your staked lands don't contain " + Q)) | |
2339 | 2341 | else { | |
2340 | - | let | |
2341 | - | let | |
2342 | - | if (( | |
2343 | - | then throw(("Your gWL are taking part in voting, cannot unstake until " + toString( | |
2342 | + | let ay = lastBlock.timestamp | |
2343 | + | let lt = valueOrElse(getInteger(de, bL(d)), 0) | |
2344 | + | if ((lt >= ay)) | |
2345 | + | then throw(("Your gWL are taking part in voting, cannot unstake until " + toString(lt))) | |
2344 | 2346 | else { | |
2345 | - | let | |
2346 | - | if (( | |
2347 | - | then throw(("Your staked lands took part in arbitrage, cannot unstake until " + toString( | |
2347 | + | let lu = (valueOrElse(getInteger(df, c(d)), 0) + cC) | |
2348 | + | if ((lu > ay)) | |
2349 | + | then throw(("Your staked lands took part in arbitrage, cannot unstake until " + toString(lu))) | |
2348 | 2350 | else { | |
2349 | - | let | |
2350 | - | let | |
2351 | - | let | |
2351 | + | let kX = dw(d) | |
2352 | + | let kY = valueOrElse(getInteger(kX), 0) | |
2353 | + | let lv = if ((jj > kY)) | |
2352 | 2354 | then 0 | |
2353 | - | else ( | |
2354 | - | let | |
2355 | - | $Tuple2(([ScriptTransfer( | |
2356 | - | then StringEntry( | |
2357 | - | else DeleteEntry( | |
2355 | + | else (kY - jj) | |
2356 | + | let ls = invoke(df, "onStakeUnstakeLand", [d], nil) | |
2357 | + | $Tuple2(([ScriptTransfer(gL.caller, 1, fromBase58String(Q)), DeleteEntry(bs(Q)), DeleteEntry(bv(aD, Q, d)), StringEntry(ds(), fc), StringEntry(lp, lq), StringEntry(jU._2, makeString(jU._3, ":")), if ((size(kN) > 1)) | |
2358 | + | then StringEntry(kQ, makeString_11C(removeByIndex(kN, value(db)), "_")) | |
2359 | + | else DeleteEntry(kQ), IntegerEntry(kX, lv)] ++ lm), ls) | |
2358 | 2360 | } | |
2359 | 2361 | } | |
2360 | 2362 | } | |
2361 | 2363 | } | |
2362 | 2364 | } | |
2363 | 2365 | ||
2364 | 2366 | ||
2365 | 2367 | ||
2366 | - | @Callable( | |
2368 | + | @Callable(gL) | |
2367 | 2369 | func stakeDuck () = { | |
2368 | - | let | |
2369 | - | if ((size( | |
2370 | + | let lm = li(gL) | |
2371 | + | if ((size(gL.payments) != 1)) | |
2370 | 2372 | then throw("Exactly one payment required") | |
2371 | 2373 | else { | |
2372 | - | let | |
2373 | - | let | |
2374 | - | let | |
2375 | - | if (( | |
2376 | - | then throw((("NFT " + | |
2374 | + | let ln = value(gL.payments[0]) | |
2375 | + | let bq = value(ln.assetId) | |
2376 | + | let cN = toString(gL.caller) | |
2377 | + | if ((ln.amount != 1)) | |
2378 | + | then throw((("NFT " + aE) + " token should be attached as payment")) | |
2377 | 2379 | else { | |
2378 | - | let | |
2379 | - | if (if (( | |
2380 | - | then ( | |
2380 | + | let jt = value(assetInfo(bq)) | |
2381 | + | if (if ((jt.issuer != dY)) | |
2382 | + | then (jt.issuer != dZ) | |
2381 | 2383 | else false) | |
2382 | - | then throw((("Unknown issuer of " + | |
2383 | - | else if (!(contains( | |
2384 | - | then throw((("Only NFT " + | |
2384 | + | then throw((("Unknown issuer of " + aE) + " token")) | |
2385 | + | else if (!(contains(jt.name, aE))) | |
2386 | + | then throw((("Only NFT " + aE) + " tokens are accepted")) | |
2385 | 2387 | else { | |
2386 | - | let | |
2387 | - | let | |
2388 | - | if (isDefined(getInteger( | |
2389 | - | then throw((("NFT " + | |
2390 | - | else if (isDefined(getString( | |
2391 | - | then throw(("You already staked one duck: " + | |
2388 | + | let lw = toBase58String(bq) | |
2389 | + | let ju = bs(lw) | |
2390 | + | if (isDefined(getInteger(ju))) | |
2391 | + | then throw((("NFT " + jt.name) + " is already staked")) | |
2392 | + | else if (isDefined(getString(bI(cN)))) | |
2393 | + | then throw(("You already staked one duck: " + jt.name)) | |
2392 | 2394 | else { | |
2393 | - | let | |
2394 | - | let | |
2395 | - | let | |
2396 | - | let | |
2397 | - | let | |
2398 | - | let | |
2399 | - | let | |
2400 | - | ([IntegerEntry( | |
2395 | + | let lg = bK(lw) | |
2396 | + | let ce = getString(lg) | |
2397 | + | let hM = bJ(lw) | |
2398 | + | let lx = getString(hM) | |
2399 | + | let jc = A(lw) | |
2400 | + | let jd = ah(valueOrElse(getInteger(E(lw)), 0)) | |
2401 | + | let kv = valueOrElse(getInteger(jc), jd) | |
2402 | + | ([IntegerEntry(ju, lastBlock.timestamp), IntegerEntry(bv(aE, toBase58String(bq), cN), lastBlock.timestamp), StringEntry(bH(lw), cN), StringEntry(bI(cN), lw)] ++ (if (isDefined(ce)) | |
2401 | 2403 | then nil | |
2402 | - | else ([StringEntry( | |
2404 | + | else ([StringEntry(lg, aK)] ++ (if (isDefined(lx)) | |
2403 | 2405 | then nil | |
2404 | - | else (([StringEntry( | |
2406 | + | else (([StringEntry(hM, "0:0_0_0_0_0_0:0_0_0_0_0_0:")] :+ IntegerEntry(jc, kv)) ++ lm))))) | |
2405 | 2407 | } | |
2406 | 2408 | } | |
2407 | 2409 | } | |
2408 | 2410 | } | |
2409 | 2411 | } | |
2410 | 2412 | ||
2411 | 2413 | ||
2412 | 2414 | ||
2413 | - | @Callable( | |
2414 | - | func unstakeDuck ( | |
2415 | - | let | |
2416 | - | if ((size( | |
2415 | + | @Callable(gL) | |
2416 | + | func unstakeDuck (lw) = { | |
2417 | + | let lm = li(gL) | |
2418 | + | if ((size(gL.payments) != 0)) | |
2417 | 2419 | then throw("No payments required") | |
2418 | 2420 | else { | |
2419 | - | let | |
2420 | - | let | |
2421 | - | let | |
2422 | - | let | |
2423 | - | if (!(isDefined(getInteger( | |
2424 | - | then throw((("NFT " + | |
2425 | - | else if (!(isDefined(getString( | |
2426 | - | then throw((("The duck " + | |
2421 | + | let bq = fromBase58String(lw) | |
2422 | + | let cN = toString(gL.caller) | |
2423 | + | let jt = value(assetInfo(bq)) | |
2424 | + | let ju = bs(lw) | |
2425 | + | if (!(isDefined(getInteger(ju)))) | |
2426 | + | then throw((("NFT " + jt.name) + " is not staked")) | |
2427 | + | else if (!(isDefined(getString(bI(cN))))) | |
2428 | + | then throw((("The duck " + jt.name) + " is not staked")) | |
2427 | 2429 | else { | |
2428 | - | let | |
2429 | - | if (( | |
2430 | + | let jw = valueOrErrorMessage(getString(bH(lw)), (("NFT " + jt.name) + " is orphaned")) | |
2431 | + | if ((jw != cN)) | |
2430 | 2432 | then throw("Staked NFT is not yours") | |
2431 | - | else if ( | |
2433 | + | else if (kq(lw)) | |
2432 | 2434 | then throw("unstakeDuck_checkTournament") | |
2433 | - | else if ( | |
2435 | + | else if (kr(lw)) | |
2434 | 2436 | then throw("unstakeDuck_checkDelivery") | |
2435 | 2437 | else { | |
2436 | - | let | |
2437 | - | let | |
2438 | - | let | |
2439 | - | if (( | |
2440 | - | then throw((("Please heal your duck to " + toString( | |
2441 | - | else ([ScriptTransfer( | |
2438 | + | let jc = A(lw) | |
2439 | + | let jd = ah(valueOrElse(getInteger(E(lw)), 0)) | |
2440 | + | let at = valueOrElse(getInteger(jc), jd) | |
2441 | + | if ((jd > at)) | |
2442 | + | then throw((("Please heal your duck to " + toString(jd)) + "hp before unstaking")) | |
2443 | + | else ([ScriptTransfer(gL.caller, 1, bq), DeleteEntry(ju), DeleteEntry(jc), DeleteEntry(bK(lw)), DeleteEntry(bH(lw)), DeleteEntry(bv(aE, lw, cN)), DeleteEntry(bI(cN))] ++ lm) | |
2442 | 2444 | } | |
2443 | 2445 | } | |
2444 | 2446 | } | |
2445 | 2447 | } | |
2446 | 2448 | ||
2447 | 2449 | ||
2448 | 2450 | ||
2449 | - | @Callable( | |
2450 | - | func claimRes ( | |
2451 | - | let | |
2452 | - | if ((size( | |
2451 | + | @Callable(gL) | |
2452 | + | func claimRes (eJ,ly) = { | |
2453 | + | let lm = li(gL) | |
2454 | + | if ((size(gL.payments) != 0)) | |
2453 | 2455 | then throw("No payments required") | |
2454 | 2456 | else { | |
2455 | - | let | |
2456 | - | let | |
2457 | - | let | |
2458 | - | $Tuple2((((( | |
2459 | - | } | |
2460 | - | } | |
2461 | - | ||
2462 | - | ||
2463 | - | ||
2464 | - | @Callable( | |
2465 | - | func claimResToWH ( | |
2466 | - | let | |
2467 | - | if ((size( | |
2457 | + | let d = toString(gL.originCaller) | |
2458 | + | let fk = jy(d, eJ, eB, ly) | |
2459 | + | let B = valueOrErrorMessage(getString(bI(d)), "You don't have a duck staked") | |
2460 | + | $Tuple2(((((fk._1 ++ ka(B, fraction(V, eJ, cF))._1) :+ StringEntry(fk._2, makeString(fk._3, ":"))) :+ StringEntry(fk._4, makeString(fk._5, ":"))) ++ lm), fk._3[bj]) | |
2461 | + | } | |
2462 | + | } | |
2463 | + | ||
2464 | + | ||
2465 | + | ||
2466 | + | @Callable(gL) | |
2467 | + | func claimResToWH (eJ,ly) = { | |
2468 | + | let lm = li(gL) | |
2469 | + | if ((size(gL.payments) != 0)) | |
2468 | 2470 | then throw("No payments required") | |
2469 | 2471 | else { | |
2470 | - | let | |
2471 | - | let | |
2472 | - | $Tuple2((((( | |
2473 | - | } | |
2474 | - | } | |
2475 | - | ||
2476 | - | ||
2477 | - | ||
2478 | - | @Callable( | |
2479 | - | func flight ( | |
2480 | - | let | |
2481 | - | if ((size( | |
2472 | + | let d = toString(gL.originCaller) | |
2473 | + | let fk = jy(d, eJ, eA, ly) | |
2474 | + | $Tuple2(((((fk._1 ++ kg(d, fraction(V, eJ, cF))._1) :+ StringEntry(fk._2, makeString(fk._3, ":"))) :+ StringEntry(fk._4, makeString(fk._5, ":"))) ++ lm), fk._5[ba]) | |
2475 | + | } | |
2476 | + | } | |
2477 | + | ||
2478 | + | ||
2479 | + | ||
2480 | + | @Callable(gL) | |
2481 | + | func flight (iR,iS) = { | |
2482 | + | let lm = lj(gL) | |
2483 | + | if ((size(gL.payments) != 0)) | |
2482 | 2484 | then throw("No payments required") | |
2483 | 2485 | else { | |
2484 | - | let | |
2485 | - | let | |
2486 | - | let | |
2487 | - | let | |
2488 | - | let | |
2489 | - | let | |
2490 | - | let | |
2491 | - | if (( | |
2486 | + | let bM = toString(gL.caller) | |
2487 | + | let hq = iQ(bM, iR, iS) | |
2488 | + | let iW = hq._1 | |
2489 | + | let B = hq._2 | |
2490 | + | let lg = bK(B) | |
2491 | + | let jr = valueOrElse(getString(lg), aK) | |
2492 | + | let iY = hq._4 | |
2493 | + | if ((iY == jr)) | |
2492 | 2494 | then throw("You can't fly to the same location") | |
2493 | 2495 | else { | |
2494 | - | let | |
2495 | - | let | |
2496 | - | let | |
2497 | - | let | |
2498 | - | let | |
2499 | - | let | |
2500 | - | let | |
2501 | - | let | |
2502 | - | let | |
2503 | - | then if (!( | |
2504 | - | then | |
2505 | - | else if (( | |
2506 | - | then $Tuple2( | |
2507 | - | else $Tuple2( | |
2508 | - | else if ( | |
2509 | - | then if (!( | |
2496 | + | let cs = split(iY, "_") | |
2497 | + | let lz = (cs[bn] == "T") | |
2498 | + | let lA = (cs[bn] == "D") | |
2499 | + | let gy = G(B) | |
2500 | + | let lB = valueOrElse(getString(gy), ",;,_,;,_,;,_,;,_,;,_,;,") | |
2501 | + | let lC = fl(lB, hq._5) | |
2502 | + | let lD = lC._1 | |
2503 | + | let lE = lC._2 | |
2504 | + | let lF = if (!(cn(dg, jr))) | |
2505 | + | then if (!(cl(iY))) | |
2506 | + | then cq(jr, iY, 5) | |
2507 | + | else if ((iW > 0)) | |
2508 | + | then $Tuple2(iY, iW) | |
2509 | + | else $Tuple2(jr, 0) | |
2510 | + | else if (cd(dg, jr)) | |
2511 | + | then if (!(cd(dg, iY))) | |
2510 | 2512 | then throw("Your duck is taking part in the tournament") | |
2511 | 2513 | else { | |
2512 | - | let | |
2513 | - | let | |
2514 | - | let | |
2515 | - | if (( | |
2516 | - | then | |
2517 | - | else if (( | |
2514 | + | let lG = parseIntValue(cs[bo]) | |
2515 | + | let lH = split(jr, "_") | |
2516 | + | let cf = valueOrElse(getInteger(dg, bQ), 0) | |
2517 | + | if ((lG != (parseIntValue(lH[bo]) + 1))) | |
2518 | + | then cq(jr, iY, 7) | |
2519 | + | else if ((iW > 0)) | |
2518 | 2520 | then { | |
2519 | - | let | |
2520 | - | let | |
2521 | - | then invoke( | |
2521 | + | let lI = valueOrElse(getInteger(dg, bU(cf, B)), 0) | |
2522 | + | let lJ = if ((lG > lI)) | |
2523 | + | then invoke(dg, "saveDuckResult", [B, lG], nil) | |
2522 | 2524 | else unit | |
2523 | - | if (( | |
2524 | - | then $Tuple2( | |
2525 | + | if ((lJ == lJ)) | |
2526 | + | then $Tuple2(iY, iW) | |
2525 | 2527 | else throw("Strict value is not equal to itself.") | |
2526 | 2528 | } | |
2527 | - | else $Tuple2( | |
2529 | + | else $Tuple2(jr, 0) | |
2528 | 2530 | } | |
2529 | - | else if (!( | |
2531 | + | else if (!(ci(jr))) | |
2530 | 2532 | then { | |
2531 | - | let | |
2532 | - | if (( | |
2533 | - | then if ( | |
2534 | - | then | |
2535 | - | else if (( | |
2536 | - | then $Tuple2( | |
2537 | - | else $Tuple2( | |
2533 | + | let lK = dF(invoke(this, "autoExitDelivery", [B, iW], nil)) | |
2534 | + | if ((lK == lK)) | |
2535 | + | then if (lA) | |
2536 | + | then lK | |
2537 | + | else if ((iW > 0)) | |
2538 | + | then $Tuple2(iY, iW) | |
2539 | + | else $Tuple2(lK._1, 0) | |
2538 | 2540 | else throw("Strict value is not equal to itself.") | |
2539 | 2541 | } | |
2540 | - | else if (!( | |
2542 | + | else if (!(lA)) | |
2541 | 2543 | then throw("Your duck is taking part in delivery") | |
2542 | - | else if (!( | |
2543 | - | then | |
2544 | + | else if (!(ci(iY))) | |
2545 | + | then cq(jr, iY, 13) | |
2544 | 2546 | else { | |
2545 | - | let | |
2546 | - | let | |
2547 | - | if (( | |
2548 | - | then | |
2549 | - | else if (if (( | |
2550 | - | then (3 > | |
2547 | + | let lG = parseIntValue(cs[bo]) | |
2548 | + | let lH = split(jr, "_") | |
2549 | + | if ((lG != (parseIntValue(lH[bo]) + 1))) | |
2550 | + | then cq(jr, iY, 14) | |
2551 | + | else if (if ((iW > 0)) | |
2552 | + | then (3 > lG) | |
2551 | 2553 | else false) | |
2552 | - | then $Tuple2( | |
2554 | + | then $Tuple2(iY, iW) | |
2553 | 2555 | else { | |
2554 | - | let | |
2555 | - | if (( | |
2556 | - | then | |
2556 | + | let lK = dF(invoke(this, "autoExitDelivery", [B, iW], nil)) | |
2557 | + | if ((lK == lK)) | |
2558 | + | then lK | |
2557 | 2559 | else throw("Strict value is not equal to itself.") | |
2558 | 2560 | } | |
2559 | 2561 | } | |
2560 | - | let | |
2561 | - | let | |
2562 | - | $Tuple2(((([StringEntry( | |
2563 | - | then [StringEntry( | |
2564 | - | else nil)) ++ | |
2565 | - | then | |
2566 | - | else | |
2562 | + | let lL = lF._1 | |
2563 | + | let lM = lF._2 | |
2564 | + | $Tuple2(((([StringEntry(lg, lL), StringEntry(gy, lD), IntegerEntry(A(B), iW)] ++ lm) ++ (if (lE) | |
2565 | + | then [StringEntry(M(B), "0_0_0_0_0")] | |
2566 | + | else nil)) ++ ka(B, if ((iW > 0)) | |
2567 | + | then W | |
2568 | + | else X)._1), hq._3) | |
2567 | 2569 | } | |
2568 | 2570 | } | |
2569 | 2571 | } | |
2570 | 2572 | ||
2571 | 2573 | ||
2572 | 2574 | ||
2573 | - | @Callable(gK) | |
2574 | - | func heal (lM,lN,lO) = { | |
2575 | - | let ll = lh(gK) | |
2576 | - | if (if (if ((0 > lM)) | |
2577 | - | then true | |
2578 | - | else (0 > lN)) | |
2575 | + | @Callable(gL) | |
2576 | + | func heal (lN,lO,lP) = { | |
2577 | + | let lm = li(gL) | |
2578 | + | if (if (if ((0 > lN)) | |
2579 | 2579 | then true | |
2580 | 2580 | else (0 > lO)) | |
2581 | + | then true | |
2582 | + | else (0 > lP)) | |
2581 | 2583 | then throw("Quantity cannot be negative") | |
2582 | 2584 | else { | |
2583 | - | let | |
2584 | - | if ( | |
2585 | + | let B = valueOrErrorMessage(getString(bI(toString(gL.caller))), "You don't have a duck staked") | |
2586 | + | if (kq(B)) | |
2585 | 2587 | then throw("heal_checkTournament") | |
2586 | - | else if ( | |
2588 | + | else if (kr(B)) | |
2587 | 2589 | then throw("heal_checkDelivery") | |
2588 | 2590 | else { | |
2589 | - | let | |
2590 | - | let | |
2591 | - | let | |
2592 | - | let | |
2593 | - | if (( | |
2594 | - | then throw((("HP should be < " + toString( | |
2591 | + | let lQ = [lN, lO, lP] | |
2592 | + | let jc = A(B) | |
2593 | + | let jd = ah(valueOrElse(getInteger(E(B)), 0)) | |
2594 | + | let lR = valueOrElse(getInteger(jc), jd) | |
2595 | + | if ((lR >= jd)) | |
2596 | + | then throw((("HP should be < " + toString(jd)) + " to heal")) | |
2595 | 2597 | else { | |
2596 | - | let | |
2597 | - | let | |
2598 | - | let | |
2598 | + | let hM = bJ(B) | |
2599 | + | let ip = hL(hM) | |
2600 | + | let lS = if ((ip[bl] == "")) | |
2599 | 2601 | then nil | |
2600 | - | else split_4C( | |
2601 | - | func | |
2602 | - | let | |
2603 | - | let | |
2604 | - | then parseIntValue( | |
2602 | + | else split_4C(ip[bl], "_") | |
2603 | + | func lT (eS,cp) = { | |
2604 | + | let dB = eS._2 | |
2605 | + | let hh = if ((size(lS) > dB)) | |
2606 | + | then parseIntValue(lS[dB]) | |
2605 | 2607 | else 0 | |
2606 | - | if ((3 > | |
2608 | + | if ((3 > dB)) | |
2607 | 2609 | then { | |
2608 | - | let | |
2609 | - | if (( | |
2610 | - | then throw(((("You have only " + toString( | |
2611 | - | else $Tuple3(( | |
2610 | + | let lU = lQ[dB] | |
2611 | + | if ((lU > hh)) | |
2612 | + | then throw(((("You have only " + toString(hh)) + " of ") + aP[dB])) | |
2613 | + | else $Tuple3((eS._1 :+ toString((hh - lU))), (dB + 1), (eS._3 + (parseIntValue(split(cp, "_")[aV]) * lU))) | |
2612 | 2614 | } | |
2613 | - | else $Tuple3(( | |
2615 | + | else $Tuple3((eS._1 :+ toString(hh)), (dB + 1), eS._3) | |
2614 | 2616 | } | |
2615 | 2617 | ||
2616 | - | let | |
2617 | - | let | |
2618 | - | let | |
2619 | - | let | |
2620 | - | func | |
2621 | - | then | |
2622 | - | else | |
2623 | - | ||
2624 | - | func | |
2625 | - | then | |
2618 | + | let fk = { | |
2619 | + | let eU = aT | |
2620 | + | let eV = size(eU) | |
2621 | + | let eW = $Tuple3(nil, 0, 0) | |
2622 | + | func eX (eY,eZ) = if ((eZ >= eV)) | |
2623 | + | then eY | |
2624 | + | else lT(eY, eU[eZ]) | |
2625 | + | ||
2626 | + | func fa (eY,eZ) = if ((eZ >= eV)) | |
2627 | + | then eY | |
2626 | 2628 | else throw("List size exceeds 50") | |
2627 | 2629 | ||
2628 | - | | |
2630 | + | fa(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eW, 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) | |
2629 | 2631 | } | |
2630 | - | let | |
2631 | - | $Tuple2((([IntegerEntry( | |
2632 | + | let lV = min([jd, (lR + fk._3)]) | |
2633 | + | $Tuple2((([IntegerEntry(jc, lV), StringEntry(hM, makeString_2C([ip[bi], ip[bj], ip[bk], makeString(fk._1, "_")], ":"))] ++ lm) ++ ka(B, (ae * ((lN + lO) + lP)))._1), lV) | |
2632 | 2634 | } | |
2633 | 2635 | } | |
2634 | 2636 | } | |
2635 | 2637 | } | |
2636 | 2638 | ||
2637 | 2639 | ||
2638 | 2640 | ||
2639 | - | @Callable( | |
2641 | + | @Callable(gL) | |
2640 | 2642 | func healES () = { | |
2641 | - | let | |
2642 | - | if ((size( | |
2643 | + | let lm = li(gL) | |
2644 | + | if ((size(gL.payments) != 1)) | |
2643 | 2645 | then throw("Exactly one payment required") | |
2644 | 2646 | else { | |
2645 | - | let | |
2646 | - | if (( | |
2647 | + | let ln = value(gL.payments[0]) | |
2648 | + | if ((ln.assetId != cy)) | |
2647 | 2649 | then throw("Allowed USDT payment only!") | |
2648 | 2650 | else { | |
2649 | - | let | |
2650 | - | if ( | |
2651 | + | let B = valueOrErrorMessage(getString(bI(toString(gL.caller))), "You don't have a duck staked") | |
2652 | + | if (kq(B)) | |
2651 | 2653 | then throw("healES_checkTournament") | |
2652 | - | else if ( | |
2654 | + | else if (kr(B)) | |
2653 | 2655 | then throw("healES_checkDelivery") | |
2654 | 2656 | else { | |
2655 | - | let | |
2656 | - | let | |
2657 | - | let | |
2658 | - | if (( | |
2657 | + | let jc = A(B) | |
2658 | + | let jd = ah(valueOrElse(getInteger(E(B)), 0)) | |
2659 | + | let lR = valueOrElse(getInteger(jc), jd) | |
2660 | + | if ((lR > 0)) | |
2659 | 2661 | then throw("HP should be 0 to call Emergency Service") | |
2660 | 2662 | else { | |
2661 | - | let | |
2662 | - | let | |
2663 | - | let | |
2663 | + | let hM = bJ(B) | |
2664 | + | let ip = hL(hM) | |
2665 | + | let lS = if ((ip[bl] == "")) | |
2664 | 2666 | then nil | |
2665 | - | else split_4C( | |
2666 | - | let | |
2667 | - | then parseIntValue( | |
2667 | + | else split_4C(ip[bl], "_") | |
2668 | + | let lW = if ((size(lS) > 0)) | |
2669 | + | then parseIntValue(lS[0]) | |
2668 | 2670 | else 0 | |
2669 | - | let | |
2670 | - | then parseIntValue( | |
2671 | + | let lX = if ((size(lS) > 1)) | |
2672 | + | then parseIntValue(lS[1]) | |
2671 | 2673 | else 0 | |
2672 | - | let | |
2673 | - | then parseIntValue( | |
2674 | + | let lY = if ((size(lS) > 2)) | |
2675 | + | then parseIntValue(lS[2]) | |
2674 | 2676 | else 0 | |
2675 | - | if (if (if ((lV > 0)) | |
2676 | - | then true | |
2677 | - | else (lW > 0)) | |
2677 | + | if (if (if ((lW > 0)) | |
2678 | 2678 | then true | |
2679 | 2679 | else (lX > 0)) | |
2680 | + | then true | |
2681 | + | else (lY > 0)) | |
2680 | 2682 | then throw("You have to use own Medical Kit") | |
2681 | 2683 | else { | |
2682 | - | let | |
2683 | - | let | |
2684 | - | then split_4C(value( | |
2684 | + | let lZ = getString(dd, bN()) | |
2685 | + | let ma = if (isDefined(lZ)) | |
2686 | + | then split_4C(value(lZ), "_") | |
2685 | 2687 | else nil | |
2686 | - | let | |
2687 | - | then parseIntValue( | |
2688 | + | let mb = if ((size(ma) > 0)) | |
2689 | + | then parseIntValue(ma[0]) | |
2688 | 2690 | else 0 | |
2689 | - | if ((0 >= | |
2691 | + | if ((0 >= mb)) | |
2690 | 2692 | then throw("There are no Medical Kits L1 at Emergency Service storage") | |
2691 | 2693 | else { | |
2692 | - | let | |
2693 | - | let | |
2694 | - | let | |
2695 | - | let | |
2696 | - | let | |
2697 | - | if (( | |
2698 | - | then throw(("Payment attached should be " + toString( | |
2694 | + | let lV = (lR + parseIntValue(split(aT[0], "_")[aV])) | |
2695 | + | let mc = makeString([toString((mb - 1)), removeByIndex(ma, 0)], "_") | |
2696 | + | let cp = split(aT[0], "_") | |
2697 | + | let md = co(cp) | |
2698 | + | let me = fraction((md * aM), aL, (cF * aY)) | |
2699 | + | if ((ln.amount != me)) | |
2700 | + | then throw(("Payment attached should be " + toString(me))) | |
2699 | 2701 | else { | |
2700 | - | let | |
2701 | - | $Tuple2((( | |
2702 | + | let fk = dx(invoke(dd, "updateEsStorage", [mc], [AttachedPayment(cy, me)])) | |
2703 | + | $Tuple2(((lm :+ IntegerEntry(jc, lV)) ++ ka(B, Y)._1), fk) | |
2702 | 2704 | } | |
2703 | 2705 | } | |
2704 | 2706 | } | |
2705 | 2707 | } | |
2706 | 2708 | } | |
2707 | 2709 | } | |
2708 | 2710 | } | |
2709 | 2711 | } | |
2710 | 2712 | ||
2711 | 2713 | ||
2712 | 2714 | ||
2713 | - | @Callable( | |
2714 | - | func updateBackpack ( | |
2715 | + | @Callable(gL) | |
2716 | + | func updateBackpack (B,mf) = if ((gL.caller != dd)) | |
2715 | 2717 | then throw("permission denied") | |
2716 | - | else $Tuple2([StringEntry( | |
2717 | - | ||
2718 | - | ||
2719 | - | ||
2720 | - | @Callable( | |
2718 | + | else $Tuple2([StringEntry(bJ(B), mf)], mf) | |
2719 | + | ||
2720 | + | ||
2721 | + | ||
2722 | + | @Callable(gL) | |
2721 | 2723 | func commitForRandom () = { | |
2722 | - | let | |
2723 | - | let | |
2724 | - | let | |
2725 | - | $Tuple2(([IntegerEntry( | |
2726 | - | } | |
2727 | - | ||
2728 | - | ||
2729 | - | ||
2730 | - | @Callable( | |
2724 | + | let lm = li(gL) | |
2725 | + | let mg = (height + dq) | |
2726 | + | let d = toString(gL.caller) | |
2727 | + | $Tuple2(([IntegerEntry(dr(d), mg)] ++ lm), mg) | |
2728 | + | } | |
2729 | + | ||
2730 | + | ||
2731 | + | ||
2732 | + | @Callable(gL) | |
2731 | 2733 | func buySLand () = { | |
2732 | - | let | |
2733 | - | if ((size( | |
2734 | + | let lm = li(gL) | |
2735 | + | if ((size(gL.payments) != 1)) | |
2734 | 2736 | then throw("Exactly one payment required") | |
2735 | 2737 | else { | |
2736 | - | let | |
2737 | - | if (( | |
2738 | + | let ln = value(gL.payments[0]) | |
2739 | + | if ((ln.assetId != cy)) | |
2738 | 2740 | then throw("Allowed USDT payment only!") | |
2739 | - | else if (( | |
2740 | - | then throw(("Payment attached should be " + toString( | |
2741 | + | else if ((ln.amount != eh)) | |
2742 | + | then throw(("Payment attached should be " + toString(eh))) | |
2741 | 2743 | else { | |
2742 | - | let | |
2743 | - | let | |
2744 | - | $Tuple2(((( | |
2744 | + | let fk = iJ(gL.caller, gL.transactionId) | |
2745 | + | let mh = dA(invoke(dh, "burnAcres", [ei], nil)) | |
2746 | + | $Tuple2((((fk._1 :+ ScriptTransfer(dd, ln.amount, cy)) ++ kg(toString(gL.caller), aa)._1) ++ lm), $Tuple2(fk._2._1, mh)) | |
2745 | 2747 | } | |
2746 | 2748 | } | |
2747 | 2749 | } | |
2748 | 2750 | ||
2749 | 2751 | ||
2750 | 2752 | ||
2751 | - | @Callable( | |
2752 | - | func expedition ( | |
2753 | - | let | |
2754 | - | if ((size( | |
2753 | + | @Callable(gL) | |
2754 | + | func expedition (iR,iS) = { | |
2755 | + | let lm = li(gL) | |
2756 | + | if ((size(gL.payments) != 0)) | |
2755 | 2757 | then throw("No payments required") | |
2756 | 2758 | else { | |
2757 | - | let | |
2758 | - | let | |
2759 | - | let | |
2760 | - | let | |
2761 | - | let | |
2762 | - | let | |
2763 | - | let | |
2764 | - | let | |
2765 | - | let | |
2766 | - | let | |
2767 | - | let | |
2768 | - | let | |
2769 | - | let | |
2770 | - | let | |
2771 | - | let | |
2772 | - | let | |
2773 | - | then $Tuple3([IntegerEntry( | |
2774 | - | else $Tuple3(( | |
2775 | - | then [StringEntry( | |
2776 | - | else ((((nil :+ StringEntry( | |
2777 | - | if ( | |
2759 | + | let bM = toString(gL.caller) | |
2760 | + | let hq = iQ(bM, iR, iS) | |
2761 | + | let B = hq._2 | |
2762 | + | let jc = A(B) | |
2763 | + | let hM = bJ(B) | |
2764 | + | let ip = hL(hM) | |
2765 | + | let jR = split(ip[bk], "_") | |
2766 | + | let jT = makeString(fe(true, jR, eg), "_") | |
2767 | + | let gy = G(B) | |
2768 | + | let lB = valueOrElse(getString(gy), ",;,_,;,_,;,_,;,_,;,_,;,") | |
2769 | + | let mi = fl(lB, hq._5) | |
2770 | + | let lD = mi._1 | |
2771 | + | let lE = mi._2 | |
2772 | + | let mj = iJ(gL.caller, gL.transactionId) | |
2773 | + | let iP = mj._2._1 | |
2774 | + | let fk = if ((0 >= hq._1)) | |
2775 | + | then $Tuple3([IntegerEntry(jc, 0), StringEntry(gy, lD)], "", 0) | |
2776 | + | else $Tuple3((mj._1 ++ (if (lE) | |
2777 | + | then [StringEntry(M(B), "0_0_0_0_0")] | |
2778 | + | else ((((nil :+ StringEntry(bK(B), makeString([mj._2._2, "L", iP], "_"))) :+ IntegerEntry(jc, hq._1)) :+ StringEntry(gy, lD)) :+ StringEntry(hM, makeString([ip[bi], ip[bj], jT, ip[bl]], ":"))))), iP, hq._3) | |
2779 | + | if (kq(B)) | |
2778 | 2780 | then throw("expedition_checkTournament") | |
2779 | - | else if ( | |
2781 | + | else if (kr(B)) | |
2780 | 2782 | then throw("expedition_checkDelivery") | |
2781 | 2783 | else { | |
2782 | - | let | |
2783 | - | $Tuple2((( | |
2784 | + | let mh = dA(invoke(dh, "burnAcres", [ei], nil)) | |
2785 | + | $Tuple2(((fk._1 ++ ka(B, aa)._1) ++ lm), $Tuple3(fk._2, fk._3, mh)) | |
2784 | 2786 | } | |
2785 | 2787 | } | |
2786 | 2788 | } | |
2787 | 2789 | ||
2788 | 2790 | ||
2789 | 2791 | ||
2790 | - | @Callable( | |
2792 | + | @Callable(gL) | |
2791 | 2793 | func buySLandForAcres () = { | |
2792 | - | let | |
2793 | - | if ((size( | |
2794 | + | let lm = li(gL) | |
2795 | + | if ((size(gL.payments) != 1)) | |
2794 | 2796 | then throw("exactly 1 payment must be attached") | |
2795 | 2797 | else { | |
2796 | - | let | |
2797 | - | let | |
2798 | - | if (if (!(isDefined( | |
2798 | + | let ln = gL.payments[0] | |
2799 | + | let fr = ln.amount | |
2800 | + | if (if (!(isDefined(ln.assetId))) | |
2799 | 2801 | then true | |
2800 | - | else (value( | |
2802 | + | else (value(ln.assetId) != dp)) | |
2801 | 2803 | then throw("ACRES payments only!") | |
2802 | - | else if (( | |
2803 | - | then throw(("Payment attached should be " + toString( | |
2804 | + | else if ((fr != ei)) | |
2805 | + | then throw(("Payment attached should be " + toString(ei))) | |
2804 | 2806 | else { | |
2805 | - | let | |
2806 | - | let | |
2807 | - | $Tuple2((( | |
2807 | + | let fk = iJ(gL.caller, gL.transactionId) | |
2808 | + | let mh = dA(invoke(dh, "burnAcres", [ei], [AttachedPayment(dp, fr)])) | |
2809 | + | $Tuple2(((fk._1 ++ kg(toString(gL.caller), aa)._1) ++ lm), $Tuple2(fk._2._1, mh)) | |
2808 | 2810 | } | |
2809 | 2811 | } | |
2810 | 2812 | } | |
2811 | 2813 | ||
2812 | 2814 | ||
2813 | 2815 | ||
2814 | - | @Callable( | |
2815 | - | func upgradeInfra ( | |
2816 | - | let | |
2817 | - | if ((size( | |
2816 | + | @Callable(gL) | |
2817 | + | func upgradeInfra (Q) = { | |
2818 | + | let lm = li(gL) | |
2819 | + | if ((size(gL.payments) != 0)) | |
2818 | 2820 | then throw("No payments required") | |
2819 | 2821 | else { | |
2820 | - | let | |
2821 | - | let | |
2822 | - | $Tuple2((( | |
2823 | - | } | |
2824 | - | } | |
2825 | - | ||
2826 | - | ||
2827 | - | ||
2828 | - | @Callable( | |
2829 | - | func activateArtifact ( | |
2830 | - | let | |
2831 | - | if ((size( | |
2822 | + | let fk = jL(true, gL.caller, 0, Q) | |
2823 | + | let B = valueOrErrorMessage(getString(bI(toString(gL.caller))), "You don't have a duck staked") | |
2824 | + | $Tuple2(((fk._1 ++ lm) ++ ka(B, fraction(ab, fk._3, cF))._1), fk._2) | |
2825 | + | } | |
2826 | + | } | |
2827 | + | ||
2828 | + | ||
2829 | + | ||
2830 | + | @Callable(gL) | |
2831 | + | func activateArtifact (mk,ml) = { | |
2832 | + | let lm = li(gL) | |
2833 | + | if ((size(gL.payments) != 0)) | |
2832 | 2834 | then throw("No payments required") | |
2833 | 2835 | else { | |
2834 | - | let | |
2835 | - | let | |
2836 | - | let | |
2837 | - | if (("PRESALE" == | |
2838 | - | then | |
2839 | - | else if (("ONBOARD" == | |
2840 | - | then | |
2836 | + | let d = toString(gL.caller) | |
2837 | + | let fk = { | |
2838 | + | let cz = mk | |
2839 | + | if (("PRESALE" == cz)) | |
2840 | + | then ko(d, ml) | |
2841 | + | else if (("ONBOARD" == cz)) | |
2842 | + | then kh(d) | |
2841 | 2843 | else throw("Unknown artifact") | |
2842 | 2844 | } | |
2843 | - | ( | |
2844 | - | } | |
2845 | - | } | |
2846 | - | ||
2847 | - | ||
2848 | - | ||
2849 | - | @Callable( | |
2850 | - | func mergeLands ( | |
2851 | - | let | |
2852 | - | if ((size( | |
2845 | + | (fk ++ lm) | |
2846 | + | } | |
2847 | + | } | |
2848 | + | ||
2849 | + | ||
2850 | + | ||
2851 | + | @Callable(gL) | |
2852 | + | func mergeLands (kF) = { | |
2853 | + | let lm = li(gL) | |
2854 | + | if ((size(gL.payments) != 0)) | |
2853 | 2855 | then throw("No payments required") | |
2854 | 2856 | else { | |
2855 | - | let | |
2856 | - | $Tuple2((( | |
2857 | - | } | |
2858 | - | } | |
2859 | - | ||
2860 | - | ||
2861 | - | ||
2862 | - | @Callable( | |
2863 | - | func cargoExchange ( | |
2864 | - | let | |
2865 | - | if ((size( | |
2857 | + | let fk = ld(toString(gL.caller), kF) | |
2858 | + | $Tuple2(((fk._1 ++ lm) ++ kg(toString(gL.caller), ac)._1), fk._2) | |
2859 | + | } | |
2860 | + | } | |
2861 | + | ||
2862 | + | ||
2863 | + | ||
2864 | + | @Callable(gL) | |
2865 | + | func cargoExchange (mm,Q) = { | |
2866 | + | let lm = li(gL) | |
2867 | + | if ((size(gL.payments) != 0)) | |
2866 | 2868 | then throw("No payments required") | |
2867 | 2869 | else { | |
2868 | - | let | |
2869 | - | let | |
2870 | - | let | |
2871 | - | let | |
2872 | - | if (!(isDefined(getInteger( | |
2873 | - | then throw(( | |
2870 | + | let io = split_4C(mm, ":") | |
2871 | + | let d = toString(gL.originCaller) | |
2872 | + | let jt = value(assetInfo(fromBase58String(Q))) | |
2873 | + | let ju = bs(Q) | |
2874 | + | if (!(isDefined(getInteger(ju)))) | |
2875 | + | then throw((jt.name + " is not staked")) | |
2874 | 2876 | else { | |
2875 | - | let | |
2876 | - | if (( | |
2877 | - | then throw(( | |
2877 | + | let jw = valueOrErrorMessage(getString(bp(Q)), (("NFT " + jt.name) + " is orphaned")) | |
2878 | + | if ((jw != d)) | |
2879 | + | then throw((aD + " is not yours")) | |
2878 | 2880 | else { | |
2879 | - | let | |
2880 | - | let | |
2881 | - | let | |
2882 | - | let | |
2883 | - | let | |
2884 | - | if (( | |
2885 | - | then throw((("Duck location type is " + | |
2886 | - | else if (( | |
2887 | - | then throw(("Duck should be on the land " + | |
2881 | + | let ia = (dI(split(jt.description, "_")[dj]) / cG) | |
2882 | + | let ib = valueOrElse(getInteger(bz(Q)), 0) | |
2883 | + | let B = valueOrErrorMessage(getString(bI(d)), "You don't have a duck staked") | |
2884 | + | let jr = valueOrElse(getString(bK(B)), aK) | |
2885 | + | let cg = split(value(jr), "_") | |
2886 | + | if ((cg[bn] != "L")) | |
2887 | + | then throw((("Duck location type is " + cg[bn]) + ", but should be L")) | |
2888 | + | else if ((cg[bo] != Q)) | |
2889 | + | then throw(("Duck should be on the land " + Q)) | |
2888 | 2890 | else { | |
2889 | - | let | |
2890 | - | let | |
2891 | - | let | |
2892 | - | let | |
2893 | - | let | |
2894 | - | let | |
2895 | - | let | |
2896 | - | let | |
2897 | - | ([StringEntry( | |
2891 | + | let hZ = by(Q) | |
2892 | + | let hQ = hY(hZ, ia, ib) | |
2893 | + | let hM = bJ(B) | |
2894 | + | let ip = hL(hM) | |
2895 | + | let fk = in(io, hQ, ip) | |
2896 | + | let ih = split(hQ[bd], "_") | |
2897 | + | let jI = (parseIntValue(ih[bf]) + fk._7) | |
2898 | + | let jJ = (parseIntValue(ih[bg]) - fk._7) | |
2899 | + | ([StringEntry(hM, makeString_2C([ip[bi], fk._4, fk._5, fk._6], ":")), StringEntry(hZ, makeString_2C([hQ[aZ], fk._1, fk._2, fk._3, makeString([ih[be], toString(jI), toString(jJ), ih[bh]], "_")], ":"))] ++ lm) | |
2898 | 2900 | } | |
2899 | 2901 | } | |
2900 | 2902 | } | |
2901 | 2903 | } | |
2902 | 2904 | } | |
2903 | 2905 | ||
2904 | 2906 | ||
2905 | 2907 | ||
2906 | - | @Callable( | |
2907 | - | func saveWarehouse ( | |
2908 | + | @Callable(gL) | |
2909 | + | func saveWarehouse (id,Q) = if ((gL.caller != dd)) | |
2908 | 2910 | then throw("Access denied") | |
2909 | 2911 | else { | |
2910 | - | let | |
2911 | - | let | |
2912 | - | if ((size( | |
2912 | + | let hZ = by(Q) | |
2913 | + | let ie = split_4C(id, ":") | |
2914 | + | if ((size(ie) != 5)) | |
2913 | 2915 | then throw("warehouse string should contain 4 ':' separators") | |
2914 | 2916 | else { | |
2915 | - | let | |
2916 | - | let | |
2917 | - | let | |
2918 | - | let | |
2919 | - | let | |
2920 | - | $Tuple2([StringEntry( | |
2917 | + | let mn = split(ie[bd], "_")[be] | |
2918 | + | let jI = hP(ie) | |
2919 | + | let mo = hN(ie[aZ]) | |
2920 | + | let jJ = ((mo - parseIntValue(mn)) - jI) | |
2921 | + | let mp = makeString_2C([ie[aZ], ie[ba], ie[bb], ie[bc], makeString([mn, toString(jI), toString(jJ), toString(mo)], "_")], ":") | |
2922 | + | $Tuple2([StringEntry(hZ, mp)], mp) | |
2921 | 2923 | } | |
2922 | 2924 | } | |
2923 | 2925 | ||
2924 | 2926 | ||
2925 | 2927 | ||
2926 | - | @Callable( | |
2927 | - | func fixWarehouseFormat ( | |
2928 | + | @Callable(gL) | |
2929 | + | func fixWarehouseFormat (Q) = if ((gL.caller != dc)) | |
2928 | 2930 | then throw("Access denied") | |
2929 | 2931 | else { | |
2930 | - | let | |
2931 | - | let | |
2932 | - | let | |
2933 | - | let | |
2934 | - | let | |
2935 | - | let | |
2936 | - | let | |
2937 | - | let | |
2938 | - | let | |
2939 | - | let | |
2940 | - | $Tuple2([StringEntry( | |
2932 | + | let hZ = by(Q) | |
2933 | + | let jt = value(assetInfo(fromBase58String(Q))) | |
2934 | + | let ia = (dI(split(jt.description, "_")[dj]) / cG) | |
2935 | + | let ib = valueOrElse(getInteger(bz(Q)), 0) | |
2936 | + | let ie = hY(hZ, ia, ib) | |
2937 | + | let mn = dA(invoke(dd, "recalcLockedVolumeREADONLY", [Q, ie], nil)) | |
2938 | + | let jI = hP(ie) | |
2939 | + | let mo = hN(ie[aZ]) | |
2940 | + | let jJ = ((mo - mn) - jI) | |
2941 | + | let mp = makeString_2C([ie[aZ], ie[ba], ie[bb], ie[bc], makeString([toString(mn), toString(jI), toString(jJ), toString(mo)], "_")], ":") | |
2942 | + | $Tuple2([StringEntry(hZ, mp)], mp) | |
2941 | 2943 | } | |
2942 | 2944 | ||
2943 | 2945 | ||
2944 | 2946 | ||
2945 | - | @Callable( | |
2946 | - | func fixContinentProportions ( | |
2947 | + | @Callable(gL) | |
2948 | + | func fixContinentProportions (kF) = if ((gL.caller != dc)) | |
2947 | 2949 | then throw("Access denied") | |
2948 | 2950 | else { | |
2949 | - | func | |
2950 | - | ||
2951 | - | let | |
2952 | - | let | |
2953 | - | let | |
2954 | - | let | |
2955 | - | func | |
2956 | - | then | |
2957 | - | else | |
2958 | - | ||
2959 | - | func | |
2960 | - | then | |
2951 | + | func mq (eS,mr) = (eS :+ valueOrElse(getString(dt(mr)), "0_0_0_0_0_0")) | |
2952 | + | ||
2953 | + | let gv = { | |
2954 | + | let eU = aQ | |
2955 | + | let eV = size(eU) | |
2956 | + | let eW = nil | |
2957 | + | func eX (eY,eZ) = if ((eZ >= eV)) | |
2958 | + | then eY | |
2959 | + | else mq(eY, eU[eZ]) | |
2960 | + | ||
2961 | + | func fa (eY,eZ) = if ((eZ >= eV)) | |
2962 | + | then eY | |
2961 | 2963 | else throw("List size exceeds 5") | |
2962 | 2964 | ||
2963 | - | | |
2964 | - | } | |
2965 | - | func | |
2966 | - | let | |
2967 | - | let | |
2968 | - | let | |
2969 | - | let | |
2970 | - | let | |
2971 | - | let | |
2972 | - | let | |
2973 | - | let | |
2974 | - | let | |
2975 | - | if (("Americas" == | |
2976 | - | then [ | |
2977 | - | else if (("Europe" == | |
2978 | - | then [ | |
2979 | - | else if (("Asia" == | |
2980 | - | then [ | |
2981 | - | else if (("Africa" == | |
2982 | - | then [ | |
2983 | - | else if (("Oceania" == | |
2984 | - | then [ | |
2965 | + | fa(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5) | |
2966 | + | } | |
2967 | + | func ms (eS,Q) = { | |
2968 | + | let jt = value(assetInfo(fromBase58String(Q))) | |
2969 | + | let jx = split(jt.description, "_") | |
2970 | + | let ia = (dI(jx[dj]) / cG) | |
2971 | + | let mr = jx[dl] | |
2972 | + | let gH = gN(jx[dk]) | |
2973 | + | let hp = value(indexOf(aQ, mr)) | |
2974 | + | let kU = split(eS[hp], "_") | |
2975 | + | let mt = makeString(gF(kU, gH, ia, 1), "_") | |
2976 | + | let cz = mr | |
2977 | + | if (("Americas" == cz)) | |
2978 | + | then [mt, eS[1], eS[2], eS[3], eS[4]] | |
2979 | + | else if (("Europe" == cz)) | |
2980 | + | then [eS[0], mt, eS[2], eS[3], eS[4]] | |
2981 | + | else if (("Asia" == cz)) | |
2982 | + | then [eS[0], eS[1], mt, eS[3], eS[4]] | |
2983 | + | else if (("Africa" == cz)) | |
2984 | + | then [eS[0], eS[1], eS[2], mt, eS[4]] | |
2985 | + | else if (("Oceania" == cz)) | |
2986 | + | then [eS[0], eS[1], eS[2], eS[3], mt] | |
2985 | 2987 | else throw("wrong continent") | |
2986 | 2988 | } | |
2987 | 2989 | ||
2988 | - | let | |
2989 | - | let | |
2990 | - | let | |
2991 | - | let | |
2992 | - | func | |
2993 | - | then | |
2994 | - | else | |
2995 | - | ||
2996 | - | func | |
2997 | - | then | |
2990 | + | let fd = { | |
2991 | + | let eU = kF | |
2992 | + | let eV = size(eU) | |
2993 | + | let eW = gv | |
2994 | + | func hG (eY,eZ) = if ((eZ >= eV)) | |
2995 | + | then eY | |
2996 | + | else ms(eY, eU[eZ]) | |
2997 | + | ||
2998 | + | func hH (eY,eZ) = if ((eZ >= eV)) | |
2999 | + | then eY | |
2998 | 3000 | else throw("List size exceeds 100") | |
2999 | 3001 | ||
3000 | - | hG( | |
3001 | - | } | |
3002 | - | $Tuple2([StringEntry( | |
3002 | + | hH(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(eW, 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) | |
3003 | + | } | |
3004 | + | $Tuple2([StringEntry(dt("Americas"), fd[0]), StringEntry(dt("Europe"), fd[1]), StringEntry(dt("Asia"), fd[2]), StringEntry(dt("Africa"), fd[3]), StringEntry(dt("Oceania"), fd[4])], 0) | |
3003 | 3005 | } | |
3004 | 3006 | ||
3005 | 3007 | ||
3006 | 3008 | ||
3007 | - | @Callable( | |
3008 | - | func fixStakedPieces ( | |
3009 | + | @Callable(gL) | |
3010 | + | func fixStakedPieces (cN) = if ((gL.caller != dc)) | |
3009 | 3011 | then throw("Access denied") | |
3010 | 3012 | else { | |
3011 | - | let | |
3013 | + | let kY = if ((cN == "")) | |
3012 | 3014 | then 0 | |
3013 | 3015 | else { | |
3014 | - | let | |
3015 | - | let | |
3016 | - | then split_51C(value( | |
3016 | + | let kR = getString(ao, dv(cN)) | |
3017 | + | let kN = if (isDefined(kR)) | |
3018 | + | then split_51C(value(kR), "_") | |
3017 | 3019 | else nil | |
3018 | - | func | |
3019 | - | let | |
3020 | - | let | |
3021 | - | ( | |
3020 | + | func mu (eS,Q) = { | |
3021 | + | let jt = value(assetInfo(fromBase58String(Q))) | |
3022 | + | let dJ = split(jt.description, "_")[dj] | |
3023 | + | (eS + dI(dJ)) | |
3022 | 3024 | } | |
3023 | 3025 | ||
3024 | - | let | |
3025 | - | let | |
3026 | - | let | |
3027 | - | func | |
3028 | - | then | |
3029 | - | else | |
3030 | - | ||
3031 | - | func | |
3032 | - | then | |
3026 | + | let eU = kN | |
3027 | + | let eV = size(eU) | |
3028 | + | let eW = 0 | |
3029 | + | func eX (eY,eZ) = if ((eZ >= eV)) | |
3030 | + | then eY | |
3031 | + | else mu(eY, eU[eZ]) | |
3032 | + | ||
3033 | + | func fa (eY,eZ) = if ((eZ >= eV)) | |
3034 | + | then eY | |
3033 | 3035 | else throw("List size exceeds 100") | |
3034 | 3036 | ||
3035 | - | | |
3037 | + | fa(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eW, 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) | |
3036 | 3038 | } | |
3037 | - | $Tuple2([IntegerEntry( | |
3039 | + | $Tuple2([IntegerEntry(dw(cN), kY)], kY) | |
3038 | 3040 | } | |
3039 | 3041 | ||
3040 | 3042 | ||
3041 | 3043 | ||
3042 | - | @Callable( | |
3043 | - | func setCustomName ( | |
3044 | - | let | |
3045 | - | if ((size( | |
3044 | + | @Callable(gL) | |
3045 | + | func setCustomName (bq,kP,bu) = { | |
3046 | + | let lm = li(gL) | |
3047 | + | if ((size(gL.payments) != 1)) | |
3046 | 3048 | then throw("Exactly one payment required") | |
3047 | 3049 | else { | |
3048 | - | let | |
3049 | - | if (( | |
3050 | + | let ln = value(gL.payments[0]) | |
3051 | + | if ((ln.assetId != cy)) | |
3050 | 3052 | then throw("Allowed USDT payment only!") | |
3051 | - | else if (( | |
3052 | - | then throw(("Payment should be " + toString( | |
3053 | - | else if (contains( | |
3054 | - | then throw(("Name should not contain '__': " + | |
3055 | - | else if ((size( | |
3056 | - | then throw(("Name too long, maxLength=" + toString( | |
3053 | + | else if ((ln.amount != ed)) | |
3054 | + | then throw(("Payment should be " + toString(ed))) | |
3055 | + | else if (contains(kP, "__")) | |
3056 | + | then throw(("Name should not contain '__': " + kP)) | |
3057 | + | else if ((size(kP) > ee)) | |
3058 | + | then throw(("Name too long, maxLength=" + toString(ee))) | |
3057 | 3059 | else { | |
3058 | - | let | |
3059 | - | let | |
3060 | - | let | |
3061 | - | if (("ACCOUNT" == | |
3060 | + | let d = toString(gL.originCaller) | |
3061 | + | let mv = { | |
3062 | + | let cz = bu | |
3063 | + | if (("ACCOUNT" == cz)) | |
3062 | 3064 | then { | |
3063 | - | let | |
3064 | - | let | |
3065 | - | if (isDefined( | |
3066 | - | then throw(("Name already registered: " + | |
3065 | + | let mw = ey(kP) | |
3066 | + | let mx = getString(mw) | |
3067 | + | if (isDefined(mx)) | |
3068 | + | then throw(("Name already registered: " + kP)) | |
3067 | 3069 | else { | |
3068 | - | let | |
3069 | - | let | |
3070 | - | let | |
3071 | - | then [DeleteEntry( | |
3070 | + | let my = bC(d) | |
3071 | + | let mz = getString(my) | |
3072 | + | let mA = if (isDefined(mz)) | |
3073 | + | then [DeleteEntry(ey(value(mz)))] | |
3072 | 3074 | else nil | |
3073 | - | ((( | |
3075 | + | (((mA :+ StringEntry(my, kP)) :+ StringEntry(mw, d)) ++ kg(d, Z)._1) | |
3074 | 3076 | } | |
3075 | 3077 | } | |
3076 | - | else if (("LAND" == | |
3078 | + | else if (("LAND" == cz)) | |
3077 | 3079 | then { | |
3078 | - | let | |
3079 | - | let | |
3080 | - | if (!(isDefined(getInteger( | |
3081 | - | then throw(( | |
3080 | + | let jt = value(assetInfo(fromBase58String(bq))) | |
3081 | + | let ju = bs(bq) | |
3082 | + | if (!(isDefined(getInteger(ju)))) | |
3083 | + | then throw((jt.name + " is not staked")) | |
3082 | 3084 | else { | |
3083 | - | let | |
3084 | - | if (( | |
3085 | - | then throw(( | |
3085 | + | let jw = valueOrErrorMessage(getString(bp(bq)), (("NFT " + jt.name) + " is orphaned")) | |
3086 | + | if ((jw != d)) | |
3087 | + | then throw((aD + " is not yours")) | |
3086 | 3088 | else { | |
3087 | - | let | |
3088 | - | let | |
3089 | - | if (isDefined( | |
3090 | - | then throw(("Name already registered: " + | |
3089 | + | let mw = er(kP) | |
3090 | + | let mx = getString(mw) | |
3091 | + | if (isDefined(mx)) | |
3092 | + | then throw(("Name already registered: " + kP)) | |
3091 | 3093 | else { | |
3092 | - | let | |
3093 | - | let | |
3094 | - | let | |
3095 | - | then [DeleteEntry( | |
3094 | + | let mB = br(bq) | |
3095 | + | let mz = getString(mB) | |
3096 | + | let mA = if (isDefined(mz)) | |
3097 | + | then [DeleteEntry(er(value(mz)))] | |
3096 | 3098 | else nil | |
3097 | - | ((( | |
3099 | + | (((mA :+ StringEntry(mB, kP)) :+ StringEntry(mw, bq)) ++ kg(d, Z)._1) | |
3098 | 3100 | } | |
3099 | 3101 | } | |
3100 | 3102 | } | |
3101 | 3103 | } | |
3102 | - | else if (("DUCK" == | |
3104 | + | else if (("DUCK" == cz)) | |
3103 | 3105 | then { | |
3104 | - | let | |
3105 | - | let | |
3106 | - | if (if (!(isDefined(getInteger( | |
3106 | + | let jt = value(assetInfo(fromBase58String(bq))) | |
3107 | + | let ju = bs(bq) | |
3108 | + | if (if (!(isDefined(getInteger(ju)))) | |
3107 | 3109 | then true | |
3108 | - | else !(isDefined(getString( | |
3109 | - | then throw(( | |
3110 | + | else !(isDefined(getString(bI(d))))) | |
3111 | + | then throw((jt.name + " is not staked")) | |
3110 | 3112 | else { | |
3111 | - | let | |
3112 | - | if (( | |
3113 | - | then throw(( | |
3113 | + | let jw = valueOrErrorMessage(getString(bH(bq)), (("NFT " + jt.name) + " is orphaned")) | |
3114 | + | if ((jw != d)) | |
3115 | + | then throw((aE + " is not yours")) | |
3114 | 3116 | else { | |
3115 | - | let | |
3116 | - | let | |
3117 | - | if (isDefined( | |
3118 | - | then throw(("Name already registered: " + | |
3117 | + | let mw = ex(kP) | |
3118 | + | let mx = getString(mw) | |
3119 | + | if (isDefined(mx)) | |
3120 | + | then throw(("Name already registered: " + kP)) | |
3119 | 3121 | else { | |
3120 | - | let | |
3121 | - | let | |
3122 | - | let | |
3123 | - | then [DeleteEntry( | |
3122 | + | let mB = bB(bq) | |
3123 | + | let mz = getString(mB) | |
3124 | + | let mA = if (isDefined(mz)) | |
3125 | + | then [DeleteEntry(ex(value(mz)))] | |
3124 | 3126 | else nil | |
3125 | - | ((( | |
3127 | + | (((mA :+ StringEntry(mB, kP)) :+ StringEntry(mw, bq)) ++ ka(bq, Z)._1) | |
3126 | 3128 | } | |
3127 | 3129 | } | |
3128 | 3130 | } | |
3129 | 3131 | } | |
3130 | 3132 | else throw("Unknown entity type") | |
3131 | 3133 | } | |
3132 | - | $Tuple2((( | |
3134 | + | $Tuple2(((mv :+ ScriptTransfer(dd, ln.amount, cy)) ++ lm), 0) | |
3133 | 3135 | } | |
3134 | 3136 | } | |
3135 | 3137 | } | |
3136 | 3138 | ||
3137 | 3139 | ||
3138 | 3140 | ||
3139 | - | @Callable( | |
3140 | - | func setReferrals ( | |
3141 | + | @Callable(gL) | |
3142 | + | func setReferrals (mC,mD) = if ((gL.callerPublicKey != ea)) | |
3141 | 3143 | then throw("Permission denied") | |
3142 | 3144 | else { | |
3143 | - | let | |
3144 | - | if ((size( | |
3145 | + | let lm = li(gL) | |
3146 | + | if ((size(gL.payments) != 0)) | |
3145 | 3147 | then throw("No payments required") | |
3146 | - | else if (!(isDefined(addressFromString( | |
3147 | - | then throw(("Invalid address: " + | |
3148 | - | else if (!(isDefined(addressFromString( | |
3149 | - | then throw(("Invalid address: " + | |
3148 | + | else if (!(isDefined(addressFromString(mC)))) | |
3149 | + | then throw(("Invalid address: " + mC)) | |
3150 | + | else if (!(isDefined(addressFromString(mD)))) | |
3151 | + | then throw(("Invalid address: " + mD)) | |
3150 | 3152 | else { | |
3151 | - | let | |
3152 | - | let | |
3153 | - | let | |
3154 | - | then split_4C(value( | |
3153 | + | let mE = ez() | |
3154 | + | let mF = getString(mE) | |
3155 | + | let mG = if (isDefined(mF)) | |
3156 | + | then split_4C(value(mF), "_") | |
3155 | 3157 | else nil | |
3156 | - | if (containsElement( | |
3157 | - | then throw(( | |
3158 | + | if (containsElement(mG, mD)) | |
3159 | + | then throw((mD + " is not newbie (already has referrals)")) | |
3158 | 3160 | else { | |
3159 | - | let | |
3160 | - | let | |
3161 | - | if (if (isDefined( | |
3162 | - | then isDefined(addressFromString(value( | |
3161 | + | let ki = bD(mD) | |
3162 | + | let kj = getString(ki) | |
3163 | + | if (if (isDefined(kj)) | |
3164 | + | then isDefined(addressFromString(value(kj))) | |
3163 | 3165 | else false) | |
3164 | - | then throw((( | |
3166 | + | then throw(((mD + " already has refBy: ") + value(kj))) | |
3165 | 3167 | else { | |
3166 | - | let | |
3167 | - | let | |
3168 | - | let | |
3169 | - | then split_4C(value( | |
3168 | + | let mH = bG(mC) | |
3169 | + | let mI = getString(mH) | |
3170 | + | let mJ = if (isDefined(mI)) | |
3171 | + | then split_4C(value(mI), "_") | |
3170 | 3172 | else nil | |
3171 | - | if (containsElement( | |
3172 | - | then throw(((( | |
3173 | + | if (containsElement(mJ, mD)) | |
3174 | + | then throw((((mC + " already contains ") + mD) + " within referrals")) | |
3173 | 3175 | else { | |
3174 | - | let | |
3175 | - | let | |
3176 | - | then value( | |
3177 | - | else makeString_2C(( | |
3178 | - | $Tuple2(([StringEntry( | |
3176 | + | let mK = makeString_2C((mJ :+ mD), "_") | |
3177 | + | let mL = if (containsElement(mG, mC)) | |
3178 | + | then value(mF) | |
3179 | + | else makeString_2C((mG :+ mC), "_") | |
3180 | + | $Tuple2(([StringEntry(ki, mC), StringEntry(mH, mK), StringEntry(mE, mL)] ++ lm), 0) | |
3179 | 3181 | } | |
3180 | 3182 | } | |
3181 | 3183 | } | |
3182 | 3184 | } | |
3183 | 3185 | } | |
3184 | 3186 | ||
3185 | 3187 | ||
3186 | 3188 | ||
3187 | - | @Callable( | |
3188 | - | func distributePoints ( | |
3189 | - | let | |
3190 | - | if ((size( | |
3189 | + | @Callable(gL) | |
3190 | + | func distributePoints (mM,mN,mO,mP,mQ) = { | |
3191 | + | let lm = li(gL) | |
3192 | + | if ((size(gL.payments) != 0)) | |
3191 | 3193 | then throw("No payments required") | |
3192 | 3194 | else { | |
3193 | - | let | |
3194 | - | let | |
3195 | - | let | |
3196 | - | let | |
3195 | + | let d = toString(gL.originCaller) | |
3196 | + | let mR = dC(invoke(df, "checkWlgXpREADONLY", [d], nil)) | |
3197 | + | let mS = dA(mR[1]) | |
3198 | + | let mT = if ((0 >= mS)) | |
3197 | 3199 | then $Tuple2(0, nil) | |
3198 | 3200 | else { | |
3199 | - | let | |
3200 | - | if (( | |
3201 | - | then $Tuple2( | |
3201 | + | let kb = dA(invoke(df, "takeWlgXp", [d], nil)) | |
3202 | + | if ((kb == kb)) | |
3203 | + | then $Tuple2(mS, [IntegerEntry(I(d), dA(mR[0])), IntegerEntry(H(d), dA(mR[2]))]) | |
3202 | 3204 | else throw("Strict value is not equal to itself.") | |
3203 | 3205 | } | |
3204 | - | let | |
3205 | - | let | |
3206 | - | let | |
3207 | - | let | |
3208 | - | let | |
3209 | - | let | |
3210 | - | let | |
3211 | - | let | |
3212 | - | let | |
3213 | - | if (( | |
3214 | - | then throw((("There are only " + toString( | |
3206 | + | let mU = mT._1 | |
3207 | + | let mV = mT._2 | |
3208 | + | let B = valueOrErrorMessage(getString(bI(d)), "You don't have a duck staked") | |
3209 | + | let mW = J(d) | |
3210 | + | let mX = (valueOrElse(getInteger(mW), 0) + mU) | |
3211 | + | let mY = F(B) | |
3212 | + | let mZ = valueOrElse(getInteger(mY), 0) | |
3213 | + | let na = (mX + mZ) | |
3214 | + | let nb = ((((mM + mN) + mO) + mP) + mQ) | |
3215 | + | if ((nb > na)) | |
3216 | + | then throw((("There are only " + toString(na)) + " free points to distribute")) | |
3215 | 3217 | else { | |
3216 | - | let | |
3217 | - | let | |
3218 | - | let | |
3219 | - | $Tuple2((([IntegerEntry( | |
3218 | + | let nc = C(B) | |
3219 | + | let ar = split(valueOrElse(getString(nc), "0_0_0_0_0"), "_") | |
3220 | + | let nd = (mX - nb) | |
3221 | + | $Tuple2((([IntegerEntry(mW, if ((0 > nd)) | |
3220 | 3222 | then 0 | |
3221 | - | else | |
3222 | - | then ( | |
3223 | - | else | |
3223 | + | else nd), IntegerEntry(mY, if ((0 > nd)) | |
3224 | + | then (mZ + nd) | |
3225 | + | else mZ), StringEntry(nc, makeString([toString((parseIntValue(ar[l]) + mM)), toString((parseIntValue(ar[m]) + mN)), toString((parseIntValue(ar[n]) + mO)), toString((parseIntValue(ar[o]) + mP)), toString((parseIntValue(ar[p]) + mQ))], "_"))] ++ lm) ++ mV), 0) | |
3224 | 3226 | } | |
3225 | 3227 | } | |
3226 | 3228 | } | |
3227 | 3229 | ||
3228 | 3230 | ||
3229 | 3231 | ||
3230 | - | @Callable( | |
3231 | - | func splitByGlobalWeightsREADONLY ( | |
3232 | - | ||
3233 | - | ||
3234 | - | ||
3235 | - | @Callable( | |
3236 | - | func splitByGlobalAndLocalWeightsREADONLY ( | |
3237 | - | let | |
3238 | - | $Tuple2(nil, $Tuple2( | |
3239 | - | } | |
3240 | - | ||
3241 | - | ||
3242 | - | ||
3243 | - | @Callable( | |
3244 | - | func getBackpackREADONLY ( | |
3245 | - | ||
3246 | - | ||
3247 | - | ||
3248 | - | @Callable( | |
3249 | - | func getWarehouseREADONLY ( | |
3250 | - | let | |
3251 | - | let | |
3252 | - | let | |
3253 | - | $Tuple2(nil, makeString_2C( | |
3254 | - | } | |
3255 | - | ||
3256 | - | ||
3257 | - | ||
3258 | - | @Callable( | |
3259 | - | func saveLastTx () = if (!(containsElement([ | |
3232 | + | @Callable(gL) | |
3233 | + | func splitByGlobalWeightsREADONLY (eJ) = $Tuple2(nil, fb(eJ)) | |
3234 | + | ||
3235 | + | ||
3236 | + | ||
3237 | + | @Callable(gL) | |
3238 | + | func splitByGlobalAndLocalWeightsREADONLY (ne,nf,gO) = { | |
3239 | + | let gH = gN(gO) | |
3240 | + | $Tuple2(nil, $Tuple2(fb(ne), eM(nf, gH))) | |
3241 | + | } | |
3242 | + | ||
3243 | + | ||
3244 | + | ||
3245 | + | @Callable(gL) | |
3246 | + | func getBackpackREADONLY (B) = $Tuple2(nil, makeString(hL(bJ(B)), ":")) | |
3247 | + | ||
3248 | + | ||
3249 | + | ||
3250 | + | @Callable(gL) | |
3251 | + | func getWarehouseREADONLY (Q) = { | |
3252 | + | let jt = value(assetInfo(fromBase58String(Q))) | |
3253 | + | let ia = (dI(split(jt.description, "_")[dj]) / cG) | |
3254 | + | let ib = valueOrElse(getInteger(bz(Q)), 0) | |
3255 | + | $Tuple2(nil, makeString_2C(hY(by(Q), ia, ib), ":")) | |
3256 | + | } | |
3257 | + | ||
3258 | + | ||
3259 | + | ||
3260 | + | @Callable(gL) | |
3261 | + | func saveLastTx () = if (!(containsElement([df, dd, dg, dh], gL.caller))) | |
3260 | 3262 | then throw("Access denied") | |
3261 | - | else $Tuple2( | |
3262 | - | ||
3263 | - | ||
3264 | - | ||
3265 | - | @Callable( | |
3266 | - | func updateDuckStats ( | |
3263 | + | else $Tuple2(li(gL), 42) | |
3264 | + | ||
3265 | + | ||
3266 | + | ||
3267 | + | @Callable(gL) | |
3268 | + | func updateDuckStats (B,kb) = if ((gL.caller != dd)) | |
3267 | 3269 | then throw("Access denied") | |
3268 | - | else | |
3269 | - | ||
3270 | - | ||
3271 | - | ||
3272 | - | @Callable( | |
3273 | - | func updateAccStats ( | |
3270 | + | else ka(B, kb) | |
3271 | + | ||
3272 | + | ||
3273 | + | ||
3274 | + | @Callable(gL) | |
3275 | + | func updateAccStats (d,kb) = if (!(containsElement([df, dd, dh], gL.caller))) | |
3274 | 3276 | then throw("Access denied") | |
3275 | - | else | |
3276 | - | ||
3277 | - | ||
3278 | - | ||
3279 | - | @Callable( | |
3280 | - | func equipDuck ( | |
3281 | - | let | |
3282 | - | if ((size( | |
3277 | + | else kg(d, kb) | |
3278 | + | ||
3279 | + | ||
3280 | + | ||
3281 | + | @Callable(gL) | |
3282 | + | func equipDuck (ng) = { | |
3283 | + | let lm = li(gL) | |
3284 | + | if ((size(gL.payments) != 0)) | |
3283 | 3285 | then throw("No payments required") | |
3284 | 3286 | else { | |
3285 | - | let | |
3286 | - | let | |
3287 | - | if ( | |
3287 | + | let d = toString(gL.originCaller) | |
3288 | + | let B = valueOrErrorMessage(getString(bI(d)), "You don't have a duck staked") | |
3289 | + | if (kq(B)) | |
3288 | 3290 | then throw("equipDuck_checkTournament") | |
3289 | - | else if ( | |
3291 | + | else if (kr(B)) | |
3290 | 3292 | then throw("equipDuck_checkDelivery") | |
3291 | 3293 | else { | |
3292 | - | let | |
3293 | - | let | |
3294 | - | let | |
3295 | - | let | |
3296 | - | let | |
3297 | - | if ((size( | |
3294 | + | let gy = G(B) | |
3295 | + | let nh = split(valueOrElse(getString(gy), ",;,_,;,_,;,_,;,_,;,_,;,"), "_") | |
3296 | + | let hM = bJ(B) | |
3297 | + | let ip = hL(hM) | |
3298 | + | let lD = split(ng, "_") | |
3299 | + | if ((size(lD) != r)) | |
3298 | 3300 | then throw("Wrong equipment string") | |
3299 | 3301 | else { | |
3300 | - | let | |
3301 | - | let | |
3302 | - | let | |
3302 | + | let gA = gn(nh, fy(ip[bl]), true, nil) | |
3303 | + | let gB = split(lD[q], ";")[1] | |
3304 | + | let ap = if ((gB == "")) | |
3303 | 3305 | then 0 | |
3304 | 3306 | else { | |
3305 | - | let | |
3306 | - | if (( | |
3307 | + | let gC = split(gB, ",")[0] | |
3308 | + | if ((gC == "")) | |
3307 | 3309 | then 0 | |
3308 | 3310 | else { | |
3309 | - | let | |
3310 | - | let | |
3311 | - | let | |
3312 | - | if (if (if (if (if (( | |
3311 | + | let fN = split(gC, ":") | |
3312 | + | let db = fN[0] | |
3313 | + | let gD = fN[1] | |
3314 | + | if (if (if (if (if ((db == "06")) | |
3313 | 3315 | then true | |
3314 | - | else ( | |
3316 | + | else (db == "07")) | |
3315 | 3317 | then true | |
3316 | - | else ( | |
3317 | - | then ( | |
3318 | + | else (db == "08")) | |
3319 | + | then (gD != "") | |
3318 | 3320 | else false) | |
3319 | - | then (parseIntValue( | |
3321 | + | then (parseIntValue(gD) > 0) | |
3320 | 3322 | else false) | |
3321 | - | then parseIntValue(split( | |
3323 | + | then parseIntValue(split(aT[parseIntValue(db)], "_")[aV]) | |
3322 | 3324 | else 0 | |
3323 | 3325 | } | |
3324 | 3326 | } | |
3325 | - | let | |
3326 | - | let | |
3327 | - | let | |
3328 | - | $Tuple2(([StringEntry( | |
3327 | + | let gi = an(this, B, ap, true) | |
3328 | + | let gE = gn(lD, gA, false, gi) | |
3329 | + | let ni = fD(gE) | |
3330 | + | $Tuple2(([StringEntry(gy, ng), StringEntry(hM, makeString_2C([ip[bi], ip[bj], ip[bk], ni], ":")), StringEntry(M(B), makeString([toString(gi[7]), toString(gi[8]), toString(gi[9]), toString(gi[10]), toString(gi[11])], "_"))] ++ lm), 0) | |
3329 | 3331 | } | |
3330 | 3332 | } | |
3331 | 3333 | } | |
3332 | 3334 | } | |
3333 | 3335 | ||
3334 | 3336 | ||
3335 | 3337 | ||
3336 | - | @Callable( | |
3337 | - | func fortificateLand ( | |
3338 | - | let | |
3339 | - | if ((size( | |
3338 | + | @Callable(gL) | |
3339 | + | func fortificateLand (Q,nj) = { | |
3340 | + | let lm = li(gL) | |
3341 | + | if ((size(gL.payments) != 0)) | |
3340 | 3342 | then throw("No payments required") | |
3341 | 3343 | else { | |
3342 | - | let | |
3343 | - | let | |
3344 | - | let | |
3345 | - | let | |
3346 | - | let | |
3347 | - | let | |
3348 | - | let | |
3349 | - | let | |
3350 | - | let | |
3351 | - | let | |
3352 | - | let | |
3353 | - | let | |
3354 | - | let | |
3355 | - | let | |
3356 | - | let | |
3357 | - | let | |
3358 | - | let | |
3359 | - | let | |
3360 | - | let | |
3361 | - | let | |
3362 | - | let | |
3363 | - | let | |
3364 | - | let | |
3365 | - | let | |
3366 | - | $Tuple2(([StringEntry( | |
3367 | - | } | |
3368 | - | } | |
3369 | - | ||
3370 | - | ||
3371 | - | ||
3372 | - | @Callable( | |
3373 | - | func initDuckTourAttempt ( | |
3344 | + | let d = toString(gL.originCaller) | |
3345 | + | let B = valueOrElse(getString(bI(d)), "") | |
3346 | + | let fI = an(this, B, 0, false) | |
3347 | + | let nk = bA(Q) | |
3348 | + | let nl = split(valueOrElse(getString(nk), ":0_15:0_18:0"), "_") | |
3349 | + | let jt = value(assetInfo(fromBase58String(Q))) | |
3350 | + | let ia = (dI(split(jt.description, "_")[dj]) / cG) | |
3351 | + | let ib = valueOrElse(getInteger(bz(Q)), 0) | |
3352 | + | let hZ = by(Q) | |
3353 | + | let ie = hY(hZ, ia, ib) | |
3354 | + | let nm = split(ie[bd], "_") | |
3355 | + | let nn = parseIntValue(nm[bf]) | |
3356 | + | let no = parseIntValue(nm[bg]) | |
3357 | + | let np = split(nj, "_") | |
3358 | + | let nq = gu(nl, fy(ie[bc]), nn, no, true, nil) | |
3359 | + | let gA = nq._1 | |
3360 | + | let nr = nq._2 | |
3361 | + | let ns = nq._3 | |
3362 | + | let nt = gu(np, gA, nr, ns, false, fI) | |
3363 | + | let gE = nt._1 | |
3364 | + | let nu = nt._2 | |
3365 | + | let nv = nt._3 | |
3366 | + | let ni = fD(gE) | |
3367 | + | let jZ = makeString([nm[be], toString(nu), toString(nv), nm[bh]], "_") | |
3368 | + | $Tuple2(([StringEntry(nk, nj), StringEntry(hZ, makeString_2C([ie[aZ], ie[ba], ie[bb], ni, jZ], ":"))] ++ lm), 0) | |
3369 | + | } | |
3370 | + | } | |
3371 | + | ||
3372 | + | ||
3373 | + | ||
3374 | + | @Callable(gL) | |
3375 | + | func initDuckTourAttempt (B) = if ((gL.caller != dg)) | |
3374 | 3376 | then throw("Access denied") | |
3375 | 3377 | else { | |
3376 | - | let | |
3377 | - | let | |
3378 | - | let | |
3379 | - | let | |
3380 | - | let | |
3381 | - | let | |
3382 | - | let | |
3383 | - | $Tuple2([IntegerEntry( | |
3378 | + | let jc = A(B) | |
3379 | + | let jd = ah(valueOrElse(getInteger(E(B)), 0)) | |
3380 | + | let kv = valueOrElse(getInteger(jc), jd) | |
3381 | + | let nw = bK(B) | |
3382 | + | let jr = valueOrElse(getString(nw), aK) | |
3383 | + | let cf = valueOrElse(getInteger(dg, bQ), 0) | |
3384 | + | let nx = (toString(cf) + "_T_0") | |
3385 | + | $Tuple2([IntegerEntry(K(B), kv), IntegerEntry(jc, jd), StringEntry(L(B), jr), StringEntry(nw, nx)], nx) | |
3384 | 3386 | } | |
3385 | 3387 | ||
3386 | 3388 | ||
3387 | 3389 | ||
3388 | - | @Callable( | |
3390 | + | @Callable(gL) | |
3389 | 3391 | func breakAttempt () = { | |
3390 | - | let | |
3391 | - | let | |
3392 | - | let | |
3393 | - | let | |
3394 | - | if ((split( | |
3392 | + | let lm = li(gL) | |
3393 | + | let B = valueOrErrorMessage(getString(bI(toString(gL.caller))), "You don't have a duck staked") | |
3394 | + | let nw = bK(B) | |
3395 | + | let jr = valueOrElse(getString(nw), aK) | |
3396 | + | if ((split(jr, "_")[bn] != "T")) | |
3395 | 3397 | then throw("Your duck is not in the tournament") | |
3396 | 3398 | else { | |
3397 | - | let | |
3398 | - | let | |
3399 | - | $Tuple2((( | |
3400 | - | } | |
3401 | - | } | |
3402 | - | ||
3403 | - | ||
3404 | - | ||
3405 | - | @Callable( | |
3406 | - | func exitTournamentInternal ( | |
3399 | + | let kA = getIntegerValue(K(B)) | |
3400 | + | let kB = getStringValue(L(B)) | |
3401 | + | $Tuple2(((lm :+ IntegerEntry(A(B), kA)) :+ StringEntry(nw, kB)), jr) | |
3402 | + | } | |
3403 | + | } | |
3404 | + | ||
3405 | + | ||
3406 | + | ||
3407 | + | @Callable(gL) | |
3408 | + | func exitTournamentInternal (B) = if ((gL.caller != this)) | |
3407 | 3409 | then throw("Access denied") | |
3408 | 3410 | else { | |
3409 | - | let | |
3410 | - | let | |
3411 | - | $Tuple2([IntegerEntry( | |
3411 | + | let kA = getIntegerValue(K(B)) | |
3412 | + | let kB = getStringValue(L(B)) | |
3413 | + | $Tuple2([IntegerEntry(A(B), kA), StringEntry(bK(B), kB)], false) | |
3412 | 3414 | } | |
3413 | 3415 | ||
3414 | 3416 | ||
3415 | 3417 | ||
3416 | - | @Callable( | |
3417 | - | func exitDeliveryInternal ( | |
3418 | + | @Callable(gL) | |
3419 | + | func exitDeliveryInternal (B) = if ((gL.caller != this)) | |
3418 | 3420 | then throw("Access denied") | |
3419 | 3421 | else { | |
3420 | - | let | |
3421 | - | $Tuple2(( | |
3422 | + | let mj = ks(B, false, 0) | |
3423 | + | $Tuple2((mj._1 ++ mj._2), false) | |
3422 | 3424 | } | |
3423 | 3425 | ||
3424 | 3426 | ||
3425 | 3427 | ||
3426 | - | @Callable( | |
3427 | - | func autoExitDelivery ( | |
3428 | + | @Callable(gL) | |
3429 | + | func autoExitDelivery (B,iW) = if ((gL.caller != this)) | |
3428 | 3430 | then throw("Access denied") | |
3429 | 3431 | else { | |
3430 | - | let | |
3431 | - | $Tuple2( | |
3432 | + | let mj = ks(B, true, iW) | |
3433 | + | $Tuple2(mj._1, $Tuple2(mj._3, mj._4)) | |
3432 | 3434 | } | |
3433 | 3435 | ||
3434 | 3436 | ||
3435 | 3437 | ||
3436 | - | @Callable( | |
3437 | - | func prepareRobbery ( | |
3438 | - | let | |
3439 | - | if (!(sigVerify_8Kb( | |
3438 | + | @Callable(gL) | |
3439 | + | func prepareRobbery (iR,iS) = { | |
3440 | + | let lm = li(gL) | |
3441 | + | if (!(sigVerify_8Kb(iR, iS, ea))) | |
3440 | 3442 | then throw("signature does not match") | |
3441 | - | else if ((size( | |
3443 | + | else if ((size(gL.payments) != 1)) | |
3442 | 3444 | then throw("exactly 1 payment must be attached") | |
3443 | 3445 | else { | |
3444 | - | let | |
3445 | - | let | |
3446 | - | if (if (!(isDefined( | |
3446 | + | let ln = gL.payments[0] | |
3447 | + | let ny = ln.amount | |
3448 | + | if (if (!(isDefined(ln.assetId))) | |
3447 | 3449 | then true | |
3448 | - | else (value( | |
3450 | + | else (value(ln.assetId) != dn)) | |
3449 | 3451 | then throw("WLGOLD payments only!") | |
3450 | 3452 | else { | |
3451 | - | let | |
3452 | - | if ((size( | |
3453 | + | let fq = split(toUtf8String(iR), "|") | |
3454 | + | if ((size(fq) != 2)) | |
3453 | 3455 | then throw("Wrong message format") | |
3454 | 3456 | else { | |
3455 | - | let | |
3456 | - | if ( | |
3457 | + | let B = fq[0] | |
3458 | + | if (kq(B)) | |
3457 | 3459 | then throw("prepareRobbery_checkTournament") | |
3458 | - | else if ( | |
3460 | + | else if (kr(B)) | |
3459 | 3461 | then throw("prepareRobbery_checkDelivery") | |
3460 | 3462 | else { | |
3461 | - | let | |
3462 | - | if (( | |
3463 | - | then throw(((("Payment " + toString( | |
3463 | + | let az = av(this, B)._1 | |
3464 | + | if ((az > ny)) | |
3465 | + | then throw(((("Payment " + toString(ny)) + " < required ") + toString(az))) | |
3464 | 3466 | else { | |
3465 | - | let | |
3466 | - | let | |
3467 | - | let | |
3468 | - | let | |
3469 | - | let | |
3470 | - | if (if (( | |
3471 | - | then ( | |
3467 | + | let nz = split(fq[1], "_") | |
3468 | + | let ay = lastBlock.timestamp | |
3469 | + | let aA = valueOrElse(getInteger(S(B)), 0) | |
3470 | + | let aB = valueOrElse(getString(T(B)), "") | |
3471 | + | let aC = valueOrElse(getInteger(R(aB)), 0) | |
3472 | + | if (if ((aA != y)) | |
3473 | + | then (aC > ay) | |
3472 | 3474 | else false) | |
3473 | - | then throw(("You already started robbing, wait till " + toString( | |
3475 | + | then throw(("You already started robbing, wait till " + toString(aC))) | |
3474 | 3476 | else { | |
3475 | - | func | |
3476 | - | let | |
3477 | - | let | |
3478 | - | if (( | |
3477 | + | func nA (eS,Q) = { | |
3478 | + | let nB = valueOrElse(getInteger(P(Q)), 0) | |
3479 | + | let nC = valueOrElse(getInteger(R(Q)), 0) | |
3480 | + | if ((nB > size(v))) | |
3479 | 3481 | then throw("Invalid state") | |
3480 | - | else if (( | |
3482 | + | else if ((ay > nC)) | |
3481 | 3483 | then { | |
3482 | - | let | |
3483 | - | if ((0 >= | |
3484 | - | then | |
3484 | + | let nD = valueOrElse(getInteger(bs(Q)), 0) | |
3485 | + | if ((0 >= nD)) | |
3486 | + | then eS | |
3485 | 3487 | else { | |
3486 | - | let | |
3487 | - | let | |
3488 | - | let | |
3489 | - | let | |
3490 | - | let | |
3491 | - | let | |
3492 | - | if (( | |
3493 | - | then | |
3494 | - | else ( | |
3488 | + | let gs = value(assetInfo(fromBase58String(Q))) | |
3489 | + | let jx = split(gs.description, "_") | |
3490 | + | let jj = dI(jx[dj]) | |
3491 | + | let nE = ji(Q, jj) | |
3492 | + | let gR = (ay - nD) | |
3493 | + | let jA = fraction(gR, (nE * jj), a) | |
3494 | + | if ((w > jA)) | |
3495 | + | then eS | |
3496 | + | else (eS :+ Q) | |
3495 | 3497 | } | |
3496 | 3498 | } | |
3497 | - | else | |
3499 | + | else eS | |
3498 | 3500 | } | |
3499 | 3501 | ||
3500 | - | let | |
3501 | - | let | |
3502 | - | let | |
3503 | - | let | |
3504 | - | func | |
3505 | - | then | |
3506 | - | else | |
3507 | - | ||
3508 | - | func | |
3509 | - | then | |
3502 | + | let nF = { | |
3503 | + | let eU = nz | |
3504 | + | let eV = size(eU) | |
3505 | + | let eW = nil | |
3506 | + | func eX (eY,eZ) = if ((eZ >= eV)) | |
3507 | + | then eY | |
3508 | + | else nA(eY, eU[eZ]) | |
3509 | + | ||
3510 | + | func fa (eY,eZ) = if ((eZ >= eV)) | |
3511 | + | then eY | |
3510 | 3512 | else throw("List size exceeds 10") | |
3511 | 3513 | ||
3512 | - | | |
3514 | + | fa(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
3513 | 3515 | } | |
3514 | - | if ((size( | |
3516 | + | if ((size(nF) == 0)) | |
3515 | 3517 | then throw("No candidates for robbery") | |
3516 | 3518 | else { | |
3517 | - | let | |
3518 | - | let | |
3519 | - | $Tuple2(([IntegerEntry( | |
3519 | + | let nG = dS(size(nF), height, (iS + gL.transactionId)) | |
3520 | + | let Q = nF[nG] | |
3521 | + | $Tuple2(([IntegerEntry(P(Q), x), IntegerEntry(R(Q), (ay + v[x])), IntegerEntry(S(B), z), StringEntry(T(B), Q)] ++ lm), Q) | |
3520 | 3522 | } | |
3521 | 3523 | } | |
3522 | 3524 | } | |
3523 | 3525 | } | |
3524 | 3526 | } | |
3525 | 3527 | } | |
3526 | 3528 | } | |
3527 | 3529 | } | |
3528 | 3530 | ||
3529 | 3531 | ||
3530 | 3532 | ||
3531 | - | @Callable( | |
3532 | - | func robLand ( | |
3533 | - | let | |
3534 | - | if (!(sigVerify_8Kb( | |
3533 | + | @Callable(gL) | |
3534 | + | func robLand (iR,iS) = { | |
3535 | + | let lm = li(gL) | |
3536 | + | if (!(sigVerify_8Kb(iR, iS, ea))) | |
3535 | 3537 | then throw("signature does not match") | |
3536 | 3538 | else { | |
3537 | - | let | |
3538 | - | let | |
3539 | - | let | |
3540 | - | $Tuple2(( | |
3541 | - | } | |
3542 | - | } | |
3543 | - | ||
3544 | - | ||
3545 | - | ||
3546 | - | @Callable( | |
3547 | - | func acceptDelivery () = if (!( | |
3539 | + | let bM = toString(gL.caller) | |
3540 | + | let B = valueOrErrorMessage(getString(bI(bM)), "You don't have a duck staked") | |
3541 | + | let ay = lastBlock.timestamp | |
3542 | + | $Tuple2((lm :+ IntegerEntry(N(B), ay)), 0) | |
3543 | + | } | |
3544 | + | } | |
3545 | + | ||
3546 | + | ||
3547 | + | ||
3548 | + | @Callable(gL) | |
3549 | + | func acceptDelivery () = if (!(cw)) | |
3548 | 3550 | then throw("Delivery feature is turned off!") | |
3549 | 3551 | else { | |
3550 | - | let | |
3551 | - | let | |
3552 | - | let | |
3553 | - | let | |
3554 | - | let | |
3555 | - | if (( | |
3556 | - | then throw(((("Delivery is not available, fund=" + | |
3552 | + | let lm = li(gL) | |
3553 | + | let bM = toString(gL.caller) | |
3554 | + | let B = valueOrErrorMessage(getString(bI(bM)), "You don't have a duck staked") | |
3555 | + | let nH = valueOrElse(getInteger(dd, bO), 0) | |
3556 | + | let ky = valueOrElse(getInteger(dd, bP), 0) | |
3557 | + | if ((aN > (nH - ky))) | |
3558 | + | then throw(((("Delivery is not available, fund=" + dN(nH, 6)) + ", locked=") + dN(ky, 6))) | |
3557 | 3559 | else { | |
3558 | - | let | |
3559 | - | let | |
3560 | - | if (( | |
3561 | - | then throw(("Delivery is forbidden for your duck until " + toString( | |
3562 | - | else if ( | |
3560 | + | let ay = lastBlock.timestamp | |
3561 | + | let nI = valueOrElse(getInteger(U(B)), 0) | |
3562 | + | if ((nI > ay)) | |
3563 | + | then throw(("Delivery is forbidden for your duck until " + toString(nI))) | |
3564 | + | else if (kq(B)) | |
3563 | 3565 | then throw("acceptDelivery_checkTournament") | |
3564 | - | else if ( | |
3566 | + | else if (kr(B)) | |
3565 | 3567 | then throw("acceptDelivery_checkDelivery") | |
3566 | 3568 | else { | |
3567 | - | let | |
3568 | - | let | |
3569 | - | let | |
3570 | - | let | |
3571 | - | let | |
3572 | - | let | |
3573 | - | let | |
3574 | - | $Tuple2(([IntegerEntry( | |
3569 | + | let nJ = dA(invoke(dd, "updateDeliveryLocked", [(ky + aN)], nil)) | |
3570 | + | let jc = A(B) | |
3571 | + | let jd = ah(valueOrElse(getInteger(E(B)), 0)) | |
3572 | + | let kv = valueOrElse(getInteger(jc), jd) | |
3573 | + | let nw = bK(B) | |
3574 | + | let jr = valueOrElse(getString(nw), aK) | |
3575 | + | let nK = (toString(ay) + "_D_0") | |
3576 | + | $Tuple2(([IntegerEntry(K(B), kv), IntegerEntry(jc, jd), StringEntry(L(B), jr), StringEntry(nw, nK)] ++ lm), $Tuple2(nK, nJ)) | |
3575 | 3577 | } | |
3576 | 3578 | } | |
3577 | 3579 | } | |
3578 | 3580 | ||
3579 | 3581 |
github/deemru/w8io/c3f4982 1706.78 ms ◑