tx · 7QJzozovA5LhSfuC3h7VxXAbKKFcSaMR8qzAonBsHMFy

3NAefciWv6f9fWvEXdGgpHfanJFG8HqfjuT:  -0.03000000 Waves

2022.10.26 12:56 [2289237] smart account 3NAefciWv6f9fWvEXdGgpHfanJFG8HqfjuT > SELF 0.00000000 Waves

{ "type": 13, "id": "7QJzozovA5LhSfuC3h7VxXAbKKFcSaMR8qzAonBsHMFy", "fee": 3000000, "feeAssetId": null, "timestamp": 1666778223792, "version": 1, "sender": "3NAefciWv6f9fWvEXdGgpHfanJFG8HqfjuT", "senderPublicKey": "D1BL65meykxFZTCuq7jq9HSGLLnWvQamQPUNrguW5w39", "proofs": [ "4ikXuU69i1n9nm5i2PYaQnvRS6bPeNShmZxgsDwGUqvASqQXgy8KmHMefUorwnRv61KXMraGoyoj8t2EcqrMh5yj" ], "script": "base64:BgK0IQgCEgMKAQgSAwoBCBIAEgQKAgEEEgQKAgEEEgMKAQESABIECgIIARIECgIIARIECgIIARIECgIBARIDCgEBEgUKAwEIARIECgIBCBIECgIICBIECgIICBIECgIIARIAEgMKAQgSBQoDAQEBEgQKAggBEgQKAgEBEgQKAggIEgsKCQgBAQIBAggEBBIGCgQICAEIEgAiBnNjYWxlOCIMc2NhbGU4QmlnSW50IgdzY2FsZTE4Igp6ZXJvQmlnSW50IgRiaWcwIgRiaWcxIgRiaWcyIgpzbGlwcGFnZTREIgt3YXZlc1N0cmluZyIFQW11bHQiBURjb252IgNTRVAiBUVNUFRZIgpQb29sQWN0aXZlIgpQb29sUHV0RGlzIg5Qb29sTWF0Y2hlckRpcyIMUG9vbFNodXRkb3duIg5pZHhQb29sQWRkcmVzcyIJaWR4UG9vbFN0IglpZHhMUEFzSWQiCWlkeEFtQXNJZCIJaWR4UHJBc0lkIgtpZHhBbXRBc0RjbSINaWR4UHJpY2VBc0RjbSILaWR4SUFtdEFzSWQiDWlkeElQcmljZUFzSWQiD2lkeEZhY3RTdGFrQ250ciISaWR4RmFjdG9yeVJlc3RDbnRyIhBpZHhGYWN0U2xpcHBDbnRyIhFpZHhGYWN0R3d4UmV3Q250ciIKZmVlRGVmYXVsdCICdDEiB29yaWdWYWwiDW9yaWdTY2FsZU11bHQiAmYxIgN2YWwiD3Jlc3VsdFNjYWxlTXVsdCICdHMiA2FtdCIIcmVzU2NhbGUiCGN1clNjYWxlIgNhYnMiCWFic0JpZ0ludCICZmMiA21wayIEcG1wayICcGwiAnBoIgFoIgF0IgNwYXUiAnVhIgR0eElkIgNnYXUiAmFhIgJwYSIDYW1wIgNhZGEiBmtleUZlZSIDZmVlIgRmY2ZnIgRtdHBrIgJwYyIGaUFtdEFzIgVpUHJBcyIDbWJhIgViQVN0ciIDYXBzIhxrZXlBbGxvd2VkTHBTdGFibGVTY3JpcHRIYXNoIhZrZXlGZWVDb2xsZWN0b3JBZGRyZXNzIgN0b2UiA29yViIGc2VuZHJWIgZtYXRjaFYiA3N0ciIHJG1hdGNoMCIGdmFsU3RyIgRzdHJmIgRhZGRyIgNrZXkiBGludGYiCHRocm93RXJyIgNtc2ciA2ZjYSIBQSIDaWdzIgJtcCITZmVlQ29sbGVjdG9yQWRkcmVzcyIDZ3BjIgVhbXRBcyIHcHJpY2VBcyIIaVByaWNlQXMiDHBhcnNlQXNzZXRJZCIFaW5wdXQiD2Fzc2V0SWRUb1N0cmluZyIPcGFyc2VQb29sQ29uZmlnIgpwb29sQ29uZmlnIhBwb29sQ29uZmlnUGFyc2VkIgskdDA2ODI5NzAxNSIOY2ZnUG9vbEFkZHJlc3MiDWNmZ1Bvb2xTdGF0dXMiDGNmZ0xwQXNzZXRJZCIQY2ZnQW1vdW50QXNzZXRJZCIPY2ZnUHJpY2VBc3NldElkIhZjZmdBbW91bnRBc3NldERlY2ltYWxzIhVjZmdQcmljZUFzc2V0RGVjaW1hbHMiA2dmYyINZmFjdG9yeUNvbmZpZyIPc3Rha2luZ0NvbnRyYWN0Ig9zbGlwYWdlQ29udHJhY3QiC2d3eENvbnRyYWN0IgxyZXN0Q29udHJhY3QiEWRhdGFQdXRBY3Rpb25JbmZvIg1pbkFtdEFzc2V0QW10Ig9pblByaWNlQXNzZXRBbXQiCG91dExwQW10IgVwcmljZSIKc2xpcEJ5VXNlciIMc2xpcHBhZ2VSZWFsIgh0eEhlaWdodCILdHhUaW1lc3RhbXAiDHNsaXBhZ2VBbUFtdCIMc2xpcGFnZVByQW10IhFkYXRhR2V0QWN0aW9uSW5mbyIOb3V0QW10QXNzZXRBbXQiEG91dFByaWNlQXNzZXRBbXQiB2luTHBBbXQiDWdldEFjY0JhbGFuY2UiB2Fzc2V0SWQiBGNwYmkiCHByQW10WDE4IghhbUFtdFgxOCIDdmFkIgJBMSICQTIiCHNsaXBwYWdlIgRkaWZmIgRwYXNzIgJ2ZCICRDEiAkQwIgRzbHBnIgRmYWlsIgNwY3AiCmFtQXNzZXREY20iCnByQXNzZXREY20iBWFtQW10IgVwckFtdCILYW10QXNBbXRYMTgiCnByQXNBbXRYMTgiCmNhbGNQcmljZXMiBWxwQW10IgNjZmciCGFtdEFzRGNtIgdwckFzRGNtIghwcmljZVgxOCIIbHBBbXRYMTgiDWxwUHJJbkFtQXNYMTgiDWxwUHJJblByQXNYMTgiD2NhbGN1bGF0ZVByaWNlcyIBcCIHdGFrZUZlZSIGYW1vdW50IglmZWVBbW91bnQiA2VnbyIGdHhJZDU4IgpwbXRBc3NldElkIghwbXRMcEFtdCILdXNlckFkZHJlc3MiBGxwSWQiBGFtSWQiBHBySWQiBWFtRGNtIgVwckRjbSIDc3RzIgdscEVtaXNzIglhbUJhbGFuY2UiDGFtQmFsYW5jZVgxOCIJcHJCYWxhbmNlIgxwckJhbGFuY2VYMTgiC2N1clByaWNlWDE4IghjdXJQcmljZSILcG10THBBbXRYMTgiCmxwRW1pc3NYMTgiC291dEFtQW10WDE4IgtvdXRQckFtdFgxOCIIb3V0QW1BbXQiCG91dFByQW10IgVzdGF0ZSIDZXBvIgdpbkFtQW10IgZpbkFtSWQiB2luUHJBbXQiBmluUHJJZCIGaXNFdmFsIgZlbWl0THAiCmlzT25lQXNzZXQiEHZhbGlkYXRlU2xpcHBhZ2UiBnBtdEFtdCIFcG10SWQiB2FtSWRTdHIiB3BySWRTdHIiCWluQW1JZFN0ciIJaW5QcklkU3RyIgZhbXREY20iCHByaWNlRGNtIgRscEVtIg9pbkFtQXNzZXRBbXRYMTgiD2luUHJBc3NldEFtdFgxOCIMdXNlclByaWNlWDE4IgFyIgtzbGlwcGFnZVgxOCIPc2xpcHBhZ2VSZWFsWDE4Ig1scEVtaXNzaW9uWDE4IgpwclZpYUFtWDE4IgphbVZpYVByWDE4IgxleHBlY3RlZEFtdHMiEWV4cEFtdEFzc2V0QW10WDE4IhNleHBQcmljZUFzc2V0QW10WDE4IgljYWxjTHBBbXQiDmNhbGNBbUFzc2V0UG10Ig5jYWxjUHJBc3NldFBtdCIMc2xpcHBhZ2VDYWxjIgllbWl0THBBbXQiBmFtRGlmZiIGcHJEaWZmIg0kdDAxNzQ0NjE3NzkxIgp3cml0ZUFtQW10Igp3cml0ZVByQW10Igtjb21tb25TdGF0ZSIDbW9hIgVvcmRlciIHYW10QXNJZCIGcHJBc0lkIg9hY2NBbXRBc0JhbGFuY2UiDmFjY1ByQXNCYWxhbmNlIgpvckFtdEFzc2V0IgpvckFtdEFzU3RyIglvclByQXNzZXQiCW9yUHJBc1N0ciIKb3JkZXJQcmljZSIOY2FzdE9yZGVyUHJpY2UiEWlzT3JkZXJQcmljZVZhbGlkIgJjZyIBaSIDcG10IgJjcCIGY2FsbGVyIgdhbUFzUG10IgdwckFzUG10IgRnZXREIgJ4cCIBbiIDeHAwIgN4cDEiCmFQcmVjaXNpb24iAWEiAXMiA2FubiILeHAwX3hwMV9uX24iEGFubl9zX2FQcmVjaXNpb24iDmFubl9hUHJlY2lzaW9uIgJuMSIEY2FsYyIDYWNjIgNjdXIiDSR0MDIyMzQzMjIzNjMiAWQiBWZvdW5kIgJkcCIFZE5leHQiBWREaWZmIgNhcnIiDSR0MDIyNzg0MjI4MzEiAiRsIgIkcyIFJGFjYzAiBSRmMF8xIgIkYSICJGkiBSRmMF8yIgVnZXRZRCIBRCIBeCIBYyIBYiINJHQwMjMzMzEyMzM1MSIBeSIFeU5leHQiBXlEaWZmIg0kdDAyMzY1ODIzNzA1Ig1jYWxjUHV0T25lVGtuIglwbXRBbXRSYXciD2xwQXNzZXRFbWlzc2lvbiINY2hlY2hFbWlzc2lvbiINJHQwMjQ0NjQyNDkyNiIMYW1CYWxhbmNlT2xkIgxwckJhbGFuY2VPbGQiDSR0MDI0OTMyMjUxMDgiC2FtQW1vdW50UmF3IgtwckFtb3VudFJhdyIIYW1BbW91bnQiCHByQW1vdW50IgxhbUJhbGFuY2VOZXciDHByQmFsYW5jZU5ldyIGY2hlY2tEIghscEFtb3VudCIOcG9vbFByb3BvcnRpb24iD2Ftb3VudEFzc2V0UGFydCIOcHJpY2VBc3NldFBhcnQiCWxwQW10Qm90aCIFYm9udXMiE2dldE9uZVRrblYySW50ZXJuYWwiCm91dEFzc2V0SWQiDG1pbk91dEFtb3VudCIIcGF5bWVudHMiDG9yaWdpbkNhbGxlciINdHJhbnNhY3Rpb25JZCIKYW1EZWNpbWFscyIKcHJEZWNpbWFscyIKcG9vbFN0YXR1cyINJHQwMjcyMzYyNzM0NCIBQCIIdG90YWxHZXQiC3RvdGFsQW1vdW50Ig0kdDAyNzUzMTI3ODM4IgVvdXRBbSIFb3V0UHIiCGN1clByWDE4IgVjdXJQciIRb3V0QXNzZXRJZE9yV2F2ZXMiEHNlbmRGZWVUb01hdGNoZXIiBGJ1cm4iAW0iAnBtIgJwZCICbW0iAnBrIhdwZW5kaW5nTWFuYWdlclB1YmxpY0tleSICY20iA2hwbSIDY3BtIgRzbGlwIglhdXRvU3Rha2UiB2ZhY3RDZmciC3N0YWtpbmdDbnRyIghzbGlwQ250ciIBZSIJbHBBc3NldElkIgJlbCIGbGVnYWN5IgJzYSICc3AiCGxwVHJuc2ZyIgJzcyIgaXNQb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWQiDWlzUHV0RGlzYWJsZWQiBmNoZWNrcyINJHQwMzMwMjQzMzE0OSIHZXN0aW1MUCIHbWF4U2xwZyIGZXN0UHV0IglvdXRBbXRBbXQiDWlzR2V0RGlzYWJsZWQiDSR0MDM1NzM1MzU4OTAiDWxwQXNzZXRBbW91bnQiCmxwRW1pc3Npb24iBWluZGV4IgRuZXdZIgJkeSILdG90YWxHZXRSYXciDSR0MDM2NjgwMzY3MjkiDSR0MDM3MDc0MzcxODkiDnN1bU9mR2V0QXNzZXRzIhJub0xlc3NUaGVuQW10QXNzZXQiFG5vTGVzc1RoZW5QcmljZUFzc2V0IhRidXJuTFBBc3NldE9uRmFjdG9yeSINY2hlY2tQYXltZW50cyIKZmFjdG9yeUNmZyIHc3Rha2luZyIKdW5zdGFrZUludiIBdiIFYnVybkEiDXVuc3Rha2VBbW91bnQiDSR0MDM5OTIxNDAxMDkiEHBheW1lbnRBbW91bnRSYXciDnBheW1lbnRBc3NldElkIg0kdDA0MDM2ODQwNDY1IghhbXRBc1N0ciIHcHJBc1N0ciIBayICcHIiDHJlc1NjYWxlTXVsdCIHdXNyQWRkciIHcG10QXNJZCICdHgiBnZlcmlmeSIPdGFyZ2V0UHVibGljS2V5IgptYXRjaGVyUHViIgpvcmRlclZhbGlkIgtzZW5kZXJWYWxpZCIMbWF0Y2hlclZhbGlkIgduZXdIYXNoIgthbGxvd2VkSGFzaCILY3VycmVudEhhc2hsAAFhAIDC1y8AAWIJALYCAQCAwtcvAAFjCQC2AgEAgICQu7rWrfANAAFkCQC2AgEAAAABZQkAtgIBAAAAAWYJALYCAQABAAFnCQC2AgEAAgABaAkAtgIBCQBlAgUBYQkAaQIJAGgCBQFhAAEFAWEAAWkCBVdBVkVTAAFqAgMxMDAAAWsCATEAAWwCAl9fAAFtAgAAAW4AAQABbwACAAFwAAMAAXEABAABcgABAAFzAAIAAXQAAwABdQAEAAF2AAUAAXcABgABeAAHAAF5AAgAAXoACQABQQABAAFCAAYAAUMABwABRAAKAAFFCQBrAwAFBQFhAJBOAQFGAgFHAUgJALwCAwkAtgIBBQFHBQFjCQC2AgEFAUgBAUkCAUoBSwkAoAMBCQC8AgMFAUoJALYCAQUBSwUBYwEBTAMBTQFOAU8JAGsDBQFNBQFOBQFPAQFQAQFKAwkAvwICBQFkBQFKCQC+AgEFAUoFAUoBAVEBAUoDCQC/AgIFAWQFAUoJAL4CAQUBSgUBSgEBUgACEyVzX19mYWN0b3J5Q29udHJhY3QBAVMAAhQlc19fbWFuYWdlclB1YmxpY0tleQEBVAACGyVzX19wZW5kaW5nTWFuYWdlclB1YmxpY0tleQEBVQACESVzJXNfX3ByaWNlX19sYXN0AQFWAgFXAVgJALkJAgkAzAgCAhglcyVzJWQlZF9fcHJpY2VfX2hpc3RvcnkJAMwIAgkApAMBBQFXCQDMCAIJAKQDAQUBWAUDbmlsBQFsAQFZAgFaAmFhCQCsAgIJAKwCAgkArAICAgslcyVzJXNfX1BfXwUBWgICX18FAmFhAQJhYgIBWgJhYQkArAICCQCsAgIJAKwCAgILJXMlcyVzX19HX18FAVoCAl9fBQJhYQECYWMAAg8lc19fYW1vdW50QXNzZXQBAmFkAAIOJXNfX3ByaWNlQXNzZXQBAmFlAAIHJXNfX2FtcAECYWYAAg0lc19fYWRkb25BZGRyAAJhZwIHJXNfX2ZlZQACYWgJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUCYWcFAUUBAmFpAAIRJXNfX2ZhY3RvcnlDb25maWcBAmFqAAIYJXMlc19fbWF0Y2hlcl9fcHVibGljS2V5AQJhawICYWwCYW0JAKwCAgkArAICCQCsAgIJAKwCAgIIJWQlZCVzX18FAmFsAgJfXwUCYW0CCF9fY29uZmlnAQJhbgECYW8JAKwCAgIoJXMlcyVzX19tYXBwaW5nc19fYmFzZUFzc2V0MmludGVybmFsSWRfXwUCYW8BAmFwAAIMJXNfX3NodXRkb3duAQJhcQACHSVzX19hbGxvd2VkTHBTdGFibGVTY3JpcHRIYXNoAQJhcgACFyVzX19mZWVDb2xsZWN0b3JBZGRyZXNzAQJhcwMCYXQCYXUCYXYJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIRRmFpbGVkOiBvcmRWYWxpZD0JAKUDAQUCYXQCCyBzbmRyVmFsaWQ9CQClAwEFAmF1AgwgbXRjaHJWYWxpZD0JAKUDAQUCYXYBAmF3AQFKBAJheAUBSgMJAAECBQJheAIGU3RyaW5nBAJheQUCYXgFAmF5CQACAQITZmFpbCBjYXN0IHRvIFN0cmluZwECYXoCAmFBAmFCCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUCYUEFAmFCCQC5CQIJAMwIAgIKbWFuZGF0b3J5IAkAzAgCCQClCAEFAmFBCQDMCAICAS4JAMwIAgUCYUIJAMwIAgIMIG5vdCBkZWZpbmVkBQNuaWwCAAECYUMCAmFBAmFCCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUCYUEFAmFCCQC5CQIJAMwIAgIKbWFuZGF0b3J5IAkAzAgCCQClCAEFAmFBCQDMCAICAS4JAMwIAgUCYUIJAMwIAgIMIG5vdCBkZWZpbmVkBQNuaWwCAAECYUQBAmFFCQACAQkAuQkCCQDMCAICD2xwX3N0YWJsZS5yaWRlOgkAzAgCBQJhRQUDbmlsAgEgAAJhRgkBEUBleHRyTmF0aXZlKDEwNjIpAQkBAmF6AgUEdGhpcwkBAVIAAAJhRwkBAmF6AgUEdGhpcwkBAmFlAAECYUgACQELdmFsdWVPckVsc2UCCQCbCAIFAmFGCQECYXAABwECYUkACQDZBAEJAQJhegIFAmFGCQECYWoAAAJhSgkBEUBleHRyTmF0aXZlKDEwNjIpAQkBAmF6AgUCYUYJAQJhcgABAmFLAAQCYUwJAQJhegIFBHRoaXMJAQJhYwAEAmFNCQECYXoCBQR0aGlzCQECYWQABAJhTgkBAmFDAgUCYUYJAQJhbgEFAmFNBAJhbAkBAmFDAgUCYUYJAQJhbgEFAmFMCQC1CQIJAQJhegIFAmFGCQECYWsCCQCkAwEFAmFsCQCkAwEFAmFOBQFsAQJhTwECYVADCQAAAgUCYVAFAWkFBHVuaXQJANkEAQUCYVABAmFRAQJhUAMJAAACBQJhUAUEdW5pdAUBaQkA2AQBCQEFdmFsdWUBBQJhUAECYVIBAmFTCQCZCgcJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAJEDAgUCYVMFAXIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJhUwUBcwkA2QQBCQCRAwIFAmFTBQF0CQECYU8BCQCRAwIFAmFTBQF1CQECYU8BCQCRAwIFAmFTBQF2CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYVMFAXcJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJhUwUBeAACYVQJAQJhUgEJAQJhSwAAAmFVBQJhVAACYVYIBQJhVQJfMQACYVcIBQJhVQJfMgACYVgIBQJhVQJfMwACYVkIBQJhVQJfNAACYVoIBQJhVQJfNQACYmEIBQJhVQJfNgACYmIIBQJhVQJfNwECYmMACQC1CQIJAQJhegIFAmFGCQECYWkABQFsAAJiZAkBAmJjAAACYmUJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmJkBQFBAiBJbnZhbGlkIHN0YWtpbmcgY29udHJhY3QgYWRkcmVzcwACYmYJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmJkBQFDAiBJbnZhbGlkIHNsaXBhZ2UgY29udHJhY3QgYWRkcmVzcwACYmcJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmJkBQFEAhxJbnZhbGlkIGd3eCBjb250cmFjdCBhZGRyZXNzAAJiaAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCYmQFAUICHEludmFsaWQgZ3d4IGNvbnRyYWN0IGFkZHJlc3MBAmJpCgJiagJiawJibAJibQJibgJibwJicAJicQJicgJicwkAuQkCCQDMCAICFCVkJWQlZCVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCYmoJAMwIAgkApAMBBQJiawkAzAgCCQCkAwEFAmJsCQDMCAIJAKQDAQUCYm0JAMwIAgkApAMBBQJibgkAzAgCCQCkAwEFAmJvCQDMCAIJAKQDAQUCYnAJAMwIAgkApAMBBQJicQkAzAgCCQCkAwEFAmJyCQDMCAIJAKQDAQUCYnMFA25pbAUBbAECYnQGAmJ1AmJ2AmJ3AmJtAmJwAmJxCQC5CQIJAMwIAgIMJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCYnUJAMwIAgkApAMBBQJidgkAzAgCCQCkAwEFAmJ3CQDMCAIJAKQDAQUCYm0JAMwIAgkApAMBBQJicAkAzAgCCQCkAwEFAmJxBQNuaWwFAWwBAmJ4AQJieQMJAAACBQJieQIFV0FWRVMICQDvBwEFBHRoaXMJYXZhaWxhYmxlCQDwBwIFBHRoaXMJANkEAQUCYnkBAmJ6AgJiQQJiQgkAvAIDBQJiQQUBYwUCYkIBAmJDAwJiRAJiRQJiRgQCYkcJALwCAwkAuAICBQJiRAUCYkUFAWIFAmJFBAJiSAkAvwICCQC4AgIFAmJGCQEBUAEFAmJHBQFkAwkBASEBBQJiSAkAAgEJAKwCAgIKQmlnIHNscGc6IAkApgMBBQJiRwkAlAoCBQJiSAkAmQMBCQDMCAIFAmJECQDMCAIFAmJFBQNuaWwBAmJJAwJiSgJiSwJiTAQCYkcJALwCAwUCYksFAWIFAmJKBAJiTQkAvwICBQJiTAUCYkcDAwUCYk0GCQC/AgIFAmJLBQJiSgkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKYDAQUCYksCASAJAKYDAQUCYkoCASAJAKYDAQUCYkcCASAJAKYDAQUCYkwFAmJNAQJiTgQCYk8CYlACYlECYlIEAmJTCQEBRgIFAmJRBQJiTwQCYlQJAQFGAgUCYlIFAmJQCQECYnoCBQJiVAUCYlMBAmJVAwJiUQJiUgJiVgQCYlcJAQJhSwAEAmJYCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYlcFAXcEAmJZCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYlcFAXgEAmJaCQECYk4EBQJiWAUCYlkFAmJRBQJiUgQCYkIJAQFGAgUCYlEFAmJYBAJiQQkBAUYCBQJiUgUCYlkEAmNhCQEBRgIFAmJWBQFhBAJjYgkBAmJ6AgUCYkIFAmNhBAJjYwkBAmJ6AgUCYkEFAmNhCQDMCAIFAmJaCQDMCAIFAmNiCQDMCAIFAmNjBQNuaWwBAmNkAwJiUQJiUgJiVgQCY2UJAQJiVQMFAmJRBQJiUgUCYlYJAMwIAgkBAUkCCQCRAwIFAmNlAAAFAWEJAMwIAgkBAUkCCQCRAwIFAmNlAAEFAWEJAMwIAgkBAUkCCQCRAwIFAmNlAAIFAWEFA25pbAECY2YBAmNnBAJjaAkAawMFAmNnBQJhaAUBYQkAlAoCCQBlAgUCY2cFAmNoBQJjaAECY2kEAmNqAmNrAmNsAmNtBAJiVwkBAmFLAAQCY24JAJEDAgUCYlcFAXQEAmNvCQCRAwIFAmJXBQF1BAJjcAkAkQMCBQJiVwUBdgQCY3EJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiVwUBdwQCY3IJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiVwUBeAQCY3MJAJEDAgUCYlcFAXMEAmN0CAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEJANkEAQUCY24CC1dyb25nIExQIGlkCHF1YW50aXR5AwkBAiE9AgUCY24FAmNrCQACAQIPV3JvbmcgcG10IGFzc2V0BAJjdQkBAmJ4AQUCY28EAmN2CQEBRgIFAmN1BQJjcQQCY3cJAQJieAEFAmNwBAJjeAkBAUYCBQJjdwUCY3IEAmN5CQECYnoCBQJjeAUCY3YEAmN6CQEBSQIFAmN5BQFhBAJjQQkBAUYCBQJjbAUBYQQCY0IJAQFGAgUCY3QFAWEEAmNDCQC8AgMFAmN2BQJjQQUCY0IEAmNECQC8AgMFAmN4BQJjQQUCY0IEAmNFCQEBSQIFAmNDBQJjcQQCY0YJAQFJAgUCY0QFAmNyBAJjRwMJAAACBQJjagIABQNuaWwJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCY20FAmNFAwkAAAIFAmNvAgVXQVZFUwUEdW5pdAkA2QQBBQJjbwkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJjbQUCY0YDCQAAAgUCY3ACBVdBVkVTBQR1bml0CQDZBAEFAmNwCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhYgIJAKUIAQUCY20FAmNqCQECYnQGBQJjRQUCY0YFAmNsBQJjegUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVUABQJjegkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVYCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJjegUDbmlsCQCcCgoFAmNFBQJjRgUCY28FAmNwBQJjdQUCY3cFAmN0BQJjeQUCY3MFAmNHAQJjSA0CY2oCYkYCY0kCY0oCY0sCY0wCY20CY00CY04CY08CY1ACY1ECY1IEAmJXCQECYUsABAJjbgkA2QQBCQCRAwIFAmJXBQF0BAJjUwkAkQMCBQJiVwUBdQQCY1QJAJEDAgUCYlcFAXYEAmNVCQCRAwIFAmJXBQF5BAJjVgkAkQMCBQJiVwUBegQCY1cJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiVwUBdwQCY1gJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiVwUBeAQCY3MJAJEDAgUCYlcFAXMEAmNZCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFAmNuAghXciBscCBhcwhxdWFudGl0eQQCY3UDBQJjTQkBAmJ4AQUCY1MDAwUCY08JAAACBQJjUgUCY1MHCQBlAgkBAmJ4AQUCY1MFAmNRAwUCY08JAQJieAEFAmNTCQBlAgkBAmJ4AQUCY1MFAmNJBAJjdwMFAmNNCQECYngBBQJjVAMDBQJjTwkAAAIFAmNSBQJjVAcJAGUCCQECYngBBQJjVAUCY1EDBQJjTwkBAmJ4AQUCY1QJAGUCCQECYngBBQJjVAUCY0sEAmNaCQEBRgIFAmNJBQJjVwQCZGEJAQFGAgUCY0sFAmNYBAJkYgkBAmJ6AgUCZGEFAmNaBAJjdgkBAUYCBQJjdQUCY1cEAmN4CQEBRgIFAmN3BQJjWAQCZGMDCQAAAgUCY1kAAAQCY3kFAWQEAmRkBQFkBAJjYQkAdgYJALkCAgUCY1oFAmRhAAAJALYCAQAFAAEAAAUERE9XTgkAlwoFCQEBSQIFAmNhBQFhCQEBSQIFAmNaBQJjVwkBAUkCBQJkYQUCY1gJAQJiegIJALcCAgUCY3gFAmRhCQC3AgIFAmN2BQJjWgUCZGQEAmN5CQECYnoCBQJjeAUCY3YEAmRlCQC8AgMJAQFQAQkAuAICBQJjeQUCZGIFAWMFAmN5BAJkZAkBAUYCBQJiRgUBYQMDAwUCY1AJAQIhPQIFAmN5BQFkBwkAvwICBQJkZQUCZGQHCQACAQkArAICCQCsAgIJAKwCAgIPUHJpY2Ugc2xpcHBhZ2UgCQCmAwEFAmRlAgMgPiAJAKYDAQUCZGQEAmRmCQEBRgIFAmNZBQFhBAJkZwkAvAIDBQJjWgUCY3kFAWMEAmRoCQC8AgMFAmRhBQFjBQJjeQQCZGkDCQC/AgIFAmRnBQJkYQkAlAoCBQJkaAUCZGEJAJQKAgUCY1oFAmRnBAJkaggFAmRpAl8xBAJkawgFAmRpAl8yBAJjYQkAvAIDBQJkZgUCZGsFAmN4CQCXCgUJAQFJAgUCY2EFAWEJAQFJAgUCZGoFAmNXCQEBSQIFAmRrBQJjWAUCY3kFAmRkBAJkbAgFAmRjAl8xBAJkbQgFAmRjAl8yBAJkbggFAmRjAl8zBAJjegkBAUkCCAUCZGMCXzQFAWEEAmRvCQEBSQIIBQJkYwJfNQUBYQMJAGcCAAAFAmRsCQACAQIHTFAgPD0gMAQCZHADCQEBIQEFAmNOAAAFAmRsBAJkcQkAZQIFAmNJBQJkbQQCZHIJAGUCBQJjSwUCZG4EAmRzAwMFAmNPCQAAAgUCY1IFAmNTBwkAlAoCBQJjUQAAAwMFAmNPCQAAAgUCY1IFAmNUBwkAlAoCAAAFAmNRCQCUCgIFAmRtBQJkbgQCZHQIBQJkcwJfMQQCZHUIBQJkcwJfMgQCZHYJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFVAAUCY3oJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFWAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCY3oJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVkCBQJjbQUCY2oJAQJiaQoFAmR0BQJkdQUCZHAFAmN6BQJiRgUCZG8FBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmRxBQJkcgUDbmlsCQCfCg0FAmRsBQJkcAUCY3oFAmN1BQJjdwUCY1kFAmNuBQJjcwUCZHYFAmRxBQJkcgUCY0oFAmNMAQJkdwECZHgEAmJXCQECYUsABAJkeQkAkQMCBQJiVwUBdQQCZHoJAJEDAgUCYlcFAXYEAmNzCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYlcFAXMEAmJYCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYlcFAXcEAmJZCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYlcFAXgEAmRBCQECYngBBQJkeQQCZEIJAQJieAEFAmR6BAJjeQMJAAACCAUCZHgJb3JkZXJUeXBlBQNCdXkJAQJiTgQFAmJYBQJiWQkAZAIFAmRBCAUCZHgGYW1vdW50BQJkQgkBAmJOBAUCYlgFAmJZCQBlAgUCZEEIBQJkeAZhbW91bnQFAmRCBAJjegkBAUkCBQJjeQUBYQMDAwkBAmFIAAYJAAACBQJjcwUBcAYJAAACBQJjcwUBcQkAAgECDUFkbWluIGJsb2NrZWQEAmRDCAgFAmR4CWFzc2V0UGFpcgthbW91bnRBc3NldAQCZEQDCQAAAgUCZEMFBHVuaXQCBVdBVkVTCQDYBAEJAQV2YWx1ZQEFAmRDBAJkRQgIBQJkeAlhc3NldFBhaXIKcHJpY2VBc3NldAQCZEYDCQAAAgUCZEUFBHVuaXQCBVdBVkVTCQDYBAEJAQV2YWx1ZQEFAmRFAwMJAQIhPQIFAmREBQJkeQYJAQIhPQIFAmRGBQJkegkAAgECCVdyIGFzc2V0cwQCZEcIBQJkeAVwcmljZQQCY1gJAGsDBQFhBQJiWQUCYlgEAmRICQEBTAMFAmRHBQFhBQJjWAQCZEkDCQAAAggFAmR4CW9yZGVyVHlwZQUDQnV5CQBnAgUCY3oFAmRICQBnAgUCZEgFAmN6BgECZEoBAmRLAwkBAiE9AgkAkAMBCAUCZEsIcGF5bWVudHMAAQkAAgECCjEgcG1udCBleHAEAmRMCQEFdmFsdWUBCQCRAwIIBQJkSwhwYXltZW50cwAABAJjawkBBXZhbHVlAQgFAmRMB2Fzc2V0SWQEAmNRCAUCZEwGYW1vdW50BAJkYwkBAmNpBAkA2AQBCAUCZEsNdHJhbnNhY3Rpb25JZAkA2AQBBQJjawUCY1EIBQJkSwZjYWxsZXIEAmNFCAUCZGMCXzEEAmNGCAUCZGMCXzIEAmNzCQENcGFyc2VJbnRWYWx1ZQEIBQJkYwJfOQQCY0cIBQJkYwNfMTADAwkBAmFIAAYJAAACBQJjcwUBcQkAAgEJAKwCAgIPQWRtaW4gYmxvY2tlZDogCQCkAwEFAmNzCQCXCgUFAmNFBQJjRgUCY1EFAmNrBQJjRwECZE0KAmROAmFhAmRPAmRQAmJGAmNOAmNPAmNQAmNRAmNSBAJkYwkBAmNIDQUCYWEFAmJGCAkBBXZhbHVlAQUCZE8GYW1vdW50CAkBBXZhbHVlAQUCZE8HYXNzZXRJZAgJAQV2YWx1ZQEFAmRQBmFtb3VudAgJAQV2YWx1ZQEFAmRQB2Fzc2V0SWQFAmROCQAAAgUCYWECAAUCY04FAmNPBQJjUAUCY1EFAmNSBAJjcwkBDXBhcnNlSW50VmFsdWUBCAUCZGMCXzgDAwMJAQJhSAAGCQAAAgUCY3MFAW8GCQAAAgUCY3MFAXEJAAIBCQCsAgICCEJsb2NrZWQ6CQCkAwEFAmNzBQJkYwECZFEBAmRSBAJkUwUBZwQCZFQJAJEDAgUCZFIAAAQCZFUJAJEDAgUCZFIAAQQCZFYJAKcDAQUBagQCZFcJALkCAgkApwMBBQJhRwUCZFYEAmRYCQC3AgIFAmRUBQJkVQMJAAACBQJkWAUBZQUBZQQCZFkJALkCAgUCZFcFAmRTBAJkWgkAuQICCQC5AgIJALkCAgUCZFQFAmRVBQJkUwUCZFMEAmVhCQC6AgIJALkCAgUCZFkFAmRYBQJkVgQCZWIJALgCAgUCZFkFAmRWBAJlYwkAtwICBQJkUwUBZgoBAmVkAgJlZQJlZgQCZWcFAmVlBAJlaAgFAmVnAl8xBAJlaQgFAmVnAl8yAwkBAiE9AgUCZWkFBHVuaXQFAmVlBAJlagkAugICCQC5AgIJALkCAgUCZWgFAmVoBQJlaAUCZFoEAmVrCQC6AgIJALkCAgkAtwICBQJlYQkAuQICBQJlagUCZFMFAmVoCQC3AgIJALoCAgkAuQICBQJlYgUCZWgFAmRWCQC5AgIFAmVjBQJlagQCZWwJAQFRAQkAuAICBQJlawkBBXZhbHVlAQUCZWgDCQDAAgIFAWYFAmVsCQCUCgIFAmVrBQJlZgkAlAoCBQJlawUEdW5pdAQCZW0JAMwIAgAACQDMCAIAAQkAzAgCAAIJAMwIAgADCQDMCAIABAkAzAgCAAUJAMwIAgAGCQDMCAIABwkAzAgCAAgJAMwIAgAJCQDMCAIACgkAzAgCAAsJAMwIAgAMCQDMCAIADQkAzAgCAA4FA25pbAQCZW4KAAJlbwUCZW0KAAJlcAkAkAMBBQJlbwoAAmVxCQCUCgIFAmRYBQR1bml0CgECZXICAmVzAmV0AwkAZwIFAmV0BQJlcAUCZXMJAQJlZAIFAmVzCQCRAwIFAmVvBQJldAoBAmV1AgJlcwJldAMJAGcCBQJldAUCZXAFAmVzCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTUJAQJldQIJAQJlcgIJAQJlcgIJAQJlcgIJAQJlcgIJAQJlcgIJAQJlcgIJAQJlcgIJAQJlcgIJAQJlcgIJAQJlcgIJAQJlcgIJAQJlcgIJAQJlcgIJAQJlcgIJAQJlcgIFAmVxAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8EAmVoCAUCZW4CXzEEAmVpCAUCZW4CXzIDCQECIT0CBQJlaQUEdW5pdAUCZWgJAAIBCQCsAgICGUQgY2FsY3VsYXRpb24gZXJyb3IsIEQgPSAJAKYDAQUCZWgBAmV2AwJkUgJkSwJldwQCZFMFAWcEAmV4CQCRAwIFAmRSAwkAAAIFAmRLAAAAAQAABAJkVgkApwMBBQFqBAJkVwkAuQICCQCnAwEFAmFHBQJkVgQCZFgFAmV4BAJkWQkAuQICBQJkVwUCZFMEAmV5CQC6AgIJALkCAgkAuQICCQC6AgIJALkCAgUCZXcFAmV3CQC5AgIFAmV4BQJkUwUCZXcFAmRWCQC5AgIFAmRZBQJkUwQCZXoJALgCAgkAtwICBQJkWAkAugICCQC5AgIFAmV3BQJkVgUCZFkFAmV3CgECZWQCAmVlAmVmBAJlQQUCZWUEAmVCCAUCZUECXzEEAmVpCAUCZUECXzIDCQECIT0CBQJlaQUEdW5pdAUCZWUEAmVDCQC6AgIJALcCAgkAuQICBQJlQgUCZUIFAmV5CQC3AgIJALkCAgUBZwUCZUIFAmV6BAJlRAkBAVEBCQC4AgIFAmVDCQEFdmFsdWUBBQJlQgMJAMACAgUBZgUCZUQJAJQKAgUCZUMFAmVmCQCUCgIFAmVDBQR1bml0BAJlbQkAzAgCAAAJAMwIAgABCQDMCAIAAgkAzAgCAAMJAMwIAgAECQDMCAIABQkAzAgCAAYJAMwIAgAHCQDMCAIACAkAzAgCAAkJAMwIAgAKCQDMCAIACwkAzAgCAAwJAMwIAgANCQDMCAIADgUDbmlsBAJlRQoAAmVvBQJlbQoAAmVwCQCQAwEFAmVvCgACZXEJAJQKAgUCZXcFBHVuaXQKAQJlcgICZXMCZXQDCQBnAgUCZXQFAmVwBQJlcwkBAmVkAgUCZXMJAJEDAgUCZW8FAmV0CgECZXUCAmVzAmV0AwkAZwIFAmV0BQJlcAUCZXMJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxNQkBAmV1AgkBAmVyAgkBAmVyAgkBAmVyAgkBAmVyAgkBAmVyAgkBAmVyAgkBAmVyAgkBAmVyAgkBAmVyAgkBAmVyAgkBAmVyAgkBAmVyAgkBAmVyAgkBAmVyAgkBAmVyAgUCZXEAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwQCZUIIBQJlRQJfMQQCZWkIBQJlRQJfMgMJAQIhPQIFAmVpBQR1bml0BQJlQgkAAgEJAKwCAgIZWSBjYWxjdWxhdGlvbiBlcnJvciwgWSA9IAkApgMBBQJlQgECZUYEAmVHAmNrAmNtAmFhBAJhUwkBAmFLAAQCY28JAJEDAgUCYVMFAXUEAmNwCQCRAwIFAmFTBQF2BAJjbgkAkQMCBQJhUwUBdAQCY1cJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJhUwUBdwQCY1gJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJhUwUBeAQCZUgJALYCAQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBCQDZBAEFAmNuAhBpbnZhbGlkIGxwIGFzc2V0CHF1YW50aXR5BAJlSQMJAL8CAgUCZUgFAWUGCQACAQIiaW5pdGlhbCBkZXBvc2l0IHJlcXVpcmVzIGFsbCBjb2lucwMJAAACBQJlSQUCZUkEAmN1CQECYngBBQJjbwQCY3cJAQJieAEFAmNwBAJlSgMJAAACBQJhYQIACQCUCgIFAmN1BQJjdwMJAAACBQJjawUCY28DCQBmAgUCZUcFAmN1CQACAQIWaW52YWxpZCBwYXltZW50IGFtb3VudAkAlAoCCQBlAgUCY3UFAmVHBQJjdwMJAAACBQJjawUCY3ADCQBmAgUCZUcFAmN3CQACAQIWaW52YWxpZCBwYXltZW50IGFtb3VudAkAlAoCBQJjdQkAZQIFAmN3BQJlRwkAAgECEHdyb25nIHBtdEFzc2V0SWQEAmVLCAUCZUoCXzEEAmVMCAUCZUoCXzIEAmVNAwkAAAIFAmNrBQJjbwkAlAoCBQJlRwAAAwkAAAIFAmNrBQJjcAkAlAoCAAAFAmVHCQACAQIPaW52YWxpZCBwYXltZW50BAJlTggFAmVNAl8xBAJlTwgFAmVNAl8yBAJlUAgJAQJjZgEFAmVOAl8xBAJlUQgJAQJjZgEFAmVPAl8xBAJjaAgJAQJjZgEFAmVHAl8yBAJlUgkAZAIFAmVLBQJlUAQCZVMJAGQCBQJlTAUCZVEEAmJLCQECZFEBCQDMCAIJALYCAQUCZUsJAMwIAgkAtgIBBQJlTAUDbmlsBAJiSgkBAmRRAQkAzAgCCQC2AgEFAmVSCQDMCAIJALYCAQUCZVMFA25pbAQCZVQDCQC/AgIFAmJKBQJiSwYJAQV0aHJvdwADCQAAAgUCZVQFAmVUBAJlVQkAvAIDBQJlSAkAuAICBQJiSgUCYksFAmJLBAJjegkBAUkCCQECYnoCCQEBRgIFAmVTBQJjWAkBAUYCBQJlUgUCY1cFAWEEAmR2CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVQAFAmN6CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVgIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmN6CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFZAgUCY20FAmFhCQECYmkKBQJlTgUCZU8JAKADAQUCZVUFAmN6AAAAAAUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAAAAAAFA25pbAQCZVYJAGsDBQJlTAUBYQUCZUsEAmVXCQBrAwUCZUcFAWEJAGQCBQJlVgUBYQQCZVgJAGUCBQJlRwUCZVcEAmVZCQC8AgMFAmVICQC2AgEFAmVYCQC2AgEFAmVMBAJlWgkAoAMBCQC8AgMJALgCAgUCZVUFAmVZBQFiBQJlWQkAlgoECQCgAwEFAmVVBQJkdgUCY2gFAmVaCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJmYQYCZmICZmMCZmQCZE4CZmUCZmYEAmFTCQECYUsABAJjbgkAkQMCBQJhUwUBdAQCY28JAJEDAgUCYVMFAXUEAmNwCQCRAwIFAmFTBQF2BAJmZwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmFTBQF3BAJmaAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmFTBQF4BAJmaQkAkQMCBQJhUwUBcwQCY20DCQAAAgUCZE4FAmJoBQJmZQUCZE4EAmRMCQEFdmFsdWUBCQCRAwIFAmZkAAAEAmNrCQEFdmFsdWUBCAUCZEwHYXNzZXRJZAQCY1EIBQJkTAZhbW91bnQEAmNqCQDYBAEFAmZmAwkBAiE9AgUCY24JANgEAQUCY2sJAAIBAghXcm9uZyBMUAQCY3UJAQJieAEFAmNvBAJjdwkBAmJ4AQUCY3AEAmZqCgACZmsJAPwHBAUEdGhpcwITZ2V0T25lVGtuVjJSRUFET05MWQkAzAgCBQJmYgkAzAgCBQJjUQUDbmlsBQNuaWwDCQABAgUCZmsCCihJbnQsIEludCkFAmZrCQACAQkArAICCQADAQUCZmsCHyBjb3VsZG4ndCBiZSBjYXN0IHRvIChJbnQsIEludCkEAmZsCAUCZmoCXzEEAmNoCAUCZmoCXzIEAmZtAwMJAGYCBQJmYwAACQBmAgUCZmMFAmZsBwkAAgEJALkJAgkAzAgCAh9hbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZmMFA25pbAIABQJmbAQCZm4DCQAAAgUCZmIFAmNvCQCWCgQFAmZtAAAJAGUCCQBlAgUCY3UFAmZtBQJjaAUCY3cDCQAAAgUCZmIFAmNwCQCWCgQAAAUCZm0FAmN1CQBlAgkAZQIFAmN3BQJmbQUCY2gJAAIBAhRpbnZhbGlkIG91dCBhc3NldCBpZAQCZm8IBQJmbgJfMQQCZnAIBQJmbgJfMgQCZVIIBQJmbgJfMwQCZVMIBQJmbgJfNAQCZnEJAQJiegIJAQFGAgUCZVMFAmZoCQEBRgIFAmVSBQJmZwQCZnIJAQFJAgUCZnEFAWEEAmZzAwkAAAIFAmZiAgVXQVZFUwUEdW5pdAkA2QQBBQJmYgQCZnQDCQBmAgUCY2gAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJhSgUCY2gFAmZzBQNuaWwFA25pbAQCY0cJAM4IAgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJjbQUCZm0FAmZzCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhYgIJAKUIAQUCY20FAmNqCQECYnQGBQJmbwUCZnAFAmNRBQJmcgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVUABQJmcgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVYCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJmcgUDbmlsBQJmdAMJAAACBQJjRwUCY0cEAmZ1CQD8BwQFAmFGAgRidXJuCQDMCAIFAmNRBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmNrBQJjUQUDbmlsAwkAAAIFAmZ1BQJmdQkAlAoCBQJjRwUCZm0JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmZ2AAQCYXgJAKIIAQkBAVMAAwkAAQIFAmF4AgZTdHJpbmcEAmRYBQJheAkA2QQBBQJkWAMJAAECBQJheAIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAQJmdwAEAmF4CQCiCAEJAQFUAAMJAAECBQJheAIGU3RyaW5nBAJkWAUCYXgJANkEAQUCZFgDCQABAgUCYXgCBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgACZngJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAECZnkBAmRLBAJheAkBAmZ2AAMJAAECBQJheAIKQnl0ZVZlY3RvcgQCZnoFAmF4AwkAAAIIBQJkSw9jYWxsZXJQdWJsaWNLZXkFAmZ6BgUCZngDCQABAgUCYXgCBFVuaXQDCQAAAggFAmRLBmNhbGxlcgUEdGhpcwYFAmZ4CQACAQILTWF0Y2ggZXJyb3IaAmRLAQtjb25zdHJ1Y3RvcgEBUgQCZXkJAQJmeQEFAmRLAwkAAAIFAmV5BQJleQkAzAgCCQELU3RyaW5nRW50cnkCCQEBUgAFAVIFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkSwEKc2V0TWFuYWdlcgECZkEEAmV5CQECZnkBBQJkSwMJAAACBQJleQUCZXkEAmZCCQDZBAEFAmZBAwkAAAIFAmZCBQJmQgkAzAgCCQELU3RyaW5nRW50cnkCCQEBVAAFAmZBBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZEsBDmNvbmZpcm1NYW5hZ2VyAAQCY2UJAQJmdwAEAmZDAwkBCWlzRGVmaW5lZAEFAmNlBgkAAgECEk5vIHBlbmRpbmcgbWFuYWdlcgMJAAACBQJmQwUCZkMEAmZEAwkAAAIIBQJkSw9jYWxsZXJQdWJsaWNLZXkJAQV2YWx1ZQEFAmNlBgkAAgECG1lvdSBhcmUgbm90IHBlbmRpbmcgbWFuYWdlcgMJAAACBQJmRAUCZkQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVMACQDYBAEJAQV2YWx1ZQEFAmNlCQDMCAIJAQtEZWxldGVFbnRyeQEJAQFUAAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRLAQNwdXQCAmZFAmZGBAJmRwkBAmJjAAQCZkgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmZHBQFBAgpXciBzdCBhZGRyBAJmSQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCZkcFAUMCCldyIHNsIGFkZHIDCQBmAgAABQJmRQkAAgECDldyb25nIHNsaXBwYWdlAwkBAiE9AgkAkAMBCAUCZEsIcGF5bWVudHMAAgkAAgECDDIgcG1udHMgZXhwZAQCZkoJAQJkTQoJAKUIAQgFAmRLBmNhbGxlcgkA2AQBCAUCZEsNdHJhbnNhY3Rpb25JZAkBD0F0dGFjaGVkUGF5bWVudAIICQEFdmFsdWUBCQCRAwIIBQJkSwhwYXltZW50cwAAB2Fzc2V0SWQICQEFdmFsdWUBCQCRAwIIBQJkSwhwYXltZW50cwAABmFtb3VudAkAkQMCCAUCZEsIcGF5bWVudHMAAQUCZkUGBwYAAAIABAJkcAgFAmZKAl8yBAJmSwgFAmZKAl83BAJjRwgFAmZKAl85BAJkcQgFAmZKA18xMAQCZHIIBQJmSgNfMTEEAmNvCAUCZkoDXzEyBAJjcAgFAmZKA18xMwQCZGMJAPwHBAUCYUYCBGVtaXQJAMwIAgUCZHAFA25pbAUDbmlsAwkAAAIFAmRjBQJkYwQCZkwEAmF4BQJkYwMJAAECBQJheAIHQWRkcmVzcwQCZk0FAmF4CQD8BwQFAmZNAgRlbWl0CQDMCAIFAmRwBQNuaWwFA25pbAUEdW5pdAMJAAACBQJmTAUCZkwEAmZOAwkAZgIFAmRxAAAJAPwHBAUCZkkCA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJjbwUCZHEFA25pbAUDbmlsAwkAAAIFAmZOBQJmTgQCZk8DCQBmAgUCZHIAAAkA/AcEBQJmSQIDcHV0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmNwBQJkcgUDbmlsBQNuaWwDCQAAAgUCZk8FAmZPBAJmUAMFAmZGBAJmUQkA/AcEBQJmSAIFc3Rha2UFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZksFAmRwBQNuaWwDCQAAAgUCZlEFAmZRBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAmRLBmNhbGxlcgUCZHAFAmZLBQNuaWwJAM4IAgUCY0cFAmZQCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRLAQtwdXRPbmVUa25WMgICZmMCZkYEAmZSCgACZmsJAPwHBAUCYUYCKGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJmawIHQm9vbGVhbgUCZmsJAAIBCQCsAgIJAAMBBQJmawIcIGNvdWxkbid0IGJlIGNhc3QgdG8gQm9vbGVhbgQCZlMDAwMJAQJhSAAGCQAAAgUCYVcFAW8GCQAAAgUCYVcFAXEGBQJmUgQCZlQJAMwIAgMJAQEhAQUCZlMGCQECYUQBAiFwdXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJkSwhwYXltZW50cwABBgkBAmFEAQIeZXhhY3RseSAxIHBheW1lbnQgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZlQFAmZUBAJhUwkBAmFLAAQCY28JAJEDAgUCYVMFAXUEAmNwCQCRAwIFAmFTBQF2BAJjbgkA2QQBCQCRAwIFAmFTBQF0BAJmZwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmFTBQF3BAJmaAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmFTBQF4BAJjbQMJAAACCAUCZEsGY2FsbGVyBQR0aGlzCAUCZEsMb3JpZ2luQ2FsbGVyCAUCZEsGY2FsbGVyBAJkTAkBBXZhbHVlAQkAkQMCCAUCZEsIcGF5bWVudHMAAAQCY2sJANgEAQkBBXZhbHVlAQgFAmRMB2Fzc2V0SWQEAmNRCAUCZEwGYW1vdW50BAJmVQkBAmVGBAUCY1EFAmNrCQClCAEFAmNtCQDYBAEIBQJkSw10cmFuc2FjdGlvbklkBAJmVggFAmZVAl8xBAJjRwgFAmZVAl8yBAJjaAgFAmZVAl8zBAJkcAMDCQBmAgUCZmMAAAkAZgIFAmZjBQJmVgcJAAIBCQC5CQIJAMwIAgIfYW1vdW50IHRvIHJlY2VpdmUgaXMgbGVzcyB0aGFuIAkAzAgCCQCkAwEFAmZjBQNuaWwCAAUCZlYEAmZKCQD8BwQFAmFGAgRlbWl0CQDMCAIFAmRwBQNuaWwFA25pbAMJAAACBQJmSgUCZkoEAmZMBAJheAUCZkoDCQABAgUCYXgCB0FkZHJlc3MEAmZNBQJheAkA/AcEBQJmTQIEZW1pdAkAzAgCBQJkcAUDbmlsBQNuaWwFBHVuaXQDCQAAAgUCZkwFAmZMBAJmUAMFAmZGBAJmUQkA/AcEBQJiZQIFc3Rha2UFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCY24FAmRwBQNuaWwDCQAAAgUCZlEFAmZRBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAmRLBmNhbGxlcgUCZHAFAmNuBQNuaWwEAmZ0AwkAZgIFAmNoAAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYUoFAmNoCQDZBAEFAmNrBQNuaWwFA25pbAkAlAoCCQDOCAIJAM4IAgUCY0cFAmZQBQJmdAUCZHAJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZEsBCnB1dEZvckZyZWUBAmZXAwkAZgIAAAUCZlcJAAIBAgpXcm9uZyBzbHBnAwkBAiE9AgkAkAMBCAUCZEsIcGF5bWVudHMAAgkAAgECDDIgcG1udHMgZXhwZAQCZlgJAQJkTQoJAKUIAQgFAmRLBmNhbGxlcgkA2AQBCAUCZEsNdHJhbnNhY3Rpb25JZAkBD0F0dGFjaGVkUGF5bWVudAIICQEFdmFsdWUBCQCRAwIIBQJkSwhwYXltZW50cwAAB2Fzc2V0SWQICQEFdmFsdWUBCQCRAwIIBQJkSwhwYXltZW50cwAABmFtb3VudAkAkQMCCAUCZEsIcGF5bWVudHMAAQUCZlcHBwYAAAIACAUCZlgCXzkCZEsBA2dldAAEAmRjCQECZEoBBQJkSwQCZlkIBQJkYwJfMQQCY0YIBQJkYwJfMgQCY1EIBQJkYwJfMwQCY2sIBQJkYwJfNAQCY0cIBQJkYwJfNQQCZXoJAPwHBAUCYUYCBGJ1cm4JAMwIAgUCY1EFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCY2sFAmNRBQNuaWwDCQAAAgUCZXoFAmV6BQJjRwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkSwELZ2V0T25lVGtuVjICAmZiAmZjBAJmUgoAAmZrCQD8BwQFAmFGAihpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZFJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCZmsCB0Jvb2xlYW4FAmZrCQACAQkArAICCQADAQUCZmsCHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4EAmZaAwMJAQJhSAAGCQAAAgUCYVcFAXEGBQJmUgQCZlQJAMwIAgMJAQEhAQUCZloGCQECYUQBAiFnZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJkSwhwYXltZW50cwABBgkBAmFEAQIeZXhhY3RseSAxIHBheW1lbnQgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZlQFAmZUBAJnYQkBAmZhBgUCZmIFAmZjCAUCZEsIcGF5bWVudHMIBQJkSwZjYWxsZXIIBQJkSwxvcmlnaW5DYWxsZXIIBQJkSw10cmFuc2FjdGlvbklkBAJjRwgFAmdhAl8xBAJmbQgFAmdhAl8yCQCUCgIFAmNHBQJmbQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkSwETZ2V0T25lVGtuVjJSRUFET05MWQICZmICZ2IEAmFTCQECYUsABAJjbwkAkQMCBQJhUwUBdQQCY3AJAJEDAgUCYVMFAXYEAmNuCQCRAwIFAmFTBQF0BAJkUgkAzAgCCQC2AgEJAQJieAEFAmNvCQDMCAIJALYCAQkBAmJ4AQUCY3AFA25pbAQCZ2MJALYCAQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBCQDZBAEFAmNuAhBpbnZhbGlkIGxwIGFzc2V0CHF1YW50aXR5BAJiSwkBAmRRAQUCZFIEAmJKCQC4AgIFAmJLCQC8AgMJALYCAQUCZ2IFAmJLBQJnYwQCZ2QDCQAAAgUCZmIFAmNvAAADCQAAAgUCZmIFAmNwAAEJAAIBAhRpbnZhbGlkIG91dCBhc3NldCBpZAQCZ2UJAQJldgMFAmRSBQJnZAUCYkoEAmdmCQC4AgIJAJEDAgUCZFIFAmdkBQJnZQQCZ2cJAJYDAQkAzAgCAAAJAMwIAgkAoAMBCQC4AgIFAmdmBQFmBQNuaWwEAmdoCQECY2YBBQJnZwQCZmwIBQJnaAJfMQQCY2gIBQJnaAJfMgkAlAoCBQNuaWwJAJQKAgUCZmwFAmNoAmRLARxnZXRPbmVUa25WMldpdGhCb251c1JFQURPTkxZAgJmYgJnYgQCYVMJAQJhSwAEAmNvCQCRAwIFAmFTBQF1BAJjcAkAkQMCBQJhUwUBdgQCY24JAJEDAgUCYVMFAXQEAmN1CQECYngBBQJjbwQCY3cJAQJieAEFAmNwBAJnaQoAAmZrCQD8BwQFBHRoaXMCE2dldE9uZVRrblYyUkVBRE9OTFkJAMwIAgUCZmIJAMwIAgUCZ2IFA25pbAUDbmlsAwkAAQIFAmZrAgooSW50LCBJbnQpBQJmawkAAgEJAKwCAgkAAwEFAmZrAh8gY291bGRuJ3QgYmUgY2FzdCB0byAoSW50LCBJbnQpBAJmbAgFAmdpAl8xBAJjaAgFAmdpAl8yBAJkYwkBAmNpBAIABQJjbgUCZ2IFBHRoaXMEAmNFCAUCZGMCXzEEAmNGCAUCZGMCXzIEAmdqCQBkAgUCY0UFAmNGBAJlWgMJAAACBQJnagAAAwkAAAIFAmZsAAAAAAkAAgECF2JvbnVzIGNhbGN1bGF0aW9uIGVycm9yCQBrAwkAZQIFAmZsBQJnagUBYQUCZ2oJAJQKAgUDbmlsCQCVCgMFAmZsBQJjaAUCZVoCZEsBCWdldE5vTGVzcwICZ2sCZ2wEAmRjCQECZEoBBQJkSwQCY0UIBQJkYwJfMQQCY0YIBQJkYwJfMgQCY1EIBQJkYwJfMwQCY2sIBQJkYwJfNAQCY0cIBQJkYwJfNQMJAGYCBQJnawUCY0UJAAIBCQCsAgIJAKwCAgkArAICAglGYWlsZWQ6ICAJAKQDAQUCY0UCAyA8IAkApAMBBQJnawMJAGYCBQJnbAUCY0YJAAIBCQCsAgIJAKwCAgkArAICAghGYWlsZWQ6IAkApAMBBQJjRgIDIDwgCQCkAwEFAmdsBAJnbQkA/AcEBQJhRgIEYnVybgkAzAgCBQJjUQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJjawUCY1EFA25pbAMJAAACBQJnbQUCZ20FAmNHCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRLAQ11bnN0YWtlQW5kR2V0AQJjZwQCZ24DCQECIT0CCQCQAwEIBQJkSwhwYXltZW50cwAACQACAQINTm8gcG1udHMgZXhwZAYDCQAAAgUCZ24FAmduBAJiVwkBAmFLAAQCZ28JAQJiYwAEAmZLCQDZBAEJAJEDAgUCYlcFAXQEAmdwCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJnbwUBQQIKV3Igc3QgYWRkcgQCZ3EJAPwHBAUCZ3ACB3Vuc3Rha2UJAMwIAgkA2AQBBQJmSwkAzAgCBQJjZwUDbmlsBQNuaWwDCQAAAgUCZ3EFAmdxBAJkYwkBAmNpBAkA2AQBCAUCZEsNdHJhbnNhY3Rpb25JZAkA2AQBBQJmSwUCY2cIBQJkSwZjYWxsZXIEAmNzCQENcGFyc2VJbnRWYWx1ZQEIBQJkYwJfOQQCY0cIBQJkYwNfMTAEAmdyAwMJAQJhSAAGCQAAAgUCY3MFAXEJAAIBCQCsAgICCUJsb2NrZWQ6IAkApAMBBQJjcwYDCQAAAgUCZ3IFAmdyBAJncwkA/AcEBQJhRgIEYnVybgkAzAgCBQJjZwUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJmSwUCY2cFA25pbAMJAAACBQJncwUCZ3MFAmNHCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRLARV1bnN0YWtlQW5kR2V0T25lVGtuVjIDAmd0AmZiAmZjBAJmUgoAAmZrCQD8BwQFAmFGAihpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZFJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCZmsCB0Jvb2xlYW4FAmZrCQACAQkArAICCQADAQUCZmsCHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4EAmZaAwMJAQJhSAAGCQAAAgUCYVcFAXEGBQJmUgQCZlQJAMwIAgMJAQEhAQUCZloGCQECYUQBAiFnZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJkSwhwYXltZW50cwAABgkBAmFEAQIYbm8gcGF5bWVudHMgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZlQFAmZUBAJiVwkBAmFLAAQCZ28JAQJiYwAEAmZLCQDZBAEJAJEDAgUCYlcFAXQEAmdwCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJnbwUBQQIKV3Igc3QgYWRkcgQCZ3EJAPwHBAUCZ3ACB3Vuc3Rha2UJAMwIAgkA2AQBBQJmSwkAzAgCBQJndAUDbmlsBQNuaWwDCQAAAgUCZ3EFAmdxBAJndQkBAmZhBgUCZmIFAmZjCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJmSwUCZ3QFA25pbAgFAmRLBmNhbGxlcggFAmRLDG9yaWdpbkNhbGxlcggFAmRLDXRyYW5zYWN0aW9uSWQEAmNHCAUCZ3UCXzEEAmZtCAUCZ3UCXzIJAJQKAgUCY0cFAmZtCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRLARxwdXRPbmVUa25WMldpdGhCb251c1JFQURPTkxZAgJndgJndwQCYVMJAQJhSwAEAmNvCQCRAwIFAmFTBQF1BAJjcAkAkQMCBQJhUwUBdgQCY24JAJEDAgUCYVMFAXQEAmd4CQECZUYEBQJndgUCZ3cCAAIABAJlVQgFAmd4Al8xBAJjRwgFAmd4Al8yBAJjaAgFAmd4Al8zBAJlWggFAmd4Al80CQCUCgIFA25pbAkAlQoDBQJlVQUCY2gFAmVaAmRLAQhhY3RpdmF0ZQICZ3kCZ3oDCQECIT0CCQClCAEIBQJkSwZjYWxsZXIJAKUIAQUCYUYJAAIBAgZkZW5pZWQJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCCQECYWMABQJneQkAzAgCCQELU3RyaW5nRW50cnkCCQECYWQABQJnegUDbmlsAgdzdWNjZXNzAmRLAQRzZXRTAgJnQQJncgMJAQIhPQIJAKUIAQgFAmRLBmNhbGxlcgkBAmF6AgUEdGhpcwkBAmFmAAUCZngJAMwIAgkBC1N0cmluZ0VudHJ5AgUCZ0EFAmdyBQNuaWwCZEsBBHNldEkCAmdBAmdyAwkBAiE9AgkApQgBCAUCZEsGY2FsbGVyCQECYXoCBQR0aGlzCQECYWYABQJmeAkAzAgCCQEMSW50ZWdlckVudHJ5AgUCZ0EFAmdyBQNuaWwCZEsBHGdldFBvb2xDb25maWdXcmFwcGVyUkVBRE9OTFkACQCUCgIFA25pbAkBAmFLAAJkSwEcZ2V0QWNjQmFsYW5jZVdyYXBwZXJSRUFET05MWQECYnkJAJQKAgUDbmlsCQECYngBBQJieQJkSwEZY2FsY1ByaWNlc1dyYXBwZXJSRUFET05MWQMCYlECYlICYlYEAmdCCQECYlUDBQJiUQUCYlIFAmJWCQCUCgIFA25pbAkAzAgCCQCmAwEJAJEDAgUCZ0IAAAkAzAgCCQCmAwEJAJEDAgUCZ0IAAQkAzAgCCQCmAwEJAJEDAgUCZ0IAAgUDbmlsAmRLARZmcm9tWDE4V3JhcHBlclJFQURPTkxZAgFKAmdDCQCUCgIFA25pbAkBAUkCCQCnAwEFAUoFAmdDAmRLARR0b1gxOFdyYXBwZXJSRUFET05MWQIBRwFICQCUCgIFA25pbAkApgMBCQEBRgIFAUcFAUgCZEsBHmNhbGNQcmljZUJpZ0ludFdyYXBwZXJSRUFET05MWQICYkECYkIJAJQKAgUDbmlsCQCmAwEJAQJiegIJAKcDAQUCYkEJAKcDAQUCYkICZEsBI2VzdGltYXRlUHV0T3BlcmF0aW9uV3JhcHBlclJFQURPTkxZCQJjagJiRgJjSQJjSgJjSwJjTAJnRAJjTQJjTgkAlAoCBQNuaWwJAQJjSA0FAmNqBQJiRgUCY0kFAmNKBQJjSwUCY0wFAmdEBQJjTQUCY04GBwAAAgACZEsBI2VzdGltYXRlR2V0T3BlcmF0aW9uV3JhcHBlclJFQURPTkxZBAJjagJnRQJjbAJnRAQCZGMJAQJjaQQFAmNqBQJnRQUCY2wJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAmdECQCUCgIFA25pbAkAnAoKCAUCZGMCXzEIBQJkYwJfMggFAmRjAl8zCAUCZGMCXzQIBQJkYwJfNQgFAmRjAl82CAUCZGMCXzcJAKYDAQgFAmRjAl84CAUCZGMCXzkIBQJkYwNfMTACZEsBDmdldEZlZVJFQURPTkxZAAkAlAoCBQNuaWwFAmFoAQJnRgECZ0cABAJnSAQCYXgJAQJmdgADCQABAgUCYXgCCkJ5dGVWZWN0b3IEAmZ6BQJheAUCZnoDCQABAgUCYXgCBFVuaXQIBQJnRg9zZW5kZXJQdWJsaWNLZXkJAAIBAgtNYXRjaCBlcnJvcgQCYXgFAmdGAwkAAQIFAmF4AgVPcmRlcgQCZHgFAmF4BAJnSQkBAmFJAAQCZ0oJAQJkdwEFAmR4BAJnSwkA9AMDCAUCZHgJYm9keUJ5dGVzCQCRAwIIBQJkeAZwcm9vZnMAAAgFAmR4D3NlbmRlclB1YmxpY0tleQQCZ0wJAPQDAwgFAmR4CWJvZHlCeXRlcwkAkQMCCAUCZHgGcHJvb2ZzAAEFAmdJAwMDBQJnSgUCZ0sHBQJnTAcGCQECYXMDBQJnSgUCZ0sFAmdMAwkAAQIFAmF4AhRTZXRTY3JpcHRUcmFuc2FjdGlvbgQCZFgFAmF4BAJnTQkA9gMBCQEFdmFsdWUBCAUCZFgGc2NyaXB0BAJnTgkA2wQBCQEFdmFsdWUBCQCdCAIFAmFGCQECYXEABAJnTwkA8QcBBQR0aGlzAwMJAAACBQJnTgUCZ00JAQIhPQIFAmdPBQJnTQcGCQD0AwMIBQJnRglib2R5Qnl0ZXMJAJEDAggFAmdGBnByb29mcwAABQJnSAkA9AMDCAUCZ0YJYm9keUJ5dGVzCQCRAwIIBQJnRgZwcm9vZnMAAAUCZ0hR6B3l", "chainId": 84, "height": 2289237, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: FgM3ezdhstFi285JGvisMw8fcvqvuyRF1ZASEHKsryiv Next: FUGdRnQdaJyTq9WQVsazAiTpM76LmufrCphiaoZupgon Diff:
OldNewDifferences
1717
1818 let h = toBigInt((a - ((a * 1) / a)))
1919
20-let i = "100"
20+let i = "WAVES"
2121
22-let j = "1"
22+let j = "100"
2323
24-let k = "__"
24+let k = "1"
2525
26-let l = ""
26+let l = "__"
2727
28-let m = 1
28+let m = ""
2929
30-let n = 2
30+let n = 1
3131
32-let o = 3
32+let o = 2
3333
34-let p = 4
34+let p = 3
3535
36-let q = 1
36+let q = 4
3737
38-let r = 2
38+let r = 1
3939
40-let s = 3
40+let s = 2
4141
42-let t = 4
42+let t = 3
4343
44-let u = 5
44+let u = 4
4545
46-let v = 6
46+let v = 5
4747
48-let w = 7
48+let w = 6
4949
50-let x = 8
50+let x = 7
5151
52-let y = 9
52+let y = 8
5353
54-let z = 1
54+let z = 9
5555
56-let A = 6
56+let A = 1
5757
58-let B = 7
58+let B = 6
5959
60-let C = 10
60+let C = 7
6161
62-let D = fraction(5, a, 10000)
62+let D = 10
6363
64-func E (F,G) = fraction(toBigInt(F), c, toBigInt(G))
64+let E = fraction(5, a, 10000)
65+
66+func F (G,H) = fraction(toBigInt(G), c, toBigInt(H))
6567
6668
67-func H (I,J) = toInt(fraction(I, toBigInt(J), c))
69+func I (J,K) = toInt(fraction(J, toBigInt(K), c))
6870
6971
70-func K (L,M,N) = fraction(L, M, N)
72+func L (M,N,O) = fraction(M, N, O)
7173
7274
73-func O (I) = if ((d > I))
74- then -(I)
75- else I
75+func P (J) = if ((d > J))
76+ then -(J)
77+ else J
7678
7779
78-func P (I) = if ((d > I))
79- then -(I)
80- else I
80+func Q (J) = if ((d > J))
81+ then -(J)
82+ else J
8183
8284
83-func Q () = "%s__factoryContract"
85+func R () = "%s__factoryContract"
8486
8587
86-func R () = "%s__managerPublicKey"
88+func S () = "%s__managerPublicKey"
8789
8890
89-func S () = "%s__pendingManagerPublicKey"
91+func T () = "%s__pendingManagerPublicKey"
9092
9193
92-func T () = "%s%s__price__last"
94+func U () = "%s%s__price__last"
9395
9496
95-func U (V,W) = makeString(["%s%s%d%d__price__history", toString(V), toString(W)], k)
97+func V (W,X) = makeString(["%s%s%d%d__price__history", toString(W), toString(X)], l)
9698
9799
98-func X (Y,Z) = ((("%s%s%s__P__" + Y) + "__") + Z)
100+func Y (Z,aa) = ((("%s%s%s__P__" + Z) + "__") + aa)
99101
100102
101-func aa (Y,Z) = ((("%s%s%s__G__" + Y) + "__") + Z)
103+func ab (Z,aa) = ((("%s%s%s__G__" + Z) + "__") + aa)
102104
103105
104-func ab () = "%s__amountAsset"
106+func ac () = "%s__amountAsset"
105107
106108
107-func ac () = "%s__priceAsset"
109+func ad () = "%s__priceAsset"
108110
109111
110-func ad () = "%s__amp"
112+func ae () = "%s__amp"
111113
112114
113-func ae () = "%s__addonAddr"
115+func af () = "%s__addonAddr"
114116
115117
116-let af = "%s__fee"
118+let ag = "%s__fee"
117119
118-let ag = valueOrElse(getInteger(this, af), D)
120+let ah = valueOrElse(getInteger(this, ag), E)
119121
120-func ah () = "%s__factoryConfig"
122+func ai () = "%s__factoryConfig"
121123
122124
123-func ai () = "%s%s__matcher__publicKey"
125+func aj () = "%s%s__matcher__publicKey"
124126
125127
126-func aj (ak,al) = (((("%d%d%s__" + ak) + "__") + al) + "__config")
128+func ak (al,am) = (((("%d%d%s__" + al) + "__") + am) + "__config")
127129
128130
129-func am (an) = ("%s%s%s__mappings__baseAsset2internalId__" + an)
131+func an (ao) = ("%s%s%s__mappings__baseAsset2internalId__" + ao)
130132
131133
132-func ao () = "%s__shutdown"
134+func ap () = "%s__shutdown"
133135
134136
135-func ap () = "%s__allowedLpStableScriptHash"
137+func aq () = "%s__allowedLpStableScriptHash"
136138
137139
138-func aq () = "%s__feeCollectorAddress"
140+func ar () = "%s__feeCollectorAddress"
139141
140142
141-func ar (as,at,au) = throw(((((("Failed: ordValid=" + toString(as)) + " sndrValid=") + toString(at)) + " mtchrValid=") + toString(au)))
143+func as (at,au,av) = throw(((((("Failed: ordValid=" + toString(at)) + " sndrValid=") + toString(au)) + " mtchrValid=") + toString(av)))
142144
143145
144-func av (I) = {
145- let aw = I
146- if ($isInstanceOf(aw, "String"))
146+func aw (J) = {
147+ let ax = J
148+ if ($isInstanceOf(ax, "String"))
147149 then {
148- let ax = aw
149- ax
150+ let ay = ax
151+ ay
150152 }
151153 else throw("fail cast to String")
152154 }
153155
154156
155-func ay (az,aA) = valueOrErrorMessage(getString(az, aA), makeString(["mandatory ", toString(az), ".", aA, " not defined"], ""))
157+func az (aA,aB) = valueOrErrorMessage(getString(aA, aB), makeString(["mandatory ", toString(aA), ".", aB, " not defined"], ""))
156158
157159
158-func aB (az,aA) = valueOrErrorMessage(getInteger(az, aA), makeString(["mandatory ", toString(az), ".", aA, " not defined"], ""))
160+func aC (aA,aB) = valueOrErrorMessage(getInteger(aA, aB), makeString(["mandatory ", toString(aA), ".", aB, " not defined"], ""))
159161
160162
161-let aC = addressFromStringValue(ay(this, Q()))
162-
163-let aD = ay(this, ad())
164-
165-func aE () = valueOrElse(getBoolean(aC, ao()), false)
163+func aD (aE) = throw(makeString(["lp_stable.ride:", aE], " "))
166164
167165
168-func aF () = fromBase58String(ay(aC, ai()))
166+let aF = addressFromStringValue(az(this, R()))
167+
168+let aG = az(this, ae())
169+
170+func aH () = valueOrElse(getBoolean(aF, ap()), false)
169171
170172
171-let aG = addressFromStringValue(ay(aC, aq()))
173+func aI () = fromBase58String(az(aF, aj()))
172174
173-func aH () = {
174- let aI = ay(this, ab())
175- let aJ = ay(this, ac())
176- let aK = aB(aC, am(aJ))
177- let ak = aB(aC, am(aI))
178- split(ay(aC, aj(toString(ak), toString(aK))), k)
175+
176+let aJ = addressFromStringValue(az(aF, ar()))
177+
178+func aK () = {
179+ let aL = az(this, ac())
180+ let aM = az(this, ad())
181+ let aN = aC(aF, an(aM))
182+ let al = aC(aF, an(aL))
183+ split(az(aF, ak(toString(al), toString(aN))), l)
179184 }
180185
181186
182-func aL () = split(ay(aC, ah()), k)
187+func aO (aP) = if ((aP == i))
188+ then unit
189+ else fromBase58String(aP)
183190
184191
185-let aM = aL()
186-
187-let aN = valueOrErrorMessage(addressFromString(aM[z]), "Invalid staking contract address")
188-
189-let aO = valueOrErrorMessage(addressFromString(aM[B]), "Invalid slipage contract address")
190-
191-let aP = valueOrErrorMessage(addressFromString(aM[C]), "Invalid gwx contract address")
192-
193-let aQ = valueOrErrorMessage(addressFromString(aM[A]), "Invalid gwx contract address")
194-
195-func aR (aS,aT,aU,aV,aW,aX,aY,aZ,ba,bb) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(aS), toString(aT), toString(aU), toString(aV), toString(aW), toString(aX), toString(aY), toString(aZ), toString(ba), toString(bb)], k)
192+func aQ (aP) = if ((aP == unit))
193+ then i
194+ else toBase58String(value(aP))
196195
197196
198-func bc (bd,be,bf,aV,aY,aZ) = makeString(["%d%d%d%d%d%d", toString(bd), toString(be), toString(bf), toString(aV), toString(aY), toString(aZ)], k)
197+func aR (aS) = $Tuple7(addressFromStringValue(aS[r]), parseIntValue(aS[s]), fromBase58String(aS[t]), aO(aS[u]), aO(aS[v]), parseIntValue(aS[w]), parseIntValue(aS[x]))
199198
200199
201-func bg (bh) = if ((bh == "WAVES"))
202- then wavesBalance(this).available
203- else assetBalance(this, fromBase58String(bh))
200+let aT = aR(aK())
201+
202+let aU = aT
203+
204+let aV = aU._1
205+
206+let aW = aU._2
207+
208+let aX = aU._3
209+
210+let aY = aU._4
211+
212+let aZ = aU._5
213+
214+let ba = aU._6
215+
216+let bb = aU._7
217+
218+func bc () = split(az(aF, ai()), l)
204219
205220
206-func bi (bj,bk) = fraction(bj, c, bk)
221+let bd = bc()
222+
223+let be = valueOrErrorMessage(addressFromString(bd[A]), "Invalid staking contract address")
224+
225+let bf = valueOrErrorMessage(addressFromString(bd[C]), "Invalid slipage contract address")
226+
227+let bg = valueOrErrorMessage(addressFromString(bd[D]), "Invalid gwx contract address")
228+
229+let bh = valueOrErrorMessage(addressFromString(bd[B]), "Invalid gwx contract address")
230+
231+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)], l)
207232
208233
209-func bl (bm,bn,bo) = {
210- let bp = fraction((bm - bn), b, bn)
211- let bq = ((bo - O(bp)) > d)
212- if (!(bq))
213- then throw(("Big slpg: " + toString(bp)))
214- else $Tuple2(bq, min([bm, bn]))
234+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)], l)
235+
236+
237+func bx (by) = if ((by == "WAVES"))
238+ then wavesBalance(this).available
239+ else assetBalance(this, fromBase58String(by))
240+
241+
242+func bz (bA,bB) = fraction(bA, c, bB)
243+
244+
245+func bC (bD,bE,bF) = {
246+ let bG = fraction((bD - bE), b, bE)
247+ let bH = ((bF - P(bG)) > d)
248+ if (!(bH))
249+ then throw(("Big slpg: " + toString(bG)))
250+ else $Tuple2(bH, min([bD, bE]))
215251 }
216252
217253
218-func br (bs,bt,bu) = {
219- let bp = fraction(bt, b, bs)
220- let bv = (bu > bp)
221- if (if (bv)
254+func bI (bJ,bK,bL) = {
255+ let bG = fraction(bK, b, bJ)
256+ let bM = (bL > bG)
257+ if (if (bM)
222258 then true
223- else (bt > bs))
224- then throw(((((((toString(bt) + " ") + toString(bs)) + " ") + toString(bp)) + " ") + toString(bu)))
225- else bv
259+ else (bK > bJ))
260+ then throw(((((((toString(bK) + " ") + toString(bJ)) + " ") + toString(bG)) + " ") + toString(bL)))
261+ else bM
226262 }
227263
228264
229-func bw (bx,by,bz,bA) = {
230- let bB = E(bz, bx)
231- let bC = E(bA, by)
232- bi(bC, bB)
265+func bN (bO,bP,bQ,bR) = {
266+ let bS = F(bQ, bO)
267+ let bT = F(bR, bP)
268+ bz(bT, bS)
233269 }
234270
235271
236-func bD (bz,bA,bE) = {
237- let bF = aH()
238- let bG = parseIntValue(bF[v])
239- let bH = parseIntValue(bF[w])
240- let bI = bw(bG, bH, bz, bA)
241- let bk = E(bz, bG)
242- let bj = E(bA, bH)
243- let bJ = E(bE, a)
244- let bK = bi(bk, bJ)
245- let bL = bi(bj, bJ)
246-[bI, bK, bL]
272+func bU (bQ,bR,bV) = {
273+ let bW = aK()
274+ let bX = parseIntValue(bW[w])
275+ let bY = parseIntValue(bW[x])
276+ let bZ = bN(bX, bY, bQ, bR)
277+ let bB = F(bQ, bX)
278+ let bA = F(bR, bY)
279+ let ca = F(bV, a)
280+ let cb = bz(bB, ca)
281+ let cc = bz(bA, ca)
282+[bZ, cb, cc]
247283 }
248284
249285
250-func bM (bz,bA,bE) = {
251- let bN = bD(bz, bA, bE)
252-[H(bN[0], a), H(bN[1], a), H(bN[2], a)]
286+func cd (bQ,bR,bV) = {
287+ let ce = bU(bQ, bR, bV)
288+[I(ce[0], a), I(ce[1], a), I(ce[2], a)]
253289 }
254290
255291
256-func bO (bP) = {
257- let bQ = fraction(bP, ag, a)
258- $Tuple2((bP - bQ), bQ)
292+func cf (cg) = {
293+ let ch = fraction(cg, ah, a)
294+ $Tuple2((cg - ch), ch)
259295 }
260296
261297
262-func bR (bS,bT,bU,bV) = {
263- let bF = aH()
264- let bW = bF[s]
265- let bX = bF[t]
266- let bY = bF[u]
267- let bZ = parseIntValue(bF[v])
268- let ca = parseIntValue(bF[w])
269- let cb = bF[r]
270- let cc = valueOrErrorMessage(assetInfo(fromBase58String(bW)), "Wrong LP id").quantity
271- if ((bW != bT))
298+func ci (cj,ck,cl,cm) = {
299+ let bW = aK()
300+ let cn = bW[t]
301+ let co = bW[u]
302+ let cp = bW[v]
303+ let cq = parseIntValue(bW[w])
304+ let cr = parseIntValue(bW[x])
305+ let cs = bW[s]
306+ let ct = valueOrErrorMessage(assetInfo(fromBase58String(cn)), "Wrong LP id").quantity
307+ if ((cn != ck))
272308 then throw("Wrong pmt asset")
273309 else {
274- let cd = bg(bX)
275- let ce = E(cd, bZ)
276- let cf = bg(bY)
277- let cg = E(cf, ca)
278- let ch = bi(cg, ce)
279- let ci = H(ch, a)
280- let cj = E(bU, a)
281- let ck = E(cc, a)
282- let cl = fraction(ce, cj, ck)
283- let cm = fraction(cg, cj, ck)
284- let cn = H(cl, bZ)
285- let co = H(cm, ca)
286- let cp = if ((bS == ""))
310+ let cu = bx(co)
311+ let cv = F(cu, cq)
312+ let cw = bx(cp)
313+ let cx = F(cw, cr)
314+ let cy = bz(cx, cv)
315+ let cz = I(cy, a)
316+ let cA = F(cl, a)
317+ let cB = F(ct, a)
318+ let cC = fraction(cv, cA, cB)
319+ let cD = fraction(cx, cA, cB)
320+ let cE = I(cC, cq)
321+ let cF = I(cD, cr)
322+ let cG = if ((cj == ""))
287323 then nil
288- else [ScriptTransfer(bV, cn, if ((bX == "WAVES"))
324+ else [ScriptTransfer(cm, cE, if ((co == "WAVES"))
289325 then unit
290- else fromBase58String(bX)), ScriptTransfer(bV, co, if ((bY == "WAVES"))
326+ else fromBase58String(co)), ScriptTransfer(cm, cF, if ((cp == "WAVES"))
291327 then unit
292- else fromBase58String(bY)), StringEntry(aa(toString(bV), bS), bc(cn, co, bU, ci, height, lastBlock.timestamp)), IntegerEntry(T(), ci), IntegerEntry(U(height, lastBlock.timestamp), ci)]
293- $Tuple10(cn, co, bX, bY, cd, cf, cc, ch, cb, cp)
328+ else fromBase58String(cp)), StringEntry(ab(toString(cm), cj), bt(cE, cF, cl, cz, height, lastBlock.timestamp)), IntegerEntry(U(), cz), IntegerEntry(V(height, lastBlock.timestamp), cz)]
329+ $Tuple10(cE, cF, co, cp, cu, cw, ct, cy, cs, cG)
294330 }
295331 }
296332
297333
298-func cq (bS,bo,cr,cs,ct,cu,bV,cv,cw,cx,cy,cz,cA) = {
299- let bF = aH()
300- let bW = fromBase58String(bF[s])
301- let cB = bF[t]
302- let cC = bF[u]
303- let cD = bF[x]
304- let cE = bF[y]
305- let cF = parseIntValue(bF[v])
306- let cG = parseIntValue(bF[w])
307- let cb = bF[r]
308- let cH = valueOrErrorMessage(assetInfo(bW), "Wr lp as").quantity
309- let cd = if (cv)
310- then bg(cB)
311- else if (if (cx)
312- then (cA == cB)
334+func cH (cj,bF,cI,cJ,cK,cL,cm,cM,cN,cO,cP,cQ,cR) = {
335+ let bW = aK()
336+ let cn = fromBase58String(bW[t])
337+ let cS = bW[u]
338+ let cT = bW[v]
339+ let cU = bW[y]
340+ let cV = bW[z]
341+ let cW = parseIntValue(bW[w])
342+ let cX = parseIntValue(bW[x])
343+ let cs = bW[s]
344+ let cY = valueOrErrorMessage(assetInfo(cn), "Wr lp as").quantity
345+ let cu = if (cM)
346+ then bx(cS)
347+ else if (if (cO)
348+ then (cR == cS)
313349 else false)
314- then (bg(cB) - cz)
315- else if (cx)
316- then bg(cB)
317- else (bg(cB) - cr)
318- let cf = if (cv)
319- then bg(cC)
320- else if (if (cx)
321- then (cA == cC)
350+ then (bx(cS) - cQ)
351+ else if (cO)
352+ then bx(cS)
353+ else (bx(cS) - cI)
354+ let cw = if (cM)
355+ then bx(cT)
356+ else if (if (cO)
357+ then (cR == cT)
322358 else false)
323- then (bg(cC) - cz)
324- else if (cx)
325- then bg(cC)
326- else (bg(cC) - ct)
327- let cI = E(cr, cF)
328- let cJ = E(ct, cG)
329- let cK = bi(cJ, cI)
330- let ce = E(cd, cF)
331- let cg = E(cf, cG)
332- let cL = if ((cH == 0))
359+ then (bx(cT) - cQ)
360+ else if (cO)
361+ then bx(cT)
362+ else (bx(cT) - cK)
363+ let cZ = F(cI, cW)
364+ let da = F(cK, cX)
365+ let db = bz(da, cZ)
366+ let cv = F(cu, cW)
367+ let cx = F(cw, cX)
368+ let dc = if ((cY == 0))
333369 then {
334- let ch = d
335- let cM = d
336- let bJ = pow((cI * cJ), 0, toBigInt(5), 1, 0, DOWN)
337- $Tuple5(H(bJ, a), H(cI, cF), H(cJ, cG), bi((cg + cJ), (ce + cI)), cM)
370+ let cy = d
371+ let dd = d
372+ let ca = pow((cZ * da), 0, toBigInt(5), 1, 0, DOWN)
373+ $Tuple5(I(ca, a), I(cZ, cW), I(da, cX), bz((cx + da), (cv + cZ)), dd)
338374 }
339375 else {
340- let ch = bi(cg, ce)
341- let cN = fraction(O((ch - cK)), c, ch)
342- let cM = E(bo, a)
343- if (if (if (cy)
344- then (ch != d)
376+ let cy = bz(cx, cv)
377+ let de = fraction(P((cy - db)), c, cy)
378+ let dd = F(bF, a)
379+ if (if (if (cP)
380+ then (cy != d)
345381 else false)
346- then (cN > cM)
382+ then (de > dd)
347383 else false)
348- then throw(((("Price slippage " + toString(cN)) + " > ") + toString(cM)))
384+ then throw(((("Price slippage " + toString(de)) + " > ") + toString(dd)))
349385 else {
350- let cO = E(cH, a)
351- let cP = fraction(cI, ch, c)
352- let cQ = fraction(cJ, c, ch)
353- let cR = if ((cP > cJ))
354- then $Tuple2(cQ, cJ)
355- else $Tuple2(cI, cP)
356- let cS = cR._1
357- let cT = cR._2
358- let bJ = fraction(cO, cT, cg)
359- $Tuple5(H(bJ, a), H(cS, cF), H(cT, cG), ch, cM)
386+ let df = F(cY, a)
387+ let dg = fraction(cZ, cy, c)
388+ let dh = fraction(da, c, cy)
389+ let di = if ((dg > da))
390+ then $Tuple2(dh, da)
391+ else $Tuple2(cZ, dg)
392+ let dj = di._1
393+ let dk = di._2
394+ let ca = fraction(df, dk, cx)
395+ $Tuple5(I(ca, a), I(dj, cW), I(dk, cX), cy, dd)
360396 }
361397 }
362- let cU = cL._1
363- let cV = cL._2
364- let cW = cL._3
365- let ci = H(cL._4, a)
366- let cX = H(cL._5, a)
367- if ((0 >= cU))
398+ let dl = dc._1
399+ let dm = dc._2
400+ let dn = dc._3
401+ let cz = I(dc._4, a)
402+ let do = I(dc._5, a)
403+ if ((0 >= dl))
368404 then throw("LP <= 0")
369405 else {
370- let cY = if (!(cw))
406+ let dp = if (!(cN))
371407 then 0
372- else cU
373- let cZ = (cr - cV)
374- let da = (ct - cW)
375- let db = if (if (cx)
376- then (cA == cB)
408+ else dl
409+ let dq = (cI - dm)
410+ let dr = (cK - dn)
411+ let ds = if (if (cO)
412+ then (cR == cS)
377413 else false)
378- then $Tuple2(cz, 0)
379- else if (if (cx)
380- then (cA == cC)
414+ then $Tuple2(cQ, 0)
415+ else if (if (cO)
416+ then (cR == cT)
381417 else false)
382- then $Tuple2(0, cz)
383- else $Tuple2(cV, cW)
384- let dc = db._1
385- let dd = db._2
386- let de = [IntegerEntry(T(), ci), IntegerEntry(U(height, lastBlock.timestamp), ci), StringEntry(X(bV, bS), aR(dc, dd, cY, ci, bo, cX, height, lastBlock.timestamp, cZ, da))]
387- $Tuple13(cU, cY, ci, cd, cf, cH, bW, cb, de, cZ, da, cs, cu)
418+ then $Tuple2(0, cQ)
419+ else $Tuple2(dm, dn)
420+ let dt = ds._1
421+ let du = ds._2
422+ let dv = [IntegerEntry(U(), cz), IntegerEntry(V(height, lastBlock.timestamp), cz), StringEntry(Y(cm, cj), bi(dt, du, dp, cz, bF, do, height, lastBlock.timestamp, dq, dr))]
423+ $Tuple13(dl, dp, cz, cu, cw, cY, cn, cs, dv, dq, dr, cJ, cL)
388424 }
389425 }
390426
391427
392-func df (dg) = {
393- let bF = aH()
394- let dh = bF[t]
395- let di = bF[u]
396- let cb = parseIntValue(bF[r])
397- let bG = parseIntValue(bF[v])
398- let bH = parseIntValue(bF[w])
399- let dj = bg(dh)
400- let dk = bg(di)
401- let ch = if ((dg.orderType == Buy))
402- then bw(bG, bH, (dj + dg.amount), dk)
403- else bw(bG, bH, (dj - dg.amount), dk)
404- let ci = H(ch, a)
405- if (if (if (aE())
428+func dw (dx) = {
429+ let bW = aK()
430+ let dy = bW[u]
431+ let dz = bW[v]
432+ let cs = parseIntValue(bW[s])
433+ let bX = parseIntValue(bW[w])
434+ let bY = parseIntValue(bW[x])
435+ let dA = bx(dy)
436+ let dB = bx(dz)
437+ let cy = if ((dx.orderType == Buy))
438+ then bN(bX, bY, (dA + dx.amount), dB)
439+ else bN(bX, bY, (dA - dx.amount), dB)
440+ let cz = I(cy, a)
441+ if (if (if (aH())
406442 then true
407- else (cb == o))
443+ else (cs == p))
408444 then true
409- else (cb == p))
445+ else (cs == q))
410446 then throw("Admin blocked")
411447 else {
412- let dl = dg.assetPair.amountAsset
413- let dm = if ((dl == unit))
448+ let dC = dx.assetPair.amountAsset
449+ let dD = if ((dC == unit))
414450 then "WAVES"
415- else toBase58String(value(dl))
416- let dn = dg.assetPair.priceAsset
417- let do = if ((dn == unit))
451+ else toBase58String(value(dC))
452+ let dE = dx.assetPair.priceAsset
453+ let dF = if ((dE == unit))
418454 then "WAVES"
419- else toBase58String(value(dn))
420- if (if ((dm != dh))
455+ else toBase58String(value(dE))
456+ if (if ((dD != dy))
421457 then true
422- else (do != di))
458+ else (dF != dz))
423459 then throw("Wr assets")
424460 else {
425- let dp = dg.price
426- let cG = fraction(a, bH, bG)
427- let dq = K(dp, a, cG)
428- let dr = if ((dg.orderType == Buy))
429- then (ci >= dq)
430- else (dq >= ci)
461+ let dG = dx.price
462+ let cX = fraction(a, bY, bX)
463+ let dH = L(dG, a, cX)
464+ let dI = if ((dx.orderType == Buy))
465+ then (cz >= dH)
466+ else (dH >= cz)
431467 true
432468 }
433469 }
434470 }
435471
436472
437-func ds (dt) = if ((size(dt.payments) != 1))
473+func dJ (dK) = if ((size(dK.payments) != 1))
438474 then throw("1 pmnt exp")
439475 else {
440- let du = value(dt.payments[0])
441- let bT = value(du.assetId)
442- let cz = du.amount
443- let cL = bR(toBase58String(dt.transactionId), toBase58String(bT), cz, dt.caller)
444- let cn = cL._1
445- let co = cL._2
446- let cb = parseIntValue(cL._9)
447- let cp = cL._10
448- if (if (aE())
476+ let dL = value(dK.payments[0])
477+ let ck = value(dL.assetId)
478+ let cQ = dL.amount
479+ let dc = ci(toBase58String(dK.transactionId), toBase58String(ck), cQ, dK.caller)
480+ let cE = dc._1
481+ let cF = dc._2
482+ let cs = parseIntValue(dc._9)
483+ let cG = dc._10
484+ if (if (aH())
449485 then true
450- else (cb == p))
451- then throw(("Admin blocked: " + toString(cb)))
452- else $Tuple5(cn, co, cz, bT, cp)
486+ else (cs == q))
487+ then throw(("Admin blocked: " + toString(cs)))
488+ else $Tuple5(cE, cF, cQ, ck, cG)
453489 }
454490
455491
456-func dv (dw,Z,dx,dy,bo,cw,cx,cy,cz,cA) = {
457- let cL = cq(Z, bo, value(dx).amount, value(dx).assetId, value(dy).amount, value(dy).assetId, dw, (Z == ""), cw, cx, cy, cz, cA)
458- let cb = parseIntValue(cL._8)
459- if (if (if (aE())
492+func dM (dN,aa,dO,dP,bF,cN,cO,cP,cQ,cR) = {
493+ let dc = cH(aa, bF, value(dO).amount, value(dO).assetId, value(dP).amount, value(dP).assetId, dN, (aa == ""), cN, cO, cP, cQ, cR)
494+ let cs = parseIntValue(dc._8)
495+ if (if (if (aH())
460496 then true
461- else (cb == n))
497+ else (cs == o))
462498 then true
463- else (cb == p))
464- then throw(("Blocked:" + toString(cb)))
465- else cL
499+ else (cs == q))
500+ then throw(("Blocked:" + toString(cs)))
501+ else dc
466502 }
467503
468504
469-func dz (dA) = {
470- let dB = g
471- let dC = dA[0]
472- let dD = dA[1]
473- let dE = parseBigIntValue(i)
474- let dF = (parseBigIntValue(aD) * dE)
475- let dG = (dC + dD)
476- if ((dG == e))
505+func dQ (dR) = {
506+ let dS = g
507+ let dT = dR[0]
508+ let dU = dR[1]
509+ let dV = parseBigIntValue(j)
510+ let dW = (parseBigIntValue(aG) * dV)
511+ let dX = (dT + dU)
512+ if ((dX == e))
477513 then e
478514 else {
479- let dH = (dF * dB)
480- let dI = (((dC * dD) * dB) * dB)
481- let dJ = ((dH * dG) / dE)
482- let dK = (dH - dE)
483- let dL = (dB + f)
484- func dM (dN,dO) = {
485- let dP = dN
486- let dQ = dP._1
487- let dR = dP._2
488- if ((dR != unit))
489- then dN
515+ let dY = (dW * dS)
516+ let dZ = (((dT * dU) * dS) * dS)
517+ let ea = ((dY * dX) / dV)
518+ let eb = (dY - dV)
519+ let ec = (dS + f)
520+ func ed (ee,ef) = {
521+ let eg = ee
522+ let eh = eg._1
523+ let ei = eg._2
524+ if ((ei != unit))
525+ then ee
490526 else {
491- let dS = (((dQ * dQ) * dQ) / dI)
492- let dT = (((dJ + (dS * dB)) * dQ) / (((dK * dQ) / dE) + (dL * dS)))
493- let dU = P((dT - value(dQ)))
494- if ((f >= dU))
495- then $Tuple2(dT, dO)
496- else $Tuple2(dT, unit)
527+ let ej = (((eh * eh) * eh) / dZ)
528+ let ek = (((ea + (ej * dS)) * eh) / (((eb * eh) / dV) + (ec * ej)))
529+ let el = Q((ek - value(eh)))
530+ if ((f >= el))
531+ then $Tuple2(ek, ef)
532+ else $Tuple2(ek, unit)
497533 }
498534 }
499535
500- let dV = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
501- let dW = {
502- let dX = dV
503- let dY = size(dX)
504- let dZ = $Tuple2(dG, unit)
505- func ea (eb,ec) = if ((ec >= dY))
506- then eb
507- else dM(eb, dX[ec])
536+ let em = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
537+ let en = {
538+ let eo = em
539+ let ep = size(eo)
540+ let eq = $Tuple2(dX, unit)
541+ func er (es,et) = if ((et >= ep))
542+ then es
543+ else ed(es, eo[et])
508544
509- func ed (eb,ec) = if ((ec >= dY))
510- then eb
545+ func eu (es,et) = if ((et >= ep))
546+ then es
511547 else throw("List size exceeds 15")
512548
513- ed(ea(ea(ea(ea(ea(ea(ea(ea(ea(ea(ea(ea(ea(ea(ea(dZ, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
549+ eu(er(er(er(er(er(er(er(er(er(er(er(er(er(er(er(eq, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
514550 }
515- let dQ = dW._1
516- let dR = dW._2
517- if ((dR != unit))
518- then dQ
519- else throw(("D calculation error, D = " + toString(dQ)))
551+ let eh = en._1
552+ let ei = en._2
553+ if ((ei != unit))
554+ then eh
555+ else throw(("D calculation error, D = " + toString(eh)))
520556 }
521557 }
522558
523559
524-func ee (dA,dt,ef) = {
525- let dB = g
526- let eg = dA[if ((dt == 0))
560+func ev (dR,dK,ew) = {
561+ let dS = g
562+ let ex = dR[if ((dK == 0))
527563 then 1
528564 else 0]
529- let dE = parseBigIntValue(i)
530- let dF = (parseBigIntValue(aD) * dE)
531- let dG = eg
532- let dH = (dF * dB)
533- let eh = (((((ef * ef) / (eg * dB)) * ef) * dE) / (dH * dB))
534- let ei = ((dG + ((ef * dE) / dH)) - ef)
535- func dM (dN,dO) = {
536- let ej = dN
537- let ek = ej._1
538- let dR = ej._2
539- if ((dR != unit))
540- then dN
565+ let dV = parseBigIntValue(j)
566+ let dW = (parseBigIntValue(aG) * dV)
567+ let dX = ex
568+ let dY = (dW * dS)
569+ let ey = (((((ew * ew) / (ex * dS)) * ew) * dV) / (dY * dS))
570+ let ez = ((dX + ((ew * dV) / dY)) - ew)
571+ func ed (ee,ef) = {
572+ let eA = ee
573+ let eB = eA._1
574+ let ei = eA._2
575+ if ((ei != unit))
576+ then ee
541577 else {
542- let el = (((ek * ek) + eh) / ((g * ek) + ei))
543- let em = P((el - value(ek)))
544- if ((f >= em))
545- then $Tuple2(el, dO)
546- else $Tuple2(el, unit)
578+ let eC = (((eB * eB) + ey) / ((g * eB) + ez))
579+ let eD = Q((eC - value(eB)))
580+ if ((f >= eD))
581+ then $Tuple2(eC, ef)
582+ else $Tuple2(eC, unit)
547583 }
548584 }
549585
550- let dV = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
551- let en = {
552- let dX = dV
553- let dY = size(dX)
554- let dZ = $Tuple2(ef, unit)
555- func ea (eb,ec) = if ((ec >= dY))
556- then eb
557- else dM(eb, dX[ec])
586+ let em = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
587+ let eE = {
588+ let eo = em
589+ let ep = size(eo)
590+ let eq = $Tuple2(ew, unit)
591+ func er (es,et) = if ((et >= ep))
592+ then es
593+ else ed(es, eo[et])
558594
559- func ed (eb,ec) = if ((ec >= dY))
560- then eb
595+ func eu (es,et) = if ((et >= ep))
596+ then es
561597 else throw("List size exceeds 15")
562598
563- ed(ea(ea(ea(ea(ea(ea(ea(ea(ea(ea(ea(ea(ea(ea(ea(dZ, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
599+ eu(er(er(er(er(er(er(er(er(er(er(er(er(er(er(er(eq, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
564600 }
565- let ek = en._1
566- let dR = en._2
567- if ((dR != unit))
568- then ek
569- else throw(("Y calculation error, Y = " + toString(ek)))
601+ let eB = eE._1
602+ let ei = eE._2
603+ if ((ei != unit))
604+ then eB
605+ else throw(("Y calculation error, Y = " + toString(eB)))
570606 }
571607
572608
573-func eo (ep,bT,bV,Z) = {
574- let eq = aH()
575- let bX = eq[t]
576- let bY = eq[u]
577- let bW = eq[s]
578- let cF = parseIntValue(eq[v])
579- let cG = parseIntValue(eq[w])
580- let er = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(bW)), "invalid lp asset").quantity)
581- let es = if ((er > e))
609+func eF (eG,ck,cm,aa) = {
610+ let aS = aK()
611+ let co = aS[u]
612+ let cp = aS[v]
613+ let cn = aS[t]
614+ let cW = parseIntValue(aS[w])
615+ let cX = parseIntValue(aS[x])
616+ let eH = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(cn)), "invalid lp asset").quantity)
617+ let eI = if ((eH > e))
582618 then true
583619 else throw("initial deposit requires all coins")
584- if ((es == es))
620+ if ((eI == eI))
585621 then {
586- let cd = bg(bX)
587- let cf = bg(bY)
588- let et = if ((Z == ""))
589- then $Tuple2(cd, cf)
590- else if ((bT == bX))
591- then if ((ep > cd))
622+ let cu = bx(co)
623+ let cw = bx(cp)
624+ let eJ = if ((aa == ""))
625+ then $Tuple2(cu, cw)
626+ else if ((ck == co))
627+ then if ((eG > cu))
592628 then throw("invalid payment amount")
593- else $Tuple2((cd - ep), cf)
594- else if ((bT == bY))
595- then if ((ep > cf))
629+ else $Tuple2((cu - eG), cw)
630+ else if ((ck == cp))
631+ then if ((eG > cw))
596632 then throw("invalid payment amount")
597- else $Tuple2(cd, (cf - ep))
633+ else $Tuple2(cu, (cw - eG))
598634 else throw("wrong pmtAssetId")
599- let eu = et._1
600- let ev = et._2
601- let ew = if ((bT == bX))
602- then $Tuple2(ep, 0)
603- else if ((bT == bY))
604- then $Tuple2(0, ep)
635+ let eK = eJ._1
636+ let eL = eJ._2
637+ let eM = if ((ck == co))
638+ then $Tuple2(eG, 0)
639+ else if ((ck == cp))
640+ then $Tuple2(0, eG)
605641 else throw("invalid payment")
606- let ex = ew._1
607- let ey = ew._2
608- let ez = bO(ex)._1
609- let eA = bO(ey)._1
610- let bQ = bO(ep)._2
611- let eB = (eu + ez)
612- let eC = (ev + eA)
613- let bt = dz([toBigInt(eu), toBigInt(ev)])
614- let bs = dz([toBigInt(eB), toBigInt(eC)])
615- let eD = if ((bs > bt))
642+ let eN = eM._1
643+ let eO = eM._2
644+ let eP = cf(eN)._1
645+ let eQ = cf(eO)._1
646+ let ch = cf(eG)._2
647+ let eR = (eK + eP)
648+ let eS = (eL + eQ)
649+ let bK = dQ([toBigInt(eK), toBigInt(eL)])
650+ let bJ = dQ([toBigInt(eR), toBigInt(eS)])
651+ let eT = if ((bJ > bK))
616652 then true
617653 else throw()
618- if ((eD == eD))
654+ if ((eT == eT))
619655 then {
620- let eE = fraction(er, (bs - bt), bt)
621- let ci = H(bi(E(eC, cG), E(eB, cF)), a)
622- let de = [IntegerEntry(T(), ci), IntegerEntry(U(height, lastBlock.timestamp), ci), StringEntry(X(bV, Z), aR(ex, ey, toInt(eE), ci, 0, 0, height, lastBlock.timestamp, 0, 0))]
623- let eF = fraction(ev, a, eu)
624- let eG = fraction(ep, a, (eF + a))
625- let eH = (ep - eG)
626- let eI = fraction(er, toBigInt(eH), toBigInt(ev))
627- let eJ = toInt(fraction((eE - eI), b, eI))
628- $Tuple4(toInt(eE), de, bQ, eJ)
656+ let eU = fraction(eH, (bJ - bK), bK)
657+ let cz = I(bz(F(eS, cX), F(eR, cW)), a)
658+ let dv = [IntegerEntry(U(), cz), IntegerEntry(V(height, lastBlock.timestamp), cz), StringEntry(Y(cm, aa), bi(eN, eO, toInt(eU), cz, 0, 0, height, lastBlock.timestamp, 0, 0))]
659+ let eV = fraction(eL, a, eK)
660+ let eW = fraction(eG, a, (eV + a))
661+ let eX = (eG - eW)
662+ let eY = fraction(eH, toBigInt(eX), toBigInt(eL))
663+ let eZ = toInt(fraction((eU - eY), b, eY))
664+ $Tuple4(toInt(eU), dv, ch, eZ)
629665 }
630666 else throw("Strict value is not equal to itself.")
631667 }
633669 }
634670
635671
636-func eK (eL,eM,eN,dw,eO,eP) = if ((size(eN) != 1))
637- then throw("1 pmnt expd")
638- else {
639- let eq = aH()
640- let bW = eq[s]
641- let bX = eq[t]
642- let bY = eq[u]
643- let eQ = parseIntValue(eq[v])
644- let eR = parseIntValue(eq[w])
645- let eS = eq[r]
646- let bV = if ((dw == aQ))
647- then eO
648- else dw
649- let du = value(eN[0])
650- let bT = value(du.assetId)
651- let cz = du.amount
652- let bS = toBase58String(eP)
653- if ((bW != toBase58String(bT)))
654- then throw("Wrong LP")
655- else {
656- let cd = bg(bX)
657- let cf = bg(bY)
658- let eT = {
659- let eU = invoke(this, "getOneTknV2READONLY", [eL, cz], nil)
660- if ($isInstanceOf(eU, "(Int, Int)"))
661- then eU
662- else throw(($getType(eU) + " couldn't be cast to (Int, Int)"))
672+func fa (fb,fc,fd,dN,fe,ff) = {
673+ let aS = aK()
674+ let cn = aS[t]
675+ let co = aS[u]
676+ let cp = aS[v]
677+ let fg = parseIntValue(aS[w])
678+ let fh = parseIntValue(aS[x])
679+ let fi = aS[s]
680+ let cm = if ((dN == bh))
681+ then fe
682+ else dN
683+ let dL = value(fd[0])
684+ let ck = value(dL.assetId)
685+ let cQ = dL.amount
686+ let cj = toBase58String(ff)
687+ if ((cn != toBase58String(ck)))
688+ then throw("Wrong LP")
689+ else {
690+ let cu = bx(co)
691+ let cw = bx(cp)
692+ let fj = {
693+ let fk = invoke(this, "getOneTknV2READONLY", [fb, cQ], nil)
694+ if ($isInstanceOf(fk, "(Int, Int)"))
695+ then fk
696+ else throw(($getType(fk) + " couldn't be cast to (Int, Int)"))
697+ }
698+ let fl = fj._1
699+ let ch = fj._2
700+ let fm = if (if ((fc > 0))
701+ then (fc > fl)
702+ else false)
703+ then throw(makeString(["amount to receive is less than ", toString(fc)], ""))
704+ else fl
705+ let fn = if ((fb == co))
706+ then $Tuple4(fm, 0, ((cu - fm) - ch), cw)
707+ else if ((fb == cp))
708+ then $Tuple4(0, fm, cu, ((cw - fm) - ch))
709+ else throw("invalid out asset id")
710+ let fo = fn._1
711+ let fp = fn._2
712+ let eR = fn._3
713+ let eS = fn._4
714+ let fq = bz(F(eS, fh), F(eR, fg))
715+ let fr = I(fq, a)
716+ let fs = if ((fb == "WAVES"))
717+ then unit
718+ else fromBase58String(fb)
719+ let ft = if ((ch > 0))
720+ then [ScriptTransfer(aJ, ch, fs)]
721+ else nil
722+ let cG = ([ScriptTransfer(cm, fm, fs), StringEntry(ab(toString(cm), cj), bt(fo, fp, cQ, fr, height, lastBlock.timestamp)), IntegerEntry(U(), fr), IntegerEntry(V(height, lastBlock.timestamp), fr)] ++ ft)
723+ if ((cG == cG))
724+ then {
725+ let fu = invoke(aF, "burn", [cQ], [AttachedPayment(ck, cQ)])
726+ if ((fu == fu))
727+ then $Tuple2(cG, fm)
728+ else throw("Strict value is not equal to itself.")
663729 }
664- let eV = eT._1
665- let bQ = eT._2
666- let eW = if (if ((eM > 0))
667- then (eM > eV)
668- else false)
669- then throw(makeString(["amount to receive is less than ", toString(eM)], ""))
670- else eV
671- let eX = if ((eL == bX))
672- then $Tuple4(eW, 0, ((cd - eW) - bQ), cf)
673- else if ((eL == bY))
674- then $Tuple4(0, eW, cd, ((cf - eW) - bQ))
675- else throw("invalid out asset id")
676- let eY = eX._1
677- let eZ = eX._2
678- let eB = eX._3
679- let eC = eX._4
680- let fa = bi(E(eC, eR), E(eB, eQ))
681- let fb = H(fa, a)
682- let fc = if ((eL == "WAVES"))
683- then unit
684- else fromBase58String(eL)
685- let fd = if ((bQ > 0))
686- then [ScriptTransfer(aG, bQ, fc)]
687- else nil
688- let cp = ([ScriptTransfer(bV, eW, fc), StringEntry(aa(toString(bV), bS), bc(eY, eZ, cz, fb, height, lastBlock.timestamp)), IntegerEntry(T(), fb), IntegerEntry(U(height, lastBlock.timestamp), fb)] ++ fd)
689- if ((cp == cp))
690- then {
691- let fe = invoke(aC, "burn", [cz], [AttachedPayment(bT, cz)])
692- if ((fe == fe))
693- then $Tuple2(cp, eW)
694- else throw("Strict value is not equal to itself.")
695- }
696- else throw("Strict value is not equal to itself.")
697- }
698- }
730+ else throw("Strict value is not equal to itself.")
731+ }
732+ }
699733
700734
701-func ff () = {
702- let aw = getString(R())
703- if ($isInstanceOf(aw, "String"))
735+func fv () = {
736+ let ax = getString(S())
737+ if ($isInstanceOf(ax, "String"))
704738 then {
705- let dG = aw
706- fromBase58String(dG)
739+ let dX = ax
740+ fromBase58String(dX)
707741 }
708- else if ($isInstanceOf(aw, "Unit"))
742+ else if ($isInstanceOf(ax, "Unit"))
709743 then unit
710744 else throw("Match error")
711745 }
712746
713747
714-func fg () = {
715- let aw = getString(S())
716- if ($isInstanceOf(aw, "String"))
748+func fw () = {
749+ let ax = getString(T())
750+ if ($isInstanceOf(ax, "String"))
717751 then {
718- let dG = aw
719- fromBase58String(dG)
752+ let dX = ax
753+ fromBase58String(dX)
720754 }
721- else if ($isInstanceOf(aw, "Unit"))
755+ else if ($isInstanceOf(ax, "Unit"))
722756 then unit
723757 else throw("Match error")
724758 }
725759
726760
727-let fh = throw("Permission denied")
761+let fx = throw("Permission denied")
728762
729-func fi (dt) = {
730- let aw = ff()
731- if ($isInstanceOf(aw, "ByteVector"))
763+func fy (dK) = {
764+ let ax = fv()
765+ if ($isInstanceOf(ax, "ByteVector"))
732766 then {
733- let fj = aw
734- if ((dt.callerPublicKey == fj))
767+ let fz = ax
768+ if ((dK.callerPublicKey == fz))
735769 then true
736- else fh
770+ else fx
737771 }
738- else if ($isInstanceOf(aw, "Unit"))
739- then if ((dt.caller == this))
772+ else if ($isInstanceOf(ax, "Unit"))
773+ then if ((dK.caller == this))
740774 then true
741- else fh
775+ else fx
742776 else throw("Match error")
743777 }
744778
745779
746-@Callable(dt)
747-func constructor (Q) = {
748- let eh = fi(dt)
749- if ((eh == eh))
750- then [StringEntry(Q(), Q)]
780+@Callable(dK)
781+func constructor (R) = {
782+ let ey = fy(dK)
783+ if ((ey == ey))
784+ then [StringEntry(R(), R)]
751785 else throw("Strict value is not equal to itself.")
752786 }
753787
754788
755789
756-@Callable(dt)
757-func setManager (fk) = {
758- let eh = fi(dt)
759- if ((eh == eh))
790+@Callable(dK)
791+func setManager (fA) = {
792+ let ey = fy(dK)
793+ if ((ey == ey))
760794 then {
761- let fl = fromBase58String(fk)
762- if ((fl == fl))
763- then [StringEntry(S(), fk)]
795+ let fB = fromBase58String(fA)
796+ if ((fB == fB))
797+ then [StringEntry(T(), fA)]
764798 else throw("Strict value is not equal to itself.")
765799 }
766800 else throw("Strict value is not equal to itself.")
768802
769803
770804
771-@Callable(dt)
805+@Callable(dK)
772806 func confirmManager () = {
773- let bN = fg()
774- let fm = if (isDefined(bN))
807+ let ce = fw()
808+ let fC = if (isDefined(ce))
775809 then true
776810 else throw("No pending manager")
777- if ((fm == fm))
811+ if ((fC == fC))
778812 then {
779- let fn = if ((dt.callerPublicKey == value(bN)))
813+ let fD = if ((dK.callerPublicKey == value(ce)))
780814 then true
781815 else throw("You are not pending manager")
782- if ((fn == fn))
783- then [StringEntry(R(), toBase58String(value(bN))), DeleteEntry(S())]
816+ if ((fD == fD))
817+ then [StringEntry(S(), toBase58String(value(ce))), DeleteEntry(T())]
784818 else throw("Strict value is not equal to itself.")
785819 }
786820 else throw("Strict value is not equal to itself.")
788822
789823
790824
791-@Callable(dt)
792-func put (fo,fp) = {
793- let fq = aL()
794- let fr = valueOrErrorMessage(addressFromString(fq[z]), "Wr st addr")
795- let fs = valueOrErrorMessage(addressFromString(fq[B]), "Wr sl addr")
796- if ((0 > fo))
825+@Callable(dK)
826+func put (fE,fF) = {
827+ let fG = bc()
828+ let fH = valueOrErrorMessage(addressFromString(fG[A]), "Wr st addr")
829+ let fI = valueOrErrorMessage(addressFromString(fG[C]), "Wr sl addr")
830+ if ((0 > fE))
797831 then throw("Wrong slippage")
798- else if ((size(dt.payments) != 2))
832+ else if ((size(dK.payments) != 2))
799833 then throw("2 pmnts expd")
800834 else {
801- let ft = dv(toString(dt.caller), toBase58String(dt.transactionId), AttachedPayment(value(dt.payments[0]).assetId, value(dt.payments[0]).amount), dt.payments[1], fo, true, false, true, 0, "")
802- let cY = ft._2
803- let fu = ft._7
804- let cp = ft._9
805- let cZ = ft._10
806- let da = ft._11
807- let bX = ft._12
808- let bY = ft._13
809- let cL = invoke(aC, "emit", [cY], nil)
810- if ((cL == cL))
835+ let fJ = dM(toString(dK.caller), toBase58String(dK.transactionId), AttachedPayment(value(dK.payments[0]).assetId, value(dK.payments[0]).amount), dK.payments[1], fE, true, false, true, 0, "")
836+ let dp = fJ._2
837+ let fK = fJ._7
838+ let cG = fJ._9
839+ let dq = fJ._10
840+ let dr = fJ._11
841+ let co = fJ._12
842+ let cp = fJ._13
843+ let dc = invoke(aF, "emit", [dp], nil)
844+ if ((dc == dc))
811845 then {
812- let fv = {
813- let aw = cL
814- if ($isInstanceOf(aw, "Address"))
846+ let fL = {
847+ let ax = dc
848+ if ($isInstanceOf(ax, "Address"))
815849 then {
816- let fw = aw
817- invoke(fw, "emit", [cY], nil)
850+ let fM = ax
851+ invoke(fM, "emit", [dp], nil)
818852 }
819853 else unit
820854 }
821- if ((fv == fv))
855+ if ((fL == fL))
822856 then {
823- let fx = if ((cZ > 0))
824- then invoke(fs, "put", nil, [AttachedPayment(bX, cZ)])
857+ let fN = if ((dq > 0))
858+ then invoke(fI, "put", nil, [AttachedPayment(co, dq)])
825859 else nil
826- if ((fx == fx))
860+ if ((fN == fN))
827861 then {
828- let fy = if ((da > 0))
829- then invoke(fs, "put", nil, [AttachedPayment(bY, da)])
862+ let fO = if ((dr > 0))
863+ then invoke(fI, "put", nil, [AttachedPayment(cp, dr)])
830864 else nil
831- if ((fy == fy))
865+ if ((fO == fO))
832866 then {
833- let fz = if (fp)
867+ let fP = if (fF)
834868 then {
835- let fA = invoke(fr, "stake", nil, [AttachedPayment(fu, cY)])
836- if ((fA == fA))
869+ let fQ = invoke(fH, "stake", nil, [AttachedPayment(fK, dp)])
870+ if ((fQ == fQ))
837871 then nil
838872 else throw("Strict value is not equal to itself.")
839873 }
840- else [ScriptTransfer(dt.caller, cY, fu)]
841- (cp ++ fz)
874+ else [ScriptTransfer(dK.caller, dp, fK)]
875+ (cG ++ fP)
842876 }
843877 else throw("Strict value is not equal to itself.")
844878 }
852886
853887
854888
855-@Callable(dt)
856-func putOneTknV2 (eM,fp) = if ((size(dt.payments) != 1))
857- then throw("1 pmnt expd")
858- else {
859- let eq = aH()
860- let bX = eq[t]
861- let bY = eq[u]
862- let bW = fromBase58String(eq[s])
863- let eQ = parseIntValue(eq[v])
864- let eR = parseIntValue(eq[w])
865- let bV = if ((dt.caller == this))
866- then dt.originCaller
867- else dt.caller
868- let du = value(dt.payments[0])
869- let bT = toBase58String(value(du.assetId))
870- let cz = du.amount
871- let fB = eo(cz, bT, toString(bV), toBase58String(dt.transactionId))
872- let fC = fB._1
873- let cp = fB._2
874- let bQ = fB._3
875- let cY = if (if ((eM > 0))
876- then (eM > fC)
877- else false)
878- then throw(makeString(["amount to receive is less than ", toString(eM)], ""))
879- else fC
880- let ft = invoke(aC, "emit", [cY], nil)
881- if ((ft == ft))
882- then {
883- let fv = {
884- let aw = ft
885- if ($isInstanceOf(aw, "Address"))
889+@Callable(dK)
890+func putOneTknV2 (fc,fF) = {
891+ let fR = {
892+ let fk = invoke(aF, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
893+ if ($isInstanceOf(fk, "Boolean"))
894+ then fk
895+ else throw(($getType(fk) + " couldn't be cast to Boolean"))
896+ }
897+ let fS = if (if (if (aH())
898+ then true
899+ else (aW == o))
900+ then true
901+ else (aW == q))
902+ then true
903+ else fR
904+ let fT = [if (!(fS))
905+ then true
906+ else aD("put operation is blocked by admin"), if ((size(dK.payments) == 1))
907+ then true
908+ else aD("exactly 1 payment are expected")]
909+ if ((fT == fT))
910+ then {
911+ let aS = aK()
912+ let co = aS[u]
913+ let cp = aS[v]
914+ let cn = fromBase58String(aS[t])
915+ let fg = parseIntValue(aS[w])
916+ let fh = parseIntValue(aS[x])
917+ let cm = if ((dK.caller == this))
918+ then dK.originCaller
919+ else dK.caller
920+ let dL = value(dK.payments[0])
921+ let ck = toBase58String(value(dL.assetId))
922+ let cQ = dL.amount
923+ let fU = eF(cQ, ck, toString(cm), toBase58String(dK.transactionId))
924+ let fV = fU._1
925+ let cG = fU._2
926+ let ch = fU._3
927+ let dp = if (if ((fc > 0))
928+ then (fc > fV)
929+ else false)
930+ then throw(makeString(["amount to receive is less than ", toString(fc)], ""))
931+ else fV
932+ let fJ = invoke(aF, "emit", [dp], nil)
933+ if ((fJ == fJ))
934+ then {
935+ let fL = {
936+ let ax = fJ
937+ if ($isInstanceOf(ax, "Address"))
938+ then {
939+ let fM = ax
940+ invoke(fM, "emit", [dp], nil)
941+ }
942+ else unit
943+ }
944+ if ((fL == fL))
886945 then {
887- let fw = aw
888- invoke(fw, "emit", [cY], nil)
946+ let fP = if (fF)
947+ then {
948+ let fQ = invoke(be, "stake", nil, [AttachedPayment(cn, dp)])
949+ if ((fQ == fQ))
950+ then nil
951+ else throw("Strict value is not equal to itself.")
952+ }
953+ else [ScriptTransfer(dK.caller, dp, cn)]
954+ let ft = if ((ch > 0))
955+ then [ScriptTransfer(aJ, ch, fromBase58String(ck))]
956+ else nil
957+ $Tuple2(((cG ++ fP) ++ ft), dp)
889958 }
890- else unit
959+ else throw("Strict value is not equal to itself.")
891960 }
892- if ((fv == fv))
893- then {
894- let fz = if (fp)
895- then {
896- let fA = invoke(aN, "stake", nil, [AttachedPayment(bW, cY)])
897- if ((fA == fA))
898- then nil
899- else throw("Strict value is not equal to itself.")
900- }
901- else [ScriptTransfer(dt.caller, cY, bW)]
902- let fd = if ((bQ > 0))
903- then [ScriptTransfer(aG, bQ, fromBase58String(bT))]
904- else nil
905- $Tuple2(((cp ++ fz) ++ fd), cY)
906- }
907- else throw("Strict value is not equal to itself.")
908- }
909- else throw("Strict value is not equal to itself.")
910- }
911-
912-
913-
914-@Callable(dt)
915-func putForFree (fD) = if ((0 > fD))
916- then throw("Wrong slpg")
917- else if ((size(dt.payments) != 2))
918- then throw("2 pmnts expd")
919- else {
920- let fE = dv(toString(dt.caller), toBase58String(dt.transactionId), AttachedPayment(value(dt.payments[0]).assetId, value(dt.payments[0]).amount), dt.payments[1], fD, false, false, true, 0, "")
921- fE._9
961+ else throw("Strict value is not equal to itself.")
922962 }
923-
924-
925-
926-@Callable(dt)
927-func get () = {
928- let cL = ds(dt)
929- let fF = cL._1
930- let co = cL._2
931- let cz = cL._3
932- let bT = cL._4
933- let cp = cL._5
934- let ei = invoke(aC, "burn", [cz], [AttachedPayment(bT, cz)])
935- if ((ei == ei))
936- then cp
937963 else throw("Strict value is not equal to itself.")
938964 }
939965
940966
941967
942-@Callable(dt)
943-func getOneTknV2 (eL,eM) = {
944- let fG = eK(eL, eM, dt.payments, dt.caller, dt.originCaller, dt.transactionId)
945- let cp = fG._1
946- let eW = fG._2
947- $Tuple2(cp, eW)
968+@Callable(dK)
969+func putForFree (fW) = if ((0 > fW))
970+ then throw("Wrong slpg")
971+ else if ((size(dK.payments) != 2))
972+ then throw("2 pmnts expd")
973+ else {
974+ let fX = dM(toString(dK.caller), toBase58String(dK.transactionId), AttachedPayment(value(dK.payments[0]).assetId, value(dK.payments[0]).amount), dK.payments[1], fW, false, false, true, 0, "")
975+ fX._9
976+ }
977+
978+
979+
980+@Callable(dK)
981+func get () = {
982+ let dc = dJ(dK)
983+ let fY = dc._1
984+ let cF = dc._2
985+ let cQ = dc._3
986+ let ck = dc._4
987+ let cG = dc._5
988+ let ez = invoke(aF, "burn", [cQ], [AttachedPayment(ck, cQ)])
989+ if ((ez == ez))
990+ then cG
991+ else throw("Strict value is not equal to itself.")
948992 }
949993
950994
951995
952-@Callable(dt)
953-func getOneTknV2READONLY (eL,fH) = {
954- let eq = aH()
955- let bX = eq[t]
956- let bY = eq[u]
957- let bW = eq[s]
958- let dA = [toBigInt(bg(bX)), toBigInt(bg(bY))]
959- let fI = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(bW)), "invalid lp asset").quantity)
960- let bt = dz(dA)
961- let bs = (bt - fraction(toBigInt(fH), bt, fI))
962- let fJ = if ((eL == bX))
963- then 0
964- else if ((eL == bY))
965- then 1
966- else throw("invalid out asset id")
967- let fK = ee(dA, fJ, bs)
968- let fL = (dA[fJ] - fK)
969- let fM = max([0, toInt((fL - f))])
970- let fN = bO(fM)
971- let eV = fN._1
972- let bQ = fN._2
973- $Tuple2(nil, $Tuple2(eV, bQ))
996+@Callable(dK)
997+func getOneTknV2 (fb,fc) = {
998+ let fR = {
999+ let fk = invoke(aF, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1000+ if ($isInstanceOf(fk, "Boolean"))
1001+ then fk
1002+ else throw(($getType(fk) + " couldn't be cast to Boolean"))
1003+ }
1004+ let fZ = if (if (aH())
1005+ then true
1006+ else (aW == q))
1007+ then true
1008+ else fR
1009+ let fT = [if (!(fZ))
1010+ then true
1011+ else aD("get operation is blocked by admin"), if ((size(dK.payments) == 1))
1012+ then true
1013+ else aD("exactly 1 payment are expected")]
1014+ if ((fT == fT))
1015+ then {
1016+ let ga = fa(fb, fc, dK.payments, dK.caller, dK.originCaller, dK.transactionId)
1017+ let cG = ga._1
1018+ let fm = ga._2
1019+ $Tuple2(cG, fm)
1020+ }
1021+ else throw("Strict value is not equal to itself.")
9741022 }
9751023
9761024
9771025
978-@Callable(dt)
979-func getOneTknV2WithBonusREADONLY (eL,fH) = {
980- let eq = aH()
981- let bX = eq[t]
982- let bY = eq[u]
983- let bW = eq[s]
984- let cd = bg(bX)
985- let cf = bg(bY)
986- let fO = {
987- let eU = invoke(this, "getOneTknV2READONLY", [eL, fH], nil)
988- if ($isInstanceOf(eU, "(Int, Int)"))
989- then eU
990- else throw(($getType(eU) + " couldn't be cast to (Int, Int)"))
991- }
992- let eV = fO._1
993- let bQ = fO._2
994- let cL = bR("", bW, fH, this)
995- let cn = cL._1
996- let co = cL._2
997- let fP = (cn + co)
998- let eJ = if ((fP == 0))
999- then if ((eV == 0))
1000- then 0
1001- else throw("bonus calculation error")
1002- else fraction((eV - fP), a, fP)
1003- $Tuple2(nil, $Tuple3(eV, bQ, eJ))
1026+@Callable(dK)
1027+func getOneTknV2READONLY (fb,gb) = {
1028+ let aS = aK()
1029+ let co = aS[u]
1030+ let cp = aS[v]
1031+ let cn = aS[t]
1032+ let dR = [toBigInt(bx(co)), toBigInt(bx(cp))]
1033+ let gc = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(cn)), "invalid lp asset").quantity)
1034+ let bK = dQ(dR)
1035+ let bJ = (bK - fraction(toBigInt(gb), bK, gc))
1036+ let gd = if ((fb == co))
1037+ then 0
1038+ else if ((fb == cp))
1039+ then 1
1040+ else throw("invalid out asset id")
1041+ let ge = ev(dR, gd, bJ)
1042+ let gf = (dR[gd] - ge)
1043+ let gg = max([0, toInt((gf - f))])
1044+ let gh = cf(gg)
1045+ let fl = gh._1
1046+ let ch = gh._2
1047+ $Tuple2(nil, $Tuple2(fl, ch))
10041048 }
10051049
10061050
10071051
1008-@Callable(dt)
1009-func getNoLess (fQ,fR) = {
1010- let cL = ds(dt)
1011- let cn = cL._1
1012- let co = cL._2
1013- let cz = cL._3
1014- let bT = cL._4
1015- let cp = cL._5
1016- if ((fQ > cn))
1017- then throw(((("Failed: " + toString(cn)) + " < ") + toString(fQ)))
1018- else if ((fR > co))
1019- then throw(((("Failed: " + toString(co)) + " < ") + toString(fR)))
1052+@Callable(dK)
1053+func getOneTknV2WithBonusREADONLY (fb,gb) = {
1054+ let aS = aK()
1055+ let co = aS[u]
1056+ let cp = aS[v]
1057+ let cn = aS[t]
1058+ let cu = bx(co)
1059+ let cw = bx(cp)
1060+ let gi = {
1061+ let fk = invoke(this, "getOneTknV2READONLY", [fb, gb], nil)
1062+ if ($isInstanceOf(fk, "(Int, Int)"))
1063+ then fk
1064+ else throw(($getType(fk) + " couldn't be cast to (Int, Int)"))
1065+ }
1066+ let fl = gi._1
1067+ let ch = gi._2
1068+ let dc = ci("", cn, gb, this)
1069+ let cE = dc._1
1070+ let cF = dc._2
1071+ let gj = (cE + cF)
1072+ let eZ = if ((gj == 0))
1073+ then if ((fl == 0))
1074+ then 0
1075+ else throw("bonus calculation error")
1076+ else fraction((fl - gj), a, gj)
1077+ $Tuple2(nil, $Tuple3(fl, ch, eZ))
1078+ }
1079+
1080+
1081+
1082+@Callable(dK)
1083+func getNoLess (gk,gl) = {
1084+ let dc = dJ(dK)
1085+ let cE = dc._1
1086+ let cF = dc._2
1087+ let cQ = dc._3
1088+ let ck = dc._4
1089+ let cG = dc._5
1090+ if ((gk > cE))
1091+ then throw(((("Failed: " + toString(cE)) + " < ") + toString(gk)))
1092+ else if ((gl > cF))
1093+ then throw(((("Failed: " + toString(cF)) + " < ") + toString(gl)))
10201094 else {
1021- let fS = invoke(aC, "burn", [cz], [AttachedPayment(bT, cz)])
1022- if ((fS == fS))
1023- then cp
1095+ let gm = invoke(aF, "burn", [cQ], [AttachedPayment(ck, cQ)])
1096+ if ((gm == gm))
1097+ then cG
10241098 else throw("Strict value is not equal to itself.")
10251099 }
10261100 }
10271101
10281102
10291103
1030-@Callable(dt)
1031-func unstakeAndGet (bP) = {
1032- let fT = if ((size(dt.payments) != 0))
1104+@Callable(dK)
1105+func unstakeAndGet (cg) = {
1106+ let gn = if ((size(dK.payments) != 0))
10331107 then throw("No pmnts expd")
10341108 else true
1035- if ((fT == fT))
1109+ if ((gn == gn))
10361110 then {
1037- let bF = aH()
1038- let fU = aL()
1039- let fu = fromBase58String(bF[s])
1040- let fV = valueOrErrorMessage(addressFromString(fU[z]), "Wr st addr")
1041- let fW = invoke(fV, "unstake", [toBase58String(fu), bP], nil)
1042- if ((fW == fW))
1111+ let bW = aK()
1112+ let go = bc()
1113+ let fK = fromBase58String(bW[t])
1114+ let gp = valueOrErrorMessage(addressFromString(go[A]), "Wr st addr")
1115+ let gq = invoke(gp, "unstake", [toBase58String(fK), cg], nil)
1116+ if ((gq == gq))
10431117 then {
1044- let cL = bR(toBase58String(dt.transactionId), toBase58String(fu), bP, dt.caller)
1045- let cb = parseIntValue(cL._9)
1046- let cp = cL._10
1047- let fX = if (if (aE())
1118+ let dc = ci(toBase58String(dK.transactionId), toBase58String(fK), cg, dK.caller)
1119+ let cs = parseIntValue(dc._9)
1120+ let cG = dc._10
1121+ let gr = if (if (aH())
10481122 then true
1049- else (cb == p))
1050- then throw(("Blocked: " + toString(cb)))
1123+ else (cs == q))
1124+ then throw(("Blocked: " + toString(cs)))
10511125 else true
1052- if ((fX == fX))
1126+ if ((gr == gr))
10531127 then {
1054- let fY = invoke(aC, "burn", [bP], [AttachedPayment(fu, bP)])
1055- if ((fY == fY))
1056- then cp
1128+ let gs = invoke(aF, "burn", [cg], [AttachedPayment(fK, cg)])
1129+ if ((gs == gs))
1130+ then cG
10571131 else throw("Strict value is not equal to itself.")
10581132 }
10591133 else throw("Strict value is not equal to itself.")
10651139
10661140
10671141
1068-@Callable(dt)
1069-func unstakeAndGetOneTknV2 (fZ,eL,eM) = {
1070- let fT = if ((size(dt.payments) != 0))
1071- then throw("No pmnts expd")
1072- else true
1142+@Callable(dK)
1143+func unstakeAndGetOneTknV2 (gt,fb,fc) = {
1144+ let fR = {
1145+ let fk = invoke(aF, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1146+ if ($isInstanceOf(fk, "Boolean"))
1147+ then fk
1148+ else throw(($getType(fk) + " couldn't be cast to Boolean"))
1149+ }
1150+ let fZ = if (if (aH())
1151+ then true
1152+ else (aW == q))
1153+ then true
1154+ else fR
1155+ let fT = [if (!(fZ))
1156+ then true
1157+ else aD("get operation is blocked by admin"), if ((size(dK.payments) == 0))
1158+ then true
1159+ else aD("no payments are expected")]
10731160 if ((fT == fT))
10741161 then {
1075- let bF = aH()
1076- let fU = aL()
1077- let fu = fromBase58String(bF[s])
1078- let fV = valueOrErrorMessage(addressFromString(fU[z]), "Wr st addr")
1079- let fW = invoke(fV, "unstake", [toBase58String(fu), fZ], nil)
1080- if ((fW == fW))
1162+ let bW = aK()
1163+ let go = bc()
1164+ let fK = fromBase58String(bW[t])
1165+ let gp = valueOrErrorMessage(addressFromString(go[A]), "Wr st addr")
1166+ let gq = invoke(gp, "unstake", [toBase58String(fK), gt], nil)
1167+ if ((gq == gq))
10811168 then {
1082- let ga = eK(eL, eM, [AttachedPayment(fu, fZ)], dt.caller, dt.originCaller, dt.transactionId)
1083- let cp = ga._1
1084- let eW = ga._2
1085- $Tuple2(cp, eW)
1169+ let gu = fa(fb, fc, [AttachedPayment(fK, gt)], dK.caller, dK.originCaller, dK.transactionId)
1170+ let cG = gu._1
1171+ let fm = gu._2
1172+ $Tuple2(cG, fm)
10861173 }
10871174 else throw("Strict value is not equal to itself.")
10881175 }
10911178
10921179
10931180
1094-@Callable(dt)
1095-func putOneTknV2WithBonusREADONLY (gb,gc) = {
1096- let eq = aH()
1097- let bX = eq[t]
1098- let bY = eq[u]
1099- let bW = eq[s]
1100- let gd = eo(gb, gc, "", "")
1101- let eE = gd._1
1102- let cp = gd._2
1103- let bQ = gd._3
1104- let eJ = gd._4
1105- $Tuple2(nil, $Tuple3(eE, bQ, eJ))
1181+@Callable(dK)
1182+func putOneTknV2WithBonusREADONLY (gv,gw) = {
1183+ let aS = aK()
1184+ let co = aS[u]
1185+ let cp = aS[v]
1186+ let cn = aS[t]
1187+ let gx = eF(gv, gw, "", "")
1188+ let eU = gx._1
1189+ let cG = gx._2
1190+ let ch = gx._3
1191+ let eZ = gx._4
1192+ $Tuple2(nil, $Tuple3(eU, ch, eZ))
11061193 }
11071194
11081195
11091196
1110-@Callable(dt)
1111-func activate (ge,gf) = if ((toString(dt.caller) != toString(aC)))
1197+@Callable(dK)
1198+func activate (gy,gz) = if ((toString(dK.caller) != toString(aF)))
11121199 then throw("denied")
1113- else $Tuple2([StringEntry(ab(), ge), StringEntry(ac(), gf)], "success")
1200+ else $Tuple2([StringEntry(ac(), gy), StringEntry(ad(), gz)], "success")
11141201
11151202
11161203
1117-@Callable(dt)
1118-func setS (gg,fX) = if ((toString(dt.caller) != ay(this, ae())))
1119- then fh
1120- else [StringEntry(gg, fX)]
1204+@Callable(dK)
1205+func setS (gA,gr) = if ((toString(dK.caller) != az(this, af())))
1206+ then fx
1207+ else [StringEntry(gA, gr)]
11211208
11221209
11231210
1124-@Callable(dt)
1125-func setI (gg,fX) = if ((toString(dt.caller) != ay(this, ae())))
1126- then fh
1127- else [IntegerEntry(gg, fX)]
1211+@Callable(dK)
1212+func setI (gA,gr) = if ((toString(dK.caller) != az(this, af())))
1213+ then fx
1214+ else [IntegerEntry(gA, gr)]
11281215
11291216
11301217
1131-@Callable(dt)
1132-func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aH())
1218+@Callable(dK)
1219+func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aK())
11331220
11341221
11351222
1136-@Callable(dt)
1137-func getAccBalanceWrapperREADONLY (bh) = $Tuple2(nil, bg(bh))
1223+@Callable(dK)
1224+func getAccBalanceWrapperREADONLY (by) = $Tuple2(nil, bx(by))
11381225
11391226
11401227
1141-@Callable(dt)
1142-func calcPricesWrapperREADONLY (bz,bA,bE) = {
1143- let gh = bD(bz, bA, bE)
1144- $Tuple2(nil, [toString(gh[0]), toString(gh[1]), toString(gh[2])])
1228+@Callable(dK)
1229+func calcPricesWrapperREADONLY (bQ,bR,bV) = {
1230+ let gB = bU(bQ, bR, bV)
1231+ $Tuple2(nil, [toString(gB[0]), toString(gB[1]), toString(gB[2])])
11451232 }
11461233
11471234
11481235
1149-@Callable(dt)
1150-func fromX18WrapperREADONLY (I,gi) = $Tuple2(nil, H(parseBigIntValue(I), gi))
1236+@Callable(dK)
1237+func fromX18WrapperREADONLY (J,gC) = $Tuple2(nil, I(parseBigIntValue(J), gC))
11511238
11521239
11531240
1154-@Callable(dt)
1155-func toX18WrapperREADONLY (F,G) = $Tuple2(nil, toString(E(F, G)))
1241+@Callable(dK)
1242+func toX18WrapperREADONLY (G,H) = $Tuple2(nil, toString(F(G, H)))
11561243
11571244
11581245
1159-@Callable(dt)
1160-func calcPriceBigIntWrapperREADONLY (bj,bk) = $Tuple2(nil, toString(bi(parseBigIntValue(bj), parseBigIntValue(bk))))
1246+@Callable(dK)
1247+func calcPriceBigIntWrapperREADONLY (bA,bB) = $Tuple2(nil, toString(bz(parseBigIntValue(bA), parseBigIntValue(bB))))
11611248
11621249
11631250
1164-@Callable(dt)
1165-func estimatePutOperationWrapperREADONLY (bS,bo,cr,cs,ct,cu,gj,cv,cw) = $Tuple2(nil, cq(bS, bo, cr, cs, ct, cu, gj, cv, cw, true, false, 0, ""))
1251+@Callable(dK)
1252+func estimatePutOperationWrapperREADONLY (cj,bF,cI,cJ,cK,cL,gD,cM,cN) = $Tuple2(nil, cH(cj, bF, cI, cJ, cK, cL, gD, cM, cN, true, false, 0, ""))
11661253
11671254
11681255
1169-@Callable(dt)
1170-func estimateGetOperationWrapperREADONLY (bS,gk,bU,gj) = {
1171- let cL = bR(bS, gk, bU, addressFromStringValue(gj))
1172- $Tuple2(nil, $Tuple10(cL._1, cL._2, cL._3, cL._4, cL._5, cL._6, cL._7, toString(cL._8), cL._9, cL._10))
1256+@Callable(dK)
1257+func estimateGetOperationWrapperREADONLY (cj,gE,cl,gD) = {
1258+ let dc = ci(cj, gE, cl, addressFromStringValue(gD))
1259+ $Tuple2(nil, $Tuple10(dc._1, dc._2, dc._3, dc._4, dc._5, dc._6, dc._7, toString(dc._8), dc._9, dc._10))
11731260 }
11741261
11751262
11761263
1177-@Callable(dt)
1178-func getFeeREADONLY () = $Tuple2(nil, ag)
1264+@Callable(dK)
1265+func getFeeREADONLY () = $Tuple2(nil, ah)
11791266
11801267
1181-@Verifier(gl)
1182-func gm () = {
1183- let gn = {
1184- let aw = ff()
1185- if ($isInstanceOf(aw, "ByteVector"))
1268+@Verifier(gF)
1269+func gG () = {
1270+ let gH = {
1271+ let ax = fv()
1272+ if ($isInstanceOf(ax, "ByteVector"))
11861273 then {
1187- let fj = aw
1188- fj
1274+ let fz = ax
1275+ fz
11891276 }
1190- else if ($isInstanceOf(aw, "Unit"))
1191- then gl.senderPublicKey
1277+ else if ($isInstanceOf(ax, "Unit"))
1278+ then gF.senderPublicKey
11921279 else throw("Match error")
11931280 }
1194- let aw = gl
1195- if ($isInstanceOf(aw, "Order"))
1281+ let ax = gF
1282+ if ($isInstanceOf(ax, "Order"))
11961283 then {
1197- let dg = aw
1198- let go = aF()
1199- let gp = df(dg)
1200- let gq = sigVerify(dg.bodyBytes, dg.proofs[0], dg.senderPublicKey)
1201- let gr = sigVerify(dg.bodyBytes, dg.proofs[1], go)
1202- if (if (if (gp)
1203- then gq
1284+ let dx = ax
1285+ let gI = aI()
1286+ let gJ = dw(dx)
1287+ let gK = sigVerify(dx.bodyBytes, dx.proofs[0], dx.senderPublicKey)
1288+ let gL = sigVerify(dx.bodyBytes, dx.proofs[1], gI)
1289+ if (if (if (gJ)
1290+ then gK
12041291 else false)
1205- then gr
1292+ then gL
12061293 else false)
12071294 then true
1208- else ar(gp, gq, gr)
1295+ else as(gJ, gK, gL)
12091296 }
1210- else if ($isInstanceOf(aw, "SetScriptTransaction"))
1297+ else if ($isInstanceOf(ax, "SetScriptTransaction"))
12111298 then {
1212- let dG = aw
1213- let gs = blake2b256(value(dG.script))
1214- let gt = fromBase64String(value(getString(aC, ap())))
1215- let gu = scriptHash(this)
1216- if (if ((gt == gs))
1217- then (gu != gs)
1299+ let dX = ax
1300+ let gM = blake2b256(value(dX.script))
1301+ let gN = fromBase64String(value(getString(aF, aq())))
1302+ let gO = scriptHash(this)
1303+ if (if ((gN == gM))
1304+ then (gO != gM)
12181305 else false)
12191306 then true
1220- else sigVerify(gl.bodyBytes, gl.proofs[0], gn)
1307+ else sigVerify(gF.bodyBytes, gF.proofs[0], gH)
12211308 }
1222- else sigVerify(gl.bodyBytes, gl.proofs[0], gn)
1309+ else sigVerify(gF.bodyBytes, gF.proofs[0], gH)
12231310 }
12241311
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((a - ((a * 1) / a)))
1919
20-let i = "100"
20+let i = "WAVES"
2121
22-let j = "1"
22+let j = "100"
2323
24-let k = "__"
24+let k = "1"
2525
26-let l = ""
26+let l = "__"
2727
28-let m = 1
28+let m = ""
2929
30-let n = 2
30+let n = 1
3131
32-let o = 3
32+let o = 2
3333
34-let p = 4
34+let p = 3
3535
36-let q = 1
36+let q = 4
3737
38-let r = 2
38+let r = 1
3939
40-let s = 3
40+let s = 2
4141
42-let t = 4
42+let t = 3
4343
44-let u = 5
44+let u = 4
4545
46-let v = 6
46+let v = 5
4747
48-let w = 7
48+let w = 6
4949
50-let x = 8
50+let x = 7
5151
52-let y = 9
52+let y = 8
5353
54-let z = 1
54+let z = 9
5555
56-let A = 6
56+let A = 1
5757
58-let B = 7
58+let B = 6
5959
60-let C = 10
60+let C = 7
6161
62-let D = fraction(5, a, 10000)
62+let D = 10
6363
64-func E (F,G) = fraction(toBigInt(F), c, toBigInt(G))
64+let E = fraction(5, a, 10000)
65+
66+func F (G,H) = fraction(toBigInt(G), c, toBigInt(H))
6567
6668
67-func H (I,J) = toInt(fraction(I, toBigInt(J), c))
69+func I (J,K) = toInt(fraction(J, toBigInt(K), c))
6870
6971
70-func K (L,M,N) = fraction(L, M, N)
72+func L (M,N,O) = fraction(M, N, O)
7173
7274
73-func O (I) = if ((d > I))
74- then -(I)
75- else I
75+func P (J) = if ((d > J))
76+ then -(J)
77+ else J
7678
7779
78-func P (I) = if ((d > I))
79- then -(I)
80- else I
80+func Q (J) = if ((d > J))
81+ then -(J)
82+ else J
8183
8284
83-func Q () = "%s__factoryContract"
85+func R () = "%s__factoryContract"
8486
8587
86-func R () = "%s__managerPublicKey"
88+func S () = "%s__managerPublicKey"
8789
8890
89-func S () = "%s__pendingManagerPublicKey"
91+func T () = "%s__pendingManagerPublicKey"
9092
9193
92-func T () = "%s%s__price__last"
94+func U () = "%s%s__price__last"
9395
9496
95-func U (V,W) = makeString(["%s%s%d%d__price__history", toString(V), toString(W)], k)
97+func V (W,X) = makeString(["%s%s%d%d__price__history", toString(W), toString(X)], l)
9698
9799
98-func X (Y,Z) = ((("%s%s%s__P__" + Y) + "__") + Z)
100+func Y (Z,aa) = ((("%s%s%s__P__" + Z) + "__") + aa)
99101
100102
101-func aa (Y,Z) = ((("%s%s%s__G__" + Y) + "__") + Z)
103+func ab (Z,aa) = ((("%s%s%s__G__" + Z) + "__") + aa)
102104
103105
104-func ab () = "%s__amountAsset"
106+func ac () = "%s__amountAsset"
105107
106108
107-func ac () = "%s__priceAsset"
109+func ad () = "%s__priceAsset"
108110
109111
110-func ad () = "%s__amp"
112+func ae () = "%s__amp"
111113
112114
113-func ae () = "%s__addonAddr"
115+func af () = "%s__addonAddr"
114116
115117
116-let af = "%s__fee"
118+let ag = "%s__fee"
117119
118-let ag = valueOrElse(getInteger(this, af), D)
120+let ah = valueOrElse(getInteger(this, ag), E)
119121
120-func ah () = "%s__factoryConfig"
122+func ai () = "%s__factoryConfig"
121123
122124
123-func ai () = "%s%s__matcher__publicKey"
125+func aj () = "%s%s__matcher__publicKey"
124126
125127
126-func aj (ak,al) = (((("%d%d%s__" + ak) + "__") + al) + "__config")
128+func ak (al,am) = (((("%d%d%s__" + al) + "__") + am) + "__config")
127129
128130
129-func am (an) = ("%s%s%s__mappings__baseAsset2internalId__" + an)
131+func an (ao) = ("%s%s%s__mappings__baseAsset2internalId__" + ao)
130132
131133
132-func ao () = "%s__shutdown"
134+func ap () = "%s__shutdown"
133135
134136
135-func ap () = "%s__allowedLpStableScriptHash"
137+func aq () = "%s__allowedLpStableScriptHash"
136138
137139
138-func aq () = "%s__feeCollectorAddress"
140+func ar () = "%s__feeCollectorAddress"
139141
140142
141-func ar (as,at,au) = throw(((((("Failed: ordValid=" + toString(as)) + " sndrValid=") + toString(at)) + " mtchrValid=") + toString(au)))
143+func as (at,au,av) = throw(((((("Failed: ordValid=" + toString(at)) + " sndrValid=") + toString(au)) + " mtchrValid=") + toString(av)))
142144
143145
144-func av (I) = {
145- let aw = I
146- if ($isInstanceOf(aw, "String"))
146+func aw (J) = {
147+ let ax = J
148+ if ($isInstanceOf(ax, "String"))
147149 then {
148- let ax = aw
149- ax
150+ let ay = ax
151+ ay
150152 }
151153 else throw("fail cast to String")
152154 }
153155
154156
155-func ay (az,aA) = valueOrErrorMessage(getString(az, aA), makeString(["mandatory ", toString(az), ".", aA, " not defined"], ""))
157+func az (aA,aB) = valueOrErrorMessage(getString(aA, aB), makeString(["mandatory ", toString(aA), ".", aB, " not defined"], ""))
156158
157159
158-func aB (az,aA) = valueOrErrorMessage(getInteger(az, aA), makeString(["mandatory ", toString(az), ".", aA, " not defined"], ""))
160+func aC (aA,aB) = valueOrErrorMessage(getInteger(aA, aB), makeString(["mandatory ", toString(aA), ".", aB, " not defined"], ""))
159161
160162
161-let aC = addressFromStringValue(ay(this, Q()))
162-
163-let aD = ay(this, ad())
164-
165-func aE () = valueOrElse(getBoolean(aC, ao()), false)
163+func aD (aE) = throw(makeString(["lp_stable.ride:", aE], " "))
166164
167165
168-func aF () = fromBase58String(ay(aC, ai()))
166+let aF = addressFromStringValue(az(this, R()))
167+
168+let aG = az(this, ae())
169+
170+func aH () = valueOrElse(getBoolean(aF, ap()), false)
169171
170172
171-let aG = addressFromStringValue(ay(aC, aq()))
173+func aI () = fromBase58String(az(aF, aj()))
172174
173-func aH () = {
174- let aI = ay(this, ab())
175- let aJ = ay(this, ac())
176- let aK = aB(aC, am(aJ))
177- let ak = aB(aC, am(aI))
178- split(ay(aC, aj(toString(ak), toString(aK))), k)
175+
176+let aJ = addressFromStringValue(az(aF, ar()))
177+
178+func aK () = {
179+ let aL = az(this, ac())
180+ let aM = az(this, ad())
181+ let aN = aC(aF, an(aM))
182+ let al = aC(aF, an(aL))
183+ split(az(aF, ak(toString(al), toString(aN))), l)
179184 }
180185
181186
182-func aL () = split(ay(aC, ah()), k)
187+func aO (aP) = if ((aP == i))
188+ then unit
189+ else fromBase58String(aP)
183190
184191
185-let aM = aL()
186-
187-let aN = valueOrErrorMessage(addressFromString(aM[z]), "Invalid staking contract address")
188-
189-let aO = valueOrErrorMessage(addressFromString(aM[B]), "Invalid slipage contract address")
190-
191-let aP = valueOrErrorMessage(addressFromString(aM[C]), "Invalid gwx contract address")
192-
193-let aQ = valueOrErrorMessage(addressFromString(aM[A]), "Invalid gwx contract address")
194-
195-func aR (aS,aT,aU,aV,aW,aX,aY,aZ,ba,bb) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(aS), toString(aT), toString(aU), toString(aV), toString(aW), toString(aX), toString(aY), toString(aZ), toString(ba), toString(bb)], k)
192+func aQ (aP) = if ((aP == unit))
193+ then i
194+ else toBase58String(value(aP))
196195
197196
198-func bc (bd,be,bf,aV,aY,aZ) = makeString(["%d%d%d%d%d%d", toString(bd), toString(be), toString(bf), toString(aV), toString(aY), toString(aZ)], k)
197+func aR (aS) = $Tuple7(addressFromStringValue(aS[r]), parseIntValue(aS[s]), fromBase58String(aS[t]), aO(aS[u]), aO(aS[v]), parseIntValue(aS[w]), parseIntValue(aS[x]))
199198
200199
201-func bg (bh) = if ((bh == "WAVES"))
202- then wavesBalance(this).available
203- else assetBalance(this, fromBase58String(bh))
200+let aT = aR(aK())
201+
202+let aU = aT
203+
204+let aV = aU._1
205+
206+let aW = aU._2
207+
208+let aX = aU._3
209+
210+let aY = aU._4
211+
212+let aZ = aU._5
213+
214+let ba = aU._6
215+
216+let bb = aU._7
217+
218+func bc () = split(az(aF, ai()), l)
204219
205220
206-func bi (bj,bk) = fraction(bj, c, bk)
221+let bd = bc()
222+
223+let be = valueOrErrorMessage(addressFromString(bd[A]), "Invalid staking contract address")
224+
225+let bf = valueOrErrorMessage(addressFromString(bd[C]), "Invalid slipage contract address")
226+
227+let bg = valueOrErrorMessage(addressFromString(bd[D]), "Invalid gwx contract address")
228+
229+let bh = valueOrErrorMessage(addressFromString(bd[B]), "Invalid gwx contract address")
230+
231+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)], l)
207232
208233
209-func bl (bm,bn,bo) = {
210- let bp = fraction((bm - bn), b, bn)
211- let bq = ((bo - O(bp)) > d)
212- if (!(bq))
213- then throw(("Big slpg: " + toString(bp)))
214- else $Tuple2(bq, min([bm, bn]))
234+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)], l)
235+
236+
237+func bx (by) = if ((by == "WAVES"))
238+ then wavesBalance(this).available
239+ else assetBalance(this, fromBase58String(by))
240+
241+
242+func bz (bA,bB) = fraction(bA, c, bB)
243+
244+
245+func bC (bD,bE,bF) = {
246+ let bG = fraction((bD - bE), b, bE)
247+ let bH = ((bF - P(bG)) > d)
248+ if (!(bH))
249+ then throw(("Big slpg: " + toString(bG)))
250+ else $Tuple2(bH, min([bD, bE]))
215251 }
216252
217253
218-func br (bs,bt,bu) = {
219- let bp = fraction(bt, b, bs)
220- let bv = (bu > bp)
221- if (if (bv)
254+func bI (bJ,bK,bL) = {
255+ let bG = fraction(bK, b, bJ)
256+ let bM = (bL > bG)
257+ if (if (bM)
222258 then true
223- else (bt > bs))
224- then throw(((((((toString(bt) + " ") + toString(bs)) + " ") + toString(bp)) + " ") + toString(bu)))
225- else bv
259+ else (bK > bJ))
260+ then throw(((((((toString(bK) + " ") + toString(bJ)) + " ") + toString(bG)) + " ") + toString(bL)))
261+ else bM
226262 }
227263
228264
229-func bw (bx,by,bz,bA) = {
230- let bB = E(bz, bx)
231- let bC = E(bA, by)
232- bi(bC, bB)
265+func bN (bO,bP,bQ,bR) = {
266+ let bS = F(bQ, bO)
267+ let bT = F(bR, bP)
268+ bz(bT, bS)
233269 }
234270
235271
236-func bD (bz,bA,bE) = {
237- let bF = aH()
238- let bG = parseIntValue(bF[v])
239- let bH = parseIntValue(bF[w])
240- let bI = bw(bG, bH, bz, bA)
241- let bk = E(bz, bG)
242- let bj = E(bA, bH)
243- let bJ = E(bE, a)
244- let bK = bi(bk, bJ)
245- let bL = bi(bj, bJ)
246-[bI, bK, bL]
272+func bU (bQ,bR,bV) = {
273+ let bW = aK()
274+ let bX = parseIntValue(bW[w])
275+ let bY = parseIntValue(bW[x])
276+ let bZ = bN(bX, bY, bQ, bR)
277+ let bB = F(bQ, bX)
278+ let bA = F(bR, bY)
279+ let ca = F(bV, a)
280+ let cb = bz(bB, ca)
281+ let cc = bz(bA, ca)
282+[bZ, cb, cc]
247283 }
248284
249285
250-func bM (bz,bA,bE) = {
251- let bN = bD(bz, bA, bE)
252-[H(bN[0], a), H(bN[1], a), H(bN[2], a)]
286+func cd (bQ,bR,bV) = {
287+ let ce = bU(bQ, bR, bV)
288+[I(ce[0], a), I(ce[1], a), I(ce[2], a)]
253289 }
254290
255291
256-func bO (bP) = {
257- let bQ = fraction(bP, ag, a)
258- $Tuple2((bP - bQ), bQ)
292+func cf (cg) = {
293+ let ch = fraction(cg, ah, a)
294+ $Tuple2((cg - ch), ch)
259295 }
260296
261297
262-func bR (bS,bT,bU,bV) = {
263- let bF = aH()
264- let bW = bF[s]
265- let bX = bF[t]
266- let bY = bF[u]
267- let bZ = parseIntValue(bF[v])
268- let ca = parseIntValue(bF[w])
269- let cb = bF[r]
270- let cc = valueOrErrorMessage(assetInfo(fromBase58String(bW)), "Wrong LP id").quantity
271- if ((bW != bT))
298+func ci (cj,ck,cl,cm) = {
299+ let bW = aK()
300+ let cn = bW[t]
301+ let co = bW[u]
302+ let cp = bW[v]
303+ let cq = parseIntValue(bW[w])
304+ let cr = parseIntValue(bW[x])
305+ let cs = bW[s]
306+ let ct = valueOrErrorMessage(assetInfo(fromBase58String(cn)), "Wrong LP id").quantity
307+ if ((cn != ck))
272308 then throw("Wrong pmt asset")
273309 else {
274- let cd = bg(bX)
275- let ce = E(cd, bZ)
276- let cf = bg(bY)
277- let cg = E(cf, ca)
278- let ch = bi(cg, ce)
279- let ci = H(ch, a)
280- let cj = E(bU, a)
281- let ck = E(cc, a)
282- let cl = fraction(ce, cj, ck)
283- let cm = fraction(cg, cj, ck)
284- let cn = H(cl, bZ)
285- let co = H(cm, ca)
286- let cp = if ((bS == ""))
310+ let cu = bx(co)
311+ let cv = F(cu, cq)
312+ let cw = bx(cp)
313+ let cx = F(cw, cr)
314+ let cy = bz(cx, cv)
315+ let cz = I(cy, a)
316+ let cA = F(cl, a)
317+ let cB = F(ct, a)
318+ let cC = fraction(cv, cA, cB)
319+ let cD = fraction(cx, cA, cB)
320+ let cE = I(cC, cq)
321+ let cF = I(cD, cr)
322+ let cG = if ((cj == ""))
287323 then nil
288- else [ScriptTransfer(bV, cn, if ((bX == "WAVES"))
324+ else [ScriptTransfer(cm, cE, if ((co == "WAVES"))
289325 then unit
290- else fromBase58String(bX)), ScriptTransfer(bV, co, if ((bY == "WAVES"))
326+ else fromBase58String(co)), ScriptTransfer(cm, cF, if ((cp == "WAVES"))
291327 then unit
292- else fromBase58String(bY)), StringEntry(aa(toString(bV), bS), bc(cn, co, bU, ci, height, lastBlock.timestamp)), IntegerEntry(T(), ci), IntegerEntry(U(height, lastBlock.timestamp), ci)]
293- $Tuple10(cn, co, bX, bY, cd, cf, cc, ch, cb, cp)
328+ else fromBase58String(cp)), StringEntry(ab(toString(cm), cj), bt(cE, cF, cl, cz, height, lastBlock.timestamp)), IntegerEntry(U(), cz), IntegerEntry(V(height, lastBlock.timestamp), cz)]
329+ $Tuple10(cE, cF, co, cp, cu, cw, ct, cy, cs, cG)
294330 }
295331 }
296332
297333
298-func cq (bS,bo,cr,cs,ct,cu,bV,cv,cw,cx,cy,cz,cA) = {
299- let bF = aH()
300- let bW = fromBase58String(bF[s])
301- let cB = bF[t]
302- let cC = bF[u]
303- let cD = bF[x]
304- let cE = bF[y]
305- let cF = parseIntValue(bF[v])
306- let cG = parseIntValue(bF[w])
307- let cb = bF[r]
308- let cH = valueOrErrorMessage(assetInfo(bW), "Wr lp as").quantity
309- let cd = if (cv)
310- then bg(cB)
311- else if (if (cx)
312- then (cA == cB)
334+func cH (cj,bF,cI,cJ,cK,cL,cm,cM,cN,cO,cP,cQ,cR) = {
335+ let bW = aK()
336+ let cn = fromBase58String(bW[t])
337+ let cS = bW[u]
338+ let cT = bW[v]
339+ let cU = bW[y]
340+ let cV = bW[z]
341+ let cW = parseIntValue(bW[w])
342+ let cX = parseIntValue(bW[x])
343+ let cs = bW[s]
344+ let cY = valueOrErrorMessage(assetInfo(cn), "Wr lp as").quantity
345+ let cu = if (cM)
346+ then bx(cS)
347+ else if (if (cO)
348+ then (cR == cS)
313349 else false)
314- then (bg(cB) - cz)
315- else if (cx)
316- then bg(cB)
317- else (bg(cB) - cr)
318- let cf = if (cv)
319- then bg(cC)
320- else if (if (cx)
321- then (cA == cC)
350+ then (bx(cS) - cQ)
351+ else if (cO)
352+ then bx(cS)
353+ else (bx(cS) - cI)
354+ let cw = if (cM)
355+ then bx(cT)
356+ else if (if (cO)
357+ then (cR == cT)
322358 else false)
323- then (bg(cC) - cz)
324- else if (cx)
325- then bg(cC)
326- else (bg(cC) - ct)
327- let cI = E(cr, cF)
328- let cJ = E(ct, cG)
329- let cK = bi(cJ, cI)
330- let ce = E(cd, cF)
331- let cg = E(cf, cG)
332- let cL = if ((cH == 0))
359+ then (bx(cT) - cQ)
360+ else if (cO)
361+ then bx(cT)
362+ else (bx(cT) - cK)
363+ let cZ = F(cI, cW)
364+ let da = F(cK, cX)
365+ let db = bz(da, cZ)
366+ let cv = F(cu, cW)
367+ let cx = F(cw, cX)
368+ let dc = if ((cY == 0))
333369 then {
334- let ch = d
335- let cM = d
336- let bJ = pow((cI * cJ), 0, toBigInt(5), 1, 0, DOWN)
337- $Tuple5(H(bJ, a), H(cI, cF), H(cJ, cG), bi((cg + cJ), (ce + cI)), cM)
370+ let cy = d
371+ let dd = d
372+ let ca = pow((cZ * da), 0, toBigInt(5), 1, 0, DOWN)
373+ $Tuple5(I(ca, a), I(cZ, cW), I(da, cX), bz((cx + da), (cv + cZ)), dd)
338374 }
339375 else {
340- let ch = bi(cg, ce)
341- let cN = fraction(O((ch - cK)), c, ch)
342- let cM = E(bo, a)
343- if (if (if (cy)
344- then (ch != d)
376+ let cy = bz(cx, cv)
377+ let de = fraction(P((cy - db)), c, cy)
378+ let dd = F(bF, a)
379+ if (if (if (cP)
380+ then (cy != d)
345381 else false)
346- then (cN > cM)
382+ then (de > dd)
347383 else false)
348- then throw(((("Price slippage " + toString(cN)) + " > ") + toString(cM)))
384+ then throw(((("Price slippage " + toString(de)) + " > ") + toString(dd)))
349385 else {
350- let cO = E(cH, a)
351- let cP = fraction(cI, ch, c)
352- let cQ = fraction(cJ, c, ch)
353- let cR = if ((cP > cJ))
354- then $Tuple2(cQ, cJ)
355- else $Tuple2(cI, cP)
356- let cS = cR._1
357- let cT = cR._2
358- let bJ = fraction(cO, cT, cg)
359- $Tuple5(H(bJ, a), H(cS, cF), H(cT, cG), ch, cM)
386+ let df = F(cY, a)
387+ let dg = fraction(cZ, cy, c)
388+ let dh = fraction(da, c, cy)
389+ let di = if ((dg > da))
390+ then $Tuple2(dh, da)
391+ else $Tuple2(cZ, dg)
392+ let dj = di._1
393+ let dk = di._2
394+ let ca = fraction(df, dk, cx)
395+ $Tuple5(I(ca, a), I(dj, cW), I(dk, cX), cy, dd)
360396 }
361397 }
362- let cU = cL._1
363- let cV = cL._2
364- let cW = cL._3
365- let ci = H(cL._4, a)
366- let cX = H(cL._5, a)
367- if ((0 >= cU))
398+ let dl = dc._1
399+ let dm = dc._2
400+ let dn = dc._3
401+ let cz = I(dc._4, a)
402+ let do = I(dc._5, a)
403+ if ((0 >= dl))
368404 then throw("LP <= 0")
369405 else {
370- let cY = if (!(cw))
406+ let dp = if (!(cN))
371407 then 0
372- else cU
373- let cZ = (cr - cV)
374- let da = (ct - cW)
375- let db = if (if (cx)
376- then (cA == cB)
408+ else dl
409+ let dq = (cI - dm)
410+ let dr = (cK - dn)
411+ let ds = if (if (cO)
412+ then (cR == cS)
377413 else false)
378- then $Tuple2(cz, 0)
379- else if (if (cx)
380- then (cA == cC)
414+ then $Tuple2(cQ, 0)
415+ else if (if (cO)
416+ then (cR == cT)
381417 else false)
382- then $Tuple2(0, cz)
383- else $Tuple2(cV, cW)
384- let dc = db._1
385- let dd = db._2
386- let de = [IntegerEntry(T(), ci), IntegerEntry(U(height, lastBlock.timestamp), ci), StringEntry(X(bV, bS), aR(dc, dd, cY, ci, bo, cX, height, lastBlock.timestamp, cZ, da))]
387- $Tuple13(cU, cY, ci, cd, cf, cH, bW, cb, de, cZ, da, cs, cu)
418+ then $Tuple2(0, cQ)
419+ else $Tuple2(dm, dn)
420+ let dt = ds._1
421+ let du = ds._2
422+ let dv = [IntegerEntry(U(), cz), IntegerEntry(V(height, lastBlock.timestamp), cz), StringEntry(Y(cm, cj), bi(dt, du, dp, cz, bF, do, height, lastBlock.timestamp, dq, dr))]
423+ $Tuple13(dl, dp, cz, cu, cw, cY, cn, cs, dv, dq, dr, cJ, cL)
388424 }
389425 }
390426
391427
392-func df (dg) = {
393- let bF = aH()
394- let dh = bF[t]
395- let di = bF[u]
396- let cb = parseIntValue(bF[r])
397- let bG = parseIntValue(bF[v])
398- let bH = parseIntValue(bF[w])
399- let dj = bg(dh)
400- let dk = bg(di)
401- let ch = if ((dg.orderType == Buy))
402- then bw(bG, bH, (dj + dg.amount), dk)
403- else bw(bG, bH, (dj - dg.amount), dk)
404- let ci = H(ch, a)
405- if (if (if (aE())
428+func dw (dx) = {
429+ let bW = aK()
430+ let dy = bW[u]
431+ let dz = bW[v]
432+ let cs = parseIntValue(bW[s])
433+ let bX = parseIntValue(bW[w])
434+ let bY = parseIntValue(bW[x])
435+ let dA = bx(dy)
436+ let dB = bx(dz)
437+ let cy = if ((dx.orderType == Buy))
438+ then bN(bX, bY, (dA + dx.amount), dB)
439+ else bN(bX, bY, (dA - dx.amount), dB)
440+ let cz = I(cy, a)
441+ if (if (if (aH())
406442 then true
407- else (cb == o))
443+ else (cs == p))
408444 then true
409- else (cb == p))
445+ else (cs == q))
410446 then throw("Admin blocked")
411447 else {
412- let dl = dg.assetPair.amountAsset
413- let dm = if ((dl == unit))
448+ let dC = dx.assetPair.amountAsset
449+ let dD = if ((dC == unit))
414450 then "WAVES"
415- else toBase58String(value(dl))
416- let dn = dg.assetPair.priceAsset
417- let do = if ((dn == unit))
451+ else toBase58String(value(dC))
452+ let dE = dx.assetPair.priceAsset
453+ let dF = if ((dE == unit))
418454 then "WAVES"
419- else toBase58String(value(dn))
420- if (if ((dm != dh))
455+ else toBase58String(value(dE))
456+ if (if ((dD != dy))
421457 then true
422- else (do != di))
458+ else (dF != dz))
423459 then throw("Wr assets")
424460 else {
425- let dp = dg.price
426- let cG = fraction(a, bH, bG)
427- let dq = K(dp, a, cG)
428- let dr = if ((dg.orderType == Buy))
429- then (ci >= dq)
430- else (dq >= ci)
461+ let dG = dx.price
462+ let cX = fraction(a, bY, bX)
463+ let dH = L(dG, a, cX)
464+ let dI = if ((dx.orderType == Buy))
465+ then (cz >= dH)
466+ else (dH >= cz)
431467 true
432468 }
433469 }
434470 }
435471
436472
437-func ds (dt) = if ((size(dt.payments) != 1))
473+func dJ (dK) = if ((size(dK.payments) != 1))
438474 then throw("1 pmnt exp")
439475 else {
440- let du = value(dt.payments[0])
441- let bT = value(du.assetId)
442- let cz = du.amount
443- let cL = bR(toBase58String(dt.transactionId), toBase58String(bT), cz, dt.caller)
444- let cn = cL._1
445- let co = cL._2
446- let cb = parseIntValue(cL._9)
447- let cp = cL._10
448- if (if (aE())
476+ let dL = value(dK.payments[0])
477+ let ck = value(dL.assetId)
478+ let cQ = dL.amount
479+ let dc = ci(toBase58String(dK.transactionId), toBase58String(ck), cQ, dK.caller)
480+ let cE = dc._1
481+ let cF = dc._2
482+ let cs = parseIntValue(dc._9)
483+ let cG = dc._10
484+ if (if (aH())
449485 then true
450- else (cb == p))
451- then throw(("Admin blocked: " + toString(cb)))
452- else $Tuple5(cn, co, cz, bT, cp)
486+ else (cs == q))
487+ then throw(("Admin blocked: " + toString(cs)))
488+ else $Tuple5(cE, cF, cQ, ck, cG)
453489 }
454490
455491
456-func dv (dw,Z,dx,dy,bo,cw,cx,cy,cz,cA) = {
457- let cL = cq(Z, bo, value(dx).amount, value(dx).assetId, value(dy).amount, value(dy).assetId, dw, (Z == ""), cw, cx, cy, cz, cA)
458- let cb = parseIntValue(cL._8)
459- if (if (if (aE())
492+func dM (dN,aa,dO,dP,bF,cN,cO,cP,cQ,cR) = {
493+ let dc = cH(aa, bF, value(dO).amount, value(dO).assetId, value(dP).amount, value(dP).assetId, dN, (aa == ""), cN, cO, cP, cQ, cR)
494+ let cs = parseIntValue(dc._8)
495+ if (if (if (aH())
460496 then true
461- else (cb == n))
497+ else (cs == o))
462498 then true
463- else (cb == p))
464- then throw(("Blocked:" + toString(cb)))
465- else cL
499+ else (cs == q))
500+ then throw(("Blocked:" + toString(cs)))
501+ else dc
466502 }
467503
468504
469-func dz (dA) = {
470- let dB = g
471- let dC = dA[0]
472- let dD = dA[1]
473- let dE = parseBigIntValue(i)
474- let dF = (parseBigIntValue(aD) * dE)
475- let dG = (dC + dD)
476- if ((dG == e))
505+func dQ (dR) = {
506+ let dS = g
507+ let dT = dR[0]
508+ let dU = dR[1]
509+ let dV = parseBigIntValue(j)
510+ let dW = (parseBigIntValue(aG) * dV)
511+ let dX = (dT + dU)
512+ if ((dX == e))
477513 then e
478514 else {
479- let dH = (dF * dB)
480- let dI = (((dC * dD) * dB) * dB)
481- let dJ = ((dH * dG) / dE)
482- let dK = (dH - dE)
483- let dL = (dB + f)
484- func dM (dN,dO) = {
485- let dP = dN
486- let dQ = dP._1
487- let dR = dP._2
488- if ((dR != unit))
489- then dN
515+ let dY = (dW * dS)
516+ let dZ = (((dT * dU) * dS) * dS)
517+ let ea = ((dY * dX) / dV)
518+ let eb = (dY - dV)
519+ let ec = (dS + f)
520+ func ed (ee,ef) = {
521+ let eg = ee
522+ let eh = eg._1
523+ let ei = eg._2
524+ if ((ei != unit))
525+ then ee
490526 else {
491- let dS = (((dQ * dQ) * dQ) / dI)
492- let dT = (((dJ + (dS * dB)) * dQ) / (((dK * dQ) / dE) + (dL * dS)))
493- let dU = P((dT - value(dQ)))
494- if ((f >= dU))
495- then $Tuple2(dT, dO)
496- else $Tuple2(dT, unit)
527+ let ej = (((eh * eh) * eh) / dZ)
528+ let ek = (((ea + (ej * dS)) * eh) / (((eb * eh) / dV) + (ec * ej)))
529+ let el = Q((ek - value(eh)))
530+ if ((f >= el))
531+ then $Tuple2(ek, ef)
532+ else $Tuple2(ek, unit)
497533 }
498534 }
499535
500- let dV = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
501- let dW = {
502- let dX = dV
503- let dY = size(dX)
504- let dZ = $Tuple2(dG, unit)
505- func ea (eb,ec) = if ((ec >= dY))
506- then eb
507- else dM(eb, dX[ec])
536+ let em = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
537+ let en = {
538+ let eo = em
539+ let ep = size(eo)
540+ let eq = $Tuple2(dX, unit)
541+ func er (es,et) = if ((et >= ep))
542+ then es
543+ else ed(es, eo[et])
508544
509- func ed (eb,ec) = if ((ec >= dY))
510- then eb
545+ func eu (es,et) = if ((et >= ep))
546+ then es
511547 else throw("List size exceeds 15")
512548
513- ed(ea(ea(ea(ea(ea(ea(ea(ea(ea(ea(ea(ea(ea(ea(ea(dZ, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
549+ eu(er(er(er(er(er(er(er(er(er(er(er(er(er(er(er(eq, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
514550 }
515- let dQ = dW._1
516- let dR = dW._2
517- if ((dR != unit))
518- then dQ
519- else throw(("D calculation error, D = " + toString(dQ)))
551+ let eh = en._1
552+ let ei = en._2
553+ if ((ei != unit))
554+ then eh
555+ else throw(("D calculation error, D = " + toString(eh)))
520556 }
521557 }
522558
523559
524-func ee (dA,dt,ef) = {
525- let dB = g
526- let eg = dA[if ((dt == 0))
560+func ev (dR,dK,ew) = {
561+ let dS = g
562+ let ex = dR[if ((dK == 0))
527563 then 1
528564 else 0]
529- let dE = parseBigIntValue(i)
530- let dF = (parseBigIntValue(aD) * dE)
531- let dG = eg
532- let dH = (dF * dB)
533- let eh = (((((ef * ef) / (eg * dB)) * ef) * dE) / (dH * dB))
534- let ei = ((dG + ((ef * dE) / dH)) - ef)
535- func dM (dN,dO) = {
536- let ej = dN
537- let ek = ej._1
538- let dR = ej._2
539- if ((dR != unit))
540- then dN
565+ let dV = parseBigIntValue(j)
566+ let dW = (parseBigIntValue(aG) * dV)
567+ let dX = ex
568+ let dY = (dW * dS)
569+ let ey = (((((ew * ew) / (ex * dS)) * ew) * dV) / (dY * dS))
570+ let ez = ((dX + ((ew * dV) / dY)) - ew)
571+ func ed (ee,ef) = {
572+ let eA = ee
573+ let eB = eA._1
574+ let ei = eA._2
575+ if ((ei != unit))
576+ then ee
541577 else {
542- let el = (((ek * ek) + eh) / ((g * ek) + ei))
543- let em = P((el - value(ek)))
544- if ((f >= em))
545- then $Tuple2(el, dO)
546- else $Tuple2(el, unit)
578+ let eC = (((eB * eB) + ey) / ((g * eB) + ez))
579+ let eD = Q((eC - value(eB)))
580+ if ((f >= eD))
581+ then $Tuple2(eC, ef)
582+ else $Tuple2(eC, unit)
547583 }
548584 }
549585
550- let dV = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
551- let en = {
552- let dX = dV
553- let dY = size(dX)
554- let dZ = $Tuple2(ef, unit)
555- func ea (eb,ec) = if ((ec >= dY))
556- then eb
557- else dM(eb, dX[ec])
586+ let em = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
587+ let eE = {
588+ let eo = em
589+ let ep = size(eo)
590+ let eq = $Tuple2(ew, unit)
591+ func er (es,et) = if ((et >= ep))
592+ then es
593+ else ed(es, eo[et])
558594
559- func ed (eb,ec) = if ((ec >= dY))
560- then eb
595+ func eu (es,et) = if ((et >= ep))
596+ then es
561597 else throw("List size exceeds 15")
562598
563- ed(ea(ea(ea(ea(ea(ea(ea(ea(ea(ea(ea(ea(ea(ea(ea(dZ, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
599+ eu(er(er(er(er(er(er(er(er(er(er(er(er(er(er(er(eq, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
564600 }
565- let ek = en._1
566- let dR = en._2
567- if ((dR != unit))
568- then ek
569- else throw(("Y calculation error, Y = " + toString(ek)))
601+ let eB = eE._1
602+ let ei = eE._2
603+ if ((ei != unit))
604+ then eB
605+ else throw(("Y calculation error, Y = " + toString(eB)))
570606 }
571607
572608
573-func eo (ep,bT,bV,Z) = {
574- let eq = aH()
575- let bX = eq[t]
576- let bY = eq[u]
577- let bW = eq[s]
578- let cF = parseIntValue(eq[v])
579- let cG = parseIntValue(eq[w])
580- let er = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(bW)), "invalid lp asset").quantity)
581- let es = if ((er > e))
609+func eF (eG,ck,cm,aa) = {
610+ let aS = aK()
611+ let co = aS[u]
612+ let cp = aS[v]
613+ let cn = aS[t]
614+ let cW = parseIntValue(aS[w])
615+ let cX = parseIntValue(aS[x])
616+ let eH = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(cn)), "invalid lp asset").quantity)
617+ let eI = if ((eH > e))
582618 then true
583619 else throw("initial deposit requires all coins")
584- if ((es == es))
620+ if ((eI == eI))
585621 then {
586- let cd = bg(bX)
587- let cf = bg(bY)
588- let et = if ((Z == ""))
589- then $Tuple2(cd, cf)
590- else if ((bT == bX))
591- then if ((ep > cd))
622+ let cu = bx(co)
623+ let cw = bx(cp)
624+ let eJ = if ((aa == ""))
625+ then $Tuple2(cu, cw)
626+ else if ((ck == co))
627+ then if ((eG > cu))
592628 then throw("invalid payment amount")
593- else $Tuple2((cd - ep), cf)
594- else if ((bT == bY))
595- then if ((ep > cf))
629+ else $Tuple2((cu - eG), cw)
630+ else if ((ck == cp))
631+ then if ((eG > cw))
596632 then throw("invalid payment amount")
597- else $Tuple2(cd, (cf - ep))
633+ else $Tuple2(cu, (cw - eG))
598634 else throw("wrong pmtAssetId")
599- let eu = et._1
600- let ev = et._2
601- let ew = if ((bT == bX))
602- then $Tuple2(ep, 0)
603- else if ((bT == bY))
604- then $Tuple2(0, ep)
635+ let eK = eJ._1
636+ let eL = eJ._2
637+ let eM = if ((ck == co))
638+ then $Tuple2(eG, 0)
639+ else if ((ck == cp))
640+ then $Tuple2(0, eG)
605641 else throw("invalid payment")
606- let ex = ew._1
607- let ey = ew._2
608- let ez = bO(ex)._1
609- let eA = bO(ey)._1
610- let bQ = bO(ep)._2
611- let eB = (eu + ez)
612- let eC = (ev + eA)
613- let bt = dz([toBigInt(eu), toBigInt(ev)])
614- let bs = dz([toBigInt(eB), toBigInt(eC)])
615- let eD = if ((bs > bt))
642+ let eN = eM._1
643+ let eO = eM._2
644+ let eP = cf(eN)._1
645+ let eQ = cf(eO)._1
646+ let ch = cf(eG)._2
647+ let eR = (eK + eP)
648+ let eS = (eL + eQ)
649+ let bK = dQ([toBigInt(eK), toBigInt(eL)])
650+ let bJ = dQ([toBigInt(eR), toBigInt(eS)])
651+ let eT = if ((bJ > bK))
616652 then true
617653 else throw()
618- if ((eD == eD))
654+ if ((eT == eT))
619655 then {
620- let eE = fraction(er, (bs - bt), bt)
621- let ci = H(bi(E(eC, cG), E(eB, cF)), a)
622- let de = [IntegerEntry(T(), ci), IntegerEntry(U(height, lastBlock.timestamp), ci), StringEntry(X(bV, Z), aR(ex, ey, toInt(eE), ci, 0, 0, height, lastBlock.timestamp, 0, 0))]
623- let eF = fraction(ev, a, eu)
624- let eG = fraction(ep, a, (eF + a))
625- let eH = (ep - eG)
626- let eI = fraction(er, toBigInt(eH), toBigInt(ev))
627- let eJ = toInt(fraction((eE - eI), b, eI))
628- $Tuple4(toInt(eE), de, bQ, eJ)
656+ let eU = fraction(eH, (bJ - bK), bK)
657+ let cz = I(bz(F(eS, cX), F(eR, cW)), a)
658+ let dv = [IntegerEntry(U(), cz), IntegerEntry(V(height, lastBlock.timestamp), cz), StringEntry(Y(cm, aa), bi(eN, eO, toInt(eU), cz, 0, 0, height, lastBlock.timestamp, 0, 0))]
659+ let eV = fraction(eL, a, eK)
660+ let eW = fraction(eG, a, (eV + a))
661+ let eX = (eG - eW)
662+ let eY = fraction(eH, toBigInt(eX), toBigInt(eL))
663+ let eZ = toInt(fraction((eU - eY), b, eY))
664+ $Tuple4(toInt(eU), dv, ch, eZ)
629665 }
630666 else throw("Strict value is not equal to itself.")
631667 }
632668 else throw("Strict value is not equal to itself.")
633669 }
634670
635671
636-func eK (eL,eM,eN,dw,eO,eP) = if ((size(eN) != 1))
637- then throw("1 pmnt expd")
638- else {
639- let eq = aH()
640- let bW = eq[s]
641- let bX = eq[t]
642- let bY = eq[u]
643- let eQ = parseIntValue(eq[v])
644- let eR = parseIntValue(eq[w])
645- let eS = eq[r]
646- let bV = if ((dw == aQ))
647- then eO
648- else dw
649- let du = value(eN[0])
650- let bT = value(du.assetId)
651- let cz = du.amount
652- let bS = toBase58String(eP)
653- if ((bW != toBase58String(bT)))
654- then throw("Wrong LP")
655- else {
656- let cd = bg(bX)
657- let cf = bg(bY)
658- let eT = {
659- let eU = invoke(this, "getOneTknV2READONLY", [eL, cz], nil)
660- if ($isInstanceOf(eU, "(Int, Int)"))
661- then eU
662- else throw(($getType(eU) + " couldn't be cast to (Int, Int)"))
672+func fa (fb,fc,fd,dN,fe,ff) = {
673+ let aS = aK()
674+ let cn = aS[t]
675+ let co = aS[u]
676+ let cp = aS[v]
677+ let fg = parseIntValue(aS[w])
678+ let fh = parseIntValue(aS[x])
679+ let fi = aS[s]
680+ let cm = if ((dN == bh))
681+ then fe
682+ else dN
683+ let dL = value(fd[0])
684+ let ck = value(dL.assetId)
685+ let cQ = dL.amount
686+ let cj = toBase58String(ff)
687+ if ((cn != toBase58String(ck)))
688+ then throw("Wrong LP")
689+ else {
690+ let cu = bx(co)
691+ let cw = bx(cp)
692+ let fj = {
693+ let fk = invoke(this, "getOneTknV2READONLY", [fb, cQ], nil)
694+ if ($isInstanceOf(fk, "(Int, Int)"))
695+ then fk
696+ else throw(($getType(fk) + " couldn't be cast to (Int, Int)"))
697+ }
698+ let fl = fj._1
699+ let ch = fj._2
700+ let fm = if (if ((fc > 0))
701+ then (fc > fl)
702+ else false)
703+ then throw(makeString(["amount to receive is less than ", toString(fc)], ""))
704+ else fl
705+ let fn = if ((fb == co))
706+ then $Tuple4(fm, 0, ((cu - fm) - ch), cw)
707+ else if ((fb == cp))
708+ then $Tuple4(0, fm, cu, ((cw - fm) - ch))
709+ else throw("invalid out asset id")
710+ let fo = fn._1
711+ let fp = fn._2
712+ let eR = fn._3
713+ let eS = fn._4
714+ let fq = bz(F(eS, fh), F(eR, fg))
715+ let fr = I(fq, a)
716+ let fs = if ((fb == "WAVES"))
717+ then unit
718+ else fromBase58String(fb)
719+ let ft = if ((ch > 0))
720+ then [ScriptTransfer(aJ, ch, fs)]
721+ else nil
722+ let cG = ([ScriptTransfer(cm, fm, fs), StringEntry(ab(toString(cm), cj), bt(fo, fp, cQ, fr, height, lastBlock.timestamp)), IntegerEntry(U(), fr), IntegerEntry(V(height, lastBlock.timestamp), fr)] ++ ft)
723+ if ((cG == cG))
724+ then {
725+ let fu = invoke(aF, "burn", [cQ], [AttachedPayment(ck, cQ)])
726+ if ((fu == fu))
727+ then $Tuple2(cG, fm)
728+ else throw("Strict value is not equal to itself.")
663729 }
664- let eV = eT._1
665- let bQ = eT._2
666- let eW = if (if ((eM > 0))
667- then (eM > eV)
668- else false)
669- then throw(makeString(["amount to receive is less than ", toString(eM)], ""))
670- else eV
671- let eX = if ((eL == bX))
672- then $Tuple4(eW, 0, ((cd - eW) - bQ), cf)
673- else if ((eL == bY))
674- then $Tuple4(0, eW, cd, ((cf - eW) - bQ))
675- else throw("invalid out asset id")
676- let eY = eX._1
677- let eZ = eX._2
678- let eB = eX._3
679- let eC = eX._4
680- let fa = bi(E(eC, eR), E(eB, eQ))
681- let fb = H(fa, a)
682- let fc = if ((eL == "WAVES"))
683- then unit
684- else fromBase58String(eL)
685- let fd = if ((bQ > 0))
686- then [ScriptTransfer(aG, bQ, fc)]
687- else nil
688- let cp = ([ScriptTransfer(bV, eW, fc), StringEntry(aa(toString(bV), bS), bc(eY, eZ, cz, fb, height, lastBlock.timestamp)), IntegerEntry(T(), fb), IntegerEntry(U(height, lastBlock.timestamp), fb)] ++ fd)
689- if ((cp == cp))
690- then {
691- let fe = invoke(aC, "burn", [cz], [AttachedPayment(bT, cz)])
692- if ((fe == fe))
693- then $Tuple2(cp, eW)
694- else throw("Strict value is not equal to itself.")
695- }
696- else throw("Strict value is not equal to itself.")
697- }
698- }
730+ else throw("Strict value is not equal to itself.")
731+ }
732+ }
699733
700734
701-func ff () = {
702- let aw = getString(R())
703- if ($isInstanceOf(aw, "String"))
735+func fv () = {
736+ let ax = getString(S())
737+ if ($isInstanceOf(ax, "String"))
704738 then {
705- let dG = aw
706- fromBase58String(dG)
739+ let dX = ax
740+ fromBase58String(dX)
707741 }
708- else if ($isInstanceOf(aw, "Unit"))
742+ else if ($isInstanceOf(ax, "Unit"))
709743 then unit
710744 else throw("Match error")
711745 }
712746
713747
714-func fg () = {
715- let aw = getString(S())
716- if ($isInstanceOf(aw, "String"))
748+func fw () = {
749+ let ax = getString(T())
750+ if ($isInstanceOf(ax, "String"))
717751 then {
718- let dG = aw
719- fromBase58String(dG)
752+ let dX = ax
753+ fromBase58String(dX)
720754 }
721- else if ($isInstanceOf(aw, "Unit"))
755+ else if ($isInstanceOf(ax, "Unit"))
722756 then unit
723757 else throw("Match error")
724758 }
725759
726760
727-let fh = throw("Permission denied")
761+let fx = throw("Permission denied")
728762
729-func fi (dt) = {
730- let aw = ff()
731- if ($isInstanceOf(aw, "ByteVector"))
763+func fy (dK) = {
764+ let ax = fv()
765+ if ($isInstanceOf(ax, "ByteVector"))
732766 then {
733- let fj = aw
734- if ((dt.callerPublicKey == fj))
767+ let fz = ax
768+ if ((dK.callerPublicKey == fz))
735769 then true
736- else fh
770+ else fx
737771 }
738- else if ($isInstanceOf(aw, "Unit"))
739- then if ((dt.caller == this))
772+ else if ($isInstanceOf(ax, "Unit"))
773+ then if ((dK.caller == this))
740774 then true
741- else fh
775+ else fx
742776 else throw("Match error")
743777 }
744778
745779
746-@Callable(dt)
747-func constructor (Q) = {
748- let eh = fi(dt)
749- if ((eh == eh))
750- then [StringEntry(Q(), Q)]
780+@Callable(dK)
781+func constructor (R) = {
782+ let ey = fy(dK)
783+ if ((ey == ey))
784+ then [StringEntry(R(), R)]
751785 else throw("Strict value is not equal to itself.")
752786 }
753787
754788
755789
756-@Callable(dt)
757-func setManager (fk) = {
758- let eh = fi(dt)
759- if ((eh == eh))
790+@Callable(dK)
791+func setManager (fA) = {
792+ let ey = fy(dK)
793+ if ((ey == ey))
760794 then {
761- let fl = fromBase58String(fk)
762- if ((fl == fl))
763- then [StringEntry(S(), fk)]
795+ let fB = fromBase58String(fA)
796+ if ((fB == fB))
797+ then [StringEntry(T(), fA)]
764798 else throw("Strict value is not equal to itself.")
765799 }
766800 else throw("Strict value is not equal to itself.")
767801 }
768802
769803
770804
771-@Callable(dt)
805+@Callable(dK)
772806 func confirmManager () = {
773- let bN = fg()
774- let fm = if (isDefined(bN))
807+ let ce = fw()
808+ let fC = if (isDefined(ce))
775809 then true
776810 else throw("No pending manager")
777- if ((fm == fm))
811+ if ((fC == fC))
778812 then {
779- let fn = if ((dt.callerPublicKey == value(bN)))
813+ let fD = if ((dK.callerPublicKey == value(ce)))
780814 then true
781815 else throw("You are not pending manager")
782- if ((fn == fn))
783- then [StringEntry(R(), toBase58String(value(bN))), DeleteEntry(S())]
816+ if ((fD == fD))
817+ then [StringEntry(S(), toBase58String(value(ce))), DeleteEntry(T())]
784818 else throw("Strict value is not equal to itself.")
785819 }
786820 else throw("Strict value is not equal to itself.")
787821 }
788822
789823
790824
791-@Callable(dt)
792-func put (fo,fp) = {
793- let fq = aL()
794- let fr = valueOrErrorMessage(addressFromString(fq[z]), "Wr st addr")
795- let fs = valueOrErrorMessage(addressFromString(fq[B]), "Wr sl addr")
796- if ((0 > fo))
825+@Callable(dK)
826+func put (fE,fF) = {
827+ let fG = bc()
828+ let fH = valueOrErrorMessage(addressFromString(fG[A]), "Wr st addr")
829+ let fI = valueOrErrorMessage(addressFromString(fG[C]), "Wr sl addr")
830+ if ((0 > fE))
797831 then throw("Wrong slippage")
798- else if ((size(dt.payments) != 2))
832+ else if ((size(dK.payments) != 2))
799833 then throw("2 pmnts expd")
800834 else {
801- let ft = dv(toString(dt.caller), toBase58String(dt.transactionId), AttachedPayment(value(dt.payments[0]).assetId, value(dt.payments[0]).amount), dt.payments[1], fo, true, false, true, 0, "")
802- let cY = ft._2
803- let fu = ft._7
804- let cp = ft._9
805- let cZ = ft._10
806- let da = ft._11
807- let bX = ft._12
808- let bY = ft._13
809- let cL = invoke(aC, "emit", [cY], nil)
810- if ((cL == cL))
835+ let fJ = dM(toString(dK.caller), toBase58String(dK.transactionId), AttachedPayment(value(dK.payments[0]).assetId, value(dK.payments[0]).amount), dK.payments[1], fE, true, false, true, 0, "")
836+ let dp = fJ._2
837+ let fK = fJ._7
838+ let cG = fJ._9
839+ let dq = fJ._10
840+ let dr = fJ._11
841+ let co = fJ._12
842+ let cp = fJ._13
843+ let dc = invoke(aF, "emit", [dp], nil)
844+ if ((dc == dc))
811845 then {
812- let fv = {
813- let aw = cL
814- if ($isInstanceOf(aw, "Address"))
846+ let fL = {
847+ let ax = dc
848+ if ($isInstanceOf(ax, "Address"))
815849 then {
816- let fw = aw
817- invoke(fw, "emit", [cY], nil)
850+ let fM = ax
851+ invoke(fM, "emit", [dp], nil)
818852 }
819853 else unit
820854 }
821- if ((fv == fv))
855+ if ((fL == fL))
822856 then {
823- let fx = if ((cZ > 0))
824- then invoke(fs, "put", nil, [AttachedPayment(bX, cZ)])
857+ let fN = if ((dq > 0))
858+ then invoke(fI, "put", nil, [AttachedPayment(co, dq)])
825859 else nil
826- if ((fx == fx))
860+ if ((fN == fN))
827861 then {
828- let fy = if ((da > 0))
829- then invoke(fs, "put", nil, [AttachedPayment(bY, da)])
862+ let fO = if ((dr > 0))
863+ then invoke(fI, "put", nil, [AttachedPayment(cp, dr)])
830864 else nil
831- if ((fy == fy))
865+ if ((fO == fO))
832866 then {
833- let fz = if (fp)
867+ let fP = if (fF)
834868 then {
835- let fA = invoke(fr, "stake", nil, [AttachedPayment(fu, cY)])
836- if ((fA == fA))
869+ let fQ = invoke(fH, "stake", nil, [AttachedPayment(fK, dp)])
870+ if ((fQ == fQ))
837871 then nil
838872 else throw("Strict value is not equal to itself.")
839873 }
840- else [ScriptTransfer(dt.caller, cY, fu)]
841- (cp ++ fz)
874+ else [ScriptTransfer(dK.caller, dp, fK)]
875+ (cG ++ fP)
842876 }
843877 else throw("Strict value is not equal to itself.")
844878 }
845879 else throw("Strict value is not equal to itself.")
846880 }
847881 else throw("Strict value is not equal to itself.")
848882 }
849883 else throw("Strict value is not equal to itself.")
850884 }
851885 }
852886
853887
854888
855-@Callable(dt)
856-func putOneTknV2 (eM,fp) = if ((size(dt.payments) != 1))
857- then throw("1 pmnt expd")
858- else {
859- let eq = aH()
860- let bX = eq[t]
861- let bY = eq[u]
862- let bW = fromBase58String(eq[s])
863- let eQ = parseIntValue(eq[v])
864- let eR = parseIntValue(eq[w])
865- let bV = if ((dt.caller == this))
866- then dt.originCaller
867- else dt.caller
868- let du = value(dt.payments[0])
869- let bT = toBase58String(value(du.assetId))
870- let cz = du.amount
871- let fB = eo(cz, bT, toString(bV), toBase58String(dt.transactionId))
872- let fC = fB._1
873- let cp = fB._2
874- let bQ = fB._3
875- let cY = if (if ((eM > 0))
876- then (eM > fC)
877- else false)
878- then throw(makeString(["amount to receive is less than ", toString(eM)], ""))
879- else fC
880- let ft = invoke(aC, "emit", [cY], nil)
881- if ((ft == ft))
882- then {
883- let fv = {
884- let aw = ft
885- if ($isInstanceOf(aw, "Address"))
889+@Callable(dK)
890+func putOneTknV2 (fc,fF) = {
891+ let fR = {
892+ let fk = invoke(aF, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
893+ if ($isInstanceOf(fk, "Boolean"))
894+ then fk
895+ else throw(($getType(fk) + " couldn't be cast to Boolean"))
896+ }
897+ let fS = if (if (if (aH())
898+ then true
899+ else (aW == o))
900+ then true
901+ else (aW == q))
902+ then true
903+ else fR
904+ let fT = [if (!(fS))
905+ then true
906+ else aD("put operation is blocked by admin"), if ((size(dK.payments) == 1))
907+ then true
908+ else aD("exactly 1 payment are expected")]
909+ if ((fT == fT))
910+ then {
911+ let aS = aK()
912+ let co = aS[u]
913+ let cp = aS[v]
914+ let cn = fromBase58String(aS[t])
915+ let fg = parseIntValue(aS[w])
916+ let fh = parseIntValue(aS[x])
917+ let cm = if ((dK.caller == this))
918+ then dK.originCaller
919+ else dK.caller
920+ let dL = value(dK.payments[0])
921+ let ck = toBase58String(value(dL.assetId))
922+ let cQ = dL.amount
923+ let fU = eF(cQ, ck, toString(cm), toBase58String(dK.transactionId))
924+ let fV = fU._1
925+ let cG = fU._2
926+ let ch = fU._3
927+ let dp = if (if ((fc > 0))
928+ then (fc > fV)
929+ else false)
930+ then throw(makeString(["amount to receive is less than ", toString(fc)], ""))
931+ else fV
932+ let fJ = invoke(aF, "emit", [dp], nil)
933+ if ((fJ == fJ))
934+ then {
935+ let fL = {
936+ let ax = fJ
937+ if ($isInstanceOf(ax, "Address"))
938+ then {
939+ let fM = ax
940+ invoke(fM, "emit", [dp], nil)
941+ }
942+ else unit
943+ }
944+ if ((fL == fL))
886945 then {
887- let fw = aw
888- invoke(fw, "emit", [cY], nil)
946+ let fP = if (fF)
947+ then {
948+ let fQ = invoke(be, "stake", nil, [AttachedPayment(cn, dp)])
949+ if ((fQ == fQ))
950+ then nil
951+ else throw("Strict value is not equal to itself.")
952+ }
953+ else [ScriptTransfer(dK.caller, dp, cn)]
954+ let ft = if ((ch > 0))
955+ then [ScriptTransfer(aJ, ch, fromBase58String(ck))]
956+ else nil
957+ $Tuple2(((cG ++ fP) ++ ft), dp)
889958 }
890- else unit
959+ else throw("Strict value is not equal to itself.")
891960 }
892- if ((fv == fv))
893- then {
894- let fz = if (fp)
895- then {
896- let fA = invoke(aN, "stake", nil, [AttachedPayment(bW, cY)])
897- if ((fA == fA))
898- then nil
899- else throw("Strict value is not equal to itself.")
900- }
901- else [ScriptTransfer(dt.caller, cY, bW)]
902- let fd = if ((bQ > 0))
903- then [ScriptTransfer(aG, bQ, fromBase58String(bT))]
904- else nil
905- $Tuple2(((cp ++ fz) ++ fd), cY)
906- }
907- else throw("Strict value is not equal to itself.")
908- }
909- else throw("Strict value is not equal to itself.")
910- }
911-
912-
913-
914-@Callable(dt)
915-func putForFree (fD) = if ((0 > fD))
916- then throw("Wrong slpg")
917- else if ((size(dt.payments) != 2))
918- then throw("2 pmnts expd")
919- else {
920- let fE = dv(toString(dt.caller), toBase58String(dt.transactionId), AttachedPayment(value(dt.payments[0]).assetId, value(dt.payments[0]).amount), dt.payments[1], fD, false, false, true, 0, "")
921- fE._9
961+ else throw("Strict value is not equal to itself.")
922962 }
923-
924-
925-
926-@Callable(dt)
927-func get () = {
928- let cL = ds(dt)
929- let fF = cL._1
930- let co = cL._2
931- let cz = cL._3
932- let bT = cL._4
933- let cp = cL._5
934- let ei = invoke(aC, "burn", [cz], [AttachedPayment(bT, cz)])
935- if ((ei == ei))
936- then cp
937963 else throw("Strict value is not equal to itself.")
938964 }
939965
940966
941967
942-@Callable(dt)
943-func getOneTknV2 (eL,eM) = {
944- let fG = eK(eL, eM, dt.payments, dt.caller, dt.originCaller, dt.transactionId)
945- let cp = fG._1
946- let eW = fG._2
947- $Tuple2(cp, eW)
968+@Callable(dK)
969+func putForFree (fW) = if ((0 > fW))
970+ then throw("Wrong slpg")
971+ else if ((size(dK.payments) != 2))
972+ then throw("2 pmnts expd")
973+ else {
974+ let fX = dM(toString(dK.caller), toBase58String(dK.transactionId), AttachedPayment(value(dK.payments[0]).assetId, value(dK.payments[0]).amount), dK.payments[1], fW, false, false, true, 0, "")
975+ fX._9
976+ }
977+
978+
979+
980+@Callable(dK)
981+func get () = {
982+ let dc = dJ(dK)
983+ let fY = dc._1
984+ let cF = dc._2
985+ let cQ = dc._3
986+ let ck = dc._4
987+ let cG = dc._5
988+ let ez = invoke(aF, "burn", [cQ], [AttachedPayment(ck, cQ)])
989+ if ((ez == ez))
990+ then cG
991+ else throw("Strict value is not equal to itself.")
948992 }
949993
950994
951995
952-@Callable(dt)
953-func getOneTknV2READONLY (eL,fH) = {
954- let eq = aH()
955- let bX = eq[t]
956- let bY = eq[u]
957- let bW = eq[s]
958- let dA = [toBigInt(bg(bX)), toBigInt(bg(bY))]
959- let fI = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(bW)), "invalid lp asset").quantity)
960- let bt = dz(dA)
961- let bs = (bt - fraction(toBigInt(fH), bt, fI))
962- let fJ = if ((eL == bX))
963- then 0
964- else if ((eL == bY))
965- then 1
966- else throw("invalid out asset id")
967- let fK = ee(dA, fJ, bs)
968- let fL = (dA[fJ] - fK)
969- let fM = max([0, toInt((fL - f))])
970- let fN = bO(fM)
971- let eV = fN._1
972- let bQ = fN._2
973- $Tuple2(nil, $Tuple2(eV, bQ))
996+@Callable(dK)
997+func getOneTknV2 (fb,fc) = {
998+ let fR = {
999+ let fk = invoke(aF, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1000+ if ($isInstanceOf(fk, "Boolean"))
1001+ then fk
1002+ else throw(($getType(fk) + " couldn't be cast to Boolean"))
1003+ }
1004+ let fZ = if (if (aH())
1005+ then true
1006+ else (aW == q))
1007+ then true
1008+ else fR
1009+ let fT = [if (!(fZ))
1010+ then true
1011+ else aD("get operation is blocked by admin"), if ((size(dK.payments) == 1))
1012+ then true
1013+ else aD("exactly 1 payment are expected")]
1014+ if ((fT == fT))
1015+ then {
1016+ let ga = fa(fb, fc, dK.payments, dK.caller, dK.originCaller, dK.transactionId)
1017+ let cG = ga._1
1018+ let fm = ga._2
1019+ $Tuple2(cG, fm)
1020+ }
1021+ else throw("Strict value is not equal to itself.")
9741022 }
9751023
9761024
9771025
978-@Callable(dt)
979-func getOneTknV2WithBonusREADONLY (eL,fH) = {
980- let eq = aH()
981- let bX = eq[t]
982- let bY = eq[u]
983- let bW = eq[s]
984- let cd = bg(bX)
985- let cf = bg(bY)
986- let fO = {
987- let eU = invoke(this, "getOneTknV2READONLY", [eL, fH], nil)
988- if ($isInstanceOf(eU, "(Int, Int)"))
989- then eU
990- else throw(($getType(eU) + " couldn't be cast to (Int, Int)"))
991- }
992- let eV = fO._1
993- let bQ = fO._2
994- let cL = bR("", bW, fH, this)
995- let cn = cL._1
996- let co = cL._2
997- let fP = (cn + co)
998- let eJ = if ((fP == 0))
999- then if ((eV == 0))
1000- then 0
1001- else throw("bonus calculation error")
1002- else fraction((eV - fP), a, fP)
1003- $Tuple2(nil, $Tuple3(eV, bQ, eJ))
1026+@Callable(dK)
1027+func getOneTknV2READONLY (fb,gb) = {
1028+ let aS = aK()
1029+ let co = aS[u]
1030+ let cp = aS[v]
1031+ let cn = aS[t]
1032+ let dR = [toBigInt(bx(co)), toBigInt(bx(cp))]
1033+ let gc = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(cn)), "invalid lp asset").quantity)
1034+ let bK = dQ(dR)
1035+ let bJ = (bK - fraction(toBigInt(gb), bK, gc))
1036+ let gd = if ((fb == co))
1037+ then 0
1038+ else if ((fb == cp))
1039+ then 1
1040+ else throw("invalid out asset id")
1041+ let ge = ev(dR, gd, bJ)
1042+ let gf = (dR[gd] - ge)
1043+ let gg = max([0, toInt((gf - f))])
1044+ let gh = cf(gg)
1045+ let fl = gh._1
1046+ let ch = gh._2
1047+ $Tuple2(nil, $Tuple2(fl, ch))
10041048 }
10051049
10061050
10071051
1008-@Callable(dt)
1009-func getNoLess (fQ,fR) = {
1010- let cL = ds(dt)
1011- let cn = cL._1
1012- let co = cL._2
1013- let cz = cL._3
1014- let bT = cL._4
1015- let cp = cL._5
1016- if ((fQ > cn))
1017- then throw(((("Failed: " + toString(cn)) + " < ") + toString(fQ)))
1018- else if ((fR > co))
1019- then throw(((("Failed: " + toString(co)) + " < ") + toString(fR)))
1052+@Callable(dK)
1053+func getOneTknV2WithBonusREADONLY (fb,gb) = {
1054+ let aS = aK()
1055+ let co = aS[u]
1056+ let cp = aS[v]
1057+ let cn = aS[t]
1058+ let cu = bx(co)
1059+ let cw = bx(cp)
1060+ let gi = {
1061+ let fk = invoke(this, "getOneTknV2READONLY", [fb, gb], nil)
1062+ if ($isInstanceOf(fk, "(Int, Int)"))
1063+ then fk
1064+ else throw(($getType(fk) + " couldn't be cast to (Int, Int)"))
1065+ }
1066+ let fl = gi._1
1067+ let ch = gi._2
1068+ let dc = ci("", cn, gb, this)
1069+ let cE = dc._1
1070+ let cF = dc._2
1071+ let gj = (cE + cF)
1072+ let eZ = if ((gj == 0))
1073+ then if ((fl == 0))
1074+ then 0
1075+ else throw("bonus calculation error")
1076+ else fraction((fl - gj), a, gj)
1077+ $Tuple2(nil, $Tuple3(fl, ch, eZ))
1078+ }
1079+
1080+
1081+
1082+@Callable(dK)
1083+func getNoLess (gk,gl) = {
1084+ let dc = dJ(dK)
1085+ let cE = dc._1
1086+ let cF = dc._2
1087+ let cQ = dc._3
1088+ let ck = dc._4
1089+ let cG = dc._5
1090+ if ((gk > cE))
1091+ then throw(((("Failed: " + toString(cE)) + " < ") + toString(gk)))
1092+ else if ((gl > cF))
1093+ then throw(((("Failed: " + toString(cF)) + " < ") + toString(gl)))
10201094 else {
1021- let fS = invoke(aC, "burn", [cz], [AttachedPayment(bT, cz)])
1022- if ((fS == fS))
1023- then cp
1095+ let gm = invoke(aF, "burn", [cQ], [AttachedPayment(ck, cQ)])
1096+ if ((gm == gm))
1097+ then cG
10241098 else throw("Strict value is not equal to itself.")
10251099 }
10261100 }
10271101
10281102
10291103
1030-@Callable(dt)
1031-func unstakeAndGet (bP) = {
1032- let fT = if ((size(dt.payments) != 0))
1104+@Callable(dK)
1105+func unstakeAndGet (cg) = {
1106+ let gn = if ((size(dK.payments) != 0))
10331107 then throw("No pmnts expd")
10341108 else true
1035- if ((fT == fT))
1109+ if ((gn == gn))
10361110 then {
1037- let bF = aH()
1038- let fU = aL()
1039- let fu = fromBase58String(bF[s])
1040- let fV = valueOrErrorMessage(addressFromString(fU[z]), "Wr st addr")
1041- let fW = invoke(fV, "unstake", [toBase58String(fu), bP], nil)
1042- if ((fW == fW))
1111+ let bW = aK()
1112+ let go = bc()
1113+ let fK = fromBase58String(bW[t])
1114+ let gp = valueOrErrorMessage(addressFromString(go[A]), "Wr st addr")
1115+ let gq = invoke(gp, "unstake", [toBase58String(fK), cg], nil)
1116+ if ((gq == gq))
10431117 then {
1044- let cL = bR(toBase58String(dt.transactionId), toBase58String(fu), bP, dt.caller)
1045- let cb = parseIntValue(cL._9)
1046- let cp = cL._10
1047- let fX = if (if (aE())
1118+ let dc = ci(toBase58String(dK.transactionId), toBase58String(fK), cg, dK.caller)
1119+ let cs = parseIntValue(dc._9)
1120+ let cG = dc._10
1121+ let gr = if (if (aH())
10481122 then true
1049- else (cb == p))
1050- then throw(("Blocked: " + toString(cb)))
1123+ else (cs == q))
1124+ then throw(("Blocked: " + toString(cs)))
10511125 else true
1052- if ((fX == fX))
1126+ if ((gr == gr))
10531127 then {
1054- let fY = invoke(aC, "burn", [bP], [AttachedPayment(fu, bP)])
1055- if ((fY == fY))
1056- then cp
1128+ let gs = invoke(aF, "burn", [cg], [AttachedPayment(fK, cg)])
1129+ if ((gs == gs))
1130+ then cG
10571131 else throw("Strict value is not equal to itself.")
10581132 }
10591133 else throw("Strict value is not equal to itself.")
10601134 }
10611135 else throw("Strict value is not equal to itself.")
10621136 }
10631137 else throw("Strict value is not equal to itself.")
10641138 }
10651139
10661140
10671141
1068-@Callable(dt)
1069-func unstakeAndGetOneTknV2 (fZ,eL,eM) = {
1070- let fT = if ((size(dt.payments) != 0))
1071- then throw("No pmnts expd")
1072- else true
1142+@Callable(dK)
1143+func unstakeAndGetOneTknV2 (gt,fb,fc) = {
1144+ let fR = {
1145+ let fk = invoke(aF, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1146+ if ($isInstanceOf(fk, "Boolean"))
1147+ then fk
1148+ else throw(($getType(fk) + " couldn't be cast to Boolean"))
1149+ }
1150+ let fZ = if (if (aH())
1151+ then true
1152+ else (aW == q))
1153+ then true
1154+ else fR
1155+ let fT = [if (!(fZ))
1156+ then true
1157+ else aD("get operation is blocked by admin"), if ((size(dK.payments) == 0))
1158+ then true
1159+ else aD("no payments are expected")]
10731160 if ((fT == fT))
10741161 then {
1075- let bF = aH()
1076- let fU = aL()
1077- let fu = fromBase58String(bF[s])
1078- let fV = valueOrErrorMessage(addressFromString(fU[z]), "Wr st addr")
1079- let fW = invoke(fV, "unstake", [toBase58String(fu), fZ], nil)
1080- if ((fW == fW))
1162+ let bW = aK()
1163+ let go = bc()
1164+ let fK = fromBase58String(bW[t])
1165+ let gp = valueOrErrorMessage(addressFromString(go[A]), "Wr st addr")
1166+ let gq = invoke(gp, "unstake", [toBase58String(fK), gt], nil)
1167+ if ((gq == gq))
10811168 then {
1082- let ga = eK(eL, eM, [AttachedPayment(fu, fZ)], dt.caller, dt.originCaller, dt.transactionId)
1083- let cp = ga._1
1084- let eW = ga._2
1085- $Tuple2(cp, eW)
1169+ let gu = fa(fb, fc, [AttachedPayment(fK, gt)], dK.caller, dK.originCaller, dK.transactionId)
1170+ let cG = gu._1
1171+ let fm = gu._2
1172+ $Tuple2(cG, fm)
10861173 }
10871174 else throw("Strict value is not equal to itself.")
10881175 }
10891176 else throw("Strict value is not equal to itself.")
10901177 }
10911178
10921179
10931180
1094-@Callable(dt)
1095-func putOneTknV2WithBonusREADONLY (gb,gc) = {
1096- let eq = aH()
1097- let bX = eq[t]
1098- let bY = eq[u]
1099- let bW = eq[s]
1100- let gd = eo(gb, gc, "", "")
1101- let eE = gd._1
1102- let cp = gd._2
1103- let bQ = gd._3
1104- let eJ = gd._4
1105- $Tuple2(nil, $Tuple3(eE, bQ, eJ))
1181+@Callable(dK)
1182+func putOneTknV2WithBonusREADONLY (gv,gw) = {
1183+ let aS = aK()
1184+ let co = aS[u]
1185+ let cp = aS[v]
1186+ let cn = aS[t]
1187+ let gx = eF(gv, gw, "", "")
1188+ let eU = gx._1
1189+ let cG = gx._2
1190+ let ch = gx._3
1191+ let eZ = gx._4
1192+ $Tuple2(nil, $Tuple3(eU, ch, eZ))
11061193 }
11071194
11081195
11091196
1110-@Callable(dt)
1111-func activate (ge,gf) = if ((toString(dt.caller) != toString(aC)))
1197+@Callable(dK)
1198+func activate (gy,gz) = if ((toString(dK.caller) != toString(aF)))
11121199 then throw("denied")
1113- else $Tuple2([StringEntry(ab(), ge), StringEntry(ac(), gf)], "success")
1200+ else $Tuple2([StringEntry(ac(), gy), StringEntry(ad(), gz)], "success")
11141201
11151202
11161203
1117-@Callable(dt)
1118-func setS (gg,fX) = if ((toString(dt.caller) != ay(this, ae())))
1119- then fh
1120- else [StringEntry(gg, fX)]
1204+@Callable(dK)
1205+func setS (gA,gr) = if ((toString(dK.caller) != az(this, af())))
1206+ then fx
1207+ else [StringEntry(gA, gr)]
11211208
11221209
11231210
1124-@Callable(dt)
1125-func setI (gg,fX) = if ((toString(dt.caller) != ay(this, ae())))
1126- then fh
1127- else [IntegerEntry(gg, fX)]
1211+@Callable(dK)
1212+func setI (gA,gr) = if ((toString(dK.caller) != az(this, af())))
1213+ then fx
1214+ else [IntegerEntry(gA, gr)]
11281215
11291216
11301217
1131-@Callable(dt)
1132-func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aH())
1218+@Callable(dK)
1219+func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aK())
11331220
11341221
11351222
1136-@Callable(dt)
1137-func getAccBalanceWrapperREADONLY (bh) = $Tuple2(nil, bg(bh))
1223+@Callable(dK)
1224+func getAccBalanceWrapperREADONLY (by) = $Tuple2(nil, bx(by))
11381225
11391226
11401227
1141-@Callable(dt)
1142-func calcPricesWrapperREADONLY (bz,bA,bE) = {
1143- let gh = bD(bz, bA, bE)
1144- $Tuple2(nil, [toString(gh[0]), toString(gh[1]), toString(gh[2])])
1228+@Callable(dK)
1229+func calcPricesWrapperREADONLY (bQ,bR,bV) = {
1230+ let gB = bU(bQ, bR, bV)
1231+ $Tuple2(nil, [toString(gB[0]), toString(gB[1]), toString(gB[2])])
11451232 }
11461233
11471234
11481235
1149-@Callable(dt)
1150-func fromX18WrapperREADONLY (I,gi) = $Tuple2(nil, H(parseBigIntValue(I), gi))
1236+@Callable(dK)
1237+func fromX18WrapperREADONLY (J,gC) = $Tuple2(nil, I(parseBigIntValue(J), gC))
11511238
11521239
11531240
1154-@Callable(dt)
1155-func toX18WrapperREADONLY (F,G) = $Tuple2(nil, toString(E(F, G)))
1241+@Callable(dK)
1242+func toX18WrapperREADONLY (G,H) = $Tuple2(nil, toString(F(G, H)))
11561243
11571244
11581245
1159-@Callable(dt)
1160-func calcPriceBigIntWrapperREADONLY (bj,bk) = $Tuple2(nil, toString(bi(parseBigIntValue(bj), parseBigIntValue(bk))))
1246+@Callable(dK)
1247+func calcPriceBigIntWrapperREADONLY (bA,bB) = $Tuple2(nil, toString(bz(parseBigIntValue(bA), parseBigIntValue(bB))))
11611248
11621249
11631250
1164-@Callable(dt)
1165-func estimatePutOperationWrapperREADONLY (bS,bo,cr,cs,ct,cu,gj,cv,cw) = $Tuple2(nil, cq(bS, bo, cr, cs, ct, cu, gj, cv, cw, true, false, 0, ""))
1251+@Callable(dK)
1252+func estimatePutOperationWrapperREADONLY (cj,bF,cI,cJ,cK,cL,gD,cM,cN) = $Tuple2(nil, cH(cj, bF, cI, cJ, cK, cL, gD, cM, cN, true, false, 0, ""))
11661253
11671254
11681255
1169-@Callable(dt)
1170-func estimateGetOperationWrapperREADONLY (bS,gk,bU,gj) = {
1171- let cL = bR(bS, gk, bU, addressFromStringValue(gj))
1172- $Tuple2(nil, $Tuple10(cL._1, cL._2, cL._3, cL._4, cL._5, cL._6, cL._7, toString(cL._8), cL._9, cL._10))
1256+@Callable(dK)
1257+func estimateGetOperationWrapperREADONLY (cj,gE,cl,gD) = {
1258+ let dc = ci(cj, gE, cl, addressFromStringValue(gD))
1259+ $Tuple2(nil, $Tuple10(dc._1, dc._2, dc._3, dc._4, dc._5, dc._6, dc._7, toString(dc._8), dc._9, dc._10))
11731260 }
11741261
11751262
11761263
1177-@Callable(dt)
1178-func getFeeREADONLY () = $Tuple2(nil, ag)
1264+@Callable(dK)
1265+func getFeeREADONLY () = $Tuple2(nil, ah)
11791266
11801267
1181-@Verifier(gl)
1182-func gm () = {
1183- let gn = {
1184- let aw = ff()
1185- if ($isInstanceOf(aw, "ByteVector"))
1268+@Verifier(gF)
1269+func gG () = {
1270+ let gH = {
1271+ let ax = fv()
1272+ if ($isInstanceOf(ax, "ByteVector"))
11861273 then {
1187- let fj = aw
1188- fj
1274+ let fz = ax
1275+ fz
11891276 }
1190- else if ($isInstanceOf(aw, "Unit"))
1191- then gl.senderPublicKey
1277+ else if ($isInstanceOf(ax, "Unit"))
1278+ then gF.senderPublicKey
11921279 else throw("Match error")
11931280 }
1194- let aw = gl
1195- if ($isInstanceOf(aw, "Order"))
1281+ let ax = gF
1282+ if ($isInstanceOf(ax, "Order"))
11961283 then {
1197- let dg = aw
1198- let go = aF()
1199- let gp = df(dg)
1200- let gq = sigVerify(dg.bodyBytes, dg.proofs[0], dg.senderPublicKey)
1201- let gr = sigVerify(dg.bodyBytes, dg.proofs[1], go)
1202- if (if (if (gp)
1203- then gq
1284+ let dx = ax
1285+ let gI = aI()
1286+ let gJ = dw(dx)
1287+ let gK = sigVerify(dx.bodyBytes, dx.proofs[0], dx.senderPublicKey)
1288+ let gL = sigVerify(dx.bodyBytes, dx.proofs[1], gI)
1289+ if (if (if (gJ)
1290+ then gK
12041291 else false)
1205- then gr
1292+ then gL
12061293 else false)
12071294 then true
1208- else ar(gp, gq, gr)
1295+ else as(gJ, gK, gL)
12091296 }
1210- else if ($isInstanceOf(aw, "SetScriptTransaction"))
1297+ else if ($isInstanceOf(ax, "SetScriptTransaction"))
12111298 then {
1212- let dG = aw
1213- let gs = blake2b256(value(dG.script))
1214- let gt = fromBase64String(value(getString(aC, ap())))
1215- let gu = scriptHash(this)
1216- if (if ((gt == gs))
1217- then (gu != gs)
1299+ let dX = ax
1300+ let gM = blake2b256(value(dX.script))
1301+ let gN = fromBase64String(value(getString(aF, aq())))
1302+ let gO = scriptHash(this)
1303+ if (if ((gN == gM))
1304+ then (gO != gM)
12181305 else false)
12191306 then true
1220- else sigVerify(gl.bodyBytes, gl.proofs[0], gn)
1307+ else sigVerify(gF.bodyBytes, gF.proofs[0], gH)
12211308 }
1222- else sigVerify(gl.bodyBytes, gl.proofs[0], gn)
1309+ else sigVerify(gF.bodyBytes, gF.proofs[0], gH)
12231310 }
12241311

github/deemru/w8io/873ac7e 
399.87 ms