tx · GA2UU9F6mipcYYJXiK8DyuuXwDmb63ccEcor7gfsiL85

3NBPx1Fciu3JQNEGZ21jSnTdutLNGGBUSXh:  -0.02900000 Waves

2024.11.29 20:41 [3393031] smart account 3NBPx1Fciu3JQNEGZ21jSnTdutLNGGBUSXh > SELF 0.00000000 Waves

{ "type": 13, "id": "GA2UU9F6mipcYYJXiK8DyuuXwDmb63ccEcor7gfsiL85", "fee": 2900000, "feeAssetId": null, "timestamp": 1732902195603, "version": 2, "chainId": 84, "sender": "3NBPx1Fciu3JQNEGZ21jSnTdutLNGGBUSXh", "senderPublicKey": "3QtfC1XbLZXdeawMDeSERy9vvjUmj1XYd2GFmrvx7pWQ", "proofs": [ "5jQ9VvqVT58SqJSrqfGwvwjEnsvuMtTyraS2oF54z2bLjSo32tvGmJurLzbbf2ASvC6Vus81rcFjXevo87p5wMmq" ], "script": "base64:BgJHCAISABIECgIICBIDCgEEEgMKAQESABIAEgMKAQESABIECgIIARIAEgMKAQgSAwoBCBIECgIIARIDCgEIEgASAwoBCBIAEgB2AANTRVACAl9fAAVNVUxUNgDAhD0ABU1VTFQ3AICt4gQABU1VTFQ4AIDC1y8ACkRBWV9NSUxMSVMAgLiZKQAVVVNEVDJBQ1JFU19NVUxUSVBMSUVSAAoAE09ORV9QRVJDRU5UX0RJVklTT1IAZAAFY2hhaW4JAMkBAgkAygECCAUEdGhpcwVieXRlcwABAAEAC1dFRUtfQkxPQ0tTBAckbWF0Y2gwBQVjaGFpbgMJAAACAQFXBQckbWF0Y2gwAOBOAwkAAAIBAVQFByRtYXRjaDAAtAEJAAIBAg1Vbmtub3duIGNoYWluAAt1c2R0QXNzZXRJZAQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMAEghNp6sggDP07Ru8qO7ouTvMmC3Qtd+geWqNQj+agP/7kDCQAAAgEBVAUHJG1hdGNoMAEgVbHYn3KHgu/l41uNrAWrZd6aQ6EvFrsF8xq3h6XxxRgJAAIBAg1Vbmtub3duIGNoYWluABZkZWZhdWx0UmVzdDJBZGRyZXNzU3RyBAckbWF0Y2gwBQVjaGFpbgMJAAACAQFXBQckbWF0Y2gwAiMzUEZ3WXRhOGJpRXozMXpwZUZlNURKSzh3RTV0clNwUVZGOAMJAAACAQFUBQckbWF0Y2gwAiMzTjdVdVlhcjYyNjRQNThGQmhWV0tQUUFoNFl1YTJoZ25ndgkAAgECDVVua25vd24gY2hhaW4ADmFyYml0cmFnZURlbGF5BAckbWF0Y2gwBQVjaGFpbgMJAAACAQFXBQckbWF0Y2gwBQpEQVlfTUlMTElTAwkAAAIBAVQFByRtYXRjaDAA4NQDCQACAQINVW5rbm93biBjaGFpbgAVb2xkU3Rha2luZ0NvbnRyYWN0U3RyBAckbWF0Y2gwBQVjaGFpbgMJAAACAQFXBQckbWF0Y2gwAiMzUExuY1h0UzFVODNENmNRYkZEM0g4ckJIUExnenhTRktaMQMJAAACAQFUBQckbWF0Y2gwAiMzTkRDeUJHNXE4NUp1YVJpaWdVZUV0YWlueWpDUVQzWHBabQkAAgECDVVua25vd24gY2hhaW4BD2dldFN0cmluZ09yRmFpbAIHYWRkcmVzcwNrZXkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQdhZGRyZXNzBQNrZXkJALkJAgkAzAgCAgptYW5kYXRvcnkgCQDMCAIJAKUIAQUHYWRkcmVzcwkAzAgCAgEuCQDMCAIFA2tleQkAzAgCAg8gaXMgbm90IGRlZmluZWQFA25pbAIAABBJZHhDZmdBY3JlczJEYXBwAAEADUlkeENmZ1dsZ0RhcHAAAgAUSWR4Q2ZnSW52ZXN0RnVuZERhcHAABQEKa2V5UmVzdENmZwACDiVzX19yZXN0Q29uZmlnAQ9rZXlSZXN0MkFkZHJlc3MAAg0lc19fcmVzdDJBZGRyARFyZWFkUmVzdENmZ09yRmFpbAEEcmVzdAkAvAkCCQEPZ2V0U3RyaW5nT3JGYWlsAgUEcmVzdAkBCmtleVJlc3RDZmcABQNTRVABGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIIcmVzdDJDZmcDaWR4CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQhyZXN0MkNmZwUDaWR4CQCsAgICKlJlc3QgY2ZnIGRvZXNuJ3QgY29udGFpbiBhZGRyZXNzIGF0IGluZGV4IAkApAMBBQNpZHgADXJlc3QyQ29udHJhY3QJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwkBD2tleVJlc3QyQWRkcmVzcwAFFmRlZmF1bHRSZXN0MkFkZHJlc3NTdHIACHJlc3QyQ2ZnCQERcmVhZFJlc3RDZmdPckZhaWwBBQ1yZXN0MkNvbnRyYWN0AA5hY3JlczJDb250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFCHJlc3QyQ2ZnBRBJZHhDZmdBY3JlczJEYXBwAAt3bGdDb250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFCHJlc3QyQ2ZnBQ1JZHhDZmdXbGdEYXBwABJpbnZlc3RGdW5kQ29udHJhY3QJARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCBQhyZXN0MkNmZwUUSWR4Q2ZnSW52ZXN0RnVuZERhcHAAE29sZEFjcmVzQ29udHJhY3RLZXkCEG9sZEFjcmVzQ29udHJhY3QBCmtleUJsb2NrZWQAAhBjb250cmFjdHNCbG9ja2VkARVrZXlMYXN0V2Vla1R4SWRCeVVzZXIBBGFkZHIJAKwCAgITbGFzdFdlZWtUeElkQnlVc2VyXwUEYWRkcgEUa2V5Q3VyV2Vla1R4SWRCeVVzZXIBBGFkZHIJAKwCAgISY3VyV2Vla1R4SWRCeVVzZXJfBQRhZGRyAA13bGdBc3NldElkS2V5Agt3bGdfYXNzZXRJZAAKd2xnQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCcCAIFC3dsZ0NvbnRyYWN0BQ13bGdBc3NldElkS2V5AhhXTEdPTEQgaXMgbm90IGlzc3VlZCB5ZXQAFGFjcmVzSXNzdWVkQW1vdW50S2V5AhFhY3Jlc0lzc3VlZEFtb3VudAAPYWNyZXNBc3NldElkS2V5AgxhY3Jlc0Fzc2V0SWQADGFjcmVzQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCcCAIFDmFjcmVzMkNvbnRyYWN0BQ9hY3Jlc0Fzc2V0SWRLZXkCF0FDUkVTIGlzIG5vdCBpc3N1ZWQgeWV0ARhrZXlBY3Jlc1N0YWtlZFRpbWVCeVVzZXIBBGFkZHIJAKwCAgIWYWNyZXNTdGFrZWRUaW1lQnlVc2VyXwUEYWRkcgEVa2V5U3Rha2VkTGFuZHNCeU93bmVyAQlvd25lckFkZHIJAKwCAgITc3Rha2VkTGFuZHNCeU93bmVyXwUJb3duZXJBZGRyARRrZXlTdGFrZWREdWNrQnlPd25lcgEJb3duZXJBZGRyCQCsAgICEnN0YWtlZER1Y2tCeU93bmVyXwUJb3duZXJBZGRyAR5rZXlTdGFrZWRUaW1lQnlBc3NldElkQW5kT3duZXICB2Fzc2V0SWQEYWRkcgkArAICCQCsAgIJAKwCAgIDc3RfBQdhc3NldElkAgFfBQRhZGRyARRrZXlTdGFrZWRORlRzQnlPd25lcgEJb3duZXJBZGRyCQCsAgICEnN0YWtlZE5GVHNCeU93bmVyXwUJb3duZXJBZGRyAQVhc0ludAEBdgQHJG1hdGNoMAUBdgMJAAECBQckbWF0Y2gwAgNJbnQEAW4FByRtYXRjaDAFAW4JAAIBAhVmYWlsIHRvIGNhc3QgaW50byBJbnQBDGFzVHVwbGU1SW50cwEDdmFsBAckbWF0Y2gwBQN2YWwDCQABAgUHJG1hdGNoMAIZKEludCwgSW50LCBJbnQsIEludCwgSW50KQQBdAUHJG1hdGNoMAUBdAkAAgECK2ZhaWwgdG8gY2FzdCBpbnRvIChJbnQsIEludCwgSW50LCBJbnQsIEludCkBDGFzVHVwbGU0SW50cwEDdmFsBAckbWF0Y2gwBQN2YWwDCQABAgUHJG1hdGNoMAIUKEludCwgSW50LCBJbnQsIEludCkEAXQFByRtYXRjaDAFAXQJAAIBAiZmYWlsIHRvIGNhc3QgaW50byAoSW50LCBJbnQsIEludCwgSW50KQEMYXNUdXBsZTNJbnRzAQN2YWwEByRtYXRjaDAFA3ZhbAMJAAECBQckbWF0Y2gwAg8oSW50LCBJbnQsIEludCkEAXQFByRtYXRjaDAFAXQJAAIBAiFmYWlsIHRvIGNhc3QgaW50byAoSW50LCBJbnQsIEludCkBDGFzVHVwbGUySW50cwEDdmFsBAckbWF0Y2gwBQN2YWwDCQABAgUHJG1hdGNoMAIKKEludCwgSW50KQQBdAUHJG1hdGNoMAUBdAkAAgECHGZhaWwgdG8gY2FzdCBpbnRvIChJbnQsIEludCkBCmZpeGVkUG9pbnQCA3ZhbAhkZWNpbWFscwQGdGVuUG93CQBsBgAKAAAFCGRlY2ltYWxzAAAAAAUERE9XTgQHbG93UGFydAkApAMBCQBqAgUDdmFsBQZ0ZW5Qb3cEBnplcm9lcwkAsAICCQCkAwEFBnRlblBvdwkAZAIAAQkAsQIBBQdsb3dQYXJ0CQCsAgIJAKwCAgkArAICCQCkAwEJAGkCBQN2YWwFBnRlblBvdwIBLgUGemVyb2VzBQdsb3dQYXJ0AANNNl8AwIQ9AANNOF8AgMLXLwAPd2xnSXNzdWVkQW10S2V5AhB3bGdfaXNzdWVkQW1vdW50AA56Yklzc3VlZEFtdEtleQISemJpbGxfaXNzdWVkQW1vdW50ARdrZXlBY3Jlc1N0YWtlZEFtdEJ5VXNlcgEEYWRkcgkArAICAhhhY3Jlc1N0YWtlZEFtb3VudEJ5VXNlcl8FBGFkZHIBFWtleUZhcm1pbmdQb3dlckJ5VXNlcgEEYWRkcgkArAICAhNmYXJtaW5nUG93ZXJCeVVzZXJfBQRhZGRyABJhY3Jlc1N0YWtkVG90YWxLZXkCFmFjcmVzU3Rha2VkQW1vdW50VG90YWwAFHRvdGFsRmFybWluZ1Bvd2VyS2V5AhF0b3RhbEZhcm1pbmdQb3dlcgALTUFYX1dMX05GVFMAAwAMTUFYX0FSS19ORlRTAAEADUFSS19ORlRfQk9OVVMAiCcAF01BWF9ORlRTX1NUQUtFRF9CWV9VU0VSAAQAEWtleU5mdFRvdGFsSXNzdWVkAg5uZnRUb3RhbElzc3VlZAARa2V5TmZ0VG90YWxCdXJuZWQCDm5mdFRvdGFsQnVybmVkABNrZXlXbE5mdFRvdGFsU3Rha2VkAhBXbE5mdFRvdGFsU3Rha2VkABRrZXlBcmtOZnRUb3RhbFN0YWtlZAIRQXJrTmZ0VG90YWxTdGFrZWQBFWtleU5mdE51bWJlckJ5QXNzZXRJZAEHYXNzZXRJZAkArAICAhNuZnROdW1iZXJCeUFzc2V0SWRfBQdhc3NldElkARJrZXlVc2VyV2xOZnROdW1iZXIBBGFkZHIJAKwCAgIQdXNlcldsTmZ0TnVtYmVyXwUEYWRkcgETa2V5VXNlckFya05mdE51bWJlcgEEYWRkcgkArAICAhF1c2VyQXJrTmZ0TnVtYmVyXwUEYWRkcgEQa2V5VXNlckZ1bGxCb251cwEEYWRkcgkArAICAg51c2VyRnVsbEJvbnVzXwUEYWRkcgAKbGV2ZWxBY3JlcwkAzAgCAAAJAMwIAgAKCQDMCAIAFAkAzAgCACgJAMwIAgBQCQDMCAIAlgEJAMwIAgD6AQkAzAgCAJADCQDMCAIAvAUJAMwIAgDoBwUDbmlsAQ9nZXRMZXZlbEJ5QWNyZXMBBWFjcmVzBANhY3IJAGkCCQBkAgUFYWNyZXMA/8HXLwUDTThfCgEHY2hlY2tlcgIDYWNjBGl0ZW0DCQBnAgUEaXRlbQUDYWNyBQNhY2MJAGQCBQNhY2MAAQoAAiRsBQpsZXZlbEFjcmVzCgACJHMJAJADAQUCJGwKAAUkYWNjMAAACgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQdjaGVja2VyAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKARZnZXRGYXJtaW5nUG93ZXJCeUFjcmVzAQVhY3JlcwkAaAIJAGgCBQVhY3JlcwAUCQBkAgkBD2dldExldmVsQnlBY3JlcwEFBWFjcmVzAAQBHmdldEZhcm1pbmdQb3dlckJ5QWNyZXNBbmRCb251cwIFYWNyZXMGYm9udXM2BApub3RCb251c2VkCQEWZ2V0RmFybWluZ1Bvd2VyQnlBY3JlcwEFBWFjcmVzCQCUCgIJAGsDBQpub3RCb251c2VkCQBkAgUDTTZfBQZib251czYFA002XwUKbm90Qm9udXNlZAALdGVhbUFkZHJLZXkCCHRlYW1BZGRyARlrZXlMYXN0V2xnVHJhZGVUaW1lQnlVc2VyAQRhZGRyCQCsAgICEGxhc3RBcmJUaW1lVXNlcl8FBGFkZHIAFGtleUxhc3RBY3Jlc1NlbGxUaW1lAhFsYXN0QWNyZXNTZWxsVGltZQAQa2V5TGFzdExpbWl0TGVmdAINbGFzdExpbWl0TGVmdAAFbmFtZXMJAMwIAgILR29sZCBzaG92ZWwJAMwIAgIHUGlja2F4ZQUDbmlsAAxkZXNjcmlwdGlvbnMJAMwIAgIWUmV3YXJkIGZvciBlYXJseSBiaXJkcwkAzAgCAhNJbmNyZWFzZXMgRmFybVBvd2VyBQNuaWwADmlkeERlc2NyU2hvdmVsAAAAD2lkeERlc2NyUGlja2F4ZQABABByYXJpdHlUaHJlc2hvbGRzCQDMCAIABQkAzAgCAAoJAMwIAgAUBQNuaWwADWlkeFRocmVzaG9sZEMAAAANaWR4VGhyZXNob2xkVQABAA1pZHhUaHJlc2hvbGRMAAIABW5hbWV6CQDMCAICBlNIT1ZFTAkAzAgCAgdQSUNLQVhFBQNuaWwADWlkeE5hbWVTaG92ZWwAAAAOaWR4TmFtZVBpY2theGUAAQALY29udGVudEtleXoJAMwIAgIPY29udGVudFBpY2theGVDCQDMCAICD2NvbnRlbnRQaWNrYXhlVQkAzAgCAg9jb250ZW50UGlja2F4ZUwJAMwIAgIPY29udGVudFBpY2theGVFCQDMCAICDmNvbnRlbnRTaG92ZWxQBQNuaWwAB2lkeEtleUMAAAAHaWR4S2V5UAAEAAtyYXJpdHlOYW1lcwkAzAgCAgZDb21tb24JAMwIAgIIVW5jb21tb24JAMwIAgIJTGVnZW5kYXJ5CQDMCAICBEVwaWMJAMwIAgIFUHJvbW8FA25pbAAKaWR4UmFyaXR5QwAAAAppZHhSYXJpdHlVAAEACmlkeFJhcml0eUwAAgAKaWR4UmFyaXR5RQADAAppZHhSYXJpdHlQAAQAC2NvbGxlY3Rpb256CQDMCAICDURpZ2dpbmcgdG9vbHMFA25pbAAKaWR4Q29sbERpZwAAAApib251c1R5cGV6CQDMCAICCUZhcm1Qb3dlcgUDbmlsAA5pZHhCb251c1R5cGVGcAAAAQZwcm9sb2cBAWkDAwkBAiE9AggFAWkMb3JpZ2luQ2FsbGVyBQ1yZXN0MkNvbnRyYWN0CQELdmFsdWVPckVsc2UCCQCgCAEJAQprZXlCbG9ja2VkAAcHCQACAQIfQ29udHJhY3RzIGFyZSB1bmRlciBtYWludGVuYW5jZQQEYWRkcgkApQgBCAUBaQxvcmlnaW5DYWxsZXIEBHdlZWsJAGkCBQZoZWlnaHQFC1dFRUtfQkxPQ0tTBAtsYXN0V2Vla0tleQkBFWtleUxhc3RXZWVrVHhJZEJ5VXNlcgEFBGFkZHIEEmxhc3RXZWVrVHhJZEJ5VXNlcgkAoggBBQtsYXN0V2Vla0tleQQEdHhJZAkA2AQBCAUBaQ10cmFuc2FjdGlvbklkBAN3dHgJAKwCAgkArAICCQCkAwEFBHdlZWsCAV8FBHR4SWQECmN1cldlZWtLZXkJARRrZXlDdXJXZWVrVHhJZEJ5VXNlcgEFBGFkZHIDCQEJaXNEZWZpbmVkAQUSbGFzdFdlZWtUeElkQnlVc2VyBApsYXN0V2Vla1R4CQC1CQIJAQV2YWx1ZQEFEmxhc3RXZWVrVHhJZEJ5VXNlcgIBXwMJAAACCQCRAwIFCmxhc3RXZWVrVHgAAAkApAMBBQR3ZWVrCQDMCAIJAQtTdHJpbmdFbnRyeQIFC2xhc3RXZWVrS2V5BQN3dHgJAMwIAgkBC1N0cmluZ0VudHJ5AgUKY3VyV2Vla0tleQUDd3R4BQNuaWwDCQAAAgkAkQMCBQpsYXN0V2Vla1R4AAAJAKQDAQkAZQIFBHdlZWsAAQkAzAgCCQELU3RyaW5nRW50cnkCBQpjdXJXZWVrS2V5BQN3dHgFA25pbAQRY3VyV2Vla1R4SWRCeVVzZXIJARFAZXh0ck5hdGl2ZSgxMDU4KQEFCmN1cldlZWtLZXkECWN1cldlZWtUeAkAtQkCBRFjdXJXZWVrVHhJZEJ5VXNlcgIBXwMJAAACCQCRAwIFCWN1cldlZWtUeAAACQCkAwEFBHdlZWsJAMwIAgkBC1N0cmluZ0VudHJ5AgUKY3VyV2Vla0tleQUDd3R4BQNuaWwJAMwIAgkBC1N0cmluZ0VudHJ5AgULbGFzdFdlZWtLZXkFEWN1cldlZWtUeElkQnlVc2VyCQDMCAIJAQtTdHJpbmdFbnRyeQIFCmN1cldlZWtLZXkFA3d0eAUDbmlsCQDMCAIJAQtTdHJpbmdFbnRyeQIFC2xhc3RXZWVrS2V5BQN3dHgJAMwIAgkBC1N0cmluZ0VudHJ5AgUKY3VyV2Vla0tleQUDd3R4BQNuaWwBFGNyZWF0ZU5mdERlc2NyQ3VzdG9tCAdjb250S2V5CW5mdFNlcmlhbApjb2xsZWN0aW9uBG5hbWUFZGVzY3IGcmFyaXR5BWJvbnVzCWJvbnVzVHlwZQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIieyJ1cmwiOiAiaHR0cHM6Ly93YXZlc2xhbmRzLmNvbSIsIAIPImNvbnRlbnRLZXkiOiAiBQdjb250S2V5AgMiLCACCiJudW1iZXIiOiAJAKQDAQUJbmZ0U2VyaWFsAgIsIAIPImNvbGxlY3Rpb24iOiAiBQpjb2xsZWN0aW9uAgMiLCACCSJuYW1lIjogIgUEbmFtZQIDIiwgAhAiZGVzY3JpcHRpb24iOiAiBQVkZXNjcgIDIiwgAgkicmFyZSI6ICIFBnJhcml0eQIDIiwgAgkiYm9udXMiOiAJAKQDAQUFYm9udXMCAiwgAg4iYm9udXNUeXBlIjogIgUJYm9udXNUeXBlAgIifQEOaXNzdWVOZnRDdXN0b20IB25hbWVJZHgKY29udEtleUlkeAdjb2xsSWR4CXJhcml0eUlkeAlib251c1BlcmMIZGVzY3JJZHgMYm9udXNUeXBlSWR4BGFkZHIECW5mdFNlcmlhbAkBC3ZhbHVlT3JFbHNlAgkAnwgBBRFrZXlOZnRUb3RhbElzc3VlZAAABAZyYXJpdHkJAJEDAgULcmFyaXR5TmFtZXMFCXJhcml0eUlkeAQEbmFtZQkArAICCQCsAgIJAKwCAgkAkQMCBQVuYW1legUHbmFtZUlkeAIBLQkArwICBQZyYXJpdHkAAQkApAMBBQlib251c1BlcmMEBWlzc3VlCQDCCAUFBG5hbWUJARRjcmVhdGVOZnREZXNjckN1c3RvbQgJAJEDAgULY29udGVudEtleXoFCmNvbnRLZXlJZHgFCW5mdFNlcmlhbAkAkQMCBQtjb2xsZWN0aW9uegUHY29sbElkeAkAkQMCBQVuYW1lcwUHbmFtZUlkeAkAkQMCBQxkZXNjcmlwdGlvbnMFCGRlc2NySWR4CQCRAwIFC3Jhcml0eU5hbWVzBQlyYXJpdHlJZHgFCWJvbnVzUGVyYwkAkQMCBQpib251c1R5cGV6BQxib251c1R5cGVJZHgAAQAABwQKbmZ0QXNzZXRJZAkAuAgBBQVpc3N1ZQkAlAoCCQDMCAIFBWlzc3VlCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRFrZXlOZnRUb3RhbElzc3VlZAkAZAIFCW5mdFNlcmlhbAABCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEVa2V5TmZ0TnVtYmVyQnlBc3NldElkAQkA2AQBBQpuZnRBc3NldElkBQluZnRTZXJpYWwJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUEYWRkcgABBQpuZnRBc3NldElkBQNuaWwFCm5mdEFzc2V0SWQBGXN0YWtlVW5zdGFrZUFjcmVzSW50ZXJuYWwDA2FtdAdhZGRyZXNzCmJvbnVzRGVsdGEDAwkAAAIFA2FtdAAACQAAAgUKYm9udXNEZWx0YQAABwkAAgECDU5vdGhpbmcgdG8gZG8ECXdsZ1Jlc3VsdAkA/AcEBQt3bGdDb250cmFjdAISb25TdGFrZVVuc3Rha2VMYW5kCQDMCAIFB2FkZHJlc3MFA25pbAUDbmlsAwkAAAIFCXdsZ1Jlc3VsdAUJd2xnUmVzdWx0BANub3cIBQlsYXN0QmxvY2sJdGltZXN0YW1wBAd0aW1lS2V5CQEYa2V5QWNyZXNTdGFrZWRUaW1lQnlVc2VyAQUHYWRkcmVzcwQJYW1vdW50S2V5CQEXa2V5QWNyZXNTdGFrZWRBbXRCeVVzZXIBBQdhZGRyZXNzBA5vbGRBY3Jlc0Ftb3VudAkBC3ZhbHVlT3JFbHNlAgkAnwgBBQlhbW91bnRLZXkAAAMDCQBmAgAABQNhbXQJAGYCAAAJAGQCBQ5vbGRBY3Jlc0Ftb3VudAUDYW10BwkAAgEJAKwCAgkArAICCQCsAgICDllvdSBoYXZlIG9ubHkgCQEKZml4ZWRQb2ludAIFDm9sZEFjcmVzQW1vdW50AAgCICBBQ1JFUyBzdGFrZWQsIHRyaWVkIHRvIHVuc3Rha2UgCQEKZml4ZWRQb2ludAIJAQEtAQUDYW10AAgEDm5ld0FjcmVzQW1vdW50CQBkAgUOb2xkQWNyZXNBbW91bnQFA2FtdAQIb2xkVG90YWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUSYWNyZXNTdGFrZFRvdGFsS2V5AAAECXVzZXJGcEtleQkBFWtleUZhcm1pbmdQb3dlckJ5VXNlcgEFB2FkZHJlc3MEBW9sZEZwCQELdmFsdWVPckVsc2UCCQCfCAEFCXVzZXJGcEtleQAABAhib251c0tleQkBEGtleVVzZXJGdWxsQm9udXMBBQdhZGRyZXNzBAhvbGRCb251cwkBC3ZhbHVlT3JFbHNlAgkAmggCBQ5hY3JlczJDb250cmFjdAUIYm9udXNLZXkAAAMDCQBmAgAABQpib251c0RlbHRhCQBmAgAACQBkAgUIb2xkQm9udXMFCmJvbnVzRGVsdGEHCQACAQkArAICCQCsAgIJAKwCAgkArAICAg5Zb3UgaGF2ZSBvbmx5IAkBCmZpeGVkUG9pbnQCBQhvbGRCb251cwAEAh4lIGJvbnVzLCBhbmQgdHJpZWQgdG8gdW5zdGFrZSAJAQpmaXhlZFBvaW50AgkBAS0BBQpib251c0RlbHRhAAQCASUECyR0MDY4Mzg2OTM3CQEeZ2V0RmFybWluZ1Bvd2VyQnlBY3Jlc0FuZEJvbnVzAgUObmV3QWNyZXNBbW91bnQJAGQCBQhvbGRCb251cwUKYm9udXNEZWx0YQQMbmV3Qm9udXNlZEZwCAULJHQwNjgzODY5MzcCXzEEB2lnbm9yZWQIBQskdDA2ODM4NjkzNwJfMgQKb2xkVG90YWxGcAkBC3ZhbHVlT3JFbHNlAgkAnwgBBRR0b3RhbEZhcm1pbmdQb3dlcktleQAABAxhY3Jlc0FjdGlvbnMDCQAAAgUDYW10AAAFA25pbAkAzAgCCQEMSW50ZWdlckVudHJ5AgUJYW1vdW50S2V5BQ5uZXdBY3Jlc0Ftb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgUSYWNyZXNTdGFrZFRvdGFsS2V5CQBkAgUIb2xkVG90YWwFA2FtdAUDbmlsCQCUCgIJAM0IAgkAzQgCCQDNCAIJAM0IAgUMYWNyZXNBY3Rpb25zCQEMSW50ZWdlckVudHJ5AgUHdGltZUtleQgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAQxJbnRlZ2VyRW50cnkCBQl1c2VyRnBLZXkFDG5ld0JvbnVzZWRGcAkBDEludGVnZXJFbnRyeQIFFHRvdGFsRmFybWluZ1Bvd2VyS2V5CQBlAgkAZAIFCm9sZFRvdGFsRnAFDG5ld0JvbnVzZWRGcAUFb2xkRnAJAQxJbnRlZ2VyRW50cnkCBQhib251c0tleQkAZAIFCG9sZEJvbnVzBQpib251c0RlbHRhBQl3bGdSZXN1bHQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BC2dldFdsZ1ByaWNlARV1c2R0QmFsYW5jZUNvcnJlY3Rpb24EDGlzc3VlZEFtb3VudAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFC3dsZ0NvbnRyYWN0BQ93bGdJc3N1ZWRBbXRLZXkCGFdMR09MRCBpcyBub3QgaXNzdWVkIHlldAQGd2xnVXNkCQDwBwIFC3dsZ0NvbnRyYWN0BQt1c2R0QXNzZXRJZAQJYWNyZXMyVXNkCQBlAgkA8AcCBQ5hY3JlczJDb250cmFjdAULdXNkdEFzc2V0SWQFFXVzZHRCYWxhbmNlQ29ycmVjdGlvbgQPaW52ZXN0RnVuZFRvdGFsCQBkAgkA8AcCBRJpbnZlc3RGdW5kQ29udHJhY3QFC3VzZHRBc3NldElkCQELdmFsdWVPckVsc2UCCQCaCAIFEmludmVzdEZ1bmRDb250cmFjdAUOemJJc3N1ZWRBbXRLZXkAAAQNdG90YWxGdW5kc1VzZAkAZAIJAGQCBQlhY3JlczJVc2QFBndsZ1VzZAUPaW52ZXN0RnVuZFRvdGFsCQBrAwUNdG90YWxGdW5kc1VzZAUFTVVMVDgFDGlzc3VlZEFtb3VudAERZ2V0U3dhcExpbWl0QWNyZXMABAZ3bGdVc2QJAPAHAgULd2xnQ29udHJhY3QFC3VzZHRBc3NldElkBAlhY3JlczJVc2QJAPAHAgUEdGhpcwULdXNkdEFzc2V0SWQED2ludmVzdEZ1bmRUb3RhbAkAZAIJAPAHAgUSaW52ZXN0RnVuZENvbnRyYWN0BQt1c2R0QXNzZXRJZAkBC3ZhbHVlT3JFbHNlAgkAmggCBRJpbnZlc3RGdW5kQ29udHJhY3QFDnpiSXNzdWVkQW10S2V5AAAEDGRlZmF1bHRMaW1pdAkAaQIJAGQCCQBkAgUJYWNyZXMyVXNkBQZ3bGdVc2QFD2ludmVzdEZ1bmRUb3RhbAUTT05FX1BFUkNFTlRfRElWSVNPUgQNbGFzdExpbWl0TGVmdAkBC3ZhbHVlT3JFbHNlAgkAnwgBBRBrZXlMYXN0TGltaXRMZWZ0BQxkZWZhdWx0TGltaXQECGxhc3RUaW1lCQELdmFsdWVPckVsc2UCCQCfCAEFFGtleUxhc3RBY3Jlc1NlbGxUaW1lAAAEA25vdwgFCWxhc3RCbG9jawl0aW1lc3RhbXAEDGN1cnJlbnRMaW1pdAkAZAIFDWxhc3RMaW1pdExlZnQJAGsDBQxkZWZhdWx0TGltaXQJAGUCBQNub3cFCGxhc3RUaW1lBQpEQVlfTUlMTElTBA1saW1pdExlZnRVc2R0CQCXAwEJAMwIAgUMY3VycmVudExpbWl0CQDMCAIFDGRlZmF1bHRMaW1pdAUDbmlsCQCUCgIJAQxJbnRlZ2VyRW50cnkCBRRrZXlMYXN0QWNyZXNTZWxsVGltZQUDbm93BQ1saW1pdExlZnRVc2R0AAlhcmtPcmFjbGUJARFAZXh0ck5hdGl2ZSgxMDYyKQECIzNQSmdaNkFLMVdWQ3BkQ21FWnBlc0htYUt2clFEZFhHNW9nAAlpbmN1YmF0b3IJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUJYXJrT3JhY2xlAhdzdGF0aWNfaW5jdWJhdG9yQWRkcmVzcwIAAAdicmVlZGVyCQELdmFsdWVPckVsc2UCCQCdCAIFCWFya09yYWNsZQIVc3RhdGljX2JyZWVkZXJBZGRyZXNzAgAAD3R1cnRsZUluY3ViYXRvcgkBC3ZhbHVlT3JFbHNlAgkAnQgCBQlhcmtPcmFjbGUCHXN0YXRpY190dXJ0bGVJbmN1YmF0b3JBZGRyZXNzAgAADXR1cnRsZUJyZWVkZXIJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUJYXJrT3JhY2xlAhtzdGF0aWNfdHVydGxlQnJlZWRlckFkZHJlc3MCAAAPY2FuaW5lSW5jdWJhdG9yCQELdmFsdWVPckVsc2UCCQCdCAIFCWFya09yYWNsZQIdc3RhdGljX2NhbmluZUluY3ViYXRvckFkZHJlc3MCAAANY2FuaW5lQnJlZWRlcgkBC3ZhbHVlT3JFbHNlAgkAnQgCBQlhcmtPcmFjbGUCG3N0YXRpY19jYW5pbmVCcmVlZGVyQWRkcmVzcwIAAA9mZWxpbmVJbmN1YmF0b3IJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUJYXJrT3JhY2xlAh1zdGF0aWNfZmVsaW5lSW5jdWJhdG9yQWRkcmVzcwIAAA1mZWxpbmVCcmVlZGVyCQELdmFsdWVPckVsc2UCCQCdCAIFCWFya09yYWNsZQIbc3RhdGljX2ZlbGluZUJyZWVkZXJBZGRyZXNzAgAADW11dGFudEJyZWVkZXIJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUJYXJrT3JhY2xlAh1zdGF0aWNfbXV0YW50SW5jdWJhdG9yQWRkcmVzcwIAAQ9pc0Fya2ltYWxJc3N1ZWQBA25mbwQGaXNzdWVyCQClCAEIBQNuZm8GaXNzdWVyAwMDAwMDAwMDAwkAAAIFBWNoYWluAQFUCQAAAgUGaXNzdWVyBRVvbGRTdGFraW5nQ29udHJhY3RTdHIHBgkAAAIFBmlzc3VlcgUJaW5jdWJhdG9yBgkAAAIFBmlzc3VlcgUHYnJlZWRlcgYJAAACBQZpc3N1ZXIFD3R1cnRsZUluY3ViYXRvcgYJAAACBQZpc3N1ZXIFDXR1cnRsZUJyZWVkZXIGCQAAAgUGaXNzdWVyBQ9jYW5pbmVJbmN1YmF0b3IGCQAAAgUGaXNzdWVyBQ1jYW5pbmVCcmVlZGVyBgkAAAIFBmlzc3VlcgUPZmVsaW5lSW5jdWJhdG9yBgkAAAIFBmlzc3VlcgUNZmVsaW5lQnJlZWRlcggFA25mbwRuYW1lAwkAAAIFBmlzc3VlcgUNbXV0YW50QnJlZWRlcggFA25mbwtkZXNjcmlwdGlvbgIAARJib251c0J5RGVzY3JpcHRpb24BBWRlc2NyAwkBASEBCQEIY29udGFpbnMCBQVkZXNjcgIYImJvbnVzVHlwZSI6ICJGYXJtUG93ZXIiCQACAQkArAICAhZORlQgaXMgbm90IHN1cHBvcnRlZDogBQVkZXNjcgQIYm9udXNTdHIJAJEDAgkAvAkCCQCRAwIJALwJAgUFZGVzY3ICCCJib251cyI6AAECASwAAAkBDXBhcnNlSW50VmFsdWUBCQCwAgIFCGJvbnVzU3RyCQBkAgkBC3ZhbHVlT3JFbHNlAgkAtwkCBQhib251c1N0cgIBIAD///////////8BAAEBFnJhcml0eUlkeEJ5RGVzY3JpcHJpb24BBWRlc2NyAwkBASEBCQEIY29udGFpbnMCBQVkZXNjcgIGInJhcmUiCQACAQkArAICAhZORlQgaXMgbm90IHN1cHBvcnRlZDogBQVkZXNjcgQJcmFyaXR5U3RyCQCRAwIJALwJAgkAkQMCCQC8CQIJAJEDAgkAvAkCBQVkZXNjcgIGInJhcmUiAAECASwAAAIBIgABCQEFdmFsdWUBCQDPCAIFC3Jhcml0eU5hbWVzBQlyYXJpdHlTdHIBEHN0YWtlTmZ0SW50ZXJuYWwGBGFkZHIKYXNzZXRJZFN0cgZib251czYKdXNlck51bUtleQt0b3RhbE51bUtleQVsaW1pdAQJbmZ0TnVtYmVyCQELdmFsdWVPckVsc2UCCQCfCAEFCnVzZXJOdW1LZXkAAAMJAGcCBQluZnROdW1iZXIFBWxpbWl0CQACAQkArAICCQCsAgICEllvdSBjYW4gc3Rha2UgbWF4IAkApAMBBQVsaW1pdAINIG9mIHN1Y2ggTkZUcwQNJHQwMTE3NTcxMTgzMwkBGXN0YWtlVW5zdGFrZUFjcmVzSW50ZXJuYWwDAAAFBGFkZHIFBmJvbnVzNgQHYWN0aW9ucwgFDSR0MDExNzU3MTE4MzMCXzEEEHdsZ0NsYWltZWRBbW91bnQIBQ0kdDAxMTc1NzExODMzAl8yCQCUCgIJAM0IAgkAzQgCCQDNCAIFB2FjdGlvbnMJAQxJbnRlZ2VyRW50cnkCBQp1c2VyTnVtS2V5CQBkAgUJbmZ0TnVtYmVyAAEJAQxJbnRlZ2VyRW50cnkCBQt0b3RhbE51bUtleQkAZAIJAQt2YWx1ZU9yRWxzZQIJAJ8IAQULdG90YWxOdW1LZXkAAAABCQEMSW50ZWdlckVudHJ5AgkBHmtleVN0YWtlZFRpbWVCeUFzc2V0SWRBbmRPd25lcgIFCmFzc2V0SWRTdHIFBGFkZHIIBQlsYXN0QmxvY2sJdGltZXN0YW1wBRB3bGdDbGFpbWVkQW1vdW50EgFpAQpzYXZlTGFzdFR4AAMJAQEhAQkBD2NvbnRhaW5zRWxlbWVudAIJAMwIAgULd2xnQ29udHJhY3QFA25pbAgFAWkGY2FsbGVyCQACAQINQWNjZXNzIGRlbmllZAkAlAoCCQEGcHJvbG9nAQUBaQAqAWkBDWNvbnN0cnVjdG9yVjECCXJlc3QyQWRkcg5vbGRBY3JDb250cmFjdAMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECEVBlcm1pc3Npb24gZGVuaWVkBA5vbGRBY3JDb250QWRkcgkBEUBleHRyTmF0aXZlKDEwNjIpAQUOb2xkQWNyQ29udHJhY3QJAMwIAgkBDEludGVnZXJFbnRyeQIFFGFjcmVzSXNzdWVkQW1vdW50S2V5CQERQGV4dHJOYXRpdmUoMTA1MCkCBQ5vbGRBY3JDb250QWRkcgUUYWNyZXNJc3N1ZWRBbW91bnRLZXkJAMwIAgkBC0JpbmFyeUVudHJ5AgUPYWNyZXNBc3NldElkS2V5CQERQGV4dHJOYXRpdmUoMTA1MikCBQ5vbGRBY3JDb250QWRkcgUPYWNyZXNBc3NldElkS2V5CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQ9rZXlSZXN0MkFkZHJlc3MABQlyZXN0MkFkZHIJAMwIAgkBC1N0cmluZ0VudHJ5AgUTb2xkQWNyZXNDb250cmFjdEtleQUOb2xkQWNyQ29udHJhY3QFA25pbAFpAQpzZXRCbG9ja2VkAQlpc0Jsb2NrZWQDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAhFwZXJtaXNzaW9uIGRlbmllZAkAzAgCCQEMQm9vbGVhbkVudHJ5AgkBCmtleUJsb2NrZWQABQlpc0Jsb2NrZWQFA25pbAFpAQx1bnN0YWtlQWNyZXMBBmFtb3VudAQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQBnAgAABQZhbW91bnQJAAIBAhlBbW91bnQgc2hvdWxkIGJlIHBvc2l0aXZlBAdhZGRyZXNzCQClCAEIBQFpBmNhbGxlcgMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBA5hcmJSZWxlYXNlVGltZQkAZAIJAQt2YWx1ZU9yRWxzZQIJAJoIAgULd2xnQ29udHJhY3QJARlrZXlMYXN0V2xnVHJhZGVUaW1lQnlVc2VyAQUHYWRkcmVzcwAABQ5hcmJpdHJhZ2VEZWxheQMJAGYCBQ5hcmJSZWxlYXNlVGltZQgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAAIBCQCsAgICLVlvdSB0cmFkZWQgc29tZSBXTEdPTEQsIGNhbm5vdCB1bnN0YWtlIHVudGlsIAkApAMBBQ5hcmJSZWxlYXNlVGltZQQNJHQwMTM0MDcxMzQ4NwkBGXN0YWtlVW5zdGFrZUFjcmVzSW50ZXJuYWwDCQEBLQEFBmFtb3VudAUHYWRkcmVzcwAABAdhY3Rpb25zCAUNJHQwMTM0MDcxMzQ4NwJfMQQQd2xnQ2xhaW1lZEFtb3VudAgFDSR0MDEzNDA3MTM0ODcCXzIJAJQKAgkAzggCCQDNCAIFB2FjdGlvbnMJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUGYW1vdW50BQxhY3Jlc0Fzc2V0SWQFDXByb2xvZ0FjdGlvbnMFEHdsZ0NsYWltZWRBbW91bnQBaQEKc3Rha2VBY3JlcwAEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpBAdhZGRyZXNzCQClCAEIBQFpBmNhbGxlcgMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECImV4YWN0bHkgMSBwYXltZW50IG11c3QgYmUgYXR0YWNoZWQEA3BtdAkAkQMCCAUBaQhwYXltZW50cwAABANhbXQIBQNwbXQGYW1vdW50AwMJAQEhAQkBCWlzRGVmaW5lZAEIBQNwbXQHYXNzZXRJZAYJAQIhPQIJAQV2YWx1ZQEIBQNwbXQHYXNzZXRJZAUMYWNyZXNBc3NldElkCQACAQIUQUNSRVMgcGF5bWVudHMgb25seSEEDSR0MDEzOTM4MTQwMTQJARlzdGFrZVVuc3Rha2VBY3Jlc0ludGVybmFsAwUDYW10BQdhZGRyZXNzAAAEB2FjdGlvbnMIBQ0kdDAxMzkzODE0MDE0Al8xBBB3bGdDbGFpbWVkQW1vdW50CAUNJHQwMTM5MzgxNDAxNAJfMgkAlAoCCQDOCAIFB2FjdGlvbnMFDXByb2xvZ0FjdGlvbnMFEHdsZ0NsYWltZWRBbW91bnQBaQEIYnV5QWNyZXMABA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECImV4YWN0bHkgMSBwYXltZW50IG11c3QgYmUgYXR0YWNoZWQEA3BtdAkAkQMCCAUBaQhwYXltZW50cwAABAp1c2R0QW1vdW50CAUDcG10BmFtb3VudAMDCQEBIQEJAQlpc0RlZmluZWQBCAUDcG10B2Fzc2V0SWQGCQECIT0CCQEFdmFsdWUBCAUDcG10B2Fzc2V0SWQFC3VzZHRBc3NldElkCQACAQITVVNEVCBwYXltZW50cyBvbmx5IQMJAGYCBQVNVUxUNgUKdXNkdEFtb3VudAkAAgEJAKwCAgkArAICAhZNaW4gcGF5bWVudCBzaG91bGQgYmUgCQEKZml4ZWRQb2ludAIFBU1VTFQ2AAYCBSBVU0RUBAthY3Jlc0Ftb3VudAkAaAIFCnVzZHRBbW91bnQFFVVTRFQyQUNSRVNfTVVMVElQTElFUgQJd2xnQW1vdW50CQBrAwUKdXNkdEFtb3VudAUFTVVMVDgJAQtnZXRXbGdQcmljZQEFCnVzZHRBbW91bnQED29sZEFjcmVzQWRkcmVzcwkBEUBleHRyTmF0aXZlKDEwNjIpAQkBEUBleHRyTmF0aXZlKDEwNTgpAQUTb2xkQWNyZXNDb250cmFjdEtleQQDcmVxCQD8BwQFD29sZEFjcmVzQWRkcmVzcwIUcmVxdWVzdEFjcmVzQ2FsbGJhY2sJAMwIAgULYWNyZXNBbW91bnQFA25pbAUDbmlsAwkAAAIFA3JlcQUDcmVxBAl3bGdSZW1haW4JAQVhc0ludAEJAPwHBAULd2xnQ29udHJhY3QCCmJ1cm5XbGdvbGQJAMwIAgUJd2xnQW1vdW50BQNuaWwFA25pbAkAlAoCCQDOCAIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBQthY3Jlc0Ftb3VudAUMYWNyZXNBc3NldElkBQNuaWwFDXByb2xvZ0FjdGlvbnMFCXdsZ1JlbWFpbgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARBidXlBY3Jlc1JFQURPTkxZAQp1c2R0QW1vdW50BAthY3Jlc0Ftb3VudAkAaAIFCnVzZHRBbW91bnQFFVVTRFQyQUNSRVNfTVVMVElQTElFUgQJd2xnVG9CdXJuCQBrAwUKdXNkdEFtb3VudAUFTVVMVDgJAQtnZXRXbGdQcmljZQEFCnVzZHRBbW91bnQJAJQKAgUDbmlsCQDMCAIFC2FjcmVzQW1vdW50CQDMCAIFBU1VTFQ2CQDMCAIFC2FjcmVzQW1vdW50CQDMCAIFCXdsZ1RvQnVybgUDbmlsAWkBCXNlbGxBY3JlcwAEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQIiZXhhY3RseSAxIHBheW1lbnQgbXVzdCBiZSBhdHRhY2hlZAQDcG10CQCRAwIIBQFpCHBheW1lbnRzAAAEC2FjcmVzQW1vdW50CAUDcG10BmFtb3VudAMDCQEBIQEJAQlpc0RlZmluZWQBCAUDcG10B2Fzc2V0SWQGCQECIT0CCQEFdmFsdWUBCAUDcG10B2Fzc2V0SWQFDGFjcmVzQXNzZXRJZAkAAgECFEFDUkVTIHBheW1lbnRzIG9ubHkhAwkAZgIFBU1VTFQ3BQthY3Jlc0Ftb3VudAkAAgEJAKwCAgkArAICAhZNaW4gcGF5bWVudCBzaG91bGQgYmUgCQEKZml4ZWRQb2ludAIFBU1VTFQ3AAgCBiBBQ1JFUwQEYWRkcgkApQgBCAUBaQZjYWxsZXIEDSR0MDE1ODcxMTU5MTkJARFnZXRTd2FwTGltaXRBY3JlcwAEC2xpbWl0QWN0aW9uCAUNJHQwMTU4NzExNTkxOQJfMQQHbWF4VXNkdAgFDSR0MDE1ODcxMTU5MTkCXzIECG1heEFjcmVzCQBoAgUHbWF4VXNkdAUVVVNEVDJBQ1JFU19NVUxUSVBMSUVSAwkAZgIFC2FjcmVzQW1vdW50BQhtYXhBY3JlcwkAAgEJAKwCAgkArAICAhFZb3UgY2FuIHNlbGwgbWF4IAkBCmZpeGVkUG9pbnQCBQhtYXhBY3JlcwAIAgYgQUNSRVMECnVzZHRBbW91bnQJAGkCCQBpAgULYWNyZXNBbW91bnQFFVVTRFQyQUNSRVNfTVVMVElQTElFUgACCQCUCgIJAM4IAgkAzAgCBQtsaW1pdEFjdGlvbgkAzAgCCQEMSW50ZWdlckVudHJ5AgUQa2V5TGFzdExpbWl0TGVmdAkAZQIFB21heFVzZHQFCnVzZHRBbW91bnQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBQp1c2R0QW1vdW50BQt1c2R0QXNzZXRJZAUDbmlsBQ1wcm9sb2dBY3Rpb25zBQp1c2R0QW1vdW50AWkBEXNlbGxBY3Jlc1JFQURPTkxZAgdhZGRyZXNzC2FjcmVzQW1vdW50BA0kdDAxNjQxNTE2NDYzCQERZ2V0U3dhcExpbWl0QWNyZXMABAtsaW1pdEFjdGlvbggFDSR0MDE2NDE1MTY0NjMCXzEEB21heFVzZHQIBQ0kdDAxNjQxNTE2NDYzAl8yBAp1c2R0QW1vdW50CQBpAgkAaQIFC2FjcmVzQW1vdW50BRVVU0RUMkFDUkVTX01VTFRJUExJRVIAAgkAlAoCBQNuaWwJAMwIAgUKdXNkdEFtb3VudAkAzAgCBQVNVUxUNwkAzAgCCQBoAgUHbWF4VXNkdAUVVVNEVDJBQ1JFU19NVUxUSVBMSUVSCQDMCAIAAAUDbmlsAWkBEGNvbnZlcnRPbGRTdGFrZXMAAwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQIUVGVtcG9yYXJpbHkgZGlzYWJsZWQEB2FkZHJlc3MJAKUIAQgFAWkGY2FsbGVyAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQED29sZEFjcmVzQWRkcmVzcwkBEUBleHRyTmF0aXZlKDEwNjIpAQkBEUBleHRyTmF0aXZlKDEwNTgpAQUTb2xkQWNyZXNDb250cmFjdEtleQQGYW1vdW50CQELdmFsdWVPckVsc2UCCQCaCAIFD29sZEFjcmVzQWRkcmVzcwkBF2tleUFjcmVzU3Rha2VkQW10QnlVc2VyAQUHYWRkcmVzcwAABAlnb3RBY3JlczADCQBmAgUGYW1vdW50AAAJAQxhc1R1cGxlMkludHMBCQD8BwQFD29sZEFjcmVzQWRkcmVzcwIUdW5zdGFrZUFjcmVzQ2FsbGJhY2sJAMwIAgUGYW1vdW50CQDMCAIFB2FkZHJlc3MFA25pbAUDbmlsCQCUCgIAAAAABBFvbGRTdGFraW5nQWRkcmVzcwkBEUBleHRyTmF0aXZlKDEwNjIpAQUVb2xkU3Rha2luZ0NvbnRyYWN0U3RyBAhsYW5kc1N0cgkAnQgCBRFvbGRTdGFraW5nQWRkcmVzcwkBFWtleVN0YWtlZExhbmRzQnlPd25lcgEFB2FkZHJlc3MEC2xhbmRzUmVzdWx0AwkBCWlzRGVmaW5lZAEFCGxhbmRzU3RyBAVsYW5kcwkAvQkCCQEFdmFsdWUBBQhsYW5kc1N0cgIBXwoBB29uZUxhbmQCA2FjYwtsYW5kQXNzZXRJZAMJAAACBQtsYW5kQXNzZXRJZAIACQACAQIXbGFuZEFzc2V0SWQgaXMgcmVxdWlyZWQEAXIJAQxhc1R1cGxlNUludHMBCQD8BwQFEW9sZFN0YWtpbmdBZGRyZXNzAhN1bnN0YWtlTGFuZENhbGxiYWNrCQDMCAIFC2xhbmRBc3NldElkCQDMCAIFB2FkZHJlc3MFA25pbAUDbmlsCQCWCgQJAGQCCAUDYWNjAl8xCAUBcgJfMQkAZAIIBQNhY2MCXzIIBQFyAl8yCQBkAggFA2FjYwJfMwgFAXICXzMJAGQCCAUDYWNjAl80CAUBcgJfNAQCcnIKAAIkbAUFbGFuZHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCWCgQAAAAAAAAAAAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEHb25lTGFuZAIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIVTGlzdCBzaXplIGV4Y2VlZHMgMTAwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIAIwAkACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgAzADQANQA2ADcAOAA5ADoAOwA8AD0APgA/AEAAQQBCAEMARABFAEYARwBIAEkASgBLAEwATQBOAE8AUABRAFIAUwBUAFUAVgBXAFgAWQBaAFsAXABdAF4AXwBgAGEAYgBjAGQECGZpbmFsaXplCQD8BwQFEW9sZFN0YWtpbmdBZGRyZXNzAhx1bnN0YWtlTGFuZHNGaW5hbGl6ZUNhbGxiYWNrCQDMCAIFB2FkZHJlc3MFA25pbAUDbmlsAwkAAAIFCGZpbmFsaXplBQhmaW5hbGl6ZQQDcmVxCQD8BwQFD29sZEFjcmVzQWRkcmVzcwIUcmVxdWVzdEFjcmVzQ2FsbGJhY2sJAMwIAgkAZAIJAGQCCQBkAggFAnJyAl8xCAUCcnICXzIIBQJycgJfMwgFAnJyAl80BQNuaWwFA25pbAMJAAACBQNyZXEFA3JlcQQNJHQwMTgzMzIxODQ3MAkBDmlzc3VlTmZ0Q3VzdG9tCAUNaWR4TmFtZVNob3ZlbAUHaWR4S2V5UAUKaWR4Q29sbERpZwUKaWR4UmFyaXR5UAADBQ5pZHhEZXNjclNob3ZlbAUOaWR4Qm9udXNUeXBlRnAIBQFpBmNhbGxlcgQKbmZ0QWN0aW9ucwgFDSR0MDE4MzMyMTg0NzACXzEECm5mdEFzc2V0SWQIBQ0kdDAxODMzMjE4NDcwAl8yCQCXCgUIBQJycgJfMQgFAnJyAl8yCAUCcnICXzMIBQJycgJfNAUKbmZ0QWN0aW9ucwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAlwoFAAAAAAAAAAAFA25pbAQLZHVja0Fzc2V0SWQJAQt2YWx1ZU9yRWxzZQIJAJ0IAgURb2xkU3Rha2luZ0FkZHJlc3MJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFB2FkZHJlc3MCAAQKZHVja1Jlc3VsdAMJAQIhPQIFC2R1Y2tBc3NldElkAgAJAQxhc1R1cGxlM0ludHMBCQD8BwQFEW9sZFN0YWtpbmdBZGRyZXNzAhN1bnN0YWtlRHVja0NhbGxiYWNrCQDMCAIFC2R1Y2tBc3NldElkCQDMCAIFB2FkZHJlc3MFA25pbAUDbmlsCQCVCgMAAAAAAAAEAXgJARlzdGFrZVVuc3Rha2VBY3Jlc0ludGVybmFsAwkAZAIJAGQCCQBkAgkAZAIJAGQCCQBkAgkAZAIIBQlnb3RBY3JlczACXzEIBQtsYW5kc1Jlc3VsdAJfMQgFC2xhbmRzUmVzdWx0Al8yCAULbGFuZHNSZXN1bHQCXzMIBQtsYW5kc1Jlc3VsdAJfNAgFCmR1Y2tSZXN1bHQCXzEIBQpkdWNrUmVzdWx0Al8yCAUKZHVja1Jlc3VsdAJfMwUHYWRkcmVzcwAACQCUCgIJAM4IAggFC2xhbmRzUmVzdWx0Al81CAUBeAJfMQgFAXgCXzIBaQEUdW5zdGFrZUxhbmRzUkVBRE9OTFkBB2FkZHJlc3MEEW9sZFN0YWtpbmdBZGRyZXNzCQERQGV4dHJOYXRpdmUoMTA2MikBBRVvbGRTdGFraW5nQ29udHJhY3RTdHIECGxhbmRzU3RyCQCdCAIFEW9sZFN0YWtpbmdBZGRyZXNzCQEVa2V5U3Rha2VkTGFuZHNCeU93bmVyAQUHYWRkcmVzcwQLbGFuZHNSZXN1bHQDCQEJaXNEZWZpbmVkAQUIbGFuZHNTdHIEBWxhbmRzCQC9CQIJAQV2YWx1ZQEFCGxhbmRzU3RyAgFfCgEHb25lTGFuZAIDYWNjC2xhbmRBc3NldElkAwkAAAIFC2xhbmRBc3NldElkAgAJAAIBAhdsYW5kQXNzZXRJZCBpcyByZXF1aXJlZAQBcgkBDGFzVHVwbGU0SW50cwEJAPwHBAURb2xkU3Rha2luZ0FkZHJlc3MCE3Vuc3Rha2VMYW5kUkVBRE9OTFkJAMwIAgULbGFuZEFzc2V0SWQJAMwIAgUHYWRkcmVzcwUDbmlsBQNuaWwJAJYKBAkAZAIIBQNhY2MCXzEIBQFyAl8xCQBkAggFA2FjYwJfMggFAXICXzIJAGQCCAUDYWNjAl8zCAUBcgJfMwkAZAIIBQNhY2MCXzQIBQFyAl80CgACJGwFBWxhbmRzCgACJHMJAJADAQUCJGwKAAUkYWNjMAkAlgoEAAAAAAAAAAAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBB29uZUxhbmQCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFUxpc3Qgc2l6ZSBleGNlZWRzIDEwMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQA6ADsAPAA9AD4APwBAAEEAQgBDAEQARQBGAEcASABJAEoASwBMAE0ATgBPAFAAUQBSAFMAVABVAFYAVwBYAFkAWgBbAFwAXQBeAF8AYABhAGIAYwBkCQCWCgQAAAAAAAAAAAkAlAoCBQNuaWwFC2xhbmRzUmVzdWx0AWkBEnN0YWtlQWNyZXNDYWxsYmFjawEEYWRkcgMJAQIhPQIIBQFpBmNhbGxlcgkBEUBleHRyTmF0aXZlKDEwNjIpAQUVb2xkU3Rha2luZ0NvbnRyYWN0U3RyCQACAQIRUGVybWlzc2lvbiBkZW5pZWQJARlzdGFrZVVuc3Rha2VBY3Jlc0ludGVybmFsAwgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQFBGFkZHIAAAFpARpzaW11bGF0ZVN0YWtlQWNyZXNSRUFET05MWQIHYWRkcmVzcwthZGRlZEFtb3VudAQJYW1vdW50S2V5CQEXa2V5QWNyZXNTdGFrZWRBbXRCeVVzZXIBBQdhZGRyZXNzBA5uZXdBY3Jlc0Ftb3VudAkAZAIJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJYW1vdW50S2V5AAAFC2FkZGVkQW1vdW50BAhvbGRUb3RhbAkBC3ZhbHVlT3JFbHNlAgkAnwgBBRJhY3Jlc1N0YWtkVG90YWxLZXkAAAQJdXNlckZwS2V5CQEVa2V5RmFybWluZ1Bvd2VyQnlVc2VyAQUHYWRkcmVzcwQFb2xkRnAJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJdXNlckZwS2V5AAAECXVzZXJCb251cwkBC3ZhbHVlT3JFbHNlAgkAmggCBQ5hY3JlczJDb250cmFjdAkBEGtleVVzZXJGdWxsQm9udXMBBQdhZGRyZXNzAAAEDSR0MDIwNjM1MjA3MjIJAR5nZXRGYXJtaW5nUG93ZXJCeUFjcmVzQW5kQm9udXMCBQ5uZXdBY3Jlc0Ftb3VudAUJdXNlckJvbnVzBAxuZXdCb251c2VkRnAIBQ0kdDAyMDYzNTIwNzIyAl8xBAdpZ25vcmVkCAUNJHQwMjA2MzUyMDcyMgJfMgQKb2xkVG90YWxGcAkBC3ZhbHVlT3JFbHNlAgkAnwgBBRR0b3RhbEZhcm1pbmdQb3dlcktleQAABApuZXdUb3RhbEZwCQBlAgkAZAIFCm9sZFRvdGFsRnAFDG5ld0JvbnVzZWRGcAUFb2xkRnAJAJQKAgUDbmlsCQDMCAIFBW9sZEZwCQDMCAIFDG5ld0JvbnVzZWRGcAkAzAgCBQpvbGRUb3RhbEZwCQDMCAIFCm5ld1RvdGFsRnAFA25pbAFpAQtpc3N1ZVBpY2tDMQEKZm9yQWRkcmVzcwMJAQIhPQIIBQFpBmNhbGxlcgULd2xnQ29udHJhY3QJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAkBDmlzc3VlTmZ0Q3VzdG9tCAUOaWR4TmFtZVBpY2theGUFB2lkeEtleUMFCmlkeENvbGxEaWcFCmlkeFJhcml0eUMAAQUPaWR4RGVzY3JQaWNrYXhlBQ5pZHhCb251c1R5cGVGcAkBEUBleHRyTmF0aXZlKDEwNjIpAQUKZm9yQWRkcmVzcwFpAQhzdGFrZU5GVAAEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQIcRXhhY3RseSBvbmUgcGF5bWVudCByZXF1aXJlZAQDcG10CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAADCQECIT0CCAUDcG10BmFtb3VudAABCQACAQInTkZUIHRva2VuIHNob3VsZCBiZSBhdHRhY2hlZCBhcyBwYXltZW50BAdhc3NldElkCQEFdmFsdWUBCAUDcG10B2Fzc2V0SWQEBWFzc2V0CQEFdmFsdWUBCQDsBwEFB2Fzc2V0SWQECmFzc2V0SWRTdHIJANgEAQUHYXNzZXRJZAQEYWRkcgkApQgBCAUBaQZjYWxsZXIEB25mdHNLZXkJARRrZXlTdGFrZWRORlRzQnlPd25lcgEFBGFkZHIEB25mdHNTdHIJAKIIAQUHbmZ0c0tleQQEbmZ0cwMJAQlpc0RlZmluZWQBBQduZnRzU3RyCQC8CQIJAQV2YWx1ZQEFB25mdHNTdHICAV8FA25pbAMJAQ9jb250YWluc0VsZW1lbnQCBQRuZnRzBQphc3NldElkU3RyCQACAQkArAICAiFZb3VyIHN0YWtlZCBORlRzIGFscmVhZHkgY29udGFpbiAFCmFzc2V0SWRTdHIDCQBnAgkAkAMBBQRuZnRzBRdNQVhfTkZUU19TVEFLRURfQllfVVNFUgkAAgEJAKwCAgkArAICAhlZb3VyIGFscmVhZHkgc3Rha2VkIG1heCAoCQCkAwEFF01BWF9ORlRTX1NUQUtFRF9CWV9VU0VSAgYpIE5GVHMECmxpc3RBY3Rpb24JAQtTdHJpbmdFbnRyeQIFB25mdHNLZXkJALoJAgkAzQgCBQRuZnRzBQphc3NldElkU3RyAgFfAwkAAAIIBQVhc3NldAZpc3N1ZXIFBHRoaXMEDSR0MDIyMTMxMjIzMjEJARBzdGFrZU5mdEludGVybmFsBgUEYWRkcgUKYXNzZXRJZFN0cgkAaAIJARJib251c0J5RGVzY3JpcHRpb24BCQEFdmFsdWUBCAUFYXNzZXQLZGVzY3JpcHRpb24AkE4JARJrZXlVc2VyV2xOZnROdW1iZXIBBQRhZGRyBRNrZXlXbE5mdFRvdGFsU3Rha2VkBQtNQVhfV0xfTkZUUwQHYWN0aW9ucwgFDSR0MDIyMTMxMjIzMjECXzEEEHdsZ0NsYWltZWRBbW91bnQIBQ0kdDAyMjEzMTIyMzIxAl8yCQCUCgIJAM0IAgkAzggCBQ1wcm9sb2dBY3Rpb25zBQdhY3Rpb25zBQpsaXN0QWN0aW9uBRB3bGdDbGFpbWVkQW1vdW50AwkAAAIJAQ9pc0Fya2ltYWxJc3N1ZWQBBQVhc3NldAIACQACAQI0T25seSBXYXZlc0xhbmRzIGFuZCBBcmtpbWFscyBORlQgdG9rZW5zIGFyZSBhY2NlcHRlZAQNJHQwMjI1MDIyMjY1MwkBEHN0YWtlTmZ0SW50ZXJuYWwGBQRhZGRyBQphc3NldElkU3RyBQ1BUktfTkZUX0JPTlVTCQETa2V5VXNlckFya05mdE51bWJlcgEFBGFkZHIFFGtleUFya05mdFRvdGFsU3Rha2VkBQxNQVhfQVJLX05GVFMEB2FjdGlvbnMIBQ0kdDAyMjUwMjIyNjUzAl8xBBB3bGdDbGFpbWVkQW1vdW50CAUNJHQwMjI1MDIyMjY1MwJfMgkAlAoCCQDNCAIJAM4IAgUNcHJvbG9nQWN0aW9ucwUHYWN0aW9ucwUKbGlzdEFjdGlvbgUQd2xnQ2xhaW1lZEFtb3VudAFpAQp1bnN0YWtlTkZUAQphc3NldElkU3RyBA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBAdhc3NldElkCQDZBAEFCmFzc2V0SWRTdHIEBGFkZHIJAKUIAQgFAWkGY2FsbGVyBAVhc3NldAkBBXZhbHVlAQkA7AcBBQdhc3NldElkBAd0aW1lS2V5CQEea2V5U3Rha2VkVGltZUJ5QXNzZXRJZEFuZE93bmVyAgUKYXNzZXRJZFN0cgUEYWRkcgMJAQEhAQkBCWlzRGVmaW5lZAEJAJ8IAQUHdGltZUtleQkAAgEJAKwCAgkArAICAgRORlQgCAUFYXNzZXQEbmFtZQIVIGlzIG5vdCBzdGFrZWQgYnkgeW91BAduZnRzS2V5CQEUa2V5U3Rha2VkTkZUc0J5T3duZXIBBQRhZGRyBARuZnRzCQC8CQIJAQt2YWx1ZU9yRWxzZQIJAKIIAQUHbmZ0c0tleQIAAgFfBANpZHgJAM8IAgUEbmZ0cwUKYXNzZXRJZFN0cgMJAQEhAQkBCWlzRGVmaW5lZAEFA2lkeAkAAgEJAKwCAgIfWW91ciBzdGFrZWQgTkZUcyBkb24ndCBjb250YWluIAUKYXNzZXRJZFN0cgQKbGlzdEFjdGlvbgMJAGYCCQCQAwEFBG5mdHMAAQkBC1N0cmluZ0VudHJ5AgUHbmZ0c0tleQkAugkCCQDRCAIFBG5mdHMJAQV2YWx1ZQEFA2lkeAIBXwkBC0RlbGV0ZUVudHJ5AQUHbmZ0c0tleQQEaXNXTAkAAAIIBQVhc3NldAZpc3N1ZXIFBHRoaXMDBQRpc1dMBAt3bE5mdE51bWJlcgkBC3ZhbHVlT3JFbHNlAgkAnwgBCQESa2V5VXNlcldsTmZ0TnVtYmVyAQUEYWRkcgAABAhib251c1ZhbAkAaAIJARJib251c0J5RGVzY3JpcHRpb24BCQEFdmFsdWUBCAUFYXNzZXQLZGVzY3JpcHRpb24AkE4EDSR0MDIzODE4MjM4OTcJARlzdGFrZVVuc3Rha2VBY3Jlc0ludGVybmFsAwAABQRhZGRyCQEBLQEFCGJvbnVzVmFsBAdhY3Rpb25zCAUNJHQwMjM4MTgyMzg5NwJfMQQQd2xnQ2xhaW1lZEFtb3VudAgFDSR0MDIzODE4MjM4OTcCXzIJAJQKAgkAzggCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgUHYWN0aW9ucwUKbGlzdEFjdGlvbgkBDEludGVnZXJFbnRyeQIJARJrZXlVc2VyV2xOZnROdW1iZXIBBQRhZGRyCQBlAgULd2xOZnROdW1iZXIAAQkBDEludGVnZXJFbnRyeQIFE2tleVdsTmZ0VG90YWxTdGFrZWQJAJYDAQkAzAgCAAAJAMwIAgkAZQIJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUTa2V5V2xOZnRUb3RhbFN0YWtlZAAAAAEFA25pbAkBC0RlbGV0ZUVudHJ5AQkBHmtleVN0YWtlZFRpbWVCeUFzc2V0SWRBbmRPd25lcgIJANgEAQUHYXNzZXRJZAUEYWRkcgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyAAEFB2Fzc2V0SWQFDXByb2xvZ0FjdGlvbnMFEHdsZ0NsYWltZWRBbW91bnQEC2Fya2ltYWxOYW1lCQEPaXNBcmtpbWFsSXNzdWVkAQUFYXNzZXQDCQAAAgULYXJraW1hbE5hbWUCAAkAAgECNE9ubHkgV2F2ZXNMYW5kcyBhbmQgQXJraW1hbHMgTkZUIHRva2VucyBhcmUgYWNjZXB0ZWQEDGFya05mdE51bWJlcgkBC3ZhbHVlT3JFbHNlAgkAnwgBCQETa2V5VXNlckFya05mdE51bWJlcgEFBGFkZHIAAAQNJHQwMjQ1NTcyNDY0MQkBGXN0YWtlVW5zdGFrZUFjcmVzSW50ZXJuYWwDAAAFBGFkZHIJAQEtAQUNQVJLX05GVF9CT05VUwQHYWN0aW9ucwgFDSR0MDI0NTU3MjQ2NDECXzEEEHdsZ0NsYWltZWRBbW91bnQIBQ0kdDAyNDU1NzI0NjQxAl8yCQCUCgIJAM4IAgkAzQgCCQDNCAIJAM0IAgkAzQgCBQdhY3Rpb25zBQpsaXN0QWN0aW9uCQEMSW50ZWdlckVudHJ5AgkBE2tleVVzZXJBcmtOZnROdW1iZXIBBQRhZGRyCQBlAgUMYXJrTmZ0TnVtYmVyAAEJAQtEZWxldGVFbnRyeQEJAR5rZXlTdGFrZWRUaW1lQnlBc3NldElkQW5kT3duZXICCQDYBAEFB2Fzc2V0SWQFBGFkZHIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgABBQdhc3NldElkBQ1wcm9sb2dBY3Rpb25zBRB3bGdDbGFpbWVkQW1vdW50AWkBDGV4Y2hhbmdlTkZUcwADCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAhRUZW1wb3JhcmlseSBkaXNhYmxlZAQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQBmAgADCQCQAwEIBQFpCHBheW1lbnRzCQACAQIpTWluIG9uZSBXTEdPTEQgYW5kIDIgTkZUIHBheW1lbnRzIGFsbG93ZWQDCQBmAgkAkAMBCAUBaQhwYXltZW50cwAGCQACAQIpTWF4IG9uZSBXTEdPTEQgYW5kIDUgTkZUIHBheW1lbnRzIGFsbG93ZWQEBGFkZHIJAKUIAQgFAWkGY2FsbGVyCgEFYWRkVXACA2FjYwNwbXQEB2Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAggFA3BtdAdhc3NldElkAhpXQVZFUyBwYXltZW50cyBub3QgYWxsb3dlZAMJAAACBQdhc3NldElkBQp3bGdBc3NldElkCQCVCgMJAGQCCAUDYWNjAl8xCAUDcG10BmFtb3VudAgFA2FjYwJfMggFA2FjYwJfMwQFYXNzZXQJAQV2YWx1ZQEJAOwHAQUHYXNzZXRJZAMJAQIhPQIIBQVhc3NldAZpc3N1ZXIFBHRoaXMJAAIBAhtPbmx5IFdMLWlzc3VlZCBORlRzIGFsbG93ZWQECHJhcml0eUl4CQEWcmFyaXR5SWR4QnlEZXNjcmlwcmlvbgEJAQV2YWx1ZQEIBQVhc3NldAtkZXNjcmlwdGlvbgMDCQBmAggFA2FjYwJfNAAACQECIT0CBQhyYXJpdHlJeAgFA2FjYwJfNAcJAAIBAi1Zb3UgY2FuIGV4Y2hhbmdlIG9ubHkgTkZUcyBvZiB0aGUgc2FtZSByYXJpdHkECWJvbnVzUGVyYwkBEmJvbnVzQnlEZXNjcmlwdGlvbgEJAQV2YWx1ZQEIBQVhc3NldAtkZXNjcmlwdGlvbgkAlgoECAUDYWNjAl8xCQBkAggFA2FjYwJfMgUJYm9udXNQZXJjCQDNCAIIBQNhY2MCXzMJAQRCdXJuAgUHYXNzZXRJZAABBQhyYXJpdHlJeAQNJHQwMjYxNjkyNjM4NAoAAiRsCAUBaQhwYXltZW50cwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJYKBAAAAAAFA25pbAD///////////8BCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQVhZGRVcAIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNgkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgQGd2xnRmVlCAUNJHQwMjYxNjkyNjM4NAJfMQQKdG90YWxCb251cwgFDSR0MDI2MTY5MjYzODQCXzIEC2J1cm5BY3Rpb25zCAUNJHQwMjYxNjkyNjM4NAJfMwQJcmFyaXR5SWR4CAUNJHQwMjYxNjkyNjM4NAJfNAQMbmV3UmFyaXR5SWR4AwkAAAIFCXJhcml0eUlkeAUKaWR4UmFyaXR5QwMJAGYCCQCRAwIFEHJhcml0eVRocmVzaG9sZHMFDWlkeFRocmVzaG9sZEMFCnRvdGFsQm9udXMFCmlkeFJhcml0eUMDCQBmAgkAkQMCBRByYXJpdHlUaHJlc2hvbGRzBQ1pZHhUaHJlc2hvbGRVBQp0b3RhbEJvbnVzBQppZHhSYXJpdHlVCQACAQkArAICCQCsAgICOllvdSBjYW4gYWR2YW5jZSBvbmx5IG9uZSBsZXZlbCBvZiByYXJpdHksIG1heCB0b3RhbCBib251cyAJAKQDAQkAkQMCBRByYXJpdHlUaHJlc2hvbGRzBQ1pZHhUaHJlc2hvbGRVAgElAwkAAAIFCXJhcml0eUlkeAUKaWR4UmFyaXR5VQMJAGYCCQCRAwIFEHJhcml0eVRocmVzaG9sZHMFDWlkeFRocmVzaG9sZFUFCnRvdGFsQm9udXMFCmlkeFJhcml0eVUDCQBmAgkAkQMCBRByYXJpdHlUaHJlc2hvbGRzBQ1pZHhUaHJlc2hvbGRMBQp0b3RhbEJvbnVzBQppZHhSYXJpdHlMCQACAQkArAICCQCsAgICOllvdSBjYW4gYWR2YW5jZSBvbmx5IG9uZSBsZXZlbCBvZiByYXJpdHksIG1heCB0b3RhbCBib251cyAJAKQDAQkAkQMCBRByYXJpdHlUaHJlc2hvbGRzBQ1pZHhUaHJlc2hvbGRMAgElAwkAAAIFCXJhcml0eUlkeAUKaWR4UmFyaXR5TAMJAGYCCQCRAwIFEHJhcml0eVRocmVzaG9sZHMFDWlkeFRocmVzaG9sZEwFCnRvdGFsQm9udXMFCmlkeFJhcml0eUwFCmlkeFJhcml0eUUDCQAAAgUJcmFyaXR5SWR4BQppZHhSYXJpdHlFBQppZHhSYXJpdHlFAwkAAAIFCXJhcml0eUlkeAUKaWR4UmFyaXR5UAkAAgECJllvdSBjYW4ndCBleGNoYW5nZSBORlRzIG9mIHRoaXMgcmFyaXR5CQACAQIOVW5rbm93biByYXJpdHkECW1pbldsZ0ZlZQkAawMFCnRvdGFsQm9udXMAZAkBC2dldFdsZ1ByaWNlAQAABAZjaGFuZ2UJAGUCBQZ3bGdGZWUFCW1pbldsZ0ZlZQQHZm9yVGVhbQkAaQIFCW1pbldsZ0ZlZQACBAl3bGdSZW1haW4JAQVhc0ludAEJAPwHBAULd2xnQ29udHJhY3QCCmJ1cm5XbGdvbGQJAMwIAgkAZQIFCW1pbldsZ0ZlZQUHZm9yVGVhbQUDbmlsBQNuaWwDCQBmAgAABQZjaGFuZ2UJAAIBCQCsAgIJAKwCAgITWW91IG5lZWQgdG8gYXR0YWNoIAkBCmZpeGVkUG9pbnQCBQltaW5XbGdGZWUACAIOIFdMR09MRCBhcyBmZWUEDWNoYW5nZUFjdGlvbnMDCQBmAgUGY2hhbmdlAAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBQZjaGFuZ2UFCndsZ0Fzc2V0SWQFA25pbAUDbmlsBA0kdDAyNzkxODI4MDc5CQEOaXNzdWVOZnRDdXN0b20IBQ5pZHhOYW1lUGlja2F4ZQUMbmV3UmFyaXR5SWR4BQppZHhDb2xsRGlnBQxuZXdSYXJpdHlJZHgFCnRvdGFsQm9udXMFD2lkeERlc2NyUGlja2F4ZQUOaWR4Qm9udXNUeXBlRnAIBQFpBmNhbGxlcgQPaXNzdWVOZnRBY3Rpb25zCAUNJHQwMjc5MTgyODA3OQJfMQQKbmZ0QXNzZXRJZAgFDSR0MDI3OTE4MjgwNzkCXzIEBmJ1cm5lZAkAkAMBBQtidXJuQWN0aW9ucwQSYnVybkNvdW50ZXJBY3Rpb25zAwkAAAIFBmJ1cm5lZAAABQNuaWwJAMwIAgkBDEludGVnZXJFbnRyeQIFEWtleU5mdFRvdGFsQnVybmVkCQBkAgkBC3ZhbHVlT3JFbHNlAgkAnwgBBRFrZXlOZnRUb3RhbEJ1cm5lZAAABQZidXJuZWQFA25pbAkAlAoCCQDNCAIJAM4IAgkAzggCCQDOCAIJAM4IAgUPaXNzdWVOZnRBY3Rpb25zBQtidXJuQWN0aW9ucwUSYnVybkNvdW50ZXJBY3Rpb25zBQ1wcm9sb2dBY3Rpb25zBQ1jaGFuZ2VBY3Rpb25zCQEOU2NyaXB0VHJhbnNmZXIDCQERQGV4dHJOYXRpdmUoMTA2MikBCQERQGV4dHJOYXRpdmUoMTA1MykCBQt3bGdDb250cmFjdAULdGVhbUFkZHJLZXkFB2ZvclRlYW0FCndsZ0Fzc2V0SWQJAJQKAgUKbmZ0QXNzZXRJZAUJd2xnUmVtYWluAWkBDG9wZW5OZnRDaGVzdAADCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAkAlAoCBQNuaWwAAABHCu1C", "height": 3393031, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: CMpXSrPGqpkQoKJdzK7MYiNCSt36qmxUuv5ZZ1SRskHE Next: BmBgAqaGJ7Qbyxex4qya2KRicGSDoRUa3snWTH9ht4NK Diff:
OldNewDifferences
104104 func J (I) = ("curWeekTxIdByUser_" + I)
105105
106106
107-let K = "acresIssuedAmount"
107+let K = "wlg_assetId"
108108
109-let L = "acresAssetId"
109+let L = valueOrErrorMessage(getBinary(D, K), "WLGOLD is not issued yet")
110110
111-let M = valueOrErrorMessage(getBinary(C, L), "ACRES is not issued yet")
111+let M = "acresIssuedAmount"
112112
113-func N (I) = ("acresStakedTimeByUser_" + I)
113+let N = "acresAssetId"
114+
115+let O = valueOrErrorMessage(getBinary(C, N), "ACRES is not issued yet")
116+
117+func P (I) = ("acresStakedTimeByUser_" + I)
114118
115119
116-func O (P) = ("stakedLandsByOwner_" + P)
120+func Q (R) = ("stakedLandsByOwner_" + R)
117121
118122
119-func Q (P) = ("stakedDuckByOwner_" + P)
123+func S (R) = ("stakedDuckByOwner_" + R)
120124
121125
122-func R (S,I) = ((("st_" + S) + "_") + I)
126+func T (U,I) = ((("st_" + U) + "_") + I)
123127
124128
125-func T (P) = ("stakedNFTsByOwner_" + P)
129+func V (R) = ("stakedNFTsByOwner_" + R)
126130
127131
128-func U (V) = {
129- let j = V
132+func W (X) = {
133+ let j = X
130134 if ($isInstanceOf(j, "Int"))
131135 then {
132- let W = j
133- W
136+ let Y = j
137+ Y
134138 }
135139 else throw("fail to cast into Int")
136140 }
137141
138142
139-func X (Y) = {
140- let j = Y
143+func Z (aa) = {
144+ let j = aa
141145 if ($isInstanceOf(j, "(Int, Int, Int, Int, Int)"))
142146 then {
143- let Z = j
144- Z
147+ let ab = j
148+ ab
145149 }
146150 else throw("fail to cast into (Int, Int, Int, Int, Int)")
147151 }
148152
149153
150-func aa (Y) = {
151- let j = Y
154+func ac (aa) = {
155+ let j = aa
152156 if ($isInstanceOf(j, "(Int, Int, Int, Int)"))
153157 then {
154- let Z = j
155- Z
158+ let ab = j
159+ ab
156160 }
157161 else throw("fail to cast into (Int, Int, Int, Int)")
158162 }
159163
160164
161-func ab (Y) = {
162- let j = Y
165+func ad (aa) = {
166+ let j = aa
163167 if ($isInstanceOf(j, "(Int, Int, Int)"))
164168 then {
165- let Z = j
166- Z
169+ let ab = j
170+ ab
167171 }
168172 else throw("fail to cast into (Int, Int, Int)")
169173 }
170174
171175
172-func ac (Y) = {
173- let j = Y
176+func ae (aa) = {
177+ let j = aa
174178 if ($isInstanceOf(j, "(Int, Int)"))
175179 then {
176- let Z = j
177- Z
180+ let ab = j
181+ ab
178182 }
179183 else throw("fail to cast into (Int, Int)")
180184 }
181185
182186
183-func ad (Y,ae) = {
184- let af = pow(10, 0, ae, 0, 0, DOWN)
185- let ag = toString((Y % af))
186- let ah = drop(toString(af), (1 + size(ag)))
187- (((toString((Y / af)) + ".") + ah) + ag)
187+func af (aa,ag) = {
188+ let ah = pow(10, 0, ag, 0, 0, DOWN)
189+ let ai = toString((aa % ah))
190+ let aj = drop(toString(ah), (1 + size(ai)))
191+ (((toString((aa / ah)) + ".") + aj) + ai)
188192 }
189193
190194
191-let ai = 1000000
195+let ak = 1000000
192196
193-let aj = 100000000
197+let al = 100000000
194198
195-let ak = "wlg_issuedAmount"
199+let am = "wlg_issuedAmount"
196200
197-let al = "zbill_issuedAmount"
201+let an = "zbill_issuedAmount"
198202
199-func am (I) = ("acresStakedAmountByUser_" + I)
203+func ao (I) = ("acresStakedAmountByUser_" + I)
200204
201205
202-func an (I) = ("farmingPowerByUser_" + I)
206+func ap (I) = ("farmingPowerByUser_" + I)
203207
204208
205-let ao = "acresStakedAmountTotal"
209+let aq = "acresStakedAmountTotal"
206210
207-let ap = "totalFarmingPower"
211+let ar = "totalFarmingPower"
208212
209-let aq = 3
213+let as = 3
210214
211-let ar = 1
215+let at = 1
212216
213-let as = 5000
217+let au = 5000
214218
215-let at = 4
219+let av = 4
216220
217-let au = "nftTotalIssued"
221+let aw = "nftTotalIssued"
218222
219-let av = "nftTotalBurned"
223+let ax = "nftTotalBurned"
220224
221-let aw = "WlNftTotalStaked"
225+let ay = "WlNftTotalStaked"
222226
223-let ax = "ArkNftTotalStaked"
227+let az = "ArkNftTotalStaked"
224228
225-func ay (S) = ("nftNumberByAssetId_" + S)
229+func aA (U) = ("nftNumberByAssetId_" + U)
226230
227231
228-func az (I) = ("userWlNftNumber_" + I)
232+func aB (I) = ("userWlNftNumber_" + I)
229233
230234
231-func aA (I) = ("userArkNftNumber_" + I)
235+func aC (I) = ("userArkNftNumber_" + I)
232236
233237
234-func aB (I) = ("userFullBonus_" + I)
238+func aD (I) = ("userFullBonus_" + I)
235239
236240
237-let aC = [0, 10, 20, 40, 80, 150, 250, 400, 700, 1000]
241+let aE = [0, 10, 20, 40, 80, 150, 250, 400, 700, 1000]
238242
239-func aD (aE) = {
240- let aF = ((aE + 99999999) / aj)
241- func aG (aH,aI) = if ((aI >= aF))
242- then aH
243- else (aH + 1)
243+func aF (aG) = {
244+ let aH = ((aG + 99999999) / al)
245+ func aI (aJ,aK) = if ((aK >= aH))
246+ then aJ
247+ else (aJ + 1)
244248
245- let aJ = aC
246- let aK = size(aJ)
247- let aL = 0
248- func aM (aN,aO) = if ((aO >= aK))
249- then aN
250- else aG(aN, aJ[aO])
249+ let aL = aE
250+ let aM = size(aL)
251+ let aN = 0
252+ func aO (aP,aQ) = if ((aQ >= aM))
253+ then aP
254+ else aI(aP, aL[aQ])
251255
252- func aP (aN,aO) = if ((aO >= aK))
253- then aN
256+ func aR (aP,aQ) = if ((aQ >= aM))
257+ then aP
254258 else throw("List size exceeds 10")
255259
256- aP(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aL, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
260+ aR(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aN, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
257261 }
258262
259263
260-func aQ (aE) = ((aE * 20) * (aD(aE) + 4))
264+func aS (aG) = ((aG * 20) * (aF(aG) + 4))
261265
262266
263-func aR (aE,aS) = {
264- let aT = aQ(aE)
265- $Tuple2(fraction(aT, (ai + aS), ai), aT)
267+func aT (aG,aU) = {
268+ let aV = aS(aG)
269+ $Tuple2(fraction(aV, (ak + aU), ak), aV)
266270 }
267271
268272
269-func aU (I) = ("lastArbTimeUser_" + I)
273+let aW = "teamAddr"
274+
275+func aX (I) = ("lastArbTimeUser_" + I)
270276
271277
272-let aV = "lastAcresSellTime"
278+let aY = "lastAcresSellTime"
273279
274-let aW = "lastLimitLeft"
280+let aZ = "lastLimitLeft"
275281
276-let aX = ["SHOVEL-P3", "PICKAXE-C1", "PICKAXE-C3", "PICKAXE-C5", "PICKAXE-C10"]
282+let ba = ["Gold shovel", "Pickaxe"]
277283
278-let aY = ["contentShovelP3", "contentPickaxeC1", "contentPickaxeC3", "contentPickaxeC5", "contentPickaxeC10"]
284+let bb = ["Reward for early birds", "Increases FarmPower"]
279285
280-let aZ = ["Gold shovel", "Pickaxe"]
286+let bc = 0
281287
282-let ba = ["Reward for early birds", "Increases FarmPower"]
288+let bd = 1
283289
284-let bb = 0
290+let be = [5, 10, 20]
285291
286-let bc = 1
292+let bf = 0
287293
288-let bd = ["Promo", "Common"]
294+let bg = 1
289295
290-let be = [3, 1, 3, 5, 10]
296+let bh = 2
291297
292-let bf = ["SHOVEL", "PICKAXE"]
293-
294-let bg = 0
295-
296-let bh = 1
297-
298-let bi = ["contentPickaxeC", "contentPickaxeU", "contentPickaxeL", "contentPickaxeE", "contentShovelP"]
298+let bi = ["SHOVEL", "PICKAXE"]
299299
300300 let bj = 0
301301
302-let bk = 4
302+let bk = 1
303303
304-let bl = ["Common", "Uncommon", "Legendary", "Epic", "Promo"]
304+let bl = ["contentPickaxeC", "contentPickaxeU", "contentPickaxeL", "contentPickaxeE", "contentShovelP"]
305305
306306 let bm = 0
307307
308308 let bn = 4
309309
310-let bo = ["Digging tools"]
310+let bo = ["Common", "Uncommon", "Legendary", "Epic", "Promo"]
311311
312312 let bp = 0
313313
314-let bq = ["FarmPower"]
314+let bq = 1
315315
316-let br = 0
316+let br = 2
317317
318-func bs (bt) = if (if ((bt.originCaller != B))
318+let bs = 3
319+
320+let bt = 4
321+
322+let bu = ["Digging tools"]
323+
324+let bv = 0
325+
326+let bw = ["FarmPower"]
327+
328+let bx = 0
329+
330+func by (bz) = if (if ((bz.originCaller != B))
319331 then valueOrElse(getBoolean(G()), false)
320332 else false)
321333 then throw("Contracts are under maintenance")
322334 else {
323- let I = toString(bt.originCaller)
324- let bu = (height / i)
325- let bv = H(I)
326- let bw = getString(bv)
327- let bx = toBase58String(bt.transactionId)
328- let by = ((toString(bu) + "_") + bx)
329- let bz = J(I)
330- if (isDefined(bw))
335+ let I = toString(bz.originCaller)
336+ let bA = (height / i)
337+ let bB = H(I)
338+ let bC = getString(bB)
339+ let bD = toBase58String(bz.transactionId)
340+ let bE = ((toString(bA) + "_") + bD)
341+ let bF = J(I)
342+ if (isDefined(bC))
331343 then {
332- let bA = split(value(bw), "_")
333- if ((bA[0] == toString(bu)))
334- then [StringEntry(bv, by), StringEntry(bz, by)]
335- else if ((bA[0] == toString((bu - 1))))
336- then [StringEntry(bz, by)]
344+ let bG = split(value(bC), "_")
345+ if ((bG[0] == toString(bA)))
346+ then [StringEntry(bB, bE), StringEntry(bF, bE)]
347+ else if ((bG[0] == toString((bA - 1))))
348+ then [StringEntry(bF, bE)]
337349 else {
338- let bB = getStringValue(bz)
339- let bC = split(bB, "_")
340- if ((bC[0] == toString(bu)))
341- then [StringEntry(bz, by)]
342- else [StringEntry(bv, bB), StringEntry(bz, by)]
350+ let bH = getStringValue(bF)
351+ let bI = split(bH, "_")
352+ if ((bI[0] == toString(bA)))
353+ then [StringEntry(bF, bE)]
354+ else [StringEntry(bB, bH), StringEntry(bF, bE)]
343355 }
344356 }
345- else [StringEntry(bv, by), StringEntry(bz, by)]
357+ else [StringEntry(bB, bE), StringEntry(bF, bE)]
346358 }
347359
348360
349-func bD (bE,bF,bG,bH,bI,bJ,bK,bL) = (((((((((((((((((((((((("{\"url\": \"https://waveslands.com\", " + "\"contentKey\": \"") + bE) + "\", ") + "\"number\": ") + toString(bF)) + ", ") + "\"collection\": \"") + bG) + "\", ") + "\"name\": \"") + bH) + "\", ") + "\"description\": \"") + bI) + "\", ") + "\"rare\": \"") + bJ) + "\", ") + "\"bonus\": ") + toString(bK)) + ", ") + "\"bonusType\": \"") + bL) + "\"}")
361+func bJ (bK,bL,bM,bN,bO,bP,bQ,bR) = (((((((((((((((((((((((("{\"url\": \"https://waveslands.com\", " + "\"contentKey\": \"") + bK) + "\", ") + "\"number\": ") + toString(bL)) + ", ") + "\"collection\": \"") + bM) + "\", ") + "\"name\": \"") + bN) + "\", ") + "\"description\": \"") + bO) + "\", ") + "\"rare\": \"") + bP) + "\", ") + "\"bonus\": ") + toString(bQ)) + ", ") + "\"bonusType\": \"") + bR) + "\"}")
350362
351363
352-func bM (bN,bO,bP,bQ,bR,bS,bT,I) = {
353- let bF = valueOrElse(getInteger(au), 0)
354- let bJ = bl[bQ]
355- let bH = (((bf[bN] + "-") + take(bJ, 1)) + toString(bR))
356- let bU = Issue(bH, bD(bi[bO], bF, bo[bP], aZ[bN], ba[bS], bl[bQ], bR, bq[bT]), 1, 0, false)
357- let bV = calculateAssetId(bU)
358- $Tuple2([bU, IntegerEntry(au, (bF + 1)), IntegerEntry(ay(toBase58String(bV)), bF), ScriptTransfer(I, 1, bV)], bV)
364+func bS (bT,bU,bV,bW,bX,bY,bZ,I) = {
365+ let bL = valueOrElse(getInteger(aw), 0)
366+ let bP = bo[bW]
367+ let bN = (((bi[bT] + "-") + take(bP, 1)) + toString(bX))
368+ let ca = Issue(bN, bJ(bl[bU], bL, bu[bV], ba[bT], bb[bY], bo[bW], bX, bw[bZ]), 1, 0, false)
369+ let cb = calculateAssetId(ca)
370+ $Tuple2([ca, IntegerEntry(aw, (bL + 1)), IntegerEntry(aA(toBase58String(cb)), bL), ScriptTransfer(I, 1, cb)], cb)
359371 }
360372
361373
362-func bW (bX,bF) = ((((((((((((((((((((("{\"url\": \"https://waveslands.com\", " + "\"contentKey\": \"") + aY[bX]) + "\", ") + "\"number\": ") + bF) + ", ") + "\"collection\": \"Digging tools") + "\", ") + "\"name\": \"") + aZ[bX]) + "\", ") + "\"description\": \"") + ba[bX]) + "\", ") + "\"rare\": \"") + bd[bX]) + "\", ") + "\"bonus\": ") + toString(be[bX])) + ", ") + "\"bonusType\": \"FarmPower\"}")
363-
364-
365-func bY (bX,I) = if ((bX >= size(aY)))
366- then throw("nftIndex out of bounds")
367- else {
368- let bF = valueOrElse(getInteger(au), 0)
369- let bU = Issue(aX[bX], bW(bX, toString(bF)), 1, 0, false)
370- let bV = calculateAssetId(bU)
371- $Tuple2([bU, IntegerEntry(au, (bF + 1)), IntegerEntry(ay(toBase58String(bV)), bF), ScriptTransfer(I, 1, bV)], bV)
372- }
373-
374-
375-func bZ (ca,p,cb) = if (if ((ca == 0))
376- then (cb == 0)
374+func cc (cd,p,ce) = if (if ((cd == 0))
375+ then (ce == 0)
377376 else false)
378377 then throw("Nothing to do")
379378 else {
380- let cc = invoke(D, "onStakeUnstakeLand", [p], nil)
381- if ((cc == cc))
379+ let cf = invoke(D, "onStakeUnstakeLand", [p], nil)
380+ if ((cf == cf))
382381 then {
383- let cd = lastBlock.timestamp
384- let ce = N(p)
385- let cf = am(p)
386- let cg = valueOrElse(getInteger(cf), 0)
387- if (if ((0 > ca))
388- then (0 > (cg + ca))
382+ let cg = lastBlock.timestamp
383+ let ch = P(p)
384+ let ci = ao(p)
385+ let cj = valueOrElse(getInteger(ci), 0)
386+ if (if ((0 > cd))
387+ then (0 > (cj + cd))
389388 else false)
390- then throw(((("You have only " + ad(cg, 8)) + " ACRES staked, tried to unstake ") + ad(-(ca), 8)))
389+ then throw(((("You have only " + af(cj, 8)) + " ACRES staked, tried to unstake ") + af(-(cd), 8)))
391390 else {
392- let ch = (cg + ca)
393- let ci = valueOrElse(getInteger(ao), 0)
394- let cj = an(p)
395- let ck = valueOrElse(getInteger(cj), 0)
396- let cl = aB(p)
397- let cm = valueOrElse(getInteger(C, cl), 0)
398- if (if ((0 > cb))
399- then (0 > (cm + cb))
391+ let ck = (cj + cd)
392+ let cl = valueOrElse(getInteger(aq), 0)
393+ let cm = ap(p)
394+ let cn = valueOrElse(getInteger(cm), 0)
395+ let co = aD(p)
396+ let cp = valueOrElse(getInteger(C, co), 0)
397+ if (if ((0 > ce))
398+ then (0 > (cp + ce))
400399 else false)
401- then throw((((("You have only " + ad(cm, 4)) + "% bonus, and tried to unstake ") + ad(-(cb), 4)) + "%"))
400+ then throw((((("You have only " + af(cp, 4)) + "% bonus, and tried to unstake ") + af(-(ce), 4)) + "%"))
402401 else {
403- let cn = aR(ch, (cm + cb))
404- let co = cn._1
405- let cp = cn._2
406- let cq = valueOrElse(getInteger(ap), 0)
407- let cr = if ((ca == 0))
402+ let cq = aT(ck, (cp + ce))
403+ let cr = cq._1
404+ let cs = cq._2
405+ let ct = valueOrElse(getInteger(ar), 0)
406+ let cu = if ((cd == 0))
408407 then nil
409- else [IntegerEntry(cf, ch), IntegerEntry(ao, (ci + ca))]
410- $Tuple2(((((cr :+ IntegerEntry(ce, lastBlock.timestamp)) :+ IntegerEntry(cj, co)) :+ IntegerEntry(ap, ((cq + co) - ck))) :+ IntegerEntry(cl, (cm + cb))), cc)
408+ else [IntegerEntry(ci, ck), IntegerEntry(aq, (cl + cd))]
409+ $Tuple2(((((cu :+ IntegerEntry(ch, lastBlock.timestamp)) :+ IntegerEntry(cm, cr)) :+ IntegerEntry(ar, ((ct + cr) - cn))) :+ IntegerEntry(co, (cp + ce))), cf)
411410 }
412411 }
413412 }
415414 }
416415
417416
418-func cs (ct) = {
419- let cu = valueOrErrorMessage(getInteger(D, ak), "WLGOLD is not issued yet")
420- let cv = assetBalance(D, k)
421- let cw = (assetBalance(C, k) - ct)
422- let cx = (assetBalance(E, k) + valueOrElse(getInteger(E, al), 0))
423- let cy = ((cw + cv) + cx)
424- fraction(cy, d, cu)
417+func cv (cw) = {
418+ let cx = valueOrErrorMessage(getInteger(D, am), "WLGOLD is not issued yet")
419+ let cy = assetBalance(D, k)
420+ let cz = (assetBalance(C, k) - cw)
421+ let cA = (assetBalance(E, k) + valueOrElse(getInteger(E, an), 0))
422+ let cB = ((cz + cy) + cA)
423+ fraction(cB, d, cx)
425424 }
426425
427426
428-func cz () = {
429- let cv = assetBalance(D, k)
430- let cw = assetBalance(this, k)
431- let cx = (assetBalance(E, k) + valueOrElse(getInteger(E, al), 0))
432- let cA = (((cw + cv) + cx) / g)
433- let cB = valueOrElse(getInteger(aW), cA)
434- let cC = valueOrElse(getInteger(aV), 0)
435- let cd = lastBlock.timestamp
436- let cD = (cB + fraction(cA, (cd - cC), e))
437- let cE = min([cD, cA])
438- $Tuple2(IntegerEntry(aV, cd), cE)
427+func cC () = {
428+ let cy = assetBalance(D, k)
429+ let cz = assetBalance(this, k)
430+ let cA = (assetBalance(E, k) + valueOrElse(getInteger(E, an), 0))
431+ let cD = (((cz + cy) + cA) / g)
432+ let cE = valueOrElse(getInteger(aZ), cD)
433+ let cF = valueOrElse(getInteger(aY), 0)
434+ let cg = lastBlock.timestamp
435+ let cG = (cE + fraction(cD, (cg - cF), e))
436+ let cH = min([cG, cD])
437+ $Tuple2(IntegerEntry(aY, cg), cH)
439438 }
440439
441440
442-let cF = addressFromStringValue("3PJgZ6AK1WVCpdCmEZpesHmaKvrQDdXG5og")
441+let cI = addressFromStringValue("3PJgZ6AK1WVCpdCmEZpesHmaKvrQDdXG5og")
443442
444-let cG = valueOrElse(getString(cF, "static_incubatorAddress"), "")
443+let cJ = valueOrElse(getString(cI, "static_incubatorAddress"), "")
445444
446-let cH = valueOrElse(getString(cF, "static_breederAddress"), "")
445+let cK = valueOrElse(getString(cI, "static_breederAddress"), "")
447446
448-let cI = valueOrElse(getString(cF, "static_turtleIncubatorAddress"), "")
447+let cL = valueOrElse(getString(cI, "static_turtleIncubatorAddress"), "")
449448
450-let cJ = valueOrElse(getString(cF, "static_turtleBreederAddress"), "")
449+let cM = valueOrElse(getString(cI, "static_turtleBreederAddress"), "")
451450
452-let cK = valueOrElse(getString(cF, "static_canineIncubatorAddress"), "")
451+let cN = valueOrElse(getString(cI, "static_canineIncubatorAddress"), "")
453452
454-let cL = valueOrElse(getString(cF, "static_canineBreederAddress"), "")
453+let cO = valueOrElse(getString(cI, "static_canineBreederAddress"), "")
455454
456-let cM = valueOrElse(getString(cF, "static_felineIncubatorAddress"), "")
455+let cP = valueOrElse(getString(cI, "static_felineIncubatorAddress"), "")
457456
458-let cN = valueOrElse(getString(cF, "static_felineBreederAddress"), "")
457+let cQ = valueOrElse(getString(cI, "static_felineBreederAddress"), "")
459458
460-let cO = valueOrElse(getString(cF, "static_mutantIncubatorAddress"), "")
459+let cR = valueOrElse(getString(cI, "static_mutantIncubatorAddress"), "")
461460
462-func cP (cQ) = {
463- let cR = toString(cQ.issuer)
461+func cS (cT) = {
462+ let cU = toString(cT.issuer)
464463 if (if (if (if (if (if (if (if (if (if ((h == base58'2T'))
465- then (cR == n)
464+ then (cU == n)
466465 else false)
467466 then true
468- else (cR == cG))
467+ else (cU == cJ))
469468 then true
470- else (cR == cH))
469+ else (cU == cK))
471470 then true
472- else (cR == cI))
471+ else (cU == cL))
473472 then true
474- else (cR == cJ))
473+ else (cU == cM))
475474 then true
476- else (cR == cK))
475+ else (cU == cN))
477476 then true
478- else (cR == cL))
477+ else (cU == cO))
479478 then true
480- else (cR == cM))
479+ else (cU == cP))
481480 then true
482- else (cR == cN))
483- then cQ.name
484- else if ((cR == cO))
485- then cQ.description
481+ else (cU == cQ))
482+ then cT.name
483+ else if ((cU == cR))
484+ then cT.description
486485 else ""
487486 }
488487
489488
490-func cS (bI) = if (!(contains(bI, "\"bonusType\": \"FarmPower\"")))
491- then throw(("NFT is not supported: " + bI))
489+func cV (bO) = if (!(contains(bO, "\"bonusType\": \"FarmPower\"")))
490+ then throw(("NFT is not supported: " + bO))
492491 else {
493- let cT = split_4C(split_4C(bI, "\"bonus\":")[1], ",")[0]
494- parseIntValue(drop(cT, (valueOrElse(lastIndexOf(cT, " "), -1) + 1)))
492+ let cW = split_4C(split_4C(bO, "\"bonus\":")[1], ",")[0]
493+ parseIntValue(drop(cW, (valueOrElse(lastIndexOf(cW, " "), -1) + 1)))
495494 }
496495
497496
498-func cU (I,cV,aS,cW,cX,cY) = {
499- let cZ = valueOrElse(getInteger(cW), 0)
500- if ((cZ >= cY))
501- then throw((("You can stake max " + toString(cY)) + " of such NFTs"))
497+func cX (bO) = if (!(contains(bO, "\"rare\"")))
498+ then throw(("NFT is not supported: " + bO))
499+ else {
500+ let cY = split_4C(split_4C(split_4C(bO, "\"rare\"")[1], ",")[0], "\"")[1]
501+ value(indexOf(bo, cY))
502+ }
503+
504+
505+func cZ (I,da,aU,db,dc,dd) = {
506+ let de = valueOrElse(getInteger(db), 0)
507+ if ((de >= dd))
508+ then throw((("You can stake max " + toString(dd)) + " of such NFTs"))
502509 else {
503- let da = bZ(0, I, aS)
504- let db = da._1
505- let dc = da._2
506- $Tuple2((((db :+ IntegerEntry(cW, (cZ + 1))) :+ IntegerEntry(cX, (valueOrElse(getInteger(cX), 0) + 1))) :+ IntegerEntry(R(cV, I), lastBlock.timestamp)), dc)
510+ let df = cc(0, I, aU)
511+ let dg = df._1
512+ let dh = df._2
513+ $Tuple2((((dg :+ IntegerEntry(db, (de + 1))) :+ IntegerEntry(dc, (valueOrElse(getInteger(dc), 0) + 1))) :+ IntegerEntry(T(da, I), lastBlock.timestamp)), dh)
507514 }
508515 }
509516
510517
511-@Callable(bt)
512-func saveLastTx () = if (!(containsElement([D], bt.caller)))
518+@Callable(bz)
519+func saveLastTx () = if (!(containsElement([D], bz.caller)))
513520 then throw("Access denied")
514- else $Tuple2(bs(bt), 42)
521+ else $Tuple2(by(bz), 42)
515522
516523
517524
518-@Callable(bt)
519-func constructorV1 (dd,de) = if ((bt.caller != this))
525+@Callable(bz)
526+func constructorV1 (di,dj) = if ((bz.caller != this))
520527 then throw("Permission denied")
521528 else {
522- let df = addressFromStringValue(de)
523-[IntegerEntry(K, getIntegerValue(df, K)), BinaryEntry(L, getBinaryValue(df, L)), StringEntry(v(), dd), StringEntry(F, de)]
529+ let dk = addressFromStringValue(dj)
530+[IntegerEntry(M, getIntegerValue(dk, M)), BinaryEntry(N, getBinaryValue(dk, N)), StringEntry(v(), di), StringEntry(F, dj)]
524531 }
525532
526533
527534
528-@Callable(bt)
529-func setBlocked (dg) = if ((bt.caller != this))
535+@Callable(bz)
536+func setBlocked (dl) = if ((bz.caller != this))
530537 then throw("permission denied")
531- else [BooleanEntry(G(), dg)]
538+ else [BooleanEntry(G(), dl)]
532539
533540
534541
535-@Callable(bt)
536-func unstakeAcres (dh) = {
537- let di = bs(bt)
538- if ((0 >= dh))
542+@Callable(bz)
543+func unstakeAcres (dm) = {
544+ let dn = by(bz)
545+ if ((0 >= dm))
539546 then throw("Amount should be positive")
540547 else {
541- let p = toString(bt.caller)
542- if ((size(bt.payments) != 0))
548+ let p = toString(bz.caller)
549+ if ((size(bz.payments) != 0))
543550 then throw("No payments required")
544551 else {
545- let dj = (valueOrElse(getInteger(D, aU(p)), 0) + m)
546- if ((dj > lastBlock.timestamp))
547- then throw(("You traded some WLGOLD, cannot unstake until " + toString(dj)))
552+ let do = (valueOrElse(getInteger(D, aX(p)), 0) + m)
553+ if ((do > lastBlock.timestamp))
554+ then throw(("You traded some WLGOLD, cannot unstake until " + toString(do)))
548555 else {
549- let dk = bZ(-(dh), p, 0)
550- let db = dk._1
551- let dc = dk._2
552- $Tuple2(((db :+ ScriptTransfer(bt.caller, dh, M)) ++ di), dc)
556+ let dp = cc(-(dm), p, 0)
557+ let dg = dp._1
558+ let dh = dp._2
559+ $Tuple2(((dg :+ ScriptTransfer(bz.caller, dm, O)) ++ dn), dh)
553560 }
554561 }
555562 }
557564
558565
559566
560-@Callable(bt)
567+@Callable(bz)
561568 func stakeAcres () = {
562- let di = bs(bt)
563- let p = toString(bt.caller)
564- if ((size(bt.payments) != 1))
569+ let dn = by(bz)
570+ let p = toString(bz.caller)
571+ if ((size(bz.payments) != 1))
565572 then throw("exactly 1 payment must be attached")
566573 else {
567- let dl = bt.payments[0]
568- let ca = dl.amount
569- if (if (!(isDefined(dl.assetId)))
574+ let dq = bz.payments[0]
575+ let cd = dq.amount
576+ if (if (!(isDefined(dq.assetId)))
570577 then true
571- else (value(dl.assetId) != M))
578+ else (value(dq.assetId) != O))
572579 then throw("ACRES payments only!")
573580 else {
574- let dm = bZ(ca, p, 0)
575- let db = dm._1
576- let dc = dm._2
577- $Tuple2((db ++ di), dc)
581+ let dr = cc(cd, p, 0)
582+ let dg = dr._1
583+ let dh = dr._2
584+ $Tuple2((dg ++ dn), dh)
578585 }
579586 }
580587 }
581588
582589
583590
584-@Callable(bt)
591+@Callable(bz)
585592 func buyAcres () = {
586- let di = bs(bt)
587- if ((size(bt.payments) != 1))
593+ let dn = by(bz)
594+ if ((size(bz.payments) != 1))
588595 then throw("exactly 1 payment must be attached")
589596 else {
590- let dl = bt.payments[0]
591- let dn = dl.amount
592- if (if (!(isDefined(dl.assetId)))
597+ let dq = bz.payments[0]
598+ let ds = dq.amount
599+ if (if (!(isDefined(dq.assetId)))
593600 then true
594- else (value(dl.assetId) != k))
601+ else (value(dq.assetId) != k))
595602 then throw("USDT payments only!")
596- else if ((b > dn))
597- then throw((("Min payment should be " + ad(b, 6)) + " USDT"))
603+ else if ((b > ds))
604+ then throw((("Min payment should be " + af(b, 6)) + " USDT"))
598605 else {
599- let do = (dn * f)
600- let dp = fraction(dn, d, cs(dn))
601- let dq = addressFromStringValue(getStringValue(F))
602- let dr = invoke(dq, "requestAcresCallback", [do], nil)
603- if ((dr == dr))
606+ let dt = (ds * f)
607+ let du = fraction(ds, d, cv(ds))
608+ let dv = addressFromStringValue(getStringValue(F))
609+ let dw = invoke(dv, "requestAcresCallback", [dt], nil)
610+ if ((dw == dw))
604611 then {
605- let ds = U(invoke(D, "burnWlgold", [dp], nil))
606- $Tuple2(([ScriptTransfer(bt.caller, do, M)] ++ di), ds)
612+ let dx = W(invoke(D, "burnWlgold", [du], nil))
613+ $Tuple2(([ScriptTransfer(bz.caller, dt, O)] ++ dn), dx)
607614 }
608615 else throw("Strict value is not equal to itself.")
609616 }
612619
613620
614621
615-@Callable(bt)
616-func buyAcresREADONLY (dn) = {
617- let do = (dn * f)
618- let dt = fraction(dn, d, cs(dn))
619- $Tuple2(nil, [do, b, do, dt])
622+@Callable(bz)
623+func buyAcresREADONLY (ds) = {
624+ let dt = (ds * f)
625+ let dy = fraction(ds, d, cv(ds))
626+ $Tuple2(nil, [dt, b, dt, dy])
620627 }
621628
622629
623630
624-@Callable(bt)
631+@Callable(bz)
625632 func sellAcres () = {
626- let di = bs(bt)
627- if ((size(bt.payments) != 1))
633+ let dn = by(bz)
634+ if ((size(bz.payments) != 1))
628635 then throw("exactly 1 payment must be attached")
629636 else {
630- let dl = bt.payments[0]
631- let do = dl.amount
632- if (if (!(isDefined(dl.assetId)))
637+ let dq = bz.payments[0]
638+ let dt = dq.amount
639+ if (if (!(isDefined(dq.assetId)))
633640 then true
634- else (value(dl.assetId) != M))
641+ else (value(dq.assetId) != O))
635642 then throw("ACRES payments only!")
636- else if ((c > do))
637- then throw((("Min payment should be " + ad(c, 8)) + " ACRES"))
643+ else if ((c > dt))
644+ then throw((("Min payment should be " + af(c, 8)) + " ACRES"))
638645 else {
639- let I = toString(bt.caller)
640- let du = cz()
641- let dv = du._1
642- let dw = du._2
643- let dx = (dw * f)
644- if ((do > dx))
645- then throw((("You can sell max " + ad(dx, 8)) + " ACRES"))
646+ let I = toString(bz.caller)
647+ let dz = cC()
648+ let dA = dz._1
649+ let dB = dz._2
650+ let dC = (dB * f)
651+ if ((dt > dC))
652+ then throw((("You can sell max " + af(dC, 8)) + " ACRES"))
646653 else {
647- let dn = ((do / f) / 2)
648- $Tuple2(([dv, IntegerEntry(aW, (dw - dn)), ScriptTransfer(bt.caller, dn, k)] ++ di), dn)
654+ let ds = ((dt / f) / 2)
655+ $Tuple2(([dA, IntegerEntry(aZ, (dB - ds)), ScriptTransfer(bz.caller, ds, k)] ++ dn), ds)
649656 }
650657 }
651658 }
653660
654661
655662
656-@Callable(bt)
657-func sellAcresREADONLY (p,do) = {
658- let dy = cz()
659- let dv = dy._1
660- let dw = dy._2
661- let dn = ((do / f) / 2)
662- $Tuple2(nil, [dn, c, (dw * f), 0])
663+@Callable(bz)
664+func sellAcresREADONLY (p,dt) = {
665+ let dD = cC()
666+ let dA = dD._1
667+ let dB = dD._2
668+ let ds = ((dt / f) / 2)
669+ $Tuple2(nil, [ds, c, (dB * f), 0])
663670 }
664671
665672
666673
667-@Callable(bt)
668-func convertOldStakes () = if ((bt.caller != this))
674+@Callable(bz)
675+func convertOldStakes () = if ((bz.caller != this))
669676 then throw("Temporarily disabled")
670677 else {
671- let p = toString(bt.caller)
672- if ((size(bt.payments) != 0))
678+ let p = toString(bz.caller)
679+ if ((size(bz.payments) != 0))
673680 then throw("No payments required")
674681 else {
675- let dq = addressFromStringValue(getStringValue(F))
676- let dh = valueOrElse(getInteger(dq, am(p)), 0)
677- let dz = if ((dh > 0))
678- then ac(invoke(dq, "unstakeAcresCallback", [dh, p], nil))
682+ let dv = addressFromStringValue(getStringValue(F))
683+ let dm = valueOrElse(getInteger(dv, ao(p)), 0)
684+ let dE = if ((dm > 0))
685+ then ae(invoke(dv, "unstakeAcresCallback", [dm, p], nil))
679686 else $Tuple2(0, 0)
680- let dA = addressFromStringValue(n)
681- let dB = getString(dA, O(p))
682- let dC = if (isDefined(dB))
687+ let dF = addressFromStringValue(n)
688+ let dG = getString(dF, Q(p))
689+ let dH = if (isDefined(dG))
683690 then {
684- let dD = split_51C(value(dB), "_")
685- func dE (aH,dF) = if ((dF == ""))
691+ let dI = split_51C(value(dG), "_")
692+ func dJ (aJ,dK) = if ((dK == ""))
686693 then throw("landAssetId is required")
687694 else {
688- let dG = X(invoke(dA, "unstakeLandCallback", [dF, p], nil))
689- $Tuple4((aH._1 + dG._1), (aH._2 + dG._2), (aH._3 + dG._3), (aH._4 + dG._4))
695+ let dL = Z(invoke(dF, "unstakeLandCallback", [dK, p], nil))
696+ $Tuple4((aJ._1 + dL._1), (aJ._2 + dL._2), (aJ._3 + dL._3), (aJ._4 + dL._4))
690697 }
691698
692- let dH = {
693- let aJ = dD
694- let aK = size(aJ)
695- let aL = $Tuple4(0, 0, 0, 0)
696- func aM (aN,aO) = if ((aO >= aK))
697- then aN
698- else dE(aN, aJ[aO])
699+ let dM = {
700+ let aL = dI
701+ let aM = size(aL)
702+ let aN = $Tuple4(0, 0, 0, 0)
703+ func aO (aP,aQ) = if ((aQ >= aM))
704+ then aP
705+ else dJ(aP, aL[aQ])
699706
700- func aP (aN,aO) = if ((aO >= aK))
701- then aN
707+ func aR (aP,aQ) = if ((aQ >= aM))
708+ then aP
702709 else throw("List size exceeds 100")
703710
704- aP(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aL, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100)
711+ aR(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aN, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100)
705712 }
706- let dI = invoke(dA, "unstakeLandsFinalizeCallback", [p], nil)
707- if ((dI == dI))
713+ let dN = invoke(dF, "unstakeLandsFinalizeCallback", [p], nil)
714+ if ((dN == dN))
708715 then {
709- let dr = invoke(dq, "requestAcresCallback", [(((dH._1 + dH._2) + dH._3) + dH._4)], nil)
710- if ((dr == dr))
716+ let dw = invoke(dv, "requestAcresCallback", [(((dM._1 + dM._2) + dM._3) + dM._4)], nil)
717+ if ((dw == dw))
711718 then {
712- let dJ = bM(bg, bk, bp, bn, 3, bb, br, bt.caller)
713- let dK = dJ._1
714- let bV = dJ._2
715- $Tuple5(dH._1, dH._2, dH._3, dH._4, dK)
719+ let dO = bS(bj, bn, bv, bt, 3, bc, bx, bz.caller)
720+ let dP = dO._1
721+ let cb = dO._2
722+ $Tuple5(dM._1, dM._2, dM._3, dM._4, dP)
716723 }
717724 else throw("Strict value is not equal to itself.")
718725 }
719726 else throw("Strict value is not equal to itself.")
720727 }
721728 else $Tuple5(0, 0, 0, 0, nil)
722- let dL = valueOrElse(getString(dA, Q(p)), "")
723- let dM = if ((dL != ""))
724- then ab(invoke(dA, "unstakeDuckCallback", [dL, p], nil))
729+ let dQ = valueOrElse(getString(dF, S(p)), "")
730+ let dR = if ((dQ != ""))
731+ then ad(invoke(dF, "unstakeDuckCallback", [dQ, p], nil))
725732 else $Tuple3(0, 0, 0)
726- let dN = bZ((((((((dz._1 + dC._1) + dC._2) + dC._3) + dC._4) + dM._1) + dM._2) + dM._3), p, 0)
727- $Tuple2((dC._5 ++ dN._1), dN._2)
733+ let dS = cc((((((((dE._1 + dH._1) + dH._2) + dH._3) + dH._4) + dR._1) + dR._2) + dR._3), p, 0)
734+ $Tuple2((dH._5 ++ dS._1), dS._2)
728735 }
729736 }
730737
731738
732739
733-@Callable(bt)
740+@Callable(bz)
734741 func unstakeLandsREADONLY (p) = {
735- let dA = addressFromStringValue(n)
736- let dB = getString(dA, O(p))
737- let dC = if (isDefined(dB))
742+ let dF = addressFromStringValue(n)
743+ let dG = getString(dF, Q(p))
744+ let dH = if (isDefined(dG))
738745 then {
739- let dD = split_51C(value(dB), "_")
740- func dE (aH,dF) = if ((dF == ""))
746+ let dI = split_51C(value(dG), "_")
747+ func dJ (aJ,dK) = if ((dK == ""))
741748 then throw("landAssetId is required")
742749 else {
743- let dG = aa(invoke(dA, "unstakeLandREADONLY", [dF, p], nil))
744- $Tuple4((aH._1 + dG._1), (aH._2 + dG._2), (aH._3 + dG._3), (aH._4 + dG._4))
750+ let dL = ac(invoke(dF, "unstakeLandREADONLY", [dK, p], nil))
751+ $Tuple4((aJ._1 + dL._1), (aJ._2 + dL._2), (aJ._3 + dL._3), (aJ._4 + dL._4))
745752 }
746753
747- let aJ = dD
748- let aK = size(aJ)
749- let aL = $Tuple4(0, 0, 0, 0)
750- func aM (aN,aO) = if ((aO >= aK))
751- then aN
752- else dE(aN, aJ[aO])
754+ let aL = dI
755+ let aM = size(aL)
756+ let aN = $Tuple4(0, 0, 0, 0)
757+ func aO (aP,aQ) = if ((aQ >= aM))
758+ then aP
759+ else dJ(aP, aL[aQ])
753760
754- func aP (aN,aO) = if ((aO >= aK))
755- then aN
761+ func aR (aP,aQ) = if ((aQ >= aM))
762+ then aP
756763 else throw("List size exceeds 100")
757764
758- aP(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aL, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100)
765+ aR(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aN, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100)
759766 }
760767 else $Tuple4(0, 0, 0, 0)
761- $Tuple2(nil, dC)
768+ $Tuple2(nil, dH)
762769 }
763770
764771
765772
766-@Callable(bt)
767-func stakeAcresCallback (I) = if ((bt.caller != addressFromStringValue(n)))
773+@Callable(bz)
774+func stakeAcresCallback (I) = if ((bz.caller != addressFromStringValue(n)))
768775 then throw("Permission denied")
769- else bZ(bt.payments[0].amount, I, 0)
776+ else cc(bz.payments[0].amount, I, 0)
770777
771778
772779
773-@Callable(bt)
774-func simulateStakeAcresREADONLY (p,dO) = {
775- let cf = am(p)
776- let ch = (valueOrElse(getInteger(cf), 0) + dO)
777- let ci = valueOrElse(getInteger(ao), 0)
778- let cj = an(p)
779- let ck = valueOrElse(getInteger(cj), 0)
780- let dP = valueOrElse(getInteger(C, aB(p)), 0)
781- let dQ = aR(ch, dP)
782- let co = dQ._1
783- let cp = dQ._2
784- let cq = valueOrElse(getInteger(ap), 0)
785- let dR = ((cq + co) - ck)
786- $Tuple2(nil, [ck, co, cq, dR])
780+@Callable(bz)
781+func simulateStakeAcresREADONLY (p,dT) = {
782+ let ci = ao(p)
783+ let ck = (valueOrElse(getInteger(ci), 0) + dT)
784+ let cl = valueOrElse(getInteger(aq), 0)
785+ let cm = ap(p)
786+ let cn = valueOrElse(getInteger(cm), 0)
787+ let dU = valueOrElse(getInteger(C, aD(p)), 0)
788+ let dV = aT(ck, dU)
789+ let cr = dV._1
790+ let cs = dV._2
791+ let ct = valueOrElse(getInteger(ar), 0)
792+ let dW = ((ct + cr) - cn)
793+ $Tuple2(nil, [cn, cr, ct, dW])
787794 }
788795
789796
790797
791-@Callable(bt)
792-func issuePickC1 (dS) = if ((bt.caller != D))
798+@Callable(bz)
799+func issuePickC1 (dX) = if ((bz.caller != D))
793800 then throw("Permission denied")
794- else bM(bh, bj, bp, bm, 1, bc, br, addressFromStringValue(dS))
801+ else bS(bk, bm, bv, bp, 1, bd, bx, addressFromStringValue(dX))
795802
796803
797804
798-@Callable(bt)
805+@Callable(bz)
799806 func stakeNFT () = {
800- let di = bs(bt)
801- if ((size(bt.payments) != 1))
807+ let dn = by(bz)
808+ if ((size(bz.payments) != 1))
802809 then throw("Exactly one payment required")
803810 else {
804- let dl = value(bt.payments[0])
805- if ((dl.amount != 1))
811+ let dq = value(bz.payments[0])
812+ if ((dq.amount != 1))
806813 then throw("NFT token should be attached as payment")
807814 else {
808- let S = value(dl.assetId)
809- let dT = value(assetInfo(S))
810- let cV = toBase58String(S)
811- let I = toString(bt.caller)
812- let dU = T(I)
813- let dV = getString(dU)
814- let dW = if (isDefined(dV))
815- then split_4C(value(dV), "_")
815+ let U = value(dq.assetId)
816+ let dY = value(assetInfo(U))
817+ let da = toBase58String(U)
818+ let I = toString(bz.caller)
819+ let dZ = V(I)
820+ let ea = getString(dZ)
821+ let eb = if (isDefined(ea))
822+ then split_4C(value(ea), "_")
816823 else nil
817- if (containsElement(dW, cV))
818- then throw(("Your staked NFTs already contain " + cV))
819- else if ((size(dW) >= at))
820- then throw((("Your already staked max (" + toString(at)) + ") NFTs"))
824+ if (containsElement(eb, da))
825+ then throw(("Your staked NFTs already contain " + da))
826+ else if ((size(eb) >= av))
827+ then throw((("Your already staked max (" + toString(av)) + ") NFTs"))
821828 else {
822- let dX = StringEntry(dU, makeString_2C((dW :+ cV), "_"))
823- if ((dT.issuer == this))
829+ let ec = StringEntry(dZ, makeString_2C((eb :+ da), "_"))
830+ if ((dY.issuer == this))
824831 then {
825- let dY = cU(I, cV, (cS(value(dT.description)) * 10000), az(I), aw, aq)
826- let db = dY._1
827- let dc = dY._2
828- $Tuple2(((di ++ db) :+ dX), dc)
832+ let ed = cZ(I, da, (cV(value(dY.description)) * 10000), aB(I), ay, as)
833+ let dg = ed._1
834+ let dh = ed._2
835+ $Tuple2(((dn ++ dg) :+ ec), dh)
829836 }
830- else if ((cP(dT) == ""))
837+ else if ((cS(dY) == ""))
831838 then throw("Only WavesLands and Arkimals NFT tokens are accepted")
832839 else {
833- let dZ = cU(I, cV, as, aA(I), ax, ar)
834- let db = dZ._1
835- let dc = dZ._2
836- $Tuple2(((di ++ db) :+ dX), dc)
840+ let ee = cZ(I, da, au, aC(I), az, at)
841+ let dg = ee._1
842+ let dh = ee._2
843+ $Tuple2(((dn ++ dg) :+ ec), dh)
837844 }
838845 }
839846 }
842849
843850
844851
845-@Callable(bt)
846-func unstakeNFT (cV) = {
847- let di = bs(bt)
848- if ((size(bt.payments) != 0))
852+@Callable(bz)
853+func unstakeNFT (da) = {
854+ let dn = by(bz)
855+ if ((size(bz.payments) != 0))
849856 then throw("No payments required")
850857 else {
851- let S = fromBase58String(cV)
852- let I = toString(bt.caller)
853- let dT = value(assetInfo(S))
854- let ce = R(cV, I)
855- if (!(isDefined(getInteger(ce))))
856- then throw((("NFT " + dT.name) + " is not staked by you"))
858+ let U = fromBase58String(da)
859+ let I = toString(bz.caller)
860+ let dY = value(assetInfo(U))
861+ let ch = T(da, I)
862+ if (!(isDefined(getInteger(ch))))
863+ then throw((("NFT " + dY.name) + " is not staked by you"))
857864 else {
858- let dU = T(I)
859- let dW = split_4C(valueOrElse(getString(dU), ""), "_")
860- let A = indexOf(dW, cV)
865+ let dZ = V(I)
866+ let eb = split_4C(valueOrElse(getString(dZ), ""), "_")
867+ let A = indexOf(eb, da)
861868 if (!(isDefined(A)))
862- then throw(("Your staked NFTs don't contain " + cV))
869+ then throw(("Your staked NFTs don't contain " + da))
863870 else {
864- let dX = if ((size(dW) > 1))
865- then StringEntry(dU, makeString_2C(removeByIndex(dW, value(A)), "_"))
866- else DeleteEntry(dU)
867- let ea = (dT.issuer == this)
868- if (ea)
871+ let ec = if ((size(eb) > 1))
872+ then StringEntry(dZ, makeString_2C(removeByIndex(eb, value(A)), "_"))
873+ else DeleteEntry(dZ)
874+ let ef = (dY.issuer == this)
875+ if (ef)
869876 then {
870- let eb = valueOrElse(getInteger(az(I)), 0)
871- let ec = (cS(value(dT.description)) * 10000)
872- let ed = bZ(0, I, -(ec))
873- let db = ed._1
874- let dc = ed._2
875- $Tuple2(((((((db :+ dX) :+ IntegerEntry(az(I), (eb - 1))) :+ IntegerEntry(aw, max([0, (valueOrElse(getInteger(aw), 0) - 1)]))) :+ DeleteEntry(R(toBase58String(S), I))) :+ ScriptTransfer(bt.caller, 1, S)) ++ di), dc)
877+ let eg = valueOrElse(getInteger(aB(I)), 0)
878+ let eh = (cV(value(dY.description)) * 10000)
879+ let ei = cc(0, I, -(eh))
880+ let dg = ei._1
881+ let dh = ei._2
882+ $Tuple2(((((((dg :+ ec) :+ IntegerEntry(aB(I), (eg - 1))) :+ IntegerEntry(ay, max([0, (valueOrElse(getInteger(ay), 0) - 1)]))) :+ DeleteEntry(T(toBase58String(U), I))) :+ ScriptTransfer(bz.caller, 1, U)) ++ dn), dh)
876883 }
877884 else {
878- let ee = cP(dT)
879- if ((ee == ""))
885+ let ej = cS(dY)
886+ if ((ej == ""))
880887 then throw("Only WavesLands and Arkimals NFT tokens are accepted")
881888 else {
882- let ef = valueOrElse(getInteger(aA(I)), 0)
883- let eg = bZ(0, I, -(as))
884- let db = eg._1
885- let dc = eg._2
886- $Tuple2((((((db :+ dX) :+ IntegerEntry(aA(I), (ef - 1))) :+ DeleteEntry(R(toBase58String(S), I))) :+ ScriptTransfer(bt.caller, 1, S)) ++ di), dc)
889+ let ek = valueOrElse(getInteger(aC(I)), 0)
890+ let el = cc(0, I, -(au))
891+ let dg = el._1
892+ let dh = el._2
893+ $Tuple2((((((dg :+ ec) :+ IntegerEntry(aC(I), (ek - 1))) :+ DeleteEntry(T(toBase58String(U), I))) :+ ScriptTransfer(bz.caller, 1, U)) ++ dn), dh)
887894 }
888895 }
889896 }
893900
894901
895902
896-@Callable(bt)
897-func exchangeNFTs () = if ((bt.caller != this))
903+@Callable(bz)
904+func exchangeNFTs () = if ((bz.caller != this))
898905 then throw("Temporarily disabled")
899906 else {
900- let di = bs(bt)
901- if ((3 > size(bt.payments)))
902- then throw("Min one USDT and 2 NFT payments allowed")
903- else if ((size(bt.payments) > 6))
904- then throw("Max one USDT and 5 NFT payments allowed")
907+ let dn = by(bz)
908+ if ((3 > size(bz.payments)))
909+ then throw("Min one WLGOLD and 2 NFT payments allowed")
910+ else if ((size(bz.payments) > 6))
911+ then throw("Max one WLGOLD and 5 NFT payments allowed")
905912 else {
906- let I = toString(bt.caller)
907- func eh (aH,dl) = {
908- let S = valueOrErrorMessage(dl.assetId, "WAVES payments not allowed")
909- if ((S == k))
910- then $Tuple3((aH._1 + dl.amount), aH._2, aH._3)
913+ let I = toString(bz.caller)
914+ func em (aJ,dq) = {
915+ let U = valueOrErrorMessage(dq.assetId, "WAVES payments not allowed")
916+ if ((U == L))
917+ then $Tuple3((aJ._1 + dq.amount), aJ._2, aJ._3)
911918 else {
912- let dT = value(assetInfo(S))
913- if ((dT.issuer != this))
919+ let dY = value(assetInfo(U))
920+ if ((dY.issuer != this))
914921 then throw("Only WL-issued NFTs allowed")
915922 else {
916- let bR = cS(value(dT.description))
917- $Tuple3(aH._1, (aH._2 + bR), (aH._3 :+ Burn(S, 1)))
923+ let en = cX(value(dY.description))
924+ if (if ((aJ._4 > 0))
925+ then (en != aJ._4)
926+ else false)
927+ then throw("You can exchange only NFTs of the same rarity")
928+ else {
929+ let bX = cV(value(dY.description))
930+ $Tuple4(aJ._1, (aJ._2 + bX), (aJ._3 :+ Burn(U, 1)), en)
931+ }
918932 }
919933 }
920934 }
921935
922- let ei = {
923- let aJ = bt.payments
924- let aK = size(aJ)
925- let aL = $Tuple3(0, 0, nil)
926- func aM (aN,aO) = if ((aO >= aK))
927- then aN
928- else eh(aN, aJ[aO])
936+ let eo = {
937+ let aL = bz.payments
938+ let aM = size(aL)
939+ let aN = $Tuple4(0, 0, nil, -1)
940+ func aO (aP,aQ) = if ((aQ >= aM))
941+ then aP
942+ else em(aP, aL[aQ])
929943
930- func aP (aN,aO) = if ((aO >= aK))
931- then aN
944+ func aR (aP,aQ) = if ((aQ >= aM))
945+ then aP
932946 else throw("List size exceeds 6")
933947
934- aP(aM(aM(aM(aM(aM(aM(aL, 0), 1), 2), 3), 4), 5), 6)
948+ aR(aO(aO(aO(aO(aO(aO(aN, 0), 1), 2), 3), 4), 5), 6)
935949 }
936- let ej = ei._1
937- let ek = ei._2
938- let el = ei._3
939- let bX = if ((ek == 3))
940- then 2
941- else if ((ek == 5))
942- then 3
943- else if ((ek == 10))
944- then 4
945- else throw("Only bonuses of 3%, 5% or 10% are supported")
946- let em = (ej - (ek * b))
947- if ((0 > em))
948- then throw((("You need to attach " + toString(ek)) + " USDT as fee"))
950+ let ep = eo._1
951+ let eq = eo._2
952+ let er = eo._3
953+ let bW = eo._4
954+ let es = if ((bW == bp))
955+ then if ((be[bf] > eq))
956+ then bp
957+ else if ((be[bg] > eq))
958+ then bq
959+ else throw((("You can advance only one level of rarity, max total bonus " + toString(be[bg])) + "%"))
960+ else if ((bW == bq))
961+ then if ((be[bg] > eq))
962+ then bq
963+ else if ((be[bh] > eq))
964+ then br
965+ else throw((("You can advance only one level of rarity, max total bonus " + toString(be[bh])) + "%"))
966+ else if ((bW == br))
967+ then if ((be[bh] > eq))
968+ then br
969+ else bs
970+ else if ((bW == bs))
971+ then bs
972+ else if ((bW == bt))
973+ then throw("You can't exchange NFTs of this rarity")
974+ else throw("Unknown rarity")
975+ let et = fraction(eq, 100, cv(0))
976+ let eu = (ep - et)
977+ let ev = (et / 2)
978+ let dx = W(invoke(D, "burnWlgold", [(et - ev)], nil))
979+ if ((0 > eu))
980+ then throw((("You need to attach " + af(et, 8)) + " WLGOLD as fee"))
949981 else {
950- let en = if ((em > 0))
951- then [ScriptTransfer(bt.caller, em, k)]
982+ let ew = if ((eu > 0))
983+ then [ScriptTransfer(bz.caller, eu, L)]
952984 else nil
953- let eo = bY(bX, bt.caller)
954- let ep = eo._1
955- let bV = eo._2
956- let eq = size(el)
957- let er = if ((eq == 0))
985+ let ex = bS(bk, es, bv, es, eq, bd, bx, bz.caller)
986+ let ey = ex._1
987+ let cb = ex._2
988+ let ez = size(er)
989+ let eA = if ((ez == 0))
958990 then nil
959- else [IntegerEntry(av, (valueOrElse(getInteger(av), 0) + eq))]
960- $Tuple2(((((ep ++ el) ++ er) ++ di) ++ en), bV)
991+ else [IntegerEntry(ax, (valueOrElse(getInteger(ax), 0) + ez))]
992+ $Tuple2((((((ey ++ er) ++ eA) ++ dn) ++ ew) :+ ScriptTransfer(addressFromStringValue(getStringValue(D, aW)), ev, L)), $Tuple2(cb, dx))
961993 }
962994 }
963995 }
964996
965997
966998
967-@Callable(bt)
968-func openNftChest () = if ((bt.caller != this))
999+@Callable(bz)
1000+func openNftChest () = if ((bz.caller != this))
9691001 then throw("Permission denied")
9701002 else $Tuple2(nil, 0)
9711003
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "__"
55
66 let b = 1000000
77
88 let c = 10000000
99
1010 let d = 100000000
1111
1212 let e = 86400000
1313
1414 let f = 10
1515
1616 let g = 100
1717
1818 let h = take(drop(this.bytes, 1), 1)
1919
2020 let i = {
2121 let j = h
2222 if ((base58'2W' == j))
2323 then 10080
2424 else if ((base58'2T' == j))
2525 then 180
2626 else throw("Unknown chain")
2727 }
2828
2929 let k = {
3030 let j = h
3131 if ((base58'2W' == j))
3232 then base58'9wc3LXNA4TEBsXyKtoLE9mrbDD7WMHXvXrCjZvabLAsi'
3333 else if ((base58'2T' == j))
3434 then base58'6mWwf9mZBjVgkC54idpyaZLQfAosD914wT8fGf2iiY63'
3535 else throw("Unknown chain")
3636 }
3737
3838 let l = {
3939 let j = h
4040 if ((base58'2W' == j))
4141 then "3PFwYta8biEz31zpeFe5DJK8wE5trSpQVF8"
4242 else if ((base58'2T' == j))
4343 then "3N7UuYar6264P58FBhVWKPQAh4Yua2hgngv"
4444 else throw("Unknown chain")
4545 }
4646
4747 let m = {
4848 let j = h
4949 if ((base58'2W' == j))
5050 then e
5151 else if ((base58'2T' == j))
5252 then 60000
5353 else throw("Unknown chain")
5454 }
5555
5656 let n = {
5757 let j = h
5858 if ((base58'2W' == j))
5959 then "3PLncXtS1U83D6cQbFD3H8rBHPLgzxSFKZ1"
6060 else if ((base58'2T' == j))
6161 then "3NDCyBG5q85JuaRiigUeEtainyjCQT3XpZm"
6262 else throw("Unknown chain")
6363 }
6464
6565 func o (p,q) = valueOrErrorMessage(getString(p, q), makeString(["mandatory ", toString(p), ".", q, " is not defined"], ""))
6666
6767
6868 let r = 1
6969
7070 let s = 2
7171
7272 let t = 5
7373
7474 func u () = "%s__restConfig"
7575
7676
7777 func v () = "%s__rest2Addr"
7878
7979
8080 func w (x) = split_4C(o(x, u()), a)
8181
8282
8383 func y (z,A) = valueOrErrorMessage(addressFromString(z[A]), ("Rest cfg doesn't contain address at index " + toString(A)))
8484
8585
8686 let B = addressFromStringValue(valueOrElse(getString(this, v()), l))
8787
8888 let z = w(B)
8989
9090 let C = y(z, r)
9191
9292 let D = y(z, s)
9393
9494 let E = y(z, t)
9595
9696 let F = "oldAcresContract"
9797
9898 func G () = "contractsBlocked"
9999
100100
101101 func H (I) = ("lastWeekTxIdByUser_" + I)
102102
103103
104104 func J (I) = ("curWeekTxIdByUser_" + I)
105105
106106
107-let K = "acresIssuedAmount"
107+let K = "wlg_assetId"
108108
109-let L = "acresAssetId"
109+let L = valueOrErrorMessage(getBinary(D, K), "WLGOLD is not issued yet")
110110
111-let M = valueOrErrorMessage(getBinary(C, L), "ACRES is not issued yet")
111+let M = "acresIssuedAmount"
112112
113-func N (I) = ("acresStakedTimeByUser_" + I)
113+let N = "acresAssetId"
114+
115+let O = valueOrErrorMessage(getBinary(C, N), "ACRES is not issued yet")
116+
117+func P (I) = ("acresStakedTimeByUser_" + I)
114118
115119
116-func O (P) = ("stakedLandsByOwner_" + P)
120+func Q (R) = ("stakedLandsByOwner_" + R)
117121
118122
119-func Q (P) = ("stakedDuckByOwner_" + P)
123+func S (R) = ("stakedDuckByOwner_" + R)
120124
121125
122-func R (S,I) = ((("st_" + S) + "_") + I)
126+func T (U,I) = ((("st_" + U) + "_") + I)
123127
124128
125-func T (P) = ("stakedNFTsByOwner_" + P)
129+func V (R) = ("stakedNFTsByOwner_" + R)
126130
127131
128-func U (V) = {
129- let j = V
132+func W (X) = {
133+ let j = X
130134 if ($isInstanceOf(j, "Int"))
131135 then {
132- let W = j
133- W
136+ let Y = j
137+ Y
134138 }
135139 else throw("fail to cast into Int")
136140 }
137141
138142
139-func X (Y) = {
140- let j = Y
143+func Z (aa) = {
144+ let j = aa
141145 if ($isInstanceOf(j, "(Int, Int, Int, Int, Int)"))
142146 then {
143- let Z = j
144- Z
147+ let ab = j
148+ ab
145149 }
146150 else throw("fail to cast into (Int, Int, Int, Int, Int)")
147151 }
148152
149153
150-func aa (Y) = {
151- let j = Y
154+func ac (aa) = {
155+ let j = aa
152156 if ($isInstanceOf(j, "(Int, Int, Int, Int)"))
153157 then {
154- let Z = j
155- Z
158+ let ab = j
159+ ab
156160 }
157161 else throw("fail to cast into (Int, Int, Int, Int)")
158162 }
159163
160164
161-func ab (Y) = {
162- let j = Y
165+func ad (aa) = {
166+ let j = aa
163167 if ($isInstanceOf(j, "(Int, Int, Int)"))
164168 then {
165- let Z = j
166- Z
169+ let ab = j
170+ ab
167171 }
168172 else throw("fail to cast into (Int, Int, Int)")
169173 }
170174
171175
172-func ac (Y) = {
173- let j = Y
176+func ae (aa) = {
177+ let j = aa
174178 if ($isInstanceOf(j, "(Int, Int)"))
175179 then {
176- let Z = j
177- Z
180+ let ab = j
181+ ab
178182 }
179183 else throw("fail to cast into (Int, Int)")
180184 }
181185
182186
183-func ad (Y,ae) = {
184- let af = pow(10, 0, ae, 0, 0, DOWN)
185- let ag = toString((Y % af))
186- let ah = drop(toString(af), (1 + size(ag)))
187- (((toString((Y / af)) + ".") + ah) + ag)
187+func af (aa,ag) = {
188+ let ah = pow(10, 0, ag, 0, 0, DOWN)
189+ let ai = toString((aa % ah))
190+ let aj = drop(toString(ah), (1 + size(ai)))
191+ (((toString((aa / ah)) + ".") + aj) + ai)
188192 }
189193
190194
191-let ai = 1000000
195+let ak = 1000000
192196
193-let aj = 100000000
197+let al = 100000000
194198
195-let ak = "wlg_issuedAmount"
199+let am = "wlg_issuedAmount"
196200
197-let al = "zbill_issuedAmount"
201+let an = "zbill_issuedAmount"
198202
199-func am (I) = ("acresStakedAmountByUser_" + I)
203+func ao (I) = ("acresStakedAmountByUser_" + I)
200204
201205
202-func an (I) = ("farmingPowerByUser_" + I)
206+func ap (I) = ("farmingPowerByUser_" + I)
203207
204208
205-let ao = "acresStakedAmountTotal"
209+let aq = "acresStakedAmountTotal"
206210
207-let ap = "totalFarmingPower"
211+let ar = "totalFarmingPower"
208212
209-let aq = 3
213+let as = 3
210214
211-let ar = 1
215+let at = 1
212216
213-let as = 5000
217+let au = 5000
214218
215-let at = 4
219+let av = 4
216220
217-let au = "nftTotalIssued"
221+let aw = "nftTotalIssued"
218222
219-let av = "nftTotalBurned"
223+let ax = "nftTotalBurned"
220224
221-let aw = "WlNftTotalStaked"
225+let ay = "WlNftTotalStaked"
222226
223-let ax = "ArkNftTotalStaked"
227+let az = "ArkNftTotalStaked"
224228
225-func ay (S) = ("nftNumberByAssetId_" + S)
229+func aA (U) = ("nftNumberByAssetId_" + U)
226230
227231
228-func az (I) = ("userWlNftNumber_" + I)
232+func aB (I) = ("userWlNftNumber_" + I)
229233
230234
231-func aA (I) = ("userArkNftNumber_" + I)
235+func aC (I) = ("userArkNftNumber_" + I)
232236
233237
234-func aB (I) = ("userFullBonus_" + I)
238+func aD (I) = ("userFullBonus_" + I)
235239
236240
237-let aC = [0, 10, 20, 40, 80, 150, 250, 400, 700, 1000]
241+let aE = [0, 10, 20, 40, 80, 150, 250, 400, 700, 1000]
238242
239-func aD (aE) = {
240- let aF = ((aE + 99999999) / aj)
241- func aG (aH,aI) = if ((aI >= aF))
242- then aH
243- else (aH + 1)
243+func aF (aG) = {
244+ let aH = ((aG + 99999999) / al)
245+ func aI (aJ,aK) = if ((aK >= aH))
246+ then aJ
247+ else (aJ + 1)
244248
245- let aJ = aC
246- let aK = size(aJ)
247- let aL = 0
248- func aM (aN,aO) = if ((aO >= aK))
249- then aN
250- else aG(aN, aJ[aO])
249+ let aL = aE
250+ let aM = size(aL)
251+ let aN = 0
252+ func aO (aP,aQ) = if ((aQ >= aM))
253+ then aP
254+ else aI(aP, aL[aQ])
251255
252- func aP (aN,aO) = if ((aO >= aK))
253- then aN
256+ func aR (aP,aQ) = if ((aQ >= aM))
257+ then aP
254258 else throw("List size exceeds 10")
255259
256- aP(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aL, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
260+ aR(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aN, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
257261 }
258262
259263
260-func aQ (aE) = ((aE * 20) * (aD(aE) + 4))
264+func aS (aG) = ((aG * 20) * (aF(aG) + 4))
261265
262266
263-func aR (aE,aS) = {
264- let aT = aQ(aE)
265- $Tuple2(fraction(aT, (ai + aS), ai), aT)
267+func aT (aG,aU) = {
268+ let aV = aS(aG)
269+ $Tuple2(fraction(aV, (ak + aU), ak), aV)
266270 }
267271
268272
269-func aU (I) = ("lastArbTimeUser_" + I)
273+let aW = "teamAddr"
274+
275+func aX (I) = ("lastArbTimeUser_" + I)
270276
271277
272-let aV = "lastAcresSellTime"
278+let aY = "lastAcresSellTime"
273279
274-let aW = "lastLimitLeft"
280+let aZ = "lastLimitLeft"
275281
276-let aX = ["SHOVEL-P3", "PICKAXE-C1", "PICKAXE-C3", "PICKAXE-C5", "PICKAXE-C10"]
282+let ba = ["Gold shovel", "Pickaxe"]
277283
278-let aY = ["contentShovelP3", "contentPickaxeC1", "contentPickaxeC3", "contentPickaxeC5", "contentPickaxeC10"]
284+let bb = ["Reward for early birds", "Increases FarmPower"]
279285
280-let aZ = ["Gold shovel", "Pickaxe"]
286+let bc = 0
281287
282-let ba = ["Reward for early birds", "Increases FarmPower"]
288+let bd = 1
283289
284-let bb = 0
290+let be = [5, 10, 20]
285291
286-let bc = 1
292+let bf = 0
287293
288-let bd = ["Promo", "Common"]
294+let bg = 1
289295
290-let be = [3, 1, 3, 5, 10]
296+let bh = 2
291297
292-let bf = ["SHOVEL", "PICKAXE"]
293-
294-let bg = 0
295-
296-let bh = 1
297-
298-let bi = ["contentPickaxeC", "contentPickaxeU", "contentPickaxeL", "contentPickaxeE", "contentShovelP"]
298+let bi = ["SHOVEL", "PICKAXE"]
299299
300300 let bj = 0
301301
302-let bk = 4
302+let bk = 1
303303
304-let bl = ["Common", "Uncommon", "Legendary", "Epic", "Promo"]
304+let bl = ["contentPickaxeC", "contentPickaxeU", "contentPickaxeL", "contentPickaxeE", "contentShovelP"]
305305
306306 let bm = 0
307307
308308 let bn = 4
309309
310-let bo = ["Digging tools"]
310+let bo = ["Common", "Uncommon", "Legendary", "Epic", "Promo"]
311311
312312 let bp = 0
313313
314-let bq = ["FarmPower"]
314+let bq = 1
315315
316-let br = 0
316+let br = 2
317317
318-func bs (bt) = if (if ((bt.originCaller != B))
318+let bs = 3
319+
320+let bt = 4
321+
322+let bu = ["Digging tools"]
323+
324+let bv = 0
325+
326+let bw = ["FarmPower"]
327+
328+let bx = 0
329+
330+func by (bz) = if (if ((bz.originCaller != B))
319331 then valueOrElse(getBoolean(G()), false)
320332 else false)
321333 then throw("Contracts are under maintenance")
322334 else {
323- let I = toString(bt.originCaller)
324- let bu = (height / i)
325- let bv = H(I)
326- let bw = getString(bv)
327- let bx = toBase58String(bt.transactionId)
328- let by = ((toString(bu) + "_") + bx)
329- let bz = J(I)
330- if (isDefined(bw))
335+ let I = toString(bz.originCaller)
336+ let bA = (height / i)
337+ let bB = H(I)
338+ let bC = getString(bB)
339+ let bD = toBase58String(bz.transactionId)
340+ let bE = ((toString(bA) + "_") + bD)
341+ let bF = J(I)
342+ if (isDefined(bC))
331343 then {
332- let bA = split(value(bw), "_")
333- if ((bA[0] == toString(bu)))
334- then [StringEntry(bv, by), StringEntry(bz, by)]
335- else if ((bA[0] == toString((bu - 1))))
336- then [StringEntry(bz, by)]
344+ let bG = split(value(bC), "_")
345+ if ((bG[0] == toString(bA)))
346+ then [StringEntry(bB, bE), StringEntry(bF, bE)]
347+ else if ((bG[0] == toString((bA - 1))))
348+ then [StringEntry(bF, bE)]
337349 else {
338- let bB = getStringValue(bz)
339- let bC = split(bB, "_")
340- if ((bC[0] == toString(bu)))
341- then [StringEntry(bz, by)]
342- else [StringEntry(bv, bB), StringEntry(bz, by)]
350+ let bH = getStringValue(bF)
351+ let bI = split(bH, "_")
352+ if ((bI[0] == toString(bA)))
353+ then [StringEntry(bF, bE)]
354+ else [StringEntry(bB, bH), StringEntry(bF, bE)]
343355 }
344356 }
345- else [StringEntry(bv, by), StringEntry(bz, by)]
357+ else [StringEntry(bB, bE), StringEntry(bF, bE)]
346358 }
347359
348360
349-func bD (bE,bF,bG,bH,bI,bJ,bK,bL) = (((((((((((((((((((((((("{\"url\": \"https://waveslands.com\", " + "\"contentKey\": \"") + bE) + "\", ") + "\"number\": ") + toString(bF)) + ", ") + "\"collection\": \"") + bG) + "\", ") + "\"name\": \"") + bH) + "\", ") + "\"description\": \"") + bI) + "\", ") + "\"rare\": \"") + bJ) + "\", ") + "\"bonus\": ") + toString(bK)) + ", ") + "\"bonusType\": \"") + bL) + "\"}")
361+func bJ (bK,bL,bM,bN,bO,bP,bQ,bR) = (((((((((((((((((((((((("{\"url\": \"https://waveslands.com\", " + "\"contentKey\": \"") + bK) + "\", ") + "\"number\": ") + toString(bL)) + ", ") + "\"collection\": \"") + bM) + "\", ") + "\"name\": \"") + bN) + "\", ") + "\"description\": \"") + bO) + "\", ") + "\"rare\": \"") + bP) + "\", ") + "\"bonus\": ") + toString(bQ)) + ", ") + "\"bonusType\": \"") + bR) + "\"}")
350362
351363
352-func bM (bN,bO,bP,bQ,bR,bS,bT,I) = {
353- let bF = valueOrElse(getInteger(au), 0)
354- let bJ = bl[bQ]
355- let bH = (((bf[bN] + "-") + take(bJ, 1)) + toString(bR))
356- let bU = Issue(bH, bD(bi[bO], bF, bo[bP], aZ[bN], ba[bS], bl[bQ], bR, bq[bT]), 1, 0, false)
357- let bV = calculateAssetId(bU)
358- $Tuple2([bU, IntegerEntry(au, (bF + 1)), IntegerEntry(ay(toBase58String(bV)), bF), ScriptTransfer(I, 1, bV)], bV)
364+func bS (bT,bU,bV,bW,bX,bY,bZ,I) = {
365+ let bL = valueOrElse(getInteger(aw), 0)
366+ let bP = bo[bW]
367+ let bN = (((bi[bT] + "-") + take(bP, 1)) + toString(bX))
368+ let ca = Issue(bN, bJ(bl[bU], bL, bu[bV], ba[bT], bb[bY], bo[bW], bX, bw[bZ]), 1, 0, false)
369+ let cb = calculateAssetId(ca)
370+ $Tuple2([ca, IntegerEntry(aw, (bL + 1)), IntegerEntry(aA(toBase58String(cb)), bL), ScriptTransfer(I, 1, cb)], cb)
359371 }
360372
361373
362-func bW (bX,bF) = ((((((((((((((((((((("{\"url\": \"https://waveslands.com\", " + "\"contentKey\": \"") + aY[bX]) + "\", ") + "\"number\": ") + bF) + ", ") + "\"collection\": \"Digging tools") + "\", ") + "\"name\": \"") + aZ[bX]) + "\", ") + "\"description\": \"") + ba[bX]) + "\", ") + "\"rare\": \"") + bd[bX]) + "\", ") + "\"bonus\": ") + toString(be[bX])) + ", ") + "\"bonusType\": \"FarmPower\"}")
363-
364-
365-func bY (bX,I) = if ((bX >= size(aY)))
366- then throw("nftIndex out of bounds")
367- else {
368- let bF = valueOrElse(getInteger(au), 0)
369- let bU = Issue(aX[bX], bW(bX, toString(bF)), 1, 0, false)
370- let bV = calculateAssetId(bU)
371- $Tuple2([bU, IntegerEntry(au, (bF + 1)), IntegerEntry(ay(toBase58String(bV)), bF), ScriptTransfer(I, 1, bV)], bV)
372- }
373-
374-
375-func bZ (ca,p,cb) = if (if ((ca == 0))
376- then (cb == 0)
374+func cc (cd,p,ce) = if (if ((cd == 0))
375+ then (ce == 0)
377376 else false)
378377 then throw("Nothing to do")
379378 else {
380- let cc = invoke(D, "onStakeUnstakeLand", [p], nil)
381- if ((cc == cc))
379+ let cf = invoke(D, "onStakeUnstakeLand", [p], nil)
380+ if ((cf == cf))
382381 then {
383- let cd = lastBlock.timestamp
384- let ce = N(p)
385- let cf = am(p)
386- let cg = valueOrElse(getInteger(cf), 0)
387- if (if ((0 > ca))
388- then (0 > (cg + ca))
382+ let cg = lastBlock.timestamp
383+ let ch = P(p)
384+ let ci = ao(p)
385+ let cj = valueOrElse(getInteger(ci), 0)
386+ if (if ((0 > cd))
387+ then (0 > (cj + cd))
389388 else false)
390- then throw(((("You have only " + ad(cg, 8)) + " ACRES staked, tried to unstake ") + ad(-(ca), 8)))
389+ then throw(((("You have only " + af(cj, 8)) + " ACRES staked, tried to unstake ") + af(-(cd), 8)))
391390 else {
392- let ch = (cg + ca)
393- let ci = valueOrElse(getInteger(ao), 0)
394- let cj = an(p)
395- let ck = valueOrElse(getInteger(cj), 0)
396- let cl = aB(p)
397- let cm = valueOrElse(getInteger(C, cl), 0)
398- if (if ((0 > cb))
399- then (0 > (cm + cb))
391+ let ck = (cj + cd)
392+ let cl = valueOrElse(getInteger(aq), 0)
393+ let cm = ap(p)
394+ let cn = valueOrElse(getInteger(cm), 0)
395+ let co = aD(p)
396+ let cp = valueOrElse(getInteger(C, co), 0)
397+ if (if ((0 > ce))
398+ then (0 > (cp + ce))
400399 else false)
401- then throw((((("You have only " + ad(cm, 4)) + "% bonus, and tried to unstake ") + ad(-(cb), 4)) + "%"))
400+ then throw((((("You have only " + af(cp, 4)) + "% bonus, and tried to unstake ") + af(-(ce), 4)) + "%"))
402401 else {
403- let cn = aR(ch, (cm + cb))
404- let co = cn._1
405- let cp = cn._2
406- let cq = valueOrElse(getInteger(ap), 0)
407- let cr = if ((ca == 0))
402+ let cq = aT(ck, (cp + ce))
403+ let cr = cq._1
404+ let cs = cq._2
405+ let ct = valueOrElse(getInteger(ar), 0)
406+ let cu = if ((cd == 0))
408407 then nil
409- else [IntegerEntry(cf, ch), IntegerEntry(ao, (ci + ca))]
410- $Tuple2(((((cr :+ IntegerEntry(ce, lastBlock.timestamp)) :+ IntegerEntry(cj, co)) :+ IntegerEntry(ap, ((cq + co) - ck))) :+ IntegerEntry(cl, (cm + cb))), cc)
408+ else [IntegerEntry(ci, ck), IntegerEntry(aq, (cl + cd))]
409+ $Tuple2(((((cu :+ IntegerEntry(ch, lastBlock.timestamp)) :+ IntegerEntry(cm, cr)) :+ IntegerEntry(ar, ((ct + cr) - cn))) :+ IntegerEntry(co, (cp + ce))), cf)
411410 }
412411 }
413412 }
414413 else throw("Strict value is not equal to itself.")
415414 }
416415
417416
418-func cs (ct) = {
419- let cu = valueOrErrorMessage(getInteger(D, ak), "WLGOLD is not issued yet")
420- let cv = assetBalance(D, k)
421- let cw = (assetBalance(C, k) - ct)
422- let cx = (assetBalance(E, k) + valueOrElse(getInteger(E, al), 0))
423- let cy = ((cw + cv) + cx)
424- fraction(cy, d, cu)
417+func cv (cw) = {
418+ let cx = valueOrErrorMessage(getInteger(D, am), "WLGOLD is not issued yet")
419+ let cy = assetBalance(D, k)
420+ let cz = (assetBalance(C, k) - cw)
421+ let cA = (assetBalance(E, k) + valueOrElse(getInteger(E, an), 0))
422+ let cB = ((cz + cy) + cA)
423+ fraction(cB, d, cx)
425424 }
426425
427426
428-func cz () = {
429- let cv = assetBalance(D, k)
430- let cw = assetBalance(this, k)
431- let cx = (assetBalance(E, k) + valueOrElse(getInteger(E, al), 0))
432- let cA = (((cw + cv) + cx) / g)
433- let cB = valueOrElse(getInteger(aW), cA)
434- let cC = valueOrElse(getInteger(aV), 0)
435- let cd = lastBlock.timestamp
436- let cD = (cB + fraction(cA, (cd - cC), e))
437- let cE = min([cD, cA])
438- $Tuple2(IntegerEntry(aV, cd), cE)
427+func cC () = {
428+ let cy = assetBalance(D, k)
429+ let cz = assetBalance(this, k)
430+ let cA = (assetBalance(E, k) + valueOrElse(getInteger(E, an), 0))
431+ let cD = (((cz + cy) + cA) / g)
432+ let cE = valueOrElse(getInteger(aZ), cD)
433+ let cF = valueOrElse(getInteger(aY), 0)
434+ let cg = lastBlock.timestamp
435+ let cG = (cE + fraction(cD, (cg - cF), e))
436+ let cH = min([cG, cD])
437+ $Tuple2(IntegerEntry(aY, cg), cH)
439438 }
440439
441440
442-let cF = addressFromStringValue("3PJgZ6AK1WVCpdCmEZpesHmaKvrQDdXG5og")
441+let cI = addressFromStringValue("3PJgZ6AK1WVCpdCmEZpesHmaKvrQDdXG5og")
443442
444-let cG = valueOrElse(getString(cF, "static_incubatorAddress"), "")
443+let cJ = valueOrElse(getString(cI, "static_incubatorAddress"), "")
445444
446-let cH = valueOrElse(getString(cF, "static_breederAddress"), "")
445+let cK = valueOrElse(getString(cI, "static_breederAddress"), "")
447446
448-let cI = valueOrElse(getString(cF, "static_turtleIncubatorAddress"), "")
447+let cL = valueOrElse(getString(cI, "static_turtleIncubatorAddress"), "")
449448
450-let cJ = valueOrElse(getString(cF, "static_turtleBreederAddress"), "")
449+let cM = valueOrElse(getString(cI, "static_turtleBreederAddress"), "")
451450
452-let cK = valueOrElse(getString(cF, "static_canineIncubatorAddress"), "")
451+let cN = valueOrElse(getString(cI, "static_canineIncubatorAddress"), "")
453452
454-let cL = valueOrElse(getString(cF, "static_canineBreederAddress"), "")
453+let cO = valueOrElse(getString(cI, "static_canineBreederAddress"), "")
455454
456-let cM = valueOrElse(getString(cF, "static_felineIncubatorAddress"), "")
455+let cP = valueOrElse(getString(cI, "static_felineIncubatorAddress"), "")
457456
458-let cN = valueOrElse(getString(cF, "static_felineBreederAddress"), "")
457+let cQ = valueOrElse(getString(cI, "static_felineBreederAddress"), "")
459458
460-let cO = valueOrElse(getString(cF, "static_mutantIncubatorAddress"), "")
459+let cR = valueOrElse(getString(cI, "static_mutantIncubatorAddress"), "")
461460
462-func cP (cQ) = {
463- let cR = toString(cQ.issuer)
461+func cS (cT) = {
462+ let cU = toString(cT.issuer)
464463 if (if (if (if (if (if (if (if (if (if ((h == base58'2T'))
465- then (cR == n)
464+ then (cU == n)
466465 else false)
467466 then true
468- else (cR == cG))
467+ else (cU == cJ))
469468 then true
470- else (cR == cH))
469+ else (cU == cK))
471470 then true
472- else (cR == cI))
471+ else (cU == cL))
473472 then true
474- else (cR == cJ))
473+ else (cU == cM))
475474 then true
476- else (cR == cK))
475+ else (cU == cN))
477476 then true
478- else (cR == cL))
477+ else (cU == cO))
479478 then true
480- else (cR == cM))
479+ else (cU == cP))
481480 then true
482- else (cR == cN))
483- then cQ.name
484- else if ((cR == cO))
485- then cQ.description
481+ else (cU == cQ))
482+ then cT.name
483+ else if ((cU == cR))
484+ then cT.description
486485 else ""
487486 }
488487
489488
490-func cS (bI) = if (!(contains(bI, "\"bonusType\": \"FarmPower\"")))
491- then throw(("NFT is not supported: " + bI))
489+func cV (bO) = if (!(contains(bO, "\"bonusType\": \"FarmPower\"")))
490+ then throw(("NFT is not supported: " + bO))
492491 else {
493- let cT = split_4C(split_4C(bI, "\"bonus\":")[1], ",")[0]
494- parseIntValue(drop(cT, (valueOrElse(lastIndexOf(cT, " "), -1) + 1)))
492+ let cW = split_4C(split_4C(bO, "\"bonus\":")[1], ",")[0]
493+ parseIntValue(drop(cW, (valueOrElse(lastIndexOf(cW, " "), -1) + 1)))
495494 }
496495
497496
498-func cU (I,cV,aS,cW,cX,cY) = {
499- let cZ = valueOrElse(getInteger(cW), 0)
500- if ((cZ >= cY))
501- then throw((("You can stake max " + toString(cY)) + " of such NFTs"))
497+func cX (bO) = if (!(contains(bO, "\"rare\"")))
498+ then throw(("NFT is not supported: " + bO))
499+ else {
500+ let cY = split_4C(split_4C(split_4C(bO, "\"rare\"")[1], ",")[0], "\"")[1]
501+ value(indexOf(bo, cY))
502+ }
503+
504+
505+func cZ (I,da,aU,db,dc,dd) = {
506+ let de = valueOrElse(getInteger(db), 0)
507+ if ((de >= dd))
508+ then throw((("You can stake max " + toString(dd)) + " of such NFTs"))
502509 else {
503- let da = bZ(0, I, aS)
504- let db = da._1
505- let dc = da._2
506- $Tuple2((((db :+ IntegerEntry(cW, (cZ + 1))) :+ IntegerEntry(cX, (valueOrElse(getInteger(cX), 0) + 1))) :+ IntegerEntry(R(cV, I), lastBlock.timestamp)), dc)
510+ let df = cc(0, I, aU)
511+ let dg = df._1
512+ let dh = df._2
513+ $Tuple2((((dg :+ IntegerEntry(db, (de + 1))) :+ IntegerEntry(dc, (valueOrElse(getInteger(dc), 0) + 1))) :+ IntegerEntry(T(da, I), lastBlock.timestamp)), dh)
507514 }
508515 }
509516
510517
511-@Callable(bt)
512-func saveLastTx () = if (!(containsElement([D], bt.caller)))
518+@Callable(bz)
519+func saveLastTx () = if (!(containsElement([D], bz.caller)))
513520 then throw("Access denied")
514- else $Tuple2(bs(bt), 42)
521+ else $Tuple2(by(bz), 42)
515522
516523
517524
518-@Callable(bt)
519-func constructorV1 (dd,de) = if ((bt.caller != this))
525+@Callable(bz)
526+func constructorV1 (di,dj) = if ((bz.caller != this))
520527 then throw("Permission denied")
521528 else {
522- let df = addressFromStringValue(de)
523-[IntegerEntry(K, getIntegerValue(df, K)), BinaryEntry(L, getBinaryValue(df, L)), StringEntry(v(), dd), StringEntry(F, de)]
529+ let dk = addressFromStringValue(dj)
530+[IntegerEntry(M, getIntegerValue(dk, M)), BinaryEntry(N, getBinaryValue(dk, N)), StringEntry(v(), di), StringEntry(F, dj)]
524531 }
525532
526533
527534
528-@Callable(bt)
529-func setBlocked (dg) = if ((bt.caller != this))
535+@Callable(bz)
536+func setBlocked (dl) = if ((bz.caller != this))
530537 then throw("permission denied")
531- else [BooleanEntry(G(), dg)]
538+ else [BooleanEntry(G(), dl)]
532539
533540
534541
535-@Callable(bt)
536-func unstakeAcres (dh) = {
537- let di = bs(bt)
538- if ((0 >= dh))
542+@Callable(bz)
543+func unstakeAcres (dm) = {
544+ let dn = by(bz)
545+ if ((0 >= dm))
539546 then throw("Amount should be positive")
540547 else {
541- let p = toString(bt.caller)
542- if ((size(bt.payments) != 0))
548+ let p = toString(bz.caller)
549+ if ((size(bz.payments) != 0))
543550 then throw("No payments required")
544551 else {
545- let dj = (valueOrElse(getInteger(D, aU(p)), 0) + m)
546- if ((dj > lastBlock.timestamp))
547- then throw(("You traded some WLGOLD, cannot unstake until " + toString(dj)))
552+ let do = (valueOrElse(getInteger(D, aX(p)), 0) + m)
553+ if ((do > lastBlock.timestamp))
554+ then throw(("You traded some WLGOLD, cannot unstake until " + toString(do)))
548555 else {
549- let dk = bZ(-(dh), p, 0)
550- let db = dk._1
551- let dc = dk._2
552- $Tuple2(((db :+ ScriptTransfer(bt.caller, dh, M)) ++ di), dc)
556+ let dp = cc(-(dm), p, 0)
557+ let dg = dp._1
558+ let dh = dp._2
559+ $Tuple2(((dg :+ ScriptTransfer(bz.caller, dm, O)) ++ dn), dh)
553560 }
554561 }
555562 }
556563 }
557564
558565
559566
560-@Callable(bt)
567+@Callable(bz)
561568 func stakeAcres () = {
562- let di = bs(bt)
563- let p = toString(bt.caller)
564- if ((size(bt.payments) != 1))
569+ let dn = by(bz)
570+ let p = toString(bz.caller)
571+ if ((size(bz.payments) != 1))
565572 then throw("exactly 1 payment must be attached")
566573 else {
567- let dl = bt.payments[0]
568- let ca = dl.amount
569- if (if (!(isDefined(dl.assetId)))
574+ let dq = bz.payments[0]
575+ let cd = dq.amount
576+ if (if (!(isDefined(dq.assetId)))
570577 then true
571- else (value(dl.assetId) != M))
578+ else (value(dq.assetId) != O))
572579 then throw("ACRES payments only!")
573580 else {
574- let dm = bZ(ca, p, 0)
575- let db = dm._1
576- let dc = dm._2
577- $Tuple2((db ++ di), dc)
581+ let dr = cc(cd, p, 0)
582+ let dg = dr._1
583+ let dh = dr._2
584+ $Tuple2((dg ++ dn), dh)
578585 }
579586 }
580587 }
581588
582589
583590
584-@Callable(bt)
591+@Callable(bz)
585592 func buyAcres () = {
586- let di = bs(bt)
587- if ((size(bt.payments) != 1))
593+ let dn = by(bz)
594+ if ((size(bz.payments) != 1))
588595 then throw("exactly 1 payment must be attached")
589596 else {
590- let dl = bt.payments[0]
591- let dn = dl.amount
592- if (if (!(isDefined(dl.assetId)))
597+ let dq = bz.payments[0]
598+ let ds = dq.amount
599+ if (if (!(isDefined(dq.assetId)))
593600 then true
594- else (value(dl.assetId) != k))
601+ else (value(dq.assetId) != k))
595602 then throw("USDT payments only!")
596- else if ((b > dn))
597- then throw((("Min payment should be " + ad(b, 6)) + " USDT"))
603+ else if ((b > ds))
604+ then throw((("Min payment should be " + af(b, 6)) + " USDT"))
598605 else {
599- let do = (dn * f)
600- let dp = fraction(dn, d, cs(dn))
601- let dq = addressFromStringValue(getStringValue(F))
602- let dr = invoke(dq, "requestAcresCallback", [do], nil)
603- if ((dr == dr))
606+ let dt = (ds * f)
607+ let du = fraction(ds, d, cv(ds))
608+ let dv = addressFromStringValue(getStringValue(F))
609+ let dw = invoke(dv, "requestAcresCallback", [dt], nil)
610+ if ((dw == dw))
604611 then {
605- let ds = U(invoke(D, "burnWlgold", [dp], nil))
606- $Tuple2(([ScriptTransfer(bt.caller, do, M)] ++ di), ds)
612+ let dx = W(invoke(D, "burnWlgold", [du], nil))
613+ $Tuple2(([ScriptTransfer(bz.caller, dt, O)] ++ dn), dx)
607614 }
608615 else throw("Strict value is not equal to itself.")
609616 }
610617 }
611618 }
612619
613620
614621
615-@Callable(bt)
616-func buyAcresREADONLY (dn) = {
617- let do = (dn * f)
618- let dt = fraction(dn, d, cs(dn))
619- $Tuple2(nil, [do, b, do, dt])
622+@Callable(bz)
623+func buyAcresREADONLY (ds) = {
624+ let dt = (ds * f)
625+ let dy = fraction(ds, d, cv(ds))
626+ $Tuple2(nil, [dt, b, dt, dy])
620627 }
621628
622629
623630
624-@Callable(bt)
631+@Callable(bz)
625632 func sellAcres () = {
626- let di = bs(bt)
627- if ((size(bt.payments) != 1))
633+ let dn = by(bz)
634+ if ((size(bz.payments) != 1))
628635 then throw("exactly 1 payment must be attached")
629636 else {
630- let dl = bt.payments[0]
631- let do = dl.amount
632- if (if (!(isDefined(dl.assetId)))
637+ let dq = bz.payments[0]
638+ let dt = dq.amount
639+ if (if (!(isDefined(dq.assetId)))
633640 then true
634- else (value(dl.assetId) != M))
641+ else (value(dq.assetId) != O))
635642 then throw("ACRES payments only!")
636- else if ((c > do))
637- then throw((("Min payment should be " + ad(c, 8)) + " ACRES"))
643+ else if ((c > dt))
644+ then throw((("Min payment should be " + af(c, 8)) + " ACRES"))
638645 else {
639- let I = toString(bt.caller)
640- let du = cz()
641- let dv = du._1
642- let dw = du._2
643- let dx = (dw * f)
644- if ((do > dx))
645- then throw((("You can sell max " + ad(dx, 8)) + " ACRES"))
646+ let I = toString(bz.caller)
647+ let dz = cC()
648+ let dA = dz._1
649+ let dB = dz._2
650+ let dC = (dB * f)
651+ if ((dt > dC))
652+ then throw((("You can sell max " + af(dC, 8)) + " ACRES"))
646653 else {
647- let dn = ((do / f) / 2)
648- $Tuple2(([dv, IntegerEntry(aW, (dw - dn)), ScriptTransfer(bt.caller, dn, k)] ++ di), dn)
654+ let ds = ((dt / f) / 2)
655+ $Tuple2(([dA, IntegerEntry(aZ, (dB - ds)), ScriptTransfer(bz.caller, ds, k)] ++ dn), ds)
649656 }
650657 }
651658 }
652659 }
653660
654661
655662
656-@Callable(bt)
657-func sellAcresREADONLY (p,do) = {
658- let dy = cz()
659- let dv = dy._1
660- let dw = dy._2
661- let dn = ((do / f) / 2)
662- $Tuple2(nil, [dn, c, (dw * f), 0])
663+@Callable(bz)
664+func sellAcresREADONLY (p,dt) = {
665+ let dD = cC()
666+ let dA = dD._1
667+ let dB = dD._2
668+ let ds = ((dt / f) / 2)
669+ $Tuple2(nil, [ds, c, (dB * f), 0])
663670 }
664671
665672
666673
667-@Callable(bt)
668-func convertOldStakes () = if ((bt.caller != this))
674+@Callable(bz)
675+func convertOldStakes () = if ((bz.caller != this))
669676 then throw("Temporarily disabled")
670677 else {
671- let p = toString(bt.caller)
672- if ((size(bt.payments) != 0))
678+ let p = toString(bz.caller)
679+ if ((size(bz.payments) != 0))
673680 then throw("No payments required")
674681 else {
675- let dq = addressFromStringValue(getStringValue(F))
676- let dh = valueOrElse(getInteger(dq, am(p)), 0)
677- let dz = if ((dh > 0))
678- then ac(invoke(dq, "unstakeAcresCallback", [dh, p], nil))
682+ let dv = addressFromStringValue(getStringValue(F))
683+ let dm = valueOrElse(getInteger(dv, ao(p)), 0)
684+ let dE = if ((dm > 0))
685+ then ae(invoke(dv, "unstakeAcresCallback", [dm, p], nil))
679686 else $Tuple2(0, 0)
680- let dA = addressFromStringValue(n)
681- let dB = getString(dA, O(p))
682- let dC = if (isDefined(dB))
687+ let dF = addressFromStringValue(n)
688+ let dG = getString(dF, Q(p))
689+ let dH = if (isDefined(dG))
683690 then {
684- let dD = split_51C(value(dB), "_")
685- func dE (aH,dF) = if ((dF == ""))
691+ let dI = split_51C(value(dG), "_")
692+ func dJ (aJ,dK) = if ((dK == ""))
686693 then throw("landAssetId is required")
687694 else {
688- let dG = X(invoke(dA, "unstakeLandCallback", [dF, p], nil))
689- $Tuple4((aH._1 + dG._1), (aH._2 + dG._2), (aH._3 + dG._3), (aH._4 + dG._4))
695+ let dL = Z(invoke(dF, "unstakeLandCallback", [dK, p], nil))
696+ $Tuple4((aJ._1 + dL._1), (aJ._2 + dL._2), (aJ._3 + dL._3), (aJ._4 + dL._4))
690697 }
691698
692- let dH = {
693- let aJ = dD
694- let aK = size(aJ)
695- let aL = $Tuple4(0, 0, 0, 0)
696- func aM (aN,aO) = if ((aO >= aK))
697- then aN
698- else dE(aN, aJ[aO])
699+ let dM = {
700+ let aL = dI
701+ let aM = size(aL)
702+ let aN = $Tuple4(0, 0, 0, 0)
703+ func aO (aP,aQ) = if ((aQ >= aM))
704+ then aP
705+ else dJ(aP, aL[aQ])
699706
700- func aP (aN,aO) = if ((aO >= aK))
701- then aN
707+ func aR (aP,aQ) = if ((aQ >= aM))
708+ then aP
702709 else throw("List size exceeds 100")
703710
704- aP(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aL, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100)
711+ aR(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aN, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100)
705712 }
706- let dI = invoke(dA, "unstakeLandsFinalizeCallback", [p], nil)
707- if ((dI == dI))
713+ let dN = invoke(dF, "unstakeLandsFinalizeCallback", [p], nil)
714+ if ((dN == dN))
708715 then {
709- let dr = invoke(dq, "requestAcresCallback", [(((dH._1 + dH._2) + dH._3) + dH._4)], nil)
710- if ((dr == dr))
716+ let dw = invoke(dv, "requestAcresCallback", [(((dM._1 + dM._2) + dM._3) + dM._4)], nil)
717+ if ((dw == dw))
711718 then {
712- let dJ = bM(bg, bk, bp, bn, 3, bb, br, bt.caller)
713- let dK = dJ._1
714- let bV = dJ._2
715- $Tuple5(dH._1, dH._2, dH._3, dH._4, dK)
719+ let dO = bS(bj, bn, bv, bt, 3, bc, bx, bz.caller)
720+ let dP = dO._1
721+ let cb = dO._2
722+ $Tuple5(dM._1, dM._2, dM._3, dM._4, dP)
716723 }
717724 else throw("Strict value is not equal to itself.")
718725 }
719726 else throw("Strict value is not equal to itself.")
720727 }
721728 else $Tuple5(0, 0, 0, 0, nil)
722- let dL = valueOrElse(getString(dA, Q(p)), "")
723- let dM = if ((dL != ""))
724- then ab(invoke(dA, "unstakeDuckCallback", [dL, p], nil))
729+ let dQ = valueOrElse(getString(dF, S(p)), "")
730+ let dR = if ((dQ != ""))
731+ then ad(invoke(dF, "unstakeDuckCallback", [dQ, p], nil))
725732 else $Tuple3(0, 0, 0)
726- let dN = bZ((((((((dz._1 + dC._1) + dC._2) + dC._3) + dC._4) + dM._1) + dM._2) + dM._3), p, 0)
727- $Tuple2((dC._5 ++ dN._1), dN._2)
733+ let dS = cc((((((((dE._1 + dH._1) + dH._2) + dH._3) + dH._4) + dR._1) + dR._2) + dR._3), p, 0)
734+ $Tuple2((dH._5 ++ dS._1), dS._2)
728735 }
729736 }
730737
731738
732739
733-@Callable(bt)
740+@Callable(bz)
734741 func unstakeLandsREADONLY (p) = {
735- let dA = addressFromStringValue(n)
736- let dB = getString(dA, O(p))
737- let dC = if (isDefined(dB))
742+ let dF = addressFromStringValue(n)
743+ let dG = getString(dF, Q(p))
744+ let dH = if (isDefined(dG))
738745 then {
739- let dD = split_51C(value(dB), "_")
740- func dE (aH,dF) = if ((dF == ""))
746+ let dI = split_51C(value(dG), "_")
747+ func dJ (aJ,dK) = if ((dK == ""))
741748 then throw("landAssetId is required")
742749 else {
743- let dG = aa(invoke(dA, "unstakeLandREADONLY", [dF, p], nil))
744- $Tuple4((aH._1 + dG._1), (aH._2 + dG._2), (aH._3 + dG._3), (aH._4 + dG._4))
750+ let dL = ac(invoke(dF, "unstakeLandREADONLY", [dK, p], nil))
751+ $Tuple4((aJ._1 + dL._1), (aJ._2 + dL._2), (aJ._3 + dL._3), (aJ._4 + dL._4))
745752 }
746753
747- let aJ = dD
748- let aK = size(aJ)
749- let aL = $Tuple4(0, 0, 0, 0)
750- func aM (aN,aO) = if ((aO >= aK))
751- then aN
752- else dE(aN, aJ[aO])
754+ let aL = dI
755+ let aM = size(aL)
756+ let aN = $Tuple4(0, 0, 0, 0)
757+ func aO (aP,aQ) = if ((aQ >= aM))
758+ then aP
759+ else dJ(aP, aL[aQ])
753760
754- func aP (aN,aO) = if ((aO >= aK))
755- then aN
761+ func aR (aP,aQ) = if ((aQ >= aM))
762+ then aP
756763 else throw("List size exceeds 100")
757764
758- aP(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aM(aL, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100)
765+ aR(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aN, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100)
759766 }
760767 else $Tuple4(0, 0, 0, 0)
761- $Tuple2(nil, dC)
768+ $Tuple2(nil, dH)
762769 }
763770
764771
765772
766-@Callable(bt)
767-func stakeAcresCallback (I) = if ((bt.caller != addressFromStringValue(n)))
773+@Callable(bz)
774+func stakeAcresCallback (I) = if ((bz.caller != addressFromStringValue(n)))
768775 then throw("Permission denied")
769- else bZ(bt.payments[0].amount, I, 0)
776+ else cc(bz.payments[0].amount, I, 0)
770777
771778
772779
773-@Callable(bt)
774-func simulateStakeAcresREADONLY (p,dO) = {
775- let cf = am(p)
776- let ch = (valueOrElse(getInteger(cf), 0) + dO)
777- let ci = valueOrElse(getInteger(ao), 0)
778- let cj = an(p)
779- let ck = valueOrElse(getInteger(cj), 0)
780- let dP = valueOrElse(getInteger(C, aB(p)), 0)
781- let dQ = aR(ch, dP)
782- let co = dQ._1
783- let cp = dQ._2
784- let cq = valueOrElse(getInteger(ap), 0)
785- let dR = ((cq + co) - ck)
786- $Tuple2(nil, [ck, co, cq, dR])
780+@Callable(bz)
781+func simulateStakeAcresREADONLY (p,dT) = {
782+ let ci = ao(p)
783+ let ck = (valueOrElse(getInteger(ci), 0) + dT)
784+ let cl = valueOrElse(getInteger(aq), 0)
785+ let cm = ap(p)
786+ let cn = valueOrElse(getInteger(cm), 0)
787+ let dU = valueOrElse(getInteger(C, aD(p)), 0)
788+ let dV = aT(ck, dU)
789+ let cr = dV._1
790+ let cs = dV._2
791+ let ct = valueOrElse(getInteger(ar), 0)
792+ let dW = ((ct + cr) - cn)
793+ $Tuple2(nil, [cn, cr, ct, dW])
787794 }
788795
789796
790797
791-@Callable(bt)
792-func issuePickC1 (dS) = if ((bt.caller != D))
798+@Callable(bz)
799+func issuePickC1 (dX) = if ((bz.caller != D))
793800 then throw("Permission denied")
794- else bM(bh, bj, bp, bm, 1, bc, br, addressFromStringValue(dS))
801+ else bS(bk, bm, bv, bp, 1, bd, bx, addressFromStringValue(dX))
795802
796803
797804
798-@Callable(bt)
805+@Callable(bz)
799806 func stakeNFT () = {
800- let di = bs(bt)
801- if ((size(bt.payments) != 1))
807+ let dn = by(bz)
808+ if ((size(bz.payments) != 1))
802809 then throw("Exactly one payment required")
803810 else {
804- let dl = value(bt.payments[0])
805- if ((dl.amount != 1))
811+ let dq = value(bz.payments[0])
812+ if ((dq.amount != 1))
806813 then throw("NFT token should be attached as payment")
807814 else {
808- let S = value(dl.assetId)
809- let dT = value(assetInfo(S))
810- let cV = toBase58String(S)
811- let I = toString(bt.caller)
812- let dU = T(I)
813- let dV = getString(dU)
814- let dW = if (isDefined(dV))
815- then split_4C(value(dV), "_")
815+ let U = value(dq.assetId)
816+ let dY = value(assetInfo(U))
817+ let da = toBase58String(U)
818+ let I = toString(bz.caller)
819+ let dZ = V(I)
820+ let ea = getString(dZ)
821+ let eb = if (isDefined(ea))
822+ then split_4C(value(ea), "_")
816823 else nil
817- if (containsElement(dW, cV))
818- then throw(("Your staked NFTs already contain " + cV))
819- else if ((size(dW) >= at))
820- then throw((("Your already staked max (" + toString(at)) + ") NFTs"))
824+ if (containsElement(eb, da))
825+ then throw(("Your staked NFTs already contain " + da))
826+ else if ((size(eb) >= av))
827+ then throw((("Your already staked max (" + toString(av)) + ") NFTs"))
821828 else {
822- let dX = StringEntry(dU, makeString_2C((dW :+ cV), "_"))
823- if ((dT.issuer == this))
829+ let ec = StringEntry(dZ, makeString_2C((eb :+ da), "_"))
830+ if ((dY.issuer == this))
824831 then {
825- let dY = cU(I, cV, (cS(value(dT.description)) * 10000), az(I), aw, aq)
826- let db = dY._1
827- let dc = dY._2
828- $Tuple2(((di ++ db) :+ dX), dc)
832+ let ed = cZ(I, da, (cV(value(dY.description)) * 10000), aB(I), ay, as)
833+ let dg = ed._1
834+ let dh = ed._2
835+ $Tuple2(((dn ++ dg) :+ ec), dh)
829836 }
830- else if ((cP(dT) == ""))
837+ else if ((cS(dY) == ""))
831838 then throw("Only WavesLands and Arkimals NFT tokens are accepted")
832839 else {
833- let dZ = cU(I, cV, as, aA(I), ax, ar)
834- let db = dZ._1
835- let dc = dZ._2
836- $Tuple2(((di ++ db) :+ dX), dc)
840+ let ee = cZ(I, da, au, aC(I), az, at)
841+ let dg = ee._1
842+ let dh = ee._2
843+ $Tuple2(((dn ++ dg) :+ ec), dh)
837844 }
838845 }
839846 }
840847 }
841848 }
842849
843850
844851
845-@Callable(bt)
846-func unstakeNFT (cV) = {
847- let di = bs(bt)
848- if ((size(bt.payments) != 0))
852+@Callable(bz)
853+func unstakeNFT (da) = {
854+ let dn = by(bz)
855+ if ((size(bz.payments) != 0))
849856 then throw("No payments required")
850857 else {
851- let S = fromBase58String(cV)
852- let I = toString(bt.caller)
853- let dT = value(assetInfo(S))
854- let ce = R(cV, I)
855- if (!(isDefined(getInteger(ce))))
856- then throw((("NFT " + dT.name) + " is not staked by you"))
858+ let U = fromBase58String(da)
859+ let I = toString(bz.caller)
860+ let dY = value(assetInfo(U))
861+ let ch = T(da, I)
862+ if (!(isDefined(getInteger(ch))))
863+ then throw((("NFT " + dY.name) + " is not staked by you"))
857864 else {
858- let dU = T(I)
859- let dW = split_4C(valueOrElse(getString(dU), ""), "_")
860- let A = indexOf(dW, cV)
865+ let dZ = V(I)
866+ let eb = split_4C(valueOrElse(getString(dZ), ""), "_")
867+ let A = indexOf(eb, da)
861868 if (!(isDefined(A)))
862- then throw(("Your staked NFTs don't contain " + cV))
869+ then throw(("Your staked NFTs don't contain " + da))
863870 else {
864- let dX = if ((size(dW) > 1))
865- then StringEntry(dU, makeString_2C(removeByIndex(dW, value(A)), "_"))
866- else DeleteEntry(dU)
867- let ea = (dT.issuer == this)
868- if (ea)
871+ let ec = if ((size(eb) > 1))
872+ then StringEntry(dZ, makeString_2C(removeByIndex(eb, value(A)), "_"))
873+ else DeleteEntry(dZ)
874+ let ef = (dY.issuer == this)
875+ if (ef)
869876 then {
870- let eb = valueOrElse(getInteger(az(I)), 0)
871- let ec = (cS(value(dT.description)) * 10000)
872- let ed = bZ(0, I, -(ec))
873- let db = ed._1
874- let dc = ed._2
875- $Tuple2(((((((db :+ dX) :+ IntegerEntry(az(I), (eb - 1))) :+ IntegerEntry(aw, max([0, (valueOrElse(getInteger(aw), 0) - 1)]))) :+ DeleteEntry(R(toBase58String(S), I))) :+ ScriptTransfer(bt.caller, 1, S)) ++ di), dc)
877+ let eg = valueOrElse(getInteger(aB(I)), 0)
878+ let eh = (cV(value(dY.description)) * 10000)
879+ let ei = cc(0, I, -(eh))
880+ let dg = ei._1
881+ let dh = ei._2
882+ $Tuple2(((((((dg :+ ec) :+ IntegerEntry(aB(I), (eg - 1))) :+ IntegerEntry(ay, max([0, (valueOrElse(getInteger(ay), 0) - 1)]))) :+ DeleteEntry(T(toBase58String(U), I))) :+ ScriptTransfer(bz.caller, 1, U)) ++ dn), dh)
876883 }
877884 else {
878- let ee = cP(dT)
879- if ((ee == ""))
885+ let ej = cS(dY)
886+ if ((ej == ""))
880887 then throw("Only WavesLands and Arkimals NFT tokens are accepted")
881888 else {
882- let ef = valueOrElse(getInteger(aA(I)), 0)
883- let eg = bZ(0, I, -(as))
884- let db = eg._1
885- let dc = eg._2
886- $Tuple2((((((db :+ dX) :+ IntegerEntry(aA(I), (ef - 1))) :+ DeleteEntry(R(toBase58String(S), I))) :+ ScriptTransfer(bt.caller, 1, S)) ++ di), dc)
889+ let ek = valueOrElse(getInteger(aC(I)), 0)
890+ let el = cc(0, I, -(au))
891+ let dg = el._1
892+ let dh = el._2
893+ $Tuple2((((((dg :+ ec) :+ IntegerEntry(aC(I), (ek - 1))) :+ DeleteEntry(T(toBase58String(U), I))) :+ ScriptTransfer(bz.caller, 1, U)) ++ dn), dh)
887894 }
888895 }
889896 }
890897 }
891898 }
892899 }
893900
894901
895902
896-@Callable(bt)
897-func exchangeNFTs () = if ((bt.caller != this))
903+@Callable(bz)
904+func exchangeNFTs () = if ((bz.caller != this))
898905 then throw("Temporarily disabled")
899906 else {
900- let di = bs(bt)
901- if ((3 > size(bt.payments)))
902- then throw("Min one USDT and 2 NFT payments allowed")
903- else if ((size(bt.payments) > 6))
904- then throw("Max one USDT and 5 NFT payments allowed")
907+ let dn = by(bz)
908+ if ((3 > size(bz.payments)))
909+ then throw("Min one WLGOLD and 2 NFT payments allowed")
910+ else if ((size(bz.payments) > 6))
911+ then throw("Max one WLGOLD and 5 NFT payments allowed")
905912 else {
906- let I = toString(bt.caller)
907- func eh (aH,dl) = {
908- let S = valueOrErrorMessage(dl.assetId, "WAVES payments not allowed")
909- if ((S == k))
910- then $Tuple3((aH._1 + dl.amount), aH._2, aH._3)
913+ let I = toString(bz.caller)
914+ func em (aJ,dq) = {
915+ let U = valueOrErrorMessage(dq.assetId, "WAVES payments not allowed")
916+ if ((U == L))
917+ then $Tuple3((aJ._1 + dq.amount), aJ._2, aJ._3)
911918 else {
912- let dT = value(assetInfo(S))
913- if ((dT.issuer != this))
919+ let dY = value(assetInfo(U))
920+ if ((dY.issuer != this))
914921 then throw("Only WL-issued NFTs allowed")
915922 else {
916- let bR = cS(value(dT.description))
917- $Tuple3(aH._1, (aH._2 + bR), (aH._3 :+ Burn(S, 1)))
923+ let en = cX(value(dY.description))
924+ if (if ((aJ._4 > 0))
925+ then (en != aJ._4)
926+ else false)
927+ then throw("You can exchange only NFTs of the same rarity")
928+ else {
929+ let bX = cV(value(dY.description))
930+ $Tuple4(aJ._1, (aJ._2 + bX), (aJ._3 :+ Burn(U, 1)), en)
931+ }
918932 }
919933 }
920934 }
921935
922- let ei = {
923- let aJ = bt.payments
924- let aK = size(aJ)
925- let aL = $Tuple3(0, 0, nil)
926- func aM (aN,aO) = if ((aO >= aK))
927- then aN
928- else eh(aN, aJ[aO])
936+ let eo = {
937+ let aL = bz.payments
938+ let aM = size(aL)
939+ let aN = $Tuple4(0, 0, nil, -1)
940+ func aO (aP,aQ) = if ((aQ >= aM))
941+ then aP
942+ else em(aP, aL[aQ])
929943
930- func aP (aN,aO) = if ((aO >= aK))
931- then aN
944+ func aR (aP,aQ) = if ((aQ >= aM))
945+ then aP
932946 else throw("List size exceeds 6")
933947
934- aP(aM(aM(aM(aM(aM(aM(aL, 0), 1), 2), 3), 4), 5), 6)
948+ aR(aO(aO(aO(aO(aO(aO(aN, 0), 1), 2), 3), 4), 5), 6)
935949 }
936- let ej = ei._1
937- let ek = ei._2
938- let el = ei._3
939- let bX = if ((ek == 3))
940- then 2
941- else if ((ek == 5))
942- then 3
943- else if ((ek == 10))
944- then 4
945- else throw("Only bonuses of 3%, 5% or 10% are supported")
946- let em = (ej - (ek * b))
947- if ((0 > em))
948- then throw((("You need to attach " + toString(ek)) + " USDT as fee"))
950+ let ep = eo._1
951+ let eq = eo._2
952+ let er = eo._3
953+ let bW = eo._4
954+ let es = if ((bW == bp))
955+ then if ((be[bf] > eq))
956+ then bp
957+ else if ((be[bg] > eq))
958+ then bq
959+ else throw((("You can advance only one level of rarity, max total bonus " + toString(be[bg])) + "%"))
960+ else if ((bW == bq))
961+ then if ((be[bg] > eq))
962+ then bq
963+ else if ((be[bh] > eq))
964+ then br
965+ else throw((("You can advance only one level of rarity, max total bonus " + toString(be[bh])) + "%"))
966+ else if ((bW == br))
967+ then if ((be[bh] > eq))
968+ then br
969+ else bs
970+ else if ((bW == bs))
971+ then bs
972+ else if ((bW == bt))
973+ then throw("You can't exchange NFTs of this rarity")
974+ else throw("Unknown rarity")
975+ let et = fraction(eq, 100, cv(0))
976+ let eu = (ep - et)
977+ let ev = (et / 2)
978+ let dx = W(invoke(D, "burnWlgold", [(et - ev)], nil))
979+ if ((0 > eu))
980+ then throw((("You need to attach " + af(et, 8)) + " WLGOLD as fee"))
949981 else {
950- let en = if ((em > 0))
951- then [ScriptTransfer(bt.caller, em, k)]
982+ let ew = if ((eu > 0))
983+ then [ScriptTransfer(bz.caller, eu, L)]
952984 else nil
953- let eo = bY(bX, bt.caller)
954- let ep = eo._1
955- let bV = eo._2
956- let eq = size(el)
957- let er = if ((eq == 0))
985+ let ex = bS(bk, es, bv, es, eq, bd, bx, bz.caller)
986+ let ey = ex._1
987+ let cb = ex._2
988+ let ez = size(er)
989+ let eA = if ((ez == 0))
958990 then nil
959- else [IntegerEntry(av, (valueOrElse(getInteger(av), 0) + eq))]
960- $Tuple2(((((ep ++ el) ++ er) ++ di) ++ en), bV)
991+ else [IntegerEntry(ax, (valueOrElse(getInteger(ax), 0) + ez))]
992+ $Tuple2((((((ey ++ er) ++ eA) ++ dn) ++ ew) :+ ScriptTransfer(addressFromStringValue(getStringValue(D, aW)), ev, L)), $Tuple2(cb, dx))
961993 }
962994 }
963995 }
964996
965997
966998
967-@Callable(bt)
968-func openNftChest () = if ((bt.caller != this))
999+@Callable(bz)
1000+func openNftChest () = if ((bz.caller != this))
9691001 then throw("Permission denied")
9701002 else $Tuple2(nil, 0)
9711003
9721004

github/deemru/w8io/026f985 
523.95 ms