tx · F4EPeFV2iqW37GMzcwFczJXrMFY9iEbS7Y9DMxi2dkVz

3N7b3kPunHUXhZp1vMG9NhPMARNEprCMWxT:  -0.04300000 Waves

2023.04.04 13:54 [2519727] smart account 3N7b3kPunHUXhZp1vMG9NhPMARNEprCMWxT > SELF 0.00000000 Waves

{ "type": 13, "id": "F4EPeFV2iqW37GMzcwFczJXrMFY9iEbS7Y9DMxi2dkVz", "fee": 4300000, "feeAssetId": null, "timestamp": 1680605650376, "version": 2, "chainId": 84, "sender": "3N7b3kPunHUXhZp1vMG9NhPMARNEprCMWxT", "senderPublicKey": "AYbpHveq7zviKTDV7SGTB1pZGFbkumgfq3jSwVv6BznT", "proofs": [ "24AGjN8kom4XL7seJjqCTNZX8SxUrUrjRHgBF82vSTkdj8vNs1a8cavHvUFQumoeZhrQSM2GDVc2yhY2UoJu8nHR" ], "script": "base64:BgKdNwgCEgASBQoDAQQBEgcKBQEEAQgBEgMKAQgSABIECgIBBBIDCgEBEgQKAgEEEgQKAggBEgQKAggBEgQKAggBEgUKAwEIARIAEgQKAgEBEgMKAQESBQoDAQEBEgQKAggIEgASABIDCgEIEgUKAwEBARIECgIBARIECgIIARIECgIICBILCgkIAQECAQIIBAQSBgoECAgBCBIAEgMKAQESAwoBARIECgIIASIKbFBkZWNpbWFscyIGc2NhbGU4IgxzY2FsZThCaWdJbnQiB3NjYWxlMTgiCnplcm9CaWdJbnQiBGJpZzAiBGJpZzEiBGJpZzIiC3dhdmVzU3RyaW5nIgNTRVAiClBvb2xBY3RpdmUiD1Bvb2xQdXREaXNhYmxlZCITUG9vbE1hdGNoZXJEaXNhYmxlZCIMUG9vbFNodXRkb3duIg5pZHhQb29sQWRkcmVzcyINaWR4UG9vbFN0YXR1cyIQaWR4UG9vbExQQXNzZXRJZCINaWR4QW10QXNzZXRJZCIPaWR4UHJpY2VBc3NldElkIg5pZHhBbXRBc3NldERjbSIQaWR4UHJpY2VBc3NldERjbSIOaWR4SUFtdEFzc2V0SWQiEGlkeElQcmljZUFzc2V0SWQiDWlkeExQQXNzZXREY20iEmlkeFBvb2xBbXRBc3NldEFtdCIUaWR4UG9vbFByaWNlQXNzZXRBbXQiEWlkeFBvb2xMUEFzc2V0QW10IhlpZHhGYWN0b3J5U3Rha2luZ0NvbnRyYWN0IhppZHhGYWN0b3J5U2xpcHBhZ2VDb250cmFjdCIFdG9YMTgiB29yaWdWYWwiDW9yaWdTY2FsZU11bHQiC3RvWDE4QmlnSW50Igdmcm9tWDE4IgN2YWwiD3Jlc3VsdFNjYWxlTXVsdCIMZnJvbVgxOFJvdW5kIgVyb3VuZCIHdG9TY2FsZSIDYW10IghyZXNTY2FsZSIIY3VyU2NhbGUiA2FicyIJYWJzQmlnSW50Igxzd2FwQ29udHJhY3QiAmZjIgNtcGsiBHBtcGsiAnBsIgJwaCIBaCIJdGltZXN0YW1wIgNwYXUiC3VzZXJBZGRyZXNzIgR0eElkIgNnYXUiAmFhIgJwYSIGa2V5RmVlIgpmZWVEZWZhdWx0IgNmZWUiBmtleUtMcCIVa2V5S0xwUmVmcmVzaGVkSGVpZ2h0IhJrZXlLTHBSZWZyZXNoRGVsYXkiFmtMcFJlZnJlc2hEZWxheURlZmF1bHQiD2tMcFJlZnJlc2hEZWxheSIQa2V5U1dhdmVzQXNzZXRJZCIVa2V5U1dhdmVzUHJveHlBZGRyZXNzIhRrZXlBZGRpdGlvbmFsQmFsYW5jZSIHYXNzZXRJZCIWa2V5U3Rha2luZ0Fzc2V0QmFsYW5jZSIUZ2V0QWRkaXRpb25hbEJhbGFuY2UiFmdldFN0YWtpbmdBc3NldEJhbGFuY2UiEGtleUZhY3RvcnlDb25maWciDWtleU1hdGNoZXJQdWIiKWtleU1hcHBpbmdQb29sQ29udHJhY3RBZGRyZXNzVG9Qb29sQXNzZXRzIhNwb29sQ29udHJhY3RBZGRyZXNzIg1rZXlQb29sQ29uZmlnIglpQW10QXNzZXQiC2lQcmljZUFzc2V0Ih9rZXlNYXBwaW5nc0Jhc2VBc3NldDJpbnRlcm5hbElkIgxiYXNlQXNzZXRTdHIiE2tleUFsbFBvb2xzU2h1dGRvd24iDWtleVBvb2xXZWlnaHQiD2NvbnRyYWN0QWRkcmVzcyIWa2V5QWxsb3dlZExwU2NyaXB0SGFzaCIWa2V5RmVlQ29sbGVjdG9yQWRkcmVzcyIPdGhyb3dPcmRlckVycm9yIgpvcmRlclZhbGlkIg5vcmRlclZhbGlkSW5mbyILc2VuZGVyVmFsaWQiDG1hdGNoZXJWYWxpZCIPZ2V0U3RyaW5nT3JGYWlsIgdhZGRyZXNzIgNrZXkiDGdldEludE9yRmFpbCIIdGhyb3dFcnIiA21zZyIGZm10RXJyIg9mYWN0b3J5Q29udHJhY3QiE2ZlZUNvbGxlY3RvckFkZHJlc3MiBWluRmVlIgFAIgZvdXRGZWUiCHNXYXZlc0lkIgtzV2F2ZXNQcm94eSIQaXNHbG9iYWxTaHV0ZG93biITZ2V0TWF0Y2hlclB1Yk9yRmFpbCINZ2V0UG9vbENvbmZpZyIIYW10QXNzZXQiCnByaWNlQXNzZXQiDHBhcnNlQXNzZXRJZCIFaW5wdXQiD2Fzc2V0SWRUb1N0cmluZyIPcGFyc2VQb29sQ29uZmlnIgpwb29sQ29uZmlnIhBwb29sQ29uZmlnUGFyc2VkIgskdDA5Mjg1OTQ1MSIOY2ZnUG9vbEFkZHJlc3MiDWNmZ1Bvb2xTdGF0dXMiDGNmZ0xwQXNzZXRJZCIQY2ZnQW1vdW50QXNzZXRJZCIPY2ZnUHJpY2VBc3NldElkIhZjZmdBbW91bnRBc3NldERlY2ltYWxzIhVjZmdQcmljZUFzc2V0RGVjaW1hbHMiEGdldEZhY3RvcnlDb25maWciD3N0YWtpbmdDb250cmFjdCIQc2xpcHBhZ2VDb250cmFjdCIRZGF0YVB1dEFjdGlvbkluZm8iDWluQW10QXNzZXRBbXQiD2luUHJpY2VBc3NldEFtdCIIb3V0THBBbXQiBXByaWNlIh1zbGlwcGFnZVRvbGVyYW5jZVBhc3NlZEJ5VXNlciIVc2xpcHBhZ2VUb2xlcmFuY2VSZWFsIgh0eEhlaWdodCILdHhUaW1lc3RhbXAiEnNsaXBhZ2VBbXRBc3NldEFtdCIUc2xpcGFnZVByaWNlQXNzZXRBbXQiEWRhdGFHZXRBY3Rpb25JbmZvIg5vdXRBbXRBc3NldEFtdCIQb3V0UHJpY2VBc3NldEFtdCIHaW5McEFtdCINZ2V0QWNjQmFsYW5jZSIPY2FsY1ByaWNlQmlnSW50IghwckFtdFgxOCIIYW1BbXRYMTgiFGNhbGNQcmljZUJpZ0ludFJvdW5kIgdnZXRSYXRlIgVwcm94eSIDaW52IgckbWF0Y2gwIgFyIgdkZXBvc2l0IgZhbW91bnQiDnN0YWtpbmdBc3NldElkIhhjdXJyZW50QWRkaXRpb25hbEJhbGFuY2UiGmN1cnJlbnRTdGFraW5nQXNzZXRCYWxhbmNlIgVhc3NldCINZGVwb3NpdEludm9rZSIUcmVjZWl2ZWRTdGFraW5nQXNzZXQiFG5ld0FkZGl0aW9uYWxCYWxhbmNlIhZuZXdTdGFraW5nQXNzZXRCYWxhbmNlIgh3aXRoZHJhdyIMcHJveHlSYXRlTXVsIg1wcm9maXRBZGRyZXNzIhBjdXJyZW50UHJveHlSYXRlIgdvbGRSYXRlIgxzdGFraW5nQXNzZXQiFG9sZFNlbmRTdGFraW5nQW1vdW50IhZzZW5kU3Rha2luZ0Fzc2V0QW1vdW50Igxwcm9maXRBbW91bnQiDndpdGhkcmF3SW52b2tlIg5yZWNlaXZlZEFzc2V0cyITZ2V0TGVhc2VQcm94eUNvbmZpZyIRcmViYWxhbmNlSW50ZXJuYWwiC3RhcmdldFJhdGlvIgptaW5CYWxhbmNlIhBhdmFpbGFibGVCYWxhbmNlIgFiIgF1Igx3aG9sZUJhbGFuY2UiF3RhcmdldEFkZGl0aW9uYWxCYWxhbmNlIgRkaWZmIg9zZW5kQXNzZXRBbW91bnQiDmdldEFzc2V0QW1vdW50Ig5yZWJhbGFuY2VBc3NldCIBYSINJHQwMTYwNTQxNjE2MyIKaXNMZWFzYWJsZSILbGVhc2VkUmF0aW8iDHByb3h5QWRkcmVzcyIMcHJveHlBc3NldElkIhRzdGFraW5nUHJvZml0QWRkcmVzcyIUd2l0aGRyYXdBc3NldFdyYXBwZXIiDSR0MDE2NjkzMTY4MDIiFWdldFdpdGhkcmF3QXNzZXRTdGF0ZSILYXNzZXRPblBvb2wiAXciCmFtb3VudERpZmYiEHByaXZhdGVDYWxjUHJpY2UiCmFtQXNzZXREY20iCnByQXNzZXREY20iBWFtQW10IgVwckFtdCIOYW10QXNzZXRBbXRYMTgiEHByaWNlQXNzZXRBbXRYMTgiCmNhbGNQcmljZXMiBWxwQW10IgNjZmciC2FtdEFzc2V0RGNtIg1wcmljZUFzc2V0RGNtIghwcmljZVgxOCIIbHBBbXRYMTgiE2xwUHJpY2VJbkFtQXNzZXRYMTgiE2xwUHJpY2VJblByQXNzZXRYMTgiD2NhbGN1bGF0ZVByaWNlcyIGcHJpY2VzIhRlc3RpbWF0ZUdldE9wZXJhdGlvbiIGdHhJZDU4IgpwbXRBc3NldElkIghwbXRMcEFtdCIJbHBBc3NldElkIglhbUFzc2V0SWQiCXByQXNzZXRJZCIKcG9vbFN0YXR1cyIKbHBFbWlzc2lvbiIJYW1CYWxhbmNlIgxhbUJhbGFuY2VYMTgiCXByQmFsYW5jZSIMcHJCYWxhbmNlWDE4IgtjdXJQcmljZVgxOCIIY3VyUHJpY2UiC3BtdExwQW10WDE4Ig1scEVtaXNzaW9uWDE4IgtvdXRBbUFtdFgxOCILb3V0UHJBbXRYMTgiCG91dEFtQW10IghvdXRQckFtdCISQW1BbXRXaXRoZHJhd1N0YXRlIhJQckFtdFdpdGhkcmF3U3RhdGUiA3JlYiIFc3RhdGUiFGVzdGltYXRlUHV0T3BlcmF0aW9uIhFzbGlwcGFnZVRvbGVyYW5jZSIMaW5BbUFzc2V0QW10IgtpbkFtQXNzZXRJZCIMaW5QckFzc2V0QW10IgtpblByQXNzZXRJZCIKaXNFdmFsdWF0ZSIGZW1pdExwIgxhbUFzc2V0SWRTdHIiDHByQXNzZXRJZFN0ciILaUFtdEFzc2V0SWQiDWlQcmljZUFzc2V0SWQiDmluQW1Bc3NldElkU3RyIg5pblByQXNzZXRJZFN0ciIPaW5BbUFzc2V0QW10WDE4Ig9pblByQXNzZXRBbXRYMTgiDHVzZXJQcmljZVgxOCIDcmVzIgtzbGlwcGFnZVgxOCIUc2xpcHBhZ2VUb2xlcmFuY2VYMTgiCnByVmlhQW1YMTgiCmFtVmlhUHJYMTgiDGV4cGVjdGVkQW10cyIRZXhwQW10QXNzZXRBbXRYMTgiE2V4cFByaWNlQXNzZXRBbXRYMTgiCWNhbGNMcEFtdCIOY2FsY0FtQXNzZXRQbXQiDmNhbGNQckFzc2V0UG10IgxzbGlwcGFnZUNhbGMiCWVtaXRMcEFtdCIGYW1EaWZmIgZwckRpZmYiC2NvbW1vblN0YXRlIgdjYWxjS0xwIg1hbW91bnRCYWxhbmNlIgxwcmljZUJhbGFuY2UiEGFtb3VudEJhbGFuY2VYMTgiD3ByaWNlQmFsYW5jZVgxOCIKdXBkYXRlZEtMcCIOY2FsY0N1cnJlbnRLTHAiEGFtb3VudEFzc2V0RGVsdGEiD3ByaWNlQXNzZXREZWx0YSIUbHBBc3NldEVtaXNzaW9uRGVsdGEiEmFtb3VudEFzc2V0QmFsYW5jZSIRcHJpY2VBc3NldEJhbGFuY2UiD2xwQXNzZXRFbWlzc2lvbiIKY3VycmVudEtMcCIScmVmcmVzaEtMcEludGVybmFsIhdhbW91bnRBc3NldEJhbGFuY2VEZWx0YSIWcHJpY2VBc3NldEJhbGFuY2VEZWx0YSIHYWN0aW9ucyISdmFsaWRhdGVVcGRhdGVkS0xwIgZvbGRLTHAiG3ZhbGlkYXRlTWF0Y2hlck9yZGVyQWxsb3dlZCIFb3JkZXIiEWFtb3VudEFzc2V0QW1vdW50IhBwcmljZUFzc2V0QW1vdW50Ig0kdDAyOTA0MDI5MjUyIgNrTHAiDSR0MDI5NjkyMjk3OTIiDXVudXNlZEFjdGlvbnMiBmtMcE5ldyIMaXNPcmRlclZhbGlkIgRpbmZvIgljb21tb25HZXQiAWkiA3BtdCIGcG10QW10Igljb21tb25QdXQiCmFtQXNzZXRQbXQiCnByQXNzZXRQbXQiBmVzdFB1dCIEZW1pdCIHZW1pdEludiINZW1pdEludkxlZ2FjeSIVbGVnYWN5RmFjdG9yeUNvbnRyYWN0Igd0YWtlRmVlIglmZWVBbW91bnQiD2NhbGNQdXRPbmVUb2tlbiIQcGF5bWVudEFtb3VudFJhdyIOcGF5bWVudEFzc2V0SWQiBmlzRXZhbCIQYW1vdW50QmFsYW5jZVJhdyIPcHJpY2VCYWxhbmNlUmF3IhRwYXltZW50SW5BbW91bnRBc3NldCINJHQwMzI5MDUzMzE5OCIQYW1vdW50QmFsYW5jZU9sZCIPcHJpY2VCYWxhbmNlT2xkIg0kdDAzMzIwMjMzMzUxIhRhbW91bnRBc3NldEFtb3VudFJhdyITcHJpY2VBc3NldEFtb3VudFJhdyINJHQwMzM0ODMzMzU0NyINcGF5bWVudEFtb3VudCIQYW1vdW50QmFsYW5jZU5ldyIPcHJpY2VCYWxhbmNlTmV3IgtwcmljZU5ld1gxOCIIcHJpY2VOZXciDnBheW1lbnRCYWxhbmNlIhRwYXltZW50QmFsYW5jZUJpZ0ludCIMc3VwcGx5QmlnSW50IgtjaGVjaFN1cHBseSINZGVwb3NpdEJpZ0ludCILaXNzdWVBbW91bnQiC3ByaWNlT2xkWDE4IghwcmljZU9sZCIEbG9zcyINJHQwMzUyMjgzNTM5NSIHYmFsYW5jZSIPaXNzdWVBbW91bnRCb3RoIg9jYWxjR2V0T25lVG9rZW4iCm91dEFzc2V0SWQiBmNoZWNrcyIQb3V0SW5BbW91bnRBc3NldCINYmFsYW5jZUJpZ0ludCIYb3V0SW5BbW91bnRBc3NldERlY2ltYWxzIgxhbUJhbGFuY2VPbGQiDHByQmFsYW5jZU9sZCIKb3V0QmFsYW5jZSIQb3V0QmFsYW5jZUJpZ0ludCIOcmVkZWVtZWRCaWdJbnQiCWFtb3VudFJhdyINJHQwMzc0NzMzNzUyOSILdG90YWxBbW91bnQiDSR0MDM3NTMzMzc3NTkiC291dEFtQW1vdW50IgtvdXRQckFtb3VudCIMYW1CYWxhbmNlTmV3IgxwckJhbGFuY2VOZXciGGFtb3VudEJvdGhJblBheW1lbnRBc3NldCIWbWFuYWdlclB1YmxpY0tleU9yVW5pdCIBcyIdcGVuZGluZ01hbmFnZXJQdWJsaWNLZXlPclVuaXQiCWlzTWFuYWdlciICcGsiC211c3RNYW5hZ2VyIgJwZCINY2xlYW5BbW91bnRJbiIJaXNSZXZlcnNlIg1mZWVQb29sQW1vdW50Ig0kdDAzOTY0NTM5OTUwIghhc3NldE91dCIHYXNzZXRJbiIScG9vbEFzc2V0SW5CYWxhbmNlIhNwb29sQXNzZXRPdXRCYWxhbmNlIglhbW91bnRPdXQiBG9sZEsiBG5ld0siBmNoZWNrSyIMYW1vdW50T3V0TWluIglhZGRyZXNzVG8iC3N3YXBDb250YWN0IghjaGVja01pbiIGbHNDb25mIg13aXRoZHJhd1N0YXRlIhdwZW5kaW5nTWFuYWdlclB1YmxpY0tleSILY2hlY2tDYWxsZXIiFWNoZWNrTWFuYWdlclB1YmxpY0tleSICcG0iBWhhc1BNIgdjaGVja1BNIg9zaG91bGRBdXRvU3Rha2UiBGFtSWQiBHBySWQiDHNsaXBwYWdlQUludiIMc2xpcHBhZ2VQSW52IgpscFRyYW5zZmVyIgtzbHBTdGFrZUludiINJHQwNDUxNTE0NTYxMyIRcmVmcmVzaEtMcEFjdGlvbnMiEWlzVXBkYXRlZEtMcFZhbGlkIgttYXhTbGlwcGFnZSINJHQwNDYxNzU0NjI0MCIMbWluT3V0QW1vdW50IglhdXRvU3Rha2UiIGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkIg1pc1B1dERpc2FibGVkIgdwYXltZW50Ig0kdDA0NzQyODQ3NTgwIgVib251cyITZW1pdEFtb3VudEVzdGltYXRlZCIKZW1pdEFtb3VudCIIc3Rha2VJbnYiB3NlbmRGZWUiDSR0MDQ4MTY2NDgzNjMiDSR0MDQ4MzY2NDg0NzQiDSR0MDQ4ODI5NDg5ODYiDW91dEFzc2V0SWRTdHIiDWlzR2V0RGlzYWJsZWQiDSR0MDQ5ODcxNTAwMjQiD2Ftb3VudEVzdGltYXRlZCIHYnVybkludiINYXNzZXRUcmFuc2ZlciINJHQwNTA3ODA1MTAyNyIQZmVlQW1vdW50Rm9yQ2FsYyINJHQwNTEwMzA1MTEzOCINJHQwNTE0NDM1MTU5OSINdW5zdGFrZUFtb3VudCIKdW5zdGFrZUludiINJHQwNTI1MDQ1MjY1NSINJHQwNTMyMjA1MzQ2NyINJHQwNTM0NzA1MzU3OCIJb3V0QW10QW10IhRidXJuTFBBc3NldE9uRmFjdG9yeSINJHQwNTQ1OTI1NDY3NCISbm9MZXNzVGhlbkFtdEFzc2V0IhRub0xlc3NUaGVuUHJpY2VBc3NldCINJHQwNTU2MjM1NTcwNCINY2hlY2tQYXltZW50cyIPY2hlY2tQb29sU3RhdHVzIg0kdDA1NjgzMDU2OTExIhVub0xlc3NUaGVuQW1vdW50QXNzZXQiDGNoZWNrQW1vdW50cyINJHQwNTgyMDY1ODI4NyILYW10QXNzZXRTdHIiDXByaWNlQXNzZXRTdHIiGGxhc3RSZWZyZXNoZWRCbG9ja0hlaWdodCIdY2hlY2tMYXN0UmVmcmVzaGVkQmxvY2tIZWlnaHQiDSR0MDU5NDc0NTk1MzgiEGtMcFVwZGF0ZUFjdGlvbnMiCmFtdEFzc2V0SWQiDHByaWNlQXNzZXRJZCINcG9vbExQQmFsYW5jZSISYWNjQW10QXNzZXRCYWxhbmNlIhRhY2NQcmljZUFzc2V0QmFsYW5jZSIKcHJpY2VzTGlzdCIPbHBBbXRBc3NldFNoYXJlIhFscFByaWNlQXNzZXRTaGFyZSIKcG9vbFdlaWdodCIMY3VyUHJpY2VDYWxjIgxhbUJhbGFuY2VSYXciDHByQmFsYW5jZVJhdyIPYW1CYWxhbmNlUmF3WDE4Ig9wckJhbGFuY2VSYXdYMTgiEHBheW1lbnRMcEFzc2V0SWQiDHBheW1lbnRMcEFtdCICdHgiBnZlcmlmeSIPdGFyZ2V0UHVibGljS2V5IgptYXRjaGVyUHViIg0kdDA2ODIwMDY4MjY5IgduZXdIYXNoIgthbGxvd2VkSGFzaCILY3VycmVudEhhc2iDAQABYQAIAAFiAIDC1y8AAWMJALYCAQCAwtcvAAFkCQC2AgEAgICQu7rWrfANAAFlCQC2AgEAAAABZgkAtgIBAAAAAWcJALYCAQABAAFoCQC2AgEAAgABaQIFV0FWRVMAAWoCAl9fAAFrAAEAAWwAAgABbQADAAFuAAQAAW8AAQABcAACAAFxAAMAAXIABAABcwAFAAF0AAYAAXUABwABdgAIAAF3AAkAAXgACgABeQABAAF6AAIAAUEAAwABQgABAAFDAAcBAUQCAUUBRgkAvAIDCQC2AgEFAUUFAWQJALYCAQUBRgEBRwIBRQFGCQC8AgMFAUUFAWQFAUYBAUgCAUkBSgkAoAMBCQC8AgMFAUkJALYCAQUBSgUBZAEBSwMBSQFKAUwJAKADAQkAvQIEBQFJCQC2AgEFAUoFAWQFAUwBAU0DAU4BTwFQCQBrAwUBTgUBTwUBUAEBUQEBSQMJAGYCAAAFAUkJAQEtAQUBSQUBSQEBUgEBSQMJAL8CAgUBZQUBSQkAvgIBBQFJBQFJAQFTAAIQJXNfX3N3YXBDb250cmFjdAEBVAACEyVzX19mYWN0b3J5Q29udHJhY3QBAVUAAhQlc19fbWFuYWdlclB1YmxpY0tleQEBVgACGyVzX19wZW5kaW5nTWFuYWdlclB1YmxpY0tleQEBVwACESVzJXNfX3ByaWNlX19sYXN0AQFYAgFZAVoJALkJAgkAzAgCAhglcyVzJWQlZF9fcHJpY2VfX2hpc3RvcnkJAMwIAgkApAMBBQFZCQDMCAIJAKQDAQUBWgUDbmlsBQFqAQJhYQICYWICYWMJAKwCAgkArAICCQCsAgICCyVzJXMlc19fUF9fBQJhYgICX18FAmFjAQJhZAICYWICYWMJAKwCAgkArAICCQCsAgICCyVzJXMlc19fR19fBQJhYgICX18FAmFjAQJhZQACDyVzX19hbW91bnRBc3NldAECYWYAAg4lc19fcHJpY2VBc3NldAACYWcCByVzX19mZWUAAmFoCQBrAwAKBQFiAJBOAAJhaQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQJhZwUCYWgAAmFqCQC5CQIJAMwIAgICJXMJAMwIAgIDa0xwBQNuaWwFAWoAAmFrCQC5CQIJAMwIAgICJXMJAMwIAgISa0xwUmVmcmVzaGVkSGVpZ2h0BQNuaWwFAWoAAmFsCQC5CQIJAMwIAgICJXMJAMwIAgIPcmVmcmVzaEtMcERlbGF5BQNuaWwFAWoAAmFtAB4AAmFuCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFAmFsBQJhbQECYW8AAhElc19fc1dhdmVzQXNzZXRJZAECYXAAAhYlc19fc1dhdmVzUHJveHlBZGRyZXNzAQJhcQECYXIJALkJAgkAzAgCAgQlcyVzCQDMCAICEWFkZGl0aW9uYWxCYWxhbmNlCQDMCAIFAmFyBQNuaWwFAWoBAmFzAQJhcgkAuQkCCQDMCAICBCVzJXMJAMwIAgITc3Rha2luZ0Fzc2V0QmFsYW5jZQkAzAgCBQJhcgUDbmlsBQFqAQJhdAECYXIJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBAmFxAQUCYXIAAAECYXUBAmFyCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAQJhcwEFAmFyAAABAmF2AAIRJXNfX2ZhY3RvcnlDb25maWcBAmF3AAIYJXMlc19fbWF0Y2hlcl9fcHVibGljS2V5AQJheAECYXkJAKwCAgkArAICAgglcyVzJXNfXwUCYXkCIF9fbWFwcGluZ3NfX3Bvb2xDb250cmFjdDJMcEFzc2V0AQJhegICYUECYUIJAKwCAgkArAICCQCsAgIJAKwCAgIIJWQlZCVzX18FAmFBAgJfXwUCYUICCF9fY29uZmlnAQJhQwECYUQJAKwCAgIoJXMlcyVzX19tYXBwaW5nc19fYmFzZUFzc2V0MmludGVybmFsSWRfXwUCYUQBAmFFAAIMJXNfX3NodXRkb3duAQJhRgECYUcJAKwCAgISJXMlc19fcG9vbFdlaWdodF9fBQJhRwECYUgAAhclc19fYWxsb3dlZExwU2NyaXB0SGFzaAACYUkCFyVzX19mZWVDb2xsZWN0b3JBZGRyZXNzAQJhSgQCYUsCYUwCYU0CYU4JAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIkb3JkZXIgdmFsaWRhdGlvbiBmYWlsZWQ6IG9yZGVyVmFsaWQ9CQClAwEFAmFLAgIgKAUCYUwCASkCDSBzZW5kZXJWYWxpZD0JAKUDAQUCYU0CDiBtYXRjaGVyVmFsaWQ9CQClAwEFAmFOAQJhTwICYVACYVEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQJhUAUCYVEJALkJAgkAzAgCAgptYW5kYXRvcnkgCQDMCAIJAKUIAQUCYVAJAMwIAgIBLgkAzAgCBQJhUQkAzAgCAg8gaXMgbm90IGRlZmluZWQFA25pbAIAAQJhUgICYVACYVEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQJhUAUCYVEJALkJAgkAzAgCAgptYW5kYXRvcnkgCQDMCAIJAKUIAQUCYVAJAMwIAgIBLgkAzAgCBQJhUQkAzAgCAg8gaXMgbm90IGRlZmluZWQFA25pbAIAAQJhUwECYVQJAAIBCQC5CQIJAMwIAgIIbHAucmlkZToJAMwIAgUCYVQFA25pbAIBIAECYVUBAmFUCQC5CQIJAMwIAgIIbHAucmlkZToJAMwIAgUCYVQFA25pbAIBIAACYVYJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQJhTwIFBHRoaXMJAQFUAAACYVcJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQJhTwIFAmFWBQJhSQACYVgKAAJhWQkA/AcEBQJhVgIQZ2V0SW5GZWVSRUFET05MWQkAzAgCCQClCAEFBHRoaXMFA25pbAUDbmlsAwkAAQIFAmFZAgNJbnQFAmFZCQACAQkArAICCQADAQUCYVkCGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAACYVoKAAJhWQkA/AcEBQJhVgIRZ2V0T3V0RmVlUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJhWQIDSW50BQJhWQkAAgEJAKwCAgkAAwEFAmFZAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQBAmJhAAkBAmFPAgUCYVYJAQJhbwABAmJiAAkBAmFPAgUCYVYJAQJhcAABAmJjAAkBC3ZhbHVlT3JFbHNlAgkAmwgCBQJhVgkBAmFFAAcBAmJkAAkA2QQBCQECYU8CBQJhVgkBAmF3AAECYmUABAJiZgkBAmFPAgUEdGhpcwkBAmFlAAQCYmcJAQJhTwIFBHRoaXMJAQJhZgAEAmFCCQECYVICBQJhVgkBAmFDAQUCYmcEAmFBCQECYVICBQJhVgkBAmFDAQUCYmYJALUJAgkBAmFPAgUCYVYJAQJhegIJAKQDAQUCYUEJAKQDAQUCYUIFAWoBAmJoAQJiaQMJAAACBQJiaQUBaQUEdW5pdAkA2QQBBQJiaQECYmoBAmJpAwkAAAIFAmJpBQR1bml0BQFpCQDYBAEJAQV2YWx1ZQEFAmJpAQJiawECYmwJAJkKBwkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCBQJibAUBbwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJsBQFwCQDZBAEJAJEDAgUCYmwFAXEJAQJiaAEJAJEDAgUCYmwFAXIJAQJiaAEJAJEDAgUCYmwFAXMJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJibAUBdAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJsBQF1AAJibQkBAmJrAQkBAmJlAAACYm4FAmJtAAJibwgFAmJuAl8xAAJicAgFAmJuAl8yAAJicQgFAmJuAl8zAAJicggFAmJuAl80AAJicwgFAmJuAl81AAJidAgFAmJuAl82AAJidQgFAmJuAl83AQJidgAJALUJAgkBAmFPAgUCYVYJAQJhdgAFAWoAAmJ3CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCCQECYnYABQFCAhlpbmNvcnJlY3Qgc3Rha2luZyBhZGRyZXNzAAJieAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgkBAmJ2AAUBQwIZaW5jb3JyZWN0IHN0YWtpbmcgYWRkcmVzcwECYnkKAmJ6AmJBAmJCAmJDAmJEAmJFAmJGAmJHAmJIAmJJCQC5CQIJAMwIAgIUJWQlZCVkJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJiegkAzAgCCQCkAwEFAmJBCQDMCAIJAKQDAQUCYkIJAMwIAgkApAMBBQJiQwkAzAgCCQCkAwEFAmJECQDMCAIJAKQDAQUCYkUJAMwIAgkApAMBBQJiRgkAzAgCCQCkAwEFAmJHCQDMCAIJAKQDAQUCYkgJAMwIAgkApAMBBQJiSQUDbmlsBQFqAQJiSgYCYksCYkwCYk0CYkMCYkYCYkcJALkJAgkAzAgCAgwlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJiSwkAzAgCCQCkAwEFAmJMCQDMCAIJAKQDAQUCYk0JAMwIAgkApAMBBQJiQwkAzAgCCQCkAwEFAmJGCQDMCAIJAKQDAQUCYkcFA25pbAUBagECYk4BAmFyAwkAAAIFAmFyAgVXQVZFUwkAZAIICQDvBwEFBHRoaXMJYXZhaWxhYmxlCQECYXQBBQJhcgMJAAACBQJhcgkBAmJhAAQCYmYJAQJhTwIFBHRoaXMJAQJhZQAEAmJnCQECYU8CBQR0aGlzCQECYWYAAwMDCQAAAgUCYmYCBVdBVkVTCQAAAgUCYmcJAQJiYQAHBgMJAAACBQJiZwIFV0FWRVMJAAACBQJiZgkBAmJhAAcJAPAHAgUEdGhpcwkA2QQBBQJhcgkAZAIJAPAHAgUEdGhpcwkA2QQBBQJhcgkBAmF1AQUCYXIJAPAHAgUEdGhpcwkA2QQBBQJhcgECYk8CAmJQAmJRCQC8AgMFAmJQBQFkBQJiUQECYlIDAmJQAmJRAUwJAL0CBAUCYlAFAWQFAmJRBQFMAQJiUwECYlQEAmJVCQD8BwQFAmJUAgdnZXRSYXRlBQNuaWwFA25pbAMJAAACBQJiVQUCYlUEAmJWBQJiVQMJAAECBQJiVgIDSW50BAJiVwUCYlYFAmJXCQECYVMBAiBwcm94eS5nZXRSYXRlKCkgdW5leHBlY3RlZCB2YWx1ZQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECYlgEAmFyAmJZAmJaAmJUBAJjYQkBAmF0AQUCYXIDCQAAAgUCY2EFAmNhBAJjYgkBAmF1AQUCYloDCQAAAgUCY2IFAmNiBAJjYwkBAmJoAQUCYXIDCQBmAgUCYlkAAAQCY2QJAPwHBAUCYlQCB2RlcG9zaXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCY2MFAmJZBQNuaWwDCQAAAgUCY2QFAmNkBAJiVgUCY2QDCQABAgUCYlYCA0ludAQCY2UFAmJWBAJjZgkAZAIFAmNhBQJiWQQCY2cJAGQCBQJjYgUCY2UJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJhcQEFAmFyBQJjZgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmFzAQUCYloFAmNnBQNuaWwFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJjaAYCYXICYlkCYloCYlQCY2kCY2oEAmNhCQECYXQBBQJhcgMJAAACBQJjYQUCY2EEAmNiCQECYXUBBQJiWgMJAAACBQJjYgUCY2IEAmNrCQECYlMBBQJiVAMJAAACBQJjawUCY2sEAmNsCQBrAwUCY2kFAmNhBQJjYgQCY20JAQJiaAEFAmJaBAJjbgkAawMFAmNpBQJiWQUCY2wEAmNvCQBrAwUCY2kFAmJZBQJjawQCY3AJAJYDAQkAzAgCAAAJAMwIAgkAZQIFAmNuBQJjbwUDbmlsAwkAZgIFAmNvAAAEAmNxCQD8BwQFAmJUAgh3aXRoZHJhdwUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJjbQUCY28FA25pbAMJAAACBQJjcQUCY3EEAmJWBQJjcQMJAAECBQJiVgIDSW50BAJjcgUCYlYEAmNmCQBlAgUCY2EFAmNyBAJjZwkAZQIJAGUCBQJjYgUCY28FAmNwCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYXEBBQJhcgUCY2YJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJhcwEFAmJaBQJjZwkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJjagUCY3AJAQJiaAEFAmJaBQNuaWwFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJjcwECYXIJAPwHBAUCYVYCGmdldFBvb2xMZWFzZUNvbmZpZ1JFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwkAzAgCBQJhcgUDbmlsBQNuaWwBAmN0BwJjdQJhcgJiWgJjdgJiVAJjaQJjagQCY2EJAQJhdAEFAmFyAwkAAAIFAmNhBQJjYQQCY2IJAQJhdQEFAmJaAwkAAAIFAmNiBQJjYgQCY3cEAmJWCQECYmgBBQJhcgMJAAECBQJiVgIKQnl0ZVZlY3RvcgQCY3gFAmJWCQDwBwIFBHRoaXMFAmN4AwkAAQIFAmJWAgRVbml0BAJjeQUCYlYICQDvBwEFBHRoaXMJYXZhaWxhYmxlCQACAQILTWF0Y2ggZXJyb3IDCQAAAgUCY3cFAmN3BAJjegkAlgMBCQDMCAIAAAkAzAgCCQBlAgkAZAIFAmN3BQJjYQUCY3YFA25pbAQCY0EJAGsDBQJjdQUCY3oAZAQCY0IJAGUCBQJjYQUCY0EDCQAAAgUCY0IAAAUDbmlsAwkAZgIAAAUCY0IEAmNDCQEBLQEFAmNCCQECYlgEBQJhcgUCY0MFAmJaBQJiVAQCY0QFAmNCCQECY2gGBQJhcgUCY0QFAmJaBQJiVAUCY2kFAmNqCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJjRQECYXIEAmJWCQECY3MBBQJhcgMJAAECBQJiVgIwKEJvb2xlYW4sIEludCwgSW50LCBTdHJpbmcsIFN0cmluZywgSW50LCBTdHJpbmcpBAJjRgUCYlYEAmNHBQJjRgQCY0gIBQJjRwJfMQQCY0kIBQJjRwJfMgQCY3YIBQJjRwJfMwQCY0oIBQJjRwJfNAQCY0sIBQJjRwJfNQQCY2kIBQJjRwJfNgQCY0wIBQJjRwJfNwMFAmNICQECY3QHBQJjSQUCYXIFAmNLBQJjdgkBEUBleHRyTmF0aXZlKDEwNjIpAQUCY0oFAmNpCQERQGV4dHJOYXRpdmUoMTA2MikBBQJjTAUDbmlsCQECYVMBCQCsAgIJAKwCAgIBWwUCYXICEV0gUmViYWxhbmNlIGVycm9yAQJjTQICYXICYlkEAmJWCQECY3MBBQJhcgMJAAECBQJiVgIwKEJvb2xlYW4sIEludCwgSW50LCBTdHJpbmcsIFN0cmluZywgSW50LCBTdHJpbmcpBAJjRgUCYlYEAmNOBQJjRgQCY0gIBQJjTgJfMQQCY0kIBQJjTgJfMgQCY3YIBQJjTgJfMwQCY0oIBQJjTgJfNAQCY0sIBQJjTgJfNQQCY2kIBQJjTgJfNgQCY0wIBQJjTgJfNwMFAmNICQECY2gGBQJhcgUCYlkFAmNLCQERQGV4dHJOYXRpdmUoMTA2MikBBQJjSgUCY2kJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAmNMBQNuaWwJAQJhUwEJAKwCAgkArAICAgFbBQJhcgIeXSB3aXRoZHJhd0Fzc2V0V3JhcHBlcigpIGVycm9yAQJjTwICYXICYlkEAmNQBAJiVgkBAmJoAQUCYXIDCQABAgUCYlYCCkJ5dGVWZWN0b3IEAmN4BQJiVgkA8AcCBQR0aGlzBQJjeAMJAAECBQJiVgIEVW5pdAQCY1EFAmJWCAkA7wcBBQR0aGlzCWF2YWlsYWJsZQkAAgECC01hdGNoIGVycm9yAwkAZgIFAmJZBQJjUAQCY1IJAGUCBQJiWQUCY1AJAQJjTQIFAmFyBQJjUgUDbmlsAQJjUwQCY1QCY1UCY1YCY1cEAmNYCQEBRAIFAmNWBQJjVAQCY1kJAQFEAgUCY1cFAmNVCQECYk8CBQJjWQUCY1gBAmNaAwJjVgJjVwJkYQQCZGIJAQJiZQAEAmRjCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCZGIFAXQEAmRkCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCZGIFAXUEAmRlCQECY1MEBQJkYwUCZGQFAmNWBQJjVwQCYlEJAQFEAgUCY1YFAmRjBAJiUAkBAUQCBQJjVwUCZGQEAmRmCQEBRAIFAmRhBQFiBAJkZwkBAmJPAgUCYlEFAmRmBAJkaAkBAmJPAgUCYlAFAmRmCQDMCAIFAmRlCQDMCAIFAmRnCQDMCAIFAmRoBQNuaWwBAmRpAwJjVgJjVwJkYQQCZGoJAQJjWgMFAmNWBQJjVwUCZGEJAMwIAgkBAUgCCQCRAwIFAmRqAAAFAWIJAMwIAgkBAUgCCQCRAwIFAmRqAAEFAWIJAMwIAgkBAUgCCQCRAwIFAmRqAAIFAWIFA25pbAECZGsEAmRsAmRtAmRuAmFiBAJkYgkBAmJlAAQCZG8JAJEDAgUCZGIFAXEEAmRwCQCRAwIFAmRiBQFyBAJkcQkAkQMCBQJkYgUBcwQCY1QJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJkYgUBdAQCY1UJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJkYgUBdQQCZHIJAJEDAgUCZGIFAXAEAmRzCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEJANkEAQUCZG8JAKwCAgkArAICAgZBc3NldCAFAmRvAg4gZG9lc24ndCBleGlzdAhxdWFudGl0eQMJAQIhPQIFAmRvBQJkbQkAAgECFUludmFsaWQgYXNzZXQgcGFzc2VkLgQCZHQJAQJiTgEFAmRwBAJkdQkBAUQCBQJkdAUCY1QEAmR2CQECYk4BBQJkcQQCZHcJAQFEAgUCZHYFAmNVBAJkeAkBAmJPAgUCZHcFAmR1BAJkeQkBAUgCBQJkeAUBYgQCZHoJAQFEAgUCZG4FAWIEAmRBCQEBRAIFAmRzBQFiBAJkQgkAvAIDBQJkdQUCZHoFAmRBBAJkQwkAvAIDBQJkdwUCZHoFAmRBBAJkRAkBAUsDBQJkQgUCY1QFBUZMT09SBAJkRQkBAUsDBQJkQwUCY1UFBUZMT09SBAJkRgkBAmNPAgUCZHAFAmREAwkAAAIFAmRGBQJkRgQCZEcJAQJjTwIFAmRxBQJkRQMJAAACBQJkRwUCZEcEAmRICQD8BwQFBHRoaXMCCXJlYmFsYW5jZQUDbmlsBQNuaWwDCQAAAgUCZEgFAmRIBAJkSQMJAAACBQJkbAIABQNuaWwJAM4IAgkAzggCBQJkRgUCZEcJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYWIFAmREAwkAAAIFAmRwAgVXQVZFUwUEdW5pdAkA2QQBBQJkcAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJhYgUCZEUDCQAAAgUCZHECBVdBVkVTBQR1bml0CQDZBAEFAmRxCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhZAIJAKUIAQUCYWIFAmRsCQECYkoGBQJkRAUCZEUFAmRuBQJkeQUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVcABQJkeQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVgCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJkeQUDbmlsCQCcCgoFAmREBQJkRQUCZHAFAmRxBQJkdAUCZHYFAmRzBQJkeAUCZHIFAmRJCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJkSgkCZGwCZEsCZEwCZE0CZE4CZE8CYWICZFACZFEEAmRiCQECYmUABAJkbwkA2QQBCQCRAwIFAmRiBQFxBAJkUgkAkQMCBQJkYgUBcgQCZFMJAJEDAgUCZGIFAXMEAmRUCQCRAwIFAmRiBQF2BAJkVQkAkQMCBQJkYgUBdwQCZGMJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJkYgUBdAQCZGQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJkYgUBdQQCZHIJAJEDAgUCZGIFAXAEAmRzCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFAmRvCQCsAgIJAKwCAgIGQXNzZXQgCQDYBAEFAmRvAg4gZG9lc24ndCBleGlzdAhxdWFudGl0eQQCZFYJANgEAQkBC3ZhbHVlT3JFbHNlAgUCZE0JANkEAQIFV0FWRVMEAmRXCQDYBAEJAQt2YWx1ZU9yRWxzZQIFAmRPCQDZBAECBVdBVkVTAwMJAQIhPQIFAmRSBQJkVgYJAQIhPQIFAmRTBQJkVwkAAgECIkludmFsaWQgYW10IG9yIHByaWNlIGFzc2V0IHBhc3NlZC4EAmR0AwUCZFAJAQJiTgEFAmRSCQBlAgkBAmJOAQUCZFIFAmRMBAJkdgMFAmRQCQECYk4BBQJkUwkAZQIJAQJiTgEFAmRTBQJkTgQCZFgJAQFEAgUCZEwFAmRjBAJkWQkBAUQCBQJkTgUCZGQEAmRaCQECYk8CBQJkWQUCZFgEAmR1CQEBRAIFAmR0BQJkYwQCZHcJAQFEAgUCZHYFAmRkBAJlYQMJAAACBQJkcwAABAJkeAUBZQQCZWIFAWUEAmRmCQB2BgkAuQICBQJkWAUCZFkAAAkAtgIBAAUAAQAABQRET1dOCQCXCgUJAQFIAgUCZGYFAWIJAQFIAgUCZFgFAmRjCQEBSAIFAmRZBQJkZAkBAmJPAgkAtwICBQJkdwUCZFkJALcCAgUCZHUFAmRYBQJlYgQCZHgJAQJiTwIFAmR3BQJkdQQCZWIJALwCAwkBAVIBCQC4AgIFAmR4BQJkWgUBZAUCZHgEAmVjCQEBRAIFAmRLBQFiAwMJAQIhPQIFAmR4BQFlCQC/AgIFAmViBQJlYwcJAAIBCQCsAgIJAKwCAgkArAICAg9QcmljZSBzbGlwcGFnZSAJAKYDAQUCZWICHiBleGNlZWRlZCB0aGUgcGFzc2VkIGxpbWl0IG9mIAkApgMBBQJlYwQCZEEJAQFEAgUCZHMFAWIEAmVkCQC9AgQFAmRYCQECYlIDBQJkdwUCZHUFB0NFSUxJTkcFAWQFB0NFSUxJTkcEAmVlCQC9AgQFAmRZBQFkCQECYlIDBQJkdwUCZHUFBUZMT09SBQdDRUlMSU5HBAJlZgMJAL8CAgUCZWQFAmRZCQCUCgIFAmVlBQJkWQkAlAoCBQJkWAUCZWQEAmVnCAUCZWYCXzEEAmVoCAUCZWYCXzIEAmRmCQC9AgQFAmRBBQJlaAUCZHcFBUZMT09SCQCXCgUJAQFLAwUCZGYFAWIFBUZMT09SCQEBSwMFAmVnBQJkYwUHQ0VJTElORwkBAUsDBQJlaAUCZGQFB0NFSUxJTkcFAmR4BQJlYgQCZWkIBQJlYQJfMQQCZWoIBQJlYQJfMgQCZWsIBQJlYQJfMwQCZHkJAQFIAggFAmVhAl80BQFiBAJlbAkBAUgCCAUCZWECXzUFAWIDCQBnAgAABQJlaQkAAgECNkludmFsaWQgY2FsY3VsYXRpb25zLiBMUCBjYWxjdWxhdGVkIGlzIGxlc3MgdGhhbiB6ZXJvLgQCZW0DCQEBIQEFAmRRAAAFAmVpBAJlbgkAZQIFAmRMBQJlagQCZW8JAGUCBQJkTgUCZWsEAmVwCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVwAFAmR5CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBWAIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmR5CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhYQIFAmFiBQJkbAkBAmJ5CgUCZWoFAmVrBQJlbQUCZHkFAmRLBQJlbAUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCZW4FAmVvBQNuaWwJAJ8KDQUCZWkFAmVtBQJkeQUCZHQFAmR2BQJkcwUCZG8FAmRyBQJlcAUCZW4FAmVvBQJkTQUCZE8BAmVxAwJlcgJlcwJkcwQCZXQJAQFHAgUCZXIJALYCAQUCYnQEAmV1CQEBRwIFAmVzCQC2AgEFAmJ1BAJldgkAvAIDCQB2BgkAuQICBQJldAUCZXUAAAkAtgIBAAUAAQASBQRET1dOBQFnBQJkcwMJAAACBQJkcwUBZgUBZgUCZXYBAmV3AwJleAJleQJlegQCZUEJALgCAgkAtgIBCQECYk4BCQECYmoBBQJicgUCZXgEAmVCCQC4AgIJALYCAQkBAmJOAQkBAmJqAQUCYnMFAmV5BAJlQwkAuAICCQC2AgEICQEFdmFsdWUBCQDsBwEFAmJxCHF1YW50aXR5BQJlegQCZUQJAQJlcQMFAmVBBQJlQgUCZUMFAmVEAQJlRQMCZUYCZUcCZXoEAmVBCQBkAgkBAmJOAQkBAmJqAQUCYnIFAmVGBAJlQgkAZAIJAQJiTgEJAQJiagEFAmJzBQJlRwQCZUMJAGQCCAkBBXZhbHVlAQkA7AcBBQJicQhxdWFudGl0eQUCZXoEAmV2CQECZXEDCQC2AgEFAmVBCQC2AgEFAmVCCQC2AgEFAmVDBAJlSAkAzAgCCQEMSW50ZWdlckVudHJ5AgUCYWsFBmhlaWdodAkAzAgCCQELU3RyaW5nRW50cnkCBQJhagkApgMBBQJldgUDbmlsCQCUCgIFAmVIBQJldgECZUkCAmVKAmV2AwkAwAICBQJldgUCZUoGCQECYVMBCQC5CQIJAMwIAgIidXBkYXRlZCBLTHAgbG93ZXIgdGhhbiBjdXJyZW50IEtMcAkAzAgCCQCmAwEFAmVKCQDMCAIJAKYDAQUCZXYFA25pbAIBIAECZUsBAmVMBAJlQQkBAmJOAQkBAmJqAQUCYnIEAmVCCQECYk4BCQECYmoBBQJicwQCZU0IBQJlTAZhbW91bnQEAmVOCQBuBAgFAmVMBmFtb3VudAgFAmVMBXByaWNlBQFiBQVGTE9PUgQCZU8DCQAAAggFAmVMCW9yZGVyVHlwZQUDQnV5CQCUCgIFAmVNCQEBLQEFAmVOCQCUCgIJAQEtAQUCZU0FAmVOBAJlRggFAmVPAl8xBAJlRwgFAmVPAl8yAwMDCQECYmMABgkAAAIFAmJwBQFtBgkAAAIFAmJwBQFuCQACAQIcRXhjaGFuZ2Ugb3BlcmF0aW9ucyBkaXNhYmxlZAMDCQECIT0CCAgFAmVMCWFzc2V0UGFpcgthbW91bnRBc3NldAUCYnIGCQECIT0CCAgFAmVMCWFzc2V0UGFpcgpwcmljZUFzc2V0BQJicwkAAgECE1dyb25nIG9yZGVyIGFzc2V0cy4EAmVQCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKgDAQkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzBQJhagIBMAkBAmFVAQILaW52YWxpZCBrTHAEAmVRCQECZUUDBQJlRgUCZUcAAAQCZVIIBQJlUQJfMQQCZVMIBQJlUQJfMgQCZVQJAMACAgUCZVMFAmVQBAJlVQkAuQkCCQDMCAICBGtMcD0JAMwIAgkApgMBBQJlUAkAzAgCAggga0xwTmV3PQkAzAgCCQCmAwEFAmVTCQDMCAICFCBhbW91bnRBc3NldEJhbGFuY2U9CQDMCAIJAKQDAQUCZUEJAMwIAgITIHByaWNlQXNzZXRCYWxhbmNlPQkAzAgCCQCkAwEFAmVCCQDMCAICGSBhbW91bnRBc3NldEJhbGFuY2VEZWx0YT0JAMwIAgkApAMBBQJlRgkAzAgCAhggcHJpY2VBc3NldEJhbGFuY2VEZWx0YT0JAMwIAgkApAMBBQJlRwkAzAgCAgggaGVpZ2h0PQkAzAgCCQCkAwEFBmhlaWdodAUDbmlsAgAJAJQKAgUCZVQFAmVVAQJlVgECZVcDCQECIT0CCQCQAwEIBQJlVwhwYXltZW50cwABCQACAQIdZXhhY3RseSAxIHBheW1lbnQgaXMgZXhwZWN0ZWQEAmVYCQEFdmFsdWUBCQCRAwIIBQJlVwhwYXltZW50cwAABAJkbQkBBXZhbHVlAQgFAmVYB2Fzc2V0SWQEAmVZCAUCZVgGYW1vdW50BAJlYQkBAmRrBAkA2AQBCAUCZVcNdHJhbnNhY3Rpb25JZAkA2AQBBQJkbQUCZVkIBQJlVwZjYWxsZXIEAmRECAUCZWECXzEEAmRFCAUCZWECXzIEAmRyCQENcGFyc2VJbnRWYWx1ZQEIBQJlYQJfOQQCZEkIBQJlYQNfMTADAwkBAmJjAAYJAAACBQJkcgUBbgkAAgEJAKwCAgIsR2V0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluLiBTdGF0dXMgPSAJAKQDAQUCZHIJAJcKBQUCZEQFAmRFBQJlWQUCZG0FAmRJAQJlWgMCZVcCZEsCZFEDCQECIT0CCQCQAwEIBQJlVwhwYXltZW50cwACCQACAQIfZXhhY3RseSAyIHBheW1lbnRzIGFyZSBleHBlY3RlZAQCZmEJAQV2YWx1ZQEJAJEDAggFAmVXCHBheW1lbnRzAAAEAmZiCQEFdmFsdWUBCQCRAwIIBQJlVwhwYXltZW50cwABBAJmYwkBAmRKCQkA2AQBCAUCZVcNdHJhbnNhY3Rpb25JZAUCZEsIBQJmYQZhbW91bnQIBQJmYQdhc3NldElkCAUCZmIGYW1vdW50CAUCZmIHYXNzZXRJZAkApQgBCAUCZVcGY2FsbGVyBwUCZFEEAmRyCQENcGFyc2VJbnRWYWx1ZQEIBQJmYwJfOAMDAwkBAmJjAAYJAAACBQJkcgUBbAYJAAACBQJkcgUBbgkAAgEJAKwCAgIsUHV0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluLiBTdGF0dXMgPSAJAKQDAQUCZHIFAmZjAQJmZAECYlkEAmZlCQD8BwQFAmFWAgRlbWl0CQDMCAIFAmJZBQNuaWwFA25pbAMJAAACBQJmZQUCZmUEAmZmBAJiVgUCZmUDCQABAgUCYlYCB0FkZHJlc3MEAmZnBQJiVgkA/AcEBQJmZwIEZW1pdAkAzAgCBQJiWQUDbmlsBQNuaWwFBHVuaXQDCQAAAgUCZmYFAmZmBQJiWQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECZmgCAmJZAmFpBAJmaQMJAAACBQJhaQAAAAAJAGsDBQJiWQUCYWkFAWIJAJQKAgkAZQIFAmJZBQJmaQUCZmkBAmZqBAJmawJmbAJhYgJhYwQCZm0JAAACBQJhYwUEdW5pdAQCZm4JAQJiTgEJAQJiagEFAmJyBAJmbwkBAmJOAQkBAmJqAQUCYnMEAmZwAwkAAAIFAmZsBQJicgYDCQAAAgUCZmwFAmJzBwkBAmFTAQINaW52YWxpZCBhc3NldAQCZnEDBQJmbQkAlAoCBQJmbgUCZm8DBQJmcAkAlAoCCQBlAgUCZm4FAmZrBQJmbwkAlAoCBQJmbgkAZQIFAmZvBQJmawQCZnIIBQJmcQJfMQQCZnMIBQJmcQJfMgQCZnQDBQJmcAkAlAoCBQJmawAACQCUCgIAAAUCZmsEAmZ1CAUCZnQCXzEEAmZ2CAUCZnQCXzIEAmVNCAkBAmZoAgUCZnUFAmFYAl8xBAJlTggJAQJmaAIFAmZ2BQJhWAJfMQQCZncJAQJmaAIFAmZrBQJhWAQCZngIBQJmdwJfMQQCZmkIBQJmdwJfMgQCZnkJAGQCBQJmcgUCZU0EAmZ6CQBkAgUCZnMFAmVOBAJmQQkBAmJPAgkBAUQCBQJmegUCYnUJAQFEAgUCZnkFAmJ0BAJmQgkBAUgCBQJmQQUBYgQCZkMDBQJmcAUCZnIFAmZzBAJmRAkAtgIBBQJmQwQCZkUJALYCAQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJicQkArAICCQCsAgICBmFzc2V0IAkA2AQBBQJicQIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkEAmZGAwkAvwICBQJmRQUBZgYJAQJhUwECImluaXRpYWwgZGVwb3NpdCByZXF1aXJlcyBhbGwgY29pbnMDCQAAAgUCZkYFAmZGBAJmRwkAtgIBBQJmeAQCZkgJAJYDAQkAzAgCAAAJAMwIAgkAoAMBCQC6AgIJALkCAgUCZkUJALgCAgkBCnNxcnRCaWdJbnQECQC3AgIFAWQJALoCAgkAuQICBQJmRwUBZAUCZkQAEgASBQRET1dOBQFkBQFkBQNuaWwEAmVwAwUCZm0FA25pbAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVcABQJmQgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVgCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJmQgkAzAgCCQELU3RyaW5nRW50cnkCCQECYWECCQClCAEJAQV2YWx1ZQEFAmFiCQDYBAEJAQV2YWx1ZQEFAmFjCQECYnkKBQJmdQUCZnYFAmZIBQJmQgAAAAAFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAAAAAABQNuaWwEAmZJCQECYk8CCQEBRAIFAmZzBQJidQkBAUQCBQJmcgUCYnQEAmZKCQEBSAIFAmZJBQFiBAJmSwQCZkwDBQJmcAkAlAoCBQJmdQUCZnIJAJQKAgUCZnYFAmZzBAJiWQgFAmZMAl8xBAJmTQgFAmZMAl8yBAJmTgkAoAMBCQC8AgMFAmZFCQC2AgEJAGkCBQJiWQACCQC2AgEFAmZNCQBrAwkAZQIFAmZIBQJmTgUBYgUCZk4JAJcKBQUCZkgFAmVwBQJmaQUCZksFAmZwCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJmTwUCZlACZngCZmwCYWICYWMEAmZtCQAAAgUCYWMFBHVuaXQEAmRiCQECYmUABAJkYwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmRiBQF0BAJkZAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmRiBQF1BAJmUQkAzAgCAwkAAAIFAmZsBQJicQYJAQJhUwECEGludmFsaWQgbHAgYXNzZXQFA25pbAMJAAACBQJmUQUCZlEEAmZSAwkAAAIFAmZQBQJicgYDCQAAAgUCZlAFAmJzBwkBAmFTAQINaW52YWxpZCBhc3NldAQCZlMDBQJmUgkAtgIBCQECYk4BCQECYmoBBQJicgkAtgIBCQECYk4BCQECYmoBBQJicwQCZlQDBQJmUgUCZGMFAmRkBAJmVQkBAmJOAQkBAmJqAQUCYnIEAmZWCQECYk4BCQECYmoBBQJicwQCZlcDBQJmUgUCZlUFAmZWBAJmWAkAtgIBBQJmVwQCZkUJALYCAQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJicQkArAICCQCsAgICBmFzc2V0IAkA2AQBBQJicQIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkEAmZZCQC2AgEFAmZ4BAJmWgkAlgMBCQDMCAIAAAkAzAgCCQCgAwEJALoCAgkAuQICBQJmUwkAuAICBQFkCQB2BgkAuAICBQFkCQC6AgIJALkCAgUCZlkFAWQFAmZFABIFAWgAAAASBQRET1dOBQFkBQNuaWwEAmdhCQECZmgCBQJmWgUCYVoEAmdiCAUCZ2ECXzEEAmZpCAUCZ2ECXzIEAmdjAwUCZlIJAJYKBAUCZ2IAAAkAZQIFAmZVBQJmWgUCZlYJAJYKBAAABQJnYgUCZlUJAGUCBQJmVgUCZloEAmdkCAUCZ2MCXzEEAmdlCAUCZ2MCXzIEAmdmCAUCZ2MCXzMEAmdnCAUCZ2MCXzQEAmZBCQECYk8CCQEBRAIFAmdnBQJidQkBAUQCBQJnZgUCYnQEAmZCCQEBSAIFAmZBBQFiBAJlcAMFAmZtBQNuaWwJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFkAgkApQgBCQEFdmFsdWUBBQJhYgkA2AQBCQEFdmFsdWUBBQJhYwkBAmJKBgUCZ2QFAmdlBQJmeAUCZkIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFXAAUCZkIJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFYAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCZkIFA25pbAQCZkkJAQJiTwIJAQFEAgUCZlYFAmJ1CQEBRAIFAmZVBQJidAQCZkoJAQFIAgUCZkkFAWIEAmZLBAJnaAkAaAIJAKADAQkAvAIDBQJmUwUCZlkFAmZFAAIJAGsDCQBlAgUCZ2IFAmdoBQFiBQJnaAkAlwoFBQJnYgUCZXAFAmZpBQJmSwUCZlIJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmdpAAQCYlYJAKIIAQkBAVUAAwkAAQIFAmJWAgZTdHJpbmcEAmdqBQJiVgkA2QQBBQJnagMJAAECBQJiVgIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAQJnawAEAmJWCQCiCAEJAQFWAAMJAAECBQJiVgIGU3RyaW5nBAJnagUCYlYJANkEAQUCZ2oDCQABAgUCYlYCBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgECZ2wBAmVXBAJiVgkBAmdpAAMJAAECBQJiVgIKQnl0ZVZlY3RvcgQCZ20FAmJWCQAAAggFAmVXD2NhbGxlclB1YmxpY0tleQUCZ20DCQABAgUCYlYCBFVuaXQJAAACCAUCZVcGY2FsbGVyBQR0aGlzCQACAQILTWF0Y2ggZXJyb3IBAmduAQJlVwQCZ28JAAIBAhFQZXJtaXNzaW9uIGRlbmllZAQCYlYJAQJnaQADCQABAgUCYlYCCkJ5dGVWZWN0b3IEAmdtBQJiVgMJAAACCAUCZVcPY2FsbGVyUHVibGljS2V5BQJnbQYFAmdvAwkAAQIFAmJWAgRVbml0AwkAAAIIBQJlVwZjYWxsZXIFBHRoaXMGBQJnbwkAAgECC01hdGNoIGVycm9yHgJlVwEJcmViYWxhbmNlAAkAzggCCQECY0UBCQECYU8CBQR0aGlzCQECYWUACQECY0UBCQECYU8CBQR0aGlzCQECYWYAAmVXASFjYWxjdWxhdGVBbW91bnRPdXRGb3JTd2FwUkVBRE9OTFkDAmdwAmdxAmdyBAJncwMJAAACBQJncQcEAmd0CQECYU8CBQR0aGlzCQECYWYABAJndQkBAmFPAgUEdGhpcwkBAmFlAAkAlAoCBQJndAUCZ3UEAmd0CQECYU8CBQR0aGlzCQECYWUABAJndQkBAmFPAgUEdGhpcwkBAmFmAAkAlAoCBQJndAUCZ3UEAmd0CAUCZ3MCXzEEAmd1CAUCZ3MCXzIEAmd2CQECYk4BBQJndQQCZ3cJAQJiTgEFAmd0BAJneAkAawMFAmd3BQJncAkAZAIFAmd2BQJncAQCZ3kJALkCAgkAtgIBBQJndgkAtgIBBQJndwQCZ3oJALkCAgkAtwICCQC3AgIJALYCAQkBAmJOAQUCZ3UJALYCAQUCZ3AJALYCAQUCZ3IJALgCAgkAtgIBCQECYk4BBQJndAkAtgIBBQJneAQCZ0EDCQDAAgIFAmd6BQJneQYJAAIBAhRuZXcgSyBpcyBmZXdlciBlcnJvcgMJAAACBQJnQQUCZ0EJAJQKAgUDbmlsBQJneAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJlVwEmY2FsY3VsYXRlQW1vdW50T3V0Rm9yU3dhcEFuZFNlbmRUb2tlbnMFAmdwAmdxAmdCAmdDAmdyBAJnRAoAAmFZCQD8BwQFAmFWAhdnZXRTd2FwQ29udHJhY3RSRUFET05MWQUDbmlsBQNuaWwDCQABAgUCYVkCBlN0cmluZwUCYVkJAAIBCQCsAgIJAAMBBQJhWQIbIGNvdWxkbid0IGJlIGNhc3QgdG8gU3RyaW5nBAJmUQkAzAgCAwkAZwIICQEFdmFsdWUBCQCRAwIIBQJlVwhwYXltZW50cwAABmFtb3VudAUCZ3AGCQECYVMBAgxXcm9uZyBhbW91bnQJAMwIAgMJAAACCAUCZVcGY2FsbGVyCQERQGV4dHJOYXRpdmUoMTA2MikBBQJnRAYJAQJhUwECEVBlcm1pc3Npb24gZGVuaWVkBQNuaWwDCQAAAgUCZlEFAmZRBAJlWAkBBXZhbHVlAQkAkQMCCAUCZVcIcGF5bWVudHMAAAQCZ3UJAQJiagEIBQJlWAdhc3NldElkBAJndAMJAAACBQJncQcJAQJhTwIFBHRoaXMJAQJhZgAJAQJhTwIFBHRoaXMJAQJhZQAEAmd2CQBlAgkBAmJOAQUCZ3UICQEFdmFsdWUBCQCRAwIIBQJlVwhwYXltZW50cwAABmFtb3VudAQCZ3cJAQJiTgEFAmd0BAJneAkAawMFAmd3BQJncAkAZAIFAmd2BQJncAQCZ3kJALkCAgkAtgIBBQJndgkAtgIBBQJndwQCZ3oJALkCAgkAtwICCQC2AgEJAQJiTgEFAmd1CQC2AgEFAmdyCQC4AgIJALYCAQkBAmJOAQUCZ3QJALYCAQUCZ3gEAmdBAwkAwAICBQJnegUCZ3kGCQACAQIUbmV3IEsgaXMgZmV3ZXIgZXJyb3IDCQAAAgUCZ0EFAmdBBAJnRQMJAGcCBQJneAUCZ0IGCQACAQIsRXhjaGFuZ2UgcmVzdWx0IGlzIGZld2VyIGNvaW5zIHRoYW4gZXhwZWN0ZWQDCQAAAgUCZ0UFAmdFBAJnRgQCYlYJAQJjcwEFAmd0AwkAAQIFAmJWAjAoQm9vbGVhbiwgSW50LCBJbnQsIFN0cmluZywgU3RyaW5nLCBJbnQsIFN0cmluZykEAmNGBQJiVgUCY0YJAAIBAhJlcnJvciBsZWFzZSBjb25maWcEAmdHCQECY08CBQJndAUCZ3gDCQAAAgUCZ0cFAmdHBAJkSAkA/AcEBQR0aGlzAglyZWJhbGFuY2UFA25pbAUDbmlsAwkAAAIFAmRIBQJkSAkAlAoCCQDOCAIFAmdHCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAmdDBQJneAkBAmJoAQUCZ3QFA25pbAUCZ3gJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZVcBCnNldE1hbmFnZXIBAmdIBAJnSQkBAmduAQUCZVcDCQAAAgUCZ0kFAmdJBAJnSgkA2QQBBQJnSAMJAAACBQJnSgUCZ0oJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVYABQJnSAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmVXAQ5jb25maXJtTWFuYWdlcgAEAmdLCQECZ2sABAJnTAMJAQlpc0RlZmluZWQBBQJnSwYJAAIBAhJObyBwZW5kaW5nIG1hbmFnZXIDCQAAAgUCZ0wFAmdMBAJnTQMJAAACCAUCZVcPY2FsbGVyUHVibGljS2V5CQEFdmFsdWUBBQJnSwYJAAIBAhtZb3UgYXJlIG5vdCBwZW5kaW5nIG1hbmFnZXIDCQAAAgUCZ00FAmdNCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFVAAkA2AQBCQEFdmFsdWUBBQJnSwkAzAgCCQELRGVsZXRlRW50cnkBCQEBVgAFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJlVwEDcHV0AgJkSwJnTgMJAGYCAAAFAmRLCQACAQIgSW52YWxpZCBzbGlwcGFnZVRvbGVyYW5jZSBwYXNzZWQEAmZjCQECZVoDBQJlVwUCZEsGBAJlbQgFAmZjAl8yBAJkbwgFAmZjAl83BAJkSQgFAmZjAl85BAJlbggFAmZjA18xMAQCZW8IBQJmYwNfMTEEAmdPCAUCZmMDXzEyBAJnUAgFAmZjA18xMwQCZmEJALYCAQgJAQV2YWx1ZQEJAJEDAggFAmVXCHBheW1lbnRzAAAGYW1vdW50BAJmYgkAtgIBCAkBBXZhbHVlAQkAkQMCCAUCZVcIcGF5bWVudHMAAQZhbW91bnQEAmVECQECZXcDBQJmYQUCZmIJALYCAQAAAwkAAAIFAmVEBQJlRAQCZmUJAPwHBAUCYVYCBGVtaXQJAMwIAgUCZW0FA25pbAUDbmlsAwkAAAIFAmZlBQJmZQQCZmYEAmJWBQJmZQMJAAECBQJiVgIHQWRkcmVzcwQCZmcFAmJWCQD8BwQFAmZnAgRlbWl0CQDMCAIFAmVtBQNuaWwFA25pbAUEdW5pdAMJAAACBQJmZgUCZmYEAmdRAwkAZgIFAmVuAAAJAPwHBAUCYngCA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJnTwUCZW4FA25pbAUDbmlsAwkAAAIFAmdRBQJnUQQCZ1IDCQBmAgUCZW8AAAkA/AcEBQJieAIDcHV0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmdQBQJlbwUDbmlsBQNuaWwDCQAAAgUCZ1IFAmdSBAJnUwMFAmdOBAJnVAkA/AcEBQJidwIFc3Rha2UFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZG8FAmVtBQNuaWwDCQAAAgUCZ1QFAmdUBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAmVXBmNhbGxlcgUCZW0FAmRvBQNuaWwEAmdVCQECZUUDAAAAAAAAAwkAAAIFAmdVBQJnVQQCZXYIBQJnVQJfMgQCZ1YIBQJnVQJfMQQCZ1cJAQJlSQIFAmVEBQJldgMJAAACBQJnVwUCZ1cJAM4IAgkAzggCBQJkSQUCZ1MFAmdWCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmVXAQpwdXRGb3JGcmVlAQJnWAMJAGYCAAAFAmdYCQACAQIUSW52YWxpZCB2YWx1ZSBwYXNzZWQEAmZjCQECZVoDBQJlVwUCZ1gHBAJkSQgFAmZjAl85BAJmYQkAtgIBCAkBBXZhbHVlAQkAkQMCCAUCZVcIcGF5bWVudHMAAAZhbW91bnQEAmZiCQC2AgEICQEFdmFsdWUBCQCRAwIIBQJlVwhwYXltZW50cwABBmFtb3VudAQCZUQJAQJldwMFAmZhBQJmYgkAtgIBAAADCQAAAgUCZUQFAmVEBAJnWQkBAmVFAwAAAAAAAAQCZ1YIBQJnWQJfMQQCZXYIBQJnWQJfMgQCZ1cJAQJlSQIFAmVEBQJldgMJAAACBQJnVwUCZ1cJAM4IAgUCZEkFAmdWCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmVXAQlwdXRPbmVUa24CAmdaAmhhBAJoYgoAAmFZCQD8BwQFAmFWAihpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZFJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCYVkCB0Jvb2xlYW4FAmFZCQACAQkArAICCQADAQUCYVkCHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4EAmhjAwMDCQECYmMABgkAAAIFAmJwBQFsBgkAAAIFAmJwBQFuBgUCaGIEAmZRCQDMCAIDAwkBASEBBQJoYwYJAQJnbAEFAmVXBgkBAmFTAQIhcHV0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluCQDMCAIDCQAAAgkAkAMBCAUCZVcIcGF5bWVudHMAAQYJAQJhUwECHmV4YWN0bHkgMSBwYXltZW50IGFyZSBleHBlY3RlZAUDbmlsAwkAAAIFAmZRBQJmUQQCaGQJAJEDAggFAmVXCHBheW1lbnRzAAAEAmZsCAUCaGQHYXNzZXRJZAQCZmsIBQJoZAZhbW91bnQEAmVEAwkAAAIFAmZsBQJicgkBAmV3AwkAtgIBBQJmawkAtgIBAAAJALYCAQAAAwkAAAIFAmZsBQJicwkBAmV3AwkAtgIBAAAJALYCAQUCZmsJALYCAQAACQECYVMBAh5wYXltZW50IGFzc2V0IGlzIG5vdCBzdXBwb3J0ZWQDCQAAAgUCZUQFAmVEBAJhYggFAmVXBmNhbGxlcgQCYWMIBQJlVw10cmFuc2FjdGlvbklkBAJoZQkBAmZqBAUCZmsFAmZsBQJhYgUCYWMDCQAAAgUCaGUFAmhlBAJmcAgFAmhlAl81BAJoZggFAmhlAl80BAJmaQgFAmhlAl8zBAJlcAgFAmhlAl8yBAJoZwgFAmhlAl8xBAJoaAMDCQBmAgUCZ1oAAAkAZgIFAmdaBQJoZwcJAQJhUwEJALkJAgkAzAgCAh9hbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZ1oFA25pbAIABQJoZwQCZmUJAQJmZAEFAmhoAwkAAAIFAmZlBQJmZQQCZ1MDBQJoYQQCaGkJAPwHBAUCYncCBXN0YWtlBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmJxBQJoaAUDbmlsAwkAAAIFAmhpBQJoaQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQJlVwZjYWxsZXIFAmhoBQJicQUDbmlsBAJoagMJAGYCBQJmaQAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmFXBQJmaQUCZmwFA25pbAUDbmlsBAJoawMJAAACBQR0aGlzBQJhVwkAlAoCAAAAAAMFAmZwCQCUCgIJAQEtAQUCZmkAAAkAlAoCAAAJAQEtAQUCZmkEAmVGCAUCaGsCXzEEAmVHCAUCaGsCXzIEAmhsCQECZUUDBQJlRgUCZUcAAAQCZ1YIBQJobAJfMQQCZXYIBQJobAJfMgQCZVAJAQV2YWx1ZQEJAKIIAQUCYWoEAmdXCQECZUkCBQJlRAUCZXYDCQAAAgUCZ1cFAmdXBAJkSAkA/AcEBQR0aGlzAglyZWJhbGFuY2UFA25pbAUDbmlsAwkAAAIFAmRIBQJkSAkAlAoCCQDOCAIJAM4IAgkAzggCBQJlcAUCZ1MFAmhqBQJnVgUCaGgJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZVcBEXB1dE9uZVRrblJFQURPTkxZAgJmbAJmawQCaG0JAQJmagQFAmZrCQECYmgBBQJmbAUEdW5pdAUEdW5pdAQCaGcIBQJobQJfMQQCZXAIBQJobQJfMgQCZmkIBQJobQJfMwQCaGYIBQJobQJfNAQCZnAIBQJobQJfNQkAlAoCBQNuaWwJAJUKAwUCaGcFAmZpBQJoZgJlVwEJZ2V0T25lVGtuAgJobgJnWgQCaGIKAAJhWQkA/AcEBQJhVgIoaXNQb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWRSRUFET05MWQkAzAgCCQClCAEFBHRoaXMFA25pbAUDbmlsAwkAAQIFAmFZAgdCb29sZWFuBQJhWQkAAgEJAKwCAgkAAwEFAmFZAhwgY291bGRuJ3QgYmUgY2FzdCB0byBCb29sZWFuBAJobwMDCQECYmMABgkAAAIFAmJwBQFuBgUCaGIEAmZRCQDMCAIDAwkBASEBBQJobwYJAQJnbAEFAmVXBgkBAmFTAQIhZ2V0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluCQDMCAIDCQAAAgkAkAMBCAUCZVcIcGF5bWVudHMAAQYJAQJhUwECHmV4YWN0bHkgMSBwYXltZW50IGFyZSBleHBlY3RlZAUDbmlsAwkAAAIFAmZRBQJmUQQCZlAJAQJiaAEFAmhuBAJoZAkAkQMCCAUCZVcIcGF5bWVudHMAAAQCZmwIBQJoZAdhc3NldElkBAJmeAgFAmhkBmFtb3VudAQCZUQJAQJldwMJALYCAQAACQC2AgEAAAkAtgIBAAADCQAAAgUCZUQFAmVEBAJhYggFAmVXBmNhbGxlcgQCYWMIBQJlVw10cmFuc2FjdGlvbklkBAJocAkBAmZPBQUCZlAFAmZ4BQJmbAUCYWIFAmFjAwkAAAIFAmhwBQJocAQCZlIIBQJocAJfNQQCaGYIBQJocAJfNAQCZmkIBQJocAJfMwQCZXAIBQJocAJfMgQCaHEIBQJocAJfMQQCYlkDAwkAZgIFAmdaAAAJAGYCBQJnWgUCaHEHCQECYVMBCQC5CQIJAMwIAgIfYW1vdW50IHRvIHJlY2VpdmUgaXMgbGVzcyB0aGFuIAkAzAgCCQCkAwEFAmdaBQNuaWwCAAUCaHEEAmdGBAJiVgkBAmNzAQUCaG4DCQABAgUCYlYCMChCb29sZWFuLCBJbnQsIEludCwgU3RyaW5nLCBTdHJpbmcsIEludCwgU3RyaW5nKQQCY0YFAmJWBQJjRgkAAgECEmVycm9yIGxlYXNlIGNvbmZpZwQCaHIJAPwHBAUCYVYCBGJ1cm4JAMwIAgUCZngFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZmwFAmZ4BQNuaWwDCQAAAgUCaHIFAmhyBAJnRwkBAmNPAgUCaG4FAmJZAwkAAAIFAmdHBQJnRwQCaHMJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYWIFAmJZBQJmUAUDbmlsBAJoagMJAGYCBQJmaQAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmFXBQJmaQUCZlAFA25pbAUDbmlsBAJodAQCaHUDCQAAAgUEdGhpcwUCYVcAAAUCZmkDBQJmUgkAlAoCCQEBLQEJAGQCBQJiWQUCaHUAAAkAlAoCAAAJAQEtAQkAZAIFAmJZBQJodQQCZUYIBQJodAJfMQQCZUcIBQJodAJfMgQCaHYJAQJlRQMFAmVGBQJlRwAABAJnVggFAmh2Al8xBAJldggFAmh2Al8yBAJnVwkBAmVJAgUCZUQFAmV2AwkAAAIFAmdXBQJnVwQCZEgJAPwHBAUEdGhpcwIJcmViYWxhbmNlBQNuaWwFA25pbAMJAAACBQJkSAUCZEgJAJQKAgkAzggCCQDOCAIJAM4IAgUCZXAFAmhzBQJoagUCZ1YFAmJZCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmVXARFnZXRPbmVUa25SRUFET05MWQICZlACZngEAmh3CQECZk8FCQECYmgBBQJmUAUCZngFAmJxBQR1bml0BQR1bml0BAJocQgFAmh3Al8xBAJlcAgFAmh3Al8yBAJmaQgFAmh3Al8zBAJoZggFAmh3Al80BAJmUggFAmh3Al81CQCUCgIFA25pbAkAlQoDBQJocQUCZmkFAmhmAmVXARN1bnN0YWtlQW5kR2V0T25lVGtuAwJoeAJobgJnWgQCaGIKAAJhWQkA/AcEBQJhVgIoaXNQb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWRSRUFET05MWQkAzAgCCQClCAEFBHRoaXMFA25pbAUDbmlsAwkAAQIFAmFZAgdCb29sZWFuBQJhWQkAAgEJAKwCAgkAAwEFAmFZAhwgY291bGRuJ3QgYmUgY2FzdCB0byBCb29sZWFuBAJobwMDCQECYmMABgkAAAIFAmJwBQFuBgUCaGIEAmZRCQDMCAIDAwkBASEBBQJobwYJAQJnbAEFAmVXBgkBAmFTAQIhZ2V0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluCQDMCAIDCQAAAgkAkAMBCAUCZVcIcGF5bWVudHMAAAYJAQJhUwECGG5vIHBheW1lbnRzIGFyZSBleHBlY3RlZAUDbmlsAwkAAAIFAmZRBQJmUQQCZlAJAQJiaAEFAmhuBAJhYggFAmVXBmNhbGxlcgQCYWMIBQJlVw10cmFuc2FjdGlvbklkBAJlRAkBAmV3AwkAtgIBAAAJALYCAQAACQC2AgEAAAMJAAACBQJlRAUCZUQEAmh5CQD8BwQFAmJ3Agd1bnN0YWtlCQDMCAIJANgEAQUCYnEJAMwIAgUCaHgFA25pbAUDbmlsAwkAAAIFAmh5BQJoeQQCaHoJAQJmTwUFAmZQBQJoeAUCYnEFAmFiBQJhYwMJAAACBQJoegUCaHoEAmZSCAUCaHoCXzUEAmhmCAUCaHoCXzQEAmZpCAUCaHoCXzMEAmVwCAUCaHoCXzIEAmhxCAUCaHoCXzEEAmJZAwMJAGYCBQJnWgAACQBmAgUCZ1oFAmhxBwkBAmFTAQkAuQkCCQDMCAICH2Ftb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJnWgUDbmlsAgAFAmhxBAJocgkA/AcEBQJhVgIEYnVybgkAzAgCBQJoeAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJicQUCaHgFA25pbAMJAAACBQJocgUCaHIEAmdHCQECY08CBQJobgUCYlkDCQAAAgUCZ0cFAmdHBAJocwkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUCZVcGY2FsbGVyBQJiWQUCZlAFA25pbAQCaGoDCQBmAgUCZmkAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJhVwUCZmkFAmZQBQNuaWwFA25pbAQCaEEEAmh1AwkAAAIFBHRoaXMFAmFXAAAFAmZpAwUCZlIJAJQKAgkBAS0BCQBkAgUCYlkFAmh1AAAJAJQKAgAACQEBLQEJAGQCBQJiWQUCaHUEAmVGCAUCaEECXzEEAmVHCAUCaEECXzIEAmhCCQECZUUDBQJlRgUCZUcAAAQCZ1YIBQJoQgJfMQQCZXYIBQJoQgJfMgQCZ1cJAQJlSQIFAmVEBQJldgMJAAACBQJnVwUCZ1cEAmRICQD8BwQFBHRoaXMCCXJlYmFsYW5jZQUDbmlsBQNuaWwDCQAAAgUCZEgFAmRICQCUCgIJAM4IAgkAzggCCQDOCAIJAM4IAgUCZXAFAmdHBQJocwUCaGoFAmdWBQJiWQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJlVwEDZ2V0AAQCZWEJAQJlVgEFAmVXBAJoQwgFAmVhAl8xBAJkRQgFAmVhAl8yBAJlWQgFAmVhAl8zBAJkbQgFAmVhAl80BAJkSQgFAmVhAl81BAJlRAkBAmV3AwkAtgIBAAAJALYCAQAACQC2AgEAAAMJAAACBQJlRAUCZUQEAmhECQD8BwQFAmFWAgRidXJuCQDMCAIFAmVZBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmRtBQJlWQUDbmlsAwkAAAIFAmhEBQJoRAQCaEUJAQJlRQMJAQEtAQUCaEMJAQEtAQUCZEUAAAQCZ1YIBQJoRQJfMQQCZXYIBQJoRQJfMgQCZ1cJAQJlSQIFAmVEBQJldgMJAAACBQJnVwUCZ1cJAM4IAgUCZEkFAmdWCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmVXAQlnZXROb0xlc3MCAmhGAmhHBAJlYQkBAmVWAQUCZVcEAmRECAUCZWECXzEEAmRFCAUCZWECXzIEAmVZCAUCZWECXzMEAmRtCAUCZWECXzQEAmRJCAUCZWECXzUDCQBmAgUCaEYFAmRECQACAQkArAICCQCsAgIJAKwCAgIcbm9MZXNzVGhlbkFtdEFzc2V0IGZhaWxlZDogIAkApAMBBQJkRAIDIDwgCQCkAwEFAmhGAwkAZgIFAmhHBQJkRQkAAgEJAKwCAgkArAICCQCsAgICHW5vTGVzc1RoZW5QcmljZUFzc2V0IGZhaWxlZDogCQCkAwEFAmRFAgMgPCAJAKQDAQUCaEcEAmVECQECZXcDCQC2AgEAAAkAtgIBAAAJALYCAQAAAwkAAAIFAmVEBQJlRAQCaEQJAPwHBAUCYVYCBGJ1cm4JAMwIAgUCZVkFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZG0FAmVZBQNuaWwDCQAAAgUCaEQFAmhEBAJoSAkBAmVFAwkBAS0BBQJkRAkBAS0BBQJkRQAABAJnVggFAmhIAl8xBAJldggFAmhIAl8yBAJnVwkBAmVJAgUCZUQFAmV2AwkAAAIFAmdXBQJnVwkAzggCBQJkSQUCZ1YJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZVcBDXVuc3Rha2VBbmRHZXQBAmJZBAJoSQMJAQIhPQIJAJADAQgFAmVXCHBheW1lbnRzAAAJAAIBAhhObyBwYXltZW50cyBhcmUgZXhwZWN0ZWQGAwkAAAIFAmhJBQJoSQQCZGIJAQJiZQAEAmRvCQDZBAEJAJEDAgUCZGIFAXEEAmVECQECZXcDCQC2AgEAAAkAtgIBAAAJALYCAQAAAwkAAAIFAmVEBQJlRAQCaHkJAPwHBAUCYncCB3Vuc3Rha2UJAMwIAgkA2AQBBQJkbwkAzAgCBQJiWQUDbmlsBQNuaWwDCQAAAgUCaHkFAmh5BAJlYQkBAmRrBAkA2AQBCAUCZVcNdHJhbnNhY3Rpb25JZAkA2AQBBQJkbwUCYlkIBQJlVwZjYWxsZXIEAmRECAUCZWECXzEEAmRFCAUCZWECXzIEAmRyCQENcGFyc2VJbnRWYWx1ZQEIBQJlYQJfOQQCZEkIBQJlYQNfMTAEAmhKAwMJAQJiYwAGCQAAAgUCZHIFAW4JAAIBCQCsAgICLEdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbi4gU3RhdHVzID0gCQCkAwEFAmRyBgMJAAACBQJoSgUCaEoEAmhECQD8BwQFAmFWAgRidXJuCQDMCAIFAmJZBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmRvBQJiWQUDbmlsAwkAAAIFAmhEBQJoRAQCaEsJAQJlRQMJAQEtAQUCZEQJAQEtAQUCZEUAAAQCZ1YIBQJoSwJfMQQCZXYIBQJoSwJfMgQCZ1cJAQJlSQIFAmVEBQJldgMJAAACBQJnVwUCZ1cJAM4IAgUCZEkFAmdWCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmVXARN1bnN0YWtlQW5kR2V0Tm9MZXNzAwJoeAJoTAJoRwQCaG8DCQECYmMABgkAAAIFAmJwBQFuBAJmUQkAzAgCAwkBASEBBQJobwYJAAIBAiFnZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJlVwhwYXltZW50cwAABgkAAgECGG5vIHBheW1lbnRzIGFyZSBleHBlY3RlZAUDbmlsAwkAAAIFAmZRBQJmUQQCZUQJAQJldwMJALYCAQAACQC2AgEAAAkAtgIBAAADCQAAAgUCZUQFAmVEBAJoeQkA/AcEBQJidwIHdW5zdGFrZQkAzAgCCQDYBAEFAmJxCQDMCAIFAmh4BQNuaWwFA25pbAMJAAACBQJoeQUCaHkEAmVhCQECZGsECQDYBAEIBQJlVw10cmFuc2FjdGlvbklkCQDYBAEFAmJxBQJoeAgFAmVXBmNhbGxlcgQCZEQIBQJlYQJfMQQCZEUIBQJlYQJfMgQCZEkIBQJlYQNfMTAEAmhNCQDMCAIDCQBnAgUCZEQFAmhMBgkAAgEJALkJAgkAzAgCAixhbW91bnQgYXNzZXQgYW1vdW50IHRvIHJlY2VpdmUgaXMgbGVzcyB0aGFuIAkAzAgCCQCkAwEFAmhMBQNuaWwCAAkAzAgCAwkAZwIFAmRFBQJoRwYJAAIBCQC5CQIJAMwIAgIrcHJpY2UgYXNzZXQgYW1vdW50IHRvIHJlY2VpdmUgaXMgbGVzcyB0aGFuIAkAzAgCCQCkAwEFAmhHBQNuaWwCAAUDbmlsAwkAAAIFAmhNBQJoTQQCaEQJAPwHBAUCYVYCBGJ1cm4JAMwIAgUCaHgFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCYnEFAmh4BQNuaWwDCQAAAgUCaEQFAmhEBAJoTgkBAmVFAwkBAS0BBQJkRAkBAS0BBQJkRQAABAJnVggFAmhOAl8xBAJldggFAmhOAl8yBAJnVwkBAmVJAgUCZUQFAmV2AwkAAAIFAmdXBQJnVwkAzggCBQJkSQUCZ1YJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZVcBCGFjdGl2YXRlAgJoTwJoUAMJAQIhPQIJAKUIAQgFAmVXBmNhbGxlcgkApQgBBQJhVgkAAgECEnBlcm1pc3Npb25zIGRlbmllZAkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhZQAFAmhPCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhZgAFAmhQBQNuaWwCB3N1Y2Nlc3MCZVcBCnJlZnJlc2hLTHAABAJoUQkBC3ZhbHVlT3JFbHNlAgkAnwgBBQJhawAABAJoUgMJAGcCCQBlAgUGaGVpZ2h0BQJoUQUCYW4FBHVuaXQJAQJhUwEJALkJAgkAzAgCCQCkAwEFAmFuCQDMCAICLyBibG9ja3MgaGF2ZSBub3QgcGFzc2VkIHNpbmNlIHRoZSBwcmV2aW91cyBjYWxsBQNuaWwCAAMJAAACBQJoUgUCaFIEAmVQCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKgDAQkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzBQJhagIBMAkBAmFVAQILaW52YWxpZCBrTHAEAmhTCQECZUUDAAAAAAAABAJoVAgFAmhTAl8xBAJldggFAmhTAl8yBAJlSAMJAQIhPQIFAmVQBQJldgUCaFQJAQJhUwECEm5vdGhpbmcgdG8gcmVmcmVzaAkAlAoCBQJlSAkApgMBBQJldgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJlVwEcZ2V0UG9vbENvbmZpZ1dyYXBwZXJSRUFET05MWQAJAJQKAgUDbmlsCQECYmUAAmVXARxnZXRBY2NCYWxhbmNlV3JhcHBlclJFQURPTkxZAQJhcgkAlAoCBQNuaWwJAQJiTgEFAmFyAmVXARljYWxjUHJpY2VzV3JhcHBlclJFQURPTkxZAwJjVgJjVwJkYQQCZGoJAQJjWgMFAmNWBQJjVwUCZGEJAJQKAgUDbmlsCQDMCAIJAKYDAQkAkQMCBQJkagAACQDMCAIJAKYDAQkAkQMCBQJkagABCQDMCAIJAKYDAQkAkQMCBQJkagACBQNuaWwCZVcBFHRvWDE4V3JhcHBlclJFQURPTkxZAgFFAUYJAJQKAgUDbmlsCQCmAwEJAQFEAgUBRQUBRgJlVwEWZnJvbVgxOFdyYXBwZXJSRUFET05MWQIBSQFKCQCUCgIFA25pbAkBAUgCCQCnAwEFAUkFAUoCZVcBHmNhbGNQcmljZUJpZ0ludFdyYXBwZXJSRUFET05MWQICYlACYlEJAJQKAgUDbmlsCQCmAwEJAQJiTwIJAKcDAQUCYlAJAKcDAQUCYlECZVcBI2VzdGltYXRlUHV0T3BlcmF0aW9uV3JhcHBlclJFQURPTkxZCQJkbAJkSwJkTAJkTQJkTgJkTwJhYgJkUAJkUQkAlAoCBQNuaWwJAQJkSgkFAmRsBQJkSwUCZEwFAmRNBQJkTgUCZE8FAmFiBQJkUAUCZFECZVcBI2VzdGltYXRlR2V0T3BlcmF0aW9uV3JhcHBlclJFQURPTkxZBAJkbAJkbQJkbgJhYgQCZWEJAQJkawQFAmRsBQJkbQUCZG4JARFAZXh0ck5hdGl2ZSgxMDYyKQEFAmFiCQCUCgIFA25pbAkAnAoKCAUCZWECXzEIBQJlYQJfMggFAmVhAl8zCAUCZWECXzQIBQJlYQJfNQgFAmVhAl82CAUCZWECXzcJAKYDAQgFAmVhAl84CAUCZWECXzkIBQJlYQNfMTACZVcBDXN0YXRzUkVBRE9OTFkABAJkYgkBAmJlAAQCZG8JANkEAQkAkQMCBQJkYgUBcQQCaFUJAJEDAgUCZGIFAXIEAmhWCQCRAwIFAmRiBQFzBAJkVAkAkQMCBQJkYgUBdgQCZFUJAJEDAgUCZGIFAXcEAmRjCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCZGIFAXQEAmRkCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCZGIFAXUEAmhXCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFAmRvCQCsAgIJAKwCAgIGQXNzZXQgCQDYBAEFAmRvAg4gZG9lc24ndCBleGlzdAhxdWFudGl0eQQCaFgJAQJiTgEFAmhVBAJoWQkBAmJOAQUCaFYEAmhaAwkAAAIFAmhXAAAJAMwIAgUBZQkAzAgCBQFlCQDMCAIFAWUFA25pbAkBAmNaAwUCaFgFAmhZBQJoVwQCZHkAAAQCaWEJAQFIAgkAkQMCBQJoWgABBQFiBAJpYgkBAUgCCQCRAwIFAmhaAAIFAWIEAmljCQEFdmFsdWUBCQCaCAIFAmFWCQECYUYBCQClCAEFBHRoaXMJAJQKAgUDbmlsCQC5CQIJAMwIAgIOJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJoWAkAzAgCCQCkAwEFAmhZCQDMCAIJAKQDAQUCaFcJAMwIAgkApAMBBQJkeQkAzAgCCQCkAwEFAmlhCQDMCAIJAKQDAQUCaWIJAMwIAgkApAMBBQJpYwUDbmlsBQFqAmVXASBldmFsdWF0ZVB1dEJ5QW1vdW50QXNzZXRSRUFET05MWQECZEwEAmRiCQECYmUABAJkbwkA2QQBCQCRAwIFAmRiBQFxBAJkUgkAkQMCBQJkYgUBcgQCZHAJANkEAQUCZFIEAmRTCQCRAwIFAmRiBQFzBAJkcQkA2QQBBQJkUwQCZGMJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJkYgUBdAQCZGQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJkYgUBdQQCZHIJAJEDAgUCZGIFAXAEAmhXCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFAmRvCQCsAgIJAKwCAgIGQXNzZXQgCQDYBAEFAmRvAg4gZG9lc24ndCBleGlzdAhxdWFudGl0eQQCaFgJAQJiTgEFAmRSBAJoWQkBAmJOAQUCZFMEAmNYCQEBRAIFAmhYBQJkYwQCY1kJAQFEAgUCaFkFAmRkBAJkeAMJAAACBQJoVwAABQFlCQECYk8CBQJjWQUCY1gEAmRYCQEBRAIFAmRMBQJkYwQCZFkJALwCAwUCZFgFAmR4BQFkBAJkTgkBAUgCBQJkWQUCZGQEAmZjCQECZEoJAgAAoMIeBQJkTAUCZHAFAmROBQJkcQIABgcEAmVpCAUCZmMCXzEEAmlkCAUCZmMCXzMEAmR0CAUCZmMCXzQEAmR2CAUCZmMCXzUEAmRzCAUCZmMCXzYJAJQKAgUDbmlsCQC5CQIJAMwIAgIQJWQlZCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFAmVpCQDMCAIJAKQDAQkBAUgCBQJkeAUBYgkAzAgCCQCkAwEFAmR0CQDMCAIJAKQDAQUCZHYJAMwIAgkApAMBBQJkcwkAzAgCBQJkcgkAzAgCCQCkAwEFAmRMCQDMCAIJAKQDAQUCZE4FA25pbAUBagJlVwEfZXZhbHVhdGVQdXRCeVByaWNlQXNzZXRSRUFET05MWQECZE4EAmRiCQECYmUABAJkbwkA2QQBCQCRAwIFAmRiBQFxBAJkUgkAkQMCBQJkYgUBcgQCZHAJANkEAQUCZFIEAmRTCQCRAwIFAmRiBQFzBAJkcQkA2QQBBQJkUwQCZGMJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJkYgUBdAQCZGQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJkYgUBdQQCZHIJAJEDAgUCZGIFAXAEAmhXCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFAmRvCQCsAgIJAKwCAgIGQXNzZXQgCQDYBAEFAmRvAg4gZG9lc24ndCBleGlzdAhxdWFudGl0eQQCaWUJAQJiTgEFAmRSBAJpZgkBAmJOAQUCZFMEAmlnCQEBRAIFAmllBQJkYwQCaWgJAQFEAgUCaWYFAmRkBAJkeAMJAAACBQJoVwAABQFlCQECYk8CBQJpaAUCaWcEAmRZCQEBRAIFAmROBQJkZAQCZFgJALwCAwUCZFkFAWQFAmR4BAJkTAkBAUgCBQJkWAUCZGMEAmZjCQECZEoJAgAAoMIeBQJkTAUCZHAFAmROBQJkcQIABgcEAmVpCAUCZmMCXzEEAmlkCAUCZmMCXzMEAmR0CAUCZmMCXzQEAmR2CAUCZmMCXzUEAmRzCAUCZmMCXzYJAJQKAgUDbmlsCQC5CQIJAMwIAgIQJWQlZCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFAmVpCQDMCAIJAKQDAQkBAUgCBQJkeAUBYgkAzAgCCQCkAwEFAmR0CQDMCAIJAKQDAQUCZHYJAMwIAgkApAMBBQJkcwkAzAgCBQJkcgkAzAgCCQCkAwEFAmRMCQDMCAIJAKQDAQUCZE4FA25pbAUBagJlVwETZXZhbHVhdGVHZXRSRUFET05MWQICaWkCaWoEAmVhCQECZGsEAgAFAmlpBQJpagUEdGhpcwQCZEQIBQJlYQJfMQQCZEUIBQJlYQJfMgQCZHQIBQJlYQJfNQQCZHYIBQJlYQJfNgQCZHMIBQJlYQJfNwQCZHkIBQJlYQJfOAQCZHIJAQ1wYXJzZUludFZhbHVlAQgFAmVhAl85CQCUCgIFA25pbAkAuQkCCQDMCAICDiVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCZEQJAMwIAgkApAMBBQJkRQkAzAgCCQCkAwEFAmR0CQDMCAIJAKQDAQUCZHYJAMwIAgkApAMBBQJkcwkAzAgCCQCmAwEFAmR5CQDMCAIJAKQDAQUCZHIFA25pbAUBagECaWsBAmlsAAQCaW0EAmJWCQECZ2kAAwkAAQIFAmJWAgpCeXRlVmVjdG9yBAJnbQUCYlYFAmdtAwkAAQIFAmJWAgRVbml0CAUCaWsPc2VuZGVyUHVibGljS2V5CQACAQILTWF0Y2ggZXJyb3IEAmJWBQJpawMJAAECBQJiVgIFT3JkZXIEAmVMBQJiVgQCaW4JAQJiZAAEAmlvCQECZUsBBQJlTAQCYUsIBQJpbwJfMQQCYUwIBQJpbwJfMgQCYU0JAPQDAwgFAmVMCWJvZHlCeXRlcwkAkQMCCAUCZUwGcHJvb2ZzAAAIBQJlTA9zZW5kZXJQdWJsaWNLZXkEAmFOCQD0AwMIBQJlTAlib2R5Qnl0ZXMJAJEDAggFAmVMBnByb29mcwABBQJpbgMDAwUCYUsFAmFNBwUCYU4HBgkBAmFKBAUCYUsFAmFMBQJhTQUCYU4DCQABAgUCYlYCFFNldFNjcmlwdFRyYW5zYWN0aW9uBAJnagUCYlYDCQD0AwMIBQJpawlib2R5Qnl0ZXMJAJEDAggFAmlrBnByb29mcwAABQJpbQYEAmlwCQD2AwEJAQV2YWx1ZQEIBQJnagZzY3JpcHQEAmlxCQDbBAEJAQV2YWx1ZQEJAJ0IAgUCYVYJAQJhSAAEAmlyCQDxBwEFBHRoaXMDCQAAAgUCaXEFAmlwCQECIT0CBQJpcgUCaXAHCQD0AwMIBQJpawlib2R5Qnl0ZXMJAJEDAggFAmlrBnByb29mcwAABQJpbVP5/UQ=", "height": 2519727, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 5aEcWjdinQhuARjR4gHtBnFkar5hUHzbAdVCdNcrKtML Next: 41PtbF3TB8d776iYf2p5zuLApfbUgjgWrRi6RNmzqow7 Diff:
OldNewDifferences
346346 }
347347
348348
349-func ch (ar,bY,bZ,bT,ci) = {
349+func ch (ar,bY,bZ,bT,ci,cj) = {
350350 let ca = at(ar)
351351 if ((ca == ca))
352352 then {
353353 let cb = au(bZ)
354354 if ((cb == cb))
355355 then {
356- let cj = bS(bT)
357- if ((cj == cj))
356+ let ck = bS(bT)
357+ if ((ck == ck))
358358 then {
359- let ck = bh(bZ)
360- let cl = fraction(ci, bY, cj)
361- if ((cl > 0))
359+ let cl = fraction(ci, ca, cb)
360+ let cm = bh(bZ)
361+ let cn = fraction(ci, bY, cl)
362+ let co = fraction(ci, bY, ck)
363+ let cp = max([0, (cn - co)])
364+ if ((co > 0))
362365 then {
363- let cm = invoke(bT, "withdraw", nil, [AttachedPayment(ck, cl)])
364- if ((cm == cm))
366+ let cq = invoke(bT, "withdraw", nil, [AttachedPayment(cm, co)])
367+ if ((cq == cq))
365368 then {
366- let bV = cm
369+ let bV = cq
367370 if ($isInstanceOf(bV, "Int"))
368371 then {
369- let cn = bV
370- let cf = (ca - cn)
371- let cg = (cb - cl)
372-[IntegerEntry(aq(ar), cf), IntegerEntry(as(bZ), cg)]
372+ let cr = bV
373+ let cf = (ca - cr)
374+ let cg = ((cb - co) - cp)
375+[IntegerEntry(aq(ar), cf), IntegerEntry(as(bZ), cg), ScriptTransfer(cj, cp, bh(bZ))]
373376 }
374377 else nil
375378 }
385388 }
386389
387390
388-func co (ar) = invoke(aV, "getPoolLeaseConfigREADONLY", [toString(this), ar], nil)
391+func cs (ar) = invoke(aV, "getPoolLeaseConfigREADONLY", [toString(this), ar], nil)
389392
390393
391-func cp (cq,ar,bZ,cr,bT,ci) = {
394+func ct (cu,ar,bZ,cv,bT,ci,cj) = {
392395 let ca = at(ar)
393396 if ((ca == ca))
394397 then {
395398 let cb = au(bZ)
396399 if ((cb == cb))
397400 then {
398- let cs = {
401+ let cw = {
399402 let bV = bh(ar)
400403 if ($isInstanceOf(bV, "ByteVector"))
401404 then {
402- let ct = bV
403- assetBalance(this, ct)
405+ let cx = bV
406+ assetBalance(this, cx)
404407 }
405408 else if ($isInstanceOf(bV, "Unit"))
406409 then {
407- let cu = bV
410+ let cy = bV
408411 wavesBalance(this).available
409412 }
410413 else throw("Match error")
411414 }
412- if ((cs == cs))
415+ if ((cw == cw))
413416 then {
414- let cv = max([0, ((cs + ca) - cr)])
415- let cw = fraction(cq, cv, 100)
416- let cx = (ca - cw)
417- if ((cx == 0))
417+ let cz = max([0, ((cw + ca) - cv)])
418+ let cA = fraction(cu, cz, 100)
419+ let cB = (ca - cA)
420+ if ((cB == 0))
418421 then nil
419- else if ((0 > cx))
422+ else if ((0 > cB))
420423 then {
421- let cy = -(cx)
422- bX(ar, cy, bZ, bT)
424+ let cC = -(cB)
425+ bX(ar, cC, bZ, bT)
423426 }
424427 else {
425- let cz = cx
426- ch(ar, cz, bZ, bT, ci)
428+ let cD = cB
429+ ch(ar, cD, bZ, bT, ci, cj)
427430 }
428431 }
429432 else throw("Strict value is not equal to itself.")
434437 }
435438
436439
437-func cA (ar) = {
438- let bV = co(ar)
440+func cE (ar) = {
441+ let bV = cs(ar)
439442 if ($isInstanceOf(bV, "(Boolean, Int, Int, String, String, Int, String)"))
440443 then {
441- let cB = bV
442- let cC = cB
443- let cD = cC._1
444- let cE = cC._2
445- let cr = cC._3
446- let cF = cC._4
447- let cG = cC._5
448- let ci = cC._6
449- let cH = cC._7
450- if (cD)
451- then cp(cE, ar, cG, cr, addressFromStringValue(cF), ci)
444+ let cF = bV
445+ let cG = cF
446+ let cH = cG._1
447+ let cI = cG._2
448+ let cv = cG._3
449+ let cJ = cG._4
450+ let cK = cG._5
451+ let ci = cG._6
452+ let cL = cG._7
453+ if (cH)
454+ then ct(cI, ar, cK, cv, addressFromStringValue(cJ), ci, addressFromStringValue(cL))
452455 else nil
453456 }
454457 else aS((("[" + ar) + "] Rebalance error"))
455458 }
456459
457460
458-func cI (cJ,cK,cL,cM) = {
459- let cN = D(cL, cJ)
460- let cO = D(cM, cK)
461- bO(cO, cN)
461+func cM (ar,bY) = {
462+ let bV = cs(ar)
463+ if ($isInstanceOf(bV, "(Boolean, Int, Int, String, String, Int, String)"))
464+ then {
465+ let cF = bV
466+ let cN = cF
467+ let cH = cN._1
468+ let cI = cN._2
469+ let cv = cN._3
470+ let cJ = cN._4
471+ let cK = cN._5
472+ let ci = cN._6
473+ let cL = cN._7
474+ if (cH)
475+ then ch(ar, bY, cK, addressFromStringValue(cJ), ci, addressFromStringValue(cL))
476+ else nil
477+ }
478+ else aS((("[" + ar) + "] withdrawAssetWrapper() error"))
462479 }
463480
464481
465-func cP (cL,cM,cQ) = {
466- let cR = be()
467- let cS = parseIntValue(cR[t])
468- let cT = parseIntValue(cR[u])
469- let cU = cI(cS, cT, cL, cM)
470- let bQ = D(cL, cS)
471- let bP = D(cM, cT)
472- let cV = D(cQ, b)
473- let cW = bO(bQ, cV)
474- let cX = bO(bP, cV)
475-[cU, cW, cX]
482+func cO (ar,bY) = {
483+ let cP = {
484+ let bV = bh(ar)
485+ if ($isInstanceOf(bV, "ByteVector"))
486+ then {
487+ let cx = bV
488+ assetBalance(this, cx)
489+ }
490+ else if ($isInstanceOf(bV, "Unit"))
491+ then {
492+ let cQ = bV
493+ wavesBalance(this).available
494+ }
495+ else throw("Match error")
496+ }
497+ if ((bY > cP))
498+ then {
499+ let cR = (bY - cP)
500+ cM(ar, cR)
501+ }
502+ else nil
476503 }
477504
478505
479-func cY (cL,cM,cQ) = {
480- let cZ = cP(cL, cM, cQ)
481-[H(cZ[0], b), H(cZ[1], b), H(cZ[2], b)]
506+func cS (cT,cU,cV,cW) = {
507+ let cX = D(cV, cT)
508+ let cY = D(cW, cU)
509+ bO(cY, cX)
482510 }
483511
484512
485-func da (db,dc,dd,ab) = {
486- let cR = be()
487- let de = cR[q]
488- let df = cR[r]
489- let dg = cR[s]
490- let cJ = parseIntValue(cR[t])
491- let cK = parseIntValue(cR[u])
492- let dh = cR[p]
493- let di = valueOrErrorMessage(assetInfo(fromBase58String(de)), (("Asset " + de) + " doesn't exist")).quantity
494- if ((de != dc))
513+func cZ (cV,cW,da) = {
514+ let db = be()
515+ let dc = parseIntValue(db[t])
516+ let dd = parseIntValue(db[u])
517+ let de = cS(dc, dd, cV, cW)
518+ let bQ = D(cV, dc)
519+ let bP = D(cW, dd)
520+ let df = D(da, b)
521+ let dg = bO(bQ, df)
522+ let dh = bO(bP, df)
523+[de, dg, dh]
524+ }
525+
526+
527+func di (cV,cW,da) = {
528+ let dj = cZ(cV, cW, da)
529+[H(dj[0], b), H(dj[1], b), H(dj[2], b)]
530+ }
531+
532+
533+func dk (dl,dm,dn,ab) = {
534+ let db = be()
535+ let do = db[q]
536+ let dp = db[r]
537+ let dq = db[s]
538+ let cT = parseIntValue(db[t])
539+ let cU = parseIntValue(db[u])
540+ let dr = db[p]
541+ let ds = valueOrErrorMessage(assetInfo(fromBase58String(do)), (("Asset " + do) + " doesn't exist")).quantity
542+ if ((do != dm))
495543 then throw("Invalid asset passed.")
496544 else {
497- let dj = bN(df)
498- let dk = D(dj, cJ)
499- let dl = bN(dg)
500- let dm = D(dl, cK)
501- let dn = bO(dm, dk)
502- let do = H(dn, b)
503- let dp = D(dd, b)
504- let dq = D(di, b)
505- let dr = fraction(dk, dp, dq)
506- let ds = fraction(dm, dp, dq)
507- let dt = K(dr, cJ, FLOOR)
508- let du = K(ds, cK, FLOOR)
509- let dv = if ((db == ""))
510- then nil
511- else [ScriptTransfer(ab, dt, if ((df == "WAVES"))
512- then unit
513- else fromBase58String(df)), ScriptTransfer(ab, du, if ((dg == "WAVES"))
514- then unit
515- else fromBase58String(dg)), StringEntry(ad(toString(ab), db), bJ(dt, du, dd, do, height, lastBlock.timestamp)), IntegerEntry(W(), do), IntegerEntry(X(height, lastBlock.timestamp), do)]
516- $Tuple10(dt, du, df, dg, dj, dl, di, dn, dh, dv)
545+ let dt = bN(dp)
546+ let du = D(dt, cT)
547+ let dv = bN(dq)
548+ let dw = D(dv, cU)
549+ let dx = bO(dw, du)
550+ let dy = H(dx, b)
551+ let dz = D(dn, b)
552+ let dA = D(ds, b)
553+ let dB = fraction(du, dz, dA)
554+ let dC = fraction(dw, dz, dA)
555+ let dD = K(dB, cT, FLOOR)
556+ let dE = K(dC, cU, FLOOR)
557+ let dF = cO(dp, dD)
558+ if ((dF == dF))
559+ then {
560+ let dG = cO(dq, dE)
561+ if ((dG == dG))
562+ then {
563+ let dH = invoke(this, "rebalance", nil, nil)
564+ if ((dH == dH))
565+ then {
566+ let dI = if ((dl == ""))
567+ then nil
568+ else ((dF ++ dG) ++ [ScriptTransfer(ab, dD, if ((dp == "WAVES"))
569+ then unit
570+ else fromBase58String(dp)), ScriptTransfer(ab, dE, if ((dq == "WAVES"))
571+ then unit
572+ else fromBase58String(dq)), StringEntry(ad(toString(ab), dl), bJ(dD, dE, dn, dy, height, lastBlock.timestamp)), IntegerEntry(W(), dy), IntegerEntry(X(height, lastBlock.timestamp), dy)])
573+ $Tuple10(dD, dE, dp, dq, dt, dv, ds, dx, dr, dI)
574+ }
575+ else throw("Strict value is not equal to itself.")
576+ }
577+ else throw("Strict value is not equal to itself.")
578+ }
579+ else throw("Strict value is not equal to itself.")
517580 }
518581 }
519582
520583
521-func dw (db,dx,dy,dz,dA,dB,ab,dC,dD) = {
522- let cR = be()
523- let de = fromBase58String(cR[q])
524- let dE = cR[r]
525- let dF = cR[s]
526- let dG = cR[v]
527- let dH = cR[w]
528- let cS = parseIntValue(cR[t])
529- let cT = parseIntValue(cR[u])
530- let dh = cR[p]
531- let di = valueOrErrorMessage(assetInfo(de), (("Asset " + toBase58String(de)) + " doesn't exist")).quantity
532- let dI = toBase58String(valueOrElse(dz, fromBase58String("WAVES")))
533- let dJ = toBase58String(valueOrElse(dB, fromBase58String("WAVES")))
534- if (if ((dE != dI))
584+func dJ (dl,dK,dL,dM,dN,dO,ab,dP,dQ) = {
585+ let db = be()
586+ let do = fromBase58String(db[q])
587+ let dR = db[r]
588+ let dS = db[s]
589+ let dT = db[v]
590+ let dU = db[w]
591+ let dc = parseIntValue(db[t])
592+ let dd = parseIntValue(db[u])
593+ let dr = db[p]
594+ let ds = valueOrErrorMessage(assetInfo(do), (("Asset " + toBase58String(do)) + " doesn't exist")).quantity
595+ let dV = toBase58String(valueOrElse(dM, fromBase58String("WAVES")))
596+ let dW = toBase58String(valueOrElse(dO, fromBase58String("WAVES")))
597+ if (if ((dR != dV))
535598 then true
536- else (dF != dJ))
599+ else (dS != dW))
537600 then throw("Invalid amt or price asset passed.")
538601 else {
539- let dj = if (dC)
540- then bN(dE)
541- else (bN(dE) - dy)
542- let dl = if (dC)
543- then bN(dF)
544- else (bN(dF) - dA)
545- let dK = D(dy, cS)
546- let dL = D(dA, cT)
547- let dM = bO(dL, dK)
548- let dk = D(dj, cS)
549- let dm = D(dl, cT)
550- let dN = if ((di == 0))
602+ let dt = if (dP)
603+ then bN(dR)
604+ else (bN(dR) - dL)
605+ let dv = if (dP)
606+ then bN(dS)
607+ else (bN(dS) - dN)
608+ let dX = D(dL, dc)
609+ let dY = D(dN, dd)
610+ let dZ = bO(dY, dX)
611+ let du = D(dt, dc)
612+ let dw = D(dv, dd)
613+ let ea = if ((ds == 0))
551614 then {
552- let dn = e
553- let dO = e
554- let cV = pow((dK * dL), 0, toBigInt(5), 1, 0, DOWN)
555- $Tuple5(H(cV, b), H(dK, cS), H(dL, cT), bO((dm + dL), (dk + dK)), dO)
615+ let dx = e
616+ let eb = e
617+ let df = pow((dX * dY), 0, toBigInt(5), 1, 0, DOWN)
618+ $Tuple5(H(df, b), H(dX, dc), H(dY, dd), bO((dw + dY), (du + dX)), eb)
556619 }
557620 else {
558- let dn = bO(dm, dk)
559- let dO = fraction(R((dn - dM)), d, dn)
560- let dP = D(dx, b)
561- if (if ((dn != e))
562- then (dO > dP)
621+ let dx = bO(dw, du)
622+ let eb = fraction(R((dx - dZ)), d, dx)
623+ let ec = D(dK, b)
624+ if (if ((dx != e))
625+ then (eb > ec)
563626 else false)
564- then throw(((("Price slippage " + toString(dO)) + " exceeded the passed limit of ") + toString(dP)))
627+ then throw(((("Price slippage " + toString(eb)) + " exceeded the passed limit of ") + toString(ec)))
565628 else {
566- let dq = D(di, b)
567- let dQ = fraction(dK, bR(dm, dk, CEILING), d, CEILING)
568- let dR = fraction(dL, d, bR(dm, dk, FLOOR), CEILING)
569- let dS = if ((dQ > dL))
570- then $Tuple2(dR, dL)
571- else $Tuple2(dK, dQ)
572- let dT = dS._1
573- let dU = dS._2
574- let cV = fraction(dq, dU, dm, FLOOR)
575- $Tuple5(K(cV, b, FLOOR), K(dT, cS, CEILING), K(dU, cT, CEILING), dn, dO)
629+ let dA = D(ds, b)
630+ let ed = fraction(dX, bR(dw, du, CEILING), d, CEILING)
631+ let ee = fraction(dY, d, bR(dw, du, FLOOR), CEILING)
632+ let ef = if ((ed > dY))
633+ then $Tuple2(ee, dY)
634+ else $Tuple2(dX, ed)
635+ let eg = ef._1
636+ let eh = ef._2
637+ let df = fraction(dA, eh, dw, FLOOR)
638+ $Tuple5(K(df, b, FLOOR), K(eg, dc, CEILING), K(eh, dd, CEILING), dx, eb)
576639 }
577640 }
578- let dV = dN._1
579- let dW = dN._2
580- let dX = dN._3
581- let do = H(dN._4, b)
582- let dY = H(dN._5, b)
583- if ((0 >= dV))
641+ let ei = ea._1
642+ let ej = ea._2
643+ let ek = ea._3
644+ let dy = H(ea._4, b)
645+ let el = H(ea._5, b)
646+ if ((0 >= ei))
584647 then throw("Invalid calculations. LP calculated is less than zero.")
585648 else {
586- let dZ = if (!(dD))
649+ let em = if (!(dQ))
587650 then 0
588- else dV
589- let ea = (dy - dW)
590- let eb = (dA - dX)
591- let ec = [IntegerEntry(W(), do), IntegerEntry(X(height, lastBlock.timestamp), do), StringEntry(aa(ab, db), by(dW, dX, dZ, do, dx, dY, height, lastBlock.timestamp, ea, eb))]
592- $Tuple13(dV, dZ, do, dj, dl, di, de, dh, ec, ea, eb, dz, dB)
651+ else ei
652+ let en = (dL - ej)
653+ let eo = (dN - ek)
654+ let ep = [IntegerEntry(W(), dy), IntegerEntry(X(height, lastBlock.timestamp), dy), StringEntry(aa(ab, dl), by(ej, ek, em, dy, dK, el, height, lastBlock.timestamp, en, eo))]
655+ $Tuple13(ei, em, dy, dt, dv, ds, do, dr, ep, en, eo, dM, dO)
593656 }
594657 }
595658 }
596659
597660
598-func ed (ee,ef,di) = {
599- let eg = G(ee, toBigInt(bt))
600- let eh = G(ef, toBigInt(bu))
601- let ei = fraction(pow((eg * eh), 0, toBigInt(5), 1, 18, DOWN), g, di)
602- if ((di == f))
661+func eq (er,es,ds) = {
662+ let et = G(er, toBigInt(bt))
663+ let eu = G(es, toBigInt(bu))
664+ let ev = fraction(pow((et * eu), 0, toBigInt(5), 1, 18, DOWN), g, ds)
665+ if ((ds == f))
603666 then f
604- else ei
667+ else ev
605668 }
606669
607670
608-func ej (ek,el,em) = {
609- let en = (toBigInt(bN(bj(br))) - ek)
610- let eo = (toBigInt(bN(bj(bs))) - el)
611- let ep = (toBigInt(value(assetInfo(bq)).quantity) - em)
612- let eq = ed(en, eo, ep)
613- eq
671+func ew (ex,ey,ez) = {
672+ let eA = (toBigInt(bN(bj(br))) - ex)
673+ let eB = (toBigInt(bN(bj(bs))) - ey)
674+ let eC = (toBigInt(value(assetInfo(bq)).quantity) - ez)
675+ let eD = eq(eA, eB, eC)
676+ eD
614677 }
615678
616679
617-func er (es,et,em) = {
618- let en = (bN(bj(br)) + es)
619- let eo = (bN(bj(bs)) + et)
620- let ep = (value(assetInfo(bq)).quantity + em)
621- let ei = ed(toBigInt(en), toBigInt(eo), toBigInt(ep))
622- let eu = [IntegerEntry(ak, height), StringEntry(aj, toString(ei))]
623- $Tuple2(eu, ei)
680+func eE (eF,eG,ez) = {
681+ let eA = (bN(bj(br)) + eF)
682+ let eB = (bN(bj(bs)) + eG)
683+ let eC = (value(assetInfo(bq)).quantity + ez)
684+ let ev = eq(toBigInt(eA), toBigInt(eB), toBigInt(eC))
685+ let eH = [IntegerEntry(ak, height), StringEntry(aj, toString(ev))]
686+ $Tuple2(eH, ev)
624687 }
625688
626689
627-func ev (ew,ei) = if ((ei >= ew))
690+func eI (eJ,ev) = if ((ev >= eJ))
628691 then true
629- else aS(makeString(["updated KLp lower than current KLp", toString(ew), toString(ei)], " "))
692+ else aS(makeString(["updated KLp lower than current KLp", toString(eJ), toString(ev)], " "))
630693
631694
632-func ex (ey) = {
633- let en = bN(bj(br))
634- let eo = bN(bj(bs))
635- let ez = ey.amount
636- let eA = fraction(ey.amount, ey.price, b, FLOOR)
637- let eB = if ((ey.orderType == Buy))
638- then $Tuple2(ez, -(eA))
639- else $Tuple2(-(ez), eA)
640- let es = eB._1
641- let et = eB._2
695+func eK (eL) = {
696+ let eA = bN(bj(br))
697+ let eB = bN(bj(bs))
698+ let eM = eL.amount
699+ let eN = fraction(eL.amount, eL.price, b, FLOOR)
700+ let eO = if ((eL.orderType == Buy))
701+ then $Tuple2(eM, -(eN))
702+ else $Tuple2(-(eM), eN)
703+ let eF = eO._1
704+ let eG = eO._2
642705 if (if (if (bc())
643706 then true
644707 else (bp == m))
645708 then true
646709 else (bp == n))
647710 then throw("Exchange operations disabled")
648- else if (if ((ey.assetPair.amountAsset != br))
711+ else if (if ((eL.assetPair.amountAsset != br))
649712 then true
650- else (ey.assetPair.priceAsset != bs))
713+ else (eL.assetPair.priceAsset != bs))
651714 then throw("Wrong order assets.")
652715 else {
653- let eC = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, aj), "0")), aU("invalid kLp"))
654- let eD = er(es, et, 0)
655- let eE = eD._1
656- let eF = eD._2
657- let eG = (eF >= eC)
658- let eH = makeString(["kLp=", toString(eC), " kLpNew=", toString(eF), " amountAssetBalance=", toString(en), " priceAssetBalance=", toString(eo), " amountAssetBalanceDelta=", toString(es), " priceAssetBalanceDelta=", toString(et), " height=", toString(height)], "")
659- $Tuple2(eG, eH)
716+ let eP = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, aj), "0")), aU("invalid kLp"))
717+ let eQ = eE(eF, eG, 0)
718+ let eR = eQ._1
719+ let eS = eQ._2
720+ let eT = (eS >= eP)
721+ let eU = makeString(["kLp=", toString(eP), " kLpNew=", toString(eS), " amountAssetBalance=", toString(eA), " priceAssetBalance=", toString(eB), " amountAssetBalanceDelta=", toString(eF), " priceAssetBalanceDelta=", toString(eG), " height=", toString(height)], "")
722+ $Tuple2(eT, eU)
660723 }
661724 }
662725
663726
664-func eI (eJ) = if ((size(eJ.payments) != 1))
727+func eV (eW) = if ((size(eW.payments) != 1))
665728 then throw("exactly 1 payment is expected")
666729 else {
667- let eK = value(eJ.payments[0])
668- let dc = value(eK.assetId)
669- let eL = eK.amount
670- let dN = da(toBase58String(eJ.transactionId), toBase58String(dc), eL, eJ.caller)
671- let dt = dN._1
672- let du = dN._2
673- let dh = parseIntValue(dN._9)
674- let dv = dN._10
730+ let eX = value(eW.payments[0])
731+ let dm = value(eX.assetId)
732+ let eY = eX.amount
733+ let ea = dk(toBase58String(eW.transactionId), toBase58String(dm), eY, eW.caller)
734+ let dD = ea._1
735+ let dE = ea._2
736+ let dr = parseIntValue(ea._9)
737+ let dI = ea._10
675738 if (if (bc())
676739 then true
677- else (dh == n))
678- then throw(("Get operation is blocked by admin. Status = " + toString(dh)))
679- else $Tuple5(dt, du, eL, dc, dv)
740+ else (dr == n))
741+ then throw(("Get operation is blocked by admin. Status = " + toString(dr)))
742+ else $Tuple5(dD, dE, eY, dm, dI)
680743 }
681744
682745
683-func eM (eJ,dx,dD) = if ((size(eJ.payments) != 2))
746+func eZ (eW,dK,dQ) = if ((size(eW.payments) != 2))
684747 then throw("exactly 2 payments are expected")
685748 else {
686- let eN = value(eJ.payments[0])
687- let eO = value(eJ.payments[1])
688- let eP = dw(toBase58String(eJ.transactionId), dx, eN.amount, eN.assetId, eO.amount, eO.assetId, toString(eJ.caller), false, dD)
689- let dh = parseIntValue(eP._8)
749+ let fa = value(eW.payments[0])
750+ let fb = value(eW.payments[1])
751+ let fc = dJ(toBase58String(eW.transactionId), dK, fa.amount, fa.assetId, fb.amount, fb.assetId, toString(eW.caller), false, dQ)
752+ let dr = parseIntValue(fc._8)
690753 if (if (if (bc())
691754 then true
692- else (dh == l))
755+ else (dr == l))
693756 then true
694- else (dh == n))
695- then throw(("Put operation is blocked by admin. Status = " + toString(dh)))
696- else eP
757+ else (dr == n))
758+ then throw(("Put operation is blocked by admin. Status = " + toString(dr)))
759+ else fc
697760 }
698761
699762
700-func eQ (bY) = {
701- let eR = invoke(aV, "emit", [bY], nil)
702- if ((eR == eR))
763+func fd (bY) = {
764+ let fe = invoke(aV, "emit", [bY], nil)
765+ if ((fe == fe))
703766 then {
704- let eS = {
705- let bV = eR
767+ let ff = {
768+ let bV = fe
706769 if ($isInstanceOf(bV, "Address"))
707770 then {
708- let eT = bV
709- invoke(eT, "emit", [bY], nil)
771+ let fg = bV
772+ invoke(fg, "emit", [bY], nil)
710773 }
711774 else unit
712775 }
713- if ((eS == eS))
776+ if ((ff == ff))
714777 then bY
715778 else throw("Strict value is not equal to itself.")
716779 }
718781 }
719782
720783
721-func eU (bY,ai) = {
722- let eV = if ((ai == 0))
784+func fh (bY,ai) = {
785+ let fi = if ((ai == 0))
723786 then 0
724787 else fraction(bY, ai, b)
725- $Tuple2((bY - eV), eV)
788+ $Tuple2((bY - fi), fi)
726789 }
727790
728791
729-func eW (eX,eY,ab,ac) = {
730- let eZ = (ac == unit)
731- let fa = bN(bj(br))
732- let fb = bN(bj(bs))
733- let fc = if ((eY == br))
792+func fj (fk,fl,ab,ac) = {
793+ let fm = (ac == unit)
794+ let fn = bN(bj(br))
795+ let fo = bN(bj(bs))
796+ let fp = if ((fl == br))
734797 then true
735- else if ((eY == bs))
798+ else if ((fl == bs))
736799 then false
737800 else aS("invalid asset")
738- let fd = if (eZ)
739- then $Tuple2(fa, fb)
740- else if (fc)
741- then $Tuple2((fa - eX), fb)
742- else $Tuple2(fa, (fb - eX))
743- let fe = fd._1
744- let ff = fd._2
745- let fg = if (fc)
746- then $Tuple2(eX, 0)
747- else $Tuple2(0, eX)
748- let fh = fg._1
749- let fi = fg._2
750- let ez = eU(fh, aX)._1
751- let eA = eU(fi, aX)._1
752- let fj = eU(eX, aX)
753- let fk = fj._1
754- let eV = fj._2
755- let fl = (fe + ez)
756- let fm = (ff + eA)
757- let fn = bO(D(fm, bu), D(fl, bt))
758- let fo = H(fn, b)
759- let fp = if (fc)
760- then fe
761- else ff
762- let fq = toBigInt(fp)
763- let fr = toBigInt(valueOrErrorMessage(assetInfo(bq), (("asset " + toBase58String(bq)) + " doesn't exist")).quantity)
764- let fs = if ((fr > f))
801+ let fq = if (fm)
802+ then $Tuple2(fn, fo)
803+ else if (fp)
804+ then $Tuple2((fn - fk), fo)
805+ else $Tuple2(fn, (fo - fk))
806+ let fr = fq._1
807+ let fs = fq._2
808+ let ft = if (fp)
809+ then $Tuple2(fk, 0)
810+ else $Tuple2(0, fk)
811+ let fu = ft._1
812+ let fv = ft._2
813+ let eM = fh(fu, aX)._1
814+ let eN = fh(fv, aX)._1
815+ let fw = fh(fk, aX)
816+ let fx = fw._1
817+ let fi = fw._2
818+ let fy = (fr + eM)
819+ let fz = (fs + eN)
820+ let fA = bO(D(fz, bu), D(fy, bt))
821+ let fB = H(fA, b)
822+ let fC = if (fp)
823+ then fr
824+ else fs
825+ let fD = toBigInt(fC)
826+ let fE = toBigInt(valueOrErrorMessage(assetInfo(bq), (("asset " + toBase58String(bq)) + " doesn't exist")).quantity)
827+ let fF = if ((fE > f))
765828 then true
766829 else aS("initial deposit requires all coins")
767- if ((fs == fs))
830+ if ((fF == fF))
768831 then {
769- let ft = toBigInt(fk)
770- let fu = max([0, toInt(((fr * (sqrtBigInt((d + ((ft * d) / fq)), 18, 18, DOWN) - d)) / d))])
771- let ec = if (eZ)
832+ let fG = toBigInt(fx)
833+ let fH = max([0, toInt(((fE * (sqrtBigInt((d + ((fG * d) / fD)), 18, 18, DOWN) - d)) / d))])
834+ let ep = if (fm)
772835 then nil
773- else [IntegerEntry(W(), fo), IntegerEntry(X(height, lastBlock.timestamp), fo), StringEntry(aa(toString(value(ab)), toBase58String(value(ac))), by(fh, fi, fu, fo, 0, 0, height, lastBlock.timestamp, 0, 0))]
774- let fv = bO(D(ff, bu), D(fe, bt))
775- let fw = H(fv, b)
776- let fx = {
777- let fy = if (fc)
778- then $Tuple2(fh, fe)
779- else $Tuple2(fi, ff)
780- let bY = fy._1
781- let fz = fy._2
782- let fA = toInt(fraction(fr, toBigInt((bY / 2)), toBigInt(fz)))
783- fraction((fu - fA), b, fA)
836+ else [IntegerEntry(W(), fB), IntegerEntry(X(height, lastBlock.timestamp), fB), StringEntry(aa(toString(value(ab)), toBase58String(value(ac))), by(fu, fv, fH, fB, 0, 0, height, lastBlock.timestamp, 0, 0))]
837+ let fI = bO(D(fs, bu), D(fr, bt))
838+ let fJ = H(fI, b)
839+ let fK = {
840+ let fL = if (fp)
841+ then $Tuple2(fu, fr)
842+ else $Tuple2(fv, fs)
843+ let bY = fL._1
844+ let fM = fL._2
845+ let fN = toInt(fraction(fE, toBigInt((bY / 2)), toBigInt(fM)))
846+ fraction((fH - fN), b, fN)
784847 }
785- $Tuple5(fu, ec, eV, fx, fc)
848+ $Tuple5(fH, ep, fi, fK, fp)
786849 }
787850 else throw("Strict value is not equal to itself.")
788851 }
789852
790853
791-func fB (fC,fk,eY,ab,ac) = {
792- let eZ = (ac == unit)
793- let cR = be()
794- let cS = parseIntValue(cR[t])
795- let cT = parseIntValue(cR[u])
796- let fD = [if ((eY == bq))
854+func fO (fP,fx,fl,ab,ac) = {
855+ let fm = (ac == unit)
856+ let db = be()
857+ let dc = parseIntValue(db[t])
858+ let dd = parseIntValue(db[u])
859+ let fQ = [if ((fl == bq))
797860 then true
798861 else aS("invalid lp asset")]
799- if ((fD == fD))
862+ if ((fQ == fQ))
800863 then {
801- let fE = if ((fC == br))
864+ let fR = if ((fP == br))
802865 then true
803- else if ((fC == bs))
866+ else if ((fP == bs))
804867 then false
805868 else aS("invalid asset")
806- let fF = if (fE)
869+ let fS = if (fR)
807870 then toBigInt(bN(bj(br)))
808871 else toBigInt(bN(bj(bs)))
809- let fG = if (fE)
810- then cS
811- else cT
812- let fH = bN(bj(br))
813- let fI = bN(bj(bs))
814- let fJ = if (fE)
815- then fH
816- else fI
817- let fK = toBigInt(fJ)
818- let fr = toBigInt(valueOrErrorMessage(assetInfo(bq), (("asset " + toBase58String(bq)) + " doesn't exist")).quantity)
819- let fL = toBigInt(fk)
820- let fM = max([0, toInt(((fF * (d - pow((d - ((fL * d) / fr)), 18, h, 0, 18, DOWN))) / d))])
821- let fN = eU(fM, aZ)
822- let fO = fN._1
823- let eV = fN._2
824- let fP = if (fE)
825- then $Tuple4(fO, 0, (fH - fM), fI)
826- else $Tuple4(0, fO, fH, (fI - fM))
827- let fQ = fP._1
828- let fR = fP._2
829- let fS = fP._3
830- let fT = fP._4
831- let fn = bO(D(fT, bu), D(fS, bt))
832- let fo = H(fn, b)
833- let ec = if (eZ)
872+ let fT = if (fR)
873+ then dc
874+ else dd
875+ let fU = bN(bj(br))
876+ let fV = bN(bj(bs))
877+ let fW = if (fR)
878+ then fU
879+ else fV
880+ let fX = toBigInt(fW)
881+ let fE = toBigInt(valueOrErrorMessage(assetInfo(bq), (("asset " + toBase58String(bq)) + " doesn't exist")).quantity)
882+ let fY = toBigInt(fx)
883+ let fZ = max([0, toInt(((fS * (d - pow((d - ((fY * d) / fE)), 18, h, 0, 18, DOWN))) / d))])
884+ let ga = fh(fZ, aZ)
885+ let gb = ga._1
886+ let fi = ga._2
887+ let gc = if (fR)
888+ then $Tuple4(gb, 0, (fU - fZ), fV)
889+ else $Tuple4(0, gb, fU, (fV - fZ))
890+ let gd = gc._1
891+ let ge = gc._2
892+ let gf = gc._3
893+ let gg = gc._4
894+ let fA = bO(D(gg, bu), D(gf, bt))
895+ let fB = H(fA, b)
896+ let ep = if (fm)
834897 then nil
835- else [StringEntry(ad(toString(value(ab)), toBase58String(value(ac))), bJ(fQ, fR, fk, fo, height, lastBlock.timestamp)), IntegerEntry(W(), fo), IntegerEntry(X(height, lastBlock.timestamp), fo)]
836- let fv = bO(D(fI, bu), D(fH, bt))
837- let fw = H(fv, b)
838- let fx = {
839- let fU = (toInt(fraction(fF, fL, fr)) * 2)
840- fraction((fO - fU), b, fU)
898+ else [StringEntry(ad(toString(value(ab)), toBase58String(value(ac))), bJ(gd, ge, fx, fB, height, lastBlock.timestamp)), IntegerEntry(W(), fB), IntegerEntry(X(height, lastBlock.timestamp), fB)]
899+ let fI = bO(D(fV, bu), D(fU, bt))
900+ let fJ = H(fI, b)
901+ let fK = {
902+ let gh = (toInt(fraction(fS, fY, fE)) * 2)
903+ fraction((gb - gh), b, gh)
841904 }
842- $Tuple5(fO, ec, eV, fx, fE)
905+ $Tuple5(gb, ep, fi, fK, fR)
843906 }
844907 else throw("Strict value is not equal to itself.")
845908 }
846909
847910
848-func fV () = {
911+func gi () = {
849912 let bV = getString(U())
850913 if ($isInstanceOf(bV, "String"))
851914 then {
852- let fW = bV
853- fromBase58String(fW)
915+ let gj = bV
916+ fromBase58String(gj)
854917 }
855918 else if ($isInstanceOf(bV, "Unit"))
856919 then unit
858921 }
859922
860923
861-func fX () = {
924+func gk () = {
862925 let bV = getString(V())
863926 if ($isInstanceOf(bV, "String"))
864927 then {
865- let fW = bV
866- fromBase58String(fW)
928+ let gj = bV
929+ fromBase58String(gj)
867930 }
868931 else if ($isInstanceOf(bV, "Unit"))
869932 then unit
871934 }
872935
873936
874-func fY (eJ) = {
875- let bV = fV()
937+func gl (eW) = {
938+ let bV = gi()
876939 if ($isInstanceOf(bV, "ByteVector"))
877940 then {
878- let fZ = bV
879- (eJ.callerPublicKey == fZ)
941+ let gm = bV
942+ (eW.callerPublicKey == gm)
880943 }
881944 else if ($isInstanceOf(bV, "Unit"))
882- then (eJ.caller == this)
945+ then (eW.caller == this)
883946 else throw("Match error")
884947 }
885948
886949
887-func ga (eJ) = {
888- let gb = throw("Permission denied")
889- let bV = fV()
950+func gn (eW) = {
951+ let go = throw("Permission denied")
952+ let bV = gi()
890953 if ($isInstanceOf(bV, "ByteVector"))
891954 then {
892- let fZ = bV
893- if ((eJ.callerPublicKey == fZ))
955+ let gm = bV
956+ if ((eW.callerPublicKey == gm))
894957 then true
895- else gb
958+ else go
896959 }
897960 else if ($isInstanceOf(bV, "Unit"))
898- then if ((eJ.caller == this))
961+ then if ((eW.caller == this))
899962 then true
900- else gb
963+ else go
901964 else throw("Match error")
902965 }
903966
904967
905-@Callable(eJ)
906-func rebalance () = (cA(aO(this, ae())) ++ cA(aO(this, af())))
968+@Callable(eW)
969+func rebalance () = (cE(aO(this, ae())) ++ cE(aO(this, af())))
907970
908971
909972
910-@Callable(eJ)
911-func calculateAmountOutForSwapREADONLY (gc,gd,ge) = {
912- let gf = if ((gd == false))
973+@Callable(eW)
974+func calculateAmountOutForSwapREADONLY (gp,gq,gr) = {
975+ let gs = if ((gq == false))
913976 then {
914- let gg = aO(this, af())
915- let gh = aO(this, ae())
916- $Tuple2(gg, gh)
977+ let gt = aO(this, af())
978+ let gu = aO(this, ae())
979+ $Tuple2(gt, gu)
917980 }
918981 else {
919- let gg = aO(this, ae())
920- let gh = aO(this, af())
921- $Tuple2(gg, gh)
982+ let gt = aO(this, ae())
983+ let gu = aO(this, af())
984+ $Tuple2(gt, gu)
922985 }
923- let gg = gf._1
924- let gh = gf._2
925- let gi = bN(gh)
926- let gj = bN(gg)
927- let gk = fraction(gj, gc, (gi + gc))
928- let gl = (toBigInt(gi) * toBigInt(gj))
929- let gm = (((toBigInt(bN(gh)) + toBigInt(gc)) + toBigInt(ge)) * (toBigInt(bN(gg)) - toBigInt(gk)))
930- let gn = if ((gm >= gl))
986+ let gt = gs._1
987+ let gu = gs._2
988+ let gv = bN(gu)
989+ let gw = bN(gt)
990+ let gx = fraction(gw, gp, (gv + gp))
991+ let gy = (toBigInt(gv) * toBigInt(gw))
992+ let gz = (((toBigInt(bN(gu)) + toBigInt(gp)) + toBigInt(gr)) * (toBigInt(bN(gt)) - toBigInt(gx)))
993+ let gA = if ((gz >= gy))
931994 then true
932995 else throw("new K is fewer error")
933- if ((gn == gn))
934- then $Tuple2(nil, gk)
996+ if ((gA == gA))
997+ then $Tuple2(nil, gx)
935998 else throw("Strict value is not equal to itself.")
936999 }
9371000
9381001
9391002
940-@Callable(eJ)
941-func calculateAmountOutForSwapAndSendTokens (gc,gd,go,gp,ge) = {
942- let gq = {
1003+@Callable(eW)
1004+func calculateAmountOutForSwapAndSendTokens (gp,gq,gB,gC,gr) = {
1005+ let gD = {
9431006 let aY = invoke(aV, "getSwapContractREADONLY", nil, nil)
9441007 if ($isInstanceOf(aY, "String"))
9451008 then aY
9461009 else throw(($getType(aY) + " couldn't be cast to String"))
9471010 }
948- let fD = [if ((value(eJ.payments[0]).amount >= gc))
1011+ let fQ = [if ((value(eW.payments[0]).amount >= gp))
9491012 then true
950- else aS("Wrong amount"), if ((eJ.caller == addressFromStringValue(gq)))
1013+ else aS("Wrong amount"), if ((eW.caller == addressFromStringValue(gD)))
9511014 then true
9521015 else aS("Permission denied")]
953- if ((fD == fD))
1016+ if ((fQ == fQ))
9541017 then {
955- let eK = value(eJ.payments[0])
956- let gh = bj(eK.assetId)
957- let gg = if ((gd == false))
1018+ let eX = value(eW.payments[0])
1019+ let gu = bj(eX.assetId)
1020+ let gt = if ((gq == false))
9581021 then aO(this, af())
9591022 else aO(this, ae())
960- let gi = (bN(gh) - value(eJ.payments[0]).amount)
961- let gj = bN(gg)
962- let gk = fraction(gj, gc, (gi + gc))
963- let gl = (toBigInt(gi) * toBigInt(gj))
964- let gm = ((toBigInt(bN(gh)) + toBigInt(ge)) * (toBigInt(bN(gg)) - toBigInt(gk)))
965- let gn = if ((gm >= gl))
1023+ let gv = (bN(gu) - value(eW.payments[0]).amount)
1024+ let gw = bN(gt)
1025+ let gx = fraction(gw, gp, (gv + gp))
1026+ let gy = (toBigInt(gv) * toBigInt(gw))
1027+ let gz = ((toBigInt(bN(gu)) + toBigInt(gr)) * (toBigInt(bN(gt)) - toBigInt(gx)))
1028+ let gA = if ((gz >= gy))
9661029 then true
9671030 else throw("new K is fewer error")
968- if ((gn == gn))
1031+ if ((gA == gA))
9691032 then {
970- let gr = if ((gk >= go))
1033+ let gE = if ((gx >= gB))
9711034 then true
9721035 else throw("Exchange result is fewer coins than expected")
973- if ((gr == gr))
1036+ if ((gE == gE))
9741037 then {
975- let gs = {
976- let bV = co(gg)
1038+ let gF = {
1039+ let bV = cs(gt)
9771040 if ($isInstanceOf(bV, "(Boolean, Int, Int, String, String, Int, String)"))
9781041 then {
979- let cB = bV
980- cB
1042+ let cF = bV
1043+ cF
9811044 }
9821045 else throw("error lease config")
9831046 }
984- let gt = gs
985- let cD = gt._1
986- let cE = gt._2
987- let cr = gt._3
988- let cF = gt._4
989- let cG = gt._5
990- let ci = gt._6
991- let cH = gt._7
992- let gu = assetBalance(this, fromBase58String(gg))
993- let gv = if (if ((gg == "WAVES"))
994- then (gk > gu)
995- else false)
1047+ let gG = cO(gt, gx)
1048+ if ((gG == gG))
9961049 then {
997- let gw = (gk - gu)
998- let gx = (at(gg) / au(ba()))
999- let gy = wavesBalance(this).available
1000- let gz = invoke(this, "withdraw", [gg, gw, ba(), bb(), ci], nil)
1001- if ((gz == gz))
1002- then {
1003- let gA = wavesBalance(this).available
1004- let gB = (gA - gy)
1005- (gB - gw)
1006- }
1050+ let dH = invoke(this, "rebalance", nil, nil)
1051+ if ((dH == dH))
1052+ then $Tuple2((gG ++ [ScriptTransfer(addressFromStringValue(gC), gx, bh(gt))]), gx)
10071053 else throw("Strict value is not equal to itself.")
10081054 }
1009- else 0
1010- let gC = invoke(this, "rebalance", nil, nil)
1011- if ((gC == gC))
1012- then $Tuple2([ScriptTransfer(addressFromStringValue(cH), gv, unit), ScriptTransfer(addressFromStringValue(gp), gk, bh(gg))], gk)
10131055 else throw("Strict value is not equal to itself.")
10141056 }
10151057 else throw("Strict value is not equal to itself.")
10211063
10221064
10231065
1024-@Callable(eJ)
1025-func setManager (gD) = {
1026- let gE = ga(eJ)
1027- if ((gE == gE))
1066+@Callable(eW)
1067+func setManager (gH) = {
1068+ let gI = gn(eW)
1069+ if ((gI == gI))
10281070 then {
1029- let gF = fromBase58String(gD)
1030- if ((gF == gF))
1031- then [StringEntry(V(), gD)]
1071+ let gJ = fromBase58String(gH)
1072+ if ((gJ == gJ))
1073+ then [StringEntry(V(), gH)]
10321074 else throw("Strict value is not equal to itself.")
10331075 }
10341076 else throw("Strict value is not equal to itself.")
10361078
10371079
10381080
1039-@Callable(eJ)
1081+@Callable(eW)
10401082 func confirmManager () = {
1041- let gG = fX()
1042- let gH = if (isDefined(gG))
1083+ let gK = gk()
1084+ let gL = if (isDefined(gK))
10431085 then true
10441086 else throw("No pending manager")
1045- if ((gH == gH))
1087+ if ((gL == gL))
10461088 then {
1047- let gI = if ((eJ.callerPublicKey == value(gG)))
1089+ let gM = if ((eW.callerPublicKey == value(gK)))
10481090 then true
10491091 else throw("You are not pending manager")
1050- if ((gI == gI))
1051- then [StringEntry(U(), toBase58String(value(gG))), DeleteEntry(V())]
1092+ if ((gM == gM))
1093+ then [StringEntry(U(), toBase58String(value(gK))), DeleteEntry(V())]
10521094 else throw("Strict value is not equal to itself.")
10531095 }
10541096 else throw("Strict value is not equal to itself.")
10561098
10571099
10581100
1059-@Callable(eJ)
1060-func put (dx,gJ) = if ((0 > dx))
1101+@Callable(eW)
1102+func put (dK,gN) = if ((0 > dK))
10611103 then throw("Invalid slippageTolerance passed")
10621104 else {
1063- let eP = eM(eJ, dx, true)
1064- let dZ = eP._2
1065- let de = eP._7
1066- let dv = eP._9
1067- let ea = eP._10
1068- let eb = eP._11
1069- let gK = eP._12
1070- let gL = eP._13
1071- let eN = toBigInt(value(eJ.payments[0]).amount)
1072- let eO = toBigInt(value(eJ.payments[1]).amount)
1073- let eq = ej(eN, eO, toBigInt(0))
1074- if ((eq == eq))
1105+ let fc = eZ(eW, dK, true)
1106+ let em = fc._2
1107+ let do = fc._7
1108+ let dI = fc._9
1109+ let en = fc._10
1110+ let eo = fc._11
1111+ let gO = fc._12
1112+ let gP = fc._13
1113+ let fa = toBigInt(value(eW.payments[0]).amount)
1114+ let fb = toBigInt(value(eW.payments[1]).amount)
1115+ let eD = ew(fa, fb, toBigInt(0))
1116+ if ((eD == eD))
10751117 then {
1076- let eR = invoke(aV, "emit", [dZ], nil)
1077- if ((eR == eR))
1118+ let fe = invoke(aV, "emit", [em], nil)
1119+ if ((fe == fe))
10781120 then {
1079- let eS = {
1080- let bV = eR
1121+ let ff = {
1122+ let bV = fe
10811123 if ($isInstanceOf(bV, "Address"))
10821124 then {
1083- let eT = bV
1084- invoke(eT, "emit", [dZ], nil)
1125+ let fg = bV
1126+ invoke(fg, "emit", [em], nil)
10851127 }
10861128 else unit
10871129 }
1088- if ((eS == eS))
1130+ if ((ff == ff))
10891131 then {
1090- let gM = if ((ea > 0))
1091- then invoke(bx, "put", nil, [AttachedPayment(gK, ea)])
1132+ let gQ = if ((en > 0))
1133+ then invoke(bx, "put", nil, [AttachedPayment(gO, en)])
10921134 else nil
1093- if ((gM == gM))
1135+ if ((gQ == gQ))
10941136 then {
1095- let gN = if ((eb > 0))
1096- then invoke(bx, "put", nil, [AttachedPayment(gL, eb)])
1137+ let gR = if ((eo > 0))
1138+ then invoke(bx, "put", nil, [AttachedPayment(gP, eo)])
10971139 else nil
1098- if ((gN == gN))
1140+ if ((gR == gR))
10991141 then {
1100- let gO = if (gJ)
1142+ let gS = if (gN)
11011143 then {
1102- let gP = invoke(bw, "stake", nil, [AttachedPayment(de, dZ)])
1103- if ((gP == gP))
1144+ let gT = invoke(bw, "stake", nil, [AttachedPayment(do, em)])
1145+ if ((gT == gT))
11041146 then nil
11051147 else throw("Strict value is not equal to itself.")
11061148 }
1107- else [ScriptTransfer(eJ.caller, dZ, de)]
1108- let gQ = er(0, 0, 0)
1109- if ((gQ == gQ))
1149+ else [ScriptTransfer(eW.caller, em, do)]
1150+ let gU = eE(0, 0, 0)
1151+ if ((gU == gU))
11101152 then {
1111- let ei = gQ._2
1112- let gR = gQ._1
1113- let gS = ev(eq, ei)
1114- if ((gS == gS))
1115- then ((dv ++ gO) ++ gR)
1153+ let ev = gU._2
1154+ let gV = gU._1
1155+ let gW = eI(eD, ev)
1156+ if ((gW == gW))
1157+ then ((dI ++ gS) ++ gV)
11161158 else throw("Strict value is not equal to itself.")
11171159 }
11181160 else throw("Strict value is not equal to itself.")
11301172
11311173
11321174
1133-@Callable(eJ)
1134-func putForFree (gT) = if ((0 > gT))
1175+@Callable(eW)
1176+func putForFree (gX) = if ((0 > gX))
11351177 then throw("Invalid value passed")
11361178 else {
1137- let eP = eM(eJ, gT, false)
1138- let dv = eP._9
1139- let eN = toBigInt(value(eJ.payments[0]).amount)
1140- let eO = toBigInt(value(eJ.payments[1]).amount)
1141- let eq = ej(eN, eO, toBigInt(0))
1142- if ((eq == eq))
1179+ let fc = eZ(eW, gX, false)
1180+ let dI = fc._9
1181+ let fa = toBigInt(value(eW.payments[0]).amount)
1182+ let fb = toBigInt(value(eW.payments[1]).amount)
1183+ let eD = ew(fa, fb, toBigInt(0))
1184+ if ((eD == eD))
11431185 then {
1144- let gU = er(0, 0, 0)
1145- let gR = gU._1
1146- let ei = gU._2
1147- let gS = ev(eq, ei)
1148- if ((gS == gS))
1149- then (dv ++ gR)
1186+ let gY = eE(0, 0, 0)
1187+ let gV = gY._1
1188+ let ev = gY._2
1189+ let gW = eI(eD, ev)
1190+ if ((gW == gW))
1191+ then (dI ++ gV)
11501192 else throw("Strict value is not equal to itself.")
11511193 }
11521194 else throw("Strict value is not equal to itself.")
11541196
11551197
11561198
1157-@Callable(eJ)
1158-func putOneTkn (gV,gW) = {
1159- let gX = {
1199+@Callable(eW)
1200+func putOneTkn (gZ,ha) = {
1201+ let hb = {
11601202 let aY = invoke(aV, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
11611203 if ($isInstanceOf(aY, "Boolean"))
11621204 then aY
11631205 else throw(($getType(aY) + " couldn't be cast to Boolean"))
11641206 }
1165- let gY = if (if (if (bc())
1207+ let hc = if (if (if (bc())
11661208 then true
11671209 else (bp == l))
11681210 then true
11691211 else (bp == n))
11701212 then true
1171- else gX
1172- let fD = [if (if (!(gY))
1213+ else hb
1214+ let fQ = [if (if (!(hc))
11731215 then true
1174- else fY(eJ))
1216+ else gl(eW))
11751217 then true
1176- else aS("put operation is blocked by admin"), if ((size(eJ.payments) == 1))
1218+ else aS("put operation is blocked by admin"), if ((size(eW.payments) == 1))
11771219 then true
11781220 else aS("exactly 1 payment are expected")]
1179- if ((fD == fD))
1221+ if ((fQ == fQ))
11801222 then {
1181- let gZ = eJ.payments[0]
1182- let eY = gZ.assetId
1183- let eX = gZ.amount
1184- let eq = if ((eY == br))
1185- then ej(toBigInt(eX), toBigInt(0), toBigInt(0))
1186- else if ((eY == bs))
1187- then ej(toBigInt(0), toBigInt(eX), toBigInt(0))
1223+ let hd = eW.payments[0]
1224+ let fl = hd.assetId
1225+ let fk = hd.amount
1226+ let eD = if ((fl == br))
1227+ then ew(toBigInt(fk), toBigInt(0), toBigInt(0))
1228+ else if ((fl == bs))
1229+ then ew(toBigInt(0), toBigInt(fk), toBigInt(0))
11881230 else aS("payment asset is not supported")
1189- if ((eq == eq))
1231+ if ((eD == eD))
11901232 then {
1191- let ab = eJ.caller
1192- let ac = eJ.transactionId
1193- let ha = eW(eX, eY, ab, ac)
1194- if ((ha == ha))
1233+ let ab = eW.caller
1234+ let ac = eW.transactionId
1235+ let he = fj(fk, fl, ab, ac)
1236+ if ((he == he))
11951237 then {
1196- let fc = ha._5
1197- let hb = ha._4
1198- let eV = ha._3
1199- let ec = ha._2
1200- let hc = ha._1
1201- let hd = if (if ((gV > 0))
1202- then (gV > hc)
1238+ let fp = he._5
1239+ let hf = he._4
1240+ let fi = he._3
1241+ let ep = he._2
1242+ let hg = he._1
1243+ let hh = if (if ((gZ > 0))
1244+ then (gZ > hg)
12031245 else false)
1204- then aS(makeString(["amount to receive is less than ", toString(gV)], ""))
1205- else hc
1206- let eR = eQ(hd)
1207- if ((eR == eR))
1246+ then aS(makeString(["amount to receive is less than ", toString(gZ)], ""))
1247+ else hg
1248+ let fe = fd(hh)
1249+ if ((fe == fe))
12081250 then {
1209- let gO = if (gW)
1251+ let gS = if (ha)
12101252 then {
1211- let he = invoke(bw, "stake", nil, [AttachedPayment(bq, hd)])
1212- if ((he == he))
1253+ let hi = invoke(bw, "stake", nil, [AttachedPayment(bq, hh)])
1254+ if ((hi == hi))
12131255 then nil
12141256 else throw("Strict value is not equal to itself.")
12151257 }
1216- else [ScriptTransfer(eJ.caller, hd, bq)]
1217- let hf = if ((eV > 0))
1218- then [ScriptTransfer(aW, eV, eY)]
1258+ else [ScriptTransfer(eW.caller, hh, bq)]
1259+ let hj = if ((fi > 0))
1260+ then [ScriptTransfer(aW, fi, fl)]
12191261 else nil
1220- let hg = if ((this == aW))
1262+ let hk = if ((this == aW))
12211263 then $Tuple2(0, 0)
1222- else if (fc)
1223- then $Tuple2(-(eV), 0)
1224- else $Tuple2(0, -(eV))
1225- let es = hg._1
1226- let et = hg._2
1227- let hh = er(es, et, 0)
1228- let gR = hh._1
1229- let ei = hh._2
1230- let eC = value(getString(aj))
1231- let gS = ev(eq, ei)
1232- if ((gS == gS))
1264+ else if (fp)
1265+ then $Tuple2(-(fi), 0)
1266+ else $Tuple2(0, -(fi))
1267+ let eF = hk._1
1268+ let eG = hk._2
1269+ let hl = eE(eF, eG, 0)
1270+ let gV = hl._1
1271+ let ev = hl._2
1272+ let eP = value(getString(aj))
1273+ let gW = eI(eD, ev)
1274+ if ((gW == gW))
12331275 then {
1234- let gC = invoke(this, "rebalance", nil, nil)
1235- if ((gC == gC))
1236- then $Tuple2((((ec ++ gO) ++ hf) ++ gR), hd)
1276+ let dH = invoke(this, "rebalance", nil, nil)
1277+ if ((dH == dH))
1278+ then $Tuple2((((ep ++ gS) ++ hj) ++ gV), hh)
12371279 else throw("Strict value is not equal to itself.")
12381280 }
12391281 else throw("Strict value is not equal to itself.")
12491291
12501292
12511293
1252-@Callable(eJ)
1253-func putOneTknREADONLY (eY,eX) = {
1254- let hi = eW(eX, bh(eY), unit, unit)
1255- let hc = hi._1
1256- let ec = hi._2
1257- let eV = hi._3
1258- let hb = hi._4
1259- let fc = hi._5
1260- $Tuple2(nil, $Tuple3(hc, eV, hb))
1294+@Callable(eW)
1295+func putOneTknREADONLY (fl,fk) = {
1296+ let hm = fj(fk, bh(fl), unit, unit)
1297+ let hg = hm._1
1298+ let ep = hm._2
1299+ let fi = hm._3
1300+ let hf = hm._4
1301+ let fp = hm._5
1302+ $Tuple2(nil, $Tuple3(hg, fi, hf))
12611303 }
12621304
12631305
12641306
1265-@Callable(eJ)
1266-func getOneTkn (hj,gV) = {
1267- let gX = {
1307+@Callable(eW)
1308+func getOneTkn (hn,gZ) = {
1309+ let hb = {
12681310 let aY = invoke(aV, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
12691311 if ($isInstanceOf(aY, "Boolean"))
12701312 then aY
12711313 else throw(($getType(aY) + " couldn't be cast to Boolean"))
12721314 }
1273- let hk = if (if (bc())
1315+ let ho = if (if (bc())
12741316 then true
12751317 else (bp == n))
12761318 then true
1277- else gX
1278- let fD = [if (if (!(hk))
1319+ else hb
1320+ let fQ = [if (if (!(ho))
12791321 then true
1280- else fY(eJ))
1322+ else gl(eW))
12811323 then true
1282- else aS("get operation is blocked by admin"), if ((size(eJ.payments) == 1))
1324+ else aS("get operation is blocked by admin"), if ((size(eW.payments) == 1))
12831325 then true
12841326 else aS("exactly 1 payment are expected")]
1285- if ((fD == fD))
1327+ if ((fQ == fQ))
12861328 then {
1287- let fC = bh(hj)
1288- let gZ = eJ.payments[0]
1289- let eY = gZ.assetId
1290- let fk = gZ.amount
1291- let eq = ej(toBigInt(0), toBigInt(0), toBigInt(0))
1292- if ((eq == eq))
1329+ let fP = bh(hn)
1330+ let hd = eW.payments[0]
1331+ let fl = hd.assetId
1332+ let fx = hd.amount
1333+ let eD = ew(toBigInt(0), toBigInt(0), toBigInt(0))
1334+ if ((eD == eD))
12931335 then {
1294- let ab = eJ.caller
1295- let ac = eJ.transactionId
1296- let hl = fB(fC, fk, eY, ab, ac)
1297- if ((hl == hl))
1336+ let ab = eW.caller
1337+ let ac = eW.transactionId
1338+ let hp = fO(fP, fx, fl, ab, ac)
1339+ if ((hp == hp))
12981340 then {
1299- let fE = hl._5
1300- let hb = hl._4
1301- let eV = hl._3
1302- let ec = hl._2
1303- let hm = hl._1
1304- let bY = if (if ((gV > 0))
1305- then (gV > hm)
1341+ let fR = hp._5
1342+ let hf = hp._4
1343+ let fi = hp._3
1344+ let ep = hp._2
1345+ let hq = hp._1
1346+ let bY = if (if ((gZ > 0))
1347+ then (gZ > hq)
13061348 else false)
1307- then aS(makeString(["amount to receive is less than ", toString(gV)], ""))
1308- else hm
1309- let gs = {
1310- let bV = co(hj)
1349+ then aS(makeString(["amount to receive is less than ", toString(gZ)], ""))
1350+ else hq
1351+ let gF = {
1352+ let bV = cs(hn)
13111353 if ($isInstanceOf(bV, "(Boolean, Int, Int, String, String, Int, String)"))
13121354 then {
1313- let cB = bV
1314- cB
1355+ let cF = bV
1356+ cF
13151357 }
13161358 else throw("error lease config")
13171359 }
1318- let hn = gs
1319- let cD = hn._1
1320- let cE = hn._2
1321- let cr = hn._3
1322- let cF = hn._4
1323- let cG = hn._5
1324- let ci = hn._6
1325- let cH = hn._7
1326- let gu = assetBalance(this, fromBase58String(hj))
1327- let gv = if (if ((hj == "WAVES"))
1328- then (bY > gu)
1329- else false)
1360+ let hr = invoke(aV, "burn", [fx], [AttachedPayment(fl, fx)])
1361+ if ((hr == hr))
13301362 then {
1331- let gw = (bY - gu)
1332- let gx = (at(hj) / au(ba()))
1333- let gy = wavesBalance(this).available
1334- let gz = invoke(this, "withdraw", [hj, gw, ba(), bb(), ci], nil)
1335- if ((gz == gz))
1363+ let gG = cO(hn, bY)
1364+ if ((gG == gG))
13361365 then {
1337- let gA = wavesBalance(this).available
1338- let gB = (gA - gy)
1339- (gB - gw)
1340- }
1341- else throw("Strict value is not equal to itself.")
1342- }
1343- else 0
1344- let ho = [ScriptTransfer(addressFromStringValue(cH), gv, unit)]
1345- let hp = invoke(aV, "burn", [fk], [AttachedPayment(eY, fk)])
1346- if ((hp == hp))
1347- then {
1348- let hq = [ScriptTransfer(ab, bY, fC)]
1349- let hf = if ((eV > 0))
1350- then [ScriptTransfer(aW, eV, fC)]
1351- else nil
1352- let hr = {
1353- let hs = if ((this == aW))
1354- then 0
1355- else eV
1356- if (fE)
1357- then $Tuple2(-((bY + hs)), 0)
1358- else $Tuple2(0, -((bY + hs)))
1359- }
1360- let es = hr._1
1361- let et = hr._2
1362- let ht = er(es, et, 0)
1363- let gR = ht._1
1364- let ei = ht._2
1365- let gS = ev(eq, ei)
1366- if ((gS == gS))
1367- then {
1368- let gC = invoke(this, "rebalance", nil, nil)
1369- if ((gC == gC))
1370- then $Tuple2(((((ec ++ hq) ++ ho) ++ hf) ++ gR), bY)
1366+ let hs = [ScriptTransfer(ab, bY, fP)]
1367+ let hj = if ((fi > 0))
1368+ then [ScriptTransfer(aW, fi, fP)]
1369+ else nil
1370+ let ht = {
1371+ let hu = if ((this == aW))
1372+ then 0
1373+ else fi
1374+ if (fR)
1375+ then $Tuple2(-((bY + hu)), 0)
1376+ else $Tuple2(0, -((bY + hu)))
1377+ }
1378+ let eF = ht._1
1379+ let eG = ht._2
1380+ let hv = eE(eF, eG, 0)
1381+ let gV = hv._1
1382+ let ev = hv._2
1383+ let gW = eI(eD, ev)
1384+ if ((gW == gW))
1385+ then {
1386+ let dH = invoke(this, "rebalance", nil, nil)
1387+ if ((dH == dH))
1388+ then $Tuple2((((ep ++ hs) ++ hj) ++ gV), bY)
1389+ else throw("Strict value is not equal to itself.")
1390+ }
13711391 else throw("Strict value is not equal to itself.")
13721392 }
13731393 else throw("Strict value is not equal to itself.")
13831403
13841404
13851405
1386-@Callable(eJ)
1387-func getOneTknREADONLY (fC,fk) = {
1388- let hu = fB(bh(fC), fk, bq, unit, unit)
1389- let hm = hu._1
1390- let ec = hu._2
1391- let eV = hu._3
1392- let hb = hu._4
1393- let fE = hu._5
1394- $Tuple2(nil, $Tuple3(hm, eV, hb))
1406+@Callable(eW)
1407+func getOneTknREADONLY (fP,fx) = {
1408+ let hw = fO(bh(fP), fx, bq, unit, unit)
1409+ let hq = hw._1
1410+ let ep = hw._2
1411+ let fi = hw._3
1412+ let hf = hw._4
1413+ let fR = hw._5
1414+ $Tuple2(nil, $Tuple3(hq, fi, hf))
13951415 }
13961416
13971417
13981418
1399-@Callable(eJ)
1400-func unstakeAndGetOneTkn (hv,hj,gV) = {
1401- let gX = {
1419+@Callable(eW)
1420+func unstakeAndGetOneTkn (hx,hn,gZ) = {
1421+ let hb = {
14021422 let aY = invoke(aV, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
14031423 if ($isInstanceOf(aY, "Boolean"))
14041424 then aY
14051425 else throw(($getType(aY) + " couldn't be cast to Boolean"))
14061426 }
1407- let hk = if (if (bc())
1427+ let ho = if (if (bc())
14081428 then true
14091429 else (bp == n))
14101430 then true
1411- else gX
1412- let fD = [if (if (!(hk))
1431+ else hb
1432+ let fQ = [if (if (!(ho))
14131433 then true
1414- else fY(eJ))
1434+ else gl(eW))
14151435 then true
1416- else aS("get operation is blocked by admin"), if ((size(eJ.payments) == 0))
1436+ else aS("get operation is blocked by admin"), if ((size(eW.payments) == 0))
14171437 then true
14181438 else aS("no payments are expected")]
1419- if ((fD == fD))
1439+ if ((fQ == fQ))
14201440 then {
1421- let fC = bh(hj)
1422- let ab = eJ.caller
1423- let ac = eJ.transactionId
1424- let eq = ej(toBigInt(0), toBigInt(0), toBigInt(0))
1425- if ((eq == eq))
1441+ let fP = bh(hn)
1442+ let ab = eW.caller
1443+ let ac = eW.transactionId
1444+ let eD = ew(toBigInt(0), toBigInt(0), toBigInt(0))
1445+ if ((eD == eD))
14261446 then {
1427- let hw = invoke(bw, "unstake", [toBase58String(bq), hv], nil)
1428- if ((hw == hw))
1447+ let hy = invoke(bw, "unstake", [toBase58String(bq), hx], nil)
1448+ if ((hy == hy))
14291449 then {
1430- let hx = fB(fC, hv, bq, ab, ac)
1431- if ((hx == hx))
1450+ let hz = fO(fP, hx, bq, ab, ac)
1451+ if ((hz == hz))
14321452 then {
1433- let fE = hx._5
1434- let hb = hx._4
1435- let eV = hx._3
1436- let ec = hx._2
1437- let hm = hx._1
1438- let bY = if (if ((gV > 0))
1439- then (gV > hm)
1453+ let fR = hz._5
1454+ let hf = hz._4
1455+ let fi = hz._3
1456+ let ep = hz._2
1457+ let hq = hz._1
1458+ let bY = if (if ((gZ > 0))
1459+ then (gZ > hq)
14401460 else false)
1441- then aS(makeString(["amount to receive is less than ", toString(gV)], ""))
1442- else hm
1443- let hp = invoke(aV, "burn", [hv], [AttachedPayment(bq, hv)])
1444- if ((hp == hp))
1461+ then aS(makeString(["amount to receive is less than ", toString(gZ)], ""))
1462+ else hq
1463+ let hr = invoke(aV, "burn", [hx], [AttachedPayment(bq, hx)])
1464+ if ((hr == hr))
14451465 then {
1446- let hq = [ScriptTransfer(eJ.caller, bY, fC)]
1447- let hf = if ((eV > 0))
1448- then [ScriptTransfer(aW, eV, fC)]
1449- else nil
1450- let hy = {
1451- let hs = if ((this == aW))
1452- then 0
1453- else eV
1454- if (fE)
1455- then $Tuple2(-((bY + hs)), 0)
1456- else $Tuple2(0, -((bY + hs)))
1457- }
1458- let es = hy._1
1459- let et = hy._2
1460- let hz = er(es, et, 0)
1461- let gR = hz._1
1462- let ei = hz._2
1463- let gS = ev(eq, ei)
1464- if ((gS == gS))
1465- then $Tuple2((((ec ++ hq) ++ hf) ++ gR), bY)
1466+ let gG = cO(hn, bY)
1467+ if ((gG == gG))
1468+ then {
1469+ let hs = [ScriptTransfer(eW.caller, bY, fP)]
1470+ let hj = if ((fi > 0))
1471+ then [ScriptTransfer(aW, fi, fP)]
1472+ else nil
1473+ let hA = {
1474+ let hu = if ((this == aW))
1475+ then 0
1476+ else fi
1477+ if (fR)
1478+ then $Tuple2(-((bY + hu)), 0)
1479+ else $Tuple2(0, -((bY + hu)))
1480+ }
1481+ let eF = hA._1
1482+ let eG = hA._2
1483+ let hB = eE(eF, eG, 0)
1484+ let gV = hB._1
1485+ let ev = hB._2
1486+ let gW = eI(eD, ev)
1487+ if ((gW == gW))
1488+ then {
1489+ let dH = invoke(this, "rebalance", nil, nil)
1490+ if ((dH == dH))
1491+ then $Tuple2(((((ep ++ gG) ++ hs) ++ hj) ++ gV), bY)
1492+ else throw("Strict value is not equal to itself.")
1493+ }
1494+ else throw("Strict value is not equal to itself.")
1495+ }
14661496 else throw("Strict value is not equal to itself.")
14671497 }
14681498 else throw("Strict value is not equal to itself.")
14781508
14791509
14801510
1481-@Callable(eJ)
1511+@Callable(eW)
14821512 func get () = {
1483- let dN = eI(eJ)
1484- let hA = dN._1
1485- let du = dN._2
1486- let eL = dN._3
1487- let dc = dN._4
1488- let dv = dN._5
1489- let eq = ej(toBigInt(0), toBigInt(0), toBigInt(0))
1490- if ((eq == eq))
1513+ let ea = eV(eW)
1514+ let hC = ea._1
1515+ let dE = ea._2
1516+ let eY = ea._3
1517+ let dm = ea._4
1518+ let dI = ea._5
1519+ let eD = ew(toBigInt(0), toBigInt(0), toBigInt(0))
1520+ if ((eD == eD))
14911521 then {
1492- let hB = invoke(aV, "burn", [eL], [AttachedPayment(dc, eL)])
1493- if ((hB == hB))
1522+ let hD = invoke(aV, "burn", [eY], [AttachedPayment(dm, eY)])
1523+ if ((hD == hD))
14941524 then {
1495- let hC = er(-(hA), -(du), 0)
1496- let gR = hC._1
1497- let ei = hC._2
1498- let gS = ev(eq, ei)
1499- if ((gS == gS))
1500- then (dv ++ gR)
1525+ let hE = eE(-(hC), -(dE), 0)
1526+ let gV = hE._1
1527+ let ev = hE._2
1528+ let gW = eI(eD, ev)
1529+ if ((gW == gW))
1530+ then (dI ++ gV)
15011531 else throw("Strict value is not equal to itself.")
15021532 }
15031533 else throw("Strict value is not equal to itself.")
15071537
15081538
15091539
1510-@Callable(eJ)
1511-func getNoLess (hD,hE) = {
1512- let dN = eI(eJ)
1513- let dt = dN._1
1514- let du = dN._2
1515- let eL = dN._3
1516- let dc = dN._4
1517- let dv = dN._5
1518- if ((hD > dt))
1519- then throw(((("noLessThenAmtAsset failed: " + toString(dt)) + " < ") + toString(hD)))
1520- else if ((hE > du))
1521- then throw(((("noLessThenPriceAsset failed: " + toString(du)) + " < ") + toString(hE)))
1540+@Callable(eW)
1541+func getNoLess (hF,hG) = {
1542+ let ea = eV(eW)
1543+ let dD = ea._1
1544+ let dE = ea._2
1545+ let eY = ea._3
1546+ let dm = ea._4
1547+ let dI = ea._5
1548+ if ((hF > dD))
1549+ then throw(((("noLessThenAmtAsset failed: " + toString(dD)) + " < ") + toString(hF)))
1550+ else if ((hG > dE))
1551+ then throw(((("noLessThenPriceAsset failed: " + toString(dE)) + " < ") + toString(hG)))
15221552 else {
1523- let eq = ej(toBigInt(0), toBigInt(0), toBigInt(0))
1524- if ((eq == eq))
1553+ let eD = ew(toBigInt(0), toBigInt(0), toBigInt(0))
1554+ if ((eD == eD))
15251555 then {
1526- let hB = invoke(aV, "burn", [eL], [AttachedPayment(dc, eL)])
1527- if ((hB == hB))
1556+ let hD = invoke(aV, "burn", [eY], [AttachedPayment(dm, eY)])
1557+ if ((hD == hD))
15281558 then {
1529- let hF = er(-(dt), -(du), 0)
1530- let gR = hF._1
1531- let ei = hF._2
1532- let gS = ev(eq, ei)
1533- if ((gS == gS))
1534- then (dv ++ gR)
1559+ let hH = eE(-(dD), -(dE), 0)
1560+ let gV = hH._1
1561+ let ev = hH._2
1562+ let gW = eI(eD, ev)
1563+ if ((gW == gW))
1564+ then (dI ++ gV)
15351565 else throw("Strict value is not equal to itself.")
15361566 }
15371567 else throw("Strict value is not equal to itself.")
15421572
15431573
15441574
1545-@Callable(eJ)
1575+@Callable(eW)
15461576 func unstakeAndGet (bY) = {
1547- let hG = if ((size(eJ.payments) != 0))
1577+ let hI = if ((size(eW.payments) != 0))
15481578 then throw("No payments are expected")
15491579 else true
1550- if ((hG == hG))
1580+ if ((hI == hI))
15511581 then {
1552- let cR = be()
1553- let de = fromBase58String(cR[q])
1554- let eq = ej(toBigInt(0), toBigInt(0), toBigInt(0))
1555- if ((eq == eq))
1582+ let db = be()
1583+ let do = fromBase58String(db[q])
1584+ let eD = ew(toBigInt(0), toBigInt(0), toBigInt(0))
1585+ if ((eD == eD))
15561586 then {
1557- let hw = invoke(bw, "unstake", [toBase58String(de), bY], nil)
1558- if ((hw == hw))
1587+ let hy = invoke(bw, "unstake", [toBase58String(do), bY], nil)
1588+ if ((hy == hy))
15591589 then {
1560- let dN = da(toBase58String(eJ.transactionId), toBase58String(de), bY, eJ.caller)
1561- let dt = dN._1
1562- let du = dN._2
1563- let dh = parseIntValue(dN._9)
1564- let dv = dN._10
1565- let hH = if (if (bc())
1590+ let ea = dk(toBase58String(eW.transactionId), toBase58String(do), bY, eW.caller)
1591+ let dD = ea._1
1592+ let dE = ea._2
1593+ let dr = parseIntValue(ea._9)
1594+ let dI = ea._10
1595+ let hJ = if (if (bc())
15661596 then true
1567- else (dh == n))
1568- then throw(("Get operation is blocked by admin. Status = " + toString(dh)))
1597+ else (dr == n))
1598+ then throw(("Get operation is blocked by admin. Status = " + toString(dr)))
15691599 else true
1570- if ((hH == hH))
1600+ if ((hJ == hJ))
15711601 then {
1572- let hB = invoke(aV, "burn", [bY], [AttachedPayment(de, bY)])
1573- if ((hB == hB))
1602+ let hD = invoke(aV, "burn", [bY], [AttachedPayment(do, bY)])
1603+ if ((hD == hD))
15741604 then {
1575- let hI = er(-(dt), -(du), 0)
1576- let gR = hI._1
1577- let ei = hI._2
1578- let gS = ev(eq, ei)
1579- if ((gS == gS))
1580- then (dv ++ gR)
1605+ let hK = eE(-(dD), -(dE), 0)
1606+ let gV = hK._1
1607+ let ev = hK._2
1608+ let gW = eI(eD, ev)
1609+ if ((gW == gW))
1610+ then (dI ++ gV)
15811611 else throw("Strict value is not equal to itself.")
15821612 }
15831613 else throw("Strict value is not equal to itself.")
15931623
15941624
15951625
1596-@Callable(eJ)
1597-func unstakeAndGetNoLess (hv,hJ,hE) = {
1598- let hk = if (bc())
1626+@Callable(eW)
1627+func unstakeAndGetNoLess (hx,hL,hG) = {
1628+ let ho = if (bc())
15991629 then true
16001630 else (bp == n)
1601- let fD = [if (!(hk))
1631+ let fQ = [if (!(ho))
16021632 then true
1603- else throw("get operation is blocked by admin"), if ((size(eJ.payments) == 0))
1633+ else throw("get operation is blocked by admin"), if ((size(eW.payments) == 0))
16041634 then true
16051635 else throw("no payments are expected")]
1606- if ((fD == fD))
1636+ if ((fQ == fQ))
16071637 then {
1608- let eq = ej(toBigInt(0), toBigInt(0), toBigInt(0))
1609- if ((eq == eq))
1638+ let eD = ew(toBigInt(0), toBigInt(0), toBigInt(0))
1639+ if ((eD == eD))
16101640 then {
1611- let hw = invoke(bw, "unstake", [toBase58String(bq), hv], nil)
1612- if ((hw == hw))
1641+ let hy = invoke(bw, "unstake", [toBase58String(bq), hx], nil)
1642+ if ((hy == hy))
16131643 then {
1614- let dN = da(toBase58String(eJ.transactionId), toBase58String(bq), hv, eJ.caller)
1615- let dt = dN._1
1616- let du = dN._2
1617- let dv = dN._10
1618- let hK = [if ((dt >= hJ))
1644+ let ea = dk(toBase58String(eW.transactionId), toBase58String(bq), hx, eW.caller)
1645+ let dD = ea._1
1646+ let dE = ea._2
1647+ let dI = ea._10
1648+ let hM = [if ((dD >= hL))
16191649 then true
1620- else throw(makeString(["amount asset amount to receive is less than ", toString(hJ)], "")), if ((du >= hE))
1650+ else throw(makeString(["amount asset amount to receive is less than ", toString(hL)], "")), if ((dE >= hG))
16211651 then true
1622- else throw(makeString(["price asset amount to receive is less than ", toString(hE)], ""))]
1623- if ((hK == hK))
1652+ else throw(makeString(["price asset amount to receive is less than ", toString(hG)], ""))]
1653+ if ((hM == hM))
16241654 then {
1625- let hB = invoke(aV, "burn", [hv], [AttachedPayment(bq, hv)])
1626- if ((hB == hB))
1655+ let hD = invoke(aV, "burn", [hx], [AttachedPayment(bq, hx)])
1656+ if ((hD == hD))
16271657 then {
1628- let hL = er(-(dt), -(du), 0)
1629- let gR = hL._1
1630- let ei = hL._2
1631- let gS = ev(eq, ei)
1632- if ((gS == gS))
1633- then (dv ++ gR)
1658+ let hN = eE(-(dD), -(dE), 0)
1659+ let gV = hN._1
1660+ let ev = hN._2
1661+ let gW = eI(eD, ev)
1662+ if ((gW == gW))
1663+ then (dI ++ gV)
16341664 else throw("Strict value is not equal to itself.")
16351665 }
16361666 else throw("Strict value is not equal to itself.")
16461676
16471677
16481678
1649-@Callable(eJ)
1650-func activate (hM,hN) = if ((toString(eJ.caller) != toString(aV)))
1679+@Callable(eW)
1680+func activate (hO,hP) = if ((toString(eW.caller) != toString(aV)))
16511681 then throw("permissions denied")
1652- else $Tuple2([StringEntry(ae(), hM), StringEntry(af(), hN)], "success")
1682+ else $Tuple2([StringEntry(ae(), hO), StringEntry(af(), hP)], "success")
16531683
16541684
16551685
1656-@Callable(eJ)
1686+@Callable(eW)
16571687 func refreshKLp () = {
1658- let hO = valueOrElse(getInteger(ak), 0)
1659- let hP = if (((height - hO) >= an))
1688+ let hQ = valueOrElse(getInteger(ak), 0)
1689+ let hR = if (((height - hQ) >= an))
16601690 then unit
16611691 else aS(makeString([toString(an), " blocks have not passed since the previous call"], ""))
1662- if ((hP == hP))
1692+ if ((hR == hR))
16631693 then {
1664- let eC = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, aj), "0")), aU("invalid kLp"))
1665- let hQ = er(0, 0, 0)
1666- let hR = hQ._1
1667- let ei = hQ._2
1668- let eu = if ((eC != ei))
1669- then hR
1694+ let eP = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, aj), "0")), aU("invalid kLp"))
1695+ let hS = eE(0, 0, 0)
1696+ let hT = hS._1
1697+ let ev = hS._2
1698+ let eH = if ((eP != ev))
1699+ then hT
16701700 else aS("nothing to refresh")
1671- $Tuple2(eu, toString(ei))
1701+ $Tuple2(eH, toString(ev))
16721702 }
16731703 else throw("Strict value is not equal to itself.")
16741704 }
16751705
16761706
16771707
1678-@Callable(eJ)
1708+@Callable(eW)
16791709 func getPoolConfigWrapperREADONLY () = $Tuple2(nil, be())
16801710
16811711
16821712
1683-@Callable(eJ)
1713+@Callable(eW)
16841714 func getAccBalanceWrapperREADONLY (ar) = $Tuple2(nil, bN(ar))
16851715
16861716
16871717
1688-@Callable(eJ)
1689-func calcPricesWrapperREADONLY (cL,cM,cQ) = {
1690- let cZ = cP(cL, cM, cQ)
1691- $Tuple2(nil, [toString(cZ[0]), toString(cZ[1]), toString(cZ[2])])
1718+@Callable(eW)
1719+func calcPricesWrapperREADONLY (cV,cW,da) = {
1720+ let dj = cZ(cV, cW, da)
1721+ $Tuple2(nil, [toString(dj[0]), toString(dj[1]), toString(dj[2])])
16921722 }
16931723
16941724
16951725
1696-@Callable(eJ)
1726+@Callable(eW)
16971727 func toX18WrapperREADONLY (E,F) = $Tuple2(nil, toString(D(E, F)))
16981728
16991729
17001730
1701-@Callable(eJ)
1731+@Callable(eW)
17021732 func fromX18WrapperREADONLY (I,J) = $Tuple2(nil, H(parseBigIntValue(I), J))
17031733
17041734
17051735
1706-@Callable(eJ)
1736+@Callable(eW)
17071737 func calcPriceBigIntWrapperREADONLY (bP,bQ) = $Tuple2(nil, toString(bO(parseBigIntValue(bP), parseBigIntValue(bQ))))
17081738
17091739
17101740
1711-@Callable(eJ)
1712-func estimatePutOperationWrapperREADONLY (db,dx,dy,dz,dA,dB,ab,dC,dD) = $Tuple2(nil, dw(db, dx, dy, dz, dA, dB, ab, dC, dD))
1741+@Callable(eW)
1742+func estimatePutOperationWrapperREADONLY (dl,dK,dL,dM,dN,dO,ab,dP,dQ) = $Tuple2(nil, dJ(dl, dK, dL, dM, dN, dO, ab, dP, dQ))
17131743
17141744
17151745
1716-@Callable(eJ)
1717-func estimateGetOperationWrapperREADONLY (db,dc,dd,ab) = {
1718- let dN = da(db, dc, dd, addressFromStringValue(ab))
1719- $Tuple2(nil, $Tuple10(dN._1, dN._2, dN._3, dN._4, dN._5, dN._6, dN._7, toString(dN._8), dN._9, dN._10))
1746+@Callable(eW)
1747+func estimateGetOperationWrapperREADONLY (dl,dm,dn,ab) = {
1748+ let ea = dk(dl, dm, dn, addressFromStringValue(ab))
1749+ $Tuple2(nil, $Tuple10(ea._1, ea._2, ea._3, ea._4, ea._5, ea._6, ea._7, toString(ea._8), ea._9, ea._10))
17201750 }
17211751
17221752
17231753
1724-@Callable(eJ)
1754+@Callable(eW)
17251755 func statsREADONLY () = {
1726- let cR = be()
1727- let de = fromBase58String(cR[q])
1728- let hS = cR[r]
1729- let hT = cR[s]
1730- let dG = cR[v]
1731- let dH = cR[w]
1732- let cS = parseIntValue(cR[t])
1733- let cT = parseIntValue(cR[u])
1734- let hU = valueOrErrorMessage(assetInfo(de), (("Asset " + toBase58String(de)) + " doesn't exist")).quantity
1735- let hV = bN(hS)
1736- let hW = bN(hT)
1737- let hX = if ((hU == 0))
1756+ let db = be()
1757+ let do = fromBase58String(db[q])
1758+ let hU = db[r]
1759+ let hV = db[s]
1760+ let dT = db[v]
1761+ let dU = db[w]
1762+ let dc = parseIntValue(db[t])
1763+ let dd = parseIntValue(db[u])
1764+ let hW = valueOrErrorMessage(assetInfo(do), (("Asset " + toBase58String(do)) + " doesn't exist")).quantity
1765+ let hX = bN(hU)
1766+ let hY = bN(hV)
1767+ let hZ = if ((hW == 0))
17381768 then [e, e, e]
1739- else cP(hV, hW, hU)
1740- let do = 0
1741- let hY = H(hX[1], b)
1742- let hZ = H(hX[2], b)
1743- let ia = value(getInteger(aV, aF(toString(this))))
1744- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(hV), toString(hW), toString(hU), toString(do), toString(hY), toString(hZ), toString(ia)], j))
1769+ else cZ(hX, hY, hW)
1770+ let dy = 0
1771+ let ia = H(hZ[1], b)
1772+ let ib = H(hZ[2], b)
1773+ let ic = value(getInteger(aV, aF(toString(this))))
1774+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(hX), toString(hY), toString(hW), toString(dy), toString(ia), toString(ib), toString(ic)], j))
17451775 }
17461776
17471777
17481778
1749-@Callable(eJ)
1750-func evaluatePutByAmountAssetREADONLY (dy) = {
1751- let cR = be()
1752- let de = fromBase58String(cR[q])
1753- let dE = cR[r]
1754- let df = fromBase58String(dE)
1755- let dF = cR[s]
1756- let dg = fromBase58String(dF)
1757- let cS = parseIntValue(cR[t])
1758- let cT = parseIntValue(cR[u])
1759- let dh = cR[p]
1760- let hU = valueOrErrorMessage(assetInfo(de), (("Asset " + toBase58String(de)) + " doesn't exist")).quantity
1761- let hV = bN(dE)
1762- let hW = bN(dF)
1763- let cN = D(hV, cS)
1764- let cO = D(hW, cT)
1765- let dn = if ((hU == 0))
1779+@Callable(eW)
1780+func evaluatePutByAmountAssetREADONLY (dL) = {
1781+ let db = be()
1782+ let do = fromBase58String(db[q])
1783+ let dR = db[r]
1784+ let dp = fromBase58String(dR)
1785+ let dS = db[s]
1786+ let dq = fromBase58String(dS)
1787+ let dc = parseIntValue(db[t])
1788+ let dd = parseIntValue(db[u])
1789+ let dr = db[p]
1790+ let hW = valueOrErrorMessage(assetInfo(do), (("Asset " + toBase58String(do)) + " doesn't exist")).quantity
1791+ let hX = bN(dR)
1792+ let hY = bN(dS)
1793+ let cX = D(hX, dc)
1794+ let cY = D(hY, dd)
1795+ let dx = if ((hW == 0))
17661796 then e
1767- else bO(cO, cN)
1768- let dK = D(dy, cS)
1769- let dL = fraction(dK, dn, d)
1770- let dA = H(dL, cT)
1771- let eP = dw("", 500000, dy, df, dA, dg, "", true, false)
1772- let dV = eP._1
1773- let ib = eP._3
1774- let dj = eP._4
1775- let dl = eP._5
1776- let di = eP._6
1777- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(dV), toString(H(dn, b)), toString(dj), toString(dl), toString(di), dh, toString(dy), toString(dA)], j))
1797+ else bO(cY, cX)
1798+ let dX = D(dL, dc)
1799+ let dY = fraction(dX, dx, d)
1800+ let dN = H(dY, dd)
1801+ let fc = dJ("", 500000, dL, dp, dN, dq, "", true, false)
1802+ let ei = fc._1
1803+ let id = fc._3
1804+ let dt = fc._4
1805+ let dv = fc._5
1806+ let ds = fc._6
1807+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(ei), toString(H(dx, b)), toString(dt), toString(dv), toString(ds), dr, toString(dL), toString(dN)], j))
17781808 }
17791809
17801810
17811811
1782-@Callable(eJ)
1783-func evaluatePutByPriceAssetREADONLY (dA) = {
1784- let cR = be()
1785- let de = fromBase58String(cR[q])
1786- let dE = cR[r]
1787- let df = fromBase58String(dE)
1788- let dF = cR[s]
1789- let dg = fromBase58String(dF)
1790- let cS = parseIntValue(cR[t])
1791- let cT = parseIntValue(cR[u])
1792- let dh = cR[p]
1793- let hU = valueOrErrorMessage(assetInfo(de), (("Asset " + toBase58String(de)) + " doesn't exist")).quantity
1794- let ic = bN(dE)
1795- let id = bN(dF)
1796- let ie = D(ic, cS)
1797- let if = D(id, cT)
1798- let dn = if ((hU == 0))
1812+@Callable(eW)
1813+func evaluatePutByPriceAssetREADONLY (dN) = {
1814+ let db = be()
1815+ let do = fromBase58String(db[q])
1816+ let dR = db[r]
1817+ let dp = fromBase58String(dR)
1818+ let dS = db[s]
1819+ let dq = fromBase58String(dS)
1820+ let dc = parseIntValue(db[t])
1821+ let dd = parseIntValue(db[u])
1822+ let dr = db[p]
1823+ let hW = valueOrErrorMessage(assetInfo(do), (("Asset " + toBase58String(do)) + " doesn't exist")).quantity
1824+ let ie = bN(dR)
1825+ let if = bN(dS)
1826+ let ig = D(ie, dc)
1827+ let ih = D(if, dd)
1828+ let dx = if ((hW == 0))
17991829 then e
1800- else bO(if, ie)
1801- let dL = D(dA, cT)
1802- let dK = fraction(dL, d, dn)
1803- let dy = H(dK, cS)
1804- let eP = dw("", 500000, dy, df, dA, dg, "", true, false)
1805- let dV = eP._1
1806- let ib = eP._3
1807- let dj = eP._4
1808- let dl = eP._5
1809- let di = eP._6
1810- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(dV), toString(H(dn, b)), toString(dj), toString(dl), toString(di), dh, toString(dy), toString(dA)], j))
1830+ else bO(ih, ig)
1831+ let dY = D(dN, dd)
1832+ let dX = fraction(dY, d, dx)
1833+ let dL = H(dX, dc)
1834+ let fc = dJ("", 500000, dL, dp, dN, dq, "", true, false)
1835+ let ei = fc._1
1836+ let id = fc._3
1837+ let dt = fc._4
1838+ let dv = fc._5
1839+ let ds = fc._6
1840+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(ei), toString(H(dx, b)), toString(dt), toString(dv), toString(ds), dr, toString(dL), toString(dN)], j))
18111841 }
18121842
18131843
18141844
1815-@Callable(eJ)
1816-func evaluateGetREADONLY (ig,ih) = {
1817- let dN = da("", ig, ih, this)
1818- let dt = dN._1
1819- let du = dN._2
1820- let dj = dN._5
1821- let dl = dN._6
1822- let di = dN._7
1823- let do = dN._8
1824- let dh = parseIntValue(dN._9)
1825- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(dt), toString(du), toString(dj), toString(dl), toString(di), toString(do), toString(dh)], j))
1845+@Callable(eW)
1846+func evaluateGetREADONLY (ii,ij) = {
1847+ let ea = dk("", ii, ij, this)
1848+ let dD = ea._1
1849+ let dE = ea._2
1850+ let dt = ea._5
1851+ let dv = ea._6
1852+ let ds = ea._7
1853+ let dy = ea._8
1854+ let dr = parseIntValue(ea._9)
1855+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(dD), toString(dE), toString(dt), toString(dv), toString(ds), toString(dy), toString(dr)], j))
18261856 }
18271857
18281858
1829-@Verifier(ii)
1830-func ij () = {
1831- let ik = {
1832- let bV = fV()
1859+@Verifier(ik)
1860+func il () = {
1861+ let im = {
1862+ let bV = gi()
18331863 if ($isInstanceOf(bV, "ByteVector"))
18341864 then {
1835- let fZ = bV
1836- fZ
1865+ let gm = bV
1866+ gm
18371867 }
18381868 else if ($isInstanceOf(bV, "Unit"))
1839- then ii.senderPublicKey
1869+ then ik.senderPublicKey
18401870 else throw("Match error")
18411871 }
1842- let bV = ii
1872+ let bV = ik
18431873 if ($isInstanceOf(bV, "Order"))
18441874 then {
1845- let ey = bV
1846- let il = bd()
1847- let im = ex(ey)
1848- let aK = im._1
1849- let aL = im._2
1850- let aM = sigVerify(ey.bodyBytes, ey.proofs[0], ey.senderPublicKey)
1851- let aN = sigVerify(ey.bodyBytes, ey.proofs[1], il)
1875+ let eL = bV
1876+ let in = bd()
1877+ let io = eK(eL)
1878+ let aK = io._1
1879+ let aL = io._2
1880+ let aM = sigVerify(eL.bodyBytes, eL.proofs[0], eL.senderPublicKey)
1881+ let aN = sigVerify(eL.bodyBytes, eL.proofs[1], in)
18521882 if (if (if (aK)
18531883 then aM
18541884 else false)
18591889 }
18601890 else if ($isInstanceOf(bV, "SetScriptTransaction"))
18611891 then {
1862- let fW = bV
1863- if (sigVerify(ii.bodyBytes, ii.proofs[0], ik))
1892+ let gj = bV
1893+ if (sigVerify(ik.bodyBytes, ik.proofs[0], im))
18641894 then true
18651895 else {
1866- let in = blake2b256(value(fW.script))
1867- let io = fromBase64String(value(getString(aV, aH())))
1868- let ip = scriptHash(this)
1869- if ((io == in))
1870- then (ip != in)
1896+ let ip = blake2b256(value(gj.script))
1897+ let iq = fromBase64String(value(getString(aV, aH())))
1898+ let ir = scriptHash(this)
1899+ if ((iq == ip))
1900+ then (ir != ip)
18711901 else false
18721902 }
18731903 }
1874- else sigVerify(ii.bodyBytes, ii.proofs[0], ik)
1904+ else sigVerify(ik.bodyBytes, ik.proofs[0], im)
18751905 }
18761906
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 8
55
66 let b = 100000000
77
88 let c = toBigInt(100000000)
99
1010 let d = toBigInt(1000000000000000000)
1111
1212 let e = toBigInt(0)
1313
1414 let f = toBigInt(0)
1515
1616 let g = toBigInt(1)
1717
1818 let h = toBigInt(2)
1919
2020 let i = "WAVES"
2121
2222 let j = "__"
2323
2424 let k = 1
2525
2626 let l = 2
2727
2828 let m = 3
2929
3030 let n = 4
3131
3232 let o = 1
3333
3434 let p = 2
3535
3636 let q = 3
3737
3838 let r = 4
3939
4040 let s = 5
4141
4242 let t = 6
4343
4444 let u = 7
4545
4646 let v = 8
4747
4848 let w = 9
4949
5050 let x = 10
5151
5252 let y = 1
5353
5454 let z = 2
5555
5656 let A = 3
5757
5858 let B = 1
5959
6060 let C = 7
6161
6262 func D (E,F) = fraction(toBigInt(E), d, toBigInt(F))
6363
6464
6565 func G (E,F) = fraction(E, d, F)
6666
6767
6868 func H (I,J) = toInt(fraction(I, toBigInt(J), d))
6969
7070
7171 func K (I,J,L) = toInt(fraction(I, toBigInt(J), d, L))
7272
7373
7474 func M (N,O,P) = fraction(N, O, P)
7575
7676
7777 func Q (I) = if ((0 > I))
7878 then -(I)
7979 else I
8080
8181
8282 func R (I) = if ((e > I))
8383 then -(I)
8484 else I
8585
8686
8787 func S () = "%s__swapContract"
8888
8989
9090 func T () = "%s__factoryContract"
9191
9292
9393 func U () = "%s__managerPublicKey"
9494
9595
9696 func V () = "%s__pendingManagerPublicKey"
9797
9898
9999 func W () = "%s%s__price__last"
100100
101101
102102 func X (Y,Z) = makeString(["%s%s%d%d__price__history", toString(Y), toString(Z)], j)
103103
104104
105105 func aa (ab,ac) = ((("%s%s%s__P__" + ab) + "__") + ac)
106106
107107
108108 func ad (ab,ac) = ((("%s%s%s__G__" + ab) + "__") + ac)
109109
110110
111111 func ae () = "%s__amountAsset"
112112
113113
114114 func af () = "%s__priceAsset"
115115
116116
117117 let ag = "%s__fee"
118118
119119 let ah = fraction(10, b, 10000)
120120
121121 let ai = valueOrElse(getInteger(this, ag), ah)
122122
123123 let aj = makeString(["%s", "kLp"], j)
124124
125125 let ak = makeString(["%s", "kLpRefreshedHeight"], j)
126126
127127 let al = makeString(["%s", "refreshKLpDelay"], j)
128128
129129 let am = 30
130130
131131 let an = valueOrElse(getInteger(this, al), am)
132132
133133 func ao () = "%s__sWavesAssetId"
134134
135135
136136 func ap () = "%s__sWavesProxyAddress"
137137
138138
139139 func aq (ar) = makeString(["%s%s", "additionalBalance", ar], j)
140140
141141
142142 func as (ar) = makeString(["%s%s", "stakingAssetBalance", ar], j)
143143
144144
145145 func at (ar) = valueOrElse(getInteger(this, aq(ar)), 0)
146146
147147
148148 func au (ar) = valueOrElse(getInteger(this, as(ar)), 0)
149149
150150
151151 func av () = "%s__factoryConfig"
152152
153153
154154 func aw () = "%s%s__matcher__publicKey"
155155
156156
157157 func ax (ay) = (("%s%s%s__" + ay) + "__mappings__poolContract2LpAsset")
158158
159159
160160 func az (aA,aB) = (((("%d%d%s__" + aA) + "__") + aB) + "__config")
161161
162162
163163 func aC (aD) = ("%s%s%s__mappings__baseAsset2internalId__" + aD)
164164
165165
166166 func aE () = "%s__shutdown"
167167
168168
169169 func aF (aG) = ("%s%s__poolWeight__" + aG)
170170
171171
172172 func aH () = "%s__allowedLpScriptHash"
173173
174174
175175 let aI = "%s__feeCollectorAddress"
176176
177177 func aJ (aK,aL,aM,aN) = throw((((((((("order validation failed: orderValid=" + toString(aK)) + " (") + aL) + ")") + " senderValid=") + toString(aM)) + " matcherValid=") + toString(aN)))
178178
179179
180180 func aO (aP,aQ) = valueOrErrorMessage(getString(aP, aQ), makeString(["mandatory ", toString(aP), ".", aQ, " is not defined"], ""))
181181
182182
183183 func aR (aP,aQ) = valueOrErrorMessage(getInteger(aP, aQ), makeString(["mandatory ", toString(aP), ".", aQ, " is not defined"], ""))
184184
185185
186186 func aS (aT) = throw(makeString(["lp.ride:", aT], " "))
187187
188188
189189 func aU (aT) = makeString(["lp.ride:", aT], " ")
190190
191191
192192 let aV = addressFromStringValue(aO(this, T()))
193193
194194 let aW = addressFromStringValue(aO(aV, aI))
195195
196196 let aX = {
197197 let aY = invoke(aV, "getInFeeREADONLY", [toString(this)], nil)
198198 if ($isInstanceOf(aY, "Int"))
199199 then aY
200200 else throw(($getType(aY) + " couldn't be cast to Int"))
201201 }
202202
203203 let aZ = {
204204 let aY = invoke(aV, "getOutFeeREADONLY", [toString(this)], nil)
205205 if ($isInstanceOf(aY, "Int"))
206206 then aY
207207 else throw(($getType(aY) + " couldn't be cast to Int"))
208208 }
209209
210210 func ba () = aO(aV, ao())
211211
212212
213213 func bb () = aO(aV, ap())
214214
215215
216216 func bc () = valueOrElse(getBoolean(aV, aE()), false)
217217
218218
219219 func bd () = fromBase58String(aO(aV, aw()))
220220
221221
222222 func be () = {
223223 let bf = aO(this, ae())
224224 let bg = aO(this, af())
225225 let aB = aR(aV, aC(bg))
226226 let aA = aR(aV, aC(bf))
227227 split(aO(aV, az(toString(aA), toString(aB))), j)
228228 }
229229
230230
231231 func bh (bi) = if ((bi == i))
232232 then unit
233233 else fromBase58String(bi)
234234
235235
236236 func bj (bi) = if ((bi == unit))
237237 then i
238238 else toBase58String(value(bi))
239239
240240
241241 func bk (bl) = $Tuple7(addressFromStringValue(bl[o]), parseIntValue(bl[p]), fromBase58String(bl[q]), bh(bl[r]), bh(bl[s]), parseIntValue(bl[t]), parseIntValue(bl[u]))
242242
243243
244244 let bm = bk(be())
245245
246246 let bn = bm
247247
248248 let bo = bn._1
249249
250250 let bp = bn._2
251251
252252 let bq = bn._3
253253
254254 let br = bn._4
255255
256256 let bs = bn._5
257257
258258 let bt = bn._6
259259
260260 let bu = bn._7
261261
262262 func bv () = split(aO(aV, av()), j)
263263
264264
265265 let bw = valueOrErrorMessage(addressFromString(bv()[B]), "incorrect staking address")
266266
267267 let bx = valueOrErrorMessage(addressFromString(bv()[C]), "incorrect staking address")
268268
269269 func by (bz,bA,bB,bC,bD,bE,bF,bG,bH,bI) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bz), toString(bA), toString(bB), toString(bC), toString(bD), toString(bE), toString(bF), toString(bG), toString(bH), toString(bI)], j)
270270
271271
272272 func bJ (bK,bL,bM,bC,bF,bG) = makeString(["%d%d%d%d%d%d", toString(bK), toString(bL), toString(bM), toString(bC), toString(bF), toString(bG)], j)
273273
274274
275275 func bN (ar) = if ((ar == "WAVES"))
276276 then (wavesBalance(this).available + at(ar))
277277 else if ((ar == ba()))
278278 then {
279279 let bf = aO(this, ae())
280280 let bg = aO(this, af())
281281 if (if (if ((bf == "WAVES"))
282282 then (bg == ba())
283283 else false)
284284 then true
285285 else if ((bg == "WAVES"))
286286 then (bf == ba())
287287 else false)
288288 then assetBalance(this, fromBase58String(ar))
289289 else (assetBalance(this, fromBase58String(ar)) + au(ar))
290290 }
291291 else assetBalance(this, fromBase58String(ar))
292292
293293
294294 func bO (bP,bQ) = fraction(bP, d, bQ)
295295
296296
297297 func bR (bP,bQ,L) = fraction(bP, d, bQ, L)
298298
299299
300300 func bS (bT) = {
301301 let bU = invoke(bT, "getRate", nil, nil)
302302 if ((bU == bU))
303303 then {
304304 let bV = bU
305305 if ($isInstanceOf(bV, "Int"))
306306 then {
307307 let bW = bV
308308 bW
309309 }
310310 else aS("proxy.getRate() unexpected value")
311311 }
312312 else throw("Strict value is not equal to itself.")
313313 }
314314
315315
316316 func bX (ar,bY,bZ,bT) = {
317317 let ca = at(ar)
318318 if ((ca == ca))
319319 then {
320320 let cb = au(bZ)
321321 if ((cb == cb))
322322 then {
323323 let cc = bh(ar)
324324 if ((bY > 0))
325325 then {
326326 let cd = invoke(bT, "deposit", nil, [AttachedPayment(cc, bY)])
327327 if ((cd == cd))
328328 then {
329329 let bV = cd
330330 if ($isInstanceOf(bV, "Int"))
331331 then {
332332 let ce = bV
333333 let cf = (ca + bY)
334334 let cg = (cb + ce)
335335 [IntegerEntry(aq(ar), cf), IntegerEntry(as(bZ), cg)]
336336 }
337337 else nil
338338 }
339339 else throw("Strict value is not equal to itself.")
340340 }
341341 else nil
342342 }
343343 else throw("Strict value is not equal to itself.")
344344 }
345345 else throw("Strict value is not equal to itself.")
346346 }
347347
348348
349-func ch (ar,bY,bZ,bT,ci) = {
349+func ch (ar,bY,bZ,bT,ci,cj) = {
350350 let ca = at(ar)
351351 if ((ca == ca))
352352 then {
353353 let cb = au(bZ)
354354 if ((cb == cb))
355355 then {
356- let cj = bS(bT)
357- if ((cj == cj))
356+ let ck = bS(bT)
357+ if ((ck == ck))
358358 then {
359- let ck = bh(bZ)
360- let cl = fraction(ci, bY, cj)
361- if ((cl > 0))
359+ let cl = fraction(ci, ca, cb)
360+ let cm = bh(bZ)
361+ let cn = fraction(ci, bY, cl)
362+ let co = fraction(ci, bY, ck)
363+ let cp = max([0, (cn - co)])
364+ if ((co > 0))
362365 then {
363- let cm = invoke(bT, "withdraw", nil, [AttachedPayment(ck, cl)])
364- if ((cm == cm))
366+ let cq = invoke(bT, "withdraw", nil, [AttachedPayment(cm, co)])
367+ if ((cq == cq))
365368 then {
366- let bV = cm
369+ let bV = cq
367370 if ($isInstanceOf(bV, "Int"))
368371 then {
369- let cn = bV
370- let cf = (ca - cn)
371- let cg = (cb - cl)
372-[IntegerEntry(aq(ar), cf), IntegerEntry(as(bZ), cg)]
372+ let cr = bV
373+ let cf = (ca - cr)
374+ let cg = ((cb - co) - cp)
375+[IntegerEntry(aq(ar), cf), IntegerEntry(as(bZ), cg), ScriptTransfer(cj, cp, bh(bZ))]
373376 }
374377 else nil
375378 }
376379 else throw("Strict value is not equal to itself.")
377380 }
378381 else nil
379382 }
380383 else throw("Strict value is not equal to itself.")
381384 }
382385 else throw("Strict value is not equal to itself.")
383386 }
384387 else throw("Strict value is not equal to itself.")
385388 }
386389
387390
388-func co (ar) = invoke(aV, "getPoolLeaseConfigREADONLY", [toString(this), ar], nil)
391+func cs (ar) = invoke(aV, "getPoolLeaseConfigREADONLY", [toString(this), ar], nil)
389392
390393
391-func cp (cq,ar,bZ,cr,bT,ci) = {
394+func ct (cu,ar,bZ,cv,bT,ci,cj) = {
392395 let ca = at(ar)
393396 if ((ca == ca))
394397 then {
395398 let cb = au(bZ)
396399 if ((cb == cb))
397400 then {
398- let cs = {
401+ let cw = {
399402 let bV = bh(ar)
400403 if ($isInstanceOf(bV, "ByteVector"))
401404 then {
402- let ct = bV
403- assetBalance(this, ct)
405+ let cx = bV
406+ assetBalance(this, cx)
404407 }
405408 else if ($isInstanceOf(bV, "Unit"))
406409 then {
407- let cu = bV
410+ let cy = bV
408411 wavesBalance(this).available
409412 }
410413 else throw("Match error")
411414 }
412- if ((cs == cs))
415+ if ((cw == cw))
413416 then {
414- let cv = max([0, ((cs + ca) - cr)])
415- let cw = fraction(cq, cv, 100)
416- let cx = (ca - cw)
417- if ((cx == 0))
417+ let cz = max([0, ((cw + ca) - cv)])
418+ let cA = fraction(cu, cz, 100)
419+ let cB = (ca - cA)
420+ if ((cB == 0))
418421 then nil
419- else if ((0 > cx))
422+ else if ((0 > cB))
420423 then {
421- let cy = -(cx)
422- bX(ar, cy, bZ, bT)
424+ let cC = -(cB)
425+ bX(ar, cC, bZ, bT)
423426 }
424427 else {
425- let cz = cx
426- ch(ar, cz, bZ, bT, ci)
428+ let cD = cB
429+ ch(ar, cD, bZ, bT, ci, cj)
427430 }
428431 }
429432 else throw("Strict value is not equal to itself.")
430433 }
431434 else throw("Strict value is not equal to itself.")
432435 }
433436 else throw("Strict value is not equal to itself.")
434437 }
435438
436439
437-func cA (ar) = {
438- let bV = co(ar)
440+func cE (ar) = {
441+ let bV = cs(ar)
439442 if ($isInstanceOf(bV, "(Boolean, Int, Int, String, String, Int, String)"))
440443 then {
441- let cB = bV
442- let cC = cB
443- let cD = cC._1
444- let cE = cC._2
445- let cr = cC._3
446- let cF = cC._4
447- let cG = cC._5
448- let ci = cC._6
449- let cH = cC._7
450- if (cD)
451- then cp(cE, ar, cG, cr, addressFromStringValue(cF), ci)
444+ let cF = bV
445+ let cG = cF
446+ let cH = cG._1
447+ let cI = cG._2
448+ let cv = cG._3
449+ let cJ = cG._4
450+ let cK = cG._5
451+ let ci = cG._6
452+ let cL = cG._7
453+ if (cH)
454+ then ct(cI, ar, cK, cv, addressFromStringValue(cJ), ci, addressFromStringValue(cL))
452455 else nil
453456 }
454457 else aS((("[" + ar) + "] Rebalance error"))
455458 }
456459
457460
458-func cI (cJ,cK,cL,cM) = {
459- let cN = D(cL, cJ)
460- let cO = D(cM, cK)
461- bO(cO, cN)
461+func cM (ar,bY) = {
462+ let bV = cs(ar)
463+ if ($isInstanceOf(bV, "(Boolean, Int, Int, String, String, Int, String)"))
464+ then {
465+ let cF = bV
466+ let cN = cF
467+ let cH = cN._1
468+ let cI = cN._2
469+ let cv = cN._3
470+ let cJ = cN._4
471+ let cK = cN._5
472+ let ci = cN._6
473+ let cL = cN._7
474+ if (cH)
475+ then ch(ar, bY, cK, addressFromStringValue(cJ), ci, addressFromStringValue(cL))
476+ else nil
477+ }
478+ else aS((("[" + ar) + "] withdrawAssetWrapper() error"))
462479 }
463480
464481
465-func cP (cL,cM,cQ) = {
466- let cR = be()
467- let cS = parseIntValue(cR[t])
468- let cT = parseIntValue(cR[u])
469- let cU = cI(cS, cT, cL, cM)
470- let bQ = D(cL, cS)
471- let bP = D(cM, cT)
472- let cV = D(cQ, b)
473- let cW = bO(bQ, cV)
474- let cX = bO(bP, cV)
475-[cU, cW, cX]
482+func cO (ar,bY) = {
483+ let cP = {
484+ let bV = bh(ar)
485+ if ($isInstanceOf(bV, "ByteVector"))
486+ then {
487+ let cx = bV
488+ assetBalance(this, cx)
489+ }
490+ else if ($isInstanceOf(bV, "Unit"))
491+ then {
492+ let cQ = bV
493+ wavesBalance(this).available
494+ }
495+ else throw("Match error")
496+ }
497+ if ((bY > cP))
498+ then {
499+ let cR = (bY - cP)
500+ cM(ar, cR)
501+ }
502+ else nil
476503 }
477504
478505
479-func cY (cL,cM,cQ) = {
480- let cZ = cP(cL, cM, cQ)
481-[H(cZ[0], b), H(cZ[1], b), H(cZ[2], b)]
506+func cS (cT,cU,cV,cW) = {
507+ let cX = D(cV, cT)
508+ let cY = D(cW, cU)
509+ bO(cY, cX)
482510 }
483511
484512
485-func da (db,dc,dd,ab) = {
486- let cR = be()
487- let de = cR[q]
488- let df = cR[r]
489- let dg = cR[s]
490- let cJ = parseIntValue(cR[t])
491- let cK = parseIntValue(cR[u])
492- let dh = cR[p]
493- let di = valueOrErrorMessage(assetInfo(fromBase58String(de)), (("Asset " + de) + " doesn't exist")).quantity
494- if ((de != dc))
513+func cZ (cV,cW,da) = {
514+ let db = be()
515+ let dc = parseIntValue(db[t])
516+ let dd = parseIntValue(db[u])
517+ let de = cS(dc, dd, cV, cW)
518+ let bQ = D(cV, dc)
519+ let bP = D(cW, dd)
520+ let df = D(da, b)
521+ let dg = bO(bQ, df)
522+ let dh = bO(bP, df)
523+[de, dg, dh]
524+ }
525+
526+
527+func di (cV,cW,da) = {
528+ let dj = cZ(cV, cW, da)
529+[H(dj[0], b), H(dj[1], b), H(dj[2], b)]
530+ }
531+
532+
533+func dk (dl,dm,dn,ab) = {
534+ let db = be()
535+ let do = db[q]
536+ let dp = db[r]
537+ let dq = db[s]
538+ let cT = parseIntValue(db[t])
539+ let cU = parseIntValue(db[u])
540+ let dr = db[p]
541+ let ds = valueOrErrorMessage(assetInfo(fromBase58String(do)), (("Asset " + do) + " doesn't exist")).quantity
542+ if ((do != dm))
495543 then throw("Invalid asset passed.")
496544 else {
497- let dj = bN(df)
498- let dk = D(dj, cJ)
499- let dl = bN(dg)
500- let dm = D(dl, cK)
501- let dn = bO(dm, dk)
502- let do = H(dn, b)
503- let dp = D(dd, b)
504- let dq = D(di, b)
505- let dr = fraction(dk, dp, dq)
506- let ds = fraction(dm, dp, dq)
507- let dt = K(dr, cJ, FLOOR)
508- let du = K(ds, cK, FLOOR)
509- let dv = if ((db == ""))
510- then nil
511- else [ScriptTransfer(ab, dt, if ((df == "WAVES"))
512- then unit
513- else fromBase58String(df)), ScriptTransfer(ab, du, if ((dg == "WAVES"))
514- then unit
515- else fromBase58String(dg)), StringEntry(ad(toString(ab), db), bJ(dt, du, dd, do, height, lastBlock.timestamp)), IntegerEntry(W(), do), IntegerEntry(X(height, lastBlock.timestamp), do)]
516- $Tuple10(dt, du, df, dg, dj, dl, di, dn, dh, dv)
545+ let dt = bN(dp)
546+ let du = D(dt, cT)
547+ let dv = bN(dq)
548+ let dw = D(dv, cU)
549+ let dx = bO(dw, du)
550+ let dy = H(dx, b)
551+ let dz = D(dn, b)
552+ let dA = D(ds, b)
553+ let dB = fraction(du, dz, dA)
554+ let dC = fraction(dw, dz, dA)
555+ let dD = K(dB, cT, FLOOR)
556+ let dE = K(dC, cU, FLOOR)
557+ let dF = cO(dp, dD)
558+ if ((dF == dF))
559+ then {
560+ let dG = cO(dq, dE)
561+ if ((dG == dG))
562+ then {
563+ let dH = invoke(this, "rebalance", nil, nil)
564+ if ((dH == dH))
565+ then {
566+ let dI = if ((dl == ""))
567+ then nil
568+ else ((dF ++ dG) ++ [ScriptTransfer(ab, dD, if ((dp == "WAVES"))
569+ then unit
570+ else fromBase58String(dp)), ScriptTransfer(ab, dE, if ((dq == "WAVES"))
571+ then unit
572+ else fromBase58String(dq)), StringEntry(ad(toString(ab), dl), bJ(dD, dE, dn, dy, height, lastBlock.timestamp)), IntegerEntry(W(), dy), IntegerEntry(X(height, lastBlock.timestamp), dy)])
573+ $Tuple10(dD, dE, dp, dq, dt, dv, ds, dx, dr, dI)
574+ }
575+ else throw("Strict value is not equal to itself.")
576+ }
577+ else throw("Strict value is not equal to itself.")
578+ }
579+ else throw("Strict value is not equal to itself.")
517580 }
518581 }
519582
520583
521-func dw (db,dx,dy,dz,dA,dB,ab,dC,dD) = {
522- let cR = be()
523- let de = fromBase58String(cR[q])
524- let dE = cR[r]
525- let dF = cR[s]
526- let dG = cR[v]
527- let dH = cR[w]
528- let cS = parseIntValue(cR[t])
529- let cT = parseIntValue(cR[u])
530- let dh = cR[p]
531- let di = valueOrErrorMessage(assetInfo(de), (("Asset " + toBase58String(de)) + " doesn't exist")).quantity
532- let dI = toBase58String(valueOrElse(dz, fromBase58String("WAVES")))
533- let dJ = toBase58String(valueOrElse(dB, fromBase58String("WAVES")))
534- if (if ((dE != dI))
584+func dJ (dl,dK,dL,dM,dN,dO,ab,dP,dQ) = {
585+ let db = be()
586+ let do = fromBase58String(db[q])
587+ let dR = db[r]
588+ let dS = db[s]
589+ let dT = db[v]
590+ let dU = db[w]
591+ let dc = parseIntValue(db[t])
592+ let dd = parseIntValue(db[u])
593+ let dr = db[p]
594+ let ds = valueOrErrorMessage(assetInfo(do), (("Asset " + toBase58String(do)) + " doesn't exist")).quantity
595+ let dV = toBase58String(valueOrElse(dM, fromBase58String("WAVES")))
596+ let dW = toBase58String(valueOrElse(dO, fromBase58String("WAVES")))
597+ if (if ((dR != dV))
535598 then true
536- else (dF != dJ))
599+ else (dS != dW))
537600 then throw("Invalid amt or price asset passed.")
538601 else {
539- let dj = if (dC)
540- then bN(dE)
541- else (bN(dE) - dy)
542- let dl = if (dC)
543- then bN(dF)
544- else (bN(dF) - dA)
545- let dK = D(dy, cS)
546- let dL = D(dA, cT)
547- let dM = bO(dL, dK)
548- let dk = D(dj, cS)
549- let dm = D(dl, cT)
550- let dN = if ((di == 0))
602+ let dt = if (dP)
603+ then bN(dR)
604+ else (bN(dR) - dL)
605+ let dv = if (dP)
606+ then bN(dS)
607+ else (bN(dS) - dN)
608+ let dX = D(dL, dc)
609+ let dY = D(dN, dd)
610+ let dZ = bO(dY, dX)
611+ let du = D(dt, dc)
612+ let dw = D(dv, dd)
613+ let ea = if ((ds == 0))
551614 then {
552- let dn = e
553- let dO = e
554- let cV = pow((dK * dL), 0, toBigInt(5), 1, 0, DOWN)
555- $Tuple5(H(cV, b), H(dK, cS), H(dL, cT), bO((dm + dL), (dk + dK)), dO)
615+ let dx = e
616+ let eb = e
617+ let df = pow((dX * dY), 0, toBigInt(5), 1, 0, DOWN)
618+ $Tuple5(H(df, b), H(dX, dc), H(dY, dd), bO((dw + dY), (du + dX)), eb)
556619 }
557620 else {
558- let dn = bO(dm, dk)
559- let dO = fraction(R((dn - dM)), d, dn)
560- let dP = D(dx, b)
561- if (if ((dn != e))
562- then (dO > dP)
621+ let dx = bO(dw, du)
622+ let eb = fraction(R((dx - dZ)), d, dx)
623+ let ec = D(dK, b)
624+ if (if ((dx != e))
625+ then (eb > ec)
563626 else false)
564- then throw(((("Price slippage " + toString(dO)) + " exceeded the passed limit of ") + toString(dP)))
627+ then throw(((("Price slippage " + toString(eb)) + " exceeded the passed limit of ") + toString(ec)))
565628 else {
566- let dq = D(di, b)
567- let dQ = fraction(dK, bR(dm, dk, CEILING), d, CEILING)
568- let dR = fraction(dL, d, bR(dm, dk, FLOOR), CEILING)
569- let dS = if ((dQ > dL))
570- then $Tuple2(dR, dL)
571- else $Tuple2(dK, dQ)
572- let dT = dS._1
573- let dU = dS._2
574- let cV = fraction(dq, dU, dm, FLOOR)
575- $Tuple5(K(cV, b, FLOOR), K(dT, cS, CEILING), K(dU, cT, CEILING), dn, dO)
629+ let dA = D(ds, b)
630+ let ed = fraction(dX, bR(dw, du, CEILING), d, CEILING)
631+ let ee = fraction(dY, d, bR(dw, du, FLOOR), CEILING)
632+ let ef = if ((ed > dY))
633+ then $Tuple2(ee, dY)
634+ else $Tuple2(dX, ed)
635+ let eg = ef._1
636+ let eh = ef._2
637+ let df = fraction(dA, eh, dw, FLOOR)
638+ $Tuple5(K(df, b, FLOOR), K(eg, dc, CEILING), K(eh, dd, CEILING), dx, eb)
576639 }
577640 }
578- let dV = dN._1
579- let dW = dN._2
580- let dX = dN._3
581- let do = H(dN._4, b)
582- let dY = H(dN._5, b)
583- if ((0 >= dV))
641+ let ei = ea._1
642+ let ej = ea._2
643+ let ek = ea._3
644+ let dy = H(ea._4, b)
645+ let el = H(ea._5, b)
646+ if ((0 >= ei))
584647 then throw("Invalid calculations. LP calculated is less than zero.")
585648 else {
586- let dZ = if (!(dD))
649+ let em = if (!(dQ))
587650 then 0
588- else dV
589- let ea = (dy - dW)
590- let eb = (dA - dX)
591- let ec = [IntegerEntry(W(), do), IntegerEntry(X(height, lastBlock.timestamp), do), StringEntry(aa(ab, db), by(dW, dX, dZ, do, dx, dY, height, lastBlock.timestamp, ea, eb))]
592- $Tuple13(dV, dZ, do, dj, dl, di, de, dh, ec, ea, eb, dz, dB)
651+ else ei
652+ let en = (dL - ej)
653+ let eo = (dN - ek)
654+ let ep = [IntegerEntry(W(), dy), IntegerEntry(X(height, lastBlock.timestamp), dy), StringEntry(aa(ab, dl), by(ej, ek, em, dy, dK, el, height, lastBlock.timestamp, en, eo))]
655+ $Tuple13(ei, em, dy, dt, dv, ds, do, dr, ep, en, eo, dM, dO)
593656 }
594657 }
595658 }
596659
597660
598-func ed (ee,ef,di) = {
599- let eg = G(ee, toBigInt(bt))
600- let eh = G(ef, toBigInt(bu))
601- let ei = fraction(pow((eg * eh), 0, toBigInt(5), 1, 18, DOWN), g, di)
602- if ((di == f))
661+func eq (er,es,ds) = {
662+ let et = G(er, toBigInt(bt))
663+ let eu = G(es, toBigInt(bu))
664+ let ev = fraction(pow((et * eu), 0, toBigInt(5), 1, 18, DOWN), g, ds)
665+ if ((ds == f))
603666 then f
604- else ei
667+ else ev
605668 }
606669
607670
608-func ej (ek,el,em) = {
609- let en = (toBigInt(bN(bj(br))) - ek)
610- let eo = (toBigInt(bN(bj(bs))) - el)
611- let ep = (toBigInt(value(assetInfo(bq)).quantity) - em)
612- let eq = ed(en, eo, ep)
613- eq
671+func ew (ex,ey,ez) = {
672+ let eA = (toBigInt(bN(bj(br))) - ex)
673+ let eB = (toBigInt(bN(bj(bs))) - ey)
674+ let eC = (toBigInt(value(assetInfo(bq)).quantity) - ez)
675+ let eD = eq(eA, eB, eC)
676+ eD
614677 }
615678
616679
617-func er (es,et,em) = {
618- let en = (bN(bj(br)) + es)
619- let eo = (bN(bj(bs)) + et)
620- let ep = (value(assetInfo(bq)).quantity + em)
621- let ei = ed(toBigInt(en), toBigInt(eo), toBigInt(ep))
622- let eu = [IntegerEntry(ak, height), StringEntry(aj, toString(ei))]
623- $Tuple2(eu, ei)
680+func eE (eF,eG,ez) = {
681+ let eA = (bN(bj(br)) + eF)
682+ let eB = (bN(bj(bs)) + eG)
683+ let eC = (value(assetInfo(bq)).quantity + ez)
684+ let ev = eq(toBigInt(eA), toBigInt(eB), toBigInt(eC))
685+ let eH = [IntegerEntry(ak, height), StringEntry(aj, toString(ev))]
686+ $Tuple2(eH, ev)
624687 }
625688
626689
627-func ev (ew,ei) = if ((ei >= ew))
690+func eI (eJ,ev) = if ((ev >= eJ))
628691 then true
629- else aS(makeString(["updated KLp lower than current KLp", toString(ew), toString(ei)], " "))
692+ else aS(makeString(["updated KLp lower than current KLp", toString(eJ), toString(ev)], " "))
630693
631694
632-func ex (ey) = {
633- let en = bN(bj(br))
634- let eo = bN(bj(bs))
635- let ez = ey.amount
636- let eA = fraction(ey.amount, ey.price, b, FLOOR)
637- let eB = if ((ey.orderType == Buy))
638- then $Tuple2(ez, -(eA))
639- else $Tuple2(-(ez), eA)
640- let es = eB._1
641- let et = eB._2
695+func eK (eL) = {
696+ let eA = bN(bj(br))
697+ let eB = bN(bj(bs))
698+ let eM = eL.amount
699+ let eN = fraction(eL.amount, eL.price, b, FLOOR)
700+ let eO = if ((eL.orderType == Buy))
701+ then $Tuple2(eM, -(eN))
702+ else $Tuple2(-(eM), eN)
703+ let eF = eO._1
704+ let eG = eO._2
642705 if (if (if (bc())
643706 then true
644707 else (bp == m))
645708 then true
646709 else (bp == n))
647710 then throw("Exchange operations disabled")
648- else if (if ((ey.assetPair.amountAsset != br))
711+ else if (if ((eL.assetPair.amountAsset != br))
649712 then true
650- else (ey.assetPair.priceAsset != bs))
713+ else (eL.assetPair.priceAsset != bs))
651714 then throw("Wrong order assets.")
652715 else {
653- let eC = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, aj), "0")), aU("invalid kLp"))
654- let eD = er(es, et, 0)
655- let eE = eD._1
656- let eF = eD._2
657- let eG = (eF >= eC)
658- let eH = makeString(["kLp=", toString(eC), " kLpNew=", toString(eF), " amountAssetBalance=", toString(en), " priceAssetBalance=", toString(eo), " amountAssetBalanceDelta=", toString(es), " priceAssetBalanceDelta=", toString(et), " height=", toString(height)], "")
659- $Tuple2(eG, eH)
716+ let eP = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, aj), "0")), aU("invalid kLp"))
717+ let eQ = eE(eF, eG, 0)
718+ let eR = eQ._1
719+ let eS = eQ._2
720+ let eT = (eS >= eP)
721+ let eU = makeString(["kLp=", toString(eP), " kLpNew=", toString(eS), " amountAssetBalance=", toString(eA), " priceAssetBalance=", toString(eB), " amountAssetBalanceDelta=", toString(eF), " priceAssetBalanceDelta=", toString(eG), " height=", toString(height)], "")
722+ $Tuple2(eT, eU)
660723 }
661724 }
662725
663726
664-func eI (eJ) = if ((size(eJ.payments) != 1))
727+func eV (eW) = if ((size(eW.payments) != 1))
665728 then throw("exactly 1 payment is expected")
666729 else {
667- let eK = value(eJ.payments[0])
668- let dc = value(eK.assetId)
669- let eL = eK.amount
670- let dN = da(toBase58String(eJ.transactionId), toBase58String(dc), eL, eJ.caller)
671- let dt = dN._1
672- let du = dN._2
673- let dh = parseIntValue(dN._9)
674- let dv = dN._10
730+ let eX = value(eW.payments[0])
731+ let dm = value(eX.assetId)
732+ let eY = eX.amount
733+ let ea = dk(toBase58String(eW.transactionId), toBase58String(dm), eY, eW.caller)
734+ let dD = ea._1
735+ let dE = ea._2
736+ let dr = parseIntValue(ea._9)
737+ let dI = ea._10
675738 if (if (bc())
676739 then true
677- else (dh == n))
678- then throw(("Get operation is blocked by admin. Status = " + toString(dh)))
679- else $Tuple5(dt, du, eL, dc, dv)
740+ else (dr == n))
741+ then throw(("Get operation is blocked by admin. Status = " + toString(dr)))
742+ else $Tuple5(dD, dE, eY, dm, dI)
680743 }
681744
682745
683-func eM (eJ,dx,dD) = if ((size(eJ.payments) != 2))
746+func eZ (eW,dK,dQ) = if ((size(eW.payments) != 2))
684747 then throw("exactly 2 payments are expected")
685748 else {
686- let eN = value(eJ.payments[0])
687- let eO = value(eJ.payments[1])
688- let eP = dw(toBase58String(eJ.transactionId), dx, eN.amount, eN.assetId, eO.amount, eO.assetId, toString(eJ.caller), false, dD)
689- let dh = parseIntValue(eP._8)
749+ let fa = value(eW.payments[0])
750+ let fb = value(eW.payments[1])
751+ let fc = dJ(toBase58String(eW.transactionId), dK, fa.amount, fa.assetId, fb.amount, fb.assetId, toString(eW.caller), false, dQ)
752+ let dr = parseIntValue(fc._8)
690753 if (if (if (bc())
691754 then true
692- else (dh == l))
755+ else (dr == l))
693756 then true
694- else (dh == n))
695- then throw(("Put operation is blocked by admin. Status = " + toString(dh)))
696- else eP
757+ else (dr == n))
758+ then throw(("Put operation is blocked by admin. Status = " + toString(dr)))
759+ else fc
697760 }
698761
699762
700-func eQ (bY) = {
701- let eR = invoke(aV, "emit", [bY], nil)
702- if ((eR == eR))
763+func fd (bY) = {
764+ let fe = invoke(aV, "emit", [bY], nil)
765+ if ((fe == fe))
703766 then {
704- let eS = {
705- let bV = eR
767+ let ff = {
768+ let bV = fe
706769 if ($isInstanceOf(bV, "Address"))
707770 then {
708- let eT = bV
709- invoke(eT, "emit", [bY], nil)
771+ let fg = bV
772+ invoke(fg, "emit", [bY], nil)
710773 }
711774 else unit
712775 }
713- if ((eS == eS))
776+ if ((ff == ff))
714777 then bY
715778 else throw("Strict value is not equal to itself.")
716779 }
717780 else throw("Strict value is not equal to itself.")
718781 }
719782
720783
721-func eU (bY,ai) = {
722- let eV = if ((ai == 0))
784+func fh (bY,ai) = {
785+ let fi = if ((ai == 0))
723786 then 0
724787 else fraction(bY, ai, b)
725- $Tuple2((bY - eV), eV)
788+ $Tuple2((bY - fi), fi)
726789 }
727790
728791
729-func eW (eX,eY,ab,ac) = {
730- let eZ = (ac == unit)
731- let fa = bN(bj(br))
732- let fb = bN(bj(bs))
733- let fc = if ((eY == br))
792+func fj (fk,fl,ab,ac) = {
793+ let fm = (ac == unit)
794+ let fn = bN(bj(br))
795+ let fo = bN(bj(bs))
796+ let fp = if ((fl == br))
734797 then true
735- else if ((eY == bs))
798+ else if ((fl == bs))
736799 then false
737800 else aS("invalid asset")
738- let fd = if (eZ)
739- then $Tuple2(fa, fb)
740- else if (fc)
741- then $Tuple2((fa - eX), fb)
742- else $Tuple2(fa, (fb - eX))
743- let fe = fd._1
744- let ff = fd._2
745- let fg = if (fc)
746- then $Tuple2(eX, 0)
747- else $Tuple2(0, eX)
748- let fh = fg._1
749- let fi = fg._2
750- let ez = eU(fh, aX)._1
751- let eA = eU(fi, aX)._1
752- let fj = eU(eX, aX)
753- let fk = fj._1
754- let eV = fj._2
755- let fl = (fe + ez)
756- let fm = (ff + eA)
757- let fn = bO(D(fm, bu), D(fl, bt))
758- let fo = H(fn, b)
759- let fp = if (fc)
760- then fe
761- else ff
762- let fq = toBigInt(fp)
763- let fr = toBigInt(valueOrErrorMessage(assetInfo(bq), (("asset " + toBase58String(bq)) + " doesn't exist")).quantity)
764- let fs = if ((fr > f))
801+ let fq = if (fm)
802+ then $Tuple2(fn, fo)
803+ else if (fp)
804+ then $Tuple2((fn - fk), fo)
805+ else $Tuple2(fn, (fo - fk))
806+ let fr = fq._1
807+ let fs = fq._2
808+ let ft = if (fp)
809+ then $Tuple2(fk, 0)
810+ else $Tuple2(0, fk)
811+ let fu = ft._1
812+ let fv = ft._2
813+ let eM = fh(fu, aX)._1
814+ let eN = fh(fv, aX)._1
815+ let fw = fh(fk, aX)
816+ let fx = fw._1
817+ let fi = fw._2
818+ let fy = (fr + eM)
819+ let fz = (fs + eN)
820+ let fA = bO(D(fz, bu), D(fy, bt))
821+ let fB = H(fA, b)
822+ let fC = if (fp)
823+ then fr
824+ else fs
825+ let fD = toBigInt(fC)
826+ let fE = toBigInt(valueOrErrorMessage(assetInfo(bq), (("asset " + toBase58String(bq)) + " doesn't exist")).quantity)
827+ let fF = if ((fE > f))
765828 then true
766829 else aS("initial deposit requires all coins")
767- if ((fs == fs))
830+ if ((fF == fF))
768831 then {
769- let ft = toBigInt(fk)
770- let fu = max([0, toInt(((fr * (sqrtBigInt((d + ((ft * d) / fq)), 18, 18, DOWN) - d)) / d))])
771- let ec = if (eZ)
832+ let fG = toBigInt(fx)
833+ let fH = max([0, toInt(((fE * (sqrtBigInt((d + ((fG * d) / fD)), 18, 18, DOWN) - d)) / d))])
834+ let ep = if (fm)
772835 then nil
773- else [IntegerEntry(W(), fo), IntegerEntry(X(height, lastBlock.timestamp), fo), StringEntry(aa(toString(value(ab)), toBase58String(value(ac))), by(fh, fi, fu, fo, 0, 0, height, lastBlock.timestamp, 0, 0))]
774- let fv = bO(D(ff, bu), D(fe, bt))
775- let fw = H(fv, b)
776- let fx = {
777- let fy = if (fc)
778- then $Tuple2(fh, fe)
779- else $Tuple2(fi, ff)
780- let bY = fy._1
781- let fz = fy._2
782- let fA = toInt(fraction(fr, toBigInt((bY / 2)), toBigInt(fz)))
783- fraction((fu - fA), b, fA)
836+ else [IntegerEntry(W(), fB), IntegerEntry(X(height, lastBlock.timestamp), fB), StringEntry(aa(toString(value(ab)), toBase58String(value(ac))), by(fu, fv, fH, fB, 0, 0, height, lastBlock.timestamp, 0, 0))]
837+ let fI = bO(D(fs, bu), D(fr, bt))
838+ let fJ = H(fI, b)
839+ let fK = {
840+ let fL = if (fp)
841+ then $Tuple2(fu, fr)
842+ else $Tuple2(fv, fs)
843+ let bY = fL._1
844+ let fM = fL._2
845+ let fN = toInt(fraction(fE, toBigInt((bY / 2)), toBigInt(fM)))
846+ fraction((fH - fN), b, fN)
784847 }
785- $Tuple5(fu, ec, eV, fx, fc)
848+ $Tuple5(fH, ep, fi, fK, fp)
786849 }
787850 else throw("Strict value is not equal to itself.")
788851 }
789852
790853
791-func fB (fC,fk,eY,ab,ac) = {
792- let eZ = (ac == unit)
793- let cR = be()
794- let cS = parseIntValue(cR[t])
795- let cT = parseIntValue(cR[u])
796- let fD = [if ((eY == bq))
854+func fO (fP,fx,fl,ab,ac) = {
855+ let fm = (ac == unit)
856+ let db = be()
857+ let dc = parseIntValue(db[t])
858+ let dd = parseIntValue(db[u])
859+ let fQ = [if ((fl == bq))
797860 then true
798861 else aS("invalid lp asset")]
799- if ((fD == fD))
862+ if ((fQ == fQ))
800863 then {
801- let fE = if ((fC == br))
864+ let fR = if ((fP == br))
802865 then true
803- else if ((fC == bs))
866+ else if ((fP == bs))
804867 then false
805868 else aS("invalid asset")
806- let fF = if (fE)
869+ let fS = if (fR)
807870 then toBigInt(bN(bj(br)))
808871 else toBigInt(bN(bj(bs)))
809- let fG = if (fE)
810- then cS
811- else cT
812- let fH = bN(bj(br))
813- let fI = bN(bj(bs))
814- let fJ = if (fE)
815- then fH
816- else fI
817- let fK = toBigInt(fJ)
818- let fr = toBigInt(valueOrErrorMessage(assetInfo(bq), (("asset " + toBase58String(bq)) + " doesn't exist")).quantity)
819- let fL = toBigInt(fk)
820- let fM = max([0, toInt(((fF * (d - pow((d - ((fL * d) / fr)), 18, h, 0, 18, DOWN))) / d))])
821- let fN = eU(fM, aZ)
822- let fO = fN._1
823- let eV = fN._2
824- let fP = if (fE)
825- then $Tuple4(fO, 0, (fH - fM), fI)
826- else $Tuple4(0, fO, fH, (fI - fM))
827- let fQ = fP._1
828- let fR = fP._2
829- let fS = fP._3
830- let fT = fP._4
831- let fn = bO(D(fT, bu), D(fS, bt))
832- let fo = H(fn, b)
833- let ec = if (eZ)
872+ let fT = if (fR)
873+ then dc
874+ else dd
875+ let fU = bN(bj(br))
876+ let fV = bN(bj(bs))
877+ let fW = if (fR)
878+ then fU
879+ else fV
880+ let fX = toBigInt(fW)
881+ let fE = toBigInt(valueOrErrorMessage(assetInfo(bq), (("asset " + toBase58String(bq)) + " doesn't exist")).quantity)
882+ let fY = toBigInt(fx)
883+ let fZ = max([0, toInt(((fS * (d - pow((d - ((fY * d) / fE)), 18, h, 0, 18, DOWN))) / d))])
884+ let ga = fh(fZ, aZ)
885+ let gb = ga._1
886+ let fi = ga._2
887+ let gc = if (fR)
888+ then $Tuple4(gb, 0, (fU - fZ), fV)
889+ else $Tuple4(0, gb, fU, (fV - fZ))
890+ let gd = gc._1
891+ let ge = gc._2
892+ let gf = gc._3
893+ let gg = gc._4
894+ let fA = bO(D(gg, bu), D(gf, bt))
895+ let fB = H(fA, b)
896+ let ep = if (fm)
834897 then nil
835- else [StringEntry(ad(toString(value(ab)), toBase58String(value(ac))), bJ(fQ, fR, fk, fo, height, lastBlock.timestamp)), IntegerEntry(W(), fo), IntegerEntry(X(height, lastBlock.timestamp), fo)]
836- let fv = bO(D(fI, bu), D(fH, bt))
837- let fw = H(fv, b)
838- let fx = {
839- let fU = (toInt(fraction(fF, fL, fr)) * 2)
840- fraction((fO - fU), b, fU)
898+ else [StringEntry(ad(toString(value(ab)), toBase58String(value(ac))), bJ(gd, ge, fx, fB, height, lastBlock.timestamp)), IntegerEntry(W(), fB), IntegerEntry(X(height, lastBlock.timestamp), fB)]
899+ let fI = bO(D(fV, bu), D(fU, bt))
900+ let fJ = H(fI, b)
901+ let fK = {
902+ let gh = (toInt(fraction(fS, fY, fE)) * 2)
903+ fraction((gb - gh), b, gh)
841904 }
842- $Tuple5(fO, ec, eV, fx, fE)
905+ $Tuple5(gb, ep, fi, fK, fR)
843906 }
844907 else throw("Strict value is not equal to itself.")
845908 }
846909
847910
848-func fV () = {
911+func gi () = {
849912 let bV = getString(U())
850913 if ($isInstanceOf(bV, "String"))
851914 then {
852- let fW = bV
853- fromBase58String(fW)
915+ let gj = bV
916+ fromBase58String(gj)
854917 }
855918 else if ($isInstanceOf(bV, "Unit"))
856919 then unit
857920 else throw("Match error")
858921 }
859922
860923
861-func fX () = {
924+func gk () = {
862925 let bV = getString(V())
863926 if ($isInstanceOf(bV, "String"))
864927 then {
865- let fW = bV
866- fromBase58String(fW)
928+ let gj = bV
929+ fromBase58String(gj)
867930 }
868931 else if ($isInstanceOf(bV, "Unit"))
869932 then unit
870933 else throw("Match error")
871934 }
872935
873936
874-func fY (eJ) = {
875- let bV = fV()
937+func gl (eW) = {
938+ let bV = gi()
876939 if ($isInstanceOf(bV, "ByteVector"))
877940 then {
878- let fZ = bV
879- (eJ.callerPublicKey == fZ)
941+ let gm = bV
942+ (eW.callerPublicKey == gm)
880943 }
881944 else if ($isInstanceOf(bV, "Unit"))
882- then (eJ.caller == this)
945+ then (eW.caller == this)
883946 else throw("Match error")
884947 }
885948
886949
887-func ga (eJ) = {
888- let gb = throw("Permission denied")
889- let bV = fV()
950+func gn (eW) = {
951+ let go = throw("Permission denied")
952+ let bV = gi()
890953 if ($isInstanceOf(bV, "ByteVector"))
891954 then {
892- let fZ = bV
893- if ((eJ.callerPublicKey == fZ))
955+ let gm = bV
956+ if ((eW.callerPublicKey == gm))
894957 then true
895- else gb
958+ else go
896959 }
897960 else if ($isInstanceOf(bV, "Unit"))
898- then if ((eJ.caller == this))
961+ then if ((eW.caller == this))
899962 then true
900- else gb
963+ else go
901964 else throw("Match error")
902965 }
903966
904967
905-@Callable(eJ)
906-func rebalance () = (cA(aO(this, ae())) ++ cA(aO(this, af())))
968+@Callable(eW)
969+func rebalance () = (cE(aO(this, ae())) ++ cE(aO(this, af())))
907970
908971
909972
910-@Callable(eJ)
911-func calculateAmountOutForSwapREADONLY (gc,gd,ge) = {
912- let gf = if ((gd == false))
973+@Callable(eW)
974+func calculateAmountOutForSwapREADONLY (gp,gq,gr) = {
975+ let gs = if ((gq == false))
913976 then {
914- let gg = aO(this, af())
915- let gh = aO(this, ae())
916- $Tuple2(gg, gh)
977+ let gt = aO(this, af())
978+ let gu = aO(this, ae())
979+ $Tuple2(gt, gu)
917980 }
918981 else {
919- let gg = aO(this, ae())
920- let gh = aO(this, af())
921- $Tuple2(gg, gh)
982+ let gt = aO(this, ae())
983+ let gu = aO(this, af())
984+ $Tuple2(gt, gu)
922985 }
923- let gg = gf._1
924- let gh = gf._2
925- let gi = bN(gh)
926- let gj = bN(gg)
927- let gk = fraction(gj, gc, (gi + gc))
928- let gl = (toBigInt(gi) * toBigInt(gj))
929- let gm = (((toBigInt(bN(gh)) + toBigInt(gc)) + toBigInt(ge)) * (toBigInt(bN(gg)) - toBigInt(gk)))
930- let gn = if ((gm >= gl))
986+ let gt = gs._1
987+ let gu = gs._2
988+ let gv = bN(gu)
989+ let gw = bN(gt)
990+ let gx = fraction(gw, gp, (gv + gp))
991+ let gy = (toBigInt(gv) * toBigInt(gw))
992+ let gz = (((toBigInt(bN(gu)) + toBigInt(gp)) + toBigInt(gr)) * (toBigInt(bN(gt)) - toBigInt(gx)))
993+ let gA = if ((gz >= gy))
931994 then true
932995 else throw("new K is fewer error")
933- if ((gn == gn))
934- then $Tuple2(nil, gk)
996+ if ((gA == gA))
997+ then $Tuple2(nil, gx)
935998 else throw("Strict value is not equal to itself.")
936999 }
9371000
9381001
9391002
940-@Callable(eJ)
941-func calculateAmountOutForSwapAndSendTokens (gc,gd,go,gp,ge) = {
942- let gq = {
1003+@Callable(eW)
1004+func calculateAmountOutForSwapAndSendTokens (gp,gq,gB,gC,gr) = {
1005+ let gD = {
9431006 let aY = invoke(aV, "getSwapContractREADONLY", nil, nil)
9441007 if ($isInstanceOf(aY, "String"))
9451008 then aY
9461009 else throw(($getType(aY) + " couldn't be cast to String"))
9471010 }
948- let fD = [if ((value(eJ.payments[0]).amount >= gc))
1011+ let fQ = [if ((value(eW.payments[0]).amount >= gp))
9491012 then true
950- else aS("Wrong amount"), if ((eJ.caller == addressFromStringValue(gq)))
1013+ else aS("Wrong amount"), if ((eW.caller == addressFromStringValue(gD)))
9511014 then true
9521015 else aS("Permission denied")]
953- if ((fD == fD))
1016+ if ((fQ == fQ))
9541017 then {
955- let eK = value(eJ.payments[0])
956- let gh = bj(eK.assetId)
957- let gg = if ((gd == false))
1018+ let eX = value(eW.payments[0])
1019+ let gu = bj(eX.assetId)
1020+ let gt = if ((gq == false))
9581021 then aO(this, af())
9591022 else aO(this, ae())
960- let gi = (bN(gh) - value(eJ.payments[0]).amount)
961- let gj = bN(gg)
962- let gk = fraction(gj, gc, (gi + gc))
963- let gl = (toBigInt(gi) * toBigInt(gj))
964- let gm = ((toBigInt(bN(gh)) + toBigInt(ge)) * (toBigInt(bN(gg)) - toBigInt(gk)))
965- let gn = if ((gm >= gl))
1023+ let gv = (bN(gu) - value(eW.payments[0]).amount)
1024+ let gw = bN(gt)
1025+ let gx = fraction(gw, gp, (gv + gp))
1026+ let gy = (toBigInt(gv) * toBigInt(gw))
1027+ let gz = ((toBigInt(bN(gu)) + toBigInt(gr)) * (toBigInt(bN(gt)) - toBigInt(gx)))
1028+ let gA = if ((gz >= gy))
9661029 then true
9671030 else throw("new K is fewer error")
968- if ((gn == gn))
1031+ if ((gA == gA))
9691032 then {
970- let gr = if ((gk >= go))
1033+ let gE = if ((gx >= gB))
9711034 then true
9721035 else throw("Exchange result is fewer coins than expected")
973- if ((gr == gr))
1036+ if ((gE == gE))
9741037 then {
975- let gs = {
976- let bV = co(gg)
1038+ let gF = {
1039+ let bV = cs(gt)
9771040 if ($isInstanceOf(bV, "(Boolean, Int, Int, String, String, Int, String)"))
9781041 then {
979- let cB = bV
980- cB
1042+ let cF = bV
1043+ cF
9811044 }
9821045 else throw("error lease config")
9831046 }
984- let gt = gs
985- let cD = gt._1
986- let cE = gt._2
987- let cr = gt._3
988- let cF = gt._4
989- let cG = gt._5
990- let ci = gt._6
991- let cH = gt._7
992- let gu = assetBalance(this, fromBase58String(gg))
993- let gv = if (if ((gg == "WAVES"))
994- then (gk > gu)
995- else false)
1047+ let gG = cO(gt, gx)
1048+ if ((gG == gG))
9961049 then {
997- let gw = (gk - gu)
998- let gx = (at(gg) / au(ba()))
999- let gy = wavesBalance(this).available
1000- let gz = invoke(this, "withdraw", [gg, gw, ba(), bb(), ci], nil)
1001- if ((gz == gz))
1002- then {
1003- let gA = wavesBalance(this).available
1004- let gB = (gA - gy)
1005- (gB - gw)
1006- }
1050+ let dH = invoke(this, "rebalance", nil, nil)
1051+ if ((dH == dH))
1052+ then $Tuple2((gG ++ [ScriptTransfer(addressFromStringValue(gC), gx, bh(gt))]), gx)
10071053 else throw("Strict value is not equal to itself.")
10081054 }
1009- else 0
1010- let gC = invoke(this, "rebalance", nil, nil)
1011- if ((gC == gC))
1012- then $Tuple2([ScriptTransfer(addressFromStringValue(cH), gv, unit), ScriptTransfer(addressFromStringValue(gp), gk, bh(gg))], gk)
10131055 else throw("Strict value is not equal to itself.")
10141056 }
10151057 else throw("Strict value is not equal to itself.")
10161058 }
10171059 else throw("Strict value is not equal to itself.")
10181060 }
10191061 else throw("Strict value is not equal to itself.")
10201062 }
10211063
10221064
10231065
1024-@Callable(eJ)
1025-func setManager (gD) = {
1026- let gE = ga(eJ)
1027- if ((gE == gE))
1066+@Callable(eW)
1067+func setManager (gH) = {
1068+ let gI = gn(eW)
1069+ if ((gI == gI))
10281070 then {
1029- let gF = fromBase58String(gD)
1030- if ((gF == gF))
1031- then [StringEntry(V(), gD)]
1071+ let gJ = fromBase58String(gH)
1072+ if ((gJ == gJ))
1073+ then [StringEntry(V(), gH)]
10321074 else throw("Strict value is not equal to itself.")
10331075 }
10341076 else throw("Strict value is not equal to itself.")
10351077 }
10361078
10371079
10381080
1039-@Callable(eJ)
1081+@Callable(eW)
10401082 func confirmManager () = {
1041- let gG = fX()
1042- let gH = if (isDefined(gG))
1083+ let gK = gk()
1084+ let gL = if (isDefined(gK))
10431085 then true
10441086 else throw("No pending manager")
1045- if ((gH == gH))
1087+ if ((gL == gL))
10461088 then {
1047- let gI = if ((eJ.callerPublicKey == value(gG)))
1089+ let gM = if ((eW.callerPublicKey == value(gK)))
10481090 then true
10491091 else throw("You are not pending manager")
1050- if ((gI == gI))
1051- then [StringEntry(U(), toBase58String(value(gG))), DeleteEntry(V())]
1092+ if ((gM == gM))
1093+ then [StringEntry(U(), toBase58String(value(gK))), DeleteEntry(V())]
10521094 else throw("Strict value is not equal to itself.")
10531095 }
10541096 else throw("Strict value is not equal to itself.")
10551097 }
10561098
10571099
10581100
1059-@Callable(eJ)
1060-func put (dx,gJ) = if ((0 > dx))
1101+@Callable(eW)
1102+func put (dK,gN) = if ((0 > dK))
10611103 then throw("Invalid slippageTolerance passed")
10621104 else {
1063- let eP = eM(eJ, dx, true)
1064- let dZ = eP._2
1065- let de = eP._7
1066- let dv = eP._9
1067- let ea = eP._10
1068- let eb = eP._11
1069- let gK = eP._12
1070- let gL = eP._13
1071- let eN = toBigInt(value(eJ.payments[0]).amount)
1072- let eO = toBigInt(value(eJ.payments[1]).amount)
1073- let eq = ej(eN, eO, toBigInt(0))
1074- if ((eq == eq))
1105+ let fc = eZ(eW, dK, true)
1106+ let em = fc._2
1107+ let do = fc._7
1108+ let dI = fc._9
1109+ let en = fc._10
1110+ let eo = fc._11
1111+ let gO = fc._12
1112+ let gP = fc._13
1113+ let fa = toBigInt(value(eW.payments[0]).amount)
1114+ let fb = toBigInt(value(eW.payments[1]).amount)
1115+ let eD = ew(fa, fb, toBigInt(0))
1116+ if ((eD == eD))
10751117 then {
1076- let eR = invoke(aV, "emit", [dZ], nil)
1077- if ((eR == eR))
1118+ let fe = invoke(aV, "emit", [em], nil)
1119+ if ((fe == fe))
10781120 then {
1079- let eS = {
1080- let bV = eR
1121+ let ff = {
1122+ let bV = fe
10811123 if ($isInstanceOf(bV, "Address"))
10821124 then {
1083- let eT = bV
1084- invoke(eT, "emit", [dZ], nil)
1125+ let fg = bV
1126+ invoke(fg, "emit", [em], nil)
10851127 }
10861128 else unit
10871129 }
1088- if ((eS == eS))
1130+ if ((ff == ff))
10891131 then {
1090- let gM = if ((ea > 0))
1091- then invoke(bx, "put", nil, [AttachedPayment(gK, ea)])
1132+ let gQ = if ((en > 0))
1133+ then invoke(bx, "put", nil, [AttachedPayment(gO, en)])
10921134 else nil
1093- if ((gM == gM))
1135+ if ((gQ == gQ))
10941136 then {
1095- let gN = if ((eb > 0))
1096- then invoke(bx, "put", nil, [AttachedPayment(gL, eb)])
1137+ let gR = if ((eo > 0))
1138+ then invoke(bx, "put", nil, [AttachedPayment(gP, eo)])
10971139 else nil
1098- if ((gN == gN))
1140+ if ((gR == gR))
10991141 then {
1100- let gO = if (gJ)
1142+ let gS = if (gN)
11011143 then {
1102- let gP = invoke(bw, "stake", nil, [AttachedPayment(de, dZ)])
1103- if ((gP == gP))
1144+ let gT = invoke(bw, "stake", nil, [AttachedPayment(do, em)])
1145+ if ((gT == gT))
11041146 then nil
11051147 else throw("Strict value is not equal to itself.")
11061148 }
1107- else [ScriptTransfer(eJ.caller, dZ, de)]
1108- let gQ = er(0, 0, 0)
1109- if ((gQ == gQ))
1149+ else [ScriptTransfer(eW.caller, em, do)]
1150+ let gU = eE(0, 0, 0)
1151+ if ((gU == gU))
11101152 then {
1111- let ei = gQ._2
1112- let gR = gQ._1
1113- let gS = ev(eq, ei)
1114- if ((gS == gS))
1115- then ((dv ++ gO) ++ gR)
1153+ let ev = gU._2
1154+ let gV = gU._1
1155+ let gW = eI(eD, ev)
1156+ if ((gW == gW))
1157+ then ((dI ++ gS) ++ gV)
11161158 else throw("Strict value is not equal to itself.")
11171159 }
11181160 else throw("Strict value is not equal to itself.")
11191161 }
11201162 else throw("Strict value is not equal to itself.")
11211163 }
11221164 else throw("Strict value is not equal to itself.")
11231165 }
11241166 else throw("Strict value is not equal to itself.")
11251167 }
11261168 else throw("Strict value is not equal to itself.")
11271169 }
11281170 else throw("Strict value is not equal to itself.")
11291171 }
11301172
11311173
11321174
1133-@Callable(eJ)
1134-func putForFree (gT) = if ((0 > gT))
1175+@Callable(eW)
1176+func putForFree (gX) = if ((0 > gX))
11351177 then throw("Invalid value passed")
11361178 else {
1137- let eP = eM(eJ, gT, false)
1138- let dv = eP._9
1139- let eN = toBigInt(value(eJ.payments[0]).amount)
1140- let eO = toBigInt(value(eJ.payments[1]).amount)
1141- let eq = ej(eN, eO, toBigInt(0))
1142- if ((eq == eq))
1179+ let fc = eZ(eW, gX, false)
1180+ let dI = fc._9
1181+ let fa = toBigInt(value(eW.payments[0]).amount)
1182+ let fb = toBigInt(value(eW.payments[1]).amount)
1183+ let eD = ew(fa, fb, toBigInt(0))
1184+ if ((eD == eD))
11431185 then {
1144- let gU = er(0, 0, 0)
1145- let gR = gU._1
1146- let ei = gU._2
1147- let gS = ev(eq, ei)
1148- if ((gS == gS))
1149- then (dv ++ gR)
1186+ let gY = eE(0, 0, 0)
1187+ let gV = gY._1
1188+ let ev = gY._2
1189+ let gW = eI(eD, ev)
1190+ if ((gW == gW))
1191+ then (dI ++ gV)
11501192 else throw("Strict value is not equal to itself.")
11511193 }
11521194 else throw("Strict value is not equal to itself.")
11531195 }
11541196
11551197
11561198
1157-@Callable(eJ)
1158-func putOneTkn (gV,gW) = {
1159- let gX = {
1199+@Callable(eW)
1200+func putOneTkn (gZ,ha) = {
1201+ let hb = {
11601202 let aY = invoke(aV, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
11611203 if ($isInstanceOf(aY, "Boolean"))
11621204 then aY
11631205 else throw(($getType(aY) + " couldn't be cast to Boolean"))
11641206 }
1165- let gY = if (if (if (bc())
1207+ let hc = if (if (if (bc())
11661208 then true
11671209 else (bp == l))
11681210 then true
11691211 else (bp == n))
11701212 then true
1171- else gX
1172- let fD = [if (if (!(gY))
1213+ else hb
1214+ let fQ = [if (if (!(hc))
11731215 then true
1174- else fY(eJ))
1216+ else gl(eW))
11751217 then true
1176- else aS("put operation is blocked by admin"), if ((size(eJ.payments) == 1))
1218+ else aS("put operation is blocked by admin"), if ((size(eW.payments) == 1))
11771219 then true
11781220 else aS("exactly 1 payment are expected")]
1179- if ((fD == fD))
1221+ if ((fQ == fQ))
11801222 then {
1181- let gZ = eJ.payments[0]
1182- let eY = gZ.assetId
1183- let eX = gZ.amount
1184- let eq = if ((eY == br))
1185- then ej(toBigInt(eX), toBigInt(0), toBigInt(0))
1186- else if ((eY == bs))
1187- then ej(toBigInt(0), toBigInt(eX), toBigInt(0))
1223+ let hd = eW.payments[0]
1224+ let fl = hd.assetId
1225+ let fk = hd.amount
1226+ let eD = if ((fl == br))
1227+ then ew(toBigInt(fk), toBigInt(0), toBigInt(0))
1228+ else if ((fl == bs))
1229+ then ew(toBigInt(0), toBigInt(fk), toBigInt(0))
11881230 else aS("payment asset is not supported")
1189- if ((eq == eq))
1231+ if ((eD == eD))
11901232 then {
1191- let ab = eJ.caller
1192- let ac = eJ.transactionId
1193- let ha = eW(eX, eY, ab, ac)
1194- if ((ha == ha))
1233+ let ab = eW.caller
1234+ let ac = eW.transactionId
1235+ let he = fj(fk, fl, ab, ac)
1236+ if ((he == he))
11951237 then {
1196- let fc = ha._5
1197- let hb = ha._4
1198- let eV = ha._3
1199- let ec = ha._2
1200- let hc = ha._1
1201- let hd = if (if ((gV > 0))
1202- then (gV > hc)
1238+ let fp = he._5
1239+ let hf = he._4
1240+ let fi = he._3
1241+ let ep = he._2
1242+ let hg = he._1
1243+ let hh = if (if ((gZ > 0))
1244+ then (gZ > hg)
12031245 else false)
1204- then aS(makeString(["amount to receive is less than ", toString(gV)], ""))
1205- else hc
1206- let eR = eQ(hd)
1207- if ((eR == eR))
1246+ then aS(makeString(["amount to receive is less than ", toString(gZ)], ""))
1247+ else hg
1248+ let fe = fd(hh)
1249+ if ((fe == fe))
12081250 then {
1209- let gO = if (gW)
1251+ let gS = if (ha)
12101252 then {
1211- let he = invoke(bw, "stake", nil, [AttachedPayment(bq, hd)])
1212- if ((he == he))
1253+ let hi = invoke(bw, "stake", nil, [AttachedPayment(bq, hh)])
1254+ if ((hi == hi))
12131255 then nil
12141256 else throw("Strict value is not equal to itself.")
12151257 }
1216- else [ScriptTransfer(eJ.caller, hd, bq)]
1217- let hf = if ((eV > 0))
1218- then [ScriptTransfer(aW, eV, eY)]
1258+ else [ScriptTransfer(eW.caller, hh, bq)]
1259+ let hj = if ((fi > 0))
1260+ then [ScriptTransfer(aW, fi, fl)]
12191261 else nil
1220- let hg = if ((this == aW))
1262+ let hk = if ((this == aW))
12211263 then $Tuple2(0, 0)
1222- else if (fc)
1223- then $Tuple2(-(eV), 0)
1224- else $Tuple2(0, -(eV))
1225- let es = hg._1
1226- let et = hg._2
1227- let hh = er(es, et, 0)
1228- let gR = hh._1
1229- let ei = hh._2
1230- let eC = value(getString(aj))
1231- let gS = ev(eq, ei)
1232- if ((gS == gS))
1264+ else if (fp)
1265+ then $Tuple2(-(fi), 0)
1266+ else $Tuple2(0, -(fi))
1267+ let eF = hk._1
1268+ let eG = hk._2
1269+ let hl = eE(eF, eG, 0)
1270+ let gV = hl._1
1271+ let ev = hl._2
1272+ let eP = value(getString(aj))
1273+ let gW = eI(eD, ev)
1274+ if ((gW == gW))
12331275 then {
1234- let gC = invoke(this, "rebalance", nil, nil)
1235- if ((gC == gC))
1236- then $Tuple2((((ec ++ gO) ++ hf) ++ gR), hd)
1276+ let dH = invoke(this, "rebalance", nil, nil)
1277+ if ((dH == dH))
1278+ then $Tuple2((((ep ++ gS) ++ hj) ++ gV), hh)
12371279 else throw("Strict value is not equal to itself.")
12381280 }
12391281 else throw("Strict value is not equal to itself.")
12401282 }
12411283 else throw("Strict value is not equal to itself.")
12421284 }
12431285 else throw("Strict value is not equal to itself.")
12441286 }
12451287 else throw("Strict value is not equal to itself.")
12461288 }
12471289 else throw("Strict value is not equal to itself.")
12481290 }
12491291
12501292
12511293
1252-@Callable(eJ)
1253-func putOneTknREADONLY (eY,eX) = {
1254- let hi = eW(eX, bh(eY), unit, unit)
1255- let hc = hi._1
1256- let ec = hi._2
1257- let eV = hi._3
1258- let hb = hi._4
1259- let fc = hi._5
1260- $Tuple2(nil, $Tuple3(hc, eV, hb))
1294+@Callable(eW)
1295+func putOneTknREADONLY (fl,fk) = {
1296+ let hm = fj(fk, bh(fl), unit, unit)
1297+ let hg = hm._1
1298+ let ep = hm._2
1299+ let fi = hm._3
1300+ let hf = hm._4
1301+ let fp = hm._5
1302+ $Tuple2(nil, $Tuple3(hg, fi, hf))
12611303 }
12621304
12631305
12641306
1265-@Callable(eJ)
1266-func getOneTkn (hj,gV) = {
1267- let gX = {
1307+@Callable(eW)
1308+func getOneTkn (hn,gZ) = {
1309+ let hb = {
12681310 let aY = invoke(aV, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
12691311 if ($isInstanceOf(aY, "Boolean"))
12701312 then aY
12711313 else throw(($getType(aY) + " couldn't be cast to Boolean"))
12721314 }
1273- let hk = if (if (bc())
1315+ let ho = if (if (bc())
12741316 then true
12751317 else (bp == n))
12761318 then true
1277- else gX
1278- let fD = [if (if (!(hk))
1319+ else hb
1320+ let fQ = [if (if (!(ho))
12791321 then true
1280- else fY(eJ))
1322+ else gl(eW))
12811323 then true
1282- else aS("get operation is blocked by admin"), if ((size(eJ.payments) == 1))
1324+ else aS("get operation is blocked by admin"), if ((size(eW.payments) == 1))
12831325 then true
12841326 else aS("exactly 1 payment are expected")]
1285- if ((fD == fD))
1327+ if ((fQ == fQ))
12861328 then {
1287- let fC = bh(hj)
1288- let gZ = eJ.payments[0]
1289- let eY = gZ.assetId
1290- let fk = gZ.amount
1291- let eq = ej(toBigInt(0), toBigInt(0), toBigInt(0))
1292- if ((eq == eq))
1329+ let fP = bh(hn)
1330+ let hd = eW.payments[0]
1331+ let fl = hd.assetId
1332+ let fx = hd.amount
1333+ let eD = ew(toBigInt(0), toBigInt(0), toBigInt(0))
1334+ if ((eD == eD))
12931335 then {
1294- let ab = eJ.caller
1295- let ac = eJ.transactionId
1296- let hl = fB(fC, fk, eY, ab, ac)
1297- if ((hl == hl))
1336+ let ab = eW.caller
1337+ let ac = eW.transactionId
1338+ let hp = fO(fP, fx, fl, ab, ac)
1339+ if ((hp == hp))
12981340 then {
1299- let fE = hl._5
1300- let hb = hl._4
1301- let eV = hl._3
1302- let ec = hl._2
1303- let hm = hl._1
1304- let bY = if (if ((gV > 0))
1305- then (gV > hm)
1341+ let fR = hp._5
1342+ let hf = hp._4
1343+ let fi = hp._3
1344+ let ep = hp._2
1345+ let hq = hp._1
1346+ let bY = if (if ((gZ > 0))
1347+ then (gZ > hq)
13061348 else false)
1307- then aS(makeString(["amount to receive is less than ", toString(gV)], ""))
1308- else hm
1309- let gs = {
1310- let bV = co(hj)
1349+ then aS(makeString(["amount to receive is less than ", toString(gZ)], ""))
1350+ else hq
1351+ let gF = {
1352+ let bV = cs(hn)
13111353 if ($isInstanceOf(bV, "(Boolean, Int, Int, String, String, Int, String)"))
13121354 then {
1313- let cB = bV
1314- cB
1355+ let cF = bV
1356+ cF
13151357 }
13161358 else throw("error lease config")
13171359 }
1318- let hn = gs
1319- let cD = hn._1
1320- let cE = hn._2
1321- let cr = hn._3
1322- let cF = hn._4
1323- let cG = hn._5
1324- let ci = hn._6
1325- let cH = hn._7
1326- let gu = assetBalance(this, fromBase58String(hj))
1327- let gv = if (if ((hj == "WAVES"))
1328- then (bY > gu)
1329- else false)
1360+ let hr = invoke(aV, "burn", [fx], [AttachedPayment(fl, fx)])
1361+ if ((hr == hr))
13301362 then {
1331- let gw = (bY - gu)
1332- let gx = (at(hj) / au(ba()))
1333- let gy = wavesBalance(this).available
1334- let gz = invoke(this, "withdraw", [hj, gw, ba(), bb(), ci], nil)
1335- if ((gz == gz))
1363+ let gG = cO(hn, bY)
1364+ if ((gG == gG))
13361365 then {
1337- let gA = wavesBalance(this).available
1338- let gB = (gA - gy)
1339- (gB - gw)
1340- }
1341- else throw("Strict value is not equal to itself.")
1342- }
1343- else 0
1344- let ho = [ScriptTransfer(addressFromStringValue(cH), gv, unit)]
1345- let hp = invoke(aV, "burn", [fk], [AttachedPayment(eY, fk)])
1346- if ((hp == hp))
1347- then {
1348- let hq = [ScriptTransfer(ab, bY, fC)]
1349- let hf = if ((eV > 0))
1350- then [ScriptTransfer(aW, eV, fC)]
1351- else nil
1352- let hr = {
1353- let hs = if ((this == aW))
1354- then 0
1355- else eV
1356- if (fE)
1357- then $Tuple2(-((bY + hs)), 0)
1358- else $Tuple2(0, -((bY + hs)))
1359- }
1360- let es = hr._1
1361- let et = hr._2
1362- let ht = er(es, et, 0)
1363- let gR = ht._1
1364- let ei = ht._2
1365- let gS = ev(eq, ei)
1366- if ((gS == gS))
1367- then {
1368- let gC = invoke(this, "rebalance", nil, nil)
1369- if ((gC == gC))
1370- then $Tuple2(((((ec ++ hq) ++ ho) ++ hf) ++ gR), bY)
1366+ let hs = [ScriptTransfer(ab, bY, fP)]
1367+ let hj = if ((fi > 0))
1368+ then [ScriptTransfer(aW, fi, fP)]
1369+ else nil
1370+ let ht = {
1371+ let hu = if ((this == aW))
1372+ then 0
1373+ else fi
1374+ if (fR)
1375+ then $Tuple2(-((bY + hu)), 0)
1376+ else $Tuple2(0, -((bY + hu)))
1377+ }
1378+ let eF = ht._1
1379+ let eG = ht._2
1380+ let hv = eE(eF, eG, 0)
1381+ let gV = hv._1
1382+ let ev = hv._2
1383+ let gW = eI(eD, ev)
1384+ if ((gW == gW))
1385+ then {
1386+ let dH = invoke(this, "rebalance", nil, nil)
1387+ if ((dH == dH))
1388+ then $Tuple2((((ep ++ hs) ++ hj) ++ gV), bY)
1389+ else throw("Strict value is not equal to itself.")
1390+ }
13711391 else throw("Strict value is not equal to itself.")
13721392 }
13731393 else throw("Strict value is not equal to itself.")
13741394 }
13751395 else throw("Strict value is not equal to itself.")
13761396 }
13771397 else throw("Strict value is not equal to itself.")
13781398 }
13791399 else throw("Strict value is not equal to itself.")
13801400 }
13811401 else throw("Strict value is not equal to itself.")
13821402 }
13831403
13841404
13851405
1386-@Callable(eJ)
1387-func getOneTknREADONLY (fC,fk) = {
1388- let hu = fB(bh(fC), fk, bq, unit, unit)
1389- let hm = hu._1
1390- let ec = hu._2
1391- let eV = hu._3
1392- let hb = hu._4
1393- let fE = hu._5
1394- $Tuple2(nil, $Tuple3(hm, eV, hb))
1406+@Callable(eW)
1407+func getOneTknREADONLY (fP,fx) = {
1408+ let hw = fO(bh(fP), fx, bq, unit, unit)
1409+ let hq = hw._1
1410+ let ep = hw._2
1411+ let fi = hw._3
1412+ let hf = hw._4
1413+ let fR = hw._5
1414+ $Tuple2(nil, $Tuple3(hq, fi, hf))
13951415 }
13961416
13971417
13981418
1399-@Callable(eJ)
1400-func unstakeAndGetOneTkn (hv,hj,gV) = {
1401- let gX = {
1419+@Callable(eW)
1420+func unstakeAndGetOneTkn (hx,hn,gZ) = {
1421+ let hb = {
14021422 let aY = invoke(aV, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
14031423 if ($isInstanceOf(aY, "Boolean"))
14041424 then aY
14051425 else throw(($getType(aY) + " couldn't be cast to Boolean"))
14061426 }
1407- let hk = if (if (bc())
1427+ let ho = if (if (bc())
14081428 then true
14091429 else (bp == n))
14101430 then true
1411- else gX
1412- let fD = [if (if (!(hk))
1431+ else hb
1432+ let fQ = [if (if (!(ho))
14131433 then true
1414- else fY(eJ))
1434+ else gl(eW))
14151435 then true
1416- else aS("get operation is blocked by admin"), if ((size(eJ.payments) == 0))
1436+ else aS("get operation is blocked by admin"), if ((size(eW.payments) == 0))
14171437 then true
14181438 else aS("no payments are expected")]
1419- if ((fD == fD))
1439+ if ((fQ == fQ))
14201440 then {
1421- let fC = bh(hj)
1422- let ab = eJ.caller
1423- let ac = eJ.transactionId
1424- let eq = ej(toBigInt(0), toBigInt(0), toBigInt(0))
1425- if ((eq == eq))
1441+ let fP = bh(hn)
1442+ let ab = eW.caller
1443+ let ac = eW.transactionId
1444+ let eD = ew(toBigInt(0), toBigInt(0), toBigInt(0))
1445+ if ((eD == eD))
14261446 then {
1427- let hw = invoke(bw, "unstake", [toBase58String(bq), hv], nil)
1428- if ((hw == hw))
1447+ let hy = invoke(bw, "unstake", [toBase58String(bq), hx], nil)
1448+ if ((hy == hy))
14291449 then {
1430- let hx = fB(fC, hv, bq, ab, ac)
1431- if ((hx == hx))
1450+ let hz = fO(fP, hx, bq, ab, ac)
1451+ if ((hz == hz))
14321452 then {
1433- let fE = hx._5
1434- let hb = hx._4
1435- let eV = hx._3
1436- let ec = hx._2
1437- let hm = hx._1
1438- let bY = if (if ((gV > 0))
1439- then (gV > hm)
1453+ let fR = hz._5
1454+ let hf = hz._4
1455+ let fi = hz._3
1456+ let ep = hz._2
1457+ let hq = hz._1
1458+ let bY = if (if ((gZ > 0))
1459+ then (gZ > hq)
14401460 else false)
1441- then aS(makeString(["amount to receive is less than ", toString(gV)], ""))
1442- else hm
1443- let hp = invoke(aV, "burn", [hv], [AttachedPayment(bq, hv)])
1444- if ((hp == hp))
1461+ then aS(makeString(["amount to receive is less than ", toString(gZ)], ""))
1462+ else hq
1463+ let hr = invoke(aV, "burn", [hx], [AttachedPayment(bq, hx)])
1464+ if ((hr == hr))
14451465 then {
1446- let hq = [ScriptTransfer(eJ.caller, bY, fC)]
1447- let hf = if ((eV > 0))
1448- then [ScriptTransfer(aW, eV, fC)]
1449- else nil
1450- let hy = {
1451- let hs = if ((this == aW))
1452- then 0
1453- else eV
1454- if (fE)
1455- then $Tuple2(-((bY + hs)), 0)
1456- else $Tuple2(0, -((bY + hs)))
1457- }
1458- let es = hy._1
1459- let et = hy._2
1460- let hz = er(es, et, 0)
1461- let gR = hz._1
1462- let ei = hz._2
1463- let gS = ev(eq, ei)
1464- if ((gS == gS))
1465- then $Tuple2((((ec ++ hq) ++ hf) ++ gR), bY)
1466+ let gG = cO(hn, bY)
1467+ if ((gG == gG))
1468+ then {
1469+ let hs = [ScriptTransfer(eW.caller, bY, fP)]
1470+ let hj = if ((fi > 0))
1471+ then [ScriptTransfer(aW, fi, fP)]
1472+ else nil
1473+ let hA = {
1474+ let hu = if ((this == aW))
1475+ then 0
1476+ else fi
1477+ if (fR)
1478+ then $Tuple2(-((bY + hu)), 0)
1479+ else $Tuple2(0, -((bY + hu)))
1480+ }
1481+ let eF = hA._1
1482+ let eG = hA._2
1483+ let hB = eE(eF, eG, 0)
1484+ let gV = hB._1
1485+ let ev = hB._2
1486+ let gW = eI(eD, ev)
1487+ if ((gW == gW))
1488+ then {
1489+ let dH = invoke(this, "rebalance", nil, nil)
1490+ if ((dH == dH))
1491+ then $Tuple2(((((ep ++ gG) ++ hs) ++ hj) ++ gV), bY)
1492+ else throw("Strict value is not equal to itself.")
1493+ }
1494+ else throw("Strict value is not equal to itself.")
1495+ }
14661496 else throw("Strict value is not equal to itself.")
14671497 }
14681498 else throw("Strict value is not equal to itself.")
14691499 }
14701500 else throw("Strict value is not equal to itself.")
14711501 }
14721502 else throw("Strict value is not equal to itself.")
14731503 }
14741504 else throw("Strict value is not equal to itself.")
14751505 }
14761506 else throw("Strict value is not equal to itself.")
14771507 }
14781508
14791509
14801510
1481-@Callable(eJ)
1511+@Callable(eW)
14821512 func get () = {
1483- let dN = eI(eJ)
1484- let hA = dN._1
1485- let du = dN._2
1486- let eL = dN._3
1487- let dc = dN._4
1488- let dv = dN._5
1489- let eq = ej(toBigInt(0), toBigInt(0), toBigInt(0))
1490- if ((eq == eq))
1513+ let ea = eV(eW)
1514+ let hC = ea._1
1515+ let dE = ea._2
1516+ let eY = ea._3
1517+ let dm = ea._4
1518+ let dI = ea._5
1519+ let eD = ew(toBigInt(0), toBigInt(0), toBigInt(0))
1520+ if ((eD == eD))
14911521 then {
1492- let hB = invoke(aV, "burn", [eL], [AttachedPayment(dc, eL)])
1493- if ((hB == hB))
1522+ let hD = invoke(aV, "burn", [eY], [AttachedPayment(dm, eY)])
1523+ if ((hD == hD))
14941524 then {
1495- let hC = er(-(hA), -(du), 0)
1496- let gR = hC._1
1497- let ei = hC._2
1498- let gS = ev(eq, ei)
1499- if ((gS == gS))
1500- then (dv ++ gR)
1525+ let hE = eE(-(hC), -(dE), 0)
1526+ let gV = hE._1
1527+ let ev = hE._2
1528+ let gW = eI(eD, ev)
1529+ if ((gW == gW))
1530+ then (dI ++ gV)
15011531 else throw("Strict value is not equal to itself.")
15021532 }
15031533 else throw("Strict value is not equal to itself.")
15041534 }
15051535 else throw("Strict value is not equal to itself.")
15061536 }
15071537
15081538
15091539
1510-@Callable(eJ)
1511-func getNoLess (hD,hE) = {
1512- let dN = eI(eJ)
1513- let dt = dN._1
1514- let du = dN._2
1515- let eL = dN._3
1516- let dc = dN._4
1517- let dv = dN._5
1518- if ((hD > dt))
1519- then throw(((("noLessThenAmtAsset failed: " + toString(dt)) + " < ") + toString(hD)))
1520- else if ((hE > du))
1521- then throw(((("noLessThenPriceAsset failed: " + toString(du)) + " < ") + toString(hE)))
1540+@Callable(eW)
1541+func getNoLess (hF,hG) = {
1542+ let ea = eV(eW)
1543+ let dD = ea._1
1544+ let dE = ea._2
1545+ let eY = ea._3
1546+ let dm = ea._4
1547+ let dI = ea._5
1548+ if ((hF > dD))
1549+ then throw(((("noLessThenAmtAsset failed: " + toString(dD)) + " < ") + toString(hF)))
1550+ else if ((hG > dE))
1551+ then throw(((("noLessThenPriceAsset failed: " + toString(dE)) + " < ") + toString(hG)))
15221552 else {
1523- let eq = ej(toBigInt(0), toBigInt(0), toBigInt(0))
1524- if ((eq == eq))
1553+ let eD = ew(toBigInt(0), toBigInt(0), toBigInt(0))
1554+ if ((eD == eD))
15251555 then {
1526- let hB = invoke(aV, "burn", [eL], [AttachedPayment(dc, eL)])
1527- if ((hB == hB))
1556+ let hD = invoke(aV, "burn", [eY], [AttachedPayment(dm, eY)])
1557+ if ((hD == hD))
15281558 then {
1529- let hF = er(-(dt), -(du), 0)
1530- let gR = hF._1
1531- let ei = hF._2
1532- let gS = ev(eq, ei)
1533- if ((gS == gS))
1534- then (dv ++ gR)
1559+ let hH = eE(-(dD), -(dE), 0)
1560+ let gV = hH._1
1561+ let ev = hH._2
1562+ let gW = eI(eD, ev)
1563+ if ((gW == gW))
1564+ then (dI ++ gV)
15351565 else throw("Strict value is not equal to itself.")
15361566 }
15371567 else throw("Strict value is not equal to itself.")
15381568 }
15391569 else throw("Strict value is not equal to itself.")
15401570 }
15411571 }
15421572
15431573
15441574
1545-@Callable(eJ)
1575+@Callable(eW)
15461576 func unstakeAndGet (bY) = {
1547- let hG = if ((size(eJ.payments) != 0))
1577+ let hI = if ((size(eW.payments) != 0))
15481578 then throw("No payments are expected")
15491579 else true
1550- if ((hG == hG))
1580+ if ((hI == hI))
15511581 then {
1552- let cR = be()
1553- let de = fromBase58String(cR[q])
1554- let eq = ej(toBigInt(0), toBigInt(0), toBigInt(0))
1555- if ((eq == eq))
1582+ let db = be()
1583+ let do = fromBase58String(db[q])
1584+ let eD = ew(toBigInt(0), toBigInt(0), toBigInt(0))
1585+ if ((eD == eD))
15561586 then {
1557- let hw = invoke(bw, "unstake", [toBase58String(de), bY], nil)
1558- if ((hw == hw))
1587+ let hy = invoke(bw, "unstake", [toBase58String(do), bY], nil)
1588+ if ((hy == hy))
15591589 then {
1560- let dN = da(toBase58String(eJ.transactionId), toBase58String(de), bY, eJ.caller)
1561- let dt = dN._1
1562- let du = dN._2
1563- let dh = parseIntValue(dN._9)
1564- let dv = dN._10
1565- let hH = if (if (bc())
1590+ let ea = dk(toBase58String(eW.transactionId), toBase58String(do), bY, eW.caller)
1591+ let dD = ea._1
1592+ let dE = ea._2
1593+ let dr = parseIntValue(ea._9)
1594+ let dI = ea._10
1595+ let hJ = if (if (bc())
15661596 then true
1567- else (dh == n))
1568- then throw(("Get operation is blocked by admin. Status = " + toString(dh)))
1597+ else (dr == n))
1598+ then throw(("Get operation is blocked by admin. Status = " + toString(dr)))
15691599 else true
1570- if ((hH == hH))
1600+ if ((hJ == hJ))
15711601 then {
1572- let hB = invoke(aV, "burn", [bY], [AttachedPayment(de, bY)])
1573- if ((hB == hB))
1602+ let hD = invoke(aV, "burn", [bY], [AttachedPayment(do, bY)])
1603+ if ((hD == hD))
15741604 then {
1575- let hI = er(-(dt), -(du), 0)
1576- let gR = hI._1
1577- let ei = hI._2
1578- let gS = ev(eq, ei)
1579- if ((gS == gS))
1580- then (dv ++ gR)
1605+ let hK = eE(-(dD), -(dE), 0)
1606+ let gV = hK._1
1607+ let ev = hK._2
1608+ let gW = eI(eD, ev)
1609+ if ((gW == gW))
1610+ then (dI ++ gV)
15811611 else throw("Strict value is not equal to itself.")
15821612 }
15831613 else throw("Strict value is not equal to itself.")
15841614 }
15851615 else throw("Strict value is not equal to itself.")
15861616 }
15871617 else throw("Strict value is not equal to itself.")
15881618 }
15891619 else throw("Strict value is not equal to itself.")
15901620 }
15911621 else throw("Strict value is not equal to itself.")
15921622 }
15931623
15941624
15951625
1596-@Callable(eJ)
1597-func unstakeAndGetNoLess (hv,hJ,hE) = {
1598- let hk = if (bc())
1626+@Callable(eW)
1627+func unstakeAndGetNoLess (hx,hL,hG) = {
1628+ let ho = if (bc())
15991629 then true
16001630 else (bp == n)
1601- let fD = [if (!(hk))
1631+ let fQ = [if (!(ho))
16021632 then true
1603- else throw("get operation is blocked by admin"), if ((size(eJ.payments) == 0))
1633+ else throw("get operation is blocked by admin"), if ((size(eW.payments) == 0))
16041634 then true
16051635 else throw("no payments are expected")]
1606- if ((fD == fD))
1636+ if ((fQ == fQ))
16071637 then {
1608- let eq = ej(toBigInt(0), toBigInt(0), toBigInt(0))
1609- if ((eq == eq))
1638+ let eD = ew(toBigInt(0), toBigInt(0), toBigInt(0))
1639+ if ((eD == eD))
16101640 then {
1611- let hw = invoke(bw, "unstake", [toBase58String(bq), hv], nil)
1612- if ((hw == hw))
1641+ let hy = invoke(bw, "unstake", [toBase58String(bq), hx], nil)
1642+ if ((hy == hy))
16131643 then {
1614- let dN = da(toBase58String(eJ.transactionId), toBase58String(bq), hv, eJ.caller)
1615- let dt = dN._1
1616- let du = dN._2
1617- let dv = dN._10
1618- let hK = [if ((dt >= hJ))
1644+ let ea = dk(toBase58String(eW.transactionId), toBase58String(bq), hx, eW.caller)
1645+ let dD = ea._1
1646+ let dE = ea._2
1647+ let dI = ea._10
1648+ let hM = [if ((dD >= hL))
16191649 then true
1620- else throw(makeString(["amount asset amount to receive is less than ", toString(hJ)], "")), if ((du >= hE))
1650+ else throw(makeString(["amount asset amount to receive is less than ", toString(hL)], "")), if ((dE >= hG))
16211651 then true
1622- else throw(makeString(["price asset amount to receive is less than ", toString(hE)], ""))]
1623- if ((hK == hK))
1652+ else throw(makeString(["price asset amount to receive is less than ", toString(hG)], ""))]
1653+ if ((hM == hM))
16241654 then {
1625- let hB = invoke(aV, "burn", [hv], [AttachedPayment(bq, hv)])
1626- if ((hB == hB))
1655+ let hD = invoke(aV, "burn", [hx], [AttachedPayment(bq, hx)])
1656+ if ((hD == hD))
16271657 then {
1628- let hL = er(-(dt), -(du), 0)
1629- let gR = hL._1
1630- let ei = hL._2
1631- let gS = ev(eq, ei)
1632- if ((gS == gS))
1633- then (dv ++ gR)
1658+ let hN = eE(-(dD), -(dE), 0)
1659+ let gV = hN._1
1660+ let ev = hN._2
1661+ let gW = eI(eD, ev)
1662+ if ((gW == gW))
1663+ then (dI ++ gV)
16341664 else throw("Strict value is not equal to itself.")
16351665 }
16361666 else throw("Strict value is not equal to itself.")
16371667 }
16381668 else throw("Strict value is not equal to itself.")
16391669 }
16401670 else throw("Strict value is not equal to itself.")
16411671 }
16421672 else throw("Strict value is not equal to itself.")
16431673 }
16441674 else throw("Strict value is not equal to itself.")
16451675 }
16461676
16471677
16481678
1649-@Callable(eJ)
1650-func activate (hM,hN) = if ((toString(eJ.caller) != toString(aV)))
1679+@Callable(eW)
1680+func activate (hO,hP) = if ((toString(eW.caller) != toString(aV)))
16511681 then throw("permissions denied")
1652- else $Tuple2([StringEntry(ae(), hM), StringEntry(af(), hN)], "success")
1682+ else $Tuple2([StringEntry(ae(), hO), StringEntry(af(), hP)], "success")
16531683
16541684
16551685
1656-@Callable(eJ)
1686+@Callable(eW)
16571687 func refreshKLp () = {
1658- let hO = valueOrElse(getInteger(ak), 0)
1659- let hP = if (((height - hO) >= an))
1688+ let hQ = valueOrElse(getInteger(ak), 0)
1689+ let hR = if (((height - hQ) >= an))
16601690 then unit
16611691 else aS(makeString([toString(an), " blocks have not passed since the previous call"], ""))
1662- if ((hP == hP))
1692+ if ((hR == hR))
16631693 then {
1664- let eC = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, aj), "0")), aU("invalid kLp"))
1665- let hQ = er(0, 0, 0)
1666- let hR = hQ._1
1667- let ei = hQ._2
1668- let eu = if ((eC != ei))
1669- then hR
1694+ let eP = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, aj), "0")), aU("invalid kLp"))
1695+ let hS = eE(0, 0, 0)
1696+ let hT = hS._1
1697+ let ev = hS._2
1698+ let eH = if ((eP != ev))
1699+ then hT
16701700 else aS("nothing to refresh")
1671- $Tuple2(eu, toString(ei))
1701+ $Tuple2(eH, toString(ev))
16721702 }
16731703 else throw("Strict value is not equal to itself.")
16741704 }
16751705
16761706
16771707
1678-@Callable(eJ)
1708+@Callable(eW)
16791709 func getPoolConfigWrapperREADONLY () = $Tuple2(nil, be())
16801710
16811711
16821712
1683-@Callable(eJ)
1713+@Callable(eW)
16841714 func getAccBalanceWrapperREADONLY (ar) = $Tuple2(nil, bN(ar))
16851715
16861716
16871717
1688-@Callable(eJ)
1689-func calcPricesWrapperREADONLY (cL,cM,cQ) = {
1690- let cZ = cP(cL, cM, cQ)
1691- $Tuple2(nil, [toString(cZ[0]), toString(cZ[1]), toString(cZ[2])])
1718+@Callable(eW)
1719+func calcPricesWrapperREADONLY (cV,cW,da) = {
1720+ let dj = cZ(cV, cW, da)
1721+ $Tuple2(nil, [toString(dj[0]), toString(dj[1]), toString(dj[2])])
16921722 }
16931723
16941724
16951725
1696-@Callable(eJ)
1726+@Callable(eW)
16971727 func toX18WrapperREADONLY (E,F) = $Tuple2(nil, toString(D(E, F)))
16981728
16991729
17001730
1701-@Callable(eJ)
1731+@Callable(eW)
17021732 func fromX18WrapperREADONLY (I,J) = $Tuple2(nil, H(parseBigIntValue(I), J))
17031733
17041734
17051735
1706-@Callable(eJ)
1736+@Callable(eW)
17071737 func calcPriceBigIntWrapperREADONLY (bP,bQ) = $Tuple2(nil, toString(bO(parseBigIntValue(bP), parseBigIntValue(bQ))))
17081738
17091739
17101740
1711-@Callable(eJ)
1712-func estimatePutOperationWrapperREADONLY (db,dx,dy,dz,dA,dB,ab,dC,dD) = $Tuple2(nil, dw(db, dx, dy, dz, dA, dB, ab, dC, dD))
1741+@Callable(eW)
1742+func estimatePutOperationWrapperREADONLY (dl,dK,dL,dM,dN,dO,ab,dP,dQ) = $Tuple2(nil, dJ(dl, dK, dL, dM, dN, dO, ab, dP, dQ))
17131743
17141744
17151745
1716-@Callable(eJ)
1717-func estimateGetOperationWrapperREADONLY (db,dc,dd,ab) = {
1718- let dN = da(db, dc, dd, addressFromStringValue(ab))
1719- $Tuple2(nil, $Tuple10(dN._1, dN._2, dN._3, dN._4, dN._5, dN._6, dN._7, toString(dN._8), dN._9, dN._10))
1746+@Callable(eW)
1747+func estimateGetOperationWrapperREADONLY (dl,dm,dn,ab) = {
1748+ let ea = dk(dl, dm, dn, addressFromStringValue(ab))
1749+ $Tuple2(nil, $Tuple10(ea._1, ea._2, ea._3, ea._4, ea._5, ea._6, ea._7, toString(ea._8), ea._9, ea._10))
17201750 }
17211751
17221752
17231753
1724-@Callable(eJ)
1754+@Callable(eW)
17251755 func statsREADONLY () = {
1726- let cR = be()
1727- let de = fromBase58String(cR[q])
1728- let hS = cR[r]
1729- let hT = cR[s]
1730- let dG = cR[v]
1731- let dH = cR[w]
1732- let cS = parseIntValue(cR[t])
1733- let cT = parseIntValue(cR[u])
1734- let hU = valueOrErrorMessage(assetInfo(de), (("Asset " + toBase58String(de)) + " doesn't exist")).quantity
1735- let hV = bN(hS)
1736- let hW = bN(hT)
1737- let hX = if ((hU == 0))
1756+ let db = be()
1757+ let do = fromBase58String(db[q])
1758+ let hU = db[r]
1759+ let hV = db[s]
1760+ let dT = db[v]
1761+ let dU = db[w]
1762+ let dc = parseIntValue(db[t])
1763+ let dd = parseIntValue(db[u])
1764+ let hW = valueOrErrorMessage(assetInfo(do), (("Asset " + toBase58String(do)) + " doesn't exist")).quantity
1765+ let hX = bN(hU)
1766+ let hY = bN(hV)
1767+ let hZ = if ((hW == 0))
17381768 then [e, e, e]
1739- else cP(hV, hW, hU)
1740- let do = 0
1741- let hY = H(hX[1], b)
1742- let hZ = H(hX[2], b)
1743- let ia = value(getInteger(aV, aF(toString(this))))
1744- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(hV), toString(hW), toString(hU), toString(do), toString(hY), toString(hZ), toString(ia)], j))
1769+ else cZ(hX, hY, hW)
1770+ let dy = 0
1771+ let ia = H(hZ[1], b)
1772+ let ib = H(hZ[2], b)
1773+ let ic = value(getInteger(aV, aF(toString(this))))
1774+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(hX), toString(hY), toString(hW), toString(dy), toString(ia), toString(ib), toString(ic)], j))
17451775 }
17461776
17471777
17481778
1749-@Callable(eJ)
1750-func evaluatePutByAmountAssetREADONLY (dy) = {
1751- let cR = be()
1752- let de = fromBase58String(cR[q])
1753- let dE = cR[r]
1754- let df = fromBase58String(dE)
1755- let dF = cR[s]
1756- let dg = fromBase58String(dF)
1757- let cS = parseIntValue(cR[t])
1758- let cT = parseIntValue(cR[u])
1759- let dh = cR[p]
1760- let hU = valueOrErrorMessage(assetInfo(de), (("Asset " + toBase58String(de)) + " doesn't exist")).quantity
1761- let hV = bN(dE)
1762- let hW = bN(dF)
1763- let cN = D(hV, cS)
1764- let cO = D(hW, cT)
1765- let dn = if ((hU == 0))
1779+@Callable(eW)
1780+func evaluatePutByAmountAssetREADONLY (dL) = {
1781+ let db = be()
1782+ let do = fromBase58String(db[q])
1783+ let dR = db[r]
1784+ let dp = fromBase58String(dR)
1785+ let dS = db[s]
1786+ let dq = fromBase58String(dS)
1787+ let dc = parseIntValue(db[t])
1788+ let dd = parseIntValue(db[u])
1789+ let dr = db[p]
1790+ let hW = valueOrErrorMessage(assetInfo(do), (("Asset " + toBase58String(do)) + " doesn't exist")).quantity
1791+ let hX = bN(dR)
1792+ let hY = bN(dS)
1793+ let cX = D(hX, dc)
1794+ let cY = D(hY, dd)
1795+ let dx = if ((hW == 0))
17661796 then e
1767- else bO(cO, cN)
1768- let dK = D(dy, cS)
1769- let dL = fraction(dK, dn, d)
1770- let dA = H(dL, cT)
1771- let eP = dw("", 500000, dy, df, dA, dg, "", true, false)
1772- let dV = eP._1
1773- let ib = eP._3
1774- let dj = eP._4
1775- let dl = eP._5
1776- let di = eP._6
1777- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(dV), toString(H(dn, b)), toString(dj), toString(dl), toString(di), dh, toString(dy), toString(dA)], j))
1797+ else bO(cY, cX)
1798+ let dX = D(dL, dc)
1799+ let dY = fraction(dX, dx, d)
1800+ let dN = H(dY, dd)
1801+ let fc = dJ("", 500000, dL, dp, dN, dq, "", true, false)
1802+ let ei = fc._1
1803+ let id = fc._3
1804+ let dt = fc._4
1805+ let dv = fc._5
1806+ let ds = fc._6
1807+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(ei), toString(H(dx, b)), toString(dt), toString(dv), toString(ds), dr, toString(dL), toString(dN)], j))
17781808 }
17791809
17801810
17811811
1782-@Callable(eJ)
1783-func evaluatePutByPriceAssetREADONLY (dA) = {
1784- let cR = be()
1785- let de = fromBase58String(cR[q])
1786- let dE = cR[r]
1787- let df = fromBase58String(dE)
1788- let dF = cR[s]
1789- let dg = fromBase58String(dF)
1790- let cS = parseIntValue(cR[t])
1791- let cT = parseIntValue(cR[u])
1792- let dh = cR[p]
1793- let hU = valueOrErrorMessage(assetInfo(de), (("Asset " + toBase58String(de)) + " doesn't exist")).quantity
1794- let ic = bN(dE)
1795- let id = bN(dF)
1796- let ie = D(ic, cS)
1797- let if = D(id, cT)
1798- let dn = if ((hU == 0))
1812+@Callable(eW)
1813+func evaluatePutByPriceAssetREADONLY (dN) = {
1814+ let db = be()
1815+ let do = fromBase58String(db[q])
1816+ let dR = db[r]
1817+ let dp = fromBase58String(dR)
1818+ let dS = db[s]
1819+ let dq = fromBase58String(dS)
1820+ let dc = parseIntValue(db[t])
1821+ let dd = parseIntValue(db[u])
1822+ let dr = db[p]
1823+ let hW = valueOrErrorMessage(assetInfo(do), (("Asset " + toBase58String(do)) + " doesn't exist")).quantity
1824+ let ie = bN(dR)
1825+ let if = bN(dS)
1826+ let ig = D(ie, dc)
1827+ let ih = D(if, dd)
1828+ let dx = if ((hW == 0))
17991829 then e
1800- else bO(if, ie)
1801- let dL = D(dA, cT)
1802- let dK = fraction(dL, d, dn)
1803- let dy = H(dK, cS)
1804- let eP = dw("", 500000, dy, df, dA, dg, "", true, false)
1805- let dV = eP._1
1806- let ib = eP._3
1807- let dj = eP._4
1808- let dl = eP._5
1809- let di = eP._6
1810- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(dV), toString(H(dn, b)), toString(dj), toString(dl), toString(di), dh, toString(dy), toString(dA)], j))
1830+ else bO(ih, ig)
1831+ let dY = D(dN, dd)
1832+ let dX = fraction(dY, d, dx)
1833+ let dL = H(dX, dc)
1834+ let fc = dJ("", 500000, dL, dp, dN, dq, "", true, false)
1835+ let ei = fc._1
1836+ let id = fc._3
1837+ let dt = fc._4
1838+ let dv = fc._5
1839+ let ds = fc._6
1840+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(ei), toString(H(dx, b)), toString(dt), toString(dv), toString(ds), dr, toString(dL), toString(dN)], j))
18111841 }
18121842
18131843
18141844
1815-@Callable(eJ)
1816-func evaluateGetREADONLY (ig,ih) = {
1817- let dN = da("", ig, ih, this)
1818- let dt = dN._1
1819- let du = dN._2
1820- let dj = dN._5
1821- let dl = dN._6
1822- let di = dN._7
1823- let do = dN._8
1824- let dh = parseIntValue(dN._9)
1825- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(dt), toString(du), toString(dj), toString(dl), toString(di), toString(do), toString(dh)], j))
1845+@Callable(eW)
1846+func evaluateGetREADONLY (ii,ij) = {
1847+ let ea = dk("", ii, ij, this)
1848+ let dD = ea._1
1849+ let dE = ea._2
1850+ let dt = ea._5
1851+ let dv = ea._6
1852+ let ds = ea._7
1853+ let dy = ea._8
1854+ let dr = parseIntValue(ea._9)
1855+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(dD), toString(dE), toString(dt), toString(dv), toString(ds), toString(dy), toString(dr)], j))
18261856 }
18271857
18281858
1829-@Verifier(ii)
1830-func ij () = {
1831- let ik = {
1832- let bV = fV()
1859+@Verifier(ik)
1860+func il () = {
1861+ let im = {
1862+ let bV = gi()
18331863 if ($isInstanceOf(bV, "ByteVector"))
18341864 then {
1835- let fZ = bV
1836- fZ
1865+ let gm = bV
1866+ gm
18371867 }
18381868 else if ($isInstanceOf(bV, "Unit"))
1839- then ii.senderPublicKey
1869+ then ik.senderPublicKey
18401870 else throw("Match error")
18411871 }
1842- let bV = ii
1872+ let bV = ik
18431873 if ($isInstanceOf(bV, "Order"))
18441874 then {
1845- let ey = bV
1846- let il = bd()
1847- let im = ex(ey)
1848- let aK = im._1
1849- let aL = im._2
1850- let aM = sigVerify(ey.bodyBytes, ey.proofs[0], ey.senderPublicKey)
1851- let aN = sigVerify(ey.bodyBytes, ey.proofs[1], il)
1875+ let eL = bV
1876+ let in = bd()
1877+ let io = eK(eL)
1878+ let aK = io._1
1879+ let aL = io._2
1880+ let aM = sigVerify(eL.bodyBytes, eL.proofs[0], eL.senderPublicKey)
1881+ let aN = sigVerify(eL.bodyBytes, eL.proofs[1], in)
18521882 if (if (if (aK)
18531883 then aM
18541884 else false)
18551885 then aN
18561886 else false)
18571887 then true
18581888 else aJ(aK, aL, aM, aN)
18591889 }
18601890 else if ($isInstanceOf(bV, "SetScriptTransaction"))
18611891 then {
1862- let fW = bV
1863- if (sigVerify(ii.bodyBytes, ii.proofs[0], ik))
1892+ let gj = bV
1893+ if (sigVerify(ik.bodyBytes, ik.proofs[0], im))
18641894 then true
18651895 else {
1866- let in = blake2b256(value(fW.script))
1867- let io = fromBase64String(value(getString(aV, aH())))
1868- let ip = scriptHash(this)
1869- if ((io == in))
1870- then (ip != in)
1896+ let ip = blake2b256(value(gj.script))
1897+ let iq = fromBase64String(value(getString(aV, aH())))
1898+ let ir = scriptHash(this)
1899+ if ((iq == ip))
1900+ then (ir != ip)
18711901 else false
18721902 }
18731903 }
1874- else sigVerify(ii.bodyBytes, ii.proofs[0], ik)
1904+ else sigVerify(ik.bodyBytes, ik.proofs[0], im)
18751905 }
18761906

github/deemru/w8io/873ac7e 
526.37 ms