tx · Gug91KZb45LDdHGR5Nn53bbbE2GuKXh8rKAL4nVRJLi3

3P2ZethT3oKAzU4CTDaeM4AxwhE7LfoFGqs:  -0.04300000 Waves

2023.10.16 13:27 [3866902] smart account 3P2ZethT3oKAzU4CTDaeM4AxwhE7LfoFGqs > SELF 0.00000000 Waves

{ "type": 13, "id": "Gug91KZb45LDdHGR5Nn53bbbE2GuKXh8rKAL4nVRJLi3", "fee": 4300000, "feeAssetId": null, "timestamp": 1697452002424, "version": 2, "chainId": 87, "sender": "3P2ZethT3oKAzU4CTDaeM4AxwhE7LfoFGqs", "senderPublicKey": "9rm1AzhBK9HZ8WLVCnEU9aV7CXv6qTLTgKQP1hvNz8qH", "proofs": [ "2rL9sEPwPeHggnHgn37BeWbvXVGnXkhurEszb1f7XxoqzLxFbm2163jwaEKfLHKQc99tXy8ZGr3vRX6mAKKfan7P" ], "script": "base64:BgLjOAgCEgASBQoDAQQBEgcKBQEEAQgBEgQKAgEEEgMKAQESBAoCAQQSBAoCCAESBAoCCAESBAoCCAESBQoDAQgBEgASBAoCAQESAwoBARIFCgMBAQESBAoCCAgSABIAEgMKAQgSBQoDAQEBEgQKAgEBEgQKAggBEgQKAggIEgsKCQgBAQIBAggEBBIGCgQICAEIEgASAwoBARIDCgEBEgQKAggBIgpsUGRlY2ltYWxzIgZzY2FsZTgiDHNjYWxlOEJpZ0ludCIHc2NhbGUxOCIKemVyb0JpZ0ludCIEYmlnMCIEYmlnMSIEYmlnMiILd2F2ZXNTdHJpbmciA1NFUCIKUG9vbEFjdGl2ZSIPUG9vbFB1dERpc2FibGVkIhNQb29sTWF0Y2hlckRpc2FibGVkIgxQb29sU2h1dGRvd24iDmlkeFBvb2xBZGRyZXNzIg1pZHhQb29sU3RhdHVzIhBpZHhQb29sTFBBc3NldElkIg1pZHhBbXRBc3NldElkIg9pZHhQcmljZUFzc2V0SWQiDmlkeEFtdEFzc2V0RGNtIhBpZHhQcmljZUFzc2V0RGNtIg5pZHhJQW10QXNzZXRJZCIQaWR4SVByaWNlQXNzZXRJZCINaWR4TFBBc3NldERjbSISaWR4UG9vbEFtdEFzc2V0QW10IhRpZHhQb29sUHJpY2VBc3NldEFtdCIRaWR4UG9vbExQQXNzZXRBbXQiGWlkeEZhY3RvcnlTdGFraW5nQ29udHJhY3QiGmlkeEZhY3RvcnlTbGlwcGFnZUNvbnRyYWN0IgV0b1gxOCIHb3JpZ1ZhbCINb3JpZ1NjYWxlTXVsdCILdG9YMThCaWdJbnQiB2Zyb21YMTgiA3ZhbCIPcmVzdWx0U2NhbGVNdWx0Igxmcm9tWDE4Um91bmQiBXJvdW5kIgd0b1NjYWxlIgNhbXQiCHJlc1NjYWxlIghjdXJTY2FsZSIDYWJzIglhYnNCaWdJbnQiDHN3YXBDb250cmFjdCICZmMiE2tleU1hbmFnZXJQdWJsaWNLZXkiFmtleU1hbmFnZXJWYXVsdEFkZHJlc3MiAnBsIgJwaCIBaCIJdGltZXN0YW1wIgNwYXUiC3VzZXJBZGRyZXNzIgR0eElkIgNnYXUiAmFhIgJwYSIGa2V5RmVlIgpmZWVEZWZhdWx0IgNmZWUiBmtleUtMcCIVa2V5S0xwUmVmcmVzaGVkSGVpZ2h0IhJrZXlLTHBSZWZyZXNoRGVsYXkiFmtMcFJlZnJlc2hEZWxheURlZmF1bHQiD2tMcFJlZnJlc2hEZWxheSIUa2V5QWRkaXRpb25hbEJhbGFuY2UiB2Fzc2V0SWQiFmtleVN0YWtpbmdBc3NldEJhbGFuY2UiGmdldEFkZGl0aW9uYWxCYWxhbmNlT3JaZXJvIhxnZXRTdGFraW5nQXNzZXRCYWxhbmNlT3JaZXJvIhBrZXlGYWN0b3J5Q29uZmlnIg1rZXlNYXRjaGVyUHViIilrZXlNYXBwaW5nUG9vbENvbnRyYWN0QWRkcmVzc1RvUG9vbEFzc2V0cyITcG9vbENvbnRyYWN0QWRkcmVzcyINa2V5UG9vbENvbmZpZyIJaUFtdEFzc2V0IgtpUHJpY2VBc3NldCIfa2V5TWFwcGluZ3NCYXNlQXNzZXQyaW50ZXJuYWxJZCIMYmFzZUFzc2V0U3RyIhNrZXlBbGxQb29sc1NodXRkb3duIg1rZXlQb29sV2VpZ2h0Ig9jb250cmFjdEFkZHJlc3MiFmtleUFsbG93ZWRMcFNjcmlwdEhhc2giFmtleUZlZUNvbGxlY3RvckFkZHJlc3MiFmtleVNraXBPcmRlclZhbGlkYXRpb24iC3Bvb2xBZGRyZXNzIg90aHJvd09yZGVyRXJyb3IiCm9yZGVyVmFsaWQiDm9yZGVyVmFsaWRJbmZvIgtzZW5kZXJWYWxpZCIMbWF0Y2hlclZhbGlkIhdhZGRyZXNzRnJvbVN0cmluZ09yVGhpcyINYWRkcmVzc1N0cmluZyIHJG1hdGNoMCIBYSIcZ2V0TWFuYWdlclZhdWx0QWRkcmVzc09yVGhpcyIOZmFjdG9yeUFkZHJlc3MiA2ZjYSIBcyIPZ2V0U3RyaW5nT3JGYWlsIgdhZGRyZXNzIgNrZXkiDGdldEludE9yRmFpbCIIdGhyb3dFcnIiA21zZyIGZm10RXJyIg9mYWN0b3J5Q29udHJhY3QiE2ZlZUNvbGxlY3RvckFkZHJlc3MiBWluRmVlIgFAIgZvdXRGZWUiFWtleUFkZHJlc3NXaGl0ZWxpc3RlZCIUaXNBZGRyZXNzV2hpdGVsaXN0ZWQiEGlzR2xvYmFsU2h1dGRvd24iE2dldE1hdGNoZXJQdWJPckZhaWwiDWdldFBvb2xDb25maWciCGFtdEFzc2V0IgpwcmljZUFzc2V0IgxwYXJzZUFzc2V0SWQiBWlucHV0Ig9hc3NldElkVG9TdHJpbmciD3BhcnNlUG9vbENvbmZpZyIKcG9vbENvbmZpZyIQcG9vbENvbmZpZ1BhcnNlZCILJHQwOTc2OTk5MzUiDmNmZ1Bvb2xBZGRyZXNzIg1jZmdQb29sU3RhdHVzIgxjZmdMcEFzc2V0SWQiEGNmZ0Ftb3VudEFzc2V0SWQiD2NmZ1ByaWNlQXNzZXRJZCIWY2ZnQW1vdW50QXNzZXREZWNpbWFscyIVY2ZnUHJpY2VBc3NldERlY2ltYWxzIhBnZXRGYWN0b3J5Q29uZmlnIg9zdGFraW5nQ29udHJhY3QiEHNsaXBwYWdlQ29udHJhY3QiEWRhdGFQdXRBY3Rpb25JbmZvIg1pbkFtdEFzc2V0QW10Ig9pblByaWNlQXNzZXRBbXQiCG91dExwQW10IgVwcmljZSIdc2xpcHBhZ2VUb2xlcmFuY2VQYXNzZWRCeVVzZXIiFXNsaXBwYWdlVG9sZXJhbmNlUmVhbCIIdHhIZWlnaHQiC3R4VGltZXN0YW1wIhJzbGlwYWdlQW10QXNzZXRBbXQiFHNsaXBhZ2VQcmljZUFzc2V0QW10IhFkYXRhR2V0QWN0aW9uSW5mbyIOb3V0QW10QXNzZXRBbXQiEG91dFByaWNlQXNzZXRBbXQiB2luTHBBbXQiDWdldEFjY0JhbGFuY2UiDWJhbGFuY2VPblBvb2wiDHRvdGFsQmFsYW5jZSIPY2FsY1ByaWNlQmlnSW50IghwckFtdFgxOCIIYW1BbXRYMTgiFGNhbGNQcmljZUJpZ0ludFJvdW5kIgdnZXRSYXRlIgVwcm94eSIDaW52IgFyIgdkZXBvc2l0IgZhbW91bnQiDnN0YWtpbmdBc3NldElkIhhjdXJyZW50QWRkaXRpb25hbEJhbGFuY2UiGmN1cnJlbnRTdGFraW5nQXNzZXRCYWxhbmNlIgVhc3NldCINZGVwb3NpdEludm9rZSIUcmVjZWl2ZWRTdGFraW5nQXNzZXQiFG5ld0FkZGl0aW9uYWxCYWxhbmNlIhZuZXdTdGFraW5nQXNzZXRCYWxhbmNlIgh3aXRoZHJhdyIMcHJveHlSYXRlTXVsIg1wcm9maXRBZGRyZXNzIhBjdXJyZW50UHJveHlSYXRlIgdvbGRSYXRlIgxzdGFraW5nQXNzZXQiFG9sZFNlbmRTdGFraW5nQW1vdW50IhZzZW5kU3Rha2luZ0Fzc2V0QW1vdW50Igxwcm9maXRBbW91bnQiDndpdGhkcmF3SW52b2tlIg5yZWNlaXZlZEFzc2V0cyITZ2V0TGVhc2VQcm94eUNvbmZpZyIRcmViYWxhbmNlSW50ZXJuYWwiC3RhcmdldFJhdGlvIgptaW5CYWxhbmNlIhRsZWFzYWJsZVRvdGFsQmFsYW5jZSIXdGFyZ2V0QWRkaXRpb25hbEJhbGFuY2UiBGRpZmYiD3NlbmRBc3NldEFtb3VudCIOZ2V0QXNzZXRBbW91bnQiDnJlYmFsYW5jZUFzc2V0Ig0kdDAxNjE3MTE2MzA3Igppc0xlYXNhYmxlIgtsZWFzZWRSYXRpbyIMcHJveHlBZGRyZXNzIgxwcm94eUFzc2V0SWQiFHN0YWtpbmdQcm9maXRBZGRyZXNzIhl3aXRoZHJhd0FuZFJlYmFsYW5jZUFzc2V0IglnZXRBbW91bnQiDSR0MDE2NzA2MTY4NDIiF25ld1RvdGFsTGVhc2FibGVCYWxhbmNlIg53aXRoZHJhd0Ftb3VudCIXd2l0aGRyYXdBbmRSZWJhbGFuY2VBbGwiFGFtb3VudEFzc2V0T3V0QW1vdW50IhNwcmljZUFzc2V0T3V0QW1vdW50IhJBbUFtdFdpdGhkcmF3U3RhdGUiElByQW10V2l0aGRyYXdTdGF0ZSIQcHJpdmF0ZUNhbGNQcmljZSIKYW1Bc3NldERjbSIKcHJBc3NldERjbSIFYW1BbXQiBXByQW10Ig5hbXRBc3NldEFtdFgxOCIQcHJpY2VBc3NldEFtdFgxOCIKY2FsY1ByaWNlcyIFbHBBbXQiA2NmZyILYW10QXNzZXREY20iDXByaWNlQXNzZXREY20iCHByaWNlWDE4IghscEFtdFgxOCITbHBQcmljZUluQW1Bc3NldFgxOCITbHBQcmljZUluUHJBc3NldFgxOCIPY2FsY3VsYXRlUHJpY2VzIgZwcmljZXMiFGVzdGltYXRlR2V0T3BlcmF0aW9uIgZ0eElkNTgiCnBtdEFzc2V0SWQiCHBtdExwQW10IglscEFzc2V0SWQiCWFtQXNzZXRJZCIJcHJBc3NldElkIgpwb29sU3RhdHVzIgpscEVtaXNzaW9uIglhbUJhbGFuY2UiDGFtQmFsYW5jZVgxOCIJcHJCYWxhbmNlIgxwckJhbGFuY2VYMTgiC2N1clByaWNlWDE4IghjdXJQcmljZSILcG10THBBbXRYMTgiDWxwRW1pc3Npb25YMTgiC291dEFtQW10WDE4IgtvdXRQckFtdFgxOCIIb3V0QW1BbXQiCG91dFByQW10IgVzdGF0ZSIUZXN0aW1hdGVQdXRPcGVyYXRpb24iEXNsaXBwYWdlVG9sZXJhbmNlIgxpbkFtQXNzZXRBbXQiC2luQW1Bc3NldElkIgxpblByQXNzZXRBbXQiC2luUHJBc3NldElkIgppc0V2YWx1YXRlIgZlbWl0THAiDGFtQXNzZXRJZFN0ciIMcHJBc3NldElkU3RyIgtpQW10QXNzZXRJZCINaVByaWNlQXNzZXRJZCIOaW5BbUFzc2V0SWRTdHIiDmluUHJBc3NldElkU3RyIg9pbkFtQXNzZXRBbXRYMTgiD2luUHJBc3NldEFtdFgxOCIMdXNlclByaWNlWDE4IgNyZXMiC3NsaXBwYWdlWDE4IhRzbGlwcGFnZVRvbGVyYW5jZVgxOCIKcHJWaWFBbVgxOCIKYW1WaWFQclgxOCIMZXhwZWN0ZWRBbXRzIhFleHBBbXRBc3NldEFtdFgxOCITZXhwUHJpY2VBc3NldEFtdFgxOCIJY2FsY0xwQW10Ig5jYWxjQW1Bc3NldFBtdCIOY2FsY1ByQXNzZXRQbXQiDHNsaXBwYWdlQ2FsYyIJZW1pdExwQW10IgZhbURpZmYiBnByRGlmZiILY29tbW9uU3RhdGUiB2NhbGNLTHAiDWFtb3VudEJhbGFuY2UiDHByaWNlQmFsYW5jZSIQYW1vdW50QmFsYW5jZVgxOCIPcHJpY2VCYWxhbmNlWDE4Igp1cGRhdGVkS0xwIg5jYWxjQ3VycmVudEtMcCIQYW1vdW50QXNzZXREZWx0YSIPcHJpY2VBc3NldERlbHRhIhRscEFzc2V0RW1pc3Npb25EZWx0YSISYW1vdW50QXNzZXRCYWxhbmNlIhFwcmljZUFzc2V0QmFsYW5jZSIPbHBBc3NldEVtaXNzaW9uIgpjdXJyZW50S0xwIhJyZWZyZXNoS0xwSW50ZXJuYWwiF2Ftb3VudEFzc2V0QmFsYW5jZURlbHRhIhZwcmljZUFzc2V0QmFsYW5jZURlbHRhIgdhY3Rpb25zIhNza2lwT3JkZXJWYWxpZGF0aW9uIhJ2YWxpZGF0ZVVwZGF0ZWRLTHAiBm9sZEtMcCIbdmFsaWRhdGVNYXRjaGVyT3JkZXJBbGxvd2VkIgVvcmRlciIRYW1vdW50QXNzZXRBbW91bnQiEHByaWNlQXNzZXRBbW91bnQiDSR0MDI5MjMxMjk0NDMiA2tMcCINJHQwMjk4ODMyOTk4MyINdW51c2VkQWN0aW9ucyIGa0xwTmV3Igxpc09yZGVyVmFsaWQiBGluZm8iCWNvbW1vbkdldCIBaSIDcG10IgZwbXRBbXQiDWlzR2V0RGlzYWJsZWQiCWNvbW1vblB1dCIKYW1Bc3NldFBtdCIKcHJBc3NldFBtdCIGZXN0UHV0Ig1pc1B1dERpc2FibGVkIgRlbWl0IgdlbWl0SW52Ig1lbWl0SW52TGVnYWN5IhVsZWdhY3lGYWN0b3J5Q29udHJhY3QiB3Rha2VGZWUiCWZlZUFtb3VudCIPY2FsY1B1dE9uZVRva2VuIhBwYXltZW50QW1vdW50UmF3Ig5wYXltZW50QXNzZXRJZCIGaXNFdmFsIhBhbW91bnRCYWxhbmNlUmF3Ig9wcmljZUJhbGFuY2VSYXciFHBheW1lbnRJbkFtb3VudEFzc2V0Ig0kdDAzMzE2OTMzNDYyIhBhbW91bnRCYWxhbmNlT2xkIg9wcmljZUJhbGFuY2VPbGQiDSR0MDMzNDY2MzM2MTUiFGFtb3VudEFzc2V0QW1vdW50UmF3IhNwcmljZUFzc2V0QW1vdW50UmF3Ig0kdDAzMzc0NzMzODExIg1wYXltZW50QW1vdW50IhBhbW91bnRCYWxhbmNlTmV3Ig9wcmljZUJhbGFuY2VOZXciC3ByaWNlTmV3WDE4IghwcmljZU5ldyIOcGF5bWVudEJhbGFuY2UiFHBheW1lbnRCYWxhbmNlQmlnSW50IgxzdXBwbHlCaWdJbnQiC2NoZWNoU3VwcGx5Ig1kZXBvc2l0QmlnSW50Igtpc3N1ZUFtb3VudCILcHJpY2VPbGRYMTgiCHByaWNlT2xkIgRsb3NzIg0kdDAzNTQ5MjM1NjU5IgdiYWxhbmNlIg9pc3N1ZUFtb3VudEJvdGgiD2NhbGNHZXRPbmVUb2tlbiIKb3V0QXNzZXRJZCIGY2hlY2tzIhBvdXRJbkFtb3VudEFzc2V0Ig1iYWxhbmNlQmlnSW50IhhvdXRJbkFtb3VudEFzc2V0RGVjaW1hbHMiDGFtQmFsYW5jZU9sZCIMcHJCYWxhbmNlT2xkIgpvdXRCYWxhbmNlIhBvdXRCYWxhbmNlQmlnSW50Ig5yZWRlZW1lZEJpZ0ludCIJYW1vdW50UmF3Ig0kdDAzNzczNzM3NzkzIgt0b3RhbEFtb3VudCINJHQwMzc3OTczODAyMyILb3V0QW1BbW91bnQiC291dFByQW1vdW50IgxhbUJhbGFuY2VOZXciDHByQmFsYW5jZU5ldyIYYW1vdW50Qm90aEluUGF5bWVudEFzc2V0IhZtYW5hZ2VyUHVibGljS2V5T3JVbml0IhNtYW5hZ2VyVmF1bHRBZGRyZXNzIglpc01hbmFnZXIiAnBrIgttdXN0TWFuYWdlciICcGQiDWNsZWFuQW1vdW50SW4iCWlzUmV2ZXJzZSINZmVlUG9vbEFtb3VudCINJHQwMzk4ODE0MDE4NiIIYXNzZXRPdXQiB2Fzc2V0SW4iEnBvb2xBc3NldEluQmFsYW5jZSITcG9vbEFzc2V0T3V0QmFsYW5jZSIJYW1vdW50T3V0IgRvbGRLIgRuZXdLIgZjaGVja0siDGFtb3VudE91dE1pbiIJYWRkcmVzc1RvIgtzd2FwQ29udGFjdCISaXNQb29sU3dhcERpc2FibGVkIg5pc1N3YXBEaXNhYmxlZCIIY2hlY2tNaW4iEXJlZnJlc2hLTHBBY3Rpb25zIg5yZWJhbGFuY2VTdGF0ZSINd2l0aGRyYXdTdGF0ZSIPc2hvdWxkQXV0b1N0YWtlIgRhbUlkIgRwcklkIgxzbGlwcGFnZUFJbnYiDHNsaXBwYWdlUEludiIKbHBUcmFuc2ZlciILc2xwU3Rha2VJbnYiDSR0MDQ1MzYyNDU4MjQiEWlzVXBkYXRlZEtMcFZhbGlkIgNyZWIiC21heFNsaXBwYWdlIg0kdDA0NjQzNjQ2NTAxIgxtaW5PdXRBbW91bnQiCWF1dG9TdGFrZSIgaXNQb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWQiB3BheW1lbnQiDSR0MDQ3NzMwNDc4ODIiBWJvbnVzIhNlbWl0QW1vdW50RXN0aW1hdGVkIgplbWl0QW1vdW50IghzdGFrZUludiIHc2VuZEZlZSINJHQwNDg0Njg0ODY2NSINJHQwNDg2Njg0ODc3NiINJHQwNDkxMzE0OTI4OCINb3V0QXNzZXRJZFN0ciINJHQwNTAyMTA1MDM2MyIPYW1vdW50RXN0aW1hdGVkIgdidXJuSW52Ig1hc3NldFRyYW5zZmVyIg0kdDA1MTAyNzUxMjc0IhBmZWVBbW91bnRGb3JDYWxjIg0kdDA1MTI3NzUxMzg1Ig0kdDA1MTY2MzUxODE5Ig11bnN0YWtlQW1vdW50Igp1bnN0YWtlSW52Ig0kdDA1Mjc2MTUyOTEyIg0kdDA1MzU3MTUzODE4Ig0kdDA1MzgyMTUzOTI5IhRidXJuTFBBc3NldE9uRmFjdG9yeSINJHQwNTUwMjQ1NTEwNSISbm9MZXNzVGhlbkFtdEFzc2V0IhRub0xlc3NUaGVuUHJpY2VBc3NldCINJHQwNTYyMDA1NjI4MSINY2hlY2tQYXltZW50cyIPY2hlY2tQb29sU3RhdHVzIg0kdDA1NzYyOTU3NzEwIhVub0xlc3NUaGVuQW1vdW50QXNzZXQiDGNoZWNrQW1vdW50cyINJHQwNTkxODg1OTI2OSILYW10QXNzZXRTdHIiDXByaWNlQXNzZXRTdHIiGGxhc3RSZWZyZXNoZWRCbG9ja0hlaWdodCIdY2hlY2tMYXN0UmVmcmVzaGVkQmxvY2tIZWlnaHQiDSR0MDYwNDczNjA1MzciEGtMcFVwZGF0ZUFjdGlvbnMiCmFtdEFzc2V0SWQiDHByaWNlQXNzZXRJZCINcG9vbExQQmFsYW5jZSISYWNjQW10QXNzZXRCYWxhbmNlIhRhY2NQcmljZUFzc2V0QmFsYW5jZSIKcHJpY2VzTGlzdCIPbHBBbXRBc3NldFNoYXJlIhFscFByaWNlQXNzZXRTaGFyZSIKcG9vbFdlaWdodCIMY3VyUHJpY2VDYWxjIgxhbUJhbGFuY2VSYXciDHByQmFsYW5jZVJhdyIPYW1CYWxhbmNlUmF3WDE4Ig9wckJhbGFuY2VSYXdYMTgiEHBheW1lbnRMcEFzc2V0SWQiDHBheW1lbnRMcEFtdCICdHgiBnZlcmlmeSIPdGFyZ2V0UHVibGljS2V5IgptYXRjaGVyUHViIg0kdDA2OTE5OTY5MzE2IgduZXdIYXNoIgthbGxvd2VkSGFzaCILY3VycmVudEhhc2iEAQABYQAIAAFiAIDC1y8AAWMJALYCAQCAwtcvAAFkCQC2AgEAgICQu7rWrfANAAFlCQC2AgEAAAABZgkAtgIBAAAAAWcJALYCAQABAAFoCQC2AgEAAgABaQIFV0FWRVMAAWoCAl9fAAFrAAEAAWwAAgABbQADAAFuAAQAAW8AAQABcAACAAFxAAMAAXIABAABcwAFAAF0AAYAAXUABwABdgAIAAF3AAkAAXgACgABeQABAAF6AAIAAUEAAwABQgABAAFDAAcBAUQCAUUBRgkAvAIDCQC2AgEFAUUFAWQJALYCAQUBRgEBRwIBRQFGCQC8AgMFAUUFAWQFAUYBAUgCAUkBSgkAoAMBCQC8AgMFAUkJALYCAQUBSgUBZAEBSwMBSQFKAUwJAKADAQkAvQIEBQFJCQC2AgEFAUoFAWQFAUwBAU0DAU4BTwFQCQBrAwUBTgUBTwUBUAEBUQEBSQMJAGYCAAAFAUkJAQEtAQUBSQUBSQEBUgEBSQMJAL8CAgUBZQUBSQkAvgIBBQFJBQFJAQFTAAIQJXNfX3N3YXBDb250cmFjdAEBVAACEyVzX19mYWN0b3J5Q29udHJhY3QBAVUAAhQlc19fbWFuYWdlclB1YmxpY0tleQEBVgACFyVzX19tYW5hZ2VyVmF1bHRBZGRyZXNzAQFXAAIRJXMlc19fcHJpY2VfX2xhc3QBAVgCAVkBWgkAuQkCCQDMCAICGCVzJXMlZCVkX19wcmljZV9faGlzdG9yeQkAzAgCCQCkAwEFAVkJAMwIAgkApAMBBQFaBQNuaWwFAWoBAmFhAgJhYgJhYwkArAICCQCsAgIJAKwCAgILJXMlcyVzX19QX18FAmFiAgJfXwUCYWMBAmFkAgJhYgJhYwkArAICCQCsAgIJAKwCAgILJXMlcyVzX19HX18FAmFiAgJfXwUCYWMBAmFlAAIPJXNfX2Ftb3VudEFzc2V0AQJhZgACDiVzX19wcmljZUFzc2V0AAJhZwIHJXNfX2ZlZQACYWgJAGsDAAoFAWIAkE4AAmFpCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFAmFnBQJhaAACYWoJALkJAgkAzAgCAgIlcwkAzAgCAgNrTHAFA25pbAUBagACYWsJALkJAgkAzAgCAgIlcwkAzAgCAhJrTHBSZWZyZXNoZWRIZWlnaHQFA25pbAUBagACYWwJALkJAgkAzAgCAgIlcwkAzAgCAg9yZWZyZXNoS0xwRGVsYXkFA25pbAUBagACYW0AHgACYW4JAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUCYWwFAmFtAQJhbwECYXAJALkJAgkAzAgCAgQlcyVzCQDMCAICDXN0YWtlZEJhbGFuY2UJAMwIAgUCYXAFA25pbAUBagECYXEBAmFwCQC5CQIJAMwIAgIEJXMlcwkAzAgCAhFzaGFyZUFzc2V0QmFsYW5jZQkAzAgCBQJhcAUDbmlsBQFqAQJhcgECYXAJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBAmFvAQUCYXAAAAECYXMBAmFwCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAQJhcQEFAmFwAAABAmF0AAIRJXNfX2ZhY3RvcnlDb25maWcBAmF1AAIYJXMlc19fbWF0Y2hlcl9fcHVibGljS2V5AQJhdgECYXcJAKwCAgkArAICAgglcyVzJXNfXwUCYXcCIF9fbWFwcGluZ3NfX3Bvb2xDb250cmFjdDJMcEFzc2V0AQJheAICYXkCYXoJAKwCAgkArAICCQCsAgIJAKwCAgIIJWQlZCVzX18FAmF5AgJfXwUCYXoCCF9fY29uZmlnAQJhQQECYUIJAKwCAgIoJXMlcyVzX19tYXBwaW5nc19fYmFzZUFzc2V0MmludGVybmFsSWRfXwUCYUIBAmFDAAIMJXNfX3NodXRkb3duAQJhRAECYUUJAKwCAgISJXMlc19fcG9vbFdlaWdodF9fBQJhRQECYUYAAhclc19fYWxsb3dlZExwU2NyaXB0SGFzaAACYUcCFyVzX19mZWVDb2xsZWN0b3JBZGRyZXNzAQJhSAECYUkJAKwCAgIbJXMlc19fc2tpcE9yZGVyVmFsaWRhdGlvbl9fBQJhSQECYUoEAmFLAmFMAmFNAmFOCQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICJG9yZGVyIHZhbGlkYXRpb24gZmFpbGVkOiBvcmRlclZhbGlkPQkApQMBBQJhSwICICgFAmFMAgEpAg0gc2VuZGVyVmFsaWQ9CQClAwEFAmFNAg4gbWF0Y2hlclZhbGlkPQkApQMBBQJhTgECYU8BAmFQBAJhUQkApggBBQJhUAMJAAECBQJhUQIHQWRkcmVzcwQCYVIFAmFRBQJhUgUEdGhpcwECYVMABAJhVAQCYVEJAKIIAQkBAVQAAwkAAQIFAmFRAgZTdHJpbmcEAmFVBQJhUQkBAmFPAQUCYVUFBHRoaXMEAmFRCQCdCAIFAmFUCQEBVgADCQABAgUCYVECBlN0cmluZwQCYVYFAmFRCQECYU8BBQJhVgUEdGhpcwECYVcCAmFYAmFZCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUCYVgFAmFZCQC5CQIJAMwIAgIKbWFuZGF0b3J5IAkAzAgCCQClCAEFAmFYCQDMCAICAS4JAMwIAgUCYVkJAMwIAgIPIGlzIG5vdCBkZWZpbmVkBQNuaWwCAAECYVoCAmFYAmFZCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUCYVgFAmFZCQC5CQIJAMwIAgIKbWFuZGF0b3J5IAkAzAgCCQClCAEFAmFYCQDMCAICAS4JAMwIAgUCYVkJAMwIAgIPIGlzIG5vdCBkZWZpbmVkBQNuaWwCAAECYmEBAmJiCQACAQkAuQkCCQDMCAICCGxwLnJpZGU6CQDMCAIFAmJiBQNuaWwCASABAmJjAQJiYgkAuQkCCQDMCAICCGxwLnJpZGU6CQDMCAIFAmJiBQNuaWwCASAAAmJkCQERQGV4dHJOYXRpdmUoMTA2MikBCQECYVcCBQR0aGlzCQEBVAAAAmJlCQERQGV4dHJOYXRpdmUoMTA2MikBCQECYVcCBQJiZAUCYUcAAmJmCgACYmcJAPwHBAUCYmQCEGdldEluRmVlUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJiZwIDSW50BQJiZwkAAgEJAKwCAgkAAwEFAmJnAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQAAmJoCgACYmcJAPwHBAUCYmQCEWdldE91dEZlZVJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCYmcCA0ludAUCYmcJAAIBCQCsAgIJAAMBBQJiZwIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50AQJiaQECYVgJALkJAgkAzAgCAgQlcyVzCQDMCAICC3doaXRlbGlzdGVkCQDMCAIJAKUIAQUCYVgFA25pbAUBagECYmoBAmFYCQELdmFsdWVPckVsc2UCCQCbCAIFAmJkCQECYmkBBQJhWAcBAmJrAAkBC3ZhbHVlT3JFbHNlAgkAmwgCBQJiZAkBAmFDAAcBAmJsAAkA2QQBCQECYVcCBQJiZAkBAmF1AAECYm0ABAJibgkBAmFXAgUEdGhpcwkBAmFlAAQCYm8JAQJhVwIFBHRoaXMJAQJhZgAEAmF6CQECYVoCBQJiZAkBAmFBAQUCYm8EAmF5CQECYVoCBQJiZAkBAmFBAQUCYm4JALUJAgkBAmFXAgUCYmQJAQJheAIJAKQDAQUCYXkJAKQDAQUCYXoFAWoBAmJwAQJicQMJAAACBQJicQUBaQUEdW5pdAkA2QQBBQJicQECYnIBAmJxAwkAAAIFAmJxBQR1bml0BQFpCQDYBAEJAQV2YWx1ZQEFAmJxAQJicwECYnQJAJkKBwkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCBQJidAUBbwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJ0BQFwCQDZBAEJAJEDAgUCYnQFAXEJAQJicAEJAJEDAgUCYnQFAXIJAQJicAEJAJEDAgUCYnQFAXMJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJidAUBdAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJ0BQF1AAJidQkBAmJzAQkBAmJtAAACYnYFAmJ1AAJidwgFAmJ2Al8xAAJieAgFAmJ2Al8yAAJieQgFAmJ2Al8zAAJieggFAmJ2Al80AAJiQQgFAmJ2Al81AAJiQggFAmJ2Al82AAJiQwgFAmJ2Al83AQJiRAAJALUJAgkBAmFXAgUCYmQJAQJhdAAFAWoAAmJFCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCCQECYkQABQFCAhlpbmNvcnJlY3Qgc3Rha2luZyBhZGRyZXNzAAJiRgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgkBAmJEAAUBQwIZaW5jb3JyZWN0IHN0YWtpbmcgYWRkcmVzcwECYkcKAmJIAmJJAmJKAmJLAmJMAmJNAmJOAmJPAmJQAmJRCQC5CQIJAMwIAgIUJWQlZCVkJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJiSAkAzAgCCQCkAwEFAmJJCQDMCAIJAKQDAQUCYkoJAMwIAgkApAMBBQJiSwkAzAgCCQCkAwEFAmJMCQDMCAIJAKQDAQUCYk0JAMwIAgkApAMBBQJiTgkAzAgCCQCkAwEFAmJPCQDMCAIJAKQDAQUCYlAJAMwIAgkApAMBBQJiUQUDbmlsBQFqAQJiUgYCYlMCYlQCYlUCYksCYk4CYk8JALkJAgkAzAgCAgwlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJiUwkAzAgCCQCkAwEFAmJUCQDMCAIJAKQDAQUCYlUJAMwIAgkApAMBBQJiSwkAzAgCCQCkAwEFAmJOCQDMCAIJAKQDAQUCYk8FA25pbAUBagECYlYBAmFwBAJiVwMJAAACBQJhcAIFV0FWRVMICQDvBwEFBHRoaXMJYXZhaWxhYmxlCQDwBwIFBHRoaXMJANkEAQUCYXAEAmJYCQBlAgkAZAIFAmJXCQECYXIBBQJhcAkBAmFzAQUCYXAJAJYDAQkAzAgCAAAJAMwIAgUCYlgFA25pbAECYlkCAmJaAmNhCQC8AgMFAmJaBQFkBQJjYQECY2IDAmJaAmNhAUwJAL0CBAUCYloFAWQFAmNhBQFMAQJjYwECY2QEAmNlCQD8BwQFAmNkAgdnZXRSYXRlBQNuaWwFA25pbAMJAAACBQJjZQUCY2UEAmFRBQJjZQMJAAECBQJhUQIDSW50BAJjZgUCYVEFAmNmCQECYmEBAiBwcm94eS5nZXRSYXRlKCkgdW5leHBlY3RlZCB2YWx1ZQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECY2cEAmFwAmNoAmNpAmNkBAJjagkBAmFyAQUCYXADCQAAAgUCY2oFAmNqBAJjawkBAmFzAQUCY2kDCQAAAgUCY2sFAmNrBAJjbAkBAmJwAQUCYXADCQBmAgUCY2gAAAQCY20JAPwHBAUCY2QCB2RlcG9zaXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCY2wFAmNoBQNuaWwDCQAAAgUCY20FAmNtBAJhUQUCY20DCQABAgUCYVECA0ludAQCY24FAmFRBAJjbwkAZAIFAmNqBQJjaAQCY3AJAGQCBQJjawUCY24JAMwIAgkBDEludGVnZXJFbnRyeQIJAQJhbwEFAmFwBQJjbwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmFxAQUCY2kFAmNwBQNuaWwFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJjcQYCYXACY2gCY2kCY2QCY3ICY3MEAmNqCQECYXIBBQJhcAMJAAACBQJjagUCY2oEAmNrCQECYXMBBQJjaQMJAAACBQJjawUCY2sEAmN0CQECY2MBBQJjZAMJAAACBQJjdAUCY3QEAmN1CQBrAwUCY3IFAmNqBQJjawQCY3YJAQJicAEFAmNpBAJjdwkAawMFAmNyBQJjaAUCY3UEAmN4CQBrAwUCY3IFAmNoBQJjdAQCY3kJAJYDAQkAzAgCAAAJAMwIAgkAZQIFAmN3BQJjeAUDbmlsAwkAZgIFAmN4AAAEAmN6CQD8BwQFAmNkAgh3aXRoZHJhdwUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJjdgUCY3gFA25pbAMJAAACBQJjegUCY3oEAmFRBQJjegMJAAECBQJhUQIDSW50BAJjQQUCYVEEAmNvCQBlAgUCY2oFAmNBBAJjcAkAZQIJAGUCBQJjawUCY3gFAmN5CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYW8BBQJhcAUCY28JAMwIAgkBDEludGVnZXJFbnRyeQIJAQJhcQEFAmNpBQJjcAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJjcwUCY3kJAQJicAEFAmNpBQNuaWwFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJjQgECYXAEAmFRCQD8BwQFAmJkAhpnZXRQb29sTGVhc2VDb25maWdSRUFET05MWQkAzAgCCQClCAEFBHRoaXMJAMwIAgUCYXAFA25pbAUDbmlsAwkAAQIFAmFRAjAoQm9vbGVhbiwgSW50LCBJbnQsIFN0cmluZywgU3RyaW5nLCBJbnQsIFN0cmluZykEAmFSBQJhUQUCYVIJAQJiYQEJAKwCAgkArAICAgFbBQJhcAIdXSBnZXRMZWFzZVByb3h5Q29uZmlnKCkgZXJyb3IBAmNDBwJjRAJhcAJjaQJjRQJjZAJjcgJjcwQCY2oJAQJhcgEFAmFwAwkAAAIFAmNqBQJjagQCY2sJAQJhcwEFAmNpAwkAAAIFAmNrBQJjawQCY0YJAJYDAQkAzAgCAAAJAMwIAgkAZQIJAQJiVgEFAmFwBQJjRQUDbmlsBAJjRwkAawMFAmNEBQJjRgBkBAJjSAkAZQIFAmNqBQJjRwMJAAACBQJjSAAABQNuaWwDCQBmAgAABQJjSAQCY0kJAQEtAQUCY0gJAQJjZwQFAmFwBQJjSQUCY2kFAmNkBAJjSgUCY0gJAQJjcQYFAmFwBQJjSgUCY2kFAmNkBQJjcgUCY3MJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmNLAQJhcAQCY0wJAQJjQgEFAmFwBAJjTQgFAmNMAl8xBAJjTggFAmNMAl8yBAJjRQgFAmNMAl8zBAJjTwgFAmNMAl80BAJjUAgFAmNMAl81BAJjcggFAmNMAl82BAJjUQgFAmNMAl83AwUCY00JAQJjQwcFAmNOBQJhcAUCY1AFAmNFCQERQGV4dHJOYXRpdmUoMTA2MikBBQJjTwUCY3IJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAmNRBQNuaWwBAmNSAgJhcAJjUwQCY1QJAQJjQgEFAmFwBAJjTQgFAmNUAl8xBAJjTggFAmNUAl8yBAJjRQgFAmNUAl8zBAJjTwgFAmNUAl80BAJjUAgFAmNUAl81BAJjcggFAmNUAl82BAJjUQgFAmNUAl83AwUCY00EAmNVCQCWAwEJAMwIAgAACQDMCAIJAGUCCQBlAgkBAmJWAQUCYXAFAmNTBQJjRQUDbmlsAwkAAAIFAmNVBQJjVQQCY28JAGsDBQJjTgUCY1UAZAMJAAACBQJjbwUCY28EAmNWCQBlAgkBAmFyAQUCYXAFAmNvAwkAAAIFAmNWBQJjVgMJAGYCAAAFAmNWCQECY2cEBQJhcAkBAS0BBQJjVgUCY1AJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAmNPCQECY3EGBQJhcAUCY1YFAmNQCQERQGV4dHJOYXRpdmUoMTA2MikBBQJjTwUCY3IJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAmNRCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBQNuaWwBAmNXAgJjWAJjWQQCY1oJAQJjUgIJAQJhVwIFBHRoaXMJAQJhZQAFAmNYBAJkYQkBAmNSAgkBAmFXAgUEdGhpcwkBAmFmAAUCY1kJAM4IAgUCY1oFAmRhAQJkYgQCZGMCZGQCZGUCZGYEAmRnCQEBRAIFAmRlBQJkYwQCZGgJAQFEAgUCZGYFAmRkCQECYlkCBQJkaAUCZGcBAmRpAwJkZQJkZgJkagQCZGsJAQJibQAEAmRsCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCZGsFAXQEAmRtCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCZGsFAXUEAmRuCQECZGIEBQJkbAUCZG0FAmRlBQJkZgQCY2EJAQFEAgUCZGUFAmRsBAJiWgkBAUQCBQJkZgUCZG0EAmRvCQEBRAIFAmRqBQFiBAJkcAkBAmJZAgUCY2EFAmRvBAJkcQkBAmJZAgUCYloFAmRvCQDMCAIFAmRuCQDMCAIFAmRwCQDMCAIFAmRxBQNuaWwBAmRyAwJkZQJkZgJkagQCZHMJAQJkaQMFAmRlBQJkZgUCZGoJAMwIAgkBAUgCCQCRAwIFAmRzAAAFAWIJAMwIAgkBAUgCCQCRAwIFAmRzAAEFAWIJAMwIAgkBAUgCCQCRAwIFAmRzAAIFAWIFA25pbAECZHQEAmR1AmR2AmR3AmFiBAJkawkBAmJtAAQCZHgJAJEDAgUCZGsFAXEEAmR5CQCRAwIFAmRrBQFyBAJkegkAkQMCBQJkawUBcwQCZGMJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJkawUBdAQCZGQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJkawUBdQQCZEEJAJEDAgUCZGsFAXAEAmRCCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEJANkEAQUCZHgJAKwCAgkArAICAgZBc3NldCAFAmR4Ag4gZG9lc24ndCBleGlzdAhxdWFudGl0eQMJAQIhPQIFAmR4BQJkdgkAAgECFUludmFsaWQgYXNzZXQgcGFzc2VkLgQCZEMJAQJiVgEFAmR5BAJkRAkBAUQCBQJkQwUCZGMEAmRFCQECYlYBBQJkegQCZEYJAQFEAgUCZEUFAmRkBAJkRwkBAmJZAgUCZEYFAmREBAJkSAkBAUgCBQJkRwUBYgQCZEkJAQFEAgUCZHcFAWIEAmRKCQEBRAIFAmRCBQFiBAJkSwkAvAIDBQJkRAUCZEkFAmRKBAJkTAkAvAIDBQJkRgUCZEkFAmRKBAJkTQkBAUsDBQJkSwUCZGMFBUZMT09SBAJkTgkBAUsDBQJkTAUCZGQFBUZMT09SBAJkTwMJAAACBQJkdQIABQNuaWwJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYWIFAmRNAwkAAAIFAmR5AgVXQVZFUwUEdW5pdAkA2QQBBQJkeQkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJhYgUCZE4DCQAAAgUCZHoCBVdBVkVTBQR1bml0CQDZBAEFAmR6CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhZAIJAKUIAQUCYWIFAmR1CQECYlIGBQJkTQUCZE4FAmR3BQJkSAUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVcABQJkSAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVgCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJkSAUDbmlsCQCcCgoFAmRNBQJkTgUCZHkFAmR6BQJkQwUCZEUFAmRCBQJkRwUCZEEFAmRPAQJkUAkCZHUCZFECZFICZFMCZFQCZFUCYWICZFYCZFcEAmRrCQECYm0ABAJkeAkA2QQBCQCRAwIFAmRrBQFxBAJkWAkAkQMCBQJkawUBcgQCZFkJAJEDAgUCZGsFAXMEAmRaCQCRAwIFAmRrBQF2BAJlYQkAkQMCBQJkawUBdwQCZGwJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJkawUBdAQCZG0JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJkawUBdQQCZEEJAJEDAgUCZGsFAXAEAmRCCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFAmR4CQCsAgIJAKwCAgIGQXNzZXQgCQDYBAEFAmR4Ag4gZG9lc24ndCBleGlzdAhxdWFudGl0eQQCZWIJANgEAQkBC3ZhbHVlT3JFbHNlAgUCZFMJANkEAQIFV0FWRVMEAmVjCQDYBAEJAQt2YWx1ZU9yRWxzZQIFAmRVCQDZBAECBVdBVkVTAwMJAQIhPQIFAmRYBQJlYgYJAQIhPQIFAmRZBQJlYwkAAgECIkludmFsaWQgYW10IG9yIHByaWNlIGFzc2V0IHBhc3NlZC4EAmRDAwUCZFYJAQJiVgEFAmRYCQBlAgkBAmJWAQUCZFgFAmRSBAJkRQMFAmRWCQECYlYBBQJkWQkAZQIJAQJiVgEFAmRZBQJkVAQCZWQJAQFEAgUCZFIFAmRsBAJlZQkBAUQCBQJkVAUCZG0EAmVmCQECYlkCBQJlZQUCZWQEAmRECQEBRAIFAmRDBQJkbAQCZEYJAQFEAgUCZEUFAmRtBAJlZwMJAAACBQJkQgAABAJkRwUBZQQCZWgFAWUEAmRvCQB2BgkAuQICBQJlZAUCZWUAAAkAtgIBAAUAAQAABQRET1dOCQCXCgUJAQFIAgUCZG8FAWIJAQFIAgUCZWQFAmRsCQEBSAIFAmVlBQJkbQkBAmJZAgkAtwICBQJkRgUCZWUJALcCAgUCZEQFAmVkBQJlaAQCZEcJAQJiWQIFAmRGBQJkRAQCZWgJALwCAwkBAVIBCQC4AgIFAmRHBQJlZgUBZAUCZEcEAmVpCQEBRAIFAmRRBQFiAwMJAQIhPQIFAmRHBQFlCQC/AgIFAmVoBQJlaQcJAAIBCQCsAgIJAKwCAgkArAICAg9QcmljZSBzbGlwcGFnZSAJAKYDAQUCZWgCHiBleGNlZWRlZCB0aGUgcGFzc2VkIGxpbWl0IG9mIAkApgMBBQJlaQQCZEoJAQFEAgUCZEIFAWIEAmVqCQC9AgQFAmVkCQECY2IDBQJkRgUCZEQFB0NFSUxJTkcFAWQFB0NFSUxJTkcEAmVrCQC9AgQFAmVlBQFkCQECY2IDBQJkRgUCZEQFBUZMT09SBQdDRUlMSU5HBAJlbAMJAL8CAgUCZWoFAmVlCQCUCgIFAmVrBQJlZQkAlAoCBQJlZAUCZWoEAmVtCAUCZWwCXzEEAmVuCAUCZWwCXzIEAmRvCQC9AgQFAmRKBQJlbgUCZEYFBUZMT09SCQCXCgUJAQFLAwUCZG8FAWIFBUZMT09SCQEBSwMFAmVtBQJkbAUHQ0VJTElORwkBAUsDBQJlbgUCZG0FB0NFSUxJTkcFAmRHBQJlaAQCZW8IBQJlZwJfMQQCZXAIBQJlZwJfMgQCZXEIBQJlZwJfMwQCZEgJAQFIAggFAmVnAl80BQFiBAJlcgkBAUgCCAUCZWcCXzUFAWIDCQBnAgAABQJlbwkAAgECNkludmFsaWQgY2FsY3VsYXRpb25zLiBMUCBjYWxjdWxhdGVkIGlzIGxlc3MgdGhhbiB6ZXJvLgQCZXMDCQEBIQEFAmRXAAAFAmVvBAJldAkAZQIFAmRSBQJlcAQCZXUJAGUCBQJkVAUCZXEEAmV2CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVwAFAmRICQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBWAIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmRICQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhYQIFAmFiBQJkdQkBAmJHCgUCZXAFAmVxBQJlcwUCZEgFAmRRBQJlcgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCZXQFAmV1BQNuaWwJAJ8KDQUCZW8FAmVzBQJkSAUCZEMFAmRFBQJkQgUCZHgFAmRBBQJldgUCZXQFAmV1BQJkUwUCZFUBAmV3AwJleAJleQJkQgQCZXoJAQFHAgUCZXgJALYCAQUCYkIEAmVBCQEBRwIFAmV5CQC2AgEFAmJDBAJlQgkAvAIDCQB2BgkAuQICBQJlegUCZUEAAAkAtgIBAAUAAQASBQRET1dOBQFnBQJkQgMJAAACBQJkQgUBZgUBZgUCZUIBAmVDAwJlRAJlRQJlRgQCZUcJALgCAgkAtgIBCQECYlYBCQECYnIBBQJiegUCZUQEAmVICQC4AgIJALYCAQkBAmJWAQkBAmJyAQUCYkEFAmVFBAJlSQkAuAICCQC2AgEICQEFdmFsdWUBCQDsBwEFAmJ5CHF1YW50aXR5BQJlRgQCZUoJAQJldwMFAmVHBQJlSAUCZUkFAmVKAQJlSwMCZUwCZU0CZUYEAmVHCQBkAgkBAmJWAQkBAmJyAQUCYnoFAmVMBAJlSAkAZAIJAQJiVgEJAQJicgEFAmJBBQJlTQQCZUkJAGQCCAkBBXZhbHVlAQkA7AcBBQJieQhxdWFudGl0eQUCZUYEAmVCCQECZXcDCQC2AgEFAmVHCQC2AgEFAmVICQC2AgEFAmVJBAJlTgkAzAgCCQEMSW50ZWdlckVudHJ5AgUCYWsFBmhlaWdodAkAzAgCCQELU3RyaW5nRW50cnkCBQJhagkApgMBBQJlQgUDbmlsCQCUCgIFAmVOBQJlQgECZU8ACQELdmFsdWVPckVsc2UCCQCbCAIFAmJkCQECYUgBCQClCAEFBHRoaXMHAQJlUAICZVECZUIDCQDAAgIFAmVCBQJlUQYJAQJiYQEJALkJAgkAzAgCAiJ1cGRhdGVkIEtMcCBsb3dlciB0aGFuIGN1cnJlbnQgS0xwCQDMCAIJAKYDAQUCZVEJAMwIAgkApgMBBQJlQgUDbmlsAgEgAQJlUgECZVMEAmVHCQECYlYBCQECYnIBBQJiegQCZUgJAQJiVgEJAQJicgEFAmJBBAJlVAgFAmVTBmFtb3VudAQCZVUJAG4ECAUCZVMGYW1vdW50CAUCZVMFcHJpY2UFAWIFBUZMT09SBAJlVgMJAAACCAUCZVMJb3JkZXJUeXBlBQNCdXkJAJQKAgUCZVQJAQEtAQUCZVUJAJQKAgkBAS0BBQJlVAUCZVUEAmVMCAUCZVYCXzEEAmVNCAUCZVYCXzIDAwMJAQJiawAGCQAAAgUCYngFAW0GCQAAAgUCYngFAW4JAAIBAhxFeGNoYW5nZSBvcGVyYXRpb25zIGRpc2FibGVkAwMJAQIhPQIICAUCZVMJYXNzZXRQYWlyC2Ftb3VudEFzc2V0BQJiegYJAQIhPQIICAUCZVMJYXNzZXRQYWlyCnByaWNlQXNzZXQFAmJBCQACAQITV3Jvbmcgb3JkZXIgYXNzZXRzLgQCZVcJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAqAMBCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMFAmFqAgEwCQECYmMBAgtpbnZhbGlkIGtMcAQCZVgJAQJlSwMFAmVMBQJlTQAABAJlWQgFAmVYAl8xBAJlWggFAmVYAl8yBAJmYQkAwAICBQJlWgUCZVcEAmZiCQC5CQIJAMwIAgIEa0xwPQkAzAgCCQCmAwEFAmVXCQDMCAICCCBrTHBOZXc9CQDMCAIJAKYDAQUCZVoJAMwIAgIUIGFtb3VudEFzc2V0QmFsYW5jZT0JAMwIAgkApAMBBQJlRwkAzAgCAhMgcHJpY2VBc3NldEJhbGFuY2U9CQDMCAIJAKQDAQUCZUgJAMwIAgIZIGFtb3VudEFzc2V0QmFsYW5jZURlbHRhPQkAzAgCCQCkAwEFAmVMCQDMCAICGCBwcmljZUFzc2V0QmFsYW5jZURlbHRhPQkAzAgCCQCkAwEFAmVNCQDMCAICCCBoZWlnaHQ9CQDMCAIJAKQDAQUGaGVpZ2h0BQNuaWwCAAkAlAoCBQJmYQUCZmIBAmZjAQJmZAMJAQIhPQIJAJADAQgFAmZkCHBheW1lbnRzAAEJAAIBAh1leGFjdGx5IDEgcGF5bWVudCBpcyBleHBlY3RlZAQCZmUJAQV2YWx1ZQEJAJEDAggFAmZkCHBheW1lbnRzAAAEAmR2CQEFdmFsdWUBCAUCZmUHYXNzZXRJZAQCZmYIBQJmZQZhbW91bnQEAmVnCQECZHQECQDYBAEIBQJmZA10cmFuc2FjdGlvbklkCQDYBAEFAmR2BQJmZggFAmZkBmNhbGxlcgQCZE0IBQJlZwJfMQQCZE4IBQJlZwJfMgQCZE8IBQJlZwNfMTAEAmZnAwkBASEBCQECYmoBCAUCZmQGY2FsbGVyAwkBAmJrAAYJAAACBQJieAUBbgcDBQJmZwkAAgEJAKwCAgIsR2V0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluLiBTdGF0dXMgPSAJAKQDAQUCYngJAJcKBQUCZE0FAmROBQJmZgUCZHYFAmRPAQJmaAMCZmQCZFECZFcDCQECIT0CCQCQAwEIBQJmZAhwYXltZW50cwACCQACAQIfZXhhY3RseSAyIHBheW1lbnRzIGFyZSBleHBlY3RlZAQCZmkJAQV2YWx1ZQEJAJEDAggFAmZkCHBheW1lbnRzAAAEAmZqCQEFdmFsdWUBCQCRAwIIBQJmZAhwYXltZW50cwABBAJmawkBAmRQCQkA2AQBCAUCZmQNdHJhbnNhY3Rpb25JZAUCZFEIBQJmaQZhbW91bnQIBQJmaQdhc3NldElkCAUCZmoGYW1vdW50CAUCZmoHYXNzZXRJZAkApQgBCAUCZmQGY2FsbGVyBwUCZFcEAmZsAwkBASEBCQECYmoBCAUCZmQGY2FsbGVyAwMJAQJiawAGCQAAAgUCYngFAWwGCQAAAgUCYngFAW4HAwUCZmwJAAIBCQCsAgICLFB1dCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbi4gU3RhdHVzID0gCQCkAwEFAmJ4BQJmawECZm0BAmNoBAJmbgkA/AcEBQJiZAIEZW1pdAkAzAgCBQJjaAUDbmlsBQNuaWwDCQAAAgUCZm4FAmZuBAJmbwQCYVEFAmZuAwkAAQIFAmFRAgdBZGRyZXNzBAJmcAUCYVEJAPwHBAUCZnACBGVtaXQJAMwIAgUCY2gFA25pbAUDbmlsBQR1bml0AwkAAAIFAmZvBQJmbwUCY2gJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmZxAgJjaAJhaQQCZnIDCQAAAgUCYWkAAAAACQBrAwUCY2gFAmFpBQFiCQCUCgIJAGUCBQJjaAUCZnIFAmZyAQJmcwQCZnQCZnUCYWICYWMEAmZ2CQAAAgUCYWMFBHVuaXQEAmZ3CQECYlYBCQECYnIBBQJiegQCZngJAQJiVgEJAQJicgEFAmJBBAJmeQMJAAACBQJmdQUCYnoGAwkAAAIFAmZ1BQJiQQcJAQJiYQECDWludmFsaWQgYXNzZXQEAmZ6AwUCZnYJAJQKAgUCZncFAmZ4AwUCZnkJAJQKAgkAZQIFAmZ3BQJmdAUCZngJAJQKAgUCZncJAGUCBQJmeAUCZnQEAmZBCAUCZnoCXzEEAmZCCAUCZnoCXzIEAmZDAwUCZnkJAJQKAgUCZnQAAAkAlAoCAAAFAmZ0BAJmRAgFAmZDAl8xBAJmRQgFAmZDAl8yBAJlVAgJAQJmcQIFAmZEBQJiZgJfMQQCZVUICQECZnECBQJmRQUCYmYCXzEEAmZGCQECZnECBQJmdAUCYmYEAmZHCAUCZkYCXzEEAmZyCAUCZkYCXzIEAmZICQBkAgUCZkEFAmVUBAJmSQkAZAIFAmZCBQJlVQQCZkoJAQJiWQIJAQFEAgUCZkkFAmJDCQEBRAIFAmZIBQJiQgQCZksJAQFIAgUCZkoFAWIEAmZMAwUCZnkFAmZBBQJmQgQCZk0JALYCAQUCZkwEAmZOCQC2AgEICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCYnkJAKwCAgkArAICAgZhc3NldCAJANgEAQUCYnkCDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BAJmTwMJAL8CAgUCZk4FAWYGCQECYmEBAiJpbml0aWFsIGRlcG9zaXQgcmVxdWlyZXMgYWxsIGNvaW5zAwkAAAIFAmZPBQJmTwQCZlAJALYCAQUCZkcEAmZRCQCWAwEJAMwIAgAACQDMCAIJAKADAQkAugICCQC5AgIFAmZOCQC4AgIJAQpzcXJ0QmlnSW50BAkAtwICBQFkCQC6AgIJALkCAgUCZlAFAWQFAmZNABIAEgUERE9XTgUBZAUBZAUDbmlsBAJldgMFAmZ2BQNuaWwJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFXAAUCZksJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFYAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCZksJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFhAgkApQgBCQEFdmFsdWUBBQJhYgkA2AQBCQEFdmFsdWUBBQJhYwkBAmJHCgUCZkQFAmZFBQJmUQUCZksAAAAABQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wAAAAAAUDbmlsBAJmUgkBAmJZAgkBAUQCBQJmQgUCYkMJAQFEAgUCZkEFAmJCBAJmUwkBAUgCBQJmUgUBYgQCZlQEAmZVAwUCZnkJAJQKAgUCZkQFAmZBCQCUCgIFAmZFBQJmQgQCY2gIBQJmVQJfMQQCZlYIBQJmVQJfMgQCZlcJAKADAQkAvAIDBQJmTgkAtgIBCQBpAgUCY2gAAgkAtgIBBQJmVgkAawMJAGUCBQJmUQUCZlcFAWIFAmZXCQCXCgUFAmZRBQJldgUCZnIFAmZUBQJmeQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECZlgFAmZZAmZHAmZ1AmFiAmFjBAJmdgkAAAIFAmFjBQR1bml0BAJkawkBAmJtAAQCZGwJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJkawUBdAQCZG0JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJkawUBdQQCZloJAMwIAgMJAAACBQJmdQUCYnkGCQECYmEBAhBpbnZhbGlkIGxwIGFzc2V0BQNuaWwDCQAAAgUCZloFAmZaBAJnYQMJAAACBQJmWQUCYnoGAwkAAAIFAmZZBQJiQQcJAQJiYQECDWludmFsaWQgYXNzZXQEAmdiAwUCZ2EJALYCAQkBAmJWAQkBAmJyAQUCYnoJALYCAQkBAmJWAQkBAmJyAQUCYkEEAmdjAwUCZ2EFAmRsBQJkbQQCZ2QJAQJiVgEJAQJicgEFAmJ6BAJnZQkBAmJWAQkBAmJyAQUCYkEEAmdmAwUCZ2EFAmdkBQJnZQQCZ2cJALYCAQUCZ2YEAmZOCQC2AgEICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCYnkJAKwCAgkArAICAgZhc3NldCAJANgEAQUCYnkCDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BAJnaAkAtgIBBQJmRwQCZ2kJAJYDAQkAzAgCAAAJAMwIAgkAoAMBCQC6AgIJALkCAgUCZ2IJALgCAgUBZAkAdgYJALgCAgUBZAkAugICCQC5AgIFAmdoBQFkBQJmTgASBQFoAAAAEgUERE9XTgUBZAUDbmlsBAJnagkBAmZxAgUCZ2kFAmJoBAJnawgFAmdqAl8xBAJmcggFAmdqAl8yBAJnbAMFAmdhCQCWCgQFAmdrAAAJAGUCBQJnZAUCZ2kFAmdlCQCWCgQAAAUCZ2sFAmdkCQBlAgUCZ2UFAmdpBAJnbQgFAmdsAl8xBAJnbggFAmdsAl8yBAJnbwgFAmdsAl8zBAJncAgFAmdsAl80BAJmSgkBAmJZAgkBAUQCBQJncAUCYkMJAQFEAgUCZ28FAmJCBAJmSwkBAUgCBQJmSgUBYgQCZXYDBQJmdgUDbmlsCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhZAIJAKUIAQkBBXZhbHVlAQUCYWIJANgEAQkBBXZhbHVlAQUCYWMJAQJiUgYFAmdtBQJnbgUCZkcFAmZLBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVwAFAmZLCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBWAIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmZLBQNuaWwEAmZSCQECYlkCCQEBRAIFAmdlBQJiQwkBAUQCBQJnZAUCYkIEAmZTCQEBSAIFAmZSBQFiBAJmVAQCZ3EJAGgCCQCgAwEJALwCAwUCZ2IFAmdoBQJmTgACCQBrAwkAZQIFAmdrBQJncQUBYgUCZ3EJAJcKBQUCZ2sFAmV2BQJmcgUCZlQFAmdhCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJncgAEAmdzCQECYVMABAJhUQkAnQgCBQJncwkBAVUAAwkAAQIFAmFRAgZTdHJpbmcEAmFWBQJhUQkA2QQBBQJhVgMJAAECBQJhUQIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAQJndAECZmQEAmFRCQECZ3IAAwkAAQIFAmFRAgpCeXRlVmVjdG9yBAJndQUCYVEJAAACCAUCZmQPY2FsbGVyUHVibGljS2V5BQJndQMJAAECBQJhUQIEVW5pdAkAAAIIBQJmZAZjYWxsZXIFBHRoaXMJAAIBAgtNYXRjaCBlcnJvcgECZ3YBAmZkBAJndwkAAgECEVBlcm1pc3Npb24gZGVuaWVkBAJhUQkBAmdyAAMJAAECBQJhUQIKQnl0ZVZlY3RvcgQCZ3UFAmFRAwkAAAIIBQJmZA9jYWxsZXJQdWJsaWNLZXkFAmd1BgUCZ3cDCQABAgUCYVECBFVuaXQDCQAAAggFAmZkBmNhbGxlcgUEdGhpcwYFAmd3CQACAQILTWF0Y2ggZXJyb3IcAmZkAQlyZWJhbGFuY2UACQDOCAIJAQJjSwEJAQJhVwIFBHRoaXMJAQJhZQAJAQJjSwEJAQJhVwIFBHRoaXMJAQJhZgACZmQBIWNhbGN1bGF0ZUFtb3VudE91dEZvclN3YXBSRUFET05MWQMCZ3gCZ3kCZ3oEAmdBAwkAAAIFAmd5BwQCZ0IJAQJhVwIFBHRoaXMJAQJhZgAEAmdDCQECYVcCBQR0aGlzCQECYWUACQCUCgIFAmdCBQJnQwQCZ0IJAQJhVwIFBHRoaXMJAQJhZQAEAmdDCQECYVcCBQR0aGlzCQECYWYACQCUCgIFAmdCBQJnQwQCZ0IIBQJnQQJfMQQCZ0MIBQJnQQJfMgQCZ0QJAQJiVgEFAmdDBAJnRQkBAmJWAQUCZ0IEAmdGCQBrAwUCZ0UFAmd4CQBkAgUCZ0QFAmd4BAJnRwkAuQICCQC2AgEFAmdECQC2AgEFAmdFBAJnSAkAuQICCQC3AgIJALcCAgkAtgIBCQECYlYBBQJnQwkAtgIBBQJneAkAtgIBBQJnegkAuAICCQC2AgEJAQJiVgEFAmdCCQC2AgEFAmdGBAJnSQMJAMACAgUCZ0gFAmdHBgkAAgECFG5ldyBLIGlzIGZld2VyIGVycm9yAwkAAAIFAmdJBQJnSQkAlAoCBQNuaWwFAmdGCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmZkASZjYWxjdWxhdGVBbW91bnRPdXRGb3JTd2FwQW5kU2VuZFRva2VucwUCZ3gCZ3kCZ0oCZ0sCZ3oEAmdMCgACYmcJAPwHBAUCYmQCF2dldFN3YXBDb250cmFjdFJFQURPTkxZBQNuaWwFA25pbAMJAAECBQJiZwIGU3RyaW5nBQJiZwkAAgEJAKwCAgkAAwEFAmJnAhsgY291bGRuJ3QgYmUgY2FzdCB0byBTdHJpbmcEAmdNCgACYmcJAPwHBAUCYmQCGmlzUG9vbFN3YXBEaXNhYmxlZFJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCYmcCB0Jvb2xlYW4FAmJnCQACAQkArAICCQADAQUCYmcCHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4EAmdOAwkBASEBCQECYmoBCAUCZmQGY2FsbGVyAwMJAQJiawAGCQAAAgUCYngFAW4GBQJnTQcEAmZaCQDMCAIDAwkBASEBBQJnTgYJAQJndAEFAmZkBgkBAmJhAQIic3dhcCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbgkAzAgCAwkAZwIICQEFdmFsdWUBCQCRAwIIBQJmZAhwYXltZW50cwAABmFtb3VudAUCZ3gGCQECYmEBAgxXcm9uZyBhbW91bnQJAMwIAgMJAAACCAUCZmQGY2FsbGVyCQERQGV4dHJOYXRpdmUoMTA2MikBBQJnTAYJAQJiYQECEVBlcm1pc3Npb24gZGVuaWVkBQNuaWwDCQAAAgUCZloFAmZaBAJmZQkBBXZhbHVlAQkAkQMCCAUCZmQIcGF5bWVudHMAAAQCZ0MJAQJicgEIBQJmZQdhc3NldElkBAJnQgMJAAACBQJneQcJAQJhVwIFBHRoaXMJAQJhZgAJAQJhVwIFBHRoaXMJAQJhZQAEAmdECQBlAgkAZQIJAQJiVgEFAmdDCAkBBXZhbHVlAQkAkQMCCAUCZmQIcGF5bWVudHMAAAZhbW91bnQFAmd6BAJnRQkBAmJWAQUCZ0IEAmdGCQBrAwUCZ0UFAmd4CQBkAgUCZ0QFAmd4BAJnRwkAuQICCQC2AgEFAmdECQC2AgEFAmdFBAJnSAkAuQICCQC3AgIJALYCAQkBAmJWAQUCZ0MJALYCAQUCZ3oJALgCAgkAtgIBCQECYlYBBQJnQgkAtgIBBQJnRgQCZ0kDCQDAAgIFAmdIBQJnRwYJAAIBAhRuZXcgSyBpcyBmZXdlciBlcnJvcgMJAAACBQJnSQUCZ0kEAmdPAwkAZwIFAmdGBQJnSgYJAAIBAixFeGNoYW5nZSByZXN1bHQgaXMgZmV3ZXIgY29pbnMgdGhhbiBleHBlY3RlZAMJAAACBQJnTwUCZ08EAmVMAwUCZ3kJAQEtAQUCZ0YFAmd6BAJlTQMFAmd5BQJnegkBAS0BBQJnRgQCZ1AICQECZUsDBQJlTAUCZU0AAAJfMQMJAAACBQJnUAUCZ1AEAmdRCQECY0sBBQJnQwMJAAACBQJnUQUCZ1EEAmdSCQECY1ICBQJnQgUCZ0YDCQAAAgUCZ1IFAmdSCQCUCgIJAM4IAgkAzggCBQJnUgUCZ1EJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQUCZ0sFAmdGCQECYnABBQJnQgUDbmlsBQJnRgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJmZAEDcHV0AgJkUQJnUwMJAGYCAAAFAmRRCQACAQIgSW52YWxpZCBzbGlwcGFnZVRvbGVyYW5jZSBwYXNzZWQEAmZrCQECZmgDBQJmZAUCZFEGBAJlcwgFAmZrAl8yBAJkeAgFAmZrAl83BAJkTwgFAmZrAl85BAJldAgFAmZrA18xMAQCZXUIBQJmawNfMTEEAmdUCAUCZmsDXzEyBAJnVQgFAmZrA18xMwQCZmkJALYCAQgJAQV2YWx1ZQEJAJEDAggFAmZkCHBheW1lbnRzAAAGYW1vdW50BAJmagkAtgIBCAkBBXZhbHVlAQkAkQMCCAUCZmQIcGF5bWVudHMAAQZhbW91bnQEAmVKCQECZUMDBQJmaQUCZmoJALYCAQAAAwkAAAIFAmVKBQJlSgQCZm4JAPwHBAUCYmQCBGVtaXQJAMwIAgUCZXMFA25pbAUDbmlsAwkAAAIFAmZuBQJmbgQCZm8EAmFRBQJmbgMJAAECBQJhUQIHQWRkcmVzcwQCZnAFAmFRCQD8BwQFAmZwAgRlbWl0CQDMCAIFAmVzBQNuaWwFA25pbAUEdW5pdAMJAAACBQJmbwUCZm8EAmdWAwkAZgIFAmV0AAAJAPwHBAUCYkYCA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJnVAUCZXQFA25pbAUDbmlsAwkAAAIFAmdWBQJnVgQCZ1cDCQBmAgUCZXUAAAkA/AcEBQJiRgIDcHV0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmdVBQJldQUDbmlsBQNuaWwDCQAAAgUCZ1cFAmdXBAJnWAMFAmdTBAJnWQkA/AcEBQJiRQIFc3Rha2UFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZHgFAmVzBQNuaWwDCQAAAgUCZ1kFAmdZBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAmZkBmNhbGxlcgUCZXMFAmR4BQNuaWwEAmdaCQECZUsDAAAAAAAAAwkAAAIFAmdaBQJnWgQCZUIIBQJnWgJfMgQCZ1AIBQJnWgJfMQQCaGEJAQJlUAIFAmVKBQJlQgMJAAACBQJoYQUCaGEEAmhiCQD8BwQFBHRoaXMCCXJlYmFsYW5jZQUDbmlsBQNuaWwDCQAAAgUCaGIFAmhiCQDOCAIJAM4IAgUCZE8FAmdYBQJnUAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJmZAEKcHV0Rm9yRnJlZQECaGMDCQBmAgAABQJoYwkAAgECFEludmFsaWQgdmFsdWUgcGFzc2VkBAJmawkBAmZoAwUCZmQFAmhjBwQCZE8IBQJmawJfOQQCZmkJALYCAQgJAQV2YWx1ZQEJAJEDAggFAmZkCHBheW1lbnRzAAAGYW1vdW50BAJmagkAtgIBCAkBBXZhbHVlAQkAkQMCCAUCZmQIcGF5bWVudHMAAQZhbW91bnQEAmVKCQECZUMDBQJmaQUCZmoJALYCAQAAAwkAAAIFAmVKBQJlSgQCaGQJAQJlSwMAAAAAAAAEAmdQCAUCaGQCXzEEAmVCCAUCaGQCXzIEAmhhCQECZVACBQJlSgUCZUIDCQAAAgUCaGEFAmhhCQDOCAIFAmRPBQJnUAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJmZAEJcHV0T25lVGtuAgJoZQJoZgQCaGcKAAJiZwkA/AcEBQJiZAIoaXNQb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWRSRUFET05MWQkAzAgCCQClCAEFBHRoaXMFA25pbAUDbmlsAwkAAQIFAmJnAgdCb29sZWFuBQJiZwkAAgEJAKwCAgkAAwEFAmJnAhwgY291bGRuJ3QgYmUgY2FzdCB0byBCb29sZWFuBAJmbAMJAQEhAQkBAmJqAQgFAmZkBmNhbGxlcgMDAwkBAmJrAAYJAAACBQJieAUBbAYJAAACBQJieAUBbgYFAmhnBwQCZloJAMwIAgMDCQEBIQEFAmZsBgkBAmd0AQUCZmQGCQECYmEBAiFwdXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJmZAhwYXltZW50cwABBgkBAmJhAQIeZXhhY3RseSAxIHBheW1lbnQgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZloFAmZaBAJoaAkAkQMCCAUCZmQIcGF5bWVudHMAAAQCZnUIBQJoaAdhc3NldElkBAJmdAgFAmhoBmFtb3VudAQCZUoDCQAAAgUCZnUFAmJ6CQECZUMDCQC2AgEFAmZ0CQC2AgEAAAkAtgIBAAADCQAAAgUCZnUFAmJBCQECZUMDCQC2AgEAAAkAtgIBBQJmdAkAtgIBAAAJAQJiYQECHnBheW1lbnQgYXNzZXQgaXMgbm90IHN1cHBvcnRlZAMJAAACBQJlSgUCZUoEAmFiCAUCZmQGY2FsbGVyBAJhYwgFAmZkDXRyYW5zYWN0aW9uSWQEAmhpCQECZnMEBQJmdAUCZnUFAmFiBQJhYwMJAAACBQJoaQUCaGkEAmZ5CAUCaGkCXzUEAmhqCAUCaGkCXzQEAmZyCAUCaGkCXzMEAmV2CAUCaGkCXzIEAmhrCAUCaGkCXzEEAmhsAwMJAGYCBQJoZQAACQBmAgUCaGUFAmhrBwkBAmJhAQkAuQkCCQDMCAICH2Ftb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJoZQUDbmlsAgAFAmhrBAJmbgkBAmZtAQUCaGwDCQAAAgUCZm4FAmZuBAJnWAMFAmhmBAJobQkA/AcEBQJiRQIFc3Rha2UFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCYnkFAmhsBQNuaWwDCQAAAgUCaG0FAmhtBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAmZkBmNhbGxlcgUCaGwFAmJ5BQNuaWwEAmhuAwkAZgIFAmZyAAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYmUFAmZyBQJmdQUDbmlsBQNuaWwEAmhvAwkAAAIFBHRoaXMFAmJlCQCUCgIAAAAAAwUCZnkJAJQKAgkBAS0BBQJmcgAACQCUCgIAAAkBAS0BBQJmcgQCZUwIBQJobwJfMQQCZU0IBQJobwJfMgQCaHAJAQJlSwMFAmVMBQJlTQAABAJnUAgFAmhwAl8xBAJlQggFAmhwAl8yBAJlVwkBBXZhbHVlAQkAoggBBQJhagQCaGEJAQJlUAIFAmVKBQJlQgMJAAACBQJoYQUCaGEEAmhiCQD8BwQFBHRoaXMCCXJlYmFsYW5jZQUDbmlsBQNuaWwDCQAAAgUCaGIFAmhiCQCUCgIJAM4IAgkAzggCCQDOCAIFAmV2BQJnWAUCaG4FAmdQBQJobAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJmZAERcHV0T25lVGtuUkVBRE9OTFkCAmZ1AmZ0BAJocQkBAmZzBAUCZnQJAQJicAEFAmZ1BQR1bml0BQR1bml0BAJoawgFAmhxAl8xBAJldggFAmhxAl8yBAJmcggFAmhxAl8zBAJoaggFAmhxAl80BAJmeQgFAmhxAl81CQCUCgIFA25pbAkAlQoDBQJoawUCZnIFAmhqAmZkAQlnZXRPbmVUa24CAmhyAmhlBAJoZwoAAmJnCQD8BwQFAmJkAihpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZFJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCYmcCB0Jvb2xlYW4FAmJnCQACAQkArAICCQADAQUCYmcCHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4EAmZnAwkBASEBCQECYmoBCAUCZmQGY2FsbGVyAwMJAQJiawAGCQAAAgUCYngFAW4GBQJoZwcEAmZaCQDMCAIDAwkBASEBBQJmZwYJAQJndAEFAmZkBgkBAmJhAQIhZ2V0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluCQDMCAIDCQAAAgkAkAMBCAUCZmQIcGF5bWVudHMAAQYJAQJiYQECHmV4YWN0bHkgMSBwYXltZW50IGFyZSBleHBlY3RlZAUDbmlsAwkAAAIFAmZaBQJmWgQCZlkJAQJicAEFAmhyBAJoaAkAkQMCCAUCZmQIcGF5bWVudHMAAAQCZnUIBQJoaAdhc3NldElkBAJmRwgFAmhoBmFtb3VudAQCZUoJAQJlQwMJALYCAQAACQC2AgEAAAkAtgIBAAADCQAAAgUCZUoFAmVKBAJhYggFAmZkBmNhbGxlcgQCYWMIBQJmZA10cmFuc2FjdGlvbklkBAJocwkBAmZYBQUCZlkFAmZHBQJmdQUCYWIFAmFjAwkAAAIFAmhzBQJocwQCZ2EIBQJocwJfNQQCaGoIBQJocwJfNAQCZnIIBQJocwJfMwQCZXYIBQJocwJfMgQCaHQIBQJocwJfMQQCY2gDAwkAZgIFAmhlAAAJAGYCBQJoZQUCaHQHCQECYmEBCQC5CQIJAMwIAgIfYW1vdW50IHRvIHJlY2VpdmUgaXMgbGVzcyB0aGFuIAkAzAgCCQCkAwEFAmhlBQNuaWwCAAUCaHQEAmh1CQD8BwQFAmJkAgRidXJuCQDMCAIFAmZHBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmZ1BQJmRwUDbmlsAwkAAAIFAmh1BQJodQQCZ1IJAQJjUgIFAmhyCQBkAgUCY2gJAJYDAQkAzAgCAAAJAMwIAgUCZnIFA25pbAQCaHYJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYWIFAmNoBQJmWQUDbmlsBAJobgMJAGYCBQJmcgAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmJlBQJmcgUCZlkFA25pbAUDbmlsBAJodwQCaHgDCQAAAgUEdGhpcwUCYmUAAAUCZnIDBQJnYQkAlAoCCQEBLQEJAGQCBQJjaAUCaHgAAAkAlAoCAAAJAQEtAQkAZAIFAmNoBQJoeAQCZUwIBQJodwJfMQQCZU0IBQJodwJfMgQCaHkJAQJlSwMFAmVMBQJlTQAABAJnUAgFAmh5Al8xBAJlQggFAmh5Al8yBAJoYQkBAmVQAgUCZUoFAmVCAwkAAAIFAmhhBQJoYQkAlAoCCQDOCAIJAM4IAgkAzggCCQDOCAIFAmV2BQJnUgUCaHYFAmhuBQJnUAUCY2gJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZmQBEWdldE9uZVRrblJFQURPTkxZAgJmWQJmRwQCaHoJAQJmWAUJAQJicAEFAmZZBQJmRwUCYnkFBHVuaXQFBHVuaXQEAmh0CAUCaHoCXzEEAmV2CAUCaHoCXzIEAmZyCAUCaHoCXzMEAmhqCAUCaHoCXzQEAmdhCAUCaHoCXzUJAJQKAgUDbmlsCQCVCgMFAmh0BQJmcgUCaGoCZmQBE3Vuc3Rha2VBbmRHZXRPbmVUa24DAmhBAmhyAmhlBAJoZwoAAmJnCQD8BwQFAmJkAihpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZFJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCYmcCB0Jvb2xlYW4FAmJnCQACAQkArAICCQADAQUCYmcCHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4EAmZnAwkBASEBCQECYmoBCAUCZmQGY2FsbGVyAwMJAQJiawAGCQAAAgUCYngFAW4GBQJoZwcEAmZaCQDMCAIDAwkBASEBBQJmZwYJAQJndAEFAmZkBgkBAmJhAQIhZ2V0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluCQDMCAIDCQAAAgkAkAMBCAUCZmQIcGF5bWVudHMAAAYJAQJiYQECGG5vIHBheW1lbnRzIGFyZSBleHBlY3RlZAUDbmlsAwkAAAIFAmZaBQJmWgQCZlkJAQJicAEFAmhyBAJhYggFAmZkBmNhbGxlcgQCYWMIBQJmZA10cmFuc2FjdGlvbklkBAJlSgkBAmVDAwkAtgIBAAAJALYCAQAACQC2AgEAAAMJAAACBQJlSgUCZUoEAmhCCQD8BwQFAmJFAgd1bnN0YWtlCQDMCAIJANgEAQUCYnkJAMwIAgUCaEEFA25pbAUDbmlsAwkAAAIFAmhCBQJoQgQCaEMJAQJmWAUFAmZZBQJoQQUCYnkFAmFiBQJhYwMJAAACBQJoQwUCaEMEAmdhCAUCaEMCXzUEAmhqCAUCaEMCXzQEAmZyCAUCaEMCXzMEAmV2CAUCaEMCXzIEAmh0CAUCaEMCXzEEAmNoAwMJAGYCBQJoZQAACQBmAgUCaGUFAmh0BwkBAmJhAQkAuQkCCQDMCAICH2Ftb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJoZQUDbmlsAgAFAmh0BAJodQkA/AcEBQJiZAIEYnVybgkAzAgCBQJoQQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJieQUCaEEFA25pbAMJAAACBQJodQUCaHUEAmdSCQECY1ICBQJocgkAZAIFAmNoCQCWAwEJAMwIAgAACQDMCAIFAmZyBQNuaWwEAmh2CQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQJmZAZjYWxsZXIFAmNoBQJmWQUDbmlsBAJobgMJAGYCBQJmcgAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmJlBQJmcgUCZlkFA25pbAUDbmlsBAJoRAQCaHgDCQAAAgUEdGhpcwUCYmUAAAUCZnIDBQJnYQkAlAoCCQEBLQEJAGQCBQJjaAUCaHgAAAkAlAoCAAAJAQEtAQkAZAIFAmNoBQJoeAQCZUwIBQJoRAJfMQQCZU0IBQJoRAJfMgQCaEUJAQJlSwMFAmVMBQJlTQAABAJnUAgFAmhFAl8xBAJlQggFAmhFAl8yBAJoYQkBAmVQAgUCZUoFAmVCAwkAAAIFAmhhBQJoYQkAlAoCCQDOCAIJAM4IAgkAzggCCQDOCAIFAmV2BQJnUgUCaHYFAmhuBQJnUAUCY2gJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZmQBA2dldAAEAmVnCQECZmMBBQJmZAQCZE0IBQJlZwJfMQQCZE4IBQJlZwJfMgQCZmYIBQJlZwJfMwQCZHYIBQJlZwJfNAQCZE8IBQJlZwJfNQQCZ1IJAQJjVwIFAmRNBQJkTgQCZUoJAQJlQwMJALYCAQAACQC2AgEAAAkAtgIBAAADCQAAAgUCZUoFAmVKBAJoRgkA/AcEBQJiZAIEYnVybgkAzAgCBQJmZgUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJkdgUCZmYFA25pbAMJAAACBQJoRgUCaEYEAmhHCQECZUsDCQEBLQEFAmRNCQEBLQEFAmROAAAEAmdQCAUCaEcCXzEEAmVCCAUCaEcCXzIEAmhhCQECZVACBQJlSgUCZUIDCQAAAgUCaGEFAmhhCQDOCAIJAM4IAgUCZ1IFAmRPBQJnUAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJmZAEJZ2V0Tm9MZXNzAgJoSAJoSQQCZWcJAQJmYwEFAmZkBAJkTQgFAmVnAl8xBAJkTggFAmVnAl8yBAJmZggFAmVnAl8zBAJkdggFAmVnAl80BAJkTwgFAmVnAl81AwkAZgIFAmhIBQJkTQkAAgEJAKwCAgkArAICCQCsAgICHG5vTGVzc1RoZW5BbXRBc3NldCBmYWlsZWQ6ICAJAKQDAQUCZE0CAyA8IAkApAMBBQJoSAMJAGYCBQJoSQUCZE4JAAIBCQCsAgIJAKwCAgkArAICAh1ub0xlc3NUaGVuUHJpY2VBc3NldCBmYWlsZWQ6IAkApAMBBQJkTgIDIDwgCQCkAwEFAmhJBAJnUgkBAmNXAgUCZE0FAmROBAJlSgkBAmVDAwkAtgIBAAAJALYCAQAACQC2AgEAAAMJAAACBQJlSgUCZUoEAmhGCQD8BwQFAmJkAgRidXJuCQDMCAIFAmZmBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmR2BQJmZgUDbmlsAwkAAAIFAmhGBQJoRgQCaEoJAQJlSwMJAQEtAQUCZE0JAQEtAQUCZE4AAAQCZ1AIBQJoSgJfMQQCZUIIBQJoSgJfMgQCaGEJAQJlUAIFAmVKBQJlQgMJAAACBQJoYQUCaGEJAM4IAgkAzggCBQJnUgUCZE8FAmdQCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmZkAQ11bnN0YWtlQW5kR2V0AQJjaAQCaEsDCQECIT0CCQCQAwEIBQJmZAhwYXltZW50cwAACQACAQIYTm8gcGF5bWVudHMgYXJlIGV4cGVjdGVkBgMJAAACBQJoSwUCaEsEAmRrCQECYm0ABAJkeAkA2QQBCQCRAwIFAmRrBQFxBAJlSgkBAmVDAwkAtgIBAAAJALYCAQAACQC2AgEAAAMJAAACBQJlSgUCZUoEAmhCCQD8BwQFAmJFAgd1bnN0YWtlCQDMCAIJANgEAQUCZHgJAMwIAgUCY2gFA25pbAUDbmlsAwkAAAIFAmhCBQJoQgQCZWcJAQJkdAQJANgEAQgFAmZkDXRyYW5zYWN0aW9uSWQJANgEAQUCZHgFAmNoCAUCZmQGY2FsbGVyBAJkTQgFAmVnAl8xBAJkTggFAmVnAl8yBAJkQQkBDXBhcnNlSW50VmFsdWUBCAUCZWcCXzkEAmRPCAUCZWcDXzEwBAJnUgkBAmNXAgUCZE0FAmROBAJmZwMJAQEhAQkBAmJqAQgFAmZkBmNhbGxlcgMJAQJiawAGCQAAAgUCYngFAW4HBAJoTAMFAmZnCQACAQkArAICAixHZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4uIFN0YXR1cyA9IAkApAMBBQJkQQYDCQAAAgUCaEwFAmhMBAJoRgkA/AcEBQJiZAIEYnVybgkAzAgCBQJjaAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJkeAUCY2gFA25pbAMJAAACBQJoRgUCaEYEAmhNCQECZUsDCQEBLQEFAmRNCQEBLQEFAmROAAAEAmdQCAUCaE0CXzEEAmVCCAUCaE0CXzIEAmhhCQECZVACBQJlSgUCZUIDCQAAAgUCaGEFAmhhCQDOCAIJAM4IAgUCZ1IFAmRPBQJnUAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJmZAETdW5zdGFrZUFuZEdldE5vTGVzcwMCaEECaE4CaEkEAmZnAwkBASEBCQECYmoBCAUCZmQGY2FsbGVyAwkBAmJrAAYJAAACBQJieAUBbgcEAmZaCQDMCAIDCQEBIQEFAmZnBgkAAgECIWdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbgkAzAgCAwkAAAIJAJADAQgFAmZkCHBheW1lbnRzAAAGCQACAQIYbm8gcGF5bWVudHMgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZloFAmZaBAJlSgkBAmVDAwkAtgIBAAAJALYCAQAACQC2AgEAAAMJAAACBQJlSgUCZUoEAmhCCQD8BwQFAmJFAgd1bnN0YWtlCQDMCAIJANgEAQUCYnkJAMwIAgUCaEEFA25pbAUDbmlsAwkAAAIFAmhCBQJoQgQCZWcJAQJkdAQJANgEAQgFAmZkDXRyYW5zYWN0aW9uSWQJANgEAQUCYnkFAmhBCAUCZmQGY2FsbGVyBAJkTQgFAmVnAl8xBAJkTggFAmVnAl8yBAJkTwgFAmVnA18xMAQCZ1IJAQJjVwIFAmRNBQJkTgQCaE8JAMwIAgMJAGcCBQJkTQUCaE4GCQACAQkAuQkCCQDMCAICLGFtb3VudCBhc3NldCBhbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCaE4FA25pbAIACQDMCAIDCQBnAgUCZE4FAmhJBgkAAgEJALkJAgkAzAgCAitwcmljZSBhc3NldCBhbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCaEkFA25pbAIABQNuaWwDCQAAAgUCaE8FAmhPBAJoRgkA/AcEBQJiZAIEYnVybgkAzAgCBQJoQQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJieQUCaEEFA25pbAMJAAACBQJoRgUCaEYEAmhQCQECZUsDCQEBLQEFAmRNCQEBLQEFAmROAAAEAmdQCAUCaFACXzEEAmVCCAUCaFACXzIEAmhhCQECZVACBQJlSgUCZUIDCQAAAgUCaGEFAmhhCQDOCAIJAM4IAgUCZ1IFAmRPBQJnUAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJmZAEIYWN0aXZhdGUCAmhRAmhSAwkBAiE9AgkApQgBCAUCZmQGY2FsbGVyCQClCAEFAmJkCQACAQIScGVybWlzc2lvbnMgZGVuaWVkCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFlAAUCaFEJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFmAAUCaFIFA25pbAIHc3VjY2VzcwJmZAEKcmVmcmVzaEtMcAAEAmhTCQELdmFsdWVPckVsc2UCCQCfCAEFAmFrAAAEAmhUAwkAZwIJAGUCBQZoZWlnaHQFAmhTBQJhbgUEdW5pdAkBAmJhAQkAuQkCCQDMCAIJAKQDAQUCYW4JAMwIAgIvIGJsb2NrcyBoYXZlIG5vdCBwYXNzZWQgc2luY2UgdGhlIHByZXZpb3VzIGNhbGwFA25pbAIAAwkAAAIFAmhUBQJoVAQCZVcJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAqAMBCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMFAmFqAgEwCQECYmMBAgtpbnZhbGlkIGtMcAQCaFUJAQJlSwMAAAAAAAAEAmhWCAUCaFUCXzEEAmVCCAUCaFUCXzIEAmVOAwkBAiE9AgUCZVcFAmVCBQJoVgkBAmJhAQISbm90aGluZyB0byByZWZyZXNoCQCUCgIFAmVOCQCmAwEFAmVCCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmZkARxnZXRQb29sQ29uZmlnV3JhcHBlclJFQURPTkxZAAkAlAoCBQNuaWwJAQJibQACZmQBHGdldEFjY0JhbGFuY2VXcmFwcGVyUkVBRE9OTFkBAmFwCQCUCgIFA25pbAkBAmJWAQUCYXACZmQBGWNhbGNQcmljZXNXcmFwcGVyUkVBRE9OTFkDAmRlAmRmAmRqBAJkcwkBAmRpAwUCZGUFAmRmBQJkagkAlAoCBQNuaWwJAMwIAgkApgMBCQCRAwIFAmRzAAAJAMwIAgkApgMBCQCRAwIFAmRzAAEJAMwIAgkApgMBCQCRAwIFAmRzAAIFA25pbAJmZAEUdG9YMThXcmFwcGVyUkVBRE9OTFkCAUUBRgkAlAoCBQNuaWwJAKYDAQkBAUQCBQFFBQFGAmZkARZmcm9tWDE4V3JhcHBlclJFQURPTkxZAgFJAUoJAJQKAgUDbmlsCQEBSAIJAKcDAQUBSQUBSgJmZAEeY2FsY1ByaWNlQmlnSW50V3JhcHBlclJFQURPTkxZAgJiWgJjYQkAlAoCBQNuaWwJAKYDAQkBAmJZAgkApwMBBQJiWgkApwMBBQJjYQJmZAEjZXN0aW1hdGVQdXRPcGVyYXRpb25XcmFwcGVyUkVBRE9OTFkJAmR1AmRRAmRSAmRTAmRUAmRVAmFiAmRWAmRXCQCUCgIFA25pbAkBAmRQCQUCZHUFAmRRBQJkUgUCZFMFAmRUBQJkVQUCYWIFAmRWBQJkVwJmZAEjZXN0aW1hdGVHZXRPcGVyYXRpb25XcmFwcGVyUkVBRE9OTFkEAmR1AmR2AmR3AmFiBAJlZwkBAmR0BAUCZHUFAmR2BQJkdwkBEUBleHRyTmF0aXZlKDEwNjIpAQUCYWIJAJQKAgUDbmlsCQCcCgoIBQJlZwJfMQgFAmVnAl8yCAUCZWcCXzMIBQJlZwJfNAgFAmVnAl81CAUCZWcCXzYIBQJlZwJfNwkApgMBCAUCZWcCXzgIBQJlZwJfOQgFAmVnA18xMAJmZAENc3RhdHNSRUFET05MWQAEAmRrCQECYm0ABAJkeAkA2QQBCQCRAwIFAmRrBQFxBAJoVwkAkQMCBQJkawUBcgQCaFgJAJEDAgUCZGsFAXMEAmRaCQCRAwIFAmRrBQF2BAJlYQkAkQMCBQJkawUBdwQCZGwJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJkawUBdAQCZG0JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJkawUBdQQCaFkICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCZHgJAKwCAgkArAICAgZBc3NldCAJANgEAQUCZHgCDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BAJoWgkBAmJWAQUCaFcEAmlhCQECYlYBBQJoWAQCaWIDCQAAAgUCaFkAAAkAzAgCBQFlCQDMCAIFAWUJAMwIAgUBZQUDbmlsCQECZGkDBQJoWgUCaWEFAmhZBAJkSAAABAJpYwkBAUgCCQCRAwIFAmliAAEFAWIEAmlkCQEBSAIJAJEDAgUCaWIAAgUBYgQCaWUJAQV2YWx1ZQEJAJoIAgUCYmQJAQJhRAEJAKUIAQUEdGhpcwkAlAoCBQNuaWwJALkJAgkAzAgCAg4lZCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFAmhaCQDMCAIJAKQDAQUCaWEJAMwIAgkApAMBBQJoWQkAzAgCCQCkAwEFAmRICQDMCAIJAKQDAQUCaWMJAMwIAgkApAMBBQJpZAkAzAgCCQCkAwEFAmllBQNuaWwFAWoCZmQBIGV2YWx1YXRlUHV0QnlBbW91bnRBc3NldFJFQURPTkxZAQJkUgQCZGsJAQJibQAEAmR4CQDZBAEJAJEDAgUCZGsFAXEEAmRYCQCRAwIFAmRrBQFyBAJkeQkA2QQBBQJkWAQCZFkJAJEDAgUCZGsFAXMEAmR6CQDZBAEFAmRZBAJkbAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmRrBQF0BAJkbQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmRrBQF1BAJkQQkAkQMCBQJkawUBcAQCaFkICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCZHgJAKwCAgkArAICAgZBc3NldCAJANgEAQUCZHgCDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BAJoWgkBAmJWAQUCZFgEAmlhCQECYlYBBQJkWQQCZGcJAQFEAgUCaFoFAmRsBAJkaAkBAUQCBQJpYQUCZG0EAmRHAwkAAAIFAmhZAAAFAWUJAQJiWQIFAmRoBQJkZwQCZWQJAQFEAgUCZFIFAmRsBAJlZQkAvAIDBQJlZAUCZEcFAWQEAmRUCQEBSAIFAmVlBQJkbQQCZmsJAQJkUAkCAACgwh4FAmRSBQJkeQUCZFQFAmR6AgAGBwQCZW8IBQJmawJfMQQCaWYIBQJmawJfMwQCZEMIBQJmawJfNAQCZEUIBQJmawJfNQQCZEIIBQJmawJfNgkAlAoCBQNuaWwJALkJAgkAzAgCAhAlZCVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCZW8JAMwIAgkApAMBCQEBSAIFAmRHBQFiCQDMCAIJAKQDAQUCZEMJAMwIAgkApAMBBQJkRQkAzAgCCQCkAwEFAmRCCQDMCAIFAmRBCQDMCAIJAKQDAQUCZFIJAMwIAgkApAMBBQJkVAUDbmlsBQFqAmZkAR9ldmFsdWF0ZVB1dEJ5UHJpY2VBc3NldFJFQURPTkxZAQJkVAQCZGsJAQJibQAEAmR4CQDZBAEJAJEDAgUCZGsFAXEEAmRYCQCRAwIFAmRrBQFyBAJkeQkA2QQBBQJkWAQCZFkJAJEDAgUCZGsFAXMEAmR6CQDZBAEFAmRZBAJkbAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmRrBQF0BAJkbQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmRrBQF1BAJkQQkAkQMCBQJkawUBcAQCaFkICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCZHgJAKwCAgkArAICAgZBc3NldCAJANgEAQUCZHgCDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BAJpZwkBAmJWAQUCZFgEAmloCQECYlYBBQJkWQQCaWkJAQFEAgUCaWcFAmRsBAJpagkBAUQCBQJpaAUCZG0EAmRHAwkAAAIFAmhZAAAFAWUJAQJiWQIFAmlqBQJpaQQCZWUJAQFEAgUCZFQFAmRtBAJlZAkAvAIDBQJlZQUBZAUCZEcEAmRSCQEBSAIFAmVkBQJkbAQCZmsJAQJkUAkCAACgwh4FAmRSBQJkeQUCZFQFAmR6AgAGBwQCZW8IBQJmawJfMQQCaWYIBQJmawJfMwQCZEMIBQJmawJfNAQCZEUIBQJmawJfNQQCZEIIBQJmawJfNgkAlAoCBQNuaWwJALkJAgkAzAgCAhAlZCVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCZW8JAMwIAgkApAMBCQEBSAIFAmRHBQFiCQDMCAIJAKQDAQUCZEMJAMwIAgkApAMBBQJkRQkAzAgCCQCkAwEFAmRCCQDMCAIFAmRBCQDMCAIJAKQDAQUCZFIJAMwIAgkApAMBBQJkVAUDbmlsBQFqAmZkARNldmFsdWF0ZUdldFJFQURPTkxZAgJpawJpbAQCZWcJAQJkdAQCAAUCaWsFAmlsBQR0aGlzBAJkTQgFAmVnAl8xBAJkTggFAmVnAl8yBAJkQwgFAmVnAl81BAJkRQgFAmVnAl82BAJkQggFAmVnAl83BAJkSAgFAmVnAl84BAJkQQkBDXBhcnNlSW50VmFsdWUBCAUCZWcCXzkJAJQKAgUDbmlsCQC5CQIJAMwIAgIOJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJkTQkAzAgCCQCkAwEFAmROCQDMCAIJAKQDAQUCZEMJAMwIAgkApAMBBQJkRQkAzAgCCQCkAwEFAmRCCQDMCAIJAKYDAQUCZEgJAMwIAgkApAMBBQJkQQUDbmlsBQFqAQJpbQECaW4ABAJpbwQCYVEJAQJncgADCQABAgUCYVECCkJ5dGVWZWN0b3IEAmd1BQJhUQUCZ3UDCQABAgUCYVECBFVuaXQIBQJpbQ9zZW5kZXJQdWJsaWNLZXkJAAIBAgtNYXRjaCBlcnJvcgQCYVEFAmltAwkAAQIFAmFRAgVPcmRlcgQCZVMFAmFRBAJpcAkBAmJsAAQCaXEDCQECZU8ACQCUCgIGAgAJAQJlUgEFAmVTBAJhSwgFAmlxAl8xBAJhTAgFAmlxAl8yBAJhTQkA9AMDCAUCZVMJYm9keUJ5dGVzCQCRAwIIBQJlUwZwcm9vZnMAAAgFAmVTD3NlbmRlclB1YmxpY0tleQQCYU4JAPQDAwgFAmVTCWJvZHlCeXRlcwkAkQMCCAUCZVMGcHJvb2ZzAAEFAmlwAwMDBQJhSwUCYU0HBQJhTgcGCQECYUoEBQJhSwUCYUwFAmFNBQJhTgMJAAECBQJhUQIUU2V0U2NyaXB0VHJhbnNhY3Rpb24EAmFWBQJhUQMJAPQDAwgFAmltCWJvZHlCeXRlcwkAkQMCCAUCaW0GcHJvb2ZzAAAFAmlvBgQCaXIJAPYDAQkBBXZhbHVlAQgFAmFWBnNjcmlwdAQCaXMJANsEAQkBBXZhbHVlAQkAnQgCBQJiZAkBAmFGAAQCaXQJAPEHAQUEdGhpcwMJAAACBQJpcwUCaXIJAQIhPQIFAml0BQJpcgcJAPQDAwgFAmltCWJvZHlCeXRlcwkAkQMCCAUCaW0GcHJvb2ZzAAAFAmlv1lDrtA==", "height": 3866902, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: H23D4h5eK5nG9e6dUrXBXuJGXuF6yMtx2ZDe4fdVf5be Next: 9m4dsTCiVWPa3eBiYbgjsEL9ykm8cRqkit1NmMMiVVmc Diff:
OldNewDifferences
235235 else throw(($getType(bg) + " couldn't be cast to Int"))
236236 }
237237
238-func bi () = valueOrElse(getBoolean(bd, aC()), false)
238+func bi (aX) = makeString(["%s%s", "whitelisted", toString(aX)], j)
239239
240240
241-func bj () = fromBase58String(aW(bd, au()))
241+func bj (aX) = valueOrElse(getBoolean(bd, bi(aX)), false)
242242
243243
244-func bk () = {
245- let bl = aW(this, ae())
246- let bm = aW(this, af())
247- let az = aZ(bd, aA(bm))
248- let ay = aZ(bd, aA(bl))
244+func bk () = valueOrElse(getBoolean(bd, aC()), false)
245+
246+
247+func bl () = fromBase58String(aW(bd, au()))
248+
249+
250+func bm () = {
251+ let bn = aW(this, ae())
252+ let bo = aW(this, af())
253+ let az = aZ(bd, aA(bo))
254+ let ay = aZ(bd, aA(bn))
249255 split(aW(bd, ax(toString(ay), toString(az))), j)
250256 }
251257
252258
253-func bn (bo) = if ((bo == i))
259+func bp (bq) = if ((bq == i))
254260 then unit
255- else fromBase58String(bo)
261+ else fromBase58String(bq)
256262
257263
258-func bp (bo) = if ((bo == unit))
264+func br (bq) = if ((bq == unit))
259265 then i
260- else toBase58String(value(bo))
266+ else toBase58String(value(bq))
261267
262268
263-func bq (br) = $Tuple7(addressFromStringValue(br[o]), parseIntValue(br[p]), fromBase58String(br[q]), bn(br[r]), bn(br[s]), parseIntValue(br[t]), parseIntValue(br[u]))
269+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]))
264270
265271
266-let bs = bq(bk())
272+let bu = bs(bm())
267273
268-let bt = bs
274+let bv = bu
269275
270-let bu = bt._1
276+let bw = bv._1
271277
272-let bv = bt._2
278+let bx = bv._2
273279
274-let bw = bt._3
280+let by = bv._3
275281
276-let bx = bt._4
282+let bz = bv._4
277283
278-let by = bt._5
284+let bA = bv._5
279285
280-let bz = bt._6
286+let bB = bv._6
281287
282-let bA = bt._7
288+let bC = bv._7
283289
284-func bB () = split(aW(bd, at()), j)
290+func bD () = split(aW(bd, at()), j)
285291
286292
287-let bC = valueOrErrorMessage(addressFromString(bB()[B]), "incorrect staking address")
293+let bE = valueOrErrorMessage(addressFromString(bD()[B]), "incorrect staking address")
288294
289-let bD = valueOrErrorMessage(addressFromString(bB()[C]), "incorrect staking address")
295+let bF = valueOrErrorMessage(addressFromString(bD()[C]), "incorrect staking address")
290296
291-func bE (bF,bG,bH,bI,bJ,bK,bL,bM,bN,bO) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bF), toString(bG), toString(bH), toString(bI), toString(bJ), toString(bK), toString(bL), toString(bM), toString(bN), toString(bO)], j)
297+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)
292298
293299
294-func bP (bQ,bR,bS,bI,bL,bM) = makeString(["%d%d%d%d%d%d", toString(bQ), toString(bR), toString(bS), toString(bI), toString(bL), toString(bM)], j)
300+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)
295301
296302
297-func bT (ap) = {
298- let bU = if ((ap == "WAVES"))
303+func bV (ap) = {
304+ let bW = if ((ap == "WAVES"))
299305 then wavesBalance(this).available
300306 else assetBalance(this, fromBase58String(ap))
301- let bV = ((bU + ar(ap)) - as(ap))
302- max([0, bV])
307+ let bX = ((bW + ar(ap)) - as(ap))
308+ max([0, bX])
303309 }
304310
305311
306-func bW (bX,bY) = fraction(bX, d, bY)
312+func bY (bZ,ca) = fraction(bZ, d, ca)
307313
308314
309-func bZ (bX,bY,L) = fraction(bX, d, bY, L)
315+func cb (bZ,ca,L) = fraction(bZ, d, ca, L)
310316
311317
312-func ca (cb) = {
313- let cc = invoke(cb, "getRate", nil, nil)
314- if ((cc == cc))
318+func cc (cd) = {
319+ let ce = invoke(cd, "getRate", nil, nil)
320+ if ((ce == ce))
315321 then {
316- let aQ = cc
322+ let aQ = ce
317323 if ($isInstanceOf(aQ, "Int"))
318324 then {
319- let cd = aQ
320- cd
325+ let cf = aQ
326+ cf
321327 }
322328 else ba("proxy.getRate() unexpected value")
323329 }
325331 }
326332
327333
328-func ce (ap,cf,cg,cb) = {
329- let ch = ar(ap)
330- if ((ch == ch))
334+func cg (ap,ch,ci,cd) = {
335+ let cj = ar(ap)
336+ if ((cj == cj))
331337 then {
332- let ci = as(cg)
333- if ((ci == ci))
338+ let ck = as(ci)
339+ if ((ck == ck))
334340 then {
335- let cj = bn(ap)
336- if ((cf > 0))
341+ let cl = bp(ap)
342+ if ((ch > 0))
337343 then {
338- let ck = invoke(cb, "deposit", nil, [AttachedPayment(cj, cf)])
339- if ((ck == ck))
344+ let cm = invoke(cd, "deposit", nil, [AttachedPayment(cl, ch)])
345+ if ((cm == cm))
340346 then {
341- let aQ = ck
347+ let aQ = cm
342348 if ($isInstanceOf(aQ, "Int"))
343349 then {
344- let cl = aQ
345- let cm = (ch + cf)
346- let cn = (ci + cl)
347-[IntegerEntry(ao(ap), cm), IntegerEntry(aq(cg), cn)]
350+ let cn = aQ
351+ let co = (cj + ch)
352+ let cp = (ck + cn)
353+[IntegerEntry(ao(ap), co), IntegerEntry(aq(ci), cp)]
348354 }
349355 else nil
350356 }
358364 }
359365
360366
361-func co (ap,cf,cg,cb,cp,cq) = {
362- let ch = ar(ap)
363- if ((ch == ch))
367+func cq (ap,ch,ci,cd,cr,cs) = {
368+ let cj = ar(ap)
369+ if ((cj == cj))
364370 then {
365- let ci = as(cg)
366- if ((ci == ci))
371+ let ck = as(ci)
372+ if ((ck == ck))
367373 then {
368- let cr = ca(cb)
369- if ((cr == cr))
374+ let ct = cc(cd)
375+ if ((ct == ct))
370376 then {
371- let cs = fraction(cp, ch, ci)
372- let ct = bn(cg)
373- let cu = fraction(cp, cf, cs)
374- let cv = fraction(cp, cf, cr)
375- let cw = max([0, (cu - cv)])
376- if ((cv > 0))
377+ let cu = fraction(cr, cj, ck)
378+ let cv = bp(ci)
379+ let cw = fraction(cr, ch, cu)
380+ let cx = fraction(cr, ch, ct)
381+ let cy = max([0, (cw - cx)])
382+ if ((cx > 0))
377383 then {
378- let cx = invoke(cb, "withdraw", nil, [AttachedPayment(ct, cv)])
379- if ((cx == cx))
384+ let cz = invoke(cd, "withdraw", nil, [AttachedPayment(cv, cx)])
385+ if ((cz == cz))
380386 then {
381- let aQ = cx
387+ let aQ = cz
382388 if ($isInstanceOf(aQ, "Int"))
383389 then {
384- let cy = aQ
385- let cm = (ch - cy)
386- let cn = ((ci - cv) - cw)
387-[IntegerEntry(ao(ap), cm), IntegerEntry(aq(cg), cn), ScriptTransfer(cq, cw, bn(cg))]
390+ let cA = aQ
391+ let co = (cj - cA)
392+ let cp = ((ck - cx) - cy)
393+[IntegerEntry(ao(ap), co), IntegerEntry(aq(ci), cp), ScriptTransfer(cs, cy, bp(ci))]
388394 }
389395 else nil
390396 }
400406 }
401407
402408
403-func cz (ap) = {
409+func cB (ap) = {
404410 let aQ = invoke(bd, "getPoolLeaseConfigREADONLY", [toString(this), ap], nil)
405411 if ($isInstanceOf(aQ, "(Boolean, Int, Int, String, String, Int, String)"))
406412 then {
411417 }
412418
413419
414-func cA (cB,ap,cg,cC,cb,cp,cq) = {
415- let ch = ar(ap)
416- if ((ch == ch))
420+func cC (cD,ap,ci,cE,cd,cr,cs) = {
421+ let cj = ar(ap)
422+ if ((cj == cj))
417423 then {
418- let ci = as(cg)
419- if ((ci == ci))
424+ let ck = as(ci)
425+ if ((ck == ck))
420426 then {
421- let cD = max([0, (bT(ap) - cC)])
422- let cE = fraction(cB, cD, 100)
423- let cF = (ch - cE)
424- if ((cF == 0))
427+ let cF = max([0, (bV(ap) - cE)])
428+ let cG = fraction(cD, cF, 100)
429+ let cH = (cj - cG)
430+ if ((cH == 0))
425431 then nil
426- else if ((0 > cF))
432+ else if ((0 > cH))
427433 then {
428- let cG = -(cF)
429- ce(ap, cG, cg, cb)
434+ let cI = -(cH)
435+ cg(ap, cI, ci, cd)
430436 }
431437 else {
432- let cH = cF
433- co(ap, cH, cg, cb, cp, cq)
438+ let cJ = cH
439+ cq(ap, cJ, ci, cd, cr, cs)
434440 }
435441 }
436442 else throw("Strict value is not equal to itself.")
439445 }
440446
441447
442-func cI (ap) = {
443- let cJ = cz(ap)
444- let cK = cJ._1
445- let cL = cJ._2
446- let cC = cJ._3
447- let cM = cJ._4
448- let cN = cJ._5
449- let cp = cJ._6
450- let cO = cJ._7
451- if (cK)
452- then cA(cL, ap, cN, cC, addressFromStringValue(cM), cp, addressFromStringValue(cO))
448+func cK (ap) = {
449+ let cL = cB(ap)
450+ let cM = cL._1
451+ let cN = cL._2
452+ let cE = cL._3
453+ let cO = cL._4
454+ let cP = cL._5
455+ let cr = cL._6
456+ let cQ = cL._7
457+ if (cM)
458+ then cC(cN, ap, cP, cE, addressFromStringValue(cO), cr, addressFromStringValue(cQ))
453459 else nil
454460 }
455461
456462
457-func cP (ap,cQ) = {
458- let cR = cz(ap)
459- let cK = cR._1
460- let cL = cR._2
461- let cC = cR._3
462- let cM = cR._4
463- let cN = cR._5
464- let cp = cR._6
465- let cO = cR._7
466- if (cK)
463+func cR (ap,cS) = {
464+ let cT = cB(ap)
465+ let cM = cT._1
466+ let cN = cT._2
467+ let cE = cT._3
468+ let cO = cT._4
469+ let cP = cT._5
470+ let cr = cT._6
471+ let cQ = cT._7
472+ if (cM)
467473 then {
468- let cS = max([0, ((bT(ap) - cQ) - cC)])
469- if ((cS == cS))
474+ let cU = max([0, ((bV(ap) - cS) - cE)])
475+ if ((cU == cU))
470476 then {
471- let cm = fraction(cL, cS, 100)
472- if ((cm == cm))
477+ let co = fraction(cN, cU, 100)
478+ if ((co == co))
473479 then {
474- let cT = (ar(ap) - cm)
475- if ((cT == cT))
476- then if ((0 > cT))
477- then ce(ap, -(cT), cN, addressFromStringValue(cM))
478- else co(ap, cT, cN, addressFromStringValue(cM), cp, addressFromStringValue(cO))
480+ let cV = (ar(ap) - co)
481+ if ((cV == cV))
482+ then if ((0 > cV))
483+ then cg(ap, -(cV), cP, addressFromStringValue(cO))
484+ else cq(ap, cV, cP, addressFromStringValue(cO), cr, addressFromStringValue(cQ))
479485 else throw("Strict value is not equal to itself.")
480486 }
481487 else throw("Strict value is not equal to itself.")
486492 }
487493
488494
489-func cU (cV,cW) = {
490- let cX = cP(aW(this, ae()), cV)
491- let cY = cP(aW(this, af()), cW)
492- (cX ++ cY)
495+func cW (cX,cY) = {
496+ let cZ = cR(aW(this, ae()), cX)
497+ let da = cR(aW(this, af()), cY)
498+ (cZ ++ da)
493499 }
494500
495501
496-func cZ (da,db,dc,dd) = {
497- let de = D(dc, da)
498- let df = D(dd, db)
499- bW(df, de)
502+func db (dc,dd,de,df) = {
503+ let dg = D(de, dc)
504+ let dh = D(df, dd)
505+ bY(dh, dg)
500506 }
501507
502508
503-func dg (dc,dd,dh) = {
504- let di = bk()
505- let dj = parseIntValue(di[t])
506- let dk = parseIntValue(di[u])
507- let dl = cZ(dj, dk, dc, dd)
508- let bY = D(dc, dj)
509- let bX = D(dd, dk)
510- let dm = D(dh, b)
511- let dn = bW(bY, dm)
512- let do = bW(bX, dm)
513-[dl, dn, do]
509+func di (de,df,dj) = {
510+ let dk = bm()
511+ let dl = parseIntValue(dk[t])
512+ let dm = parseIntValue(dk[u])
513+ let dn = db(dl, dm, de, df)
514+ let ca = D(de, dl)
515+ let bZ = D(df, dm)
516+ let do = D(dj, b)
517+ let dp = bY(ca, do)
518+ let dq = bY(bZ, do)
519+[dn, dp, dq]
514520 }
515521
516522
517-func dp (dc,dd,dh) = {
518- let dq = dg(dc, dd, dh)
519-[H(dq[0], b), H(dq[1], b), H(dq[2], b)]
523+func dr (de,df,dj) = {
524+ let ds = di(de, df, dj)
525+[H(ds[0], b), H(ds[1], b), H(ds[2], b)]
520526 }
521527
522528
523-func dr (ds,dt,du,ab) = {
524- let di = bk()
525- let dv = di[q]
526- let dw = di[r]
527- let dx = di[s]
528- let da = parseIntValue(di[t])
529- let db = parseIntValue(di[u])
530- let dy = di[p]
531- let dz = valueOrErrorMessage(assetInfo(fromBase58String(dv)), (("Asset " + dv) + " doesn't exist")).quantity
532- if ((dv != dt))
529+func dt (du,dv,dw,ab) = {
530+ let dk = bm()
531+ let dx = dk[q]
532+ let dy = dk[r]
533+ let dz = dk[s]
534+ let dc = parseIntValue(dk[t])
535+ let dd = parseIntValue(dk[u])
536+ let dA = dk[p]
537+ let dB = valueOrErrorMessage(assetInfo(fromBase58String(dx)), (("Asset " + dx) + " doesn't exist")).quantity
538+ if ((dx != dv))
533539 then throw("Invalid asset passed.")
534540 else {
535- let dA = bT(dw)
536- let dB = D(dA, da)
537- let dC = bT(dx)
538- let dD = D(dC, db)
539- let dE = bW(dD, dB)
540- let dF = H(dE, b)
541- let dG = D(du, b)
542- let dH = D(dz, b)
543- let dI = fraction(dB, dG, dH)
544- let dJ = fraction(dD, dG, dH)
545- let dK = K(dI, da, FLOOR)
546- let dL = K(dJ, db, FLOOR)
547- let dM = if ((ds == ""))
541+ let dC = bV(dy)
542+ let dD = D(dC, dc)
543+ let dE = bV(dz)
544+ let dF = D(dE, dd)
545+ let dG = bY(dF, dD)
546+ let dH = H(dG, b)
547+ let dI = D(dw, b)
548+ let dJ = D(dB, b)
549+ let dK = fraction(dD, dI, dJ)
550+ let dL = fraction(dF, dI, dJ)
551+ let dM = K(dK, dc, FLOOR)
552+ let dN = K(dL, dd, FLOOR)
553+ let dO = if ((du == ""))
548554 then nil
549- else [ScriptTransfer(ab, dK, if ((dw == "WAVES"))
555+ else [ScriptTransfer(ab, dM, if ((dy == "WAVES"))
550556 then unit
551- else fromBase58String(dw)), ScriptTransfer(ab, dL, if ((dx == "WAVES"))
557+ else fromBase58String(dy)), ScriptTransfer(ab, dN, if ((dz == "WAVES"))
552558 then unit
553- else fromBase58String(dx)), StringEntry(ad(toString(ab), ds), bP(dK, dL, du, dF, height, lastBlock.timestamp)), IntegerEntry(W(), dF), IntegerEntry(X(height, lastBlock.timestamp), dF)]
554- $Tuple10(dK, dL, dw, dx, dA, dC, dz, dE, dy, dM)
559+ 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)]
560+ $Tuple10(dM, dN, dy, dz, dC, dE, dB, dG, dA, dO)
555561 }
556562 }
557563
558564
559-func dN (ds,dO,dP,dQ,dR,dS,ab,dT,dU) = {
560- let di = bk()
561- let dv = fromBase58String(di[q])
562- let dV = di[r]
563- let dW = di[s]
564- let dX = di[v]
565- let dY = di[w]
566- let dj = parseIntValue(di[t])
567- let dk = parseIntValue(di[u])
568- let dy = di[p]
569- let dz = valueOrErrorMessage(assetInfo(dv), (("Asset " + toBase58String(dv)) + " doesn't exist")).quantity
570- let dZ = toBase58String(valueOrElse(dQ, fromBase58String("WAVES")))
571- let ea = toBase58String(valueOrElse(dS, fromBase58String("WAVES")))
572- if (if ((dV != dZ))
565+func dP (du,dQ,dR,dS,dT,dU,ab,dV,dW) = {
566+ let dk = bm()
567+ let dx = fromBase58String(dk[q])
568+ let dX = dk[r]
569+ let dY = dk[s]
570+ let dZ = dk[v]
571+ let ea = dk[w]
572+ let dl = parseIntValue(dk[t])
573+ let dm = parseIntValue(dk[u])
574+ let dA = dk[p]
575+ let dB = valueOrErrorMessage(assetInfo(dx), (("Asset " + toBase58String(dx)) + " doesn't exist")).quantity
576+ let eb = toBase58String(valueOrElse(dS, fromBase58String("WAVES")))
577+ let ec = toBase58String(valueOrElse(dU, fromBase58String("WAVES")))
578+ if (if ((dX != eb))
573579 then true
574- else (dW != ea))
580+ else (dY != ec))
575581 then throw("Invalid amt or price asset passed.")
576582 else {
577- let dA = if (dT)
578- then bT(dV)
579- else (bT(dV) - dP)
580- let dC = if (dT)
581- then bT(dW)
582- else (bT(dW) - dR)
583- let eb = D(dP, dj)
584- let ec = D(dR, dk)
585- let ed = bW(ec, eb)
586- let dB = D(dA, dj)
587- let dD = D(dC, dk)
588- let ee = if ((dz == 0))
583+ let dC = if (dV)
584+ then bV(dX)
585+ else (bV(dX) - dR)
586+ let dE = if (dV)
587+ then bV(dY)
588+ else (bV(dY) - dT)
589+ let ed = D(dR, dl)
590+ let ee = D(dT, dm)
591+ let ef = bY(ee, ed)
592+ let dD = D(dC, dl)
593+ let dF = D(dE, dm)
594+ let eg = if ((dB == 0))
589595 then {
590- let dE = e
591- let ef = e
592- let dm = pow((eb * ec), 0, toBigInt(5), 1, 0, DOWN)
593- $Tuple5(H(dm, b), H(eb, dj), H(ec, dk), bW((dD + ec), (dB + eb)), ef)
596+ let dG = e
597+ let eh = e
598+ let do = pow((ed * ee), 0, toBigInt(5), 1, 0, DOWN)
599+ $Tuple5(H(do, b), H(ed, dl), H(ee, dm), bY((dF + ee), (dD + ed)), eh)
594600 }
595601 else {
596- let dE = bW(dD, dB)
597- let ef = fraction(R((dE - ed)), d, dE)
598- let eg = D(dO, b)
599- if (if ((dE != e))
600- then (ef > eg)
602+ let dG = bY(dF, dD)
603+ let eh = fraction(R((dG - ef)), d, dG)
604+ let ei = D(dQ, b)
605+ if (if ((dG != e))
606+ then (eh > ei)
601607 else false)
602- then throw(((("Price slippage " + toString(ef)) + " exceeded the passed limit of ") + toString(eg)))
608+ then throw(((("Price slippage " + toString(eh)) + " exceeded the passed limit of ") + toString(ei)))
603609 else {
604- let dH = D(dz, b)
605- let eh = fraction(eb, bZ(dD, dB, CEILING), d, CEILING)
606- let ei = fraction(ec, d, bZ(dD, dB, FLOOR), CEILING)
607- let ej = if ((eh > ec))
608- then $Tuple2(ei, ec)
609- else $Tuple2(eb, eh)
610- let ek = ej._1
611- let el = ej._2
612- let dm = fraction(dH, el, dD, FLOOR)
613- $Tuple5(K(dm, b, FLOOR), K(ek, dj, CEILING), K(el, dk, CEILING), dE, ef)
610+ let dJ = D(dB, b)
611+ let ej = fraction(ed, cb(dF, dD, CEILING), d, CEILING)
612+ let ek = fraction(ee, d, cb(dF, dD, FLOOR), CEILING)
613+ let el = if ((ej > ee))
614+ then $Tuple2(ek, ee)
615+ else $Tuple2(ed, ej)
616+ let em = el._1
617+ let en = el._2
618+ let do = fraction(dJ, en, dF, FLOOR)
619+ $Tuple5(K(do, b, FLOOR), K(em, dl, CEILING), K(en, dm, CEILING), dG, eh)
614620 }
615621 }
616- let em = ee._1
617- let en = ee._2
618- let eo = ee._3
619- let dF = H(ee._4, b)
620- let ep = H(ee._5, b)
621- if ((0 >= em))
622+ let eo = eg._1
623+ let ep = eg._2
624+ let eq = eg._3
625+ let dH = H(eg._4, b)
626+ let er = H(eg._5, b)
627+ if ((0 >= eo))
622628 then throw("Invalid calculations. LP calculated is less than zero.")
623629 else {
624- let eq = if (!(dU))
630+ let es = if (!(dW))
625631 then 0
626- else em
627- let er = (dP - en)
628- let es = (dR - eo)
629- let et = [IntegerEntry(W(), dF), IntegerEntry(X(height, lastBlock.timestamp), dF), StringEntry(aa(ab, ds), bE(en, eo, eq, dF, dO, ep, height, lastBlock.timestamp, er, es))]
630- $Tuple13(em, eq, dF, dA, dC, dz, dv, dy, et, er, es, dQ, dS)
632+ else eo
633+ let et = (dR - ep)
634+ let eu = (dT - eq)
635+ 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))]
636+ $Tuple13(eo, es, dH, dC, dE, dB, dx, dA, ev, et, eu, dS, dU)
631637 }
632638 }
633639 }
634640
635641
636-func eu (ev,ew,dz) = {
637- let ex = G(ev, toBigInt(bz))
638- let ey = G(ew, toBigInt(bA))
639- let ez = fraction(pow((ex * ey), 0, toBigInt(5), 1, 18, DOWN), g, dz)
640- if ((dz == f))
642+func ew (ex,ey,dB) = {
643+ let ez = G(ex, toBigInt(bB))
644+ let eA = G(ey, toBigInt(bC))
645+ let eB = fraction(pow((ez * eA), 0, toBigInt(5), 1, 18, DOWN), g, dB)
646+ if ((dB == f))
641647 then f
642- else ez
648+ else eB
643649 }
644650
645651
646-func eA (eB,eC,eD) = {
647- let eE = (toBigInt(bT(bp(bx))) - eB)
648- let eF = (toBigInt(bT(bp(by))) - eC)
649- let eG = (toBigInt(value(assetInfo(bw)).quantity) - eD)
650- let eH = eu(eE, eF, eG)
651- eH
652+func eC (eD,eE,eF) = {
653+ let eG = (toBigInt(bV(br(bz))) - eD)
654+ let eH = (toBigInt(bV(br(bA))) - eE)
655+ let eI = (toBigInt(value(assetInfo(by)).quantity) - eF)
656+ let eJ = ew(eG, eH, eI)
657+ eJ
652658 }
653659
654660
655-func eI (eJ,eK,eD) = {
656- let eE = (bT(bp(bx)) + eJ)
657- let eF = (bT(bp(by)) + eK)
658- let eG = (value(assetInfo(bw)).quantity + eD)
659- let ez = eu(toBigInt(eE), toBigInt(eF), toBigInt(eG))
660- let eL = [IntegerEntry(ak, height), StringEntry(aj, toString(ez))]
661- $Tuple2(eL, ez)
661+func eK (eL,eM,eF) = {
662+ let eG = (bV(br(bz)) + eL)
663+ let eH = (bV(br(bA)) + eM)
664+ let eI = (value(assetInfo(by)).quantity + eF)
665+ let eB = ew(toBigInt(eG), toBigInt(eH), toBigInt(eI))
666+ let eN = [IntegerEntry(ak, height), StringEntry(aj, toString(eB))]
667+ $Tuple2(eN, eB)
662668 }
663669
664670
665-func eM () = valueOrElse(getBoolean(bd, aH(toString(this))), false)
671+func eO () = valueOrElse(getBoolean(bd, aH(toString(this))), false)
666672
667673
668-func eN (eO,ez) = if ((ez >= eO))
674+func eP (eQ,eB) = if ((eB >= eQ))
669675 then true
670- else ba(makeString(["updated KLp lower than current KLp", toString(eO), toString(ez)], " "))
676+ else ba(makeString(["updated KLp lower than current KLp", toString(eQ), toString(eB)], " "))
671677
672678
673-func eP (eQ) = {
674- let eE = bT(bp(bx))
675- let eF = bT(bp(by))
676- let eR = eQ.amount
677- let eS = fraction(eQ.amount, eQ.price, b, FLOOR)
678- let eT = if ((eQ.orderType == Buy))
679- then $Tuple2(eR, -(eS))
680- else $Tuple2(-(eR), eS)
681- let eJ = eT._1
682- let eK = eT._2
683- if (if (if (bi())
679+func eR (eS) = {
680+ let eG = bV(br(bz))
681+ let eH = bV(br(bA))
682+ let eT = eS.amount
683+ let eU = fraction(eS.amount, eS.price, b, FLOOR)
684+ let eV = if ((eS.orderType == Buy))
685+ then $Tuple2(eT, -(eU))
686+ else $Tuple2(-(eT), eU)
687+ let eL = eV._1
688+ let eM = eV._2
689+ if (if (if (bk())
684690 then true
685- else (bv == m))
691+ else (bx == m))
686692 then true
687- else (bv == n))
693+ else (bx == n))
688694 then throw("Exchange operations disabled")
689- else if (if ((eQ.assetPair.amountAsset != bx))
695+ else if (if ((eS.assetPair.amountAsset != bz))
690696 then true
691- else (eQ.assetPair.priceAsset != by))
697+ else (eS.assetPair.priceAsset != bA))
692698 then throw("Wrong order assets.")
693699 else {
694- let eU = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, aj), "0")), bc("invalid kLp"))
695- let eV = eI(eJ, eK, 0)
696- let eW = eV._1
697- let eX = eV._2
698- let eY = (eX >= eU)
699- let eZ = makeString(["kLp=", toString(eU), " kLpNew=", toString(eX), " amountAssetBalance=", toString(eE), " priceAssetBalance=", toString(eF), " amountAssetBalanceDelta=", toString(eJ), " priceAssetBalanceDelta=", toString(eK), " height=", toString(height)], "")
700- $Tuple2(eY, eZ)
700+ let eW = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, aj), "0")), bc("invalid kLp"))
701+ let eX = eK(eL, eM, 0)
702+ let eY = eX._1
703+ let eZ = eX._2
704+ let fa = (eZ >= eW)
705+ let fb = makeString(["kLp=", toString(eW), " kLpNew=", toString(eZ), " amountAssetBalance=", toString(eG), " priceAssetBalance=", toString(eH), " amountAssetBalanceDelta=", toString(eL), " priceAssetBalanceDelta=", toString(eM), " height=", toString(height)], "")
706+ $Tuple2(fa, fb)
701707 }
702708 }
703709
704710
705-func fa (fb) = if ((size(fb.payments) != 1))
711+func fc (fd) = if ((size(fd.payments) != 1))
706712 then throw("exactly 1 payment is expected")
707713 else {
708- let fc = value(fb.payments[0])
709- let dt = value(fc.assetId)
710- let fd = fc.amount
711- let ee = dr(toBase58String(fb.transactionId), toBase58String(dt), fd, fb.caller)
712- let dK = ee._1
713- let dL = ee._2
714- let dy = parseIntValue(ee._9)
715- let dM = ee._10
716- if (if (bi())
717- then true
718- else (dy == n))
719- then throw(("Get operation is blocked by admin. Status = " + toString(dy)))
720- else $Tuple5(dK, dL, fd, dt, dM)
714+ let fe = value(fd.payments[0])
715+ let dv = value(fe.assetId)
716+ let ff = fe.amount
717+ let eg = dt(toBase58String(fd.transactionId), toBase58String(dv), ff, fd.caller)
718+ let dM = eg._1
719+ let dN = eg._2
720+ let dO = eg._10
721+ let fg = if (!(bj(fd.caller)))
722+ then if (bk())
723+ then true
724+ else (bx == n)
725+ else false
726+ if (fg)
727+ then throw(("Get operation is blocked by admin. Status = " + toString(bx)))
728+ else $Tuple5(dM, dN, ff, dv, dO)
721729 }
722730
723731
724-func fe (fb,dO,dU) = if ((size(fb.payments) != 2))
732+func fh (fd,dQ,dW) = if ((size(fd.payments) != 2))
725733 then throw("exactly 2 payments are expected")
726734 else {
727- let ff = value(fb.payments[0])
728- let fg = value(fb.payments[1])
729- let fh = dN(toBase58String(fb.transactionId), dO, ff.amount, ff.assetId, fg.amount, fg.assetId, toString(fb.caller), false, dU)
730- let dy = parseIntValue(fh._8)
731- if (if (if (bi())
732- then true
733- else (dy == l))
734- then true
735- else (dy == n))
736- then throw(("Put operation is blocked by admin. Status = " + toString(dy)))
737- else fh
735+ let fi = value(fd.payments[0])
736+ let fj = value(fd.payments[1])
737+ let fk = dP(toBase58String(fd.transactionId), dQ, fi.amount, fi.assetId, fj.amount, fj.assetId, toString(fd.caller), false, dW)
738+ let fl = if (!(bj(fd.caller)))
739+ then if (if (bk())
740+ then true
741+ else (bx == l))
742+ then true
743+ else (bx == n)
744+ else false
745+ if (fl)
746+ then throw(("Put operation is blocked by admin. Status = " + toString(bx)))
747+ else fk
738748 }
739749
740750
741-func fi (cf) = {
742- let fj = invoke(bd, "emit", [cf], nil)
743- if ((fj == fj))
751+func fm (ch) = {
752+ let fn = invoke(bd, "emit", [ch], nil)
753+ if ((fn == fn))
744754 then {
745- let fk = {
746- let aQ = fj
755+ let fo = {
756+ let aQ = fn
747757 if ($isInstanceOf(aQ, "Address"))
748758 then {
749- let fl = aQ
750- invoke(fl, "emit", [cf], nil)
759+ let fp = aQ
760+ invoke(fp, "emit", [ch], nil)
751761 }
752762 else unit
753763 }
754- if ((fk == fk))
755- then cf
764+ if ((fo == fo))
765+ then ch
756766 else throw("Strict value is not equal to itself.")
757767 }
758768 else throw("Strict value is not equal to itself.")
759769 }
760770
761771
762-func fm (cf,ai) = {
763- let fn = if ((ai == 0))
772+func fq (ch,ai) = {
773+ let fr = if ((ai == 0))
764774 then 0
765- else fraction(cf, ai, b)
766- $Tuple2((cf - fn), fn)
775+ else fraction(ch, ai, b)
776+ $Tuple2((ch - fr), fr)
767777 }
768778
769779
770-func fo (fp,fq,ab,ac) = {
771- let fr = (ac == unit)
772- let fs = bT(bp(bx))
773- let ft = bT(bp(by))
774- let fu = if ((fq == bx))
780+func fs (ft,fu,ab,ac) = {
781+ let fv = (ac == unit)
782+ let fw = bV(br(bz))
783+ let fx = bV(br(bA))
784+ let fy = if ((fu == bz))
775785 then true
776- else if ((fq == by))
786+ else if ((fu == bA))
777787 then false
778788 else ba("invalid asset")
779- let fv = if (fr)
780- then $Tuple2(fs, ft)
781- else if (fu)
782- then $Tuple2((fs - fp), ft)
783- else $Tuple2(fs, (ft - fp))
784- let fw = fv._1
785- let fx = fv._2
786- let fy = if (fu)
787- then $Tuple2(fp, 0)
788- else $Tuple2(0, fp)
789- let fz = fy._1
790- let fA = fy._2
791- let eR = fm(fz, bf)._1
792- let eS = fm(fA, bf)._1
793- let fB = fm(fp, bf)
794- let fC = fB._1
795- let fn = fB._2
796- let fD = (fw + eR)
797- let fE = (fx + eS)
798- let fF = bW(D(fE, bA), D(fD, bz))
799- let fG = H(fF, b)
800- let fH = if (fu)
801- then fw
802- else fx
803- let fI = toBigInt(fH)
804- let fJ = toBigInt(valueOrErrorMessage(assetInfo(bw), (("asset " + toBase58String(bw)) + " doesn't exist")).quantity)
805- let fK = if ((fJ > f))
789+ let fz = if (fv)
790+ then $Tuple2(fw, fx)
791+ else if (fy)
792+ then $Tuple2((fw - ft), fx)
793+ else $Tuple2(fw, (fx - ft))
794+ let fA = fz._1
795+ let fB = fz._2
796+ let fC = if (fy)
797+ then $Tuple2(ft, 0)
798+ else $Tuple2(0, ft)
799+ let fD = fC._1
800+ let fE = fC._2
801+ let eT = fq(fD, bf)._1
802+ let eU = fq(fE, bf)._1
803+ let fF = fq(ft, bf)
804+ let fG = fF._1
805+ let fr = fF._2
806+ let fH = (fA + eT)
807+ let fI = (fB + eU)
808+ let fJ = bY(D(fI, bC), D(fH, bB))
809+ let fK = H(fJ, b)
810+ let fL = if (fy)
811+ then fA
812+ else fB
813+ let fM = toBigInt(fL)
814+ let fN = toBigInt(valueOrErrorMessage(assetInfo(by), (("asset " + toBase58String(by)) + " doesn't exist")).quantity)
815+ let fO = if ((fN > f))
806816 then true
807817 else ba("initial deposit requires all coins")
808- if ((fK == fK))
818+ if ((fO == fO))
809819 then {
810- let fL = toBigInt(fC)
811- let fM = max([0, toInt(((fJ * (sqrtBigInt((d + ((fL * d) / fI)), 18, 18, DOWN) - d)) / d))])
812- let et = if (fr)
820+ let fP = toBigInt(fG)
821+ let fQ = max([0, toInt(((fN * (sqrtBigInt((d + ((fP * d) / fM)), 18, 18, DOWN) - d)) / d))])
822+ let ev = if (fv)
813823 then nil
814- else [IntegerEntry(W(), fG), IntegerEntry(X(height, lastBlock.timestamp), fG), StringEntry(aa(toString(value(ab)), toBase58String(value(ac))), bE(fz, fA, fM, fG, 0, 0, height, lastBlock.timestamp, 0, 0))]
815- let fN = bW(D(fx, bA), D(fw, bz))
816- let fO = H(fN, b)
817- let fP = {
818- let fQ = if (fu)
819- then $Tuple2(fz, fw)
820- else $Tuple2(fA, fx)
821- let cf = fQ._1
822- let fR = fQ._2
823- let fS = toInt(fraction(fJ, toBigInt((cf / 2)), toBigInt(fR)))
824- fraction((fM - fS), b, fS)
824+ 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))]
825+ let fR = bY(D(fB, bC), D(fA, bB))
826+ let fS = H(fR, b)
827+ let fT = {
828+ let fU = if (fy)
829+ then $Tuple2(fD, fA)
830+ else $Tuple2(fE, fB)
831+ let ch = fU._1
832+ let fV = fU._2
833+ let fW = toInt(fraction(fN, toBigInt((ch / 2)), toBigInt(fV)))
834+ fraction((fQ - fW), b, fW)
825835 }
826- $Tuple5(fM, et, fn, fP, fu)
836+ $Tuple5(fQ, ev, fr, fT, fy)
827837 }
828838 else throw("Strict value is not equal to itself.")
829839 }
830840
831841
832-func fT (fU,fC,fq,ab,ac) = {
833- let fr = (ac == unit)
834- let di = bk()
835- let dj = parseIntValue(di[t])
836- let dk = parseIntValue(di[u])
837- let fV = [if ((fq == bw))
842+func fX (fY,fG,fu,ab,ac) = {
843+ let fv = (ac == unit)
844+ let dk = bm()
845+ let dl = parseIntValue(dk[t])
846+ let dm = parseIntValue(dk[u])
847+ let fZ = [if ((fu == by))
838848 then true
839849 else ba("invalid lp asset")]
840- if ((fV == fV))
850+ if ((fZ == fZ))
841851 then {
842- let fW = if ((fU == bx))
852+ let ga = if ((fY == bz))
843853 then true
844- else if ((fU == by))
854+ else if ((fY == bA))
845855 then false
846856 else ba("invalid asset")
847- let fX = if (fW)
848- then toBigInt(bT(bp(bx)))
849- else toBigInt(bT(bp(by)))
850- let fY = if (fW)
851- then dj
852- else dk
853- let fZ = bT(bp(bx))
854- let ga = bT(bp(by))
855- let gb = if (fW)
856- then fZ
857- else ga
858- let gc = toBigInt(gb)
859- let fJ = toBigInt(valueOrErrorMessage(assetInfo(bw), (("asset " + toBase58String(bw)) + " doesn't exist")).quantity)
860- let gd = toBigInt(fC)
861- let ge = max([0, toInt(((fX * (d - pow((d - ((gd * d) / fJ)), 18, h, 0, 18, DOWN))) / d))])
862- let gf = fm(ge, bh)
863- let gg = gf._1
864- let fn = gf._2
865- let gh = if (fW)
866- then $Tuple4(gg, 0, (fZ - ge), ga)
867- else $Tuple4(0, gg, fZ, (ga - ge))
868- let gi = gh._1
869- let gj = gh._2
870- let gk = gh._3
871- let gl = gh._4
872- let fF = bW(D(gl, bA), D(gk, bz))
873- let fG = H(fF, b)
874- let et = if (fr)
857+ let gb = if (ga)
858+ then toBigInt(bV(br(bz)))
859+ else toBigInt(bV(br(bA)))
860+ let gc = if (ga)
861+ then dl
862+ else dm
863+ let gd = bV(br(bz))
864+ let ge = bV(br(bA))
865+ let gf = if (ga)
866+ then gd
867+ else ge
868+ let gg = toBigInt(gf)
869+ let fN = toBigInt(valueOrErrorMessage(assetInfo(by), (("asset " + toBase58String(by)) + " doesn't exist")).quantity)
870+ let gh = toBigInt(fG)
871+ let gi = max([0, toInt(((gb * (d - pow((d - ((gh * d) / fN)), 18, h, 0, 18, DOWN))) / d))])
872+ let gj = fq(gi, bh)
873+ let gk = gj._1
874+ let fr = gj._2
875+ let gl = if (ga)
876+ then $Tuple4(gk, 0, (gd - gi), ge)
877+ else $Tuple4(0, gk, gd, (ge - gi))
878+ let gm = gl._1
879+ let gn = gl._2
880+ let go = gl._3
881+ let gp = gl._4
882+ let fJ = bY(D(gp, bC), D(go, bB))
883+ let fK = H(fJ, b)
884+ let ev = if (fv)
875885 then nil
876- else [StringEntry(ad(toString(value(ab)), toBase58String(value(ac))), bP(gi, gj, fC, fG, height, lastBlock.timestamp)), IntegerEntry(W(), fG), IntegerEntry(X(height, lastBlock.timestamp), fG)]
877- let fN = bW(D(ga, bA), D(fZ, bz))
878- let fO = H(fN, b)
879- let fP = {
880- let gm = (toInt(fraction(fX, gd, fJ)) * 2)
881- fraction((gg - gm), b, gm)
886+ 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)]
887+ let fR = bY(D(ge, bC), D(gd, bB))
888+ let fS = H(fR, b)
889+ let fT = {
890+ let gq = (toInt(fraction(gb, gh, fN)) * 2)
891+ fraction((gk - gq), b, gq)
882892 }
883- $Tuple5(gg, et, fn, fP, fW)
893+ $Tuple5(gk, ev, fr, fT, ga)
884894 }
885895 else throw("Strict value is not equal to itself.")
886896 }
887897
888898
889-func gn () = {
890- let go = aS()
891- let aQ = getString(go, U())
899+func gr () = {
900+ let gs = aS()
901+ let aQ = getString(gs, U())
892902 if ($isInstanceOf(aQ, "String"))
893903 then {
894904 let aV = aQ
900910 }
901911
902912
903-func gp (fb) = {
904- let aQ = gn()
913+func gt (fd) = {
914+ let aQ = gr()
905915 if ($isInstanceOf(aQ, "ByteVector"))
906916 then {
907- let gq = aQ
908- (fb.callerPublicKey == gq)
917+ let gu = aQ
918+ (fd.callerPublicKey == gu)
909919 }
910920 else if ($isInstanceOf(aQ, "Unit"))
911- then (fb.caller == this)
921+ then (fd.caller == this)
912922 else throw("Match error")
913923 }
914924
915925
916-func gr (fb) = {
917- let gs = throw("Permission denied")
918- let aQ = gn()
926+func gv (fd) = {
927+ let gw = throw("Permission denied")
928+ let aQ = gr()
919929 if ($isInstanceOf(aQ, "ByteVector"))
920930 then {
921- let gq = aQ
922- if ((fb.callerPublicKey == gq))
931+ let gu = aQ
932+ if ((fd.callerPublicKey == gu))
923933 then true
924- else gs
934+ else gw
925935 }
926936 else if ($isInstanceOf(aQ, "Unit"))
927- then if ((fb.caller == this))
937+ then if ((fd.caller == this))
928938 then true
929- else gs
939+ else gw
930940 else throw("Match error")
931941 }
932942
933943
934-@Callable(fb)
935-func rebalance () = (cI(aW(this, ae())) ++ cI(aW(this, af())))
944+@Callable(fd)
945+func rebalance () = (cK(aW(this, ae())) ++ cK(aW(this, af())))
936946
937947
938948
939-@Callable(fb)
940-func calculateAmountOutForSwapREADONLY (gt,gu,gv) = {
941- let gw = if ((gu == false))
949+@Callable(fd)
950+func calculateAmountOutForSwapREADONLY (gx,gy,gz) = {
951+ let gA = if ((gy == false))
942952 then {
943- let gx = aW(this, af())
944- let gy = aW(this, ae())
945- $Tuple2(gx, gy)
953+ let gB = aW(this, af())
954+ let gC = aW(this, ae())
955+ $Tuple2(gB, gC)
946956 }
947957 else {
948- let gx = aW(this, ae())
949- let gy = aW(this, af())
950- $Tuple2(gx, gy)
958+ let gB = aW(this, ae())
959+ let gC = aW(this, af())
960+ $Tuple2(gB, gC)
951961 }
952- let gx = gw._1
953- let gy = gw._2
954- let gz = bT(gy)
955- let gA = bT(gx)
956- let gB = fraction(gA, gt, (gz + gt))
957- let gC = (toBigInt(gz) * toBigInt(gA))
958- let gD = (((toBigInt(bT(gy)) + toBigInt(gt)) + toBigInt(gv)) * (toBigInt(bT(gx)) - toBigInt(gB)))
959- let gE = if ((gD >= gC))
962+ let gB = gA._1
963+ let gC = gA._2
964+ let gD = bV(gC)
965+ let gE = bV(gB)
966+ let gF = fraction(gE, gx, (gD + gx))
967+ let gG = (toBigInt(gD) * toBigInt(gE))
968+ let gH = (((toBigInt(bV(gC)) + toBigInt(gx)) + toBigInt(gz)) * (toBigInt(bV(gB)) - toBigInt(gF)))
969+ let gI = if ((gH >= gG))
960970 then true
961971 else throw("new K is fewer error")
962- if ((gE == gE))
963- then $Tuple2(nil, gB)
972+ if ((gI == gI))
973+ then $Tuple2(nil, gF)
964974 else throw("Strict value is not equal to itself.")
965975 }
966976
967977
968978
969-@Callable(fb)
970-func calculateAmountOutForSwapAndSendTokens (gt,gu,gF,gG,gv) = {
971- let gH = {
979+@Callable(fd)
980+func calculateAmountOutForSwapAndSendTokens (gx,gy,gJ,gK,gz) = {
981+ let gL = {
972982 let bg = invoke(bd, "getSwapContractREADONLY", nil, nil)
973983 if ($isInstanceOf(bg, "String"))
974984 then bg
975985 else throw(($getType(bg) + " couldn't be cast to String"))
976986 }
977- let gI = {
987+ let gM = {
978988 let bg = invoke(bd, "isPoolSwapDisabledREADONLY", [toString(this)], nil)
979989 if ($isInstanceOf(bg, "Boolean"))
980990 then bg
981991 else throw(($getType(bg) + " couldn't be cast to Boolean"))
982992 }
983- let gJ = if (if (bi())
993+ let gN = if (!(bj(fd.caller)))
994+ then if (if (bk())
995+ then true
996+ else (bx == n))
997+ then true
998+ else gM
999+ else false
1000+ let fZ = [if (if (!(gN))
9841001 then true
985- else (bv == n))
1002+ else gt(fd))
9861003 then true
987- else gI
988- let fV = [if (if (!(gJ))
1004+ else ba("swap operation is blocked by admin"), if ((value(fd.payments[0]).amount >= gx))
9891005 then true
990- else gp(fb))
991- then true
992- else ba("swap operation is blocked by admin"), if ((value(fb.payments[0]).amount >= gt))
993- then true
994- else ba("Wrong amount"), if ((fb.caller == addressFromStringValue(gH)))
1006+ else ba("Wrong amount"), if ((fd.caller == addressFromStringValue(gL)))
9951007 then true
9961008 else ba("Permission denied")]
997- if ((fV == fV))
1009+ if ((fZ == fZ))
9981010 then {
999- let fc = value(fb.payments[0])
1000- let gy = bp(fc.assetId)
1001- let gx = if ((gu == false))
1011+ let fe = value(fd.payments[0])
1012+ let gC = br(fe.assetId)
1013+ let gB = if ((gy == false))
10021014 then aW(this, af())
10031015 else aW(this, ae())
1004- let gz = ((bT(gy) - value(fb.payments[0]).amount) - gv)
1005- let gA = bT(gx)
1006- let gB = fraction(gA, gt, (gz + gt))
1007- let gC = (toBigInt(gz) * toBigInt(gA))
1008- let gD = ((toBigInt(bT(gy)) + toBigInt(gv)) * (toBigInt(bT(gx)) - toBigInt(gB)))
1009- let gE = if ((gD >= gC))
1016+ let gD = ((bV(gC) - value(fd.payments[0]).amount) - gz)
1017+ let gE = bV(gB)
1018+ let gF = fraction(gE, gx, (gD + gx))
1019+ let gG = (toBigInt(gD) * toBigInt(gE))
1020+ let gH = ((toBigInt(bV(gC)) + toBigInt(gz)) * (toBigInt(bV(gB)) - toBigInt(gF)))
1021+ let gI = if ((gH >= gG))
10101022 then true
10111023 else throw("new K is fewer error")
1012- if ((gE == gE))
1024+ if ((gI == gI))
10131025 then {
1014- let gK = if ((gB >= gF))
1026+ let gO = if ((gF >= gJ))
10151027 then true
10161028 else throw("Exchange result is fewer coins than expected")
1017- if ((gK == gK))
1029+ if ((gO == gO))
10181030 then {
1019- let eJ = if (gu)
1020- then -(gB)
1021- else gv
1022- let eK = if (gu)
1023- then gv
1024- else -(gB)
1025- let gL = eI(eJ, eK, 0)._1
1026- if ((gL == gL))
1031+ let eL = if (gy)
1032+ then -(gF)
1033+ else gz
1034+ let eM = if (gy)
1035+ then gz
1036+ else -(gF)
1037+ let gP = eK(eL, eM, 0)._1
1038+ if ((gP == gP))
10271039 then {
1028- let gM = cI(gy)
1029- if ((gM == gM))
1040+ let gQ = cK(gC)
1041+ if ((gQ == gQ))
10301042 then {
1031- let gN = cP(gx, gB)
1032- if ((gN == gN))
1033- then $Tuple2(((gN ++ gM) ++ [ScriptTransfer(addressFromStringValue(gG), gB, bn(gx))]), gB)
1043+ let gR = cR(gB, gF)
1044+ if ((gR == gR))
1045+ then $Tuple2(((gR ++ gQ) ++ [ScriptTransfer(addressFromStringValue(gK), gF, bp(gB))]), gF)
10341046 else throw("Strict value is not equal to itself.")
10351047 }
10361048 else throw("Strict value is not equal to itself.")
10461058
10471059
10481060
1049-@Callable(fb)
1050-func put (dO,gO) = if ((0 > dO))
1061+@Callable(fd)
1062+func put (dQ,gS) = if ((0 > dQ))
10511063 then throw("Invalid slippageTolerance passed")
10521064 else {
1053- let fh = fe(fb, dO, true)
1054- let eq = fh._2
1055- let dv = fh._7
1056- let dM = fh._9
1057- let er = fh._10
1058- let es = fh._11
1059- let gP = fh._12
1060- let gQ = fh._13
1061- let ff = toBigInt(value(fb.payments[0]).amount)
1062- let fg = toBigInt(value(fb.payments[1]).amount)
1063- let eH = eA(ff, fg, toBigInt(0))
1064- if ((eH == eH))
1065+ let fk = fh(fd, dQ, true)
1066+ let es = fk._2
1067+ let dx = fk._7
1068+ let dO = fk._9
1069+ let et = fk._10
1070+ let eu = fk._11
1071+ let gT = fk._12
1072+ let gU = fk._13
1073+ let fi = toBigInt(value(fd.payments[0]).amount)
1074+ let fj = toBigInt(value(fd.payments[1]).amount)
1075+ let eJ = eC(fi, fj, toBigInt(0))
1076+ if ((eJ == eJ))
10651077 then {
1066- let fj = invoke(bd, "emit", [eq], nil)
1067- if ((fj == fj))
1078+ let fn = invoke(bd, "emit", [es], nil)
1079+ if ((fn == fn))
10681080 then {
1069- let fk = {
1070- let aQ = fj
1081+ let fo = {
1082+ let aQ = fn
10711083 if ($isInstanceOf(aQ, "Address"))
10721084 then {
1073- let fl = aQ
1074- invoke(fl, "emit", [eq], nil)
1085+ let fp = aQ
1086+ invoke(fp, "emit", [es], nil)
10751087 }
10761088 else unit
10771089 }
1078- if ((fk == fk))
1090+ if ((fo == fo))
10791091 then {
1080- let gR = if ((er > 0))
1081- then invoke(bD, "put", nil, [AttachedPayment(gP, er)])
1092+ let gV = if ((et > 0))
1093+ then invoke(bF, "put", nil, [AttachedPayment(gT, et)])
10821094 else nil
1083- if ((gR == gR))
1095+ if ((gV == gV))
10841096 then {
1085- let gS = if ((es > 0))
1086- then invoke(bD, "put", nil, [AttachedPayment(gQ, es)])
1097+ let gW = if ((eu > 0))
1098+ then invoke(bF, "put", nil, [AttachedPayment(gU, eu)])
10871099 else nil
1088- if ((gS == gS))
1100+ if ((gW == gW))
10891101 then {
1090- let gT = if (gO)
1102+ let gX = if (gS)
10911103 then {
1092- let gU = invoke(bC, "stake", nil, [AttachedPayment(dv, eq)])
1093- if ((gU == gU))
1104+ let gY = invoke(bE, "stake", nil, [AttachedPayment(dx, es)])
1105+ if ((gY == gY))
10941106 then nil
10951107 else throw("Strict value is not equal to itself.")
10961108 }
1097- else [ScriptTransfer(fb.caller, eq, dv)]
1098- let gV = eI(0, 0, 0)
1099- if ((gV == gV))
1109+ else [ScriptTransfer(fd.caller, es, dx)]
1110+ let gZ = eK(0, 0, 0)
1111+ if ((gZ == gZ))
11001112 then {
1101- let ez = gV._2
1102- let gL = gV._1
1103- let gW = eN(eH, ez)
1104- if ((gW == gW))
1113+ let eB = gZ._2
1114+ let gP = gZ._1
1115+ let ha = eP(eJ, eB)
1116+ if ((ha == ha))
11051117 then {
1106- let gX = invoke(this, "rebalance", nil, nil)
1107- if ((gX == gX))
1108- then ((dM ++ gT) ++ gL)
1118+ let hb = invoke(this, "rebalance", nil, nil)
1119+ if ((hb == hb))
1120+ then ((dO ++ gX) ++ gP)
11091121 else throw("Strict value is not equal to itself.")
11101122 }
11111123 else throw("Strict value is not equal to itself.")
11251137
11261138
11271139
1128-@Callable(fb)
1129-func putForFree (gY) = if ((0 > gY))
1140+@Callable(fd)
1141+func putForFree (hc) = if ((0 > hc))
11301142 then throw("Invalid value passed")
11311143 else {
1132- let fh = fe(fb, gY, false)
1133- let dM = fh._9
1134- let ff = toBigInt(value(fb.payments[0]).amount)
1135- let fg = toBigInt(value(fb.payments[1]).amount)
1136- let eH = eA(ff, fg, toBigInt(0))
1137- if ((eH == eH))
1144+ let fk = fh(fd, hc, false)
1145+ let dO = fk._9
1146+ let fi = toBigInt(value(fd.payments[0]).amount)
1147+ let fj = toBigInt(value(fd.payments[1]).amount)
1148+ let eJ = eC(fi, fj, toBigInt(0))
1149+ if ((eJ == eJ))
11381150 then {
1139- let gZ = eI(0, 0, 0)
1140- let gL = gZ._1
1141- let ez = gZ._2
1142- let gW = eN(eH, ez)
1143- if ((gW == gW))
1144- then (dM ++ gL)
1151+ let hd = eK(0, 0, 0)
1152+ let gP = hd._1
1153+ let eB = hd._2
1154+ let ha = eP(eJ, eB)
1155+ if ((ha == ha))
1156+ then (dO ++ gP)
11451157 else throw("Strict value is not equal to itself.")
11461158 }
11471159 else throw("Strict value is not equal to itself.")
11491161
11501162
11511163
1152-@Callable(fb)
1153-func putOneTkn (ha,hb) = {
1154- let hc = {
1164+@Callable(fd)
1165+func putOneTkn (he,hf) = {
1166+ let hg = {
11551167 let bg = invoke(bd, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
11561168 if ($isInstanceOf(bg, "Boolean"))
11571169 then bg
11581170 else throw(($getType(bg) + " couldn't be cast to Boolean"))
11591171 }
1160- let hd = if (if (if (bi())
1172+ let fl = if (!(bj(fd.caller)))
1173+ then if (if (if (bk())
1174+ then true
1175+ else (bx == l))
1176+ then true
1177+ else (bx == n))
1178+ then true
1179+ else hg
1180+ else false
1181+ let fZ = [if (if (!(fl))
11611182 then true
1162- else (bv == l))
1183+ else gt(fd))
11631184 then true
1164- else (bv == n))
1165- then true
1166- else hc
1167- let fV = [if (if (!(hd))
1168- then true
1169- else gp(fb))
1170- then true
1171- else ba("put operation is blocked by admin"), if ((size(fb.payments) == 1))
1185+ else ba("put operation is blocked by admin"), if ((size(fd.payments) == 1))
11721186 then true
11731187 else ba("exactly 1 payment are expected")]
1174- if ((fV == fV))
1188+ if ((fZ == fZ))
11751189 then {
1176- let he = fb.payments[0]
1177- let fq = he.assetId
1178- let fp = he.amount
1179- let eH = if ((fq == bx))
1180- then eA(toBigInt(fp), toBigInt(0), toBigInt(0))
1181- else if ((fq == by))
1182- then eA(toBigInt(0), toBigInt(fp), toBigInt(0))
1190+ let hh = fd.payments[0]
1191+ let fu = hh.assetId
1192+ let ft = hh.amount
1193+ let eJ = if ((fu == bz))
1194+ then eC(toBigInt(ft), toBigInt(0), toBigInt(0))
1195+ else if ((fu == bA))
1196+ then eC(toBigInt(0), toBigInt(ft), toBigInt(0))
11831197 else ba("payment asset is not supported")
1184- if ((eH == eH))
1198+ if ((eJ == eJ))
11851199 then {
1186- let ab = fb.caller
1187- let ac = fb.transactionId
1188- let hf = fo(fp, fq, ab, ac)
1189- if ((hf == hf))
1200+ let ab = fd.caller
1201+ let ac = fd.transactionId
1202+ let hi = fs(ft, fu, ab, ac)
1203+ if ((hi == hi))
11901204 then {
1191- let fu = hf._5
1192- let hg = hf._4
1193- let fn = hf._3
1194- let et = hf._2
1195- let hh = hf._1
1196- let hi = if (if ((ha > 0))
1197- then (ha > hh)
1205+ let fy = hi._5
1206+ let hj = hi._4
1207+ let fr = hi._3
1208+ let ev = hi._2
1209+ let hk = hi._1
1210+ let hl = if (if ((he > 0))
1211+ then (he > hk)
11981212 else false)
1199- then ba(makeString(["amount to receive is less than ", toString(ha)], ""))
1200- else hh
1201- let fj = fi(hi)
1202- if ((fj == fj))
1213+ then ba(makeString(["amount to receive is less than ", toString(he)], ""))
1214+ else hk
1215+ let fn = fm(hl)
1216+ if ((fn == fn))
12031217 then {
1204- let gT = if (hb)
1218+ let gX = if (hf)
12051219 then {
1206- let hj = invoke(bC, "stake", nil, [AttachedPayment(bw, hi)])
1207- if ((hj == hj))
1220+ let hm = invoke(bE, "stake", nil, [AttachedPayment(by, hl)])
1221+ if ((hm == hm))
12081222 then nil
12091223 else throw("Strict value is not equal to itself.")
12101224 }
1211- else [ScriptTransfer(fb.caller, hi, bw)]
1212- let hk = if ((fn > 0))
1213- then [ScriptTransfer(be, fn, fq)]
1225+ else [ScriptTransfer(fd.caller, hl, by)]
1226+ let hn = if ((fr > 0))
1227+ then [ScriptTransfer(be, fr, fu)]
12141228 else nil
1215- let hl = if ((this == be))
1229+ let ho = if ((this == be))
12161230 then $Tuple2(0, 0)
1217- else if (fu)
1218- then $Tuple2(-(fn), 0)
1219- else $Tuple2(0, -(fn))
1220- let eJ = hl._1
1221- let eK = hl._2
1222- let hm = eI(eJ, eK, 0)
1223- let gL = hm._1
1224- let ez = hm._2
1225- let eU = value(getString(aj))
1226- let gW = eN(eH, ez)
1227- if ((gW == gW))
1231+ else if (fy)
1232+ then $Tuple2(-(fr), 0)
1233+ else $Tuple2(0, -(fr))
1234+ let eL = ho._1
1235+ let eM = ho._2
1236+ let hp = eK(eL, eM, 0)
1237+ let gP = hp._1
1238+ let eB = hp._2
1239+ let eW = value(getString(aj))
1240+ let ha = eP(eJ, eB)
1241+ if ((ha == ha))
12281242 then {
1229- let gX = invoke(this, "rebalance", nil, nil)
1230- if ((gX == gX))
1231- then $Tuple2((((et ++ gT) ++ hk) ++ gL), hi)
1243+ let hb = invoke(this, "rebalance", nil, nil)
1244+ if ((hb == hb))
1245+ then $Tuple2((((ev ++ gX) ++ hn) ++ gP), hl)
12321246 else throw("Strict value is not equal to itself.")
12331247 }
12341248 else throw("Strict value is not equal to itself.")
12441258
12451259
12461260
1247-@Callable(fb)
1248-func putOneTknREADONLY (fq,fp) = {
1249- let hn = fo(fp, bn(fq), unit, unit)
1250- let hh = hn._1
1251- let et = hn._2
1252- let fn = hn._3
1253- let hg = hn._4
1254- let fu = hn._5
1255- $Tuple2(nil, $Tuple3(hh, fn, hg))
1261+@Callable(fd)
1262+func putOneTknREADONLY (fu,ft) = {
1263+ let hq = fs(ft, bp(fu), unit, unit)
1264+ let hk = hq._1
1265+ let ev = hq._2
1266+ let fr = hq._3
1267+ let hj = hq._4
1268+ let fy = hq._5
1269+ $Tuple2(nil, $Tuple3(hk, fr, hj))
12561270 }
12571271
12581272
12591273
1260-@Callable(fb)
1261-func getOneTkn (ho,ha) = {
1262- let hc = {
1274+@Callable(fd)
1275+func getOneTkn (hr,he) = {
1276+ let hg = {
12631277 let bg = invoke(bd, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
12641278 if ($isInstanceOf(bg, "Boolean"))
12651279 then bg
12661280 else throw(($getType(bg) + " couldn't be cast to Boolean"))
12671281 }
1268- let hp = if (if (bi())
1282+ let fg = if (!(bj(fd.caller)))
1283+ then if (if (bk())
1284+ then true
1285+ else (bx == n))
1286+ then true
1287+ else hg
1288+ else false
1289+ let fZ = [if (if (!(fg))
12691290 then true
1270- else (bv == n))
1291+ else gt(fd))
12711292 then true
1272- else hc
1273- let fV = [if (if (!(hp))
1274- then true
1275- else gp(fb))
1276- then true
1277- else ba("get operation is blocked by admin"), if ((size(fb.payments) == 1))
1293+ else ba("get operation is blocked by admin"), if ((size(fd.payments) == 1))
12781294 then true
12791295 else ba("exactly 1 payment are expected")]
1280- if ((fV == fV))
1296+ if ((fZ == fZ))
12811297 then {
1282- let fU = bn(ho)
1283- let he = fb.payments[0]
1284- let fq = he.assetId
1285- let fC = he.amount
1286- let eH = eA(toBigInt(0), toBigInt(0), toBigInt(0))
1287- if ((eH == eH))
1298+ let fY = bp(hr)
1299+ let hh = fd.payments[0]
1300+ let fu = hh.assetId
1301+ let fG = hh.amount
1302+ let eJ = eC(toBigInt(0), toBigInt(0), toBigInt(0))
1303+ if ((eJ == eJ))
12881304 then {
1289- let ab = fb.caller
1290- let ac = fb.transactionId
1291- let hq = fT(fU, fC, fq, ab, ac)
1292- if ((hq == hq))
1305+ let ab = fd.caller
1306+ let ac = fd.transactionId
1307+ let hs = fX(fY, fG, fu, ab, ac)
1308+ if ((hs == hs))
12931309 then {
1294- let fW = hq._5
1295- let hg = hq._4
1296- let fn = hq._3
1297- let et = hq._2
1298- let hr = hq._1
1299- let cf = if (if ((ha > 0))
1300- then (ha > hr)
1310+ let ga = hs._5
1311+ let hj = hs._4
1312+ let fr = hs._3
1313+ let ev = hs._2
1314+ let ht = hs._1
1315+ let ch = if (if ((he > 0))
1316+ then (he > ht)
13011317 else false)
1302- then ba(makeString(["amount to receive is less than ", toString(ha)], ""))
1303- else hr
1304- let hs = invoke(bd, "burn", [fC], [AttachedPayment(fq, fC)])
1305- if ((hs == hs))
1318+ then ba(makeString(["amount to receive is less than ", toString(he)], ""))
1319+ else ht
1320+ let hu = invoke(bd, "burn", [fG], [AttachedPayment(fu, fG)])
1321+ if ((hu == hu))
13061322 then {
1307- let gN = cP(ho, (cf + max([0, fn])))
1308- let ht = [ScriptTransfer(ab, cf, fU)]
1309- let hk = if ((fn > 0))
1310- then [ScriptTransfer(be, fn, fU)]
1323+ let gR = cR(hr, (ch + max([0, fr])))
1324+ let hv = [ScriptTransfer(ab, ch, fY)]
1325+ let hn = if ((fr > 0))
1326+ then [ScriptTransfer(be, fr, fY)]
13111327 else nil
1312- let hu = {
1313- let hv = if ((this == be))
1328+ let hw = {
1329+ let hx = if ((this == be))
13141330 then 0
1315- else fn
1316- if (fW)
1317- then $Tuple2(-((cf + hv)), 0)
1318- else $Tuple2(0, -((cf + hv)))
1331+ else fr
1332+ if (ga)
1333+ then $Tuple2(-((ch + hx)), 0)
1334+ else $Tuple2(0, -((ch + hx)))
13191335 }
1320- let eJ = hu._1
1321- let eK = hu._2
1322- let hw = eI(eJ, eK, 0)
1323- let gL = hw._1
1324- let ez = hw._2
1325- let gW = eN(eH, ez)
1326- if ((gW == gW))
1327- then $Tuple2(((((et ++ gN) ++ ht) ++ hk) ++ gL), cf)
1336+ let eL = hw._1
1337+ let eM = hw._2
1338+ let hy = eK(eL, eM, 0)
1339+ let gP = hy._1
1340+ let eB = hy._2
1341+ let ha = eP(eJ, eB)
1342+ if ((ha == ha))
1343+ then $Tuple2(((((ev ++ gR) ++ hv) ++ hn) ++ gP), ch)
13281344 else throw("Strict value is not equal to itself.")
13291345 }
13301346 else throw("Strict value is not equal to itself.")
13381354
13391355
13401356
1341-@Callable(fb)
1342-func getOneTknREADONLY (fU,fC) = {
1343- let hx = fT(bn(fU), fC, bw, unit, unit)
1344- let hr = hx._1
1345- let et = hx._2
1346- let fn = hx._3
1347- let hg = hx._4
1348- let fW = hx._5
1349- $Tuple2(nil, $Tuple3(hr, fn, hg))
1357+@Callable(fd)
1358+func getOneTknREADONLY (fY,fG) = {
1359+ let hz = fX(bp(fY), fG, by, unit, unit)
1360+ let ht = hz._1
1361+ let ev = hz._2
1362+ let fr = hz._3
1363+ let hj = hz._4
1364+ let ga = hz._5
1365+ $Tuple2(nil, $Tuple3(ht, fr, hj))
13501366 }
13511367
13521368
13531369
1354-@Callable(fb)
1355-func unstakeAndGetOneTkn (hy,ho,ha) = {
1356- let hc = {
1370+@Callable(fd)
1371+func unstakeAndGetOneTkn (hA,hr,he) = {
1372+ let hg = {
13571373 let bg = invoke(bd, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
13581374 if ($isInstanceOf(bg, "Boolean"))
13591375 then bg
13601376 else throw(($getType(bg) + " couldn't be cast to Boolean"))
13611377 }
1362- let hp = if (if (bi())
1378+ let fg = if (!(bj(fd.caller)))
1379+ then if (if (bk())
1380+ then true
1381+ else (bx == n))
1382+ then true
1383+ else hg
1384+ else false
1385+ let fZ = [if (if (!(fg))
13631386 then true
1364- else (bv == n))
1387+ else gt(fd))
13651388 then true
1366- else hc
1367- let fV = [if (if (!(hp))
1368- then true
1369- else gp(fb))
1370- then true
1371- else ba("get operation is blocked by admin"), if ((size(fb.payments) == 0))
1389+ else ba("get operation is blocked by admin"), if ((size(fd.payments) == 0))
13721390 then true
13731391 else ba("no payments are expected")]
1374- if ((fV == fV))
1392+ if ((fZ == fZ))
13751393 then {
1376- let fU = bn(ho)
1377- let ab = fb.caller
1378- let ac = fb.transactionId
1379- let eH = eA(toBigInt(0), toBigInt(0), toBigInt(0))
1380- if ((eH == eH))
1394+ let fY = bp(hr)
1395+ let ab = fd.caller
1396+ let ac = fd.transactionId
1397+ let eJ = eC(toBigInt(0), toBigInt(0), toBigInt(0))
1398+ if ((eJ == eJ))
13811399 then {
1382- let hz = invoke(bC, "unstake", [toBase58String(bw), hy], nil)
1383- if ((hz == hz))
1400+ let hB = invoke(bE, "unstake", [toBase58String(by), hA], nil)
1401+ if ((hB == hB))
13841402 then {
1385- let hA = fT(fU, hy, bw, ab, ac)
1386- if ((hA == hA))
1403+ let hC = fX(fY, hA, by, ab, ac)
1404+ if ((hC == hC))
13871405 then {
1388- let fW = hA._5
1389- let hg = hA._4
1390- let fn = hA._3
1391- let et = hA._2
1392- let hr = hA._1
1393- let cf = if (if ((ha > 0))
1394- then (ha > hr)
1406+ let ga = hC._5
1407+ let hj = hC._4
1408+ let fr = hC._3
1409+ let ev = hC._2
1410+ let ht = hC._1
1411+ let ch = if (if ((he > 0))
1412+ then (he > ht)
13951413 else false)
1396- then ba(makeString(["amount to receive is less than ", toString(ha)], ""))
1397- else hr
1398- let hs = invoke(bd, "burn", [hy], [AttachedPayment(bw, hy)])
1399- if ((hs == hs))
1414+ then ba(makeString(["amount to receive is less than ", toString(he)], ""))
1415+ else ht
1416+ let hu = invoke(bd, "burn", [hA], [AttachedPayment(by, hA)])
1417+ if ((hu == hu))
14001418 then {
1401- let gN = cP(ho, (cf + max([0, fn])))
1402- let ht = [ScriptTransfer(fb.caller, cf, fU)]
1403- let hk = if ((fn > 0))
1404- then [ScriptTransfer(be, fn, fU)]
1419+ let gR = cR(hr, (ch + max([0, fr])))
1420+ let hv = [ScriptTransfer(fd.caller, ch, fY)]
1421+ let hn = if ((fr > 0))
1422+ then [ScriptTransfer(be, fr, fY)]
14051423 else nil
1406- let hB = {
1407- let hv = if ((this == be))
1424+ let hD = {
1425+ let hx = if ((this == be))
14081426 then 0
1409- else fn
1410- if (fW)
1411- then $Tuple2(-((cf + hv)), 0)
1412- else $Tuple2(0, -((cf + hv)))
1427+ else fr
1428+ if (ga)
1429+ then $Tuple2(-((ch + hx)), 0)
1430+ else $Tuple2(0, -((ch + hx)))
14131431 }
1414- let eJ = hB._1
1415- let eK = hB._2
1416- let hC = eI(eJ, eK, 0)
1417- let gL = hC._1
1418- let ez = hC._2
1419- let gW = eN(eH, ez)
1420- if ((gW == gW))
1421- then $Tuple2(((((et ++ gN) ++ ht) ++ hk) ++ gL), cf)
1432+ let eL = hD._1
1433+ let eM = hD._2
1434+ let hE = eK(eL, eM, 0)
1435+ let gP = hE._1
1436+ let eB = hE._2
1437+ let ha = eP(eJ, eB)
1438+ if ((ha == ha))
1439+ then $Tuple2(((((ev ++ gR) ++ hv) ++ hn) ++ gP), ch)
14221440 else throw("Strict value is not equal to itself.")
14231441 }
14241442 else throw("Strict value is not equal to itself.")
14341452
14351453
14361454
1437-@Callable(fb)
1455+@Callable(fd)
14381456 func get () = {
1439- let ee = fa(fb)
1440- let dK = ee._1
1441- let dL = ee._2
1442- let fd = ee._3
1443- let dt = ee._4
1444- let dM = ee._5
1445- let gN = cU(dK, dL)
1446- let eH = eA(toBigInt(0), toBigInt(0), toBigInt(0))
1447- if ((eH == eH))
1457+ let eg = fc(fd)
1458+ let dM = eg._1
1459+ let dN = eg._2
1460+ let ff = eg._3
1461+ let dv = eg._4
1462+ let dO = eg._5
1463+ let gR = cW(dM, dN)
1464+ let eJ = eC(toBigInt(0), toBigInt(0), toBigInt(0))
1465+ if ((eJ == eJ))
14481466 then {
1449- let hD = invoke(bd, "burn", [fd], [AttachedPayment(dt, fd)])
1450- if ((hD == hD))
1467+ let hF = invoke(bd, "burn", [ff], [AttachedPayment(dv, ff)])
1468+ if ((hF == hF))
14511469 then {
1452- let hE = eI(-(dK), -(dL), 0)
1453- let gL = hE._1
1454- let ez = hE._2
1455- let gW = eN(eH, ez)
1456- if ((gW == gW))
1457- then ((gN ++ dM) ++ gL)
1470+ let hG = eK(-(dM), -(dN), 0)
1471+ let gP = hG._1
1472+ let eB = hG._2
1473+ let ha = eP(eJ, eB)
1474+ if ((ha == ha))
1475+ then ((gR ++ dO) ++ gP)
14581476 else throw("Strict value is not equal to itself.")
14591477 }
14601478 else throw("Strict value is not equal to itself.")
14641482
14651483
14661484
1467-@Callable(fb)
1468-func getNoLess (hF,hG) = {
1469- let ee = fa(fb)
1470- let dK = ee._1
1471- let dL = ee._2
1472- let fd = ee._3
1473- let dt = ee._4
1474- let dM = ee._5
1475- if ((hF > dK))
1476- then throw(((("noLessThenAmtAsset failed: " + toString(dK)) + " < ") + toString(hF)))
1477- else if ((hG > dL))
1478- then throw(((("noLessThenPriceAsset failed: " + toString(dL)) + " < ") + toString(hG)))
1485+@Callable(fd)
1486+func getNoLess (hH,hI) = {
1487+ let eg = fc(fd)
1488+ let dM = eg._1
1489+ let dN = eg._2
1490+ let ff = eg._3
1491+ let dv = eg._4
1492+ let dO = eg._5
1493+ if ((hH > dM))
1494+ then throw(((("noLessThenAmtAsset failed: " + toString(dM)) + " < ") + toString(hH)))
1495+ else if ((hI > dN))
1496+ then throw(((("noLessThenPriceAsset failed: " + toString(dN)) + " < ") + toString(hI)))
14791497 else {
1480- let gN = cU(dK, dL)
1481- let eH = eA(toBigInt(0), toBigInt(0), toBigInt(0))
1482- if ((eH == eH))
1498+ let gR = cW(dM, dN)
1499+ let eJ = eC(toBigInt(0), toBigInt(0), toBigInt(0))
1500+ if ((eJ == eJ))
14831501 then {
1484- let hD = invoke(bd, "burn", [fd], [AttachedPayment(dt, fd)])
1485- if ((hD == hD))
1502+ let hF = invoke(bd, "burn", [ff], [AttachedPayment(dv, ff)])
1503+ if ((hF == hF))
14861504 then {
1487- let hH = eI(-(dK), -(dL), 0)
1488- let gL = hH._1
1489- let ez = hH._2
1490- let gW = eN(eH, ez)
1491- if ((gW == gW))
1492- then ((gN ++ dM) ++ gL)
1505+ let hJ = eK(-(dM), -(dN), 0)
1506+ let gP = hJ._1
1507+ let eB = hJ._2
1508+ let ha = eP(eJ, eB)
1509+ if ((ha == ha))
1510+ then ((gR ++ dO) ++ gP)
14931511 else throw("Strict value is not equal to itself.")
14941512 }
14951513 else throw("Strict value is not equal to itself.")
15001518
15011519
15021520
1503-@Callable(fb)
1504-func unstakeAndGet (cf) = {
1505- let hI = if ((size(fb.payments) != 0))
1521+@Callable(fd)
1522+func unstakeAndGet (ch) = {
1523+ let hK = if ((size(fd.payments) != 0))
15061524 then throw("No payments are expected")
15071525 else true
1508- if ((hI == hI))
1526+ if ((hK == hK))
15091527 then {
1510- let di = bk()
1511- let dv = fromBase58String(di[q])
1512- let eH = eA(toBigInt(0), toBigInt(0), toBigInt(0))
1513- if ((eH == eH))
1528+ let dk = bm()
1529+ let dx = fromBase58String(dk[q])
1530+ let eJ = eC(toBigInt(0), toBigInt(0), toBigInt(0))
1531+ if ((eJ == eJ))
15141532 then {
1515- let hz = invoke(bC, "unstake", [toBase58String(dv), cf], nil)
1516- if ((hz == hz))
1533+ let hB = invoke(bE, "unstake", [toBase58String(dx), ch], nil)
1534+ if ((hB == hB))
15171535 then {
1518- let ee = dr(toBase58String(fb.transactionId), toBase58String(dv), cf, fb.caller)
1519- let dK = ee._1
1520- let dL = ee._2
1521- let dy = parseIntValue(ee._9)
1522- let dM = ee._10
1523- let gN = cU(dK, dL)
1524- let hJ = if (if (bi())
1525- then true
1526- else (dy == n))
1527- then throw(("Get operation is blocked by admin. Status = " + toString(dy)))
1536+ let eg = dt(toBase58String(fd.transactionId), toBase58String(dx), ch, fd.caller)
1537+ let dM = eg._1
1538+ let dN = eg._2
1539+ let dA = parseIntValue(eg._9)
1540+ let dO = eg._10
1541+ let gR = cW(dM, dN)
1542+ let fg = if (!(bj(fd.caller)))
1543+ then if (bk())
1544+ then true
1545+ else (bx == n)
1546+ else false
1547+ let hL = if (fg)
1548+ then throw(("Get operation is blocked by admin. Status = " + toString(dA)))
15281549 else true
1529- if ((hJ == hJ))
1550+ if ((hL == hL))
15301551 then {
1531- let hD = invoke(bd, "burn", [cf], [AttachedPayment(dv, cf)])
1532- if ((hD == hD))
1552+ let hF = invoke(bd, "burn", [ch], [AttachedPayment(dx, ch)])
1553+ if ((hF == hF))
15331554 then {
1534- let hK = eI(-(dK), -(dL), 0)
1535- let gL = hK._1
1536- let ez = hK._2
1537- let gW = eN(eH, ez)
1538- if ((gW == gW))
1539- then ((gN ++ dM) ++ gL)
1555+ let hM = eK(-(dM), -(dN), 0)
1556+ let gP = hM._1
1557+ let eB = hM._2
1558+ let ha = eP(eJ, eB)
1559+ if ((ha == ha))
1560+ then ((gR ++ dO) ++ gP)
15401561 else throw("Strict value is not equal to itself.")
15411562 }
15421563 else throw("Strict value is not equal to itself.")
15521573
15531574
15541575
1555-@Callable(fb)
1556-func unstakeAndGetNoLess (hy,hL,hG) = {
1557- let hp = if (bi())
1576+@Callable(fd)
1577+func unstakeAndGetNoLess (hA,hN,hI) = {
1578+ let fg = if (!(bj(fd.caller)))
1579+ then if (bk())
1580+ then true
1581+ else (bx == n)
1582+ else false
1583+ let fZ = [if (!(fg))
15581584 then true
1559- else (bv == n)
1560- let fV = [if (!(hp))
1561- then true
1562- else throw("get operation is blocked by admin"), if ((size(fb.payments) == 0))
1585+ else throw("get operation is blocked by admin"), if ((size(fd.payments) == 0))
15631586 then true
15641587 else throw("no payments are expected")]
1565- if ((fV == fV))
1588+ if ((fZ == fZ))
15661589 then {
1567- let eH = eA(toBigInt(0), toBigInt(0), toBigInt(0))
1568- if ((eH == eH))
1590+ let eJ = eC(toBigInt(0), toBigInt(0), toBigInt(0))
1591+ if ((eJ == eJ))
15691592 then {
1570- let hz = invoke(bC, "unstake", [toBase58String(bw), hy], nil)
1571- if ((hz == hz))
1593+ let hB = invoke(bE, "unstake", [toBase58String(by), hA], nil)
1594+ if ((hB == hB))
15721595 then {
1573- let ee = dr(toBase58String(fb.transactionId), toBase58String(bw), hy, fb.caller)
1574- let dK = ee._1
1575- let dL = ee._2
1576- let dM = ee._10
1577- let gN = cU(dK, dL)
1578- let hM = [if ((dK >= hL))
1596+ let eg = dt(toBase58String(fd.transactionId), toBase58String(by), hA, fd.caller)
1597+ let dM = eg._1
1598+ let dN = eg._2
1599+ let dO = eg._10
1600+ let gR = cW(dM, dN)
1601+ let hO = [if ((dM >= hN))
15791602 then true
1580- else throw(makeString(["amount asset amount to receive is less than ", toString(hL)], "")), if ((dL >= hG))
1603+ else throw(makeString(["amount asset amount to receive is less than ", toString(hN)], "")), if ((dN >= hI))
15811604 then true
1582- else throw(makeString(["price asset amount to receive is less than ", toString(hG)], ""))]
1583- if ((hM == hM))
1605+ else throw(makeString(["price asset amount to receive is less than ", toString(hI)], ""))]
1606+ if ((hO == hO))
15841607 then {
1585- let hD = invoke(bd, "burn", [hy], [AttachedPayment(bw, hy)])
1586- if ((hD == hD))
1608+ let hF = invoke(bd, "burn", [hA], [AttachedPayment(by, hA)])
1609+ if ((hF == hF))
15871610 then {
1588- let hN = eI(-(dK), -(dL), 0)
1589- let gL = hN._1
1590- let ez = hN._2
1591- let gW = eN(eH, ez)
1592- if ((gW == gW))
1593- then ((gN ++ dM) ++ gL)
1611+ let hP = eK(-(dM), -(dN), 0)
1612+ let gP = hP._1
1613+ let eB = hP._2
1614+ let ha = eP(eJ, eB)
1615+ if ((ha == ha))
1616+ then ((gR ++ dO) ++ gP)
15941617 else throw("Strict value is not equal to itself.")
15951618 }
15961619 else throw("Strict value is not equal to itself.")
16061629
16071630
16081631
1609-@Callable(fb)
1610-func activate (hO,hP) = if ((toString(fb.caller) != toString(bd)))
1632+@Callable(fd)
1633+func activate (hQ,hR) = if ((toString(fd.caller) != toString(bd)))
16111634 then throw("permissions denied")
1612- else $Tuple2([StringEntry(ae(), hO), StringEntry(af(), hP)], "success")
1635+ else $Tuple2([StringEntry(ae(), hQ), StringEntry(af(), hR)], "success")
16131636
16141637
16151638
1616-@Callable(fb)
1639+@Callable(fd)
16171640 func refreshKLp () = {
1618- let hQ = valueOrElse(getInteger(ak), 0)
1619- let hR = if (((height - hQ) >= an))
1641+ let hS = valueOrElse(getInteger(ak), 0)
1642+ let hT = if (((height - hS) >= an))
16201643 then unit
16211644 else ba(makeString([toString(an), " blocks have not passed since the previous call"], ""))
1622- if ((hR == hR))
1645+ if ((hT == hT))
16231646 then {
1624- let eU = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, aj), "0")), bc("invalid kLp"))
1625- let hS = eI(0, 0, 0)
1626- let hT = hS._1
1627- let ez = hS._2
1628- let eL = if ((eU != ez))
1629- then hT
1647+ let eW = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, aj), "0")), bc("invalid kLp"))
1648+ let hU = eK(0, 0, 0)
1649+ let hV = hU._1
1650+ let eB = hU._2
1651+ let eN = if ((eW != eB))
1652+ then hV
16301653 else ba("nothing to refresh")
1631- $Tuple2(eL, toString(ez))
1654+ $Tuple2(eN, toString(eB))
16321655 }
16331656 else throw("Strict value is not equal to itself.")
16341657 }
16351658
16361659
16371660
1638-@Callable(fb)
1639-func getPoolConfigWrapperREADONLY () = $Tuple2(nil, bk())
1661+@Callable(fd)
1662+func getPoolConfigWrapperREADONLY () = $Tuple2(nil, bm())
16401663
16411664
16421665
1643-@Callable(fb)
1644-func getAccBalanceWrapperREADONLY (ap) = $Tuple2(nil, bT(ap))
1666+@Callable(fd)
1667+func getAccBalanceWrapperREADONLY (ap) = $Tuple2(nil, bV(ap))
16451668
16461669
16471670
1648-@Callable(fb)
1649-func calcPricesWrapperREADONLY (dc,dd,dh) = {
1650- let dq = dg(dc, dd, dh)
1651- $Tuple2(nil, [toString(dq[0]), toString(dq[1]), toString(dq[2])])
1671+@Callable(fd)
1672+func calcPricesWrapperREADONLY (de,df,dj) = {
1673+ let ds = di(de, df, dj)
1674+ $Tuple2(nil, [toString(ds[0]), toString(ds[1]), toString(ds[2])])
16521675 }
16531676
16541677
16551678
1656-@Callable(fb)
1679+@Callable(fd)
16571680 func toX18WrapperREADONLY (E,F) = $Tuple2(nil, toString(D(E, F)))
16581681
16591682
16601683
1661-@Callable(fb)
1684+@Callable(fd)
16621685 func fromX18WrapperREADONLY (I,J) = $Tuple2(nil, H(parseBigIntValue(I), J))
16631686
16641687
16651688
1666-@Callable(fb)
1667-func calcPriceBigIntWrapperREADONLY (bX,bY) = $Tuple2(nil, toString(bW(parseBigIntValue(bX), parseBigIntValue(bY))))
1689+@Callable(fd)
1690+func calcPriceBigIntWrapperREADONLY (bZ,ca) = $Tuple2(nil, toString(bY(parseBigIntValue(bZ), parseBigIntValue(ca))))
16681691
16691692
16701693
1671-@Callable(fb)
1672-func estimatePutOperationWrapperREADONLY (ds,dO,dP,dQ,dR,dS,ab,dT,dU) = $Tuple2(nil, dN(ds, dO, dP, dQ, dR, dS, ab, dT, dU))
1694+@Callable(fd)
1695+func estimatePutOperationWrapperREADONLY (du,dQ,dR,dS,dT,dU,ab,dV,dW) = $Tuple2(nil, dP(du, dQ, dR, dS, dT, dU, ab, dV, dW))
16731696
16741697
16751698
1676-@Callable(fb)
1677-func estimateGetOperationWrapperREADONLY (ds,dt,du,ab) = {
1678- let ee = dr(ds, dt, du, addressFromStringValue(ab))
1679- $Tuple2(nil, $Tuple10(ee._1, ee._2, ee._3, ee._4, ee._5, ee._6, ee._7, toString(ee._8), ee._9, ee._10))
1699+@Callable(fd)
1700+func estimateGetOperationWrapperREADONLY (du,dv,dw,ab) = {
1701+ let eg = dt(du, dv, dw, addressFromStringValue(ab))
1702+ $Tuple2(nil, $Tuple10(eg._1, eg._2, eg._3, eg._4, eg._5, eg._6, eg._7, toString(eg._8), eg._9, eg._10))
16801703 }
16811704
16821705
16831706
1684-@Callable(fb)
1707+@Callable(fd)
16851708 func statsREADONLY () = {
1686- let di = bk()
1687- let dv = fromBase58String(di[q])
1688- let hU = di[r]
1689- let hV = di[s]
1690- let dX = di[v]
1691- let dY = di[w]
1692- let dj = parseIntValue(di[t])
1693- let dk = parseIntValue(di[u])
1694- let hW = valueOrErrorMessage(assetInfo(dv), (("Asset " + toBase58String(dv)) + " doesn't exist")).quantity
1695- let hX = bT(hU)
1696- let hY = bT(hV)
1697- let hZ = if ((hW == 0))
1709+ let dk = bm()
1710+ let dx = fromBase58String(dk[q])
1711+ let hW = dk[r]
1712+ let hX = dk[s]
1713+ let dZ = dk[v]
1714+ let ea = dk[w]
1715+ let dl = parseIntValue(dk[t])
1716+ let dm = parseIntValue(dk[u])
1717+ let hY = valueOrErrorMessage(assetInfo(dx), (("Asset " + toBase58String(dx)) + " doesn't exist")).quantity
1718+ let hZ = bV(hW)
1719+ let ia = bV(hX)
1720+ let ib = if ((hY == 0))
16981721 then [e, e, e]
1699- else dg(hX, hY, hW)
1700- let dF = 0
1701- let ia = H(hZ[1], b)
1702- let ib = H(hZ[2], b)
1703- let ic = value(getInteger(bd, aD(toString(this))))
1704- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(hX), toString(hY), toString(hW), toString(dF), toString(ia), toString(ib), toString(ic)], j))
1722+ else di(hZ, ia, hY)
1723+ let dH = 0
1724+ let ic = H(ib[1], b)
1725+ let id = H(ib[2], b)
1726+ let ie = value(getInteger(bd, aD(toString(this))))
1727+ $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))
17051728 }
17061729
17071730
17081731
1709-@Callable(fb)
1710-func evaluatePutByAmountAssetREADONLY (dP) = {
1711- let di = bk()
1712- let dv = fromBase58String(di[q])
1713- let dV = di[r]
1714- let dw = fromBase58String(dV)
1715- let dW = di[s]
1716- let dx = fromBase58String(dW)
1717- let dj = parseIntValue(di[t])
1718- let dk = parseIntValue(di[u])
1719- let dy = di[p]
1720- let hW = valueOrErrorMessage(assetInfo(dv), (("Asset " + toBase58String(dv)) + " doesn't exist")).quantity
1721- let hX = bT(dV)
1722- let hY = bT(dW)
1723- let de = D(hX, dj)
1724- let df = D(hY, dk)
1725- let dE = if ((hW == 0))
1732+@Callable(fd)
1733+func evaluatePutByAmountAssetREADONLY (dR) = {
1734+ let dk = bm()
1735+ let dx = fromBase58String(dk[q])
1736+ let dX = dk[r]
1737+ let dy = fromBase58String(dX)
1738+ let dY = dk[s]
1739+ let dz = fromBase58String(dY)
1740+ let dl = parseIntValue(dk[t])
1741+ let dm = parseIntValue(dk[u])
1742+ let dA = dk[p]
1743+ let hY = valueOrErrorMessage(assetInfo(dx), (("Asset " + toBase58String(dx)) + " doesn't exist")).quantity
1744+ let hZ = bV(dX)
1745+ let ia = bV(dY)
1746+ let dg = D(hZ, dl)
1747+ let dh = D(ia, dm)
1748+ let dG = if ((hY == 0))
17261749 then e
1727- else bW(df, de)
1728- let eb = D(dP, dj)
1729- let ec = fraction(eb, dE, d)
1730- let dR = H(ec, dk)
1731- let fh = dN("", 500000, dP, dw, dR, dx, "", true, false)
1732- let em = fh._1
1733- let id = fh._3
1734- let dA = fh._4
1735- let dC = fh._5
1736- let dz = fh._6
1737- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(em), toString(H(dE, b)), toString(dA), toString(dC), toString(dz), dy, toString(dP), toString(dR)], j))
1750+ else bY(dh, dg)
1751+ let ed = D(dR, dl)
1752+ let ee = fraction(ed, dG, d)
1753+ let dT = H(ee, dm)
1754+ let fk = dP("", 500000, dR, dy, dT, dz, "", true, false)
1755+ let eo = fk._1
1756+ let if = fk._3
1757+ let dC = fk._4
1758+ let dE = fk._5
1759+ let dB = fk._6
1760+ $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))
17381761 }
17391762
17401763
17411764
1742-@Callable(fb)
1743-func evaluatePutByPriceAssetREADONLY (dR) = {
1744- let di = bk()
1745- let dv = fromBase58String(di[q])
1746- let dV = di[r]
1747- let dw = fromBase58String(dV)
1748- let dW = di[s]
1749- let dx = fromBase58String(dW)
1750- let dj = parseIntValue(di[t])
1751- let dk = parseIntValue(di[u])
1752- let dy = di[p]
1753- let hW = valueOrErrorMessage(assetInfo(dv), (("Asset " + toBase58String(dv)) + " doesn't exist")).quantity
1754- let ie = bT(dV)
1755- let if = bT(dW)
1756- let ig = D(ie, dj)
1757- let ih = D(if, dk)
1758- let dE = if ((hW == 0))
1765+@Callable(fd)
1766+func evaluatePutByPriceAssetREADONLY (dT) = {
1767+ let dk = bm()
1768+ let dx = fromBase58String(dk[q])
1769+ let dX = dk[r]
1770+ let dy = fromBase58String(dX)
1771+ let dY = dk[s]
1772+ let dz = fromBase58String(dY)
1773+ let dl = parseIntValue(dk[t])
1774+ let dm = parseIntValue(dk[u])
1775+ let dA = dk[p]
1776+ let hY = valueOrErrorMessage(assetInfo(dx), (("Asset " + toBase58String(dx)) + " doesn't exist")).quantity
1777+ let ig = bV(dX)
1778+ let ih = bV(dY)
1779+ let ii = D(ig, dl)
1780+ let ij = D(ih, dm)
1781+ let dG = if ((hY == 0))
17591782 then e
1760- else bW(ih, ig)
1761- let ec = D(dR, dk)
1762- let eb = fraction(ec, d, dE)
1763- let dP = H(eb, dj)
1764- let fh = dN("", 500000, dP, dw, dR, dx, "", true, false)
1765- let em = fh._1
1766- let id = fh._3
1767- let dA = fh._4
1768- let dC = fh._5
1769- let dz = fh._6
1770- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(em), toString(H(dE, b)), toString(dA), toString(dC), toString(dz), dy, toString(dP), toString(dR)], j))
1783+ else bY(ij, ii)
1784+ let ee = D(dT, dm)
1785+ let ed = fraction(ee, d, dG)
1786+ let dR = H(ed, dl)
1787+ let fk = dP("", 500000, dR, dy, dT, dz, "", true, false)
1788+ let eo = fk._1
1789+ let if = fk._3
1790+ let dC = fk._4
1791+ let dE = fk._5
1792+ let dB = fk._6
1793+ $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))
17711794 }
17721795
17731796
17741797
1775-@Callable(fb)
1776-func evaluateGetREADONLY (ii,ij) = {
1777- let ee = dr("", ii, ij, this)
1778- let dK = ee._1
1779- let dL = ee._2
1780- let dA = ee._5
1781- let dC = ee._6
1782- let dz = ee._7
1783- let dF = ee._8
1784- let dy = parseIntValue(ee._9)
1785- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(dK), toString(dL), toString(dA), toString(dC), toString(dz), toString(dF), toString(dy)], j))
1798+@Callable(fd)
1799+func evaluateGetREADONLY (ik,il) = {
1800+ let eg = dt("", ik, il, this)
1801+ let dM = eg._1
1802+ let dN = eg._2
1803+ let dC = eg._5
1804+ let dE = eg._6
1805+ let dB = eg._7
1806+ let dH = eg._8
1807+ let dA = parseIntValue(eg._9)
1808+ $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))
17861809 }
17871810
17881811
1789-@Verifier(ik)
1790-func il () = {
1791- let im = {
1792- let aQ = gn()
1812+@Verifier(im)
1813+func in () = {
1814+ let io = {
1815+ let aQ = gr()
17931816 if ($isInstanceOf(aQ, "ByteVector"))
17941817 then {
1795- let gq = aQ
1796- gq
1818+ let gu = aQ
1819+ gu
17971820 }
17981821 else if ($isInstanceOf(aQ, "Unit"))
1799- then ik.senderPublicKey
1822+ then im.senderPublicKey
18001823 else throw("Match error")
18011824 }
1802- let aQ = ik
1825+ let aQ = im
18031826 if ($isInstanceOf(aQ, "Order"))
18041827 then {
1805- let eQ = aQ
1806- let in = bj()
1807- let io = if (eM())
1828+ let eS = aQ
1829+ let ip = bl()
1830+ let iq = if (eO())
18081831 then $Tuple2(true, "")
1809- else eP(eQ)
1810- let aK = io._1
1811- let aL = io._2
1812- let aM = sigVerify(eQ.bodyBytes, eQ.proofs[0], eQ.senderPublicKey)
1813- let aN = sigVerify(eQ.bodyBytes, eQ.proofs[1], in)
1832+ else eR(eS)
1833+ let aK = iq._1
1834+ let aL = iq._2
1835+ let aM = sigVerify(eS.bodyBytes, eS.proofs[0], eS.senderPublicKey)
1836+ let aN = sigVerify(eS.bodyBytes, eS.proofs[1], ip)
18141837 if (if (if (aK)
18151838 then aM
18161839 else false)
18221845 else if ($isInstanceOf(aQ, "SetScriptTransaction"))
18231846 then {
18241847 let aV = aQ
1825- if (sigVerify(ik.bodyBytes, ik.proofs[0], im))
1848+ if (sigVerify(im.bodyBytes, im.proofs[0], io))
18261849 then true
18271850 else {
1828- let ip = blake2b256(value(aV.script))
1829- let iq = fromBase64String(value(getString(bd, aF())))
1830- let ir = scriptHash(this)
1831- if ((iq == ip))
1832- then (ir != ip)
1851+ let ir = blake2b256(value(aV.script))
1852+ let is = fromBase64String(value(getString(bd, aF())))
1853+ let it = scriptHash(this)
1854+ if ((is == ir))
1855+ then (it != ir)
18331856 else false
18341857 }
18351858 }
1836- else sigVerify(ik.bodyBytes, ik.proofs[0], im)
1859+ else sigVerify(im.bodyBytes, im.proofs[0], io)
18371860 }
18381861
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
238-func bi () = valueOrElse(getBoolean(bd, aC()), false)
238+func bi (aX) = makeString(["%s%s", "whitelisted", toString(aX)], j)
239239
240240
241-func bj () = fromBase58String(aW(bd, au()))
241+func bj (aX) = valueOrElse(getBoolean(bd, bi(aX)), false)
242242
243243
244-func bk () = {
245- let bl = aW(this, ae())
246- let bm = aW(this, af())
247- let az = aZ(bd, aA(bm))
248- let ay = aZ(bd, aA(bl))
244+func bk () = valueOrElse(getBoolean(bd, aC()), false)
245+
246+
247+func bl () = fromBase58String(aW(bd, au()))
248+
249+
250+func bm () = {
251+ let bn = aW(this, ae())
252+ let bo = aW(this, af())
253+ let az = aZ(bd, aA(bo))
254+ let ay = aZ(bd, aA(bn))
249255 split(aW(bd, ax(toString(ay), toString(az))), j)
250256 }
251257
252258
253-func bn (bo) = if ((bo == i))
259+func bp (bq) = if ((bq == i))
254260 then unit
255- else fromBase58String(bo)
261+ else fromBase58String(bq)
256262
257263
258-func bp (bo) = if ((bo == unit))
264+func br (bq) = if ((bq == unit))
259265 then i
260- else toBase58String(value(bo))
266+ else toBase58String(value(bq))
261267
262268
263-func bq (br) = $Tuple7(addressFromStringValue(br[o]), parseIntValue(br[p]), fromBase58String(br[q]), bn(br[r]), bn(br[s]), parseIntValue(br[t]), parseIntValue(br[u]))
269+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]))
264270
265271
266-let bs = bq(bk())
272+let bu = bs(bm())
267273
268-let bt = bs
274+let bv = bu
269275
270-let bu = bt._1
276+let bw = bv._1
271277
272-let bv = bt._2
278+let bx = bv._2
273279
274-let bw = bt._3
280+let by = bv._3
275281
276-let bx = bt._4
282+let bz = bv._4
277283
278-let by = bt._5
284+let bA = bv._5
279285
280-let bz = bt._6
286+let bB = bv._6
281287
282-let bA = bt._7
288+let bC = bv._7
283289
284-func bB () = split(aW(bd, at()), j)
290+func bD () = split(aW(bd, at()), j)
285291
286292
287-let bC = valueOrErrorMessage(addressFromString(bB()[B]), "incorrect staking address")
293+let bE = valueOrErrorMessage(addressFromString(bD()[B]), "incorrect staking address")
288294
289-let bD = valueOrErrorMessage(addressFromString(bB()[C]), "incorrect staking address")
295+let bF = valueOrErrorMessage(addressFromString(bD()[C]), "incorrect staking address")
290296
291-func bE (bF,bG,bH,bI,bJ,bK,bL,bM,bN,bO) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bF), toString(bG), toString(bH), toString(bI), toString(bJ), toString(bK), toString(bL), toString(bM), toString(bN), toString(bO)], j)
297+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)
292298
293299
294-func bP (bQ,bR,bS,bI,bL,bM) = makeString(["%d%d%d%d%d%d", toString(bQ), toString(bR), toString(bS), toString(bI), toString(bL), toString(bM)], j)
300+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)
295301
296302
297-func bT (ap) = {
298- let bU = if ((ap == "WAVES"))
303+func bV (ap) = {
304+ let bW = if ((ap == "WAVES"))
299305 then wavesBalance(this).available
300306 else assetBalance(this, fromBase58String(ap))
301- let bV = ((bU + ar(ap)) - as(ap))
302- max([0, bV])
307+ let bX = ((bW + ar(ap)) - as(ap))
308+ max([0, bX])
303309 }
304310
305311
306-func bW (bX,bY) = fraction(bX, d, bY)
312+func bY (bZ,ca) = fraction(bZ, d, ca)
307313
308314
309-func bZ (bX,bY,L) = fraction(bX, d, bY, L)
315+func cb (bZ,ca,L) = fraction(bZ, d, ca, L)
310316
311317
312-func ca (cb) = {
313- let cc = invoke(cb, "getRate", nil, nil)
314- if ((cc == cc))
318+func cc (cd) = {
319+ let ce = invoke(cd, "getRate", nil, nil)
320+ if ((ce == ce))
315321 then {
316- let aQ = cc
322+ let aQ = ce
317323 if ($isInstanceOf(aQ, "Int"))
318324 then {
319- let cd = aQ
320- cd
325+ let cf = aQ
326+ cf
321327 }
322328 else ba("proxy.getRate() unexpected value")
323329 }
324330 else throw("Strict value is not equal to itself.")
325331 }
326332
327333
328-func ce (ap,cf,cg,cb) = {
329- let ch = ar(ap)
330- if ((ch == ch))
334+func cg (ap,ch,ci,cd) = {
335+ let cj = ar(ap)
336+ if ((cj == cj))
331337 then {
332- let ci = as(cg)
333- if ((ci == ci))
338+ let ck = as(ci)
339+ if ((ck == ck))
334340 then {
335- let cj = bn(ap)
336- if ((cf > 0))
341+ let cl = bp(ap)
342+ if ((ch > 0))
337343 then {
338- let ck = invoke(cb, "deposit", nil, [AttachedPayment(cj, cf)])
339- if ((ck == ck))
344+ let cm = invoke(cd, "deposit", nil, [AttachedPayment(cl, ch)])
345+ if ((cm == cm))
340346 then {
341- let aQ = ck
347+ let aQ = cm
342348 if ($isInstanceOf(aQ, "Int"))
343349 then {
344- let cl = aQ
345- let cm = (ch + cf)
346- let cn = (ci + cl)
347-[IntegerEntry(ao(ap), cm), IntegerEntry(aq(cg), cn)]
350+ let cn = aQ
351+ let co = (cj + ch)
352+ let cp = (ck + cn)
353+[IntegerEntry(ao(ap), co), IntegerEntry(aq(ci), cp)]
348354 }
349355 else nil
350356 }
351357 else throw("Strict value is not equal to itself.")
352358 }
353359 else nil
354360 }
355361 else throw("Strict value is not equal to itself.")
356362 }
357363 else throw("Strict value is not equal to itself.")
358364 }
359365
360366
361-func co (ap,cf,cg,cb,cp,cq) = {
362- let ch = ar(ap)
363- if ((ch == ch))
367+func cq (ap,ch,ci,cd,cr,cs) = {
368+ let cj = ar(ap)
369+ if ((cj == cj))
364370 then {
365- let ci = as(cg)
366- if ((ci == ci))
371+ let ck = as(ci)
372+ if ((ck == ck))
367373 then {
368- let cr = ca(cb)
369- if ((cr == cr))
374+ let ct = cc(cd)
375+ if ((ct == ct))
370376 then {
371- let cs = fraction(cp, ch, ci)
372- let ct = bn(cg)
373- let cu = fraction(cp, cf, cs)
374- let cv = fraction(cp, cf, cr)
375- let cw = max([0, (cu - cv)])
376- if ((cv > 0))
377+ let cu = fraction(cr, cj, ck)
378+ let cv = bp(ci)
379+ let cw = fraction(cr, ch, cu)
380+ let cx = fraction(cr, ch, ct)
381+ let cy = max([0, (cw - cx)])
382+ if ((cx > 0))
377383 then {
378- let cx = invoke(cb, "withdraw", nil, [AttachedPayment(ct, cv)])
379- if ((cx == cx))
384+ let cz = invoke(cd, "withdraw", nil, [AttachedPayment(cv, cx)])
385+ if ((cz == cz))
380386 then {
381- let aQ = cx
387+ let aQ = cz
382388 if ($isInstanceOf(aQ, "Int"))
383389 then {
384- let cy = aQ
385- let cm = (ch - cy)
386- let cn = ((ci - cv) - cw)
387-[IntegerEntry(ao(ap), cm), IntegerEntry(aq(cg), cn), ScriptTransfer(cq, cw, bn(cg))]
390+ let cA = aQ
391+ let co = (cj - cA)
392+ let cp = ((ck - cx) - cy)
393+[IntegerEntry(ao(ap), co), IntegerEntry(aq(ci), cp), ScriptTransfer(cs, cy, bp(ci))]
388394 }
389395 else nil
390396 }
391397 else throw("Strict value is not equal to itself.")
392398 }
393399 else nil
394400 }
395401 else throw("Strict value is not equal to itself.")
396402 }
397403 else throw("Strict value is not equal to itself.")
398404 }
399405 else throw("Strict value is not equal to itself.")
400406 }
401407
402408
403-func cz (ap) = {
409+func cB (ap) = {
404410 let aQ = invoke(bd, "getPoolLeaseConfigREADONLY", [toString(this), ap], nil)
405411 if ($isInstanceOf(aQ, "(Boolean, Int, Int, String, String, Int, String)"))
406412 then {
407413 let aR = aQ
408414 aR
409415 }
410416 else ba((("[" + ap) + "] getLeaseProxyConfig() error"))
411417 }
412418
413419
414-func cA (cB,ap,cg,cC,cb,cp,cq) = {
415- let ch = ar(ap)
416- if ((ch == ch))
420+func cC (cD,ap,ci,cE,cd,cr,cs) = {
421+ let cj = ar(ap)
422+ if ((cj == cj))
417423 then {
418- let ci = as(cg)
419- if ((ci == ci))
424+ let ck = as(ci)
425+ if ((ck == ck))
420426 then {
421- let cD = max([0, (bT(ap) - cC)])
422- let cE = fraction(cB, cD, 100)
423- let cF = (ch - cE)
424- if ((cF == 0))
427+ let cF = max([0, (bV(ap) - cE)])
428+ let cG = fraction(cD, cF, 100)
429+ let cH = (cj - cG)
430+ if ((cH == 0))
425431 then nil
426- else if ((0 > cF))
432+ else if ((0 > cH))
427433 then {
428- let cG = -(cF)
429- ce(ap, cG, cg, cb)
434+ let cI = -(cH)
435+ cg(ap, cI, ci, cd)
430436 }
431437 else {
432- let cH = cF
433- co(ap, cH, cg, cb, cp, cq)
438+ let cJ = cH
439+ cq(ap, cJ, ci, cd, cr, cs)
434440 }
435441 }
436442 else throw("Strict value is not equal to itself.")
437443 }
438444 else throw("Strict value is not equal to itself.")
439445 }
440446
441447
442-func cI (ap) = {
443- let cJ = cz(ap)
444- let cK = cJ._1
445- let cL = cJ._2
446- let cC = cJ._3
447- let cM = cJ._4
448- let cN = cJ._5
449- let cp = cJ._6
450- let cO = cJ._7
451- if (cK)
452- then cA(cL, ap, cN, cC, addressFromStringValue(cM), cp, addressFromStringValue(cO))
448+func cK (ap) = {
449+ let cL = cB(ap)
450+ let cM = cL._1
451+ let cN = cL._2
452+ let cE = cL._3
453+ let cO = cL._4
454+ let cP = cL._5
455+ let cr = cL._6
456+ let cQ = cL._7
457+ if (cM)
458+ then cC(cN, ap, cP, cE, addressFromStringValue(cO), cr, addressFromStringValue(cQ))
453459 else nil
454460 }
455461
456462
457-func cP (ap,cQ) = {
458- let cR = cz(ap)
459- let cK = cR._1
460- let cL = cR._2
461- let cC = cR._3
462- let cM = cR._4
463- let cN = cR._5
464- let cp = cR._6
465- let cO = cR._7
466- if (cK)
463+func cR (ap,cS) = {
464+ let cT = cB(ap)
465+ let cM = cT._1
466+ let cN = cT._2
467+ let cE = cT._3
468+ let cO = cT._4
469+ let cP = cT._5
470+ let cr = cT._6
471+ let cQ = cT._7
472+ if (cM)
467473 then {
468- let cS = max([0, ((bT(ap) - cQ) - cC)])
469- if ((cS == cS))
474+ let cU = max([0, ((bV(ap) - cS) - cE)])
475+ if ((cU == cU))
470476 then {
471- let cm = fraction(cL, cS, 100)
472- if ((cm == cm))
477+ let co = fraction(cN, cU, 100)
478+ if ((co == co))
473479 then {
474- let cT = (ar(ap) - cm)
475- if ((cT == cT))
476- then if ((0 > cT))
477- then ce(ap, -(cT), cN, addressFromStringValue(cM))
478- else co(ap, cT, cN, addressFromStringValue(cM), cp, addressFromStringValue(cO))
480+ let cV = (ar(ap) - co)
481+ if ((cV == cV))
482+ then if ((0 > cV))
483+ then cg(ap, -(cV), cP, addressFromStringValue(cO))
484+ else cq(ap, cV, cP, addressFromStringValue(cO), cr, addressFromStringValue(cQ))
479485 else throw("Strict value is not equal to itself.")
480486 }
481487 else throw("Strict value is not equal to itself.")
482488 }
483489 else throw("Strict value is not equal to itself.")
484490 }
485491 else nil
486492 }
487493
488494
489-func cU (cV,cW) = {
490- let cX = cP(aW(this, ae()), cV)
491- let cY = cP(aW(this, af()), cW)
492- (cX ++ cY)
495+func cW (cX,cY) = {
496+ let cZ = cR(aW(this, ae()), cX)
497+ let da = cR(aW(this, af()), cY)
498+ (cZ ++ da)
493499 }
494500
495501
496-func cZ (da,db,dc,dd) = {
497- let de = D(dc, da)
498- let df = D(dd, db)
499- bW(df, de)
502+func db (dc,dd,de,df) = {
503+ let dg = D(de, dc)
504+ let dh = D(df, dd)
505+ bY(dh, dg)
500506 }
501507
502508
503-func dg (dc,dd,dh) = {
504- let di = bk()
505- let dj = parseIntValue(di[t])
506- let dk = parseIntValue(di[u])
507- let dl = cZ(dj, dk, dc, dd)
508- let bY = D(dc, dj)
509- let bX = D(dd, dk)
510- let dm = D(dh, b)
511- let dn = bW(bY, dm)
512- let do = bW(bX, dm)
513-[dl, dn, do]
509+func di (de,df,dj) = {
510+ let dk = bm()
511+ let dl = parseIntValue(dk[t])
512+ let dm = parseIntValue(dk[u])
513+ let dn = db(dl, dm, de, df)
514+ let ca = D(de, dl)
515+ let bZ = D(df, dm)
516+ let do = D(dj, b)
517+ let dp = bY(ca, do)
518+ let dq = bY(bZ, do)
519+[dn, dp, dq]
514520 }
515521
516522
517-func dp (dc,dd,dh) = {
518- let dq = dg(dc, dd, dh)
519-[H(dq[0], b), H(dq[1], b), H(dq[2], b)]
523+func dr (de,df,dj) = {
524+ let ds = di(de, df, dj)
525+[H(ds[0], b), H(ds[1], b), H(ds[2], b)]
520526 }
521527
522528
523-func dr (ds,dt,du,ab) = {
524- let di = bk()
525- let dv = di[q]
526- let dw = di[r]
527- let dx = di[s]
528- let da = parseIntValue(di[t])
529- let db = parseIntValue(di[u])
530- let dy = di[p]
531- let dz = valueOrErrorMessage(assetInfo(fromBase58String(dv)), (("Asset " + dv) + " doesn't exist")).quantity
532- if ((dv != dt))
529+func dt (du,dv,dw,ab) = {
530+ let dk = bm()
531+ let dx = dk[q]
532+ let dy = dk[r]
533+ let dz = dk[s]
534+ let dc = parseIntValue(dk[t])
535+ let dd = parseIntValue(dk[u])
536+ let dA = dk[p]
537+ let dB = valueOrErrorMessage(assetInfo(fromBase58String(dx)), (("Asset " + dx) + " doesn't exist")).quantity
538+ if ((dx != dv))
533539 then throw("Invalid asset passed.")
534540 else {
535- let dA = bT(dw)
536- let dB = D(dA, da)
537- let dC = bT(dx)
538- let dD = D(dC, db)
539- let dE = bW(dD, dB)
540- let dF = H(dE, b)
541- let dG = D(du, b)
542- let dH = D(dz, b)
543- let dI = fraction(dB, dG, dH)
544- let dJ = fraction(dD, dG, dH)
545- let dK = K(dI, da, FLOOR)
546- let dL = K(dJ, db, FLOOR)
547- let dM = if ((ds == ""))
541+ let dC = bV(dy)
542+ let dD = D(dC, dc)
543+ let dE = bV(dz)
544+ let dF = D(dE, dd)
545+ let dG = bY(dF, dD)
546+ let dH = H(dG, b)
547+ let dI = D(dw, b)
548+ let dJ = D(dB, b)
549+ let dK = fraction(dD, dI, dJ)
550+ let dL = fraction(dF, dI, dJ)
551+ let dM = K(dK, dc, FLOOR)
552+ let dN = K(dL, dd, FLOOR)
553+ let dO = if ((du == ""))
548554 then nil
549- else [ScriptTransfer(ab, dK, if ((dw == "WAVES"))
555+ else [ScriptTransfer(ab, dM, if ((dy == "WAVES"))
550556 then unit
551- else fromBase58String(dw)), ScriptTransfer(ab, dL, if ((dx == "WAVES"))
557+ else fromBase58String(dy)), ScriptTransfer(ab, dN, if ((dz == "WAVES"))
552558 then unit
553- else fromBase58String(dx)), StringEntry(ad(toString(ab), ds), bP(dK, dL, du, dF, height, lastBlock.timestamp)), IntegerEntry(W(), dF), IntegerEntry(X(height, lastBlock.timestamp), dF)]
554- $Tuple10(dK, dL, dw, dx, dA, dC, dz, dE, dy, dM)
559+ 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)]
560+ $Tuple10(dM, dN, dy, dz, dC, dE, dB, dG, dA, dO)
555561 }
556562 }
557563
558564
559-func dN (ds,dO,dP,dQ,dR,dS,ab,dT,dU) = {
560- let di = bk()
561- let dv = fromBase58String(di[q])
562- let dV = di[r]
563- let dW = di[s]
564- let dX = di[v]
565- let dY = di[w]
566- let dj = parseIntValue(di[t])
567- let dk = parseIntValue(di[u])
568- let dy = di[p]
569- let dz = valueOrErrorMessage(assetInfo(dv), (("Asset " + toBase58String(dv)) + " doesn't exist")).quantity
570- let dZ = toBase58String(valueOrElse(dQ, fromBase58String("WAVES")))
571- let ea = toBase58String(valueOrElse(dS, fromBase58String("WAVES")))
572- if (if ((dV != dZ))
565+func dP (du,dQ,dR,dS,dT,dU,ab,dV,dW) = {
566+ let dk = bm()
567+ let dx = fromBase58String(dk[q])
568+ let dX = dk[r]
569+ let dY = dk[s]
570+ let dZ = dk[v]
571+ let ea = dk[w]
572+ let dl = parseIntValue(dk[t])
573+ let dm = parseIntValue(dk[u])
574+ let dA = dk[p]
575+ let dB = valueOrErrorMessage(assetInfo(dx), (("Asset " + toBase58String(dx)) + " doesn't exist")).quantity
576+ let eb = toBase58String(valueOrElse(dS, fromBase58String("WAVES")))
577+ let ec = toBase58String(valueOrElse(dU, fromBase58String("WAVES")))
578+ if (if ((dX != eb))
573579 then true
574- else (dW != ea))
580+ else (dY != ec))
575581 then throw("Invalid amt or price asset passed.")
576582 else {
577- let dA = if (dT)
578- then bT(dV)
579- else (bT(dV) - dP)
580- let dC = if (dT)
581- then bT(dW)
582- else (bT(dW) - dR)
583- let eb = D(dP, dj)
584- let ec = D(dR, dk)
585- let ed = bW(ec, eb)
586- let dB = D(dA, dj)
587- let dD = D(dC, dk)
588- let ee = if ((dz == 0))
583+ let dC = if (dV)
584+ then bV(dX)
585+ else (bV(dX) - dR)
586+ let dE = if (dV)
587+ then bV(dY)
588+ else (bV(dY) - dT)
589+ let ed = D(dR, dl)
590+ let ee = D(dT, dm)
591+ let ef = bY(ee, ed)
592+ let dD = D(dC, dl)
593+ let dF = D(dE, dm)
594+ let eg = if ((dB == 0))
589595 then {
590- let dE = e
591- let ef = e
592- let dm = pow((eb * ec), 0, toBigInt(5), 1, 0, DOWN)
593- $Tuple5(H(dm, b), H(eb, dj), H(ec, dk), bW((dD + ec), (dB + eb)), ef)
596+ let dG = e
597+ let eh = e
598+ let do = pow((ed * ee), 0, toBigInt(5), 1, 0, DOWN)
599+ $Tuple5(H(do, b), H(ed, dl), H(ee, dm), bY((dF + ee), (dD + ed)), eh)
594600 }
595601 else {
596- let dE = bW(dD, dB)
597- let ef = fraction(R((dE - ed)), d, dE)
598- let eg = D(dO, b)
599- if (if ((dE != e))
600- then (ef > eg)
602+ let dG = bY(dF, dD)
603+ let eh = fraction(R((dG - ef)), d, dG)
604+ let ei = D(dQ, b)
605+ if (if ((dG != e))
606+ then (eh > ei)
601607 else false)
602- then throw(((("Price slippage " + toString(ef)) + " exceeded the passed limit of ") + toString(eg)))
608+ then throw(((("Price slippage " + toString(eh)) + " exceeded the passed limit of ") + toString(ei)))
603609 else {
604- let dH = D(dz, b)
605- let eh = fraction(eb, bZ(dD, dB, CEILING), d, CEILING)
606- let ei = fraction(ec, d, bZ(dD, dB, FLOOR), CEILING)
607- let ej = if ((eh > ec))
608- then $Tuple2(ei, ec)
609- else $Tuple2(eb, eh)
610- let ek = ej._1
611- let el = ej._2
612- let dm = fraction(dH, el, dD, FLOOR)
613- $Tuple5(K(dm, b, FLOOR), K(ek, dj, CEILING), K(el, dk, CEILING), dE, ef)
610+ let dJ = D(dB, b)
611+ let ej = fraction(ed, cb(dF, dD, CEILING), d, CEILING)
612+ let ek = fraction(ee, d, cb(dF, dD, FLOOR), CEILING)
613+ let el = if ((ej > ee))
614+ then $Tuple2(ek, ee)
615+ else $Tuple2(ed, ej)
616+ let em = el._1
617+ let en = el._2
618+ let do = fraction(dJ, en, dF, FLOOR)
619+ $Tuple5(K(do, b, FLOOR), K(em, dl, CEILING), K(en, dm, CEILING), dG, eh)
614620 }
615621 }
616- let em = ee._1
617- let en = ee._2
618- let eo = ee._3
619- let dF = H(ee._4, b)
620- let ep = H(ee._5, b)
621- if ((0 >= em))
622+ let eo = eg._1
623+ let ep = eg._2
624+ let eq = eg._3
625+ let dH = H(eg._4, b)
626+ let er = H(eg._5, b)
627+ if ((0 >= eo))
622628 then throw("Invalid calculations. LP calculated is less than zero.")
623629 else {
624- let eq = if (!(dU))
630+ let es = if (!(dW))
625631 then 0
626- else em
627- let er = (dP - en)
628- let es = (dR - eo)
629- let et = [IntegerEntry(W(), dF), IntegerEntry(X(height, lastBlock.timestamp), dF), StringEntry(aa(ab, ds), bE(en, eo, eq, dF, dO, ep, height, lastBlock.timestamp, er, es))]
630- $Tuple13(em, eq, dF, dA, dC, dz, dv, dy, et, er, es, dQ, dS)
632+ else eo
633+ let et = (dR - ep)
634+ let eu = (dT - eq)
635+ 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))]
636+ $Tuple13(eo, es, dH, dC, dE, dB, dx, dA, ev, et, eu, dS, dU)
631637 }
632638 }
633639 }
634640
635641
636-func eu (ev,ew,dz) = {
637- let ex = G(ev, toBigInt(bz))
638- let ey = G(ew, toBigInt(bA))
639- let ez = fraction(pow((ex * ey), 0, toBigInt(5), 1, 18, DOWN), g, dz)
640- if ((dz == f))
642+func ew (ex,ey,dB) = {
643+ let ez = G(ex, toBigInt(bB))
644+ let eA = G(ey, toBigInt(bC))
645+ let eB = fraction(pow((ez * eA), 0, toBigInt(5), 1, 18, DOWN), g, dB)
646+ if ((dB == f))
641647 then f
642- else ez
648+ else eB
643649 }
644650
645651
646-func eA (eB,eC,eD) = {
647- let eE = (toBigInt(bT(bp(bx))) - eB)
648- let eF = (toBigInt(bT(bp(by))) - eC)
649- let eG = (toBigInt(value(assetInfo(bw)).quantity) - eD)
650- let eH = eu(eE, eF, eG)
651- eH
652+func eC (eD,eE,eF) = {
653+ let eG = (toBigInt(bV(br(bz))) - eD)
654+ let eH = (toBigInt(bV(br(bA))) - eE)
655+ let eI = (toBigInt(value(assetInfo(by)).quantity) - eF)
656+ let eJ = ew(eG, eH, eI)
657+ eJ
652658 }
653659
654660
655-func eI (eJ,eK,eD) = {
656- let eE = (bT(bp(bx)) + eJ)
657- let eF = (bT(bp(by)) + eK)
658- let eG = (value(assetInfo(bw)).quantity + eD)
659- let ez = eu(toBigInt(eE), toBigInt(eF), toBigInt(eG))
660- let eL = [IntegerEntry(ak, height), StringEntry(aj, toString(ez))]
661- $Tuple2(eL, ez)
661+func eK (eL,eM,eF) = {
662+ let eG = (bV(br(bz)) + eL)
663+ let eH = (bV(br(bA)) + eM)
664+ let eI = (value(assetInfo(by)).quantity + eF)
665+ let eB = ew(toBigInt(eG), toBigInt(eH), toBigInt(eI))
666+ let eN = [IntegerEntry(ak, height), StringEntry(aj, toString(eB))]
667+ $Tuple2(eN, eB)
662668 }
663669
664670
665-func eM () = valueOrElse(getBoolean(bd, aH(toString(this))), false)
671+func eO () = valueOrElse(getBoolean(bd, aH(toString(this))), false)
666672
667673
668-func eN (eO,ez) = if ((ez >= eO))
674+func eP (eQ,eB) = if ((eB >= eQ))
669675 then true
670- else ba(makeString(["updated KLp lower than current KLp", toString(eO), toString(ez)], " "))
676+ else ba(makeString(["updated KLp lower than current KLp", toString(eQ), toString(eB)], " "))
671677
672678
673-func eP (eQ) = {
674- let eE = bT(bp(bx))
675- let eF = bT(bp(by))
676- let eR = eQ.amount
677- let eS = fraction(eQ.amount, eQ.price, b, FLOOR)
678- let eT = if ((eQ.orderType == Buy))
679- then $Tuple2(eR, -(eS))
680- else $Tuple2(-(eR), eS)
681- let eJ = eT._1
682- let eK = eT._2
683- if (if (if (bi())
679+func eR (eS) = {
680+ let eG = bV(br(bz))
681+ let eH = bV(br(bA))
682+ let eT = eS.amount
683+ let eU = fraction(eS.amount, eS.price, b, FLOOR)
684+ let eV = if ((eS.orderType == Buy))
685+ then $Tuple2(eT, -(eU))
686+ else $Tuple2(-(eT), eU)
687+ let eL = eV._1
688+ let eM = eV._2
689+ if (if (if (bk())
684690 then true
685- else (bv == m))
691+ else (bx == m))
686692 then true
687- else (bv == n))
693+ else (bx == n))
688694 then throw("Exchange operations disabled")
689- else if (if ((eQ.assetPair.amountAsset != bx))
695+ else if (if ((eS.assetPair.amountAsset != bz))
690696 then true
691- else (eQ.assetPair.priceAsset != by))
697+ else (eS.assetPair.priceAsset != bA))
692698 then throw("Wrong order assets.")
693699 else {
694- let eU = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, aj), "0")), bc("invalid kLp"))
695- let eV = eI(eJ, eK, 0)
696- let eW = eV._1
697- let eX = eV._2
698- let eY = (eX >= eU)
699- let eZ = makeString(["kLp=", toString(eU), " kLpNew=", toString(eX), " amountAssetBalance=", toString(eE), " priceAssetBalance=", toString(eF), " amountAssetBalanceDelta=", toString(eJ), " priceAssetBalanceDelta=", toString(eK), " height=", toString(height)], "")
700- $Tuple2(eY, eZ)
700+ let eW = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, aj), "0")), bc("invalid kLp"))
701+ let eX = eK(eL, eM, 0)
702+ let eY = eX._1
703+ let eZ = eX._2
704+ let fa = (eZ >= eW)
705+ let fb = makeString(["kLp=", toString(eW), " kLpNew=", toString(eZ), " amountAssetBalance=", toString(eG), " priceAssetBalance=", toString(eH), " amountAssetBalanceDelta=", toString(eL), " priceAssetBalanceDelta=", toString(eM), " height=", toString(height)], "")
706+ $Tuple2(fa, fb)
701707 }
702708 }
703709
704710
705-func fa (fb) = if ((size(fb.payments) != 1))
711+func fc (fd) = if ((size(fd.payments) != 1))
706712 then throw("exactly 1 payment is expected")
707713 else {
708- let fc = value(fb.payments[0])
709- let dt = value(fc.assetId)
710- let fd = fc.amount
711- let ee = dr(toBase58String(fb.transactionId), toBase58String(dt), fd, fb.caller)
712- let dK = ee._1
713- let dL = ee._2
714- let dy = parseIntValue(ee._9)
715- let dM = ee._10
716- if (if (bi())
717- then true
718- else (dy == n))
719- then throw(("Get operation is blocked by admin. Status = " + toString(dy)))
720- else $Tuple5(dK, dL, fd, dt, dM)
714+ let fe = value(fd.payments[0])
715+ let dv = value(fe.assetId)
716+ let ff = fe.amount
717+ let eg = dt(toBase58String(fd.transactionId), toBase58String(dv), ff, fd.caller)
718+ let dM = eg._1
719+ let dN = eg._2
720+ let dO = eg._10
721+ let fg = if (!(bj(fd.caller)))
722+ then if (bk())
723+ then true
724+ else (bx == n)
725+ else false
726+ if (fg)
727+ then throw(("Get operation is blocked by admin. Status = " + toString(bx)))
728+ else $Tuple5(dM, dN, ff, dv, dO)
721729 }
722730
723731
724-func fe (fb,dO,dU) = if ((size(fb.payments) != 2))
732+func fh (fd,dQ,dW) = if ((size(fd.payments) != 2))
725733 then throw("exactly 2 payments are expected")
726734 else {
727- let ff = value(fb.payments[0])
728- let fg = value(fb.payments[1])
729- let fh = dN(toBase58String(fb.transactionId), dO, ff.amount, ff.assetId, fg.amount, fg.assetId, toString(fb.caller), false, dU)
730- let dy = parseIntValue(fh._8)
731- if (if (if (bi())
732- then true
733- else (dy == l))
734- then true
735- else (dy == n))
736- then throw(("Put operation is blocked by admin. Status = " + toString(dy)))
737- else fh
735+ let fi = value(fd.payments[0])
736+ let fj = value(fd.payments[1])
737+ let fk = dP(toBase58String(fd.transactionId), dQ, fi.amount, fi.assetId, fj.amount, fj.assetId, toString(fd.caller), false, dW)
738+ let fl = if (!(bj(fd.caller)))
739+ then if (if (bk())
740+ then true
741+ else (bx == l))
742+ then true
743+ else (bx == n)
744+ else false
745+ if (fl)
746+ then throw(("Put operation is blocked by admin. Status = " + toString(bx)))
747+ else fk
738748 }
739749
740750
741-func fi (cf) = {
742- let fj = invoke(bd, "emit", [cf], nil)
743- if ((fj == fj))
751+func fm (ch) = {
752+ let fn = invoke(bd, "emit", [ch], nil)
753+ if ((fn == fn))
744754 then {
745- let fk = {
746- let aQ = fj
755+ let fo = {
756+ let aQ = fn
747757 if ($isInstanceOf(aQ, "Address"))
748758 then {
749- let fl = aQ
750- invoke(fl, "emit", [cf], nil)
759+ let fp = aQ
760+ invoke(fp, "emit", [ch], nil)
751761 }
752762 else unit
753763 }
754- if ((fk == fk))
755- then cf
764+ if ((fo == fo))
765+ then ch
756766 else throw("Strict value is not equal to itself.")
757767 }
758768 else throw("Strict value is not equal to itself.")
759769 }
760770
761771
762-func fm (cf,ai) = {
763- let fn = if ((ai == 0))
772+func fq (ch,ai) = {
773+ let fr = if ((ai == 0))
764774 then 0
765- else fraction(cf, ai, b)
766- $Tuple2((cf - fn), fn)
775+ else fraction(ch, ai, b)
776+ $Tuple2((ch - fr), fr)
767777 }
768778
769779
770-func fo (fp,fq,ab,ac) = {
771- let fr = (ac == unit)
772- let fs = bT(bp(bx))
773- let ft = bT(bp(by))
774- let fu = if ((fq == bx))
780+func fs (ft,fu,ab,ac) = {
781+ let fv = (ac == unit)
782+ let fw = bV(br(bz))
783+ let fx = bV(br(bA))
784+ let fy = if ((fu == bz))
775785 then true
776- else if ((fq == by))
786+ else if ((fu == bA))
777787 then false
778788 else ba("invalid asset")
779- let fv = if (fr)
780- then $Tuple2(fs, ft)
781- else if (fu)
782- then $Tuple2((fs - fp), ft)
783- else $Tuple2(fs, (ft - fp))
784- let fw = fv._1
785- let fx = fv._2
786- let fy = if (fu)
787- then $Tuple2(fp, 0)
788- else $Tuple2(0, fp)
789- let fz = fy._1
790- let fA = fy._2
791- let eR = fm(fz, bf)._1
792- let eS = fm(fA, bf)._1
793- let fB = fm(fp, bf)
794- let fC = fB._1
795- let fn = fB._2
796- let fD = (fw + eR)
797- let fE = (fx + eS)
798- let fF = bW(D(fE, bA), D(fD, bz))
799- let fG = H(fF, b)
800- let fH = if (fu)
801- then fw
802- else fx
803- let fI = toBigInt(fH)
804- let fJ = toBigInt(valueOrErrorMessage(assetInfo(bw), (("asset " + toBase58String(bw)) + " doesn't exist")).quantity)
805- let fK = if ((fJ > f))
789+ let fz = if (fv)
790+ then $Tuple2(fw, fx)
791+ else if (fy)
792+ then $Tuple2((fw - ft), fx)
793+ else $Tuple2(fw, (fx - ft))
794+ let fA = fz._1
795+ let fB = fz._2
796+ let fC = if (fy)
797+ then $Tuple2(ft, 0)
798+ else $Tuple2(0, ft)
799+ let fD = fC._1
800+ let fE = fC._2
801+ let eT = fq(fD, bf)._1
802+ let eU = fq(fE, bf)._1
803+ let fF = fq(ft, bf)
804+ let fG = fF._1
805+ let fr = fF._2
806+ let fH = (fA + eT)
807+ let fI = (fB + eU)
808+ let fJ = bY(D(fI, bC), D(fH, bB))
809+ let fK = H(fJ, b)
810+ let fL = if (fy)
811+ then fA
812+ else fB
813+ let fM = toBigInt(fL)
814+ let fN = toBigInt(valueOrErrorMessage(assetInfo(by), (("asset " + toBase58String(by)) + " doesn't exist")).quantity)
815+ let fO = if ((fN > f))
806816 then true
807817 else ba("initial deposit requires all coins")
808- if ((fK == fK))
818+ if ((fO == fO))
809819 then {
810- let fL = toBigInt(fC)
811- let fM = max([0, toInt(((fJ * (sqrtBigInt((d + ((fL * d) / fI)), 18, 18, DOWN) - d)) / d))])
812- let et = if (fr)
820+ let fP = toBigInt(fG)
821+ let fQ = max([0, toInt(((fN * (sqrtBigInt((d + ((fP * d) / fM)), 18, 18, DOWN) - d)) / d))])
822+ let ev = if (fv)
813823 then nil
814- else [IntegerEntry(W(), fG), IntegerEntry(X(height, lastBlock.timestamp), fG), StringEntry(aa(toString(value(ab)), toBase58String(value(ac))), bE(fz, fA, fM, fG, 0, 0, height, lastBlock.timestamp, 0, 0))]
815- let fN = bW(D(fx, bA), D(fw, bz))
816- let fO = H(fN, b)
817- let fP = {
818- let fQ = if (fu)
819- then $Tuple2(fz, fw)
820- else $Tuple2(fA, fx)
821- let cf = fQ._1
822- let fR = fQ._2
823- let fS = toInt(fraction(fJ, toBigInt((cf / 2)), toBigInt(fR)))
824- fraction((fM - fS), b, fS)
824+ 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))]
825+ let fR = bY(D(fB, bC), D(fA, bB))
826+ let fS = H(fR, b)
827+ let fT = {
828+ let fU = if (fy)
829+ then $Tuple2(fD, fA)
830+ else $Tuple2(fE, fB)
831+ let ch = fU._1
832+ let fV = fU._2
833+ let fW = toInt(fraction(fN, toBigInt((ch / 2)), toBigInt(fV)))
834+ fraction((fQ - fW), b, fW)
825835 }
826- $Tuple5(fM, et, fn, fP, fu)
836+ $Tuple5(fQ, ev, fr, fT, fy)
827837 }
828838 else throw("Strict value is not equal to itself.")
829839 }
830840
831841
832-func fT (fU,fC,fq,ab,ac) = {
833- let fr = (ac == unit)
834- let di = bk()
835- let dj = parseIntValue(di[t])
836- let dk = parseIntValue(di[u])
837- let fV = [if ((fq == bw))
842+func fX (fY,fG,fu,ab,ac) = {
843+ let fv = (ac == unit)
844+ let dk = bm()
845+ let dl = parseIntValue(dk[t])
846+ let dm = parseIntValue(dk[u])
847+ let fZ = [if ((fu == by))
838848 then true
839849 else ba("invalid lp asset")]
840- if ((fV == fV))
850+ if ((fZ == fZ))
841851 then {
842- let fW = if ((fU == bx))
852+ let ga = if ((fY == bz))
843853 then true
844- else if ((fU == by))
854+ else if ((fY == bA))
845855 then false
846856 else ba("invalid asset")
847- let fX = if (fW)
848- then toBigInt(bT(bp(bx)))
849- else toBigInt(bT(bp(by)))
850- let fY = if (fW)
851- then dj
852- else dk
853- let fZ = bT(bp(bx))
854- let ga = bT(bp(by))
855- let gb = if (fW)
856- then fZ
857- else ga
858- let gc = toBigInt(gb)
859- let fJ = toBigInt(valueOrErrorMessage(assetInfo(bw), (("asset " + toBase58String(bw)) + " doesn't exist")).quantity)
860- let gd = toBigInt(fC)
861- let ge = max([0, toInt(((fX * (d - pow((d - ((gd * d) / fJ)), 18, h, 0, 18, DOWN))) / d))])
862- let gf = fm(ge, bh)
863- let gg = gf._1
864- let fn = gf._2
865- let gh = if (fW)
866- then $Tuple4(gg, 0, (fZ - ge), ga)
867- else $Tuple4(0, gg, fZ, (ga - ge))
868- let gi = gh._1
869- let gj = gh._2
870- let gk = gh._3
871- let gl = gh._4
872- let fF = bW(D(gl, bA), D(gk, bz))
873- let fG = H(fF, b)
874- let et = if (fr)
857+ let gb = if (ga)
858+ then toBigInt(bV(br(bz)))
859+ else toBigInt(bV(br(bA)))
860+ let gc = if (ga)
861+ then dl
862+ else dm
863+ let gd = bV(br(bz))
864+ let ge = bV(br(bA))
865+ let gf = if (ga)
866+ then gd
867+ else ge
868+ let gg = toBigInt(gf)
869+ let fN = toBigInt(valueOrErrorMessage(assetInfo(by), (("asset " + toBase58String(by)) + " doesn't exist")).quantity)
870+ let gh = toBigInt(fG)
871+ let gi = max([0, toInt(((gb * (d - pow((d - ((gh * d) / fN)), 18, h, 0, 18, DOWN))) / d))])
872+ let gj = fq(gi, bh)
873+ let gk = gj._1
874+ let fr = gj._2
875+ let gl = if (ga)
876+ then $Tuple4(gk, 0, (gd - gi), ge)
877+ else $Tuple4(0, gk, gd, (ge - gi))
878+ let gm = gl._1
879+ let gn = gl._2
880+ let go = gl._3
881+ let gp = gl._4
882+ let fJ = bY(D(gp, bC), D(go, bB))
883+ let fK = H(fJ, b)
884+ let ev = if (fv)
875885 then nil
876- else [StringEntry(ad(toString(value(ab)), toBase58String(value(ac))), bP(gi, gj, fC, fG, height, lastBlock.timestamp)), IntegerEntry(W(), fG), IntegerEntry(X(height, lastBlock.timestamp), fG)]
877- let fN = bW(D(ga, bA), D(fZ, bz))
878- let fO = H(fN, b)
879- let fP = {
880- let gm = (toInt(fraction(fX, gd, fJ)) * 2)
881- fraction((gg - gm), b, gm)
886+ 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)]
887+ let fR = bY(D(ge, bC), D(gd, bB))
888+ let fS = H(fR, b)
889+ let fT = {
890+ let gq = (toInt(fraction(gb, gh, fN)) * 2)
891+ fraction((gk - gq), b, gq)
882892 }
883- $Tuple5(gg, et, fn, fP, fW)
893+ $Tuple5(gk, ev, fr, fT, ga)
884894 }
885895 else throw("Strict value is not equal to itself.")
886896 }
887897
888898
889-func gn () = {
890- let go = aS()
891- let aQ = getString(go, U())
899+func gr () = {
900+ let gs = aS()
901+ let aQ = getString(gs, U())
892902 if ($isInstanceOf(aQ, "String"))
893903 then {
894904 let aV = aQ
895905 fromBase58String(aV)
896906 }
897907 else if ($isInstanceOf(aQ, "Unit"))
898908 then unit
899909 else throw("Match error")
900910 }
901911
902912
903-func gp (fb) = {
904- let aQ = gn()
913+func gt (fd) = {
914+ let aQ = gr()
905915 if ($isInstanceOf(aQ, "ByteVector"))
906916 then {
907- let gq = aQ
908- (fb.callerPublicKey == gq)
917+ let gu = aQ
918+ (fd.callerPublicKey == gu)
909919 }
910920 else if ($isInstanceOf(aQ, "Unit"))
911- then (fb.caller == this)
921+ then (fd.caller == this)
912922 else throw("Match error")
913923 }
914924
915925
916-func gr (fb) = {
917- let gs = throw("Permission denied")
918- let aQ = gn()
926+func gv (fd) = {
927+ let gw = throw("Permission denied")
928+ let aQ = gr()
919929 if ($isInstanceOf(aQ, "ByteVector"))
920930 then {
921- let gq = aQ
922- if ((fb.callerPublicKey == gq))
931+ let gu = aQ
932+ if ((fd.callerPublicKey == gu))
923933 then true
924- else gs
934+ else gw
925935 }
926936 else if ($isInstanceOf(aQ, "Unit"))
927- then if ((fb.caller == this))
937+ then if ((fd.caller == this))
928938 then true
929- else gs
939+ else gw
930940 else throw("Match error")
931941 }
932942
933943
934-@Callable(fb)
935-func rebalance () = (cI(aW(this, ae())) ++ cI(aW(this, af())))
944+@Callable(fd)
945+func rebalance () = (cK(aW(this, ae())) ++ cK(aW(this, af())))
936946
937947
938948
939-@Callable(fb)
940-func calculateAmountOutForSwapREADONLY (gt,gu,gv) = {
941- let gw = if ((gu == false))
949+@Callable(fd)
950+func calculateAmountOutForSwapREADONLY (gx,gy,gz) = {
951+ let gA = if ((gy == false))
942952 then {
943- let gx = aW(this, af())
944- let gy = aW(this, ae())
945- $Tuple2(gx, gy)
953+ let gB = aW(this, af())
954+ let gC = aW(this, ae())
955+ $Tuple2(gB, gC)
946956 }
947957 else {
948- let gx = aW(this, ae())
949- let gy = aW(this, af())
950- $Tuple2(gx, gy)
958+ let gB = aW(this, ae())
959+ let gC = aW(this, af())
960+ $Tuple2(gB, gC)
951961 }
952- let gx = gw._1
953- let gy = gw._2
954- let gz = bT(gy)
955- let gA = bT(gx)
956- let gB = fraction(gA, gt, (gz + gt))
957- let gC = (toBigInt(gz) * toBigInt(gA))
958- let gD = (((toBigInt(bT(gy)) + toBigInt(gt)) + toBigInt(gv)) * (toBigInt(bT(gx)) - toBigInt(gB)))
959- let gE = if ((gD >= gC))
962+ let gB = gA._1
963+ let gC = gA._2
964+ let gD = bV(gC)
965+ let gE = bV(gB)
966+ let gF = fraction(gE, gx, (gD + gx))
967+ let gG = (toBigInt(gD) * toBigInt(gE))
968+ let gH = (((toBigInt(bV(gC)) + toBigInt(gx)) + toBigInt(gz)) * (toBigInt(bV(gB)) - toBigInt(gF)))
969+ let gI = if ((gH >= gG))
960970 then true
961971 else throw("new K is fewer error")
962- if ((gE == gE))
963- then $Tuple2(nil, gB)
972+ if ((gI == gI))
973+ then $Tuple2(nil, gF)
964974 else throw("Strict value is not equal to itself.")
965975 }
966976
967977
968978
969-@Callable(fb)
970-func calculateAmountOutForSwapAndSendTokens (gt,gu,gF,gG,gv) = {
971- let gH = {
979+@Callable(fd)
980+func calculateAmountOutForSwapAndSendTokens (gx,gy,gJ,gK,gz) = {
981+ let gL = {
972982 let bg = invoke(bd, "getSwapContractREADONLY", nil, nil)
973983 if ($isInstanceOf(bg, "String"))
974984 then bg
975985 else throw(($getType(bg) + " couldn't be cast to String"))
976986 }
977- let gI = {
987+ let gM = {
978988 let bg = invoke(bd, "isPoolSwapDisabledREADONLY", [toString(this)], nil)
979989 if ($isInstanceOf(bg, "Boolean"))
980990 then bg
981991 else throw(($getType(bg) + " couldn't be cast to Boolean"))
982992 }
983- let gJ = if (if (bi())
993+ let gN = if (!(bj(fd.caller)))
994+ then if (if (bk())
995+ then true
996+ else (bx == n))
997+ then true
998+ else gM
999+ else false
1000+ let fZ = [if (if (!(gN))
9841001 then true
985- else (bv == n))
1002+ else gt(fd))
9861003 then true
987- else gI
988- let fV = [if (if (!(gJ))
1004+ else ba("swap operation is blocked by admin"), if ((value(fd.payments[0]).amount >= gx))
9891005 then true
990- else gp(fb))
991- then true
992- else ba("swap operation is blocked by admin"), if ((value(fb.payments[0]).amount >= gt))
993- then true
994- else ba("Wrong amount"), if ((fb.caller == addressFromStringValue(gH)))
1006+ else ba("Wrong amount"), if ((fd.caller == addressFromStringValue(gL)))
9951007 then true
9961008 else ba("Permission denied")]
997- if ((fV == fV))
1009+ if ((fZ == fZ))
9981010 then {
999- let fc = value(fb.payments[0])
1000- let gy = bp(fc.assetId)
1001- let gx = if ((gu == false))
1011+ let fe = value(fd.payments[0])
1012+ let gC = br(fe.assetId)
1013+ let gB = if ((gy == false))
10021014 then aW(this, af())
10031015 else aW(this, ae())
1004- let gz = ((bT(gy) - value(fb.payments[0]).amount) - gv)
1005- let gA = bT(gx)
1006- let gB = fraction(gA, gt, (gz + gt))
1007- let gC = (toBigInt(gz) * toBigInt(gA))
1008- let gD = ((toBigInt(bT(gy)) + toBigInt(gv)) * (toBigInt(bT(gx)) - toBigInt(gB)))
1009- let gE = if ((gD >= gC))
1016+ let gD = ((bV(gC) - value(fd.payments[0]).amount) - gz)
1017+ let gE = bV(gB)
1018+ let gF = fraction(gE, gx, (gD + gx))
1019+ let gG = (toBigInt(gD) * toBigInt(gE))
1020+ let gH = ((toBigInt(bV(gC)) + toBigInt(gz)) * (toBigInt(bV(gB)) - toBigInt(gF)))
1021+ let gI = if ((gH >= gG))
10101022 then true
10111023 else throw("new K is fewer error")
1012- if ((gE == gE))
1024+ if ((gI == gI))
10131025 then {
1014- let gK = if ((gB >= gF))
1026+ let gO = if ((gF >= gJ))
10151027 then true
10161028 else throw("Exchange result is fewer coins than expected")
1017- if ((gK == gK))
1029+ if ((gO == gO))
10181030 then {
1019- let eJ = if (gu)
1020- then -(gB)
1021- else gv
1022- let eK = if (gu)
1023- then gv
1024- else -(gB)
1025- let gL = eI(eJ, eK, 0)._1
1026- if ((gL == gL))
1031+ let eL = if (gy)
1032+ then -(gF)
1033+ else gz
1034+ let eM = if (gy)
1035+ then gz
1036+ else -(gF)
1037+ let gP = eK(eL, eM, 0)._1
1038+ if ((gP == gP))
10271039 then {
1028- let gM = cI(gy)
1029- if ((gM == gM))
1040+ let gQ = cK(gC)
1041+ if ((gQ == gQ))
10301042 then {
1031- let gN = cP(gx, gB)
1032- if ((gN == gN))
1033- then $Tuple2(((gN ++ gM) ++ [ScriptTransfer(addressFromStringValue(gG), gB, bn(gx))]), gB)
1043+ let gR = cR(gB, gF)
1044+ if ((gR == gR))
1045+ then $Tuple2(((gR ++ gQ) ++ [ScriptTransfer(addressFromStringValue(gK), gF, bp(gB))]), gF)
10341046 else throw("Strict value is not equal to itself.")
10351047 }
10361048 else throw("Strict value is not equal to itself.")
10371049 }
10381050 else throw("Strict value is not equal to itself.")
10391051 }
10401052 else throw("Strict value is not equal to itself.")
10411053 }
10421054 else throw("Strict value is not equal to itself.")
10431055 }
10441056 else throw("Strict value is not equal to itself.")
10451057 }
10461058
10471059
10481060
1049-@Callable(fb)
1050-func put (dO,gO) = if ((0 > dO))
1061+@Callable(fd)
1062+func put (dQ,gS) = if ((0 > dQ))
10511063 then throw("Invalid slippageTolerance passed")
10521064 else {
1053- let fh = fe(fb, dO, true)
1054- let eq = fh._2
1055- let dv = fh._7
1056- let dM = fh._9
1057- let er = fh._10
1058- let es = fh._11
1059- let gP = fh._12
1060- let gQ = fh._13
1061- let ff = toBigInt(value(fb.payments[0]).amount)
1062- let fg = toBigInt(value(fb.payments[1]).amount)
1063- let eH = eA(ff, fg, toBigInt(0))
1064- if ((eH == eH))
1065+ let fk = fh(fd, dQ, true)
1066+ let es = fk._2
1067+ let dx = fk._7
1068+ let dO = fk._9
1069+ let et = fk._10
1070+ let eu = fk._11
1071+ let gT = fk._12
1072+ let gU = fk._13
1073+ let fi = toBigInt(value(fd.payments[0]).amount)
1074+ let fj = toBigInt(value(fd.payments[1]).amount)
1075+ let eJ = eC(fi, fj, toBigInt(0))
1076+ if ((eJ == eJ))
10651077 then {
1066- let fj = invoke(bd, "emit", [eq], nil)
1067- if ((fj == fj))
1078+ let fn = invoke(bd, "emit", [es], nil)
1079+ if ((fn == fn))
10681080 then {
1069- let fk = {
1070- let aQ = fj
1081+ let fo = {
1082+ let aQ = fn
10711083 if ($isInstanceOf(aQ, "Address"))
10721084 then {
1073- let fl = aQ
1074- invoke(fl, "emit", [eq], nil)
1085+ let fp = aQ
1086+ invoke(fp, "emit", [es], nil)
10751087 }
10761088 else unit
10771089 }
1078- if ((fk == fk))
1090+ if ((fo == fo))
10791091 then {
1080- let gR = if ((er > 0))
1081- then invoke(bD, "put", nil, [AttachedPayment(gP, er)])
1092+ let gV = if ((et > 0))
1093+ then invoke(bF, "put", nil, [AttachedPayment(gT, et)])
10821094 else nil
1083- if ((gR == gR))
1095+ if ((gV == gV))
10841096 then {
1085- let gS = if ((es > 0))
1086- then invoke(bD, "put", nil, [AttachedPayment(gQ, es)])
1097+ let gW = if ((eu > 0))
1098+ then invoke(bF, "put", nil, [AttachedPayment(gU, eu)])
10871099 else nil
1088- if ((gS == gS))
1100+ if ((gW == gW))
10891101 then {
1090- let gT = if (gO)
1102+ let gX = if (gS)
10911103 then {
1092- let gU = invoke(bC, "stake", nil, [AttachedPayment(dv, eq)])
1093- if ((gU == gU))
1104+ let gY = invoke(bE, "stake", nil, [AttachedPayment(dx, es)])
1105+ if ((gY == gY))
10941106 then nil
10951107 else throw("Strict value is not equal to itself.")
10961108 }
1097- else [ScriptTransfer(fb.caller, eq, dv)]
1098- let gV = eI(0, 0, 0)
1099- if ((gV == gV))
1109+ else [ScriptTransfer(fd.caller, es, dx)]
1110+ let gZ = eK(0, 0, 0)
1111+ if ((gZ == gZ))
11001112 then {
1101- let ez = gV._2
1102- let gL = gV._1
1103- let gW = eN(eH, ez)
1104- if ((gW == gW))
1113+ let eB = gZ._2
1114+ let gP = gZ._1
1115+ let ha = eP(eJ, eB)
1116+ if ((ha == ha))
11051117 then {
1106- let gX = invoke(this, "rebalance", nil, nil)
1107- if ((gX == gX))
1108- then ((dM ++ gT) ++ gL)
1118+ let hb = invoke(this, "rebalance", nil, nil)
1119+ if ((hb == hb))
1120+ then ((dO ++ gX) ++ gP)
11091121 else throw("Strict value is not equal to itself.")
11101122 }
11111123 else throw("Strict value is not equal to itself.")
11121124 }
11131125 else throw("Strict value is not equal to itself.")
11141126 }
11151127 else throw("Strict value is not equal to itself.")
11161128 }
11171129 else throw("Strict value is not equal to itself.")
11181130 }
11191131 else throw("Strict value is not equal to itself.")
11201132 }
11211133 else throw("Strict value is not equal to itself.")
11221134 }
11231135 else throw("Strict value is not equal to itself.")
11241136 }
11251137
11261138
11271139
1128-@Callable(fb)
1129-func putForFree (gY) = if ((0 > gY))
1140+@Callable(fd)
1141+func putForFree (hc) = if ((0 > hc))
11301142 then throw("Invalid value passed")
11311143 else {
1132- let fh = fe(fb, gY, false)
1133- let dM = fh._9
1134- let ff = toBigInt(value(fb.payments[0]).amount)
1135- let fg = toBigInt(value(fb.payments[1]).amount)
1136- let eH = eA(ff, fg, toBigInt(0))
1137- if ((eH == eH))
1144+ let fk = fh(fd, hc, false)
1145+ let dO = fk._9
1146+ let fi = toBigInt(value(fd.payments[0]).amount)
1147+ let fj = toBigInt(value(fd.payments[1]).amount)
1148+ let eJ = eC(fi, fj, toBigInt(0))
1149+ if ((eJ == eJ))
11381150 then {
1139- let gZ = eI(0, 0, 0)
1140- let gL = gZ._1
1141- let ez = gZ._2
1142- let gW = eN(eH, ez)
1143- if ((gW == gW))
1144- then (dM ++ gL)
1151+ let hd = eK(0, 0, 0)
1152+ let gP = hd._1
1153+ let eB = hd._2
1154+ let ha = eP(eJ, eB)
1155+ if ((ha == ha))
1156+ then (dO ++ gP)
11451157 else throw("Strict value is not equal to itself.")
11461158 }
11471159 else throw("Strict value is not equal to itself.")
11481160 }
11491161
11501162
11511163
1152-@Callable(fb)
1153-func putOneTkn (ha,hb) = {
1154- let hc = {
1164+@Callable(fd)
1165+func putOneTkn (he,hf) = {
1166+ let hg = {
11551167 let bg = invoke(bd, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
11561168 if ($isInstanceOf(bg, "Boolean"))
11571169 then bg
11581170 else throw(($getType(bg) + " couldn't be cast to Boolean"))
11591171 }
1160- let hd = if (if (if (bi())
1172+ let fl = if (!(bj(fd.caller)))
1173+ then if (if (if (bk())
1174+ then true
1175+ else (bx == l))
1176+ then true
1177+ else (bx == n))
1178+ then true
1179+ else hg
1180+ else false
1181+ let fZ = [if (if (!(fl))
11611182 then true
1162- else (bv == l))
1183+ else gt(fd))
11631184 then true
1164- else (bv == n))
1165- then true
1166- else hc
1167- let fV = [if (if (!(hd))
1168- then true
1169- else gp(fb))
1170- then true
1171- else ba("put operation is blocked by admin"), if ((size(fb.payments) == 1))
1185+ else ba("put operation is blocked by admin"), if ((size(fd.payments) == 1))
11721186 then true
11731187 else ba("exactly 1 payment are expected")]
1174- if ((fV == fV))
1188+ if ((fZ == fZ))
11751189 then {
1176- let he = fb.payments[0]
1177- let fq = he.assetId
1178- let fp = he.amount
1179- let eH = if ((fq == bx))
1180- then eA(toBigInt(fp), toBigInt(0), toBigInt(0))
1181- else if ((fq == by))
1182- then eA(toBigInt(0), toBigInt(fp), toBigInt(0))
1190+ let hh = fd.payments[0]
1191+ let fu = hh.assetId
1192+ let ft = hh.amount
1193+ let eJ = if ((fu == bz))
1194+ then eC(toBigInt(ft), toBigInt(0), toBigInt(0))
1195+ else if ((fu == bA))
1196+ then eC(toBigInt(0), toBigInt(ft), toBigInt(0))
11831197 else ba("payment asset is not supported")
1184- if ((eH == eH))
1198+ if ((eJ == eJ))
11851199 then {
1186- let ab = fb.caller
1187- let ac = fb.transactionId
1188- let hf = fo(fp, fq, ab, ac)
1189- if ((hf == hf))
1200+ let ab = fd.caller
1201+ let ac = fd.transactionId
1202+ let hi = fs(ft, fu, ab, ac)
1203+ if ((hi == hi))
11901204 then {
1191- let fu = hf._5
1192- let hg = hf._4
1193- let fn = hf._3
1194- let et = hf._2
1195- let hh = hf._1
1196- let hi = if (if ((ha > 0))
1197- then (ha > hh)
1205+ let fy = hi._5
1206+ let hj = hi._4
1207+ let fr = hi._3
1208+ let ev = hi._2
1209+ let hk = hi._1
1210+ let hl = if (if ((he > 0))
1211+ then (he > hk)
11981212 else false)
1199- then ba(makeString(["amount to receive is less than ", toString(ha)], ""))
1200- else hh
1201- let fj = fi(hi)
1202- if ((fj == fj))
1213+ then ba(makeString(["amount to receive is less than ", toString(he)], ""))
1214+ else hk
1215+ let fn = fm(hl)
1216+ if ((fn == fn))
12031217 then {
1204- let gT = if (hb)
1218+ let gX = if (hf)
12051219 then {
1206- let hj = invoke(bC, "stake", nil, [AttachedPayment(bw, hi)])
1207- if ((hj == hj))
1220+ let hm = invoke(bE, "stake", nil, [AttachedPayment(by, hl)])
1221+ if ((hm == hm))
12081222 then nil
12091223 else throw("Strict value is not equal to itself.")
12101224 }
1211- else [ScriptTransfer(fb.caller, hi, bw)]
1212- let hk = if ((fn > 0))
1213- then [ScriptTransfer(be, fn, fq)]
1225+ else [ScriptTransfer(fd.caller, hl, by)]
1226+ let hn = if ((fr > 0))
1227+ then [ScriptTransfer(be, fr, fu)]
12141228 else nil
1215- let hl = if ((this == be))
1229+ let ho = if ((this == be))
12161230 then $Tuple2(0, 0)
1217- else if (fu)
1218- then $Tuple2(-(fn), 0)
1219- else $Tuple2(0, -(fn))
1220- let eJ = hl._1
1221- let eK = hl._2
1222- let hm = eI(eJ, eK, 0)
1223- let gL = hm._1
1224- let ez = hm._2
1225- let eU = value(getString(aj))
1226- let gW = eN(eH, ez)
1227- if ((gW == gW))
1231+ else if (fy)
1232+ then $Tuple2(-(fr), 0)
1233+ else $Tuple2(0, -(fr))
1234+ let eL = ho._1
1235+ let eM = ho._2
1236+ let hp = eK(eL, eM, 0)
1237+ let gP = hp._1
1238+ let eB = hp._2
1239+ let eW = value(getString(aj))
1240+ let ha = eP(eJ, eB)
1241+ if ((ha == ha))
12281242 then {
1229- let gX = invoke(this, "rebalance", nil, nil)
1230- if ((gX == gX))
1231- then $Tuple2((((et ++ gT) ++ hk) ++ gL), hi)
1243+ let hb = invoke(this, "rebalance", nil, nil)
1244+ if ((hb == hb))
1245+ then $Tuple2((((ev ++ gX) ++ hn) ++ gP), hl)
12321246 else throw("Strict value is not equal to itself.")
12331247 }
12341248 else throw("Strict value is not equal to itself.")
12351249 }
12361250 else throw("Strict value is not equal to itself.")
12371251 }
12381252 else throw("Strict value is not equal to itself.")
12391253 }
12401254 else throw("Strict value is not equal to itself.")
12411255 }
12421256 else throw("Strict value is not equal to itself.")
12431257 }
12441258
12451259
12461260
1247-@Callable(fb)
1248-func putOneTknREADONLY (fq,fp) = {
1249- let hn = fo(fp, bn(fq), unit, unit)
1250- let hh = hn._1
1251- let et = hn._2
1252- let fn = hn._3
1253- let hg = hn._4
1254- let fu = hn._5
1255- $Tuple2(nil, $Tuple3(hh, fn, hg))
1261+@Callable(fd)
1262+func putOneTknREADONLY (fu,ft) = {
1263+ let hq = fs(ft, bp(fu), unit, unit)
1264+ let hk = hq._1
1265+ let ev = hq._2
1266+ let fr = hq._3
1267+ let hj = hq._4
1268+ let fy = hq._5
1269+ $Tuple2(nil, $Tuple3(hk, fr, hj))
12561270 }
12571271
12581272
12591273
1260-@Callable(fb)
1261-func getOneTkn (ho,ha) = {
1262- let hc = {
1274+@Callable(fd)
1275+func getOneTkn (hr,he) = {
1276+ let hg = {
12631277 let bg = invoke(bd, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
12641278 if ($isInstanceOf(bg, "Boolean"))
12651279 then bg
12661280 else throw(($getType(bg) + " couldn't be cast to Boolean"))
12671281 }
1268- let hp = if (if (bi())
1282+ let fg = if (!(bj(fd.caller)))
1283+ then if (if (bk())
1284+ then true
1285+ else (bx == n))
1286+ then true
1287+ else hg
1288+ else false
1289+ let fZ = [if (if (!(fg))
12691290 then true
1270- else (bv == n))
1291+ else gt(fd))
12711292 then true
1272- else hc
1273- let fV = [if (if (!(hp))
1274- then true
1275- else gp(fb))
1276- then true
1277- else ba("get operation is blocked by admin"), if ((size(fb.payments) == 1))
1293+ else ba("get operation is blocked by admin"), if ((size(fd.payments) == 1))
12781294 then true
12791295 else ba("exactly 1 payment are expected")]
1280- if ((fV == fV))
1296+ if ((fZ == fZ))
12811297 then {
1282- let fU = bn(ho)
1283- let he = fb.payments[0]
1284- let fq = he.assetId
1285- let fC = he.amount
1286- let eH = eA(toBigInt(0), toBigInt(0), toBigInt(0))
1287- if ((eH == eH))
1298+ let fY = bp(hr)
1299+ let hh = fd.payments[0]
1300+ let fu = hh.assetId
1301+ let fG = hh.amount
1302+ let eJ = eC(toBigInt(0), toBigInt(0), toBigInt(0))
1303+ if ((eJ == eJ))
12881304 then {
1289- let ab = fb.caller
1290- let ac = fb.transactionId
1291- let hq = fT(fU, fC, fq, ab, ac)
1292- if ((hq == hq))
1305+ let ab = fd.caller
1306+ let ac = fd.transactionId
1307+ let hs = fX(fY, fG, fu, ab, ac)
1308+ if ((hs == hs))
12931309 then {
1294- let fW = hq._5
1295- let hg = hq._4
1296- let fn = hq._3
1297- let et = hq._2
1298- let hr = hq._1
1299- let cf = if (if ((ha > 0))
1300- then (ha > hr)
1310+ let ga = hs._5
1311+ let hj = hs._4
1312+ let fr = hs._3
1313+ let ev = hs._2
1314+ let ht = hs._1
1315+ let ch = if (if ((he > 0))
1316+ then (he > ht)
13011317 else false)
1302- then ba(makeString(["amount to receive is less than ", toString(ha)], ""))
1303- else hr
1304- let hs = invoke(bd, "burn", [fC], [AttachedPayment(fq, fC)])
1305- if ((hs == hs))
1318+ then ba(makeString(["amount to receive is less than ", toString(he)], ""))
1319+ else ht
1320+ let hu = invoke(bd, "burn", [fG], [AttachedPayment(fu, fG)])
1321+ if ((hu == hu))
13061322 then {
1307- let gN = cP(ho, (cf + max([0, fn])))
1308- let ht = [ScriptTransfer(ab, cf, fU)]
1309- let hk = if ((fn > 0))
1310- then [ScriptTransfer(be, fn, fU)]
1323+ let gR = cR(hr, (ch + max([0, fr])))
1324+ let hv = [ScriptTransfer(ab, ch, fY)]
1325+ let hn = if ((fr > 0))
1326+ then [ScriptTransfer(be, fr, fY)]
13111327 else nil
1312- let hu = {
1313- let hv = if ((this == be))
1328+ let hw = {
1329+ let hx = if ((this == be))
13141330 then 0
1315- else fn
1316- if (fW)
1317- then $Tuple2(-((cf + hv)), 0)
1318- else $Tuple2(0, -((cf + hv)))
1331+ else fr
1332+ if (ga)
1333+ then $Tuple2(-((ch + hx)), 0)
1334+ else $Tuple2(0, -((ch + hx)))
13191335 }
1320- let eJ = hu._1
1321- let eK = hu._2
1322- let hw = eI(eJ, eK, 0)
1323- let gL = hw._1
1324- let ez = hw._2
1325- let gW = eN(eH, ez)
1326- if ((gW == gW))
1327- then $Tuple2(((((et ++ gN) ++ ht) ++ hk) ++ gL), cf)
1336+ let eL = hw._1
1337+ let eM = hw._2
1338+ let hy = eK(eL, eM, 0)
1339+ let gP = hy._1
1340+ let eB = hy._2
1341+ let ha = eP(eJ, eB)
1342+ if ((ha == ha))
1343+ then $Tuple2(((((ev ++ gR) ++ hv) ++ hn) ++ gP), ch)
13281344 else throw("Strict value is not equal to itself.")
13291345 }
13301346 else throw("Strict value is not equal to itself.")
13311347 }
13321348 else throw("Strict value is not equal to itself.")
13331349 }
13341350 else throw("Strict value is not equal to itself.")
13351351 }
13361352 else throw("Strict value is not equal to itself.")
13371353 }
13381354
13391355
13401356
1341-@Callable(fb)
1342-func getOneTknREADONLY (fU,fC) = {
1343- let hx = fT(bn(fU), fC, bw, unit, unit)
1344- let hr = hx._1
1345- let et = hx._2
1346- let fn = hx._3
1347- let hg = hx._4
1348- let fW = hx._5
1349- $Tuple2(nil, $Tuple3(hr, fn, hg))
1357+@Callable(fd)
1358+func getOneTknREADONLY (fY,fG) = {
1359+ let hz = fX(bp(fY), fG, by, unit, unit)
1360+ let ht = hz._1
1361+ let ev = hz._2
1362+ let fr = hz._3
1363+ let hj = hz._4
1364+ let ga = hz._5
1365+ $Tuple2(nil, $Tuple3(ht, fr, hj))
13501366 }
13511367
13521368
13531369
1354-@Callable(fb)
1355-func unstakeAndGetOneTkn (hy,ho,ha) = {
1356- let hc = {
1370+@Callable(fd)
1371+func unstakeAndGetOneTkn (hA,hr,he) = {
1372+ let hg = {
13571373 let bg = invoke(bd, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
13581374 if ($isInstanceOf(bg, "Boolean"))
13591375 then bg
13601376 else throw(($getType(bg) + " couldn't be cast to Boolean"))
13611377 }
1362- let hp = if (if (bi())
1378+ let fg = if (!(bj(fd.caller)))
1379+ then if (if (bk())
1380+ then true
1381+ else (bx == n))
1382+ then true
1383+ else hg
1384+ else false
1385+ let fZ = [if (if (!(fg))
13631386 then true
1364- else (bv == n))
1387+ else gt(fd))
13651388 then true
1366- else hc
1367- let fV = [if (if (!(hp))
1368- then true
1369- else gp(fb))
1370- then true
1371- else ba("get operation is blocked by admin"), if ((size(fb.payments) == 0))
1389+ else ba("get operation is blocked by admin"), if ((size(fd.payments) == 0))
13721390 then true
13731391 else ba("no payments are expected")]
1374- if ((fV == fV))
1392+ if ((fZ == fZ))
13751393 then {
1376- let fU = bn(ho)
1377- let ab = fb.caller
1378- let ac = fb.transactionId
1379- let eH = eA(toBigInt(0), toBigInt(0), toBigInt(0))
1380- if ((eH == eH))
1394+ let fY = bp(hr)
1395+ let ab = fd.caller
1396+ let ac = fd.transactionId
1397+ let eJ = eC(toBigInt(0), toBigInt(0), toBigInt(0))
1398+ if ((eJ == eJ))
13811399 then {
1382- let hz = invoke(bC, "unstake", [toBase58String(bw), hy], nil)
1383- if ((hz == hz))
1400+ let hB = invoke(bE, "unstake", [toBase58String(by), hA], nil)
1401+ if ((hB == hB))
13841402 then {
1385- let hA = fT(fU, hy, bw, ab, ac)
1386- if ((hA == hA))
1403+ let hC = fX(fY, hA, by, ab, ac)
1404+ if ((hC == hC))
13871405 then {
1388- let fW = hA._5
1389- let hg = hA._4
1390- let fn = hA._3
1391- let et = hA._2
1392- let hr = hA._1
1393- let cf = if (if ((ha > 0))
1394- then (ha > hr)
1406+ let ga = hC._5
1407+ let hj = hC._4
1408+ let fr = hC._3
1409+ let ev = hC._2
1410+ let ht = hC._1
1411+ let ch = if (if ((he > 0))
1412+ then (he > ht)
13951413 else false)
1396- then ba(makeString(["amount to receive is less than ", toString(ha)], ""))
1397- else hr
1398- let hs = invoke(bd, "burn", [hy], [AttachedPayment(bw, hy)])
1399- if ((hs == hs))
1414+ then ba(makeString(["amount to receive is less than ", toString(he)], ""))
1415+ else ht
1416+ let hu = invoke(bd, "burn", [hA], [AttachedPayment(by, hA)])
1417+ if ((hu == hu))
14001418 then {
1401- let gN = cP(ho, (cf + max([0, fn])))
1402- let ht = [ScriptTransfer(fb.caller, cf, fU)]
1403- let hk = if ((fn > 0))
1404- then [ScriptTransfer(be, fn, fU)]
1419+ let gR = cR(hr, (ch + max([0, fr])))
1420+ let hv = [ScriptTransfer(fd.caller, ch, fY)]
1421+ let hn = if ((fr > 0))
1422+ then [ScriptTransfer(be, fr, fY)]
14051423 else nil
1406- let hB = {
1407- let hv = if ((this == be))
1424+ let hD = {
1425+ let hx = if ((this == be))
14081426 then 0
1409- else fn
1410- if (fW)
1411- then $Tuple2(-((cf + hv)), 0)
1412- else $Tuple2(0, -((cf + hv)))
1427+ else fr
1428+ if (ga)
1429+ then $Tuple2(-((ch + hx)), 0)
1430+ else $Tuple2(0, -((ch + hx)))
14131431 }
1414- let eJ = hB._1
1415- let eK = hB._2
1416- let hC = eI(eJ, eK, 0)
1417- let gL = hC._1
1418- let ez = hC._2
1419- let gW = eN(eH, ez)
1420- if ((gW == gW))
1421- then $Tuple2(((((et ++ gN) ++ ht) ++ hk) ++ gL), cf)
1432+ let eL = hD._1
1433+ let eM = hD._2
1434+ let hE = eK(eL, eM, 0)
1435+ let gP = hE._1
1436+ let eB = hE._2
1437+ let ha = eP(eJ, eB)
1438+ if ((ha == ha))
1439+ then $Tuple2(((((ev ++ gR) ++ hv) ++ hn) ++ gP), ch)
14221440 else throw("Strict value is not equal to itself.")
14231441 }
14241442 else throw("Strict value is not equal to itself.")
14251443 }
14261444 else throw("Strict value is not equal to itself.")
14271445 }
14281446 else throw("Strict value is not equal to itself.")
14291447 }
14301448 else throw("Strict value is not equal to itself.")
14311449 }
14321450 else throw("Strict value is not equal to itself.")
14331451 }
14341452
14351453
14361454
1437-@Callable(fb)
1455+@Callable(fd)
14381456 func get () = {
1439- let ee = fa(fb)
1440- let dK = ee._1
1441- let dL = ee._2
1442- let fd = ee._3
1443- let dt = ee._4
1444- let dM = ee._5
1445- let gN = cU(dK, dL)
1446- let eH = eA(toBigInt(0), toBigInt(0), toBigInt(0))
1447- if ((eH == eH))
1457+ let eg = fc(fd)
1458+ let dM = eg._1
1459+ let dN = eg._2
1460+ let ff = eg._3
1461+ let dv = eg._4
1462+ let dO = eg._5
1463+ let gR = cW(dM, dN)
1464+ let eJ = eC(toBigInt(0), toBigInt(0), toBigInt(0))
1465+ if ((eJ == eJ))
14481466 then {
1449- let hD = invoke(bd, "burn", [fd], [AttachedPayment(dt, fd)])
1450- if ((hD == hD))
1467+ let hF = invoke(bd, "burn", [ff], [AttachedPayment(dv, ff)])
1468+ if ((hF == hF))
14511469 then {
1452- let hE = eI(-(dK), -(dL), 0)
1453- let gL = hE._1
1454- let ez = hE._2
1455- let gW = eN(eH, ez)
1456- if ((gW == gW))
1457- then ((gN ++ dM) ++ gL)
1470+ let hG = eK(-(dM), -(dN), 0)
1471+ let gP = hG._1
1472+ let eB = hG._2
1473+ let ha = eP(eJ, eB)
1474+ if ((ha == ha))
1475+ then ((gR ++ dO) ++ gP)
14581476 else throw("Strict value is not equal to itself.")
14591477 }
14601478 else throw("Strict value is not equal to itself.")
14611479 }
14621480 else throw("Strict value is not equal to itself.")
14631481 }
14641482
14651483
14661484
1467-@Callable(fb)
1468-func getNoLess (hF,hG) = {
1469- let ee = fa(fb)
1470- let dK = ee._1
1471- let dL = ee._2
1472- let fd = ee._3
1473- let dt = ee._4
1474- let dM = ee._5
1475- if ((hF > dK))
1476- then throw(((("noLessThenAmtAsset failed: " + toString(dK)) + " < ") + toString(hF)))
1477- else if ((hG > dL))
1478- then throw(((("noLessThenPriceAsset failed: " + toString(dL)) + " < ") + toString(hG)))
1485+@Callable(fd)
1486+func getNoLess (hH,hI) = {
1487+ let eg = fc(fd)
1488+ let dM = eg._1
1489+ let dN = eg._2
1490+ let ff = eg._3
1491+ let dv = eg._4
1492+ let dO = eg._5
1493+ if ((hH > dM))
1494+ then throw(((("noLessThenAmtAsset failed: " + toString(dM)) + " < ") + toString(hH)))
1495+ else if ((hI > dN))
1496+ then throw(((("noLessThenPriceAsset failed: " + toString(dN)) + " < ") + toString(hI)))
14791497 else {
1480- let gN = cU(dK, dL)
1481- let eH = eA(toBigInt(0), toBigInt(0), toBigInt(0))
1482- if ((eH == eH))
1498+ let gR = cW(dM, dN)
1499+ let eJ = eC(toBigInt(0), toBigInt(0), toBigInt(0))
1500+ if ((eJ == eJ))
14831501 then {
1484- let hD = invoke(bd, "burn", [fd], [AttachedPayment(dt, fd)])
1485- if ((hD == hD))
1502+ let hF = invoke(bd, "burn", [ff], [AttachedPayment(dv, ff)])
1503+ if ((hF == hF))
14861504 then {
1487- let hH = eI(-(dK), -(dL), 0)
1488- let gL = hH._1
1489- let ez = hH._2
1490- let gW = eN(eH, ez)
1491- if ((gW == gW))
1492- then ((gN ++ dM) ++ gL)
1505+ let hJ = eK(-(dM), -(dN), 0)
1506+ let gP = hJ._1
1507+ let eB = hJ._2
1508+ let ha = eP(eJ, eB)
1509+ if ((ha == ha))
1510+ then ((gR ++ dO) ++ gP)
14931511 else throw("Strict value is not equal to itself.")
14941512 }
14951513 else throw("Strict value is not equal to itself.")
14961514 }
14971515 else throw("Strict value is not equal to itself.")
14981516 }
14991517 }
15001518
15011519
15021520
1503-@Callable(fb)
1504-func unstakeAndGet (cf) = {
1505- let hI = if ((size(fb.payments) != 0))
1521+@Callable(fd)
1522+func unstakeAndGet (ch) = {
1523+ let hK = if ((size(fd.payments) != 0))
15061524 then throw("No payments are expected")
15071525 else true
1508- if ((hI == hI))
1526+ if ((hK == hK))
15091527 then {
1510- let di = bk()
1511- let dv = fromBase58String(di[q])
1512- let eH = eA(toBigInt(0), toBigInt(0), toBigInt(0))
1513- if ((eH == eH))
1528+ let dk = bm()
1529+ let dx = fromBase58String(dk[q])
1530+ let eJ = eC(toBigInt(0), toBigInt(0), toBigInt(0))
1531+ if ((eJ == eJ))
15141532 then {
1515- let hz = invoke(bC, "unstake", [toBase58String(dv), cf], nil)
1516- if ((hz == hz))
1533+ let hB = invoke(bE, "unstake", [toBase58String(dx), ch], nil)
1534+ if ((hB == hB))
15171535 then {
1518- let ee = dr(toBase58String(fb.transactionId), toBase58String(dv), cf, fb.caller)
1519- let dK = ee._1
1520- let dL = ee._2
1521- let dy = parseIntValue(ee._9)
1522- let dM = ee._10
1523- let gN = cU(dK, dL)
1524- let hJ = if (if (bi())
1525- then true
1526- else (dy == n))
1527- then throw(("Get operation is blocked by admin. Status = " + toString(dy)))
1536+ let eg = dt(toBase58String(fd.transactionId), toBase58String(dx), ch, fd.caller)
1537+ let dM = eg._1
1538+ let dN = eg._2
1539+ let dA = parseIntValue(eg._9)
1540+ let dO = eg._10
1541+ let gR = cW(dM, dN)
1542+ let fg = if (!(bj(fd.caller)))
1543+ then if (bk())
1544+ then true
1545+ else (bx == n)
1546+ else false
1547+ let hL = if (fg)
1548+ then throw(("Get operation is blocked by admin. Status = " + toString(dA)))
15281549 else true
1529- if ((hJ == hJ))
1550+ if ((hL == hL))
15301551 then {
1531- let hD = invoke(bd, "burn", [cf], [AttachedPayment(dv, cf)])
1532- if ((hD == hD))
1552+ let hF = invoke(bd, "burn", [ch], [AttachedPayment(dx, ch)])
1553+ if ((hF == hF))
15331554 then {
1534- let hK = eI(-(dK), -(dL), 0)
1535- let gL = hK._1
1536- let ez = hK._2
1537- let gW = eN(eH, ez)
1538- if ((gW == gW))
1539- then ((gN ++ dM) ++ gL)
1555+ let hM = eK(-(dM), -(dN), 0)
1556+ let gP = hM._1
1557+ let eB = hM._2
1558+ let ha = eP(eJ, eB)
1559+ if ((ha == ha))
1560+ then ((gR ++ dO) ++ gP)
15401561 else throw("Strict value is not equal to itself.")
15411562 }
15421563 else throw("Strict value is not equal to itself.")
15431564 }
15441565 else throw("Strict value is not equal to itself.")
15451566 }
15461567 else throw("Strict value is not equal to itself.")
15471568 }
15481569 else throw("Strict value is not equal to itself.")
15491570 }
15501571 else throw("Strict value is not equal to itself.")
15511572 }
15521573
15531574
15541575
1555-@Callable(fb)
1556-func unstakeAndGetNoLess (hy,hL,hG) = {
1557- let hp = if (bi())
1576+@Callable(fd)
1577+func unstakeAndGetNoLess (hA,hN,hI) = {
1578+ let fg = if (!(bj(fd.caller)))
1579+ then if (bk())
1580+ then true
1581+ else (bx == n)
1582+ else false
1583+ let fZ = [if (!(fg))
15581584 then true
1559- else (bv == n)
1560- let fV = [if (!(hp))
1561- then true
1562- else throw("get operation is blocked by admin"), if ((size(fb.payments) == 0))
1585+ else throw("get operation is blocked by admin"), if ((size(fd.payments) == 0))
15631586 then true
15641587 else throw("no payments are expected")]
1565- if ((fV == fV))
1588+ if ((fZ == fZ))
15661589 then {
1567- let eH = eA(toBigInt(0), toBigInt(0), toBigInt(0))
1568- if ((eH == eH))
1590+ let eJ = eC(toBigInt(0), toBigInt(0), toBigInt(0))
1591+ if ((eJ == eJ))
15691592 then {
1570- let hz = invoke(bC, "unstake", [toBase58String(bw), hy], nil)
1571- if ((hz == hz))
1593+ let hB = invoke(bE, "unstake", [toBase58String(by), hA], nil)
1594+ if ((hB == hB))
15721595 then {
1573- let ee = dr(toBase58String(fb.transactionId), toBase58String(bw), hy, fb.caller)
1574- let dK = ee._1
1575- let dL = ee._2
1576- let dM = ee._10
1577- let gN = cU(dK, dL)
1578- let hM = [if ((dK >= hL))
1596+ let eg = dt(toBase58String(fd.transactionId), toBase58String(by), hA, fd.caller)
1597+ let dM = eg._1
1598+ let dN = eg._2
1599+ let dO = eg._10
1600+ let gR = cW(dM, dN)
1601+ let hO = [if ((dM >= hN))
15791602 then true
1580- else throw(makeString(["amount asset amount to receive is less than ", toString(hL)], "")), if ((dL >= hG))
1603+ else throw(makeString(["amount asset amount to receive is less than ", toString(hN)], "")), if ((dN >= hI))
15811604 then true
1582- else throw(makeString(["price asset amount to receive is less than ", toString(hG)], ""))]
1583- if ((hM == hM))
1605+ else throw(makeString(["price asset amount to receive is less than ", toString(hI)], ""))]
1606+ if ((hO == hO))
15841607 then {
1585- let hD = invoke(bd, "burn", [hy], [AttachedPayment(bw, hy)])
1586- if ((hD == hD))
1608+ let hF = invoke(bd, "burn", [hA], [AttachedPayment(by, hA)])
1609+ if ((hF == hF))
15871610 then {
1588- let hN = eI(-(dK), -(dL), 0)
1589- let gL = hN._1
1590- let ez = hN._2
1591- let gW = eN(eH, ez)
1592- if ((gW == gW))
1593- then ((gN ++ dM) ++ gL)
1611+ let hP = eK(-(dM), -(dN), 0)
1612+ let gP = hP._1
1613+ let eB = hP._2
1614+ let ha = eP(eJ, eB)
1615+ if ((ha == ha))
1616+ then ((gR ++ dO) ++ gP)
15941617 else throw("Strict value is not equal to itself.")
15951618 }
15961619 else throw("Strict value is not equal to itself.")
15971620 }
15981621 else throw("Strict value is not equal to itself.")
15991622 }
16001623 else throw("Strict value is not equal to itself.")
16011624 }
16021625 else throw("Strict value is not equal to itself.")
16031626 }
16041627 else throw("Strict value is not equal to itself.")
16051628 }
16061629
16071630
16081631
1609-@Callable(fb)
1610-func activate (hO,hP) = if ((toString(fb.caller) != toString(bd)))
1632+@Callable(fd)
1633+func activate (hQ,hR) = if ((toString(fd.caller) != toString(bd)))
16111634 then throw("permissions denied")
1612- else $Tuple2([StringEntry(ae(), hO), StringEntry(af(), hP)], "success")
1635+ else $Tuple2([StringEntry(ae(), hQ), StringEntry(af(), hR)], "success")
16131636
16141637
16151638
1616-@Callable(fb)
1639+@Callable(fd)
16171640 func refreshKLp () = {
1618- let hQ = valueOrElse(getInteger(ak), 0)
1619- let hR = if (((height - hQ) >= an))
1641+ let hS = valueOrElse(getInteger(ak), 0)
1642+ let hT = if (((height - hS) >= an))
16201643 then unit
16211644 else ba(makeString([toString(an), " blocks have not passed since the previous call"], ""))
1622- if ((hR == hR))
1645+ if ((hT == hT))
16231646 then {
1624- let eU = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, aj), "0")), bc("invalid kLp"))
1625- let hS = eI(0, 0, 0)
1626- let hT = hS._1
1627- let ez = hS._2
1628- let eL = if ((eU != ez))
1629- then hT
1647+ let eW = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, aj), "0")), bc("invalid kLp"))
1648+ let hU = eK(0, 0, 0)
1649+ let hV = hU._1
1650+ let eB = hU._2
1651+ let eN = if ((eW != eB))
1652+ then hV
16301653 else ba("nothing to refresh")
1631- $Tuple2(eL, toString(ez))
1654+ $Tuple2(eN, toString(eB))
16321655 }
16331656 else throw("Strict value is not equal to itself.")
16341657 }
16351658
16361659
16371660
1638-@Callable(fb)
1639-func getPoolConfigWrapperREADONLY () = $Tuple2(nil, bk())
1661+@Callable(fd)
1662+func getPoolConfigWrapperREADONLY () = $Tuple2(nil, bm())
16401663
16411664
16421665
1643-@Callable(fb)
1644-func getAccBalanceWrapperREADONLY (ap) = $Tuple2(nil, bT(ap))
1666+@Callable(fd)
1667+func getAccBalanceWrapperREADONLY (ap) = $Tuple2(nil, bV(ap))
16451668
16461669
16471670
1648-@Callable(fb)
1649-func calcPricesWrapperREADONLY (dc,dd,dh) = {
1650- let dq = dg(dc, dd, dh)
1651- $Tuple2(nil, [toString(dq[0]), toString(dq[1]), toString(dq[2])])
1671+@Callable(fd)
1672+func calcPricesWrapperREADONLY (de,df,dj) = {
1673+ let ds = di(de, df, dj)
1674+ $Tuple2(nil, [toString(ds[0]), toString(ds[1]), toString(ds[2])])
16521675 }
16531676
16541677
16551678
1656-@Callable(fb)
1679+@Callable(fd)
16571680 func toX18WrapperREADONLY (E,F) = $Tuple2(nil, toString(D(E, F)))
16581681
16591682
16601683
1661-@Callable(fb)
1684+@Callable(fd)
16621685 func fromX18WrapperREADONLY (I,J) = $Tuple2(nil, H(parseBigIntValue(I), J))
16631686
16641687
16651688
1666-@Callable(fb)
1667-func calcPriceBigIntWrapperREADONLY (bX,bY) = $Tuple2(nil, toString(bW(parseBigIntValue(bX), parseBigIntValue(bY))))
1689+@Callable(fd)
1690+func calcPriceBigIntWrapperREADONLY (bZ,ca) = $Tuple2(nil, toString(bY(parseBigIntValue(bZ), parseBigIntValue(ca))))
16681691
16691692
16701693
1671-@Callable(fb)
1672-func estimatePutOperationWrapperREADONLY (ds,dO,dP,dQ,dR,dS,ab,dT,dU) = $Tuple2(nil, dN(ds, dO, dP, dQ, dR, dS, ab, dT, dU))
1694+@Callable(fd)
1695+func estimatePutOperationWrapperREADONLY (du,dQ,dR,dS,dT,dU,ab,dV,dW) = $Tuple2(nil, dP(du, dQ, dR, dS, dT, dU, ab, dV, dW))
16731696
16741697
16751698
1676-@Callable(fb)
1677-func estimateGetOperationWrapperREADONLY (ds,dt,du,ab) = {
1678- let ee = dr(ds, dt, du, addressFromStringValue(ab))
1679- $Tuple2(nil, $Tuple10(ee._1, ee._2, ee._3, ee._4, ee._5, ee._6, ee._7, toString(ee._8), ee._9, ee._10))
1699+@Callable(fd)
1700+func estimateGetOperationWrapperREADONLY (du,dv,dw,ab) = {
1701+ let eg = dt(du, dv, dw, addressFromStringValue(ab))
1702+ $Tuple2(nil, $Tuple10(eg._1, eg._2, eg._3, eg._4, eg._5, eg._6, eg._7, toString(eg._8), eg._9, eg._10))
16801703 }
16811704
16821705
16831706
1684-@Callable(fb)
1707+@Callable(fd)
16851708 func statsREADONLY () = {
1686- let di = bk()
1687- let dv = fromBase58String(di[q])
1688- let hU = di[r]
1689- let hV = di[s]
1690- let dX = di[v]
1691- let dY = di[w]
1692- let dj = parseIntValue(di[t])
1693- let dk = parseIntValue(di[u])
1694- let hW = valueOrErrorMessage(assetInfo(dv), (("Asset " + toBase58String(dv)) + " doesn't exist")).quantity
1695- let hX = bT(hU)
1696- let hY = bT(hV)
1697- let hZ = if ((hW == 0))
1709+ let dk = bm()
1710+ let dx = fromBase58String(dk[q])
1711+ let hW = dk[r]
1712+ let hX = dk[s]
1713+ let dZ = dk[v]
1714+ let ea = dk[w]
1715+ let dl = parseIntValue(dk[t])
1716+ let dm = parseIntValue(dk[u])
1717+ let hY = valueOrErrorMessage(assetInfo(dx), (("Asset " + toBase58String(dx)) + " doesn't exist")).quantity
1718+ let hZ = bV(hW)
1719+ let ia = bV(hX)
1720+ let ib = if ((hY == 0))
16981721 then [e, e, e]
1699- else dg(hX, hY, hW)
1700- let dF = 0
1701- let ia = H(hZ[1], b)
1702- let ib = H(hZ[2], b)
1703- let ic = value(getInteger(bd, aD(toString(this))))
1704- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(hX), toString(hY), toString(hW), toString(dF), toString(ia), toString(ib), toString(ic)], j))
1722+ else di(hZ, ia, hY)
1723+ let dH = 0
1724+ let ic = H(ib[1], b)
1725+ let id = H(ib[2], b)
1726+ let ie = value(getInteger(bd, aD(toString(this))))
1727+ $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))
17051728 }
17061729
17071730
17081731
1709-@Callable(fb)
1710-func evaluatePutByAmountAssetREADONLY (dP) = {
1711- let di = bk()
1712- let dv = fromBase58String(di[q])
1713- let dV = di[r]
1714- let dw = fromBase58String(dV)
1715- let dW = di[s]
1716- let dx = fromBase58String(dW)
1717- let dj = parseIntValue(di[t])
1718- let dk = parseIntValue(di[u])
1719- let dy = di[p]
1720- let hW = valueOrErrorMessage(assetInfo(dv), (("Asset " + toBase58String(dv)) + " doesn't exist")).quantity
1721- let hX = bT(dV)
1722- let hY = bT(dW)
1723- let de = D(hX, dj)
1724- let df = D(hY, dk)
1725- let dE = if ((hW == 0))
1732+@Callable(fd)
1733+func evaluatePutByAmountAssetREADONLY (dR) = {
1734+ let dk = bm()
1735+ let dx = fromBase58String(dk[q])
1736+ let dX = dk[r]
1737+ let dy = fromBase58String(dX)
1738+ let dY = dk[s]
1739+ let dz = fromBase58String(dY)
1740+ let dl = parseIntValue(dk[t])
1741+ let dm = parseIntValue(dk[u])
1742+ let dA = dk[p]
1743+ let hY = valueOrErrorMessage(assetInfo(dx), (("Asset " + toBase58String(dx)) + " doesn't exist")).quantity
1744+ let hZ = bV(dX)
1745+ let ia = bV(dY)
1746+ let dg = D(hZ, dl)
1747+ let dh = D(ia, dm)
1748+ let dG = if ((hY == 0))
17261749 then e
1727- else bW(df, de)
1728- let eb = D(dP, dj)
1729- let ec = fraction(eb, dE, d)
1730- let dR = H(ec, dk)
1731- let fh = dN("", 500000, dP, dw, dR, dx, "", true, false)
1732- let em = fh._1
1733- let id = fh._3
1734- let dA = fh._4
1735- let dC = fh._5
1736- let dz = fh._6
1737- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(em), toString(H(dE, b)), toString(dA), toString(dC), toString(dz), dy, toString(dP), toString(dR)], j))
1750+ else bY(dh, dg)
1751+ let ed = D(dR, dl)
1752+ let ee = fraction(ed, dG, d)
1753+ let dT = H(ee, dm)
1754+ let fk = dP("", 500000, dR, dy, dT, dz, "", true, false)
1755+ let eo = fk._1
1756+ let if = fk._3
1757+ let dC = fk._4
1758+ let dE = fk._5
1759+ let dB = fk._6
1760+ $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))
17381761 }
17391762
17401763
17411764
1742-@Callable(fb)
1743-func evaluatePutByPriceAssetREADONLY (dR) = {
1744- let di = bk()
1745- let dv = fromBase58String(di[q])
1746- let dV = di[r]
1747- let dw = fromBase58String(dV)
1748- let dW = di[s]
1749- let dx = fromBase58String(dW)
1750- let dj = parseIntValue(di[t])
1751- let dk = parseIntValue(di[u])
1752- let dy = di[p]
1753- let hW = valueOrErrorMessage(assetInfo(dv), (("Asset " + toBase58String(dv)) + " doesn't exist")).quantity
1754- let ie = bT(dV)
1755- let if = bT(dW)
1756- let ig = D(ie, dj)
1757- let ih = D(if, dk)
1758- let dE = if ((hW == 0))
1765+@Callable(fd)
1766+func evaluatePutByPriceAssetREADONLY (dT) = {
1767+ let dk = bm()
1768+ let dx = fromBase58String(dk[q])
1769+ let dX = dk[r]
1770+ let dy = fromBase58String(dX)
1771+ let dY = dk[s]
1772+ let dz = fromBase58String(dY)
1773+ let dl = parseIntValue(dk[t])
1774+ let dm = parseIntValue(dk[u])
1775+ let dA = dk[p]
1776+ let hY = valueOrErrorMessage(assetInfo(dx), (("Asset " + toBase58String(dx)) + " doesn't exist")).quantity
1777+ let ig = bV(dX)
1778+ let ih = bV(dY)
1779+ let ii = D(ig, dl)
1780+ let ij = D(ih, dm)
1781+ let dG = if ((hY == 0))
17591782 then e
1760- else bW(ih, ig)
1761- let ec = D(dR, dk)
1762- let eb = fraction(ec, d, dE)
1763- let dP = H(eb, dj)
1764- let fh = dN("", 500000, dP, dw, dR, dx, "", true, false)
1765- let em = fh._1
1766- let id = fh._3
1767- let dA = fh._4
1768- let dC = fh._5
1769- let dz = fh._6
1770- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(em), toString(H(dE, b)), toString(dA), toString(dC), toString(dz), dy, toString(dP), toString(dR)], j))
1783+ else bY(ij, ii)
1784+ let ee = D(dT, dm)
1785+ let ed = fraction(ee, d, dG)
1786+ let dR = H(ed, dl)
1787+ let fk = dP("", 500000, dR, dy, dT, dz, "", true, false)
1788+ let eo = fk._1
1789+ let if = fk._3
1790+ let dC = fk._4
1791+ let dE = fk._5
1792+ let dB = fk._6
1793+ $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))
17711794 }
17721795
17731796
17741797
1775-@Callable(fb)
1776-func evaluateGetREADONLY (ii,ij) = {
1777- let ee = dr("", ii, ij, this)
1778- let dK = ee._1
1779- let dL = ee._2
1780- let dA = ee._5
1781- let dC = ee._6
1782- let dz = ee._7
1783- let dF = ee._8
1784- let dy = parseIntValue(ee._9)
1785- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(dK), toString(dL), toString(dA), toString(dC), toString(dz), toString(dF), toString(dy)], j))
1798+@Callable(fd)
1799+func evaluateGetREADONLY (ik,il) = {
1800+ let eg = dt("", ik, il, this)
1801+ let dM = eg._1
1802+ let dN = eg._2
1803+ let dC = eg._5
1804+ let dE = eg._6
1805+ let dB = eg._7
1806+ let dH = eg._8
1807+ let dA = parseIntValue(eg._9)
1808+ $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))
17861809 }
17871810
17881811
1789-@Verifier(ik)
1790-func il () = {
1791- let im = {
1792- let aQ = gn()
1812+@Verifier(im)
1813+func in () = {
1814+ let io = {
1815+ let aQ = gr()
17931816 if ($isInstanceOf(aQ, "ByteVector"))
17941817 then {
1795- let gq = aQ
1796- gq
1818+ let gu = aQ
1819+ gu
17971820 }
17981821 else if ($isInstanceOf(aQ, "Unit"))
1799- then ik.senderPublicKey
1822+ then im.senderPublicKey
18001823 else throw("Match error")
18011824 }
1802- let aQ = ik
1825+ let aQ = im
18031826 if ($isInstanceOf(aQ, "Order"))
18041827 then {
1805- let eQ = aQ
1806- let in = bj()
1807- let io = if (eM())
1828+ let eS = aQ
1829+ let ip = bl()
1830+ let iq = if (eO())
18081831 then $Tuple2(true, "")
1809- else eP(eQ)
1810- let aK = io._1
1811- let aL = io._2
1812- let aM = sigVerify(eQ.bodyBytes, eQ.proofs[0], eQ.senderPublicKey)
1813- let aN = sigVerify(eQ.bodyBytes, eQ.proofs[1], in)
1832+ else eR(eS)
1833+ let aK = iq._1
1834+ let aL = iq._2
1835+ let aM = sigVerify(eS.bodyBytes, eS.proofs[0], eS.senderPublicKey)
1836+ let aN = sigVerify(eS.bodyBytes, eS.proofs[1], ip)
18141837 if (if (if (aK)
18151838 then aM
18161839 else false)
18171840 then aN
18181841 else false)
18191842 then true
18201843 else aJ(aK, aL, aM, aN)
18211844 }
18221845 else if ($isInstanceOf(aQ, "SetScriptTransaction"))
18231846 then {
18241847 let aV = aQ
1825- if (sigVerify(ik.bodyBytes, ik.proofs[0], im))
1848+ if (sigVerify(im.bodyBytes, im.proofs[0], io))
18261849 then true
18271850 else {
1828- let ip = blake2b256(value(aV.script))
1829- let iq = fromBase64String(value(getString(bd, aF())))
1830- let ir = scriptHash(this)
1831- if ((iq == ip))
1832- then (ir != ip)
1851+ let ir = blake2b256(value(aV.script))
1852+ let is = fromBase64String(value(getString(bd, aF())))
1853+ let it = scriptHash(this)
1854+ if ((is == ir))
1855+ then (it != ir)
18331856 else false
18341857 }
18351858 }
1836- else sigVerify(ik.bodyBytes, ik.proofs[0], im)
1859+ else sigVerify(im.bodyBytes, im.proofs[0], io)
18371860 }
18381861

github/deemru/w8io/6500d08 
829.31 ms