tx · 5nuxqA8i54XNnZ6aopCiL9oPocRufFHMyZTk2CXA7tA5

3MqGtuaL3yJbKHqUxnSihJmYroyPf6QDp1x:  -0.04300000 Waves

2024.07.02 11:00 [3176108] smart account 3MqGtuaL3yJbKHqUxnSihJmYroyPf6QDp1x > SELF 0.00000000 Waves

{ "type": 13, "id": "5nuxqA8i54XNnZ6aopCiL9oPocRufFHMyZTk2CXA7tA5", "fee": 4300000, "feeAssetId": null, "timestamp": 1719907252329, "version": 2, "chainId": 84, "sender": "3MqGtuaL3yJbKHqUxnSihJmYroyPf6QDp1x", "senderPublicKey": "HNMWjb4Vq8JwETf7kHV57gaKXLvsdCS5KPTaHKa4XKa6", "proofs": [ "21euMRBo1CezAXLkpnF39XSw7JY2XPDfb1NpVuRhN3uQP2XCjU2UczRPzbfNUCx4D3uncuBaHUxLRpZHLeKU8Loa" ], "script": "base64:BgL8OAgCEgASBQoDAQQBEgcKBQEEAQgBEgQKAgEEEgMKAQESBAoCAQQSBAoCCAESBAoCCAESBAoCCAESBQoDAQgBEgASBAoCAQESAwoBARIFCgMBAQESBAoCCAgSABIAEgMKAQgSBQoDAQEBEgQKAgEBEgQKAggBEgQKAggIEgsKCQgBAQIBAggEBBIGCgQICAEIEgASAwoBARIDCgEBEgQKAggBIgpsUGRlY2ltYWxzIgZzY2FsZTgiDHNjYWxlOEJpZ0ludCIHc2NhbGUxOCIKemVyb0JpZ0ludCIEYmlnMCIEYmlnMSIEYmlnMiILd2F2ZXNTdHJpbmciA1NFUCIKUG9vbEFjdGl2ZSIPUG9vbFB1dERpc2FibGVkIhNQb29sTWF0Y2hlckRpc2FibGVkIgxQb29sU2h1dGRvd24iDmlkeFBvb2xBZGRyZXNzIg1pZHhQb29sU3RhdHVzIhBpZHhQb29sTFBBc3NldElkIg1pZHhBbXRBc3NldElkIg9pZHhQcmljZUFzc2V0SWQiDmlkeEFtdEFzc2V0RGNtIhBpZHhQcmljZUFzc2V0RGNtIg5pZHhJQW10QXNzZXRJZCIQaWR4SVByaWNlQXNzZXRJZCINaWR4TFBBc3NldERjbSISaWR4UG9vbEFtdEFzc2V0QW10IhRpZHhQb29sUHJpY2VBc3NldEFtdCIRaWR4UG9vbExQQXNzZXRBbXQiGWlkeEZhY3RvcnlTdGFraW5nQ29udHJhY3QiGmlkeEZhY3RvcnlTbGlwcGFnZUNvbnRyYWN0IgV0b1gxOCIHb3JpZ1ZhbCINb3JpZ1NjYWxlTXVsdCILdG9YMThCaWdJbnQiB2Zyb21YMTgiA3ZhbCIPcmVzdWx0U2NhbGVNdWx0Igxmcm9tWDE4Um91bmQiBXJvdW5kIgd0b1NjYWxlIgNhbXQiCHJlc1NjYWxlIghjdXJTY2FsZSIDYWJzIglhYnNCaWdJbnQiDHN3YXBDb250cmFjdCICZmMiE2tleU1hbmFnZXJQdWJsaWNLZXkiFmtleU1hbmFnZXJWYXVsdEFkZHJlc3MiAnBsIgJwaCIBaCIJdGltZXN0YW1wIgNwYXUiC3VzZXJBZGRyZXNzIgR0eElkIgNnYXUiAmFhIgJwYSIGa2V5RmVlIgpmZWVEZWZhdWx0IgNmZWUiBmtleUtMcCIVa2V5S0xwUmVmcmVzaGVkSGVpZ2h0IhJrZXlLTHBSZWZyZXNoRGVsYXkiFmtMcFJlZnJlc2hEZWxheURlZmF1bHQiD2tMcFJlZnJlc2hEZWxheSIUa2V5QWRkaXRpb25hbEJhbGFuY2UiB2Fzc2V0SWQiFmtleVN0YWtpbmdBc3NldEJhbGFuY2UiGmdldEFkZGl0aW9uYWxCYWxhbmNlT3JaZXJvIhxnZXRTdGFraW5nQXNzZXRCYWxhbmNlT3JaZXJvIhBrZXlGYWN0b3J5Q29uZmlnIg1rZXlNYXRjaGVyUHViIilrZXlNYXBwaW5nUG9vbENvbnRyYWN0QWRkcmVzc1RvUG9vbEFzc2V0cyITcG9vbENvbnRyYWN0QWRkcmVzcyINa2V5UG9vbENvbmZpZyIJaUFtdEFzc2V0IgtpUHJpY2VBc3NldCIfa2V5TWFwcGluZ3NCYXNlQXNzZXQyaW50ZXJuYWxJZCIMYmFzZUFzc2V0U3RyIhNrZXlBbGxQb29sc1NodXRkb3duIg1rZXlQb29sV2VpZ2h0Ig9jb250cmFjdEFkZHJlc3MiFmtleUFsbG93ZWRMcFNjcmlwdEhhc2giFmtleUZlZUNvbGxlY3RvckFkZHJlc3MiFmtleVNraXBPcmRlclZhbGlkYXRpb24iC3Bvb2xBZGRyZXNzIg90aHJvd09yZGVyRXJyb3IiCm9yZGVyVmFsaWQiDm9yZGVyVmFsaWRJbmZvIgtzZW5kZXJWYWxpZCIMbWF0Y2hlclZhbGlkIhdhZGRyZXNzRnJvbVN0cmluZ09yVGhpcyINYWRkcmVzc1N0cmluZyIHJG1hdGNoMCIBYSIcZ2V0TWFuYWdlclZhdWx0QWRkcmVzc09yVGhpcyIOZmFjdG9yeUFkZHJlc3MiA2ZjYSIBcyIPZ2V0U3RyaW5nT3JGYWlsIgdhZGRyZXNzIgNrZXkiDGdldEludE9yRmFpbCIIdGhyb3dFcnIiA21zZyIGZm10RXJyIg9mYWN0b3J5Q29udHJhY3QiE2ZlZUNvbGxlY3RvckFkZHJlc3MiBWluRmVlIgFAIgZvdXRGZWUiFWtleUFkZHJlc3NXaGl0ZWxpc3RlZCIUaXNBZGRyZXNzV2hpdGVsaXN0ZWQiEGlzR2xvYmFsU2h1dGRvd24iE2dldE1hdGNoZXJQdWJPckZhaWwiDWdldFBvb2xDb25maWciCGFtdEFzc2V0IgpwcmljZUFzc2V0IgxwYXJzZUFzc2V0SWQiBWlucHV0Ig9hc3NldElkVG9TdHJpbmciD3BhcnNlUG9vbENvbmZpZyIKcG9vbENvbmZpZyIQcG9vbENvbmZpZ1BhcnNlZCILJHQwOTc2OTk5MzUiDmNmZ1Bvb2xBZGRyZXNzIg1jZmdQb29sU3RhdHVzIgxjZmdMcEFzc2V0SWQiEGNmZ0Ftb3VudEFzc2V0SWQiD2NmZ1ByaWNlQXNzZXRJZCIWY2ZnQW1vdW50QXNzZXREZWNpbWFscyIVY2ZnUHJpY2VBc3NldERlY2ltYWxzIhBnZXRGYWN0b3J5Q29uZmlnIg9zdGFraW5nQ29udHJhY3QiEHNsaXBwYWdlQ29udHJhY3QiEWRhdGFQdXRBY3Rpb25JbmZvIg1pbkFtdEFzc2V0QW10Ig9pblByaWNlQXNzZXRBbXQiCG91dExwQW10IgVwcmljZSIdc2xpcHBhZ2VUb2xlcmFuY2VQYXNzZWRCeVVzZXIiFXNsaXBwYWdlVG9sZXJhbmNlUmVhbCIIdHhIZWlnaHQiC3R4VGltZXN0YW1wIhJzbGlwYWdlQW10QXNzZXRBbXQiFHNsaXBhZ2VQcmljZUFzc2V0QW10IhFkYXRhR2V0QWN0aW9uSW5mbyIOb3V0QW10QXNzZXRBbXQiEG91dFByaWNlQXNzZXRBbXQiB2luTHBBbXQiDWdldEFjY0JhbGFuY2UiDWJhbGFuY2VPblBvb2wiDHRvdGFsQmFsYW5jZSIPY2FsY1ByaWNlQmlnSW50IghwckFtdFgxOCIIYW1BbXRYMTgiFGNhbGNQcmljZUJpZ0ludFJvdW5kIgdnZXRSYXRlIgVwcm94eSIDaW52IgFyIgdkZXBvc2l0IgZhbW91bnQiDnN0YWtpbmdBc3NldElkIhhjdXJyZW50QWRkaXRpb25hbEJhbGFuY2UiGmN1cnJlbnRTdGFraW5nQXNzZXRCYWxhbmNlIgVhc3NldCINZGVwb3NpdEludm9rZSIUcmVjZWl2ZWRTdGFraW5nQXNzZXQiFG5ld0FkZGl0aW9uYWxCYWxhbmNlIhZuZXdTdGFraW5nQXNzZXRCYWxhbmNlIgh3aXRoZHJhdyIMcHJveHlSYXRlTXVsIg1wcm9maXRBZGRyZXNzIhBjdXJyZW50UHJveHlSYXRlIgdvbGRSYXRlIgxzdGFraW5nQXNzZXQiFG9sZFNlbmRTdGFraW5nQW1vdW50IhZzZW5kU3Rha2luZ0Fzc2V0QW1vdW50Igxwcm9maXRBbW91bnQiDndpdGhkcmF3SW52b2tlIg5yZWNlaXZlZEFzc2V0cyITZ2V0TGVhc2VQcm94eUNvbmZpZyIRcmViYWxhbmNlSW50ZXJuYWwiC3RhcmdldFJhdGlvIgptaW5CYWxhbmNlIhRsZWFzYWJsZVRvdGFsQmFsYW5jZSIXdGFyZ2V0QWRkaXRpb25hbEJhbGFuY2UiBGRpZmYiD3NlbmRBc3NldEFtb3VudCIOZ2V0QXNzZXRBbW91bnQiDnJlYmFsYW5jZUFzc2V0Ig0kdDAxNjIyMDE2MzU2Igppc0xlYXNhYmxlIgtsZWFzZWRSYXRpbyIMcHJveHlBZGRyZXNzIgxwcm94eUFzc2V0SWQiFHN0YWtpbmdQcm9maXRBZGRyZXNzIhl3aXRoZHJhd0FuZFJlYmFsYW5jZUFzc2V0IglnZXRBbW91bnQiDSR0MDE2NzU1MTY4OTEiF25ld1RvdGFsTGVhc2FibGVCYWxhbmNlIg53aXRoZHJhd0Ftb3VudCIXd2l0aGRyYXdBbmRSZWJhbGFuY2VBbGwiFGFtb3VudEFzc2V0T3V0QW1vdW50IhNwcmljZUFzc2V0T3V0QW1vdW50IhJBbUFtdFdpdGhkcmF3U3RhdGUiElByQW10V2l0aGRyYXdTdGF0ZSIQcHJpdmF0ZUNhbGNQcmljZSIKYW1Bc3NldERjbSIKcHJBc3NldERjbSIFYW1BbXQiBXByQW10Ig5hbXRBc3NldEFtdFgxOCIQcHJpY2VBc3NldEFtdFgxOCIKY2FsY1ByaWNlcyIFbHBBbXQiA2NmZyILYW10QXNzZXREY20iDXByaWNlQXNzZXREY20iCHByaWNlWDE4IghscEFtdFgxOCITbHBQcmljZUluQW1Bc3NldFgxOCITbHBQcmljZUluUHJBc3NldFgxOCIPY2FsY3VsYXRlUHJpY2VzIgZwcmljZXMiFGVzdGltYXRlR2V0T3BlcmF0aW9uIgZ0eElkNTgiCnBtdEFzc2V0SWQiCHBtdExwQW10IglscEFzc2V0SWQiCWFtQXNzZXRJZCIJcHJBc3NldElkIgpwb29sU3RhdHVzIgpscEVtaXNzaW9uIglhbUJhbGFuY2UiDGFtQmFsYW5jZVgxOCIJcHJCYWxhbmNlIgxwckJhbGFuY2VYMTgiC2N1clByaWNlWDE4IghjdXJQcmljZSILcG10THBBbXRYMTgiDWxwRW1pc3Npb25YMTgiC291dEFtQW10WDE4IgtvdXRQckFtdFgxOCIIb3V0QW1BbXQiCG91dFByQW10IgVzdGF0ZSIUZXN0aW1hdGVQdXRPcGVyYXRpb24iEXNsaXBwYWdlVG9sZXJhbmNlIgxpbkFtQXNzZXRBbXQiC2luQW1Bc3NldElkIgxpblByQXNzZXRBbXQiC2luUHJBc3NldElkIgppc0V2YWx1YXRlIgZlbWl0THAiDGFtQXNzZXRJZFN0ciIMcHJBc3NldElkU3RyIgtpQW10QXNzZXRJZCINaVByaWNlQXNzZXRJZCIOaW5BbUFzc2V0SWRTdHIiDmluUHJBc3NldElkU3RyIg9pbkFtQXNzZXRBbXRYMTgiD2luUHJBc3NldEFtdFgxOCIMdXNlclByaWNlWDE4IgNyZXMiC3NsaXBwYWdlWDE4IhRzbGlwcGFnZVRvbGVyYW5jZVgxOCIKcHJWaWFBbVgxOCIKYW1WaWFQclgxOCIMZXhwZWN0ZWRBbXRzIhFleHBBbXRBc3NldEFtdFgxOCITZXhwUHJpY2VBc3NldEFtdFgxOCIJY2FsY0xwQW10Ig5jYWxjQW1Bc3NldFBtdCIOY2FsY1ByQXNzZXRQbXQiDHNsaXBwYWdlQ2FsYyIJZW1pdExwQW10IgZhbURpZmYiBnByRGlmZiILY29tbW9uU3RhdGUiB2NhbGNLTHAiDWFtb3VudEJhbGFuY2UiDHByaWNlQmFsYW5jZSIQYW1vdW50QmFsYW5jZVgxOCIPcHJpY2VCYWxhbmNlWDE4Igp1cGRhdGVkS0xwIg5jYWxjQ3VycmVudEtMcCIQYW1vdW50QXNzZXREZWx0YSIPcHJpY2VBc3NldERlbHRhIhRscEFzc2V0RW1pc3Npb25EZWx0YSISYW1vdW50QXNzZXRCYWxhbmNlIhFwcmljZUFzc2V0QmFsYW5jZSIPbHBBc3NldEVtaXNzaW9uIgpjdXJyZW50S0xwIhJyZWZyZXNoS0xwSW50ZXJuYWwiF2Ftb3VudEFzc2V0QmFsYW5jZURlbHRhIhZwcmljZUFzc2V0QmFsYW5jZURlbHRhIgdhY3Rpb25zIhNza2lwT3JkZXJWYWxpZGF0aW9uIhJ2YWxpZGF0ZVVwZGF0ZWRLTHAiBm9sZEtMcCIbdmFsaWRhdGVNYXRjaGVyT3JkZXJBbGxvd2VkIgVvcmRlciIRYW1vdW50QXNzZXRBbW91bnQiEHByaWNlQXNzZXRBbW91bnQiDSR0MDI5NTE3Mjk3MjkiA2tMcCINJHQwMzAxNjkzMDI2OSINdW51c2VkQWN0aW9ucyIGa0xwTmV3Igxpc09yZGVyVmFsaWQiBGluZm8iCWNvbW1vbkdldCIBaSIDcG10IgZwbXRBbXQiDWlzR2V0RGlzYWJsZWQiCWNvbW1vblB1dCIKYW1Bc3NldFBtdCIKcHJBc3NldFBtdCIGZXN0UHV0Ig1pc1B1dERpc2FibGVkIgRlbWl0IgdlbWl0SW52Ig1lbWl0SW52TGVnYWN5IhVsZWdhY3lGYWN0b3J5Q29udHJhY3QiB3Rha2VGZWUiCWZlZUFtb3VudCIPY2FsY1B1dE9uZVRva2VuIhBwYXltZW50QW1vdW50UmF3Ig5wYXltZW50QXNzZXRJZCIGaXNFdmFsIhBhbW91bnRCYWxhbmNlUmF3Ig9wcmljZUJhbGFuY2VSYXciFHBheW1lbnRJbkFtb3VudEFzc2V0Ig0kdDAzMzQ1NTMzNzQ4IhBhbW91bnRCYWxhbmNlT2xkIg9wcmljZUJhbGFuY2VPbGQiDSR0MDMzNzUyMzM5MDEiFGFtb3VudEFzc2V0QW1vdW50UmF3IhNwcmljZUFzc2V0QW1vdW50UmF3Ig0kdDAzNDAzMzM0MDk3Ig1wYXltZW50QW1vdW50IhBhbW91bnRCYWxhbmNlTmV3Ig9wcmljZUJhbGFuY2VOZXciC3ByaWNlTmV3WDE4IghwcmljZU5ldyIOcGF5bWVudEJhbGFuY2UiFHBheW1lbnRCYWxhbmNlQmlnSW50IgxzdXBwbHlCaWdJbnQiC2NoZWNoU3VwcGx5Ig1kZXBvc2l0QmlnSW50Igtpc3N1ZUFtb3VudCILcHJpY2VPbGRYMTgiCHByaWNlT2xkIgRsb3NzIg0kdDAzNTc3ODM1OTQ1IgdiYWxhbmNlIg9pc3N1ZUFtb3VudEJvdGgiD2NhbGNHZXRPbmVUb2tlbiIKb3V0QXNzZXRJZCIGY2hlY2tzIhBvdXRJbkFtb3VudEFzc2V0Ig1iYWxhbmNlQmlnSW50IhhvdXRJbkFtb3VudEFzc2V0RGVjaW1hbHMiDGFtQmFsYW5jZU9sZCIMcHJCYWxhbmNlT2xkIgpvdXRCYWxhbmNlIhBvdXRCYWxhbmNlQmlnSW50Ig5yZWRlZW1lZEJpZ0ludCIJYW1vdW50UmF3Ig0kdDAzODAyMzM4MDc5Igt0b3RhbEFtb3VudCINJHQwMzgwODMzODMwOSILb3V0QW1BbW91bnQiC291dFByQW1vdW50IgxhbUJhbGFuY2VOZXciDHByQmFsYW5jZU5ldyIYYW1vdW50Qm90aEluUGF5bWVudEFzc2V0IhZtYW5hZ2VyUHVibGljS2V5T3JVbml0IhNtYW5hZ2VyVmF1bHRBZGRyZXNzIglpc01hbmFnZXIiAnBrIgttdXN0TWFuYWdlciICcGQiDWNsZWFuQW1vdW50SW4iCWlzUmV2ZXJzZSINZmVlUG9vbEFtb3VudCINJHQwNDAxNjc0MDQ3MiIIYXNzZXRPdXQiB2Fzc2V0SW4iEnBvb2xBc3NldEluQmFsYW5jZSITcG9vbEFzc2V0T3V0QmFsYW5jZSIJYW1vdW50T3V0IgRvbGRLIgRuZXdLIgZjaGVja0siDGFtb3VudE91dE1pbiIJYWRkcmVzc1RvIgtzd2FwQ29udGFjdCISaXNQb29sU3dhcERpc2FibGVkIg5pc1N3YXBEaXNhYmxlZCIIY2hlY2tNaW4iDHByaWNlQXNzZXRJZCIKZmVlQXNzZXRJZCIOcmViYWxhbmNlU3RhdGUiDXdpdGhkcmF3U3RhdGUiC2ZlZVRyYW5zZmVyIg9zaG91bGRBdXRvU3Rha2UiBGFtSWQiBHBySWQiDHNsaXBwYWdlQUludiIMc2xpcHBhZ2VQSW52IgpscFRyYW5zZmVyIgtzbHBTdGFrZUludiINJHQwNDU1OTI0NjA1NCIRcmVmcmVzaEtMcEFjdGlvbnMiEWlzVXBkYXRlZEtMcFZhbGlkIgNyZWIiC21heFNsaXBwYWdlIg0kdDA0NjY2NjQ2NzMxIgxtaW5PdXRBbW91bnQiCWF1dG9TdGFrZSIgaXNQb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWQiB3BheW1lbnQiDSR0MDQ3OTYwNDgxMTIiBWJvbnVzIhNlbWl0QW1vdW50RXN0aW1hdGVkIgplbWl0QW1vdW50IghzdGFrZUludiIHc2VuZEZlZSINJHQwNDg2OTg0ODg5NSINJHQwNDg4OTg0OTAwNiINJHQwNDkzNjE0OTUxOCINb3V0QXNzZXRJZFN0ciINJHQwNTA0NDA1MDU5MyIPYW1vdW50RXN0aW1hdGVkIgdidXJuSW52Ig1hc3NldFRyYW5zZmVyIg0kdDA1MTI1NzUxNTA0IhBmZWVBbW91bnRGb3JDYWxjIg0kdDA1MTUwNzUxNjE1Ig0kdDA1MTg5MzUyMDQ5Ig11bnN0YWtlQW1vdW50Igp1bnN0YWtlSW52Ig0kdDA1Mjk5MTUzMTQyIg0kdDA1MzgwMTU0MDQ4Ig0kdDA1NDA1MTU0MTU5IhRidXJuTFBBc3NldE9uRmFjdG9yeSINJHQwNTUyNTQ1NTMzNSISbm9MZXNzVGhlbkFtdEFzc2V0IhRub0xlc3NUaGVuUHJpY2VBc3NldCINJHQwNTY0MzA1NjUxMSINY2hlY2tQYXltZW50cyIPY2hlY2tQb29sU3RhdHVzIg0kdDA1Nzg1OTU3OTQwIhVub0xlc3NUaGVuQW1vdW50QXNzZXQiDGNoZWNrQW1vdW50cyINJHQwNTk0MTg1OTQ5OSILYW10QXNzZXRTdHIiDXByaWNlQXNzZXRTdHIiGGxhc3RSZWZyZXNoZWRCbG9ja0hlaWdodCIdY2hlY2tMYXN0UmVmcmVzaGVkQmxvY2tIZWlnaHQiDSR0MDYwNzAzNjA3NjciEGtMcFVwZGF0ZUFjdGlvbnMiCmFtdEFzc2V0SWQiDXBvb2xMUEJhbGFuY2UiEmFjY0FtdEFzc2V0QmFsYW5jZSIUYWNjUHJpY2VBc3NldEJhbGFuY2UiCnByaWNlc0xpc3QiD2xwQW10QXNzZXRTaGFyZSIRbHBQcmljZUFzc2V0U2hhcmUiCnBvb2xXZWlnaHQiDGN1clByaWNlQ2FsYyIMYW1CYWxhbmNlUmF3IgxwckJhbGFuY2VSYXciD2FtQmFsYW5jZVJhd1gxOCIPcHJCYWxhbmNlUmF3WDE4IhBwYXltZW50THBBc3NldElkIgxwYXltZW50THBBbXQiAnR4IgZ2ZXJpZnkiD3RhcmdldFB1YmxpY0tleSIKbWF0Y2hlclB1YiINJHQwNjk0Mjk2OTU0NiIHbmV3SGFzaCILYWxsb3dlZEhhc2giC2N1cnJlbnRIYXNohAEAAWEACAABYgCAwtcvAAFjCQC2AgEAgMLXLwABZAkAtgIBAICAkLu61q3wDQABZQkAtgIBAAAAAWYJALYCAQAAAAFnCQC2AgEAAQABaAkAtgIBAAIAAWkCBVdBVkVTAAFqAgJfXwABawABAAFsAAIAAW0AAwABbgAEAAFvAAEAAXAAAgABcQADAAFyAAQAAXMABQABdAAGAAF1AAcAAXYACAABdwAJAAF4AAoAAXkAAQABegACAAFBAAMAAUIAAQABQwAHAQFEAgFFAUYJALwCAwkAtgIBBQFFBQFkCQC2AgEFAUYBAUcCAUUBRgkAvAIDBQFFBQFkBQFGAQFIAgFJAUoJAKADAQkAvAIDBQFJCQC2AgEFAUoFAWQBAUsDAUkBSgFMCQCgAwEJAL0CBAUBSQkAtgIBBQFKBQFkBQFMAQFNAwFOAU8BUAkAawMFAU4FAU8FAVABAVEBAUkDCQBmAgAABQFJCQEBLQEFAUkFAUkBAVIBAUkDCQC/AgIFAWUFAUkJAL4CAQUBSQUBSQEBUwACECVzX19zd2FwQ29udHJhY3QBAVQAAhMlc19fZmFjdG9yeUNvbnRyYWN0AQFVAAIUJXNfX21hbmFnZXJQdWJsaWNLZXkBAVYAAhclc19fbWFuYWdlclZhdWx0QWRkcmVzcwEBVwACESVzJXNfX3ByaWNlX19sYXN0AQFYAgFZAVoJALkJAgkAzAgCAhglcyVzJWQlZF9fcHJpY2VfX2hpc3RvcnkJAMwIAgkApAMBBQFZCQDMCAIJAKQDAQUBWgUDbmlsBQFqAQJhYQICYWICYWMJAKwCAgkArAICCQCsAgICCyVzJXMlc19fUF9fBQJhYgICX18FAmFjAQJhZAICYWICYWMJAKwCAgkArAICCQCsAgICCyVzJXMlc19fR19fBQJhYgICX18FAmFjAQJhZQACDyVzX19hbW91bnRBc3NldAECYWYAAg4lc19fcHJpY2VBc3NldAACYWcCByVzX19mZWUAAmFoCQBrAwAKBQFiAJBOAAJhaQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQJhZwUCYWgAAmFqCQC5CQIJAMwIAgICJXMJAMwIAgIDa0xwBQNuaWwFAWoAAmFrCQC5CQIJAMwIAgICJXMJAMwIAgISa0xwUmVmcmVzaGVkSGVpZ2h0BQNuaWwFAWoAAmFsCQC5CQIJAMwIAgICJXMJAMwIAgIPcmVmcmVzaEtMcERlbGF5BQNuaWwFAWoAAmFtAB4AAmFuCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFAmFsBQJhbQECYW8BAmFwCQC5CQIJAMwIAgIEJXMlcwkAzAgCAg1zdGFrZWRCYWxhbmNlCQDMCAIFAmFwBQNuaWwFAWoBAmFxAQJhcAkAuQkCCQDMCAICBCVzJXMJAMwIAgIRc2hhcmVBc3NldEJhbGFuY2UJAMwIAgUCYXAFA25pbAUBagECYXIBAmFwCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAQJhbwEFAmFwAAABAmFzAQJhcAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQECYXEBBQJhcAAAAQJhdAACESVzX19mYWN0b3J5Q29uZmlnAQJhdQACGCVzJXNfX21hdGNoZXJfX3B1YmxpY0tleQECYXYBAmF3CQCsAgIJAKwCAgIIJXMlcyVzX18FAmF3AiBfX21hcHBpbmdzX19wb29sQ29udHJhY3QyTHBBc3NldAECYXgCAmF5AmF6CQCsAgIJAKwCAgkArAICCQCsAgICCCVkJWQlc19fBQJheQICX18FAmF6AghfX2NvbmZpZwECYUEBAmFCCQCsAgICKCVzJXMlc19fbWFwcGluZ3NfX2Jhc2VBc3NldDJpbnRlcm5hbElkX18FAmFCAQJhQwACDCVzX19zaHV0ZG93bgECYUQBAmFFCQCsAgICEiVzJXNfX3Bvb2xXZWlnaHRfXwUCYUUBAmFGAAIXJXNfX2FsbG93ZWRMcFNjcmlwdEhhc2gAAmFHAhclc19fZmVlQ29sbGVjdG9yQWRkcmVzcwECYUgBAmFJCQCsAgICGyVzJXNfX3NraXBPcmRlclZhbGlkYXRpb25fXwUCYUkBAmFKBAJhSwJhTAJhTQJhTgkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAiRvcmRlciB2YWxpZGF0aW9uIGZhaWxlZDogb3JkZXJWYWxpZD0JAKUDAQUCYUsCAiAoBQJhTAIBKQINIHNlbmRlclZhbGlkPQkApQMBBQJhTQIOIG1hdGNoZXJWYWxpZD0JAKUDAQUCYU4BAmFPAQJhUAQCYVEJAKYIAQUCYVADCQABAgUCYVECB0FkZHJlc3MEAmFSBQJhUQUCYVIFBHRoaXMBAmFTAAQCYVQEAmFRCQCiCAEJAQFUAAMJAAECBQJhUQIGU3RyaW5nBAJhVQUCYVEJAQJhTwEFAmFVBQR0aGlzBAJhUQkAnQgCBQJhVAkBAVYAAwkAAQIFAmFRAgZTdHJpbmcEAmFWBQJhUQkBAmFPAQUCYVYFBHRoaXMBAmFXAgJhWAJhWQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFAmFYBQJhWQkAuQkCCQDMCAICCm1hbmRhdG9yeSAJAMwIAgkApQgBBQJhWAkAzAgCAgEuCQDMCAIFAmFZCQDMCAICDyBpcyBub3QgZGVmaW5lZAUDbmlsAgABAmFaAgJhWAJhWQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFAmFYBQJhWQkAuQkCCQDMCAICCm1hbmRhdG9yeSAJAMwIAgkApQgBBQJhWAkAzAgCAgEuCQDMCAIFAmFZCQDMCAICDyBpcyBub3QgZGVmaW5lZAUDbmlsAgABAmJhAQJiYgkAAgEJALkJAgkAzAgCAghscC5yaWRlOgkAzAgCBQJiYgUDbmlsAgEgAQJiYwECYmIJALkJAgkAzAgCAghscC5yaWRlOgkAzAgCBQJiYgUDbmlsAgEgAAJiZAkBEUBleHRyTmF0aXZlKDEwNjIpAQkBAmFXAgUEdGhpcwkBAVQAAAJiZQkBEUBleHRyTmF0aXZlKDEwNjIpAQkBAmFXAgUCYmQFAmFHAAJiZgoAAmJnCQD8BwQFAmJkAhBnZXRJbkZlZVJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCYmcCA0ludAUCYmcJAAIBCQCsAgIJAAMBBQJiZwIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50AAJiaAoAAmJnCQD8BwQFAmJkAhFnZXRPdXRGZWVSRUFET05MWQkAzAgCCQClCAEFBHRoaXMFA25pbAUDbmlsAwkAAQIFAmJnAgNJbnQFAmJnCQACAQkArAICCQADAQUCYmcCGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAECYmkBAmFYCQC5CQIJAMwIAgIEJXMlcwkAzAgCAgt3aGl0ZWxpc3RlZAkAzAgCCQClCAEFAmFYBQNuaWwFAWoBAmJqAQJhWAkBC3ZhbHVlT3JFbHNlAgkAmwgCBQJiZAkBAmJpAQUCYVgHAQJiawAJAQt2YWx1ZU9yRWxzZQIJAJsIAgUCYmQJAQJhQwAHAQJibAAJANkEAQkBAmFXAgUCYmQJAQJhdQABAmJtAAQCYm4JAQJhVwIFBHRoaXMJAQJhZQAEAmJvCQECYVcCBQR0aGlzCQECYWYABAJhegkBAmFaAgUCYmQJAQJhQQEFAmJvBAJheQkBAmFaAgUCYmQJAQJhQQEFAmJuCQC1CQIJAQJhVwIFAmJkCQECYXgCCQCkAwEFAmF5CQCkAwEFAmF6BQFqAQJicAECYnEDCQAAAgUCYnEFAWkFBHVuaXQJANkEAQUCYnEBAmJyAQJicQMJAAACBQJicQUEdW5pdAUBaQkA2AQBCQEFdmFsdWUBBQJicQECYnMBAmJ0CQCZCgcJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAJEDAgUCYnQFAW8JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJidAUBcAkA2QQBCQCRAwIFAmJ0BQFxCQECYnABCQCRAwIFAmJ0BQFyCQECYnABCQCRAwIFAmJ0BQFzCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYnQFAXQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJidAUBdQACYnUJAQJicwEJAQJibQAAAmJ2BQJidQACYncIBQJidgJfMQACYngIBQJidgJfMgACYnkIBQJidgJfMwACYnoIBQJidgJfNAACYkEIBQJidgJfNQACYkIIBQJidgJfNgACYkMIBQJidgJfNwECYkQACQC1CQIJAQJhVwIFAmJkCQECYXQABQFqAAJiRQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgkBAmJEAAUBQgIZaW5jb3JyZWN0IHN0YWtpbmcgYWRkcmVzcwACYkYJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIJAQJiRAAFAUMCGWluY29ycmVjdCBzdGFraW5nIGFkZHJlc3MBAmJHCgJiSAJiSQJiSgJiSwJiTAJiTQJiTgJiTwJiUAJiUQkAuQkCCQDMCAICFCVkJWQlZCVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCYkgJAMwIAgkApAMBBQJiSQkAzAgCCQCkAwEFAmJKCQDMCAIJAKQDAQUCYksJAMwIAgkApAMBBQJiTAkAzAgCCQCkAwEFAmJNCQDMCAIJAKQDAQUCYk4JAMwIAgkApAMBBQJiTwkAzAgCCQCkAwEFAmJQCQDMCAIJAKQDAQUCYlEFA25pbAUBagECYlIGAmJTAmJUAmJVAmJLAmJOAmJPCQC5CQIJAMwIAgIMJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCYlMJAMwIAgkApAMBBQJiVAkAzAgCCQCkAwEFAmJVCQDMCAIJAKQDAQUCYksJAMwIAgkApAMBBQJiTgkAzAgCCQCkAwEFAmJPBQNuaWwFAWoBAmJWAQJhcAQCYlcDCQAAAgUCYXACBVdBVkVTCAkA7wcBBQR0aGlzCWF2YWlsYWJsZQkA8AcCBQR0aGlzCQDZBAEFAmFwBAJiWAkAZQIJAGQCBQJiVwkBAmFyAQUCYXAJAQJhcwEFAmFwCQCWAwEJAMwIAgAACQDMCAIFAmJYBQNuaWwBAmJZAgJiWgJjYQkAvAIDBQJiWgUBZAUCY2EBAmNiAwJiWgJjYQFMCQC9AgQFAmJaBQFkBQJjYQUBTAECY2MBAmNkBAJjZQkA/AcEBQJjZAIHZ2V0UmF0ZQUDbmlsBQNuaWwDCQAAAgUCY2UFAmNlBAJhUQUCY2UDCQABAgUCYVECA0ludAQCY2YFAmFRBQJjZgkBAmJhAQIgcHJveHkuZ2V0UmF0ZSgpIHVuZXhwZWN0ZWQgdmFsdWUJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmNnBAJhcAJjaAJjaQJjZAQCY2oJAQJhcgEFAmFwAwkAAAIFAmNqBQJjagQCY2sJAQJhcwEFAmNpAwkAAAIFAmNrBQJjawQCY2wJAQJicAEFAmFwAwkAZgIFAmNoAAAEAmNtCQD8BwQFAmNkAgdkZXBvc2l0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmNsBQJjaAUDbmlsAwkAAAIFAmNtBQJjbQQCYVEFAmNtAwkAAQIFAmFRAgNJbnQEAmNuBQJhUQQCY28JAGQCBQJjagUCY2gEAmNwCQBkAgUCY2sFAmNuCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYW8BBQJhcAUCY28JAMwIAgkBDEludGVnZXJFbnRyeQIJAQJhcQEFAmNpBQJjcAUDbmlsBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4FA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECY3EGAmFwAmNoAmNpAmNkAmNyAmNzBAJjagkBAmFyAQUCYXADCQAAAgUCY2oFAmNqBAJjawkBAmFzAQUCY2kDCQAAAgUCY2sFAmNrBAJjdAkBAmNjAQUCY2QDCQAAAgUCY3QFAmN0BAJjdQkAawMFAmNyBQJjagUCY2sEAmN2CQECYnABBQJjaQQCY3cJAGsDBQJjcgUCY2gFAmN1BAJjeAkAawMFAmNyBQJjaAUCY3QEAmN5CQCWAwEJAMwIAgAACQDMCAIJAGUCBQJjdwUCY3gFA25pbAMJAGYCBQJjeAAABAJjegkA/AcEBQJjZAIId2l0aGRyYXcFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCY3YFAmN4BQNuaWwDCQAAAgUCY3oFAmN6BAJhUQUCY3oDCQABAgUCYVECA0ludAQCY0EFAmFRBAJjbwkAZQIFAmNqBQJjQQQCY3AJAGUCCQBlAgUCY2sFAmN4BQJjeQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmFvAQUCYXAFAmNvCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYXEBBQJjaQUCY3AJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCY3MFAmN5CQECYnABBQJjaQUDbmlsBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4FA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECY0IBAmFwBAJhUQkA/AcEBQJiZAIaZ2V0UG9vbExlYXNlQ29uZmlnUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzCQDMCAIFAmFwBQNuaWwFA25pbAMJAAECBQJhUQIwKEJvb2xlYW4sIEludCwgSW50LCBTdHJpbmcsIFN0cmluZywgSW50LCBTdHJpbmcpBAJhUgUCYVEFAmFSCQECYmEBCQCsAgIJAKwCAgIBWwUCYXACHV0gZ2V0TGVhc2VQcm94eUNvbmZpZygpIGVycm9yAQJjQwcCY0QCYXACY2kCY0UCY2QCY3ICY3MEAmNrCQECYXMBBQJjaQMJAAACBQJjawUCY2sEAmNqAwkBAiE9AgUCY2sAAAkBAmFyAQUCYXAAAAMJAAACBQJjagUCY2oEAmNGCQCWAwEJAMwIAgAACQDMCAIJAGUCCQECYlYBBQJhcAUCY0UFA25pbAQCY0cJAGsDBQJjRAUCY0YAZAQCY0gJAGUCBQJjagUCY0cDCQAAAgUCY0gAAAUDbmlsAwkAZgIAAAUCY0gEAmNJCQEBLQEFAmNICQECY2cEBQJhcAUCY0kFAmNpBQJjZAQCY0oFAmNICQECY3EGBQJhcAUCY0oFAmNpBQJjZAUCY3IFAmNzCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJjSwECYXAEAmNMCQECY0IBBQJhcAQCY00IBQJjTAJfMQQCY04IBQJjTAJfMgQCY0UIBQJjTAJfMwQCY08IBQJjTAJfNAQCY1AIBQJjTAJfNQQCY3IIBQJjTAJfNgQCY1EIBQJjTAJfNwMFAmNNCQECY0MHBQJjTgUCYXAFAmNQBQJjRQkBEUBleHRyTmF0aXZlKDEwNjIpAQUCY08FAmNyCQERQGV4dHJOYXRpdmUoMTA2MikBBQJjUQUDbmlsAQJjUgICYXACY1MEAmNUCQECY0IBBQJhcAQCY00IBQJjVAJfMQQCY04IBQJjVAJfMgQCY0UIBQJjVAJfMwQCY08IBQJjVAJfNAQCY1AIBQJjVAJfNQQCY3IIBQJjVAJfNgQCY1EIBQJjVAJfNwMFAmNNBAJjawkBAmFzAQUCY1ADCQAAAgUCY2sFAmNrBAJjagMJAQIhPQIFAmNrAAAJAQJhcgEFAmFwAAADCQAAAgUCY2oFAmNqBAJjVQkAlgMBCQDMCAIAAAkAzAgCCQBlAgkAZQIJAQJiVgEFAmFwBQJjUwUCY0UFA25pbAMJAAACBQJjVQUCY1UEAmNvCQBrAwUCY04FAmNVAGQDCQAAAgUCY28FAmNvBAJjVgkAZQIFAmNqBQJjbwMJAAACBQJjVgUCY1YDCQAAAgUCY1YAAAUDbmlsAwkAZgIAAAUCY1YJAQJjZwQFAmFwCQEBLQEFAmNWBQJjUAkBEUBleHRyTmF0aXZlKDEwNjIpAQUCY08JAQJjcQYFAmFwBQJjVgUCY1AJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAmNPBQJjcgkBEUBleHRyTmF0aXZlKDEwNjIpAQUCY1EJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4FA25pbAECY1cCAmNYAmNZBAJjWgkBAmNSAgkBAmFXAgUEdGhpcwkBAmFlAAUCY1gEAmRhCQECY1ICCQECYVcCBQR0aGlzCQECYWYABQJjWQkAzggCBQJjWgUCZGEBAmRiBAJkYwJkZAJkZQJkZgQCZGcJAQFEAgUCZGUFAmRjBAJkaAkBAUQCBQJkZgUCZGQJAQJiWQIFAmRoBQJkZwECZGkDAmRlAmRmAmRqBAJkawkBAmJtAAQCZGwJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJkawUBdAQCZG0JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJkawUBdQQCZG4JAQJkYgQFAmRsBQJkbQUCZGUFAmRmBAJjYQkBAUQCBQJkZQUCZGwEAmJaCQEBRAIFAmRmBQJkbQQCZG8JAQFEAgUCZGoFAWIEAmRwCQECYlkCBQJjYQUCZG8EAmRxCQECYlkCBQJiWgUCZG8JAMwIAgUCZG4JAMwIAgUCZHAJAMwIAgUCZHEFA25pbAECZHIDAmRlAmRmAmRqBAJkcwkBAmRpAwUCZGUFAmRmBQJkagkAzAgCCQEBSAIJAJEDAgUCZHMAAAUBYgkAzAgCCQEBSAIJAJEDAgUCZHMAAQUBYgkAzAgCCQEBSAIJAJEDAgUCZHMAAgUBYgUDbmlsAQJkdAQCZHUCZHYCZHcCYWIEAmRrCQECYm0ABAJkeAkAkQMCBQJkawUBcQQCZHkJAJEDAgUCZGsFAXIEAmR6CQCRAwIFAmRrBQFzBAJkYwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmRrBQF0BAJkZAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmRrBQF1BAJkQQkAkQMCBQJkawUBcAQCZEIICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQkA2QQBBQJkeAkArAICCQCsAgICBkFzc2V0IAUCZHgCDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5AwkBAiE9AgUCZHgFAmR2CQACAQIVSW52YWxpZCBhc3NldCBwYXNzZWQuBAJkQwkBAmJWAQUCZHkEAmRECQEBRAIFAmRDBQJkYwQCZEUJAQJiVgEFAmR6BAJkRgkBAUQCBQJkRQUCZGQEAmRHCQECYlkCBQJkRgUCZEQEAmRICQEBSAIFAmRHBQFiBAJkSQkBAUQCBQJkdwUBYgQCZEoJAQFEAgUCZEIFAWIEAmRLCQC8AgMFAmREBQJkSQUCZEoEAmRMCQC8AgMFAmRGBQJkSQUCZEoEAmRNCQEBSwMFAmRLBQJkYwUFRkxPT1IEAmROCQEBSwMFAmRMBQJkZAUFRkxPT1IEAmRPAwkAAAIFAmR1AgAFA25pbAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJhYgUCZE0DCQAAAgUCZHkCBVdBVkVTBQR1bml0CQDZBAEFAmR5CQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmFiBQJkTgMJAAACBQJkegIFV0FWRVMFBHVuaXQJANkEAQUCZHoJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFkAgkApQgBBQJhYgUCZHUJAQJiUgYFAmRNBQJkTgUCZHcFAmRIBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVwAFAmRICQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBWAIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmRIBQNuaWwJAJwKCgUCZE0FAmROBQJkeQUCZHoFAmRDBQJkRQUCZEIFAmRHBQJkQQUCZE8BAmRQCQJkdQJkUQJkUgJkUwJkVAJkVQJhYgJkVgJkVwQCZGsJAQJibQAEAmR4CQDZBAEJAJEDAgUCZGsFAXEEAmRYCQCRAwIFAmRrBQFyBAJkWQkAkQMCBQJkawUBcwQCZFoJAJEDAgUCZGsFAXYEAmVhCQCRAwIFAmRrBQF3BAJkbAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmRrBQF0BAJkbQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmRrBQF1BAJkQQkAkQMCBQJkawUBcAQCZEIICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCZHgJAKwCAgkArAICAgZBc3NldCAJANgEAQUCZHgCDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BAJlYgkA2AQBCQELdmFsdWVPckVsc2UCBQJkUwkA2QQBAgVXQVZFUwQCZWMJANgEAQkBC3ZhbHVlT3JFbHNlAgUCZFUJANkEAQIFV0FWRVMDAwkBAiE9AgUCZFgFAmViBgkBAiE9AgUCZFkFAmVjCQACAQIiSW52YWxpZCBhbXQgb3IgcHJpY2UgYXNzZXQgcGFzc2VkLgQCZEMDBQJkVgkBAmJWAQUCZFgJAGUCCQECYlYBBQJkWAUCZFIEAmRFAwUCZFYJAQJiVgEFAmRZCQBlAgkBAmJWAQUCZFkFAmRUBAJlZAkBAUQCBQJkUgUCZGwEAmVlCQEBRAIFAmRUBQJkbQQCZWYJAQJiWQIFAmVlBQJlZAQCZEQJAQFEAgUCZEMFAmRsBAJkRgkBAUQCBQJkRQUCZG0EAmVnAwkAAAIFAmRCAAAEAmRHBQFlBAJlaAUBZQQCZG8JAHYGCQC5AgIFAmVkBQJlZQAACQC2AgEABQABAAAFBERPV04JAJcKBQkBAUgCBQJkbwUBYgkBAUgCBQJlZAUCZGwJAQFIAgUCZWUFAmRtCQECYlkCCQC3AgIFAmRGBQJlZQkAtwICBQJkRAUCZWQFAmVoBAJkRwkBAmJZAgUCZEYFAmREBAJlaAkAvAIDCQEBUgEJALgCAgUCZEcFAmVmBQFkBQJkRwQCZWkJAQFEAgUCZFEFAWIDAwkBAiE9AgUCZEcFAWUJAL8CAgUCZWgFAmVpBwkAAgEJAKwCAgkArAICCQCsAgICD1ByaWNlIHNsaXBwYWdlIAkApgMBBQJlaAIeIGV4Y2VlZGVkIHRoZSBwYXNzZWQgbGltaXQgb2YgCQCmAwEFAmVpBAJkSgkBAUQCBQJkQgUBYgQCZWoJAL0CBAUCZWQJAQJjYgMFAmRGBQJkRAUHQ0VJTElORwUBZAUHQ0VJTElORwQCZWsJAL0CBAUCZWUFAWQJAQJjYgMFAmRGBQJkRAUFRkxPT1IFB0NFSUxJTkcEAmVsAwkAvwICBQJlagUCZWUJAJQKAgUCZWsFAmVlCQCUCgIFAmVkBQJlagQCZW0IBQJlbAJfMQQCZW4IBQJlbAJfMgQCZG8JAL0CBAUCZEoFAmVuBQJkRgUFRkxPT1IJAJcKBQkBAUsDBQJkbwUBYgUFRkxPT1IJAQFLAwUCZW0FAmRsBQdDRUlMSU5HCQEBSwMFAmVuBQJkbQUHQ0VJTElORwUCZEcFAmVoBAJlbwgFAmVnAl8xBAJlcAgFAmVnAl8yBAJlcQgFAmVnAl8zBAJkSAkBAUgCCAUCZWcCXzQFAWIEAmVyCQEBSAIIBQJlZwJfNQUBYgMJAGcCAAAFAmVvCQACAQI2SW52YWxpZCBjYWxjdWxhdGlvbnMuIExQIGNhbGN1bGF0ZWQgaXMgbGVzcyB0aGFuIHplcm8uBAJlcwMJAQEhAQUCZFcAAAUCZW8EAmV0CQBlAgUCZFIFAmVwBAJldQkAZQIFAmRUBQJlcQQCZXYJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFXAAUCZEgJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFYAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCZEgJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFhAgUCYWIFAmR1CQECYkcKBQJlcAUCZXEFAmVzBQJkSAUCZFEFAmVyBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJldAUCZXUFA25pbAkAnwoNBQJlbwUCZXMFAmRIBQJkQwUCZEUFAmRCBQJkeAUCZEEFAmV2BQJldAUCZXUFAmRTBQJkVQECZXcDAmV4AmV5AmRCBAJlegkBAUcCBQJleAkAtgIBBQJiQgQCZUEJAQFHAgUCZXkJALYCAQUCYkMEAmVCCQC8AgMJAHYGCQC5AgIFAmV6BQJlQQAACQC2AgEABQABABIFBERPV04FAWcFAmRCAwkAAAIFAmRCBQFmBQFmBQJlQgECZUMDAmVEAmVFAmVGBAJlRwkAuAICCQC2AgEJAQJiVgEJAQJicgEFAmJ6BQJlRAQCZUgJALgCAgkAtgIBCQECYlYBCQECYnIBBQJiQQUCZUUEAmVJCQC4AgIJALYCAQgJAQV2YWx1ZQEJAOwHAQUCYnkIcXVhbnRpdHkFAmVGBAJlSgkBAmV3AwUCZUcFAmVIBQJlSQUCZUoBAmVLAwJlTAJlTQJlRgQCZUcJAGQCCQECYlYBCQECYnIBBQJiegUCZUwEAmVICQBkAgkBAmJWAQkBAmJyAQUCYkEFAmVNBAJlSQkAZAIICQEFdmFsdWUBCQDsBwEFAmJ5CHF1YW50aXR5BQJlRgQCZUIJAQJldwMJALYCAQUCZUcJALYCAQUCZUgJALYCAQUCZUkEAmVOCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQJhawUGaGVpZ2h0CQDMCAIJAQtTdHJpbmdFbnRyeQIFAmFqCQCmAwEFAmVCBQNuaWwJAJQKAgUCZU4FAmVCAQJlTwAJAQt2YWx1ZU9yRWxzZQIJAJsIAgUCYmQJAQJhSAEJAKUIAQUEdGhpcwcBAmVQAgJlUQJlQgMJAMACAgUCZUIFAmVRBgkBAmJhAQkAuQkCCQDMCAICInVwZGF0ZWQgS0xwIGxvd2VyIHRoYW4gY3VycmVudCBLTHAJAMwIAgkApgMBBQJlUQkAzAgCCQCmAwEFAmVCBQNuaWwCASABAmVSAQJlUwQCZUcJAQJiVgEJAQJicgEFAmJ6BAJlSAkBAmJWAQkBAmJyAQUCYkEEAmVUCAUCZVMGYW1vdW50BAJlVQkAbgQIBQJlUwZhbW91bnQIBQJlUwVwcmljZQUBYgUFRkxPT1IEAmVWAwkAAAIIBQJlUwlvcmRlclR5cGUFA0J1eQkAlAoCBQJlVAkBAS0BBQJlVQkAlAoCCQEBLQEFAmVUBQJlVQQCZUwIBQJlVgJfMQQCZU0IBQJlVgJfMgMDAwkBAmJrAAYJAAACBQJieAUBbQYJAAACBQJieAUBbgkAAgECHEV4Y2hhbmdlIG9wZXJhdGlvbnMgZGlzYWJsZWQDAwkBAiE9AggIBQJlUwlhc3NldFBhaXILYW1vdW50QXNzZXQFAmJ6BgkBAiE9AggIBQJlUwlhc3NldFBhaXIKcHJpY2VBc3NldAUCYkEJAAIBAhNXcm9uZyBvcmRlciBhc3NldHMuBAJlVwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCoAwEJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwUCYWoCATAJAQJiYwECC2ludmFsaWQga0xwBAJlWAkBAmVLAwUCZUwFAmVNAAAEAmVZCAUCZVgCXzEEAmVaCAUCZVgCXzIEAmZhCQDAAgIFAmVaBQJlVwQCZmIJALkJAgkAzAgCAgRrTHA9CQDMCAIJAKYDAQUCZVcJAMwIAgIIIGtMcE5ldz0JAMwIAgkApgMBBQJlWgkAzAgCAhQgYW1vdW50QXNzZXRCYWxhbmNlPQkAzAgCCQCkAwEFAmVHCQDMCAICEyBwcmljZUFzc2V0QmFsYW5jZT0JAMwIAgkApAMBBQJlSAkAzAgCAhkgYW1vdW50QXNzZXRCYWxhbmNlRGVsdGE9CQDMCAIJAKQDAQUCZUwJAMwIAgIYIHByaWNlQXNzZXRCYWxhbmNlRGVsdGE9CQDMCAIJAKQDAQUCZU0JAMwIAgIIIGhlaWdodD0JAMwIAgkApAMBBQZoZWlnaHQFA25pbAIACQCUCgIFAmZhBQJmYgECZmMBAmZkAwkBAiE9AgkAkAMBCAUCZmQIcGF5bWVudHMAAQkAAgECHWV4YWN0bHkgMSBwYXltZW50IGlzIGV4cGVjdGVkBAJmZQkBBXZhbHVlAQkAkQMCCAUCZmQIcGF5bWVudHMAAAQCZHYJAQV2YWx1ZQEIBQJmZQdhc3NldElkBAJmZggFAmZlBmFtb3VudAQCZWcJAQJkdAQJANgEAQgFAmZkDXRyYW5zYWN0aW9uSWQJANgEAQUCZHYFAmZmCAUCZmQGY2FsbGVyBAJkTQgFAmVnAl8xBAJkTggFAmVnAl8yBAJkTwgFAmVnA18xMAQCZmcDCQEBIQEJAQJiagEIBQJmZAZjYWxsZXIDCQECYmsABgkAAAIFAmJ4BQFuBwMFAmZnCQACAQkArAICAixHZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4uIFN0YXR1cyA9IAkApAMBBQJieAkAlwoFBQJkTQUCZE4FAmZmBQJkdgUCZE8BAmZoAwJmZAJkUQJkVwMJAQIhPQIJAJADAQgFAmZkCHBheW1lbnRzAAIJAAIBAh9leGFjdGx5IDIgcGF5bWVudHMgYXJlIGV4cGVjdGVkBAJmaQkBBXZhbHVlAQkAkQMCCAUCZmQIcGF5bWVudHMAAAQCZmoJAQV2YWx1ZQEJAJEDAggFAmZkCHBheW1lbnRzAAEEAmZrCQECZFAJCQDYBAEIBQJmZA10cmFuc2FjdGlvbklkBQJkUQgFAmZpBmFtb3VudAgFAmZpB2Fzc2V0SWQIBQJmagZhbW91bnQIBQJmagdhc3NldElkCQClCAEIBQJmZAZjYWxsZXIHBQJkVwQCZmwDCQEBIQEJAQJiagEIBQJmZAZjYWxsZXIDAwkBAmJrAAYJAAACBQJieAUBbAYJAAACBQJieAUBbgcDBQJmbAkAAgEJAKwCAgIsUHV0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluLiBTdGF0dXMgPSAJAKQDAQUCYngFAmZrAQJmbQECY2gEAmZuCQD8BwQFAmJkAgRlbWl0CQDMCAIFAmNoBQNuaWwFA25pbAMJAAACBQJmbgUCZm4EAmZvBAJhUQUCZm4DCQABAgUCYVECB0FkZHJlc3MEAmZwBQJhUQkA/AcEBQJmcAIEZW1pdAkAzAgCBQJjaAUDbmlsBQNuaWwFBHVuaXQDCQAAAgUCZm8FAmZvBQJjaAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECZnECAmNoAmFpBAJmcgMJAAACBQJhaQAAAAAJAGsDBQJjaAUCYWkFAWIJAJQKAgkAZQIFAmNoBQJmcgUCZnIBAmZzBAJmdAJmdQJhYgJhYwQCZnYJAAACBQJhYwUEdW5pdAQCZncJAQJiVgEJAQJicgEFAmJ6BAJmeAkBAmJWAQkBAmJyAQUCYkEEAmZ5AwkAAAIFAmZ1BQJiegYDCQAAAgUCZnUFAmJBBwkBAmJhAQINaW52YWxpZCBhc3NldAQCZnoDBQJmdgkAlAoCBQJmdwUCZngDBQJmeQkAlAoCCQBlAgUCZncFAmZ0BQJmeAkAlAoCBQJmdwkAZQIFAmZ4BQJmdAQCZkEIBQJmegJfMQQCZkIIBQJmegJfMgQCZkMDBQJmeQkAlAoCBQJmdAAACQCUCgIAAAUCZnQEAmZECAUCZkMCXzEEAmZFCAUCZkMCXzIEAmVUCAkBAmZxAgUCZkQFAmJmAl8xBAJlVQgJAQJmcQIFAmZFBQJiZgJfMQQCZkYJAQJmcQIFAmZ0BQJiZgQCZkcIBQJmRgJfMQQCZnIIBQJmRgJfMgQCZkgJAGQCBQJmQQUCZVQEAmZJCQBkAgUCZkIFAmVVBAJmSgkBAmJZAgkBAUQCBQJmSQUCYkMJAQFEAgUCZkgFAmJCBAJmSwkBAUgCBQJmSgUBYgQCZkwDBQJmeQUCZkEFAmZCBAJmTQkAtgIBBQJmTAQCZk4JALYCAQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJieQkArAICCQCsAgICBmFzc2V0IAkA2AQBBQJieQIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkEAmZPAwkAvwICBQJmTgUBZgYJAQJiYQECImluaXRpYWwgZGVwb3NpdCByZXF1aXJlcyBhbGwgY29pbnMDCQAAAgUCZk8FAmZPBAJmUAkAtgIBBQJmRwQCZlEJAJYDAQkAzAgCAAAJAMwIAgkAoAMBCQC6AgIJALkCAgUCZk4JALgCAgkBCnNxcnRCaWdJbnQECQC3AgIFAWQJALoCAgkAuQICBQJmUAUBZAUCZk0AEgASBQRET1dOBQFkBQFkBQNuaWwEAmV2AwUCZnYFA25pbAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVcABQJmSwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVgCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJmSwkAzAgCCQELU3RyaW5nRW50cnkCCQECYWECCQClCAEJAQV2YWx1ZQEFAmFiCQDYBAEJAQV2YWx1ZQEFAmFjCQECYkcKBQJmRAUCZkUFAmZRBQJmSwAAAAAFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAAAAAABQNuaWwEAmZSCQECYlkCCQEBRAIFAmZCBQJiQwkBAUQCBQJmQQUCYkIEAmZTCQEBSAIFAmZSBQFiBAJmVAQCZlUDBQJmeQkAlAoCBQJmRAUCZkEJAJQKAgUCZkUFAmZCBAJjaAgFAmZVAl8xBAJmVggFAmZVAl8yBAJmVwkAoAMBCQC8AgMFAmZOCQC2AgEJAGkCBQJjaAACCQC2AgEFAmZWCQBrAwkAZQIFAmZRBQJmVwUBYgUCZlcJAJcKBQUCZlEFAmV2BQJmcgUCZlQFAmZ5CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJmWAUCZlkCZkcCZnUCYWICYWMEAmZ2CQAAAgUCYWMFBHVuaXQEAmRrCQECYm0ABAJkbAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmRrBQF0BAJkbQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmRrBQF1BAJmWgkAzAgCAwkAAAIFAmZ1BQJieQYJAQJiYQECEGludmFsaWQgbHAgYXNzZXQFA25pbAMJAAACBQJmWgUCZloEAmdhAwkAAAIFAmZZBQJiegYDCQAAAgUCZlkFAmJBBwkBAmJhAQINaW52YWxpZCBhc3NldAQCZ2IDBQJnYQkAtgIBCQECYlYBCQECYnIBBQJiegkAtgIBCQECYlYBCQECYnIBBQJiQQQCZ2MDBQJnYQUCZGwFAmRtBAJnZAkBAmJWAQkBAmJyAQUCYnoEAmdlCQECYlYBCQECYnIBBQJiQQQCZ2YDBQJnYQUCZ2QFAmdlBAJnZwkAtgIBBQJnZgQCZk4JALYCAQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJieQkArAICCQCsAgICBmFzc2V0IAkA2AQBBQJieQIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkEAmdoCQC2AgEFAmZHBAJnaQkAlgMBCQDMCAIAAAkAzAgCCQCgAwEJALoCAgkAuQICBQJnYgkAuAICBQFkCQB2BgkAuAICBQFkCQC6AgIJALkCAgUCZ2gFAWQFAmZOABIFAWgAAAASBQRET1dOBQFkBQNuaWwEAmdqCQECZnECBQJnaQUCYmgEAmdrCAUCZ2oCXzEEAmZyCAUCZ2oCXzIEAmdsAwUCZ2EJAJYKBAUCZ2sAAAkAZQIFAmdkBQJnaQUCZ2UJAJYKBAAABQJnawUCZ2QJAGUCBQJnZQUCZ2kEAmdtCAUCZ2wCXzEEAmduCAUCZ2wCXzIEAmdvCAUCZ2wCXzMEAmdwCAUCZ2wCXzQEAmZKCQECYlkCCQEBRAIFAmdwBQJiQwkBAUQCBQJnbwUCYkIEAmZLCQEBSAIFAmZKBQFiBAJldgMFAmZ2BQNuaWwJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFkAgkApQgBCQEFdmFsdWUBBQJhYgkA2AQBCQEFdmFsdWUBBQJhYwkBAmJSBgUCZ20FAmduBQJmRwUCZksFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFXAAUCZksJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFYAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCZksFA25pbAQCZlIJAQJiWQIJAQFEAgUCZ2UFAmJDCQEBRAIFAmdkBQJiQgQCZlMJAQFIAgUCZlIFAWIEAmZUBAJncQkAaAIJAKADAQkAvAIDBQJnYgUCZ2gFAmZOAAIJAGsDCQBlAgUCZ2sFAmdxBQFiBQJncQkAlwoFBQJnawUCZXYFAmZyBQJmVAUCZ2EJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmdyAAQCZ3MJAQJhUwAEAmFRCQCdCAIFAmdzCQEBVQADCQABAgUCYVECBlN0cmluZwQCYVYFAmFRCQDZBAEFAmFWAwkAAQIFAmFRAgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IBAmd0AQJmZAQCYVEJAQJncgADCQABAgUCYVECCkJ5dGVWZWN0b3IEAmd1BQJhUQkAAAIIBQJmZA9jYWxsZXJQdWJsaWNLZXkFAmd1AwkAAQIFAmFRAgRVbml0CQAAAggFAmZkBmNhbGxlcgUEdGhpcwkAAgECC01hdGNoIGVycm9yAQJndgECZmQEAmd3CQACAQIRUGVybWlzc2lvbiBkZW5pZWQEAmFRCQECZ3IAAwkAAQIFAmFRAgpCeXRlVmVjdG9yBAJndQUCYVEDCQAAAggFAmZkD2NhbGxlclB1YmxpY0tleQUCZ3UGBQJndwMJAAECBQJhUQIEVW5pdAMJAAACCAUCZmQGY2FsbGVyBQR0aGlzBgUCZ3cJAAIBAgtNYXRjaCBlcnJvchwCZmQBCXJlYmFsYW5jZQAJAM4IAgkBAmNLAQkBAmFXAgUEdGhpcwkBAmFlAAkBAmNLAQkBAmFXAgUEdGhpcwkBAmFmAAJmZAEhY2FsY3VsYXRlQW1vdW50T3V0Rm9yU3dhcFJFQURPTkxZAwJneAJneQJnegQCZ0EDCQAAAgUCZ3kHBAJnQgkBAmFXAgUEdGhpcwkBAmFmAAQCZ0MJAQJhVwIFBHRoaXMJAQJhZQAJAJQKAgUCZ0IFAmdDBAJnQgkBAmFXAgUEdGhpcwkBAmFlAAQCZ0MJAQJhVwIFBHRoaXMJAQJhZgAJAJQKAgUCZ0IFAmdDBAJnQggFAmdBAl8xBAJnQwgFAmdBAl8yBAJnRAkBAmJWAQUCZ0MEAmdFCQECYlYBBQJnQgQCZ0YJAGsDBQJnRQUCZ3gJAGQCBQJnRAUCZ3gEAmdHCQC5AgIJALYCAQUCZ0QJALYCAQUCZ0UEAmdICQC5AgIJALcCAgkAtwICCQC2AgEJAQJiVgEFAmdDCQC2AgEFAmd4CQC2AgEFAmd6CQC4AgIJALYCAQkBAmJWAQUCZ0IJALYCAQUCZ0YEAmdJAwkAwAICBQJnSAUCZ0cGCQACAQIUbmV3IEsgaXMgZmV3ZXIgZXJyb3IDCQAAAgUCZ0kFAmdJCQCUCgIFA25pbAUCZ0YJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZmQBJmNhbGN1bGF0ZUFtb3VudE91dEZvclN3YXBBbmRTZW5kVG9rZW5zBQJneAJneQJnSgJnSwJnegQCZ0wKAAJiZwkA/AcEBQJiZAIXZ2V0U3dhcENvbnRyYWN0UkVBRE9OTFkFA25pbAUDbmlsAwkAAQIFAmJnAgZTdHJpbmcFAmJnCQACAQkArAICCQADAQUCYmcCGyBjb3VsZG4ndCBiZSBjYXN0IHRvIFN0cmluZwQCZ00KAAJiZwkA/AcEBQJiZAIaaXNQb29sU3dhcERpc2FibGVkUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJiZwIHQm9vbGVhbgUCYmcJAAIBCQCsAgIJAAMBBQJiZwIcIGNvdWxkbid0IGJlIGNhc3QgdG8gQm9vbGVhbgQCZ04DCQEBIQEJAQJiagEIBQJmZAZjYWxsZXIDAwkBAmJrAAYJAAACBQJieAUBbgYFAmdNBwQCZloJAMwIAgMDCQEBIQEFAmdOBgkBAmd0AQUCZmQGCQECYmEBAiJzd2FwIG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluCQDMCAIDCQBnAggJAQV2YWx1ZQEJAJEDAggFAmZkCHBheW1lbnRzAAAGYW1vdW50BQJneAYJAQJiYQECDFdyb25nIGFtb3VudAkAzAgCAwkAAAIIBQJmZAZjYWxsZXIJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAmdMBgkBAmJhAQIRUGVybWlzc2lvbiBkZW5pZWQFA25pbAMJAAACBQJmWgUCZloEAmZlCQEFdmFsdWUBCQCRAwIIBQJmZAhwYXltZW50cwAABAJnQwkBAmJyAQgFAmZlB2Fzc2V0SWQEAmdCAwkAAAIFAmd5BwkBAmFXAgUEdGhpcwkBAmFmAAkBAmFXAgUEdGhpcwkBAmFlAAQCZ0QJAGUCCQECYlYBBQJnQwgJAQV2YWx1ZQEJAJEDAggFAmZkCHBheW1lbnRzAAAGYW1vdW50BAJnRQkBAmJWAQUCZ0IEAmdGCQBrAwUCZ0UFAmd4CQBkAgUCZ0QFAmd4BAJnRwkAuQICCQC2AgEFAmdECQC2AgEFAmdFBAJnSAkAuQICCQC2AgEJAQJiVgEFAmdDCQC4AgIJALYCAQkBAmJWAQUCZ0IJALYCAQUCZ0YEAmdJAwkAwAICBQJnSAUCZ0cGCQACAQIUbmV3IEsgaXMgZmV3ZXIgZXJyb3IDCQAAAgUCZ0kFAmdJBAJnTwMJAGcCBQJnRgUCZ0oGCQACAQIsRXhjaGFuZ2UgcmVzdWx0IGlzIGZld2VyIGNvaW5zIHRoYW4gZXhwZWN0ZWQDCQAAAgUCZ08FAmdPBAJnUAkBAmFXAgUEdGhpcwkBAmFmAAQCZ1EJANkEAQUCZ1AEAmZyCQBrAwUCZ3gFAmd6AGQEAmdSCQECY0sBBQJnQwMJAAACBQJnUgUCZ1IEAmdTCQECY1ICBQJnQgkAZAIFAmdGBQJmcgMJAAACBQJnUwUCZ1MEAmdUCQEOU2NyaXB0VHJhbnNmZXIDBQJiZQUCZnIFAmdRCQCUCgIJAM4IAgkAzggCBQJnUwUCZ1IJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQUCZ0sJAGUCBQJnRgUCZnIJAQJicAEFAmdCCQDMCAIFAmdUBQNuaWwFAmdGCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmZkAQNwdXQCAmRRAmdVAwkAZgIAAAUCZFEJAAIBAiBJbnZhbGlkIHNsaXBwYWdlVG9sZXJhbmNlIHBhc3NlZAQCZmsJAQJmaAMFAmZkBQJkUQYEAmVzCAUCZmsCXzIEAmR4CAUCZmsCXzcEAmRPCAUCZmsCXzkEAmV0CAUCZmsDXzEwBAJldQgFAmZrA18xMQQCZ1YIBQJmawNfMTIEAmdXCAUCZmsDXzEzBAJmaQkAtgIBCAkBBXZhbHVlAQkAkQMCCAUCZmQIcGF5bWVudHMAAAZhbW91bnQEAmZqCQC2AgEICQEFdmFsdWUBCQCRAwIIBQJmZAhwYXltZW50cwABBmFtb3VudAQCZUoJAQJlQwMFAmZpBQJmagkAtgIBAAADCQAAAgUCZUoFAmVKBAJmbgkA/AcEBQJiZAIEZW1pdAkAzAgCBQJlcwUDbmlsBQNuaWwDCQAAAgUCZm4FAmZuBAJmbwQCYVEFAmZuAwkAAQIFAmFRAgdBZGRyZXNzBAJmcAUCYVEJAPwHBAUCZnACBGVtaXQJAMwIAgUCZXMFA25pbAUDbmlsBQR1bml0AwkAAAIFAmZvBQJmbwQCZ1gDCQBmAgUCZXQAAAkA/AcEBQJiRgIDcHV0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmdWBQJldAUDbmlsBQNuaWwDCQAAAgUCZ1gFAmdYBAJnWQMJAGYCBQJldQAACQD8BwQFAmJGAgNwdXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZ1cFAmV1BQNuaWwFA25pbAMJAAACBQJnWQUCZ1kEAmdaAwUCZ1UEAmhhCQD8BwQFAmJFAgVzdGFrZQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJkeAUCZXMFA25pbAMJAAACBQJoYQUCaGEFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUCZmQGY2FsbGVyBQJlcwUCZHgFA25pbAQCaGIJAQJlSwMAAAAAAAADCQAAAgUCaGIFAmhiBAJlQggFAmhiAl8yBAJoYwgFAmhiAl8xBAJoZAkBAmVQAgUCZUoFAmVCAwkAAAIFAmhkBQJoZAQCaGUJAPwHBAUEdGhpcwIJcmViYWxhbmNlBQNuaWwFA25pbAMJAAACBQJoZQUCaGUJAM4IAgkAzggCBQJkTwUCZ1oFAmhjCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmZkAQpwdXRGb3JGcmVlAQJoZgMJAGYCAAAFAmhmCQACAQIUSW52YWxpZCB2YWx1ZSBwYXNzZWQEAmZrCQECZmgDBQJmZAUCaGYHBAJkTwgFAmZrAl85BAJmaQkAtgIBCAkBBXZhbHVlAQkAkQMCCAUCZmQIcGF5bWVudHMAAAZhbW91bnQEAmZqCQC2AgEICQEFdmFsdWUBCQCRAwIIBQJmZAhwYXltZW50cwABBmFtb3VudAQCZUoJAQJlQwMFAmZpBQJmagkAtgIBAAADCQAAAgUCZUoFAmVKBAJoZwkBAmVLAwAAAAAAAAQCaGMIBQJoZwJfMQQCZUIIBQJoZwJfMgQCaGQJAQJlUAIFAmVKBQJlQgMJAAACBQJoZAUCaGQJAM4IAgUCZE8FAmhjCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmZkAQlwdXRPbmVUa24CAmhoAmhpBAJoagoAAmJnCQD8BwQFAmJkAihpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZFJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCYmcCB0Jvb2xlYW4FAmJnCQACAQkArAICCQADAQUCYmcCHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4EAmZsAwkBASEBCQECYmoBCAUCZmQGY2FsbGVyAwMDCQECYmsABgkAAAIFAmJ4BQFsBgkAAAIFAmJ4BQFuBgUCaGoHBAJmWgkAzAgCAwMJAQEhAQUCZmwGCQECZ3QBBQJmZAYJAQJiYQECIXB1dCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbgkAzAgCAwkAAAIJAJADAQgFAmZkCHBheW1lbnRzAAEGCQECYmEBAh5leGFjdGx5IDEgcGF5bWVudCBhcmUgZXhwZWN0ZWQFA25pbAMJAAACBQJmWgUCZloEAmhrCQCRAwIIBQJmZAhwYXltZW50cwAABAJmdQgFAmhrB2Fzc2V0SWQEAmZ0CAUCaGsGYW1vdW50BAJlSgMJAAACBQJmdQUCYnoJAQJlQwMJALYCAQUCZnQJALYCAQAACQC2AgEAAAMJAAACBQJmdQUCYkEJAQJlQwMJALYCAQAACQC2AgEFAmZ0CQC2AgEAAAkBAmJhAQIecGF5bWVudCBhc3NldCBpcyBub3Qgc3VwcG9ydGVkAwkAAAIFAmVKBQJlSgQCYWIIBQJmZAZjYWxsZXIEAmFjCAUCZmQNdHJhbnNhY3Rpb25JZAQCaGwJAQJmcwQFAmZ0BQJmdQUCYWIFAmFjAwkAAAIFAmhsBQJobAQCZnkIBQJobAJfNQQCaG0IBQJobAJfNAQCZnIIBQJobAJfMwQCZXYIBQJobAJfMgQCaG4IBQJobAJfMQQCaG8DAwkAZgIFAmhoAAAJAGYCBQJoaAUCaG4HCQECYmEBCQC5CQIJAMwIAgIfYW1vdW50IHRvIHJlY2VpdmUgaXMgbGVzcyB0aGFuIAkAzAgCCQCkAwEFAmhoBQNuaWwCAAUCaG4EAmZuCQECZm0BBQJobwMJAAACBQJmbgUCZm4EAmdaAwUCaGkEAmhwCQD8BwQFAmJFAgVzdGFrZQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJieQUCaG8FA25pbAMJAAACBQJocAUCaHAFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUCZmQGY2FsbGVyBQJobwUCYnkFA25pbAQCaHEDCQBmAgUCZnIAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJiZQUCZnIFAmZ1BQNuaWwFA25pbAQCaHIDCQAAAgUEdGhpcwUCYmUJAJQKAgAAAAADBQJmeQkAlAoCCQEBLQEFAmZyAAAJAJQKAgAACQEBLQEFAmZyBAJlTAgFAmhyAl8xBAJlTQgFAmhyAl8yBAJocwkBAmVLAwUCZUwFAmVNAAAEAmhjCAUCaHMCXzEEAmVCCAUCaHMCXzIEAmVXCQEFdmFsdWUBCQCiCAEFAmFqBAJoZAkBAmVQAgUCZUoFAmVCAwkAAAIFAmhkBQJoZAQCaGUJAPwHBAUEdGhpcwIJcmViYWxhbmNlBQNuaWwFA25pbAMJAAACBQJoZQUCaGUJAJQKAgkAzggCCQDOCAIJAM4IAgUCZXYFAmdaBQJocQUCaGMFAmhvCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmZkARFwdXRPbmVUa25SRUFET05MWQICZnUCZnQEAmh0CQECZnMEBQJmdAkBAmJwAQUCZnUFBHVuaXQFBHVuaXQEAmhuCAUCaHQCXzEEAmV2CAUCaHQCXzIEAmZyCAUCaHQCXzMEAmhtCAUCaHQCXzQEAmZ5CAUCaHQCXzUJAJQKAgUDbmlsCQCVCgMFAmhuBQJmcgUCaG0CZmQBCWdldE9uZVRrbgICaHUCaGgEAmhqCgACYmcJAPwHBAUCYmQCKGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJiZwIHQm9vbGVhbgUCYmcJAAIBCQCsAgIJAAMBBQJiZwIcIGNvdWxkbid0IGJlIGNhc3QgdG8gQm9vbGVhbgQCZmcDCQEBIQEJAQJiagEIBQJmZAZjYWxsZXIDAwkBAmJrAAYJAAACBQJieAUBbgYFAmhqBwQCZloJAMwIAgMDCQEBIQEFAmZnBgkBAmd0AQUCZmQGCQECYmEBAiFnZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJmZAhwYXltZW50cwABBgkBAmJhAQIeZXhhY3RseSAxIHBheW1lbnQgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZloFAmZaBAJmWQkBAmJwAQUCaHUEAmhrCQCRAwIIBQJmZAhwYXltZW50cwAABAJmdQgFAmhrB2Fzc2V0SWQEAmZHCAUCaGsGYW1vdW50BAJlSgkBAmVDAwkAtgIBAAAJALYCAQAACQC2AgEAAAMJAAACBQJlSgUCZUoEAmFiCAUCZmQGY2FsbGVyBAJhYwgFAmZkDXRyYW5zYWN0aW9uSWQEAmh2CQECZlgFBQJmWQUCZkcFAmZ1BQJhYgUCYWMDCQAAAgUCaHYFAmh2BAJnYQgFAmh2Al81BAJobQgFAmh2Al80BAJmcggFAmh2Al8zBAJldggFAmh2Al8yBAJodwgFAmh2Al8xBAJjaAMDCQBmAgUCaGgAAAkAZgIFAmhoBQJodwcJAQJiYQEJALkJAgkAzAgCAh9hbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCaGgFA25pbAIABQJodwQCaHgJAPwHBAUCYmQCBGJ1cm4JAMwIAgUCZkcFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZnUFAmZHBQNuaWwDCQAAAgUCaHgFAmh4BAJnUwkBAmNSAgUCaHUJAGQCBQJjaAkAlgMBCQDMCAIAAAkAzAgCBQJmcgUDbmlsBAJoeQkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJhYgUCY2gFAmZZBQNuaWwEAmhxAwkAZgIFAmZyAAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYmUFAmZyBQJmWQUDbmlsBQNuaWwEAmh6BAJoQQMJAAACBQR0aGlzBQJiZQAABQJmcgMFAmdhCQCUCgIJAQEtAQkAZAIFAmNoBQJoQQAACQCUCgIAAAkBAS0BCQBkAgUCY2gFAmhBBAJlTAgFAmh6Al8xBAJlTQgFAmh6Al8yBAJoQgkBAmVLAwUCZUwFAmVNAAAEAmhjCAUCaEICXzEEAmVCCAUCaEICXzIEAmhkCQECZVACBQJlSgUCZUIDCQAAAgUCaGQFAmhkCQCUCgIJAM4IAgkAzggCCQDOCAIJAM4IAgUCZXYFAmdTBQJoeQUCaHEFAmhjBQJjaAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJmZAERZ2V0T25lVGtuUkVBRE9OTFkCAmZZAmZHBAJoQwkBAmZYBQkBAmJwAQUCZlkFAmZHBQJieQUEdW5pdAUEdW5pdAQCaHcIBQJoQwJfMQQCZXYIBQJoQwJfMgQCZnIIBQJoQwJfMwQCaG0IBQJoQwJfNAQCZ2EIBQJoQwJfNQkAlAoCBQNuaWwJAJUKAwUCaHcFAmZyBQJobQJmZAETdW5zdGFrZUFuZEdldE9uZVRrbgMCaEQCaHUCaGgEAmhqCgACYmcJAPwHBAUCYmQCKGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJiZwIHQm9vbGVhbgUCYmcJAAIBCQCsAgIJAAMBBQJiZwIcIGNvdWxkbid0IGJlIGNhc3QgdG8gQm9vbGVhbgQCZmcDCQEBIQEJAQJiagEIBQJmZAZjYWxsZXIDAwkBAmJrAAYJAAACBQJieAUBbgYFAmhqBwQCZloJAMwIAgMDCQEBIQEFAmZnBgkBAmd0AQUCZmQGCQECYmEBAiFnZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJmZAhwYXltZW50cwAABgkBAmJhAQIYbm8gcGF5bWVudHMgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZloFAmZaBAJmWQkBAmJwAQUCaHUEAmFiCAUCZmQGY2FsbGVyBAJhYwgFAmZkDXRyYW5zYWN0aW9uSWQEAmVKCQECZUMDCQC2AgEAAAkAtgIBAAAJALYCAQAAAwkAAAIFAmVKBQJlSgQCaEUJAPwHBAUCYkUCB3Vuc3Rha2UJAMwIAgkA2AQBBQJieQkAzAgCBQJoRAUDbmlsBQNuaWwDCQAAAgUCaEUFAmhFBAJoRgkBAmZYBQUCZlkFAmhEBQJieQUCYWIFAmFjAwkAAAIFAmhGBQJoRgQCZ2EIBQJoRgJfNQQCaG0IBQJoRgJfNAQCZnIIBQJoRgJfMwQCZXYIBQJoRgJfMgQCaHcIBQJoRgJfMQQCY2gDAwkAZgIFAmhoAAAJAGYCBQJoaAUCaHcHCQECYmEBCQC5CQIJAMwIAgIfYW1vdW50IHRvIHJlY2VpdmUgaXMgbGVzcyB0aGFuIAkAzAgCCQCkAwEFAmhoBQNuaWwCAAUCaHcEAmh4CQD8BwQFAmJkAgRidXJuCQDMCAIFAmhEBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmJ5BQJoRAUDbmlsAwkAAAIFAmh4BQJoeAQCZ1MJAQJjUgIFAmh1CQBkAgUCY2gJAJYDAQkAzAgCAAAJAMwIAgUCZnIFA25pbAQCaHkJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAmZkBmNhbGxlcgUCY2gFAmZZBQNuaWwEAmhxAwkAZgIFAmZyAAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYmUFAmZyBQJmWQUDbmlsBQNuaWwEAmhHBAJoQQMJAAACBQR0aGlzBQJiZQAABQJmcgMFAmdhCQCUCgIJAQEtAQkAZAIFAmNoBQJoQQAACQCUCgIAAAkBAS0BCQBkAgUCY2gFAmhBBAJlTAgFAmhHAl8xBAJlTQgFAmhHAl8yBAJoSAkBAmVLAwUCZUwFAmVNAAAEAmhjCAUCaEgCXzEEAmVCCAUCaEgCXzIEAmhkCQECZVACBQJlSgUCZUIDCQAAAgUCaGQFAmhkCQCUCgIJAM4IAgkAzggCCQDOCAIJAM4IAgUCZXYFAmdTBQJoeQUCaHEFAmhjBQJjaAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJmZAEDZ2V0AAQCZWcJAQJmYwEFAmZkBAJkTQgFAmVnAl8xBAJkTggFAmVnAl8yBAJmZggFAmVnAl8zBAJkdggFAmVnAl80BAJkTwgFAmVnAl81BAJnUwkBAmNXAgUCZE0FAmROBAJlSgkBAmVDAwkAtgIBAAAJALYCAQAACQC2AgEAAAMJAAACBQJlSgUCZUoEAmhJCQD8BwQFAmJkAgRidXJuCQDMCAIFAmZmBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmR2BQJmZgUDbmlsAwkAAAIFAmhJBQJoSQQCaEoJAQJlSwMJAQEtAQUCZE0JAQEtAQUCZE4AAAQCaGMIBQJoSgJfMQQCZUIIBQJoSgJfMgQCaGQJAQJlUAIFAmVKBQJlQgMJAAACBQJoZAUCaGQJAM4IAgkAzggCBQJnUwUCZE8FAmhjCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmZkAQlnZXROb0xlc3MCAmhLAmhMBAJlZwkBAmZjAQUCZmQEAmRNCAUCZWcCXzEEAmROCAUCZWcCXzIEAmZmCAUCZWcCXzMEAmR2CAUCZWcCXzQEAmRPCAUCZWcCXzUDCQBmAgUCaEsFAmRNCQACAQkArAICCQCsAgIJAKwCAgIcbm9MZXNzVGhlbkFtdEFzc2V0IGZhaWxlZDogIAkApAMBBQJkTQIDIDwgCQCkAwEFAmhLAwkAZgIFAmhMBQJkTgkAAgEJAKwCAgkArAICCQCsAgICHW5vTGVzc1RoZW5QcmljZUFzc2V0IGZhaWxlZDogCQCkAwEFAmROAgMgPCAJAKQDAQUCaEwEAmdTCQECY1cCBQJkTQUCZE4EAmVKCQECZUMDCQC2AgEAAAkAtgIBAAAJALYCAQAAAwkAAAIFAmVKBQJlSgQCaEkJAPwHBAUCYmQCBGJ1cm4JAMwIAgUCZmYFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZHYFAmZmBQNuaWwDCQAAAgUCaEkFAmhJBAJoTQkBAmVLAwkBAS0BBQJkTQkBAS0BBQJkTgAABAJoYwgFAmhNAl8xBAJlQggFAmhNAl8yBAJoZAkBAmVQAgUCZUoFAmVCAwkAAAIFAmhkBQJoZAkAzggCCQDOCAIFAmdTBQJkTwUCaGMJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZmQBDXVuc3Rha2VBbmRHZXQBAmNoBAJoTgMJAQIhPQIJAJADAQgFAmZkCHBheW1lbnRzAAAJAAIBAhhObyBwYXltZW50cyBhcmUgZXhwZWN0ZWQGAwkAAAIFAmhOBQJoTgQCZGsJAQJibQAEAmR4CQDZBAEJAJEDAgUCZGsFAXEEAmVKCQECZUMDCQC2AgEAAAkAtgIBAAAJALYCAQAAAwkAAAIFAmVKBQJlSgQCaEUJAPwHBAUCYkUCB3Vuc3Rha2UJAMwIAgkA2AQBBQJkeAkAzAgCBQJjaAUDbmlsBQNuaWwDCQAAAgUCaEUFAmhFBAJlZwkBAmR0BAkA2AQBCAUCZmQNdHJhbnNhY3Rpb25JZAkA2AQBBQJkeAUCY2gIBQJmZAZjYWxsZXIEAmRNCAUCZWcCXzEEAmROCAUCZWcCXzIEAmRBCQENcGFyc2VJbnRWYWx1ZQEIBQJlZwJfOQQCZE8IBQJlZwNfMTAEAmdTCQECY1cCBQJkTQUCZE4EAmZnAwkBASEBCQECYmoBCAUCZmQGY2FsbGVyAwkBAmJrAAYJAAACBQJieAUBbgcEAmhPAwUCZmcJAAIBCQCsAgICLEdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbi4gU3RhdHVzID0gCQCkAwEFAmRBBgMJAAACBQJoTwUCaE8EAmhJCQD8BwQFAmJkAgRidXJuCQDMCAIFAmNoBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmR4BQJjaAUDbmlsAwkAAAIFAmhJBQJoSQQCaFAJAQJlSwMJAQEtAQUCZE0JAQEtAQUCZE4AAAQCaGMIBQJoUAJfMQQCZUIIBQJoUAJfMgQCaGQJAQJlUAIFAmVKBQJlQgMJAAACBQJoZAUCaGQJAM4IAgkAzggCBQJnUwUCZE8FAmhjCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmZkARN1bnN0YWtlQW5kR2V0Tm9MZXNzAwJoRAJoUQJoTAQCZmcDCQEBIQEJAQJiagEIBQJmZAZjYWxsZXIDCQECYmsABgkAAAIFAmJ4BQFuBwQCZloJAMwIAgMJAQEhAQUCZmcGCQACAQIhZ2V0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluCQDMCAIDCQAAAgkAkAMBCAUCZmQIcGF5bWVudHMAAAYJAAIBAhhubyBwYXltZW50cyBhcmUgZXhwZWN0ZWQFA25pbAMJAAACBQJmWgUCZloEAmVKCQECZUMDCQC2AgEAAAkAtgIBAAAJALYCAQAAAwkAAAIFAmVKBQJlSgQCaEUJAPwHBAUCYkUCB3Vuc3Rha2UJAMwIAgkA2AQBBQJieQkAzAgCBQJoRAUDbmlsBQNuaWwDCQAAAgUCaEUFAmhFBAJlZwkBAmR0BAkA2AQBCAUCZmQNdHJhbnNhY3Rpb25JZAkA2AQBBQJieQUCaEQIBQJmZAZjYWxsZXIEAmRNCAUCZWcCXzEEAmROCAUCZWcCXzIEAmRPCAUCZWcDXzEwBAJnUwkBAmNXAgUCZE0FAmROBAJoUgkAzAgCAwkAZwIFAmRNBQJoUQYJAAIBCQC5CQIJAMwIAgIsYW1vdW50IGFzc2V0IGFtb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJoUQUDbmlsAgAJAMwIAgMJAGcCBQJkTgUCaEwGCQACAQkAuQkCCQDMCAICK3ByaWNlIGFzc2V0IGFtb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJoTAUDbmlsAgAFA25pbAMJAAACBQJoUgUCaFIEAmhJCQD8BwQFAmJkAgRidXJuCQDMCAIFAmhEBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmJ5BQJoRAUDbmlsAwkAAAIFAmhJBQJoSQQCaFMJAQJlSwMJAQEtAQUCZE0JAQEtAQUCZE4AAAQCaGMIBQJoUwJfMQQCZUIIBQJoUwJfMgQCaGQJAQJlUAIFAmVKBQJlQgMJAAACBQJoZAUCaGQJAM4IAgkAzggCBQJnUwUCZE8FAmhjCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmZkAQhhY3RpdmF0ZQICaFQCaFUDCQECIT0CCQClCAEIBQJmZAZjYWxsZXIJAKUIAQUCYmQJAAIBAhJwZXJtaXNzaW9ucyBkZW5pZWQJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCCQECYWUABQJoVAkAzAgCCQELU3RyaW5nRW50cnkCCQECYWYABQJoVQUDbmlsAgdzdWNjZXNzAmZkAQpyZWZyZXNoS0xwAAQCaFYJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUCYWsAAAQCaFcDCQBnAgkAZQIFBmhlaWdodAUCaFYFAmFuBQR1bml0CQECYmEBCQC5CQIJAMwIAgkApAMBBQJhbgkAzAgCAi8gYmxvY2tzIGhhdmUgbm90IHBhc3NlZCBzaW5jZSB0aGUgcHJldmlvdXMgY2FsbAUDbmlsAgADCQAAAgUCaFcFAmhXBAJlVwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCoAwEJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwUCYWoCATAJAQJiYwECC2ludmFsaWQga0xwBAJoWAkBAmVLAwAAAAAAAAQCaFkIBQJoWAJfMQQCZUIIBQJoWAJfMgQCZU4DCQECIT0CBQJlVwUCZUIFAmhZCQECYmEBAhJub3RoaW5nIHRvIHJlZnJlc2gJAJQKAgUCZU4JAKYDAQUCZUIJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZmQBHGdldFBvb2xDb25maWdXcmFwcGVyUkVBRE9OTFkACQCUCgIFA25pbAkBAmJtAAJmZAEcZ2V0QWNjQmFsYW5jZVdyYXBwZXJSRUFET05MWQECYXAJAJQKAgUDbmlsCQECYlYBBQJhcAJmZAEZY2FsY1ByaWNlc1dyYXBwZXJSRUFET05MWQMCZGUCZGYCZGoEAmRzCQECZGkDBQJkZQUCZGYFAmRqCQCUCgIFA25pbAkAzAgCCQCmAwEJAJEDAgUCZHMAAAkAzAgCCQCmAwEJAJEDAgUCZHMAAQkAzAgCCQCmAwEJAJEDAgUCZHMAAgUDbmlsAmZkARR0b1gxOFdyYXBwZXJSRUFET05MWQIBRQFGCQCUCgIFA25pbAkApgMBCQEBRAIFAUUFAUYCZmQBFmZyb21YMThXcmFwcGVyUkVBRE9OTFkCAUkBSgkAlAoCBQNuaWwJAQFIAgkApwMBBQFJBQFKAmZkAR5jYWxjUHJpY2VCaWdJbnRXcmFwcGVyUkVBRE9OTFkCAmJaAmNhCQCUCgIFA25pbAkApgMBCQECYlkCCQCnAwEFAmJaCQCnAwEFAmNhAmZkASNlc3RpbWF0ZVB1dE9wZXJhdGlvbldyYXBwZXJSRUFET05MWQkCZHUCZFECZFICZFMCZFQCZFUCYWICZFYCZFcJAJQKAgUDbmlsCQECZFAJBQJkdQUCZFEFAmRSBQJkUwUCZFQFAmRVBQJhYgUCZFYFAmRXAmZkASNlc3RpbWF0ZUdldE9wZXJhdGlvbldyYXBwZXJSRUFET05MWQQCZHUCZHYCZHcCYWIEAmVnCQECZHQEBQJkdQUCZHYFAmR3CQERQGV4dHJOYXRpdmUoMTA2MikBBQJhYgkAlAoCBQNuaWwJAJwKCggFAmVnAl8xCAUCZWcCXzIIBQJlZwJfMwgFAmVnAl80CAUCZWcCXzUIBQJlZwJfNggFAmVnAl83CQCmAwEIBQJlZwJfOAgFAmVnAl85CAUCZWcDXzEwAmZkAQ1zdGF0c1JFQURPTkxZAAQCZGsJAQJibQAEAmR4CQDZBAEJAJEDAgUCZGsFAXEEAmhaCQCRAwIFAmRrBQFyBAJnUAkAkQMCBQJkawUBcwQCZFoJAJEDAgUCZGsFAXYEAmVhCQCRAwIFAmRrBQF3BAJkbAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmRrBQF0BAJkbQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmRrBQF1BAJpYQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJkeAkArAICCQCsAgICBkFzc2V0IAkA2AQBBQJkeAIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkEAmliCQECYlYBBQJoWgQCaWMJAQJiVgEFAmdQBAJpZAMJAAACBQJpYQAACQDMCAIFAWUJAMwIAgUBZQkAzAgCBQFlBQNuaWwJAQJkaQMFAmliBQJpYwUCaWEEAmRIAAAEAmllCQEBSAIJAJEDAgUCaWQAAQUBYgQCaWYJAQFIAgkAkQMCBQJpZAACBQFiBAJpZwkBBXZhbHVlAQkAmggCBQJiZAkBAmFEAQkApQgBBQR0aGlzCQCUCgIFA25pbAkAuQkCCQDMCAICDiVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCaWIJAMwIAgkApAMBBQJpYwkAzAgCCQCkAwEFAmlhCQDMCAIJAKQDAQUCZEgJAMwIAgkApAMBBQJpZQkAzAgCCQCkAwEFAmlmCQDMCAIJAKQDAQUCaWcFA25pbAUBagJmZAEgZXZhbHVhdGVQdXRCeUFtb3VudEFzc2V0UkVBRE9OTFkBAmRSBAJkawkBAmJtAAQCZHgJANkEAQkAkQMCBQJkawUBcQQCZFgJAJEDAgUCZGsFAXIEAmR5CQDZBAEFAmRYBAJkWQkAkQMCBQJkawUBcwQCZHoJANkEAQUCZFkEAmRsCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCZGsFAXQEAmRtCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCZGsFAXUEAmRBCQCRAwIFAmRrBQFwBAJpYQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJkeAkArAICCQCsAgICBkFzc2V0IAkA2AQBBQJkeAIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkEAmliCQECYlYBBQJkWAQCaWMJAQJiVgEFAmRZBAJkZwkBAUQCBQJpYgUCZGwEAmRoCQEBRAIFAmljBQJkbQQCZEcDCQAAAgUCaWEAAAUBZQkBAmJZAgUCZGgFAmRnBAJlZAkBAUQCBQJkUgUCZGwEAmVlCQC8AgMFAmVkBQJkRwUBZAQCZFQJAQFIAgUCZWUFAmRtBAJmawkBAmRQCQIAAKDCHgUCZFIFAmR5BQJkVAUCZHoCAAYHBAJlbwgFAmZrAl8xBAJpaAgFAmZrAl8zBAJkQwgFAmZrAl80BAJkRQgFAmZrAl81BAJkQggFAmZrAl82CQCUCgIFA25pbAkAuQkCCQDMCAICECVkJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJlbwkAzAgCCQCkAwEJAQFIAgUCZEcFAWIJAMwIAgkApAMBBQJkQwkAzAgCCQCkAwEFAmRFCQDMCAIJAKQDAQUCZEIJAMwIAgUCZEEJAMwIAgkApAMBBQJkUgkAzAgCCQCkAwEFAmRUBQNuaWwFAWoCZmQBH2V2YWx1YXRlUHV0QnlQcmljZUFzc2V0UkVBRE9OTFkBAmRUBAJkawkBAmJtAAQCZHgJANkEAQkAkQMCBQJkawUBcQQCZFgJAJEDAgUCZGsFAXIEAmR5CQDZBAEFAmRYBAJkWQkAkQMCBQJkawUBcwQCZHoJANkEAQUCZFkEAmRsCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCZGsFAXQEAmRtCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCZGsFAXUEAmRBCQCRAwIFAmRrBQFwBAJpYQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJkeAkArAICCQCsAgICBkFzc2V0IAkA2AQBBQJkeAIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkEAmlpCQECYlYBBQJkWAQCaWoJAQJiVgEFAmRZBAJpawkBAUQCBQJpaQUCZGwEAmlsCQEBRAIFAmlqBQJkbQQCZEcDCQAAAgUCaWEAAAUBZQkBAmJZAgUCaWwFAmlrBAJlZQkBAUQCBQJkVAUCZG0EAmVkCQC8AgMFAmVlBQFkBQJkRwQCZFIJAQFIAgUCZWQFAmRsBAJmawkBAmRQCQIAAKDCHgUCZFIFAmR5BQJkVAUCZHoCAAYHBAJlbwgFAmZrAl8xBAJpaAgFAmZrAl8zBAJkQwgFAmZrAl80BAJkRQgFAmZrAl81BAJkQggFAmZrAl82CQCUCgIFA25pbAkAuQkCCQDMCAICECVkJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJlbwkAzAgCCQCkAwEJAQFIAgUCZEcFAWIJAMwIAgkApAMBBQJkQwkAzAgCCQCkAwEFAmRFCQDMCAIJAKQDAQUCZEIJAMwIAgUCZEEJAMwIAgkApAMBBQJkUgkAzAgCCQCkAwEFAmRUBQNuaWwFAWoCZmQBE2V2YWx1YXRlR2V0UkVBRE9OTFkCAmltAmluBAJlZwkBAmR0BAIABQJpbQUCaW4FBHRoaXMEAmRNCAUCZWcCXzEEAmROCAUCZWcCXzIEAmRDCAUCZWcCXzUEAmRFCAUCZWcCXzYEAmRCCAUCZWcCXzcEAmRICAUCZWcCXzgEAmRBCQENcGFyc2VJbnRWYWx1ZQEIBQJlZwJfOQkAlAoCBQNuaWwJALkJAgkAzAgCAg4lZCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFAmRNCQDMCAIJAKQDAQUCZE4JAMwIAgkApAMBBQJkQwkAzAgCCQCkAwEFAmRFCQDMCAIJAKQDAQUCZEIJAMwIAgkApgMBBQJkSAkAzAgCCQCkAwEFAmRBBQNuaWwFAWoBAmlvAQJpcAAEAmlxBAJhUQkBAmdyAAMJAAECBQJhUQIKQnl0ZVZlY3RvcgQCZ3UFAmFRBQJndQMJAAECBQJhUQIEVW5pdAgFAmlvD3NlbmRlclB1YmxpY0tleQkAAgECC01hdGNoIGVycm9yBAJhUQUCaW8DCQABAgUCYVECBU9yZGVyBAJlUwUCYVEEAmlyCQECYmwABAJpcwMJAQJlTwAJAJQKAgYCAAkBAmVSAQUCZVMEAmFLCAUCaXMCXzEEAmFMCAUCaXMCXzIEAmFNCQD0AwMIBQJlUwlib2R5Qnl0ZXMJAJEDAggFAmVTBnByb29mcwAACAUCZVMPc2VuZGVyUHVibGljS2V5BAJhTgkA9AMDCAUCZVMJYm9keUJ5dGVzCQCRAwIIBQJlUwZwcm9vZnMAAQUCaXIDAwMFAmFLBQJhTQcFAmFOBwYJAQJhSgQFAmFLBQJhTAUCYU0FAmFOAwkAAQIFAmFRAhRTZXRTY3JpcHRUcmFuc2FjdGlvbgQCYVYFAmFRAwkA9AMDCAUCaW8JYm9keUJ5dGVzCQCRAwIIBQJpbwZwcm9vZnMAAAUCaXEGBAJpdAkA9gMBCQEFdmFsdWUBCAUCYVYGc2NyaXB0BAJpdQkA2wQBCQEFdmFsdWUBCQCdCAIFAmJkCQECYUYABAJpdgkA8QcBBQR0aGlzAwkAAAIFAml1BQJpdAkBAiE9AgUCaXYFAml0BwkA9AMDCAUCaW8JYm9keUJ5dGVzCQCRAwIIBQJpbwZwcm9vZnMAAAUCaXHkYp+E", "height": 3176108, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: FZVHbAhSLodbEyek11YUWN5QQ2o7eavyGRaGbbv5YztA Next: BmmGTp5t8ZnVsDvUuKSPYGNZ8EaVJN5C7xCiiTrsfCDf Diff:
OldNewDifferences
10291029 let gB = if ((gy == false))
10301030 then aW(this, af())
10311031 else aW(this, ae())
1032- let gD = ((bV(gC) - value(fd.payments[0]).amount) - gz)
1032+ let gD = (bV(gC) - value(fd.payments[0]).amount)
10331033 let gE = bV(gB)
10341034 let gF = fraction(gE, gx, (gD + gx))
10351035 let gG = (toBigInt(gD) * toBigInt(gE))
1036- let gH = ((toBigInt(bV(gC)) + toBigInt(gz)) * (toBigInt(bV(gB)) - toBigInt(gF)))
1036+ let gH = (toBigInt(bV(gC)) * (toBigInt(bV(gB)) - toBigInt(gF)))
10371037 let gI = if ((gH >= gG))
10381038 then true
10391039 else throw("new K is fewer error")
10441044 else throw("Exchange result is fewer coins than expected")
10451045 if ((gO == gO))
10461046 then {
1047- let eL = if (gy)
1048- then -(gF)
1049- else gz
1050- let eM = if (gy)
1051- then gz
1052- else -(gF)
1053- let gP = eK(eL, eM, 0)._1
1054- if ((gP == gP))
1047+ let gP = aW(this, af())
1048+ let gQ = fromBase58String(gP)
1049+ let fr = fraction(gx, gz, 100)
1050+ let gR = cK(gC)
1051+ if ((gR == gR))
10551052 then {
1056- let gQ = cK(gC)
1057- if ((gQ == gQ))
1053+ let gS = cR(gB, (gF + fr))
1054+ if ((gS == gS))
10581055 then {
1059- let gR = cR(gB, gF)
1060- if ((gR == gR))
1061- then $Tuple2(((gR ++ gQ) ++ [ScriptTransfer(addressFromStringValue(gK), gF, bp(gB))]), gF)
1062- else throw("Strict value is not equal to itself.")
1056+ let gT = ScriptTransfer(be, fr, gQ)
1057+ $Tuple2(((gS ++ gR) ++ [ScriptTransfer(addressFromStringValue(gK), (gF - fr), bp(gB)), gT]), gF)
10631058 }
10641059 else throw("Strict value is not equal to itself.")
10651060 }
10751070
10761071
10771072 @Callable(fd)
1078-func put (dQ,gS) = if ((0 > dQ))
1073+func put (dQ,gU) = if ((0 > dQ))
10791074 then throw("Invalid slippageTolerance passed")
10801075 else {
10811076 let fk = fh(fd, dQ, true)
10841079 let dO = fk._9
10851080 let et = fk._10
10861081 let eu = fk._11
1087- let gT = fk._12
1088- let gU = fk._13
1082+ let gV = fk._12
1083+ let gW = fk._13
10891084 let fi = toBigInt(value(fd.payments[0]).amount)
10901085 let fj = toBigInt(value(fd.payments[1]).amount)
10911086 let eJ = eC(fi, fj, toBigInt(0))
11051100 }
11061101 if ((fo == fo))
11071102 then {
1108- let gV = if ((et > 0))
1109- then invoke(bF, "put", nil, [AttachedPayment(gT, et)])
1103+ let gX = if ((et > 0))
1104+ then invoke(bF, "put", nil, [AttachedPayment(gV, et)])
11101105 else nil
1111- if ((gV == gV))
1106+ if ((gX == gX))
11121107 then {
1113- let gW = if ((eu > 0))
1114- then invoke(bF, "put", nil, [AttachedPayment(gU, eu)])
1108+ let gY = if ((eu > 0))
1109+ then invoke(bF, "put", nil, [AttachedPayment(gW, eu)])
11151110 else nil
1116- if ((gW == gW))
1111+ if ((gY == gY))
11171112 then {
1118- let gX = if (gS)
1113+ let gZ = if (gU)
11191114 then {
1120- let gY = invoke(bE, "stake", nil, [AttachedPayment(dx, es)])
1121- if ((gY == gY))
1115+ let ha = invoke(bE, "stake", nil, [AttachedPayment(dx, es)])
1116+ if ((ha == ha))
11221117 then nil
11231118 else throw("Strict value is not equal to itself.")
11241119 }
11251120 else [ScriptTransfer(fd.caller, es, dx)]
1126- let gZ = eK(0, 0, 0)
1127- if ((gZ == gZ))
1121+ let hb = eK(0, 0, 0)
1122+ if ((hb == hb))
11281123 then {
1129- let eB = gZ._2
1130- let gP = gZ._1
1131- let ha = eP(eJ, eB)
1132- if ((ha == ha))
1124+ let eB = hb._2
1125+ let hc = hb._1
1126+ let hd = eP(eJ, eB)
1127+ if ((hd == hd))
11331128 then {
1134- let hb = invoke(this, "rebalance", nil, nil)
1135- if ((hb == hb))
1136- then ((dO ++ gX) ++ gP)
1129+ let he = invoke(this, "rebalance", nil, nil)
1130+ if ((he == he))
1131+ then ((dO ++ gZ) ++ hc)
11371132 else throw("Strict value is not equal to itself.")
11381133 }
11391134 else throw("Strict value is not equal to itself.")
11541149
11551150
11561151 @Callable(fd)
1157-func putForFree (hc) = if ((0 > hc))
1152+func putForFree (hf) = if ((0 > hf))
11581153 then throw("Invalid value passed")
11591154 else {
1160- let fk = fh(fd, hc, false)
1155+ let fk = fh(fd, hf, false)
11611156 let dO = fk._9
11621157 let fi = toBigInt(value(fd.payments[0]).amount)
11631158 let fj = toBigInt(value(fd.payments[1]).amount)
11641159 let eJ = eC(fi, fj, toBigInt(0))
11651160 if ((eJ == eJ))
11661161 then {
1167- let hd = eK(0, 0, 0)
1168- let gP = hd._1
1169- let eB = hd._2
1170- let ha = eP(eJ, eB)
1171- if ((ha == ha))
1172- then (dO ++ gP)
1162+ let hg = eK(0, 0, 0)
1163+ let hc = hg._1
1164+ let eB = hg._2
1165+ let hd = eP(eJ, eB)
1166+ if ((hd == hd))
1167+ then (dO ++ hc)
11731168 else throw("Strict value is not equal to itself.")
11741169 }
11751170 else throw("Strict value is not equal to itself.")
11781173
11791174
11801175 @Callable(fd)
1181-func putOneTkn (he,hf) = {
1182- let hg = {
1176+func putOneTkn (hh,hi) = {
1177+ let hj = {
11831178 let bg = invoke(bd, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
11841179 if ($isInstanceOf(bg, "Boolean"))
11851180 then bg
11921187 then true
11931188 else (bx == n))
11941189 then true
1195- else hg
1190+ else hj
11961191 else false
11971192 let fZ = [if (if (!(fl))
11981193 then true
12031198 else ba("exactly 1 payment are expected")]
12041199 if ((fZ == fZ))
12051200 then {
1206- let hh = fd.payments[0]
1207- let fu = hh.assetId
1208- let ft = hh.amount
1201+ let hk = fd.payments[0]
1202+ let fu = hk.assetId
1203+ let ft = hk.amount
12091204 let eJ = if ((fu == bz))
12101205 then eC(toBigInt(ft), toBigInt(0), toBigInt(0))
12111206 else if ((fu == bA))
12151210 then {
12161211 let ab = fd.caller
12171212 let ac = fd.transactionId
1218- let hi = fs(ft, fu, ab, ac)
1219- if ((hi == hi))
1213+ let hl = fs(ft, fu, ab, ac)
1214+ if ((hl == hl))
12201215 then {
1221- let fy = hi._5
1222- let hj = hi._4
1223- let fr = hi._3
1224- let ev = hi._2
1225- let hk = hi._1
1226- let hl = if (if ((he > 0))
1227- then (he > hk)
1216+ let fy = hl._5
1217+ let hm = hl._4
1218+ let fr = hl._3
1219+ let ev = hl._2
1220+ let hn = hl._1
1221+ let ho = if (if ((hh > 0))
1222+ then (hh > hn)
12281223 else false)
1229- then ba(makeString(["amount to receive is less than ", toString(he)], ""))
1230- else hk
1231- let fn = fm(hl)
1224+ then ba(makeString(["amount to receive is less than ", toString(hh)], ""))
1225+ else hn
1226+ let fn = fm(ho)
12321227 if ((fn == fn))
12331228 then {
1234- let gX = if (hf)
1229+ let gZ = if (hi)
12351230 then {
1236- let hm = invoke(bE, "stake", nil, [AttachedPayment(by, hl)])
1237- if ((hm == hm))
1231+ let hp = invoke(bE, "stake", nil, [AttachedPayment(by, ho)])
1232+ if ((hp == hp))
12381233 then nil
12391234 else throw("Strict value is not equal to itself.")
12401235 }
1241- else [ScriptTransfer(fd.caller, hl, by)]
1242- let hn = if ((fr > 0))
1236+ else [ScriptTransfer(fd.caller, ho, by)]
1237+ let hq = if ((fr > 0))
12431238 then [ScriptTransfer(be, fr, fu)]
12441239 else nil
1245- let ho = if ((this == be))
1240+ let hr = if ((this == be))
12461241 then $Tuple2(0, 0)
12471242 else if (fy)
12481243 then $Tuple2(-(fr), 0)
12491244 else $Tuple2(0, -(fr))
1250- let eL = ho._1
1251- let eM = ho._2
1252- let hp = eK(eL, eM, 0)
1253- let gP = hp._1
1254- let eB = hp._2
1245+ let eL = hr._1
1246+ let eM = hr._2
1247+ let hs = eK(eL, eM, 0)
1248+ let hc = hs._1
1249+ let eB = hs._2
12551250 let eW = value(getString(aj))
1256- let ha = eP(eJ, eB)
1257- if ((ha == ha))
1251+ let hd = eP(eJ, eB)
1252+ if ((hd == hd))
12581253 then {
1259- let hb = invoke(this, "rebalance", nil, nil)
1260- if ((hb == hb))
1261- then $Tuple2((((ev ++ gX) ++ hn) ++ gP), hl)
1254+ let he = invoke(this, "rebalance", nil, nil)
1255+ if ((he == he))
1256+ then $Tuple2((((ev ++ gZ) ++ hq) ++ hc), ho)
12621257 else throw("Strict value is not equal to itself.")
12631258 }
12641259 else throw("Strict value is not equal to itself.")
12761271
12771272 @Callable(fd)
12781273 func putOneTknREADONLY (fu,ft) = {
1279- let hq = fs(ft, bp(fu), unit, unit)
1280- let hk = hq._1
1281- let ev = hq._2
1282- let fr = hq._3
1283- let hj = hq._4
1284- let fy = hq._5
1285- $Tuple2(nil, $Tuple3(hk, fr, hj))
1274+ let ht = fs(ft, bp(fu), unit, unit)
1275+ let hn = ht._1
1276+ let ev = ht._2
1277+ let fr = ht._3
1278+ let hm = ht._4
1279+ let fy = ht._5
1280+ $Tuple2(nil, $Tuple3(hn, fr, hm))
12861281 }
12871282
12881283
12891284
12901285 @Callable(fd)
1291-func getOneTkn (hr,he) = {
1292- let hg = {
1286+func getOneTkn (hu,hh) = {
1287+ let hj = {
12931288 let bg = invoke(bd, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
12941289 if ($isInstanceOf(bg, "Boolean"))
12951290 then bg
13001295 then true
13011296 else (bx == n))
13021297 then true
1303- else hg
1298+ else hj
13041299 else false
13051300 let fZ = [if (if (!(fg))
13061301 then true
13111306 else ba("exactly 1 payment are expected")]
13121307 if ((fZ == fZ))
13131308 then {
1314- let fY = bp(hr)
1315- let hh = fd.payments[0]
1316- let fu = hh.assetId
1317- let fG = hh.amount
1309+ let fY = bp(hu)
1310+ let hk = fd.payments[0]
1311+ let fu = hk.assetId
1312+ let fG = hk.amount
13181313 let eJ = eC(toBigInt(0), toBigInt(0), toBigInt(0))
13191314 if ((eJ == eJ))
13201315 then {
13211316 let ab = fd.caller
13221317 let ac = fd.transactionId
1323- let hs = fX(fY, fG, fu, ab, ac)
1324- if ((hs == hs))
1318+ let hv = fX(fY, fG, fu, ab, ac)
1319+ if ((hv == hv))
13251320 then {
1326- let ga = hs._5
1327- let hj = hs._4
1328- let fr = hs._3
1329- let ev = hs._2
1330- let ht = hs._1
1331- let ch = if (if ((he > 0))
1332- then (he > ht)
1321+ let ga = hv._5
1322+ let hm = hv._4
1323+ let fr = hv._3
1324+ let ev = hv._2
1325+ let hw = hv._1
1326+ let ch = if (if ((hh > 0))
1327+ then (hh > hw)
13331328 else false)
1334- then ba(makeString(["amount to receive is less than ", toString(he)], ""))
1335- else ht
1336- let hu = invoke(bd, "burn", [fG], [AttachedPayment(fu, fG)])
1337- if ((hu == hu))
1329+ then ba(makeString(["amount to receive is less than ", toString(hh)], ""))
1330+ else hw
1331+ let hx = invoke(bd, "burn", [fG], [AttachedPayment(fu, fG)])
1332+ if ((hx == hx))
13381333 then {
1339- let gR = cR(hr, (ch + max([0, fr])))
1340- let hv = [ScriptTransfer(ab, ch, fY)]
1341- let hn = if ((fr > 0))
1334+ let gS = cR(hu, (ch + max([0, fr])))
1335+ let hy = [ScriptTransfer(ab, ch, fY)]
1336+ let hq = if ((fr > 0))
13421337 then [ScriptTransfer(be, fr, fY)]
13431338 else nil
1344- let hw = {
1345- let hx = if ((this == be))
1339+ let hz = {
1340+ let hA = if ((this == be))
13461341 then 0
13471342 else fr
13481343 if (ga)
1349- then $Tuple2(-((ch + hx)), 0)
1350- else $Tuple2(0, -((ch + hx)))
1344+ then $Tuple2(-((ch + hA)), 0)
1345+ else $Tuple2(0, -((ch + hA)))
13511346 }
1352- let eL = hw._1
1353- let eM = hw._2
1354- let hy = eK(eL, eM, 0)
1355- let gP = hy._1
1356- let eB = hy._2
1357- let ha = eP(eJ, eB)
1358- if ((ha == ha))
1359- then $Tuple2(((((ev ++ gR) ++ hv) ++ hn) ++ gP), ch)
1347+ let eL = hz._1
1348+ let eM = hz._2
1349+ let hB = eK(eL, eM, 0)
1350+ let hc = hB._1
1351+ let eB = hB._2
1352+ let hd = eP(eJ, eB)
1353+ if ((hd == hd))
1354+ then $Tuple2(((((ev ++ gS) ++ hy) ++ hq) ++ hc), ch)
13601355 else throw("Strict value is not equal to itself.")
13611356 }
13621357 else throw("Strict value is not equal to itself.")
13721367
13731368 @Callable(fd)
13741369 func getOneTknREADONLY (fY,fG) = {
1375- let hz = fX(bp(fY), fG, by, unit, unit)
1376- let ht = hz._1
1377- let ev = hz._2
1378- let fr = hz._3
1379- let hj = hz._4
1380- let ga = hz._5
1381- $Tuple2(nil, $Tuple3(ht, fr, hj))
1370+ let hC = fX(bp(fY), fG, by, unit, unit)
1371+ let hw = hC._1
1372+ let ev = hC._2
1373+ let fr = hC._3
1374+ let hm = hC._4
1375+ let ga = hC._5
1376+ $Tuple2(nil, $Tuple3(hw, fr, hm))
13821377 }
13831378
13841379
13851380
13861381 @Callable(fd)
1387-func unstakeAndGetOneTkn (hA,hr,he) = {
1388- let hg = {
1382+func unstakeAndGetOneTkn (hD,hu,hh) = {
1383+ let hj = {
13891384 let bg = invoke(bd, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
13901385 if ($isInstanceOf(bg, "Boolean"))
13911386 then bg
13961391 then true
13971392 else (bx == n))
13981393 then true
1399- else hg
1394+ else hj
14001395 else false
14011396 let fZ = [if (if (!(fg))
14021397 then true
14071402 else ba("no payments are expected")]
14081403 if ((fZ == fZ))
14091404 then {
1410- let fY = bp(hr)
1405+ let fY = bp(hu)
14111406 let ab = fd.caller
14121407 let ac = fd.transactionId
14131408 let eJ = eC(toBigInt(0), toBigInt(0), toBigInt(0))
14141409 if ((eJ == eJ))
14151410 then {
1416- let hB = invoke(bE, "unstake", [toBase58String(by), hA], nil)
1417- if ((hB == hB))
1411+ let hE = invoke(bE, "unstake", [toBase58String(by), hD], nil)
1412+ if ((hE == hE))
14181413 then {
1419- let hC = fX(fY, hA, by, ab, ac)
1420- if ((hC == hC))
1414+ let hF = fX(fY, hD, by, ab, ac)
1415+ if ((hF == hF))
14211416 then {
1422- let ga = hC._5
1423- let hj = hC._4
1424- let fr = hC._3
1425- let ev = hC._2
1426- let ht = hC._1
1427- let ch = if (if ((he > 0))
1428- then (he > ht)
1417+ let ga = hF._5
1418+ let hm = hF._4
1419+ let fr = hF._3
1420+ let ev = hF._2
1421+ let hw = hF._1
1422+ let ch = if (if ((hh > 0))
1423+ then (hh > hw)
14291424 else false)
1430- then ba(makeString(["amount to receive is less than ", toString(he)], ""))
1431- else ht
1432- let hu = invoke(bd, "burn", [hA], [AttachedPayment(by, hA)])
1433- if ((hu == hu))
1425+ then ba(makeString(["amount to receive is less than ", toString(hh)], ""))
1426+ else hw
1427+ let hx = invoke(bd, "burn", [hD], [AttachedPayment(by, hD)])
1428+ if ((hx == hx))
14341429 then {
1435- let gR = cR(hr, (ch + max([0, fr])))
1436- let hv = [ScriptTransfer(fd.caller, ch, fY)]
1437- let hn = if ((fr > 0))
1430+ let gS = cR(hu, (ch + max([0, fr])))
1431+ let hy = [ScriptTransfer(fd.caller, ch, fY)]
1432+ let hq = if ((fr > 0))
14381433 then [ScriptTransfer(be, fr, fY)]
14391434 else nil
1440- let hD = {
1441- let hx = if ((this == be))
1435+ let hG = {
1436+ let hA = if ((this == be))
14421437 then 0
14431438 else fr
14441439 if (ga)
1445- then $Tuple2(-((ch + hx)), 0)
1446- else $Tuple2(0, -((ch + hx)))
1440+ then $Tuple2(-((ch + hA)), 0)
1441+ else $Tuple2(0, -((ch + hA)))
14471442 }
1448- let eL = hD._1
1449- let eM = hD._2
1450- let hE = eK(eL, eM, 0)
1451- let gP = hE._1
1452- let eB = hE._2
1453- let ha = eP(eJ, eB)
1454- if ((ha == ha))
1455- then $Tuple2(((((ev ++ gR) ++ hv) ++ hn) ++ gP), ch)
1443+ let eL = hG._1
1444+ let eM = hG._2
1445+ let hH = eK(eL, eM, 0)
1446+ let hc = hH._1
1447+ let eB = hH._2
1448+ let hd = eP(eJ, eB)
1449+ if ((hd == hd))
1450+ then $Tuple2(((((ev ++ gS) ++ hy) ++ hq) ++ hc), ch)
14561451 else throw("Strict value is not equal to itself.")
14571452 }
14581453 else throw("Strict value is not equal to itself.")
14761471 let ff = eg._3
14771472 let dv = eg._4
14781473 let dO = eg._5
1479- let gR = cW(dM, dN)
1474+ let gS = cW(dM, dN)
14801475 let eJ = eC(toBigInt(0), toBigInt(0), toBigInt(0))
14811476 if ((eJ == eJ))
14821477 then {
1483- let hF = invoke(bd, "burn", [ff], [AttachedPayment(dv, ff)])
1484- if ((hF == hF))
1478+ let hI = invoke(bd, "burn", [ff], [AttachedPayment(dv, ff)])
1479+ if ((hI == hI))
14851480 then {
1486- let hG = eK(-(dM), -(dN), 0)
1487- let gP = hG._1
1488- let eB = hG._2
1489- let ha = eP(eJ, eB)
1490- if ((ha == ha))
1491- then ((gR ++ dO) ++ gP)
1481+ let hJ = eK(-(dM), -(dN), 0)
1482+ let hc = hJ._1
1483+ let eB = hJ._2
1484+ let hd = eP(eJ, eB)
1485+ if ((hd == hd))
1486+ then ((gS ++ dO) ++ hc)
14921487 else throw("Strict value is not equal to itself.")
14931488 }
14941489 else throw("Strict value is not equal to itself.")
14991494
15001495
15011496 @Callable(fd)
1502-func getNoLess (hH,hI) = {
1497+func getNoLess (hK,hL) = {
15031498 let eg = fc(fd)
15041499 let dM = eg._1
15051500 let dN = eg._2
15061501 let ff = eg._3
15071502 let dv = eg._4
15081503 let dO = eg._5
1509- if ((hH > dM))
1510- then throw(((("noLessThenAmtAsset failed: " + toString(dM)) + " < ") + toString(hH)))
1511- else if ((hI > dN))
1512- then throw(((("noLessThenPriceAsset failed: " + toString(dN)) + " < ") + toString(hI)))
1504+ if ((hK > dM))
1505+ then throw(((("noLessThenAmtAsset failed: " + toString(dM)) + " < ") + toString(hK)))
1506+ else if ((hL > dN))
1507+ then throw(((("noLessThenPriceAsset failed: " + toString(dN)) + " < ") + toString(hL)))
15131508 else {
1514- let gR = cW(dM, dN)
1509+ let gS = cW(dM, dN)
15151510 let eJ = eC(toBigInt(0), toBigInt(0), toBigInt(0))
15161511 if ((eJ == eJ))
15171512 then {
1518- let hF = invoke(bd, "burn", [ff], [AttachedPayment(dv, ff)])
1519- if ((hF == hF))
1513+ let hI = invoke(bd, "burn", [ff], [AttachedPayment(dv, ff)])
1514+ if ((hI == hI))
15201515 then {
1521- let hJ = eK(-(dM), -(dN), 0)
1522- let gP = hJ._1
1523- let eB = hJ._2
1524- let ha = eP(eJ, eB)
1525- if ((ha == ha))
1526- then ((gR ++ dO) ++ gP)
1516+ let hM = eK(-(dM), -(dN), 0)
1517+ let hc = hM._1
1518+ let eB = hM._2
1519+ let hd = eP(eJ, eB)
1520+ if ((hd == hd))
1521+ then ((gS ++ dO) ++ hc)
15271522 else throw("Strict value is not equal to itself.")
15281523 }
15291524 else throw("Strict value is not equal to itself.")
15361531
15371532 @Callable(fd)
15381533 func unstakeAndGet (ch) = {
1539- let hK = if ((size(fd.payments) != 0))
1534+ let hN = if ((size(fd.payments) != 0))
15401535 then throw("No payments are expected")
15411536 else true
1542- if ((hK == hK))
1537+ if ((hN == hN))
15431538 then {
15441539 let dk = bm()
15451540 let dx = fromBase58String(dk[q])
15461541 let eJ = eC(toBigInt(0), toBigInt(0), toBigInt(0))
15471542 if ((eJ == eJ))
15481543 then {
1549- let hB = invoke(bE, "unstake", [toBase58String(dx), ch], nil)
1550- if ((hB == hB))
1544+ let hE = invoke(bE, "unstake", [toBase58String(dx), ch], nil)
1545+ if ((hE == hE))
15511546 then {
15521547 let eg = dt(toBase58String(fd.transactionId), toBase58String(dx), ch, fd.caller)
15531548 let dM = eg._1
15541549 let dN = eg._2
15551550 let dA = parseIntValue(eg._9)
15561551 let dO = eg._10
1557- let gR = cW(dM, dN)
1552+ let gS = cW(dM, dN)
15581553 let fg = if (!(bj(fd.caller)))
15591554 then if (bk())
15601555 then true
15611556 else (bx == n)
15621557 else false
1563- let hL = if (fg)
1558+ let hO = if (fg)
15641559 then throw(("Get operation is blocked by admin. Status = " + toString(dA)))
15651560 else true
1566- if ((hL == hL))
1561+ if ((hO == hO))
15671562 then {
1568- let hF = invoke(bd, "burn", [ch], [AttachedPayment(dx, ch)])
1569- if ((hF == hF))
1563+ let hI = invoke(bd, "burn", [ch], [AttachedPayment(dx, ch)])
1564+ if ((hI == hI))
15701565 then {
1571- let hM = eK(-(dM), -(dN), 0)
1572- let gP = hM._1
1573- let eB = hM._2
1574- let ha = eP(eJ, eB)
1575- if ((ha == ha))
1576- then ((gR ++ dO) ++ gP)
1566+ let hP = eK(-(dM), -(dN), 0)
1567+ let hc = hP._1
1568+ let eB = hP._2
1569+ let hd = eP(eJ, eB)
1570+ if ((hd == hd))
1571+ then ((gS ++ dO) ++ hc)
15771572 else throw("Strict value is not equal to itself.")
15781573 }
15791574 else throw("Strict value is not equal to itself.")
15901585
15911586
15921587 @Callable(fd)
1593-func unstakeAndGetNoLess (hA,hN,hI) = {
1588+func unstakeAndGetNoLess (hD,hQ,hL) = {
15941589 let fg = if (!(bj(fd.caller)))
15951590 then if (bk())
15961591 then true
16061601 let eJ = eC(toBigInt(0), toBigInt(0), toBigInt(0))
16071602 if ((eJ == eJ))
16081603 then {
1609- let hB = invoke(bE, "unstake", [toBase58String(by), hA], nil)
1610- if ((hB == hB))
1604+ let hE = invoke(bE, "unstake", [toBase58String(by), hD], nil)
1605+ if ((hE == hE))
16111606 then {
1612- let eg = dt(toBase58String(fd.transactionId), toBase58String(by), hA, fd.caller)
1607+ let eg = dt(toBase58String(fd.transactionId), toBase58String(by), hD, fd.caller)
16131608 let dM = eg._1
16141609 let dN = eg._2
16151610 let dO = eg._10
1616- let gR = cW(dM, dN)
1617- let hO = [if ((dM >= hN))
1611+ let gS = cW(dM, dN)
1612+ let hR = [if ((dM >= hQ))
16181613 then true
1619- else throw(makeString(["amount asset amount to receive is less than ", toString(hN)], "")), if ((dN >= hI))
1614+ else throw(makeString(["amount asset amount to receive is less than ", toString(hQ)], "")), if ((dN >= hL))
16201615 then true
1621- else throw(makeString(["price asset amount to receive is less than ", toString(hI)], ""))]
1622- if ((hO == hO))
1616+ else throw(makeString(["price asset amount to receive is less than ", toString(hL)], ""))]
1617+ if ((hR == hR))
16231618 then {
1624- let hF = invoke(bd, "burn", [hA], [AttachedPayment(by, hA)])
1625- if ((hF == hF))
1619+ let hI = invoke(bd, "burn", [hD], [AttachedPayment(by, hD)])
1620+ if ((hI == hI))
16261621 then {
1627- let hP = eK(-(dM), -(dN), 0)
1628- let gP = hP._1
1629- let eB = hP._2
1630- let ha = eP(eJ, eB)
1631- if ((ha == ha))
1632- then ((gR ++ dO) ++ gP)
1622+ let hS = eK(-(dM), -(dN), 0)
1623+ let hc = hS._1
1624+ let eB = hS._2
1625+ let hd = eP(eJ, eB)
1626+ if ((hd == hd))
1627+ then ((gS ++ dO) ++ hc)
16331628 else throw("Strict value is not equal to itself.")
16341629 }
16351630 else throw("Strict value is not equal to itself.")
16461641
16471642
16481643 @Callable(fd)
1649-func activate (hQ,hR) = if ((toString(fd.caller) != toString(bd)))
1644+func activate (hT,hU) = if ((toString(fd.caller) != toString(bd)))
16501645 then throw("permissions denied")
1651- else $Tuple2([StringEntry(ae(), hQ), StringEntry(af(), hR)], "success")
1646+ else $Tuple2([StringEntry(ae(), hT), StringEntry(af(), hU)], "success")
16521647
16531648
16541649
16551650 @Callable(fd)
16561651 func refreshKLp () = {
1657- let hS = valueOrElse(getInteger(ak), 0)
1658- let hT = if (((height - hS) >= an))
1652+ let hV = valueOrElse(getInteger(ak), 0)
1653+ let hW = if (((height - hV) >= an))
16591654 then unit
16601655 else ba(makeString([toString(an), " blocks have not passed since the previous call"], ""))
1661- if ((hT == hT))
1656+ if ((hW == hW))
16621657 then {
16631658 let eW = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, aj), "0")), bc("invalid kLp"))
1664- let hU = eK(0, 0, 0)
1665- let hV = hU._1
1666- let eB = hU._2
1659+ let hX = eK(0, 0, 0)
1660+ let hY = hX._1
1661+ let eB = hX._2
16671662 let eN = if ((eW != eB))
1668- then hV
1663+ then hY
16691664 else ba("nothing to refresh")
16701665 $Tuple2(eN, toString(eB))
16711666 }
17241719 func statsREADONLY () = {
17251720 let dk = bm()
17261721 let dx = fromBase58String(dk[q])
1727- let hW = dk[r]
1728- let hX = dk[s]
1722+ let hZ = dk[r]
1723+ let gP = dk[s]
17291724 let dZ = dk[v]
17301725 let ea = dk[w]
17311726 let dl = parseIntValue(dk[t])
17321727 let dm = parseIntValue(dk[u])
1733- let hY = valueOrErrorMessage(assetInfo(dx), (("Asset " + toBase58String(dx)) + " doesn't exist")).quantity
1734- let hZ = bV(hW)
1735- let ia = bV(hX)
1736- let ib = if ((hY == 0))
1728+ let ia = valueOrErrorMessage(assetInfo(dx), (("Asset " + toBase58String(dx)) + " doesn't exist")).quantity
1729+ let ib = bV(hZ)
1730+ let ic = bV(gP)
1731+ let id = if ((ia == 0))
17371732 then [e, e, e]
1738- else di(hZ, ia, hY)
1733+ else di(ib, ic, ia)
17391734 let dH = 0
1740- let ic = H(ib[1], b)
1741- let id = H(ib[2], b)
1742- let ie = value(getInteger(bd, aD(toString(this))))
1743- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(hZ), toString(ia), toString(hY), toString(dH), toString(ic), toString(id), toString(ie)], j))
1735+ let ie = H(id[1], b)
1736+ let if = H(id[2], b)
1737+ let ig = value(getInteger(bd, aD(toString(this))))
1738+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(ib), toString(ic), toString(ia), toString(dH), toString(ie), toString(if), toString(ig)], j))
17441739 }
17451740
17461741
17561751 let dl = parseIntValue(dk[t])
17571752 let dm = parseIntValue(dk[u])
17581753 let dA = dk[p]
1759- let hY = valueOrErrorMessage(assetInfo(dx), (("Asset " + toBase58String(dx)) + " doesn't exist")).quantity
1760- let hZ = bV(dX)
1761- let ia = bV(dY)
1762- let dg = D(hZ, dl)
1763- let dh = D(ia, dm)
1764- let dG = if ((hY == 0))
1754+ let ia = valueOrErrorMessage(assetInfo(dx), (("Asset " + toBase58String(dx)) + " doesn't exist")).quantity
1755+ let ib = bV(dX)
1756+ let ic = bV(dY)
1757+ let dg = D(ib, dl)
1758+ let dh = D(ic, dm)
1759+ let dG = if ((ia == 0))
17651760 then e
17661761 else bY(dh, dg)
17671762 let ed = D(dR, dl)
17691764 let dT = H(ee, dm)
17701765 let fk = dP("", 500000, dR, dy, dT, dz, "", true, false)
17711766 let eo = fk._1
1772- let if = fk._3
1767+ let ih = fk._3
17731768 let dC = fk._4
17741769 let dE = fk._5
17751770 let dB = fk._6
17891784 let dl = parseIntValue(dk[t])
17901785 let dm = parseIntValue(dk[u])
17911786 let dA = dk[p]
1792- let hY = valueOrErrorMessage(assetInfo(dx), (("Asset " + toBase58String(dx)) + " doesn't exist")).quantity
1793- let ig = bV(dX)
1794- let ih = bV(dY)
1795- let ii = D(ig, dl)
1796- let ij = D(ih, dm)
1797- let dG = if ((hY == 0))
1787+ let ia = valueOrErrorMessage(assetInfo(dx), (("Asset " + toBase58String(dx)) + " doesn't exist")).quantity
1788+ let ii = bV(dX)
1789+ let ij = bV(dY)
1790+ let ik = D(ii, dl)
1791+ let il = D(ij, dm)
1792+ let dG = if ((ia == 0))
17981793 then e
1799- else bY(ij, ii)
1794+ else bY(il, ik)
18001795 let ee = D(dT, dm)
18011796 let ed = fraction(ee, d, dG)
18021797 let dR = H(ed, dl)
18031798 let fk = dP("", 500000, dR, dy, dT, dz, "", true, false)
18041799 let eo = fk._1
1805- let if = fk._3
1800+ let ih = fk._3
18061801 let dC = fk._4
18071802 let dE = fk._5
18081803 let dB = fk._6
18121807
18131808
18141809 @Callable(fd)
1815-func evaluateGetREADONLY (ik,il) = {
1816- let eg = dt("", ik, il, this)
1810+func evaluateGetREADONLY (im,in) = {
1811+ let eg = dt("", im, in, this)
18171812 let dM = eg._1
18181813 let dN = eg._2
18191814 let dC = eg._5
18251820 }
18261821
18271822
1828-@Verifier(im)
1829-func in () = {
1830- let io = {
1823+@Verifier(io)
1824+func ip () = {
1825+ let iq = {
18311826 let aQ = gr()
18321827 if ($isInstanceOf(aQ, "ByteVector"))
18331828 then {
18351830 gu
18361831 }
18371832 else if ($isInstanceOf(aQ, "Unit"))
1838- then im.senderPublicKey
1833+ then io.senderPublicKey
18391834 else throw("Match error")
18401835 }
1841- let aQ = im
1836+ let aQ = io
18421837 if ($isInstanceOf(aQ, "Order"))
18431838 then {
18441839 let eS = aQ
1845- let ip = bl()
1846- let iq = if (eO())
1840+ let ir = bl()
1841+ let is = if (eO())
18471842 then $Tuple2(true, "")
18481843 else eR(eS)
1849- let aK = iq._1
1850- let aL = iq._2
1844+ let aK = is._1
1845+ let aL = is._2
18511846 let aM = sigVerify(eS.bodyBytes, eS.proofs[0], eS.senderPublicKey)
1852- let aN = sigVerify(eS.bodyBytes, eS.proofs[1], ip)
1847+ let aN = sigVerify(eS.bodyBytes, eS.proofs[1], ir)
18531848 if (if (if (aK)
18541849 then aM
18551850 else false)
18611856 else if ($isInstanceOf(aQ, "SetScriptTransaction"))
18621857 then {
18631858 let aV = aQ
1864- if (sigVerify(im.bodyBytes, im.proofs[0], io))
1859+ if (sigVerify(io.bodyBytes, io.proofs[0], iq))
18651860 then true
18661861 else {
1867- let ir = blake2b256(value(aV.script))
1868- let is = fromBase64String(value(getString(bd, aF())))
1869- let it = scriptHash(this)
1870- if ((is == ir))
1871- then (it != ir)
1862+ let it = blake2b256(value(aV.script))
1863+ let iu = fromBase64String(value(getString(bd, aF())))
1864+ let iv = scriptHash(this)
1865+ if ((iu == it))
1866+ then (iv != it)
18721867 else false
18731868 }
18741869 }
1875- else sigVerify(im.bodyBytes, im.proofs[0], io)
1870+ else sigVerify(io.bodyBytes, io.proofs[0], iq)
18761871 }
18771872
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__managerVaultAddress"
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 (ap) = makeString(["%s%s", "stakedBalance", ap], j)
134134
135135
136136 func aq (ap) = makeString(["%s%s", "shareAssetBalance", ap], j)
137137
138138
139139 func ar (ap) = valueOrElse(getInteger(this, ao(ap)), 0)
140140
141141
142142 func as (ap) = valueOrElse(getInteger(this, aq(ap)), 0)
143143
144144
145145 func at () = "%s__factoryConfig"
146146
147147
148148 func au () = "%s%s__matcher__publicKey"
149149
150150
151151 func av (aw) = (("%s%s%s__" + aw) + "__mappings__poolContract2LpAsset")
152152
153153
154154 func ax (ay,az) = (((("%d%d%s__" + ay) + "__") + az) + "__config")
155155
156156
157157 func aA (aB) = ("%s%s%s__mappings__baseAsset2internalId__" + aB)
158158
159159
160160 func aC () = "%s__shutdown"
161161
162162
163163 func aD (aE) = ("%s%s__poolWeight__" + aE)
164164
165165
166166 func aF () = "%s__allowedLpScriptHash"
167167
168168
169169 let aG = "%s__feeCollectorAddress"
170170
171171 func aH (aI) = ("%s%s__skipOrderValidation__" + aI)
172172
173173
174174 func aJ (aK,aL,aM,aN) = throw((((((((("order validation failed: orderValid=" + toString(aK)) + " (") + aL) + ")") + " senderValid=") + toString(aM)) + " matcherValid=") + toString(aN)))
175175
176176
177177 func aO (aP) = {
178178 let aQ = addressFromString(aP)
179179 if ($isInstanceOf(aQ, "Address"))
180180 then {
181181 let aR = aQ
182182 aR
183183 }
184184 else this
185185 }
186186
187187
188188 func aS () = {
189189 let aT = {
190190 let aQ = getString(T())
191191 if ($isInstanceOf(aQ, "String"))
192192 then {
193193 let aU = aQ
194194 aO(aU)
195195 }
196196 else this
197197 }
198198 let aQ = getString(aT, V())
199199 if ($isInstanceOf(aQ, "String"))
200200 then {
201201 let aV = aQ
202202 aO(aV)
203203 }
204204 else this
205205 }
206206
207207
208208 func aW (aX,aY) = valueOrErrorMessage(getString(aX, aY), makeString(["mandatory ", toString(aX), ".", aY, " is not defined"], ""))
209209
210210
211211 func aZ (aX,aY) = valueOrErrorMessage(getInteger(aX, aY), makeString(["mandatory ", toString(aX), ".", aY, " is not defined"], ""))
212212
213213
214214 func ba (bb) = throw(makeString(["lp.ride:", bb], " "))
215215
216216
217217 func bc (bb) = makeString(["lp.ride:", bb], " ")
218218
219219
220220 let bd = addressFromStringValue(aW(this, T()))
221221
222222 let be = addressFromStringValue(aW(bd, aG))
223223
224224 let bf = {
225225 let bg = invoke(bd, "getInFeeREADONLY", [toString(this)], nil)
226226 if ($isInstanceOf(bg, "Int"))
227227 then bg
228228 else throw(($getType(bg) + " couldn't be cast to Int"))
229229 }
230230
231231 let bh = {
232232 let bg = invoke(bd, "getOutFeeREADONLY", [toString(this)], nil)
233233 if ($isInstanceOf(bg, "Int"))
234234 then bg
235235 else throw(($getType(bg) + " couldn't be cast to Int"))
236236 }
237237
238238 func bi (aX) = makeString(["%s%s", "whitelisted", toString(aX)], j)
239239
240240
241241 func bj (aX) = valueOrElse(getBoolean(bd, bi(aX)), false)
242242
243243
244244 func bk () = valueOrElse(getBoolean(bd, aC()), false)
245245
246246
247247 func bl () = fromBase58String(aW(bd, au()))
248248
249249
250250 func bm () = {
251251 let bn = aW(this, ae())
252252 let bo = aW(this, af())
253253 let az = aZ(bd, aA(bo))
254254 let ay = aZ(bd, aA(bn))
255255 split(aW(bd, ax(toString(ay), toString(az))), j)
256256 }
257257
258258
259259 func bp (bq) = if ((bq == i))
260260 then unit
261261 else fromBase58String(bq)
262262
263263
264264 func br (bq) = if ((bq == unit))
265265 then i
266266 else toBase58String(value(bq))
267267
268268
269269 func bs (bt) = $Tuple7(addressFromStringValue(bt[o]), parseIntValue(bt[p]), fromBase58String(bt[q]), bp(bt[r]), bp(bt[s]), parseIntValue(bt[t]), parseIntValue(bt[u]))
270270
271271
272272 let bu = bs(bm())
273273
274274 let bv = bu
275275
276276 let bw = bv._1
277277
278278 let bx = bv._2
279279
280280 let by = bv._3
281281
282282 let bz = bv._4
283283
284284 let bA = bv._5
285285
286286 let bB = bv._6
287287
288288 let bC = bv._7
289289
290290 func bD () = split(aW(bd, at()), j)
291291
292292
293293 let bE = valueOrErrorMessage(addressFromString(bD()[B]), "incorrect staking address")
294294
295295 let bF = valueOrErrorMessage(addressFromString(bD()[C]), "incorrect staking address")
296296
297297 func bG (bH,bI,bJ,bK,bL,bM,bN,bO,bP,bQ) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bH), toString(bI), toString(bJ), toString(bK), toString(bL), toString(bM), toString(bN), toString(bO), toString(bP), toString(bQ)], j)
298298
299299
300300 func bR (bS,bT,bU,bK,bN,bO) = makeString(["%d%d%d%d%d%d", toString(bS), toString(bT), toString(bU), toString(bK), toString(bN), toString(bO)], j)
301301
302302
303303 func bV (ap) = {
304304 let bW = if ((ap == "WAVES"))
305305 then wavesBalance(this).available
306306 else assetBalance(this, fromBase58String(ap))
307307 let bX = ((bW + ar(ap)) - as(ap))
308308 max([0, bX])
309309 }
310310
311311
312312 func bY (bZ,ca) = fraction(bZ, d, ca)
313313
314314
315315 func cb (bZ,ca,L) = fraction(bZ, d, ca, L)
316316
317317
318318 func cc (cd) = {
319319 let ce = invoke(cd, "getRate", nil, nil)
320320 if ((ce == ce))
321321 then {
322322 let aQ = ce
323323 if ($isInstanceOf(aQ, "Int"))
324324 then {
325325 let cf = aQ
326326 cf
327327 }
328328 else ba("proxy.getRate() unexpected value")
329329 }
330330 else throw("Strict value is not equal to itself.")
331331 }
332332
333333
334334 func cg (ap,ch,ci,cd) = {
335335 let cj = ar(ap)
336336 if ((cj == cj))
337337 then {
338338 let ck = as(ci)
339339 if ((ck == ck))
340340 then {
341341 let cl = bp(ap)
342342 if ((ch > 0))
343343 then {
344344 let cm = invoke(cd, "deposit", nil, [AttachedPayment(cl, ch)])
345345 if ((cm == cm))
346346 then {
347347 let aQ = cm
348348 if ($isInstanceOf(aQ, "Int"))
349349 then {
350350 let cn = aQ
351351 let co = (cj + ch)
352352 let cp = (ck + cn)
353353 [IntegerEntry(ao(ap), co), IntegerEntry(aq(ci), cp)]
354354 }
355355 else nil
356356 }
357357 else throw("Strict value is not equal to itself.")
358358 }
359359 else nil
360360 }
361361 else throw("Strict value is not equal to itself.")
362362 }
363363 else throw("Strict value is not equal to itself.")
364364 }
365365
366366
367367 func cq (ap,ch,ci,cd,cr,cs) = {
368368 let cj = ar(ap)
369369 if ((cj == cj))
370370 then {
371371 let ck = as(ci)
372372 if ((ck == ck))
373373 then {
374374 let ct = cc(cd)
375375 if ((ct == ct))
376376 then {
377377 let cu = fraction(cr, cj, ck)
378378 let cv = bp(ci)
379379 let cw = fraction(cr, ch, cu)
380380 let cx = fraction(cr, ch, ct)
381381 let cy = max([0, (cw - cx)])
382382 if ((cx > 0))
383383 then {
384384 let cz = invoke(cd, "withdraw", nil, [AttachedPayment(cv, cx)])
385385 if ((cz == cz))
386386 then {
387387 let aQ = cz
388388 if ($isInstanceOf(aQ, "Int"))
389389 then {
390390 let cA = aQ
391391 let co = (cj - cA)
392392 let cp = ((ck - cx) - cy)
393393 [IntegerEntry(ao(ap), co), IntegerEntry(aq(ci), cp), ScriptTransfer(cs, cy, bp(ci))]
394394 }
395395 else nil
396396 }
397397 else throw("Strict value is not equal to itself.")
398398 }
399399 else nil
400400 }
401401 else throw("Strict value is not equal to itself.")
402402 }
403403 else throw("Strict value is not equal to itself.")
404404 }
405405 else throw("Strict value is not equal to itself.")
406406 }
407407
408408
409409 func cB (ap) = {
410410 let aQ = invoke(bd, "getPoolLeaseConfigREADONLY", [toString(this), ap], nil)
411411 if ($isInstanceOf(aQ, "(Boolean, Int, Int, String, String, Int, String)"))
412412 then {
413413 let aR = aQ
414414 aR
415415 }
416416 else ba((("[" + ap) + "] getLeaseProxyConfig() error"))
417417 }
418418
419419
420420 func cC (cD,ap,ci,cE,cd,cr,cs) = {
421421 let ck = as(ci)
422422 if ((ck == ck))
423423 then {
424424 let cj = if ((ck != 0))
425425 then ar(ap)
426426 else 0
427427 if ((cj == cj))
428428 then {
429429 let cF = max([0, (bV(ap) - cE)])
430430 let cG = fraction(cD, cF, 100)
431431 let cH = (cj - cG)
432432 if ((cH == 0))
433433 then nil
434434 else if ((0 > cH))
435435 then {
436436 let cI = -(cH)
437437 cg(ap, cI, ci, cd)
438438 }
439439 else {
440440 let cJ = cH
441441 cq(ap, cJ, ci, cd, cr, cs)
442442 }
443443 }
444444 else throw("Strict value is not equal to itself.")
445445 }
446446 else throw("Strict value is not equal to itself.")
447447 }
448448
449449
450450 func cK (ap) = {
451451 let cL = cB(ap)
452452 let cM = cL._1
453453 let cN = cL._2
454454 let cE = cL._3
455455 let cO = cL._4
456456 let cP = cL._5
457457 let cr = cL._6
458458 let cQ = cL._7
459459 if (cM)
460460 then cC(cN, ap, cP, cE, addressFromStringValue(cO), cr, addressFromStringValue(cQ))
461461 else nil
462462 }
463463
464464
465465 func cR (ap,cS) = {
466466 let cT = cB(ap)
467467 let cM = cT._1
468468 let cN = cT._2
469469 let cE = cT._3
470470 let cO = cT._4
471471 let cP = cT._5
472472 let cr = cT._6
473473 let cQ = cT._7
474474 if (cM)
475475 then {
476476 let ck = as(cP)
477477 if ((ck == ck))
478478 then {
479479 let cj = if ((ck != 0))
480480 then ar(ap)
481481 else 0
482482 if ((cj == cj))
483483 then {
484484 let cU = max([0, ((bV(ap) - cS) - cE)])
485485 if ((cU == cU))
486486 then {
487487 let co = fraction(cN, cU, 100)
488488 if ((co == co))
489489 then {
490490 let cV = (cj - co)
491491 if ((cV == cV))
492492 then if ((cV == 0))
493493 then nil
494494 else if ((0 > cV))
495495 then cg(ap, -(cV), cP, addressFromStringValue(cO))
496496 else cq(ap, cV, cP, addressFromStringValue(cO), cr, addressFromStringValue(cQ))
497497 else throw("Strict value is not equal to itself.")
498498 }
499499 else throw("Strict value is not equal to itself.")
500500 }
501501 else throw("Strict value is not equal to itself.")
502502 }
503503 else throw("Strict value is not equal to itself.")
504504 }
505505 else throw("Strict value is not equal to itself.")
506506 }
507507 else nil
508508 }
509509
510510
511511 func cW (cX,cY) = {
512512 let cZ = cR(aW(this, ae()), cX)
513513 let da = cR(aW(this, af()), cY)
514514 (cZ ++ da)
515515 }
516516
517517
518518 func db (dc,dd,de,df) = {
519519 let dg = D(de, dc)
520520 let dh = D(df, dd)
521521 bY(dh, dg)
522522 }
523523
524524
525525 func di (de,df,dj) = {
526526 let dk = bm()
527527 let dl = parseIntValue(dk[t])
528528 let dm = parseIntValue(dk[u])
529529 let dn = db(dl, dm, de, df)
530530 let ca = D(de, dl)
531531 let bZ = D(df, dm)
532532 let do = D(dj, b)
533533 let dp = bY(ca, do)
534534 let dq = bY(bZ, do)
535535 [dn, dp, dq]
536536 }
537537
538538
539539 func dr (de,df,dj) = {
540540 let ds = di(de, df, dj)
541541 [H(ds[0], b), H(ds[1], b), H(ds[2], b)]
542542 }
543543
544544
545545 func dt (du,dv,dw,ab) = {
546546 let dk = bm()
547547 let dx = dk[q]
548548 let dy = dk[r]
549549 let dz = dk[s]
550550 let dc = parseIntValue(dk[t])
551551 let dd = parseIntValue(dk[u])
552552 let dA = dk[p]
553553 let dB = valueOrErrorMessage(assetInfo(fromBase58String(dx)), (("Asset " + dx) + " doesn't exist")).quantity
554554 if ((dx != dv))
555555 then throw("Invalid asset passed.")
556556 else {
557557 let dC = bV(dy)
558558 let dD = D(dC, dc)
559559 let dE = bV(dz)
560560 let dF = D(dE, dd)
561561 let dG = bY(dF, dD)
562562 let dH = H(dG, b)
563563 let dI = D(dw, b)
564564 let dJ = D(dB, b)
565565 let dK = fraction(dD, dI, dJ)
566566 let dL = fraction(dF, dI, dJ)
567567 let dM = K(dK, dc, FLOOR)
568568 let dN = K(dL, dd, FLOOR)
569569 let dO = if ((du == ""))
570570 then nil
571571 else [ScriptTransfer(ab, dM, if ((dy == "WAVES"))
572572 then unit
573573 else fromBase58String(dy)), ScriptTransfer(ab, dN, if ((dz == "WAVES"))
574574 then unit
575575 else fromBase58String(dz)), StringEntry(ad(toString(ab), du), bR(dM, dN, dw, dH, height, lastBlock.timestamp)), IntegerEntry(W(), dH), IntegerEntry(X(height, lastBlock.timestamp), dH)]
576576 $Tuple10(dM, dN, dy, dz, dC, dE, dB, dG, dA, dO)
577577 }
578578 }
579579
580580
581581 func dP (du,dQ,dR,dS,dT,dU,ab,dV,dW) = {
582582 let dk = bm()
583583 let dx = fromBase58String(dk[q])
584584 let dX = dk[r]
585585 let dY = dk[s]
586586 let dZ = dk[v]
587587 let ea = dk[w]
588588 let dl = parseIntValue(dk[t])
589589 let dm = parseIntValue(dk[u])
590590 let dA = dk[p]
591591 let dB = valueOrErrorMessage(assetInfo(dx), (("Asset " + toBase58String(dx)) + " doesn't exist")).quantity
592592 let eb = toBase58String(valueOrElse(dS, fromBase58String("WAVES")))
593593 let ec = toBase58String(valueOrElse(dU, fromBase58String("WAVES")))
594594 if (if ((dX != eb))
595595 then true
596596 else (dY != ec))
597597 then throw("Invalid amt or price asset passed.")
598598 else {
599599 let dC = if (dV)
600600 then bV(dX)
601601 else (bV(dX) - dR)
602602 let dE = if (dV)
603603 then bV(dY)
604604 else (bV(dY) - dT)
605605 let ed = D(dR, dl)
606606 let ee = D(dT, dm)
607607 let ef = bY(ee, ed)
608608 let dD = D(dC, dl)
609609 let dF = D(dE, dm)
610610 let eg = if ((dB == 0))
611611 then {
612612 let dG = e
613613 let eh = e
614614 let do = pow((ed * ee), 0, toBigInt(5), 1, 0, DOWN)
615615 $Tuple5(H(do, b), H(ed, dl), H(ee, dm), bY((dF + ee), (dD + ed)), eh)
616616 }
617617 else {
618618 let dG = bY(dF, dD)
619619 let eh = fraction(R((dG - ef)), d, dG)
620620 let ei = D(dQ, b)
621621 if (if ((dG != e))
622622 then (eh > ei)
623623 else false)
624624 then throw(((("Price slippage " + toString(eh)) + " exceeded the passed limit of ") + toString(ei)))
625625 else {
626626 let dJ = D(dB, b)
627627 let ej = fraction(ed, cb(dF, dD, CEILING), d, CEILING)
628628 let ek = fraction(ee, d, cb(dF, dD, FLOOR), CEILING)
629629 let el = if ((ej > ee))
630630 then $Tuple2(ek, ee)
631631 else $Tuple2(ed, ej)
632632 let em = el._1
633633 let en = el._2
634634 let do = fraction(dJ, en, dF, FLOOR)
635635 $Tuple5(K(do, b, FLOOR), K(em, dl, CEILING), K(en, dm, CEILING), dG, eh)
636636 }
637637 }
638638 let eo = eg._1
639639 let ep = eg._2
640640 let eq = eg._3
641641 let dH = H(eg._4, b)
642642 let er = H(eg._5, b)
643643 if ((0 >= eo))
644644 then throw("Invalid calculations. LP calculated is less than zero.")
645645 else {
646646 let es = if (!(dW))
647647 then 0
648648 else eo
649649 let et = (dR - ep)
650650 let eu = (dT - eq)
651651 let ev = [IntegerEntry(W(), dH), IntegerEntry(X(height, lastBlock.timestamp), dH), StringEntry(aa(ab, du), bG(ep, eq, es, dH, dQ, er, height, lastBlock.timestamp, et, eu))]
652652 $Tuple13(eo, es, dH, dC, dE, dB, dx, dA, ev, et, eu, dS, dU)
653653 }
654654 }
655655 }
656656
657657
658658 func ew (ex,ey,dB) = {
659659 let ez = G(ex, toBigInt(bB))
660660 let eA = G(ey, toBigInt(bC))
661661 let eB = fraction(pow((ez * eA), 0, toBigInt(5), 1, 18, DOWN), g, dB)
662662 if ((dB == f))
663663 then f
664664 else eB
665665 }
666666
667667
668668 func eC (eD,eE,eF) = {
669669 let eG = (toBigInt(bV(br(bz))) - eD)
670670 let eH = (toBigInt(bV(br(bA))) - eE)
671671 let eI = (toBigInt(value(assetInfo(by)).quantity) - eF)
672672 let eJ = ew(eG, eH, eI)
673673 eJ
674674 }
675675
676676
677677 func eK (eL,eM,eF) = {
678678 let eG = (bV(br(bz)) + eL)
679679 let eH = (bV(br(bA)) + eM)
680680 let eI = (value(assetInfo(by)).quantity + eF)
681681 let eB = ew(toBigInt(eG), toBigInt(eH), toBigInt(eI))
682682 let eN = [IntegerEntry(ak, height), StringEntry(aj, toString(eB))]
683683 $Tuple2(eN, eB)
684684 }
685685
686686
687687 func eO () = valueOrElse(getBoolean(bd, aH(toString(this))), false)
688688
689689
690690 func eP (eQ,eB) = if ((eB >= eQ))
691691 then true
692692 else ba(makeString(["updated KLp lower than current KLp", toString(eQ), toString(eB)], " "))
693693
694694
695695 func eR (eS) = {
696696 let eG = bV(br(bz))
697697 let eH = bV(br(bA))
698698 let eT = eS.amount
699699 let eU = fraction(eS.amount, eS.price, b, FLOOR)
700700 let eV = if ((eS.orderType == Buy))
701701 then $Tuple2(eT, -(eU))
702702 else $Tuple2(-(eT), eU)
703703 let eL = eV._1
704704 let eM = eV._2
705705 if (if (if (bk())
706706 then true
707707 else (bx == m))
708708 then true
709709 else (bx == n))
710710 then throw("Exchange operations disabled")
711711 else if (if ((eS.assetPair.amountAsset != bz))
712712 then true
713713 else (eS.assetPair.priceAsset != bA))
714714 then throw("Wrong order assets.")
715715 else {
716716 let eW = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, aj), "0")), bc("invalid kLp"))
717717 let eX = eK(eL, eM, 0)
718718 let eY = eX._1
719719 let eZ = eX._2
720720 let fa = (eZ >= eW)
721721 let fb = makeString(["kLp=", toString(eW), " kLpNew=", toString(eZ), " amountAssetBalance=", toString(eG), " priceAssetBalance=", toString(eH), " amountAssetBalanceDelta=", toString(eL), " priceAssetBalanceDelta=", toString(eM), " height=", toString(height)], "")
722722 $Tuple2(fa, fb)
723723 }
724724 }
725725
726726
727727 func fc (fd) = if ((size(fd.payments) != 1))
728728 then throw("exactly 1 payment is expected")
729729 else {
730730 let fe = value(fd.payments[0])
731731 let dv = value(fe.assetId)
732732 let ff = fe.amount
733733 let eg = dt(toBase58String(fd.transactionId), toBase58String(dv), ff, fd.caller)
734734 let dM = eg._1
735735 let dN = eg._2
736736 let dO = eg._10
737737 let fg = if (!(bj(fd.caller)))
738738 then if (bk())
739739 then true
740740 else (bx == n)
741741 else false
742742 if (fg)
743743 then throw(("Get operation is blocked by admin. Status = " + toString(bx)))
744744 else $Tuple5(dM, dN, ff, dv, dO)
745745 }
746746
747747
748748 func fh (fd,dQ,dW) = if ((size(fd.payments) != 2))
749749 then throw("exactly 2 payments are expected")
750750 else {
751751 let fi = value(fd.payments[0])
752752 let fj = value(fd.payments[1])
753753 let fk = dP(toBase58String(fd.transactionId), dQ, fi.amount, fi.assetId, fj.amount, fj.assetId, toString(fd.caller), false, dW)
754754 let fl = if (!(bj(fd.caller)))
755755 then if (if (bk())
756756 then true
757757 else (bx == l))
758758 then true
759759 else (bx == n)
760760 else false
761761 if (fl)
762762 then throw(("Put operation is blocked by admin. Status = " + toString(bx)))
763763 else fk
764764 }
765765
766766
767767 func fm (ch) = {
768768 let fn = invoke(bd, "emit", [ch], nil)
769769 if ((fn == fn))
770770 then {
771771 let fo = {
772772 let aQ = fn
773773 if ($isInstanceOf(aQ, "Address"))
774774 then {
775775 let fp = aQ
776776 invoke(fp, "emit", [ch], nil)
777777 }
778778 else unit
779779 }
780780 if ((fo == fo))
781781 then ch
782782 else throw("Strict value is not equal to itself.")
783783 }
784784 else throw("Strict value is not equal to itself.")
785785 }
786786
787787
788788 func fq (ch,ai) = {
789789 let fr = if ((ai == 0))
790790 then 0
791791 else fraction(ch, ai, b)
792792 $Tuple2((ch - fr), fr)
793793 }
794794
795795
796796 func fs (ft,fu,ab,ac) = {
797797 let fv = (ac == unit)
798798 let fw = bV(br(bz))
799799 let fx = bV(br(bA))
800800 let fy = if ((fu == bz))
801801 then true
802802 else if ((fu == bA))
803803 then false
804804 else ba("invalid asset")
805805 let fz = if (fv)
806806 then $Tuple2(fw, fx)
807807 else if (fy)
808808 then $Tuple2((fw - ft), fx)
809809 else $Tuple2(fw, (fx - ft))
810810 let fA = fz._1
811811 let fB = fz._2
812812 let fC = if (fy)
813813 then $Tuple2(ft, 0)
814814 else $Tuple2(0, ft)
815815 let fD = fC._1
816816 let fE = fC._2
817817 let eT = fq(fD, bf)._1
818818 let eU = fq(fE, bf)._1
819819 let fF = fq(ft, bf)
820820 let fG = fF._1
821821 let fr = fF._2
822822 let fH = (fA + eT)
823823 let fI = (fB + eU)
824824 let fJ = bY(D(fI, bC), D(fH, bB))
825825 let fK = H(fJ, b)
826826 let fL = if (fy)
827827 then fA
828828 else fB
829829 let fM = toBigInt(fL)
830830 let fN = toBigInt(valueOrErrorMessage(assetInfo(by), (("asset " + toBase58String(by)) + " doesn't exist")).quantity)
831831 let fO = if ((fN > f))
832832 then true
833833 else ba("initial deposit requires all coins")
834834 if ((fO == fO))
835835 then {
836836 let fP = toBigInt(fG)
837837 let fQ = max([0, toInt(((fN * (sqrtBigInt((d + ((fP * d) / fM)), 18, 18, DOWN) - d)) / d))])
838838 let ev = if (fv)
839839 then nil
840840 else [IntegerEntry(W(), fK), IntegerEntry(X(height, lastBlock.timestamp), fK), StringEntry(aa(toString(value(ab)), toBase58String(value(ac))), bG(fD, fE, fQ, fK, 0, 0, height, lastBlock.timestamp, 0, 0))]
841841 let fR = bY(D(fB, bC), D(fA, bB))
842842 let fS = H(fR, b)
843843 let fT = {
844844 let fU = if (fy)
845845 then $Tuple2(fD, fA)
846846 else $Tuple2(fE, fB)
847847 let ch = fU._1
848848 let fV = fU._2
849849 let fW = toInt(fraction(fN, toBigInt((ch / 2)), toBigInt(fV)))
850850 fraction((fQ - fW), b, fW)
851851 }
852852 $Tuple5(fQ, ev, fr, fT, fy)
853853 }
854854 else throw("Strict value is not equal to itself.")
855855 }
856856
857857
858858 func fX (fY,fG,fu,ab,ac) = {
859859 let fv = (ac == unit)
860860 let dk = bm()
861861 let dl = parseIntValue(dk[t])
862862 let dm = parseIntValue(dk[u])
863863 let fZ = [if ((fu == by))
864864 then true
865865 else ba("invalid lp asset")]
866866 if ((fZ == fZ))
867867 then {
868868 let ga = if ((fY == bz))
869869 then true
870870 else if ((fY == bA))
871871 then false
872872 else ba("invalid asset")
873873 let gb = if (ga)
874874 then toBigInt(bV(br(bz)))
875875 else toBigInt(bV(br(bA)))
876876 let gc = if (ga)
877877 then dl
878878 else dm
879879 let gd = bV(br(bz))
880880 let ge = bV(br(bA))
881881 let gf = if (ga)
882882 then gd
883883 else ge
884884 let gg = toBigInt(gf)
885885 let fN = toBigInt(valueOrErrorMessage(assetInfo(by), (("asset " + toBase58String(by)) + " doesn't exist")).quantity)
886886 let gh = toBigInt(fG)
887887 let gi = max([0, toInt(((gb * (d - pow((d - ((gh * d) / fN)), 18, h, 0, 18, DOWN))) / d))])
888888 let gj = fq(gi, bh)
889889 let gk = gj._1
890890 let fr = gj._2
891891 let gl = if (ga)
892892 then $Tuple4(gk, 0, (gd - gi), ge)
893893 else $Tuple4(0, gk, gd, (ge - gi))
894894 let gm = gl._1
895895 let gn = gl._2
896896 let go = gl._3
897897 let gp = gl._4
898898 let fJ = bY(D(gp, bC), D(go, bB))
899899 let fK = H(fJ, b)
900900 let ev = if (fv)
901901 then nil
902902 else [StringEntry(ad(toString(value(ab)), toBase58String(value(ac))), bR(gm, gn, fG, fK, height, lastBlock.timestamp)), IntegerEntry(W(), fK), IntegerEntry(X(height, lastBlock.timestamp), fK)]
903903 let fR = bY(D(ge, bC), D(gd, bB))
904904 let fS = H(fR, b)
905905 let fT = {
906906 let gq = (toInt(fraction(gb, gh, fN)) * 2)
907907 fraction((gk - gq), b, gq)
908908 }
909909 $Tuple5(gk, ev, fr, fT, ga)
910910 }
911911 else throw("Strict value is not equal to itself.")
912912 }
913913
914914
915915 func gr () = {
916916 let gs = aS()
917917 let aQ = getString(gs, U())
918918 if ($isInstanceOf(aQ, "String"))
919919 then {
920920 let aV = aQ
921921 fromBase58String(aV)
922922 }
923923 else if ($isInstanceOf(aQ, "Unit"))
924924 then unit
925925 else throw("Match error")
926926 }
927927
928928
929929 func gt (fd) = {
930930 let aQ = gr()
931931 if ($isInstanceOf(aQ, "ByteVector"))
932932 then {
933933 let gu = aQ
934934 (fd.callerPublicKey == gu)
935935 }
936936 else if ($isInstanceOf(aQ, "Unit"))
937937 then (fd.caller == this)
938938 else throw("Match error")
939939 }
940940
941941
942942 func gv (fd) = {
943943 let gw = throw("Permission denied")
944944 let aQ = gr()
945945 if ($isInstanceOf(aQ, "ByteVector"))
946946 then {
947947 let gu = aQ
948948 if ((fd.callerPublicKey == gu))
949949 then true
950950 else gw
951951 }
952952 else if ($isInstanceOf(aQ, "Unit"))
953953 then if ((fd.caller == this))
954954 then true
955955 else gw
956956 else throw("Match error")
957957 }
958958
959959
960960 @Callable(fd)
961961 func rebalance () = (cK(aW(this, ae())) ++ cK(aW(this, af())))
962962
963963
964964
965965 @Callable(fd)
966966 func calculateAmountOutForSwapREADONLY (gx,gy,gz) = {
967967 let gA = if ((gy == false))
968968 then {
969969 let gB = aW(this, af())
970970 let gC = aW(this, ae())
971971 $Tuple2(gB, gC)
972972 }
973973 else {
974974 let gB = aW(this, ae())
975975 let gC = aW(this, af())
976976 $Tuple2(gB, gC)
977977 }
978978 let gB = gA._1
979979 let gC = gA._2
980980 let gD = bV(gC)
981981 let gE = bV(gB)
982982 let gF = fraction(gE, gx, (gD + gx))
983983 let gG = (toBigInt(gD) * toBigInt(gE))
984984 let gH = (((toBigInt(bV(gC)) + toBigInt(gx)) + toBigInt(gz)) * (toBigInt(bV(gB)) - toBigInt(gF)))
985985 let gI = if ((gH >= gG))
986986 then true
987987 else throw("new K is fewer error")
988988 if ((gI == gI))
989989 then $Tuple2(nil, gF)
990990 else throw("Strict value is not equal to itself.")
991991 }
992992
993993
994994
995995 @Callable(fd)
996996 func calculateAmountOutForSwapAndSendTokens (gx,gy,gJ,gK,gz) = {
997997 let gL = {
998998 let bg = invoke(bd, "getSwapContractREADONLY", nil, nil)
999999 if ($isInstanceOf(bg, "String"))
10001000 then bg
10011001 else throw(($getType(bg) + " couldn't be cast to String"))
10021002 }
10031003 let gM = {
10041004 let bg = invoke(bd, "isPoolSwapDisabledREADONLY", [toString(this)], nil)
10051005 if ($isInstanceOf(bg, "Boolean"))
10061006 then bg
10071007 else throw(($getType(bg) + " couldn't be cast to Boolean"))
10081008 }
10091009 let gN = if (!(bj(fd.caller)))
10101010 then if (if (bk())
10111011 then true
10121012 else (bx == n))
10131013 then true
10141014 else gM
10151015 else false
10161016 let fZ = [if (if (!(gN))
10171017 then true
10181018 else gt(fd))
10191019 then true
10201020 else ba("swap operation is blocked by admin"), if ((value(fd.payments[0]).amount >= gx))
10211021 then true
10221022 else ba("Wrong amount"), if ((fd.caller == addressFromStringValue(gL)))
10231023 then true
10241024 else ba("Permission denied")]
10251025 if ((fZ == fZ))
10261026 then {
10271027 let fe = value(fd.payments[0])
10281028 let gC = br(fe.assetId)
10291029 let gB = if ((gy == false))
10301030 then aW(this, af())
10311031 else aW(this, ae())
1032- let gD = ((bV(gC) - value(fd.payments[0]).amount) - gz)
1032+ let gD = (bV(gC) - value(fd.payments[0]).amount)
10331033 let gE = bV(gB)
10341034 let gF = fraction(gE, gx, (gD + gx))
10351035 let gG = (toBigInt(gD) * toBigInt(gE))
1036- let gH = ((toBigInt(bV(gC)) + toBigInt(gz)) * (toBigInt(bV(gB)) - toBigInt(gF)))
1036+ let gH = (toBigInt(bV(gC)) * (toBigInt(bV(gB)) - toBigInt(gF)))
10371037 let gI = if ((gH >= gG))
10381038 then true
10391039 else throw("new K is fewer error")
10401040 if ((gI == gI))
10411041 then {
10421042 let gO = if ((gF >= gJ))
10431043 then true
10441044 else throw("Exchange result is fewer coins than expected")
10451045 if ((gO == gO))
10461046 then {
1047- let eL = if (gy)
1048- then -(gF)
1049- else gz
1050- let eM = if (gy)
1051- then gz
1052- else -(gF)
1053- let gP = eK(eL, eM, 0)._1
1054- if ((gP == gP))
1047+ let gP = aW(this, af())
1048+ let gQ = fromBase58String(gP)
1049+ let fr = fraction(gx, gz, 100)
1050+ let gR = cK(gC)
1051+ if ((gR == gR))
10551052 then {
1056- let gQ = cK(gC)
1057- if ((gQ == gQ))
1053+ let gS = cR(gB, (gF + fr))
1054+ if ((gS == gS))
10581055 then {
1059- let gR = cR(gB, gF)
1060- if ((gR == gR))
1061- then $Tuple2(((gR ++ gQ) ++ [ScriptTransfer(addressFromStringValue(gK), gF, bp(gB))]), gF)
1062- else throw("Strict value is not equal to itself.")
1056+ let gT = ScriptTransfer(be, fr, gQ)
1057+ $Tuple2(((gS ++ gR) ++ [ScriptTransfer(addressFromStringValue(gK), (gF - fr), bp(gB)), gT]), gF)
10631058 }
10641059 else throw("Strict value is not equal to itself.")
10651060 }
10661061 else throw("Strict value is not equal to itself.")
10671062 }
10681063 else throw("Strict value is not equal to itself.")
10691064 }
10701065 else throw("Strict value is not equal to itself.")
10711066 }
10721067 else throw("Strict value is not equal to itself.")
10731068 }
10741069
10751070
10761071
10771072 @Callable(fd)
1078-func put (dQ,gS) = if ((0 > dQ))
1073+func put (dQ,gU) = if ((0 > dQ))
10791074 then throw("Invalid slippageTolerance passed")
10801075 else {
10811076 let fk = fh(fd, dQ, true)
10821077 let es = fk._2
10831078 let dx = fk._7
10841079 let dO = fk._9
10851080 let et = fk._10
10861081 let eu = fk._11
1087- let gT = fk._12
1088- let gU = fk._13
1082+ let gV = fk._12
1083+ let gW = fk._13
10891084 let fi = toBigInt(value(fd.payments[0]).amount)
10901085 let fj = toBigInt(value(fd.payments[1]).amount)
10911086 let eJ = eC(fi, fj, toBigInt(0))
10921087 if ((eJ == eJ))
10931088 then {
10941089 let fn = invoke(bd, "emit", [es], nil)
10951090 if ((fn == fn))
10961091 then {
10971092 let fo = {
10981093 let aQ = fn
10991094 if ($isInstanceOf(aQ, "Address"))
11001095 then {
11011096 let fp = aQ
11021097 invoke(fp, "emit", [es], nil)
11031098 }
11041099 else unit
11051100 }
11061101 if ((fo == fo))
11071102 then {
1108- let gV = if ((et > 0))
1109- then invoke(bF, "put", nil, [AttachedPayment(gT, et)])
1103+ let gX = if ((et > 0))
1104+ then invoke(bF, "put", nil, [AttachedPayment(gV, et)])
11101105 else nil
1111- if ((gV == gV))
1106+ if ((gX == gX))
11121107 then {
1113- let gW = if ((eu > 0))
1114- then invoke(bF, "put", nil, [AttachedPayment(gU, eu)])
1108+ let gY = if ((eu > 0))
1109+ then invoke(bF, "put", nil, [AttachedPayment(gW, eu)])
11151110 else nil
1116- if ((gW == gW))
1111+ if ((gY == gY))
11171112 then {
1118- let gX = if (gS)
1113+ let gZ = if (gU)
11191114 then {
1120- let gY = invoke(bE, "stake", nil, [AttachedPayment(dx, es)])
1121- if ((gY == gY))
1115+ let ha = invoke(bE, "stake", nil, [AttachedPayment(dx, es)])
1116+ if ((ha == ha))
11221117 then nil
11231118 else throw("Strict value is not equal to itself.")
11241119 }
11251120 else [ScriptTransfer(fd.caller, es, dx)]
1126- let gZ = eK(0, 0, 0)
1127- if ((gZ == gZ))
1121+ let hb = eK(0, 0, 0)
1122+ if ((hb == hb))
11281123 then {
1129- let eB = gZ._2
1130- let gP = gZ._1
1131- let ha = eP(eJ, eB)
1132- if ((ha == ha))
1124+ let eB = hb._2
1125+ let hc = hb._1
1126+ let hd = eP(eJ, eB)
1127+ if ((hd == hd))
11331128 then {
1134- let hb = invoke(this, "rebalance", nil, nil)
1135- if ((hb == hb))
1136- then ((dO ++ gX) ++ gP)
1129+ let he = invoke(this, "rebalance", nil, nil)
1130+ if ((he == he))
1131+ then ((dO ++ gZ) ++ hc)
11371132 else throw("Strict value is not equal to itself.")
11381133 }
11391134 else throw("Strict value is not equal to itself.")
11401135 }
11411136 else throw("Strict value is not equal to itself.")
11421137 }
11431138 else throw("Strict value is not equal to itself.")
11441139 }
11451140 else throw("Strict value is not equal to itself.")
11461141 }
11471142 else throw("Strict value is not equal to itself.")
11481143 }
11491144 else throw("Strict value is not equal to itself.")
11501145 }
11511146 else throw("Strict value is not equal to itself.")
11521147 }
11531148
11541149
11551150
11561151 @Callable(fd)
1157-func putForFree (hc) = if ((0 > hc))
1152+func putForFree (hf) = if ((0 > hf))
11581153 then throw("Invalid value passed")
11591154 else {
1160- let fk = fh(fd, hc, false)
1155+ let fk = fh(fd, hf, false)
11611156 let dO = fk._9
11621157 let fi = toBigInt(value(fd.payments[0]).amount)
11631158 let fj = toBigInt(value(fd.payments[1]).amount)
11641159 let eJ = eC(fi, fj, toBigInt(0))
11651160 if ((eJ == eJ))
11661161 then {
1167- let hd = eK(0, 0, 0)
1168- let gP = hd._1
1169- let eB = hd._2
1170- let ha = eP(eJ, eB)
1171- if ((ha == ha))
1172- then (dO ++ gP)
1162+ let hg = eK(0, 0, 0)
1163+ let hc = hg._1
1164+ let eB = hg._2
1165+ let hd = eP(eJ, eB)
1166+ if ((hd == hd))
1167+ then (dO ++ hc)
11731168 else throw("Strict value is not equal to itself.")
11741169 }
11751170 else throw("Strict value is not equal to itself.")
11761171 }
11771172
11781173
11791174
11801175 @Callable(fd)
1181-func putOneTkn (he,hf) = {
1182- let hg = {
1176+func putOneTkn (hh,hi) = {
1177+ let hj = {
11831178 let bg = invoke(bd, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
11841179 if ($isInstanceOf(bg, "Boolean"))
11851180 then bg
11861181 else throw(($getType(bg) + " couldn't be cast to Boolean"))
11871182 }
11881183 let fl = if (!(bj(fd.caller)))
11891184 then if (if (if (bk())
11901185 then true
11911186 else (bx == l))
11921187 then true
11931188 else (bx == n))
11941189 then true
1195- else hg
1190+ else hj
11961191 else false
11971192 let fZ = [if (if (!(fl))
11981193 then true
11991194 else gt(fd))
12001195 then true
12011196 else ba("put operation is blocked by admin"), if ((size(fd.payments) == 1))
12021197 then true
12031198 else ba("exactly 1 payment are expected")]
12041199 if ((fZ == fZ))
12051200 then {
1206- let hh = fd.payments[0]
1207- let fu = hh.assetId
1208- let ft = hh.amount
1201+ let hk = fd.payments[0]
1202+ let fu = hk.assetId
1203+ let ft = hk.amount
12091204 let eJ = if ((fu == bz))
12101205 then eC(toBigInt(ft), toBigInt(0), toBigInt(0))
12111206 else if ((fu == bA))
12121207 then eC(toBigInt(0), toBigInt(ft), toBigInt(0))
12131208 else ba("payment asset is not supported")
12141209 if ((eJ == eJ))
12151210 then {
12161211 let ab = fd.caller
12171212 let ac = fd.transactionId
1218- let hi = fs(ft, fu, ab, ac)
1219- if ((hi == hi))
1213+ let hl = fs(ft, fu, ab, ac)
1214+ if ((hl == hl))
12201215 then {
1221- let fy = hi._5
1222- let hj = hi._4
1223- let fr = hi._3
1224- let ev = hi._2
1225- let hk = hi._1
1226- let hl = if (if ((he > 0))
1227- then (he > hk)
1216+ let fy = hl._5
1217+ let hm = hl._4
1218+ let fr = hl._3
1219+ let ev = hl._2
1220+ let hn = hl._1
1221+ let ho = if (if ((hh > 0))
1222+ then (hh > hn)
12281223 else false)
1229- then ba(makeString(["amount to receive is less than ", toString(he)], ""))
1230- else hk
1231- let fn = fm(hl)
1224+ then ba(makeString(["amount to receive is less than ", toString(hh)], ""))
1225+ else hn
1226+ let fn = fm(ho)
12321227 if ((fn == fn))
12331228 then {
1234- let gX = if (hf)
1229+ let gZ = if (hi)
12351230 then {
1236- let hm = invoke(bE, "stake", nil, [AttachedPayment(by, hl)])
1237- if ((hm == hm))
1231+ let hp = invoke(bE, "stake", nil, [AttachedPayment(by, ho)])
1232+ if ((hp == hp))
12381233 then nil
12391234 else throw("Strict value is not equal to itself.")
12401235 }
1241- else [ScriptTransfer(fd.caller, hl, by)]
1242- let hn = if ((fr > 0))
1236+ else [ScriptTransfer(fd.caller, ho, by)]
1237+ let hq = if ((fr > 0))
12431238 then [ScriptTransfer(be, fr, fu)]
12441239 else nil
1245- let ho = if ((this == be))
1240+ let hr = if ((this == be))
12461241 then $Tuple2(0, 0)
12471242 else if (fy)
12481243 then $Tuple2(-(fr), 0)
12491244 else $Tuple2(0, -(fr))
1250- let eL = ho._1
1251- let eM = ho._2
1252- let hp = eK(eL, eM, 0)
1253- let gP = hp._1
1254- let eB = hp._2
1245+ let eL = hr._1
1246+ let eM = hr._2
1247+ let hs = eK(eL, eM, 0)
1248+ let hc = hs._1
1249+ let eB = hs._2
12551250 let eW = value(getString(aj))
1256- let ha = eP(eJ, eB)
1257- if ((ha == ha))
1251+ let hd = eP(eJ, eB)
1252+ if ((hd == hd))
12581253 then {
1259- let hb = invoke(this, "rebalance", nil, nil)
1260- if ((hb == hb))
1261- then $Tuple2((((ev ++ gX) ++ hn) ++ gP), hl)
1254+ let he = invoke(this, "rebalance", nil, nil)
1255+ if ((he == he))
1256+ then $Tuple2((((ev ++ gZ) ++ hq) ++ hc), ho)
12621257 else throw("Strict value is not equal to itself.")
12631258 }
12641259 else throw("Strict value is not equal to itself.")
12651260 }
12661261 else throw("Strict value is not equal to itself.")
12671262 }
12681263 else throw("Strict value is not equal to itself.")
12691264 }
12701265 else throw("Strict value is not equal to itself.")
12711266 }
12721267 else throw("Strict value is not equal to itself.")
12731268 }
12741269
12751270
12761271
12771272 @Callable(fd)
12781273 func putOneTknREADONLY (fu,ft) = {
1279- let hq = fs(ft, bp(fu), unit, unit)
1280- let hk = hq._1
1281- let ev = hq._2
1282- let fr = hq._3
1283- let hj = hq._4
1284- let fy = hq._5
1285- $Tuple2(nil, $Tuple3(hk, fr, hj))
1274+ let ht = fs(ft, bp(fu), unit, unit)
1275+ let hn = ht._1
1276+ let ev = ht._2
1277+ let fr = ht._3
1278+ let hm = ht._4
1279+ let fy = ht._5
1280+ $Tuple2(nil, $Tuple3(hn, fr, hm))
12861281 }
12871282
12881283
12891284
12901285 @Callable(fd)
1291-func getOneTkn (hr,he) = {
1292- let hg = {
1286+func getOneTkn (hu,hh) = {
1287+ let hj = {
12931288 let bg = invoke(bd, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
12941289 if ($isInstanceOf(bg, "Boolean"))
12951290 then bg
12961291 else throw(($getType(bg) + " couldn't be cast to Boolean"))
12971292 }
12981293 let fg = if (!(bj(fd.caller)))
12991294 then if (if (bk())
13001295 then true
13011296 else (bx == n))
13021297 then true
1303- else hg
1298+ else hj
13041299 else false
13051300 let fZ = [if (if (!(fg))
13061301 then true
13071302 else gt(fd))
13081303 then true
13091304 else ba("get operation is blocked by admin"), if ((size(fd.payments) == 1))
13101305 then true
13111306 else ba("exactly 1 payment are expected")]
13121307 if ((fZ == fZ))
13131308 then {
1314- let fY = bp(hr)
1315- let hh = fd.payments[0]
1316- let fu = hh.assetId
1317- let fG = hh.amount
1309+ let fY = bp(hu)
1310+ let hk = fd.payments[0]
1311+ let fu = hk.assetId
1312+ let fG = hk.amount
13181313 let eJ = eC(toBigInt(0), toBigInt(0), toBigInt(0))
13191314 if ((eJ == eJ))
13201315 then {
13211316 let ab = fd.caller
13221317 let ac = fd.transactionId
1323- let hs = fX(fY, fG, fu, ab, ac)
1324- if ((hs == hs))
1318+ let hv = fX(fY, fG, fu, ab, ac)
1319+ if ((hv == hv))
13251320 then {
1326- let ga = hs._5
1327- let hj = hs._4
1328- let fr = hs._3
1329- let ev = hs._2
1330- let ht = hs._1
1331- let ch = if (if ((he > 0))
1332- then (he > ht)
1321+ let ga = hv._5
1322+ let hm = hv._4
1323+ let fr = hv._3
1324+ let ev = hv._2
1325+ let hw = hv._1
1326+ let ch = if (if ((hh > 0))
1327+ then (hh > hw)
13331328 else false)
1334- then ba(makeString(["amount to receive is less than ", toString(he)], ""))
1335- else ht
1336- let hu = invoke(bd, "burn", [fG], [AttachedPayment(fu, fG)])
1337- if ((hu == hu))
1329+ then ba(makeString(["amount to receive is less than ", toString(hh)], ""))
1330+ else hw
1331+ let hx = invoke(bd, "burn", [fG], [AttachedPayment(fu, fG)])
1332+ if ((hx == hx))
13381333 then {
1339- let gR = cR(hr, (ch + max([0, fr])))
1340- let hv = [ScriptTransfer(ab, ch, fY)]
1341- let hn = if ((fr > 0))
1334+ let gS = cR(hu, (ch + max([0, fr])))
1335+ let hy = [ScriptTransfer(ab, ch, fY)]
1336+ let hq = if ((fr > 0))
13421337 then [ScriptTransfer(be, fr, fY)]
13431338 else nil
1344- let hw = {
1345- let hx = if ((this == be))
1339+ let hz = {
1340+ let hA = if ((this == be))
13461341 then 0
13471342 else fr
13481343 if (ga)
1349- then $Tuple2(-((ch + hx)), 0)
1350- else $Tuple2(0, -((ch + hx)))
1344+ then $Tuple2(-((ch + hA)), 0)
1345+ else $Tuple2(0, -((ch + hA)))
13511346 }
1352- let eL = hw._1
1353- let eM = hw._2
1354- let hy = eK(eL, eM, 0)
1355- let gP = hy._1
1356- let eB = hy._2
1357- let ha = eP(eJ, eB)
1358- if ((ha == ha))
1359- then $Tuple2(((((ev ++ gR) ++ hv) ++ hn) ++ gP), ch)
1347+ let eL = hz._1
1348+ let eM = hz._2
1349+ let hB = eK(eL, eM, 0)
1350+ let hc = hB._1
1351+ let eB = hB._2
1352+ let hd = eP(eJ, eB)
1353+ if ((hd == hd))
1354+ then $Tuple2(((((ev ++ gS) ++ hy) ++ hq) ++ hc), ch)
13601355 else throw("Strict value is not equal to itself.")
13611356 }
13621357 else throw("Strict value is not equal to itself.")
13631358 }
13641359 else throw("Strict value is not equal to itself.")
13651360 }
13661361 else throw("Strict value is not equal to itself.")
13671362 }
13681363 else throw("Strict value is not equal to itself.")
13691364 }
13701365
13711366
13721367
13731368 @Callable(fd)
13741369 func getOneTknREADONLY (fY,fG) = {
1375- let hz = fX(bp(fY), fG, by, unit, unit)
1376- let ht = hz._1
1377- let ev = hz._2
1378- let fr = hz._3
1379- let hj = hz._4
1380- let ga = hz._5
1381- $Tuple2(nil, $Tuple3(ht, fr, hj))
1370+ let hC = fX(bp(fY), fG, by, unit, unit)
1371+ let hw = hC._1
1372+ let ev = hC._2
1373+ let fr = hC._3
1374+ let hm = hC._4
1375+ let ga = hC._5
1376+ $Tuple2(nil, $Tuple3(hw, fr, hm))
13821377 }
13831378
13841379
13851380
13861381 @Callable(fd)
1387-func unstakeAndGetOneTkn (hA,hr,he) = {
1388- let hg = {
1382+func unstakeAndGetOneTkn (hD,hu,hh) = {
1383+ let hj = {
13891384 let bg = invoke(bd, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
13901385 if ($isInstanceOf(bg, "Boolean"))
13911386 then bg
13921387 else throw(($getType(bg) + " couldn't be cast to Boolean"))
13931388 }
13941389 let fg = if (!(bj(fd.caller)))
13951390 then if (if (bk())
13961391 then true
13971392 else (bx == n))
13981393 then true
1399- else hg
1394+ else hj
14001395 else false
14011396 let fZ = [if (if (!(fg))
14021397 then true
14031398 else gt(fd))
14041399 then true
14051400 else ba("get operation is blocked by admin"), if ((size(fd.payments) == 0))
14061401 then true
14071402 else ba("no payments are expected")]
14081403 if ((fZ == fZ))
14091404 then {
1410- let fY = bp(hr)
1405+ let fY = bp(hu)
14111406 let ab = fd.caller
14121407 let ac = fd.transactionId
14131408 let eJ = eC(toBigInt(0), toBigInt(0), toBigInt(0))
14141409 if ((eJ == eJ))
14151410 then {
1416- let hB = invoke(bE, "unstake", [toBase58String(by), hA], nil)
1417- if ((hB == hB))
1411+ let hE = invoke(bE, "unstake", [toBase58String(by), hD], nil)
1412+ if ((hE == hE))
14181413 then {
1419- let hC = fX(fY, hA, by, ab, ac)
1420- if ((hC == hC))
1414+ let hF = fX(fY, hD, by, ab, ac)
1415+ if ((hF == hF))
14211416 then {
1422- let ga = hC._5
1423- let hj = hC._4
1424- let fr = hC._3
1425- let ev = hC._2
1426- let ht = hC._1
1427- let ch = if (if ((he > 0))
1428- then (he > ht)
1417+ let ga = hF._5
1418+ let hm = hF._4
1419+ let fr = hF._3
1420+ let ev = hF._2
1421+ let hw = hF._1
1422+ let ch = if (if ((hh > 0))
1423+ then (hh > hw)
14291424 else false)
1430- then ba(makeString(["amount to receive is less than ", toString(he)], ""))
1431- else ht
1432- let hu = invoke(bd, "burn", [hA], [AttachedPayment(by, hA)])
1433- if ((hu == hu))
1425+ then ba(makeString(["amount to receive is less than ", toString(hh)], ""))
1426+ else hw
1427+ let hx = invoke(bd, "burn", [hD], [AttachedPayment(by, hD)])
1428+ if ((hx == hx))
14341429 then {
1435- let gR = cR(hr, (ch + max([0, fr])))
1436- let hv = [ScriptTransfer(fd.caller, ch, fY)]
1437- let hn = if ((fr > 0))
1430+ let gS = cR(hu, (ch + max([0, fr])))
1431+ let hy = [ScriptTransfer(fd.caller, ch, fY)]
1432+ let hq = if ((fr > 0))
14381433 then [ScriptTransfer(be, fr, fY)]
14391434 else nil
1440- let hD = {
1441- let hx = if ((this == be))
1435+ let hG = {
1436+ let hA = if ((this == be))
14421437 then 0
14431438 else fr
14441439 if (ga)
1445- then $Tuple2(-((ch + hx)), 0)
1446- else $Tuple2(0, -((ch + hx)))
1440+ then $Tuple2(-((ch + hA)), 0)
1441+ else $Tuple2(0, -((ch + hA)))
14471442 }
1448- let eL = hD._1
1449- let eM = hD._2
1450- let hE = eK(eL, eM, 0)
1451- let gP = hE._1
1452- let eB = hE._2
1453- let ha = eP(eJ, eB)
1454- if ((ha == ha))
1455- then $Tuple2(((((ev ++ gR) ++ hv) ++ hn) ++ gP), ch)
1443+ let eL = hG._1
1444+ let eM = hG._2
1445+ let hH = eK(eL, eM, 0)
1446+ let hc = hH._1
1447+ let eB = hH._2
1448+ let hd = eP(eJ, eB)
1449+ if ((hd == hd))
1450+ then $Tuple2(((((ev ++ gS) ++ hy) ++ hq) ++ hc), ch)
14561451 else throw("Strict value is not equal to itself.")
14571452 }
14581453 else throw("Strict value is not equal to itself.")
14591454 }
14601455 else throw("Strict value is not equal to itself.")
14611456 }
14621457 else throw("Strict value is not equal to itself.")
14631458 }
14641459 else throw("Strict value is not equal to itself.")
14651460 }
14661461 else throw("Strict value is not equal to itself.")
14671462 }
14681463
14691464
14701465
14711466 @Callable(fd)
14721467 func get () = {
14731468 let eg = fc(fd)
14741469 let dM = eg._1
14751470 let dN = eg._2
14761471 let ff = eg._3
14771472 let dv = eg._4
14781473 let dO = eg._5
1479- let gR = cW(dM, dN)
1474+ let gS = cW(dM, dN)
14801475 let eJ = eC(toBigInt(0), toBigInt(0), toBigInt(0))
14811476 if ((eJ == eJ))
14821477 then {
1483- let hF = invoke(bd, "burn", [ff], [AttachedPayment(dv, ff)])
1484- if ((hF == hF))
1478+ let hI = invoke(bd, "burn", [ff], [AttachedPayment(dv, ff)])
1479+ if ((hI == hI))
14851480 then {
1486- let hG = eK(-(dM), -(dN), 0)
1487- let gP = hG._1
1488- let eB = hG._2
1489- let ha = eP(eJ, eB)
1490- if ((ha == ha))
1491- then ((gR ++ dO) ++ gP)
1481+ let hJ = eK(-(dM), -(dN), 0)
1482+ let hc = hJ._1
1483+ let eB = hJ._2
1484+ let hd = eP(eJ, eB)
1485+ if ((hd == hd))
1486+ then ((gS ++ dO) ++ hc)
14921487 else throw("Strict value is not equal to itself.")
14931488 }
14941489 else throw("Strict value is not equal to itself.")
14951490 }
14961491 else throw("Strict value is not equal to itself.")
14971492 }
14981493
14991494
15001495
15011496 @Callable(fd)
1502-func getNoLess (hH,hI) = {
1497+func getNoLess (hK,hL) = {
15031498 let eg = fc(fd)
15041499 let dM = eg._1
15051500 let dN = eg._2
15061501 let ff = eg._3
15071502 let dv = eg._4
15081503 let dO = eg._5
1509- if ((hH > dM))
1510- then throw(((("noLessThenAmtAsset failed: " + toString(dM)) + " < ") + toString(hH)))
1511- else if ((hI > dN))
1512- then throw(((("noLessThenPriceAsset failed: " + toString(dN)) + " < ") + toString(hI)))
1504+ if ((hK > dM))
1505+ then throw(((("noLessThenAmtAsset failed: " + toString(dM)) + " < ") + toString(hK)))
1506+ else if ((hL > dN))
1507+ then throw(((("noLessThenPriceAsset failed: " + toString(dN)) + " < ") + toString(hL)))
15131508 else {
1514- let gR = cW(dM, dN)
1509+ let gS = cW(dM, dN)
15151510 let eJ = eC(toBigInt(0), toBigInt(0), toBigInt(0))
15161511 if ((eJ == eJ))
15171512 then {
1518- let hF = invoke(bd, "burn", [ff], [AttachedPayment(dv, ff)])
1519- if ((hF == hF))
1513+ let hI = invoke(bd, "burn", [ff], [AttachedPayment(dv, ff)])
1514+ if ((hI == hI))
15201515 then {
1521- let hJ = eK(-(dM), -(dN), 0)
1522- let gP = hJ._1
1523- let eB = hJ._2
1524- let ha = eP(eJ, eB)
1525- if ((ha == ha))
1526- then ((gR ++ dO) ++ gP)
1516+ let hM = eK(-(dM), -(dN), 0)
1517+ let hc = hM._1
1518+ let eB = hM._2
1519+ let hd = eP(eJ, eB)
1520+ if ((hd == hd))
1521+ then ((gS ++ dO) ++ hc)
15271522 else throw("Strict value is not equal to itself.")
15281523 }
15291524 else throw("Strict value is not equal to itself.")
15301525 }
15311526 else throw("Strict value is not equal to itself.")
15321527 }
15331528 }
15341529
15351530
15361531
15371532 @Callable(fd)
15381533 func unstakeAndGet (ch) = {
1539- let hK = if ((size(fd.payments) != 0))
1534+ let hN = if ((size(fd.payments) != 0))
15401535 then throw("No payments are expected")
15411536 else true
1542- if ((hK == hK))
1537+ if ((hN == hN))
15431538 then {
15441539 let dk = bm()
15451540 let dx = fromBase58String(dk[q])
15461541 let eJ = eC(toBigInt(0), toBigInt(0), toBigInt(0))
15471542 if ((eJ == eJ))
15481543 then {
1549- let hB = invoke(bE, "unstake", [toBase58String(dx), ch], nil)
1550- if ((hB == hB))
1544+ let hE = invoke(bE, "unstake", [toBase58String(dx), ch], nil)
1545+ if ((hE == hE))
15511546 then {
15521547 let eg = dt(toBase58String(fd.transactionId), toBase58String(dx), ch, fd.caller)
15531548 let dM = eg._1
15541549 let dN = eg._2
15551550 let dA = parseIntValue(eg._9)
15561551 let dO = eg._10
1557- let gR = cW(dM, dN)
1552+ let gS = cW(dM, dN)
15581553 let fg = if (!(bj(fd.caller)))
15591554 then if (bk())
15601555 then true
15611556 else (bx == n)
15621557 else false
1563- let hL = if (fg)
1558+ let hO = if (fg)
15641559 then throw(("Get operation is blocked by admin. Status = " + toString(dA)))
15651560 else true
1566- if ((hL == hL))
1561+ if ((hO == hO))
15671562 then {
1568- let hF = invoke(bd, "burn", [ch], [AttachedPayment(dx, ch)])
1569- if ((hF == hF))
1563+ let hI = invoke(bd, "burn", [ch], [AttachedPayment(dx, ch)])
1564+ if ((hI == hI))
15701565 then {
1571- let hM = eK(-(dM), -(dN), 0)
1572- let gP = hM._1
1573- let eB = hM._2
1574- let ha = eP(eJ, eB)
1575- if ((ha == ha))
1576- then ((gR ++ dO) ++ gP)
1566+ let hP = eK(-(dM), -(dN), 0)
1567+ let hc = hP._1
1568+ let eB = hP._2
1569+ let hd = eP(eJ, eB)
1570+ if ((hd == hd))
1571+ then ((gS ++ dO) ++ hc)
15771572 else throw("Strict value is not equal to itself.")
15781573 }
15791574 else throw("Strict value is not equal to itself.")
15801575 }
15811576 else throw("Strict value is not equal to itself.")
15821577 }
15831578 else throw("Strict value is not equal to itself.")
15841579 }
15851580 else throw("Strict value is not equal to itself.")
15861581 }
15871582 else throw("Strict value is not equal to itself.")
15881583 }
15891584
15901585
15911586
15921587 @Callable(fd)
1593-func unstakeAndGetNoLess (hA,hN,hI) = {
1588+func unstakeAndGetNoLess (hD,hQ,hL) = {
15941589 let fg = if (!(bj(fd.caller)))
15951590 then if (bk())
15961591 then true
15971592 else (bx == n)
15981593 else false
15991594 let fZ = [if (!(fg))
16001595 then true
16011596 else throw("get operation is blocked by admin"), if ((size(fd.payments) == 0))
16021597 then true
16031598 else throw("no payments are expected")]
16041599 if ((fZ == fZ))
16051600 then {
16061601 let eJ = eC(toBigInt(0), toBigInt(0), toBigInt(0))
16071602 if ((eJ == eJ))
16081603 then {
1609- let hB = invoke(bE, "unstake", [toBase58String(by), hA], nil)
1610- if ((hB == hB))
1604+ let hE = invoke(bE, "unstake", [toBase58String(by), hD], nil)
1605+ if ((hE == hE))
16111606 then {
1612- let eg = dt(toBase58String(fd.transactionId), toBase58String(by), hA, fd.caller)
1607+ let eg = dt(toBase58String(fd.transactionId), toBase58String(by), hD, fd.caller)
16131608 let dM = eg._1
16141609 let dN = eg._2
16151610 let dO = eg._10
1616- let gR = cW(dM, dN)
1617- let hO = [if ((dM >= hN))
1611+ let gS = cW(dM, dN)
1612+ let hR = [if ((dM >= hQ))
16181613 then true
1619- else throw(makeString(["amount asset amount to receive is less than ", toString(hN)], "")), if ((dN >= hI))
1614+ else throw(makeString(["amount asset amount to receive is less than ", toString(hQ)], "")), if ((dN >= hL))
16201615 then true
1621- else throw(makeString(["price asset amount to receive is less than ", toString(hI)], ""))]
1622- if ((hO == hO))
1616+ else throw(makeString(["price asset amount to receive is less than ", toString(hL)], ""))]
1617+ if ((hR == hR))
16231618 then {
1624- let hF = invoke(bd, "burn", [hA], [AttachedPayment(by, hA)])
1625- if ((hF == hF))
1619+ let hI = invoke(bd, "burn", [hD], [AttachedPayment(by, hD)])
1620+ if ((hI == hI))
16261621 then {
1627- let hP = eK(-(dM), -(dN), 0)
1628- let gP = hP._1
1629- let eB = hP._2
1630- let ha = eP(eJ, eB)
1631- if ((ha == ha))
1632- then ((gR ++ dO) ++ gP)
1622+ let hS = eK(-(dM), -(dN), 0)
1623+ let hc = hS._1
1624+ let eB = hS._2
1625+ let hd = eP(eJ, eB)
1626+ if ((hd == hd))
1627+ then ((gS ++ dO) ++ hc)
16331628 else throw("Strict value is not equal to itself.")
16341629 }
16351630 else throw("Strict value is not equal to itself.")
16361631 }
16371632 else throw("Strict value is not equal to itself.")
16381633 }
16391634 else throw("Strict value is not equal to itself.")
16401635 }
16411636 else throw("Strict value is not equal to itself.")
16421637 }
16431638 else throw("Strict value is not equal to itself.")
16441639 }
16451640
16461641
16471642
16481643 @Callable(fd)
1649-func activate (hQ,hR) = if ((toString(fd.caller) != toString(bd)))
1644+func activate (hT,hU) = if ((toString(fd.caller) != toString(bd)))
16501645 then throw("permissions denied")
1651- else $Tuple2([StringEntry(ae(), hQ), StringEntry(af(), hR)], "success")
1646+ else $Tuple2([StringEntry(ae(), hT), StringEntry(af(), hU)], "success")
16521647
16531648
16541649
16551650 @Callable(fd)
16561651 func refreshKLp () = {
1657- let hS = valueOrElse(getInteger(ak), 0)
1658- let hT = if (((height - hS) >= an))
1652+ let hV = valueOrElse(getInteger(ak), 0)
1653+ let hW = if (((height - hV) >= an))
16591654 then unit
16601655 else ba(makeString([toString(an), " blocks have not passed since the previous call"], ""))
1661- if ((hT == hT))
1656+ if ((hW == hW))
16621657 then {
16631658 let eW = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, aj), "0")), bc("invalid kLp"))
1664- let hU = eK(0, 0, 0)
1665- let hV = hU._1
1666- let eB = hU._2
1659+ let hX = eK(0, 0, 0)
1660+ let hY = hX._1
1661+ let eB = hX._2
16671662 let eN = if ((eW != eB))
1668- then hV
1663+ then hY
16691664 else ba("nothing to refresh")
16701665 $Tuple2(eN, toString(eB))
16711666 }
16721667 else throw("Strict value is not equal to itself.")
16731668 }
16741669
16751670
16761671
16771672 @Callable(fd)
16781673 func getPoolConfigWrapperREADONLY () = $Tuple2(nil, bm())
16791674
16801675
16811676
16821677 @Callable(fd)
16831678 func getAccBalanceWrapperREADONLY (ap) = $Tuple2(nil, bV(ap))
16841679
16851680
16861681
16871682 @Callable(fd)
16881683 func calcPricesWrapperREADONLY (de,df,dj) = {
16891684 let ds = di(de, df, dj)
16901685 $Tuple2(nil, [toString(ds[0]), toString(ds[1]), toString(ds[2])])
16911686 }
16921687
16931688
16941689
16951690 @Callable(fd)
16961691 func toX18WrapperREADONLY (E,F) = $Tuple2(nil, toString(D(E, F)))
16971692
16981693
16991694
17001695 @Callable(fd)
17011696 func fromX18WrapperREADONLY (I,J) = $Tuple2(nil, H(parseBigIntValue(I), J))
17021697
17031698
17041699
17051700 @Callable(fd)
17061701 func calcPriceBigIntWrapperREADONLY (bZ,ca) = $Tuple2(nil, toString(bY(parseBigIntValue(bZ), parseBigIntValue(ca))))
17071702
17081703
17091704
17101705 @Callable(fd)
17111706 func estimatePutOperationWrapperREADONLY (du,dQ,dR,dS,dT,dU,ab,dV,dW) = $Tuple2(nil, dP(du, dQ, dR, dS, dT, dU, ab, dV, dW))
17121707
17131708
17141709
17151710 @Callable(fd)
17161711 func estimateGetOperationWrapperREADONLY (du,dv,dw,ab) = {
17171712 let eg = dt(du, dv, dw, addressFromStringValue(ab))
17181713 $Tuple2(nil, $Tuple10(eg._1, eg._2, eg._3, eg._4, eg._5, eg._6, eg._7, toString(eg._8), eg._9, eg._10))
17191714 }
17201715
17211716
17221717
17231718 @Callable(fd)
17241719 func statsREADONLY () = {
17251720 let dk = bm()
17261721 let dx = fromBase58String(dk[q])
1727- let hW = dk[r]
1728- let hX = dk[s]
1722+ let hZ = dk[r]
1723+ let gP = dk[s]
17291724 let dZ = dk[v]
17301725 let ea = dk[w]
17311726 let dl = parseIntValue(dk[t])
17321727 let dm = parseIntValue(dk[u])
1733- let hY = valueOrErrorMessage(assetInfo(dx), (("Asset " + toBase58String(dx)) + " doesn't exist")).quantity
1734- let hZ = bV(hW)
1735- let ia = bV(hX)
1736- let ib = if ((hY == 0))
1728+ let ia = valueOrErrorMessage(assetInfo(dx), (("Asset " + toBase58String(dx)) + " doesn't exist")).quantity
1729+ let ib = bV(hZ)
1730+ let ic = bV(gP)
1731+ let id = if ((ia == 0))
17371732 then [e, e, e]
1738- else di(hZ, ia, hY)
1733+ else di(ib, ic, ia)
17391734 let dH = 0
1740- let ic = H(ib[1], b)
1741- let id = H(ib[2], b)
1742- let ie = value(getInteger(bd, aD(toString(this))))
1743- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(hZ), toString(ia), toString(hY), toString(dH), toString(ic), toString(id), toString(ie)], j))
1735+ let ie = H(id[1], b)
1736+ let if = H(id[2], b)
1737+ let ig = value(getInteger(bd, aD(toString(this))))
1738+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(ib), toString(ic), toString(ia), toString(dH), toString(ie), toString(if), toString(ig)], j))
17441739 }
17451740
17461741
17471742
17481743 @Callable(fd)
17491744 func evaluatePutByAmountAssetREADONLY (dR) = {
17501745 let dk = bm()
17511746 let dx = fromBase58String(dk[q])
17521747 let dX = dk[r]
17531748 let dy = fromBase58String(dX)
17541749 let dY = dk[s]
17551750 let dz = fromBase58String(dY)
17561751 let dl = parseIntValue(dk[t])
17571752 let dm = parseIntValue(dk[u])
17581753 let dA = dk[p]
1759- let hY = valueOrErrorMessage(assetInfo(dx), (("Asset " + toBase58String(dx)) + " doesn't exist")).quantity
1760- let hZ = bV(dX)
1761- let ia = bV(dY)
1762- let dg = D(hZ, dl)
1763- let dh = D(ia, dm)
1764- let dG = if ((hY == 0))
1754+ let ia = valueOrErrorMessage(assetInfo(dx), (("Asset " + toBase58String(dx)) + " doesn't exist")).quantity
1755+ let ib = bV(dX)
1756+ let ic = bV(dY)
1757+ let dg = D(ib, dl)
1758+ let dh = D(ic, dm)
1759+ let dG = if ((ia == 0))
17651760 then e
17661761 else bY(dh, dg)
17671762 let ed = D(dR, dl)
17681763 let ee = fraction(ed, dG, d)
17691764 let dT = H(ee, dm)
17701765 let fk = dP("", 500000, dR, dy, dT, dz, "", true, false)
17711766 let eo = fk._1
1772- let if = fk._3
1767+ let ih = fk._3
17731768 let dC = fk._4
17741769 let dE = fk._5
17751770 let dB = fk._6
17761771 $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(eo), toString(H(dG, b)), toString(dC), toString(dE), toString(dB), dA, toString(dR), toString(dT)], j))
17771772 }
17781773
17791774
17801775
17811776 @Callable(fd)
17821777 func evaluatePutByPriceAssetREADONLY (dT) = {
17831778 let dk = bm()
17841779 let dx = fromBase58String(dk[q])
17851780 let dX = dk[r]
17861781 let dy = fromBase58String(dX)
17871782 let dY = dk[s]
17881783 let dz = fromBase58String(dY)
17891784 let dl = parseIntValue(dk[t])
17901785 let dm = parseIntValue(dk[u])
17911786 let dA = dk[p]
1792- let hY = valueOrErrorMessage(assetInfo(dx), (("Asset " + toBase58String(dx)) + " doesn't exist")).quantity
1793- let ig = bV(dX)
1794- let ih = bV(dY)
1795- let ii = D(ig, dl)
1796- let ij = D(ih, dm)
1797- let dG = if ((hY == 0))
1787+ let ia = valueOrErrorMessage(assetInfo(dx), (("Asset " + toBase58String(dx)) + " doesn't exist")).quantity
1788+ let ii = bV(dX)
1789+ let ij = bV(dY)
1790+ let ik = D(ii, dl)
1791+ let il = D(ij, dm)
1792+ let dG = if ((ia == 0))
17981793 then e
1799- else bY(ij, ii)
1794+ else bY(il, ik)
18001795 let ee = D(dT, dm)
18011796 let ed = fraction(ee, d, dG)
18021797 let dR = H(ed, dl)
18031798 let fk = dP("", 500000, dR, dy, dT, dz, "", true, false)
18041799 let eo = fk._1
1805- let if = fk._3
1800+ let ih = fk._3
18061801 let dC = fk._4
18071802 let dE = fk._5
18081803 let dB = fk._6
18091804 $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(eo), toString(H(dG, b)), toString(dC), toString(dE), toString(dB), dA, toString(dR), toString(dT)], j))
18101805 }
18111806
18121807
18131808
18141809 @Callable(fd)
1815-func evaluateGetREADONLY (ik,il) = {
1816- let eg = dt("", ik, il, this)
1810+func evaluateGetREADONLY (im,in) = {
1811+ let eg = dt("", im, in, this)
18171812 let dM = eg._1
18181813 let dN = eg._2
18191814 let dC = eg._5
18201815 let dE = eg._6
18211816 let dB = eg._7
18221817 let dH = eg._8
18231818 let dA = parseIntValue(eg._9)
18241819 $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(dM), toString(dN), toString(dC), toString(dE), toString(dB), toString(dH), toString(dA)], j))
18251820 }
18261821
18271822
1828-@Verifier(im)
1829-func in () = {
1830- let io = {
1823+@Verifier(io)
1824+func ip () = {
1825+ let iq = {
18311826 let aQ = gr()
18321827 if ($isInstanceOf(aQ, "ByteVector"))
18331828 then {
18341829 let gu = aQ
18351830 gu
18361831 }
18371832 else if ($isInstanceOf(aQ, "Unit"))
1838- then im.senderPublicKey
1833+ then io.senderPublicKey
18391834 else throw("Match error")
18401835 }
1841- let aQ = im
1836+ let aQ = io
18421837 if ($isInstanceOf(aQ, "Order"))
18431838 then {
18441839 let eS = aQ
1845- let ip = bl()
1846- let iq = if (eO())
1840+ let ir = bl()
1841+ let is = if (eO())
18471842 then $Tuple2(true, "")
18481843 else eR(eS)
1849- let aK = iq._1
1850- let aL = iq._2
1844+ let aK = is._1
1845+ let aL = is._2
18511846 let aM = sigVerify(eS.bodyBytes, eS.proofs[0], eS.senderPublicKey)
1852- let aN = sigVerify(eS.bodyBytes, eS.proofs[1], ip)
1847+ let aN = sigVerify(eS.bodyBytes, eS.proofs[1], ir)
18531848 if (if (if (aK)
18541849 then aM
18551850 else false)
18561851 then aN
18571852 else false)
18581853 then true
18591854 else aJ(aK, aL, aM, aN)
18601855 }
18611856 else if ($isInstanceOf(aQ, "SetScriptTransaction"))
18621857 then {
18631858 let aV = aQ
1864- if (sigVerify(im.bodyBytes, im.proofs[0], io))
1859+ if (sigVerify(io.bodyBytes, io.proofs[0], iq))
18651860 then true
18661861 else {
1867- let ir = blake2b256(value(aV.script))
1868- let is = fromBase64String(value(getString(bd, aF())))
1869- let it = scriptHash(this)
1870- if ((is == ir))
1871- then (it != ir)
1862+ let it = blake2b256(value(aV.script))
1863+ let iu = fromBase64String(value(getString(bd, aF())))
1864+ let iv = scriptHash(this)
1865+ if ((iu == it))
1866+ then (iv != it)
18721867 else false
18731868 }
18741869 }
1875- else sigVerify(im.bodyBytes, im.proofs[0], io)
1870+ else sigVerify(io.bodyBytes, io.proofs[0], iq)
18761871 }
18771872

github/deemru/w8io/026f985 
319.16 ms