tx · 9SE62DHbFfFbbZQXXRaUEGKirf2imixTrqmk9hDGYSKv

3NAefciWv6f9fWvEXdGgpHfanJFG8HqfjuT:  -0.04200000 Waves

2023.09.21 14:42 [2765090] smart account 3NAefciWv6f9fWvEXdGgpHfanJFG8HqfjuT > SELF 0.00000000 Waves

{ "type": 13, "id": "9SE62DHbFfFbbZQXXRaUEGKirf2imixTrqmk9hDGYSKv", "fee": 4200000, "feeAssetId": null, "timestamp": 1695296562694, "version": 2, "chainId": 84, "sender": "3NAefciWv6f9fWvEXdGgpHfanJFG8HqfjuT", "senderPublicKey": "D1BL65meykxFZTCuq7jq9HSGLLnWvQamQPUNrguW5w39", "proofs": [ "3wGFUVuprVMB8MLkLq19BMGmfwk4srtkmpSsd53w4CuWnutpu5t7M8VFjt2q1X7h4E6c71piY6mHPqK3p4CyuTtG" ], "script": "base64:BgKmLQgCEgUKAwEEARIHCgUBBAEIARIDCgEIEgQKAgEEEgQKAgEEEgMKAQESABIECgIIARIAEgQKAggBEgQKAggBEgQKAgEBEgMKAQESBQoDAQEBEgUKAwEIARIECgIBCBIECgIBCBIECgIICBIAEgASAwoBCBIFCgMBAQESBAoCCAESBAoCAQESBAoCCAgSCwoJCAEBAgECCAQEEgYKBAgIAQgSACIGc2NhbGU4IgxzY2FsZThCaWdJbnQiB3NjYWxlMTgiCnplcm9CaWdJbnQiBGJpZzAiBGJpZzEiBGJpZzIiBGJpZzMiBGJpZzQiCnNsaXBwYWdlNEQiC3dhdmVzU3RyaW5nIgphbXBJbml0aWFsIgVBbXVsdCIFRGNvbnYiA1NFUCIFRU1QVFkiClBvb2xBY3RpdmUiClBvb2xQdXREaXMiDlBvb2xNYXRjaGVyRGlzIgxQb29sU2h1dGRvd24iDmlkeFBvb2xBZGRyZXNzIglpZHhQb29sU3QiCWlkeExQQXNJZCIJaWR4QW1Bc0lkIglpZHhQckFzSWQiC2lkeEFtdEFzRGNtIg1pZHhQcmljZUFzRGNtIgtpZHhJQW10QXNJZCINaWR4SVByaWNlQXNJZCIPaWR4RmFjdFN0YWtDbnRyIhJpZHhGYWN0b3J5UmVzdENudHIiEGlkeEZhY3RTbGlwcENudHIiEWlkeEZhY3RHd3hSZXdDbnRyIgpmZWVEZWZhdWx0IgJ0MSIHb3JpZ1ZhbCINb3JpZ1NjYWxlTXVsdCIIdDFCaWdJbnQiAmYxIgN2YWwiD3Jlc3VsdFNjYWxlTXVsdCIMZnJvbVgxOFJvdW5kIgVyb3VuZCICdDIiAmYyIgJ0cyIDYW10IghyZXNTY2FsZSIIY3VyU2NhbGUiA2FicyIJYWJzQmlnSW50IgJmYyITa2V5TWFuYWdlclB1YmxpY0tleSIWa2V5TWFuYWdlclZhdWx0QWRkcmVzcyICcGwiAnBoIgFoIgF0IgNwYXUiAnVhIgR0eElkIgNnYXUiAmFhIgJwYSIDYW1wIg1rZXlBbXBIaXN0b3J5IgxoZWlnaHRCbG9ja3MiFGtleUNoYW5nZUFtcExhc3RDYWxsIgZrZXlGZWUiA2ZlZSIGa2V5RExwIhVrZXlETHBSZWZyZXNoZWRIZWlnaHQiEmtleURMcFJlZnJlc2hEZWxheSIWZExwUmVmcmVzaERlbGF5RGVmYXVsdCIPZExwUmVmcmVzaERlbGF5IgRmY2ZnIgRtdHBrIgJwYyIGaUFtdEFzIgVpUHJBcyIDbWJhIgViQVN0ciIDYXBzIhxrZXlBbGxvd2VkTHBTdGFibGVTY3JpcHRIYXNoIhZrZXlGZWVDb2xsZWN0b3JBZGRyZXNzIhZrZXlTa2lwT3JkZXJWYWxpZGF0aW9uIgtwb29sQWRkcmVzcyIPdGhyb3dPcmRlckVycm9yIgpvcmRlclZhbGlkIg5vcmRlclZhbGlkSW5mbyILc2VuZGVyVmFsaWQiDG1hdGNoZXJWYWxpZCIXYWRkcmVzc0Zyb21TdHJpbmdPclRoaXMiDWFkZHJlc3NTdHJpbmciByRtYXRjaDAiAWEiHGdldE1hbmFnZXJWYXVsdEFkZHJlc3NPclRoaXMiDmZhY3RvcnlBZGRyZXNzIgNmY2EiAXMiBHN0cmYiBGFkZHIiA2tleSIEaW50ZiIIdGhyb3dFcnIiA21zZyIGZm10RXJyIgVpbkZlZSIBQCIGb3V0RmVlIgFBIgNpZ3MiAm1wIhNmZWVDb2xsZWN0b3JBZGRyZXNzIgNncGMiBWFtdEFzIgdwcmljZUFzIghpUHJpY2VBcyIMcGFyc2VBc3NldElkIgVpbnB1dCIPYXNzZXRJZFRvU3RyaW5nIg9wYXJzZVBvb2xDb25maWciCnBvb2xDb25maWciEHBvb2xDb25maWdQYXJzZWQiCyR0MDg2MDg4Nzk0Ig5jZmdQb29sQWRkcmVzcyINY2ZnUG9vbFN0YXR1cyIMY2ZnTHBBc3NldElkIhBjZmdBbW91bnRBc3NldElkIg9jZmdQcmljZUFzc2V0SWQiFmNmZ0Ftb3VudEFzc2V0RGVjaW1hbHMiFWNmZ1ByaWNlQXNzZXREZWNpbWFscyIDZ2ZjIg1mYWN0b3J5Q29uZmlnIg9zdGFraW5nQ29udHJhY3QiD3NsaXBhZ2VDb250cmFjdCILZ3d4Q29udHJhY3QiDHJlc3RDb250cmFjdCIRZGF0YVB1dEFjdGlvbkluZm8iDWluQW10QXNzZXRBbXQiD2luUHJpY2VBc3NldEFtdCIIb3V0THBBbXQiBXByaWNlIgpzbGlwQnlVc2VyIgxzbGlwcGFnZVJlYWwiCHR4SGVpZ2h0Igt0eFRpbWVzdGFtcCIMc2xpcGFnZUFtQW10IgxzbGlwYWdlUHJBbXQiEWRhdGFHZXRBY3Rpb25JbmZvIg5vdXRBbXRBc3NldEFtdCIQb3V0UHJpY2VBc3NldEFtdCIHaW5McEFtdCINZ2V0QWNjQmFsYW5jZSIHYXNzZXRJZCIEY3BiaSIIcHJBbXRYMTgiCGFtQW10WDE4IgVjcGJpciIDdmFkIgJBMSICQTIiCHNsaXBwYWdlIgRkaWZmIgRwYXNzIgJ2ZCICRDEiAkQwIgRzbHBnIgRmYWlsIgNwY3AiCmFtQXNzZXREY20iCnByQXNzZXREY20iBWFtQW10IgVwckFtdCILYW10QXNBbXRYMTgiCnByQXNBbXRYMTgiCmNhbGNQcmljZXMiBWxwQW10IghhbXRBc0RjbSIHcHJBc0RjbSIIcHJpY2VYMTgiCGxwQW10WDE4Ig1scFBySW5BbUFzWDE4Ig1scFBySW5QckFzWDE4Ig9jYWxjdWxhdGVQcmljZXMiAXAiB3Rha2VGZWUiBmFtb3VudCIJZmVlQW1vdW50IgRnZXREIgJ4cCIDeHAwIgN4cDEiA2FubiILeHAwX3hwMV9uX24iBWFubl9zIgVhbm5fMSIJY2FsY0ROZXh0IgFkIgJkZCIDZGRkIgJkcCIEY2FsYyIDYWNjIgFpIgVkTmV4dCIIZERpZmZSYXciBWREaWZmIgNhcnIiDSR0MDEzMjk5MTMzNDciAiRsIgIkcyIFJGFjYzAiBSRmMF8xIgIkYSICJGkiBSRmMF8yIgVmb3VuZCIDZWdvIgZ0eElkNTgiCnBtdEFzc2V0SWQiCHBtdExwQW10Igt1c2VyQWRkcmVzcyIEbHBJZCIEYW1JZCIEcHJJZCIFYW1EY20iBXByRGNtIgNzdHMiB2xwRW1pc3MiCWFtQmFsYW5jZSIMYW1CYWxhbmNlWDE4IglwckJhbGFuY2UiDHByQmFsYW5jZVgxOCILY3VyUHJpY2VYMTgiCGN1clByaWNlIgtwbXRMcEFtdFgxOCIKbHBFbWlzc1gxOCILb3V0QW1BbXRYMTgiC291dFByQW10WDE4IghvdXRBbUFtdCIIb3V0UHJBbXQiBXN0YXRlIgNlcG8iB2luQW1BbXQiBmluQW1JZCIHaW5QckFtdCIGaW5QcklkIgZpc0V2YWwiBmVtaXRMcCIKaXNPbmVBc3NldCIQdmFsaWRhdGVTbGlwcGFnZSIGcG10QW10IgVwbXRJZCIHYW1JZFN0ciIHcHJJZFN0ciIGYW10RGNtIghwcmljZURjbSIEbHBFbSIPaW5BbUFzc2V0QW10WDE4Ig9pblByQXNzZXRBbXRYMTgiDHVzZXJQcmljZVgxOCIBciIGY2hlY2tEIgtzbGlwcGFnZVgxOCIPc2xpcHBhZ2VSZWFsWDE4Ig1scEVtaXNzaW9uWDE4IgpwclZpYUFtWDE4IgphbVZpYVByWDE4IgxleHBlY3RlZEFtdHMiEWV4cEFtdEFzc2V0QW10WDE4IhNleHBQcmljZUFzc2V0QW10WDE4IgljYWxjTHBBbXQiDmNhbGNBbUFzc2V0UG10Ig5jYWxjUHJBc3NldFBtdCIMc2xpcHBhZ2VDYWxjIgllbWl0THBBbXQiBmFtRGlmZiIGcHJEaWZmIg0kdDAyMTEwOTIxNDU0Igp3cml0ZUFtQW10Igp3cml0ZVByQW10Igtjb21tb25TdGF0ZSIFZ2V0WUQiAUQiAW4iAXgiCmFQcmVjaXNpb24iAWMiAWIiA2N1ciINJHQwMjI2NDkyMjY2OSIBeSIFeU5leHQiBXlEaWZmIg0kdDAyMjk3NjIzMDIzIgdjYWxjRExwIg1hbW91bnRCYWxhbmNlIgxwcmljZUJhbGFuY2UiCmxwRW1pc3Npb24iCnVwZGF0ZWRETHAiDmNhbGNDdXJyZW50RExwIhBhbW91bnRBc3NldERlbHRhIg9wcmljZUFzc2V0RGVsdGEiFGxwQXNzZXRFbWlzc2lvbkRlbHRhIhJhbW91bnRBc3NldEJhbGFuY2UiEXByaWNlQXNzZXRCYWxhbmNlIg9scEFzc2V0RW1pc3Npb24iCmN1cnJlbnRETHAiEnJlZnJlc2hETHBJbnRlcm5hbCIXYW1vdW50QXNzZXRCYWxhbmNlRGVsdGEiFnByaWNlQXNzZXRCYWxhbmNlRGVsdGEiB2FjdGlvbnMiEnZhbGlkYXRlVXBkYXRlZERMcCIGb2xkRExwIht2YWxpZGF0ZU1hdGNoZXJPcmRlckFsbG93ZWQiBW9yZGVyIhFhbW91bnRBc3NldEFtb3VudCIQcHJpY2VBc3NldEFtb3VudCINJHQwMjUyMjEyNTQzMyIDZExwIg0kdDAyNTc3NTI1ODc1Ig11bnVzZWRBY3Rpb25zIgZkTHBOZXciDGlzT3JkZXJWYWxpZCIEaW5mbyICY2ciA3BtdCICY3AiBmNhbGxlciIHYW1Bc1BtdCIHcHJBc1BtdCINY2FsY1B1dE9uZVRrbiIJcG10QW10UmF3Igt3aXRoVGFrZUZlZSINY2hlY2hFbWlzc2lvbiINJHQwMjg1MzEyODk5MyIMYW1CYWxhbmNlT2xkIgxwckJhbGFuY2VPbGQiDSR0MDI4OTk5MjkxNzUiC2FtQW1vdW50UmF3IgtwckFtb3VudFJhdyINJHQwMjkxNzkyOTQzMyIIYW1BbW91bnQiCHByQW1vdW50IgxhbUJhbGFuY2VOZXciDHByQmFsYW5jZU5ldyIIbHBBbW91bnQiDnBvb2xQcm9wb3J0aW9uIg9hbW91bnRBc3NldFBhcnQiDnByaWNlQXNzZXRQYXJ0IglscEFtdEJvdGgiBWJvbnVzIhNnZXRPbmVUa25WMkludGVybmFsIgpvdXRBc3NldElkIgxtaW5PdXRBbW91bnQiCHBheW1lbnRzIgxvcmlnaW5DYWxsZXIiDXRyYW5zYWN0aW9uSWQiCmFtRGVjaW1hbHMiCnByRGVjaW1hbHMiCnBvb2xTdGF0dXMiDSR0MDMxNTQ1MzE2NTYiCHRvdGFsR2V0Igt0b3RhbEFtb3VudCINJHQwMzE4NDYzMjE1MyIFb3V0QW0iBW91dFByIghjdXJQclgxOCIFY3VyUHIiEW91dEFzc2V0SWRPcldhdmVzIhBzZW5kRmVlVG9NYXRjaGVyIgRidXJuIg0kdDAzMjkzODMzMjg4IhBmZWVBbW91bnRGb3JDYWxjIhBvdXRJbkFtb3VudEFzc2V0Ig0kdDAzMzI5MTMzMzk5IhFyZWZyZXNoRExwQWN0aW9ucyIRaXNVcGRhdGVkRExwVmFsaWQiFm1hbmFnZXJQdWJsaWNLZXlPclVuaXQiE21hbmFnZXJWYXVsdEFkZHJlc3MiAnBkIglpc01hbmFnZXIiAnBrIgttdXN0TWFuYWdlciIEZ2V0WSIJaXNSZXZlcnNlIhNwb29sQW1vdW50SW5CYWxhbmNlIg0kdDAzNDg4NjM0OTA2Ig0kdDAzNTIzNzM1Mjg0IhNza2lwT3JkZXJWYWxpZGF0aW9uIg1jbGVhbkFtb3VudEluIg1mZWVQb29sQW1vdW50Ig0kdDAzNTYzNjM2MDYwIghhc3NldE91dCICZHkiC3RvdGFsR2V0UmF3IgVuZXdYcCIEbmV3RCIMYW1vdW50T3V0TWluIglhZGRyZXNzVG8iC3N3YXBDb250YWN0IhJpc1Bvb2xTd2FwRGlzYWJsZWQiDmlzU3dhcERpc2FibGVkIgZjaGVja3MiB2Fzc2V0SW4iDSR0MDM3Nzk1MzgxODkiCGNoZWNrTWluIgRzbGlwIglhdXRvU3Rha2UiB2ZhY3RDZmciC3N0YWtpbmdDbnRyIghzbGlwQ250ciIKYW1Bc3NldFBtdCIKcHJBc3NldFBtdCIBZSIJbHBBc3NldElkIgJlbCIGbGVnYWN5IgJzYSICc3AiCGxwVHJuc2ZyIgJzcyINJHQwNDI2NDQ0Mjc4NiIFY2hlY2siFGxwQXNzZXRFbWlzc2lvbkFmdGVyIiBpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZCINaXNQdXREaXNhYmxlZCINJHQwNDQ0Mjc0NDU4NSIHZXN0aW1MUCINJHQwNDU0NzA0NTgxOSIUcGF5bWVudEluQW1vdW50QXNzZXQiDSR0MDQ1ODIyNDU5MzAiB21heFNscGciBmVzdFB1dCINJHQwNDY5NjA0NzAyNSIJb3V0QW10QW10Ig0kdDA0ODE5ODQ4MjgwIg1pc0dldERpc2FibGVkIg0kdDA0ODg5ODQ5MDUzIhhsYXN0UmVmcmVzaGVkQmxvY2tIZWlnaHQiHWNoZWNrTGFzdFJlZnJlc2hlZEJsb2NrSGVpZ2h0Ig0kdDA0OTU3NzQ5NjQxIhBkTHBVcGRhdGVBY3Rpb25zIg1scEFzc2V0QW1vdW50IgVpbmRleCIEbmV3WSINJHQwNTA2NTE1MDcwNiINJHQwNTEwODE1MTE5NiIOc3VtT2ZHZXRBc3NldHMiEm5vTGVzc1RoZW5BbXRBc3NldCIUbm9MZXNzVGhlblByaWNlQXNzZXQiFGJ1cm5MUEFzc2V0T25GYWN0b3J5Ig0kdDA1MjM2MjUyNDQzIg1jaGVja1BheW1lbnRzIgpmYWN0b3J5Q2ZnIgdzdGFraW5nIgp1bnN0YWtlSW52IgF2IgVidXJuQSINJHQwNTM0NzA1MzU1MSINdW5zdGFrZUFtb3VudCIVbm9MZXNzVGhlbkFtb3VudEFzc2V0IgNyZXMiDGNoZWNrQW1vdW50cyINJHQwNTQ4MDI1NDg4MyIXbHBBc3NldFJlY2lwaWVudEFkZHJlc3MiDSR0MDU1OTA1NTYwOTMiEHBheW1lbnRBbW91bnRSYXciDnBheW1lbnRBc3NldElkIg0kdDA1NjIyMTU2MzI0Ig0kdDA1NjQ3MjU2NTc2IghhbXRBc1N0ciIHcHJBc1N0ciICcHIiDHJlc1NjYWxlTXVsdCIHdXNyQWRkciIHcG10QXNJZCIDY2ZnIg0kdDA1OTI5NzU5NDk2IgRsaXN0IgVkZWxheSIFZGVsdGEiBnRhcmdldCIGY3VyQW1wIgluZXdBbXBSYXciBm5ld0FtcCIIbGFzdENhbGwiBHdhaXQiAnR4IgZ2ZXJpZnkiD3RhcmdldFB1YmxpY0tleSIKbWF0Y2hlclB1YiINJHQwNjA0Mjk2MDU0NiIHbmV3SGFzaCILYWxsb3dlZEhhc2giC2N1cnJlbnRIYXNohQEAAWEAgMLXLwABYgkAtgIBAIDC1y8AAWMJALYCAQCAgJC7utat8A0AAWQJALYCAQAAAAFlCQC2AgEAAAABZgkAtgIBAAEAAWcJALYCAQACAAFoCQC2AgEAAwABaQkAtgIBAAQAAWoJALYCAQkAZQIFAWEJAGkCCQBoAgUBYQABBQFhAAFrAgVXQVZFUwABbAAyAAFtAgMxMDAAAW4CATEAAW8CAl9fAAFwAgAAAXEAAQABcgACAAFzAAMAAXQABAABdQABAAF2AAIAAXcAAwABeAAEAAF5AAUAAXoABgABQQAHAAFCAAgAAUMACQABRAABAAFFAAYAAUYABwABRwAKAAFICQBrAwAKBQFhAJBOAQFJAgFKAUsJALwCAwkAtgIBBQFKBQFjCQC2AgEFAUsBAUwCAUoBSwkAvAIDBQFKBQFjBQFLAQFNAgFOAU8JAKADAQkAvAIDBQFOCQC2AgEFAU8FAWMBAVADAU4BTwFRCQCgAwEJAL0CBAUBTgkAtgIBBQFPBQFjBQFRAQFSAgFKAUsJALwCAwUBSgUBYwkAtgIBBQFLAQFTAgFOAU8JALwCAwUBTgkAtgIBBQFPBQFjAQFUAwFVAVYBVwkAawMFAVUFAVYFAVcBAVgBAU4DCQC/AgIFAWQFAU4JAL4CAQUBTgUBTgEBWQEBTgMJAL8CAgUBZAUBTgkAvgIBBQFOBQFOAQFaAAITJXNfX2ZhY3RvcnlDb250cmFjdAECYWEAAhQlc19fbWFuYWdlclB1YmxpY0tleQECYWIAAhclc19fbWFuYWdlclZhdWx0QWRkcmVzcwECYWMAAhElcyVzX19wcmljZV9fbGFzdAECYWQCAmFlAmFmCQC5CQIJAMwIAgIYJXMlcyVkJWRfX3ByaWNlX19oaXN0b3J5CQDMCAIJAKQDAQUCYWUJAMwIAgkApAMBBQJhZgUDbmlsBQFvAQJhZwICYWgCYWkJAKwCAgkArAICCQCsAgICCyVzJXMlc19fUF9fBQJhaAICX18FAmFpAQJhagICYWgCYWkJAKwCAgkArAICCQCsAgICCyVzJXMlc19fR19fBQJhaAICX18FAmFpAQJhawACDyVzX19hbW91bnRBc3NldAECYWwAAg4lc19fcHJpY2VBc3NldAECYW0AAgclc19fYW1wAQJhbgECYW8JAKwCAgILJXMlZF9fYW1wX18JAKQDAQUCYW8BAmFwAAIVJXNfX2NoYW5nZUFtcExhc3RDYWxsAAJhcQIHJXNfX2ZlZQACYXIJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUCYXEFAUgAAmFzCQC5CQIJAMwIAgICJXMJAMwIAgIDZExwBQNuaWwFAW8AAmF0CQC5CQIJAMwIAgICJXMJAMwIAgISZExwUmVmcmVzaGVkSGVpZ2h0BQNuaWwFAW8AAmF1CQC5CQIJAMwIAgICJXMJAMwIAgIPcmVmcmVzaERMcERlbGF5BQNuaWwFAW8AAmF2AB4AAmF3CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFAmF1BQJhdgECYXgAAhElc19fZmFjdG9yeUNvbmZpZwECYXkAAhglcyVzX19tYXRjaGVyX19wdWJsaWNLZXkBAmF6AgJhQQJhQgkArAICCQCsAgIJAKwCAgkArAICAgglZCVkJXNfXwUCYUECAl9fBQJhQgIIX19jb25maWcBAmFDAQJhRAkArAICAiglcyVzJXNfX21hcHBpbmdzX19iYXNlQXNzZXQyaW50ZXJuYWxJZF9fBQJhRAECYUUAAgwlc19fc2h1dGRvd24BAmFGAAIdJXNfX2FsbG93ZWRMcFN0YWJsZVNjcmlwdEhhc2gBAmFHAAIXJXNfX2ZlZUNvbGxlY3RvckFkZHJlc3MBAmFIAQJhSQkArAICAhslcyVzX19za2lwT3JkZXJWYWxpZGF0aW9uX18FAmFJAQJhSgQCYUsCYUwCYU0CYU4JAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIkb3JkZXIgdmFsaWRhdGlvbiBmYWlsZWQ6IG9yZGVyVmFsaWQ9CQClAwEFAmFLAgIgKAUCYUwCASkCDSBzZW5kZXJWYWxpZD0JAKUDAQUCYU0CDiBtYXRjaGVyVmFsaWQ9CQClAwEFAmFOAQJhTwECYVAEAmFRCQCmCAEFAmFQAwkAAQIFAmFRAgdBZGRyZXNzBAJhUgUCYVEFAmFSBQR0aGlzAQJhUwAEAmFUBAJhUQkAoggBCQEBWgADCQABAgUCYVECBlN0cmluZwQCYVUFAmFRCQECYU8BBQJhVQUEdGhpcwQCYVEJAJ0IAgUCYVQJAQJhYgADCQABAgUCYVECBlN0cmluZwQCYVYFAmFRCQECYU8BBQJhVgUEdGhpcwECYVcCAmFYAmFZCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUCYVgFAmFZCQC5CQIJAMwIAgIKbWFuZGF0b3J5IAkAzAgCCQClCAEFAmFYCQDMCAICAS4JAMwIAgUCYVkJAMwIAgIMIG5vdCBkZWZpbmVkBQNuaWwCAAECYVoCAmFYAmFZCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUCYVgFAmFZCQC5CQIJAMwIAgIKbWFuZGF0b3J5IAkAzAgCCQClCAEFAmFYCQDMCAICAS4JAMwIAgUCYVkJAMwIAgIMIG5vdCBkZWZpbmVkBQNuaWwCAAECYmEBAmJiCQACAQkAuQkCCQDMCAICD2xwX3N0YWJsZS5yaWRlOgkAzAgCBQJiYgUDbmlsAgEgAQJiYwECYmIJALkJAgkAzAgCAg9scF9zdGFibGUucmlkZToJAMwIAgUCYmIFA25pbAIBIAACYVUJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQJhVwIFBHRoaXMJAQFaAAACYmQKAAJiZQkA/AcEBQJhVQIQZ2V0SW5GZWVSRUFET05MWQkAzAgCCQClCAEFBHRoaXMFA25pbAUDbmlsAwkAAQIFAmJlAgNJbnQFAmJlCQACAQkArAICCQADAQUCYmUCGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAACYmYKAAJiZQkA/AcEBQJhVQIRZ2V0T3V0RmVlUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJiZQIDSW50BQJiZQkAAgEJAKwCAgkAAwEFAmJlAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQAAmJnCQECYVcCBQR0aGlzCQECYW0AAQJiaAAJAQt2YWx1ZU9yRWxzZQIJAJsIAgUCYVUJAQJhRQAHAQJiaQAJANkEAQkBAmFXAgUCYVUJAQJheQAAAmJqCQERQGV4dHJOYXRpdmUoMTA2MikBCQECYVcCBQJhVQkBAmFHAAECYmsABAJibAkBAmFXAgUEdGhpcwkBAmFrAAQCYm0JAQJhVwIFBHRoaXMJAQJhbAAEAmJuCQECYVoCBQJhVQkBAmFDAQUCYm0EAmFBCQECYVoCBQJhVQkBAmFDAQUCYmwJALUJAgkBAmFXAgUCYVUJAQJhegIJAKQDAQUCYUEJAKQDAQUCYm4FAW8BAmJvAQJicAMJAAACBQJicAUBawUEdW5pdAkA2QQBBQJicAECYnEBAmJwAwkAAAIFAmJwBQR1bml0BQFrCQDYBAEJAQV2YWx1ZQEFAmJwAQJicgECYnMJAJkKBwkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCBQJicwUBdQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJzBQF2CQDZBAEJAJEDAgUCYnMFAXcJAQJibwEJAJEDAgUCYnMFAXgJAQJibwEJAJEDAgUCYnMFAXkJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJicwUBegkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJzBQFBAAJidAkBAmJyAQkBAmJrAAACYnUFAmJ0AAJidggFAmJ1Al8xAAJidwgFAmJ1Al8yAAJieAgFAmJ1Al8zAAJieQgFAmJ1Al80AAJieggFAmJ1Al81AAJiQQgFAmJ1Al82AAJiQggFAmJ1Al83AQJiQwAJALUJAgkBAmFXAgUCYVUJAQJheAAFAW8AAmJECQECYkMAAAJiRQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCYkQFAUQCIEludmFsaWQgc3Rha2luZyBjb250cmFjdCBhZGRyZXNzAAJiRgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCYkQFAUYCIEludmFsaWQgc2xpcGFnZSBjb250cmFjdCBhZGRyZXNzAAJiRwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCYkQFAUcCHEludmFsaWQgZ3d4IGNvbnRyYWN0IGFkZHJlc3MAAmJICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJiRAUBRQIcSW52YWxpZCBnd3ggY29udHJhY3QgYWRkcmVzcwECYkkKAmJKAmJLAmJMAmJNAmJOAmJPAmJQAmJRAmJSAmJTCQC5CQIJAMwIAgIUJWQlZCVkJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJiSgkAzAgCCQCkAwEFAmJLCQDMCAIJAKQDAQUCYkwJAMwIAgkApAMBBQJiTQkAzAgCCQCkAwEFAmJOCQDMCAIJAKQDAQUCYk8JAMwIAgkApAMBBQJiUAkAzAgCCQCkAwEFAmJRCQDMCAIJAKQDAQUCYlIJAMwIAgkApAMBBQJiUwUDbmlsBQFvAQJiVAYCYlUCYlYCYlcCYk0CYlACYlEJALkJAgkAzAgCAgwlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJiVQkAzAgCCQCkAwEFAmJWCQDMCAIJAKQDAQUCYlcJAMwIAgkApAMBBQJiTQkAzAgCCQCkAwEFAmJQCQDMCAIJAKQDAQUCYlEFA25pbAUBbwECYlgBAmJZAwkAAAIFAmJZAgVXQVZFUwgJAO8HAQUEdGhpcwlhdmFpbGFibGUJAPAHAgUEdGhpcwkA2QQBBQJiWQECYloCAmNhAmNiCQC8AgMFAmNhBQFjBQJjYgECY2MDAmNhAmNiAVEJAL0CBAUCY2EFAWMFAmNiBQFRAQJjZAMCY2UCY2YCY2cEAmNoCQC8AgMJALgCAgUCY2UFAmNmBQFiBQJjZgQCY2kJAL8CAgkAuAICBQJjZwkBAVgBBQJjaAUBZAMJAQEhAQUCY2kJAAIBCQCsAgICCkJpZyBzbHBnOiAJAKYDAQUCY2gJAJQKAgUCY2kJAJkDAQkAzAgCBQJjZQkAzAgCBQJjZgUDbmlsAQJjagMCY2sCY2wCY20EAmNoCQC8AgMFAmNsBQFiBQJjawQCY24JAL8CAgUCY20FAmNoAwMFAmNuBgkAvwICBQJjbAUCY2sJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCmAwEFAmNsAgEgCQCmAwEFAmNrAgEgCQCmAwEFAmNoAgEgCQCmAwEFAmNtBQJjbgECY28EAmNwAmNxAmNyAmNzBAJjdAkBAUkCBQJjcgUCY3AEAmN1CQEBSQIFAmNzBQJjcQkBAmJaAgUCY3UFAmN0AQJjdgMCY3ICY3MCY3cEAmN4BQJiQQQCY3kFAmJCBAJjegkBAmNvBAUCY3gFAmN5BQJjcgUCY3MEAmNiCQEBSQIFAmNyBQJjeAQCY2EJAQFJAgUCY3MFAmN5BAJjQQkBAUkCBQJjdwUBYQQCY0IJAQJiWgIFAmNiBQJjQQQCY0MJAQJiWgIFAmNhBQJjQQkAzAgCBQJjegkAzAgCBQJjQgkAzAgCBQJjQwUDbmlsAQJjRAMCY3ICY3MCY3cEAmNFCQECY3YDBQJjcgUCY3MFAmN3CQDMCAIJAQFNAgkAkQMCBQJjRQAABQFhCQDMCAIJAQFNAgkAkQMCBQJjRQABBQFhCQDMCAIJAQFNAgkAkQMCBQJjRQACBQFhBQNuaWwBAmNGAgJjRwJhcgQCY0gDCQAAAgUCYXIAAAAACQBrAwUCY0cFAmFyBQFhCQCUCgIJAGUCBQJjRwUCY0gFAmNIAQJjSQECY0oEAmNLCQCRAwIFAmNKAAAEAmNMCQCRAwIFAmNKAAEEAmFWCQC3AgIFAmNLBQJjTAMJAAACBQJhVgUBZQUBZQQCYVIJAQ1wYXJzZUludFZhbHVlAQUCYmcEAmNNCQBoAgUCYVIAAgQCY0UJALwCAwUCY0sFAmNMBQFmBAJjTgkAvAIDBQJjRQUBaQUBZgQCY08JALwCAwkAtgIBBQJjTQUCYVYFAWYEAmNQCQC2AgEJAGUCBQJjTQABCgECY1EBAmNSBAJjUwkAvAIDBQJjUgUCY1IFAWYEAmNUCQC8AgMFAmNTBQJjUgUBZgQCY1UJALwCAwUCY1QFAWYFAmNOCQC8AgMJALcCAgUCY08JALwCAwUCY1UFAWcFAWYFAmNSCQC3AgIJALwCAwUCY1AFAmNSBQFmCQC8AgMFAWgFAmNVBQFmCgECY1YCAmNXAmNYAwgFAmNXAl8yBQJjVwQCY1IIBQJjVwJfMQQCY1kJAQJjUQEFAmNSBAJjWgkAuAICBQJjWQkBBXZhbHVlAQUCY1IEAmRhAwkAvwICBQFlBQJjWgkAvgIBBQJjWgUCY1oDCQDAAgIFAWYFAmRhCQCUCgIFAmNZBgkAlAoCBQJjWQcEAmRiCQDMCAIAAAkAzAgCAAEJAMwIAgACCQDMCAIAAwkAzAgCAAQJAMwIAgAFCQDMCAIABgkAzAgCAAcJAMwIAgAICQDMCAIACQkAzAgCAAoJAMwIAgALCQDMCAIADAkAzAgCAA0JAMwIAgAOCQDMCAIADwkAzAgCABAFA25pbAQCZGMKAAJkZAUCZGIKAAJkZQkAkAMBBQJkZAoAAmRmCQCUCgIFAmFWBwoBAmRnAgJkaAJkaQMJAGcCBQJkaQUCZGUFAmRoCQECY1YCBQJkaAkAkQMCBQJkZAUCZGkKAQJkagICZGgCZGkDCQBnAgUCZGkFAmRlBQJkaAkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDE3CQECZGoCCQECZGcCCQECZGcCCQECZGcCCQECZGcCCQECZGcCCQECZGcCCQECZGcCCQECZGcCCQECZGcCCQECZGcCCQECZGcCCQECZGcCCQECZGcCCQECZGcCCQECZGcCCQECZGcCCQECZGcCBQJkZgAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQQCY1IIBQJkYwJfMQQCZGsIBQJkYwJfMgMFAmRrBQJjUgkAAgEJAKwCAgIZRCBjYWxjdWxhdGlvbiBlcnJvciwgRCA9IAkApgMBBQJjUgECZGwEAmRtAmRuAmRvAmRwBAJkcQUCYngEAmRyCQDYBAEJAQV2YWx1ZQEFAmJ5BAJkcwkA2AQBCQEFdmFsdWUBBQJiegQCZHQFAmJBBAJkdQUCYkIEAmR2CQCkAwEFAmJ3BAJkdwgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJkcQILV3JvbmcgTFAgaWQIcXVhbnRpdHkDCQECIT0CCQDYBAEFAmRxBQJkbgkAAgECD1dyb25nIHBtdCBhc3NldAQCZHgJAQJiWAEFAmRyBAJkeQkBAUkCBQJkeAUCZHQEAmR6CQECYlgBBQJkcwQCZEEJAQFJAgUCZHoFAmR1BAJkQgkBAmJaAgUCZEEFAmR5BAJkQwkBAU0CBQJkQgUBYQQCZEQJAQFJAgUCZG8FAWEEAmRFCQEBSQIFAmR3BQFhBAJkRgkAvAIDBQJkeQUCZEQFAmRFBAJkRwkAvAIDBQJkQQUCZEQFAmRFBAJkSAkBAVADBQJkRgUCZHQFBUZMT09SBAJkSQkBAVADBQJkRwUCZHUFBUZMT09SBAJkSgMJAAACBQJkbQIABQNuaWwJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCZHAFAmRIAwkAAAIFAmRyAgVXQVZFUwUEdW5pdAkA2QQBBQJkcgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJkcAUCZEkDCQAAAgUCZHMCBVdBVkVTBQR1bml0CQDZBAEFAmRzCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhagIJAKUIAQUCZHAFAmRtCQECYlQGBQJkSAUCZEkFAmRvBQJkQwUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmFjAAUCZEMJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJhZAIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmRDBQNuaWwJAJwKCgUCZEgFAmRJBQJkcgUCZHMFAmR4BQJkegUCZHcFAmRCBQJkdgUCZEoBAmRLDQJkbQJjZwJkTAJkTQJkTgJkTwJkcAJkUAJkUQJkUgJkUwJkVAJkVQQCZHEFAmJ4BAJkVgkA2AQBCQEFdmFsdWUBBQJieQQCZFcJANgEAQkBBXZhbHVlAQUCYnoEAmRYBQJiQQQCZFkFAmJCBAJkdgkApAMBBQJidwQCZFoICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCZHECCFdyIGxwIGFzCHF1YW50aXR5BAJkeAMFAmRQCQECYlgBBQJkVgMDBQJkUgkAAAIFAmRVBQJkVgcJAGUCCQECYlgBBQJkVgUCZFQDBQJkUgkBAmJYAQUCZFYJAGUCCQECYlgBBQJkVgUCZEwEAmR6AwUCZFAJAQJiWAEFAmRXAwMFAmRSCQAAAgUCZFUFAmRXBwkAZQIJAQJiWAEFAmRXBQJkVAMFAmRSCQECYlgBBQJkVwkAZQIJAQJiWAEFAmRXBQJkTgQCZWEJAQFJAgUCZEwFAmRYBAJlYgkBAUkCBQJkTgUCZFkEAmVjCQECYloCBQJlYgUCZWEEAmR5CQEBSQIFAmR4BQJkWAQCZEEJAQFJAgUCZHoFAmRZBAJjbAkBAmNJAQkAzAgCBQJkeQkAzAgCBQJkQQUDbmlsBAJlZAMJAAACBQJkWgAABAJjawkBAmNJAQkAzAgCCQC3AgIFAmR5BQJlYQkAzAgCCQC3AgIFAmRBBQJlYgUDbmlsBAJlZQMJAL8CAgUCY2sFAmNsBgkAAgECHEQxIHNob3VsZCBiZSBncmVhdGVyIHRoYW4gRDADCQAAAgUCZWUFAmVlBAJkQgUBZAQCZWYFAWQEAmNBBQJjawkAlwoFCQEBTQIFAmNBBQFhCQEBTQIFAmVhBQJkWAkBAU0CBQJlYgUCZFkJAQJiWgIJALcCAgUCZEEFAmViCQC3AgIFAmR5BQJlYQUCZWYJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4EAmRCCQECYloCBQJkQQUCZHkEAmVnCQC8AgMJAQFYAQkAuAICBQJkQgUCZWMFAWMFAmRCBAJlZgkBAUkCBQJjZwUBYQMDAwUCZFMJAQIhPQIFAmRCBQFkBwkAvwICBQJlZwUCZWYHCQACAQkArAICCQCsAgIJAKwCAgIPUHJpY2Ugc2xpcHBhZ2UgCQCmAwEFAmVnAgMgPiAJAKYDAQUCZWYEAmVoCQEBSQIFAmRaBQFhBAJlaQkAvQIEBQJlYQkBAmNjAwUCZEEFAmR5BQdDRUlMSU5HBQFjBQdDRUlMSU5HBAJlagkAvQIEBQJlYgUBYwkBAmNjAwUCZEEFAmR5BQVGTE9PUgUHQ0VJTElORwQCZWsDCQC/AgIFAmVpBQJlYgkAlAoCBQJlagUCZWIJAJQKAgUCZWEFAmVpBAJlbAgFAmVrAl8xBAJlbQgFAmVrAl8yBAJjawkBAmNJAQkAzAgCCQC3AgIFAmR5BQJlbAkAzAgCCQC3AgIFAmRBBQJlbQUDbmlsBAJlZQMJAL8CAgUCY2sFAmNsBgkAAgECHEQxIHNob3VsZCBiZSBncmVhdGVyIHRoYW4gRDADCQAAAgUCZWUFAmVlBAJjQQkAvAIDBQJlaAkAuAICBQJjawUCY2wFAmNsCQCXCgUJAQFQAwUCY0EFAWEFBUZMT09SCQEBUAMFAmVsBQJkWAUHQ0VJTElORwkBAVADBQJlbQUCZFkFB0NFSUxJTkcFAmRCBQJlZgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgQCZW4IBQJlZAJfMQQCZW8IBQJlZAJfMgQCZXAIBQJlZAJfMwQCZEMJAQFNAggFAmVkAl80BQFhBAJlcQkBAU0CCAUCZWQCXzUFAWEDCQBnAgAABQJlbgkAAgECB0xQIDw9IDAEAmVyAwkBASEBBQJkUQAABQJlbgQCZXMJAGUCBQJkTAUCZW8EAmV0CQBlAgUCZE4FAmVwBAJldQMDBQJkUgkAAAIFAmRVBQJkVgcJAJQKAgUCZFQAAAMDBQJkUgkAAAIFAmRVBQJkVwcJAJQKAgAABQJkVAkAlAoCBQJlbwUCZXAEAmV2CAUCZXUCXzEEAmV3CAUCZXUCXzIEAmV4CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYWMABQJkQwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmFkAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCZEMJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFnAgUCZHAFAmRtCQECYkkKBQJldgUCZXcFAmVyBQJkQwUCY2cFAmVxBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJlcwUCZXQFA25pbAkAnwoNBQJlbgUCZXIFAmRDBQJkeAUCZHoFAmRaBQJkcQUCZHYFAmV4BQJlcwUCZXQFAmRNBQJkTwECZXkDAmNKAmNYAmV6BAJlQQUBZwQCZUIJAJEDAgUCY0oDCQAAAgUCY1gAAAABAAAEAmVDCQCnAwEFAW0EAmFSCQC5AgIJAKcDAQUCYmcFAmVDBAJhVgUCZUIEAmNNCQC5AgIFAmFSBQJlQQQCZUQJALoCAgkAuQICCQC5AgIJALoCAgkAuQICBQJlegUCZXoJALkCAgUCZUIFAmVBBQJlegUCZUMJALkCAgUCY00FAmVBBAJlRQkAuAICCQC3AgIFAmFWCQC6AgIJALkCAgUCZXoFAmVDBQJjTQUCZXoKAQJjVgICY1cCZUYEAmVHBQJjVwQCZUgIBQJlRwJfMQQCZGsIBQJlRwJfMgMJAQIhPQIFAmRrBQR1bml0BQJjVwQCZUkJALoCAgkAtwICCQC5AgIFAmVIBQJlSAUCZUQJALcCAgkAuQICBQFnBQJlSAUCZUUEAmVKCQEBWQEJALgCAgUCZUkJAQV2YWx1ZQEFAmVIAwkAwAICBQFmBQJlSgkAlAoCBQJlSQUCZUYJAJQKAgUCZUkFBHVuaXQEAmRiCQDMCAIAAAkAzAgCAAEJAMwIAgACCQDMCAIAAwkAzAgCAAQJAMwIAgAFCQDMCAIABgkAzAgCAAcJAMwIAgAICQDMCAIACQkAzAgCAAoJAMwIAgALCQDMCAIADAkAzAgCAA0JAMwIAgAOBQNuaWwEAmVLCgACZGQFAmRiCgACZGUJAJADAQUCZGQKAAJkZgkAlAoCBQJlegUEdW5pdAoBAmRnAgJkaAJkaQMJAGcCBQJkaQUCZGUFAmRoCQECY1YCBQJkaAkAkQMCBQJkZAUCZGkKAQJkagICZGgCZGkDCQBnAgUCZGkFAmRlBQJkaAkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDE1CQECZGoCCQECZGcCCQECZGcCCQECZGcCCQECZGcCCQECZGcCCQECZGcCCQECZGcCCQECZGcCCQECZGcCCQECZGcCCQECZGcCCQECZGcCCQECZGcCCQECZGcCCQECZGcCBQJkZgAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPBAJlSAgFAmVLAl8xBAJkawgFAmVLAl8yAwkBAiE9AgUCZGsFBHVuaXQFAmVICQACAQkArAICAhlZIGNhbGN1bGF0aW9uIGVycm9yLCBZID0gCQCmAwEFAmVIAQJlTAMCZU0CZU4CZU8EAmVQCQC8AgMJAQJjSQEJAMwIAgkBAUwCBQJlTQkAtgIBBQJiQQkAzAgCCQEBTAIFAmVOCQC2AgEFAmJCBQNuaWwFAWMFAmVPAwkAAAIFAmVPBQFlBQFlBQJlUAECZVEDAmVSAmVTAmVUBAJlVQkAuAICCQC2AgEJAQJiWAEJAQJicQEFAmJ5BQJlUgQCZVYJALgCAgkAtgIBCQECYlgBCQECYnEBBQJiegUCZVMEAmVXCQC4AgIJALYCAQgJAQV2YWx1ZQEJAOwHAQUCYngIcXVhbnRpdHkFAmVUBAJlWAkBAmVMAwUCZVUFAmVWBQJlVwUCZVgBAmVZAwJlWgJmYQJlVAQCZVUJAGQCCQECYlgBCQECYnEBBQJieQUCZVoEAmVWCQBkAgkBAmJYAQkBAmJxAQUCYnoFAmZhBAJlVwkAZAIICQEFdmFsdWUBCQDsBwEFAmJ4CHF1YW50aXR5BQJlVAQCZVAJAQJlTAMJALYCAQUCZVUJALYCAQUCZVYJALYCAQUCZVcEAmZiCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQJhdAUGaGVpZ2h0CQDMCAIJAQtTdHJpbmdFbnRyeQIFAmFzCQCmAwEFAmVQBQNuaWwJAJQKAgUCZmIFAmVQAQJmYwICZmQCZVADCQDAAgIFAmVQBQJmZAYJAQJiYQECInVwZGF0ZWQgRExwIGxvd2VyIHRoYW4gY3VycmVudCBETHABAmZlAQJmZgQCZVUJAQJiWAEJAQJicQEFAmJ5BAJlVgkBAmJYAQkBAmJxAQUCYnoEAmZnCAUCZmYGYW1vdW50BAJmaAkAbgQIBQJmZgZhbW91bnQIBQJmZgVwcmljZQUBYQUFRkxPT1IEAmZpAwkAAAIIBQJmZglvcmRlclR5cGUFA0J1eQkAlAoCBQJmZwkBAS0BBQJmaAkAlAoCCQEBLQEFAmZnBQJmaAQCZVoIBQJmaQJfMQQCZmEIBQJmaQJfMgMDAwkBAmJoAAYJAAACBQJidwUBcwYJAAACBQJidwUBdAkAAgECDUFkbWluIGJsb2NrZWQDAwkBAiE9AggIBQJmZglhc3NldFBhaXILYW1vdW50QXNzZXQFAmJ5BgkBAiE9AggIBQJmZglhc3NldFBhaXIKcHJpY2VBc3NldAUCYnoJAAIBAglXciBhc3NldHMEAmZqCQCnAwEJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwUCYXMCATAEAmZrCQECZVkDBQJlWgUCZmEAAAQCZmwIBQJmawJfMQQCZm0IBQJmawJfMgQCZm4JAMACAgUCZm0FAmZqBAJmbwkAuQkCCQDMCAICBGRMcD0JAMwIAgkApgMBBQJmagkAzAgCAgggZExwTmV3PQkAzAgCCQCmAwEFAmZtCQDMCAICFCBhbW91bnRBc3NldEJhbGFuY2U9CQDMCAIJAKQDAQUCZVUJAMwIAgITIHByaWNlQXNzZXRCYWxhbmNlPQkAzAgCCQCkAwEFAmVWCQDMCAICGSBhbW91bnRBc3NldEJhbGFuY2VEZWx0YT0JAMwIAgkApAMBBQJlWgkAzAgCAhggcHJpY2VBc3NldEJhbGFuY2VEZWx0YT0JAMwIAgkApAMBBQJmYQkAzAgCAgggaGVpZ2h0PQkAzAgCCQCkAwEFBmhlaWdodAUDbmlsAgAJAJQKAgUCZm4FAmZvAQJmcAECY1gDCQECIT0CCQCQAwEIBQJjWAhwYXltZW50cwABCQACAQIKMSBwbW50IGV4cAQCZnEJAQV2YWx1ZQEJAJEDAggFAmNYCHBheW1lbnRzAAAEAmRuCQEFdmFsdWUBCAUCZnEHYXNzZXRJZAQCZFQIBQJmcQZhbW91bnQEAmVkCQECZGwECQDYBAEIBQJjWA10cmFuc2FjdGlvbklkCQDYBAEFAmRuBQJkVAgFAmNYBmNhbGxlcgQCZEgIBQJlZAJfMQQCZEkIBQJlZAJfMgQCZHYJAQ1wYXJzZUludFZhbHVlAQgFAmVkAl85BAJkSggFAmVkA18xMAMDCQECYmgABgkAAAIFAmR2BQF0CQACAQkArAICAg9BZG1pbiBibG9ja2VkOiAJAKQDAQUCZHYJAJcKBQUCZEgFAmRJBQJkVAUCZG4FAmRKAQJmcgoCZnMCYWkCZnQCZnUCY2cCZFECZFICZFMCZFQCZFUEAmVkCQECZEsNBQJhaQUCY2cICQEFdmFsdWUBBQJmdAZhbW91bnQICQEFdmFsdWUBBQJmdAdhc3NldElkCAkBBXZhbHVlAQUCZnUGYW1vdW50CAkBBXZhbHVlAQUCZnUHYXNzZXRJZAUCZnMJAAACBQJhaQIABQJkUQUCZFIFAmRTBQJkVAUCZFUEAmR2CQENcGFyc2VJbnRWYWx1ZQEIBQJlZAJfOAMDAwkBAmJoAAYJAAACBQJkdgUBcgYJAAACBQJkdgUBdAkAAgEJAKwCAgIIQmxvY2tlZDoJAKQDAQUCZHYFAmVkAQJmdgUCZncCZG4CZHACYWkCZngEAmRyCQDYBAEJAQV2YWx1ZQEFAmJ5BAJkcwkA2AQBCQEFdmFsdWUBBQJiegQCZHEFAmJ4BAJkWAUCYkEEAmRZBQJiQgQCZVcJALYCAQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJkcQIQaW52YWxpZCBscCBhc3NldAhxdWFudGl0eQQCZnkDCQC/AgIFAmVXBQFlBgkAAgECImluaXRpYWwgZGVwb3NpdCByZXF1aXJlcyBhbGwgY29pbnMDCQAAAgUCZnkFAmZ5BAJkeAkBAmJYAQUCZHIEAmR6CQECYlgBBQJkcwQCZnoDCQAAAgUCYWkCAAkAlAoCBQJkeAUCZHoDCQAAAgUCZG4FAmRyAwkAZgIFAmZ3BQJkeAkAAgECFmludmFsaWQgcGF5bWVudCBhbW91bnQJAJQKAgkAZQIFAmR4BQJmdwUCZHoDCQAAAgUCZG4FAmRzAwkAZgIFAmZ3BQJkegkAAgECFmludmFsaWQgcGF5bWVudCBhbW91bnQJAJQKAgUCZHgJAGUCBQJkegUCZncJAAIBAhB3cm9uZyBwbXRBc3NldElkBAJmQQgFAmZ6Al8xBAJmQggFAmZ6Al8yBAJmQwMJAAACBQJkbgUCZHIJAJQKAgUCZncAAAMJAAACBQJkbgUCZHMJAJQKAgAABQJmdwkAAgECD2ludmFsaWQgcGF5bWVudAQCZkQIBQJmQwJfMQQCZkUIBQJmQwJfMgQCZkYDBQJmeAkAlQoDCAkBAmNGAgUCZkQFAmJkAl8xCAkBAmNGAgUCZkUFAmJkAl8xCAkBAmNGAgUCZncFAmJkAl8yCQCVCgMFAmZEBQJmRQAABAJmRwgFAmZGAl8xBAJmSAgFAmZGAl8yBAJjSAgFAmZGAl8zBAJmSQkAZAIFAmZBBQJmRwQCZkoJAGQCBQJmQgUCZkgEAmNsCQECY0kBCQDMCAIJAQFJAgUCZkEFAmJBCQDMCAIJAQFJAgUCZkIFAmJCBQNuaWwEAmNrCQECY0kBCQDMCAIJAQFJAgUCZkkFAmJBCQDMCAIJAQFJAgUCZkoFAmJCBQNuaWwEAmVlAwkAvwICBQJjawUCY2wGCQEFdGhyb3cAAwkAAAIFAmVlBQJlZQQCZksJAL0CBAUCZVcJALgCAgUCY2sFAmNsBQJjbAUFRkxPT1IEAmRDCQEBTQIJAQJiWgIJAQFJAgUCZkoFAmRZCQEBSQIFAmZJBQJkWAUBYQQCZXgJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJhYwAFAmRDCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYWQCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJkQwkAzAgCCQELU3RyaW5nRW50cnkCCQECYWcCBQJkcAUCYWkJAQJiSQoFAmZEBQJmRQkAoAMBBQJmSwUCZEMAAAAABQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wAAAAAAUDbmlsBAJmTAkAawMFAmZCBQFhBQJmQQQCZk0JAGsDBQJmdwUBYQkAZAIFAmZMBQFhBAJmTgkAZQIFAmZ3BQJmTQQCZk8JALwCAwUCZVcJALYCAQUCZk4JALYCAQUCZkIEAmZQCQCgAwEJALwCAwkAuAICBQJmSwUCZk8FAWIFAmZPCQCWCgQJAKADAQUCZksFAmV4BQJjSAUCZlAJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmZRBgJmUgJmUwJmVAJmcwJmVQJmVgQCZHEJANgEAQkBBXZhbHVlAQUCYngEAmRyCQDYBAEJAQV2YWx1ZQEFAmJ5BAJkcwkA2AQBCQEFdmFsdWUBBQJiegQCZlcFAmJBBAJmWAUCYkIEAmZZBQJidwQCZHADCQAAAgUCZnMFAmJIBQJmVQUCZnMEAmZxCQEFdmFsdWUBCQCRAwIFAmZUAAAEAmRuCQEFdmFsdWUBCAUCZnEHYXNzZXRJZAQCZFQIBQJmcQZhbW91bnQEAmVYCQECZVEDBQFlBQFlBQFlAwkAAAIFAmVYBQJlWAQCZG0JANgEAQUCZlYDCQECIT0CBQJkcQkA2AQBBQJkbgkAAgECCFdyb25nIExQBAJkeAkBAmJYAQUCZHIEAmR6CQECYlgBBQJkcwQCZloKAAJiZQkA/AcEBQR0aGlzAhNnZXRPbmVUa25WMlJFQURPTkxZCQDMCAIFAmZSCQDMCAIFAmRUBQNuaWwFA25pbAMJAAECBQJiZQIKKEludCwgSW50KQUCYmUJAAIBCQCsAgIJAAMBBQJiZQIfIGNvdWxkbid0IGJlIGNhc3QgdG8gKEludCwgSW50KQMJAAACBQJmWgUCZloEAmNICAUCZloCXzIEAmdhCAUCZloCXzEEAmdiAwMJAGYCBQJmUwAACQBmAgUCZlMFAmdhBwkBAmJhAQkAuQkCCQDMCAICH2Ftb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJmUwUDbmlsAgAFAmdhBAJnYwMJAAACBQJmUgUCZHIJAJYKBAUCZ2IAAAkAZQIJAGUCBQJkeAUCZ2IFAmNIBQJkegMJAAACBQJmUgUCZHMJAJYKBAAABQJnYgUCZHgJAGUCCQBlAgUCZHoFAmdiBQJjSAkAAgECFGludmFsaWQgb3V0IGFzc2V0IGlkBAJnZAgFAmdjAl8xBAJnZQgFAmdjAl8yBAJmSQgFAmdjAl8zBAJmSggFAmdjAl80BAJnZgkBAmJaAgkBAUkCBQJmSgUCZlgJAQFJAgUCZkkFAmZXBAJnZwkBAU0CBQJnZgUBYQQCZ2gDCQAAAgUCZlICBVdBVkVTBQR1bml0CQDZBAEFAmZSBAJnaQMJAGYCBQJjSAAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmJqBQJjSAUCZ2gFA25pbAUDbmlsBAJkSgkAzggCCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmRwBQJnYgUCZ2gJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFqAgkApQgBBQJkcAUCZG0JAQJiVAYFAmdkBQJnZQUCZFQFAmdnBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYWMABQJnZwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmFkAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCZ2cFA25pbAUCZ2kDCQAAAgUCZEoFAmRKBAJnagkA/AcEBQJhVQIEYnVybgkAzAgCBQJkVAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJkbgUCZFQFA25pbAMJAAACBQJnagUCZ2oEAmdrBAJnbAMJAAACBQR0aGlzBQJiagAABQJjSAQCZ20DCQAAAgkBAmJvAQUCZlIFAmJ5BgcDBQJnbQkAlAoCCQEBLQEJAGQCBQJnYQUCZ2wAAAkAlAoCAAAJAQEtAQkAZAIFAmdhBQJnbAQCZVoIBQJnawJfMQQCZmEIBQJnawJfMgQCZ24JAQJlWQMFAmVaBQJmYQAABAJnbwgFAmduAl8xBAJlUAgFAmduAl8yBAJncAkBAmZjAgUCZVgFAmVQAwkAAAIFAmdwBQJncAkAlAoCCQDOCAIFAmRKBQJnbwUCZ2IJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmdxAAQCZ3IJAQJhUwAEAmFRCQCdCAIFAmdyCQECYWEAAwkAAQIFAmFRAgZTdHJpbmcEAmFWBQJhUQkA2QQBBQJhVgMJAAECBQJhUQIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAAJncwkAAgECEVBlcm1pc3Npb24gZGVuaWVkAQJndAECY1gEAmFRCQECZ3EAAwkAAQIFAmFRAgpCeXRlVmVjdG9yBAJndQUCYVEJAAACCAUCY1gPY2FsbGVyUHVibGljS2V5BQJndQMJAAECBQJhUQIEVW5pdAkAAAIIBQJjWAZjYWxsZXIFBHRoaXMJAAIBAgtNYXRjaCBlcnJvcgECZ3YBAmNYBAJhUQkBAmdxAAMJAAECBQJhUQIKQnl0ZVZlY3RvcgQCZ3UFAmFRAwkAAAIIBQJjWA9jYWxsZXJQdWJsaWNLZXkFAmd1BgUCZ3MDCQABAgUCYVECBFVuaXQDCQAAAggFAmNYBmNhbGxlcgUEdGhpcwYFAmdzCQACAQILTWF0Y2ggZXJyb3IBAmd3AwJneAJlegJneQQCYnMJAQJiawAEAmRyCQCRAwIFAmJzBQF4BAJkcwkAkQMCBQJicwUBeQQCZUEFAWcEAmVDCQCnAwEFAW0EAmFSCQC5AgIJAKcDAQUCYmcFAmVDBAJjSgMJAAACBQJneAcJAMwIAgkAtwICCQC2AgEJAQJiWAEFAmRyBQJneQkAzAgCCQC2AgEJAQJiWAEFAmRzBQNuaWwJAMwIAgkAtwICCQC2AgEJAQJiWAEFAmRzBQJneQkAzAgCCQC2AgEJAQJiWAEFAmRyBQNuaWwEAmVCCQCRAwIFAmNKAAAEAmFWBQJlQgQCY00JALkCAgUCYVIFAmVBBAJlRAkAugICCQC5AgIJALkCAgkAugICCQC5AgIFAmV6BQJlegkAuQICBQJlQgUCZUEFAmV6BQJlQwkAuQICBQJjTQUCZUEEAmVFCQC4AgIJALcCAgUCYVYJALoCAgkAuQICBQJlegUCZUMFAmNNBQJlegoBAmNWAgJjVwJlRgQCZ3oFAmNXBAJlSAgFAmd6Al8xBAJkawgFAmd6Al8yAwkBAiE9AgUCZGsFBHVuaXQFAmNXBAJlSQkAugICCQC3AgIJALkCAgUCZUgFAmVIBQJlRAkAtwICCQC5AgIFAWcFAmVIBQJlRQQCZUoJAQFZAQkAuAICBQJlSQkBBXZhbHVlAQUCZUgDCQDAAgIFAWYFAmVKCQCUCgIFAmVJBQJlRgkAlAoCBQJlSQUEdW5pdAQCZGIJAMwIAgAACQDMCAIAAQkAzAgCAAIJAMwIAgADCQDMCAIABAkAzAgCAAUJAMwIAgAGCQDMCAIABwkAzAgCAAgJAMwIAgAJCQDMCAIACgkAzAgCAAsJAMwIAgAMCQDMCAIADQkAzAgCAA4FA25pbAQCZ0EKAAJkZAUCZGIKAAJkZQkAkAMBBQJkZAoAAmRmCQCUCgIFAmV6BQR1bml0CgECZGcCAmRoAmRpAwkAZwIFAmRpBQJkZQUCZGgJAQJjVgIFAmRoCQCRAwIFAmRkBQJkaQoBAmRqAgJkaAJkaQMJAGcCBQJkaQUCZGUFAmRoCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTUJAQJkagIJAQJkZwIJAQJkZwIJAQJkZwIJAQJkZwIJAQJkZwIJAQJkZwIJAQJkZwIJAQJkZwIJAQJkZwIJAQJkZwIJAQJkZwIJAQJkZwIJAQJkZwIJAQJkZwIJAQJkZwIFAmRmAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8EAmVICAUCZ0ECXzEEAmRrCAUCZ0ECXzIDCQECIT0CBQJkawUEdW5pdAUCZUgJAAIBCQCsAgICGVkgY2FsY3VsYXRpb24gZXJyb3IsIFkgPSAJAKYDAQUCZUgBAmdCAAkBC3ZhbHVlT3JFbHNlAgkAmwgCBQJhVQkBAmFIAQkApQgBBQR0aGlzBxwCY1gBIWNhbGN1bGF0ZUFtb3VudE91dEZvclN3YXBSRUFET05MWQMCZ0MCZ3gCZ0QEAmdFAwkAAAIFAmd4BwQCZ0YJAQJhVwIFBHRoaXMJAQJhbAAEAmd5CQC3AgIJALYCAQkBAmJYAQkBAmFXAgUEdGhpcwkBAmFrAAkAtgIBBQJnQwkAlAoCBQJnRgUCZ3kEAmdGCQECYVcCBQR0aGlzCQECYWsABAJneQkAtwICCQC2AgEJAQJiWAEJAQJhVwIFBHRoaXMJAQJhbAAJALYCAQUCZ0MJAJQKAgUCZ0YFAmd5BAJnRggFAmdFAl8xBAJneQgFAmdFAl8yBAJicwkBAmJrAAQCZHIJAJEDAgUCYnMFAXgEAmRzCQCRAwIFAmJzBQF5BAJjSgkAzAgCCQC2AgEJAQJiWAEFAmRyCQDMCAIJALYCAQkBAmJYAQUCZHMFA25pbAQCZXoJAQJjSQEFAmNKBAJlSAkBAmd3AwUCZ3gFAmV6CQC2AgEFAmdDBAJnRwkAuAICCQC4AgIJALYCAQkBAmJYAQUCZ0YFAmVICQC2AgEAAQQCZ0gJAJYDAQkAzAgCAAAJAMwIAgkAoAMBBQJnRwUDbmlsBAJnSQMJAAACBQJneAcJAMwIAgkAtwICCQC3AgIJALYCAQkBAmJYAQUCZHIJALYCAQUCZ0MJALYCAQUCZ0QJAMwIAgkAuAICCQC2AgEJAQJiWAEFAmRzBQJnRwUDbmlsCQDMCAIJALgCAgkAtgIBCQECYlgBBQJkcgUCZ0cJAMwIAgkAtwICCQC3AgIJALYCAQkBAmJYAQUCZHMJALYCAQUCZ0MJALYCAQUCZ0QFA25pbAQCZ0oJAQJjSQEFAmdJBAJlZQMJAMACAgUCZ0oFAmV6BgkAAgEJALkJAgkAzAgCAhRuZXcgRCBpcyBmZXdlciBlcnJvcgkAzAgCCQCmAwEFAmV6CQDMCAIJAKYDAQUCZ0oFA25pbAICX18DCQAAAgUCZWUFAmVlCQCUCgIFA25pbAUCZ0gJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CY1gBJmNhbGN1bGF0ZUFtb3VudE91dEZvclN3YXBBbmRTZW5kVG9rZW5zBQJnQwJneAJnSwJnTAJnRAQCZ00KAAJiZQkA/AcEBQJhVQIXZ2V0U3dhcENvbnRyYWN0UkVBRE9OTFkFA25pbAUDbmlsAwkAAQIFAmJlAgZTdHJpbmcFAmJlCQACAQkArAICCQADAQUCYmUCGyBjb3VsZG4ndCBiZSBjYXN0IHRvIFN0cmluZwQCZ04KAAJiZQkA/AcEBQJhVQIaaXNQb29sU3dhcERpc2FibGVkUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJiZQIHQm9vbGVhbgUCYmUJAAIBCQCsAgIJAAMBBQJiZQIcIGNvdWxkbid0IGJlIGNhc3QgdG8gQm9vbGVhbgQCZ08DAwkBAmJoAAYJAAACBQJidwUBdAYFAmdOBAJnUAkAzAgCAwMJAQEhAQUCZ08GCQECZ3QBBQJjWAYJAQJiYQECInN3YXAgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAGcCCAkBBXZhbHVlAQkAkQMCCAUCY1gIcGF5bWVudHMAAAZhbW91bnQFAmdDBgkBAmJhAQIMV3JvbmcgYW1vdW50CQDMCAIDCQAAAggFAmNYBmNhbGxlcgkBEUBleHRyTmF0aXZlKDEwNjIpAQUCZ00GCQECYmEBAhFQZXJtaXNzaW9uIGRlbmllZAUDbmlsAwkAAAIFAmdQBQJnUAQCZnEJAQV2YWx1ZQEJAJEDAggFAmNYCHBheW1lbnRzAAAEAmdRCQECYnEBCAUCZnEHYXNzZXRJZAQCZ1IDCQAAAgUCZ3gHBAJnRgkBAmFXAgUEdGhpcwkBAmFsAAQCZ3kJAGUCCQECYlgBBQJnUQgJAQV2YWx1ZQEJAJEDAggFAmNYCHBheW1lbnRzAAAGYW1vdW50CQCUCgIFAmdGBQJneQQCZ0YJAQJhVwIFBHRoaXMJAQJhawAEAmd5CQBlAgkBAmJYAQUCZ1EICQEFdmFsdWUBCQCRAwIIBQJjWAhwYXltZW50cwAABmFtb3VudAkAlAoCBQJnRgUCZ3kEAmdGCAUCZ1ICXzEEAmd5CAUCZ1ICXzIEAmJzCQECYmsABAJkcgkAkQMCBQJicwUBeAQCZHMJAJEDAgUCYnMFAXkEAmNKAwkAAAIFAmd4BwkAzAgCCQC4AgIJALYCAQkBAmJYAQUCZHIJALYCAQgJAQV2YWx1ZQEJAJEDAggFAmNYCHBheW1lbnRzAAAGYW1vdW50CQDMCAIJALYCAQkBAmJYAQUCZHMFA25pbAkAzAgCCQC2AgEJAQJiWAEFAmRyCQDMCAIJALgCAgkAtgIBCQECYlgBBQJkcwkAtgIBCAkBBXZhbHVlAQkAkQMCCAUCY1gIcGF5bWVudHMAAAZhbW91bnQFA25pbAQCZXoJAQJjSQEFAmNKBAJlSAkBAmd3AwUCZ3gFAmV6CQC2AgEAAAQCZ0cJALgCAgkAuAICCQC2AgEJAQJiWAEFAmdGBQJlSAkAtgIBAAEEAmdICQCWAwEJAMwIAgAACQDMCAIJAKADAQUCZ0cFA25pbAQCZ1MDCQBnAgUCZ0gFAmdLBgkAAgECLEV4Y2hhbmdlIHJlc3VsdCBpcyBmZXdlciBjb2lucyB0aGFuIGV4cGVjdGVkAwkAAAIFAmdTBQJnUwQCZ0kDCQAAAgUCZ3gHCQDMCAIJALcCAgkAtgIBCQECYlgBBQJkcgkAtgIBBQJnRAkAzAgCCQC4AgIJALYCAQkBAmJYAQUCZHMFAmdHBQNuaWwJAMwIAgkAuAICCQC2AgEJAQJiWAEFAmRyBQJnRwkAzAgCCQC3AgIJALYCAQkBAmJYAQUCZHMJALYCAQUCZ0QFA25pbAQCZ0oJAQJjSQEFAmdJBAJlZQMJAMACAgUCZ0oFAmV6BgkAAgECFG5ldyBEIGlzIGZld2VyIGVycm9yAwkAAAIFAmVlBQJlZQQCZVoDBQJneAkBAS0BBQJnSAUCZ0QEAmZhAwUCZ3gFAmdECQEBLQEFAmdIBAJnbwgJAQJlWQMFAmVaBQJmYQAAAl8xAwkAAAIFAmdvBQJnbwkAlAoCCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAmdMBQJnSAkBAmJvAQUCZ0YFA25pbAUCZ0gJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CY1gBC2NvbnN0cnVjdG9yAQFaBAJlRAkBAmd2AQUCY1gDCQAAAgUCZUQFAmVECQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFaAAUBWgUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmNYAQNwdXQCAmdUAmdVBAJnVgkBAmJDAAQCZ1cJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmdWBQFEAgpXciBzdCBhZGRyBAJnWAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCZ1YFAUYCCldyIHNsIGFkZHIDCQBmAgAABQJnVAkAAgECDldyb25nIHNsaXBwYWdlAwkBAiE9AgkAkAMBCAUCY1gIcGF5bWVudHMAAgkAAgECDDIgcG1udHMgZXhwZAQCZ1kJALYCAQgJAQV2YWx1ZQEJAJEDAggFAmNYCHBheW1lbnRzAAAGYW1vdW50BAJnWgkAtgIBCAkBBXZhbHVlAQkAkQMCCAUCY1gIcGF5bWVudHMAAQZhbW91bnQEAmVVCQC4AgIJALYCAQkBAmJYAQkBAmJxAQUCYnkFAmdZAwkAAAIFAmVVBQJlVQQCZVYJALgCAgkAtgIBCQECYlgBCQECYnEBBQJiegUCZ1oDCQAAAgUCZVYFAmVWBAJlVwkAtgIBCAkBBXZhbHVlAQkA7AcBBQJieAhxdWFudGl0eQMJAAACBQJlVwUCZVcEAmVYCQECZVEDBQJnWQUCZ1oJALYCAQAAAwkAAAIFAmVYBQJlWAQCaGEJAQJmcgoJAKUIAQgFAmNYBmNhbGxlcgkA2AQBCAUCY1gNdHJhbnNhY3Rpb25JZAkBD0F0dGFjaGVkUGF5bWVudAIICQEFdmFsdWUBCQCRAwIIBQJjWAhwYXltZW50cwAAB2Fzc2V0SWQICQEFdmFsdWUBCQCRAwIIBQJjWAhwYXltZW50cwAABmFtb3VudAkAkQMCCAUCY1gIcGF5bWVudHMAAQUCZ1QGBwYAAAIABAJlcggFAmhhAl8yBAJoYggFAmhhAl83BAJkSggFAmhhAl85BAJlcwgFAmhhA18xMAQCZXQIBQJoYQNfMTEEAmRyCAUCaGEDXzEyBAJkcwgFAmhhA18xMwQCZWQJAPwHBAUCYVUCBGVtaXQJAMwIAgUCZXIFA25pbAUDbmlsAwkAAAIFAmVkBQJlZAQCaGMEAmFRBQJlZAMJAAECBQJhUQIHQWRkcmVzcwQCaGQFAmFRCQD8BwQFAmhkAgRlbWl0CQDMCAIFAmVyBQNuaWwFA25pbAUEdW5pdAMJAAACBQJoYwUCaGMEAmhlAwkAZgIFAmVzAAAJAPwHBAUCZ1gCA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJkcgUCZXMFA25pbAUDbmlsAwkAAAIFAmhlBQJoZQQCaGYDCQBmAgUCZXQAAAkA/AcEBQJnWAIDcHV0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmRzBQJldAUDbmlsBQNuaWwDCQAAAgUCaGYFAmhmBAJoZwMFAmdVBAJoaAkA/AcEBQJnVwIFc3Rha2UFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCaGIFAmVyBQNuaWwDCQAAAgUCaGgFAmhoBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAmNYBmNhbGxlcgUCZXIFAmhiBQNuaWwEAmhpCQECZVkDAAAAAAAABAJnbwgFAmhpAl8xBAJlUAgFAmhpAl8yBAJoagMJAMACAgUCZVAFAmVYBgkBAmJhAQkAuQkCCQDMCAICInVwZGF0ZWQgRExwIGxvd2VyIHRoYW4gY3VycmVudCBETHAJAMwIAgkApgMBBQJlVQkAzAgCCQCmAwEFAmVWCQDMCAIJAKYDAQUCZVcJAMwIAgkApgMBBQJlWAkAzAgCCQCmAwEFAmVQCQDMCAIJAKQDAQUCZXMJAMwIAgkApAMBBQJldAUDbmlsAgEgAwkAAAIFAmhqBQJoagQCaGsICQEFdmFsdWUBCQDsBwEFAmJ4CHF1YW50aXR5AwkAAAIFAmhrBQJoawkAzggCCQDOCAIFAmRKBQJoZwUCZ28JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CY1gBC3B1dE9uZVRrblYyAgJmUwJnVQQCaGwKAAJiZQkA/AcEBQJhVQIoaXNQb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWRSRUFET05MWQkAzAgCCQClCAEFBHRoaXMFA25pbAUDbmlsAwkAAQIFAmJlAgdCb29sZWFuBQJiZQkAAgEJAKwCAgkAAwEFAmJlAhwgY291bGRuJ3QgYmUgY2FzdCB0byBCb29sZWFuBAJobQMDAwkBAmJoAAYJAAACBQJidwUBcgYJAAACBQJidwUBdAYFAmhsBAJnUAkAzAgCAwMJAQEhAQUCaG0GCQECZ3QBBQJjWAYJAQJiYQECIXB1dCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbgkAzAgCAwkAAAIJAJADAQgFAmNYCHBheW1lbnRzAAEGCQECYmEBAh5leGFjdGx5IDEgcGF5bWVudCBhcmUgZXhwZWN0ZWQFA25pbAMJAAACBQJnUAUCZ1AEAmRyCQDYBAEJAQV2YWx1ZQEFAmJ5BAJkcwkA2AQBCQEFdmFsdWUBBQJiegQCZHEFAmJ4BAJmVwUCYkEEAmZYBQJiQgQCZHADCQAAAggFAmNYBmNhbGxlcgUEdGhpcwgFAmNYDG9yaWdpbkNhbGxlcggFAmNYBmNhbGxlcgQCZnEJAQV2YWx1ZQEJAJEDAggFAmNYCHBheW1lbnRzAAAEAmRuCQDYBAEJAQV2YWx1ZQEIBQJmcQdhc3NldElkBAJkVAgFAmZxBmFtb3VudAQCZVgDCQAAAggFAmZxB2Fzc2V0SWQFAmJ5CQECZVEDCQC2AgEFAmRUCQC2AgEAAAkAtgIBAAAJAQJlUQMJALYCAQAACQC2AgEFAmRUCQC2AgEAAAMJAAACBQJlWAUCZVgEAmhuCQECZnYFBQJkVAUCZG4JAKUIAQUCZHAJANgEAQgFAmNYDXRyYW5zYWN0aW9uSWQGAwkAAAIFAmhuBQJobgQCY0gIBQJobgJfMwQCZEoIBQJobgJfMgQCaG8IBQJobgJfMQQCZXIDAwkAZgIFAmZTAAAJAGYCBQJmUwUCaG8HCQECYmEBCQC5CQIJAMwIAgIfYW1vdW50IHRvIHJlY2VpdmUgaXMgbGVzcyB0aGFuIAkAzAgCCQCkAwEFAmZTBQNuaWwCAAUCaG8EAmhhCQD8BwQFAmFVAgRlbWl0CQDMCAIFAmVyBQNuaWwFA25pbAMJAAACBQJoYQUCaGEEAmhjBAJhUQUCaGEDCQABAgUCYVECB0FkZHJlc3MEAmhkBQJhUQkA/AcEBQJoZAIEZW1pdAkAzAgCBQJlcgUDbmlsBQNuaWwFBHVuaXQDCQAAAgUCaGMFAmhjBAJoZwMFAmdVBAJoaAkA/AcEBQJiRQIIc3Rha2VGb3IJAMwIAgkApQgBCAUCY1gGY2FsbGVyBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmRxBQJlcgUDbmlsAwkAAAIFAmhoBQJoaAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQJjWAZjYWxsZXIFAmVyBQJkcQUDbmlsBAJnaQMJAGYCBQJjSAAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmJqBQJjSAkA2QQBBQJkbgUDbmlsBQNuaWwEAmhwAwkAAAIFBHRoaXMFAmJqCQCUCgIAAAAABAJocQMJAAACCAUCZnEHYXNzZXRJZAUCYnkGBwMFAmhxCQCUCgIJAQEtAQUCY0gAAAkAlAoCAAAJAQEtAQUCY0gEAmVaCAUCaHACXzEEAmZhCAUCaHACXzIEAmhyCQECZVkDBQJlWgUCZmEAAAQCZ28IBQJocgJfMQQCZVAIBQJocgJfMgQCZ3AJAQJmYwIFAmVYBQJlUAMJAAACBQJncAUCZ3AJAJQKAgkAzggCCQDOCAIJAM4IAgUCZEoFAmhnBQJnaQUCZ28FAmVyCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmNYAQpwdXRGb3JGcmVlAQJocwMJAGYCAAAFAmhzCQACAQIKV3Jvbmcgc2xwZwMJAQIhPQIJAJADAQgFAmNYCHBheW1lbnRzAAIJAAIBAgwyIHBtbnRzIGV4cGQEAmh0CQECZnIKCQClCAEIBQJjWAZjYWxsZXIJANgEAQgFAmNYDXRyYW5zYWN0aW9uSWQJAQ9BdHRhY2hlZFBheW1lbnQCCAkBBXZhbHVlAQkAkQMCCAUCY1gIcGF5bWVudHMAAAdhc3NldElkCAkBBXZhbHVlAQkAkQMCCAUCY1gIcGF5bWVudHMAAAZhbW91bnQJAJEDAggFAmNYCHBheW1lbnRzAAEFAmhzBwcGAAACAAQCZEoIBQJodAJfOQQCZ1kJALYCAQgJAQV2YWx1ZQEJAJEDAggFAmNYCHBheW1lbnRzAAAGYW1vdW50BAJnWgkAtgIBCAkBBXZhbHVlAQkAkQMCCAUCY1gIcGF5bWVudHMAAQZhbW91bnQEAmVYCQECZVEDBQJnWQUCZ1oJALYCAQAAAwkAAAIFAmVYBQJlWAQCaHUJAQJlWQMAAAAAAAAEAmdvCAUCaHUCXzEEAmVQCAUCaHUCXzIEAmdwCQECZmMCBQJlWAUCZVADCQAAAgUCZ3AFAmdwCQDOCAIFAmRKBQJnbwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJjWAEDZ2V0AAQCZVgJAQJlUQMJALYCAQAACQC2AgEAAAkAtgIBAAADCQAAAgUCZVgFAmVYBAJlZAkBAmZwAQUCY1gEAmh2CAUCZWQCXzEEAmRJCAUCZWQCXzIEAmRUCAUCZWQCXzMEAmRuCAUCZWQCXzQEAmRKCAUCZWQCXzUEAmVFCQD8BwQFAmFVAgRidXJuCQDMCAIFAmRUBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmRuBQJkVAUDbmlsAwkAAAIFAmVFBQJlRQQCaHcJAQJlWQMJAQEtAQUCaHYJAQEtAQUCZEkAAAQCZ28IBQJodwJfMQQCZVAIBQJodwJfMgQCZ3AJAQJmYwIFAmVYBQJlUAMJAAACBQJncAUCZ3AJAM4IAgUCZEoFAmdvCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmNYAQtnZXRPbmVUa25WMgICZlICZlMEAmhsCgACYmUJAPwHBAUCYVUCKGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJiZQIHQm9vbGVhbgUCYmUJAAIBCQCsAgIJAAMBBQJiZQIcIGNvdWxkbid0IGJlIGNhc3QgdG8gQm9vbGVhbgQCaHgDAwkBAmJoAAYJAAACBQJidwUBdAYFAmhsBAJnUAkAzAgCAwMJAQEhAQUCaHgGCQECZ3QBBQJjWAYJAQJiYQECIWdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbgkAzAgCAwkAAAIJAJADAQgFAmNYCHBheW1lbnRzAAEGCQECYmEBAh5leGFjdGx5IDEgcGF5bWVudCBhcmUgZXhwZWN0ZWQFA25pbAMJAAACBQJnUAUCZ1AEAmh5CQECZlEGBQJmUgUCZlMIBQJjWAhwYXltZW50cwgFAmNYBmNhbGxlcggFAmNYDG9yaWdpbkNhbGxlcggFAmNYDXRyYW5zYWN0aW9uSWQEAmRKCAUCaHkCXzEEAmdiCAUCaHkCXzIJAJQKAgUCZEoFAmdiCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmNYAQpyZWZyZXNoRExwAAQCaHoJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUCYXQAAAQCaEEDCQBnAgkAZQIFBmhlaWdodAUCaHoFAmF3BQR1bml0CQECYmEBCQC5CQIJAMwIAgkApAMBBQJhdwkAzAgCAi8gYmxvY2tzIGhhdmUgbm90IHBhc3NlZCBzaW5jZSB0aGUgcHJldmlvdXMgY2FsbAUDbmlsAgADCQAAAgUCaEEFAmhBBAJmagkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCoAwEJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwUCYXMCATAJAQJiYwECC2ludmFsaWQgZExwBAJoQgkBAmVZAwAAAAAAAAQCaEMIBQJoQgJfMQQCZVAIBQJoQgJfMgQCZmIDCQECIT0CBQJmagUCZVAFAmhDCQECYmEBAhJub3RoaW5nIHRvIHJlZnJlc2gJAJQKAgUCZmIJAKYDAQUCZVAJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CY1gBE2dldE9uZVRrblYyUkVBRE9OTFkCAmZSAmhEBAJkcgkA2AQBCQEFdmFsdWUBBQJieQQCZHMJANgEAQkBBXZhbHVlAQUCYnoEAmRxCQDYBAEJAQV2YWx1ZQEFAmJ4BAJjSgkAzAgCCQC2AgEJAQJiWAEFAmRyCQDMCAIJALYCAQkBAmJYAQUCZHMFA25pbAQCZU8JALYCAQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBCQDZBAEFAmRxAhBpbnZhbGlkIGxwIGFzc2V0CHF1YW50aXR5BAJjbAkBAmNJAQUCY0oEAmNrCQC4AgIFAmNsCQC8AgMJALYCAQUCaEQFAmNsBQJlTwQCaEUDCQAAAgUCZlIFAmRyAAADCQAAAgUCZlIFAmRzAAEJAAIBAhRpbnZhbGlkIG91dCBhc3NldCBpZAQCaEYJAQJleQMFAmNKBQJoRQUCY2sEAmdHCQC4AgIJAJEDAgUCY0oFAmhFBQJoRgQCZ0gJAJYDAQkAzAgCAAAJAMwIAgkAoAMBCQC4AgIFAmdHBQFmBQNuaWwEAmhHCQECY0YCBQJnSAUCYmYEAmdhCAUCaEcCXzEEAmNICAUCaEcCXzIJAJQKAgUDbmlsCQCUCgIFAmdhBQJjSAJjWAEcZ2V0T25lVGtuVjJXaXRoQm9udXNSRUFET05MWQICZlICaEQEAmRyCQDYBAEJAQV2YWx1ZQEFAmJ5BAJkcwkA2AQBCQEFdmFsdWUBBQJiegQCZHEJANgEAQkBBXZhbHVlAQUCYngEAmR4CQECYlgBBQJkcgQCZHoJAQJiWAEFAmRzBAJoSAoAAmJlCQD8BwQFBHRoaXMCE2dldE9uZVRrblYyUkVBRE9OTFkJAMwIAgUCZlIJAMwIAgUCaEQFA25pbAUDbmlsAwkAAQIFAmJlAgooSW50LCBJbnQpBQJiZQkAAgEJAKwCAgkAAwEFAmJlAh8gY291bGRuJ3QgYmUgY2FzdCB0byAoSW50LCBJbnQpBAJnYQgFAmhIAl8xBAJjSAgFAmhIAl8yBAJlZAkBAmRsBAIABQJkcQUCaEQFBHRoaXMEAmRICAUCZWQCXzEEAmRJCAUCZWQCXzIEAmhJCQBkAgUCZEgFAmRJBAJmUAMJAAACBQJoSQAAAwkAAAIFAmdhAAAAAAkAAgECF2JvbnVzIGNhbGN1bGF0aW9uIGVycm9yCQBrAwkAZQIFAmdhBQJoSQUBYQUCaEkJAJQKAgUDbmlsCQCVCgMFAmdhBQJjSAUCZlACY1gBCWdldE5vTGVzcwICaEoCaEsEAmVkCQECZnABBQJjWAQCZEgIBQJlZAJfMQQCZEkIBQJlZAJfMgQCZFQIBQJlZAJfMwQCZG4IBQJlZAJfNAQCZEoIBQJlZAJfNQMJAGYCBQJoSgUCZEgJAAIBCQCsAgIJAKwCAgkArAICAglGYWlsZWQ6ICAJAKQDAQUCZEgCAyA8IAkApAMBBQJoSgMJAGYCBQJoSwUCZEkJAAIBCQCsAgIJAKwCAgkArAICAghGYWlsZWQ6IAkApAMBBQJkSQIDIDwgCQCkAwEFAmhLBAJlWAkBAmVRAwkAtgIBAAAJALYCAQAACQC2AgEAAAMJAAACBQJlWAUCZVgEAmhMCQD8BwQFAmFVAgRidXJuCQDMCAIFAmRUBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmRuBQJkVAUDbmlsAwkAAAIFAmhMBQJoTAQCaE0JAQJlWQMJAQEtAQUCZEgJAQEtAQUCZEkAAAQCZ28IBQJoTQJfMQQCZVAIBQJoTQJfMgQCZ3AJAQJmYwIFAmVYBQJlUAMJAAACBQJncAUCZ3AJAM4IAgUCZEoFAmdvCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmNYAQ11bnN0YWtlQW5kR2V0AQJjRwQCaE4DCQECIT0CCQCQAwEIBQJjWAhwYXltZW50cwAACQACAQINTm8gcG1udHMgZXhwZAYDCQAAAgUCaE4FAmhOBAJoTwkBAmJDAAQCaGIFAmJ4BAJoUAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCaE8FAUQCCldyIHN0IGFkZHIEAmVYCQECZVEDCQC2AgEAAAkAtgIBAAAJALYCAQAAAwkAAAIFAmVYBQJlWAQCaFEJAPwHBAUCaFACB3Vuc3Rha2UJAMwIAgkA2AQBBQJoYgkAzAgCBQJjRwUDbmlsBQNuaWwDCQAAAgUCaFEFAmhRBAJlZAkBAmRsBAkA2AQBCAUCY1gNdHJhbnNhY3Rpb25JZAkA2AQBBQJoYgUCY0cIBQJjWAZjYWxsZXIEAmRICAUCZWQCXzEEAmRJCAUCZWQCXzIEAmR2CQENcGFyc2VJbnRWYWx1ZQEIBQJlZAJfOQQCZEoIBQJlZANfMTAEAmhSAwMJAQJiaAAGCQAAAgUCZHYFAXQJAAIBCQCsAgICCUJsb2NrZWQ6IAkApAMBBQJkdgYDCQAAAgUCaFIFAmhSBAJoUwkA/AcEBQJhVQIEYnVybgkAzAgCBQJjRwUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJoYgUCY0cFA25pbAMJAAACBQJoUwUCaFMEAmhUCQECZVkDCQEBLQEFAmRICQEBLQEFAmRJAAAEAmdvCAUCaFQCXzEEAmVQCAUCaFQCXzIEAmdwCQECZmMCBQJlWAUCZVADCQAAAgUCZ3AFAmdwCQDOCAIFAmRKBQJnbwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJjWAETdW5zdGFrZUFuZEdldE5vTGVzcwMCaFUCaFYCaEsEAmh4AwkBAmJoAAYJAAACBQJidwUBdAQCZ1AJAMwIAgMJAQEhAQUCaHgGCQACAQIhZ2V0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluCQDMCAIDCQAAAgkAkAMBCAUCY1gIcGF5bWVudHMAAAYJAAIBAhhubyBwYXltZW50cyBhcmUgZXhwZWN0ZWQFA25pbAMJAAACBQJnUAUCZ1AEAmVYCQECZVEDCQC2AgEAAAkAtgIBAAAJALYCAQAAAwkAAAIFAmVYBQJlWAQCaFEJAPwHBAUCYkUCB3Vuc3Rha2UJAMwIAgkA2AQBBQJieAkAzAgCBQJoVQUDbmlsBQNuaWwDCQAAAgUCaFEFAmhRBAJoVwkBAmRsBAkA2AQBCAUCY1gNdHJhbnNhY3Rpb25JZAkA2AQBBQJieAUCaFUIBQJjWAZjYWxsZXIEAmRICAUCaFcCXzEEAmRJCAUCaFcCXzIEAmRKCAUCaFcDXzEwBAJoWAkAzAgCAwkAZwIFAmRIBQJoVgYJAAIBCQC5CQIJAMwIAgIsYW1vdW50IGFzc2V0IGFtb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJoVgUDbmlsAgAJAMwIAgMJAGcCBQJkSQUCaEsGCQACAQkAuQkCCQDMCAICK3ByaWNlIGFzc2V0IGFtb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJoSwUDbmlsAgAFA25pbAMJAAACBQJoWAUCaFgEAmhMCQD8BwQFAmFVAgRidXJuCQDMCAIFAmhVBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmJ4BQJoVQUDbmlsAwkAAAIFAmhMBQJoTAQCaFkJAQJlWQMJAQEtAQUCZEgJAQEtAQUCZEkAAAQCZ28IBQJoWQJfMQQCZVAIBQJoWQJfMgQCZ3AJAQJmYwIFAmVYBQJlUAMJAAACBQJncAUCZ3AJAM4IAgUCZEoFAmdvCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmNYARV1bnN0YWtlQW5kR2V0T25lVGtuVjIDAmhVAmZSAmZTBAJobAoAAmJlCQD8BwQFAmFVAihpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZFJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCYmUCB0Jvb2xlYW4FAmJlCQACAQkArAICCQADAQUCYmUCHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4EAmh4AwMJAQJiaAAGCQAAAgUCYncFAXQGBQJobAQCZ1AJAMwIAgMDCQEBIQEFAmh4BgkBAmd0AQUCY1gGCQECYmEBAiFnZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJjWAhwYXltZW50cwAABgkBAmJhAQIYbm8gcGF5bWVudHMgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZ1AFAmdQBAJoTwkBAmJDAAQCaGIFAmJ4BAJoUAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCaE8FAUQCCldyIHN0IGFkZHIEAmRwCAUCY1gGY2FsbGVyBAJoWgUEdGhpcwQCaFEJAPwHBAUCaFACD3Vuc3Rha2VJTlRFUk5BTAkAzAgCBQJoYgkAzAgCBQJoVQkAzAgCCAUCZHAFYnl0ZXMJAMwIAggFAmhaBWJ5dGVzBQNuaWwFA25pbAMJAAACBQJoUQUCaFEEAmlhCQECZlEGBQJmUgUCZlMJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmhiBQJoVQUDbmlsCAUCY1gGY2FsbGVyCAUCY1gMb3JpZ2luQ2FsbGVyCAUCY1gNdHJhbnNhY3Rpb25JZAQCZEoIBQJpYQJfMQQCZ2IIBQJpYQJfMgkAlAoCBQJkSgUCZ2IJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CY1gBHHB1dE9uZVRrblYyV2l0aEJvbnVzUkVBRE9OTFkCAmliAmljBAJpZAkBAmZ2BQUCaWIFAmljAgACAAYEAmZLCAUCaWQCXzEEAmRKCAUCaWQCXzIEAmNICAUCaWQCXzMEAmZQCAUCaWQCXzQJAJQKAgUDbmlsCQCVCgMFAmZLBQJjSAUCZlACY1gBIXB1dE9uZVRrblYyV2l0aG91dFRha2VGZWVSRUFET05MWQICaWICaWMEAmllCQECZnYFBQJpYgUCaWMCAAIABwQCZksIBQJpZQJfMQQCZEoIBQJpZQJfMgQCY0gIBQJpZQJfMwQCZlAIBQJpZQJfNAkAlAoCBQNuaWwJAJUKAwUCZksFAmNIBQJmUAJjWAEIYWN0aXZhdGUCAmlmAmlnAwkBAiE9AgkApQgBCAUCY1gGY2FsbGVyCQClCAEFAmFVCQACAQIGZGVuaWVkCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFrAAUCaWYJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFsAAUCaWcJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFtAAkApAMBBQFsCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhbgEFBmhlaWdodAkApAMBBQFsBQNuaWwCB3N1Y2Nlc3MCY1gBBmludmVydAAEAmdQCQDMCAIDCQAAAggFAmNYBmNhbGxlcgUCYVUGCQECYmEBAg5pbnZhbGlkIGNhbGxlcgUDbmlsAwkAAAIFAmdQBQJnUAkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhawAJAQJicQEFAmJ6CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhbAAJAQJicQEFAmJ5BQNuaWwFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CY1gBHGdldFBvb2xDb25maWdXcmFwcGVyUkVBRE9OTFkACQCUCgIFA25pbAkBAmJrAAJjWAEcZ2V0QWNjQmFsYW5jZVdyYXBwZXJSRUFET05MWQECYlkJAJQKAgUDbmlsCQECYlgBBQJiWQJjWAEZY2FsY1ByaWNlc1dyYXBwZXJSRUFET05MWQMCY3ICY3MCY3cEAmloCQECY3YDBQJjcgUCY3MFAmN3CQCUCgIFA25pbAkAzAgCCQCmAwEJAJEDAgUCaWgAAAkAzAgCCQCmAwEJAJEDAgUCaWgAAQkAzAgCCQCmAwEJAJEDAgUCaWgAAgUDbmlsAmNYARZmcm9tWDE4V3JhcHBlclJFQURPTkxZAgFOAmlpCQCUCgIFA25pbAkBAU0CCQCnAwEFAU4FAmlpAmNYARR0b1gxOFdyYXBwZXJSRUFET05MWQIBSgFLCQCUCgIFA25pbAkApgMBCQEBSQIFAUoFAUsCY1gBHmNhbGNQcmljZUJpZ0ludFdyYXBwZXJSRUFET05MWQICY2ECY2IJAJQKAgUDbmlsCQCmAwEJAQJiWgIJAKcDAQUCY2EJAKcDAQUCY2ICY1gBI2VzdGltYXRlUHV0T3BlcmF0aW9uV3JhcHBlclJFQURPTkxZCQJkbQJjZwJkTAJkTQJkTgJkTwJpagJkUAJkUQkAlAoCBQNuaWwJAQJkSw0FAmRtBQJjZwUCZEwFAmRNBQJkTgUCZE8FAmlqBQJkUAUCZFEGBwAAAgACY1gBI2VzdGltYXRlR2V0T3BlcmF0aW9uV3JhcHBlclJFQURPTkxZBAJkbQJpawJkbwJpagQCZWQJAQJkbAQFAmRtBQJpawUCZG8JARFAZXh0ck5hdGl2ZSgxMDYyKQEFAmlqCQCUCgIFA25pbAkAnAoKCAUCZWQCXzEIBQJlZAJfMggFAmVkAl8zCAUCZWQCXzQIBQJlZAJfNQgFAmVkAl82CAUCZWQCXzcJAKYDAQgFAmVkAl84CAUCZWQCXzkIBQJlZANfMTACY1gBCWNoYW5nZUFtcAAEAmlsCQD8BwQFAmFVAhpnZXRDaGFuZ2VBbXBDb25maWdSRUFET05MWQkAzAgCCQClCAEFBHRoaXMFA25pbAUDbmlsBAJpbQQCYVEFAmlsAwkAAQIFAmFRAglMaXN0W0FueV0EAmluBQJhUQkAlQoDCgACYmUJAJEDAgUCaW4AAAMJAAECBQJiZQIDSW50BQJiZQkAAgEJAKwCAgkAAwEFAmJlAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQKAAJiZQkAkQMCBQJpbgABAwkAAQIFAmJlAgNJbnQFAmJlCQACAQkArAICCQADAQUCYmUCGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAoAAmJlCQCRAwIFAmluAAIDCQABAgUCYmUCA0ludAUCYmUJAAIBCQCsAgIJAAMBBQJiZQIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50CQECYmEBAhJpbnZhbGlkIGVudHJ5IHR5cGUEAmlvCAUCaW0CXzEEAmlwCAUCaW0CXzIEAmlxCAUCaW0CXzMEAmlyCQENcGFyc2VJbnRWYWx1ZQEJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAQJhbQAEAmlzCQBkAgUCaXIFAmlwBAJpdAMJAGYCAAAFAmlwAwkAZgIFAmlxBQJpcwUCaXEFAmlzAwkAZgIFAmlzBQJpcQUCaXEFAmlzBAJpdQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQECYXAAAAAEAml2CQBkAgUCaXUFAmlvBAJnUAkAzAgCAwkAZgIFBmhlaWdodAUCaXYGCQECYmEBAhd0cnkgYWdhaW4gaW4gZmV3IGJsb2NrcwkAzAgCAwkBAiE9AgUCaXIFAml0BgkBAmJhAQIWYWxyZWFkeSByZWFjaGVkIHRhcmdldAUDbmlsAwkAAAIFAmdQBQJnUAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmFwAAUGaGVpZ2h0CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhbQAJAKQDAQUCaXQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFuAQUGaGVpZ2h0CQCkAwEFAml0BQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAml3AQJpeAAEAml5BAJhUQkBAmdxAAMJAAECBQJhUQIKQnl0ZVZlY3RvcgQCZ3UFAmFRBQJndQMJAAECBQJhUQIEVW5pdAgFAml3D3NlbmRlclB1YmxpY0tleQkAAgECC01hdGNoIGVycm9yBAJhUQUCaXcDCQABAgUCYVECBU9yZGVyBAJmZgUCYVEEAml6CQECYmkABAJpQQMJAQJnQgAJAJQKAgYCAAkBAmZlAQUCZmYEAmFLCAUCaUECXzEEAmFMCAUCaUECXzIEAmFNCQD0AwMIBQJmZglib2R5Qnl0ZXMJAJEDAggFAmZmBnByb29mcwAACAUCZmYPc2VuZGVyUHVibGljS2V5BAJhTgkA9AMDCAUCZmYJYm9keUJ5dGVzCQCRAwIIBQJmZgZwcm9vZnMAAQUCaXoDAwMFAmFLBQJhTQcFAmFOBwYJAQJhSgQFAmFLBQJhTAUCYU0FAmFOAwkAAQIFAmFRAhRTZXRTY3JpcHRUcmFuc2FjdGlvbgQCYVYFAmFRAwkA9AMDCAUCaXcJYm9keUJ5dGVzCQCRAwIIBQJpdwZwcm9vZnMAAAUCaXkGBAJpQgkA9gMBCQEFdmFsdWUBCAUCYVYGc2NyaXB0BAJpQwkA2wQBCQEFdmFsdWUBCQCdCAIFAmFVCQECYUYABAJpRAkA8QcBBQR0aGlzAwkAAAIFAmlDBQJpQgkBAiE9AgUCaUQFAmlCBwkA9AMDCAUCaXcJYm9keUJ5dGVzCQCRAwIIBQJpdwZwcm9vZnMAAAUCaXnk/Ngq", "height": 2765090, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: Bm7EQn3pnnPWQMvc4XhXcDh5uFDoPtvGNhr7w92ipYPQ Next: GRcFi8nMnpSuK2qCwNkiQC8pSkvtEdqofCaugFZbQnRN Diff:
OldNewDifferences
16961696
16971697
16981698 @Callable(cX)
1699+func invert () = {
1700+ let gP = [if ((cX.caller == aU))
1701+ then true
1702+ else ba("invalid caller")]
1703+ if ((gP == gP))
1704+ then $Tuple2([StringEntry(ak(), bq(bz)), StringEntry(al(), bq(by))], unit)
1705+ else throw("Strict value is not equal to itself.")
1706+ }
1707+
1708+
1709+
1710+@Callable(cX)
16991711 func getPoolConfigWrapperREADONLY () = $Tuple2(nil, bk())
17001712
17011713
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 100000000
55
66 let b = toBigInt(100000000)
77
88 let c = toBigInt(1000000000000000000)
99
1010 let d = toBigInt(0)
1111
1212 let e = toBigInt(0)
1313
1414 let f = toBigInt(1)
1515
1616 let g = toBigInt(2)
1717
1818 let h = toBigInt(3)
1919
2020 let i = toBigInt(4)
2121
2222 let j = toBigInt((a - ((a * 1) / a)))
2323
2424 let k = "WAVES"
2525
2626 let l = 50
2727
2828 let m = "100"
2929
3030 let n = "1"
3131
3232 let o = "__"
3333
3434 let p = ""
3535
3636 let q = 1
3737
3838 let r = 2
3939
4040 let s = 3
4141
4242 let t = 4
4343
4444 let u = 1
4545
4646 let v = 2
4747
4848 let w = 3
4949
5050 let x = 4
5151
5252 let y = 5
5353
5454 let z = 6
5555
5656 let A = 7
5757
5858 let B = 8
5959
6060 let C = 9
6161
6262 let D = 1
6363
6464 let E = 6
6565
6666 let F = 7
6767
6868 let G = 10
6969
7070 let H = fraction(10, a, 10000)
7171
7272 func I (J,K) = fraction(toBigInt(J), c, toBigInt(K))
7373
7474
7575 func L (J,K) = fraction(J, c, K)
7676
7777
7878 func M (N,O) = toInt(fraction(N, toBigInt(O), c))
7979
8080
8181 func P (N,O,Q) = toInt(fraction(N, toBigInt(O), c, Q))
8282
8383
8484 func R (J,K) = fraction(J, c, toBigInt(K))
8585
8686
8787 func S (N,O) = fraction(N, toBigInt(O), c)
8888
8989
9090 func T (U,V,W) = fraction(U, V, W)
9191
9292
9393 func X (N) = if ((d > N))
9494 then -(N)
9595 else N
9696
9797
9898 func Y (N) = if ((d > N))
9999 then -(N)
100100 else N
101101
102102
103103 func Z () = "%s__factoryContract"
104104
105105
106106 func aa () = "%s__managerPublicKey"
107107
108108
109109 func ab () = "%s__managerVaultAddress"
110110
111111
112112 func ac () = "%s%s__price__last"
113113
114114
115115 func ad (ae,af) = makeString(["%s%s%d%d__price__history", toString(ae), toString(af)], o)
116116
117117
118118 func ag (ah,ai) = ((("%s%s%s__P__" + ah) + "__") + ai)
119119
120120
121121 func aj (ah,ai) = ((("%s%s%s__G__" + ah) + "__") + ai)
122122
123123
124124 func ak () = "%s__amountAsset"
125125
126126
127127 func al () = "%s__priceAsset"
128128
129129
130130 func am () = "%s__amp"
131131
132132
133133 func an (ao) = ("%s%d__amp__" + toString(ao))
134134
135135
136136 func ap () = "%s__changeAmpLastCall"
137137
138138
139139 let aq = "%s__fee"
140140
141141 let ar = valueOrElse(getInteger(this, aq), H)
142142
143143 let as = makeString(["%s", "dLp"], o)
144144
145145 let at = makeString(["%s", "dLpRefreshedHeight"], o)
146146
147147 let au = makeString(["%s", "refreshDLpDelay"], o)
148148
149149 let av = 30
150150
151151 let aw = valueOrElse(getInteger(this, au), av)
152152
153153 func ax () = "%s__factoryConfig"
154154
155155
156156 func ay () = "%s%s__matcher__publicKey"
157157
158158
159159 func az (aA,aB) = (((("%d%d%s__" + aA) + "__") + aB) + "__config")
160160
161161
162162 func aC (aD) = ("%s%s%s__mappings__baseAsset2internalId__" + aD)
163163
164164
165165 func aE () = "%s__shutdown"
166166
167167
168168 func aF () = "%s__allowedLpStableScriptHash"
169169
170170
171171 func aG () = "%s__feeCollectorAddress"
172172
173173
174174 func aH (aI) = ("%s%s__skipOrderValidation__" + aI)
175175
176176
177177 func aJ (aK,aL,aM,aN) = throw((((((((("order validation failed: orderValid=" + toString(aK)) + " (") + aL) + ")") + " senderValid=") + toString(aM)) + " matcherValid=") + toString(aN)))
178178
179179
180180 func aO (aP) = {
181181 let aQ = addressFromString(aP)
182182 if ($isInstanceOf(aQ, "Address"))
183183 then {
184184 let aR = aQ
185185 aR
186186 }
187187 else this
188188 }
189189
190190
191191 func aS () = {
192192 let aT = {
193193 let aQ = getString(Z())
194194 if ($isInstanceOf(aQ, "String"))
195195 then {
196196 let aU = aQ
197197 aO(aU)
198198 }
199199 else this
200200 }
201201 let aQ = getString(aT, ab())
202202 if ($isInstanceOf(aQ, "String"))
203203 then {
204204 let aV = aQ
205205 aO(aV)
206206 }
207207 else this
208208 }
209209
210210
211211 func aW (aX,aY) = valueOrErrorMessage(getString(aX, aY), makeString(["mandatory ", toString(aX), ".", aY, " not defined"], ""))
212212
213213
214214 func aZ (aX,aY) = valueOrErrorMessage(getInteger(aX, aY), makeString(["mandatory ", toString(aX), ".", aY, " not defined"], ""))
215215
216216
217217 func ba (bb) = throw(makeString(["lp_stable.ride:", bb], " "))
218218
219219
220220 func bc (bb) = makeString(["lp_stable.ride:", bb], " ")
221221
222222
223223 let aU = addressFromStringValue(aW(this, Z()))
224224
225225 let bd = {
226226 let be = invoke(aU, "getInFeeREADONLY", [toString(this)], nil)
227227 if ($isInstanceOf(be, "Int"))
228228 then be
229229 else throw(($getType(be) + " couldn't be cast to Int"))
230230 }
231231
232232 let bf = {
233233 let be = invoke(aU, "getOutFeeREADONLY", [toString(this)], nil)
234234 if ($isInstanceOf(be, "Int"))
235235 then be
236236 else throw(($getType(be) + " couldn't be cast to Int"))
237237 }
238238
239239 let bg = aW(this, am())
240240
241241 func bh () = valueOrElse(getBoolean(aU, aE()), false)
242242
243243
244244 func bi () = fromBase58String(aW(aU, ay()))
245245
246246
247247 let bj = addressFromStringValue(aW(aU, aG()))
248248
249249 func bk () = {
250250 let bl = aW(this, ak())
251251 let bm = aW(this, al())
252252 let bn = aZ(aU, aC(bm))
253253 let aA = aZ(aU, aC(bl))
254254 split(aW(aU, az(toString(aA), toString(bn))), o)
255255 }
256256
257257
258258 func bo (bp) = if ((bp == k))
259259 then unit
260260 else fromBase58String(bp)
261261
262262
263263 func bq (bp) = if ((bp == unit))
264264 then k
265265 else toBase58String(value(bp))
266266
267267
268268 func br (bs) = $Tuple7(addressFromStringValue(bs[u]), parseIntValue(bs[v]), fromBase58String(bs[w]), bo(bs[x]), bo(bs[y]), parseIntValue(bs[z]), parseIntValue(bs[A]))
269269
270270
271271 let bt = br(bk())
272272
273273 let bu = bt
274274
275275 let bv = bu._1
276276
277277 let bw = bu._2
278278
279279 let bx = bu._3
280280
281281 let by = bu._4
282282
283283 let bz = bu._5
284284
285285 let bA = bu._6
286286
287287 let bB = bu._7
288288
289289 func bC () = split(aW(aU, ax()), o)
290290
291291
292292 let bD = bC()
293293
294294 let bE = valueOrErrorMessage(addressFromString(bD[D]), "Invalid staking contract address")
295295
296296 let bF = valueOrErrorMessage(addressFromString(bD[F]), "Invalid slipage contract address")
297297
298298 let bG = valueOrErrorMessage(addressFromString(bD[G]), "Invalid gwx contract address")
299299
300300 let bH = valueOrErrorMessage(addressFromString(bD[E]), "Invalid gwx contract address")
301301
302302 func bI (bJ,bK,bL,bM,bN,bO,bP,bQ,bR,bS) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bJ), toString(bK), toString(bL), toString(bM), toString(bN), toString(bO), toString(bP), toString(bQ), toString(bR), toString(bS)], o)
303303
304304
305305 func bT (bU,bV,bW,bM,bP,bQ) = makeString(["%d%d%d%d%d%d", toString(bU), toString(bV), toString(bW), toString(bM), toString(bP), toString(bQ)], o)
306306
307307
308308 func bX (bY) = if ((bY == "WAVES"))
309309 then wavesBalance(this).available
310310 else assetBalance(this, fromBase58String(bY))
311311
312312
313313 func bZ (ca,cb) = fraction(ca, c, cb)
314314
315315
316316 func cc (ca,cb,Q) = fraction(ca, c, cb, Q)
317317
318318
319319 func cd (ce,cf,cg) = {
320320 let ch = fraction((ce - cf), b, cf)
321321 let ci = ((cg - X(ch)) > d)
322322 if (!(ci))
323323 then throw(("Big slpg: " + toString(ch)))
324324 else $Tuple2(ci, min([ce, cf]))
325325 }
326326
327327
328328 func cj (ck,cl,cm) = {
329329 let ch = fraction(cl, b, ck)
330330 let cn = (cm > ch)
331331 if (if (cn)
332332 then true
333333 else (cl > ck))
334334 then throw(((((((toString(cl) + " ") + toString(ck)) + " ") + toString(ch)) + " ") + toString(cm)))
335335 else cn
336336 }
337337
338338
339339 func co (cp,cq,cr,cs) = {
340340 let ct = I(cr, cp)
341341 let cu = I(cs, cq)
342342 bZ(cu, ct)
343343 }
344344
345345
346346 func cv (cr,cs,cw) = {
347347 let cx = bA
348348 let cy = bB
349349 let cz = co(cx, cy, cr, cs)
350350 let cb = I(cr, cx)
351351 let ca = I(cs, cy)
352352 let cA = I(cw, a)
353353 let cB = bZ(cb, cA)
354354 let cC = bZ(ca, cA)
355355 [cz, cB, cC]
356356 }
357357
358358
359359 func cD (cr,cs,cw) = {
360360 let cE = cv(cr, cs, cw)
361361 [M(cE[0], a), M(cE[1], a), M(cE[2], a)]
362362 }
363363
364364
365365 func cF (cG,ar) = {
366366 let cH = if ((ar == 0))
367367 then 0
368368 else fraction(cG, ar, a)
369369 $Tuple2((cG - cH), cH)
370370 }
371371
372372
373373 func cI (cJ) = {
374374 let cK = cJ[0]
375375 let cL = cJ[1]
376376 let aV = (cK + cL)
377377 if ((aV == e))
378378 then e
379379 else {
380380 let aR = parseIntValue(bg)
381381 let cM = (aR * 2)
382382 let cE = fraction(cK, cL, f)
383383 let cN = fraction(cE, i, f)
384384 let cO = fraction(toBigInt(cM), aV, f)
385385 let cP = toBigInt((cM - 1))
386386 func cQ (cR) = {
387387 let cS = fraction(cR, cR, f)
388388 let cT = fraction(cS, cR, f)
389389 let cU = fraction(cT, f, cN)
390390 fraction((cO + fraction(cU, g, f)), cR, (fraction(cP, cR, f) + fraction(h, cU, f)))
391391 }
392392
393393 func cV (cW,cX) = if (cW._2)
394394 then cW
395395 else {
396396 let cR = cW._1
397397 let cY = cQ(cR)
398398 let cZ = (cY - value(cR))
399399 let da = if ((e > cZ))
400400 then -(cZ)
401401 else cZ
402402 if ((f >= da))
403403 then $Tuple2(cY, true)
404404 else $Tuple2(cY, false)
405405 }
406406
407407 let db = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]
408408 let dc = {
409409 let dd = db
410410 let de = size(dd)
411411 let df = $Tuple2(aV, false)
412412 func dg (dh,di) = if ((di >= de))
413413 then dh
414414 else cV(dh, dd[di])
415415
416416 func dj (dh,di) = if ((di >= de))
417417 then dh
418418 else throw("List size exceeds 17")
419419
420420 dj(dg(dg(dg(dg(dg(dg(dg(dg(dg(dg(dg(dg(dg(dg(dg(dg(dg(df, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17)
421421 }
422422 let cR = dc._1
423423 let dk = dc._2
424424 if (dk)
425425 then cR
426426 else throw(("D calculation error, D = " + toString(cR)))
427427 }
428428 }
429429
430430
431431 func dl (dm,dn,do,dp) = {
432432 let dq = bx
433433 let dr = toBase58String(value(by))
434434 let ds = toBase58String(value(bz))
435435 let dt = bA
436436 let du = bB
437437 let dv = toString(bw)
438438 let dw = valueOrErrorMessage(assetInfo(dq), "Wrong LP id").quantity
439439 if ((toBase58String(dq) != dn))
440440 then throw("Wrong pmt asset")
441441 else {
442442 let dx = bX(dr)
443443 let dy = I(dx, dt)
444444 let dz = bX(ds)
445445 let dA = I(dz, du)
446446 let dB = bZ(dA, dy)
447447 let dC = M(dB, a)
448448 let dD = I(do, a)
449449 let dE = I(dw, a)
450450 let dF = fraction(dy, dD, dE)
451451 let dG = fraction(dA, dD, dE)
452452 let dH = P(dF, dt, FLOOR)
453453 let dI = P(dG, du, FLOOR)
454454 let dJ = if ((dm == ""))
455455 then nil
456456 else [ScriptTransfer(dp, dH, if ((dr == "WAVES"))
457457 then unit
458458 else fromBase58String(dr)), ScriptTransfer(dp, dI, if ((ds == "WAVES"))
459459 then unit
460460 else fromBase58String(ds)), StringEntry(aj(toString(dp), dm), bT(dH, dI, do, dC, height, lastBlock.timestamp)), IntegerEntry(ac(), dC), IntegerEntry(ad(height, lastBlock.timestamp), dC)]
461461 $Tuple10(dH, dI, dr, ds, dx, dz, dw, dB, dv, dJ)
462462 }
463463 }
464464
465465
466466 func dK (dm,cg,dL,dM,dN,dO,dp,dP,dQ,dR,dS,dT,dU) = {
467467 let dq = bx
468468 let dV = toBase58String(value(by))
469469 let dW = toBase58String(value(bz))
470470 let dX = bA
471471 let dY = bB
472472 let dv = toString(bw)
473473 let dZ = valueOrErrorMessage(assetInfo(dq), "Wr lp as").quantity
474474 let dx = if (dP)
475475 then bX(dV)
476476 else if (if (dR)
477477 then (dU == dV)
478478 else false)
479479 then (bX(dV) - dT)
480480 else if (dR)
481481 then bX(dV)
482482 else (bX(dV) - dL)
483483 let dz = if (dP)
484484 then bX(dW)
485485 else if (if (dR)
486486 then (dU == dW)
487487 else false)
488488 then (bX(dW) - dT)
489489 else if (dR)
490490 then bX(dW)
491491 else (bX(dW) - dN)
492492 let ea = I(dL, dX)
493493 let eb = I(dN, dY)
494494 let ec = bZ(eb, ea)
495495 let dy = I(dx, dX)
496496 let dA = I(dz, dY)
497497 let cl = cI([dy, dA])
498498 let ed = if ((dZ == 0))
499499 then {
500500 let ck = cI([(dy + ea), (dA + eb)])
501501 let ee = if ((ck > cl))
502502 then true
503503 else throw("D1 should be greater than D0")
504504 if ((ee == ee))
505505 then {
506506 let dB = d
507507 let ef = d
508508 let cA = ck
509509 $Tuple5(M(cA, a), M(ea, dX), M(eb, dY), bZ((dA + eb), (dy + ea)), ef)
510510 }
511511 else throw("Strict value is not equal to itself.")
512512 }
513513 else {
514514 let dB = bZ(dA, dy)
515515 let eg = fraction(X((dB - ec)), c, dB)
516516 let ef = I(cg, a)
517517 if (if (if (dS)
518518 then (dB != d)
519519 else false)
520520 then (eg > ef)
521521 else false)
522522 then throw(((("Price slippage " + toString(eg)) + " > ") + toString(ef)))
523523 else {
524524 let eh = I(dZ, a)
525525 let ei = fraction(ea, cc(dA, dy, CEILING), c, CEILING)
526526 let ej = fraction(eb, c, cc(dA, dy, FLOOR), CEILING)
527527 let ek = if ((ei > eb))
528528 then $Tuple2(ej, eb)
529529 else $Tuple2(ea, ei)
530530 let el = ek._1
531531 let em = ek._2
532532 let ck = cI([(dy + el), (dA + em)])
533533 let ee = if ((ck > cl))
534534 then true
535535 else throw("D1 should be greater than D0")
536536 if ((ee == ee))
537537 then {
538538 let cA = fraction(eh, (ck - cl), cl)
539539 $Tuple5(P(cA, a, FLOOR), P(el, dX, CEILING), P(em, dY, CEILING), dB, ef)
540540 }
541541 else throw("Strict value is not equal to itself.")
542542 }
543543 }
544544 let en = ed._1
545545 let eo = ed._2
546546 let ep = ed._3
547547 let dC = M(ed._4, a)
548548 let eq = M(ed._5, a)
549549 if ((0 >= en))
550550 then throw("LP <= 0")
551551 else {
552552 let er = if (!(dQ))
553553 then 0
554554 else en
555555 let es = (dL - eo)
556556 let et = (dN - ep)
557557 let eu = if (if (dR)
558558 then (dU == dV)
559559 else false)
560560 then $Tuple2(dT, 0)
561561 else if (if (dR)
562562 then (dU == dW)
563563 else false)
564564 then $Tuple2(0, dT)
565565 else $Tuple2(eo, ep)
566566 let ev = eu._1
567567 let ew = eu._2
568568 let ex = [IntegerEntry(ac(), dC), IntegerEntry(ad(height, lastBlock.timestamp), dC), StringEntry(ag(dp, dm), bI(ev, ew, er, dC, cg, eq, height, lastBlock.timestamp, es, et))]
569569 $Tuple13(en, er, dC, dx, dz, dZ, dq, dv, ex, es, et, dM, dO)
570570 }
571571 }
572572
573573
574574 func ey (cJ,cX,ez) = {
575575 let eA = g
576576 let eB = cJ[if ((cX == 0))
577577 then 1
578578 else 0]
579579 let eC = parseBigIntValue(m)
580580 let aR = (parseBigIntValue(bg) * eC)
581581 let aV = eB
582582 let cM = (aR * eA)
583583 let eD = (((((ez * ez) / (eB * eA)) * ez) * eC) / (cM * eA))
584584 let eE = ((aV + ((ez * eC) / cM)) - ez)
585585 func cV (cW,eF) = {
586586 let eG = cW
587587 let eH = eG._1
588588 let dk = eG._2
589589 if ((dk != unit))
590590 then cW
591591 else {
592592 let eI = (((eH * eH) + eD) / ((g * eH) + eE))
593593 let eJ = Y((eI - value(eH)))
594594 if ((f >= eJ))
595595 then $Tuple2(eI, eF)
596596 else $Tuple2(eI, unit)
597597 }
598598 }
599599
600600 let db = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
601601 let eK = {
602602 let dd = db
603603 let de = size(dd)
604604 let df = $Tuple2(ez, unit)
605605 func dg (dh,di) = if ((di >= de))
606606 then dh
607607 else cV(dh, dd[di])
608608
609609 func dj (dh,di) = if ((di >= de))
610610 then dh
611611 else throw("List size exceeds 15")
612612
613613 dj(dg(dg(dg(dg(dg(dg(dg(dg(dg(dg(dg(dg(dg(dg(dg(df, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
614614 }
615615 let eH = eK._1
616616 let dk = eK._2
617617 if ((dk != unit))
618618 then eH
619619 else throw(("Y calculation error, Y = " + toString(eH)))
620620 }
621621
622622
623623 func eL (eM,eN,eO) = {
624624 let eP = fraction(cI([L(eM, toBigInt(bA)), L(eN, toBigInt(bB))]), c, eO)
625625 if ((eO == e))
626626 then e
627627 else eP
628628 }
629629
630630
631631 func eQ (eR,eS,eT) = {
632632 let eU = (toBigInt(bX(bq(by))) - eR)
633633 let eV = (toBigInt(bX(bq(bz))) - eS)
634634 let eW = (toBigInt(value(assetInfo(bx)).quantity) - eT)
635635 let eX = eL(eU, eV, eW)
636636 eX
637637 }
638638
639639
640640 func eY (eZ,fa,eT) = {
641641 let eU = (bX(bq(by)) + eZ)
642642 let eV = (bX(bq(bz)) + fa)
643643 let eW = (value(assetInfo(bx)).quantity + eT)
644644 let eP = eL(toBigInt(eU), toBigInt(eV), toBigInt(eW))
645645 let fb = [IntegerEntry(at, height), StringEntry(as, toString(eP))]
646646 $Tuple2(fb, eP)
647647 }
648648
649649
650650 func fc (fd,eP) = if ((eP >= fd))
651651 then true
652652 else ba("updated DLp lower than current DLp")
653653
654654
655655 func fe (ff) = {
656656 let eU = bX(bq(by))
657657 let eV = bX(bq(bz))
658658 let fg = ff.amount
659659 let fh = fraction(ff.amount, ff.price, a, FLOOR)
660660 let fi = if ((ff.orderType == Buy))
661661 then $Tuple2(fg, -(fh))
662662 else $Tuple2(-(fg), fh)
663663 let eZ = fi._1
664664 let fa = fi._2
665665 if (if (if (bh())
666666 then true
667667 else (bw == s))
668668 then true
669669 else (bw == t))
670670 then throw("Admin blocked")
671671 else if (if ((ff.assetPair.amountAsset != by))
672672 then true
673673 else (ff.assetPair.priceAsset != bz))
674674 then throw("Wr assets")
675675 else {
676676 let fj = parseBigIntValue(valueOrElse(getString(this, as), "0"))
677677 let fk = eY(eZ, fa, 0)
678678 let fl = fk._1
679679 let fm = fk._2
680680 let fn = (fm >= fj)
681681 let fo = makeString(["dLp=", toString(fj), " dLpNew=", toString(fm), " amountAssetBalance=", toString(eU), " priceAssetBalance=", toString(eV), " amountAssetBalanceDelta=", toString(eZ), " priceAssetBalanceDelta=", toString(fa), " height=", toString(height)], "")
682682 $Tuple2(fn, fo)
683683 }
684684 }
685685
686686
687687 func fp (cX) = if ((size(cX.payments) != 1))
688688 then throw("1 pmnt exp")
689689 else {
690690 let fq = value(cX.payments[0])
691691 let dn = value(fq.assetId)
692692 let dT = fq.amount
693693 let ed = dl(toBase58String(cX.transactionId), toBase58String(dn), dT, cX.caller)
694694 let dH = ed._1
695695 let dI = ed._2
696696 let dv = parseIntValue(ed._9)
697697 let dJ = ed._10
698698 if (if (bh())
699699 then true
700700 else (dv == t))
701701 then throw(("Admin blocked: " + toString(dv)))
702702 else $Tuple5(dH, dI, dT, dn, dJ)
703703 }
704704
705705
706706 func fr (fs,ai,ft,fu,cg,dQ,dR,dS,dT,dU) = {
707707 let ed = dK(ai, cg, value(ft).amount, value(ft).assetId, value(fu).amount, value(fu).assetId, fs, (ai == ""), dQ, dR, dS, dT, dU)
708708 let dv = parseIntValue(ed._8)
709709 if (if (if (bh())
710710 then true
711711 else (dv == r))
712712 then true
713713 else (dv == t))
714714 then throw(("Blocked:" + toString(dv)))
715715 else ed
716716 }
717717
718718
719719 func fv (fw,dn,dp,ai,fx) = {
720720 let dr = toBase58String(value(by))
721721 let ds = toBase58String(value(bz))
722722 let dq = bx
723723 let dX = bA
724724 let dY = bB
725725 let eW = toBigInt(valueOrErrorMessage(assetInfo(dq), "invalid lp asset").quantity)
726726 let fy = if ((eW > e))
727727 then true
728728 else throw("initial deposit requires all coins")
729729 if ((fy == fy))
730730 then {
731731 let dx = bX(dr)
732732 let dz = bX(ds)
733733 let fz = if ((ai == ""))
734734 then $Tuple2(dx, dz)
735735 else if ((dn == dr))
736736 then if ((fw > dx))
737737 then throw("invalid payment amount")
738738 else $Tuple2((dx - fw), dz)
739739 else if ((dn == ds))
740740 then if ((fw > dz))
741741 then throw("invalid payment amount")
742742 else $Tuple2(dx, (dz - fw))
743743 else throw("wrong pmtAssetId")
744744 let fA = fz._1
745745 let fB = fz._2
746746 let fC = if ((dn == dr))
747747 then $Tuple2(fw, 0)
748748 else if ((dn == ds))
749749 then $Tuple2(0, fw)
750750 else throw("invalid payment")
751751 let fD = fC._1
752752 let fE = fC._2
753753 let fF = if (fx)
754754 then $Tuple3(cF(fD, bd)._1, cF(fE, bd)._1, cF(fw, bd)._2)
755755 else $Tuple3(fD, fE, 0)
756756 let fG = fF._1
757757 let fH = fF._2
758758 let cH = fF._3
759759 let fI = (fA + fG)
760760 let fJ = (fB + fH)
761761 let cl = cI([I(fA, bA), I(fB, bB)])
762762 let ck = cI([I(fI, bA), I(fJ, bB)])
763763 let ee = if ((ck > cl))
764764 then true
765765 else throw()
766766 if ((ee == ee))
767767 then {
768768 let fK = fraction(eW, (ck - cl), cl, FLOOR)
769769 let dC = M(bZ(I(fJ, dY), I(fI, dX)), a)
770770 let ex = [IntegerEntry(ac(), dC), IntegerEntry(ad(height, lastBlock.timestamp), dC), StringEntry(ag(dp, ai), bI(fD, fE, toInt(fK), dC, 0, 0, height, lastBlock.timestamp, 0, 0))]
771771 let fL = fraction(fB, a, fA)
772772 let fM = fraction(fw, a, (fL + a))
773773 let fN = (fw - fM)
774774 let fO = fraction(eW, toBigInt(fN), toBigInt(fB))
775775 let fP = toInt(fraction((fK - fO), b, fO))
776776 $Tuple4(toInt(fK), ex, cH, fP)
777777 }
778778 else throw("Strict value is not equal to itself.")
779779 }
780780 else throw("Strict value is not equal to itself.")
781781 }
782782
783783
784784 func fQ (fR,fS,fT,fs,fU,fV) = {
785785 let dq = toBase58String(value(bx))
786786 let dr = toBase58String(value(by))
787787 let ds = toBase58String(value(bz))
788788 let fW = bA
789789 let fX = bB
790790 let fY = bw
791791 let dp = if ((fs == bH))
792792 then fU
793793 else fs
794794 let fq = value(fT[0])
795795 let dn = value(fq.assetId)
796796 let dT = fq.amount
797797 let eX = eQ(e, e, e)
798798 if ((eX == eX))
799799 then {
800800 let dm = toBase58String(fV)
801801 if ((dq != toBase58String(dn)))
802802 then throw("Wrong LP")
803803 else {
804804 let dx = bX(dr)
805805 let dz = bX(ds)
806806 let fZ = {
807807 let be = invoke(this, "getOneTknV2READONLY", [fR, dT], nil)
808808 if ($isInstanceOf(be, "(Int, Int)"))
809809 then be
810810 else throw(($getType(be) + " couldn't be cast to (Int, Int)"))
811811 }
812812 if ((fZ == fZ))
813813 then {
814814 let cH = fZ._2
815815 let ga = fZ._1
816816 let gb = if (if ((fS > 0))
817817 then (fS > ga)
818818 else false)
819819 then ba(makeString(["amount to receive is less than ", toString(fS)], ""))
820820 else ga
821821 let gc = if ((fR == dr))
822822 then $Tuple4(gb, 0, ((dx - gb) - cH), dz)
823823 else if ((fR == ds))
824824 then $Tuple4(0, gb, dx, ((dz - gb) - cH))
825825 else throw("invalid out asset id")
826826 let gd = gc._1
827827 let ge = gc._2
828828 let fI = gc._3
829829 let fJ = gc._4
830830 let gf = bZ(I(fJ, fX), I(fI, fW))
831831 let gg = M(gf, a)
832832 let gh = if ((fR == "WAVES"))
833833 then unit
834834 else fromBase58String(fR)
835835 let gi = if ((cH > 0))
836836 then [ScriptTransfer(bj, cH, gh)]
837837 else nil
838838 let dJ = ([ScriptTransfer(dp, gb, gh), StringEntry(aj(toString(dp), dm), bT(gd, ge, dT, gg, height, lastBlock.timestamp)), IntegerEntry(ac(), gg), IntegerEntry(ad(height, lastBlock.timestamp), gg)] ++ gi)
839839 if ((dJ == dJ))
840840 then {
841841 let gj = invoke(aU, "burn", [dT], [AttachedPayment(dn, dT)])
842842 if ((gj == gj))
843843 then {
844844 let gk = {
845845 let gl = if ((this == bj))
846846 then 0
847847 else cH
848848 let gm = if ((bo(fR) == by))
849849 then true
850850 else false
851851 if (gm)
852852 then $Tuple2(-((ga + gl)), 0)
853853 else $Tuple2(0, -((ga + gl)))
854854 }
855855 let eZ = gk._1
856856 let fa = gk._2
857857 let gn = eY(eZ, fa, 0)
858858 let go = gn._1
859859 let eP = gn._2
860860 let gp = fc(eX, eP)
861861 if ((gp == gp))
862862 then $Tuple2((dJ ++ go), gb)
863863 else throw("Strict value is not equal to itself.")
864864 }
865865 else throw("Strict value is not equal to itself.")
866866 }
867867 else throw("Strict value is not equal to itself.")
868868 }
869869 else throw("Strict value is not equal to itself.")
870870 }
871871 }
872872 else throw("Strict value is not equal to itself.")
873873 }
874874
875875
876876 func gq () = {
877877 let gr = aS()
878878 let aQ = getString(gr, aa())
879879 if ($isInstanceOf(aQ, "String"))
880880 then {
881881 let aV = aQ
882882 fromBase58String(aV)
883883 }
884884 else if ($isInstanceOf(aQ, "Unit"))
885885 then unit
886886 else throw("Match error")
887887 }
888888
889889
890890 let gs = throw("Permission denied")
891891
892892 func gt (cX) = {
893893 let aQ = gq()
894894 if ($isInstanceOf(aQ, "ByteVector"))
895895 then {
896896 let gu = aQ
897897 (cX.callerPublicKey == gu)
898898 }
899899 else if ($isInstanceOf(aQ, "Unit"))
900900 then (cX.caller == this)
901901 else throw("Match error")
902902 }
903903
904904
905905 func gv (cX) = {
906906 let aQ = gq()
907907 if ($isInstanceOf(aQ, "ByteVector"))
908908 then {
909909 let gu = aQ
910910 if ((cX.callerPublicKey == gu))
911911 then true
912912 else gs
913913 }
914914 else if ($isInstanceOf(aQ, "Unit"))
915915 then if ((cX.caller == this))
916916 then true
917917 else gs
918918 else throw("Match error")
919919 }
920920
921921
922922 func gw (gx,ez,gy) = {
923923 let bs = bk()
924924 let dr = bs[x]
925925 let ds = bs[y]
926926 let eA = g
927927 let eC = parseBigIntValue(m)
928928 let aR = (parseBigIntValue(bg) * eC)
929929 let cJ = if ((gx == false))
930930 then [(toBigInt(bX(dr)) + gy), toBigInt(bX(ds))]
931931 else [(toBigInt(bX(ds)) + gy), toBigInt(bX(dr))]
932932 let eB = cJ[0]
933933 let aV = eB
934934 let cM = (aR * eA)
935935 let eD = (((((ez * ez) / (eB * eA)) * ez) * eC) / (cM * eA))
936936 let eE = ((aV + ((ez * eC) / cM)) - ez)
937937 func cV (cW,eF) = {
938938 let gz = cW
939939 let eH = gz._1
940940 let dk = gz._2
941941 if ((dk != unit))
942942 then cW
943943 else {
944944 let eI = (((eH * eH) + eD) / ((g * eH) + eE))
945945 let eJ = Y((eI - value(eH)))
946946 if ((f >= eJ))
947947 then $Tuple2(eI, eF)
948948 else $Tuple2(eI, unit)
949949 }
950950 }
951951
952952 let db = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
953953 let gA = {
954954 let dd = db
955955 let de = size(dd)
956956 let df = $Tuple2(ez, unit)
957957 func dg (dh,di) = if ((di >= de))
958958 then dh
959959 else cV(dh, dd[di])
960960
961961 func dj (dh,di) = if ((di >= de))
962962 then dh
963963 else throw("List size exceeds 15")
964964
965965 dj(dg(dg(dg(dg(dg(dg(dg(dg(dg(dg(dg(dg(dg(dg(dg(df, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
966966 }
967967 let eH = gA._1
968968 let dk = gA._2
969969 if ((dk != unit))
970970 then eH
971971 else throw(("Y calculation error, Y = " + toString(eH)))
972972 }
973973
974974
975975 func gB () = valueOrElse(getBoolean(aU, aH(toString(this))), false)
976976
977977
978978 @Callable(cX)
979979 func calculateAmountOutForSwapREADONLY (gC,gx,gD) = {
980980 let gE = if ((gx == false))
981981 then {
982982 let gF = aW(this, al())
983983 let gy = (toBigInt(bX(aW(this, ak()))) + toBigInt(gC))
984984 $Tuple2(gF, gy)
985985 }
986986 else {
987987 let gF = aW(this, ak())
988988 let gy = (toBigInt(bX(aW(this, al()))) + toBigInt(gC))
989989 $Tuple2(gF, gy)
990990 }
991991 let gF = gE._1
992992 let gy = gE._2
993993 let bs = bk()
994994 let dr = bs[x]
995995 let ds = bs[y]
996996 let cJ = [toBigInt(bX(dr)), toBigInt(bX(ds))]
997997 let ez = cI(cJ)
998998 let eH = gw(gx, ez, toBigInt(gC))
999999 let gG = ((toBigInt(bX(gF)) - eH) - toBigInt(1))
10001000 let gH = max([0, toInt(gG)])
10011001 let gI = if ((gx == false))
10021002 then [((toBigInt(bX(dr)) + toBigInt(gC)) + toBigInt(gD)), (toBigInt(bX(ds)) - gG)]
10031003 else [(toBigInt(bX(dr)) - gG), ((toBigInt(bX(ds)) + toBigInt(gC)) + toBigInt(gD))]
10041004 let gJ = cI(gI)
10051005 let ee = if ((gJ >= ez))
10061006 then true
10071007 else throw(makeString(["new D is fewer error", toString(ez), toString(gJ)], "__"))
10081008 if ((ee == ee))
10091009 then $Tuple2(nil, gH)
10101010 else throw("Strict value is not equal to itself.")
10111011 }
10121012
10131013
10141014
10151015 @Callable(cX)
10161016 func calculateAmountOutForSwapAndSendTokens (gC,gx,gK,gL,gD) = {
10171017 let gM = {
10181018 let be = invoke(aU, "getSwapContractREADONLY", nil, nil)
10191019 if ($isInstanceOf(be, "String"))
10201020 then be
10211021 else throw(($getType(be) + " couldn't be cast to String"))
10221022 }
10231023 let gN = {
10241024 let be = invoke(aU, "isPoolSwapDisabledREADONLY", [toString(this)], nil)
10251025 if ($isInstanceOf(be, "Boolean"))
10261026 then be
10271027 else throw(($getType(be) + " couldn't be cast to Boolean"))
10281028 }
10291029 let gO = if (if (bh())
10301030 then true
10311031 else (bw == t))
10321032 then true
10331033 else gN
10341034 let gP = [if (if (!(gO))
10351035 then true
10361036 else gt(cX))
10371037 then true
10381038 else ba("swap operation is blocked by admin"), if ((value(cX.payments[0]).amount >= gC))
10391039 then true
10401040 else ba("Wrong amount"), if ((cX.caller == addressFromStringValue(gM)))
10411041 then true
10421042 else ba("Permission denied")]
10431043 if ((gP == gP))
10441044 then {
10451045 let fq = value(cX.payments[0])
10461046 let gQ = bq(fq.assetId)
10471047 let gR = if ((gx == false))
10481048 then {
10491049 let gF = aW(this, al())
10501050 let gy = (bX(gQ) - value(cX.payments[0]).amount)
10511051 $Tuple2(gF, gy)
10521052 }
10531053 else {
10541054 let gF = aW(this, ak())
10551055 let gy = (bX(gQ) - value(cX.payments[0]).amount)
10561056 $Tuple2(gF, gy)
10571057 }
10581058 let gF = gR._1
10591059 let gy = gR._2
10601060 let bs = bk()
10611061 let dr = bs[x]
10621062 let ds = bs[y]
10631063 let cJ = if ((gx == false))
10641064 then [(toBigInt(bX(dr)) - toBigInt(value(cX.payments[0]).amount)), toBigInt(bX(ds))]
10651065 else [toBigInt(bX(dr)), (toBigInt(bX(ds)) - toBigInt(value(cX.payments[0]).amount))]
10661066 let ez = cI(cJ)
10671067 let eH = gw(gx, ez, toBigInt(0))
10681068 let gG = ((toBigInt(bX(gF)) - eH) - toBigInt(1))
10691069 let gH = max([0, toInt(gG)])
10701070 let gS = if ((gH >= gK))
10711071 then true
10721072 else throw("Exchange result is fewer coins than expected")
10731073 if ((gS == gS))
10741074 then {
10751075 let gI = if ((gx == false))
10761076 then [(toBigInt(bX(dr)) + toBigInt(gD)), (toBigInt(bX(ds)) - gG)]
10771077 else [(toBigInt(bX(dr)) - gG), (toBigInt(bX(ds)) + toBigInt(gD))]
10781078 let gJ = cI(gI)
10791079 let ee = if ((gJ >= ez))
10801080 then true
10811081 else throw("new D is fewer error")
10821082 if ((ee == ee))
10831083 then {
10841084 let eZ = if (gx)
10851085 then -(gH)
10861086 else gD
10871087 let fa = if (gx)
10881088 then gD
10891089 else -(gH)
10901090 let go = eY(eZ, fa, 0)._1
10911091 if ((go == go))
10921092 then $Tuple2([ScriptTransfer(addressFromStringValue(gL), gH, bo(gF))], gH)
10931093 else throw("Strict value is not equal to itself.")
10941094 }
10951095 else throw("Strict value is not equal to itself.")
10961096 }
10971097 else throw("Strict value is not equal to itself.")
10981098 }
10991099 else throw("Strict value is not equal to itself.")
11001100 }
11011101
11021102
11031103
11041104 @Callable(cX)
11051105 func constructor (Z) = {
11061106 let eD = gv(cX)
11071107 if ((eD == eD))
11081108 then [StringEntry(Z(), Z)]
11091109 else throw("Strict value is not equal to itself.")
11101110 }
11111111
11121112
11131113
11141114 @Callable(cX)
11151115 func put (gT,gU) = {
11161116 let gV = bC()
11171117 let gW = valueOrErrorMessage(addressFromString(gV[D]), "Wr st addr")
11181118 let gX = valueOrErrorMessage(addressFromString(gV[F]), "Wr sl addr")
11191119 if ((0 > gT))
11201120 then throw("Wrong slippage")
11211121 else if ((size(cX.payments) != 2))
11221122 then throw("2 pmnts expd")
11231123 else {
11241124 let gY = toBigInt(value(cX.payments[0]).amount)
11251125 let gZ = toBigInt(value(cX.payments[1]).amount)
11261126 let eU = (toBigInt(bX(bq(by))) - gY)
11271127 if ((eU == eU))
11281128 then {
11291129 let eV = (toBigInt(bX(bq(bz))) - gZ)
11301130 if ((eV == eV))
11311131 then {
11321132 let eW = toBigInt(value(assetInfo(bx)).quantity)
11331133 if ((eW == eW))
11341134 then {
11351135 let eX = eQ(gY, gZ, toBigInt(0))
11361136 if ((eX == eX))
11371137 then {
11381138 let ha = fr(toString(cX.caller), toBase58String(cX.transactionId), AttachedPayment(value(cX.payments[0]).assetId, value(cX.payments[0]).amount), cX.payments[1], gT, true, false, true, 0, "")
11391139 let er = ha._2
11401140 let hb = ha._7
11411141 let dJ = ha._9
11421142 let es = ha._10
11431143 let et = ha._11
11441144 let dr = ha._12
11451145 let ds = ha._13
11461146 let ed = invoke(aU, "emit", [er], nil)
11471147 if ((ed == ed))
11481148 then {
11491149 let hc = {
11501150 let aQ = ed
11511151 if ($isInstanceOf(aQ, "Address"))
11521152 then {
11531153 let hd = aQ
11541154 invoke(hd, "emit", [er], nil)
11551155 }
11561156 else unit
11571157 }
11581158 if ((hc == hc))
11591159 then {
11601160 let he = if ((es > 0))
11611161 then invoke(gX, "put", nil, [AttachedPayment(dr, es)])
11621162 else nil
11631163 if ((he == he))
11641164 then {
11651165 let hf = if ((et > 0))
11661166 then invoke(gX, "put", nil, [AttachedPayment(ds, et)])
11671167 else nil
11681168 if ((hf == hf))
11691169 then {
11701170 let hg = if (gU)
11711171 then {
11721172 let hh = invoke(gW, "stake", nil, [AttachedPayment(hb, er)])
11731173 if ((hh == hh))
11741174 then nil
11751175 else throw("Strict value is not equal to itself.")
11761176 }
11771177 else [ScriptTransfer(cX.caller, er, hb)]
11781178 let hi = eY(0, 0, 0)
11791179 let go = hi._1
11801180 let eP = hi._2
11811181 let hj = if ((eP >= eX))
11821182 then true
11831183 else ba(makeString(["updated DLp lower than current DLp", toString(eU), toString(eV), toString(eW), toString(eX), toString(eP), toString(es), toString(et)], " "))
11841184 if ((hj == hj))
11851185 then {
11861186 let hk = value(assetInfo(bx)).quantity
11871187 if ((hk == hk))
11881188 then ((dJ ++ hg) ++ go)
11891189 else throw("Strict value is not equal to itself.")
11901190 }
11911191 else throw("Strict value is not equal to itself.")
11921192 }
11931193 else throw("Strict value is not equal to itself.")
11941194 }
11951195 else throw("Strict value is not equal to itself.")
11961196 }
11971197 else throw("Strict value is not equal to itself.")
11981198 }
11991199 else throw("Strict value is not equal to itself.")
12001200 }
12011201 else throw("Strict value is not equal to itself.")
12021202 }
12031203 else throw("Strict value is not equal to itself.")
12041204 }
12051205 else throw("Strict value is not equal to itself.")
12061206 }
12071207 else throw("Strict value is not equal to itself.")
12081208 }
12091209 }
12101210
12111211
12121212
12131213 @Callable(cX)
12141214 func putOneTknV2 (fS,gU) = {
12151215 let hl = {
12161216 let be = invoke(aU, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
12171217 if ($isInstanceOf(be, "Boolean"))
12181218 then be
12191219 else throw(($getType(be) + " couldn't be cast to Boolean"))
12201220 }
12211221 let hm = if (if (if (bh())
12221222 then true
12231223 else (bw == r))
12241224 then true
12251225 else (bw == t))
12261226 then true
12271227 else hl
12281228 let gP = [if (if (!(hm))
12291229 then true
12301230 else gt(cX))
12311231 then true
12321232 else ba("put operation is blocked by admin"), if ((size(cX.payments) == 1))
12331233 then true
12341234 else ba("exactly 1 payment are expected")]
12351235 if ((gP == gP))
12361236 then {
12371237 let dr = toBase58String(value(by))
12381238 let ds = toBase58String(value(bz))
12391239 let dq = bx
12401240 let fW = bA
12411241 let fX = bB
12421242 let dp = if ((cX.caller == this))
12431243 then cX.originCaller
12441244 else cX.caller
12451245 let fq = value(cX.payments[0])
12461246 let dn = toBase58String(value(fq.assetId))
12471247 let dT = fq.amount
12481248 let eX = if ((fq.assetId == by))
12491249 then eQ(toBigInt(dT), toBigInt(0), toBigInt(0))
12501250 else eQ(toBigInt(0), toBigInt(dT), toBigInt(0))
12511251 if ((eX == eX))
12521252 then {
12531253 let hn = fv(dT, dn, toString(dp), toBase58String(cX.transactionId), true)
12541254 if ((hn == hn))
12551255 then {
12561256 let cH = hn._3
12571257 let dJ = hn._2
12581258 let ho = hn._1
12591259 let er = if (if ((fS > 0))
12601260 then (fS > ho)
12611261 else false)
12621262 then ba(makeString(["amount to receive is less than ", toString(fS)], ""))
12631263 else ho
12641264 let ha = invoke(aU, "emit", [er], nil)
12651265 if ((ha == ha))
12661266 then {
12671267 let hc = {
12681268 let aQ = ha
12691269 if ($isInstanceOf(aQ, "Address"))
12701270 then {
12711271 let hd = aQ
12721272 invoke(hd, "emit", [er], nil)
12731273 }
12741274 else unit
12751275 }
12761276 if ((hc == hc))
12771277 then {
12781278 let hg = if (gU)
12791279 then {
12801280 let hh = invoke(bE, "stakeFor", [toString(cX.caller)], [AttachedPayment(dq, er)])
12811281 if ((hh == hh))
12821282 then nil
12831283 else throw("Strict value is not equal to itself.")
12841284 }
12851285 else [ScriptTransfer(cX.caller, er, dq)]
12861286 let gi = if ((cH > 0))
12871287 then [ScriptTransfer(bj, cH, fromBase58String(dn))]
12881288 else nil
12891289 let hp = if ((this == bj))
12901290 then $Tuple2(0, 0)
12911291 else {
12921292 let hq = if ((fq.assetId == by))
12931293 then true
12941294 else false
12951295 if (hq)
12961296 then $Tuple2(-(cH), 0)
12971297 else $Tuple2(0, -(cH))
12981298 }
12991299 let eZ = hp._1
13001300 let fa = hp._2
13011301 let hr = eY(eZ, fa, 0)
13021302 let go = hr._1
13031303 let eP = hr._2
13041304 let gp = fc(eX, eP)
13051305 if ((gp == gp))
13061306 then $Tuple2((((dJ ++ hg) ++ gi) ++ go), er)
13071307 else throw("Strict value is not equal to itself.")
13081308 }
13091309 else throw("Strict value is not equal to itself.")
13101310 }
13111311 else throw("Strict value is not equal to itself.")
13121312 }
13131313 else throw("Strict value is not equal to itself.")
13141314 }
13151315 else throw("Strict value is not equal to itself.")
13161316 }
13171317 else throw("Strict value is not equal to itself.")
13181318 }
13191319
13201320
13211321
13221322 @Callable(cX)
13231323 func putForFree (hs) = if ((0 > hs))
13241324 then throw("Wrong slpg")
13251325 else if ((size(cX.payments) != 2))
13261326 then throw("2 pmnts expd")
13271327 else {
13281328 let ht = fr(toString(cX.caller), toBase58String(cX.transactionId), AttachedPayment(value(cX.payments[0]).assetId, value(cX.payments[0]).amount), cX.payments[1], hs, false, false, true, 0, "")
13291329 let dJ = ht._9
13301330 let gY = toBigInt(value(cX.payments[0]).amount)
13311331 let gZ = toBigInt(value(cX.payments[1]).amount)
13321332 let eX = eQ(gY, gZ, toBigInt(0))
13331333 if ((eX == eX))
13341334 then {
13351335 let hu = eY(0, 0, 0)
13361336 let go = hu._1
13371337 let eP = hu._2
13381338 let gp = fc(eX, eP)
13391339 if ((gp == gp))
13401340 then (dJ ++ go)
13411341 else throw("Strict value is not equal to itself.")
13421342 }
13431343 else throw("Strict value is not equal to itself.")
13441344 }
13451345
13461346
13471347
13481348 @Callable(cX)
13491349 func get () = {
13501350 let eX = eQ(toBigInt(0), toBigInt(0), toBigInt(0))
13511351 if ((eX == eX))
13521352 then {
13531353 let ed = fp(cX)
13541354 let hv = ed._1
13551355 let dI = ed._2
13561356 let dT = ed._3
13571357 let dn = ed._4
13581358 let dJ = ed._5
13591359 let eE = invoke(aU, "burn", [dT], [AttachedPayment(dn, dT)])
13601360 if ((eE == eE))
13611361 then {
13621362 let hw = eY(-(hv), -(dI), 0)
13631363 let go = hw._1
13641364 let eP = hw._2
13651365 let gp = fc(eX, eP)
13661366 if ((gp == gp))
13671367 then (dJ ++ go)
13681368 else throw("Strict value is not equal to itself.")
13691369 }
13701370 else throw("Strict value is not equal to itself.")
13711371 }
13721372 else throw("Strict value is not equal to itself.")
13731373 }
13741374
13751375
13761376
13771377 @Callable(cX)
13781378 func getOneTknV2 (fR,fS) = {
13791379 let hl = {
13801380 let be = invoke(aU, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
13811381 if ($isInstanceOf(be, "Boolean"))
13821382 then be
13831383 else throw(($getType(be) + " couldn't be cast to Boolean"))
13841384 }
13851385 let hx = if (if (bh())
13861386 then true
13871387 else (bw == t))
13881388 then true
13891389 else hl
13901390 let gP = [if (if (!(hx))
13911391 then true
13921392 else gt(cX))
13931393 then true
13941394 else ba("get operation is blocked by admin"), if ((size(cX.payments) == 1))
13951395 then true
13961396 else ba("exactly 1 payment are expected")]
13971397 if ((gP == gP))
13981398 then {
13991399 let hy = fQ(fR, fS, cX.payments, cX.caller, cX.originCaller, cX.transactionId)
14001400 let dJ = hy._1
14011401 let gb = hy._2
14021402 $Tuple2(dJ, gb)
14031403 }
14041404 else throw("Strict value is not equal to itself.")
14051405 }
14061406
14071407
14081408
14091409 @Callable(cX)
14101410 func refreshDLp () = {
14111411 let hz = valueOrElse(getInteger(at), 0)
14121412 let hA = if (((height - hz) >= aw))
14131413 then unit
14141414 else ba(makeString([toString(aw), " blocks have not passed since the previous call"], ""))
14151415 if ((hA == hA))
14161416 then {
14171417 let fj = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, as), "0")), bc("invalid dLp"))
14181418 let hB = eY(0, 0, 0)
14191419 let hC = hB._1
14201420 let eP = hB._2
14211421 let fb = if ((fj != eP))
14221422 then hC
14231423 else ba("nothing to refresh")
14241424 $Tuple2(fb, toString(eP))
14251425 }
14261426 else throw("Strict value is not equal to itself.")
14271427 }
14281428
14291429
14301430
14311431 @Callable(cX)
14321432 func getOneTknV2READONLY (fR,hD) = {
14331433 let dr = toBase58String(value(by))
14341434 let ds = toBase58String(value(bz))
14351435 let dq = toBase58String(value(bx))
14361436 let cJ = [toBigInt(bX(dr)), toBigInt(bX(ds))]
14371437 let eO = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(dq)), "invalid lp asset").quantity)
14381438 let cl = cI(cJ)
14391439 let ck = (cl - fraction(toBigInt(hD), cl, eO))
14401440 let hE = if ((fR == dr))
14411441 then 0
14421442 else if ((fR == ds))
14431443 then 1
14441444 else throw("invalid out asset id")
14451445 let hF = ey(cJ, hE, ck)
14461446 let gG = (cJ[hE] - hF)
14471447 let gH = max([0, toInt((gG - f))])
14481448 let hG = cF(gH, bf)
14491449 let ga = hG._1
14501450 let cH = hG._2
14511451 $Tuple2(nil, $Tuple2(ga, cH))
14521452 }
14531453
14541454
14551455
14561456 @Callable(cX)
14571457 func getOneTknV2WithBonusREADONLY (fR,hD) = {
14581458 let dr = toBase58String(value(by))
14591459 let ds = toBase58String(value(bz))
14601460 let dq = toBase58String(value(bx))
14611461 let dx = bX(dr)
14621462 let dz = bX(ds)
14631463 let hH = {
14641464 let be = invoke(this, "getOneTknV2READONLY", [fR, hD], nil)
14651465 if ($isInstanceOf(be, "(Int, Int)"))
14661466 then be
14671467 else throw(($getType(be) + " couldn't be cast to (Int, Int)"))
14681468 }
14691469 let ga = hH._1
14701470 let cH = hH._2
14711471 let ed = dl("", dq, hD, this)
14721472 let dH = ed._1
14731473 let dI = ed._2
14741474 let hI = (dH + dI)
14751475 let fP = if ((hI == 0))
14761476 then if ((ga == 0))
14771477 then 0
14781478 else throw("bonus calculation error")
14791479 else fraction((ga - hI), a, hI)
14801480 $Tuple2(nil, $Tuple3(ga, cH, fP))
14811481 }
14821482
14831483
14841484
14851485 @Callable(cX)
14861486 func getNoLess (hJ,hK) = {
14871487 let ed = fp(cX)
14881488 let dH = ed._1
14891489 let dI = ed._2
14901490 let dT = ed._3
14911491 let dn = ed._4
14921492 let dJ = ed._5
14931493 if ((hJ > dH))
14941494 then throw(((("Failed: " + toString(dH)) + " < ") + toString(hJ)))
14951495 else if ((hK > dI))
14961496 then throw(((("Failed: " + toString(dI)) + " < ") + toString(hK)))
14971497 else {
14981498 let eX = eQ(toBigInt(0), toBigInt(0), toBigInt(0))
14991499 if ((eX == eX))
15001500 then {
15011501 let hL = invoke(aU, "burn", [dT], [AttachedPayment(dn, dT)])
15021502 if ((hL == hL))
15031503 then {
15041504 let hM = eY(-(dH), -(dI), 0)
15051505 let go = hM._1
15061506 let eP = hM._2
15071507 let gp = fc(eX, eP)
15081508 if ((gp == gp))
15091509 then (dJ ++ go)
15101510 else throw("Strict value is not equal to itself.")
15111511 }
15121512 else throw("Strict value is not equal to itself.")
15131513 }
15141514 else throw("Strict value is not equal to itself.")
15151515 }
15161516 }
15171517
15181518
15191519
15201520 @Callable(cX)
15211521 func unstakeAndGet (cG) = {
15221522 let hN = if ((size(cX.payments) != 0))
15231523 then throw("No pmnts expd")
15241524 else true
15251525 if ((hN == hN))
15261526 then {
15271527 let hO = bC()
15281528 let hb = bx
15291529 let hP = valueOrErrorMessage(addressFromString(hO[D]), "Wr st addr")
15301530 let eX = eQ(toBigInt(0), toBigInt(0), toBigInt(0))
15311531 if ((eX == eX))
15321532 then {
15331533 let hQ = invoke(hP, "unstake", [toBase58String(hb), cG], nil)
15341534 if ((hQ == hQ))
15351535 then {
15361536 let ed = dl(toBase58String(cX.transactionId), toBase58String(hb), cG, cX.caller)
15371537 let dH = ed._1
15381538 let dI = ed._2
15391539 let dv = parseIntValue(ed._9)
15401540 let dJ = ed._10
15411541 let hR = if (if (bh())
15421542 then true
15431543 else (dv == t))
15441544 then throw(("Blocked: " + toString(dv)))
15451545 else true
15461546 if ((hR == hR))
15471547 then {
15481548 let hS = invoke(aU, "burn", [cG], [AttachedPayment(hb, cG)])
15491549 if ((hS == hS))
15501550 then {
15511551 let hT = eY(-(dH), -(dI), 0)
15521552 let go = hT._1
15531553 let eP = hT._2
15541554 let gp = fc(eX, eP)
15551555 if ((gp == gp))
15561556 then (dJ ++ go)
15571557 else throw("Strict value is not equal to itself.")
15581558 }
15591559 else throw("Strict value is not equal to itself.")
15601560 }
15611561 else throw("Strict value is not equal to itself.")
15621562 }
15631563 else throw("Strict value is not equal to itself.")
15641564 }
15651565 else throw("Strict value is not equal to itself.")
15661566 }
15671567 else throw("Strict value is not equal to itself.")
15681568 }
15691569
15701570
15711571
15721572 @Callable(cX)
15731573 func unstakeAndGetNoLess (hU,hV,hK) = {
15741574 let hx = if (bh())
15751575 then true
15761576 else (bw == t)
15771577 let gP = [if (!(hx))
15781578 then true
15791579 else throw("get operation is blocked by admin"), if ((size(cX.payments) == 0))
15801580 then true
15811581 else throw("no payments are expected")]
15821582 if ((gP == gP))
15831583 then {
15841584 let eX = eQ(toBigInt(0), toBigInt(0), toBigInt(0))
15851585 if ((eX == eX))
15861586 then {
15871587 let hQ = invoke(bE, "unstake", [toBase58String(bx), hU], nil)
15881588 if ((hQ == hQ))
15891589 then {
15901590 let hW = dl(toBase58String(cX.transactionId), toBase58String(bx), hU, cX.caller)
15911591 let dH = hW._1
15921592 let dI = hW._2
15931593 let dJ = hW._10
15941594 let hX = [if ((dH >= hV))
15951595 then true
15961596 else throw(makeString(["amount asset amount to receive is less than ", toString(hV)], "")), if ((dI >= hK))
15971597 then true
15981598 else throw(makeString(["price asset amount to receive is less than ", toString(hK)], ""))]
15991599 if ((hX == hX))
16001600 then {
16011601 let hL = invoke(aU, "burn", [hU], [AttachedPayment(bx, hU)])
16021602 if ((hL == hL))
16031603 then {
16041604 let hY = eY(-(dH), -(dI), 0)
16051605 let go = hY._1
16061606 let eP = hY._2
16071607 let gp = fc(eX, eP)
16081608 if ((gp == gp))
16091609 then (dJ ++ go)
16101610 else throw("Strict value is not equal to itself.")
16111611 }
16121612 else throw("Strict value is not equal to itself.")
16131613 }
16141614 else throw("Strict value is not equal to itself.")
16151615 }
16161616 else throw("Strict value is not equal to itself.")
16171617 }
16181618 else throw("Strict value is not equal to itself.")
16191619 }
16201620 else throw("Strict value is not equal to itself.")
16211621 }
16221622
16231623
16241624
16251625 @Callable(cX)
16261626 func unstakeAndGetOneTknV2 (hU,fR,fS) = {
16271627 let hl = {
16281628 let be = invoke(aU, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
16291629 if ($isInstanceOf(be, "Boolean"))
16301630 then be
16311631 else throw(($getType(be) + " couldn't be cast to Boolean"))
16321632 }
16331633 let hx = if (if (bh())
16341634 then true
16351635 else (bw == t))
16361636 then true
16371637 else hl
16381638 let gP = [if (if (!(hx))
16391639 then true
16401640 else gt(cX))
16411641 then true
16421642 else ba("get operation is blocked by admin"), if ((size(cX.payments) == 0))
16431643 then true
16441644 else ba("no payments are expected")]
16451645 if ((gP == gP))
16461646 then {
16471647 let hO = bC()
16481648 let hb = bx
16491649 let hP = valueOrErrorMessage(addressFromString(hO[D]), "Wr st addr")
16501650 let dp = cX.caller
16511651 let hZ = this
16521652 let hQ = invoke(hP, "unstakeINTERNAL", [hb, hU, dp.bytes, hZ.bytes], nil)
16531653 if ((hQ == hQ))
16541654 then {
16551655 let ia = fQ(fR, fS, [AttachedPayment(hb, hU)], cX.caller, cX.originCaller, cX.transactionId)
16561656 let dJ = ia._1
16571657 let gb = ia._2
16581658 $Tuple2(dJ, gb)
16591659 }
16601660 else throw("Strict value is not equal to itself.")
16611661 }
16621662 else throw("Strict value is not equal to itself.")
16631663 }
16641664
16651665
16661666
16671667 @Callable(cX)
16681668 func putOneTknV2WithBonusREADONLY (ib,ic) = {
16691669 let id = fv(ib, ic, "", "", true)
16701670 let fK = id._1
16711671 let dJ = id._2
16721672 let cH = id._3
16731673 let fP = id._4
16741674 $Tuple2(nil, $Tuple3(fK, cH, fP))
16751675 }
16761676
16771677
16781678
16791679 @Callable(cX)
16801680 func putOneTknV2WithoutTakeFeeREADONLY (ib,ic) = {
16811681 let ie = fv(ib, ic, "", "", false)
16821682 let fK = ie._1
16831683 let dJ = ie._2
16841684 let cH = ie._3
16851685 let fP = ie._4
16861686 $Tuple2(nil, $Tuple3(fK, cH, fP))
16871687 }
16881688
16891689
16901690
16911691 @Callable(cX)
16921692 func activate (if,ig) = if ((toString(cX.caller) != toString(aU)))
16931693 then throw("denied")
16941694 else $Tuple2([StringEntry(ak(), if), StringEntry(al(), ig), StringEntry(am(), toString(l)), StringEntry(an(height), toString(l))], "success")
16951695
16961696
16971697
16981698 @Callable(cX)
1699+func invert () = {
1700+ let gP = [if ((cX.caller == aU))
1701+ then true
1702+ else ba("invalid caller")]
1703+ if ((gP == gP))
1704+ then $Tuple2([StringEntry(ak(), bq(bz)), StringEntry(al(), bq(by))], unit)
1705+ else throw("Strict value is not equal to itself.")
1706+ }
1707+
1708+
1709+
1710+@Callable(cX)
16991711 func getPoolConfigWrapperREADONLY () = $Tuple2(nil, bk())
17001712
17011713
17021714
17031715 @Callable(cX)
17041716 func getAccBalanceWrapperREADONLY (bY) = $Tuple2(nil, bX(bY))
17051717
17061718
17071719
17081720 @Callable(cX)
17091721 func calcPricesWrapperREADONLY (cr,cs,cw) = {
17101722 let ih = cv(cr, cs, cw)
17111723 $Tuple2(nil, [toString(ih[0]), toString(ih[1]), toString(ih[2])])
17121724 }
17131725
17141726
17151727
17161728 @Callable(cX)
17171729 func fromX18WrapperREADONLY (N,ii) = $Tuple2(nil, M(parseBigIntValue(N), ii))
17181730
17191731
17201732
17211733 @Callable(cX)
17221734 func toX18WrapperREADONLY (J,K) = $Tuple2(nil, toString(I(J, K)))
17231735
17241736
17251737
17261738 @Callable(cX)
17271739 func calcPriceBigIntWrapperREADONLY (ca,cb) = $Tuple2(nil, toString(bZ(parseBigIntValue(ca), parseBigIntValue(cb))))
17281740
17291741
17301742
17311743 @Callable(cX)
17321744 func estimatePutOperationWrapperREADONLY (dm,cg,dL,dM,dN,dO,ij,dP,dQ) = $Tuple2(nil, dK(dm, cg, dL, dM, dN, dO, ij, dP, dQ, true, false, 0, ""))
17331745
17341746
17351747
17361748 @Callable(cX)
17371749 func estimateGetOperationWrapperREADONLY (dm,ik,do,ij) = {
17381750 let ed = dl(dm, ik, do, addressFromStringValue(ij))
17391751 $Tuple2(nil, $Tuple10(ed._1, ed._2, ed._3, ed._4, ed._5, ed._6, ed._7, toString(ed._8), ed._9, ed._10))
17401752 }
17411753
17421754
17431755
17441756 @Callable(cX)
17451757 func changeAmp () = {
17461758 let il = invoke(aU, "getChangeAmpConfigREADONLY", [toString(this)], nil)
17471759 let im = {
17481760 let aQ = il
17491761 if ($isInstanceOf(aQ, "List[Any]"))
17501762 then {
17511763 let in = aQ
17521764 $Tuple3({
17531765 let be = in[0]
17541766 if ($isInstanceOf(be, "Int"))
17551767 then be
17561768 else throw(($getType(be) + " couldn't be cast to Int"))
17571769 }, {
17581770 let be = in[1]
17591771 if ($isInstanceOf(be, "Int"))
17601772 then be
17611773 else throw(($getType(be) + " couldn't be cast to Int"))
17621774 }, {
17631775 let be = in[2]
17641776 if ($isInstanceOf(be, "Int"))
17651777 then be
17661778 else throw(($getType(be) + " couldn't be cast to Int"))
17671779 })
17681780 }
17691781 else ba("invalid entry type")
17701782 }
17711783 let io = im._1
17721784 let ip = im._2
17731785 let iq = im._3
17741786 let ir = parseIntValue(getStringValue(am()))
17751787 let is = (ir + ip)
17761788 let it = if ((0 > ip))
17771789 then if ((iq > is))
17781790 then iq
17791791 else is
17801792 else if ((is > iq))
17811793 then iq
17821794 else is
17831795 let iu = valueOrElse(getInteger(ap()), 0)
17841796 let iv = (iu + io)
17851797 let gP = [if ((height > iv))
17861798 then true
17871799 else ba("try again in few blocks"), if ((ir != it))
17881800 then true
17891801 else ba("already reached target")]
17901802 if ((gP == gP))
17911803 then [IntegerEntry(ap(), height), StringEntry(am(), toString(it)), StringEntry(an(height), toString(it))]
17921804 else throw("Strict value is not equal to itself.")
17931805 }
17941806
17951807
17961808 @Verifier(iw)
17971809 func ix () = {
17981810 let iy = {
17991811 let aQ = gq()
18001812 if ($isInstanceOf(aQ, "ByteVector"))
18011813 then {
18021814 let gu = aQ
18031815 gu
18041816 }
18051817 else if ($isInstanceOf(aQ, "Unit"))
18061818 then iw.senderPublicKey
18071819 else throw("Match error")
18081820 }
18091821 let aQ = iw
18101822 if ($isInstanceOf(aQ, "Order"))
18111823 then {
18121824 let ff = aQ
18131825 let iz = bi()
18141826 let iA = if (gB())
18151827 then $Tuple2(true, "")
18161828 else fe(ff)
18171829 let aK = iA._1
18181830 let aL = iA._2
18191831 let aM = sigVerify(ff.bodyBytes, ff.proofs[0], ff.senderPublicKey)
18201832 let aN = sigVerify(ff.bodyBytes, ff.proofs[1], iz)
18211833 if (if (if (aK)
18221834 then aM
18231835 else false)
18241836 then aN
18251837 else false)
18261838 then true
18271839 else aJ(aK, aL, aM, aN)
18281840 }
18291841 else if ($isInstanceOf(aQ, "SetScriptTransaction"))
18301842 then {
18311843 let aV = aQ
18321844 if (sigVerify(iw.bodyBytes, iw.proofs[0], iy))
18331845 then true
18341846 else {
18351847 let iB = blake2b256(value(aV.script))
18361848 let iC = fromBase64String(value(getString(aU, aF())))
18371849 let iD = scriptHash(this)
18381850 if ((iC == iB))
18391851 then (iD != iB)
18401852 else false
18411853 }
18421854 }
18431855 else sigVerify(iw.bodyBytes, iw.proofs[0], iy)
18441856 }
18451857

github/deemru/w8io/169f3d6 
219.99 ms