tx · 2yG191nzau8mvTTHSDuFboSpdgtNfDY2dpu8ixeLLDKV

3MzKSdTH2jFbypLsoNfrH7QgkzSbx3EYwCA:  -0.03500000 Waves

2022.12.06 18:09 [2348646] smart account 3MzKSdTH2jFbypLsoNfrH7QgkzSbx3EYwCA > SELF 0.00000000 Waves

{ "type": 13, "id": "2yG191nzau8mvTTHSDuFboSpdgtNfDY2dpu8ixeLLDKV", "fee": 3500000, "feeAssetId": null, "timestamp": 1670339383241, "version": 1, "sender": "3MzKSdTH2jFbypLsoNfrH7QgkzSbx3EYwCA", "senderPublicKey": "35yd3qw1gxKDxKwGAykHN9fANbXNWwseaUwbWDj24o3x", "proofs": [ "3QupHB5KhQuFBHMjMJ6rEXb7ajdsaJXaKEkS4qVqX3RP22Zwzat3ou14JBjifeftUHBjFaPdibU9HToFe3X7XPvb" ], "script": "base64:BgKAKAgCEgMKAQgSAwoBCBIAEgQKAgEEEgQKAgEEEgMKAQESABIECgIIARIAEgQKAggBEgQKAggBEgQKAgEBEgMKAQESBQoDAQEBEgUKAwEIARIECgIBCBIECgIBCBIECgIICBIECgIICBIECgIIARIAEgMKAQgSBQoDAQEBEgQKAggBEgQKAgEBEgQKAggIEgsKCQgBAQIBAggEBBIGCgQICAEIEgAiBnNjYWxlOCIMc2NhbGU4QmlnSW50IgdzY2FsZTE4Igp6ZXJvQmlnSW50IgRiaWcwIgRiaWcxIgRiaWcyIgRiaWczIgRiaWc0IgpzbGlwcGFnZTREIgt3YXZlc1N0cmluZyIFQW11bHQiBURjb252IgNTRVAiBUVNUFRZIgpQb29sQWN0aXZlIgpQb29sUHV0RGlzIg5Qb29sTWF0Y2hlckRpcyIMUG9vbFNodXRkb3duIg5pZHhQb29sQWRkcmVzcyIJaWR4UG9vbFN0IglpZHhMUEFzSWQiCWlkeEFtQXNJZCIJaWR4UHJBc0lkIgtpZHhBbXRBc0RjbSINaWR4UHJpY2VBc0RjbSILaWR4SUFtdEFzSWQiDWlkeElQcmljZUFzSWQiD2lkeEZhY3RTdGFrQ250ciISaWR4RmFjdG9yeVJlc3RDbnRyIhBpZHhGYWN0U2xpcHBDbnRyIhFpZHhGYWN0R3d4UmV3Q250ciIKZmVlRGVmYXVsdCICdDEiB29yaWdWYWwiDW9yaWdTY2FsZU11bHQiAmYxIgN2YWwiD3Jlc3VsdFNjYWxlTXVsdCICdHMiA2FtdCIIcmVzU2NhbGUiCGN1clNjYWxlIgNhYnMiCWFic0JpZ0ludCICZmMiA21wayIEcG1wayICcGwiAnBoIgFoIgF0IgNwYXUiAnVhIgR0eElkIgNnYXUiAmFhIgJwYSIDYW1wIgNhZGEiBmtleUZlZSIDZmVlIgZrZXlETHAiFWtleURMcFJlZnJlc2hlZEhlaWdodCISa2V5RExwUmVmcmVzaERlbGF5IhZkTHBSZWZyZXNoRGVsYXlEZWZhdWx0Ig9kTHBSZWZyZXNoRGVsYXkiBGZjZmciBG10cGsiAnBjIgZpQW10QXMiBWlQckFzIgNtYmEiBWJBU3RyIgNhcHMiHGtleUFsbG93ZWRMcFN0YWJsZVNjcmlwdEhhc2giFmtleUZlZUNvbGxlY3RvckFkZHJlc3MiA3RvZSIDb3JWIgZzZW5kclYiBm1hdGNoViIDc3RyIgckbWF0Y2gwIgZ2YWxTdHIiBHN0cmYiBGFkZHIiA2tleSIEaW50ZiIIdGhyb3dFcnIiA21zZyIGZm10RXJyIgNmY2EiAUEiA2lncyICbXAiE2ZlZUNvbGxlY3RvckFkZHJlc3MiA2dwYyIFYW10QXMiB3ByaWNlQXMiCGlQcmljZUFzIgxwYXJzZUFzc2V0SWQiBWlucHV0Ig9hc3NldElkVG9TdHJpbmciD3BhcnNlUG9vbENvbmZpZyIKcG9vbENvbmZpZyIQcG9vbENvbmZpZ1BhcnNlZCILJHQwNzI1Njc0NDIiDmNmZ1Bvb2xBZGRyZXNzIg1jZmdQb29sU3RhdHVzIgxjZmdMcEFzc2V0SWQiEGNmZ0Ftb3VudEFzc2V0SWQiD2NmZ1ByaWNlQXNzZXRJZCIWY2ZnQW1vdW50QXNzZXREZWNpbWFscyIVY2ZnUHJpY2VBc3NldERlY2ltYWxzIgNnZmMiDWZhY3RvcnlDb25maWciD3N0YWtpbmdDb250cmFjdCIPc2xpcGFnZUNvbnRyYWN0Igtnd3hDb250cmFjdCIMcmVzdENvbnRyYWN0IhFkYXRhUHV0QWN0aW9uSW5mbyINaW5BbXRBc3NldEFtdCIPaW5QcmljZUFzc2V0QW10IghvdXRMcEFtdCIFcHJpY2UiCnNsaXBCeVVzZXIiDHNsaXBwYWdlUmVhbCIIdHhIZWlnaHQiC3R4VGltZXN0YW1wIgxzbGlwYWdlQW1BbXQiDHNsaXBhZ2VQckFtdCIRZGF0YUdldEFjdGlvbkluZm8iDm91dEFtdEFzc2V0QW10IhBvdXRQcmljZUFzc2V0QW10IgdpbkxwQW10Ig1nZXRBY2NCYWxhbmNlIgdhc3NldElkIgRjcGJpIghwckFtdFgxOCIIYW1BbXRYMTgiA3ZhZCICQTEiAkEyIghzbGlwcGFnZSIEZGlmZiIEcGFzcyICdmQiAkQxIgJEMCIEc2xwZyIEZmFpbCIDcGNwIgphbUFzc2V0RGNtIgpwckFzc2V0RGNtIgVhbUFtdCIFcHJBbXQiC2FtdEFzQW10WDE4IgpwckFzQW10WDE4IgpjYWxjUHJpY2VzIgVscEFtdCIDY2ZnIghhbXRBc0RjbSIHcHJBc0RjbSIIcHJpY2VYMTgiCGxwQW10WDE4Ig1scFBySW5BbUFzWDE4Ig1scFBySW5QckFzWDE4Ig9jYWxjdWxhdGVQcmljZXMiAXAiB3Rha2VGZWUiBmFtb3VudCIJZmVlQW1vdW50IgNlZ28iBnR4SWQ1OCIKcG10QXNzZXRJZCIIcG10THBBbXQiC3VzZXJBZGRyZXNzIgRscElkIgRhbUlkIgRwcklkIgVhbURjbSIFcHJEY20iA3N0cyIHbHBFbWlzcyIJYW1CYWxhbmNlIgxhbUJhbGFuY2VYMTgiCXByQmFsYW5jZSIMcHJCYWxhbmNlWDE4IgtjdXJQcmljZVgxOCIIY3VyUHJpY2UiC3BtdExwQW10WDE4IgpscEVtaXNzWDE4IgtvdXRBbUFtdFgxOCILb3V0UHJBbXRYMTgiCG91dEFtQW10IghvdXRQckFtdCIFc3RhdGUiA2VwbyIHaW5BbUFtdCIGaW5BbUlkIgdpblByQW10IgZpblBySWQiBmlzRXZhbCIGZW1pdExwIgppc09uZUFzc2V0IhB2YWxpZGF0ZVNsaXBwYWdlIgZwbXRBbXQiBXBtdElkIgdhbUlkU3RyIgdwcklkU3RyIglpbkFtSWRTdHIiCWluUHJJZFN0ciIGYW10RGNtIghwcmljZURjbSIEbHBFbSIPaW5BbUFzc2V0QW10WDE4Ig9pblByQXNzZXRBbXRYMTgiDHVzZXJQcmljZVgxOCIBciILc2xpcHBhZ2VYMTgiD3NsaXBwYWdlUmVhbFgxOCINbHBFbWlzc2lvblgxOCIKcHJWaWFBbVgxOCIKYW1WaWFQclgxOCIMZXhwZWN0ZWRBbXRzIhFleHBBbXRBc3NldEFtdFgxOCITZXhwUHJpY2VBc3NldEFtdFgxOCIJY2FsY0xwQW10Ig5jYWxjQW1Bc3NldFBtdCIOY2FsY1ByQXNzZXRQbXQiDHNsaXBwYWdlQ2FsYyIJZW1pdExwQW10IgZhbURpZmYiBnByRGlmZiINJHQwMTc4NzMxODIxOCIKd3JpdGVBbUFtdCIKd3JpdGVQckFtdCILY29tbW9uU3RhdGUiBGdldEQiAnhwIgN4cDAiA3hwMSIBcyIBYSIDYW5uIgt4cDBfeHAxX25fbiIFYW5uX3MiBWFubl8xIgljYWxjRE5leHQiAWQiAmRkIgNkZGQiAmRwIgRjYWxjIgNhY2MiAWkiBWROZXh0IghkRGlmZlJhdyIFZERpZmYiA2FyciINJHQwMjAxMjkyMDE3NyICJGwiAiRzIgUkYWNjMCIFJGYwXzEiAiRhIgIkaSIFJGYwXzIiBWZvdW5kIgVnZXRZRCIBRCIBbiIBeCIKYVByZWNpc2lvbiIBYyIBYiIDY3VyIg0kdDAyMDY2OTIwNjg5IgF5IgV5TmV4dCIFeURpZmYiDSR0MDIwOTk2MjEwNDMiB2NhbGNETHAiDWFtb3VudEJhbGFuY2UiDHByaWNlQmFsYW5jZSIKbHBFbWlzc2lvbiIKdXBkYXRlZERMcCIOY2FsY0N1cnJlbnRETHAiEGFtb3VudEFzc2V0RGVsdGEiD3ByaWNlQXNzZXREZWx0YSIUbHBBc3NldEVtaXNzaW9uRGVsdGEiEmFtb3VudEFzc2V0QmFsYW5jZSIRcHJpY2VBc3NldEJhbGFuY2UiD2xwQXNzZXRFbWlzc2lvbiIKY3VycmVudERMcCIScmVmcmVzaERMcEludGVybmFsIhdhbW91bnRBc3NldEJhbGFuY2VEZWx0YSIWcHJpY2VBc3NldEJhbGFuY2VEZWx0YSIHYWN0aW9ucyISdmFsaWRhdGVVcGRhdGVkRExwIgZvbGRETHAiG3ZhbGlkYXRlTWF0Y2hlck9yZGVyQWxsb3dlZCIFb3JkZXIiEWFtb3VudEFzc2V0QW1vdW50IhBwcmljZUFzc2V0QW1vdW50Ig0kdDAyMjk0MzIzMTU1IgNkTHAiDSR0MDIzNDg1MjM1ODUiDXVudXNlZEFjdGlvbnMiBmRMcE5ldyIMaXNPcmRlclZhbGlkIgJjZyIDcG10IgJjcCIGY2FsbGVyIgdhbUFzUG10IgdwckFzUG10Ig1jYWxjUHV0T25lVGtuIglwbXRBbXRSYXciC3dpdGhUYWtlRmVlIg1jaGVjaEVtaXNzaW9uIg0kdDAyNTkwMTI2MzYzIgxhbUJhbGFuY2VPbGQiDHByQmFsYW5jZU9sZCINJHQwMjYzNjkyNjU0NSILYW1BbW91bnRSYXciC3ByQW1vdW50UmF3Ig0kdDAyNjU0OTI2Nzg4IghhbUFtb3VudCIIcHJBbW91bnQiDGFtQmFsYW5jZU5ldyIMcHJCYWxhbmNlTmV3IgZjaGVja0QiCGxwQW1vdW50Ig5wb29sUHJvcG9ydGlvbiIPYW1vdW50QXNzZXRQYXJ0Ig5wcmljZUFzc2V0UGFydCIJbHBBbXRCb3RoIgVib251cyITZ2V0T25lVGtuVjJJbnRlcm5hbCIKb3V0QXNzZXRJZCIMbWluT3V0QW1vdW50IghwYXltZW50cyIMb3JpZ2luQ2FsbGVyIg10cmFuc2FjdGlvbklkIgphbURlY2ltYWxzIgpwckRlY2ltYWxzIgpwb29sU3RhdHVzIg0kdDAyODg3MjI4OTgzIgFAIgh0b3RhbEdldCILdG90YWxBbW91bnQiDSR0MDI5MTczMjk0ODAiBW91dEFtIgVvdXRQciIIY3VyUHJYMTgiBWN1clByIhFvdXRBc3NldElkT3JXYXZlcyIQc2VuZEZlZVRvTWF0Y2hlciIEYnVybiINJHQwMzAyNjUzMDYxNSIQZmVlQW1vdW50Rm9yQ2FsYyIQb3V0SW5BbW91bnRBc3NldCINJHQwMzA2MTgzMDcyNiIRcmVmcmVzaERMcEFjdGlvbnMiEWlzVXBkYXRlZERMcFZhbGlkIgFtIgJwbSICcGQiCWlzTWFuYWdlciICcGsiAm1tIhdwZW5kaW5nTWFuYWdlclB1YmxpY0tleSICY20iA2hwbSIDY3BtIgRzbGlwIglhdXRvU3Rha2UiB2ZhY3RDZmciC3N0YWtpbmdDbnRyIghzbGlwQ250ciIKYW1Bc3NldFBtdCIKcHJBc3NldFBtdCIBZSIJbHBBc3NldElkIgJlbCIGbGVnYWN5IgJzYSICc3AiCGxwVHJuc2ZyIgJzcyINJHQwMzQ1ODIzNDY0NyIgaXNQb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWQiDWlzUHV0RGlzYWJsZWQiBmNoZWNrcyINJHQwMzU3ODQzNTk0MiIHZXN0aW1MUCINJHQwMzY3NTczNzEwNiIUcGF5bWVudEluQW1vdW50QXNzZXQiDSR0MDM3MTA5MzcyMTciB21heFNscGciBmVzdFB1dCINJHQwMzgxNzYzODI0MSIJb3V0QW10QW10Ig0kdDAzOTAzMDM5MTEyIg1pc0dldERpc2FibGVkIg0kdDAzOTczMDM5ODg1IhhsYXN0UmVmcmVzaGVkQmxvY2tIZWlnaHQiHWNoZWNrTGFzdFJlZnJlc2hlZEJsb2NrSGVpZ2h0Ig0kdDA0MDQwOTQwNDczIhBkTHBVcGRhdGVBY3Rpb25zIg1scEFzc2V0QW1vdW50IgVpbmRleCIEbmV3WSICZHkiC3RvdGFsR2V0UmF3Ig0kdDA0MTM3MzQxNDIyIg0kdDA0MTc2NzQxODgyIg5zdW1PZkdldEFzc2V0cyISbm9MZXNzVGhlbkFtdEFzc2V0IhRub0xlc3NUaGVuUHJpY2VBc3NldCIUYnVybkxQQXNzZXRPbkZhY3RvcnkiDSR0MDQzMDUwNDMxMzEiDWNoZWNrUGF5bWVudHMiCmZhY3RvcnlDZmciB3N0YWtpbmciCnVuc3Rha2VJbnYiAXYiBWJ1cm5BIg0kdDA0NDE5NDQ0Mjc1Ig11bnN0YWtlQW1vdW50IhVub0xlc3NUaGVuQW1vdW50QXNzZXQiA3JlcyIMY2hlY2tBbW91bnRzIg0kdDA0NTUyMzQ1NjA0Ig0kdDA0NjUzODQ2NzI2IhBwYXltZW50QW1vdW50UmF3Ig5wYXltZW50QXNzZXRJZCINJHQwNDY5ODU0NzA4OCINJHQwNDczNjc0NzQ3MSIIYW10QXNTdHIiB3ByQXNTdHIiAWsiAnByIgxyZXNTY2FsZU11bHQiB3VzckFkZHIiB3BtdEFzSWQiAnR4IgZ2ZXJpZnkiD3RhcmdldFB1YmxpY0tleSIKbWF0Y2hlclB1YiIKb3JkZXJWYWxpZCILc2VuZGVyVmFsaWQiDG1hdGNoZXJWYWxpZCIHbmV3SGFzaCILYWxsb3dlZEhhc2giC2N1cnJlbnRIYXNoeQABYQCAwtcvAAFiCQC2AgEAgMLXLwABYwkAtgIBAICAkLu61q3wDQABZAkAtgIBAAAAAWUJALYCAQAAAAFmCQC2AgEAAQABZwkAtgIBAAIAAWgJALYCAQADAAFpCQC2AgEABAABagkAtgIBCQBlAgUBYQkAaQIJAGgCBQFhAAEFAWEAAWsCBVdBVkVTAAFsAgMxMDAAAW0CATEAAW4CAl9fAAFvAgAAAXAAAQABcQACAAFyAAMAAXMABAABdAABAAF1AAIAAXYAAwABdwAEAAF4AAUAAXkABgABegAHAAFBAAgAAUIACQABQwABAAFEAAYAAUUABwABRgAKAAFHCQBrAwAKBQFhAJBOAQFIAgFJAUoJALwCAwkAtgIBBQFJBQFjCQC2AgEFAUoBAUsCAUwBTQkAoAMBCQC8AgMFAUwJALYCAQUBTQUBYwEBTgMBTwFQAVEJAGsDBQFPBQFQBQFRAQFSAQFMAwkAvwICBQFkBQFMCQC+AgEFAUwFAUwBAVMBAUwDCQC/AgIFAWQFAUwJAL4CAQUBTAUBTAEBVAACEyVzX19mYWN0b3J5Q29udHJhY3QBAVUAAhQlc19fbWFuYWdlclB1YmxpY0tleQEBVgACGyVzX19wZW5kaW5nTWFuYWdlclB1YmxpY0tleQEBVwACESVzJXNfX3ByaWNlX19sYXN0AQFYAgFZAVoJALkJAgkAzAgCAhglcyVzJWQlZF9fcHJpY2VfX2hpc3RvcnkJAMwIAgkApAMBBQFZCQDMCAIJAKQDAQUBWgUDbmlsBQFuAQJhYQICYWICYWMJAKwCAgkArAICCQCsAgICCyVzJXMlc19fUF9fBQJhYgICX18FAmFjAQJhZAICYWICYWMJAKwCAgkArAICCQCsAgICCyVzJXMlc19fR19fBQJhYgICX18FAmFjAQJhZQACDyVzX19hbW91bnRBc3NldAECYWYAAg4lc19fcHJpY2VBc3NldAECYWcAAgclc19fYW1wAQJhaAACDSVzX19hZGRvbkFkZHIAAmFpAgclc19fZmVlAAJhagkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQJhaQUBRwACYWsJALkJAgkAzAgCAgIlcwkAzAgCAgNkTHAFA25pbAUBbgACYWwJALkJAgkAzAgCAgIlcwkAzAgCAhJkTHBSZWZyZXNoZWRIZWlnaHQFA25pbAUBbgACYW0JALkJAgkAzAgCAgIlcwkAzAgCAg9yZWZyZXNoRExwRGVsYXkFA25pbAUBbgACYW4AHgACYW8JAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUCYW0FAmFuAQJhcAACESVzX19mYWN0b3J5Q29uZmlnAQJhcQACGCVzJXNfX21hdGNoZXJfX3B1YmxpY0tleQECYXICAmFzAmF0CQCsAgIJAKwCAgkArAICCQCsAgICCCVkJWQlc19fBQJhcwICX18FAmF0AghfX2NvbmZpZwECYXUBAmF2CQCsAgICKCVzJXMlc19fbWFwcGluZ3NfX2Jhc2VBc3NldDJpbnRlcm5hbElkX18FAmF2AQJhdwACDCVzX19zaHV0ZG93bgECYXgAAh0lc19fYWxsb3dlZExwU3RhYmxlU2NyaXB0SGFzaAECYXkAAhclc19fZmVlQ29sbGVjdG9yQWRkcmVzcwECYXoDAmFBAmFCAmFDCQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgICEUZhaWxlZDogb3JkVmFsaWQ9CQClAwEFAmFBAgsgc25kclZhbGlkPQkApQMBBQJhQgIMIG10Y2hyVmFsaWQ9CQClAwEFAmFDAQJhRAEBTAQCYUUFAUwDCQABAgUCYUUCBlN0cmluZwQCYUYFAmFFBQJhRgkAAgECE2ZhaWwgY2FzdCB0byBTdHJpbmcBAmFHAgJhSAJhSQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFAmFIBQJhSQkAuQkCCQDMCAICCm1hbmRhdG9yeSAJAMwIAgkApQgBBQJhSAkAzAgCAgEuCQDMCAIFAmFJCQDMCAICDCBub3QgZGVmaW5lZAUDbmlsAgABAmFKAgJhSAJhSQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFAmFIBQJhSQkAuQkCCQDMCAICCm1hbmRhdG9yeSAJAMwIAgkApQgBBQJhSAkAzAgCAgEuCQDMCAIFAmFJCQDMCAICDCBub3QgZGVmaW5lZAUDbmlsAgABAmFLAQJhTAkAAgEJALkJAgkAzAgCAg9scF9zdGFibGUucmlkZToJAMwIAgUCYUwFA25pbAIBIAECYU0BAmFMCQC5CQIJAMwIAgIPbHBfc3RhYmxlLnJpZGU6CQDMCAIFAmFMBQNuaWwCASAAAmFOCQERQGV4dHJOYXRpdmUoMTA2MikBCQECYUcCBQR0aGlzCQEBVAAAAmFPCQECYUcCBQR0aGlzCQECYWcAAQJhUAAJAQt2YWx1ZU9yRWxzZQIJAJsIAgUCYU4JAQJhdwAHAQJhUQAJANkEAQkBAmFHAgUCYU4JAQJhcQAAAmFSCQERQGV4dHJOYXRpdmUoMTA2MikBCQECYUcCBQJhTgkBAmF5AAECYVMABAJhVAkBAmFHAgUEdGhpcwkBAmFlAAQCYVUJAQJhRwIFBHRoaXMJAQJhZgAEAmFWCQECYUoCBQJhTgkBAmF1AQUCYVUEAmFzCQECYUoCBQJhTgkBAmF1AQUCYVQJALUJAgkBAmFHAgUCYU4JAQJhcgIJAKQDAQUCYXMJAKQDAQUCYVYFAW4BAmFXAQJhWAMJAAACBQJhWAUBawUEdW5pdAkA2QQBBQJhWAECYVkBAmFYAwkAAAIFAmFYBQR1bml0BQFrCQDYBAEJAQV2YWx1ZQEFAmFYAQJhWgECYmEJAJkKBwkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCBQJiYQUBdAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJhBQF1CQDZBAEJAJEDAgUCYmEFAXYJAQJhVwEJAJEDAgUCYmEFAXcJAQJhVwEJAJEDAgUCYmEFAXgJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiYQUBeQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJhBQF6AAJiYgkBAmFaAQkBAmFTAAACYmMFAmJiAAJiZAgFAmJjAl8xAAJiZQgFAmJjAl8yAAJiZggFAmJjAl8zAAJiZwgFAmJjAl80AAJiaAgFAmJjAl81AAJiaQgFAmJjAl82AAJiaggFAmJjAl83AQJiawAJALUJAgkBAmFHAgUCYU4JAQJhcAAFAW4AAmJsCQECYmsAAAJibQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCYmwFAUMCIEludmFsaWQgc3Rha2luZyBjb250cmFjdCBhZGRyZXNzAAJibgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCYmwFAUUCIEludmFsaWQgc2xpcGFnZSBjb250cmFjdCBhZGRyZXNzAAJibwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCYmwFAUYCHEludmFsaWQgZ3d4IGNvbnRyYWN0IGFkZHJlc3MAAmJwCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJibAUBRAIcSW52YWxpZCBnd3ggY29udHJhY3QgYWRkcmVzcwECYnEKAmJyAmJzAmJ0AmJ1AmJ2AmJ3AmJ4AmJ5AmJ6AmJBCQC5CQIJAMwIAgIUJWQlZCVkJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJicgkAzAgCCQCkAwEFAmJzCQDMCAIJAKQDAQUCYnQJAMwIAgkApAMBBQJidQkAzAgCCQCkAwEFAmJ2CQDMCAIJAKQDAQUCYncJAMwIAgkApAMBBQJieAkAzAgCCQCkAwEFAmJ5CQDMCAIJAKQDAQUCYnoJAMwIAgkApAMBBQJiQQUDbmlsBQFuAQJiQgYCYkMCYkQCYkUCYnUCYngCYnkJALkJAgkAzAgCAgwlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJiQwkAzAgCCQCkAwEFAmJECQDMCAIJAKQDAQUCYkUJAMwIAgkApAMBBQJidQkAzAgCCQCkAwEFAmJ4CQDMCAIJAKQDAQUCYnkFA25pbAUBbgECYkYBAmJHAwkAAAIFAmJHAgVXQVZFUwgJAO8HAQUEdGhpcwlhdmFpbGFibGUJAPAHAgUEdGhpcwkA2QQBBQJiRwECYkgCAmJJAmJKCQC8AgMFAmJJBQFjBQJiSgECYksDAmJMAmJNAmJOBAJiTwkAvAIDCQC4AgIFAmJMBQJiTQUBYgUCYk0EAmJQCQC/AgIJALgCAgUCYk4JAQFSAQUCYk8FAWQDCQEBIQEFAmJQCQACAQkArAICAgpCaWcgc2xwZzogCQCmAwEFAmJPCQCUCgIFAmJQCQCZAwEJAMwIAgUCYkwJAMwIAgUCYk0FA25pbAECYlEDAmJSAmJTAmJUBAJiTwkAvAIDBQJiUwUBYgUCYlIEAmJVCQC/AgIFAmJUBQJiTwMDBQJiVQYJAL8CAgUCYlMFAmJSCQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkApgMBBQJiUwIBIAkApgMBBQJiUgIBIAkApgMBBQJiTwIBIAkApgMBBQJiVAUCYlUBAmJWBAJiVwJiWAJiWQJiWgQCY2EJAQFIAgUCYlkFAmJXBAJjYgkBAUgCBQJiWgUCYlgJAQJiSAIFAmNiBQJjYQECY2MDAmJZAmJaAmNkBAJjZQkBAmFTAAQCY2YJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJjZQUBeQQCY2cJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJjZQUBegQCY2gJAQJiVgQFAmNmBQJjZwUCYlkFAmJaBAJiSgkBAUgCBQJiWQUCY2YEAmJJCQEBSAIFAmJaBQJjZwQCY2kJAQFIAgUCY2QFAWEEAmNqCQECYkgCBQJiSgUCY2kEAmNrCQECYkgCBQJiSQUCY2kJAMwIAgUCY2gJAMwIAgUCY2oJAMwIAgUCY2sFA25pbAECY2wDAmJZAmJaAmNkBAJjbQkBAmNjAwUCYlkFAmJaBQJjZAkAzAgCCQEBSwIJAJEDAgUCY20AAAUBYQkAzAgCCQEBSwIJAJEDAgUCY20AAQUBYQkAzAgCCQEBSwIJAJEDAgUCY20AAgUBYQUDbmlsAQJjbgECY28EAmNwCQBrAwUCY28FAmFqBQFhCQCUCgIJAGUCBQJjbwUCY3AFAmNwAQJjcQQCY3ICY3MCY3QCY3UEAmNlCQECYVMABAJjdgkAkQMCBQJjZQUBdgQCY3cJAJEDAgUCY2UFAXcEAmN4CQCRAwIFAmNlBQF4BAJjeQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmNlBQF5BAJjegkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmNlBQF6BAJjQQkAkQMCBQJjZQUBdQQCY0IICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQkA2QQBBQJjdgILV3JvbmcgTFAgaWQIcXVhbnRpdHkDCQECIT0CBQJjdgUCY3MJAAIBAg9Xcm9uZyBwbXQgYXNzZXQEAmNDCQECYkYBBQJjdwQCY0QJAQFIAgUCY0MFAmN5BAJjRQkBAmJGAQUCY3gEAmNGCQEBSAIFAmNFBQJjegQCY0cJAQJiSAIFAmNGBQJjRAQCY0gJAQFLAgUCY0cFAWEEAmNJCQEBSAIFAmN0BQFhBAJjSgkBAUgCBQJjQgUBYQQCY0sJALwCAwUCY0QFAmNJBQJjSgQCY0wJALwCAwUCY0YFAmNJBQJjSgQCY00JAQFLAgUCY0sFAmN5BAJjTgkBAUsCBQJjTAUCY3oEAmNPAwkAAAIFAmNyAgAFA25pbAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJjdQUCY00DCQAAAgUCY3cCBVdBVkVTBQR1bml0CQDZBAEFAmN3CQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmN1BQJjTgMJAAACBQJjeAIFV0FWRVMFBHVuaXQJANkEAQUCY3gJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFkAgkApQgBBQJjdQUCY3IJAQJiQgYFAmNNBQJjTgUCY3QFAmNIBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVwAFAmNICQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBWAIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmNIBQNuaWwJAJwKCgUCY00FAmNOBQJjdwUCY3gFAmNDBQJjRQUCY0IFAmNHBQJjQQUCY08BAmNQDQJjcgJiTgJjUQJjUgJjUwJjVAJjdQJjVQJjVgJjVwJjWAJjWQJjWgQCY2UJAQJhUwAEAmN2CQDZBAEJAJEDAgUCY2UFAXYEAmRhCQCRAwIFAmNlBQF3BAJkYgkAkQMCBQJjZQUBeAQCZGMJAJEDAgUCY2UFAUEEAmRkCQCRAwIFAmNlBQFCBAJkZQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmNlBQF5BAJkZgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmNlBQF6BAJjQQkAkQMCBQJjZQUBdQQCZGcICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCY3YCCFdyIGxwIGFzCHF1YW50aXR5BAJjQwMFAmNVCQECYkYBBQJkYQMDBQJjVwkAAAIFAmNaBQJkYQcJAGUCCQECYkYBBQJkYQUCY1kDBQJjVwkBAmJGAQUCZGEJAGUCCQECYkYBBQJkYQUCY1EEAmNFAwUCY1UJAQJiRgEFAmRiAwMFAmNXCQAAAgUCY1oFAmRiBwkAZQIJAQJiRgEFAmRiBQJjWQMFAmNXCQECYkYBBQJkYgkAZQIJAQJiRgEFAmRiBQJjUwQCZGgJAQFIAgUCY1EFAmRlBAJkaQkBAUgCBQJjUwUCZGYEAmRqCQECYkgCBQJkaQUCZGgEAmNECQEBSAIFAmNDBQJkZQQCY0YJAQFIAgUCY0UFAmRmBAJkawMJAAACBQJkZwAABAJjRwUBZAQCZGwFAWQEAmNpCQB2BgkAuQICBQJkaAUCZGkAAAkAtgIBAAUAAQAABQRET1dOCQCXCgUJAQFLAgUCY2kFAWEJAQFLAgUCZGgFAmRlCQEBSwIFAmRpBQJkZgkBAmJIAgkAtwICBQJjRgUCZGkJALcCAgUCY0QFAmRoBQJkbAQCY0cJAQJiSAIFAmNGBQJjRAQCZG0JALwCAwkBAVIBCQC4AgIFAmNHBQJkagUBYwUCY0cEAmRsCQEBSAIFAmJOBQFhAwMDBQJjWAkBAiE9AgUCY0cFAWQHCQC/AgIFAmRtBQJkbAcJAAIBCQCsAgIJAKwCAgkArAICAg9QcmljZSBzbGlwcGFnZSAJAKYDAQUCZG0CAyA+IAkApgMBBQJkbAQCZG4JAQFIAgUCZGcFAWEEAmRvCQC8AgMFAmRoBQJjRwUBYwQCZHAJALwCAwUCZGkFAWMFAmNHBAJkcQMJAL8CAgUCZG8FAmRpCQCUCgIFAmRwBQJkaQkAlAoCBQJkaAUCZG8EAmRyCAUCZHECXzEEAmRzCAUCZHECXzIEAmNpCQC8AgMFAmRuBQJkcwUCY0YJAJcKBQkBAUsCBQJjaQUBYQkBAUsCBQJkcgUCZGUJAQFLAgUCZHMFAmRmBQJjRwUCZGwEAmR0CAUCZGsCXzEEAmR1CAUCZGsCXzIEAmR2CAUCZGsCXzMEAmNICQEBSwIIBQJkawJfNAUBYQQCZHcJAQFLAggFAmRrAl81BQFhAwkAZwIAAAUCZHQJAAIBAgdMUCA8PSAwBAJkeAMJAQEhAQUCY1YAAAUCZHQEAmR5CQBlAgUCY1EFAmR1BAJkegkAZQIFAmNTBQJkdgQCZEEDAwUCY1cJAAACBQJjWgUCZGEHCQCUCgIFAmNZAAADAwUCY1cJAAACBQJjWgUCZGIHCQCUCgIAAAUCY1kJAJQKAgUCZHUFAmR2BAJkQggFAmRBAl8xBAJkQwgFAmRBAl8yBAJkRAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVcABQJjSAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVgCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJjSAkAzAgCCQELU3RyaW5nRW50cnkCCQECYWECBQJjdQUCY3IJAQJicQoFAmRCBQJkQwUCZHgFAmNIBQJiTgUCZHcFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmR5BQJkegUDbmlsCQCfCg0FAmR0BQJkeAUCY0gFAmNDBQJjRQUCZGcFAmN2BQJjQQUCZEQFAmR5BQJkegUCY1IFAmNUAQJkRQECZEYEAmRHCQCRAwIFAmRGAAAEAmRICQCRAwIFAmRGAAEEAmRJCQC3AgIFAmRHBQJkSAMJAAACBQJkSQUBZQUBZQQCZEoJAQ1wYXJzZUludFZhbHVlAQUCYU8EAmRLCQBoAgUCZEoAAgQCY20JALwCAwUCZEcFAmRIBQFmBAJkTAkAvAIDBQJjbQUBaQUBZgQCZE0JALwCAwkAtgIBBQJkSwUCZEkFAWYEAmROCQC2AgEJAGUCBQJkSwABCgECZE8BAmRQBAJkUQkAvAIDBQJkUAUCZFAFAWYEAmRSCQC8AgMFAmRRBQJkUAUBZgQCZFMJALwCAwUCZFIFAWYFAmRMCQC8AgMJALcCAgUCZE0JALwCAwUCZFMFAWcFAWYFAmRQCQC3AgIJALwCAwUCZE4FAmRQBQFmCQC8AgMFAWgFAmRTBQFmCgECZFQCAmRVAmRWAwgFAmRVAl8yBQJkVQQCZFAIBQJkVQJfMQQCZFcJAQJkTwEFAmRQBAJkWAkAoAMBCQC4AgIFAmRXCQEFdmFsdWUBBQJkUAQCZFkDCQBmAgAABQJkWAkBAS0BBQJkWAUCZFgDCQBnAgABBQJkWQkAlAoCBQJkVwYJAJQKAgUCZFcHBAJkWgkAzAgCAAAJAMwIAgABCQDMCAIAAgkAzAgCAAMJAMwIAgAECQDMCAIABQkAzAgCAAYJAMwIAgAHCQDMCAIACAkAzAgCAAkJAMwIAgAKCQDMCAIACwkAzAgCAAwJAMwIAgANCQDMCAIADgUDbmlsBAJlYQoAAmViBQJkWgoAAmVjCQCQAwEFAmViCgACZWQJAJQKAgUCZEkHCgECZWUCAmVmAmVnAwkAZwIFAmVnBQJlYwUCZWYJAQJkVAIFAmVmCQCRAwIFAmViBQJlZwoBAmVoAgJlZgJlZwMJAGcCBQJlZwUCZWMFAmVmCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTUJAQJlaAIJAQJlZQIJAQJlZQIJAQJlZQIJAQJlZQIJAQJlZQIJAQJlZQIJAQJlZQIJAQJlZQIJAQJlZQIJAQJlZQIJAQJlZQIJAQJlZQIJAQJlZQIJAQJlZQIJAQJlZQIFAmVkAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8EAmRQCAUCZWECXzEEAmVpCAUCZWECXzIDBQJlaQUCZFAJAAIBCQCsAgICGUQgY2FsY3VsYXRpb24gZXJyb3IsIEQgPSAJAKYDAQUCZFABAmVqAwJkRgJkVgJlawQCZWwFAWcEAmVtCQCRAwIFAmRGAwkAAAIFAmRWAAAAAQAABAJlbgkApwMBBQFsBAJkSgkAuQICCQCnAwEFAmFPBQJlbgQCZEkFAmVtBAJkSwkAuQICBQJkSgUCZWwEAmVvCQC6AgIJALkCAgkAuQICCQC6AgIJALkCAgUCZWsFAmVrCQC5AgIFAmVtBQJlbAUCZWsFAmVuCQC5AgIFAmRLBQJlbAQCZXAJALgCAgkAtwICBQJkSQkAugICCQC5AgIFAmVrBQJlbgUCZEsFAmVrCgECZFQCAmRVAmVxBAJlcgUCZFUEAmVzCAUCZXICXzEEAmVpCAUCZXICXzIDCQECIT0CBQJlaQUEdW5pdAUCZFUEAmV0CQC6AgIJALcCAgkAuQICBQJlcwUCZXMFAmVvCQC3AgIJALkCAgUBZwUCZXMFAmVwBAJldQkBAVMBCQC4AgIFAmV0CQEFdmFsdWUBBQJlcwMJAMACAgUBZgUCZXUJAJQKAgUCZXQFAmVxCQCUCgIFAmV0BQR1bml0BAJkWgkAzAgCAAAJAMwIAgABCQDMCAIAAgkAzAgCAAMJAMwIAgAECQDMCAIABQkAzAgCAAYJAMwIAgAHCQDMCAIACAkAzAgCAAkJAMwIAgAKCQDMCAIACwkAzAgCAAwJAMwIAgANCQDMCAIADgUDbmlsBAJldgoAAmViBQJkWgoAAmVjCQCQAwEFAmViCgACZWQJAJQKAgUCZWsFBHVuaXQKAQJlZQICZWYCZWcDCQBnAgUCZWcFAmVjBQJlZgkBAmRUAgUCZWYJAJEDAgUCZWIFAmVnCgECZWgCAmVmAmVnAwkAZwIFAmVnBQJlYwUCZWYJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxNQkBAmVoAgkBAmVlAgkBAmVlAgkBAmVlAgkBAmVlAgkBAmVlAgkBAmVlAgkBAmVlAgkBAmVlAgkBAmVlAgkBAmVlAgkBAmVlAgkBAmVlAgkBAmVlAgkBAmVlAgkBAmVlAgUCZWQAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwQCZXMIBQJldgJfMQQCZWkIBQJldgJfMgMJAQIhPQIFAmVpBQR1bml0BQJlcwkAAgEJAKwCAgIZWSBjYWxjdWxhdGlvbiBlcnJvciwgWSA9IAkApgMBBQJlcwECZXcDAmV4AmV5AmV6BAJlQQkAvAIDCQECZEUBCQDMCAIFAmV4CQDMCAIFAmV5BQNuaWwFAWMFAmV6BQJlQQECZUIDAmVDAmVEAmVFBAJlRgkAuAICCQC2AgEJAQJiRgEJAQJhWQEFAmJnBQJlQwQCZUcJALgCAgkAtgIBCQECYkYBCQECYVkBBQJiaAUCZUQEAmVICQC4AgIJALYCAQgJAQV2YWx1ZQEJAOwHAQUCYmYIcXVhbnRpdHkFAmVFBAJlSQkBAmV3AwUCZUYFAmVHBQJlSAUCZUkBAmVKAwJlSwJlTAJlRQQCZUYJAGQCCQECYkYBCQECYVkBBQJiZwUCZUsEAmVHCQBkAgkBAmJGAQkBAmFZAQUCYmgFAmVMBAJlSAkAZAIICQEFdmFsdWUBCQDsBwEFAmJmCHF1YW50aXR5BQJlRQQCZUEJAQJldwMJALYCAQUCZUYJALYCAQUCZUcJALYCAQUCZUgEAmVNCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQJhbAUGaGVpZ2h0CQDMCAIJAQtTdHJpbmdFbnRyeQIFAmFrCQCmAwEFAmVBBQNuaWwJAJQKAgUCZU0FAmVBAQJlTgICZU8CZUEDCQDAAgIFAmVBBQJlTwYJAQJhSwECInVwZGF0ZWQgS0xwIGxvd2VyIHRoYW4gY3VycmVudCBLTHABAmVQAQJlUQQCZVIIBQJlUQZhbW91bnQEAmVTCQBuBAgFAmVRBmFtb3VudAgFAmVRBXByaWNlBQFhBQVGTE9PUgQCZVQDCQAAAggFAmVRCW9yZGVyVHlwZQUDQnV5CQCUCgIFAmVSCQEBLQEFAmVTCQCUCgIJAQEtAQUCZVIFAmVTBAJlSwgFAmVUAl8xBAJlTAgFAmVUAl8yAwMDCQECYVAABgkAAAIFAmJlBQFyBgkAAAIFAmJlBQFzCQACAQINQWRtaW4gYmxvY2tlZAMDCQECIT0CCAgFAmVRCWFzc2V0UGFpcgthbW91bnRBc3NldAUCYmcGCQECIT0CCAgFAmVRCWFzc2V0UGFpcgpwcmljZUFzc2V0BQJiaAkAAgECCVdyIGFzc2V0cwQCZVUJAKcDAQkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwUCYWsEAmVWCQECZUoDBQJlSwUCZUwAAAQCZVcIBQJlVgJfMQQCZVgIBQJlVgJfMgQCZVkJAL8CAgUCZVgFAmVVBQJlWQECZVoBAmRWAwkBAiE9AgkAkAMBCAUCZFYIcGF5bWVudHMAAQkAAgECCjEgcG1udCBleHAEAmZhCQEFdmFsdWUBCQCRAwIIBQJkVghwYXltZW50cwAABAJjcwkBBXZhbHVlAQgFAmZhB2Fzc2V0SWQEAmNZCAUCZmEGYW1vdW50BAJkawkBAmNxBAkA2AQBCAUCZFYNdHJhbnNhY3Rpb25JZAkA2AQBBQJjcwUCY1kIBQJkVgZjYWxsZXIEAmNNCAUCZGsCXzEEAmNOCAUCZGsCXzIEAmNBCQENcGFyc2VJbnRWYWx1ZQEIBQJkawJfOQQCY08IBQJkawNfMTADAwkBAmFQAAYJAAACBQJjQQUBcwkAAgEJAKwCAgIPQWRtaW4gYmxvY2tlZDogCQCkAwEFAmNBCQCXCgUFAmNNBQJjTgUCY1kFAmNzBQJjTwECZmIKAmZjAmFjAmZkAmZlAmJOAmNWAmNXAmNYAmNZAmNaBAJkawkBAmNQDQUCYWMFAmJOCAkBBXZhbHVlAQUCZmQGYW1vdW50CAkBBXZhbHVlAQUCZmQHYXNzZXRJZAgJAQV2YWx1ZQEFAmZlBmFtb3VudAgJAQV2YWx1ZQEFAmZlB2Fzc2V0SWQFAmZjCQAAAgUCYWMCAAUCY1YFAmNXBQJjWAUCY1kFAmNaBAJjQQkBDXBhcnNlSW50VmFsdWUBCAUCZGsCXzgDAwMJAQJhUAAGCQAAAgUCY0EFAXEGCQAAAgUCY0EFAXMJAAIBCQCsAgICCEJsb2NrZWQ6CQCkAwEFAmNBBQJkawECZmYFAmZnAmNzAmN1AmFjAmZoBAJiYQkBAmFTAAQCY3cJAJEDAgUCYmEFAXcEAmN4CQCRAwIFAmJhBQF4BAJjdgkAkQMCBQJiYQUBdgQCZGUJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiYQUBeQQCZGYJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiYQUBegQCZUgJALYCAQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBCQDZBAEFAmN2AhBpbnZhbGlkIGxwIGFzc2V0CHF1YW50aXR5BAJmaQMJAL8CAgUCZUgFAWUGCQACAQIiaW5pdGlhbCBkZXBvc2l0IHJlcXVpcmVzIGFsbCBjb2lucwMJAAACBQJmaQUCZmkEAmNDCQECYkYBBQJjdwQCY0UJAQJiRgEFAmN4BAJmagMJAAACBQJhYwIACQCUCgIFAmNDBQJjRQMJAAACBQJjcwUCY3cDCQBmAgUCZmcFAmNDCQACAQIWaW52YWxpZCBwYXltZW50IGFtb3VudAkAlAoCCQBlAgUCY0MFAmZnBQJjRQMJAAACBQJjcwUCY3gDCQBmAgUCZmcFAmNFCQACAQIWaW52YWxpZCBwYXltZW50IGFtb3VudAkAlAoCBQJjQwkAZQIFAmNFBQJmZwkAAgECEHdyb25nIHBtdEFzc2V0SWQEAmZrCAUCZmoCXzEEAmZsCAUCZmoCXzIEAmZtAwkAAAIFAmNzBQJjdwkAlAoCBQJmZwAAAwkAAAIFAmNzBQJjeAkAlAoCAAAFAmZnCQACAQIPaW52YWxpZCBwYXltZW50BAJmbggFAmZtAl8xBAJmbwgFAmZtAl8yBAJmcAMFAmZoCQCVCgMICQECY24BBQJmbgJfMQgJAQJjbgEFAmZvAl8xCAkBAmNuAQUCZmcCXzIJAJUKAwUCZm4FAmZvAAAEAmZxCAUCZnACXzEEAmZyCAUCZnACXzIEAmNwCAUCZnACXzMEAmZzCQBkAgUCZmsFAmZxBAJmdAkAZAIFAmZsBQJmcgQCYlMJAQJkRQEJAMwIAgkAtgIBBQJmawkAzAgCCQC2AgEFAmZsBQNuaWwEAmJSCQECZEUBCQDMCAIJALYCAQUCZnMJAMwIAgkAtgIBBQJmdAUDbmlsBAJmdQMJAL8CAgUCYlIFAmJTBgkBBXRocm93AAMJAAACBQJmdQUCZnUEAmZ2CQC8AgMFAmVICQC4AgIFAmJSBQJiUwUCYlMEAmNICQEBSwIJAQJiSAIJAQFIAgUCZnQFAmRmCQEBSAIFAmZzBQJkZQUBYQQCZEQJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFXAAUCY0gJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFYAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCY0gJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFhAgUCY3UFAmFjCQECYnEKBQJmbgUCZm8JAKADAQUCZnYFAmNIAAAAAAUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAAAAAAFA25pbAQCZncJAGsDBQJmbAUBYQUCZmsEAmZ4CQBrAwUCZmcFAWEJAGQCBQJmdwUBYQQCZnkJAGUCBQJmZwUCZngEAmZ6CQC8AgMFAmVICQC2AgEFAmZ5CQC2AgEFAmZsBAJmQQkAoAMBCQC8AgMJALgCAgUCZnYFAmZ6BQFiBQJmegkAlgoECQCgAwEFAmZ2BQJkRAUCY3AFAmZBCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJmQgYCZkMCZkQCZkUCZmMCZkYCZkcEAmJhCQECYVMABAJjdgkAkQMCBQJiYQUBdgQCY3cJAJEDAgUCYmEFAXcEAmN4CQCRAwIFAmJhBQF4BAJmSAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJhBQF5BAJmSQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJhBQF6BAJmSgkAkQMCBQJiYQUBdQQCY3UDCQAAAgUCZmMFAmJwBQJmRgUCZmMEAmZhCQEFdmFsdWUBCQCRAwIFAmZFAAAEAmNzCQEFdmFsdWUBCAUCZmEHYXNzZXRJZAQCY1kIBQJmYQZhbW91bnQEAmVJCQECZUIDCQC2AgEAAAkAtgIBAAAJALYCAQUCY1kEAmNyCQDYBAEFAmZHAwkBAiE9AgUCY3YJANgEAQUCY3MJAAIBAghXcm9uZyBMUAQCY0MJAQJiRgEFAmN3BAJjRQkBAmJGAQUCY3gEAmZLCgACZkwJAPwHBAUEdGhpcwITZ2V0T25lVGtuVjJSRUFET05MWQkAzAgCBQJmQwkAzAgCBQJjWQUDbmlsBQNuaWwDCQABAgUCZkwCCihJbnQsIEludCkFAmZMCQACAQkArAICCQADAQUCZkwCHyBjb3VsZG4ndCBiZSBjYXN0IHRvIChJbnQsIEludCkDCQAAAgUCZksFAmZLBAJjcAgFAmZLAl8yBAJmTQgFAmZLAl8xBAJmTgMDCQBmAgUCZkQAAAkAZgIFAmZEBQJmTQcJAQJhSwEJALkJAgkAzAgCAh9hbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZkQFA25pbAIABQJmTQQCZk8DCQAAAgUCZkMFAmN3CQCWCgQFAmZOAAAJAGUCCQBlAgUCY0MFAmZOBQJjcAUCY0UDCQAAAgUCZkMFAmN4CQCWCgQAAAUCZk4FAmNDCQBlAgkAZQIFAmNFBQJmTgUCY3AJAAIBAhRpbnZhbGlkIG91dCBhc3NldCBpZAQCZlAIBQJmTwJfMQQCZlEIBQJmTwJfMgQCZnMIBQJmTwJfMwQCZnQIBQJmTwJfNAQCZlIJAQJiSAIJAQFIAgUCZnQFAmZJCQEBSAIFAmZzBQJmSAQCZlMJAQFLAgUCZlIFAWEEAmZUAwkAAAIFAmZDAgVXQVZFUwUEdW5pdAkA2QQBBQJmQwQCZlUDCQBmAgUCY3AAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJhUgUCY3AFAmZUBQNuaWwFA25pbAQCY08JAM4IAgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJjdQUCZk4FAmZUCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhZAIJAKUIAQUCY3UFAmNyCQECYkIGBQJmUAUCZlEFAmNZBQJmUwUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVcABQJmUwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVgCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJmUwUDbmlsBQJmVQMJAAACBQJjTwUCY08EAmZWCQD8BwQFAmFOAgRidXJuCQDMCAIFAmNZBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmNzBQJjWQUDbmlsAwkAAAIFAmZWBQJmVgQCZlcEAmZYAwkAAAIFBHRoaXMFAmFSAAAFAmNwBAJmWQMJAAACCQECYVcBBQJmQwUCYmcGBwMFAmZZCQCUCgIJAQEtAQkAZAIFAmZNBQJmWAAACQCUCgIAAAkBAS0BCQBkAgUCZk0FAmZYBAJlSwgFAmZXAl8xBAJlTAgFAmZXAl8yBAJmWgkBAmVKAwUCZUsFAmVMAAAEAmdhCAUCZloCXzEEAmVBCAUCZloCXzIEAmdiCQECZU4CBQJlSQUCZUEDCQAAAgUCZ2IFAmdiCQCUCgIJAM4IAgUCY08FAmdhBQJmTgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECZ2MABAJhRQkAoggBCQEBVQADCQABAgUCYUUCBlN0cmluZwQCZEkFAmFFCQDZBAEFAmRJAwkAAQIFAmFFAgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IBAmdkAAQCYUUJAKIIAQkBAVYAAwkAAQIFAmFFAgZTdHJpbmcEAmRJBQJhRQkA2QQBBQJkSQMJAAECBQJhRQIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAAJnZQkAAgECEVBlcm1pc3Npb24gZGVuaWVkAQJnZgECZFYEAmFFCQECZ2MAAwkAAQIFAmFFAgpCeXRlVmVjdG9yBAJnZwUCYUUJAAACCAUCZFYPY2FsbGVyUHVibGljS2V5BQJnZwMJAAECBQJhRQIEVW5pdAkAAAIIBQJkVgZjYWxsZXIFBHRoaXMJAAIBAgtNYXRjaCBlcnJvcgECZ2gBAmRWBAJhRQkBAmdjAAMJAAECBQJhRQIKQnl0ZVZlY3RvcgQCZ2cFAmFFAwkAAAIIBQJkVg9jYWxsZXJQdWJsaWNLZXkFAmdnBgUCZ2UDCQABAgUCYUUCBFVuaXQDCQAAAggFAmRWBmNhbGxlcgUEdGhpcwYFAmdlCQACAQILTWF0Y2ggZXJyb3IdAmRWAQtjb25zdHJ1Y3RvcgEBVAQCZW8JAQJnaAEFAmRWAwkAAAIFAmVvBQJlbwkAzAgCCQELU3RyaW5nRW50cnkCCQEBVAAFAVQFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkVgEKc2V0TWFuYWdlcgECZ2kEAmVvCQECZ2gBBQJkVgMJAAACBQJlbwUCZW8EAmdqCQDZBAEFAmdpAwkAAAIFAmdqBQJnagkAzAgCCQELU3RyaW5nRW50cnkCCQEBVgAFAmdpBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZFYBDmNvbmZpcm1NYW5hZ2VyAAQCY20JAQJnZAAEAmdrAwkBCWlzRGVmaW5lZAEFAmNtBgkAAgECEk5vIHBlbmRpbmcgbWFuYWdlcgMJAAACBQJnawUCZ2sEAmdsAwkAAAIIBQJkVg9jYWxsZXJQdWJsaWNLZXkJAQV2YWx1ZQEFAmNtBgkAAgECG1lvdSBhcmUgbm90IHBlbmRpbmcgbWFuYWdlcgMJAAACBQJnbAUCZ2wJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVUACQDYBAEJAQV2YWx1ZQEFAmNtCQDMCAIJAQtEZWxldGVFbnRyeQEJAQFWAAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRWAQNwdXQCAmdtAmduBAJnbwkBAmJrAAQCZ3AJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmdvBQFDAgpXciBzdCBhZGRyBAJncQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCZ28FAUUCCldyIHNsIGFkZHIDCQBmAgAABQJnbQkAAgECDldyb25nIHNsaXBwYWdlAwkBAiE9AgkAkAMBCAUCZFYIcGF5bWVudHMAAgkAAgECDDIgcG1udHMgZXhwZAQCZ3IJALYCAQgJAQV2YWx1ZQEJAJEDAggFAmRWCHBheW1lbnRzAAAGYW1vdW50BAJncwkAtgIBCAkBBXZhbHVlAQkAkQMCCAUCZFYIcGF5bWVudHMAAQZhbW91bnQEAmVJCQECZUIDBQJncgUCZ3MJALYCAQAAAwkAAAIFAmVJBQJlSQQCZ3QJAQJmYgoJAKUIAQgFAmRWBmNhbGxlcgkA2AQBCAUCZFYNdHJhbnNhY3Rpb25JZAkBD0F0dGFjaGVkUGF5bWVudAIICQEFdmFsdWUBCQCRAwIIBQJkVghwYXltZW50cwAAB2Fzc2V0SWQICQEFdmFsdWUBCQCRAwIIBQJkVghwYXltZW50cwAABmFtb3VudAkAkQMCCAUCZFYIcGF5bWVudHMAAQUCZ20GBwYAAAIABAJkeAgFAmd0Al8yBAJndQgFAmd0Al83BAJjTwgFAmd0Al85BAJkeQgFAmd0A18xMAQCZHoIBQJndANfMTEEAmN3CAUCZ3QDXzEyBAJjeAgFAmd0A18xMwQCZGsJAPwHBAUCYU4CBGVtaXQJAMwIAgUCZHgFA25pbAUDbmlsAwkAAAIFAmRrBQJkawQCZ3YEAmFFBQJkawMJAAECBQJhRQIHQWRkcmVzcwQCZ3cFAmFFCQD8BwQFAmd3AgRlbWl0CQDMCAIFAmR4BQNuaWwFA25pbAUEdW5pdAMJAAACBQJndgUCZ3YEAmd4AwkAZgIFAmR5AAAJAPwHBAUCZ3ECA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJjdwUCZHkFA25pbAUDbmlsAwkAAAIFAmd4BQJneAQCZ3kDCQBmAgUCZHoAAAkA/AcEBQJncQIDcHV0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmN4BQJkegUDbmlsBQNuaWwDCQAAAgUCZ3kFAmd5BAJnegMFAmduBAJnQQkA/AcEBQJncAIFc3Rha2UFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZ3UFAmR4BQNuaWwDCQAAAgUCZ0EFAmdBBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAmRWBmNhbGxlcgUCZHgFAmd1BQNuaWwEAmdCCQECZUoDAAAAAAAABAJnYQgFAmdCAl8xBAJlQQgFAmdCAl8yBAJnYgkBAmVOAgUCZUkFAmVBAwkAAAIFAmdiBQJnYgkAzggCCQDOCAIFAmNPBQJnegUCZ2EJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZFYBC3B1dE9uZVRrblYyAgJmRAJnbgQCZ0MKAAJmTAkA/AcEBQJhTgIoaXNQb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWRSRUFET05MWQkAzAgCCQClCAEFBHRoaXMFA25pbAUDbmlsAwkAAQIFAmZMAgdCb29sZWFuBQJmTAkAAgEJAKwCAgkAAwEFAmZMAhwgY291bGRuJ3QgYmUgY2FzdCB0byBCb29sZWFuBAJnRAMDAwkBAmFQAAYJAAACBQJiZQUBcQYJAAACBQJiZQUBcwYFAmdDBAJnRQkAzAgCAwMJAQEhAQUCZ0QGCQECZ2YBBQJkVgYJAQJhSwECIXB1dCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbgkAzAgCAwkAAAIJAJADAQgFAmRWCHBheW1lbnRzAAEGCQECYUsBAh5leGFjdGx5IDEgcGF5bWVudCBhcmUgZXhwZWN0ZWQFA25pbAMJAAACBQJnRQUCZ0UEAmJhCQECYVMABAJjdwkAkQMCBQJiYQUBdwQCY3gJAJEDAgUCYmEFAXgEAmN2CQDZBAEJAJEDAgUCYmEFAXYEAmZICQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYmEFAXkEAmZJCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYmEFAXoEAmN1AwkAAAIIBQJkVgZjYWxsZXIFBHRoaXMIBQJkVgxvcmlnaW5DYWxsZXIIBQJkVgZjYWxsZXIEAmZhCQEFdmFsdWUBCQCRAwIIBQJkVghwYXltZW50cwAABAJjcwkA2AQBCQEFdmFsdWUBCAUCZmEHYXNzZXRJZAQCY1kIBQJmYQZhbW91bnQEAmdGCQECZmYFBQJjWQUCY3MJAKUIAQUCY3UJANgEAQgFAmRWDXRyYW5zYWN0aW9uSWQGAwkAAAIFAmdGBQJnRgQCY3AIBQJnRgJfMwQCY08IBQJnRgJfMgQCZ0cIBQJnRgJfMQQCZHgDAwkAZgIFAmZEAAAJAGYCBQJmRAUCZ0cHCQECYUsBCQC5CQIJAMwIAgIfYW1vdW50IHRvIHJlY2VpdmUgaXMgbGVzcyB0aGFuIAkAzAgCCQCkAwEFAmZEBQNuaWwCAAUCZ0cEAmd0CQD8BwQFAmFOAgRlbWl0CQDMCAIFAmR4BQNuaWwFA25pbAMJAAACBQJndAUCZ3QEAmd2BAJhRQUCZ3QDCQABAgUCYUUCB0FkZHJlc3MEAmd3BQJhRQkA/AcEBQJndwIEZW1pdAkAzAgCBQJkeAUDbmlsBQNuaWwFBHVuaXQDCQAAAgUCZ3YFAmd2BAJnegMFAmduBAJnQQkA/AcEBQJibQIFc3Rha2UFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCY3YFAmR4BQNuaWwDCQAAAgUCZ0EFAmdBBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAmRWBmNhbGxlcgUCZHgFAmN2BQNuaWwEAmZVAwkAZgIFAmNwAAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYVIFAmNwCQDZBAEFAmNzBQNuaWwFA25pbAQCZ0gDCQAAAgUEdGhpcwUCYVIJAJQKAgAAAAAEAmdJAwkAAAIIBQJmYQdhc3NldElkBQJiZwYHAwUCZ0kJAJQKAgkBAS0BBQJjcAAACQCUCgIAAAkBAS0BBQJjcAQCZUsIBQJnSAJfMQQCZUwIBQJnSAJfMgQCZ0oJAQJlSgMFAmVLBQJlTAAABAJnYQgFAmdKAl8xBAJlQQgFAmdKAl8yCQCUCgIJAM4IAgkAzggCCQDOCAIFAmNPBQJnegUCZlUFAmdhBQJkeAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkVgEKcHV0Rm9yRnJlZQECZ0sDCQBmAgAABQJnSwkAAgECCldyb25nIHNscGcDCQECIT0CCQCQAwEIBQJkVghwYXltZW50cwACCQACAQIMMiBwbW50cyBleHBkBAJnTAkBAmZiCgkApQgBCAUCZFYGY2FsbGVyCQDYBAEIBQJkVg10cmFuc2FjdGlvbklkCQEPQXR0YWNoZWRQYXltZW50AggJAQV2YWx1ZQEJAJEDAggFAmRWCHBheW1lbnRzAAAHYXNzZXRJZAgJAQV2YWx1ZQEJAJEDAggFAmRWCHBheW1lbnRzAAAGYW1vdW50CQCRAwIIBQJkVghwYXltZW50cwABBQJnSwcHBgAAAgAEAmNPCAUCZ0wCXzkEAmdyCQC2AgEICQEFdmFsdWUBCQCRAwIIBQJkVghwYXltZW50cwAABmFtb3VudAQCZ3MJALYCAQgJAQV2YWx1ZQEJAJEDAggFAmRWCHBheW1lbnRzAAEGYW1vdW50BAJlSQkBAmVCAwUCZ3IFAmdzCQC2AgEAAAMJAAACBQJlSQUCZUkEAmdNCQECZUoDAAAAAAAABAJnYQgFAmdNAl8xBAJlQQgFAmdNAl8yBAJnYgkBAmVOAgUCZUkFAmVBAwkAAAIFAmdiBQJnYgkAzggCBQJjTwUCZ2EJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZFYBA2dldAAEAmRrCQECZVoBBQJkVgQCZ04IBQJkawJfMQQCY04IBQJkawJfMgQCY1kIBQJkawJfMwQCY3MIBQJkawJfNAQCY08IBQJkawJfNQQCZXAJAPwHBAUCYU4CBGJ1cm4JAMwIAgUCY1kFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCY3MFAmNZBQNuaWwDCQAAAgUCZXAFAmVwBAJlSQkBAmVCAwkAtgIBAAAJALYCAQAACQC2AgEFAmNZBAJnTwkBAmVKAwkBAS0BBQJnTgkBAS0BBQJjTgAABAJnYQgFAmdPAl8xBAJlQQgFAmdPAl8yBAJnYgkBAmVOAgUCZUkFAmVBAwkAAAIFAmdiBQJnYgkAzggCBQJjTwUCZ2EJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZFYBC2dldE9uZVRrblYyAgJmQwJmRAQCZ0MKAAJmTAkA/AcEBQJhTgIoaXNQb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWRSRUFET05MWQkAzAgCCQClCAEFBHRoaXMFA25pbAUDbmlsAwkAAQIFAmZMAgdCb29sZWFuBQJmTAkAAgEJAKwCAgkAAwEFAmZMAhwgY291bGRuJ3QgYmUgY2FzdCB0byBCb29sZWFuBAJnUAMDCQECYVAABgkAAAIFAmJlBQFzBgUCZ0MEAmdFCQDMCAIDAwkBASEBBQJnUAYJAQJnZgEFAmRWBgkBAmFLAQIhZ2V0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluCQDMCAIDCQAAAgkAkAMBCAUCZFYIcGF5bWVudHMAAQYJAQJhSwECHmV4YWN0bHkgMSBwYXltZW50IGFyZSBleHBlY3RlZAUDbmlsAwkAAAIFAmdFBQJnRQQCZ1EJAQJmQgYFAmZDBQJmRAgFAmRWCHBheW1lbnRzCAUCZFYGY2FsbGVyCAUCZFYMb3JpZ2luQ2FsbGVyCAUCZFYNdHJhbnNhY3Rpb25JZAQCY08IBQJnUQJfMQQCZk4IBQJnUQJfMgkAlAoCBQJjTwUCZk4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZFYBCnJlZnJlc2hETHAABAJnUgkBC3ZhbHVlT3JFbHNlAgkAnwgBBQJhbAAABAJnUwMJAGcCCQBlAgUGaGVpZ2h0BQJnUgUCYW8FBHVuaXQJAQJhSwEJALkJAgkAzAgCCQCkAwEFAmFvCQDMCAICLyBibG9ja3MgaGF2ZSBub3QgcGFzc2VkIHNpbmNlIHRoZSBwcmV2aW91cyBjYWxsBQNuaWwCAAMJAAACBQJnUwUCZ1MEAmVVCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKgDAQkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzBQJhawIBMAkBAmFNAQILaW52YWxpZCBkTHAEAmdUCQECZUoDAAAAAAAABAJnVQgFAmdUAl8xBAJlQQgFAmdUAl8yBAJlTQMJAQIhPQIFAmVVBQJlQQUCZ1UJAQJhSwECEm5vdGhpbmcgdG8gcmVmcmVzaAkAlAoCBQJlTQkApgMBBQJlQQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkVgETZ2V0T25lVGtuVjJSRUFET05MWQICZkMCZ1YEAmJhCQECYVMABAJjdwkAkQMCBQJiYQUBdwQCY3gJAJEDAgUCYmEFAXgEAmN2CQCRAwIFAmJhBQF2BAJkRgkAzAgCCQC2AgEJAQJiRgEFAmN3CQDMCAIJALYCAQkBAmJGAQUCY3gFA25pbAQCZXoJALYCAQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBCQDZBAEFAmN2AhBpbnZhbGlkIGxwIGFzc2V0CHF1YW50aXR5BAJiUwkBAmRFAQUCZEYEAmJSCQC4AgIFAmJTCQC8AgMJALYCAQUCZ1YFAmJTBQJlegQCZ1cDCQAAAgUCZkMFAmN3AAADCQAAAgUCZkMFAmN4AAEJAAIBAhRpbnZhbGlkIG91dCBhc3NldCBpZAQCZ1gJAQJlagMFAmRGBQJnVwUCYlIEAmdZCQC4AgIJAJEDAgUCZEYFAmdXBQJnWAQCZ1oJAJYDAQkAzAgCAAAJAMwIAgkAoAMBCQC4AgIFAmdZBQFmBQNuaWwEAmhhCQECY24BBQJnWgQCZk0IBQJoYQJfMQQCY3AIBQJoYQJfMgkAlAoCBQNuaWwJAJQKAgUCZk0FAmNwAmRWARxnZXRPbmVUa25WMldpdGhCb251c1JFQURPTkxZAgJmQwJnVgQCYmEJAQJhUwAEAmN3CQCRAwIFAmJhBQF3BAJjeAkAkQMCBQJiYQUBeAQCY3YJAJEDAgUCYmEFAXYEAmNDCQECYkYBBQJjdwQCY0UJAQJiRgEFAmN4BAJoYgoAAmZMCQD8BwQFBHRoaXMCE2dldE9uZVRrblYyUkVBRE9OTFkJAMwIAgUCZkMJAMwIAgUCZ1YFA25pbAUDbmlsAwkAAQIFAmZMAgooSW50LCBJbnQpBQJmTAkAAgEJAKwCAgkAAwEFAmZMAh8gY291bGRuJ3QgYmUgY2FzdCB0byAoSW50LCBJbnQpBAJmTQgFAmhiAl8xBAJjcAgFAmhiAl8yBAJkawkBAmNxBAIABQJjdgUCZ1YFBHRoaXMEAmNNCAUCZGsCXzEEAmNOCAUCZGsCXzIEAmhjCQBkAgUCY00FAmNOBAJmQQMJAAACBQJoYwAAAwkAAAIFAmZNAAAAAAkAAgECF2JvbnVzIGNhbGN1bGF0aW9uIGVycm9yCQBrAwkAZQIFAmZNBQJoYwUBYQUCaGMJAJQKAgUDbmlsCQCVCgMFAmZNBQJjcAUCZkECZFYBCWdldE5vTGVzcwICaGQCaGUEAmRrCQECZVoBBQJkVgQCY00IBQJkawJfMQQCY04IBQJkawJfMgQCY1kIBQJkawJfMwQCY3MIBQJkawJfNAQCY08IBQJkawJfNQMJAGYCBQJoZAUCY00JAAIBCQCsAgIJAKwCAgkArAICAglGYWlsZWQ6ICAJAKQDAQUCY00CAyA8IAkApAMBBQJoZAMJAGYCBQJoZQUCY04JAAIBCQCsAgIJAKwCAgkArAICAghGYWlsZWQ6IAkApAMBBQJjTgIDIDwgCQCkAwEFAmhlBAJlSQkBAmVCAwkAtgIBAAAJALYCAQAACQC2AgEFAmNZBAJoZgkA/AcEBQJhTgIEYnVybgkAzAgCBQJjWQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJjcwUCY1kFA25pbAMJAAACBQJoZgUCaGYEAmhnCQECZUoDCQEBLQEFAmNNCQEBLQEFAmNOAAAEAmdhCAUCaGcCXzEEAmVBCAUCaGcCXzIEAmdiCQECZU4CBQJlSQUCZUEDCQAAAgUCZ2IFAmdiCQDOCAIFAmNPBQJnYQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkVgENdW5zdGFrZUFuZEdldAECY28EAmhoAwkBAiE9AgkAkAMBCAUCZFYIcGF5bWVudHMAAAkAAgECDU5vIHBtbnRzIGV4cGQGAwkAAAIFAmhoBQJoaAQCY2UJAQJhUwAEAmhpCQECYmsABAJndQkA2QQBCQCRAwIFAmNlBQF2BAJoagkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCaGkFAUMCCldyIHN0IGFkZHIEAmVJCQECZUIDCQC2AgEAAAkAtgIBAAAJALYCAQAABAJoawkA/AcEBQJoagIHdW5zdGFrZQkAzAgCCQDYBAEFAmd1CQDMCAIFAmNvBQNuaWwFA25pbAMJAAACBQJoawUCaGsEAmRrCQECY3EECQDYBAEIBQJkVg10cmFuc2FjdGlvbklkCQDYBAEFAmd1BQJjbwgFAmRWBmNhbGxlcgQCY00IBQJkawJfMQQCY04IBQJkawJfMgQCY0EJAQ1wYXJzZUludFZhbHVlAQgFAmRrAl85BAJjTwgFAmRrA18xMAQCaGwDAwkBAmFQAAYJAAACBQJjQQUBcwkAAgEJAKwCAgIJQmxvY2tlZDogCQCkAwEFAmNBBgMJAAACBQJobAUCaGwEAmhtCQD8BwQFAmFOAgRidXJuCQDMCAIFAmNvBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmd1BQJjbwUDbmlsAwkAAAIFAmhtBQJobQQCaG4JAQJlSgMJAQEtAQUCY00JAQEtAQUCY04AAAQCZ2EIBQJobgJfMQQCZUEIBQJobgJfMgQCZ2IJAQJlTgIFAmVJBQJlQQMJAAACBQJnYgUCZ2IJAM4IAgUCY08FAmdhCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRWARN1bnN0YWtlQW5kR2V0Tm9MZXNzAwJobwJocAJoZQQCZ1ADCQECYVAABgkAAAIFAmJlBQFzBAJnRQkAzAgCAwkBASEBBQJnUAYJAAIBAiFnZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJkVghwYXltZW50cwAABgkAAgECGG5vIHBheW1lbnRzIGFyZSBleHBlY3RlZAUDbmlsAwkAAAIFAmdFBQJnRQQCZUkJAQJlQgMJALYCAQAACQC2AgEAAAkAtgIBAAAEAmhrCQD8BwQFAmJtAgd1bnN0YWtlCQDMCAIJANgEAQUCYmYJAMwIAgUCaG8FA25pbAUDbmlsAwkAAAIFAmhrBQJoawQCaHEJAQJjcQQJANgEAQgFAmRWDXRyYW5zYWN0aW9uSWQJANgEAQUCYmYFAmhvCAUCZFYGY2FsbGVyBAJjTQgFAmhxAl8xBAJjTggFAmhxAl8yBAJjTwgFAmhxA18xMAQCaHIJAMwIAgMJAGcCBQJjTQUCaHAGCQACAQkAuQkCCQDMCAICLGFtb3VudCBhc3NldCBhbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCaHAFA25pbAIACQDMCAIDCQBnAgUCY04FAmhlBgkAAgEJALkJAgkAzAgCAitwcmljZSBhc3NldCBhbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCaGUFA25pbAIABQNuaWwDCQAAAgUCaHIFAmhyBAJoZgkA/AcEBQJhTgIEYnVybgkAzAgCBQJobwUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJiZgUCaG8FA25pbAMJAAACBQJoZgUCaGYEAmhzCQECZUoDCQEBLQEFAmNNCQEBLQEFAmNOAAAEAmdhCAUCaHMCXzEEAmVBCAUCaHMCXzIEAmdiCQECZU4CBQJlSQUCZUEDCQAAAgUCZ2IFAmdiCQDOCAIFAmNPBQJnYQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkVgEVdW5zdGFrZUFuZEdldE9uZVRrblYyAwJobwJmQwJmRAQCZ0MKAAJmTAkA/AcEBQJhTgIoaXNQb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWRSRUFET05MWQkAzAgCCQClCAEFBHRoaXMFA25pbAUDbmlsAwkAAQIFAmZMAgdCb29sZWFuBQJmTAkAAgEJAKwCAgkAAwEFAmZMAhwgY291bGRuJ3QgYmUgY2FzdCB0byBCb29sZWFuBAJnUAMDCQECYVAABgkAAAIFAmJlBQFzBgUCZ0MEAmdFCQDMCAIDAwkBASEBBQJnUAYJAQJnZgEFAmRWBgkBAmFLAQIhZ2V0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluCQDMCAIDCQAAAgkAkAMBCAUCZFYIcGF5bWVudHMAAAYJAQJhSwECGG5vIHBheW1lbnRzIGFyZSBleHBlY3RlZAUDbmlsAwkAAAIFAmdFBQJnRQQCY2UJAQJhUwAEAmhpCQECYmsABAJndQkA2QQBCQCRAwIFAmNlBQF2BAJoagkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCaGkFAUMCCldyIHN0IGFkZHIEAmhrCQD8BwQFAmhqAgd1bnN0YWtlCQDMCAIJANgEAQUCZ3UJAMwIAgUCaG8FA25pbAUDbmlsAwkAAAIFAmhrBQJoawQCaHQJAQJmQgYFAmZDBQJmRAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZ3UFAmhvBQNuaWwIBQJkVgZjYWxsZXIIBQJkVgxvcmlnaW5DYWxsZXIIBQJkVg10cmFuc2FjdGlvbklkBAJjTwgFAmh0Al8xBAJmTggFAmh0Al8yCQCUCgIFAmNPBQJmTgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkVgEccHV0T25lVGtuVjJXaXRoQm9udXNSRUFET05MWQICaHUCaHYEAmJhCQECYVMABAJjdwkAkQMCBQJiYQUBdwQCY3gJAJEDAgUCYmEFAXgEAmN2CQCRAwIFAmJhBQF2BAJodwkBAmZmBQUCaHUFAmh2AgACAAYEAmZ2CAUCaHcCXzEEAmNPCAUCaHcCXzIEAmNwCAUCaHcCXzMEAmZBCAUCaHcCXzQJAJQKAgUDbmlsCQCVCgMFAmZ2BQJjcAUCZkECZFYBIXB1dE9uZVRrblYyV2l0aG91dFRha2VGZWVSRUFET05MWQICaHUCaHYEAmJhCQECYVMABAJjdwkAkQMCBQJiYQUBdwQCY3gJAJEDAgUCYmEFAXgEAmN2CQCRAwIFAmJhBQF2BAJoeAkBAmZmBQUCaHUFAmh2AgACAAcEAmZ2CAUCaHgCXzEEAmNPCAUCaHgCXzIEAmNwCAUCaHgCXzMEAmZBCAUCaHgCXzQJAJQKAgUDbmlsCQCVCgMFAmZ2BQJjcAUCZkECZFYBCGFjdGl2YXRlAgJoeQJoegMJAQIhPQIJAKUIAQgFAmRWBmNhbGxlcgkApQgBBQJhTgkAAgECBmRlbmllZAkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhZQAFAmh5CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhZgAFAmh6BQNuaWwCB3N1Y2Nlc3MCZFYBBHNldFMCAmhBAmhsAwkBAiE9AgkApQgBCAUCZFYGY2FsbGVyCQECYUcCBQR0aGlzCQECYWgABQJnZQkAzAgCCQELU3RyaW5nRW50cnkCBQJoQQUCaGwFA25pbAJkVgEEc2V0SQICaEECaGwDCQECIT0CCQClCAEIBQJkVgZjYWxsZXIJAQJhRwIFBHRoaXMJAQJhaAAFAmdlCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQJoQQUCaGwFA25pbAJkVgEcZ2V0UG9vbENvbmZpZ1dyYXBwZXJSRUFET05MWQAJAJQKAgUDbmlsCQECYVMAAmRWARxnZXRBY2NCYWxhbmNlV3JhcHBlclJFQURPTkxZAQJiRwkAlAoCBQNuaWwJAQJiRgEFAmJHAmRWARljYWxjUHJpY2VzV3JhcHBlclJFQURPTkxZAwJiWQJiWgJjZAQCaEIJAQJjYwMFAmJZBQJiWgUCY2QJAJQKAgUDbmlsCQDMCAIJAKYDAQkAkQMCBQJoQgAACQDMCAIJAKYDAQkAkQMCBQJoQgABCQDMCAIJAKYDAQkAkQMCBQJoQgACBQNuaWwCZFYBFmZyb21YMThXcmFwcGVyUkVBRE9OTFkCAUwCaEMJAJQKAgUDbmlsCQEBSwIJAKcDAQUBTAUCaEMCZFYBFHRvWDE4V3JhcHBlclJFQURPTkxZAgFJAUoJAJQKAgUDbmlsCQCmAwEJAQFIAgUBSQUBSgJkVgEeY2FsY1ByaWNlQmlnSW50V3JhcHBlclJFQURPTkxZAgJiSQJiSgkAlAoCBQNuaWwJAKYDAQkBAmJIAgkApwMBBQJiSQkApwMBBQJiSgJkVgEjZXN0aW1hdGVQdXRPcGVyYXRpb25XcmFwcGVyUkVBRE9OTFkJAmNyAmJOAmNRAmNSAmNTAmNUAmhEAmNVAmNWCQCUCgIFA25pbAkBAmNQDQUCY3IFAmJOBQJjUQUCY1IFAmNTBQJjVAUCaEQFAmNVBQJjVgYHAAACAAJkVgEjZXN0aW1hdGVHZXRPcGVyYXRpb25XcmFwcGVyUkVBRE9OTFkEAmNyAmhFAmN0AmhEBAJkawkBAmNxBAUCY3IFAmhFBQJjdAkBEUBleHRyTmF0aXZlKDEwNjIpAQUCaEQJAJQKAgUDbmlsCQCcCgoIBQJkawJfMQgFAmRrAl8yCAUCZGsCXzMIBQJkawJfNAgFAmRrAl81CAUCZGsCXzYIBQJkawJfNwkApgMBCAUCZGsCXzgIBQJkawJfOQgFAmRrA18xMAJkVgEOZ2V0RmVlUkVBRE9OTFkACQCUCgIFA25pbAUCYWoBAmhGAQJoRwAEAmhIBAJhRQkBAmdjAAMJAAECBQJhRQIKQnl0ZVZlY3RvcgQCZ2cFAmFFBQJnZwMJAAECBQJhRQIEVW5pdAgFAmhGD3NlbmRlclB1YmxpY0tleQkAAgECC01hdGNoIGVycm9yBAJhRQUCaEYDCQABAgUCYUUCBU9yZGVyBAJlUQUCYUUEAmhJCQECYVEABAJoSgkBAmVQAQUCZVEEAmhLCQD0AwMIBQJlUQlib2R5Qnl0ZXMJAJEDAggFAmVRBnByb29mcwAACAUCZVEPc2VuZGVyUHVibGljS2V5BAJoTAkA9AMDCAUCZVEJYm9keUJ5dGVzCQCRAwIIBQJlUQZwcm9vZnMAAQUCaEkDAwMFAmhKBQJoSwcFAmhMBwYJAQJhegMFAmhKBQJoSwUCaEwDCQABAgUCYUUCFFNldFNjcmlwdFRyYW5zYWN0aW9uBAJkSQUCYUUEAmhNCQD2AwEJAQV2YWx1ZQEIBQJkSQZzY3JpcHQEAmhOCQDbBAEJAQV2YWx1ZQEJAJ0IAgUCYU4JAQJheAAEAmhPCQDxBwEFBHRoaXMDAwkAAAIFAmhOBQJoTQkBAiE9AgUCaE8FAmhNBwYJAPQDAwgFAmhGCWJvZHlCeXRlcwkAkQMCCAUCaEYGcHJvb2ZzAAAFAmhICQD0AwMIBQJoRglib2R5Qnl0ZXMJAJEDAggFAmhGBnByb29mcwAABQJoSDmji/g=", "chainId": 84, "height": 2348646, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: GeeLpr2MVCgfxu71jKgqYUCk7CLhEygxGkDFUWwkTQkt Next: 5vXnkvMaWPXDQB5t78hMUEzhCRRWhbLJ8S9jBu1wz7or Diff:
OldNewDifferences
1515
1616 let g = toBigInt(2)
1717
18-let h = toBigInt((a - ((a * 1) / a)))
18+let h = toBigInt(3)
1919
20-let i = "WAVES"
20+let i = toBigInt(4)
2121
22-let j = "100"
22+let j = toBigInt((a - ((a * 1) / a)))
2323
24-let k = "1"
24+let k = "WAVES"
2525
26-let l = "__"
26+let l = "100"
2727
28-let m = ""
28+let m = "1"
2929
30-let n = 1
30+let n = "__"
3131
32-let o = 2
32+let o = ""
3333
34-let p = 3
34+let p = 1
3535
36-let q = 4
36+let q = 2
3737
38-let r = 1
38+let r = 3
3939
40-let s = 2
40+let s = 4
4141
42-let t = 3
42+let t = 1
4343
44-let u = 4
44+let u = 2
4545
46-let v = 5
46+let v = 3
4747
48-let w = 6
48+let w = 4
4949
50-let x = 7
50+let x = 5
5151
52-let y = 8
52+let y = 6
5353
54-let z = 9
54+let z = 7
5555
56-let A = 1
56+let A = 8
5757
58-let B = 6
58+let B = 9
5959
60-let C = 7
60+let C = 1
6161
62-let D = 10
62+let D = 6
6363
64-let E = fraction(10, a, 10000)
64+let E = 7
6565
66-func F (G,H) = fraction(toBigInt(G), c, toBigInt(H))
66+let F = 10
67+
68+let G = fraction(10, a, 10000)
69+
70+func H (I,J) = fraction(toBigInt(I), c, toBigInt(J))
6771
6872
69-func I (J,K) = toInt(fraction(J, toBigInt(K), c))
73+func K (L,M) = toInt(fraction(L, toBigInt(M), c))
7074
7175
72-func L (M,N,O) = fraction(M, N, O)
76+func N (O,P,Q) = fraction(O, P, Q)
7377
7478
75-func P (J) = if ((d > J))
76- then -(J)
77- else J
79+func R (L) = if ((d > L))
80+ then -(L)
81+ else L
7882
7983
80-func Q (J) = if ((d > J))
81- then -(J)
82- else J
84+func S (L) = if ((d > L))
85+ then -(L)
86+ else L
8387
8488
85-func R () = "%s__factoryContract"
89+func T () = "%s__factoryContract"
8690
8791
88-func S () = "%s__managerPublicKey"
92+func U () = "%s__managerPublicKey"
8993
9094
91-func T () = "%s__pendingManagerPublicKey"
95+func V () = "%s__pendingManagerPublicKey"
9296
9397
94-func U () = "%s%s__price__last"
98+func W () = "%s%s__price__last"
9599
96100
97-func V (W,X) = makeString(["%s%s%d%d__price__history", toString(W), toString(X)], l)
101+func X (Y,Z) = makeString(["%s%s%d%d__price__history", toString(Y), toString(Z)], n)
98102
99103
100-func Y (Z,aa) = ((("%s%s%s__P__" + Z) + "__") + aa)
104+func aa (ab,ac) = ((("%s%s%s__P__" + ab) + "__") + ac)
101105
102106
103-func ab (Z,aa) = ((("%s%s%s__G__" + Z) + "__") + aa)
107+func ad (ab,ac) = ((("%s%s%s__G__" + ab) + "__") + ac)
104108
105109
106-func ac () = "%s__amountAsset"
110+func ae () = "%s__amountAsset"
107111
108112
109-func ad () = "%s__priceAsset"
113+func af () = "%s__priceAsset"
110114
111115
112-func ae () = "%s__amp"
116+func ag () = "%s__amp"
113117
114118
115-func af () = "%s__addonAddr"
119+func ah () = "%s__addonAddr"
116120
117121
118-let ag = "%s__fee"
122+let ai = "%s__fee"
119123
120-let ah = valueOrElse(getInteger(this, ag), E)
124+let aj = valueOrElse(getInteger(this, ai), G)
121125
122-let ai = makeString(["%s", "dLp"], l)
126+let ak = makeString(["%s", "dLp"], n)
123127
124-let aj = makeString(["%s", "dLpRefreshedHeight"], l)
128+let al = makeString(["%s", "dLpRefreshedHeight"], n)
125129
126-let ak = makeString(["%s", "refreshDLpDelay"], l)
130+let am = makeString(["%s", "refreshDLpDelay"], n)
127131
128-let al = 30
132+let an = 30
129133
130-let am = valueOrElse(getInteger(this, ak), al)
134+let ao = valueOrElse(getInteger(this, am), an)
131135
132-func an () = "%s__factoryConfig"
136+func ap () = "%s__factoryConfig"
133137
134138
135-func ao () = "%s%s__matcher__publicKey"
139+func aq () = "%s%s__matcher__publicKey"
136140
137141
138-func ap (aq,ar) = (((("%d%d%s__" + aq) + "__") + ar) + "__config")
142+func ar (as,at) = (((("%d%d%s__" + as) + "__") + at) + "__config")
139143
140144
141-func as (at) = ("%s%s%s__mappings__baseAsset2internalId__" + at)
145+func au (av) = ("%s%s%s__mappings__baseAsset2internalId__" + av)
142146
143147
144-func au () = "%s__shutdown"
148+func aw () = "%s__shutdown"
145149
146150
147-func av () = "%s__allowedLpStableScriptHash"
151+func ax () = "%s__allowedLpStableScriptHash"
148152
149153
150-func aw () = "%s__feeCollectorAddress"
154+func ay () = "%s__feeCollectorAddress"
151155
152156
153-func ax (ay,az,aA) = throw(((((("Failed: ordValid=" + toString(ay)) + " sndrValid=") + toString(az)) + " mtchrValid=") + toString(aA)))
157+func az (aA,aB,aC) = throw(((((("Failed: ordValid=" + toString(aA)) + " sndrValid=") + toString(aB)) + " mtchrValid=") + toString(aC)))
154158
155159
156-func aB (J) = {
157- let aC = J
158- if ($isInstanceOf(aC, "String"))
160+func aD (L) = {
161+ let aE = L
162+ if ($isInstanceOf(aE, "String"))
159163 then {
160- let aD = aC
161- aD
164+ let aF = aE
165+ aF
162166 }
163167 else throw("fail cast to String")
164168 }
165169
166170
167-func aE (aF,aG) = valueOrErrorMessage(getString(aF, aG), makeString(["mandatory ", toString(aF), ".", aG, " not defined"], ""))
171+func aG (aH,aI) = valueOrErrorMessage(getString(aH, aI), makeString(["mandatory ", toString(aH), ".", aI, " not defined"], ""))
168172
169173
170-func aH (aF,aG) = valueOrErrorMessage(getInteger(aF, aG), makeString(["mandatory ", toString(aF), ".", aG, " not defined"], ""))
174+func aJ (aH,aI) = valueOrErrorMessage(getInteger(aH, aI), makeString(["mandatory ", toString(aH), ".", aI, " not defined"], ""))
171175
172176
173-func aI (aJ) = throw(makeString(["lp_stable.ride:", aJ], " "))
177+func aK (aL) = throw(makeString(["lp_stable.ride:", aL], " "))
174178
175179
176-func aK (aJ) = makeString(["lp_stable.ride:", aJ], " ")
180+func aM (aL) = makeString(["lp_stable.ride:", aL], " ")
177181
178182
179-let aL = addressFromStringValue(aE(this, R()))
183+let aN = addressFromStringValue(aG(this, T()))
180184
181-let aM = aE(this, ae())
185+let aO = aG(this, ag())
182186
183-func aN () = valueOrElse(getBoolean(aL, au()), false)
187+func aP () = valueOrElse(getBoolean(aN, aw()), false)
184188
185189
186-func aO () = fromBase58String(aE(aL, ao()))
190+func aQ () = fromBase58String(aG(aN, aq()))
187191
188192
189-let aP = addressFromStringValue(aE(aL, aw()))
193+let aR = addressFromStringValue(aG(aN, ay()))
190194
191-func aQ () = {
192- let aR = aE(this, ac())
193- let aS = aE(this, ad())
194- let aT = aH(aL, as(aS))
195- let aq = aH(aL, as(aR))
196- split(aE(aL, ap(toString(aq), toString(aT))), l)
195+func aS () = {
196+ let aT = aG(this, ae())
197+ let aU = aG(this, af())
198+ let aV = aJ(aN, au(aU))
199+ let as = aJ(aN, au(aT))
200+ split(aG(aN, ar(toString(as), toString(aV))), n)
197201 }
198202
199203
200-func aU (aV) = if ((aV == i))
204+func aW (aX) = if ((aX == k))
201205 then unit
202- else fromBase58String(aV)
206+ else fromBase58String(aX)
203207
204208
205-func aW (aV) = if ((aV == unit))
206- then i
207- else toBase58String(value(aV))
209+func aY (aX) = if ((aX == unit))
210+ then k
211+ else toBase58String(value(aX))
208212
209213
210-func aX (aY) = $Tuple7(addressFromStringValue(aY[r]), parseIntValue(aY[s]), fromBase58String(aY[t]), aU(aY[u]), aU(aY[v]), parseIntValue(aY[w]), parseIntValue(aY[x]))
214+func aZ (ba) = $Tuple7(addressFromStringValue(ba[t]), parseIntValue(ba[u]), fromBase58String(ba[v]), aW(ba[w]), aW(ba[x]), parseIntValue(ba[y]), parseIntValue(ba[z]))
211215
212216
213-let aZ = aX(aQ())
217+let bb = aZ(aS())
214218
215-let ba = aZ
219+let bc = bb
216220
217-let bb = ba._1
221+let bd = bc._1
218222
219-let bc = ba._2
223+let be = bc._2
220224
221-let bd = ba._3
225+let bf = bc._3
222226
223-let be = ba._4
227+let bg = bc._4
224228
225-let bf = ba._5
229+let bh = bc._5
226230
227-let bg = ba._6
231+let bi = bc._6
228232
229-let bh = ba._7
233+let bj = bc._7
230234
231-func bi () = split(aE(aL, an()), l)
235+func bk () = split(aG(aN, ap()), n)
232236
233237
234-let bj = bi()
238+let bl = bk()
235239
236-let bk = valueOrErrorMessage(addressFromString(bj[A]), "Invalid staking contract address")
240+let bm = valueOrErrorMessage(addressFromString(bl[C]), "Invalid staking contract address")
237241
238-let bl = valueOrErrorMessage(addressFromString(bj[C]), "Invalid slipage contract address")
242+let bn = valueOrErrorMessage(addressFromString(bl[E]), "Invalid slipage contract address")
239243
240-let bm = valueOrErrorMessage(addressFromString(bj[D]), "Invalid gwx contract address")
244+let bo = valueOrErrorMessage(addressFromString(bl[F]), "Invalid gwx contract address")
241245
242-let bn = valueOrErrorMessage(addressFromString(bj[B]), "Invalid gwx contract address")
246+let bp = valueOrErrorMessage(addressFromString(bl[D]), "Invalid gwx contract address")
243247
244-func bo (bp,bq,br,bs,bt,bu,bv,bw,bx,by) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bp), toString(bq), toString(br), toString(bs), toString(bt), toString(bu), toString(bv), toString(bw), toString(bx), toString(by)], l)
248+func bq (br,bs,bt,bu,bv,bw,bx,by,bz,bA) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(br), toString(bs), toString(bt), toString(bu), toString(bv), toString(bw), toString(bx), toString(by), toString(bz), toString(bA)], n)
245249
246250
247-func bz (bA,bB,bC,bs,bv,bw) = makeString(["%d%d%d%d%d%d", toString(bA), toString(bB), toString(bC), toString(bs), toString(bv), toString(bw)], l)
251+func bB (bC,bD,bE,bu,bx,by) = makeString(["%d%d%d%d%d%d", toString(bC), toString(bD), toString(bE), toString(bu), toString(bx), toString(by)], n)
248252
249253
250-func bD (bE) = if ((bE == "WAVES"))
254+func bF (bG) = if ((bG == "WAVES"))
251255 then wavesBalance(this).available
252- else assetBalance(this, fromBase58String(bE))
256+ else assetBalance(this, fromBase58String(bG))
253257
254258
255-func bF (bG,bH) = fraction(bG, c, bH)
259+func bH (bI,bJ) = fraction(bI, c, bJ)
256260
257261
258-func bI (bJ,bK,bL) = {
259- let bM = fraction((bJ - bK), b, bK)
260- let bN = ((bL - P(bM)) > d)
261- if (!(bN))
262- then throw(("Big slpg: " + toString(bM)))
263- else $Tuple2(bN, min([bJ, bK]))
262+func bK (bL,bM,bN) = {
263+ let bO = fraction((bL - bM), b, bM)
264+ let bP = ((bN - R(bO)) > d)
265+ if (!(bP))
266+ then throw(("Big slpg: " + toString(bO)))
267+ else $Tuple2(bP, min([bL, bM]))
264268 }
265269
266270
267-func bO (bP,bQ,bR) = {
268- let bM = fraction(bQ, b, bP)
269- let bS = (bR > bM)
270- if (if (bS)
271+func bQ (bR,bS,bT) = {
272+ let bO = fraction(bS, b, bR)
273+ let bU = (bT > bO)
274+ if (if (bU)
271275 then true
272- else (bQ > bP))
273- then throw(((((((toString(bQ) + " ") + toString(bP)) + " ") + toString(bM)) + " ") + toString(bR)))
274- else bS
276+ else (bS > bR))
277+ then throw(((((((toString(bS) + " ") + toString(bR)) + " ") + toString(bO)) + " ") + toString(bT)))
278+ else bU
275279 }
276280
277281
278-func bT (bU,bV,bW,bX) = {
279- let bY = F(bW, bU)
280- let bZ = F(bX, bV)
281- bF(bZ, bY)
282+func bV (bW,bX,bY,bZ) = {
283+ let ca = H(bY, bW)
284+ let cb = H(bZ, bX)
285+ bH(cb, ca)
282286 }
283287
284288
285-func ca (bW,bX,cb) = {
286- let cc = aQ()
287- let cd = parseIntValue(cc[w])
288- let ce = parseIntValue(cc[x])
289- let cf = bT(cd, ce, bW, bX)
290- let bH = F(bW, cd)
291- let bG = F(bX, ce)
292- let cg = F(cb, a)
293- let ch = bF(bH, cg)
294- let ci = bF(bG, cg)
295-[cf, ch, ci]
289+func cc (bY,bZ,cd) = {
290+ let ce = aS()
291+ let cf = parseIntValue(ce[y])
292+ let cg = parseIntValue(ce[z])
293+ let ch = bV(cf, cg, bY, bZ)
294+ let bJ = H(bY, cf)
295+ let bI = H(bZ, cg)
296+ let ci = H(cd, a)
297+ let cj = bH(bJ, ci)
298+ let ck = bH(bI, ci)
299+[ch, cj, ck]
296300 }
297301
298302
299-func cj (bW,bX,cb) = {
300- let ck = ca(bW, bX, cb)
301-[I(ck[0], a), I(ck[1], a), I(ck[2], a)]
303+func cl (bY,bZ,cd) = {
304+ let cm = cc(bY, bZ, cd)
305+[K(cm[0], a), K(cm[1], a), K(cm[2], a)]
302306 }
303307
304308
305-func cl (cm) = {
306- let cn = fraction(cm, ah, a)
307- $Tuple2((cm - cn), cn)
309+func cn (co) = {
310+ let cp = fraction(co, aj, a)
311+ $Tuple2((co - cp), cp)
308312 }
309313
310314
311-func co (cp,cq,cr,cs) = {
312- let cc = aQ()
313- let ct = cc[t]
314- let cu = cc[u]
315- let cv = cc[v]
316- let cw = parseIntValue(cc[w])
317- let cx = parseIntValue(cc[x])
318- let cy = cc[s]
319- let cz = valueOrErrorMessage(assetInfo(fromBase58String(ct)), "Wrong LP id").quantity
320- if ((ct != cq))
315+func cq (cr,cs,ct,cu) = {
316+ let ce = aS()
317+ let cv = ce[v]
318+ let cw = ce[w]
319+ let cx = ce[x]
320+ let cy = parseIntValue(ce[y])
321+ let cz = parseIntValue(ce[z])
322+ let cA = ce[u]
323+ let cB = valueOrErrorMessage(assetInfo(fromBase58String(cv)), "Wrong LP id").quantity
324+ if ((cv != cs))
321325 then throw("Wrong pmt asset")
322326 else {
323- let cA = bD(cu)
324- let cB = F(cA, cw)
325- let cC = bD(cv)
326- let cD = F(cC, cx)
327- let cE = bF(cD, cB)
328- let cF = I(cE, a)
329- let cG = F(cr, a)
330- let cH = F(cz, a)
331- let cI = fraction(cB, cG, cH)
332- let cJ = fraction(cD, cG, cH)
333- let cK = I(cI, cw)
334- let cL = I(cJ, cx)
335- let cM = if ((cp == ""))
327+ let cC = bF(cw)
328+ let cD = H(cC, cy)
329+ let cE = bF(cx)
330+ let cF = H(cE, cz)
331+ let cG = bH(cF, cD)
332+ let cH = K(cG, a)
333+ let cI = H(ct, a)
334+ let cJ = H(cB, a)
335+ let cK = fraction(cD, cI, cJ)
336+ let cL = fraction(cF, cI, cJ)
337+ let cM = K(cK, cy)
338+ let cN = K(cL, cz)
339+ let cO = if ((cr == ""))
336340 then nil
337- else [ScriptTransfer(cs, cK, if ((cu == "WAVES"))
341+ else [ScriptTransfer(cu, cM, if ((cw == "WAVES"))
338342 then unit
339- else fromBase58String(cu)), ScriptTransfer(cs, cL, if ((cv == "WAVES"))
343+ else fromBase58String(cw)), ScriptTransfer(cu, cN, if ((cx == "WAVES"))
340344 then unit
341- else fromBase58String(cv)), StringEntry(ab(toString(cs), cp), bz(cK, cL, cr, cF, height, lastBlock.timestamp)), IntegerEntry(U(), cF), IntegerEntry(V(height, lastBlock.timestamp), cF)]
342- $Tuple10(cK, cL, cu, cv, cA, cC, cz, cE, cy, cM)
345+ else fromBase58String(cx)), StringEntry(ad(toString(cu), cr), bB(cM, cN, ct, cH, height, lastBlock.timestamp)), IntegerEntry(W(), cH), IntegerEntry(X(height, lastBlock.timestamp), cH)]
346+ $Tuple10(cM, cN, cw, cx, cC, cE, cB, cG, cA, cO)
343347 }
344348 }
345349
346350
347-func cN (cp,bL,cO,cP,cQ,cR,cs,cS,cT,cU,cV,cW,cX) = {
348- let cc = aQ()
349- let ct = fromBase58String(cc[t])
350- let cY = cc[u]
351- let cZ = cc[v]
352- let da = cc[y]
353- let db = cc[z]
354- let dc = parseIntValue(cc[w])
355- let dd = parseIntValue(cc[x])
356- let cy = cc[s]
357- let de = valueOrErrorMessage(assetInfo(ct), "Wr lp as").quantity
358- let cA = if (cS)
359- then bD(cY)
360- else if (if (cU)
361- then (cX == cY)
351+func cP (cr,bN,cQ,cR,cS,cT,cu,cU,cV,cW,cX,cY,cZ) = {
352+ let ce = aS()
353+ let cv = fromBase58String(ce[v])
354+ let da = ce[w]
355+ let db = ce[x]
356+ let dc = ce[A]
357+ let dd = ce[B]
358+ let de = parseIntValue(ce[y])
359+ let df = parseIntValue(ce[z])
360+ let cA = ce[u]
361+ let dg = valueOrErrorMessage(assetInfo(cv), "Wr lp as").quantity
362+ let cC = if (cU)
363+ then bF(da)
364+ else if (if (cW)
365+ then (cZ == da)
362366 else false)
363- then (bD(cY) - cW)
364- else if (cU)
365- then bD(cY)
366- else (bD(cY) - cO)
367- let cC = if (cS)
368- then bD(cZ)
369- else if (if (cU)
370- then (cX == cZ)
367+ then (bF(da) - cY)
368+ else if (cW)
369+ then bF(da)
370+ else (bF(da) - cQ)
371+ let cE = if (cU)
372+ then bF(db)
373+ else if (if (cW)
374+ then (cZ == db)
371375 else false)
372- then (bD(cZ) - cW)
373- else if (cU)
374- then bD(cZ)
375- else (bD(cZ) - cQ)
376- let df = F(cO, dc)
377- let dg = F(cQ, dd)
378- let dh = bF(dg, df)
379- let cB = F(cA, dc)
380- let cD = F(cC, dd)
381- let di = if ((de == 0))
376+ then (bF(db) - cY)
377+ else if (cW)
378+ then bF(db)
379+ else (bF(db) - cS)
380+ let dh = H(cQ, de)
381+ let di = H(cS, df)
382+ let dj = bH(di, dh)
383+ let cD = H(cC, de)
384+ let cF = H(cE, df)
385+ let dk = if ((dg == 0))
382386 then {
383- let cE = d
384- let dj = d
385- let cg = pow((df * dg), 0, toBigInt(5), 1, 0, DOWN)
386- $Tuple5(I(cg, a), I(df, dc), I(dg, dd), bF((cD + dg), (cB + df)), dj)
387+ let cG = d
388+ let dl = d
389+ let ci = pow((dh * di), 0, toBigInt(5), 1, 0, DOWN)
390+ $Tuple5(K(ci, a), K(dh, de), K(di, df), bH((cF + di), (cD + dh)), dl)
387391 }
388392 else {
389- let cE = bF(cD, cB)
390- let dk = fraction(P((cE - dh)), c, cE)
391- let dj = F(bL, a)
392- if (if (if (cV)
393- then (cE != d)
393+ let cG = bH(cF, cD)
394+ let dm = fraction(R((cG - dj)), c, cG)
395+ let dl = H(bN, a)
396+ if (if (if (cX)
397+ then (cG != d)
394398 else false)
395- then (dk > dj)
399+ then (dm > dl)
396400 else false)
397- then throw(((("Price slippage " + toString(dk)) + " > ") + toString(dj)))
401+ then throw(((("Price slippage " + toString(dm)) + " > ") + toString(dl)))
398402 else {
399- let dl = F(de, a)
400- let dm = fraction(df, cE, c)
401- let dn = fraction(dg, c, cE)
402- let do = if ((dm > dg))
403- then $Tuple2(dn, dg)
404- else $Tuple2(df, dm)
405- let dp = do._1
406- let dq = do._2
407- let cg = fraction(dl, dq, cD)
408- $Tuple5(I(cg, a), I(dp, dc), I(dq, dd), cE, dj)
403+ let dn = H(dg, a)
404+ let do = fraction(dh, cG, c)
405+ let dp = fraction(di, c, cG)
406+ let dq = if ((do > di))
407+ then $Tuple2(dp, di)
408+ else $Tuple2(dh, do)
409+ let dr = dq._1
410+ let ds = dq._2
411+ let ci = fraction(dn, ds, cF)
412+ $Tuple5(K(ci, a), K(dr, de), K(ds, df), cG, dl)
409413 }
410414 }
411- let dr = di._1
412- let ds = di._2
413- let dt = di._3
414- let cF = I(di._4, a)
415- let du = I(di._5, a)
416- if ((0 >= dr))
415+ let dt = dk._1
416+ let du = dk._2
417+ let dv = dk._3
418+ let cH = K(dk._4, a)
419+ let dw = K(dk._5, a)
420+ if ((0 >= dt))
417421 then throw("LP <= 0")
418422 else {
419- let dv = if (!(cT))
423+ let dx = if (!(cV))
420424 then 0
421- else dr
422- let dw = (cO - ds)
423- let dx = (cQ - dt)
424- let dy = if (if (cU)
425- then (cX == cY)
425+ else dt
426+ let dy = (cQ - du)
427+ let dz = (cS - dv)
428+ let dA = if (if (cW)
429+ then (cZ == da)
426430 else false)
427- then $Tuple2(cW, 0)
428- else if (if (cU)
429- then (cX == cZ)
431+ then $Tuple2(cY, 0)
432+ else if (if (cW)
433+ then (cZ == db)
430434 else false)
431- then $Tuple2(0, cW)
432- else $Tuple2(ds, dt)
433- let dz = dy._1
434- let dA = dy._2
435- let dB = [IntegerEntry(U(), cF), IntegerEntry(V(height, lastBlock.timestamp), cF), StringEntry(Y(cs, cp), bo(dz, dA, dv, cF, bL, du, height, lastBlock.timestamp, dw, dx))]
436- $Tuple13(dr, dv, cF, cA, cC, de, ct, cy, dB, dw, dx, cP, cR)
435+ then $Tuple2(0, cY)
436+ else $Tuple2(du, dv)
437+ let dB = dA._1
438+ let dC = dA._2
439+ let dD = [IntegerEntry(W(), cH), IntegerEntry(X(height, lastBlock.timestamp), cH), StringEntry(aa(cu, cr), bq(dB, dC, dx, cH, bN, dw, height, lastBlock.timestamp, dy, dz))]
440+ $Tuple13(dt, dx, cH, cC, cE, dg, cv, cA, dD, dy, dz, cR, cT)
437441 }
438442 }
439443
440444
441-func dC (dD,dE,dF) = {
442- let dG = fraction((dD * dE), c, dF)
443- dG
445+func dE (dF) = {
446+ let dG = dF[0]
447+ let dH = dF[1]
448+ let dI = (dG + dH)
449+ if ((dI == e))
450+ then e
451+ else {
452+ let dJ = parseIntValue(aO)
453+ let dK = (dJ * 2)
454+ let cm = fraction(dG, dH, f)
455+ let dL = fraction(cm, i, f)
456+ let dM = fraction(toBigInt(dK), dI, f)
457+ let dN = toBigInt((dK - 1))
458+ func dO (dP) = {
459+ let dQ = fraction(dP, dP, f)
460+ let dR = fraction(dQ, dP, f)
461+ let dS = fraction(dR, f, dL)
462+ fraction((dM + fraction(dS, g, f)), dP, (fraction(dN, dP, f) + fraction(h, dS, f)))
463+ }
464+
465+ func dT (dU,dV) = if (dU._2)
466+ then dU
467+ else {
468+ let dP = dU._1
469+ let dW = dO(dP)
470+ let dX = toInt((dW - value(dP)))
471+ let dY = if ((0 > dX))
472+ then -(dX)
473+ else dX
474+ if ((1 >= dY))
475+ then $Tuple2(dW, true)
476+ else $Tuple2(dW, false)
477+ }
478+
479+ let dZ = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
480+ let ea = {
481+ let eb = dZ
482+ let ec = size(eb)
483+ let ed = $Tuple2(dI, false)
484+ func ee (ef,eg) = if ((eg >= ec))
485+ then ef
486+ else dT(ef, eb[eg])
487+
488+ func eh (ef,eg) = if ((eg >= ec))
489+ then ef
490+ else throw("List size exceeds 15")
491+
492+ eh(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ed, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
493+ }
494+ let dP = ea._1
495+ let ei = ea._2
496+ if (ei)
497+ then dP
498+ else throw(("D calculation error, D = " + toString(dP)))
499+ }
444500 }
445501
446502
447-func dH (dI,dJ,dK) = {
448- let dL = (toBigInt(bD(aW(be))) - dI)
449- let dM = (toBigInt(bD(aW(bf))) - dJ)
450- let dN = (toBigInt(value(assetInfo(bd)).quantity) - dK)
451- let dO = dC(dL, dM, dN)
452- dO
503+func ej (dF,dV,ek) = {
504+ let el = g
505+ let em = dF[if ((dV == 0))
506+ then 1
507+ else 0]
508+ let en = parseBigIntValue(l)
509+ let dJ = (parseBigIntValue(aO) * en)
510+ let dI = em
511+ let dK = (dJ * el)
512+ let eo = (((((ek * ek) / (em * el)) * ek) * en) / (dK * el))
513+ let ep = ((dI + ((ek * en) / dK)) - ek)
514+ func dT (dU,eq) = {
515+ let er = dU
516+ let es = er._1
517+ let ei = er._2
518+ if ((ei != unit))
519+ then dU
520+ else {
521+ let et = (((es * es) + eo) / ((g * es) + ep))
522+ let eu = S((et - value(es)))
523+ if ((f >= eu))
524+ then $Tuple2(et, eq)
525+ else $Tuple2(et, unit)
526+ }
527+ }
528+
529+ let dZ = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
530+ let ev = {
531+ let eb = dZ
532+ let ec = size(eb)
533+ let ed = $Tuple2(ek, unit)
534+ func ee (ef,eg) = if ((eg >= ec))
535+ then ef
536+ else dT(ef, eb[eg])
537+
538+ func eh (ef,eg) = if ((eg >= ec))
539+ then ef
540+ else throw("List size exceeds 15")
541+
542+ eh(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ed, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
543+ }
544+ let es = ev._1
545+ let ei = ev._2
546+ if ((ei != unit))
547+ then es
548+ else throw(("Y calculation error, Y = " + toString(es)))
453549 }
454550
455551
456-func dP (dQ,dR,dK) = {
457- let dL = (bD(aW(be)) + dQ)
458- let dM = (bD(aW(bf)) + dR)
459- let dN = (value(assetInfo(bd)).quantity + dK)
460- let dG = dC(toBigInt(dL), toBigInt(dM), toBigInt(dN))
461- let dS = [IntegerEntry(aj, height), StringEntry(ai, toString(dG))]
462- $Tuple2(dS, dG)
552+func ew (ex,ey,ez) = {
553+ let eA = fraction(dE([ex, ey]), c, ez)
554+ eA
463555 }
464556
465557
466-func dT (dU,dG) = if ((dG >= dU))
467- then true
468- else aI("updated KLp lower than current KLp")
558+func eB (eC,eD,eE) = {
559+ let eF = (toBigInt(bF(aY(bg))) - eC)
560+ let eG = (toBigInt(bF(aY(bh))) - eD)
561+ let eH = (toBigInt(value(assetInfo(bf)).quantity) - eE)
562+ let eI = ew(eF, eG, eH)
563+ eI
564+ }
469565
470566
471-func dV (dW) = {
472- let dX = dW.amount
473- let dY = fraction(dW.amount, dW.price, a)
474- let dZ = if ((dW.orderType == Buy))
475- then $Tuple2(dX, -(dY))
476- else $Tuple2(-(dX), dY)
477- let dQ = dZ._1
478- let dR = dZ._2
479- if (if (if (aN())
567+func eJ (eK,eL,eE) = {
568+ let eF = (bF(aY(bg)) + eK)
569+ let eG = (bF(aY(bh)) + eL)
570+ let eH = (value(assetInfo(bf)).quantity + eE)
571+ let eA = ew(toBigInt(eF), toBigInt(eG), toBigInt(eH))
572+ let eM = [IntegerEntry(al, height), StringEntry(ak, toString(eA))]
573+ $Tuple2(eM, eA)
574+ }
575+
576+
577+func eN (eO,eA) = if ((eA >= eO))
578+ then true
579+ else aK("updated KLp lower than current KLp")
580+
581+
582+func eP (eQ) = {
583+ let eR = eQ.amount
584+ let eS = fraction(eQ.amount, eQ.price, a, FLOOR)
585+ let eT = if ((eQ.orderType == Buy))
586+ then $Tuple2(eR, -(eS))
587+ else $Tuple2(-(eR), eS)
588+ let eK = eT._1
589+ let eL = eT._2
590+ if (if (if (aP())
480591 then true
481- else (bc == p))
592+ else (be == r))
482593 then true
483- else (bc == q))
594+ else (be == s))
484595 then throw("Admin blocked")
485- else if (if ((dW.assetPair.amountAsset != be))
596+ else if (if ((eQ.assetPair.amountAsset != bg))
486597 then true
487- else (dW.assetPair.priceAsset != bf))
598+ else (eQ.assetPair.priceAsset != bh))
488599 then throw("Wr assets")
489600 else {
490- let ea = valueOrErrorMessage(parseBigInt(valueOrErrorMessage(getString(this, ai), aK("dLp is required"))), aK("invalid dLp"))
491- let eb = dP(dQ, dR, 0)
492- let ec = eb._1
493- let ed = eb._2
494- let ee = (ed > ea)
495- ee
601+ let eU = parseBigIntValue(getStringValue(this, ak))
602+ let eV = eJ(eK, eL, 0)
603+ let eW = eV._1
604+ let eX = eV._2
605+ let eY = (eX > eU)
606+ eY
496607 }
497608 }
498609
499610
500-func ef (eg) = if ((size(eg.payments) != 1))
611+func eZ (dV) = if ((size(dV.payments) != 1))
501612 then throw("1 pmnt exp")
502613 else {
503- let eh = value(eg.payments[0])
504- let cq = value(eh.assetId)
505- let cW = eh.amount
506- let di = co(toBase58String(eg.transactionId), toBase58String(cq), cW, eg.caller)
507- let cK = di._1
508- let cL = di._2
509- let cy = parseIntValue(di._9)
510- let cM = di._10
511- if (if (aN())
614+ let fa = value(dV.payments[0])
615+ let cs = value(fa.assetId)
616+ let cY = fa.amount
617+ let dk = cq(toBase58String(dV.transactionId), toBase58String(cs), cY, dV.caller)
618+ let cM = dk._1
619+ let cN = dk._2
620+ let cA = parseIntValue(dk._9)
621+ let cO = dk._10
622+ if (if (aP())
512623 then true
513- else (cy == q))
514- then throw(("Admin blocked: " + toString(cy)))
515- else $Tuple5(cK, cL, cW, cq, cM)
624+ else (cA == s))
625+ then throw(("Admin blocked: " + toString(cA)))
626+ else $Tuple5(cM, cN, cY, cs, cO)
516627 }
517628
518629
519-func ei (ej,aa,ek,el,bL,cT,cU,cV,cW,cX) = {
520- let di = cN(aa, bL, value(ek).amount, value(ek).assetId, value(el).amount, value(el).assetId, ej, (aa == ""), cT, cU, cV, cW, cX)
521- let cy = parseIntValue(di._8)
522- if (if (if (aN())
630+func fb (fc,ac,fd,fe,bN,cV,cW,cX,cY,cZ) = {
631+ let dk = cP(ac, bN, value(fd).amount, value(fd).assetId, value(fe).amount, value(fe).assetId, fc, (ac == ""), cV, cW, cX, cY, cZ)
632+ let cA = parseIntValue(dk._8)
633+ if (if (if (aP())
523634 then true
524- else (cy == o))
635+ else (cA == q))
525636 then true
526- else (cy == q))
527- then throw(("Blocked:" + toString(cy)))
528- else di
637+ else (cA == s))
638+ then throw(("Blocked:" + toString(cA)))
639+ else dk
529640 }
530641
531642
532-func em (en) = {
533- let eo = g
534- let ep = en[0]
535- let eq = en[1]
536- let er = parseBigIntValue(j)
537- let es = (parseBigIntValue(aM) * er)
538- let et = (ep + eq)
539- if ((et == e))
540- then e
541- else {
542- let eu = (es * eo)
543- let ev = (((ep * eq) * eo) * eo)
544- let ew = ((eu * et) / er)
545- let ex = (eu - er)
546- let ey = (eo + f)
547- func ez (eA,eB) = {
548- let eC = eA
549- let eD = eC._1
550- let eE = eC._2
551- if ((eE != unit))
552- then eA
553- else {
554- let eF = (((eD * eD) * eD) / ev)
555- let eG = (((ew + (eF * eo)) * eD) / (((ex * eD) / er) + (ey * eF)))
556- let eH = Q((eG - value(eD)))
557- if ((f >= eH))
558- then $Tuple2(eG, eB)
559- else $Tuple2(eG, unit)
560- }
561- }
562-
563- let eI = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
564- let eJ = {
565- let eK = eI
566- let eL = size(eK)
567- let eM = $Tuple2(et, unit)
568- func eN (eO,eP) = if ((eP >= eL))
569- then eO
570- else ez(eO, eK[eP])
571-
572- func eQ (eO,eP) = if ((eP >= eL))
573- then eO
574- else throw("List size exceeds 15")
575-
576- eQ(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eM, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
577- }
578- let eD = eJ._1
579- let eE = eJ._2
580- if ((eE != unit))
581- then eD
582- else throw(("D calculation error, D = " + toString(eD)))
583- }
584- }
585-
586-
587-func eR (en,eg,eS) = {
588- let eo = g
589- let eT = en[if ((eg == 0))
590- then 1
591- else 0]
592- let er = parseBigIntValue(j)
593- let es = (parseBigIntValue(aM) * er)
594- let et = eT
595- let eu = (es * eo)
596- let eU = (((((eS * eS) / (eT * eo)) * eS) * er) / (eu * eo))
597- let eV = ((et + ((eS * er) / eu)) - eS)
598- func ez (eA,eB) = {
599- let eW = eA
600- let eX = eW._1
601- let eE = eW._2
602- if ((eE != unit))
603- then eA
604- else {
605- let eY = (((eX * eX) + eU) / ((g * eX) + eV))
606- let eZ = Q((eY - value(eX)))
607- if ((f >= eZ))
608- then $Tuple2(eY, eB)
609- else $Tuple2(eY, unit)
610- }
611- }
612-
613- let eI = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
614- let fa = {
615- let eK = eI
616- let eL = size(eK)
617- let eM = $Tuple2(eS, unit)
618- func eN (eO,eP) = if ((eP >= eL))
619- then eO
620- else ez(eO, eK[eP])
621-
622- func eQ (eO,eP) = if ((eP >= eL))
623- then eO
624- else throw("List size exceeds 15")
625-
626- eQ(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eM, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
627- }
628- let eX = fa._1
629- let eE = fa._2
630- if ((eE != unit))
631- then eX
632- else throw(("Y calculation error, Y = " + toString(eX)))
633- }
634-
635-
636-func fb (fc,cq,cs,aa,fd) = {
637- let aY = aQ()
638- let cu = aY[u]
639- let cv = aY[v]
640- let ct = aY[t]
641- let dc = parseIntValue(aY[w])
642- let dd = parseIntValue(aY[x])
643- let dN = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(ct)), "invalid lp asset").quantity)
644- let fe = if ((dN > e))
643+func ff (fg,cs,cu,ac,fh) = {
644+ let ba = aS()
645+ let cw = ba[w]
646+ let cx = ba[x]
647+ let cv = ba[v]
648+ let de = parseIntValue(ba[y])
649+ let df = parseIntValue(ba[z])
650+ let eH = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(cv)), "invalid lp asset").quantity)
651+ let fi = if ((eH > e))
645652 then true
646653 else throw("initial deposit requires all coins")
647- if ((fe == fe))
654+ if ((fi == fi))
648655 then {
649- let cA = bD(cu)
650- let cC = bD(cv)
651- let ff = if ((aa == ""))
652- then $Tuple2(cA, cC)
653- else if ((cq == cu))
654- then if ((fc > cA))
656+ let cC = bF(cw)
657+ let cE = bF(cx)
658+ let fj = if ((ac == ""))
659+ then $Tuple2(cC, cE)
660+ else if ((cs == cw))
661+ then if ((fg > cC))
655662 then throw("invalid payment amount")
656- else $Tuple2((cA - fc), cC)
657- else if ((cq == cv))
658- then if ((fc > cC))
663+ else $Tuple2((cC - fg), cE)
664+ else if ((cs == cx))
665+ then if ((fg > cE))
659666 then throw("invalid payment amount")
660- else $Tuple2(cA, (cC - fc))
667+ else $Tuple2(cC, (cE - fg))
661668 else throw("wrong pmtAssetId")
662- let fg = ff._1
663- let fh = ff._2
664- let fi = if ((cq == cu))
665- then $Tuple2(fc, 0)
666- else if ((cq == cv))
667- then $Tuple2(0, fc)
669+ let fk = fj._1
670+ let fl = fj._2
671+ let fm = if ((cs == cw))
672+ then $Tuple2(fg, 0)
673+ else if ((cs == cx))
674+ then $Tuple2(0, fg)
668675 else throw("invalid payment")
669- let fj = fi._1
670- let fk = fi._2
671- let fl = if (fd)
672- then $Tuple3(cl(fj)._1, cl(fk)._1, cl(fc)._2)
673- else $Tuple3(fj, fk, 0)
674- let fm = fl._1
675- let fn = fl._2
676- let cn = fl._3
677- let fo = (fg + fm)
678- let fp = (fh + fn)
679- let bQ = em([toBigInt(fg), toBigInt(fh)])
680- let bP = em([toBigInt(fo), toBigInt(fp)])
681- let fq = if ((bP > bQ))
676+ let fn = fm._1
677+ let fo = fm._2
678+ let fp = if (fh)
679+ then $Tuple3(cn(fn)._1, cn(fo)._1, cn(fg)._2)
680+ else $Tuple3(fn, fo, 0)
681+ let fq = fp._1
682+ let fr = fp._2
683+ let cp = fp._3
684+ let fs = (fk + fq)
685+ let ft = (fl + fr)
686+ let bS = dE([toBigInt(fk), toBigInt(fl)])
687+ let bR = dE([toBigInt(fs), toBigInt(ft)])
688+ let fu = if ((bR > bS))
682689 then true
683690 else throw()
684- if ((fq == fq))
691+ if ((fu == fu))
685692 then {
686- let fr = fraction(dN, (bP - bQ), bQ)
687- let cF = I(bF(F(fp, dd), F(fo, dc)), a)
688- let dB = [IntegerEntry(U(), cF), IntegerEntry(V(height, lastBlock.timestamp), cF), StringEntry(Y(cs, aa), bo(fj, fk, toInt(fr), cF, 0, 0, height, lastBlock.timestamp, 0, 0))]
689- let fs = fraction(fh, a, fg)
690- let ft = fraction(fc, a, (fs + a))
691- let fu = (fc - ft)
692- let fv = fraction(dN, toBigInt(fu), toBigInt(fh))
693- let fw = toInt(fraction((fr - fv), b, fv))
694- $Tuple4(toInt(fr), dB, cn, fw)
693+ let fv = fraction(eH, (bR - bS), bS)
694+ let cH = K(bH(H(ft, df), H(fs, de)), a)
695+ let dD = [IntegerEntry(W(), cH), IntegerEntry(X(height, lastBlock.timestamp), cH), StringEntry(aa(cu, ac), bq(fn, fo, toInt(fv), cH, 0, 0, height, lastBlock.timestamp, 0, 0))]
696+ let fw = fraction(fl, a, fk)
697+ let fx = fraction(fg, a, (fw + a))
698+ let fy = (fg - fx)
699+ let fz = fraction(eH, toBigInt(fy), toBigInt(fl))
700+ let fA = toInt(fraction((fv - fz), b, fz))
701+ $Tuple4(toInt(fv), dD, cp, fA)
695702 }
696703 else throw("Strict value is not equal to itself.")
697704 }
699706 }
700707
701708
702-func fx (fy,fz,fA,ej,fB,fC) = {
703- let aY = aQ()
704- let ct = aY[t]
705- let cu = aY[u]
706- let cv = aY[v]
707- let fD = parseIntValue(aY[w])
708- let fE = parseIntValue(aY[x])
709- let fF = aY[s]
710- let cs = if ((ej == bn))
711- then fB
712- else ej
713- let eh = value(fA[0])
714- let cq = value(eh.assetId)
715- let cW = eh.amount
716- let dO = dH(toBigInt(0), toBigInt(0), toBigInt(cW))
717- let cp = toBase58String(fC)
718- if ((ct != toBase58String(cq)))
709+func fB (fC,fD,fE,fc,fF,fG) = {
710+ let ba = aS()
711+ let cv = ba[v]
712+ let cw = ba[w]
713+ let cx = ba[x]
714+ let fH = parseIntValue(ba[y])
715+ let fI = parseIntValue(ba[z])
716+ let fJ = ba[u]
717+ let cu = if ((fc == bp))
718+ then fF
719+ else fc
720+ let fa = value(fE[0])
721+ let cs = value(fa.assetId)
722+ let cY = fa.amount
723+ let eI = eB(toBigInt(0), toBigInt(0), toBigInt(cY))
724+ let cr = toBase58String(fG)
725+ if ((cv != toBase58String(cs)))
719726 then throw("Wrong LP")
720727 else {
721- let cA = bD(cu)
722- let cC = bD(cv)
723- let fG = {
724- let fH = invoke(this, "getOneTknV2READONLY", [fy, cW], nil)
725- if ($isInstanceOf(fH, "(Int, Int)"))
726- then fH
727- else throw(($getType(fH) + " couldn't be cast to (Int, Int)"))
728+ let cC = bF(cw)
729+ let cE = bF(cx)
730+ let fK = {
731+ let fL = invoke(this, "getOneTknV2READONLY", [fC, cY], nil)
732+ if ($isInstanceOf(fL, "(Int, Int)"))
733+ then fL
734+ else throw(($getType(fL) + " couldn't be cast to (Int, Int)"))
728735 }
729- if ((fG == fG))
736+ if ((fK == fK))
730737 then {
731- let cn = fG._2
732- let fI = fG._1
733- let fJ = if (if ((fz > 0))
734- then (fz > fI)
738+ let cp = fK._2
739+ let fM = fK._1
740+ let fN = if (if ((fD > 0))
741+ then (fD > fM)
735742 else false)
736- then aI(makeString(["amount to receive is less than ", toString(fz)], ""))
737- else fI
738- let fK = if ((fy == cu))
739- then $Tuple4(fJ, 0, ((cA - fJ) - cn), cC)
740- else if ((fy == cv))
741- then $Tuple4(0, fJ, cA, ((cC - fJ) - cn))
743+ then aK(makeString(["amount to receive is less than ", toString(fD)], ""))
744+ else fM
745+ let fO = if ((fC == cw))
746+ then $Tuple4(fN, 0, ((cC - fN) - cp), cE)
747+ else if ((fC == cx))
748+ then $Tuple4(0, fN, cC, ((cE - fN) - cp))
742749 else throw("invalid out asset id")
743- let fL = fK._1
744- let fM = fK._2
745- let fo = fK._3
746- let fp = fK._4
747- let fN = bF(F(fp, fE), F(fo, fD))
748- let fO = I(fN, a)
749- let fP = if ((fy == "WAVES"))
750+ let fP = fO._1
751+ let fQ = fO._2
752+ let fs = fO._3
753+ let ft = fO._4
754+ let fR = bH(H(ft, fI), H(fs, fH))
755+ let fS = K(fR, a)
756+ let fT = if ((fC == "WAVES"))
750757 then unit
751- else fromBase58String(fy)
752- let fQ = if ((cn > 0))
753- then [ScriptTransfer(aP, cn, fP)]
758+ else fromBase58String(fC)
759+ let fU = if ((cp > 0))
760+ then [ScriptTransfer(aR, cp, fT)]
754761 else nil
755- let cM = ([ScriptTransfer(cs, fJ, fP), StringEntry(ab(toString(cs), cp), bz(fL, fM, cW, fO, height, lastBlock.timestamp)), IntegerEntry(U(), fO), IntegerEntry(V(height, lastBlock.timestamp), fO)] ++ fQ)
756- if ((cM == cM))
762+ let cO = ([ScriptTransfer(cu, fN, fT), StringEntry(ad(toString(cu), cr), bB(fP, fQ, cY, fS, height, lastBlock.timestamp)), IntegerEntry(W(), fS), IntegerEntry(X(height, lastBlock.timestamp), fS)] ++ fU)
763+ if ((cO == cO))
757764 then {
758- let fR = invoke(aL, "burn", [cW], [AttachedPayment(cq, cW)])
759- if ((fR == fR))
765+ let fV = invoke(aN, "burn", [cY], [AttachedPayment(cs, cY)])
766+ if ((fV == fV))
760767 then {
761- let fS = {
762- let fT = if ((this == aP))
768+ let fW = {
769+ let fX = if ((this == aR))
763770 then 0
764- else cn
765- let fU = if ((aU(fy) == be))
771+ else cp
772+ let fY = if ((aW(fC) == bg))
766773 then true
767774 else false
768- if (fU)
769- then $Tuple2(-((fI + fT)), 0)
770- else $Tuple2(0, -((fI + fT)))
775+ if (fY)
776+ then $Tuple2(-((fM + fX)), 0)
777+ else $Tuple2(0, -((fM + fX)))
771778 }
772- let dQ = fS._1
773- let dR = fS._2
774- let fV = dP(dQ, dR, 0)
775- let fW = fV._1
776- let dG = fV._2
777- let fX = dT(dO, dG)
778- if ((fX == fX))
779- then $Tuple2((cM ++ fW), fJ)
779+ let eK = fW._1
780+ let eL = fW._2
781+ let fZ = eJ(eK, eL, 0)
782+ let ga = fZ._1
783+ let eA = fZ._2
784+ let gb = eN(eI, eA)
785+ if ((gb == gb))
786+ then $Tuple2((cO ++ ga), fN)
780787 else throw("Strict value is not equal to itself.")
781788 }
782789 else throw("Strict value is not equal to itself.")
788795 }
789796
790797
791-func fY () = {
792- let aC = getString(S())
793- if ($isInstanceOf(aC, "String"))
798+func gc () = {
799+ let aE = getString(U())
800+ if ($isInstanceOf(aE, "String"))
794801 then {
795- let et = aC
796- fromBase58String(et)
802+ let dI = aE
803+ fromBase58String(dI)
797804 }
798- else if ($isInstanceOf(aC, "Unit"))
805+ else if ($isInstanceOf(aE, "Unit"))
799806 then unit
800807 else throw("Match error")
801808 }
802809
803810
804-func fZ () = {
805- let aC = getString(T())
806- if ($isInstanceOf(aC, "String"))
811+func gd () = {
812+ let aE = getString(V())
813+ if ($isInstanceOf(aE, "String"))
807814 then {
808- let et = aC
809- fromBase58String(et)
815+ let dI = aE
816+ fromBase58String(dI)
810817 }
811- else if ($isInstanceOf(aC, "Unit"))
818+ else if ($isInstanceOf(aE, "Unit"))
812819 then unit
813820 else throw("Match error")
814821 }
815822
816823
817-let ga = throw("Permission denied")
824+let ge = throw("Permission denied")
818825
819-func gb (eg) = {
820- let aC = fY()
821- if ($isInstanceOf(aC, "ByteVector"))
826+func gf (dV) = {
827+ let aE = gc()
828+ if ($isInstanceOf(aE, "ByteVector"))
822829 then {
823- let gc = aC
824- (eg.callerPublicKey == gc)
830+ let gg = aE
831+ (dV.callerPublicKey == gg)
825832 }
826- else if ($isInstanceOf(aC, "Unit"))
827- then (eg.caller == this)
833+ else if ($isInstanceOf(aE, "Unit"))
834+ then (dV.caller == this)
828835 else throw("Match error")
829836 }
830837
831838
832-func gd (eg) = {
833- let aC = fY()
834- if ($isInstanceOf(aC, "ByteVector"))
839+func gh (dV) = {
840+ let aE = gc()
841+ if ($isInstanceOf(aE, "ByteVector"))
835842 then {
836- let gc = aC
837- if ((eg.callerPublicKey == gc))
843+ let gg = aE
844+ if ((dV.callerPublicKey == gg))
838845 then true
839- else ga
846+ else ge
840847 }
841- else if ($isInstanceOf(aC, "Unit"))
842- then if ((eg.caller == this))
848+ else if ($isInstanceOf(aE, "Unit"))
849+ then if ((dV.caller == this))
843850 then true
844- else ga
851+ else ge
845852 else throw("Match error")
846853 }
847854
848855
849-@Callable(eg)
850-func constructor (R) = {
851- let eU = gd(eg)
852- if ((eU == eU))
853- then [StringEntry(R(), R)]
856+@Callable(dV)
857+func constructor (T) = {
858+ let eo = gh(dV)
859+ if ((eo == eo))
860+ then [StringEntry(T(), T)]
854861 else throw("Strict value is not equal to itself.")
855862 }
856863
857864
858865
859-@Callable(eg)
860-func setManager (ge) = {
861- let eU = gd(eg)
862- if ((eU == eU))
866+@Callable(dV)
867+func setManager (gi) = {
868+ let eo = gh(dV)
869+ if ((eo == eo))
863870 then {
864- let gf = fromBase58String(ge)
865- if ((gf == gf))
866- then [StringEntry(T(), ge)]
871+ let gj = fromBase58String(gi)
872+ if ((gj == gj))
873+ then [StringEntry(V(), gi)]
867874 else throw("Strict value is not equal to itself.")
868875 }
869876 else throw("Strict value is not equal to itself.")
871878
872879
873880
874-@Callable(eg)
881+@Callable(dV)
875882 func confirmManager () = {
876- let ck = fZ()
877- let gg = if (isDefined(ck))
883+ let cm = gd()
884+ let gk = if (isDefined(cm))
878885 then true
879886 else throw("No pending manager")
880- if ((gg == gg))
887+ if ((gk == gk))
881888 then {
882- let gh = if ((eg.callerPublicKey == value(ck)))
889+ let gl = if ((dV.callerPublicKey == value(cm)))
883890 then true
884891 else throw("You are not pending manager")
885- if ((gh == gh))
886- then [StringEntry(S(), toBase58String(value(ck))), DeleteEntry(T())]
892+ if ((gl == gl))
893+ then [StringEntry(U(), toBase58String(value(cm))), DeleteEntry(V())]
887894 else throw("Strict value is not equal to itself.")
888895 }
889896 else throw("Strict value is not equal to itself.")
891898
892899
893900
894-@Callable(eg)
895-func put (gi,gj) = {
896- let gk = bi()
897- let gl = valueOrErrorMessage(addressFromString(gk[A]), "Wr st addr")
898- let gm = valueOrErrorMessage(addressFromString(gk[C]), "Wr sl addr")
899- if ((0 > gi))
901+@Callable(dV)
902+func put (gm,gn) = {
903+ let go = bk()
904+ let gp = valueOrErrorMessage(addressFromString(go[C]), "Wr st addr")
905+ let gq = valueOrErrorMessage(addressFromString(go[E]), "Wr sl addr")
906+ if ((0 > gm))
900907 then throw("Wrong slippage")
901- else if ((size(eg.payments) != 2))
908+ else if ((size(dV.payments) != 2))
902909 then throw("2 pmnts expd")
903910 else {
904- let gn = toBigInt(value(eg.payments[0]).amount)
905- let go = toBigInt(value(eg.payments[1]).amount)
906- let dO = dH(gn, go, toBigInt(0))
907- if ((dO == dO))
911+ let gr = toBigInt(value(dV.payments[0]).amount)
912+ let gs = toBigInt(value(dV.payments[1]).amount)
913+ let eI = eB(gr, gs, toBigInt(0))
914+ if ((eI == eI))
908915 then {
909- let gp = ei(toString(eg.caller), toBase58String(eg.transactionId), AttachedPayment(value(eg.payments[0]).assetId, value(eg.payments[0]).amount), eg.payments[1], gi, true, false, true, 0, "")
910- let dv = gp._2
911- let gq = gp._7
912- let cM = gp._9
913- let dw = gp._10
914- let dx = gp._11
915- let cu = gp._12
916- let cv = gp._13
917- let di = invoke(aL, "emit", [dv], nil)
918- if ((di == di))
916+ let gt = fb(toString(dV.caller), toBase58String(dV.transactionId), AttachedPayment(value(dV.payments[0]).assetId, value(dV.payments[0]).amount), dV.payments[1], gm, true, false, true, 0, "")
917+ let dx = gt._2
918+ let gu = gt._7
919+ let cO = gt._9
920+ let dy = gt._10
921+ let dz = gt._11
922+ let cw = gt._12
923+ let cx = gt._13
924+ let dk = invoke(aN, "emit", [dx], nil)
925+ if ((dk == dk))
919926 then {
920- let gr = {
921- let aC = di
922- if ($isInstanceOf(aC, "Address"))
927+ let gv = {
928+ let aE = dk
929+ if ($isInstanceOf(aE, "Address"))
923930 then {
924- let gs = aC
925- invoke(gs, "emit", [dv], nil)
931+ let gw = aE
932+ invoke(gw, "emit", [dx], nil)
926933 }
927934 else unit
928935 }
929- if ((gr == gr))
936+ if ((gv == gv))
930937 then {
931- let gt = if ((dw > 0))
932- then invoke(gm, "put", nil, [AttachedPayment(cu, dw)])
938+ let gx = if ((dy > 0))
939+ then invoke(gq, "put", nil, [AttachedPayment(cw, dy)])
933940 else nil
934- if ((gt == gt))
941+ if ((gx == gx))
935942 then {
936- let gu = if ((dx > 0))
937- then invoke(gm, "put", nil, [AttachedPayment(cv, dx)])
943+ let gy = if ((dz > 0))
944+ then invoke(gq, "put", nil, [AttachedPayment(cx, dz)])
938945 else nil
939- if ((gu == gu))
946+ if ((gy == gy))
940947 then {
941- let gv = if (gj)
948+ let gz = if (gn)
942949 then {
943- let gw = invoke(gl, "stake", nil, [AttachedPayment(gq, dv)])
944- if ((gw == gw))
950+ let gA = invoke(gp, "stake", nil, [AttachedPayment(gu, dx)])
951+ if ((gA == gA))
945952 then nil
946953 else throw("Strict value is not equal to itself.")
947954 }
948- else [ScriptTransfer(eg.caller, dv, gq)]
949- let gx = dP(0, 0, 0)
950- let fW = gx._1
951- let dG = gx._2
952- let fX = dT(dO, dG)
953- if ((fX == fX))
954- then ((cM ++ gv) ++ fW)
955+ else [ScriptTransfer(dV.caller, dx, gu)]
956+ let gB = eJ(0, 0, 0)
957+ let ga = gB._1
958+ let eA = gB._2
959+ let gb = eN(eI, eA)
960+ if ((gb == gb))
961+ then ((cO ++ gz) ++ ga)
955962 else throw("Strict value is not equal to itself.")
956963 }
957964 else throw("Strict value is not equal to itself.")
968975
969976
970977
971-@Callable(eg)
972-func putOneTknV2 (fz,gj) = {
973- let gy = {
974- let fH = invoke(aL, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
975- if ($isInstanceOf(fH, "Boolean"))
976- then fH
977- else throw(($getType(fH) + " couldn't be cast to Boolean"))
978+@Callable(dV)
979+func putOneTknV2 (fD,gn) = {
980+ let gC = {
981+ let fL = invoke(aN, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
982+ if ($isInstanceOf(fL, "Boolean"))
983+ then fL
984+ else throw(($getType(fL) + " couldn't be cast to Boolean"))
978985 }
979- let gz = if (if (if (aN())
986+ let gD = if (if (if (aP())
980987 then true
981- else (bc == o))
988+ else (be == q))
982989 then true
983- else (bc == q))
990+ else (be == s))
984991 then true
985- else gy
986- let gA = [if (if (!(gz))
992+ else gC
993+ let gE = [if (if (!(gD))
987994 then true
988- else gb(eg))
995+ else gf(dV))
989996 then true
990- else aI("put operation is blocked by admin"), if ((size(eg.payments) == 1))
997+ else aK("put operation is blocked by admin"), if ((size(dV.payments) == 1))
991998 then true
992- else aI("exactly 1 payment are expected")]
993- if ((gA == gA))
999+ else aK("exactly 1 payment are expected")]
1000+ if ((gE == gE))
9941001 then {
995- let aY = aQ()
996- let cu = aY[u]
997- let cv = aY[v]
998- let ct = fromBase58String(aY[t])
999- let fD = parseIntValue(aY[w])
1000- let fE = parseIntValue(aY[x])
1001- let cs = if ((eg.caller == this))
1002- then eg.originCaller
1003- else eg.caller
1004- let eh = value(eg.payments[0])
1005- let cq = toBase58String(value(eh.assetId))
1006- let cW = eh.amount
1007- let gB = fb(cW, cq, toString(cs), toBase58String(eg.transactionId), true)
1008- if ((gB == gB))
1002+ let ba = aS()
1003+ let cw = ba[w]
1004+ let cx = ba[x]
1005+ let cv = fromBase58String(ba[v])
1006+ let fH = parseIntValue(ba[y])
1007+ let fI = parseIntValue(ba[z])
1008+ let cu = if ((dV.caller == this))
1009+ then dV.originCaller
1010+ else dV.caller
1011+ let fa = value(dV.payments[0])
1012+ let cs = toBase58String(value(fa.assetId))
1013+ let cY = fa.amount
1014+ let gF = ff(cY, cs, toString(cu), toBase58String(dV.transactionId), true)
1015+ if ((gF == gF))
10091016 then {
1010- let cn = gB._3
1011- let cM = gB._2
1012- let gC = gB._1
1013- let dv = if (if ((fz > 0))
1014- then (fz > gC)
1017+ let cp = gF._3
1018+ let cO = gF._2
1019+ let gG = gF._1
1020+ let dx = if (if ((fD > 0))
1021+ then (fD > gG)
10151022 else false)
1016- then aI(makeString(["amount to receive is less than ", toString(fz)], ""))
1017- else gC
1018- let gp = invoke(aL, "emit", [dv], nil)
1019- if ((gp == gp))
1023+ then aK(makeString(["amount to receive is less than ", toString(fD)], ""))
1024+ else gG
1025+ let gt = invoke(aN, "emit", [dx], nil)
1026+ if ((gt == gt))
10201027 then {
1021- let gr = {
1022- let aC = gp
1023- if ($isInstanceOf(aC, "Address"))
1028+ let gv = {
1029+ let aE = gt
1030+ if ($isInstanceOf(aE, "Address"))
10241031 then {
1025- let gs = aC
1026- invoke(gs, "emit", [dv], nil)
1032+ let gw = aE
1033+ invoke(gw, "emit", [dx], nil)
10271034 }
10281035 else unit
10291036 }
1030- if ((gr == gr))
1037+ if ((gv == gv))
10311038 then {
1032- let gv = if (gj)
1039+ let gz = if (gn)
10331040 then {
1034- let gw = invoke(bk, "stake", nil, [AttachedPayment(ct, dv)])
1035- if ((gw == gw))
1041+ let gA = invoke(bm, "stake", nil, [AttachedPayment(cv, dx)])
1042+ if ((gA == gA))
10361043 then nil
10371044 else throw("Strict value is not equal to itself.")
10381045 }
1039- else [ScriptTransfer(eg.caller, dv, ct)]
1040- let fQ = if ((cn > 0))
1041- then [ScriptTransfer(aP, cn, fromBase58String(cq))]
1046+ else [ScriptTransfer(dV.caller, dx, cv)]
1047+ let fU = if ((cp > 0))
1048+ then [ScriptTransfer(aR, cp, fromBase58String(cs))]
10421049 else nil
1043- let gD = if ((this == aP))
1050+ let gH = if ((this == aR))
10441051 then $Tuple2(0, 0)
10451052 else {
1046- let gE = if ((eh.assetId == be))
1053+ let gI = if ((fa.assetId == bg))
10471054 then true
10481055 else false
1049- if (gE)
1050- then $Tuple2(-(cn), 0)
1051- else $Tuple2(0, -(cn))
1056+ if (gI)
1057+ then $Tuple2(-(cp), 0)
1058+ else $Tuple2(0, -(cp))
10521059 }
1053- let dQ = gD._1
1054- let dR = gD._2
1055- let gF = dP(dQ, dR, 0)
1056- let fW = gF._1
1057- let dG = gF._2
1058- $Tuple2((((cM ++ gv) ++ fQ) ++ fW), dv)
1060+ let eK = gH._1
1061+ let eL = gH._2
1062+ let gJ = eJ(eK, eL, 0)
1063+ let ga = gJ._1
1064+ let eA = gJ._2
1065+ $Tuple2((((cO ++ gz) ++ fU) ++ ga), dx)
10591066 }
10601067 else throw("Strict value is not equal to itself.")
10611068 }
10681075
10691076
10701077
1071-@Callable(eg)
1072-func putForFree (gG) = if ((0 > gG))
1078+@Callable(dV)
1079+func putForFree (gK) = if ((0 > gK))
10731080 then throw("Wrong slpg")
1074- else if ((size(eg.payments) != 2))
1081+ else if ((size(dV.payments) != 2))
10751082 then throw("2 pmnts expd")
10761083 else {
1077- let gH = ei(toString(eg.caller), toBase58String(eg.transactionId), AttachedPayment(value(eg.payments[0]).assetId, value(eg.payments[0]).amount), eg.payments[1], gG, false, false, true, 0, "")
1078- let cM = gH._9
1079- let gn = toBigInt(value(eg.payments[0]).amount)
1080- let go = toBigInt(value(eg.payments[1]).amount)
1081- let dO = dH(gn, go, toBigInt(0))
1082- if ((dO == dO))
1084+ let gL = fb(toString(dV.caller), toBase58String(dV.transactionId), AttachedPayment(value(dV.payments[0]).assetId, value(dV.payments[0]).amount), dV.payments[1], gK, false, false, true, 0, "")
1085+ let cO = gL._9
1086+ let gr = toBigInt(value(dV.payments[0]).amount)
1087+ let gs = toBigInt(value(dV.payments[1]).amount)
1088+ let eI = eB(gr, gs, toBigInt(0))
1089+ if ((eI == eI))
10831090 then {
1084- let gI = dP(0, 0, 0)
1085- let fW = gI._1
1086- let dG = gI._2
1087- let fX = dT(dO, dG)
1088- if ((fX == fX))
1089- then (cM ++ fW)
1091+ let gM = eJ(0, 0, 0)
1092+ let ga = gM._1
1093+ let eA = gM._2
1094+ let gb = eN(eI, eA)
1095+ if ((gb == gb))
1096+ then (cO ++ ga)
10901097 else throw("Strict value is not equal to itself.")
10911098 }
10921099 else throw("Strict value is not equal to itself.")
10941101
10951102
10961103
1097-@Callable(eg)
1104+@Callable(dV)
10981105 func get () = {
1099- let di = ef(eg)
1100- let gJ = di._1
1101- let cL = di._2
1102- let cW = di._3
1103- let cq = di._4
1104- let cM = di._5
1105- let eV = invoke(aL, "burn", [cW], [AttachedPayment(cq, cW)])
1106- if ((eV == eV))
1106+ let dk = eZ(dV)
1107+ let gN = dk._1
1108+ let cN = dk._2
1109+ let cY = dk._3
1110+ let cs = dk._4
1111+ let cO = dk._5
1112+ let ep = invoke(aN, "burn", [cY], [AttachedPayment(cs, cY)])
1113+ if ((ep == ep))
11071114 then {
1108- let dO = dH(toBigInt(0), toBigInt(0), toBigInt(cW))
1109- let gK = dP(-(gJ), -(cL), 0)
1110- let fW = gK._1
1111- let dG = gK._2
1112- let fX = dT(dO, dG)
1113- if ((fX == fX))
1114- then (cM ++ fW)
1115+ let eI = eB(toBigInt(0), toBigInt(0), toBigInt(cY))
1116+ let gO = eJ(-(gN), -(cN), 0)
1117+ let ga = gO._1
1118+ let eA = gO._2
1119+ let gb = eN(eI, eA)
1120+ if ((gb == gb))
1121+ then (cO ++ ga)
11151122 else throw("Strict value is not equal to itself.")
11161123 }
11171124 else throw("Strict value is not equal to itself.")
11191126
11201127
11211128
1122-@Callable(eg)
1123-func getOneTknV2 (fy,fz) = {
1124- let gy = {
1125- let fH = invoke(aL, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1126- if ($isInstanceOf(fH, "Boolean"))
1127- then fH
1128- else throw(($getType(fH) + " couldn't be cast to Boolean"))
1129+@Callable(dV)
1130+func getOneTknV2 (fC,fD) = {
1131+ let gC = {
1132+ let fL = invoke(aN, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1133+ if ($isInstanceOf(fL, "Boolean"))
1134+ then fL
1135+ else throw(($getType(fL) + " couldn't be cast to Boolean"))
11291136 }
1130- let gL = if (if (aN())
1137+ let gP = if (if (aP())
11311138 then true
1132- else (bc == q))
1139+ else (be == s))
11331140 then true
1134- else gy
1135- let gA = [if (if (!(gL))
1141+ else gC
1142+ let gE = [if (if (!(gP))
11361143 then true
1137- else gb(eg))
1144+ else gf(dV))
11381145 then true
1139- else aI("get operation is blocked by admin"), if ((size(eg.payments) == 1))
1146+ else aK("get operation is blocked by admin"), if ((size(dV.payments) == 1))
11401147 then true
1141- else aI("exactly 1 payment are expected")]
1142- if ((gA == gA))
1148+ else aK("exactly 1 payment are expected")]
1149+ if ((gE == gE))
11431150 then {
1144- let gM = fx(fy, fz, eg.payments, eg.caller, eg.originCaller, eg.transactionId)
1145- let cM = gM._1
1146- let fJ = gM._2
1147- $Tuple2(cM, fJ)
1151+ let gQ = fB(fC, fD, dV.payments, dV.caller, dV.originCaller, dV.transactionId)
1152+ let cO = gQ._1
1153+ let fN = gQ._2
1154+ $Tuple2(cO, fN)
11481155 }
11491156 else throw("Strict value is not equal to itself.")
11501157 }
11511158
11521159
11531160
1154-@Callable(eg)
1161+@Callable(dV)
11551162 func refreshDLp () = {
1156- let gN = valueOrElse(getInteger(aj), 0)
1157- let gO = if (((height - gN) >= am))
1163+ let gR = valueOrElse(getInteger(al), 0)
1164+ let gS = if (((height - gR) >= ao))
11581165 then unit
1159- else aI(makeString([toString(am), " blocks have not passed since the previous call"], ""))
1160- if ((gO == gO))
1166+ else aK(makeString([toString(ao), " blocks have not passed since the previous call"], ""))
1167+ if ((gS == gS))
11611168 then {
1162- let ea = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, ai), "0")), aK("invalid dLp"))
1163- let gP = dP(0, 0, 0)
1164- let gQ = gP._1
1165- let dG = gP._2
1166- let dS = if ((ea != dG))
1167- then gQ
1168- else aI("nothing to refresh")
1169- $Tuple2(dS, toString(dG))
1169+ let eU = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, ak), "0")), aM("invalid dLp"))
1170+ let gT = eJ(0, 0, 0)
1171+ let gU = gT._1
1172+ let eA = gT._2
1173+ let eM = if ((eU != eA))
1174+ then gU
1175+ else aK("nothing to refresh")
1176+ $Tuple2(eM, toString(eA))
11701177 }
11711178 else throw("Strict value is not equal to itself.")
11721179 }
11731180
11741181
11751182
1176-@Callable(eg)
1177-func getOneTknV2READONLY (fy,gR) = {
1178- let aY = aQ()
1179- let cu = aY[u]
1180- let cv = aY[v]
1181- let ct = aY[t]
1182- let en = [toBigInt(bD(cu)), toBigInt(bD(cv))]
1183- let dF = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(ct)), "invalid lp asset").quantity)
1184- let bQ = em(en)
1185- let bP = (bQ - fraction(toBigInt(gR), bQ, dF))
1186- let gS = if ((fy == cu))
1183+@Callable(dV)
1184+func getOneTknV2READONLY (fC,gV) = {
1185+ let ba = aS()
1186+ let cw = ba[w]
1187+ let cx = ba[x]
1188+ let cv = ba[v]
1189+ let dF = [toBigInt(bF(cw)), toBigInt(bF(cx))]
1190+ let ez = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(cv)), "invalid lp asset").quantity)
1191+ let bS = dE(dF)
1192+ let bR = (bS - fraction(toBigInt(gV), bS, ez))
1193+ let gW = if ((fC == cw))
11871194 then 0
1188- else if ((fy == cv))
1195+ else if ((fC == cx))
11891196 then 1
11901197 else throw("invalid out asset id")
1191- let gT = eR(en, gS, bP)
1192- let gU = (en[gS] - gT)
1193- let gV = max([0, toInt((gU - f))])
1194- let gW = cl(gV)
1195- let fI = gW._1
1196- let cn = gW._2
1197- $Tuple2(nil, $Tuple2(fI, cn))
1198+ let gX = ej(dF, gW, bR)
1199+ let gY = (dF[gW] - gX)
1200+ let gZ = max([0, toInt((gY - f))])
1201+ let ha = cn(gZ)
1202+ let fM = ha._1
1203+ let cp = ha._2
1204+ $Tuple2(nil, $Tuple2(fM, cp))
11981205 }
11991206
12001207
12011208
1202-@Callable(eg)
1203-func getOneTknV2WithBonusREADONLY (fy,gR) = {
1204- let aY = aQ()
1205- let cu = aY[u]
1206- let cv = aY[v]
1207- let ct = aY[t]
1208- let cA = bD(cu)
1209- let cC = bD(cv)
1210- let gX = {
1211- let fH = invoke(this, "getOneTknV2READONLY", [fy, gR], nil)
1212- if ($isInstanceOf(fH, "(Int, Int)"))
1213- then fH
1214- else throw(($getType(fH) + " couldn't be cast to (Int, Int)"))
1209+@Callable(dV)
1210+func getOneTknV2WithBonusREADONLY (fC,gV) = {
1211+ let ba = aS()
1212+ let cw = ba[w]
1213+ let cx = ba[x]
1214+ let cv = ba[v]
1215+ let cC = bF(cw)
1216+ let cE = bF(cx)
1217+ let hb = {
1218+ let fL = invoke(this, "getOneTknV2READONLY", [fC, gV], nil)
1219+ if ($isInstanceOf(fL, "(Int, Int)"))
1220+ then fL
1221+ else throw(($getType(fL) + " couldn't be cast to (Int, Int)"))
12151222 }
1216- let fI = gX._1
1217- let cn = gX._2
1218- let di = co("", ct, gR, this)
1219- let cK = di._1
1220- let cL = di._2
1221- let gY = (cK + cL)
1222- let fw = if ((gY == 0))
1223- then if ((fI == 0))
1223+ let fM = hb._1
1224+ let cp = hb._2
1225+ let dk = cq("", cv, gV, this)
1226+ let cM = dk._1
1227+ let cN = dk._2
1228+ let hc = (cM + cN)
1229+ let fA = if ((hc == 0))
1230+ then if ((fM == 0))
12241231 then 0
12251232 else throw("bonus calculation error")
1226- else fraction((fI - gY), a, gY)
1227- $Tuple2(nil, $Tuple3(fI, cn, fw))
1233+ else fraction((fM - hc), a, hc)
1234+ $Tuple2(nil, $Tuple3(fM, cp, fA))
12281235 }
12291236
12301237
12311238
1232-@Callable(eg)
1233-func getNoLess (gZ,ha) = {
1234- let di = ef(eg)
1235- let cK = di._1
1236- let cL = di._2
1237- let cW = di._3
1238- let cq = di._4
1239- let cM = di._5
1240- if ((gZ > cK))
1241- then throw(((("Failed: " + toString(cK)) + " < ") + toString(gZ)))
1242- else if ((ha > cL))
1243- then throw(((("Failed: " + toString(cL)) + " < ") + toString(ha)))
1239+@Callable(dV)
1240+func getNoLess (hd,he) = {
1241+ let dk = eZ(dV)
1242+ let cM = dk._1
1243+ let cN = dk._2
1244+ let cY = dk._3
1245+ let cs = dk._4
1246+ let cO = dk._5
1247+ if ((hd > cM))
1248+ then throw(((("Failed: " + toString(cM)) + " < ") + toString(hd)))
1249+ else if ((he > cN))
1250+ then throw(((("Failed: " + toString(cN)) + " < ") + toString(he)))
12441251 else {
1245- let dO = dH(toBigInt(0), toBigInt(0), toBigInt(cW))
1246- let hb = invoke(aL, "burn", [cW], [AttachedPayment(cq, cW)])
1247- if ((hb == hb))
1252+ let eI = eB(toBigInt(0), toBigInt(0), toBigInt(cY))
1253+ let hf = invoke(aN, "burn", [cY], [AttachedPayment(cs, cY)])
1254+ if ((hf == hf))
12481255 then {
1249- let hc = dP(-(cK), -(cL), 0)
1250- let fW = hc._1
1251- let dG = hc._2
1252- let fX = dT(dO, dG)
1253- if ((fX == fX))
1254- then (cM ++ fW)
1256+ let hg = eJ(-(cM), -(cN), 0)
1257+ let ga = hg._1
1258+ let eA = hg._2
1259+ let gb = eN(eI, eA)
1260+ if ((gb == gb))
1261+ then (cO ++ ga)
12551262 else throw("Strict value is not equal to itself.")
12561263 }
12571264 else throw("Strict value is not equal to itself.")
12601267
12611268
12621269
1263-@Callable(eg)
1264-func unstakeAndGet (cm) = {
1265- let hd = if ((size(eg.payments) != 0))
1270+@Callable(dV)
1271+func unstakeAndGet (co) = {
1272+ let hh = if ((size(dV.payments) != 0))
12661273 then throw("No pmnts expd")
12671274 else true
1268- if ((hd == hd))
1275+ if ((hh == hh))
12691276 then {
1270- let cc = aQ()
1271- let he = bi()
1272- let gq = fromBase58String(cc[t])
1273- let hf = valueOrErrorMessage(addressFromString(he[A]), "Wr st addr")
1274- let dO = dH(toBigInt(0), toBigInt(0), toBigInt(0))
1275- let hg = invoke(hf, "unstake", [toBase58String(gq), cm], nil)
1276- if ((hg == hg))
1277+ let ce = aS()
1278+ let hi = bk()
1279+ let gu = fromBase58String(ce[v])
1280+ let hj = valueOrErrorMessage(addressFromString(hi[C]), "Wr st addr")
1281+ let eI = eB(toBigInt(0), toBigInt(0), toBigInt(0))
1282+ let hk = invoke(hj, "unstake", [toBase58String(gu), co], nil)
1283+ if ((hk == hk))
12771284 then {
1278- let di = co(toBase58String(eg.transactionId), toBase58String(gq), cm, eg.caller)
1279- let cK = di._1
1280- let cL = di._2
1281- let cy = parseIntValue(di._9)
1282- let cM = di._10
1283- let hh = if (if (aN())
1285+ let dk = cq(toBase58String(dV.transactionId), toBase58String(gu), co, dV.caller)
1286+ let cM = dk._1
1287+ let cN = dk._2
1288+ let cA = parseIntValue(dk._9)
1289+ let cO = dk._10
1290+ let hl = if (if (aP())
12841291 then true
1285- else (cy == q))
1286- then throw(("Blocked: " + toString(cy)))
1292+ else (cA == s))
1293+ then throw(("Blocked: " + toString(cA)))
12871294 else true
1288- if ((hh == hh))
1295+ if ((hl == hl))
12891296 then {
1290- let hi = invoke(aL, "burn", [cm], [AttachedPayment(gq, cm)])
1291- if ((hi == hi))
1297+ let hm = invoke(aN, "burn", [co], [AttachedPayment(gu, co)])
1298+ if ((hm == hm))
12921299 then {
1293- let hj = dP(-(cK), -(cL), 0)
1294- let fW = hj._1
1295- let dG = hj._2
1296- let fX = dT(dO, dG)
1297- if ((fX == fX))
1298- then (cM ++ fW)
1300+ let hn = eJ(-(cM), -(cN), 0)
1301+ let ga = hn._1
1302+ let eA = hn._2
1303+ let gb = eN(eI, eA)
1304+ if ((gb == gb))
1305+ then (cO ++ ga)
12991306 else throw("Strict value is not equal to itself.")
13001307 }
13011308 else throw("Strict value is not equal to itself.")
13091316
13101317
13111318
1312-@Callable(eg)
1313-func unstakeAndGetNoLess (hk,hl,ha) = {
1314- let gL = if (aN())
1319+@Callable(dV)
1320+func unstakeAndGetNoLess (ho,hp,he) = {
1321+ let gP = if (aP())
13151322 then true
1316- else (bc == q)
1317- let gA = [if (!(gL))
1323+ else (be == s)
1324+ let gE = [if (!(gP))
13181325 then true
1319- else throw("get operation is blocked by admin"), if ((size(eg.payments) == 0))
1326+ else throw("get operation is blocked by admin"), if ((size(dV.payments) == 0))
13201327 then true
13211328 else throw("no payments are expected")]
1322- if ((gA == gA))
1329+ if ((gE == gE))
13231330 then {
1324- let dO = dH(toBigInt(0), toBigInt(0), toBigInt(0))
1325- let hg = invoke(bk, "unstake", [toBase58String(bd), hk], nil)
1326- if ((hg == hg))
1331+ let eI = eB(toBigInt(0), toBigInt(0), toBigInt(0))
1332+ let hk = invoke(bm, "unstake", [toBase58String(bf), ho], nil)
1333+ if ((hk == hk))
13271334 then {
1328- let hm = co(toBase58String(eg.transactionId), toBase58String(bd), hk, eg.caller)
1329- let cK = hm._1
1330- let cL = hm._2
1331- let cM = hm._10
1332- let hn = [if ((cK >= hl))
1335+ let hq = cq(toBase58String(dV.transactionId), toBase58String(bf), ho, dV.caller)
1336+ let cM = hq._1
1337+ let cN = hq._2
1338+ let cO = hq._10
1339+ let hr = [if ((cM >= hp))
13331340 then true
1334- else throw(makeString(["amount asset amount to receive is less than ", toString(hl)], "")), if ((cL >= ha))
1341+ else throw(makeString(["amount asset amount to receive is less than ", toString(hp)], "")), if ((cN >= he))
13351342 then true
1336- else throw(makeString(["price asset amount to receive is less than ", toString(ha)], ""))]
1337- if ((hn == hn))
1343+ else throw(makeString(["price asset amount to receive is less than ", toString(he)], ""))]
1344+ if ((hr == hr))
13381345 then {
1339- let hb = invoke(aL, "burn", [hk], [AttachedPayment(bd, hk)])
1340- if ((hb == hb))
1346+ let hf = invoke(aN, "burn", [ho], [AttachedPayment(bf, ho)])
1347+ if ((hf == hf))
13411348 then {
1342- let ho = dP(-(cK), -(cL), 0)
1343- let fW = ho._1
1344- let dG = ho._2
1345- let fX = dT(dO, dG)
1346- if ((fX == fX))
1347- then (cM ++ fW)
1349+ let hs = eJ(-(cM), -(cN), 0)
1350+ let ga = hs._1
1351+ let eA = hs._2
1352+ let gb = eN(eI, eA)
1353+ if ((gb == gb))
1354+ then (cO ++ ga)
13481355 else throw("Strict value is not equal to itself.")
13491356 }
13501357 else throw("Strict value is not equal to itself.")
13581365
13591366
13601367
1361-@Callable(eg)
1362-func unstakeAndGetOneTknV2 (hk,fy,fz) = {
1363- let gy = {
1364- let fH = invoke(aL, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1365- if ($isInstanceOf(fH, "Boolean"))
1366- then fH
1367- else throw(($getType(fH) + " couldn't be cast to Boolean"))
1368+@Callable(dV)
1369+func unstakeAndGetOneTknV2 (ho,fC,fD) = {
1370+ let gC = {
1371+ let fL = invoke(aN, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1372+ if ($isInstanceOf(fL, "Boolean"))
1373+ then fL
1374+ else throw(($getType(fL) + " couldn't be cast to Boolean"))
13681375 }
1369- let gL = if (if (aN())
1376+ let gP = if (if (aP())
13701377 then true
1371- else (bc == q))
1378+ else (be == s))
13721379 then true
1373- else gy
1374- let gA = [if (if (!(gL))
1380+ else gC
1381+ let gE = [if (if (!(gP))
13751382 then true
1376- else gb(eg))
1383+ else gf(dV))
13771384 then true
1378- else aI("get operation is blocked by admin"), if ((size(eg.payments) == 0))
1385+ else aK("get operation is blocked by admin"), if ((size(dV.payments) == 0))
13791386 then true
1380- else aI("no payments are expected")]
1381- if ((gA == gA))
1387+ else aK("no payments are expected")]
1388+ if ((gE == gE))
13821389 then {
1383- let cc = aQ()
1384- let he = bi()
1385- let gq = fromBase58String(cc[t])
1386- let hf = valueOrErrorMessage(addressFromString(he[A]), "Wr st addr")
1387- let hg = invoke(hf, "unstake", [toBase58String(gq), hk], nil)
1388- if ((hg == hg))
1390+ let ce = aS()
1391+ let hi = bk()
1392+ let gu = fromBase58String(ce[v])
1393+ let hj = valueOrErrorMessage(addressFromString(hi[C]), "Wr st addr")
1394+ let hk = invoke(hj, "unstake", [toBase58String(gu), ho], nil)
1395+ if ((hk == hk))
13891396 then {
1390- let hp = fx(fy, fz, [AttachedPayment(gq, hk)], eg.caller, eg.originCaller, eg.transactionId)
1391- let cM = hp._1
1392- let fJ = hp._2
1393- $Tuple2(cM, fJ)
1397+ let ht = fB(fC, fD, [AttachedPayment(gu, ho)], dV.caller, dV.originCaller, dV.transactionId)
1398+ let cO = ht._1
1399+ let fN = ht._2
1400+ $Tuple2(cO, fN)
13941401 }
13951402 else throw("Strict value is not equal to itself.")
13961403 }
13991406
14001407
14011408
1402-@Callable(eg)
1403-func putOneTknV2WithBonusREADONLY (hq,hr) = {
1404- let aY = aQ()
1405- let cu = aY[u]
1406- let cv = aY[v]
1407- let ct = aY[t]
1408- let hs = fb(hq, hr, "", "", true)
1409- let fr = hs._1
1410- let cM = hs._2
1411- let cn = hs._3
1412- let fw = hs._4
1413- $Tuple2(nil, $Tuple3(fr, cn, fw))
1409+@Callable(dV)
1410+func putOneTknV2WithBonusREADONLY (hu,hv) = {
1411+ let ba = aS()
1412+ let cw = ba[w]
1413+ let cx = ba[x]
1414+ let cv = ba[v]
1415+ let hw = ff(hu, hv, "", "", true)
1416+ let fv = hw._1
1417+ let cO = hw._2
1418+ let cp = hw._3
1419+ let fA = hw._4
1420+ $Tuple2(nil, $Tuple3(fv, cp, fA))
14141421 }
14151422
14161423
14171424
1418-@Callable(eg)
1419-func putOneTknV2WithoutTakeFeeREADONLY (hq,hr) = {
1420- let aY = aQ()
1421- let cu = aY[u]
1422- let cv = aY[v]
1423- let ct = aY[t]
1424- let ht = fb(hq, hr, "", "", false)
1425- let fr = ht._1
1426- let cM = ht._2
1427- let cn = ht._3
1428- let fw = ht._4
1429- $Tuple2(nil, $Tuple3(fr, cn, fw))
1425+@Callable(dV)
1426+func putOneTknV2WithoutTakeFeeREADONLY (hu,hv) = {
1427+ let ba = aS()
1428+ let cw = ba[w]
1429+ let cx = ba[x]
1430+ let cv = ba[v]
1431+ let hx = ff(hu, hv, "", "", false)
1432+ let fv = hx._1
1433+ let cO = hx._2
1434+ let cp = hx._3
1435+ let fA = hx._4
1436+ $Tuple2(nil, $Tuple3(fv, cp, fA))
14301437 }
14311438
14321439
14331440
1434-@Callable(eg)
1435-func activate (hu,hv) = if ((toString(eg.caller) != toString(aL)))
1441+@Callable(dV)
1442+func activate (hy,hz) = if ((toString(dV.caller) != toString(aN)))
14361443 then throw("denied")
1437- else $Tuple2([StringEntry(ac(), hu), StringEntry(ad(), hv)], "success")
1444+ else $Tuple2([StringEntry(ae(), hy), StringEntry(af(), hz)], "success")
14381445
14391446
14401447
1441-@Callable(eg)
1442-func setS (hw,hh) = if ((toString(eg.caller) != aE(this, af())))
1443- then ga
1444- else [StringEntry(hw, hh)]
1448+@Callable(dV)
1449+func setS (hA,hl) = if ((toString(dV.caller) != aG(this, ah())))
1450+ then ge
1451+ else [StringEntry(hA, hl)]
14451452
14461453
14471454
1448-@Callable(eg)
1449-func setI (hw,hh) = if ((toString(eg.caller) != aE(this, af())))
1450- then ga
1451- else [IntegerEntry(hw, hh)]
1455+@Callable(dV)
1456+func setI (hA,hl) = if ((toString(dV.caller) != aG(this, ah())))
1457+ then ge
1458+ else [IntegerEntry(hA, hl)]
14521459
14531460
14541461
1455-@Callable(eg)
1456-func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aQ())
1462+@Callable(dV)
1463+func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aS())
14571464
14581465
14591466
1460-@Callable(eg)
1461-func getAccBalanceWrapperREADONLY (bE) = $Tuple2(nil, bD(bE))
1467+@Callable(dV)
1468+func getAccBalanceWrapperREADONLY (bG) = $Tuple2(nil, bF(bG))
14621469
14631470
14641471
1465-@Callable(eg)
1466-func calcPricesWrapperREADONLY (bW,bX,cb) = {
1467- let hx = ca(bW, bX, cb)
1468- $Tuple2(nil, [toString(hx[0]), toString(hx[1]), toString(hx[2])])
1472+@Callable(dV)
1473+func calcPricesWrapperREADONLY (bY,bZ,cd) = {
1474+ let hB = cc(bY, bZ, cd)
1475+ $Tuple2(nil, [toString(hB[0]), toString(hB[1]), toString(hB[2])])
14691476 }
14701477
14711478
14721479
1473-@Callable(eg)
1474-func fromX18WrapperREADONLY (J,hy) = $Tuple2(nil, I(parseBigIntValue(J), hy))
1480+@Callable(dV)
1481+func fromX18WrapperREADONLY (L,hC) = $Tuple2(nil, K(parseBigIntValue(L), hC))
14751482
14761483
14771484
1478-@Callable(eg)
1479-func toX18WrapperREADONLY (G,H) = $Tuple2(nil, toString(F(G, H)))
1485+@Callable(dV)
1486+func toX18WrapperREADONLY (I,J) = $Tuple2(nil, toString(H(I, J)))
14801487
14811488
14821489
1483-@Callable(eg)
1484-func calcPriceBigIntWrapperREADONLY (bG,bH) = $Tuple2(nil, toString(bF(parseBigIntValue(bG), parseBigIntValue(bH))))
1490+@Callable(dV)
1491+func calcPriceBigIntWrapperREADONLY (bI,bJ) = $Tuple2(nil, toString(bH(parseBigIntValue(bI), parseBigIntValue(bJ))))
14851492
14861493
14871494
1488-@Callable(eg)
1489-func estimatePutOperationWrapperREADONLY (cp,bL,cO,cP,cQ,cR,hz,cS,cT) = $Tuple2(nil, cN(cp, bL, cO, cP, cQ, cR, hz, cS, cT, true, false, 0, ""))
1495+@Callable(dV)
1496+func estimatePutOperationWrapperREADONLY (cr,bN,cQ,cR,cS,cT,hD,cU,cV) = $Tuple2(nil, cP(cr, bN, cQ, cR, cS, cT, hD, cU, cV, true, false, 0, ""))
14901497
14911498
14921499
1493-@Callable(eg)
1494-func estimateGetOperationWrapperREADONLY (cp,hA,cr,hz) = {
1495- let di = co(cp, hA, cr, addressFromStringValue(hz))
1496- $Tuple2(nil, $Tuple10(di._1, di._2, di._3, di._4, di._5, di._6, di._7, toString(di._8), di._9, di._10))
1500+@Callable(dV)
1501+func estimateGetOperationWrapperREADONLY (cr,hE,ct,hD) = {
1502+ let dk = cq(cr, hE, ct, addressFromStringValue(hD))
1503+ $Tuple2(nil, $Tuple10(dk._1, dk._2, dk._3, dk._4, dk._5, dk._6, dk._7, toString(dk._8), dk._9, dk._10))
14971504 }
14981505
14991506
15001507
1501-@Callable(eg)
1502-func getFeeREADONLY () = $Tuple2(nil, ah)
1508+@Callable(dV)
1509+func getFeeREADONLY () = $Tuple2(nil, aj)
15031510
15041511
1505-@Verifier(hB)
1506-func hC () = {
1507- let hD = {
1508- let aC = fY()
1509- if ($isInstanceOf(aC, "ByteVector"))
1512+@Verifier(hF)
1513+func hG () = {
1514+ let hH = {
1515+ let aE = gc()
1516+ if ($isInstanceOf(aE, "ByteVector"))
15101517 then {
1511- let gc = aC
1512- gc
1518+ let gg = aE
1519+ gg
15131520 }
1514- else if ($isInstanceOf(aC, "Unit"))
1515- then hB.senderPublicKey
1521+ else if ($isInstanceOf(aE, "Unit"))
1522+ then hF.senderPublicKey
15161523 else throw("Match error")
15171524 }
1518- let aC = hB
1519- if ($isInstanceOf(aC, "Order"))
1525+ let aE = hF
1526+ if ($isInstanceOf(aE, "Order"))
15201527 then {
1521- let dW = aC
1522- let hE = aO()
1523- let hF = dV(dW)
1524- let hG = sigVerify(dW.bodyBytes, dW.proofs[0], dW.senderPublicKey)
1525- let hH = sigVerify(dW.bodyBytes, dW.proofs[1], hE)
1526- if (if (if (hF)
1527- then hG
1528+ let eQ = aE
1529+ let hI = aQ()
1530+ let hJ = eP(eQ)
1531+ let hK = sigVerify(eQ.bodyBytes, eQ.proofs[0], eQ.senderPublicKey)
1532+ let hL = sigVerify(eQ.bodyBytes, eQ.proofs[1], hI)
1533+ if (if (if (hJ)
1534+ then hK
15281535 else false)
1529- then hH
1536+ then hL
15301537 else false)
15311538 then true
1532- else ax(hF, hG, hH)
1539+ else az(hJ, hK, hL)
15331540 }
1534- else if ($isInstanceOf(aC, "SetScriptTransaction"))
1541+ else if ($isInstanceOf(aE, "SetScriptTransaction"))
15351542 then {
1536- let et = aC
1537- let hI = blake2b256(value(et.script))
1538- let hJ = fromBase64String(value(getString(aL, av())))
1539- let hK = scriptHash(this)
1540- if (if ((hJ == hI))
1541- then (hK != hI)
1543+ let dI = aE
1544+ let hM = blake2b256(value(dI.script))
1545+ let hN = fromBase64String(value(getString(aN, ax())))
1546+ let hO = scriptHash(this)
1547+ if (if ((hN == hM))
1548+ then (hO != hM)
15421549 else false)
15431550 then true
1544- else sigVerify(hB.bodyBytes, hB.proofs[0], hD)
1551+ else sigVerify(hF.bodyBytes, hF.proofs[0], hH)
15451552 }
1546- else sigVerify(hB.bodyBytes, hB.proofs[0], hD)
1553+ else sigVerify(hF.bodyBytes, hF.proofs[0], hH)
15471554 }
15481555
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
18-let h = toBigInt((a - ((a * 1) / a)))
18+let h = toBigInt(3)
1919
20-let i = "WAVES"
20+let i = toBigInt(4)
2121
22-let j = "100"
22+let j = toBigInt((a - ((a * 1) / a)))
2323
24-let k = "1"
24+let k = "WAVES"
2525
26-let l = "__"
26+let l = "100"
2727
28-let m = ""
28+let m = "1"
2929
30-let n = 1
30+let n = "__"
3131
32-let o = 2
32+let o = ""
3333
34-let p = 3
34+let p = 1
3535
36-let q = 4
36+let q = 2
3737
38-let r = 1
38+let r = 3
3939
40-let s = 2
40+let s = 4
4141
42-let t = 3
42+let t = 1
4343
44-let u = 4
44+let u = 2
4545
46-let v = 5
46+let v = 3
4747
48-let w = 6
48+let w = 4
4949
50-let x = 7
50+let x = 5
5151
52-let y = 8
52+let y = 6
5353
54-let z = 9
54+let z = 7
5555
56-let A = 1
56+let A = 8
5757
58-let B = 6
58+let B = 9
5959
60-let C = 7
60+let C = 1
6161
62-let D = 10
62+let D = 6
6363
64-let E = fraction(10, a, 10000)
64+let E = 7
6565
66-func F (G,H) = fraction(toBigInt(G), c, toBigInt(H))
66+let F = 10
67+
68+let G = fraction(10, a, 10000)
69+
70+func H (I,J) = fraction(toBigInt(I), c, toBigInt(J))
6771
6872
69-func I (J,K) = toInt(fraction(J, toBigInt(K), c))
73+func K (L,M) = toInt(fraction(L, toBigInt(M), c))
7074
7175
72-func L (M,N,O) = fraction(M, N, O)
76+func N (O,P,Q) = fraction(O, P, Q)
7377
7478
75-func P (J) = if ((d > J))
76- then -(J)
77- else J
79+func R (L) = if ((d > L))
80+ then -(L)
81+ else L
7882
7983
80-func Q (J) = if ((d > J))
81- then -(J)
82- else J
84+func S (L) = if ((d > L))
85+ then -(L)
86+ else L
8387
8488
85-func R () = "%s__factoryContract"
89+func T () = "%s__factoryContract"
8690
8791
88-func S () = "%s__managerPublicKey"
92+func U () = "%s__managerPublicKey"
8993
9094
91-func T () = "%s__pendingManagerPublicKey"
95+func V () = "%s__pendingManagerPublicKey"
9296
9397
94-func U () = "%s%s__price__last"
98+func W () = "%s%s__price__last"
9599
96100
97-func V (W,X) = makeString(["%s%s%d%d__price__history", toString(W), toString(X)], l)
101+func X (Y,Z) = makeString(["%s%s%d%d__price__history", toString(Y), toString(Z)], n)
98102
99103
100-func Y (Z,aa) = ((("%s%s%s__P__" + Z) + "__") + aa)
104+func aa (ab,ac) = ((("%s%s%s__P__" + ab) + "__") + ac)
101105
102106
103-func ab (Z,aa) = ((("%s%s%s__G__" + Z) + "__") + aa)
107+func ad (ab,ac) = ((("%s%s%s__G__" + ab) + "__") + ac)
104108
105109
106-func ac () = "%s__amountAsset"
110+func ae () = "%s__amountAsset"
107111
108112
109-func ad () = "%s__priceAsset"
113+func af () = "%s__priceAsset"
110114
111115
112-func ae () = "%s__amp"
116+func ag () = "%s__amp"
113117
114118
115-func af () = "%s__addonAddr"
119+func ah () = "%s__addonAddr"
116120
117121
118-let ag = "%s__fee"
122+let ai = "%s__fee"
119123
120-let ah = valueOrElse(getInteger(this, ag), E)
124+let aj = valueOrElse(getInteger(this, ai), G)
121125
122-let ai = makeString(["%s", "dLp"], l)
126+let ak = makeString(["%s", "dLp"], n)
123127
124-let aj = makeString(["%s", "dLpRefreshedHeight"], l)
128+let al = makeString(["%s", "dLpRefreshedHeight"], n)
125129
126-let ak = makeString(["%s", "refreshDLpDelay"], l)
130+let am = makeString(["%s", "refreshDLpDelay"], n)
127131
128-let al = 30
132+let an = 30
129133
130-let am = valueOrElse(getInteger(this, ak), al)
134+let ao = valueOrElse(getInteger(this, am), an)
131135
132-func an () = "%s__factoryConfig"
136+func ap () = "%s__factoryConfig"
133137
134138
135-func ao () = "%s%s__matcher__publicKey"
139+func aq () = "%s%s__matcher__publicKey"
136140
137141
138-func ap (aq,ar) = (((("%d%d%s__" + aq) + "__") + ar) + "__config")
142+func ar (as,at) = (((("%d%d%s__" + as) + "__") + at) + "__config")
139143
140144
141-func as (at) = ("%s%s%s__mappings__baseAsset2internalId__" + at)
145+func au (av) = ("%s%s%s__mappings__baseAsset2internalId__" + av)
142146
143147
144-func au () = "%s__shutdown"
148+func aw () = "%s__shutdown"
145149
146150
147-func av () = "%s__allowedLpStableScriptHash"
151+func ax () = "%s__allowedLpStableScriptHash"
148152
149153
150-func aw () = "%s__feeCollectorAddress"
154+func ay () = "%s__feeCollectorAddress"
151155
152156
153-func ax (ay,az,aA) = throw(((((("Failed: ordValid=" + toString(ay)) + " sndrValid=") + toString(az)) + " mtchrValid=") + toString(aA)))
157+func az (aA,aB,aC) = throw(((((("Failed: ordValid=" + toString(aA)) + " sndrValid=") + toString(aB)) + " mtchrValid=") + toString(aC)))
154158
155159
156-func aB (J) = {
157- let aC = J
158- if ($isInstanceOf(aC, "String"))
160+func aD (L) = {
161+ let aE = L
162+ if ($isInstanceOf(aE, "String"))
159163 then {
160- let aD = aC
161- aD
164+ let aF = aE
165+ aF
162166 }
163167 else throw("fail cast to String")
164168 }
165169
166170
167-func aE (aF,aG) = valueOrErrorMessage(getString(aF, aG), makeString(["mandatory ", toString(aF), ".", aG, " not defined"], ""))
171+func aG (aH,aI) = valueOrErrorMessage(getString(aH, aI), makeString(["mandatory ", toString(aH), ".", aI, " not defined"], ""))
168172
169173
170-func aH (aF,aG) = valueOrErrorMessage(getInteger(aF, aG), makeString(["mandatory ", toString(aF), ".", aG, " not defined"], ""))
174+func aJ (aH,aI) = valueOrErrorMessage(getInteger(aH, aI), makeString(["mandatory ", toString(aH), ".", aI, " not defined"], ""))
171175
172176
173-func aI (aJ) = throw(makeString(["lp_stable.ride:", aJ], " "))
177+func aK (aL) = throw(makeString(["lp_stable.ride:", aL], " "))
174178
175179
176-func aK (aJ) = makeString(["lp_stable.ride:", aJ], " ")
180+func aM (aL) = makeString(["lp_stable.ride:", aL], " ")
177181
178182
179-let aL = addressFromStringValue(aE(this, R()))
183+let aN = addressFromStringValue(aG(this, T()))
180184
181-let aM = aE(this, ae())
185+let aO = aG(this, ag())
182186
183-func aN () = valueOrElse(getBoolean(aL, au()), false)
187+func aP () = valueOrElse(getBoolean(aN, aw()), false)
184188
185189
186-func aO () = fromBase58String(aE(aL, ao()))
190+func aQ () = fromBase58String(aG(aN, aq()))
187191
188192
189-let aP = addressFromStringValue(aE(aL, aw()))
193+let aR = addressFromStringValue(aG(aN, ay()))
190194
191-func aQ () = {
192- let aR = aE(this, ac())
193- let aS = aE(this, ad())
194- let aT = aH(aL, as(aS))
195- let aq = aH(aL, as(aR))
196- split(aE(aL, ap(toString(aq), toString(aT))), l)
195+func aS () = {
196+ let aT = aG(this, ae())
197+ let aU = aG(this, af())
198+ let aV = aJ(aN, au(aU))
199+ let as = aJ(aN, au(aT))
200+ split(aG(aN, ar(toString(as), toString(aV))), n)
197201 }
198202
199203
200-func aU (aV) = if ((aV == i))
204+func aW (aX) = if ((aX == k))
201205 then unit
202- else fromBase58String(aV)
206+ else fromBase58String(aX)
203207
204208
205-func aW (aV) = if ((aV == unit))
206- then i
207- else toBase58String(value(aV))
209+func aY (aX) = if ((aX == unit))
210+ then k
211+ else toBase58String(value(aX))
208212
209213
210-func aX (aY) = $Tuple7(addressFromStringValue(aY[r]), parseIntValue(aY[s]), fromBase58String(aY[t]), aU(aY[u]), aU(aY[v]), parseIntValue(aY[w]), parseIntValue(aY[x]))
214+func aZ (ba) = $Tuple7(addressFromStringValue(ba[t]), parseIntValue(ba[u]), fromBase58String(ba[v]), aW(ba[w]), aW(ba[x]), parseIntValue(ba[y]), parseIntValue(ba[z]))
211215
212216
213-let aZ = aX(aQ())
217+let bb = aZ(aS())
214218
215-let ba = aZ
219+let bc = bb
216220
217-let bb = ba._1
221+let bd = bc._1
218222
219-let bc = ba._2
223+let be = bc._2
220224
221-let bd = ba._3
225+let bf = bc._3
222226
223-let be = ba._4
227+let bg = bc._4
224228
225-let bf = ba._5
229+let bh = bc._5
226230
227-let bg = ba._6
231+let bi = bc._6
228232
229-let bh = ba._7
233+let bj = bc._7
230234
231-func bi () = split(aE(aL, an()), l)
235+func bk () = split(aG(aN, ap()), n)
232236
233237
234-let bj = bi()
238+let bl = bk()
235239
236-let bk = valueOrErrorMessage(addressFromString(bj[A]), "Invalid staking contract address")
240+let bm = valueOrErrorMessage(addressFromString(bl[C]), "Invalid staking contract address")
237241
238-let bl = valueOrErrorMessage(addressFromString(bj[C]), "Invalid slipage contract address")
242+let bn = valueOrErrorMessage(addressFromString(bl[E]), "Invalid slipage contract address")
239243
240-let bm = valueOrErrorMessage(addressFromString(bj[D]), "Invalid gwx contract address")
244+let bo = valueOrErrorMessage(addressFromString(bl[F]), "Invalid gwx contract address")
241245
242-let bn = valueOrErrorMessage(addressFromString(bj[B]), "Invalid gwx contract address")
246+let bp = valueOrErrorMessage(addressFromString(bl[D]), "Invalid gwx contract address")
243247
244-func bo (bp,bq,br,bs,bt,bu,bv,bw,bx,by) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bp), toString(bq), toString(br), toString(bs), toString(bt), toString(bu), toString(bv), toString(bw), toString(bx), toString(by)], l)
248+func bq (br,bs,bt,bu,bv,bw,bx,by,bz,bA) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(br), toString(bs), toString(bt), toString(bu), toString(bv), toString(bw), toString(bx), toString(by), toString(bz), toString(bA)], n)
245249
246250
247-func bz (bA,bB,bC,bs,bv,bw) = makeString(["%d%d%d%d%d%d", toString(bA), toString(bB), toString(bC), toString(bs), toString(bv), toString(bw)], l)
251+func bB (bC,bD,bE,bu,bx,by) = makeString(["%d%d%d%d%d%d", toString(bC), toString(bD), toString(bE), toString(bu), toString(bx), toString(by)], n)
248252
249253
250-func bD (bE) = if ((bE == "WAVES"))
254+func bF (bG) = if ((bG == "WAVES"))
251255 then wavesBalance(this).available
252- else assetBalance(this, fromBase58String(bE))
256+ else assetBalance(this, fromBase58String(bG))
253257
254258
255-func bF (bG,bH) = fraction(bG, c, bH)
259+func bH (bI,bJ) = fraction(bI, c, bJ)
256260
257261
258-func bI (bJ,bK,bL) = {
259- let bM = fraction((bJ - bK), b, bK)
260- let bN = ((bL - P(bM)) > d)
261- if (!(bN))
262- then throw(("Big slpg: " + toString(bM)))
263- else $Tuple2(bN, min([bJ, bK]))
262+func bK (bL,bM,bN) = {
263+ let bO = fraction((bL - bM), b, bM)
264+ let bP = ((bN - R(bO)) > d)
265+ if (!(bP))
266+ then throw(("Big slpg: " + toString(bO)))
267+ else $Tuple2(bP, min([bL, bM]))
264268 }
265269
266270
267-func bO (bP,bQ,bR) = {
268- let bM = fraction(bQ, b, bP)
269- let bS = (bR > bM)
270- if (if (bS)
271+func bQ (bR,bS,bT) = {
272+ let bO = fraction(bS, b, bR)
273+ let bU = (bT > bO)
274+ if (if (bU)
271275 then true
272- else (bQ > bP))
273- then throw(((((((toString(bQ) + " ") + toString(bP)) + " ") + toString(bM)) + " ") + toString(bR)))
274- else bS
276+ else (bS > bR))
277+ then throw(((((((toString(bS) + " ") + toString(bR)) + " ") + toString(bO)) + " ") + toString(bT)))
278+ else bU
275279 }
276280
277281
278-func bT (bU,bV,bW,bX) = {
279- let bY = F(bW, bU)
280- let bZ = F(bX, bV)
281- bF(bZ, bY)
282+func bV (bW,bX,bY,bZ) = {
283+ let ca = H(bY, bW)
284+ let cb = H(bZ, bX)
285+ bH(cb, ca)
282286 }
283287
284288
285-func ca (bW,bX,cb) = {
286- let cc = aQ()
287- let cd = parseIntValue(cc[w])
288- let ce = parseIntValue(cc[x])
289- let cf = bT(cd, ce, bW, bX)
290- let bH = F(bW, cd)
291- let bG = F(bX, ce)
292- let cg = F(cb, a)
293- let ch = bF(bH, cg)
294- let ci = bF(bG, cg)
295-[cf, ch, ci]
289+func cc (bY,bZ,cd) = {
290+ let ce = aS()
291+ let cf = parseIntValue(ce[y])
292+ let cg = parseIntValue(ce[z])
293+ let ch = bV(cf, cg, bY, bZ)
294+ let bJ = H(bY, cf)
295+ let bI = H(bZ, cg)
296+ let ci = H(cd, a)
297+ let cj = bH(bJ, ci)
298+ let ck = bH(bI, ci)
299+[ch, cj, ck]
296300 }
297301
298302
299-func cj (bW,bX,cb) = {
300- let ck = ca(bW, bX, cb)
301-[I(ck[0], a), I(ck[1], a), I(ck[2], a)]
303+func cl (bY,bZ,cd) = {
304+ let cm = cc(bY, bZ, cd)
305+[K(cm[0], a), K(cm[1], a), K(cm[2], a)]
302306 }
303307
304308
305-func cl (cm) = {
306- let cn = fraction(cm, ah, a)
307- $Tuple2((cm - cn), cn)
309+func cn (co) = {
310+ let cp = fraction(co, aj, a)
311+ $Tuple2((co - cp), cp)
308312 }
309313
310314
311-func co (cp,cq,cr,cs) = {
312- let cc = aQ()
313- let ct = cc[t]
314- let cu = cc[u]
315- let cv = cc[v]
316- let cw = parseIntValue(cc[w])
317- let cx = parseIntValue(cc[x])
318- let cy = cc[s]
319- let cz = valueOrErrorMessage(assetInfo(fromBase58String(ct)), "Wrong LP id").quantity
320- if ((ct != cq))
315+func cq (cr,cs,ct,cu) = {
316+ let ce = aS()
317+ let cv = ce[v]
318+ let cw = ce[w]
319+ let cx = ce[x]
320+ let cy = parseIntValue(ce[y])
321+ let cz = parseIntValue(ce[z])
322+ let cA = ce[u]
323+ let cB = valueOrErrorMessage(assetInfo(fromBase58String(cv)), "Wrong LP id").quantity
324+ if ((cv != cs))
321325 then throw("Wrong pmt asset")
322326 else {
323- let cA = bD(cu)
324- let cB = F(cA, cw)
325- let cC = bD(cv)
326- let cD = F(cC, cx)
327- let cE = bF(cD, cB)
328- let cF = I(cE, a)
329- let cG = F(cr, a)
330- let cH = F(cz, a)
331- let cI = fraction(cB, cG, cH)
332- let cJ = fraction(cD, cG, cH)
333- let cK = I(cI, cw)
334- let cL = I(cJ, cx)
335- let cM = if ((cp == ""))
327+ let cC = bF(cw)
328+ let cD = H(cC, cy)
329+ let cE = bF(cx)
330+ let cF = H(cE, cz)
331+ let cG = bH(cF, cD)
332+ let cH = K(cG, a)
333+ let cI = H(ct, a)
334+ let cJ = H(cB, a)
335+ let cK = fraction(cD, cI, cJ)
336+ let cL = fraction(cF, cI, cJ)
337+ let cM = K(cK, cy)
338+ let cN = K(cL, cz)
339+ let cO = if ((cr == ""))
336340 then nil
337- else [ScriptTransfer(cs, cK, if ((cu == "WAVES"))
341+ else [ScriptTransfer(cu, cM, if ((cw == "WAVES"))
338342 then unit
339- else fromBase58String(cu)), ScriptTransfer(cs, cL, if ((cv == "WAVES"))
343+ else fromBase58String(cw)), ScriptTransfer(cu, cN, if ((cx == "WAVES"))
340344 then unit
341- else fromBase58String(cv)), StringEntry(ab(toString(cs), cp), bz(cK, cL, cr, cF, height, lastBlock.timestamp)), IntegerEntry(U(), cF), IntegerEntry(V(height, lastBlock.timestamp), cF)]
342- $Tuple10(cK, cL, cu, cv, cA, cC, cz, cE, cy, cM)
345+ else fromBase58String(cx)), StringEntry(ad(toString(cu), cr), bB(cM, cN, ct, cH, height, lastBlock.timestamp)), IntegerEntry(W(), cH), IntegerEntry(X(height, lastBlock.timestamp), cH)]
346+ $Tuple10(cM, cN, cw, cx, cC, cE, cB, cG, cA, cO)
343347 }
344348 }
345349
346350
347-func cN (cp,bL,cO,cP,cQ,cR,cs,cS,cT,cU,cV,cW,cX) = {
348- let cc = aQ()
349- let ct = fromBase58String(cc[t])
350- let cY = cc[u]
351- let cZ = cc[v]
352- let da = cc[y]
353- let db = cc[z]
354- let dc = parseIntValue(cc[w])
355- let dd = parseIntValue(cc[x])
356- let cy = cc[s]
357- let de = valueOrErrorMessage(assetInfo(ct), "Wr lp as").quantity
358- let cA = if (cS)
359- then bD(cY)
360- else if (if (cU)
361- then (cX == cY)
351+func cP (cr,bN,cQ,cR,cS,cT,cu,cU,cV,cW,cX,cY,cZ) = {
352+ let ce = aS()
353+ let cv = fromBase58String(ce[v])
354+ let da = ce[w]
355+ let db = ce[x]
356+ let dc = ce[A]
357+ let dd = ce[B]
358+ let de = parseIntValue(ce[y])
359+ let df = parseIntValue(ce[z])
360+ let cA = ce[u]
361+ let dg = valueOrErrorMessage(assetInfo(cv), "Wr lp as").quantity
362+ let cC = if (cU)
363+ then bF(da)
364+ else if (if (cW)
365+ then (cZ == da)
362366 else false)
363- then (bD(cY) - cW)
364- else if (cU)
365- then bD(cY)
366- else (bD(cY) - cO)
367- let cC = if (cS)
368- then bD(cZ)
369- else if (if (cU)
370- then (cX == cZ)
367+ then (bF(da) - cY)
368+ else if (cW)
369+ then bF(da)
370+ else (bF(da) - cQ)
371+ let cE = if (cU)
372+ then bF(db)
373+ else if (if (cW)
374+ then (cZ == db)
371375 else false)
372- then (bD(cZ) - cW)
373- else if (cU)
374- then bD(cZ)
375- else (bD(cZ) - cQ)
376- let df = F(cO, dc)
377- let dg = F(cQ, dd)
378- let dh = bF(dg, df)
379- let cB = F(cA, dc)
380- let cD = F(cC, dd)
381- let di = if ((de == 0))
376+ then (bF(db) - cY)
377+ else if (cW)
378+ then bF(db)
379+ else (bF(db) - cS)
380+ let dh = H(cQ, de)
381+ let di = H(cS, df)
382+ let dj = bH(di, dh)
383+ let cD = H(cC, de)
384+ let cF = H(cE, df)
385+ let dk = if ((dg == 0))
382386 then {
383- let cE = d
384- let dj = d
385- let cg = pow((df * dg), 0, toBigInt(5), 1, 0, DOWN)
386- $Tuple5(I(cg, a), I(df, dc), I(dg, dd), bF((cD + dg), (cB + df)), dj)
387+ let cG = d
388+ let dl = d
389+ let ci = pow((dh * di), 0, toBigInt(5), 1, 0, DOWN)
390+ $Tuple5(K(ci, a), K(dh, de), K(di, df), bH((cF + di), (cD + dh)), dl)
387391 }
388392 else {
389- let cE = bF(cD, cB)
390- let dk = fraction(P((cE - dh)), c, cE)
391- let dj = F(bL, a)
392- if (if (if (cV)
393- then (cE != d)
393+ let cG = bH(cF, cD)
394+ let dm = fraction(R((cG - dj)), c, cG)
395+ let dl = H(bN, a)
396+ if (if (if (cX)
397+ then (cG != d)
394398 else false)
395- then (dk > dj)
399+ then (dm > dl)
396400 else false)
397- then throw(((("Price slippage " + toString(dk)) + " > ") + toString(dj)))
401+ then throw(((("Price slippage " + toString(dm)) + " > ") + toString(dl)))
398402 else {
399- let dl = F(de, a)
400- let dm = fraction(df, cE, c)
401- let dn = fraction(dg, c, cE)
402- let do = if ((dm > dg))
403- then $Tuple2(dn, dg)
404- else $Tuple2(df, dm)
405- let dp = do._1
406- let dq = do._2
407- let cg = fraction(dl, dq, cD)
408- $Tuple5(I(cg, a), I(dp, dc), I(dq, dd), cE, dj)
403+ let dn = H(dg, a)
404+ let do = fraction(dh, cG, c)
405+ let dp = fraction(di, c, cG)
406+ let dq = if ((do > di))
407+ then $Tuple2(dp, di)
408+ else $Tuple2(dh, do)
409+ let dr = dq._1
410+ let ds = dq._2
411+ let ci = fraction(dn, ds, cF)
412+ $Tuple5(K(ci, a), K(dr, de), K(ds, df), cG, dl)
409413 }
410414 }
411- let dr = di._1
412- let ds = di._2
413- let dt = di._3
414- let cF = I(di._4, a)
415- let du = I(di._5, a)
416- if ((0 >= dr))
415+ let dt = dk._1
416+ let du = dk._2
417+ let dv = dk._3
418+ let cH = K(dk._4, a)
419+ let dw = K(dk._5, a)
420+ if ((0 >= dt))
417421 then throw("LP <= 0")
418422 else {
419- let dv = if (!(cT))
423+ let dx = if (!(cV))
420424 then 0
421- else dr
422- let dw = (cO - ds)
423- let dx = (cQ - dt)
424- let dy = if (if (cU)
425- then (cX == cY)
425+ else dt
426+ let dy = (cQ - du)
427+ let dz = (cS - dv)
428+ let dA = if (if (cW)
429+ then (cZ == da)
426430 else false)
427- then $Tuple2(cW, 0)
428- else if (if (cU)
429- then (cX == cZ)
431+ then $Tuple2(cY, 0)
432+ else if (if (cW)
433+ then (cZ == db)
430434 else false)
431- then $Tuple2(0, cW)
432- else $Tuple2(ds, dt)
433- let dz = dy._1
434- let dA = dy._2
435- let dB = [IntegerEntry(U(), cF), IntegerEntry(V(height, lastBlock.timestamp), cF), StringEntry(Y(cs, cp), bo(dz, dA, dv, cF, bL, du, height, lastBlock.timestamp, dw, dx))]
436- $Tuple13(dr, dv, cF, cA, cC, de, ct, cy, dB, dw, dx, cP, cR)
435+ then $Tuple2(0, cY)
436+ else $Tuple2(du, dv)
437+ let dB = dA._1
438+ let dC = dA._2
439+ let dD = [IntegerEntry(W(), cH), IntegerEntry(X(height, lastBlock.timestamp), cH), StringEntry(aa(cu, cr), bq(dB, dC, dx, cH, bN, dw, height, lastBlock.timestamp, dy, dz))]
440+ $Tuple13(dt, dx, cH, cC, cE, dg, cv, cA, dD, dy, dz, cR, cT)
437441 }
438442 }
439443
440444
441-func dC (dD,dE,dF) = {
442- let dG = fraction((dD * dE), c, dF)
443- dG
445+func dE (dF) = {
446+ let dG = dF[0]
447+ let dH = dF[1]
448+ let dI = (dG + dH)
449+ if ((dI == e))
450+ then e
451+ else {
452+ let dJ = parseIntValue(aO)
453+ let dK = (dJ * 2)
454+ let cm = fraction(dG, dH, f)
455+ let dL = fraction(cm, i, f)
456+ let dM = fraction(toBigInt(dK), dI, f)
457+ let dN = toBigInt((dK - 1))
458+ func dO (dP) = {
459+ let dQ = fraction(dP, dP, f)
460+ let dR = fraction(dQ, dP, f)
461+ let dS = fraction(dR, f, dL)
462+ fraction((dM + fraction(dS, g, f)), dP, (fraction(dN, dP, f) + fraction(h, dS, f)))
463+ }
464+
465+ func dT (dU,dV) = if (dU._2)
466+ then dU
467+ else {
468+ let dP = dU._1
469+ let dW = dO(dP)
470+ let dX = toInt((dW - value(dP)))
471+ let dY = if ((0 > dX))
472+ then -(dX)
473+ else dX
474+ if ((1 >= dY))
475+ then $Tuple2(dW, true)
476+ else $Tuple2(dW, false)
477+ }
478+
479+ let dZ = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
480+ let ea = {
481+ let eb = dZ
482+ let ec = size(eb)
483+ let ed = $Tuple2(dI, false)
484+ func ee (ef,eg) = if ((eg >= ec))
485+ then ef
486+ else dT(ef, eb[eg])
487+
488+ func eh (ef,eg) = if ((eg >= ec))
489+ then ef
490+ else throw("List size exceeds 15")
491+
492+ eh(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ed, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
493+ }
494+ let dP = ea._1
495+ let ei = ea._2
496+ if (ei)
497+ then dP
498+ else throw(("D calculation error, D = " + toString(dP)))
499+ }
444500 }
445501
446502
447-func dH (dI,dJ,dK) = {
448- let dL = (toBigInt(bD(aW(be))) - dI)
449- let dM = (toBigInt(bD(aW(bf))) - dJ)
450- let dN = (toBigInt(value(assetInfo(bd)).quantity) - dK)
451- let dO = dC(dL, dM, dN)
452- dO
503+func ej (dF,dV,ek) = {
504+ let el = g
505+ let em = dF[if ((dV == 0))
506+ then 1
507+ else 0]
508+ let en = parseBigIntValue(l)
509+ let dJ = (parseBigIntValue(aO) * en)
510+ let dI = em
511+ let dK = (dJ * el)
512+ let eo = (((((ek * ek) / (em * el)) * ek) * en) / (dK * el))
513+ let ep = ((dI + ((ek * en) / dK)) - ek)
514+ func dT (dU,eq) = {
515+ let er = dU
516+ let es = er._1
517+ let ei = er._2
518+ if ((ei != unit))
519+ then dU
520+ else {
521+ let et = (((es * es) + eo) / ((g * es) + ep))
522+ let eu = S((et - value(es)))
523+ if ((f >= eu))
524+ then $Tuple2(et, eq)
525+ else $Tuple2(et, unit)
526+ }
527+ }
528+
529+ let dZ = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
530+ let ev = {
531+ let eb = dZ
532+ let ec = size(eb)
533+ let ed = $Tuple2(ek, unit)
534+ func ee (ef,eg) = if ((eg >= ec))
535+ then ef
536+ else dT(ef, eb[eg])
537+
538+ func eh (ef,eg) = if ((eg >= ec))
539+ then ef
540+ else throw("List size exceeds 15")
541+
542+ eh(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ed, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
543+ }
544+ let es = ev._1
545+ let ei = ev._2
546+ if ((ei != unit))
547+ then es
548+ else throw(("Y calculation error, Y = " + toString(es)))
453549 }
454550
455551
456-func dP (dQ,dR,dK) = {
457- let dL = (bD(aW(be)) + dQ)
458- let dM = (bD(aW(bf)) + dR)
459- let dN = (value(assetInfo(bd)).quantity + dK)
460- let dG = dC(toBigInt(dL), toBigInt(dM), toBigInt(dN))
461- let dS = [IntegerEntry(aj, height), StringEntry(ai, toString(dG))]
462- $Tuple2(dS, dG)
552+func ew (ex,ey,ez) = {
553+ let eA = fraction(dE([ex, ey]), c, ez)
554+ eA
463555 }
464556
465557
466-func dT (dU,dG) = if ((dG >= dU))
467- then true
468- else aI("updated KLp lower than current KLp")
558+func eB (eC,eD,eE) = {
559+ let eF = (toBigInt(bF(aY(bg))) - eC)
560+ let eG = (toBigInt(bF(aY(bh))) - eD)
561+ let eH = (toBigInt(value(assetInfo(bf)).quantity) - eE)
562+ let eI = ew(eF, eG, eH)
563+ eI
564+ }
469565
470566
471-func dV (dW) = {
472- let dX = dW.amount
473- let dY = fraction(dW.amount, dW.price, a)
474- let dZ = if ((dW.orderType == Buy))
475- then $Tuple2(dX, -(dY))
476- else $Tuple2(-(dX), dY)
477- let dQ = dZ._1
478- let dR = dZ._2
479- if (if (if (aN())
567+func eJ (eK,eL,eE) = {
568+ let eF = (bF(aY(bg)) + eK)
569+ let eG = (bF(aY(bh)) + eL)
570+ let eH = (value(assetInfo(bf)).quantity + eE)
571+ let eA = ew(toBigInt(eF), toBigInt(eG), toBigInt(eH))
572+ let eM = [IntegerEntry(al, height), StringEntry(ak, toString(eA))]
573+ $Tuple2(eM, eA)
574+ }
575+
576+
577+func eN (eO,eA) = if ((eA >= eO))
578+ then true
579+ else aK("updated KLp lower than current KLp")
580+
581+
582+func eP (eQ) = {
583+ let eR = eQ.amount
584+ let eS = fraction(eQ.amount, eQ.price, a, FLOOR)
585+ let eT = if ((eQ.orderType == Buy))
586+ then $Tuple2(eR, -(eS))
587+ else $Tuple2(-(eR), eS)
588+ let eK = eT._1
589+ let eL = eT._2
590+ if (if (if (aP())
480591 then true
481- else (bc == p))
592+ else (be == r))
482593 then true
483- else (bc == q))
594+ else (be == s))
484595 then throw("Admin blocked")
485- else if (if ((dW.assetPair.amountAsset != be))
596+ else if (if ((eQ.assetPair.amountAsset != bg))
486597 then true
487- else (dW.assetPair.priceAsset != bf))
598+ else (eQ.assetPair.priceAsset != bh))
488599 then throw("Wr assets")
489600 else {
490- let ea = valueOrErrorMessage(parseBigInt(valueOrErrorMessage(getString(this, ai), aK("dLp is required"))), aK("invalid dLp"))
491- let eb = dP(dQ, dR, 0)
492- let ec = eb._1
493- let ed = eb._2
494- let ee = (ed > ea)
495- ee
601+ let eU = parseBigIntValue(getStringValue(this, ak))
602+ let eV = eJ(eK, eL, 0)
603+ let eW = eV._1
604+ let eX = eV._2
605+ let eY = (eX > eU)
606+ eY
496607 }
497608 }
498609
499610
500-func ef (eg) = if ((size(eg.payments) != 1))
611+func eZ (dV) = if ((size(dV.payments) != 1))
501612 then throw("1 pmnt exp")
502613 else {
503- let eh = value(eg.payments[0])
504- let cq = value(eh.assetId)
505- let cW = eh.amount
506- let di = co(toBase58String(eg.transactionId), toBase58String(cq), cW, eg.caller)
507- let cK = di._1
508- let cL = di._2
509- let cy = parseIntValue(di._9)
510- let cM = di._10
511- if (if (aN())
614+ let fa = value(dV.payments[0])
615+ let cs = value(fa.assetId)
616+ let cY = fa.amount
617+ let dk = cq(toBase58String(dV.transactionId), toBase58String(cs), cY, dV.caller)
618+ let cM = dk._1
619+ let cN = dk._2
620+ let cA = parseIntValue(dk._9)
621+ let cO = dk._10
622+ if (if (aP())
512623 then true
513- else (cy == q))
514- then throw(("Admin blocked: " + toString(cy)))
515- else $Tuple5(cK, cL, cW, cq, cM)
624+ else (cA == s))
625+ then throw(("Admin blocked: " + toString(cA)))
626+ else $Tuple5(cM, cN, cY, cs, cO)
516627 }
517628
518629
519-func ei (ej,aa,ek,el,bL,cT,cU,cV,cW,cX) = {
520- let di = cN(aa, bL, value(ek).amount, value(ek).assetId, value(el).amount, value(el).assetId, ej, (aa == ""), cT, cU, cV, cW, cX)
521- let cy = parseIntValue(di._8)
522- if (if (if (aN())
630+func fb (fc,ac,fd,fe,bN,cV,cW,cX,cY,cZ) = {
631+ let dk = cP(ac, bN, value(fd).amount, value(fd).assetId, value(fe).amount, value(fe).assetId, fc, (ac == ""), cV, cW, cX, cY, cZ)
632+ let cA = parseIntValue(dk._8)
633+ if (if (if (aP())
523634 then true
524- else (cy == o))
635+ else (cA == q))
525636 then true
526- else (cy == q))
527- then throw(("Blocked:" + toString(cy)))
528- else di
637+ else (cA == s))
638+ then throw(("Blocked:" + toString(cA)))
639+ else dk
529640 }
530641
531642
532-func em (en) = {
533- let eo = g
534- let ep = en[0]
535- let eq = en[1]
536- let er = parseBigIntValue(j)
537- let es = (parseBigIntValue(aM) * er)
538- let et = (ep + eq)
539- if ((et == e))
540- then e
541- else {
542- let eu = (es * eo)
543- let ev = (((ep * eq) * eo) * eo)
544- let ew = ((eu * et) / er)
545- let ex = (eu - er)
546- let ey = (eo + f)
547- func ez (eA,eB) = {
548- let eC = eA
549- let eD = eC._1
550- let eE = eC._2
551- if ((eE != unit))
552- then eA
553- else {
554- let eF = (((eD * eD) * eD) / ev)
555- let eG = (((ew + (eF * eo)) * eD) / (((ex * eD) / er) + (ey * eF)))
556- let eH = Q((eG - value(eD)))
557- if ((f >= eH))
558- then $Tuple2(eG, eB)
559- else $Tuple2(eG, unit)
560- }
561- }
562-
563- let eI = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
564- let eJ = {
565- let eK = eI
566- let eL = size(eK)
567- let eM = $Tuple2(et, unit)
568- func eN (eO,eP) = if ((eP >= eL))
569- then eO
570- else ez(eO, eK[eP])
571-
572- func eQ (eO,eP) = if ((eP >= eL))
573- then eO
574- else throw("List size exceeds 15")
575-
576- eQ(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eM, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
577- }
578- let eD = eJ._1
579- let eE = eJ._2
580- if ((eE != unit))
581- then eD
582- else throw(("D calculation error, D = " + toString(eD)))
583- }
584- }
585-
586-
587-func eR (en,eg,eS) = {
588- let eo = g
589- let eT = en[if ((eg == 0))
590- then 1
591- else 0]
592- let er = parseBigIntValue(j)
593- let es = (parseBigIntValue(aM) * er)
594- let et = eT
595- let eu = (es * eo)
596- let eU = (((((eS * eS) / (eT * eo)) * eS) * er) / (eu * eo))
597- let eV = ((et + ((eS * er) / eu)) - eS)
598- func ez (eA,eB) = {
599- let eW = eA
600- let eX = eW._1
601- let eE = eW._2
602- if ((eE != unit))
603- then eA
604- else {
605- let eY = (((eX * eX) + eU) / ((g * eX) + eV))
606- let eZ = Q((eY - value(eX)))
607- if ((f >= eZ))
608- then $Tuple2(eY, eB)
609- else $Tuple2(eY, unit)
610- }
611- }
612-
613- let eI = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
614- let fa = {
615- let eK = eI
616- let eL = size(eK)
617- let eM = $Tuple2(eS, unit)
618- func eN (eO,eP) = if ((eP >= eL))
619- then eO
620- else ez(eO, eK[eP])
621-
622- func eQ (eO,eP) = if ((eP >= eL))
623- then eO
624- else throw("List size exceeds 15")
625-
626- eQ(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eM, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
627- }
628- let eX = fa._1
629- let eE = fa._2
630- if ((eE != unit))
631- then eX
632- else throw(("Y calculation error, Y = " + toString(eX)))
633- }
634-
635-
636-func fb (fc,cq,cs,aa,fd) = {
637- let aY = aQ()
638- let cu = aY[u]
639- let cv = aY[v]
640- let ct = aY[t]
641- let dc = parseIntValue(aY[w])
642- let dd = parseIntValue(aY[x])
643- let dN = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(ct)), "invalid lp asset").quantity)
644- let fe = if ((dN > e))
643+func ff (fg,cs,cu,ac,fh) = {
644+ let ba = aS()
645+ let cw = ba[w]
646+ let cx = ba[x]
647+ let cv = ba[v]
648+ let de = parseIntValue(ba[y])
649+ let df = parseIntValue(ba[z])
650+ let eH = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(cv)), "invalid lp asset").quantity)
651+ let fi = if ((eH > e))
645652 then true
646653 else throw("initial deposit requires all coins")
647- if ((fe == fe))
654+ if ((fi == fi))
648655 then {
649- let cA = bD(cu)
650- let cC = bD(cv)
651- let ff = if ((aa == ""))
652- then $Tuple2(cA, cC)
653- else if ((cq == cu))
654- then if ((fc > cA))
656+ let cC = bF(cw)
657+ let cE = bF(cx)
658+ let fj = if ((ac == ""))
659+ then $Tuple2(cC, cE)
660+ else if ((cs == cw))
661+ then if ((fg > cC))
655662 then throw("invalid payment amount")
656- else $Tuple2((cA - fc), cC)
657- else if ((cq == cv))
658- then if ((fc > cC))
663+ else $Tuple2((cC - fg), cE)
664+ else if ((cs == cx))
665+ then if ((fg > cE))
659666 then throw("invalid payment amount")
660- else $Tuple2(cA, (cC - fc))
667+ else $Tuple2(cC, (cE - fg))
661668 else throw("wrong pmtAssetId")
662- let fg = ff._1
663- let fh = ff._2
664- let fi = if ((cq == cu))
665- then $Tuple2(fc, 0)
666- else if ((cq == cv))
667- then $Tuple2(0, fc)
669+ let fk = fj._1
670+ let fl = fj._2
671+ let fm = if ((cs == cw))
672+ then $Tuple2(fg, 0)
673+ else if ((cs == cx))
674+ then $Tuple2(0, fg)
668675 else throw("invalid payment")
669- let fj = fi._1
670- let fk = fi._2
671- let fl = if (fd)
672- then $Tuple3(cl(fj)._1, cl(fk)._1, cl(fc)._2)
673- else $Tuple3(fj, fk, 0)
674- let fm = fl._1
675- let fn = fl._2
676- let cn = fl._3
677- let fo = (fg + fm)
678- let fp = (fh + fn)
679- let bQ = em([toBigInt(fg), toBigInt(fh)])
680- let bP = em([toBigInt(fo), toBigInt(fp)])
681- let fq = if ((bP > bQ))
676+ let fn = fm._1
677+ let fo = fm._2
678+ let fp = if (fh)
679+ then $Tuple3(cn(fn)._1, cn(fo)._1, cn(fg)._2)
680+ else $Tuple3(fn, fo, 0)
681+ let fq = fp._1
682+ let fr = fp._2
683+ let cp = fp._3
684+ let fs = (fk + fq)
685+ let ft = (fl + fr)
686+ let bS = dE([toBigInt(fk), toBigInt(fl)])
687+ let bR = dE([toBigInt(fs), toBigInt(ft)])
688+ let fu = if ((bR > bS))
682689 then true
683690 else throw()
684- if ((fq == fq))
691+ if ((fu == fu))
685692 then {
686- let fr = fraction(dN, (bP - bQ), bQ)
687- let cF = I(bF(F(fp, dd), F(fo, dc)), a)
688- let dB = [IntegerEntry(U(), cF), IntegerEntry(V(height, lastBlock.timestamp), cF), StringEntry(Y(cs, aa), bo(fj, fk, toInt(fr), cF, 0, 0, height, lastBlock.timestamp, 0, 0))]
689- let fs = fraction(fh, a, fg)
690- let ft = fraction(fc, a, (fs + a))
691- let fu = (fc - ft)
692- let fv = fraction(dN, toBigInt(fu), toBigInt(fh))
693- let fw = toInt(fraction((fr - fv), b, fv))
694- $Tuple4(toInt(fr), dB, cn, fw)
693+ let fv = fraction(eH, (bR - bS), bS)
694+ let cH = K(bH(H(ft, df), H(fs, de)), a)
695+ let dD = [IntegerEntry(W(), cH), IntegerEntry(X(height, lastBlock.timestamp), cH), StringEntry(aa(cu, ac), bq(fn, fo, toInt(fv), cH, 0, 0, height, lastBlock.timestamp, 0, 0))]
696+ let fw = fraction(fl, a, fk)
697+ let fx = fraction(fg, a, (fw + a))
698+ let fy = (fg - fx)
699+ let fz = fraction(eH, toBigInt(fy), toBigInt(fl))
700+ let fA = toInt(fraction((fv - fz), b, fz))
701+ $Tuple4(toInt(fv), dD, cp, fA)
695702 }
696703 else throw("Strict value is not equal to itself.")
697704 }
698705 else throw("Strict value is not equal to itself.")
699706 }
700707
701708
702-func fx (fy,fz,fA,ej,fB,fC) = {
703- let aY = aQ()
704- let ct = aY[t]
705- let cu = aY[u]
706- let cv = aY[v]
707- let fD = parseIntValue(aY[w])
708- let fE = parseIntValue(aY[x])
709- let fF = aY[s]
710- let cs = if ((ej == bn))
711- then fB
712- else ej
713- let eh = value(fA[0])
714- let cq = value(eh.assetId)
715- let cW = eh.amount
716- let dO = dH(toBigInt(0), toBigInt(0), toBigInt(cW))
717- let cp = toBase58String(fC)
718- if ((ct != toBase58String(cq)))
709+func fB (fC,fD,fE,fc,fF,fG) = {
710+ let ba = aS()
711+ let cv = ba[v]
712+ let cw = ba[w]
713+ let cx = ba[x]
714+ let fH = parseIntValue(ba[y])
715+ let fI = parseIntValue(ba[z])
716+ let fJ = ba[u]
717+ let cu = if ((fc == bp))
718+ then fF
719+ else fc
720+ let fa = value(fE[0])
721+ let cs = value(fa.assetId)
722+ let cY = fa.amount
723+ let eI = eB(toBigInt(0), toBigInt(0), toBigInt(cY))
724+ let cr = toBase58String(fG)
725+ if ((cv != toBase58String(cs)))
719726 then throw("Wrong LP")
720727 else {
721- let cA = bD(cu)
722- let cC = bD(cv)
723- let fG = {
724- let fH = invoke(this, "getOneTknV2READONLY", [fy, cW], nil)
725- if ($isInstanceOf(fH, "(Int, Int)"))
726- then fH
727- else throw(($getType(fH) + " couldn't be cast to (Int, Int)"))
728+ let cC = bF(cw)
729+ let cE = bF(cx)
730+ let fK = {
731+ let fL = invoke(this, "getOneTknV2READONLY", [fC, cY], nil)
732+ if ($isInstanceOf(fL, "(Int, Int)"))
733+ then fL
734+ else throw(($getType(fL) + " couldn't be cast to (Int, Int)"))
728735 }
729- if ((fG == fG))
736+ if ((fK == fK))
730737 then {
731- let cn = fG._2
732- let fI = fG._1
733- let fJ = if (if ((fz > 0))
734- then (fz > fI)
738+ let cp = fK._2
739+ let fM = fK._1
740+ let fN = if (if ((fD > 0))
741+ then (fD > fM)
735742 else false)
736- then aI(makeString(["amount to receive is less than ", toString(fz)], ""))
737- else fI
738- let fK = if ((fy == cu))
739- then $Tuple4(fJ, 0, ((cA - fJ) - cn), cC)
740- else if ((fy == cv))
741- then $Tuple4(0, fJ, cA, ((cC - fJ) - cn))
743+ then aK(makeString(["amount to receive is less than ", toString(fD)], ""))
744+ else fM
745+ let fO = if ((fC == cw))
746+ then $Tuple4(fN, 0, ((cC - fN) - cp), cE)
747+ else if ((fC == cx))
748+ then $Tuple4(0, fN, cC, ((cE - fN) - cp))
742749 else throw("invalid out asset id")
743- let fL = fK._1
744- let fM = fK._2
745- let fo = fK._3
746- let fp = fK._4
747- let fN = bF(F(fp, fE), F(fo, fD))
748- let fO = I(fN, a)
749- let fP = if ((fy == "WAVES"))
750+ let fP = fO._1
751+ let fQ = fO._2
752+ let fs = fO._3
753+ let ft = fO._4
754+ let fR = bH(H(ft, fI), H(fs, fH))
755+ let fS = K(fR, a)
756+ let fT = if ((fC == "WAVES"))
750757 then unit
751- else fromBase58String(fy)
752- let fQ = if ((cn > 0))
753- then [ScriptTransfer(aP, cn, fP)]
758+ else fromBase58String(fC)
759+ let fU = if ((cp > 0))
760+ then [ScriptTransfer(aR, cp, fT)]
754761 else nil
755- let cM = ([ScriptTransfer(cs, fJ, fP), StringEntry(ab(toString(cs), cp), bz(fL, fM, cW, fO, height, lastBlock.timestamp)), IntegerEntry(U(), fO), IntegerEntry(V(height, lastBlock.timestamp), fO)] ++ fQ)
756- if ((cM == cM))
762+ let cO = ([ScriptTransfer(cu, fN, fT), StringEntry(ad(toString(cu), cr), bB(fP, fQ, cY, fS, height, lastBlock.timestamp)), IntegerEntry(W(), fS), IntegerEntry(X(height, lastBlock.timestamp), fS)] ++ fU)
763+ if ((cO == cO))
757764 then {
758- let fR = invoke(aL, "burn", [cW], [AttachedPayment(cq, cW)])
759- if ((fR == fR))
765+ let fV = invoke(aN, "burn", [cY], [AttachedPayment(cs, cY)])
766+ if ((fV == fV))
760767 then {
761- let fS = {
762- let fT = if ((this == aP))
768+ let fW = {
769+ let fX = if ((this == aR))
763770 then 0
764- else cn
765- let fU = if ((aU(fy) == be))
771+ else cp
772+ let fY = if ((aW(fC) == bg))
766773 then true
767774 else false
768- if (fU)
769- then $Tuple2(-((fI + fT)), 0)
770- else $Tuple2(0, -((fI + fT)))
775+ if (fY)
776+ then $Tuple2(-((fM + fX)), 0)
777+ else $Tuple2(0, -((fM + fX)))
771778 }
772- let dQ = fS._1
773- let dR = fS._2
774- let fV = dP(dQ, dR, 0)
775- let fW = fV._1
776- let dG = fV._2
777- let fX = dT(dO, dG)
778- if ((fX == fX))
779- then $Tuple2((cM ++ fW), fJ)
779+ let eK = fW._1
780+ let eL = fW._2
781+ let fZ = eJ(eK, eL, 0)
782+ let ga = fZ._1
783+ let eA = fZ._2
784+ let gb = eN(eI, eA)
785+ if ((gb == gb))
786+ then $Tuple2((cO ++ ga), fN)
780787 else throw("Strict value is not equal to itself.")
781788 }
782789 else throw("Strict value is not equal to itself.")
783790 }
784791 else throw("Strict value is not equal to itself.")
785792 }
786793 else throw("Strict value is not equal to itself.")
787794 }
788795 }
789796
790797
791-func fY () = {
792- let aC = getString(S())
793- if ($isInstanceOf(aC, "String"))
798+func gc () = {
799+ let aE = getString(U())
800+ if ($isInstanceOf(aE, "String"))
794801 then {
795- let et = aC
796- fromBase58String(et)
802+ let dI = aE
803+ fromBase58String(dI)
797804 }
798- else if ($isInstanceOf(aC, "Unit"))
805+ else if ($isInstanceOf(aE, "Unit"))
799806 then unit
800807 else throw("Match error")
801808 }
802809
803810
804-func fZ () = {
805- let aC = getString(T())
806- if ($isInstanceOf(aC, "String"))
811+func gd () = {
812+ let aE = getString(V())
813+ if ($isInstanceOf(aE, "String"))
807814 then {
808- let et = aC
809- fromBase58String(et)
815+ let dI = aE
816+ fromBase58String(dI)
810817 }
811- else if ($isInstanceOf(aC, "Unit"))
818+ else if ($isInstanceOf(aE, "Unit"))
812819 then unit
813820 else throw("Match error")
814821 }
815822
816823
817-let ga = throw("Permission denied")
824+let ge = throw("Permission denied")
818825
819-func gb (eg) = {
820- let aC = fY()
821- if ($isInstanceOf(aC, "ByteVector"))
826+func gf (dV) = {
827+ let aE = gc()
828+ if ($isInstanceOf(aE, "ByteVector"))
822829 then {
823- let gc = aC
824- (eg.callerPublicKey == gc)
830+ let gg = aE
831+ (dV.callerPublicKey == gg)
825832 }
826- else if ($isInstanceOf(aC, "Unit"))
827- then (eg.caller == this)
833+ else if ($isInstanceOf(aE, "Unit"))
834+ then (dV.caller == this)
828835 else throw("Match error")
829836 }
830837
831838
832-func gd (eg) = {
833- let aC = fY()
834- if ($isInstanceOf(aC, "ByteVector"))
839+func gh (dV) = {
840+ let aE = gc()
841+ if ($isInstanceOf(aE, "ByteVector"))
835842 then {
836- let gc = aC
837- if ((eg.callerPublicKey == gc))
843+ let gg = aE
844+ if ((dV.callerPublicKey == gg))
838845 then true
839- else ga
846+ else ge
840847 }
841- else if ($isInstanceOf(aC, "Unit"))
842- then if ((eg.caller == this))
848+ else if ($isInstanceOf(aE, "Unit"))
849+ then if ((dV.caller == this))
843850 then true
844- else ga
851+ else ge
845852 else throw("Match error")
846853 }
847854
848855
849-@Callable(eg)
850-func constructor (R) = {
851- let eU = gd(eg)
852- if ((eU == eU))
853- then [StringEntry(R(), R)]
856+@Callable(dV)
857+func constructor (T) = {
858+ let eo = gh(dV)
859+ if ((eo == eo))
860+ then [StringEntry(T(), T)]
854861 else throw("Strict value is not equal to itself.")
855862 }
856863
857864
858865
859-@Callable(eg)
860-func setManager (ge) = {
861- let eU = gd(eg)
862- if ((eU == eU))
866+@Callable(dV)
867+func setManager (gi) = {
868+ let eo = gh(dV)
869+ if ((eo == eo))
863870 then {
864- let gf = fromBase58String(ge)
865- if ((gf == gf))
866- then [StringEntry(T(), ge)]
871+ let gj = fromBase58String(gi)
872+ if ((gj == gj))
873+ then [StringEntry(V(), gi)]
867874 else throw("Strict value is not equal to itself.")
868875 }
869876 else throw("Strict value is not equal to itself.")
870877 }
871878
872879
873880
874-@Callable(eg)
881+@Callable(dV)
875882 func confirmManager () = {
876- let ck = fZ()
877- let gg = if (isDefined(ck))
883+ let cm = gd()
884+ let gk = if (isDefined(cm))
878885 then true
879886 else throw("No pending manager")
880- if ((gg == gg))
887+ if ((gk == gk))
881888 then {
882- let gh = if ((eg.callerPublicKey == value(ck)))
889+ let gl = if ((dV.callerPublicKey == value(cm)))
883890 then true
884891 else throw("You are not pending manager")
885- if ((gh == gh))
886- then [StringEntry(S(), toBase58String(value(ck))), DeleteEntry(T())]
892+ if ((gl == gl))
893+ then [StringEntry(U(), toBase58String(value(cm))), DeleteEntry(V())]
887894 else throw("Strict value is not equal to itself.")
888895 }
889896 else throw("Strict value is not equal to itself.")
890897 }
891898
892899
893900
894-@Callable(eg)
895-func put (gi,gj) = {
896- let gk = bi()
897- let gl = valueOrErrorMessage(addressFromString(gk[A]), "Wr st addr")
898- let gm = valueOrErrorMessage(addressFromString(gk[C]), "Wr sl addr")
899- if ((0 > gi))
901+@Callable(dV)
902+func put (gm,gn) = {
903+ let go = bk()
904+ let gp = valueOrErrorMessage(addressFromString(go[C]), "Wr st addr")
905+ let gq = valueOrErrorMessage(addressFromString(go[E]), "Wr sl addr")
906+ if ((0 > gm))
900907 then throw("Wrong slippage")
901- else if ((size(eg.payments) != 2))
908+ else if ((size(dV.payments) != 2))
902909 then throw("2 pmnts expd")
903910 else {
904- let gn = toBigInt(value(eg.payments[0]).amount)
905- let go = toBigInt(value(eg.payments[1]).amount)
906- let dO = dH(gn, go, toBigInt(0))
907- if ((dO == dO))
911+ let gr = toBigInt(value(dV.payments[0]).amount)
912+ let gs = toBigInt(value(dV.payments[1]).amount)
913+ let eI = eB(gr, gs, toBigInt(0))
914+ if ((eI == eI))
908915 then {
909- let gp = ei(toString(eg.caller), toBase58String(eg.transactionId), AttachedPayment(value(eg.payments[0]).assetId, value(eg.payments[0]).amount), eg.payments[1], gi, true, false, true, 0, "")
910- let dv = gp._2
911- let gq = gp._7
912- let cM = gp._9
913- let dw = gp._10
914- let dx = gp._11
915- let cu = gp._12
916- let cv = gp._13
917- let di = invoke(aL, "emit", [dv], nil)
918- if ((di == di))
916+ let gt = fb(toString(dV.caller), toBase58String(dV.transactionId), AttachedPayment(value(dV.payments[0]).assetId, value(dV.payments[0]).amount), dV.payments[1], gm, true, false, true, 0, "")
917+ let dx = gt._2
918+ let gu = gt._7
919+ let cO = gt._9
920+ let dy = gt._10
921+ let dz = gt._11
922+ let cw = gt._12
923+ let cx = gt._13
924+ let dk = invoke(aN, "emit", [dx], nil)
925+ if ((dk == dk))
919926 then {
920- let gr = {
921- let aC = di
922- if ($isInstanceOf(aC, "Address"))
927+ let gv = {
928+ let aE = dk
929+ if ($isInstanceOf(aE, "Address"))
923930 then {
924- let gs = aC
925- invoke(gs, "emit", [dv], nil)
931+ let gw = aE
932+ invoke(gw, "emit", [dx], nil)
926933 }
927934 else unit
928935 }
929- if ((gr == gr))
936+ if ((gv == gv))
930937 then {
931- let gt = if ((dw > 0))
932- then invoke(gm, "put", nil, [AttachedPayment(cu, dw)])
938+ let gx = if ((dy > 0))
939+ then invoke(gq, "put", nil, [AttachedPayment(cw, dy)])
933940 else nil
934- if ((gt == gt))
941+ if ((gx == gx))
935942 then {
936- let gu = if ((dx > 0))
937- then invoke(gm, "put", nil, [AttachedPayment(cv, dx)])
943+ let gy = if ((dz > 0))
944+ then invoke(gq, "put", nil, [AttachedPayment(cx, dz)])
938945 else nil
939- if ((gu == gu))
946+ if ((gy == gy))
940947 then {
941- let gv = if (gj)
948+ let gz = if (gn)
942949 then {
943- let gw = invoke(gl, "stake", nil, [AttachedPayment(gq, dv)])
944- if ((gw == gw))
950+ let gA = invoke(gp, "stake", nil, [AttachedPayment(gu, dx)])
951+ if ((gA == gA))
945952 then nil
946953 else throw("Strict value is not equal to itself.")
947954 }
948- else [ScriptTransfer(eg.caller, dv, gq)]
949- let gx = dP(0, 0, 0)
950- let fW = gx._1
951- let dG = gx._2
952- let fX = dT(dO, dG)
953- if ((fX == fX))
954- then ((cM ++ gv) ++ fW)
955+ else [ScriptTransfer(dV.caller, dx, gu)]
956+ let gB = eJ(0, 0, 0)
957+ let ga = gB._1
958+ let eA = gB._2
959+ let gb = eN(eI, eA)
960+ if ((gb == gb))
961+ then ((cO ++ gz) ++ ga)
955962 else throw("Strict value is not equal to itself.")
956963 }
957964 else throw("Strict value is not equal to itself.")
958965 }
959966 else throw("Strict value is not equal to itself.")
960967 }
961968 else throw("Strict value is not equal to itself.")
962969 }
963970 else throw("Strict value is not equal to itself.")
964971 }
965972 else throw("Strict value is not equal to itself.")
966973 }
967974 }
968975
969976
970977
971-@Callable(eg)
972-func putOneTknV2 (fz,gj) = {
973- let gy = {
974- let fH = invoke(aL, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
975- if ($isInstanceOf(fH, "Boolean"))
976- then fH
977- else throw(($getType(fH) + " couldn't be cast to Boolean"))
978+@Callable(dV)
979+func putOneTknV2 (fD,gn) = {
980+ let gC = {
981+ let fL = invoke(aN, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
982+ if ($isInstanceOf(fL, "Boolean"))
983+ then fL
984+ else throw(($getType(fL) + " couldn't be cast to Boolean"))
978985 }
979- let gz = if (if (if (aN())
986+ let gD = if (if (if (aP())
980987 then true
981- else (bc == o))
988+ else (be == q))
982989 then true
983- else (bc == q))
990+ else (be == s))
984991 then true
985- else gy
986- let gA = [if (if (!(gz))
992+ else gC
993+ let gE = [if (if (!(gD))
987994 then true
988- else gb(eg))
995+ else gf(dV))
989996 then true
990- else aI("put operation is blocked by admin"), if ((size(eg.payments) == 1))
997+ else aK("put operation is blocked by admin"), if ((size(dV.payments) == 1))
991998 then true
992- else aI("exactly 1 payment are expected")]
993- if ((gA == gA))
999+ else aK("exactly 1 payment are expected")]
1000+ if ((gE == gE))
9941001 then {
995- let aY = aQ()
996- let cu = aY[u]
997- let cv = aY[v]
998- let ct = fromBase58String(aY[t])
999- let fD = parseIntValue(aY[w])
1000- let fE = parseIntValue(aY[x])
1001- let cs = if ((eg.caller == this))
1002- then eg.originCaller
1003- else eg.caller
1004- let eh = value(eg.payments[0])
1005- let cq = toBase58String(value(eh.assetId))
1006- let cW = eh.amount
1007- let gB = fb(cW, cq, toString(cs), toBase58String(eg.transactionId), true)
1008- if ((gB == gB))
1002+ let ba = aS()
1003+ let cw = ba[w]
1004+ let cx = ba[x]
1005+ let cv = fromBase58String(ba[v])
1006+ let fH = parseIntValue(ba[y])
1007+ let fI = parseIntValue(ba[z])
1008+ let cu = if ((dV.caller == this))
1009+ then dV.originCaller
1010+ else dV.caller
1011+ let fa = value(dV.payments[0])
1012+ let cs = toBase58String(value(fa.assetId))
1013+ let cY = fa.amount
1014+ let gF = ff(cY, cs, toString(cu), toBase58String(dV.transactionId), true)
1015+ if ((gF == gF))
10091016 then {
1010- let cn = gB._3
1011- let cM = gB._2
1012- let gC = gB._1
1013- let dv = if (if ((fz > 0))
1014- then (fz > gC)
1017+ let cp = gF._3
1018+ let cO = gF._2
1019+ let gG = gF._1
1020+ let dx = if (if ((fD > 0))
1021+ then (fD > gG)
10151022 else false)
1016- then aI(makeString(["amount to receive is less than ", toString(fz)], ""))
1017- else gC
1018- let gp = invoke(aL, "emit", [dv], nil)
1019- if ((gp == gp))
1023+ then aK(makeString(["amount to receive is less than ", toString(fD)], ""))
1024+ else gG
1025+ let gt = invoke(aN, "emit", [dx], nil)
1026+ if ((gt == gt))
10201027 then {
1021- let gr = {
1022- let aC = gp
1023- if ($isInstanceOf(aC, "Address"))
1028+ let gv = {
1029+ let aE = gt
1030+ if ($isInstanceOf(aE, "Address"))
10241031 then {
1025- let gs = aC
1026- invoke(gs, "emit", [dv], nil)
1032+ let gw = aE
1033+ invoke(gw, "emit", [dx], nil)
10271034 }
10281035 else unit
10291036 }
1030- if ((gr == gr))
1037+ if ((gv == gv))
10311038 then {
1032- let gv = if (gj)
1039+ let gz = if (gn)
10331040 then {
1034- let gw = invoke(bk, "stake", nil, [AttachedPayment(ct, dv)])
1035- if ((gw == gw))
1041+ let gA = invoke(bm, "stake", nil, [AttachedPayment(cv, dx)])
1042+ if ((gA == gA))
10361043 then nil
10371044 else throw("Strict value is not equal to itself.")
10381045 }
1039- else [ScriptTransfer(eg.caller, dv, ct)]
1040- let fQ = if ((cn > 0))
1041- then [ScriptTransfer(aP, cn, fromBase58String(cq))]
1046+ else [ScriptTransfer(dV.caller, dx, cv)]
1047+ let fU = if ((cp > 0))
1048+ then [ScriptTransfer(aR, cp, fromBase58String(cs))]
10421049 else nil
1043- let gD = if ((this == aP))
1050+ let gH = if ((this == aR))
10441051 then $Tuple2(0, 0)
10451052 else {
1046- let gE = if ((eh.assetId == be))
1053+ let gI = if ((fa.assetId == bg))
10471054 then true
10481055 else false
1049- if (gE)
1050- then $Tuple2(-(cn), 0)
1051- else $Tuple2(0, -(cn))
1056+ if (gI)
1057+ then $Tuple2(-(cp), 0)
1058+ else $Tuple2(0, -(cp))
10521059 }
1053- let dQ = gD._1
1054- let dR = gD._2
1055- let gF = dP(dQ, dR, 0)
1056- let fW = gF._1
1057- let dG = gF._2
1058- $Tuple2((((cM ++ gv) ++ fQ) ++ fW), dv)
1060+ let eK = gH._1
1061+ let eL = gH._2
1062+ let gJ = eJ(eK, eL, 0)
1063+ let ga = gJ._1
1064+ let eA = gJ._2
1065+ $Tuple2((((cO ++ gz) ++ fU) ++ ga), dx)
10591066 }
10601067 else throw("Strict value is not equal to itself.")
10611068 }
10621069 else throw("Strict value is not equal to itself.")
10631070 }
10641071 else throw("Strict value is not equal to itself.")
10651072 }
10661073 else throw("Strict value is not equal to itself.")
10671074 }
10681075
10691076
10701077
1071-@Callable(eg)
1072-func putForFree (gG) = if ((0 > gG))
1078+@Callable(dV)
1079+func putForFree (gK) = if ((0 > gK))
10731080 then throw("Wrong slpg")
1074- else if ((size(eg.payments) != 2))
1081+ else if ((size(dV.payments) != 2))
10751082 then throw("2 pmnts expd")
10761083 else {
1077- let gH = ei(toString(eg.caller), toBase58String(eg.transactionId), AttachedPayment(value(eg.payments[0]).assetId, value(eg.payments[0]).amount), eg.payments[1], gG, false, false, true, 0, "")
1078- let cM = gH._9
1079- let gn = toBigInt(value(eg.payments[0]).amount)
1080- let go = toBigInt(value(eg.payments[1]).amount)
1081- let dO = dH(gn, go, toBigInt(0))
1082- if ((dO == dO))
1084+ let gL = fb(toString(dV.caller), toBase58String(dV.transactionId), AttachedPayment(value(dV.payments[0]).assetId, value(dV.payments[0]).amount), dV.payments[1], gK, false, false, true, 0, "")
1085+ let cO = gL._9
1086+ let gr = toBigInt(value(dV.payments[0]).amount)
1087+ let gs = toBigInt(value(dV.payments[1]).amount)
1088+ let eI = eB(gr, gs, toBigInt(0))
1089+ if ((eI == eI))
10831090 then {
1084- let gI = dP(0, 0, 0)
1085- let fW = gI._1
1086- let dG = gI._2
1087- let fX = dT(dO, dG)
1088- if ((fX == fX))
1089- then (cM ++ fW)
1091+ let gM = eJ(0, 0, 0)
1092+ let ga = gM._1
1093+ let eA = gM._2
1094+ let gb = eN(eI, eA)
1095+ if ((gb == gb))
1096+ then (cO ++ ga)
10901097 else throw("Strict value is not equal to itself.")
10911098 }
10921099 else throw("Strict value is not equal to itself.")
10931100 }
10941101
10951102
10961103
1097-@Callable(eg)
1104+@Callable(dV)
10981105 func get () = {
1099- let di = ef(eg)
1100- let gJ = di._1
1101- let cL = di._2
1102- let cW = di._3
1103- let cq = di._4
1104- let cM = di._5
1105- let eV = invoke(aL, "burn", [cW], [AttachedPayment(cq, cW)])
1106- if ((eV == eV))
1106+ let dk = eZ(dV)
1107+ let gN = dk._1
1108+ let cN = dk._2
1109+ let cY = dk._3
1110+ let cs = dk._4
1111+ let cO = dk._5
1112+ let ep = invoke(aN, "burn", [cY], [AttachedPayment(cs, cY)])
1113+ if ((ep == ep))
11071114 then {
1108- let dO = dH(toBigInt(0), toBigInt(0), toBigInt(cW))
1109- let gK = dP(-(gJ), -(cL), 0)
1110- let fW = gK._1
1111- let dG = gK._2
1112- let fX = dT(dO, dG)
1113- if ((fX == fX))
1114- then (cM ++ fW)
1115+ let eI = eB(toBigInt(0), toBigInt(0), toBigInt(cY))
1116+ let gO = eJ(-(gN), -(cN), 0)
1117+ let ga = gO._1
1118+ let eA = gO._2
1119+ let gb = eN(eI, eA)
1120+ if ((gb == gb))
1121+ then (cO ++ ga)
11151122 else throw("Strict value is not equal to itself.")
11161123 }
11171124 else throw("Strict value is not equal to itself.")
11181125 }
11191126
11201127
11211128
1122-@Callable(eg)
1123-func getOneTknV2 (fy,fz) = {
1124- let gy = {
1125- let fH = invoke(aL, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1126- if ($isInstanceOf(fH, "Boolean"))
1127- then fH
1128- else throw(($getType(fH) + " couldn't be cast to Boolean"))
1129+@Callable(dV)
1130+func getOneTknV2 (fC,fD) = {
1131+ let gC = {
1132+ let fL = invoke(aN, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1133+ if ($isInstanceOf(fL, "Boolean"))
1134+ then fL
1135+ else throw(($getType(fL) + " couldn't be cast to Boolean"))
11291136 }
1130- let gL = if (if (aN())
1137+ let gP = if (if (aP())
11311138 then true
1132- else (bc == q))
1139+ else (be == s))
11331140 then true
1134- else gy
1135- let gA = [if (if (!(gL))
1141+ else gC
1142+ let gE = [if (if (!(gP))
11361143 then true
1137- else gb(eg))
1144+ else gf(dV))
11381145 then true
1139- else aI("get operation is blocked by admin"), if ((size(eg.payments) == 1))
1146+ else aK("get operation is blocked by admin"), if ((size(dV.payments) == 1))
11401147 then true
1141- else aI("exactly 1 payment are expected")]
1142- if ((gA == gA))
1148+ else aK("exactly 1 payment are expected")]
1149+ if ((gE == gE))
11431150 then {
1144- let gM = fx(fy, fz, eg.payments, eg.caller, eg.originCaller, eg.transactionId)
1145- let cM = gM._1
1146- let fJ = gM._2
1147- $Tuple2(cM, fJ)
1151+ let gQ = fB(fC, fD, dV.payments, dV.caller, dV.originCaller, dV.transactionId)
1152+ let cO = gQ._1
1153+ let fN = gQ._2
1154+ $Tuple2(cO, fN)
11481155 }
11491156 else throw("Strict value is not equal to itself.")
11501157 }
11511158
11521159
11531160
1154-@Callable(eg)
1161+@Callable(dV)
11551162 func refreshDLp () = {
1156- let gN = valueOrElse(getInteger(aj), 0)
1157- let gO = if (((height - gN) >= am))
1163+ let gR = valueOrElse(getInteger(al), 0)
1164+ let gS = if (((height - gR) >= ao))
11581165 then unit
1159- else aI(makeString([toString(am), " blocks have not passed since the previous call"], ""))
1160- if ((gO == gO))
1166+ else aK(makeString([toString(ao), " blocks have not passed since the previous call"], ""))
1167+ if ((gS == gS))
11611168 then {
1162- let ea = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, ai), "0")), aK("invalid dLp"))
1163- let gP = dP(0, 0, 0)
1164- let gQ = gP._1
1165- let dG = gP._2
1166- let dS = if ((ea != dG))
1167- then gQ
1168- else aI("nothing to refresh")
1169- $Tuple2(dS, toString(dG))
1169+ let eU = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, ak), "0")), aM("invalid dLp"))
1170+ let gT = eJ(0, 0, 0)
1171+ let gU = gT._1
1172+ let eA = gT._2
1173+ let eM = if ((eU != eA))
1174+ then gU
1175+ else aK("nothing to refresh")
1176+ $Tuple2(eM, toString(eA))
11701177 }
11711178 else throw("Strict value is not equal to itself.")
11721179 }
11731180
11741181
11751182
1176-@Callable(eg)
1177-func getOneTknV2READONLY (fy,gR) = {
1178- let aY = aQ()
1179- let cu = aY[u]
1180- let cv = aY[v]
1181- let ct = aY[t]
1182- let en = [toBigInt(bD(cu)), toBigInt(bD(cv))]
1183- let dF = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(ct)), "invalid lp asset").quantity)
1184- let bQ = em(en)
1185- let bP = (bQ - fraction(toBigInt(gR), bQ, dF))
1186- let gS = if ((fy == cu))
1183+@Callable(dV)
1184+func getOneTknV2READONLY (fC,gV) = {
1185+ let ba = aS()
1186+ let cw = ba[w]
1187+ let cx = ba[x]
1188+ let cv = ba[v]
1189+ let dF = [toBigInt(bF(cw)), toBigInt(bF(cx))]
1190+ let ez = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(cv)), "invalid lp asset").quantity)
1191+ let bS = dE(dF)
1192+ let bR = (bS - fraction(toBigInt(gV), bS, ez))
1193+ let gW = if ((fC == cw))
11871194 then 0
1188- else if ((fy == cv))
1195+ else if ((fC == cx))
11891196 then 1
11901197 else throw("invalid out asset id")
1191- let gT = eR(en, gS, bP)
1192- let gU = (en[gS] - gT)
1193- let gV = max([0, toInt((gU - f))])
1194- let gW = cl(gV)
1195- let fI = gW._1
1196- let cn = gW._2
1197- $Tuple2(nil, $Tuple2(fI, cn))
1198+ let gX = ej(dF, gW, bR)
1199+ let gY = (dF[gW] - gX)
1200+ let gZ = max([0, toInt((gY - f))])
1201+ let ha = cn(gZ)
1202+ let fM = ha._1
1203+ let cp = ha._2
1204+ $Tuple2(nil, $Tuple2(fM, cp))
11981205 }
11991206
12001207
12011208
1202-@Callable(eg)
1203-func getOneTknV2WithBonusREADONLY (fy,gR) = {
1204- let aY = aQ()
1205- let cu = aY[u]
1206- let cv = aY[v]
1207- let ct = aY[t]
1208- let cA = bD(cu)
1209- let cC = bD(cv)
1210- let gX = {
1211- let fH = invoke(this, "getOneTknV2READONLY", [fy, gR], nil)
1212- if ($isInstanceOf(fH, "(Int, Int)"))
1213- then fH
1214- else throw(($getType(fH) + " couldn't be cast to (Int, Int)"))
1209+@Callable(dV)
1210+func getOneTknV2WithBonusREADONLY (fC,gV) = {
1211+ let ba = aS()
1212+ let cw = ba[w]
1213+ let cx = ba[x]
1214+ let cv = ba[v]
1215+ let cC = bF(cw)
1216+ let cE = bF(cx)
1217+ let hb = {
1218+ let fL = invoke(this, "getOneTknV2READONLY", [fC, gV], nil)
1219+ if ($isInstanceOf(fL, "(Int, Int)"))
1220+ then fL
1221+ else throw(($getType(fL) + " couldn't be cast to (Int, Int)"))
12151222 }
1216- let fI = gX._1
1217- let cn = gX._2
1218- let di = co("", ct, gR, this)
1219- let cK = di._1
1220- let cL = di._2
1221- let gY = (cK + cL)
1222- let fw = if ((gY == 0))
1223- then if ((fI == 0))
1223+ let fM = hb._1
1224+ let cp = hb._2
1225+ let dk = cq("", cv, gV, this)
1226+ let cM = dk._1
1227+ let cN = dk._2
1228+ let hc = (cM + cN)
1229+ let fA = if ((hc == 0))
1230+ then if ((fM == 0))
12241231 then 0
12251232 else throw("bonus calculation error")
1226- else fraction((fI - gY), a, gY)
1227- $Tuple2(nil, $Tuple3(fI, cn, fw))
1233+ else fraction((fM - hc), a, hc)
1234+ $Tuple2(nil, $Tuple3(fM, cp, fA))
12281235 }
12291236
12301237
12311238
1232-@Callable(eg)
1233-func getNoLess (gZ,ha) = {
1234- let di = ef(eg)
1235- let cK = di._1
1236- let cL = di._2
1237- let cW = di._3
1238- let cq = di._4
1239- let cM = di._5
1240- if ((gZ > cK))
1241- then throw(((("Failed: " + toString(cK)) + " < ") + toString(gZ)))
1242- else if ((ha > cL))
1243- then throw(((("Failed: " + toString(cL)) + " < ") + toString(ha)))
1239+@Callable(dV)
1240+func getNoLess (hd,he) = {
1241+ let dk = eZ(dV)
1242+ let cM = dk._1
1243+ let cN = dk._2
1244+ let cY = dk._3
1245+ let cs = dk._4
1246+ let cO = dk._5
1247+ if ((hd > cM))
1248+ then throw(((("Failed: " + toString(cM)) + " < ") + toString(hd)))
1249+ else if ((he > cN))
1250+ then throw(((("Failed: " + toString(cN)) + " < ") + toString(he)))
12441251 else {
1245- let dO = dH(toBigInt(0), toBigInt(0), toBigInt(cW))
1246- let hb = invoke(aL, "burn", [cW], [AttachedPayment(cq, cW)])
1247- if ((hb == hb))
1252+ let eI = eB(toBigInt(0), toBigInt(0), toBigInt(cY))
1253+ let hf = invoke(aN, "burn", [cY], [AttachedPayment(cs, cY)])
1254+ if ((hf == hf))
12481255 then {
1249- let hc = dP(-(cK), -(cL), 0)
1250- let fW = hc._1
1251- let dG = hc._2
1252- let fX = dT(dO, dG)
1253- if ((fX == fX))
1254- then (cM ++ fW)
1256+ let hg = eJ(-(cM), -(cN), 0)
1257+ let ga = hg._1
1258+ let eA = hg._2
1259+ let gb = eN(eI, eA)
1260+ if ((gb == gb))
1261+ then (cO ++ ga)
12551262 else throw("Strict value is not equal to itself.")
12561263 }
12571264 else throw("Strict value is not equal to itself.")
12581265 }
12591266 }
12601267
12611268
12621269
1263-@Callable(eg)
1264-func unstakeAndGet (cm) = {
1265- let hd = if ((size(eg.payments) != 0))
1270+@Callable(dV)
1271+func unstakeAndGet (co) = {
1272+ let hh = if ((size(dV.payments) != 0))
12661273 then throw("No pmnts expd")
12671274 else true
1268- if ((hd == hd))
1275+ if ((hh == hh))
12691276 then {
1270- let cc = aQ()
1271- let he = bi()
1272- let gq = fromBase58String(cc[t])
1273- let hf = valueOrErrorMessage(addressFromString(he[A]), "Wr st addr")
1274- let dO = dH(toBigInt(0), toBigInt(0), toBigInt(0))
1275- let hg = invoke(hf, "unstake", [toBase58String(gq), cm], nil)
1276- if ((hg == hg))
1277+ let ce = aS()
1278+ let hi = bk()
1279+ let gu = fromBase58String(ce[v])
1280+ let hj = valueOrErrorMessage(addressFromString(hi[C]), "Wr st addr")
1281+ let eI = eB(toBigInt(0), toBigInt(0), toBigInt(0))
1282+ let hk = invoke(hj, "unstake", [toBase58String(gu), co], nil)
1283+ if ((hk == hk))
12771284 then {
1278- let di = co(toBase58String(eg.transactionId), toBase58String(gq), cm, eg.caller)
1279- let cK = di._1
1280- let cL = di._2
1281- let cy = parseIntValue(di._9)
1282- let cM = di._10
1283- let hh = if (if (aN())
1285+ let dk = cq(toBase58String(dV.transactionId), toBase58String(gu), co, dV.caller)
1286+ let cM = dk._1
1287+ let cN = dk._2
1288+ let cA = parseIntValue(dk._9)
1289+ let cO = dk._10
1290+ let hl = if (if (aP())
12841291 then true
1285- else (cy == q))
1286- then throw(("Blocked: " + toString(cy)))
1292+ else (cA == s))
1293+ then throw(("Blocked: " + toString(cA)))
12871294 else true
1288- if ((hh == hh))
1295+ if ((hl == hl))
12891296 then {
1290- let hi = invoke(aL, "burn", [cm], [AttachedPayment(gq, cm)])
1291- if ((hi == hi))
1297+ let hm = invoke(aN, "burn", [co], [AttachedPayment(gu, co)])
1298+ if ((hm == hm))
12921299 then {
1293- let hj = dP(-(cK), -(cL), 0)
1294- let fW = hj._1
1295- let dG = hj._2
1296- let fX = dT(dO, dG)
1297- if ((fX == fX))
1298- then (cM ++ fW)
1300+ let hn = eJ(-(cM), -(cN), 0)
1301+ let ga = hn._1
1302+ let eA = hn._2
1303+ let gb = eN(eI, eA)
1304+ if ((gb == gb))
1305+ then (cO ++ ga)
12991306 else throw("Strict value is not equal to itself.")
13001307 }
13011308 else throw("Strict value is not equal to itself.")
13021309 }
13031310 else throw("Strict value is not equal to itself.")
13041311 }
13051312 else throw("Strict value is not equal to itself.")
13061313 }
13071314 else throw("Strict value is not equal to itself.")
13081315 }
13091316
13101317
13111318
1312-@Callable(eg)
1313-func unstakeAndGetNoLess (hk,hl,ha) = {
1314- let gL = if (aN())
1319+@Callable(dV)
1320+func unstakeAndGetNoLess (ho,hp,he) = {
1321+ let gP = if (aP())
13151322 then true
1316- else (bc == q)
1317- let gA = [if (!(gL))
1323+ else (be == s)
1324+ let gE = [if (!(gP))
13181325 then true
1319- else throw("get operation is blocked by admin"), if ((size(eg.payments) == 0))
1326+ else throw("get operation is blocked by admin"), if ((size(dV.payments) == 0))
13201327 then true
13211328 else throw("no payments are expected")]
1322- if ((gA == gA))
1329+ if ((gE == gE))
13231330 then {
1324- let dO = dH(toBigInt(0), toBigInt(0), toBigInt(0))
1325- let hg = invoke(bk, "unstake", [toBase58String(bd), hk], nil)
1326- if ((hg == hg))
1331+ let eI = eB(toBigInt(0), toBigInt(0), toBigInt(0))
1332+ let hk = invoke(bm, "unstake", [toBase58String(bf), ho], nil)
1333+ if ((hk == hk))
13271334 then {
1328- let hm = co(toBase58String(eg.transactionId), toBase58String(bd), hk, eg.caller)
1329- let cK = hm._1
1330- let cL = hm._2
1331- let cM = hm._10
1332- let hn = [if ((cK >= hl))
1335+ let hq = cq(toBase58String(dV.transactionId), toBase58String(bf), ho, dV.caller)
1336+ let cM = hq._1
1337+ let cN = hq._2
1338+ let cO = hq._10
1339+ let hr = [if ((cM >= hp))
13331340 then true
1334- else throw(makeString(["amount asset amount to receive is less than ", toString(hl)], "")), if ((cL >= ha))
1341+ else throw(makeString(["amount asset amount to receive is less than ", toString(hp)], "")), if ((cN >= he))
13351342 then true
1336- else throw(makeString(["price asset amount to receive is less than ", toString(ha)], ""))]
1337- if ((hn == hn))
1343+ else throw(makeString(["price asset amount to receive is less than ", toString(he)], ""))]
1344+ if ((hr == hr))
13381345 then {
1339- let hb = invoke(aL, "burn", [hk], [AttachedPayment(bd, hk)])
1340- if ((hb == hb))
1346+ let hf = invoke(aN, "burn", [ho], [AttachedPayment(bf, ho)])
1347+ if ((hf == hf))
13411348 then {
1342- let ho = dP(-(cK), -(cL), 0)
1343- let fW = ho._1
1344- let dG = ho._2
1345- let fX = dT(dO, dG)
1346- if ((fX == fX))
1347- then (cM ++ fW)
1349+ let hs = eJ(-(cM), -(cN), 0)
1350+ let ga = hs._1
1351+ let eA = hs._2
1352+ let gb = eN(eI, eA)
1353+ if ((gb == gb))
1354+ then (cO ++ ga)
13481355 else throw("Strict value is not equal to itself.")
13491356 }
13501357 else throw("Strict value is not equal to itself.")
13511358 }
13521359 else throw("Strict value is not equal to itself.")
13531360 }
13541361 else throw("Strict value is not equal to itself.")
13551362 }
13561363 else throw("Strict value is not equal to itself.")
13571364 }
13581365
13591366
13601367
1361-@Callable(eg)
1362-func unstakeAndGetOneTknV2 (hk,fy,fz) = {
1363- let gy = {
1364- let fH = invoke(aL, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1365- if ($isInstanceOf(fH, "Boolean"))
1366- then fH
1367- else throw(($getType(fH) + " couldn't be cast to Boolean"))
1368+@Callable(dV)
1369+func unstakeAndGetOneTknV2 (ho,fC,fD) = {
1370+ let gC = {
1371+ let fL = invoke(aN, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1372+ if ($isInstanceOf(fL, "Boolean"))
1373+ then fL
1374+ else throw(($getType(fL) + " couldn't be cast to Boolean"))
13681375 }
1369- let gL = if (if (aN())
1376+ let gP = if (if (aP())
13701377 then true
1371- else (bc == q))
1378+ else (be == s))
13721379 then true
1373- else gy
1374- let gA = [if (if (!(gL))
1380+ else gC
1381+ let gE = [if (if (!(gP))
13751382 then true
1376- else gb(eg))
1383+ else gf(dV))
13771384 then true
1378- else aI("get operation is blocked by admin"), if ((size(eg.payments) == 0))
1385+ else aK("get operation is blocked by admin"), if ((size(dV.payments) == 0))
13791386 then true
1380- else aI("no payments are expected")]
1381- if ((gA == gA))
1387+ else aK("no payments are expected")]
1388+ if ((gE == gE))
13821389 then {
1383- let cc = aQ()
1384- let he = bi()
1385- let gq = fromBase58String(cc[t])
1386- let hf = valueOrErrorMessage(addressFromString(he[A]), "Wr st addr")
1387- let hg = invoke(hf, "unstake", [toBase58String(gq), hk], nil)
1388- if ((hg == hg))
1390+ let ce = aS()
1391+ let hi = bk()
1392+ let gu = fromBase58String(ce[v])
1393+ let hj = valueOrErrorMessage(addressFromString(hi[C]), "Wr st addr")
1394+ let hk = invoke(hj, "unstake", [toBase58String(gu), ho], nil)
1395+ if ((hk == hk))
13891396 then {
1390- let hp = fx(fy, fz, [AttachedPayment(gq, hk)], eg.caller, eg.originCaller, eg.transactionId)
1391- let cM = hp._1
1392- let fJ = hp._2
1393- $Tuple2(cM, fJ)
1397+ let ht = fB(fC, fD, [AttachedPayment(gu, ho)], dV.caller, dV.originCaller, dV.transactionId)
1398+ let cO = ht._1
1399+ let fN = ht._2
1400+ $Tuple2(cO, fN)
13941401 }
13951402 else throw("Strict value is not equal to itself.")
13961403 }
13971404 else throw("Strict value is not equal to itself.")
13981405 }
13991406
14001407
14011408
1402-@Callable(eg)
1403-func putOneTknV2WithBonusREADONLY (hq,hr) = {
1404- let aY = aQ()
1405- let cu = aY[u]
1406- let cv = aY[v]
1407- let ct = aY[t]
1408- let hs = fb(hq, hr, "", "", true)
1409- let fr = hs._1
1410- let cM = hs._2
1411- let cn = hs._3
1412- let fw = hs._4
1413- $Tuple2(nil, $Tuple3(fr, cn, fw))
1409+@Callable(dV)
1410+func putOneTknV2WithBonusREADONLY (hu,hv) = {
1411+ let ba = aS()
1412+ let cw = ba[w]
1413+ let cx = ba[x]
1414+ let cv = ba[v]
1415+ let hw = ff(hu, hv, "", "", true)
1416+ let fv = hw._1
1417+ let cO = hw._2
1418+ let cp = hw._3
1419+ let fA = hw._4
1420+ $Tuple2(nil, $Tuple3(fv, cp, fA))
14141421 }
14151422
14161423
14171424
1418-@Callable(eg)
1419-func putOneTknV2WithoutTakeFeeREADONLY (hq,hr) = {
1420- let aY = aQ()
1421- let cu = aY[u]
1422- let cv = aY[v]
1423- let ct = aY[t]
1424- let ht = fb(hq, hr, "", "", false)
1425- let fr = ht._1
1426- let cM = ht._2
1427- let cn = ht._3
1428- let fw = ht._4
1429- $Tuple2(nil, $Tuple3(fr, cn, fw))
1425+@Callable(dV)
1426+func putOneTknV2WithoutTakeFeeREADONLY (hu,hv) = {
1427+ let ba = aS()
1428+ let cw = ba[w]
1429+ let cx = ba[x]
1430+ let cv = ba[v]
1431+ let hx = ff(hu, hv, "", "", false)
1432+ let fv = hx._1
1433+ let cO = hx._2
1434+ let cp = hx._3
1435+ let fA = hx._4
1436+ $Tuple2(nil, $Tuple3(fv, cp, fA))
14301437 }
14311438
14321439
14331440
1434-@Callable(eg)
1435-func activate (hu,hv) = if ((toString(eg.caller) != toString(aL)))
1441+@Callable(dV)
1442+func activate (hy,hz) = if ((toString(dV.caller) != toString(aN)))
14361443 then throw("denied")
1437- else $Tuple2([StringEntry(ac(), hu), StringEntry(ad(), hv)], "success")
1444+ else $Tuple2([StringEntry(ae(), hy), StringEntry(af(), hz)], "success")
14381445
14391446
14401447
1441-@Callable(eg)
1442-func setS (hw,hh) = if ((toString(eg.caller) != aE(this, af())))
1443- then ga
1444- else [StringEntry(hw, hh)]
1448+@Callable(dV)
1449+func setS (hA,hl) = if ((toString(dV.caller) != aG(this, ah())))
1450+ then ge
1451+ else [StringEntry(hA, hl)]
14451452
14461453
14471454
1448-@Callable(eg)
1449-func setI (hw,hh) = if ((toString(eg.caller) != aE(this, af())))
1450- then ga
1451- else [IntegerEntry(hw, hh)]
1455+@Callable(dV)
1456+func setI (hA,hl) = if ((toString(dV.caller) != aG(this, ah())))
1457+ then ge
1458+ else [IntegerEntry(hA, hl)]
14521459
14531460
14541461
1455-@Callable(eg)
1456-func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aQ())
1462+@Callable(dV)
1463+func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aS())
14571464
14581465
14591466
1460-@Callable(eg)
1461-func getAccBalanceWrapperREADONLY (bE) = $Tuple2(nil, bD(bE))
1467+@Callable(dV)
1468+func getAccBalanceWrapperREADONLY (bG) = $Tuple2(nil, bF(bG))
14621469
14631470
14641471
1465-@Callable(eg)
1466-func calcPricesWrapperREADONLY (bW,bX,cb) = {
1467- let hx = ca(bW, bX, cb)
1468- $Tuple2(nil, [toString(hx[0]), toString(hx[1]), toString(hx[2])])
1472+@Callable(dV)
1473+func calcPricesWrapperREADONLY (bY,bZ,cd) = {
1474+ let hB = cc(bY, bZ, cd)
1475+ $Tuple2(nil, [toString(hB[0]), toString(hB[1]), toString(hB[2])])
14691476 }
14701477
14711478
14721479
1473-@Callable(eg)
1474-func fromX18WrapperREADONLY (J,hy) = $Tuple2(nil, I(parseBigIntValue(J), hy))
1480+@Callable(dV)
1481+func fromX18WrapperREADONLY (L,hC) = $Tuple2(nil, K(parseBigIntValue(L), hC))
14751482
14761483
14771484
1478-@Callable(eg)
1479-func toX18WrapperREADONLY (G,H) = $Tuple2(nil, toString(F(G, H)))
1485+@Callable(dV)
1486+func toX18WrapperREADONLY (I,J) = $Tuple2(nil, toString(H(I, J)))
14801487
14811488
14821489
1483-@Callable(eg)
1484-func calcPriceBigIntWrapperREADONLY (bG,bH) = $Tuple2(nil, toString(bF(parseBigIntValue(bG), parseBigIntValue(bH))))
1490+@Callable(dV)
1491+func calcPriceBigIntWrapperREADONLY (bI,bJ) = $Tuple2(nil, toString(bH(parseBigIntValue(bI), parseBigIntValue(bJ))))
14851492
14861493
14871494
1488-@Callable(eg)
1489-func estimatePutOperationWrapperREADONLY (cp,bL,cO,cP,cQ,cR,hz,cS,cT) = $Tuple2(nil, cN(cp, bL, cO, cP, cQ, cR, hz, cS, cT, true, false, 0, ""))
1495+@Callable(dV)
1496+func estimatePutOperationWrapperREADONLY (cr,bN,cQ,cR,cS,cT,hD,cU,cV) = $Tuple2(nil, cP(cr, bN, cQ, cR, cS, cT, hD, cU, cV, true, false, 0, ""))
14901497
14911498
14921499
1493-@Callable(eg)
1494-func estimateGetOperationWrapperREADONLY (cp,hA,cr,hz) = {
1495- let di = co(cp, hA, cr, addressFromStringValue(hz))
1496- $Tuple2(nil, $Tuple10(di._1, di._2, di._3, di._4, di._5, di._6, di._7, toString(di._8), di._9, di._10))
1500+@Callable(dV)
1501+func estimateGetOperationWrapperREADONLY (cr,hE,ct,hD) = {
1502+ let dk = cq(cr, hE, ct, addressFromStringValue(hD))
1503+ $Tuple2(nil, $Tuple10(dk._1, dk._2, dk._3, dk._4, dk._5, dk._6, dk._7, toString(dk._8), dk._9, dk._10))
14971504 }
14981505
14991506
15001507
1501-@Callable(eg)
1502-func getFeeREADONLY () = $Tuple2(nil, ah)
1508+@Callable(dV)
1509+func getFeeREADONLY () = $Tuple2(nil, aj)
15031510
15041511
1505-@Verifier(hB)
1506-func hC () = {
1507- let hD = {
1508- let aC = fY()
1509- if ($isInstanceOf(aC, "ByteVector"))
1512+@Verifier(hF)
1513+func hG () = {
1514+ let hH = {
1515+ let aE = gc()
1516+ if ($isInstanceOf(aE, "ByteVector"))
15101517 then {
1511- let gc = aC
1512- gc
1518+ let gg = aE
1519+ gg
15131520 }
1514- else if ($isInstanceOf(aC, "Unit"))
1515- then hB.senderPublicKey
1521+ else if ($isInstanceOf(aE, "Unit"))
1522+ then hF.senderPublicKey
15161523 else throw("Match error")
15171524 }
1518- let aC = hB
1519- if ($isInstanceOf(aC, "Order"))
1525+ let aE = hF
1526+ if ($isInstanceOf(aE, "Order"))
15201527 then {
1521- let dW = aC
1522- let hE = aO()
1523- let hF = dV(dW)
1524- let hG = sigVerify(dW.bodyBytes, dW.proofs[0], dW.senderPublicKey)
1525- let hH = sigVerify(dW.bodyBytes, dW.proofs[1], hE)
1526- if (if (if (hF)
1527- then hG
1528+ let eQ = aE
1529+ let hI = aQ()
1530+ let hJ = eP(eQ)
1531+ let hK = sigVerify(eQ.bodyBytes, eQ.proofs[0], eQ.senderPublicKey)
1532+ let hL = sigVerify(eQ.bodyBytes, eQ.proofs[1], hI)
1533+ if (if (if (hJ)
1534+ then hK
15281535 else false)
1529- then hH
1536+ then hL
15301537 else false)
15311538 then true
1532- else ax(hF, hG, hH)
1539+ else az(hJ, hK, hL)
15331540 }
1534- else if ($isInstanceOf(aC, "SetScriptTransaction"))
1541+ else if ($isInstanceOf(aE, "SetScriptTransaction"))
15351542 then {
1536- let et = aC
1537- let hI = blake2b256(value(et.script))
1538- let hJ = fromBase64String(value(getString(aL, av())))
1539- let hK = scriptHash(this)
1540- if (if ((hJ == hI))
1541- then (hK != hI)
1543+ let dI = aE
1544+ let hM = blake2b256(value(dI.script))
1545+ let hN = fromBase64String(value(getString(aN, ax())))
1546+ let hO = scriptHash(this)
1547+ if (if ((hN == hM))
1548+ then (hO != hM)
15421549 else false)
15431550 then true
1544- else sigVerify(hB.bodyBytes, hB.proofs[0], hD)
1551+ else sigVerify(hF.bodyBytes, hF.proofs[0], hH)
15451552 }
1546- else sigVerify(hB.bodyBytes, hB.proofs[0], hD)
1553+ else sigVerify(hF.bodyBytes, hF.proofs[0], hH)
15471554 }
15481555

github/deemru/w8io/026f985 
533.32 ms