tx · 4bYSQ8bV2UdUvgPLQRd7Wr1mkEpn2VKxPDdQskB9ydQX

3NDCyBG5q85JuaRiigUeEtainyjCQT3XpZm:  -0.09700000 Waves

2023.08.29 17:23 [2732104] smart account 3NDCyBG5q85JuaRiigUeEtainyjCQT3XpZm > SELF 0.00000000 Waves

{ "type": 13, "id": "4bYSQ8bV2UdUvgPLQRd7Wr1mkEpn2VKxPDdQskB9ydQX", "fee": 9700000, "feeAssetId": null, "timestamp": 1693319073240, "version": 2, "chainId": 84, "sender": "3NDCyBG5q85JuaRiigUeEtainyjCQT3XpZm", "senderPublicKey": "EVooykMNV691Venwp1dHUTBd7KWequzUcda57Wd3LQEX", "proofs": [ "4y711qnjeNNyWeW5aeaLGDotF5c2AUdaQSVW5B1eVixzTfjEpNoMCzKZhRDiyT2yHhTkTLkVXRBntdwtqjMGyGnE" ], "script": "base64:BgLHAQgCEgMKAQgSAwoBBBIAEgMKAQgSABIDCgEIEgQKAgEIEgQKAgEIEgQKAgICEgUKAwEBARIAEgQKAggIEgASABIECgICAhIDCgEIEgQKAggIEgMKARgSBAoCCAgSBAoCCAgSAwoBCBIDCgEYEgMKAQgSBQoDCAgIEgQKAggIEgcKBQEBAQEBEgMKAQESBQoDAQEIEgMKAQgSAwoBCBIAEgQKAggBEgQKAggBEgMKAQgSBAoCCAgSAwoBCBIAEgMKAQgSBAoCAgKHAgEUa2V5TGFzdEFyYlRpbWVCeVVzZXIBBGFkZHIJAKwCAgIQbGFzdEFyYlRpbWVVc2VyXwUEYWRkcgAGU0NBTEU4AIDC1y8ADHhwTGV2ZWxTY2FsZQCAGQAPeHBMZXZlbFJlY2lwUG93AKAfABJudW1Qb2ludHNPbkxldmVsVXAAAwAOcm9iYmVyeUNvc3RNaW4AgMLXLwAUcm9iYmVyeUNvb2xkb3duQ29lZmYAkAMADHJlcXVpcmVtZW50cwkAzAgCAghTdHJlbmd0aAkAzAgCAghBY2N1cmFjeQkAzAgCAglJbnRlbGxlY3QJAMwIAgIJRW5kdXJhbmNlCQDMCAICCURleHRlcml0eQkAzAgCAgVMZXZlbAkAzAgCAgZIZWFsdGgFA25pbAAMY2hhclN0cmVuZ3RoAAAADGNoYXJBY2N1cmFjeQABAA1jaGFySW50ZWxsZWN0AAIADWNoYXJFbmR1cmFuY2UAAwANY2hhckRleHRlcml0eQAEAAtzZWdCYWNrcGFjawAAAAtOVU1TRUdNRU5UUwAGAApOVU1NQUlOQVVYAAIACE1BWFNMT1RTAAIADU1BWFBST0RJTlNMT1QAHgAQbGFuZFJvYkNvb2xkb3ducwkAzAgCAAAJAMwIAgDAzyQJAMwIAgCg9zYJAMwIAgCA3MwUCQDMCAIAgK6mCgUDbmlsAA5NSU5fUkVTX1RPX1JPQgCA2sQJAAxyb2JJZHhMb2NrZWQAAQALZHVja0lkeEZyZWUAAAAQZHVja0lkeFByZXBhcmluZwABAQ1rZXlEdWNrSGVhbHRoAQtkdWNrQXNzZXRJZAkArAICAgtkdWNrSGVhbHRoXwULZHVja0Fzc2V0SWQBDGtleUR1Y2tDaGFycwELZHVja0Fzc2V0SWQJAKwCAgIKZHVja0NoYXJzXwULZHVja0Fzc2V0SWQBCWtleUR1Y2tYUAELZHVja0Fzc2V0SWQJAKwCAgIHZHVja1hQXwULZHVja0Fzc2V0SWQBDGtleUR1Y2tMZXZlbAELZHVja0Fzc2V0SWQJAKwCAgIKZHVja0xldmVsXwULZHVja0Fzc2V0SWQBEWtleUR1Y2tGcmVlUG9pbnRzAQtkdWNrQXNzZXRJZAkArAICAg9kdWNrRnJlZVBvaW50c18FC2R1Y2tBc3NldElkARBrZXlEdWNrRXF1aXBtZW50AQtkdWNrQXNzZXRJZAkArAICAg5kdWNrRXF1aXBtZW50XwULZHVja0Fzc2V0SWQBCWtleVVzZXJYUAEEYWRkcgkArAICAgd1c2VyWFBfBQRhZGRyAQxrZXlVc2VyTGV2ZWwBBGFkZHIJAKwCAgIKdXNlckxldmVsXwUEYWRkcgERa2V5VXNlckZyZWVQb2ludHMBBGFkZHIJAKwCAgIPdXNlckZyZWVQb2ludHNfBQRhZGRyAQ5rZXlTYXZlZEhlYWx0aAELZHVja0Fzc2V0SWQJAKwCAgIMc2F2ZWRIZWFsdGhfBQtkdWNrQXNzZXRJZAEQa2V5U2F2ZWRMb2NhdGlvbgELZHVja0Fzc2V0SWQJAKwCAgIOc2F2ZWRMb2NhdGlvbl8FC2R1Y2tBc3NldElkAQxrZXlEdWNrQnVmZnMBC2R1Y2tBc3NldElkCQCsAgICCmR1Y2tCdWZmc18FC2R1Y2tBc3NldElkARhrZXlMYXN0Um9iYmVyeVRpbWVCeUR1Y2sBC2R1Y2tBc3NldElkCQCsAgICEGxhc3RSb2JiZXJ5VGltZV8FC2R1Y2tBc3NldElkARhrZXlMYXN0Um9iYmVyeUNvc3RCeUR1Y2sBC2R1Y2tBc3NldElkCQCsAgICEGxhc3RSb2JiZXJ5Q29zdF8FC2R1Y2tBc3NldElkARNrZXlMYW5kUm9iYmVyeVN0YXRlAQtsYW5kQXNzZXRJZAkArAICAhFsYW5kUm9iYmVyeVN0YXRlXwULbGFuZEFzc2V0SWQBEmtleUxhbmRDb29sZG93bkVUQQELbGFuZEFzc2V0SWQJAKwCAgIQbGFuZENvb2xkb3duRVRBXwULbGFuZEFzc2V0SWQBE2tleUR1Y2tSb2JiZXJ5U3RhdGUBC2R1Y2tBc3NldElkCQCsAgICEWR1Y2tSb2JiZXJ5U3RhdGVfBQtkdWNrQXNzZXRJZAETa2V5TG9ja2VkTGFuZEJ5RHVjawELZHVja0Fzc2V0SWQJAKwCAgIRbG9ja2VkTGFuZEJ5RHVja18FC2R1Y2tBc3NldElkAAd4cENsYWltAJBOAA94cFN1Y2Nlc3NGbGlnaHQAkE4ADHhwRmFpbEZsaWdodADQDwAIeHBDYWxsRVMAoI0GAAx4cEN1c3RvbU5hbWUAwIQ9AAp4cE5ld1NMYW5kAMCWsQIADnhwVXBncmFkZUluZnJhAJBOAAd4cE1lcmdlAMCEPQAJeHBPbmJvYXJkAMCEPQAGeHBIZWFsAJBOAQlsZXZlbEJ5WFABAnhwCQBrAwUMeHBMZXZlbFNjYWxlCQBsBgUCeHAABAUPeHBMZXZlbFJlY2lwUG93AAQABAUERE9XTgUGU0NBTEU4AQltYXhIZWFsdGgBBWxldmVsCQBkAgBkBQVsZXZlbAEHbGV2ZWxVcAIJY3VyckxldmVsBW5ld1hQBAhuZXdMZXZlbAkBCWxldmVsQnlYUAEFBW5ld1hQCQDMCAIFCG5ld0xldmVsCQDMCAIJAGgCBRJudW1Qb2ludHNPbkxldmVsVXAJAGUCBQhuZXdMZXZlbAUJY3VyckxldmVsBQNuaWwBDGdldER1Y2tTdGF0cwQPc3Rha2luZ0NvbnRyYWN0C2R1Y2tBc3NldElkCmJ1ZmZFZmZlY3QKZm9yY2VCdWZmcwQFY2hhcnMJALUJAgkBC3ZhbHVlT3JFbHNlAgkAnQgCBQ9zdGFraW5nQ29udHJhY3QJAQxrZXlEdWNrQ2hhcnMBBQtkdWNrQXNzZXRJZAIJMF8wXzBfMF8wAgFfBANsdmwJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPc3Rha2luZ0NvbnRyYWN0CQEMa2V5RHVja0xldmVsAQULZHVja0Fzc2V0SWQAAAQGaGVhbHRoCQELdmFsdWVPckVsc2UCCQCaCAIFD3N0YWtpbmdDb250cmFjdAkBDWtleUR1Y2tIZWFsdGgBBQtkdWNrQXNzZXRJZAkBCW1heEhlYWx0aAEFA2x2bAQKc3RhdGVCdWZmcwkAtQkCCQELdmFsdWVPckVsc2UCCQCdCAIFD3N0YWtpbmdDb250cmFjdAkBDGtleUR1Y2tCdWZmcwEFC2R1Y2tBc3NldElkAgkwXzBfMF8wXzACAV8JAM4IAgkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFY2hhcnMFDGNoYXJTdHJlbmd0aAkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFY2hhcnMFDGNoYXJBY2N1cmFjeQkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFY2hhcnMFDWNoYXJJbnRlbGxlY3QJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBWNoYXJzBQ1jaGFyRW5kdXJhbmNlCQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVjaGFycwUNY2hhckRleHRlcml0eQkAzAgCBQNsdmwJAMwIAgUGaGVhbHRoBQNuaWwDBQpmb3JjZUJ1ZmZzCQDMCAIFCmJ1ZmZFZmZlY3QJAMwIAgUKYnVmZkVmZmVjdAkAzAgCBQpidWZmRWZmZWN0CQDMCAIFCmJ1ZmZFZmZlY3QJAMwIAgUKYnVmZkVmZmVjdAUDbmlsCQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQpzdGF0ZUJ1ZmZzBQxjaGFyU3RyZW5ndGgJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCnN0YXRlQnVmZnMFDGNoYXJBY2N1cmFjeQkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKc3RhdGVCdWZmcwUNY2hhckludGVsbGVjdAkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKc3RhdGVCdWZmcwUNY2hhckVuZHVyYW5jZQkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKc3RhdGVCdWZmcwUNY2hhckRleHRlcml0eQUDbmlsAQ5nZXRSb2JiZXJ5RGF0YQIPc3Rha2luZ0NvbnRyYWN0C2R1Y2tBc3NldElkBAtsYXN0Um9iQ29zdAkBC3ZhbHVlT3JFbHNlAgkAmggCBQ9zdGFraW5nQ29udHJhY3QJARhrZXlMYXN0Um9iYmVyeUNvc3RCeUR1Y2sBBQtkdWNrQXNzZXRJZAAABAtsYXN0Um9iVGltZQkBC3ZhbHVlT3JFbHNlAgkAmggCBQ9zdGFraW5nQ29udHJhY3QJARhrZXlMYXN0Um9iYmVyeVRpbWVCeUR1Y2sBBQtkdWNrQXNzZXRJZAAABANub3cIBQlsYXN0QmxvY2sJdGltZXN0YW1wBAdyb2JDb3N0CQCWAwEJAMwIAgUOcm9iYmVyeUNvc3RNaW4JAMwIAgkAZQIFC2xhc3RSb2JDb3N0CQBoAgUUcm9iYmVyeUNvb2xkb3duQ29lZmYJAGUCBQNub3cFC2xhc3RSb2JUaW1lBQNuaWwECWR1Y2tTdGF0ZQkBC3ZhbHVlT3JFbHNlAgkAmggCBQ9zdGFraW5nQ29udHJhY3QJARNrZXlEdWNrUm9iYmVyeVN0YXRlAQULZHVja0Fzc2V0SWQAAAQKbG9ja2VkTGFuZAkBC3ZhbHVlT3JFbHNlAgkAnQgCBQ9zdGFraW5nQ29udHJhY3QJARNrZXlMb2NrZWRMYW5kQnlEdWNrAQULZHVja0Fzc2V0SWQCAAQHbGFuZEVUQQkBC3ZhbHVlT3JFbHNlAgkAmggCBQ9zdGFraW5nQ29udHJhY3QJARJrZXlMYW5kQ29vbGRvd25FVEEBBQpsb2NrZWRMYW5kAAAJAJcKBQUHcm9iQ29zdAULbGFzdFJvYlRpbWUFCWR1Y2tTdGF0ZQUKbG9ja2VkTGFuZAUHbGFuZEVUQQAKTEFORFBSRUZJWAIETEFORAAKRFVDS1BSRUZJWAIERFVDSwAKQVJUUFJFU0FMRQIHUFJFU0FMRQAGTlVNUkVTAAYAGE1BWF9MQU5EU19TVEFLRURfQllfVVNFUgAZAA9EQUlMWVJFU0JZUElFQ0UAgPjSAQAJREFZTUlMTElTAIC4mSkADFdITVVMVElQTElFUgCAyK+gJQAPREVGQVVMVExPQ0FUSU9OAg9BZnJpY2FfRl9BZnJpY2EAEFJFU09VUkNFUFJJQ0VNSU4A1bUCAApFU1NFTExDT0VGAAoACXByb2RUeXBlcwkAzAgCAhBGaXJzdCBBaWQgS2l0IEwxCQDMCAICEEZpcnN0IEFpZCBLaXQgTDIJAMwIAgIQRmlyc3QgQWlkIEtpdCBMMwkAzAgCAgtCYWNrcGFjayBMMQkAzAgCAgtCYWNrcGFjayBMMgkAzAgCAgtCYWNrcGFjayBMMwkAzAgCAg5Gb29kIFJhdGlvbiBMMQkAzAgCAg5Gb29kIFJhdGlvbiBMMgkAzAgCAg5Gb29kIFJhdGlvbiBMMwkAzAgCAgtKZXQgUGFjayBMMQkAzAgCAgtKZXQgUGFjayBMMgkAzAgCAgtKZXQgUGFjayBMMwkAzAgCAglTaGllbGQgTDEJAMwIAgIJU2hpZWxkIEwyCQDMCAICCVNoaWVsZCBMMwkAzAgCAgdNaW5lIEwxCQDMCAICB01pbmUgTDIJAMwIAgIHTWluZSBMMwkAzAgCAgdUcmFwIEwxCQDMCAICB1RyYXAgTDIJAMwIAgIHVHJhcCBMMwUDbmlsAApjb250aW5lbnRzCQDMCAICCEFtZXJpY2FzCQDMCAICBkV1cm9wZQkAzAgCAgRBc2lhCQDMCAICBkFmcmljYQkAzAgCAgdPY2VhbmlhBQNuaWwACUNPRUZGMk1BVACAreIEABBmb3J0QWxsb3dlZFByb2RzCQDMCAIADwkAzAgCABAJAMwIAgARCQDMCAIAEgkAzAgCABMJAMwIAgAUBQNuaWwAEHByb2R1Y3Rpb25NYXRyaXgJAMwIAgIlOF84XzhfMTdfMTdfNDJfMTJfMF8zMF8wLDAsMCwwLDAsMCwwXwkAzAgCAiU4XzhfOF8xN18xN180Ml8yNF8wXzYwXzAsMCw1LDIsMCwwLDBfCQDMCAICJzhfOF84XzE3XzE3XzQyXzM2XzBfMTIwXzAsMCwxMCw0LDAsMCwwXwkAzAgCAik4XzE5XzE5XzhfMjdfMTlfMjZfMV8yMF8wLDAsMCwwLDAsMCwwXzAwMQkAzAgCAik4XzE5XzE5XzhfMjdfMTlfNTJfMV80MF8wLDAsMCwwLDAsMCwwXzAwMQkAzAgCAik4XzE5XzE5XzhfMjdfMTlfNzhfMV84MF8wLDAsMCwwLDAsMCwwXzAwMQkAzAgCAiU4XzhfOF84XzhfNjBfMTNfMl8yXzAsMCwwLDAsMCwwLDBfMDExCQDMCAICJThfOF84XzhfOF82MF8yNl8yXzRfMCwwLDAsMCwwLDAsMF8wMTEJAMwIAgIlOF84XzhfOF84XzYwXzM5XzJfOF8wLDAsMCwwLDAsMCwwXzAxMQkAzAgCAikzMF8zMF8zXzE3XzE3XzNfMzBfM18zMF8wLDAsMCwwLDAsMCwwXzExMQkAzAgCAikzMF8zMF8zXzE3XzE3XzNfNjBfM181MF8wLDAsMCwwLDAsMCwwXzExMQkAzAgCAikzMF8zMF8zXzE3XzE3XzNfOTBfM183MF8wLDAsMCwwLDAsMCwwXzExMQkAzAgCAisxOF8xOF8xMF8xOF8xOF8xOF8xMV80XzMwXzAsMCwwLDAsMCwwLDBfMjAxCQDMCAICKzE4XzE4XzEwXzE4XzE4XzE4XzIyXzRfNTBfMCwwLDAsMCwwLDAsMF8yMDEJAMwIAgIrMThfMThfMTBfMThfMThfMThfMzNfNF83MF8wLDAsMCwwLDAsMCwwXzIwMQkAzAgCAio0XzEzXzIyXzRfMzVfMjJfMjNfMF81MCwxLDBfMCwwLDAsMCwwLDAsMF8JAMwIAgIqNF8xM18yMl80XzM1XzIyXzQ2XzBfNTAsMSwxXzAsMiw1LDAsMCwwLDBfCQDMCAICKzRfMTNfMjJfNF8zNV8yMl82OV8wXzUwLDIsMV8wLDUsMTAsMCwwLDAsMF8JAMwIAgIqNV8yNV80MF81XzEwXzE1XzIwXzFfMzAsMSwxXzAsMCwwLDAsMCwwLDBfCQDMCAICKjVfMjVfNDBfNV8xMF8xNV80MF8xXzMwLDEsMl8yLDEsMywwLDAsMCwwXwkAzAgCAio1XzI1XzQwXzVfMTBfMTVfNjBfMV8zMCwxLDNfNSwyLDgsMCwwLDAsMF8FA25pbAAJcklkeENvZWZmAAYACnJJZHhFZmZlY3QACAAQcklkeFJlcXVpcmVtZW50cwAJAAlySWR4U2xvdHMACgAOUFJPRFVDVFBLR1NJWkUACgALd2hJZHhMZXZlbHMAAAAId2hJZHhSZXMAAQAId2hJZHhNYXQAAgAJd2hJZHhQcm9kAAMACXdoSWR4TE9GVAAEAAl2b2xMb2NrZWQAAAALdm9sT2NjdXBpZWQAAQAHdm9sRnJlZQACAAh2b2xUb3RhbAADAApicElkeExldmVsAAAACGJwSWR4UmVzAAEACGJwSWR4TWF0AAIACWJwSWR4UHJvZAADARFrZXlMYXN0VHhJZEJ5VXNlcgEEYWRkcgkArAICAg9sYXN0VHhJZEJ5VXNlcl8FBGFkZHIBFWtleUxhbmRBc3NldElkVG9Pd25lcgEHYXNzZXRJZAkArAICAgluZnRPd25lcl8FB2Fzc2V0SWQBGmtleUxhbmRBc3NldElkVG9DdXN0b21OYW1lAQdhc3NldElkCQCsAgICGGxhbmRDdXN0b21OYW1lQnlBc3NldElkXwUHYXNzZXRJZAEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEHYXNzZXRJZAkArAICAgtzdGFrZWRUaW1lXwUHYXNzZXRJZAEga2V5TGFuZEFydFN0YXR1c0J5VHlwZUFuZEFzc2V0SWQCBHR5cGUHYXNzZXRJZAkAuQkCCQDMCAICDWxhbmRBcnRTdGF0dXMJAMwIAgUEdHlwZQkAzAgCBQdhc3NldElkBQNuaWwCAV8BImtleVN0YWtlZFRpbWVCeVR5cGVBc3NldElkQW5kT3duZXIDB25mdFR5cGUHYXNzZXRJZAlvd25lckFkZHIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAiBzdGFrZWRUaW1lQnlUeXBlQXNzZXRJZEFuZE93bmVyXwUHbmZ0VHlwZQIBXwUHYXNzZXRJZAIBXwUJb3duZXJBZGRyARJrZXlXYXJlaG91c2VCeUxhbmQBC2xhbmRBc3NldElkCQCsAgICCndhcmVIb3VzZV8FC2xhbmRBc3NldElkARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQdhc3NldElkCQCsAgICC2luZnJhTGV2ZWxfBQdhc3NldElkARdrZXlGb3J0aWZpY2F0aW9uc0J5TGFuZAELbGFuZEFzc2V0SWQJAKwCAgIPZm9ydGlmaWNhdGlvbnNfBQtsYW5kQXNzZXRJZAEaa2V5RHVja0Fzc2V0SWRUb0N1c3RvbU5hbWUBB2Fzc2V0SWQJAKwCAgIYZHVja0N1c3RvbU5hbWVCeUFzc2V0SWRfBQdhc3NldElkARZrZXlBZGRyZXNzVG9DdXN0b21OYW1lAQRhZGRyCQCsAgICGGFjY291bnRDdXN0b21OYW1lQnlBZGRyXwUEYWRkcgEPa2V5QWRkcmVzc1JlZkJ5AQRhZGRyCQCsAgICCWFjY1JlZkJ5XwUEYWRkcgEca2V5T25ib2FyZEFydEFjdGl2YXRlZE9uRHVjawELZHVja0Fzc2V0SWQJAKwCAgIab25ib2FyZEFydEFjdGl2YXRlZE9uRHVja18FC2R1Y2tBc3NldElkARxrZXlPbmJvYXJkQXJ0RHVja0FjdGl2YXRlZEJ5AQRhZGRyCQCsAgICGm9uYm9hcmRBcnRBY3RpdmF0ZWREdWNrQnlfBQRhZGRyARNrZXlBZGRyZXNzUmVmZXJyYWxzAQRhZGRyCQCsAgICDWFjY1JlZmVycmFsc18FBGFkZHIBEGtleUR1Y2tJZFRvT3duZXIBB2Fzc2V0SWQJAKwCAgIKZHVja093bmVyXwUHYXNzZXRJZAEUa2V5U3Rha2VkRHVja0J5T3duZXIBCW93bmVyQWRkcgkArAICAhJzdGFrZWREdWNrQnlPd25lcl8FCW93bmVyQWRkcgERa2V5QmFja3BhY2tCeUR1Y2sBC2R1Y2tBc3NldElkCQCsAgICCWJhY2tQYWNrXwULZHVja0Fzc2V0SWQBD2tleUR1Y2tMb2NhdGlvbgELZHVja0Fzc2V0SWQJAKwCAgINZHVja0xvY2F0aW9uXwULZHVja0Fzc2V0SWQBCmtleUJsb2NrZWQAAhBjb250cmFjdHNCbG9ja2VkARVrZXlVc2VyR3dsUmVsZWFzZVRpbWUBCHVzZXJBZGRyCQCsAgICGiVzJXNfX3VzZXJHd2xSZWxlYXNlVGltZV9fBQh1c2VyQWRkcgEOa2V5RXNXYXJlaG91c2UAAhplbWVyZ2VuY3lXYXJlaG91c2VQcm9kdWN0cwANbGFzdFRvdXJJZEtleQIOJXNfX2xhc3RUb3VySWQBFWtleVRvdXJTdGF0aWNEYXRhQnlJZAEDdElkCQCsAgICFiVzJWRfX3RvdXJTdGF0aWNEYXRhX18JAKQDAQUDdElkARZrZXlUb3VyRHluYW1pY0RhdGFCeUlkAQN0SWQJAKwCAgIXJXMlZF9fdG91ckR5bmFtaWNEYXRhX18JAKQDAQUDdElkAAlpZHhTdGF0aWMAAAAKaWR4RHluYW1pYwABAQtnZXRUb3VyRGF0YQIMdG91ckNvbnRyYWN0A3RJZAQGc3RhdGljCQC1CQIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQx0b3VyQ29udHJhY3QJARVrZXlUb3VyU3RhdGljRGF0YUJ5SWQBBQN0SWQJAKwCAgkArAICAhlFcnJvciByZWFkaW5nIHRvdXJuYW1lbnQgCQCkAwEFA3RJZAIFIGRhdGECAl9fBAdkeW5hbWljCQC1CQIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQx0b3VyQ29udHJhY3QJARZrZXlUb3VyRHluYW1pY0RhdGFCeUlkAQUDdElkCQCsAgIJAKwCAgIZRXJyb3IgcmVhZGluZyB0b3VybmFtZW50IAkApAMBBQN0SWQCBSBkYXRhAgJfXwkAzAgCBQZzdGF0aWMJAMwIAgUHZHluYW1pYwUDbmlsAAp0U3RhdGljRW5kAAYADnREeW5hbWljU3RhdHVzAAEAEXREeW5hbWljV2luUmVzdWx0AAMAD2xvY0lkeENvbnRpbmVudAAAAApsb2NJZHhUeXBlAAEACGxvY0lkeElkAAIBGmtleUJlc3RSZXN1bHRCeVRvdXJBbmREdWNrAgN0SWQLZHVja0Fzc2V0SWQJALkJAgkAzAgCAh8lcyVkJXNfX2Jlc3RSZXN1bHRCeVRvdXJBbmREdWNrCQDMCAIJAKQDAQUDdElkCQDMCAIFC2R1Y2tBc3NldElkBQNuaWwCAl9fARJnZXRSZWNpcGVNYXRlcmlhbHMBBnJlY2lwZQkAaAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQZyZWNpcGUFCXJJZHhDb2VmZgUJQ09FRkYyTUFUABZLU19TRVBBUkFURV9QVUJMSUNfS0VZBwAYS1NfQUxMT1dfQklHX0lORlJBX01FUkdFBwAFY2hhaW4JAMkBAgkAygECCAUEdGhpcwVieXRlcwABAAEAC3VzZHRBc3NldElkBAckbWF0Y2gwBQVjaGFpbgMJAAACAQFXBQckbWF0Y2gwASCE2nqyCAM/TtG7yo7ui5O8yYLdC136B5ao1CP5qA//uQMJAAACAQFUBQckbWF0Y2gwASBVsdifcoeC7+XjW42sBatl3ppDoS8WuwXzGreHpfHFGAkAAgECDVVua25vd24gY2hhaW4AFWRlZmF1bHRSZXN0QWRkcmVzc1N0cgQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMAIjM1BRQ3V2RmJ2aDRMa1BVbnJuVTF6M2puYkExcDltM1dOaHYDCQAAAgEBVAUHJG1hdGNoMAIjM011bWtHR3p0Q0tBWHBXRHF4a2Rkb2ZxWFNVYnFRa3ZTSnkJAAIBAg1Vbmtub3duIGNoYWluABFJbmZyYVVwZ3JhZGVDb3N0UwQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMACAyK+gJQMJAAACAQFUBQckbWF0Y2gwAIDC1y8JAAIBAg1Vbmtub3duIGNoYWluAA5hcmJpdHJhZ2VEZWxheQQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMACAuJkpAwkAAAIBAVQFByRtYXRjaDAA4NQDCQACAQINVW5rbm93biBjaGFpbgADU0VQAgJfXwAFTVVMVDYAwIQ9AAVNVUxUOACAwtcvAAVTU0laRQAZAAVNU0laRQBkAAVMU0laRQDhAQAGWExTSVpFAJADAAdYWExTSVpFAPEEAAVJVEVSNgkAzAgCAAAJAMwIAgABCQDMCAIAAgkAzAgCAAMJAMwIAgAECQDMCAIABQUDbmlsAQ9nZXRTdHJpbmdPckZhaWwCB2FkZHJlc3MDa2V5CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUHYWRkcmVzcwUDa2V5CQC5CQIJAMwIAgIKbWFuZGF0b3J5IAkAzAgCCQClCAEFB2FkZHJlc3MJAMwIAgIBLgkAzAgCBQNrZXkJAMwIAgIPIGlzIG5vdCBkZWZpbmVkBQNuaWwCAAARSWR4Q2ZnU3Rha2luZ0RhcHAAAQARSWR4Q2ZnRWNvbm9teURhcHAAAgAUSWR4Q2ZnR292ZXJuYW5jZURhcHAAAwANSWR4Q2ZnV2xnRGFwcAAEABRJZHhDZmdUb3VybmFtZW50RGFwcAAHAQprZXlSZXN0Q2ZnAAIOJXNfX3Jlc3RDb25maWcBDmtleVJlc3RBZGRyZXNzAAIMJXNfX3Jlc3RBZGRyARFyZWFkUmVzdENmZ09yRmFpbAEEcmVzdAkAvAkCCQEPZ2V0U3RyaW5nT3JGYWlsAgUEcmVzdAkBCmtleVJlc3RDZmcABQNTRVABGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIHcmVzdENmZwNpZHgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFB3Jlc3RDZmcFA2lkeAkArAICAipSZXN0IGNmZyBkb2Vzbid0IGNvbnRhaW4gYWRkcmVzcyBhdCBpbmRleCAJAKQDAQUDaWR4AAxyZXN0Q29udHJhY3QJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwkBDmtleVJlc3RBZGRyZXNzAAUVZGVmYXVsdFJlc3RBZGRyZXNzU3RyAAdyZXN0Q2ZnCQERcmVhZFJlc3RDZmdPckZhaWwBBQxyZXN0Q29udHJhY3QAD3N0YWtpbmdDb250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFB3Jlc3RDZmcFEUlkeENmZ1N0YWtpbmdEYXBwAA9lY29ub215Q29udHJhY3QJARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCBQdyZXN0Q2ZnBRFJZHhDZmdFY29ub215RGFwcAALZ292Q29udHJhY3QJARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCBQdyZXN0Q2ZnBRRJZHhDZmdHb3Zlcm5hbmNlRGFwcAALd2xnQ29udHJhY3QJARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCBQdyZXN0Q2ZnBQ1JZHhDZmdXbGdEYXBwABJ0b3VybmFtZW50Q29udHJhY3QJARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCBQdyZXN0Q2ZnBRRJZHhDZmdUb3VybmFtZW50RGFwcAAKcmVjTGFuZE51bQAAAAtyZWNMYW5kU2l6ZQABAAtyZWNUZXJyYWlucwACAAxyZWNDb250aW5lbnQAAwANd2xnQXNzZXRJZEtleQILd2xnX2Fzc2V0SWQACndsZ0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnAgCBQt3bGdDb250cmFjdAUNd2xnQXNzZXRJZEtleQITTm90IGluaXRpYWxpemVkIHlldAALcmFuZG9tRGVsYXkAAgEJa2V5Q29tbWl0AQdhZGRyZXNzCQCsAgICE2ZpbmlzaEJsb2NrRm9yQWRkcl8FB2FkZHJlc3MBEWtleVJlc1Byb3BvcnRpb25zAAITcmVzVHlwZXNQcm9wb3J0aW9ucwEWa2V5UmVzVHlwZXNCeUNvbnRpbmVudAEJY29udGluZW50CQCsAgICFHJlc1R5cGVzQnlDb250aW5lbnRfBQljb250aW5lbnQBFWtleVN0YWtlZExhbmRzQnlPd25lcgEJb3duZXJBZGRyCQCsAgICE3N0YWtlZExhbmRzQnlPd25lcl8FCW93bmVyQWRkcgEWa2V5U3Rha2VkUGllY2VzQnlPd25lcgEJb3duZXJBZGRyCQCsAgICFHN0YWtlZFBpZWNlc0J5T3duZXJfBQlvd25lckFkZHIBCGFzU3RyaW5nAQF2BAckbWF0Y2gwBQF2AwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAUBcwkAAgECGGZhaWwgdG8gY2FzdCBpbnRvIFN0cmluZwEFYXNJbnQBAXYEByRtYXRjaDAFAXYDCQABAgUHJG1hdGNoMAIDSW50BAFuBQckbWF0Y2gwBQFuCQACAQIVZmFpbCB0byBjYXN0IGludG8gSW50AQlhc0Jvb2xlYW4BAXYEByRtYXRjaDAFAXYDCQABAgUHJG1hdGNoMAIHQm9vbGVhbgQBcwUHJG1hdGNoMAUBcwkAAgECGWZhaWwgdG8gY2FzdCBpbnRvIEJvb2xlYW4BD251bVBpZWNlc0J5U2l6ZQEIbGFuZFNpemUEByRtYXRjaDAFCGxhbmRTaXplAwkAAAICAVMFByRtYXRjaDAFBVNTSVpFAwkAAAICAU0FByRtYXRjaDAFBU1TSVpFAwkAAAICAUwFByRtYXRjaDAFBUxTSVpFAwkAAAICAlhMBQckbWF0Y2gwBQZYTFNJWkUDCQAAAgIDWFhMBQckbWF0Y2gwBQdYWExTSVpFCQACAQIRVW5rbm93biBsYW5kIHNpemUBB2lzRGlnaXQBAXMJAQlpc0RlZmluZWQBCQC2CQEFAXMBD2dldFJhbmRvbU51bWJlcgMIbWF4VmFsdWUMZmluaXNoSGVpZ2h0CmF1eEVudHJvcHkED3JhbmRvbVNlZWRCbG9jawkBBXZhbHVlAQkA7QcBBQxmaW5pc2hIZWlnaHQECnJhbmRvbUhhc2gJAPcDAQkAywECCQEFdmFsdWUBCAUPcmFuZG9tU2VlZEJsb2NrA3ZyZgUKYXV4RW50cm9weQkAagIJALEJAQUKcmFuZG9tSGFzaAUIbWF4VmFsdWUADWluY3ViYXRvckFkZHIEByRtYXRjaDAFBWNoYWluAwkAAAIBAVcFByRtYXRjaDAJARFAZXh0ck5hdGl2ZSgxMDYyKQECIzNQRWt0VnV4MlJoY2hTTjYzRHNEbzRiNG16NFFxektTZUR2AwkAAAIBAVQFByRtYXRjaDAFBHRoaXMJAAIBAg1Vbmtub3duIGNoYWluAAticmVlZGVyQWRkcgQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMAkBEUBleHRyTmF0aXZlKDEwNjIpAQIjM1BEVnVVNDVIN0VoNWRtdE5iblJOUlN0R3dVTEE3Tlk2SGIDCQAAAgEBVAUHJG1hdGNoMAUEdGhpcwkAAgECDVVua25vd24gY2hhaW4AA3B1YgQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMAMFFktTX1NFUEFSQVRFX1BVQkxJQ19LRVkBIKsXV48VZ+NZVEGw1nLrZpvEo9NmXtWZhlDfmDcfsgkIASBPU+IaP1So1p1SThMdRidVvbNT8yx7yVRUsP9DwbQUKAMJAAACAQFUBQckbWF0Y2gwASBPU+IaP1So1p1SThMdRidVvbNT8yx7yVRUsP9DwbQUKAkAAgECDVVua25vd24gY2hhaW4ADEVNUFRZX1BST0Q1MAGQAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEUZJVkVNSU5VVEVTTUlMTElTAOCnEgAMUkVOQU1JTkdDT1NUAMCWsQIACk1BWE5BTUVMRU4AMgAVSW5mcmFVcGdyYWRlQ29zdFNVc2R0AICt4gQADEVYUE1BVEVSSUFMUwQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMACm3YLtqwcDCQAAAgEBVAUHJG1hdGNoMACqp4GzCQkAAgECDVVua25vd24gY2hhaW4AB0VYUFVTRFQEByRtYXRjaDAFBWNoYWluAwkAAAIBAVcFByRtYXRjaDAAgOWadwMJAAACAQFUBQckbWF0Y2gwAIDlmncJAAIBAg1Vbmtub3duIGNoYWluAAVGSVZFWAkAtgIBAAUAB1RXRU5UWVgJALYCAQAUAAhUV0VOVFkyWAkAtgIBCQBoAgAUABQACFRXRU5UWTNYCQC2AgEJAGgCCQBoAgAUABQAFAAIVFdFTlRZNFgJALYCAQkAaAIJAGgCCQBoAgAUABQAFAAUAAhUV0VOVFk1WAkAtgIBCQBoAgkAaAIJAGgCCQBoAgAUABQAFAAUABQAD1BSRVNBTEVOVU1MQU5EUwD0AwESa2V5TmV4dEZyZWVMYW5kTnVtAAILbmV4dExhbmROdW0BGmtleUxhbmRDdXN0b21OYW1lVG9Bc3NldElkAQRuYW1lCQCsAgICEWxhbmRCeUN1c3RvbU5hbWVfBQRuYW1lARBrZXlMYW5kVG9Bc3NldElkAQdsYW5kTnVtCQCsAgICDGxhbmRUb0Fzc2V0XwUHbGFuZE51bQEea2V5SW5mcmFMZXZlbEJ5QXNzZXRJZEFuZE93bmVyAgdhc3NldElkCW93bmVyQWRkcgkArAICCQCsAgIJAKwCAgIcaW5mcmFMZXZlbEJ5QXNzZXRJZEFuZE93bmVyXwUHYXNzZXRJZAIBXwUJb3duZXJBZGRyARFrZXlMYW5kTnVtVG9Pd25lcgEHbGFuZE51bQkArAICAgpsYW5kT3duZXJfBQdsYW5kTnVtARprZXlEdWNrQ3VzdG9tTmFtZVRvQXNzZXRJZAEEbmFtZQkArAICAhFkdWNrQnlDdXN0b21OYW1lXwUEbmFtZQEWa2V5Q3VzdG9tTmFtZVRvQWRkcmVzcwEEbmFtZQkArAICAhRhY2NvdW50QnlDdXN0b21OYW1lXwUEbmFtZQEJa2V5T2xkaWVzAAIKb2xkaWVzTGlzdAALY2xhaW1Nb2RlV2gAAAANY2xhaW1Nb2RlRHVjawABABNjbGFpbU1vZGVXaFRoZW5EdWNrAAIACGZsSGVhbHRoAAAAC2ZsVGltZXN0YW1wAAUAB2ZsQm9udXMABgALZmxQcm9kc1VzZWQABwEHbmZ0TmFtZQIHbGFuZE51bQhsYW5kU2l6ZQkArAICCQCsAgIFCkxBTkRQUkVGSVgFB2xhbmROdW0FCGxhbmRTaXplAQh0b1ZvbHVtZQIGYW1vdW50B3BrZ1NpemUEBHBrZ3MDCQBnAgUGYW1vdW50AAAJAGkCCQBlAgkAZAIFBmFtb3VudAUHcGtnU2l6ZQABBQdwa2dTaXplCQEBLQEJAGkCCQBlAgkAZAIJAQEtAQUGYW1vdW50BQdwa2dTaXplAAEFB3BrZ1NpemUJAGgCBQRwa2dzBQVNVUxUOAETZGlzdHJpYnV0ZUJ5V2VpZ2h0cwIFdG90YWwHd2VpZ2h0cwQDc3VtCQBkAgkAZAIJAGQCCQBkAgkAZAIJAJEDAgUHd2VpZ2h0cwAACQCRAwIFB3dlaWdodHMAAQkAkQMCBQd3ZWlnaHRzAAIJAJEDAgUHd2VpZ2h0cwADCQCRAwIFB3dlaWdodHMABAkAkQMCBQd3ZWlnaHRzAAUDCQBnAgAABQNzdW0JAAIBAhBaZXJvIHdlaWdodHMgc3VtBAVub3JtNgkAawMFBXRvdGFsBQVNVUxUNgUDc3VtCgEKbm9ybWFsaXplcgIDYWNjBGVsZW0JAM0IAgUDYWNjCQBrAwUEZWxlbQUFbm9ybTYFBU1VTFQ2CgACJGwFB3dlaWdodHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBCm5vcm1hbGl6ZXICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDYJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYBEmdldE5lZWRlZE1hdGVyaWFscwEFdG90YWwEBXByb3BzCQC1CQIJAQV2YWx1ZQEJAKIIAQkBEWtleVJlc1Byb3BvcnRpb25zAAIBXwMJAQIhPQIJAJADAQUFcHJvcHMFBk5VTVJFUwkAAgECFldyb25nIHByb3BvcnRpb25zIGRhdGEEAXIJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXByb3BzAAAJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXByb3BzAAEJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXByb3BzAAIJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXByb3BzAAMJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXByb3BzAAQJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXByb3BzAAUFA25pbAkBE2Rpc3RyaWJ1dGVCeVdlaWdodHMCBQV0b3RhbAUBcgERc3VidHJhY3RNYXRlcmlhbHMDDHNob3VsZFVzZU1hdANoYXMJdG90YWxOZWVkBARuZWVkCQESZ2V0TmVlZGVkTWF0ZXJpYWxzAQUJdG90YWxOZWVkCgEKc3VidHJhY3RvcgIDYWNjA2lkeAQGcmVzdWx0CQBlAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA2hhcwUDaWR4CQCRAwIFBG5lZWQFA2lkeAMJAGYCAAAFBnJlc3VsdAkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAhhOb3QgZW5vdWdoIG1hdGVyaWFsIGlkeD0JAKQDAQUDaWR4AgssIHlvdSBoYXZlIAkAkQMCBQNoYXMFA2lkeAILLCBidXQgbmVlZCAJAKQDAQkAkQMCBQRuZWVkBQNpZHgJAM0IAgUDYWNjCQCkAwEFBnJlc3VsdAMFDHNob3VsZFVzZU1hdAoAAiRsBQVJVEVSNgoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEKc3VidHJhY3RvcgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNgkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgUDaGFzARFzdWJ0cmFjdEVxdWlwbWVudAIFb2xkRXEFcFVzZWQDCQAAAgUFcFVzZWQCAAkAlAoCBQVvbGRFcQcKAQdzdWJVc2VkAgNhY2MGaWR4QW10BAVwYXJ0cwkAtQkCBQZpZHhBbXQCASwDCQECIT0CCQCQAwEFBXBhcnRzAAIJAAIBAihJbmNvcnJlY3QgZm9ybWF0LCBzaG91bGQgYmUgaW5kZXgsYW1vdW50BANpZHgJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwYXJ0cwAAAwMJAGYCAAAFA2lkeAYJAGcCBQNpZHgJAJADAQUQcHJvZHVjdGlvbk1hdHJpeAkAAgECE1Vua25vd24gcHJvZHVjdCBpZHgEA2FtdAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXBhcnRzAAEEB2VxUGFydHMJALUJAggFA2FjYwJfMQkArAICCQCRAwIFBXBhcnRzAAACAToDCQECIT0CCQCQAwEFB2VxUGFydHMAAgkAAgEJAKwCAgkArAICAg9Zb3UgZG9uJ3QgaGF2ZSAJAJEDAgUJcHJvZFR5cGVzBQNpZHgCCSBlcXVpcHBlZAQDdG1wCQCRAwIFB2VxUGFydHMAAQQGbnVtTGVuAwkBB2lzRGlnaXQBCQCvAgIJALACAgUDdG1wAAEAAQACAAEEBGN1cnIJAQ1wYXJzZUludFZhbHVlAQkArwICBQN0bXAFBm51bUxlbgQEdGFpbAkAsAICBQN0bXAFBm51bUxlbgQGbmV3QW10AwkAZwIFBGN1cnIFA2FtdAkAZQIFBGN1cnIFA2FtdAkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAg1Zb3UgZXF1aXBwZWQgCQCkAwEFBGN1cnICBCBvZiAJAJEDAgUJcHJvZFR5cGVzBQNpZHgCEywgYnV0IHRyaWVkIHRvIHVzZSAJAKQDAQUDYW10CQCUCgIJAKwCAgkArAICCQCsAgIJAKwCAgkAkQMCBQdlcVBhcnRzAAAJAJEDAgUFcGFydHMAAAIBOgkApAMBBQZuZXdBbXQFBHRhaWwDCAUDYWNjAl8yBgMDCQBnAgUDaWR4AAYJAGcCAAgFA2lkeAcJAAACBQZuZXdBbXQAAAcKAAIkbAkAtQkCBQVwVXNlZAIBXwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJQKAgUFb2xkRXEHCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQdzdWJVc2VkAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRm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CQEBIQEJAQ9jb250YWluc0VsZW1lbnQCBRBmb3J0QWxsb3dlZFByb2RzBQpwcm9kdWN0SWR4CQACAQkArAICCQCsAgICCVByb2R1Y3QgJwkAkQMCBQlwcm9kVHlwZXMFCnByb2R1Y3RJZHgCIScgY2Fubm90IGJlIHVzZWQgZm9yIGxhbmQgZGVmZW5zZQMJAGYCAAAFBWNvdW50CQACAQIXQ291bnQgY2FuJ3QgYmUgbmVnYXRpdmUDCQBmAgUFY291bnQFDU1BWFBST0RJTlNMT1QJAAIBCQCsAgIJAKwCAgkArAICAhRDYW4ndCBwdXQgbW9yZSB0aGFuIAkApAMBBQ1NQVhQUk9ESU5TTE9UAgQgb2YgCQCRAwIFCXByb2RUeXBlcwUKcHJvZHVjdElkeAMJAAACBQVjb3VudAAACQCVCgMFBXBMaXN0BQhvY2N1cGllZAUEZnJlZQQEaGVhZAkAyQECBQVwTGlzdAkAaAIACAUKcHJvZHVjdElkeAQEY3VycgkAsQkBCQDJAQIJAMoBAgUFcExpc3QJAGgCAAgFCnByb2R1Y3RJZHgACAQEdGFpbAkAygECBQVwTGlzdAkAaAIACAkAZAIFCnByb2R1Y3RJZHgAAQQGcmVjaXBlCQC1CQIJAJEDAgUQcHJvZHVjdGlvbk1hdHJpeAUKcHJvZHVjdElkeAIBXwMDCQEBIQEFCmlzUG9zaXRpdmUJAGYCBQVjb3VudAUEY3VycgcJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIJWW91IGhhdmUgCQCkAwEFBGN1cnICBCBvZiAJAJEDAgUJcHJvZFR5cGVzBQpwcm9kdWN0SWR4AhMsIGJ1dCB0cmllZCB0byB1c2UgCQCkAwEFBWNvdW50BAZuZXdBbXQDAwkBASEBBQppc1Bvc2l0aXZlCQEVY2hlY2tTdGF0UmVxdWlyZW1lbnRzAgUJZHVja1N0YXRzCQC1CQIJAJEDAgUGcmVjaXBlBRBySWR4UmVxdWlyZW1lbnRzAgEsBwkAZQIFBGN1cnIFBWNvdW50CQBkAgUEY3VycgUFY291bnQECGRlbHRhVm9sCQBlAgkBCHRvVm9sdW1lAgUGbmV3QW10BQ5QUk9EVUNUUEtHU0laRQkBCHRvVm9sdW1lAgUEY3VycgUOUFJPRFVDVFBLR1NJWkUJAJUKAwkAywECCQDLAQIFBGhlYWQJAJoDAQUGbmV3QW10BQR0YWlsCQBkAgUIb2NjdXBpZWQFCGRlbHRhVm9sCQBlAgUEZnJlZQUIZGVsdGFWb2wBCGFkZFByb2RCBwZpZHhDbnQFcExpc3QKaXNQb3NpdGl2ZQdzZWdtZW50B21haW5BdXgEc2xvdAlkdWNrU3RhdHMEBXBhcnRzCQC1CQIFBmlkeENudAIBOgMJAQIhPQIJAJADAQUFcGFydHMAAgkAAgECKEluY29ycmVjdCBmb3JtYXQsIHNob3VsZCBiZSBpbmRleDphbW91bnQDAwkBASEBBQppc1Bvc2l0aXZlCQECIT0CCQCxAgEJAJEDAgUFcGFydHMAAAACBwkAAgECK1Byb2R1Y3QgaWR4IHNob3VsZCBiZSAyIGRpZ2l0cywgemVybyBwYWRkZWQECnByb2R1Y3RJZHgJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwYXJ0cwAABAVjb3VudAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXBhcnRzAAEDAwkAZgIAAAUKcHJvZHVjdElkeAYJAGcCBQpwcm9kdWN0SWR4CQCQAwEFEHByb2R1Y3Rpb25NYXRyaXgJAAIBAhNVbmtub3duIHByb2R1Y3QgaWR4AwkAZgIAAAUFY291bnQJAAIBAhdDb3VudCBjYW4ndCBiZSBuZWdhdGl2ZQMJAGYCBQVjb3VudAUNTUFYUFJPRElOU0xPVAkAAgEJAKwCAgkArAICCQCsAgICFENhbid0IHB1dCBtb3JlIHRoYW4gCQCkAwEFDU1BWFBST0RJTlNMT1QCBCBvZiAJAJEDAgUJcHJvZFR5cGVzBQpwcm9kdWN0SWR4AwkAAAIFBWNvdW50AAAJAJQKAgUFcExpc3QHBARoZWFkCQDJAQIFBXBMaXN0CQBoAgAIBQpwcm9kdWN0SWR4BARjdXJyCQCxCQEJAMkBAgkAygECBQVwTGlzdAkAaAIACAUKcHJvZHVjdElkeAAIBAR0YWlsCQDKAQIFBXBMaXN0CQBoAgAICQBkAgUKcHJvZHVjdElkeAABBAZyZWNpcGUJALUJAgkAkQMCBRBwcm9kdWN0aW9uTWF0cml4BQpwcm9kdWN0SWR4AgFfAwMJAQEhAQUKaXNQb3NpdGl2ZQkAZgIFBWNvdW50BQRjdXJyBwkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAglZb3UgaGF2ZSAJAKQDAQUEY3VycgIEIG9mIAkAkQMCBQlwcm9kVHlwZXMFCnByb2R1Y3RJZHgCEywgYnV0IHRyaWVkIHRvIHVzZSAJAKQDAQUFY291bnQECWlzQmlnSXRlbQMDCQEBIQEFCmlzUG9zaXRpdmUJARVjaGVja1N0YXRSZXF1aXJlbWVudHMCBQlkdWNrU3RhdHMJALUJAgkAkQMCBQZyZWNpcGUFEHJJZHhSZXF1aXJlbWVudHMCASwHBAZjb21wYXQJAJEDAgUGcmVjaXBlBQlySWR4U2xvdHMDCQAAAgUGY29tcGF0AgAJAAIBAhdJdGVtIGNhbm5vdCBiZSBlcXVpcHBlZAQBYwkBDXBhcnNlSW50VmFsdWUBBQZjb21wYXQEBGNTZWcJAGkCBQFjAGQDCQECIT0CBQdzZWdtZW50BQRjU2VnCQACAQIUU2VnbWVudCBpbmNvbXBhdGlibGUECGNNYWluQXV4CQBpAgkAagIFAWMAZAAKAwkBAiE9AgUHbWFpbkF1eAUIY01haW5BdXgJAAIBAhFTbG90IGluY29tcGF0aWJsZQQJY051bVNsb3RzCQBqAgUBYwAKAwMJAQIhPQIFBHNsb3QAAAkAZgIFCWNOdW1TbG90cwABBwkAAgECHkJpZyBpdGVtcyBzaG91bGQgb2NjdXB5IHNsb3QgMAkAZgIFCWNOdW1TbG90cwABBwkAlAoCCQDLAQIJAMsBAgUEaGVhZAkAmgMBCQBkAgUEY3VycgMFCmlzUG9zaXRpdmUFBWNvdW50CQEBLQEFBWNvdW50BQR0YWlsBQlpc0JpZ0l0ZW0BC3Nsb3RzR3JvdXBCBgFnBGJwSW4KaXNQb3NpdGl2ZQdzZWdtZW50B21haW5BdXgFc3RhdHMDCQECIT0CBQFnAgAEBXNsb3RzCQC1CQIFAWcCASwDCQBmAgkAkAMBBQVzbG90cwUITUFYU0xPVFMJAAIBAhJXcm9uZyBzbG90cyBmb3JtYXQEAnMwCQCRAwIFBXNsb3RzAAAEAnMxAwkAZgIJAJADAQUFc2xvdHMAAQkAkQMCBQVzbG90cwABAgADAwkAAAIFAnMwAgAJAAACBQJzMQIABwUEYnBJbgQFdG1wUzADCQECIT0CBQJzMAIACQEIYWRkUHJvZEIHBQJzMAUEYnBJbgUKaXNQb3NpdGl2ZQUHc2VnbWVudAUHbWFpbkF1eAAABQVzdGF0cwkAlAoCBQRicEluBwMJAQIhPQIFAnMxAgADCAUFdG1wUzACXzIJAAIBAh5CaWcgaXRlbSBhbHJlYWR5IG9jY3VwaWVzIHNsb3QICQEIYWRkUHJvZEIHBQJzMQgFBXRtcFMwAl8xBQppc1Bvc2l0aXZlBQdzZWdtZW50BQdtYWluQXV4AAEFBXN0YXRzAl8xCAUFdG1wUzACXzEFBGJwSW4BBmRyZXNzQgQHc2VnTGlzdAZwQnl0ZXMKaXNQb3NpdGl2ZQVzdGF0cwoBB3NlZ21lbnQCA2FjYwNzZWcEAWoIBQNhY2MCXzEEB21haW5BdXgJALUJAgUDc2VnAgE7AwkBAiE9AgkAkAMBBQdtYWluQXV4BQpOVU1NQUlOQVVYCQACAQIUV3Jvbmcgc2VnbWVudCBmb3JtYXQEAW0JAJEDAgUHbWFpbkF1eAAABAFhCQCRAwIFB21haW5BdXgAAQMDCQAAAgUBbQIACQAAAgUBYQIABwkAlAoCCQBkAgUBagABCAUDYWNjAl8yBAR0bXBNCQELc2xvdHNHcm91cEIGBQFtCAUDYWNjAl8yBQppc1Bvc2l0aXZlBQFqAAAFBXN0YXRzCQCUCgIJAGQCBQFqAAEJAQtzbG90c0dyb3VwQgYFAWEFBHRtcE0FCmlzUG9zaXRpdmUFAWoAAQUFc3RhdHMICgACJGwFB3NlZ0xpc3QKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCUCgIAAAUGcEJ5dGVzCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQdzZWdtZW50AgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA2CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAl8yAQVmb3J0QgYHc2VnTGlzdAZwQnl0ZXMIb2NjdXBpZWQEZnJlZQppc1Bvc2l0aXZlCWR1Y2tTdGF0cwMJAGYCAAMJAJADAQUHc2VnTGlzdAkAAgECMUF0IGxlYXN0IGR1Y2ssIG1pbmVzIGFuZCB0cmFwcyBwYXJ0cyBhcmUgcmVxdWlyZWQKAQdzZWdtZW50AgNhY2MDc2VnBAFqCAUDYWNjAl8xAwkAAAIFAWoAAAkAlgoECQBkAgUBagABCAUDYWNjAl8yCAUDYWNjAl8zCAUDYWNjAl80BAFwCQEKcGxhY2VQcm9kQgYFA3NlZwgFA2FjYwJfMgUKaXNQb3NpdGl2ZQUJZHVja1N0YXRzCAUDYWNjAl8zCAUDYWNjAl80CQCWCgQJAGQCBQFqAAEIBQFwAl8xCAUBcAJfMggFAXACXzMEAXQKAAIkbAUHc2VnTGlzdAoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJYKBAAABQZwQnl0ZXMFCG9jY3VwaWVkBQRmcmVlCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQdzZWdtZW50AgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKCQCVCgMIBQF0Al8yCAUBdAJfMwgFAXQCXzQBF2NhbldlYXJDdXJyZW50RXF1aXBtZW50AQtkdWNrQXNzZXRJZAQFZXFLZXkJARBrZXlEdWNrRXF1aXBtZW50AQULZHVja0Fzc2V0SWQEBmN1cnJFcQkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEFBWVxS2V5AhcsOyxfLDssXyw7LF8sOyxfLDssXyw7LAIBXwQJdGVtcFByb2RCCQEGZHJlc3NCBAUGY3VyckVxBQxFTVBUWV9QUk9ENTAGBQNuaWwECHNlZ0JwQXV4CQCRAwIJALUJAgkAkQMCBQZjdXJyRXEFC3NlZ0JhY2twYWNrAgE7AAEECmJ1ZmZFZmZlY3QDCQAAAgUIc2VnQnBBdXgCAAAABARhdXgwCQCRAwIJALUJAgUIc2VnQnBBdXgCASwAAAMJAAACBQRhdXgwAgAAAAQGaWR4Q250CQC1CQIFBGF1eDACAToEA2lkeAkAkQMCBQZpZHhDbnQAAAQDY250CQCRAwIFBmlkeENudAABAwMDAwMJAAACBQNpZHgCAjA2BgkAAAIFA2lkeAICMDcGCQAAAgUDaWR4AgIwOAkBAiE9AgUDY250AgAHCQBmAgkBDXBhcnNlSW50VmFsdWUBBQNjbnQAAAcJAQ1wYXJzZUludFZhbHVlAQkAkQMCCQC1CQIJAJEDAgUQcHJvZHVjdGlvbk1hdHJpeAkBDXBhcnNlSW50VmFsdWUBBQNpZHgCAV8FCnJJZHhFZmZlY3QAAAQFc3RhdHMJAQxnZXREdWNrU3RhdHMEBQR0aGlzBQtkdWNrQXNzZXRJZAUKYnVmZkVmZmVjdAYECG5ld1Byb2RCCQEGZHJlc3NCBAUGY3VyckVxBQl0ZW1wUHJvZEIHBQVzdGF0cwkAAAIFCG5ld1Byb2RCBQhuZXdQcm9kQgEZdXBkYXRlUHJvcG9ydGlvbnNJbnRlcm5hbAQIcHJvcExpc3QNdGVycmFpbkNvdW50cw1sYW5kU2l6ZUluZGV4BHNpZ24DCQECIT0CCQCQAwEFCHByb3BMaXN0BQZOVU1SRVMJAAIBAhZXcm9uZyBwcm9wb3J0aW9ucyBkYXRhCgEHdXBkYXRlcgIDYWNjAWkEBnJlc3VsdAkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQhwcm9wTGlzdAUBaQkAaAIJAGgCBQRzaWduCQCRAwIFDXRlcnJhaW5Db3VudHMFAWkFDWxhbmRTaXplSW5kZXgDCQBmAgAABQZyZXN1bHQJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICFlBhbmljISBQaWVjZXMgb2YgdHlwZT0JAKQDAQUBaQIHLCBzaWduPQkApAMBBQRzaWduAhMsIHRlcnJhaW5Db3VudHNbaV09CQCkAwEJAJEDAgUNdGVycmFpbkNvdW50cwUBaQIQLCBsYW5kU2l6ZUluZGV4PQkApAMBBQ1sYW5kU2l6ZUluZGV4CQDNCAIFA2FjYwkApAMBBQZyZXN1bHQKAAIkbAUFSVRFUjYKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBB3VwZGF0ZXICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDYJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYBEXVwZGF0ZVByb3BvcnRpb25zAw10ZXJyYWluQ291bnRzDWxhbmRTaXplSW5kZXgEc2lnbgQIcHJvcExpc3QJALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBCQERa2V5UmVzUHJvcG9ydGlvbnMAAgswXzBfMF8wXzBfMAIBXwkAuQkCCQEZdXBkYXRlUHJvcG9ydGlvbnNJbnRlcm5hbAQFCHByb3BMaXN0BQ10ZXJyYWluQ291bnRzBQ1sYW5kU2l6ZUluZGV4BQRzaWduAgFfAQ1jb3VudFRlcnJhaW5zAQh0ZXJyYWlucwkAzAgCCQBlAgkAkAMBCQC1CQIFCHRlcnJhaW5zAgFBAAEJAMwIAgkAZQIJAJADAQkAtQkCBQh0ZXJyYWlucwIBQgABCQDMCAIJAGUCCQCQAwEJALUJAgUIdGVycmFpbnMCAUMAAQkAzAgCCQBlAgkAkAMBCQC1CQIFCHRlcnJhaW5zAgFEAAEJAMwIAgkAZQIJAJADAQkAtQkCBQh0ZXJyYWlucwIBRQABCQDMCAIJAGUCCQCQAwEJALUJAgUIdGVycmFpbnMCAUYAAQUDbmlsAQZhZGRSZXMFCmN1cnJlbnRSZXMNdGVycmFpbkNvdW50cwlkZWx0YVRpbWUNbGFuZFNpemVJbmRleBdkYWlseUJ5UGllY2VXaXRoQm9udXNlcwoBBWFkZGVyAgNhY2MBaQQJcmVzT2ZUeXBlCQBoAgkAaAIJAGsDBQlkZWx0YVRpbWUFF2RhaWx5QnlQaWVjZVdpdGhCb251c2VzBQlEQVlNSUxMSVMJAJEDAgUNdGVycmFpbkNvdW50cwUBaQUNbGFuZFNpemVJbmRleAkAzQgCBQNhY2MJAKQDAQkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQpjdXJyZW50UmVzBQFpBQlyZXNPZlR5cGUEAXIKAAIkbAUFSVRFUjYKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBBWFkZGVyAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA2CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGCQC5CQIFAXICAV8BCXZpcnRDbGFpbQQNdGVycmFpbkNvdW50cwlkZWx0YVRpbWUNbGFuZFNpemVJbmRleBdkYWlseUJ5UGllY2VXaXRoQm9udXNlcwoBBWFkZGVyAgNhY2MBaQQJcmVzT2ZUeXBlCQBoAgkAaAIJAGsDBQlkZWx0YVRpbWUFF2RhaWx5QnlQaWVjZVdpdGhCb251c2VzBQlEQVlNSUxMSVMJAJEDAgUNdGVycmFpbkNvdW50cwUBaQUNbGFuZFNpemVJbmRleAkAlAoCCQDNCAIIBQNhY2MCXzEFCXJlc09mVHlwZQkAZAIIBQNhY2MCXzIFCXJlc09mVHlwZQoAAiRsBQVJVEVSNgoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJQKAgUDbmlsAAAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBBWFkZGVyAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA2CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAQ1kaXN0cmlidXRlUmVzBAxjdXJyZW50V2hSZXMOY3VycmVudFBhY2tSZXMKcmVzVG9DbGFpbQt3aFNwYWNlTGVmdAQOcmVzTGlzdFRvQ2xhaW0IBQpyZXNUb0NsYWltAl8xBAxyZXNBbVRvQ2xhaW0IBQpyZXNUb0NsYWltAl8yAwkAAAIFDHJlc0FtVG9DbGFpbQAACQCUCgIJALkJAgUMY3VycmVudFdoUmVzAgFfCQC5CQIFDmN1cnJlbnRQYWNrUmVzAgFfAwkAZwIFC3doU3BhY2VMZWZ0BQxyZXNBbVRvQ2xhaW0KAQhhZGRMaXN0cwIDYWNjAWkJAM0IAgUDYWNjCQCkAwEJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUMY3VycmVudFdoUmVzBQFpCQCRAwIFDnJlc0xpc3RUb0NsYWltBQFpBAFyCgACJGwFBUlURVI2CgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQhhZGRMaXN0cwIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNgkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgkAlAoCCQC5CQIFAXICAV8JALkJAgUOY3VycmVudFBhY2tSZXMCAV8KAQxhZGRQYXJ0TGlzdHMCA2FjYwFpBAZ3aFBhcnQJAGsDCQCRAwIFDnJlc0xpc3RUb0NsYWltBQFpBQt3aFNwYWNlTGVmdAUMcmVzQW1Ub0NsYWltCQCUCgIJAM0IAggFA2FjYwJfMQkApAMBCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFDGN1cnJlbnRXaFJlcwUBaQUGd2hQYXJ0CQDNCAIIBQNhY2MCXzIJAKQDAQkAZQIJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUOY3VycmVudFBhY2tSZXMFAWkJAJEDAgUOcmVzTGlzdFRvQ2xhaW0FAWkFBndoUGFydAQBcgoAAiRsBQVJVEVSNgoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJQKAgUDbmlsBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBDGFkZFBhcnRMaXN0cwIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNgkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgkAlAoCCQC5CQIIBQFyAl8xAgFfCQC5CQIIBQFyAl8yAgFfAQNhYnMBAXgDCQDAAgIFAXgJALYCAQAABQF4CQC+AgEFAXgABGZyZXEJAMwIAgkAzAgCAAYJAMwIAgAJCQDMCAIADgkAzAgCAA8JAMwIAgAQBQNuaWwJAMwIAgkAzAgCAAUJAMwIAgAICQDMCAIADQkAzAgCAA4JAMwIAgAPBQNuaWwJAMwIAgkAzAgCAAEJAMwIAgAECQDMCAIACQkAzAgCAAoJAMwIAgAPBQNuaWwJAMwIAgkAzAgCAAEJAMwIAgAGCQDMCAIABwkAzAgCAA8JAMwIAgATBQNuaWwJAMwIAgkAzAgCAAQJAMwIAgAHCQDMCAIACAkAzAgCAA0JAMwIAgASBQNuaWwFA25pbAEHZ2VuQ2hhcgIBbgVmcmVxcwQDcmVtCQCgAwEJALsCAgUBbgUHVFdFTlRZWAQGbGV0dGVyAwkAZgIJAJEDAgUFZnJlcXMAAAUDcmVtAgFBAwkAZgIJAJEDAgUFZnJlcXMAAQUDcmVtAgFCAwkAZgIJAJEDAgUFZnJlcXMAAgUDcmVtAgFDAwkAZgIJAJEDAgUFZnJlcXMAAwUDcmVtAgFEAwkAZgIJAJEDAgUFZnJlcXMABAUDcmVtAgFFAgFGBQZsZXR0ZXIBC2dlblRlcnJhaW5zAgRzZWVkDGNvbnRpbmVudElkeAQBZgkAkQMCBQRmcmVxBQxjb250aW5lbnRJZHgKARB0ZXJyYWluR2VuZXJhdG9yAgNhY2MEZWxlbQkAlAoCCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAggFA2FjYwJfMQkBB2dlbkNoYXICCAUDYWNjAl8yBQFmCQEHZ2VuQ2hhcgIJALoCAggFA2FjYwJfMgUHVFdFTlRZWAUBZgkBB2dlbkNoYXICCQC6AgIIBQNhY2MCXzIFCFRXRU5UWTJYBQFmCQEHZ2VuQ2hhcgIJALoCAggFA2FjYwJfMgUIVFdFTlRZM1gFAWYJAQdnZW5DaGFyAgkAugICCAUDYWNjAl8yBQhUV0VOVFk0WAUBZgkA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dmVscwkAzAgCAwkAAAIJAJADAQkAtQkCCQCRAwIFAndoBQh3aElkeFJlcwIBXwUGTlVNUkVTCQCRAwIFAndoBQh3aElkeFJlcwILMF8wXzBfMF8wXzAJAMwIAgMJAAACCQCQAwEJALUJAgkAkQMCBQJ3aAUId2hJZHhNYXQCAV8FBk5VTVJFUwkAkQMCBQJ3aAUId2hJZHhNYXQCCzBfMF8wXzBfMF8wCQDMCAIJAJEDAgUCd2gFCXdoSWR4UHJvZAkAzAgCBQZ3aExvZnQFA25pbAEVZ2V0V2FyZWhvdXNlU3BhY2VMZWZ0AQljdXJyZW50V2gEC29jY3VwaWVkVm9sCQEXZ2V0V2FyZWhvdXNlT2NjdXBpZWRWb2wBBQljdXJyZW50V2gED2N1cnJXaExvY2tlZFZvbAkBDXBhcnNlSW50VmFsdWUBCQCRAwIJALUJAgkAkQMCBQljdXJyZW50V2gFCXdoSWR4TE9GVAIBXwUJdm9sTG9ja2VkCQBlAgkAZQIJARdnZXRXYXJlaG91c2VUb3RhbFZvbHVtZQEJAJEDAgUJY3VycmVudFdoBQt3aElkeExldmVscwULb2NjdXBpZWRWb2wFD2N1cnJXaExvY2tlZFZvbAEJbW92ZVN0dWZmAwpjYXJnb1BhcnRzCWN1cnJlbnRXaAtjdXJyZW50UGFjawMJAQIhPQIJAJADAQUKY2FyZ29QYXJ0cwADCQACAQI0Y2FyZ29MaXN0U3RyIHNob3VsZCBjb250YWluIGV4YWN0bHkgMiAnOicgc2VwYXJhdG9ycwQIcmVzUGFydHMJALUJAgkAkQMCBQpjYXJnb1BhcnRzAAACAV8ECG1hdFBhcnRzCQC1CQIJAJEDAgUKY2FyZ29QYXJ0cwABAgFfBAlwcm9kUGFydHMDCQAAAgkAkQMCBQpjYXJnb1BhcnRzAAICAAUDbmlsCQC8CQIJAJEDAgUKY2FyZ29QYXJ0cwACAgFfAwkBAiE9AgkAkAMBBQhyZXNQYXJ0cwUGTlVNUkVTCQACAQIgQWxsIDYgcmVzb3VyY2VzIHNob3VsZCBiZSBwYXNzZWQDCQECIT0CCQCQAwEFCG1hdFBhcnRzBQZOVU1SRVMJAAIBAiBBbGwgNiBtYXRlcmlhbHMgc2hvdWxkIGJlIHBhc3NlZAQLd2hTcGFjZUxlZnQJARVnZXRXYXJlaG91c2VTcGFjZUxlZnQBBQljdXJyZW50V2gECWN1cnJXaFJlcwkAtQkCCQCRAwIFCWN1cnJlbnRXaAUId2hJZHhSZXMCAV8ECWN1cnJXaE1hdAkAtQkCCQCRAwIFCWN1cnJlbnRXaAUId2hJZHhNYXQCAV8ECmN1cnJXaFByb2QDCQAAAgkAkQMCBQljdXJyZW50V2gFCXdoSWR4UHJvZAIABQNuaWwJALwJAgkAkQMCBQljdXJyZW50V2gFCXdoSWR4UHJvZAIBXwQOY3VycmVudFBhY2tSZXMJALUJAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhSZXMCAV8EDmN1cnJlbnRQYWNrTWF0CQC1CQIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4TWF0AgFfBA9jdXJyZW50UGFja1Byb2QDCQAAAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kAgAFA25pbAkAvAkCCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QCAV8KAQNtdlICA2FjYwRpdGVtBAFpCAUDYWNjAl8xBAJhbQkBDXBhcnNlSW50VmFsdWUBBQRpdGVtBAN3aHIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQljdXJyV2hSZXMFAWkEA2JwcgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFDmN1cnJlbnRQYWNrUmVzBQFpAwkAAAIFAmFtAAAJAJYKBAkAZAIFAWkAAQkAzQgCCAUDYWNjAl8yCQCRAwIFCWN1cnJXaFJlcwUBaQkAzQgCCAUDYWNjAl8zCQCRAwIFDmN1cnJlbnRQYWNrUmVzBQFpCAUDYWNjAl80AwkAZgIFAmFtAAADCQBmAgUCYW0FA2JwcgkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgIQQXR0ZW1wdCB0byB0YWtlIAUEaXRlbQIZIGZyb20gYmFja3BhY2ssIGJ1dCBvbmx5IAkApAMBBQNicHICCiBhdmFpbGFibGUJAJYKBAkAZAIFAWkAAQkAzQgCCAUDYWNjAl8yCQCkAwEJAGQCBQN3aHIFAmFtCQDNCAIIBQNhY2MCXzMJAKQDAQkAZQIFA2JwcgUCYW0JAGQCCAUDYWNjAl80BQJhbQMJAGYCCQEBLQEFAmFtBQN3aHIJAAIBCQCsAgIJ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BQVGSVZFWAQIdGVycmFpbnMJAQtnZW5UZXJyYWlucwIFBmJpZ051bQUMY29udGluZW50SWR4BAljb250aW5lbnQJAJEDAgUKY29udGluZW50cwUMY29udGluZW50SWR4BAVpc3N1ZQkAwggFCQEHbmZ0TmFtZQIFB2xhbmROdW0CAVMJALkJAgkAzAgCBQdsYW5kTnVtCQDMCAICAVMJAMwIAgUIdGVycmFpbnMJAMwIAgUJY29udGluZW50BQNuaWwCAV8AAQAABwQHYXNzZXRJZAkAuAgBBQVpc3N1ZQQCaWQJANgEAQUHYXNzZXRJZAkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQESa2V5TmV4dEZyZWVMYW5kTnVtAAkAZAIFB2ZyZWVOdW0AAQkAzAgCBQVpc3N1ZQkAzAgCCQELU3RyaW5nRW50cnkCCQEQa2V5TGFuZFRvQXNzZXRJZAEFB2xhbmROdW0FAmlkCQDMCAIJAQtTdHJpbmdFbnRyeQIJARVrZXlMYW5kQXNzZXRJZFRvT3duZXIBBQJpZAUIdXNlckFkZHIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEWtleUxhbmROdW1Ub093bmVyAQUHbGFuZE51bQUIdXNlckFkZHIJAMwIAgkBDEludGVnZXJFbnRyeQIJARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQUCaWQAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBHmtleUluZnJhTGV2ZWxCeUFzc2V0SWRBbmRPd25lcgIFAmlkBQh1c2VyQWRkcgAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFBmNhbGxlcgABBQdhc3NldElkBQNuaWwJAJQKAgUCaWQFCWNvbnRpbmVudAEMZmxpZ2h0Q29tbW9uAwh1c2VyQWRkcgdtZXNzYWdlA3NpZwMJAQEhAQkAxBMDBQdtZXNzYWdlBQNzaWcFA3B1YgkAAgECGHNpZ25hdHVyZSBkb2VzIG5vdCBtYXRjaAQFcGFydHMJALUJAgkAsAkBBQdtZXNzYWdlAgE7BAlmbGlnaHRMb2cJALUJAgkAkQMCBQVwYXJ0cwAAAgF8BAJocAkAtQkCCQCRAwIFCWZsaWdodExvZwUIZmxIZWFsdGgCAV8EBWN1ckhQCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCaHAAAAQFbmV3SFAJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJocAABBAtuZXdMb2NUeFZlcgkAtQkCCQCRAwIFBXBhcnRzAAECAToEC25ld0xvY2F0aW9uCQCRAwIFC25ld0xvY1R4VmVyAAAEBHRpbWUJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQlmbGlnaHRMb2cFC2ZsVGltZXN0YW1wAwMJAGYCBQR0aW1lCQBkAggFCWxhc3RCbG9jawl0aW1lc3RhbXAFEUZJVkVNSU5VVEVTTUlMTElTBgkAZgIJAGUCCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAURRklWRU1JTlVURVNNSUxMSVMFBHRpbWUJAAIBCQCsAgIJAKwCAgkArAICAhxzaWduYXR1cmUgb3V0ZGF0ZWQ6IGxvZ1RpbWU9CQCkAwEFBHRpbWUCCSwgYmNUaW1lPQkApAMBCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQJdHhGcm9tTXNnCQCRAwIFC25ld0xvY1R4VmVyAAEEBmxhc3RUeAkBC3ZhbHVlT3JFbHNlAgkAoggBCQERa2V5TGFzdFR4SWRCeVVzZXIBBQh1c2VyQWRkcgIAAwkBAiE9AgUGbGFzdFR4BQl0eEZyb21Nc2cJAAIBCQCsAgIJAKwCAgkArAICAh5UeCBpZHMgZG9uJ3QgbWF0Y2ghIEluIHN0YXRlOiAFBmxhc3RUeAIKLCBpbiBtc2c6IAUJdHhGcm9tTXNnBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFCHVzZXJBZGRyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkBAlrZXlIZWFsdGgJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQEBW1heEhQCQEJbWF4SGVhbHRoAQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEMa2V5RHVja0xldmVsAQULZHVja0Fzc2V0SWQAAAQMb2xkRnJvbVN0YXRlCQELdmFsdWVPckVsc2UCCQCfCAEFCWtleUhlYWx0aAUFbWF4SFADCQECIT0CBQxvbGRGcm9tU3RhdGUFBWN1ckhQCQACAQkArAICCQCsAgIJAKwCAgIKb2xkSGVhbHRoPQkApAMBBQxvbGRGcm9tU3RhdGUCLyBmcm9tIHN0YXRlIGRvZXMgbm90IG1hdGNoIG9uZSBmcm9tIGZsaWdodCBsb2c9CQCkAwEFBWN1ckhQAwkAZwIAAAUFY3VySFAJAAIBAh5Zb3UgY2FuJ3QgZmx5IHdpdGggemVybyBoZWFsdGgDCQEBIQEJARdjYW5XZWFyQ3VycmVudEVxdWlwbWVudAEFC2R1Y2tBc3NldElkCQACAQIWRXF1aXBtZW50IGluY29tcGF0aWJsZQQFYm9udXMDCQBmAgkAkAMBBQlmbGlnaHRMb2cFB2ZsQm9udXMJAJEDAgUJZmxpZ2h0TG9nBQdmbEJvbnVzAgAECHByb2RVc2VkAwkAZgIJAJADAQUJZmxpZ2h0TG9nBQtmbFByb2RzVXNlZAkAkQMCBQlmbGlnaHRMb2cFC2ZsUHJvZHNVc2VkAgAECnNlbnRBbW91bnQDAwkAZgIFBW5ld0hQAAAJAAACBQVib251cwIBJAcJAQVhc0ludAEJAPwHBAUMcmVzdENvbnRyYWN0Ag1zZW5kVXNkdFByaXplCQDMCAIFCHVzZXJBZGRyBQNuaWwFA25pbAAACQCXCgUFBW5ld0hQBQtkdWNrQXNzZXRJZAUKc2VudEFtb3VudAULbmV3TG9jYXRpb24FCHByb2RVc2VkARBleHBlZGl0aW9uQ29tbW9uBAZjYWxsZXIEdHhJZAdtZXNzYWdlA3NpZwQIdXNlckFkZHIJAKUIAQUGY2FsbGVyBAFmCQEMZmxpZ2h0Q29tbW9uAwUIdXNlckFkZHIFB21lc3NhZ2UFA3NpZwQLZHVja0Fzc2V0SWQIBQFmAl8yBAlrZXlIZWFsdGgJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQEBWJwS2V5CQERa2V5QmFja3BhY2tCeUR1Y2sBBQtkdWNrQXNzZXRJZAQLY3VycmVudFBhY2sJAQtnZXRCYWNrcGFjawEFBWJwS2V5BAVtTGlzdAkAtQkCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeE1hdAIBXwQGbmV3TWF0CQC5CQIJARFzdWJ0cmFjdE1hdGVyaWFscwMGBQVtTGlzdAUMRVhQTUFURVJJQUxTAgFfBAVlcUtleQkBEGtleUR1Y2tFcXVpcG1lbnQBBQtkdWNrQXNzZXRJZAQJY3VycmVudEVxCQELdmFsdWVPckVsc2UCCQCiCAEFBWVxS2V5AhcsOyxfLDssXyw7LF8sOyxfLDssXyw7LAQNJHQwMzM5MDMzNDAwMAkBEXN1YnRyYWN0RXF1aXBtZW50AgUJY3VycmVudEVxCAUBZgJfNQQFbmV3RXEIBQ0kdDAzMzkwMzM0MDAwAl8xBA9zaG91bGRaZXJvQnVmZnMIBQ0kdDAzMzkwMzM0MDAwAl8yAwkAZwIAAAgFAWYCXzEJAJUKAwkAzAgCCQEMSW50ZWdlckVudHJ5AgUJa2V5SGVhbHRoAAAJAMwIAgkBC1N0cmluZ0VudHJ5AgUFZXFLZXkFBW5ld0VxBQNuaWwCAAAABAFlCQESZXhwZWRpdGlvbkludGVybmFsAgUGY2FsbGVyBQR0eElkBAJpZAgIBQFlAl8yAl8xCQCVCgMJAM4IAggFAWUCXzEDBQ9zaG91bGRaZXJvQnVmZnMJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDGtleUR1Y2tCdWZmcwEFC2R1Y2tBc3NldElkAgkwXzBfMF8wXzAFA25pbAkAzQgCCQDNCAIJAM0IAgkAzQgCBQNuaWwJAQtTdHJpbmdFbnRyeQIJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAkAuQkCCQDMCAIICAUBZQJfMgJfMgkAzAgCAgFMCQDMCAIFAmlkBQNuaWwCAV8JAQxJbnRlZ2VyRW50cnkCBQlrZXlIZWFsdGgIBQFmAl8xCQELU3RyaW5nRW50cnkCBQVlcUtleQUFbmV3RXEJAQtTdHJpbmdFbnRyeQIFBWJwS2V5CQC5CQIJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUKYnBJZHhMZXZlbAkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeFJlcwkAzAgCBQZuZXdNYXQJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kBQNuaWwCAToFAmlkCAUBZgJfMwEMYXBwbHlCb251c2VzAgtsYW5kQXNzZXRJZAZwaWVjZXMECmluZnJhTGV2ZWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAAABAlhcnRQaWVjZXMJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBIGtleUxhbmRBcnRTdGF0dXNCeVR5cGVBbmRBc3NldElkAgUKQVJUUFJFU0FMRQULbGFuZEFzc2V0SWQAAAQEYWRkNgkAaQIFCmluZnJhTGV2ZWwABgQEYWRkNwkAaQIFCmluZnJhTGV2ZWwABwkAZAIJAGQCBQ9EQUlMWVJFU0JZUElFQ0UJAGsDBQ9EQUlMWVJFU0JZUElFQ0UJAGQCCQBkAgUKaW5mcmFMZXZlbAUEYWRkNgkAaAIAAgUEYWRkNwAFCQBrAwUPREFJTFlSRVNCWVBJRUNFBQlhcnRQaWVjZXMJAGgCBQZwaWVjZXMABQEUY2hlY2tDbGFpbUNvbmRpdGlvbnMDBGFkZHIJY2xhaW1Nb2RlDWxhbmRBc3NldElkSW4EDSR0MDM1MjIwMzU3NTkDCQAAAgUJY2xhaW1Nb2RlBQtjbGFpbU1vZGVXaAkAlAoCBQ1sYW5kQXNzZXRJZEluCQELdmFsdWVPckVsc2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFBGFkZHICAAQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQRhZGRyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkBAtjdXJMb2NhdGlvbgkBC3ZhbHVlT3JFbHNlAgkAoggBCQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQFD0RFRkFVTFRMT0NBVElPTgQDbG9jCQC1CQIJAQV2YWx1ZQEFC2N1ckxvY2F0aW9uAgFfAwkBAiE9AgkAkQMCBQNsb2MFCmxvY0lkeFR5cGUCAUwJAAIBCQCsAgIJAKwCAgIWRHVjayBsb2NhdGlvbiB0eXBlIGlzIAkAkQMCBQNsb2MFCmxvY0lkeFR5cGUCESwgYnV0IHNob3VsZCBiZSBMCQCUCgIJAJEDAgUDbG9jBQhsb2NJZHhJZAULZHVja0Fzc2V0SWQEC2xhbmRBc3NldElkCAUNJHQwMzUyMjAzNTc1OQJfMQQGZHVja0lkCAUNJHQwMzUyMjAzNTc1OQJfMgQFYXNzZXQJAQV2YWx1ZQEJAOwHAQkA2QQBBQtsYW5kQXNzZXRJZAQHdGltZUtleQkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAQJc2F2ZWRUaW1lCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ8IAQUHdGltZUtleQkArAICCQCsAgICBUxhbmQgCAUFYXNzZXQEbmFtZQIOIGlzIG5vdCBzdGFrZWQEBW93bmVyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFWtleUxhbmRBc3NldElkVG9Pd25lcgEFC2xhbmRBc3NldElkCQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCDCBpcyBvcnBoYW5lZAMJAQIhPQIFBW93bmVyBQRhZGRyCQACAQkArAICBQpMQU5EUFJFRklYAg0gaXMgbm90IHlvdXJzBAFkCQC1CQIIBQVhc3NldAtkZXNjcmlwdGlvbgIBXwkAlgoEBQZkdWNrSWQFC2xhbmRBc3NldElkBQFkBQlzYXZlZFRpbWUBEGNsYWltUmVzSW50ZXJuYWwEBGFkZHIGYW1vdW50CWNsYWltTW9kZQ1sYW5kQXNzZXRJZEluAwkAZgIAAAUGYW1vdW50CQACAQIPTmVnYXRpdmUgYW1vdW50BAFjCQEUY2hlY2tDbGFpbUNvbmRpdGlvbnMDBQRhZGRyBQljbGFpbU1vZGUFDWxhbmRBc3NldElkSW4ECGxhbmRTaXplCQCRAwIIBQFjAl8zBQtyZWNMYW5kU2l6ZQQNdGVycmFpbkNvdW50cwkBDWNvdW50VGVycmFpbnMBCQCRAwIIBQFjAl8zBQtyZWNUZXJyYWlucwQJZGVsdGFUaW1lCQBlAggFCWxhc3RCbG9jawl0aW1lc3RhbXAIBQFjAl80AwkAZgIAAAUJZGVsdGFUaW1lCQACAQkArAICCQCsAgIJAKwCAgImU2F2ZWQgdGltZXN0YW1wIGlzIGluIGZ1dHVyZSwgc2F2ZWQgPSAJAKQDAQgFAWMCXzQCDCwgY3VycmVudCA9IAkApAMBCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQGcGllY2VzCQEPbnVtUGllY2VzQnlTaXplAQUIbGFuZFNpemUEFmRhaWx5UHJvZHVjdGlvbkJ5UGllY2UJAQxhcHBseUJvbnVzZXMCCAUBYwJfMgUGcGllY2VzBAhhdmFpbFJlcwkAawMFCWRlbHRhVGltZQkAaAIFFmRhaWx5UHJvZHVjdGlvbkJ5UGllY2UFBnBpZWNlcwUJREFZTUlMTElTAwkAZgIFBmFtb3VudAUIYXZhaWxSZXMJAAIBCQCsAgIJAKwCAgkArAICAiJOb3QgZW5vdWdoIHJlc291cmNlcywgYXZhaWxhYmxlID0gCQCkAwEFCGF2YWlsUmVzAg4sIHJlcXVlc3RlZCA9IAkApAMBBQZhbW91bnQEDG5ld0RlbHRhVGltZQkAawMJAGUCBQhhdmFpbFJlcwUGYW1vdW50BQlEQVlNSUxMSVMJAGgCBRZkYWlseVByb2R1Y3Rpb25CeVBpZWNlBQZwaWVjZXMEDG5ld1RpbWVzdGFtcAkAZQIIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQxuZXdEZWx0YVRpbWUECWxhbmRJbmRleAkAaQIFBnBpZWNlcwUFU1NJWkUECnJlc1RvQ2xhaW0JAQl2aXJ0Q2xhaW0EBQ10ZXJyYWluQ291bnRzCQBlAgUJZGVsdGFUaW1lBQxuZXdEZWx0YVRpbWUFCWxhbmRJbmRleAUWZGFpbHlQcm9kdWN0aW9uQnlQaWVjZQQFd2hLZXkJARJrZXlXYXJlaG91c2VCeUxhbmQBCAUBYwJfMgQKaW5mcmFMZXZlbAkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEIBQFjAl8yAAAECWN1cnJlbnRXaAkBDGdldFdhcmVob3VzZQMFBXdoS2V5BQlsYW5kSW5kZXgFCmluZnJhTGV2ZWwEBGxvZnQJALUJAgkAkQMCBQljdXJyZW50V2gFCXdoSWR4TE9GVAIBXwQLd2hTcGFjZUxlZnQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQd2b2xGcmVlAwMJAAACBQljbGFpbU1vZGUFC2NsYWltTW9kZVdoCQBmAgUGYW1vdW50BQt3aFNwYWNlTGVmdAcJAAIBCQCsAgIJAKwCAgIFT25seSAJAKQDAQULd2hTcGFjZUxlZnQCGCBzcGFjZSBsZWZ0IGluIHdhcmVob3VzZQQFYnBLZXkJARFrZXlCYWNrcGFja0J5RHVjawEIBQFjAl8xBAtjdXJyZW50UGFjawkBC2dldEJhY2twYWNrAQUFYnBLZXkEDmN1cnJlbnRQYWNrUmVzCQC1CQIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4UmVzAgFfBAxjdXJyZW50V2hSZXMJALUJAgkAkQMCBQljdXJyZW50V2gFCHdoSWR4UmVzAgFfBA0kdDAzODEzMzM5MDA0AwkAAAIFCWNsYWltTW9kZQULY2xhaW1Nb2RlV2gJAJYKBAkBBmFkZFJlcwUFDGN1cnJlbnRXaFJlcwUNdGVycmFpbkNvdW50cwkAZQIFCWRlbHRhVGltZQUMbmV3RGVsdGFUaW1lBQlsYW5kSW5kZXgFFmRhaWx5UHJvZHVjdGlvbkJ5UGllY2UJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4UmVzCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFC3ZvbE9jY3VwaWVkCAUKcmVzVG9DbGFpbQJfMgkAZQIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQd2b2xGcmVlCAUKcmVzVG9DbGFpbQJfMgMJAAACBQljbGFpbU1vZGUFDWNsYWltTW9kZUR1Y2sJAJYKBAkAkQMCBQljdXJyZW50V2gFCHdoSWR4UmVzCQEGYWRkUmVzBQUOY3VycmVudFBhY2tSZXMFDXRlcnJhaW5Db3VudHMJAGUCBQlkZWx0YVRpbWUFDG5ld0RlbHRhVGltZQUJbGFuZEluZGV4BRZkYWlseVByb2R1Y3Rpb25CeVBpZWNlCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbG9mdAULdm9sT2NjdXBpZWQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQd2b2xGcmVlBAVkaXN0cgkBDWRpc3RyaWJ1dGVSZXMEBQxjdXJyZW50V2hSZXMFDmN1cnJlbnRQYWNrUmVzBQpyZXNUb0NsYWltBQt3aFNwYWNlTGVmdAQEd2hBbQkAlwMBCQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQd2b2xGcmVlCQDMCAIIBQpyZXNUb0NsYWltAl8yBQNuaWwJAJYKBAgFBWRpc3RyAl8xCAUFZGlzdHICXzIJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbG9mdAULdm9sT2NjdXBpZWQFBHdoQW0JAGUCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbG9mdAUHdm9sRnJlZQUEd2hBbQQFd2hSZXMIBQ0kdDAzODEzMzM5MDA0Al8xBAVicFJlcwgFDSR0MDM4MTMzMzkwMDQCXzIEBWxvZnRPCAUNJHQwMzgxMzMzOTAwNAJfMwQFbG9mdEYIBQ0kdDAzODEzMzM5MDA0Al80CQCXCgUJAMwIAgkBDEludGVnZXJFbnRyeQIJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQgFAWMCXzIFDG5ld1RpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBImtleVN0YWtlZFRpbWVCeVR5cGVBc3NldElkQW5kT3duZXIDBQpMQU5EUFJFRklYCAUBYwJfMgUEYWRkcgUMbmV3VGltZXN0YW1wBQNuaWwFBWJwS2V5CQDMCAIJAJEDAgULY3VycmVudFBhY2sFCmJwSWR4TGV2ZWwJAMwIAgUFYnBSZXMJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhNYXQJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kBQNuaWwFBXdoS2V5CQDMCAIJAJEDAgUJY3VycmVudFdoBQt3aElkeExldmVscwkAzAgCBQV3aFJlcwkAzAgCCQCRAwIFCWN1cnJlbnRXaAUId2hJZHhNYXQJAMwIAgkAkQMCBQljdXJyZW50V2gFCXdoSWR4UHJvZAkAzAgCCQC5CQIJAMwIAgkAkQMCBQRsb2Z0BQl2b2xMb2NrZWQJAMwIAgkApAMBBQVsb2Z0TwkAzAgCCQCkAwEFBWxvZnRGCQDMCAIJAJEDAgUEbG9mdAUIdm9sVG90YWwFA25pbAIBXwUDbmlsAQhjbGFpbUFsbAQEYWRkcgtsYW5kQXNzZXRJZAZwaWVjZXMJY2xhaW1Nb2RlBAd0aW1lS2V5CQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFC2xhbmRBc3NldElkBAlzYXZlZFRpbWUJAQV2YWx1ZQEJAJ8IAQUHdGltZUtleQQIYXZhaWxSZXMJAGgCCQBrAwkAZQIIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQlzYXZlZFRpbWUJAQxhcHBseUJvbnVzZXMCBQtsYW5kQXNzZXRJZAUGcGllY2VzBQlEQVlNSUxMSVMFBnBpZWNlcwkBEGNsYWltUmVzSW50ZXJuYWwEBQRhZGRyBQhhdmFpbFJlcwUJY2xhaW1Nb2RlBQtsYW5kQXNzZXRJZAENdXBJbmZyYUNvbW1vbgQMc2hvdWxkVXNlTWF0BmNhbGxlcg1wYXltZW50QW1vdW50C2xhbmRBc3NldElkBARhZGRyCQClCAEFBmNhbGxlcgQBYwkBFGNoZWNrQ2xhaW1Db25kaXRpb25zAwUEYWRkcgUTY2xhaW1Nb2RlV2hUaGVuRHVjawULbGFuZEFzc2V0SWQEBnBpZWNlcwkBD251bVBpZWNlc0J5U2l6ZQEJAJEDAggFAWMCXzMFC3JlY0xhbmRTaXplBAhpbmZyYUtleQkBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBCAUBYwJfMgQIY3VyTGV2ZWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUIaW5mcmFLZXkAAAMDCQEBIQEFGEtTX0FMTE9XX0JJR19JTkZSQV9NRVJHRQkAZwIFCGN1ckxldmVsAAMHCQACAQImQ3VycmVudGx5IG1heCBpbmZyYXN0cnVjdHVyZSBsZXZlbCA9IDMECG1heEluZnJhCQBkAgkAaQIJAQRzcXJ0BAUGcGllY2VzAAAAAAUERE9XTgAFAAIECG5ld0xldmVsCQBkAgUIY3VyTGV2ZWwAAQMDBRhLU19BTExPV19CSUdfSU5GUkFfTUVSR0UJAGYCBQhuZXdMZXZlbAUIbWF4SW5mcmEHCQACAQkArAICAiVDdXJyZW50bHkgbWF4IGluZnJhc3RydWN0dXJlIGxldmVsID0gCQCkAwEFCG1heEluZnJhBARjb3N0CQBrAwUVSW5mcmFVcGdyYWRlQ29zdFNVc2R0CQBoAgUGcGllY2VzBQhuZXdMZXZlbAUFU1NJWkUDAwkBASEBBQxzaG91bGRVc2VNYXQJAQIhPQIFDXBheW1lbnRBbW91bnQFBGNvc3QHCQACAQkArAICAhtQYXltZW50IGF0dGFjaGVkIHNob3VsZCBiZSAJAKQDAQUEY29zdAQFYnBLZXkJARFrZXlCYWNrcGFja0J5RHVjawEIBQFjAl8xBAtjdXJyZW50UGFjawkBC2dldEJhY2twYWNrAQUFYnBLZXkEBW1MaXN0CQC1CQIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4TWF0AgFfBAdtYXRVc2VkCQBrAwURSW5mcmFVcGdyYWRlQ29zdFMJAGgCBQZwaWVjZXMFCG5ld0xldmVsBQVTU0laRQQGbmV3TWF0CQC5CQIJARFzdWJ0cmFjdE1hdGVyaWFscwMFDHNob3VsZFVzZU1hdAUFbUxpc3QFB21hdFVzZWQCAV8EC2NsYWltUmVzdWx0CQEIY2xhaW1BbGwEBQRhZGRyCAUBYwJfMgUGcGllY2VzBRNjbGFpbU1vZGVXaFRoZW5EdWNrBAZ3aERhdGEIBQtjbGFpbVJlc3VsdAJfNQQGb2xkVm9sCQEXZ2V0V2FyZWhvdXNlVG90YWxWb2x1bWUBCQCRAwIFBndoRGF0YQULd2hJZHhMZXZlbHMECm5ld1ZvbERhdGEJALkJAgkAzAgCCQCRAwIJALUJAgkAkQMCBQZ3aERhdGEFC3doSWR4TGV2ZWxzAgFfAAAJAMwIAgkApAMBBQhuZXdMZXZlbAUDbmlsAgFfBAZuZXdWb2wJARdnZXRXYXJlaG91c2VUb3RhbFZvbHVtZQEFCm5ld1ZvbERhdGEEBGxvZnQJALUJAgkAkQMCBQZ3aERhdGEFCXdoSWR4TE9GVAIBXwQKbmV3TG9mdFN0cgkAuQkCCQDMCAIJAJEDAgUEbG9mdAUJdm9sTG9ja2VkCQDMCAIJAJEDAgUEbG9mdAULdm9sT2NjdXBpZWQJAMwIAgkApAMBCQBlAgkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQd2b2xGcmVlBQZuZXdWb2wFBm9sZFZvbAkAzAgCCQCkAwEFBm5ld1ZvbAUDbmlsAgFfCQCVCgMJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUIaW5mcmFLZXkFCG5ld0xldmVsCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEea2V5SW5mcmFMZXZlbEJ5QXNzZXRJZEFuZE93bmVyAggFAWMCXzIFBGFkZHIFCG5ld0xldmVsCQDMCAIJAQtTdHJpbmdFbnRyeQIFBWJwS2V5CQC5CQIJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUKYnBJZHhMZXZlbAkAzAgCCQCRAwIIBQtjbGFpbVJlc3VsdAJfMwUIYnBJZHhSZXMJAMwIAgUGbmV3TWF0CQDMCAIJAJEDAgULY3VycmVudFBhY2sFCWJwSWR4UHJvZAUDbmlsAgE6CQDMCAIJAQtTdHJpbmdFbnRyeQIIBQtjbGFpbVJlc3VsdAJfNAkAuQkCCQDMCAIFCm5ld1ZvbERhdGEJAMwIAgkAkQMCBQZ3aERhdGEFCHdoSWR4UmVzCQDMCAIJAJEDAgUGd2hEYXRhBQh3aElkeE1hdAkAzAgCCQCRAwIFBndoRGF0YQUJd2hJZHhQcm9kCQDMCAIFCm5ld0xvZnRTdHIFA25pbAIBOgUDbmlsCAULY2xhaW1SZXN1bHQCXzEFCG5ld0xldmVsBQdtYXRVc2VkARd1cGRhdGVEdWNrU3RhdHNJbnRlcm5hbAILZHVja0Fzc2V0SWQHZGVsdGFYUAQGbHZsS2V5CQEMa2V5RHVja0xldmVsAQULZHVja0Fzc2V0SWQEBXhwS2V5CQEJa2V5RHVja1hQAQULZHVja0Fzc2V0SWQEAnhwCQELdmFsdWVPckVsc2UCCQCaCAIFD3N0YWtpbmdDb250cmFjdAUFeHBLZXkAAAQFbmV3WFAJAGQCBQJ4cAUHZGVsdGFYUAQJbHZsUG9pbnRzCQEHbGV2ZWxVcAIJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPc3Rha2luZ0NvbnRyYWN0BQZsdmxLZXkAAAUFbmV3WFAECWtleVBvaW50cwkBEWtleUR1Y2tGcmVlUG9pbnRzAQULZHVja0Fzc2V0SWQJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUGbHZsS2V5CQCRAwIFCWx2bFBvaW50cwAACQDMCAIJAQxJbnRlZ2VyRW50cnkCBQV4cEtleQUFbmV3WFAJAMwIAgkBDEludGVnZXJFbnRyeQIFCWtleVBvaW50cwkAZAIJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJa2V5UG9pbnRzAAAJAJEDAgUJbHZsUG9pbnRzAAEFA25pbAUFbmV3WFABFnVwZGF0ZUFjY1N0YXRzSW50ZXJuYWwCBGFkZHIHZGVsdGFYUAQGbHZsS2V5CQEMa2V5VXNlckxldmVsAQUEYWRkcgQFeHBLZXkJAQlrZXlVc2VyWFABBQRhZGRyBAJ4cAkBC3ZhbHVlT3JFbHNlAgkAmggCBQ9zdGFraW5nQ29udHJhY3QFBXhwS2V5AAAEBW5ld1hQCQBkAgUCeHAFB2RlbHRhWFAECWx2bFBvaW50cwkBB2xldmVsVXACCQELdmFsdWVPckVsc2UCCQCaCAIFD3N0YWtpbmdDb250cmFjdAUGbHZsS2V5AAAFBW5ld1hQBAlrZXlQb2ludHMJARFrZXlVc2VyRnJlZVBvaW50cwEFBGFkZHIJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUGbHZsS2V5CQCRAwIFCWx2bFBvaW50cwAACQDMCAIJAQxJbnRlZ2VyRW50cnkCBQV4cEtleQUFbmV3WFAJAMwIAgkBDEludGVnZXJFbnRyeQIFCWtleVBvaW50cwkAZAIJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJa2V5UG9pbnRzAAAJAJEDAgUJbHZsUG9pbnRzAAEFA25pbAUFbmV3WFABEmFjdGl2YXRlT25ib2FyZEFydAEEYWRkcgQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQRhZGRyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkBAhyZWZCeUtleQkBD2tleUFkZHJlc3NSZWZCeQEFBGFkZHIEBXJlZkJ5CQCiCAEFCHJlZkJ5S2V5AwkBASEBCQEJaXNEZWZpbmVkAQUFcmVmQnkJAAIBAilZb3UgYXJlIG5vdCBlbGlnaWJsZSBmb3IgT05CT0FSRCBhcnRpZmFjdAQGYXJ0S2V5CQEca2V5T25ib2FyZEFydER1Y2tBY3RpdmF0ZWRCeQEFBGFkZHIEB2FydER1Y2sJAKIIAQUGYXJ0S2V5AwkBCWlzRGVmaW5lZAEFB2FydER1Y2sJAAIBCQCsAgICL1lvdSBhbHJlYWR5IHVzZWQgeW91ciBPTkJPQVJEIGFydGlmYWN0IG9uIGR1Y2sgCQEFdmFsdWUBBQdhcnREdWNrBBBkdWNrQWN0aXZhdG9yS2V5CQEca2V5T25ib2FyZEFydEFjdGl2YXRlZE9uRHVjawEFC2R1Y2tBc3NldElkBA1kdWNrQWN0aXZhdG9yCQCiCAEFEGR1Y2tBY3RpdmF0b3JLZXkDCQEJaXNEZWZpbmVkAQUNZHVja0FjdGl2YXRvcgkAAgEJAKwCAgkArAICCQCsAgICCVRoZSBkdWNrIAULZHVja0Fzc2V0SWQCNCBhbHJlYWR5IGdvdCBwb2ludHMgZnJvbSBPTkJPQVJEIGFydGlmYWN0IGZyb20gdXNlciAJAQV2YWx1ZQEFDWR1Y2tBY3RpdmF0b3IJAM4IAgkAzAgCCQELU3RyaW5nRW50cnkCBQZhcnRLZXkFC2R1Y2tBc3NldElkCQDMCAIJAQtTdHJpbmdFbnRyeQIFEGR1Y2tBY3RpdmF0b3JLZXkFBGFkZHIFA25pbAgJARd1cGRhdGVEdWNrU3RhdHNJbnRlcm5hbAIFC2R1Y2tBc3NldElkBQl4cE9uYm9hcmQCXzEBEmFjdGl2YXRlUHJlc2FsZUFydAIEYWRkcg1sYW5kQXNzZXRJZEluBAFjCQEUY2hlY2tDbGFpbUNvbmRpdGlvbnMDBQRhZGRyBRNjbGFpbU1vZGVXaFRoZW5EdWNrBQ1sYW5kQXNzZXRJZEluBAtsYW5kQXNzZXRJZAgFAWMCXzIEBnBpZWNlcwkBD251bVBpZWNlc0J5U2l6ZQEJAJEDAggFAWMCXzMFC3JlY0xhbmRTaXplBA1hY3RpdmF0aW9uS2V5CQEga2V5TGFuZEFydFN0YXR1c0J5VHlwZUFuZEFzc2V0SWQCBQpBUlRQUkVTQUxFBQtsYW5kQXNzZXRJZAMJAGYCCQELdmFsdWVPckVsc2UCCQCfCAEFDWFjdGl2YXRpb25LZXkAAAAACQACAQIlUHJlc2FsZSBhcnRpZmFjdCBpcyBhbHJlYWR5IGFjdGl2YXRlZAMJAGYCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAggFAWMCXzMFCnJlY0xhbmROdW0FD1BSRVNBTEVOVU1MQU5EUwkAAgEJAKwCAgkArAICCQCsAgIFCkxBTkRQUkVGSVgCASAFC2xhbmRBc3NldElkAiUgaXMgbm90IGVsaWdpYmxlIGZvciBwcmVzYWxlIGFydGlmYWN0BAtjbGFpbVJlc3VsdAkBCGNsYWltQWxsBAUEYWRkcgULbGFuZEFzc2V0SWQFBnBpZWNlcwUTY2xhaW1Nb2RlV2hUaGVuRHVjawkAzQgCCQDNCAIJAM0IAggFC2NsYWltUmVzdWx0Al8xCQEMSW50ZWdlckVudHJ5AgUNYWN0aXZhdGlvbktleQUGcGllY2VzCQELU3RyaW5nRW50cnkCCAULY2xhaW1SZXN1bHQCXzIJALkJAggFC2NsYWltUmVzdWx0Al8zAgE6CQELU3RyaW5nRW50cnkCCAULY2xhaW1SZXN1bHQCXzQJALkJAggFC2NsYWltUmVzdWx0Al81AgE6AQ9jaGVja1RvdXJuYW1lbnQBC2R1Y2tBc3NldElkBAZsYXN0SWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUSdG91cm5hbWVudENvbnRyYWN0BQ1sYXN0VG91cklkS2V5AAAEC2N1ckxvY2F0aW9uCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAKIIAQkBD2tleUR1Y2tMb2NhdGlvbgEFC2R1Y2tBc3NldElkBQ9ERUZBVUxUTE9DQVRJT04CAV8EA25vdwgFCWxhc3RCbG9jawl0aW1lc3RhbXAEBXREYXRhCQELZ2V0VG91ckRhdGECBRJ0b3VybmFtZW50Q29udHJhY3QFBmxhc3RJZAQGc3RhdGljCQCRAwIFBXREYXRhBQlpZHhTdGF0aWMEB2R5bmFtaWMJAJEDAgUFdERhdGEFCmlkeER5bmFtaWMDCQECIT0CCQCRAwIFC2N1ckxvY2F0aW9uBQpsb2NJZHhUeXBlAgFUBwMDAwkAAAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQtjdXJMb2NhdGlvbgUPbG9jSWR4Q29udGluZW50BQZsYXN0SWQJAAACCQCRAwIFB2R5bmFtaWMFDnREeW5hbWljU3RhdHVzAgpJTlBST0dSRVNTBwkAZgIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQZzdGF0aWMFCnRTdGF0aWNFbmQFA25vdwcJAAIBAipZb3VyIGR1Y2sgaXMgdGFraW5nIHBhcnQgaW4gdGhlIHRvdXJuYW1lbnQJAQlhc0Jvb2xlYW4BCQD8BwQFBHRoaXMCFmV4aXRUb3VybmFtZW50SW50ZXJuYWwJAMwIAgULZHVja0Fzc2V0SWQFA25pbAUDbmlsAQ1tZXJnZUludGVybmFsBgtuZXdMYW5kU2l6ZQhuZXdMZXZlbAdmb3JtdWxhBGFkZHIMbGFuZEFzc2V0SWRzB25lZWRNYXQEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUEYWRkcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAMJAQ9jaGVja1RvdXJuYW1lbnQBBQtkdWNrQXNzZXRJZAkAAgECHW1lcmdlSW50ZXJuYWxfY2hlY2tUb3VybmFtZW50CgEKY2hlY2tNZXJnZQIDYWNjC2xhbmRBc3NldElkBAVhc3NldAkBBXZhbHVlAQkA7AcBCQDZBAEFC2xhbmRBc3NldElkBAd0aW1lS2V5CQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFC2xhbmRBc3NldElkBAlzYXZlZFRpbWUJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnwgBBQd0aW1lS2V5CQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCDiBpcyBub3Qgc3Rha2VkBAVvd25lcgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARVrZXlMYW5kQXNzZXRJZFRvT3duZXIBBQtsYW5kQXNzZXRJZAkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAgwgaXMgb3JwaGFuZWQDCQECIT0CBQVvd25lcgUEYWRkcgkAAgEJAKwCAgUKTEFORFBSRUZJWAINIGlzIG5vdCB5b3VycwQBZAkAtQkCCAUFYXNzZXQLZGVzY3JpcHRpb24CAV8ECWNvbnRpbmVudAkAkQMCBQFkBQxyZWNDb250aW5lbnQDAwkBAiE9AggFA2FjYwJfMwIACQECIT0CCAUDYWNjAl8zBQljb250aW5lbnQHCQACAQIuTGFuZHMgc2hvdWxkIGJlIG9uIHRoZSBzYW1lIGNvbnRpbmVudCB0byBtZXJnZQQIbGFuZFNpemUJAJEDAgUBZAULcmVjTGFuZFNpemUEB3NpemVzSW4IBQNhY2MCXzEEAWkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAswkCBQdzaXplc0luBQhsYW5kU2l6ZQInWW91IGhhdmVuJ3QgcGFzc2VkIGFsbCB0aGUgbGFuZHMgbmVlZGVkBAhzaXplc091dAkArAICCQCvAgIFB3NpemVzSW4FAWkJALACAgUHc2l6ZXNJbgkAZAIFAWkAAQQGcGllY2VzCQEPbnVtUGllY2VzQnlTaXplAQUIbGFuZFNpemUEBGFydHMJAGQCCAUDYWNjAl8yCQELdmFsdWVPckVsc2UCCQCfCAEJASBrZXlMYW5kQXJ0U3RhdHVzQnlUeXBlQW5kQXNzZXRJZAIFCkFSVFBSRVNBTEUFC2xhbmRBc3NldElkAAAECmluZnJhTGV2ZWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAAABAhyZXFMZXZlbAQHJG1hdGNoMAUIbGFuZFNpemUDCQAAAgIBUwUHJG1hdGNoMAADAwkAAAICAU0FByRtYXRjaDAABAMJAAACAgFMBQckbWF0Y2gwAAUDCQAAAgICWEwFByRtYXRjaDAABgkAAgECGk9ubHkgUywgTSwgTCwgWEwgY2FuIG1lcmdlAwkBAiE9AgUKaW5mcmFMZXZlbAUIcmVxTGV2ZWwJAAIBAiJBbGwgbGFuZHMgc2hvdWxkIGJlIG1heGVkIHRvIG1lcmdlBAdsYW5kTnVtCQCRAwIFAWQFCnJlY0xhbmROdW0EDXRlcnJhaW5Db3VudHMJAQ1jb3VudFRlcnJhaW5zAQkAkQMCBQFkBQtyZWNUZXJyYWlucwQJZGVsdGFUaW1lCQBlAggFCWxhc3RCbG9jawl0aW1lc3RhbXAFCXNhdmVkVGltZQMJAGYCAAAFCWRlbHRhVGltZQkAAgEJAKwCAgkArAICCQCsAgICJlNhdmVkIHRpbWVzdGFtcCBpcyBpbiBmdXR1cmUsIHNhdmVkID0gCQCkAwEFCXNhdmVkVGltZQIMLCBjdXJyZW50ID0gCQCkAwEIBQlsYXN0QmxvY2sJdGltZXN0YW1wBBZkYWlseVByb2R1Y3Rpb25CeVBpZWNlCQEMYXBwbHlCb251c2VzAgULbGFuZEFzc2V0SWQFBnBpZWNlcwQJbGFuZEluZGV4CQBpAgUGcGllY2VzBQVTU0laRQQFYnBSZXMJAQZhZGRSZXMFCQC1CQIIBQNhY2MCXzQCAV8FDXRlcnJhaW5Db3VudHMFCWRlbHRhVGltZQUJbGFuZEluZGV4BRZkYWlseVByb2R1Y3Rpb25CeVBpZWNlBAVwcm9wcwkBGXVwZGF0ZVByb3BvcnRpb25zSW50ZXJuYWwECAUDYWNjAl82BQ10ZXJyYWluQ291bnRzBQlsYW5kSW5kZXgA////////////AQQGY1Byb3BzCQEZdXBkYXRlUHJvcG9ydGlvbnNJbnRlcm5hbAQIBQNhY2MDXzEwBQ10ZXJyYWluQ291bnRzBQlsYW5kSW5kZXgA////////////AQQLc3VtVGVycmFpbnMJARl1cGRhdGVQcm9wb3J0aW9uc0ludGVybmFsBAgFA2FjYwJfOQUNdGVycmFpbkNvdW50cwUJbGFuZEluZGV4AAEEBWxhbmRzCAUDYWNjAl83BANpZHgJAM8IAgUFbGFuZHMFC2xhbmRBc3NldElkAwkBASEBCQEJaXNEZWZpbmVkAQUDaWR4CQACAQkArAICAiBZb3VyIHN0YWtlZCBsYW5kcyBkb24ndCBjb250YWluIAULbGFuZEFzc2V0SWQECWN1c3RvbUtleQkBGmtleUxhbmRBc3NldElkVG9DdXN0b21OYW1lAQULbGFuZEFzc2V0SWQECmN1c3RvbU5hbWUJAQt2YWx1ZU9yRWxzZQIJAKIIAQUJY3VzdG9tS2V5AgAJAJwKCgUIc2l6ZXNPdXQFBGFydHMFCWNvbnRpbmVudAUFYnBSZXMJAM4IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIIBQNhY2MCXzUJAQtEZWxldGVFbnRyeQEJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQULbGFuZEFzc2V0SWQJAQtEZWxldGVFbnRyeQEJASJrZXlTdGFrZWRUaW1lQnlUeXBlQXNzZXRJZEFuZE93bmVyAwUKTEFORFBSRUZJWAULbGFuZEFzc2V0SWQFBGFkZHIJAQtEZWxldGVFbnRyeQEJARBrZXlMYW5kVG9Bc3NldElkAQUHbGFuZE51bQkBC0RlbGV0ZUVudHJ5AQkBFWtleUxhbmRBc3NldElkVG9Pd25lcgEFC2xhbmRBc3NldElkCQELRGVsZXRlRW50cnkBCQEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEFC2xhbmRBc3NldElkCQELRGVsZXRlRW50cnkBCQEea2V5SW5mcmFMZXZlbEJ5QXNzZXRJZEFuZE93bmVyAgULbGFuZEFzc2V0SWQFBGFkZHIJAQtEZWxldGVFbnRyeQEJASBrZXlMYW5kQXJ0U3RhdHVzQnlUeXBlQW5kQXNzZXRJZAIFCkFSVFBSRVNBTEUFC2xhbmRBc3NldElkCQELRGVsZXRlRW50cnkBCQERa2V5TGFuZE51bVRvT3duZXIBBQdsYW5kTnVtCQELRGVsZXRlRW50cnkBCQESa2V5V2FyZWhvdXNlQnlMYW5kAQULbGFuZEFzc2V0SWQJAQtEZWxldGVFbnRyeQEFCWN1c3RvbUtleQkBBEJ1cm4CCQDZBAEFC2xhbmRBc3NldElkAAEDCQECIT0CBQpjdXN0b21OYW1lAgAJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBGmtleUxhbmRDdXN0b21OYW1lVG9Bc3NldElkAQUKY3VzdG9tTmFtZQUDbmlsBQNuaWwFBXByb3BzCQDRCAIFBWxhbmRzCQEFdmFsdWUBBQNpZHgJAGQCCAUDYWNjAl84BQZwaWVjZXMFC3N1bVRlcnJhaW5zBQZjUHJvcHMEBWJwS2V5CQERa2V5QmFja3BhY2tCeUR1Y2sBBQtkdWNrQXNzZXRJZAQLY3VycmVudFBhY2sJAQtnZXRCYWNrcGFjawEFBWJwS2V5BAhwcm9wTGlzdAkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEJARFrZXlSZXNQcm9wb3J0aW9ucwACCzBfMF8wXzBfMF8wAgFfBAhsYW5kc0tleQkBFWtleVN0YWtlZExhbmRzQnlPd25lcgEFBGFkZHIECGxhbmRzU3RyCQCiCAEFCGxhbmRzS2V5BAdsYW5kc0luAwkBCWlzRGVmaW5lZAEFCGxhbmRzU3RyCQC9CQIJAQV2YWx1ZQEFCGxhbmRzU3RyAgFfBQNuaWwEBWNvbnQwCQCRAwIJALUJAggJAQV2YWx1ZQEJAOwHAQkA2QQBCQCRAwIFDGxhbmRBc3NldElkcwAAC2Rlc2NyaXB0aW9uAgFfBQxyZWNDb250aW5lbnQECWNvbnRQcm9wcwkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEJARZrZXlSZXNUeXBlc0J5Q29udGluZW50AQUFY29udDACCzBfMF8wXzBfMF8wAgFfBAFyCgACJGwFDGxhbmRBc3NldElkcwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJwKCgUHZm9ybXVsYQAAAgAJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4UmVzBQNuaWwFCHByb3BMaXN0BQdsYW5kc0luAAAJALUJAgILMF8wXzBfMF8wXzACAV8FCWNvbnRQcm9wcwoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEKY2hlY2tNZXJnZQIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNQkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUECWNvbnRpbmVudAgFAXICXzMEDGNvbnRpbmVudElkeAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDPCAIFCmNvbnRpbmVudHMFCWNvbnRpbmVudAkArAICAhNVbmtub3duIGNvbnRpbmVudDogBQljb250aW5lbnQECHRlcnJhaW5zCQETZ2VuVGVycmFpbnNGb3JNZXJnZQIIBQFyAl85CQBpAgkBD251bVBpZWNlc0J5U2l6ZQEFC25ld0xhbmRTaXplBQVTU0laRQQHZnJlZU51bQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQESa2V5TmV4dEZyZWVMYW5kTnVtAAkAZAIFD1BSRVNBTEVOVU1MQU5EUwABBApuZXdMYW5kTnVtCQCkAwEFB2ZyZWVOdW0EBWlzc3VlCQDCCAUJAQduZnROYW1lAgUKbmV3TGFuZE51bQULbmV3TGFuZFNpemUJALkJAgkAzAgCBQpuZXdMYW5kTnVtCQDMCAIFC25ld0xhbmRTaXplCQDMCAIFCHRlcnJhaW5zCQDMCAIFCWNvbnRpbmVudAUDbmlsAgFfAAEAAAcEB2Fzc2V0SWQJALgIAQUFaXNzdWUEDm5ld0xhbmRBc3NldElkCQDYBAEFB2Fzc2V0SWQEBm5ld01hdAkAuQkCCQERc3VidHJhY3RNYXRlcmlhbHMDCQBmAgUHbmVlZE1hdAAACQC1CQIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4TWF0AgFfBQduZWVkTWF0AgFfBAlwaWVjZXNLZXkJARZrZXlTdGFrZWRQaWVjZXNCeU93bmVyAQUEYWRkcgQMc3Rha2VkUGllY2VzCQELdmFsdWVPckVsc2UCCQCfCAEFCXBpZWNlc0tleQAACQCUCgIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIIBQFyAl81AwkAZgIJAJADAQgFAXICXzcAAAkBC1N0cmluZ0VudHJ5AgUIbGFuZHNLZXkJALsJAggFAXICXzcCAV8JAQtEZWxldGVFbnRyeQEFCGxhbmRzS2V5CQEMSW50ZWdlckVudHJ5AgUJcGllY2VzS2V5AwkAZgIIBQFyAl84BQxzdGFrZWRQaWVjZXMAAAkAZQIFDHN0YWtlZFBpZWNlcwgFAXICXzgJAQxJbnRlZ2VyRW50cnkCCQESa2V5TmV4dEZyZWVMYW5kTnVtAAkAZAIFB2ZyZWVOdW0AAQUFaXNzdWUJAQtTdHJpbmdFbnRyeQIJARBrZXlMYW5kVG9Bc3NldElkAQUKbmV3TGFuZE51bQUObmV3TGFuZEFzc2V0SWQJAQtTdHJpbmdFbnRyeQIJARVrZXlMYW5kQXNzZXRJZFRvT3duZXIBBQ5uZXdMYW5kQXNzZXRJZAUEYWRkcgkBC1N0cmluZ0VudHJ5AgkBEWtleUxhbmROdW1Ub093bmVyAQUKbmV3TGFuZE51bQUEYWRkcgkBDEludGVnZXJFbnRyeQIJASBrZXlMYW5kQXJ0U3RhdHVzQnlUeXBlQW5kQXNzZXRJZAIFCkFSVFBSRVNBTEUFDm5ld0xhbmRBc3NldElkCAUBcgJfMgkBDEludGVnZXJFbnRyeQIJARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQUObmV3TGFuZEFzc2V0SWQFCG5ld0xldmVsCQEMSW50ZWdlckVudHJ5AgkBHmtleUluZnJhTGV2ZWxCeUFzc2V0SWRBbmRPd25lcgIFDm5ld0xhbmRBc3NldElkBQRhZGRyBQhuZXdMZXZlbAkBC1N0cmluZ0VudHJ5AgUFYnBLZXkJALkJAgkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQpicElkeExldmVsCQDMCAIIBQFyAl80CQDMCAIFBm5ld01hdAkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QFA25pbAIBOgkBC1N0cmluZ0VudHJ5AgkBEWtleVJlc1Byb3BvcnRpb25zAAkAuQkCCAUBcgJfNgIBXwkBC1N0cmluZ0VudHJ5AgkBFmtleVJlc1R5cGVzQnlDb250aW5lbnQBBQljb250aW5lbnQJALkJAggFAXIDXzEwAgFfCQELU3RyaW5nRW50cnkCCQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQJALkJAgkAzAgCBQljb250aW5lbnQJAMwIAgIBTAkAzAgCBQ5uZXdMYW5kQXNzZXRJZAUDbmlsAgFfCQEOU2NyaXB0VHJhbnNmZXIDCQERQGV4dHJOYXRpdmUoMTA2MikBBQRhZGRyAAEFB2Fzc2V0SWQFDm5ld0xhbmRBc3NldElkAQNzMm0CBGFkZHIMbGFuZEFzc2V0SWRzCQENbWVyZ2VJbnRlcm5hbAYCAU0AAwIEU1NTUwUEYWRkcgUMbGFuZEFzc2V0SWRzAAABA20ybAIEYWRkcgxsYW5kQXNzZXRJZHMJAQ1tZXJnZUludGVybmFsBgIBTAAEAgNTTU0FBGFkZHIFDGxhbmRBc3NldElkcwkAaAIFEUluZnJhVXBncmFkZUNvc3RTAAQBBGwyeGwCBGFkZHIMbGFuZEFzc2V0SWRzCQENbWVyZ2VJbnRlcm5hbAYCAlhMAAUCBVNTU01MBQRhZGRyBQxsYW5kQXNzZXRJZHMJAGgCBRFJbmZyYVVwZ3JhZGVDb3N0UwAvAQZ4bDJ4eGwCBGFkZHIMbGFuZEFzc2V0SWRzCQENbWVyZ2VJbnRlcm5hbAYCA1hYTAAGAgNMWEwFBGFkZHIFDGxhbmRBc3NldElkcwkAaAIFEUluZnJhVXBncmFkZUNvc3RTADYBC21lcmdlQ29tbW9uAgRhZGRyDGxhbmRBc3NldElkcwQHJG1hdGNoMAkAkAMBBQxsYW5kQXNzZXRJZHMDCQAAAgAEBQckbWF0Y2gwCQEDczJtAgUEYWRkcgUMbGFuZEFzc2V0SWRzAwkAAAIAAwUHJG1hdGNoMAkBA20ybAIFBGFkZHIFDGxhbmRBc3NldElkcwMJAAACAAUFByRtYXRjaDAJAQRsMnhsAgUEYWRkcgUMbGFuZEFzc2V0SWRzAwkAAAIAAgUHJG1hdGNoMAkBBnhsMnh4bAIFBGFkZHIFDGxhbmRBc3NldElkcwkAAgECDVVua25vd24gbWVyZ2UBBnByb2xvZwEBaQMDCQECIT0CCAUBaQxvcmlnaW5DYWxsZXIFDHJlc3RDb250cmFjdAkBC3ZhbHVlT3JFbHNlAgkAoAgBCQEKa2V5QmxvY2tlZAAHBwkAAgECH0NvbnRyYWN0cyBhcmUgdW5kZXIgbWFpbnRlbmFuY2UJAQtTdHJpbmdFbnRyeQIJARFrZXlMYXN0VHhJZEJ5VXNlcgEJAKUIAQgFAWkMb3JpZ2luQ2FsbGVyCQDYBAEIBQFpDXRyYW5zYWN0aW9uSWQnAWkBDWNvbnN0cnVjdG9yVjEBCHJlc3RBZGRyAwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQIRUGVybWlzc2lvbiBkZW5pZWQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDmtleVJlc3RBZGRyZXNzAAUIcmVzdEFkZHIFA25pbAFpAQpzZXRCbG9ja2VkAQlpc0Jsb2NrZWQDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAhFwZXJtaXNzaW9uIGRlbmllZAkAzAgCCQEMQm9vbGVhbkVudHJ5AgkBCmtleUJsb2NrZWQABQlpc0Jsb2NrZWQFA25pbAFpAQlzdGFrZUxhbmQABAxwcm9sb2dBY3Rpb24JAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQIcRXhhY3RseSBvbmUgcGF5bWVudCByZXF1aXJlZAQDcG10CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAEB2Fzc2V0SWQJAQV2YWx1ZQEIBQNwbXQHYXNzZXRJZAQHYWRkcmVzcwkApQgBCAUBaQZjYWxsZXIDCQECIT0CCAUDcG10BmFtb3VudAABCQACAQkArAICCQCsAgICBE5GVCAFCkxBTkRQUkVGSVgCJCB0b2tlbiBzaG91bGQgYmUgYXR0YWNoZWQgYXMgcGF5bWVudAQFYXNzZXQJAQV2YWx1ZQEJAOwHAQUHYXNzZXRJZAMJAQIhPQIIBQVhc3NldAZpc3N1ZXIFBHRoaXMJAAIBAhdVbmtub3duIGlzc3VlciBvZiB0b2tlbgMJAQEhAQkBCGNvbnRhaW5zAggFBWFzc2V0BG5hbWUFCkxBTkRQUkVGSVgJAAIBCQCsAgIJAKwCAgIJT25seSBORlQgBQpMQU5EUFJFRklYAhQgdG9rZW5zIGFyZSBhY2NlcHRlZAQLbGFuZE51bVNpemUJALACAggFBWFzc2V0BG5hbWUABAQHbGFuZE51bQMJAQhjb250YWlucwIFC2xhbmROdW1TaXplAgNYWEwJALMCAgULbGFuZE51bVNpemUAAwMJAQhjb250YWlucwIFC2xhbmROdW1TaXplAgJYTAkAswICBQtsYW5kTnVtU2l6ZQACCQCzAgIFC2xhbmROdW1TaXplAAEDCQEBIQEJAQlpc0RlZmluZWQBCQC2CQEFB2xhbmROdW0JAAIBCQCsAgICHkNhbm5vdCBwYXJzZSBsYW5kIG51bWJlciBmcm9tIAgFBWFzc2V0BG5hbWUEC2xhbmRBc3NldElkCQDYBAEFB2Fzc2V0SWQEB3RpbWVLZXkJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQULbGFuZEFzc2V0SWQDCQEJaXNEZWZpbmVkAQkAnwgBBQd0aW1lS2V5CQACAQkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAhIgaXMgYWxyZWFkeSBzdGFrZWQEAWQJALUJAggFBWFzc2V0C2Rlc2NyaXB0aW9uAgFfBA10ZXJyYWluQ291bnRzCQENY291bnRUZXJyYWlucwEJAJEDAgUBZAULcmVjVGVycmFpbnMEBnBpZWNlcwkBD251bVBpZWNlc0J5U2l6ZQEJAJEDAgUBZAULcmVjTGFuZFNpemUECWxhbmRJbmRleAkAaQIFBnBpZWNlcwUFU1NJWkUEBXByb3BzCQERdXBkYXRlUHJvcG9ydGlvbnMDBQ10ZXJyYWluQ291bnRzBQlsYW5kSW5kZXgAAQQMcmVzQnlDb250S2V5CQEWa2V5UmVzVHlwZXNCeUNvbnRpbmVudAEJAJEDAgUBZAUMcmVjQ29udGluZW50BAljb250UHJvcHMJALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBBQxyZXNCeUNvbnRLZXkCCzBfMF8wXzBfMF8wAgFfBBB1cGRhdGVkQ29udFByb3BzCQC5CQIJARl1cGRhdGVQcm9wb3J0aW9uc0ludGVybmFsBAUJY29udFByb3BzBQ10ZXJyYWluQ291bnRzBQlsYW5kSW5kZXgAAQIBXwQIbGFuZHNLZXkJARVrZXlTdGFrZWRMYW5kc0J5T3duZXIBBQdhZGRyZXNzBAhsYW5kc1N0cgkAoggBBQhsYW5kc0tleQQFbGFuZHMDCQEJaXNEZWZpbmVkAQUIbGFuZHNTdHIJAL0JAgkBBXZhbHVlAQUIbGFuZHNTdHICAV8FA25pbAMJAQ9jb250YWluc0VsZW1lbnQCBQVsYW5kcwULbGFuZEFzc2V0SWQJAAIBCQCsAgICIllvdXIgc3Rha2VkIGxhbmRzIGFscmVhZHkgY29udGFpbiAFC2xhbmRBc3NldElkAwkAZwIJAJADAQUFbGFuZHMFGE1BWF9MQU5EU19TVEFLRURfQllfVVNFUgkAAgEJAKwCAgkArAICAhlZb3VyIGFscmVhZHkgc3Rha2VkIG1heCAoCQCkAwEFGE1BWF9MQU5EU19TVEFLRURfQllfVVNFUgIHKSBsYW5kcwQKaW5mcmFMZXZlbAkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEFC2xhbmRBc3NldElkAAAECXBpZWNlc0tleQkBFmtleVN0YWtlZFBpZWNlc0J5T3duZXIBBQdhZGRyZXNzBAlvbGRQaWVjZXMJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJcGllY2VzS2V5AAAECXdsZ1Jlc3VsdAkA/AcEBQt3bGdDb250cmFjdAISb25TdGFrZVVuc3Rha2VMYW5kCQDMCAIFB2FkZHJlc3MFA25pbAUDbmlsCQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIFB3RpbWVLZXkIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEia2V5U3Rha2VkVGltZUJ5VHlwZUFzc2V0SWRBbmRPd25lcgMFCkxBTkRQUkVGSVgFC2xhbmRBc3NldElkBQdhZGRyZXNzCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQELU3RyaW5nRW50cnkCBQhsYW5kc0tleQkAuwkCCQDNCAIFBWxhbmRzBQtsYW5kQXNzZXRJZAIBXwkAzAgCCQEMSW50ZWdlckVudHJ5AgUJcGllY2VzS2V5CQBkAgUJb2xkUGllY2VzBQZwaWVjZXMJAMwIAgkBC1N0cmluZ0VudHJ5AgkBFWtleUxhbmRBc3NldElkVG9Pd25lcgEFC2xhbmRBc3NldElkBQdhZGRyZXNzCQDMCAIJAQtTdHJpbmdFbnRyeQIJARFrZXlMYW5kTnVtVG9Pd25lcgEFB2xhbmROdW0FB2FkZHJlc3MJAMwIAgkBDEludGVnZXJFbnRyeQIJAR5rZXlJbmZyYUxldmVsQnlBc3NldElkQW5kT3duZXICBQtsYW5kQXNzZXRJZAUHYWRkcmVzcwUKaW5mcmFMZXZlbAkAzAgCCQELU3RyaW5nRW50cnkCCQERa2V5UmVzUHJvcG9ydGlvbnMABQVwcm9wcwkAzAgCCQELU3RyaW5nRW50cnkCBQxyZXNCeUNvbnRLZXkFEHVwZGF0ZWRDb250UHJvcHMJAMwIAgUMcHJvbG9nQWN0aW9uBQNuaWwFCXdsZ1Jlc3VsdAFpAQt1bnN0YWtlTGFuZAENbGFuZEFzc2V0SWRJbgQMcHJvbG9nQWN0aW9uCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBARhZGRyCQClCAEIBQFpBmNhbGxlcgQBYwkBFGNoZWNrQ2xhaW1Db25kaXRpb25zAwUEYWRkcgUNY2xhaW1Nb2RlRHVjawUNbGFuZEFzc2V0SWRJbgQLbGFuZEFzc2V0SWQIBQFjAl8yBAFkCAUBYwJfMwQIbGFuZHNLZXkJARVrZXlTdGFrZWRMYW5kc0J5T3duZXIBBQRhZGRyBA10ZXJyYWluQ291bnRzCQENY291bnRUZXJyYWlucwEJAJEDAgUBZAULcmVjVGVycmFpbnMEBnBpZWNlcwkBD251bVBpZWNlc0J5U2l6ZQEJAJEDAgUBZAULcmVjTGFuZFNpemUECWxhbmRJbmRleAkAaQIFBnBpZWNlcwUFU1NJWkUEBXByb3BzCQERdXBkYXRlUHJvcG9ydGlvbnMDBQ10ZXJyYWluQ291bnRzBQlsYW5kSW5kZXgA////////////AQQMcmVzQnlDb250S2V5CQEWa2V5UmVzVHlwZXNCeUNvbnRpbmVudAEJAJEDAgUBZAUMcmVjQ29udGluZW50BAljb250UHJvcHMJALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBBQxyZXNCeUNvbnRLZXkCCzBfMF8wXzBfMF8wAgFfBBB1cGRhdGVkQ29udFByb3BzCQC5CQIJARl1cGRhdGVQcm9wb3J0aW9uc0ludGVybmFsBAUJY29udFByb3BzBQ10ZXJyYWluQ291bnRzBQlsYW5kSW5kZXgA////////////AQIBXwQLY2xhaW1SZXN1bHQJAQhjbGFpbUFsbAQFBGFkZHIFC2xhbmRBc3NldElkBQZwaWVjZXMFDWNsYWltTW9kZUR1Y2sEBWxhbmRzCQC9CQIJAQt2YWx1ZU9yRWxzZQIJAKIIAQUIbGFuZHNLZXkCAAIBXwQDaWR4CQDPCAIFBWxhbmRzBQtsYW5kQXNzZXRJZAMJAQEhAQkBCWlzRGVmaW5lZAEFA2lkeAkAAgEJAKwCAgIgWW91ciBzdGFrZWQgbGFuZHMgZG9uJ3QgY29udGFpbiAFC2xhbmRBc3NldElkBANub3cIBQlsYXN0QmxvY2sJdGltZXN0YW1wBA5nb3ZSZWxlYXNlVGltZQkBC3ZhbHVlT3JFbHNlAgkAmggCBQtnb3ZDb250cmFjdAkBFWtleVVzZXJHd2xSZWxlYXNlVGltZQEFBGFkZHIAAAMJAGcCBQ5nb3ZSZWxlYXNlVGltZQUDbm93CQACAQkArAICAjlZb3VyIGdXTCBhcmUgdGFraW5nIHBhcnQgaW4gdm90aW5nLCBjYW5ub3QgdW5zdGFrZSB1bnRpbCAJAKQDAQUOZ292UmVsZWFzZVRpbWUEDmFyYlJlbGVhc2VUaW1lCQBkAgkBC3ZhbHVlT3JFbHNlAgkAmggCBQt3bGdDb250cmFjdAkBFGtleUxhc3RBcmJUaW1lQnlVc2VyAQUEYWRkcgAABQ5hcmJpdHJhZ2VEZWxheQMJAGYCBQ5hcmJSZWxlYXNlVGltZQUDbm93CQACAQkArAICAj9Zb3VyIHN0YWtlZCBsYW5kcyB0b29rIHBhcnQgaW4gYXJiaXRyYWdlLCBjYW5ub3QgdW5zdGFrZSB1bnRpbCAJAKQDAQUOYXJiUmVsZWFzZVRpbWUECXBpZWNlc0tleQkBFmtleVN0YWtlZFBpZWNlc0J5T3duZXIBBQRhZGRyBAxzdGFrZWRQaWVjZXMJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJcGllY2VzS2V5AAAECW5ld1BpZWNlcwMJAGYCBQZwaWVjZXMFDHN0YWtlZFBpZWNlcwAACQBlAgUMc3Rha2VkUGllY2VzBQZwaWVjZXMECXdsZ1Jlc3VsdAkA/AcEBQt3bGdDb250cmFjdAISb25TdGFrZVVuc3Rha2VMYW5kCQDMCAIFBGFkZHIFA25pbAUDbmlsCQCUCgIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyAAEJANkEAQULbGFuZEFzc2V0SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAkAzAgCCQELRGVsZXRlRW50cnkBCQEia2V5U3Rha2VkVGltZUJ5VHlwZUFzc2V0SWRBbmRPd25lcgMFCkxBTkRQUkVGSVgFC2xhbmRBc3NldElkBQRhZGRyCQDMCAIJAQtTdHJpbmdFbnRyeQIJARFrZXlSZXNQcm9wb3J0aW9ucwAFBXByb3BzCQDMCAIJAQtTdHJpbmdFbnRyeQIFDHJlc0J5Q29udEtleQUQdXBkYXRlZENvbnRQcm9wcwkAzAgCCQELU3RyaW5nRW50cnkCCAULY2xhaW1SZXN1bHQCXzIJALkJAggFC2NsYWltUmVzdWx0Al8zAgE6CQDMCAIDCQBmAgkAkAMBBQVsYW5kcwABCQELU3RyaW5nRW50cnkCBQhsYW5kc0tleQkAuwkCCQDRCAIFBWxhbmRzCQEFdmFsdWUBBQNpZHgCAV8JAQtEZWxldGVFbnRyeQEFCGxhbmRzS2V5CQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlwaWVjZXNLZXkFCW5ld1BpZWNlcwkAzAgCBQxwcm9sb2dBY3Rpb24FA25pbAUJd2xnUmVzdWx0AWkBCXN0YWtlRHVjawAEDHByb2xvZ0FjdGlvbgkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAhxFeGFjdGx5IG9uZSBwYXltZW50IHJlcXVpcmVkBANwbXQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAQHYXNzZXRJZAkBBXZhbHVlAQgFA3BtdAdhc3NldElkBAdhZGRyZXNzCQClCAEIBQFpBmNhbGxlcgMJAQIhPQIIBQNwbXQGYW1vdW50AAEJAAIBCQCsAgIJAKwCAgIETkZUIAUKRFVDS1BSRUZJWAIkIHRva2VuIHNob3VsZCBiZSBhdHRhY2hlZCBhcyBwYXltZW50BAVhc3NldAkBBXZhbHVlAQkA7AcBBQdhc3NldElkAwMJAQIhPQIIBQVhc3NldAZpc3N1ZXIFDWluY3ViYXRvckFkZHIJAQIhPQIIBQVhc3NldAZpc3N1ZXIFC2JyZWVkZXJBZGRyBwkAAgEJAKwCAgkArAICAhJVbmtub3duIGlzc3VlciBvZiAFCkRVQ0tQUkVGSVgCBiB0b2tlbgMJAQEhAQkBCGNvbnRhaW5zAggFBWFzc2V0BG5hbWUFCkRVQ0tQUkVGSVgJAAIBCQCsAgIJAKwCAgIJT25seSBORlQgBQpEVUNLUFJFRklYAhQgdG9rZW5zIGFyZSBhY2NlcHRlZAQKYXNzZXRJZFN0cgkA2AQBBQdhc3NldElkBAd0aW1lS2V5CQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFCmFzc2V0SWRTdHIDCQEJaXNEZWZpbmVkAQkAnwgBBQd0aW1lS2V5CQACAQkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAhIgaXMgYWxyZWFkeSBzdGFrZWQDCQEJaXNEZWZpbmVkAQkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQdhZGRyZXNzCQACAQkArAICAh1Zb3UgYWxyZWFkeSBzdGFrZWQgb25lIGR1Y2s6IAgFBWFzc2V0BG5hbWUDCQEPY2hlY2tUb3VybmFtZW50AQUKYXNzZXRJZFN0cgkAAgECGXN0YWtlRHVja19jaGVja1RvdXJuYW1lbnQEBmxvY0tleQkBD2tleUR1Y2tMb2NhdGlvbgEFCmFzc2V0SWRTdHIECGxvY2F0aW9uCQCiCAEFBmxvY0tleQQFYnBLZXkJARFrZXlCYWNrcGFja0J5RHVjawEFCmFzc2V0SWRTdHIECGJhY2twYWNrCQCiCAEFBWJwS2V5BAlrZXlIZWFsdGgJAQ1rZXlEdWNrSGVhbHRoAQUKYXNzZXRJZFN0cgQFbWF4SFAJAQltYXhIZWFsdGgBCQELdmFsdWVPckVsc2UCCQCfCAEJAQxrZXlEdWNrTGV2ZWwBBQphc3NldElkU3RyAAAECWN1ckhlYWx0aAkBC3ZhbHVlT3JFbHNlAgkAnwgBBQlrZXlIZWFsdGgFBW1heEhQCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIFB3RpbWVLZXkIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEia2V5U3Rha2VkVGltZUJ5VHlwZUFzc2V0SWRBbmRPd25lcgMFCkRVQ0tQUkVGSVgJANgEAQUHYXNzZXRJZAUHYWRkcmVzcwgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEGtleUR1Y2tJZFRvT3duZXIBBQphc3NldElkU3RyBQdhZGRyZXNzCQDMCAIJAQtTdHJpbmdFbnRyeQIJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFB2FkZHJlc3MFCmFzc2V0SWRTdHIFA25pbAMJAQlpc0RlZmluZWQBBQhsb2NhdGlvbgUDbmlsCQDOCAIJAMwIAgkBC1N0cmluZ0VudHJ5AgUGbG9jS2V5BQ9ERUZBVUxUTE9DQVRJT04FA25pbAMJAQlpc0RlZmluZWQBBQhiYWNrcGFjawUDbmlsCQDNCAIJAM0IAgkAzAgCCQELU3RyaW5nRW50cnkCBQVicEtleQIaMDowXzBfMF8wXzBfMDowXzBfMF8wXzBfMDoFA25pbAkBDEludGVnZXJFbnRyeQIFCWtleUhlYWx0aAUJY3VySGVhbHRoBQxwcm9sb2dBY3Rpb24BaQELdW5zdGFrZUR1Y2sBCmFzc2V0SWRTdHIEDHByb2xvZ0FjdGlvbgkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQHYXNzZXRJZAkA2QQBBQphc3NldElkU3RyBAdhZGRyZXNzCQClCAEIBQFpBmNhbGxlcgQFYXNzZXQJAQV2YWx1ZQEJAOwHAQUHYXNzZXRJZAQHdGltZUtleQkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQphc3NldElkU3RyAwkBASEBCQEJaXNEZWZpbmVkAQkAnwgBBQd0aW1lS2V5CQACAQkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAg4gaXMgbm90IHN0YWtlZAMJAQEhAQkBCWlzRGVmaW5lZAEJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUHYWRkcmVzcwkAAgEJAKwCAgkArAICAglUaGUgZHVjayAIBQVhc3NldARuYW1lAg4gaXMgbm90IHN0YWtlZAQFb3duZXIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEQa2V5RHVja0lkVG9Pd25lcgEFCmFzc2V0SWRTdHIJAKwCAgkArAICAgRORlQgCAUFYXNzZXQEbmFtZQIMIGlzIG9ycGhhbmVkAwkBAiE9AgUFb3duZXIFB2FkZHJlc3MJAAIBAhdTdGFrZWQgTkZUIGlzIG5vdCB5b3VycwMJAQ9jaGVja1RvdXJuYW1lbnQBBQphc3NldElkU3RyCQACAQIbdW5zdGFrZUR1Y2tfY2hlY2tUb3VybmFtZW50BAlrZXlIZWFsdGgJAQ1rZXlEdWNrSGVhbHRoAQUKYXNzZXRJZFN0cgQFbWF4SFAJAQltYXhIZWFsdGgBCQELdmFsdWVPckVsc2UCCQCfCAEJAQxrZXlEdWNrTGV2ZWwBBQphc3NldElkU3RyAAAEBmhlYWx0aAkBC3ZhbHVlT3JFbHNlAgkAnwgBBQlrZXlIZWFsdGgFBW1heEhQAwkAZgIFBW1heEhQBQZoZWFsdGgJAAIBCQCsAgIJAKwCAgIZUGxlYXNlIGhlYWwgeW91ciBkdWNrIHRvIAkApAMBBQVtYXhIUAITaHAgYmVmb3JlIHVuc3Rha2luZwkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIAAQUHYXNzZXRJZAkAzAgCCQELRGVsZXRlRW50cnkBBQd0aW1lS2V5CQDMCAIJAQtEZWxldGVFbnRyeQEFCWtleUhlYWx0aAkAzAgCCQELRGVsZXRlRW50cnkBCQEPa2V5RHVja0xvY2F0aW9uAQUKYXNzZXRJZFN0cgkAzAgCCQELRGVsZXRlRW50cnkBCQEQa2V5RHVja0lkVG9Pd25lcgEFCmFzc2V0SWRTdHIJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBImtleVN0YWtlZFRpbWVCeVR5cGVBc3NldElkQW5kT3duZXIDBQpEVUNLUFJFRklYBQphc3NldElkU3RyBQdhZGRyZXNzCQDMCAIJAQtEZWxldGVFbnRyeQEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFB2FkZHJlc3MJAMwIAgUMcHJvbG9nQWN0aW9uBQNuaWwBaQEIY2xhaW1SZXMCBmFtb3VudA5sYW5kQXNzZXRJZFN0cgQMcHJvbG9nQWN0aW9uCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBARhZGRyCQClCAEIBQFpDG9yaWdpbkNhbGxlcgQGcmVzdWx0CQEQY2xhaW1SZXNJbnRlcm5hbAQFBGFkZHIFBmFtb3VudAUNY2xhaW1Nb2RlRHVjawUObGFuZEFzc2V0SWRTdHIEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUEYWRkcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAkAlAoCCQDNCAIJAM0IAgkAzQgCCQDOCAIIBQZyZXN1bHQCXzEICQEXdXBkYXRlRHVja1N0YXRzSW50ZXJuYWwCBQtkdWNrQXNzZXRJZAkAawMFB3hwQ2xhaW0FBmFtb3VudAUFTVVMVDgCXzEJAQtTdHJpbmdFbnRyeQIIBQZyZXN1bHQCXzIJALkJAggFBnJlc3VsdAJfMwIBOgkBC1N0cmluZ0VudHJ5AggFBnJlc3VsdAJfNAkAuQkCCAUGcmVzdWx0Al81AgE6BQxwcm9sb2dBY3Rpb24JAJEDAggFBnJlc3VsdAJfMwUIYnBJZHhSZXMBaQEMY2xhaW1SZXNUb1dIAgZhbW91bnQObGFuZEFzc2V0SWRTdHIEDHByb2xvZ0FjdGlvbgkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQEYWRkcgkApQgBCAUBaQxvcmlnaW5DYWxsZXIEBnJlc3VsdAkBEGNsYWltUmVzSW50ZXJuYWwEBQRhZGRyBQZhbW91bnQFC2NsYWltTW9kZVdoBQ5sYW5kQXNzZXRJZFN0cgkAlAoCCQDNCAIJAM0IAgkAzQgCCQDOCAIIBQZyZXN1bHQCXzEICQEWdXBkYXRlQWNjU3RhdHNJbnRlcm5hbAIFBGFkZHIJAGsDBQd4cENsYWltBQZhbW91bnQFBU1VTFQ4Al8xCQELU3RyaW5nRW50cnkCCAUGcmVzdWx0Al8yCQC5CQIIBQZyZXN1bHQCXzMCAToJAQtTdHJpbmdFbnRyeQIIBQZyZXN1bHQCXzQJALkJAggFBnJlc3VsdAJfNQIBOgUMcHJvbG9nQWN0aW9uCQCRAwIIBQZyZXN1bHQCXzUFCHdoSWR4UmVzAWkBBmZsaWdodAIHbWVzc2FnZQNzaWcEDHByb2xvZ0FjdGlvbgkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQIdXNlckFkZHIJAKUIAQgFAWkGY2FsbGVyBAFmCQEMZmxpZ2h0Q29tbW9uAwUIdXNlckFkZHIFB21lc3NhZ2UFA3NpZwQLZHVja0Fzc2V0SWQIBQFmAl8yBAtuZXdMb2NhdGlvbggFAWYCXzQEBm5ld0xvYwkAtQkCBQtuZXdMb2NhdGlvbgIBXwQGaXNUb3VyCQAAAgkAkQMCBQZuZXdMb2MFCmxvY0lkeFR5cGUCAVQDAwkBASEBBQZpc1RvdXIJAQ9jaGVja1RvdXJuYW1lbnQBBQtkdWNrQXNzZXRJZAcJAAIBAhZmbGlnaHRfY2hlY2tUb3VybmFtZW50BAZsb2NLZXkJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAQLY3VyTG9jYXRpb24JAQt2YWx1ZU9yRWxzZQIJAKIIAQUGbG9jS2V5BQ9ERUZBVUxUTE9DQVRJT04ECXRvdXJTdHVmZgMFBmlzVG91cgQGb2xkTG9jCQC1CQIFC2N1ckxvY2F0aW9uAgFfBAlvbGRJc1RvdXIJAAACCQCRAwIFBm9sZExvYwUKbG9jSWR4VHlwZQIBVAQGbGFzdElkCQELdmFsdWVPckVsc2UCCQCaCAIFEnRvdXJuYW1lbnRDb250cmFjdAUNbGFzdFRvdXJJZEtleQAABANub3cIBQlsYXN0QmxvY2sJdGltZXN0YW1wBAV0RGF0YQkBC2dldFRvdXJEYXRhAgUSdG91cm5hbWVudENvbnRyYWN0BQZsYXN0SWQEBnN0YXRpYwkAkQMCBQV0RGF0YQUJaWR4U3RhdGljBAdkeW5hbWljCQCRAwIFBXREYXRhBQppZHhEeW5hbWljAwMDCQECIT0CCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUGbmV3TG9jBQ9sb2NJZHhDb250aW5lbnQFBmxhc3RJZAYJAQIhPQIJAJEDAgUHZHluYW1pYwUOdER5bmFtaWNTdGF0dXMCCklOUFJPR1JFU1MGCQBmAgUDbm93CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUGc3RhdGljBQp0U3RhdGljRW5kBQR1bml0BAVzY29yZQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBm5ld0xvYwUIbG9jSWR4SWQECmdsb2JhbEJlc3QJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQdkeW5hbWljBRF0RHluYW1pY1dpblJlc3VsdAMDAwkBASEBBQlvbGRJc1RvdXIGCQECIT0CCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUGb2xkTG9jBQ9sb2NJZHhDb250aW5lbnQFBmxhc3RJZAYJAQIhPQIFBXNjb3JlCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBm9sZExvYwUIbG9jSWR4SWQAAQkAAgEJAKwCAgkArAICCQCsAgICFkNoZWF0IGF0dGVtcHQ6IG9sZExvYz0FC2N1ckxvY2F0aW9uAgksIG5ld0xvYz0FC25ld0xvY2F0aW9uBAlsb2NhbEJlc3QJAQt2YWx1ZU9yRWxzZQIJAJoIAgUSdG91cm5hbWVudENvbnRyYWN0CQEaa2V5QmVzdFJlc3VsdEJ5VG91ckFuZER1Y2sCBQZsYXN0SWQFC2R1Y2tBc3NldElkAAAEBWxvY2FsAwkAZgIFBXNjb3JlBQlsb2NhbEJlc3QJAPwHBAUSdG91cm5hbWVudENvbnRyYWN0Ag5zYXZlRHVja1Jlc3VsdAkAzAgCBQtkdWNrQXNzZXRJZAkAzAgCBQVzY29yZQUDbmlsBQNuaWwFBHVuaXQDCQAAAgUFbG9jYWwFBWxvY2FsAwkAZwIFCmdsb2JhbEJlc3QFBXNjb3JlBQR1bml0CQD8BwQFEnRvdXJuYW1lbnRDb250cmFjdAIRdXBkYXRlRHluYW1pY0RhdGEJAMwIAgULZHVja0Fzc2V0SWQJAMwIAgUFc2NvcmUFA25pbAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBQR1bml0AwkAAAIFCXRvdXJTdHVmZgUJdG91clN0dWZmAwkAAAIFC25ld0xvY2F0aW9uBQtjdXJMb2NhdGlvbgkAAgECIllvdSBjYW4ndCBmbHkgdG8gdGhlIHNhbWUgbG9jYXRpb24EBWVxS2V5CQEQa2V5RHVja0VxdWlwbWVudAEFC2R1Y2tBc3NldElkBAljdXJyZW50RXEJAQt2YWx1ZU9yRWxzZQIJAKIIAQUFZXFLZXkCFyw7LF8sOyxfLDssXyw7LF8sOyxfLDssBA0kdDA2ODg2NjY5MDQyCQERc3VidHJhY3RFcXVpcG1lbnQCBQljdXJyZW50RXEIBQFmAl81BAVuZXdFcQgFDSR0MDY4ODY2NjkwNDICXzEED3Nob3VsZFplcm9CdWZmcwgFDSR0MDY4ODY2NjkwNDICXzIJAJQKAgkAzggCCQDMCAIJAQtTdHJpbmdFbnRyeQIFBmxvY0tleQMJAGYCCAUBZgJfMQAABQtuZXdMb2NhdGlvbgULY3VyTG9jYXRpb24JAMwIAgkBC1N0cmluZ0VudHJ5AgUFZXFLZXkFBW5ld0VxCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQENa2V5RHVja0hlYWx0aAEFC2R1Y2tBc3NldElkCAUBZgJfMQkAzAgCBQxwcm9sb2dBY3Rpb24FA25pbAMFD3Nob3VsZFplcm9CdWZmcwkAzAgCCQELU3RyaW5nRW50cnkCCQEMa2V5RHVja0J1ZmZzAQULZHVja0Fzc2V0SWQCCTBfMF8wXzBfMAUDbmlsCQDOCAIFA25pbAgJARd1cGRhdGVEdWNrU3RhdHNJbnRlcm5hbAIFC2R1Y2tBc3NldElkAwkAZgIIBQFmAl8xAAAFD3hwU3VjY2Vzc0ZsaWdodAUMeHBGYWlsRmxpZ2h0Al8xCAUBZgJfMwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQRoZWFsAwpxdWFudGl0eUwxCnF1YW50aXR5TDIKcXVhbnRpdHlMMwQMcHJvbG9nQWN0aW9uCQEGcHJvbG9nAQUBaQMDAwkAZgIAAAUKcXVhbnRpdHlMMQYJAGYCAAAFCnF1YW50aXR5TDIGCQBmAgAABQpxdWFudGl0eUwzCQACAQIbUXVhbnRpdHkgY2Fubm90IGJlIG5lZ2F0aXZlBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEJAKUIAQgFAWkGY2FsbGVyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkAwkBD2NoZWNrVG91cm5hbWVudAEFC2R1Y2tBc3NldElkCQACAQIUaGVhbF9jaGVja1RvdXJuYW1lbnQEA3F0cwkAzAgCBQpxdWFudGl0eUwxCQDMCAIFCnF1YW50aXR5TDIJAMwIAgUKcXVhbnRpdHlMMwUDbmlsBAlrZXlIZWFsdGgJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQEBW1heEhQCQEJbWF4SGVhbHRoAQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEMa2V5RHVja0xldmVsAQULZHVja0Fzc2V0SWQAAAQJb2xkSGVhbHRoCQELdmFsdWVPckVsc2UCCQCfCAEFCWtleUhlYWx0aAUFbWF4SFADCQBnAgUJb2xkSGVhbHRoBQVtYXhIUAkAAgEJAKwCAgkArAICAg9IUCBzaG91bGQgYmUgPCAJAKQDAQUFbWF4SFACCCB0byBoZWFsBAVicEtleQkBEWtleUJhY2twYWNrQnlEdWNrAQULZHVja0Fzc2V0SWQEC2N1cnJlbnRQYWNrCQELZ2V0QmFja3BhY2sBBQVicEtleQQIcHJvZExpc3QDCQAAAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kAgAFA25pbAkAvAkCCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QCAV8KAQtpdGVyYXRlUHJvZAIDYWNjBnJlY2lwZQQBbggFA2FjYwJfMgQBeAMJAGYCCQCQAwEFCHByb2RMaXN0BQFuCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUIcHJvZExpc3QFAW4AAAMJAGYCAAMFAW4EAXEJAJEDAgUDcXRzBQFuAwkAZgIFAXEFAXgJAAIBCQCsAgIJAKwCAgkArAICAg5Zb3UgaGF2ZSBvbmx5IAkApAMBBQF4AgQgb2YgCQCRAwIFCXByb2RUeXBlcwUBbgkAlQoDCQDNCAIIBQNhY2MCXzEJAKQDAQkAZQIFAXgFAXEJAGQCBQFuAAEJAGQCCAUDYWNjAl8zCQBoAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIJALUJAgUGcmVjaXBlAgFfBQpySWR4RWZmZWN0BQFxCQCVCgMJAM0IAggFA2FjYwJfMQkApAMBBQF4CQBkAgUBbgABCAUDYWNjAl8zBAZyZXN1bHQKAAIkbAUQcHJvZHVjdGlvbk1hdHJpeAoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJUKAwUDbmlsAAAAAAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQELaXRlcmF0ZVByb2QCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDUwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIAIwAkACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgQJbmV3SGVhbHRoCQCXAwEJAMwIAgUFbWF4SFAJAMwIAgkAZAIFCW9sZEhlYWx0aAgFBnJlc3VsdAJfMwUDbmlsCQCUCgIJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUJa2V5SGVhbHRoBQluZXdIZWFsdGgJAMwIAgkBC1N0cmluZ0VudHJ5AgUFYnBLZXkJALoJAgkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQpicElkeExldmVsCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4UmVzCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4TWF0CQDMCAIJALkJAggFBnJlc3VsdAJfMQIBXwUDbmlsAgE6CQDMCAIFDHByb2xvZ0FjdGlvbgUDbmlsCAkBF3VwZGF0ZUR1Y2tTdGF0c0ludGVybmFsAgULZHVja0Fzc2V0SWQJAGgCBQZ4cEhlYWwJAGQCCQBkAgUKcXVhbnRpdHlMMQUKcXVhbnRpdHlMMgUKcXVhbnRpdHlMMwJfMQUJbmV3SGVhbHRoAWkBBmhlYWxFUwAEDHByb2xvZ0FjdGlvbgkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAhxFeGFjdGx5IG9uZSBwYXltZW50IHJlcXVpcmVkBANwbXQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAMJAQIhPQIIBQNwbXQHYXNzZXRJZAULdXNkdEFzc2V0SWQJAAIBAhpBbGxvd2VkIFVTRFQgcGF5bWVudCBvbmx5IQQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBCQClCAEIBQFpBmNhbGxlcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAMJAQ9jaGVja1RvdXJuYW1lbnQBBQtkdWNrQXNzZXRJZAkAAgECFmhlYWxFU19jaGVja1RvdXJuYW1lbnQECWtleUhlYWx0aAkBDWtleUR1Y2tIZWFsdGgBBQtkdWNrQXNzZXRJZAQFbWF4SFAJAQltYXhIZWFsdGgBCQELdmFsdWVPckVsc2UCCQCfCAEJAQxrZXlEdWNrTGV2ZWwBBQtkdWNrQXNzZXRJZAAABAlvbGRIZWFsdGgJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJa2V5SGVhbHRoBQVtYXhIUAMJAGYCBQlvbGRIZWFsdGgAAAkAAgECKEhQIHNob3VsZCBiZSAwIHRvIGNhbGwgRW1lcmdlbmN5IFNlcnZpY2UEBWJwS2V5CQERa2V5QmFja3BhY2tCeUR1Y2sBBQtkdWNrQXNzZXRJZAQLY3VycmVudFBhY2sJAQtnZXRCYWNrcGFjawEFBWJwS2V5BAhwcm9kTGlzdAMJAAACCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QCAAUDbmlsCQC8CQIJAJEDAgULY3VycmVudFBhY2sFCWJwSWR4UHJvZAIBXwQNbWVkS2l0QW1vdW50MQMJAGYCCQCQAwEFCHByb2RMaXN0AAAJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQhwcm9kTGlzdAAAAAAEDW1lZEtpdEFtb3VudDIDCQBmAgkAkAMBBQhwcm9kTGlzdAABCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUIcHJvZExpc3QAAQAABA1tZWRLaXRBbW91bnQzAwkAZgIJAJADAQUIcHJvZExpc3QAAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCHByb2RMaXN0AAIAAAMDAwkAZgIFDW1lZEtpdEFtb3VudDEAAAYJAGYCBQ1tZWRLaXRBbW91bnQyAAAGCQBmAgUNbWVkS2l0QW1vdW50MwAACQACAQIfWW91IGhhdmUgdG8gdXNlIG93biBNZWRpY2FsIEtpdAQIZXhpc3RTdHIJAJ0IAgUPZWNvbm9teUNvbnRyYWN0CQEOa2V5RXNXYXJlaG91c2UABAxleGlzdEFtb3VudHMDCQEJaXNEZWZpbmVkAQUIZXhpc3RTdHIJALwJAgkBBXZhbHVlAQUIZXhpc3RTdHICAV8FA25pbAQLZXhpc3RBbW91bnQDCQBmAgkAkAMBBQxleGlzdEFtb3VudHMAAAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFDGV4aXN0QW1vdW50cwAAAAADCQBnAgAABQtleGlzdEFtb3VudAkAAgECOVRoZXJlIGFyZSBubyBNZWRpY2FsIEtpdHMgTDEgYXQgRW1lcmdlbmN5IFNlcnZpY2Ugc3RvcmFnZQQJbmV3SGVhbHRoCQBkAgUJb2xkSGVhbHRoCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgkAtQkCCQCRAwIFEHByb2R1Y3Rpb25NYXRyaXgAAAIBXwUKcklkeEVmZmVjdAQFbmV3RVMJALkJAgkAzAgCCQCkAwEJAGUCBQtleGlzdEFtb3VudAABCQDRCAIFDGV4aXN0QW1vdW50cwAAAgFfBAZyZWNpcGUJALUJAgkAkQMCBRBwcm9kdWN0aW9uTWF0cml4AAACAV8ECHRvdGFsTWF0CQESZ2V0UmVjaXBlTWF0ZXJpYWxzAQUGcmVjaXBlBAlzZWxsUHJpY2UJAGsDCQBoAgUIdG90YWxNYXQFCkVTU0VMTENPRUYFEFJFU09VUkNFUFJJQ0VNSU4JAGgCBQVNVUxUOAUOUFJPRFVDVFBLR1NJWkUDCQECIT0CCAUDcG10BmFtb3VudAUJc2VsbFByaWNlCQACAQkArAICAhtQYXltZW50IGF0dGFjaGVkIHNob3VsZCBiZSAJAKQDAQUJc2VsbFByaWNlBAZyZXN1bHQJAQhhc1N0cmluZwEJAPwHBAUPZWNvbm9teUNvbnRyYWN0Ag91cGRhdGVFc1N0b3JhZ2UJAMwIAgUFbmV3RVMFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgULdXNkdEFzc2V0SWQFCXNlbGxQcmljZQUDbmlsCQCUCgIJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUJa2V5SGVhbHRoBQluZXdIZWFsdGgJAMwIAgUMcHJvbG9nQWN0aW9uBQNuaWwICQEXdXBkYXRlRHVja1N0YXRzSW50ZXJuYWwCBQtkdWNrQXNzZXRJZAUIeHBDYWxsRVMCXzEFBnJlc3VsdAFpAQ51cGRhdGVCYWNrcGFjawILZHVja0Fzc2V0SWQHbmV3UGFjawMJAQIhPQIIBQFpBmNhbGxlcgUPZWNvbm9teUNvbnRyYWN0CQACAQIRcGVybWlzc2lvbiBkZW5pZWQJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCCQERa2V5QmFja3BhY2tCeUR1Y2sBBQtkdWNrQXNzZXRJZAUHbmV3UGFjawUDbmlsBQduZXdQYWNrAWkBD2NvbW1pdEZvclJhbmRvbQAEDHByb2xvZ0FjdGlvbgkBBnByb2xvZwEFAWkEC2ZpbmlzaEJsb2NrCQBkAgUGaGVpZ2h0BQtyYW5kb21EZWxheQQEYWRkcgkApQgBCAUBaQZjYWxsZXIJAJQKAgkAzQgCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEJa2V5Q29tbWl0AQUEYWRkcgULZmluaXNoQmxvY2sFA25pbAUMcHJvbG9nQWN0aW9uBQtmaW5pc2hCbG9jawFpAQhidXlTTGFuZAAEDHByb2xvZ0FjdGlvbgkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAhxFeGFjdGx5IG9uZSBwYXltZW50IHJlcXVpcmVkBANwbXQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAMJAQIhPQIIBQNwbXQHYXNzZXRJZAULdXNkdEFzc2V0SWQJAAIBAhpBbGxvd2VkIFVTRFQgcGF5bWVudCBvbmx5IQMJAQIhPQIIBQNwbXQGYW1vdW50BQdFWFBVU0RUCQACAQkArAICAhtQYXltZW50IGF0dGFjaGVkIHNob3VsZCBiZSAJAKQDAQUHRVhQVVNEVAQGcmVzdWx0CQESZXhwZWRpdGlvbkludGVybmFsAggFAWkGY2FsbGVyCAUBaQ10cmFuc2FjdGlvbklkCQCUCgIJAM0IAgkAzggCCQDNCAIIBQZyZXN1bHQCXzEJAQ5TY3JpcHRUcmFuc2ZlcgMFD2Vjb25vbXlDb250cmFjdAgFA3BtdAZhbW91bnQFC3VzZHRBc3NldElkCAkBFnVwZGF0ZUFjY1N0YXRzSW50ZXJuYWwCCQClCAEIBQFpBmNhbGxlcgUKeHBOZXdTTGFuZAJfMQUMcHJvbG9nQWN0aW9uCAgFBnJlc3VsdAJfMgJfMQFpAQpleHBlZGl0aW9uAgdtZXNzYWdlA3NpZwQMcHJvbG9nQWN0aW9uCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBAZyZXN1bHQJARBleHBlZGl0aW9uQ29tbW9uBAgFAWkGY2FsbGVyCAUBaQ10cmFuc2FjdGlvbklkBQdtZXNzYWdlBQNzaWcEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQkApQgBCAUBaQZjYWxsZXICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQDCQEPY2hlY2tUb3VybmFtZW50AQULZHVja0Fzc2V0SWQJAAIBAhpleHBlZGl0aW9uX2NoZWNrVG91cm5hbWVudAkAlAoCCQDNCAIJAM4IAggFBnJlc3VsdAJfMQgJARd1cGRhdGVEdWNrU3RhdHNJbnRlcm5hbAIFC2R1Y2tBc3NldElkBQp4cE5ld1NMYW5kAl8xBQxwcm9sb2dBY3Rpb24JAJQKAggFBnJlc3VsdAJfMggFBnJlc3VsdAJfMwFpAQx1cGdyYWRlSW5mcmEBC2xhbmRBc3NldElkBAxwcm9sb2dBY3Rpb24JAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQEBnJlc3VsdAkBDXVwSW5mcmFDb21tb24EBggFAWkGY2FsbGVyAAAFC2xhbmRBc3NldElkBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEJAKUIAQgFAWkGY2FsbGVyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkCQCUCgIJAM4IAgkAzQgCCAUGcmVzdWx0Al8xBQxwcm9sb2dBY3Rpb24ICQEXdXBkYXRlRHVja1N0YXRzSW50ZXJuYWwCBQtkdWNrQXNzZXRJZAkAawMFDnhwVXBncmFkZUluZnJhCAUGcmVzdWx0Al8zBQVNVUxUOAJfMQgFBnJlc3VsdAJfMgFpARBhY3RpdmF0ZUFydGlmYWN0AgdhcnROYW1lDmxhbmRBc3NldElkT3B0BAxwcm9sb2dBY3Rpb24JAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQEBGFkZHIJAKUIAQgFAWkGY2FsbGVyBAZyZXN1bHQEByRtYXRjaDAFB2FydE5hbWUDCQAAAgIHUFJFU0FMRQUHJG1hdGNoMAkBEmFjdGl2YXRlUHJlc2FsZUFydAIFBGFkZHIFDmxhbmRBc3NldElkT3B0AwkAAAICB09OQk9BUkQFByRtYXRjaDAJARJhY3RpdmF0ZU9uYm9hcmRBcnQBBQRhZGRyCQACAQIQVW5rbm93biBhcnRpZmFjdAkAzQgCBQZyZXN1bHQFDHByb2xvZ0FjdGlvbgFpAQptZXJnZUxhbmRzAQxsYW5kQXNzZXRJZHMEDHByb2xvZ0FjdGlvbgkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQGcmVzdWx0CQELbWVyZ2VDb21tb24CCQClCAEIBQFpBmNhbGxlcgUMbGFuZEFzc2V0SWRzCQCUCgIJAM4IAgkAzQgCCAUGcmVzdWx0Al8xBQxwcm9sb2dBY3Rpb24ICQEWdXBkYXRlQWNjU3RhdHNJbnRlcm5hbAIJAKUIAQgFAWkGY2FsbGVyBQd4cE1lcmdlAl8xCAUGcmVzdWx0Al8yAWkBDWNhcmdvRXhjaGFuZ2UCDGNhcmdvTGlzdFN0cgtsYW5kQXNzZXRJZAQMcHJvbG9nQWN0aW9uCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBApjYXJnb1BhcnRzCQC8CQIFDGNhcmdvTGlzdFN0cgIBOgQEYWRkcgkApQgBCAUBaQxvcmlnaW5DYWxsZXIEBWFzc2V0CQEFdmFsdWUBCQDsBwEJANkEAQULbGFuZEFzc2V0SWQEB3RpbWVLZXkJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQULbGFuZEFzc2V0SWQDCQEBIQEJAQlpc0RlZmluZWQBCQCfCAEFB3RpbWVLZXkJAAIBCQCsAgIIBQVhc3NldARuYW1lAg4gaXMgbm90IHN0YWtlZAQFb3duZXIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEVa2V5TGFuZEFzc2V0SWRUb093bmVyAQULbGFuZEFzc2V0SWQJAKwCAgkArAICAgRORlQgCAUFYXNzZXQEbmFtZQIMIGlzIG9ycGhhbmVkAwkBAiE9AgUFb3duZXIFBGFkZHIJAAIBCQCsAgIFCkxBTkRQUkVGSVgCDSBpcyBub3QgeW91cnMECWxhbmRJbmRleAkAaQIJAQ9udW1QaWVjZXNCeVNpemUBCQCRAwIJALUJAggFBWFzc2V0C2Rlc2NyaXB0aW9uAgFfBQtyZWNMYW5kU2l6ZQUFU1NJWkUECmluZnJhTGV2ZWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAAABAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFBGFkZHICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQEC2N1ckxvY2F0aW9uCQELdmFsdWVPckVsc2UCCQCiCAEJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAUPREVGQVVMVExPQ0FUSU9OBANsb2MJALUJAgkBBXZhbHVlAQULY3VyTG9jYXRpb24CAV8DCQECIT0CCQCRAwIFA2xvYwUKbG9jSWR4VHlwZQIBTAkAAgEJAKwCAgkArAICAhZEdWNrIGxvY2F0aW9uIHR5cGUgaXMgCQCRAwIFA2xvYwUKbG9jSWR4VHlwZQIRLCBidXQgc2hvdWxkIGJlIEwDCQECIT0CCQCRAwIFA2xvYwUIbG9jSWR4SWQFC2xhbmRBc3NldElkCQACAQkArAICAhtEdWNrIHNob3VsZCBiZSBvbiB0aGUgbGFuZCAFC2xhbmRBc3NldElkBAV3aEtleQkBEmtleVdhcmVob3VzZUJ5TGFuZAEFC2xhbmRBc3NldElkBAljdXJyZW50V2gJAQxnZXRXYXJlaG91c2UDBQV3aEtleQUJbGFuZEluZGV4BQppbmZyYUxldmVsBAVicEtleQkBEWtleUJhY2twYWNrQnlEdWNrAQULZHVja0Fzc2V0SWQEC2N1cnJlbnRQYWNrCQELZ2V0QmFja3BhY2sBBQVicEtleQQGcmVzdWx0CQEJbW92ZVN0dWZmAwUKY2FyZ29QYXJ0cwUJY3VycmVudFdoBQtjdXJyZW50UGFjawQEbG9mdAkAtQkCCQCRAwIFCWN1cnJlbnRXaAUJd2hJZHhMT0ZUAgFfBAVsb2Z0TwkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQt2b2xPY2N1cGllZAgFBnJlc3VsdAJfNwQFbG9mdEYJAGUCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbG9mdAUHdm9sRnJlZQgFBnJlc3VsdAJfNwkAzAgCCQELU3RyaW5nRW50cnkCBQVicEtleQkAugkCCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCmJwSWR4TGV2ZWwJAMwIAggFBnJlc3VsdAJfNAkAzAgCCAUGcmVzdWx0Al81CQDMCAIIBQZyZXN1bHQCXzYFA25pbAIBOgkAzAgCCQELU3RyaW5nRW50cnkCBQV3aEtleQkAugkCCQDMCAIJAJEDAgUJY3VycmVudFdoBQt3aElkeExldmVscwkAzAgCCAUGcmVzdWx0Al8xCQDMCAIIBQZyZXN1bHQCXzIJAMwIAggFBnJlc3VsdAJfMwkAzAgCCQC5CQIJAMwIAgkAkQMCBQRsb2Z0BQl2b2xMb2NrZWQJAMwIAgkApAMBBQVsb2Z0TwkAzAgCCQCkAwEFBWxvZnRGCQDMCAIJAJEDAgUEbG9mdAUIdm9sVG90YWwFA25pbAIBXwUDbmlsAgE6CQDMCAIFDHByb2xvZ0FjdGlvbgUDbmlsAWkBDXNhdmVXYXJlaG91c2UCBXdoU3RyC2xhbmRBc3NldElkAwkBAiE9AggFAWkGY2FsbGVyBQ9lY29ub215Q29udHJhY3QJAAIBAg1BY2Nlc3MgZGVuaWVkBAV3aEtleQkBEmtleVdhcmVob3VzZUJ5TGFuZAEFC2xhbmRBc3NldElkBAJ3aAkAvAkCBQV3aFN0cgIBOgMJAQIhPQIJAJADAQUCd2gABQkAAgECMHdhcmVob3VzZSBzdHJpbmcgc2hvdWxkIGNvbnRhaW4gNCAnOicgc2VwYXJhdG9ycwQFbG9mdEwJAJEDAgkAtQkCCQCRAwIFAndoBQl3aElkeExPRlQCAV8FCXZvbExvY2tlZAQFbG9mdE8JARdnZXRXYXJlaG91c2VPY2N1cGllZFZvbAEFAndoBAVsb2Z0VAkBF2dldFdhcmVob3VzZVRvdGFsVm9sdW1lAQkAkQMCBQJ3aAULd2hJZHhMZXZlbHMEBWxvZnRGCQBlAgkAZQIFBWxvZnRUCQENcGFyc2VJbnRWYWx1ZQEFBWxvZnRMBQVsb2Z0TwQIbmV3V2hTdHIJALoJAgkAzAgCCQCRAwIFAndoBQt3aElkeExldmVscwkAzAgCCQCRAwIFAndoBQh3aElkeFJlcwkAzAgCCQCRAwIFAndoBQh3aElkeE1hdAkAzAgCCQCRAwIFAndoBQl3aElkeFByb2QJAMwIAgkAuQkCCQDMCAIFBWxvZnRMCQDMCAIJAKQDAQUFbG9mdE8JAMwIAgkApAMBBQVsb2Z0RgkAzAgCCQCkAwEFBWxvZnRUBQNuaWwCAV8FA25pbAIBOgkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIFBXdoS2V5BQhuZXdXaFN0cgUDbmlsBQhuZXdXaFN0cgFpARJmaXhXYXJlaG91c2VGb3JtYXQBC2xhbmRBc3NldElkAwkBAiE9AggFAWkGY2FsbGVyBQxyZXN0Q29udHJhY3QJAAIBAg1BY2Nlc3MgZGVuaWVkBAV3aEtleQkBEmtleVdhcmVob3VzZUJ5TGFuZAEFC2xhbmRBc3NldElkBAVhc3NldAkBBXZhbHVlAQkA7AcBCQDZBAEFC2xhbmRBc3NldElkBAlsYW5kSW5kZXgJAGkCCQEPbnVtUGllY2VzQnlTaXplAQkAkQMCCQC1CQIIBQVhc3NldAtkZXNjcmlwdGlvbgIBXwULcmVjTGFuZFNpemUFBVNTSVpFBAppbmZyYUxldmVsCQELdmFsdWVPckVsc2UCCQCfCAEJARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQULbGFuZEFzc2V0SWQAAAQCd2gJAQxnZXRXYXJlaG91c2UDBQV3aEtleQUJbGFuZEluZGV4BQppbmZyYUxldmVsBAVsb2Z0TAkBBWFzSW50AQkA/AcEBQ9lY29ub215Q29udHJhY3QCGnJlY2FsY0xvY2tlZFZvbHVtZVJFQURPTkxZCQDMCAIFC2xhbmRBc3NldElkCQDMCAIFAndoBQNuaWwFA25pbAQFbG9mdE8JARdnZXRXYXJlaG91c2VPY2N1cGllZFZvbAEFAndoBAVsb2Z0VAkBF2dldFdhcmVob3VzZVRvdGFsVm9sdW1lAQkAkQMCBQJ3aAULd2hJZHhMZXZlbHMEBWxvZnRGCQBlAgkAZQIFBWxvZnRUBQVsb2Z0TAUFbG9mdE8ECG5ld1doU3RyCQC6CQIJAMwIAgkAkQMCBQJ3aAULd2hJZHhMZXZlbHMJAMwIAgkAkQMCBQJ3aAUId2hJZHhSZXMJAMwIAgkAkQMCBQJ3aAUId2hJZHhNYXQJAMwIAgkAkQMCBQJ3aAUJd2hJZHhQcm9kCQDMCAIJALkJAgkAzAgCCQCkAwEFBWxvZnRMCQDMCAIJAKQDAQUFbG9mdE8JAMwIAgkApAMBBQVsb2Z0RgkAzAgCCQCkAwEFBWxvZnRUBQNuaWwCAV8FA25pbAIBOgkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIFBXdoS2V5BQhuZXdXaFN0cgUDbmlsBQhuZXdXaFN0cgFpARdmaXhDb250aW5lbnRQcm9wb3J0aW9ucwEMbGFuZEFzc2V0SWRzAwkBAiE9AggFAWkGY2FsbGVyBQxyZXN0Q29udHJhY3QJAAIBAg1BY2Nlc3MgZGVuaWVkCgEIZ2V0UHJvcHMCA2FjYwRjb250CQDNCAIFA2FjYwkBC3ZhbHVlT3JFbHNlAgkAoggBCQEWa2V5UmVzVHlwZXNCeUNvbnRpbmVudAEFBGNvbnQCCzBfMF8wXzBfMF8wBAFwCgACJGwFCmNvbnRpbmVudHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBCGdldFByb3BzAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA1CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQoBCXByb2Nlc3NvcgIDYWNjC2xhbmRBc3NldElkBAVhc3NldAkBBXZhbHVlAQkA7AcBCQDZBAEFC2xhbmRBc3NldElkBAFkCQC1CQIIBQVhc3NldAtkZXNjcmlwdGlvbgIBXwQJbGFuZEluZGV4CQBpAgkBD251bVBpZWNlc0J5U2l6ZQEJAJEDAgUBZAULcmVjTGFuZFNpemUFBVNTSVpFBARjb250CQCRAwIFAWQFDHJlY0NvbnRpbmVudAQNdGVycmFpbkNvdW50cwkBDWNvdW50VGVycmFpbnMBCQCRAwIFAWQFC3JlY1RlcnJhaW5zBAxjb250aW5lbnRJZHgJAQV2YWx1ZQEJAM8IAgUKY29udGluZW50cwUEY29udAQJY29udFByb3BzCQC1CQIJAJEDAgUDYWNjBQxjb250aW5lbnRJZHgCAV8EB3VwZGF0ZWQJALkJAgkBGXVwZGF0ZVByb3BvcnRpb25zSW50ZXJuYWwEBQljb250UHJvcHMFDXRlcnJhaW5Db3VudHMF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OwA8AD0APgA/AEAAQQBCAEMARABFAEYARwBIAEkASgBLAEwATQBOAE8AUABRAFIAUwBUAFUAVgBXAFgAWQBaAFsAXABdAF4AXwBgAGEAYgBjAGQJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCCQEWa2V5UmVzVHlwZXNCeUNvbnRpbmVudAECCEFtZXJpY2FzCQCRAwIFAXIAAAkAzAgCCQELU3RyaW5nRW50cnkCCQEWa2V5UmVzVHlwZXNCeUNvbnRpbmVudAECBkV1cm9wZQkAkQMCBQFyAAEJAMwIAgkBC1N0cmluZ0VudHJ5AgkBFmtleVJlc1R5cGVzQnlDb250aW5lbnQBAgRBc2lhCQCRAwIFAXIAAgkAzAgCCQELU3RyaW5nRW50cnkCCQEWa2V5UmVzVHlwZXNCeUNvbnRpbmVudAECBkFmcmljYQkAkQMCBQFyAAMJAMwIAgkBC1N0cmluZ0VudHJ5AgkBFmtleVJlc1R5cGVzQnlDb250aW5lbnQBAgdPY2VhbmlhCQCRAwIFAXIABAUDbmlsAAABaQEPZml4U3Rha2VkUGllY2VzAQdhZGRyZXNzAwkBAiE9AggFAWkGY2FsbGVyBQxyZXN0Q29udHJhY3QJAAIBAg1BY2Nlc3MgZGVuaWVkBAxzdGFrZWRQaWVjZXMDCQAAAgUHYWRkcmVzcwIAAAAECGxhbmRzU3RyCQCdCAIFD3N0YWtpbmdDb250cmFjdAkBFWtleVN0YWtlZExhbmRzQnlPd25lcgEFB2FkZHJlc3MEBWxhbmRzAwkBCWlzRGVmaW5lZAEFCGxhbmRzU3RyCQC9CQIJAQV2YWx1ZQEFCGxhbmRzU3RyAgFfBQNuaWwKAQdvbmVMYW5kAgNhY2MLbGFuZEFzc2V0SWQEBWFzc2V0CQEFdmFsdWUBCQDsBwEJANkEAQULbGFuZEFzc2V0SWQECGxhbmRTaXplCQCRAwIJALUJAggFBWFzc2V0C2Rlc2NyaXB0aW9uAgFfBQtyZWNMYW5kU2l6ZQkAZAIFA2FjYwkBD251bVBpZWNlc0J5U2l6ZQEFCGxhbmRTaXplCgACJGwFBWxhbmRzCgACJHMJAJADAQUCJGwKAAUkYWNjMAAACgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQdvbmVMYW5kAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhVMaXN0IHNpemUgZXhjZWVkcyAxMDAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyADMANAA1ADYANwA4ADkAOgA7ADwAPQA+AD8AQABBAEIAQwBEAEUARgBHAEgASQBKAEsATABNAE4ATwBQAFEAUgBTAFQAVQBWAFcAWABZAFoAWwBcAF0AXgBfAGAAYQBiAGMAZAkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEWa2V5U3Rha2VkUGllY2VzQnlPd25lcgEFB2FkZHJlc3MFDHN0YWtlZFBpZWNlcwUDbmlsBQxzdGFrZWRQaWVjZXMBaQENc2V0Q3VzdG9tTmFtZQMHYXNzZXRJZApjdXN0b21OYW1lBHR5cGUEDHByb2xvZ0FjdGlvbgkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAhxFeGFjdGx5IG9uZSBwYXltZW50IHJlcXVpcmVkBANwbXQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAMJAQIhPQIIBQNwbXQHYXNzZXRJZAULdXNkdEFzc2V0SWQJAAIBAhpBbGxvd2VkIFVTRFQgcGF5bWVudCBvbmx5IQMJAQIhPQIIBQNwbXQGYW1vdW50BQxSRU5BTUlOR0NPU1QJAAIBCQCsAgICElBheW1lbnQgc2hvdWxkIGJlIAkApAMBBQxSRU5BTUlOR0NPU1QDCQEIY29udGFpbnMCBQpjdXN0b21OYW1lAgJfXwkAAgEJAKwCAgIeTmFtZSBzaG91bGQgbm90IGNvbnRhaW4gJ19fJzogBQpjdXN0b21OYW1lAwkAZgIJALECAQUKY3VzdG9tTmFtZQUKTUFYTkFNRUxFTgkAAgEJAKwCAgIZTmFtZSB0b28gbG9uZywgbWF4TGVuZ3RoPQkApAMBBQpNQVhOQU1FTEVOBARhZGRyCQClCAEIBQFpDG9yaWdpbkNhbGxlcgQHYWN0aW9ucwQHJG1hdGNoMAUEdHlwZQMJAAACAgdBQ0NPVU5UBQckbWF0Y2gwBApyZXZlcnNlS2V5CQEWa2V5Q3VzdG9tTmFtZVRvQWRkcmVzcwEFCmN1c3RvbU5hbWUECW5hbWVPd25lcgkAoggBBQpyZXZlcnNlS2V5AwkBCWlzRGVmaW5lZAEFCW5hbWVPd25lcgkAAgEJAKwCAgIZTmFtZSBhbHJlYWR5IHJlZ2lzdGVyZWQ6IAUKY3VzdG9tTmFtZQQNYWRkclRvTmFtZUtleQkBFmtleUFkZHJlc3NUb0N1c3RvbU5hbWUBBQRhZGRyBAdvbGROYW1lCQCiCAEFDWFkZHJUb05hbWVLZXkEB2ZyZWVPbGQDCQEJaXNEZWZpbmVkAQUHb2xkTmFtZQkAzAgCCQELRGVsZXRlRW50cnkBCQEWa2V5Q3VzdG9tTmFtZVRvQWRkcmVzcwEJAQV2YWx1ZQEFB29sZE5hbWUFA25pbAUDbmlsCQDOCAIJAM0IAgkAzQgCBQdmcmVlT2xkCQELU3RyaW5nRW50cnkCBQ1hZGRyVG9OYW1lS2V5BQpjdXN0b21OYW1lCQELU3RyaW5nRW50cnkCBQpyZXZlcnNlS2V5BQRhZGRyCAkBFnVwZGF0ZUFjY1N0YXRzSW50ZXJuYWwCBQRhZGRyBQx4cEN1c3RvbU5hbWUCXzEDCQAAAgIETEFORAUHJG1hdGNoMAQFYXNzZXQJAQV2YWx1ZQEJAOwHAQkA2QQBBQdhc3NldElkBAd0aW1lS2V5CQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFB2Fzc2V0SWQDCQEBIQEJAQlpc0RlZmluZWQBCQCfCAEFB3RpbWVLZXkJAAIBCQCsAgIIBQVhc3NldARuYW1lAg4gaXMgbm90IHN0YWtlZAQFb3duZXIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEVa2V5TGFuZEFzc2V0SWRUb093bmVyAQUHYXNzZXRJZAkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAgwgaXMgb3JwaGFuZWQDCQECIT0CBQVvd25lcgUEYWRkcgkAAgEJAKwCAgUKTEFORFBSRUZJWAINIGlzIG5vdCB5b3VycwQKcmV2ZXJzZUtleQkBGmtleUxhbmRDdXN0b21OYW1lVG9Bc3NldElkAQUKY3VzdG9tTmFtZQQJbmFtZU93bmVyCQCiCAEFCnJldmVyc2VLZXkDCQEJaXNEZWZpbmVkAQUJbmFtZU93bmVyCQACAQkArAICAhlOYW1lIGFscmVhZHkgcmVnaXN0ZXJlZDogBQpjdXN0b21OYW1lBA5hc3NldFRvTmFtZUtleQkBGmtleUxhbmRBc3NldElkVG9DdXN0b21OYW1lAQUHYXNzZXRJZAQHb2xkTmFtZQkAoggBBQ5hc3NldFRvTmFtZUtleQQHZnJlZU9sZAMJAQlpc0RlZmluZWQBBQdvbGROYW1lCQDMCAIJAQtEZWxldGVFbnRyeQEJARprZXlMYW5kQ3VzdG9tTmFtZVRvQXNzZXRJZAEJAQV2YWx1ZQEFB29sZE5hbWUFA25pbAUDbmlsCQDOCAIJAM0IAgkAzQgCBQdmcmVlT2xkCQELU3RyaW5nRW50cnkCBQ5hc3NldFRvTmFtZUtleQUKY3VzdG9tTmFtZQkBC1N0cmluZ0VudHJ5AgUKcmV2ZXJzZUtleQUHYXNzZXRJZAgJARZ1cGRhdGVBY2NTdGF0c0ludGVybmFsAgUEYWRkcgUMeHBDdXN0b21OYW1lAl8xAwkAAAICBERVQ0sFByRtYXRjaDAEBWFzc2V0CQEFdmFsdWUBCQDsBwEJANkEAQUHYXNzZXRJZAQHdGltZUtleQkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQdhc3NldElkAwMJAQEhAQkBCWlzRGVmaW5lZAEJAJ8IAQUHdGltZUtleQYJAQEhAQkBCWlzRGVmaW5lZAEJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUEYWRkcgkAAgEJAKwCAggFBWFzc2V0BG5hbWUCDiBpcyBub3Qgc3Rha2VkBAVvd25lcgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARBrZXlEdWNrSWRUb093bmVyAQUHYXNzZXRJZAkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAgwgaXMgb3JwaGFuZWQDCQECIT0CBQVvd25lcgUEYWRkcgkAAgEJAKwCAgUKRFVDS1BSRUZJWAINIGlzIG5vdCB5b3VycwQKcmV2ZXJzZUtleQkBGmtleUR1Y2tDdXN0b21OYW1lVG9Bc3NldElkAQUKY3VzdG9tTmFtZQQJbmFtZU93bmVyCQCiCAEFCnJldmVyc2VLZXkDCQEJaXNEZWZpbmVkAQUJbmFtZU93bmVyCQACAQkArAICAhlOYW1lIGFscmVhZHkgcmVnaXN0ZXJlZDogBQpjdXN0b21OYW1lBA5hc3NldFRvTmFtZUtleQkBGmtleUR1Y2tBc3NldElkVG9DdXN0b21OYW1lAQUHYXNzZXRJZAQHb2xkTmFtZQkAoggBBQ5hc3NldFRvTmFtZUtleQQHZnJlZU9sZAMJAQlpc0RlZmluZWQBBQdvbGROYW1lCQDMCAIJAQtEZWxldGVFbnRyeQEJARprZXlEdWNrQ3VzdG9tTmFtZVRvQXNzZXRJZAEJAQV2YWx1ZQEFB29sZE5hbWUFA25pbAUDbmlsCQDOCAIJAM0IAgkAzQgCBQdmcmVlT2xkCQELU3RyaW5nRW50cnkCBQ5hc3NldFRvTmFtZUtleQUKY3VzdG9tTmFtZQkBC1N0cmluZ0VudHJ5AgUKcmV2ZXJzZUtleQUHYXNzZXRJZAgJARd1cGRhdGVEdWNrU3RhdHNJbnRlcm5hbAIFB2Fzc2V0SWQFDHhwQ3VzdG9tTmFtZQJfMQkAAgECE1Vua25vd24gZW50aXR5IHR5cGUJAJQKAgkAzQgCCQDNCAIFB2FjdGlvbnMJAQ5TY3JpcHRUcmFuc2ZlcgMFD2Vjb25vbXlDb250cmFjdAgFA3BtdAZhbW91bnQFC3VzZHRBc3NldElkBQxwcm9sb2dBY3Rpb24AAAFpAQxzZXRSZWZlcnJhbHMCCW9sZFBsYXllcgluZXdQbGF5ZXIDCQECIT0CCAUBaQ9jYWxsZXJQdWJsaWNLZXkFA3B1YgkAAgECEVBlcm1pc3Npb24gZGVuaWVkBAxwcm9sb2dBY3Rpb24JAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQDCQEBIQEJAQlpc0RlZmluZWQBCQCmCAEFCW9sZFBsYXllcgkAAgEJAKwCAgIRSW52YWxpZCBhZGRyZXNzOiAFCW9sZFBsYXllcgMJAQEhAQkBCWlzRGVmaW5lZAEJAKYIAQUJbmV3UGxheWVyCQACAQkArAICAhFJbnZhbGlkIGFkZHJlc3M6IAUJbmV3UGxheWVyBAdvbGRzS2V5CQEJa2V5T2xkaWVzAAQEb2xkcwkAoggBBQdvbGRzS2V5BAZvbGRpZXMDCQEJaXNEZWZpbmVkAQUEb2xkcwkAvAkCCQEFdmFsdWUBBQRvbGRzAgFfBQNuaWwDCQEPY29udGFpbnNFbGVtZW50AgUGb2xkaWVzBQluZXdQbGF5ZXIJAAIBCQCsAgIFCW5ld1BsYXllcgImIGlzIG5vdCBuZXdiaWUgKGFscmVhZHkgaGFzIHJlZmVycmFscykECHJlZkJ5S2V5CQEPa2V5QWRkcmVzc1JlZkJ5AQUJbmV3UGxheWVyBAVyZWZCeQkAoggBBQhyZWZCeUtleQMDCQEJaXNEZWZpbmVkAQUFcmVmQnkJAQlpc0RlZmluZWQBCQCmCAEJAQV2YWx1ZQEFBXJlZkJ5BwkAAgEJAKwCAgkArAICBQluZXdQbGF5ZXICFCBhbHJlYWR5IGhhcyByZWZCeTogCQEFdmFsdWUBBQVyZWZCeQQHcmVmc0tleQkBE2tleUFkZHJlc3NSZWZlcnJhbHMBBQlvbGRQbGF5ZXIEBHJlZnMJAKIIAQUHcmVmc0tleQQJcmVmc0FycmF5AwkBCWlzRGVmaW5lZAEFBHJlZnMJALwJAgkBBXZhbHVlAQUEcmVmcwIBXwUDbmlsAwkBD2NvbnRhaW5zRWxlbWVudAIFCXJlZnNBcnJheQUJbmV3UGxheWVyCQACAQkArAICCQCsAgIJAKwCAgUJb2xkUGxheWVyAhIgYWxyZWFkeSBjb250YWlucyAFCW5ld1BsYXllcgIRIHdpdGhpbiByZWZlcnJhbHMEB25ld1JlZnMJALoJAgkAzQgCBQlyZWZzQXJyYXkFCW5ld1BsYXllcgIBXwQHbmV3T2xkcwMJAQ9jb250YWluc0VsZW1lbnQCBQZvbGRpZXMFCW9sZFBsYXllcgkBBXZhbHVlAQUEb2xkcwkAugkCCQDNCAIFBm9sZGllcwUJb2xkUGxheWVyAgFfCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgUIcmVmQnlLZXkFCW9sZFBsYXllcgkAzAgCCQELU3RyaW5nRW50cnkCBQdyZWZzS2V5BQduZXdSZWZzCQDMCAIJAQtTdHJpbmdFbnRyeQIFB29sZHNLZXkFB25ld09sZHMJAMwIAgUMcHJvbG9nQWN0aW9uBQNuaWwAAAFpARBkaXN0cmlidXRlUG9pbnRzBQhzdHJlbmd0aAhhY2N1cmFjeQlpbnRlbGxlY3QJZW5kdXJhbmNlCWRleHRlcml0eQQMcHJvbG9nQWN0aW9uCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBARhZGRyCQClCAEIBQFpDG9yaWdpbkNhbGxlcgQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQRhZGRyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkBApmcmVlS2V5QWNjCQERa2V5VXNlckZyZWVQb2ludHMBBQRhZGRyBA1mcmVlUG9pbnRzQWNjCQELdmFsdWVPckVsc2UCCQCaCAIFD3N0YWtpbmdDb250cmFjdAUKZnJlZUtleUFjYwAABAtmcmVlS2V5RHVjawkBEWtleUR1Y2tGcmVlUG9pbnRzAQULZHVja0Fzc2V0SWQEDmZyZWVQb2ludHNEdWNrCQELdmFsdWVPckVsc2UCCQCaCAIFD3N0YWtpbmdDb250cmFjdAULZnJlZUtleUR1Y2sAAAQHc3VtRnJlZQkAZAIFDWZyZWVQb2ludHNBY2MFDmZyZWVQb2ludHNEdWNrBA9zdW1Ub0Rpc3RyaWJ1dGUJAGQCCQBkAgkAZAIJAGQCBQhzdHJlbmd0aAUIYWNjdXJhY3kFCWludGVsbGVjdAUJZW5kdXJhbmNlBQlkZXh0ZXJpdHkDCQBmAgUPc3VtVG9EaXN0cmlidXRlBQdzdW1GcmVlCQACAQkArAICCQCsAgICD1RoZXJlIGFyZSBvbmx5IAkApAMBBQdzdW1GcmVlAhogZnJlZSBwb2ludHMgdG8gZGlzdHJpYnV0ZQQIY2hhcnNLZXkJAQxrZXlEdWNrQ2hhcnMBBQtkdWNrQXNzZXRJZAQFY2hhcnMJALUJAgkBC3ZhbHVlT3JFbHNlAgkAnQgCBQ9zdGFraW5nQ29udHJhY3QFCGNoYXJzS2V5AgkwXzBfMF8wXzACAV8EBm5ld0FjYwkAZQIFDWZyZWVQb2ludHNBY2MFD3N1bVRvRGlzdHJpYnV0ZQkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQpmcmVlS2V5QWNjAwkAZgIAAAUGbmV3QWNjAAAFBm5ld0FjYwkAzAgCCQEMSW50ZWdlckVudHJ5AgULZnJlZUtleUR1Y2sDCQBmAgAABQZuZXdBY2MJAGQCBQ5mcmVlUG9pbnRzRHVjawUGbmV3QWNjBQ5mcmVlUG9pbnRzRHVjawkAzAgCCQELU3RyaW5nRW50cnkCBQhjaGFyc0tleQkAuQkCCQDMCAIJAKQDAQkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVjaGFycwUMY2hhclN0cmVuZ3RoBQhzdHJlbmd0aAkAzAgCCQCkAwEJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFY2hhcnMFDGNoYXJBY2N1cmFjeQUIYWNjdXJhY3kJAMwIAgkApAMBCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBWNoYXJzBQ1jaGFySW50ZWxsZWN0BQlpbnRlbGxlY3QJAMwIAgkApAMBCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBWNoYXJzBQ1jaGFyRW5kdXJhbmNlBQllbmR1cmFuY2UJAMwIAgkApAMBCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBWNoYXJzBQ1jaGFyRGV4dGVyaXR5BQlkZXh0ZXJpdHkFA25pbAIBXwkAzAgCBQxwcm9sb2dBY3Rpb24FA25pbAAAAWkBHHNwbGl0QnlHbG9iYWxXZWlnaHRzUkVBRE9OTFkBBmFtb3VudAkAlAoCBQNuaWwJARJnZXROZWVkZWRNYXRlcmlhbHMBBQZhbW91bnQBaQEkc3BsaXRCeUdsb2JhbEFuZExvY2FsV2VpZ2h0c1JFQURPTkxZAwltYXRBbW91bnQJcmVzQW1vdW50CHRlcnJhaW5zBA10ZXJyYWluQ291bnRzCQENY291bnRUZXJyYWlucwEFCHRlcnJhaW5zCQCUCgIFA25pbAkAlAoCCQESZ2V0TmVlZGVkTWF0ZXJpYWxzAQUJbWF0QW1vdW50CQETZGlzdHJpYnV0ZUJ5V2VpZ2h0cwIFCXJlc0Ftb3VudAUNdGVycmFpbkNvdW50cwFpARNnZXRCYWNrcGFja1JFQURPTkxZAQtkdWNrQXNzZXRJZAkAlAoCBQNuaWwJALkJAgkBC2dldEJhY2twYWNrAQkBEWtleUJhY2twYWNrQnlEdWNrAQULZHVja0Fzc2V0SWQCAToBaQEUZ2V0V2FyZWhvdXNlUkVBRE9OTFkBC2xhbmRBc3NldElkBAVhc3NldAkBBXZhbHVlAQkA7AcBCQDZBAEFC2xhbmRBc3NldElkBAlsYW5kSW5kZXgJAGkCCQEPbnVtUGllY2VzQnlTaXplAQkAkQMCCQC1CQIIBQVhc3NldAtkZXNjcmlwdGlvbgIBXwULcmVjTGFuZFNpemUFBVNTSVpFBAppbmZyYUxldmVsCQELdmFsdWVPckVsc2UCCQCfCAEJARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQULbGFuZEFzc2V0SWQAAAkAlAoCBQNuaWwJALoJAgkBDGdldFdhcmVob3VzZQMJARJrZXlXYXJlaG91c2VCeUxhbmQBBQtsYW5kQXNzZXRJZAUJbGFuZEluZGV4BQppbmZyYUxldmVsAgE6AWkBCnNhdmVMYXN0VHgABAZjYWxsZXIIBQFpBmNhbGxlcgMDAwkBAiE9AgUGY2FsbGVyBQt3bGdDb250cmFjdAkBAiE9AgUGY2FsbGVyBQ9lY29ub215Q29udHJhY3QHCQECIT0CBQZjYWxsZXIFEnRvdXJuYW1lbnRDb250cmFjdAcJAAIBAg1BY2Nlc3MgZGVuaWVkCQCUCgIJAMwIAgkBBnByb2xvZwEFAWkFA25pbAAqAWkBD3VwZGF0ZUR1Y2tTdGF0cwILZHVja0Fzc2V0SWQHZGVsdGFYUAMJAQIhPQIIBQFpBmNhbGxlcgUPZWNvbm9teUNvbnRyYWN0CQACAQINQWNjZXNzIGRlbmllZAkBF3VwZGF0ZUR1Y2tTdGF0c0ludGVybmFsAgULZHVja0Fzc2V0SWQFB2RlbHRhWFABaQEOdXBkYXRlQWNjU3RhdHMCBGFkZHIHZGVsdGFYUAMJAQIhPQIIBQFpBmNhbGxlcgUPZWNvbm9teUNvbnRyYWN0CQACAQINQWNjZXNzIGRlbmllZAkBFnVwZGF0ZUFjY1N0YXRzSW50ZXJuYWwCBQRhZGRyBQdkZWx0YVhQAWkBCWVxdWlwRHVjawEJZXF1aXBtZW50BAxwcm9sb2dBY3Rpb24JAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQEBGFkZHIJAKUIAQgFAWkMb3JpZ2luQ2FsbGVyBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFBGFkZHICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQDCQEPY2hlY2tUb3VybmFtZW50AQULZHVja0Fzc2V0SWQJAAIBAhllcXVpcER1Y2tfY2hlY2tUb3VybmFtZW50BAVlcUtleQkBEGtleUR1Y2tFcXVpcG1lbnQBBQtkdWNrQXNzZXRJZAQLY3VycmVudFNlZ3MJALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBBQVlcUtleQIXLDssXyw7LF8sOyxfLDssXyw7LF8sOywCAV8EBWJwS2V5CQERa2V5QmFja3BhY2tCeUR1Y2sBBQtkdWNrQXNzZXRJZAQLY3VycmVudFBhY2sJAQtnZXRCYWNrcGFjawEFBWJwS2V5BAVuZXdFcQkAtQkCBQllcXVpcG1lbnQCAV8DCQECIT0CCQCQAwEFBW5ld0VxBQtOVU1TRUdNRU5UUwkAAgECFldyb25nIGVxdWlwbWVudCBzdHJpbmcECXRlbXBQcm9kQgkBBmRyZXNzQgQFC2N1cnJlbnRTZWdzCQEOcHJvZFN0clRvQnl0ZXMBCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QGBQNuaWwECHNlZ0JwQXV4CQCRAwIJALUJAgkAkQMCBQVuZXdFcQULc2VnQmFja3BhY2sCATsAAQQKYnVmZkVmZmVjdAMJAAACBQhzZWdCcEF1eAIAAAAEBGF1eDAJAJEDAgkAtQkCBQhzZWdCcEF1eAIBLAAAAwkAAAIFBGF1eDACAAAABAZpZHhDbnQJALUJAgUEYXV4MAIBOgQDaWR4CQCRAwIFBmlkeENudAAABANjbnQJAJEDAgUGaWR4Q250AAEDAwMDAwkAAAIFA2lkeAICMDYGCQAAAgUDaWR4AgIwNwYJAAACBQNpZHgCAjA4CQECIT0CBQNjbnQCAAcJAGYCCQENcGFyc2VJbnRWYWx1ZQEFA2NudAAABwkBDXBhcnNlSW50VmFsdWUBCQCRAwIJALUJAgkAkQMCBRBwcm9kdWN0aW9uTWF0cml4CQENcGFyc2VJbnRWYWx1ZQEFA2lkeAIBXwUKcklkeEVmZmVjdAAABAVzdGF0cwkBDGdldER1Y2tTdGF0cwQFBHRoaXMFC2R1Y2tBc3NldElkBQpidWZmRWZmZWN0BgQIbmV3UHJvZEIJAQZkcmVzc0IEBQVuZXdFcQUJdGVtcFByb2RCBwUFc3RhdHMECm5ld1Byb2RTdHIJAQ5ieXRlc1RvUHJvZFN0cgEFCG5ld1Byb2RCCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgUFZXFLZXkFCWVxdWlwbWVudAkAzAgCCQELU3RyaW5nRW50cnkCBQVicEtleQkAugkCCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCmJwSWR4TGV2ZWwJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhSZXMJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhNYXQJAMwIAgUKbmV3UHJvZFN0cgUDbmlsAgE6CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQxrZXlEdWNrQnVmZnMBBQtkdWNrQXNzZXRJZAkAuQkCCQDMCAIJAKQDAQkAkQMCBQVzdGF0cwAHCQDMCAIJAKQDAQkAkQMCBQVzdGF0cwAICQDMCAIJAKQDAQkAkQMCBQVzdGF0cwAJCQDMCAIJAKQDAQkAkQMCBQVzdGF0cwAKCQDMCAIJAKQDAQkAkQMCBQVzdGF0cwALBQNuaWwCAV8JAMwIAgUMcHJvbG9nQWN0aW9uBQNuaWwAAAFpAQ9mb3J0aWZpY2F0ZUxhbmQCC2xhbmRBc3NldElkBHBsYW4EDHByb2xvZ0FjdGlvbgkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQEYWRkcgkApQgBCAUBaQxvcmlnaW5DYWxsZXIEC2R1Y2tBc3NldElkCQELdmFsdWVPckVsc2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFBGFkZHICAAQJZHVja1N0YXRzCQEMZ2V0RHVja1N0YXRzBAUEdGhpcwULZHVja0Fzc2V0SWQAAAcEB2ZvcnRLZXkJARdrZXlGb3J0aWZpY2F0aW9uc0J5TGFuZAEFC2xhbmRBc3NldElkBAxjdXJyZW50Rm9ydHMJALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBBQdmb3J0S2V5Agw6MF8xNTowXzE4OjACAV8EBWFzc2V0CQEFdmFsdWUBCQDsBwEJANkEAQULbGFuZEFzc2V0SWQECWxhbmRJbmRleAkAaQIJAQ9udW1QaWVjZXNCeVNpemUBCQCRAwIJALUJAggFBWFzc2V0C2Rlc2NyaXB0aW9uAgFfBQtyZWNMYW5kU2l6ZQUFU1NJWkUECmluZnJhTGV2ZWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAAABAV3aEtleQkBEmtleVdhcmVob3VzZUJ5TGFuZAEFC2xhbmRBc3NldElkBAJ3aAkBDGdldFdhcmVob3VzZQMFBXdoS2V5BQlsYW5kSW5kZXgFCmluZnJhTGV2ZWwEB2N1ckxvZnQJALUJAgkAkQMCBQJ3aAUJd2hJZHhMT0ZUAgFfBARjdXJPCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUHY3VyTG9mdAULdm9sT2NjdXBpZWQEBGN1ckYJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQdjdXJMb2Z0BQd2b2xGcmVlBAhuZXdGb3J0cwkAtQkCBQRwbGFuAgFfBA0kdDA5NTg4ODk2MDAzCQEFZm9ydEIGBQxjdXJyZW50Rm9ydHMJAQ5wcm9kU3RyVG9CeXRlcwEJAJEDAgUCd2gFCXdoSWR4UHJvZAUEY3VyTwUEY3VyRgYFA25pbAQJdGVtcFByb2RCCAUNJHQwOTU4ODg5NjAwMwJfMQQFdGVtcE8IBQ0kdDA5NTg4ODk2MDAzAl8yBAV0ZW1wRggFDSR0MDk1ODg4OTYwMDMCXzMEDSR0MDk2MDA2OTYxMDIJAQVmb3J0QgYFCG5ld0ZvcnRzBQl0ZW1wUHJvZEIFBXRlbXBPBQV0ZW1wRgcFCWR1Y2tTdGF0cwQIbmV3UHJvZEIIBQ0kdDA5NjAwNjk2MTAyAl8xBARuZXdPCAUNJHQwOTYwMDY5NjEwMgJfMgQEbmV3RggFDSR0MDk2MDA2OTYxMDICXzMECm5ld1Byb2RTdHIJAQ5ieXRlc1RvUHJvZFN0cgEFCG5ld1Byb2RCBApuZXdMb2Z0U3RyCQC5CQIJAMwIAgkAkQMCBQdjdXJMb2Z0BQl2b2xMb2NrZWQJAMwIAgkApAMBBQRuZXdPCQDMCAIJAKQDAQUEbmV3RgkAzAgCCQCRAwIFB2N1ckxvZnQFCHZvbFRvdGFsBQNuaWwCAV8JAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCBQdmb3J0S2V5BQRwbGFuCQDMCAIJAQtTdHJpbmdFbnRyeQIFBXdoS2V5CQC6CQIJAMwIAgkAkQMCBQJ3aAULd2hJZHhMZXZlbHMJAMwIAgkAkQMCBQJ3aAUId2hJZHhSZXMJAMwIAgkAkQMCBQJ3aAUId2hJZHhNYXQJAMwIAgUKbmV3UHJvZFN0cgkAzAgCBQpuZXdMb2Z0U3RyBQNuaWwCAToJAMwIAgUMcHJvbG9nQWN0aW9uBQNuaWwAAAFpARNpbml0RHVja1RvdXJBdHRlbXB0AQtkdWNrQXNzZXRJZAMJAQIhPQIIBQFpBmNhbGxlcgUSdG91cm5hbWVudENvbnRyYWN0CQACAQINQWNjZXNzIGRlbmllZAQMcHJvbG9nQWN0aW9uCQEGcHJvbG9nAQUBaQQJa2V5SGVhbHRoCQENa2V5RHVja0hlYWx0aAEFC2R1Y2tBc3NldElkBAVtYXhIUAkBCW1heEhlYWx0aAEJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBDGtleUR1Y2tMZXZlbAEFC2R1Y2tBc3NldElkAAAECWN1ckhlYWx0aAkBC3ZhbHVlT3JFbHNlAgkAnwgBBQlrZXlIZWFsdGgFBW1heEhQBAljdXJMb2NLZXkJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAQLY3VyTG9jYXRpb24JAQt2YWx1ZU9yRWxzZQIJAKIIAQUJY3VyTG9jS2V5BQ9ERUZBVUxUTE9DQVRJT04EBmxhc3RJZAkBC3ZhbHVlT3JFbHNlAgkAmggCBRJ0b3VybmFtZW50Q29udHJhY3QFDWxhc3RUb3VySWRLZXkAAAQMdG91ckxvY2F0aW9uCQCsAgIJAKQDAQUGbGFzdElkAgRfVF8wCQCUCgIJAMwIAgUMcHJvbG9nQWN0aW9uCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEOa2V5U2F2ZWRIZWFsdGgBBQtkdWNrQXNzZXRJZAUJY3VySGVhbHRoCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlrZXlIZWFsdGgFBW1heEhQCQDMCAIJAQtTdHJpbmdFbnRyeQIJARBrZXlTYXZlZExvY2F0aW9uAQULZHVja0Fzc2V0SWQFC2N1ckxvY2F0aW9uCQDMCAIJAQtTdHJpbmdFbnRyeQIFCWN1ckxvY0tleQUMdG91ckxvY2F0aW9uBQNuaWwFDHRvdXJMb2NhdGlvbgFpAQxicmVha0F0dGVtcHQABAxwcm9sb2dBY3Rpb24JAQZwcm9sb2cBBQFpBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEJAKUIAQgFAWkGY2FsbGVyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkBAljdXJMb2NLZXkJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAQLY3VyTG9jYXRpb24JAQt2YWx1ZU9yRWxzZQIJAKIIAQUJY3VyTG9jS2V5BQ9ERUZBVUxUTE9DQVRJT04DCQECIT0CCQCRAwIJALUJAgULY3VyTG9jYXRpb24CAV8FCmxvY0lkeFR5cGUCAVQJAAIBAiJZb3VyIGR1Y2sgaXMgbm90IGluIHRoZSB0b3VybmFtZW50BAtzYXZlZEhlYWx0aAkBEUBleHRyTmF0aXZlKDEwNTUpAQkBDmtleVNhdmVkSGVhbHRoAQULZHVja0Fzc2V0SWQEDXNhdmVkTG9jYXRpb24JARFAZXh0ck5hdGl2ZSgxMDU4KQEJARBrZXlTYXZlZExvY2F0aW9uAQULZHVja0Fzc2V0SWQJAJQKAgkAzAgCBQxwcm9sb2dBY3Rpb24JAMwIAgkBDEludGVnZXJFbnRyeQIJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQFC3NhdmVkSGVhbHRoCQDMCAIJAQtTdHJpbmdFbnRyeQIFCWN1ckxvY0tleQUNc2F2ZWRMb2NhdGlvbgUDbmlsBQtjdXJMb2NhdGlvbgFpARZleGl0VG91cm5hbWVudEludGVybmFsAQtkdWNrQXNzZXRJZAMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECDUFjY2VzcyBkZW5pZWQEC3NhdmVkSGVhbHRoCQERQGV4dHJOYXRpdmUoMTA1NSkBCQEOa2V5U2F2ZWRIZWFsdGgBBQtkdWNrQXNzZXRJZAQNc2F2ZWRMb2NhdGlvbgkBEUBleHRyTmF0aXZlKDEwNTgpAQkBEGtleVNhdmVkTG9jYXRpb24BBQtkdWNrQXNzZXRJZAkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQENa2V5RHVja0hlYWx0aAEFC2R1Y2tBc3NldElkBQtzYXZlZEhlYWx0aAkAzAgCCQELU3RyaW5nRW50cnkCCQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQFDXNhdmVkTG9jYXRpb24FA25pbAcBaQEOcHJlcGFyZVJvYmJlcnkCB21lc3NhZ2UDc2lnBAxwcm9sb2dBY3Rpb24JAQZwcm9sb2cBBQFpAwkBASEBCQDEEwMFB21lc3NhZ2UFA3NpZwUDcHViCQACAQIYc2lnbmF0dXJlIGRvZXMgbm90IG1hdGNoAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQIiZXhhY3RseSAxIHBheW1lbnQgbXVzdCBiZSBhdHRhY2hlZAQDcG10CQCRAwIIBQFpCHBheW1lbnRzAAAEBndsZ0FtdAgFA3BtdAZhbW91bnQDAwkBASEBCQEJaXNEZWZpbmVkAQgFA3BtdAdhc3NldElkBgkBAiE9AgkBBXZhbHVlAQgFA3BtdAdhc3NldElkBQp3bGdBc3NldElkCQACAQIVV0xHT0xEIHBheW1lbnRzIG9ubHkhBAVwYXJ0cwkAtQkCCQCwCQEFB21lc3NhZ2UCAXwDCQECIT0CCQCQAwEFBXBhcnRzAAIJAAIBAhRXcm9uZyBtZXNzYWdlIGZvcm1hdAQLZHVja0Fzc2V0SWQJAJEDAgUFcGFydHMAAAQHcm9iQ29zdAgJAQ5nZXRSb2JiZXJ5RGF0YQIFBHRoaXMFC2R1Y2tBc3NldElkAl8xAwkAZgIFB3JvYkNvc3QFBndsZ0FtdAkAAgEJAKwCAgkArAICCQCsAgICCFBheW1lbnQgCQCkAwEFBndsZ0FtdAIMIDwgcmVxdWlyZWQgCQCkAwEFB3JvYkNvc3QECmNhbmRpZGF0ZXMJALUJAgkAkQMCBQVwYXJ0cwABAgFfBANub3cIBQlsYXN0QmxvY2sJdGltZXN0YW1wBAlkdWNrU3RhdGUJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBE2tleUR1Y2tSb2JiZXJ5U3RhdGUBBQtkdWNrQXNzZXRJZAAABApsb2NrZWRMYW5kCQELdmFsdWVPckVsc2UCCQCiCAEJARNrZXlMb2NrZWRMYW5kQnlEdWNrAQULZHVja0Fzc2V0SWQCAAQHbGFuZEVUQQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQESa2V5TGFuZENvb2xkb3duRVRBAQUKbG9ja2VkTGFuZAAAAwMJAQIhPQIFCWR1Y2tTdGF0ZQULZHVja0lkeEZyZWUJAGYCBQdsYW5kRVRBBQNub3cHCQACAQkArAICAidZb3UgYWxyZWFkeSBzdGFydGVkIHJvYmJpbmcsIHdhaXQgdGlsbCAJAKQDAQUHbGFuZEVUQQoBB2NoZWNrZXICA2FjYwtsYW5kQXNzZXRJZAQFc3RhdGUJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBE2tleUxhbmRSb2JiZXJ5U3RhdGUBBQtsYW5kQXNzZXRJZAAABAtjb29sZG93bkVUQQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQESa2V5TGFuZENvb2xkb3duRVRBAQULbGFuZEFzc2V0SWQAAAMJAGYCBQVzdGF0ZQkAkAMBBRBsYW5kUm9iQ29vbGRvd25zCQACAQINSW52YWxpZCBzdGF0ZQMJAGYCBQNub3cFC2Nvb2xkb3duRVRBBApzdGFrZWRUaW1lCQELdmFsdWVPckVsc2UCCQCfCAEJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQULbGFuZEFzc2V0SWQAAAMJAGcCAAAFCnN0YWtlZFRpbWUFA2FjYwQBYQkBBXZhbHVlAQkA7AcBCQDZBAEFC2xhbmRBc3NldElkBAFkCQC1CQIIBQFhC2Rlc2NyaXB0aW9uAgFfBAZwaWVjZXMJAQ9udW1QaWVjZXNCeVNpemUBCQCRAwIFAWQFC3JlY0xhbmRTaXplBAxwcm9kdWN0aXZpdHkJAQxhcHBseUJvbnVzZXMCBQtsYW5kQXNzZXRJZAUGcGllY2VzBAlkZWx0YVRpbWUJAGUCBQNub3cFCnN0YWtlZFRpbWUECGF2YWlsUmVzCQBrAwUJZGVsdGFUaW1lCQBoAgUMcHJvZHVjdGl2aXR5BQZwaWVjZXMFCURBWU1JTExJUwMJAGYCBQ5NSU5fUkVTX1RPX1JPQgUIYXZhaWxSZXMFA2FjYwkAzQgCBQNhY2MFC2xhbmRBc3NldElkBQNhY2MECGZpbHRlcmVkCgACJGwFCmNhbmRpZGF0ZXMKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBB2NoZWNrZXICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDEwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoDCQAAAgkAkAMBBQhmaWx0ZXJlZAAACQACAQIZTm8gY2FuZGlkYXRlcyBmb3Igcm9iYmVyeQQGcm5kSWR4CQEPZ2V0UmFuZG9tTnVtYmVyAwkAkAMBBQhmaWx0ZXJlZAUGaGVpZ2h0CQDLAQIFA3NpZwgFAWkNdHJhbnNhY3Rpb25JZAQLbGFuZEFzc2V0SWQJAJEDAgUIZmlsdGVyZWQFBnJuZElkeAkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQETa2V5TGFuZFJvYmJlcnlTdGF0ZQEFC2xhbmRBc3NldElkBQxyb2JJZHhMb2NrZWQJAMwIAgkBDEludGVnZXJFbnRyeQIJARJrZXlMYW5kQ29vbGRvd25FVEEBBQtsYW5kQXNzZXRJZAkAZAIFA25vdwkAkQMCBRBsYW5kUm9iQ29vbGRvd25zBQxyb2JJZHhMb2NrZWQJAMwIAgkBDEludGVnZXJFbnRyeQIJARNrZXlEdWNrUm9iYmVyeVN0YXRlAQULZHVja0Fzc2V0SWQFEGR1Y2tJZHhQcmVwYXJpbmcJAMwIAgkBC1N0cmluZ0VudHJ5AgkBE2tleUxvY2tlZExhbmRCeUR1Y2sBBQtkdWNrQXNzZXRJZAULbGFuZEFzc2V0SWQJAMwIAgUMcHJvbG9nQWN0aW9uBQNuaWwFC2xhbmRBc3NldElkABzEREE=", "height": 2732104, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: ExHCXk3siyLGC5MAn48MckLCiryUuSVKwCNo8ZhnwVLR Next: J6qXLBzd4qVBBc7gFweQwQYitY7ktBkt2CYrqb5bkDz5 Diff:
OldNewDifferences
322322
323323 let bY = 2
324324
325-func bZ (ca) = (parseIntValue(ca[aQ]) * aN)
326-
327-
328-let cb = false
325+func bZ (bL,z) = makeString(["%s%d%s__bestResultByTourAndDuck", toString(bL), z], "__")
326+
327+
328+func ca (cb) = (parseIntValue(cb[aQ]) * aN)
329+
329330
330331 let cc = false
331332
332-let cd = take(drop(this.bytes, 1), 1)
333-
334-let ce = {
335- let cf = cd
336- if ((base58'2W' == cf))
333+let cd = false
334+
335+let ce = take(drop(this.bytes, 1), 1)
336+
337+let cf = {
338+ let cg = ce
339+ if ((base58'2W' == cg))
337340 then base58'9wc3LXNA4TEBsXyKtoLE9mrbDD7WMHXvXrCjZvabLAsi'
338- else if ((base58'2T' == cf))
341+ else if ((base58'2T' == cg))
339342 then base58'6mWwf9mZBjVgkC54idpyaZLQfAosD914wT8fGf2iiY63'
340343 else throw("Unknown chain")
341344 }
342345
343-let cg = {
344- let cf = cd
345- if ((base58'2W' == cf))
346+let ch = {
347+ let cg = ce
348+ if ((base58'2W' == cg))
346349 then "3PQCuvFbvh4LkPUnrnU1z3jnbA1p9m3WNhv"
347- else if ((base58'2T' == cf))
350+ else if ((base58'2T' == cg))
348351 then "3MumkGGztCKAXpWDqxkddofqXSUbqQkvSJy"
349352 else throw("Unknown chain")
350353 }
351354
352-let ch = {
353- let cf = cd
354- if ((base58'2W' == cf))
355+let ci = {
356+ let cg = ce
357+ if ((base58'2W' == cg))
355358 then 10000000000
356- else if ((base58'2T' == cf))
359+ else if ((base58'2T' == cg))
357360 then 100000000
358361 else throw("Unknown chain")
359362 }
360363
361-let ci = {
362- let cf = cd
363- if ((base58'2W' == cf))
364+let cj = {
365+ let cg = ce
366+ if ((base58'2W' == cg))
364367 then 86400000
365- else if ((base58'2T' == cf))
368+ else if ((base58'2T' == cg))
366369 then 60000
367370 else throw("Unknown chain")
368371 }
369372
370-let cj = "__"
371-
372-let ck = 1000000
373-
374-let cl = 100000000
375-
376-let cm = 25
377-
378-let cn = 100
379-
380-let co = 225
381-
382-let cp = 400
383-
384-let cq = 625
385-
386-let cr = [0, 1, 2, 3, 4, 5]
387-
388-func cs (ct,cu) = valueOrErrorMessage(getString(ct, cu), makeString(["mandatory ", toString(ct), ".", cu, " is not defined"], ""))
389-
390-
391-let cv = 1
392-
393-let cw = 2
394-
395-let cx = 3
396-
397-let cy = 4
398-
399-let cz = 7
400-
401-func cA () = "%s__restConfig"
402-
403-
404-func cB () = "%s__restAddr"
405-
406-
407-func cC (cD) = split_4C(cs(cD, cA()), cj)
408-
409-
410-func cE (cF,cG) = valueOrErrorMessage(addressFromString(cF[cG]), ("Rest cfg doesn't contain address at index " + toString(cG)))
411-
412-
413-let cH = addressFromStringValue(valueOrElse(getString(this, cB()), cg))
414-
415-let cF = cC(cH)
416-
417-let al = cE(cF, cv)
418-
419-let cI = cE(cF, cw)
420-
421-let cJ = cE(cF, cx)
422-
423-let cK = cE(cF, cy)
424-
425-let cL = cE(cF, cz)
426-
427-let cM = 0
428-
429-let cN = 1
430-
431-let cO = 2
432-
433-let cP = 3
434-
435-let cQ = "wlg_assetId"
436-
437-let cR = valueOrErrorMessage(getBinary(cK, cQ), "Not initialized yet")
438-
439-let cS = 2
440-
441-func cT (ct) = ("finishBlockForAddr_" + ct)
442-
443-
444-func cU () = "resTypesProportions"
445-
446-
447-func cV (cW) = ("resTypesByContinent_" + cW)
448-
449-
450-func cX (br) = ("stakedLandsByOwner_" + br)
451-
452-
453-func cY (br) = ("stakedPiecesByOwner_" + br)
454-
455-
456-func cZ (da) = {
457- let cf = da
458- if ($isInstanceOf(cf, "String"))
373+let ck = "__"
374+
375+let cl = 1000000
376+
377+let cm = 100000000
378+
379+let cn = 25
380+
381+let co = 100
382+
383+let cp = 225
384+
385+let cq = 400
386+
387+let cr = 625
388+
389+let cs = [0, 1, 2, 3, 4, 5]
390+
391+func ct (cu,cv) = valueOrErrorMessage(getString(cu, cv), makeString(["mandatory ", toString(cu), ".", cv, " is not defined"], ""))
392+
393+
394+let cw = 1
395+
396+let cx = 2
397+
398+let cy = 3
399+
400+let cz = 4
401+
402+let cA = 7
403+
404+func cB () = "%s__restConfig"
405+
406+
407+func cC () = "%s__restAddr"
408+
409+
410+func cD (cE) = split_4C(ct(cE, cB()), ck)
411+
412+
413+func cF (cG,cH) = valueOrErrorMessage(addressFromString(cG[cH]), ("Rest cfg doesn't contain address at index " + toString(cH)))
414+
415+
416+let cI = addressFromStringValue(valueOrElse(getString(this, cC()), ch))
417+
418+let cG = cD(cI)
419+
420+let al = cF(cG, cw)
421+
422+let cJ = cF(cG, cx)
423+
424+let cK = cF(cG, cy)
425+
426+let cL = cF(cG, cz)
427+
428+let cM = cF(cG, cA)
429+
430+let cN = 0
431+
432+let cO = 1
433+
434+let cP = 2
435+
436+let cQ = 3
437+
438+let cR = "wlg_assetId"
439+
440+let cS = valueOrErrorMessage(getBinary(cL, cR), "Not initialized yet")
441+
442+let cT = 2
443+
444+func cU (cu) = ("finishBlockForAddr_" + cu)
445+
446+
447+func cV () = "resTypesProportions"
448+
449+
450+func cW (cX) = ("resTypesByContinent_" + cX)
451+
452+
453+func cY (br) = ("stakedLandsByOwner_" + br)
454+
455+
456+func cZ (br) = ("stakedPiecesByOwner_" + br)
457+
458+
459+func da (db) = {
460+ let cg = db
461+ if ($isInstanceOf(cg, "String"))
459462 then {
460- let db = cf
461- db
463+ let dc = cg
464+ dc
462465 }
463466 else throw("fail to cast into String")
464467 }
465468
466469
467-func dc (da) = {
468- let cf = da
469- if ($isInstanceOf(cf, "Int"))
470+func dd (db) = {
471+ let cg = db
472+ if ($isInstanceOf(cg, "Int"))
470473 then {
471- let dd = cf
472- dd
474+ let de = cg
475+ de
473476 }
474477 else throw("fail to cast into Int")
475478 }
476479
477480
478-func de (df) = {
479- let cf = df
480- if (("S" == cf))
481- then cm
482- else if (("M" == cf))
483- then cn
484- else if (("L" == cf))
485- then co
486- else if (("XL" == cf))
487- then cp
488- else if (("XXL" == cf))
489- then cq
481+func df (db) = {
482+ let cg = db
483+ if ($isInstanceOf(cg, "Boolean"))
484+ then {
485+ let dc = cg
486+ dc
487+ }
488+ else throw("fail to cast into Boolean")
489+ }
490+
491+
492+func dg (dh) = {
493+ let cg = dh
494+ if (("S" == cg))
495+ then cn
496+ else if (("M" == cg))
497+ then co
498+ else if (("L" == cg))
499+ then cp
500+ else if (("XL" == cg))
501+ then cq
502+ else if (("XXL" == cg))
503+ then cr
490504 else throw("Unknown land size")
491505 }
492506
493507
494-func dg (db) = isDefined(parseInt(db))
495-
496-
497-func dh (di,dj,dk) = {
498- let dl = value(blockInfoByHeight(dj))
499- let dm = sha256((value(dl.vrf) + dk))
500- (toInt(dm) % di)
501- }
502-
503-
504-let dn = {
505- let cf = cd
506- if ((base58'2W' == cf))
508+func di (dc) = isDefined(parseInt(dc))
509+
510+
511+func dj (dk,dl,dm) = {
512+ let dn = value(blockInfoByHeight(dl))
513+ let do = sha256((value(dn.vrf) + dm))
514+ (toInt(do) % dk)
515+ }
516+
517+
518+let dp = {
519+ let cg = ce
520+ if ((base58'2W' == cg))
507521 then addressFromStringValue("3PEktVux2RhchSN63DsDo4b4mz4QqzKSeDv")
508- else if ((base58'2T' == cf))
522+ else if ((base58'2T' == cg))
509523 then this
510524 else throw("Unknown chain")
511525 }
512526
513-let do = {
514- let cf = cd
515- if ((base58'2W' == cf))
527+let dq = {
528+ let cg = ce
529+ if ((base58'2W' == cg))
516530 then addressFromStringValue("3PDVuU45H7Eh5dmtNbnRNRStGwULA7NY6Hb")
517- else if ((base58'2T' == cf))
531+ else if ((base58'2T' == cg))
518532 then this
519533 else throw("Unknown chain")
520534 }
521535
522-let dp = {
523- let cf = cd
524- if ((base58'2W' == cf))
525- then if (cb)
536+let dr = {
537+ let cg = ce
538+ if ((base58'2W' == cg))
539+ then if (cc)
526540 then base58'CWsMtTZC5BjjoL4Q1ayW4Wwb1ehGACQB6DrKyPgotKfm'
527541 else base58'6LfPuKJjLgekmncBhMg2LZyMTNVzZBccXR28ySXm9uXD'
528- else if ((base58'2T' == cf))
542+ else if ((base58'2T' == cg))
529543 then base58'6LfPuKJjLgekmncBhMg2LZyMTNVzZBccXR28ySXm9uXD'
530544 else throw("Unknown chain")
531545 }
532546
533-let dq = base64'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=='
534-
535-let dr = 300000
536-
537-let ds = 5000000
538-
539-let dt = 50
540-
541-let du = 10000000
542-
543-let dv = {
544- let cf = cd
545- if ((base58'2W' == cf))
547+let ds = base64'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=='
548+
549+let dt = 300000
550+
551+let du = 5000000
552+
553+let dv = 50
554+
555+let dw = 10000000
556+
557+let dx = {
558+ let cg = ce
559+ if ((base58'2W' == cg))
546560 then 252289527462
547- else if ((base58'2T' == cf))
561+ else if ((base58'2T' == cg))
548562 then 2522895274
549563 else throw("Unknown chain")
550564 }
551565
552-let dw = {
553- let cf = cd
554- if ((base58'2W' == cf))
566+let dy = {
567+ let cg = ce
568+ if ((base58'2W' == cg))
555569 then 250000000
556- else if ((base58'2T' == cf))
570+ else if ((base58'2T' == cg))
557571 then 250000000
558572 else throw("Unknown chain")
559573 }
560574
561-let dx = toBigInt(5)
562-
563-let dy = toBigInt(20)
564-
565-let dz = toBigInt((20 * 20))
566-
567-let dA = toBigInt(((20 * 20) * 20))
568-
569-let dB = toBigInt((((20 * 20) * 20) * 20))
570-
571-let dC = toBigInt(((((20 * 20) * 20) * 20) * 20))
572-
573-let dD = 500
574-
575-func dE () = "nextLandNum"
576-
577-
578-func dF (dG) = ("landByCustomName_" + dG)
579-
580-
581-func dH (dI) = ("landToAsset_" + dI)
582-
583-
584-func dJ (bk,br) = ((("infraLevelByAssetIdAndOwner_" + bk) + "_") + br)
585-
586-
587-func dK (dI) = ("landOwner_" + dI)
588-
589-
590-func dL (dG) = ("duckByCustomName_" + dG)
591-
592-
593-func dM (dG) = ("accountByCustomName_" + dG)
594-
595-
596-func dN () = "oldiesList"
597-
598-
599-let dO = 0
600-
601-let dP = 1
602-
603-let dQ = 2
604-
605-let dR = 0
606-
607-let dS = 5
608-
609-let dT = 6
610-
611-let dU = 7
612-
613-func dV (dI,df) = ((aA + dI) + df)
614-
615-
616-func dW (dX,dY) = {
617- let dZ = if ((dX >= 0))
618- then (((dX + dY) - 1) / dY)
619- else -((((-(dX) + dY) - 1) / dY))
620- (dZ * cl)
621- }
622-
623-
624-func ea (eb,ec) = {
625- let ed = (((((ec[0] + ec[1]) + ec[2]) + ec[3]) + ec[4]) + ec[5])
626- if ((0 >= ed))
575+let dz = toBigInt(5)
576+
577+let dA = toBigInt(20)
578+
579+let dB = toBigInt((20 * 20))
580+
581+let dC = toBigInt(((20 * 20) * 20))
582+
583+let dD = toBigInt((((20 * 20) * 20) * 20))
584+
585+let dE = toBigInt(((((20 * 20) * 20) * 20) * 20))
586+
587+let dF = 500
588+
589+func dG () = "nextLandNum"
590+
591+
592+func dH (dI) = ("landByCustomName_" + dI)
593+
594+
595+func dJ (dK) = ("landToAsset_" + dK)
596+
597+
598+func dL (bk,br) = ((("infraLevelByAssetIdAndOwner_" + bk) + "_") + br)
599+
600+
601+func dM (dK) = ("landOwner_" + dK)
602+
603+
604+func dN (dI) = ("duckByCustomName_" + dI)
605+
606+
607+func dO (dI) = ("accountByCustomName_" + dI)
608+
609+
610+func dP () = "oldiesList"
611+
612+
613+let dQ = 0
614+
615+let dR = 1
616+
617+let dS = 2
618+
619+let dT = 0
620+
621+let dU = 5
622+
623+let dV = 6
624+
625+let dW = 7
626+
627+func dX (dK,dh) = ((aA + dK) + dh)
628+
629+
630+func dY (dZ,ea) = {
631+ let eb = if ((dZ >= 0))
632+ then (((dZ + ea) - 1) / ea)
633+ else -((((-(dZ) + ea) - 1) / ea))
634+ (eb * cm)
635+ }
636+
637+
638+func ec (ed,ee) = {
639+ let ef = (((((ee[0] + ee[1]) + ee[2]) + ee[3]) + ee[4]) + ee[5])
640+ if ((0 >= ef))
627641 then throw("Zero weights sum")
628642 else {
629- let ee = fraction(eb, ck, ed)
630- func ef (eg,eh) = (eg :+ fraction(eh, ee, ck))
631-
632- let ei = ec
633- let ej = size(ei)
634- let ek = nil
635- func el (em,en) = if ((en >= ej))
636- then em
637- else ef(em, ei[en])
638-
639- func eo (em,en) = if ((en >= ej))
640- then em
643+ let eg = fraction(ed, cl, ef)
644+ func eh (ei,ej) = (ei :+ fraction(ej, eg, cl))
645+
646+ let ek = ee
647+ let el = size(ek)
648+ let em = nil
649+ func en (eo,ep) = if ((ep >= el))
650+ then eo
651+ else eh(eo, ek[ep])
652+
653+ func eq (eo,ep) = if ((ep >= el))
654+ then eo
641655 else throw("List size exceeds 6")
642656
643- eo(el(el(el(el(el(el(ek, 0), 1), 2), 3), 4), 5), 6)
644- }
645- }
646-
647-
648-func ep (eb) = {
649- let eq = split(value(getString(cU())), "_")
650- if ((size(eq) != aD))
657+ eq(en(en(en(en(en(en(em, 0), 1), 2), 3), 4), 5), 6)
658+ }
659+ }
660+
661+
662+func er (ed) = {
663+ let es = split(value(getString(cV())), "_")
664+ if ((size(es) != aD))
651665 then throw("Wrong proportions data")
652666 else {
653- let er = [parseIntValue(eq[0]), parseIntValue(eq[1]), parseIntValue(eq[2]), parseIntValue(eq[3]), parseIntValue(eq[4]), parseIntValue(eq[5])]
654- ea(eb, er)
655- }
656- }
657-
658-
659-func es (et,eu,ev) = {
660- let ew = ep(ev)
661- func ex (eg,cG) = {
662- let ey = (parseIntValue(eu[cG]) - ew[cG])
663- if ((0 > ey))
664- then throw(((((("Not enough material idx=" + toString(cG)) + ", you have ") + eu[cG]) + ", but need ") + toString(ew[cG])))
665- else (eg :+ toString(ey))
667+ let et = [parseIntValue(es[0]), parseIntValue(es[1]), parseIntValue(es[2]), parseIntValue(es[3]), parseIntValue(es[4]), parseIntValue(es[5])]
668+ ec(ed, et)
669+ }
670+ }
671+
672+
673+func eu (ev,ew,ex) = {
674+ let ey = er(ex)
675+ func ez (ei,cH) = {
676+ let eA = (parseIntValue(ew[cH]) - ey[cH])
677+ if ((0 > eA))
678+ then throw(((((("Not enough material idx=" + toString(cH)) + ", you have ") + ew[cH]) + ", but need ") + toString(ey[cH])))
679+ else (ei :+ toString(eA))
666680 }
667681
668- if (et)
682+ if (ev)
669683 then {
670- let ei = cr
671- let ej = size(ei)
672- let ek = nil
673- func el (em,en) = if ((en >= ej))
674- then em
675- else ex(em, ei[en])
676-
677- func eo (em,en) = if ((en >= ej))
678- then em
684+ let ek = cs
685+ let el = size(ek)
686+ let em = nil
687+ func en (eo,ep) = if ((ep >= el))
688+ then eo
689+ else ez(eo, ek[ep])
690+
691+ func eq (eo,ep) = if ((ep >= el))
692+ then eo
679693 else throw("List size exceeds 6")
680694
681- eo(el(el(el(el(el(el(ek, 0), 1), 2), 3), 4), 5), 6)
682- }
683- else eu
684- }
685-
686-
687-func ez (eA,eB) = if ((eB == ""))
688- then $Tuple2(eA, false)
695+ eq(en(en(en(en(en(en(em, 0), 1), 2), 3), 4), 5), 6)
696+ }
697+ else ew
698+ }
699+
700+
701+func eB (eC,eD) = if ((eD == ""))
702+ then $Tuple2(eC, false)
689703 else {
690- func eC (eg,eD) = {
691- let eE = split(eD, ",")
692- if ((size(eE) != 2))
704+ func eE (ei,eF) = {
705+ let eG = split(eF, ",")
706+ if ((size(eG) != 2))
693707 then throw("Incorrect format, should be index,amount")
694708 else {
695- let cG = parseIntValue(eE[0])
696- if (if ((0 > cG))
709+ let cH = parseIntValue(eG[0])
710+ if (if ((0 > cH))
697711 then true
698- else (cG >= size(aP)))
712+ else (cH >= size(aP)))
699713 then throw("Unknown product idx")
700714 else {
701- let eF = parseIntValue(eE[1])
702- let eG = split(eg._1, (eE[0] + ":"))
703- if ((size(eG) != 2))
704- then throw((("You don't have " + aL[cG]) + " equipped"))
715+ let eH = parseIntValue(eG[1])
716+ let eI = split(ei._1, (eG[0] + ":"))
717+ if ((size(eI) != 2))
718+ then throw((("You don't have " + aL[cH]) + " equipped"))
705719 else {
706- let eH = eG[1]
707- let eI = if (dg(take(drop(eH, 1), 1)))
720+ let eJ = eI[1]
721+ let eK = if (di(take(drop(eJ, 1), 1)))
708722 then 2
709723 else 1
710- let eJ = parseIntValue(take(eH, eI))
711- let eK = drop(eH, eI)
712- let eL = if ((eJ >= eF))
713- then (eJ - eF)
714- else throw(((((("You equipped " + toString(eJ)) + " of ") + aL[cG]) + ", but tried to use ") + toString(eF)))
715- $Tuple2(((((eG[0] + eE[0]) + ":") + toString(eL)) + eK), if (eg._2)
724+ let eL = parseIntValue(take(eJ, eK))
725+ let eM = drop(eJ, eK)
726+ let eN = if ((eL >= eH))
727+ then (eL - eH)
728+ else throw(((((("You equipped " + toString(eL)) + " of ") + aL[cH]) + ", but tried to use ") + toString(eH)))
729+ $Tuple2(((((eI[0] + eG[0]) + ":") + toString(eN)) + eM), if (ei._2)
716730 then true
717- else if (if ((cG >= 6))
718- then (8 >= cG)
731+ else if (if ((cH >= 6))
732+ then (8 >= cH)
719733 else false)
720- then (eL == 0)
734+ then (eN == 0)
721735 else false)
722736 }
723737 }
724738 }
725739 }
726740
727- let ei = split(eB, "_")
728- let ej = size(ei)
729- let ek = $Tuple2(eA, false)
730- func el (em,en) = if ((en >= ej))
731- then em
732- else eC(em, ei[en])
733-
734- func eo (em,en) = if ((en >= ej))
735- then em
741+ let ek = split(eD, "_")
742+ let el = size(ek)
743+ let em = $Tuple2(eC, false)
744+ func en (eo,ep) = if ((ep >= el))
745+ then eo
746+ else eE(eo, ek[ep])
747+
748+ func eq (eo,ep) = if ((ep >= el))
749+ then eo
736750 else throw("List size exceeds 10")
737751
738- eo(el(el(el(el(el(el(el(el(el(el(ek, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
752+ eq(en(en(en(en(en(en(en(en(en(en(em, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
739753 }
740754
741755
742-func eM (eN) = {
743- let eO = if ((eN == ""))
756+func eO (eP) = {
757+ let eQ = if ((eP == ""))
744758 then nil
745- else split_4C(eN, "_")
746- func eP (eg,ca) = {
747- let eQ = (size(eg) / 8)
748- let eJ = if ((size(eO) > eQ))
749- then parseIntValue(eO[eQ])
759+ else split_4C(eP, "_")
760+ func eR (ei,cb) = {
761+ let eS = (size(ei) / 8)
762+ let eL = if ((size(eQ) > eS))
763+ then parseIntValue(eQ[eS])
750764 else 0
751- (eg + toBytes(eJ))
765+ (ei + toBytes(eL))
752766 }
753767
754- let ei = aP
755- let ej = size(ei)
756- let ek = base58''
757- func el (em,en) = if ((en >= ej))
758- then em
759- else eP(em, ei[en])
760-
761- func eo (em,en) = if ((en >= ej))
762- then em
768+ let ek = aP
769+ let el = size(ek)
770+ let em = base58''
771+ func en (eo,ep) = if ((ep >= el))
772+ then eo
773+ else eR(eo, ek[ep])
774+
775+ func eq (eo,ep) = if ((ep >= el))
776+ then eo
763777 else throw("List size exceeds 50")
764778
765- eo(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(ek, 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)
766- }
767-
768-
769-func eR (eS) = {
770- func eT (eg,ca) = {
771- let eQ = size(eg)
772- let eU = take(drop(eS, (8 * eQ)), 8)
773- (eg :+ toString(toInt(eU)))
779+ eq(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(em, 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)
780+ }
781+
782+
783+func eT (eU) = {
784+ func eV (ei,cb) = {
785+ let eS = size(ei)
786+ let eW = take(drop(eU, (8 * eS)), 8)
787+ (ei :+ toString(toInt(eW)))
774788 }
775789
776790 makeString_2C({
777- let ei = aP
778- let ej = size(ei)
779- let ek = nil
780- func el (em,en) = if ((en >= ej))
781- then em
782- else eT(em, ei[en])
783-
784- func eo (em,en) = if ((en >= ej))
785- then em
791+ let ek = aP
792+ let el = size(ek)
793+ let em = nil
794+ func en (eo,ep) = if ((ep >= el))
795+ then eo
796+ else eV(eo, ek[ep])
797+
798+ func eq (eo,ep) = if ((ep >= el))
799+ then eo
786800 else throw("List size exceeds 50")
787801
788- eo(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(ek, 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)
802+ eq(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(em, 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)
789803 }, "_")
790804 }
791805
792806
793-func eV (eW,eX) = {
794- func eY (eg,eQ) = {
795- let eZ = if ((size(eW) > (7 + eQ)))
796- then eW[(7 + eQ)]
807+func eX (eY,eZ) = {
808+ func fa (ei,eS) = {
809+ let fb = if ((size(eY) > (7 + eS)))
810+ then eY[(7 + eS)]
797811 else 0
798- if ((parseIntValue(eX[eQ]) > (eW[eQ] + eZ)))
799- then throw(("Requirement not satisfied: " + i[eQ]))
812+ if ((parseIntValue(eZ[eS]) > (eY[eS] + fb)))
813+ then throw(("Requirement not satisfied: " + i[eS]))
800814 else true
801815 }
802816
803- let ei = [0, 1, 2, 3, 4, 5, 6]
804- let ej = size(ei)
805- let ek = false
806- func el (em,en) = if ((en >= ej))
807- then em
808- else eY(em, ei[en])
809-
810- func eo (em,en) = if ((en >= ej))
811- then em
817+ let ek = [0, 1, 2, 3, 4, 5, 6]
818+ let el = size(ek)
819+ let em = false
820+ func en (eo,ep) = if ((ep >= el))
821+ then eo
822+ else fa(eo, ek[ep])
823+
824+ func eq (eo,ep) = if ((ep >= el))
825+ then eo
812826 else throw("List size exceeds 7")
813827
814- eo(el(el(el(el(el(el(el(ek, 0), 1), 2), 3), 4), 5), 6), 7)
815- }
816-
817-
818-func fa (fb,eO,fc,eW,fd,fe) = {
819- let eE = split(fb, ":")
820- if ((size(eE) != 2))
828+ eq(en(en(en(en(en(en(en(em, 0), 1), 2), 3), 4), 5), 6), 7)
829+ }
830+
831+
832+func fc (fd,eQ,fe,eY,ff,fg) = {
833+ let eG = split(fd, ":")
834+ if ((size(eG) != 2))
821835 then throw("Incorrect format, should be index:amount")
822- else if (if (!(fc))
823- then (size(eE[0]) != 2)
836+ else if (if (!(fe))
837+ then (size(eG[0]) != 2)
824838 else false)
825839 then throw("Product idx should be 2 digits, zero padded")
826840 else {
827- let ff = parseIntValue(eE[0])
828- let fg = parseIntValue(eE[1])
829- if (!(containsElement(aO, ff)))
830- then throw((("Product '" + aL[ff]) + "' cannot be used for land defense"))
831- else if ((0 > fg))
841+ let fh = parseIntValue(eG[0])
842+ let fi = parseIntValue(eG[1])
843+ if (!(containsElement(aO, fh)))
844+ then throw((("Product '" + aL[fh]) + "' cannot be used for land defense"))
845+ else if ((0 > fi))
832846 then throw("Count can't be negative")
833- else if ((fg > s))
834- then throw(((("Can't put more than " + toString(s)) + " of ") + aL[ff]))
835- else if ((fg == 0))
836- then $Tuple3(eO, fd, fe)
847+ else if ((fi > s))
848+ then throw(((("Can't put more than " + toString(s)) + " of ") + aL[fh]))
849+ else if ((fi == 0))
850+ then $Tuple3(eQ, ff, fg)
837851 else {
838- let fh = take(eO, (8 * ff))
839- let eJ = toInt(take(drop(eO, (8 * ff)), 8))
840- let eK = drop(eO, (8 * (ff + 1)))
841- let ca = split(aP[ff], "_")
842- if (if (!(fc))
843- then (fg > eJ)
852+ let fj = take(eQ, (8 * fh))
853+ let eL = toInt(take(drop(eQ, (8 * fh)), 8))
854+ let eM = drop(eQ, (8 * (fh + 1)))
855+ let cb = split(aP[fh], "_")
856+ if (if (!(fe))
857+ then (fi > eL)
844858 else false)
845- then throw(((((("You have " + toString(eJ)) + " of ") + aL[ff]) + ", but tried to use ") + toString(fg)))
859+ then throw(((((("You have " + toString(eL)) + " of ") + aL[fh]) + ", but tried to use ") + toString(fi)))
846860 else {
847- let eL = if (if (!(fc))
848- then eV(eW, split(ca[aS], ","))
861+ let eN = if (if (!(fe))
862+ then eX(eY, split(cb[aS], ","))
849863 else false)
850- then (eJ - fg)
851- else (eJ + fg)
852- let fi = (dW(eL, aU) - dW(eJ, aU))
853- $Tuple3(((fh + toBytes(eL)) + eK), (fd + fi), (fe - fi))
864+ then (eL - fi)
865+ else (eL + fi)
866+ let fk = (dY(eN, aU) - dY(eL, aU))
867+ $Tuple3(((fj + toBytes(eN)) + eM), (ff + fk), (fg - fk))
854868 }
855869 }
856870 }
857871 }
858872
859873
860-func fj (fb,eO,fc,fk,fl,fm,eW) = {
861- let eE = split(fb, ":")
862- if ((size(eE) != 2))
874+func fl (fd,eQ,fe,fm,fn,fo,eY) = {
875+ let eG = split(fd, ":")
876+ if ((size(eG) != 2))
863877 then throw("Incorrect format, should be index:amount")
864- else if (if (!(fc))
865- then (size(eE[0]) != 2)
878+ else if (if (!(fe))
879+ then (size(eG[0]) != 2)
866880 else false)
867881 then throw("Product idx should be 2 digits, zero padded")
868882 else {
869- let ff = parseIntValue(eE[0])
870- let fg = parseIntValue(eE[1])
871- if (if ((0 > ff))
883+ let fh = parseIntValue(eG[0])
884+ let fi = parseIntValue(eG[1])
885+ if (if ((0 > fh))
872886 then true
873- else (ff >= size(aP)))
887+ else (fh >= size(aP)))
874888 then throw("Unknown product idx")
875- else if ((0 > fg))
889+ else if ((0 > fi))
876890 then throw("Count can't be negative")
877- else if ((fg > s))
878- then throw(((("Can't put more than " + toString(s)) + " of ") + aL[ff]))
879- else if ((fg == 0))
880- then $Tuple2(eO, false)
891+ else if ((fi > s))
892+ then throw(((("Can't put more than " + toString(s)) + " of ") + aL[fh]))
893+ else if ((fi == 0))
894+ then $Tuple2(eQ, false)
881895 else {
882- let fh = take(eO, (8 * ff))
883- let eJ = toInt(take(drop(eO, (8 * ff)), 8))
884- let eK = drop(eO, (8 * (ff + 1)))
885- let ca = split(aP[ff], "_")
886- if (if (!(fc))
887- then (fg > eJ)
896+ let fj = take(eQ, (8 * fh))
897+ let eL = toInt(take(drop(eQ, (8 * fh)), 8))
898+ let eM = drop(eQ, (8 * (fh + 1)))
899+ let cb = split(aP[fh], "_")
900+ if (if (!(fe))
901+ then (fi > eL)
888902 else false)
889- then throw(((((("You have " + toString(eJ)) + " of ") + aL[ff]) + ", but tried to use ") + toString(fg)))
903+ then throw(((((("You have " + toString(eL)) + " of ") + aL[fh]) + ", but tried to use ") + toString(fi)))
890904 else {
891- let fn = if (if (!(fc))
892- then eV(eW, split(ca[aS], ","))
905+ let fp = if (if (!(fe))
906+ then eX(eY, split(cb[aS], ","))
893907 else false)
894908 then {
895- let fo = ca[aT]
896- if ((fo == ""))
909+ let fq = cb[aT]
910+ if ((fq == ""))
897911 then throw("Item cannot be equipped")
898912 else {
899- let fp = parseIntValue(fo)
900- let fq = (fp / 100)
901- if ((fk != fq))
913+ let fr = parseIntValue(fq)
914+ let fs = (fr / 100)
915+ if ((fm != fs))
902916 then throw("Segment incompatible")
903917 else {
904- let fr = ((fp % 100) / 10)
905- if ((fl != fr))
918+ let ft = ((fr % 100) / 10)
919+ if ((fn != ft))
906920 then throw("Slot incompatible")
907921 else {
908- let fs = (fp % 10)
909- if (if ((fm != 0))
910- then (fs > 1)
922+ let fu = (fr % 10)
923+ if (if ((fo != 0))
924+ then (fu > 1)
911925 else false)
912926 then throw("Big items should occupy slot 0")
913- else (fs > 1)
927+ else (fu > 1)
914928 }
915929 }
916930 }
917931 }
918932 else false
919- $Tuple2(((fh + toBytes((eJ + (if (fc)
920- then fg
921- else -(fg))))) + eK), fn)
933+ $Tuple2(((fj + toBytes((eL + (if (fe)
934+ then fi
935+ else -(fi))))) + eM), fp)
922936 }
923937 }
924938 }
925939 }
926940
927941
928-func ft (fu,fv,fc,fk,fl,fw) = if ((fu != ""))
942+func fv (fw,fx,fe,fm,fn,fy) = if ((fw != ""))
929943 then {
930- let fx = split(fu, ",")
931- if ((size(fx) > r))
944+ let fz = split(fw, ",")
945+ if ((size(fz) > r))
932946 then throw("Wrong slots format")
933947 else {
934- let fy = fx[0]
935- let fz = if ((size(fx) > 1))
936- then fx[1]
948+ let fA = fz[0]
949+ let fB = if ((size(fz) > 1))
950+ then fz[1]
937951 else ""
938- if (if ((fy == ""))
939- then (fz == "")
952+ if (if ((fA == ""))
953+ then (fB == "")
940954 else false)
941- then fv
955+ then fx
942956 else {
943- let fA = if ((fy != ""))
944- then fj(fy, fv, fc, fk, fl, 0, fw)
945- else $Tuple2(fv, false)
946- if ((fz != ""))
947- then if (fA._2)
957+ let fC = if ((fA != ""))
958+ then fl(fA, fx, fe, fm, fn, 0, fy)
959+ else $Tuple2(fx, false)
960+ if ((fB != ""))
961+ then if (fC._2)
948962 then throw("Big item already occupies slot")
949- else fj(fz, fA._1, fc, fk, fl, 1, fw)._1
950- else fA._1
963+ else fl(fB, fC._1, fe, fm, fn, 1, fy)._1
964+ else fC._1
951965 }
952966 }
953967 }
954- else fv
955-
956-
957-func fB (fC,fD,fc,fw) = {
958- func fk (eg,fE) = {
959- let eQ = eg._1
960- let fl = split(fE, ";")
961- if ((size(fl) != q))
968+ else fx
969+
970+
971+func fD (fE,fF,fe,fy) = {
972+ func fm (ei,fG) = {
973+ let eS = ei._1
974+ let fn = split(fG, ";")
975+ if ((size(fn) != q))
962976 then throw("Wrong segment format")
963977 else {
964- let fF = fl[0]
965- let fG = fl[1]
966- if (if ((fF == ""))
967- then (fG == "")
978+ let fH = fn[0]
979+ let fI = fn[1]
980+ if (if ((fH == ""))
981+ then (fI == "")
968982 else false)
969- then $Tuple2((eQ + 1), eg._2)
983+ then $Tuple2((eS + 1), ei._2)
970984 else {
971- let fH = ft(fF, eg._2, fc, eQ, 0, fw)
972- $Tuple2((eQ + 1), ft(fG, fH, fc, eQ, 1, fw))
985+ let fJ = fv(fH, ei._2, fe, eS, 0, fy)
986+ $Tuple2((eS + 1), fv(fI, fJ, fe, eS, 1, fy))
973987 }
974988 }
975989 }
976990
977-( let ei = fC
978- let ej = size(ei)
979- let ek = $Tuple2(0, fD)
980- func el (em,en) = if ((en >= ej))
981- then em
982- else fk(em, ei[en])
983-
984- func eo (em,en) = if ((en >= ej))
985- then em
991+( let ek = fE
992+ let el = size(ek)
993+ let em = $Tuple2(0, fF)
994+ func en (eo,ep) = if ((ep >= el))
995+ then eo
996+ else fm(eo, ek[ep])
997+
998+ func eq (eo,ep) = if ((ep >= el))
999+ then eo
9861000 else throw("List size exceeds 6")
9871001
988- eo(el(el(el(el(el(el(ek, 0), 1), 2), 3), 4), 5), 6))._2
989- }
990-
991-
992-func fI (fC,fD,fd,fe,fc,eW) = if ((3 > size(fC)))
1002+ eq(en(en(en(en(en(en(em, 0), 1), 2), 3), 4), 5), 6))._2
1003+ }
1004+
1005+
1006+func fK (fE,fF,ff,fg,fe,eY) = if ((3 > size(fE)))
9931007 then throw("At least duck, mines and traps parts are required")
9941008 else {
995- func fk (eg,fE) = {
996- let eQ = eg._1
997- if ((eQ == 0))
998- then $Tuple4((eQ + 1), eg._2, eg._3, eg._4)
1009+ func fm (ei,fG) = {
1010+ let eS = ei._1
1011+ if ((eS == 0))
1012+ then $Tuple4((eS + 1), ei._2, ei._3, ei._4)
9991013 else {
1000- let fJ = fa(fE, eg._2, fc, eW, eg._3, eg._4)
1001- $Tuple4((eQ + 1), fJ._1, fJ._2, fJ._3)
1014+ let fL = fc(fG, ei._2, fe, eY, ei._3, ei._4)
1015+ $Tuple4((eS + 1), fL._1, fL._2, fL._3)
10021016 }
10031017 }
10041018
1005- let fK = {
1006- let ei = fC
1007- let ej = size(ei)
1008- let ek = $Tuple4(0, fD, fd, fe)
1009- func el (em,en) = if ((en >= ej))
1010- then em
1011- else fk(em, ei[en])
1012-
1013- func eo (em,en) = if ((en >= ej))
1014- then em
1019+ let fM = {
1020+ let ek = fE
1021+ let el = size(ek)
1022+ let em = $Tuple4(0, fF, ff, fg)
1023+ func en (eo,ep) = if ((ep >= el))
1024+ then eo
1025+ else fm(eo, ek[ep])
1026+
1027+ func eq (eo,ep) = if ((ep >= el))
1028+ then eo
10151029 else throw("List size exceeds 10")
10161030
1017- eo(el(el(el(el(el(el(el(el(el(el(ek, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
1018- }
1019- $Tuple3(fK._2, fK._3, fK._4)
1031+ eq(en(en(en(en(en(en(en(en(en(en(em, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
1032+ }
1033+ $Tuple3(fM._2, fM._3, fM._4)
10201034 }
10211035
10221036
1023-func fL (z) = {
1024- let fM = E(z)
1025- let fN = split(valueOrElse(getString(fM), ",;,_,;,_,;,_,;,_,;,_,;,"), "_")
1026- let fO = fB(fN, dq, true, nil)
1027- let fP = split(fN[o], ";")[1]
1028- let am = if ((fP == ""))
1037+func fN (z) = {
1038+ let fO = E(z)
1039+ let fP = split(valueOrElse(getString(fO), ",;,_,;,_,;,_,;,_,;,_,;,"), "_")
1040+ let fQ = fD(fP, ds, true, nil)
1041+ let fR = split(fP[o], ";")[1]
1042+ let am = if ((fR == ""))
10291043 then 0
10301044 else {
1031- let fQ = split(fP, ",")[0]
1032- if ((fQ == ""))
1045+ let fS = split(fR, ",")[0]
1046+ if ((fS == ""))
10331047 then 0
10341048 else {
1035- let fb = split(fQ, ":")
1036- let cG = fb[0]
1037- let fR = fb[1]
1038- if (if (if (if (if ((cG == "06"))
1049+ let fd = split(fS, ":")
1050+ let cH = fd[0]
1051+ let fT = fd[1]
1052+ if (if (if (if (if ((cH == "06"))
10391053 then true
1040- else (cG == "07"))
1054+ else (cH == "07"))
10411055 then true
1042- else (cG == "08"))
1043- then (fR != "")
1056+ else (cH == "08"))
1057+ then (fT != "")
10441058 else false)
1045- then (parseIntValue(fR) > 0)
1059+ then (parseIntValue(fT) > 0)
10461060 else false)
1047- then parseIntValue(split(aP[parseIntValue(cG)], "_")[aR])
1061+ then parseIntValue(split(aP[parseIntValue(cH)], "_")[aR])
10481062 else 0
10491063 }
10501064 }
1051- let fw = ak(this, z, am, true)
1052- let fS = fB(fN, fO, false, fw)
1053- (fS == fS)
1054- }
1055-
1056-
1057-func fT (fU,fV,fW,fX) = if ((size(fU) != aD))
1065+ let fy = ak(this, z, am, true)
1066+ let fU = fD(fP, fQ, false, fy)
1067+ (fU == fU)
1068+ }
1069+
1070+
1071+func fV (fW,fX,fY,fZ) = if ((size(fW) != aD))
10581072 then throw("Wrong proportions data")
10591073 else {
1060- func fY (eg,fZ) = {
1061- let ey = (parseIntValue(fU[fZ]) + ((fX * fV[fZ]) * fW))
1062- if ((0 > ey))
1063- then throw(((((((("Panic! Pieces of type=" + toString(fZ)) + ", sign=") + toString(fX)) + ", terrainCounts[i]=") + toString(fV[fZ])) + ", landSizeIndex=") + toString(fW)))
1064- else (eg :+ toString(ey))
1065- }
1066-
1067- let ei = cr
1068- let ej = size(ei)
1069- let ek = nil
1070- func el (em,en) = if ((en >= ej))
1071- then em
1072- else fY(em, ei[en])
1073-
1074- func eo (em,en) = if ((en >= ej))
1075- then em
1074+ func ga (ei,gb) = {
1075+ let eA = (parseIntValue(fW[gb]) + ((fZ * fX[gb]) * fY))
1076+ if ((0 > eA))
1077+ then throw(((((((("Panic! Pieces of type=" + toString(gb)) + ", sign=") + toString(fZ)) + ", terrainCounts[i]=") + toString(fX[gb])) + ", landSizeIndex=") + toString(fY)))
1078+ else (ei :+ toString(eA))
1079+ }
1080+
1081+ let ek = cs
1082+ let el = size(ek)
1083+ let em = nil
1084+ func en (eo,ep) = if ((ep >= el))
1085+ then eo
1086+ else ga(eo, ek[ep])
1087+
1088+ func eq (eo,ep) = if ((ep >= el))
1089+ then eo
10761090 else throw("List size exceeds 6")
10771091
1078- eo(el(el(el(el(el(el(ek, 0), 1), 2), 3), 4), 5), 6)
1092+ eq(en(en(en(en(en(en(em, 0), 1), 2), 3), 4), 5), 6)
10791093 }
10801094
10811095
1082-func ga (fV,fW,fX) = {
1083- let fU = split(valueOrElse(getString(cU()), "0_0_0_0_0_0"), "_")
1084- makeString(fT(fU, fV, fW, fX), "_")
1085- }
1086-
1087-
1088-func gb (gc) = [(size(split(gc, "A")) - 1), (size(split(gc, "B")) - 1), (size(split(gc, "C")) - 1), (size(split(gc, "D")) - 1), (size(split(gc, "E")) - 1), (size(split(gc, "F")) - 1)]
1089-
1090-
1091-func gd (ge,fV,gf,fW,gg) = {
1092- func gh (eg,fZ) = {
1093- let gi = ((fraction(gf, gg, aG) * fV[fZ]) * fW)
1094- (eg :+ toString((parseIntValue(ge[fZ]) + gi)))
1096+func gc (fX,fY,fZ) = {
1097+ let fW = split(valueOrElse(getString(cV()), "0_0_0_0_0_0"), "_")
1098+ makeString(fV(fW, fX, fY, fZ), "_")
1099+ }
1100+
1101+
1102+func gd (ge) = [(size(split(ge, "A")) - 1), (size(split(ge, "B")) - 1), (size(split(ge, "C")) - 1), (size(split(ge, "D")) - 1), (size(split(ge, "E")) - 1), (size(split(ge, "F")) - 1)]
1103+
1104+
1105+func gf (gg,fX,gh,fY,gi) = {
1106+ func gj (ei,gb) = {
1107+ let gk = ((fraction(gh, gi, aG) * fX[gb]) * fY)
1108+ (ei :+ toString((parseIntValue(gg[gb]) + gk)))
10951109 }
10961110
1097- let er = {
1098- let ei = cr
1099- let ej = size(ei)
1100- let ek = nil
1101- func el (em,en) = if ((en >= ej))
1102- then em
1103- else gh(em, ei[en])
1104-
1105- func eo (em,en) = if ((en >= ej))
1106- then em
1111+ let et = {
1112+ let ek = cs
1113+ let el = size(ek)
1114+ let em = nil
1115+ func en (eo,ep) = if ((ep >= el))
1116+ then eo
1117+ else gj(eo, ek[ep])
1118+
1119+ func eq (eo,ep) = if ((ep >= el))
1120+ then eo
11071121 else throw("List size exceeds 6")
11081122
1109- eo(el(el(el(el(el(el(ek, 0), 1), 2), 3), 4), 5), 6)
1123+ eq(en(en(en(en(en(en(em, 0), 1), 2), 3), 4), 5), 6)
11101124 }
1111- makeString(er, "_")
1112- }
1113-
1114-
1115-func gj (fV,gf,fW,gg) = {
1116- func gh (eg,fZ) = {
1117- let gi = ((fraction(gf, gg, aG) * fV[fZ]) * fW)
1118- $Tuple2((eg._1 :+ gi), (eg._2 + gi))
1125+ makeString(et, "_")
1126+ }
1127+
1128+
1129+func gl (fX,gh,fY,gi) = {
1130+ func gj (ei,gb) = {
1131+ let gk = ((fraction(gh, gi, aG) * fX[gb]) * fY)
1132+ $Tuple2((ei._1 :+ gk), (ei._2 + gk))
11191133 }
11201134
1121- let ei = cr
1122- let ej = size(ei)
1123- let ek = $Tuple2(nil, 0)
1124- func el (em,en) = if ((en >= ej))
1125- then em
1126- else gh(em, ei[en])
1127-
1128- func eo (em,en) = if ((en >= ej))
1129- then em
1135+ let ek = cs
1136+ let el = size(ek)
1137+ let em = $Tuple2(nil, 0)
1138+ func en (eo,ep) = if ((ep >= el))
1139+ then eo
1140+ else gj(eo, ek[ep])
1141+
1142+ func eq (eo,ep) = if ((ep >= el))
1143+ then eo
11301144 else throw("List size exceeds 6")
11311145
1132- eo(el(el(el(el(el(el(ek, 0), 1), 2), 3), 4), 5), 6)
1133- }
1134-
1135-
1136-func gk (gl,gm,gn,go) = {
1137- let gp = gn._1
1138- let gq = gn._2
1139- if ((gq == 0))
1140- then $Tuple2(makeString(gl, "_"), makeString(gm, "_"))
1141- else if ((go >= gq))
1146+ eq(en(en(en(en(en(en(em, 0), 1), 2), 3), 4), 5), 6)
1147+ }
1148+
1149+
1150+func gm (gn,go,gp,gq) = {
1151+ let gr = gp._1
1152+ let gs = gp._2
1153+ if ((gs == 0))
1154+ then $Tuple2(makeString(gn, "_"), makeString(go, "_"))
1155+ else if ((gq >= gs))
11421156 then {
1143- func gr (eg,fZ) = (eg :+ toString((parseIntValue(gl[fZ]) + gp[fZ])))
1144-
1145- let er = {
1146- let ei = cr
1147- let ej = size(ei)
1148- let ek = nil
1149- func el (em,en) = if ((en >= ej))
1150- then em
1151- else gr(em, ei[en])
1152-
1153- func eo (em,en) = if ((en >= ej))
1154- then em
1157+ func gt (ei,gb) = (ei :+ toString((parseIntValue(gn[gb]) + gr[gb])))
1158+
1159+ let et = {
1160+ let ek = cs
1161+ let el = size(ek)
1162+ let em = nil
1163+ func en (eo,ep) = if ((ep >= el))
1164+ then eo
1165+ else gt(eo, ek[ep])
1166+
1167+ func eq (eo,ep) = if ((ep >= el))
1168+ then eo
11551169 else throw("List size exceeds 6")
11561170
1157- eo(el(el(el(el(el(el(ek, 0), 1), 2), 3), 4), 5), 6)
1171+ eq(en(en(en(en(en(en(em, 0), 1), 2), 3), 4), 5), 6)
11581172 }
1159- $Tuple2(makeString(er, "_"), makeString(gm, "_"))
1173+ $Tuple2(makeString(et, "_"), makeString(go, "_"))
11601174 }
11611175 else {
1162- func gs (eg,fZ) = {
1163- let gt = fraction(gp[fZ], go, gq)
1164- $Tuple2((eg._1 :+ toString((parseIntValue(gl[fZ]) + gt))), (eg._2 :+ toString(((parseIntValue(gm[fZ]) + gp[fZ]) - gt))))
1176+ func gu (ei,gb) = {
1177+ let gv = fraction(gr[gb], gq, gs)
1178+ $Tuple2((ei._1 :+ toString((parseIntValue(gn[gb]) + gv))), (ei._2 :+ toString(((parseIntValue(go[gb]) + gr[gb]) - gv))))
11651179 }
11661180
1167- let er = {
1168- let ei = cr
1169- let ej = size(ei)
1170- let ek = $Tuple2(nil, nil)
1171- func el (em,en) = if ((en >= ej))
1172- then em
1173- else gs(em, ei[en])
1174-
1175- func eo (em,en) = if ((en >= ej))
1176- then em
1181+ let et = {
1182+ let ek = cs
1183+ let el = size(ek)
1184+ let em = $Tuple2(nil, nil)
1185+ func en (eo,ep) = if ((ep >= el))
1186+ then eo
1187+ else gu(eo, ek[ep])
1188+
1189+ func eq (eo,ep) = if ((ep >= el))
1190+ then eo
11771191 else throw("List size exceeds 6")
11781192
1179- eo(el(el(el(el(el(el(ek, 0), 1), 2), 3), 4), 5), 6)
1193+ eq(en(en(en(en(en(en(em, 0), 1), 2), 3), 4), 5), 6)
11801194 }
1181- $Tuple2(makeString(er._1, "_"), makeString(er._2, "_"))
1195+ $Tuple2(makeString(et._1, "_"), makeString(et._2, "_"))
11821196 }
11831197 }
11841198
11851199
1186-func gu (gv) = if ((gv >= toBigInt(0)))
1187- then gv
1188- else -(gv)
1189-
1190-
1191-let gw = [[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]]
1192-
1193-func gx (dd,gy) = {
1194- let gz = toInt((dd % dy))
1195- let gA = if ((gy[0] > gz))
1200+func gw (gx) = if ((gx >= toBigInt(0)))
1201+ then gx
1202+ else -(gx)
1203+
1204+
1205+let gy = [[6, 9, 14, 15, 16], [5, 8, 13, 14, 15], [1, 4, 9, 10, 15], [1, 6, 7, 15, 19], [4, 7, 8, 13, 18]]
1206+
1207+func gz (de,gA) = {
1208+ let gB = toInt((de % dA))
1209+ let gC = if ((gA[0] > gB))
11961210 then "A"
1197- else if ((gy[1] > gz))
1211+ else if ((gA[1] > gB))
11981212 then "B"
1199- else if ((gy[2] > gz))
1213+ else if ((gA[2] > gB))
12001214 then "C"
1201- else if ((gy[3] > gz))
1215+ else if ((gA[3] > gB))
12021216 then "D"
1203- else if ((gy[4] > gz))
1217+ else if ((gA[4] > gB))
12041218 then "E"
12051219 else "F"
1206- gA
1207- }
1208-
1209-
1210-func gB (gC,gD) = {
1211- let gE = gw[gD]
1212- func gF (eg,eh) = $Tuple2((((((eg._1 + gx(eg._2, gE)) + gx((eg._2 / dy), gE)) + gx((eg._2 / dz), gE)) + gx((eg._2 / dA), gE)) + gx((eg._2 / dB), gE)), (eg._2 / dC))
1213-
1214- let fK = {
1215- let ei = [1, 2, 3, 4, 5]
1216- let ej = size(ei)
1217- let ek = $Tuple2("", (gC / dx))
1218- func el (em,en) = if ((en >= ej))
1219- then em
1220- else gF(em, ei[en])
1221-
1222- func eo (em,en) = if ((en >= ej))
1223- then em
1220+ gC
1221+ }
1222+
1223+
1224+func gD (gE,gF) = {
1225+ let gG = gy[gF]
1226+ func gH (ei,ej) = $Tuple2((((((ei._1 + gz(ei._2, gG)) + gz((ei._2 / dA), gG)) + gz((ei._2 / dB), gG)) + gz((ei._2 / dC), gG)) + gz((ei._2 / dD), gG)), (ei._2 / dE))
1227+
1228+ let fM = {
1229+ let ek = [1, 2, 3, 4, 5]
1230+ let el = size(ek)
1231+ let em = $Tuple2("", (gE / dz))
1232+ func en (eo,ep) = if ((ep >= el))
1233+ then eo
1234+ else gH(eo, ek[ep])
1235+
1236+ func eq (eo,ep) = if ((ep >= el))
1237+ then eo
12241238 else throw("List size exceeds 5")
12251239
1226- eo(el(el(el(el(el(ek, 0), 1), 2), 3), 4), 5)
1240+ eq(en(en(en(en(en(em, 0), 1), 2), 3), 4), 5)
12271241 }
1228- fK._1
1229- }
1230-
1231-
1232-let gG = [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]
1233-
1234-let gH = ["A", "B", "C", "D", "E", "F"]
1235-
1236-func gI (gJ,fW) = {
1237- func gK (eg,db) = {
1238- let eQ = eg._2
1239- let gL = parseIntValue(db)
1240- let gv = if ((gL == 0))
1242+ fM._1
1243+ }
1244+
1245+
1246+let gI = [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]
1247+
1248+let gJ = ["A", "B", "C", "D", "E", "F"]
1249+
1250+func gK (gL,fY) = {
1251+ func gM (ei,dc) = {
1252+ let eS = ei._2
1253+ let gN = parseIntValue(dc)
1254+ let gx = if ((gN == 0))
12411255 then 0
1242- else if ((gL >= (4 * fW)))
1243- then (gL / fW)
1244- else if ((gL > (3 * fW)))
1256+ else if ((gN >= (4 * fY)))
1257+ then (gN / fY)
1258+ else if ((gN > (3 * fY)))
12451259 then 3
1246- else (((gL - 1) / fW) + 1)
1247- $Tuple3((eg._1 :+ gv), (eg._2 + 1), (eg._3 + gv))
1260+ else (((gN - 1) / fY) + 1)
1261+ $Tuple3((ei._1 :+ gx), (ei._2 + 1), (ei._3 + gx))
12481262 }
12491263
1250- let fK = {
1251- let ei = gJ
1252- let ej = size(ei)
1253- let ek = $Tuple3(nil, 0, 0)
1254- func el (em,en) = if ((en >= ej))
1255- then em
1256- else gK(em, ei[en])
1257-
1258- func eo (em,en) = if ((en >= ej))
1259- then em
1264+ let fM = {
1265+ let ek = gL
1266+ let el = size(ek)
1267+ let em = $Tuple3(nil, 0, 0)
1268+ func en (eo,ep) = if ((ep >= el))
1269+ then eo
1270+ else gM(eo, ek[ep])
1271+
1272+ func eq (eo,ep) = if ((ep >= el))
1273+ then eo
12601274 else throw("List size exceeds 6")
12611275
1262- eo(el(el(el(el(el(el(ek, 0), 1), 2), 3), 4), 5), 6)
1276+ eq(en(en(en(en(en(en(em, 0), 1), 2), 3), 4), 5), 6)
12631277 }
1264- let gM = fK._1
1265- let gN = value(indexOf(gM, max(gM)))
1266- let gO = (fK._3 - 25)
1267- func gP (eg,cG) = {
1268- let gQ = if ((cG == gN))
1269- then (gM[cG] - gO)
1270- else gM[cG]
1271- let gR = if ((gQ == 0))
1278+ let gO = fM._1
1279+ let gP = value(indexOf(gO, max(gO)))
1280+ let gQ = (fM._3 - 25)
1281+ func gR (ei,cH) = {
1282+ let gS = if ((cH == gP))
1283+ then (gO[cH] - gQ)
1284+ else gO[cH]
1285+ let gT = if ((gS == 0))
12721286 then nil
1273- else split(drop(toString(pow(10, 0, gQ, 0, 0, DOWN)), 1), "")
1274- let fp = gH[cG]
1275- func gS (gT,gU) = (gT :+ fp)
1276-
1277- let gV = {
1278- let ei = gR
1279- let ej = size(ei)
1280- let ek = nil
1281- func gW (em,en) = if ((en >= ej))
1282- then em
1283- else gS(em, ei[en])
1284-
1285- func gX (em,en) = if ((en >= ej))
1286- then em
1287+ else split(drop(toString(pow(10, 0, gS, 0, 0, DOWN)), 1), "")
1288+ let fr = gJ[cH]
1289+ func gU (gV,gW) = (gV :+ fr)
1290+
1291+ let gX = {
1292+ let ek = gT
1293+ let el = size(ek)
1294+ let em = nil
1295+ func gY (eo,ep) = if ((ep >= el))
1296+ then eo
1297+ else gU(eo, ek[ep])
1298+
1299+ func gZ (eo,ep) = if ((ep >= el))
1300+ then eo
12871301 else throw("List size exceeds 25")
12881302
1289- gX(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(ek, 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)
1290- }
1291- (eg ++ gV)
1303+ gZ(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(em, 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)
1304+ }
1305+ (ei ++ gX)
12921306 }
12931307
1294- let er = {
1295- let ei = cr
1296- let ej = size(ei)
1297- let ek = nil
1298- func gW (em,en) = if ((en >= ej))
1299- then em
1300- else gP(em, ei[en])
1301-
1302- func gX (em,en) = if ((en >= ej))
1303- then em
1308+ let et = {
1309+ let ek = cs
1310+ let el = size(ek)
1311+ let em = nil
1312+ func gY (eo,ep) = if ((ep >= el))
1313+ then eo
1314+ else gR(eo, ek[ep])
1315+
1316+ func gZ (eo,ep) = if ((ep >= el))
1317+ then eo
13041318 else throw("List size exceeds 6")
13051319
1306- gX(gW(gW(gW(gW(gW(gW(ek, 0), 1), 2), 3), 4), 5), 6)
1320+ gZ(gY(gY(gY(gY(gY(gY(em, 0), 1), 2), 3), 4), 5), 6)
13071321 }
1308- func gY (eg,eQ) = (eg + er[eQ])
1309-
1310- let ei = gG
1311- let ej = size(ei)
1312- let ek = ""
1313- func gZ (em,en) = if ((en >= ej))
1314- then em
1315- else gY(em, ei[en])
1316-
1317- func ha (em,en) = if ((en >= ej))
1318- then em
1322+ func ha (ei,eS) = (ei + et[eS])
1323+
1324+ let ek = gI
1325+ let el = size(ek)
1326+ let em = ""
1327+ func hb (eo,ep) = if ((ep >= el))
1328+ then eo
1329+ else ha(eo, ek[ep])
1330+
1331+ func hc (eo,ep) = if ((ep >= el))
1332+ then eo
13191333 else throw("List size exceeds 25")
13201334
1321- ha(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(ek, 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)
1322- }
1323-
1324-
1325-func hb (hc) = {
1326- let fJ = split(valueOrElse(getString(hc), "0:0_0_0_0_0_0:0_0_0_0_0_0:"), ":")
1327-[toString(valueOrElse(parseInt(fJ[be]), 0)), if ((size(split(fJ[bf], "_")) == aD))
1328- then fJ[bf]
1329- else "0_0_0_0_0_0", if ((size(split(fJ[bg], "_")) == aD))
1330- then fJ[bg]
1331- else "0_0_0_0_0_0", fJ[bh]]
1335+ hc(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(em, 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)
13321336 }
13331337
13341338
13351339 func hd (he) = {
1336- let eE = split(he, "_")
1337- ((aH * (parseIntValue(eE[1]) + 1)) * parseIntValue(eE[0]))
1340+ let fL = split(valueOrElse(getString(he), "0:0_0_0_0_0_0:0_0_0_0_0_0:"), ":")
1341+[toString(valueOrElse(parseInt(fL[be]), 0)), if ((size(split(fL[bf], "_")) == aD))
1342+ then fL[bf]
1343+ else "0_0_0_0_0_0", if ((size(split(fL[bg], "_")) == aD))
1344+ then fL[bg]
1345+ else "0_0_0_0_0_0", fL[bh]]
13381346 }
13391347
13401348
13411349 func hf (hg) = {
1342- let hh = hg[aY]
1343- func hi (eg,hj) = (eg + parseIntValue(hj))
1344-
1345- func hk (eg,hj) = {
1346- let cG = eg._1
1347- let dZ = (((parseIntValue(hj) + aU) - 1) / aU)
1348- $Tuple2((cG + 1), (eg._2 + (dZ * cl)))
1350+ let eG = split(hg, "_")
1351+ ((aH * (parseIntValue(eG[1]) + 1)) * parseIntValue(eG[0]))
1352+ }
1353+
1354+
1355+func hh (hi) = {
1356+ let hj = hi[aY]
1357+ func hk (ei,hl) = (ei + parseIntValue(hl))
1358+
1359+ func hm (ei,hl) = {
1360+ let cH = ei._1
1361+ let eb = (((parseIntValue(hl) + aU) - 1) / aU)
1362+ $Tuple2((cH + 1), (ei._2 + (eb * cm)))
13491363 }
13501364
1351- let hl = {
1352- let ei = split(hg[aW], "_")
1353- let ej = size(ei)
1354- let ek = 0
1355- func el (em,en) = if ((en >= ej))
1356- then em
1357- else hi(em, ei[en])
1358-
1359- func eo (em,en) = if ((en >= ej))
1360- then em
1365+ let hn = {
1366+ let ek = split(hi[aW], "_")
1367+ let el = size(ek)
1368+ let em = 0
1369+ func en (eo,ep) = if ((ep >= el))
1370+ then eo
1371+ else hk(eo, ek[ep])
1372+
1373+ func eq (eo,ep) = if ((ep >= el))
1374+ then eo
13611375 else throw("List size exceeds 6")
13621376
1363- eo(el(el(el(el(el(el(ek, 0), 1), 2), 3), 4), 5), 6)
1377+ eq(en(en(en(en(en(en(em, 0), 1), 2), 3), 4), 5), 6)
13641378 }
1365- let hm = {
1366- let ei = split(hg[aX], "_")
1367- let ej = size(ei)
1368- let ek = 0
1369- func gW (em,en) = if ((en >= ej))
1370- then em
1371- else hi(em, ei[en])
1372-
1373- func gX (em,en) = if ((en >= ej))
1374- then em
1379+ let ho = {
1380+ let ek = split(hi[aX], "_")
1381+ let el = size(ek)
1382+ let em = 0
1383+ func gY (eo,ep) = if ((ep >= el))
1384+ then eo
1385+ else hk(eo, ek[ep])
1386+
1387+ func gZ (eo,ep) = if ((ep >= el))
1388+ then eo
13751389 else throw("List size exceeds 6")
13761390
1377- gX(gW(gW(gW(gW(gW(gW(ek, 0), 1), 2), 3), 4), 5), 6)
1391+ gZ(gY(gY(gY(gY(gY(gY(em, 0), 1), 2), 3), 4), 5), 6)
13781392 }
1379- let hn = if ((hh == ""))
1393+ let hp = if ((hj == ""))
13801394 then 0
1381- else ( let ei = split_4C(hh, "_")
1382- let ej = size(ei)
1383- let ek = $Tuple2(0, 0)
1384- func gZ (em,en) = if ((en >= ej))
1385- then em
1386- else hk(em, ei[en])
1387-
1388- func ha (em,en) = if ((en >= ej))
1389- then em
1395+ else ( let ek = split_4C(hj, "_")
1396+ let el = size(ek)
1397+ let em = $Tuple2(0, 0)
1398+ func hb (eo,ep) = if ((ep >= el))
1399+ then eo
1400+ else hm(eo, ek[ep])
1401+
1402+ func hc (eo,ep) = if ((ep >= el))
1403+ then eo
13901404 else throw("List size exceeds 50")
13911405
1392- ha(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(ek, 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
1393- ((hl + hm) + hn)
1394- }
1395-
1396-
1397-func ho (hp,hq,hr) = {
1398- let he = ((toString(hq) + "_") + toString(hr))
1399- let hs = hd(he)
1400- let ht = valueOrElse(getString(hp), (he + ":0_0_0_0_0_0:0_0_0_0_0_0::0"))
1401- let hu = split_4C(ht, ":")
1402- let hv = hf(hu)
1403- let hw = if ((5 > size(hu)))
1404- then makeString(["0", toString(hv), toString((hs - hv)), toString(hs)], "_")
1406+ hc(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(em, 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
1407+ ((hn + ho) + hp)
1408+ }
1409+
1410+
1411+func hq (hr,hs,ht) = {
1412+ let hg = ((toString(hs) + "_") + toString(ht))
1413+ let hu = hf(hg)
1414+ let hv = valueOrElse(getString(hr), (hg + ":0_0_0_0_0_0:0_0_0_0_0_0::0"))
1415+ let hw = split_4C(hv, ":")
1416+ let hx = hh(hw)
1417+ let hy = if ((5 > size(hw)))
1418+ then makeString(["0", toString(hx), toString((hu - hx)), toString(hu)], "_")
14051419 else {
1406- let hx = split(hu[aZ], "_")
1407- let hy = parseIntValue(hx[ba])
1408- let hz = if ((size(hx) > 1))
1409- then parseIntValue(hx[bb])
1410- else hv
1411- makeString([toString(hy), toString(hz), toString(((hs - hy) - hz)), toString(hs)], "_")
1412- }
1413-[hu[aV], if ((size(split(hu[aW], "_")) == aD))
1414- then hu[aW]
1415- else "0_0_0_0_0_0", if ((size(split(hu[aX], "_")) == aD))
1416- then hu[aX]
1417- else "0_0_0_0_0_0", hu[aY], hw]
1418- }
1419-
1420-
1421-func hA (hg) = {
1422- let hB = hf(hg)
1423- let hC = parseIntValue(split(hg[aZ], "_")[ba])
1424- ((hd(hg[aV]) - hB) - hC)
1425- }
1426-
1427-
1428-func hD (hE,hg,hF) = if ((size(hE) != 3))
1420+ let hz = split(hw[aZ], "_")
1421+ let hA = parseIntValue(hz[ba])
1422+ let hB = if ((size(hz) > 1))
1423+ then parseIntValue(hz[bb])
1424+ else hx
1425+ makeString([toString(hA), toString(hB), toString(((hu - hA) - hB)), toString(hu)], "_")
1426+ }
1427+[hw[aV], if ((size(split(hw[aW], "_")) == aD))
1428+ then hw[aW]
1429+ else "0_0_0_0_0_0", if ((size(split(hw[aX], "_")) == aD))
1430+ then hw[aX]
1431+ else "0_0_0_0_0_0", hw[aY], hy]
1432+ }
1433+
1434+
1435+func hC (hi) = {
1436+ let hD = hh(hi)
1437+ let hE = parseIntValue(split(hi[aZ], "_")[ba])
1438+ ((hf(hi[aV]) - hD) - hE)
1439+ }
1440+
1441+
1442+func hF (hG,hi,hH) = if ((size(hG) != 3))
14291443 then throw("cargoListStr should contain exactly 2 ':' separators")
14301444 else {
1431- let hG = split(hE[0], "_")
1432- let hH = split(hE[1], "_")
1433- let hI = if ((hE[2] == ""))
1445+ let hI = split(hG[0], "_")
1446+ let hJ = split(hG[1], "_")
1447+ let hK = if ((hG[2] == ""))
14341448 then nil
1435- else split_4C(hE[2], "_")
1436- if ((size(hG) != aD))
1449+ else split_4C(hG[2], "_")
1450+ if ((size(hI) != aD))
14371451 then throw("All 6 resources should be passed")
1438- else if ((size(hH) != aD))
1452+ else if ((size(hJ) != aD))
14391453 then throw("All 6 materials should be passed")
14401454 else {
1441- let go = hA(hg)
1442- let hJ = split(hg[aW], "_")
1443- let hK = split(hg[aX], "_")
1444- let hL = if ((hg[aY] == ""))
1455+ let gq = hC(hi)
1456+ let hL = split(hi[aW], "_")
1457+ let hM = split(hi[aX], "_")
1458+ let hN = if ((hi[aY] == ""))
14451459 then nil
1446- else split_4C(hg[aY], "_")
1447- let gm = split(hF[bf], "_")
1448- let hM = split(hF[bg], "_")
1449- let hN = if ((hF[bh] == ""))
1460+ else split_4C(hi[aY], "_")
1461+ let go = split(hH[bf], "_")
1462+ let hO = split(hH[bg], "_")
1463+ let hP = if ((hH[bh] == ""))
14501464 then nil
1451- else split_4C(hF[bh], "_")
1452- func hO (eg,hj) = {
1453- let fZ = eg._1
1454- let hP = parseIntValue(hj)
1455- let hQ = parseIntValue(hJ[fZ])
1456- let hR = parseIntValue(gm[fZ])
1457- if ((hP == 0))
1458- then $Tuple4((fZ + 1), (eg._2 :+ hJ[fZ]), (eg._3 :+ gm[fZ]), eg._4)
1459- else if ((hP > 0))
1460- then if ((hP > hR))
1461- then throw((((("Attempt to take " + hj) + " from backpack, but only ") + toString(hR)) + " available"))
1462- else $Tuple4((fZ + 1), (eg._2 :+ toString((hQ + hP))), (eg._3 :+ toString((hR - hP))), (eg._4 + hP))
1463- else if ((-(hP) > hQ))
1464- then throw((((("Attempt to take " + toString(-(hP))) + " from warehouse, but only ") + toString(hQ)) + " available"))
1465- else $Tuple4((fZ + 1), (eg._2 :+ toString((hQ + hP))), (eg._3 :+ toString((hR - hP))), (eg._4 + hP))
1465+ else split_4C(hH[bh], "_")
1466+ func hQ (ei,hl) = {
1467+ let gb = ei._1
1468+ let hR = parseIntValue(hl)
1469+ let hS = parseIntValue(hL[gb])
1470+ let hT = parseIntValue(go[gb])
1471+ if ((hR == 0))
1472+ then $Tuple4((gb + 1), (ei._2 :+ hL[gb]), (ei._3 :+ go[gb]), ei._4)
1473+ else if ((hR > 0))
1474+ then if ((hR > hT))
1475+ then throw((((("Attempt to take " + hl) + " from backpack, but only ") + toString(hT)) + " available"))
1476+ else $Tuple4((gb + 1), (ei._2 :+ toString((hS + hR))), (ei._3 :+ toString((hT - hR))), (ei._4 + hR))
1477+ else if ((-(hR) > hS))
1478+ then throw((((("Attempt to take " + toString(-(hR))) + " from warehouse, but only ") + toString(hS)) + " available"))
1479+ else $Tuple4((gb + 1), (ei._2 :+ toString((hS + hR))), (ei._3 :+ toString((hT - hR))), (ei._4 + hR))
14661480 }
14671481
1468- let er = {
1469- let ei = hG
1470- let ej = size(ei)
1471- let ek = $Tuple4(0, nil, nil, 0)
1472- func el (em,en) = if ((en >= ej))
1473- then em
1474- else hO(em, ei[en])
1475-
1476- func eo (em,en) = if ((en >= ej))
1477- then em
1482+ let et = {
1483+ let ek = hI
1484+ let el = size(ek)
1485+ let em = $Tuple4(0, nil, nil, 0)
1486+ func en (eo,ep) = if ((ep >= el))
1487+ then eo
1488+ else hQ(eo, ek[ep])
1489+
1490+ func eq (eo,ep) = if ((ep >= el))
1491+ then eo
14781492 else throw("List size exceeds 6")
14791493
1480- eo(el(el(el(el(el(el(ek, 0), 1), 2), 3), 4), 5), 6)
1494+ eq(en(en(en(en(en(en(em, 0), 1), 2), 3), 4), 5), 6)
14811495 }
1482- func hS (eg,hj) = {
1483- let fZ = eg._1
1484- let hP = parseIntValue(hj)
1485- let hT = parseIntValue(hK[fZ])
1486- let hU = parseIntValue(hM[fZ])
1487- if ((hP == 0))
1488- then $Tuple4((fZ + 1), (eg._2 :+ hK[fZ]), (eg._3 :+ hM[fZ]), eg._4)
1489- else if ((hP > 0))
1490- then if ((hP > hU))
1491- then throw((((("Attempt to take " + hj) + " from backpack, but only ") + toString(hU)) + " available"))
1492- else $Tuple4((fZ + 1), (eg._2 :+ toString((hT + hP))), (eg._3 :+ toString((hU - hP))), (eg._4 + hP))
1493- else if ((-(hP) > hT))
1494- then throw((((("Attempt to take " + toString(-(hP))) + " from warehouse, but only ") + toString(hT)) + " available"))
1495- else $Tuple4((fZ + 1), (eg._2 :+ toString((hT + hP))), (eg._3 :+ toString((hU - hP))), (eg._4 + hP))
1496+ func hU (ei,hl) = {
1497+ let gb = ei._1
1498+ let hR = parseIntValue(hl)
1499+ let hV = parseIntValue(hM[gb])
1500+ let hW = parseIntValue(hO[gb])
1501+ if ((hR == 0))
1502+ then $Tuple4((gb + 1), (ei._2 :+ hM[gb]), (ei._3 :+ hO[gb]), ei._4)
1503+ else if ((hR > 0))
1504+ then if ((hR > hW))
1505+ then throw((((("Attempt to take " + hl) + " from backpack, but only ") + toString(hW)) + " available"))
1506+ else $Tuple4((gb + 1), (ei._2 :+ toString((hV + hR))), (ei._3 :+ toString((hW - hR))), (ei._4 + hR))
1507+ else if ((-(hR) > hV))
1508+ then throw((((("Attempt to take " + toString(-(hR))) + " from warehouse, but only ") + toString(hV)) + " available"))
1509+ else $Tuple4((gb + 1), (ei._2 :+ toString((hV + hR))), (ei._3 :+ toString((hW - hR))), (ei._4 + hR))
14961510 }
14971511
1498- let fF = {
1499- let ei = hH
1500- let ej = size(ei)
1501- let ek = $Tuple4(0, nil, nil, er._4)
1502- func gW (em,en) = if ((en >= ej))
1503- then em
1504- else hS(em, ei[en])
1505-
1506- func gX (em,en) = if ((en >= ej))
1507- then em
1512+ let fH = {
1513+ let ek = hJ
1514+ let el = size(ek)
1515+ let em = $Tuple4(0, nil, nil, et._4)
1516+ func gY (eo,ep) = if ((ep >= el))
1517+ then eo
1518+ else hU(eo, ek[ep])
1519+
1520+ func gZ (eo,ep) = if ((ep >= el))
1521+ then eo
15081522 else throw("List size exceeds 6")
15091523
1510- gX(gW(gW(gW(gW(gW(gW(ek, 0), 1), 2), 3), 4), 5), 6)
1524+ gZ(gY(gY(gY(gY(gY(gY(em, 0), 1), 2), 3), 4), 5), 6)
15111525 }
1512- func hV (eg,hj) = {
1513- let fZ = eg._1
1514- let hP = parseIntValue(hj)
1515- let hW = if ((size(hL) > fZ))
1516- then parseIntValue(hL[fZ])
1526+ func hX (ei,hl) = {
1527+ let gb = ei._1
1528+ let hR = parseIntValue(hl)
1529+ let hY = if ((size(hN) > gb))
1530+ then parseIntValue(hN[gb])
15171531 else 0
1518- let hX = if ((size(hN) > fZ))
1519- then parseIntValue(hN[fZ])
1532+ let hZ = if ((size(hP) > gb))
1533+ then parseIntValue(hP[gb])
15201534 else 0
1521- if ((hP == 0))
1522- then $Tuple4((fZ + 1), (eg._2 :+ toString(hW)), (eg._3 :+ toString(hX)), eg._4)
1523- else if ((hP > 0))
1524- then if ((hP > hX))
1525- then throw((((("Attempt to take " + hj) + " from backpack, but only ") + toString(hX)) + " available"))
1535+ if ((hR == 0))
1536+ then $Tuple4((gb + 1), (ei._2 :+ toString(hY)), (ei._3 :+ toString(hZ)), ei._4)
1537+ else if ((hR > 0))
1538+ then if ((hR > hZ))
1539+ then throw((((("Attempt to take " + hl) + " from backpack, but only ") + toString(hZ)) + " available"))
15261540 else {
1527- let fi = (dW((hW + hP), aU) - dW(hW, aU))
1528- $Tuple4((fZ + 1), (eg._2 :+ toString((hW + hP))), (eg._3 :+ toString((hX - hP))), (eg._4 + fi))
1541+ let fk = (dY((hY + hR), aU) - dY(hY, aU))
1542+ $Tuple4((gb + 1), (ei._2 :+ toString((hY + hR))), (ei._3 :+ toString((hZ - hR))), (ei._4 + fk))
15291543 }
1530- else if ((-(hP) > hW))
1531- then throw((((("Attempt to take " + toString(-(hP))) + " from warehouse, but only ") + toString(hW)) + " available"))
1544+ else if ((-(hR) > hY))
1545+ then throw((((("Attempt to take " + toString(-(hR))) + " from warehouse, but only ") + toString(hY)) + " available"))
15321546 else {
1533- let fi = (dW((hW + hP), aU) - dW(hW, aU))
1534- $Tuple4((fZ + 1), (eg._2 :+ toString((hW + hP))), (eg._3 :+ toString((hX - hP))), (eg._4 + fi))
1547+ let fk = (dY((hY + hR), aU) - dY(hY, aU))
1548+ $Tuple4((gb + 1), (ei._2 :+ toString((hY + hR))), (ei._3 :+ toString((hZ - hR))), (ei._4 + fk))
15351549 }
15361550 }
15371551
1538- let fJ = if ((size(hI) != 0))
1552+ let fL = if ((size(hK) != 0))
15391553 then {
1540- let ei = hI
1541- let ej = size(ei)
1542- let ek = $Tuple4(0, nil, nil, fF._4)
1543- func gZ (em,en) = if ((en >= ej))
1544- then em
1545- else hV(em, ei[en])
1546-
1547- func ha (em,en) = if ((en >= ej))
1548- then em
1554+ let ek = hK
1555+ let el = size(ek)
1556+ let em = $Tuple4(0, nil, nil, fH._4)
1557+ func hb (eo,ep) = if ((ep >= el))
1558+ then eo
1559+ else hX(eo, ek[ep])
1560+
1561+ func hc (eo,ep) = if ((ep >= el))
1562+ then eo
15491563 else throw("List size exceeds 50")
15501564
1551- ha(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(ek, 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)
1565+ hc(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(em, 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)
15521566 }
1553- else $Tuple4(0, hL, hN, fF._4)
1554- let hY = fJ._4
1555- if ((hY > go))
1556- then throw((((("Attempt to put total " + toString(hY)) + " stuff, but only ") + toString(go)) + " warehouse space left"))
1557- else $Tuple7(makeString(er._2, "_"), makeString(fF._2, "_"), makeString_2C(fJ._2, "_"), makeString(er._3, "_"), makeString(fF._3, "_"), makeString_2C(fJ._3, "_"), hY)
1567+ else $Tuple4(0, hN, hP, fH._4)
1568+ let ia = fL._4
1569+ if ((ia > gq))
1570+ then throw((((("Attempt to put total " + toString(ia)) + " stuff, but only ") + toString(gq)) + " warehouse space left"))
1571+ else $Tuple7(makeString(et._2, "_"), makeString(fH._2, "_"), makeString_2C(fL._2, "_"), makeString(et._3, "_"), makeString(fH._3, "_"), makeString_2C(fL._3, "_"), ia)
15581572 }
15591573 }
15601574
15611575
1562-func hZ (ia,ib) = {
1563- let bH = toString(ia)
1564- let ic = gu(toBigInt(ib))
1565- let id = valueOrElse(getInteger(dE()), (dD + 1))
1566- let dI = toString(id)
1567- let gD = toInt((ic % dx))
1568- let gc = gB(ic, gD)
1569- let cW = aM[gD]
1570- let ie = Issue(dV(dI, "S"), makeString([dI, "S", gc, cW], "_"), 1, 0, false)
1571- let bk = calculateAssetId(ie)
1572- let if = toBase58String(bk)
1573- $Tuple2([IntegerEntry(dE(), (id + 1)), ie, StringEntry(dH(dI), if), StringEntry(bj(if), bH), StringEntry(dK(dI), bH), IntegerEntry(bt(if), 0), IntegerEntry(dJ(if, bH), 0), ScriptTransfer(ia, 1, bk)], $Tuple2(if, cW))
1574- }
1575-
1576-
1577-func ig (bH,ih,ii) = if (!(sigVerify_8Kb(ih, ii, dp)))
1576+func ib (ic,id) = {
1577+ let bH = toString(ic)
1578+ let ie = gw(toBigInt(id))
1579+ let if = valueOrElse(getInteger(dG()), (dF + 1))
1580+ let dK = toString(if)
1581+ let gF = toInt((ie % dz))
1582+ let ge = gD(ie, gF)
1583+ let cX = aM[gF]
1584+ let ig = Issue(dX(dK, "S"), makeString([dK, "S", ge, cX], "_"), 1, 0, false)
1585+ let bk = calculateAssetId(ig)
1586+ let ih = toBase58String(bk)
1587+ $Tuple2([IntegerEntry(dG(), (if + 1)), ig, StringEntry(dJ(dK), ih), StringEntry(bj(ih), bH), StringEntry(dM(dK), bH), IntegerEntry(bt(ih), 0), IntegerEntry(dL(ih, bH), 0), ScriptTransfer(ic, 1, bk)], $Tuple2(ih, cX))
1588+ }
1589+
1590+
1591+func ii (bH,ij,ik) = if (!(sigVerify_8Kb(ij, ik, dr)))
15781592 then throw("signature does not match")
15791593 else {
1580- let eE = split(toUtf8String(ih), ";")
1581- let ij = split(eE[0], "|")
1582- let ik = split(ij[dR], "_")
1583- let il = parseIntValue(ik[0])
1584- let im = parseIntValue(ik[1])
1585- let in = split(eE[1], ":")
1586- let io = in[0]
1587- let ip = parseIntValue(ij[dS])
1588- if (if ((ip > (lastBlock.timestamp + dr)))
1594+ let eG = split(toUtf8String(ij), ";")
1595+ let il = split(eG[0], "|")
1596+ let im = split(il[dT], "_")
1597+ let in = parseIntValue(im[0])
1598+ let io = parseIntValue(im[1])
1599+ let ip = split(eG[1], ":")
1600+ let iq = ip[0]
1601+ let ir = parseIntValue(il[dU])
1602+ if (if ((ir > (lastBlock.timestamp + dt)))
15891603 then true
1590- else ((lastBlock.timestamp - dr) > ip))
1591- then throw(((("signature outdated: logTime=" + toString(ip)) + ", bcTime=") + toString(lastBlock.timestamp)))
1604+ else ((lastBlock.timestamp - dt) > ir))
1605+ then throw(((("signature outdated: logTime=" + toString(ir)) + ", bcTime=") + toString(lastBlock.timestamp)))
15921606 else {
1593- let iq = in[1]
1594- let ir = valueOrElse(getString(bi(bH)), "")
1595- if ((ir != iq))
1596- then throw(((("Tx ids don't match! In state: " + ir) + ", in msg: ") + iq))
1607+ let is = ip[1]
1608+ let it = valueOrElse(getString(bi(bH)), "")
1609+ if ((it != is))
1610+ then throw(((("Tx ids don't match! In state: " + it) + ", in msg: ") + is))
15971611 else {
15981612 let z = valueOrErrorMessage(getString(bC(bH)), "You don't have a duck staked")
1599- let is = y(z)
1600- let it = ae(valueOrElse(getInteger(C(z)), 0))
1601- let iu = valueOrElse(getInteger(is), it)
1602- if ((iu != il))
1603- then throw(((("oldHealth=" + toString(iu)) + " from state does not match one from flight log=") + toString(il)))
1604- else if ((0 >= il))
1613+ let iu = y(z)
1614+ let iv = ae(valueOrElse(getInteger(C(z)), 0))
1615+ let iw = valueOrElse(getInteger(iu), iv)
1616+ if ((iw != in))
1617+ then throw(((("oldHealth=" + toString(iw)) + " from state does not match one from flight log=") + toString(in)))
1618+ else if ((0 >= in))
16051619 then throw("You can't fly with zero health")
1606- else if (!(fL(z)))
1620+ else if (!(fN(z)))
16071621 then throw("Equipment incompatible")
16081622 else {
1609- let iv = if ((size(ij) > dT))
1610- then ij[dT]
1623+ let ix = if ((size(il) > dV))
1624+ then il[dV]
16111625 else ""
1612- let iw = if ((size(ij) > dU))
1613- then ij[dU]
1626+ let iy = if ((size(il) > dW))
1627+ then il[dW]
16141628 else ""
1615- let ix = if (if ((im > 0))
1616- then (iv == "$")
1629+ let iz = if (if ((io > 0))
1630+ then (ix == "$")
16171631 else false)
1618- then dc(invoke(cH, "sendUsdtPrize", [bH], nil))
1632+ then dd(invoke(cI, "sendUsdtPrize", [bH], nil))
16191633 else 0
1620- $Tuple5(im, z, ix, io, iw)
1634+ $Tuple5(io, z, iz, iq, iy)
16211635 }
16221636 }
16231637 }
16241638 }
16251639
16261640
1627-func iy (ia,ib,ih,ii) = {
1628- let bH = toString(ia)
1629- let gE = ig(bH, ih, ii)
1630- let z = gE._2
1631- let is = y(z)
1632- let hc = bD(z)
1633- let hF = hb(hc)
1634- let iz = split(hF[bg], "_")
1635- let iA = makeString(es(true, iz, dv), "_")
1636- let fM = E(z)
1637- let iB = valueOrElse(getString(fM), ",;,_,;,_,;,_,;,_,;,_,;,")
1638- let iC = ez(iB, gE._5)
1639- let iD = iC._1
1640- let iE = iC._2
1641- if ((0 >= gE._1))
1642- then $Tuple3([IntegerEntry(is, 0), StringEntry(fM, iD)], "", 0)
1641+func iA (ic,id,ij,ik) = {
1642+ let bH = toString(ic)
1643+ let gG = ii(bH, ij, ik)
1644+ let z = gG._2
1645+ let iu = y(z)
1646+ let he = bD(z)
1647+ let hH = hd(he)
1648+ let iB = split(hH[bg], "_")
1649+ let iC = makeString(eu(true, iB, dx), "_")
1650+ let fO = E(z)
1651+ let iD = valueOrElse(getString(fO), ",;,_,;,_,;,_,;,_,;,_,;,")
1652+ let iE = eB(iD, gG._5)
1653+ let iF = iE._1
1654+ let iG = iE._2
1655+ if ((0 >= gG._1))
1656+ then $Tuple3([IntegerEntry(iu, 0), StringEntry(fO, iF)], "", 0)
16431657 else {
1644- let iF = hZ(ia, ib)
1645- let if = iF._2._1
1646- $Tuple3((iF._1 ++ (if (iE)
1658+ let iH = ib(ic, id)
1659+ let ih = iH._2._1
1660+ $Tuple3((iH._1 ++ (if (iG)
16471661 then [StringEntry(K(z), "0_0_0_0_0")]
1648- else ((((nil :+ StringEntry(bE(z), makeString([iF._2._2, "L", if], "_"))) :+ IntegerEntry(is, gE._1)) :+ StringEntry(fM, iD)) :+ StringEntry(hc, makeString([hF[be], hF[bf], iA, hF[bh]], ":"))))), if, gE._3)
1649- }
1650- }
1651-
1652-
1653-func iG (O,iH) = {
1654- let hr = valueOrElse(getInteger(bt(O)), 0)
1655- let iI = valueOrElse(getInteger(bn(aC, O)), 0)
1656- let iJ = (hr / 6)
1657- let iK = (hr / 7)
1658- ((aF + fraction(aF, ((hr + iJ) + (2 * iK)), 5)) + fraction(aF, iI, (iH * 5)))
1659- }
1660-
1661-
1662-func iL (b,iM,iN) = {
1663- let iO = if ((iM == dO))
1664- then $Tuple2(iN, valueOrElse(getString(bC(b)), ""))
1662+ else ((((nil :+ StringEntry(bE(z), makeString([iH._2._2, "L", ih], "_"))) :+ IntegerEntry(iu, gG._1)) :+ StringEntry(fO, iF)) :+ StringEntry(he, makeString([hH[be], hH[bf], iC, hH[bh]], ":"))))), ih, gG._3)
1663+ }
1664+ }
1665+
1666+
1667+func iI (O,iJ) = {
1668+ let ht = valueOrElse(getInteger(bt(O)), 0)
1669+ let iK = valueOrElse(getInteger(bn(aC, O)), 0)
1670+ let iL = (ht / 6)
1671+ let iM = (ht / 7)
1672+ ((aF + fraction(aF, ((ht + iL) + (2 * iM)), 5)) + fraction(aF, iK, (iJ * 5)))
1673+ }
1674+
1675+
1676+func iN (b,iO,iP) = {
1677+ let iQ = if ((iO == dQ))
1678+ then $Tuple2(iP, valueOrElse(getString(bC(b)), ""))
16651679 else {
16661680 let z = valueOrErrorMessage(getString(bC(b)), "You don't have a duck staked")
1667- let iP = valueOrElse(getString(bE(z)), aI)
1668- let iQ = split(value(iP), "_")
1669- if ((iQ[bX] != "L"))
1670- then throw((("Duck location type is " + iQ[bX]) + ", but should be L"))
1671- else $Tuple2(iQ[bY], z)
1672- }
1673- let O = iO._1
1674- let iR = iO._2
1675- let iS = value(assetInfo(fromBase58String(O)))
1676- let iT = bm(O)
1677- let iU = valueOrErrorMessage(getInteger(iT), (("Land " + iS.name) + " is not staked"))
1678- let iV = valueOrErrorMessage(getString(bj(O)), (("NFT " + iS.name) + " is orphaned"))
1679- if ((iV != b))
1681+ let iR = valueOrElse(getString(bE(z)), aI)
1682+ let iS = split(value(iR), "_")
1683+ if ((iS[bX] != "L"))
1684+ then throw((("Duck location type is " + iS[bX]) + ", but should be L"))
1685+ else $Tuple2(iS[bY], z)
1686+ }
1687+ let O = iQ._1
1688+ let iT = iQ._2
1689+ let iU = value(assetInfo(fromBase58String(O)))
1690+ let iV = bm(O)
1691+ let iW = valueOrErrorMessage(getInteger(iV), (("Land " + iU.name) + " is not staked"))
1692+ let iX = valueOrErrorMessage(getString(bj(O)), (("NFT " + iU.name) + " is orphaned"))
1693+ if ((iX != b))
16801694 then throw((aA + " is not yours"))
16811695 else {
1682- let iW = split(iS.description, "_")
1683- $Tuple4(iR, O, iW, iU)
1684- }
1685- }
1686-
1687-
1688-func iX (b,dX,iM,iN) = if ((0 > dX))
1696+ let iY = split(iU.description, "_")
1697+ $Tuple4(iT, O, iY, iW)
1698+ }
1699+ }
1700+
1701+
1702+func iZ (b,dZ,iO,iP) = if ((0 > dZ))
16891703 then throw("Negative amount")
16901704 else {
1691- let fp = iL(b, iM, iN)
1692- let df = fp._3[cN]
1693- let fV = gb(fp._3[cO])
1694- let gf = (lastBlock.timestamp - fp._4)
1695- if ((0 > gf))
1696- then throw(((("Saved timestamp is in future, saved = " + toString(fp._4)) + ", current = ") + toString(lastBlock.timestamp)))
1705+ let fr = iN(b, iO, iP)
1706+ let dh = fr._3[cO]
1707+ let fX = gd(fr._3[cP])
1708+ let gh = (lastBlock.timestamp - fr._4)
1709+ if ((0 > gh))
1710+ then throw(((("Saved timestamp is in future, saved = " + toString(fr._4)) + ", current = ") + toString(lastBlock.timestamp)))
16971711 else {
1698- let iH = de(df)
1699- let iY = iG(fp._2, iH)
1700- let iZ = fraction(gf, (iY * iH), aG)
1701- if ((dX > iZ))
1702- then throw(((("Not enough resources, available = " + toString(iZ)) + ", requested = ") + toString(dX)))
1712+ let iJ = dg(dh)
1713+ let ja = iI(fr._2, iJ)
1714+ let jb = fraction(gh, (ja * iJ), aG)
1715+ if ((dZ > jb))
1716+ then throw(((("Not enough resources, available = " + toString(jb)) + ", requested = ") + toString(dZ)))
17031717 else {
1704- let ja = fraction((iZ - dX), aG, (iY * iH))
1705- let jb = (lastBlock.timestamp - ja)
1706- let hq = (iH / cm)
1707- let gn = gj(fV, (gf - ja), hq, iY)
1708- let hp = bs(fp._2)
1709- let hr = valueOrElse(getInteger(bt(fp._2)), 0)
1710- let hg = ho(hp, hq, hr)
1711- let hx = split(hg[aZ], "_")
1712- let go = parseIntValue(hx[bc])
1713- if (if ((iM == dO))
1714- then (dX > go)
1718+ let jc = fraction((jb - dZ), aG, (ja * iJ))
1719+ let jd = (lastBlock.timestamp - jc)
1720+ let hs = (iJ / cn)
1721+ let gp = gl(fX, (gh - jc), hs, ja)
1722+ let hr = bs(fr._2)
1723+ let ht = valueOrElse(getInteger(bt(fr._2)), 0)
1724+ let hi = hq(hr, hs, ht)
1725+ let hz = split(hi[aZ], "_")
1726+ let gq = parseIntValue(hz[bc])
1727+ if (if ((iO == dQ))
1728+ then (dZ > gq)
17151729 else false)
1716- then throw((("Only " + toString(go)) + " space left in warehouse"))
1730+ then throw((("Only " + toString(gq)) + " space left in warehouse"))
17171731 else {
1718- let hc = bD(fp._1)
1719- let hF = hb(hc)
1720- let gm = split(hF[bf], "_")
1721- let gl = split(hg[aW], "_")
1722- let jc = if ((iM == dO))
1723- then $Tuple4(gd(gl, fV, (gf - ja), hq, iY), hF[bf], (parseIntValue(hx[bb]) + gn._2), (parseIntValue(hx[bc]) - gn._2))
1724- else if ((iM == dP))
1725- then $Tuple4(hg[aW], gd(gm, fV, (gf - ja), hq, iY), parseIntValue(hx[bb]), parseIntValue(hx[bc]))
1732+ let he = bD(fr._1)
1733+ let hH = hd(he)
1734+ let go = split(hH[bf], "_")
1735+ let gn = split(hi[aW], "_")
1736+ let je = if ((iO == dQ))
1737+ then $Tuple4(gf(gn, fX, (gh - jc), hs, ja), hH[bf], (parseIntValue(hz[bb]) + gp._2), (parseIntValue(hz[bc]) - gp._2))
1738+ else if ((iO == dR))
1739+ then $Tuple4(hi[aW], gf(go, fX, (gh - jc), hs, ja), parseIntValue(hz[bb]), parseIntValue(hz[bc]))
17261740 else {
1727- let jd = gk(gl, gm, gn, go)
1728- let je = min([parseIntValue(hx[bc]), gn._2])
1729- $Tuple4(jd._1, jd._2, (parseIntValue(hx[bb]) + je), (parseIntValue(hx[bc]) - je))
1741+ let jf = gm(gn, go, gp, gq)
1742+ let jg = min([parseIntValue(hz[bc]), gp._2])
1743+ $Tuple4(jf._1, jf._2, (parseIntValue(hz[bb]) + jg), (parseIntValue(hz[bc]) - jg))
17301744 }
1731- let jf = jc._1
1732- let jg = jc._2
1733- let jh = jc._3
1734- let ji = jc._4
1735- $Tuple5([IntegerEntry(bm(fp._2), jb), IntegerEntry(bp(aA, fp._2, b), jb)], hc, [hF[be], jg, hF[bg], hF[bh]], hp, [hg[aV], jf, hg[aX], hg[aY], makeString([hx[ba], toString(jh), toString(ji), hx[bd]], "_")])
1745+ let jh = je._1
1746+ let ji = je._2
1747+ let jj = je._3
1748+ let jk = je._4
1749+ $Tuple5([IntegerEntry(bm(fr._2), jd), IntegerEntry(bp(aA, fr._2, b), jd)], he, [hH[be], ji, hH[bg], hH[bh]], hr, [hi[aV], jh, hi[aX], hi[aY], makeString([hz[ba], toString(jj), toString(jk), hz[bd]], "_")])
17361750 }
17371751 }
17381752 }
17391753 }
17401754
17411755
1742-func jj (b,O,iH,iM) = {
1743- let iT = bm(O)
1744- let iU = value(getInteger(iT))
1745- let iZ = (fraction((lastBlock.timestamp - iU), iG(O, iH), aG) * iH)
1746- iX(b, iZ, iM, O)
1747- }
1748-
1749-
1750-func jk (et,ia,jl,O) = {
1751- let b = toString(ia)
1752- let fp = iL(b, dQ, O)
1753- let iH = de(fp._3[cN])
1754- let jm = bt(fp._2)
1755- let jn = valueOrElse(getInteger(jm), 0)
1756- if (if (!(cc))
1757- then (jn >= 3)
1756+func jl (b,O,iJ,iO) = {
1757+ let iV = bm(O)
1758+ let iW = value(getInteger(iV))
1759+ let jb = (fraction((lastBlock.timestamp - iW), iI(O, iJ), aG) * iJ)
1760+ iZ(b, jb, iO, O)
1761+ }
1762+
1763+
1764+func jm (ev,ic,jn,O) = {
1765+ let b = toString(ic)
1766+ let fr = iN(b, dS, O)
1767+ let iJ = dg(fr._3[cO])
1768+ let jo = bt(fr._2)
1769+ let jp = valueOrElse(getInteger(jo), 0)
1770+ if (if (!(cd))
1771+ then (jp >= 3)
17581772 else false)
17591773 then throw("Currently max infrastructure level = 3")
17601774 else {
1761- let jo = ((sqrt(iH, 0, 0, DOWN) / 5) + 2)
1762- let aj = (jn + 1)
1763- if (if (cc)
1764- then (aj > jo)
1775+ let jq = ((sqrt(iJ, 0, 0, DOWN) / 5) + 2)
1776+ let aj = (jp + 1)
1777+ if (if (cd)
1778+ then (aj > jq)
17651779 else false)
1766- then throw(("Currently max infrastructure level = " + toString(jo)))
1780+ then throw(("Currently max infrastructure level = " + toString(jq)))
17671781 else {
1768- let jp = fraction(du, (iH * aj), cm)
1769- if (if (!(et))
1770- then (jl != jp)
1782+ let jr = fraction(dw, (iJ * aj), cn)
1783+ if (if (!(ev))
1784+ then (jn != jr)
17711785 else false)
1772- then throw(("Payment attached should be " + toString(jp)))
1786+ then throw(("Payment attached should be " + toString(jr)))
17731787 else {
1774- let hc = bD(fp._1)
1775- let hF = hb(hc)
1776- let iz = split(hF[bg], "_")
1777- let jq = fraction(ch, (iH * aj), cm)
1778- let iA = makeString(es(et, iz, jq), "_")
1779- let jr = jj(b, fp._2, iH, dQ)
1780- let js = jr._5
1781- let jt = hd(js[aV])
1782- let ju = makeString([split(js[aV], "_")[0], toString(aj)], "_")
1783- let jv = hd(ju)
1784- let hx = split(js[aZ], "_")
1785- let jw = makeString([hx[ba], hx[bb], toString(((parseIntValue(hx[bc]) + jv) - jt)), toString(jv)], "_")
1786- $Tuple3(([IntegerEntry(jm, aj), IntegerEntry(dJ(fp._2, b), aj), StringEntry(hc, makeString([hF[be], jr._3[bf], iA, hF[bh]], ":")), StringEntry(jr._4, makeString([ju, js[aW], js[aX], js[aY], jw], ":"))] ++ jr._1), aj, jq)
1788+ let he = bD(fr._1)
1789+ let hH = hd(he)
1790+ let iB = split(hH[bg], "_")
1791+ let js = fraction(ci, (iJ * aj), cn)
1792+ let iC = makeString(eu(ev, iB, js), "_")
1793+ let jt = jl(b, fr._2, iJ, dS)
1794+ let ju = jt._5
1795+ let jv = hf(ju[aV])
1796+ let jw = makeString([split(ju[aV], "_")[0], toString(aj)], "_")
1797+ let jx = hf(jw)
1798+ let hz = split(ju[aZ], "_")
1799+ let jy = makeString([hz[ba], hz[bb], toString(((parseIntValue(hz[bc]) + jx) - jv)), toString(jx)], "_")
1800+ $Tuple3(([IntegerEntry(jo, aj), IntegerEntry(dL(fr._2, b), aj), StringEntry(he, makeString([hH[be], jt._3[bf], iC, hH[bh]], ":")), StringEntry(jt._4, makeString([jw, ju[aW], ju[aX], ju[aY], jy], ":"))] ++ jt._1), aj, js)
17871801 }
17881802 }
17891803 }
17901804 }
17911805
17921806
1793-func jx (z,jy) = {
1794- let jz = C(z)
1795- let jA = B(z)
1796- let ad = valueOrElse(getInteger(al, jA), 0)
1797- let ai = (ad + jy)
1798- let jB = ag(valueOrElse(getInteger(al, jz), 0), ai)
1799- let jC = D(z)
1800- $Tuple2([IntegerEntry(jz, jB[0]), IntegerEntry(jA, ai), IntegerEntry(jC, (valueOrElse(getInteger(jC), 0) + jB[1]))], ai)
1801- }
1802-
1803-
1804-func jD (b,jy) = {
1805- let jz = G(b)
1806- let jA = F(b)
1807- let ad = valueOrElse(getInteger(al, jA), 0)
1808- let ai = (ad + jy)
1809- let jB = ag(valueOrElse(getInteger(al, jz), 0), ai)
1810- let jC = H(b)
1811- $Tuple2([IntegerEntry(jz, jB[0]), IntegerEntry(jA, ai), IntegerEntry(jC, (valueOrElse(getInteger(jC), 0) + jB[1]))], ai)
1812- }
1813-
1814-
1815-func jE (b) = {
1807+func jz (z,jA) = {
1808+ let jB = C(z)
1809+ let jC = B(z)
1810+ let ad = valueOrElse(getInteger(al, jC), 0)
1811+ let ai = (ad + jA)
1812+ let jD = ag(valueOrElse(getInteger(al, jB), 0), ai)
1813+ let jE = D(z)
1814+ $Tuple2([IntegerEntry(jB, jD[0]), IntegerEntry(jC, ai), IntegerEntry(jE, (valueOrElse(getInteger(jE), 0) + jD[1]))], ai)
1815+ }
1816+
1817+
1818+func jF (b,jA) = {
1819+ let jB = G(b)
1820+ let jC = F(b)
1821+ let ad = valueOrElse(getInteger(al, jC), 0)
1822+ let ai = (ad + jA)
1823+ let jD = ag(valueOrElse(getInteger(al, jB), 0), ai)
1824+ let jE = H(b)
1825+ $Tuple2([IntegerEntry(jB, jD[0]), IntegerEntry(jC, ai), IntegerEntry(jE, (valueOrElse(getInteger(jE), 0) + jD[1]))], ai)
1826+ }
1827+
1828+
1829+func jG (b) = {
18161830 let z = valueOrErrorMessage(getString(bC(b)), "You don't have a duck staked")
1817- let jF = bx(b)
1818- let jG = getString(jF)
1819- if (!(isDefined(jG)))
1831+ let jH = bx(b)
1832+ let jI = getString(jH)
1833+ if (!(isDefined(jI)))
18201834 then throw("You are not eligible for ONBOARD artifact")
18211835 else {
1822- let jH = bz(b)
1823- let jI = getString(jH)
1824- if (isDefined(jI))
1825- then throw(("You already used your ONBOARD artifact on duck " + value(jI)))
1836+ let jJ = bz(b)
1837+ let jK = getString(jJ)
1838+ if (isDefined(jK))
1839+ then throw(("You already used your ONBOARD artifact on duck " + value(jK)))
18261840 else {
1827- let jJ = by(z)
1828- let jK = getString(jJ)
1829- if (isDefined(jK))
1830- then throw(((("The duck " + z) + " already got points from ONBOARD artifact from user ") + value(jK)))
1831- else ([StringEntry(jH, z), StringEntry(jJ, b)] ++ jx(z, aa)._1)
1841+ let jL = by(z)
1842+ let jM = getString(jL)
1843+ if (isDefined(jM))
1844+ then throw(((("The duck " + z) + " already got points from ONBOARD artifact from user ") + value(jM)))
1845+ else ([StringEntry(jJ, z), StringEntry(jL, b)] ++ jz(z, aa)._1)
18321846 }
18331847 }
18341848 }
18351849
18361850
1837-func jL (b,iN) = {
1838- let fp = iL(b, dQ, iN)
1839- let O = fp._2
1840- let iH = de(fp._3[cN])
1841- let jM = bn(aC, O)
1842- if ((valueOrElse(getInteger(jM), 0) > 0))
1851+func jN (b,iP) = {
1852+ let fr = iN(b, dS, iP)
1853+ let O = fr._2
1854+ let iJ = dg(fr._3[cO])
1855+ let jO = bn(aC, O)
1856+ if ((valueOrElse(getInteger(jO), 0) > 0))
18431857 then throw("Presale artifact is already activated")
1844- else if ((parseIntValue(fp._3[cM]) > dD))
1858+ else if ((parseIntValue(fr._3[cN]) > dF))
18451859 then throw((((aA + " ") + O) + " is not eligible for presale artifact"))
18461860 else {
1847- let jr = jj(b, O, iH, dQ)
1848- (((jr._1 :+ IntegerEntry(jM, iH)) :+ StringEntry(jr._2, makeString(jr._3, ":"))) :+ StringEntry(jr._4, makeString(jr._5, ":")))
1861+ let jt = jl(b, O, iJ, dS)
1862+ (((jt._1 :+ IntegerEntry(jO, iJ)) :+ StringEntry(jt._2, makeString(jt._3, ":"))) :+ StringEntry(jt._4, makeString(jt._5, ":")))
18491863 }
18501864 }
18511865
18521866
1853-func jN (z) = {
1854- let jO = valueOrElse(getInteger(cL, bJ), 0)
1855- let iP = split(valueOrElse(getString(bE(z)), aI), "_")
1867+func jP (z) = {
1868+ let jQ = valueOrElse(getInteger(cM, bJ), 0)
1869+ let iR = split(valueOrElse(getString(bE(z)), aI), "_")
18561870 let av = lastBlock.timestamp
1857- let jP = bP(cL, jO)
1858- let bR = jP[bN]
1859- let bS = jP[bO]
1860- if ((iP[bX] != "T"))
1871+ let jR = bP(cM, jQ)
1872+ let bR = jR[bN]
1873+ let bS = jR[bO]
1874+ if ((iR[bX] != "T"))
18611875 then false
1862- else {
1863- let ey = if (if (if ((parseIntValue(iP[bW]) == jO))
1864- then (bS[bU] == "INPROGRESS")
1865- else false)
1866- then (parseIntValue(bR[bT]) > av)
1867- else false)
1868- then throw("Your duck is taking part in the tournament")
1869- else invoke(this, "exitTournamentInternal", [z], nil)
1870- if ((ey == ey))
1871- then false
1872- else throw("Strict value is not equal to itself.")
1873- }
1874- }
1875-
1876-
1877-func jQ (jR,aj,jS,b,jT,jU) = {
1876+ else if (if (if ((parseIntValue(iR[bW]) == jQ))
1877+ then (bS[bU] == "INPROGRESS")
1878+ else false)
1879+ then (parseIntValue(bR[bT]) > av)
1880+ else false)
1881+ then throw("Your duck is taking part in the tournament")
1882+ else df(invoke(this, "exitTournamentInternal", [z], nil))
1883+ }
1884+
1885+
1886+func jS (jT,aj,jU,b,jV,jW) = {
18781887 let z = valueOrErrorMessage(getString(bC(b)), "You don't have a duck staked")
1879- if (jN(z))
1888+ if (jP(z))
18801889 then throw("mergeInternal_checkTournament")
18811890 else {
1882- func jV (eg,O) = {
1883- let iS = value(assetInfo(fromBase58String(O)))
1884- let iT = bm(O)
1885- let iU = valueOrErrorMessage(getInteger(iT), (("NFT " + iS.name) + " is not staked"))
1886- let iV = valueOrErrorMessage(getString(bj(O)), (("NFT " + iS.name) + " is orphaned"))
1887- if ((iV != b))
1891+ func jX (ei,O) = {
1892+ let iU = value(assetInfo(fromBase58String(O)))
1893+ let iV = bm(O)
1894+ let iW = valueOrErrorMessage(getInteger(iV), (("NFT " + iU.name) + " is not staked"))
1895+ let iX = valueOrErrorMessage(getString(bj(O)), (("NFT " + iU.name) + " is orphaned"))
1896+ if ((iX != b))
18881897 then throw((aA + " is not yours"))
18891898 else {
1890- let iW = split(iS.description, "_")
1891- let cW = iW[cP]
1892- if (if ((eg._3 != ""))
1893- then (eg._3 != cW)
1899+ let iY = split(iU.description, "_")
1900+ let cX = iY[cQ]
1901+ if (if ((ei._3 != ""))
1902+ then (ei._3 != cX)
18941903 else false)
18951904 then throw("Lands should be on the same continent to merge")
18961905 else {
1897- let df = iW[cN]
1898- let jW = eg._1
1899- let fZ = valueOrErrorMessage(indexOf(jW, df), "You haven't passed all the lands needed")
1900- let jX = (take(jW, fZ) + drop(jW, (fZ + 1)))
1901- let iH = de(df)
1902- let jY = (eg._2 + valueOrElse(getInteger(bn(aC, O)), 0))
1903- let hr = valueOrElse(getInteger(bt(O)), 0)
1904- let jZ = {
1905- let cf = df
1906- if (("S" == cf))
1906+ let dh = iY[cO]
1907+ let jY = ei._1
1908+ let gb = valueOrErrorMessage(indexOf(jY, dh), "You haven't passed all the lands needed")
1909+ let jZ = (take(jY, gb) + drop(jY, (gb + 1)))
1910+ let iJ = dg(dh)
1911+ let ka = (ei._2 + valueOrElse(getInteger(bn(aC, O)), 0))
1912+ let ht = valueOrElse(getInteger(bt(O)), 0)
1913+ let kb = {
1914+ let cg = dh
1915+ if (("S" == cg))
19071916 then 3
1908- else if (("M" == cf))
1917+ else if (("M" == cg))
19091918 then 4
1910- else if (("L" == cf))
1919+ else if (("L" == cg))
19111920 then 5
1912- else if (("XL" == cf))
1921+ else if (("XL" == cg))
19131922 then 6
19141923 else throw("Only S, M, L, XL can merge")
19151924 }
1916- if ((hr != jZ))
1925+ if ((ht != kb))
19171926 then throw("All lands should be maxed to merge")
19181927 else {
1919- let dI = iW[cM]
1920- let fV = gb(iW[cO])
1921- let gf = (lastBlock.timestamp - iU)
1922- if ((0 > gf))
1923- then throw(((("Saved timestamp is in future, saved = " + toString(iU)) + ", current = ") + toString(lastBlock.timestamp)))
1928+ let dK = iY[cN]
1929+ let fX = gd(iY[cP])
1930+ let gh = (lastBlock.timestamp - iW)
1931+ if ((0 > gh))
1932+ then throw(((("Saved timestamp is in future, saved = " + toString(iW)) + ", current = ") + toString(lastBlock.timestamp)))
19241933 else {
1925- let iY = iG(O, iH)
1926- let hq = (iH / cm)
1927- let jg = gd(split(eg._4, "_"), fV, gf, hq, iY)
1928- let eq = fT(eg._6, fV, hq, -1)
1929- let ka = fT(eg._10, fV, hq, -1)
1930- let gJ = fT(eg._9, fV, hq, 1)
1931- let kb = eg._7
1932- let cG = indexOf(kb, O)
1933- if (!(isDefined(cG)))
1934+ let ja = iI(O, iJ)
1935+ let hs = (iJ / cn)
1936+ let ji = gf(split(ei._4, "_"), fX, gh, hs, ja)
1937+ let es = fV(ei._6, fX, hs, -1)
1938+ let kc = fV(ei._10, fX, hs, -1)
1939+ let gL = fV(ei._9, fX, hs, 1)
1940+ let kd = ei._7
1941+ let cH = indexOf(kd, O)
1942+ if (!(isDefined(cH)))
19341943 then throw(("Your staked lands don't contain " + O))
19351944 else {
1936- let kc = bl(O)
1937- let kd = valueOrElse(getString(kc), "")
1938- $Tuple10(jX, jY, cW, jg, ((((((((((((eg._5 :+ DeleteEntry(bm(O))) :+ DeleteEntry(bp(aA, O, b))) :+ DeleteEntry(dH(dI))) :+ DeleteEntry(bj(O))) :+ DeleteEntry(bt(O))) :+ DeleteEntry(dJ(O, b))) :+ DeleteEntry(bn(aC, O))) :+ DeleteEntry(dK(dI))) :+ DeleteEntry(bs(O))) :+ DeleteEntry(kc)) :+ Burn(fromBase58String(O), 1)) ++ (if ((kd != ""))
1939- then [DeleteEntry(dF(kd))]
1940- else nil)), eq, removeByIndex(kb, value(cG)), (eg._8 + iH), gJ, ka)
1945+ let ke = bl(O)
1946+ let kf = valueOrElse(getString(ke), "")
1947+ $Tuple10(jZ, ka, cX, ji, ((((((((((((ei._5 :+ DeleteEntry(bm(O))) :+ DeleteEntry(bp(aA, O, b))) :+ DeleteEntry(dJ(dK))) :+ DeleteEntry(bj(O))) :+ DeleteEntry(bt(O))) :+ DeleteEntry(dL(O, b))) :+ DeleteEntry(bn(aC, O))) :+ DeleteEntry(dM(dK))) :+ DeleteEntry(bs(O))) :+ DeleteEntry(ke)) :+ Burn(fromBase58String(O), 1)) ++ (if ((kf != ""))
1948+ then [DeleteEntry(dH(kf))]
1949+ else nil)), es, removeByIndex(kd, value(cH)), (ei._8 + iJ), gL, kc)
19411950 }
19421951 }
19431952 }
19451954 }
19461955 }
19471956
1948- let hc = bD(z)
1949- let hF = hb(hc)
1950- let fU = split(valueOrElse(getString(cU()), "0_0_0_0_0_0"), "_")
1951- let ke = cX(b)
1952- let kf = getString(ke)
1953- let kg = if (isDefined(kf))
1954- then split_51C(value(kf), "_")
1957+ let he = bD(z)
1958+ let hH = hd(he)
1959+ let fW = split(valueOrElse(getString(cV()), "0_0_0_0_0_0"), "_")
1960+ let kg = cY(b)
1961+ let kh = getString(kg)
1962+ let ki = if (isDefined(kh))
1963+ then split_51C(value(kh), "_")
19551964 else nil
1956- let kh = split(value(assetInfo(fromBase58String(jT[0]))).description, "_")[cP]
1957- let ki = split(valueOrElse(getString(cV(kh)), "0_0_0_0_0_0"), "_")
1958- let er = {
1959- let ei = jT
1960- let ej = size(ei)
1961- let ek = $Tuple10(jS, 0, "", hF[bf], nil, fU, kg, 0, split("0_0_0_0_0_0", "_"), ki)
1962- func el (em,en) = if ((en >= ej))
1963- then em
1964- else jV(em, ei[en])
1965-
1966- func eo (em,en) = if ((en >= ej))
1967- then em
1965+ let kj = split(value(assetInfo(fromBase58String(jV[0]))).description, "_")[cQ]
1966+ let kk = split(valueOrElse(getString(cW(kj)), "0_0_0_0_0_0"), "_")
1967+ let et = {
1968+ let ek = jV
1969+ let el = size(ek)
1970+ let em = $Tuple10(jU, 0, "", hH[bf], nil, fW, ki, 0, split("0_0_0_0_0_0", "_"), kk)
1971+ func en (eo,ep) = if ((ep >= el))
1972+ then eo
1973+ else jX(eo, ek[ep])
1974+
1975+ func eq (eo,ep) = if ((ep >= el))
1976+ then eo
19681977 else throw("List size exceeds 5")
19691978
1970- eo(el(el(el(el(el(ek, 0), 1), 2), 3), 4), 5)
1979+ eq(en(en(en(en(en(em, 0), 1), 2), 3), 4), 5)
19711980 }
1972- let cW = er._3
1973- let gD = valueOrErrorMessage(indexOf(aM, cW), ("Unknown continent: " + cW))
1974- let gc = gI(er._9, (de(jR) / cm))
1975- let id = valueOrElse(getInteger(dE()), (dD + 1))
1976- let kj = toString(id)
1977- let ie = Issue(dV(kj, jR), makeString([kj, jR, gc, cW], "_"), 1, 0, false)
1978- let bk = calculateAssetId(ie)
1979- let kk = toBase58String(bk)
1980- let iA = makeString(es((jU > 0), split(hF[bg], "_"), jU), "_")
1981- let kl = cY(b)
1982- let km = valueOrElse(getInteger(kl), 0)
1983- $Tuple2((((((((((((((((er._5 :+ (if ((size(er._7) > 0))
1984- then StringEntry(ke, makeString_11C(er._7, "_"))
1985- else DeleteEntry(ke))) :+ IntegerEntry(kl, if ((er._8 > km))
1981+ let cX = et._3
1982+ let gF = valueOrErrorMessage(indexOf(aM, cX), ("Unknown continent: " + cX))
1983+ let ge = gK(et._9, (dg(jT) / cn))
1984+ let if = valueOrElse(getInteger(dG()), (dF + 1))
1985+ let kl = toString(if)
1986+ let ig = Issue(dX(kl, jT), makeString([kl, jT, ge, cX], "_"), 1, 0, false)
1987+ let bk = calculateAssetId(ig)
1988+ let km = toBase58String(bk)
1989+ let iC = makeString(eu((jW > 0), split(hH[bg], "_"), jW), "_")
1990+ let kn = cZ(b)
1991+ let ko = valueOrElse(getInteger(kn), 0)
1992+ $Tuple2((((((((((((((((et._5 :+ (if ((size(et._7) > 0))
1993+ then StringEntry(kg, makeString_11C(et._7, "_"))
1994+ else DeleteEntry(kg))) :+ IntegerEntry(kn, if ((et._8 > ko))
19861995 then 0
1987- else (km - er._8))) :+ IntegerEntry(dE(), (id + 1))) :+ ie) :+ StringEntry(dH(kj), kk)) :+ StringEntry(bj(kk), b)) :+ StringEntry(dK(kj), b)) :+ IntegerEntry(bn(aC, kk), er._2)) :+ IntegerEntry(bt(kk), aj)) :+ IntegerEntry(dJ(kk, b), aj)) :+ StringEntry(hc, makeString([hF[be], er._4, iA, hF[bh]], ":"))) :+ StringEntry(cU(), makeString(er._6, "_"))) :+ StringEntry(cV(cW), makeString(er._10, "_"))) :+ StringEntry(bE(z), makeString([cW, "L", kk], "_"))) :+ ScriptTransfer(addressFromStringValue(b), 1, bk)), kk)
1988- }
1989- }
1990-
1991-
1992-func kn (b,jT) = jQ("M", 3, "SSSS", b, jT, 0)
1993-
1994-
1995-func ko (b,jT) = jQ("L", 4, "SMM", b, jT, (ch * 4))
1996-
1997-
1998-func kp (b,jT) = jQ("XL", 5, "SSSML", b, jT, (ch * 47))
1999-
2000-
2001-func kq (b,jT) = jQ("XXL", 6, "LXL", b, jT, (ch * 54))
2002-
2003-
2004-func kr (b,jT) = {
2005- let cf = size(jT)
2006- if ((4 == cf))
2007- then kn(b, jT)
2008- else if ((3 == cf))
2009- then ko(b, jT)
2010- else if ((5 == cf))
2011- then kp(b, jT)
2012- else if ((2 == cf))
2013- then kq(b, jT)
1996+ else (ko - et._8))) :+ IntegerEntry(dG(), (if + 1))) :+ ig) :+ StringEntry(dJ(kl), km)) :+ StringEntry(bj(km), b)) :+ StringEntry(dM(kl), b)) :+ IntegerEntry(bn(aC, km), et._2)) :+ IntegerEntry(bt(km), aj)) :+ IntegerEntry(dL(km, b), aj)) :+ StringEntry(he, makeString([hH[be], et._4, iC, hH[bh]], ":"))) :+ StringEntry(cV(), makeString(et._6, "_"))) :+ StringEntry(cW(cX), makeString(et._10, "_"))) :+ StringEntry(bE(z), makeString([cX, "L", km], "_"))) :+ ScriptTransfer(addressFromStringValue(b), 1, bk)), km)
1997+ }
1998+ }
1999+
2000+
2001+func kp (b,jV) = jS("M", 3, "SSSS", b, jV, 0)
2002+
2003+
2004+func kq (b,jV) = jS("L", 4, "SMM", b, jV, (ci * 4))
2005+
2006+
2007+func kr (b,jV) = jS("XL", 5, "SSSML", b, jV, (ci * 47))
2008+
2009+
2010+func ks (b,jV) = jS("XXL", 6, "LXL", b, jV, (ci * 54))
2011+
2012+
2013+func kt (b,jV) = {
2014+ let cg = size(jV)
2015+ if ((4 == cg))
2016+ then kp(b, jV)
2017+ else if ((3 == cg))
2018+ then kq(b, jV)
2019+ else if ((5 == cg))
2020+ then kr(b, jV)
2021+ else if ((2 == cg))
2022+ then ks(b, jV)
20142023 else throw("Unknown merge")
20152024 }
20162025
20172026
2018-func ks (fZ) = if (if ((fZ.originCaller != cH))
2027+func ku (gb) = if (if ((gb.originCaller != cI))
20192028 then valueOrElse(getBoolean(bF()), false)
20202029 else false)
20212030 then throw("Contracts are under maintenance")
2022- else StringEntry(bi(toString(fZ.originCaller)), toBase58String(fZ.transactionId))
2023-
2024-
2025-@Callable(fZ)
2026-func constructorV1 (kt) = if ((fZ.caller != this))
2031+ else StringEntry(bi(toString(gb.originCaller)), toBase58String(gb.transactionId))
2032+
2033+
2034+@Callable(gb)
2035+func constructorV1 (kv) = if ((gb.caller != this))
20272036 then throw("Permission denied")
2028- else [StringEntry(cB(), kt)]
2029-
2030-
2031-
2032-@Callable(fZ)
2033-func setBlocked (ku) = if ((fZ.caller != this))
2037+ else [StringEntry(cC(), kv)]
2038+
2039+
2040+
2041+@Callable(gb)
2042+func setBlocked (kw) = if ((gb.caller != this))
20342043 then throw("permission denied")
2035- else [BooleanEntry(bF(), ku)]
2036-
2037-
2038-
2039-@Callable(fZ)
2044+ else [BooleanEntry(bF(), kw)]
2045+
2046+
2047+
2048+@Callable(gb)
20402049 func stakeLand () = {
2041- let kv = ks(fZ)
2042- if ((size(fZ.payments) != 1))
2050+ let kx = ku(gb)
2051+ if ((size(gb.payments) != 1))
20432052 then throw("Exactly one payment required")
20442053 else {
2045- let kw = value(fZ.payments[0])
2046- let bk = value(kw.assetId)
2047- let ct = toString(fZ.caller)
2048- if ((kw.amount != 1))
2054+ let ky = value(gb.payments[0])
2055+ let bk = value(ky.assetId)
2056+ let cu = toString(gb.caller)
2057+ if ((ky.amount != 1))
20492058 then throw((("NFT " + aA) + " token should be attached as payment"))
20502059 else {
2051- let iS = value(assetInfo(bk))
2052- if ((iS.issuer != this))
2060+ let iU = value(assetInfo(bk))
2061+ if ((iU.issuer != this))
20532062 then throw("Unknown issuer of token")
2054- else if (!(contains(iS.name, aA)))
2063+ else if (!(contains(iU.name, aA)))
20552064 then throw((("Only NFT " + aA) + " tokens are accepted"))
20562065 else {
2057- let kx = drop(iS.name, 4)
2058- let dI = if (contains(kx, "XXL"))
2059- then dropRight(kx, 3)
2060- else if (contains(kx, "XL"))
2061- then dropRight(kx, 2)
2062- else dropRight(kx, 1)
2063- if (!(isDefined(parseInt(dI))))
2064- then throw(("Cannot parse land number from " + iS.name))
2066+ let kz = drop(iU.name, 4)
2067+ let dK = if (contains(kz, "XXL"))
2068+ then dropRight(kz, 3)
2069+ else if (contains(kz, "XL"))
2070+ then dropRight(kz, 2)
2071+ else dropRight(kz, 1)
2072+ if (!(isDefined(parseInt(dK))))
2073+ then throw(("Cannot parse land number from " + iU.name))
20652074 else {
20662075 let O = toBase58String(bk)
2067- let iT = bm(O)
2068- if (isDefined(getInteger(iT)))
2069- then throw((("NFT " + iS.name) + " is already staked"))
2076+ let iV = bm(O)
2077+ if (isDefined(getInteger(iV)))
2078+ then throw((("NFT " + iU.name) + " is already staked"))
20702079 else {
2071- let iW = split(iS.description, "_")
2072- let fV = gb(iW[cO])
2073- let iH = de(iW[cN])
2074- let hq = (iH / cm)
2075- let eq = ga(fV, hq, 1)
2076- let ky = cV(iW[cP])
2077- let ki = split(valueOrElse(getString(ky), "0_0_0_0_0_0"), "_")
2078- let kz = makeString(fT(ki, fV, hq, 1), "_")
2079- let ke = cX(ct)
2080- let kf = getString(ke)
2081- let kb = if (isDefined(kf))
2082- then split_51C(value(kf), "_")
2080+ let iY = split(iU.description, "_")
2081+ let fX = gd(iY[cP])
2082+ let iJ = dg(iY[cO])
2083+ let hs = (iJ / cn)
2084+ let es = gc(fX, hs, 1)
2085+ let kA = cW(iY[cQ])
2086+ let kk = split(valueOrElse(getString(kA), "0_0_0_0_0_0"), "_")
2087+ let kB = makeString(fV(kk, fX, hs, 1), "_")
2088+ let kg = cY(cu)
2089+ let kh = getString(kg)
2090+ let kd = if (isDefined(kh))
2091+ then split_51C(value(kh), "_")
20832092 else nil
2084- if (containsElement(kb, O))
2093+ if (containsElement(kd, O))
20852094 then throw(("Your staked lands already contain " + O))
2086- else if ((size(kb) >= aE))
2095+ else if ((size(kd) >= aE))
20872096 then throw((("Your already staked max (" + toString(aE)) + ") lands"))
20882097 else {
2089- let hr = valueOrElse(getInteger(bt(O)), 0)
2090- let kl = cY(ct)
2091- let kA = valueOrElse(getInteger(kl), 0)
2092- let kB = invoke(cK, "onStakeUnstakeLand", [ct], nil)
2093- $Tuple2([IntegerEntry(iT, lastBlock.timestamp), IntegerEntry(bp(aA, O, ct), lastBlock.timestamp), StringEntry(ke, makeString_11C((kb :+ O), "_")), IntegerEntry(kl, (kA + iH)), StringEntry(bj(O), ct), StringEntry(dK(dI), ct), IntegerEntry(dJ(O, ct), hr), StringEntry(cU(), eq), StringEntry(ky, kz), kv], kB)
2098+ let ht = valueOrElse(getInteger(bt(O)), 0)
2099+ let kn = cZ(cu)
2100+ let kC = valueOrElse(getInteger(kn), 0)
2101+ let kD = invoke(cL, "onStakeUnstakeLand", [cu], nil)
2102+ $Tuple2([IntegerEntry(iV, lastBlock.timestamp), IntegerEntry(bp(aA, O, cu), lastBlock.timestamp), StringEntry(kg, makeString_11C((kd :+ O), "_")), IntegerEntry(kn, (kC + iJ)), StringEntry(bj(O), cu), StringEntry(dM(dK), cu), IntegerEntry(dL(O, cu), ht), StringEntry(cV(), es), StringEntry(kA, kB), kx], kD)
20942103 }
20952104 }
20962105 }
21012110
21022111
21032112
2104-@Callable(fZ)
2105-func unstakeLand (iN) = {
2106- let kv = ks(fZ)
2107- if ((size(fZ.payments) != 0))
2113+@Callable(gb)
2114+func unstakeLand (iP) = {
2115+ let kx = ku(gb)
2116+ if ((size(gb.payments) != 0))
21082117 then throw("No payments required")
21092118 else {
2110- let b = toString(fZ.caller)
2111- let fp = iL(b, dP, iN)
2112- let O = fp._2
2113- let iW = fp._3
2114- let ke = cX(b)
2115- let fV = gb(iW[cO])
2116- let iH = de(iW[cN])
2117- let hq = (iH / cm)
2118- let eq = ga(fV, hq, -1)
2119- let ky = cV(iW[cP])
2120- let ki = split(valueOrElse(getString(ky), "0_0_0_0_0_0"), "_")
2121- let kz = makeString(fT(ki, fV, hq, -1), "_")
2122- let jr = jj(b, O, iH, dP)
2123- let kb = split_51C(valueOrElse(getString(ke), ""), "_")
2124- let cG = indexOf(kb, O)
2125- if (!(isDefined(cG)))
2119+ let b = toString(gb.caller)
2120+ let fr = iN(b, dR, iP)
2121+ let O = fr._2
2122+ let iY = fr._3
2123+ let kg = cY(b)
2124+ let fX = gd(iY[cP])
2125+ let iJ = dg(iY[cO])
2126+ let hs = (iJ / cn)
2127+ let es = gc(fX, hs, -1)
2128+ let kA = cW(iY[cQ])
2129+ let kk = split(valueOrElse(getString(kA), "0_0_0_0_0_0"), "_")
2130+ let kB = makeString(fV(kk, fX, hs, -1), "_")
2131+ let jt = jl(b, O, iJ, dR)
2132+ let kd = split_51C(valueOrElse(getString(kg), ""), "_")
2133+ let cH = indexOf(kd, O)
2134+ if (!(isDefined(cH)))
21262135 then throw(("Your staked lands don't contain " + O))
21272136 else {
21282137 let av = lastBlock.timestamp
2129- let kC = valueOrElse(getInteger(cJ, bG(b)), 0)
2130- if ((kC >= av))
2131- then throw(("Your gWL are taking part in voting, cannot unstake until " + toString(kC)))
2138+ let kE = valueOrElse(getInteger(cK, bG(b)), 0)
2139+ if ((kE >= av))
2140+ then throw(("Your gWL are taking part in voting, cannot unstake until " + toString(kE)))
21322141 else {
2133- let kD = (valueOrElse(getInteger(cK, a(b)), 0) + ci)
2134- if ((kD > av))
2135- then throw(("Your staked lands took part in arbitrage, cannot unstake until " + toString(kD)))
2142+ let kF = (valueOrElse(getInteger(cL, a(b)), 0) + cj)
2143+ if ((kF > av))
2144+ then throw(("Your staked lands took part in arbitrage, cannot unstake until " + toString(kF)))
21362145 else {
2137- let kl = cY(b)
2138- let km = valueOrElse(getInteger(kl), 0)
2139- let kE = if ((iH > km))
2146+ let kn = cZ(b)
2147+ let ko = valueOrElse(getInteger(kn), 0)
2148+ let kG = if ((iJ > ko))
21402149 then 0
2141- else (km - iH)
2142- let kB = invoke(cK, "onStakeUnstakeLand", [b], nil)
2143- $Tuple2([ScriptTransfer(fZ.caller, 1, fromBase58String(O)), DeleteEntry(bm(O)), DeleteEntry(bp(aA, O, b)), StringEntry(cU(), eq), StringEntry(ky, kz), StringEntry(jr._2, makeString(jr._3, ":")), if ((size(kb) > 1))
2144- then StringEntry(ke, makeString_11C(removeByIndex(kb, value(cG)), "_"))
2145- else DeleteEntry(ke), IntegerEntry(kl, kE), kv], kB)
2150+ else (ko - iJ)
2151+ let kD = invoke(cL, "onStakeUnstakeLand", [b], nil)
2152+ $Tuple2([ScriptTransfer(gb.caller, 1, fromBase58String(O)), DeleteEntry(bm(O)), DeleteEntry(bp(aA, O, b)), StringEntry(cV(), es), StringEntry(kA, kB), StringEntry(jt._2, makeString(jt._3, ":")), if ((size(kd) > 1))
2153+ then StringEntry(kg, makeString_11C(removeByIndex(kd, value(cH)), "_"))
2154+ else DeleteEntry(kg), IntegerEntry(kn, kG), kx], kD)
21462155 }
21472156 }
21482157 }
21512160
21522161
21532162
2154-@Callable(fZ)
2163+@Callable(gb)
21552164 func stakeDuck () = {
2156- let kv = ks(fZ)
2157- if ((size(fZ.payments) != 1))
2165+ let kx = ku(gb)
2166+ if ((size(gb.payments) != 1))
21582167 then throw("Exactly one payment required")
21592168 else {
2160- let kw = value(fZ.payments[0])
2161- let bk = value(kw.assetId)
2162- let ct = toString(fZ.caller)
2163- if ((kw.amount != 1))
2169+ let ky = value(gb.payments[0])
2170+ let bk = value(ky.assetId)
2171+ let cu = toString(gb.caller)
2172+ if ((ky.amount != 1))
21642173 then throw((("NFT " + aB) + " token should be attached as payment"))
21652174 else {
2166- let iS = value(assetInfo(bk))
2167- if (if ((iS.issuer != dn))
2168- then (iS.issuer != do)
2175+ let iU = value(assetInfo(bk))
2176+ if (if ((iU.issuer != dp))
2177+ then (iU.issuer != dq)
21692178 else false)
21702179 then throw((("Unknown issuer of " + aB) + " token"))
2171- else if (!(contains(iS.name, aB)))
2180+ else if (!(contains(iU.name, aB)))
21722181 then throw((("Only NFT " + aB) + " tokens are accepted"))
21732182 else {
2174- let kF = toBase58String(bk)
2175- let iT = bm(kF)
2176- if (isDefined(getInteger(iT)))
2177- then throw((("NFT " + iS.name) + " is already staked"))
2178- else if (isDefined(getString(bC(ct))))
2179- then throw(("You already staked one duck: " + iS.name))
2180- else if (jN(kF))
2183+ let kH = toBase58String(bk)
2184+ let iV = bm(kH)
2185+ if (isDefined(getInteger(iV)))
2186+ then throw((("NFT " + iU.name) + " is already staked"))
2187+ else if (isDefined(getString(bC(cu))))
2188+ then throw(("You already staked one duck: " + iU.name))
2189+ else if (jP(kH))
21812190 then throw("stakeDuck_checkTournament")
21822191 else {
2183- let kG = bE(kF)
2184- let kH = getString(kG)
2185- let hc = bD(kF)
2186- let kI = getString(hc)
2187- let is = y(kF)
2188- let it = ae(valueOrElse(getInteger(C(kF)), 0))
2189- let kJ = valueOrElse(getInteger(is), it)
2190- ([IntegerEntry(iT, lastBlock.timestamp), IntegerEntry(bp(aB, toBase58String(bk), ct), lastBlock.timestamp), StringEntry(bB(kF), ct), StringEntry(bC(ct), kF)] ++ (if (isDefined(kH))
2192+ let kI = bE(kH)
2193+ let kJ = getString(kI)
2194+ let he = bD(kH)
2195+ let kK = getString(he)
2196+ let iu = y(kH)
2197+ let iv = ae(valueOrElse(getInteger(C(kH)), 0))
2198+ let kL = valueOrElse(getInteger(iu), iv)
2199+ ([IntegerEntry(iV, lastBlock.timestamp), IntegerEntry(bp(aB, toBase58String(bk), cu), lastBlock.timestamp), StringEntry(bB(kH), cu), StringEntry(bC(cu), kH)] ++ (if (isDefined(kJ))
21912200 then nil
2192- else ([StringEntry(kG, aI)] ++ (if (isDefined(kI))
2201+ else ([StringEntry(kI, aI)] ++ (if (isDefined(kK))
21932202 then nil
2194- else (([StringEntry(hc, "0:0_0_0_0_0_0:0_0_0_0_0_0:")] :+ IntegerEntry(is, kJ)) :+ kv)))))
2203+ else (([StringEntry(he, "0:0_0_0_0_0_0:0_0_0_0_0_0:")] :+ IntegerEntry(iu, kL)) :+ kx)))))
21952204 }
21962205 }
21972206 }
22002209
22012210
22022211
2203-@Callable(fZ)
2204-func unstakeDuck (kF) = {
2205- let kv = ks(fZ)
2206- if ((size(fZ.payments) != 0))
2212+@Callable(gb)
2213+func unstakeDuck (kH) = {
2214+ let kx = ku(gb)
2215+ if ((size(gb.payments) != 0))
22072216 then throw("No payments required")
22082217 else {
2209- let bk = fromBase58String(kF)
2210- let ct = toString(fZ.caller)
2211- let iS = value(assetInfo(bk))
2212- let iT = bm(kF)
2213- if (!(isDefined(getInteger(iT))))
2214- then throw((("NFT " + iS.name) + " is not staked"))
2215- else if (!(isDefined(getString(bC(ct)))))
2216- then throw((("The duck " + iS.name) + " is not staked"))
2218+ let bk = fromBase58String(kH)
2219+ let cu = toString(gb.caller)
2220+ let iU = value(assetInfo(bk))
2221+ let iV = bm(kH)
2222+ if (!(isDefined(getInteger(iV))))
2223+ then throw((("NFT " + iU.name) + " is not staked"))
2224+ else if (!(isDefined(getString(bC(cu)))))
2225+ then throw((("The duck " + iU.name) + " is not staked"))
22172226 else {
2218- let iV = valueOrErrorMessage(getString(bB(kF)), (("NFT " + iS.name) + " is orphaned"))
2219- if ((iV != ct))
2227+ let iX = valueOrErrorMessage(getString(bB(kH)), (("NFT " + iU.name) + " is orphaned"))
2228+ if ((iX != cu))
22202229 then throw("Staked NFT is not yours")
2221- else if (jN(kF))
2230+ else if (jP(kH))
22222231 then throw("unstakeDuck_checkTournament")
22232232 else {
2224- let is = y(kF)
2225- let it = ae(valueOrElse(getInteger(C(kF)), 0))
2226- let aq = valueOrElse(getInteger(is), it)
2227- if ((it > aq))
2228- then throw((("Please heal your duck to " + toString(it)) + "hp before unstaking"))
2229- else [ScriptTransfer(fZ.caller, 1, bk), DeleteEntry(iT), DeleteEntry(is), DeleteEntry(bE(kF)), DeleteEntry(bB(kF)), DeleteEntry(bp(aB, kF, ct)), DeleteEntry(bC(ct)), kv]
2233+ let iu = y(kH)
2234+ let iv = ae(valueOrElse(getInteger(C(kH)), 0))
2235+ let aq = valueOrElse(getInteger(iu), iv)
2236+ if ((iv > aq))
2237+ then throw((("Please heal your duck to " + toString(iv)) + "hp before unstaking"))
2238+ else [ScriptTransfer(gb.caller, 1, bk), DeleteEntry(iV), DeleteEntry(iu), DeleteEntry(bE(kH)), DeleteEntry(bB(kH)), DeleteEntry(bp(aB, kH, cu)), DeleteEntry(bC(cu)), kx]
22302239 }
22312240 }
22322241 }
22342243
22352244
22362245
2237-@Callable(fZ)
2238-func claimRes (dX,kK) = {
2239- let kv = ks(fZ)
2240- if ((size(fZ.payments) != 0))
2246+@Callable(gb)
2247+func claimRes (dZ,kM) = {
2248+ let kx = ku(gb)
2249+ if ((size(gb.payments) != 0))
22412250 then throw("No payments required")
22422251 else {
2243- let b = toString(fZ.originCaller)
2244- let ey = iX(b, dX, dP, kK)
2252+ let b = toString(gb.originCaller)
2253+ let eA = iZ(b, dZ, dR, kM)
22452254 let z = valueOrErrorMessage(getString(bC(b)), "You don't have a duck staked")
2246- $Tuple2(((((ey._1 ++ jx(z, fraction(S, dX, cl))._1) :+ StringEntry(ey._2, makeString(ey._3, ":"))) :+ StringEntry(ey._4, makeString(ey._5, ":"))) :+ kv), ey._3[bf])
2247- }
2248- }
2249-
2250-
2251-
2252-@Callable(fZ)
2253-func claimResToWH (dX,kK) = {
2254- let kv = ks(fZ)
2255- if ((size(fZ.payments) != 0))
2255+ $Tuple2(((((eA._1 ++ jz(z, fraction(S, dZ, cm))._1) :+ StringEntry(eA._2, makeString(eA._3, ":"))) :+ StringEntry(eA._4, makeString(eA._5, ":"))) :+ kx), eA._3[bf])
2256+ }
2257+ }
2258+
2259+
2260+
2261+@Callable(gb)
2262+func claimResToWH (dZ,kM) = {
2263+ let kx = ku(gb)
2264+ if ((size(gb.payments) != 0))
22562265 then throw("No payments required")
22572266 else {
2258- let b = toString(fZ.originCaller)
2259- let ey = iX(b, dX, dO, kK)
2260- $Tuple2(((((ey._1 ++ jD(b, fraction(S, dX, cl))._1) :+ StringEntry(ey._2, makeString(ey._3, ":"))) :+ StringEntry(ey._4, makeString(ey._5, ":"))) :+ kv), ey._5[aW])
2261- }
2262- }
2263-
2264-
2265-
2266-@Callable(fZ)
2267-func flight (ih,ii) = {
2268- let kv = ks(fZ)
2269- if ((size(fZ.payments) != 0))
2267+ let b = toString(gb.originCaller)
2268+ let eA = iZ(b, dZ, dQ, kM)
2269+ $Tuple2(((((eA._1 ++ jF(b, fraction(S, dZ, cm))._1) :+ StringEntry(eA._2, makeString(eA._3, ":"))) :+ StringEntry(eA._4, makeString(eA._5, ":"))) :+ kx), eA._5[aW])
2270+ }
2271+ }
2272+
2273+
2274+
2275+@Callable(gb)
2276+func flight (ij,ik) = {
2277+ let kx = ku(gb)
2278+ if ((size(gb.payments) != 0))
22702279 then throw("No payments required")
22712280 else {
2272- let bH = toString(fZ.caller)
2273- let gE = ig(bH, ih, ii)
2274- let z = gE._2
2275- let io = gE._4
2276- let kL = split(io, "_")
2277- let kM = (kL[bX] == "T")
2278- if (if (!(kM))
2279- then jN(z)
2281+ let bH = toString(gb.caller)
2282+ let gG = ii(bH, ij, ik)
2283+ let z = gG._2
2284+ let iq = gG._4
2285+ let kN = split(iq, "_")
2286+ let kO = (kN[bX] == "T")
2287+ if (if (!(kO))
2288+ then jP(z)
22802289 else false)
22812290 then throw("flight_checkTournament")
22822291 else {
2283- let kN = if (kM)
2292+ let kI = bE(z)
2293+ let iR = valueOrElse(getString(kI), aI)
2294+ let kP = if (kO)
22842295 then {
2285- let jO = valueOrElse(getInteger(cL, bJ), 0)
2296+ let kQ = split(iR, "_")
2297+ let kR = (kQ[bX] == "T")
2298+ let jQ = valueOrElse(getInteger(cM, bJ), 0)
22862299 let av = lastBlock.timestamp
2287- let jP = bP(cL, jO)
2288- let bR = jP[bN]
2289- let bS = jP[bO]
2290- if (if (if ((parseIntValue(kL[bW]) != jO))
2300+ let jR = bP(cM, jQ)
2301+ let bR = jR[bN]
2302+ let bS = jR[bO]
2303+ if (if (if ((parseIntValue(kN[bW]) != jQ))
22912304 then true
22922305 else (bS[bU] != "INPROGRESS"))
22932306 then true
22942307 else (av > parseIntValue(bR[bT])))
22952308 then unit
22962309 else {
2297- let kO = parseIntValue(kL[bY])
2298- let kP = parseIntValue(bS[bV])
2299- if ((kP >= kO))
2300- then unit
2301- else invoke(cL, "updateDynamicData", [z, kO], nil)
2310+ let kS = parseIntValue(kN[bY])
2311+ let kT = parseIntValue(bS[bV])
2312+ if (if (if (!(kR))
2313+ then true
2314+ else (parseIntValue(kQ[bW]) != jQ))
2315+ then true
2316+ else (kS != (parseIntValue(kQ[bY]) + 1)))
2317+ then throw(((("Cheat attempt: oldLoc=" + iR) + ", newLoc=") + iq))
2318+ else {
2319+ let kU = valueOrElse(getInteger(cM, bZ(jQ, z)), 0)
2320+ let kV = if ((kS > kU))
2321+ then invoke(cM, "saveDuckResult", [z, kS], nil)
2322+ else unit
2323+ if ((kV == kV))
2324+ then if ((kT >= kS))
2325+ then unit
2326+ else invoke(cM, "updateDynamicData", [z, kS], nil)
2327+ else throw("Strict value is not equal to itself.")
2328+ }
23022329 }
23032330 }
23042331 else unit
2305- if ((kN == kN))
2306- then {
2307- let kG = bE(z)
2308- let iP = valueOrElse(getString(kG), aI)
2309- if ((io == iP))
2310- then throw("You can't fly to the same location")
2311- else {
2312- let fM = E(z)
2313- let iB = valueOrElse(getString(fM), ",;,_,;,_,;,_,;,_,;,_,;,")
2314- let kQ = ez(iB, gE._5)
2315- let iD = kQ._1
2316- let iE = kQ._2
2317- $Tuple2(([StringEntry(kG, if ((gE._1 > 0))
2318- then io
2319- else iP), StringEntry(fM, iD), IntegerEntry(y(z), gE._1), kv] ++ (if (iE)
2320- then [StringEntry(K(z), "0_0_0_0_0")]
2321- else (nil ++ jx(z, if ((gE._1 > 0))
2322- then T
2323- else U)._1))), gE._3)
2324- }
2325- }
2332+ if ((kP == kP))
2333+ then if ((iq == iR))
2334+ then throw("You can't fly to the same location")
2335+ else {
2336+ let fO = E(z)
2337+ let iD = valueOrElse(getString(fO), ",;,_,;,_,;,_,;,_,;,_,;,")
2338+ let kW = eB(iD, gG._5)
2339+ let iF = kW._1
2340+ let iG = kW._2
2341+ $Tuple2(([StringEntry(kI, if ((gG._1 > 0))
2342+ then iq
2343+ else iR), StringEntry(fO, iF), IntegerEntry(y(z), gG._1), kx] ++ (if (iG)
2344+ then [StringEntry(K(z), "0_0_0_0_0")]
2345+ else (nil ++ jz(z, if ((gG._1 > 0))
2346+ then T
2347+ else U)._1))), gG._3)
2348+ }
23262349 else throw("Strict value is not equal to itself.")
23272350 }
23282351 }
23302353
23312354
23322355
2333-@Callable(fZ)
2334-func heal (kR,kS,kT) = {
2335- let kv = ks(fZ)
2336- if (if (if ((0 > kR))
2356+@Callable(gb)
2357+func heal (kX,kY,kZ) = {
2358+ let kx = ku(gb)
2359+ if (if (if ((0 > kX))
23372360 then true
2338- else (0 > kS))
2361+ else (0 > kY))
23392362 then true
2340- else (0 > kT))
2363+ else (0 > kZ))
23412364 then throw("Quantity cannot be negative")
23422365 else {
2343- let z = valueOrErrorMessage(getString(bC(toString(fZ.caller))), "You don't have a duck staked")
2344- if (jN(z))
2366+ let z = valueOrErrorMessage(getString(bC(toString(gb.caller))), "You don't have a duck staked")
2367+ if (jP(z))
23452368 then throw("heal_checkTournament")
23462369 else {
2347- let kU = [kR, kS, kT]
2348- let is = y(z)
2349- let it = ae(valueOrElse(getInteger(C(z)), 0))
2350- let kV = valueOrElse(getInteger(is), it)
2351- if ((kV >= it))
2352- then throw((("HP should be < " + toString(it)) + " to heal"))
2370+ let la = [kX, kY, kZ]
2371+ let iu = y(z)
2372+ let iv = ae(valueOrElse(getInteger(C(z)), 0))
2373+ let lb = valueOrElse(getInteger(iu), iv)
2374+ if ((lb >= iv))
2375+ then throw((("HP should be < " + toString(iv)) + " to heal"))
23532376 else {
2354- let hc = bD(z)
2355- let hF = hb(hc)
2356- let kW = if ((hF[bh] == ""))
2377+ let he = bD(z)
2378+ let hH = hd(he)
2379+ let lc = if ((hH[bh] == ""))
23572380 then nil
2358- else split_4C(hF[bh], "_")
2359- func kX (eg,ca) = {
2360- let dd = eg._2
2361- let gv = if ((size(kW) > dd))
2362- then parseIntValue(kW[dd])
2381+ else split_4C(hH[bh], "_")
2382+ func ld (ei,cb) = {
2383+ let de = ei._2
2384+ let gx = if ((size(lc) > de))
2385+ then parseIntValue(lc[de])
23632386 else 0
2364- if ((3 > dd))
2387+ if ((3 > de))
23652388 then {
2366- let kY = kU[dd]
2367- if ((kY > gv))
2368- then throw(((("You have only " + toString(gv)) + " of ") + aL[dd]))
2369- else $Tuple3((eg._1 :+ toString((gv - kY))), (dd + 1), (eg._3 + (parseIntValue(split(ca, "_")[aR]) * kY)))
2389+ let le = la[de]
2390+ if ((le > gx))
2391+ then throw(((("You have only " + toString(gx)) + " of ") + aL[de]))
2392+ else $Tuple3((ei._1 :+ toString((gx - le))), (de + 1), (ei._3 + (parseIntValue(split(cb, "_")[aR]) * le)))
23702393 }
2371- else $Tuple3((eg._1 :+ toString(gv)), (dd + 1), eg._3)
2394+ else $Tuple3((ei._1 :+ toString(gx)), (de + 1), ei._3)
23722395 }
23732396
2374- let ey = {
2375- let ei = aP
2376- let ej = size(ei)
2377- let ek = $Tuple3(nil, 0, 0)
2378- func el (em,en) = if ((en >= ej))
2379- then em
2380- else kX(em, ei[en])
2381-
2382- func eo (em,en) = if ((en >= ej))
2383- then em
2397+ let eA = {
2398+ let ek = aP
2399+ let el = size(ek)
2400+ let em = $Tuple3(nil, 0, 0)
2401+ func en (eo,ep) = if ((ep >= el))
2402+ then eo
2403+ else ld(eo, ek[ep])
2404+
2405+ func eq (eo,ep) = if ((ep >= el))
2406+ then eo
23842407 else throw("List size exceeds 50")
23852408
2386- eo(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(ek, 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)
2409+ eq(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(em, 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)
23872410 }
2388- let kZ = min([it, (kV + ey._3)])
2389- $Tuple2(([IntegerEntry(is, kZ), StringEntry(hc, makeString_2C([hF[be], hF[bf], hF[bg], makeString(ey._1, "_")], ":")), kv] ++ jx(z, (ab * ((kR + kS) + kT)))._1), kZ)
2411+ let lf = min([iv, (lb + eA._3)])
2412+ $Tuple2(([IntegerEntry(iu, lf), StringEntry(he, makeString_2C([hH[be], hH[bf], hH[bg], makeString(eA._1, "_")], ":")), kx] ++ jz(z, (ab * ((kX + kY) + kZ)))._1), lf)
23902413 }
23912414 }
23922415 }
23942417
23952418
23962419
2397-@Callable(fZ)
2420+@Callable(gb)
23982421 func healES () = {
2399- let kv = ks(fZ)
2400- if ((size(fZ.payments) != 1))
2422+ let kx = ku(gb)
2423+ if ((size(gb.payments) != 1))
24012424 then throw("Exactly one payment required")
24022425 else {
2403- let kw = value(fZ.payments[0])
2404- if ((kw.assetId != ce))
2426+ let ky = value(gb.payments[0])
2427+ if ((ky.assetId != cf))
24052428 then throw("Allowed USDT payment only!")
24062429 else {
2407- let z = valueOrErrorMessage(getString(bC(toString(fZ.caller))), "You don't have a duck staked")
2408- if (jN(z))
2430+ let z = valueOrErrorMessage(getString(bC(toString(gb.caller))), "You don't have a duck staked")
2431+ if (jP(z))
24092432 then throw("healES_checkTournament")
24102433 else {
2411- let is = y(z)
2412- let it = ae(valueOrElse(getInteger(C(z)), 0))
2413- let kV = valueOrElse(getInteger(is), it)
2414- if ((kV > 0))
2434+ let iu = y(z)
2435+ let iv = ae(valueOrElse(getInteger(C(z)), 0))
2436+ let lb = valueOrElse(getInteger(iu), iv)
2437+ if ((lb > 0))
24152438 then throw("HP should be 0 to call Emergency Service")
24162439 else {
2417- let hc = bD(z)
2418- let hF = hb(hc)
2419- let kW = if ((hF[bh] == ""))
2440+ let he = bD(z)
2441+ let hH = hd(he)
2442+ let lc = if ((hH[bh] == ""))
24202443 then nil
2421- else split_4C(hF[bh], "_")
2422- let la = if ((size(kW) > 0))
2423- then parseIntValue(kW[0])
2444+ else split_4C(hH[bh], "_")
2445+ let lg = if ((size(lc) > 0))
2446+ then parseIntValue(lc[0])
24242447 else 0
2425- let lb = if ((size(kW) > 1))
2426- then parseIntValue(kW[1])
2448+ let lh = if ((size(lc) > 1))
2449+ then parseIntValue(lc[1])
24272450 else 0
2428- let lc = if ((size(kW) > 2))
2429- then parseIntValue(kW[2])
2451+ let li = if ((size(lc) > 2))
2452+ then parseIntValue(lc[2])
24302453 else 0
2431- if (if (if ((la > 0))
2454+ if (if (if ((lg > 0))
24322455 then true
2433- else (lb > 0))
2456+ else (lh > 0))
24342457 then true
2435- else (lc > 0))
2458+ else (li > 0))
24362459 then throw("You have to use own Medical Kit")
24372460 else {
2438- let ld = getString(cI, bI())
2439- let le = if (isDefined(ld))
2440- then split_4C(value(ld), "_")
2461+ let lj = getString(cJ, bI())
2462+ let lk = if (isDefined(lj))
2463+ then split_4C(value(lj), "_")
24412464 else nil
2442- let lf = if ((size(le) > 0))
2443- then parseIntValue(le[0])
2465+ let ll = if ((size(lk) > 0))
2466+ then parseIntValue(lk[0])
24442467 else 0
2445- if ((0 >= lf))
2468+ if ((0 >= ll))
24462469 then throw("There are no Medical Kits L1 at Emergency Service storage")
24472470 else {
2448- let kZ = (kV + parseIntValue(split(aP[0], "_")[aR]))
2449- let lg = makeString([toString((lf - 1)), removeByIndex(le, 0)], "_")
2450- let ca = split(aP[0], "_")
2451- let lh = bZ(ca)
2452- let li = fraction((lh * aK), aJ, (cl * aU))
2453- if ((kw.amount != li))
2454- then throw(("Payment attached should be " + toString(li)))
2471+ let lf = (lb + parseIntValue(split(aP[0], "_")[aR]))
2472+ let lm = makeString([toString((ll - 1)), removeByIndex(lk, 0)], "_")
2473+ let cb = split(aP[0], "_")
2474+ let ln = ca(cb)
2475+ let lo = fraction((ln * aK), aJ, (cm * aU))
2476+ if ((ky.amount != lo))
2477+ then throw(("Payment attached should be " + toString(lo)))
24552478 else {
2456- let ey = cZ(invoke(cI, "updateEsStorage", [lg], [AttachedPayment(ce, li)]))
2457- $Tuple2(([IntegerEntry(is, kZ), kv] ++ jx(z, V)._1), ey)
2479+ let eA = da(invoke(cJ, "updateEsStorage", [lm], [AttachedPayment(cf, lo)]))
2480+ $Tuple2(([IntegerEntry(iu, lf), kx] ++ jz(z, V)._1), eA)
24582481 }
24592482 }
24602483 }
24662489
24672490
24682491
2469-@Callable(fZ)
2470-func updateBackpack (z,lj) = if ((fZ.caller != cI))
2492+@Callable(gb)
2493+func updateBackpack (z,lp) = if ((gb.caller != cJ))
24712494 then throw("permission denied")
2472- else $Tuple2([StringEntry(bD(z), lj)], lj)
2473-
2474-
2475-
2476-@Callable(fZ)
2495+ else $Tuple2([StringEntry(bD(z), lp)], lp)
2496+
2497+
2498+
2499+@Callable(gb)
24772500 func commitForRandom () = {
2478- let kv = ks(fZ)
2479- let lk = (height + cS)
2480- let b = toString(fZ.caller)
2481- $Tuple2(([IntegerEntry(cT(b), lk)] :+ kv), lk)
2482- }
2483-
2484-
2485-
2486-@Callable(fZ)
2501+ let kx = ku(gb)
2502+ let lq = (height + cT)
2503+ let b = toString(gb.caller)
2504+ $Tuple2(([IntegerEntry(cU(b), lq)] :+ kx), lq)
2505+ }
2506+
2507+
2508+
2509+@Callable(gb)
24872510 func buySLand () = {
2488- let kv = ks(fZ)
2489- if ((size(fZ.payments) != 1))
2511+ let kx = ku(gb)
2512+ if ((size(gb.payments) != 1))
24902513 then throw("Exactly one payment required")
24912514 else {
2492- let kw = value(fZ.payments[0])
2493- if ((kw.assetId != ce))
2515+ let ky = value(gb.payments[0])
2516+ if ((ky.assetId != cf))
24942517 then throw("Allowed USDT payment only!")
2495- else if ((kw.amount != dw))
2496- then throw(("Payment attached should be " + toString(dw)))
2518+ else if ((ky.amount != dy))
2519+ then throw(("Payment attached should be " + toString(dy)))
24972520 else {
2498- let ey = hZ(fZ.caller, fZ.transactionId)
2499- $Tuple2((((ey._1 :+ ScriptTransfer(cI, kw.amount, ce)) ++ jD(toString(fZ.caller), X)._1) :+ kv), ey._2._1)
2521+ let eA = ib(gb.caller, gb.transactionId)
2522+ $Tuple2((((eA._1 :+ ScriptTransfer(cJ, ky.amount, cf)) ++ jF(toString(gb.caller), X)._1) :+ kx), eA._2._1)
25002523 }
25012524 }
25022525 }
25032526
25042527
25052528
2506-@Callable(fZ)
2507-func expedition (ih,ii) = {
2508- let kv = ks(fZ)
2509- if ((size(fZ.payments) != 0))
2529+@Callable(gb)
2530+func expedition (ij,ik) = {
2531+ let kx = ku(gb)
2532+ if ((size(gb.payments) != 0))
25102533 then throw("No payments required")
25112534 else {
2512- let ey = iy(fZ.caller, fZ.transactionId, ih, ii)
2513- let z = valueOrErrorMessage(getString(bC(toString(fZ.caller))), "You don't have a duck staked")
2514- if (jN(z))
2535+ let eA = iA(gb.caller, gb.transactionId, ij, ik)
2536+ let z = valueOrErrorMessage(getString(bC(toString(gb.caller))), "You don't have a duck staked")
2537+ if (jP(z))
25152538 then throw("expedition_checkTournament")
2516- else $Tuple2(((ey._1 ++ jx(z, X)._1) :+ kv), $Tuple2(ey._2, ey._3))
2517- }
2518- }
2519-
2520-
2521-
2522-@Callable(fZ)
2539+ else $Tuple2(((eA._1 ++ jz(z, X)._1) :+ kx), $Tuple2(eA._2, eA._3))
2540+ }
2541+ }
2542+
2543+
2544+
2545+@Callable(gb)
25232546 func upgradeInfra (O) = {
2524- let kv = ks(fZ)
2525- if ((size(fZ.payments) != 0))
2547+ let kx = ku(gb)
2548+ if ((size(gb.payments) != 0))
25262549 then throw("No payments required")
25272550 else {
2528- let ey = jk(true, fZ.caller, 0, O)
2529- let z = valueOrErrorMessage(getString(bC(toString(fZ.caller))), "You don't have a duck staked")
2530- $Tuple2(((ey._1 :+ kv) ++ jx(z, fraction(Y, ey._3, cl))._1), ey._2)
2531- }
2532- }
2533-
2534-
2535-
2536-@Callable(fZ)
2537-func activateArtifact (ll,lm) = {
2538- let kv = ks(fZ)
2539- if ((size(fZ.payments) != 0))
2551+ let eA = jm(true, gb.caller, 0, O)
2552+ let z = valueOrErrorMessage(getString(bC(toString(gb.caller))), "You don't have a duck staked")
2553+ $Tuple2(((eA._1 :+ kx) ++ jz(z, fraction(Y, eA._3, cm))._1), eA._2)
2554+ }
2555+ }
2556+
2557+
2558+
2559+@Callable(gb)
2560+func activateArtifact (lr,ls) = {
2561+ let kx = ku(gb)
2562+ if ((size(gb.payments) != 0))
25402563 then throw("No payments required")
25412564 else {
2542- let b = toString(fZ.caller)
2543- let ey = {
2544- let cf = ll
2545- if (("PRESALE" == cf))
2546- then jL(b, lm)
2547- else if (("ONBOARD" == cf))
2548- then jE(b)
2565+ let b = toString(gb.caller)
2566+ let eA = {
2567+ let cg = lr
2568+ if (("PRESALE" == cg))
2569+ then jN(b, ls)
2570+ else if (("ONBOARD" == cg))
2571+ then jG(b)
25492572 else throw("Unknown artifact")
25502573 }
2551- (ey :+ kv)
2552- }
2553- }
2554-
2555-
2556-
2557-@Callable(fZ)
2558-func mergeLands (jT) = {
2559- let kv = ks(fZ)
2560- if ((size(fZ.payments) != 0))
2574+ (eA :+ kx)
2575+ }
2576+ }
2577+
2578+
2579+
2580+@Callable(gb)
2581+func mergeLands (jV) = {
2582+ let kx = ku(gb)
2583+ if ((size(gb.payments) != 0))
25612584 then throw("No payments required")
25622585 else {
2563- let ey = kr(toString(fZ.caller), jT)
2564- $Tuple2(((ey._1 :+ kv) ++ jD(toString(fZ.caller), Z)._1), ey._2)
2565- }
2566- }
2567-
2568-
2569-
2570-@Callable(fZ)
2571-func cargoExchange (ln,O) = {
2572- let kv = ks(fZ)
2573- if ((size(fZ.payments) != 0))
2586+ let eA = kt(toString(gb.caller), jV)
2587+ $Tuple2(((eA._1 :+ kx) ++ jF(toString(gb.caller), Z)._1), eA._2)
2588+ }
2589+ }
2590+
2591+
2592+
2593+@Callable(gb)
2594+func cargoExchange (lt,O) = {
2595+ let kx = ku(gb)
2596+ if ((size(gb.payments) != 0))
25742597 then throw("No payments required")
25752598 else {
2576- let hE = split_4C(ln, ":")
2577- let b = toString(fZ.originCaller)
2578- let iS = value(assetInfo(fromBase58String(O)))
2579- let iT = bm(O)
2580- if (!(isDefined(getInteger(iT))))
2581- then throw((iS.name + " is not staked"))
2599+ let hG = split_4C(lt, ":")
2600+ let b = toString(gb.originCaller)
2601+ let iU = value(assetInfo(fromBase58String(O)))
2602+ let iV = bm(O)
2603+ if (!(isDefined(getInteger(iV))))
2604+ then throw((iU.name + " is not staked"))
25822605 else {
2583- let iV = valueOrErrorMessage(getString(bj(O)), (("NFT " + iS.name) + " is orphaned"))
2584- if ((iV != b))
2606+ let iX = valueOrErrorMessage(getString(bj(O)), (("NFT " + iU.name) + " is orphaned"))
2607+ if ((iX != b))
25852608 then throw((aA + " is not yours"))
25862609 else {
2587- let hq = (de(split(iS.description, "_")[cN]) / cm)
2588- let hr = valueOrElse(getInteger(bt(O)), 0)
2610+ let hs = (dg(split(iU.description, "_")[cO]) / cn)
2611+ let ht = valueOrElse(getInteger(bt(O)), 0)
25892612 let z = valueOrErrorMessage(getString(bC(b)), "You don't have a duck staked")
2590- let iP = valueOrElse(getString(bE(z)), aI)
2591- let iQ = split(value(iP), "_")
2592- if ((iQ[bX] != "L"))
2593- then throw((("Duck location type is " + iQ[bX]) + ", but should be L"))
2594- else if ((iQ[bY] != O))
2613+ let iR = valueOrElse(getString(bE(z)), aI)
2614+ let iS = split(value(iR), "_")
2615+ if ((iS[bX] != "L"))
2616+ then throw((("Duck location type is " + iS[bX]) + ", but should be L"))
2617+ else if ((iS[bY] != O))
25952618 then throw(("Duck should be on the land " + O))
25962619 else {
2597- let hp = bs(O)
2598- let hg = ho(hp, hq, hr)
2599- let hc = bD(z)
2600- let hF = hb(hc)
2601- let ey = hD(hE, hg, hF)
2602- let hx = split(hg[aZ], "_")
2603- let jh = (parseIntValue(hx[bb]) + ey._7)
2604- let ji = (parseIntValue(hx[bc]) - ey._7)
2605-[StringEntry(hc, makeString_2C([hF[be], ey._4, ey._5, ey._6], ":")), StringEntry(hp, makeString_2C([hg[aV], ey._1, ey._2, ey._3, makeString([hx[ba], toString(jh), toString(ji), hx[bd]], "_")], ":")), kv]
2620+ let hr = bs(O)
2621+ let hi = hq(hr, hs, ht)
2622+ let he = bD(z)
2623+ let hH = hd(he)
2624+ let eA = hF(hG, hi, hH)
2625+ let hz = split(hi[aZ], "_")
2626+ let jj = (parseIntValue(hz[bb]) + eA._7)
2627+ let jk = (parseIntValue(hz[bc]) - eA._7)
2628+[StringEntry(he, makeString_2C([hH[be], eA._4, eA._5, eA._6], ":")), StringEntry(hr, makeString_2C([hi[aV], eA._1, eA._2, eA._3, makeString([hz[ba], toString(jj), toString(jk), hz[bd]], "_")], ":")), kx]
26062629 }
26072630 }
26082631 }
26112634
26122635
26132636
2614-@Callable(fZ)
2615-func saveWarehouse (ht,O) = if ((fZ.caller != cI))
2637+@Callable(gb)
2638+func saveWarehouse (hv,O) = if ((gb.caller != cJ))
26162639 then throw("Access denied")
26172640 else {
2618- let hp = bs(O)
2619- let hu = split_4C(ht, ":")
2620- if ((size(hu) != 5))
2641+ let hr = bs(O)
2642+ let hw = split_4C(hv, ":")
2643+ if ((size(hw) != 5))
26212644 then throw("warehouse string should contain 4 ':' separators")
26222645 else {
2623- let lo = split(hu[aZ], "_")[ba]
2624- let jh = hf(hu)
2625- let lp = hd(hu[aV])
2626- let ji = ((lp - parseIntValue(lo)) - jh)
2627- let lq = makeString_2C([hu[aV], hu[aW], hu[aX], hu[aY], makeString([lo, toString(jh), toString(ji), toString(lp)], "_")], ":")
2628- $Tuple2([StringEntry(hp, lq)], lq)
2646+ let lu = split(hw[aZ], "_")[ba]
2647+ let jj = hh(hw)
2648+ let lv = hf(hw[aV])
2649+ let jk = ((lv - parseIntValue(lu)) - jj)
2650+ let lw = makeString_2C([hw[aV], hw[aW], hw[aX], hw[aY], makeString([lu, toString(jj), toString(jk), toString(lv)], "_")], ":")
2651+ $Tuple2([StringEntry(hr, lw)], lw)
26292652 }
26302653 }
26312654
26322655
26332656
2634-@Callable(fZ)
2635-func fixWarehouseFormat (O) = if ((fZ.caller != cH))
2657+@Callable(gb)
2658+func fixWarehouseFormat (O) = if ((gb.caller != cI))
26362659 then throw("Access denied")
26372660 else {
2638- let hp = bs(O)
2639- let iS = value(assetInfo(fromBase58String(O)))
2640- let hq = (de(split(iS.description, "_")[cN]) / cm)
2641- let hr = valueOrElse(getInteger(bt(O)), 0)
2642- let hu = ho(hp, hq, hr)
2643- let lo = dc(invoke(cI, "recalcLockedVolumeREADONLY", [O, hu], nil))
2644- let jh = hf(hu)
2645- let lp = hd(hu[aV])
2646- let ji = ((lp - lo) - jh)
2647- let lq = makeString_2C([hu[aV], hu[aW], hu[aX], hu[aY], makeString([toString(lo), toString(jh), toString(ji), toString(lp)], "_")], ":")
2648- $Tuple2([StringEntry(hp, lq)], lq)
2661+ let hr = bs(O)
2662+ let iU = value(assetInfo(fromBase58String(O)))
2663+ let hs = (dg(split(iU.description, "_")[cO]) / cn)
2664+ let ht = valueOrElse(getInteger(bt(O)), 0)
2665+ let hw = hq(hr, hs, ht)
2666+ let lu = dd(invoke(cJ, "recalcLockedVolumeREADONLY", [O, hw], nil))
2667+ let jj = hh(hw)
2668+ let lv = hf(hw[aV])
2669+ let jk = ((lv - lu) - jj)
2670+ let lw = makeString_2C([hw[aV], hw[aW], hw[aX], hw[aY], makeString([toString(lu), toString(jj), toString(jk), toString(lv)], "_")], ":")
2671+ $Tuple2([StringEntry(hr, lw)], lw)
26492672 }
26502673
26512674
26522675
2653-@Callable(fZ)
2654-func fixContinentProportions (jT) = if ((fZ.caller != cH))
2676+@Callable(gb)
2677+func fixContinentProportions (jV) = if ((gb.caller != cI))
26552678 then throw("Access denied")
26562679 else {
2657- func lr (eg,ls) = (eg :+ valueOrElse(getString(cV(ls)), "0_0_0_0_0_0"))
2658-
2659- let fJ = {
2660- let ei = aM
2661- let ej = size(ei)
2662- let ek = nil
2663- func el (em,en) = if ((en >= ej))
2664- then em
2665- else lr(em, ei[en])
2666-
2667- func eo (em,en) = if ((en >= ej))
2668- then em
2680+ func lx (ei,ly) = (ei :+ valueOrElse(getString(cW(ly)), "0_0_0_0_0_0"))
2681+
2682+ let fL = {
2683+ let ek = aM
2684+ let el = size(ek)
2685+ let em = nil
2686+ func en (eo,ep) = if ((ep >= el))
2687+ then eo
2688+ else lx(eo, ek[ep])
2689+
2690+ func eq (eo,ep) = if ((ep >= el))
2691+ then eo
26692692 else throw("List size exceeds 5")
26702693
2671- eo(el(el(el(el(el(ek, 0), 1), 2), 3), 4), 5)
2672- }
2673- func lt (eg,O) = {
2674- let iS = value(assetInfo(fromBase58String(O)))
2675- let iW = split(iS.description, "_")
2676- let hq = (de(iW[cN]) / cm)
2677- let ls = iW[cP]
2678- let fV = gb(iW[cO])
2679- let gD = value(indexOf(aM, ls))
2680- let ki = split(eg[gD], "_")
2681- let lu = makeString(fT(ki, fV, hq, 1), "_")
2682- let cf = ls
2683- if (("Americas" == cf))
2684- then [lu, eg[1], eg[2], eg[3], eg[4]]
2685- else if (("Europe" == cf))
2686- then [eg[0], lu, eg[2], eg[3], eg[4]]
2687- else if (("Asia" == cf))
2688- then [eg[0], eg[1], lu, eg[3], eg[4]]
2689- else if (("Africa" == cf))
2690- then [eg[0], eg[1], eg[2], lu, eg[4]]
2691- else if (("Oceania" == cf))
2692- then [eg[0], eg[1], eg[2], eg[3], lu]
2694+ eq(en(en(en(en(en(em, 0), 1), 2), 3), 4), 5)
2695+ }
2696+ func lz (ei,O) = {
2697+ let iU = value(assetInfo(fromBase58String(O)))
2698+ let iY = split(iU.description, "_")
2699+ let hs = (dg(iY[cO]) / cn)
2700+ let ly = iY[cQ]
2701+ let fX = gd(iY[cP])
2702+ let gF = value(indexOf(aM, ly))
2703+ let kk = split(ei[gF], "_")
2704+ let lA = makeString(fV(kk, fX, hs, 1), "_")
2705+ let cg = ly
2706+ if (("Americas" == cg))
2707+ then [lA, ei[1], ei[2], ei[3], ei[4]]
2708+ else if (("Europe" == cg))
2709+ then [ei[0], lA, ei[2], ei[3], ei[4]]
2710+ else if (("Asia" == cg))
2711+ then [ei[0], ei[1], lA, ei[3], ei[4]]
2712+ else if (("Africa" == cg))
2713+ then [ei[0], ei[1], ei[2], lA, ei[4]]
2714+ else if (("Oceania" == cg))
2715+ then [ei[0], ei[1], ei[2], ei[3], lA]
26932716 else throw("wrong continent")
26942717 }
26952718
2696- let er = {
2697- let ei = jT
2698- let ej = size(ei)
2699- let ek = fJ
2700- func gW (em,en) = if ((en >= ej))
2701- then em
2702- else lt(em, ei[en])
2703-
2704- func gX (em,en) = if ((en >= ej))
2705- then em
2719+ let et = {
2720+ let ek = jV
2721+ let el = size(ek)
2722+ let em = fL
2723+ func gY (eo,ep) = if ((ep >= el))
2724+ then eo
2725+ else lz(eo, ek[ep])
2726+
2727+ func gZ (eo,ep) = if ((ep >= el))
2728+ then eo
27062729 else throw("List size exceeds 100")
27072730
2708- gX(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(ek, 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)
2709- }
2710- $Tuple2([StringEntry(cV("Americas"), er[0]), StringEntry(cV("Europe"), er[1]), StringEntry(cV("Asia"), er[2]), StringEntry(cV("Africa"), er[3]), StringEntry(cV("Oceania"), er[4])], 0)
2731+ gZ(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(em, 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)
2732+ }
2733+ $Tuple2([StringEntry(cW("Americas"), et[0]), StringEntry(cW("Europe"), et[1]), StringEntry(cW("Asia"), et[2]), StringEntry(cW("Africa"), et[3]), StringEntry(cW("Oceania"), et[4])], 0)
27112734 }
27122735
27132736
27142737
2715-@Callable(fZ)
2716-func fixStakedPieces (ct) = if ((fZ.caller != cH))
2738+@Callable(gb)
2739+func fixStakedPieces (cu) = if ((gb.caller != cI))
27172740 then throw("Access denied")
27182741 else {
2719- let km = if ((ct == ""))
2742+ let ko = if ((cu == ""))
27202743 then 0
27212744 else {
2722- let kf = getString(al, cX(ct))
2723- let kb = if (isDefined(kf))
2724- then split_51C(value(kf), "_")
2745+ let kh = getString(al, cY(cu))
2746+ let kd = if (isDefined(kh))
2747+ then split_51C(value(kh), "_")
27252748 else nil
2726- func lv (eg,O) = {
2727- let iS = value(assetInfo(fromBase58String(O)))
2728- let df = split(iS.description, "_")[cN]
2729- (eg + de(df))
2749+ func lB (ei,O) = {
2750+ let iU = value(assetInfo(fromBase58String(O)))
2751+ let dh = split(iU.description, "_")[cO]
2752+ (ei + dg(dh))
27302753 }
27312754
2732- let ei = kb
2733- let ej = size(ei)
2734- let ek = 0
2735- func el (em,en) = if ((en >= ej))
2736- then em
2737- else lv(em, ei[en])
2738-
2739- func eo (em,en) = if ((en >= ej))
2740- then em
2755+ let ek = kd
2756+ let el = size(ek)
2757+ let em = 0
2758+ func en (eo,ep) = if ((ep >= el))
2759+ then eo
2760+ else lB(eo, ek[ep])
2761+
2762+ func eq (eo,ep) = if ((ep >= el))
2763+ then eo
27412764 else throw("List size exceeds 100")
27422765
2743- eo(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(ek, 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)
2766+ eq(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(em, 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)
27442767 }
2745- $Tuple2([IntegerEntry(cY(ct), km)], km)
2768+ $Tuple2([IntegerEntry(cZ(cu), ko)], ko)
27462769 }
27472770
27482771
27492772
2750-@Callable(fZ)
2751-func setCustomName (bk,kd,bo) = {
2752- let kv = ks(fZ)
2753- if ((size(fZ.payments) != 1))
2773+@Callable(gb)
2774+func setCustomName (bk,kf,bo) = {
2775+ let kx = ku(gb)
2776+ if ((size(gb.payments) != 1))
27542777 then throw("Exactly one payment required")
27552778 else {
2756- let kw = value(fZ.payments[0])
2757- if ((kw.assetId != ce))
2779+ let ky = value(gb.payments[0])
2780+ if ((ky.assetId != cf))
27582781 then throw("Allowed USDT payment only!")
2759- else if ((kw.amount != ds))
2760- then throw(("Payment should be " + toString(ds)))
2761- else if (contains(kd, "__"))
2762- then throw(("Name should not contain '__': " + kd))
2763- else if ((size(kd) > dt))
2764- then throw(("Name too long, maxLength=" + toString(dt)))
2782+ else if ((ky.amount != du))
2783+ then throw(("Payment should be " + toString(du)))
2784+ else if (contains(kf, "__"))
2785+ then throw(("Name should not contain '__': " + kf))
2786+ else if ((size(kf) > dv))
2787+ then throw(("Name too long, maxLength=" + toString(dv)))
27652788 else {
2766- let b = toString(fZ.originCaller)
2767- let lw = {
2768- let cf = bo
2769- if (("ACCOUNT" == cf))
2789+ let b = toString(gb.originCaller)
2790+ let lC = {
2791+ let cg = bo
2792+ if (("ACCOUNT" == cg))
27702793 then {
2771- let lx = dM(kd)
2772- let ly = getString(lx)
2773- if (isDefined(ly))
2774- then throw(("Name already registered: " + kd))
2794+ let lD = dO(kf)
2795+ let lE = getString(lD)
2796+ if (isDefined(lE))
2797+ then throw(("Name already registered: " + kf))
27752798 else {
2776- let lz = bw(b)
2777- let lA = getString(lz)
2778- let lB = if (isDefined(lA))
2779- then [DeleteEntry(dM(value(lA)))]
2799+ let lF = bw(b)
2800+ let lG = getString(lF)
2801+ let lH = if (isDefined(lG))
2802+ then [DeleteEntry(dO(value(lG)))]
27802803 else nil
2781- (((lB :+ StringEntry(lz, kd)) :+ StringEntry(lx, b)) ++ jD(b, W)._1)
2804+ (((lH :+ StringEntry(lF, kf)) :+ StringEntry(lD, b)) ++ jF(b, W)._1)
27822805 }
27832806 }
2784- else if (("LAND" == cf))
2807+ else if (("LAND" == cg))
27852808 then {
2786- let iS = value(assetInfo(fromBase58String(bk)))
2787- let iT = bm(bk)
2788- if (!(isDefined(getInteger(iT))))
2789- then throw((iS.name + " is not staked"))
2809+ let iU = value(assetInfo(fromBase58String(bk)))
2810+ let iV = bm(bk)
2811+ if (!(isDefined(getInteger(iV))))
2812+ then throw((iU.name + " is not staked"))
27902813 else {
2791- let iV = valueOrErrorMessage(getString(bj(bk)), (("NFT " + iS.name) + " is orphaned"))
2792- if ((iV != b))
2814+ let iX = valueOrErrorMessage(getString(bj(bk)), (("NFT " + iU.name) + " is orphaned"))
2815+ if ((iX != b))
27932816 then throw((aA + " is not yours"))
27942817 else {
2795- let lx = dF(kd)
2796- let ly = getString(lx)
2797- if (isDefined(ly))
2798- then throw(("Name already registered: " + kd))
2818+ let lD = dH(kf)
2819+ let lE = getString(lD)
2820+ if (isDefined(lE))
2821+ then throw(("Name already registered: " + kf))
27992822 else {
2800- let lC = bl(bk)
2801- let lA = getString(lC)
2802- let lB = if (isDefined(lA))
2803- then [DeleteEntry(dF(value(lA)))]
2823+ let lI = bl(bk)
2824+ let lG = getString(lI)
2825+ let lH = if (isDefined(lG))
2826+ then [DeleteEntry(dH(value(lG)))]
28042827 else nil
2805- (((lB :+ StringEntry(lC, kd)) :+ StringEntry(lx, bk)) ++ jD(b, W)._1)
2828+ (((lH :+ StringEntry(lI, kf)) :+ StringEntry(lD, bk)) ++ jF(b, W)._1)
28062829 }
28072830 }
28082831 }
28092832 }
2810- else if (("DUCK" == cf))
2833+ else if (("DUCK" == cg))
28112834 then {
2812- let iS = value(assetInfo(fromBase58String(bk)))
2813- let iT = bm(bk)
2814- if (if (!(isDefined(getInteger(iT))))
2835+ let iU = value(assetInfo(fromBase58String(bk)))
2836+ let iV = bm(bk)
2837+ if (if (!(isDefined(getInteger(iV))))
28152838 then true
28162839 else !(isDefined(getString(bC(b)))))
2817- then throw((iS.name + " is not staked"))
2840+ then throw((iU.name + " is not staked"))
28182841 else {
2819- let iV = valueOrErrorMessage(getString(bB(bk)), (("NFT " + iS.name) + " is orphaned"))
2820- if ((iV != b))
2842+ let iX = valueOrErrorMessage(getString(bB(bk)), (("NFT " + iU.name) + " is orphaned"))
2843+ if ((iX != b))
28212844 then throw((aB + " is not yours"))
28222845 else {
2823- let lx = dL(kd)
2824- let ly = getString(lx)
2825- if (isDefined(ly))
2826- then throw(("Name already registered: " + kd))
2846+ let lD = dN(kf)
2847+ let lE = getString(lD)
2848+ if (isDefined(lE))
2849+ then throw(("Name already registered: " + kf))
28272850 else {
2828- let lC = bv(bk)
2829- let lA = getString(lC)
2830- let lB = if (isDefined(lA))
2831- then [DeleteEntry(dL(value(lA)))]
2851+ let lI = bv(bk)
2852+ let lG = getString(lI)
2853+ let lH = if (isDefined(lG))
2854+ then [DeleteEntry(dN(value(lG)))]
28322855 else nil
2833- (((lB :+ StringEntry(lC, kd)) :+ StringEntry(lx, bk)) ++ jx(bk, W)._1)
2856+ (((lH :+ StringEntry(lI, kf)) :+ StringEntry(lD, bk)) ++ jz(bk, W)._1)
28342857 }
28352858 }
28362859 }
28372860 }
28382861 else throw("Unknown entity type")
28392862 }
2840- $Tuple2(((lw :+ ScriptTransfer(cI, kw.amount, ce)) :+ kv), 0)
2863+ $Tuple2(((lC :+ ScriptTransfer(cJ, ky.amount, cf)) :+ kx), 0)
28412864 }
28422865 }
28432866 }
28442867
28452868
28462869
2847-@Callable(fZ)
2848-func setReferrals (lD,lE) = if ((fZ.callerPublicKey != dp))
2870+@Callable(gb)
2871+func setReferrals (lJ,lK) = if ((gb.callerPublicKey != dr))
28492872 then throw("Permission denied")
28502873 else {
2851- let kv = ks(fZ)
2852- if ((size(fZ.payments) != 0))
2874+ let kx = ku(gb)
2875+ if ((size(gb.payments) != 0))
28532876 then throw("No payments required")
2854- else if (!(isDefined(addressFromString(lD))))
2855- then throw(("Invalid address: " + lD))
2856- else if (!(isDefined(addressFromString(lE))))
2857- then throw(("Invalid address: " + lE))
2877+ else if (!(isDefined(addressFromString(lJ))))
2878+ then throw(("Invalid address: " + lJ))
2879+ else if (!(isDefined(addressFromString(lK))))
2880+ then throw(("Invalid address: " + lK))
28582881 else {
2859- let lF = dN()
2860- let lG = getString(lF)
2861- let lH = if (isDefined(lG))
2862- then split_4C(value(lG), "_")
2882+ let lL = dP()
2883+ let lM = getString(lL)
2884+ let lN = if (isDefined(lM))
2885+ then split_4C(value(lM), "_")
28632886 else nil
2864- if (containsElement(lH, lE))
2865- then throw((lE + " is not newbie (already has referrals)"))
2887+ if (containsElement(lN, lK))
2888+ then throw((lK + " is not newbie (already has referrals)"))
28662889 else {
2867- let jF = bx(lE)
2868- let jG = getString(jF)
2869- if (if (isDefined(jG))
2870- then isDefined(addressFromString(value(jG)))
2890+ let jH = bx(lK)
2891+ let jI = getString(jH)
2892+ if (if (isDefined(jI))
2893+ then isDefined(addressFromString(value(jI)))
28712894 else false)
2872- then throw(((lE + " already has refBy: ") + value(jG)))
2895+ then throw(((lK + " already has refBy: ") + value(jI)))
28732896 else {
2874- let lI = bA(lD)
2875- let lJ = getString(lI)
2876- let lK = if (isDefined(lJ))
2877- then split_4C(value(lJ), "_")
2897+ let lO = bA(lJ)
2898+ let lP = getString(lO)
2899+ let lQ = if (isDefined(lP))
2900+ then split_4C(value(lP), "_")
28782901 else nil
2879- if (containsElement(lK, lE))
2880- then throw((((lD + " already contains ") + lE) + " within referrals"))
2902+ if (containsElement(lQ, lK))
2903+ then throw((((lJ + " already contains ") + lK) + " within referrals"))
28812904 else {
2882- let lL = makeString_2C((lK :+ lE), "_")
2883- let lM = if (containsElement(lH, lD))
2884- then value(lG)
2885- else makeString_2C((lH :+ lD), "_")
2886- $Tuple2([StringEntry(jF, lD), StringEntry(lI, lL), StringEntry(lF, lM), kv], 0)
2905+ let lR = makeString_2C((lQ :+ lK), "_")
2906+ let lS = if (containsElement(lN, lJ))
2907+ then value(lM)
2908+ else makeString_2C((lN :+ lJ), "_")
2909+ $Tuple2([StringEntry(jH, lJ), StringEntry(lO, lR), StringEntry(lL, lS), kx], 0)
28872910 }
28882911 }
28892912 }
28922915
28932916
28942917
2895-@Callable(fZ)
2896-func distributePoints (lN,lO,lP,lQ,lR) = {
2897- let kv = ks(fZ)
2898- if ((size(fZ.payments) != 0))
2918+@Callable(gb)
2919+func distributePoints (lT,lU,lV,lW,lX) = {
2920+ let kx = ku(gb)
2921+ if ((size(gb.payments) != 0))
28992922 then throw("No payments required")
29002923 else {
2901- let b = toString(fZ.originCaller)
2924+ let b = toString(gb.originCaller)
29022925 let z = valueOrErrorMessage(getString(bC(b)), "You don't have a duck staked")
2903- let lS = H(b)
2904- let lT = valueOrElse(getInteger(al, lS), 0)
2905- let lU = D(z)
2906- let lV = valueOrElse(getInteger(al, lU), 0)
2907- let lW = (lT + lV)
2908- let lX = ((((lN + lO) + lP) + lQ) + lR)
2909- if ((lX > lW))
2910- then throw((("There are only " + toString(lW)) + " free points to distribute"))
2926+ let lY = H(b)
2927+ let lZ = valueOrElse(getInteger(al, lY), 0)
2928+ let ma = D(z)
2929+ let mb = valueOrElse(getInteger(al, ma), 0)
2930+ let mc = (lZ + mb)
2931+ let md = ((((lT + lU) + lV) + lW) + lX)
2932+ if ((md > mc))
2933+ then throw((("There are only " + toString(mc)) + " free points to distribute"))
29112934 else {
2912- let lY = A(z)
2913- let ao = split(valueOrElse(getString(al, lY), "0_0_0_0_0"), "_")
2914- let lZ = (lT - lX)
2915- $Tuple2([IntegerEntry(lS, if ((0 > lZ))
2935+ let me = A(z)
2936+ let ao = split(valueOrElse(getString(al, me), "0_0_0_0_0"), "_")
2937+ let mf = (lZ - md)
2938+ $Tuple2([IntegerEntry(lY, if ((0 > mf))
29162939 then 0
2917- else lZ), IntegerEntry(lU, if ((0 > lZ))
2918- then (lV + lZ)
2919- else lV), StringEntry(lY, makeString([toString((parseIntValue(ao[j]) + lN)), toString((parseIntValue(ao[k]) + lO)), toString((parseIntValue(ao[l]) + lP)), toString((parseIntValue(ao[m]) + lQ)), toString((parseIntValue(ao[n]) + lR))], "_")), kv], 0)
2940+ else mf), IntegerEntry(ma, if ((0 > mf))
2941+ then (mb + mf)
2942+ else mb), StringEntry(me, makeString([toString((parseIntValue(ao[j]) + lT)), toString((parseIntValue(ao[k]) + lU)), toString((parseIntValue(ao[l]) + lV)), toString((parseIntValue(ao[m]) + lW)), toString((parseIntValue(ao[n]) + lX))], "_")), kx], 0)
29202943 }
29212944 }
29222945 }
29232946
29242947
29252948
2926-@Callable(fZ)
2927-func splitByGlobalWeightsREADONLY (dX) = $Tuple2(nil, ep(dX))
2928-
2929-
2930-
2931-@Callable(fZ)
2932-func splitByGlobalAndLocalWeightsREADONLY (ma,mb,gc) = {
2933- let fV = gb(gc)
2934- $Tuple2(nil, $Tuple2(ep(ma), ea(mb, fV)))
2935- }
2936-
2937-
2938-
2939-@Callable(fZ)
2940-func getBackpackREADONLY (z) = $Tuple2(nil, makeString(hb(bD(z)), ":"))
2941-
2942-
2943-
2944-@Callable(fZ)
2949+@Callable(gb)
2950+func splitByGlobalWeightsREADONLY (dZ) = $Tuple2(nil, er(dZ))
2951+
2952+
2953+
2954+@Callable(gb)
2955+func splitByGlobalAndLocalWeightsREADONLY (mg,mh,ge) = {
2956+ let fX = gd(ge)
2957+ $Tuple2(nil, $Tuple2(er(mg), ec(mh, fX)))
2958+ }
2959+
2960+
2961+
2962+@Callable(gb)
2963+func getBackpackREADONLY (z) = $Tuple2(nil, makeString(hd(bD(z)), ":"))
2964+
2965+
2966+
2967+@Callable(gb)
29452968 func getWarehouseREADONLY (O) = {
2946- let iS = value(assetInfo(fromBase58String(O)))
2947- let hq = (de(split(iS.description, "_")[cN]) / cm)
2948- let hr = valueOrElse(getInteger(bt(O)), 0)
2949- $Tuple2(nil, makeString_2C(ho(bs(O), hq, hr), ":"))
2950- }
2951-
2952-
2953-
2954-@Callable(fZ)
2969+ let iU = value(assetInfo(fromBase58String(O)))
2970+ let hs = (dg(split(iU.description, "_")[cO]) / cn)
2971+ let ht = valueOrElse(getInteger(bt(O)), 0)
2972+ $Tuple2(nil, makeString_2C(hq(bs(O), hs, ht), ":"))
2973+ }
2974+
2975+
2976+
2977+@Callable(gb)
29552978 func saveLastTx () = {
2956- let ia = fZ.caller
2957- if (if (if ((ia != cK))
2958- then (ia != cI)
2979+ let ic = gb.caller
2980+ if (if (if ((ic != cL))
2981+ then (ic != cJ)
29592982 else false)
2960- then (ia != cL)
2983+ then (ic != cM)
29612984 else false)
29622985 then throw("Access denied")
2963- else $Tuple2([ks(fZ)], 42)
2964- }
2965-
2966-
2967-
2968-@Callable(fZ)
2969-func updateDuckStats (z,jy) = if ((fZ.caller != cI))
2986+ else $Tuple2([ku(gb)], 42)
2987+ }
2988+
2989+
2990+
2991+@Callable(gb)
2992+func updateDuckStats (z,jA) = if ((gb.caller != cJ))
29702993 then throw("Access denied")
2971- else jx(z, jy)
2972-
2973-
2974-
2975-@Callable(fZ)
2976-func updateAccStats (b,jy) = if ((fZ.caller != cI))
2994+ else jz(z, jA)
2995+
2996+
2997+
2998+@Callable(gb)
2999+func updateAccStats (b,jA) = if ((gb.caller != cJ))
29773000 then throw("Access denied")
2978- else jD(b, jy)
2979-
2980-
2981-
2982-@Callable(fZ)
2983-func equipDuck (mc) = {
2984- let kv = ks(fZ)
2985- if ((size(fZ.payments) != 0))
3001+ else jF(b, jA)
3002+
3003+
3004+
3005+@Callable(gb)
3006+func equipDuck (mi) = {
3007+ let kx = ku(gb)
3008+ if ((size(gb.payments) != 0))
29863009 then throw("No payments required")
29873010 else {
2988- let b = toString(fZ.originCaller)
3011+ let b = toString(gb.originCaller)
29893012 let z = valueOrErrorMessage(getString(bC(b)), "You don't have a duck staked")
2990- if (jN(z))
3013+ if (jP(z))
29913014 then throw("equipDuck_checkTournament")
29923015 else {
2993- let fM = E(z)
2994- let md = split(valueOrElse(getString(fM), ",;,_,;,_,;,_,;,_,;,_,;,"), "_")
2995- let hc = bD(z)
2996- let hF = hb(hc)
2997- let iD = split(mc, "_")
2998- if ((size(iD) != p))
3016+ let fO = E(z)
3017+ let mj = split(valueOrElse(getString(fO), ",;,_,;,_,;,_,;,_,;,_,;,"), "_")
3018+ let he = bD(z)
3019+ let hH = hd(he)
3020+ let iF = split(mi, "_")
3021+ if ((size(iF) != p))
29993022 then throw("Wrong equipment string")
30003023 else {
3001- let fO = fB(md, eM(hF[bh]), true, nil)
3002- let fP = split(iD[o], ";")[1]
3003- let am = if ((fP == ""))
3024+ let fQ = fD(mj, eO(hH[bh]), true, nil)
3025+ let fR = split(iF[o], ";")[1]
3026+ let am = if ((fR == ""))
30043027 then 0
30053028 else {
3006- let fQ = split(fP, ",")[0]
3007- if ((fQ == ""))
3029+ let fS = split(fR, ",")[0]
3030+ if ((fS == ""))
30083031 then 0
30093032 else {
3010- let fb = split(fQ, ":")
3011- let cG = fb[0]
3012- let fR = fb[1]
3013- if (if (if (if (if ((cG == "06"))
3033+ let fd = split(fS, ":")
3034+ let cH = fd[0]
3035+ let fT = fd[1]
3036+ if (if (if (if (if ((cH == "06"))
30143037 then true
3015- else (cG == "07"))
3038+ else (cH == "07"))
30163039 then true
3017- else (cG == "08"))
3018- then (fR != "")
3040+ else (cH == "08"))
3041+ then (fT != "")
30193042 else false)
3020- then (parseIntValue(fR) > 0)
3043+ then (parseIntValue(fT) > 0)
30213044 else false)
3022- then parseIntValue(split(aP[parseIntValue(cG)], "_")[aR])
3045+ then parseIntValue(split(aP[parseIntValue(cH)], "_")[aR])
30233046 else 0
30243047 }
30253048 }
3026- let fw = ak(this, z, am, true)
3027- let fS = fB(iD, fO, false, fw)
3028- let me = eR(fS)
3029- $Tuple2([StringEntry(fM, mc), StringEntry(hc, makeString_2C([hF[be], hF[bf], hF[bg], me], ":")), StringEntry(K(z), makeString([toString(fw[7]), toString(fw[8]), toString(fw[9]), toString(fw[10]), toString(fw[11])], "_")), kv], 0)
3049+ let fy = ak(this, z, am, true)
3050+ let fU = fD(iF, fQ, false, fy)
3051+ let mk = eT(fU)
3052+ $Tuple2([StringEntry(fO, mi), StringEntry(he, makeString_2C([hH[be], hH[bf], hH[bg], mk], ":")), StringEntry(K(z), makeString([toString(fy[7]), toString(fy[8]), toString(fy[9]), toString(fy[10]), toString(fy[11])], "_")), kx], 0)
30303053 }
30313054 }
30323055 }
30343057
30353058
30363059
3037-@Callable(fZ)
3038-func fortificateLand (O,mf) = {
3039- let kv = ks(fZ)
3040- if ((size(fZ.payments) != 0))
3060+@Callable(gb)
3061+func fortificateLand (O,ml) = {
3062+ let kx = ku(gb)
3063+ if ((size(gb.payments) != 0))
30413064 then throw("No payments required")
30423065 else {
3043- let b = toString(fZ.originCaller)
3066+ let b = toString(gb.originCaller)
30443067 let z = valueOrElse(getString(bC(b)), "")
3045- let eW = ak(this, z, 0, false)
3046- let mg = bu(O)
3047- let mh = split(valueOrElse(getString(mg), ":0_15:0_18:0"), "_")
3048- let iS = value(assetInfo(fromBase58String(O)))
3049- let hq = (de(split(iS.description, "_")[cN]) / cm)
3050- let hr = valueOrElse(getInteger(bt(O)), 0)
3051- let hp = bs(O)
3052- let hu = ho(hp, hq, hr)
3053- let mi = split(hu[aZ], "_")
3054- let mj = parseIntValue(mi[bb])
3055- let mk = parseIntValue(mi[bc])
3056- let ml = split(mf, "_")
3057- let mm = fI(mh, eM(hu[aY]), mj, mk, true, nil)
3058- let fO = mm._1
3059- let mn = mm._2
3060- let mo = mm._3
3061- let mp = fI(ml, fO, mn, mo, false, eW)
3062- let fS = mp._1
3063- let mq = mp._2
3064- let mr = mp._3
3065- let me = eR(fS)
3066- let jw = makeString([mi[ba], toString(mq), toString(mr), mi[bd]], "_")
3067- $Tuple2([StringEntry(mg, mf), StringEntry(hp, makeString_2C([hu[aV], hu[aW], hu[aX], me, jw], ":")), kv], 0)
3068- }
3069- }
3070-
3071-
3072-
3073-@Callable(fZ)
3074-func initDuckTourAttempt (z) = if ((fZ.caller != cL))
3068+ let eY = ak(this, z, 0, false)
3069+ let mm = bu(O)
3070+ let mn = split(valueOrElse(getString(mm), ":0_15:0_18:0"), "_")
3071+ let iU = value(assetInfo(fromBase58String(O)))
3072+ let hs = (dg(split(iU.description, "_")[cO]) / cn)
3073+ let ht = valueOrElse(getInteger(bt(O)), 0)
3074+ let hr = bs(O)
3075+ let hw = hq(hr, hs, ht)
3076+ let mo = split(hw[aZ], "_")
3077+ let mp = parseIntValue(mo[bb])
3078+ let mq = parseIntValue(mo[bc])
3079+ let mr = split(ml, "_")
3080+ let ms = fK(mn, eO(hw[aY]), mp, mq, true, nil)
3081+ let fQ = ms._1
3082+ let mt = ms._2
3083+ let mu = ms._3
3084+ let mv = fK(mr, fQ, mt, mu, false, eY)
3085+ let fU = mv._1
3086+ let mw = mv._2
3087+ let mx = mv._3
3088+ let mk = eT(fU)
3089+ let jy = makeString([mo[ba], toString(mw), toString(mx), mo[bd]], "_")
3090+ $Tuple2([StringEntry(mm, ml), StringEntry(hr, makeString_2C([hw[aV], hw[aW], hw[aX], mk, jy], ":")), kx], 0)
3091+ }
3092+ }
3093+
3094+
3095+
3096+@Callable(gb)
3097+func initDuckTourAttempt (z) = if ((gb.caller != cM))
30753098 then throw("Access denied")
30763099 else {
3077- let kv = ks(fZ)
3078- let is = y(z)
3079- let it = ae(valueOrElse(getInteger(C(z)), 0))
3080- let kJ = valueOrElse(getInteger(is), it)
3081- let ms = bE(z)
3082- let iP = valueOrElse(getString(ms), aI)
3083- let jO = valueOrElse(getInteger(cL, bJ), 0)
3084- let mt = (toString(jO) + "_T_0")
3085- $Tuple2([kv, IntegerEntry(I(z), kJ), IntegerEntry(is, it), StringEntry(J(z), iP), StringEntry(ms, mt)], mt)
3100+ let kx = ku(gb)
3101+ let iu = y(z)
3102+ let iv = ae(valueOrElse(getInteger(C(z)), 0))
3103+ let kL = valueOrElse(getInteger(iu), iv)
3104+ let my = bE(z)
3105+ let iR = valueOrElse(getString(my), aI)
3106+ let jQ = valueOrElse(getInteger(cM, bJ), 0)
3107+ let mz = (toString(jQ) + "_T_0")
3108+ $Tuple2([kx, IntegerEntry(I(z), kL), IntegerEntry(iu, iv), StringEntry(J(z), iR), StringEntry(my, mz)], mz)
30863109 }
30873110
30883111
30893112
3090-@Callable(fZ)
3113+@Callable(gb)
30913114 func breakAttempt () = {
3092- let kv = ks(fZ)
3093- let z = valueOrErrorMessage(getString(bC(toString(fZ.caller))), "You don't have a duck staked")
3094- let ms = bE(z)
3095- let iP = valueOrElse(getString(ms), aI)
3096- if ((split(iP, "_")[bX] != "T"))
3115+ let kx = ku(gb)
3116+ let z = valueOrErrorMessage(getString(bC(toString(gb.caller))), "You don't have a duck staked")
3117+ let my = bE(z)
3118+ let iR = valueOrElse(getString(my), aI)
3119+ if ((split(iR, "_")[bX] != "T"))
30973120 then throw("Your duck is not in the tournament")
30983121 else {
3099- let mu = getIntegerValue(I(z))
3100- let mv = getStringValue(J(z))
3101- $Tuple2([kv, IntegerEntry(y(z), mu), StringEntry(ms, mv)], iP)
3102- }
3103- }
3104-
3105-
3106-
3107-@Callable(fZ)
3108-func exitTournamentInternal (z) = if ((fZ.caller != this))
3122+ let mA = getIntegerValue(I(z))
3123+ let mB = getStringValue(J(z))
3124+ $Tuple2([kx, IntegerEntry(y(z), mA), StringEntry(my, mB)], iR)
3125+ }
3126+ }
3127+
3128+
3129+
3130+@Callable(gb)
3131+func exitTournamentInternal (z) = if ((gb.caller != this))
31093132 then throw("Access denied")
31103133 else {
3111- let mu = getIntegerValue(I(z))
3112- let mv = getStringValue(J(z))
3113- $Tuple2([IntegerEntry(y(z), mu), StringEntry(bE(z), mv)], 0)
3134+ let mA = getIntegerValue(I(z))
3135+ let mB = getStringValue(J(z))
3136+ $Tuple2([IntegerEntry(y(z), mA), StringEntry(bE(z), mB)], false)
31143137 }
31153138
31163139
31173140
3118-@Callable(fZ)
3119-func prepareRobbery (ih,ii) = {
3120- let kv = ks(fZ)
3121- if (!(sigVerify_8Kb(ih, ii, dp)))
3141+@Callable(gb)
3142+func prepareRobbery (ij,ik) = {
3143+ let kx = ku(gb)
3144+ if (!(sigVerify_8Kb(ij, ik, dr)))
31223145 then throw("signature does not match")
3123- else if ((size(fZ.payments) != 1))
3146+ else if ((size(gb.payments) != 1))
31243147 then throw("exactly 1 payment must be attached")
31253148 else {
3126- let kw = fZ.payments[0]
3127- let mw = kw.amount
3128- if (if (!(isDefined(kw.assetId)))
3149+ let ky = gb.payments[0]
3150+ let mC = ky.amount
3151+ if (if (!(isDefined(ky.assetId)))
31293152 then true
3130- else (value(kw.assetId) != cR))
3153+ else (value(ky.assetId) != cS))
31313154 then throw("WLGOLD payments only!")
31323155 else {
3133- let eE = split(toUtf8String(ih), "|")
3134- if ((size(eE) != 2))
3156+ let eG = split(toUtf8String(ij), "|")
3157+ if ((size(eG) != 2))
31353158 then throw("Wrong message format")
31363159 else {
3137- let z = eE[0]
3160+ let z = eG[0]
31383161 let aw = as(this, z)._1
3139- if ((aw > mw))
3140- then throw(((("Payment " + toString(mw)) + " < required ") + toString(aw)))
3162+ if ((aw > mC))
3163+ then throw(((("Payment " + toString(mC)) + " < required ") + toString(aw)))
31413164 else {
3142- let mx = split(eE[1], "_")
3165+ let mD = split(eG[1], "_")
31433166 let av = lastBlock.timestamp
31443167 let ax = valueOrElse(getInteger(Q(z)), 0)
31453168 let ay = valueOrElse(getString(R(z)), "")
31493172 else false)
31503173 then throw(("You already started robbing, wait till " + toString(az)))
31513174 else {
3152- func my (eg,O) = {
3153- let mz = valueOrElse(getInteger(N(O)), 0)
3154- let mA = valueOrElse(getInteger(P(O)), 0)
3155- if ((mz > size(t)))
3175+ func mE (ei,O) = {
3176+ let mF = valueOrElse(getInteger(N(O)), 0)
3177+ let mG = valueOrElse(getInteger(P(O)), 0)
3178+ if ((mF > size(t)))
31563179 then throw("Invalid state")
3157- else if ((av > mA))
3180+ else if ((av > mG))
31583181 then {
3159- let mB = valueOrElse(getInteger(bm(O)), 0)
3160- if ((0 >= mB))
3161- then eg
3182+ let mH = valueOrElse(getInteger(bm(O)), 0)
3183+ if ((0 >= mH))
3184+ then ei
31623185 else {
3163- let fG = value(assetInfo(fromBase58String(O)))
3164- let iW = split(fG.description, "_")
3165- let iH = de(iW[cN])
3166- let mC = iG(O, iH)
3167- let gf = (av - mB)
3168- let iZ = fraction(gf, (mC * iH), aG)
3169- if ((u > iZ))
3170- then eg
3171- else (eg :+ O)
3186+ let fI = value(assetInfo(fromBase58String(O)))
3187+ let iY = split(fI.description, "_")
3188+ let iJ = dg(iY[cO])
3189+ let mI = iI(O, iJ)
3190+ let gh = (av - mH)
3191+ let jb = fraction(gh, (mI * iJ), aG)
3192+ if ((u > jb))
3193+ then ei
3194+ else (ei :+ O)
31723195 }
31733196 }
3174- else eg
3197+ else ei
31753198 }
31763199
3177- let mD = {
3178- let ei = mx
3179- let ej = size(ei)
3180- let ek = nil
3181- func el (em,en) = if ((en >= ej))
3182- then em
3183- else my(em, ei[en])
3184-
3185- func eo (em,en) = if ((en >= ej))
3186- then em
3200+ let mJ = {
3201+ let ek = mD
3202+ let el = size(ek)
3203+ let em = nil
3204+ func en (eo,ep) = if ((ep >= el))
3205+ then eo
3206+ else mE(eo, ek[ep])
3207+
3208+ func eq (eo,ep) = if ((ep >= el))
3209+ then eo
31873210 else throw("List size exceeds 10")
31883211
3189- eo(el(el(el(el(el(el(el(el(el(el(ek, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
3212+ eq(en(en(en(en(en(en(en(en(en(en(em, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
31903213 }
3191- if ((size(mD) == 0))
3214+ if ((size(mJ) == 0))
31923215 then throw("No candidates for robbery")
31933216 else {
3194- let mE = dh(size(mD), height, (ii + fZ.transactionId))
3195- let O = mD[mE]
3196- $Tuple2([IntegerEntry(N(O), v), IntegerEntry(P(O), (av + t[v])), IntegerEntry(Q(z), x), StringEntry(R(z), O), kv], O)
3217+ let mK = dj(size(mJ), height, (ik + gb.transactionId))
3218+ let O = mJ[mK]
3219+ $Tuple2([IntegerEntry(N(O), v), IntegerEntry(P(O), (av + t[v])), IntegerEntry(Q(z), x), StringEntry(R(z), O), kx], O)
31973220 }
31983221 }
31993222 }
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 func a (b) = ("lastArbTimeUser_" + b)
55
66
77 let c = 100000000
88
99 let d = 3200
1010
1111 let e = 4000
1212
1313 let f = 3
1414
1515 let g = 100000000
1616
1717 let h = 400
1818
1919 let i = ["Strength", "Accuracy", "Intellect", "Endurance", "Dexterity", "Level", "Health"]
2020
2121 let j = 0
2222
2323 let k = 1
2424
2525 let l = 2
2626
2727 let m = 3
2828
2929 let n = 4
3030
3131 let o = 0
3232
3333 let p = 6
3434
3535 let q = 2
3636
3737 let r = 2
3838
3939 let s = 30
4040
4141 let t = [0, 600000, 900000, 43200000, 21600000]
4242
4343 let u = 20000000
4444
4545 let v = 1
4646
4747 let w = 0
4848
4949 let x = 1
5050
5151 func y (z) = ("duckHealth_" + z)
5252
5353
5454 func A (z) = ("duckChars_" + z)
5555
5656
5757 func B (z) = ("duckXP_" + z)
5858
5959
6060 func C (z) = ("duckLevel_" + z)
6161
6262
6363 func D (z) = ("duckFreePoints_" + z)
6464
6565
6666 func E (z) = ("duckEquipment_" + z)
6767
6868
6969 func F (b) = ("userXP_" + b)
7070
7171
7272 func G (b) = ("userLevel_" + b)
7373
7474
7575 func H (b) = ("userFreePoints_" + b)
7676
7777
7878 func I (z) = ("savedHealth_" + z)
7979
8080
8181 func J (z) = ("savedLocation_" + z)
8282
8383
8484 func K (z) = ("duckBuffs_" + z)
8585
8686
8787 func L (z) = ("lastRobberyTime_" + z)
8888
8989
9090 func M (z) = ("lastRobberyCost_" + z)
9191
9292
9393 func N (O) = ("landRobberyState_" + O)
9494
9595
9696 func P (O) = ("landCooldownETA_" + O)
9797
9898
9999 func Q (z) = ("duckRobberyState_" + z)
100100
101101
102102 func R (z) = ("lockedLandByDuck_" + z)
103103
104104
105105 let S = 10000
106106
107107 let T = 10000
108108
109109 let U = 2000
110110
111111 let V = 100000
112112
113113 let W = 1000000
114114
115115 let X = 5000000
116116
117117 let Y = 10000
118118
119119 let Z = 1000000
120120
121121 let aa = 1000000
122122
123123 let ab = 10000
124124
125125 func ac (ad) = fraction(d, pow(ad, 4, e, 4, 4, DOWN), c)
126126
127127
128128 func ae (af) = (100 + af)
129129
130130
131131 func ag (ah,ai) = {
132132 let aj = ac(ai)
133133 [aj, (f * (aj - ah))]
134134 }
135135
136136
137137 func ak (al,z,am,an) = {
138138 let ao = split(valueOrElse(getString(al, A(z)), "0_0_0_0_0"), "_")
139139 let ap = valueOrElse(getInteger(al, C(z)), 0)
140140 let aq = valueOrElse(getInteger(al, y(z)), ae(ap))
141141 let ar = split(valueOrElse(getString(al, K(z)), "0_0_0_0_0"), "_")
142142 ([parseIntValue(ao[j]), parseIntValue(ao[k]), parseIntValue(ao[l]), parseIntValue(ao[m]), parseIntValue(ao[n]), ap, aq] ++ (if (an)
143143 then [am, am, am, am, am]
144144 else [parseIntValue(ar[j]), parseIntValue(ar[k]), parseIntValue(ar[l]), parseIntValue(ar[m]), parseIntValue(ar[n])]))
145145 }
146146
147147
148148 func as (al,z) = {
149149 let at = valueOrElse(getInteger(al, M(z)), 0)
150150 let au = valueOrElse(getInteger(al, L(z)), 0)
151151 let av = lastBlock.timestamp
152152 let aw = max([g, (at - (h * (av - au)))])
153153 let ax = valueOrElse(getInteger(al, Q(z)), 0)
154154 let ay = valueOrElse(getString(al, R(z)), "")
155155 let az = valueOrElse(getInteger(al, P(ay)), 0)
156156 $Tuple5(aw, au, ax, ay, az)
157157 }
158158
159159
160160 let aA = "LAND"
161161
162162 let aB = "DUCK"
163163
164164 let aC = "PRESALE"
165165
166166 let aD = 6
167167
168168 let aE = 25
169169
170170 let aF = 3456000
171171
172172 let aG = 86400000
173173
174174 let aH = 10000000000
175175
176176 let aI = "Africa_F_Africa"
177177
178178 let aJ = 39637
179179
180180 let aK = 10
181181
182182 let aL = ["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"]
183183
184184 let aM = ["Americas", "Europe", "Asia", "Africa", "Oceania"]
185185
186186 let aN = 10000000
187187
188188 let aO = [15, 16, 17, 18, 19, 20]
189189
190190 let aP = ["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_30_0,0,0,0,0,0,0_201", "18_18_10_18_18_18_22_4_50_0,0,0,0,0,0,0_201", "18_18_10_18_18_18_33_4_70_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_"]
191191
192192 let aQ = 6
193193
194194 let aR = 8
195195
196196 let aS = 9
197197
198198 let aT = 10
199199
200200 let aU = 10
201201
202202 let aV = 0
203203
204204 let aW = 1
205205
206206 let aX = 2
207207
208208 let aY = 3
209209
210210 let aZ = 4
211211
212212 let ba = 0
213213
214214 let bb = 1
215215
216216 let bc = 2
217217
218218 let bd = 3
219219
220220 let be = 0
221221
222222 let bf = 1
223223
224224 let bg = 2
225225
226226 let bh = 3
227227
228228 func bi (b) = ("lastTxIdByUser_" + b)
229229
230230
231231 func bj (bk) = ("nftOwner_" + bk)
232232
233233
234234 func bl (bk) = ("landCustomNameByAssetId_" + bk)
235235
236236
237237 func bm (bk) = ("stakedTime_" + bk)
238238
239239
240240 func bn (bo,bk) = makeString(["landArtStatus", bo, bk], "_")
241241
242242
243243 func bp (bq,bk,br) = ((((("stakedTimeByTypeAssetIdAndOwner_" + bq) + "_") + bk) + "_") + br)
244244
245245
246246 func bs (O) = ("wareHouse_" + O)
247247
248248
249249 func bt (bk) = ("infraLevel_" + bk)
250250
251251
252252 func bu (O) = ("fortifications_" + O)
253253
254254
255255 func bv (bk) = ("duckCustomNameByAssetId_" + bk)
256256
257257
258258 func bw (b) = ("accountCustomNameByAddr_" + b)
259259
260260
261261 func bx (b) = ("accRefBy_" + b)
262262
263263
264264 func by (z) = ("onboardArtActivatedOnDuck_" + z)
265265
266266
267267 func bz (b) = ("onboardArtActivatedDuckBy_" + b)
268268
269269
270270 func bA (b) = ("accReferrals_" + b)
271271
272272
273273 func bB (bk) = ("duckOwner_" + bk)
274274
275275
276276 func bC (br) = ("stakedDuckByOwner_" + br)
277277
278278
279279 func bD (z) = ("backPack_" + z)
280280
281281
282282 func bE (z) = ("duckLocation_" + z)
283283
284284
285285 func bF () = "contractsBlocked"
286286
287287
288288 func bG (bH) = ("%s%s__userGwlReleaseTime__" + bH)
289289
290290
291291 func bI () = "emergencyWarehouseProducts"
292292
293293
294294 let bJ = "%s__lastTourId"
295295
296296 func bK (bL) = ("%s%d__tourStaticData__" + toString(bL))
297297
298298
299299 func bM (bL) = ("%s%d__tourDynamicData__" + toString(bL))
300300
301301
302302 let bN = 0
303303
304304 let bO = 1
305305
306306 func bP (bQ,bL) = {
307307 let bR = split(valueOrErrorMessage(getString(bQ, bK(bL)), (("Error reading tournament " + toString(bL)) + " data")), "__")
308308 let bS = split(valueOrErrorMessage(getString(bQ, bM(bL)), (("Error reading tournament " + toString(bL)) + " data")), "__")
309309 [bR, bS]
310310 }
311311
312312
313313 let bT = 6
314314
315315 let bU = 1
316316
317317 let bV = 3
318318
319319 let bW = 0
320320
321321 let bX = 1
322322
323323 let bY = 2
324324
325-func bZ (ca) = (parseIntValue(ca[aQ]) * aN)
326-
327-
328-let cb = false
325+func bZ (bL,z) = makeString(["%s%d%s__bestResultByTourAndDuck", toString(bL), z], "__")
326+
327+
328+func ca (cb) = (parseIntValue(cb[aQ]) * aN)
329+
329330
330331 let cc = false
331332
332-let cd = take(drop(this.bytes, 1), 1)
333-
334-let ce = {
335- let cf = cd
336- if ((base58'2W' == cf))
333+let cd = false
334+
335+let ce = take(drop(this.bytes, 1), 1)
336+
337+let cf = {
338+ let cg = ce
339+ if ((base58'2W' == cg))
337340 then base58'9wc3LXNA4TEBsXyKtoLE9mrbDD7WMHXvXrCjZvabLAsi'
338- else if ((base58'2T' == cf))
341+ else if ((base58'2T' == cg))
339342 then base58'6mWwf9mZBjVgkC54idpyaZLQfAosD914wT8fGf2iiY63'
340343 else throw("Unknown chain")
341344 }
342345
343-let cg = {
344- let cf = cd
345- if ((base58'2W' == cf))
346+let ch = {
347+ let cg = ce
348+ if ((base58'2W' == cg))
346349 then "3PQCuvFbvh4LkPUnrnU1z3jnbA1p9m3WNhv"
347- else if ((base58'2T' == cf))
350+ else if ((base58'2T' == cg))
348351 then "3MumkGGztCKAXpWDqxkddofqXSUbqQkvSJy"
349352 else throw("Unknown chain")
350353 }
351354
352-let ch = {
353- let cf = cd
354- if ((base58'2W' == cf))
355+let ci = {
356+ let cg = ce
357+ if ((base58'2W' == cg))
355358 then 10000000000
356- else if ((base58'2T' == cf))
359+ else if ((base58'2T' == cg))
357360 then 100000000
358361 else throw("Unknown chain")
359362 }
360363
361-let ci = {
362- let cf = cd
363- if ((base58'2W' == cf))
364+let cj = {
365+ let cg = ce
366+ if ((base58'2W' == cg))
364367 then 86400000
365- else if ((base58'2T' == cf))
368+ else if ((base58'2T' == cg))
366369 then 60000
367370 else throw("Unknown chain")
368371 }
369372
370-let cj = "__"
371-
372-let ck = 1000000
373-
374-let cl = 100000000
375-
376-let cm = 25
377-
378-let cn = 100
379-
380-let co = 225
381-
382-let cp = 400
383-
384-let cq = 625
385-
386-let cr = [0, 1, 2, 3, 4, 5]
387-
388-func cs (ct,cu) = valueOrErrorMessage(getString(ct, cu), makeString(["mandatory ", toString(ct), ".", cu, " is not defined"], ""))
389-
390-
391-let cv = 1
392-
393-let cw = 2
394-
395-let cx = 3
396-
397-let cy = 4
398-
399-let cz = 7
400-
401-func cA () = "%s__restConfig"
402-
403-
404-func cB () = "%s__restAddr"
405-
406-
407-func cC (cD) = split_4C(cs(cD, cA()), cj)
408-
409-
410-func cE (cF,cG) = valueOrErrorMessage(addressFromString(cF[cG]), ("Rest cfg doesn't contain address at index " + toString(cG)))
411-
412-
413-let cH = addressFromStringValue(valueOrElse(getString(this, cB()), cg))
414-
415-let cF = cC(cH)
416-
417-let al = cE(cF, cv)
418-
419-let cI = cE(cF, cw)
420-
421-let cJ = cE(cF, cx)
422-
423-let cK = cE(cF, cy)
424-
425-let cL = cE(cF, cz)
426-
427-let cM = 0
428-
429-let cN = 1
430-
431-let cO = 2
432-
433-let cP = 3
434-
435-let cQ = "wlg_assetId"
436-
437-let cR = valueOrErrorMessage(getBinary(cK, cQ), "Not initialized yet")
438-
439-let cS = 2
440-
441-func cT (ct) = ("finishBlockForAddr_" + ct)
442-
443-
444-func cU () = "resTypesProportions"
445-
446-
447-func cV (cW) = ("resTypesByContinent_" + cW)
448-
449-
450-func cX (br) = ("stakedLandsByOwner_" + br)
451-
452-
453-func cY (br) = ("stakedPiecesByOwner_" + br)
454-
455-
456-func cZ (da) = {
457- let cf = da
458- if ($isInstanceOf(cf, "String"))
373+let ck = "__"
374+
375+let cl = 1000000
376+
377+let cm = 100000000
378+
379+let cn = 25
380+
381+let co = 100
382+
383+let cp = 225
384+
385+let cq = 400
386+
387+let cr = 625
388+
389+let cs = [0, 1, 2, 3, 4, 5]
390+
391+func ct (cu,cv) = valueOrErrorMessage(getString(cu, cv), makeString(["mandatory ", toString(cu), ".", cv, " is not defined"], ""))
392+
393+
394+let cw = 1
395+
396+let cx = 2
397+
398+let cy = 3
399+
400+let cz = 4
401+
402+let cA = 7
403+
404+func cB () = "%s__restConfig"
405+
406+
407+func cC () = "%s__restAddr"
408+
409+
410+func cD (cE) = split_4C(ct(cE, cB()), ck)
411+
412+
413+func cF (cG,cH) = valueOrErrorMessage(addressFromString(cG[cH]), ("Rest cfg doesn't contain address at index " + toString(cH)))
414+
415+
416+let cI = addressFromStringValue(valueOrElse(getString(this, cC()), ch))
417+
418+let cG = cD(cI)
419+
420+let al = cF(cG, cw)
421+
422+let cJ = cF(cG, cx)
423+
424+let cK = cF(cG, cy)
425+
426+let cL = cF(cG, cz)
427+
428+let cM = cF(cG, cA)
429+
430+let cN = 0
431+
432+let cO = 1
433+
434+let cP = 2
435+
436+let cQ = 3
437+
438+let cR = "wlg_assetId"
439+
440+let cS = valueOrErrorMessage(getBinary(cL, cR), "Not initialized yet")
441+
442+let cT = 2
443+
444+func cU (cu) = ("finishBlockForAddr_" + cu)
445+
446+
447+func cV () = "resTypesProportions"
448+
449+
450+func cW (cX) = ("resTypesByContinent_" + cX)
451+
452+
453+func cY (br) = ("stakedLandsByOwner_" + br)
454+
455+
456+func cZ (br) = ("stakedPiecesByOwner_" + br)
457+
458+
459+func da (db) = {
460+ let cg = db
461+ if ($isInstanceOf(cg, "String"))
459462 then {
460- let db = cf
461- db
463+ let dc = cg
464+ dc
462465 }
463466 else throw("fail to cast into String")
464467 }
465468
466469
467-func dc (da) = {
468- let cf = da
469- if ($isInstanceOf(cf, "Int"))
470+func dd (db) = {
471+ let cg = db
472+ if ($isInstanceOf(cg, "Int"))
470473 then {
471- let dd = cf
472- dd
474+ let de = cg
475+ de
473476 }
474477 else throw("fail to cast into Int")
475478 }
476479
477480
478-func de (df) = {
479- let cf = df
480- if (("S" == cf))
481- then cm
482- else if (("M" == cf))
483- then cn
484- else if (("L" == cf))
485- then co
486- else if (("XL" == cf))
487- then cp
488- else if (("XXL" == cf))
489- then cq
481+func df (db) = {
482+ let cg = db
483+ if ($isInstanceOf(cg, "Boolean"))
484+ then {
485+ let dc = cg
486+ dc
487+ }
488+ else throw("fail to cast into Boolean")
489+ }
490+
491+
492+func dg (dh) = {
493+ let cg = dh
494+ if (("S" == cg))
495+ then cn
496+ else if (("M" == cg))
497+ then co
498+ else if (("L" == cg))
499+ then cp
500+ else if (("XL" == cg))
501+ then cq
502+ else if (("XXL" == cg))
503+ then cr
490504 else throw("Unknown land size")
491505 }
492506
493507
494-func dg (db) = isDefined(parseInt(db))
495-
496-
497-func dh (di,dj,dk) = {
498- let dl = value(blockInfoByHeight(dj))
499- let dm = sha256((value(dl.vrf) + dk))
500- (toInt(dm) % di)
501- }
502-
503-
504-let dn = {
505- let cf = cd
506- if ((base58'2W' == cf))
508+func di (dc) = isDefined(parseInt(dc))
509+
510+
511+func dj (dk,dl,dm) = {
512+ let dn = value(blockInfoByHeight(dl))
513+ let do = sha256((value(dn.vrf) + dm))
514+ (toInt(do) % dk)
515+ }
516+
517+
518+let dp = {
519+ let cg = ce
520+ if ((base58'2W' == cg))
507521 then addressFromStringValue("3PEktVux2RhchSN63DsDo4b4mz4QqzKSeDv")
508- else if ((base58'2T' == cf))
522+ else if ((base58'2T' == cg))
509523 then this
510524 else throw("Unknown chain")
511525 }
512526
513-let do = {
514- let cf = cd
515- if ((base58'2W' == cf))
527+let dq = {
528+ let cg = ce
529+ if ((base58'2W' == cg))
516530 then addressFromStringValue("3PDVuU45H7Eh5dmtNbnRNRStGwULA7NY6Hb")
517- else if ((base58'2T' == cf))
531+ else if ((base58'2T' == cg))
518532 then this
519533 else throw("Unknown chain")
520534 }
521535
522-let dp = {
523- let cf = cd
524- if ((base58'2W' == cf))
525- then if (cb)
536+let dr = {
537+ let cg = ce
538+ if ((base58'2W' == cg))
539+ then if (cc)
526540 then base58'CWsMtTZC5BjjoL4Q1ayW4Wwb1ehGACQB6DrKyPgotKfm'
527541 else base58'6LfPuKJjLgekmncBhMg2LZyMTNVzZBccXR28ySXm9uXD'
528- else if ((base58'2T' == cf))
542+ else if ((base58'2T' == cg))
529543 then base58'6LfPuKJjLgekmncBhMg2LZyMTNVzZBccXR28ySXm9uXD'
530544 else throw("Unknown chain")
531545 }
532546
533-let dq = base64'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=='
534-
535-let dr = 300000
536-
537-let ds = 5000000
538-
539-let dt = 50
540-
541-let du = 10000000
542-
543-let dv = {
544- let cf = cd
545- if ((base58'2W' == cf))
547+let ds = base64'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=='
548+
549+let dt = 300000
550+
551+let du = 5000000
552+
553+let dv = 50
554+
555+let dw = 10000000
556+
557+let dx = {
558+ let cg = ce
559+ if ((base58'2W' == cg))
546560 then 252289527462
547- else if ((base58'2T' == cf))
561+ else if ((base58'2T' == cg))
548562 then 2522895274
549563 else throw("Unknown chain")
550564 }
551565
552-let dw = {
553- let cf = cd
554- if ((base58'2W' == cf))
566+let dy = {
567+ let cg = ce
568+ if ((base58'2W' == cg))
555569 then 250000000
556- else if ((base58'2T' == cf))
570+ else if ((base58'2T' == cg))
557571 then 250000000
558572 else throw("Unknown chain")
559573 }
560574
561-let dx = toBigInt(5)
562-
563-let dy = toBigInt(20)
564-
565-let dz = toBigInt((20 * 20))
566-
567-let dA = toBigInt(((20 * 20) * 20))
568-
569-let dB = toBigInt((((20 * 20) * 20) * 20))
570-
571-let dC = toBigInt(((((20 * 20) * 20) * 20) * 20))
572-
573-let dD = 500
574-
575-func dE () = "nextLandNum"
576-
577-
578-func dF (dG) = ("landByCustomName_" + dG)
579-
580-
581-func dH (dI) = ("landToAsset_" + dI)
582-
583-
584-func dJ (bk,br) = ((("infraLevelByAssetIdAndOwner_" + bk) + "_") + br)
585-
586-
587-func dK (dI) = ("landOwner_" + dI)
588-
589-
590-func dL (dG) = ("duckByCustomName_" + dG)
591-
592-
593-func dM (dG) = ("accountByCustomName_" + dG)
594-
595-
596-func dN () = "oldiesList"
597-
598-
599-let dO = 0
600-
601-let dP = 1
602-
603-let dQ = 2
604-
605-let dR = 0
606-
607-let dS = 5
608-
609-let dT = 6
610-
611-let dU = 7
612-
613-func dV (dI,df) = ((aA + dI) + df)
614-
615-
616-func dW (dX,dY) = {
617- let dZ = if ((dX >= 0))
618- then (((dX + dY) - 1) / dY)
619- else -((((-(dX) + dY) - 1) / dY))
620- (dZ * cl)
621- }
622-
623-
624-func ea (eb,ec) = {
625- let ed = (((((ec[0] + ec[1]) + ec[2]) + ec[3]) + ec[4]) + ec[5])
626- if ((0 >= ed))
575+let dz = toBigInt(5)
576+
577+let dA = toBigInt(20)
578+
579+let dB = toBigInt((20 * 20))
580+
581+let dC = toBigInt(((20 * 20) * 20))
582+
583+let dD = toBigInt((((20 * 20) * 20) * 20))
584+
585+let dE = toBigInt(((((20 * 20) * 20) * 20) * 20))
586+
587+let dF = 500
588+
589+func dG () = "nextLandNum"
590+
591+
592+func dH (dI) = ("landByCustomName_" + dI)
593+
594+
595+func dJ (dK) = ("landToAsset_" + dK)
596+
597+
598+func dL (bk,br) = ((("infraLevelByAssetIdAndOwner_" + bk) + "_") + br)
599+
600+
601+func dM (dK) = ("landOwner_" + dK)
602+
603+
604+func dN (dI) = ("duckByCustomName_" + dI)
605+
606+
607+func dO (dI) = ("accountByCustomName_" + dI)
608+
609+
610+func dP () = "oldiesList"
611+
612+
613+let dQ = 0
614+
615+let dR = 1
616+
617+let dS = 2
618+
619+let dT = 0
620+
621+let dU = 5
622+
623+let dV = 6
624+
625+let dW = 7
626+
627+func dX (dK,dh) = ((aA + dK) + dh)
628+
629+
630+func dY (dZ,ea) = {
631+ let eb = if ((dZ >= 0))
632+ then (((dZ + ea) - 1) / ea)
633+ else -((((-(dZ) + ea) - 1) / ea))
634+ (eb * cm)
635+ }
636+
637+
638+func ec (ed,ee) = {
639+ let ef = (((((ee[0] + ee[1]) + ee[2]) + ee[3]) + ee[4]) + ee[5])
640+ if ((0 >= ef))
627641 then throw("Zero weights sum")
628642 else {
629- let ee = fraction(eb, ck, ed)
630- func ef (eg,eh) = (eg :+ fraction(eh, ee, ck))
631-
632- let ei = ec
633- let ej = size(ei)
634- let ek = nil
635- func el (em,en) = if ((en >= ej))
636- then em
637- else ef(em, ei[en])
638-
639- func eo (em,en) = if ((en >= ej))
640- then em
643+ let eg = fraction(ed, cl, ef)
644+ func eh (ei,ej) = (ei :+ fraction(ej, eg, cl))
645+
646+ let ek = ee
647+ let el = size(ek)
648+ let em = nil
649+ func en (eo,ep) = if ((ep >= el))
650+ then eo
651+ else eh(eo, ek[ep])
652+
653+ func eq (eo,ep) = if ((ep >= el))
654+ then eo
641655 else throw("List size exceeds 6")
642656
643- eo(el(el(el(el(el(el(ek, 0), 1), 2), 3), 4), 5), 6)
644- }
645- }
646-
647-
648-func ep (eb) = {
649- let eq = split(value(getString(cU())), "_")
650- if ((size(eq) != aD))
657+ eq(en(en(en(en(en(en(em, 0), 1), 2), 3), 4), 5), 6)
658+ }
659+ }
660+
661+
662+func er (ed) = {
663+ let es = split(value(getString(cV())), "_")
664+ if ((size(es) != aD))
651665 then throw("Wrong proportions data")
652666 else {
653- let er = [parseIntValue(eq[0]), parseIntValue(eq[1]), parseIntValue(eq[2]), parseIntValue(eq[3]), parseIntValue(eq[4]), parseIntValue(eq[5])]
654- ea(eb, er)
655- }
656- }
657-
658-
659-func es (et,eu,ev) = {
660- let ew = ep(ev)
661- func ex (eg,cG) = {
662- let ey = (parseIntValue(eu[cG]) - ew[cG])
663- if ((0 > ey))
664- then throw(((((("Not enough material idx=" + toString(cG)) + ", you have ") + eu[cG]) + ", but need ") + toString(ew[cG])))
665- else (eg :+ toString(ey))
667+ let et = [parseIntValue(es[0]), parseIntValue(es[1]), parseIntValue(es[2]), parseIntValue(es[3]), parseIntValue(es[4]), parseIntValue(es[5])]
668+ ec(ed, et)
669+ }
670+ }
671+
672+
673+func eu (ev,ew,ex) = {
674+ let ey = er(ex)
675+ func ez (ei,cH) = {
676+ let eA = (parseIntValue(ew[cH]) - ey[cH])
677+ if ((0 > eA))
678+ then throw(((((("Not enough material idx=" + toString(cH)) + ", you have ") + ew[cH]) + ", but need ") + toString(ey[cH])))
679+ else (ei :+ toString(eA))
666680 }
667681
668- if (et)
682+ if (ev)
669683 then {
670- let ei = cr
671- let ej = size(ei)
672- let ek = nil
673- func el (em,en) = if ((en >= ej))
674- then em
675- else ex(em, ei[en])
676-
677- func eo (em,en) = if ((en >= ej))
678- then em
684+ let ek = cs
685+ let el = size(ek)
686+ let em = nil
687+ func en (eo,ep) = if ((ep >= el))
688+ then eo
689+ else ez(eo, ek[ep])
690+
691+ func eq (eo,ep) = if ((ep >= el))
692+ then eo
679693 else throw("List size exceeds 6")
680694
681- eo(el(el(el(el(el(el(ek, 0), 1), 2), 3), 4), 5), 6)
682- }
683- else eu
684- }
685-
686-
687-func ez (eA,eB) = if ((eB == ""))
688- then $Tuple2(eA, false)
695+ eq(en(en(en(en(en(en(em, 0), 1), 2), 3), 4), 5), 6)
696+ }
697+ else ew
698+ }
699+
700+
701+func eB (eC,eD) = if ((eD == ""))
702+ then $Tuple2(eC, false)
689703 else {
690- func eC (eg,eD) = {
691- let eE = split(eD, ",")
692- if ((size(eE) != 2))
704+ func eE (ei,eF) = {
705+ let eG = split(eF, ",")
706+ if ((size(eG) != 2))
693707 then throw("Incorrect format, should be index,amount")
694708 else {
695- let cG = parseIntValue(eE[0])
696- if (if ((0 > cG))
709+ let cH = parseIntValue(eG[0])
710+ if (if ((0 > cH))
697711 then true
698- else (cG >= size(aP)))
712+ else (cH >= size(aP)))
699713 then throw("Unknown product idx")
700714 else {
701- let eF = parseIntValue(eE[1])
702- let eG = split(eg._1, (eE[0] + ":"))
703- if ((size(eG) != 2))
704- then throw((("You don't have " + aL[cG]) + " equipped"))
715+ let eH = parseIntValue(eG[1])
716+ let eI = split(ei._1, (eG[0] + ":"))
717+ if ((size(eI) != 2))
718+ then throw((("You don't have " + aL[cH]) + " equipped"))
705719 else {
706- let eH = eG[1]
707- let eI = if (dg(take(drop(eH, 1), 1)))
720+ let eJ = eI[1]
721+ let eK = if (di(take(drop(eJ, 1), 1)))
708722 then 2
709723 else 1
710- let eJ = parseIntValue(take(eH, eI))
711- let eK = drop(eH, eI)
712- let eL = if ((eJ >= eF))
713- then (eJ - eF)
714- else throw(((((("You equipped " + toString(eJ)) + " of ") + aL[cG]) + ", but tried to use ") + toString(eF)))
715- $Tuple2(((((eG[0] + eE[0]) + ":") + toString(eL)) + eK), if (eg._2)
724+ let eL = parseIntValue(take(eJ, eK))
725+ let eM = drop(eJ, eK)
726+ let eN = if ((eL >= eH))
727+ then (eL - eH)
728+ else throw(((((("You equipped " + toString(eL)) + " of ") + aL[cH]) + ", but tried to use ") + toString(eH)))
729+ $Tuple2(((((eI[0] + eG[0]) + ":") + toString(eN)) + eM), if (ei._2)
716730 then true
717- else if (if ((cG >= 6))
718- then (8 >= cG)
731+ else if (if ((cH >= 6))
732+ then (8 >= cH)
719733 else false)
720- then (eL == 0)
734+ then (eN == 0)
721735 else false)
722736 }
723737 }
724738 }
725739 }
726740
727- let ei = split(eB, "_")
728- let ej = size(ei)
729- let ek = $Tuple2(eA, false)
730- func el (em,en) = if ((en >= ej))
731- then em
732- else eC(em, ei[en])
733-
734- func eo (em,en) = if ((en >= ej))
735- then em
741+ let ek = split(eD, "_")
742+ let el = size(ek)
743+ let em = $Tuple2(eC, false)
744+ func en (eo,ep) = if ((ep >= el))
745+ then eo
746+ else eE(eo, ek[ep])
747+
748+ func eq (eo,ep) = if ((ep >= el))
749+ then eo
736750 else throw("List size exceeds 10")
737751
738- eo(el(el(el(el(el(el(el(el(el(el(ek, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
752+ eq(en(en(en(en(en(en(en(en(en(en(em, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
739753 }
740754
741755
742-func eM (eN) = {
743- let eO = if ((eN == ""))
756+func eO (eP) = {
757+ let eQ = if ((eP == ""))
744758 then nil
745- else split_4C(eN, "_")
746- func eP (eg,ca) = {
747- let eQ = (size(eg) / 8)
748- let eJ = if ((size(eO) > eQ))
749- then parseIntValue(eO[eQ])
759+ else split_4C(eP, "_")
760+ func eR (ei,cb) = {
761+ let eS = (size(ei) / 8)
762+ let eL = if ((size(eQ) > eS))
763+ then parseIntValue(eQ[eS])
750764 else 0
751- (eg + toBytes(eJ))
765+ (ei + toBytes(eL))
752766 }
753767
754- let ei = aP
755- let ej = size(ei)
756- let ek = base58''
757- func el (em,en) = if ((en >= ej))
758- then em
759- else eP(em, ei[en])
760-
761- func eo (em,en) = if ((en >= ej))
762- then em
768+ let ek = aP
769+ let el = size(ek)
770+ let em = base58''
771+ func en (eo,ep) = if ((ep >= el))
772+ then eo
773+ else eR(eo, ek[ep])
774+
775+ func eq (eo,ep) = if ((ep >= el))
776+ then eo
763777 else throw("List size exceeds 50")
764778
765- eo(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(ek, 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)
766- }
767-
768-
769-func eR (eS) = {
770- func eT (eg,ca) = {
771- let eQ = size(eg)
772- let eU = take(drop(eS, (8 * eQ)), 8)
773- (eg :+ toString(toInt(eU)))
779+ eq(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(em, 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)
780+ }
781+
782+
783+func eT (eU) = {
784+ func eV (ei,cb) = {
785+ let eS = size(ei)
786+ let eW = take(drop(eU, (8 * eS)), 8)
787+ (ei :+ toString(toInt(eW)))
774788 }
775789
776790 makeString_2C({
777- let ei = aP
778- let ej = size(ei)
779- let ek = nil
780- func el (em,en) = if ((en >= ej))
781- then em
782- else eT(em, ei[en])
783-
784- func eo (em,en) = if ((en >= ej))
785- then em
791+ let ek = aP
792+ let el = size(ek)
793+ let em = nil
794+ func en (eo,ep) = if ((ep >= el))
795+ then eo
796+ else eV(eo, ek[ep])
797+
798+ func eq (eo,ep) = if ((ep >= el))
799+ then eo
786800 else throw("List size exceeds 50")
787801
788- eo(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(ek, 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)
802+ eq(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(em, 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)
789803 }, "_")
790804 }
791805
792806
793-func eV (eW,eX) = {
794- func eY (eg,eQ) = {
795- let eZ = if ((size(eW) > (7 + eQ)))
796- then eW[(7 + eQ)]
807+func eX (eY,eZ) = {
808+ func fa (ei,eS) = {
809+ let fb = if ((size(eY) > (7 + eS)))
810+ then eY[(7 + eS)]
797811 else 0
798- if ((parseIntValue(eX[eQ]) > (eW[eQ] + eZ)))
799- then throw(("Requirement not satisfied: " + i[eQ]))
812+ if ((parseIntValue(eZ[eS]) > (eY[eS] + fb)))
813+ then throw(("Requirement not satisfied: " + i[eS]))
800814 else true
801815 }
802816
803- let ei = [0, 1, 2, 3, 4, 5, 6]
804- let ej = size(ei)
805- let ek = false
806- func el (em,en) = if ((en >= ej))
807- then em
808- else eY(em, ei[en])
809-
810- func eo (em,en) = if ((en >= ej))
811- then em
817+ let ek = [0, 1, 2, 3, 4, 5, 6]
818+ let el = size(ek)
819+ let em = false
820+ func en (eo,ep) = if ((ep >= el))
821+ then eo
822+ else fa(eo, ek[ep])
823+
824+ func eq (eo,ep) = if ((ep >= el))
825+ then eo
812826 else throw("List size exceeds 7")
813827
814- eo(el(el(el(el(el(el(el(ek, 0), 1), 2), 3), 4), 5), 6), 7)
815- }
816-
817-
818-func fa (fb,eO,fc,eW,fd,fe) = {
819- let eE = split(fb, ":")
820- if ((size(eE) != 2))
828+ eq(en(en(en(en(en(en(en(em, 0), 1), 2), 3), 4), 5), 6), 7)
829+ }
830+
831+
832+func fc (fd,eQ,fe,eY,ff,fg) = {
833+ let eG = split(fd, ":")
834+ if ((size(eG) != 2))
821835 then throw("Incorrect format, should be index:amount")
822- else if (if (!(fc))
823- then (size(eE[0]) != 2)
836+ else if (if (!(fe))
837+ then (size(eG[0]) != 2)
824838 else false)
825839 then throw("Product idx should be 2 digits, zero padded")
826840 else {
827- let ff = parseIntValue(eE[0])
828- let fg = parseIntValue(eE[1])
829- if (!(containsElement(aO, ff)))
830- then throw((("Product '" + aL[ff]) + "' cannot be used for land defense"))
831- else if ((0 > fg))
841+ let fh = parseIntValue(eG[0])
842+ let fi = parseIntValue(eG[1])
843+ if (!(containsElement(aO, fh)))
844+ then throw((("Product '" + aL[fh]) + "' cannot be used for land defense"))
845+ else if ((0 > fi))
832846 then throw("Count can't be negative")
833- else if ((fg > s))
834- then throw(((("Can't put more than " + toString(s)) + " of ") + aL[ff]))
835- else if ((fg == 0))
836- then $Tuple3(eO, fd, fe)
847+ else if ((fi > s))
848+ then throw(((("Can't put more than " + toString(s)) + " of ") + aL[fh]))
849+ else if ((fi == 0))
850+ then $Tuple3(eQ, ff, fg)
837851 else {
838- let fh = take(eO, (8 * ff))
839- let eJ = toInt(take(drop(eO, (8 * ff)), 8))
840- let eK = drop(eO, (8 * (ff + 1)))
841- let ca = split(aP[ff], "_")
842- if (if (!(fc))
843- then (fg > eJ)
852+ let fj = take(eQ, (8 * fh))
853+ let eL = toInt(take(drop(eQ, (8 * fh)), 8))
854+ let eM = drop(eQ, (8 * (fh + 1)))
855+ let cb = split(aP[fh], "_")
856+ if (if (!(fe))
857+ then (fi > eL)
844858 else false)
845- then throw(((((("You have " + toString(eJ)) + " of ") + aL[ff]) + ", but tried to use ") + toString(fg)))
859+ then throw(((((("You have " + toString(eL)) + " of ") + aL[fh]) + ", but tried to use ") + toString(fi)))
846860 else {
847- let eL = if (if (!(fc))
848- then eV(eW, split(ca[aS], ","))
861+ let eN = if (if (!(fe))
862+ then eX(eY, split(cb[aS], ","))
849863 else false)
850- then (eJ - fg)
851- else (eJ + fg)
852- let fi = (dW(eL, aU) - dW(eJ, aU))
853- $Tuple3(((fh + toBytes(eL)) + eK), (fd + fi), (fe - fi))
864+ then (eL - fi)
865+ else (eL + fi)
866+ let fk = (dY(eN, aU) - dY(eL, aU))
867+ $Tuple3(((fj + toBytes(eN)) + eM), (ff + fk), (fg - fk))
854868 }
855869 }
856870 }
857871 }
858872
859873
860-func fj (fb,eO,fc,fk,fl,fm,eW) = {
861- let eE = split(fb, ":")
862- if ((size(eE) != 2))
874+func fl (fd,eQ,fe,fm,fn,fo,eY) = {
875+ let eG = split(fd, ":")
876+ if ((size(eG) != 2))
863877 then throw("Incorrect format, should be index:amount")
864- else if (if (!(fc))
865- then (size(eE[0]) != 2)
878+ else if (if (!(fe))
879+ then (size(eG[0]) != 2)
866880 else false)
867881 then throw("Product idx should be 2 digits, zero padded")
868882 else {
869- let ff = parseIntValue(eE[0])
870- let fg = parseIntValue(eE[1])
871- if (if ((0 > ff))
883+ let fh = parseIntValue(eG[0])
884+ let fi = parseIntValue(eG[1])
885+ if (if ((0 > fh))
872886 then true
873- else (ff >= size(aP)))
887+ else (fh >= size(aP)))
874888 then throw("Unknown product idx")
875- else if ((0 > fg))
889+ else if ((0 > fi))
876890 then throw("Count can't be negative")
877- else if ((fg > s))
878- then throw(((("Can't put more than " + toString(s)) + " of ") + aL[ff]))
879- else if ((fg == 0))
880- then $Tuple2(eO, false)
891+ else if ((fi > s))
892+ then throw(((("Can't put more than " + toString(s)) + " of ") + aL[fh]))
893+ else if ((fi == 0))
894+ then $Tuple2(eQ, false)
881895 else {
882- let fh = take(eO, (8 * ff))
883- let eJ = toInt(take(drop(eO, (8 * ff)), 8))
884- let eK = drop(eO, (8 * (ff + 1)))
885- let ca = split(aP[ff], "_")
886- if (if (!(fc))
887- then (fg > eJ)
896+ let fj = take(eQ, (8 * fh))
897+ let eL = toInt(take(drop(eQ, (8 * fh)), 8))
898+ let eM = drop(eQ, (8 * (fh + 1)))
899+ let cb = split(aP[fh], "_")
900+ if (if (!(fe))
901+ then (fi > eL)
888902 else false)
889- then throw(((((("You have " + toString(eJ)) + " of ") + aL[ff]) + ", but tried to use ") + toString(fg)))
903+ then throw(((((("You have " + toString(eL)) + " of ") + aL[fh]) + ", but tried to use ") + toString(fi)))
890904 else {
891- let fn = if (if (!(fc))
892- then eV(eW, split(ca[aS], ","))
905+ let fp = if (if (!(fe))
906+ then eX(eY, split(cb[aS], ","))
893907 else false)
894908 then {
895- let fo = ca[aT]
896- if ((fo == ""))
909+ let fq = cb[aT]
910+ if ((fq == ""))
897911 then throw("Item cannot be equipped")
898912 else {
899- let fp = parseIntValue(fo)
900- let fq = (fp / 100)
901- if ((fk != fq))
913+ let fr = parseIntValue(fq)
914+ let fs = (fr / 100)
915+ if ((fm != fs))
902916 then throw("Segment incompatible")
903917 else {
904- let fr = ((fp % 100) / 10)
905- if ((fl != fr))
918+ let ft = ((fr % 100) / 10)
919+ if ((fn != ft))
906920 then throw("Slot incompatible")
907921 else {
908- let fs = (fp % 10)
909- if (if ((fm != 0))
910- then (fs > 1)
922+ let fu = (fr % 10)
923+ if (if ((fo != 0))
924+ then (fu > 1)
911925 else false)
912926 then throw("Big items should occupy slot 0")
913- else (fs > 1)
927+ else (fu > 1)
914928 }
915929 }
916930 }
917931 }
918932 else false
919- $Tuple2(((fh + toBytes((eJ + (if (fc)
920- then fg
921- else -(fg))))) + eK), fn)
933+ $Tuple2(((fj + toBytes((eL + (if (fe)
934+ then fi
935+ else -(fi))))) + eM), fp)
922936 }
923937 }
924938 }
925939 }
926940
927941
928-func ft (fu,fv,fc,fk,fl,fw) = if ((fu != ""))
942+func fv (fw,fx,fe,fm,fn,fy) = if ((fw != ""))
929943 then {
930- let fx = split(fu, ",")
931- if ((size(fx) > r))
944+ let fz = split(fw, ",")
945+ if ((size(fz) > r))
932946 then throw("Wrong slots format")
933947 else {
934- let fy = fx[0]
935- let fz = if ((size(fx) > 1))
936- then fx[1]
948+ let fA = fz[0]
949+ let fB = if ((size(fz) > 1))
950+ then fz[1]
937951 else ""
938- if (if ((fy == ""))
939- then (fz == "")
952+ if (if ((fA == ""))
953+ then (fB == "")
940954 else false)
941- then fv
955+ then fx
942956 else {
943- let fA = if ((fy != ""))
944- then fj(fy, fv, fc, fk, fl, 0, fw)
945- else $Tuple2(fv, false)
946- if ((fz != ""))
947- then if (fA._2)
957+ let fC = if ((fA != ""))
958+ then fl(fA, fx, fe, fm, fn, 0, fy)
959+ else $Tuple2(fx, false)
960+ if ((fB != ""))
961+ then if (fC._2)
948962 then throw("Big item already occupies slot")
949- else fj(fz, fA._1, fc, fk, fl, 1, fw)._1
950- else fA._1
963+ else fl(fB, fC._1, fe, fm, fn, 1, fy)._1
964+ else fC._1
951965 }
952966 }
953967 }
954- else fv
955-
956-
957-func fB (fC,fD,fc,fw) = {
958- func fk (eg,fE) = {
959- let eQ = eg._1
960- let fl = split(fE, ";")
961- if ((size(fl) != q))
968+ else fx
969+
970+
971+func fD (fE,fF,fe,fy) = {
972+ func fm (ei,fG) = {
973+ let eS = ei._1
974+ let fn = split(fG, ";")
975+ if ((size(fn) != q))
962976 then throw("Wrong segment format")
963977 else {
964- let fF = fl[0]
965- let fG = fl[1]
966- if (if ((fF == ""))
967- then (fG == "")
978+ let fH = fn[0]
979+ let fI = fn[1]
980+ if (if ((fH == ""))
981+ then (fI == "")
968982 else false)
969- then $Tuple2((eQ + 1), eg._2)
983+ then $Tuple2((eS + 1), ei._2)
970984 else {
971- let fH = ft(fF, eg._2, fc, eQ, 0, fw)
972- $Tuple2((eQ + 1), ft(fG, fH, fc, eQ, 1, fw))
985+ let fJ = fv(fH, ei._2, fe, eS, 0, fy)
986+ $Tuple2((eS + 1), fv(fI, fJ, fe, eS, 1, fy))
973987 }
974988 }
975989 }
976990
977-( let ei = fC
978- let ej = size(ei)
979- let ek = $Tuple2(0, fD)
980- func el (em,en) = if ((en >= ej))
981- then em
982- else fk(em, ei[en])
983-
984- func eo (em,en) = if ((en >= ej))
985- then em
991+( let ek = fE
992+ let el = size(ek)
993+ let em = $Tuple2(0, fF)
994+ func en (eo,ep) = if ((ep >= el))
995+ then eo
996+ else fm(eo, ek[ep])
997+
998+ func eq (eo,ep) = if ((ep >= el))
999+ then eo
9861000 else throw("List size exceeds 6")
9871001
988- eo(el(el(el(el(el(el(ek, 0), 1), 2), 3), 4), 5), 6))._2
989- }
990-
991-
992-func fI (fC,fD,fd,fe,fc,eW) = if ((3 > size(fC)))
1002+ eq(en(en(en(en(en(en(em, 0), 1), 2), 3), 4), 5), 6))._2
1003+ }
1004+
1005+
1006+func fK (fE,fF,ff,fg,fe,eY) = if ((3 > size(fE)))
9931007 then throw("At least duck, mines and traps parts are required")
9941008 else {
995- func fk (eg,fE) = {
996- let eQ = eg._1
997- if ((eQ == 0))
998- then $Tuple4((eQ + 1), eg._2, eg._3, eg._4)
1009+ func fm (ei,fG) = {
1010+ let eS = ei._1
1011+ if ((eS == 0))
1012+ then $Tuple4((eS + 1), ei._2, ei._3, ei._4)
9991013 else {
1000- let fJ = fa(fE, eg._2, fc, eW, eg._3, eg._4)
1001- $Tuple4((eQ + 1), fJ._1, fJ._2, fJ._3)
1014+ let fL = fc(fG, ei._2, fe, eY, ei._3, ei._4)
1015+ $Tuple4((eS + 1), fL._1, fL._2, fL._3)
10021016 }
10031017 }
10041018
1005- let fK = {
1006- let ei = fC
1007- let ej = size(ei)
1008- let ek = $Tuple4(0, fD, fd, fe)
1009- func el (em,en) = if ((en >= ej))
1010- then em
1011- else fk(em, ei[en])
1012-
1013- func eo (em,en) = if ((en >= ej))
1014- then em
1019+ let fM = {
1020+ let ek = fE
1021+ let el = size(ek)
1022+ let em = $Tuple4(0, fF, ff, fg)
1023+ func en (eo,ep) = if ((ep >= el))
1024+ then eo
1025+ else fm(eo, ek[ep])
1026+
1027+ func eq (eo,ep) = if ((ep >= el))
1028+ then eo
10151029 else throw("List size exceeds 10")
10161030
1017- eo(el(el(el(el(el(el(el(el(el(el(ek, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
1018- }
1019- $Tuple3(fK._2, fK._3, fK._4)
1031+ eq(en(en(en(en(en(en(en(en(en(en(em, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
1032+ }
1033+ $Tuple3(fM._2, fM._3, fM._4)
10201034 }
10211035
10221036
1023-func fL (z) = {
1024- let fM = E(z)
1025- let fN = split(valueOrElse(getString(fM), ",;,_,;,_,;,_,;,_,;,_,;,"), "_")
1026- let fO = fB(fN, dq, true, nil)
1027- let fP = split(fN[o], ";")[1]
1028- let am = if ((fP == ""))
1037+func fN (z) = {
1038+ let fO = E(z)
1039+ let fP = split(valueOrElse(getString(fO), ",;,_,;,_,;,_,;,_,;,_,;,"), "_")
1040+ let fQ = fD(fP, ds, true, nil)
1041+ let fR = split(fP[o], ";")[1]
1042+ let am = if ((fR == ""))
10291043 then 0
10301044 else {
1031- let fQ = split(fP, ",")[0]
1032- if ((fQ == ""))
1045+ let fS = split(fR, ",")[0]
1046+ if ((fS == ""))
10331047 then 0
10341048 else {
1035- let fb = split(fQ, ":")
1036- let cG = fb[0]
1037- let fR = fb[1]
1038- if (if (if (if (if ((cG == "06"))
1049+ let fd = split(fS, ":")
1050+ let cH = fd[0]
1051+ let fT = fd[1]
1052+ if (if (if (if (if ((cH == "06"))
10391053 then true
1040- else (cG == "07"))
1054+ else (cH == "07"))
10411055 then true
1042- else (cG == "08"))
1043- then (fR != "")
1056+ else (cH == "08"))
1057+ then (fT != "")
10441058 else false)
1045- then (parseIntValue(fR) > 0)
1059+ then (parseIntValue(fT) > 0)
10461060 else false)
1047- then parseIntValue(split(aP[parseIntValue(cG)], "_")[aR])
1061+ then parseIntValue(split(aP[parseIntValue(cH)], "_")[aR])
10481062 else 0
10491063 }
10501064 }
1051- let fw = ak(this, z, am, true)
1052- let fS = fB(fN, fO, false, fw)
1053- (fS == fS)
1054- }
1055-
1056-
1057-func fT (fU,fV,fW,fX) = if ((size(fU) != aD))
1065+ let fy = ak(this, z, am, true)
1066+ let fU = fD(fP, fQ, false, fy)
1067+ (fU == fU)
1068+ }
1069+
1070+
1071+func fV (fW,fX,fY,fZ) = if ((size(fW) != aD))
10581072 then throw("Wrong proportions data")
10591073 else {
1060- func fY (eg,fZ) = {
1061- let ey = (parseIntValue(fU[fZ]) + ((fX * fV[fZ]) * fW))
1062- if ((0 > ey))
1063- then throw(((((((("Panic! Pieces of type=" + toString(fZ)) + ", sign=") + toString(fX)) + ", terrainCounts[i]=") + toString(fV[fZ])) + ", landSizeIndex=") + toString(fW)))
1064- else (eg :+ toString(ey))
1065- }
1066-
1067- let ei = cr
1068- let ej = size(ei)
1069- let ek = nil
1070- func el (em,en) = if ((en >= ej))
1071- then em
1072- else fY(em, ei[en])
1073-
1074- func eo (em,en) = if ((en >= ej))
1075- then em
1074+ func ga (ei,gb) = {
1075+ let eA = (parseIntValue(fW[gb]) + ((fZ * fX[gb]) * fY))
1076+ if ((0 > eA))
1077+ then throw(((((((("Panic! Pieces of type=" + toString(gb)) + ", sign=") + toString(fZ)) + ", terrainCounts[i]=") + toString(fX[gb])) + ", landSizeIndex=") + toString(fY)))
1078+ else (ei :+ toString(eA))
1079+ }
1080+
1081+ let ek = cs
1082+ let el = size(ek)
1083+ let em = nil
1084+ func en (eo,ep) = if ((ep >= el))
1085+ then eo
1086+ else ga(eo, ek[ep])
1087+
1088+ func eq (eo,ep) = if ((ep >= el))
1089+ then eo
10761090 else throw("List size exceeds 6")
10771091
1078- eo(el(el(el(el(el(el(ek, 0), 1), 2), 3), 4), 5), 6)
1092+ eq(en(en(en(en(en(en(em, 0), 1), 2), 3), 4), 5), 6)
10791093 }
10801094
10811095
1082-func ga (fV,fW,fX) = {
1083- let fU = split(valueOrElse(getString(cU()), "0_0_0_0_0_0"), "_")
1084- makeString(fT(fU, fV, fW, fX), "_")
1085- }
1086-
1087-
1088-func gb (gc) = [(size(split(gc, "A")) - 1), (size(split(gc, "B")) - 1), (size(split(gc, "C")) - 1), (size(split(gc, "D")) - 1), (size(split(gc, "E")) - 1), (size(split(gc, "F")) - 1)]
1089-
1090-
1091-func gd (ge,fV,gf,fW,gg) = {
1092- func gh (eg,fZ) = {
1093- let gi = ((fraction(gf, gg, aG) * fV[fZ]) * fW)
1094- (eg :+ toString((parseIntValue(ge[fZ]) + gi)))
1096+func gc (fX,fY,fZ) = {
1097+ let fW = split(valueOrElse(getString(cV()), "0_0_0_0_0_0"), "_")
1098+ makeString(fV(fW, fX, fY, fZ), "_")
1099+ }
1100+
1101+
1102+func gd (ge) = [(size(split(ge, "A")) - 1), (size(split(ge, "B")) - 1), (size(split(ge, "C")) - 1), (size(split(ge, "D")) - 1), (size(split(ge, "E")) - 1), (size(split(ge, "F")) - 1)]
1103+
1104+
1105+func gf (gg,fX,gh,fY,gi) = {
1106+ func gj (ei,gb) = {
1107+ let gk = ((fraction(gh, gi, aG) * fX[gb]) * fY)
1108+ (ei :+ toString((parseIntValue(gg[gb]) + gk)))
10951109 }
10961110
1097- let er = {
1098- let ei = cr
1099- let ej = size(ei)
1100- let ek = nil
1101- func el (em,en) = if ((en >= ej))
1102- then em
1103- else gh(em, ei[en])
1104-
1105- func eo (em,en) = if ((en >= ej))
1106- then em
1111+ let et = {
1112+ let ek = cs
1113+ let el = size(ek)
1114+ let em = nil
1115+ func en (eo,ep) = if ((ep >= el))
1116+ then eo
1117+ else gj(eo, ek[ep])
1118+
1119+ func eq (eo,ep) = if ((ep >= el))
1120+ then eo
11071121 else throw("List size exceeds 6")
11081122
1109- eo(el(el(el(el(el(el(ek, 0), 1), 2), 3), 4), 5), 6)
1123+ eq(en(en(en(en(en(en(em, 0), 1), 2), 3), 4), 5), 6)
11101124 }
1111- makeString(er, "_")
1112- }
1113-
1114-
1115-func gj (fV,gf,fW,gg) = {
1116- func gh (eg,fZ) = {
1117- let gi = ((fraction(gf, gg, aG) * fV[fZ]) * fW)
1118- $Tuple2((eg._1 :+ gi), (eg._2 + gi))
1125+ makeString(et, "_")
1126+ }
1127+
1128+
1129+func gl (fX,gh,fY,gi) = {
1130+ func gj (ei,gb) = {
1131+ let gk = ((fraction(gh, gi, aG) * fX[gb]) * fY)
1132+ $Tuple2((ei._1 :+ gk), (ei._2 + gk))
11191133 }
11201134
1121- let ei = cr
1122- let ej = size(ei)
1123- let ek = $Tuple2(nil, 0)
1124- func el (em,en) = if ((en >= ej))
1125- then em
1126- else gh(em, ei[en])
1127-
1128- func eo (em,en) = if ((en >= ej))
1129- then em
1135+ let ek = cs
1136+ let el = size(ek)
1137+ let em = $Tuple2(nil, 0)
1138+ func en (eo,ep) = if ((ep >= el))
1139+ then eo
1140+ else gj(eo, ek[ep])
1141+
1142+ func eq (eo,ep) = if ((ep >= el))
1143+ then eo
11301144 else throw("List size exceeds 6")
11311145
1132- eo(el(el(el(el(el(el(ek, 0), 1), 2), 3), 4), 5), 6)
1133- }
1134-
1135-
1136-func gk (gl,gm,gn,go) = {
1137- let gp = gn._1
1138- let gq = gn._2
1139- if ((gq == 0))
1140- then $Tuple2(makeString(gl, "_"), makeString(gm, "_"))
1141- else if ((go >= gq))
1146+ eq(en(en(en(en(en(en(em, 0), 1), 2), 3), 4), 5), 6)
1147+ }
1148+
1149+
1150+func gm (gn,go,gp,gq) = {
1151+ let gr = gp._1
1152+ let gs = gp._2
1153+ if ((gs == 0))
1154+ then $Tuple2(makeString(gn, "_"), makeString(go, "_"))
1155+ else if ((gq >= gs))
11421156 then {
1143- func gr (eg,fZ) = (eg :+ toString((parseIntValue(gl[fZ]) + gp[fZ])))
1144-
1145- let er = {
1146- let ei = cr
1147- let ej = size(ei)
1148- let ek = nil
1149- func el (em,en) = if ((en >= ej))
1150- then em
1151- else gr(em, ei[en])
1152-
1153- func eo (em,en) = if ((en >= ej))
1154- then em
1157+ func gt (ei,gb) = (ei :+ toString((parseIntValue(gn[gb]) + gr[gb])))
1158+
1159+ let et = {
1160+ let ek = cs
1161+ let el = size(ek)
1162+ let em = nil
1163+ func en (eo,ep) = if ((ep >= el))
1164+ then eo
1165+ else gt(eo, ek[ep])
1166+
1167+ func eq (eo,ep) = if ((ep >= el))
1168+ then eo
11551169 else throw("List size exceeds 6")
11561170
1157- eo(el(el(el(el(el(el(ek, 0), 1), 2), 3), 4), 5), 6)
1171+ eq(en(en(en(en(en(en(em, 0), 1), 2), 3), 4), 5), 6)
11581172 }
1159- $Tuple2(makeString(er, "_"), makeString(gm, "_"))
1173+ $Tuple2(makeString(et, "_"), makeString(go, "_"))
11601174 }
11611175 else {
1162- func gs (eg,fZ) = {
1163- let gt = fraction(gp[fZ], go, gq)
1164- $Tuple2((eg._1 :+ toString((parseIntValue(gl[fZ]) + gt))), (eg._2 :+ toString(((parseIntValue(gm[fZ]) + gp[fZ]) - gt))))
1176+ func gu (ei,gb) = {
1177+ let gv = fraction(gr[gb], gq, gs)
1178+ $Tuple2((ei._1 :+ toString((parseIntValue(gn[gb]) + gv))), (ei._2 :+ toString(((parseIntValue(go[gb]) + gr[gb]) - gv))))
11651179 }
11661180
1167- let er = {
1168- let ei = cr
1169- let ej = size(ei)
1170- let ek = $Tuple2(nil, nil)
1171- func el (em,en) = if ((en >= ej))
1172- then em
1173- else gs(em, ei[en])
1174-
1175- func eo (em,en) = if ((en >= ej))
1176- then em
1181+ let et = {
1182+ let ek = cs
1183+ let el = size(ek)
1184+ let em = $Tuple2(nil, nil)
1185+ func en (eo,ep) = if ((ep >= el))
1186+ then eo
1187+ else gu(eo, ek[ep])
1188+
1189+ func eq (eo,ep) = if ((ep >= el))
1190+ then eo
11771191 else throw("List size exceeds 6")
11781192
1179- eo(el(el(el(el(el(el(ek, 0), 1), 2), 3), 4), 5), 6)
1193+ eq(en(en(en(en(en(en(em, 0), 1), 2), 3), 4), 5), 6)
11801194 }
1181- $Tuple2(makeString(er._1, "_"), makeString(er._2, "_"))
1195+ $Tuple2(makeString(et._1, "_"), makeString(et._2, "_"))
11821196 }
11831197 }
11841198
11851199
1186-func gu (gv) = if ((gv >= toBigInt(0)))
1187- then gv
1188- else -(gv)
1189-
1190-
1191-let gw = [[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]]
1192-
1193-func gx (dd,gy) = {
1194- let gz = toInt((dd % dy))
1195- let gA = if ((gy[0] > gz))
1200+func gw (gx) = if ((gx >= toBigInt(0)))
1201+ then gx
1202+ else -(gx)
1203+
1204+
1205+let gy = [[6, 9, 14, 15, 16], [5, 8, 13, 14, 15], [1, 4, 9, 10, 15], [1, 6, 7, 15, 19], [4, 7, 8, 13, 18]]
1206+
1207+func gz (de,gA) = {
1208+ let gB = toInt((de % dA))
1209+ let gC = if ((gA[0] > gB))
11961210 then "A"
1197- else if ((gy[1] > gz))
1211+ else if ((gA[1] > gB))
11981212 then "B"
1199- else if ((gy[2] > gz))
1213+ else if ((gA[2] > gB))
12001214 then "C"
1201- else if ((gy[3] > gz))
1215+ else if ((gA[3] > gB))
12021216 then "D"
1203- else if ((gy[4] > gz))
1217+ else if ((gA[4] > gB))
12041218 then "E"
12051219 else "F"
1206- gA
1207- }
1208-
1209-
1210-func gB (gC,gD) = {
1211- let gE = gw[gD]
1212- func gF (eg,eh) = $Tuple2((((((eg._1 + gx(eg._2, gE)) + gx((eg._2 / dy), gE)) + gx((eg._2 / dz), gE)) + gx((eg._2 / dA), gE)) + gx((eg._2 / dB), gE)), (eg._2 / dC))
1213-
1214- let fK = {
1215- let ei = [1, 2, 3, 4, 5]
1216- let ej = size(ei)
1217- let ek = $Tuple2("", (gC / dx))
1218- func el (em,en) = if ((en >= ej))
1219- then em
1220- else gF(em, ei[en])
1221-
1222- func eo (em,en) = if ((en >= ej))
1223- then em
1220+ gC
1221+ }
1222+
1223+
1224+func gD (gE,gF) = {
1225+ let gG = gy[gF]
1226+ func gH (ei,ej) = $Tuple2((((((ei._1 + gz(ei._2, gG)) + gz((ei._2 / dA), gG)) + gz((ei._2 / dB), gG)) + gz((ei._2 / dC), gG)) + gz((ei._2 / dD), gG)), (ei._2 / dE))
1227+
1228+ let fM = {
1229+ let ek = [1, 2, 3, 4, 5]
1230+ let el = size(ek)
1231+ let em = $Tuple2("", (gE / dz))
1232+ func en (eo,ep) = if ((ep >= el))
1233+ then eo
1234+ else gH(eo, ek[ep])
1235+
1236+ func eq (eo,ep) = if ((ep >= el))
1237+ then eo
12241238 else throw("List size exceeds 5")
12251239
1226- eo(el(el(el(el(el(ek, 0), 1), 2), 3), 4), 5)
1240+ eq(en(en(en(en(en(em, 0), 1), 2), 3), 4), 5)
12271241 }
1228- fK._1
1229- }
1230-
1231-
1232-let gG = [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]
1233-
1234-let gH = ["A", "B", "C", "D", "E", "F"]
1235-
1236-func gI (gJ,fW) = {
1237- func gK (eg,db) = {
1238- let eQ = eg._2
1239- let gL = parseIntValue(db)
1240- let gv = if ((gL == 0))
1242+ fM._1
1243+ }
1244+
1245+
1246+let gI = [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]
1247+
1248+let gJ = ["A", "B", "C", "D", "E", "F"]
1249+
1250+func gK (gL,fY) = {
1251+ func gM (ei,dc) = {
1252+ let eS = ei._2
1253+ let gN = parseIntValue(dc)
1254+ let gx = if ((gN == 0))
12411255 then 0
1242- else if ((gL >= (4 * fW)))
1243- then (gL / fW)
1244- else if ((gL > (3 * fW)))
1256+ else if ((gN >= (4 * fY)))
1257+ then (gN / fY)
1258+ else if ((gN > (3 * fY)))
12451259 then 3
1246- else (((gL - 1) / fW) + 1)
1247- $Tuple3((eg._1 :+ gv), (eg._2 + 1), (eg._3 + gv))
1260+ else (((gN - 1) / fY) + 1)
1261+ $Tuple3((ei._1 :+ gx), (ei._2 + 1), (ei._3 + gx))
12481262 }
12491263
1250- let fK = {
1251- let ei = gJ
1252- let ej = size(ei)
1253- let ek = $Tuple3(nil, 0, 0)
1254- func el (em,en) = if ((en >= ej))
1255- then em
1256- else gK(em, ei[en])
1257-
1258- func eo (em,en) = if ((en >= ej))
1259- then em
1264+ let fM = {
1265+ let ek = gL
1266+ let el = size(ek)
1267+ let em = $Tuple3(nil, 0, 0)
1268+ func en (eo,ep) = if ((ep >= el))
1269+ then eo
1270+ else gM(eo, ek[ep])
1271+
1272+ func eq (eo,ep) = if ((ep >= el))
1273+ then eo
12601274 else throw("List size exceeds 6")
12611275
1262- eo(el(el(el(el(el(el(ek, 0), 1), 2), 3), 4), 5), 6)
1276+ eq(en(en(en(en(en(en(em, 0), 1), 2), 3), 4), 5), 6)
12631277 }
1264- let gM = fK._1
1265- let gN = value(indexOf(gM, max(gM)))
1266- let gO = (fK._3 - 25)
1267- func gP (eg,cG) = {
1268- let gQ = if ((cG == gN))
1269- then (gM[cG] - gO)
1270- else gM[cG]
1271- let gR = if ((gQ == 0))
1278+ let gO = fM._1
1279+ let gP = value(indexOf(gO, max(gO)))
1280+ let gQ = (fM._3 - 25)
1281+ func gR (ei,cH) = {
1282+ let gS = if ((cH == gP))
1283+ then (gO[cH] - gQ)
1284+ else gO[cH]
1285+ let gT = if ((gS == 0))
12721286 then nil
1273- else split(drop(toString(pow(10, 0, gQ, 0, 0, DOWN)), 1), "")
1274- let fp = gH[cG]
1275- func gS (gT,gU) = (gT :+ fp)
1276-
1277- let gV = {
1278- let ei = gR
1279- let ej = size(ei)
1280- let ek = nil
1281- func gW (em,en) = if ((en >= ej))
1282- then em
1283- else gS(em, ei[en])
1284-
1285- func gX (em,en) = if ((en >= ej))
1286- then em
1287+ else split(drop(toString(pow(10, 0, gS, 0, 0, DOWN)), 1), "")
1288+ let fr = gJ[cH]
1289+ func gU (gV,gW) = (gV :+ fr)
1290+
1291+ let gX = {
1292+ let ek = gT
1293+ let el = size(ek)
1294+ let em = nil
1295+ func gY (eo,ep) = if ((ep >= el))
1296+ then eo
1297+ else gU(eo, ek[ep])
1298+
1299+ func gZ (eo,ep) = if ((ep >= el))
1300+ then eo
12871301 else throw("List size exceeds 25")
12881302
1289- gX(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(ek, 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)
1290- }
1291- (eg ++ gV)
1303+ gZ(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(em, 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)
1304+ }
1305+ (ei ++ gX)
12921306 }
12931307
1294- let er = {
1295- let ei = cr
1296- let ej = size(ei)
1297- let ek = nil
1298- func gW (em,en) = if ((en >= ej))
1299- then em
1300- else gP(em, ei[en])
1301-
1302- func gX (em,en) = if ((en >= ej))
1303- then em
1308+ let et = {
1309+ let ek = cs
1310+ let el = size(ek)
1311+ let em = nil
1312+ func gY (eo,ep) = if ((ep >= el))
1313+ then eo
1314+ else gR(eo, ek[ep])
1315+
1316+ func gZ (eo,ep) = if ((ep >= el))
1317+ then eo
13041318 else throw("List size exceeds 6")
13051319
1306- gX(gW(gW(gW(gW(gW(gW(ek, 0), 1), 2), 3), 4), 5), 6)
1320+ gZ(gY(gY(gY(gY(gY(gY(em, 0), 1), 2), 3), 4), 5), 6)
13071321 }
1308- func gY (eg,eQ) = (eg + er[eQ])
1309-
1310- let ei = gG
1311- let ej = size(ei)
1312- let ek = ""
1313- func gZ (em,en) = if ((en >= ej))
1314- then em
1315- else gY(em, ei[en])
1316-
1317- func ha (em,en) = if ((en >= ej))
1318- then em
1322+ func ha (ei,eS) = (ei + et[eS])
1323+
1324+ let ek = gI
1325+ let el = size(ek)
1326+ let em = ""
1327+ func hb (eo,ep) = if ((ep >= el))
1328+ then eo
1329+ else ha(eo, ek[ep])
1330+
1331+ func hc (eo,ep) = if ((ep >= el))
1332+ then eo
13191333 else throw("List size exceeds 25")
13201334
1321- ha(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(ek, 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)
1322- }
1323-
1324-
1325-func hb (hc) = {
1326- let fJ = split(valueOrElse(getString(hc), "0:0_0_0_0_0_0:0_0_0_0_0_0:"), ":")
1327-[toString(valueOrElse(parseInt(fJ[be]), 0)), if ((size(split(fJ[bf], "_")) == aD))
1328- then fJ[bf]
1329- else "0_0_0_0_0_0", if ((size(split(fJ[bg], "_")) == aD))
1330- then fJ[bg]
1331- else "0_0_0_0_0_0", fJ[bh]]
1335+ hc(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(em, 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)
13321336 }
13331337
13341338
13351339 func hd (he) = {
1336- let eE = split(he, "_")
1337- ((aH * (parseIntValue(eE[1]) + 1)) * parseIntValue(eE[0]))
1340+ let fL = split(valueOrElse(getString(he), "0:0_0_0_0_0_0:0_0_0_0_0_0:"), ":")
1341+[toString(valueOrElse(parseInt(fL[be]), 0)), if ((size(split(fL[bf], "_")) == aD))
1342+ then fL[bf]
1343+ else "0_0_0_0_0_0", if ((size(split(fL[bg], "_")) == aD))
1344+ then fL[bg]
1345+ else "0_0_0_0_0_0", fL[bh]]
13381346 }
13391347
13401348
13411349 func hf (hg) = {
1342- let hh = hg[aY]
1343- func hi (eg,hj) = (eg + parseIntValue(hj))
1344-
1345- func hk (eg,hj) = {
1346- let cG = eg._1
1347- let dZ = (((parseIntValue(hj) + aU) - 1) / aU)
1348- $Tuple2((cG + 1), (eg._2 + (dZ * cl)))
1350+ let eG = split(hg, "_")
1351+ ((aH * (parseIntValue(eG[1]) + 1)) * parseIntValue(eG[0]))
1352+ }
1353+
1354+
1355+func hh (hi) = {
1356+ let hj = hi[aY]
1357+ func hk (ei,hl) = (ei + parseIntValue(hl))
1358+
1359+ func hm (ei,hl) = {
1360+ let cH = ei._1
1361+ let eb = (((parseIntValue(hl) + aU) - 1) / aU)
1362+ $Tuple2((cH + 1), (ei._2 + (eb * cm)))
13491363 }
13501364
1351- let hl = {
1352- let ei = split(hg[aW], "_")
1353- let ej = size(ei)
1354- let ek = 0
1355- func el (em,en) = if ((en >= ej))
1356- then em
1357- else hi(em, ei[en])
1358-
1359- func eo (em,en) = if ((en >= ej))
1360- then em
1365+ let hn = {
1366+ let ek = split(hi[aW], "_")
1367+ let el = size(ek)
1368+ let em = 0
1369+ func en (eo,ep) = if ((ep >= el))
1370+ then eo
1371+ else hk(eo, ek[ep])
1372+
1373+ func eq (eo,ep) = if ((ep >= el))
1374+ then eo
13611375 else throw("List size exceeds 6")
13621376
1363- eo(el(el(el(el(el(el(ek, 0), 1), 2), 3), 4), 5), 6)
1377+ eq(en(en(en(en(en(en(em, 0), 1), 2), 3), 4), 5), 6)
13641378 }
1365- let hm = {
1366- let ei = split(hg[aX], "_")
1367- let ej = size(ei)
1368- let ek = 0
1369- func gW (em,en) = if ((en >= ej))
1370- then em
1371- else hi(em, ei[en])
1372-
1373- func gX (em,en) = if ((en >= ej))
1374- then em
1379+ let ho = {
1380+ let ek = split(hi[aX], "_")
1381+ let el = size(ek)
1382+ let em = 0
1383+ func gY (eo,ep) = if ((ep >= el))
1384+ then eo
1385+ else hk(eo, ek[ep])
1386+
1387+ func gZ (eo,ep) = if ((ep >= el))
1388+ then eo
13751389 else throw("List size exceeds 6")
13761390
1377- gX(gW(gW(gW(gW(gW(gW(ek, 0), 1), 2), 3), 4), 5), 6)
1391+ gZ(gY(gY(gY(gY(gY(gY(em, 0), 1), 2), 3), 4), 5), 6)
13781392 }
1379- let hn = if ((hh == ""))
1393+ let hp = if ((hj == ""))
13801394 then 0
1381- else ( let ei = split_4C(hh, "_")
1382- let ej = size(ei)
1383- let ek = $Tuple2(0, 0)
1384- func gZ (em,en) = if ((en >= ej))
1385- then em
1386- else hk(em, ei[en])
1387-
1388- func ha (em,en) = if ((en >= ej))
1389- then em
1395+ else ( let ek = split_4C(hj, "_")
1396+ let el = size(ek)
1397+ let em = $Tuple2(0, 0)
1398+ func hb (eo,ep) = if ((ep >= el))
1399+ then eo
1400+ else hm(eo, ek[ep])
1401+
1402+ func hc (eo,ep) = if ((ep >= el))
1403+ then eo
13901404 else throw("List size exceeds 50")
13911405
1392- ha(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(ek, 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
1393- ((hl + hm) + hn)
1394- }
1395-
1396-
1397-func ho (hp,hq,hr) = {
1398- let he = ((toString(hq) + "_") + toString(hr))
1399- let hs = hd(he)
1400- let ht = valueOrElse(getString(hp), (he + ":0_0_0_0_0_0:0_0_0_0_0_0::0"))
1401- let hu = split_4C(ht, ":")
1402- let hv = hf(hu)
1403- let hw = if ((5 > size(hu)))
1404- then makeString(["0", toString(hv), toString((hs - hv)), toString(hs)], "_")
1406+ hc(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(em, 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
1407+ ((hn + ho) + hp)
1408+ }
1409+
1410+
1411+func hq (hr,hs,ht) = {
1412+ let hg = ((toString(hs) + "_") + toString(ht))
1413+ let hu = hf(hg)
1414+ let hv = valueOrElse(getString(hr), (hg + ":0_0_0_0_0_0:0_0_0_0_0_0::0"))
1415+ let hw = split_4C(hv, ":")
1416+ let hx = hh(hw)
1417+ let hy = if ((5 > size(hw)))
1418+ then makeString(["0", toString(hx), toString((hu - hx)), toString(hu)], "_")
14051419 else {
1406- let hx = split(hu[aZ], "_")
1407- let hy = parseIntValue(hx[ba])
1408- let hz = if ((size(hx) > 1))
1409- then parseIntValue(hx[bb])
1410- else hv
1411- makeString([toString(hy), toString(hz), toString(((hs - hy) - hz)), toString(hs)], "_")
1412- }
1413-[hu[aV], if ((size(split(hu[aW], "_")) == aD))
1414- then hu[aW]
1415- else "0_0_0_0_0_0", if ((size(split(hu[aX], "_")) == aD))
1416- then hu[aX]
1417- else "0_0_0_0_0_0", hu[aY], hw]
1418- }
1419-
1420-
1421-func hA (hg) = {
1422- let hB = hf(hg)
1423- let hC = parseIntValue(split(hg[aZ], "_")[ba])
1424- ((hd(hg[aV]) - hB) - hC)
1425- }
1426-
1427-
1428-func hD (hE,hg,hF) = if ((size(hE) != 3))
1420+ let hz = split(hw[aZ], "_")
1421+ let hA = parseIntValue(hz[ba])
1422+ let hB = if ((size(hz) > 1))
1423+ then parseIntValue(hz[bb])
1424+ else hx
1425+ makeString([toString(hA), toString(hB), toString(((hu - hA) - hB)), toString(hu)], "_")
1426+ }
1427+[hw[aV], if ((size(split(hw[aW], "_")) == aD))
1428+ then hw[aW]
1429+ else "0_0_0_0_0_0", if ((size(split(hw[aX], "_")) == aD))
1430+ then hw[aX]
1431+ else "0_0_0_0_0_0", hw[aY], hy]
1432+ }
1433+
1434+
1435+func hC (hi) = {
1436+ let hD = hh(hi)
1437+ let hE = parseIntValue(split(hi[aZ], "_")[ba])
1438+ ((hf(hi[aV]) - hD) - hE)
1439+ }
1440+
1441+
1442+func hF (hG,hi,hH) = if ((size(hG) != 3))
14291443 then throw("cargoListStr should contain exactly 2 ':' separators")
14301444 else {
1431- let hG = split(hE[0], "_")
1432- let hH = split(hE[1], "_")
1433- let hI = if ((hE[2] == ""))
1445+ let hI = split(hG[0], "_")
1446+ let hJ = split(hG[1], "_")
1447+ let hK = if ((hG[2] == ""))
14341448 then nil
1435- else split_4C(hE[2], "_")
1436- if ((size(hG) != aD))
1449+ else split_4C(hG[2], "_")
1450+ if ((size(hI) != aD))
14371451 then throw("All 6 resources should be passed")
1438- else if ((size(hH) != aD))
1452+ else if ((size(hJ) != aD))
14391453 then throw("All 6 materials should be passed")
14401454 else {
1441- let go = hA(hg)
1442- let hJ = split(hg[aW], "_")
1443- let hK = split(hg[aX], "_")
1444- let hL = if ((hg[aY] == ""))
1455+ let gq = hC(hi)
1456+ let hL = split(hi[aW], "_")
1457+ let hM = split(hi[aX], "_")
1458+ let hN = if ((hi[aY] == ""))
14451459 then nil
1446- else split_4C(hg[aY], "_")
1447- let gm = split(hF[bf], "_")
1448- let hM = split(hF[bg], "_")
1449- let hN = if ((hF[bh] == ""))
1460+ else split_4C(hi[aY], "_")
1461+ let go = split(hH[bf], "_")
1462+ let hO = split(hH[bg], "_")
1463+ let hP = if ((hH[bh] == ""))
14501464 then nil
1451- else split_4C(hF[bh], "_")
1452- func hO (eg,hj) = {
1453- let fZ = eg._1
1454- let hP = parseIntValue(hj)
1455- let hQ = parseIntValue(hJ[fZ])
1456- let hR = parseIntValue(gm[fZ])
1457- if ((hP == 0))
1458- then $Tuple4((fZ + 1), (eg._2 :+ hJ[fZ]), (eg._3 :+ gm[fZ]), eg._4)
1459- else if ((hP > 0))
1460- then if ((hP > hR))
1461- then throw((((("Attempt to take " + hj) + " from backpack, but only ") + toString(hR)) + " available"))
1462- else $Tuple4((fZ + 1), (eg._2 :+ toString((hQ + hP))), (eg._3 :+ toString((hR - hP))), (eg._4 + hP))
1463- else if ((-(hP) > hQ))
1464- then throw((((("Attempt to take " + toString(-(hP))) + " from warehouse, but only ") + toString(hQ)) + " available"))
1465- else $Tuple4((fZ + 1), (eg._2 :+ toString((hQ + hP))), (eg._3 :+ toString((hR - hP))), (eg._4 + hP))
1465+ else split_4C(hH[bh], "_")
1466+ func hQ (ei,hl) = {
1467+ let gb = ei._1
1468+ let hR = parseIntValue(hl)
1469+ let hS = parseIntValue(hL[gb])
1470+ let hT = parseIntValue(go[gb])
1471+ if ((hR == 0))
1472+ then $Tuple4((gb + 1), (ei._2 :+ hL[gb]), (ei._3 :+ go[gb]), ei._4)
1473+ else if ((hR > 0))
1474+ then if ((hR > hT))
1475+ then throw((((("Attempt to take " + hl) + " from backpack, but only ") + toString(hT)) + " available"))
1476+ else $Tuple4((gb + 1), (ei._2 :+ toString((hS + hR))), (ei._3 :+ toString((hT - hR))), (ei._4 + hR))
1477+ else if ((-(hR) > hS))
1478+ then throw((((("Attempt to take " + toString(-(hR))) + " from warehouse, but only ") + toString(hS)) + " available"))
1479+ else $Tuple4((gb + 1), (ei._2 :+ toString((hS + hR))), (ei._3 :+ toString((hT - hR))), (ei._4 + hR))
14661480 }
14671481
1468- let er = {
1469- let ei = hG
1470- let ej = size(ei)
1471- let ek = $Tuple4(0, nil, nil, 0)
1472- func el (em,en) = if ((en >= ej))
1473- then em
1474- else hO(em, ei[en])
1475-
1476- func eo (em,en) = if ((en >= ej))
1477- then em
1482+ let et = {
1483+ let ek = hI
1484+ let el = size(ek)
1485+ let em = $Tuple4(0, nil, nil, 0)
1486+ func en (eo,ep) = if ((ep >= el))
1487+ then eo
1488+ else hQ(eo, ek[ep])
1489+
1490+ func eq (eo,ep) = if ((ep >= el))
1491+ then eo
14781492 else throw("List size exceeds 6")
14791493
1480- eo(el(el(el(el(el(el(ek, 0), 1), 2), 3), 4), 5), 6)
1494+ eq(en(en(en(en(en(en(em, 0), 1), 2), 3), 4), 5), 6)
14811495 }
1482- func hS (eg,hj) = {
1483- let fZ = eg._1
1484- let hP = parseIntValue(hj)
1485- let hT = parseIntValue(hK[fZ])
1486- let hU = parseIntValue(hM[fZ])
1487- if ((hP == 0))
1488- then $Tuple4((fZ + 1), (eg._2 :+ hK[fZ]), (eg._3 :+ hM[fZ]), eg._4)
1489- else if ((hP > 0))
1490- then if ((hP > hU))
1491- then throw((((("Attempt to take " + hj) + " from backpack, but only ") + toString(hU)) + " available"))
1492- else $Tuple4((fZ + 1), (eg._2 :+ toString((hT + hP))), (eg._3 :+ toString((hU - hP))), (eg._4 + hP))
1493- else if ((-(hP) > hT))
1494- then throw((((("Attempt to take " + toString(-(hP))) + " from warehouse, but only ") + toString(hT)) + " available"))
1495- else $Tuple4((fZ + 1), (eg._2 :+ toString((hT + hP))), (eg._3 :+ toString((hU - hP))), (eg._4 + hP))
1496+ func hU (ei,hl) = {
1497+ let gb = ei._1
1498+ let hR = parseIntValue(hl)
1499+ let hV = parseIntValue(hM[gb])
1500+ let hW = parseIntValue(hO[gb])
1501+ if ((hR == 0))
1502+ then $Tuple4((gb + 1), (ei._2 :+ hM[gb]), (ei._3 :+ hO[gb]), ei._4)
1503+ else if ((hR > 0))
1504+ then if ((hR > hW))
1505+ then throw((((("Attempt to take " + hl) + " from backpack, but only ") + toString(hW)) + " available"))
1506+ else $Tuple4((gb + 1), (ei._2 :+ toString((hV + hR))), (ei._3 :+ toString((hW - hR))), (ei._4 + hR))
1507+ else if ((-(hR) > hV))
1508+ then throw((((("Attempt to take " + toString(-(hR))) + " from warehouse, but only ") + toString(hV)) + " available"))
1509+ else $Tuple4((gb + 1), (ei._2 :+ toString((hV + hR))), (ei._3 :+ toString((hW - hR))), (ei._4 + hR))
14961510 }
14971511
1498- let fF = {
1499- let ei = hH
1500- let ej = size(ei)
1501- let ek = $Tuple4(0, nil, nil, er._4)
1502- func gW (em,en) = if ((en >= ej))
1503- then em
1504- else hS(em, ei[en])
1505-
1506- func gX (em,en) = if ((en >= ej))
1507- then em
1512+ let fH = {
1513+ let ek = hJ
1514+ let el = size(ek)
1515+ let em = $Tuple4(0, nil, nil, et._4)
1516+ func gY (eo,ep) = if ((ep >= el))
1517+ then eo
1518+ else hU(eo, ek[ep])
1519+
1520+ func gZ (eo,ep) = if ((ep >= el))
1521+ then eo
15081522 else throw("List size exceeds 6")
15091523
1510- gX(gW(gW(gW(gW(gW(gW(ek, 0), 1), 2), 3), 4), 5), 6)
1524+ gZ(gY(gY(gY(gY(gY(gY(em, 0), 1), 2), 3), 4), 5), 6)
15111525 }
1512- func hV (eg,hj) = {
1513- let fZ = eg._1
1514- let hP = parseIntValue(hj)
1515- let hW = if ((size(hL) > fZ))
1516- then parseIntValue(hL[fZ])
1526+ func hX (ei,hl) = {
1527+ let gb = ei._1
1528+ let hR = parseIntValue(hl)
1529+ let hY = if ((size(hN) > gb))
1530+ then parseIntValue(hN[gb])
15171531 else 0
1518- let hX = if ((size(hN) > fZ))
1519- then parseIntValue(hN[fZ])
1532+ let hZ = if ((size(hP) > gb))
1533+ then parseIntValue(hP[gb])
15201534 else 0
1521- if ((hP == 0))
1522- then $Tuple4((fZ + 1), (eg._2 :+ toString(hW)), (eg._3 :+ toString(hX)), eg._4)
1523- else if ((hP > 0))
1524- then if ((hP > hX))
1525- then throw((((("Attempt to take " + hj) + " from backpack, but only ") + toString(hX)) + " available"))
1535+ if ((hR == 0))
1536+ then $Tuple4((gb + 1), (ei._2 :+ toString(hY)), (ei._3 :+ toString(hZ)), ei._4)
1537+ else if ((hR > 0))
1538+ then if ((hR > hZ))
1539+ then throw((((("Attempt to take " + hl) + " from backpack, but only ") + toString(hZ)) + " available"))
15261540 else {
1527- let fi = (dW((hW + hP), aU) - dW(hW, aU))
1528- $Tuple4((fZ + 1), (eg._2 :+ toString((hW + hP))), (eg._3 :+ toString((hX - hP))), (eg._4 + fi))
1541+ let fk = (dY((hY + hR), aU) - dY(hY, aU))
1542+ $Tuple4((gb + 1), (ei._2 :+ toString((hY + hR))), (ei._3 :+ toString((hZ - hR))), (ei._4 + fk))
15291543 }
1530- else if ((-(hP) > hW))
1531- then throw((((("Attempt to take " + toString(-(hP))) + " from warehouse, but only ") + toString(hW)) + " available"))
1544+ else if ((-(hR) > hY))
1545+ then throw((((("Attempt to take " + toString(-(hR))) + " from warehouse, but only ") + toString(hY)) + " available"))
15321546 else {
1533- let fi = (dW((hW + hP), aU) - dW(hW, aU))
1534- $Tuple4((fZ + 1), (eg._2 :+ toString((hW + hP))), (eg._3 :+ toString((hX - hP))), (eg._4 + fi))
1547+ let fk = (dY((hY + hR), aU) - dY(hY, aU))
1548+ $Tuple4((gb + 1), (ei._2 :+ toString((hY + hR))), (ei._3 :+ toString((hZ - hR))), (ei._4 + fk))
15351549 }
15361550 }
15371551
1538- let fJ = if ((size(hI) != 0))
1552+ let fL = if ((size(hK) != 0))
15391553 then {
1540- let ei = hI
1541- let ej = size(ei)
1542- let ek = $Tuple4(0, nil, nil, fF._4)
1543- func gZ (em,en) = if ((en >= ej))
1544- then em
1545- else hV(em, ei[en])
1546-
1547- func ha (em,en) = if ((en >= ej))
1548- then em
1554+ let ek = hK
1555+ let el = size(ek)
1556+ let em = $Tuple4(0, nil, nil, fH._4)
1557+ func hb (eo,ep) = if ((ep >= el))
1558+ then eo
1559+ else hX(eo, ek[ep])
1560+
1561+ func hc (eo,ep) = if ((ep >= el))
1562+ then eo
15491563 else throw("List size exceeds 50")
15501564
1551- ha(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(ek, 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)
1565+ hc(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(em, 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)
15521566 }
1553- else $Tuple4(0, hL, hN, fF._4)
1554- let hY = fJ._4
1555- if ((hY > go))
1556- then throw((((("Attempt to put total " + toString(hY)) + " stuff, but only ") + toString(go)) + " warehouse space left"))
1557- else $Tuple7(makeString(er._2, "_"), makeString(fF._2, "_"), makeString_2C(fJ._2, "_"), makeString(er._3, "_"), makeString(fF._3, "_"), makeString_2C(fJ._3, "_"), hY)
1567+ else $Tuple4(0, hN, hP, fH._4)
1568+ let ia = fL._4
1569+ if ((ia > gq))
1570+ then throw((((("Attempt to put total " + toString(ia)) + " stuff, but only ") + toString(gq)) + " warehouse space left"))
1571+ else $Tuple7(makeString(et._2, "_"), makeString(fH._2, "_"), makeString_2C(fL._2, "_"), makeString(et._3, "_"), makeString(fH._3, "_"), makeString_2C(fL._3, "_"), ia)
15581572 }
15591573 }
15601574
15611575
1562-func hZ (ia,ib) = {
1563- let bH = toString(ia)
1564- let ic = gu(toBigInt(ib))
1565- let id = valueOrElse(getInteger(dE()), (dD + 1))
1566- let dI = toString(id)
1567- let gD = toInt((ic % dx))
1568- let gc = gB(ic, gD)
1569- let cW = aM[gD]
1570- let ie = Issue(dV(dI, "S"), makeString([dI, "S", gc, cW], "_"), 1, 0, false)
1571- let bk = calculateAssetId(ie)
1572- let if = toBase58String(bk)
1573- $Tuple2([IntegerEntry(dE(), (id + 1)), ie, StringEntry(dH(dI), if), StringEntry(bj(if), bH), StringEntry(dK(dI), bH), IntegerEntry(bt(if), 0), IntegerEntry(dJ(if, bH), 0), ScriptTransfer(ia, 1, bk)], $Tuple2(if, cW))
1574- }
1575-
1576-
1577-func ig (bH,ih,ii) = if (!(sigVerify_8Kb(ih, ii, dp)))
1576+func ib (ic,id) = {
1577+ let bH = toString(ic)
1578+ let ie = gw(toBigInt(id))
1579+ let if = valueOrElse(getInteger(dG()), (dF + 1))
1580+ let dK = toString(if)
1581+ let gF = toInt((ie % dz))
1582+ let ge = gD(ie, gF)
1583+ let cX = aM[gF]
1584+ let ig = Issue(dX(dK, "S"), makeString([dK, "S", ge, cX], "_"), 1, 0, false)
1585+ let bk = calculateAssetId(ig)
1586+ let ih = toBase58String(bk)
1587+ $Tuple2([IntegerEntry(dG(), (if + 1)), ig, StringEntry(dJ(dK), ih), StringEntry(bj(ih), bH), StringEntry(dM(dK), bH), IntegerEntry(bt(ih), 0), IntegerEntry(dL(ih, bH), 0), ScriptTransfer(ic, 1, bk)], $Tuple2(ih, cX))
1588+ }
1589+
1590+
1591+func ii (bH,ij,ik) = if (!(sigVerify_8Kb(ij, ik, dr)))
15781592 then throw("signature does not match")
15791593 else {
1580- let eE = split(toUtf8String(ih), ";")
1581- let ij = split(eE[0], "|")
1582- let ik = split(ij[dR], "_")
1583- let il = parseIntValue(ik[0])
1584- let im = parseIntValue(ik[1])
1585- let in = split(eE[1], ":")
1586- let io = in[0]
1587- let ip = parseIntValue(ij[dS])
1588- if (if ((ip > (lastBlock.timestamp + dr)))
1594+ let eG = split(toUtf8String(ij), ";")
1595+ let il = split(eG[0], "|")
1596+ let im = split(il[dT], "_")
1597+ let in = parseIntValue(im[0])
1598+ let io = parseIntValue(im[1])
1599+ let ip = split(eG[1], ":")
1600+ let iq = ip[0]
1601+ let ir = parseIntValue(il[dU])
1602+ if (if ((ir > (lastBlock.timestamp + dt)))
15891603 then true
1590- else ((lastBlock.timestamp - dr) > ip))
1591- then throw(((("signature outdated: logTime=" + toString(ip)) + ", bcTime=") + toString(lastBlock.timestamp)))
1604+ else ((lastBlock.timestamp - dt) > ir))
1605+ then throw(((("signature outdated: logTime=" + toString(ir)) + ", bcTime=") + toString(lastBlock.timestamp)))
15921606 else {
1593- let iq = in[1]
1594- let ir = valueOrElse(getString(bi(bH)), "")
1595- if ((ir != iq))
1596- then throw(((("Tx ids don't match! In state: " + ir) + ", in msg: ") + iq))
1607+ let is = ip[1]
1608+ let it = valueOrElse(getString(bi(bH)), "")
1609+ if ((it != is))
1610+ then throw(((("Tx ids don't match! In state: " + it) + ", in msg: ") + is))
15971611 else {
15981612 let z = valueOrErrorMessage(getString(bC(bH)), "You don't have a duck staked")
1599- let is = y(z)
1600- let it = ae(valueOrElse(getInteger(C(z)), 0))
1601- let iu = valueOrElse(getInteger(is), it)
1602- if ((iu != il))
1603- then throw(((("oldHealth=" + toString(iu)) + " from state does not match one from flight log=") + toString(il)))
1604- else if ((0 >= il))
1613+ let iu = y(z)
1614+ let iv = ae(valueOrElse(getInteger(C(z)), 0))
1615+ let iw = valueOrElse(getInteger(iu), iv)
1616+ if ((iw != in))
1617+ then throw(((("oldHealth=" + toString(iw)) + " from state does not match one from flight log=") + toString(in)))
1618+ else if ((0 >= in))
16051619 then throw("You can't fly with zero health")
1606- else if (!(fL(z)))
1620+ else if (!(fN(z)))
16071621 then throw("Equipment incompatible")
16081622 else {
1609- let iv = if ((size(ij) > dT))
1610- then ij[dT]
1623+ let ix = if ((size(il) > dV))
1624+ then il[dV]
16111625 else ""
1612- let iw = if ((size(ij) > dU))
1613- then ij[dU]
1626+ let iy = if ((size(il) > dW))
1627+ then il[dW]
16141628 else ""
1615- let ix = if (if ((im > 0))
1616- then (iv == "$")
1629+ let iz = if (if ((io > 0))
1630+ then (ix == "$")
16171631 else false)
1618- then dc(invoke(cH, "sendUsdtPrize", [bH], nil))
1632+ then dd(invoke(cI, "sendUsdtPrize", [bH], nil))
16191633 else 0
1620- $Tuple5(im, z, ix, io, iw)
1634+ $Tuple5(io, z, iz, iq, iy)
16211635 }
16221636 }
16231637 }
16241638 }
16251639
16261640
1627-func iy (ia,ib,ih,ii) = {
1628- let bH = toString(ia)
1629- let gE = ig(bH, ih, ii)
1630- let z = gE._2
1631- let is = y(z)
1632- let hc = bD(z)
1633- let hF = hb(hc)
1634- let iz = split(hF[bg], "_")
1635- let iA = makeString(es(true, iz, dv), "_")
1636- let fM = E(z)
1637- let iB = valueOrElse(getString(fM), ",;,_,;,_,;,_,;,_,;,_,;,")
1638- let iC = ez(iB, gE._5)
1639- let iD = iC._1
1640- let iE = iC._2
1641- if ((0 >= gE._1))
1642- then $Tuple3([IntegerEntry(is, 0), StringEntry(fM, iD)], "", 0)
1641+func iA (ic,id,ij,ik) = {
1642+ let bH = toString(ic)
1643+ let gG = ii(bH, ij, ik)
1644+ let z = gG._2
1645+ let iu = y(z)
1646+ let he = bD(z)
1647+ let hH = hd(he)
1648+ let iB = split(hH[bg], "_")
1649+ let iC = makeString(eu(true, iB, dx), "_")
1650+ let fO = E(z)
1651+ let iD = valueOrElse(getString(fO), ",;,_,;,_,;,_,;,_,;,_,;,")
1652+ let iE = eB(iD, gG._5)
1653+ let iF = iE._1
1654+ let iG = iE._2
1655+ if ((0 >= gG._1))
1656+ then $Tuple3([IntegerEntry(iu, 0), StringEntry(fO, iF)], "", 0)
16431657 else {
1644- let iF = hZ(ia, ib)
1645- let if = iF._2._1
1646- $Tuple3((iF._1 ++ (if (iE)
1658+ let iH = ib(ic, id)
1659+ let ih = iH._2._1
1660+ $Tuple3((iH._1 ++ (if (iG)
16471661 then [StringEntry(K(z), "0_0_0_0_0")]
1648- else ((((nil :+ StringEntry(bE(z), makeString([iF._2._2, "L", if], "_"))) :+ IntegerEntry(is, gE._1)) :+ StringEntry(fM, iD)) :+ StringEntry(hc, makeString([hF[be], hF[bf], iA, hF[bh]], ":"))))), if, gE._3)
1649- }
1650- }
1651-
1652-
1653-func iG (O,iH) = {
1654- let hr = valueOrElse(getInteger(bt(O)), 0)
1655- let iI = valueOrElse(getInteger(bn(aC, O)), 0)
1656- let iJ = (hr / 6)
1657- let iK = (hr / 7)
1658- ((aF + fraction(aF, ((hr + iJ) + (2 * iK)), 5)) + fraction(aF, iI, (iH * 5)))
1659- }
1660-
1661-
1662-func iL (b,iM,iN) = {
1663- let iO = if ((iM == dO))
1664- then $Tuple2(iN, valueOrElse(getString(bC(b)), ""))
1662+ else ((((nil :+ StringEntry(bE(z), makeString([iH._2._2, "L", ih], "_"))) :+ IntegerEntry(iu, gG._1)) :+ StringEntry(fO, iF)) :+ StringEntry(he, makeString([hH[be], hH[bf], iC, hH[bh]], ":"))))), ih, gG._3)
1663+ }
1664+ }
1665+
1666+
1667+func iI (O,iJ) = {
1668+ let ht = valueOrElse(getInteger(bt(O)), 0)
1669+ let iK = valueOrElse(getInteger(bn(aC, O)), 0)
1670+ let iL = (ht / 6)
1671+ let iM = (ht / 7)
1672+ ((aF + fraction(aF, ((ht + iL) + (2 * iM)), 5)) + fraction(aF, iK, (iJ * 5)))
1673+ }
1674+
1675+
1676+func iN (b,iO,iP) = {
1677+ let iQ = if ((iO == dQ))
1678+ then $Tuple2(iP, valueOrElse(getString(bC(b)), ""))
16651679 else {
16661680 let z = valueOrErrorMessage(getString(bC(b)), "You don't have a duck staked")
1667- let iP = valueOrElse(getString(bE(z)), aI)
1668- let iQ = split(value(iP), "_")
1669- if ((iQ[bX] != "L"))
1670- then throw((("Duck location type is " + iQ[bX]) + ", but should be L"))
1671- else $Tuple2(iQ[bY], z)
1672- }
1673- let O = iO._1
1674- let iR = iO._2
1675- let iS = value(assetInfo(fromBase58String(O)))
1676- let iT = bm(O)
1677- let iU = valueOrErrorMessage(getInteger(iT), (("Land " + iS.name) + " is not staked"))
1678- let iV = valueOrErrorMessage(getString(bj(O)), (("NFT " + iS.name) + " is orphaned"))
1679- if ((iV != b))
1681+ let iR = valueOrElse(getString(bE(z)), aI)
1682+ let iS = split(value(iR), "_")
1683+ if ((iS[bX] != "L"))
1684+ then throw((("Duck location type is " + iS[bX]) + ", but should be L"))
1685+ else $Tuple2(iS[bY], z)
1686+ }
1687+ let O = iQ._1
1688+ let iT = iQ._2
1689+ let iU = value(assetInfo(fromBase58String(O)))
1690+ let iV = bm(O)
1691+ let iW = valueOrErrorMessage(getInteger(iV), (("Land " + iU.name) + " is not staked"))
1692+ let iX = valueOrErrorMessage(getString(bj(O)), (("NFT " + iU.name) + " is orphaned"))
1693+ if ((iX != b))
16801694 then throw((aA + " is not yours"))
16811695 else {
1682- let iW = split(iS.description, "_")
1683- $Tuple4(iR, O, iW, iU)
1684- }
1685- }
1686-
1687-
1688-func iX (b,dX,iM,iN) = if ((0 > dX))
1696+ let iY = split(iU.description, "_")
1697+ $Tuple4(iT, O, iY, iW)
1698+ }
1699+ }
1700+
1701+
1702+func iZ (b,dZ,iO,iP) = if ((0 > dZ))
16891703 then throw("Negative amount")
16901704 else {
1691- let fp = iL(b, iM, iN)
1692- let df = fp._3[cN]
1693- let fV = gb(fp._3[cO])
1694- let gf = (lastBlock.timestamp - fp._4)
1695- if ((0 > gf))
1696- then throw(((("Saved timestamp is in future, saved = " + toString(fp._4)) + ", current = ") + toString(lastBlock.timestamp)))
1705+ let fr = iN(b, iO, iP)
1706+ let dh = fr._3[cO]
1707+ let fX = gd(fr._3[cP])
1708+ let gh = (lastBlock.timestamp - fr._4)
1709+ if ((0 > gh))
1710+ then throw(((("Saved timestamp is in future, saved = " + toString(fr._4)) + ", current = ") + toString(lastBlock.timestamp)))
16971711 else {
1698- let iH = de(df)
1699- let iY = iG(fp._2, iH)
1700- let iZ = fraction(gf, (iY * iH), aG)
1701- if ((dX > iZ))
1702- then throw(((("Not enough resources, available = " + toString(iZ)) + ", requested = ") + toString(dX)))
1712+ let iJ = dg(dh)
1713+ let ja = iI(fr._2, iJ)
1714+ let jb = fraction(gh, (ja * iJ), aG)
1715+ if ((dZ > jb))
1716+ then throw(((("Not enough resources, available = " + toString(jb)) + ", requested = ") + toString(dZ)))
17031717 else {
1704- let ja = fraction((iZ - dX), aG, (iY * iH))
1705- let jb = (lastBlock.timestamp - ja)
1706- let hq = (iH / cm)
1707- let gn = gj(fV, (gf - ja), hq, iY)
1708- let hp = bs(fp._2)
1709- let hr = valueOrElse(getInteger(bt(fp._2)), 0)
1710- let hg = ho(hp, hq, hr)
1711- let hx = split(hg[aZ], "_")
1712- let go = parseIntValue(hx[bc])
1713- if (if ((iM == dO))
1714- then (dX > go)
1718+ let jc = fraction((jb - dZ), aG, (ja * iJ))
1719+ let jd = (lastBlock.timestamp - jc)
1720+ let hs = (iJ / cn)
1721+ let gp = gl(fX, (gh - jc), hs, ja)
1722+ let hr = bs(fr._2)
1723+ let ht = valueOrElse(getInteger(bt(fr._2)), 0)
1724+ let hi = hq(hr, hs, ht)
1725+ let hz = split(hi[aZ], "_")
1726+ let gq = parseIntValue(hz[bc])
1727+ if (if ((iO == dQ))
1728+ then (dZ > gq)
17151729 else false)
1716- then throw((("Only " + toString(go)) + " space left in warehouse"))
1730+ then throw((("Only " + toString(gq)) + " space left in warehouse"))
17171731 else {
1718- let hc = bD(fp._1)
1719- let hF = hb(hc)
1720- let gm = split(hF[bf], "_")
1721- let gl = split(hg[aW], "_")
1722- let jc = if ((iM == dO))
1723- then $Tuple4(gd(gl, fV, (gf - ja), hq, iY), hF[bf], (parseIntValue(hx[bb]) + gn._2), (parseIntValue(hx[bc]) - gn._2))
1724- else if ((iM == dP))
1725- then $Tuple4(hg[aW], gd(gm, fV, (gf - ja), hq, iY), parseIntValue(hx[bb]), parseIntValue(hx[bc]))
1732+ let he = bD(fr._1)
1733+ let hH = hd(he)
1734+ let go = split(hH[bf], "_")
1735+ let gn = split(hi[aW], "_")
1736+ let je = if ((iO == dQ))
1737+ then $Tuple4(gf(gn, fX, (gh - jc), hs, ja), hH[bf], (parseIntValue(hz[bb]) + gp._2), (parseIntValue(hz[bc]) - gp._2))
1738+ else if ((iO == dR))
1739+ then $Tuple4(hi[aW], gf(go, fX, (gh - jc), hs, ja), parseIntValue(hz[bb]), parseIntValue(hz[bc]))
17261740 else {
1727- let jd = gk(gl, gm, gn, go)
1728- let je = min([parseIntValue(hx[bc]), gn._2])
1729- $Tuple4(jd._1, jd._2, (parseIntValue(hx[bb]) + je), (parseIntValue(hx[bc]) - je))
1741+ let jf = gm(gn, go, gp, gq)
1742+ let jg = min([parseIntValue(hz[bc]), gp._2])
1743+ $Tuple4(jf._1, jf._2, (parseIntValue(hz[bb]) + jg), (parseIntValue(hz[bc]) - jg))
17301744 }
1731- let jf = jc._1
1732- let jg = jc._2
1733- let jh = jc._3
1734- let ji = jc._4
1735- $Tuple5([IntegerEntry(bm(fp._2), jb), IntegerEntry(bp(aA, fp._2, b), jb)], hc, [hF[be], jg, hF[bg], hF[bh]], hp, [hg[aV], jf, hg[aX], hg[aY], makeString([hx[ba], toString(jh), toString(ji), hx[bd]], "_")])
1745+ let jh = je._1
1746+ let ji = je._2
1747+ let jj = je._3
1748+ let jk = je._4
1749+ $Tuple5([IntegerEntry(bm(fr._2), jd), IntegerEntry(bp(aA, fr._2, b), jd)], he, [hH[be], ji, hH[bg], hH[bh]], hr, [hi[aV], jh, hi[aX], hi[aY], makeString([hz[ba], toString(jj), toString(jk), hz[bd]], "_")])
17361750 }
17371751 }
17381752 }
17391753 }
17401754
17411755
1742-func jj (b,O,iH,iM) = {
1743- let iT = bm(O)
1744- let iU = value(getInteger(iT))
1745- let iZ = (fraction((lastBlock.timestamp - iU), iG(O, iH), aG) * iH)
1746- iX(b, iZ, iM, O)
1747- }
1748-
1749-
1750-func jk (et,ia,jl,O) = {
1751- let b = toString(ia)
1752- let fp = iL(b, dQ, O)
1753- let iH = de(fp._3[cN])
1754- let jm = bt(fp._2)
1755- let jn = valueOrElse(getInteger(jm), 0)
1756- if (if (!(cc))
1757- then (jn >= 3)
1756+func jl (b,O,iJ,iO) = {
1757+ let iV = bm(O)
1758+ let iW = value(getInteger(iV))
1759+ let jb = (fraction((lastBlock.timestamp - iW), iI(O, iJ), aG) * iJ)
1760+ iZ(b, jb, iO, O)
1761+ }
1762+
1763+
1764+func jm (ev,ic,jn,O) = {
1765+ let b = toString(ic)
1766+ let fr = iN(b, dS, O)
1767+ let iJ = dg(fr._3[cO])
1768+ let jo = bt(fr._2)
1769+ let jp = valueOrElse(getInteger(jo), 0)
1770+ if (if (!(cd))
1771+ then (jp >= 3)
17581772 else false)
17591773 then throw("Currently max infrastructure level = 3")
17601774 else {
1761- let jo = ((sqrt(iH, 0, 0, DOWN) / 5) + 2)
1762- let aj = (jn + 1)
1763- if (if (cc)
1764- then (aj > jo)
1775+ let jq = ((sqrt(iJ, 0, 0, DOWN) / 5) + 2)
1776+ let aj = (jp + 1)
1777+ if (if (cd)
1778+ then (aj > jq)
17651779 else false)
1766- then throw(("Currently max infrastructure level = " + toString(jo)))
1780+ then throw(("Currently max infrastructure level = " + toString(jq)))
17671781 else {
1768- let jp = fraction(du, (iH * aj), cm)
1769- if (if (!(et))
1770- then (jl != jp)
1782+ let jr = fraction(dw, (iJ * aj), cn)
1783+ if (if (!(ev))
1784+ then (jn != jr)
17711785 else false)
1772- then throw(("Payment attached should be " + toString(jp)))
1786+ then throw(("Payment attached should be " + toString(jr)))
17731787 else {
1774- let hc = bD(fp._1)
1775- let hF = hb(hc)
1776- let iz = split(hF[bg], "_")
1777- let jq = fraction(ch, (iH * aj), cm)
1778- let iA = makeString(es(et, iz, jq), "_")
1779- let jr = jj(b, fp._2, iH, dQ)
1780- let js = jr._5
1781- let jt = hd(js[aV])
1782- let ju = makeString([split(js[aV], "_")[0], toString(aj)], "_")
1783- let jv = hd(ju)
1784- let hx = split(js[aZ], "_")
1785- let jw = makeString([hx[ba], hx[bb], toString(((parseIntValue(hx[bc]) + jv) - jt)), toString(jv)], "_")
1786- $Tuple3(([IntegerEntry(jm, aj), IntegerEntry(dJ(fp._2, b), aj), StringEntry(hc, makeString([hF[be], jr._3[bf], iA, hF[bh]], ":")), StringEntry(jr._4, makeString([ju, js[aW], js[aX], js[aY], jw], ":"))] ++ jr._1), aj, jq)
1788+ let he = bD(fr._1)
1789+ let hH = hd(he)
1790+ let iB = split(hH[bg], "_")
1791+ let js = fraction(ci, (iJ * aj), cn)
1792+ let iC = makeString(eu(ev, iB, js), "_")
1793+ let jt = jl(b, fr._2, iJ, dS)
1794+ let ju = jt._5
1795+ let jv = hf(ju[aV])
1796+ let jw = makeString([split(ju[aV], "_")[0], toString(aj)], "_")
1797+ let jx = hf(jw)
1798+ let hz = split(ju[aZ], "_")
1799+ let jy = makeString([hz[ba], hz[bb], toString(((parseIntValue(hz[bc]) + jx) - jv)), toString(jx)], "_")
1800+ $Tuple3(([IntegerEntry(jo, aj), IntegerEntry(dL(fr._2, b), aj), StringEntry(he, makeString([hH[be], jt._3[bf], iC, hH[bh]], ":")), StringEntry(jt._4, makeString([jw, ju[aW], ju[aX], ju[aY], jy], ":"))] ++ jt._1), aj, js)
17871801 }
17881802 }
17891803 }
17901804 }
17911805
17921806
1793-func jx (z,jy) = {
1794- let jz = C(z)
1795- let jA = B(z)
1796- let ad = valueOrElse(getInteger(al, jA), 0)
1797- let ai = (ad + jy)
1798- let jB = ag(valueOrElse(getInteger(al, jz), 0), ai)
1799- let jC = D(z)
1800- $Tuple2([IntegerEntry(jz, jB[0]), IntegerEntry(jA, ai), IntegerEntry(jC, (valueOrElse(getInteger(jC), 0) + jB[1]))], ai)
1801- }
1802-
1803-
1804-func jD (b,jy) = {
1805- let jz = G(b)
1806- let jA = F(b)
1807- let ad = valueOrElse(getInteger(al, jA), 0)
1808- let ai = (ad + jy)
1809- let jB = ag(valueOrElse(getInteger(al, jz), 0), ai)
1810- let jC = H(b)
1811- $Tuple2([IntegerEntry(jz, jB[0]), IntegerEntry(jA, ai), IntegerEntry(jC, (valueOrElse(getInteger(jC), 0) + jB[1]))], ai)
1812- }
1813-
1814-
1815-func jE (b) = {
1807+func jz (z,jA) = {
1808+ let jB = C(z)
1809+ let jC = B(z)
1810+ let ad = valueOrElse(getInteger(al, jC), 0)
1811+ let ai = (ad + jA)
1812+ let jD = ag(valueOrElse(getInteger(al, jB), 0), ai)
1813+ let jE = D(z)
1814+ $Tuple2([IntegerEntry(jB, jD[0]), IntegerEntry(jC, ai), IntegerEntry(jE, (valueOrElse(getInteger(jE), 0) + jD[1]))], ai)
1815+ }
1816+
1817+
1818+func jF (b,jA) = {
1819+ let jB = G(b)
1820+ let jC = F(b)
1821+ let ad = valueOrElse(getInteger(al, jC), 0)
1822+ let ai = (ad + jA)
1823+ let jD = ag(valueOrElse(getInteger(al, jB), 0), ai)
1824+ let jE = H(b)
1825+ $Tuple2([IntegerEntry(jB, jD[0]), IntegerEntry(jC, ai), IntegerEntry(jE, (valueOrElse(getInteger(jE), 0) + jD[1]))], ai)
1826+ }
1827+
1828+
1829+func jG (b) = {
18161830 let z = valueOrErrorMessage(getString(bC(b)), "You don't have a duck staked")
1817- let jF = bx(b)
1818- let jG = getString(jF)
1819- if (!(isDefined(jG)))
1831+ let jH = bx(b)
1832+ let jI = getString(jH)
1833+ if (!(isDefined(jI)))
18201834 then throw("You are not eligible for ONBOARD artifact")
18211835 else {
1822- let jH = bz(b)
1823- let jI = getString(jH)
1824- if (isDefined(jI))
1825- then throw(("You already used your ONBOARD artifact on duck " + value(jI)))
1836+ let jJ = bz(b)
1837+ let jK = getString(jJ)
1838+ if (isDefined(jK))
1839+ then throw(("You already used your ONBOARD artifact on duck " + value(jK)))
18261840 else {
1827- let jJ = by(z)
1828- let jK = getString(jJ)
1829- if (isDefined(jK))
1830- then throw(((("The duck " + z) + " already got points from ONBOARD artifact from user ") + value(jK)))
1831- else ([StringEntry(jH, z), StringEntry(jJ, b)] ++ jx(z, aa)._1)
1841+ let jL = by(z)
1842+ let jM = getString(jL)
1843+ if (isDefined(jM))
1844+ then throw(((("The duck " + z) + " already got points from ONBOARD artifact from user ") + value(jM)))
1845+ else ([StringEntry(jJ, z), StringEntry(jL, b)] ++ jz(z, aa)._1)
18321846 }
18331847 }
18341848 }
18351849
18361850
1837-func jL (b,iN) = {
1838- let fp = iL(b, dQ, iN)
1839- let O = fp._2
1840- let iH = de(fp._3[cN])
1841- let jM = bn(aC, O)
1842- if ((valueOrElse(getInteger(jM), 0) > 0))
1851+func jN (b,iP) = {
1852+ let fr = iN(b, dS, iP)
1853+ let O = fr._2
1854+ let iJ = dg(fr._3[cO])
1855+ let jO = bn(aC, O)
1856+ if ((valueOrElse(getInteger(jO), 0) > 0))
18431857 then throw("Presale artifact is already activated")
1844- else if ((parseIntValue(fp._3[cM]) > dD))
1858+ else if ((parseIntValue(fr._3[cN]) > dF))
18451859 then throw((((aA + " ") + O) + " is not eligible for presale artifact"))
18461860 else {
1847- let jr = jj(b, O, iH, dQ)
1848- (((jr._1 :+ IntegerEntry(jM, iH)) :+ StringEntry(jr._2, makeString(jr._3, ":"))) :+ StringEntry(jr._4, makeString(jr._5, ":")))
1861+ let jt = jl(b, O, iJ, dS)
1862+ (((jt._1 :+ IntegerEntry(jO, iJ)) :+ StringEntry(jt._2, makeString(jt._3, ":"))) :+ StringEntry(jt._4, makeString(jt._5, ":")))
18491863 }
18501864 }
18511865
18521866
1853-func jN (z) = {
1854- let jO = valueOrElse(getInteger(cL, bJ), 0)
1855- let iP = split(valueOrElse(getString(bE(z)), aI), "_")
1867+func jP (z) = {
1868+ let jQ = valueOrElse(getInteger(cM, bJ), 0)
1869+ let iR = split(valueOrElse(getString(bE(z)), aI), "_")
18561870 let av = lastBlock.timestamp
1857- let jP = bP(cL, jO)
1858- let bR = jP[bN]
1859- let bS = jP[bO]
1860- if ((iP[bX] != "T"))
1871+ let jR = bP(cM, jQ)
1872+ let bR = jR[bN]
1873+ let bS = jR[bO]
1874+ if ((iR[bX] != "T"))
18611875 then false
1862- else {
1863- let ey = if (if (if ((parseIntValue(iP[bW]) == jO))
1864- then (bS[bU] == "INPROGRESS")
1865- else false)
1866- then (parseIntValue(bR[bT]) > av)
1867- else false)
1868- then throw("Your duck is taking part in the tournament")
1869- else invoke(this, "exitTournamentInternal", [z], nil)
1870- if ((ey == ey))
1871- then false
1872- else throw("Strict value is not equal to itself.")
1873- }
1874- }
1875-
1876-
1877-func jQ (jR,aj,jS,b,jT,jU) = {
1876+ else if (if (if ((parseIntValue(iR[bW]) == jQ))
1877+ then (bS[bU] == "INPROGRESS")
1878+ else false)
1879+ then (parseIntValue(bR[bT]) > av)
1880+ else false)
1881+ then throw("Your duck is taking part in the tournament")
1882+ else df(invoke(this, "exitTournamentInternal", [z], nil))
1883+ }
1884+
1885+
1886+func jS (jT,aj,jU,b,jV,jW) = {
18781887 let z = valueOrErrorMessage(getString(bC(b)), "You don't have a duck staked")
1879- if (jN(z))
1888+ if (jP(z))
18801889 then throw("mergeInternal_checkTournament")
18811890 else {
1882- func jV (eg,O) = {
1883- let iS = value(assetInfo(fromBase58String(O)))
1884- let iT = bm(O)
1885- let iU = valueOrErrorMessage(getInteger(iT), (("NFT " + iS.name) + " is not staked"))
1886- let iV = valueOrErrorMessage(getString(bj(O)), (("NFT " + iS.name) + " is orphaned"))
1887- if ((iV != b))
1891+ func jX (ei,O) = {
1892+ let iU = value(assetInfo(fromBase58String(O)))
1893+ let iV = bm(O)
1894+ let iW = valueOrErrorMessage(getInteger(iV), (("NFT " + iU.name) + " is not staked"))
1895+ let iX = valueOrErrorMessage(getString(bj(O)), (("NFT " + iU.name) + " is orphaned"))
1896+ if ((iX != b))
18881897 then throw((aA + " is not yours"))
18891898 else {
1890- let iW = split(iS.description, "_")
1891- let cW = iW[cP]
1892- if (if ((eg._3 != ""))
1893- then (eg._3 != cW)
1899+ let iY = split(iU.description, "_")
1900+ let cX = iY[cQ]
1901+ if (if ((ei._3 != ""))
1902+ then (ei._3 != cX)
18941903 else false)
18951904 then throw("Lands should be on the same continent to merge")
18961905 else {
1897- let df = iW[cN]
1898- let jW = eg._1
1899- let fZ = valueOrErrorMessage(indexOf(jW, df), "You haven't passed all the lands needed")
1900- let jX = (take(jW, fZ) + drop(jW, (fZ + 1)))
1901- let iH = de(df)
1902- let jY = (eg._2 + valueOrElse(getInteger(bn(aC, O)), 0))
1903- let hr = valueOrElse(getInteger(bt(O)), 0)
1904- let jZ = {
1905- let cf = df
1906- if (("S" == cf))
1906+ let dh = iY[cO]
1907+ let jY = ei._1
1908+ let gb = valueOrErrorMessage(indexOf(jY, dh), "You haven't passed all the lands needed")
1909+ let jZ = (take(jY, gb) + drop(jY, (gb + 1)))
1910+ let iJ = dg(dh)
1911+ let ka = (ei._2 + valueOrElse(getInteger(bn(aC, O)), 0))
1912+ let ht = valueOrElse(getInteger(bt(O)), 0)
1913+ let kb = {
1914+ let cg = dh
1915+ if (("S" == cg))
19071916 then 3
1908- else if (("M" == cf))
1917+ else if (("M" == cg))
19091918 then 4
1910- else if (("L" == cf))
1919+ else if (("L" == cg))
19111920 then 5
1912- else if (("XL" == cf))
1921+ else if (("XL" == cg))
19131922 then 6
19141923 else throw("Only S, M, L, XL can merge")
19151924 }
1916- if ((hr != jZ))
1925+ if ((ht != kb))
19171926 then throw("All lands should be maxed to merge")
19181927 else {
1919- let dI = iW[cM]
1920- let fV = gb(iW[cO])
1921- let gf = (lastBlock.timestamp - iU)
1922- if ((0 > gf))
1923- then throw(((("Saved timestamp is in future, saved = " + toString(iU)) + ", current = ") + toString(lastBlock.timestamp)))
1928+ let dK = iY[cN]
1929+ let fX = gd(iY[cP])
1930+ let gh = (lastBlock.timestamp - iW)
1931+ if ((0 > gh))
1932+ then throw(((("Saved timestamp is in future, saved = " + toString(iW)) + ", current = ") + toString(lastBlock.timestamp)))
19241933 else {
1925- let iY = iG(O, iH)
1926- let hq = (iH / cm)
1927- let jg = gd(split(eg._4, "_"), fV, gf, hq, iY)
1928- let eq = fT(eg._6, fV, hq, -1)
1929- let ka = fT(eg._10, fV, hq, -1)
1930- let gJ = fT(eg._9, fV, hq, 1)
1931- let kb = eg._7
1932- let cG = indexOf(kb, O)
1933- if (!(isDefined(cG)))
1934+ let ja = iI(O, iJ)
1935+ let hs = (iJ / cn)
1936+ let ji = gf(split(ei._4, "_"), fX, gh, hs, ja)
1937+ let es = fV(ei._6, fX, hs, -1)
1938+ let kc = fV(ei._10, fX, hs, -1)
1939+ let gL = fV(ei._9, fX, hs, 1)
1940+ let kd = ei._7
1941+ let cH = indexOf(kd, O)
1942+ if (!(isDefined(cH)))
19341943 then throw(("Your staked lands don't contain " + O))
19351944 else {
1936- let kc = bl(O)
1937- let kd = valueOrElse(getString(kc), "")
1938- $Tuple10(jX, jY, cW, jg, ((((((((((((eg._5 :+ DeleteEntry(bm(O))) :+ DeleteEntry(bp(aA, O, b))) :+ DeleteEntry(dH(dI))) :+ DeleteEntry(bj(O))) :+ DeleteEntry(bt(O))) :+ DeleteEntry(dJ(O, b))) :+ DeleteEntry(bn(aC, O))) :+ DeleteEntry(dK(dI))) :+ DeleteEntry(bs(O))) :+ DeleteEntry(kc)) :+ Burn(fromBase58String(O), 1)) ++ (if ((kd != ""))
1939- then [DeleteEntry(dF(kd))]
1940- else nil)), eq, removeByIndex(kb, value(cG)), (eg._8 + iH), gJ, ka)
1945+ let ke = bl(O)
1946+ let kf = valueOrElse(getString(ke), "")
1947+ $Tuple10(jZ, ka, cX, ji, ((((((((((((ei._5 :+ DeleteEntry(bm(O))) :+ DeleteEntry(bp(aA, O, b))) :+ DeleteEntry(dJ(dK))) :+ DeleteEntry(bj(O))) :+ DeleteEntry(bt(O))) :+ DeleteEntry(dL(O, b))) :+ DeleteEntry(bn(aC, O))) :+ DeleteEntry(dM(dK))) :+ DeleteEntry(bs(O))) :+ DeleteEntry(ke)) :+ Burn(fromBase58String(O), 1)) ++ (if ((kf != ""))
1948+ then [DeleteEntry(dH(kf))]
1949+ else nil)), es, removeByIndex(kd, value(cH)), (ei._8 + iJ), gL, kc)
19411950 }
19421951 }
19431952 }
19441953 }
19451954 }
19461955 }
19471956
1948- let hc = bD(z)
1949- let hF = hb(hc)
1950- let fU = split(valueOrElse(getString(cU()), "0_0_0_0_0_0"), "_")
1951- let ke = cX(b)
1952- let kf = getString(ke)
1953- let kg = if (isDefined(kf))
1954- then split_51C(value(kf), "_")
1957+ let he = bD(z)
1958+ let hH = hd(he)
1959+ let fW = split(valueOrElse(getString(cV()), "0_0_0_0_0_0"), "_")
1960+ let kg = cY(b)
1961+ let kh = getString(kg)
1962+ let ki = if (isDefined(kh))
1963+ then split_51C(value(kh), "_")
19551964 else nil
1956- let kh = split(value(assetInfo(fromBase58String(jT[0]))).description, "_")[cP]
1957- let ki = split(valueOrElse(getString(cV(kh)), "0_0_0_0_0_0"), "_")
1958- let er = {
1959- let ei = jT
1960- let ej = size(ei)
1961- let ek = $Tuple10(jS, 0, "", hF[bf], nil, fU, kg, 0, split("0_0_0_0_0_0", "_"), ki)
1962- func el (em,en) = if ((en >= ej))
1963- then em
1964- else jV(em, ei[en])
1965-
1966- func eo (em,en) = if ((en >= ej))
1967- then em
1965+ let kj = split(value(assetInfo(fromBase58String(jV[0]))).description, "_")[cQ]
1966+ let kk = split(valueOrElse(getString(cW(kj)), "0_0_0_0_0_0"), "_")
1967+ let et = {
1968+ let ek = jV
1969+ let el = size(ek)
1970+ let em = $Tuple10(jU, 0, "", hH[bf], nil, fW, ki, 0, split("0_0_0_0_0_0", "_"), kk)
1971+ func en (eo,ep) = if ((ep >= el))
1972+ then eo
1973+ else jX(eo, ek[ep])
1974+
1975+ func eq (eo,ep) = if ((ep >= el))
1976+ then eo
19681977 else throw("List size exceeds 5")
19691978
1970- eo(el(el(el(el(el(ek, 0), 1), 2), 3), 4), 5)
1979+ eq(en(en(en(en(en(em, 0), 1), 2), 3), 4), 5)
19711980 }
1972- let cW = er._3
1973- let gD = valueOrErrorMessage(indexOf(aM, cW), ("Unknown continent: " + cW))
1974- let gc = gI(er._9, (de(jR) / cm))
1975- let id = valueOrElse(getInteger(dE()), (dD + 1))
1976- let kj = toString(id)
1977- let ie = Issue(dV(kj, jR), makeString([kj, jR, gc, cW], "_"), 1, 0, false)
1978- let bk = calculateAssetId(ie)
1979- let kk = toBase58String(bk)
1980- let iA = makeString(es((jU > 0), split(hF[bg], "_"), jU), "_")
1981- let kl = cY(b)
1982- let km = valueOrElse(getInteger(kl), 0)
1983- $Tuple2((((((((((((((((er._5 :+ (if ((size(er._7) > 0))
1984- then StringEntry(ke, makeString_11C(er._7, "_"))
1985- else DeleteEntry(ke))) :+ IntegerEntry(kl, if ((er._8 > km))
1981+ let cX = et._3
1982+ let gF = valueOrErrorMessage(indexOf(aM, cX), ("Unknown continent: " + cX))
1983+ let ge = gK(et._9, (dg(jT) / cn))
1984+ let if = valueOrElse(getInteger(dG()), (dF + 1))
1985+ let kl = toString(if)
1986+ let ig = Issue(dX(kl, jT), makeString([kl, jT, ge, cX], "_"), 1, 0, false)
1987+ let bk = calculateAssetId(ig)
1988+ let km = toBase58String(bk)
1989+ let iC = makeString(eu((jW > 0), split(hH[bg], "_"), jW), "_")
1990+ let kn = cZ(b)
1991+ let ko = valueOrElse(getInteger(kn), 0)
1992+ $Tuple2((((((((((((((((et._5 :+ (if ((size(et._7) > 0))
1993+ then StringEntry(kg, makeString_11C(et._7, "_"))
1994+ else DeleteEntry(kg))) :+ IntegerEntry(kn, if ((et._8 > ko))
19861995 then 0
1987- else (km - er._8))) :+ IntegerEntry(dE(), (id + 1))) :+ ie) :+ StringEntry(dH(kj), kk)) :+ StringEntry(bj(kk), b)) :+ StringEntry(dK(kj), b)) :+ IntegerEntry(bn(aC, kk), er._2)) :+ IntegerEntry(bt(kk), aj)) :+ IntegerEntry(dJ(kk, b), aj)) :+ StringEntry(hc, makeString([hF[be], er._4, iA, hF[bh]], ":"))) :+ StringEntry(cU(), makeString(er._6, "_"))) :+ StringEntry(cV(cW), makeString(er._10, "_"))) :+ StringEntry(bE(z), makeString([cW, "L", kk], "_"))) :+ ScriptTransfer(addressFromStringValue(b), 1, bk)), kk)
1988- }
1989- }
1990-
1991-
1992-func kn (b,jT) = jQ("M", 3, "SSSS", b, jT, 0)
1993-
1994-
1995-func ko (b,jT) = jQ("L", 4, "SMM", b, jT, (ch * 4))
1996-
1997-
1998-func kp (b,jT) = jQ("XL", 5, "SSSML", b, jT, (ch * 47))
1999-
2000-
2001-func kq (b,jT) = jQ("XXL", 6, "LXL", b, jT, (ch * 54))
2002-
2003-
2004-func kr (b,jT) = {
2005- let cf = size(jT)
2006- if ((4 == cf))
2007- then kn(b, jT)
2008- else if ((3 == cf))
2009- then ko(b, jT)
2010- else if ((5 == cf))
2011- then kp(b, jT)
2012- else if ((2 == cf))
2013- then kq(b, jT)
1996+ else (ko - et._8))) :+ IntegerEntry(dG(), (if + 1))) :+ ig) :+ StringEntry(dJ(kl), km)) :+ StringEntry(bj(km), b)) :+ StringEntry(dM(kl), b)) :+ IntegerEntry(bn(aC, km), et._2)) :+ IntegerEntry(bt(km), aj)) :+ IntegerEntry(dL(km, b), aj)) :+ StringEntry(he, makeString([hH[be], et._4, iC, hH[bh]], ":"))) :+ StringEntry(cV(), makeString(et._6, "_"))) :+ StringEntry(cW(cX), makeString(et._10, "_"))) :+ StringEntry(bE(z), makeString([cX, "L", km], "_"))) :+ ScriptTransfer(addressFromStringValue(b), 1, bk)), km)
1997+ }
1998+ }
1999+
2000+
2001+func kp (b,jV) = jS("M", 3, "SSSS", b, jV, 0)
2002+
2003+
2004+func kq (b,jV) = jS("L", 4, "SMM", b, jV, (ci * 4))
2005+
2006+
2007+func kr (b,jV) = jS("XL", 5, "SSSML", b, jV, (ci * 47))
2008+
2009+
2010+func ks (b,jV) = jS("XXL", 6, "LXL", b, jV, (ci * 54))
2011+
2012+
2013+func kt (b,jV) = {
2014+ let cg = size(jV)
2015+ if ((4 == cg))
2016+ then kp(b, jV)
2017+ else if ((3 == cg))
2018+ then kq(b, jV)
2019+ else if ((5 == cg))
2020+ then kr(b, jV)
2021+ else if ((2 == cg))
2022+ then ks(b, jV)
20142023 else throw("Unknown merge")
20152024 }
20162025
20172026
2018-func ks (fZ) = if (if ((fZ.originCaller != cH))
2027+func ku (gb) = if (if ((gb.originCaller != cI))
20192028 then valueOrElse(getBoolean(bF()), false)
20202029 else false)
20212030 then throw("Contracts are under maintenance")
2022- else StringEntry(bi(toString(fZ.originCaller)), toBase58String(fZ.transactionId))
2023-
2024-
2025-@Callable(fZ)
2026-func constructorV1 (kt) = if ((fZ.caller != this))
2031+ else StringEntry(bi(toString(gb.originCaller)), toBase58String(gb.transactionId))
2032+
2033+
2034+@Callable(gb)
2035+func constructorV1 (kv) = if ((gb.caller != this))
20272036 then throw("Permission denied")
2028- else [StringEntry(cB(), kt)]
2029-
2030-
2031-
2032-@Callable(fZ)
2033-func setBlocked (ku) = if ((fZ.caller != this))
2037+ else [StringEntry(cC(), kv)]
2038+
2039+
2040+
2041+@Callable(gb)
2042+func setBlocked (kw) = if ((gb.caller != this))
20342043 then throw("permission denied")
2035- else [BooleanEntry(bF(), ku)]
2036-
2037-
2038-
2039-@Callable(fZ)
2044+ else [BooleanEntry(bF(), kw)]
2045+
2046+
2047+
2048+@Callable(gb)
20402049 func stakeLand () = {
2041- let kv = ks(fZ)
2042- if ((size(fZ.payments) != 1))
2050+ let kx = ku(gb)
2051+ if ((size(gb.payments) != 1))
20432052 then throw("Exactly one payment required")
20442053 else {
2045- let kw = value(fZ.payments[0])
2046- let bk = value(kw.assetId)
2047- let ct = toString(fZ.caller)
2048- if ((kw.amount != 1))
2054+ let ky = value(gb.payments[0])
2055+ let bk = value(ky.assetId)
2056+ let cu = toString(gb.caller)
2057+ if ((ky.amount != 1))
20492058 then throw((("NFT " + aA) + " token should be attached as payment"))
20502059 else {
2051- let iS = value(assetInfo(bk))
2052- if ((iS.issuer != this))
2060+ let iU = value(assetInfo(bk))
2061+ if ((iU.issuer != this))
20532062 then throw("Unknown issuer of token")
2054- else if (!(contains(iS.name, aA)))
2063+ else if (!(contains(iU.name, aA)))
20552064 then throw((("Only NFT " + aA) + " tokens are accepted"))
20562065 else {
2057- let kx = drop(iS.name, 4)
2058- let dI = if (contains(kx, "XXL"))
2059- then dropRight(kx, 3)
2060- else if (contains(kx, "XL"))
2061- then dropRight(kx, 2)
2062- else dropRight(kx, 1)
2063- if (!(isDefined(parseInt(dI))))
2064- then throw(("Cannot parse land number from " + iS.name))
2066+ let kz = drop(iU.name, 4)
2067+ let dK = if (contains(kz, "XXL"))
2068+ then dropRight(kz, 3)
2069+ else if (contains(kz, "XL"))
2070+ then dropRight(kz, 2)
2071+ else dropRight(kz, 1)
2072+ if (!(isDefined(parseInt(dK))))
2073+ then throw(("Cannot parse land number from " + iU.name))
20652074 else {
20662075 let O = toBase58String(bk)
2067- let iT = bm(O)
2068- if (isDefined(getInteger(iT)))
2069- then throw((("NFT " + iS.name) + " is already staked"))
2076+ let iV = bm(O)
2077+ if (isDefined(getInteger(iV)))
2078+ then throw((("NFT " + iU.name) + " is already staked"))
20702079 else {
2071- let iW = split(iS.description, "_")
2072- let fV = gb(iW[cO])
2073- let iH = de(iW[cN])
2074- let hq = (iH / cm)
2075- let eq = ga(fV, hq, 1)
2076- let ky = cV(iW[cP])
2077- let ki = split(valueOrElse(getString(ky), "0_0_0_0_0_0"), "_")
2078- let kz = makeString(fT(ki, fV, hq, 1), "_")
2079- let ke = cX(ct)
2080- let kf = getString(ke)
2081- let kb = if (isDefined(kf))
2082- then split_51C(value(kf), "_")
2080+ let iY = split(iU.description, "_")
2081+ let fX = gd(iY[cP])
2082+ let iJ = dg(iY[cO])
2083+ let hs = (iJ / cn)
2084+ let es = gc(fX, hs, 1)
2085+ let kA = cW(iY[cQ])
2086+ let kk = split(valueOrElse(getString(kA), "0_0_0_0_0_0"), "_")
2087+ let kB = makeString(fV(kk, fX, hs, 1), "_")
2088+ let kg = cY(cu)
2089+ let kh = getString(kg)
2090+ let kd = if (isDefined(kh))
2091+ then split_51C(value(kh), "_")
20832092 else nil
2084- if (containsElement(kb, O))
2093+ if (containsElement(kd, O))
20852094 then throw(("Your staked lands already contain " + O))
2086- else if ((size(kb) >= aE))
2095+ else if ((size(kd) >= aE))
20872096 then throw((("Your already staked max (" + toString(aE)) + ") lands"))
20882097 else {
2089- let hr = valueOrElse(getInteger(bt(O)), 0)
2090- let kl = cY(ct)
2091- let kA = valueOrElse(getInteger(kl), 0)
2092- let kB = invoke(cK, "onStakeUnstakeLand", [ct], nil)
2093- $Tuple2([IntegerEntry(iT, lastBlock.timestamp), IntegerEntry(bp(aA, O, ct), lastBlock.timestamp), StringEntry(ke, makeString_11C((kb :+ O), "_")), IntegerEntry(kl, (kA + iH)), StringEntry(bj(O), ct), StringEntry(dK(dI), ct), IntegerEntry(dJ(O, ct), hr), StringEntry(cU(), eq), StringEntry(ky, kz), kv], kB)
2098+ let ht = valueOrElse(getInteger(bt(O)), 0)
2099+ let kn = cZ(cu)
2100+ let kC = valueOrElse(getInteger(kn), 0)
2101+ let kD = invoke(cL, "onStakeUnstakeLand", [cu], nil)
2102+ $Tuple2([IntegerEntry(iV, lastBlock.timestamp), IntegerEntry(bp(aA, O, cu), lastBlock.timestamp), StringEntry(kg, makeString_11C((kd :+ O), "_")), IntegerEntry(kn, (kC + iJ)), StringEntry(bj(O), cu), StringEntry(dM(dK), cu), IntegerEntry(dL(O, cu), ht), StringEntry(cV(), es), StringEntry(kA, kB), kx], kD)
20942103 }
20952104 }
20962105 }
20972106 }
20982107 }
20992108 }
21002109 }
21012110
21022111
21032112
2104-@Callable(fZ)
2105-func unstakeLand (iN) = {
2106- let kv = ks(fZ)
2107- if ((size(fZ.payments) != 0))
2113+@Callable(gb)
2114+func unstakeLand (iP) = {
2115+ let kx = ku(gb)
2116+ if ((size(gb.payments) != 0))
21082117 then throw("No payments required")
21092118 else {
2110- let b = toString(fZ.caller)
2111- let fp = iL(b, dP, iN)
2112- let O = fp._2
2113- let iW = fp._3
2114- let ke = cX(b)
2115- let fV = gb(iW[cO])
2116- let iH = de(iW[cN])
2117- let hq = (iH / cm)
2118- let eq = ga(fV, hq, -1)
2119- let ky = cV(iW[cP])
2120- let ki = split(valueOrElse(getString(ky), "0_0_0_0_0_0"), "_")
2121- let kz = makeString(fT(ki, fV, hq, -1), "_")
2122- let jr = jj(b, O, iH, dP)
2123- let kb = split_51C(valueOrElse(getString(ke), ""), "_")
2124- let cG = indexOf(kb, O)
2125- if (!(isDefined(cG)))
2119+ let b = toString(gb.caller)
2120+ let fr = iN(b, dR, iP)
2121+ let O = fr._2
2122+ let iY = fr._3
2123+ let kg = cY(b)
2124+ let fX = gd(iY[cP])
2125+ let iJ = dg(iY[cO])
2126+ let hs = (iJ / cn)
2127+ let es = gc(fX, hs, -1)
2128+ let kA = cW(iY[cQ])
2129+ let kk = split(valueOrElse(getString(kA), "0_0_0_0_0_0"), "_")
2130+ let kB = makeString(fV(kk, fX, hs, -1), "_")
2131+ let jt = jl(b, O, iJ, dR)
2132+ let kd = split_51C(valueOrElse(getString(kg), ""), "_")
2133+ let cH = indexOf(kd, O)
2134+ if (!(isDefined(cH)))
21262135 then throw(("Your staked lands don't contain " + O))
21272136 else {
21282137 let av = lastBlock.timestamp
2129- let kC = valueOrElse(getInteger(cJ, bG(b)), 0)
2130- if ((kC >= av))
2131- then throw(("Your gWL are taking part in voting, cannot unstake until " + toString(kC)))
2138+ let kE = valueOrElse(getInteger(cK, bG(b)), 0)
2139+ if ((kE >= av))
2140+ then throw(("Your gWL are taking part in voting, cannot unstake until " + toString(kE)))
21322141 else {
2133- let kD = (valueOrElse(getInteger(cK, a(b)), 0) + ci)
2134- if ((kD > av))
2135- then throw(("Your staked lands took part in arbitrage, cannot unstake until " + toString(kD)))
2142+ let kF = (valueOrElse(getInteger(cL, a(b)), 0) + cj)
2143+ if ((kF > av))
2144+ then throw(("Your staked lands took part in arbitrage, cannot unstake until " + toString(kF)))
21362145 else {
2137- let kl = cY(b)
2138- let km = valueOrElse(getInteger(kl), 0)
2139- let kE = if ((iH > km))
2146+ let kn = cZ(b)
2147+ let ko = valueOrElse(getInteger(kn), 0)
2148+ let kG = if ((iJ > ko))
21402149 then 0
2141- else (km - iH)
2142- let kB = invoke(cK, "onStakeUnstakeLand", [b], nil)
2143- $Tuple2([ScriptTransfer(fZ.caller, 1, fromBase58String(O)), DeleteEntry(bm(O)), DeleteEntry(bp(aA, O, b)), StringEntry(cU(), eq), StringEntry(ky, kz), StringEntry(jr._2, makeString(jr._3, ":")), if ((size(kb) > 1))
2144- then StringEntry(ke, makeString_11C(removeByIndex(kb, value(cG)), "_"))
2145- else DeleteEntry(ke), IntegerEntry(kl, kE), kv], kB)
2150+ else (ko - iJ)
2151+ let kD = invoke(cL, "onStakeUnstakeLand", [b], nil)
2152+ $Tuple2([ScriptTransfer(gb.caller, 1, fromBase58String(O)), DeleteEntry(bm(O)), DeleteEntry(bp(aA, O, b)), StringEntry(cV(), es), StringEntry(kA, kB), StringEntry(jt._2, makeString(jt._3, ":")), if ((size(kd) > 1))
2153+ then StringEntry(kg, makeString_11C(removeByIndex(kd, value(cH)), "_"))
2154+ else DeleteEntry(kg), IntegerEntry(kn, kG), kx], kD)
21462155 }
21472156 }
21482157 }
21492158 }
21502159 }
21512160
21522161
21532162
2154-@Callable(fZ)
2163+@Callable(gb)
21552164 func stakeDuck () = {
2156- let kv = ks(fZ)
2157- if ((size(fZ.payments) != 1))
2165+ let kx = ku(gb)
2166+ if ((size(gb.payments) != 1))
21582167 then throw("Exactly one payment required")
21592168 else {
2160- let kw = value(fZ.payments[0])
2161- let bk = value(kw.assetId)
2162- let ct = toString(fZ.caller)
2163- if ((kw.amount != 1))
2169+ let ky = value(gb.payments[0])
2170+ let bk = value(ky.assetId)
2171+ let cu = toString(gb.caller)
2172+ if ((ky.amount != 1))
21642173 then throw((("NFT " + aB) + " token should be attached as payment"))
21652174 else {
2166- let iS = value(assetInfo(bk))
2167- if (if ((iS.issuer != dn))
2168- then (iS.issuer != do)
2175+ let iU = value(assetInfo(bk))
2176+ if (if ((iU.issuer != dp))
2177+ then (iU.issuer != dq)
21692178 else false)
21702179 then throw((("Unknown issuer of " + aB) + " token"))
2171- else if (!(contains(iS.name, aB)))
2180+ else if (!(contains(iU.name, aB)))
21722181 then throw((("Only NFT " + aB) + " tokens are accepted"))
21732182 else {
2174- let kF = toBase58String(bk)
2175- let iT = bm(kF)
2176- if (isDefined(getInteger(iT)))
2177- then throw((("NFT " + iS.name) + " is already staked"))
2178- else if (isDefined(getString(bC(ct))))
2179- then throw(("You already staked one duck: " + iS.name))
2180- else if (jN(kF))
2183+ let kH = toBase58String(bk)
2184+ let iV = bm(kH)
2185+ if (isDefined(getInteger(iV)))
2186+ then throw((("NFT " + iU.name) + " is already staked"))
2187+ else if (isDefined(getString(bC(cu))))
2188+ then throw(("You already staked one duck: " + iU.name))
2189+ else if (jP(kH))
21812190 then throw("stakeDuck_checkTournament")
21822191 else {
2183- let kG = bE(kF)
2184- let kH = getString(kG)
2185- let hc = bD(kF)
2186- let kI = getString(hc)
2187- let is = y(kF)
2188- let it = ae(valueOrElse(getInteger(C(kF)), 0))
2189- let kJ = valueOrElse(getInteger(is), it)
2190- ([IntegerEntry(iT, lastBlock.timestamp), IntegerEntry(bp(aB, toBase58String(bk), ct), lastBlock.timestamp), StringEntry(bB(kF), ct), StringEntry(bC(ct), kF)] ++ (if (isDefined(kH))
2192+ let kI = bE(kH)
2193+ let kJ = getString(kI)
2194+ let he = bD(kH)
2195+ let kK = getString(he)
2196+ let iu = y(kH)
2197+ let iv = ae(valueOrElse(getInteger(C(kH)), 0))
2198+ let kL = valueOrElse(getInteger(iu), iv)
2199+ ([IntegerEntry(iV, lastBlock.timestamp), IntegerEntry(bp(aB, toBase58String(bk), cu), lastBlock.timestamp), StringEntry(bB(kH), cu), StringEntry(bC(cu), kH)] ++ (if (isDefined(kJ))
21912200 then nil
2192- else ([StringEntry(kG, aI)] ++ (if (isDefined(kI))
2201+ else ([StringEntry(kI, aI)] ++ (if (isDefined(kK))
21932202 then nil
2194- else (([StringEntry(hc, "0:0_0_0_0_0_0:0_0_0_0_0_0:")] :+ IntegerEntry(is, kJ)) :+ kv)))))
2203+ else (([StringEntry(he, "0:0_0_0_0_0_0:0_0_0_0_0_0:")] :+ IntegerEntry(iu, kL)) :+ kx)))))
21952204 }
21962205 }
21972206 }
21982207 }
21992208 }
22002209
22012210
22022211
2203-@Callable(fZ)
2204-func unstakeDuck (kF) = {
2205- let kv = ks(fZ)
2206- if ((size(fZ.payments) != 0))
2212+@Callable(gb)
2213+func unstakeDuck (kH) = {
2214+ let kx = ku(gb)
2215+ if ((size(gb.payments) != 0))
22072216 then throw("No payments required")
22082217 else {
2209- let bk = fromBase58String(kF)
2210- let ct = toString(fZ.caller)
2211- let iS = value(assetInfo(bk))
2212- let iT = bm(kF)
2213- if (!(isDefined(getInteger(iT))))
2214- then throw((("NFT " + iS.name) + " is not staked"))
2215- else if (!(isDefined(getString(bC(ct)))))
2216- then throw((("The duck " + iS.name) + " is not staked"))
2218+ let bk = fromBase58String(kH)
2219+ let cu = toString(gb.caller)
2220+ let iU = value(assetInfo(bk))
2221+ let iV = bm(kH)
2222+ if (!(isDefined(getInteger(iV))))
2223+ then throw((("NFT " + iU.name) + " is not staked"))
2224+ else if (!(isDefined(getString(bC(cu)))))
2225+ then throw((("The duck " + iU.name) + " is not staked"))
22172226 else {
2218- let iV = valueOrErrorMessage(getString(bB(kF)), (("NFT " + iS.name) + " is orphaned"))
2219- if ((iV != ct))
2227+ let iX = valueOrErrorMessage(getString(bB(kH)), (("NFT " + iU.name) + " is orphaned"))
2228+ if ((iX != cu))
22202229 then throw("Staked NFT is not yours")
2221- else if (jN(kF))
2230+ else if (jP(kH))
22222231 then throw("unstakeDuck_checkTournament")
22232232 else {
2224- let is = y(kF)
2225- let it = ae(valueOrElse(getInteger(C(kF)), 0))
2226- let aq = valueOrElse(getInteger(is), it)
2227- if ((it > aq))
2228- then throw((("Please heal your duck to " + toString(it)) + "hp before unstaking"))
2229- else [ScriptTransfer(fZ.caller, 1, bk), DeleteEntry(iT), DeleteEntry(is), DeleteEntry(bE(kF)), DeleteEntry(bB(kF)), DeleteEntry(bp(aB, kF, ct)), DeleteEntry(bC(ct)), kv]
2233+ let iu = y(kH)
2234+ let iv = ae(valueOrElse(getInteger(C(kH)), 0))
2235+ let aq = valueOrElse(getInteger(iu), iv)
2236+ if ((iv > aq))
2237+ then throw((("Please heal your duck to " + toString(iv)) + "hp before unstaking"))
2238+ else [ScriptTransfer(gb.caller, 1, bk), DeleteEntry(iV), DeleteEntry(iu), DeleteEntry(bE(kH)), DeleteEntry(bB(kH)), DeleteEntry(bp(aB, kH, cu)), DeleteEntry(bC(cu)), kx]
22302239 }
22312240 }
22322241 }
22332242 }
22342243
22352244
22362245
2237-@Callable(fZ)
2238-func claimRes (dX,kK) = {
2239- let kv = ks(fZ)
2240- if ((size(fZ.payments) != 0))
2246+@Callable(gb)
2247+func claimRes (dZ,kM) = {
2248+ let kx = ku(gb)
2249+ if ((size(gb.payments) != 0))
22412250 then throw("No payments required")
22422251 else {
2243- let b = toString(fZ.originCaller)
2244- let ey = iX(b, dX, dP, kK)
2252+ let b = toString(gb.originCaller)
2253+ let eA = iZ(b, dZ, dR, kM)
22452254 let z = valueOrErrorMessage(getString(bC(b)), "You don't have a duck staked")
2246- $Tuple2(((((ey._1 ++ jx(z, fraction(S, dX, cl))._1) :+ StringEntry(ey._2, makeString(ey._3, ":"))) :+ StringEntry(ey._4, makeString(ey._5, ":"))) :+ kv), ey._3[bf])
2247- }
2248- }
2249-
2250-
2251-
2252-@Callable(fZ)
2253-func claimResToWH (dX,kK) = {
2254- let kv = ks(fZ)
2255- if ((size(fZ.payments) != 0))
2255+ $Tuple2(((((eA._1 ++ jz(z, fraction(S, dZ, cm))._1) :+ StringEntry(eA._2, makeString(eA._3, ":"))) :+ StringEntry(eA._4, makeString(eA._5, ":"))) :+ kx), eA._3[bf])
2256+ }
2257+ }
2258+
2259+
2260+
2261+@Callable(gb)
2262+func claimResToWH (dZ,kM) = {
2263+ let kx = ku(gb)
2264+ if ((size(gb.payments) != 0))
22562265 then throw("No payments required")
22572266 else {
2258- let b = toString(fZ.originCaller)
2259- let ey = iX(b, dX, dO, kK)
2260- $Tuple2(((((ey._1 ++ jD(b, fraction(S, dX, cl))._1) :+ StringEntry(ey._2, makeString(ey._3, ":"))) :+ StringEntry(ey._4, makeString(ey._5, ":"))) :+ kv), ey._5[aW])
2261- }
2262- }
2263-
2264-
2265-
2266-@Callable(fZ)
2267-func flight (ih,ii) = {
2268- let kv = ks(fZ)
2269- if ((size(fZ.payments) != 0))
2267+ let b = toString(gb.originCaller)
2268+ let eA = iZ(b, dZ, dQ, kM)
2269+ $Tuple2(((((eA._1 ++ jF(b, fraction(S, dZ, cm))._1) :+ StringEntry(eA._2, makeString(eA._3, ":"))) :+ StringEntry(eA._4, makeString(eA._5, ":"))) :+ kx), eA._5[aW])
2270+ }
2271+ }
2272+
2273+
2274+
2275+@Callable(gb)
2276+func flight (ij,ik) = {
2277+ let kx = ku(gb)
2278+ if ((size(gb.payments) != 0))
22702279 then throw("No payments required")
22712280 else {
2272- let bH = toString(fZ.caller)
2273- let gE = ig(bH, ih, ii)
2274- let z = gE._2
2275- let io = gE._4
2276- let kL = split(io, "_")
2277- let kM = (kL[bX] == "T")
2278- if (if (!(kM))
2279- then jN(z)
2281+ let bH = toString(gb.caller)
2282+ let gG = ii(bH, ij, ik)
2283+ let z = gG._2
2284+ let iq = gG._4
2285+ let kN = split(iq, "_")
2286+ let kO = (kN[bX] == "T")
2287+ if (if (!(kO))
2288+ then jP(z)
22802289 else false)
22812290 then throw("flight_checkTournament")
22822291 else {
2283- let kN = if (kM)
2292+ let kI = bE(z)
2293+ let iR = valueOrElse(getString(kI), aI)
2294+ let kP = if (kO)
22842295 then {
2285- let jO = valueOrElse(getInteger(cL, bJ), 0)
2296+ let kQ = split(iR, "_")
2297+ let kR = (kQ[bX] == "T")
2298+ let jQ = valueOrElse(getInteger(cM, bJ), 0)
22862299 let av = lastBlock.timestamp
2287- let jP = bP(cL, jO)
2288- let bR = jP[bN]
2289- let bS = jP[bO]
2290- if (if (if ((parseIntValue(kL[bW]) != jO))
2300+ let jR = bP(cM, jQ)
2301+ let bR = jR[bN]
2302+ let bS = jR[bO]
2303+ if (if (if ((parseIntValue(kN[bW]) != jQ))
22912304 then true
22922305 else (bS[bU] != "INPROGRESS"))
22932306 then true
22942307 else (av > parseIntValue(bR[bT])))
22952308 then unit
22962309 else {
2297- let kO = parseIntValue(kL[bY])
2298- let kP = parseIntValue(bS[bV])
2299- if ((kP >= kO))
2300- then unit
2301- else invoke(cL, "updateDynamicData", [z, kO], nil)
2310+ let kS = parseIntValue(kN[bY])
2311+ let kT = parseIntValue(bS[bV])
2312+ if (if (if (!(kR))
2313+ then true
2314+ else (parseIntValue(kQ[bW]) != jQ))
2315+ then true
2316+ else (kS != (parseIntValue(kQ[bY]) + 1)))
2317+ then throw(((("Cheat attempt: oldLoc=" + iR) + ", newLoc=") + iq))
2318+ else {
2319+ let kU = valueOrElse(getInteger(cM, bZ(jQ, z)), 0)
2320+ let kV = if ((kS > kU))
2321+ then invoke(cM, "saveDuckResult", [z, kS], nil)
2322+ else unit
2323+ if ((kV == kV))
2324+ then if ((kT >= kS))
2325+ then unit
2326+ else invoke(cM, "updateDynamicData", [z, kS], nil)
2327+ else throw("Strict value is not equal to itself.")
2328+ }
23022329 }
23032330 }
23042331 else unit
2305- if ((kN == kN))
2306- then {
2307- let kG = bE(z)
2308- let iP = valueOrElse(getString(kG), aI)
2309- if ((io == iP))
2310- then throw("You can't fly to the same location")
2311- else {
2312- let fM = E(z)
2313- let iB = valueOrElse(getString(fM), ",;,_,;,_,;,_,;,_,;,_,;,")
2314- let kQ = ez(iB, gE._5)
2315- let iD = kQ._1
2316- let iE = kQ._2
2317- $Tuple2(([StringEntry(kG, if ((gE._1 > 0))
2318- then io
2319- else iP), StringEntry(fM, iD), IntegerEntry(y(z), gE._1), kv] ++ (if (iE)
2320- then [StringEntry(K(z), "0_0_0_0_0")]
2321- else (nil ++ jx(z, if ((gE._1 > 0))
2322- then T
2323- else U)._1))), gE._3)
2324- }
2325- }
2332+ if ((kP == kP))
2333+ then if ((iq == iR))
2334+ then throw("You can't fly to the same location")
2335+ else {
2336+ let fO = E(z)
2337+ let iD = valueOrElse(getString(fO), ",;,_,;,_,;,_,;,_,;,_,;,")
2338+ let kW = eB(iD, gG._5)
2339+ let iF = kW._1
2340+ let iG = kW._2
2341+ $Tuple2(([StringEntry(kI, if ((gG._1 > 0))
2342+ then iq
2343+ else iR), StringEntry(fO, iF), IntegerEntry(y(z), gG._1), kx] ++ (if (iG)
2344+ then [StringEntry(K(z), "0_0_0_0_0")]
2345+ else (nil ++ jz(z, if ((gG._1 > 0))
2346+ then T
2347+ else U)._1))), gG._3)
2348+ }
23262349 else throw("Strict value is not equal to itself.")
23272350 }
23282351 }
23292352 }
23302353
23312354
23322355
2333-@Callable(fZ)
2334-func heal (kR,kS,kT) = {
2335- let kv = ks(fZ)
2336- if (if (if ((0 > kR))
2356+@Callable(gb)
2357+func heal (kX,kY,kZ) = {
2358+ let kx = ku(gb)
2359+ if (if (if ((0 > kX))
23372360 then true
2338- else (0 > kS))
2361+ else (0 > kY))
23392362 then true
2340- else (0 > kT))
2363+ else (0 > kZ))
23412364 then throw("Quantity cannot be negative")
23422365 else {
2343- let z = valueOrErrorMessage(getString(bC(toString(fZ.caller))), "You don't have a duck staked")
2344- if (jN(z))
2366+ let z = valueOrErrorMessage(getString(bC(toString(gb.caller))), "You don't have a duck staked")
2367+ if (jP(z))
23452368 then throw("heal_checkTournament")
23462369 else {
2347- let kU = [kR, kS, kT]
2348- let is = y(z)
2349- let it = ae(valueOrElse(getInteger(C(z)), 0))
2350- let kV = valueOrElse(getInteger(is), it)
2351- if ((kV >= it))
2352- then throw((("HP should be < " + toString(it)) + " to heal"))
2370+ let la = [kX, kY, kZ]
2371+ let iu = y(z)
2372+ let iv = ae(valueOrElse(getInteger(C(z)), 0))
2373+ let lb = valueOrElse(getInteger(iu), iv)
2374+ if ((lb >= iv))
2375+ then throw((("HP should be < " + toString(iv)) + " to heal"))
23532376 else {
2354- let hc = bD(z)
2355- let hF = hb(hc)
2356- let kW = if ((hF[bh] == ""))
2377+ let he = bD(z)
2378+ let hH = hd(he)
2379+ let lc = if ((hH[bh] == ""))
23572380 then nil
2358- else split_4C(hF[bh], "_")
2359- func kX (eg,ca) = {
2360- let dd = eg._2
2361- let gv = if ((size(kW) > dd))
2362- then parseIntValue(kW[dd])
2381+ else split_4C(hH[bh], "_")
2382+ func ld (ei,cb) = {
2383+ let de = ei._2
2384+ let gx = if ((size(lc) > de))
2385+ then parseIntValue(lc[de])
23632386 else 0
2364- if ((3 > dd))
2387+ if ((3 > de))
23652388 then {
2366- let kY = kU[dd]
2367- if ((kY > gv))
2368- then throw(((("You have only " + toString(gv)) + " of ") + aL[dd]))
2369- else $Tuple3((eg._1 :+ toString((gv - kY))), (dd + 1), (eg._3 + (parseIntValue(split(ca, "_")[aR]) * kY)))
2389+ let le = la[de]
2390+ if ((le > gx))
2391+ then throw(((("You have only " + toString(gx)) + " of ") + aL[de]))
2392+ else $Tuple3((ei._1 :+ toString((gx - le))), (de + 1), (ei._3 + (parseIntValue(split(cb, "_")[aR]) * le)))
23702393 }
2371- else $Tuple3((eg._1 :+ toString(gv)), (dd + 1), eg._3)
2394+ else $Tuple3((ei._1 :+ toString(gx)), (de + 1), ei._3)
23722395 }
23732396
2374- let ey = {
2375- let ei = aP
2376- let ej = size(ei)
2377- let ek = $Tuple3(nil, 0, 0)
2378- func el (em,en) = if ((en >= ej))
2379- then em
2380- else kX(em, ei[en])
2381-
2382- func eo (em,en) = if ((en >= ej))
2383- then em
2397+ let eA = {
2398+ let ek = aP
2399+ let el = size(ek)
2400+ let em = $Tuple3(nil, 0, 0)
2401+ func en (eo,ep) = if ((ep >= el))
2402+ then eo
2403+ else ld(eo, ek[ep])
2404+
2405+ func eq (eo,ep) = if ((ep >= el))
2406+ then eo
23842407 else throw("List size exceeds 50")
23852408
2386- eo(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(ek, 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)
2409+ eq(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(em, 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)
23872410 }
2388- let kZ = min([it, (kV + ey._3)])
2389- $Tuple2(([IntegerEntry(is, kZ), StringEntry(hc, makeString_2C([hF[be], hF[bf], hF[bg], makeString(ey._1, "_")], ":")), kv] ++ jx(z, (ab * ((kR + kS) + kT)))._1), kZ)
2411+ let lf = min([iv, (lb + eA._3)])
2412+ $Tuple2(([IntegerEntry(iu, lf), StringEntry(he, makeString_2C([hH[be], hH[bf], hH[bg], makeString(eA._1, "_")], ":")), kx] ++ jz(z, (ab * ((kX + kY) + kZ)))._1), lf)
23902413 }
23912414 }
23922415 }
23932416 }
23942417
23952418
23962419
2397-@Callable(fZ)
2420+@Callable(gb)
23982421 func healES () = {
2399- let kv = ks(fZ)
2400- if ((size(fZ.payments) != 1))
2422+ let kx = ku(gb)
2423+ if ((size(gb.payments) != 1))
24012424 then throw("Exactly one payment required")
24022425 else {
2403- let kw = value(fZ.payments[0])
2404- if ((kw.assetId != ce))
2426+ let ky = value(gb.payments[0])
2427+ if ((ky.assetId != cf))
24052428 then throw("Allowed USDT payment only!")
24062429 else {
2407- let z = valueOrErrorMessage(getString(bC(toString(fZ.caller))), "You don't have a duck staked")
2408- if (jN(z))
2430+ let z = valueOrErrorMessage(getString(bC(toString(gb.caller))), "You don't have a duck staked")
2431+ if (jP(z))
24092432 then throw("healES_checkTournament")
24102433 else {
2411- let is = y(z)
2412- let it = ae(valueOrElse(getInteger(C(z)), 0))
2413- let kV = valueOrElse(getInteger(is), it)
2414- if ((kV > 0))
2434+ let iu = y(z)
2435+ let iv = ae(valueOrElse(getInteger(C(z)), 0))
2436+ let lb = valueOrElse(getInteger(iu), iv)
2437+ if ((lb > 0))
24152438 then throw("HP should be 0 to call Emergency Service")
24162439 else {
2417- let hc = bD(z)
2418- let hF = hb(hc)
2419- let kW = if ((hF[bh] == ""))
2440+ let he = bD(z)
2441+ let hH = hd(he)
2442+ let lc = if ((hH[bh] == ""))
24202443 then nil
2421- else split_4C(hF[bh], "_")
2422- let la = if ((size(kW) > 0))
2423- then parseIntValue(kW[0])
2444+ else split_4C(hH[bh], "_")
2445+ let lg = if ((size(lc) > 0))
2446+ then parseIntValue(lc[0])
24242447 else 0
2425- let lb = if ((size(kW) > 1))
2426- then parseIntValue(kW[1])
2448+ let lh = if ((size(lc) > 1))
2449+ then parseIntValue(lc[1])
24272450 else 0
2428- let lc = if ((size(kW) > 2))
2429- then parseIntValue(kW[2])
2451+ let li = if ((size(lc) > 2))
2452+ then parseIntValue(lc[2])
24302453 else 0
2431- if (if (if ((la > 0))
2454+ if (if (if ((lg > 0))
24322455 then true
2433- else (lb > 0))
2456+ else (lh > 0))
24342457 then true
2435- else (lc > 0))
2458+ else (li > 0))
24362459 then throw("You have to use own Medical Kit")
24372460 else {
2438- let ld = getString(cI, bI())
2439- let le = if (isDefined(ld))
2440- then split_4C(value(ld), "_")
2461+ let lj = getString(cJ, bI())
2462+ let lk = if (isDefined(lj))
2463+ then split_4C(value(lj), "_")
24412464 else nil
2442- let lf = if ((size(le) > 0))
2443- then parseIntValue(le[0])
2465+ let ll = if ((size(lk) > 0))
2466+ then parseIntValue(lk[0])
24442467 else 0
2445- if ((0 >= lf))
2468+ if ((0 >= ll))
24462469 then throw("There are no Medical Kits L1 at Emergency Service storage")
24472470 else {
2448- let kZ = (kV + parseIntValue(split(aP[0], "_")[aR]))
2449- let lg = makeString([toString((lf - 1)), removeByIndex(le, 0)], "_")
2450- let ca = split(aP[0], "_")
2451- let lh = bZ(ca)
2452- let li = fraction((lh * aK), aJ, (cl * aU))
2453- if ((kw.amount != li))
2454- then throw(("Payment attached should be " + toString(li)))
2471+ let lf = (lb + parseIntValue(split(aP[0], "_")[aR]))
2472+ let lm = makeString([toString((ll - 1)), removeByIndex(lk, 0)], "_")
2473+ let cb = split(aP[0], "_")
2474+ let ln = ca(cb)
2475+ let lo = fraction((ln * aK), aJ, (cm * aU))
2476+ if ((ky.amount != lo))
2477+ then throw(("Payment attached should be " + toString(lo)))
24552478 else {
2456- let ey = cZ(invoke(cI, "updateEsStorage", [lg], [AttachedPayment(ce, li)]))
2457- $Tuple2(([IntegerEntry(is, kZ), kv] ++ jx(z, V)._1), ey)
2479+ let eA = da(invoke(cJ, "updateEsStorage", [lm], [AttachedPayment(cf, lo)]))
2480+ $Tuple2(([IntegerEntry(iu, lf), kx] ++ jz(z, V)._1), eA)
24582481 }
24592482 }
24602483 }
24612484 }
24622485 }
24632486 }
24642487 }
24652488 }
24662489
24672490
24682491
2469-@Callable(fZ)
2470-func updateBackpack (z,lj) = if ((fZ.caller != cI))
2492+@Callable(gb)
2493+func updateBackpack (z,lp) = if ((gb.caller != cJ))
24712494 then throw("permission denied")
2472- else $Tuple2([StringEntry(bD(z), lj)], lj)
2473-
2474-
2475-
2476-@Callable(fZ)
2495+ else $Tuple2([StringEntry(bD(z), lp)], lp)
2496+
2497+
2498+
2499+@Callable(gb)
24772500 func commitForRandom () = {
2478- let kv = ks(fZ)
2479- let lk = (height + cS)
2480- let b = toString(fZ.caller)
2481- $Tuple2(([IntegerEntry(cT(b), lk)] :+ kv), lk)
2482- }
2483-
2484-
2485-
2486-@Callable(fZ)
2501+ let kx = ku(gb)
2502+ let lq = (height + cT)
2503+ let b = toString(gb.caller)
2504+ $Tuple2(([IntegerEntry(cU(b), lq)] :+ kx), lq)
2505+ }
2506+
2507+
2508+
2509+@Callable(gb)
24872510 func buySLand () = {
2488- let kv = ks(fZ)
2489- if ((size(fZ.payments) != 1))
2511+ let kx = ku(gb)
2512+ if ((size(gb.payments) != 1))
24902513 then throw("Exactly one payment required")
24912514 else {
2492- let kw = value(fZ.payments[0])
2493- if ((kw.assetId != ce))
2515+ let ky = value(gb.payments[0])
2516+ if ((ky.assetId != cf))
24942517 then throw("Allowed USDT payment only!")
2495- else if ((kw.amount != dw))
2496- then throw(("Payment attached should be " + toString(dw)))
2518+ else if ((ky.amount != dy))
2519+ then throw(("Payment attached should be " + toString(dy)))
24972520 else {
2498- let ey = hZ(fZ.caller, fZ.transactionId)
2499- $Tuple2((((ey._1 :+ ScriptTransfer(cI, kw.amount, ce)) ++ jD(toString(fZ.caller), X)._1) :+ kv), ey._2._1)
2521+ let eA = ib(gb.caller, gb.transactionId)
2522+ $Tuple2((((eA._1 :+ ScriptTransfer(cJ, ky.amount, cf)) ++ jF(toString(gb.caller), X)._1) :+ kx), eA._2._1)
25002523 }
25012524 }
25022525 }
25032526
25042527
25052528
2506-@Callable(fZ)
2507-func expedition (ih,ii) = {
2508- let kv = ks(fZ)
2509- if ((size(fZ.payments) != 0))
2529+@Callable(gb)
2530+func expedition (ij,ik) = {
2531+ let kx = ku(gb)
2532+ if ((size(gb.payments) != 0))
25102533 then throw("No payments required")
25112534 else {
2512- let ey = iy(fZ.caller, fZ.transactionId, ih, ii)
2513- let z = valueOrErrorMessage(getString(bC(toString(fZ.caller))), "You don't have a duck staked")
2514- if (jN(z))
2535+ let eA = iA(gb.caller, gb.transactionId, ij, ik)
2536+ let z = valueOrErrorMessage(getString(bC(toString(gb.caller))), "You don't have a duck staked")
2537+ if (jP(z))
25152538 then throw("expedition_checkTournament")
2516- else $Tuple2(((ey._1 ++ jx(z, X)._1) :+ kv), $Tuple2(ey._2, ey._3))
2517- }
2518- }
2519-
2520-
2521-
2522-@Callable(fZ)
2539+ else $Tuple2(((eA._1 ++ jz(z, X)._1) :+ kx), $Tuple2(eA._2, eA._3))
2540+ }
2541+ }
2542+
2543+
2544+
2545+@Callable(gb)
25232546 func upgradeInfra (O) = {
2524- let kv = ks(fZ)
2525- if ((size(fZ.payments) != 0))
2547+ let kx = ku(gb)
2548+ if ((size(gb.payments) != 0))
25262549 then throw("No payments required")
25272550 else {
2528- let ey = jk(true, fZ.caller, 0, O)
2529- let z = valueOrErrorMessage(getString(bC(toString(fZ.caller))), "You don't have a duck staked")
2530- $Tuple2(((ey._1 :+ kv) ++ jx(z, fraction(Y, ey._3, cl))._1), ey._2)
2531- }
2532- }
2533-
2534-
2535-
2536-@Callable(fZ)
2537-func activateArtifact (ll,lm) = {
2538- let kv = ks(fZ)
2539- if ((size(fZ.payments) != 0))
2551+ let eA = jm(true, gb.caller, 0, O)
2552+ let z = valueOrErrorMessage(getString(bC(toString(gb.caller))), "You don't have a duck staked")
2553+ $Tuple2(((eA._1 :+ kx) ++ jz(z, fraction(Y, eA._3, cm))._1), eA._2)
2554+ }
2555+ }
2556+
2557+
2558+
2559+@Callable(gb)
2560+func activateArtifact (lr,ls) = {
2561+ let kx = ku(gb)
2562+ if ((size(gb.payments) != 0))
25402563 then throw("No payments required")
25412564 else {
2542- let b = toString(fZ.caller)
2543- let ey = {
2544- let cf = ll
2545- if (("PRESALE" == cf))
2546- then jL(b, lm)
2547- else if (("ONBOARD" == cf))
2548- then jE(b)
2565+ let b = toString(gb.caller)
2566+ let eA = {
2567+ let cg = lr
2568+ if (("PRESALE" == cg))
2569+ then jN(b, ls)
2570+ else if (("ONBOARD" == cg))
2571+ then jG(b)
25492572 else throw("Unknown artifact")
25502573 }
2551- (ey :+ kv)
2552- }
2553- }
2554-
2555-
2556-
2557-@Callable(fZ)
2558-func mergeLands (jT) = {
2559- let kv = ks(fZ)
2560- if ((size(fZ.payments) != 0))
2574+ (eA :+ kx)
2575+ }
2576+ }
2577+
2578+
2579+
2580+@Callable(gb)
2581+func mergeLands (jV) = {
2582+ let kx = ku(gb)
2583+ if ((size(gb.payments) != 0))
25612584 then throw("No payments required")
25622585 else {
2563- let ey = kr(toString(fZ.caller), jT)
2564- $Tuple2(((ey._1 :+ kv) ++ jD(toString(fZ.caller), Z)._1), ey._2)
2565- }
2566- }
2567-
2568-
2569-
2570-@Callable(fZ)
2571-func cargoExchange (ln,O) = {
2572- let kv = ks(fZ)
2573- if ((size(fZ.payments) != 0))
2586+ let eA = kt(toString(gb.caller), jV)
2587+ $Tuple2(((eA._1 :+ kx) ++ jF(toString(gb.caller), Z)._1), eA._2)
2588+ }
2589+ }
2590+
2591+
2592+
2593+@Callable(gb)
2594+func cargoExchange (lt,O) = {
2595+ let kx = ku(gb)
2596+ if ((size(gb.payments) != 0))
25742597 then throw("No payments required")
25752598 else {
2576- let hE = split_4C(ln, ":")
2577- let b = toString(fZ.originCaller)
2578- let iS = value(assetInfo(fromBase58String(O)))
2579- let iT = bm(O)
2580- if (!(isDefined(getInteger(iT))))
2581- then throw((iS.name + " is not staked"))
2599+ let hG = split_4C(lt, ":")
2600+ let b = toString(gb.originCaller)
2601+ let iU = value(assetInfo(fromBase58String(O)))
2602+ let iV = bm(O)
2603+ if (!(isDefined(getInteger(iV))))
2604+ then throw((iU.name + " is not staked"))
25822605 else {
2583- let iV = valueOrErrorMessage(getString(bj(O)), (("NFT " + iS.name) + " is orphaned"))
2584- if ((iV != b))
2606+ let iX = valueOrErrorMessage(getString(bj(O)), (("NFT " + iU.name) + " is orphaned"))
2607+ if ((iX != b))
25852608 then throw((aA + " is not yours"))
25862609 else {
2587- let hq = (de(split(iS.description, "_")[cN]) / cm)
2588- let hr = valueOrElse(getInteger(bt(O)), 0)
2610+ let hs = (dg(split(iU.description, "_")[cO]) / cn)
2611+ let ht = valueOrElse(getInteger(bt(O)), 0)
25892612 let z = valueOrErrorMessage(getString(bC(b)), "You don't have a duck staked")
2590- let iP = valueOrElse(getString(bE(z)), aI)
2591- let iQ = split(value(iP), "_")
2592- if ((iQ[bX] != "L"))
2593- then throw((("Duck location type is " + iQ[bX]) + ", but should be L"))
2594- else if ((iQ[bY] != O))
2613+ let iR = valueOrElse(getString(bE(z)), aI)
2614+ let iS = split(value(iR), "_")
2615+ if ((iS[bX] != "L"))
2616+ then throw((("Duck location type is " + iS[bX]) + ", but should be L"))
2617+ else if ((iS[bY] != O))
25952618 then throw(("Duck should be on the land " + O))
25962619 else {
2597- let hp = bs(O)
2598- let hg = ho(hp, hq, hr)
2599- let hc = bD(z)
2600- let hF = hb(hc)
2601- let ey = hD(hE, hg, hF)
2602- let hx = split(hg[aZ], "_")
2603- let jh = (parseIntValue(hx[bb]) + ey._7)
2604- let ji = (parseIntValue(hx[bc]) - ey._7)
2605-[StringEntry(hc, makeString_2C([hF[be], ey._4, ey._5, ey._6], ":")), StringEntry(hp, makeString_2C([hg[aV], ey._1, ey._2, ey._3, makeString([hx[ba], toString(jh), toString(ji), hx[bd]], "_")], ":")), kv]
2620+ let hr = bs(O)
2621+ let hi = hq(hr, hs, ht)
2622+ let he = bD(z)
2623+ let hH = hd(he)
2624+ let eA = hF(hG, hi, hH)
2625+ let hz = split(hi[aZ], "_")
2626+ let jj = (parseIntValue(hz[bb]) + eA._7)
2627+ let jk = (parseIntValue(hz[bc]) - eA._7)
2628+[StringEntry(he, makeString_2C([hH[be], eA._4, eA._5, eA._6], ":")), StringEntry(hr, makeString_2C([hi[aV], eA._1, eA._2, eA._3, makeString([hz[ba], toString(jj), toString(jk), hz[bd]], "_")], ":")), kx]
26062629 }
26072630 }
26082631 }
26092632 }
26102633 }
26112634
26122635
26132636
2614-@Callable(fZ)
2615-func saveWarehouse (ht,O) = if ((fZ.caller != cI))
2637+@Callable(gb)
2638+func saveWarehouse (hv,O) = if ((gb.caller != cJ))
26162639 then throw("Access denied")
26172640 else {
2618- let hp = bs(O)
2619- let hu = split_4C(ht, ":")
2620- if ((size(hu) != 5))
2641+ let hr = bs(O)
2642+ let hw = split_4C(hv, ":")
2643+ if ((size(hw) != 5))
26212644 then throw("warehouse string should contain 4 ':' separators")
26222645 else {
2623- let lo = split(hu[aZ], "_")[ba]
2624- let jh = hf(hu)
2625- let lp = hd(hu[aV])
2626- let ji = ((lp - parseIntValue(lo)) - jh)
2627- let lq = makeString_2C([hu[aV], hu[aW], hu[aX], hu[aY], makeString([lo, toString(jh), toString(ji), toString(lp)], "_")], ":")
2628- $Tuple2([StringEntry(hp, lq)], lq)
2646+ let lu = split(hw[aZ], "_")[ba]
2647+ let jj = hh(hw)
2648+ let lv = hf(hw[aV])
2649+ let jk = ((lv - parseIntValue(lu)) - jj)
2650+ let lw = makeString_2C([hw[aV], hw[aW], hw[aX], hw[aY], makeString([lu, toString(jj), toString(jk), toString(lv)], "_")], ":")
2651+ $Tuple2([StringEntry(hr, lw)], lw)
26292652 }
26302653 }
26312654
26322655
26332656
2634-@Callable(fZ)
2635-func fixWarehouseFormat (O) = if ((fZ.caller != cH))
2657+@Callable(gb)
2658+func fixWarehouseFormat (O) = if ((gb.caller != cI))
26362659 then throw("Access denied")
26372660 else {
2638- let hp = bs(O)
2639- let iS = value(assetInfo(fromBase58String(O)))
2640- let hq = (de(split(iS.description, "_")[cN]) / cm)
2641- let hr = valueOrElse(getInteger(bt(O)), 0)
2642- let hu = ho(hp, hq, hr)
2643- let lo = dc(invoke(cI, "recalcLockedVolumeREADONLY", [O, hu], nil))
2644- let jh = hf(hu)
2645- let lp = hd(hu[aV])
2646- let ji = ((lp - lo) - jh)
2647- let lq = makeString_2C([hu[aV], hu[aW], hu[aX], hu[aY], makeString([toString(lo), toString(jh), toString(ji), toString(lp)], "_")], ":")
2648- $Tuple2([StringEntry(hp, lq)], lq)
2661+ let hr = bs(O)
2662+ let iU = value(assetInfo(fromBase58String(O)))
2663+ let hs = (dg(split(iU.description, "_")[cO]) / cn)
2664+ let ht = valueOrElse(getInteger(bt(O)), 0)
2665+ let hw = hq(hr, hs, ht)
2666+ let lu = dd(invoke(cJ, "recalcLockedVolumeREADONLY", [O, hw], nil))
2667+ let jj = hh(hw)
2668+ let lv = hf(hw[aV])
2669+ let jk = ((lv - lu) - jj)
2670+ let lw = makeString_2C([hw[aV], hw[aW], hw[aX], hw[aY], makeString([toString(lu), toString(jj), toString(jk), toString(lv)], "_")], ":")
2671+ $Tuple2([StringEntry(hr, lw)], lw)
26492672 }
26502673
26512674
26522675
2653-@Callable(fZ)
2654-func fixContinentProportions (jT) = if ((fZ.caller != cH))
2676+@Callable(gb)
2677+func fixContinentProportions (jV) = if ((gb.caller != cI))
26552678 then throw("Access denied")
26562679 else {
2657- func lr (eg,ls) = (eg :+ valueOrElse(getString(cV(ls)), "0_0_0_0_0_0"))
2658-
2659- let fJ = {
2660- let ei = aM
2661- let ej = size(ei)
2662- let ek = nil
2663- func el (em,en) = if ((en >= ej))
2664- then em
2665- else lr(em, ei[en])
2666-
2667- func eo (em,en) = if ((en >= ej))
2668- then em
2680+ func lx (ei,ly) = (ei :+ valueOrElse(getString(cW(ly)), "0_0_0_0_0_0"))
2681+
2682+ let fL = {
2683+ let ek = aM
2684+ let el = size(ek)
2685+ let em = nil
2686+ func en (eo,ep) = if ((ep >= el))
2687+ then eo
2688+ else lx(eo, ek[ep])
2689+
2690+ func eq (eo,ep) = if ((ep >= el))
2691+ then eo
26692692 else throw("List size exceeds 5")
26702693
2671- eo(el(el(el(el(el(ek, 0), 1), 2), 3), 4), 5)
2672- }
2673- func lt (eg,O) = {
2674- let iS = value(assetInfo(fromBase58String(O)))
2675- let iW = split(iS.description, "_")
2676- let hq = (de(iW[cN]) / cm)
2677- let ls = iW[cP]
2678- let fV = gb(iW[cO])
2679- let gD = value(indexOf(aM, ls))
2680- let ki = split(eg[gD], "_")
2681- let lu = makeString(fT(ki, fV, hq, 1), "_")
2682- let cf = ls
2683- if (("Americas" == cf))
2684- then [lu, eg[1], eg[2], eg[3], eg[4]]
2685- else if (("Europe" == cf))
2686- then [eg[0], lu, eg[2], eg[3], eg[4]]
2687- else if (("Asia" == cf))
2688- then [eg[0], eg[1], lu, eg[3], eg[4]]
2689- else if (("Africa" == cf))
2690- then [eg[0], eg[1], eg[2], lu, eg[4]]
2691- else if (("Oceania" == cf))
2692- then [eg[0], eg[1], eg[2], eg[3], lu]
2694+ eq(en(en(en(en(en(em, 0), 1), 2), 3), 4), 5)
2695+ }
2696+ func lz (ei,O) = {
2697+ let iU = value(assetInfo(fromBase58String(O)))
2698+ let iY = split(iU.description, "_")
2699+ let hs = (dg(iY[cO]) / cn)
2700+ let ly = iY[cQ]
2701+ let fX = gd(iY[cP])
2702+ let gF = value(indexOf(aM, ly))
2703+ let kk = split(ei[gF], "_")
2704+ let lA = makeString(fV(kk, fX, hs, 1), "_")
2705+ let cg = ly
2706+ if (("Americas" == cg))
2707+ then [lA, ei[1], ei[2], ei[3], ei[4]]
2708+ else if (("Europe" == cg))
2709+ then [ei[0], lA, ei[2], ei[3], ei[4]]
2710+ else if (("Asia" == cg))
2711+ then [ei[0], ei[1], lA, ei[3], ei[4]]
2712+ else if (("Africa" == cg))
2713+ then [ei[0], ei[1], ei[2], lA, ei[4]]
2714+ else if (("Oceania" == cg))
2715+ then [ei[0], ei[1], ei[2], ei[3], lA]
26932716 else throw("wrong continent")
26942717 }
26952718
2696- let er = {
2697- let ei = jT
2698- let ej = size(ei)
2699- let ek = fJ
2700- func gW (em,en) = if ((en >= ej))
2701- then em
2702- else lt(em, ei[en])
2703-
2704- func gX (em,en) = if ((en >= ej))
2705- then em
2719+ let et = {
2720+ let ek = jV
2721+ let el = size(ek)
2722+ let em = fL
2723+ func gY (eo,ep) = if ((ep >= el))
2724+ then eo
2725+ else lz(eo, ek[ep])
2726+
2727+ func gZ (eo,ep) = if ((ep >= el))
2728+ then eo
27062729 else throw("List size exceeds 100")
27072730
2708- gX(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(gW(ek, 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)
2709- }
2710- $Tuple2([StringEntry(cV("Americas"), er[0]), StringEntry(cV("Europe"), er[1]), StringEntry(cV("Asia"), er[2]), StringEntry(cV("Africa"), er[3]), StringEntry(cV("Oceania"), er[4])], 0)
2731+ gZ(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(em, 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)
2732+ }
2733+ $Tuple2([StringEntry(cW("Americas"), et[0]), StringEntry(cW("Europe"), et[1]), StringEntry(cW("Asia"), et[2]), StringEntry(cW("Africa"), et[3]), StringEntry(cW("Oceania"), et[4])], 0)
27112734 }
27122735
27132736
27142737
2715-@Callable(fZ)
2716-func fixStakedPieces (ct) = if ((fZ.caller != cH))
2738+@Callable(gb)
2739+func fixStakedPieces (cu) = if ((gb.caller != cI))
27172740 then throw("Access denied")
27182741 else {
2719- let km = if ((ct == ""))
2742+ let ko = if ((cu == ""))
27202743 then 0
27212744 else {
2722- let kf = getString(al, cX(ct))
2723- let kb = if (isDefined(kf))
2724- then split_51C(value(kf), "_")
2745+ let kh = getString(al, cY(cu))
2746+ let kd = if (isDefined(kh))
2747+ then split_51C(value(kh), "_")
27252748 else nil
2726- func lv (eg,O) = {
2727- let iS = value(assetInfo(fromBase58String(O)))
2728- let df = split(iS.description, "_")[cN]
2729- (eg + de(df))
2749+ func lB (ei,O) = {
2750+ let iU = value(assetInfo(fromBase58String(O)))
2751+ let dh = split(iU.description, "_")[cO]
2752+ (ei + dg(dh))
27302753 }
27312754
2732- let ei = kb
2733- let ej = size(ei)
2734- let ek = 0
2735- func el (em,en) = if ((en >= ej))
2736- then em
2737- else lv(em, ei[en])
2738-
2739- func eo (em,en) = if ((en >= ej))
2740- then em
2755+ let ek = kd
2756+ let el = size(ek)
2757+ let em = 0
2758+ func en (eo,ep) = if ((ep >= el))
2759+ then eo
2760+ else lB(eo, ek[ep])
2761+
2762+ func eq (eo,ep) = if ((ep >= el))
2763+ then eo
27412764 else throw("List size exceeds 100")
27422765
2743- eo(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(ek, 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)
2766+ eq(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(em, 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)
27442767 }
2745- $Tuple2([IntegerEntry(cY(ct), km)], km)
2768+ $Tuple2([IntegerEntry(cZ(cu), ko)], ko)
27462769 }
27472770
27482771
27492772
2750-@Callable(fZ)
2751-func setCustomName (bk,kd,bo) = {
2752- let kv = ks(fZ)
2753- if ((size(fZ.payments) != 1))
2773+@Callable(gb)
2774+func setCustomName (bk,kf,bo) = {
2775+ let kx = ku(gb)
2776+ if ((size(gb.payments) != 1))
27542777 then throw("Exactly one payment required")
27552778 else {
2756- let kw = value(fZ.payments[0])
2757- if ((kw.assetId != ce))
2779+ let ky = value(gb.payments[0])
2780+ if ((ky.assetId != cf))
27582781 then throw("Allowed USDT payment only!")
2759- else if ((kw.amount != ds))
2760- then throw(("Payment should be " + toString(ds)))
2761- else if (contains(kd, "__"))
2762- then throw(("Name should not contain '__': " + kd))
2763- else if ((size(kd) > dt))
2764- then throw(("Name too long, maxLength=" + toString(dt)))
2782+ else if ((ky.amount != du))
2783+ then throw(("Payment should be " + toString(du)))
2784+ else if (contains(kf, "__"))
2785+ then throw(("Name should not contain '__': " + kf))
2786+ else if ((size(kf) > dv))
2787+ then throw(("Name too long, maxLength=" + toString(dv)))
27652788 else {
2766- let b = toString(fZ.originCaller)
2767- let lw = {
2768- let cf = bo
2769- if (("ACCOUNT" == cf))
2789+ let b = toString(gb.originCaller)
2790+ let lC = {
2791+ let cg = bo
2792+ if (("ACCOUNT" == cg))
27702793 then {
2771- let lx = dM(kd)
2772- let ly = getString(lx)
2773- if (isDefined(ly))
2774- then throw(("Name already registered: " + kd))
2794+ let lD = dO(kf)
2795+ let lE = getString(lD)
2796+ if (isDefined(lE))
2797+ then throw(("Name already registered: " + kf))
27752798 else {
2776- let lz = bw(b)
2777- let lA = getString(lz)
2778- let lB = if (isDefined(lA))
2779- then [DeleteEntry(dM(value(lA)))]
2799+ let lF = bw(b)
2800+ let lG = getString(lF)
2801+ let lH = if (isDefined(lG))
2802+ then [DeleteEntry(dO(value(lG)))]
27802803 else nil
2781- (((lB :+ StringEntry(lz, kd)) :+ StringEntry(lx, b)) ++ jD(b, W)._1)
2804+ (((lH :+ StringEntry(lF, kf)) :+ StringEntry(lD, b)) ++ jF(b, W)._1)
27822805 }
27832806 }
2784- else if (("LAND" == cf))
2807+ else if (("LAND" == cg))
27852808 then {
2786- let iS = value(assetInfo(fromBase58String(bk)))
2787- let iT = bm(bk)
2788- if (!(isDefined(getInteger(iT))))
2789- then throw((iS.name + " is not staked"))
2809+ let iU = value(assetInfo(fromBase58String(bk)))
2810+ let iV = bm(bk)
2811+ if (!(isDefined(getInteger(iV))))
2812+ then throw((iU.name + " is not staked"))
27902813 else {
2791- let iV = valueOrErrorMessage(getString(bj(bk)), (("NFT " + iS.name) + " is orphaned"))
2792- if ((iV != b))
2814+ let iX = valueOrErrorMessage(getString(bj(bk)), (("NFT " + iU.name) + " is orphaned"))
2815+ if ((iX != b))
27932816 then throw((aA + " is not yours"))
27942817 else {
2795- let lx = dF(kd)
2796- let ly = getString(lx)
2797- if (isDefined(ly))
2798- then throw(("Name already registered: " + kd))
2818+ let lD = dH(kf)
2819+ let lE = getString(lD)
2820+ if (isDefined(lE))
2821+ then throw(("Name already registered: " + kf))
27992822 else {
2800- let lC = bl(bk)
2801- let lA = getString(lC)
2802- let lB = if (isDefined(lA))
2803- then [DeleteEntry(dF(value(lA)))]
2823+ let lI = bl(bk)
2824+ let lG = getString(lI)
2825+ let lH = if (isDefined(lG))
2826+ then [DeleteEntry(dH(value(lG)))]
28042827 else nil
2805- (((lB :+ StringEntry(lC, kd)) :+ StringEntry(lx, bk)) ++ jD(b, W)._1)
2828+ (((lH :+ StringEntry(lI, kf)) :+ StringEntry(lD, bk)) ++ jF(b, W)._1)
28062829 }
28072830 }
28082831 }
28092832 }
2810- else if (("DUCK" == cf))
2833+ else if (("DUCK" == cg))
28112834 then {
2812- let iS = value(assetInfo(fromBase58String(bk)))
2813- let iT = bm(bk)
2814- if (if (!(isDefined(getInteger(iT))))
2835+ let iU = value(assetInfo(fromBase58String(bk)))
2836+ let iV = bm(bk)
2837+ if (if (!(isDefined(getInteger(iV))))
28152838 then true
28162839 else !(isDefined(getString(bC(b)))))
2817- then throw((iS.name + " is not staked"))
2840+ then throw((iU.name + " is not staked"))
28182841 else {
2819- let iV = valueOrErrorMessage(getString(bB(bk)), (("NFT " + iS.name) + " is orphaned"))
2820- if ((iV != b))
2842+ let iX = valueOrErrorMessage(getString(bB(bk)), (("NFT " + iU.name) + " is orphaned"))
2843+ if ((iX != b))
28212844 then throw((aB + " is not yours"))
28222845 else {
2823- let lx = dL(kd)
2824- let ly = getString(lx)
2825- if (isDefined(ly))
2826- then throw(("Name already registered: " + kd))
2846+ let lD = dN(kf)
2847+ let lE = getString(lD)
2848+ if (isDefined(lE))
2849+ then throw(("Name already registered: " + kf))
28272850 else {
2828- let lC = bv(bk)
2829- let lA = getString(lC)
2830- let lB = if (isDefined(lA))
2831- then [DeleteEntry(dL(value(lA)))]
2851+ let lI = bv(bk)
2852+ let lG = getString(lI)
2853+ let lH = if (isDefined(lG))
2854+ then [DeleteEntry(dN(value(lG)))]
28322855 else nil
2833- (((lB :+ StringEntry(lC, kd)) :+ StringEntry(lx, bk)) ++ jx(bk, W)._1)
2856+ (((lH :+ StringEntry(lI, kf)) :+ StringEntry(lD, bk)) ++ jz(bk, W)._1)
28342857 }
28352858 }
28362859 }
28372860 }
28382861 else throw("Unknown entity type")
28392862 }
2840- $Tuple2(((lw :+ ScriptTransfer(cI, kw.amount, ce)) :+ kv), 0)
2863+ $Tuple2(((lC :+ ScriptTransfer(cJ, ky.amount, cf)) :+ kx), 0)
28412864 }
28422865 }
28432866 }
28442867
28452868
28462869
2847-@Callable(fZ)
2848-func setReferrals (lD,lE) = if ((fZ.callerPublicKey != dp))
2870+@Callable(gb)
2871+func setReferrals (lJ,lK) = if ((gb.callerPublicKey != dr))
28492872 then throw("Permission denied")
28502873 else {
2851- let kv = ks(fZ)
2852- if ((size(fZ.payments) != 0))
2874+ let kx = ku(gb)
2875+ if ((size(gb.payments) != 0))
28532876 then throw("No payments required")
2854- else if (!(isDefined(addressFromString(lD))))
2855- then throw(("Invalid address: " + lD))
2856- else if (!(isDefined(addressFromString(lE))))
2857- then throw(("Invalid address: " + lE))
2877+ else if (!(isDefined(addressFromString(lJ))))
2878+ then throw(("Invalid address: " + lJ))
2879+ else if (!(isDefined(addressFromString(lK))))
2880+ then throw(("Invalid address: " + lK))
28582881 else {
2859- let lF = dN()
2860- let lG = getString(lF)
2861- let lH = if (isDefined(lG))
2862- then split_4C(value(lG), "_")
2882+ let lL = dP()
2883+ let lM = getString(lL)
2884+ let lN = if (isDefined(lM))
2885+ then split_4C(value(lM), "_")
28632886 else nil
2864- if (containsElement(lH, lE))
2865- then throw((lE + " is not newbie (already has referrals)"))
2887+ if (containsElement(lN, lK))
2888+ then throw((lK + " is not newbie (already has referrals)"))
28662889 else {
2867- let jF = bx(lE)
2868- let jG = getString(jF)
2869- if (if (isDefined(jG))
2870- then isDefined(addressFromString(value(jG)))
2890+ let jH = bx(lK)
2891+ let jI = getString(jH)
2892+ if (if (isDefined(jI))
2893+ then isDefined(addressFromString(value(jI)))
28712894 else false)
2872- then throw(((lE + " already has refBy: ") + value(jG)))
2895+ then throw(((lK + " already has refBy: ") + value(jI)))
28732896 else {
2874- let lI = bA(lD)
2875- let lJ = getString(lI)
2876- let lK = if (isDefined(lJ))
2877- then split_4C(value(lJ), "_")
2897+ let lO = bA(lJ)
2898+ let lP = getString(lO)
2899+ let lQ = if (isDefined(lP))
2900+ then split_4C(value(lP), "_")
28782901 else nil
2879- if (containsElement(lK, lE))
2880- then throw((((lD + " already contains ") + lE) + " within referrals"))
2902+ if (containsElement(lQ, lK))
2903+ then throw((((lJ + " already contains ") + lK) + " within referrals"))
28812904 else {
2882- let lL = makeString_2C((lK :+ lE), "_")
2883- let lM = if (containsElement(lH, lD))
2884- then value(lG)
2885- else makeString_2C((lH :+ lD), "_")
2886- $Tuple2([StringEntry(jF, lD), StringEntry(lI, lL), StringEntry(lF, lM), kv], 0)
2905+ let lR = makeString_2C((lQ :+ lK), "_")
2906+ let lS = if (containsElement(lN, lJ))
2907+ then value(lM)
2908+ else makeString_2C((lN :+ lJ), "_")
2909+ $Tuple2([StringEntry(jH, lJ), StringEntry(lO, lR), StringEntry(lL, lS), kx], 0)
28872910 }
28882911 }
28892912 }
28902913 }
28912914 }
28922915
28932916
28942917
2895-@Callable(fZ)
2896-func distributePoints (lN,lO,lP,lQ,lR) = {
2897- let kv = ks(fZ)
2898- if ((size(fZ.payments) != 0))
2918+@Callable(gb)
2919+func distributePoints (lT,lU,lV,lW,lX) = {
2920+ let kx = ku(gb)
2921+ if ((size(gb.payments) != 0))
28992922 then throw("No payments required")
29002923 else {
2901- let b = toString(fZ.originCaller)
2924+ let b = toString(gb.originCaller)
29022925 let z = valueOrErrorMessage(getString(bC(b)), "You don't have a duck staked")
2903- let lS = H(b)
2904- let lT = valueOrElse(getInteger(al, lS), 0)
2905- let lU = D(z)
2906- let lV = valueOrElse(getInteger(al, lU), 0)
2907- let lW = (lT + lV)
2908- let lX = ((((lN + lO) + lP) + lQ) + lR)
2909- if ((lX > lW))
2910- then throw((("There are only " + toString(lW)) + " free points to distribute"))
2926+ let lY = H(b)
2927+ let lZ = valueOrElse(getInteger(al, lY), 0)
2928+ let ma = D(z)
2929+ let mb = valueOrElse(getInteger(al, ma), 0)
2930+ let mc = (lZ + mb)
2931+ let md = ((((lT + lU) + lV) + lW) + lX)
2932+ if ((md > mc))
2933+ then throw((("There are only " + toString(mc)) + " free points to distribute"))
29112934 else {
2912- let lY = A(z)
2913- let ao = split(valueOrElse(getString(al, lY), "0_0_0_0_0"), "_")
2914- let lZ = (lT - lX)
2915- $Tuple2([IntegerEntry(lS, if ((0 > lZ))
2935+ let me = A(z)
2936+ let ao = split(valueOrElse(getString(al, me), "0_0_0_0_0"), "_")
2937+ let mf = (lZ - md)
2938+ $Tuple2([IntegerEntry(lY, if ((0 > mf))
29162939 then 0
2917- else lZ), IntegerEntry(lU, if ((0 > lZ))
2918- then (lV + lZ)
2919- else lV), StringEntry(lY, makeString([toString((parseIntValue(ao[j]) + lN)), toString((parseIntValue(ao[k]) + lO)), toString((parseIntValue(ao[l]) + lP)), toString((parseIntValue(ao[m]) + lQ)), toString((parseIntValue(ao[n]) + lR))], "_")), kv], 0)
2940+ else mf), IntegerEntry(ma, if ((0 > mf))
2941+ then (mb + mf)
2942+ else mb), StringEntry(me, makeString([toString((parseIntValue(ao[j]) + lT)), toString((parseIntValue(ao[k]) + lU)), toString((parseIntValue(ao[l]) + lV)), toString((parseIntValue(ao[m]) + lW)), toString((parseIntValue(ao[n]) + lX))], "_")), kx], 0)
29202943 }
29212944 }
29222945 }
29232946
29242947
29252948
2926-@Callable(fZ)
2927-func splitByGlobalWeightsREADONLY (dX) = $Tuple2(nil, ep(dX))
2928-
2929-
2930-
2931-@Callable(fZ)
2932-func splitByGlobalAndLocalWeightsREADONLY (ma,mb,gc) = {
2933- let fV = gb(gc)
2934- $Tuple2(nil, $Tuple2(ep(ma), ea(mb, fV)))
2935- }
2936-
2937-
2938-
2939-@Callable(fZ)
2940-func getBackpackREADONLY (z) = $Tuple2(nil, makeString(hb(bD(z)), ":"))
2941-
2942-
2943-
2944-@Callable(fZ)
2949+@Callable(gb)
2950+func splitByGlobalWeightsREADONLY (dZ) = $Tuple2(nil, er(dZ))
2951+
2952+
2953+
2954+@Callable(gb)
2955+func splitByGlobalAndLocalWeightsREADONLY (mg,mh,ge) = {
2956+ let fX = gd(ge)
2957+ $Tuple2(nil, $Tuple2(er(mg), ec(mh, fX)))
2958+ }
2959+
2960+
2961+
2962+@Callable(gb)
2963+func getBackpackREADONLY (z) = $Tuple2(nil, makeString(hd(bD(z)), ":"))
2964+
2965+
2966+
2967+@Callable(gb)
29452968 func getWarehouseREADONLY (O) = {
2946- let iS = value(assetInfo(fromBase58String(O)))
2947- let hq = (de(split(iS.description, "_")[cN]) / cm)
2948- let hr = valueOrElse(getInteger(bt(O)), 0)
2949- $Tuple2(nil, makeString_2C(ho(bs(O), hq, hr), ":"))
2950- }
2951-
2952-
2953-
2954-@Callable(fZ)
2969+ let iU = value(assetInfo(fromBase58String(O)))
2970+ let hs = (dg(split(iU.description, "_")[cO]) / cn)
2971+ let ht = valueOrElse(getInteger(bt(O)), 0)
2972+ $Tuple2(nil, makeString_2C(hq(bs(O), hs, ht), ":"))
2973+ }
2974+
2975+
2976+
2977+@Callable(gb)
29552978 func saveLastTx () = {
2956- let ia = fZ.caller
2957- if (if (if ((ia != cK))
2958- then (ia != cI)
2979+ let ic = gb.caller
2980+ if (if (if ((ic != cL))
2981+ then (ic != cJ)
29592982 else false)
2960- then (ia != cL)
2983+ then (ic != cM)
29612984 else false)
29622985 then throw("Access denied")
2963- else $Tuple2([ks(fZ)], 42)
2964- }
2965-
2966-
2967-
2968-@Callable(fZ)
2969-func updateDuckStats (z,jy) = if ((fZ.caller != cI))
2986+ else $Tuple2([ku(gb)], 42)
2987+ }
2988+
2989+
2990+
2991+@Callable(gb)
2992+func updateDuckStats (z,jA) = if ((gb.caller != cJ))
29702993 then throw("Access denied")
2971- else jx(z, jy)
2972-
2973-
2974-
2975-@Callable(fZ)
2976-func updateAccStats (b,jy) = if ((fZ.caller != cI))
2994+ else jz(z, jA)
2995+
2996+
2997+
2998+@Callable(gb)
2999+func updateAccStats (b,jA) = if ((gb.caller != cJ))
29773000 then throw("Access denied")
2978- else jD(b, jy)
2979-
2980-
2981-
2982-@Callable(fZ)
2983-func equipDuck (mc) = {
2984- let kv = ks(fZ)
2985- if ((size(fZ.payments) != 0))
3001+ else jF(b, jA)
3002+
3003+
3004+
3005+@Callable(gb)
3006+func equipDuck (mi) = {
3007+ let kx = ku(gb)
3008+ if ((size(gb.payments) != 0))
29863009 then throw("No payments required")
29873010 else {
2988- let b = toString(fZ.originCaller)
3011+ let b = toString(gb.originCaller)
29893012 let z = valueOrErrorMessage(getString(bC(b)), "You don't have a duck staked")
2990- if (jN(z))
3013+ if (jP(z))
29913014 then throw("equipDuck_checkTournament")
29923015 else {
2993- let fM = E(z)
2994- let md = split(valueOrElse(getString(fM), ",;,_,;,_,;,_,;,_,;,_,;,"), "_")
2995- let hc = bD(z)
2996- let hF = hb(hc)
2997- let iD = split(mc, "_")
2998- if ((size(iD) != p))
3016+ let fO = E(z)
3017+ let mj = split(valueOrElse(getString(fO), ",;,_,;,_,;,_,;,_,;,_,;,"), "_")
3018+ let he = bD(z)
3019+ let hH = hd(he)
3020+ let iF = split(mi, "_")
3021+ if ((size(iF) != p))
29993022 then throw("Wrong equipment string")
30003023 else {
3001- let fO = fB(md, eM(hF[bh]), true, nil)
3002- let fP = split(iD[o], ";")[1]
3003- let am = if ((fP == ""))
3024+ let fQ = fD(mj, eO(hH[bh]), true, nil)
3025+ let fR = split(iF[o], ";")[1]
3026+ let am = if ((fR == ""))
30043027 then 0
30053028 else {
3006- let fQ = split(fP, ",")[0]
3007- if ((fQ == ""))
3029+ let fS = split(fR, ",")[0]
3030+ if ((fS == ""))
30083031 then 0
30093032 else {
3010- let fb = split(fQ, ":")
3011- let cG = fb[0]
3012- let fR = fb[1]
3013- if (if (if (if (if ((cG == "06"))
3033+ let fd = split(fS, ":")
3034+ let cH = fd[0]
3035+ let fT = fd[1]
3036+ if (if (if (if (if ((cH == "06"))
30143037 then true
3015- else (cG == "07"))
3038+ else (cH == "07"))
30163039 then true
3017- else (cG == "08"))
3018- then (fR != "")
3040+ else (cH == "08"))
3041+ then (fT != "")
30193042 else false)
3020- then (parseIntValue(fR) > 0)
3043+ then (parseIntValue(fT) > 0)
30213044 else false)
3022- then parseIntValue(split(aP[parseIntValue(cG)], "_")[aR])
3045+ then parseIntValue(split(aP[parseIntValue(cH)], "_")[aR])
30233046 else 0
30243047 }
30253048 }
3026- let fw = ak(this, z, am, true)
3027- let fS = fB(iD, fO, false, fw)
3028- let me = eR(fS)
3029- $Tuple2([StringEntry(fM, mc), StringEntry(hc, makeString_2C([hF[be], hF[bf], hF[bg], me], ":")), StringEntry(K(z), makeString([toString(fw[7]), toString(fw[8]), toString(fw[9]), toString(fw[10]), toString(fw[11])], "_")), kv], 0)
3049+ let fy = ak(this, z, am, true)
3050+ let fU = fD(iF, fQ, false, fy)
3051+ let mk = eT(fU)
3052+ $Tuple2([StringEntry(fO, mi), StringEntry(he, makeString_2C([hH[be], hH[bf], hH[bg], mk], ":")), StringEntry(K(z), makeString([toString(fy[7]), toString(fy[8]), toString(fy[9]), toString(fy[10]), toString(fy[11])], "_")), kx], 0)
30303053 }
30313054 }
30323055 }
30333056 }
30343057
30353058
30363059
3037-@Callable(fZ)
3038-func fortificateLand (O,mf) = {
3039- let kv = ks(fZ)
3040- if ((size(fZ.payments) != 0))
3060+@Callable(gb)
3061+func fortificateLand (O,ml) = {
3062+ let kx = ku(gb)
3063+ if ((size(gb.payments) != 0))
30413064 then throw("No payments required")
30423065 else {
3043- let b = toString(fZ.originCaller)
3066+ let b = toString(gb.originCaller)
30443067 let z = valueOrElse(getString(bC(b)), "")
3045- let eW = ak(this, z, 0, false)
3046- let mg = bu(O)
3047- let mh = split(valueOrElse(getString(mg), ":0_15:0_18:0"), "_")
3048- let iS = value(assetInfo(fromBase58String(O)))
3049- let hq = (de(split(iS.description, "_")[cN]) / cm)
3050- let hr = valueOrElse(getInteger(bt(O)), 0)
3051- let hp = bs(O)
3052- let hu = ho(hp, hq, hr)
3053- let mi = split(hu[aZ], "_")
3054- let mj = parseIntValue(mi[bb])
3055- let mk = parseIntValue(mi[bc])
3056- let ml = split(mf, "_")
3057- let mm = fI(mh, eM(hu[aY]), mj, mk, true, nil)
3058- let fO = mm._1
3059- let mn = mm._2
3060- let mo = mm._3
3061- let mp = fI(ml, fO, mn, mo, false, eW)
3062- let fS = mp._1
3063- let mq = mp._2
3064- let mr = mp._3
3065- let me = eR(fS)
3066- let jw = makeString([mi[ba], toString(mq), toString(mr), mi[bd]], "_")
3067- $Tuple2([StringEntry(mg, mf), StringEntry(hp, makeString_2C([hu[aV], hu[aW], hu[aX], me, jw], ":")), kv], 0)
3068- }
3069- }
3070-
3071-
3072-
3073-@Callable(fZ)
3074-func initDuckTourAttempt (z) = if ((fZ.caller != cL))
3068+ let eY = ak(this, z, 0, false)
3069+ let mm = bu(O)
3070+ let mn = split(valueOrElse(getString(mm), ":0_15:0_18:0"), "_")
3071+ let iU = value(assetInfo(fromBase58String(O)))
3072+ let hs = (dg(split(iU.description, "_")[cO]) / cn)
3073+ let ht = valueOrElse(getInteger(bt(O)), 0)
3074+ let hr = bs(O)
3075+ let hw = hq(hr, hs, ht)
3076+ let mo = split(hw[aZ], "_")
3077+ let mp = parseIntValue(mo[bb])
3078+ let mq = parseIntValue(mo[bc])
3079+ let mr = split(ml, "_")
3080+ let ms = fK(mn, eO(hw[aY]), mp, mq, true, nil)
3081+ let fQ = ms._1
3082+ let mt = ms._2
3083+ let mu = ms._3
3084+ let mv = fK(mr, fQ, mt, mu, false, eY)
3085+ let fU = mv._1
3086+ let mw = mv._2
3087+ let mx = mv._3
3088+ let mk = eT(fU)
3089+ let jy = makeString([mo[ba], toString(mw), toString(mx), mo[bd]], "_")
3090+ $Tuple2([StringEntry(mm, ml), StringEntry(hr, makeString_2C([hw[aV], hw[aW], hw[aX], mk, jy], ":")), kx], 0)
3091+ }
3092+ }
3093+
3094+
3095+
3096+@Callable(gb)
3097+func initDuckTourAttempt (z) = if ((gb.caller != cM))
30753098 then throw("Access denied")
30763099 else {
3077- let kv = ks(fZ)
3078- let is = y(z)
3079- let it = ae(valueOrElse(getInteger(C(z)), 0))
3080- let kJ = valueOrElse(getInteger(is), it)
3081- let ms = bE(z)
3082- let iP = valueOrElse(getString(ms), aI)
3083- let jO = valueOrElse(getInteger(cL, bJ), 0)
3084- let mt = (toString(jO) + "_T_0")
3085- $Tuple2([kv, IntegerEntry(I(z), kJ), IntegerEntry(is, it), StringEntry(J(z), iP), StringEntry(ms, mt)], mt)
3100+ let kx = ku(gb)
3101+ let iu = y(z)
3102+ let iv = ae(valueOrElse(getInteger(C(z)), 0))
3103+ let kL = valueOrElse(getInteger(iu), iv)
3104+ let my = bE(z)
3105+ let iR = valueOrElse(getString(my), aI)
3106+ let jQ = valueOrElse(getInteger(cM, bJ), 0)
3107+ let mz = (toString(jQ) + "_T_0")
3108+ $Tuple2([kx, IntegerEntry(I(z), kL), IntegerEntry(iu, iv), StringEntry(J(z), iR), StringEntry(my, mz)], mz)
30863109 }
30873110
30883111
30893112
3090-@Callable(fZ)
3113+@Callable(gb)
30913114 func breakAttempt () = {
3092- let kv = ks(fZ)
3093- let z = valueOrErrorMessage(getString(bC(toString(fZ.caller))), "You don't have a duck staked")
3094- let ms = bE(z)
3095- let iP = valueOrElse(getString(ms), aI)
3096- if ((split(iP, "_")[bX] != "T"))
3115+ let kx = ku(gb)
3116+ let z = valueOrErrorMessage(getString(bC(toString(gb.caller))), "You don't have a duck staked")
3117+ let my = bE(z)
3118+ let iR = valueOrElse(getString(my), aI)
3119+ if ((split(iR, "_")[bX] != "T"))
30973120 then throw("Your duck is not in the tournament")
30983121 else {
3099- let mu = getIntegerValue(I(z))
3100- let mv = getStringValue(J(z))
3101- $Tuple2([kv, IntegerEntry(y(z), mu), StringEntry(ms, mv)], iP)
3102- }
3103- }
3104-
3105-
3106-
3107-@Callable(fZ)
3108-func exitTournamentInternal (z) = if ((fZ.caller != this))
3122+ let mA = getIntegerValue(I(z))
3123+ let mB = getStringValue(J(z))
3124+ $Tuple2([kx, IntegerEntry(y(z), mA), StringEntry(my, mB)], iR)
3125+ }
3126+ }
3127+
3128+
3129+
3130+@Callable(gb)
3131+func exitTournamentInternal (z) = if ((gb.caller != this))
31093132 then throw("Access denied")
31103133 else {
3111- let mu = getIntegerValue(I(z))
3112- let mv = getStringValue(J(z))
3113- $Tuple2([IntegerEntry(y(z), mu), StringEntry(bE(z), mv)], 0)
3134+ let mA = getIntegerValue(I(z))
3135+ let mB = getStringValue(J(z))
3136+ $Tuple2([IntegerEntry(y(z), mA), StringEntry(bE(z), mB)], false)
31143137 }
31153138
31163139
31173140
3118-@Callable(fZ)
3119-func prepareRobbery (ih,ii) = {
3120- let kv = ks(fZ)
3121- if (!(sigVerify_8Kb(ih, ii, dp)))
3141+@Callable(gb)
3142+func prepareRobbery (ij,ik) = {
3143+ let kx = ku(gb)
3144+ if (!(sigVerify_8Kb(ij, ik, dr)))
31223145 then throw("signature does not match")
3123- else if ((size(fZ.payments) != 1))
3146+ else if ((size(gb.payments) != 1))
31243147 then throw("exactly 1 payment must be attached")
31253148 else {
3126- let kw = fZ.payments[0]
3127- let mw = kw.amount
3128- if (if (!(isDefined(kw.assetId)))
3149+ let ky = gb.payments[0]
3150+ let mC = ky.amount
3151+ if (if (!(isDefined(ky.assetId)))
31293152 then true
3130- else (value(kw.assetId) != cR))
3153+ else (value(ky.assetId) != cS))
31313154 then throw("WLGOLD payments only!")
31323155 else {
3133- let eE = split(toUtf8String(ih), "|")
3134- if ((size(eE) != 2))
3156+ let eG = split(toUtf8String(ij), "|")
3157+ if ((size(eG) != 2))
31353158 then throw("Wrong message format")
31363159 else {
3137- let z = eE[0]
3160+ let z = eG[0]
31383161 let aw = as(this, z)._1
3139- if ((aw > mw))
3140- then throw(((("Payment " + toString(mw)) + " < required ") + toString(aw)))
3162+ if ((aw > mC))
3163+ then throw(((("Payment " + toString(mC)) + " < required ") + toString(aw)))
31413164 else {
3142- let mx = split(eE[1], "_")
3165+ let mD = split(eG[1], "_")
31433166 let av = lastBlock.timestamp
31443167 let ax = valueOrElse(getInteger(Q(z)), 0)
31453168 let ay = valueOrElse(getString(R(z)), "")
31463169 let az = valueOrElse(getInteger(P(ay)), 0)
31473170 if (if ((ax != w))
31483171 then (az > av)
31493172 else false)
31503173 then throw(("You already started robbing, wait till " + toString(az)))
31513174 else {
3152- func my (eg,O) = {
3153- let mz = valueOrElse(getInteger(N(O)), 0)
3154- let mA = valueOrElse(getInteger(P(O)), 0)
3155- if ((mz > size(t)))
3175+ func mE (ei,O) = {
3176+ let mF = valueOrElse(getInteger(N(O)), 0)
3177+ let mG = valueOrElse(getInteger(P(O)), 0)
3178+ if ((mF > size(t)))
31563179 then throw("Invalid state")
3157- else if ((av > mA))
3180+ else if ((av > mG))
31583181 then {
3159- let mB = valueOrElse(getInteger(bm(O)), 0)
3160- if ((0 >= mB))
3161- then eg
3182+ let mH = valueOrElse(getInteger(bm(O)), 0)
3183+ if ((0 >= mH))
3184+ then ei
31623185 else {
3163- let fG = value(assetInfo(fromBase58String(O)))
3164- let iW = split(fG.description, "_")
3165- let iH = de(iW[cN])
3166- let mC = iG(O, iH)
3167- let gf = (av - mB)
3168- let iZ = fraction(gf, (mC * iH), aG)
3169- if ((u > iZ))
3170- then eg
3171- else (eg :+ O)
3186+ let fI = value(assetInfo(fromBase58String(O)))
3187+ let iY = split(fI.description, "_")
3188+ let iJ = dg(iY[cO])
3189+ let mI = iI(O, iJ)
3190+ let gh = (av - mH)
3191+ let jb = fraction(gh, (mI * iJ), aG)
3192+ if ((u > jb))
3193+ then ei
3194+ else (ei :+ O)
31723195 }
31733196 }
3174- else eg
3197+ else ei
31753198 }
31763199
3177- let mD = {
3178- let ei = mx
3179- let ej = size(ei)
3180- let ek = nil
3181- func el (em,en) = if ((en >= ej))
3182- then em
3183- else my(em, ei[en])
3184-
3185- func eo (em,en) = if ((en >= ej))
3186- then em
3200+ let mJ = {
3201+ let ek = mD
3202+ let el = size(ek)
3203+ let em = nil
3204+ func en (eo,ep) = if ((ep >= el))
3205+ then eo
3206+ else mE(eo, ek[ep])
3207+
3208+ func eq (eo,ep) = if ((ep >= el))
3209+ then eo
31873210 else throw("List size exceeds 10")
31883211
3189- eo(el(el(el(el(el(el(el(el(el(el(ek, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
3212+ eq(en(en(en(en(en(en(en(en(en(en(em, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
31903213 }
3191- if ((size(mD) == 0))
3214+ if ((size(mJ) == 0))
31923215 then throw("No candidates for robbery")
31933216 else {
3194- let mE = dh(size(mD), height, (ii + fZ.transactionId))
3195- let O = mD[mE]
3196- $Tuple2([IntegerEntry(N(O), v), IntegerEntry(P(O), (av + t[v])), IntegerEntry(Q(z), x), StringEntry(R(z), O), kv], O)
3217+ let mK = dj(size(mJ), height, (ik + gb.transactionId))
3218+ let O = mJ[mK]
3219+ $Tuple2([IntegerEntry(N(O), v), IntegerEntry(P(O), (av + t[v])), IntegerEntry(Q(z), x), StringEntry(R(z), O), kx], O)
31973220 }
31983221 }
31993222 }
32003223 }
32013224 }
32023225 }
32033226 }
32043227
32053228

github/deemru/w8io/169f3d6 
2191.32 ms