tx · 9Fx7eBDZkrCc4p6x5DTd7o9ZPrhCQQbn8XWS7ZoGYhpC

3NDCyBG5q85JuaRiigUeEtainyjCQT3XpZm:  -0.10500000 Waves

2023.11.17 23:56 [2847866] smart account 3NDCyBG5q85JuaRiigUeEtainyjCQT3XpZm > SELF 0.00000000 Waves

{ "type": 13, "id": "9Fx7eBDZkrCc4p6x5DTd7o9ZPrhCQQbn8XWS7ZoGYhpC", "fee": 10500000, "feeAssetId": null, "timestamp": 1700254607681, "version": 2, "chainId": 84, "sender": "3NDCyBG5q85JuaRiigUeEtainyjCQT3XpZm", "senderPublicKey": "EVooykMNV691Venwp1dHUTBd7KWequzUcda57Wd3LQEX", "proofs": [ "3joMkQRGhLeKW5M97A5m67RkCt8hUSav9i1QSyPC8tLT2Q6GiU27wtUPzfLAJX93yvRnGnPr29FsT3fEp19Ztr6" ], "script": "base64:BgLgAQgCEgMKAQgSBAoCCAESAwoBBBIAEgMKAQgSABIDCgEIEgQKAgEIEgQKAgEIEgQKAgICEgUKAwEBARIAEgQKAggIEgASABIECgICAhIAEgMKAQgSBAoCCAgSAwoBGBIECgIICBIECgIICBIFCgMICAgSBAoCCAgSBwoFAQEBAQESAwoBARIFCgMBAQgSAwoBCBIDCgEIEgASBAoCCAESBAoCCAESAwoBCBIECgIICBIDCgEIEgASABIDCgEIEgMKAQgSBgoECAEIARIAEgQKAgICEgQKAgICEgASAwoBCBIApgIACURBWU1JTExJUwCAuJkpARRrZXlMYXN0QXJiVGltZUJ5VXNlcgEEYWRkcgkArAICAhBsYXN0QXJiVGltZVVzZXJfBQRhZGRyARprZXlBY3Jlc1N0YWtlZEFtb3VudEJ5VXNlcgEEYWRkcgkArAICAhhhY3Jlc1N0YWtlZEFtb3VudEJ5VXNlcl8FBGFkZHIABlNDQUxFOACAwtcvAAx4cExldmVsU2NhbGUAgBkAD3hwTGV2ZWxSZWNpcFBvdwCgHwASbnVtUG9pbnRzT25MZXZlbFVwAAMADnJvYmJlcnlDb3N0TWluAIDC1y8AFHJvYmJlcnlDb29sZG93bkNvZWZmAJADAAxyZXF1aXJlbWVudHMJAMwIAgIIU3RyZW5ndGgJAMwIAgIIQWNjdXJhY3kJAMwIAgIJSW50ZWxsZWN0CQDMCAICCUVuZHVyYW5jZQkAzAgCAglEZXh0ZXJpdHkJAMwIAgIFTGV2ZWwJAMwIAgIGSGVhbHRoBQNuaWwADGNoYXJTdHJlbmd0aAAAAAxjaGFyQWNjdXJhY3kAAQANY2hhckludGVsbGVjdAACAA1jaGFyRW5kdXJhbmNlAAMADWNoYXJEZXh0ZXJpdHkABAALc2VnQmFja3BhY2sAAAALTlVNU0VHTUVOVFMABgAKTlVNTUFJTkFVWAACAAhNQVhTTE9UUwACAA1NQVhQUk9ESU5TTE9UAB4AEGxhbmRSb2JDb29sZG93bnMJAMwIAgAACQDMCAIAwM8kCQDMCAIAoPc2CQDMCAIAgNzMFAkAzAgCAICupgoFA25pbAAOTUlOX1JFU19UT19ST0IAgNrECQAMcm9iSWR4TG9ja2VkAAEAC2R1Y2tJZHhGcmVlAAAAEGR1Y2tJZHhQcmVwYXJpbmcAAQENa2V5RHVja0hlYWx0aAELZHVja0Fzc2V0SWQJAKwCAgILZHVja0hlYWx0aF8FC2R1Y2tBc3NldElkAQxrZXlEdWNrQ2hhcnMBC2R1Y2tBc3NldElkCQCsAgICCmR1Y2tDaGFyc18FC2R1Y2tBc3NldElkAQlrZXlEdWNrWFABC2R1Y2tBc3NldElkCQCsAgICB2R1Y2tYUF8FC2R1Y2tBc3NldElkAQxrZXlEdWNrTGV2ZWwBC2R1Y2tBc3NldElkCQCsAgICCmR1Y2tMZXZlbF8FC2R1Y2tBc3NldElkARFrZXlEdWNrRnJlZVBvaW50cwELZHVja0Fzc2V0SWQJAKwCAgIPZHVja0ZyZWVQb2ludHNfBQtkdWNrQXNzZXRJZAEQa2V5RHVja0VxdWlwbWVudAELZHVja0Fzc2V0SWQJAKwCAgIOZHVja0VxdWlwbWVudF8FC2R1Y2tBc3NldElkAQlrZXlVc2VyWFABBGFkZHIJAKwCAgIHdXNlclhQXwUEYWRkcgEMa2V5VXNlckxldmVsAQRhZGRyCQCsAgICCnVzZXJMZXZlbF8FBGFkZHIBEWtleVVzZXJGcmVlUG9pbnRzAQRhZGRyCQCsAgICD3VzZXJGcmVlUG9pbnRzXwUEYWRkcgEOa2V5U2F2ZWRIZWFsdGgBC2R1Y2tBc3NldElkCQCsAgICDHNhdmVkSGVhbHRoXwULZHVja0Fzc2V0SWQBEGtleVNhdmVkTG9jYXRpb24BC2R1Y2tBc3NldElkCQCsAgICDnNhdmVkTG9jYXRpb25fBQtkdWNrQXNzZXRJZAEMa2V5RHVja0J1ZmZzAQtkdWNrQXNzZXRJZAkArAICAgpkdWNrQnVmZnNfBQtkdWNrQXNzZXRJZAEYa2V5TGFzdFJvYmJlcnlUaW1lQnlEdWNrAQtkdWNrQXNzZXRJZAkArAICAhBsYXN0Um9iYmVyeVRpbWVfBQtkdWNrQXNzZXRJZAEYa2V5TGFzdFJvYmJlcnlDb3N0QnlEdWNrAQtkdWNrQXNzZXRJZAkArAICAhBsYXN0Um9iYmVyeUNvc3RfBQtkdWNrQXNzZXRJZAETa2V5TGFuZFJvYmJlcnlTdGF0ZQELbGFuZEFzc2V0SWQJAKwCAgIRbGFuZFJvYmJlcnlTdGF0ZV8FC2xhbmRBc3NldElkARJrZXlMYW5kQ29vbGRvd25FVEEBC2xhbmRBc3NldElkCQCsAgICEGxhbmRDb29sZG93bkVUQV8FC2xhbmRBc3NldElkARNrZXlEdWNrUm9iYmVyeVN0YXRlAQtkdWNrQXNzZXRJZAkArAICAhFkdWNrUm9iYmVyeVN0YXRlXwULZHVja0Fzc2V0SWQBE2tleUxvY2tlZExhbmRCeUR1Y2sBC2R1Y2tBc3NldElkCQCsAgICEWxvY2tlZExhbmRCeUR1Y2tfBQtkdWNrQXNzZXRJZAEWa2V5RGVsaXZlcnlEZWxheUJ5RHVjawELZHVja0Fzc2V0SWQJAKwCAgIUZGVsaXZlcnlEZWxheUJ5RHVja18FC2R1Y2tBc3NldElkARRrZXlVc2VyRGVsaXZlcnlDb3VudAEEYWRkcgkArAICAhJ1c2VyRGVsaXZlcnlDb3VudF8FBGFkZHIBFmtleVVzZXJMYXN0RGVsaXZlcnlEYXkBBGFkZHIJAKwCAgIUdXNlckxhc3REZWxpdmVyeURheV8FBGFkZHIAB3hwQ2xhaW0AkE4AD3hwU3VjY2Vzc0ZsaWdodACQTgAMeHBGYWlsRmxpZ2h0ANAPAAh4cENhbGxFUwCgjQYADHhwQ3VzdG9tTmFtZQDAhD0ACnhwTmV3U0xhbmQAwJaxAgAOeHBVcGdyYWRlSW5mcmEAkE4AB3hwTWVyZ2UAwIQ9AAl4cE9uYm9hcmQAwIQ9AAZ4cEhlYWwAkE4BCWxldmVsQnlYUAECeHAJAGsDBQx4cExldmVsU2NhbGUJAGwGBQJ4cAAEBQ94cExldmVsUmVjaXBQb3cABAAEBQRET1dOBQZTQ0FMRTgBCW1heEhlYWx0aAEFbGV2ZWwJAGQCAGQFBWxldmVsAQdsZXZlbFVwAgljdXJyTGV2ZWwFbmV3WFAECG5ld0xldmVsCQEJbGV2ZWxCeVhQAQUFbmV3WFAJAMwIAgUIbmV3TGV2ZWwJAMwIAgkAaAIFEm51bVBvaW50c09uTGV2ZWxVcAkAZQIFCG5ld0xldmVsBQljdXJyTGV2ZWwFA25pbAEMZ2V0RHVja1N0YXRzBA9zdGFraW5nQ29udHJhY3QLZHVja0Fzc2V0SWQKYnVmZkVmZmVjdApmb3JjZUJ1ZmZzBAVjaGFycwkAtQkCCQELdmFsdWVPckVsc2UCCQCdCAIFD3N0YWtpbmdDb250cmFjdAkBDGtleUR1Y2tDaGFycwEFC2R1Y2tBc3NldElkAgkwXzBfMF8wXzACAV8EA2x2bAkBC3ZhbHVlT3JFbHNlAgkAmggCBQ9zdGFraW5nQ29udHJhY3QJAQxrZXlEdWNrTGV2ZWwBBQtkdWNrQXNzZXRJZAAABAZoZWFsdGgJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPc3Rha2luZ0NvbnRyYWN0CQENa2V5RHVja0hlYWx0aAEFC2R1Y2tBc3NldElkCQEJbWF4SGVhbHRoAQUDbHZsBApzdGF0ZUJ1ZmZzCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUPc3Rha2luZ0NvbnRyYWN0CQEMa2V5RHVja0J1ZmZzAQULZHVja0Fzc2V0SWQCCTBfMF8wXzBfMAIBXwkAzggCCQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVjaGFycwUMY2hhclN0cmVuZ3RoCQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVjaGFycwUMY2hhckFjY3VyYWN5CQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVjaGFycwUNY2hhckludGVsbGVjdAkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFY2hhcnMFDWNoYXJFbmR1cmFuY2UJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBWNoYXJzBQ1jaGFyRGV4dGVyaXR5CQDMCAIFA2x2bAkAzAgCBQZoZWFsdGgFA25pbAMFCmZvcmNlQnVmZnMJAMwIAgUKYnVmZkVmZmVjdAkAzAgCBQpidWZmRWZmZWN0CQDMCAIFCmJ1ZmZFZmZlY3QJAMwIAgUKYnVmZkVmZmVjdAkAzAgCBQpidWZmRWZmZWN0BQNuaWwJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCnN0YXRlQnVmZnMFDGNoYXJTdHJlbmd0aAkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKc3RhdGVCdWZmcwUMY2hhckFjY3VyYWN5CQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQpzdGF0ZUJ1ZmZzBQ1jaGFySW50ZWxsZWN0CQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQpzdGF0ZUJ1ZmZzBQ1jaGFyRW5kdXJhbmNlCQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQpzdGF0ZUJ1ZmZzBQ1jaGFyRGV4dGVyaXR5BQNuaWwBDmdldFJvYmJlcnlEYXRhAg9zdGFraW5nQ29udHJhY3QLZHVja0Fzc2V0SWQEC2xhc3RSb2JDb3N0CQELdmFsdWVPckVsc2UCCQCaCAIFD3N0YWtpbmdDb250cmFjdAkBGGtleUxhc3RSb2JiZXJ5Q29zdEJ5RHVjawEFC2R1Y2tBc3NldElkAAAEC2xhc3RSb2JUaW1lCQELdmFsdWVPckVsc2UCCQCaCAIFD3N0YWtpbmdDb250cmFjdAkBGGtleUxhc3RSb2JiZXJ5VGltZUJ5RHVjawEFC2R1Y2tBc3NldElkAAAEA25vdwgFCWxhc3RCbG9jawl0aW1lc3RhbXAEB3JvYkNvc3QJAJYDAQkAzAgCBQ5yb2JiZXJ5Q29zdE1pbgkAzAgCCQBlAgULbGFzdFJvYkNvc3QJAGgCBRRyb2JiZXJ5Q29vbGRvd25Db2VmZgkAZQIFA25vdwULbGFzdFJvYlRpbWUFA25pbAQJZHVja1N0YXRlCQELdmFsdWVPckVsc2UCCQCaCAIFD3N0YWtpbmdDb250cmFjdAkBE2tleUR1Y2tSb2JiZXJ5U3RhdGUBBQtkdWNrQXNzZXRJZAAABApsb2NrZWRMYW5kCQELdmFsdWVPckVsc2UCCQCdCAIFD3N0YWtpbmdDb250cmFjdAkBE2tleUxvY2tlZExhbmRCeUR1Y2sBBQtkdWNrQXNzZXRJZAIABAdsYW5kRVRBCQELdmFsdWVPckVsc2UCCQCaCAIFD3N0YWtpbmdDb250cmFjdAkBEmtleUxhbmRDb29sZG93bkVUQQEFCmxvY2tlZExhbmQAAAkAlwoFBQdyb2JDb3N0BQtsYXN0Um9iVGltZQUJZHVja1N0YXRlBQpsb2NrZWRMYW5kBQdsYW5kRVRBAApMQU5EUFJFRklYAgRMQU5EAApEVUNLUFJFRklYAgREVUNLAAtST0JPX1BSRUZJWAIEUk9CTwAKQVJUUFJFU0FMRQIHUFJFU0FMRQAGTlVNUkVTAAYAGE1BWF9MQU5EU19TVEFLRURfQllfVVNFUgAZAA9EQUlMWVJFU0JZUElFQ0UAgPjSAQAMV0hNVUxUSVBMSUVSAIDIr6AlAA9ERUZBVUxUTE9DQVRJT04CD0FmcmljYV9GX0FmcmljYQAQUkVTT1VSQ0VQUklDRU1JTgDVtQIACkVTU0VMTENPRUYACgAVTUlOX1VTRFRfRkVFX0RFTElWRVJZANCGAwASVEVOX01JTlVURVNfTUlMTElTAMDPJAAXQUxMT1dFRF9GUkVFX0RFTElWRVJJRVMAAQAaQUNSRVNfRk9SX0RFTElWRVJZX0FUVEVNUFQAgOHrFwAJcHJvZFR5cGVzCQDMCAICEEZpcnN0IEFpZCBLaXQgTDEJAMwIAgIQRmlyc3QgQWlkIEtpdCBMMgkAzAgCAhBGaXJzdCBBaWQgS2l0IEwzCQDMCAICC0JhY2twYWNrIEwxCQDMCAICC0JhY2twYWNrIEwyCQDMCAICC0JhY2twYWNrIEwzCQDMCAICDkZvb2QgUmF0aW9uIEwxCQDMCAICDkZvb2QgUmF0aW9uIEwyCQDMCAICDkZvb2QgUmF0aW9uIEwzCQDMCAICC0pldCBQYWNrIEwxCQDMCAICC0pldCBQYWNrIEwyCQDMCAICC0pldCBQYWNrIEwzCQDMCAICCVNoaWVsZCBMMQkAzAgCAglTaGllbGQgTDIJAMwIAgIJU2hpZWxkIEwzCQDMCAICB01pbmUgTDEJAMwIAgIHTWluZSBMMgkAzAgCAgdNaW5lIEwzCQDMCAICB1RyYXAgTDEJAMwIAgIHVHJhcCBMMgkAzAgCAgdUcmFwIEwzCQDMCAICDEthYm9vbURvZyBMMQkAzAgCAgxLYWJvb21Eb2cgTDIJAMwIAgIMS2Fib29tRG9nIEwzBQNuaWwACmNvbnRpbmVudHMJAMwIAgIIQW1lcmljYXMJAMwIAgIGRXVyb3BlCQDMCAICBEFzaWEJAMwIAgIGQWZyaWNhCQDMCAICB09jZWFuaWEFA25pbAAJQ09FRkYyTUFUAICt4gQAEGZvcnRBbGxvd2VkUHJvZHMJAMwIAgAPCQDMCAIAEAkAzAgCABEJAMwIAgASCQDMCAIAEwkAzAgCABQJAMwIAgAVCQDMCAIAFgkAzAgCABcFA25pbAAQcHJvZHVjdGlvbk1hdHJpeAkAzAgCAiU4XzhfOF8xN18xN180Ml8xMl8wXzMwXzAsMCwwLDAsMCwwLDBfCQDMCAICJThfOF84XzE3XzE3XzQyXzI0XzBfNjBfMCwwLDUsMiwwLDAsMF8JAMwIAgInOF84XzhfMTdfMTdfNDJfMzZfMF8xMjBfMCwwLDEwLDQsMCwwLDBfCQDMCAICKThfMTlfMTlfOF8yN18xOV8yNl8xXzIwXzAsMCwwLDAsMCwwLDBfMDAxCQDMCAICKThfMTlfMTlfOF8yN18xOV81Ml8xXzQwXzAsMCwwLDAsMCwwLDBfMDAxCQDMCAICKThfMTlfMTlfOF8yN18xOV83OF8xXzgwXzAsMCwwLDAsMCwwLDBfMDAxCQDMCAICJThfOF84XzhfOF82MF8xM18yXzJfMCwwLDAsMCwwLDAsMF8wMTEJAMwIAgIlOF84XzhfOF84XzYwXzI2XzJfNF8wLDAsMCwwLDAsMCwwXzAxMQkAzAgCAiU4XzhfOF84XzhfNjBfMzlfMl84XzAsMCwwLDAsMCwwLDBfMDExCQDMCAICKTMwXzMwXzNfMTdfMTdfM18zMF8zXzMwXzAsMCwwLDAsMCwwLDBfMTExCQDMCAICKTMwXzMwXzNfMTdfMTdfM182MF8zXzUwXzAsMCwwLDAsMCwwLDBfMTExCQDMCAICKTMwXzMwXzNfMTdfMTdfM185MF8zXzcwXzAsMCwwLDAsMCwwLDBfMTExCQDMCAICKzE4XzE4XzEwXzE4XzE4XzE4XzExXzRfMTBfMCwwLDAsMCwwLDAsMF8yMDEJAMwIAgIrMThfMThfMTBfMThfMThfMThfMjJfNF8yMF8wLDAsMCwwLDAsMCwwXzIwMQkAzAgCAisxOF8xOF8xMF8xOF8xOF8xOF8zM180XzMwXzAsMCwwLDAsMCwwLDBfMjAxCQDMCAICKjRfMTNfMjJfNF8zNV8yMl8yM18wXzUwLDEsMF8wLDAsMCwwLDAsMCwwXwkAzAgCAio0XzEzXzIyXzRfMzVfMjJfNDZfMF81MCwxLDFfMCwyLDUsMCwwLDAsMF8JAMwIAgIrNF8xM18yMl80XzM1XzIyXzY5XzBfNTAsMiwxXzAsNSwxMCwwLDAsMCwwXwkAzAgCAio1XzI1XzQwXzVfMTBfMTVfMjBfMV8zMCwxLDFfMCwwLDAsMCwwLDAsMF8JAMwIAgIqNV8yNV80MF81XzEwXzE1XzQwXzFfMzAsMSwyXzIsMSwzLDAsMCwwLDBfCQDMCAICKjVfMjVfNDBfNV8xMF8xNV82MF8xXzMwLDEsM181LDIsOCwwLDAsMCwwXwkAzAgCAiUyM18yM181XzIwXzIzXzZfMzVfMl8wXzAsMCwwLDAsMCwwLDBfCQDMCAICJTIzXzIzXzVfMjBfMjNfNl83MF8yXzBfMCwwLDAsMCwwLDAsMF8JAMwIAgImMjNfMjNfNV8yMF8yM182XzEwNV8yXzBfMCwwLDAsMCwwLDAsMF8FA25pbAAJcklkeENvZWZmAAYACnJJZHhFZmZlY3QACAAQcklkeFJlcXVpcmVtZW50cwAJAAlySWR4U2xvdHMACgAOUFJPRFVDVFBLR1NJWkUACgALd2hJZHhMZXZlbHMAAAAId2hJZHhSZXMAAQAId2hJZHhNYXQAAgAJd2hJZHhQcm9kAAMACXdoSWR4TE9GVAAEAAl2b2xMb2NrZWQAAAALdm9sT2NjdXBpZWQAAQAHdm9sRnJlZQACAAh2b2xUb3RhbAADAApicElkeExldmVsAAAACGJwSWR4UmVzAAEACGJwSWR4TWF0AAIACWJwSWR4UHJvZAADAA9sb2NJZHhDb250aW5lbnQAAAAKbG9jSWR4VHlwZQABAAhsb2NJZHhJZAACARVrZXlMYW5kQXNzZXRJZFRvT3duZXIBB2Fzc2V0SWQJAKwCAgIDbm9fBQdhc3NldElkARprZXlMYW5kQXNzZXRJZFRvQ3VzdG9tTmFtZQEHYXNzZXRJZAkArAICAgVsY25hXwUHYXNzZXRJZAEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEHYXNzZXRJZAkArAICAgNzdF8FB2Fzc2V0SWQBIGtleUxhbmRBcnRTdGF0dXNCeVR5cGVBbmRBc3NldElkAgR0eXBlB2Fzc2V0SWQJALkJAgkAzAgCAgNsYXMJAMwIAgUEdHlwZQkAzAgCBQdhc3NldElkBQNuaWwCAV8BImtleVN0YWtlZFRpbWVCeVR5cGVBc3NldElkQW5kT3duZXIDB25mdFR5cGUHYXNzZXRJZAlvd25lckFkZHIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAgZzdHRhb18FB25mdFR5cGUCAV8FB2Fzc2V0SWQCAV8FCW93bmVyQWRkcgESa2V5V2FyZWhvdXNlQnlMYW5kAQtsYW5kQXNzZXRJZAkArAICAgN3aF8FC2xhbmRBc3NldElkARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQdhc3NldElkCQCsAgICC2luZnJhTGV2ZWxfBQdhc3NldElkARdrZXlGb3J0aWZpY2F0aW9uc0J5TGFuZAELbGFuZEFzc2V0SWQJAKwCAgIPZm9ydGlmaWNhdGlvbnNfBQtsYW5kQXNzZXRJZAEaa2V5RHVja0Fzc2V0SWRUb0N1c3RvbU5hbWUBB2Fzc2V0SWQJAKwCAgIYZHVja0N1c3RvbU5hbWVCeUFzc2V0SWRfBQdhc3NldElkARZrZXlBZGRyZXNzVG9DdXN0b21OYW1lAQRhZGRyCQCsAgICGGFjY291bnRDdXN0b21OYW1lQnlBZGRyXwUEYWRkcgEPa2V5QWRkcmVzc1JlZkJ5AQRhZGRyCQCsAgICCWFjY1JlZkJ5XwUEYWRkcgEca2V5T25ib2FyZEFydEFjdGl2YXRlZE9uRHVjawELZHVja0Fzc2V0SWQJAKwCAgIab25ib2FyZEFydEFjdGl2YXRlZE9uRHVja18FC2R1Y2tBc3NldElkARxrZXlPbmJvYXJkQXJ0RHVja0FjdGl2YXRlZEJ5AQRhZGRyCQCsAgICGm9uYm9hcmRBcnRBY3RpdmF0ZWREdWNrQnlfBQRhZGRyARNrZXlBZGRyZXNzUmVmZXJyYWxzAQRhZGRyCQCsAgICDWFjY1JlZmVycmFsc18FBGFkZHIBEGtleUR1Y2tJZFRvT3duZXIBB2Fzc2V0SWQJAKwCAgIKZHVja093bmVyXwUHYXNzZXRJZAEUa2V5U3Rha2VkRHVja0J5T3duZXIBCW93bmVyQWRkcgkArAICAhJzdGFrZWREdWNrQnlPd25lcl8FCW93bmVyQWRkcgERa2V5QmFja3BhY2tCeUR1Y2sBC2R1Y2tBc3NldElkCQCsAgICCWJhY2tQYWNrXwULZHVja0Fzc2V0SWQBD2tleUR1Y2tMb2NhdGlvbgELZHVja0Fzc2V0SWQJAKwCAgINZHVja0xvY2F0aW9uXwULZHVja0Fzc2V0SWQBFWtleVVzZXJHd2xSZWxlYXNlVGltZQEIdXNlckFkZHIJAKwCAgIaJXMlc19fdXNlckd3bFJlbGVhc2VUaW1lX18FCHVzZXJBZGRyAQ5rZXlFc1dhcmVob3VzZQACGmVtZXJnZW5jeVdhcmVob3VzZVByb2R1Y3RzAA9kZWxpdmVyeUZ1bmRLZXkCDGRlbGl2ZXJ5RnVuZAARZGVsaXZlcnlMb2NrZWRLZXkCDmRlbGl2ZXJ5TG9ja2VkAA1sYXN0VG91cklkS2V5Ag4lc19fbGFzdFRvdXJJZAEVa2V5VG91clN0YXRpY0RhdGFCeUlkAQN0SWQJAKwCAgIWJXMlZF9fdG91clN0YXRpY0RhdGFfXwkApAMBBQN0SWQBFmtleVRvdXJEeW5hbWljRGF0YUJ5SWQBA3RJZAkArAICAhclcyVkX190b3VyRHluYW1pY0RhdGFfXwkApAMBBQN0SWQBGmtleUJlc3RSZXN1bHRCeVRvdXJBbmREdWNrAgN0SWQLZHVja0Fzc2V0SWQJALkJAgkAzAgCAh8lcyVkJXNfX2Jlc3RSZXN1bHRCeVRvdXJBbmREdWNrCQDMCAIJAKQDAQUDdElkCQDMCAIFC2R1Y2tBc3NldElkBQNuaWwCAl9fAAlpZHhTdGF0aWMAAAAKaWR4RHluYW1pYwABAAp0U3RhdGljRW5kAAYADnREeW5hbWljU3RhdHVzAAEBC2dldFRvdXJEYXRhAgx0b3VyQ29udHJhY3QDdElkBAZzdGF0aWMJALUJAgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFDHRvdXJDb250cmFjdAkBFWtleVRvdXJTdGF0aWNEYXRhQnlJZAEFA3RJZAkArAICCQCsAgICGUVycm9yIHJlYWRpbmcgdG91cm5hbWVudCAJAKQDAQUDdElkAgUgZGF0YQICX18EB2R5bmFtaWMJALwJAgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFDHRvdXJDb250cmFjdAkBFmtleVRvdXJEeW5hbWljRGF0YUJ5SWQBBQN0SWQJAKwCAgkArAICAhlFcnJvciByZWFkaW5nIHRvdXJuYW1lbnQgCQCkAwEFA3RJZAIFIGRhdGECAl9fCQDMCAIFBnN0YXRpYwkAzAgCBQdkeW5hbWljBQNuaWwBDmlzSW5Ub3VybmFtZW50Agx0b3VyQ29udHJhY3QIbG9jYXRpb24EBmxhc3RJZAkBC3ZhbHVlT3JFbHNlAgkAmggCBQx0b3VyQ29udHJhY3QFDWxhc3RUb3VySWRLZXkAAAQDbG9jCQC1CQIFCGxvY2F0aW9uAgFfBANub3cIBQlsYXN0QmxvY2sJdGltZXN0YW1wBAV0RGF0YQkBC2dldFRvdXJEYXRhAgUMdG91ckNvbnRyYWN0BQZsYXN0SWQEBnN0YXRpYwkAkQMCBQV0RGF0YQUJaWR4U3RhdGljBAdkeW5hbWljCQCRAwIFBXREYXRhBQppZHhEeW5hbWljAwMDCQAAAgkAkQMCBQNsb2MFCmxvY0lkeFR5cGUCAVQJAAACCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDbG9jBQ9sb2NJZHhDb250aW5lbnQFBmxhc3RJZAcJAAACCQCRAwIFB2R5bmFtaWMFDnREeW5hbWljU3RhdHVzAgpJTlBST0dSRVNTBwkAZgIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQZzdGF0aWMFCnRTdGF0aWNFbmQFA25vdwcBDGlzSW5EZWxpdmVyeQEIbG9jYXRpb24EA2xvYwkAtQkCBQhsb2NhdGlvbgIBXwQDbm93CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQJc3RhcnRUaW1lCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDbG9jBQ9sb2NJZHhDb250aW5lbnQECGRpc3RhbmNlCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDbG9jBQhsb2NJZHhJZAMDCQAAAgkAkQMCBQNsb2MFCmxvY0lkeFR5cGUCAUQJAGYCCQBkAgUJc3RhcnRUaW1lBRJURU5fTUlOVVRFU19NSUxMSVMFA25vdwcJAGcCAAMFCGRpc3RhbmNlBwEPaXNVc3VhbExvY2F0aW9uAQhsb2NhdGlvbgQHbG9jVHlwZQkAkQMCCQC1CQIFCGxvY2F0aW9uAgFfBQpsb2NJZHhUeXBlAwkBAiE9AgUHbG9jVHlwZQIBVAkBAiE9AgUHbG9jVHlwZQIBRAcBCW9uTWlzc2lvbgIMdG91ckNvbnRyYWN0CGxvY2F0aW9uBAZsYXN0SWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUMdG91ckNvbnRyYWN0BQ1sYXN0VG91cklkS2V5AAAEA2xvYwkAtQkCBQhsb2NhdGlvbgIBXwQDbm93CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQFdERhdGEJAQtnZXRUb3VyRGF0YQIFDHRvdXJDb250cmFjdAUGbGFzdElkBAZzdGF0aWMJAJEDAgUFdERhdGEFCWlkeFN0YXRpYwQHZHluYW1pYwkAkQMCBQV0RGF0YQUKaWR4RHluYW1pYwQHbG9jVHlwZQkAkQMCBQNsb2MFCmxvY0lkeFR5cGUDCQAAAgUHbG9jVHlwZQIBRAYDAwMJAAACCQCRAwIFA2xvYwUKbG9jSWR4VHlwZQIBVAkAAAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNsb2MFD2xvY0lkeENvbnRpbmVudAUGbGFzdElkBwkAAAIJAJEDAgUHZHluYW1pYwUOdER5bmFtaWNTdGF0dXMCCklOUFJPR1JFU1MHCQBmAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBnN0YXRpYwUKdFN0YXRpY0VuZAUDbm93BwESZ2V0UmVjaXBlTWF0ZXJpYWxzAQZyZWNpcGUJAGgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUGcmVjaXBlBQlySWR4Q29lZmYFCUNPRUZGMk1BVAEMY2hlYXRBdHRlbXB0AwZvbGRMb2MGbmV3TG9jCWNoZWF0Q2FzZQkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAhZDaGVhdCBhdHRlbXB0OiBvbGRMb2M9BQZvbGRMb2MCCSwgbmV3TG9jPQUGbmV3TG9jAgcsIGNhc2U9CQCkAwEFCWNoZWF0Q2FzZQAWS1NfU0VQQVJBVEVfUFVCTElDX0tFWQcAGEtTX0FMTE9XX0JJR19JTkZSQV9NRVJHRQcAE0tTX0FMTE9XX1JPQk9fRFVDS1MHAApEQVlfTUlMTElTAIC4mSkABWNoYWluCQDJAQIJAMoBAggFBHRoaXMFYnl0ZXMAAQABAANwdWIEByRtYXRjaDAFBWNoYWluAwkAAAIBAVcFByRtYXRjaDADBRZLU19TRVBBUkFURV9QVUJMSUNfS0VZASCrF1ePFWfjWVRBsNZy62abxKPTZl7VmYZQ35g3H7IJCAEgT1PiGj9UqNadUk4THUYnVb2zU/Mse8lUVLD/Q8G0FCgDCQAAAgEBVAUHJG1hdGNoMAEgT1PiGj9UqNadUk4THUYnVb2zU/Mse8lUVLD/Q8G0FCgJAAIBAg1Vbmtub3duIGNoYWluAAt1c2R0QXNzZXRJZAQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMAEghNp6sggDP07Ru8qO7ouTvMmC3Qtd+geWqNQj+agP/7kDCQAAAgEBVAUHJG1hdGNoMAEgVbHYn3KHgu/l41uNrAWrZd6aQ6EvFrsF8xq3h6XxxRgJAAIBAg1Vbmtub3duIGNoYWluABVkZWZhdWx0UmVzdEFkZHJlc3NTdHIEByRtYXRjaDAFBWNoYWluAwkAAAIBAVcFByRtYXRjaDACIzNQUUN1dkZidmg0TGtQVW5yblUxejNqbmJBMXA5bTNXTmh2AwkAAAIBAVQFByRtYXRjaDACIzNNdW1rR0d6dENLQVhwV0RxeGtkZG9mcVhTVWJxUWt2U0p5CQACAQINVW5rbm93biBjaGFpbgARSW5mcmFVcGdyYWRlQ29zdFMEByRtYXRjaDAFBWNoYWluAwkAAAIBAVcFByRtYXRjaDAAgMivoCUDCQAAAgEBVAUHJG1hdGNoMACAwtcvCQACAQINVW5rbm93biBjaGFpbgAOYXJiaXRyYWdlRGVsYXkEByRtYXRjaDAFBWNoYWluAwkAAAIBAVcFByRtYXRjaDAFCkRBWV9NSUxMSVMDCQAAAgEBVAUHJG1hdGNoMADg1AMJAAIBAg1Vbmtub3duIGNoYWluABNERUxJVkVSWV9QVU5JU0hNRU5UBAckbWF0Y2gwBQVjaGFpbgMJAAACAQFXBQckbWF0Y2gwAICXkwUDCQAAAgEBVAUHJG1hdGNoMACg9zYJAAIBAg1Vbmtub3duIGNoYWluAANTRVACAl9fAAVNVUxUNgDAhD0ABU1VTFQ4AIDC1y8ABVNTSVpFABkABU1TSVpFAGQABUxTSVpFAOEBAAZYTFNJWkUAkAMAB1hYTFNJWkUA8QQABUlURVI2CQDMCAIAAAkAzAgCAAEJAMwIAgACCQDMCAIAAwkAzAgCAAQJAMwIAgAFBQNuaWwBD2dldFN0cmluZ09yRmFpbAIHYWRkcmVzcwNrZXkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQdhZGRyZXNzBQNrZXkJALkJAgkAzAgCAgptYW5kYXRvcnkgCQDMCAIJAKUIAQUHYWRkcmVzcwkAzAgCAgEuCQDMCAIFA2tleQkAzAgCAg8gaXMgbm90IGRlZmluZWQFA25pbAIAABFJZHhDZmdTdGFraW5nRGFwcAABABFJZHhDZmdFY29ub215RGFwcAACABRJZHhDZmdHb3Zlcm5hbmNlRGFwcAADAA1JZHhDZmdXbGdEYXBwAAQAFElkeENmZ1RvdXJuYW1lbnREYXBwAAcAD0lkeENmZ0FjcmVzRGFwcAAIAQprZXlSZXN0Q2ZnAAIOJXNfX3Jlc3RDb25maWcBDmtleVJlc3RBZGRyZXNzAAIMJXNfX3Jlc3RBZGRyARFyZWFkUmVzdENmZ09yRmFpbAEEcmVzdAkAvAkCCQEPZ2V0U3RyaW5nT3JGYWlsAgUEcmVzdAkBCmtleVJlc3RDZmcABQNTRVABGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIHcmVzdENmZwNpZHgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFB3Jlc3RDZmcFA2lkeAkArAICAipSZXN0IGNmZyBkb2Vzbid0IGNvbnRhaW4gYWRkcmVzcyBhdCBpbmRleCAJAKQDAQUDaWR4AAxyZXN0Q29udHJhY3QJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwkBDmtleVJlc3RBZGRyZXNzAAUVZGVmYXVsdFJlc3RBZGRyZXNzU3RyAAdyZXN0Q2ZnCQERcmVhZFJlc3RDZmdPckZhaWwBBQxyZXN0Q29udHJhY3QAD3N0YWtpbmdDb250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFB3Jlc3RDZmcFEUlkeENmZ1N0YWtpbmdEYXBwAA9lY29ub215Q29udHJhY3QJARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCBQdyZXN0Q2ZnBRFJZHhDZmdFY29ub215RGFwcAALZ292Q29udHJhY3QJARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCBQdyZXN0Q2ZnBRRJZHhDZmdHb3Zlcm5hbmNlRGFwcAALd2xnQ29udHJhY3QJARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCBQdyZXN0Q2ZnBQ1JZHhDZmdXbGdEYXBwABJ0b3VybmFtZW50Q29udHJhY3QJARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCBQdyZXN0Q2ZnBRRJZHhDZmdUb3VybmFtZW50RGFwcAANYWNyZXNDb250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFB3Jlc3RDZmcFD0lkeENmZ0FjcmVzRGFwcAAKcmVjTGFuZE51bQAAAAtyZWNMYW5kU2l6ZQABAAtyZWNUZXJyYWlucwACAAxyZWNDb250aW5lbnQAAwANd2xnQXNzZXRJZEtleQILd2xnX2Fzc2V0SWQACndsZ0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnAgCBQt3bGdDb250cmFjdAUNd2xnQXNzZXRJZEtleQIYV0xHT0xEIGlzIG5vdCBpc3N1ZWQgeWV0AA9hY3Jlc0Fzc2V0SWRLZXkCDGFjcmVzQXNzZXRJZAAMYWNyZXNBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJwIAgUNYWNyZXNDb250cmFjdAUPYWNyZXNBc3NldElkS2V5AhdBQ1JFUyBpcyBub3QgaXNzdWVkIHlldAALcmFuZG9tRGVsYXkAAgEJa2V5Q29tbWl0AQdhZGRyZXNzCQCsAgICE2ZpbmlzaEJsb2NrRm9yQWRkcl8FB2FkZHJlc3MBEWtleVJlc1Byb3BvcnRpb25zAAITcmVzVHlwZXNQcm9wb3J0aW9ucwEWa2V5UmVzVHlwZXNCeUNvbnRpbmVudAEJY29udGluZW50CQCsAgICFHJlc1R5cGVzQnlDb250aW5lbnRfBQljb250aW5lbnQBFWtleVN0YWtlZExhbmRzQnlPd25lcgEJb3duZXJBZGRyCQCsAgICE3N0YWtlZExhbmRzQnlPd25lcl8FCW93bmVyQWRkcgEWa2V5U3Rha2VkUGllY2VzQnlPd25lcgEJb3duZXJBZGRyCQCsAgICFHN0YWtlZFBpZWNlc0J5T3duZXJfBQlvd25lckFkZHIBCGFzU3RyaW5nAQF2BAckbWF0Y2gwBQF2AwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAUBcwkAAgECGGZhaWwgdG8gY2FzdCBpbnRvIFN0cmluZwEFYXNJbnQBAXYEByRtYXRjaDAFAXYDCQABAgUHJG1hdGNoMAIDSW50BAFuBQckbWF0Y2gwBQFuCQACAQIVZmFpbCB0byBjYXN0IGludG8gSW50AQlhc0FueUxpc3QBAXYEByRtYXRjaDAFAXYDCQABAgUHJG1hdGNoMAIJTGlzdFtBbnldBAFsBQckbWF0Y2gwBQFsCQACAQIbZmFpbCB0byBjYXN0IGludG8gTGlzdFtBbnldAQlhc0Jvb2xlYW4BAXYEByRtYXRjaDAFAXYDCQABAgUHJG1hdGNoMAIHQm9vbGVhbgQBcwUHJG1hdGNoMAUBcwkAAgECGWZhaWwgdG8gY2FzdCBpbnRvIEJvb2xlYW4BD251bVBpZWNlc0J5U2l6ZQEIbGFuZFNpemUEByRtYXRjaDAFCGxhbmRTaXplAwkAAAICAVMFByRtYXRjaDAFBVNTSVpFAwkAAAICAU0FByRtYXRjaDAFBU1TSVpFAwkAAAICAUwFByRtYXRjaDAFBUxTSVpFAwkAAAICAlhMBQckbWF0Y2gwBQZYTFNJWkUDCQAAAgIDWFhMBQckbWF0Y2gwBQdYWExTSVpFCQACAQIRVW5rbm93biBsYW5kIHNpemUBB2lzRGlnaXQBAXMJAQlpc0RlZmluZWQBCQC2CQEFAXMBCmtleUJsb2NrZWQAAhBjb250cmFjdHNCbG9ja2VkARFrZXlMYXN0VHhJZEJ5VXNlcgEEYWRkcgkArAICAg9sYXN0VHhJZEJ5VXNlcl8FBGFkZHIBCmZpeGVkUG9pbnQCA3ZhbAhkZWNpbWFscwQGdGVuUG93CQBsBgAKAAAFCGRlY2ltYWxzAAAAAAUERE9XTgQHbG93UGFydAkApAMBCQBqAgUDdmFsBQZ0ZW5Qb3cEBnplcm9lcwkAsAICCQCkAwEFBnRlblBvdwkAZAIAAQkAsQIBBQdsb3dQYXJ0CQCsAgIJAKwCAgkArAICCQCkAwEJAGkCBQN2YWwFBnRlblBvdwIBLgUGemVyb2VzBQdsb3dQYXJ0AQ9nZXRSYW5kb21OdW1iZXIDCG1heFZhbHVlBHNhbHQHZW50cm9weQQKcmFuZG9tSGFzaAkA9wMBCQDLAQIFBHNhbHQFB2VudHJvcHkJAGoCCQCxCQEFCnJhbmRvbUhhc2gFCG1heFZhbHVlAA1pbmN1YmF0b3JBZGRyBAckbWF0Y2gwBQVjaGFpbgMJAAACAQFXBQckbWF0Y2gwCQERQGV4dHJOYXRpdmUoMTA2MikBAiMzUEVrdFZ1eDJSaGNoU042M0RzRG80YjRtejRRcXpLU2VEdgMJAAACAQFUBQckbWF0Y2gwBQR0aGlzCQACAQINVW5rbm93biBjaGFpbgALYnJlZWRlckFkZHIEByRtYXRjaDAFBWNoYWluAwkAAAIBAVcFByRtYXRjaDAJARFAZXh0ck5hdGl2ZSgxMDYyKQECIzNQRFZ1VTQ1SDdFaDVkbXROYm5STlJTdEd3VUxBN05ZNkhiAwkAAAIBAVQFByRtYXRjaDAFBHRoaXMJAAIBAg1Vbmtub3duIGNoYWluAAxFTVBUWV9QUk9ENTABkAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABFGSVZFTUlOVVRFU01JTExJUwDgpxIADFJFTkFNSU5HQ09TVADAlrECAApNQVhOQU1FTEVOADIAFUluZnJhVXBncmFkZUNvc3RTVXNkdACAreIEAAxFWFBNQVRFUklBTFMEByRtYXRjaDAFBWNoYWluAwkAAAIBAVcFByRtYXRjaDAApt2C7asHAwkAAAIBAVQFByRtYXRjaDAAqqeBswkJAAIBAg1Vbmtub3duIGNoYWluAAdFWFBVU0RUBAckbWF0Y2gwBQVjaGFpbgMJAAACAQFXBQckbWF0Y2gwAIDlmncDCQAAAgEBVAUHJG1hdGNoMACA5Zp3CQACAQINVW5rbm93biBjaGFpbgAOUk9CT19EVUNLX1VTRFQAoI0GAAxTX0NPU1RfQUNSRVMAgPKLqAkABUZJVkVYCQC2AgEABQAHVFdFTlRZWAkAtgIBABQACFRXRU5UWTJYCQC2AgEJAGgCABQAFAAIVFdFTlRZM1gJALYCAQkAaAIJAGgCABQAFAAUAAhUV0VOVFk0WAkAtgIBCQBoAgkAaAIJAGgCABQAFAAUABQACFRXRU5UWTVYCQC2AgEJAGgCCQBoAgkAaAIJAGgCABQAFAAUABQAFAAPUFJFU0FMRU5VTUxBTkRTAPQDARJrZXlOZXh0RnJlZUxhbmROdW0AAgtuZXh0TGFuZE51bQEaa2V5TGFuZEN1c3RvbU5hbWVUb0Fzc2V0SWQBBG5hbWUJAKwCAgIEbGNuXwUEbmFtZQEQa2V5TGFuZFRvQXNzZXRJZAEHbGFuZE51bQkArAICAgNsYV8FB2xhbmROdW0BHmtleUluZnJhTGV2ZWxCeUFzc2V0SWRBbmRPd25lcgIHYXNzZXRJZAlvd25lckFkZHIJAKwCAgkArAICCQCsAgICBWlsYW9fBQdhc3NldElkAgFfBQlvd25lckFkZHIBEWtleUxhbmROdW1Ub093bmVyAQdsYW5kTnVtCQCsAgICA2xvXwUHbGFuZE51bQEaa2V5RHVja0N1c3RvbU5hbWVUb0Fzc2V0SWQBBG5hbWUJAKwCAgIRZHVja0J5Q3VzdG9tTmFtZV8FBG5hbWUBFmtleUN1c3RvbU5hbWVUb0FkZHJlc3MBBG5hbWUJAKwCAgIUYWNjb3VudEJ5Q3VzdG9tTmFtZV8FBG5hbWUBCWtleU9sZGllcwACCm9sZGllc0xpc3QBD2tleU5leHRSb2JvRHVjawACDG5leHRSb2JvRHVjawALY2xhaW1Nb2RlV2gAAAANY2xhaW1Nb2RlRHVjawABABNjbGFpbU1vZGVXaFRoZW5EdWNrAAIACGZsSGVhbHRoAAAAC2ZsVGltZXN0YW1wAAUAB2ZsQm9udXMABgALZmxQcm9kc1VzZWQABwEHbmZ0TmFtZQIHbGFuZE51bQhsYW5kU2l6ZQkArAICCQCsAgIFCkxBTkRQUkVGSVgFB2xhbmROdW0FCGxhbmRTaXplAQh0b1ZvbHVtZQIGYW1vdW50B3BrZ1NpemUEBHBrZ3MDCQBnAgUGYW1vdW50AAAJAGkCCQBlAgkAZAIFBmFtb3VudAUHcGtnU2l6ZQABBQdwa2dTaXplCQEBLQEJAGkCCQBlAgkAZAIJAQEtAQUGYW1vdW50BQdwa2dTaXplAAEFB3BrZ1NpemUJAGgCBQRwa2dzBQVNVUxUOAETZGlzdHJpYnV0ZUJ5V2VpZ2h0cwIFdG90YWwHd2VpZ2h0cwQDc3VtCQBkAgkAZAIJAGQCCQBkAgkAZAIJAJEDAgUHd2VpZ2h0cwAACQCRAwIFB3dlaWdodHMAAQkAkQMCBQd3ZWlnaHRzAAIJAJEDAgUHd2VpZ2h0cwADCQCRAwIFB3dlaWdodHMABAkAkQMCBQd3ZWlnaHRzAAUDCQBnAgAABQNzdW0JAAIBAhBaZXJvIHdlaWdodHMgc3VtBAVub3JtNgkAawMFBXRvdGFsBQVNVUxUNgUDc3VtCgEKbm9ybWFsaXplcgIDYWNjBGVsZW0JAM0IAgUDYWNjCQBrAwUEZWxlbQUFbm9ybTYFBU1VTFQ2CgACJGwFB3dlaWdodHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBCm5vcm1hbGl6ZXICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDYJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYBEmdldE5lZWRlZE1hdGVyaWFscwEFdG90YWwEBXByb3BzCQC1CQIJAQV2YWx1ZQEJAKIIAQkBEWtleVJlc1Byb3BvcnRpb25zAAIBXwMJAQIhPQIJAJADAQUFcHJvcHMFBk5VTVJFUwkAAgECFldyb25nIHByb3BvcnRpb25zIGRhdGEEAXIJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXByb3BzAAAJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXByb3BzAAEJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXByb3BzAAIJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXByb3BzAAMJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXByb3Bz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BQpwcm9kdWN0SWR4CQACAQkArAICCQCsAgICCVByb2R1Y3QgJwkAkQMCBQlwcm9kVHlwZXMFCnByb2R1Y3RJZHgCIScgY2Fubm90IGJlIHVzZWQgZm9yIGxhbmQgZGVmZW5zZQMJAGYCAAAFBWNvdW50CQACAQIXQ291bnQgY2FuJ3QgYmUgbmVnYXRpdmUDCQBmAgUFY291bnQFDU1BWFBST0RJTlNMT1QJAAIBCQCsAgIJAKwCAgkArAICAhRDYW4ndCBwdXQgbW9yZSB0aGFuIAkApAMBBQ1NQVhQUk9ESU5TTE9UAgQgb2YgCQCRAwIFCXByb2RUeXBlcwUKcHJvZHVjdElkeAMJAAACBQVjb3VudAAACQCVCgMFBXBMaXN0BQhvY2N1cGllZAUEZnJlZQQEaGVhZAkAyQECBQVwTGlzdAkAaAIACAUKcHJvZHVjdElkeAQEY3VycgkAsQkBCQDJAQIJAMoBAgUFcExpc3QJAGgCAAgFCnByb2R1Y3RJZHgACAQEdGFpbAkAygECBQVwTGlzdAkAaAIACAkAZAIFCnByb2R1Y3RJZHgAAQQGcmVjaXBlCQC1CQIJAJEDAgUQcHJvZHVjdGlvbk1hdHJpeAUKcHJvZHVjdElkeAIBXwMDCQEBIQEFCmlzUG9zaXRpdmUJAGYCBQVjb3VudAUEY3VycgcJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIJWW91IGhhdmUgCQCkAwEFBGN1cnICBCBvZiAJAJEDAgUJcHJvZFR5cGVzBQpwcm9kdWN0SWR4AhMsIGJ1dCB0cmllZCB0byB1c2UgCQCkAwEFBWNvdW50BAZuZXdBbXQDAwkBASEBBQppc1Bvc2l0aXZlCQEVY2hlY2tTdGF0UmVxdWlyZW1lbnRzAgUJZHVja1N0YXRzCQC1CQIJAJEDAgUGcmVjaXBlBRBySWR4UmVxdWlyZW1lbnRzAgEsBwkAZQIFBGN1cnIFBWNvdW50CQBkAgUEY3VycgUFY291bnQECGRlbHRhVm9sCQBlAgkBCHRvVm9sdW1lAgUGbmV3QW10BQ5QUk9EVUNUUEtHU0laRQkBCHRvVm9sdW1lAgUEY3VycgUOUFJPRFVDVFBLR1NJWkUJAJUKAwkAywECCQDLAQIFBGhlYWQJAJoDAQUGbmV3QW10BQR0YWlsCQBkAgUIb2NjdXBpZWQFCGRlbHRhVm9sCQBlAgUEZnJlZQUIZGVsdGFWb2wBCGFkZFByb2RCBwZpZHhDbnQFcExpc3QKaXNQb3NpdGl2ZQdzZWdtZW50B21haW5BdXgEc2xvdAlkdWNrU3RhdHMEBXBhcnRzCQC1CQIFBmlkeENudAIBOgMJAQIhPQIJAJADAQUFcGFydHMAAgkAAgECKEluY29ycmVjdCBmb3JtYXQsIHNob3VsZCBiZSBpbmRleDphbW91bnQDAwkBASEBBQppc1Bvc2l0aXZlCQECIT0CCQCxAgEJAJEDAgUFcGFydHMAAAACBwkAAgECK1Byb2R1Y3QgaWR4IHNob3VsZCBiZSAyIGRpZ2l0cywgemVybyBwYWRkZWQECnByb2R1Y3RJZHgJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwYXJ0cwAABAVjb3VudAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXBhcnRzAAEDAwkAZgIAAAUKcHJvZHVjdElkeAYJAGcCBQpwcm9kdWN0SWR4CQCQAwEFEHByb2R1Y3Rpb25NYXRyaXgJAAIBAhNVbmtub3duIHByb2R1Y3QgaWR4AwkAZgIAAAUFY291bnQJAAIBAhdDb3VudCBjYW4ndCBiZSBuZWdhdGl2ZQMJAGYCBQVjb3VudAUNTUFYUFJPRElOU0xPVAkAAgEJAKwCAgkArAICCQCsAgICFENhbid0IHB1dCBtb3JlIHRoYW4gCQCkAwEFDU1BWFBST0RJTlNMT1QCBCBvZiAJAJEDAgUJcHJvZFR5cGVzBQpwcm9kdWN0SWR4AwkAAAIFBWNvdW50AAAJAJQKAgUFcExpc3QHBARoZWFkCQDJAQIFBXBMaXN0CQBoAgAIBQpwcm9kdWN0SWR4BARjdXJyCQCxCQEJAMkBAgkAygECBQVwTGlzdAkAaAIACAUKcHJvZHVjdElkeAAIBAR0YWlsCQDKAQIFBXBMaXN0CQBoAgAICQBkAgUKcHJvZHVjdElkeAABBAZyZWNpcGUJALUJAgkAkQMCBRBwcm9kdWN0aW9uTWF0cml4BQpwcm9kdWN0SWR4AgFfAwMJAQEhAQUKaXNQb3NpdGl2ZQkAZgIFBWNvdW50BQRjdXJyBwkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAglZb3UgaGF2ZSAJAKQDAQUEY3VycgIEIG9mIAkAkQMCBQlwcm9kVHlwZXMFCnByb2R1Y3RJZHgCEywgYnV0IHRyaWVkIHRvIHVzZSAJAKQDAQUFY291bnQECWlzQmlnSXRlbQMDCQEBIQEFCmlzUG9zaXRpdmUJARVjaGVja1N0YXRSZXF1aXJlbWVudHMCBQlkdWNrU3RhdHMJALUJAgkAkQMCBQZyZWNpcGUFEHJJZHhSZXF1aXJlbWVudHMCASwHBAZjb21wYXQJAJEDAgUGcmVjaXBlBQlySWR4U2xvdHMDCQAAAgUGY29tcGF0AgAJAAIBAhdJdGVtIGNhbm5vdCBiZSBlcXVpcHBlZAQBYwkBDXBhcnNlSW50VmFsdWUBBQZjb21wYXQEBGNTZWcJAGkCBQFjAGQDCQECIT0CBQdzZWdtZW50BQRjU2VnCQACAQIUU2VnbWVudCBpbmNvbXBhdGlibGUECGNNYWluQXV4CQBpAgkAagIFAWMAZAAKAwkBAiE9AgUHbWFpbkF1eAUIY01haW5BdXgJAAIBAhFTbG90IGluY29tcGF0aWJsZQQJY051bVNsb3RzCQBqAgUBYwAKAwMJAQIhPQIFBHNsb3QAAAkAZgIFCWNOdW1TbG90cwABBwkAAgECHkJpZyBpdGVtcyBzaG91bGQgb2NjdXB5IHNsb3QgMAkAZgIFCWNOdW1TbG90cwABBwkAlAoCCQDLAQIJAMsBAgUEaGVhZAkAmgMBCQBkAgUEY3VycgMFCmlzUG9zaXRpdmUFBWNvdW50CQEBLQEFBWNvdW50BQR0YWlsBQlpc0JpZ0l0ZW0BC3Nsb3RzR3JvdXBCBgFnBGJwSW4KaXNQb3NpdGl2ZQdzZWdtZW50B21haW5BdXgFc3RhdHMDCQECIT0CBQFnAgAEBXNsb3RzCQC1CQIFAWcCASwDCQBmAgkAkAMBBQVzbG90cwUITUFYU0xPVFMJAAIBAhJXcm9uZyBzbG90cyBmb3JtYXQEAnMwCQCRAwIFBXNsb3RzAAAEAnMxAwkAZgIJAJADAQUFc2xvdHMAAQkAkQMCBQVzbG90cwABAgADAwkAAAIFAnMwAgAJAAACBQJzMQIABwUEYnBJbgQFdG1wUzADCQECIT0CBQJzMAIACQEIYWRkUHJvZEIHBQJzMAUEYnBJbgUKaXNQb3NpdGl2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BGF1eDACAToEA2lkeAkAkQMCBQZpZHhDbnQAAAQDY250CQCRAwIFBmlkeENudAABAwMDAwMJAAACBQNpZHgCAjA2BgkAAAIFA2lkeAICMDcGCQAAAgUDaWR4AgIwOAkBAiE9AgUDY250AgAHCQBmAgkBDXBhcnNlSW50VmFsdWUBBQNjbnQAAAcJAQ1wYXJzZUludFZhbHVlAQkAkQMCCQC1CQIJAJEDAgUQcHJvZHVjdGlvbk1hdHJpeAkBDXBhcnNlSW50VmFsdWUBBQNpZHgCAV8FCnJJZHhFZmZlY3QAAAQFc3RhdHMJAQxnZXREdWNrU3RhdHMEBQR0aGlzBQtkdWNrQXNzZXRJZAUKYnVmZkVmZmVjdAYECG5ld1Byb2RCCQEGZHJlc3NCBAUGY3VyckVxBQl0ZW1wUHJvZEIHBQVzdGF0cwkAAAIFCG5ld1Byb2RCBQhuZXdQcm9kQgEZdXBkYXRlUHJvcG9ydGlvbnNJbnRlcm5hbAQIcHJvcExpc3QNdGVycmFpbkNvdW50cw1sYW5kU2l6ZUluZGV4BHNpZ24DCQECIT0CCQCQAwEFCHByb3BMaXN0BQZOVU1SRVMJAAIBAhZXcm9uZyBwcm9wb3J0aW9ucyBkYXRhCgEHdXBkYXRlcgIDYWNjAWkEBnJlc3VsdAkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQhwcm9wTGlzdAUBaQkAaAIJAGgCBQRzaWduCQCRAwIFDXRlcnJhaW5Db3VudHMFAWkFDWxhbmRTaXplSW5kZXgDCQBmAgAABQZyZXN1bHQJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICFlBhbmljISBQaWVjZXMgb2YgdHlwZT0JAKQDAQUBaQIHLCBzaWduPQkApAMBBQRzaWduAhMsIHRlcnJhaW5Db3VudHNbaV09CQCkAwEJAJEDAgUNdGVycmFpbkNvdW50cwUBaQIQLCBsYW5kU2l6ZUluZGV4PQkApAMBBQ1sYW5kU2l6ZUluZGV4CQDNCAIFA2FjYwkApAMBBQZyZXN1bHQKAAIkbAUFSVRFUjYKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBB3VwZGF0ZXICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDYJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYBEXVwZGF0ZVByb3BvcnRpb25zAw10ZXJyYWluQ291bnRzDWxhbmRTaXplSW5kZXgEc2lnbgQIcHJvcExpc3QJALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBCQERa2V5UmVzUHJvcG9ydGlvbnMAAgswXzBfMF8wXzBfMAIBXwkAuQkCCQEZdXBkYXRlUHJvcG9ydGlvbnNJbnRlcm5hbAQFCHByb3BMaXN0BQ10ZXJyYWluQ291bnRzBQ1sYW5kU2l6ZUluZGV4BQRzaWduAgFfAQ1jb3VudFRlcnJhaW5zAQh0ZXJyYWlucwkAzAgCCQBlAgkAkAMBCQC1CQIFCHRlcnJhaW5zAgFBAAEJAMwIAgkAZQIJAJADAQkAtQkCBQh0ZXJyYWlucwIBQgABCQDMCAIJAGUCCQCQAwEJALUJAgUIdGVycmFpbnMCAUMAAQkAzAgCCQBlAgkAkAMBCQC1CQIFCHRlcnJhaW5zAgFEAAEJAMwIAgkAZQIJAJADAQkAtQkCBQh0ZXJyYWlucwIBRQABCQDMCAIJAGUCCQCQAwEJALUJAgUIdGVycmFpbnMCAUYAAQUDbmlsAQZhZGRSZXMFCmN1cnJlbnRSZXMNdGVycmFpbkNvdW50cwlkZWx0YVRpbWUNbGFuZFNpemVJbmRleBdkYWlseUJ5UGllY2VXaXRoQm9udXNlcwoBBWFkZGVyAgNhY2MBaQQJcmVzT2ZUeXBlCQBoAgkAaAIJAGsDBQlkZWx0YVRpbWUFF2RhaWx5QnlQaWVjZVdpdGhCb251c2VzBQlEQVlNSUxMSVMJAJEDAgUNdGVycmFpbkNvdW50cwUBaQUNbGFuZFNpemVJbmRleAkAzQgCBQNhY2MJAKQDAQkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQpjdXJyZW50UmVzBQFpBQlyZXNPZlR5cGUEAXIKAAIkbAUFSVRFUjYKAAIkcwkAkAMBBQIkbAoABSRh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AgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgkAlAoCCQC5CQIIBQFyAl8xAgFfCQC5CQIIBQFyAl8yAgFfAQNhYnMBAXgDCQDAAgIFAXgJALYCAQAABQF4CQC+AgEFAXgABGZyZXEJAMwIAgkAzAgCAAYJAMwIAgAJCQDMCAIADgkAzAgCAA8JAMwIAgAQBQNuaWwJAMwIAgkAzAgCAAUJAMwIAgAICQDMCAIADQkAzAgCAA4JAMwIAgAPBQNuaWwJAMwIAgkAzAgCAAEJAMwIAgAECQDMCAIACQkAzAgCAAoJAMwIAgAPBQNuaWwJAMwIAgkAzAgCAAEJAMwIAgAGCQDMCAIABwkAzAgCAA8JAMwIAgATBQNuaWwJAMwIAgkAzAgCAAQJAMwIAgAHCQDMCAIACAkAzAgCAA0JAMwIAgASBQNuaWwFA25pbAEHZ2VuQ2hhcgIBbgVmcmVxcwQDcmVtCQCgAwEJALsCAgUBbgUHVFdFTlRZWAQGbGV0dGVyAwkAZgIJAJEDAgUFZnJlcXMAAAUDcmVtAgFBAwkAZgIJAJEDAgUFZnJlcXMAAQUDcmVtAgFCAwkAZgIJAJEDAgUFZnJlcXMAAgUDcmVtAgFDAwkAZgIJAJEDAgUFZnJlcXMAAwUDcmVtAgFEAwkAZgIJAJEDAgUFZnJlcXMABAUDcmVtAgFFAgFGBQZsZXR0ZXIBC2dlblRlcnJhaW5zAgRzZWVkDGNvbnRpbmVudElkeAQBZgkAkQMCBQRmcmVxBQxjb250aW5lbnRJZHgKARB0ZXJyYWluR2VuZXJhdG9yAgNhY2MEZWxlbQkAlAoCCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAggFA2FjYwJfMQkBB2dlbkNoYXICCAUDYWNjAl8yBQFmCQEHZ2VuQ2hhcgIJALoCAggFA2FjYwJfMgUHVFdFTlRZWAUBZgkBB2dlbkNoYXICCQC6AgIIBQNhY2MCXzIFCFRXRU5UWTJYBQFmCQEHZ2VuQ2hhcgIJALoCAggFA2FjYwJfMgUIVFdFTlRZM1gFAWYJAQdnZW5DaGFyAgkAugICCAUDYWNjAl8yBQhUV0VOVFk0WAUBZgkAugICCAUDYWNjAl8yBQhUV0VOVFk1WAQBdAoAAiRsCQDMCAIAAQkAzAgC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cwIBXwUGTlVNUkVTCQCRAwIFAndoBQh3aElkeFJlcwILMF8wXzBfMF8wXzAJAMwIAgMJAAACCQCQAwEJALUJAgkAkQMCBQJ3aAUId2hJZHhNYXQCAV8FBk5VTVJFUwkAkQMCBQJ3aAUId2hJZHhNYXQCCzBfMF8wXzBfMF8wCQDMCAIJAJEDAgUCd2gFCXdoSWR4UHJvZAkAzAgCBQZ3aExvZnQFA25pbAEVZ2V0V2FyZWhvdXNlU3BhY2VMZWZ0AQljdXJyZW50V2gEC29jY3VwaWVkVm9sCQEXZ2V0V2FyZWhvdXNlT2NjdXBpZWRWb2wBBQljdXJyZW50V2gED2N1cnJXaExvY2tlZFZvbAkBDXBhcnNlSW50VmFsdWUBCQCRAwIJALUJAgkAkQMCBQljdXJyZW50V2gFCXdoSWR4TE9GVAIBXwUJdm9sTG9ja2VkCQBlAgkAZQIJARdnZXRXYXJlaG91c2VUb3RhbFZvbHVtZQEJAJEDAgUJY3VycmVudFdoBQt3aElkeExldmVscwULb2NjdXBpZWRWb2wFD2N1cnJXaExvY2tlZFZvbAEJbW92ZVN0dWZmAwpjYXJnb1BhcnRzCWN1cnJlbnRXaAtjdXJyZW50UGFjawMJAQIhPQIJAJADAQUKY2FyZ29QYXJ0cwADCQACAQI0Y2FyZ29MaXN0U3RyIHNob3VsZCBjb250YWluIGV4YWN0bHkgMiAnOicgc2VwYXJhdG9ycwQIcmVzUGFydHMJALUJAgkAkQMCBQpjYXJnb1BhcnRzAAACAV8ECG1hdFBhcnRzCQC1CQIJAJEDAgUKY2FyZ29QYXJ0cwABAgFfBAlwcm9kUGFydHMDCQAAAgkAkQMCBQpjYXJnb1BhcnRzAAICAAUDbmlsCQC8CQIJAJEDAgUKY2FyZ29QYXJ0cwACAgFfAwkBAiE9AgkAkAMBBQhyZXNQYXJ0cwUGTlVNUkVTCQACAQIgQWxsIDYgcmVzb3VyY2VzIHNob3VsZCBiZSBwYXNzZWQDCQECIT0CCQCQAwEFCG1hdFBhcnRzBQZOVU1SRVMJAAIBAiBBbGwgNiBtYXRlcmlhbHMgc2hvdWxkIGJlIHBhc3NlZAQLd2hTcGFjZUxlZnQJARVnZXRXYXJlaG91c2VTcGFjZUxlZnQBBQljdXJyZW50V2gECWN1cnJXaFJlcwkAtQkCCQCRAwIFCWN1cnJlbnRXaAUId2hJZHhSZXMCAV8ECWN1cnJXaE1hdAkAtQkCCQCRAwIFCWN1cnJlbnRXaAUId2hJZHhNYXQCAV8ECmN1cnJXaFByb2QDCQAAAgkAkQMCBQljdXJyZW50V2gFCXdoSWR4UHJvZAIABQNuaWwJALwJAgkAkQMCBQljdXJyZW50V2gFCXdoSWR4UHJvZAIBXwQOY3VycmVudFBhY2tSZXMJALUJAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhSZXMCAV8EDmN1cnJlbnRQYWNrTWF0CQC1CQIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4TWF0AgFfBA9jdXJyZW50UGFja1Byb2QDCQAAAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kAgAFA25pbAkAvAkCCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QCAV8KAQNtdlICA2FjYwRpdGVtBAFpCAUDYWNjAl8xBAJhbQkBDXBhcnNlSW50VmFsdWUBBQRpdGVtBAN3aHIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQljdXJyV2hSZXMFAWkEA2JwcgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFDmN1cnJlbnRQYWNrUmVzBQFpAwkAAAIFAmFtAAAJAJYKBAkAZAIFAWkAAQkAzQgCCAUDYWNjAl8yCQCRAwIFCWN1cnJXaFJlcwUBaQkAzQgCCAUDYWNjAl8zCQCRAwIFDmN1cnJlbnRQYWNrUmVzBQFpCAUDYWNjAl80AwkAZgIFAmFtAAADCQBmAgUCYW0FA2JwcgkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgIQQXR0ZW1wdCB0byB0YWtlIAUEaXRlbQIZIGZyb20gYmFja3BhY2ssIGJ1dCBvbmx5IAkApAMBBQNicHICCiBhdmFpbGFibGUJAJYKBAkAZAIFAWkAAQkAzQgCCAUDYWNjAl8yCQCkAwEJAGQCBQN3aHIFAmFtCQDNCAIIBQNhY2MCXzMJAKQDAQkAZQIFA2JwcgUCYW0JAGQCCAUDYWNjAl80BQJhbQMJAGYCCQEBLQEFAmFtBQN3aHIJAAIBCQCsAgIJAKwCAgkArAICCQCsAgICEEF0dGVtcHQgdG8gdGFrZSAJAKQDAQkBAS0B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Y29udGluZW50SWR4BAljb250aW5lbnQJAJEDAgUKY29udGluZW50cwUMY29udGluZW50SWR4BAVpc3N1ZQkAwggFCQEHbmZ0TmFtZQIFB2xhbmROdW0CAVMJALkJAgkAzAgCBQdsYW5kTnVtCQDMCAICAVMJAMwIAgUIdGVycmFpbnMJAMwIAgUJY29udGluZW50BQNuaWwCAV8AAQAABwQHYXNzZXRJZAkAuAgBBQVpc3N1ZQQCaWQJANgEAQUHYXNzZXRJZAkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQESa2V5TmV4dEZyZWVMYW5kTnVtAAkAZAIFB2ZyZWVOdW0AAQkAzAgCBQVpc3N1ZQkAzAgCCQELU3RyaW5nRW50cnkCCQEQa2V5TGFuZFRvQXNzZXRJZAEFB2xhbmROdW0FAmlkCQDMCAIJAQtTdHJpbmdFbnRyeQIJARVrZXlMYW5kQXNzZXRJZFRvT3duZXIBBQJpZAUIdXNlckFkZHIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEWtleUxhbmROdW1Ub093bmVyAQUHbGFuZE51bQUIdXNlckFkZHIJAMwIAgkBDEludGVnZXJFbnRyeQIJARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQUCaWQAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBHmtleUluZnJhTGV2ZWxCeUFzc2V0SWRBbmRPd25lcgIFAmlkBQh1c2VyQWRkcgAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFBmNhbGxlcgABBQdhc3NldElkBQNuaWwJAJQKAgUCaWQFCWNvbnRpbmVudAEMZmxpZ2h0Q29tbW9uAwh1c2VyQWRkcgdtZXNzYWdlA3NpZwMJAQEhAQkAxBMDBQdtZXNzYWdlBQNzaWcFA3B1YgkAAgECGHNpZ25hdHVyZSBkb2VzIG5vdCBtYXRjaAQFcGFydHMJALwJAgkAsAkBBQdtZXNzYWdlAgE7BAlmbGlnaHRMb2cJALwJAgkAkQMCBQVwYXJ0cwAAAgF8BAJocAkAtQkCCQCRAwIFCWZsaWdodExvZwUIZmxIZWFsdGgCAV8EBWN1ckhQCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCaHAAAAQFbmV3SFAJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJocAABBAtuZXdMb2NUeFZlcgkAtQkCCQCRAwIFBXBhcnRzAAECAToEC25ld0xvY2F0aW9uCQCRAwIFC25ld0xvY1R4VmVyAAAEBHRpbWUJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQlmbGlnaHRMb2cFC2ZsVGltZXN0YW1wAwMJAGYCBQR0aW1lCQBkAggFCWxhc3RCbG9jawl0aW1lc3RhbXAFEUZJVkVNSU5VVEVTTUlMTElTBgkAZgIJAGUCCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAURRklWRU1JTlVURVNNSUxMSVMFBHRpbWUJAAIBCQCsAgIJAKwCAgkArAICAhxzaWduYXR1cmUgb3V0ZGF0ZWQ6IGxvZ1RpbWU9CQCkAwEFBHRpbWUCCSwgYmNUaW1lPQkApAMBCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQJdHhGcm9tTXNnCQCRAwIFC25ld0xvY1R4VmVyAAEEBmxhc3RUeAkBC3ZhbHVlT3JFbHNlAgkAoggBCQERa2V5TGFzdFR4SWRCeVVzZXIBBQh1c2VyQWRkcgIAAwkBAiE9AgUGbGFzdFR4BQl0eEZyb21Nc2cJAAIBCQCsAgIJAKwCAgkArAICAh5UeCBpZHMgZG9uJ3QgbWF0Y2ghIEluIHN0YXRlOiAFBmxhc3RUeAIKLCBpbiBtc2c6IAUJdHhGcm9tTXNnBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFCHVzZXJBZGRyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkBAlrZXlIZWFsdGgJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQEBW1heEhQCQEJbWF4SGVhbHRoAQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEMa2V5RHVja0xldmVsAQULZHVja0Fzc2V0SWQAAAQMb2xkRnJvbVN0YXRlCQELdmFsdWVPckVsc2UCCQCfCAEFCWtleUhlYWx0aAUFbWF4SFADCQECIT0CBQxvbGRGcm9tU3RhdGUFBWN1ckhQCQACAQkArAICCQCsAgIJAKwCAgIKb2xkSGVhbHRoPQkApAMBBQxvbGRGcm9tU3RhdGUCLyBmcm9tIHN0YXRlIGRvZXMgbm90IG1hdGNoIG9uZSBmcm9tIGZsaWdodCBsb2c9CQCkAwEFBWN1ckhQAwkAZwIAAAUFY3VySFAJAAIBAh5Zb3UgY2FuJ3QgZmx5IHdpdGggemVybyBoZWFsdGgDCQEBIQEJARdjYW5XZWFyQ3VycmVudEVxdWlwbWVudAEFC2R1Y2tBc3NldElkCQACAQIWRXF1aXBtZW50IGluY29tcGF0aWJsZQQFYm9udXMDCQBmAgkAkAMBBQlmbGlnaHRMb2cFB2ZsQm9udXMJAJEDAgUJZmxpZ2h0TG9nBQdmbEJvbnVzAgAECHByb2RVc2VkAwkAZgIJAJADAQUJZmxpZ2h0TG9nBQtmbFByb2RzVXNlZAkAkQMCBQlmbGlnaHRMb2cFC2ZsUHJvZHNVc2VkAgAECnNlbnRBbW91bnQDAwkAZgIFBW5ld0hQAAAJAAACBQVib251cwIBJAcJAQVhc0ludAEJAPwHBAUMcmVzdENvbnRyYWN0Ag1zZW5kVXNkdFByaXplCQDMCAIFCHVzZXJBZGRyBQNuaWwFA25pbAAACQCXCgUFBW5ld0hQBQtkdWNrQXNzZXRJZAUKc2VudEFtb3VudAULbmV3TG9jYXRpb24FCHByb2RVc2VkAQxhcHBseUJvbnVzZXMCC2xhbmRBc3NldElkBnBpZWNlcwQKaW5mcmFMZXZlbAkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEFC2xhbmRBc3NldElkAAAECWFydFBpZWNlcwkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEga2V5TGFuZEFydFN0YXR1c0J5VHlwZUFuZEFzc2V0SWQCBQpBUlRQUkVTQUxFBQtsYW5kQXNzZXRJZAAABARhZGQ2CQBpAgUKaW5mcmFMZXZlbAAGBARhZGQ3CQBpAgUKaW5mcmFMZXZlbAAHCQBkAgkAZAIFD0RBSUxZUkVTQllQSUVDRQkAawMFD0RBSUxZUkVTQllQSUVDRQkAZAIJAGQCBQppbmZyYUxldmVsBQRhZGQ2CQBoAgACBQRhZGQ3AAUJAGsDBQ9EQUlMWVJFU0JZUElFQ0UFCWFydFBpZWNlcwkAaAIFBnBpZWNlcwAFARRjaGVja0NsYWltQ29uZGl0aW9ucwMEYWRkcgljbGFpbU1vZGUNbGFuZEFzc2V0SWRJbgQNJHQwMzMzNDMzMzg4MgMJAAACBQljbGFpbU1vZGUFC2NsYWltTW9kZVdoCQCUCgIFDWxhbmRBc3NldElkSW4JAQt2YWx1ZU9yRWxzZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUEYWRkcgIABAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFBGFkZHICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQEC2N1ckxvY2F0aW9uCQELdmFsdWVPckVsc2UCCQCiCAEJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAUPREVGQVVMVExPQ0FUSU9OBANsb2MJALUJAgkBBXZhbHVlAQULY3VyTG9jYXRpb24CAV8DCQECIT0CCQCRAwIFA2xvYwUKbG9jSWR4VHlwZQIBTAkAAgEJAKwCAgkArAICAhZEdWNrIGxvY2F0aW9uIHR5cGUgaXMgCQCRAwIFA2xvYwUKbG9jSWR4VHlwZQIRLCBidXQgc2hvdWxkIGJlIEwJAJQKAgkAkQMCBQNsb2MFCGxvY0lkeElkBQtkdWNrQXNzZXRJZAQLbGFuZEFzc2V0SWQIBQ0kdDAzMzM0MzMzODgyAl8xBAZkdWNrSWQIBQ0kdDAzMzM0MzMzODgyAl8yBAVhc3NldAkBBXZhbHVlAQkA7AcBCQDZBAEFC2xhbmRBc3NldElkBAd0aW1lS2V5CQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFC2xhbmRBc3NldElkBAlzYXZlZFRpbWUJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnwgBBQd0aW1lS2V5CQCsAgIJAKwCAgIFTGFuZCAIBQVhc3NldARuYW1lAg4gaXMgbm90IHN0YWtlZAQFb3duZXIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEVa2V5TGFuZEFzc2V0SWRUb093bmVyAQULbGFuZEFzc2V0SWQJAKwCAgkArAICAgRORlQgCAUFYXNzZXQEbmFtZQIMIGlzIG9ycGhhbmVkAwkBAiE9AgUFb3duZXIFBGFkZHIJAAIBCQCsAgIFCkxBTkRQUkVGSVgCDSBpcyBub3QgeW91cnMEAWQJALUJAggFBWFzc2V0C2Rlc2NyaXB0aW9uAgFfCQCWCgQFBmR1Y2tJZAULbGFuZEFzc2V0SWQFAWQFCXNhdmVkVGltZQEQY2xhaW1SZXNJbnRlcm5hbAQEYWRkcgZhbW91bnQJY2xhaW1Nb2RlDWxhbmRBc3NldElkSW4DCQBmAgAABQZhbW91bnQJAAIBAg9OZWdhdGl2ZSBhbW91bnQEAWMJARRjaGVja0NsYWltQ29uZGl0aW9ucwMFBGFkZHIFCWNsYWltTW9kZQUNbGFuZEFzc2V0SWRJbgQIbGFuZFNpemUJAJEDAggFAWMCXzMFC3JlY0xhbmRTaXplBA10ZXJyYWluQ291bnRzCQENY291bnRUZXJyYWlucwEJAJEDAggFAWMCXzMFC3JlY1RlcnJhaW5zBAlkZWx0YVRpbWUJAGUCCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAgFAWMCXzQDCQBmAgAABQlkZWx0YVRpbWUJAAIBCQCsAgIJAKwCAgkArAICAiZTYXZlZCB0aW1lc3RhbXAgaXMgaW4gZnV0dXJlLCBzYXZlZCA9IAkApAMBCAUBYwJfNAIMLCBjdXJyZW50ID0gCQCkAwEIBQlsYXN0QmxvY2sJdGltZXN0YW1wBAZwaWVjZXMJAQ9udW1QaWVjZXNCeVNpemUBBQhsYW5kU2l6ZQQWZGFpbHlQcm9kdWN0aW9uQnlQaWVjZQkBDGFwcGx5Qm9udXNlcwIIBQFjAl8yBQZwaWVjZXMECGF2YWlsUmVzCQBrAwUJZGVsdGFUaW1lCQBoAgUWZGFpbHlQcm9kdWN0aW9uQnlQaWVjZQUGcGllY2VzBQlEQVlNSUxMSVMDCQBmAgUGYW1vdW50BQhhdmFpbFJlcwkAAgEJAKwCAgkArAICCQCsAgICIk5vdCBlbm91Z2ggcmVzb3VyY2VzLCBhdmFpbGFibGUgPSAJAKQDAQUIYXZhaWxSZXMCDiwgcmVxdWVzdGVkID0gCQCkAwEFBmFtb3VudAQMbmV3RGVsdGFUaW1lCQBrAwkAZQIFCGF2YWlsUmVzBQZhbW91bnQFCURBWU1JTExJUwkAaAIFFmRhaWx5UHJvZHVjdGlvbkJ5UGllY2UFBnBpZWNlcwQMbmV3VGltZXN0YW1wCQBlAggFCWxhc3RCbG9jawl0aW1lc3RhbXAFDG5ld0RlbHRhVGltZQQJbGFuZEluZGV4CQBpAgUGcGllY2VzBQVTU0laRQQKcmVzVG9DbGFpbQkBCXZpcnRDbGFpbQQFDXRlcnJhaW5Db3VudHMJAGUCBQlkZWx0YVRpbWUFDG5ld0RlbHRhVGltZQUJbGFuZEluZGV4BRZkYWlseVByb2R1Y3Rpb25CeVBpZWNlBAV3aEtleQkBEmtleVdhcmVob3VzZUJ5TGFuZAEIBQFjAl8yBAppbmZyYUxldmVsCQELdmFsdWVPckVsc2UCCQCfCAEJARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQgFAWMCXzIAAAQJY3VycmVudFdoCQEMZ2V0V2FyZWhvdXNlAwUFd2hLZXkFCWxhbmRJbmRleAUKaW5mcmFMZXZlbAQEbG9mdAkAtQkCCQCRAwIFCWN1cnJlbnRXaAUJd2hJZHhMT0ZUAgFfBAt3aFNwYWNlTGVmdAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFB3ZvbEZyZWUDAwkAAAIFCWNsYWltTW9kZQULY2xhaW1Nb2RlV2gJAGYCBQZhbW91bnQFC3doU3BhY2VMZWZ0BwkAAgEJAKwCAgkArAICAgVPbmx5IAkApAMBBQt3aFNwYWNlTGVmdAIYIHNwYWNlIGxlZnQgaW4gd2FyZWhvdXNlBAVicEtleQkBEWtleUJhY2twYWNrQnlEdWNrAQgFAWMCXzEEC2N1cnJlbnRQYWNrCQELZ2V0QmFja3BhY2sBBQVicEtleQQOY3VycmVudFBhY2tSZXMJALUJAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhSZXMCAV8EDGN1cnJlbnRXaFJlcwkAtQkCCQCRAwIFCWN1cnJlbnRXaAUId2hJZHhSZXMCAV8EDSR0MDM2MjU2MzcxMjcDCQAAAgUJY2xhaW1Nb2RlBQtjbGFpbU1vZGVXaAkAlgoECQEGYWRkUmVzBQUMY3VycmVudFdoUmVzBQ10ZXJyYWluQ291bnRzCQBlAgUJZGVsdGFUaW1lBQxuZXdEZWx0YVRpbWUFCWxhbmRJbmRleAUWZGFpbHlQcm9kdWN0aW9uQnlQaWVjZQkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhSZXMJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbG9mdAULdm9sT2NjdXBpZWQIBQpyZXNUb0NsYWltAl8yCQBlAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFB3ZvbEZyZWUIBQpyZXNUb0NsYWltAl8yAwkAAAIFCWNsYWltTW9kZQUNY2xhaW1Nb2RlRHVjawkAlgoECQCRAwIFCWN1cnJlbnRXaAUId2hJZHhSZXMJAQZhZGRSZXMFBQ5jdXJyZW50UGFja1JlcwUNdGVycmFpbkNvdW50cwkAZQIFCWRlbHRhVGltZQUMbmV3RGVsdGFUaW1lBQlsYW5kSW5kZXgFFmRhaWx5UHJvZHVjdGlvbkJ5UGllY2UJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQt2b2xPY2N1cGllZAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFB3ZvbEZyZWUEBWRpc3RyCQENZGlzdHJpYnV0ZVJlcwQFDGN1cnJlbnRXaFJlcwUOY3VycmVudFBhY2tSZXMFCnJlc1RvQ2xhaW0FC3doU3BhY2VMZWZ0BAR3aEFtCQCXAwEJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFB3ZvbEZyZWUJAMwIAggFCnJlc1RvQ2xhaW0CXzIFA25pbAkAlgoECAUFZGlzdHICXzEIBQVkaXN0cgJfMgkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQt2b2xPY2N1cGllZAUEd2hBbQkAZQIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQd2b2xGcmVlBQR3aEFtBAV3aFJlcwgFDSR0MDM2MjU2MzcxMjcCXzEEBWJwUmVzCAUNJHQwMzYyNTYzNzEyNwJfMgQFbG9mdE8IBQ0kdDAzNjI1NjM3MTI3Al8zBAVsb2Z0RggFDSR0MDM2MjU2MzcxMjcCXzQJAJcKBQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBCAUBYwJfMgUMbmV3VGltZXN0YW1wCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEia2V5U3Rha2VkVGltZUJ5VHlwZUFzc2V0SWRBbmRPd25lcgMFCkxBTkRQUkVGSVgIBQFjAl8yBQRhZGRyBQxuZXdUaW1lc3RhbXAFA25pbAUFYnBLZXkJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUKYnBJZHhMZXZlbAkAzAgCBQVicFJlcwkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeE1hdAkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QFA25pbAUFd2hLZXkJAMwIAgkAkQMCBQljdXJyZW50V2gFC3doSWR4TGV2ZWxzCQDMCAIFBXdoUmVzCQDMCAIJAJEDAgUJY3VycmVudFdoBQh3aElkeE1hdAkAzAgCCQCRAwIFCWN1cnJlbnRXaAUJd2hJZHhQcm9kCQDMCAIJALkJAgkAzAgCCQCRAwIFBGxvZnQFCXZvbExvY2tlZAkAzAgCCQCkAwEFBWxvZnRPCQDMCAIJAKQDAQUFbG9mdEYJAMwIAgkAkQMCBQRsb2Z0BQh2b2xUb3RhbAUDbmlsAgFfBQNuaWwBCGNsYWltQWxsBARhZGRyC2xhbmRBc3NldElkBnBpZWNlcwljbGFpbU1vZGUEB3RpbWVLZXkJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQULbGFuZEFzc2V0SWQECXNhdmVkVGltZQkBBXZhbHVlAQkAnwgBBQd0aW1lS2V5BAhhdmFpbFJlcwkAaAIJAGsDCQBlAggFCWxhc3RCbG9jawl0aW1lc3RhbXAFCXNhdmVkVGltZQkBDGFwcGx5Qm9udXNlcwIFC2xhbmRBc3NldElkBQZwaWVjZXMFCURBWU1JTExJUwUGcGllY2VzCQEQY2xhaW1SZXNJbnRlcm5hbAQFBGFkZHIFCGF2YWlsUmVzBQljbGFpbU1vZGUFC2xhbmRBc3NldElkAQ11cEluZnJhQ29tbW9uBAxzaG91bGRVc2VNYXQGY2FsbGVyDXBheW1lbnRBbW91bnQLbGFuZEFzc2V0SWQEBGFkZHIJAKUIAQUGY2FsbGVyBAFjCQEUY2hlY2tDbGFpbUNvbmRpdGlvbnMDBQRhZGRyBRNjbGFpbU1vZGVXaFRoZW5EdWNrBQtsYW5kQXNzZXRJZAQGcGllY2VzCQEPbnVtUGllY2VzQnlTaXplAQkAkQMCCAUBYwJfMwULcmVjTGFuZFNpemUECGluZnJhS2V5CQEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEIBQFjAl8yBAhjdXJMZXZlbAkBC3ZhbHVlT3JFbHNlAgkAnwgBBQhpbmZyYUtleQAAAwMJAQEhAQUYS1NfQUxMT1dfQklHX0lORlJBX01FUkdFCQBnAgUIY3VyTGV2ZWwAAwcJAAIBAiZDdXJyZW50bHkgbWF4IGluZnJhc3RydWN0dXJlIGxldmVsID0gMwQIbWF4SW5mcmEJAGQCCQBpAgkBBHNxcnQEBQZwaWVjZXMAAAAABQRET1dOAAUAAgQIbmV3TGV2ZWwJAGQCBQhjdXJMZXZlbAABAwMFGEtTX0FMTE9XX0JJR19JTkZSQV9NRVJHRQkAZgIFCG5ld0xldmVsBQhtYXhJbmZyYQcJAAIBCQCsAgICJUN1cnJlbnRseSBtYXggaW5mcmFzdHJ1Y3R1cmUgbGV2ZWwgPSAJAKQDAQUIbWF4SW5mcmEEBGNvc3QJAGsDBRVJbmZyYVVwZ3JhZGVDb3N0U1VzZHQJAGgCBQZwaWVjZXMFCG5ld0xldmVsBQVTU0laRQMDCQEBIQEFDHNob3VsZFVzZU1hdAkBAiE9AgUNcGF5bWVudEFtb3VudAUEY29zdAcJAAIBCQCsAgICG1BheW1lbnQgYXR0YWNoZWQgc2hvdWxkIGJlIAkApAMBBQRjb3N0BAVicEtleQkBEWtleUJhY2twYWNrQnlEdWNrAQgFAWMCXzEEC2N1cnJlbnRQYWNrCQELZ2V0QmFja3BhY2sBBQVicEtleQQFbUxpc3QJALUJAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhNYXQCAV8EB21hdFVzZWQJAGsDBRFJbmZyYVVwZ3JhZGVDb3N0UwkAaAIFBnBpZWNlcwUIbmV3TGV2ZWwFBVNTSVpFBAZuZXdNYXQJALkJAgkBEXN1YnRyYWN0TWF0ZXJpYWxzAwUMc2hvdWxkVXNlTWF0BQVtTGlzdAUHbWF0VXNlZAIBXwQLY2xhaW1SZXN1bHQJAQhjbGFpbUFsbAQFBGFkZHIIBQFjAl8yBQZwaWVjZXMFE2NsYWltTW9kZVdoVGhlbkR1Y2sEBndoRGF0YQgFC2NsYWltUmVzdWx0Al81BAZvbGRWb2wJARdnZXRXYXJlaG91c2VUb3RhbFZvbHVtZQEJAJEDAgUGd2hEYXRhBQt3aElkeExldmVscwQKbmV3Vm9sRGF0YQkAuQkCCQDMCAIJAJEDAgkAtQkCCQCRAwIFBndoRGF0YQULd2hJZHhMZXZlbHMCAV8AAAkAzAgCCQCkAwEFCG5ld0xldmVsBQNuaWwCAV8EBm5ld1ZvbAkBF2dldFdhcmVob3VzZVRvdGFsVm9sdW1lAQUKbmV3Vm9sRGF0YQQEbG9mdAkAtQkCCQCRAwIFBndoRGF0YQUJd2hJZHhMT0ZUAgFfBApuZXdMb2Z0U3RyCQC5CQIJAMwIAgkAkQMCBQRsb2Z0BQl2b2xMb2NrZWQJAMwIAgkAkQMCBQRsb2Z0BQt2b2xPY2N1cGllZAkAzAgCCQCkAwEJAGUCCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFB3ZvbEZyZWUFBm5ld1ZvbAUGb2xkVm9sCQDMCAIJAKQDAQUGbmV3Vm9sBQNuaWwCAV8JAJUKAwkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQhpbmZyYUtleQUIbmV3TGV2ZWwJAMwIAgkBDEludGVnZXJFbnRyeQIJAR5rZXlJbmZyYUxldmVsQnlBc3NldElkQW5kT3duZXICCAUBYwJfMgUEYWRkcgUIbmV3TGV2ZWwJAMwIAgkBC1N0cmluZ0VudHJ5AgUFYnBLZXkJALkJAgkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQpicElkeExldmVsCQDMCAIJAJEDAggFC2NsYWltUmVzdWx0Al8zBQhicElkeFJlcwkAzAgCBQZuZXdNYXQJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kBQNuaWwCAToJAMwIAgkBC1N0cmluZ0VudHJ5AggFC2NsYWltUmVzdWx0Al80CQC5CQIJAMwIAgUKbmV3Vm9sRGF0YQkAzAgCCQCRAwIFBndoRGF0YQUId2hJZHhSZXMJAMwIAgkAkQMCBQZ3aERhdGEFCHdoSWR4TWF0CQDMCAIJAJEDAgUGd2hEYXRhBQl3aElkeFByb2QJAMwIAgUKbmV3TG9mdFN0cgUDbmlsAgE6BQNuaWwIBQtjbGFpbVJlc3VsdAJfMQUIbmV3TGV2ZWwFB21hdFVzZWQBE3VwZGF0ZVN0YXRzSW50ZXJuYWwEBmx2bEtleQV4cEtleQlwb2ludHNLZXkHZGVsdGFYUAQCeHAJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUFeHBLZXkAAAQFbmV3WFAJAGQCBQJ4cAUHZGVsdGFYUAQJbHZsUG9pbnRzCQEHbGV2ZWxVcAIJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUGbHZsS2V5AAAFBW5ld1hQCQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIFBmx2bEtleQkAkQMCBQlsdmxQb2ludHMAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgUFeHBLZXkFBW5ld1hQCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlwb2ludHNLZXkJAGQCCQELdmFsdWVPckVsc2UCCQCfCAEFCXBvaW50c0tleQAACQCRAwIFCWx2bFBvaW50cwABBQNuaWwFBW5ld1hQARd1cGRhdGVEdWNrU3RhdHNJbnRlcm5hbAILZHVja0Fzc2V0SWQHZGVsdGFYUAQFYXNzZXQJAQV2YWx1ZQEJAOwHAQkA2QQBBQtkdWNrQXNzZXRJZAQEYWRkcgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARBrZXlEdWNrSWRUb093bmVyAQULZHVja0Fzc2V0SWQJAKwCAgkArAICAgRORlQgCAUFYXNzZXQEbmFtZQIMIGlzIG9ycGhhbmVkAwMDBRNLU19BTExPV19ST0JPX0RVQ0tTCQAAAggFBWFzc2V0Bmlzc3VlcgUEdGhpcwcJAQhjb250YWlucwIIBQVhc3NldARuYW1lBQtST0JPX1BSRUZJWAcJARN1cGRhdGVTdGF0c0ludGVybmFsBAkBDGtleVVzZXJMZXZlbAEFBGFkZHIJAQlrZXlVc2VyWFABBQRhZGRyCQERa2V5VXNlckZyZWVQb2ludHMBBQRhZGRyBQdkZWx0YVhQCQETdXBkYXRlU3RhdHNJbnRlcm5hbAQJAQxrZXlEdWNrTGV2ZWwBBQtkdWNrQXNzZXRJZAkBCWtleUR1Y2tYUAEFC2R1Y2tBc3NldElkCQERa2V5RHVja0ZyZWVQb2ludHMBBQtkdWNrQXNzZXRJZAUHZGVsdGFYUAEWdXBkYXRlQWNjU3RhdHNJbnRlcm5hbAIEYWRkcgdkZWx0YVhQCQETdXBkYXRlU3RhdHNJbnRlcm5hbAQJAQxrZXlVc2VyTGV2ZWwBBQRhZGRyCQEJa2V5VXNlclhQAQUEYWRkcgkBEWtleVVzZXJGcmVlUG9pbnRzAQUEYWRkcgUHZGVsdGFYUAESYWN0aXZhdGVPbmJvYXJkQXJ0AQRhZGRyBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFBGFkZHICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQECHJlZkJ5S2V5CQEPa2V5QWRkcmVzc1JlZkJ5AQUEYWRkcgQFcmVmQnkJAKIIAQUIcmVmQnlLZXkDCQEBIQEJAQlpc0RlZmluZWQBBQVyZWZCeQkAAgECKVlvdSBhcmUgbm90IGVsaWdpYmxlIGZvciBPTkJPQVJEIGFydGlmYWN0BAZhcnRLZXkJARxrZXlPbmJvYXJkQXJ0RHVja0FjdGl2YXRlZEJ5AQUEYWRkcgQHYXJ0RHVjawkAoggBBQZhcnRLZXkDCQEJaXNEZWZpbmVkAQUHYXJ0RHVjawkAAgEJAKwCAgIvWW91IGFscmVhZHkgdXNlZCB5b3VyIE9OQk9BUkQgYXJ0aWZhY3Qgb24gZHVjayAJAQV2YWx1ZQEFB2FydER1Y2sEEGR1Y2tBY3RpdmF0b3JLZXkJARxrZXlPbmJvYXJkQXJ0QWN0aXZhdGVkT25EdWNrAQULZHVja0Fzc2V0SWQEDWR1Y2tBY3RpdmF0b3IJAKIIAQUQZHVja0FjdGl2YXRvcktleQMJAQlpc0RlZmluZWQBBQ1kdWNrQWN0aXZhdG9yCQACAQkArAICCQCsAgIJAKwCAgIJVGhlIGR1Y2sgBQtkdWNrQXNzZXRJZAI0IGFscmVhZHkgZ290IHBvaW50cyBmcm9tIE9OQk9BUkQgYXJ0aWZhY3QgZnJvbSB1c2VyIAkBBXZhbHVlAQUNZHVja0FjdGl2YXRvcgkAzggCCQDMCAIJAQtTdHJpbmdFbnRyeQIFBmFydEtleQULZHVja0Fzc2V0SWQJAMwIAgkBC1N0cmluZ0VudHJ5AgUQZHVja0FjdGl2YXRvcktleQUEYWRkcgUDbmlsCAkBF3VwZGF0ZUR1Y2tTdGF0c0ludGVybmFsAgULZHVja0Fzc2V0SWQFCXhwT25ib2FyZAJfMQESYWN0aXZhdGVQcmVzYWxlQXJ0AgRhZGRyDWxhbmRBc3NldElkSW4EAWMJARRjaGVja0NsYWltQ29uZGl0aW9ucwMFBGFkZHIFE2NsYWltTW9kZVdoVGhlbkR1Y2sFDWxhbmRBc3NldElkSW4EC2xhbmRBc3NldElkCAUBYwJfMgQGcGllY2VzCQEPbnVtUGllY2VzQnlTaXplAQkAkQMCCAUBYwJfMwULcmVjTGFuZFNpemUEDWFjdGl2YXRpb25LZXkJASBrZXlMYW5kQXJ0U3RhdHVzQnlUeXBlQW5kQXNzZXRJZAIFCkFSVFBSRVNBTEUFC2xhbmRBc3NldElkAwkAZgIJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUNYWN0aXZhdGlvbktleQAAAAAJAAIBAiVQcmVzYWxlIGFydGlmYWN0IGlzIGFscmVhZHkgYWN0aXZhdGVkAwkAZgIJAQ1wYXJzZUludFZhbHVlAQkAkQMCCAUBYwJfMwUKcmVjTGFuZE51bQUPUFJFU0FMRU5VTUxBTkRTCQACAQkArAICCQCsAgIJAKwCAgUKTEFORFBSRUZJWAIBIAULbGFuZEFzc2V0SWQCJSBpcyBub3QgZWxpZ2libGUgZm9yIHByZXNhbGUgYXJ0aWZhY3QEC2NsYWltUmVzdWx0CQEIY2xhaW1BbGwEBQRhZGRyBQtsYW5kQXNzZXRJZAUGcGllY2VzBRNjbGFpbU1vZGVXaFRoZW5EdWNrCQDNCAIJAM0IAgkAzQgCCAULY2xhaW1SZXN1bHQCXzEJAQxJbnRlZ2VyRW50cnkCBQ1hY3RpdmF0aW9uS2V5BQZwaWVjZXMJAQtTdHJpbmdFbnRyeQIIBQtjbGFpbVJlc3VsdAJfMgkAuQkCCAULY2xhaW1SZXN1bHQCXzMCAToJAQtTdHJpbmdFbnRyeQIIBQtjbGFpbVJlc3VsdAJfNAkAuQkCCAULY2xhaW1SZXN1bHQCXzUCAToBD2NoZWNrVG91cm5hbWVudAELZHVja0Fzc2V0SWQEBmxhc3RJZAkBC3ZhbHVlT3JFbHNlAgkAmggCBRJ0b3VybmFtZW50Q29udHJhY3QFDWxhc3RUb3VySWRLZXkAAAQLY3VyTG9jYXRpb24JALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBCQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQFD0RFRkFVTFRMT0NBVElPTgIBXwQDbm93CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQFdERhdGEJAQtnZXRUb3VyRGF0YQIFEnRvdXJuYW1lbnRDb250cmFjdAUGbGFzdElkBAZzdGF0aWMJAJEDAgUFdERhdGEFCWlkeFN0YXRpYwQHZHluYW1pYwkAkQMCBQV0RGF0YQUKaWR4RHluYW1pYwMJAQIhPQIJAJEDAgULY3VyTG9jYXRpb24FCmxvY0lkeFR5cGUCAVQHAwMDCQAAAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFC2N1ckxvY2F0aW9uBQ9sb2NJZHhDb250aW5lbnQFBmxhc3RJZAkAAAIJAJEDAgUHZHluYW1pYwUOdER5bmFtaWNTdGF0dXMCCklOUFJPR1JFU1MHCQBmAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBnN0YXRpYwUKdFN0YXRpY0VuZAUDbm93BwkAAgECKllvdXIgZHVjayBpcyB0YWtpbmcgcGFydCBpbiB0aGUgdG91cm5hbWVudAkBCWFzQm9vbGVhbgEJAPwHBAUEdGhpcwIWZXhpdFRvdXJuYW1lbnRJbnRlcm5hbAkAzAgCBQtkdWNrQXNzZXRJZAUDbmlsBQNuaWwBDWNoZWNrRGVsaXZlcnkBC2R1Y2tBc3NldElkBAtjdXJMb2NhdGlvbgkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAUPREVGQVVMVExPQ0FUSU9OAgFfBANub3cIBQlsYXN0QmxvY2sJdGltZXN0YW1wAwkBAiE9AgkAkQMCBQtjdXJMb2NhdGlvbgUKbG9jSWR4VHlwZQIBRAcECXN0YXJ0VGltZQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFC2N1ckxvY2F0aW9uBQ9sb2NJZHhDb250aW5lbnQECGRpc3RhbmNlCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgULY3VyTG9jYXRpb24FCGxvY0lkeElkAwMJAGYCCQBkAgUJc3RhcnRUaW1lBRJURU5fTUlOVVRFU19NSUxMSVMFA25vdwkAZgIAAQUIZGlzdGFuY2UHCQACAQIgWW91ciBkdWNrIGlzIG9uIGRlbGl2ZXJ5IG1pc3Npb24JAQlhc0Jvb2xlYW4BCQD8BwQFBHRoaXMCFGV4aXREZWxpdmVyeUludGVybmFsCQDMCAIFC2R1Y2tBc3NldElkBQNuaWwFA25pbAESZXhpdERlbGl2ZXJ5Q29tbW9uBAtkdWNrQXNzZXRJZAVjaGVjawVuZXdIUAVzY29yZQQLY3VyTG9jYXRpb24JALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBCQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQFD0RFRkFVTFRMT0NBVElPTgIBXwQDbm93CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQJc3RhcnRUaW1lCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgULY3VyTG9jYXRpb24FD2xvY0lkeENvbnRpbmVudAQIZGlzdGFuY2UJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQtjdXJMb2NhdGlvbgUIbG9jSWR4SWQEBW93bmVyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBEGtleUR1Y2tJZFRvT3duZXIBBQtkdWNrQXNzZXRJZAIUTkZUIGR1Y2sgaXMgb3JwaGFuZWQECWhlYWx0aEtleQkBDWtleUR1Y2tIZWFsdGgBBQtkdWNrQXNzZXRJZAQJY3VySGVhbHRoCQERQGV4dHJOYXRpdmUoMTA1NSkBBQloZWFsdGhLZXkEDm91dGNvbWVBY3Rpb25zAwMJAGYCBQhkaXN0YW5jZQAABgMDBQVjaGVjawkAZgIFBXNjb3JlAAAHCQBmAgUFbmV3SFAAAAcEBnJld2FyZAkA/AcEBQ9lY29ub215Q29udHJhY3QCEnNlbmREZWxpdmVyeVJld2FyZAkAzAgCBQVvd25lcgUDbmlsBQNuaWwDCQAAAgUGcmV3YXJkBQZyZXdhcmQECGNvdW50S2V5CQEUa2V5VXNlckRlbGl2ZXJ5Q291bnQBBQVvd25lcgkAzAgCCQEMSW50ZWdlckVudHJ5AgUIY291bnRLZXkJAGQCCQELdmFsdWVPckVsc2UCCQCfCAEFCGNvdW50S2V5AAAAAQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBFmtleVVzZXJMYXN0RGVsaXZlcnlEYXkBBQVvd25lcgkAaQIFCXN0YXJ0VGltZQUJREFZTUlMTElTBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4DAwMFBWNoZWNrCQBmAgUFbmV3SFAAAAcJAGYCCQBkAgUJc3RhcnRUaW1lBRJURU5fTUlOVVRFU19NSUxMSVMFA25vdwcJAAIBAiZZb3VyIGR1Y2sgaXMgc3RpbGwgb24gZGVsaXZlcnkgbWlzc2lvbgQLbG9ja2VkVG90YWwJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPZWNvbm9teUNvbnRyYWN0BRFkZWxpdmVyeUxvY2tlZEtleQAABAZ1bmxvY2sJAPwHBAUPZWNvbm9teUNvbnRyYWN0AhR1cGRhdGVEZWxpdmVyeUxvY2tlZAkAzAgCCQBlAgULbG9ja2VkVG90YWwFFU1JTl9VU0RUX0ZFRV9ERUxJVkVSWQUDbmlsBQNuaWwDCQAAAgUGdW5sb2NrBQZ1bmxvY2sDAwMFBWNoZWNrCQBnAgAABQVuZXdIUAcGCQBnAgAABQljdXJIZWFsdGgFA25pbAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBFmtleURlbGl2ZXJ5RGVsYXlCeUR1Y2sBBQtkdWNrQXNzZXRJZAkAZAIFCXN0YXJ0VGltZQUTREVMSVZFUllfUFVOSVNITUVOVAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBA1zYXZlZExvY2F0aW9uCQERQGV4dHJOYXRpdmUoMTA1OCkBCQEQa2V5U2F2ZWRMb2NhdGlvbgEFC2R1Y2tBc3NldElkCQCVCgMFDm91dGNvbWVBY3Rpb25zCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAUNc2F2ZWRMb2NhdGlvbgUDbmlsBQ1zYXZlZExvY2F0aW9uAQ1tZXJnZUludGVybmFsBgtuZXdMYW5kU2l6ZQhuZXdMZXZlbAdmb3JtdWxhBGFkZHIMbGFuZEFzc2V0SWRzB25lZWRNYXQEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUEYWRkcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAMJAQ9jaGVja1RvdXJuYW1lbnQBBQtkdWNrQXNzZXRJZAkAAgECHW1lcmdlSW50ZXJuYWxfY2hlY2tUb3VybmFtZW50AwkBDWNoZWNrRGVsaXZlcnkBBQtkdWNrQXNzZXRJZAkAAgECG21lcmdlSW50ZXJuYWxfY2hlY2tEZWxpdmVyeQoBCmNoZWNrTWVyZ2UCA2FjYwtsYW5kQXNzZXRJZAQFYXNzZXQJAQV2YWx1ZQEJAOwHAQkA2QQBBQtsYW5kQXNzZXRJZAQHdGltZUtleQkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAQJc2F2ZWRUaW1lCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ8IAQUHdGltZUtleQkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAg4gaXMgbm90IHN0YWtlZAQFb3duZXIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEVa2V5TGFuZEFzc2V0SWRUb093bmVyAQULbGFuZEFzc2V0SWQJAKwCAgkArAICAgRORlQgCAUFYXNzZXQEbmFtZQIMIGlzIG9ycGhhbmVkAwkBAiE9AgUFb3duZXIFBGFkZHIJAAIBCQCsAgIFCkxBTkRQUkVGSVgCDSBpcyBub3QgeW91cnMEAWQJALUJAggFBWFzc2V0C2Rlc2NyaXB0aW9uAgFfBAljb250aW5lbnQJAJEDAgUBZAUMcmVjQ29udGluZW50AwMJAQIhPQIIBQNhY2MCXzMCAAkBAiE9AggFA2FjYwJfMwUJY29udGluZW50BwkAAgECLkxhbmRzIHNob3VsZCBiZSBvbiB0aGUgc2FtZSBjb250aW5lbnQgdG8gbWVyZ2UECGxhbmRTaXplCQCRAwIFAWQFC3JlY0xhbmRTaXplBAdzaXplc0luCAUDYWNjAl8xBAFpCQETdmFsdWVPckVycm9yTWVzc2FnZQIJALMJAgUHc2l6ZXNJbgUIbGFuZFNpemUCJ1lvdSBoYXZlbid0IHBhc3NlZCBhbGwgdGhlIGxhbmRzIG5lZWRlZAQIc2l6ZXNPdXQJAKwCAgkArwICBQdzaXplc0luBQFpCQCwAgIFB3NpemVzSW4JAGQCBQFpAAEEBnBpZWNlcwkBD251bVBpZWNlc0J5U2l6ZQEFCGxhbmRTaXplBARhcnRzCQBkAggFA2FjYwJfMgkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEga2V5TGFuZEFydFN0YXR1c0J5VHlwZUFuZEFzc2V0SWQCBQpBUlRQUkVTQUxFBQtsYW5kQXNzZXRJZAAABAppbmZyYUxldmVsCQELdmFsdWVPckVsc2UCCQCfCAEJARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQULbGFuZEFzc2V0SWQAAAQIcmVxTGV2ZWwEByRtYXRjaDAFCGxhbmRTaXplAwkAAAICAVMFByRtYXRjaDAAAwMJAAACAgFNBQckbWF0Y2gwAAQDCQAAAgIBTAUHJG1hdGNoMAAFAwkAAAICAlhMBQckbWF0Y2gwAAYJAAIBAhpPbmx5IFMsIE0sIEwsIFhMIGNhbiBtZXJnZQMJAQIhPQIFCmluZnJhTGV2ZWwFCHJlcUxldmVsCQACAQIiQWxsIGxhbmRzIHNob3VsZCBiZSBtYXhlZCB0byBtZXJnZQQHbGFuZE51bQkAkQMCBQFkBQpyZWNMYW5kTnVtBA10ZXJyYWluQ291bnRzCQENY291bnRUZXJyYWlucwEJAJEDAgUBZAULcmVjVGVycmFpbnMECWRlbHRhVGltZQkAZQIIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQlzYXZlZFRpbWUDCQBmAgAABQlkZWx0YVRpbWUJAAIBCQCsAgIJAKwCAgkArAICAiZTYXZlZCB0aW1lc3RhbXAgaXMgaW4gZnV0dXJlLCBzYXZlZCA9IAkApAMBBQlzYXZlZFRpbWUCDCwgY3VycmVudCA9IAkApAMBCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQWZGFpbHlQcm9kdWN0aW9uQnlQaWVjZQkBDGFwcGx5Qm9udXNlcwIFC2xhbmRBc3NldElkBQZwaWVjZXMECWxhbmRJbmRleAkAaQIFBnBpZWNlcwUFU1NJWkUEBWJwUmVzCQEGYWRkUmVzBQkAtQkCCAUDYWNjAl80AgFfBQ10ZXJyYWluQ291bnRzBQlkZWx0YVRpbWUFCWxhbmRJbmRleAUWZGFpbHlQcm9kdWN0aW9uQnlQaWVjZQQFcHJvcHMJARl1cGRhdGVQcm9wb3J0aW9uc0ludGVybmFsBAgFA2FjYwJfNgUNdGVycmFpbkNvdW50cwUJbGFuZEluZGV4AP///////////wEEBmNQcm9wcwkBGXVwZGF0ZVByb3BvcnRpb25zSW50ZXJuYWwECAUDYWNjA18xMAUNdGVycmFpbkNvdW50cwUJbGFuZEluZGV4AP///////////wEEC3N1bVRlcnJhaW5zCQEZdXBkYXRlUHJvcG9ydGlvbnNJbnRlcm5hbAQIBQNhY2MCXzkFDXRlcnJhaW5Db3VudHMFCWxhbmRJbmRleAABBAVsYW5kcwgFA2FjYwJfNwQDaWR4CQDPCAIFBWxhbmRzBQtsYW5kQXNzZXRJZAMJAQEhAQkBCWlzRGVmaW5lZAEFA2lkeAkAAgEJAKwCAgIgWW91ciBzdGFrZWQgbGFuZHMgZG9uJ3QgY29udGFpbiAFC2xhbmRBc3NldElkBAljdXN0b21LZXkJARprZXlMYW5kQXNzZXRJZFRvQ3VzdG9tTmFtZQEFC2xhbmRBc3NldElkBApjdXN0b21OYW1lCQELdmFsdWVPckVsc2UCCQCiCAEFCWN1c3RvbUtleQIACQCcCgoFCHNpemVzT3V0BQRhcnRzBQljb250aW5lbnQFBWJwUmVzCQDOCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCAUDYWNjAl81CQELRGVsZXRlRW50cnkBCQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFC2xhbmRBc3NldElkCQELRGVsZXRlRW50cnkBCQEia2V5U3Rha2VkVGltZUJ5VHlwZUFzc2V0SWRBbmRPd25lcgMFCkxBTkRQUkVGSVgFC2xhbmRBc3NldElkBQRhZGRyCQELRGVsZXRlRW50cnkBCQEQa2V5TGFuZFRvQXNzZXRJZAEFB2xhbmROdW0JAQtEZWxldGVFbnRyeQEJARVrZXlMYW5kQXNzZXRJZFRvT3duZXIBBQtsYW5kQXNzZXRJZAkBC0RlbGV0ZUVudHJ5AQkBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAkBC0RlbGV0ZUVudHJ5AQkBHmtleUluZnJhTGV2ZWxCeUFzc2V0SWRBbmRPd25lcgIFC2xhbmRBc3NldElkBQRhZGRyCQELRGVsZXRlRW50cnkBCQEga2V5TGFuZEFydFN0YXR1c0J5VHlwZUFuZEFzc2V0SWQCBQpBUlRQUkVTQUxFBQtsYW5kQXNzZXRJZAkBC0RlbGV0ZUVudHJ5AQkBEWtleUxhbmROdW1Ub093bmVyAQUHbGFuZE51bQkBC0RlbGV0ZUVudHJ5AQkBEmtleVdhcmVob3VzZUJ5TGFuZAEFC2xhbmRBc3NldElkCQELRGVsZXRlRW50cnkBBQljdXN0b21LZXkJAQRCdXJuAgkA2QQBBQtsYW5kQXNzZXRJZAABAwkBAiE9AgUKY3VzdG9tTmFtZQIACQDMCAIJAQtEZWxldGVFbnRyeQEJARprZXlMYW5kQ3VzdG9tTmFtZVRvQXNzZXRJZAEFCmN1c3RvbU5hbWUFA25pbAUDbmlsBQVwcm9wcwkA0QgCBQVsYW5kcwkBBXZhbHVlAQUDaWR4CQBkAggFA2FjYwJfOAUGcGllY2VzBQtzdW1UZXJyYWlucwUGY1Byb3BzBAVicEtleQkBEWtleUJhY2twYWNrQnlEdWNrAQULZHVja0Fzc2V0SWQEC2N1cnJlbnRQYWNrCQELZ2V0QmFja3BhY2sBBQVicEtleQQIcHJvcExpc3QJALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBCQERa2V5UmVzUHJvcG9ydGlvbnMAAgswXzBfMF8wXzBfMAIBXwQIbGFuZHNLZXkJARVrZXlTdGFrZWRMYW5kc0J5T3duZXIBBQRhZGRyBAhsYW5kc1N0cgkAoggBBQhsYW5kc0tleQQHbGFuZHNJbgMJAQlpc0RlZmluZWQBBQhsYW5kc1N0cgkAvQkCCQEFdmFsdWUBBQhsYW5kc1N0cgIBXwUDbmlsBAVjb250MAkAkQMCCQC1CQIICQEFdmFsdWUBCQDsBwEJANkEAQkAkQMCBQxsYW5kQXNzZXRJZHMAAAtkZXNjcmlwdGlvbgIBXwUMcmVjQ29udGluZW50BAljb250UHJvcHMJALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBCQEWa2V5UmVzVHlwZXNCeUNvbnRpbmVudAEFBWNvbnQwAgswXzBfMF8wXzBfMAIBXwQBcgoAAiRsBQxsYW5kQXNzZXRJZHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCcCgoFB2Zvcm11bGEAAAIACQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeFJlcwUDbmlsBQhwcm9wTGlzdAUHbGFuZHNJbgAACQC1CQICCzBfMF8wXzBfMF8wAgFfBQljb250UHJvcHMKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBCmNoZWNrTWVyZ2UCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDUJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFBAljb250aW5lbnQIBQFyAl8zBAxjb250aW5lbnRJZHgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAzwgCBQpjb250aW5lbnRzBQljb250aW5lbnQJAKwCAgITVW5rbm93biBjb250aW5lbnQ6IAUJY29udGluZW50BAh0ZXJyYWlucwkBE2dlblRlcnJhaW5zRm9yTWVyZ2UCCAUBcgJfOQkAaQIJAQ9udW1QaWVjZXNCeVNpemUBBQtuZXdMYW5kU2l6ZQUFU1NJWkUEB2ZyZWVOdW0JAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBEmtleU5leHRGcmVlTGFuZE51bQAJAGQCBQ9QUkVTQUxFTlVNTEFORFMAAQQKbmV3TGFuZE51bQkApAMBBQdmcmVlTnVtBAVpc3N1ZQkAwggFCQEHbmZ0TmFtZQIFCm5ld0xhbmROdW0FC25ld0xhbmRTaXplCQC5CQIJAMwIAgUKbmV3TGFuZE51bQkAzAgCBQtuZXdMYW5kU2l6ZQkAzAgCBQh0ZXJyYWlucwkAzAgCBQljb250aW5lbnQFA25pbAIBXwABAAAHBAdhc3NldElkCQC4CAEFBWlzc3VlBA5uZXdMYW5kQXNzZXRJZAkA2AQBBQdhc3NldElkBAZuZXdNYXQJALkJAgkBEXN1YnRyYWN0TWF0ZXJpYWxzAwkAZgIFB25lZWRNYXQAAAkAtQkCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeE1hdAIBXwUHbmVlZE1hdAIBXwQJcGllY2VzS2V5CQEWa2V5U3Rha2VkUGllY2VzQnlPd25lcgEFBGFkZHIEDHN0YWtlZFBpZWNlcwkBC3ZhbHVlT3JFbHNlAgkAnwgBBQlwaWVjZXNLZXkAAAkAlAoCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCAUBcgJfNQMJAGYCCQCQAwEIBQFyAl83AAAJAQtTdHJpbmdFbnRyeQIFCGxhbmRzS2V5CQC7CQIIBQFyAl83AgFfCQELRGVsZXRlRW50cnkBBQhsYW5kc0tleQkBDEludGVnZXJFbnRyeQIFCXBpZWNlc0tleQMJAGYCCAUBcgJfOAUMc3Rha2VkUGllY2VzAAAJAGUCBQxzdGFrZWRQaWVjZXMIBQFyAl84CQEMSW50ZWdlckVudHJ5AgkBEmtleU5leHRGcmVlTGFuZE51bQAJAGQCBQdmcmVlTnVtAAEFBWlzc3VlCQELU3RyaW5nRW50cnkCCQEQa2V5TGFuZFRvQXNzZXRJZAEFCm5ld0xhbmROdW0FDm5ld0xhbmRBc3NldElkCQELU3RyaW5nRW50cnkCCQEVa2V5TGFuZEFzc2V0SWRUb093bmVyAQUObmV3TGFuZEFzc2V0SWQFBGFkZHIJAQtTdHJpbmdFbnRyeQIJARFrZXlMYW5kTnVtVG9Pd25lcgEFCm5ld0xhbmROdW0FBGFkZHIJAQxJbnRlZ2VyRW50cnkCCQEga2V5TGFuZEFydFN0YXR1c0J5VHlwZUFuZEFzc2V0SWQCBQpBUlRQUkVTQUxFBQ5uZXdMYW5kQXNzZXRJZAgFAXICXzIJAQxJbnRlZ2VyRW50cnkCCQEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEFDm5ld0xhbmRBc3NldElkBQhuZXdMZXZlbAkBDEludGVnZXJFbnRyeQIJAR5rZXlJbmZyYUxldmVsQnlBc3NldElkQW5kT3duZXICBQ5uZXdMYW5kQXNzZXRJZAUEYWRkcgUIbmV3TGV2ZWwJAQtTdHJpbmdFbnRyeQIFBWJwS2V5CQC5CQIJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUKYnBJZHhMZXZlbAkAzAgCCAUBcgJfNAkAzAgCBQZuZXdNYXQJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kBQNuaWwCAToJAQtTdHJpbmdFbnRyeQIJARFrZXlSZXNQcm9wb3J0aW9ucwAJALkJAggFAXICXzYCAV8JAQtTdHJpbmdFbnRyeQIJARZrZXlSZXNUeXBlc0J5Q29udGluZW50AQUJY29udGluZW50CQC5CQIIBQFyA18xMAIBXwkBC1N0cmluZ0VudHJ5AgkBD2tleUR1Y2tMb2NhdGlvbgEFC2R1Y2tBc3NldElkCQC5CQIJAMwIAgUJY29udGluZW50CQDMCAICAUwJAMwIAgUObmV3TGFuZEFzc2V0SWQFA25pbAIBXwkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQUEYWRkcgABBQdhc3NldElkBQ5uZXdMYW5kQXNzZXRJZAEDczJtAgRhZGRyDGxhbmRBc3NldElkcwkBDW1lcmdlSW50ZXJuYWwGAgFNAAMCBFNTU1MFBGFkZHIFDGxhbmRBc3NldElkcwAAAQNtMmwCBGFkZHIMbGFuZEFzc2V0SWRzCQENbWVyZ2VJbnRlcm5hbAYCAUwABAIDU01NBQRhZGRyBQxsYW5kQXNzZXRJZHMJAGgCBRFJbmZyYVVwZ3JhZGVDb3N0UwAEAQRsMnhsAgRhZGRyDGxhbmRBc3NldElkcwkBDW1lcmdlSW50ZXJuYWwGAgJYTAAFAgVTU1NNTAUEYWRkcgUMbGFuZEFzc2V0SWRzCQBoAgURSW5mcmFVcGdyYWRlQ29zdFMALwEGeGwyeHhsAgRhZGRyDGxhbmRBc3NldElkcwkBDW1lcmdlSW50ZXJuYWwGAgNYWEwABgIDTFhMBQRhZGRyBQxsYW5kQXNzZXRJZHMJAGgCBRFJbmZyYVVwZ3JhZGVDb3N0UwA2AQttZXJnZUNvbW1vbgIEYWRkcgxsYW5kQXNzZXRJZHMEByRtYXRjaDAJAJADAQUMbGFuZEFzc2V0SWRzAwkAAAIABAUHJG1hdGNoMAkBA3MybQIFBGFkZHIFDGxhbmRBc3NldElkcwMJAAACAAMFByRtYXRjaDAJAQNtMmwCBQRhZGRyBQxsYW5kQXNzZXRJZHMDCQAAAgAFBQckbWF0Y2gwCQEEbDJ4bAIFBGFkZHIFDGxhbmRBc3NldElkcwMJAAACAAIFByRtYXRjaDAJAQZ4bDJ4eGwCBQRhZGRyBQxsYW5kQXNzZXRJZHMJAAIBAg1Vbmtub3duIG1lcmdlARVjaGVja091dGRhdGVkRGVsaXZlcnkBCHVzZXJBZGRyBARkdWNrCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFCHVzZXJBZGRyAwkBCWlzRGVmaW5lZAEFBGR1Y2sEC2R1Y2tBc3NldElkCQEFdmFsdWUBBQRkdWNrBAZsb2NLZXkJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAQDbG9jCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAKIIAQUGbG9jS2V5BQ9ERUZBVUxUTE9DQVRJT04CAV8ECXN0YXJ0VGltZQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA2xvYwUPbG9jSWR4Q29udGluZW50AwMJAQIhPQIJAJEDAgUDbG9jBQpsb2NJZHhUeXBlAgFEBgkAZgIJAGQCBQlzdGFydFRpbWUFElRFTl9NSU5VVEVTX01JTExJUwgFCWxhc3RCbG9jawl0aW1lc3RhbXAFA25pbAQJaGVhbHRoS2V5CQENa2V5RHVja0hlYWx0aAEFC2R1Y2tBc3NldElkAwkAZgIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNsb2MFCGxvY0lkeElkAAAEBnJld2FyZAkA/AcEBQ9lY29ub215Q29udHJhY3QCEnNlbmREZWxpdmVyeVJld2FyZAkAzAgCBQh1c2VyQWRkcgUDbmlsBQNuaWwDCQAAAgUGcmV3YXJkBQZyZXdhcmQFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAzQgCBAtsb2NrZWRUb3RhbAkBC3ZhbHVlT3JFbHNlAgkAmggCBQ9lY29ub215Q29udHJhY3QFEWRlbGl2ZXJ5TG9ja2VkS2V5AAAEBnVubG9jawkA/AcEBQ9lY29ub215Q29udHJhY3QCFHVwZGF0ZURlbGl2ZXJ5TG9ja2VkCQDMCAIJAGUCBQtsb2NrZWRUb3RhbAUVTUlOX1VTRFRfRkVFX0RFTElWRVJZBQNuaWwFA25pbAMJAAACBQZ1bmxvY2sFBnVubG9jawMJAGcCAAAJARFAZXh0ck5hdGl2ZSgxMDU1KQEFCWhlYWx0aEtleQUDbmlsBApwdW5pc2htZW50CQD8BwQFBHRoaXMCC3NhdmVJbnRlZ2VyCQDMCAIJARZrZXlEZWxpdmVyeURlbGF5QnlEdWNrAQULZHVja0Fzc2V0SWQJAMwIAgkAZAIFCXN0YXJ0VGltZQUTREVMSVZFUllfUFVOSVNITUVOVAUDbmlsBQNuaWwDCQAAAgUKcHVuaXNobWVudAUKcHVuaXNobWVudAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQELU3RyaW5nRW50cnkCBQZsb2NLZXkJARFAZXh0ck5hdGl2ZSgxMDU4KQEJARBrZXlTYXZlZExvY2F0aW9uAQULZHVja0Fzc2V0SWQFA25pbAEGcHJvbG9nAQFpAwMJAQIhPQIIBQFpDG9yaWdpbkNhbGxlcgUMcmVzdENvbnRyYWN0CQELdmFsdWVPckVsc2UCCQCgCAEJAQprZXlCbG9ja2VkAAcHCQACAQIfQ29udHJhY3RzIGFyZSB1bmRlciBtYWludGVuYW5jZQQIdXNlckFkZHIJAKUIAQgFAWkMb3JpZ2luQ2FsbGVyCQDNCAIJARVjaGVja091dGRhdGVkRGVsaXZlcnkBBQh1c2VyQWRkcgkBC1N0cmluZ0VudHJ5AgkBEWtleUxhc3RUeElkQnlVc2VyAQUIdXNlckFkZHIJANgEAQgFAWkNdHJhbnNhY3Rpb25JZAEMcHJvbG9nRmxpZ2h0AQFpAwMJAQIhPQIIBQFpDG9yaWdpbkNhbGxlcgUMcmVzdENvbnRyYWN0CQELdmFsdWVPckVsc2UCCQCgCAEJAQprZXlCbG9ja2VkAAcHCQACAQIfQ29udHJhY3RzIGFyZSB1bmRlciBtYWludGVuYW5jZQkAzAgCCQELU3RyaW5nRW50cnkCCQERa2V5TGFzdFR4SWRCeVVzZXIBCQClCAEIBQFpDG9yaWdpbkNhbGxlcgkA2AQBCAUBaQ10cmFuc2FjdGlvbklkBQNuaWwuAWkBDWNvbnN0cnVjdG9yVjEBCHJlc3RBZGRyAwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQIRUGVybWlzc2lvbiBkZW5pZWQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDmtleVJlc3RBZGRyZXNzAAUIcmVzdEFkZHIFA25pbAFpAQtzYXZlSW50ZWdlcgIDa2V5BmFtb3VudAMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECIHNhdmVJbnRlZ2VyIGlzIG5vdCBwdWJsaWMgbWV0aG9kCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQNrZXkFBmFtb3VudAUDbmlsAWkBCnNldEJsb2NrZWQBCWlzQmxvY2tlZAMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECEXBlcm1pc3Npb24gZGVuaWVkCQDMCAIJAQxCb29sZWFuRW50cnkCCQEKa2V5QmxvY2tlZAAFCWlzQmxvY2tlZAUDbmlsAWkBCXN0YWtlTGFuZAAEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQIcRXhhY3RseSBvbmUgcGF5bWVudCByZXF1aXJlZAQDcG10CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAEB2Fzc2V0SWQJAQV2YWx1ZQEIBQNwbXQHYXNzZXRJZAQHYWRkcmVzcwkApQgBCAUBaQZjYWxsZXIDCQECIT0CCAUDcG10BmFtb3VudAABCQACAQkArAICCQCsAgICBE5GVCAFCkxBTkRQUkVGSVgCJCB0b2tlbiBzaG91bGQgYmUgYXR0YWNoZWQgYXMgcGF5bWVudAQFYXNzZXQJAQV2YWx1ZQEJAOwHAQUHYXNzZXRJZAMJAQIhPQIIBQVhc3NldAZpc3N1ZXIFBHRoaXMJAAIBAhdVbmtub3duIGlzc3VlciBvZiB0b2tlbgMJAQEhAQkBCGNvbnRhaW5zAggFBWFzc2V0BG5hbWUFCkxBTkRQUkVGSVgJAAIBCQCsAgIJAKwCAgIJT25seSBORlQgBQpMQU5EUFJFRklYAhQgdG9rZW5zIGFyZSBhY2NlcHRlZAQLbGFuZE51bVNpemUJALACAggFBWFzc2V0BG5hbWUABAQHbGFuZE51bQMJAQhjb250YWlucwIFC2xhbmROdW1TaXplAgNYWEwJALMCAgULbGFuZE51bVNpemUAAwMJAQhjb250YWlucwIFC2xhbmROdW1TaXplAgJYTAkAswICBQtsYW5kTnVtU2l6ZQACCQCzAgIFC2xhbmROdW1TaXplAAEDCQEBIQEJAQlpc0RlZmluZWQBCQC2CQEFB2xhbmROdW0JAAIBCQCsAgICHkNhbm5vdCBwYXJzZSBsYW5kIG51bWJlciBmcm9tIAgFBWFzc2V0BG5hbWUEC2xhbmRBc3NldElkCQDYBAEFB2Fzc2V0SWQEB3RpbWVLZXkJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQULbGFuZEFzc2V0SWQDCQEJaXNEZWZpbmVkAQkAnwgBBQd0aW1lS2V5CQACAQkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAhIgaXMgYWxyZWFkeSBzdGFrZWQEAWQJALUJAggFBWFzc2V0C2Rlc2NyaXB0aW9uAgFfBA10ZXJyYWluQ291bnRzCQENY291bnRUZXJyYWlucwEJAJEDAgUBZAULcmVjVGVycmFpbnMEBnBpZWNlcwkBD251bVBpZWNlc0J5U2l6ZQEJAJEDAgUBZAULcmVjTGFuZFNpemUECWxhbmRJbmRleAkAaQIFBnBpZWNlcwUFU1NJWkUEBXByb3BzCQERdXBkYXRlUHJvcG9ydGlvbnMDBQ10ZXJyYWluQ291bnRzBQlsYW5kSW5kZXgAAQQMcmVzQnlDb250S2V5CQEWa2V5UmVzVHlwZXNCeUNvbnRpbmVudAEJAJEDAgUBZAUMcmVjQ29udGluZW50BAljb250UHJvcHMJALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBBQxyZXNCeUNvbnRLZXkCCzBfMF8wXzBfMF8wAgFfBBB1cGRhdGVkQ29udFByb3BzCQC5CQIJARl1cGRhdGVQcm9wb3J0aW9uc0ludGVybmFsBAUJY29udFByb3BzBQ10ZXJyYWluQ291bnRzBQlsYW5kSW5kZXgAAQIBXwQIbGFuZHNLZXkJARVrZXlTdGFrZWRMYW5kc0J5T3duZXIBBQdhZGRyZXNzBAhsYW5kc1N0cgkAoggBBQhsYW5kc0tleQQFbGFuZHMDCQEJaXNEZWZpbmVkAQUIbGFuZHNTdHIJAL0JAgkBBXZhbHVlAQUIbGFuZHNTdHICAV8FA25pbAMJAQ9jb250YWluc0VsZW1lbnQCBQVsYW5kcwULbGFuZEFzc2V0SWQJAAIBCQCsAgICIllvdXIgc3Rha2VkIGxhbmRzIGFscmVhZHkgY29udGFpbiAFC2xhbmRBc3NldElkAwkAZwIJAJADAQUFbGFuZHMFGE1BWF9MQU5EU19TVEFLRURfQllfVVNFUgkAAgEJAKwCAgkArAICAhlZb3VyIGFscmVhZHkgc3Rha2VkIG1heCAoCQCkAwEFGE1BWF9MQU5EU19TVEFLRURfQllfVVNFUgIHKSBsYW5kcwQKaW5mcmFMZXZlbAkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEFC2xhbmRBc3NldElkAAAECXBpZWNlc0tleQkBFmtleVN0YWtlZFBpZWNlc0J5T3duZXIBBQdhZGRyZXNzBAlvbGRQaWVjZXMJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJcGllY2VzS2V5AAAECXdsZ1Jlc3VsdAkA/AcEBQt3bGdDb250cmFjdAISb25TdGFrZVVuc3Rha2VMYW5kCQDMCAIFB2FkZHJlc3MFA25pbAUDbmlsCQCUCgIJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUHdGltZUtleQgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJASJrZXlTdGFrZWRUaW1lQnlUeXBlQXNzZXRJZEFuZE93bmVyAwUKTEFORFBSRUZJWAULbGFuZEFzc2V0SWQFB2FkZHJlc3MIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQtTdHJpbmdFbnRyeQIFCGxhbmRzS2V5CQC7CQIJAM0IAgUFbGFuZHMFC2xhbmRBc3NldElkAgFfCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlwaWVjZXNLZXkJAGQCBQlvbGRQaWVjZXMFBnBpZWNlcwkAzAgCCQELU3RyaW5nRW50cnkCCQEVa2V5TGFuZEFzc2V0SWRUb093bmVyAQULbGFuZEFzc2V0SWQFB2FkZHJlc3MJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEWtleUxhbmROdW1Ub093bmVyAQUHbGFuZE51bQUHYWRkcmVzcwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBHmtleUluZnJhTGV2ZWxCeUFzc2V0SWRBbmRPd25lcgIFC2xhbmRBc3NldElkBQdhZGRyZXNzBQppbmZyYUxldmVsCQDMCAIJAQtTdHJpbmdFbnRyeQIJARFrZXlSZXNQcm9wb3J0aW9ucwAFBXByb3BzCQDMCAIJAQtTdHJpbmdFbnRyeQIFDHJlc0J5Q29udEtleQUQdXBkYXRlZENvbnRQcm9wcwUDbmlsBQ1wcm9sb2dBY3Rpb25zBQl3bGdSZXN1bHQBaQELdW5zdGFrZUxhbmQBDWxhbmRBc3NldElkSW4EDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQEBGFkZHIJAKUIAQgFAWkGY2FsbGVyBAFjCQEUY2hlY2tDbGFpbUNvbmRpdGlvbnMDBQRhZGRyBQ1jbGFpbU1vZGVEdWNrBQ1sYW5kQXNzZXRJZEluBAtsYW5kQXNzZXRJZAgFAWMCXzIEAWQIBQFjAl8zBAhsYW5kc0tleQkBFWtleVN0YWtlZExhbmRzQnlPd25lcgEFBGFkZHIEDXRlcnJhaW5Db3VudHMJAQ1jb3VudFRlcnJhaW5zAQkAkQMCBQFkBQtyZWNUZXJyYWlucwQGcGllY2VzCQEPbnVtUGllY2VzQnlTaXplAQkAkQMCBQFkBQtyZWNMYW5kU2l6ZQQJbGFuZEluZGV4CQBpAgUGcGllY2VzBQVTU0laRQQFcHJvcHMJARF1cGRhdGVQcm9wb3J0aW9ucwMFDXRlcnJhaW5Db3VudHMFCWxhbmRJbmRleAD///////////8BBAxyZXNCeUNvbnRLZXkJARZrZXlSZXNUeXBlc0J5Q29udGluZW50AQkAkQMCBQFkBQxyZWNDb250aW5lbnQECWNvbnRQcm9wcwkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEFDHJlc0J5Q29udEtleQILMF8wXzBfMF8wXzACAV8EEHVwZGF0ZWRDb250UHJvcHMJALkJAgkBGXVwZGF0ZVByb3BvcnRpb25zSW50ZXJuYWwEBQljb250UHJvcHMFDXRlcnJhaW5Db3VudHMFCWxhbmRJbmRleAD///////////8BAgFfBAtjbGFpbVJlc3VsdAkBCGNsYWltQWxsBAUEYWRkcgULbGFuZEFzc2V0SWQFBnBpZWNlcwUNY2xhaW1Nb2RlRHVjawQFbGFuZHMJAL0JAgkBC3ZhbHVlT3JFbHNlAgkAoggBBQhsYW5kc0tleQIAAgFfBANpZHgJAM8IAgUFbGFuZHMFC2xhbmRBc3NldElkAwkBASEBCQEJaXNEZWZpbmVkAQUDaWR4CQACAQkArAICAiBZb3VyIHN0YWtlZCBsYW5kcyBkb24ndCBjb250YWluIAULbGFuZEFzc2V0SWQEA25vdwgFCWxhc3RCbG9jawl0aW1lc3RhbXAEDmdvdlJlbGVhc2VUaW1lCQELdmFsdWVPckVsc2UCCQCaCAIFC2dvdkNvbnRyYWN0CQEVa2V5VXNlckd3bFJlbGVhc2VUaW1lAQUEYWRkcgAAAwkAZwIFDmdvdlJlbGVhc2VUaW1lBQNub3cJAAIBCQCsAgICOVlvdXIgZ1dMIGFyZSB0YWtpbmcgcGFydCBpbiB2b3RpbmcsIGNhbm5vdCB1bnN0YWtlIHVudGlsIAkApAMBBQ5nb3ZSZWxlYXNlVGltZQQOYXJiUmVsZWFzZVRpbWUJAGQCCQELdmFsdWVPckVsc2UCCQCaCAIFC3dsZ0NvbnRyYWN0CQEUa2V5TGFzdEFyYlRpbWVCeVVzZXIBBQRhZGRyAAAFDmFyYml0cmFnZURlbGF5AwkAZgIFDmFyYlJlbGVhc2VUaW1lBQNub3cJAAIBCQCsAgICP1lvdXIgc3Rha2VkIGxhbmRzIHRvb2sgcGFydCBpbiBhcmJpdHJhZ2UsIGNhbm5vdCB1bnN0YWtlIHVudGlsIAkApAMBBQ5hcmJSZWxlYXNlVGltZQQJcGllY2VzS2V5CQEWa2V5U3Rha2VkUGllY2VzQnlPd25lcgEFBGFkZHIEDHN0YWtlZFBpZWNlcwkBC3ZhbHVlT3JFbHNlAgkAnwgBBQlwaWVjZXNLZXkAAAQJbmV3UGllY2VzAwkAZgIFBnBpZWNlcwUMc3Rha2VkUGllY2VzAAAJAGUCBQxzdGFrZWRQaWVjZXMFBnBpZWNlcwQJd2xnUmVzdWx0CQD8BwQFC3dsZ0NvbnRyYWN0AhJvblN0YWtlVW5zdGFrZUxhbmQJAMwIAgUEYWRkcgUDbmlsBQNuaWwJAJQKAgkAzggCCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgABCQDZBAEFC2xhbmRBc3NldElkCQDMCAIJAQtEZWxldGVFbnRyeQEJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQULbGFuZEFzc2V0SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBImtleVN0YWtlZFRpbWVCeVR5cGVBc3NldElkQW5kT3duZXIDBQpMQU5EUFJFRklYBQtsYW5kQXNzZXRJZAUEYWRkcgkAzAgCCQELU3RyaW5nRW50cnkCCQERa2V5UmVzUHJvcG9ydGlvbnMABQVwcm9wcwkAzAgCCQELU3RyaW5nRW50cnkCBQxyZXNCeUNvbnRLZXkFEHVwZGF0ZWRDb250UHJvcHMJAMwIAgkBC1N0cmluZ0VudHJ5AggFC2NsYWltUmVzdWx0Al8yCQC5CQIIBQtjbGFpbVJlc3VsdAJfMwIBOgkAzAgCAwkAZgIJAJADAQUFbGFuZHMAAQkBC1N0cmluZ0VudHJ5AgUIbGFuZHNLZXkJALsJAgkA0QgCBQVsYW5kcwkBBXZhbHVlAQUDaWR4AgFfCQELRGVsZXRlRW50cnkBBQhsYW5kc0tleQkAzAgCCQEMSW50ZWdlckVudHJ5AgUJcGllY2VzS2V5BQluZXdQaWVjZXMFA25pbAUNcHJvbG9nQWN0aW9ucwUJd2xnUmVzdWx0AWkBCXN0YWtlRHVjawAEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQIcRXhhY3RseSBvbmUgcGF5bWVudCByZXF1aXJlZAQDcG10CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAEB2Fzc2V0SWQJAQV2YWx1ZQEIBQNwbXQHYXNzZXRJZAQHYWRkcmVzcwkApQgBCAUBaQZjYWxsZXIDCQECIT0CCAUDcG10BmFtb3VudAABCQACAQkArAICCQCsAgICBE5GVCAFCkRVQ0tQUkVGSVgCJCB0b2tlbiBzaG91bGQgYmUgYXR0YWNoZWQgYXMgcGF5bWVudAQFYXNzZXQJAQV2YWx1ZQEJAOwHAQUHYXNzZXRJZAQGaXNSb2JvAwMFE0tTX0FMTE9XX1JPQk9fRFVDS1MJAAACCAUFYXNzZXQGaXNzdWVyBQR0aGlzBwkBCGNvbnRhaW5zAggFBWFzc2V0BG5hbWUFC1JPQk9fUFJFRklYBwMDAwkBAiE9AggFBWFzc2V0Bmlzc3VlcgUNaW5jdWJhdG9yQWRkcgkBAiE9AggFBWFzc2V0Bmlzc3VlcgULYnJlZWRlckFkZHIHCQEBIQEFBmlzUm9ibwcJAAIBCQCsAgIJAKwCAgkArAICCQCsAgICElVua25vd24gaXNzdWVyIG9mIAUKRFVDS1BSRUZJWAIEIG9yIAULUk9CT19QUkVGSVgCBiB0b2tlbgMDCQEBIQEJAQhjb250YWlucwIIBQVhc3NldARuYW1lBQpEVUNLUFJFRklYCQEBIQEFBmlzUm9ibwcJAAIBCQCsAgIJAKwCAgkArAICCQCsAgICCU9ubHkgTkZUIAUKRFVDS1BSRUZJWAIEIG9yIAULUk9CT19QUkVGSVgCFCB0b2tlbnMgYXJlIGFjY2VwdGVkBAphc3NldElkU3RyCQDYBAEFB2Fzc2V0SWQEB3RpbWVLZXkJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQUKYXNzZXRJZFN0cgMJAQlpc0RlZmluZWQBCQCfCAEFB3RpbWVLZXkJAAIBCQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCEiBpcyBhbHJlYWR5IHN0YWtlZAMJAQlpc0RlZmluZWQBCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFB2FkZHJlc3MJAAIBCQCsAgICHVlvdSBhbHJlYWR5IHN0YWtlZCBvbmUgZHVjazogCAUFYXNzZXQEbmFtZQQGbG9jS2V5CQEPa2V5RHVja0xvY2F0aW9uAQUKYXNzZXRJZFN0cgQIbG9jYXRpb24JAKIIAQUGbG9jS2V5BAVicEtleQkBEWtleUJhY2twYWNrQnlEdWNrAQUKYXNzZXRJZFN0cgQIYmFja3BhY2sJAKIIAQUFYnBLZXkECWtleUhlYWx0aAkBDWtleUR1Y2tIZWFsdGgBBQphc3NldElkU3RyBAVtYXhIUAkBCW1heEhlYWx0aAEJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBDGtleUR1Y2tMZXZlbAEFCmFzc2V0SWRTdHIAAAQJY3VySGVhbHRoCQELdmFsdWVPckVsc2UCCQCfCAEFCWtleUhlYWx0aAUFbWF4SFAJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUHdGltZUtleQgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJASJrZXlTdGFrZWRUaW1lQnlUeXBlQXNzZXRJZEFuZE93bmVyAwUKRFVDS1BSRUZJWAkA2AQBBQdhc3NldElkBQdhZGRyZXNzCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQELU3RyaW5nRW50cnkCCQEQa2V5RHVja0lkVG9Pd25lcgEFCmFzc2V0SWRTdHIFB2FkZHJlc3MJAMwIAgkBC1N0cmluZ0VudHJ5AgkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUHYWRkcmVzcwUKYXNzZXRJZFN0cgUDbmlsAwkBCWlzRGVmaW5lZAEFCGxvY2F0aW9uBQNuaWwJAM4IAgkAzAgCCQELU3RyaW5nRW50cnkCBQZsb2NLZXkFD0RFRkFVTFRMT0NBVElPTgUDbmlsAwkBCWlzRGVmaW5lZAEFCGJhY2twYWNrBQNuaWwJAM4IAgkAzQgCCQDMCAIJAQtTdHJpbmdFbnRyeQIFBWJwS2V5AhowOjBfMF8wXzBfMF8wOjBfMF8wXzBfMF8wOgUDbmlsCQEMSW50ZWdlckVudHJ5AgUJa2V5SGVhbHRoBQljdXJIZWFsdGgFDXByb2xvZ0FjdGlvbnMBaQELdW5zdGFrZUR1Y2sBCmFzc2V0SWRTdHIEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQEB2Fzc2V0SWQJANkEAQUKYXNzZXRJZFN0cgQHYWRkcmVzcwkApQgBCAUBaQZjYWxsZXIEBWFzc2V0CQEFdmFsdWUBCQDsBwEFB2Fzc2V0SWQEB3RpbWVLZXkJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQUKYXNzZXRJZFN0cgMJAQEhAQkBCWlzRGVmaW5lZAEJAJ8IAQUHdGltZUtleQkAAgEJAKwCAgkArAICAgRORlQgCAUFYXNzZXQEbmFtZQIOIGlzIG5vdCBzdGFrZWQDCQEBIQEJAQlpc0RlZmluZWQBCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFB2FkZHJlc3MJAAIBCQCsAgIJAKwCAgIJVGhlIGR1Y2sgCAUFYXNzZXQEbmFtZQIOIGlzIG5vdCBzdGFrZWQEBW93bmVyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBEGtleUR1Y2tJZFRvT3duZXIBBQphc3NldElkU3RyCQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCDCBpcyBvcnBoYW5lZAMJAQIhPQIFBW93bmVyBQdhZGRyZXNzCQACAQIXU3Rha2VkIE5GVCBpcyBub3QgeW91cnMDCQEPY2hlY2tUb3VybmFtZW50AQUKYXNzZXRJZFN0cgkAAgECG3Vuc3Rha2VEdWNrX2NoZWNrVG91cm5hbWVudAMJAQ1jaGVja0RlbGl2ZXJ5AQUKYXNzZXRJZFN0cgkAAgECGXVuc3Rha2VEdWNrX2NoZWNrRGVsaXZlcnkECWtleUhlYWx0aAkBDWtleUR1Y2tIZWFsdGgBBQphc3NldElkU3RyBAVtYXhIUAkBCW1heEhlYWx0aAEJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBDGtleUR1Y2tMZXZlbAEFCmFzc2V0SWRTdHIAAAQGaGVhbHRoCQELdmFsdWVPckVsc2UCCQCfCAEFCWtleUhlYWx0aAUFbWF4SFADCQBmAgUFbWF4SFAFBmhlYWx0aAkAAgEJAKwCAgkArAICAhlQbGVhc2UgaGVhbCB5b3VyIGR1Y2sgdG8gCQCkAwEFBW1heEhQAhNocCBiZWZvcmUgdW5zdGFraW5nCQDOCAIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyAAEFB2Fzc2V0SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQUHdGltZUtleQkAzAgCCQELRGVsZXRlRW50cnkBBQlrZXlIZWFsdGgJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBD2tleUR1Y2tMb2NhdGlvbgEFCmFzc2V0SWRTdHIJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBEGtleUR1Y2tJZFRvT3duZXIBBQphc3NldElkU3RyCQDMCAIJAQtEZWxldGVFbnRyeQEJASJrZXlTdGFrZWRUaW1lQnlUeXBlQXNzZXRJZEFuZE93bmVyAwUKRFVDS1BSRUZJWAUKYXNzZXRJZFN0cgUHYWRkcmVzcwkAzAgCCQELRGVsZXRlRW50cnkBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQdhZGRyZXNzBQNuaWwFDXByb2xvZ0FjdGlvbnMBaQEIY2xhaW1SZXMCBmFtb3VudA5sYW5kQXNzZXRJZFN0cgQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQEYWRkcgkApQgBCAUBaQxvcmlnaW5DYWxsZXIEBnJlc3VsdAkBEGNsYWltUmVzSW50ZXJuYWwEBQRhZGRyBQZhbW91bnQFDWNsYWltTW9kZUR1Y2sFDmxhbmRBc3NldElkU3RyBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFBGFkZHICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQJAJQKAgkAzggCCQDNCAIJAM0IAgkAzggCCAUGcmVzdWx0Al8xCAkBF3VwZGF0ZUR1Y2tTdGF0c0ludGVybmFsAgULZHVja0Fzc2V0SWQJAGsDBQd4cENsYWltBQZhbW91bnQFBU1VTFQ4Al8xCQELU3RyaW5nRW50cnkCCAUGcmVzdWx0Al8yCQC5CQIIBQZyZXN1bHQCXzMCAToJAQtTdHJpbmdFbnRyeQIIBQZyZXN1bHQCXzQJALkJAggFBnJlc3VsdAJfNQIBOgUNcHJvbG9nQWN0aW9ucwkAkQMCCAUGcmVzdWx0Al8zBQhicElkeFJlcwFpAQxjbGFpbVJlc1RvV0gCBmFtb3VudA5sYW5kQXNzZXRJZFN0cgQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQEYWRkcgkApQgBCAUBaQxvcmlnaW5DYWxsZXIEBnJlc3VsdAkBEGNsYWltUmVzSW50ZXJuYWwEBQRhZGRyBQZhbW91bnQFC2NsYWltTW9kZVdoBQ5sYW5kQXNzZXRJZFN0cgkAlAoCCQDOCAIJAM0IAgkAzQgCCQDOCAIIBQZyZXN1bHQCXzEICQEWdXBkYXRlQWNjU3RhdHNJbnRlcm5hbAIFBGFkZHIJAGsDBQd4cENsYWltBQZhbW91bnQFBU1VTFQ4Al8xCQELU3RyaW5nRW50cnkCCAUGcmVzdWx0Al8yCQC5CQIIBQZyZXN1bHQCXzMCAToJAQtTdHJpbmdFbnRyeQIIBQZyZXN1bHQCXzQJALkJAggFBnJlc3VsdAJfNQIBOgUNcHJvbG9nQWN0aW9ucwkAkQMCCAUGcmVzdWx0Al81BQh3aElkeFJlcwFpAQZmbGlnaHQCB21lc3NhZ2UDc2lnBA1wcm9sb2dBY3Rpb25zCQEMcHJvbG9nRmxpZ2h0AQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBAh1c2VyQWRkcgkApQgBCAUBaQZjYWxsZXIEAWYJAQxmbGlnaHRDb21tb24DBQh1c2VyQWRkcgUHbWVzc2FnZQUDc2lnBAVuZXdIUAgFAWYCXzEEC2R1Y2tBc3NldElkCAUBZgJfMgQGbG9jS2V5CQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQEC2N1ckxvY2F0aW9uCQELdmFsdWVPckVsc2UCCQCiCAEFBmxvY0tleQUPREVGQVVMVExPQ0FUSU9OBAtuZXdMb2NhdGlvbggFAWYCXzQDCQAAAgULbmV3TG9jYXRpb24FC2N1ckxvY2F0aW9uCQACAQIiWW91IGNhbid0IGZseSB0byB0aGUgc2FtZSBsb2NhdGlvbgQGbmV3TG9jCQC1CQIFC25ld0xvY2F0aW9uAgFfBAZpc1RvdXIJAAACCQCRAwIFBm5ld0xvYwUKbG9jSWR4VHlwZQIBVAQHaXNEZWxpdgkAAAIJAJEDAgUGbmV3TG9jBQpsb2NJZHhUeXBlAgFEBAVlcUtleQkBEGtleUR1Y2tFcXVpcG1lbnQBBQtkdWNrQXNzZXRJZAQJY3VycmVudEVxCQELdmFsdWVPckVsc2UCCQCiCAEFBWVxS2V5AhcsOyxfLDssXyw7LF8sOyxfLDssXyw7LAQNJHQwNzAyMzA3MDMyNwkBEXN1YnRyYWN0RXF1aXBtZW50AgUJY3VycmVudEVxCAUBZgJfNQQFbmV3RXEIBQ0kdDA3MDIzMDcwMzI3Al8xBA9zaG91bGRaZXJvQnVmZnMIBQ0kdDA3MDIzMDcwMzI3Al8yBA0kdDA3MDMzMDczNDQyAwkBASEBCQEJb25NaXNzaW9uAgUSdG91cm5hbWVudENvbnRyYWN0BQtjdXJMb2NhdGlvbgMJAQEhAQkBD2lzVXN1YWxMb2NhdGlvbgEFC25ld0xvY2F0aW9uCQEMY2hlYXRBdHRlbXB0AwULY3VyTG9jYXRpb24FC25ld0xvY2F0aW9uAAUDCQBmAgUFbmV3SFAAAAkAlAoCBQtuZXdMb2NhdGlvbgUFbmV3SFAJAJQKAgULY3VyTG9jYXRpb24AAAMJAQ5pc0luVG91cm5hbWVudAIFEnRvdXJuYW1lbnRDb250cmFjdAULY3VyTG9jYXRpb24DCQEBIQEJAQ5pc0luVG91cm5hbWVudAIFEnRvdXJuYW1lbnRDb250cmFjdAULbmV3TG9jYXRpb24JAAIBAipZb3VyIGR1Y2sgaXMgdGFraW5nIHBhcnQgaW4gdGhlIHRvdXJuYW1lbnQEBXNjb3JlCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUGbmV3TG9jBQhsb2NJZHhJZAQGY3VyTG9jCQC1CQIFC2N1ckxvY2F0aW9uAgFfBAZsYXN0SWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUSdG91cm5hbWVudENvbnRyYWN0BQ1sYXN0VG91cklkS2V5AAADCQECIT0CBQVzY29yZQkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQZjdXJMb2MFCGxvY0lkeElkAAEJAQxjaGVhdEF0dGVtcHQDBQtjdXJMb2NhdGlvbgULbmV3TG9jYXRpb24ABwMJAGYCBQVuZXdIUAAABAlsb2NhbEJlc3QJAQt2YWx1ZU9yRWxzZQIJAJoIAgUSdG91cm5hbWVudENvbnRyYWN0CQEaa2V5QmVzdFJlc3VsdEJ5VG91ckFuZER1Y2sCBQZsYXN0SWQFC2R1Y2tBc3NldElkAAAECHVwZExvY2FsAwkAZgIFBXNjb3JlBQlsb2NhbEJlc3QJAPwHBAUSdG91cm5hbWVudENvbnRyYWN0Ag5zYXZlRHVja1Jlc3VsdAkAzAgCBQtkdWNrQXNzZXRJZAkAzAgCBQVzY29yZQUDbmlsBQNuaWwFBHVuaXQDCQAAAgUIdXBkTG9jYWwFCHVwZExvY2FsCQCUCgIFC25ld0xvY2F0aW9uBQVuZXdIUAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAlAoCBQtjdXJMb2NhdGlvbgAAAwkBASEBCQEMaXNJbkRlbGl2ZXJ5AQULY3VyTG9jYXRpb24ECHNhdmVkTG9jCQEIYXNTdHJpbmcBCQD8BwQFBHRoaXMCEGF1dG9FeGl0RGVsaXZlcnkJAMwIAgULZHVja0Fzc2V0SWQJAMwIAgUFbmV3SFAJAMwIAgMFB2lzRGVsaXYCAjEwAgIxMQkAzAgCAAAFA25pbAUDbmlsAwkAAAIFCHNhdmVkTG9jBQhzYXZlZExvYwMFB2lzRGVsaXYJAJQKAgUIc2F2ZWRMb2MFBW5ld0hQAwkAZgIFBW5ld0hQAAAJAJQKAgULbmV3TG9jYXRpb24FBW5ld0hQCQCUCgIFCHNhdmVkTG9jAAAJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4DCQEBIQEFB2lzRGVsaXYJAAIBAiRZb3VyIGR1Y2sgaXMgdGFraW5nIHBhcnQgaW4gZGVsaXZlcnkDCQEBIQEJAQxpc0luRGVsaXZlcnkBBQtuZXdMb2NhdGlvbgkBDGNoZWF0QXR0ZW1wdAMFC2N1ckxvY2F0aW9uBQtuZXdMb2NhdGlvbgANBAVzY29yZQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBm5ld0xvYwUIbG9jSWR4SWQEBmN1ckxvYwkAtQkCBQtjdXJMb2NhdGlvbgIBXwMJAQIhPQIFBXNjb3JlCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBmN1ckxvYwUIbG9jSWR4SWQAAQkBDGNoZWF0QXR0ZW1wdAMFC2N1ckxvY2F0aW9uBQtuZXdMb2NhdGlvbgAOAwMJAGYCBQVuZXdIUAAACQBmAgABBQVzY29yZQcJAJQKAgULbmV3TG9jYXRpb24FBW5ld0hQBAhzYXZlZExvYwkBCGFzU3RyaW5nAQkA/AcEBQR0aGlzAhBhdXRvRXhpdERlbGl2ZXJ5CQDMCAIFC2R1Y2tBc3NldElkCQDMCAIFBW5ld0hQCQDMCAICBTE1LTE3CQDMCAIFBXNjb3JlBQNuaWwFA25pbAMJAAACBQhzYXZlZExvYwUIc2F2ZWRMb2MJAJQKAgUIc2F2ZWRMb2MFBW5ld0hQCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBAlsb2NUb1NhdmUIBQ0kdDA3MDMzMDczNDQyAl8xBAhocFRvU2F2ZQgFDSR0MDcwMzMwNzM0NDICXzIJAJQKAgkAzggCCQDOCAIJAM4IAgkAzAgCCQELU3RyaW5nRW50cnkCBQZsb2NLZXkFCWxvY1RvU2F2ZQkAzAgCCQELU3RyaW5nRW50cnkCBQVlcUtleQUFbmV3RXEJAMwIAgkBDEludGVnZXJFbnRyeQIJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQFCGhwVG9TYXZlBQNuaWwFDXByb2xvZ0FjdGlvbnMDBQ9zaG91bGRaZXJvQnVmZnMJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDGtleUR1Y2tCdWZmcwEFC2R1Y2tBc3NldElkAgkwXzBfMF8wXzAFA25pbAUDbmlsCAkBF3VwZGF0ZUR1Y2tTdGF0c0ludGVybmFsAgULZHVja0Fzc2V0SWQDCQBmAgUFbmV3SFAAAAUPeHBTdWNjZXNzRmxpZ2h0BQx4cEZhaWxGbGlnaHQCXzEIBQFmAl8zAWkBBGhlYWwDCnF1YW50aXR5TDEKcXVhbnRpdHlMMgpxdWFudGl0eUwzBA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMDAwkAZgIAAAUKcXVhbnRpdHlMMQYJAGYCAAAFCnF1YW50aXR5TDIGCQBmAgAABQpxdWFudGl0eUwzCQACAQIbUXVhbnRpdHkgY2Fubm90IGJlIG5lZ2F0aXZlBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEJAKUIAQgFAWkGY2FsbGVyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkAwkBD2NoZWNrVG91cm5hbWVudAEFC2R1Y2tBc3NldElkCQACAQIUaGVhbF9jaGVja1RvdXJuYW1lbnQDCQENY2hlY2tEZWxpdmVyeQEFC2R1Y2tBc3NldElkCQACAQISaGVhbF9jaGVja0RlbGl2ZXJ5BANxdHMJAMwIAgUKcXVhbnRpdHlMMQkAzAgCBQpxdWFudGl0eUwyCQDMCAIFCnF1YW50aXR5TDMFA25pbAQJa2V5SGVhbHRoCQENa2V5RHVja0hlYWx0aAEFC2R1Y2tBc3NldElkBAVtYXhIUAkBCW1heEhlYWx0aAEJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBDGtleUR1Y2tMZXZlbAEFC2R1Y2tBc3NldElkAAAECW9sZEhlYWx0aAkBC3ZhbHVlT3JFbHNlAgkAnwgBBQlrZXlIZWFsdGgFBW1heEhQAwkAZwIFCW9sZEhlYWx0aAUFbWF4SFAJAAIBCQCsAgIJAKwCAgIPSFAgc2hvdWxkIGJlIDwgCQCkAwEFBW1heEhQAgggdG8gaGVhbAQFYnBLZXkJARFrZXlCYWNrcGFja0J5RHVjawEFC2R1Y2tBc3NldElkBAtjdXJyZW50UGFjawkBC2dldEJhY2twYWNrAQUFYnBLZXkECHByb2RMaXN0AwkAAAIJAJEDAgULY3VycmVudFBhY2sFCWJwSWR4UHJvZAIABQNuaWwJALwJAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kAgFfCgELaXRlcmF0ZVByb2QCA2FjYwZyZWNpcGUEAW4IBQNhY2MCXzIEAXgDCQBmAgkAkAMBBQhwcm9kTGlzdAUBbgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCHByb2RMaXN0BQFuAAADCQBmAgADBQFuBAFxCQCRAwIFA3F0cwUBbgMJAGYCBQFxBQF4CQACAQkArAICCQCsAgIJAKwCAgIOWW91IGhhdmUgb25seSAJAKQDAQUBeAIEIG9mIAkAkQMCBQlwcm9kVHlwZXMFAW4JAJUKAwkAzQgCCAUDYWNjAl8xCQCkAwEJAGUCBQF4BQFxCQBkAgUBbgABCQBkAggFA2FjYwJfMwkAaAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCCQC1CQIFBnJlY2lwZQIBXwUKcklkeEVmZmVjdAUBcQkAlQoDCQDNCAIIBQNhY2MCXzEJAKQDAQUBeAkAZAIFAW4AAQgFA2FjYwJfMwQGcmVzdWx0CgACJGwFEHByb2R1Y3Rpb25NYXRyaXgKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCVCgMFA25pbAAAAAAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBC2l0ZXJhdGVQcm9kAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyA1MAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIECW5ld0hlYWx0aAkAlwMBCQDMCAIFBW1heEhQCQDMCAIJAGQCBQlvbGRIZWFsdGgIBQZyZXN1bHQCXzMFA25pbAkAlAoCCQDOCAIJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUJa2V5SGVhbHRoBQluZXdIZWFsdGgJAMwIAgkBC1N0cmluZ0VudHJ5AgUFYnBLZXkJALoJAgkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQpicElkeExldmVsCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4UmVzCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4TWF0CQDMCAIJALkJAggFBnJlc3VsdAJfMQIBXwUDbmlsAgE6BQNuaWwFDXByb2xvZ0FjdGlvbnMICQEXdXBkYXRlRHVja1N0YXRzSW50ZXJuYWwCBQtkdWNrQXNzZXRJZAkAaAIFBnhwSGVhbAkAZAIJAGQCBQpxdWFudGl0eUwxBQpxdWFudGl0eUwyBQpxdWFudGl0eUwzAl8xBQluZXdIZWFsdGgBaQEGaGVhbEVTAAQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAhxFeGFjdGx5IG9uZSBwYXltZW50IHJlcXVpcmVkBANwbXQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAMJAQIhPQIIBQNwbXQHYXNzZXRJZAULdXNkdEFzc2V0SWQJAAIBAhpBbGxvd2VkIFVTRFQgcGF5bWVudCBvbmx5IQQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBCQClCAEIBQFpBmNhbGxlcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAMJAQ9jaGVja1RvdXJuYW1lbnQBBQtkdWNrQXNzZXRJZAkAAgECFmhlYWxFU19jaGVja1RvdXJuYW1lbnQDCQENY2hlY2tEZWxpdmVyeQEFC2R1Y2tBc3NldElkCQACAQIUaGVhbEVTX2NoZWNrRGVsaXZlcnkECWtleUhlYWx0aAkBDWtleUR1Y2tIZWFsdGgBBQtkdWNrQXNzZXRJZAQFbWF4SFAJAQltYXhIZWFsdGgBCQELdmFsdWVPckVsc2UCCQCfCAEJAQxrZXlEdWNrTGV2ZWwBBQtkdWNrQXNzZXRJZAAABAlvbGRIZWFsdGgJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJa2V5SGVhbHRoBQVtYXhIUAMJAGYCBQlvbGRIZWFsdGgAAAkAAgECKEhQIHNob3VsZCBiZSAwIHRvIGNhbGwgRW1lcmdlbmN5IFNlcnZpY2UEBWJwS2V5CQERa2V5QmFja3BhY2tCeUR1Y2sBBQtkdWNrQXNzZXRJZAQLY3VycmVudFBhY2sJAQtnZXRCYWNrcGFjawEFBWJwS2V5BAhwcm9kTGlzdAMJAAACCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QCAAUDbmlsCQC8CQIJAJEDAgULY3VycmVudFBhY2sFCWJwSWR4UHJvZAIBXwQNbWVkS2l0QW1vdW50MQMJAGYCCQCQAwEFCHByb2RMaXN0AAAJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQhwcm9kTGlzdAAAAAAEDW1lZEtpdEFtb3VudDIDCQBmAgkAkAMBBQhwcm9kTGlzdAABCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUIcHJvZExpc3QAAQAABA1tZWRLaXRBbW91bnQzAwkAZgIJAJADAQUIcHJvZExpc3QAAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCHByb2RMaXN0AAIAAAMDAwkAZgIFDW1lZEtpdEFtb3VudDEAAAYJAGYCBQ1tZWRLaXRBbW91bnQyAAAGCQBmAgUNbWVkS2l0QW1vdW50MwAACQACAQIfWW91IGhhdmUgdG8gdXNlIG93biBNZWRpY2FsIEtpdAQIZXhpc3RTdHIJAJ0IAgUPZWNvbm9teUNvbnRyYWN0CQEOa2V5RXNXYXJlaG91c2UABAxleGlzdEFtb3VudHMDCQEJaXNEZWZpbmVkAQUIZXhpc3RTdHIJALwJAgkBBXZhbHVlAQUIZXhpc3RTdHICAV8FA25pbAQLZXhpc3RBbW91bnQDCQBmAgkAkAMBBQxleGlzdEFtb3VudHMAAAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFDGV4aXN0QW1vdW50cwAAAAADCQBnAgAABQtleGlzdEFtb3VudAkAAgECOVRoZXJlIGFyZSBubyBNZWRpY2FsIEtpdHMgTDEgYXQgRW1lcmdlbmN5IFNlcnZpY2Ugc3RvcmFnZQQJbmV3SGVhbHRoCQBkAgUJb2xkSGVhbHRoCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgkAtQkCCQCRAwIFEHByb2R1Y3Rpb25NYXRyaXgAAAIBXwUKcklkeEVmZmVjdAQFbmV3RVMJALkJAgkAzAgCCQCkAwEJAGUCBQtleGlzdEFtb3VudAABCQDRCAIFDGV4aXN0QW1vdW50cwAAAgFfBAZyZWNpcGUJALUJAgkAkQMCBRBwcm9kdWN0aW9uTWF0cml4AAACAV8ECHRvdGFsTWF0CQESZ2V0UmVjaXBlTWF0ZXJpYWxzAQUGcmVjaXBlBAlzZWxsUHJpY2UJAGsDCQBoAgUIdG90YWxNYXQFCkVTU0VMTENPRUYFEFJFU09VUkNFUFJJQ0VNSU4JAGgCBQVNVUxUOAUOUFJPRFVDVFBLR1NJWkUDCQECIT0CCAUDcG10BmFtb3VudAUJc2VsbFByaWNlCQACAQkArAICAhtQYXltZW50IGF0dGFjaGVkIHNob3VsZCBiZSAJAKQDAQUJc2VsbFByaWNlBAZyZXN1bHQJAQhhc1N0cmluZwEJAPwHBAUPZWNvbm9teUNvbnRyYWN0Ag91cGRhdGVFc1N0b3JhZ2UJAMwIAgUFbmV3RVMFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgULdXNkdEFzc2V0SWQFCXNlbGxQcmljZQUDbmlsCQCUCgIJAM4IAgkAzQgCBQ1wcm9sb2dBY3Rpb25zCQEMSW50ZWdlckVudHJ5AgUJa2V5SGVhbHRoBQluZXdIZWFsdGgICQEXdXBkYXRlRHVja1N0YXRzSW50ZXJuYWwCBQtkdWNrQXNzZXRJZAUIeHBDYWxsRVMCXzEFBnJlc3VsdAFpAQ51cGRhdGVCYWNrcGFjawILZHVja0Fzc2V0SWQHbmV3UGFjawMJAQIhPQIIBQFpBmNhbGxlcgUPZWNvbm9teUNvbnRyYWN0CQACAQIRcGVybWlzc2lvbiBkZW5pZWQJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCCQERa2V5QmFja3BhY2tCeUR1Y2sBBQtkdWNrQXNzZXRJZAUHbmV3UGFjawUDbmlsBQduZXdQYWNrAWkBD2NvbW1pdEZvclJhbmRvbQAEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpBAtmaW5pc2hCbG9jawkAZAIFBmhlaWdodAULcmFuZG9tRGVsYXkEBGFkZHIJAKUIAQgFAWkGY2FsbGVyCQCUCgIJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBCWtleUNvbW1pdAEFBGFkZHIFC2ZpbmlzaEJsb2NrBQNuaWwFDXByb2xvZ0FjdGlvbnMFC2ZpbmlzaEJsb2NrAWkBCGJ1eVNMYW5kAAQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAhxFeGFjdGx5IG9uZSBwYXltZW50IHJlcXVpcmVkBANwbXQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAMJAQIhPQIIBQNwbXQHYXNzZXRJZAULdXNkdEFzc2V0SWQJAAIBAhpBbGxvd2VkIFVTRFQgcGF5bWVudCBvbmx5IQMJAQIhPQIIBQNwbXQGYW1vdW50BQdFWFBVU0RUCQACAQkArAICAhtQYXltZW50IGF0dGFjaGVkIHNob3VsZCBiZSAJAKQDAQUHRVhQVVNEVAQGcmVzdWx0CQESZXhwZWRpdGlvbkludGVybmFsAggFAWkGY2FsbGVyCAUBaQ10cmFuc2FjdGlvbklkBAthY3Jlc1Jlc3VsdAkBBWFzSW50AQkA/AcEBQ1hY3Jlc0NvbnRyYWN0AglidXJuQWNyZXMJAMwIAgUMU19DT1NUX0FDUkVTBQNuaWwFA25pbAkAlAoCCQDOCAIJAM4IAgkAzQgCCAUGcmVzdWx0Al8xCQEOU2NyaXB0VHJhbnNmZXIDBQ9lY29ub215Q29udHJhY3QIBQNwbXQGYW1vdW50BQt1c2R0QXNzZXRJZAgJARZ1cGRhdGVBY2NTdGF0c0ludGVybmFsAgkApQgBCAUBaQZjYWxsZXIFCnhwTmV3U0xhbmQCXzEFDXByb2xvZ0FjdGlvbnMJAJQKAggIBQZyZXN1bHQCXzICXzEFC2FjcmVzUmVzdWx0AWkBCmV4cGVkaXRpb24CB21lc3NhZ2UDc2lnBA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBAh1c2VyQWRkcgkApQgBCAUBaQZjYWxsZXIEAWYJAQxmbGlnaHRDb21tb24DBQh1c2VyQWRkcgUHbWVzc2FnZQUDc2lnBAtkdWNrQXNzZXRJZAgFAWYCXzIECWtleUhlYWx0aAkBDWtleUR1Y2tIZWFsdGgBBQtkdWNrQXNzZXRJZAQFYnBLZXkJARFrZXlCYWNrcGFja0J5RHVjawEFC2R1Y2tBc3NldElkBAtjdXJyZW50UGFjawkBC2dldEJhY2twYWNrAQUFYnBLZXkEBW1MaXN0CQC1CQIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4TWF0AgFfBAZuZXdNYXQJALkJAgkBEXN1YnRyYWN0TWF0ZXJpYWxzAwYFBW1MaXN0BQxFWFBNQVRFUklBTFMCAV8EBWVxS2V5CQEQa2V5RHVja0VxdWlwbWVudAEFC2R1Y2tBc3NldElkBAljdXJyZW50RXEJAQt2YWx1ZU9yRWxzZQIJAKIIAQUFZXFLZXkCFyw7LF8sOyxfLDssXyw7LF8sOyxfLDssBA0kdDA4MDg4MjgwOTc5CQERc3VidHJhY3RFcXVpcG1lbnQCBQljdXJyZW50RXEIBQFmAl81BAVuZXdFcQgFDSR0MDgwODgyODA5NzkCXzEED3Nob3VsZFplcm9CdWZmcwgFDSR0MDgwODgyODA5NzkCXzIEAWUJARJleHBlZGl0aW9uSW50ZXJuYWwCCAUBaQZjYWxsZXIIBQFpDXRyYW5zYWN0aW9uSWQEAmlkCAgFAWUCXzICXzEEBnJlc3VsdAMJAGcCAAAIBQFmAl8xCQCVCgMJAMwIAgkBDEludGVnZXJFbnRyeQIFCWtleUhlYWx0aAAACQDMCAIJAQtTdHJpbmdFbnRyeQIFBWVxS2V5BQVuZXdFcQUDbmlsAgAAAAkAlQoDCQDOCAIIBQFlAl8xAwUPc2hvdWxkWmVyb0J1ZmZzCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQxrZXlEdWNrQnVmZnMBBQtkdWNrQXNzZXRJZAIJMF8wXzBfMF8wBQNuaWwJAM0IAgkAzQgCCQDNCAIJAM0IAgUDbmlsCQELU3RyaW5nRW50cnkCCQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQJALkJAgkAzAgCCAgFAWUCXzICXzIJAMwIAgIBTAkAzAgCBQJpZAUDbmlsAgFfCQEMSW50ZWdlckVudHJ5AgUJa2V5SGVhbHRoCAUBZgJfMQkBC1N0cmluZ0VudHJ5AgUFZXFLZXkFBW5ld0VxCQELU3RyaW5nRW50cnkCBQVicEtleQkAuQkCCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCmJwSWR4TGV2ZWwJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhSZXMJAMwIAgUGbmV3TWF0CQDMCAIJAJEDAgULY3VycmVudFBhY2sFCWJwSWR4UHJvZAUDbmlsAgE6BQJpZAgFAWYCXzMDCQEPY2hlY2tUb3VybmFtZW50AQULZHVja0Fzc2V0SWQJAAIBAhpleHBlZGl0aW9uX2NoZWNrVG91cm5hbWVudAMJAQ1jaGVja0RlbGl2ZXJ5AQULZHVja0Fzc2V0SWQJAAIBAhhleHBlZGl0aW9uX2NoZWNrRGVsaXZlcnkEC2FjcmVzUmVzdWx0CQEFYXNJbnQBCQD8BwQFDWFjcmVzQ29udHJhY3QCCWJ1cm5BY3JlcwkAzAgCBQxTX0NPU1RfQUNSRVMFA25pbAUDbmlsCQCUCgIJAM4IAgkAzggCCAUGcmVzdWx0Al8xCAkBF3VwZGF0ZUR1Y2tTdGF0c0ludGVybmFsAgULZHVja0Fzc2V0SWQFCnhwTmV3U0xhbmQCXzEFDXByb2xvZ0FjdGlvbnMJAJUKAwgFBnJlc3VsdAJfMggFBnJlc3VsdAJfMwULYWNyZXNSZXN1bHQBaQEQYnV5U0xhbmRGb3JBY3JlcwAEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQIiZXhhY3RseSAxIHBheW1lbnQgbXVzdCBiZSBhdHRhY2hlZAQDcG10CQCRAwIIBQFpCHBheW1lbnRzAAAEA2FtdAgFA3BtdAZhbW91bnQDAwkBASEBCQEJaXNEZWZpbmVkAQgFA3BtdAdhc3NldElkBgkBAiE9AgkBBXZhbHVlAQgFA3BtdAdhc3NldElkBQxhY3Jlc0Fzc2V0SWQJAAIBAhRBQ1JFUyBwYXltZW50cyBvbmx5IQMJAQIhPQIFA2FtdAUMU19DT1NUX0FDUkVTCQACAQkArAICAhtQYXltZW50IGF0dGFjaGVkIHNob3VsZCBiZSAJAKQDAQUMU19DT1NUX0FDUkVTBAZyZXN1bHQJARJleHBlZGl0aW9uSW50ZXJuYWwCCAUBaQZjYWxsZXIIBQFpDXRyYW5zYWN0aW9uSWQEC2FjcmVzUmVzdWx0CQEFYXNJbnQBCQD8BwQFDWFjcmVzQ29udHJhY3QCCWJ1cm5BY3JlcwkAzAgCBQxTX0NPU1RfQUNSRVMFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUMYWNyZXNBc3NldElkBQNhbXQFA25pbAkAlAoCCQDOCAIJAM4IAggFBnJlc3VsdAJfMQgJARZ1cGRhdGVBY2NTdGF0c0ludGVybmFsAgkApQgBCAUBaQZjYWxsZXIFCnhwTmV3U0xhbmQCXzEFDXByb2xvZ0FjdGlvbnMJAJQKAggIBQZyZXN1bHQCXzICXzEFC2FjcmVzUmVzdWx0AWkBDHVwZ3JhZGVJbmZyYQELbGFuZEFzc2V0SWQEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQEBnJlc3VsdAkBDXVwSW5mcmFDb21tb24EBggFAWkGY2FsbGVyAAAFC2xhbmRBc3NldElkBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEJAKUIAQgFAWkGY2FsbGVyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkCQCUCgIJAM4IAgkAzggCCAUGcmVzdWx0Al8xBQ1wcm9sb2dBY3Rpb25zCAkBF3VwZGF0ZUR1Y2tTdGF0c0ludGVybmFsAgULZHVja0Fzc2V0SWQJAGsDBQ54cFVwZ3JhZGVJbmZyYQgFBnJlc3VsdAJfMwUFTVVMVDgCXzEIBQZyZXN1bHQCXzIBaQEQYWN0aXZhdGVBcnRpZmFjdAIHYXJ0TmFtZQ5sYW5kQXNzZXRJZE9wdAQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQEYWRkcgkApQgBCAUBaQZjYWxsZXIEBnJlc3VsdAQHJG1hdGNoMAUHYXJ0TmFtZQMJAAACAgdQUkVTQUxFBQckbWF0Y2gwCQESYWN0aXZhdGVQcmVzYWxlQXJ0AgUEYWRkcgUObGFuZEFzc2V0SWRPcHQDCQAAAgIHT05CT0FSRAUHJG1hdGNoMAkBEmFjdGl2YXRlT25ib2FyZEFydAEFBGFkZHIJAAIBAhBVbmtub3duIGFydGlmYWN0CQDOCAIFBnJlc3VsdAUNcHJvbG9nQWN0aW9ucwFpAQptZXJnZUxhbmRzAQxsYW5kQXNzZXRJZHMEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQEBnJlc3VsdAkBC21lcmdlQ29tbW9uAgkApQgBCAUBaQZjYWxsZXIFDGxhbmRBc3NldElkcwkAlAoCCQDOCAIJAM4IAggFBnJlc3VsdAJfMQUNcHJvbG9nQWN0aW9ucwgJARZ1cGRhdGVBY2NTdGF0c0ludGVybmFsAgkApQgBCAUBaQZjYWxsZXIFB3hwTWVyZ2UCXzEIBQZyZXN1bHQCXzIBaQENY2FyZ29FeGNoYW5nZQIMY2FyZ29MaXN0U3RyC2xhbmRBc3NldElkBA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBApjYXJnb1BhcnRzCQC8CQIFDGNhcmdvTGlzdFN0cgIBOgQEYWRkcgkApQgBCAUBaQxvcmlnaW5DYWxsZXIEBWFzc2V0CQEFdmFsdWUBCQDsBwEJANkEAQULbGFuZEFzc2V0SWQEB3RpbWVLZXkJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQULbGFuZEFzc2V0SWQDCQEBIQEJAQlpc0RlZmluZWQBCQCfCAEFB3RpbWVLZXkJAAIBCQCsAgIIBQVhc3NldARuYW1lAg4gaXMgbm90IHN0YWtlZAQFb3duZXIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEVa2V5TGFuZEFzc2V0SWRUb093bmVyAQULbGFuZEFzc2V0SWQJAKwCAgkArAICAgRORlQgCAUFYXNzZXQEbmFtZQIMIGlzIG9ycGhhbmVkAwkBAiE9AgUFb3duZXIFBGFkZHIJAAIBCQCsAgIFCkxBTkRQUkVGSVgCDSBpcyBub3QgeW91cnMECWxhbmRJbmRleAkAaQIJAQ9udW1QaWVjZXNCeVNpemUBCQCRAwIJALUJAggFBWFzc2V0C2Rlc2NyaXB0aW9uAgFfBQtyZWNMYW5kU2l6ZQUFU1NJWkUECmluZnJhTGV2ZWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAAABAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFBGFkZHICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQEC2N1ckxvY2F0aW9uCQELdmFsdWVPckVsc2UCCQCiCAEJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAUPREVGQVVMVExPQ0FUSU9OBANsb2MJALUJAgkBBXZhbHVlAQULY3VyTG9jYXRpb24CAV8DCQECIT0CCQCRAwIFA2xvYwUKbG9jSWR4VHlwZQIBTAkAAgEJAKwCAgkArAICAhZEdWNrIGxvY2F0aW9uIHR5cGUgaXMgCQCRAwIFA2xvYwUKbG9jSWR4VHlwZQIRLCBidXQgc2hvdWxkIGJlIEwDCQECIT0CCQCRAwIFA2xvYwUIbG9jSWR4SWQFC2xhbmRBc3NldElkCQACAQkArAICAhtEdWNrIHNob3VsZCBiZSBvbiB0aGUgbGFuZCAFC2xhbmRBc3NldElkBAV3aEtleQkBEmtleVdhcmVob3VzZUJ5TGFuZAEFC2xhbmRBc3NldElkBAljdXJyZW50V2gJAQxnZXRXYXJlaG91c2UDBQV3aEtleQUJbGFuZEluZGV4BQppbmZyYUxldmVsBAVicEtleQkBEWtleUJhY2twYWNrQnlEdWNrAQULZHVja0Fzc2V0SWQEC2N1cnJlbnRQYWNrCQELZ2V0QmFja3BhY2sBBQVicEtleQQGcmVzdWx0CQEJbW92ZVN0dWZmAwUKY2FyZ29QYXJ0cwUJY3VycmVudFdoBQtjdXJyZW50UGFjawQEbG9mdAkAtQkCCQCRAwIFCWN1cnJlbnRXaAUJd2hJZHhMT0ZUAgFfBAVsb2Z0TwkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQt2b2xPY2N1cGllZAgFBnJlc3VsdAJfNwQFbG9mdEYJAGUCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbG9mdAUHdm9sRnJlZQgFBnJlc3VsdAJfNwkAzggCCQDMCAIJAQtTdHJpbmdFbnRyeQIFBWJwS2V5CQC6CQIJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUKYnBJZHhMZXZlbAkAzAgCCAUGcmVzdWx0Al80CQDMCAIIBQZyZXN1bHQCXzUJAMwIAggFBnJlc3VsdAJfNgUDbmlsAgE6CQDMCAIJAQtTdHJpbmdFbnRyeQIFBXdoS2V5CQC6CQIJAMwIAgkAkQMCBQljdXJyZW50V2gFC3doSWR4TGV2ZWxzCQDMCAIIBQZyZXN1bHQCXzEJAMwIAggFBnJlc3VsdAJfMgkAzAgCCAUGcmVzdWx0Al8zCQDMCAIJALkJAgkAzAgCCQCRAwIFBGxvZnQFCXZvbExvY2tlZAkAzAgCCQCkAwEFBWxvZnRPCQDMCAIJAKQDAQUFbG9mdEYJAMwIAgkAkQMCBQRsb2Z0BQh2b2xUb3RhbAUDbmlsAgFfBQNuaWwCAToFA25pbAUNcHJvbG9nQWN0aW9ucwFpAQ1zYXZlV2FyZWhvdXNlAgV3aFN0cgtsYW5kQXNzZXRJZAMJAQIhPQIIBQFpBmNhbGxlcgUPZWNvbm9teUNvbnRyYWN0CQACAQINQWNjZXNzIGRlbmllZAQFd2hLZXkJARJrZXlXYXJlaG91c2VCeUxhbmQBBQtsYW5kQXNzZXRJZAQCd2gJALwJAgUFd2hTdHICAToDCQECIT0CCQCQAwEFAndoAAUJAAIBAjB3YXJlaG91c2Ugc3RyaW5nIHNob3VsZCBjb250YWluIDQgJzonIHNlcGFyYXRvcnMEBWxvZnRMCQCRAwIJALUJAgkAkQMCBQJ3aAUJd2hJZHhMT0ZUAgFfBQl2b2xMb2NrZWQEBWxvZnRPCQEXZ2V0V2FyZWhvdXNlT2NjdXBpZWRWb2wBBQJ3aAQFbG9mdFQJARdnZXRXYXJlaG91c2VUb3RhbFZvbHVtZQEJAJEDAgUCd2gFC3doSWR4TGV2ZWxzBAVsb2Z0RgkAZQIJAGUCBQVsb2Z0VAkBDXBhcnNlSW50VmFsdWUBBQVsb2Z0TAUFbG9mdE8DCQBmAgAABQVsb2Z0RgkAAgECME9wZXJhdGlvbiBsZWFkcyB0byBuZWdhdGl2ZSBmcmVlIHdhcmVob3VzZSBzcGFjZQQIbmV3V2hTdHIJALoJAgkAzAgCCQCRAwIFAndoBQt3aElkeExldmVscwkAzAgCCQCRAwIFAndoBQh3aElkeFJlcwkAzAgCCQCRAwIFAndoBQh3aElkeE1hdAkAzAgCCQCRAwIFAndoBQl3aElkeFByb2QJAMwIAgkAuQkCCQDMCAIFBWxvZnRMCQDMCAIJAKQDAQUFbG9mdE8JAMwIAgkApAMBBQVsb2Z0RgkAzAgCCQCkAwEFBWxvZnRUBQNuaWwCAV8FA25pbAIBOgkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIFBXdoS2V5BQhuZXdXaFN0cgUDbmlsBQhuZXdXaFN0cgFpAQ1zZXRDdXN0b21OYW1lAwdhc3NldElkCmN1c3RvbU5hbWUEdHlwZQQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAhxFeGFjdGx5IG9uZSBwYXltZW50IHJlcXVpcmVkBANwbXQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAMJAQIhPQIIBQNwbXQHYXNzZXRJZAULdXNkdEFzc2V0SWQJAAIBAhpBbGxvd2VkIFVTRFQgcGF5bWVudCBvbmx5IQMJAQIhPQIIBQNwbXQGYW1vdW50BQxSRU5BTUlOR0NPU1QJAAIBCQCsAgICElBheW1lbnQgc2hvdWxkIGJlIAkApAMBBQxSRU5BTUlOR0NPU1QDCQEIY29udGFpbnMCBQpjdXN0b21OYW1lAgJfXwkAAgEJAKwCAgIeTmFtZSBzaG91bGQgbm90IGNvbnRhaW4gJ19fJzogBQpjdXN0b21OYW1lAwkAZgIJALECAQUKY3VzdG9tTmFtZQUKTUFYTkFNRUxFTgkAAgEJAKwCAgIZTmFtZSB0b28gbG9uZywgbWF4TGVuZ3RoPQkApAMBBQpNQVhOQU1FTEVOBARhZGRyCQClCAEIBQFpDG9yaWdpbkNhbGxlcgQHYWN0aW9ucwQHJG1hdGNoMAUEdHlwZQMJAAACAgdBQ0NPVU5UBQckbWF0Y2gwBApyZXZlcnNlS2V5CQEWa2V5Q3VzdG9tTmFtZVRvQWRkcmVzcwEFCmN1c3RvbU5hbWUECW5hbWVPd25lcgkAoggBBQpyZXZlcnNlS2V5AwkBCWlzRGVmaW5lZAEFCW5hbWVPd25lcgkAAgEJAKwCAgIZTmFtZSBhbHJlYWR5IHJlZ2lzdGVyZWQ6IAUKY3VzdG9tTmFtZQQNYWRkclRvTmFtZUtleQkBFmtleUFkZHJlc3NUb0N1c3RvbU5hbWUBBQRhZGRyBAdvbGROYW1lCQCiCAEFDWFkZHJUb05hbWVLZXkEB2ZyZWVPbGQDCQEJaXNEZWZpbmVkAQUHb2xkTmFtZQkAzAgCCQELRGVsZXRlRW50cnkBCQEWa2V5Q3VzdG9tTmFtZVRvQWRkcmVzcwEJAQV2YWx1ZQEFB29sZE5hbWUFA25pbAUDbmlsCQDOCAIJAM0IAgkAzQgCBQdmcmVlT2xkCQELU3RyaW5nRW50cnkCBQ1hZGRyVG9OYW1lS2V5BQpjdXN0b21OYW1lCQELU3RyaW5nRW50cnkCBQpyZXZlcnNlS2V5BQRhZGRyCAkBFnVwZGF0ZUFjY1N0YXRzSW50ZXJuYWwCBQRhZGRyBQx4cEN1c3RvbU5hbWUCXzEDCQAAAgIETEFORAUHJG1hdGNoMAQFYXNzZXQJAQV2YWx1ZQEJAOwHAQkA2QQBBQdhc3NldElkBAd0aW1lS2V5CQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFB2Fzc2V0SWQDCQEBIQEJAQlpc0RlZmluZWQBCQCfCAEFB3RpbWVLZXkJAAIBCQCsAgIIBQVhc3NldARuYW1lAg4gaXMgbm90IHN0YWtlZAQFb3duZXIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEVa2V5TGFuZEFzc2V0SWRUb093bmVyAQUHYXNzZXRJZAkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAgwgaXMgb3JwaGFuZWQDCQECIT0CBQVvd25lcgUEYWRkcgkAAgEJAKwCAgUKTEFORFBSRUZJWAINIGlzIG5vdCB5b3VycwQKcmV2ZXJzZUtleQkBGmtleUxhbmRDdXN0b21OYW1lVG9Bc3NldElkAQUKY3VzdG9tTmFtZQQJbmFtZU93bmVyCQCiCAEFCnJldmVyc2VLZXkDCQEJaXNEZWZpbmVkAQUJbmFtZU93bmVyCQACAQkArAICAhlOYW1lIGFscmVhZHkgcmVnaXN0ZXJlZDogBQpjdXN0b21OYW1lBA5hc3NldFRvTmFtZUtleQkBGmtleUxhbmRBc3NldElkVG9DdXN0b21OYW1lAQUHYXNzZXRJZAQHb2xkTmFtZQkAoggBBQ5hc3NldFRvTmFtZUtleQQHZnJlZU9sZAMJAQlpc0RlZmluZWQBBQdvbGROYW1lCQDMCAIJAQtEZWxldGVFbnRyeQEJARprZXlMYW5kQ3VzdG9tTmFtZVRvQXNzZXRJZAEJAQV2YWx1ZQEFB29sZE5hbWUFA25pbAUDbmlsCQDOCAIJAM0IAgkAzQgCBQdmcmVlT2xkCQELU3RyaW5nRW50cnkCBQ5hc3NldFRvTmFtZUtleQUKY3VzdG9tTmFtZQkBC1N0cmluZ0VudHJ5AgUKcmV2ZXJzZUtleQUHYXNzZXRJZAgJARZ1cGRhdGVBY2NTdGF0c0ludGVybmFsAgUEYWRkcgUMeHBDdXN0b21OYW1lAl8xAwkAAAICBERVQ0sFByRtYXRjaDAEBWFzc2V0CQEFdmFsdWUBCQDsBwEJANkEAQUHYXNzZXRJZAQHdGltZUtleQkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQdhc3NldElkAwMJAQEhAQkBCWlzRGVmaW5lZAEJAJ8IAQUHdGltZUtleQYJAQEhAQkBCWlzRGVmaW5lZAEJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUEYWRkcgkAAgEJAKwCAggFBWFzc2V0BG5hbWUCDiBpcyBub3Qgc3Rha2VkBAVvd25lcgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARBrZXlEdWNrSWRUb093bmVyAQUHYXNzZXRJZAkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAgwgaXMgb3JwaGFuZWQDCQECIT0CBQVvd25lcgUEYWRkcgkAAgEJAKwCAgUKRFVDS1BSRUZJWAINIGlzIG5vdCB5b3VycwQKcmV2ZXJzZUtleQkBGmtleUR1Y2tDdXN0b21OYW1lVG9Bc3NldElkAQUKY3VzdG9tTmFtZQQJbmFtZU93bmVyCQCiCAEFCnJldmVyc2VLZXkDCQEJaXNEZWZpbmVkAQUJbmFtZU93bmVyCQACAQkArAICAhlOYW1lIGFscmVhZHkgcmVnaXN0ZXJlZDogBQpjdXN0b21OYW1lBA5hc3NldFRvTmFtZUtleQkBGmtleUR1Y2tBc3NldElkVG9DdXN0b21OYW1lAQUHYXNzZXRJZAQHb2xkTmFtZQkAoggBBQ5hc3NldFRvTmFtZUtleQQHZnJlZU9sZAMJAQlpc0RlZmluZWQBBQdvbGROYW1lCQDMCAIJAQtEZWxldGVFbnRyeQEJARprZXlEdWNrQ3VzdG9tTmFtZVRvQXNzZXRJZAEJAQV2YWx1ZQEFB29sZE5hbWUFA25pbAUDbmlsCQDOCAIJAM0IAgkAzQgCBQdmcmVlT2xkCQELU3RyaW5nRW50cnkCBQ5hc3NldFRvTmFtZUtleQUKY3VzdG9tTmFtZQkBC1N0cmluZ0VudHJ5AgUKcmV2ZXJzZUtleQUHYXNzZXRJZAgJARd1cGRhdGVEdWNrU3RhdHNJbnRlcm5hbAIFB2Fzc2V0SWQFDHhwQ3VzdG9tTmFtZQJfMQkAAgECE1Vua25vd24gZW50aXR5IHR5cGUJAJQKAgkAzggCCQDNCAIFB2FjdGlvbnMJAQ5TY3JpcHRUcmFuc2ZlcgMFD2Vjb25vbXlDb250cmFjdAgFA3BtdAZhbW91bnQFC3VzZHRBc3NldElkBQ1wcm9sb2dBY3Rpb25zAAABaQEMc2V0UmVmZXJyYWxzAglvbGRQbGF5ZXIJbmV3UGxheWVyAwkBAiE9AggFAWkPY2FsbGVyUHVibGljS2V5BQNwdWIJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAMJAQEhAQkBCWlzRGVmaW5lZAEJAKYIAQUJb2xkUGxheWVyCQACAQkArAICAhFJbnZhbGlkIGFkZHJlc3M6IAUJb2xkUGxheWVyBApuZXdiaWVBZGRyCQCmCAEFCW5ld1BsYXllcgMJAQEhAQkBCWlzRGVmaW5lZAEFCm5ld2JpZUFkZHIJAAIBCQCsAgICEUludmFsaWQgYWRkcmVzczogBQluZXdQbGF5ZXIECW9sZExhc3RUeAkAoggBCQERa2V5TGFzdFR4SWRCeVVzZXIBBQlvbGRQbGF5ZXIDCQEBIQEJAQlpc0RlZmluZWQBBQlvbGRMYXN0VHgJAAIBAiJvbGRQbGF5ZXIgZGlkbid0IGRvIGFueSB0eCBpbiBnYW1lAwkAZwIAAAgJAO8HAQkBBXZhbHVlAQUKbmV3YmllQWRkcglhdmFpbGFibGUJAAIBAhZuZXdQbGF5ZXIgaGFzIG5vIFdBVkVTBAdvbGRzS2V5CQEJa2V5T2xkaWVzAAQEb2xkcwkAoggBBQdvbGRzS2V5BAZvbGRpZXMDCQEJaXNEZWZpbmVkAQUEb2xkcwkAvAkCCQEFdmFsdWUBBQRvbGRzAgFfBQNuaWwDCQEPY29udGFpbnNFbGVtZW50AgUGb2xkaWVzBQluZXdQbGF5ZXIJAAIBCQCsAgIFCW5ld1BsYXllcgImIGlzIG5vdCBuZXdiaWUgKGFscmVhZHkgaGFzIHJlZmVycmFscykECHJlZkJ5S2V5CQEPa2V5QWRkcmVzc1JlZkJ5AQUJbmV3UGxheWVyBAVyZWZCeQkAoggBBQhyZWZCeUtleQMDCQEJaXNEZWZpbmVkAQUFcmVmQnkJAQlpc0RlZmluZWQBCQCmCAEJAQV2YWx1ZQEFBXJlZkJ5BwkAAgEJAKwCAgkArAICBQluZXdQbGF5ZXICFCBhbHJlYWR5IGhhcyByZWZCeTogCQEFdmFsdWUBBQVyZWZCeQQHcmVmc0tleQkBE2tleUFkZHJlc3NSZWZlcnJhbHMBBQlvbGRQbGF5ZXIEBHJlZnMJAKIIAQUHcmVmc0tleQQJcmVmc0FycmF5AwkBCWlzRGVmaW5lZAEFBHJlZnMJALwJAgkBBXZhbHVlAQUEcmVmcwIBXwUDbmlsAwkBD2NvbnRhaW5zRWxlbWVudAIFCXJlZnNBcnJheQUJbmV3UGxheWVyCQACAQkArAICCQCsAgIJAKwCAgUJb2xkUGxheWVyAhIgYWxyZWFkeSBjb250YWlucyAFCW5ld1BsYXllcgIRIHdpdGhpbiByZWZlcnJhbHMEB25ld1JlZnMJALoJAgkAzQgCBQlyZWZzQXJyYXkFCW5ld1BsYXllcgIBXwQHbmV3T2xkcwMJAQ9jb250YWluc0VsZW1lbnQCBQZvbGRpZXMFCW9sZFBsYXllcgkBBXZhbHVlAQUEb2xkcwkAugkCCQDNCAIFBm9sZGllcwUJb2xkUGxheWVyAgFfCQCUCgIJAM4IAgkAzAgCCQELU3RyaW5nRW50cnkCBQhyZWZCeUtleQUJb2xkUGxheWVyCQDMCAIJAQtTdHJpbmdFbnRyeQIFB3JlZnNLZXkFB25ld1JlZnMJAMwIAgkBC1N0cmluZ0VudHJ5AgUHb2xkc0tleQUHbmV3T2xkcwUDbmlsBQ1wcm9sb2dBY3Rpb25zAAABaQEQZGlzdHJpYnV0ZVBvaW50cwUIc3RyZW5ndGgIYWNjdXJhY3kJaW50ZWxsZWN0CWVuZHVyYW5jZQlkZXh0ZXJpdHkEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQEBGFkZHIJAKUIAQgFAWkMb3JpZ2luQ2FsbGVyBAt2aXJ0V2xnRGF0YQkBCWFzQW55TGlzdAEJAPwHBAULd2xnQ29udHJhY3QCEmNoZWNrV2xnWHBSRUFET05MWQkAzAgCBQRhZGRyBQNuaWwFA25pbAQNdmlydFdsZ1BvaW50cwkBBWFzSW50AQkAkQMCBQt2aXJ0V2xnRGF0YQABBA0kdDA5Njg2OTk3MjU5AwkAZwIAAAUNdmlydFdsZ1BvaW50cwkAlAoCAAAFA25pbAQHZGVsdGFYUAkBBWFzSW50AQkA/AcEBQt3bGdDb250cmFjdAIJdGFrZVdsZ1hwCQDMCAIFBGFkZHIFA25pbAUDbmlsAwkAAAIFB2RlbHRhWFAFB2RlbHRhWFAJAJQKAgUNdmlydFdsZ1BvaW50cwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDGtleVVzZXJMZXZlbAEFBGFkZHIJAQVhc0ludAEJAJEDAgULdmlydFdsZ0RhdGEAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBCWtleVVzZXJYUAEFBGFkZHIJAQVhc0ludAEJAJEDAgULdmlydFdsZ0RhdGEAAgUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBAl3bGdQb2ludHMIBQ0kdDA5Njg2OTk3MjU5Al8xBAp3bGdBY3Rpb25zCAUNJHQwOTY4Njk5NzI1OQJfMgQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQRhZGRyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkBApmcmVlS2V5QWNjCQERa2V5VXNlckZyZWVQb2ludHMBBQRhZGRyBA1mcmVlUG9pbnRzQWNjCQBkAgkBC3ZhbHVlT3JFbHNlAgkAnwgBBQpmcmVlS2V5QWNjAAAFCXdsZ1BvaW50cwQLZnJlZUtleUR1Y2sJARFrZXlEdWNrRnJlZVBvaW50cwEFC2R1Y2tBc3NldElkBA5mcmVlUG9pbnRzRHVjawkBC3ZhbHVlT3JFbHNlAgkAnwgBBQtmcmVlS2V5RHVjawAABAdzdW1GcmVlCQBkAgUNZnJlZVBvaW50c0FjYwUOZnJlZVBvaW50c0R1Y2sED3N1bVRvRGlzdHJpYnV0ZQkAZAIJAGQCCQBkAgkAZAIFCHN0cmVuZ3RoBQhhY2N1cmFjeQUJaW50ZWxsZWN0BQllbmR1cmFuY2UFCWRleHRlcml0eQMJAGYCBQ9zdW1Ub0Rpc3RyaWJ1dGUFB3N1bUZyZWUJAAIBCQCsAgIJAKwCAgIPVGhlcmUgYXJlIG9ubHkgCQCkAwEFB3N1bUZyZWUCGiBmcmVlIHBvaW50cyB0byBkaXN0cmlidXRlBAhjaGFyc0tleQkBDGtleUR1Y2tDaGFycwEFC2R1Y2tBc3NldElkBAVjaGFycwkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEFCGNoYXJzS2V5AgkwXzBfMF8wXzACAV8EBm5ld0FjYwkAZQIFDWZyZWVQb2ludHNBY2MFD3N1bVRvRGlzdHJpYnV0ZQkAlAoCCQDOCAIJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUKZnJlZUtleUFjYwMJAGYCAAAFBm5ld0FjYwAABQZuZXdBY2MJAMwIAgkBDEludGVnZXJFbnRyeQIFC2ZyZWVLZXlEdWNrAwkAZgIAAAUGbmV3QWNjCQBkAgUOZnJlZVBvaW50c0R1Y2sFBm5ld0FjYwUOZnJlZVBvaW50c0R1Y2sJAMwIAgkBC1N0cmluZ0VudHJ5AgUIY2hhcnNLZXkJALkJAgkAzAgCCQCkAwEJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFY2hhcnMFDGNoYXJTdHJlbmd0aAUIc3RyZW5ndGgJAMwIAgkApAMBCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBWNoYXJzBQxjaGFyQWNjdXJhY3kFCGFjY3VyYWN5CQDMCAIJAKQDAQkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVjaGFycwUNY2hhckludGVsbGVjdAUJaW50ZWxsZWN0CQDMCAIJAKQDAQkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVjaGFycwUNY2hhckVuZHVyYW5jZQUJZW5kdXJhbmNlCQDMCAIJAKQDAQkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVjaGFycwUNY2hhckRleHRlcml0eQUJZGV4dGVyaXR5BQNuaWwCAV8FA25pbAUNcHJvbG9nQWN0aW9ucwUKd2xnQWN0aW9ucwAAAWkBHHNwbGl0QnlHbG9iYWxXZWlnaHRzUkVBRE9OTFkBBmFtb3VudAkAlAoCBQNuaWwJARJnZXROZWVkZWRNYXRlcmlhbHMBBQZhbW91bnQBaQEkc3BsaXRCeUdsb2JhbEFuZExvY2FsV2VpZ2h0c1JFQURPTkxZAwltYXRBbW91bnQJcmVzQW1vdW50CHRlcnJhaW5zBA10ZXJyYWluQ291bnRzCQENY291bnRUZXJyYWlucwEFCHRlcnJhaW5zCQCUCgIFA25pbAkAlAoCCQESZ2V0TmVlZGVkTWF0ZXJpYWxzAQUJbWF0QW1vdW50CQETZGlzdHJpYnV0ZUJ5V2VpZ2h0cwIFCXJlc0Ftb3VudAUNdGVycmFpbkNvdW50cwFpARNnZXRCYWNrcGFja1JFQURPTkxZAQtkdWNrQXNzZXRJZAkAlAoCBQNuaWwJALkJAgkBC2dldEJhY2twYWNrAQkBEWtleUJhY2twYWNrQnlEdWNrAQULZHVja0Fzc2V0SWQCAToBaQEUZ2V0V2FyZWhvdXNlUkVBRE9OTFkBC2xhbmRBc3NldElkBAVhc3NldAkBBXZhbHVlAQkA7AcBCQDZBAEFC2xhbmRBc3NldElkBAlsYW5kSW5kZXgJAGkCCQEPbnVtUGllY2VzQnlTaXplAQkAkQMCCQC1CQIIBQVhc3NldAtkZXNjcmlwdGlvbgIBXwULcmVjTGFuZFNpemUFBVNTSVpFBAppbmZyYUxldmVsCQELdmFsdWVPckVsc2UCCQCfCAEJARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQULbGFuZEFzc2V0SWQAAAkAlAoCBQNuaWwJALoJAgkBDGdldFdhcmVob3VzZQMJARJrZXlXYXJlaG91c2VCeUxhbmQBBQtsYW5kQXNzZXRJZAUJbGFuZEluZGV4BQppbmZyYUxldmVsAgE6AWkBCnNhdmVMYXN0VHgAAwkBASEBCQEPY29udGFpbnNFbGVtZW50AgkAzAgCBQt3bGdDb250cmFjdAkAzAgCBQ9lY29ub215Q29udHJhY3QJAMwIAgUSdG91cm5hbWVudENvbnRyYWN0CQDMCAIFDWFjcmVzQ29udHJhY3QFA25pbAgFAWkGY2FsbGVyCQACAQINQWNjZXNzIGRlbmllZAkAlAoCCQEGcHJvbG9nAQUBaQAqAWkBD3VwZGF0ZUR1Y2tTdGF0cwILZHVja0Fzc2V0SWQHZGVsdGFYUAMJAQIhPQIIBQFpBmNhbGxlcgUPZWNvbm9teUNvbnRyYWN0CQACAQINQWNjZXNzIGRlbmllZAkBF3VwZGF0ZUR1Y2tTdGF0c0ludGVybmFsAgULZHVja0Fzc2V0SWQFB2RlbHRhWFABaQEOdXBkYXRlQWNjU3RhdHMCBGFkZHIHZGVsdGFYUAMJAQEhAQkBD2NvbnRhaW5zRWxlbWVudAIJAMwIAgULd2xnQ29udHJhY3QJAMwIAgUPZWNvbm9teUNvbnRyYWN0CQDMCAIFDWFjcmVzQ29udHJhY3QFA25pbAgFAWkGY2FsbGVyCQACAQINQWNjZXNzIGRlbmllZAkBFnVwZGF0ZUFjY1N0YXRzSW50ZXJuYWwCBQRhZGRyBQdkZWx0YVhQAWkBCWVxdWlwRHVjawEJZXF1aXBtZW50BA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBARhZGRyCQClCAEIBQFpDG9yaWdpbkNhbGxlcgQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQRhZGRyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkAwkBD2NoZWNrVG91cm5hbWVudAEFC2R1Y2tBc3NldElkCQACAQIZZXF1aXBEdWNrX2NoZWNrVG91cm5hbWVudAMJAQ1jaGVja0RlbGl2ZXJ5AQULZHVja0Fzc2V0SWQJAAIBAhdlcXVpcER1Y2tfY2hlY2tEZWxpdmVyeQQFZXFLZXkJARBrZXlEdWNrRXF1aXBtZW50AQULZHVja0Fzc2V0SWQEC2N1cnJlbnRTZWdzCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAKIIAQUFZXFLZXkCFyw7LF8sOyxfLDssXyw7LF8sOyxfLDssAgFfBAVicEtleQkBEWtleUJhY2twYWNrQnlEdWNrAQULZHVja0Fzc2V0SWQEC2N1cnJlbnRQYWNrCQELZ2V0QmFja3BhY2sBBQVicEtleQQFbmV3RXEJALUJAgUJZXF1aXBtZW50AgFfAwkBAiE9AgkAkAMBBQVuZXdFcQULTlVNU0VHTUVOVFMJAAIBAhZXcm9uZyBlcXVpcG1lbnQgc3RyaW5nBAl0ZW1wUHJvZEIJAQZkcmVzc0IEBQtjdXJyZW50U2VncwkBDnByb2RTdHJUb0J5dGVzAQkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kBgUDbmlsBAhzZWdCcEF1eAkAkQMCCQC1CQIJAJEDAgUFbmV3RXEFC3NlZ0JhY2twYWNrAgE7AAEECmJ1ZmZFZmZlY3QDCQAAAgUIc2VnQnBBdXgCAAAABARhdXgwCQCRAwIJALUJAgUIc2VnQnBBdXgCASwAAAMJAAACBQRhdXgwAgAAAAQGaWR4Q250CQC1CQIFBGF1eDACAToEA2lkeAkAkQMCBQZpZHhDbnQAAAQDY250CQCRAwIFBmlkeENudAABAwMDAwMJAAACBQNpZHgCAjA2BgkAAAIFA2lkeAICMDcGCQAAAgUDaWR4AgIwOAkBAiE9AgUDY250AgAHCQBmAgkBDXBhcnNlSW50VmFsdWUBBQNjbnQAAAcJAQ1wYXJzZUludFZhbHVlAQkAkQMCCQC1CQIJAJEDAgUQcHJvZHVjdGlvbk1hdHJpeAkBDXBhcnNlSW50VmFsdWUBBQNpZHgCAV8FCnJJZHhFZmZlY3QAAAQFc3RhdHMJAQxnZXREdWNrU3RhdHMEBQR0aGlzBQtkdWNrQXNzZXRJZAUKYnVmZkVmZmVjdAYECG5ld1Byb2RCCQEGZHJlc3NCBAUFbmV3RXEFCXRlbXBQcm9kQgcFBXN0YXRzBApuZXdQcm9kU3RyCQEOYnl0ZXNUb1Byb2RTdHIBBQhuZXdQcm9kQgkAlAoCCQDOCAIJAMwIAgkBC1N0cmluZ0VudHJ5AgUFZXFLZXkFCWVxdWlwbWVudAkAzAgCCQELU3RyaW5nRW50cnkCBQVicEtleQkAugkCCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCmJwSWR4TGV2ZWwJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhSZXMJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhNYXQJAMwIAgUKbmV3UHJvZFN0cgUDbmlsAgE6CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQxrZXlEdWNrQnVmZnMBBQtkdWNrQXNzZXRJZAkAuQkCCQDMCAIJAKQDAQkAkQMCBQVzdGF0cwAHCQDMCAIJAKQDAQkAkQMCBQVzdGF0cwAICQDMCAIJAKQDAQkAkQMCBQVzdGF0cwAJCQDMCAIJAKQDAQkAkQMCBQVzdGF0cwAKCQDMCAIJAKQDAQkAkQMCBQVzdGF0cwALBQNuaWwCAV8FA25pbAUNcHJvbG9nQWN0aW9ucwAAAWkBD2ZvcnRpZmljYXRlTGFuZAILbGFuZEFzc2V0SWQEcGxhbgQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQEYWRkcgkApQgBCAUBaQxvcmlnaW5DYWxsZXIEC2R1Y2tBc3NldElkCQELdmFsdWVPckVsc2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFBGFkZHICAAQJZHVja1N0YXRzCQEMZ2V0RHVja1N0YXRzBAUEdGhpcwULZHVja0Fzc2V0SWQAAAcEB2ZvcnRLZXkJARdrZXlGb3J0aWZpY2F0aW9uc0J5TGFuZAEFC2xhbmRBc3NldElkBAxjdXJyZW50Rm9ydHMJALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBBQdmb3J0S2V5Agw6MF8xNTowXzE4OjACAV8EBWFzc2V0CQEFdmFsdWUBCQDsBwEJANkEAQULbGFuZEFzc2V0SWQECWxhbmRJbmRleAkAaQIJAQ9udW1QaWVjZXNCeVNpemUBCQCRAwIJALUJAggFBWFzc2V0C2Rlc2NyaXB0aW9uAgFfBQtyZWNMYW5kU2l6ZQUFU1NJWkUECmluZnJhTGV2ZWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAAABAV3aEtleQkBEmtleVdhcmVob3VzZUJ5TGFuZAEFC2xhbmRBc3NldElkBAJ3aAkBDGdldFdhcmVob3VzZQMFBXdoS2V5BQlsYW5kSW5kZXgFCmluZnJhTGV2ZWwEB2N1ckxvZnQJALUJAgkAkQMCBQJ3aAUJd2hJZHhMT0ZUAgFfBARjdXJPCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUHY3VyTG9mdAULdm9sT2NjdXBpZWQEBGN1ckYJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQdjdXJMb2Z0BQd2b2xGcmVlBAhuZXdGb3J0cwkAtQkCBQRwbGFuAgFfBA8kdDAxMDQwOTcxMDQyMTIJAQVmb3J0QgYFDGN1cnJlbnRGb3J0cwkBDnByb2RTdHJUb0J5dGVzAQkAkQMCBQJ3aAUJd2hJZHhQcm9kBQRjdXJPBQRjdXJGBgUDbmlsBAl0ZW1wUHJvZEIIBQ8kdDAxMDQwOTcxMDQyMTICXzEEBXRlbXBPCAUPJHQwMTA0MDk3MTA0MjEyAl8yBAV0ZW1wRggFDyR0MDEwNDA5NzEwNDIxMgJfMwQPJHQwMTA0MjE1MTA0MzExCQEFZm9ydEIGBQhuZXdGb3J0cwUJdGVtcFByb2RCBQV0ZW1wTwUFdGVtcEYHBQlkdWNrU3RhdHMECG5ld1Byb2RCCAUPJHQwMTA0MjE1MTA0MzExAl8xBARuZXdPCAUPJHQwMTA0MjE1MTA0MzExAl8yBARuZXdGCAUPJHQwMTA0MjE1MTA0MzExAl8zBApuZXdQcm9kU3RyCQEOYnl0ZXNUb1Byb2RTdHIBBQhuZXdQcm9kQgQKbmV3TG9mdFN0cgkAuQkCCQDMCAIJAJEDAgUHY3VyTG9mdAUJdm9sTG9ja2VkCQDMCAIJAKQDAQUEbmV3TwkAzAgCCQCkAwEFBG5ld0YJAMwIAgkAkQMCBQdjdXJMb2Z0BQh2b2xUb3RhbAUDbmlsAgFfCQCUCgIJAM4IAgkAzAgCCQELU3RyaW5nRW50cnkCBQdmb3J0S2V5BQRwbGFuCQDMCAIJAQtTdHJpbmdFbnRyeQIFBXdoS2V5CQC6CQIJAMwIAgkAkQMCBQJ3aAULd2hJZHhMZXZlbHMJAMwIAgkAkQMCBQJ3aAUId2hJZHhSZXMJAMwIAgkAkQMCBQJ3aAUId2hJZHhNYXQJAMwIAgUKbmV3UHJvZFN0cgkAzAgCBQpuZXdMb2Z0U3RyBQNuaWwCAToFA25pbAUNcHJvbG9nQWN0aW9ucwAAAWkBE2luaXREdWNrVG91ckF0dGVtcHQBC2R1Y2tBc3NldElkAwkBAiE9AggFAWkGY2FsbGVyBRJ0b3VybmFtZW50Q29udHJhY3QJAAIBAg1BY2Nlc3MgZGVuaWVkBAlrZXlIZWFsdGgJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQEBW1heEhQCQEJbWF4SGVhbHRoAQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEMa2V5RHVja0xldmVsAQULZHVja0Fzc2V0SWQAAAQJY3VySGVhbHRoCQELdmFsdWVPckVsc2UCCQCfCAEFCWtleUhlYWx0aAUFbWF4SFAECWN1ckxvY0tleQkBD2tleUR1Y2tMb2NhdGlvbgEFC2R1Y2tBc3NldElkBAtjdXJMb2NhdGlvbgkBC3ZhbHVlT3JFbHNlAgkAoggBBQljdXJMb2NLZXkFD0RFRkFVTFRMT0NBVElPTgQGbGFzdElkCQELdmFsdWVPckVsc2UCCQCaCAIFEnRvdXJuYW1lbnRDb250cmFjdAUNbGFzdFRvdXJJZEtleQAABAx0b3VyTG9jYXRpb24JAKwCAgkApAMBBQZsYXN0SWQCBF9UXzAJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDmtleVNhdmVkSGVhbHRoAQULZHVja0Fzc2V0SWQFCWN1ckhlYWx0aAkAzAgCCQEMSW50ZWdlckVudHJ5AgUJa2V5SGVhbHRoBQVtYXhIUAkAzAgCCQELU3RyaW5nRW50cnkCCQEQa2V5U2F2ZWRMb2NhdGlvbgEFC2R1Y2tBc3NldElkBQtjdXJMb2NhdGlvbgkAzAgCCQELU3RyaW5nRW50cnkCBQljdXJMb2NLZXkFDHRvdXJMb2NhdGlvbgUDbmlsBQx0b3VyTG9jYXRpb24BaQEMYnJlYWtBdHRlbXB0AAQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQkApQgBCAUBaQZjYWxsZXICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQECWN1ckxvY0tleQkBD2tleUR1Y2tMb2NhdGlvbgEFC2R1Y2tBc3NldElkBAtjdXJMb2NhdGlvbgkBC3ZhbHVlT3JFbHNlAgkAoggBBQljdXJMb2NLZXkFD0RFRkFVTFRMT0NBVElPTgMJAQIhPQIJAJEDAgkAtQkCBQtjdXJMb2NhdGlvbgIBXwUKbG9jSWR4VHlwZQIBVAkAAgECIllvdXIgZHVjayBpcyBub3QgaW4gdGhlIHRvdXJuYW1lbnQEC3NhdmVkSGVhbHRoCQERQGV4dHJOYXRpdmUoMTA1NSkBCQEOa2V5U2F2ZWRIZWFsdGgBBQtkdWNrQXNzZXRJZAQNc2F2ZWRMb2NhdGlvbgkBEUBleHRyTmF0aXZlKDEwNTgpAQkBEGtleVNhdmVkTG9jYXRpb24BBQtkdWNrQXNzZXRJZAkAlAoCCQDNCAIJAM0IAgUNcHJvbG9nQWN0aW9ucwkBDEludGVnZXJFbnRyeQIJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQFC3NhdmVkSGVhbHRoCQELU3RyaW5nRW50cnkCBQljdXJMb2NLZXkFDXNhdmVkTG9jYXRpb24FC2N1ckxvY2F0aW9uAWkBFGJyZWFrQXR0ZW1wdENhbGxiYWNrAAMJAQIhPQIIBQFpBmNhbGxlcgUSdG91cm5hbWVudENvbnRyYWN0CQACAQINQWNjZXNzIGRlbmllZAQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBCQClCAEIBQFpDG9yaWdpbkNhbGxlcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQENa2V5RHVja0hlYWx0aAEFC2R1Y2tBc3NldElkCQERQGV4dHJOYXRpdmUoMTA1NSkBCQEOa2V5U2F2ZWRIZWFsdGgBBQtkdWNrQXNzZXRJZAkAzAgCCQELU3RyaW5nRW50cnkCCQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQJARFAZXh0ck5hdGl2ZSgxMDU4KQEJARBrZXlTYXZlZExvY2F0aW9uAQULZHVja0Fzc2V0SWQFA25pbAIUYnJlYWtBdHRlbXB0Q2FsbGJhY2sBaQEWZXhpdFRvdXJuYW1lbnRJbnRlcm5hbAELZHVja0Fzc2V0SWQDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAg1BY2Nlc3MgZGVuaWVkBAtzYXZlZEhlYWx0aAkBEUBleHRyTmF0aXZlKDEwNTUpAQkBDmtleVNhdmVkSGVhbHRoAQULZHVja0Fzc2V0SWQEDXNhdmVkTG9jYXRpb24JARFAZXh0ck5hdGl2ZSgxMDU4KQEJARBrZXlTYXZlZExvY2F0aW9uAQULZHVja0Fzc2V0SWQJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDWtleUR1Y2tIZWFsdGgBBQtkdWNrQXNzZXRJZAULc2F2ZWRIZWFsdGgJAMwIAgkBC1N0cmluZ0VudHJ5AgkBD2tleUR1Y2tMb2NhdGlvbgEFC2R1Y2tBc3NldElkBQ1zYXZlZExvY2F0aW9uBQNuaWwHAWkBFGV4aXREZWxpdmVyeUludGVybmFsAQtkdWNrQXNzZXRJZAMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECDUFjY2VzcyBkZW5pZWQEAWUJARJleGl0RGVsaXZlcnlDb21tb24EBQtkdWNrQXNzZXRJZAcAAAAACQCUCgIJAM4IAggFAWUCXzEIBQFlAl8yBwFpARBhdXRvRXhpdERlbGl2ZXJ5BAtkdWNrQXNzZXRJZAVuZXdIUAZyZWFzb24Fc2NvcmUDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAg1BY2Nlc3MgZGVuaWVkBAFlCQESZXhpdERlbGl2ZXJ5Q29tbW9uBAULZHVja0Fzc2V0SWQGBQVuZXdIUAUFc2NvcmUJAJQKAggFAWUCXzEIBQFlAl8zAWkBDWJyZWFrRGVsaXZlcnkACQCUCgIJAQZwcm9sb2cBBQFpAg1icmVha0RlbGl2ZXJ5AWkBDnByZXBhcmVSb2JiZXJ5AgdtZXNzYWdlA3NpZwQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQEBIQEJAMQTAwUHbWVzc2FnZQUDc2lnBQNwdWIJAAIBAhhzaWduYXR1cmUgZG9lcyBub3QgbWF0Y2gDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAiJleGFjdGx5IDEgcGF5bWVudCBtdXN0IGJlIGF0dGFjaGVkBANwbXQJAJEDAggFAWkIcGF5bWVudHMAAAQGd2xnQW10CAUDcG10BmFtb3VudAMDCQEBIQEJAQlpc0RlZmluZWQBCAUDcG10B2Fzc2V0SWQGCQECIT0CCQEFdmFsdWUBCAUDcG10B2Fzc2V0SWQFCndsZ0Fzc2V0SWQJAAIBAhVXTEdPTEQgcGF5bWVudHMgb25seSEEBXBhcnRzCQC1CQIJALAJAQUHbWVzc2FnZQIBfAMJAGYCAAIJAJADAQUFcGFydHMJAAIBAhRXcm9uZyBtZXNzYWdlIGZvcm1hdAQJdHhGcm9tTXNnAwkAZwIJAJADAQUFcGFydHMAAgkAkQMCBQVwYXJ0cwACAgAECHVzZXJBZGRyCQClCAEIBQFpBmNhbGxlcgQGbGFzdFR4CQELdmFsdWVPckVsc2UCCQCiCAEJARFrZXlMYXN0VHhJZEJ5VXNlcgEFCHVzZXJBZGRyAgADCQECIT0CBQZsYXN0VHgFCXR4RnJvbU1zZwkAAgEJAKwCAgkArAICCQCsAgICHlR4IGlkcyBkb24ndCBtYXRjaCEgSW4gc3RhdGU6IAUGbGFzdFR4AgosIGluIG1zZzogBQl0eEZyb21Nc2cEC2R1Y2tBc3NldElkCQCRAwIFBXBhcnRzAAADCQEPY2hlY2tUb3VybmFtZW50AQULZHVja0Fzc2V0SWQJAAIBAh5wcmVwYXJlUm9iYmVyeV9jaGVja1RvdXJuYW1lbnQDCQENY2hlY2tEZWxpdmVyeQEFC2R1Y2tBc3NldElkCQACAQIccHJlcGFyZVJvYmJlcnlfY2hlY2tEZWxpdmVyeQQHcm9iQ29zdAgJAQ5nZXRSb2JiZXJ5RGF0YQIFBHRoaXMFC2R1Y2tBc3NldElkAl8xAwkAZgIFB3JvYkNvc3QFBndsZ0FtdAkAAgEJAKwCAgkArAICCQCsAgICCFBheW1lbnQgCQCkAwEFBndsZ0FtdAIMIDwgcmVxdWlyZWQgCQCkAwEFB3JvYkNvc3QECmNhbmRpZGF0ZXMJALUJAgkAkQMCBQVwYXJ0cwABAgFfBANub3cIBQlsYXN0QmxvY2sJdGltZXN0YW1wBAlkdWNrU3RhdGUJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBE2tleUR1Y2tSb2JiZXJ5U3RhdGUBBQtkdWNrQXNzZXRJZAAABApsb2NrZWRMYW5kCQELdmFsdWVPckVsc2UCCQCiCAEJARNrZXlMb2NrZWRMYW5kQnlEdWNrAQULZHVja0Fzc2V0SWQCAAQHbGFuZEVUQQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQESa2V5TGFuZENvb2xkb3duRVRBAQUKbG9ja2VkTGFuZAAAAwMJAQIhPQIFCWR1Y2tTdGF0ZQULZHVja0lkeEZyZWUJAGYCBQdsYW5kRVRBBQNub3cHCQACAQkArAICAidZb3UgYWxyZWFkeSBzdGFydGVkIHJvYmJpbmcsIHdhaXQgdGlsbCAJAKQDAQUHbGFuZEVUQQoBB2NoZWNrZXICA2FjYwtsYW5kQXNzZXRJZAQFc3RhdGUJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBE2tleUxhbmRSb2JiZXJ5U3RhdGUBBQtsYW5kQXNzZXRJZAAABAtjb29sZG93bkVUQQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQESa2V5TGFuZENvb2xkb3duRVRBAQULbGFuZEFzc2V0SWQAAAMJAGYCBQVzdGF0ZQkAkAMBBRBsYW5kUm9iQ29vbGRvd25zCQACAQINSW52YWxpZCBzdGF0ZQMJAGYCBQNub3cFC2Nvb2xkb3duRVRBBApzdGFrZWRUaW1lCQELdmFsdWVPckVsc2UCCQCfCAEJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQULbGFuZEFzc2V0SWQAAAMJAGcCAAAFCnN0YWtlZFRpbWUFA2FjYwQBYQkBBXZhbHVlAQkA7AcBCQDZBAEFC2xhbmRBc3NldElkBAFkCQC1CQIIBQFhC2Rlc2NyaXB0aW9uAgFfBAZwaWVjZXMJAQ9udW1QaWVjZXNCeVNpemUBCQCRAwIFAWQFC3JlY0xhbmRTaXplBAxwcm9kdWN0aXZpdHkJAQxhcHBseUJvbnVzZXMCBQtsYW5kQXNzZXRJZAUGcGllY2VzBAlkZWx0YVRpbWUJAGUCBQNub3cFCnN0YWtlZFRpbWUECGF2YWlsUmVzCQBrAwUJZGVsdGFUaW1lCQBoAgUMcHJvZHVjdGl2aXR5BQZwaWVjZXMFCURBWU1JTExJUwMJAGYCBQ5NSU5fUkVTX1RPX1JPQgUIYXZhaWxSZXMFA2FjYwkAzQgCBQNhY2MFC2xhbmRBc3NldElkBQNhY2MECGZpbHRlcmVkCgACJGwFCmNhbmRpZGF0ZXMKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBB2NoZWNrZXICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDEwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoDCQAAAgkAkAMBBQhmaWx0ZXJlZAAACQACAQIZTm8gY2FuZGlkYXRlcyBmb3Igcm9iYmVyeQQGcm5kSWR4CQEPZ2V0UmFuZG9tTnVtYmVyAwkAkAMBBQhmaWx0ZXJlZAUHbWVzc2FnZQUDc2lnBAtsYW5kQXNzZXRJZAkAkQMCBQhmaWx0ZXJlZAUGcm5kSWR4CQCUCgIJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBE2tleUxhbmRSb2JiZXJ5U3RhdGUBBQtsYW5kQXNzZXRJZAUMcm9iSWR4TG9ja2VkCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQESa2V5TGFuZENvb2xkb3duRVRBAQULbGFuZEFzc2V0SWQJAGQCBQNub3cJAJEDAgUQbGFuZFJvYkNvb2xkb3ducwUMcm9iSWR4TG9ja2VkCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQETa2V5RHVja1JvYmJlcnlTdGF0ZQEFC2R1Y2tBc3NldElkBRBkdWNrSWR4UHJlcGFyaW5nCQDMCAIJAQtTdHJpbmdFbnRyeQIJARNrZXlMb2NrZWRMYW5kQnlEdWNrAQULZHVja0Fzc2V0SWQFC2xhbmRBc3NldElkBQNuaWwFDXByb2xvZ0FjdGlvbnMFC2xhbmRBc3NldElkAWkBB3JvYkxhbmQCB21lc3NhZ2UDc2lnBA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQEhAQkAxBMDBQdtZXNzYWdlBQNzaWcFA3B1YgkAAgECGHNpZ25hdHVyZSBkb2VzIG5vdCBtYXRjaAQIdXNlckFkZHIJAKUIAQgFAWkGY2FsbGVyBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFCHVzZXJBZGRyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkBANub3cIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQCUCgIJAM0IAgUNcHJvbG9nQWN0aW9ucwkBDEludGVnZXJFbnRyeQIJARhrZXlMYXN0Um9iYmVyeVRpbWVCeUR1Y2sBBQtkdWNrQXNzZXRJZAUDbm93AAABaQEOYWNjZXB0RGVsaXZlcnkABA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQQIdXNlckFkZHIJAKUIAQgFAWkGY2FsbGVyBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFCHVzZXJBZGRyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkBAlmdW5kVG90YWwJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPZWNvbm9teUNvbnRyYWN0BQ9kZWxpdmVyeUZ1bmRLZXkAAAQLbG9ja2VkVG90YWwJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPZWNvbm9teUNvbnRyYWN0BRFkZWxpdmVyeUxvY2tlZEtleQAAAwkAZgIFFU1JTl9VU0RUX0ZFRV9ERUxJVkVSWQkAZQIFCWZ1bmRUb3RhbAULbG9ja2VkVG90YWwJAAIBCQCsAgIJAKwCAgkArAICAiBEZWxpdmVyeSBpcyBub3QgYXZhaWxhYmxlLCBmdW5kPQkBCmZpeGVkUG9pbnQCBQlmdW5kVG90YWwABgIJLCBsb2NrZWQ9CQEKZml4ZWRQb2ludAIFC2xvY2tlZFRvdGFsAAYEA25vdwgFCWxhc3RCbG9jawl0aW1lc3RhbXAECGRlbGF5RVRBCQELdmFsdWVPckVsc2UCCQCfCAEJARZrZXlEZWxpdmVyeURlbGF5QnlEdWNrAQULZHVja0Fzc2V0SWQAAAMJAGYCBQhkZWxheUVUQQUDbm93CQACAQkArAICAipEZWxpdmVyeSBpcyBmb3JiaWRkZW4gZm9yIHlvdXIgZHVjayB1bnRpbCAJAKQDAQUIZGVsYXlFVEEEBmhlYWx0aAkBEUBleHRyTmF0aXZlKDEwNTUpAQkBDWtleUR1Y2tIZWFsdGgBBQtkdWNrQXNzZXRJZAMJAGcCAAAFBmhlYWx0aAkAAgECK1lvdSBjYW5ub3QgYWNjZXB0IGRlbGl2ZXJ5IHdpdGggemVybyBoZWFsdGgECGNvdW50S2V5CQEUa2V5VXNlckRlbGl2ZXJ5Q291bnQBBQh1c2VyQWRkcgQFY291bnQJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUIY291bnRLZXkAAAQHbGFzdERheQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEWa2V5VXNlckxhc3REZWxpdmVyeURheQEFCHVzZXJBZGRyAAAEBXRvZGF5CQBpAgUDbm93BQlEQVlNSUxMSVMEBWFjcmVzCQELdmFsdWVPckVsc2UCCQCaCAIFDWFjcmVzQ29udHJhY3QJARprZXlBY3Jlc1N0YWtlZEFtb3VudEJ5VXNlcgEFCHVzZXJBZGRyAAAEEWFsbG93ZWREZWxpdmVyaWVzCQBkAgUXQUxMT1dFRF9GUkVFX0RFTElWRVJJRVMJAGkCBQVhY3JlcwUaQUNSRVNfRk9SX0RFTElWRVJZX0FUVEVNUFQDAwkAZwIFBWNvdW50BRFhbGxvd2VkRGVsaXZlcmllcwkAAAIFB2xhc3REYXkFBXRvZGF5BwkAAgEJAKwCAgkArAICAhFZb3UgYWxyZWFkeSB1c2VkIAkApAMBBRFhbGxvd2VkRGVsaXZlcmllcwIcIGRlbGl2ZXJ5IGF0dGVtcHRzIGZvciB0b2RheQMJAQ9jaGVja1RvdXJuYW1lbnQBBQtkdWNrQXNzZXRJZAkAAgECHmFjY2VwdERlbGl2ZXJ5X2NoZWNrVG91cm5hbWVudAMJAQ1jaGVja0RlbGl2ZXJ5AQULZHVja0Fzc2V0SWQJAAIBAhxhY2NlcHREZWxpdmVyeV9jaGVja0RlbGl2ZXJ5BA5uZXdMb2NrZWRUb3RhbAkBBWFzSW50AQkA/AcEBQ9lY29ub215Q29udHJhY3QCFHVwZGF0ZURlbGl2ZXJ5TG9ja2VkCQDMCAIJAGQCBQtsb2NrZWRUb3RhbAUVTUlOX1VTRFRfRkVFX0RFTElWRVJZBQNuaWwFA25pbAQJY3VyTG9jS2V5CQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQEC2N1ckxvY2F0aW9uCQELdmFsdWVPckVsc2UCCQCiCAEFCWN1ckxvY0tleQUPREVGQVVMVExPQ0FUSU9OBBBkZWxpdmVyeUxvY2F0aW9uCQCsAgIJAKQDAQUDbm93AgRfRF8wCQCUCgIJAM4IAgkAzAgCCQELU3RyaW5nRW50cnkCCQEQa2V5U2F2ZWRMb2NhdGlvbgEFC2R1Y2tBc3NldElkBQtjdXJMb2NhdGlvbgkAzAgCCQELU3RyaW5nRW50cnkCBQljdXJMb2NLZXkFEGRlbGl2ZXJ5TG9jYXRpb24JAMwIAgkBDEludGVnZXJFbnRyeQIFCGNvdW50S2V5AwkBAiE9AgUHbGFzdERheQUFdG9kYXkAAAUFY291bnQFA25pbAUNcHJvbG9nQWN0aW9ucwkAlAoCBRBkZWxpdmVyeUxvY2F0aW9uBQ5uZXdMb2NrZWRUb3RhbAFpARVjaGVja0RlbGl2ZXJ5Q2FsbGJhY2sBC2R1Y2tBc3NldElkAwkBAiE9AggFAWkGY2FsbGVyBRJ0b3VybmFtZW50Q29udHJhY3QJAAIBAg1BY2Nlc3MgZGVuaWVkCQCUCgIFA25pbAkBDWNoZWNrRGVsaXZlcnkBBQtkdWNrQXNzZXRJZAFpAQtidXlSb2JvRHVjawADCQEBIQEFE0tTX0FMTE9XX1JPQk9fRFVDS1MJAAIBAhVGZWF0dXJlIGlzIHR1cm5lZCBvZmYEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQIcRXhhY3RseSBvbmUgcGF5bWVudCByZXF1aXJlZAQDcG10CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAADCQECIT0CCAUDcG10B2Fzc2V0SWQFC3VzZHRBc3NldElkCQACAQIaQWxsb3dlZCBVU0RUIHBheW1lbnQgb25seSEDCQECIT0CCAUDcG10BmFtb3VudAUOUk9CT19EVUNLX1VTRFQJAAIBCQCsAgIJAKwCAgIbUGF5bWVudCBhdHRhY2hlZCBzaG91bGQgYmUgCQEKZml4ZWRQb2ludAIFDlJPQk9fRFVDS19VU0RUAAYCBSBVU0RUBAduZXh0TnVtCQELdmFsdWVPckVsc2UCCQCfCAEJAQ9rZXlOZXh0Um9ib0R1Y2sAAAAEBWJ5dGV6CQCaAwEFB25leHROdW0EBG5hbWUJAKwCAgkArAICBQtST0JPX1BSRUZJWAIBLQkAsgICCQDcBAEFBWJ5dGV6AAgEBWNvbG9yCQCyAgIJANwEAQkA1BYBBQVieXRlegAGBAVpc3N1ZQkAwggFBQRuYW1lCQCsAgICN1JvYm8gRHVjayBORlQgZm9yIFdhdmVzTGFuZHMgZ2FtZSwgYmFja2dyb3VuZCBjb2xvciA9ICMFBWNvbG9yAAEAAAcEB2Fzc2V0SWQJALgIAQUFaXNzdWUJAJQKAgkAzQgCCQDNCAIJAM0IAgkAzQgCBQ1wcm9sb2dBY3Rpb25zCQEMSW50ZWdlckVudHJ5AgkBD2tleU5leHRSb2JvRHVjawAJAGQCBQduZXh0TnVtAAEFBWlzc3VlCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQxvcmlnaW5DYWxsZXIAAQUHYXNzZXRJZAkBDlNjcmlwdFRyYW5zZmVyAwUPZWNvbm9teUNvbnRyYWN0CAUDcG10BmFtb3VudAULdXNkdEFzc2V0SWQJAJQKAgkA2AQBBQdhc3NldElkBQVjb2xvcgAzg+f9", "height": 2847866, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: EziVAj4U89U5rMMREUCj1TwvFK2H2apHSs566XMv53yq Next: 6tWZBaKfp3Tk73vDQbYUBTXFsSwmGArxTrLke1uqc7xf Diff:
OldNewDifferences
420420 let cE = {
421421 let cF = cD
422422 if ((base58'2W' == cF))
423+ then if (cz)
424+ then base58'CWsMtTZC5BjjoL4Q1ayW4Wwb1ehGACQB6DrKyPgotKfm'
425+ else base58'6LfPuKJjLgekmncBhMg2LZyMTNVzZBccXR28ySXm9uXD'
426+ else if ((base58'2T' == cF))
427+ then base58'6LfPuKJjLgekmncBhMg2LZyMTNVzZBccXR28ySXm9uXD'
428+ else throw("Unknown chain")
429+ }
430+
431+let cG = {
432+ let cF = cD
433+ if ((base58'2W' == cF))
423434 then base58'9wc3LXNA4TEBsXyKtoLE9mrbDD7WMHXvXrCjZvabLAsi'
424435 else if ((base58'2T' == cF))
425436 then base58'6mWwf9mZBjVgkC54idpyaZLQfAosD914wT8fGf2iiY63'
426437 else throw("Unknown chain")
427438 }
428439
429-let cG = {
440+let cH = {
430441 let cF = cD
431442 if ((base58'2W' == cF))
432443 then "3PQCuvFbvh4LkPUnrnU1z3jnbA1p9m3WNhv"
435446 else throw("Unknown chain")
436447 }
437448
438-let cH = {
449+let cI = {
439450 let cF = cD
440451 if ((base58'2W' == cF))
441452 then 10000000000
444455 else throw("Unknown chain")
445456 }
446457
447-let cI = {
458+let cJ = {
448459 let cF = cD
449460 if ((base58'2W' == cF))
450461 then cC
453464 else throw("Unknown chain")
454465 }
455466
456-let cJ = {
467+let cK = {
457468 let cF = cD
458469 if ((base58'2W' == cF))
459470 then 10800000
462473 else throw("Unknown chain")
463474 }
464475
465-let cK = "__"
466-
467-let cL = 1000000
468-
469-let cM = 100000000
470-
471-let cN = 25
472-
473-let cO = 100
474-
475-let cP = 225
476-
477-let cQ = 400
478-
479-let cR = 625
480-
481-let cS = [0, 1, 2, 3, 4, 5]
482-
483-func cT (cU,cV) = valueOrErrorMessage(getString(cU, cV), makeString(["mandatory ", toString(cU), ".", cV, " is not defined"], ""))
484-
485-
486-let cW = 1
487-
488-let cX = 2
489-
490-let cY = 3
491-
492-let cZ = 4
493-
494-let da = 7
495-
496-let db = 8
497-
498-func dc () = "%s__restConfig"
499-
500-
501-func dd () = "%s__restAddr"
502-
503-
504-func de (df) = split_4C(cT(df, dc()), cK)
505-
506-
507-func dg (dh,di) = valueOrErrorMessage(addressFromString(dh[di]), ("Rest cfg doesn't contain address at index " + toString(di)))
508-
509-
510-let dj = addressFromStringValue(valueOrElse(getString(this, dd()), cG))
511-
512-let dh = de(dj)
513-
514-let aq = dg(dh, cW)
515-
516-let dk = dg(dh, cX)
517-
518-let dl = dg(dh, cY)
519-
520-let dm = dg(dh, cZ)
521-
522-let dn = dg(dh, da)
523-
524-let do = dg(dh, db)
525-
526-let dp = 0
527-
528-let dq = 1
529-
530-let dr = 2
531-
532-let ds = 3
533-
534-let dt = "wlg_assetId"
535-
536-let du = valueOrErrorMessage(getBinary(dm, dt), "WLGOLD is not issued yet")
537-
538-let dv = "acresAssetId"
539-
540-let dw = valueOrErrorMessage(getBinary(do, dv), "ACRES is not issued yet")
541-
542-let dx = 2
543-
544-func dy (cU) = ("finishBlockForAddr_" + cU)
545-
546-
547-func dz () = "resTypesProportions"
548-
549-
550-func dA (dB) = ("resTypesByContinent_" + dB)
551-
552-
553-func dC (bC) = ("stakedLandsByOwner_" + bC)
554-
555-
556-func dD (bC) = ("stakedPiecesByOwner_" + bC)
557-
558-
559-func dE (dF) = {
560- let cF = dF
476+let cL = "__"
477+
478+let cM = 1000000
479+
480+let cN = 100000000
481+
482+let cO = 25
483+
484+let cP = 100
485+
486+let cQ = 225
487+
488+let cR = 400
489+
490+let cS = 625
491+
492+let cT = [0, 1, 2, 3, 4, 5]
493+
494+func cU (cV,cW) = valueOrErrorMessage(getString(cV, cW), makeString(["mandatory ", toString(cV), ".", cW, " is not defined"], ""))
495+
496+
497+let cX = 1
498+
499+let cY = 2
500+
501+let cZ = 3
502+
503+let da = 4
504+
505+let db = 7
506+
507+let dc = 8
508+
509+func dd () = "%s__restConfig"
510+
511+
512+func de () = "%s__restAddr"
513+
514+
515+func df (dg) = split_4C(cU(dg, dd()), cL)
516+
517+
518+func dh (di,dj) = valueOrErrorMessage(addressFromString(di[dj]), ("Rest cfg doesn't contain address at index " + toString(dj)))
519+
520+
521+let dk = addressFromStringValue(valueOrElse(getString(this, de()), cH))
522+
523+let di = df(dk)
524+
525+let aq = dh(di, cX)
526+
527+let dl = dh(di, cY)
528+
529+let dm = dh(di, cZ)
530+
531+let dn = dh(di, da)
532+
533+let do = dh(di, db)
534+
535+let dp = dh(di, dc)
536+
537+let dq = 0
538+
539+let dr = 1
540+
541+let ds = 2
542+
543+let dt = 3
544+
545+let du = "wlg_assetId"
546+
547+let dv = valueOrErrorMessage(getBinary(dn, du), "WLGOLD is not issued yet")
548+
549+let dw = "acresAssetId"
550+
551+let dx = valueOrErrorMessage(getBinary(dp, dw), "ACRES is not issued yet")
552+
553+let dy = 2
554+
555+func dz (cV) = ("finishBlockForAddr_" + cV)
556+
557+
558+func dA () = "resTypesProportions"
559+
560+
561+func dB (dC) = ("resTypesByContinent_" + dC)
562+
563+
564+func dD (bC) = ("stakedLandsByOwner_" + bC)
565+
566+
567+func dE (bC) = ("stakedPiecesByOwner_" + bC)
568+
569+
570+func dF (dG) = {
571+ let cF = dG
561572 if ($isInstanceOf(cF, "String"))
562573 then {
563- let dG = cF
564- dG
574+ let dH = cF
575+ dH
565576 }
566577 else throw("fail to cast into String")
567578 }
568579
569580
570-func dH (dF) = {
571- let cF = dF
581+func dI (dG) = {
582+ let cF = dG
572583 if ($isInstanceOf(cF, "Int"))
573584 then {
574- let dI = cF
575- dI
585+ let dJ = cF
586+ dJ
576587 }
577588 else throw("fail to cast into Int")
578589 }
579590
580591
581-func dJ (dF) = {
582- let cF = dF
592+func dK (dG) = {
593+ let cF = dG
583594 if ($isInstanceOf(cF, "List[Any]"))
584595 then {
585- let dK = cF
586- dK
596+ let dL = cF
597+ dL
587598 }
588599 else throw("fail to cast into List[Any]")
589600 }
590601
591602
592-func dL (dF) = {
593- let cF = dF
603+func dM (dG) = {
604+ let cF = dG
594605 if ($isInstanceOf(cF, "Boolean"))
595606 then {
596- let dG = cF
597- dG
607+ let dH = cF
608+ dH
598609 }
599610 else throw("fail to cast into Boolean")
600611 }
601612
602613
603-func dM (dN) = {
604- let cF = dN
614+func dN (dO) = {
615+ let cF = dO
605616 if (("S" == cF))
606- then cN
617+ then cO
607618 else if (("M" == cF))
608- then cO
619+ then cP
609620 else if (("L" == cF))
610- then cP
621+ then cQ
611622 else if (("XL" == cF))
612- then cQ
623+ then cR
613624 else if (("XXL" == cF))
614- then cR
625+ then cS
615626 else throw("Unknown land size")
616627 }
617628
618629
619-func dO (dG) = isDefined(parseInt(dG))
620-
621-
622-func dP () = "contractsBlocked"
623-
624-
625-func dQ (c) = ("lastTxIdByUser_" + c)
626-
627-
628-func dR (dS,dT) = {
629- let dU = pow(10, 0, dT, 0, 0, DOWN)
630- let dV = toString((dS % dU))
631- let dW = drop(toString(dU), (1 + size(dV)))
632- (((toString((dS / dU)) + ".") + dW) + dV)
633- }
634-
635-
636-func dX (dY,dZ,ea) = {
637- let eb = sha256((dZ + ea))
638- (toInt(eb) % dY)
639- }
640-
641-
642-let ec = {
630+func dP (dH) = isDefined(parseInt(dH))
631+
632+
633+func dQ () = "contractsBlocked"
634+
635+
636+func dR (c) = ("lastTxIdByUser_" + c)
637+
638+
639+func dS (dT,dU) = {
640+ let dV = pow(10, 0, dU, 0, 0, DOWN)
641+ let dW = toString((dT % dV))
642+ let dX = drop(toString(dV), (1 + size(dW)))
643+ (((toString((dT / dV)) + ".") + dX) + dW)
644+ }
645+
646+
647+func dY (dZ,ea,eb) = {
648+ let ec = sha256((ea + eb))
649+ (toInt(ec) % dZ)
650+ }
651+
652+
653+let ed = {
643654 let cF = cD
644655 if ((base58'2W' == cF))
645656 then addressFromStringValue("3PEktVux2RhchSN63DsDo4b4mz4QqzKSeDv")
648659 else throw("Unknown chain")
649660 }
650661
651-let ed = {
662+let ee = {
652663 let cF = cD
653664 if ((base58'2W' == cF))
654665 then addressFromStringValue("3PDVuU45H7Eh5dmtNbnRNRStGwULA7NY6Hb")
655666 else if ((base58'2T' == cF))
656667 then this
657- else throw("Unknown chain")
658- }
659-
660-let ee = {
661- let cF = cD
662- if ((base58'2W' == cF))
663- then if (cz)
664- then base58'CWsMtTZC5BjjoL4Q1ayW4Wwb1ehGACQB6DrKyPgotKfm'
665- else base58'6LfPuKJjLgekmncBhMg2LZyMTNVzZBccXR28ySXm9uXD'
666- else if ((base58'2T' == cF))
667- then base58'6LfPuKJjLgekmncBhMg2LZyMTNVzZBccXR28ySXm9uXD'
668668 else throw("Unknown chain")
669669 }
670670
755755
756756 let eM = 7
757757
758-func eN (ez,dN) = ((aF + ez) + dN)
758+func eN (ez,dO) = ((aF + ez) + dO)
759759
760760
761761 func eO (eP,eQ) = {
762762 let eR = if ((eP >= 0))
763763 then (((eP + eQ) - 1) / eQ)
764764 else -((((-(eP) + eQ) - 1) / eQ))
765- (eR * cM)
765+ (eR * cN)
766766 }
767767
768768
771771 if ((0 >= eV))
772772 then throw("Zero weights sum")
773773 else {
774- let eW = fraction(eT, cL, eV)
775- func eX (eY,eZ) = (eY :+ fraction(eZ, eW, cL))
774+ let eW = fraction(eT, cM, eV)
775+ func eX (eY,eZ) = (eY :+ fraction(eZ, eW, cM))
776776
777777 let fa = eU
778778 let fb = size(fa)
791791
792792
793793 func fh (eT) = {
794- let fi = split(value(getString(dz())), "_")
794+ let fi = split(value(getString(dA())), "_")
795795 if ((size(fi) != aJ))
796796 then throw("Wrong proportions data")
797797 else {
803803
804804 func fk (fl,fm,fn) = {
805805 let fo = fh(fn)
806- func fp (eY,di) = {
807- let fq = (parseIntValue(fm[di]) - fo[di])
806+ func fp (eY,dj) = {
807+ let fq = (parseIntValue(fm[dj]) - fo[dj])
808808 if ((0 > fq))
809- then throw(((((("Not enough material idx=" + toString(di)) + ", you have ") + fm[di]) + ", but need ") + toString(fo[di])))
809+ then throw(((((("Not enough material idx=" + toString(dj)) + ", you have ") + fm[dj]) + ", but need ") + toString(fo[dj])))
810810 else (eY :+ toString(fq))
811811 }
812812
813813 if (fl)
814814 then {
815- let fa = cS
815+ let fa = cT
816816 let fb = size(fa)
817817 let fc = nil
818818 func fd (fe,ff) = if ((ff >= fb))
837837 if ((size(fw) != 2))
838838 then throw("Incorrect format, should be index,amount")
839839 else {
840- let di = parseIntValue(fw[0])
841- if (if ((0 > di))
840+ let dj = parseIntValue(fw[0])
841+ if (if ((0 > dj))
842842 then true
843- else (di >= size(aY)))
843+ else (dj >= size(aY)))
844844 then throw("Unknown product idx")
845845 else {
846846 let fx = parseIntValue(fw[1])
847847 let fy = split(eY._1, (fw[0] + ":"))
848848 if ((size(fy) != 2))
849- then throw((("You don't have " + aU[di]) + " equipped"))
849+ then throw((("You don't have " + aU[dj]) + " equipped"))
850850 else {
851851 let fz = fy[1]
852- let fA = if (dO(take(drop(fz, 1), 1)))
852+ let fA = if (dP(take(drop(fz, 1), 1)))
853853 then 2
854854 else 1
855855 let fB = parseIntValue(take(fz, fA))
856856 let fC = drop(fz, fA)
857857 let fD = if ((fB >= fx))
858858 then (fB - fx)
859- else throw(((((("You equipped " + toString(fB)) + " of ") + aU[di]) + ", but tried to use ") + toString(fx)))
859+ else throw(((((("You equipped " + toString(fB)) + " of ") + aU[dj]) + ", but tried to use ") + toString(fx)))
860860 $Tuple2(((((fy[0] + fw[0]) + ":") + toString(fD)) + fC), if (eY._2)
861861 then true
862- else if (if ((di >= 6))
863- then (8 >= di)
862+ else if (if ((dj >= 6))
863+ then (8 >= dj)
864864 else false)
865865 then (fD == 0)
866866 else false)
11781178 then 0
11791179 else {
11801180 let fT = split(gI, ":")
1181- let di = fT[0]
1181+ let dj = fT[0]
11821182 let gJ = fT[1]
1183- if (if (if (if (if ((di == "06"))
1183+ if (if (if (if (if ((dj == "06"))
11841184 then true
1185- else (di == "07"))
1185+ else (dj == "07"))
11861186 then true
1187- else (di == "08"))
1187+ else (dj == "08"))
11881188 then (gJ != "")
11891189 else false)
11901190 then (parseIntValue(gJ) > 0)
11911191 else false)
1192- then parseIntValue(split(aY[parseIntValue(di)], "_")[ba])
1192+ then parseIntValue(split(aY[parseIntValue(dj)], "_")[ba])
11931193 else 0
11941194 }
11951195 }
12091209 else (eY :+ toString(fq))
12101210 }
12111211
1212- let fa = cS
1212+ let fa = cT
12131213 let fb = size(fa)
12141214 let fc = nil
12151215 func fd (fe,ff) = if ((ff >= fb))
12251225
12261226
12271227 func gS (gN,gO,gP) = {
1228- let gM = split(valueOrElse(getString(dz()), "0_0_0_0_0_0"), "_")
1228+ let gM = split(valueOrElse(getString(dA()), "0_0_0_0_0_0"), "_")
12291229 makeString(gL(gM, gN, gO, gP), "_")
12301230 }
12311231
12401240 }
12411241
12421242 let fj = {
1243- let fa = cS
1243+ let fa = cT
12441244 let fb = size(fa)
12451245 let fc = nil
12461246 func fd (fe,ff) = if ((ff >= fb))
12631263 $Tuple2((eY._1 :+ ha), (eY._2 + ha))
12641264 }
12651265
1266- let fa = cS
1266+ let fa = cT
12671267 let fb = size(fa)
12681268 let fc = $Tuple2(nil, 0)
12691269 func fd (fe,ff) = if ((ff >= fb))
12881288 func hj (eY,gR) = (eY :+ toString((parseIntValue(hd[gR]) + hh[gR])))
12891289
12901290 let fj = {
1291- let fa = cS
1291+ let fa = cT
12921292 let fb = size(fa)
12931293 let fc = nil
12941294 func fd (fe,ff) = if ((ff >= fb))
13101310 }
13111311
13121312 let fj = {
1313- let fa = cS
1313+ let fa = cT
13141314 let fb = size(fa)
13151315 let fc = $Tuple2(nil, nil)
13161316 func fd (fe,ff) = if ((ff >= fb))
13351335
13361336 let ho = [[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]]
13371337
1338-func hp (dI,hq) = {
1339- let hr = toInt((dI % ep))
1338+func hp (dJ,hq) = {
1339+ let hr = toInt((dJ % ep))
13401340 let hs = if ((hq[0] > hr))
13411341 then "A"
13421342 else if ((hq[1] > hr))
13791379 let hz = ["A", "B", "C", "D", "E", "F"]
13801380
13811381 func hA (hB,gO) = {
1382- func hC (eY,dG) = {
1382+ func hC (eY,dH) = {
13831383 let fI = eY._2
1384- let hD = parseIntValue(dG)
1384+ let hD = parseIntValue(dH)
13851385 let hn = if ((hD == 0))
13861386 then 0
13871387 else if ((hD >= (4 * gO)))
14091409 let hE = gC._1
14101410 let hF = value(indexOf(hE, max(hE)))
14111411 let hG = (gC._3 - 25)
1412- func hH (eY,di) = {
1413- let dS = if ((di == hF))
1414- then (hE[di] - hG)
1415- else hE[di]
1416- let dW = if ((dS == 0))
1412+ func hH (eY,dj) = {
1413+ let dT = if ((dj == hF))
1414+ then (hE[dj] - hG)
1415+ else hE[dj]
1416+ let dX = if ((dT == 0))
14171417 then nil
1418- else split(drop(toString(pow(10, 0, dS, 0, 0, DOWN)), 1), "")
1419- let gh = hz[di]
1418+ else split(drop(toString(pow(10, 0, dT, 0, 0, DOWN)), 1), "")
1419+ let gh = hz[dj]
14201420 func hI (hJ,hK) = (hJ :+ gh)
14211421
14221422 let hL = {
1423- let fa = dW
1423+ let fa = dX
14241424 let fb = size(fa)
14251425 let fc = nil
14261426 func hM (fe,ff) = if ((ff >= fb))
14371437 }
14381438
14391439 let fj = {
1440- let fa = cS
1440+ let fa = cT
14411441 let fb = size(fa)
14421442 let fc = nil
14431443 func hM (fe,ff) = if ((ff >= fb))
14881488 func hY (eY,hZ) = (eY + parseIntValue(hZ))
14891489
14901490 func ia (eY,hZ) = {
1491- let di = eY._1
1491+ let dj = eY._1
14921492 let eR = (((parseIntValue(hZ) + bd) - 1) / bd)
1493- $Tuple2((di + 1), (eY._2 + (eR * cM)))
1493+ $Tuple2((dj + 1), (eY._2 + (eR * cN)))
14941494 }
14951495
14961496 let ib = {
17111711 let ez = toString(iT)
17121712 let hv = toInt((iS % eo))
17131713 let gU = ht(iS, hv)
1714- let dB = aV[hv]
1715- let iU = Issue(eN(ez, "S"), makeString([ez, "S", gU, dB], "_"), 1, 0, false)
1714+ let dC = aV[hv]
1715+ let iU = Issue(eN(ez, "S"), makeString([ez, "S", gU, dC], "_"), 1, 0, false)
17161716 let bv = calculateAssetId(iU)
17171717 let iV = toBase58String(bv)
1718- $Tuple2([IntegerEntry(ev(), (iT + 1)), iU, StringEntry(ey(ez), iV), StringEntry(bu(iV), bR), StringEntry(eB(ez), bR), IntegerEntry(bE(iV), 0), IntegerEntry(eA(iV, bR), 0), ScriptTransfer(iQ, 1, bv)], $Tuple2(iV, dB))
1719- }
1720-
1721-
1722-func iW (bR,iX,iY) = if (!(sigVerify_8Kb(iX, iY, ee)))
1718+ $Tuple2([IntegerEntry(ev(), (iT + 1)), iU, StringEntry(ey(ez), iV), StringEntry(bu(iV), bR), StringEntry(eB(ez), bR), IntegerEntry(bE(iV), 0), IntegerEntry(eA(iV, bR), 0), ScriptTransfer(iQ, 1, bv)], $Tuple2(iV, dC))
1719+ }
1720+
1721+
1722+func iW (bR,iX,iY) = if (!(sigVerify_8Kb(iX, iY, cE)))
17231723 then throw("signature does not match")
17241724 else {
17251725 let fw = split_4C(toUtf8String(iX), ";")
17361736 then throw(((("signature outdated: logTime=" + toString(jf)) + ", bcTime=") + toString(lastBlock.timestamp)))
17371737 else {
17381738 let jg = jd[1]
1739- let jh = valueOrElse(getString(dQ(bR)), "")
1739+ let jh = valueOrElse(getString(dR(bR)), "")
17401740 if ((jh != jg))
17411741 then throw(((("Tx ids don't match! In state: " + jh) + ", in msg: ") + jg))
17421742 else {
17601760 let jn = if (if ((jc > 0))
17611761 then (jl == "$")
17621762 else false)
1763- then dH(invoke(dj, "sendUsdtPrize", [bR], nil))
1763+ then dI(invoke(dk, "sendUsdtPrize", [bR], nil))
17641764 else 0
17651765 $Tuple5(jc, B, jn, je, jm)
17661766 }
18081808 then throw("Negative amount")
18091809 else {
18101810 let gh = jt(c, ju, jv)
1811- let dN = gh._3[dq]
1812- let gN = gT(gh._3[dr])
1811+ let dO = gh._3[dr]
1812+ let gN = gT(gh._3[ds])
18131813 let gX = (lastBlock.timestamp - gh._4)
18141814 if ((0 > gX))
18151815 then throw(((("Saved timestamp is in future, saved = " + toString(gh._4)) + ", current = ") + toString(lastBlock.timestamp)))
18161816 else {
1817- let jp = dM(dN)
1817+ let jp = dN(dO)
18181818 let jF = jo(gh._2, jp)
18191819 let jG = fraction(gX, (jF * jp), a)
18201820 if ((eP > jG))
18221822 else {
18231823 let jH = fraction((jG - eP), a, (jF * jp))
18241824 let jI = (lastBlock.timestamp - jH)
1825- let ig = (jp / cN)
1825+ let ig = (jp / cO)
18261826 let hf = hb(gN, (gX - jH), ig, jF)
18271827 let if = bD(gh._2)
18281828 let ih = valueOrElse(getInteger(bE(gh._2)), 0)
18691869 func jR (fl,iQ,jS,Q) = {
18701870 let c = toString(iQ)
18711871 let gh = jt(c, eI, Q)
1872- let jp = dM(gh._3[dq])
1872+ let jp = dN(gh._3[dr])
18731873 let jT = bE(gh._2)
18741874 let jU = valueOrElse(getInteger(jT), 0)
18751875 if (if (!(cA))
18841884 else false)
18851885 then throw(("Currently max infrastructure level = " + toString(jV)))
18861886 else {
1887- let jW = fraction(ej, (jp * ao), cN)
1887+ let jW = fraction(ej, (jp * ao), cO)
18881888 if (if (!(fl))
18891889 then (jS != jW)
18901890 else false)
18931893 let hS = bO(gh._1)
18941894 let iv = hR(hS)
18951895 let jX = split(iv[bp], "_")
1896- let jY = fraction(cH, (jp * ao), cN)
1896+ let jY = fraction(cI, (jp * ao), cO)
18971897 let jZ = makeString(fk(fl, jX, jY), "_")
18981898 let ka = jQ(c, gh._2, jp, eI)
18991899 let kb = ka._5
19581958 func kv (c,jv) = {
19591959 let gh = jt(c, eI, jv)
19601960 let Q = gh._2
1961- let jp = dM(gh._3[dq])
1961+ let jp = dN(gh._3[dr])
19621962 let kw = by(aI, Q)
19631963 if ((valueOrElse(getInteger(kw), 0) > 0))
19641964 then throw("Presale artifact is already activated")
1965- else if ((parseIntValue(gh._3[dp]) > eu))
1965+ else if ((parseIntValue(gh._3[dq]) > eu))
19661966 then throw((((aF + " ") + Q) + " is not eligible for presale artifact"))
19671967 else {
19681968 let ka = jQ(c, Q, jp, eI)
19721972
19731973
19741974 func kx (B) = {
1975- let ck = valueOrElse(getInteger(dn, bV), 0)
1975+ let ck = valueOrElse(getInteger(do, bV), 0)
19761976 let jx = split(valueOrElse(getString(bP(B)), aN), "_")
19771977 let aA = lastBlock.timestamp
1978- let cm = ce(dn, ck)
1978+ let cm = ce(do, ck)
19791979 let cg = cm[ca]
19801980 let ch = cm[cb]
19811981 if ((jx[bs] != "T"))
19861986 then (parseIntValue(cg[cc]) > aA)
19871987 else false)
19881988 then throw("Your duck is taking part in the tournament")
1989- else dL(invoke(this, "exitTournamentInternal", [B], nil))
1989+ else dM(invoke(this, "exitTournamentInternal", [B], nil))
19901990 }
19911991
19921992
20022002 then (1 > cp)
20032003 else false)
20042004 then throw("Your duck is on delivery mission")
2005- else dL(invoke(this, "exitDeliveryInternal", [B], nil))
2005+ else dM(invoke(this, "exitDeliveryInternal", [B], nil))
20062006 }
20072007 }
20082008
20232023 then (jc > 0)
20242024 else false)
20252025 then {
2026- let kE = invoke(dk, "sendDeliveryReward", [jC], nil)
2026+ let kE = invoke(dl, "sendDeliveryReward", [jC], nil)
20272027 if ((kE == kE))
20282028 then {
20292029 let kF = V(jC)
20382038 else false)
20392039 then throw("Your duck is still on delivery mission")
20402040 else {
2041- let kG = valueOrElse(getInteger(dk, bU), 0)
2042- let kH = invoke(dk, "updateDeliveryLocked", [(kG - aQ)], nil)
2041+ let kG = valueOrElse(getInteger(dl, bU), 0)
2042+ let kH = invoke(dl, "updateDeliveryLocked", [(kG - aQ)], nil)
20432043 if ((kH == kH))
20442044 then if (if (if (fQ)
20452045 then (0 >= jc)
20472047 then true
20482048 else (0 >= kC))
20492049 then nil
2050- else [IntegerEntry(U(B), (co + cJ))]
2050+ else [IntegerEntry(U(B), (co + cK))]
20512051 else throw("Strict value is not equal to itself.")
20522052 }
20532053 let kI = getStringValue(L(B))
20712071 then throw((aF + " is not yours"))
20722072 else {
20732073 let jD = split(jz.description, "_")
2074- let dB = jD[ds]
2074+ let dC = jD[dt]
20752075 if (if ((eY._3 != ""))
2076- then (eY._3 != dB)
2076+ then (eY._3 != dC)
20772077 else false)
20782078 then throw("Lands should be on the same continent to merge")
20792079 else {
2080- let dN = jD[dq]
2080+ let dO = jD[dr]
20812081 let kP = eY._1
2082- let gR = valueOrErrorMessage(indexOf(kP, dN), "You haven't passed all the lands needed")
2082+ let gR = valueOrErrorMessage(indexOf(kP, dO), "You haven't passed all the lands needed")
20832083 let kQ = (take(kP, gR) + drop(kP, (gR + 1)))
2084- let jp = dM(dN)
2084+ let jp = dN(dO)
20852085 let kR = (eY._2 + valueOrElse(getInteger(by(aI, Q)), 0))
20862086 let ih = valueOrElse(getInteger(bE(Q)), 0)
20872087 let kS = {
2088- let cF = dN
2088+ let cF = dO
20892089 if (("S" == cF))
20902090 then 3
20912091 else if (("M" == cF))
20992099 if ((ih != kS))
21002100 then throw("All lands should be maxed to merge")
21012101 else {
2102- let ez = jD[dp]
2103- let gN = gT(jD[dr])
2102+ let ez = jD[dq]
2103+ let gN = gT(jD[ds])
21042104 let gX = (lastBlock.timestamp - jB)
21052105 if ((0 > gX))
21062106 then throw(((("Saved timestamp is in future, saved = " + toString(jB)) + ", current = ") + toString(lastBlock.timestamp)))
21072107 else {
21082108 let jF = jo(Q, jp)
2109- let ig = (jp / cN)
2109+ let ig = (jp / cO)
21102110 let jN = gV(split(eY._4, "_"), gN, gX, ig, jF)
21112111 let fi = gL(eY._6, gN, ig, -1)
21122112 let kT = gL(eY._10, gN, ig, -1)
21132113 let hB = gL(eY._9, gN, ig, 1)
21142114 let kU = eY._7
2115- let di = indexOf(kU, Q)
2116- if (!(isDefined(di)))
2115+ let dj = indexOf(kU, Q)
2116+ if (!(isDefined(dj)))
21172117 then throw(("Your staked lands don't contain " + Q))
21182118 else {
21192119 let kV = bw(Q)
21202120 let kW = valueOrElse(getString(kV), "")
2121- $Tuple10(kQ, kR, dB, jN, ((((((((((((eY._5 :+ DeleteEntry(bx(Q))) :+ DeleteEntry(bA(aF, Q, c))) :+ DeleteEntry(ey(ez))) :+ DeleteEntry(bu(Q))) :+ DeleteEntry(bE(Q))) :+ DeleteEntry(eA(Q, c))) :+ DeleteEntry(by(aI, Q))) :+ DeleteEntry(eB(ez))) :+ DeleteEntry(bD(Q))) :+ DeleteEntry(kV)) :+ Burn(fromBase58String(Q), 1)) ++ (if ((kW != ""))
2121+ $Tuple10(kQ, kR, dC, jN, ((((((((((((eY._5 :+ DeleteEntry(bx(Q))) :+ DeleteEntry(bA(aF, Q, c))) :+ DeleteEntry(ey(ez))) :+ DeleteEntry(bu(Q))) :+ DeleteEntry(bE(Q))) :+ DeleteEntry(eA(Q, c))) :+ DeleteEntry(by(aI, Q))) :+ DeleteEntry(eB(ez))) :+ DeleteEntry(bD(Q))) :+ DeleteEntry(kV)) :+ Burn(fromBase58String(Q), 1)) ++ (if ((kW != ""))
21222122 then [DeleteEntry(ew(kW))]
2123- else nil)), fi, removeByIndex(kU, value(di)), (eY._8 + jp), hB, kT)
2123+ else nil)), fi, removeByIndex(kU, value(dj)), (eY._8 + jp), hB, kT)
21242124 }
21252125 }
21262126 }
21302130
21312131 let hS = bO(B)
21322132 let iv = hR(hS)
2133- let gM = split(valueOrElse(getString(dz()), "0_0_0_0_0_0"), "_")
2134- let kX = dC(c)
2133+ let gM = split(valueOrElse(getString(dA()), "0_0_0_0_0_0"), "_")
2134+ let kX = dD(c)
21352135 let kY = getString(kX)
21362136 let kZ = if (isDefined(kY))
21372137 then split_51C(value(kY), "_")
21382138 else nil
2139- let la = split(value(assetInfo(fromBase58String(kM[0]))).description, "_")[ds]
2140- let lb = split(valueOrElse(getString(dA(la)), "0_0_0_0_0_0"), "_")
2139+ let la = split(value(assetInfo(fromBase58String(kM[0]))).description, "_")[dt]
2140+ let lb = split(valueOrElse(getString(dB(la)), "0_0_0_0_0_0"), "_")
21412141 let fj = {
21422142 let fa = kM
21432143 let fb = size(fa)
21522152
21532153 fg(fd(fd(fd(fd(fd(fc, 0), 1), 2), 3), 4), 5)
21542154 }
2155- let dB = fj._3
2156- let hv = valueOrErrorMessage(indexOf(aV, dB), ("Unknown continent: " + dB))
2157- let gU = hA(fj._9, (dM(kK) / cN))
2155+ let dC = fj._3
2156+ let hv = valueOrErrorMessage(indexOf(aV, dC), ("Unknown continent: " + dC))
2157+ let gU = hA(fj._9, (dN(kK) / cO))
21582158 let iT = valueOrElse(getInteger(ev()), (eu + 1))
21592159 let lc = toString(iT)
2160- let iU = Issue(eN(lc, kK), makeString([lc, kK, gU, dB], "_"), 1, 0, false)
2160+ let iU = Issue(eN(lc, kK), makeString([lc, kK, gU, dC], "_"), 1, 0, false)
21612161 let bv = calculateAssetId(iU)
21622162 let ld = toBase58String(bv)
21632163 let jZ = makeString(fk((kN > 0), split(iv[bp], "_"), kN), "_")
2164- let le = dD(c)
2164+ let le = dE(c)
21652165 let lf = valueOrElse(getInteger(le), 0)
21662166 $Tuple2((((((((((((((((fj._5 :+ (if ((size(fj._7) > 0))
21672167 then StringEntry(kX, makeString_11C(fj._7, "_"))
21682168 else DeleteEntry(kX))) :+ IntegerEntry(le, if ((fj._8 > lf))
21692169 then 0
2170- else (lf - fj._8))) :+ IntegerEntry(ev(), (iT + 1))) :+ iU) :+ StringEntry(ey(lc), ld)) :+ StringEntry(bu(ld), c)) :+ StringEntry(eB(lc), c)) :+ IntegerEntry(by(aI, ld), fj._2)) :+ IntegerEntry(bE(ld), ao)) :+ IntegerEntry(eA(ld, c), ao)) :+ StringEntry(hS, makeString([iv[bn], fj._4, jZ, iv[bq]], ":"))) :+ StringEntry(dz(), makeString(fj._6, "_"))) :+ StringEntry(dA(dB), makeString(fj._10, "_"))) :+ StringEntry(bP(B), makeString([dB, "L", ld], "_"))) :+ ScriptTransfer(addressFromStringValue(c), 1, bv)), ld)
2170+ else (lf - fj._8))) :+ IntegerEntry(ev(), (iT + 1))) :+ iU) :+ StringEntry(ey(lc), ld)) :+ StringEntry(bu(ld), c)) :+ StringEntry(eB(lc), c)) :+ IntegerEntry(by(aI, ld), fj._2)) :+ IntegerEntry(bE(ld), ao)) :+ IntegerEntry(eA(ld, c), ao)) :+ StringEntry(hS, makeString([iv[bn], fj._4, jZ, iv[bq]], ":"))) :+ StringEntry(dA(), makeString(fj._6, "_"))) :+ StringEntry(dB(dC), makeString(fj._10, "_"))) :+ StringEntry(bP(B), makeString([dC, "L", ld], "_"))) :+ ScriptTransfer(addressFromStringValue(c), 1, bv)), ld)
21712171 }
21722172 }
21732173
21752175 func lg (c,kM) = kJ("M", 3, "SSSS", c, kM, 0)
21762176
21772177
2178-func lh (c,kM) = kJ("L", 4, "SMM", c, kM, (cH * 4))
2179-
2180-
2181-func li (c,kM) = kJ("XL", 5, "SSSML", c, kM, (cH * 47))
2182-
2183-
2184-func lj (c,kM) = kJ("XXL", 6, "LXL", c, kM, (cH * 54))
2178+func lh (c,kM) = kJ("L", 4, "SMM", c, kM, (cI * 4))
2179+
2180+
2181+func li (c,kM) = kJ("XL", 5, "SSSML", c, kM, (cI * 47))
2182+
2183+
2184+func lj (c,kM) = kJ("XXL", 6, "LXL", c, kM, (cI * 54))
21852185
21862186
21872187 func lk (c,kM) = {
22142214 let kB = A(B)
22152215 if ((parseIntValue(cl[bt]) > 0))
22162216 then {
2217- let kE = invoke(dk, "sendDeliveryReward", [bR], nil)
2217+ let kE = invoke(dl, "sendDeliveryReward", [bR], nil)
22182218 if ((kE == kE))
22192219 then nil
22202220 else throw("Strict value is not equal to itself.")
22212221 }
22222222 else ({
2223- let kG = valueOrElse(getInteger(dk, bU), 0)
2224- let kH = invoke(dk, "updateDeliveryLocked", [(kG - aQ)], nil)
2223+ let kG = valueOrElse(getInteger(dl, bU), 0)
2224+ let kH = invoke(dl, "updateDeliveryLocked", [(kG - aQ)], nil)
22252225 if ((kH == kH))
22262226 then if ((0 >= getIntegerValue(kB)))
22272227 then nil
22282228 else {
2229- let lo = invoke(this, "saveInteger", [U(B), (co + cJ)], nil)
2229+ let lo = invoke(this, "saveInteger", [U(B), (co + cK)], nil)
22302230 if ((lo == lo))
22312231 then nil
22322232 else throw("Strict value is not equal to itself.")
22392239 }
22402240
22412241
2242-func lp (gR) = if (if ((gR.originCaller != dj))
2243- then valueOrElse(getBoolean(dP()), false)
2242+func lp (gR) = if (if ((gR.originCaller != dk))
2243+ then valueOrElse(getBoolean(dQ()), false)
22442244 else false)
22452245 then throw("Contracts are under maintenance")
22462246 else {
22472247 let bR = toString(gR.originCaller)
2248- (ll(bR) :+ StringEntry(dQ(bR), toBase58String(gR.transactionId)))
2248+ (ll(bR) :+ StringEntry(dR(bR), toBase58String(gR.transactionId)))
22492249 }
22502250
22512251
2252-func lq (gR) = if (if ((gR.originCaller != dj))
2253- then valueOrElse(getBoolean(dP()), false)
2252+func lq (gR) = if (if ((gR.originCaller != dk))
2253+ then valueOrElse(getBoolean(dQ()), false)
22542254 else false)
22552255 then throw("Contracts are under maintenance")
2256- else [StringEntry(dQ(toString(gR.originCaller)), toBase58String(gR.transactionId))]
2256+ else [StringEntry(dR(toString(gR.originCaller)), toBase58String(gR.transactionId))]
22572257
22582258
22592259 @Callable(gR)
22602260 func constructorV1 (lr) = if ((gR.caller != this))
22612261 then throw("Permission denied")
2262- else [StringEntry(dd(), lr)]
2263-
2264-
2265-
2266-@Callable(gR)
2267-func saveInteger (cV,eP) = if ((gR.caller != this))
2262+ else [StringEntry(de(), lr)]
2263+
2264+
2265+
2266+@Callable(gR)
2267+func saveInteger (cW,eP) = if ((gR.caller != this))
22682268 then throw("saveInteger is not public method")
2269- else [IntegerEntry(cV, eP)]
2269+ else [IntegerEntry(cW, eP)]
22702270
22712271
22722272
22732273 @Callable(gR)
22742274 func setBlocked (ls) = if ((gR.caller != this))
22752275 then throw("permission denied")
2276- else [BooleanEntry(dP(), ls)]
2276+ else [BooleanEntry(dQ(), ls)]
22772277
22782278
22792279
22852285 else {
22862286 let lu = value(gR.payments[0])
22872287 let bv = value(lu.assetId)
2288- let cU = toString(gR.caller)
2288+ let cV = toString(gR.caller)
22892289 if ((lu.amount != 1))
22902290 then throw((("NFT " + aF) + " token should be attached as payment"))
22912291 else {
23102310 then throw((("NFT " + jz.name) + " is already staked"))
23112311 else {
23122312 let jD = split(jz.description, "_")
2313- let gN = gT(jD[dr])
2314- let jp = dM(jD[dq])
2315- let ig = (jp / cN)
2313+ let gN = gT(jD[ds])
2314+ let jp = dN(jD[dr])
2315+ let ig = (jp / cO)
23162316 let fi = gS(gN, ig, 1)
2317- let lw = dA(jD[ds])
2317+ let lw = dB(jD[dt])
23182318 let lb = split(valueOrElse(getString(lw), "0_0_0_0_0_0"), "_")
23192319 let lx = makeString(gL(lb, gN, ig, 1), "_")
2320- let kX = dC(cU)
2320+ let kX = dD(cV)
23212321 let kY = getString(kX)
23222322 let kU = if (isDefined(kY))
23232323 then split_51C(value(kY), "_")
23282328 then throw((("Your already staked max (" + toString(aK)) + ") lands"))
23292329 else {
23302330 let ih = valueOrElse(getInteger(bE(Q)), 0)
2331- let le = dD(cU)
2331+ let le = dE(cV)
23322332 let ly = valueOrElse(getInteger(le), 0)
2333- let lz = invoke(dm, "onStakeUnstakeLand", [cU], nil)
2334- $Tuple2(([IntegerEntry(jA, lastBlock.timestamp), IntegerEntry(bA(aF, Q, cU), lastBlock.timestamp), StringEntry(kX, makeString_11C((kU :+ Q), "_")), IntegerEntry(le, (ly + jp)), StringEntry(bu(Q), cU), StringEntry(eB(ez), cU), IntegerEntry(eA(Q, cU), ih), StringEntry(dz(), fi), StringEntry(lw, lx)] ++ lt), lz)
2333+ let lz = invoke(dn, "onStakeUnstakeLand", [cV], nil)
2334+ $Tuple2(([IntegerEntry(jA, lastBlock.timestamp), IntegerEntry(bA(aF, Q, cV), lastBlock.timestamp), StringEntry(kX, makeString_11C((kU :+ Q), "_")), IntegerEntry(le, (ly + jp)), StringEntry(bu(Q), cV), StringEntry(eB(ez), cV), IntegerEntry(eA(Q, cV), ih), StringEntry(dA(), fi), StringEntry(lw, lx)] ++ lt), lz)
23352335 }
23362336 }
23372337 }
23522352 let gh = jt(c, eH, jv)
23532353 let Q = gh._2
23542354 let jD = gh._3
2355- let kX = dC(c)
2356- let gN = gT(jD[dr])
2357- let jp = dM(jD[dq])
2358- let ig = (jp / cN)
2355+ let kX = dD(c)
2356+ let gN = gT(jD[ds])
2357+ let jp = dN(jD[dr])
2358+ let ig = (jp / cO)
23592359 let fi = gS(gN, ig, -1)
2360- let lw = dA(jD[ds])
2360+ let lw = dB(jD[dt])
23612361 let lb = split(valueOrElse(getString(lw), "0_0_0_0_0_0"), "_")
23622362 let lx = makeString(gL(lb, gN, ig, -1), "_")
23632363 let ka = jQ(c, Q, jp, eH)
23642364 let kU = split_51C(valueOrElse(getString(kX), ""), "_")
2365- let di = indexOf(kU, Q)
2366- if (!(isDefined(di)))
2365+ let dj = indexOf(kU, Q)
2366+ if (!(isDefined(dj)))
23672367 then throw(("Your staked lands don't contain " + Q))
23682368 else {
23692369 let aA = lastBlock.timestamp
2370- let lA = valueOrElse(getInteger(dl, bQ(c)), 0)
2370+ let lA = valueOrElse(getInteger(dm, bQ(c)), 0)
23712371 if ((lA >= aA))
23722372 then throw(("Your gWL are taking part in voting, cannot unstake until " + toString(lA)))
23732373 else {
2374- let lB = (valueOrElse(getInteger(dm, b(c)), 0) + cI)
2374+ let lB = (valueOrElse(getInteger(dn, b(c)), 0) + cJ)
23752375 if ((lB > aA))
23762376 then throw(("Your staked lands took part in arbitrage, cannot unstake until " + toString(lB)))
23772377 else {
2378- let le = dD(c)
2378+ let le = dE(c)
23792379 let lf = valueOrElse(getInteger(le), 0)
23802380 let lC = if ((jp > lf))
23812381 then 0
23822382 else (lf - jp)
2383- let lz = invoke(dm, "onStakeUnstakeLand", [c], nil)
2384- $Tuple2(([ScriptTransfer(gR.caller, 1, fromBase58String(Q)), DeleteEntry(bx(Q)), DeleteEntry(bA(aF, Q, c)), StringEntry(dz(), fi), StringEntry(lw, lx), StringEntry(ka._2, makeString(ka._3, ":")), if ((size(kU) > 1))
2385- then StringEntry(kX, makeString_11C(removeByIndex(kU, value(di)), "_"))
2383+ let lz = invoke(dn, "onStakeUnstakeLand", [c], nil)
2384+ $Tuple2(([ScriptTransfer(gR.caller, 1, fromBase58String(Q)), DeleteEntry(bx(Q)), DeleteEntry(bA(aF, Q, c)), StringEntry(dA(), fi), StringEntry(lw, lx), StringEntry(ka._2, makeString(ka._3, ":")), if ((size(kU) > 1))
2385+ then StringEntry(kX, makeString_11C(removeByIndex(kU, value(dj)), "_"))
23862386 else DeleteEntry(kX), IntegerEntry(le, lC)] ++ lt), lz)
23872387 }
23882388 }
24002400 else {
24012401 let lu = value(gR.payments[0])
24022402 let bv = value(lu.assetId)
2403- let cU = toString(gR.caller)
2403+ let cV = toString(gR.caller)
24042404 if ((lu.amount != 1))
24052405 then throw((("NFT " + aG) + " token should be attached as payment"))
24062406 else {
24102410 else false)
24112411 then contains(jz.name, aH)
24122412 else false
2413- if (if (if ((jz.issuer != ec))
2414- then (jz.issuer != ed)
2413+ if (if (if ((jz.issuer != ed))
2414+ then (jz.issuer != ee)
24152415 else false)
24162416 then !(lD)
24172417 else false)
24252425 let jA = bx(lE)
24262426 if (isDefined(getInteger(jA)))
24272427 then throw((("NFT " + jz.name) + " is already staked"))
2428- else if (isDefined(getString(bN(cU))))
2428+ else if (isDefined(getString(bN(cV))))
24292429 then throw(("You already staked one duck: " + jz.name))
24302430 else {
24312431 let ln = bP(lE)
24352435 let ji = A(lE)
24362436 let jj = aj(valueOrElse(getInteger(E(lE)), 0))
24372437 let kC = valueOrElse(getInteger(ji), jj)
2438- ([IntegerEntry(jA, lastBlock.timestamp), IntegerEntry(bA(aG, toBase58String(bv), cU), lastBlock.timestamp), StringEntry(bM(lE), cU), StringEntry(bN(cU), lE)] ++ (if (isDefined(cj))
2438+ ([IntegerEntry(jA, lastBlock.timestamp), IntegerEntry(bA(aG, toBase58String(bv), cV), lastBlock.timestamp), StringEntry(bM(lE), cV), StringEntry(bN(cV), lE)] ++ (if (isDefined(cj))
24392439 then nil
24402440 else ([StringEntry(ln, aN)] ++ (if (isDefined(lF))
24412441 then nil
24552455 then throw("No payments required")
24562456 else {
24572457 let bv = fromBase58String(lE)
2458- let cU = toString(gR.caller)
2458+ let cV = toString(gR.caller)
24592459 let jz = value(assetInfo(bv))
24602460 let jA = bx(lE)
24612461 if (!(isDefined(getInteger(jA))))
24622462 then throw((("NFT " + jz.name) + " is not staked"))
2463- else if (!(isDefined(getString(bN(cU)))))
2463+ else if (!(isDefined(getString(bN(cV)))))
24642464 then throw((("The duck " + jz.name) + " is not staked"))
24652465 else {
24662466 let jC = valueOrErrorMessage(getString(bM(lE)), (("NFT " + jz.name) + " is orphaned"))
2467- if ((jC != cU))
2467+ if ((jC != cV))
24682468 then throw("Staked NFT is not yours")
24692469 else if (kx(lE))
24702470 then throw("unstakeDuck_checkTournament")
24762476 let av = valueOrElse(getInteger(ji), jj)
24772477 if ((jj > av))
24782478 then throw((("Please heal your duck to " + toString(jj)) + "hp before unstaking"))
2479- else ([ScriptTransfer(gR.caller, 1, bv), DeleteEntry(jA), DeleteEntry(ji), DeleteEntry(bP(lE)), DeleteEntry(bM(lE)), DeleteEntry(bA(aG, lE, cU)), DeleteEntry(bN(cU))] ++ lt)
2479+ else ([ScriptTransfer(gR.caller, 1, bv), DeleteEntry(jA), DeleteEntry(ji), DeleteEntry(bP(lE)), DeleteEntry(bM(lE)), DeleteEntry(bA(aG, lE, cV)), DeleteEntry(bN(cV))] ++ lt)
24802480 }
24812481 }
24822482 }
24932493 let c = toString(gR.originCaller)
24942494 let fq = jE(c, eP, eH, lG)
24952495 let B = valueOrErrorMessage(getString(bN(c)), "You don't have a duck staked")
2496- $Tuple2(((((fq._1 ++ km(B, fraction(X, eP, cM))._1) :+ StringEntry(fq._2, makeString(fq._3, ":"))) :+ StringEntry(fq._4, makeString(fq._5, ":"))) ++ lt), fq._3[bo])
2496+ $Tuple2(((((fq._1 ++ km(B, fraction(X, eP, cN))._1) :+ StringEntry(fq._2, makeString(fq._3, ":"))) :+ StringEntry(fq._4, makeString(fq._5, ":"))) ++ lt), fq._3[bo])
24972497 }
24982498 }
24992499
25072507 else {
25082508 let c = toString(gR.originCaller)
25092509 let fq = jE(c, eP, eG, lG)
2510- $Tuple2(((((fq._1 ++ kn(c, fraction(X, eP, cM))._1) :+ StringEntry(fq._2, makeString(fq._3, ":"))) :+ StringEntry(fq._4, makeString(fq._5, ":"))) ++ lt), fq._5[bf])
2510+ $Tuple2(((((fq._1 ++ kn(c, fraction(X, eP, cN))._1) :+ StringEntry(fq._2, makeString(fq._3, ":"))) :+ StringEntry(fq._4, makeString(fq._5, ":"))) ++ lt), fq._5[bf])
25112511 }
25122512 }
25132513
25372537 let lK = fr(lJ, hw._5)
25382538 let lL = lK._1
25392539 let lM = lK._2
2540- let lN = if (!(cs(dn, jx)))
2540+ let lN = if (!(cs(do, jx)))
25412541 then if (!(cq(je)))
25422542 then cv(jx, je, 5)
25432543 else if ((jc > 0))
25442544 then $Tuple2(je, jc)
25452545 else $Tuple2(jx, 0)
2546- else if (ci(dn, jx))
2547- then if (!(ci(dn, je)))
2546+ else if (ci(do, jx))
2547+ then if (!(ci(do, je)))
25482548 then throw("Your duck is taking part in the tournament")
25492549 else {
25502550 let kA = parseIntValue(cx[bt])
25512551 let lO = split(jx, "_")
2552- let ck = valueOrElse(getInteger(dn, bV), 0)
2552+ let ck = valueOrElse(getInteger(do, bV), 0)
25532553 if ((kA != (parseIntValue(lO[bt]) + 1)))
25542554 then cv(jx, je, 7)
25552555 else if ((jc > 0))
25562556 then {
2557- let lP = valueOrElse(getInteger(dn, bZ(ck, B)), 0)
2557+ let lP = valueOrElse(getInteger(do, bZ(ck, B)), 0)
25582558 let lQ = if ((kA > lP))
2559- then invoke(dn, "saveDuckResult", [B, kA], nil)
2559+ then invoke(do, "saveDuckResult", [B, kA], nil)
25602560 else unit
25612561 if ((lQ == lQ))
25622562 then $Tuple2(je, jc)
25662566 }
25672567 else if (!(cn(jx)))
25682568 then {
2569- let lR = dE(invoke(this, "autoExitDelivery", [B, jc, if (lI)
2569+ let lR = dF(invoke(this, "autoExitDelivery", [B, jc, if (lI)
25702570 then "10"
25712571 else "11", 0], nil))
25722572 if ((lR == lR))
25912591 else false)
25922592 then $Tuple2(je, jc)
25932593 else {
2594- let lR = dE(invoke(this, "autoExitDelivery", [B, jc, "15-17", kA], nil))
2594+ let lR = dF(invoke(this, "autoExitDelivery", [B, jc, "15-17", kA], nil))
25952595 if ((lR == lR))
25962596 then $Tuple2(lR, jc)
25972597 else throw("Strict value is not equal to itself.")
26392639 then nil
26402640 else split_4C(iv[bq], "_")
26412641 func ma (eY,cu) = {
2642- let dI = eY._2
2643- let hn = if ((size(lZ) > dI))
2644- then parseIntValue(lZ[dI])
2642+ let dJ = eY._2
2643+ let hn = if ((size(lZ) > dJ))
2644+ then parseIntValue(lZ[dJ])
26452645 else 0
2646- if ((3 > dI))
2646+ if ((3 > dJ))
26472647 then {
2648- let mb = lX[dI]
2648+ let mb = lX[dJ]
26492649 if ((mb > hn))
2650- then throw(((("You have only " + toString(hn)) + " of ") + aU[dI]))
2651- else $Tuple3((eY._1 :+ toString((hn - mb))), (dI + 1), (eY._3 + (parseIntValue(split(cu, "_")[ba]) * mb)))
2650+ then throw(((("You have only " + toString(hn)) + " of ") + aU[dJ]))
2651+ else $Tuple3((eY._1 :+ toString((hn - mb))), (dJ + 1), (eY._3 + (parseIntValue(split(cu, "_")[ba]) * mb)))
26522652 }
2653- else $Tuple3((eY._1 :+ toString(hn)), (dI + 1), eY._3)
2653+ else $Tuple3((eY._1 :+ toString(hn)), (dJ + 1), eY._3)
26542654 }
26552655
26562656 let fq = {
26832683 then throw("Exactly one payment required")
26842684 else {
26852685 let lu = value(gR.payments[0])
2686- if ((lu.assetId != cE))
2686+ if ((lu.assetId != cG))
26872687 then throw("Allowed USDT payment only!")
26882688 else {
26892689 let B = valueOrErrorMessage(getString(bN(toString(gR.caller))), "You don't have a duck staked")
27192719 else (mf > 0))
27202720 then throw("You have to use own Medical Kit")
27212721 else {
2722- let mg = getString(dk, bS())
2722+ let mg = getString(dl, bS())
27232723 let mh = if (isDefined(mg))
27242724 then split_4C(value(mg), "_")
27252725 else nil
27332733 let mj = makeString([toString((mi - 1)), removeByIndex(mh, 0)], "_")
27342734 let cu = split(aY[0], "_")
27352735 let mk = ct(cu)
2736- let ml = fraction((mk * aP), aO, (cM * bd))
2736+ let ml = fraction((mk * aP), aO, (cN * bd))
27372737 if ((lu.amount != ml))
27382738 then throw(("Payment attached should be " + toString(ml)))
27392739 else {
2740- let fq = dE(invoke(dk, "updateEsStorage", [mj], [AttachedPayment(cE, ml)]))
2740+ let fq = dF(invoke(dl, "updateEsStorage", [mj], [AttachedPayment(cG, ml)]))
27412741 $Tuple2(((lt :+ IntegerEntry(ji, mc)) ++ km(B, aa)._1), fq)
27422742 }
27432743 }
27512751
27522752
27532753 @Callable(gR)
2754-func updateBackpack (B,mm) = if ((gR.caller != dk))
2754+func updateBackpack (B,mm) = if ((gR.caller != dl))
27552755 then throw("permission denied")
27562756 else $Tuple2([StringEntry(bO(B), mm)], mm)
27572757
27602760 @Callable(gR)
27612761 func commitForRandom () = {
27622762 let lt = lp(gR)
2763- let mn = (height + dx)
2763+ let mn = (height + dy)
27642764 let c = toString(gR.caller)
2765- $Tuple2(([IntegerEntry(dy(c), mn)] ++ lt), mn)
2765+ $Tuple2(([IntegerEntry(dz(c), mn)] ++ lt), mn)
27662766 }
27672767
27682768
27742774 then throw("Exactly one payment required")
27752775 else {
27762776 let lu = value(gR.payments[0])
2777- if ((lu.assetId != cE))
2777+ if ((lu.assetId != cG))
27782778 then throw("Allowed USDT payment only!")
27792779 else if ((lu.amount != el))
27802780 then throw(("Payment attached should be " + toString(el)))
27812781 else {
27822782 let fq = iP(gR.caller, gR.transactionId)
2783- let mo = dH(invoke(do, "burnAcres", [en], nil))
2784- $Tuple2((((fq._1 :+ ScriptTransfer(dk, lu.amount, cE)) ++ kn(toString(gR.caller), ac)._1) ++ lt), $Tuple2(fq._2._1, mo))
2783+ let mo = dI(invoke(dp, "burnAcres", [en], nil))
2784+ $Tuple2((((fq._1 :+ ScriptTransfer(dl, lu.amount, cG)) ++ kn(toString(gR.caller), ac)._1) ++ lt), $Tuple2(fq._2._1, mo))
27852785 }
27862786 }
27872787 }
28192819 else if (ky(B))
28202820 then throw("expedition_checkDelivery")
28212821 else {
2822- let mo = dH(invoke(do, "burnAcres", [en], nil))
2822+ let mo = dI(invoke(dp, "burnAcres", [en], nil))
28232823 $Tuple2(((fq._1 ++ km(B, ac)._1) ++ lt), $Tuple3(fq._2, fq._3, mo))
28242824 }
28252825 }
28372837 let fx = lu.amount
28382838 if (if (!(isDefined(lu.assetId)))
28392839 then true
2840- else (value(lu.assetId) != dw))
2840+ else (value(lu.assetId) != dx))
28412841 then throw("ACRES payments only!")
28422842 else if ((fx != en))
28432843 then throw(("Payment attached should be " + toString(en)))
28442844 else {
28452845 let fq = iP(gR.caller, gR.transactionId)
2846- let mo = dH(invoke(do, "burnAcres", [en], [AttachedPayment(dw, fx)]))
2846+ let mo = dI(invoke(dp, "burnAcres", [en], [AttachedPayment(dx, fx)]))
28472847 $Tuple2(((fq._1 ++ kn(toString(gR.caller), ac)._1) ++ lt), $Tuple2(fq._2._1, mo))
28482848 }
28492849 }
28592859 else {
28602860 let fq = jR(true, gR.caller, 0, Q)
28612861 let B = valueOrErrorMessage(getString(bN(toString(gR.caller))), "You don't have a duck staked")
2862- $Tuple2(((fq._1 ++ lt) ++ km(B, fraction(ad, fq._3, cM))._1), fq._2)
2862+ $Tuple2(((fq._1 ++ lt) ++ km(B, fraction(ad, fq._3, cN))._1), fq._2)
28632863 }
28642864 }
28652865
29162916 if ((jC != c))
29172917 then throw((aF + " is not yours"))
29182918 else {
2919- let ig = (dM(split(jz.description, "_")[dq]) / cN)
2919+ let ig = (dN(split(jz.description, "_")[dr]) / cO)
29202920 let ih = valueOrElse(getInteger(bE(Q)), 0)
29212921 let B = valueOrErrorMessage(getString(bN(c)), "You don't have a duck staked")
29222922 let jx = valueOrElse(getString(bP(B)), aN)
29442944
29452945
29462946 @Callable(gR)
2947-func saveWarehouse (ij,Q) = if ((gR.caller != dk))
2947+func saveWarehouse (ij,Q) = if ((gR.caller != dl))
29482948 then throw("Access denied")
29492949 else {
29502950 let if = bD(Q)
29742974 then throw("Exactly one payment required")
29752975 else {
29762976 let lu = value(gR.payments[0])
2977- if ((lu.assetId != cE))
2977+ if ((lu.assetId != cG))
29782978 then throw("Allowed USDT payment only!")
29792979 else if ((lu.amount != eh))
29802980 then throw(("Payment should be " + toString(eh)))
30573057 }
30583058 else throw("Unknown entity type")
30593059 }
3060- $Tuple2(((mx :+ ScriptTransfer(dk, lu.amount, cE)) ++ lt), 0)
3060+ $Tuple2(((mx :+ ScriptTransfer(dl, lu.amount, cG)) ++ lt), 0)
30613061 }
30623062 }
30633063 }
30653065
30663066
30673067 @Callable(gR)
3068-func setReferrals (mE,mF) = if ((gR.callerPublicKey != ee))
3068+func setReferrals (mE,mF) = if ((gR.callerPublicKey != cE))
30693069 then throw("Permission denied")
30703070 else {
30713071 let lt = lp(gR)
30733073 then throw("No payments required")
30743074 else if (!(isDefined(addressFromString(mE))))
30753075 then throw(("Invalid address: " + mE))
3076- else if (!(isDefined(addressFromString(mF))))
3077- then throw(("Invalid address: " + mF))
3078- else {
3079- let mG = eE()
3080- let mH = getString(mG)
3081- let mI = if (isDefined(mH))
3082- then split_4C(value(mH), "_")
3083- else nil
3084- if (containsElement(mI, mF))
3085- then throw((mF + " is not newbie (already has referrals)"))
3086- else {
3087- let kp = bI(mF)
3088- let kq = getString(kp)
3089- if (if (isDefined(kq))
3090- then isDefined(addressFromString(value(kq)))
3091- else false)
3092- then throw(((mF + " already has refBy: ") + value(kq)))
3076+ else {
3077+ let mG = addressFromString(mF)
3078+ if (!(isDefined(mG)))
3079+ then throw(("Invalid address: " + mF))
3080+ else {
3081+ let mH = getString(dR(mE))
3082+ if (!(isDefined(mH)))
3083+ then throw("oldPlayer didn't do any tx in game")
3084+ else if ((0 >= wavesBalance(value(mG)).available))
3085+ then throw("newPlayer has no WAVES")
30933086 else {
3094- let mJ = bL(mE)
3095- let mK = getString(mJ)
3096- let mL = if (isDefined(mK))
3097- then split_4C(value(mK), "_")
3087+ let mI = eE()
3088+ let mJ = getString(mI)
3089+ let mK = if (isDefined(mJ))
3090+ then split_4C(value(mJ), "_")
30983091 else nil
3099- if (containsElement(mL, mF))
3100- then throw((((mE + " already contains ") + mF) + " within referrals"))
3092+ if (containsElement(mK, mF))
3093+ then throw((mF + " is not newbie (already has referrals)"))
31013094 else {
3102- let mM = makeString_2C((mL :+ mF), "_")
3103- let mN = if (containsElement(mI, mE))
3104- then value(mH)
3105- else makeString_2C((mI :+ mE), "_")
3106- $Tuple2(([StringEntry(kp, mE), StringEntry(mJ, mM), StringEntry(mG, mN)] ++ lt), 0)
3095+ let kp = bI(mF)
3096+ let kq = getString(kp)
3097+ if (if (isDefined(kq))
3098+ then isDefined(addressFromString(value(kq)))
3099+ else false)
3100+ then throw(((mF + " already has refBy: ") + value(kq)))
3101+ else {
3102+ let mL = bL(mE)
3103+ let mM = getString(mL)
3104+ let mN = if (isDefined(mM))
3105+ then split_4C(value(mM), "_")
3106+ else nil
3107+ if (containsElement(mN, mF))
3108+ then throw((((mE + " already contains ") + mF) + " within referrals"))
3109+ else {
3110+ let mO = makeString_2C((mN :+ mF), "_")
3111+ let mP = if (containsElement(mK, mE))
3112+ then value(mJ)
3113+ else makeString_2C((mK :+ mE), "_")
3114+ $Tuple2(([StringEntry(kp, mE), StringEntry(mL, mO), StringEntry(mI, mP)] ++ lt), 0)
3115+ }
3116+ }
31073117 }
31083118 }
3109- }
3110- }
3119+ }
3120+ }
31113121 }
31123122
31133123
31143124
31153125 @Callable(gR)
3116-func distributePoints (mO,mP,mQ,mR,mS) = {
3126+func distributePoints (mQ,mR,mS,mT,mU) = {
31173127 let lt = lp(gR)
31183128 if ((size(gR.payments) != 0))
31193129 then throw("No payments required")
31203130 else {
31213131 let c = toString(gR.originCaller)
3122- let mT = dJ(invoke(dm, "checkWlgXpREADONLY", [c], nil))
3123- let mU = dH(mT[1])
3124- let mV = if ((0 >= mU))
3132+ let mV = dK(invoke(dn, "checkWlgXpREADONLY", [c], nil))
3133+ let mW = dI(mV[1])
3134+ let mX = if ((0 >= mW))
31253135 then $Tuple2(0, nil)
31263136 else {
3127- let kk = dH(invoke(dm, "takeWlgXp", [c], nil))
3137+ let kk = dI(invoke(dn, "takeWlgXp", [c], nil))
31283138 if ((kk == kk))
3129- then $Tuple2(mU, [IntegerEntry(I(c), dH(mT[0])), IntegerEntry(H(c), dH(mT[2]))])
3139+ then $Tuple2(mW, [IntegerEntry(I(c), dI(mV[0])), IntegerEntry(H(c), dI(mV[2]))])
31303140 else throw("Strict value is not equal to itself.")
31313141 }
3132- let mW = mV._1
3133- let mX = mV._2
3142+ let mY = mX._1
3143+ let mZ = mX._2
31343144 let B = valueOrErrorMessage(getString(bN(c)), "You don't have a duck staked")
3135- let mY = J(c)
3136- let mZ = (valueOrElse(getInteger(mY), 0) + mW)
3137- let na = F(B)
3138- let nb = valueOrElse(getInteger(na), 0)
3139- let nc = (mZ + nb)
3140- let nd = ((((mO + mP) + mQ) + mR) + mS)
3141- if ((nd > nc))
3142- then throw((("There are only " + toString(nc)) + " free points to distribute"))
3145+ let na = J(c)
3146+ let nb = (valueOrElse(getInteger(na), 0) + mY)
3147+ let nc = F(B)
3148+ let nd = valueOrElse(getInteger(nc), 0)
3149+ let ne = (nb + nd)
3150+ let nf = ((((mQ + mR) + mS) + mT) + mU)
3151+ if ((nf > ne))
3152+ then throw((("There are only " + toString(ne)) + " free points to distribute"))
31433153 else {
3144- let ne = C(B)
3145- let at = split(valueOrElse(getString(ne), "0_0_0_0_0"), "_")
3146- let nf = (mZ - nd)
3147- $Tuple2((([IntegerEntry(mY, if ((0 > nf))
3154+ let ng = C(B)
3155+ let at = split(valueOrElse(getString(ng), "0_0_0_0_0"), "_")
3156+ let nh = (nb - nf)
3157+ $Tuple2((([IntegerEntry(na, if ((0 > nh))
31483158 then 0
3149- else nf), IntegerEntry(na, if ((0 > nf))
3150- then (nb + nf)
3151- else nb), StringEntry(ne, makeString([toString((parseIntValue(at[l]) + mO)), toString((parseIntValue(at[m]) + mP)), toString((parseIntValue(at[n]) + mQ)), toString((parseIntValue(at[o]) + mR)), toString((parseIntValue(at[p]) + mS))], "_"))] ++ lt) ++ mX), 0)
3159+ else nh), IntegerEntry(nc, if ((0 > nh))
3160+ then (nd + nh)
3161+ else nd), StringEntry(ng, makeString([toString((parseIntValue(at[l]) + mQ)), toString((parseIntValue(at[m]) + mR)), toString((parseIntValue(at[n]) + mS)), toString((parseIntValue(at[o]) + mT)), toString((parseIntValue(at[p]) + mU))], "_"))] ++ lt) ++ mZ), 0)
31523162 }
31533163 }
31543164 }
31613171
31623172
31633173 @Callable(gR)
3164-func splitByGlobalAndLocalWeightsREADONLY (ng,nh,gU) = {
3174+func splitByGlobalAndLocalWeightsREADONLY (ni,nj,gU) = {
31653175 let gN = gT(gU)
3166- $Tuple2(nil, $Tuple2(fh(ng), eS(nh, gN)))
3176+ $Tuple2(nil, $Tuple2(fh(ni), eS(nj, gN)))
31673177 }
31683178
31693179
31763186 @Callable(gR)
31773187 func getWarehouseREADONLY (Q) = {
31783188 let jz = value(assetInfo(fromBase58String(Q)))
3179- let ig = (dM(split(jz.description, "_")[dq]) / cN)
3189+ let ig = (dN(split(jz.description, "_")[dr]) / cO)
31803190 let ih = valueOrElse(getInteger(bE(Q)), 0)
31813191 $Tuple2(nil, makeString_2C(ie(bD(Q), ig, ih), ":"))
31823192 }
31843194
31853195
31863196 @Callable(gR)
3187-func saveLastTx () = if (!(containsElement([dm, dk, dn, do], gR.caller)))
3197+func saveLastTx () = if (!(containsElement([dn, dl, do, dp], gR.caller)))
31883198 then throw("Access denied")
31893199 else $Tuple2(lp(gR), 42)
31903200
31913201
31923202
31933203 @Callable(gR)
3194-func updateDuckStats (B,kk) = if ((gR.caller != dk))
3204+func updateDuckStats (B,kk) = if ((gR.caller != dl))
31953205 then throw("Access denied")
31963206 else km(B, kk)
31973207
31983208
31993209
32003210 @Callable(gR)
3201-func updateAccStats (c,kk) = if (!(containsElement([dm, dk, do], gR.caller)))
3211+func updateAccStats (c,kk) = if (!(containsElement([dn, dl, dp], gR.caller)))
32023212 then throw("Access denied")
32033213 else kn(c, kk)
32043214
32053215
32063216
32073217 @Callable(gR)
3208-func equipDuck (ni) = {
3218+func equipDuck (nk) = {
32093219 let lt = lp(gR)
32103220 if ((size(gR.payments) != 0))
32113221 then throw("No payments required")
32183228 then throw("equipDuck_checkDelivery")
32193229 else {
32203230 let gE = G(B)
3221- let nj = split(valueOrElse(getString(gE), ",;,_,;,_,;,_,;,_,;,_,;,"), "_")
3231+ let nl = split(valueOrElse(getString(gE), ",;,_,;,_,;,_,;,_,;,_,;,"), "_")
32223232 let hS = bO(B)
32233233 let iv = hR(hS)
3224- let lL = split(ni, "_")
3234+ let lL = split(nk, "_")
32253235 if ((size(lL) != r))
32263236 then throw("Wrong equipment string")
32273237 else {
3228- let gG = gt(nj, fE(iv[bq]), true, nil)
3238+ let gG = gt(nl, fE(iv[bq]), true, nil)
32293239 let gH = split(lL[q], ";")[1]
32303240 let ar = if ((gH == ""))
32313241 then 0
32353245 then 0
32363246 else {
32373247 let fT = split(gI, ":")
3238- let di = fT[0]
3248+ let dj = fT[0]
32393249 let gJ = fT[1]
3240- if (if (if (if (if ((di == "06"))
3250+ if (if (if (if (if ((dj == "06"))
32413251 then true
3242- else (di == "07"))
3252+ else (dj == "07"))
32433253 then true
3244- else (di == "08"))
3254+ else (dj == "08"))
32453255 then (gJ != "")
32463256 else false)
32473257 then (parseIntValue(gJ) > 0)
32483258 else false)
3249- then parseIntValue(split(aY[parseIntValue(di)], "_")[ba])
3259+ then parseIntValue(split(aY[parseIntValue(dj)], "_")[ba])
32503260 else 0
32513261 }
32523262 }
32533263 let go = ap(this, B, ar, true)
32543264 let gK = gt(lL, gG, false, go)
3255- let nk = fJ(gK)
3256- $Tuple2(([StringEntry(gE, ni), StringEntry(hS, makeString_2C([iv[bn], iv[bo], iv[bp], nk], ":")), StringEntry(M(B), makeString([toString(go[7]), toString(go[8]), toString(go[9]), toString(go[10]), toString(go[11])], "_"))] ++ lt), 0)
3265+ let nm = fJ(gK)
3266+ $Tuple2(([StringEntry(gE, nk), StringEntry(hS, makeString_2C([iv[bn], iv[bo], iv[bp], nm], ":")), StringEntry(M(B), makeString([toString(go[7]), toString(go[8]), toString(go[9]), toString(go[10]), toString(go[11])], "_"))] ++ lt), 0)
32573267 }
32583268 }
32593269 }
32623272
32633273
32643274 @Callable(gR)
3265-func fortificateLand (Q,nl) = {
3275+func fortificateLand (Q,nn) = {
32663276 let lt = lp(gR)
32673277 if ((size(gR.payments) != 0))
32683278 then throw("No payments required")
32703280 let c = toString(gR.originCaller)
32713281 let B = valueOrElse(getString(bN(c)), "")
32723282 let fO = ap(this, B, 0, false)
3273- let nm = bF(Q)
3274- let nn = split(valueOrElse(getString(nm), ":0_15:0_18:0"), "_")
3283+ let no = bF(Q)
3284+ let np = split(valueOrElse(getString(no), ":0_15:0_18:0"), "_")
32753285 let jz = value(assetInfo(fromBase58String(Q)))
3276- let ig = (dM(split(jz.description, "_")[dq]) / cN)
3286+ let ig = (dN(split(jz.description, "_")[dr]) / cO)
32773287 let ih = valueOrElse(getInteger(bE(Q)), 0)
32783288 let if = bD(Q)
32793289 let ik = ie(if, ig, ih)
3280- let no = split(ik[bi], "_")
3281- let np = parseIntValue(no[bk])
3282- let nq = parseIntValue(no[bl])
3283- let nr = split(nl, "_")
3284- let ns = gA(nn, fE(ik[bh]), np, nq, true, nil)
3285- let gG = ns._1
3286- let nt = ns._2
3287- let nu = ns._3
3288- let nv = gA(nr, gG, nt, nu, false, fO)
3289- let gK = nv._1
3290- let nw = nv._2
3291- let nx = nv._3
3292- let nk = fJ(gK)
3293- let kf = makeString([no[bj], toString(nw), toString(nx), no[bm]], "_")
3294- $Tuple2(([StringEntry(nm, nl), StringEntry(if, makeString_2C([ik[be], ik[bf], ik[bg], nk, kf], ":"))] ++ lt), 0)
3295- }
3296- }
3297-
3298-
3299-
3300-@Callable(gR)
3301-func initDuckTourAttempt (B) = if ((gR.caller != dn))
3290+ let nq = split(ik[bi], "_")
3291+ let nr = parseIntValue(nq[bk])
3292+ let ns = parseIntValue(nq[bl])
3293+ let nt = split(nn, "_")
3294+ let nu = gA(np, fE(ik[bh]), nr, ns, true, nil)
3295+ let gG = nu._1
3296+ let nv = nu._2
3297+ let nw = nu._3
3298+ let nx = gA(nt, gG, nv, nw, false, fO)
3299+ let gK = nx._1
3300+ let ny = nx._2
3301+ let nz = nx._3
3302+ let nm = fJ(gK)
3303+ let kf = makeString([nq[bj], toString(ny), toString(nz), nq[bm]], "_")
3304+ $Tuple2(([StringEntry(no, nn), StringEntry(if, makeString_2C([ik[be], ik[bf], ik[bg], nm, kf], ":"))] ++ lt), 0)
3305+ }
3306+ }
3307+
3308+
3309+
3310+@Callable(gR)
3311+func initDuckTourAttempt (B) = if ((gR.caller != do))
33023312 then throw("Access denied")
33033313 else {
33043314 let ji = A(B)
33053315 let jj = aj(valueOrElse(getInteger(E(B)), 0))
33063316 let kC = valueOrElse(getInteger(ji), jj)
3307- let ny = bP(B)
3308- let jx = valueOrElse(getString(ny), aN)
3309- let ck = valueOrElse(getInteger(dn, bV), 0)
3310- let nz = (toString(ck) + "_T_0")
3311- $Tuple2([IntegerEntry(K(B), kC), IntegerEntry(ji, jj), StringEntry(L(B), jx), StringEntry(ny, nz)], nz)
3317+ let nA = bP(B)
3318+ let jx = valueOrElse(getString(nA), aN)
3319+ let ck = valueOrElse(getInteger(do, bV), 0)
3320+ let nB = (toString(ck) + "_T_0")
3321+ $Tuple2([IntegerEntry(K(B), kC), IntegerEntry(ji, jj), StringEntry(L(B), jx), StringEntry(nA, nB)], nB)
33123322 }
33133323
33143324
33173327 func breakAttempt () = {
33183328 let lt = lp(gR)
33193329 let B = valueOrErrorMessage(getString(bN(toString(gR.caller))), "You don't have a duck staked")
3320- let ny = bP(B)
3321- let jx = valueOrElse(getString(ny), aN)
3330+ let nA = bP(B)
3331+ let jx = valueOrElse(getString(nA), aN)
33223332 if ((split(jx, "_")[bs] != "T"))
33233333 then throw("Your duck is not in the tournament")
33243334 else {
3325- let nA = getIntegerValue(K(B))
3335+ let nC = getIntegerValue(K(B))
33263336 let kI = getStringValue(L(B))
3327- $Tuple2(((lt :+ IntegerEntry(A(B), nA)) :+ StringEntry(ny, kI)), jx)
3328- }
3329- }
3330-
3331-
3332-
3333-@Callable(gR)
3334-func breakAttemptCallback () = if ((gR.caller != dn))
3337+ $Tuple2(((lt :+ IntegerEntry(A(B), nC)) :+ StringEntry(nA, kI)), jx)
3338+ }
3339+ }
3340+
3341+
3342+
3343+@Callable(gR)
3344+func breakAttemptCallback () = if ((gR.caller != do))
33353345 then throw("Access denied")
33363346 else {
33373347 let B = valueOrErrorMessage(getString(bN(toString(gR.originCaller))), "You don't have a duck staked")
33443354 func exitTournamentInternal (B) = if ((gR.caller != this))
33453355 then throw("Access denied")
33463356 else {
3347- let nA = getIntegerValue(K(B))
3357+ let nC = getIntegerValue(K(B))
33483358 let kI = getStringValue(L(B))
3349- $Tuple2([IntegerEntry(A(B), nA), StringEntry(bP(B), kI)], false)
3359+ $Tuple2([IntegerEntry(A(B), nC), StringEntry(bP(B), kI)], false)
33503360 }
33513361
33523362
33623372
33633373
33643374 @Callable(gR)
3365-func autoExitDelivery (B,jc,nB,kA) = if ((gR.caller != this))
3375+func autoExitDelivery (B,jc,nD,kA) = if ((gR.caller != this))
33663376 then throw("Access denied")
33673377 else {
33683378 let mq = kz(B, true, jc, kA)
33793389 @Callable(gR)
33803390 func prepareRobbery (iX,iY) = {
33813391 let lt = lp(gR)
3382- if (!(sigVerify_8Kb(iX, iY, ee)))
3392+ if (!(sigVerify_8Kb(iX, iY, cE)))
33833393 then throw("signature does not match")
33843394 else if ((size(gR.payments) != 1))
33853395 then throw("exactly 1 payment must be attached")
33863396 else {
33873397 let lu = gR.payments[0]
3388- let nC = lu.amount
3398+ let nE = lu.amount
33893399 if (if (!(isDefined(lu.assetId)))
33903400 then true
3391- else (value(lu.assetId) != du))
3401+ else (value(lu.assetId) != dv))
33923402 then throw("WLGOLD payments only!")
33933403 else {
33943404 let fw = split(toUtf8String(iX), "|")
33993409 then fw[2]
34003410 else ""
34013411 let bR = toString(gR.caller)
3402- let jh = valueOrElse(getString(dQ(bR)), "")
3412+ let jh = valueOrElse(getString(dR(bR)), "")
34033413 if ((jh != jg))
34043414 then throw(((("Tx ids don't match! In state: " + jh) + ", in msg: ") + jg))
34053415 else {
34103420 then throw("prepareRobbery_checkDelivery")
34113421 else {
34123422 let aB = ax(this, B)._1
3413- if ((aB > nC))
3414- then throw(((("Payment " + toString(nC)) + " < required ") + toString(aB)))
3423+ if ((aB > nE))
3424+ then throw(((("Payment " + toString(nE)) + " < required ") + toString(aB)))
34153425 else {
3416- let nD = split(fw[1], "_")
3426+ let nF = split(fw[1], "_")
34173427 let aA = lastBlock.timestamp
34183428 let aC = valueOrElse(getInteger(S(B)), 0)
34193429 let aD = valueOrElse(getString(T(B)), "")
34233433 else false)
34243434 then throw(("You already started robbing, wait till " + toString(aE)))
34253435 else {
3426- func nE (eY,Q) = {
3427- let nF = valueOrElse(getInteger(P(Q)), 0)
3428- let nG = valueOrElse(getInteger(R(Q)), 0)
3429- if ((nF > size(v)))
3436+ func nG (eY,Q) = {
3437+ let nH = valueOrElse(getInteger(P(Q)), 0)
3438+ let nI = valueOrElse(getInteger(R(Q)), 0)
3439+ if ((nH > size(v)))
34303440 then throw("Invalid state")
3431- else if ((aA > nG))
3441+ else if ((aA > nI))
34323442 then {
3433- let nH = valueOrElse(getInteger(bx(Q)), 0)
3434- if ((0 >= nH))
3443+ let nJ = valueOrElse(getInteger(bx(Q)), 0)
3444+ if ((0 >= nJ))
34353445 then eY
34363446 else {
34373447 let gy = value(assetInfo(fromBase58String(Q)))
34383448 let jD = split(gy.description, "_")
3439- let jp = dM(jD[dq])
3440- let nI = jo(Q, jp)
3441- let gX = (aA - nH)
3442- let jG = fraction(gX, (nI * jp), a)
3449+ let jp = dN(jD[dr])
3450+ let nK = jo(Q, jp)
3451+ let gX = (aA - nJ)
3452+ let jG = fraction(gX, (nK * jp), a)
34433453 if ((w > jG))
34443454 then eY
34453455 else (eY :+ Q)
34483458 else eY
34493459 }
34503460
3451- let nJ = {
3452- let fa = nD
3461+ let nL = {
3462+ let fa = nF
34533463 let fb = size(fa)
34543464 let fc = nil
34553465 func fd (fe,ff) = if ((ff >= fb))
34563466 then fe
3457- else nE(fe, fa[ff])
3467+ else nG(fe, fa[ff])
34583468
34593469 func fg (fe,ff) = if ((ff >= fb))
34603470 then fe
34623472
34633473 fg(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fc, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
34643474 }
3465- if ((size(nJ) == 0))
3475+ if ((size(nL) == 0))
34663476 then throw("No candidates for robbery")
34673477 else {
3468- let nK = dX(size(nJ), iX, iY)
3469- let Q = nJ[nK]
3478+ let nM = dY(size(nL), iX, iY)
3479+ let Q = nL[nM]
34703480 $Tuple2(([IntegerEntry(P(Q), x), IntegerEntry(R(Q), (aA + v[x])), IntegerEntry(S(B), z), StringEntry(T(B), Q)] ++ lt), Q)
34713481 }
34723482 }
34833493 @Callable(gR)
34843494 func robLand (iX,iY) = {
34853495 let lt = lp(gR)
3486- if (!(sigVerify_8Kb(iX, iY, ee)))
3496+ if (!(sigVerify_8Kb(iX, iY, cE)))
34873497 then throw("signature does not match")
34883498 else {
34893499 let bR = toString(gR.caller)
35003510 let lt = lp(gR)
35013511 let bR = toString(gR.caller)
35023512 let B = valueOrErrorMessage(getString(bN(bR)), "You don't have a duck staked")
3503- let nL = valueOrElse(getInteger(dk, bT), 0)
3504- let kG = valueOrElse(getInteger(dk, bU), 0)
3505- if ((aQ > (nL - kG)))
3506- then throw(((("Delivery is not available, fund=" + dR(nL, 6)) + ", locked=") + dR(kG, 6)))
3513+ let nN = valueOrElse(getInteger(dl, bT), 0)
3514+ let kG = valueOrElse(getInteger(dl, bU), 0)
3515+ if ((aQ > (nN - kG)))
3516+ then throw(((("Delivery is not available, fund=" + dS(nN, 6)) + ", locked=") + dS(kG, 6)))
35073517 else {
35083518 let aA = lastBlock.timestamp
3509- let nM = valueOrElse(getInteger(U(B)), 0)
3510- if ((nM > aA))
3511- then throw(("Delivery is forbidden for your duck until " + toString(nM)))
3519+ let nO = valueOrElse(getInteger(U(B)), 0)
3520+ if ((nO > aA))
3521+ then throw(("Delivery is forbidden for your duck until " + toString(nO)))
35123522 else {
35133523 let av = getIntegerValue(A(B))
35143524 if ((0 >= av))
35163526 else {
35173527 let kF = V(bR)
35183528 let fY = valueOrElse(getInteger(kF), 0)
3519- let nN = valueOrElse(getInteger(W(bR)), 0)
3520- let nO = (aA / a)
3521- let nP = valueOrElse(getInteger(do, d(bR)), 0)
3522- let nQ = (aS + (nP / aT))
3523- if (if ((fY >= nQ))
3524- then (nN == nO)
3529+ let nP = valueOrElse(getInteger(W(bR)), 0)
3530+ let nQ = (aA / a)
3531+ let nR = valueOrElse(getInteger(dp, d(bR)), 0)
3532+ let nS = (aS + (nR / aT))
3533+ if (if ((fY >= nS))
3534+ then (nP == nQ)
35253535 else false)
3526- then throw((("You already used " + toString(nQ)) + " delivery attempts for today"))
3536+ then throw((("You already used " + toString(nS)) + " delivery attempts for today"))
35273537 else if (kx(B))
35283538 then throw("acceptDelivery_checkTournament")
35293539 else if (ky(B))
35303540 then throw("acceptDelivery_checkDelivery")
35313541 else {
3532- let nR = dH(invoke(dk, "updateDeliveryLocked", [(kG + aQ)], nil))
3533- let ny = bP(B)
3534- let jx = valueOrElse(getString(ny), aN)
3535- let nS = (toString(aA) + "_D_0")
3536- $Tuple2(([StringEntry(L(B), jx), StringEntry(ny, nS), IntegerEntry(kF, if ((nN != nO))
3542+ let nT = dI(invoke(dl, "updateDeliveryLocked", [(kG + aQ)], nil))
3543+ let nA = bP(B)
3544+ let jx = valueOrElse(getString(nA), aN)
3545+ let nU = (toString(aA) + "_D_0")
3546+ $Tuple2(([StringEntry(L(B), jx), StringEntry(nA, nU), IntegerEntry(kF, if ((nP != nQ))
35373547 then 0
3538- else fY)] ++ lt), $Tuple2(nS, nR))
3548+ else fY)] ++ lt), $Tuple2(nU, nT))
35393549 }
35403550 }
35413551 }
35453555
35463556
35473557 @Callable(gR)
3548-func checkDeliveryCallback (B) = if ((gR.caller != dn))
3558+func checkDeliveryCallback (B) = if ((gR.caller != do))
35493559 then throw("Access denied")
35503560 else $Tuple2(nil, ky(B))
35513561
35603570 then throw("Exactly one payment required")
35613571 else {
35623572 let lu = value(gR.payments[0])
3563- if ((lu.assetId != cE))
3573+ if ((lu.assetId != cG))
35643574 then throw("Allowed USDT payment only!")
35653575 else if ((lu.amount != em))
3566- then throw((("Payment attached should be " + dR(em, 6)) + " USDT"))
3576+ then throw((("Payment attached should be " + dS(em, 6)) + " USDT"))
35673577 else {
3568- let nT = valueOrElse(getInteger(eF()), 0)
3569- let nU = toBytes(nT)
3570- let ex = ((aH + "-") + takeRight(toBase16String(nU), 8))
3571- let nV = takeRight(toBase16String(sha256_16Kb(nU)), 6)
3572- let iU = Issue(ex, ("Robo Duck NFT for WavesLands game, background color = #" + nV), 1, 0, false)
3578+ let nV = valueOrElse(getInteger(eF()), 0)
3579+ let nW = toBytes(nV)
3580+ let ex = ((aH + "-") + takeRight(toBase16String(nW), 8))
3581+ let nX = takeRight(toBase16String(sha256_16Kb(nW)), 6)
3582+ let iU = Issue(ex, ("Robo Duck NFT for WavesLands game, background color = #" + nX), 1, 0, false)
35733583 let bv = calculateAssetId(iU)
3574- $Tuple2(((((lt :+ IntegerEntry(eF(), (nT + 1))) :+ iU) :+ ScriptTransfer(gR.originCaller, 1, bv)) :+ ScriptTransfer(dk, lu.amount, cE)), $Tuple2(toBase58String(bv), nV))
3584+ $Tuple2(((((lt :+ IntegerEntry(eF(), (nV + 1))) :+ iU) :+ ScriptTransfer(gR.originCaller, 1, bv)) :+ ScriptTransfer(dl, lu.amount, cG)), $Tuple2(toBase58String(bv), nX))
35753585 }
35763586 }
35773587 }
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 86400000
55
66 func b (c) = ("lastArbTimeUser_" + c)
77
88
99 func d (c) = ("acresStakedAmountByUser_" + c)
1010
1111
1212 let e = 100000000
1313
1414 let f = 3200
1515
1616 let g = 4000
1717
1818 let h = 3
1919
2020 let i = 100000000
2121
2222 let j = 400
2323
2424 let k = ["Strength", "Accuracy", "Intellect", "Endurance", "Dexterity", "Level", "Health"]
2525
2626 let l = 0
2727
2828 let m = 1
2929
3030 let n = 2
3131
3232 let o = 3
3333
3434 let p = 4
3535
3636 let q = 0
3737
3838 let r = 6
3939
4040 let s = 2
4141
4242 let t = 2
4343
4444 let u = 30
4545
4646 let v = [0, 600000, 900000, 43200000, 21600000]
4747
4848 let w = 20000000
4949
5050 let x = 1
5151
5252 let y = 0
5353
5454 let z = 1
5555
5656 func A (B) = ("duckHealth_" + B)
5757
5858
5959 func C (B) = ("duckChars_" + B)
6060
6161
6262 func D (B) = ("duckXP_" + B)
6363
6464
6565 func E (B) = ("duckLevel_" + B)
6666
6767
6868 func F (B) = ("duckFreePoints_" + B)
6969
7070
7171 func G (B) = ("duckEquipment_" + B)
7272
7373
7474 func H (c) = ("userXP_" + c)
7575
7676
7777 func I (c) = ("userLevel_" + c)
7878
7979
8080 func J (c) = ("userFreePoints_" + c)
8181
8282
8383 func K (B) = ("savedHealth_" + B)
8484
8585
8686 func L (B) = ("savedLocation_" + B)
8787
8888
8989 func M (B) = ("duckBuffs_" + B)
9090
9191
9292 func N (B) = ("lastRobberyTime_" + B)
9393
9494
9595 func O (B) = ("lastRobberyCost_" + B)
9696
9797
9898 func P (Q) = ("landRobberyState_" + Q)
9999
100100
101101 func R (Q) = ("landCooldownETA_" + Q)
102102
103103
104104 func S (B) = ("duckRobberyState_" + B)
105105
106106
107107 func T (B) = ("lockedLandByDuck_" + B)
108108
109109
110110 func U (B) = ("deliveryDelayByDuck_" + B)
111111
112112
113113 func V (c) = ("userDeliveryCount_" + c)
114114
115115
116116 func W (c) = ("userLastDeliveryDay_" + c)
117117
118118
119119 let X = 10000
120120
121121 let Y = 10000
122122
123123 let Z = 2000
124124
125125 let aa = 100000
126126
127127 let ab = 1000000
128128
129129 let ac = 5000000
130130
131131 let ad = 10000
132132
133133 let ae = 1000000
134134
135135 let af = 1000000
136136
137137 let ag = 10000
138138
139139 func ah (ai) = fraction(f, pow(ai, 4, g, 4, 4, DOWN), e)
140140
141141
142142 func aj (ak) = (100 + ak)
143143
144144
145145 func al (am,an) = {
146146 let ao = ah(an)
147147 [ao, (h * (ao - am))]
148148 }
149149
150150
151151 func ap (aq,B,ar,as) = {
152152 let at = split(valueOrElse(getString(aq, C(B)), "0_0_0_0_0"), "_")
153153 let au = valueOrElse(getInteger(aq, E(B)), 0)
154154 let av = valueOrElse(getInteger(aq, A(B)), aj(au))
155155 let aw = split(valueOrElse(getString(aq, M(B)), "0_0_0_0_0"), "_")
156156 ([parseIntValue(at[l]), parseIntValue(at[m]), parseIntValue(at[n]), parseIntValue(at[o]), parseIntValue(at[p]), au, av] ++ (if (as)
157157 then [ar, ar, ar, ar, ar]
158158 else [parseIntValue(aw[l]), parseIntValue(aw[m]), parseIntValue(aw[n]), parseIntValue(aw[o]), parseIntValue(aw[p])]))
159159 }
160160
161161
162162 func ax (aq,B) = {
163163 let ay = valueOrElse(getInteger(aq, O(B)), 0)
164164 let az = valueOrElse(getInteger(aq, N(B)), 0)
165165 let aA = lastBlock.timestamp
166166 let aB = max([i, (ay - (j * (aA - az)))])
167167 let aC = valueOrElse(getInteger(aq, S(B)), 0)
168168 let aD = valueOrElse(getString(aq, T(B)), "")
169169 let aE = valueOrElse(getInteger(aq, R(aD)), 0)
170170 $Tuple5(aB, az, aC, aD, aE)
171171 }
172172
173173
174174 let aF = "LAND"
175175
176176 let aG = "DUCK"
177177
178178 let aH = "ROBO"
179179
180180 let aI = "PRESALE"
181181
182182 let aJ = 6
183183
184184 let aK = 25
185185
186186 let aL = 3456000
187187
188188 let aM = 10000000000
189189
190190 let aN = "Africa_F_Africa"
191191
192192 let aO = 39637
193193
194194 let aP = 10
195195
196196 let aQ = 50000
197197
198198 let aR = 600000
199199
200200 let aS = 1
201201
202202 let aT = 50000000
203203
204204 let aU = ["First Aid Kit L1", "First Aid Kit L2", "First Aid Kit L3", "Backpack L1", "Backpack L2", "Backpack L3", "Food Ration L1", "Food Ration L2", "Food Ration L3", "Jet Pack L1", "Jet Pack L2", "Jet Pack L3", "Shield L1", "Shield L2", "Shield L3", "Mine L1", "Mine L2", "Mine L3", "Trap L1", "Trap L2", "Trap L3", "KaboomDog L1", "KaboomDog L2", "KaboomDog L3"]
205205
206206 let aV = ["Americas", "Europe", "Asia", "Africa", "Oceania"]
207207
208208 let aW = 10000000
209209
210210 let aX = [15, 16, 17, 18, 19, 20, 21, 22, 23]
211211
212212 let aY = ["8_8_8_17_17_42_12_0_30_0,0,0,0,0,0,0_", "8_8_8_17_17_42_24_0_60_0,0,5,2,0,0,0_", "8_8_8_17_17_42_36_0_120_0,0,10,4,0,0,0_", "8_19_19_8_27_19_26_1_20_0,0,0,0,0,0,0_001", "8_19_19_8_27_19_52_1_40_0,0,0,0,0,0,0_001", "8_19_19_8_27_19_78_1_80_0,0,0,0,0,0,0_001", "8_8_8_8_8_60_13_2_2_0,0,0,0,0,0,0_011", "8_8_8_8_8_60_26_2_4_0,0,0,0,0,0,0_011", "8_8_8_8_8_60_39_2_8_0,0,0,0,0,0,0_011", "30_30_3_17_17_3_30_3_30_0,0,0,0,0,0,0_111", "30_30_3_17_17_3_60_3_50_0,0,0,0,0,0,0_111", "30_30_3_17_17_3_90_3_70_0,0,0,0,0,0,0_111", "18_18_10_18_18_18_11_4_10_0,0,0,0,0,0,0_201", "18_18_10_18_18_18_22_4_20_0,0,0,0,0,0,0_201", "18_18_10_18_18_18_33_4_30_0,0,0,0,0,0,0_201", "4_13_22_4_35_22_23_0_50,1,0_0,0,0,0,0,0,0_", "4_13_22_4_35_22_46_0_50,1,1_0,2,5,0,0,0,0_", "4_13_22_4_35_22_69_0_50,2,1_0,5,10,0,0,0,0_", "5_25_40_5_10_15_20_1_30,1,1_0,0,0,0,0,0,0_", "5_25_40_5_10_15_40_1_30,1,2_2,1,3,0,0,0,0_", "5_25_40_5_10_15_60_1_30,1,3_5,2,8,0,0,0,0_", "23_23_5_20_23_6_35_2_0_0,0,0,0,0,0,0_", "23_23_5_20_23_6_70_2_0_0,0,0,0,0,0,0_", "23_23_5_20_23_6_105_2_0_0,0,0,0,0,0,0_"]
213213
214214 let aZ = 6
215215
216216 let ba = 8
217217
218218 let bb = 9
219219
220220 let bc = 10
221221
222222 let bd = 10
223223
224224 let be = 0
225225
226226 let bf = 1
227227
228228 let bg = 2
229229
230230 let bh = 3
231231
232232 let bi = 4
233233
234234 let bj = 0
235235
236236 let bk = 1
237237
238238 let bl = 2
239239
240240 let bm = 3
241241
242242 let bn = 0
243243
244244 let bo = 1
245245
246246 let bp = 2
247247
248248 let bq = 3
249249
250250 let br = 0
251251
252252 let bs = 1
253253
254254 let bt = 2
255255
256256 func bu (bv) = ("no_" + bv)
257257
258258
259259 func bw (bv) = ("lcna_" + bv)
260260
261261
262262 func bx (bv) = ("st_" + bv)
263263
264264
265265 func by (bz,bv) = makeString(["las", bz, bv], "_")
266266
267267
268268 func bA (bB,bv,bC) = ((((("sttao_" + bB) + "_") + bv) + "_") + bC)
269269
270270
271271 func bD (Q) = ("wh_" + Q)
272272
273273
274274 func bE (bv) = ("infraLevel_" + bv)
275275
276276
277277 func bF (Q) = ("fortifications_" + Q)
278278
279279
280280 func bG (bv) = ("duckCustomNameByAssetId_" + bv)
281281
282282
283283 func bH (c) = ("accountCustomNameByAddr_" + c)
284284
285285
286286 func bI (c) = ("accRefBy_" + c)
287287
288288
289289 func bJ (B) = ("onboardArtActivatedOnDuck_" + B)
290290
291291
292292 func bK (c) = ("onboardArtActivatedDuckBy_" + c)
293293
294294
295295 func bL (c) = ("accReferrals_" + c)
296296
297297
298298 func bM (bv) = ("duckOwner_" + bv)
299299
300300
301301 func bN (bC) = ("stakedDuckByOwner_" + bC)
302302
303303
304304 func bO (B) = ("backPack_" + B)
305305
306306
307307 func bP (B) = ("duckLocation_" + B)
308308
309309
310310 func bQ (bR) = ("%s%s__userGwlReleaseTime__" + bR)
311311
312312
313313 func bS () = "emergencyWarehouseProducts"
314314
315315
316316 let bT = "deliveryFund"
317317
318318 let bU = "deliveryLocked"
319319
320320 let bV = "%s__lastTourId"
321321
322322 func bW (bX) = ("%s%d__tourStaticData__" + toString(bX))
323323
324324
325325 func bY (bX) = ("%s%d__tourDynamicData__" + toString(bX))
326326
327327
328328 func bZ (bX,B) = makeString(["%s%d%s__bestResultByTourAndDuck", toString(bX), B], "__")
329329
330330
331331 let ca = 0
332332
333333 let cb = 1
334334
335335 let cc = 6
336336
337337 let cd = 1
338338
339339 func ce (cf,bX) = {
340340 let cg = split(valueOrErrorMessage(getString(cf, bW(bX)), (("Error reading tournament " + toString(bX)) + " data")), "__")
341341 let ch = split_4C(valueOrErrorMessage(getString(cf, bY(bX)), (("Error reading tournament " + toString(bX)) + " data")), "__")
342342 [cg, ch]
343343 }
344344
345345
346346 func ci (cf,cj) = {
347347 let ck = valueOrElse(getInteger(cf, bV), 0)
348348 let cl = split(cj, "_")
349349 let aA = lastBlock.timestamp
350350 let cm = ce(cf, ck)
351351 let cg = cm[ca]
352352 let ch = cm[cb]
353353 if (if (if ((cl[bs] == "T"))
354354 then (parseIntValue(cl[br]) == ck)
355355 else false)
356356 then (ch[cd] == "INPROGRESS")
357357 else false)
358358 then (parseIntValue(cg[cc]) > aA)
359359 else false
360360 }
361361
362362
363363 func cn (cj) = {
364364 let cl = split(cj, "_")
365365 let aA = lastBlock.timestamp
366366 let co = parseIntValue(cl[br])
367367 let cp = parseIntValue(cl[bt])
368368 if (if ((cl[bs] == "D"))
369369 then ((co + aR) > aA)
370370 else false)
371371 then (3 >= cp)
372372 else false
373373 }
374374
375375
376376 func cq (cj) = {
377377 let cr = split(cj, "_")[bs]
378378 if ((cr != "T"))
379379 then (cr != "D")
380380 else false
381381 }
382382
383383
384384 func cs (cf,cj) = {
385385 let ck = valueOrElse(getInteger(cf, bV), 0)
386386 let cl = split(cj, "_")
387387 let aA = lastBlock.timestamp
388388 let cm = ce(cf, ck)
389389 let cg = cm[ca]
390390 let ch = cm[cb]
391391 let cr = cl[bs]
392392 if ((cr == "D"))
393393 then true
394394 else if (if (if ((cl[bs] == "T"))
395395 then (parseIntValue(cl[br]) == ck)
396396 else false)
397397 then (ch[cd] == "INPROGRESS")
398398 else false)
399399 then (parseIntValue(cg[cc]) > aA)
400400 else false
401401 }
402402
403403
404404 func ct (cu) = (parseIntValue(cu[aZ]) * aW)
405405
406406
407407 func cv (cw,cx,cy) = throw(((((("Cheat attempt: oldLoc=" + cw) + ", newLoc=") + cx) + ", case=") + toString(cy)))
408408
409409
410410 let cz = false
411411
412412 let cA = false
413413
414414 let cB = false
415415
416416 let cC = 86400000
417417
418418 let cD = take(drop(this.bytes, 1), 1)
419419
420420 let cE = {
421421 let cF = cD
422422 if ((base58'2W' == cF))
423+ then if (cz)
424+ then base58'CWsMtTZC5BjjoL4Q1ayW4Wwb1ehGACQB6DrKyPgotKfm'
425+ else base58'6LfPuKJjLgekmncBhMg2LZyMTNVzZBccXR28ySXm9uXD'
426+ else if ((base58'2T' == cF))
427+ then base58'6LfPuKJjLgekmncBhMg2LZyMTNVzZBccXR28ySXm9uXD'
428+ else throw("Unknown chain")
429+ }
430+
431+let cG = {
432+ let cF = cD
433+ if ((base58'2W' == cF))
423434 then base58'9wc3LXNA4TEBsXyKtoLE9mrbDD7WMHXvXrCjZvabLAsi'
424435 else if ((base58'2T' == cF))
425436 then base58'6mWwf9mZBjVgkC54idpyaZLQfAosD914wT8fGf2iiY63'
426437 else throw("Unknown chain")
427438 }
428439
429-let cG = {
440+let cH = {
430441 let cF = cD
431442 if ((base58'2W' == cF))
432443 then "3PQCuvFbvh4LkPUnrnU1z3jnbA1p9m3WNhv"
433444 else if ((base58'2T' == cF))
434445 then "3MumkGGztCKAXpWDqxkddofqXSUbqQkvSJy"
435446 else throw("Unknown chain")
436447 }
437448
438-let cH = {
449+let cI = {
439450 let cF = cD
440451 if ((base58'2W' == cF))
441452 then 10000000000
442453 else if ((base58'2T' == cF))
443454 then 100000000
444455 else throw("Unknown chain")
445456 }
446457
447-let cI = {
458+let cJ = {
448459 let cF = cD
449460 if ((base58'2W' == cF))
450461 then cC
451462 else if ((base58'2T' == cF))
452463 then 60000
453464 else throw("Unknown chain")
454465 }
455466
456-let cJ = {
467+let cK = {
457468 let cF = cD
458469 if ((base58'2W' == cF))
459470 then 10800000
460471 else if ((base58'2T' == cF))
461472 then 900000
462473 else throw("Unknown chain")
463474 }
464475
465-let cK = "__"
466-
467-let cL = 1000000
468-
469-let cM = 100000000
470-
471-let cN = 25
472-
473-let cO = 100
474-
475-let cP = 225
476-
477-let cQ = 400
478-
479-let cR = 625
480-
481-let cS = [0, 1, 2, 3, 4, 5]
482-
483-func cT (cU,cV) = valueOrErrorMessage(getString(cU, cV), makeString(["mandatory ", toString(cU), ".", cV, " is not defined"], ""))
484-
485-
486-let cW = 1
487-
488-let cX = 2
489-
490-let cY = 3
491-
492-let cZ = 4
493-
494-let da = 7
495-
496-let db = 8
497-
498-func dc () = "%s__restConfig"
499-
500-
501-func dd () = "%s__restAddr"
502-
503-
504-func de (df) = split_4C(cT(df, dc()), cK)
505-
506-
507-func dg (dh,di) = valueOrErrorMessage(addressFromString(dh[di]), ("Rest cfg doesn't contain address at index " + toString(di)))
508-
509-
510-let dj = addressFromStringValue(valueOrElse(getString(this, dd()), cG))
511-
512-let dh = de(dj)
513-
514-let aq = dg(dh, cW)
515-
516-let dk = dg(dh, cX)
517-
518-let dl = dg(dh, cY)
519-
520-let dm = dg(dh, cZ)
521-
522-let dn = dg(dh, da)
523-
524-let do = dg(dh, db)
525-
526-let dp = 0
527-
528-let dq = 1
529-
530-let dr = 2
531-
532-let ds = 3
533-
534-let dt = "wlg_assetId"
535-
536-let du = valueOrErrorMessage(getBinary(dm, dt), "WLGOLD is not issued yet")
537-
538-let dv = "acresAssetId"
539-
540-let dw = valueOrErrorMessage(getBinary(do, dv), "ACRES is not issued yet")
541-
542-let dx = 2
543-
544-func dy (cU) = ("finishBlockForAddr_" + cU)
545-
546-
547-func dz () = "resTypesProportions"
548-
549-
550-func dA (dB) = ("resTypesByContinent_" + dB)
551-
552-
553-func dC (bC) = ("stakedLandsByOwner_" + bC)
554-
555-
556-func dD (bC) = ("stakedPiecesByOwner_" + bC)
557-
558-
559-func dE (dF) = {
560- let cF = dF
476+let cL = "__"
477+
478+let cM = 1000000
479+
480+let cN = 100000000
481+
482+let cO = 25
483+
484+let cP = 100
485+
486+let cQ = 225
487+
488+let cR = 400
489+
490+let cS = 625
491+
492+let cT = [0, 1, 2, 3, 4, 5]
493+
494+func cU (cV,cW) = valueOrErrorMessage(getString(cV, cW), makeString(["mandatory ", toString(cV), ".", cW, " is not defined"], ""))
495+
496+
497+let cX = 1
498+
499+let cY = 2
500+
501+let cZ = 3
502+
503+let da = 4
504+
505+let db = 7
506+
507+let dc = 8
508+
509+func dd () = "%s__restConfig"
510+
511+
512+func de () = "%s__restAddr"
513+
514+
515+func df (dg) = split_4C(cU(dg, dd()), cL)
516+
517+
518+func dh (di,dj) = valueOrErrorMessage(addressFromString(di[dj]), ("Rest cfg doesn't contain address at index " + toString(dj)))
519+
520+
521+let dk = addressFromStringValue(valueOrElse(getString(this, de()), cH))
522+
523+let di = df(dk)
524+
525+let aq = dh(di, cX)
526+
527+let dl = dh(di, cY)
528+
529+let dm = dh(di, cZ)
530+
531+let dn = dh(di, da)
532+
533+let do = dh(di, db)
534+
535+let dp = dh(di, dc)
536+
537+let dq = 0
538+
539+let dr = 1
540+
541+let ds = 2
542+
543+let dt = 3
544+
545+let du = "wlg_assetId"
546+
547+let dv = valueOrErrorMessage(getBinary(dn, du), "WLGOLD is not issued yet")
548+
549+let dw = "acresAssetId"
550+
551+let dx = valueOrErrorMessage(getBinary(dp, dw), "ACRES is not issued yet")
552+
553+let dy = 2
554+
555+func dz (cV) = ("finishBlockForAddr_" + cV)
556+
557+
558+func dA () = "resTypesProportions"
559+
560+
561+func dB (dC) = ("resTypesByContinent_" + dC)
562+
563+
564+func dD (bC) = ("stakedLandsByOwner_" + bC)
565+
566+
567+func dE (bC) = ("stakedPiecesByOwner_" + bC)
568+
569+
570+func dF (dG) = {
571+ let cF = dG
561572 if ($isInstanceOf(cF, "String"))
562573 then {
563- let dG = cF
564- dG
574+ let dH = cF
575+ dH
565576 }
566577 else throw("fail to cast into String")
567578 }
568579
569580
570-func dH (dF) = {
571- let cF = dF
581+func dI (dG) = {
582+ let cF = dG
572583 if ($isInstanceOf(cF, "Int"))
573584 then {
574- let dI = cF
575- dI
585+ let dJ = cF
586+ dJ
576587 }
577588 else throw("fail to cast into Int")
578589 }
579590
580591
581-func dJ (dF) = {
582- let cF = dF
592+func dK (dG) = {
593+ let cF = dG
583594 if ($isInstanceOf(cF, "List[Any]"))
584595 then {
585- let dK = cF
586- dK
596+ let dL = cF
597+ dL
587598 }
588599 else throw("fail to cast into List[Any]")
589600 }
590601
591602
592-func dL (dF) = {
593- let cF = dF
603+func dM (dG) = {
604+ let cF = dG
594605 if ($isInstanceOf(cF, "Boolean"))
595606 then {
596- let dG = cF
597- dG
607+ let dH = cF
608+ dH
598609 }
599610 else throw("fail to cast into Boolean")
600611 }
601612
602613
603-func dM (dN) = {
604- let cF = dN
614+func dN (dO) = {
615+ let cF = dO
605616 if (("S" == cF))
606- then cN
617+ then cO
607618 else if (("M" == cF))
608- then cO
619+ then cP
609620 else if (("L" == cF))
610- then cP
621+ then cQ
611622 else if (("XL" == cF))
612- then cQ
623+ then cR
613624 else if (("XXL" == cF))
614- then cR
625+ then cS
615626 else throw("Unknown land size")
616627 }
617628
618629
619-func dO (dG) = isDefined(parseInt(dG))
620-
621-
622-func dP () = "contractsBlocked"
623-
624-
625-func dQ (c) = ("lastTxIdByUser_" + c)
626-
627-
628-func dR (dS,dT) = {
629- let dU = pow(10, 0, dT, 0, 0, DOWN)
630- let dV = toString((dS % dU))
631- let dW = drop(toString(dU), (1 + size(dV)))
632- (((toString((dS / dU)) + ".") + dW) + dV)
633- }
634-
635-
636-func dX (dY,dZ,ea) = {
637- let eb = sha256((dZ + ea))
638- (toInt(eb) % dY)
639- }
640-
641-
642-let ec = {
630+func dP (dH) = isDefined(parseInt(dH))
631+
632+
633+func dQ () = "contractsBlocked"
634+
635+
636+func dR (c) = ("lastTxIdByUser_" + c)
637+
638+
639+func dS (dT,dU) = {
640+ let dV = pow(10, 0, dU, 0, 0, DOWN)
641+ let dW = toString((dT % dV))
642+ let dX = drop(toString(dV), (1 + size(dW)))
643+ (((toString((dT / dV)) + ".") + dX) + dW)
644+ }
645+
646+
647+func dY (dZ,ea,eb) = {
648+ let ec = sha256((ea + eb))
649+ (toInt(ec) % dZ)
650+ }
651+
652+
653+let ed = {
643654 let cF = cD
644655 if ((base58'2W' == cF))
645656 then addressFromStringValue("3PEktVux2RhchSN63DsDo4b4mz4QqzKSeDv")
646657 else if ((base58'2T' == cF))
647658 then this
648659 else throw("Unknown chain")
649660 }
650661
651-let ed = {
662+let ee = {
652663 let cF = cD
653664 if ((base58'2W' == cF))
654665 then addressFromStringValue("3PDVuU45H7Eh5dmtNbnRNRStGwULA7NY6Hb")
655666 else if ((base58'2T' == cF))
656667 then this
657- else throw("Unknown chain")
658- }
659-
660-let ee = {
661- let cF = cD
662- if ((base58'2W' == cF))
663- then if (cz)
664- then base58'CWsMtTZC5BjjoL4Q1ayW4Wwb1ehGACQB6DrKyPgotKfm'
665- else base58'6LfPuKJjLgekmncBhMg2LZyMTNVzZBccXR28ySXm9uXD'
666- else if ((base58'2T' == cF))
667- then base58'6LfPuKJjLgekmncBhMg2LZyMTNVzZBccXR28ySXm9uXD'
668668 else throw("Unknown chain")
669669 }
670670
671671 let ef = base64'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=='
672672
673673 let eg = 300000
674674
675675 let eh = 5000000
676676
677677 let ei = 50
678678
679679 let ej = 10000000
680680
681681 let ek = {
682682 let cF = cD
683683 if ((base58'2W' == cF))
684684 then 252289527462
685685 else if ((base58'2T' == cF))
686686 then 2522895274
687687 else throw("Unknown chain")
688688 }
689689
690690 let el = {
691691 let cF = cD
692692 if ((base58'2W' == cF))
693693 then 250000000
694694 else if ((base58'2T' == cF))
695695 then 250000000
696696 else throw("Unknown chain")
697697 }
698698
699699 let em = 100000
700700
701701 let en = 2500000000
702702
703703 let eo = toBigInt(5)
704704
705705 let ep = toBigInt(20)
706706
707707 let eq = toBigInt((20 * 20))
708708
709709 let er = toBigInt(((20 * 20) * 20))
710710
711711 let es = toBigInt((((20 * 20) * 20) * 20))
712712
713713 let et = toBigInt(((((20 * 20) * 20) * 20) * 20))
714714
715715 let eu = 500
716716
717717 func ev () = "nextLandNum"
718718
719719
720720 func ew (ex) = ("lcn_" + ex)
721721
722722
723723 func ey (ez) = ("la_" + ez)
724724
725725
726726 func eA (bv,bC) = ((("ilao_" + bv) + "_") + bC)
727727
728728
729729 func eB (ez) = ("lo_" + ez)
730730
731731
732732 func eC (ex) = ("duckByCustomName_" + ex)
733733
734734
735735 func eD (ex) = ("accountByCustomName_" + ex)
736736
737737
738738 func eE () = "oldiesList"
739739
740740
741741 func eF () = "nextRoboDuck"
742742
743743
744744 let eG = 0
745745
746746 let eH = 1
747747
748748 let eI = 2
749749
750750 let eJ = 0
751751
752752 let eK = 5
753753
754754 let eL = 6
755755
756756 let eM = 7
757757
758-func eN (ez,dN) = ((aF + ez) + dN)
758+func eN (ez,dO) = ((aF + ez) + dO)
759759
760760
761761 func eO (eP,eQ) = {
762762 let eR = if ((eP >= 0))
763763 then (((eP + eQ) - 1) / eQ)
764764 else -((((-(eP) + eQ) - 1) / eQ))
765- (eR * cM)
765+ (eR * cN)
766766 }
767767
768768
769769 func eS (eT,eU) = {
770770 let eV = (((((eU[0] + eU[1]) + eU[2]) + eU[3]) + eU[4]) + eU[5])
771771 if ((0 >= eV))
772772 then throw("Zero weights sum")
773773 else {
774- let eW = fraction(eT, cL, eV)
775- func eX (eY,eZ) = (eY :+ fraction(eZ, eW, cL))
774+ let eW = fraction(eT, cM, eV)
775+ func eX (eY,eZ) = (eY :+ fraction(eZ, eW, cM))
776776
777777 let fa = eU
778778 let fb = size(fa)
779779 let fc = nil
780780 func fd (fe,ff) = if ((ff >= fb))
781781 then fe
782782 else eX(fe, fa[ff])
783783
784784 func fg (fe,ff) = if ((ff >= fb))
785785 then fe
786786 else throw("List size exceeds 6")
787787
788788 fg(fd(fd(fd(fd(fd(fd(fc, 0), 1), 2), 3), 4), 5), 6)
789789 }
790790 }
791791
792792
793793 func fh (eT) = {
794- let fi = split(value(getString(dz())), "_")
794+ let fi = split(value(getString(dA())), "_")
795795 if ((size(fi) != aJ))
796796 then throw("Wrong proportions data")
797797 else {
798798 let fj = [parseIntValue(fi[0]), parseIntValue(fi[1]), parseIntValue(fi[2]), parseIntValue(fi[3]), parseIntValue(fi[4]), parseIntValue(fi[5])]
799799 eS(eT, fj)
800800 }
801801 }
802802
803803
804804 func fk (fl,fm,fn) = {
805805 let fo = fh(fn)
806- func fp (eY,di) = {
807- let fq = (parseIntValue(fm[di]) - fo[di])
806+ func fp (eY,dj) = {
807+ let fq = (parseIntValue(fm[dj]) - fo[dj])
808808 if ((0 > fq))
809- then throw(((((("Not enough material idx=" + toString(di)) + ", you have ") + fm[di]) + ", but need ") + toString(fo[di])))
809+ then throw(((((("Not enough material idx=" + toString(dj)) + ", you have ") + fm[dj]) + ", but need ") + toString(fo[dj])))
810810 else (eY :+ toString(fq))
811811 }
812812
813813 if (fl)
814814 then {
815- let fa = cS
815+ let fa = cT
816816 let fb = size(fa)
817817 let fc = nil
818818 func fd (fe,ff) = if ((ff >= fb))
819819 then fe
820820 else fp(fe, fa[ff])
821821
822822 func fg (fe,ff) = if ((ff >= fb))
823823 then fe
824824 else throw("List size exceeds 6")
825825
826826 fg(fd(fd(fd(fd(fd(fd(fc, 0), 1), 2), 3), 4), 5), 6)
827827 }
828828 else fm
829829 }
830830
831831
832832 func fr (fs,ft) = if ((ft == ""))
833833 then $Tuple2(fs, false)
834834 else {
835835 func fu (eY,fv) = {
836836 let fw = split(fv, ",")
837837 if ((size(fw) != 2))
838838 then throw("Incorrect format, should be index,amount")
839839 else {
840- let di = parseIntValue(fw[0])
841- if (if ((0 > di))
840+ let dj = parseIntValue(fw[0])
841+ if (if ((0 > dj))
842842 then true
843- else (di >= size(aY)))
843+ else (dj >= size(aY)))
844844 then throw("Unknown product idx")
845845 else {
846846 let fx = parseIntValue(fw[1])
847847 let fy = split(eY._1, (fw[0] + ":"))
848848 if ((size(fy) != 2))
849- then throw((("You don't have " + aU[di]) + " equipped"))
849+ then throw((("You don't have " + aU[dj]) + " equipped"))
850850 else {
851851 let fz = fy[1]
852- let fA = if (dO(take(drop(fz, 1), 1)))
852+ let fA = if (dP(take(drop(fz, 1), 1)))
853853 then 2
854854 else 1
855855 let fB = parseIntValue(take(fz, fA))
856856 let fC = drop(fz, fA)
857857 let fD = if ((fB >= fx))
858858 then (fB - fx)
859- else throw(((((("You equipped " + toString(fB)) + " of ") + aU[di]) + ", but tried to use ") + toString(fx)))
859+ else throw(((((("You equipped " + toString(fB)) + " of ") + aU[dj]) + ", but tried to use ") + toString(fx)))
860860 $Tuple2(((((fy[0] + fw[0]) + ":") + toString(fD)) + fC), if (eY._2)
861861 then true
862- else if (if ((di >= 6))
863- then (8 >= di)
862+ else if (if ((dj >= 6))
863+ then (8 >= dj)
864864 else false)
865865 then (fD == 0)
866866 else false)
867867 }
868868 }
869869 }
870870 }
871871
872872 let fa = split(ft, "_")
873873 let fb = size(fa)
874874 let fc = $Tuple2(fs, false)
875875 func fd (fe,ff) = if ((ff >= fb))
876876 then fe
877877 else fu(fe, fa[ff])
878878
879879 func fg (fe,ff) = if ((ff >= fb))
880880 then fe
881881 else throw("List size exceeds 10")
882882
883883 fg(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fc, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
884884 }
885885
886886
887887 func fE (fF) = {
888888 let fG = if ((fF == ""))
889889 then nil
890890 else split_4C(fF, "_")
891891 func fH (eY,cu) = {
892892 let fI = (size(eY) / 8)
893893 let fB = if ((size(fG) > fI))
894894 then parseIntValue(fG[fI])
895895 else 0
896896 (eY + toBytes(fB))
897897 }
898898
899899 let fa = aY
900900 let fb = size(fa)
901901 let fc = base58''
902902 func fd (fe,ff) = if ((ff >= fb))
903903 then fe
904904 else fH(fe, fa[ff])
905905
906906 func fg (fe,ff) = if ((ff >= fb))
907907 then fe
908908 else throw("List size exceeds 50")
909909
910910 fg(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fc, 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)
911911 }
912912
913913
914914 func fJ (fK) = {
915915 func fL (eY,cu) = {
916916 let fI = size(eY)
917917 let fM = take(drop(fK, (8 * fI)), 8)
918918 (eY :+ toString(toInt(fM)))
919919 }
920920
921921 makeString_2C({
922922 let fa = aY
923923 let fb = size(fa)
924924 let fc = nil
925925 func fd (fe,ff) = if ((ff >= fb))
926926 then fe
927927 else fL(fe, fa[ff])
928928
929929 func fg (fe,ff) = if ((ff >= fb))
930930 then fe
931931 else throw("List size exceeds 50")
932932
933933 fg(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fc, 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)
934934 }, "_")
935935 }
936936
937937
938938 func fN (fO,fP) = {
939939 func fQ (eY,fI) = {
940940 let fR = if ((size(fO) > (7 + fI)))
941941 then fO[(7 + fI)]
942942 else 0
943943 if ((parseIntValue(fP[fI]) > (fO[fI] + fR)))
944944 then throw(("Requirement not satisfied: " + k[fI]))
945945 else true
946946 }
947947
948948 let fa = [0, 1, 2, 3, 4, 5, 6]
949949 let fb = size(fa)
950950 let fc = false
951951 func fd (fe,ff) = if ((ff >= fb))
952952 then fe
953953 else fQ(fe, fa[ff])
954954
955955 func fg (fe,ff) = if ((ff >= fb))
956956 then fe
957957 else throw("List size exceeds 7")
958958
959959 fg(fd(fd(fd(fd(fd(fd(fd(fc, 0), 1), 2), 3), 4), 5), 6), 7)
960960 }
961961
962962
963963 func fS (fT,fG,fU,fO,fV,fW) = {
964964 let fw = split(fT, ":")
965965 if ((size(fw) != 2))
966966 then throw("Incorrect format, should be index:amount")
967967 else if (if (!(fU))
968968 then (size(fw[0]) != 2)
969969 else false)
970970 then throw("Product idx should be 2 digits, zero padded")
971971 else {
972972 let fX = parseIntValue(fw[0])
973973 let fY = parseIntValue(fw[1])
974974 if (!(containsElement(aX, fX)))
975975 then throw((("Product '" + aU[fX]) + "' cannot be used for land defense"))
976976 else if ((0 > fY))
977977 then throw("Count can't be negative")
978978 else if ((fY > u))
979979 then throw(((("Can't put more than " + toString(u)) + " of ") + aU[fX]))
980980 else if ((fY == 0))
981981 then $Tuple3(fG, fV, fW)
982982 else {
983983 let fZ = take(fG, (8 * fX))
984984 let fB = toInt(take(drop(fG, (8 * fX)), 8))
985985 let fC = drop(fG, (8 * (fX + 1)))
986986 let cu = split(aY[fX], "_")
987987 if (if (!(fU))
988988 then (fY > fB)
989989 else false)
990990 then throw(((((("You have " + toString(fB)) + " of ") + aU[fX]) + ", but tried to use ") + toString(fY)))
991991 else {
992992 let fD = if (if (!(fU))
993993 then fN(fO, split(cu[bb], ","))
994994 else false)
995995 then (fB - fY)
996996 else (fB + fY)
997997 let ga = (eO(fD, bd) - eO(fB, bd))
998998 $Tuple3(((fZ + toBytes(fD)) + fC), (fV + ga), (fW - ga))
999999 }
10001000 }
10011001 }
10021002 }
10031003
10041004
10051005 func gb (fT,fG,fU,gc,gd,ge,fO) = {
10061006 let fw = split(fT, ":")
10071007 if ((size(fw) != 2))
10081008 then throw("Incorrect format, should be index:amount")
10091009 else if (if (!(fU))
10101010 then (size(fw[0]) != 2)
10111011 else false)
10121012 then throw("Product idx should be 2 digits, zero padded")
10131013 else {
10141014 let fX = parseIntValue(fw[0])
10151015 let fY = parseIntValue(fw[1])
10161016 if (if ((0 > fX))
10171017 then true
10181018 else (fX >= size(aY)))
10191019 then throw("Unknown product idx")
10201020 else if ((0 > fY))
10211021 then throw("Count can't be negative")
10221022 else if ((fY > u))
10231023 then throw(((("Can't put more than " + toString(u)) + " of ") + aU[fX]))
10241024 else if ((fY == 0))
10251025 then $Tuple2(fG, false)
10261026 else {
10271027 let fZ = take(fG, (8 * fX))
10281028 let fB = toInt(take(drop(fG, (8 * fX)), 8))
10291029 let fC = drop(fG, (8 * (fX + 1)))
10301030 let cu = split(aY[fX], "_")
10311031 if (if (!(fU))
10321032 then (fY > fB)
10331033 else false)
10341034 then throw(((((("You have " + toString(fB)) + " of ") + aU[fX]) + ", but tried to use ") + toString(fY)))
10351035 else {
10361036 let gf = if (if (!(fU))
10371037 then fN(fO, split(cu[bb], ","))
10381038 else false)
10391039 then {
10401040 let gg = cu[bc]
10411041 if ((gg == ""))
10421042 then throw("Item cannot be equipped")
10431043 else {
10441044 let gh = parseIntValue(gg)
10451045 let gi = (gh / 100)
10461046 if ((gc != gi))
10471047 then throw("Segment incompatible")
10481048 else {
10491049 let gj = ((gh % 100) / 10)
10501050 if ((gd != gj))
10511051 then throw("Slot incompatible")
10521052 else {
10531053 let gk = (gh % 10)
10541054 if (if ((ge != 0))
10551055 then (gk > 1)
10561056 else false)
10571057 then throw("Big items should occupy slot 0")
10581058 else (gk > 1)
10591059 }
10601060 }
10611061 }
10621062 }
10631063 else false
10641064 $Tuple2(((fZ + toBytes((fB + (if (fU)
10651065 then fY
10661066 else -(fY))))) + fC), gf)
10671067 }
10681068 }
10691069 }
10701070 }
10711071
10721072
10731073 func gl (gm,gn,fU,gc,gd,go) = if ((gm != ""))
10741074 then {
10751075 let gp = split(gm, ",")
10761076 if ((size(gp) > t))
10771077 then throw("Wrong slots format")
10781078 else {
10791079 let gq = gp[0]
10801080 let gr = if ((size(gp) > 1))
10811081 then gp[1]
10821082 else ""
10831083 if (if ((gq == ""))
10841084 then (gr == "")
10851085 else false)
10861086 then gn
10871087 else {
10881088 let gs = if ((gq != ""))
10891089 then gb(gq, gn, fU, gc, gd, 0, go)
10901090 else $Tuple2(gn, false)
10911091 if ((gr != ""))
10921092 then if (gs._2)
10931093 then throw("Big item already occupies slot")
10941094 else gb(gr, gs._1, fU, gc, gd, 1, go)._1
10951095 else gs._1
10961096 }
10971097 }
10981098 }
10991099 else gn
11001100
11011101
11021102 func gt (gu,gv,fU,go) = {
11031103 func gc (eY,gw) = {
11041104 let fI = eY._1
11051105 let gd = split(gw, ";")
11061106 if ((size(gd) != s))
11071107 then throw("Wrong segment format")
11081108 else {
11091109 let gx = gd[0]
11101110 let gy = gd[1]
11111111 if (if ((gx == ""))
11121112 then (gy == "")
11131113 else false)
11141114 then $Tuple2((fI + 1), eY._2)
11151115 else {
11161116 let gz = gl(gx, eY._2, fU, fI, 0, go)
11171117 $Tuple2((fI + 1), gl(gy, gz, fU, fI, 1, go))
11181118 }
11191119 }
11201120 }
11211121
11221122 ( let fa = gu
11231123 let fb = size(fa)
11241124 let fc = $Tuple2(0, gv)
11251125 func fd (fe,ff) = if ((ff >= fb))
11261126 then fe
11271127 else gc(fe, fa[ff])
11281128
11291129 func fg (fe,ff) = if ((ff >= fb))
11301130 then fe
11311131 else throw("List size exceeds 6")
11321132
11331133 fg(fd(fd(fd(fd(fd(fd(fc, 0), 1), 2), 3), 4), 5), 6))._2
11341134 }
11351135
11361136
11371137 func gA (gu,gv,fV,fW,fU,fO) = if ((3 > size(gu)))
11381138 then throw("At least duck, mines and traps parts are required")
11391139 else {
11401140 func gc (eY,gw) = {
11411141 let fI = eY._1
11421142 if ((fI == 0))
11431143 then $Tuple4((fI + 1), eY._2, eY._3, eY._4)
11441144 else {
11451145 let gB = fS(gw, eY._2, fU, fO, eY._3, eY._4)
11461146 $Tuple4((fI + 1), gB._1, gB._2, gB._3)
11471147 }
11481148 }
11491149
11501150 let gC = {
11511151 let fa = gu
11521152 let fb = size(fa)
11531153 let fc = $Tuple4(0, gv, fV, fW)
11541154 func fd (fe,ff) = if ((ff >= fb))
11551155 then fe
11561156 else gc(fe, fa[ff])
11571157
11581158 func fg (fe,ff) = if ((ff >= fb))
11591159 then fe
11601160 else throw("List size exceeds 10")
11611161
11621162 fg(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fc, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
11631163 }
11641164 $Tuple3(gC._2, gC._3, gC._4)
11651165 }
11661166
11671167
11681168 func gD (B) = {
11691169 let gE = G(B)
11701170 let gF = split(valueOrElse(getString(gE), ",;,_,;,_,;,_,;,_,;,_,;,"), "_")
11711171 let gG = gt(gF, ef, true, nil)
11721172 let gH = split(gF[q], ";")[1]
11731173 let ar = if ((gH == ""))
11741174 then 0
11751175 else {
11761176 let gI = split(gH, ",")[0]
11771177 if ((gI == ""))
11781178 then 0
11791179 else {
11801180 let fT = split(gI, ":")
1181- let di = fT[0]
1181+ let dj = fT[0]
11821182 let gJ = fT[1]
1183- if (if (if (if (if ((di == "06"))
1183+ if (if (if (if (if ((dj == "06"))
11841184 then true
1185- else (di == "07"))
1185+ else (dj == "07"))
11861186 then true
1187- else (di == "08"))
1187+ else (dj == "08"))
11881188 then (gJ != "")
11891189 else false)
11901190 then (parseIntValue(gJ) > 0)
11911191 else false)
1192- then parseIntValue(split(aY[parseIntValue(di)], "_")[ba])
1192+ then parseIntValue(split(aY[parseIntValue(dj)], "_")[ba])
11931193 else 0
11941194 }
11951195 }
11961196 let go = ap(this, B, ar, true)
11971197 let gK = gt(gF, gG, false, go)
11981198 (gK == gK)
11991199 }
12001200
12011201
12021202 func gL (gM,gN,gO,gP) = if ((size(gM) != aJ))
12031203 then throw("Wrong proportions data")
12041204 else {
12051205 func gQ (eY,gR) = {
12061206 let fq = (parseIntValue(gM[gR]) + ((gP * gN[gR]) * gO))
12071207 if ((0 > fq))
12081208 then throw(((((((("Panic! Pieces of type=" + toString(gR)) + ", sign=") + toString(gP)) + ", terrainCounts[i]=") + toString(gN[gR])) + ", landSizeIndex=") + toString(gO)))
12091209 else (eY :+ toString(fq))
12101210 }
12111211
1212- let fa = cS
1212+ let fa = cT
12131213 let fb = size(fa)
12141214 let fc = nil
12151215 func fd (fe,ff) = if ((ff >= fb))
12161216 then fe
12171217 else gQ(fe, fa[ff])
12181218
12191219 func fg (fe,ff) = if ((ff >= fb))
12201220 then fe
12211221 else throw("List size exceeds 6")
12221222
12231223 fg(fd(fd(fd(fd(fd(fd(fc, 0), 1), 2), 3), 4), 5), 6)
12241224 }
12251225
12261226
12271227 func gS (gN,gO,gP) = {
1228- let gM = split(valueOrElse(getString(dz()), "0_0_0_0_0_0"), "_")
1228+ let gM = split(valueOrElse(getString(dA()), "0_0_0_0_0_0"), "_")
12291229 makeString(gL(gM, gN, gO, gP), "_")
12301230 }
12311231
12321232
12331233 func gT (gU) = [(size(split(gU, "A")) - 1), (size(split(gU, "B")) - 1), (size(split(gU, "C")) - 1), (size(split(gU, "D")) - 1), (size(split(gU, "E")) - 1), (size(split(gU, "F")) - 1)]
12341234
12351235
12361236 func gV (gW,gN,gX,gO,gY) = {
12371237 func gZ (eY,gR) = {
12381238 let ha = ((fraction(gX, gY, a) * gN[gR]) * gO)
12391239 (eY :+ toString((parseIntValue(gW[gR]) + ha)))
12401240 }
12411241
12421242 let fj = {
1243- let fa = cS
1243+ let fa = cT
12441244 let fb = size(fa)
12451245 let fc = nil
12461246 func fd (fe,ff) = if ((ff >= fb))
12471247 then fe
12481248 else gZ(fe, fa[ff])
12491249
12501250 func fg (fe,ff) = if ((ff >= fb))
12511251 then fe
12521252 else throw("List size exceeds 6")
12531253
12541254 fg(fd(fd(fd(fd(fd(fd(fc, 0), 1), 2), 3), 4), 5), 6)
12551255 }
12561256 makeString(fj, "_")
12571257 }
12581258
12591259
12601260 func hb (gN,gX,gO,gY) = {
12611261 func gZ (eY,gR) = {
12621262 let ha = ((fraction(gX, gY, a) * gN[gR]) * gO)
12631263 $Tuple2((eY._1 :+ ha), (eY._2 + ha))
12641264 }
12651265
1266- let fa = cS
1266+ let fa = cT
12671267 let fb = size(fa)
12681268 let fc = $Tuple2(nil, 0)
12691269 func fd (fe,ff) = if ((ff >= fb))
12701270 then fe
12711271 else gZ(fe, fa[ff])
12721272
12731273 func fg (fe,ff) = if ((ff >= fb))
12741274 then fe
12751275 else throw("List size exceeds 6")
12761276
12771277 fg(fd(fd(fd(fd(fd(fd(fc, 0), 1), 2), 3), 4), 5), 6)
12781278 }
12791279
12801280
12811281 func hc (hd,he,hf,hg) = {
12821282 let hh = hf._1
12831283 let hi = hf._2
12841284 if ((hi == 0))
12851285 then $Tuple2(makeString(hd, "_"), makeString(he, "_"))
12861286 else if ((hg >= hi))
12871287 then {
12881288 func hj (eY,gR) = (eY :+ toString((parseIntValue(hd[gR]) + hh[gR])))
12891289
12901290 let fj = {
1291- let fa = cS
1291+ let fa = cT
12921292 let fb = size(fa)
12931293 let fc = nil
12941294 func fd (fe,ff) = if ((ff >= fb))
12951295 then fe
12961296 else hj(fe, fa[ff])
12971297
12981298 func fg (fe,ff) = if ((ff >= fb))
12991299 then fe
13001300 else throw("List size exceeds 6")
13011301
13021302 fg(fd(fd(fd(fd(fd(fd(fc, 0), 1), 2), 3), 4), 5), 6)
13031303 }
13041304 $Tuple2(makeString(fj, "_"), makeString(he, "_"))
13051305 }
13061306 else {
13071307 func hk (eY,gR) = {
13081308 let hl = fraction(hh[gR], hg, hi)
13091309 $Tuple2((eY._1 :+ toString((parseIntValue(hd[gR]) + hl))), (eY._2 :+ toString(((parseIntValue(he[gR]) + hh[gR]) - hl))))
13101310 }
13111311
13121312 let fj = {
1313- let fa = cS
1313+ let fa = cT
13141314 let fb = size(fa)
13151315 let fc = $Tuple2(nil, nil)
13161316 func fd (fe,ff) = if ((ff >= fb))
13171317 then fe
13181318 else hk(fe, fa[ff])
13191319
13201320 func fg (fe,ff) = if ((ff >= fb))
13211321 then fe
13221322 else throw("List size exceeds 6")
13231323
13241324 fg(fd(fd(fd(fd(fd(fd(fc, 0), 1), 2), 3), 4), 5), 6)
13251325 }
13261326 $Tuple2(makeString(fj._1, "_"), makeString(fj._2, "_"))
13271327 }
13281328 }
13291329
13301330
13311331 func hm (hn) = if ((hn >= toBigInt(0)))
13321332 then hn
13331333 else -(hn)
13341334
13351335
13361336 let ho = [[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]]
13371337
1338-func hp (dI,hq) = {
1339- let hr = toInt((dI % ep))
1338+func hp (dJ,hq) = {
1339+ let hr = toInt((dJ % ep))
13401340 let hs = if ((hq[0] > hr))
13411341 then "A"
13421342 else if ((hq[1] > hr))
13431343 then "B"
13441344 else if ((hq[2] > hr))
13451345 then "C"
13461346 else if ((hq[3] > hr))
13471347 then "D"
13481348 else if ((hq[4] > hr))
13491349 then "E"
13501350 else "F"
13511351 hs
13521352 }
13531353
13541354
13551355 func ht (hu,hv) = {
13561356 let hw = ho[hv]
13571357 func hx (eY,eZ) = $Tuple2((((((eY._1 + hp(eY._2, hw)) + hp((eY._2 / ep), hw)) + hp((eY._2 / eq), hw)) + hp((eY._2 / er), hw)) + hp((eY._2 / es), hw)), (eY._2 / et))
13581358
13591359 let gC = {
13601360 let fa = [1, 2, 3, 4, 5]
13611361 let fb = size(fa)
13621362 let fc = $Tuple2("", (hu / eo))
13631363 func fd (fe,ff) = if ((ff >= fb))
13641364 then fe
13651365 else hx(fe, fa[ff])
13661366
13671367 func fg (fe,ff) = if ((ff >= fb))
13681368 then fe
13691369 else throw("List size exceeds 5")
13701370
13711371 fg(fd(fd(fd(fd(fd(fc, 0), 1), 2), 3), 4), 5)
13721372 }
13731373 gC._1
13741374 }
13751375
13761376
13771377 let hy = [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]
13781378
13791379 let hz = ["A", "B", "C", "D", "E", "F"]
13801380
13811381 func hA (hB,gO) = {
1382- func hC (eY,dG) = {
1382+ func hC (eY,dH) = {
13831383 let fI = eY._2
1384- let hD = parseIntValue(dG)
1384+ let hD = parseIntValue(dH)
13851385 let hn = if ((hD == 0))
13861386 then 0
13871387 else if ((hD >= (4 * gO)))
13881388 then (hD / gO)
13891389 else if ((hD > (3 * gO)))
13901390 then 3
13911391 else (((hD - 1) / gO) + 1)
13921392 $Tuple3((eY._1 :+ hn), (eY._2 + 1), (eY._3 + hn))
13931393 }
13941394
13951395 let gC = {
13961396 let fa = hB
13971397 let fb = size(fa)
13981398 let fc = $Tuple3(nil, 0, 0)
13991399 func fd (fe,ff) = if ((ff >= fb))
14001400 then fe
14011401 else hC(fe, fa[ff])
14021402
14031403 func fg (fe,ff) = if ((ff >= fb))
14041404 then fe
14051405 else throw("List size exceeds 6")
14061406
14071407 fg(fd(fd(fd(fd(fd(fd(fc, 0), 1), 2), 3), 4), 5), 6)
14081408 }
14091409 let hE = gC._1
14101410 let hF = value(indexOf(hE, max(hE)))
14111411 let hG = (gC._3 - 25)
1412- func hH (eY,di) = {
1413- let dS = if ((di == hF))
1414- then (hE[di] - hG)
1415- else hE[di]
1416- let dW = if ((dS == 0))
1412+ func hH (eY,dj) = {
1413+ let dT = if ((dj == hF))
1414+ then (hE[dj] - hG)
1415+ else hE[dj]
1416+ let dX = if ((dT == 0))
14171417 then nil
1418- else split(drop(toString(pow(10, 0, dS, 0, 0, DOWN)), 1), "")
1419- let gh = hz[di]
1418+ else split(drop(toString(pow(10, 0, dT, 0, 0, DOWN)), 1), "")
1419+ let gh = hz[dj]
14201420 func hI (hJ,hK) = (hJ :+ gh)
14211421
14221422 let hL = {
1423- let fa = dW
1423+ let fa = dX
14241424 let fb = size(fa)
14251425 let fc = nil
14261426 func hM (fe,ff) = if ((ff >= fb))
14271427 then fe
14281428 else hI(fe, fa[ff])
14291429
14301430 func hN (fe,ff) = if ((ff >= fb))
14311431 then fe
14321432 else throw("List size exceeds 25")
14331433
14341434 hN(hM(hM(hM(hM(hM(hM(hM(hM(hM(hM(hM(hM(hM(hM(hM(hM(hM(hM(hM(hM(hM(hM(hM(hM(hM(fc, 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)
14351435 }
14361436 (eY ++ hL)
14371437 }
14381438
14391439 let fj = {
1440- let fa = cS
1440+ let fa = cT
14411441 let fb = size(fa)
14421442 let fc = nil
14431443 func hM (fe,ff) = if ((ff >= fb))
14441444 then fe
14451445 else hH(fe, fa[ff])
14461446
14471447 func hN (fe,ff) = if ((ff >= fb))
14481448 then fe
14491449 else throw("List size exceeds 6")
14501450
14511451 hN(hM(hM(hM(hM(hM(hM(fc, 0), 1), 2), 3), 4), 5), 6)
14521452 }
14531453 func hO (eY,fI) = (eY + fj[fI])
14541454
14551455 let fa = hy
14561456 let fb = size(fa)
14571457 let fc = ""
14581458 func hP (fe,ff) = if ((ff >= fb))
14591459 then fe
14601460 else hO(fe, fa[ff])
14611461
14621462 func hQ (fe,ff) = if ((ff >= fb))
14631463 then fe
14641464 else throw("List size exceeds 25")
14651465
14661466 hQ(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(fc, 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)
14671467 }
14681468
14691469
14701470 func hR (hS) = {
14711471 let gB = split(valueOrElse(getString(hS), "0:0_0_0_0_0_0:0_0_0_0_0_0:"), ":")
14721472 [toString(valueOrElse(parseInt(gB[bn]), 0)), if ((size(split(gB[bo], "_")) == aJ))
14731473 then gB[bo]
14741474 else "0_0_0_0_0_0", if ((size(split(gB[bp], "_")) == aJ))
14751475 then gB[bp]
14761476 else "0_0_0_0_0_0", gB[bq]]
14771477 }
14781478
14791479
14801480 func hT (hU) = {
14811481 let fw = split(hU, "_")
14821482 ((aM * (parseIntValue(fw[1]) + 1)) * parseIntValue(fw[0]))
14831483 }
14841484
14851485
14861486 func hV (hW) = {
14871487 let hX = hW[bh]
14881488 func hY (eY,hZ) = (eY + parseIntValue(hZ))
14891489
14901490 func ia (eY,hZ) = {
1491- let di = eY._1
1491+ let dj = eY._1
14921492 let eR = (((parseIntValue(hZ) + bd) - 1) / bd)
1493- $Tuple2((di + 1), (eY._2 + (eR * cM)))
1493+ $Tuple2((dj + 1), (eY._2 + (eR * cN)))
14941494 }
14951495
14961496 let ib = {
14971497 let fa = split(hW[bf], "_")
14981498 let fb = size(fa)
14991499 let fc = 0
15001500 func fd (fe,ff) = if ((ff >= fb))
15011501 then fe
15021502 else hY(fe, fa[ff])
15031503
15041504 func fg (fe,ff) = if ((ff >= fb))
15051505 then fe
15061506 else throw("List size exceeds 6")
15071507
15081508 fg(fd(fd(fd(fd(fd(fd(fc, 0), 1), 2), 3), 4), 5), 6)
15091509 }
15101510 let ic = {
15111511 let fa = split(hW[bg], "_")
15121512 let fb = size(fa)
15131513 let fc = 0
15141514 func hM (fe,ff) = if ((ff >= fb))
15151515 then fe
15161516 else hY(fe, fa[ff])
15171517
15181518 func hN (fe,ff) = if ((ff >= fb))
15191519 then fe
15201520 else throw("List size exceeds 6")
15211521
15221522 hN(hM(hM(hM(hM(hM(hM(fc, 0), 1), 2), 3), 4), 5), 6)
15231523 }
15241524 let id = if ((hX == ""))
15251525 then 0
15261526 else ( let fa = split_4C(hX, "_")
15271527 let fb = size(fa)
15281528 let fc = $Tuple2(0, 0)
15291529 func hP (fe,ff) = if ((ff >= fb))
15301530 then fe
15311531 else ia(fe, fa[ff])
15321532
15331533 func hQ (fe,ff) = if ((ff >= fb))
15341534 then fe
15351535 else throw("List size exceeds 50")
15361536
15371537 hQ(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(fc, 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
15381538 ((ib + ic) + id)
15391539 }
15401540
15411541
15421542 func ie (if,ig,ih) = {
15431543 let hU = ((toString(ig) + "_") + toString(ih))
15441544 let ii = hT(hU)
15451545 let ij = valueOrElse(getString(if), (hU + ":0_0_0_0_0_0:0_0_0_0_0_0::0"))
15461546 let ik = split_4C(ij, ":")
15471547 let il = hV(ik)
15481548 let im = if ((5 > size(ik)))
15491549 then makeString(["0", toString(il), toString((ii - il)), toString(ii)], "_")
15501550 else {
15511551 let in = split(ik[bi], "_")
15521552 let io = parseIntValue(in[bj])
15531553 let ip = if ((size(in) > 1))
15541554 then parseIntValue(in[bk])
15551555 else il
15561556 makeString([toString(io), toString(ip), toString(((ii - io) - ip)), toString(ii)], "_")
15571557 }
15581558 [ik[be], if ((size(split(ik[bf], "_")) == aJ))
15591559 then ik[bf]
15601560 else "0_0_0_0_0_0", if ((size(split(ik[bg], "_")) == aJ))
15611561 then ik[bg]
15621562 else "0_0_0_0_0_0", ik[bh], im]
15631563 }
15641564
15651565
15661566 func iq (hW) = {
15671567 let ir = hV(hW)
15681568 let is = parseIntValue(split(hW[bi], "_")[bj])
15691569 ((hT(hW[be]) - ir) - is)
15701570 }
15711571
15721572
15731573 func it (iu,hW,iv) = if ((size(iu) != 3))
15741574 then throw("cargoListStr should contain exactly 2 ':' separators")
15751575 else {
15761576 let iw = split(iu[0], "_")
15771577 let ix = split(iu[1], "_")
15781578 let iy = if ((iu[2] == ""))
15791579 then nil
15801580 else split_4C(iu[2], "_")
15811581 if ((size(iw) != aJ))
15821582 then throw("All 6 resources should be passed")
15831583 else if ((size(ix) != aJ))
15841584 then throw("All 6 materials should be passed")
15851585 else {
15861586 let hg = iq(hW)
15871587 let iz = split(hW[bf], "_")
15881588 let iA = split(hW[bg], "_")
15891589 let iB = if ((hW[bh] == ""))
15901590 then nil
15911591 else split_4C(hW[bh], "_")
15921592 let he = split(iv[bo], "_")
15931593 let iC = split(iv[bp], "_")
15941594 let iD = if ((iv[bq] == ""))
15951595 then nil
15961596 else split_4C(iv[bq], "_")
15971597 func iE (eY,hZ) = {
15981598 let gR = eY._1
15991599 let iF = parseIntValue(hZ)
16001600 let iG = parseIntValue(iz[gR])
16011601 let iH = parseIntValue(he[gR])
16021602 if ((iF == 0))
16031603 then $Tuple4((gR + 1), (eY._2 :+ iz[gR]), (eY._3 :+ he[gR]), eY._4)
16041604 else if ((iF > 0))
16051605 then if ((iF > iH))
16061606 then throw((((("Attempt to take " + hZ) + " from backpack, but only ") + toString(iH)) + " available"))
16071607 else $Tuple4((gR + 1), (eY._2 :+ toString((iG + iF))), (eY._3 :+ toString((iH - iF))), (eY._4 + iF))
16081608 else if ((-(iF) > iG))
16091609 then throw((((("Attempt to take " + toString(-(iF))) + " from warehouse, but only ") + toString(iG)) + " available"))
16101610 else $Tuple4((gR + 1), (eY._2 :+ toString((iG + iF))), (eY._3 :+ toString((iH - iF))), (eY._4 + iF))
16111611 }
16121612
16131613 let fj = {
16141614 let fa = iw
16151615 let fb = size(fa)
16161616 let fc = $Tuple4(0, nil, nil, 0)
16171617 func fd (fe,ff) = if ((ff >= fb))
16181618 then fe
16191619 else iE(fe, fa[ff])
16201620
16211621 func fg (fe,ff) = if ((ff >= fb))
16221622 then fe
16231623 else throw("List size exceeds 6")
16241624
16251625 fg(fd(fd(fd(fd(fd(fd(fc, 0), 1), 2), 3), 4), 5), 6)
16261626 }
16271627 func iI (eY,hZ) = {
16281628 let gR = eY._1
16291629 let iF = parseIntValue(hZ)
16301630 let iJ = parseIntValue(iA[gR])
16311631 let iK = parseIntValue(iC[gR])
16321632 if ((iF == 0))
16331633 then $Tuple4((gR + 1), (eY._2 :+ iA[gR]), (eY._3 :+ iC[gR]), eY._4)
16341634 else if ((iF > 0))
16351635 then if ((iF > iK))
16361636 then throw((((("Attempt to take " + hZ) + " from backpack, but only ") + toString(iK)) + " available"))
16371637 else $Tuple4((gR + 1), (eY._2 :+ toString((iJ + iF))), (eY._3 :+ toString((iK - iF))), (eY._4 + iF))
16381638 else if ((-(iF) > iJ))
16391639 then throw((((("Attempt to take " + toString(-(iF))) + " from warehouse, but only ") + toString(iJ)) + " available"))
16401640 else $Tuple4((gR + 1), (eY._2 :+ toString((iJ + iF))), (eY._3 :+ toString((iK - iF))), (eY._4 + iF))
16411641 }
16421642
16431643 let gx = {
16441644 let fa = ix
16451645 let fb = size(fa)
16461646 let fc = $Tuple4(0, nil, nil, fj._4)
16471647 func hM (fe,ff) = if ((ff >= fb))
16481648 then fe
16491649 else iI(fe, fa[ff])
16501650
16511651 func hN (fe,ff) = if ((ff >= fb))
16521652 then fe
16531653 else throw("List size exceeds 6")
16541654
16551655 hN(hM(hM(hM(hM(hM(hM(fc, 0), 1), 2), 3), 4), 5), 6)
16561656 }
16571657 func iL (eY,hZ) = {
16581658 let gR = eY._1
16591659 let iF = parseIntValue(hZ)
16601660 let iM = if ((size(iB) > gR))
16611661 then parseIntValue(iB[gR])
16621662 else 0
16631663 let iN = if ((size(iD) > gR))
16641664 then parseIntValue(iD[gR])
16651665 else 0
16661666 if ((iF == 0))
16671667 then $Tuple4((gR + 1), (eY._2 :+ toString(iM)), (eY._3 :+ toString(iN)), eY._4)
16681668 else if ((iF > 0))
16691669 then if ((iF > iN))
16701670 then throw((((("Attempt to take " + hZ) + " from backpack, but only ") + toString(iN)) + " available"))
16711671 else {
16721672 let ga = (eO((iM + iF), bd) - eO(iM, bd))
16731673 $Tuple4((gR + 1), (eY._2 :+ toString((iM + iF))), (eY._3 :+ toString((iN - iF))), (eY._4 + ga))
16741674 }
16751675 else if ((-(iF) > iM))
16761676 then throw((((("Attempt to take " + toString(-(iF))) + " from warehouse, but only ") + toString(iM)) + " available"))
16771677 else {
16781678 let ga = (eO((iM + iF), bd) - eO(iM, bd))
16791679 $Tuple4((gR + 1), (eY._2 :+ toString((iM + iF))), (eY._3 :+ toString((iN - iF))), (eY._4 + ga))
16801680 }
16811681 }
16821682
16831683 let gB = if ((size(iy) != 0))
16841684 then {
16851685 let fa = iy
16861686 let fb = size(fa)
16871687 let fc = $Tuple4(0, nil, nil, gx._4)
16881688 func hP (fe,ff) = if ((ff >= fb))
16891689 then fe
16901690 else iL(fe, fa[ff])
16911691
16921692 func hQ (fe,ff) = if ((ff >= fb))
16931693 then fe
16941694 else throw("List size exceeds 50")
16951695
16961696 hQ(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(hP(fc, 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)
16971697 }
16981698 else $Tuple4(0, iB, iD, gx._4)
16991699 let iO = gB._4
17001700 if ((iO > hg))
17011701 then throw((((("Attempt to put total " + toString(iO)) + " stuff, but only ") + toString(hg)) + " warehouse space left"))
17021702 else $Tuple7(makeString(fj._2, "_"), makeString(gx._2, "_"), makeString_2C(gB._2, "_"), makeString(fj._3, "_"), makeString(gx._3, "_"), makeString_2C(gB._3, "_"), iO)
17031703 }
17041704 }
17051705
17061706
17071707 func iP (iQ,iR) = {
17081708 let bR = toString(iQ)
17091709 let iS = hm(toBigInt(iR))
17101710 let iT = valueOrElse(getInteger(ev()), (eu + 1))
17111711 let ez = toString(iT)
17121712 let hv = toInt((iS % eo))
17131713 let gU = ht(iS, hv)
1714- let dB = aV[hv]
1715- let iU = Issue(eN(ez, "S"), makeString([ez, "S", gU, dB], "_"), 1, 0, false)
1714+ let dC = aV[hv]
1715+ let iU = Issue(eN(ez, "S"), makeString([ez, "S", gU, dC], "_"), 1, 0, false)
17161716 let bv = calculateAssetId(iU)
17171717 let iV = toBase58String(bv)
1718- $Tuple2([IntegerEntry(ev(), (iT + 1)), iU, StringEntry(ey(ez), iV), StringEntry(bu(iV), bR), StringEntry(eB(ez), bR), IntegerEntry(bE(iV), 0), IntegerEntry(eA(iV, bR), 0), ScriptTransfer(iQ, 1, bv)], $Tuple2(iV, dB))
1719- }
1720-
1721-
1722-func iW (bR,iX,iY) = if (!(sigVerify_8Kb(iX, iY, ee)))
1718+ $Tuple2([IntegerEntry(ev(), (iT + 1)), iU, StringEntry(ey(ez), iV), StringEntry(bu(iV), bR), StringEntry(eB(ez), bR), IntegerEntry(bE(iV), 0), IntegerEntry(eA(iV, bR), 0), ScriptTransfer(iQ, 1, bv)], $Tuple2(iV, dC))
1719+ }
1720+
1721+
1722+func iW (bR,iX,iY) = if (!(sigVerify_8Kb(iX, iY, cE)))
17231723 then throw("signature does not match")
17241724 else {
17251725 let fw = split_4C(toUtf8String(iX), ";")
17261726 let iZ = split_4C(fw[0], "|")
17271727 let ja = split(iZ[eJ], "_")
17281728 let jb = parseIntValue(ja[0])
17291729 let jc = parseIntValue(ja[1])
17301730 let jd = split(fw[1], ":")
17311731 let je = jd[0]
17321732 let jf = parseIntValue(iZ[eK])
17331733 if (if ((jf > (lastBlock.timestamp + eg)))
17341734 then true
17351735 else ((lastBlock.timestamp - eg) > jf))
17361736 then throw(((("signature outdated: logTime=" + toString(jf)) + ", bcTime=") + toString(lastBlock.timestamp)))
17371737 else {
17381738 let jg = jd[1]
1739- let jh = valueOrElse(getString(dQ(bR)), "")
1739+ let jh = valueOrElse(getString(dR(bR)), "")
17401740 if ((jh != jg))
17411741 then throw(((("Tx ids don't match! In state: " + jh) + ", in msg: ") + jg))
17421742 else {
17431743 let B = valueOrErrorMessage(getString(bN(bR)), "You don't have a duck staked")
17441744 let ji = A(B)
17451745 let jj = aj(valueOrElse(getInteger(E(B)), 0))
17461746 let jk = valueOrElse(getInteger(ji), jj)
17471747 if ((jk != jb))
17481748 then throw(((("oldHealth=" + toString(jk)) + " from state does not match one from flight log=") + toString(jb)))
17491749 else if ((0 >= jb))
17501750 then throw("You can't fly with zero health")
17511751 else if (!(gD(B)))
17521752 then throw("Equipment incompatible")
17531753 else {
17541754 let jl = if ((size(iZ) > eL))
17551755 then iZ[eL]
17561756 else ""
17571757 let jm = if ((size(iZ) > eM))
17581758 then iZ[eM]
17591759 else ""
17601760 let jn = if (if ((jc > 0))
17611761 then (jl == "$")
17621762 else false)
1763- then dH(invoke(dj, "sendUsdtPrize", [bR], nil))
1763+ then dI(invoke(dk, "sendUsdtPrize", [bR], nil))
17641764 else 0
17651765 $Tuple5(jc, B, jn, je, jm)
17661766 }
17671767 }
17681768 }
17691769 }
17701770
17711771
17721772 func jo (Q,jp) = {
17731773 let ih = valueOrElse(getInteger(bE(Q)), 0)
17741774 let jq = valueOrElse(getInteger(by(aI, Q)), 0)
17751775 let jr = (ih / 6)
17761776 let js = (ih / 7)
17771777 ((aL + fraction(aL, ((ih + jr) + (2 * js)), 5)) + fraction(aL, jq, (jp * 5)))
17781778 }
17791779
17801780
17811781 func jt (c,ju,jv) = {
17821782 let jw = if ((ju == eG))
17831783 then $Tuple2(jv, valueOrElse(getString(bN(c)), ""))
17841784 else {
17851785 let B = valueOrErrorMessage(getString(bN(c)), "You don't have a duck staked")
17861786 let jx = valueOrElse(getString(bP(B)), aN)
17871787 let cl = split(value(jx), "_")
17881788 if ((cl[bs] != "L"))
17891789 then throw((("Duck location type is " + cl[bs]) + ", but should be L"))
17901790 else $Tuple2(cl[bt], B)
17911791 }
17921792 let Q = jw._1
17931793 let jy = jw._2
17941794 let jz = value(assetInfo(fromBase58String(Q)))
17951795 let jA = bx(Q)
17961796 let jB = valueOrErrorMessage(getInteger(jA), (("Land " + jz.name) + " is not staked"))
17971797 let jC = valueOrErrorMessage(getString(bu(Q)), (("NFT " + jz.name) + " is orphaned"))
17981798 if ((jC != c))
17991799 then throw((aF + " is not yours"))
18001800 else {
18011801 let jD = split(jz.description, "_")
18021802 $Tuple4(jy, Q, jD, jB)
18031803 }
18041804 }
18051805
18061806
18071807 func jE (c,eP,ju,jv) = if ((0 > eP))
18081808 then throw("Negative amount")
18091809 else {
18101810 let gh = jt(c, ju, jv)
1811- let dN = gh._3[dq]
1812- let gN = gT(gh._3[dr])
1811+ let dO = gh._3[dr]
1812+ let gN = gT(gh._3[ds])
18131813 let gX = (lastBlock.timestamp - gh._4)
18141814 if ((0 > gX))
18151815 then throw(((("Saved timestamp is in future, saved = " + toString(gh._4)) + ", current = ") + toString(lastBlock.timestamp)))
18161816 else {
1817- let jp = dM(dN)
1817+ let jp = dN(dO)
18181818 let jF = jo(gh._2, jp)
18191819 let jG = fraction(gX, (jF * jp), a)
18201820 if ((eP > jG))
18211821 then throw(((("Not enough resources, available = " + toString(jG)) + ", requested = ") + toString(eP)))
18221822 else {
18231823 let jH = fraction((jG - eP), a, (jF * jp))
18241824 let jI = (lastBlock.timestamp - jH)
1825- let ig = (jp / cN)
1825+ let ig = (jp / cO)
18261826 let hf = hb(gN, (gX - jH), ig, jF)
18271827 let if = bD(gh._2)
18281828 let ih = valueOrElse(getInteger(bE(gh._2)), 0)
18291829 let hW = ie(if, ig, ih)
18301830 let in = split(hW[bi], "_")
18311831 let hg = parseIntValue(in[bl])
18321832 if (if ((ju == eG))
18331833 then (eP > hg)
18341834 else false)
18351835 then throw((("Only " + toString(hg)) + " space left in warehouse"))
18361836 else {
18371837 let hS = bO(gh._1)
18381838 let iv = hR(hS)
18391839 let he = split(iv[bo], "_")
18401840 let hd = split(hW[bf], "_")
18411841 let jJ = if ((ju == eG))
18421842 then $Tuple4(gV(hd, gN, (gX - jH), ig, jF), iv[bo], (parseIntValue(in[bk]) + hf._2), (parseIntValue(in[bl]) - hf._2))
18431843 else if ((ju == eH))
18441844 then $Tuple4(hW[bf], gV(he, gN, (gX - jH), ig, jF), parseIntValue(in[bk]), parseIntValue(in[bl]))
18451845 else {
18461846 let jK = hc(hd, he, hf, hg)
18471847 let jL = min([parseIntValue(in[bl]), hf._2])
18481848 $Tuple4(jK._1, jK._2, (parseIntValue(in[bk]) + jL), (parseIntValue(in[bl]) - jL))
18491849 }
18501850 let jM = jJ._1
18511851 let jN = jJ._2
18521852 let jO = jJ._3
18531853 let jP = jJ._4
18541854 $Tuple5([IntegerEntry(bx(gh._2), jI), IntegerEntry(bA(aF, gh._2, c), jI)], hS, [iv[bn], jN, iv[bp], iv[bq]], if, [hW[be], jM, hW[bg], hW[bh], makeString([in[bj], toString(jO), toString(jP), in[bm]], "_")])
18551855 }
18561856 }
18571857 }
18581858 }
18591859
18601860
18611861 func jQ (c,Q,jp,ju) = {
18621862 let jA = bx(Q)
18631863 let jB = value(getInteger(jA))
18641864 let jG = (fraction((lastBlock.timestamp - jB), jo(Q, jp), a) * jp)
18651865 jE(c, jG, ju, Q)
18661866 }
18671867
18681868
18691869 func jR (fl,iQ,jS,Q) = {
18701870 let c = toString(iQ)
18711871 let gh = jt(c, eI, Q)
1872- let jp = dM(gh._3[dq])
1872+ let jp = dN(gh._3[dr])
18731873 let jT = bE(gh._2)
18741874 let jU = valueOrElse(getInteger(jT), 0)
18751875 if (if (!(cA))
18761876 then (jU >= 3)
18771877 else false)
18781878 then throw("Currently max infrastructure level = 3")
18791879 else {
18801880 let jV = ((sqrt(jp, 0, 0, DOWN) / 5) + 2)
18811881 let ao = (jU + 1)
18821882 if (if (cA)
18831883 then (ao > jV)
18841884 else false)
18851885 then throw(("Currently max infrastructure level = " + toString(jV)))
18861886 else {
1887- let jW = fraction(ej, (jp * ao), cN)
1887+ let jW = fraction(ej, (jp * ao), cO)
18881888 if (if (!(fl))
18891889 then (jS != jW)
18901890 else false)
18911891 then throw(("Payment attached should be " + toString(jW)))
18921892 else {
18931893 let hS = bO(gh._1)
18941894 let iv = hR(hS)
18951895 let jX = split(iv[bp], "_")
1896- let jY = fraction(cH, (jp * ao), cN)
1896+ let jY = fraction(cI, (jp * ao), cO)
18971897 let jZ = makeString(fk(fl, jX, jY), "_")
18981898 let ka = jQ(c, gh._2, jp, eI)
18991899 let kb = ka._5
19001900 let kc = hT(kb[be])
19011901 let kd = makeString([split(kb[be], "_")[0], toString(ao)], "_")
19021902 let ke = hT(kd)
19031903 let in = split(kb[bi], "_")
19041904 let kf = makeString([in[bj], in[bk], toString(((parseIntValue(in[bl]) + ke) - kc)), toString(ke)], "_")
19051905 $Tuple3(([IntegerEntry(jT, ao), IntegerEntry(eA(gh._2, c), ao), StringEntry(hS, makeString([iv[bn], ka._3[bo], jZ, iv[bq]], ":")), StringEntry(ka._4, makeString([kd, kb[bf], kb[bg], kb[bh], kf], ":"))] ++ ka._1), ao, jY)
19061906 }
19071907 }
19081908 }
19091909 }
19101910
19111911
19121912 func kg (kh,ki,kj,kk) = {
19131913 let ai = valueOrElse(getInteger(ki), 0)
19141914 let an = (ai + kk)
19151915 let kl = al(valueOrElse(getInteger(kh), 0), an)
19161916 $Tuple2([IntegerEntry(kh, kl[0]), IntegerEntry(ki, an), IntegerEntry(kj, (valueOrElse(getInteger(kj), 0) + kl[1]))], an)
19171917 }
19181918
19191919
19201920 func km (B,kk) = {
19211921 let jz = value(assetInfo(fromBase58String(B)))
19221922 let c = valueOrErrorMessage(getString(bM(B)), (("NFT " + jz.name) + " is orphaned"))
19231923 if (if (if (cB)
19241924 then (jz.issuer == this)
19251925 else false)
19261926 then contains(jz.name, aH)
19271927 else false)
19281928 then kg(I(c), H(c), J(c), kk)
19291929 else kg(E(B), D(B), F(B), kk)
19301930 }
19311931
19321932
19331933 func kn (c,kk) = kg(I(c), H(c), J(c), kk)
19341934
19351935
19361936 func ko (c) = {
19371937 let B = valueOrErrorMessage(getString(bN(c)), "You don't have a duck staked")
19381938 let kp = bI(c)
19391939 let kq = getString(kp)
19401940 if (!(isDefined(kq)))
19411941 then throw("You are not eligible for ONBOARD artifact")
19421942 else {
19431943 let kr = bK(c)
19441944 let ks = getString(kr)
19451945 if (isDefined(ks))
19461946 then throw(("You already used your ONBOARD artifact on duck " + value(ks)))
19471947 else {
19481948 let kt = bJ(B)
19491949 let ku = getString(kt)
19501950 if (isDefined(ku))
19511951 then throw(((("The duck " + B) + " already got points from ONBOARD artifact from user ") + value(ku)))
19521952 else ([StringEntry(kr, B), StringEntry(kt, c)] ++ km(B, af)._1)
19531953 }
19541954 }
19551955 }
19561956
19571957
19581958 func kv (c,jv) = {
19591959 let gh = jt(c, eI, jv)
19601960 let Q = gh._2
1961- let jp = dM(gh._3[dq])
1961+ let jp = dN(gh._3[dr])
19621962 let kw = by(aI, Q)
19631963 if ((valueOrElse(getInteger(kw), 0) > 0))
19641964 then throw("Presale artifact is already activated")
1965- else if ((parseIntValue(gh._3[dp]) > eu))
1965+ else if ((parseIntValue(gh._3[dq]) > eu))
19661966 then throw((((aF + " ") + Q) + " is not eligible for presale artifact"))
19671967 else {
19681968 let ka = jQ(c, Q, jp, eI)
19691969 (((ka._1 :+ IntegerEntry(kw, jp)) :+ StringEntry(ka._2, makeString(ka._3, ":"))) :+ StringEntry(ka._4, makeString(ka._5, ":")))
19701970 }
19711971 }
19721972
19731973
19741974 func kx (B) = {
1975- let ck = valueOrElse(getInteger(dn, bV), 0)
1975+ let ck = valueOrElse(getInteger(do, bV), 0)
19761976 let jx = split(valueOrElse(getString(bP(B)), aN), "_")
19771977 let aA = lastBlock.timestamp
1978- let cm = ce(dn, ck)
1978+ let cm = ce(do, ck)
19791979 let cg = cm[ca]
19801980 let ch = cm[cb]
19811981 if ((jx[bs] != "T"))
19821982 then false
19831983 else if (if (if ((parseIntValue(jx[br]) == ck))
19841984 then (ch[cd] == "INPROGRESS")
19851985 else false)
19861986 then (parseIntValue(cg[cc]) > aA)
19871987 else false)
19881988 then throw("Your duck is taking part in the tournament")
1989- else dL(invoke(this, "exitTournamentInternal", [B], nil))
1989+ else dM(invoke(this, "exitTournamentInternal", [B], nil))
19901990 }
19911991
19921992
19931993 func ky (B) = {
19941994 let jx = split(valueOrElse(getString(bP(B)), aN), "_")
19951995 let aA = lastBlock.timestamp
19961996 if ((jx[bs] != "D"))
19971997 then false
19981998 else {
19991999 let co = parseIntValue(jx[br])
20002000 let cp = parseIntValue(jx[bt])
20012001 if (if (((co + aR) > aA))
20022002 then (1 > cp)
20032003 else false)
20042004 then throw("Your duck is on delivery mission")
2005- else dL(invoke(this, "exitDeliveryInternal", [B], nil))
2005+ else dM(invoke(this, "exitDeliveryInternal", [B], nil))
20062006 }
20072007 }
20082008
20092009
20102010 func kz (B,fQ,jc,kA) = {
20112011 let jx = split(valueOrElse(getString(bP(B)), aN), "_")
20122012 let aA = lastBlock.timestamp
20132013 let co = parseIntValue(jx[br])
20142014 let cp = parseIntValue(jx[bt])
20152015 let jC = valueOrErrorMessage(getString(bM(B)), "NFT duck is orphaned")
20162016 let kB = A(B)
20172017 let kC = getIntegerValue(kB)
20182018 let kD = if (if ((cp > 0))
20192019 then true
20202020 else if (if (fQ)
20212021 then (kA > 0)
20222022 else false)
20232023 then (jc > 0)
20242024 else false)
20252025 then {
2026- let kE = invoke(dk, "sendDeliveryReward", [jC], nil)
2026+ let kE = invoke(dl, "sendDeliveryReward", [jC], nil)
20272027 if ((kE == kE))
20282028 then {
20292029 let kF = V(jC)
20302030 [IntegerEntry(kF, (valueOrElse(getInteger(kF), 0) + 1)), IntegerEntry(W(jC), (co / a))]
20312031 }
20322032 else throw("Strict value is not equal to itself.")
20332033 }
20342034 else if (if (if (fQ)
20352035 then (jc > 0)
20362036 else false)
20372037 then ((co + aR) > aA)
20382038 else false)
20392039 then throw("Your duck is still on delivery mission")
20402040 else {
2041- let kG = valueOrElse(getInteger(dk, bU), 0)
2042- let kH = invoke(dk, "updateDeliveryLocked", [(kG - aQ)], nil)
2041+ let kG = valueOrElse(getInteger(dl, bU), 0)
2042+ let kH = invoke(dl, "updateDeliveryLocked", [(kG - aQ)], nil)
20432043 if ((kH == kH))
20442044 then if (if (if (fQ)
20452045 then (0 >= jc)
20462046 else false)
20472047 then true
20482048 else (0 >= kC))
20492049 then nil
2050- else [IntegerEntry(U(B), (co + cJ))]
2050+ else [IntegerEntry(U(B), (co + cK))]
20512051 else throw("Strict value is not equal to itself.")
20522052 }
20532053 let kI = getStringValue(L(B))
20542054 $Tuple3(kD, [StringEntry(bP(B), kI)], kI)
20552055 }
20562056
20572057
20582058 func kJ (kK,ao,kL,c,kM,kN) = {
20592059 let B = valueOrErrorMessage(getString(bN(c)), "You don't have a duck staked")
20602060 if (kx(B))
20612061 then throw("mergeInternal_checkTournament")
20622062 else if (ky(B))
20632063 then throw("mergeInternal_checkDelivery")
20642064 else {
20652065 func kO (eY,Q) = {
20662066 let jz = value(assetInfo(fromBase58String(Q)))
20672067 let jA = bx(Q)
20682068 let jB = valueOrErrorMessage(getInteger(jA), (("NFT " + jz.name) + " is not staked"))
20692069 let jC = valueOrErrorMessage(getString(bu(Q)), (("NFT " + jz.name) + " is orphaned"))
20702070 if ((jC != c))
20712071 then throw((aF + " is not yours"))
20722072 else {
20732073 let jD = split(jz.description, "_")
2074- let dB = jD[ds]
2074+ let dC = jD[dt]
20752075 if (if ((eY._3 != ""))
2076- then (eY._3 != dB)
2076+ then (eY._3 != dC)
20772077 else false)
20782078 then throw("Lands should be on the same continent to merge")
20792079 else {
2080- let dN = jD[dq]
2080+ let dO = jD[dr]
20812081 let kP = eY._1
2082- let gR = valueOrErrorMessage(indexOf(kP, dN), "You haven't passed all the lands needed")
2082+ let gR = valueOrErrorMessage(indexOf(kP, dO), "You haven't passed all the lands needed")
20832083 let kQ = (take(kP, gR) + drop(kP, (gR + 1)))
2084- let jp = dM(dN)
2084+ let jp = dN(dO)
20852085 let kR = (eY._2 + valueOrElse(getInteger(by(aI, Q)), 0))
20862086 let ih = valueOrElse(getInteger(bE(Q)), 0)
20872087 let kS = {
2088- let cF = dN
2088+ let cF = dO
20892089 if (("S" == cF))
20902090 then 3
20912091 else if (("M" == cF))
20922092 then 4
20932093 else if (("L" == cF))
20942094 then 5
20952095 else if (("XL" == cF))
20962096 then 6
20972097 else throw("Only S, M, L, XL can merge")
20982098 }
20992099 if ((ih != kS))
21002100 then throw("All lands should be maxed to merge")
21012101 else {
2102- let ez = jD[dp]
2103- let gN = gT(jD[dr])
2102+ let ez = jD[dq]
2103+ let gN = gT(jD[ds])
21042104 let gX = (lastBlock.timestamp - jB)
21052105 if ((0 > gX))
21062106 then throw(((("Saved timestamp is in future, saved = " + toString(jB)) + ", current = ") + toString(lastBlock.timestamp)))
21072107 else {
21082108 let jF = jo(Q, jp)
2109- let ig = (jp / cN)
2109+ let ig = (jp / cO)
21102110 let jN = gV(split(eY._4, "_"), gN, gX, ig, jF)
21112111 let fi = gL(eY._6, gN, ig, -1)
21122112 let kT = gL(eY._10, gN, ig, -1)
21132113 let hB = gL(eY._9, gN, ig, 1)
21142114 let kU = eY._7
2115- let di = indexOf(kU, Q)
2116- if (!(isDefined(di)))
2115+ let dj = indexOf(kU, Q)
2116+ if (!(isDefined(dj)))
21172117 then throw(("Your staked lands don't contain " + Q))
21182118 else {
21192119 let kV = bw(Q)
21202120 let kW = valueOrElse(getString(kV), "")
2121- $Tuple10(kQ, kR, dB, jN, ((((((((((((eY._5 :+ DeleteEntry(bx(Q))) :+ DeleteEntry(bA(aF, Q, c))) :+ DeleteEntry(ey(ez))) :+ DeleteEntry(bu(Q))) :+ DeleteEntry(bE(Q))) :+ DeleteEntry(eA(Q, c))) :+ DeleteEntry(by(aI, Q))) :+ DeleteEntry(eB(ez))) :+ DeleteEntry(bD(Q))) :+ DeleteEntry(kV)) :+ Burn(fromBase58String(Q), 1)) ++ (if ((kW != ""))
2121+ $Tuple10(kQ, kR, dC, jN, ((((((((((((eY._5 :+ DeleteEntry(bx(Q))) :+ DeleteEntry(bA(aF, Q, c))) :+ DeleteEntry(ey(ez))) :+ DeleteEntry(bu(Q))) :+ DeleteEntry(bE(Q))) :+ DeleteEntry(eA(Q, c))) :+ DeleteEntry(by(aI, Q))) :+ DeleteEntry(eB(ez))) :+ DeleteEntry(bD(Q))) :+ DeleteEntry(kV)) :+ Burn(fromBase58String(Q), 1)) ++ (if ((kW != ""))
21222122 then [DeleteEntry(ew(kW))]
2123- else nil)), fi, removeByIndex(kU, value(di)), (eY._8 + jp), hB, kT)
2123+ else nil)), fi, removeByIndex(kU, value(dj)), (eY._8 + jp), hB, kT)
21242124 }
21252125 }
21262126 }
21272127 }
21282128 }
21292129 }
21302130
21312131 let hS = bO(B)
21322132 let iv = hR(hS)
2133- let gM = split(valueOrElse(getString(dz()), "0_0_0_0_0_0"), "_")
2134- let kX = dC(c)
2133+ let gM = split(valueOrElse(getString(dA()), "0_0_0_0_0_0"), "_")
2134+ let kX = dD(c)
21352135 let kY = getString(kX)
21362136 let kZ = if (isDefined(kY))
21372137 then split_51C(value(kY), "_")
21382138 else nil
2139- let la = split(value(assetInfo(fromBase58String(kM[0]))).description, "_")[ds]
2140- let lb = split(valueOrElse(getString(dA(la)), "0_0_0_0_0_0"), "_")
2139+ let la = split(value(assetInfo(fromBase58String(kM[0]))).description, "_")[dt]
2140+ let lb = split(valueOrElse(getString(dB(la)), "0_0_0_0_0_0"), "_")
21412141 let fj = {
21422142 let fa = kM
21432143 let fb = size(fa)
21442144 let fc = $Tuple10(kL, 0, "", iv[bo], nil, gM, kZ, 0, split("0_0_0_0_0_0", "_"), lb)
21452145 func fd (fe,ff) = if ((ff >= fb))
21462146 then fe
21472147 else kO(fe, fa[ff])
21482148
21492149 func fg (fe,ff) = if ((ff >= fb))
21502150 then fe
21512151 else throw("List size exceeds 5")
21522152
21532153 fg(fd(fd(fd(fd(fd(fc, 0), 1), 2), 3), 4), 5)
21542154 }
2155- let dB = fj._3
2156- let hv = valueOrErrorMessage(indexOf(aV, dB), ("Unknown continent: " + dB))
2157- let gU = hA(fj._9, (dM(kK) / cN))
2155+ let dC = fj._3
2156+ let hv = valueOrErrorMessage(indexOf(aV, dC), ("Unknown continent: " + dC))
2157+ let gU = hA(fj._9, (dN(kK) / cO))
21582158 let iT = valueOrElse(getInteger(ev()), (eu + 1))
21592159 let lc = toString(iT)
2160- let iU = Issue(eN(lc, kK), makeString([lc, kK, gU, dB], "_"), 1, 0, false)
2160+ let iU = Issue(eN(lc, kK), makeString([lc, kK, gU, dC], "_"), 1, 0, false)
21612161 let bv = calculateAssetId(iU)
21622162 let ld = toBase58String(bv)
21632163 let jZ = makeString(fk((kN > 0), split(iv[bp], "_"), kN), "_")
2164- let le = dD(c)
2164+ let le = dE(c)
21652165 let lf = valueOrElse(getInteger(le), 0)
21662166 $Tuple2((((((((((((((((fj._5 :+ (if ((size(fj._7) > 0))
21672167 then StringEntry(kX, makeString_11C(fj._7, "_"))
21682168 else DeleteEntry(kX))) :+ IntegerEntry(le, if ((fj._8 > lf))
21692169 then 0
2170- else (lf - fj._8))) :+ IntegerEntry(ev(), (iT + 1))) :+ iU) :+ StringEntry(ey(lc), ld)) :+ StringEntry(bu(ld), c)) :+ StringEntry(eB(lc), c)) :+ IntegerEntry(by(aI, ld), fj._2)) :+ IntegerEntry(bE(ld), ao)) :+ IntegerEntry(eA(ld, c), ao)) :+ StringEntry(hS, makeString([iv[bn], fj._4, jZ, iv[bq]], ":"))) :+ StringEntry(dz(), makeString(fj._6, "_"))) :+ StringEntry(dA(dB), makeString(fj._10, "_"))) :+ StringEntry(bP(B), makeString([dB, "L", ld], "_"))) :+ ScriptTransfer(addressFromStringValue(c), 1, bv)), ld)
2170+ else (lf - fj._8))) :+ IntegerEntry(ev(), (iT + 1))) :+ iU) :+ StringEntry(ey(lc), ld)) :+ StringEntry(bu(ld), c)) :+ StringEntry(eB(lc), c)) :+ IntegerEntry(by(aI, ld), fj._2)) :+ IntegerEntry(bE(ld), ao)) :+ IntegerEntry(eA(ld, c), ao)) :+ StringEntry(hS, makeString([iv[bn], fj._4, jZ, iv[bq]], ":"))) :+ StringEntry(dA(), makeString(fj._6, "_"))) :+ StringEntry(dB(dC), makeString(fj._10, "_"))) :+ StringEntry(bP(B), makeString([dC, "L", ld], "_"))) :+ ScriptTransfer(addressFromStringValue(c), 1, bv)), ld)
21712171 }
21722172 }
21732173
21742174
21752175 func lg (c,kM) = kJ("M", 3, "SSSS", c, kM, 0)
21762176
21772177
2178-func lh (c,kM) = kJ("L", 4, "SMM", c, kM, (cH * 4))
2179-
2180-
2181-func li (c,kM) = kJ("XL", 5, "SSSML", c, kM, (cH * 47))
2182-
2183-
2184-func lj (c,kM) = kJ("XXL", 6, "LXL", c, kM, (cH * 54))
2178+func lh (c,kM) = kJ("L", 4, "SMM", c, kM, (cI * 4))
2179+
2180+
2181+func li (c,kM) = kJ("XL", 5, "SSSML", c, kM, (cI * 47))
2182+
2183+
2184+func lj (c,kM) = kJ("XXL", 6, "LXL", c, kM, (cI * 54))
21852185
21862186
21872187 func lk (c,kM) = {
21882188 let cF = size(kM)
21892189 if ((4 == cF))
21902190 then lg(c, kM)
21912191 else if ((3 == cF))
21922192 then lh(c, kM)
21932193 else if ((5 == cF))
21942194 then li(c, kM)
21952195 else if ((2 == cF))
21962196 then lj(c, kM)
21972197 else throw("Unknown merge")
21982198 }
21992199
22002200
22012201 func ll (bR) = {
22022202 let lm = getString(bN(bR))
22032203 if (isDefined(lm))
22042204 then {
22052205 let B = value(lm)
22062206 let ln = bP(B)
22072207 let cl = split(valueOrElse(getString(ln), aN), "_")
22082208 let co = parseIntValue(cl[br])
22092209 if (if ((cl[bs] != "D"))
22102210 then true
22112211 else ((co + aR) > lastBlock.timestamp))
22122212 then nil
22132213 else {
22142214 let kB = A(B)
22152215 if ((parseIntValue(cl[bt]) > 0))
22162216 then {
2217- let kE = invoke(dk, "sendDeliveryReward", [bR], nil)
2217+ let kE = invoke(dl, "sendDeliveryReward", [bR], nil)
22182218 if ((kE == kE))
22192219 then nil
22202220 else throw("Strict value is not equal to itself.")
22212221 }
22222222 else ({
2223- let kG = valueOrElse(getInteger(dk, bU), 0)
2224- let kH = invoke(dk, "updateDeliveryLocked", [(kG - aQ)], nil)
2223+ let kG = valueOrElse(getInteger(dl, bU), 0)
2224+ let kH = invoke(dl, "updateDeliveryLocked", [(kG - aQ)], nil)
22252225 if ((kH == kH))
22262226 then if ((0 >= getIntegerValue(kB)))
22272227 then nil
22282228 else {
2229- let lo = invoke(this, "saveInteger", [U(B), (co + cJ)], nil)
2229+ let lo = invoke(this, "saveInteger", [U(B), (co + cK)], nil)
22302230 if ((lo == lo))
22312231 then nil
22322232 else throw("Strict value is not equal to itself.")
22332233 }
22342234 else throw("Strict value is not equal to itself.")
22352235 } :+ StringEntry(ln, getStringValue(L(B))))
22362236 }
22372237 }
22382238 else nil
22392239 }
22402240
22412241
2242-func lp (gR) = if (if ((gR.originCaller != dj))
2243- then valueOrElse(getBoolean(dP()), false)
2242+func lp (gR) = if (if ((gR.originCaller != dk))
2243+ then valueOrElse(getBoolean(dQ()), false)
22442244 else false)
22452245 then throw("Contracts are under maintenance")
22462246 else {
22472247 let bR = toString(gR.originCaller)
2248- (ll(bR) :+ StringEntry(dQ(bR), toBase58String(gR.transactionId)))
2248+ (ll(bR) :+ StringEntry(dR(bR), toBase58String(gR.transactionId)))
22492249 }
22502250
22512251
2252-func lq (gR) = if (if ((gR.originCaller != dj))
2253- then valueOrElse(getBoolean(dP()), false)
2252+func lq (gR) = if (if ((gR.originCaller != dk))
2253+ then valueOrElse(getBoolean(dQ()), false)
22542254 else false)
22552255 then throw("Contracts are under maintenance")
2256- else [StringEntry(dQ(toString(gR.originCaller)), toBase58String(gR.transactionId))]
2256+ else [StringEntry(dR(toString(gR.originCaller)), toBase58String(gR.transactionId))]
22572257
22582258
22592259 @Callable(gR)
22602260 func constructorV1 (lr) = if ((gR.caller != this))
22612261 then throw("Permission denied")
2262- else [StringEntry(dd(), lr)]
2263-
2264-
2265-
2266-@Callable(gR)
2267-func saveInteger (cV,eP) = if ((gR.caller != this))
2262+ else [StringEntry(de(), lr)]
2263+
2264+
2265+
2266+@Callable(gR)
2267+func saveInteger (cW,eP) = if ((gR.caller != this))
22682268 then throw("saveInteger is not public method")
2269- else [IntegerEntry(cV, eP)]
2269+ else [IntegerEntry(cW, eP)]
22702270
22712271
22722272
22732273 @Callable(gR)
22742274 func setBlocked (ls) = if ((gR.caller != this))
22752275 then throw("permission denied")
2276- else [BooleanEntry(dP(), ls)]
2276+ else [BooleanEntry(dQ(), ls)]
22772277
22782278
22792279
22802280 @Callable(gR)
22812281 func stakeLand () = {
22822282 let lt = lp(gR)
22832283 if ((size(gR.payments) != 1))
22842284 then throw("Exactly one payment required")
22852285 else {
22862286 let lu = value(gR.payments[0])
22872287 let bv = value(lu.assetId)
2288- let cU = toString(gR.caller)
2288+ let cV = toString(gR.caller)
22892289 if ((lu.amount != 1))
22902290 then throw((("NFT " + aF) + " token should be attached as payment"))
22912291 else {
22922292 let jz = value(assetInfo(bv))
22932293 if ((jz.issuer != this))
22942294 then throw("Unknown issuer of token")
22952295 else if (!(contains(jz.name, aF)))
22962296 then throw((("Only NFT " + aF) + " tokens are accepted"))
22972297 else {
22982298 let lv = drop(jz.name, 4)
22992299 let ez = if (contains(lv, "XXL"))
23002300 then dropRight(lv, 3)
23012301 else if (contains(lv, "XL"))
23022302 then dropRight(lv, 2)
23032303 else dropRight(lv, 1)
23042304 if (!(isDefined(parseInt(ez))))
23052305 then throw(("Cannot parse land number from " + jz.name))
23062306 else {
23072307 let Q = toBase58String(bv)
23082308 let jA = bx(Q)
23092309 if (isDefined(getInteger(jA)))
23102310 then throw((("NFT " + jz.name) + " is already staked"))
23112311 else {
23122312 let jD = split(jz.description, "_")
2313- let gN = gT(jD[dr])
2314- let jp = dM(jD[dq])
2315- let ig = (jp / cN)
2313+ let gN = gT(jD[ds])
2314+ let jp = dN(jD[dr])
2315+ let ig = (jp / cO)
23162316 let fi = gS(gN, ig, 1)
2317- let lw = dA(jD[ds])
2317+ let lw = dB(jD[dt])
23182318 let lb = split(valueOrElse(getString(lw), "0_0_0_0_0_0"), "_")
23192319 let lx = makeString(gL(lb, gN, ig, 1), "_")
2320- let kX = dC(cU)
2320+ let kX = dD(cV)
23212321 let kY = getString(kX)
23222322 let kU = if (isDefined(kY))
23232323 then split_51C(value(kY), "_")
23242324 else nil
23252325 if (containsElement(kU, Q))
23262326 then throw(("Your staked lands already contain " + Q))
23272327 else if ((size(kU) >= aK))
23282328 then throw((("Your already staked max (" + toString(aK)) + ") lands"))
23292329 else {
23302330 let ih = valueOrElse(getInteger(bE(Q)), 0)
2331- let le = dD(cU)
2331+ let le = dE(cV)
23322332 let ly = valueOrElse(getInteger(le), 0)
2333- let lz = invoke(dm, "onStakeUnstakeLand", [cU], nil)
2334- $Tuple2(([IntegerEntry(jA, lastBlock.timestamp), IntegerEntry(bA(aF, Q, cU), lastBlock.timestamp), StringEntry(kX, makeString_11C((kU :+ Q), "_")), IntegerEntry(le, (ly + jp)), StringEntry(bu(Q), cU), StringEntry(eB(ez), cU), IntegerEntry(eA(Q, cU), ih), StringEntry(dz(), fi), StringEntry(lw, lx)] ++ lt), lz)
2333+ let lz = invoke(dn, "onStakeUnstakeLand", [cV], nil)
2334+ $Tuple2(([IntegerEntry(jA, lastBlock.timestamp), IntegerEntry(bA(aF, Q, cV), lastBlock.timestamp), StringEntry(kX, makeString_11C((kU :+ Q), "_")), IntegerEntry(le, (ly + jp)), StringEntry(bu(Q), cV), StringEntry(eB(ez), cV), IntegerEntry(eA(Q, cV), ih), StringEntry(dA(), fi), StringEntry(lw, lx)] ++ lt), lz)
23352335 }
23362336 }
23372337 }
23382338 }
23392339 }
23402340 }
23412341 }
23422342
23432343
23442344
23452345 @Callable(gR)
23462346 func unstakeLand (jv) = {
23472347 let lt = lp(gR)
23482348 if ((size(gR.payments) != 0))
23492349 then throw("No payments required")
23502350 else {
23512351 let c = toString(gR.caller)
23522352 let gh = jt(c, eH, jv)
23532353 let Q = gh._2
23542354 let jD = gh._3
2355- let kX = dC(c)
2356- let gN = gT(jD[dr])
2357- let jp = dM(jD[dq])
2358- let ig = (jp / cN)
2355+ let kX = dD(c)
2356+ let gN = gT(jD[ds])
2357+ let jp = dN(jD[dr])
2358+ let ig = (jp / cO)
23592359 let fi = gS(gN, ig, -1)
2360- let lw = dA(jD[ds])
2360+ let lw = dB(jD[dt])
23612361 let lb = split(valueOrElse(getString(lw), "0_0_0_0_0_0"), "_")
23622362 let lx = makeString(gL(lb, gN, ig, -1), "_")
23632363 let ka = jQ(c, Q, jp, eH)
23642364 let kU = split_51C(valueOrElse(getString(kX), ""), "_")
2365- let di = indexOf(kU, Q)
2366- if (!(isDefined(di)))
2365+ let dj = indexOf(kU, Q)
2366+ if (!(isDefined(dj)))
23672367 then throw(("Your staked lands don't contain " + Q))
23682368 else {
23692369 let aA = lastBlock.timestamp
2370- let lA = valueOrElse(getInteger(dl, bQ(c)), 0)
2370+ let lA = valueOrElse(getInteger(dm, bQ(c)), 0)
23712371 if ((lA >= aA))
23722372 then throw(("Your gWL are taking part in voting, cannot unstake until " + toString(lA)))
23732373 else {
2374- let lB = (valueOrElse(getInteger(dm, b(c)), 0) + cI)
2374+ let lB = (valueOrElse(getInteger(dn, b(c)), 0) + cJ)
23752375 if ((lB > aA))
23762376 then throw(("Your staked lands took part in arbitrage, cannot unstake until " + toString(lB)))
23772377 else {
2378- let le = dD(c)
2378+ let le = dE(c)
23792379 let lf = valueOrElse(getInteger(le), 0)
23802380 let lC = if ((jp > lf))
23812381 then 0
23822382 else (lf - jp)
2383- let lz = invoke(dm, "onStakeUnstakeLand", [c], nil)
2384- $Tuple2(([ScriptTransfer(gR.caller, 1, fromBase58String(Q)), DeleteEntry(bx(Q)), DeleteEntry(bA(aF, Q, c)), StringEntry(dz(), fi), StringEntry(lw, lx), StringEntry(ka._2, makeString(ka._3, ":")), if ((size(kU) > 1))
2385- then StringEntry(kX, makeString_11C(removeByIndex(kU, value(di)), "_"))
2383+ let lz = invoke(dn, "onStakeUnstakeLand", [c], nil)
2384+ $Tuple2(([ScriptTransfer(gR.caller, 1, fromBase58String(Q)), DeleteEntry(bx(Q)), DeleteEntry(bA(aF, Q, c)), StringEntry(dA(), fi), StringEntry(lw, lx), StringEntry(ka._2, makeString(ka._3, ":")), if ((size(kU) > 1))
2385+ then StringEntry(kX, makeString_11C(removeByIndex(kU, value(dj)), "_"))
23862386 else DeleteEntry(kX), IntegerEntry(le, lC)] ++ lt), lz)
23872387 }
23882388 }
23892389 }
23902390 }
23912391 }
23922392
23932393
23942394
23952395 @Callable(gR)
23962396 func stakeDuck () = {
23972397 let lt = lp(gR)
23982398 if ((size(gR.payments) != 1))
23992399 then throw("Exactly one payment required")
24002400 else {
24012401 let lu = value(gR.payments[0])
24022402 let bv = value(lu.assetId)
2403- let cU = toString(gR.caller)
2403+ let cV = toString(gR.caller)
24042404 if ((lu.amount != 1))
24052405 then throw((("NFT " + aG) + " token should be attached as payment"))
24062406 else {
24072407 let jz = value(assetInfo(bv))
24082408 let lD = if (if (cB)
24092409 then (jz.issuer == this)
24102410 else false)
24112411 then contains(jz.name, aH)
24122412 else false
2413- if (if (if ((jz.issuer != ec))
2414- then (jz.issuer != ed)
2413+ if (if (if ((jz.issuer != ed))
2414+ then (jz.issuer != ee)
24152415 else false)
24162416 then !(lD)
24172417 else false)
24182418 then throw((((("Unknown issuer of " + aG) + " or ") + aH) + " token"))
24192419 else if (if (!(contains(jz.name, aG)))
24202420 then !(lD)
24212421 else false)
24222422 then throw((((("Only NFT " + aG) + " or ") + aH) + " tokens are accepted"))
24232423 else {
24242424 let lE = toBase58String(bv)
24252425 let jA = bx(lE)
24262426 if (isDefined(getInteger(jA)))
24272427 then throw((("NFT " + jz.name) + " is already staked"))
2428- else if (isDefined(getString(bN(cU))))
2428+ else if (isDefined(getString(bN(cV))))
24292429 then throw(("You already staked one duck: " + jz.name))
24302430 else {
24312431 let ln = bP(lE)
24322432 let cj = getString(ln)
24332433 let hS = bO(lE)
24342434 let lF = getString(hS)
24352435 let ji = A(lE)
24362436 let jj = aj(valueOrElse(getInteger(E(lE)), 0))
24372437 let kC = valueOrElse(getInteger(ji), jj)
2438- ([IntegerEntry(jA, lastBlock.timestamp), IntegerEntry(bA(aG, toBase58String(bv), cU), lastBlock.timestamp), StringEntry(bM(lE), cU), StringEntry(bN(cU), lE)] ++ (if (isDefined(cj))
2438+ ([IntegerEntry(jA, lastBlock.timestamp), IntegerEntry(bA(aG, toBase58String(bv), cV), lastBlock.timestamp), StringEntry(bM(lE), cV), StringEntry(bN(cV), lE)] ++ (if (isDefined(cj))
24392439 then nil
24402440 else ([StringEntry(ln, aN)] ++ (if (isDefined(lF))
24412441 then nil
24422442 else (([StringEntry(hS, "0:0_0_0_0_0_0:0_0_0_0_0_0:")] :+ IntegerEntry(ji, kC)) ++ lt)))))
24432443 }
24442444 }
24452445 }
24462446 }
24472447 }
24482448
24492449
24502450
24512451 @Callable(gR)
24522452 func unstakeDuck (lE) = {
24532453 let lt = lp(gR)
24542454 if ((size(gR.payments) != 0))
24552455 then throw("No payments required")
24562456 else {
24572457 let bv = fromBase58String(lE)
2458- let cU = toString(gR.caller)
2458+ let cV = toString(gR.caller)
24592459 let jz = value(assetInfo(bv))
24602460 let jA = bx(lE)
24612461 if (!(isDefined(getInteger(jA))))
24622462 then throw((("NFT " + jz.name) + " is not staked"))
2463- else if (!(isDefined(getString(bN(cU)))))
2463+ else if (!(isDefined(getString(bN(cV)))))
24642464 then throw((("The duck " + jz.name) + " is not staked"))
24652465 else {
24662466 let jC = valueOrErrorMessage(getString(bM(lE)), (("NFT " + jz.name) + " is orphaned"))
2467- if ((jC != cU))
2467+ if ((jC != cV))
24682468 then throw("Staked NFT is not yours")
24692469 else if (kx(lE))
24702470 then throw("unstakeDuck_checkTournament")
24712471 else if (ky(lE))
24722472 then throw("unstakeDuck_checkDelivery")
24732473 else {
24742474 let ji = A(lE)
24752475 let jj = aj(valueOrElse(getInteger(E(lE)), 0))
24762476 let av = valueOrElse(getInteger(ji), jj)
24772477 if ((jj > av))
24782478 then throw((("Please heal your duck to " + toString(jj)) + "hp before unstaking"))
2479- else ([ScriptTransfer(gR.caller, 1, bv), DeleteEntry(jA), DeleteEntry(ji), DeleteEntry(bP(lE)), DeleteEntry(bM(lE)), DeleteEntry(bA(aG, lE, cU)), DeleteEntry(bN(cU))] ++ lt)
2479+ else ([ScriptTransfer(gR.caller, 1, bv), DeleteEntry(jA), DeleteEntry(ji), DeleteEntry(bP(lE)), DeleteEntry(bM(lE)), DeleteEntry(bA(aG, lE, cV)), DeleteEntry(bN(cV))] ++ lt)
24802480 }
24812481 }
24822482 }
24832483 }
24842484
24852485
24862486
24872487 @Callable(gR)
24882488 func claimRes (eP,lG) = {
24892489 let lt = lp(gR)
24902490 if ((size(gR.payments) != 0))
24912491 then throw("No payments required")
24922492 else {
24932493 let c = toString(gR.originCaller)
24942494 let fq = jE(c, eP, eH, lG)
24952495 let B = valueOrErrorMessage(getString(bN(c)), "You don't have a duck staked")
2496- $Tuple2(((((fq._1 ++ km(B, fraction(X, eP, cM))._1) :+ StringEntry(fq._2, makeString(fq._3, ":"))) :+ StringEntry(fq._4, makeString(fq._5, ":"))) ++ lt), fq._3[bo])
2496+ $Tuple2(((((fq._1 ++ km(B, fraction(X, eP, cN))._1) :+ StringEntry(fq._2, makeString(fq._3, ":"))) :+ StringEntry(fq._4, makeString(fq._5, ":"))) ++ lt), fq._3[bo])
24972497 }
24982498 }
24992499
25002500
25012501
25022502 @Callable(gR)
25032503 func claimResToWH (eP,lG) = {
25042504 let lt = lp(gR)
25052505 if ((size(gR.payments) != 0))
25062506 then throw("No payments required")
25072507 else {
25082508 let c = toString(gR.originCaller)
25092509 let fq = jE(c, eP, eG, lG)
2510- $Tuple2(((((fq._1 ++ kn(c, fraction(X, eP, cM))._1) :+ StringEntry(fq._2, makeString(fq._3, ":"))) :+ StringEntry(fq._4, makeString(fq._5, ":"))) ++ lt), fq._5[bf])
2510+ $Tuple2(((((fq._1 ++ kn(c, fraction(X, eP, cN))._1) :+ StringEntry(fq._2, makeString(fq._3, ":"))) :+ StringEntry(fq._4, makeString(fq._5, ":"))) ++ lt), fq._5[bf])
25112511 }
25122512 }
25132513
25142514
25152515
25162516 @Callable(gR)
25172517 func flight (iX,iY) = {
25182518 let lt = lq(gR)
25192519 if ((size(gR.payments) != 0))
25202520 then throw("No payments required")
25212521 else {
25222522 let bR = toString(gR.caller)
25232523 let hw = iW(bR, iX, iY)
25242524 let jc = hw._1
25252525 let B = hw._2
25262526 let ln = bP(B)
25272527 let jx = valueOrElse(getString(ln), aN)
25282528 let je = hw._4
25292529 if ((je == jx))
25302530 then throw("You can't fly to the same location")
25312531 else {
25322532 let cx = split(je, "_")
25332533 let lH = (cx[bs] == "T")
25342534 let lI = (cx[bs] == "D")
25352535 let gE = G(B)
25362536 let lJ = valueOrElse(getString(gE), ",;,_,;,_,;,_,;,_,;,_,;,")
25372537 let lK = fr(lJ, hw._5)
25382538 let lL = lK._1
25392539 let lM = lK._2
2540- let lN = if (!(cs(dn, jx)))
2540+ let lN = if (!(cs(do, jx)))
25412541 then if (!(cq(je)))
25422542 then cv(jx, je, 5)
25432543 else if ((jc > 0))
25442544 then $Tuple2(je, jc)
25452545 else $Tuple2(jx, 0)
2546- else if (ci(dn, jx))
2547- then if (!(ci(dn, je)))
2546+ else if (ci(do, jx))
2547+ then if (!(ci(do, je)))
25482548 then throw("Your duck is taking part in the tournament")
25492549 else {
25502550 let kA = parseIntValue(cx[bt])
25512551 let lO = split(jx, "_")
2552- let ck = valueOrElse(getInteger(dn, bV), 0)
2552+ let ck = valueOrElse(getInteger(do, bV), 0)
25532553 if ((kA != (parseIntValue(lO[bt]) + 1)))
25542554 then cv(jx, je, 7)
25552555 else if ((jc > 0))
25562556 then {
2557- let lP = valueOrElse(getInteger(dn, bZ(ck, B)), 0)
2557+ let lP = valueOrElse(getInteger(do, bZ(ck, B)), 0)
25582558 let lQ = if ((kA > lP))
2559- then invoke(dn, "saveDuckResult", [B, kA], nil)
2559+ then invoke(do, "saveDuckResult", [B, kA], nil)
25602560 else unit
25612561 if ((lQ == lQ))
25622562 then $Tuple2(je, jc)
25632563 else throw("Strict value is not equal to itself.")
25642564 }
25652565 else $Tuple2(jx, 0)
25662566 }
25672567 else if (!(cn(jx)))
25682568 then {
2569- let lR = dE(invoke(this, "autoExitDelivery", [B, jc, if (lI)
2569+ let lR = dF(invoke(this, "autoExitDelivery", [B, jc, if (lI)
25702570 then "10"
25712571 else "11", 0], nil))
25722572 if ((lR == lR))
25732573 then if (lI)
25742574 then $Tuple2(lR, jc)
25752575 else if ((jc > 0))
25762576 then $Tuple2(je, jc)
25772577 else $Tuple2(lR, 0)
25782578 else throw("Strict value is not equal to itself.")
25792579 }
25802580 else if (!(lI))
25812581 then throw("Your duck is taking part in delivery")
25822582 else if (!(cn(je)))
25832583 then cv(jx, je, 13)
25842584 else {
25852585 let kA = parseIntValue(cx[bt])
25862586 let lO = split(jx, "_")
25872587 if ((kA != (parseIntValue(lO[bt]) + 1)))
25882588 then cv(jx, je, 14)
25892589 else if (if ((jc > 0))
25902590 then (1 > kA)
25912591 else false)
25922592 then $Tuple2(je, jc)
25932593 else {
2594- let lR = dE(invoke(this, "autoExitDelivery", [B, jc, "15-17", kA], nil))
2594+ let lR = dF(invoke(this, "autoExitDelivery", [B, jc, "15-17", kA], nil))
25952595 if ((lR == lR))
25962596 then $Tuple2(lR, jc)
25972597 else throw("Strict value is not equal to itself.")
25982598 }
25992599 }
26002600 let lS = lN._1
26012601 let lT = lN._2
26022602 $Tuple2(((([StringEntry(ln, lS), StringEntry(gE, lL), IntegerEntry(A(B), lT)] ++ lt) ++ (if (lM)
26032603 then [StringEntry(M(B), "0_0_0_0_0")]
26042604 else nil)) ++ km(B, if ((jc > 0))
26052605 then Y
26062606 else Z)._1), hw._3)
26072607 }
26082608 }
26092609 }
26102610
26112611
26122612
26132613 @Callable(gR)
26142614 func heal (lU,lV,lW) = {
26152615 let lt = lp(gR)
26162616 if (if (if ((0 > lU))
26172617 then true
26182618 else (0 > lV))
26192619 then true
26202620 else (0 > lW))
26212621 then throw("Quantity cannot be negative")
26222622 else {
26232623 let B = valueOrErrorMessage(getString(bN(toString(gR.caller))), "You don't have a duck staked")
26242624 if (kx(B))
26252625 then throw("heal_checkTournament")
26262626 else if (ky(B))
26272627 then throw("heal_checkDelivery")
26282628 else {
26292629 let lX = [lU, lV, lW]
26302630 let ji = A(B)
26312631 let jj = aj(valueOrElse(getInteger(E(B)), 0))
26322632 let lY = valueOrElse(getInteger(ji), jj)
26332633 if ((lY >= jj))
26342634 then throw((("HP should be < " + toString(jj)) + " to heal"))
26352635 else {
26362636 let hS = bO(B)
26372637 let iv = hR(hS)
26382638 let lZ = if ((iv[bq] == ""))
26392639 then nil
26402640 else split_4C(iv[bq], "_")
26412641 func ma (eY,cu) = {
2642- let dI = eY._2
2643- let hn = if ((size(lZ) > dI))
2644- then parseIntValue(lZ[dI])
2642+ let dJ = eY._2
2643+ let hn = if ((size(lZ) > dJ))
2644+ then parseIntValue(lZ[dJ])
26452645 else 0
2646- if ((3 > dI))
2646+ if ((3 > dJ))
26472647 then {
2648- let mb = lX[dI]
2648+ let mb = lX[dJ]
26492649 if ((mb > hn))
2650- then throw(((("You have only " + toString(hn)) + " of ") + aU[dI]))
2651- else $Tuple3((eY._1 :+ toString((hn - mb))), (dI + 1), (eY._3 + (parseIntValue(split(cu, "_")[ba]) * mb)))
2650+ then throw(((("You have only " + toString(hn)) + " of ") + aU[dJ]))
2651+ else $Tuple3((eY._1 :+ toString((hn - mb))), (dJ + 1), (eY._3 + (parseIntValue(split(cu, "_")[ba]) * mb)))
26522652 }
2653- else $Tuple3((eY._1 :+ toString(hn)), (dI + 1), eY._3)
2653+ else $Tuple3((eY._1 :+ toString(hn)), (dJ + 1), eY._3)
26542654 }
26552655
26562656 let fq = {
26572657 let fa = aY
26582658 let fb = size(fa)
26592659 let fc = $Tuple3(nil, 0, 0)
26602660 func fd (fe,ff) = if ((ff >= fb))
26612661 then fe
26622662 else ma(fe, fa[ff])
26632663
26642664 func fg (fe,ff) = if ((ff >= fb))
26652665 then fe
26662666 else throw("List size exceeds 50")
26672667
26682668 fg(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fc, 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)
26692669 }
26702670 let mc = min([jj, (lY + fq._3)])
26712671 $Tuple2((([IntegerEntry(ji, mc), StringEntry(hS, makeString_2C([iv[bn], iv[bo], iv[bp], makeString(fq._1, "_")], ":"))] ++ lt) ++ km(B, (ag * ((lU + lV) + lW)))._1), mc)
26722672 }
26732673 }
26742674 }
26752675 }
26762676
26772677
26782678
26792679 @Callable(gR)
26802680 func healES () = {
26812681 let lt = lp(gR)
26822682 if ((size(gR.payments) != 1))
26832683 then throw("Exactly one payment required")
26842684 else {
26852685 let lu = value(gR.payments[0])
2686- if ((lu.assetId != cE))
2686+ if ((lu.assetId != cG))
26872687 then throw("Allowed USDT payment only!")
26882688 else {
26892689 let B = valueOrErrorMessage(getString(bN(toString(gR.caller))), "You don't have a duck staked")
26902690 if (kx(B))
26912691 then throw("healES_checkTournament")
26922692 else if (ky(B))
26932693 then throw("healES_checkDelivery")
26942694 else {
26952695 let ji = A(B)
26962696 let jj = aj(valueOrElse(getInteger(E(B)), 0))
26972697 let lY = valueOrElse(getInteger(ji), jj)
26982698 if ((lY > 0))
26992699 then throw("HP should be 0 to call Emergency Service")
27002700 else {
27012701 let hS = bO(B)
27022702 let iv = hR(hS)
27032703 let lZ = if ((iv[bq] == ""))
27042704 then nil
27052705 else split_4C(iv[bq], "_")
27062706 let md = if ((size(lZ) > 0))
27072707 then parseIntValue(lZ[0])
27082708 else 0
27092709 let me = if ((size(lZ) > 1))
27102710 then parseIntValue(lZ[1])
27112711 else 0
27122712 let mf = if ((size(lZ) > 2))
27132713 then parseIntValue(lZ[2])
27142714 else 0
27152715 if (if (if ((md > 0))
27162716 then true
27172717 else (me > 0))
27182718 then true
27192719 else (mf > 0))
27202720 then throw("You have to use own Medical Kit")
27212721 else {
2722- let mg = getString(dk, bS())
2722+ let mg = getString(dl, bS())
27232723 let mh = if (isDefined(mg))
27242724 then split_4C(value(mg), "_")
27252725 else nil
27262726 let mi = if ((size(mh) > 0))
27272727 then parseIntValue(mh[0])
27282728 else 0
27292729 if ((0 >= mi))
27302730 then throw("There are no Medical Kits L1 at Emergency Service storage")
27312731 else {
27322732 let mc = (lY + parseIntValue(split(aY[0], "_")[ba]))
27332733 let mj = makeString([toString((mi - 1)), removeByIndex(mh, 0)], "_")
27342734 let cu = split(aY[0], "_")
27352735 let mk = ct(cu)
2736- let ml = fraction((mk * aP), aO, (cM * bd))
2736+ let ml = fraction((mk * aP), aO, (cN * bd))
27372737 if ((lu.amount != ml))
27382738 then throw(("Payment attached should be " + toString(ml)))
27392739 else {
2740- let fq = dE(invoke(dk, "updateEsStorage", [mj], [AttachedPayment(cE, ml)]))
2740+ let fq = dF(invoke(dl, "updateEsStorage", [mj], [AttachedPayment(cG, ml)]))
27412741 $Tuple2(((lt :+ IntegerEntry(ji, mc)) ++ km(B, aa)._1), fq)
27422742 }
27432743 }
27442744 }
27452745 }
27462746 }
27472747 }
27482748 }
27492749 }
27502750
27512751
27522752
27532753 @Callable(gR)
2754-func updateBackpack (B,mm) = if ((gR.caller != dk))
2754+func updateBackpack (B,mm) = if ((gR.caller != dl))
27552755 then throw("permission denied")
27562756 else $Tuple2([StringEntry(bO(B), mm)], mm)
27572757
27582758
27592759
27602760 @Callable(gR)
27612761 func commitForRandom () = {
27622762 let lt = lp(gR)
2763- let mn = (height + dx)
2763+ let mn = (height + dy)
27642764 let c = toString(gR.caller)
2765- $Tuple2(([IntegerEntry(dy(c), mn)] ++ lt), mn)
2765+ $Tuple2(([IntegerEntry(dz(c), mn)] ++ lt), mn)
27662766 }
27672767
27682768
27692769
27702770 @Callable(gR)
27712771 func buySLand () = {
27722772 let lt = lp(gR)
27732773 if ((size(gR.payments) != 1))
27742774 then throw("Exactly one payment required")
27752775 else {
27762776 let lu = value(gR.payments[0])
2777- if ((lu.assetId != cE))
2777+ if ((lu.assetId != cG))
27782778 then throw("Allowed USDT payment only!")
27792779 else if ((lu.amount != el))
27802780 then throw(("Payment attached should be " + toString(el)))
27812781 else {
27822782 let fq = iP(gR.caller, gR.transactionId)
2783- let mo = dH(invoke(do, "burnAcres", [en], nil))
2784- $Tuple2((((fq._1 :+ ScriptTransfer(dk, lu.amount, cE)) ++ kn(toString(gR.caller), ac)._1) ++ lt), $Tuple2(fq._2._1, mo))
2783+ let mo = dI(invoke(dp, "burnAcres", [en], nil))
2784+ $Tuple2((((fq._1 :+ ScriptTransfer(dl, lu.amount, cG)) ++ kn(toString(gR.caller), ac)._1) ++ lt), $Tuple2(fq._2._1, mo))
27852785 }
27862786 }
27872787 }
27882788
27892789
27902790
27912791 @Callable(gR)
27922792 func expedition (iX,iY) = {
27932793 let lt = lp(gR)
27942794 if ((size(gR.payments) != 0))
27952795 then throw("No payments required")
27962796 else {
27972797 let bR = toString(gR.caller)
27982798 let hw = iW(bR, iX, iY)
27992799 let B = hw._2
28002800 let ji = A(B)
28012801 let hS = bO(B)
28022802 let iv = hR(hS)
28032803 let jX = split(iv[bp], "_")
28042804 let jZ = makeString(fk(true, jX, ek), "_")
28052805 let gE = G(B)
28062806 let lJ = valueOrElse(getString(gE), ",;,_,;,_,;,_,;,_,;,_,;,")
28072807 let mp = fr(lJ, hw._5)
28082808 let lL = mp._1
28092809 let lM = mp._2
28102810 let mq = iP(gR.caller, gR.transactionId)
28112811 let iV = mq._2._1
28122812 let fq = if ((0 >= hw._1))
28132813 then $Tuple3([IntegerEntry(ji, 0), StringEntry(gE, lL)], "", 0)
28142814 else $Tuple3((mq._1 ++ (if (lM)
28152815 then [StringEntry(M(B), "0_0_0_0_0")]
28162816 else ((((nil :+ StringEntry(bP(B), makeString([mq._2._2, "L", iV], "_"))) :+ IntegerEntry(ji, hw._1)) :+ StringEntry(gE, lL)) :+ StringEntry(hS, makeString([iv[bn], iv[bo], jZ, iv[bq]], ":"))))), iV, hw._3)
28172817 if (kx(B))
28182818 then throw("expedition_checkTournament")
28192819 else if (ky(B))
28202820 then throw("expedition_checkDelivery")
28212821 else {
2822- let mo = dH(invoke(do, "burnAcres", [en], nil))
2822+ let mo = dI(invoke(dp, "burnAcres", [en], nil))
28232823 $Tuple2(((fq._1 ++ km(B, ac)._1) ++ lt), $Tuple3(fq._2, fq._3, mo))
28242824 }
28252825 }
28262826 }
28272827
28282828
28292829
28302830 @Callable(gR)
28312831 func buySLandForAcres () = {
28322832 let lt = lp(gR)
28332833 if ((size(gR.payments) != 1))
28342834 then throw("exactly 1 payment must be attached")
28352835 else {
28362836 let lu = gR.payments[0]
28372837 let fx = lu.amount
28382838 if (if (!(isDefined(lu.assetId)))
28392839 then true
2840- else (value(lu.assetId) != dw))
2840+ else (value(lu.assetId) != dx))
28412841 then throw("ACRES payments only!")
28422842 else if ((fx != en))
28432843 then throw(("Payment attached should be " + toString(en)))
28442844 else {
28452845 let fq = iP(gR.caller, gR.transactionId)
2846- let mo = dH(invoke(do, "burnAcres", [en], [AttachedPayment(dw, fx)]))
2846+ let mo = dI(invoke(dp, "burnAcres", [en], [AttachedPayment(dx, fx)]))
28472847 $Tuple2(((fq._1 ++ kn(toString(gR.caller), ac)._1) ++ lt), $Tuple2(fq._2._1, mo))
28482848 }
28492849 }
28502850 }
28512851
28522852
28532853
28542854 @Callable(gR)
28552855 func upgradeInfra (Q) = {
28562856 let lt = lp(gR)
28572857 if ((size(gR.payments) != 0))
28582858 then throw("No payments required")
28592859 else {
28602860 let fq = jR(true, gR.caller, 0, Q)
28612861 let B = valueOrErrorMessage(getString(bN(toString(gR.caller))), "You don't have a duck staked")
2862- $Tuple2(((fq._1 ++ lt) ++ km(B, fraction(ad, fq._3, cM))._1), fq._2)
2862+ $Tuple2(((fq._1 ++ lt) ++ km(B, fraction(ad, fq._3, cN))._1), fq._2)
28632863 }
28642864 }
28652865
28662866
28672867
28682868 @Callable(gR)
28692869 func activateArtifact (mr,ms) = {
28702870 let lt = lp(gR)
28712871 if ((size(gR.payments) != 0))
28722872 then throw("No payments required")
28732873 else {
28742874 let c = toString(gR.caller)
28752875 let fq = {
28762876 let cF = mr
28772877 if (("PRESALE" == cF))
28782878 then kv(c, ms)
28792879 else if (("ONBOARD" == cF))
28802880 then ko(c)
28812881 else throw("Unknown artifact")
28822882 }
28832883 (fq ++ lt)
28842884 }
28852885 }
28862886
28872887
28882888
28892889 @Callable(gR)
28902890 func mergeLands (kM) = {
28912891 let lt = lp(gR)
28922892 if ((size(gR.payments) != 0))
28932893 then throw("No payments required")
28942894 else {
28952895 let fq = lk(toString(gR.caller), kM)
28962896 $Tuple2(((fq._1 ++ lt) ++ kn(toString(gR.caller), ae)._1), fq._2)
28972897 }
28982898 }
28992899
29002900
29012901
29022902 @Callable(gR)
29032903 func cargoExchange (mt,Q) = {
29042904 let lt = lp(gR)
29052905 if ((size(gR.payments) != 0))
29062906 then throw("No payments required")
29072907 else {
29082908 let iu = split_4C(mt, ":")
29092909 let c = toString(gR.originCaller)
29102910 let jz = value(assetInfo(fromBase58String(Q)))
29112911 let jA = bx(Q)
29122912 if (!(isDefined(getInteger(jA))))
29132913 then throw((jz.name + " is not staked"))
29142914 else {
29152915 let jC = valueOrErrorMessage(getString(bu(Q)), (("NFT " + jz.name) + " is orphaned"))
29162916 if ((jC != c))
29172917 then throw((aF + " is not yours"))
29182918 else {
2919- let ig = (dM(split(jz.description, "_")[dq]) / cN)
2919+ let ig = (dN(split(jz.description, "_")[dr]) / cO)
29202920 let ih = valueOrElse(getInteger(bE(Q)), 0)
29212921 let B = valueOrErrorMessage(getString(bN(c)), "You don't have a duck staked")
29222922 let jx = valueOrElse(getString(bP(B)), aN)
29232923 let cl = split(value(jx), "_")
29242924 if ((cl[bs] != "L"))
29252925 then throw((("Duck location type is " + cl[bs]) + ", but should be L"))
29262926 else if ((cl[bt] != Q))
29272927 then throw(("Duck should be on the land " + Q))
29282928 else {
29292929 let if = bD(Q)
29302930 let hW = ie(if, ig, ih)
29312931 let hS = bO(B)
29322932 let iv = hR(hS)
29332933 let fq = it(iu, hW, iv)
29342934 let in = split(hW[bi], "_")
29352935 let jO = (parseIntValue(in[bk]) + fq._7)
29362936 let jP = (parseIntValue(in[bl]) - fq._7)
29372937 ([StringEntry(hS, makeString_2C([iv[bn], fq._4, fq._5, fq._6], ":")), StringEntry(if, makeString_2C([hW[be], fq._1, fq._2, fq._3, makeString([in[bj], toString(jO), toString(jP), in[bm]], "_")], ":"))] ++ lt)
29382938 }
29392939 }
29402940 }
29412941 }
29422942 }
29432943
29442944
29452945
29462946 @Callable(gR)
2947-func saveWarehouse (ij,Q) = if ((gR.caller != dk))
2947+func saveWarehouse (ij,Q) = if ((gR.caller != dl))
29482948 then throw("Access denied")
29492949 else {
29502950 let if = bD(Q)
29512951 let ik = split_4C(ij, ":")
29522952 if ((size(ik) != 5))
29532953 then throw("warehouse string should contain 4 ':' separators")
29542954 else {
29552955 let mu = split(ik[bi], "_")[bj]
29562956 let jO = hV(ik)
29572957 let mv = hT(ik[be])
29582958 let jP = ((mv - parseIntValue(mu)) - jO)
29592959 if ((0 > jP))
29602960 then throw("Operation leads to negative free warehouse space")
29612961 else {
29622962 let mw = makeString_2C([ik[be], ik[bf], ik[bg], ik[bh], makeString([mu, toString(jO), toString(jP), toString(mv)], "_")], ":")
29632963 $Tuple2([StringEntry(if, mw)], mw)
29642964 }
29652965 }
29662966 }
29672967
29682968
29692969
29702970 @Callable(gR)
29712971 func setCustomName (bv,kW,bz) = {
29722972 let lt = lp(gR)
29732973 if ((size(gR.payments) != 1))
29742974 then throw("Exactly one payment required")
29752975 else {
29762976 let lu = value(gR.payments[0])
2977- if ((lu.assetId != cE))
2977+ if ((lu.assetId != cG))
29782978 then throw("Allowed USDT payment only!")
29792979 else if ((lu.amount != eh))
29802980 then throw(("Payment should be " + toString(eh)))
29812981 else if (contains(kW, "__"))
29822982 then throw(("Name should not contain '__': " + kW))
29832983 else if ((size(kW) > ei))
29842984 then throw(("Name too long, maxLength=" + toString(ei)))
29852985 else {
29862986 let c = toString(gR.originCaller)
29872987 let mx = {
29882988 let cF = bz
29892989 if (("ACCOUNT" == cF))
29902990 then {
29912991 let my = eD(kW)
29922992 let mz = getString(my)
29932993 if (isDefined(mz))
29942994 then throw(("Name already registered: " + kW))
29952995 else {
29962996 let mA = bH(c)
29972997 let mB = getString(mA)
29982998 let mC = if (isDefined(mB))
29992999 then [DeleteEntry(eD(value(mB)))]
30003000 else nil
30013001 (((mC :+ StringEntry(mA, kW)) :+ StringEntry(my, c)) ++ kn(c, ab)._1)
30023002 }
30033003 }
30043004 else if (("LAND" == cF))
30053005 then {
30063006 let jz = value(assetInfo(fromBase58String(bv)))
30073007 let jA = bx(bv)
30083008 if (!(isDefined(getInteger(jA))))
30093009 then throw((jz.name + " is not staked"))
30103010 else {
30113011 let jC = valueOrErrorMessage(getString(bu(bv)), (("NFT " + jz.name) + " is orphaned"))
30123012 if ((jC != c))
30133013 then throw((aF + " is not yours"))
30143014 else {
30153015 let my = ew(kW)
30163016 let mz = getString(my)
30173017 if (isDefined(mz))
30183018 then throw(("Name already registered: " + kW))
30193019 else {
30203020 let mD = bw(bv)
30213021 let mB = getString(mD)
30223022 let mC = if (isDefined(mB))
30233023 then [DeleteEntry(ew(value(mB)))]
30243024 else nil
30253025 (((mC :+ StringEntry(mD, kW)) :+ StringEntry(my, bv)) ++ kn(c, ab)._1)
30263026 }
30273027 }
30283028 }
30293029 }
30303030 else if (("DUCK" == cF))
30313031 then {
30323032 let jz = value(assetInfo(fromBase58String(bv)))
30333033 let jA = bx(bv)
30343034 if (if (!(isDefined(getInteger(jA))))
30353035 then true
30363036 else !(isDefined(getString(bN(c)))))
30373037 then throw((jz.name + " is not staked"))
30383038 else {
30393039 let jC = valueOrErrorMessage(getString(bM(bv)), (("NFT " + jz.name) + " is orphaned"))
30403040 if ((jC != c))
30413041 then throw((aG + " is not yours"))
30423042 else {
30433043 let my = eC(kW)
30443044 let mz = getString(my)
30453045 if (isDefined(mz))
30463046 then throw(("Name already registered: " + kW))
30473047 else {
30483048 let mD = bG(bv)
30493049 let mB = getString(mD)
30503050 let mC = if (isDefined(mB))
30513051 then [DeleteEntry(eC(value(mB)))]
30523052 else nil
30533053 (((mC :+ StringEntry(mD, kW)) :+ StringEntry(my, bv)) ++ km(bv, ab)._1)
30543054 }
30553055 }
30563056 }
30573057 }
30583058 else throw("Unknown entity type")
30593059 }
3060- $Tuple2(((mx :+ ScriptTransfer(dk, lu.amount, cE)) ++ lt), 0)
3060+ $Tuple2(((mx :+ ScriptTransfer(dl, lu.amount, cG)) ++ lt), 0)
30613061 }
30623062 }
30633063 }
30643064
30653065
30663066
30673067 @Callable(gR)
3068-func setReferrals (mE,mF) = if ((gR.callerPublicKey != ee))
3068+func setReferrals (mE,mF) = if ((gR.callerPublicKey != cE))
30693069 then throw("Permission denied")
30703070 else {
30713071 let lt = lp(gR)
30723072 if ((size(gR.payments) != 0))
30733073 then throw("No payments required")
30743074 else if (!(isDefined(addressFromString(mE))))
30753075 then throw(("Invalid address: " + mE))
3076- else if (!(isDefined(addressFromString(mF))))
3077- then throw(("Invalid address: " + mF))
3078- else {
3079- let mG = eE()
3080- let mH = getString(mG)
3081- let mI = if (isDefined(mH))
3082- then split_4C(value(mH), "_")
3083- else nil
3084- if (containsElement(mI, mF))
3085- then throw((mF + " is not newbie (already has referrals)"))
3086- else {
3087- let kp = bI(mF)
3088- let kq = getString(kp)
3089- if (if (isDefined(kq))
3090- then isDefined(addressFromString(value(kq)))
3091- else false)
3092- then throw(((mF + " already has refBy: ") + value(kq)))
3076+ else {
3077+ let mG = addressFromString(mF)
3078+ if (!(isDefined(mG)))
3079+ then throw(("Invalid address: " + mF))
3080+ else {
3081+ let mH = getString(dR(mE))
3082+ if (!(isDefined(mH)))
3083+ then throw("oldPlayer didn't do any tx in game")
3084+ else if ((0 >= wavesBalance(value(mG)).available))
3085+ then throw("newPlayer has no WAVES")
30933086 else {
3094- let mJ = bL(mE)
3095- let mK = getString(mJ)
3096- let mL = if (isDefined(mK))
3097- then split_4C(value(mK), "_")
3087+ let mI = eE()
3088+ let mJ = getString(mI)
3089+ let mK = if (isDefined(mJ))
3090+ then split_4C(value(mJ), "_")
30983091 else nil
3099- if (containsElement(mL, mF))
3100- then throw((((mE + " already contains ") + mF) + " within referrals"))
3092+ if (containsElement(mK, mF))
3093+ then throw((mF + " is not newbie (already has referrals)"))
31013094 else {
3102- let mM = makeString_2C((mL :+ mF), "_")
3103- let mN = if (containsElement(mI, mE))
3104- then value(mH)
3105- else makeString_2C((mI :+ mE), "_")
3106- $Tuple2(([StringEntry(kp, mE), StringEntry(mJ, mM), StringEntry(mG, mN)] ++ lt), 0)
3095+ let kp = bI(mF)
3096+ let kq = getString(kp)
3097+ if (if (isDefined(kq))
3098+ then isDefined(addressFromString(value(kq)))
3099+ else false)
3100+ then throw(((mF + " already has refBy: ") + value(kq)))
3101+ else {
3102+ let mL = bL(mE)
3103+ let mM = getString(mL)
3104+ let mN = if (isDefined(mM))
3105+ then split_4C(value(mM), "_")
3106+ else nil
3107+ if (containsElement(mN, mF))
3108+ then throw((((mE + " already contains ") + mF) + " within referrals"))
3109+ else {
3110+ let mO = makeString_2C((mN :+ mF), "_")
3111+ let mP = if (containsElement(mK, mE))
3112+ then value(mJ)
3113+ else makeString_2C((mK :+ mE), "_")
3114+ $Tuple2(([StringEntry(kp, mE), StringEntry(mL, mO), StringEntry(mI, mP)] ++ lt), 0)
3115+ }
3116+ }
31073117 }
31083118 }
3109- }
3110- }
3119+ }
3120+ }
31113121 }
31123122
31133123
31143124
31153125 @Callable(gR)
3116-func distributePoints (mO,mP,mQ,mR,mS) = {
3126+func distributePoints (mQ,mR,mS,mT,mU) = {
31173127 let lt = lp(gR)
31183128 if ((size(gR.payments) != 0))
31193129 then throw("No payments required")
31203130 else {
31213131 let c = toString(gR.originCaller)
3122- let mT = dJ(invoke(dm, "checkWlgXpREADONLY", [c], nil))
3123- let mU = dH(mT[1])
3124- let mV = if ((0 >= mU))
3132+ let mV = dK(invoke(dn, "checkWlgXpREADONLY", [c], nil))
3133+ let mW = dI(mV[1])
3134+ let mX = if ((0 >= mW))
31253135 then $Tuple2(0, nil)
31263136 else {
3127- let kk = dH(invoke(dm, "takeWlgXp", [c], nil))
3137+ let kk = dI(invoke(dn, "takeWlgXp", [c], nil))
31283138 if ((kk == kk))
3129- then $Tuple2(mU, [IntegerEntry(I(c), dH(mT[0])), IntegerEntry(H(c), dH(mT[2]))])
3139+ then $Tuple2(mW, [IntegerEntry(I(c), dI(mV[0])), IntegerEntry(H(c), dI(mV[2]))])
31303140 else throw("Strict value is not equal to itself.")
31313141 }
3132- let mW = mV._1
3133- let mX = mV._2
3142+ let mY = mX._1
3143+ let mZ = mX._2
31343144 let B = valueOrErrorMessage(getString(bN(c)), "You don't have a duck staked")
3135- let mY = J(c)
3136- let mZ = (valueOrElse(getInteger(mY), 0) + mW)
3137- let na = F(B)
3138- let nb = valueOrElse(getInteger(na), 0)
3139- let nc = (mZ + nb)
3140- let nd = ((((mO + mP) + mQ) + mR) + mS)
3141- if ((nd > nc))
3142- then throw((("There are only " + toString(nc)) + " free points to distribute"))
3145+ let na = J(c)
3146+ let nb = (valueOrElse(getInteger(na), 0) + mY)
3147+ let nc = F(B)
3148+ let nd = valueOrElse(getInteger(nc), 0)
3149+ let ne = (nb + nd)
3150+ let nf = ((((mQ + mR) + mS) + mT) + mU)
3151+ if ((nf > ne))
3152+ then throw((("There are only " + toString(ne)) + " free points to distribute"))
31433153 else {
3144- let ne = C(B)
3145- let at = split(valueOrElse(getString(ne), "0_0_0_0_0"), "_")
3146- let nf = (mZ - nd)
3147- $Tuple2((([IntegerEntry(mY, if ((0 > nf))
3154+ let ng = C(B)
3155+ let at = split(valueOrElse(getString(ng), "0_0_0_0_0"), "_")
3156+ let nh = (nb - nf)
3157+ $Tuple2((([IntegerEntry(na, if ((0 > nh))
31483158 then 0
3149- else nf), IntegerEntry(na, if ((0 > nf))
3150- then (nb + nf)
3151- else nb), StringEntry(ne, makeString([toString((parseIntValue(at[l]) + mO)), toString((parseIntValue(at[m]) + mP)), toString((parseIntValue(at[n]) + mQ)), toString((parseIntValue(at[o]) + mR)), toString((parseIntValue(at[p]) + mS))], "_"))] ++ lt) ++ mX), 0)
3159+ else nh), IntegerEntry(nc, if ((0 > nh))
3160+ then (nd + nh)
3161+ else nd), StringEntry(ng, makeString([toString((parseIntValue(at[l]) + mQ)), toString((parseIntValue(at[m]) + mR)), toString((parseIntValue(at[n]) + mS)), toString((parseIntValue(at[o]) + mT)), toString((parseIntValue(at[p]) + mU))], "_"))] ++ lt) ++ mZ), 0)
31523162 }
31533163 }
31543164 }
31553165
31563166
31573167
31583168 @Callable(gR)
31593169 func splitByGlobalWeightsREADONLY (eP) = $Tuple2(nil, fh(eP))
31603170
31613171
31623172
31633173 @Callable(gR)
3164-func splitByGlobalAndLocalWeightsREADONLY (ng,nh,gU) = {
3174+func splitByGlobalAndLocalWeightsREADONLY (ni,nj,gU) = {
31653175 let gN = gT(gU)
3166- $Tuple2(nil, $Tuple2(fh(ng), eS(nh, gN)))
3176+ $Tuple2(nil, $Tuple2(fh(ni), eS(nj, gN)))
31673177 }
31683178
31693179
31703180
31713181 @Callable(gR)
31723182 func getBackpackREADONLY (B) = $Tuple2(nil, makeString(hR(bO(B)), ":"))
31733183
31743184
31753185
31763186 @Callable(gR)
31773187 func getWarehouseREADONLY (Q) = {
31783188 let jz = value(assetInfo(fromBase58String(Q)))
3179- let ig = (dM(split(jz.description, "_")[dq]) / cN)
3189+ let ig = (dN(split(jz.description, "_")[dr]) / cO)
31803190 let ih = valueOrElse(getInteger(bE(Q)), 0)
31813191 $Tuple2(nil, makeString_2C(ie(bD(Q), ig, ih), ":"))
31823192 }
31833193
31843194
31853195
31863196 @Callable(gR)
3187-func saveLastTx () = if (!(containsElement([dm, dk, dn, do], gR.caller)))
3197+func saveLastTx () = if (!(containsElement([dn, dl, do, dp], gR.caller)))
31883198 then throw("Access denied")
31893199 else $Tuple2(lp(gR), 42)
31903200
31913201
31923202
31933203 @Callable(gR)
3194-func updateDuckStats (B,kk) = if ((gR.caller != dk))
3204+func updateDuckStats (B,kk) = if ((gR.caller != dl))
31953205 then throw("Access denied")
31963206 else km(B, kk)
31973207
31983208
31993209
32003210 @Callable(gR)
3201-func updateAccStats (c,kk) = if (!(containsElement([dm, dk, do], gR.caller)))
3211+func updateAccStats (c,kk) = if (!(containsElement([dn, dl, dp], gR.caller)))
32023212 then throw("Access denied")
32033213 else kn(c, kk)
32043214
32053215
32063216
32073217 @Callable(gR)
3208-func equipDuck (ni) = {
3218+func equipDuck (nk) = {
32093219 let lt = lp(gR)
32103220 if ((size(gR.payments) != 0))
32113221 then throw("No payments required")
32123222 else {
32133223 let c = toString(gR.originCaller)
32143224 let B = valueOrErrorMessage(getString(bN(c)), "You don't have a duck staked")
32153225 if (kx(B))
32163226 then throw("equipDuck_checkTournament")
32173227 else if (ky(B))
32183228 then throw("equipDuck_checkDelivery")
32193229 else {
32203230 let gE = G(B)
3221- let nj = split(valueOrElse(getString(gE), ",;,_,;,_,;,_,;,_,;,_,;,"), "_")
3231+ let nl = split(valueOrElse(getString(gE), ",;,_,;,_,;,_,;,_,;,_,;,"), "_")
32223232 let hS = bO(B)
32233233 let iv = hR(hS)
3224- let lL = split(ni, "_")
3234+ let lL = split(nk, "_")
32253235 if ((size(lL) != r))
32263236 then throw("Wrong equipment string")
32273237 else {
3228- let gG = gt(nj, fE(iv[bq]), true, nil)
3238+ let gG = gt(nl, fE(iv[bq]), true, nil)
32293239 let gH = split(lL[q], ";")[1]
32303240 let ar = if ((gH == ""))
32313241 then 0
32323242 else {
32333243 let gI = split(gH, ",")[0]
32343244 if ((gI == ""))
32353245 then 0
32363246 else {
32373247 let fT = split(gI, ":")
3238- let di = fT[0]
3248+ let dj = fT[0]
32393249 let gJ = fT[1]
3240- if (if (if (if (if ((di == "06"))
3250+ if (if (if (if (if ((dj == "06"))
32413251 then true
3242- else (di == "07"))
3252+ else (dj == "07"))
32433253 then true
3244- else (di == "08"))
3254+ else (dj == "08"))
32453255 then (gJ != "")
32463256 else false)
32473257 then (parseIntValue(gJ) > 0)
32483258 else false)
3249- then parseIntValue(split(aY[parseIntValue(di)], "_")[ba])
3259+ then parseIntValue(split(aY[parseIntValue(dj)], "_")[ba])
32503260 else 0
32513261 }
32523262 }
32533263 let go = ap(this, B, ar, true)
32543264 let gK = gt(lL, gG, false, go)
3255- let nk = fJ(gK)
3256- $Tuple2(([StringEntry(gE, ni), StringEntry(hS, makeString_2C([iv[bn], iv[bo], iv[bp], nk], ":")), StringEntry(M(B), makeString([toString(go[7]), toString(go[8]), toString(go[9]), toString(go[10]), toString(go[11])], "_"))] ++ lt), 0)
3265+ let nm = fJ(gK)
3266+ $Tuple2(([StringEntry(gE, nk), StringEntry(hS, makeString_2C([iv[bn], iv[bo], iv[bp], nm], ":")), StringEntry(M(B), makeString([toString(go[7]), toString(go[8]), toString(go[9]), toString(go[10]), toString(go[11])], "_"))] ++ lt), 0)
32573267 }
32583268 }
32593269 }
32603270 }
32613271
32623272
32633273
32643274 @Callable(gR)
3265-func fortificateLand (Q,nl) = {
3275+func fortificateLand (Q,nn) = {
32663276 let lt = lp(gR)
32673277 if ((size(gR.payments) != 0))
32683278 then throw("No payments required")
32693279 else {
32703280 let c = toString(gR.originCaller)
32713281 let B = valueOrElse(getString(bN(c)), "")
32723282 let fO = ap(this, B, 0, false)
3273- let nm = bF(Q)
3274- let nn = split(valueOrElse(getString(nm), ":0_15:0_18:0"), "_")
3283+ let no = bF(Q)
3284+ let np = split(valueOrElse(getString(no), ":0_15:0_18:0"), "_")
32753285 let jz = value(assetInfo(fromBase58String(Q)))
3276- let ig = (dM(split(jz.description, "_")[dq]) / cN)
3286+ let ig = (dN(split(jz.description, "_")[dr]) / cO)
32773287 let ih = valueOrElse(getInteger(bE(Q)), 0)
32783288 let if = bD(Q)
32793289 let ik = ie(if, ig, ih)
3280- let no = split(ik[bi], "_")
3281- let np = parseIntValue(no[bk])
3282- let nq = parseIntValue(no[bl])
3283- let nr = split(nl, "_")
3284- let ns = gA(nn, fE(ik[bh]), np, nq, true, nil)
3285- let gG = ns._1
3286- let nt = ns._2
3287- let nu = ns._3
3288- let nv = gA(nr, gG, nt, nu, false, fO)
3289- let gK = nv._1
3290- let nw = nv._2
3291- let nx = nv._3
3292- let nk = fJ(gK)
3293- let kf = makeString([no[bj], toString(nw), toString(nx), no[bm]], "_")
3294- $Tuple2(([StringEntry(nm, nl), StringEntry(if, makeString_2C([ik[be], ik[bf], ik[bg], nk, kf], ":"))] ++ lt), 0)
3295- }
3296- }
3297-
3298-
3299-
3300-@Callable(gR)
3301-func initDuckTourAttempt (B) = if ((gR.caller != dn))
3290+ let nq = split(ik[bi], "_")
3291+ let nr = parseIntValue(nq[bk])
3292+ let ns = parseIntValue(nq[bl])
3293+ let nt = split(nn, "_")
3294+ let nu = gA(np, fE(ik[bh]), nr, ns, true, nil)
3295+ let gG = nu._1
3296+ let nv = nu._2
3297+ let nw = nu._3
3298+ let nx = gA(nt, gG, nv, nw, false, fO)
3299+ let gK = nx._1
3300+ let ny = nx._2
3301+ let nz = nx._3
3302+ let nm = fJ(gK)
3303+ let kf = makeString([nq[bj], toString(ny), toString(nz), nq[bm]], "_")
3304+ $Tuple2(([StringEntry(no, nn), StringEntry(if, makeString_2C([ik[be], ik[bf], ik[bg], nm, kf], ":"))] ++ lt), 0)
3305+ }
3306+ }
3307+
3308+
3309+
3310+@Callable(gR)
3311+func initDuckTourAttempt (B) = if ((gR.caller != do))
33023312 then throw("Access denied")
33033313 else {
33043314 let ji = A(B)
33053315 let jj = aj(valueOrElse(getInteger(E(B)), 0))
33063316 let kC = valueOrElse(getInteger(ji), jj)
3307- let ny = bP(B)
3308- let jx = valueOrElse(getString(ny), aN)
3309- let ck = valueOrElse(getInteger(dn, bV), 0)
3310- let nz = (toString(ck) + "_T_0")
3311- $Tuple2([IntegerEntry(K(B), kC), IntegerEntry(ji, jj), StringEntry(L(B), jx), StringEntry(ny, nz)], nz)
3317+ let nA = bP(B)
3318+ let jx = valueOrElse(getString(nA), aN)
3319+ let ck = valueOrElse(getInteger(do, bV), 0)
3320+ let nB = (toString(ck) + "_T_0")
3321+ $Tuple2([IntegerEntry(K(B), kC), IntegerEntry(ji, jj), StringEntry(L(B), jx), StringEntry(nA, nB)], nB)
33123322 }
33133323
33143324
33153325
33163326 @Callable(gR)
33173327 func breakAttempt () = {
33183328 let lt = lp(gR)
33193329 let B = valueOrErrorMessage(getString(bN(toString(gR.caller))), "You don't have a duck staked")
3320- let ny = bP(B)
3321- let jx = valueOrElse(getString(ny), aN)
3330+ let nA = bP(B)
3331+ let jx = valueOrElse(getString(nA), aN)
33223332 if ((split(jx, "_")[bs] != "T"))
33233333 then throw("Your duck is not in the tournament")
33243334 else {
3325- let nA = getIntegerValue(K(B))
3335+ let nC = getIntegerValue(K(B))
33263336 let kI = getStringValue(L(B))
3327- $Tuple2(((lt :+ IntegerEntry(A(B), nA)) :+ StringEntry(ny, kI)), jx)
3328- }
3329- }
3330-
3331-
3332-
3333-@Callable(gR)
3334-func breakAttemptCallback () = if ((gR.caller != dn))
3337+ $Tuple2(((lt :+ IntegerEntry(A(B), nC)) :+ StringEntry(nA, kI)), jx)
3338+ }
3339+ }
3340+
3341+
3342+
3343+@Callable(gR)
3344+func breakAttemptCallback () = if ((gR.caller != do))
33353345 then throw("Access denied")
33363346 else {
33373347 let B = valueOrErrorMessage(getString(bN(toString(gR.originCaller))), "You don't have a duck staked")
33383348 $Tuple2([IntegerEntry(A(B), getIntegerValue(K(B))), StringEntry(bP(B), getStringValue(L(B)))], "breakAttemptCallback")
33393349 }
33403350
33413351
33423352
33433353 @Callable(gR)
33443354 func exitTournamentInternal (B) = if ((gR.caller != this))
33453355 then throw("Access denied")
33463356 else {
3347- let nA = getIntegerValue(K(B))
3357+ let nC = getIntegerValue(K(B))
33483358 let kI = getStringValue(L(B))
3349- $Tuple2([IntegerEntry(A(B), nA), StringEntry(bP(B), kI)], false)
3359+ $Tuple2([IntegerEntry(A(B), nC), StringEntry(bP(B), kI)], false)
33503360 }
33513361
33523362
33533363
33543364 @Callable(gR)
33553365 func exitDeliveryInternal (B) = if ((gR.caller != this))
33563366 then throw("Access denied")
33573367 else {
33583368 let mq = kz(B, false, 0, 0)
33593369 $Tuple2((mq._1 ++ mq._2), false)
33603370 }
33613371
33623372
33633373
33643374 @Callable(gR)
3365-func autoExitDelivery (B,jc,nB,kA) = if ((gR.caller != this))
3375+func autoExitDelivery (B,jc,nD,kA) = if ((gR.caller != this))
33663376 then throw("Access denied")
33673377 else {
33683378 let mq = kz(B, true, jc, kA)
33693379 $Tuple2(mq._1, mq._3)
33703380 }
33713381
33723382
33733383
33743384 @Callable(gR)
33753385 func breakDelivery () = $Tuple2(lp(gR), "breakDelivery")
33763386
33773387
33783388
33793389 @Callable(gR)
33803390 func prepareRobbery (iX,iY) = {
33813391 let lt = lp(gR)
3382- if (!(sigVerify_8Kb(iX, iY, ee)))
3392+ if (!(sigVerify_8Kb(iX, iY, cE)))
33833393 then throw("signature does not match")
33843394 else if ((size(gR.payments) != 1))
33853395 then throw("exactly 1 payment must be attached")
33863396 else {
33873397 let lu = gR.payments[0]
3388- let nC = lu.amount
3398+ let nE = lu.amount
33893399 if (if (!(isDefined(lu.assetId)))
33903400 then true
3391- else (value(lu.assetId) != du))
3401+ else (value(lu.assetId) != dv))
33923402 then throw("WLGOLD payments only!")
33933403 else {
33943404 let fw = split(toUtf8String(iX), "|")
33953405 if ((2 > size(fw)))
33963406 then throw("Wrong message format")
33973407 else {
33983408 let jg = if ((size(fw) >= 2))
33993409 then fw[2]
34003410 else ""
34013411 let bR = toString(gR.caller)
3402- let jh = valueOrElse(getString(dQ(bR)), "")
3412+ let jh = valueOrElse(getString(dR(bR)), "")
34033413 if ((jh != jg))
34043414 then throw(((("Tx ids don't match! In state: " + jh) + ", in msg: ") + jg))
34053415 else {
34063416 let B = fw[0]
34073417 if (kx(B))
34083418 then throw("prepareRobbery_checkTournament")
34093419 else if (ky(B))
34103420 then throw("prepareRobbery_checkDelivery")
34113421 else {
34123422 let aB = ax(this, B)._1
3413- if ((aB > nC))
3414- then throw(((("Payment " + toString(nC)) + " < required ") + toString(aB)))
3423+ if ((aB > nE))
3424+ then throw(((("Payment " + toString(nE)) + " < required ") + toString(aB)))
34153425 else {
3416- let nD = split(fw[1], "_")
3426+ let nF = split(fw[1], "_")
34173427 let aA = lastBlock.timestamp
34183428 let aC = valueOrElse(getInteger(S(B)), 0)
34193429 let aD = valueOrElse(getString(T(B)), "")
34203430 let aE = valueOrElse(getInteger(R(aD)), 0)
34213431 if (if ((aC != y))
34223432 then (aE > aA)
34233433 else false)
34243434 then throw(("You already started robbing, wait till " + toString(aE)))
34253435 else {
3426- func nE (eY,Q) = {
3427- let nF = valueOrElse(getInteger(P(Q)), 0)
3428- let nG = valueOrElse(getInteger(R(Q)), 0)
3429- if ((nF > size(v)))
3436+ func nG (eY,Q) = {
3437+ let nH = valueOrElse(getInteger(P(Q)), 0)
3438+ let nI = valueOrElse(getInteger(R(Q)), 0)
3439+ if ((nH > size(v)))
34303440 then throw("Invalid state")
3431- else if ((aA > nG))
3441+ else if ((aA > nI))
34323442 then {
3433- let nH = valueOrElse(getInteger(bx(Q)), 0)
3434- if ((0 >= nH))
3443+ let nJ = valueOrElse(getInteger(bx(Q)), 0)
3444+ if ((0 >= nJ))
34353445 then eY
34363446 else {
34373447 let gy = value(assetInfo(fromBase58String(Q)))
34383448 let jD = split(gy.description, "_")
3439- let jp = dM(jD[dq])
3440- let nI = jo(Q, jp)
3441- let gX = (aA - nH)
3442- let jG = fraction(gX, (nI * jp), a)
3449+ let jp = dN(jD[dr])
3450+ let nK = jo(Q, jp)
3451+ let gX = (aA - nJ)
3452+ let jG = fraction(gX, (nK * jp), a)
34433453 if ((w > jG))
34443454 then eY
34453455 else (eY :+ Q)
34463456 }
34473457 }
34483458 else eY
34493459 }
34503460
3451- let nJ = {
3452- let fa = nD
3461+ let nL = {
3462+ let fa = nF
34533463 let fb = size(fa)
34543464 let fc = nil
34553465 func fd (fe,ff) = if ((ff >= fb))
34563466 then fe
3457- else nE(fe, fa[ff])
3467+ else nG(fe, fa[ff])
34583468
34593469 func fg (fe,ff) = if ((ff >= fb))
34603470 then fe
34613471 else throw("List size exceeds 10")
34623472
34633473 fg(fd(fd(fd(fd(fd(fd(fd(fd(fd(fd(fc, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
34643474 }
3465- if ((size(nJ) == 0))
3475+ if ((size(nL) == 0))
34663476 then throw("No candidates for robbery")
34673477 else {
3468- let nK = dX(size(nJ), iX, iY)
3469- let Q = nJ[nK]
3478+ let nM = dY(size(nL), iX, iY)
3479+ let Q = nL[nM]
34703480 $Tuple2(([IntegerEntry(P(Q), x), IntegerEntry(R(Q), (aA + v[x])), IntegerEntry(S(B), z), StringEntry(T(B), Q)] ++ lt), Q)
34713481 }
34723482 }
34733483 }
34743484 }
34753485 }
34763486 }
34773487 }
34783488 }
34793489 }
34803490
34813491
34823492
34833493 @Callable(gR)
34843494 func robLand (iX,iY) = {
34853495 let lt = lp(gR)
3486- if (!(sigVerify_8Kb(iX, iY, ee)))
3496+ if (!(sigVerify_8Kb(iX, iY, cE)))
34873497 then throw("signature does not match")
34883498 else {
34893499 let bR = toString(gR.caller)
34903500 let B = valueOrErrorMessage(getString(bN(bR)), "You don't have a duck staked")
34913501 let aA = lastBlock.timestamp
34923502 $Tuple2((lt :+ IntegerEntry(N(B), aA)), 0)
34933503 }
34943504 }
34953505
34963506
34973507
34983508 @Callable(gR)
34993509 func acceptDelivery () = {
35003510 let lt = lp(gR)
35013511 let bR = toString(gR.caller)
35023512 let B = valueOrErrorMessage(getString(bN(bR)), "You don't have a duck staked")
3503- let nL = valueOrElse(getInteger(dk, bT), 0)
3504- let kG = valueOrElse(getInteger(dk, bU), 0)
3505- if ((aQ > (nL - kG)))
3506- then throw(((("Delivery is not available, fund=" + dR(nL, 6)) + ", locked=") + dR(kG, 6)))
3513+ let nN = valueOrElse(getInteger(dl, bT), 0)
3514+ let kG = valueOrElse(getInteger(dl, bU), 0)
3515+ if ((aQ > (nN - kG)))
3516+ then throw(((("Delivery is not available, fund=" + dS(nN, 6)) + ", locked=") + dS(kG, 6)))
35073517 else {
35083518 let aA = lastBlock.timestamp
3509- let nM = valueOrElse(getInteger(U(B)), 0)
3510- if ((nM > aA))
3511- then throw(("Delivery is forbidden for your duck until " + toString(nM)))
3519+ let nO = valueOrElse(getInteger(U(B)), 0)
3520+ if ((nO > aA))
3521+ then throw(("Delivery is forbidden for your duck until " + toString(nO)))
35123522 else {
35133523 let av = getIntegerValue(A(B))
35143524 if ((0 >= av))
35153525 then throw("You cannot accept delivery with zero health")
35163526 else {
35173527 let kF = V(bR)
35183528 let fY = valueOrElse(getInteger(kF), 0)
3519- let nN = valueOrElse(getInteger(W(bR)), 0)
3520- let nO = (aA / a)
3521- let nP = valueOrElse(getInteger(do, d(bR)), 0)
3522- let nQ = (aS + (nP / aT))
3523- if (if ((fY >= nQ))
3524- then (nN == nO)
3529+ let nP = valueOrElse(getInteger(W(bR)), 0)
3530+ let nQ = (aA / a)
3531+ let nR = valueOrElse(getInteger(dp, d(bR)), 0)
3532+ let nS = (aS + (nR / aT))
3533+ if (if ((fY >= nS))
3534+ then (nP == nQ)
35253535 else false)
3526- then throw((("You already used " + toString(nQ)) + " delivery attempts for today"))
3536+ then throw((("You already used " + toString(nS)) + " delivery attempts for today"))
35273537 else if (kx(B))
35283538 then throw("acceptDelivery_checkTournament")
35293539 else if (ky(B))
35303540 then throw("acceptDelivery_checkDelivery")
35313541 else {
3532- let nR = dH(invoke(dk, "updateDeliveryLocked", [(kG + aQ)], nil))
3533- let ny = bP(B)
3534- let jx = valueOrElse(getString(ny), aN)
3535- let nS = (toString(aA) + "_D_0")
3536- $Tuple2(([StringEntry(L(B), jx), StringEntry(ny, nS), IntegerEntry(kF, if ((nN != nO))
3542+ let nT = dI(invoke(dl, "updateDeliveryLocked", [(kG + aQ)], nil))
3543+ let nA = bP(B)
3544+ let jx = valueOrElse(getString(nA), aN)
3545+ let nU = (toString(aA) + "_D_0")
3546+ $Tuple2(([StringEntry(L(B), jx), StringEntry(nA, nU), IntegerEntry(kF, if ((nP != nQ))
35373547 then 0
3538- else fY)] ++ lt), $Tuple2(nS, nR))
3548+ else fY)] ++ lt), $Tuple2(nU, nT))
35393549 }
35403550 }
35413551 }
35423552 }
35433553 }
35443554
35453555
35463556
35473557 @Callable(gR)
3548-func checkDeliveryCallback (B) = if ((gR.caller != dn))
3558+func checkDeliveryCallback (B) = if ((gR.caller != do))
35493559 then throw("Access denied")
35503560 else $Tuple2(nil, ky(B))
35513561
35523562
35533563
35543564 @Callable(gR)
35553565 func buyRoboDuck () = if (!(cB))
35563566 then throw("Feature is turned off")
35573567 else {
35583568 let lt = lp(gR)
35593569 if ((size(gR.payments) != 1))
35603570 then throw("Exactly one payment required")
35613571 else {
35623572 let lu = value(gR.payments[0])
3563- if ((lu.assetId != cE))
3573+ if ((lu.assetId != cG))
35643574 then throw("Allowed USDT payment only!")
35653575 else if ((lu.amount != em))
3566- then throw((("Payment attached should be " + dR(em, 6)) + " USDT"))
3576+ then throw((("Payment attached should be " + dS(em, 6)) + " USDT"))
35673577 else {
3568- let nT = valueOrElse(getInteger(eF()), 0)
3569- let nU = toBytes(nT)
3570- let ex = ((aH + "-") + takeRight(toBase16String(nU), 8))
3571- let nV = takeRight(toBase16String(sha256_16Kb(nU)), 6)
3572- let iU = Issue(ex, ("Robo Duck NFT for WavesLands game, background color = #" + nV), 1, 0, false)
3578+ let nV = valueOrElse(getInteger(eF()), 0)
3579+ let nW = toBytes(nV)
3580+ let ex = ((aH + "-") + takeRight(toBase16String(nW), 8))
3581+ let nX = takeRight(toBase16String(sha256_16Kb(nW)), 6)
3582+ let iU = Issue(ex, ("Robo Duck NFT for WavesLands game, background color = #" + nX), 1, 0, false)
35733583 let bv = calculateAssetId(iU)
3574- $Tuple2(((((lt :+ IntegerEntry(eF(), (nT + 1))) :+ iU) :+ ScriptTransfer(gR.originCaller, 1, bv)) :+ ScriptTransfer(dk, lu.amount, cE)), $Tuple2(toBase58String(bv), nV))
3584+ $Tuple2(((((lt :+ IntegerEntry(eF(), (nV + 1))) :+ iU) :+ ScriptTransfer(gR.originCaller, 1, bv)) :+ ScriptTransfer(dl, lu.amount, cG)), $Tuple2(toBase58String(bv), nX))
35753585 }
35763586 }
35773587 }
35783588
35793589

github/deemru/w8io/169f3d6 
626.07 ms