tx · DGLnr9HHyEP5TbNxs9aFAs11PYvwRbK1aeahi8N8b1qP

3MtP3m8hWMxYcyDxXB6n299KrsLLyT8ehni:  -0.03500000 Waves

2023.02.08 11:04 [2440377] smart account 3MtP3m8hWMxYcyDxXB6n299KrsLLyT8ehni > SELF 0.00000000 Waves

{ "type": 13, "id": "DGLnr9HHyEP5TbNxs9aFAs11PYvwRbK1aeahi8N8b1qP", "fee": 3500000, "feeAssetId": null, "timestamp": 1675843429980, "version": 1, "sender": "3MtP3m8hWMxYcyDxXB6n299KrsLLyT8ehni", "senderPublicKey": "BRyVaCURUMe7ssUbXucteig1g44bGwWirJQzugKahUQ1", "proofs": [ "2y2UigGCvTBQmDqRWE484MFtnxFu5m2cKSpZYsZmBCMJEGBVc8vJH72mwe9pFL8Kxi9SmdCudivCtx4KLnwDarD5" ], "script": "base64:BgL2IwgCEgQKAgEEEgYKBAEEAQgSAwoBCBIDCgEIEgASBAoCAQQSBAoCAQQSAwoBARIAEgQKAggBEgQKAggBEgQKAggBEgQKAgEBEgMKAQESBQoDAQEBEgUKAwEIARIECgIBCBIECgIBCBIECgIICBIECgIICBIECgIIARIAEgMKAQgSBQoDAQEBEgQKAggBEgQKAgEBEgQKAggIEgsKCQgBAQIBAggEBBIGCgQICAEIIgZzY2FsZTgiDHNjYWxlOEJpZ0ludCIHc2NhbGUxOCIKemVyb0JpZ0ludCIEYmlnMCIEYmlnMSIEYmlnMiIKc2xpcHBhZ2U0RCILd2F2ZXNTdHJpbmciBUFtdWx0IgVEY29udiIDU0VQIgVFTVBUWSIKUG9vbEFjdGl2ZSIKUG9vbFB1dERpcyIOUG9vbE1hdGNoZXJEaXMiDFBvb2xTaHV0ZG93biIOaWR4UG9vbEFkZHJlc3MiCWlkeFBvb2xTdCIJaWR4TFBBc0lkIglpZHhBbUFzSWQiCWlkeFByQXNJZCILaWR4QW10QXNEY20iDWlkeFByaWNlQXNEY20iC2lkeElBbXRBc0lkIg1pZHhJUHJpY2VBc0lkIg9pZHhGYWN0U3Rha0NudHIiEmlkeEZhY3RvcnlSZXN0Q250ciIQaWR4RmFjdFNsaXBwQ250ciIRaWR4RmFjdEd3eFJld0NudHIiCmZlZURlZmF1bHQiAnQxIgdvcmlnVmFsIg1vcmlnU2NhbGVNdWx0IgJmMSIDdmFsIg9yZXN1bHRTY2FsZU11bHQiAnRzIgNhbXQiCHJlc1NjYWxlIghjdXJTY2FsZSIDYWJzIglhYnNCaWdJbnQiAmZjIgNtcGsiBHBtcGsiAnBsIgJwaCIBaCIBdCIDcGF1IgJ1YSIEdHhJZCIDZ2F1IgJhYSICcGEiA2FtcCIDYWRhIgxzd2FwQ29udHJhY3QiBGZjZmciBG10cGsiAnBjIgZpQW10QXMiBWlQckFzIgNtYmEiBWJBU3RyIgNhcHMiHGtleUFsbG93ZWRMcFN0YWJsZVNjcmlwdEhhc2giFmtleUZlZUNvbGxlY3RvckFkZHJlc3MiA3RvZSIDb3JWIgZzZW5kclYiBm1hdGNoViIDc3RyIgckbWF0Y2gwIgZ2YWxTdHIiBHN0cmYiBGFkZHIiA2tleSIEaW50ZiIIdGhyb3dFcnIiA21zZyIDZmNhIgVpbkZlZSIBQCIGb3V0RmVlIgFBIgNpZ3MiAm1wIhNmZWVDb2xsZWN0b3JBZGRyZXNzIgNncGMiBWFtdEFzIgdwcmljZUFzIghpUHJpY2VBcyIMcGFyc2VBc3NldElkIgVpbnB1dCIPYXNzZXRJZFRvU3RyaW5nIg9wYXJzZVBvb2xDb25maWciCnBvb2xDb25maWciEHBvb2xDb25maWdQYXJzZWQiCyR0MDY5NTI3MTM4Ig5jZmdQb29sQWRkcmVzcyINY2ZnUG9vbFN0YXR1cyIMY2ZnTHBBc3NldElkIhBjZmdBbW91bnRBc3NldElkIg9jZmdQcmljZUFzc2V0SWQiFmNmZ0Ftb3VudEFzc2V0RGVjaW1hbHMiFWNmZ1ByaWNlQXNzZXREZWNpbWFscyIDZ2ZjIg1mYWN0b3J5Q29uZmlnIg9zdGFraW5nQ29udHJhY3QiD3NsaXBhZ2VDb250cmFjdCILZ3d4Q29udHJhY3QiDHJlc3RDb250cmFjdCIRZGF0YVB1dEFjdGlvbkluZm8iDWluQW10QXNzZXRBbXQiD2luUHJpY2VBc3NldEFtdCIIb3V0THBBbXQiBXByaWNlIgpzbGlwQnlVc2VyIgxzbGlwcGFnZVJlYWwiCHR4SGVpZ2h0Igt0eFRpbWVzdGFtcCIMc2xpcGFnZUFtQW10IgxzbGlwYWdlUHJBbXQiEWRhdGFHZXRBY3Rpb25JbmZvIg5vdXRBbXRBc3NldEFtdCIQb3V0UHJpY2VBc3NldEFtdCIHaW5McEFtdCINZ2V0QWNjQmFsYW5jZSIHYXNzZXRJZCIEY3BiaSIIcHJBbXRYMTgiCGFtQW10WDE4IgN2YWQiAkExIgJBMiIIc2xpcHBhZ2UiBGRpZmYiBHBhc3MiAnZkIgJEMSICRDAiBHNscGciBGZhaWwiA3BjcCIKYW1Bc3NldERjbSIKcHJBc3NldERjbSIFYW1BbXQiBXByQW10IgthbXRBc0FtdFgxOCIKcHJBc0FtdFgxOCIKY2FsY1ByaWNlcyIFbHBBbXQiA2NmZyIIYW10QXNEY20iB3ByQXNEY20iCHByaWNlWDE4IghscEFtdFgxOCINbHBQckluQW1Bc1gxOCINbHBQckluUHJBc1gxOCIPY2FsY3VsYXRlUHJpY2VzIgFwIgd0YWtlRmVlIgZhbW91bnQiA2ZlZSIJZmVlQW1vdW50IgNlZ28iBnR4SWQ1OCIKcG10QXNzZXRJZCIIcG10THBBbXQiC3VzZXJBZGRyZXNzIgRscElkIgRhbUlkIgRwcklkIgVhbURjbSIFcHJEY20iA3N0cyIHbHBFbWlzcyIJYW1CYWxhbmNlIgxhbUJhbGFuY2VYMTgiCXByQmFsYW5jZSIMcHJCYWxhbmNlWDE4IgtjdXJQcmljZVgxOCIIY3VyUHJpY2UiC3BtdExwQW10WDE4IgpscEVtaXNzWDE4IgtvdXRBbUFtdFgxOCILb3V0UHJBbXRYMTgiCG91dEFtQW10IghvdXRQckFtdCIFc3RhdGUiA2VwbyIHaW5BbUFtdCIGaW5BbUlkIgdpblByQW10IgZpblBySWQiBmlzRXZhbCIGZW1pdExwIgppc09uZUFzc2V0IhB2YWxpZGF0ZVNsaXBwYWdlIgZwbXRBbXQiBXBtdElkIgdhbUlkU3RyIgdwcklkU3RyIglpbkFtSWRTdHIiCWluUHJJZFN0ciIGYW10RGNtIghwcmljZURjbSIEbHBFbSIPaW5BbUFzc2V0QW10WDE4Ig9pblByQXNzZXRBbXRYMTgiDHVzZXJQcmljZVgxOCIBciILc2xpcHBhZ2VYMTgiD3NsaXBwYWdlUmVhbFgxOCINbHBFbWlzc2lvblgxOCIKcHJWaWFBbVgxOCIKYW1WaWFQclgxOCIMZXhwZWN0ZWRBbXRzIhFleHBBbXRBc3NldEFtdFgxOCITZXhwUHJpY2VBc3NldEFtdFgxOCIJY2FsY0xwQW10Ig5jYWxjQW1Bc3NldFBtdCIOY2FsY1ByQXNzZXRQbXQiDHNsaXBwYWdlQ2FsYyIJZW1pdExwQW10IgZhbURpZmYiBnByRGlmZiINJHQwMTc2MDUxNzk1MCIKd3JpdGVBbUFtdCIKd3JpdGVQckFtdCILY29tbW9uU3RhdGUiA21vYSIFb3JkZXIiB2FtdEFzSWQiBnByQXNJZCIPYWNjQW10QXNCYWxhbmNlIg5hY2NQckFzQmFsYW5jZSIKb3JBbXRBc3NldCIKb3JBbXRBc1N0ciIJb3JQckFzc2V0IglvclByQXNTdHIiCm9yZGVyUHJpY2UiDmNhc3RPcmRlclByaWNlIhFpc09yZGVyUHJpY2VWYWxpZCICY2ciAWkiA3BtdCICY3AiBmNhbGxlciIHYW1Bc1BtdCIHcHJBc1BtdCIEZ2V0RCICeHAiAW4iA3hwMCIDeHAxIgphUHJlY2lzaW9uIgFhIgFzIgNhbm4iC3hwMF94cDFfbl9uIhBhbm5fc19hUHJlY2lzaW9uIg5hbm5fYVByZWNpc2lvbiICbjEiBGNhbGMiA2FjYyIDY3VyIg0kdDAyMjUwMjIyNTIyIgFkIgVmb3VuZCICZHAiBWROZXh0IgVkRGlmZiIDYXJyIg0kdDAyMjk0MzIyOTkwIgIkbCICJHMiBSRhY2MwIgUkZjBfMSICJGEiAiRpIgUkZjBfMiIFZ2V0WUQiAUQiAXgiAWMiAWIiDSR0MDIzNDkwMjM1MTAiAXkiBXlOZXh0IgV5RGlmZiINJHQwMjM4MTcyMzg2NCINY2FsY1B1dE9uZVRrbiIJcG10QW10UmF3Igt3aXRoVGFrZUZlZSIPbHBBc3NldEVtaXNzaW9uIg1jaGVjaEVtaXNzaW9uIg0kdDAyNDY0NzI1MTA5IgxhbUJhbGFuY2VPbGQiDHByQmFsYW5jZU9sZCINJHQwMjUxMTUyNTI5MSILYW1BbW91bnRSYXciC3ByQW1vdW50UmF3Ig0kdDAyNTI5NTI1NTQ5IghhbUFtb3VudCIIcHJBbW91bnQiDGFtQmFsYW5jZU5ldyIMcHJCYWxhbmNlTmV3IgZjaGVja0QiCGxwQW1vdW50Ig5wb29sUHJvcG9ydGlvbiIPYW1vdW50QXNzZXRQYXJ0Ig5wcmljZUFzc2V0UGFydCIJbHBBbXRCb3RoIgVib251cyITZ2V0T25lVGtuVjJJbnRlcm5hbCIKb3V0QXNzZXRJZCIMbWluT3V0QW1vdW50IghwYXltZW50cyIMb3JpZ2luQ2FsbGVyIg10cmFuc2FjdGlvbklkIgphbURlY2ltYWxzIgpwckRlY2ltYWxzIgpwb29sU3RhdHVzIg0kdDAyNzU1MTI3NjYyIgh0b3RhbEdldCILdG90YWxBbW91bnQiDSR0MDI3ODUyMjgxNTkiBW91dEFtIgVvdXRQciIIY3VyUHJYMTgiBWN1clByIhFvdXRBc3NldElkT3JXYXZlcyIQc2VuZEZlZVRvTWF0Y2hlciIEYnVybiIBbSICcG0iAnBkIglpc01hbmFnZXIiAnBrIgJtbSIEZ2V0WSIJaXNSZXZlcnNlIhNwb29sQW1vdW50SW5CYWxhbmNlIg0kdDAzMDI5MTMwMzExIg0kdDAzMDY0MjMwNjg5Ig1jbGVhbkFtb3VudEluIg0kdDAzMDkxMDMxNTA2Ighhc3NldE91dCICZHkiC3RvdGFsR2V0UmF3IgVuZXdYcCIEbmV3RCIMYW1vdW50T3V0TWluIglhZGRyZXNzVG8iBmNoZWNrcyIHYXNzZXRJbiINJHQwMzI4NTczMzI1MSIIY2hlY2tNaW4iF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5IgJjbSIDaHBtIgNjcG0iBHNsaXAiCWF1dG9TdGFrZSIHZmFjdENmZyILc3Rha2luZ0NudHIiCHNsaXBDbnRyIgFlIglscEFzc2V0SWQiAmVsIgZsZWdhY3kiAnNhIgJzcCIIbHBUcm5zZnIiAnNzIiBpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZCINaXNQdXREaXNhYmxlZCINJHQwMzg2NTgzODgxNiIHZXN0aW1MUCIHbWF4U2xwZyIGZXN0UHV0IglvdXRBbXRBbXQiDWlzR2V0RGlzYWJsZWQiDSR0MDQxNDM4NDE1OTMiDWxwQXNzZXRBbW91bnQiCmxwRW1pc3Npb24iBWluZGV4IgRuZXdZIg0kdDA0MjQ2MzQyNTE4Ig0kdDA0Mjg2MzQyOTc4Ig5zdW1PZkdldEFzc2V0cyISbm9MZXNzVGhlbkFtdEFzc2V0IhRub0xlc3NUaGVuUHJpY2VBc3NldCIUYnVybkxQQXNzZXRPbkZhY3RvcnkiDWNoZWNrUGF5bWVudHMiCmZhY3RvcnlDZmciB3N0YWtpbmciCnVuc3Rha2VJbnYiAXYiBWJ1cm5BIg11bnN0YWtlQW1vdW50IhVub0xlc3NUaGVuQW1vdW50QXNzZXQiA3JlcyIMY2hlY2tBbW91bnRzIg0kdDA0NjgxNjQ3MDA0IhBwYXltZW50QW1vdW50UmF3Ig5wYXltZW50QXNzZXRJZCINJHQwNDcyNjM0NzM2NiINJHQwNDc2NDU0Nzc0OSIIYW10QXNTdHIiB3ByQXNTdHIiAWsiAnByIgxyZXNTY2FsZU11bHQiB3VzckFkZHIiB3BtdEFzSWQiAnR4IgZ2ZXJpZnki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AAJhRwkA/AcEBQJhRQIRZ2V0T3V0RmVlUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJhRwIDSW50BQJhRwkAAgEJAKwCAgkAAwEFAmFHAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQAAmFJCQECYXkCBQR0aGlzCQECYWUAAQJhSgAJAQt2YWx1ZU9yRWxzZQIJAJsIAgUCYUUJAQJhbwAHAQJhSwAJANkEAQkBAmF5AgUCYUUJAQJhaQAAAmFMCQERQGV4dHJOYXRpdmUoMTA2MikBCQECYXkCBQJhRQkBAmFxAAECYU0ABAJhTgkBAmF5AgUEdGhpcwkBAmFjAAQCYU8JAQJheQIFBHRoaXMJAQJhZAAEAmFQCQECYUICBQJhRQkBAmFtAQUCYU8EAmFrCQECYUICBQJhRQkBAmFtAQUCYU4JALUJAgkBAmF5AgUCYUUJAQJhagIJAKQDAQUCYWsJAKQDAQUCYVAFAWwBAmFRAQJhUgMJAAACBQJhUgUBaQUEdW5pdAkA2QQBBQJhUgECYVMBAmFSAwkAAAIFAmFSBQR1bml0BQFpCQDYBAEJAQV2YWx1ZQEFAmFSAQJhVAECYVUJAJkKBwkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCBQJhVQUBcgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmFVBQFzCQDZBAEJAJEDAgUCYVUFAXQJAQJhUQEJAJEDAgUCYVUFAXUJAQJhUQEJAJEDAgUCYVUFAXYJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJhVQUBdwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmFVBQF4AAJhVgkBAmFUAQkBAmFNAAACYVcFAmFWAAJhWAgFAmFXAl8xAAJhWQgFAmFXAl8yAAJhWggFAmFXAl8zAAJiYQgFAmFXAl80AAJiYggFAmFXAl81AAJiYwgFAmFXAl82AAJiZAgFAmFXAl83AQJiZQAJALUJAgkBAmF5AgUCYUUJAQJhaAAFAWwAAmJmCQECYmUAAAJiZwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCYmYFAUECIEludmFsaWQgc3Rha2luZyBjb250cmFjdCBhZGRyZXNzAAJiaAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCYmYFAUMCIEludmFsaWQgc2xpcGFnZSBjb250cmFjdCBhZGRyZXNzAAJiaQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCYmYFAUQCHEludmFsaWQgZ3d4IGNvbnRyYWN0IGFkZHJlc3MAAmJqCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJiZgUBQgIcSW52YWxpZCBnd3ggY29udHJhY3QgYWRkcmVzcwECYmsKAmJsAmJtAmJuAmJvAmJwAmJxAmJyAmJzAmJ0AmJ1CQC5CQIJAMwIAgIUJWQlZCVkJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJibAkAzAgCCQCkAwEFAmJtCQDMCAIJAKQDAQUCYm4JAMwIAgkApAMBBQJibwkAzAgCCQCkAwEFAmJwCQDMCAIJAKQDAQUCYnEJAMwIAgkApAMBBQJicgkAzAgCCQCkAwEFAmJzCQDMCAIJAKQDAQUCYnQJAMwIAgkApAMBBQJidQUDbmlsBQFsAQJidgYCYncCYngCYnkCYm8CYnICYnMJALkJAgkAzAgCAgwlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJidwkAzAgCCQCkAwEFAmJ4CQDMCAIJAKQDAQUCYnkJAMwIAgkApAMBBQJibwkAzAgCCQCkAwEFAmJyCQDMCAIJAKQDAQUCYnMFA25pbAUBbAECYnoBAmJBAwkAAAIFAmJBAgVXQVZFUwgJAO8HAQUEdGhpcwlhdmFpbGFibGUJAPAHAgUEdGhpcwkA2QQBBQJiQQECYkICAmJDAmJECQC8AgMFAmJDBQFjBQJiRAECYkUDAmJGAmJHAmJIBAJiSQkAvAIDCQC4AgIFAmJGBQJiRwUBYgUCYkcEAmJKCQC/AgIJALgCAgUCYkgJAQFQAQUCYkkFAWQDCQEBIQEFAmJKCQACAQkArAICAgpCaWcgc2xwZzogCQCmAwEFAmJJCQCUCgIFAmJKCQCZAwEJAMwIAgUCYkYJAMwIAgUCYkcFA25pbAECYksDAmJMAmJNAmJOBAJiSQkAvAIDBQJiTQUBYgUCYkwEAmJPCQC/AgIFAmJOBQJiSQMDBQJiTwYJAL8CAgUCYk0FAmJMCQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkApgMBBQJiTQIBIAkApgMBBQJiTAIBIAkApgMBBQJiSQIBIAkApgMBBQJiTgUCYk8BAmJQBAJiUQJiUgJiUwJiVAQCYlUJAQFGAgUCYlMFAmJRBAJiVgkBAUYCBQJiVAUCYlIJAQJiQgIFAmJWBQJiVQECYlcDAmJTAmJUAmJYBAJiWQkBAmFNAAQCYloJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiWQUBdwQCY2EJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiWQUBeAQCY2IJAQJiUAQFAmJaBQJjYQUCYlMFAmJUBAJiRAkBAUYCBQJiUwUCYloEAmJDCQEBRgIFAmJUBQJjYQQCY2MJAQFGAgUCYlgFAWEEAmNkCQECYkICBQJiRAUCY2MEAmNlCQECYkICBQJiQwUCY2MJAMwIAgUCY2IJAMwIAgUCY2QJAMwIAgUCY2UFA25pbAECY2YDAmJTAmJUAmJYBAJjZwkBAmJXAwUCYlMFAmJUBQJiWAkAzAgCCQEBSQIJAJEDAgUCY2cAAAUBYQkAzAgCCQEBSQIJAJEDAgUCY2cAAQUBYQkAzAgCCQEBSQIJAJEDAgUCY2cAAgUBYQUDbmlsAQJjaAICY2kCY2oEAmNrAwkAAAIFAmNqAAAAAAkAawMFAmNpBQJjagUBYQkAlAoCCQBlAgUCY2kFAmNrBQJjawECY2wEAmNtAmNuAmNvAmNwBAJiWQkBAmFNAAQCY3EJAJEDAgUCYlkFAXQEAmNyCQCRAwIFAmJZBQF1BAJjcwkAkQMCBQJiWQUBdgQCY3QJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiWQUBdwQCY3UJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiWQUBeAQCY3YJAJEDAgUCYlkFAXMEAmN3CAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEJANkEAQUCY3ECC1dyb25nIExQIGlkCHF1YW50aXR5AwkBAiE9AgUCY3EFAmNuCQACAQIPV3JvbmcgcG10IGFzc2V0BAJjeAkBAmJ6AQUCY3IEAmN5CQEBRgIFAmN4BQJjdAQCY3oJAQJiegEFAmNzBAJjQQkBAUYCBQJjegUCY3UEAmNCCQECYkICBQJjQQUCY3kEAmNDCQEBSQIFAmNCBQFhBAJjRAkBAUYCBQJjbwUBYQQCY0UJAQFGAgUCY3cFAWEEAmNGCQC8AgMFAmN5BQJjRAUCY0UEAmNHCQC8AgMFAmNBBQJjRAUCY0UEAmNICQEBSQIFAmNGBQJjdAQCY0kJAQFJAgUCY0cFAmN1BAJjSgMJAAACBQJjbQIABQNuaWwJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCY3AFAmNIAwkAAAIFAmNyAgVXQVZFUwUEdW5pdAkA2QQBBQJjcgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJjcAUCY0kDCQAAAgUCY3MCBVdBVkVTBQR1bml0CQDZBAEFAmNzCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhYgIJAKUIAQUCY3AFAmNtCQECYnYGBQJjSAUCY0kFAmNvBQJjQwUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVUABQJjQwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVYCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJjQwUDbmlsCQCcCgoFAmNIBQJjSQUCY3IFAmNzBQJjeAUCY3oFAmN3BQJjQgUCY3YFAmNKAQJjSw0CY20CYkgCY0wCY00CY04CY08CY3ACY1ACY1ECY1ICY1MCY1QCY1UEAmJZCQECYU0ABAJjcQkA2QQBCQCRAwIFAmJZBQF0BAJjVgkAkQMCBQJiWQUBdQQCY1cJAJEDAgUCYlkFAXYEAmNYCQCRAwIFAmJZBQF5BAJjWQkAkQMCBQJiWQUBegQCY1oJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiWQUBdwQCZGEJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiWQUBeAQCY3YJAJEDAgUCYlkFAXMEAmRiCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFAmNxAghXciBscCBhcwhxdWFudGl0eQQCY3gDBQJjUAkBAmJ6AQUCY1YDAwUCY1IJAAACBQJjVQUCY1YHCQBlAgkBAmJ6AQUCY1YFAmNUAwUCY1IJAQJiegEFAmNWCQBlAgkBAmJ6AQUCY1YFAmNMBAJjegMFAmNQCQECYnoBBQJjVwMDBQJjUgkAAAIFAmNVBQJjVwcJAGUCCQECYnoBBQJjVwUCY1QDBQJjUgkBAmJ6AQUCY1cJAGUCCQECYnoBBQJjVwUCY04EAmRjCQEBRgIFAmNMBQJjWgQCZGQJAQFGAgUCY04FAmRhBAJkZQkBAmJCAgUCZGQFAmRjBAJjeQkBAUYCBQJjeAUCY1oEAmNBCQEBRgIFAmN6BQJkYQQCZGYDCQAAAgUCZGIAAAQCY0IFAWQEAmRnBQFkBAJjYwkAdgYJALkCAgUCZGMFAmRkAAAJALYCAQAFAAEAAAUERE9XTgkAlwoFCQEBSQIFAmNjBQFhCQEBSQIFAmRjBQJjWgkBAUkCBQJkZAUCZGEJAQJiQgIJALcCAgUCY0EFAmRkCQC3AgIFAmN5BQJkYwUCZGcEAmNCCQECYkICBQJjQQUCY3kEAmRoCQC8AgMJAQFQAQkAuAICBQJjQgUCZGUFAWMFAmNCBAJkZwkBAUYCBQJiSAUBYQMDAwUCY1MJAQIhPQIFAmNCBQFkBwkAvwICBQJkaAUCZGcHCQACAQkArAICCQCsAgIJAKwCAgIPUHJpY2Ugc2xpcHBhZ2UgCQCmAwEFAmRoAgMgPiAJAKYDAQUCZGcEAmRpCQEBRgIFAmRiBQFhBAJkagkAvAIDBQJkYwUCY0IFAWMEAmRrCQC8AgMFAmRkBQFjBQJjQgQCZGwDCQC/AgIFAmRqBQJkZAkAlAoCBQJkawUCZGQJAJQKAgUCZGMFAmRqBAJkbQgFAmRsAl8xBAJkbggFAmRsAl8yBAJjYwkAvAIDBQJkaQUCZG4FAmNBCQCXCgUJAQFJAgUCY2MFAWEJAQFJAgUCZG0FAmNaCQEBSQIFAmRuBQJkYQUCY0IFAmRnBAJkbwgFAmRmAl8xBAJkcAgFAmRmAl8yBAJkcQgFAmRmAl8zBAJjQwkBAUkCCAUCZGYCXzQFAWEEAmRyCQEBSQIIBQJkZgJfNQUBYQMJAGcCAAAFAmRvCQACAQIHTFAgPD0gMAQCZHMDCQEBIQEFAmNRAAAFAmRvBAJkdAkAZQIFAmNMBQJkcAQCZHUJAGUCBQJjTgUCZHEEAmR2AwMFAmNSCQAAAgUCY1UFAmNWBwkAlAoCBQJjVAAAAwMFAmNSCQAAAgUCY1UFAmNXBwkAlAoCAAAFAmNUCQCUCgIFAmRwBQJkcQQCZHcIBQJkdgJfMQQCZHgIBQJkdgJfMgQCZHkJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFVAAUCY0MJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFWAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCY0MJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVkCBQJjcAUCY20JAQJiawoFAmR3BQJkeAUCZHMFAmNDBQJiSAUCZHIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmR0BQJkdQUDbmlsCQCfCg0FAmRvBQJkcwUCY0MFAmN4BQJjegUCZGIFAmNxBQJjdgUCZHkFAmR0BQJkdQUCY00FAmNPAQJkegECZEEEAmJZCQECYU0ABAJkQgkAkQMCBQJiWQUBdQQCZEMJAJEDAgUCYlkFAXYEAmN2CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYlkFAXMEAmJaCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYlkFAXcEAmNhCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYlkFAXgEAmRECQECYnoBBQJkQgQCZEUJAQJiegEFAmRDBAJjQgMJAAACCAUCZEEJb3JkZXJUeXBlBQNCdXkJAQJiUAQFAmJaBQJjYQkAZAIFAmRECAUCZEEGYW1vdW50BQJkRQkBAmJQBAUCYloFAmNhCQBlAgUCZEQIBQJkQQZhbW91bnQFAmRFBAJjQwkBAUkCBQJjQgUBYQMDAwkBAmFKAAYJAAACBQJjdgUBcAYJAAACBQJjdgUBcQkAAgECDUFkbWluIGJsb2NrZWQEAmRGCAgFAmRBCWFzc2V0UGFpcgthbW91bnRBc3NldAQCZEcDCQAAAgUCZEYFBHVuaXQCBVdBVkVTCQDYBAEJAQV2YWx1ZQEFAmRGBAJkSAgIBQJkQQlhc3NldFBhaXIKcHJpY2VBc3NldAQCZEkDCQAAAgUCZEgFBHVuaXQCBVdBVkVTCQDYBAEJAQV2YWx1ZQEFAmRIAwMJAQIhPQIFAmRHBQJkQgYJAQIhPQIFAmRJBQJkQwkAAgECCVdyIGFzc2V0cwQCZEoIBQJkQQVwcmljZQQCZGEJAGsDBQFhBQJjYQUCYloEAmRLCQEBTAMFAmRKBQFhBQJkYQQCZEwDCQAAAggFAmRBCW9yZGVyVHlwZQUDQnV5CQBnAgUCY0MFAmRLCQBnAgUCZEsFAmNDBgECZE0BAmROAwkBAiE9AgkAkAMBCAUCZE4IcGF5bWVudHMAAQkAAgECCjEgcG1udCBleHAEAmRPCQEFdmFsdWUBCQCRAwIIBQJkTghwYXltZW50cwAABAJjbgkBBXZhbHVlAQgFAmRPB2Fzc2V0SWQEAmNUCAUCZE8GYW1vdW50BAJkZgkBAmNsBAkA2AQBCAUCZE4NdHJhbnNhY3Rpb25JZAkA2AQBBQJjbgUCY1QIBQJkTgZjYWxsZXIEAmNICAUCZGYCXzEEAmNJCAUCZGYCXzIEAmN2CQENcGFyc2VJbnRWYWx1ZQEIBQJkZgJfOQQCY0oIBQJkZgNfMTADAwkBAmFKAAYJAAACBQJjdgUBcQkAAgEJAKwCAgIPQWRtaW4gYmxvY2tlZDogCQCkAwEFAmN2CQCXCgUFAmNIBQJjSQUCY1QFAmNuBQJjSgECZFAKAmRRAmFhAmRSAmRTAmJIAmNRAmNSAmNTAmNUAmNVBAJkZgkBAmNLDQUCYWEFAmJICAkBBXZhbHVlAQUCZFIGYW1vdW50CAkBBXZhbHVlAQUCZFIHYXNzZXRJZAgJAQV2YWx1ZQEFAmRTBmFtb3VudAgJAQV2YWx1ZQEFAmRTB2Fzc2V0SWQFAmRRCQAAAgUCYWECAAUCY1EFAmNSBQJjUwUCY1QFAmNVBAJjdgkBDXBhcnNlSW50VmFsdWUBCAUCZGYCXzgDAwMJAQJhSgAGCQAAAgUCY3YFAW8GCQAAAgUCY3YFAXEJAAIBCQCsAgICCEJsb2NrZWQ6CQCkAwEFAmN2BQJkZgECZFQBAmRVBAJkVgUBZwQCZFcJAJEDAgUCZFUAAAQCZFgJAJEDAgUCZFUAAQQCZFkJAKcDAQUBagQCZFoJALkCAgkApwMBBQJhSQUCZFkEAmVhCQC3AgIFAmRXBQJkWAMJAAACBQJlYQUBZQUBZQQCZWIJALkCAgUCZFoFAmRWBAJlYwkAuQICCQC5AgIJALkCAgUCZFcFAmRYBQJkVgUCZFYEAmVkCQC6AgIJALkCAgUCZWIFAmVhBQJkWQQCZWUJALgCAgUCZWIFAmRZBAJlZgkAtwICBQJkVgUBZgoBAmVnAgJlaAJlaQQCZWoFAmVoBAJlawgFAmVqAl8xBAJlbAgFAmVqAl8yAwkBAiE9AgUCZWwFBHVuaXQFAmVoBAJlbQkAugICCQC5AgIJALkCAgUCZWsFAmVrBQJlawUCZWMEAmVuCQC6AgIJALkCAgkAtwICBQJlZAkAuQICBQJlbQUCZFYFAmVrCQC3AgIJALoCAgkAuQICBQJlZQUCZWsFAmRZCQC5AgIFAmVmBQJlbQQCZW8JAQFRAQkAuAICBQJlbgkBBXZhbHVlAQUCZWsDCQDAAgIFAWYFAmVvCQCUCgIFAmVuBQJlaQkAlAoCBQJlbgUEdW5pdAQCZXAJAMwIAgAACQDMCAIAAQkAzAgCAAIJAMwIAgADCQDMCAIABAkAzAgCAAUJAMwIAgAGCQDMCAIABwkAzAgCAAgJAMwIAgAJCQDMCAIACgkAzAgCAAsJAMwIAgAMCQDMCAIADQkAzAgCAA4FA25pbAQCZXEKAAJlcgUCZXAKAAJlcwkAkAMBBQJlcgoAAmV0CQCUCgIFAmVhBQR1bml0CgECZXUCAmV2AmV3AwkAZwIFAmV3BQJlcwUCZXYJAQJlZwIFAmV2CQCRAwIFAmVyBQJldwoBAmV4AgJldgJldwMJAGcCBQJldwUCZXMFAmV2CQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTUJAQJleAIJAQJldQIJAQJldQIJAQJldQIJAQJldQIJAQJldQIJAQJldQIJAQJldQIJAQJldQIJAQJldQIJAQJldQIJAQJldQIJAQJldQIJAQJldQIJAQJldQIJAQJldQIFAmV0AAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8EAmVrCAUCZXECXzEEAmVsCAUCZXECXzIDCQECIT0CBQJlbAUEdW5pdAUCZWsJAAIBCQCsAgICGUQgY2FsY3VsYXRpb24gZXJyb3IsIEQgPSAJAKYDAQUCZWsBAmV5AwJkVQJkTgJlegQCZFYFAWcEAmVBCQCRAwIFAmRVAwkAAAIFAmROAAAAAQAABAJkWQkApwMBBQFqBAJkWgkAuQICCQCnAwEFAmFJBQJkWQQCZWEFAmVBBAJlYgkAuQICBQJkWgUCZFYEAmVCCQC6AgIJALkCAgkAuQICCQC6AgIJALkCAgUCZXoFAmV6CQC5AgIFAmVBBQJkVgUCZXoFAmRZCQC5AgIFAmViBQJkVgQCZUMJALgCAgkAtwICBQJlYQkAugICCQC5AgIFAmV6BQJkWQUCZWIFAmV6CgECZWcCAmVoAmVpBAJlRAUCZWgEAmVFCAUCZUQCXzEEAmVsCAUCZUQCXzIDCQECIT0CBQJlbAUEdW5pdAUCZWgEAmVGCQC6AgIJALcCAgkAuQICBQJlRQUCZUUFAmVCCQC3AgIJALkCAgUBZwUCZUUFAmVDBAJlRwkBAVEBCQC4AgIFAmVGCQEFdmFsdWUBBQJlRQMJAMACAgUBZgUCZUcJAJQKAgUCZUYFAmVpCQCUCgIFAmVGBQR1bml0BAJlcAkAzAgCAAAJAMwIAgABCQDMCAIAAgkAzAgCAAMJAMwIAgAECQDMCAIABQkAzAgCAAYJAMwIAgAHCQDMCAIACAkAzAgCAAkJAMwIAgAKCQDMCAIACwkAzAgCAAwJAMwIAgANCQDMCAIADgUDbmlsBAJlSAoAAmVyBQJlcAoAAmVzCQCQAwEFAmVyCgACZXQJAJQKAgUCZXoFBHVuaXQKAQJldQICZXYCZXcDCQBnAgUCZXcFAmVzBQJldgkBAmVnAgUCZXYJAJEDAgUCZXIFAmV3CgECZXgCAmV2AmV3AwkAZwIFAmV3BQJlcwUCZXYJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxNQkBAmV4AgkBAmV1AgkBAmV1AgkBAmV1AgkBAmV1AgkBAmV1AgkBAmV1AgkBAmV1AgkBAmV1AgkBAmV1AgkBAmV1AgkBAmV1AgkBAmV1AgkBAmV1AgkBAmV1AgkBAmV1AgUCZXQAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwQCZUUIBQJlSAJfMQQCZWwIBQJlSAJfMgMJAQIhPQIFAmVsBQR1bml0BQJlRQkAAgEJAKwCAgIZWSBjYWxjdWxhdGlvbiBlcnJvciwgWSA9IAkApgMBBQJlRQECZUkFAmVKAmNuAmNwAmFhAmVLBAJhVQkBAmFNAAQCY3IJAJEDAgUCYVUFAXUEAmNzCQCRAwIFAmFVBQF2BAJjcQkAkQMCBQJhVQUBdAQCY1oJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJhVQUBdwQCZGEJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJhVQUBeAQCZUwJALYCAQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBCQDZBAEFAmNxAhBpbnZhbGlkIGxwIGFzc2V0CHF1YW50aXR5BAJlTQMJAL8CAgUCZUwFAWUGCQACAQIiaW5pdGlhbCBkZXBvc2l0IHJlcXVpcmVzIGFsbCBjb2lucwMJAAACBQJlTQUCZU0EAmN4CQECYnoBBQJjcgQCY3oJAQJiegEFAmNzBAJlTgMJAAACBQJhYQIACQCUCgIFAmN4BQJjegMJAAACBQJjbgUCY3IDCQBmAgUCZUoFAmN4CQACAQIWaW52YWxpZCBwYXltZW50IGFtb3VudAkAlAoCCQBlAgUCY3gFAmVKBQJjegMJAAACBQJjbgUCY3MDCQBmAgUCZUoFAmN6CQACAQIWaW52YWxpZCBwYXltZW50IGFtb3VudAkAlAoCBQJjeAkAZQIFAmN6BQJlSgkAAgECEHdyb25nIHBtdEFzc2V0SWQEAmVPCAUCZU4CXzEEAmVQCAUCZU4CXzIEAmVRAwkAAAIFAmNuBQJjcgkAlAoCBQJlSgAAAwkAAAIFAmNuBQJjcwkAlAoCAAAFAmVKCQACAQIPaW52YWxpZCBwYXltZW50BAJlUggFAmVRAl8xBAJlUwgFAmVRAl8yBAJlVAMFAmVLCQCVCgMICQECY2gCBQJlUgUCYUYCXzEICQECY2gCBQJlUwUCYUYCXzEICQECY2gCBQJlSgUCYUYCXzIJAJUKAwUCZVIFAmVTAAAEAmVVCAUCZVQCXzEEAmVWCAUCZVQCXzIEAmNrCAUCZVQCXzMEAmVXCQBkAgUCZU8FAmVVBAJlWAkAZAIFAmVQBQJlVgQCYk0JAQJkVAEJAMwIAgkAtgIBBQJlTwkAzAgCCQC2AgEFAmVQBQNuaWwEAmJMCQECZFQBCQDMCAIJALYCAQUCZVcJAMwIAgkAtgIBBQJlWAUDbmlsBAJlWQMJAL8CAgUCYkwFAmJNBgkBBXRocm93AAMJAAACBQJlWQUCZVkEAmVaCQC8AgMFAmVMCQC4AgIFAmJMBQJiTQUCYk0EAmNDCQEBSQIJAQJiQgIJAQFGAgUCZVgFAmRhCQEBRgIFAmVXBQJjWgUBYQQCZHkJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFVAAUCY0MJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFWAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCY0MJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVkCBQJjcAUCYWEJAQJiawoFAmVSBQJlUwkAoAMBBQJlWgUCY0MAAAAABQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wAAAAAAUDbmlsBAJmYQkAawMFAmVQBQFhBQJlTwQCZmIJAGsDBQJlSgUBYQkAZAIFAmZhBQFhBAJmYwkAZQIFAmVKBQJmYgQCZmQJALwCAwUCZUwJALYCAQUCZmMJALYCAQUCZVAEAmZlCQCgAwEJALwCAwkAuAICBQJlWgUCZmQFAWIFAmZkCQCWCgQJAKADAQUCZVoFAmR5BQJjawUCZmUJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmZmBgJmZwJmaAJmaQJkUQJmagJmawQCYVUJAQJhTQAEAmNxCQCRAwIFAmFVBQF0BAJjcgkAkQMCBQJhVQUBdQQCY3MJAJEDAgUCYVUFAXYEAmZsCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYVUFAXcEAmZtCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYVUFAXgEAmZuCQCRAwIFAmFVBQFzBAJjcAMJAAACBQJkUQUCYmoFAmZqBQJkUQQCZE8JAQV2YWx1ZQEJAJEDAgUCZmkAAAQCY24JAQV2YWx1ZQEIBQJkTwdhc3NldElkBAJjVAgFAmRPBmFtb3VudAQCY20JANgEAQUCZmsDCQECIT0CBQJjcQkA2AQBBQJjbgkAAgECCFdyb25nIExQBAJjeAkBAmJ6AQUCY3IEAmN6CQECYnoBBQJjcwQCZm8KAAJhRwkA/AcEBQR0aGlzAhNnZXRPbmVUa25WMlJFQURPTkxZCQDMCAIFAmZnCQDMCAIFAmNUBQNuaWwFA25pbAMJAAECBQJhRwIKKEludCwgSW50KQUCYUcJAAIBCQCsAgIJAAMBBQJhRwIfIGNvdWxkbid0IGJlIGNhc3QgdG8gKEludCwgSW50KQMJAAACBQJmbwUCZm8EAmNrCAUCZm8CXzIEAmZwCAUCZm8CXzEEAmZxAwMJAGYCBQJmaAAACQBmAgUCZmgFAmZwBwkBAmFDAQkAuQkCCQDMCAICH2Ftb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJmaAUDbmlsAgAFAmZwBAJmcgMJAAACBQJmZwUCY3IJAJYKBAUCZnEAAAkAZQIJAGUCBQJjeAUCZnEFAmNrBQJjegMJAAACBQJmZwUCY3MJAJYKBAAABQJmcQUCY3gJAGUCCQBlAgUCY3oFAmZxBQJjawkAAgECFGludmFsaWQgb3V0IGFzc2V0IGlkBAJmcwgFAmZyAl8xBAJmdAgFAmZyAl8yBAJlVwgFAmZyAl8zBAJlWAgFAmZyAl80BAJmdQkBAmJCAgkBAUYCBQJlWAUCZm0JAQFGAgUCZVcFAmZsBAJmdgkBAUkCBQJmdQUBYQQCZncDCQAAAgUCZmcCBVdBVkVTBQR1bml0CQDZBAEFAmZnBAJmeAMJAGYCBQJjawAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmFMBQJjawUCZncFA25pbAUDbmlsBAJjSgkAzggCCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmNwBQJmcQUCZncJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFiAgkApQgBBQJjcAUCY20JAQJidgYFAmZzBQJmdAUCY1QFAmZ2BQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVQAFAmZ2CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVgIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmZ2BQNuaWwFAmZ4AwkAAAIFAmNKBQJjSgQCZnkJAPwHBAUCYUUCBGJ1cm4JAMwIAgUCY1QFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCY24FAmNUBQNuaWwDCQAAAgUCZnkFAmZ5CQCUCgIFAmNKBQJmcQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECZnoABAJhdwkAoggBCQEBUwADCQABAgUCYXcCBlN0cmluZwQCZWEFAmF3CQDZBAEFAmVhAwkAAQIFAmF3AgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IBAmZBAAQCYXcJAKIIAQkBAVQAAwkAAQIFAmF3AgZTdHJpbmcEAmVhBQJhdwkA2QQBBQJlYQMJAAECBQJhdwIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAAJmQgkAAgECEVBlcm1pc3Npb24gZGVuaWVkAQJmQwECZE4EAmF3CQECZnoAAwkAAQIFAmF3AgpCeXRlVmVjdG9yBAJmRAUCYXcJAAACCAUCZE4PY2FsbGVyUHVibGljS2V5BQJmRAMJAAECBQJhdwIEVW5pdAkAAAIIBQJkTgZjYWxsZXIFBHRoaXMJAAIBAgtNYXRjaCBlcnJvcgECZkUBAmROBAJhdwkBAmZ6AAMJAAECBQJhdwIKQnl0ZVZlY3RvcgQCZkQFAmF3AwkAAAIIBQJkTg9jYWxsZXJQdWJsaWNLZXkFAmZEBgUCZkIDCQABAgUCYXcCBFVuaXQDCQAAAggFAmROBmNhbGxlcgUEdGhpcwYFAmZCCQACAQILTWF0Y2ggZXJyb3IBAmZGAwJmRwJlegJmSAQCYVUJAQJhTQAEAmNyCQCRAwIFAmFVBQF1BAJjcwkAkQMCBQJhVQUBdgQCZFYFAWcEAmRZCQCnAwEFAWoEAmRaCQC5AgIJAKcDAQUCYUkFAmRZBAJkVQMJAAACBQJmRwcJAMwIAgkAuAICCQC2AgEJAQJiegEFAmNyBQJmSAkAzAgCCQC2AgEJAQJiegEFAmNzBQNuaWwJAMwIAgkAuAICCQC2AgEJAQJiegEFAmNzBQJmSAkAzAgCCQC2AgEJAQJiegEFAmNyBQNuaWwEAmVBCQCRAwIFAmRVAAAEAmVhBQJlQQQCZWIJALkCAgUCZFoFAmRWBAJlQgkAugICCQC5AgIJALkCAgkAugICCQC5AgIFAmV6BQJlegkAuQICBQJlQQUCZFYFAmV6BQJkWQkAuQICBQJlYgUCZFYEAmVDCQC4AgIJALcCAgUCZWEJALoCAgkAuQICBQJlegUCZFkFAmViBQJlegoBAmVnAgJlaAJlaQQCZkkFAmVoBAJlRQgFAmZJAl8xBAJlbAgFAmZJAl8yAwkBAiE9AgUCZWwFBHVuaXQFAmVoBAJlRgkAugICCQC3AgIJALkCAgUCZUUFAmVFBQJlQgkAtwICCQC5AgIFAWcFAmVFBQJlQwQCZUcJAQFRAQkAuAICBQJlRgkBBXZhbHVlAQUCZUUDCQDAAgIFAWYFAmVHCQCUCgIFAmVGBQJlaQkAlAoCBQJlRgUEdW5pdAQCZXAJAMwIAgAACQDMCAIAAQkAzAgCAAIJAMwIAgADCQDMCAIABAkAzAgCAAUJAMwIAgAGCQDMCAIABwkAzAgCAAgJAMwIAgAJCQDMCAIACgkAzAgCAAsJAMwIAgAMCQDMCAIADQkAzAgCAA4FA25pbAQCZkoKAAJlcgUCZXAKAAJlcwkAkAMBBQJlcgoAAmV0CQCUCgIFAmV6BQR1bml0CgECZXUCAmV2AmV3AwkAZwIFAmV3BQJlcwUCZXYJAQJlZwIFAmV2CQCRAwIFAmVyBQJldwoBAmV4AgJldgJldwMJAGcCBQJldwUCZXMFAmV2CQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTUJAQJleAIJAQJldQIJAQJldQIJAQJldQIJAQJldQIJAQJldQIJAQJldQIJAQJldQIJAQJldQIJAQJldQIJAQJldQIJAQJldQIJAQJldQIJAQJldQIJAQJldQIJAQJldQIFAmV0AAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8EAmVFCAUCZkoCXzEEAmVsCAUCZkoCXzIDCQECIT0CBQJlbAUEdW5pdAUCZUUJAAIBCQCsAgICGVkgY2FsY3VsYXRpb24gZXJyb3IsIFkgPSAJAKYDAQUCZUUdAmROASFjYWxjdWxhdGVBbW91bnRPdXRGb3JTd2FwUkVBRE9OTFkCAmZLAmZHBAJmTAMJAAACBQJmRwcEAmZNCQECYXkCBQR0aGlzCQECYWQABAJmSAkAtwICCQC2AgEJAQJiegEJAQJheQIFBHRoaXMJAQJhYwAJALYCAQUCZksJAJQKAgUCZk0FAmZIBAJmTQkBAmF5AgUEdGhpcwkBAmFjAAQCZkgJALcCAgkAtgIBCQECYnoBCQECYXkCBQR0aGlzCQECYWQACQC2AgEFAmZLCQCUCgIFAmZNBQJmSAQCZk0IBQJmTAJfMQQCZkgIBQJmTAJfMgQCYVUJAQJhTQAEAmNyCQCRAwIFAmFVBQF1BAJjcwkAkQMCBQJhVQUBdgQCZFUJAMwIAgkAtgIBCQECYnoBBQJjcgkAzAgCCQC2AgEJAQJiegEFAmNzBQNuaWwEAmV6CQECZFQBBQJkVQQCZUUJAQJmRgMFAmZHBQJlegkAtgIBBQJmSwQCZk4JALgCAgkAuAICCQC2AgEJAQJiegEFAmZNBQJlRQkAtgIBAAEEAmZPCQCWAwEJAMwIAgAACQDMCAIJAKADAQUCZk4FA25pbAQCZlADCQAAAgUCZkcHCQDMCAIJALcCAgkAtgIBCQECYnoBBQJjcgkAtgIBBQJmSwkAzAgCCQC4AgIJALYCAQkBAmJ6AQUCY3MFAmZOBQNuaWwJAMwIAgkAuAICCQC2AgEJAQJiegEFAmNyBQJmTgkAzAgCCQC3AgIJALYCAQkBAmJ6AQUCY3MJALYCAQUCZksFA25pbAQCZlEJAQJkVAEFAmZQBAJlWQMJAMACAgUCZlEFAmV6BgkAAgECFG5ldyBEIGlzIGZld2VyIGVycm9yAwkAAAIFAmVZBQJlWQkAlAoCBQNuaWwFAmZPCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmROASZjYWxjdWxhdGVBbW91bnRPdXRGb3JTd2FwQW5kU2VuZFRva2VucwQCZksCZkcCZlICZlMEAmZUCQDMCAIDCQBnAggJAQV2YWx1ZQEJAJEDAggFAmROCHBheW1lbnRzAAAGYW1vdW50BQJmSwYJAQJhQwECDFdyb25nIGFtb3VudAkAzAgCAwkAAAIIBQJkTgZjYWxsZXIJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQJheQIFBHRoaXMJAQJhZwAGCQECYUMBAhFQZXJtaXNzaW9uIGRlbmllZAUDbmlsAwkAAAIFAmZUBQJmVAQCZE8JAQV2YWx1ZQEJAJEDAggFAmROCHBheW1lbnRzAAAEAmZVAwkAAAIIBQJkTwdhc3NldElkBQR1bml0CQDYBAEJAJsDAQIFV0FWRVMJANgEAQkBBXZhbHVlAQgFAmRPB2Fzc2V0SWQEAmZWAwkAAAIFAmZHBwQCZk0JAQJheQIFBHRoaXMJAQJhZAAEAmZICQBlAgkBAmJ6AQUCZlUICQEFdmFsdWUBCQCRAwIIBQJkTghwYXltZW50cwAABmFtb3VudAkAlAoCBQJmTQUCZkgEAmZNCQECYXkCBQR0aGlzCQECYWMABAJmSAkAZQIJAQJiegEFAmZVCAkBBXZhbHVlAQkAkQMCCAUCZE4IcGF5bWVudHMAAAZhbW91bnQJAJQKAgUCZk0FAmZIBAJmTQgFAmZWAl8xBAJmSAgFAmZWAl8yBAJhVQkBAmFNAAQCY3IJAJEDAgUCYVUFAXUEAmNzCQCRAwIFAmFVBQF2BAJkVQMJAAACBQJmRwcJAMwIAgkAuAICCQC2AgEJAQJiegEFAmNyCQC2AgEICQEFdmFsdWUBCQCRAwIIBQJkTghwYXltZW50cwAABmFtb3VudAkAzAgCCQC2AgEJAQJiegEFAmNzBQNuaWwJAMwIAgkAtgIBCQECYnoBBQJjcgkAzAgCCQC4AgIJALYCAQkBAmJ6AQUCY3MJALYCAQgJAQV2YWx1ZQEJAJEDAggFAmROCHBheW1lbnRzAAAGYW1vdW50BQNuaWwEAmV6CQECZFQBBQJkVQQCZUUJAQJmRgMFAmZHBQJlegkAtgIBBQJmSAQCZk4JALgCAgkAuAICCQC2AgEJAQJiegEFAmZNBQJlRQkAtgIBAAEEAmZPCQCWAwEJAMwIAgAACQDMCAIJAKADAQUCZk4FA25pbAQCZlcDCQBnAgUCZk8FAmZSBgkAAgECLEV4Y2hhbmdlIHJlc3VsdCBpcyBmZXdlciBjb2lucyB0aGFuIGV4cGVjdGVkAwkAAAIFAmZXBQJmVwQCZlADCQAAAgUCZkcHCQDMCAIJALYCAQkBAmJ6AQUCY3IJAMwIAgkAuAICCQC2AgEJAQJiegEFAmNzBQJmTgUDbmlsCQDMCAIJALgCAgkAtgIBCQECYnoBBQJjcgUCZk4JAMwIAgkAtgIBCQECYnoBBQJjcwUDbmlsBAJmUQkBAmRUAQUCZlAEAmVZAwkAwAICBQJmUQUCZXoGCQACAQIUbmV3IEQgaXMgZmV3ZXIgZXJyb3IDCQAAAgUCZVkFAmVZCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAmZTBQJmTwMJAAACBQJmVQIFV0FWRVMFBHVuaXQJANkEAQUCZk0FA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkTgELY29uc3RydWN0b3IBAVIEAmVCCQECZkUBBQJkTgMJAAACBQJlQgUCZUIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVIABQFSBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZE4BCnNldE1hbmFnZXIBAmZYBAJlQgkBAmZFAQUCZE4DCQAAAgUCZUIFAmVCBAJmWQkA2QQBBQJmWAMJAAACBQJmWQUCZlkJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVQABQJmWAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmROAQ5jb25maXJtTWFuYWdlcgAEAmNnCQECZkEABAJmWgMJAQlpc0RlZmluZWQBBQJjZwYJAAIBAhJObyBwZW5kaW5nIG1hbmFnZXIDCQAAAgUCZloFAmZaBAJnYQMJAAACCAUCZE4PY2FsbGVyUHVibGljS2V5CQEFdmFsdWUBBQJjZwYJAAIBAhtZb3UgYXJlIG5vdCBwZW5kaW5nIG1hbmFnZXIDCQAAAgUCZ2EFAmdhCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFTAAkA2AQBCQEFdmFsdWUBBQJjZwkAzAgCCQELRGVsZXRlRW50cnkBCQEBVAAFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkTgEDcHV0AgJnYgJnYwQCZ2QJAQJiZQAEAmdlCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJnZAUBQQIKV3Igc3QgYWRkcgQCZ2YJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmdkBQFDAgpXciBzbCBhZGRyAwkAZgIAAAUCZ2IJAAIBAg5Xcm9uZyBzbGlwcGFnZQMJAQIhPQIJAJADAQgFAmROCHBheW1lbnRzAAIJAAIBAgwyIHBtbnRzIGV4cGQEAmdnCQECZFAKCQClCAEIBQJkTgZjYWxsZXIJANgEAQgFAmRODXRyYW5zYWN0aW9uSWQJAQ9BdHRhY2hlZFBheW1lbnQCCAkBBXZhbHVlAQkAkQMCCAUCZE4IcGF5bWVudHMAAAdhc3NldElkCAkBBXZhbHVlAQkAkQMCCAUCZE4IcGF5bWVudHMAAAZhbW91bnQJAJEDAggFAmROCHBheW1lbnRzAAEFAmdiBgcGAAACAAQCZHMIBQJnZwJfMgQCZ2gIBQJnZwJfNwQCY0oIBQJnZwJfOQQCZHQIBQJnZwNfMTAEAmR1CAUCZ2cDXzExBAJjcggFAmdnA18xMgQCY3MIBQJnZwNfMTMEAmRmCQD8BwQFAmFFAgRlbWl0CQDMCAIFAmRzBQNuaWwFA25pbAMJAAACBQJkZgUCZGYEAmdpBAJhdwUCZGYDCQABAgUCYXcCB0FkZHJlc3MEAmdqBQJhdwkA/AcEBQJnagIEZW1pdAkAzAgCBQJkcwUDbmlsBQNuaWwFBHVuaXQDCQAAAgUCZ2kFAmdpBAJnawMJAGYCBQJkdAAACQD8BwQFAmdmAgNwdXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCY3IFAmR0BQNuaWwFA25pbAMJAAACBQJnawUCZ2sEAmdsAwkAZgIFAmR1AAAJAPwHBAUCZ2YCA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJjcwUCZHUFA25pbAUDbmlsAwkAAAIFAmdsBQJnbAQCZ20DBQJnYwQCZ24JAPwHBAUCZ2UCBXN0YWtlBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmdoBQJkcwUDbmlsAwkAAAIFAmduBQJnbgUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQJkTgZjYWxsZXIFAmRzBQJnaAUDbmlsCQDOCAIFAmNKBQJnbQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkTgELcHV0T25lVGtuVjICAmZoAmdjBAJnbwoAAmFHCQD8BwQFAmFFAihpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZFJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCYUcCB0Jvb2xlYW4FAmFHCQACAQkArAICCQADAQUCYUcCHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4EAmdwAwMDCQECYUoABgkAAAIFAmFZBQFvBgkAAAIFAmFZBQFxBgUCZ28EAmZUCQDMCAIDAwkBASEBBQJncAYJAQJmQwEFAmROBgkBAmFDAQIhcHV0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluCQDMCAIDCQAAAgkAkAMBCAUCZE4IcGF5bWVudHMAAQYJAQJhQwECHmV4YWN0bHkgMSBwYXltZW50IGFyZSBleHBlY3RlZAUDbmlsAwkAAAIFAmZUBQJmVAQCYVUJAQJhTQAEAmNyCQCRAwIFAmFVBQF1BAJjcwkAkQMCBQJhVQUBdgQCY3EJANkEAQkAkQMCBQJhVQUBdAQCZmwJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJhVQUBdwQCZm0JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJhVQUBeAQCY3ADCQAAAggFAmROBmNhbGxlcgUEdGhpcwgFAmRODG9yaWdpbkNhbGxlcggFAmROBmNhbGxlcgQCZE8JAQV2YWx1ZQEJAJEDAggFAmROCHBheW1lbnRzAAAEAmNuCQDYBAEJAQV2YWx1ZQEIBQJkTwdhc3NldElkBAJjVAgFAmRPBmFtb3VudAQCZ3EJAQJlSQUFAmNUBQJjbgkApQgBBQJjcAkA2AQBCAUCZE4NdHJhbnNhY3Rpb25JZAYDCQAAAgUCZ3EFAmdxBAJjawgFAmdxAl8zBAJjSggFAmdxAl8yBAJncggFAmdxAl8xBAJkcwMDCQBmAgUCZmgAAAkAZgIFAmZoBQJncgcJAQJhQwEJALkJAgkAzAgCAh9hbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZmgFA25pbAIABQJncgQCZ2cJAPwHBAUCYUUCBGVtaXQJAMwIAgUCZHMFA25pbAUDbmlsAwkAAAIFAmdnBQJnZwQCZ2kEAmF3BQJnZwMJAAECBQJhdwIHQWRkcmVzcwQCZ2oFAmF3CQD8BwQFAmdqAgRlbWl0CQDMCAIFAmRzBQNuaWwFA25pbAUEdW5pdAMJAAACBQJnaQUCZ2kEAmdtAwUCZ2MEAmduCQD8BwQFAmJnAgVzdGFrZQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJjcQUCZHMFA25pbAMJAAACBQJnbgUCZ24FA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUCZE4GY2FsbGVyBQJkcwUCY3EFA25pbAQCZngDCQBmAgUCY2sAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJhTAUCY2sJANkEAQUCY24FA25pbAUDbmlsCQCUCgIJAM4IAgkAzggCBQJjSgUCZ20FAmZ4BQJkcwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkTgEKcHV0Rm9yRnJlZQECZ3MDCQBmAgAABQJncwkAAgECCldyb25nIHNscGcDCQECIT0CCQCQAwEIBQJkTghwYXltZW50cwACCQACAQIMMiBwbW50cyBleHBkBAJndAkBAmRQCgkApQgBCAUCZE4GY2FsbGVyCQDYBAEIBQJkTg10cmFuc2FjdGlvbklkCQEPQXR0YWNoZWRQYXltZW50AggJAQV2YWx1ZQEJAJEDAggFAmROCHBheW1lbnRzAAAHYXNzZXRJZAgJAQV2YWx1ZQEJAJEDAggFAmROCHBheW1lbnRzAAAGYW1vdW50CQCRAwIIBQJkTghwYXltZW50cwABBQJncwcHBgAAAgAIBQJndAJfOQJkTgEDZ2V0AAQCZGYJAQJkTQEFAmROBAJndQgFAmRmAl8xBAJjSQgFAmRmAl8yBAJjVAgFAmRmAl8zBAJjbggFAmRmAl80BAJjSggFAmRmAl81BAJlQwkA/AcEBQJhRQIEYnVybgkAzAgCBQJjVAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJjbgUCY1QFA25pbAMJAAACBQJlQwUCZUMFAmNKCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmROAQtnZXRPbmVUa25WMgICZmcCZmgEAmdvCgACYUcJAPwHBAUCYUUCKGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJhRwIHQm9vbGVhbgUCYUcJAAIBCQCsAgIJAAMBBQJhRwIcIGNvdWxkbid0IGJlIGNhc3QgdG8gQm9vbGVhbgQCZ3YDAwkBAmFKAAYJAAACBQJhWQUBcQYFAmdvBAJmVAkAzAgCAwMJAQEhAQUCZ3YGCQECZkMBBQJkTgYJAQJhQwECIWdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbgkAzAgCAwkAAAIJAJADAQgFAmROCHBheW1lbnRzAAEGCQECYUMBAh5leGFjdGx5IDEgcGF5bWVudCBhcmUgZXhwZWN0ZWQFA25pbAMJAAACBQJmVAUCZlQEAmd3CQECZmYGBQJmZwUCZmgIBQJkTghwYXltZW50cwgFAmROBmNhbGxlcggFAmRODG9yaWdpbkNhbGxlcggFAmRODXRyYW5zYWN0aW9uSWQEAmNKCAUCZ3cCXzEEAmZxCAUCZ3cCXzIJAJQKAgUCY0oFAmZxCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmROARNnZXRPbmVUa25WMlJFQURPTkxZAgJmZwJneAQCYVUJAQJhTQAEAmNyCQCRAwIFAmFVBQF1BAJjcwkAkQMCBQJhVQUBdgQCY3EJAJEDAgUCYVUFAXQEAmRVCQDMCAIJALYCAQkBAmJ6AQUCY3IJAMwIAgkAtgIBCQECYnoBBQJjcwUDbmlsBAJneQkAtgIBCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEJANkEAQUCY3ECEGludmFsaWQgbHAgYXNzZXQIcXVhbnRpdHkEAmJNCQECZFQBBQJkVQQCYkwJALgCAgUCYk0JALwCAwkAtgIBBQJneAUCYk0FAmd5BAJnegMJAAACBQJmZwUCY3IAAAMJAAACBQJmZwUC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AMwIAgMJAAACCQCQAwEIBQJkTghwYXltZW50cwAABgkAAgECGG5vIHBheW1lbnRzIGFyZSBleHBlY3RlZAUDbmlsAwkAAAIFAmZUBQJmVAQCZ0sJAPwHBAUCYmcCB3Vuc3Rha2UJAMwIAgkA2AQBBQJhWgkAzAgCBQJnTgUDbmlsBQNuaWwDCQAAAgUCZ0sFAmdLBAJnUAkBAmNsBAkA2AQBCAUCZE4NdHJhbnNhY3Rpb25JZAkA2AQBBQJhWgUCZ04IBQJkTgZjYWxsZXIEAmNICAUCZ1ACXzEEAmNJCAUCZ1ACXzIEAmNKCAUCZ1ADXzEwBAJnUQkAzAgCAwkAZwIFAmNIBQJnTwYJAAIBCQC5CQIJAMwIAgIsYW1vdW50IGFzc2V0IGFtb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJnTwUDbmlsAgAJAMwIAgMJAGcCBQJjSQUCZ0YGCQACAQkAuQkCCQDMCAICK3ByaWNlIGFzc2V0IGFtb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJnRgUDbmlsAgAFA25pbAMJAAACBQJnUQUCZ1EEAmdHCQD8BwQFAmFFAgRidXJuCQDMCAIFAmdOBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmFaBQJnTgUDbmlsAwkAAAIFAmdHBQJnRwUCY0oJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZE4BFXVuc3Rha2VBbmRHZXRPbmVUa25WMgMCZ04CZmcCZmgEAmdvCgACYUcJAPwHBAUCYUUCKGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJhRwIHQm9vbGVhbgUCYUcJAAIBCQCsAgIJAAMBBQJhRwIcIGNvdWxkbid0IGJlIGNhc3QgdG8gQm9vbGVhbgQCZ3YDAwkBAmFKAAYJAAACBQJhWQUBcQYFAmdvBAJmVAkAzAgCAwMJAQEhAQUCZ3YGCQECZkMBBQJkTgYJAQJhQwECIWdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbgkAzAgCAwkAAAIJAJADAQgFAmROCHBheW1lbnRzAAAGCQECYUMBAhhubyBwYXltZW50cyBhcmUgZXhwZWN0ZWQFA25pbAMJAAACBQJmVAUCZlQEAmJZCQECYU0ABAJnSQkBAmJlAAQCZ2gJANkEAQkAkQMCBQJiWQUBdAQCZ0oJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmdJBQFBAgpXciBzdCBhZGRyBAJnSwkA/AcEBQJnSgIHdW5zdGFrZQkAzAgCCQDYBAEFAmdoCQDMCAIFAmdOBQNuaWwFA25pbAMJAAACBQJnSwUCZ0sEAmdSCQECZmYGBQJmZwUCZmgJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmdoBQJnTgUDbmlsCAUCZE4GY2FsbGVyCAUCZE4Mb3JpZ2luQ2FsbGVyCAUCZE4NdHJhbnNhY3Rpb25JZAQCY0oIBQJnUgJfMQQCZnEIBQJnUgJfMgkAlAoCBQJjSgUCZnEJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZE4BHHB1dE9uZVRrblYyV2l0aEJvbnVzUkVBRE9OTFkCAmdTAmdUBAJhVQkBAmFNAAQCY3IJAJEDAgUCYVUFAXUEAmNzCQCRAwIFAmFVBQF2BAJjcQkAkQMCBQJhVQUBdAQCZ1UJAQJlSQUFAmdTBQJnVAIAAgAGBAJlWggFAmdVAl8xBAJjSggFAmdVAl8yBAJjawgFAmdVAl8zBAJmZQgFAmdVAl80CQCUCgIFA25pbAkAlQoDBQJlWgUCY2sFAmZlAmROASFwdXRPbmVUa25WMldpdGhvdXRUYWtlRmVlUkVBRE9OTFkCAmdTAmdUBAJhVQkBAmFNAAQCY3IJAJEDAgUCYVUFAXUEAmNzCQCRAwIFAmFVBQF2BAJjcQkAkQMCBQJhVQUBdAQCZ1YJAQJlSQUFAmdTBQJnVAIAAgAHBAJlWggFAmdWAl8xBAJjSggFAmdWAl8yBAJjawgFAmdWAl8zBAJmZQgFAmdWAl80CQCUCgIFA25pbAkAlQoDBQJlWgUCY2sFAmZlAmROAQhhY3RpdmF0ZQICZ1cCZ1gDCQECIT0CCQClCAEIBQJkTgZjYWxsZXIJAKUIAQUCYUUJAAIBAgZkZW5pZWQJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCCQECYWMABQJnVwkAzAgCCQELU3RyaW5nRW50cnkCCQECYWQABQJnWAUDbmlsAgdzdWNjZXNzAmROAQRzZXRTAgJnWQJnTAMJAQIhPQIJAKUIAQgFAmROBmNhbGxlcgkBAmF5AgUEdGhpcwkBAmFmAAUCZkIJAMwIAgkBC1N0cmluZ0VudHJ5AgUCZ1kFAmdMBQNuaWwCZE4BBHNldEkCAmdZAmdMAwkBAiE9AgkApQgBCAUCZE4GY2FsbGVyCQECYXkCBQR0aGlzCQECYWYABQJmQgkAzAgCCQEMSW50ZWdlckVudHJ5AgUCZ1kFAmdMBQNuaWwCZE4BHGdldFBvb2xDb25maWdXcmFwcGVyUkVBRE9OTFkACQCUCgIFA25pbAkBAmFNAAJkTgEcZ2V0QWNjQmFsYW5jZVdyYXBwZXJSRUFET05MWQECYkEJAJQKAgUDbmlsCQECYnoBBQJiQQJkTgEZY2FsY1ByaWNlc1dyYXBwZXJSRUFET05MWQMCYlMCYlQCYlgEAmdaCQECYlcDBQJiUwUCYlQFAmJYCQCUCgIFA25pbAkAzAgCCQCmAwEJAJEDAgUCZ1oAAAkAzAgCCQCmAwEJAJEDAgUCZ1oAAQkAzAgCCQCmAwEJAJEDAgUCZ1oAAgUDbmlsAmROARZmcm9tWDE4V3JhcHBlclJFQURPTkxZAgFKAmhhCQCUCgIFA25pbAkBAUkCCQCnAwEFAUoFAmhhAmROARR0b1gxOFdyYXBwZXJSRUFET05MWQIBRwFICQCUCgIFA25pbAkApgMBCQEBRgIFAUcFAUgCZE4BHmNhbGNQcmljZUJpZ0ludFdyYXBwZXJSRUFET05MWQICYkMCYkQJAJQKAgUDbmlsCQCmAwEJAQJiQgIJAKcDAQUCYkMJAKcDAQUCYkQCZE4BI2VzdGltYXRlUHV0T3BlcmF0aW9uV3JhcHBlclJFQURPTkxZCQJjbQJiSAJjTAJjTQJjTgJjTwJoYgJjUAJjUQkAlAoCBQNuaWwJAQJjSw0FAmNtBQJiSAUCY0wFAmNNBQJjTgUCY08FAmhiBQJjUAUCY1EGBwAAAgACZE4BI2VzdGltYXRlR2V0T3BlcmF0aW9uV3JhcHBlclJFQURPTkxZBAJjbQJoYwJjbwJoYgQCZGYJAQJjbAQFAmNtBQJoYwUCY28JARFAZXh0ck5hdGl2ZSgxMDYyKQEFAmhiCQCUCgIFA25pbAkAnAoKCAUCZGYCXzEIBQJkZgJfMggFAmRmAl8zCAUCZGYCXzQIBQJkZgJfNQgFAmRmAl82CAUCZGYCXzcJAKYDAQgFAmRmAl84CAUCZGYCXzkIBQJkZgNfMTABAmhkAQJoZQAEAmhmBAJhdwkBAmZ6AAMJAAECBQJhdwIKQnl0ZVZlY3RvcgQCZkQFAmF3BQJmRAMJAAECBQJhdwIEVW5pdAgFAmhkD3NlbmRlclB1YmxpY0tleQkAAgECC01hdGNoIGVycm9yBAJhdwUCaGQDCQABAgUCYXcCBU9yZGVyBAJkQQUCYXcEAmhnCQECYUsABAJoaAkBAmR6AQUCZEEEAmhpCQD0AwMIBQJkQQlib2R5Qnl0ZXMJAJEDAggFAmRBBnByb29mcwAACAUCZEEPc2VuZGVyUHVibGljS2V5BAJoagkA9AMDCAUCZEEJYm9keUJ5dGVzCQCRAwIIBQJkQQZwcm9vZnMAAQUCaGcDAwMFAmhoBQJoaQcFAmhqBwYJAQJhcgMFAmhoBQJoaQUCaGoDCQABAgUCYXcCFFNldFNjcmlwdFRyYW5zYWN0aW9uBAJlYQUCYXcEAmhrCQD2AwEJAQV2YWx1ZQEIBQJlYQZzY3JpcHQEAmhsCQDbBAEJAQV2YWx1ZQEJAJ0IAgUCYUUJAQJhcAAEAmhtCQDxBwEFBHRoaXMDAwkAAAIFAmhsBQJoawkBAiE9AgUCaG0FAmhrBwYJAPQDAwgFAmhkCWJvZHlCeXRlcwkAkQMCCAUCaGQGcHJvb2ZzAAAFAmhmCQD0AwMIBQJoZAlib2R5Qnl0ZXMJAJEDAggFAmhkBnByb29mcwAABQJoZrPdwQk=", "chainId": 84, "height": 2440377, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 9KiGbWXb9A7cPWFEfoHK7htRqaaS2Vix2H7rKarnnVSg Next: 9NQUfEAAYhw21RKgqf8jFg4dJHv7xvvyvZgrtYwNnsNN Diff:
OldNewDifferences
888888 let eE = fF(fG, ez, toBigInt(fK))
889889 let fN = ((toBigInt(bz(fM)) - eE) - toBigInt(1))
890890 let fO = max([0, toInt(fN)])
891- $Tuple2(nil, fO)
891+ let fP = if ((fG == false))
892+ then [(toBigInt(bz(cr)) + toBigInt(fK)), (toBigInt(bz(cs)) - fN)]
893+ else [(toBigInt(bz(cr)) - fN), (toBigInt(bz(cs)) + toBigInt(fK))]
894+ let fQ = dT(fP)
895+ let eY = if ((fQ >= ez))
896+ then true
897+ else throw("new D is fewer error")
898+ if ((eY == eY))
899+ then $Tuple2(nil, fO)
900+ else throw("Strict value is not equal to itself.")
892901 }
893902
894903
895904
896905 @Callable(dN)
897-func calculateAmountOutForSwapAndSendTokens (fK,fG,fP,fQ) = {
898- let fR = [if ((value(dN.payments[0]).amount >= fK))
906+func calculateAmountOutForSwapAndSendTokens (fK,fG,fR,fS) = {
907+ let fT = [if ((value(dN.payments[0]).amount >= fK))
899908 then true
900909 else aC("Wrong amount"), if ((dN.caller == addressFromStringValue(ay(this, ag()))))
901910 then true
902911 else aC("Permission denied")]
903- if ((fR == fR))
912+ if ((fT == fT))
904913 then {
905914 let dO = value(dN.payments[0])
906- let fS = if ((dO.assetId == unit))
915+ let fU = if ((dO.assetId == unit))
907916 then toBase58String(toBytes("WAVES"))
908917 else toBase58String(value(dO.assetId))
909- let fT = if ((fG == false))
918+ let fV = if ((fG == false))
910919 then {
911920 let fM = ay(this, ad())
912- let fH = (bz(fS) - value(dN.payments[0]).amount)
921+ let fH = (bz(fU) - value(dN.payments[0]).amount)
913922 $Tuple2(fM, fH)
914923 }
915924 else {
916925 let fM = ay(this, ac())
917- let fH = (bz(fS) - value(dN.payments[0]).amount)
926+ let fH = (bz(fU) - value(dN.payments[0]).amount)
918927 $Tuple2(fM, fH)
919928 }
920- let fM = fT._1
921- let fH = fT._2
929+ let fM = fV._1
930+ let fH = fV._2
922931 let aU = aM()
923932 let cr = aU[u]
924933 let cs = aU[v]
925- let dU = [(toBigInt(bz(cr)) - toBigInt(value(dN.payments[0]).amount)), toBigInt(bz(cs))]
934+ let dU = if ((fG == false))
935+ then [(toBigInt(bz(cr)) - toBigInt(value(dN.payments[0]).amount)), toBigInt(bz(cs))]
936+ else [toBigInt(bz(cr)), (toBigInt(bz(cs)) - toBigInt(value(dN.payments[0]).amount))]
926937 let ez = dT(dU)
927938 let eE = fF(fG, ez, toBigInt(fH))
928939 let fN = ((toBigInt(bz(fM)) - eE) - toBigInt(1))
929940 let fO = max([0, toInt(fN)])
930- let fU = if ((fO >= fP))
941+ let fW = if ((fO >= fR))
931942 then true
932943 else throw("Exchange result is fewer coins than expected")
933- if ((fU == fU))
934- then [ScriptTransfer(addressFromStringValue(fQ), fO, if ((fS == "WAVES"))
935- then unit
936- else fromBase58String(fM))]
944+ if ((fW == fW))
945+ then {
946+ let fP = if ((fG == false))
947+ then [toBigInt(bz(cr)), (toBigInt(bz(cs)) - fN)]
948+ else [(toBigInt(bz(cr)) - fN), toBigInt(bz(cs))]
949+ let fQ = dT(fP)
950+ let eY = if ((fQ >= ez))
951+ then true
952+ else throw("new D is fewer error")
953+ if ((eY == eY))
954+ then [ScriptTransfer(addressFromStringValue(fS), fO, if ((fU == "WAVES"))
955+ then unit
956+ else fromBase58String(fM))]
957+ else throw("Strict value is not equal to itself.")
958+ }
937959 else throw("Strict value is not equal to itself.")
938960 }
939961 else throw("Strict value is not equal to itself.")
952974
953975
954976 @Callable(dN)
955-func setManager (fV) = {
977+func setManager (fX) = {
956978 let eB = fE(dN)
957979 if ((eB == eB))
958980 then {
959- let fW = fromBase58String(fV)
960- if ((fW == fW))
961- then [StringEntry(T(), fV)]
981+ let fY = fromBase58String(fX)
982+ if ((fY == fY))
983+ then [StringEntry(T(), fX)]
962984 else throw("Strict value is not equal to itself.")
963985 }
964986 else throw("Strict value is not equal to itself.")
969991 @Callable(dN)
970992 func confirmManager () = {
971993 let cg = fA()
972- let fX = if (isDefined(cg))
994+ let fZ = if (isDefined(cg))
973995 then true
974996 else throw("No pending manager")
975- if ((fX == fX))
997+ if ((fZ == fZ))
976998 then {
977- let fY = if ((dN.callerPublicKey == value(cg)))
999+ let ga = if ((dN.callerPublicKey == value(cg)))
9781000 then true
9791001 else throw("You are not pending manager")
980- if ((fY == fY))
1002+ if ((ga == ga))
9811003 then [StringEntry(S(), toBase58String(value(cg))), DeleteEntry(T())]
9821004 else throw("Strict value is not equal to itself.")
9831005 }
9871009
9881010
9891011 @Callable(dN)
990-func put (fZ,ga) = {
991- let gb = be()
992- let gc = valueOrErrorMessage(addressFromString(gb[A]), "Wr st addr")
993- let gd = valueOrErrorMessage(addressFromString(gb[C]), "Wr sl addr")
994- if ((0 > fZ))
1012+func put (gb,gc) = {
1013+ let gd = be()
1014+ let ge = valueOrErrorMessage(addressFromString(gd[A]), "Wr st addr")
1015+ let gf = valueOrErrorMessage(addressFromString(gd[C]), "Wr sl addr")
1016+ if ((0 > gb))
9951017 then throw("Wrong slippage")
9961018 else if ((size(dN.payments) != 2))
9971019 then throw("2 pmnts expd")
9981020 else {
999- let ge = dP(toString(dN.caller), toBase58String(dN.transactionId), AttachedPayment(value(dN.payments[0]).assetId, value(dN.payments[0]).amount), dN.payments[1], fZ, true, false, true, 0, "")
1000- let ds = ge._2
1001- let gf = ge._7
1002- let cJ = ge._9
1003- let dt = ge._10
1004- let du = ge._11
1005- let cr = ge._12
1006- let cs = ge._13
1021+ let gg = dP(toString(dN.caller), toBase58String(dN.transactionId), AttachedPayment(value(dN.payments[0]).assetId, value(dN.payments[0]).amount), dN.payments[1], gb, true, false, true, 0, "")
1022+ let ds = gg._2
1023+ let gh = gg._7
1024+ let cJ = gg._9
1025+ let dt = gg._10
1026+ let du = gg._11
1027+ let cr = gg._12
1028+ let cs = gg._13
10071029 let df = invoke(aE, "emit", [ds], nil)
10081030 if ((df == df))
10091031 then {
1010- let gg = {
1032+ let gi = {
10111033 let aw = df
10121034 if ($isInstanceOf(aw, "Address"))
10131035 then {
1014- let gh = aw
1015- invoke(gh, "emit", [ds], nil)
1036+ let gj = aw
1037+ invoke(gj, "emit", [ds], nil)
10161038 }
10171039 else unit
10181040 }
1019- if ((gg == gg))
1041+ if ((gi == gi))
10201042 then {
1021- let gi = if ((dt > 0))
1022- then invoke(gd, "put", nil, [AttachedPayment(cr, dt)])
1043+ let gk = if ((dt > 0))
1044+ then invoke(gf, "put", nil, [AttachedPayment(cr, dt)])
10231045 else nil
1024- if ((gi == gi))
1046+ if ((gk == gk))
10251047 then {
1026- let gj = if ((du > 0))
1027- then invoke(gd, "put", nil, [AttachedPayment(cs, du)])
1048+ let gl = if ((du > 0))
1049+ then invoke(gf, "put", nil, [AttachedPayment(cs, du)])
10281050 else nil
1029- if ((gj == gj))
1051+ if ((gl == gl))
10301052 then {
1031- let gk = if (ga)
1053+ let gm = if (gc)
10321054 then {
1033- let gl = invoke(gc, "stake", nil, [AttachedPayment(gf, ds)])
1034- if ((gl == gl))
1055+ let gn = invoke(ge, "stake", nil, [AttachedPayment(gh, ds)])
1056+ if ((gn == gn))
10351057 then nil
10361058 else throw("Strict value is not equal to itself.")
10371059 }
1038- else [ScriptTransfer(dN.caller, ds, gf)]
1039- (cJ ++ gk)
1060+ else [ScriptTransfer(dN.caller, ds, gh)]
1061+ (cJ ++ gm)
10401062 }
10411063 else throw("Strict value is not equal to itself.")
10421064 }
10511073
10521074
10531075 @Callable(dN)
1054-func putOneTknV2 (fh,ga) = {
1055- let gm = {
1076+func putOneTknV2 (fh,gc) = {
1077+ let go = {
10561078 let aG = invoke(aE, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
10571079 if ($isInstanceOf(aG, "Boolean"))
10581080 then aG
10591081 else throw(($getType(aG) + " couldn't be cast to Boolean"))
10601082 }
1061- let gn = if (if (if (aJ())
1083+ let gp = if (if (if (aJ())
10621084 then true
10631085 else (aY == o))
10641086 then true
10651087 else (aY == q))
10661088 then true
1067- else gm
1068- let fR = [if (if (!(gn))
1089+ else go
1090+ let fT = [if (if (!(gp))
10691091 then true
10701092 else fC(dN))
10711093 then true
10721094 else aC("put operation is blocked by admin"), if ((size(dN.payments) == 1))
10731095 then true
10741096 else aC("exactly 1 payment are expected")]
1075- if ((fR == fR))
1097+ if ((fT == fT))
10761098 then {
10771099 let aU = aM()
10781100 let cr = aU[u]
10861108 let dO = value(dN.payments[0])
10871109 let cn = toBase58String(value(dO.assetId))
10881110 let cT = dO.amount
1089- let go = eI(cT, cn, toString(cp), toBase58String(dN.transactionId), true)
1090- if ((go == go))
1111+ let gq = eI(cT, cn, toString(cp), toBase58String(dN.transactionId), true)
1112+ if ((gq == gq))
10911113 then {
1092- let ck = go._3
1093- let cJ = go._2
1094- let gp = go._1
1114+ let ck = gq._3
1115+ let cJ = gq._2
1116+ let gr = gq._1
10951117 let ds = if (if ((fh > 0))
1096- then (fh > gp)
1118+ then (fh > gr)
10971119 else false)
10981120 then aC(makeString(["amount to receive is less than ", toString(fh)], ""))
1099- else gp
1100- let ge = invoke(aE, "emit", [ds], nil)
1101- if ((ge == ge))
1121+ else gr
1122+ let gg = invoke(aE, "emit", [ds], nil)
1123+ if ((gg == gg))
11021124 then {
1103- let gg = {
1104- let aw = ge
1125+ let gi = {
1126+ let aw = gg
11051127 if ($isInstanceOf(aw, "Address"))
11061128 then {
1107- let gh = aw
1108- invoke(gh, "emit", [ds], nil)
1129+ let gj = aw
1130+ invoke(gj, "emit", [ds], nil)
11091131 }
11101132 else unit
11111133 }
1112- if ((gg == gg))
1134+ if ((gi == gi))
11131135 then {
1114- let gk = if (ga)
1136+ let gm = if (gc)
11151137 then {
1116- let gl = invoke(bg, "stake", nil, [AttachedPayment(cq, ds)])
1117- if ((gl == gl))
1138+ let gn = invoke(bg, "stake", nil, [AttachedPayment(cq, ds)])
1139+ if ((gn == gn))
11181140 then nil
11191141 else throw("Strict value is not equal to itself.")
11201142 }
11221144 let fx = if ((ck > 0))
11231145 then [ScriptTransfer(aL, ck, fromBase58String(cn))]
11241146 else nil
1125- $Tuple2(((cJ ++ gk) ++ fx), ds)
1147+ $Tuple2(((cJ ++ gm) ++ fx), ds)
11261148 }
11271149 else throw("Strict value is not equal to itself.")
11281150 }
11361158
11371159
11381160 @Callable(dN)
1139-func putForFree (gq) = if ((0 > gq))
1161+func putForFree (gs) = if ((0 > gs))
11401162 then throw("Wrong slpg")
11411163 else if ((size(dN.payments) != 2))
11421164 then throw("2 pmnts expd")
11431165 else {
1144- let gr = dP(toString(dN.caller), toBase58String(dN.transactionId), AttachedPayment(value(dN.payments[0]).assetId, value(dN.payments[0]).amount), dN.payments[1], gq, false, false, true, 0, "")
1145- gr._9
1166+ let gt = dP(toString(dN.caller), toBase58String(dN.transactionId), AttachedPayment(value(dN.payments[0]).assetId, value(dN.payments[0]).amount), dN.payments[1], gs, false, false, true, 0, "")
1167+ gt._9
11461168 }
11471169
11481170
11501172 @Callable(dN)
11511173 func get () = {
11521174 let df = dM(dN)
1153- let gs = df._1
1175+ let gu = df._1
11541176 let cI = df._2
11551177 let cT = df._3
11561178 let cn = df._4
11651187
11661188 @Callable(dN)
11671189 func getOneTknV2 (fg,fh) = {
1168- let gm = {
1190+ let go = {
11691191 let aG = invoke(aE, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
11701192 if ($isInstanceOf(aG, "Boolean"))
11711193 then aG
11721194 else throw(($getType(aG) + " couldn't be cast to Boolean"))
11731195 }
1174- let gt = if (if (aJ())
1196+ let gv = if (if (aJ())
11751197 then true
11761198 else (aY == q))
11771199 then true
1178- else gm
1179- let fR = [if (if (!(gt))
1200+ else go
1201+ let fT = [if (if (!(gv))
11801202 then true
11811203 else fC(dN))
11821204 then true
11831205 else aC("get operation is blocked by admin"), if ((size(dN.payments) == 1))
11841206 then true
11851207 else aC("exactly 1 payment are expected")]
1186- if ((fR == fR))
1208+ if ((fT == fT))
11871209 then {
1188- let gu = ff(fg, fh, dN.payments, dN.caller, dN.originCaller, dN.transactionId)
1189- let cJ = gu._1
1190- let fq = gu._2
1210+ let gw = ff(fg, fh, dN.payments, dN.caller, dN.originCaller, dN.transactionId)
1211+ let cJ = gw._1
1212+ let fq = gw._2
11911213 $Tuple2(cJ, fq)
11921214 }
11931215 else throw("Strict value is not equal to itself.")
11961218
11971219
11981220 @Callable(dN)
1199-func getOneTknV2READONLY (fg,gv) = {
1221+func getOneTknV2READONLY (fg,gx) = {
12001222 let aU = aM()
12011223 let cr = aU[u]
12021224 let cs = aU[v]
12031225 let cq = aU[t]
12041226 let dU = [toBigInt(bz(cr)), toBigInt(bz(cs))]
1205- let gw = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(cq)), "invalid lp asset").quantity)
1227+ let gy = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(cq)), "invalid lp asset").quantity)
12061228 let bM = dT(dU)
1207- let bL = (bM - fraction(toBigInt(gv), bM, gw))
1208- let gx = if ((fg == cr))
1229+ let bL = (bM - fraction(toBigInt(gx), bM, gy))
1230+ let gz = if ((fg == cr))
12091231 then 0
12101232 else if ((fg == cs))
12111233 then 1
12121234 else throw("invalid out asset id")
1213- let gy = ey(dU, gx, bL)
1214- let fN = (dU[gx] - gy)
1235+ let gA = ey(dU, gz, bL)
1236+ let fN = (dU[gz] - gA)
12151237 let fO = max([0, toInt((fN - f))])
1216- let gz = ch(fO, aH)
1217- let fp = gz._1
1218- let ck = gz._2
1238+ let gB = ch(fO, aH)
1239+ let fp = gB._1
1240+ let ck = gB._2
12191241 $Tuple2(nil, $Tuple2(fp, ck))
12201242 }
12211243
12221244
12231245
12241246 @Callable(dN)
1225-func getOneTknV2WithBonusREADONLY (fg,gv) = {
1247+func getOneTknV2WithBonusREADONLY (fg,gx) = {
12261248 let aU = aM()
12271249 let cr = aU[u]
12281250 let cs = aU[v]
12291251 let cq = aU[t]
12301252 let cx = bz(cr)
12311253 let cz = bz(cs)
1232- let gA = {
1233- let aG = invoke(this, "getOneTknV2READONLY", [fg, gv], nil)
1254+ let gC = {
1255+ let aG = invoke(this, "getOneTknV2READONLY", [fg, gx], nil)
12341256 if ($isInstanceOf(aG, "(Int, Int)"))
12351257 then aG
12361258 else throw(($getType(aG) + " couldn't be cast to (Int, Int)"))
12371259 }
1238- let fp = gA._1
1239- let ck = gA._2
1240- let df = cl("", cq, gv, this)
1260+ let fp = gC._1
1261+ let ck = gC._2
1262+ let df = cl("", cq, gx, this)
12411263 let cH = df._1
12421264 let cI = df._2
1243- let gB = (cH + cI)
1244- let fe = if ((gB == 0))
1265+ let gD = (cH + cI)
1266+ let fe = if ((gD == 0))
12451267 then if ((fp == 0))
12461268 then 0
12471269 else throw("bonus calculation error")
1248- else fraction((fp - gB), a, gB)
1270+ else fraction((fp - gD), a, gD)
12491271 $Tuple2(nil, $Tuple3(fp, ck, fe))
12501272 }
12511273
12521274
12531275
12541276 @Callable(dN)
1255-func getNoLess (gC,gD) = {
1277+func getNoLess (gE,gF) = {
12561278 let df = dM(dN)
12571279 let cH = df._1
12581280 let cI = df._2
12591281 let cT = df._3
12601282 let cn = df._4
12611283 let cJ = df._5
1262- if ((gC > cH))
1263- then throw(((("Failed: " + toString(cH)) + " < ") + toString(gC)))
1264- else if ((gD > cI))
1265- then throw(((("Failed: " + toString(cI)) + " < ") + toString(gD)))
1284+ if ((gE > cH))
1285+ then throw(((("Failed: " + toString(cH)) + " < ") + toString(gE)))
1286+ else if ((gF > cI))
1287+ then throw(((("Failed: " + toString(cI)) + " < ") + toString(gF)))
12661288 else {
1267- let gE = invoke(aE, "burn", [cT], [AttachedPayment(cn, cT)])
1268- if ((gE == gE))
1289+ let gG = invoke(aE, "burn", [cT], [AttachedPayment(cn, cT)])
1290+ if ((gG == gG))
12691291 then cJ
12701292 else throw("Strict value is not equal to itself.")
12711293 }
12751297
12761298 @Callable(dN)
12771299 func unstakeAndGet (ci) = {
1278- let gF = if ((size(dN.payments) != 0))
1300+ let gH = if ((size(dN.payments) != 0))
12791301 then throw("No pmnts expd")
12801302 else true
1281- if ((gF == gF))
1303+ if ((gH == gH))
12821304 then {
12831305 let bY = aM()
1284- let gG = be()
1285- let gf = fromBase58String(bY[t])
1286- let gH = valueOrErrorMessage(addressFromString(gG[A]), "Wr st addr")
1287- let gI = invoke(gH, "unstake", [toBase58String(gf), ci], nil)
1288- if ((gI == gI))
1306+ let gI = be()
1307+ let gh = fromBase58String(bY[t])
1308+ let gJ = valueOrErrorMessage(addressFromString(gI[A]), "Wr st addr")
1309+ let gK = invoke(gJ, "unstake", [toBase58String(gh), ci], nil)
1310+ if ((gK == gK))
12891311 then {
1290- let df = cl(toBase58String(dN.transactionId), toBase58String(gf), ci, dN.caller)
1312+ let df = cl(toBase58String(dN.transactionId), toBase58String(gh), ci, dN.caller)
12911313 let cv = parseIntValue(df._9)
12921314 let cJ = df._10
1293- let gJ = if (if (aJ())
1315+ let gL = if (if (aJ())
12941316 then true
12951317 else (cv == q))
12961318 then throw(("Blocked: " + toString(cv)))
12971319 else true
1298- if ((gJ == gJ))
1320+ if ((gL == gL))
12991321 then {
1300- let gK = invoke(aE, "burn", [ci], [AttachedPayment(gf, ci)])
1301- if ((gK == gK))
1322+ let gM = invoke(aE, "burn", [ci], [AttachedPayment(gh, ci)])
1323+ if ((gM == gM))
13021324 then cJ
13031325 else throw("Strict value is not equal to itself.")
13041326 }
13121334
13131335
13141336 @Callable(dN)
1315-func unstakeAndGetNoLess (gL,gM,gD) = {
1316- let gt = if (aJ())
1337+func unstakeAndGetNoLess (gN,gO,gF) = {
1338+ let gv = if (aJ())
13171339 then true
13181340 else (aY == q)
1319- let fR = [if (!(gt))
1341+ let fT = [if (!(gv))
13201342 then true
13211343 else throw("get operation is blocked by admin"), if ((size(dN.payments) == 0))
13221344 then true
13231345 else throw("no payments are expected")]
1324- if ((fR == fR))
1346+ if ((fT == fT))
13251347 then {
1326- let gI = invoke(bg, "unstake", [toBase58String(aZ), gL], nil)
1327- if ((gI == gI))
1348+ let gK = invoke(bg, "unstake", [toBase58String(aZ), gN], nil)
1349+ if ((gK == gK))
13281350 then {
1329- let gN = cl(toBase58String(dN.transactionId), toBase58String(aZ), gL, dN.caller)
1330- let cH = gN._1
1331- let cI = gN._2
1332- let cJ = gN._10
1333- let gO = [if ((cH >= gM))
1351+ let gP = cl(toBase58String(dN.transactionId), toBase58String(aZ), gN, dN.caller)
1352+ let cH = gP._1
1353+ let cI = gP._2
1354+ let cJ = gP._10
1355+ let gQ = [if ((cH >= gO))
13341356 then true
1335- else throw(makeString(["amount asset amount to receive is less than ", toString(gM)], "")), if ((cI >= gD))
1357+ else throw(makeString(["amount asset amount to receive is less than ", toString(gO)], "")), if ((cI >= gF))
13361358 then true
1337- else throw(makeString(["price asset amount to receive is less than ", toString(gD)], ""))]
1338- if ((gO == gO))
1359+ else throw(makeString(["price asset amount to receive is less than ", toString(gF)], ""))]
1360+ if ((gQ == gQ))
13391361 then {
1340- let gE = invoke(aE, "burn", [gL], [AttachedPayment(aZ, gL)])
1341- if ((gE == gE))
1362+ let gG = invoke(aE, "burn", [gN], [AttachedPayment(aZ, gN)])
1363+ if ((gG == gG))
13421364 then cJ
13431365 else throw("Strict value is not equal to itself.")
13441366 }
13521374
13531375
13541376 @Callable(dN)
1355-func unstakeAndGetOneTknV2 (gL,fg,fh) = {
1356- let gm = {
1377+func unstakeAndGetOneTknV2 (gN,fg,fh) = {
1378+ let go = {
13571379 let aG = invoke(aE, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
13581380 if ($isInstanceOf(aG, "Boolean"))
13591381 then aG
13601382 else throw(($getType(aG) + " couldn't be cast to Boolean"))
13611383 }
1362- let gt = if (if (aJ())
1384+ let gv = if (if (aJ())
13631385 then true
13641386 else (aY == q))
13651387 then true
1366- else gm
1367- let fR = [if (if (!(gt))
1388+ else go
1389+ let fT = [if (if (!(gv))
13681390 then true
13691391 else fC(dN))
13701392 then true
13711393 else aC("get operation is blocked by admin"), if ((size(dN.payments) == 0))
13721394 then true
13731395 else aC("no payments are expected")]
1374- if ((fR == fR))
1396+ if ((fT == fT))
13751397 then {
13761398 let bY = aM()
1377- let gG = be()
1378- let gf = fromBase58String(bY[t])
1379- let gH = valueOrErrorMessage(addressFromString(gG[A]), "Wr st addr")
1380- let gI = invoke(gH, "unstake", [toBase58String(gf), gL], nil)
1381- if ((gI == gI))
1399+ let gI = be()
1400+ let gh = fromBase58String(bY[t])
1401+ let gJ = valueOrErrorMessage(addressFromString(gI[A]), "Wr st addr")
1402+ let gK = invoke(gJ, "unstake", [toBase58String(gh), gN], nil)
1403+ if ((gK == gK))
13821404 then {
1383- let gP = ff(fg, fh, [AttachedPayment(gf, gL)], dN.caller, dN.originCaller, dN.transactionId)
1384- let cJ = gP._1
1385- let fq = gP._2
1405+ let gR = ff(fg, fh, [AttachedPayment(gh, gN)], dN.caller, dN.originCaller, dN.transactionId)
1406+ let cJ = gR._1
1407+ let fq = gR._2
13861408 $Tuple2(cJ, fq)
13871409 }
13881410 else throw("Strict value is not equal to itself.")
13931415
13941416
13951417 @Callable(dN)
1396-func putOneTknV2WithBonusREADONLY (gQ,gR) = {
1418+func putOneTknV2WithBonusREADONLY (gS,gT) = {
13971419 let aU = aM()
13981420 let cr = aU[u]
13991421 let cs = aU[v]
14001422 let cq = aU[t]
1401- let gS = eI(gQ, gR, "", "", true)
1402- let eZ = gS._1
1403- let cJ = gS._2
1404- let ck = gS._3
1405- let fe = gS._4
1423+ let gU = eI(gS, gT, "", "", true)
1424+ let eZ = gU._1
1425+ let cJ = gU._2
1426+ let ck = gU._3
1427+ let fe = gU._4
14061428 $Tuple2(nil, $Tuple3(eZ, ck, fe))
14071429 }
14081430
14091431
14101432
14111433 @Callable(dN)
1412-func putOneTknV2WithoutTakeFeeREADONLY (gQ,gR) = {
1434+func putOneTknV2WithoutTakeFeeREADONLY (gS,gT) = {
14131435 let aU = aM()
14141436 let cr = aU[u]
14151437 let cs = aU[v]
14161438 let cq = aU[t]
1417- let gT = eI(gQ, gR, "", "", false)
1418- let eZ = gT._1
1419- let cJ = gT._2
1420- let ck = gT._3
1421- let fe = gT._4
1439+ let gV = eI(gS, gT, "", "", false)
1440+ let eZ = gV._1
1441+ let cJ = gV._2
1442+ let ck = gV._3
1443+ let fe = gV._4
14221444 $Tuple2(nil, $Tuple3(eZ, ck, fe))
14231445 }
14241446
14251447
14261448
14271449 @Callable(dN)
1428-func activate (gU,gV) = if ((toString(dN.caller) != toString(aE)))
1450+func activate (gW,gX) = if ((toString(dN.caller) != toString(aE)))
14291451 then throw("denied")
1430- else $Tuple2([StringEntry(ac(), gU), StringEntry(ad(), gV)], "success")
1452+ else $Tuple2([StringEntry(ac(), gW), StringEntry(ad(), gX)], "success")
14311453
14321454
14331455
14341456 @Callable(dN)
1435-func setS (gW,gJ) = if ((toString(dN.caller) != ay(this, af())))
1457+func setS (gY,gL) = if ((toString(dN.caller) != ay(this, af())))
14361458 then fB
1437- else [StringEntry(gW, gJ)]
1459+ else [StringEntry(gY, gL)]
14381460
14391461
14401462
14411463 @Callable(dN)
1442-func setI (gW,gJ) = if ((toString(dN.caller) != ay(this, af())))
1464+func setI (gY,gL) = if ((toString(dN.caller) != ay(this, af())))
14431465 then fB
1444- else [IntegerEntry(gW, gJ)]
1466+ else [IntegerEntry(gY, gL)]
14451467
14461468
14471469
14571479
14581480 @Callable(dN)
14591481 func calcPricesWrapperREADONLY (bS,bT,bX) = {
1460- let gX = bW(bS, bT, bX)
1461- $Tuple2(nil, [toString(gX[0]), toString(gX[1]), toString(gX[2])])
1482+ let gZ = bW(bS, bT, bX)
1483+ $Tuple2(nil, [toString(gZ[0]), toString(gZ[1]), toString(gZ[2])])
14621484 }
14631485
14641486
14651487
14661488 @Callable(dN)
1467-func fromX18WrapperREADONLY (J,gY) = $Tuple2(nil, I(parseBigIntValue(J), gY))
1489+func fromX18WrapperREADONLY (J,ha) = $Tuple2(nil, I(parseBigIntValue(J), ha))
14681490
14691491
14701492
14791501
14801502
14811503 @Callable(dN)
1482-func estimatePutOperationWrapperREADONLY (cm,bH,cL,cM,cN,cO,gZ,cP,cQ) = $Tuple2(nil, cK(cm, bH, cL, cM, cN, cO, gZ, cP, cQ, true, false, 0, ""))
1504+func estimatePutOperationWrapperREADONLY (cm,bH,cL,cM,cN,cO,hb,cP,cQ) = $Tuple2(nil, cK(cm, bH, cL, cM, cN, cO, hb, cP, cQ, true, false, 0, ""))
14831505
14841506
14851507
14861508 @Callable(dN)
1487-func estimateGetOperationWrapperREADONLY (cm,ha,co,gZ) = {
1488- let df = cl(cm, ha, co, addressFromStringValue(gZ))
1509+func estimateGetOperationWrapperREADONLY (cm,hc,co,hb) = {
1510+ let df = cl(cm, hc, co, addressFromStringValue(hb))
14891511 $Tuple2(nil, $Tuple10(df._1, df._2, df._3, df._4, df._5, df._6, df._7, toString(df._8), df._9, df._10))
14901512 }
14911513
14921514
1493-@Verifier(hb)
1494-func hc () = {
1495- let hd = {
1515+@Verifier(hd)
1516+func he () = {
1517+ let hf = {
14961518 let aw = fz()
14971519 if ($isInstanceOf(aw, "ByteVector"))
14981520 then {
15001522 fD
15011523 }
15021524 else if ($isInstanceOf(aw, "Unit"))
1503- then hb.senderPublicKey
1525+ then hd.senderPublicKey
15041526 else throw("Match error")
15051527 }
1506- let aw = hb
1528+ let aw = hd
15071529 if ($isInstanceOf(aw, "Order"))
15081530 then {
15091531 let dA = aw
1510- let he = aK()
1511- let hf = dz(dA)
1512- let hg = sigVerify(dA.bodyBytes, dA.proofs[0], dA.senderPublicKey)
1513- let hh = sigVerify(dA.bodyBytes, dA.proofs[1], he)
1514- if (if (if (hf)
1515- then hg
1532+ let hg = aK()
1533+ let hh = dz(dA)
1534+ let hi = sigVerify(dA.bodyBytes, dA.proofs[0], dA.senderPublicKey)
1535+ let hj = sigVerify(dA.bodyBytes, dA.proofs[1], hg)
1536+ if (if (if (hh)
1537+ then hi
15161538 else false)
1517- then hh
1539+ then hj
15181540 else false)
15191541 then true
1520- else ar(hf, hg, hh)
1542+ else ar(hh, hi, hj)
15211543 }
15221544 else if ($isInstanceOf(aw, "SetScriptTransaction"))
15231545 then {
15241546 let ea = aw
1525- let hi = blake2b256(value(ea.script))
1526- let hj = fromBase64String(value(getString(aE, ap())))
1527- let hk = scriptHash(this)
1528- if (if ((hj == hi))
1529- then (hk != hi)
1547+ let hk = blake2b256(value(ea.script))
1548+ let hl = fromBase64String(value(getString(aE, ap())))
1549+ let hm = scriptHash(this)
1550+ if (if ((hl == hk))
1551+ then (hm != hk)
15301552 else false)
15311553 then true
1532- else sigVerify(hb.bodyBytes, hb.proofs[0], hd)
1554+ else sigVerify(hd.bodyBytes, hd.proofs[0], hf)
15331555 }
1534- else sigVerify(hb.bodyBytes, hb.proofs[0], hd)
1556+ else sigVerify(hd.bodyBytes, hd.proofs[0], hf)
15351557 }
15361558
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 100000000
55
66 let b = toBigInt(100000000)
77
88 let c = toBigInt(1000000000000000000)
99
1010 let d = toBigInt(0)
1111
1212 let e = toBigInt(0)
1313
1414 let f = toBigInt(1)
1515
1616 let g = toBigInt(2)
1717
1818 let h = toBigInt((a - ((a * 1) / a)))
1919
2020 let i = "WAVES"
2121
2222 let j = "100"
2323
2424 let k = "1"
2525
2626 let l = "__"
2727
2828 let m = ""
2929
3030 let n = 1
3131
3232 let o = 2
3333
3434 let p = 3
3535
3636 let q = 4
3737
3838 let r = 1
3939
4040 let s = 2
4141
4242 let t = 3
4343
4444 let u = 4
4545
4646 let v = 5
4747
4848 let w = 6
4949
5050 let x = 7
5151
5252 let y = 8
5353
5454 let z = 9
5555
5656 let A = 1
5757
5858 let B = 6
5959
6060 let C = 7
6161
6262 let D = 10
6363
6464 let E = fraction(10, a, 10000)
6565
6666 func F (G,H) = fraction(toBigInt(G), c, toBigInt(H))
6767
6868
6969 func I (J,K) = toInt(fraction(J, toBigInt(K), c))
7070
7171
7272 func L (M,N,O) = fraction(M, N, O)
7373
7474
7575 func P (J) = if ((d > J))
7676 then -(J)
7777 else J
7878
7979
8080 func Q (J) = if ((d > J))
8181 then -(J)
8282 else J
8383
8484
8585 func R () = "%s__factoryContract"
8686
8787
8888 func S () = "%s__managerPublicKey"
8989
9090
9191 func T () = "%s__pendingManagerPublicKey"
9292
9393
9494 func U () = "%s%s__price__last"
9595
9696
9797 func V (W,X) = makeString(["%s%s%d%d__price__history", toString(W), toString(X)], l)
9898
9999
100100 func Y (Z,aa) = ((("%s%s%s__P__" + Z) + "__") + aa)
101101
102102
103103 func ab (Z,aa) = ((("%s%s%s__G__" + Z) + "__") + aa)
104104
105105
106106 func ac () = "%s__amountAsset"
107107
108108
109109 func ad () = "%s__priceAsset"
110110
111111
112112 func ae () = "%s__amp"
113113
114114
115115 func af () = "%s__addonAddr"
116116
117117
118118 func ag () = "%s__swapContract"
119119
120120
121121 func ah () = "%s__factoryConfig"
122122
123123
124124 func ai () = "%s%s__matcher__publicKey"
125125
126126
127127 func aj (ak,al) = (((("%d%d%s__" + ak) + "__") + al) + "__config")
128128
129129
130130 func am (an) = ("%s%s%s__mappings__baseAsset2internalId__" + an)
131131
132132
133133 func ao () = "%s__shutdown"
134134
135135
136136 func ap () = "%s__allowedLpStableScriptHash"
137137
138138
139139 func aq () = "%s__feeCollectorAddress"
140140
141141
142142 func ar (as,at,au) = throw(((((("Failed: ordValid=" + toString(as)) + " sndrValid=") + toString(at)) + " mtchrValid=") + toString(au)))
143143
144144
145145 func av (J) = {
146146 let aw = J
147147 if ($isInstanceOf(aw, "String"))
148148 then {
149149 let ax = aw
150150 ax
151151 }
152152 else throw("fail cast to String")
153153 }
154154
155155
156156 func ay (az,aA) = valueOrErrorMessage(getString(az, aA), makeString(["mandatory ", toString(az), ".", aA, " not defined"], ""))
157157
158158
159159 func aB (az,aA) = valueOrErrorMessage(getInteger(az, aA), makeString(["mandatory ", toString(az), ".", aA, " not defined"], ""))
160160
161161
162162 func aC (aD) = throw(makeString(["lp_stable.ride:", aD], " "))
163163
164164
165165 let aE = addressFromStringValue(ay(this, R()))
166166
167167 let aF = {
168168 let aG = invoke(aE, "getInFeeREADONLY", [toString(this)], nil)
169169 if ($isInstanceOf(aG, "Int"))
170170 then aG
171171 else throw(($getType(aG) + " couldn't be cast to Int"))
172172 }
173173
174174 let aH = {
175175 let aG = invoke(aE, "getOutFeeREADONLY", [toString(this)], nil)
176176 if ($isInstanceOf(aG, "Int"))
177177 then aG
178178 else throw(($getType(aG) + " couldn't be cast to Int"))
179179 }
180180
181181 let aI = ay(this, ae())
182182
183183 func aJ () = valueOrElse(getBoolean(aE, ao()), false)
184184
185185
186186 func aK () = fromBase58String(ay(aE, ai()))
187187
188188
189189 let aL = addressFromStringValue(ay(aE, aq()))
190190
191191 func aM () = {
192192 let aN = ay(this, ac())
193193 let aO = ay(this, ad())
194194 let aP = aB(aE, am(aO))
195195 let ak = aB(aE, am(aN))
196196 split(ay(aE, aj(toString(ak), toString(aP))), l)
197197 }
198198
199199
200200 func aQ (aR) = if ((aR == i))
201201 then unit
202202 else fromBase58String(aR)
203203
204204
205205 func aS (aR) = if ((aR == unit))
206206 then i
207207 else toBase58String(value(aR))
208208
209209
210210 func aT (aU) = $Tuple7(addressFromStringValue(aU[r]), parseIntValue(aU[s]), fromBase58String(aU[t]), aQ(aU[u]), aQ(aU[v]), parseIntValue(aU[w]), parseIntValue(aU[x]))
211211
212212
213213 let aV = aT(aM())
214214
215215 let aW = aV
216216
217217 let aX = aW._1
218218
219219 let aY = aW._2
220220
221221 let aZ = aW._3
222222
223223 let ba = aW._4
224224
225225 let bb = aW._5
226226
227227 let bc = aW._6
228228
229229 let bd = aW._7
230230
231231 func be () = split(ay(aE, ah()), l)
232232
233233
234234 let bf = be()
235235
236236 let bg = valueOrErrorMessage(addressFromString(bf[A]), "Invalid staking contract address")
237237
238238 let bh = valueOrErrorMessage(addressFromString(bf[C]), "Invalid slipage contract address")
239239
240240 let bi = valueOrErrorMessage(addressFromString(bf[D]), "Invalid gwx contract address")
241241
242242 let bj = valueOrErrorMessage(addressFromString(bf[B]), "Invalid gwx contract address")
243243
244244 func bk (bl,bm,bn,bo,bp,bq,br,bs,bt,bu) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bl), toString(bm), toString(bn), toString(bo), toString(bp), toString(bq), toString(br), toString(bs), toString(bt), toString(bu)], l)
245245
246246
247247 func bv (bw,bx,by,bo,br,bs) = makeString(["%d%d%d%d%d%d", toString(bw), toString(bx), toString(by), toString(bo), toString(br), toString(bs)], l)
248248
249249
250250 func bz (bA) = if ((bA == "WAVES"))
251251 then wavesBalance(this).available
252252 else assetBalance(this, fromBase58String(bA))
253253
254254
255255 func bB (bC,bD) = fraction(bC, c, bD)
256256
257257
258258 func bE (bF,bG,bH) = {
259259 let bI = fraction((bF - bG), b, bG)
260260 let bJ = ((bH - P(bI)) > d)
261261 if (!(bJ))
262262 then throw(("Big slpg: " + toString(bI)))
263263 else $Tuple2(bJ, min([bF, bG]))
264264 }
265265
266266
267267 func bK (bL,bM,bN) = {
268268 let bI = fraction(bM, b, bL)
269269 let bO = (bN > bI)
270270 if (if (bO)
271271 then true
272272 else (bM > bL))
273273 then throw(((((((toString(bM) + " ") + toString(bL)) + " ") + toString(bI)) + " ") + toString(bN)))
274274 else bO
275275 }
276276
277277
278278 func bP (bQ,bR,bS,bT) = {
279279 let bU = F(bS, bQ)
280280 let bV = F(bT, bR)
281281 bB(bV, bU)
282282 }
283283
284284
285285 func bW (bS,bT,bX) = {
286286 let bY = aM()
287287 let bZ = parseIntValue(bY[w])
288288 let ca = parseIntValue(bY[x])
289289 let cb = bP(bZ, ca, bS, bT)
290290 let bD = F(bS, bZ)
291291 let bC = F(bT, ca)
292292 let cc = F(bX, a)
293293 let cd = bB(bD, cc)
294294 let ce = bB(bC, cc)
295295 [cb, cd, ce]
296296 }
297297
298298
299299 func cf (bS,bT,bX) = {
300300 let cg = bW(bS, bT, bX)
301301 [I(cg[0], a), I(cg[1], a), I(cg[2], a)]
302302 }
303303
304304
305305 func ch (ci,cj) = {
306306 let ck = if ((cj == 0))
307307 then 0
308308 else fraction(ci, cj, a)
309309 $Tuple2((ci - ck), ck)
310310 }
311311
312312
313313 func cl (cm,cn,co,cp) = {
314314 let bY = aM()
315315 let cq = bY[t]
316316 let cr = bY[u]
317317 let cs = bY[v]
318318 let ct = parseIntValue(bY[w])
319319 let cu = parseIntValue(bY[x])
320320 let cv = bY[s]
321321 let cw = valueOrErrorMessage(assetInfo(fromBase58String(cq)), "Wrong LP id").quantity
322322 if ((cq != cn))
323323 then throw("Wrong pmt asset")
324324 else {
325325 let cx = bz(cr)
326326 let cy = F(cx, ct)
327327 let cz = bz(cs)
328328 let cA = F(cz, cu)
329329 let cB = bB(cA, cy)
330330 let cC = I(cB, a)
331331 let cD = F(co, a)
332332 let cE = F(cw, a)
333333 let cF = fraction(cy, cD, cE)
334334 let cG = fraction(cA, cD, cE)
335335 let cH = I(cF, ct)
336336 let cI = I(cG, cu)
337337 let cJ = if ((cm == ""))
338338 then nil
339339 else [ScriptTransfer(cp, cH, if ((cr == "WAVES"))
340340 then unit
341341 else fromBase58String(cr)), ScriptTransfer(cp, cI, if ((cs == "WAVES"))
342342 then unit
343343 else fromBase58String(cs)), StringEntry(ab(toString(cp), cm), bv(cH, cI, co, cC, height, lastBlock.timestamp)), IntegerEntry(U(), cC), IntegerEntry(V(height, lastBlock.timestamp), cC)]
344344 $Tuple10(cH, cI, cr, cs, cx, cz, cw, cB, cv, cJ)
345345 }
346346 }
347347
348348
349349 func cK (cm,bH,cL,cM,cN,cO,cp,cP,cQ,cR,cS,cT,cU) = {
350350 let bY = aM()
351351 let cq = fromBase58String(bY[t])
352352 let cV = bY[u]
353353 let cW = bY[v]
354354 let cX = bY[y]
355355 let cY = bY[z]
356356 let cZ = parseIntValue(bY[w])
357357 let da = parseIntValue(bY[x])
358358 let cv = bY[s]
359359 let db = valueOrErrorMessage(assetInfo(cq), "Wr lp as").quantity
360360 let cx = if (cP)
361361 then bz(cV)
362362 else if (if (cR)
363363 then (cU == cV)
364364 else false)
365365 then (bz(cV) - cT)
366366 else if (cR)
367367 then bz(cV)
368368 else (bz(cV) - cL)
369369 let cz = if (cP)
370370 then bz(cW)
371371 else if (if (cR)
372372 then (cU == cW)
373373 else false)
374374 then (bz(cW) - cT)
375375 else if (cR)
376376 then bz(cW)
377377 else (bz(cW) - cN)
378378 let dc = F(cL, cZ)
379379 let dd = F(cN, da)
380380 let de = bB(dd, dc)
381381 let cy = F(cx, cZ)
382382 let cA = F(cz, da)
383383 let df = if ((db == 0))
384384 then {
385385 let cB = d
386386 let dg = d
387387 let cc = pow((dc * dd), 0, toBigInt(5), 1, 0, DOWN)
388388 $Tuple5(I(cc, a), I(dc, cZ), I(dd, da), bB((cA + dd), (cy + dc)), dg)
389389 }
390390 else {
391391 let cB = bB(cA, cy)
392392 let dh = fraction(P((cB - de)), c, cB)
393393 let dg = F(bH, a)
394394 if (if (if (cS)
395395 then (cB != d)
396396 else false)
397397 then (dh > dg)
398398 else false)
399399 then throw(((("Price slippage " + toString(dh)) + " > ") + toString(dg)))
400400 else {
401401 let di = F(db, a)
402402 let dj = fraction(dc, cB, c)
403403 let dk = fraction(dd, c, cB)
404404 let dl = if ((dj > dd))
405405 then $Tuple2(dk, dd)
406406 else $Tuple2(dc, dj)
407407 let dm = dl._1
408408 let dn = dl._2
409409 let cc = fraction(di, dn, cA)
410410 $Tuple5(I(cc, a), I(dm, cZ), I(dn, da), cB, dg)
411411 }
412412 }
413413 let do = df._1
414414 let dp = df._2
415415 let dq = df._3
416416 let cC = I(df._4, a)
417417 let dr = I(df._5, a)
418418 if ((0 >= do))
419419 then throw("LP <= 0")
420420 else {
421421 let ds = if (!(cQ))
422422 then 0
423423 else do
424424 let dt = (cL - dp)
425425 let du = (cN - dq)
426426 let dv = if (if (cR)
427427 then (cU == cV)
428428 else false)
429429 then $Tuple2(cT, 0)
430430 else if (if (cR)
431431 then (cU == cW)
432432 else false)
433433 then $Tuple2(0, cT)
434434 else $Tuple2(dp, dq)
435435 let dw = dv._1
436436 let dx = dv._2
437437 let dy = [IntegerEntry(U(), cC), IntegerEntry(V(height, lastBlock.timestamp), cC), StringEntry(Y(cp, cm), bk(dw, dx, ds, cC, bH, dr, height, lastBlock.timestamp, dt, du))]
438438 $Tuple13(do, ds, cC, cx, cz, db, cq, cv, dy, dt, du, cM, cO)
439439 }
440440 }
441441
442442
443443 func dz (dA) = {
444444 let bY = aM()
445445 let dB = bY[u]
446446 let dC = bY[v]
447447 let cv = parseIntValue(bY[s])
448448 let bZ = parseIntValue(bY[w])
449449 let ca = parseIntValue(bY[x])
450450 let dD = bz(dB)
451451 let dE = bz(dC)
452452 let cB = if ((dA.orderType == Buy))
453453 then bP(bZ, ca, (dD + dA.amount), dE)
454454 else bP(bZ, ca, (dD - dA.amount), dE)
455455 let cC = I(cB, a)
456456 if (if (if (aJ())
457457 then true
458458 else (cv == p))
459459 then true
460460 else (cv == q))
461461 then throw("Admin blocked")
462462 else {
463463 let dF = dA.assetPair.amountAsset
464464 let dG = if ((dF == unit))
465465 then "WAVES"
466466 else toBase58String(value(dF))
467467 let dH = dA.assetPair.priceAsset
468468 let dI = if ((dH == unit))
469469 then "WAVES"
470470 else toBase58String(value(dH))
471471 if (if ((dG != dB))
472472 then true
473473 else (dI != dC))
474474 then throw("Wr assets")
475475 else {
476476 let dJ = dA.price
477477 let da = fraction(a, ca, bZ)
478478 let dK = L(dJ, a, da)
479479 let dL = if ((dA.orderType == Buy))
480480 then (cC >= dK)
481481 else (dK >= cC)
482482 true
483483 }
484484 }
485485 }
486486
487487
488488 func dM (dN) = if ((size(dN.payments) != 1))
489489 then throw("1 pmnt exp")
490490 else {
491491 let dO = value(dN.payments[0])
492492 let cn = value(dO.assetId)
493493 let cT = dO.amount
494494 let df = cl(toBase58String(dN.transactionId), toBase58String(cn), cT, dN.caller)
495495 let cH = df._1
496496 let cI = df._2
497497 let cv = parseIntValue(df._9)
498498 let cJ = df._10
499499 if (if (aJ())
500500 then true
501501 else (cv == q))
502502 then throw(("Admin blocked: " + toString(cv)))
503503 else $Tuple5(cH, cI, cT, cn, cJ)
504504 }
505505
506506
507507 func dP (dQ,aa,dR,dS,bH,cQ,cR,cS,cT,cU) = {
508508 let df = cK(aa, bH, value(dR).amount, value(dR).assetId, value(dS).amount, value(dS).assetId, dQ, (aa == ""), cQ, cR, cS, cT, cU)
509509 let cv = parseIntValue(df._8)
510510 if (if (if (aJ())
511511 then true
512512 else (cv == o))
513513 then true
514514 else (cv == q))
515515 then throw(("Blocked:" + toString(cv)))
516516 else df
517517 }
518518
519519
520520 func dT (dU) = {
521521 let dV = g
522522 let dW = dU[0]
523523 let dX = dU[1]
524524 let dY = parseBigIntValue(j)
525525 let dZ = (parseBigIntValue(aI) * dY)
526526 let ea = (dW + dX)
527527 if ((ea == e))
528528 then e
529529 else {
530530 let eb = (dZ * dV)
531531 let ec = (((dW * dX) * dV) * dV)
532532 let ed = ((eb * ea) / dY)
533533 let ee = (eb - dY)
534534 let ef = (dV + f)
535535 func eg (eh,ei) = {
536536 let ej = eh
537537 let ek = ej._1
538538 let el = ej._2
539539 if ((el != unit))
540540 then eh
541541 else {
542542 let em = (((ek * ek) * ek) / ec)
543543 let en = (((ed + (em * dV)) * ek) / (((ee * ek) / dY) + (ef * em)))
544544 let eo = Q((en - value(ek)))
545545 if ((f >= eo))
546546 then $Tuple2(en, ei)
547547 else $Tuple2(en, unit)
548548 }
549549 }
550550
551551 let ep = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
552552 let eq = {
553553 let er = ep
554554 let es = size(er)
555555 let et = $Tuple2(ea, unit)
556556 func eu (ev,ew) = if ((ew >= es))
557557 then ev
558558 else eg(ev, er[ew])
559559
560560 func ex (ev,ew) = if ((ew >= es))
561561 then ev
562562 else throw("List size exceeds 15")
563563
564564 ex(eu(eu(eu(eu(eu(eu(eu(eu(eu(eu(eu(eu(eu(eu(eu(et, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
565565 }
566566 let ek = eq._1
567567 let el = eq._2
568568 if ((el != unit))
569569 then ek
570570 else throw(("D calculation error, D = " + toString(ek)))
571571 }
572572 }
573573
574574
575575 func ey (dU,dN,ez) = {
576576 let dV = g
577577 let eA = dU[if ((dN == 0))
578578 then 1
579579 else 0]
580580 let dY = parseBigIntValue(j)
581581 let dZ = (parseBigIntValue(aI) * dY)
582582 let ea = eA
583583 let eb = (dZ * dV)
584584 let eB = (((((ez * ez) / (eA * dV)) * ez) * dY) / (eb * dV))
585585 let eC = ((ea + ((ez * dY) / eb)) - ez)
586586 func eg (eh,ei) = {
587587 let eD = eh
588588 let eE = eD._1
589589 let el = eD._2
590590 if ((el != unit))
591591 then eh
592592 else {
593593 let eF = (((eE * eE) + eB) / ((g * eE) + eC))
594594 let eG = Q((eF - value(eE)))
595595 if ((f >= eG))
596596 then $Tuple2(eF, ei)
597597 else $Tuple2(eF, unit)
598598 }
599599 }
600600
601601 let ep = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
602602 let eH = {
603603 let er = ep
604604 let es = size(er)
605605 let et = $Tuple2(ez, unit)
606606 func eu (ev,ew) = if ((ew >= es))
607607 then ev
608608 else eg(ev, er[ew])
609609
610610 func ex (ev,ew) = if ((ew >= es))
611611 then ev
612612 else throw("List size exceeds 15")
613613
614614 ex(eu(eu(eu(eu(eu(eu(eu(eu(eu(eu(eu(eu(eu(eu(eu(et, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
615615 }
616616 let eE = eH._1
617617 let el = eH._2
618618 if ((el != unit))
619619 then eE
620620 else throw(("Y calculation error, Y = " + toString(eE)))
621621 }
622622
623623
624624 func eI (eJ,cn,cp,aa,eK) = {
625625 let aU = aM()
626626 let cr = aU[u]
627627 let cs = aU[v]
628628 let cq = aU[t]
629629 let cZ = parseIntValue(aU[w])
630630 let da = parseIntValue(aU[x])
631631 let eL = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(cq)), "invalid lp asset").quantity)
632632 let eM = if ((eL > e))
633633 then true
634634 else throw("initial deposit requires all coins")
635635 if ((eM == eM))
636636 then {
637637 let cx = bz(cr)
638638 let cz = bz(cs)
639639 let eN = if ((aa == ""))
640640 then $Tuple2(cx, cz)
641641 else if ((cn == cr))
642642 then if ((eJ > cx))
643643 then throw("invalid payment amount")
644644 else $Tuple2((cx - eJ), cz)
645645 else if ((cn == cs))
646646 then if ((eJ > cz))
647647 then throw("invalid payment amount")
648648 else $Tuple2(cx, (cz - eJ))
649649 else throw("wrong pmtAssetId")
650650 let eO = eN._1
651651 let eP = eN._2
652652 let eQ = if ((cn == cr))
653653 then $Tuple2(eJ, 0)
654654 else if ((cn == cs))
655655 then $Tuple2(0, eJ)
656656 else throw("invalid payment")
657657 let eR = eQ._1
658658 let eS = eQ._2
659659 let eT = if (eK)
660660 then $Tuple3(ch(eR, aF)._1, ch(eS, aF)._1, ch(eJ, aF)._2)
661661 else $Tuple3(eR, eS, 0)
662662 let eU = eT._1
663663 let eV = eT._2
664664 let ck = eT._3
665665 let eW = (eO + eU)
666666 let eX = (eP + eV)
667667 let bM = dT([toBigInt(eO), toBigInt(eP)])
668668 let bL = dT([toBigInt(eW), toBigInt(eX)])
669669 let eY = if ((bL > bM))
670670 then true
671671 else throw()
672672 if ((eY == eY))
673673 then {
674674 let eZ = fraction(eL, (bL - bM), bM)
675675 let cC = I(bB(F(eX, da), F(eW, cZ)), a)
676676 let dy = [IntegerEntry(U(), cC), IntegerEntry(V(height, lastBlock.timestamp), cC), StringEntry(Y(cp, aa), bk(eR, eS, toInt(eZ), cC, 0, 0, height, lastBlock.timestamp, 0, 0))]
677677 let fa = fraction(eP, a, eO)
678678 let fb = fraction(eJ, a, (fa + a))
679679 let fc = (eJ - fb)
680680 let fd = fraction(eL, toBigInt(fc), toBigInt(eP))
681681 let fe = toInt(fraction((eZ - fd), b, fd))
682682 $Tuple4(toInt(eZ), dy, ck, fe)
683683 }
684684 else throw("Strict value is not equal to itself.")
685685 }
686686 else throw("Strict value is not equal to itself.")
687687 }
688688
689689
690690 func ff (fg,fh,fi,dQ,fj,fk) = {
691691 let aU = aM()
692692 let cq = aU[t]
693693 let cr = aU[u]
694694 let cs = aU[v]
695695 let fl = parseIntValue(aU[w])
696696 let fm = parseIntValue(aU[x])
697697 let fn = aU[s]
698698 let cp = if ((dQ == bj))
699699 then fj
700700 else dQ
701701 let dO = value(fi[0])
702702 let cn = value(dO.assetId)
703703 let cT = dO.amount
704704 let cm = toBase58String(fk)
705705 if ((cq != toBase58String(cn)))
706706 then throw("Wrong LP")
707707 else {
708708 let cx = bz(cr)
709709 let cz = bz(cs)
710710 let fo = {
711711 let aG = invoke(this, "getOneTknV2READONLY", [fg, cT], nil)
712712 if ($isInstanceOf(aG, "(Int, Int)"))
713713 then aG
714714 else throw(($getType(aG) + " couldn't be cast to (Int, Int)"))
715715 }
716716 if ((fo == fo))
717717 then {
718718 let ck = fo._2
719719 let fp = fo._1
720720 let fq = if (if ((fh > 0))
721721 then (fh > fp)
722722 else false)
723723 then aC(makeString(["amount to receive is less than ", toString(fh)], ""))
724724 else fp
725725 let fr = if ((fg == cr))
726726 then $Tuple4(fq, 0, ((cx - fq) - ck), cz)
727727 else if ((fg == cs))
728728 then $Tuple4(0, fq, cx, ((cz - fq) - ck))
729729 else throw("invalid out asset id")
730730 let fs = fr._1
731731 let ft = fr._2
732732 let eW = fr._3
733733 let eX = fr._4
734734 let fu = bB(F(eX, fm), F(eW, fl))
735735 let fv = I(fu, a)
736736 let fw = if ((fg == "WAVES"))
737737 then unit
738738 else fromBase58String(fg)
739739 let fx = if ((ck > 0))
740740 then [ScriptTransfer(aL, ck, fw)]
741741 else nil
742742 let cJ = ([ScriptTransfer(cp, fq, fw), StringEntry(ab(toString(cp), cm), bv(fs, ft, cT, fv, height, lastBlock.timestamp)), IntegerEntry(U(), fv), IntegerEntry(V(height, lastBlock.timestamp), fv)] ++ fx)
743743 if ((cJ == cJ))
744744 then {
745745 let fy = invoke(aE, "burn", [cT], [AttachedPayment(cn, cT)])
746746 if ((fy == fy))
747747 then $Tuple2(cJ, fq)
748748 else throw("Strict value is not equal to itself.")
749749 }
750750 else throw("Strict value is not equal to itself.")
751751 }
752752 else throw("Strict value is not equal to itself.")
753753 }
754754 }
755755
756756
757757 func fz () = {
758758 let aw = getString(S())
759759 if ($isInstanceOf(aw, "String"))
760760 then {
761761 let ea = aw
762762 fromBase58String(ea)
763763 }
764764 else if ($isInstanceOf(aw, "Unit"))
765765 then unit
766766 else throw("Match error")
767767 }
768768
769769
770770 func fA () = {
771771 let aw = getString(T())
772772 if ($isInstanceOf(aw, "String"))
773773 then {
774774 let ea = aw
775775 fromBase58String(ea)
776776 }
777777 else if ($isInstanceOf(aw, "Unit"))
778778 then unit
779779 else throw("Match error")
780780 }
781781
782782
783783 let fB = throw("Permission denied")
784784
785785 func fC (dN) = {
786786 let aw = fz()
787787 if ($isInstanceOf(aw, "ByteVector"))
788788 then {
789789 let fD = aw
790790 (dN.callerPublicKey == fD)
791791 }
792792 else if ($isInstanceOf(aw, "Unit"))
793793 then (dN.caller == this)
794794 else throw("Match error")
795795 }
796796
797797
798798 func fE (dN) = {
799799 let aw = fz()
800800 if ($isInstanceOf(aw, "ByteVector"))
801801 then {
802802 let fD = aw
803803 if ((dN.callerPublicKey == fD))
804804 then true
805805 else fB
806806 }
807807 else if ($isInstanceOf(aw, "Unit"))
808808 then if ((dN.caller == this))
809809 then true
810810 else fB
811811 else throw("Match error")
812812 }
813813
814814
815815 func fF (fG,ez,fH) = {
816816 let aU = aM()
817817 let cr = aU[u]
818818 let cs = aU[v]
819819 let dV = g
820820 let dY = parseBigIntValue(j)
821821 let dZ = (parseBigIntValue(aI) * dY)
822822 let dU = if ((fG == false))
823823 then [(toBigInt(bz(cr)) - fH), toBigInt(bz(cs))]
824824 else [(toBigInt(bz(cs)) - fH), toBigInt(bz(cr))]
825825 let eA = dU[0]
826826 let ea = eA
827827 let eb = (dZ * dV)
828828 let eB = (((((ez * ez) / (eA * dV)) * ez) * dY) / (eb * dV))
829829 let eC = ((ea + ((ez * dY) / eb)) - ez)
830830 func eg (eh,ei) = {
831831 let fI = eh
832832 let eE = fI._1
833833 let el = fI._2
834834 if ((el != unit))
835835 then eh
836836 else {
837837 let eF = (((eE * eE) + eB) / ((g * eE) + eC))
838838 let eG = Q((eF - value(eE)))
839839 if ((f >= eG))
840840 then $Tuple2(eF, ei)
841841 else $Tuple2(eF, unit)
842842 }
843843 }
844844
845845 let ep = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
846846 let fJ = {
847847 let er = ep
848848 let es = size(er)
849849 let et = $Tuple2(ez, unit)
850850 func eu (ev,ew) = if ((ew >= es))
851851 then ev
852852 else eg(ev, er[ew])
853853
854854 func ex (ev,ew) = if ((ew >= es))
855855 then ev
856856 else throw("List size exceeds 15")
857857
858858 ex(eu(eu(eu(eu(eu(eu(eu(eu(eu(eu(eu(eu(eu(eu(eu(et, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
859859 }
860860 let eE = fJ._1
861861 let el = fJ._2
862862 if ((el != unit))
863863 then eE
864864 else throw(("Y calculation error, Y = " + toString(eE)))
865865 }
866866
867867
868868 @Callable(dN)
869869 func calculateAmountOutForSwapREADONLY (fK,fG) = {
870870 let fL = if ((fG == false))
871871 then {
872872 let fM = ay(this, ad())
873873 let fH = (toBigInt(bz(ay(this, ac()))) + toBigInt(fK))
874874 $Tuple2(fM, fH)
875875 }
876876 else {
877877 let fM = ay(this, ac())
878878 let fH = (toBigInt(bz(ay(this, ad()))) + toBigInt(fK))
879879 $Tuple2(fM, fH)
880880 }
881881 let fM = fL._1
882882 let fH = fL._2
883883 let aU = aM()
884884 let cr = aU[u]
885885 let cs = aU[v]
886886 let dU = [toBigInt(bz(cr)), toBigInt(bz(cs))]
887887 let ez = dT(dU)
888888 let eE = fF(fG, ez, toBigInt(fK))
889889 let fN = ((toBigInt(bz(fM)) - eE) - toBigInt(1))
890890 let fO = max([0, toInt(fN)])
891- $Tuple2(nil, fO)
891+ let fP = if ((fG == false))
892+ then [(toBigInt(bz(cr)) + toBigInt(fK)), (toBigInt(bz(cs)) - fN)]
893+ else [(toBigInt(bz(cr)) - fN), (toBigInt(bz(cs)) + toBigInt(fK))]
894+ let fQ = dT(fP)
895+ let eY = if ((fQ >= ez))
896+ then true
897+ else throw("new D is fewer error")
898+ if ((eY == eY))
899+ then $Tuple2(nil, fO)
900+ else throw("Strict value is not equal to itself.")
892901 }
893902
894903
895904
896905 @Callable(dN)
897-func calculateAmountOutForSwapAndSendTokens (fK,fG,fP,fQ) = {
898- let fR = [if ((value(dN.payments[0]).amount >= fK))
906+func calculateAmountOutForSwapAndSendTokens (fK,fG,fR,fS) = {
907+ let fT = [if ((value(dN.payments[0]).amount >= fK))
899908 then true
900909 else aC("Wrong amount"), if ((dN.caller == addressFromStringValue(ay(this, ag()))))
901910 then true
902911 else aC("Permission denied")]
903- if ((fR == fR))
912+ if ((fT == fT))
904913 then {
905914 let dO = value(dN.payments[0])
906- let fS = if ((dO.assetId == unit))
915+ let fU = if ((dO.assetId == unit))
907916 then toBase58String(toBytes("WAVES"))
908917 else toBase58String(value(dO.assetId))
909- let fT = if ((fG == false))
918+ let fV = if ((fG == false))
910919 then {
911920 let fM = ay(this, ad())
912- let fH = (bz(fS) - value(dN.payments[0]).amount)
921+ let fH = (bz(fU) - value(dN.payments[0]).amount)
913922 $Tuple2(fM, fH)
914923 }
915924 else {
916925 let fM = ay(this, ac())
917- let fH = (bz(fS) - value(dN.payments[0]).amount)
926+ let fH = (bz(fU) - value(dN.payments[0]).amount)
918927 $Tuple2(fM, fH)
919928 }
920- let fM = fT._1
921- let fH = fT._2
929+ let fM = fV._1
930+ let fH = fV._2
922931 let aU = aM()
923932 let cr = aU[u]
924933 let cs = aU[v]
925- let dU = [(toBigInt(bz(cr)) - toBigInt(value(dN.payments[0]).amount)), toBigInt(bz(cs))]
934+ let dU = if ((fG == false))
935+ then [(toBigInt(bz(cr)) - toBigInt(value(dN.payments[0]).amount)), toBigInt(bz(cs))]
936+ else [toBigInt(bz(cr)), (toBigInt(bz(cs)) - toBigInt(value(dN.payments[0]).amount))]
926937 let ez = dT(dU)
927938 let eE = fF(fG, ez, toBigInt(fH))
928939 let fN = ((toBigInt(bz(fM)) - eE) - toBigInt(1))
929940 let fO = max([0, toInt(fN)])
930- let fU = if ((fO >= fP))
941+ let fW = if ((fO >= fR))
931942 then true
932943 else throw("Exchange result is fewer coins than expected")
933- if ((fU == fU))
934- then [ScriptTransfer(addressFromStringValue(fQ), fO, if ((fS == "WAVES"))
935- then unit
936- else fromBase58String(fM))]
944+ if ((fW == fW))
945+ then {
946+ let fP = if ((fG == false))
947+ then [toBigInt(bz(cr)), (toBigInt(bz(cs)) - fN)]
948+ else [(toBigInt(bz(cr)) - fN), toBigInt(bz(cs))]
949+ let fQ = dT(fP)
950+ let eY = if ((fQ >= ez))
951+ then true
952+ else throw("new D is fewer error")
953+ if ((eY == eY))
954+ then [ScriptTransfer(addressFromStringValue(fS), fO, if ((fU == "WAVES"))
955+ then unit
956+ else fromBase58String(fM))]
957+ else throw("Strict value is not equal to itself.")
958+ }
937959 else throw("Strict value is not equal to itself.")
938960 }
939961 else throw("Strict value is not equal to itself.")
940962 }
941963
942964
943965
944966 @Callable(dN)
945967 func constructor (R) = {
946968 let eB = fE(dN)
947969 if ((eB == eB))
948970 then [StringEntry(R(), R)]
949971 else throw("Strict value is not equal to itself.")
950972 }
951973
952974
953975
954976 @Callable(dN)
955-func setManager (fV) = {
977+func setManager (fX) = {
956978 let eB = fE(dN)
957979 if ((eB == eB))
958980 then {
959- let fW = fromBase58String(fV)
960- if ((fW == fW))
961- then [StringEntry(T(), fV)]
981+ let fY = fromBase58String(fX)
982+ if ((fY == fY))
983+ then [StringEntry(T(), fX)]
962984 else throw("Strict value is not equal to itself.")
963985 }
964986 else throw("Strict value is not equal to itself.")
965987 }
966988
967989
968990
969991 @Callable(dN)
970992 func confirmManager () = {
971993 let cg = fA()
972- let fX = if (isDefined(cg))
994+ let fZ = if (isDefined(cg))
973995 then true
974996 else throw("No pending manager")
975- if ((fX == fX))
997+ if ((fZ == fZ))
976998 then {
977- let fY = if ((dN.callerPublicKey == value(cg)))
999+ let ga = if ((dN.callerPublicKey == value(cg)))
9781000 then true
9791001 else throw("You are not pending manager")
980- if ((fY == fY))
1002+ if ((ga == ga))
9811003 then [StringEntry(S(), toBase58String(value(cg))), DeleteEntry(T())]
9821004 else throw("Strict value is not equal to itself.")
9831005 }
9841006 else throw("Strict value is not equal to itself.")
9851007 }
9861008
9871009
9881010
9891011 @Callable(dN)
990-func put (fZ,ga) = {
991- let gb = be()
992- let gc = valueOrErrorMessage(addressFromString(gb[A]), "Wr st addr")
993- let gd = valueOrErrorMessage(addressFromString(gb[C]), "Wr sl addr")
994- if ((0 > fZ))
1012+func put (gb,gc) = {
1013+ let gd = be()
1014+ let ge = valueOrErrorMessage(addressFromString(gd[A]), "Wr st addr")
1015+ let gf = valueOrErrorMessage(addressFromString(gd[C]), "Wr sl addr")
1016+ if ((0 > gb))
9951017 then throw("Wrong slippage")
9961018 else if ((size(dN.payments) != 2))
9971019 then throw("2 pmnts expd")
9981020 else {
999- let ge = dP(toString(dN.caller), toBase58String(dN.transactionId), AttachedPayment(value(dN.payments[0]).assetId, value(dN.payments[0]).amount), dN.payments[1], fZ, true, false, true, 0, "")
1000- let ds = ge._2
1001- let gf = ge._7
1002- let cJ = ge._9
1003- let dt = ge._10
1004- let du = ge._11
1005- let cr = ge._12
1006- let cs = ge._13
1021+ let gg = dP(toString(dN.caller), toBase58String(dN.transactionId), AttachedPayment(value(dN.payments[0]).assetId, value(dN.payments[0]).amount), dN.payments[1], gb, true, false, true, 0, "")
1022+ let ds = gg._2
1023+ let gh = gg._7
1024+ let cJ = gg._9
1025+ let dt = gg._10
1026+ let du = gg._11
1027+ let cr = gg._12
1028+ let cs = gg._13
10071029 let df = invoke(aE, "emit", [ds], nil)
10081030 if ((df == df))
10091031 then {
1010- let gg = {
1032+ let gi = {
10111033 let aw = df
10121034 if ($isInstanceOf(aw, "Address"))
10131035 then {
1014- let gh = aw
1015- invoke(gh, "emit", [ds], nil)
1036+ let gj = aw
1037+ invoke(gj, "emit", [ds], nil)
10161038 }
10171039 else unit
10181040 }
1019- if ((gg == gg))
1041+ if ((gi == gi))
10201042 then {
1021- let gi = if ((dt > 0))
1022- then invoke(gd, "put", nil, [AttachedPayment(cr, dt)])
1043+ let gk = if ((dt > 0))
1044+ then invoke(gf, "put", nil, [AttachedPayment(cr, dt)])
10231045 else nil
1024- if ((gi == gi))
1046+ if ((gk == gk))
10251047 then {
1026- let gj = if ((du > 0))
1027- then invoke(gd, "put", nil, [AttachedPayment(cs, du)])
1048+ let gl = if ((du > 0))
1049+ then invoke(gf, "put", nil, [AttachedPayment(cs, du)])
10281050 else nil
1029- if ((gj == gj))
1051+ if ((gl == gl))
10301052 then {
1031- let gk = if (ga)
1053+ let gm = if (gc)
10321054 then {
1033- let gl = invoke(gc, "stake", nil, [AttachedPayment(gf, ds)])
1034- if ((gl == gl))
1055+ let gn = invoke(ge, "stake", nil, [AttachedPayment(gh, ds)])
1056+ if ((gn == gn))
10351057 then nil
10361058 else throw("Strict value is not equal to itself.")
10371059 }
1038- else [ScriptTransfer(dN.caller, ds, gf)]
1039- (cJ ++ gk)
1060+ else [ScriptTransfer(dN.caller, ds, gh)]
1061+ (cJ ++ gm)
10401062 }
10411063 else throw("Strict value is not equal to itself.")
10421064 }
10431065 else throw("Strict value is not equal to itself.")
10441066 }
10451067 else throw("Strict value is not equal to itself.")
10461068 }
10471069 else throw("Strict value is not equal to itself.")
10481070 }
10491071 }
10501072
10511073
10521074
10531075 @Callable(dN)
1054-func putOneTknV2 (fh,ga) = {
1055- let gm = {
1076+func putOneTknV2 (fh,gc) = {
1077+ let go = {
10561078 let aG = invoke(aE, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
10571079 if ($isInstanceOf(aG, "Boolean"))
10581080 then aG
10591081 else throw(($getType(aG) + " couldn't be cast to Boolean"))
10601082 }
1061- let gn = if (if (if (aJ())
1083+ let gp = if (if (if (aJ())
10621084 then true
10631085 else (aY == o))
10641086 then true
10651087 else (aY == q))
10661088 then true
1067- else gm
1068- let fR = [if (if (!(gn))
1089+ else go
1090+ let fT = [if (if (!(gp))
10691091 then true
10701092 else fC(dN))
10711093 then true
10721094 else aC("put operation is blocked by admin"), if ((size(dN.payments) == 1))
10731095 then true
10741096 else aC("exactly 1 payment are expected")]
1075- if ((fR == fR))
1097+ if ((fT == fT))
10761098 then {
10771099 let aU = aM()
10781100 let cr = aU[u]
10791101 let cs = aU[v]
10801102 let cq = fromBase58String(aU[t])
10811103 let fl = parseIntValue(aU[w])
10821104 let fm = parseIntValue(aU[x])
10831105 let cp = if ((dN.caller == this))
10841106 then dN.originCaller
10851107 else dN.caller
10861108 let dO = value(dN.payments[0])
10871109 let cn = toBase58String(value(dO.assetId))
10881110 let cT = dO.amount
1089- let go = eI(cT, cn, toString(cp), toBase58String(dN.transactionId), true)
1090- if ((go == go))
1111+ let gq = eI(cT, cn, toString(cp), toBase58String(dN.transactionId), true)
1112+ if ((gq == gq))
10911113 then {
1092- let ck = go._3
1093- let cJ = go._2
1094- let gp = go._1
1114+ let ck = gq._3
1115+ let cJ = gq._2
1116+ let gr = gq._1
10951117 let ds = if (if ((fh > 0))
1096- then (fh > gp)
1118+ then (fh > gr)
10971119 else false)
10981120 then aC(makeString(["amount to receive is less than ", toString(fh)], ""))
1099- else gp
1100- let ge = invoke(aE, "emit", [ds], nil)
1101- if ((ge == ge))
1121+ else gr
1122+ let gg = invoke(aE, "emit", [ds], nil)
1123+ if ((gg == gg))
11021124 then {
1103- let gg = {
1104- let aw = ge
1125+ let gi = {
1126+ let aw = gg
11051127 if ($isInstanceOf(aw, "Address"))
11061128 then {
1107- let gh = aw
1108- invoke(gh, "emit", [ds], nil)
1129+ let gj = aw
1130+ invoke(gj, "emit", [ds], nil)
11091131 }
11101132 else unit
11111133 }
1112- if ((gg == gg))
1134+ if ((gi == gi))
11131135 then {
1114- let gk = if (ga)
1136+ let gm = if (gc)
11151137 then {
1116- let gl = invoke(bg, "stake", nil, [AttachedPayment(cq, ds)])
1117- if ((gl == gl))
1138+ let gn = invoke(bg, "stake", nil, [AttachedPayment(cq, ds)])
1139+ if ((gn == gn))
11181140 then nil
11191141 else throw("Strict value is not equal to itself.")
11201142 }
11211143 else [ScriptTransfer(dN.caller, ds, cq)]
11221144 let fx = if ((ck > 0))
11231145 then [ScriptTransfer(aL, ck, fromBase58String(cn))]
11241146 else nil
1125- $Tuple2(((cJ ++ gk) ++ fx), ds)
1147+ $Tuple2(((cJ ++ gm) ++ fx), ds)
11261148 }
11271149 else throw("Strict value is not equal to itself.")
11281150 }
11291151 else throw("Strict value is not equal to itself.")
11301152 }
11311153 else throw("Strict value is not equal to itself.")
11321154 }
11331155 else throw("Strict value is not equal to itself.")
11341156 }
11351157
11361158
11371159
11381160 @Callable(dN)
1139-func putForFree (gq) = if ((0 > gq))
1161+func putForFree (gs) = if ((0 > gs))
11401162 then throw("Wrong slpg")
11411163 else if ((size(dN.payments) != 2))
11421164 then throw("2 pmnts expd")
11431165 else {
1144- let gr = dP(toString(dN.caller), toBase58String(dN.transactionId), AttachedPayment(value(dN.payments[0]).assetId, value(dN.payments[0]).amount), dN.payments[1], gq, false, false, true, 0, "")
1145- gr._9
1166+ let gt = dP(toString(dN.caller), toBase58String(dN.transactionId), AttachedPayment(value(dN.payments[0]).assetId, value(dN.payments[0]).amount), dN.payments[1], gs, false, false, true, 0, "")
1167+ gt._9
11461168 }
11471169
11481170
11491171
11501172 @Callable(dN)
11511173 func get () = {
11521174 let df = dM(dN)
1153- let gs = df._1
1175+ let gu = df._1
11541176 let cI = df._2
11551177 let cT = df._3
11561178 let cn = df._4
11571179 let cJ = df._5
11581180 let eC = invoke(aE, "burn", [cT], [AttachedPayment(cn, cT)])
11591181 if ((eC == eC))
11601182 then cJ
11611183 else throw("Strict value is not equal to itself.")
11621184 }
11631185
11641186
11651187
11661188 @Callable(dN)
11671189 func getOneTknV2 (fg,fh) = {
1168- let gm = {
1190+ let go = {
11691191 let aG = invoke(aE, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
11701192 if ($isInstanceOf(aG, "Boolean"))
11711193 then aG
11721194 else throw(($getType(aG) + " couldn't be cast to Boolean"))
11731195 }
1174- let gt = if (if (aJ())
1196+ let gv = if (if (aJ())
11751197 then true
11761198 else (aY == q))
11771199 then true
1178- else gm
1179- let fR = [if (if (!(gt))
1200+ else go
1201+ let fT = [if (if (!(gv))
11801202 then true
11811203 else fC(dN))
11821204 then true
11831205 else aC("get operation is blocked by admin"), if ((size(dN.payments) == 1))
11841206 then true
11851207 else aC("exactly 1 payment are expected")]
1186- if ((fR == fR))
1208+ if ((fT == fT))
11871209 then {
1188- let gu = ff(fg, fh, dN.payments, dN.caller, dN.originCaller, dN.transactionId)
1189- let cJ = gu._1
1190- let fq = gu._2
1210+ let gw = ff(fg, fh, dN.payments, dN.caller, dN.originCaller, dN.transactionId)
1211+ let cJ = gw._1
1212+ let fq = gw._2
11911213 $Tuple2(cJ, fq)
11921214 }
11931215 else throw("Strict value is not equal to itself.")
11941216 }
11951217
11961218
11971219
11981220 @Callable(dN)
1199-func getOneTknV2READONLY (fg,gv) = {
1221+func getOneTknV2READONLY (fg,gx) = {
12001222 let aU = aM()
12011223 let cr = aU[u]
12021224 let cs = aU[v]
12031225 let cq = aU[t]
12041226 let dU = [toBigInt(bz(cr)), toBigInt(bz(cs))]
1205- let gw = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(cq)), "invalid lp asset").quantity)
1227+ let gy = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(cq)), "invalid lp asset").quantity)
12061228 let bM = dT(dU)
1207- let bL = (bM - fraction(toBigInt(gv), bM, gw))
1208- let gx = if ((fg == cr))
1229+ let bL = (bM - fraction(toBigInt(gx), bM, gy))
1230+ let gz = if ((fg == cr))
12091231 then 0
12101232 else if ((fg == cs))
12111233 then 1
12121234 else throw("invalid out asset id")
1213- let gy = ey(dU, gx, bL)
1214- let fN = (dU[gx] - gy)
1235+ let gA = ey(dU, gz, bL)
1236+ let fN = (dU[gz] - gA)
12151237 let fO = max([0, toInt((fN - f))])
1216- let gz = ch(fO, aH)
1217- let fp = gz._1
1218- let ck = gz._2
1238+ let gB = ch(fO, aH)
1239+ let fp = gB._1
1240+ let ck = gB._2
12191241 $Tuple2(nil, $Tuple2(fp, ck))
12201242 }
12211243
12221244
12231245
12241246 @Callable(dN)
1225-func getOneTknV2WithBonusREADONLY (fg,gv) = {
1247+func getOneTknV2WithBonusREADONLY (fg,gx) = {
12261248 let aU = aM()
12271249 let cr = aU[u]
12281250 let cs = aU[v]
12291251 let cq = aU[t]
12301252 let cx = bz(cr)
12311253 let cz = bz(cs)
1232- let gA = {
1233- let aG = invoke(this, "getOneTknV2READONLY", [fg, gv], nil)
1254+ let gC = {
1255+ let aG = invoke(this, "getOneTknV2READONLY", [fg, gx], nil)
12341256 if ($isInstanceOf(aG, "(Int, Int)"))
12351257 then aG
12361258 else throw(($getType(aG) + " couldn't be cast to (Int, Int)"))
12371259 }
1238- let fp = gA._1
1239- let ck = gA._2
1240- let df = cl("", cq, gv, this)
1260+ let fp = gC._1
1261+ let ck = gC._2
1262+ let df = cl("", cq, gx, this)
12411263 let cH = df._1
12421264 let cI = df._2
1243- let gB = (cH + cI)
1244- let fe = if ((gB == 0))
1265+ let gD = (cH + cI)
1266+ let fe = if ((gD == 0))
12451267 then if ((fp == 0))
12461268 then 0
12471269 else throw("bonus calculation error")
1248- else fraction((fp - gB), a, gB)
1270+ else fraction((fp - gD), a, gD)
12491271 $Tuple2(nil, $Tuple3(fp, ck, fe))
12501272 }
12511273
12521274
12531275
12541276 @Callable(dN)
1255-func getNoLess (gC,gD) = {
1277+func getNoLess (gE,gF) = {
12561278 let df = dM(dN)
12571279 let cH = df._1
12581280 let cI = df._2
12591281 let cT = df._3
12601282 let cn = df._4
12611283 let cJ = df._5
1262- if ((gC > cH))
1263- then throw(((("Failed: " + toString(cH)) + " < ") + toString(gC)))
1264- else if ((gD > cI))
1265- then throw(((("Failed: " + toString(cI)) + " < ") + toString(gD)))
1284+ if ((gE > cH))
1285+ then throw(((("Failed: " + toString(cH)) + " < ") + toString(gE)))
1286+ else if ((gF > cI))
1287+ then throw(((("Failed: " + toString(cI)) + " < ") + toString(gF)))
12661288 else {
1267- let gE = invoke(aE, "burn", [cT], [AttachedPayment(cn, cT)])
1268- if ((gE == gE))
1289+ let gG = invoke(aE, "burn", [cT], [AttachedPayment(cn, cT)])
1290+ if ((gG == gG))
12691291 then cJ
12701292 else throw("Strict value is not equal to itself.")
12711293 }
12721294 }
12731295
12741296
12751297
12761298 @Callable(dN)
12771299 func unstakeAndGet (ci) = {
1278- let gF = if ((size(dN.payments) != 0))
1300+ let gH = if ((size(dN.payments) != 0))
12791301 then throw("No pmnts expd")
12801302 else true
1281- if ((gF == gF))
1303+ if ((gH == gH))
12821304 then {
12831305 let bY = aM()
1284- let gG = be()
1285- let gf = fromBase58String(bY[t])
1286- let gH = valueOrErrorMessage(addressFromString(gG[A]), "Wr st addr")
1287- let gI = invoke(gH, "unstake", [toBase58String(gf), ci], nil)
1288- if ((gI == gI))
1306+ let gI = be()
1307+ let gh = fromBase58String(bY[t])
1308+ let gJ = valueOrErrorMessage(addressFromString(gI[A]), "Wr st addr")
1309+ let gK = invoke(gJ, "unstake", [toBase58String(gh), ci], nil)
1310+ if ((gK == gK))
12891311 then {
1290- let df = cl(toBase58String(dN.transactionId), toBase58String(gf), ci, dN.caller)
1312+ let df = cl(toBase58String(dN.transactionId), toBase58String(gh), ci, dN.caller)
12911313 let cv = parseIntValue(df._9)
12921314 let cJ = df._10
1293- let gJ = if (if (aJ())
1315+ let gL = if (if (aJ())
12941316 then true
12951317 else (cv == q))
12961318 then throw(("Blocked: " + toString(cv)))
12971319 else true
1298- if ((gJ == gJ))
1320+ if ((gL == gL))
12991321 then {
1300- let gK = invoke(aE, "burn", [ci], [AttachedPayment(gf, ci)])
1301- if ((gK == gK))
1322+ let gM = invoke(aE, "burn", [ci], [AttachedPayment(gh, ci)])
1323+ if ((gM == gM))
13021324 then cJ
13031325 else throw("Strict value is not equal to itself.")
13041326 }
13051327 else throw("Strict value is not equal to itself.")
13061328 }
13071329 else throw("Strict value is not equal to itself.")
13081330 }
13091331 else throw("Strict value is not equal to itself.")
13101332 }
13111333
13121334
13131335
13141336 @Callable(dN)
1315-func unstakeAndGetNoLess (gL,gM,gD) = {
1316- let gt = if (aJ())
1337+func unstakeAndGetNoLess (gN,gO,gF) = {
1338+ let gv = if (aJ())
13171339 then true
13181340 else (aY == q)
1319- let fR = [if (!(gt))
1341+ let fT = [if (!(gv))
13201342 then true
13211343 else throw("get operation is blocked by admin"), if ((size(dN.payments) == 0))
13221344 then true
13231345 else throw("no payments are expected")]
1324- if ((fR == fR))
1346+ if ((fT == fT))
13251347 then {
1326- let gI = invoke(bg, "unstake", [toBase58String(aZ), gL], nil)
1327- if ((gI == gI))
1348+ let gK = invoke(bg, "unstake", [toBase58String(aZ), gN], nil)
1349+ if ((gK == gK))
13281350 then {
1329- let gN = cl(toBase58String(dN.transactionId), toBase58String(aZ), gL, dN.caller)
1330- let cH = gN._1
1331- let cI = gN._2
1332- let cJ = gN._10
1333- let gO = [if ((cH >= gM))
1351+ let gP = cl(toBase58String(dN.transactionId), toBase58String(aZ), gN, dN.caller)
1352+ let cH = gP._1
1353+ let cI = gP._2
1354+ let cJ = gP._10
1355+ let gQ = [if ((cH >= gO))
13341356 then true
1335- else throw(makeString(["amount asset amount to receive is less than ", toString(gM)], "")), if ((cI >= gD))
1357+ else throw(makeString(["amount asset amount to receive is less than ", toString(gO)], "")), if ((cI >= gF))
13361358 then true
1337- else throw(makeString(["price asset amount to receive is less than ", toString(gD)], ""))]
1338- if ((gO == gO))
1359+ else throw(makeString(["price asset amount to receive is less than ", toString(gF)], ""))]
1360+ if ((gQ == gQ))
13391361 then {
1340- let gE = invoke(aE, "burn", [gL], [AttachedPayment(aZ, gL)])
1341- if ((gE == gE))
1362+ let gG = invoke(aE, "burn", [gN], [AttachedPayment(aZ, gN)])
1363+ if ((gG == gG))
13421364 then cJ
13431365 else throw("Strict value is not equal to itself.")
13441366 }
13451367 else throw("Strict value is not equal to itself.")
13461368 }
13471369 else throw("Strict value is not equal to itself.")
13481370 }
13491371 else throw("Strict value is not equal to itself.")
13501372 }
13511373
13521374
13531375
13541376 @Callable(dN)
1355-func unstakeAndGetOneTknV2 (gL,fg,fh) = {
1356- let gm = {
1377+func unstakeAndGetOneTknV2 (gN,fg,fh) = {
1378+ let go = {
13571379 let aG = invoke(aE, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
13581380 if ($isInstanceOf(aG, "Boolean"))
13591381 then aG
13601382 else throw(($getType(aG) + " couldn't be cast to Boolean"))
13611383 }
1362- let gt = if (if (aJ())
1384+ let gv = if (if (aJ())
13631385 then true
13641386 else (aY == q))
13651387 then true
1366- else gm
1367- let fR = [if (if (!(gt))
1388+ else go
1389+ let fT = [if (if (!(gv))
13681390 then true
13691391 else fC(dN))
13701392 then true
13711393 else aC("get operation is blocked by admin"), if ((size(dN.payments) == 0))
13721394 then true
13731395 else aC("no payments are expected")]
1374- if ((fR == fR))
1396+ if ((fT == fT))
13751397 then {
13761398 let bY = aM()
1377- let gG = be()
1378- let gf = fromBase58String(bY[t])
1379- let gH = valueOrErrorMessage(addressFromString(gG[A]), "Wr st addr")
1380- let gI = invoke(gH, "unstake", [toBase58String(gf), gL], nil)
1381- if ((gI == gI))
1399+ let gI = be()
1400+ let gh = fromBase58String(bY[t])
1401+ let gJ = valueOrErrorMessage(addressFromString(gI[A]), "Wr st addr")
1402+ let gK = invoke(gJ, "unstake", [toBase58String(gh), gN], nil)
1403+ if ((gK == gK))
13821404 then {
1383- let gP = ff(fg, fh, [AttachedPayment(gf, gL)], dN.caller, dN.originCaller, dN.transactionId)
1384- let cJ = gP._1
1385- let fq = gP._2
1405+ let gR = ff(fg, fh, [AttachedPayment(gh, gN)], dN.caller, dN.originCaller, dN.transactionId)
1406+ let cJ = gR._1
1407+ let fq = gR._2
13861408 $Tuple2(cJ, fq)
13871409 }
13881410 else throw("Strict value is not equal to itself.")
13891411 }
13901412 else throw("Strict value is not equal to itself.")
13911413 }
13921414
13931415
13941416
13951417 @Callable(dN)
1396-func putOneTknV2WithBonusREADONLY (gQ,gR) = {
1418+func putOneTknV2WithBonusREADONLY (gS,gT) = {
13971419 let aU = aM()
13981420 let cr = aU[u]
13991421 let cs = aU[v]
14001422 let cq = aU[t]
1401- let gS = eI(gQ, gR, "", "", true)
1402- let eZ = gS._1
1403- let cJ = gS._2
1404- let ck = gS._3
1405- let fe = gS._4
1423+ let gU = eI(gS, gT, "", "", true)
1424+ let eZ = gU._1
1425+ let cJ = gU._2
1426+ let ck = gU._3
1427+ let fe = gU._4
14061428 $Tuple2(nil, $Tuple3(eZ, ck, fe))
14071429 }
14081430
14091431
14101432
14111433 @Callable(dN)
1412-func putOneTknV2WithoutTakeFeeREADONLY (gQ,gR) = {
1434+func putOneTknV2WithoutTakeFeeREADONLY (gS,gT) = {
14131435 let aU = aM()
14141436 let cr = aU[u]
14151437 let cs = aU[v]
14161438 let cq = aU[t]
1417- let gT = eI(gQ, gR, "", "", false)
1418- let eZ = gT._1
1419- let cJ = gT._2
1420- let ck = gT._3
1421- let fe = gT._4
1439+ let gV = eI(gS, gT, "", "", false)
1440+ let eZ = gV._1
1441+ let cJ = gV._2
1442+ let ck = gV._3
1443+ let fe = gV._4
14221444 $Tuple2(nil, $Tuple3(eZ, ck, fe))
14231445 }
14241446
14251447
14261448
14271449 @Callable(dN)
1428-func activate (gU,gV) = if ((toString(dN.caller) != toString(aE)))
1450+func activate (gW,gX) = if ((toString(dN.caller) != toString(aE)))
14291451 then throw("denied")
1430- else $Tuple2([StringEntry(ac(), gU), StringEntry(ad(), gV)], "success")
1452+ else $Tuple2([StringEntry(ac(), gW), StringEntry(ad(), gX)], "success")
14311453
14321454
14331455
14341456 @Callable(dN)
1435-func setS (gW,gJ) = if ((toString(dN.caller) != ay(this, af())))
1457+func setS (gY,gL) = if ((toString(dN.caller) != ay(this, af())))
14361458 then fB
1437- else [StringEntry(gW, gJ)]
1459+ else [StringEntry(gY, gL)]
14381460
14391461
14401462
14411463 @Callable(dN)
1442-func setI (gW,gJ) = if ((toString(dN.caller) != ay(this, af())))
1464+func setI (gY,gL) = if ((toString(dN.caller) != ay(this, af())))
14431465 then fB
1444- else [IntegerEntry(gW, gJ)]
1466+ else [IntegerEntry(gY, gL)]
14451467
14461468
14471469
14481470 @Callable(dN)
14491471 func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aM())
14501472
14511473
14521474
14531475 @Callable(dN)
14541476 func getAccBalanceWrapperREADONLY (bA) = $Tuple2(nil, bz(bA))
14551477
14561478
14571479
14581480 @Callable(dN)
14591481 func calcPricesWrapperREADONLY (bS,bT,bX) = {
1460- let gX = bW(bS, bT, bX)
1461- $Tuple2(nil, [toString(gX[0]), toString(gX[1]), toString(gX[2])])
1482+ let gZ = bW(bS, bT, bX)
1483+ $Tuple2(nil, [toString(gZ[0]), toString(gZ[1]), toString(gZ[2])])
14621484 }
14631485
14641486
14651487
14661488 @Callable(dN)
1467-func fromX18WrapperREADONLY (J,gY) = $Tuple2(nil, I(parseBigIntValue(J), gY))
1489+func fromX18WrapperREADONLY (J,ha) = $Tuple2(nil, I(parseBigIntValue(J), ha))
14681490
14691491
14701492
14711493 @Callable(dN)
14721494 func toX18WrapperREADONLY (G,H) = $Tuple2(nil, toString(F(G, H)))
14731495
14741496
14751497
14761498 @Callable(dN)
14771499 func calcPriceBigIntWrapperREADONLY (bC,bD) = $Tuple2(nil, toString(bB(parseBigIntValue(bC), parseBigIntValue(bD))))
14781500
14791501
14801502
14811503 @Callable(dN)
1482-func estimatePutOperationWrapperREADONLY (cm,bH,cL,cM,cN,cO,gZ,cP,cQ) = $Tuple2(nil, cK(cm, bH, cL, cM, cN, cO, gZ, cP, cQ, true, false, 0, ""))
1504+func estimatePutOperationWrapperREADONLY (cm,bH,cL,cM,cN,cO,hb,cP,cQ) = $Tuple2(nil, cK(cm, bH, cL, cM, cN, cO, hb, cP, cQ, true, false, 0, ""))
14831505
14841506
14851507
14861508 @Callable(dN)
1487-func estimateGetOperationWrapperREADONLY (cm,ha,co,gZ) = {
1488- let df = cl(cm, ha, co, addressFromStringValue(gZ))
1509+func estimateGetOperationWrapperREADONLY (cm,hc,co,hb) = {
1510+ let df = cl(cm, hc, co, addressFromStringValue(hb))
14891511 $Tuple2(nil, $Tuple10(df._1, df._2, df._3, df._4, df._5, df._6, df._7, toString(df._8), df._9, df._10))
14901512 }
14911513
14921514
1493-@Verifier(hb)
1494-func hc () = {
1495- let hd = {
1515+@Verifier(hd)
1516+func he () = {
1517+ let hf = {
14961518 let aw = fz()
14971519 if ($isInstanceOf(aw, "ByteVector"))
14981520 then {
14991521 let fD = aw
15001522 fD
15011523 }
15021524 else if ($isInstanceOf(aw, "Unit"))
1503- then hb.senderPublicKey
1525+ then hd.senderPublicKey
15041526 else throw("Match error")
15051527 }
1506- let aw = hb
1528+ let aw = hd
15071529 if ($isInstanceOf(aw, "Order"))
15081530 then {
15091531 let dA = aw
1510- let he = aK()
1511- let hf = dz(dA)
1512- let hg = sigVerify(dA.bodyBytes, dA.proofs[0], dA.senderPublicKey)
1513- let hh = sigVerify(dA.bodyBytes, dA.proofs[1], he)
1514- if (if (if (hf)
1515- then hg
1532+ let hg = aK()
1533+ let hh = dz(dA)
1534+ let hi = sigVerify(dA.bodyBytes, dA.proofs[0], dA.senderPublicKey)
1535+ let hj = sigVerify(dA.bodyBytes, dA.proofs[1], hg)
1536+ if (if (if (hh)
1537+ then hi
15161538 else false)
1517- then hh
1539+ then hj
15181540 else false)
15191541 then true
1520- else ar(hf, hg, hh)
1542+ else ar(hh, hi, hj)
15211543 }
15221544 else if ($isInstanceOf(aw, "SetScriptTransaction"))
15231545 then {
15241546 let ea = aw
1525- let hi = blake2b256(value(ea.script))
1526- let hj = fromBase64String(value(getString(aE, ap())))
1527- let hk = scriptHash(this)
1528- if (if ((hj == hi))
1529- then (hk != hi)
1547+ let hk = blake2b256(value(ea.script))
1548+ let hl = fromBase64String(value(getString(aE, ap())))
1549+ let hm = scriptHash(this)
1550+ if (if ((hl == hk))
1551+ then (hm != hk)
15301552 else false)
15311553 then true
1532- else sigVerify(hb.bodyBytes, hb.proofs[0], hd)
1554+ else sigVerify(hd.bodyBytes, hd.proofs[0], hf)
15331555 }
1534- else sigVerify(hb.bodyBytes, hb.proofs[0], hd)
1556+ else sigVerify(hd.bodyBytes, hd.proofs[0], hf)
15351557 }
15361558

github/deemru/w8io/169f3d6 
246.06 ms