tx · D5y8AR1YxjBvVHNpeHWQsj7XLkE63WaF1G5WYfdkZL91

3NAefciWv6f9fWvEXdGgpHfanJFG8HqfjuT:  -0.03100000 Waves

2022.09.21 17:55 [2239042] smart account 3NAefciWv6f9fWvEXdGgpHfanJFG8HqfjuT > SELF 0.00000000 Waves

{ "type": 13, "id": "D5y8AR1YxjBvVHNpeHWQsj7XLkE63WaF1G5WYfdkZL91", "fee": 3100000, "feeAssetId": null, "timestamp": 1663772206143, "version": 1, "sender": "3NAefciWv6f9fWvEXdGgpHfanJFG8HqfjuT", "senderPublicKey": "D1BL65meykxFZTCuq7jq9HSGLLnWvQamQPUNrguW5w39", "proofs": [ "6758E1bomwcjAaLheTLifTYywfvcgAaP9TXydseRRXb8dKXvbTwKGqW5dwqJWGTNvpDfypPAvXNSgYptAk52a8h7" ], "script": "base64:BgKFHwgCEgMKAQgSAwoBCBIAEgQKAgEEEgcKBQEBAQEEEgQKAgEEEgQKAgEIEgQKAgEIEgMKAQESABIHCgUBAQEIARIECgIIARIECgIIARIECgIIARIECgIBARIDCgEBEgUKAwEIARIECgIICBIECgIICBIECgIIARIAEgMKAQgSBQoDAQEBEgQKAggBEgQKAgEBEgQKAggIEgsKCQgBAQIBAggEBBIGCgQICAEIEgAiBnNjYWxlOCIMc2NhbGU4QmlnSW50IgdzY2FsZTE4Igp6ZXJvQmlnSW50IglvbmVCaWdJbnQiCnNsaXBwYWdlNEQiBUFtdWx0IgVEY29udiIDU0VQIgVFTVBUWSIKUG9vbEFjdGl2ZSIKUG9vbFB1dERpcyIOUG9vbE1hdGNoZXJEaXMiDFBvb2xTaHV0ZG93biIOaWR4UG9vbEFkZHJlc3MiCWlkeFBvb2xTdCIJaWR4TFBBc0lkIglpZHhBbUFzSWQiCWlkeFByQXNJZCILaWR4QW10QXNEY20iDWlkeFByaWNlQXNEY20iC2lkeElBbXRBc0lkIg1pZHhJUHJpY2VBc0lkIg9pZHhGYWN0U3Rha0NudHIiEGlkeEZhY3RTbGlwcENudHIiEWlkeEZhY3RHd3hSZXdDbnRyIgpmZWVEZWZhdWx0IgJ0MSIHb3JpZ1ZhbCINb3JpZ1NjYWxlTXVsdCICZjEiA3ZhbCIPcmVzdWx0U2NhbGVNdWx0IgJ0cyIDYW10IghyZXNTY2FsZSIIY3VyU2NhbGUiA2FicyICZmMiA21wayIEcG1wayICcGwiAnBoIgFoIgF0IgNwYXUiAnVhIgR0eElkIgNnYXUiAmFhIgJwYSIDYW1wIgNhZGEiBmtleUZlZSIDZmVlIgRmY2ZnIgRtdHBrIgJwYyIGaUFtdEFzIgVpUHJBcyIDbWJhIgViQVN0ciIDYXBzIhxrZXlBbGxvd2VkTHBTdGFibGVTY3JpcHRIYXNoIhZrZXlGZWVDb2xsZWN0b3JBZGRyZXNzIgN0b2UiA29yViIGc2VuZHJWIgZtYXRjaFYiA3N0ciIHJG1hdGNoMCIGdmFsU3RyIgRzdHJmIgRhZGRyIgNrZXkiBGludGYiA2ZjYSIBQSIDaWdzIgJtcCITZmVlQ29sbGVjdG9yQWRkcmVzcyIDZ3BjIgVhbXRBcyIHcHJpY2VBcyIIaVByaWNlQXMiA2dmYyINZmFjdG9yeUNvbmZpZyIPc3Rha2luZ0NvbnRyYWN0Ig9zbGlwYWdlQ29udHJhY3QiC2d3eENvbnRyYWN0IhFkYXRhUHV0QWN0aW9uSW5mbyINaW5BbXRBc3NldEFtdCIPaW5QcmljZUFzc2V0QW10IghvdXRMcEFtdCIFcHJpY2UiCnNsaXBCeVVzZXIiDHNsaXBwYWdlUmVhbCIIdHhIZWlnaHQiC3R4VGltZXN0YW1wIgxzbGlwYWdlQW1BbXQiDHNsaXBhZ2VQckFtdCIRZGF0YUdldEFjdGlvbkluZm8iDm91dEFtdEFzc2V0QW10IhBvdXRQcmljZUFzc2V0QW10IgdpbkxwQW10Ig1nZXRBY2NCYWxhbmNlIgdhc3NldElkIgRjcGJpIghwckFtdFgxOCIIYW1BbXRYMTgiA3ZhZCICQTEiAkEyIghzbGlwcGFnZSIEZGlmZiIEcGFzcyICdmQiAkQxIgJEMCIEc2xwZyIEZmFpbCIDcGNwIgphbUFzc2V0RGNtIgpwckFzc2V0RGNtIgVhbUFtdCIFcHJBbXQiC2FtdEFzQW10WDE4IgpwckFzQW10WDE4IgpjYWxjUHJpY2VzIgVscEFtdCIDY2ZnIghhbXRBc0RjbSIHcHJBc0RjbSIIcHJpY2VYMTgiCGxwQW10WDE4Ig1scFBySW5BbUFzWDE4Ig1scFBySW5QckFzWDE4Ig9jYWxjdWxhdGVQcmljZXMiAXAiB3Rha2VGZWUiBmFtb3VudCIJZmVlQW1vdW50IgNlZ28iBnR4SWQ1OCIKcG10QXNzZXRJZCIIcG10THBBbXQiC3VzZXJBZGRyZXNzIgRscElkIgRhbUlkIgRwcklkIgVhbURjbSIFcHJEY20iA3N0cyIHbHBFbWlzcyIJYW1CYWxhbmNlIgxhbUJhbGFuY2VYMTgiCXByQmFsYW5jZSIMcHJCYWxhbmNlWDE4IgtjdXJQcmljZVgxOCIIY3VyUHJpY2UiC3BtdExwQW10WDE4IgpscEVtaXNzWDE4IgtvdXRBbUFtdFgxOCILb3V0UHJBbXRYMTgiCG91dEFtQW10IghvdXRQckFtdCIFc3RhdGUiA2VwbyIHaW5BbUFtdCIGaW5BbUlkIgdpblByQW10IgZpblBySWQiBmlzRXZhbCIGZW1pdExwIgppc09uZUFzc2V0IhB2YWxpZGF0ZVNsaXBwYWdlIgZwbXRBbXQiBXBtdElkIgdhbUlkU3RyIgdwcklkU3RyIglpbkFtSWRTdHIiCWluUHJJZFN0ciIGYW10RGNtIghwcmljZURjbSIEbHBFbSIPaW5BbUFzc2V0QW10WDE4Ig9pblByQXNzZXRBbXRYMTgiDHVzZXJQcmljZVgxOCIBciILc2xpcHBhZ2VYMTgiD3NsaXBwYWdlUmVhbFgxOCINbHBFbWlzc2lvblgxOCIKcHJWaWFBbVgxOCIKYW1WaWFQclgxOCIMZXhwZWN0ZWRBbXRzIhFleHBBbXRBc3NldEFtdFgxOCITZXhwUHJpY2VBc3NldEFtdFgxOCIJY2FsY0xwQW10Ig5jYWxjQW1Bc3NldFBtdCIOY2FsY1ByQXNzZXRQbXQiDHNsaXBwYWdlQ2FsYyIJZW1pdExwQW10IgZhbURpZmYiBnByRGlmZiINJHQwMTYyMzcxNjU4MiIKd3JpdGVBbUFtdCIKd3JpdGVQckFtdCILY29tbW9uU3RhdGUiA21vYSIFb3JkZXIiB2FtdEFzSWQiBnByQXNJZCIPYWNjQW10QXNCYWxhbmNlIg5hY2NQckFzQmFsYW5jZSIKb3JBbXRBc3NldCIKb3JBbXRBc1N0ciIJb3JQckFzc2V0IglvclByQXNTdHIiCm9yZGVyUHJpY2UiDmNhc3RPcmRlclByaWNlIhFpc09yZGVyUHJpY2VWYWxpZCICY2ciAWkiA3BtdCICY3AiBmNhbGxlciIHYW1Bc1BtdCIHcHJBc1BtdCITZXN0aW1hdGVQdXRPbmVUa25WMiIJcG10QW10UmF3Igpwb29sQ29uZmlnIg0kdDAyMDkwODIwOTUzIg0kdDAyMDk1NzIxNDE4IgxhbUJhbGFuY2VOb3ciDHByQmFsYW5jZU5vdyINJHQwMjE0MjIyMTU1NiIQYW1CYWxhbmNlRm9yQ2FsYyIQcHJCYWxhbmNlRm9yQ2FsYyIKeFByZWNpc2lvbiIGcmVzdWx0IgFAIg0kdDAyMjAyNTIyMTIxIgthbUFzc2V0UGFydCILcHJBc3NldFBhcnQiBmVzdFB1dCIHZXN0aW1MUCIJbHBBc3NldElkIhNnZXRPbmVUa25WMkludGVybmFsIgpvdXRBc3NldElkIgxtaW5PdXRBbW91bnQiCHBheW1lbnRzIgxvcmlnaW5DYWxsZXIiDXRyYW5zYWN0aW9uSWQiCmFtRGVjaW1hbHMiCnByRGVjaW1hbHMiCnBvb2xTdGF0dXMiDSR0MDIzNDc2MjM1ODQiCHRvdGFsR2V0Igt0b3RhbEFtb3VudCINJHQwMjM3NzEyMzg1OCIFb3V0QW0iBW91dFByIghjdXJQclgxOCIFY3VyUHIiBGJ1cm4iAW0iAXMiAnBtIgJwZCICbW0iAnBrIgFjIhdwZW5kaW5nTWFuYWdlclB1YmxpY0tleSICY20iA2hwbSIDY3BtIgRzbGlwIglhdXRvU3Rha2UiB2ZhY3RDZmciC3N0YWtpbmdDbnRyIghzbGlwQ250ciIBZSICZWwiBmxlZ2FjeSICc2EiAnNwIghscFRybnNmciICc3MiBW91dExwIgdnd3hDbnRyIgdwb29sQ2ZnIgVhZGRvbiIQcGF5bWVudEFtb3VudFJhdyINJHQwMjkwNTQyOTEwNiINJHQwMjkyNjYyOTg4MiIMdmlydFN3YXBJbkFtIg12aXJ0U3dhcE91dFByIgx2aXJ0U3dhcEluUHIiDXZpcnRTd2FwT3V0QW0iBkQwdnNEMSIJbHBDYWxjUmVzIhBzZW5kRmVlVG9NYXRjaGVyIg1wYXltZW50QW1vdW50Ig5wYXltZW50QXNzZXRJZCIPbHBBc3NldEVtaXNzaW9uIg0kdDAzNDcwOTM1MDE4IhBwcmljZUFzc2V0QW1vdW50IhFhbW91bnRBc3NldEFtb3VudCIJbHBBbXRCb3RoIg9scEFzc2V0UHJpY2VPbmUiEGxwQXNzZXRQcmljZUJvdGgiBWJvbnVzIgdtYXhTbHBnIglvdXRBbXRBbXQiAWIiCmV4Y2hSZXN1bHQiB25vdFVzZWQiCW91dEFtb3VudCIKZXN0aW1BbUFtdCIKZXN0aW1QckFtdCINJHQwMzgyOTkzODc1OSILdG90YWxHZXRSYXciCGZpbmFsUmVzIg0kdDAzOTUwNjM5NjEwIhFvdXRBc3NldElkT3JXYXZlcyINJHQwNDA2MzU0MDc5MCINbHBBc3NldEFtb3VudCINJHQwNDEzMDA0MTU3MSIUYW1vdW50QmFsYW5jZUZvclN3YXAiE3ByaWNlQmFsYW5jZUZvclN3YXAiDGFtb3VudFRvU3dhcCIKeVByZWNpc2lvbiINJHQwNDIxNDM0MjE5MiINJHQwNDI1MzY0MjY1MSISbm9MZXNzVGhlbkFtdEFzc2V0IhRub0xlc3NUaGVuUHJpY2VBc3NldCIUYnVybkxQQXNzZXRPbkZhY3RvcnkiDWNoZWNrUGF5bWVudHMiCmZhY3RvcnlDZmciB3N0YWtpbmciCnVuc3Rha2VJbnYiAXYiBWJ1cm5BIg11bnN0YWtlQW1vdW50Ig0kdDA0NTA3MTQ1MjU5IghhbXRBc1N0ciIHcHJBc1N0ciIBayICcHIiDHJlc1NjYWxlTXVsdCIHdXNyQWRkciIHcG10QXNJZCICdHgiBnZlcmlmeSIPdGFyZ2V0UHVibGljS2V5IgptYXRjaGVyUHViIgpvcmRlclZhbGlkIgtzZW5kZXJWYWxpZCIMbWF0Y2hlclZhbGlkIgduZXdIYXNoIgthbGxvd2VkSGFzaCILY3VycmVudEhhc2hXAAFhAIDC1y8AAWIJALYCAQCAwtcvAAFjCQC2AgEAgICQu7rWrfANAAFkCQC2AgEAAAABZQkAtgIBAAEAAWYJALYCAQkAZQIFAWEJAGkCCQBoAgUBYQABBQFhAAFnAgMxMDAAAWgCATEAAWkCAl9fAAFqAgAAAWsAAQABbAACAAFtAAMAAW4ABAABbwABAAFwAAIAAXEAAwABcgAEAAFzAAUAAXQABgABdQAHAAF2AAgAAXcACQABeAABAAF5AAcAAXoACgABQQkAawMABQUBYQCQTgEBQgIBQwFECQC8AgMJALYCAQUBQwUBYwkAtgIBBQFEAQFFAgFGAUcJAKADAQkAvAIDBQFGCQC2AgEFAUcFAWMBAUgDAUkBSgFLCQBrAwUBSQUBSgUBSwEBTAEBRgMJAL8CAgUBZAUBRgkAvgIBBQFGBQFGAQFNAAITJXNfX2ZhY3RvcnlDb250cmFjdAEBTgACFCVzX19tYW5hZ2VyUHVibGljS2V5AQFPAAIbJXNfX3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5AQFQAAIRJXMlc19fcHJpY2VfX2xhc3QBAVECAVIBUwkAuQkCCQDMCAICGCVzJXMlZCVkX19wcmljZV9faGlzdG9yeQkAzAgCCQCkAwEFAVIJAMwIAgkApAMBBQFTBQNuaWwFAWkBAVQCAVUBVgkArAICCQCsAgIJAKwCAgILJXMlcyVzX19QX18FAVUCAl9fBQFWAQFXAgFVAVYJAKwCAgkArAICCQCsAgICCyVzJXMlc19fR19fBQFVAgJfXwUBVgEBWAACDyVzX19hbW91bnRBc3NldAEBWQACDiVzX19wcmljZUFzc2V0AQFaAAIHJXNfX2FtcAECYWEAAg0lc19fYWRkb25BZGRyAAJhYgIHJXNfX2ZlZQACYWMJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUCYWIFAUEBAmFkAAIRJXNfX2ZhY3RvcnlDb25maWcBAmFlAAIYJXMlc19fbWF0Y2hlcl9fcHVibGljS2V5AQJhZgICYWcCYWgJAKwCAgkArAICCQCsAgIJAKwCAgIIJWQlZCVzX18FAmFnAgJfXwUCYWgCCF9fY29uZmlnAQJhaQECYWoJAKwCAgIoJXMlcyVzX19tYXBwaW5nc19fYmFzZUFzc2V0MmludGVybmFsSWRfXwUCYWoBAmFrAAIMJXNfX3NodXRkb3duAQJhbAACHSVzX19hbGxvd2VkTHBTdGFibGVTY3JpcHRIYXNoAQJhbQACFyVzX19mZWVDb2xsZWN0b3JBZGRyZXNzAQJhbgMCYW8CYXACYXEJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIRRmFpbGVkOiBvcmRWYWxpZD0JAKUDAQUCYW8CCyBzbmRyVmFsaWQ9CQClAwEFAmFwAgwgbXRjaHJWYWxpZD0JAKUDAQUCYXEBAmFyAQFGBAJhcwUBRgMJAAECBQJhcwIGU3RyaW5nBAJhdAUCYXMFAmF0CQACAQITZmFpbCBjYXN0IHRvIFN0cmluZwECYXUCAmF2AmF3CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUCYXYFAmF3CQC5CQIJAMwIAgIKbWFuZGF0b3J5IAkAzAgCCQClCAEFAmF2CQDMCAICAS4JAMwIAgUCYXcJAMwIAgIMIG5vdCBkZWZpbmVkBQNuaWwCAAECYXgCAmF2AmF3CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUCYXYFAmF3CQC5CQIJAMwIAgIKbWFuZGF0b3J5IAkAzAgCCQClCAEFAmF2CQDMCAICAS4JAMwIAgUCYXcJAMwIAgIMIG5vdCBkZWZpbmVkBQNuaWwCAAACYXkJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQJhdQIFBHRoaXMJAQFNAAACYXoJAQJhdQIFBHRoaXMJAQFaAAECYUEACQELdmFsdWVPckVsc2UCCQCbCAIFAmF5CQECYWsABwECYUIACQDZBAEJAQJhdQIFAmF5CQECYWUAAAJhQwkBEUBleHRyTmF0aXZlKDEwNjIpAQkBAmF1AgUCYXkJAQJhbQABAmFEAAQCYUUJAQJhdQIFBHRoaXMJAQFYAAQCYUYJAQJhdQIFBHRoaXMJAQFZAAQCYUcJAQJheAIFAmF5CQECYWkBBQJhRgQCYWcJAQJheAIFAmF5CQECYWkBBQJhRQkAtQkCCQECYXUCBQJheQkBAmFmAgkApAMBBQJhZwkApAMBBQJhRwUBaQECYUgACQC1CQIJAQJhdQIFAmF5CQECYWQABQFpAAJhSQkBAmFIAAACYUoJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmFJBQF4AiBJbnZhbGlkIHN0YWtpbmcgY29udHJhY3QgYWRkcmVzcwACYUsJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmFJBQF5AiBJbnZhbGlkIHNsaXBhZ2UgY29udHJhY3QgYWRkcmVzcwACYUwJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmFJBQF6AhxJbnZhbGlkIGd3eCBjb250cmFjdCBhZGRyZXNzAQJhTQoCYU4CYU8CYVACYVECYVICYVMCYVQCYVUCYVYCYVcJALkJAgkAzAgCAhQlZCVkJWQlZCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFAmFOCQDMCAIJAKQDAQUCYU8JAMwIAgkApAMBBQJhUAkAzAgCCQCkAwEFAmFRCQDMCAIJAKQDAQUCYVIJAMwIAgkApAMBBQJhUwkAzAgCCQCkAwEFAmFUCQDMCAIJAKQDAQUCYVUJAMwIAgkApAMBBQJhVgkAzAgCCQCkAwEFAmFXBQNuaWwFAWkBAmFYBgJhWQJhWgJiYQJhUQJhVAJhVQkAuQkCCQDMCAICDCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFAmFZCQDMCAIJAKQDAQUCYVoJAMwIAgkApAMBBQJiYQkAzAgCCQCkAwEFAmFRCQDMCAIJAKQDAQUCYVQJAMwIAgkApAMBBQJhVQUDbmlsBQFpAQJiYgECYmMDCQAAAgUCYmMCBVdBVkVTCAkA7wcBBQR0aGlzCWF2YWlsYWJsZQkA8AcCBQR0aGlzCQDZBAEFAmJjAQJiZAICYmUCYmYJALwCAwUCYmUFAWMFAmJmAQJiZwMCYmgCYmkCYmoEAmJrCQC8AgMJALgCAgUCYmgFAmJpBQFiBQJiaQQCYmwJAL8CAgkAuAICBQJiagkBAUwBBQJiawUBZAMJAQEhAQUCYmwJAAIBCQCsAgICCkJpZyBzbHBnOiAJAKYDAQUCYmsJAJQKAgUCYmwJAJkDAQkAzAgCBQJiaAkAzAgCBQJiaQUDbmlsAQJibQMCYm4CYm8CYnAEAmJrCQC8AgMFAmJvBQFiBQJibgQCYnEJAL8CAgUCYnAFAmJrAwMFAmJxBgkAvwICBQJibwUCYm4JAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCmAwEFAmJvAgEgCQCmAwEFAmJuAgEgCQCmAwEFAmJrAgEgCQCmAwEFAmJwBQJicQECYnIEAmJzAmJ0AmJ1AmJ2BAJidwkBAUICBQJidQUCYnMEAmJ4CQEBQgIFAmJ2BQJidAkBAmJkAgUCYngFAmJ3AQJieQMCYnUCYnYCYnoEAmJBCQECYUQABAJiQgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJBBQF0BAJiQwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJBBQF1BAJiRAkBAmJyBAUCYkIFAmJDBQJidQUCYnYEAmJmCQEBQgIFAmJ1BQJiQgQCYmUJAQFCAgUCYnYFAmJDBAJiRQkBAUICBQJiegUBYQQCYkYJAQJiZAIFAmJmBQJiRQQCYkcJAQJiZAIFAmJlBQJiRQkAzAgCBQJiRAkAzAgCBQJiRgkAzAgCBQJiRwUDbmlsAQJiSAMCYnUCYnYCYnoEAmJJCQECYnkDBQJidQUCYnYFAmJ6CQDMCAIJAQFFAgkAkQMCBQJiSQAABQFhCQDMCAIJAQFFAgkAkQMCBQJiSQABBQFhCQDMCAIJAQFFAgkAkQMCBQJiSQACBQFhBQNuaWwBAmJKAQJiSwQCYkwJAGsDBQJiSwUCYWMFAWEJAJQKAgkAZQIFAmJLBQJiTAUCYkwBAmJNBAJiTgJiTwJiUAJiUQQCYkEJAQJhRAAEAmJSCQCRAwIFAmJBBQFxBAJiUwkAkQMCBQJiQQUBcgQCYlQJAJEDAgUCYkEFAXMEAmJVCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYkEFAXQEAmJWCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYkEFAXUEAmJXCQCRAwIFAmJBBQFwBAJiWAgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBCQDZBAEFAmJSAgtXcm9uZyBMUCBpZAhxdWFudGl0eQMJAQIhPQIFAmJSBQJiTwkAAgECD1dyb25nIHBtdCBhc3NldAQCYlkJAQJiYgEFAmJTBAJiWgkBAUICBQJiWQUCYlUEAmNhCQECYmIBBQJiVAQCY2IJAQFCAgUCY2EFAmJWBAJjYwkBAmJkAgUCY2IFAmJaBAJjZAkBAUUCBQJjYwUBYQQCY2UJAQFCAgUCYlAFAWEEAmNmCQEBQgIFAmJYBQFhBAJjZwkAvAIDBQJiWgUCY2UFAmNmBAJjaAkAvAIDBQJjYgUCY2UFAmNmBAJjaQkBAUUCBQJjZwUCYlUEAmNqCQEBRQIFAmNoBQJiVgQCY2sDCQAAAgUCYk4CAAUDbmlsCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmJRBQJjaQMJAAACBQJiUwIFV0FWRVMFBHVuaXQJANkEAQUCYlMJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYlEFAmNqAwkAAAIFAmJUAgVXQVZFUwUEdW5pdAkA2QQBBQJiVAkAzAgCCQELU3RyaW5nRW50cnkCCQEBVwIJAKUIAQUCYlEFAmJOCQECYVgGBQJjaQUCY2oFAmJQBQJjZAUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVAABQJjZAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVECBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJjZAUDbmlsCQCcCgoFAmNpBQJjagUCYlMFAmJUBQJiWQUCY2EFAmJYBQJjYwUCYlcFAmNrAQJjbA0CYk4CYmoCY20CY24CY28CY3ACYlECY3ECY3ICY3MCY3QCY3UCY3YEAmJBCQECYUQABAJiUgkA2QQBCQCRAwIFAmJBBQFxBAJjdwkAkQMCBQJiQQUBcgQCY3gJAJEDAgUCYkEFAXMEAmN5CQCRAwIFAmJBBQF2BAJjegkAkQMCBQJiQQUBdwQCY0EJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiQQUBdAQCY0IJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiQQUBdQQCYlcJAJEDAgUCYkEFAXAEAmNDCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFAmJSAghXciBscCBhcwhxdWFudGl0eQQCYlkDBQJjcQkBAmJiAQUCY3cDAwUCY3MJAAACBQJjdgUCY3cHCQBlAgkBAmJiAQUCY3cFAmN1AwUCY3MJAQJiYgEFAmN3CQBlAgkBAmJiAQUCY3cFAmNtBAJjYQMFAmNxCQECYmIBBQJjeAMDBQJjcwkAAAIFAmN2BQJjeAcJAGUCCQECYmIBBQJjeAUCY3UDBQJjcwkBAmJiAQUCY3gJAGUCCQECYmIBBQJjeAUCY28EAmNECQEBQgIFAmNtBQJjQQQCY0UJAQFCAgUCY28FAmNCBAJjRgkBAmJkAgUCY0UFAmNEBAJiWgkBAUICBQJiWQUCY0EEAmNiCQEBQgIFAmNhBQJjQgQCY0cDCQAAAgUCY0MAAAQCY2MFAWQEAmNIBQFkBAJiRQkAdgYJALkCAgUCY0QFAmNFAAAJALYCAQAFAAEAAAUERE9XTgkAlwoFCQEBRQIFAmJFBQFhCQEBRQIFAmNEBQJjQQkBAUUCBQJjRQUCY0IJAQJiZAIJALcCAgUCY2IFAmNFCQC3AgIFAmJaBQJjRAUCY0gEAmNjCQECYmQCBQJjYgUCYloEAmNJCQC8AgMJAQFMAQkAuAICBQJjYwUCY0YFAWMFAmNjBAJjSAkBAUICBQJiagUBYQMDAwUCY3QJAQIhPQIFAmNjBQFkBwkAvwICBQJjSQUCY0gHCQACAQkArAICCQCsAgIJAKwCAgIPUHJpY2Ugc2xpcHBhZ2UgCQCmAwEFAmNJAgMgPiAJAKYDAQUCY0gEAmNKCQEBQgIFAmNDBQFhBAJjSwkAvAIDBQJjRAUCY2MFAWMEAmNMCQC8AgMFAmNFBQFjBQJjYwQCY00DCQC/AgIFAmNLBQJjRQkAlAoCBQJjTAUCY0UJAJQKAgUCY0QFAmNLBAJjTggFAmNNAl8xBAJjTwgFAmNNAl8yBAJiRQkAvAIDBQJjSgUCY08FAmNiCQCXCgUJAQFFAgUCYkUFAWEJAQFFAgUCY04FAmNBCQEBRQIFAmNPBQJjQgUCY2MFAmNIBAJjUAgFAmNHAl8xBAJjUQgFAmNHAl8yBAJjUggFAmNHAl8zBAJjZAkBAUUCCAUCY0cCXzQFAWEEAmNTCQEBRQIIBQJjRwJfNQUBYQMJAGcCAAAFAmNQCQACAQIHTFAgPD0gMAQCY1QDCQEBIQEFAmNyAAAFAmNQBAJjVQkAZQIFAmNtBQJjUQQCY1YJAGUCBQJjbwUCY1IEAmNXAwMFAmNzCQAAAgUCY3YFAmN3BwkAlAoCBQJjdQAAAwMFAmNzCQAAAgUCY3YFAmN4BwkAlAoCAAAFAmN1CQCUCgIFAmNRBQJjUgQCY1gIBQJjVwJfMQQCY1kIBQJjVwJfMgQCY1oJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFQAAUCY2QJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFRAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCY2QJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVQCBQJiUQUCYk4JAQJhTQoFAmNYBQJjWQUCY1QFAmNkBQJiagUCY1MFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmNVBQJjVgUDbmlsCQCfCg0FAmNQBQJjVAUCY2QFAmJZBQJjYQUCY0MFAmJSBQJiVwUCY1oFAmNVBQJjVgUCY24FAmNwAQJkYQECZGIEAmJBCQECYUQABAJkYwkAkQMCBQJiQQUBcgQCZGQJAJEDAgUCYkEFAXMEAmJXCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYkEFAXAEAmJCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYkEFAXQEAmJDCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYkEFAXUEAmRlCQECYmIBBQJkYwQCZGYJAQJiYgEFAmRkBAJjYwMJAAACCAUCZGIJb3JkZXJUeXBlBQNCdXkJAQJicgQFAmJCBQJiQwkAZAIFAmRlCAUCZGIGYW1vdW50BQJkZgkBAmJyBAUCYkIFAmJDCQBlAgUCZGUIBQJkYgZhbW91bnQFAmRmBAJjZAkBAUUCBQJjYwUBYQMDAwkBAmFBAAYJAAACBQJiVwUBbQYJAAACBQJiVwUBbgkAAgECDUFkbWluIGJsb2NrZWQEAmRnCAgFAmRiCWFzc2V0UGFpcgthbW91bnRBc3NldAQCZGgDCQAAAgUCZGcFBHVuaXQCBVdBVkVTCQDYBAEJAQV2YWx1ZQEFAmRnBAJkaQgIBQJkYglhc3NldFBhaXIKcHJpY2VBc3NldAQCZGoDCQAAAgUCZGkFBHVuaXQCBVdBVkVTCQDYBAEJAQV2YWx1ZQEFAmRpAwMJAQIhPQIFAmRoBQJkYwYJAQIhPQIFAmRqBQJkZAkAAgECCVdyIGFzc2V0cwQCZGsIBQJkYgVwcmljZQQCY0IJAGsDBQFhBQJiQwUCYkIEAmRsCQEBSAMFAmRrBQFhBQJjQgQCZG0DCQAAAggFAmRiCW9yZGVyVHlwZQUDQnV5CQBnAgUCY2QFAmRsCQBnAgUCZGwFAmNkBgECZG4BAmRvAwkBAiE9AgkAkAMBCAUCZG8IcGF5bWVudHMAAQkAAgECCjEgcG1udCBleHAEAmRwCQEFdmFsdWUBCQCRAwIIBQJkbwhwYXltZW50cwAABAJiTwkBBXZhbHVlAQgFAmRwB2Fzc2V0SWQEAmN1CAUCZHAGYW1vdW50BAJjRwkBAmJNBAkA2AQBCAUCZG8NdHJhbnNhY3Rpb25JZAkA2AQBBQJiTwUCY3UIBQJkbwZjYWxsZXIEAmNpCAUCY0cCXzEEAmNqCAUCY0cCXzIEAmJXCQENcGFyc2VJbnRWYWx1ZQEIBQJjRwJfOQQCY2sIBQJjRwNfMTADAwkBAmFBAAYJAAACBQJiVwUBbgkAAgEJAKwCAgIPQWRtaW4gYmxvY2tlZDogCQCkAwEFAmJXCQCXCgUFAmNpBQJjagUCY3UFAmJPBQJjawECZHEKAmRyAVYCZHMCZHQCYmoCY3ICY3MCY3QCY3UCY3YEAmNHCQECY2wNBQFWBQJiaggJAQV2YWx1ZQEFAmRzBmFtb3VudAgJAQV2YWx1ZQEFAmRzB2Fzc2V0SWQICQEFdmFsdWUBBQJkdAZhbW91bnQICQEFdmFsdWUBBQJkdAdhc3NldElkBQJkcgcFAmNyBQJjcwUCY3QFAmN1BQJjdgQCYlcJAQ1wYXJzZUludFZhbHVlAQgFAmNHAl84AwMDCQECYUEABgkAAAIFAmJXBQFsBgkAAAIFAmJXBQFuCQACAQkArAICAghCbG9ja2VkOgkApAMBBQJiVwUCY0cBAmR1BAJkdgJiTwJiUQFWBAJkdwkBAmFEAAQCYlMJAJEDAgUCZHcFAXIEAmJUCQCRAwIFAmR3BQFzBAJiWQkBAmJiAQUCYlMEAmNhCQECYmIBBQJiVAQCZHgJAQJiSgEFAmR2BAJjdQgFAmR4Al8xBAJiTAgFAmR4Al8yBAJkeQMJAAACBQFWAgAJAJQKAgUCYlkFAmNhAwkAAAIFAmJPBQJiUwMJAGYCBQJkdgUCYlkJAAIBAhZpbnZhbGlkIHBheW1lbnQgYW1vdW50CQCUCgIJAGUCBQJiWQUCZHYFAmNhAwkAAAIFAmJPBQJiVAMJAGYCBQJkdgUCY2EJAAIBAhZpbnZhbGlkIHBheW1lbnQgYW1vdW50CQCUCgIFAmJZCQBlAgUCY2EFAmR2CQACAQIQd3JvbmcgcG10QXNzZXRJZAQCZHoIBQJkeQJfMQQCZEEIBQJkeQJfMgQCZEIDCQAAAgUCYk8FAmJTCQCUCgIFAmR6BQJkQQkAlAoCBQJkQQUCZHoEAmRDCAUCZEICXzEEAmRECAUCZEICXzIEAmRFAAEEAmRGCgACZEcJAPwHBAUCYUwCDGNhbGNQdXRYT25seQkAzAgCCQCkAwEFAmN1CQDMCAIJAKQDAQUCZEMJAMwIAgkApAMBBQJkRAkAzAgCAgAJAMwIAgUCYXoJAMwIAgUBZwkAzAgCCQCkAwEFAmRFCQDMCAIFAWgFA25pbAUDbmlsAwkAAQIFAmRHAgooSW50LCBJbnQpBQJkRwkAAgEJAKwCAgkAAwEJAPwHBAUCYUwCDGNhbGNQdXRYT25seQkAzAgCCQCkAwEFAmN1CQDMCAIJAKQDAQUCZEMJAMwIAgkApAMBBQJkRAkAzAgCAgAJAMwIAgUCYXoJAMwIAgUBZwkAzAgCCQCkAwEFAmRFCQDMCAIFAWgFA25pbAUDbmlsAh8gY291bGRuJ3QgYmUgY2FzdCB0byAoSW50LCBJbnQpBAJkSAMJAAACBQJiTwUCYlMFAmRGCQCUCgIIBQJkRgJfMggFAmRGAl8xBAJkSQgFAmRIAl8xBAJkSggFAmRIAl8yBAJkSwkBAmRxCgUCYlEFAVYJAQ9BdHRhY2hlZFBheW1lbnQCCQDZBAEFAmJTBQJkSQkBD0F0dGFjaGVkUGF5bWVudAIJANkEAQUCYlQFAmRKAAAGBgcFAmR2BQJiTwQCZEwIBQJkSwJfMgQCZE0IBQJkSwJfNwQCY2sIBQJkSwJfOQQCY1UIBQJkSwNfMTAEAmNWCAUCZEsDXzExBQJkSwECZE4GAmRPAmRQAmRRAmRyAmRSAmRTAwkBAiE9AgkAkAMBBQJkUQABCQACAQILMSBwbW50IGV4cGQEAmR3CQECYUQABAJiUgkAkQMCBQJkdwUBcQQCYlMJAJEDAgUCZHcFAXIEAmJUCQCRAwIFAmR3BQFzBAJkVAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmR3BQF0BAJkVQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmR3BQF1BAJkVgkAkQMCBQJkdwUBcAQCYlEDCQAAAgUCZHIFBHRoaXMFAmRSBQJkcgQCZHAJAQV2YWx1ZQEJAJEDAgUCZFEAAAQCYk8JAQV2YWx1ZQEIBQJkcAdhc3NldElkBAJjdQgFAmRwBmFtb3VudAMJAGYCAICU69wDBQJjdQkAAgECDU1pbiBwbXQgMTAgTFAEAmJOCQDYBAEFAmRTAwkBAiE9AgUCYlIJANgEAQUCYk8JAAIBAghXcm9uZyBMUAQCYlkJAQJiYgEFAmJTBAJjYQkBAmJiAQUCYlQEAmRXCgACZEcJAPwHBAUEdGhpcwITZ2V0T25lVGtuVjJSRUFET05MWQkAzAgCBQJkTwkAzAgCBQJjdQUDbmlsBQNuaWwDCQABAgUCZEcCCihJbnQsIEludCkFAmRHCQACAQkArAICCQADAQkA/AcEBQR0aGlzAhNnZXRPbmVUa25WMlJFQURPTkxZCQDMCAIFAmRPCQDMCAIFAmN1BQNuaWwFA25pbAIfIGNvdWxkbid0IGJlIGNhc3QgdG8gKEludCwgSW50KQQCZFgIBQJkVwJfMQQCYkwIBQJkVwJfMgQCZFkDAwkAZgIFAmRQAAAJAGYCBQJkUAUCZFgHCQACAQkAuQkCCQDMCAICH2Ftb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJkUAUDbmlsAgAFAmRYBAJkWgMJAAACBQJkTwUCYlMJAJQKAgUCZFkAAAkAlAoCAAAFAmRZBAJlYQgFAmRaAl8xBAJlYggFAmRaAl8yBAJlYwkBAmJkAgkBAUICBQJjYQUCZFUJAQFCAgUCYlkFAmRUBAJlZAkBAUUCBQJlYwUBYQQCY2sJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYlEFAmRZAwkAAAIFAmRPAgVXQVZFUwUEdW5pdAkA2QQBBQJkTwkAzAgCCQELU3RyaW5nRW50cnkCCQEBVwIJAKUIAQUCYlEFAmJOCQECYVgGBQJlYQUCZWIFAmN1BQJlZAUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVAABQJlZAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVECBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJlZAUDbmlsAwkAAAIFAmNrBQJjawQCZWUJAPwHBAUCYXkCBGJ1cm4JAMwIAgUCY3UFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCYk8FAmN1BQNuaWwDCQAAAgUCZWUFAmVlCQCUCgIFAmNrBQJkWQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECZWYABAJhcwkAoggBCQEBTgADCQABAgUCYXMCBlN0cmluZwQCZWcFAmFzCQDZBAEFAmVnAwkAAQIFAmFzAgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IBAmVoAAQCYXMJAKIIAQkBAU8AAwkAAQIFAmFzAgZTdHJpbmcEAmVnBQJhcwkA2QQBBQJlZwMJAAECBQJhcwIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAAJlaQkAAgECEVBlcm1pc3Npb24gZGVuaWVkAQJlagECZG8EAmFzCQECZWYAAwkAAQIFAmFzAgpCeXRlVmVjdG9yBAJlawUCYXMDCQAAAggFAmRvD2NhbGxlclB1YmxpY0tleQUCZWsGBQJlaQMJAAECBQJhcwIEVW5pdAMJAAACCAUCZG8GY2FsbGVyBQR0aGlzBgUCZWkJAAIBAgtNYXRjaCBlcnJvch0CZG8BC2NvbnN0cnVjdG9yAQFNBAJlbAkBAmVqAQUCZG8DCQAAAgUCZWwFAmVsCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFNAAUBTQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRvAQpzZXRNYW5hZ2VyAQJlbQQCZWwJAQJlagEFAmRvAwkAAAIFAmVsBQJlbAQCZW4JANkEAQUCZW0DCQAAAgUCZW4FAmVuCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFPAAUCZW0FA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkbwEOY29uZmlybU1hbmFnZXIABAJiSQkBAmVoAAQCZW8DCQEJaXNEZWZpbmVkAQUCYkkGCQACAQISTm8gcGVuZGluZyBtYW5hZ2VyAwkAAAIFAmVvBQJlbwQCZXADCQAAAggFAmRvD2NhbGxlclB1YmxpY0tleQkBBXZhbHVlAQUCYkkGCQACAQIbWW91IGFyZSBub3QgcGVuZGluZyBtYW5hZ2VyAwkAAAIFAmVwBQJlcAkAzAgCCQELU3RyaW5nRW50cnkCCQEBTgAJANgEAQkBBXZhbHVlAQUCYkkJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAU8ABQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZG8BA3B1dAICZXECZXIEAmVzCQECYUgABAJldAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCZXMFAXgCCldyIHN0IGFkZHIEAmV1CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJlcwUBeQIKV3Igc2wgYWRkcgMJAGYCAAAFAmVxCQACAQIOV3Jvbmcgc2xpcHBhZ2UDCQECIT0CCQCQAwEIBQJkbwhwYXltZW50cwACCQACAQIMMiBwbW50cyBleHBkBAJldgkBAmRxCgkApQgBCAUCZG8GY2FsbGVyCQDYBAEIBQJkbw10cmFuc2FjdGlvbklkCQEPQXR0YWNoZWRQYXltZW50AggJAQV2YWx1ZQEJAJEDAggFAmRvCHBheW1lbnRzAAAHYXNzZXRJZAgJAQV2YWx1ZQEJAJEDAggFAmRvCHBheW1lbnRzAAAGYW1vdW50CQCRAwIIBQJkbwhwYXltZW50cwABBQJlcQYHBgAAAgAEAmNUCAUCZXYCXzIEAmRNCAUCZXYCXzcEAmNrCAUCZXYCXzkEAmNVCAUCZXYDXzEwBAJjVggFAmV2A18xMQQCYlMIBQJldgNfMTIEAmJUCAUCZXYDXzEzBAJjRwkA/AcEBQJheQIEZW1pdAkAzAgCBQJjVAUDbmlsBQNuaWwDCQAAAgUCY0cFAmNHBAJldwQCYXMFAmNHAwkAAQIFAmFzAgdBZGRyZXNzBAJleAUCYXMJAPwHBAUCZXgCBGVtaXQJAMwIAgUCY1QFA25pbAUDbmlsBQR1bml0AwkAAAIFAmV3BQJldwQCZXkDCQBmAgUCY1UAAAkA/AcEBQJldQIDcHV0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmJTBQJjVQUDbmlsBQNuaWwDCQAAAgUCZXkFAmV5BAJlegMJAGYCBQJjVgAACQD8BwQFAmV1AgNwdXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCYlQFAmNWBQNuaWwFA25pbAMJAAACBQJlegUCZXoEAmVBAwUCZXIEAmVCCQD8BwQFAmV0AgVzdGFrZQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJkTQUCY1QFA25pbAMJAAACBQJlQgUCZUIFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUCZG8GY2FsbGVyBQJjVAUCZE0FA25pbAkAzggCBQJjawUCZUEJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZG8BCXB1dE9uZVRrbgUCZEkCZEoCZUMCYmoCZXIEAmJBCQECYUgABAJldAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCYkEFAXgCCldyIHN0IGFkZHIEAmV1CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJiQQUBeQIKV3Igc2wgYWRkcgQCZUQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmJBBQF6AgtXciBnd3ggYWRkcgQCZUUJAQJhRAAEAmJTCQCRAwIFAmVFBQFyBAJiVAkAkQMCBQJlRQUBcwQCYlUJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJlRQUBdAQCYlYJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJlRQUBdQQCZUYJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwkBAmFhAAIABAJiUQMJAAACBQJlRgkApQgBCAUCZG8GY2FsbGVyCAUCZG8Mb3JpZ2luQ2FsbGVyCAUCZG8GY2FsbGVyAwMDAwkAZwIAAAUCYmoGCQBnAgAABQJkSQYJAGcCAAAFAmRKBgkAZwIAAAUCZUMJAAIBAgxXcm9uZyBwYXJhbXMDCQECIT0CCQCQAwEIBQJkbwhwYXltZW50cwABCQACAQILMSBwbW50IGV4cGQEAmRwCQEFdmFsdWUBCQCRAwIIBQJkbwhwYXltZW50cwAABAJiTwkA2AQBCQEFdmFsdWUBCAUCZHAHYXNzZXRJZAQCZUcIBQJkcAZhbW91bnQEAmVICQECYkoBBQJlRwQCY3UIBQJlSAJfMQQCYkwIBQJlSAJfMgMJAGYCAICt4gQFAmVHCQACAQINV3JvbmcgcG10IGFtdAQCYlkJAQJiYgEFAmJTBAJjYQkBAmJiAQUCYlQEAmVJAwkAAAIFAmJPBQJiUwMDCQBmAgUCZUcFAmJZBgkAZgIFAmRJBQJjdQkAAgECFmludmFsaWQgcGF5bWVudCBhbW91bnQJAJgKBgkAZQIFAmJZBQJlRwUCY2EJAGUCBQJjdQUCZEkFAmRKAAAAAAMJAAACBQJiTwUCYlQDAwkAZgIFAmVHBQJjYQYJAGYCBQJkSgUCY3UJAAIBAhZpbnZhbGlkIHBheW1lbnQgYW1vdW50CQCYCgYFAmJZCQBlAgUCY2EFAmVHAAAAAAkAZQIFAmN1BQJkSgUCZEkJAAIBAhB3cm9uZyBwbXRBc3NldElkBAJkeggFAmVJAl8xBAJkQQgFAmVJAl8yBAJlSggFAmVJAl8zBAJlSwgFAmVJAl80BAJlTAgFAmVJAl81BAJlTQgFAmVJAl82BAJibwkA/AcEBQJlRAIFY2FsY0QJAMwIAgkApAMBBQJkegkAzAgCCQCkAwEFAmRBCQDMCAIFAmF6CQDMCAIFAWcJAMwIAgUBaAUDbmlsBQNuaWwEAmJuCQD8BwQFAmVEAgVjYWxjRAkAzAgCCQCmAwEJALYCAQkAZQIJAGQCBQJkegUCZUoFAmVNCQDMCAIJAKYDAQkAtgIBCQBlAgkAZAIFAmRBBQJlTAUCZUsJAMwIAgUCYXoJAMwIAgUBZwkAzAgCBQFoBQNuaWwFA25pbAQCZU4JAQJibQMJAKcDAQkBAmFyAQUCYm4JAKcDAQkBAmFyAQUCYm8FAWYDCQAAAgUCZU4FAmVOBAJkSwkBAmRxCgkApQgBCAUCZG8GY2FsbGVyCQDYBAEIBQJkbw10cmFuc2FjdGlvbklkCQEPQXR0YWNoZWRQYXltZW50AgkA2QQBBQJiUwUCZEkJAQ9BdHRhY2hlZFBheW1lbnQCCQDZBAEFAmJUBQJkSgUCYmoGBgYFAmN1BQJiTwQCZEwIBQJkSwJfMgQCZE0IBQJkSwJfNwQCY2sIBQJkSwJfOQQCY1UIBQJkSwNfMTAEAmNWCAUCZEsDXzExBAJlTwkBAmJnAwkAtgIBBQJkTAkAtgIBBQJlQwkAtgIBBQJiagQCY1QJAKADAQgFAmVPAl8yBAJldgkA/AcEBQJheQIEZW1pdAkAzAgCBQJjVAUDbmlsBQNuaWwDCQAAAgUCZXYFAmV2BAJldwQCYXMFAmV2AwkAAQIFAmFzAgdBZGRyZXNzBAJleAUCYXMJAPwHBAUCZXgCBGVtaXQJAMwIAgUCY1QFA25pbAUDbmlsBQR1bml0AwkAAAIFAmV3BQJldwQCZXkDCQBmAgUCY1UAAAkA/AcEBQJldQIDcHV0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJANkEAQUCYlMFAmNVBQNuaWwFA25pbAMJAAACBQJleQUCZXkEAmV6AwkAZgIFAmNWAAAJAPwHBAUCZXUCA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQDZBAEFAmJUBQJjVgUDbmlsBQNuaWwDCQAAAgUCZXoFAmV6BAJlQQMFAmVyBAJlQgkA/AcEBQJldAIFc3Rha2UFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZE0FAmNUBQNuaWwDCQAAAgUCZUIFAmVCBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAmRvBmNhbGxlcgUCY1QFAmRNBQNuaWwEAmVQAwkAZgIFAmJMAAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYUMFAmJMCQDZBAEFAmJPBQNuaWwFA25pbAkAzggCCQDOCAIFAmNrBQJlQQUCZVAJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZG8BC3B1dE9uZVRrblYyAgJkUAJlcgMJAQIhPQIJAJADAQgFAmRvCHBheW1lbnRzAAEJAAIBAgsxIHBtbnQgZXhwZAQCZHcJAQJhRAAEAmJTCQCRAwIFAmR3BQFyBAJiVAkAkQMCBQJkdwUBcwQCZFQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJkdwUBdAQCZFUJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJkdwUBdQQCYlEDCQAAAggFAmRvBmNhbGxlcgUEdGhpcwgFAmRvDG9yaWdpbkNhbGxlcggFAmRvBmNhbGxlcgQCZHAJAQV2YWx1ZQEJAJEDAggFAmRvCHBheW1lbnRzAAAEAmJPCQDYBAEJAQV2YWx1ZQEIBQJkcAdhc3NldElkBAJjdQgFAmRwBmFtb3VudAMJAGYCAICt4gQFAmN1CQACAQINV3JvbmcgcG10IGFtdAQCY0cJAQJkdQQFAmN1BQJiTwkApQgBBQJiUQkA2AQBCAUCZG8NdHJhbnNhY3Rpb25JZAQCZEwIBQJjRwJfMgQCZE0IBQJjRwJfNwQCY2sIBQJjRwJfOQQCY1UIBQJjRwNfMTAEAmNWCAUCY0cDXzExBAJjVAMDCQBmAgUCZFAAAAkAZgIFAmRQBQJkTAcJAAIBCQC5CQIJAMwIAgIfYW1vdW50IHRvIHJlY2VpdmUgaXMgbGVzcyB0aGFuIAkAzAgCCQCkAwEFAmRQBQNuaWwCAAUCZEwEAmV2CQD8BwQFAmF5AgRlbWl0CQDMCAIFAmNUBQNuaWwFA25pbAMJAAACBQJldgUCZXYEAmV3BAJhcwUCZXYDCQABAgUCYXMCB0FkZHJlc3MEAmV4BQJhcwkA/AcEBQJleAIEZW1pdAkAzAgCBQJjVAUDbmlsBQNuaWwFBHVuaXQDCQAAAgUCZXcFAmV3BAJleQMJAGYCBQJjVQAACQD8BwQFAmFLAgNwdXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkA2QQBBQJiUwUCY1UFA25pbAUDbmlsAwkAAAIFAmV5BQJleQQCZXoDCQBmAgUCY1YAAAkA/AcEBQJhSwIDcHV0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJANkEAQUCYlQFAmNWBQNuaWwFA25pbAMJAAACBQJlegUCZXoEAmVBAwUCZXIEAmVCCQD8BwQFAmFKAgVzdGFrZQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJkTQUCY1QFA25pbAMJAAACBQJlQgUCZUIFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUCZG8GY2FsbGVyBQJjVAUCZE0FA25pbAkAlAoCCQDOCAIFAmNrBQJlQQUCY1QJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZG8BE3B1dE9uZVRrblYyUkVBRE9OTFkCAmVRAmVSBAJjRwkBAmR1BAUCZVEFAmVSAgACAAQCZEwIBQJjRwJfMgQCZE0IBQJjRwJfNwQCY2sIBQJjRwJfOQQCY1UIBQJjRwNfMTAEAmNWCAUCY0cDXzExCQCUCgIFA25pbAUCZEwCZG8BHHB1dE9uZVRrblYyV2l0aEJvbnVzUkVBRE9OTFkCAmVRAmVSBAJkdwkBAmFEAAQCYlMJAJEDAgUCZHcFAXIEAmJUCQCRAwIFAmR3BQFzBAJiWQkBAmJiAQUCYlMEAmNhCQECYmIBBQJiVAQCY0cJAQJkdQQFAmVRBQJlUgIAAgAEAmRMCAUCY0cCXzIEAmNkCAUCY0cCXzMEAmVTCAUCY0cCXzYEAmRNCAUCY0cCXzcEAmVUAwkAAAIFAmVSBQJiUwQCZVUJAGsDBQJlUQUCY2QFAWEJAJQKAgUCZVEFAmVVBAJlVgkAawMFAmVRBQFhBQJjZAkAlAoCBQJlVgUCZVEEAmVWCAUCZVQCXzEEAmVVCAUCZVQCXzIEAmVXCQBrAwUCZVMFAmVVBQJjYQQCZVgDCQAAAgUCZVIFAmJTCQBrAwUCZVYFAWEFAmRMCQBrAwUCZVUFAWEFAmRMBAJlWQkAawMJAGQCBQJlVQUCZVYFAWEFAmVXBAJlWgkAawMJAGUCBQJlWQUCZVgFAWEFAmVYBAJiTAgJAQJiSgEFAmVRAl8yCQCUCgIFA25pbAkAlQoDBQJkTAUCYkwFAmVaAmRvAQpwdXRGb3JGcmVlAQJmYQMJAGYCAAAFAmZhCQACAQIKV3Jvbmcgc2xwZwMJAQIhPQIJAJADAQgFAmRvCHBheW1lbnRzAAIJAAIBAgwyIHBtbnRzIGV4cGQEAmRLCQECZHEKCQClCAEIBQJkbwZjYWxsZXIJANgEAQgFAmRvDXRyYW5zYWN0aW9uSWQJAQ9BdHRhY2hlZFBheW1lbnQCCAkBBXZhbHVlAQkAkQMCCAUCZG8IcGF5bWVudHMAAAdhc3NldElkCAkBBXZhbHVlAQkAkQMCCAUCZG8IcGF5bWVudHMAAAZhbW91bnQJAJEDAggFAmRvCHBheW1lbnRzAAEFAmZhBwcGAAACAAgFAmRLAl85AmRvAQNnZXQABAJjRwkBAmRuAQUCZG8EAmZiCAUCY0cCXzEEAmNqCAUCY0cCXzIEAmN1CAUCY0cCXzMEAmJPCAUCY0cCXzQEAmNrCAUCY0cCXzUEAmZjCQD8BwQFAmF5AgRidXJuCQDMCAIFAmN1BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmJPBQJjdQUDbmlsAwkAAAIFAmZjBQJmYwUCY2sJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZG8BCWdldE9uZVRrbgUCZmQCZmUCZmYCZE8CYmoDCQECIT0CCQCQAwEIBQJkbwhwYXltZW50cwABCQACAQILMSBwbW50IGV4cGQEAmJBCQECYUQABAJiUgkAkQMCBQJiQQUBcQQCYlMJAJEDAgUCYkEFAXIEAmJUCQCRAwIFAmJBBQFzBAJiVQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJBBQF0BAJiVgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJBBQF1BAJiVwkAkQMCBQJiQQUBcAQCZXMJAQJhSAAEAmVECQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJlcwUBegIKV3Igc2wgYWRkcgQCZHAJAQV2YWx1ZQEJAJEDAggFAmRvCHBheW1lbnRzAAAEAmVGCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMJAQJhYQACAAQCYlEDCQAAAgUCZUYJAKUIAQgFAmRvBmNhbGxlcggFAmRvDG9yaWdpbkNhbGxlcggFAmRvBmNhbGxlcgQCYk4JANgEAQgFAmRvDXRyYW5zYWN0aW9uSWQEAmJPCQEFdmFsdWUBCAUCZHAHYXNzZXRJZAQCY3UIBQJkcAZhbW91bnQDCQBmAgCAlOvcAwUCY3UJAAIBAg1NaW4gcG10IDEwIExQAwMDCQBmAgAABQJiagYJAGYCAAAFAmZkBgkAZgIAAAUCZmYJAAIBAgxXcm9uZyBwYXJhbXMDCQECIT0CBQJiUgkA2AQBBQJiTwkAAgECCFdyb25nIExQBAJjRwkBAmJNBAkA2AQBCAUCZG8NdHJhbnNhY3Rpb25JZAkA2AQBBQJiTwUCY3UIBQJkbwZjYWxsZXIEAmZnCAUCY0cCXzEEAmZoCAUCY0cCXzIEAmJZCQECYmIBBQJiUwQCY2EJAQJiYgEFAmJUBAJmaQMJAAACBQJkTwUCYlMJAJkKBwkAZQIFAmJZBQJmZwkAZQIFAmNhBQJmaAUCZmQFAmZoAAAAAAkAZAIFAmZnBQJmZAMJAAACBQJkTwUCYlQJAJkKBwkAZQIFAmJZBQJmZwkAZQIFAmNhBQJmaAAAAAAFAmZkBQJmZwkAZAIFAmZoBQJmZAkAAgECEHdyb25nIG91dEFzc2V0SWQEAmR6CAUCZmkCXzEEAmRBCAUCZmkCXzIEAmVKCAUCZmkCXzMEAmVLCAUCZmkCXzQEAmVMCAUCZmkCXzUEAmVNCAUCZmkCXzYEAmZqCAUCZmkCXzcDAwkAZgIAAAUCZUoGCQBmAgAABQJlTAkAAgECCldyb25nIGNhbGMEAmJvCQD8BwQFAmVEAgVjYWxjRAkAzAgCCQCkAwEFAmR6CQDMCAIJAKQDAQUCZEEJAMwIAgUCYXoJAMwIAgUBZwkAzAgCBQFoBQNuaWwFA25pbAQCYm4JAPwHBAUCZUQCBWNhbGNECQDMCAIJAKQDAQkAZAIJAGUCBQJkegUCZUoFAmVNCQDMCAIJAKQDAQkAZQIJAGQCBQJkQQUCZUsFAmVMCQDMCAIFAmF6CQDMCAIFAWcJAMwIAgUBaAUDbmlsBQNuaWwEAmVOCQECYm0DCQCnAwEJAQJhcgEFAmJuCQCnAwEJAQJhcgEFAmJvBQFmAwkAAAIFAmVOBQJlTgQCZFgICQECYkoBBQJmagJfMQQCZmsJAQJiZwMJALYCAQUCZFgJALYCAQUCZmYJALYCAQUCYmoDCQAAAgUCZmsFAmZrBAJmbAMJAAACBQJkTwUCYlMJAJQKAgkAoAMBCAUCZmsCXzIAAAkAlAoCAAAJAKADAQgFAmZrAl8yBAJlYQgFAmZsAl8xBAJlYggFAmZsAl8yBAJkWQkAZAIFAmVhBQJlYgQCYkwJAGUCBQJmagUCZFgEAmZtAwkAAAIFAmRPAgVXQVZFUwUEdW5pdAkA2QQBBQJkTwQCZVADCQBmAgUCYkwAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJhQwUCYkwFAmZtBQNuaWwFA25pbAQCZWMJAQJiZAIJAQFCAgUCY2EFAmJWCQEBQgIFAmJZBQJiVQQCZWQJAQFFAgUCZWMFAWEEAmNrCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmJRBQJkWQUCZm0JAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVcCCQClCAEFAmJRBQJiTgkBAmFYBgUCZWEFAmViBQJjdQUCZWQFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFQAAUCZWQJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFRAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCZWQFA25pbAMJAAACBQJjawUCY2sEAmVlCQD8BwQFAmF5AgRidXJuCQDMCAIFAmN1BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmJPBQJjdQUDbmlsAwkAAAIFAmVlBQJlZQkAzggCBQJjawUCZVAJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZG8BC2dldE9uZVRrblYyAgJkTwJkUAQCZm4JAQJkTgYFAmRPBQJkUAgFAmRvCHBheW1lbnRzCAUCZG8GY2FsbGVyCAUCZG8Mb3JpZ2luQ2FsbGVyCAUCZG8NdHJhbnNhY3Rpb25JZAQCY2sIBQJmbgJfMQQCZFkIBQJmbgJfMgkAlAoCBQJjawUCZFkCZG8BE2dldE9uZVRrblYyUkVBRE9OTFkCAmRPAmZvBAJkdwkBAmFEAAQCYlIJAJEDAgUCZHcFAXEEAmJTCQCRAwIFAmR3BQFyBAJiVAkAkQMCBQJkdwUBcwQCY0cJAQJiTQQCAAUCYlIFAmZvBQR0aGlzBAJmZwgFAmNHAl8xBAJmaAgFAmNHAl8yBAJiWQkBAmJiAQUCYlMEAmNhCQECYmIBBQJiVAQCZHoJAGUCBQJiWQUCZmcEAmRBCQBlAgUCY2EFAmZoBAJmcAMJAAACBQJkTwUCYlMJAJUKAwUCZEEFAmR6BQJmaAMJAAACBQJkTwUCYlQJAJUKAwUCZHoFAmRBBQJmZwkAAgECEHdyb25nIG91dEFzc2V0SWQEAmZxCAUCZnACXzEEAmZyCAUCZnACXzIEAmZzCAUCZnACXzMEAmZ0AAEEAmZkCgACZEcJAPwHBAUCYUwCDGNhbGNTd2FwWFRvWQkAzAgCCQCkAwEFAmZzCQDMCAIJAKQDAQUCZnEJAMwIAgkApAMBBQJmcgkAzAgCAgAJAMwIAgUCYXoJAMwIAgUBZwkAzAgCCQCkAwEFAmZ0CQDMCAIFAWgFA25pbAUDbmlsAwkAAQIFAmRHAgNJbnQFAmRHCQACAQkArAICCQADAQkA/AcEBQJhTAIMY2FsY1N3YXBYVG9ZCQDMCAIJAKQDAQUCZnMJAMwIAgkApAMBBQJmcQkAzAgCCQCkAwEFAmZyCQDMCAICAAkAzAgCBQJhegkAzAgCBQFnCQDMCAIJAKQDAQUCZnQJAMwIAgUBaAUDbmlsBQNuaWwCGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAQCZmoJAGQCBQJmZAMJAAACBQJkTwUCYlMFAmZnBQJmaAQCZnUJAQJiSgEFAmZqBAJkWAgFAmZ1Al8xBAJiTAgFAmZ1Al8yCQCUCgIFA25pbAkAlAoCBQJkWAUCYkwCZG8BHGdldE9uZVRrblYyV2l0aEJvbnVzUkVBRE9OTFkCAmRPAmZvBAJkdwkBAmFEAAQCYlMJAJEDAgUCZHcFAXIEAmJUCQCRAwIFAmR3BQFzBAJiUgkAkQMCBQJkdwUBcQQCYlkJAQJiYgEFAmJTBAJjYQkBAmJiAQUCYlQEAmZ2CgACZEcJAPwHBAUEdGhpcwITZ2V0T25lVGtuVjJSRUFET05MWQkAzAgCBQJkTwkAzAgCBQJmbwUDbmlsBQNuaWwDCQABAgUCZEcCCihJbnQsIEludCkFAmRHCQACAQkArAICCQADAQkA/AcEBQR0aGlzAhNnZXRPbmVUa25WMlJFQURPTkxZCQDMCAIFAmRPCQDMCAIFAmZvBQNuaWwFA25pbAIfIGNvdWxkbid0IGJlIGNhc3QgdG8gKEludCwgSW50KQQCZFgIBQJmdgJfMQQCYkwIBQJmdgJfMgQCY0cJAQJiTQQCAAUCYlIFAmZvBQR0aGlzBAJjaQgFAmNHAl8xBAJjaggFAmNHAl8yBAJlWAkAawMFAmRYBQFhBQJmbwQCZVkJAGsDCQBkAgUCY2kFAmNqBQFhBQJmbwQCZVoJAGsDCQBlAgUCZVgFAmVZBQFhBQJlWQkAlAoCBQNuaWwJAJUKAwUCZFgFAmJMBQJlWgJkbwEJZ2V0Tm9MZXNzAgJmdwJmeAQCY0cJAQJkbgEFAmRvBAJjaQgFAmNHAl8xBAJjaggFAmNHAl8yBAJjdQgFAmNHAl8zBAJiTwgFAmNHAl80BAJjawgFAmNHAl81AwkAZgIFAmZ3BQJjaQkAAgEJAKwCAgkArAICCQCsAgICCUZhaWxlZDogIAkApAMBBQJjaQIDIDwgCQCkAwEFAmZ3AwkAZgIFAmZ4BQJjagkAAgEJAKwCAgkArAICCQCsAgICCEZhaWxlZDogCQCkAwEFAmNqAgMgPCAJAKQDAQUCZngEAmZ5CQD8BwQFAmF5AgRidXJuCQDMCAIFAmN1BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmJPBQJjdQUDbmlsAwkAAAIFAmZ5BQJmeQUCY2sJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZG8BDXVuc3Rha2VBbmRHZXQBAmJLBAJmegMJAQIhPQIJAJADAQgFAmRvCHBheW1lbnRzAAAJAAIBAg1ObyBwbW50cyBleHBkBgMJAAACBQJmegUCZnoEAmJBCQECYUQABAJmQQkBAmFIAAQCZE0JANkEAQkAkQMCBQJiQQUBcQQCZkIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmZBBQF4AgpXciBzdCBhZGRyBAJmQwkA/AcEBQJmQgIHdW5zdGFrZQkAzAgCCQDYBAEFAmRNCQDMCAIFAmJLBQNuaWwFA25pbAMJAAACBQJmQwUCZkMEAmNHCQECYk0ECQDYBAEIBQJkbw10cmFuc2FjdGlvbklkCQDYBAEFAmRNBQJiSwgFAmRvBmNhbGxlcgQCYlcJAQ1wYXJzZUludFZhbHVlAQgFAmNHAl85BAJjawgFAmNHA18xMAQCZkQDAwkBAmFBAAYJAAACBQJiVwUBbgkAAgEJAKwCAgIJQmxvY2tlZDogCQCkAwEFAmJXBgMJAAACBQJmRAUCZkQEAmZFCQD8BwQFAmF5AgRidXJuCQDMCAIFAmJLBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmRNBQJiSwUDbmlsAwkAAAIFAmZFBQJmRQUCY2sJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZG8BE3Vuc3Rha2VBbmRHZXRPbmVUa24DAmZGAmRPAmRQBAJmegMJAQIhPQIJAJADAQgFAmRvCHBheW1lbnRzAAAJAAIBAg1ObyBwbW50cyBleHBkBgMJAAACBQJmegUCZnoEAmJBCQECYUQABAJmQQkBAmFIAAQCZE0JANkEAQkAkQMCBQJiQQUBcQQCZkIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmZBBQF4AgpXciBzdCBhZGRyBAJmQwkA/AcEBQJmQgIHdW5zdGFrZQkAzAgCCQDYBAEFAmRNCQDMCAIFAmZGBQNuaWwFA25pbAMJAAACBQJmQwUCZkMEAmZHCQECZE4GBQJkTwUCZFAJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmRNBQJmRgUDbmlsCAUCZG8GY2FsbGVyCAUCZG8Mb3JpZ2luQ2FsbGVyCAUCZG8NdHJhbnNhY3Rpb25JZAQCY2sIBQJmRwJfMQQCZFkIBQJmRwJfMgkAlAoCBQJjawUCZFkJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZG8BCGFjdGl2YXRlAgJmSAJmSQMJAQIhPQIJAKUIAQgFAmRvBmNhbGxlcgkApQgBBQJheQkAAgECBmRlbmllZAkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFYAAUCZkgJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVkABQJmSQUDbmlsAgdzdWNjZXNzAmRvAQRzZXRTAgJmSgJmRAMJAQIhPQIJAKUIAQgFAmRvBmNhbGxlcgkBAmF1AgUEdGhpcwkBAmFhAAUCZWkJAMwIAgkBC1N0cmluZ0VudHJ5AgUCZkoFAmZEBQNuaWwCZG8BBHNldEkCAmZKAmZEAwkBAiE9AgkApQgBCAUCZG8GY2FsbGVyCQECYXUCBQR0aGlzCQECYWEABQJlaQkAzAgCCQEMSW50ZWdlckVudHJ5AgUCZkoFAmZEBQNuaWwCZG8BHGdldFBvb2xDb25maWdXcmFwcGVyUkVBRE9OTFkACQCUCgIFA25pbAkBAmFEAAJkbwEcZ2V0QWNjQmFsYW5jZVdyYXBwZXJSRUFET05MWQECYmMJAJQKAgUDbmlsCQECYmIBBQJiYwJkbwEZY2FsY1ByaWNlc1dyYXBwZXJSRUFET05MWQMCYnUCYnYCYnoEAmZLCQECYnkDBQJidQUCYnYFAmJ6CQCUCgIFA25pbAkAzAgCCQCmAwEJAJEDAgUCZksAAAkAzAgCCQCmAwEJAJEDAgUCZksAAQkAzAgCCQCmAwEJAJEDAgUCZksAAgUDbmlsAmRvARZmcm9tWDE4V3JhcHBlclJFQURPTkxZAgFGAmZMCQCUCgIFA25pbAkBAUUCCQCnAwEFAUYFAmZMAmRvARR0b1gxOFdyYXBwZXJSRUFET05MWQIBQwFECQCUCgIFA25pbAkApgMBCQEBQgIFAUMFAUQCZG8BHmNhbGNQcmljZUJpZ0ludFdyYXBwZXJSRUFET05MWQICYmUCYmYJAJQKAgUDbmlsCQCmAwEJAQJiZAIJAKcDAQUCYmUJAKcDAQUCYmYCZG8BI2VzdGltYXRlUHV0T3BlcmF0aW9uV3JhcHBlclJFQURPTkxZCQJiTgJiagJjbQJjbgJjbwJjcAJmTQJjcQJjcgkAlAoCBQNuaWwJAQJjbA0FAmJOBQJiagUCY20FAmNuBQJjbwUCY3AFAmZNBQJjcQUCY3IGBwAAAgACZG8BI2VzdGltYXRlR2V0T3BlcmF0aW9uV3JhcHBlclJFQURPTkxZBAJiTgJmTgJiUAJmTQQCY0cJAQJiTQQFAmJOBQJmTgUCYlAJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAmZNCQCUCgIFA25pbAkAnAoKCAUCY0cCXzEIBQJjRwJfMggFAmNHAl8zCAUCY0cCXzQIBQJjRwJfNQgFAmNHAl82CAUCY0cCXzcJAKYDAQgFAmNHAl84CAUCY0cCXzkIBQJjRwNfMTACZG8BDmdldEZlZVJFQURPTkxZAAkAlAoCBQNuaWwFAmFjAQJmTwECZlAABAJmUQQCYXMJAQJlZgADCQABAgUCYXMCCkJ5dGVWZWN0b3IEAmVrBQJhcwUCZWsDCQABAgUCYXMCBFVuaXQIBQJmTw9zZW5kZXJQdWJsaWNLZXkJAAIBAgtNYXRjaCBlcnJvcgQCYXMFAmZPAwkAAQIFAmFzAgVPcmRlcgQCZGIFAmFzBAJmUgkBAmFCAAQCZlMJAQJkYQEFAmRiBAJmVAkA9AMDCAUCZGIJYm9keUJ5dGVzCQCRAwIIBQJkYgZwcm9vZnMAAAgFAmRiD3NlbmRlclB1YmxpY0tleQQCZlUJAPQDAwgFAmRiCWJvZHlCeXRlcwkAkQMCCAUCZGIGcHJvb2ZzAAEFAmZSAwMDBQJmUwUCZlQHBQJmVQcGCQECYW4DBQJmUwUCZlQFAmZVAwkAAQIFAmFzAhRTZXRTY3JpcHRUcmFuc2FjdGlvbgQCZWcFAmFzBAJmVgkA9gMBCQEFdmFsdWUBCAUCZWcGc2NyaXB0BAJmVwkA2wQBCQEFdmFsdWUBCQCdCAIFAmF5CQECYWwABAJmWAkA8QcBBQR0aGlzAwMJAAACBQJmVwUCZlYJAQIhPQIFAmZYBQJmVgcGCQD0AwMIBQJmTwlib2R5Qnl0ZXMJAJEDAggFAmZPBnByb29mcwAABQJmUQkA9AMDCAUCZk8JYm9keUJ5dGVzCQCRAwIIBQJmTwZwcm9vZnMAAAUCZlEBtJ+M", "chainId": 84, "height": 2239042, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: CAc6GWsEtcrrQFAdZkyUt4fQozkD7tWsDwwJR5iY6prB Next: Crm7EBEVVuPas1FrwqcRvfgTVQira7hbXhpydbKVSVxH Diff:
OldNewDifferences
492492 else $Tuple2(dF._2, dF._1)
493493 let dI = dH._1
494494 let dJ = dH._2
495- let dK = dq(bQ, V, AttachedPayment(fromBase58String(bS), dI), AttachedPayment(fromBase58String(bT), dJ), 0, true, true, false, cu, bO)
495+ let dK = dq(bQ, V, AttachedPayment(fromBase58String(bS), dI), AttachedPayment(fromBase58String(bT), dJ), 0, true, true, false, dv, bO)
496496 let dL = dK._2
497497 let dM = dK._7
498498 let ck = dK._9
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(1)
1313
1414 let f = toBigInt((a - ((a * 1) / a)))
1515
1616 let g = "100"
1717
1818 let h = "1"
1919
2020 let i = "__"
2121
2222 let j = ""
2323
2424 let k = 1
2525
2626 let l = 2
2727
2828 let m = 3
2929
3030 let n = 4
3131
3232 let o = 1
3333
3434 let p = 2
3535
3636 let q = 3
3737
3838 let r = 4
3939
4040 let s = 5
4141
4242 let t = 6
4343
4444 let u = 7
4545
4646 let v = 8
4747
4848 let w = 9
4949
5050 let x = 1
5151
5252 let y = 7
5353
5454 let z = 10
5555
5656 let A = fraction(5, a, 10000)
5757
5858 func B (C,D) = fraction(toBigInt(C), c, toBigInt(D))
5959
6060
6161 func E (F,G) = toInt(fraction(F, toBigInt(G), c))
6262
6363
6464 func H (I,J,K) = fraction(I, J, K)
6565
6666
6767 func L (F) = if ((d > F))
6868 then -(F)
6969 else F
7070
7171
7272 func M () = "%s__factoryContract"
7373
7474
7575 func N () = "%s__managerPublicKey"
7676
7777
7878 func O () = "%s__pendingManagerPublicKey"
7979
8080
8181 func P () = "%s%s__price__last"
8282
8383
8484 func Q (R,S) = makeString(["%s%s%d%d__price__history", toString(R), toString(S)], i)
8585
8686
8787 func T (U,V) = ((("%s%s%s__P__" + U) + "__") + V)
8888
8989
9090 func W (U,V) = ((("%s%s%s__G__" + U) + "__") + V)
9191
9292
9393 func X () = "%s__amountAsset"
9494
9595
9696 func Y () = "%s__priceAsset"
9797
9898
9999 func Z () = "%s__amp"
100100
101101
102102 func aa () = "%s__addonAddr"
103103
104104
105105 let ab = "%s__fee"
106106
107107 let ac = valueOrElse(getInteger(this, ab), A)
108108
109109 func ad () = "%s__factoryConfig"
110110
111111
112112 func ae () = "%s%s__matcher__publicKey"
113113
114114
115115 func af (ag,ah) = (((("%d%d%s__" + ag) + "__") + ah) + "__config")
116116
117117
118118 func ai (aj) = ("%s%s%s__mappings__baseAsset2internalId__" + aj)
119119
120120
121121 func ak () = "%s__shutdown"
122122
123123
124124 func al () = "%s__allowedLpStableScriptHash"
125125
126126
127127 func am () = "%s__feeCollectorAddress"
128128
129129
130130 func an (ao,ap,aq) = throw(((((("Failed: ordValid=" + toString(ao)) + " sndrValid=") + toString(ap)) + " mtchrValid=") + toString(aq)))
131131
132132
133133 func ar (F) = {
134134 let as = F
135135 if ($isInstanceOf(as, "String"))
136136 then {
137137 let at = as
138138 at
139139 }
140140 else throw("fail cast to String")
141141 }
142142
143143
144144 func au (av,aw) = valueOrErrorMessage(getString(av, aw), makeString(["mandatory ", toString(av), ".", aw, " not defined"], ""))
145145
146146
147147 func ax (av,aw) = valueOrErrorMessage(getInteger(av, aw), makeString(["mandatory ", toString(av), ".", aw, " not defined"], ""))
148148
149149
150150 let ay = addressFromStringValue(au(this, M()))
151151
152152 let az = au(this, Z())
153153
154154 func aA () = valueOrElse(getBoolean(ay, ak()), false)
155155
156156
157157 func aB () = fromBase58String(au(ay, ae()))
158158
159159
160160 let aC = addressFromStringValue(au(ay, am()))
161161
162162 func aD () = {
163163 let aE = au(this, X())
164164 let aF = au(this, Y())
165165 let aG = ax(ay, ai(aF))
166166 let ag = ax(ay, ai(aE))
167167 split(au(ay, af(toString(ag), toString(aG))), i)
168168 }
169169
170170
171171 func aH () = split(au(ay, ad()), i)
172172
173173
174174 let aI = aH()
175175
176176 let aJ = valueOrErrorMessage(addressFromString(aI[x]), "Invalid staking contract address")
177177
178178 let aK = valueOrErrorMessage(addressFromString(aI[y]), "Invalid slipage contract address")
179179
180180 let aL = valueOrErrorMessage(addressFromString(aI[z]), "Invalid gwx contract address")
181181
182182 func aM (aN,aO,aP,aQ,aR,aS,aT,aU,aV,aW) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(aN), toString(aO), toString(aP), toString(aQ), toString(aR), toString(aS), toString(aT), toString(aU), toString(aV), toString(aW)], i)
183183
184184
185185 func aX (aY,aZ,ba,aQ,aT,aU) = makeString(["%d%d%d%d%d%d", toString(aY), toString(aZ), toString(ba), toString(aQ), toString(aT), toString(aU)], i)
186186
187187
188188 func bb (bc) = if ((bc == "WAVES"))
189189 then wavesBalance(this).available
190190 else assetBalance(this, fromBase58String(bc))
191191
192192
193193 func bd (be,bf) = fraction(be, c, bf)
194194
195195
196196 func bg (bh,bi,bj) = {
197197 let bk = fraction((bh - bi), b, bi)
198198 let bl = ((bj - L(bk)) > d)
199199 if (!(bl))
200200 then throw(("Big slpg: " + toString(bk)))
201201 else $Tuple2(bl, min([bh, bi]))
202202 }
203203
204204
205205 func bm (bn,bo,bp) = {
206206 let bk = fraction(bo, b, bn)
207207 let bq = (bp > bk)
208208 if (if (bq)
209209 then true
210210 else (bo > bn))
211211 then throw(((((((toString(bo) + " ") + toString(bn)) + " ") + toString(bk)) + " ") + toString(bp)))
212212 else bq
213213 }
214214
215215
216216 func br (bs,bt,bu,bv) = {
217217 let bw = B(bu, bs)
218218 let bx = B(bv, bt)
219219 bd(bx, bw)
220220 }
221221
222222
223223 func by (bu,bv,bz) = {
224224 let bA = aD()
225225 let bB = parseIntValue(bA[t])
226226 let bC = parseIntValue(bA[u])
227227 let bD = br(bB, bC, bu, bv)
228228 let bf = B(bu, bB)
229229 let be = B(bv, bC)
230230 let bE = B(bz, a)
231231 let bF = bd(bf, bE)
232232 let bG = bd(be, bE)
233233 [bD, bF, bG]
234234 }
235235
236236
237237 func bH (bu,bv,bz) = {
238238 let bI = by(bu, bv, bz)
239239 [E(bI[0], a), E(bI[1], a), E(bI[2], a)]
240240 }
241241
242242
243243 func bJ (bK) = {
244244 let bL = fraction(bK, ac, a)
245245 $Tuple2((bK - bL), bL)
246246 }
247247
248248
249249 func bM (bN,bO,bP,bQ) = {
250250 let bA = aD()
251251 let bR = bA[q]
252252 let bS = bA[r]
253253 let bT = bA[s]
254254 let bU = parseIntValue(bA[t])
255255 let bV = parseIntValue(bA[u])
256256 let bW = bA[p]
257257 let bX = valueOrErrorMessage(assetInfo(fromBase58String(bR)), "Wrong LP id").quantity
258258 if ((bR != bO))
259259 then throw("Wrong pmt asset")
260260 else {
261261 let bY = bb(bS)
262262 let bZ = B(bY, bU)
263263 let ca = bb(bT)
264264 let cb = B(ca, bV)
265265 let cc = bd(cb, bZ)
266266 let cd = E(cc, a)
267267 let ce = B(bP, a)
268268 let cf = B(bX, a)
269269 let cg = fraction(bZ, ce, cf)
270270 let ch = fraction(cb, ce, cf)
271271 let ci = E(cg, bU)
272272 let cj = E(ch, bV)
273273 let ck = if ((bN == ""))
274274 then nil
275275 else [ScriptTransfer(bQ, ci, if ((bS == "WAVES"))
276276 then unit
277277 else fromBase58String(bS)), ScriptTransfer(bQ, cj, if ((bT == "WAVES"))
278278 then unit
279279 else fromBase58String(bT)), StringEntry(W(toString(bQ), bN), aX(ci, cj, bP, cd, height, lastBlock.timestamp)), IntegerEntry(P(), cd), IntegerEntry(Q(height, lastBlock.timestamp), cd)]
280280 $Tuple10(ci, cj, bS, bT, bY, ca, bX, cc, bW, ck)
281281 }
282282 }
283283
284284
285285 func cl (bN,bj,cm,cn,co,cp,bQ,cq,cr,cs,ct,cu,cv) = {
286286 let bA = aD()
287287 let bR = fromBase58String(bA[q])
288288 let cw = bA[r]
289289 let cx = bA[s]
290290 let cy = bA[v]
291291 let cz = bA[w]
292292 let cA = parseIntValue(bA[t])
293293 let cB = parseIntValue(bA[u])
294294 let bW = bA[p]
295295 let cC = valueOrErrorMessage(assetInfo(bR), "Wr lp as").quantity
296296 let bY = if (cq)
297297 then bb(cw)
298298 else if (if (cs)
299299 then (cv == cw)
300300 else false)
301301 then (bb(cw) - cu)
302302 else if (cs)
303303 then bb(cw)
304304 else (bb(cw) - cm)
305305 let ca = if (cq)
306306 then bb(cx)
307307 else if (if (cs)
308308 then (cv == cx)
309309 else false)
310310 then (bb(cx) - cu)
311311 else if (cs)
312312 then bb(cx)
313313 else (bb(cx) - co)
314314 let cD = B(cm, cA)
315315 let cE = B(co, cB)
316316 let cF = bd(cE, cD)
317317 let bZ = B(bY, cA)
318318 let cb = B(ca, cB)
319319 let cG = if ((cC == 0))
320320 then {
321321 let cc = d
322322 let cH = d
323323 let bE = pow((cD * cE), 0, toBigInt(5), 1, 0, DOWN)
324324 $Tuple5(E(bE, a), E(cD, cA), E(cE, cB), bd((cb + cE), (bZ + cD)), cH)
325325 }
326326 else {
327327 let cc = bd(cb, bZ)
328328 let cI = fraction(L((cc - cF)), c, cc)
329329 let cH = B(bj, a)
330330 if (if (if (ct)
331331 then (cc != d)
332332 else false)
333333 then (cI > cH)
334334 else false)
335335 then throw(((("Price slippage " + toString(cI)) + " > ") + toString(cH)))
336336 else {
337337 let cJ = B(cC, a)
338338 let cK = fraction(cD, cc, c)
339339 let cL = fraction(cE, c, cc)
340340 let cM = if ((cK > cE))
341341 then $Tuple2(cL, cE)
342342 else $Tuple2(cD, cK)
343343 let cN = cM._1
344344 let cO = cM._2
345345 let bE = fraction(cJ, cO, cb)
346346 $Tuple5(E(bE, a), E(cN, cA), E(cO, cB), cc, cH)
347347 }
348348 }
349349 let cP = cG._1
350350 let cQ = cG._2
351351 let cR = cG._3
352352 let cd = E(cG._4, a)
353353 let cS = E(cG._5, a)
354354 if ((0 >= cP))
355355 then throw("LP <= 0")
356356 else {
357357 let cT = if (!(cr))
358358 then 0
359359 else cP
360360 let cU = (cm - cQ)
361361 let cV = (co - cR)
362362 let cW = if (if (cs)
363363 then (cv == cw)
364364 else false)
365365 then $Tuple2(cu, 0)
366366 else if (if (cs)
367367 then (cv == cx)
368368 else false)
369369 then $Tuple2(0, cu)
370370 else $Tuple2(cQ, cR)
371371 let cX = cW._1
372372 let cY = cW._2
373373 let cZ = [IntegerEntry(P(), cd), IntegerEntry(Q(height, lastBlock.timestamp), cd), StringEntry(T(bQ, bN), aM(cX, cY, cT, cd, bj, cS, height, lastBlock.timestamp, cU, cV))]
374374 $Tuple13(cP, cT, cd, bY, ca, cC, bR, bW, cZ, cU, cV, cn, cp)
375375 }
376376 }
377377
378378
379379 func da (db) = {
380380 let bA = aD()
381381 let dc = bA[r]
382382 let dd = bA[s]
383383 let bW = parseIntValue(bA[p])
384384 let bB = parseIntValue(bA[t])
385385 let bC = parseIntValue(bA[u])
386386 let de = bb(dc)
387387 let df = bb(dd)
388388 let cc = if ((db.orderType == Buy))
389389 then br(bB, bC, (de + db.amount), df)
390390 else br(bB, bC, (de - db.amount), df)
391391 let cd = E(cc, a)
392392 if (if (if (aA())
393393 then true
394394 else (bW == m))
395395 then true
396396 else (bW == n))
397397 then throw("Admin blocked")
398398 else {
399399 let dg = db.assetPair.amountAsset
400400 let dh = if ((dg == unit))
401401 then "WAVES"
402402 else toBase58String(value(dg))
403403 let di = db.assetPair.priceAsset
404404 let dj = if ((di == unit))
405405 then "WAVES"
406406 else toBase58String(value(di))
407407 if (if ((dh != dc))
408408 then true
409409 else (dj != dd))
410410 then throw("Wr assets")
411411 else {
412412 let dk = db.price
413413 let cB = fraction(a, bC, bB)
414414 let dl = H(dk, a, cB)
415415 let dm = if ((db.orderType == Buy))
416416 then (cd >= dl)
417417 else (dl >= cd)
418418 true
419419 }
420420 }
421421 }
422422
423423
424424 func dn (do) = if ((size(do.payments) != 1))
425425 then throw("1 pmnt exp")
426426 else {
427427 let dp = value(do.payments[0])
428428 let bO = value(dp.assetId)
429429 let cu = dp.amount
430430 let cG = bM(toBase58String(do.transactionId), toBase58String(bO), cu, do.caller)
431431 let ci = cG._1
432432 let cj = cG._2
433433 let bW = parseIntValue(cG._9)
434434 let ck = cG._10
435435 if (if (aA())
436436 then true
437437 else (bW == n))
438438 then throw(("Admin blocked: " + toString(bW)))
439439 else $Tuple5(ci, cj, cu, bO, ck)
440440 }
441441
442442
443443 func dq (dr,V,ds,dt,bj,cr,cs,ct,cu,cv) = {
444444 let cG = cl(V, bj, value(ds).amount, value(ds).assetId, value(dt).amount, value(dt).assetId, dr, false, cr, cs, ct, cu, cv)
445445 let bW = parseIntValue(cG._8)
446446 if (if (if (aA())
447447 then true
448448 else (bW == l))
449449 then true
450450 else (bW == n))
451451 then throw(("Blocked:" + toString(bW)))
452452 else cG
453453 }
454454
455455
456456 func du (dv,bO,bQ,V) = {
457457 let dw = aD()
458458 let bS = dw[r]
459459 let bT = dw[s]
460460 let bY = bb(bS)
461461 let ca = bb(bT)
462462 let dx = bJ(dv)
463463 let cu = dx._1
464464 let bL = dx._2
465465 let dy = if ((V == ""))
466466 then $Tuple2(bY, ca)
467467 else if ((bO == bS))
468468 then if ((dv > bY))
469469 then throw("invalid payment amount")
470470 else $Tuple2((bY - dv), ca)
471471 else if ((bO == bT))
472472 then if ((dv > ca))
473473 then throw("invalid payment amount")
474474 else $Tuple2(bY, (ca - dv))
475475 else throw("wrong pmtAssetId")
476476 let dz = dy._1
477477 let dA = dy._2
478478 let dB = if ((bO == bS))
479479 then $Tuple2(dz, dA)
480480 else $Tuple2(dA, dz)
481481 let dC = dB._1
482482 let dD = dB._2
483483 let dE = 1
484484 let dF = {
485485 let dG = invoke(aL, "calcPutXOnly", [toString(cu), toString(dC), toString(dD), "", az, g, toString(dE), h], nil)
486486 if ($isInstanceOf(dG, "(Int, Int)"))
487487 then dG
488488 else throw(($getType(invoke(aL, "calcPutXOnly", [toString(cu), toString(dC), toString(dD), "", az, g, toString(dE), h], nil)) + " couldn't be cast to (Int, Int)"))
489489 }
490490 let dH = if ((bO == bS))
491491 then dF
492492 else $Tuple2(dF._2, dF._1)
493493 let dI = dH._1
494494 let dJ = dH._2
495- let dK = dq(bQ, V, AttachedPayment(fromBase58String(bS), dI), AttachedPayment(fromBase58String(bT), dJ), 0, true, true, false, cu, bO)
495+ let dK = dq(bQ, V, AttachedPayment(fromBase58String(bS), dI), AttachedPayment(fromBase58String(bT), dJ), 0, true, true, false, dv, bO)
496496 let dL = dK._2
497497 let dM = dK._7
498498 let ck = dK._9
499499 let cU = dK._10
500500 let cV = dK._11
501501 dK
502502 }
503503
504504
505505 func dN (dO,dP,dQ,dr,dR,dS) = if ((size(dQ) != 1))
506506 then throw("1 pmnt expd")
507507 else {
508508 let dw = aD()
509509 let bR = dw[q]
510510 let bS = dw[r]
511511 let bT = dw[s]
512512 let dT = parseIntValue(dw[t])
513513 let dU = parseIntValue(dw[u])
514514 let dV = dw[p]
515515 let bQ = if ((dr == this))
516516 then dR
517517 else dr
518518 let dp = value(dQ[0])
519519 let bO = value(dp.assetId)
520520 let cu = dp.amount
521521 if ((1000000000 > cu))
522522 then throw("Min pmt 10 LP")
523523 else {
524524 let bN = toBase58String(dS)
525525 if ((bR != toBase58String(bO)))
526526 then throw("Wrong LP")
527527 else {
528528 let bY = bb(bS)
529529 let ca = bb(bT)
530530 let dW = {
531531 let dG = invoke(this, "getOneTknV2READONLY", [dO, cu], nil)
532532 if ($isInstanceOf(dG, "(Int, Int)"))
533533 then dG
534534 else throw(($getType(invoke(this, "getOneTknV2READONLY", [dO, cu], nil)) + " couldn't be cast to (Int, Int)"))
535535 }
536536 let dX = dW._1
537537 let bL = dW._2
538538 let dY = if (if ((dP > 0))
539539 then (dP > dX)
540540 else false)
541541 then throw(makeString(["amount to receive is less than ", toString(dP)], ""))
542542 else dX
543543 let dZ = if ((dO == bS))
544544 then $Tuple2(dY, 0)
545545 else $Tuple2(0, dY)
546546 let ea = dZ._1
547547 let eb = dZ._2
548548 let ec = bd(B(ca, dU), B(bY, dT))
549549 let ed = E(ec, a)
550550 let ck = [ScriptTransfer(bQ, dY, if ((dO == "WAVES"))
551551 then unit
552552 else fromBase58String(dO)), StringEntry(W(toString(bQ), bN), aX(ea, eb, cu, ed, height, lastBlock.timestamp)), IntegerEntry(P(), ed), IntegerEntry(Q(height, lastBlock.timestamp), ed)]
553553 if ((ck == ck))
554554 then {
555555 let ee = invoke(ay, "burn", [cu], [AttachedPayment(bO, cu)])
556556 if ((ee == ee))
557557 then $Tuple2(ck, dY)
558558 else throw("Strict value is not equal to itself.")
559559 }
560560 else throw("Strict value is not equal to itself.")
561561 }
562562 }
563563 }
564564
565565
566566 func ef () = {
567567 let as = getString(N())
568568 if ($isInstanceOf(as, "String"))
569569 then {
570570 let eg = as
571571 fromBase58String(eg)
572572 }
573573 else if ($isInstanceOf(as, "Unit"))
574574 then unit
575575 else throw("Match error")
576576 }
577577
578578
579579 func eh () = {
580580 let as = getString(O())
581581 if ($isInstanceOf(as, "String"))
582582 then {
583583 let eg = as
584584 fromBase58String(eg)
585585 }
586586 else if ($isInstanceOf(as, "Unit"))
587587 then unit
588588 else throw("Match error")
589589 }
590590
591591
592592 let ei = throw("Permission denied")
593593
594594 func ej (do) = {
595595 let as = ef()
596596 if ($isInstanceOf(as, "ByteVector"))
597597 then {
598598 let ek = as
599599 if ((do.callerPublicKey == ek))
600600 then true
601601 else ei
602602 }
603603 else if ($isInstanceOf(as, "Unit"))
604604 then if ((do.caller == this))
605605 then true
606606 else ei
607607 else throw("Match error")
608608 }
609609
610610
611611 @Callable(do)
612612 func constructor (M) = {
613613 let el = ej(do)
614614 if ((el == el))
615615 then [StringEntry(M(), M)]
616616 else throw("Strict value is not equal to itself.")
617617 }
618618
619619
620620
621621 @Callable(do)
622622 func setManager (em) = {
623623 let el = ej(do)
624624 if ((el == el))
625625 then {
626626 let en = fromBase58String(em)
627627 if ((en == en))
628628 then [StringEntry(O(), em)]
629629 else throw("Strict value is not equal to itself.")
630630 }
631631 else throw("Strict value is not equal to itself.")
632632 }
633633
634634
635635
636636 @Callable(do)
637637 func confirmManager () = {
638638 let bI = eh()
639639 let eo = if (isDefined(bI))
640640 then true
641641 else throw("No pending manager")
642642 if ((eo == eo))
643643 then {
644644 let ep = if ((do.callerPublicKey == value(bI)))
645645 then true
646646 else throw("You are not pending manager")
647647 if ((ep == ep))
648648 then [StringEntry(N(), toBase58String(value(bI))), DeleteEntry(O())]
649649 else throw("Strict value is not equal to itself.")
650650 }
651651 else throw("Strict value is not equal to itself.")
652652 }
653653
654654
655655
656656 @Callable(do)
657657 func put (eq,er) = {
658658 let es = aH()
659659 let et = valueOrErrorMessage(addressFromString(es[x]), "Wr st addr")
660660 let eu = valueOrErrorMessage(addressFromString(es[y]), "Wr sl addr")
661661 if ((0 > eq))
662662 then throw("Wrong slippage")
663663 else if ((size(do.payments) != 2))
664664 then throw("2 pmnts expd")
665665 else {
666666 let ev = dq(toString(do.caller), toBase58String(do.transactionId), AttachedPayment(value(do.payments[0]).assetId, value(do.payments[0]).amount), do.payments[1], eq, true, false, true, 0, "")
667667 let cT = ev._2
668668 let dM = ev._7
669669 let ck = ev._9
670670 let cU = ev._10
671671 let cV = ev._11
672672 let bS = ev._12
673673 let bT = ev._13
674674 let cG = invoke(ay, "emit", [cT], nil)
675675 if ((cG == cG))
676676 then {
677677 let ew = {
678678 let as = cG
679679 if ($isInstanceOf(as, "Address"))
680680 then {
681681 let ex = as
682682 invoke(ex, "emit", [cT], nil)
683683 }
684684 else unit
685685 }
686686 if ((ew == ew))
687687 then {
688688 let ey = if ((cU > 0))
689689 then invoke(eu, "put", nil, [AttachedPayment(bS, cU)])
690690 else nil
691691 if ((ey == ey))
692692 then {
693693 let ez = if ((cV > 0))
694694 then invoke(eu, "put", nil, [AttachedPayment(bT, cV)])
695695 else nil
696696 if ((ez == ez))
697697 then {
698698 let eA = if (er)
699699 then {
700700 let eB = invoke(et, "stake", nil, [AttachedPayment(dM, cT)])
701701 if ((eB == eB))
702702 then nil
703703 else throw("Strict value is not equal to itself.")
704704 }
705705 else [ScriptTransfer(do.caller, cT, dM)]
706706 (ck ++ eA)
707707 }
708708 else throw("Strict value is not equal to itself.")
709709 }
710710 else throw("Strict value is not equal to itself.")
711711 }
712712 else throw("Strict value is not equal to itself.")
713713 }
714714 else throw("Strict value is not equal to itself.")
715715 }
716716 }
717717
718718
719719
720720 @Callable(do)
721721 func putOneTkn (dI,dJ,eC,bj,er) = {
722722 let bA = aH()
723723 let et = valueOrErrorMessage(addressFromString(bA[x]), "Wr st addr")
724724 let eu = valueOrErrorMessage(addressFromString(bA[y]), "Wr sl addr")
725725 let eD = valueOrErrorMessage(addressFromString(bA[z]), "Wr gwx addr")
726726 let eE = aD()
727727 let bS = eE[r]
728728 let bT = eE[s]
729729 let bU = parseIntValue(eE[t])
730730 let bV = parseIntValue(eE[u])
731731 let eF = valueOrElse(getString(this, aa()), "")
732732 let bQ = if ((eF == toString(do.caller)))
733733 then do.originCaller
734734 else do.caller
735735 if (if (if (if ((0 >= bj))
736736 then true
737737 else (0 >= dI))
738738 then true
739739 else (0 >= dJ))
740740 then true
741741 else (0 >= eC))
742742 then throw("Wrong params")
743743 else if ((size(do.payments) != 1))
744744 then throw("1 pmnt expd")
745745 else {
746746 let dp = value(do.payments[0])
747747 let bO = toBase58String(value(dp.assetId))
748748 let eG = dp.amount
749749 let eH = bJ(eG)
750750 let cu = eH._1
751751 let bL = eH._2
752752 if ((10000000 > eG))
753753 then throw("Wrong pmt amt")
754754 else {
755755 let bY = bb(bS)
756756 let ca = bb(bT)
757757 let eI = if ((bO == bS))
758758 then if (if ((eG > bY))
759759 then true
760760 else (dI > cu))
761761 then throw("invalid payment amount")
762762 else $Tuple6((bY - eG), ca, (cu - dI), dJ, 0, 0)
763763 else if ((bO == bT))
764764 then if (if ((eG > ca))
765765 then true
766766 else (dJ > cu))
767767 then throw("invalid payment amount")
768768 else $Tuple6(bY, (ca - eG), 0, 0, (cu - dJ), dI)
769769 else throw("wrong pmtAssetId")
770770 let dz = eI._1
771771 let dA = eI._2
772772 let eJ = eI._3
773773 let eK = eI._4
774774 let eL = eI._5
775775 let eM = eI._6
776776 let bo = invoke(eD, "calcD", [toString(dz), toString(dA), az, g, h], nil)
777777 let bn = invoke(eD, "calcD", [toString(toBigInt(((dz + eJ) - eM))), toString(toBigInt(((dA + eL) - eK))), az, g, h], nil)
778778 let eN = bm(parseBigIntValue(ar(bn)), parseBigIntValue(ar(bo)), f)
779779 if ((eN == eN))
780780 then {
781781 let dK = dq(toString(do.caller), toBase58String(do.transactionId), AttachedPayment(fromBase58String(bS), dI), AttachedPayment(fromBase58String(bT), dJ), bj, true, true, true, cu, bO)
782782 let dL = dK._2
783783 let dM = dK._7
784784 let ck = dK._9
785785 let cU = dK._10
786786 let cV = dK._11
787787 let eO = bg(toBigInt(dL), toBigInt(eC), toBigInt(bj))
788788 let cT = toInt(eO._2)
789789 let ev = invoke(ay, "emit", [cT], nil)
790790 if ((ev == ev))
791791 then {
792792 let ew = {
793793 let as = ev
794794 if ($isInstanceOf(as, "Address"))
795795 then {
796796 let ex = as
797797 invoke(ex, "emit", [cT], nil)
798798 }
799799 else unit
800800 }
801801 if ((ew == ew))
802802 then {
803803 let ey = if ((cU > 0))
804804 then invoke(eu, "put", nil, [AttachedPayment(fromBase58String(bS), cU)])
805805 else nil
806806 if ((ey == ey))
807807 then {
808808 let ez = if ((cV > 0))
809809 then invoke(eu, "put", nil, [AttachedPayment(fromBase58String(bT), cV)])
810810 else nil
811811 if ((ez == ez))
812812 then {
813813 let eA = if (er)
814814 then {
815815 let eB = invoke(et, "stake", nil, [AttachedPayment(dM, cT)])
816816 if ((eB == eB))
817817 then nil
818818 else throw("Strict value is not equal to itself.")
819819 }
820820 else [ScriptTransfer(do.caller, cT, dM)]
821821 let eP = if ((bL > 0))
822822 then [ScriptTransfer(aC, bL, fromBase58String(bO))]
823823 else nil
824824 ((ck ++ eA) ++ eP)
825825 }
826826 else throw("Strict value is not equal to itself.")
827827 }
828828 else throw("Strict value is not equal to itself.")
829829 }
830830 else throw("Strict value is not equal to itself.")
831831 }
832832 else throw("Strict value is not equal to itself.")
833833 }
834834 else throw("Strict value is not equal to itself.")
835835 }
836836 }
837837 }
838838
839839
840840
841841 @Callable(do)
842842 func putOneTknV2 (dP,er) = if ((size(do.payments) != 1))
843843 then throw("1 pmnt expd")
844844 else {
845845 let dw = aD()
846846 let bS = dw[r]
847847 let bT = dw[s]
848848 let dT = parseIntValue(dw[t])
849849 let dU = parseIntValue(dw[u])
850850 let bQ = if ((do.caller == this))
851851 then do.originCaller
852852 else do.caller
853853 let dp = value(do.payments[0])
854854 let bO = toBase58String(value(dp.assetId))
855855 let cu = dp.amount
856856 if ((10000000 > cu))
857857 then throw("Wrong pmt amt")
858858 else {
859859 let cG = du(cu, bO, toString(bQ), toBase58String(do.transactionId))
860860 let dL = cG._2
861861 let dM = cG._7
862862 let ck = cG._9
863863 let cU = cG._10
864864 let cV = cG._11
865865 let cT = if (if ((dP > 0))
866866 then (dP > dL)
867867 else false)
868868 then throw(makeString(["amount to receive is less than ", toString(dP)], ""))
869869 else dL
870870 let ev = invoke(ay, "emit", [cT], nil)
871871 if ((ev == ev))
872872 then {
873873 let ew = {
874874 let as = ev
875875 if ($isInstanceOf(as, "Address"))
876876 then {
877877 let ex = as
878878 invoke(ex, "emit", [cT], nil)
879879 }
880880 else unit
881881 }
882882 if ((ew == ew))
883883 then {
884884 let ey = if ((cU > 0))
885885 then invoke(aK, "put", nil, [AttachedPayment(fromBase58String(bS), cU)])
886886 else nil
887887 if ((ey == ey))
888888 then {
889889 let ez = if ((cV > 0))
890890 then invoke(aK, "put", nil, [AttachedPayment(fromBase58String(bT), cV)])
891891 else nil
892892 if ((ez == ez))
893893 then {
894894 let eA = if (er)
895895 then {
896896 let eB = invoke(aJ, "stake", nil, [AttachedPayment(dM, cT)])
897897 if ((eB == eB))
898898 then nil
899899 else throw("Strict value is not equal to itself.")
900900 }
901901 else [ScriptTransfer(do.caller, cT, dM)]
902902 $Tuple2((ck ++ eA), cT)
903903 }
904904 else throw("Strict value is not equal to itself.")
905905 }
906906 else throw("Strict value is not equal to itself.")
907907 }
908908 else throw("Strict value is not equal to itself.")
909909 }
910910 else throw("Strict value is not equal to itself.")
911911 }
912912 }
913913
914914
915915
916916 @Callable(do)
917917 func putOneTknV2READONLY (eQ,eR) = {
918918 let cG = du(eQ, eR, "", "")
919919 let dL = cG._2
920920 let dM = cG._7
921921 let ck = cG._9
922922 let cU = cG._10
923923 let cV = cG._11
924924 $Tuple2(nil, dL)
925925 }
926926
927927
928928
929929 @Callable(do)
930930 func putOneTknV2WithBonusREADONLY (eQ,eR) = {
931931 let dw = aD()
932932 let bS = dw[r]
933933 let bT = dw[s]
934934 let bY = bb(bS)
935935 let ca = bb(bT)
936936 let cG = du(eQ, eR, "", "")
937937 let dL = cG._2
938938 let cd = cG._3
939939 let eS = cG._6
940940 let dM = cG._7
941941 let eT = if ((eR == bS))
942942 then {
943943 let eU = fraction(eQ, cd, a)
944944 $Tuple2(eQ, eU)
945945 }
946946 else {
947947 let eV = fraction(eQ, a, cd)
948948 $Tuple2(eV, eQ)
949949 }
950950 let eV = eT._1
951951 let eU = eT._2
952952 let eW = fraction(eS, eU, ca)
953953 let eX = if ((eR == bS))
954954 then fraction(eV, a, dL)
955955 else fraction(eU, a, dL)
956956 let eY = fraction((eU + eV), a, eW)
957957 let eZ = fraction((eY - eX), a, eX)
958958 let bL = bJ(eQ)._2
959959 $Tuple2(nil, $Tuple3(dL, bL, eZ))
960960 }
961961
962962
963963
964964 @Callable(do)
965965 func putForFree (fa) = if ((0 > fa))
966966 then throw("Wrong slpg")
967967 else if ((size(do.payments) != 2))
968968 then throw("2 pmnts expd")
969969 else {
970970 let dK = dq(toString(do.caller), toBase58String(do.transactionId), AttachedPayment(value(do.payments[0]).assetId, value(do.payments[0]).amount), do.payments[1], fa, false, false, true, 0, "")
971971 dK._9
972972 }
973973
974974
975975
976976 @Callable(do)
977977 func get () = {
978978 let cG = dn(do)
979979 let fb = cG._1
980980 let cj = cG._2
981981 let cu = cG._3
982982 let bO = cG._4
983983 let ck = cG._5
984984 let fc = invoke(ay, "burn", [cu], [AttachedPayment(bO, cu)])
985985 if ((fc == fc))
986986 then ck
987987 else throw("Strict value is not equal to itself.")
988988 }
989989
990990
991991
992992 @Callable(do)
993993 func getOneTkn (fd,fe,ff,dO,bj) = if ((size(do.payments) != 1))
994994 then throw("1 pmnt expd")
995995 else {
996996 let bA = aD()
997997 let bR = bA[q]
998998 let bS = bA[r]
999999 let bT = bA[s]
10001000 let bU = parseIntValue(bA[t])
10011001 let bV = parseIntValue(bA[u])
10021002 let bW = bA[p]
10031003 let es = aH()
10041004 let eD = valueOrErrorMessage(addressFromString(es[z]), "Wr sl addr")
10051005 let dp = value(do.payments[0])
10061006 let eF = valueOrElse(getString(this, aa()), "")
10071007 let bQ = if ((eF == toString(do.caller)))
10081008 then do.originCaller
10091009 else do.caller
10101010 let bN = toBase58String(do.transactionId)
10111011 let bO = value(dp.assetId)
10121012 let cu = dp.amount
10131013 if ((1000000000 > cu))
10141014 then throw("Min pmt 10 LP")
10151015 else if (if (if ((0 > bj))
10161016 then true
10171017 else (0 > fd))
10181018 then true
10191019 else (0 > ff))
10201020 then throw("Wrong params")
10211021 else if ((bR != toBase58String(bO)))
10221022 then throw("Wrong LP")
10231023 else {
10241024 let cG = bM(toBase58String(do.transactionId), toBase58String(bO), cu, do.caller)
10251025 let fg = cG._1
10261026 let fh = cG._2
10271027 let bY = bb(bS)
10281028 let ca = bb(bT)
10291029 let fi = if ((dO == bS))
10301030 then $Tuple7((bY - fg), (ca - fh), fd, fh, 0, 0, (fg + fd))
10311031 else if ((dO == bT))
10321032 then $Tuple7((bY - fg), (ca - fh), 0, 0, fd, fg, (fh + fd))
10331033 else throw("wrong outAssetId")
10341034 let dz = fi._1
10351035 let dA = fi._2
10361036 let eJ = fi._3
10371037 let eK = fi._4
10381038 let eL = fi._5
10391039 let eM = fi._6
10401040 let fj = fi._7
10411041 if (if ((0 > eJ))
10421042 then true
10431043 else (0 > eL))
10441044 then throw("Wrong calc")
10451045 else {
10461046 let bo = invoke(eD, "calcD", [toString(dz), toString(dA), az, g, h], nil)
10471047 let bn = invoke(eD, "calcD", [toString(((dz - eJ) + eM)), toString(((dA + eK) - eL)), az, g, h], nil)
10481048 let eN = bm(parseBigIntValue(ar(bn)), parseBigIntValue(ar(bo)), f)
10491049 if ((eN == eN))
10501050 then {
10511051 let dX = bJ(fj)._1
10521052 let fk = bg(toBigInt(dX), toBigInt(ff), toBigInt(bj))
10531053 if ((fk == fk))
10541054 then {
10551055 let fl = if ((dO == bS))
10561056 then $Tuple2(toInt(fk._2), 0)
10571057 else $Tuple2(0, toInt(fk._2))
10581058 let ea = fl._1
10591059 let eb = fl._2
10601060 let dY = (ea + eb)
10611061 let bL = (fj - dX)
10621062 let fm = if ((dO == "WAVES"))
10631063 then unit
10641064 else fromBase58String(dO)
10651065 let eP = if ((bL > 0))
10661066 then [ScriptTransfer(aC, bL, fm)]
10671067 else nil
10681068 let ec = bd(B(ca, bV), B(bY, bU))
10691069 let ed = E(ec, a)
10701070 let ck = [ScriptTransfer(bQ, dY, fm), StringEntry(W(toString(bQ), bN), aX(ea, eb, cu, ed, height, lastBlock.timestamp)), IntegerEntry(P(), ed), IntegerEntry(Q(height, lastBlock.timestamp), ed)]
10711071 if ((ck == ck))
10721072 then {
10731073 let ee = invoke(ay, "burn", [cu], [AttachedPayment(bO, cu)])
10741074 if ((ee == ee))
10751075 then (ck ++ eP)
10761076 else throw("Strict value is not equal to itself.")
10771077 }
10781078 else throw("Strict value is not equal to itself.")
10791079 }
10801080 else throw("Strict value is not equal to itself.")
10811081 }
10821082 else throw("Strict value is not equal to itself.")
10831083 }
10841084 }
10851085 }
10861086
10871087
10881088
10891089 @Callable(do)
10901090 func getOneTknV2 (dO,dP) = {
10911091 let fn = dN(dO, dP, do.payments, do.caller, do.originCaller, do.transactionId)
10921092 let ck = fn._1
10931093 let dY = fn._2
10941094 $Tuple2(ck, dY)
10951095 }
10961096
10971097
10981098
10991099 @Callable(do)
11001100 func getOneTknV2READONLY (dO,fo) = {
11011101 let dw = aD()
11021102 let bR = dw[q]
11031103 let bS = dw[r]
11041104 let bT = dw[s]
11051105 let cG = bM("", bR, fo, this)
11061106 let fg = cG._1
11071107 let fh = cG._2
11081108 let bY = bb(bS)
11091109 let ca = bb(bT)
11101110 let dz = (bY - fg)
11111111 let dA = (ca - fh)
11121112 let fp = if ((dO == bS))
11131113 then $Tuple3(dA, dz, fh)
11141114 else if ((dO == bT))
11151115 then $Tuple3(dz, dA, fg)
11161116 else throw("wrong outAssetId")
11171117 let fq = fp._1
11181118 let fr = fp._2
11191119 let fs = fp._3
11201120 let ft = 1
11211121 let fd = {
11221122 let dG = invoke(aL, "calcSwapXToY", [toString(fs), toString(fq), toString(fr), "", az, g, toString(ft), h], nil)
11231123 if ($isInstanceOf(dG, "Int"))
11241124 then dG
11251125 else throw(($getType(invoke(aL, "calcSwapXToY", [toString(fs), toString(fq), toString(fr), "", az, g, toString(ft), h], nil)) + " couldn't be cast to Int"))
11261126 }
11271127 let fj = (fd + (if ((dO == bS))
11281128 then fg
11291129 else fh))
11301130 let fu = bJ(fj)
11311131 let dX = fu._1
11321132 let bL = fu._2
11331133 $Tuple2(nil, $Tuple2(dX, bL))
11341134 }
11351135
11361136
11371137
11381138 @Callable(do)
11391139 func getOneTknV2WithBonusREADONLY (dO,fo) = {
11401140 let dw = aD()
11411141 let bS = dw[r]
11421142 let bT = dw[s]
11431143 let bR = dw[q]
11441144 let bY = bb(bS)
11451145 let ca = bb(bT)
11461146 let fv = {
11471147 let dG = invoke(this, "getOneTknV2READONLY", [dO, fo], nil)
11481148 if ($isInstanceOf(dG, "(Int, Int)"))
11491149 then dG
11501150 else throw(($getType(invoke(this, "getOneTknV2READONLY", [dO, fo], nil)) + " couldn't be cast to (Int, Int)"))
11511151 }
11521152 let dX = fv._1
11531153 let bL = fv._2
11541154 let cG = bM("", bR, fo, this)
11551155 let ci = cG._1
11561156 let cj = cG._2
11571157 let eX = fraction(dX, a, fo)
11581158 let eY = fraction((ci + cj), a, fo)
11591159 let eZ = fraction((eX - eY), a, eY)
11601160 $Tuple2(nil, $Tuple3(dX, bL, eZ))
11611161 }
11621162
11631163
11641164
11651165 @Callable(do)
11661166 func getNoLess (fw,fx) = {
11671167 let cG = dn(do)
11681168 let ci = cG._1
11691169 let cj = cG._2
11701170 let cu = cG._3
11711171 let bO = cG._4
11721172 let ck = cG._5
11731173 if ((fw > ci))
11741174 then throw(((("Failed: " + toString(ci)) + " < ") + toString(fw)))
11751175 else if ((fx > cj))
11761176 then throw(((("Failed: " + toString(cj)) + " < ") + toString(fx)))
11771177 else {
11781178 let fy = invoke(ay, "burn", [cu], [AttachedPayment(bO, cu)])
11791179 if ((fy == fy))
11801180 then ck
11811181 else throw("Strict value is not equal to itself.")
11821182 }
11831183 }
11841184
11851185
11861186
11871187 @Callable(do)
11881188 func unstakeAndGet (bK) = {
11891189 let fz = if ((size(do.payments) != 0))
11901190 then throw("No pmnts expd")
11911191 else true
11921192 if ((fz == fz))
11931193 then {
11941194 let bA = aD()
11951195 let fA = aH()
11961196 let dM = fromBase58String(bA[q])
11971197 let fB = valueOrErrorMessage(addressFromString(fA[x]), "Wr st addr")
11981198 let fC = invoke(fB, "unstake", [toBase58String(dM), bK], nil)
11991199 if ((fC == fC))
12001200 then {
12011201 let cG = bM(toBase58String(do.transactionId), toBase58String(dM), bK, do.caller)
12021202 let bW = parseIntValue(cG._9)
12031203 let ck = cG._10
12041204 let fD = if (if (aA())
12051205 then true
12061206 else (bW == n))
12071207 then throw(("Blocked: " + toString(bW)))
12081208 else true
12091209 if ((fD == fD))
12101210 then {
12111211 let fE = invoke(ay, "burn", [bK], [AttachedPayment(dM, bK)])
12121212 if ((fE == fE))
12131213 then ck
12141214 else throw("Strict value is not equal to itself.")
12151215 }
12161216 else throw("Strict value is not equal to itself.")
12171217 }
12181218 else throw("Strict value is not equal to itself.")
12191219 }
12201220 else throw("Strict value is not equal to itself.")
12211221 }
12221222
12231223
12241224
12251225 @Callable(do)
12261226 func unstakeAndGetOneTkn (fF,dO,dP) = {
12271227 let fz = if ((size(do.payments) != 0))
12281228 then throw("No pmnts expd")
12291229 else true
12301230 if ((fz == fz))
12311231 then {
12321232 let bA = aD()
12331233 let fA = aH()
12341234 let dM = fromBase58String(bA[q])
12351235 let fB = valueOrErrorMessage(addressFromString(fA[x]), "Wr st addr")
12361236 let fC = invoke(fB, "unstake", [toBase58String(dM), fF], nil)
12371237 if ((fC == fC))
12381238 then {
12391239 let fG = dN(dO, dP, [AttachedPayment(dM, fF)], do.caller, do.originCaller, do.transactionId)
12401240 let ck = fG._1
12411241 let dY = fG._2
12421242 $Tuple2(ck, dY)
12431243 }
12441244 else throw("Strict value is not equal to itself.")
12451245 }
12461246 else throw("Strict value is not equal to itself.")
12471247 }
12481248
12491249
12501250
12511251 @Callable(do)
12521252 func activate (fH,fI) = if ((toString(do.caller) != toString(ay)))
12531253 then throw("denied")
12541254 else $Tuple2([StringEntry(X(), fH), StringEntry(Y(), fI)], "success")
12551255
12561256
12571257
12581258 @Callable(do)
12591259 func setS (fJ,fD) = if ((toString(do.caller) != au(this, aa())))
12601260 then ei
12611261 else [StringEntry(fJ, fD)]
12621262
12631263
12641264
12651265 @Callable(do)
12661266 func setI (fJ,fD) = if ((toString(do.caller) != au(this, aa())))
12671267 then ei
12681268 else [IntegerEntry(fJ, fD)]
12691269
12701270
12711271
12721272 @Callable(do)
12731273 func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aD())
12741274
12751275
12761276
12771277 @Callable(do)
12781278 func getAccBalanceWrapperREADONLY (bc) = $Tuple2(nil, bb(bc))
12791279
12801280
12811281
12821282 @Callable(do)
12831283 func calcPricesWrapperREADONLY (bu,bv,bz) = {
12841284 let fK = by(bu, bv, bz)
12851285 $Tuple2(nil, [toString(fK[0]), toString(fK[1]), toString(fK[2])])
12861286 }
12871287
12881288
12891289
12901290 @Callable(do)
12911291 func fromX18WrapperREADONLY (F,fL) = $Tuple2(nil, E(parseBigIntValue(F), fL))
12921292
12931293
12941294
12951295 @Callable(do)
12961296 func toX18WrapperREADONLY (C,D) = $Tuple2(nil, toString(B(C, D)))
12971297
12981298
12991299
13001300 @Callable(do)
13011301 func calcPriceBigIntWrapperREADONLY (be,bf) = $Tuple2(nil, toString(bd(parseBigIntValue(be), parseBigIntValue(bf))))
13021302
13031303
13041304
13051305 @Callable(do)
13061306 func estimatePutOperationWrapperREADONLY (bN,bj,cm,cn,co,cp,fM,cq,cr) = $Tuple2(nil, cl(bN, bj, cm, cn, co, cp, fM, cq, cr, true, false, 0, ""))
13071307
13081308
13091309
13101310 @Callable(do)
13111311 func estimateGetOperationWrapperREADONLY (bN,fN,bP,fM) = {
13121312 let cG = bM(bN, fN, bP, addressFromStringValue(fM))
13131313 $Tuple2(nil, $Tuple10(cG._1, cG._2, cG._3, cG._4, cG._5, cG._6, cG._7, toString(cG._8), cG._9, cG._10))
13141314 }
13151315
13161316
13171317
13181318 @Callable(do)
13191319 func getFeeREADONLY () = $Tuple2(nil, ac)
13201320
13211321
13221322 @Verifier(fO)
13231323 func fP () = {
13241324 let fQ = {
13251325 let as = ef()
13261326 if ($isInstanceOf(as, "ByteVector"))
13271327 then {
13281328 let ek = as
13291329 ek
13301330 }
13311331 else if ($isInstanceOf(as, "Unit"))
13321332 then fO.senderPublicKey
13331333 else throw("Match error")
13341334 }
13351335 let as = fO
13361336 if ($isInstanceOf(as, "Order"))
13371337 then {
13381338 let db = as
13391339 let fR = aB()
13401340 let fS = da(db)
13411341 let fT = sigVerify(db.bodyBytes, db.proofs[0], db.senderPublicKey)
13421342 let fU = sigVerify(db.bodyBytes, db.proofs[1], fR)
13431343 if (if (if (fS)
13441344 then fT
13451345 else false)
13461346 then fU
13471347 else false)
13481348 then true
13491349 else an(fS, fT, fU)
13501350 }
13511351 else if ($isInstanceOf(as, "SetScriptTransaction"))
13521352 then {
13531353 let eg = as
13541354 let fV = blake2b256(value(eg.script))
13551355 let fW = fromBase64String(value(getString(ay, al())))
13561356 let fX = scriptHash(this)
13571357 if (if ((fW == fV))
13581358 then (fX != fV)
13591359 else false)
13601360 then true
13611361 else sigVerify(fO.bodyBytes, fO.proofs[0], fQ)
13621362 }
13631363 else sigVerify(fO.bodyBytes, fO.proofs[0], fQ)
13641364 }
13651365

github/deemru/w8io/03bedc9 
120.81 ms