tx · 9HLC5AWzXrMQYd4auV5M1UtXZfgey2rCD1UfaknXju43

3N7b3kPunHUXhZp1vMG9NhPMARNEprCMWxT:  -0.03800000 Waves

2023.03.06 11:04 [2477964] smart account 3N7b3kPunHUXhZp1vMG9NhPMARNEprCMWxT > SELF 0.00000000 Waves

{ "type": 13, "id": "9HLC5AWzXrMQYd4auV5M1UtXZfgey2rCD1UfaknXju43", "fee": 3800000, "feeAssetId": null, "timestamp": 1678089873909, "version": 2, "chainId": 84, "sender": "3N7b3kPunHUXhZp1vMG9NhPMARNEprCMWxT", "senderPublicKey": "AYbpHveq7zviKTDV7SGTB1pZGFbkumgfq3jSwVv6BznT", "proofs": [ "fTjWNFjvC7GzeGWbBZV9ebSX2XesbNJLZiWq3oLmETssXrxmwAx9G8xeG6Wt4izs4FmBBDn64xaU1g5E19V2qJB" ], "script": "base64:BgLRLwgCEgQKAgEEEgYKBAEEAQgSAwoBCBIAEgQKAgEEEgMKAQESBAoCAQQSBAoCCAESBAoCCAESBAoCCAESBQoDAQgBEgASBAoCAQESAwoBARIFCgMBAQESBAoCCAgSABIAEgMKAQgSBQoDAQEBEgQKAgEBEgQKAggBEgQKAggIEgsKCQgBAQIBAggEBBIGCgQICAEIEgASAwoBARIDCgEBEgQKAggBIgpsUGRlY2ltYWxzIgZzY2FsZTgiDHNjYWxlOEJpZ0ludCIHc2NhbGUxOCIKemVyb0JpZ0ludCIEYmlnMCIEYmlnMSIEYmlnMiILd2F2ZXNTdHJpbmciA1NFUCIKUG9vbEFjdGl2ZSIPUG9vbFB1dERpc2FibGVkIhNQb29sTWF0Y2hlckRpc2FibGVkIgxQb29sU2h1dGRvd24iDmlkeFBvb2xBZGRyZXNzIg1pZHhQb29sU3RhdHVzIhBpZHhQb29sTFBBc3NldElkIg1pZHhBbXRBc3NldElkIg9pZHhQcmljZUFzc2V0SWQiDmlkeEFtdEFzc2V0RGNtIhBpZHhQcmljZUFzc2V0RGNtIg5pZHhJQW10QXNzZXRJZCIQaWR4SVByaWNlQXNzZXRJZCINaWR4TFBBc3NldERjbSISaWR4UG9vbEFtdEFzc2V0QW10IhRpZHhQb29sUHJpY2VBc3NldEFtdCIRaWR4UG9vbExQQXNzZXRBbXQiGWlkeEZhY3RvcnlTdGFraW5nQ29udHJhY3QiGmlkeEZhY3RvcnlTbGlwcGFnZUNvbnRyYWN0IgV0b1gxOCIHb3JpZ1ZhbCINb3JpZ1NjYWxlTXVsdCILdG9YMThCaWdJbnQiB2Zyb21YMTgiA3ZhbCIPcmVzdWx0U2NhbGVNdWx0Igxmcm9tWDE4Um91bmQiBXJvdW5kIgd0b1NjYWxlIgNhbXQiCHJlc1NjYWxlIghjdXJTY2FsZSIDYWJzIglhYnNCaWdJbnQiDHN3YXBDb250cmFjdCICZmMiA21wayIEcG1wayICcGwiAnBoIgFoIgl0aW1lc3RhbXAiA3BhdSILdXNlckFkZHJlc3MiBHR4SWQiA2dhdSICYWEiAnBhIgZrZXlGZWUiCmZlZURlZmF1bHQiA2ZlZSIGa2V5S0xwIhVrZXlLTHBSZWZyZXNoZWRIZWlnaHQiEmtleUtMcFJlZnJlc2hEZWxheSIWa0xwUmVmcmVzaERlbGF5RGVmYXVsdCIPa0xwUmVmcmVzaERlbGF5IhBrZXlGYWN0b3J5Q29uZmlnIg1rZXlNYXRjaGVyUHViIilrZXlNYXBwaW5nUG9vbENvbnRyYWN0QWRkcmVzc1RvUG9vbEFzc2V0cyITcG9vbENvbnRyYWN0QWRkcmVzcyINa2V5UG9vbENvbmZpZyIJaUFtdEFzc2V0IgtpUHJpY2VBc3NldCIfa2V5TWFwcGluZ3NCYXNlQXNzZXQyaW50ZXJuYWxJZCIMYmFzZUFzc2V0U3RyIhNrZXlBbGxQb29sc1NodXRkb3duIg1rZXlQb29sV2VpZ2h0Ig9jb250cmFjdEFkZHJlc3MiFmtleUFsbG93ZWRMcFNjcmlwdEhhc2giFmtleUZlZUNvbGxlY3RvckFkZHJlc3MiD3Rocm93T3JkZXJFcnJvciIKb3JkZXJWYWxpZCIOb3JkZXJWYWxpZEluZm8iC3NlbmRlclZhbGlkIgxtYXRjaGVyVmFsaWQiD2dldFN0cmluZ09yRmFpbCIHYWRkcmVzcyIDa2V5IgxnZXRJbnRPckZhaWwiCHRocm93RXJyIgNtc2ciBmZtdEVyciIPZmFjdG9yeUNvbnRyYWN0IhNmZWVDb2xsZWN0b3JBZGRyZXNzIgVpbkZlZSIBQCIGb3V0RmVlIhBpc0dsb2JhbFNodXRkb3duIhNnZXRNYXRjaGVyUHViT3JGYWlsIg1nZXRQb29sQ29uZmlnIghhbXRBc3NldCIKcHJpY2VBc3NldCIMcGFyc2VBc3NldElkIgVpbnB1dCIPYXNzZXRJZFRvU3RyaW5nIg9wYXJzZVBvb2xDb25maWciCnBvb2xDb25maWciEHBvb2xDb25maWdQYXJzZWQiCyR0MDg0Njk4NjM1Ig5jZmdQb29sQWRkcmVzcyINY2ZnUG9vbFN0YXR1cyIMY2ZnTHBBc3NldElkIhBjZmdBbW91bnRBc3NldElkIg9jZmdQcmljZUFzc2V0SWQiFmNmZ0Ftb3VudEFzc2V0RGVjaW1hbHMiFWNmZ1ByaWNlQXNzZXREZWNpbWFscyIQZ2V0RmFjdG9yeUNvbmZpZyIPc3Rha2luZ0NvbnRyYWN0IhBzbGlwcGFnZUNvbnRyYWN0IhFkYXRhUHV0QWN0aW9uSW5mbyINaW5BbXRBc3NldEFtdCIPaW5QcmljZUFzc2V0QW10IghvdXRMcEFtdCIFcHJpY2UiHXNsaXBwYWdlVG9sZXJhbmNlUGFzc2VkQnlVc2VyIhVzbGlwcGFnZVRvbGVyYW5jZVJlYWwiCHR4SGVpZ2h0Igt0eFRpbWVzdGFtcCISc2xpcGFnZUFtdEFzc2V0QW10IhRzbGlwYWdlUHJpY2VBc3NldEFtdCIRZGF0YUdldEFjdGlvbkluZm8iDm91dEFtdEFzc2V0QW10IhBvdXRQcmljZUFzc2V0QW10IgdpbkxwQW10Ig1nZXRBY2NCYWxhbmNlIgdhc3NldElkIg9jYWxjUHJpY2VCaWdJbnQiCHByQW10WDE4IghhbUFtdFgxOCIUY2FsY1ByaWNlQmlnSW50Um91bmQiEHByaXZhdGVDYWxjUHJpY2UiCmFtQXNzZXREY20iCnByQXNzZXREY20iBWFtQW10IgVwckFtdCIOYW10QXNzZXRBbXRYMTgiEHByaWNlQXNzZXRBbXRYMTgiCmNhbGNQcmljZXMiBWxwQW10IgNjZmciC2FtdEFzc2V0RGNtIg1wcmljZUFzc2V0RGNtIghwcmljZVgxOCIIbHBBbXRYMTgiE2xwUHJpY2VJbkFtQXNzZXRYMTgiE2xwUHJpY2VJblByQXNzZXRYMTgiD2NhbGN1bGF0ZVByaWNlcyIGcHJpY2VzIhRlc3RpbWF0ZUdldE9wZXJhdGlvbiIGdHhJZDU4IgpwbXRBc3NldElkIghwbXRMcEFtdCIJbHBBc3NldElkIglhbUFzc2V0SWQiCXByQXNzZXRJZCIKcG9vbFN0YXR1cyIKbHBFbWlzc2lvbiIJYW1CYWxhbmNlIgxhbUJhbGFuY2VYMTgiCXByQmFsYW5jZSIMcHJCYWxhbmNlWDE4IgtjdXJQcmljZVgxOCIIY3VyUHJpY2UiC3BtdExwQW10WDE4Ig1scEVtaXNzaW9uWDE4IgtvdXRBbUFtdFgxOCILb3V0UHJBbXRYMTgiCG91dEFtQW10IghvdXRQckFtdCIFc3RhdGUiFGVzdGltYXRlUHV0T3BlcmF0aW9uIhFzbGlwcGFnZVRvbGVyYW5jZSIMaW5BbUFzc2V0QW10IgtpbkFtQXNzZXRJZCIMaW5QckFzc2V0QW10IgtpblByQXNzZXRJZCIKaXNFdmFsdWF0ZSIGZW1pdExwIgxhbUFzc2V0SWRTdHIiDHByQXNzZXRJZFN0ciILaUFtdEFzc2V0SWQiDWlQcmljZUFzc2V0SWQiDmluQW1Bc3NldElkU3RyIg5pblByQXNzZXRJZFN0ciIPaW5BbUFzc2V0QW10WDE4Ig9pblByQXNzZXRBbXRYMTgiDHVzZXJQcmljZVgxOCIDcmVzIgtzbGlwcGFnZVgxOCIUc2xpcHBhZ2VUb2xlcmFuY2VYMTgiCnByVmlhQW1YMTgiCmFtVmlhUHJYMTgiDGV4cGVjdGVkQW10cyIRZXhwQW10QXNzZXRBbXRYMTgiE2V4cFByaWNlQXNzZXRBbXRYMTgiCWNhbGNMcEFtdCIOY2FsY0FtQXNzZXRQbXQiDmNhbGNQckFzc2V0UG10IgxzbGlwcGFnZUNhbGMiCWVtaXRMcEFtdCIGYW1EaWZmIgZwckRpZmYiC2NvbW1vblN0YXRlIgdjYWxjS0xwIg1hbW91bnRCYWxhbmNlIgxwcmljZUJhbGFuY2UiEGFtb3VudEJhbGFuY2VYMTgiD3ByaWNlQmFsYW5jZVgxOCIKdXBkYXRlZEtMcCIOY2FsY0N1cnJlbnRLTHAiEGFtb3VudEFzc2V0RGVsdGEiD3ByaWNlQXNzZXREZWx0YSIUbHBBc3NldEVtaXNzaW9uRGVsdGEiEmFtb3VudEFzc2V0QmFsYW5jZSIRcHJpY2VBc3NldEJhbGFuY2UiD2xwQXNzZXRFbWlzc2lvbiIKY3VycmVudEtMcCIScmVmcmVzaEtMcEludGVybmFsIhdhbW91bnRBc3NldEJhbGFuY2VEZWx0YSIWcHJpY2VBc3NldEJhbGFuY2VEZWx0YSIHYWN0aW9ucyISdmFsaWRhdGVVcGRhdGVkS0xwIgZvbGRLTHAiG3ZhbGlkYXRlTWF0Y2hlck9yZGVyQWxsb3dlZCIFb3JkZXIiEWFtb3VudEFzc2V0QW1vdW50IhBwcmljZUFzc2V0QW1vdW50Ig0kdDAyMTU0MTIxNzUzIgNrTHAiDSR0MDIyMTkzMjIyOTMiDXVudXNlZEFjdGlvbnMiBmtMcE5ldyIMaXNPcmRlclZhbGlkIgRpbmZvIgljb21tb25HZXQiAWkiA3BtdCIGcG10QW10Igljb21tb25QdXQiCmFtQXNzZXRQbXQiCnByQXNzZXRQbXQiBmVzdFB1dCIEZW1pdCIGYW1vdW50IgdlbWl0SW52Ig1lbWl0SW52TGVnYWN5IgckbWF0Y2gwIhVsZWdhY3lGYWN0b3J5Q29udHJhY3QiB3Rha2VGZWUiCWZlZUFtb3VudCIPY2FsY1B1dE9uZVRva2VuIhBwYXltZW50QW1vdW50UmF3Ig5wYXltZW50QXNzZXRJZCIGaXNFdmFsIhBhbW91bnRCYWxhbmNlUmF3Ig9wcmljZUJhbGFuY2VSYXciFHBheW1lbnRJbkFtb3VudEFzc2V0Ig0kdDAyNTQwNjI1Njk5IhBhbW91bnRCYWxhbmNlT2xkIg9wcmljZUJhbGFuY2VPbGQiDSR0MDI1NzAzMjU4NTIiFGFtb3VudEFzc2V0QW1vdW50UmF3IhNwcmljZUFzc2V0QW1vdW50UmF3Ig0kdDAyNTk4NDI2MDQ4Ig1wYXltZW50QW1vdW50IhBhbW91bnRCYWxhbmNlTmV3Ig9wcmljZUJhbGFuY2VOZXciC3ByaWNlTmV3WDE4IghwcmljZU5ldyIOcGF5bWVudEJhbGFuY2UiFHBheW1lbnRCYWxhbmNlQmlnSW50IgxzdXBwbHlCaWdJbnQiC2NoZWNoU3VwcGx5Ig1kZXBvc2l0QmlnSW50Igtpc3N1ZUFtb3VudCILcHJpY2VPbGRYMTgiCHByaWNlT2xkIgRsb3NzIg0kdDAyNzcyOTI3ODk2IgdiYWxhbmNlIg9pc3N1ZUFtb3VudEJvdGgiD2NhbGNHZXRPbmVUb2tlbiIKb3V0QXNzZXRJZCIGY2hlY2tzIhBvdXRJbkFtb3VudEFzc2V0Ig1iYWxhbmNlQmlnSW50IhhvdXRJbkFtb3VudEFzc2V0RGVjaW1hbHMiDGFtQmFsYW5jZU9sZCIMcHJCYWxhbmNlT2xkIgpvdXRCYWxhbmNlIhBvdXRCYWxhbmNlQmlnSW50Ig5yZWRlZW1lZEJpZ0ludCIJYW1vdW50UmF3Ig0kdDAyOTk3NDMwMDMwIgt0b3RhbEFtb3VudCINJHQwMzAwMzQzMDI2MCILb3V0QW1BbW91bnQiC291dFByQW1vdW50IgxhbUJhbGFuY2VOZXciDHByQmFsYW5jZU5ldyIYYW1vdW50Qm90aEluUGF5bWVudEFzc2V0IhZtYW5hZ2VyUHVibGljS2V5T3JVbml0IgFzIh1wZW5kaW5nTWFuYWdlclB1YmxpY0tleU9yVW5pdCIJaXNNYW5hZ2VyIgJwayILbXVzdE1hbmFnZXIiAnBkIg1jbGVhbkFtb3VudEluIglpc1JldmVyc2UiDSR0MDMxOTU3MzIyNjIiCGFzc2V0T3V0Igdhc3NldEluIhJwb29sQXNzZXRJbkJhbGFuY2UiE3Bvb2xBc3NldE91dEJhbGFuY2UiCWFtb3VudE91dCIEb2xkSyIEbmV3SyIGY2hlY2tLIgxhbW91bnRPdXRNaW4iCWFkZHJlc3NUbyILc3dhcENvbnRhY3QiCGNoZWNrTWluIhdwZW5kaW5nTWFuYWdlclB1YmxpY0tleSILY2hlY2tDYWxsZXIiFWNoZWNrTWFuYWdlclB1YmxpY0tleSICcG0iBWhhc1BNIgdjaGVja1BNIg9zaG91bGRBdXRvU3Rha2UiBGFtSWQiBHBySWQiDHNsaXBwYWdlQUludiIMc2xpcHBhZ2VQSW52IgpscFRyYW5zZmVyIgtzbHBTdGFrZUludiINJHQwMzcwNzEzNzUzMyIRcmVmcmVzaEtMcEFjdGlvbnMiEWlzVXBkYXRlZEtMcFZhbGlkIgttYXhTbGlwcGFnZSINJHQwMzgwOTUzODE2MCIMbWluT3V0QW1vdW50IglhdXRvU3Rha2UiIGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkIg1pc1B1dERpc2FibGVkIgdwYXltZW50Ig0kdDAzOTM0ODM5NTAwIgVib251cyITZW1pdEFtb3VudEVzdGltYXRlZCIKZW1pdEFtb3VudCIIc3Rha2VJbnYiB3NlbmRGZWUiDSR0MDQwMDg2NDAyODMiDSR0MDQwMjg2NDAzOTQiDSR0MDQwNzAwNDA4NTciDW91dEFzc2V0SWRTdHIiDWlzR2V0RGlzYWJsZWQiDSR0MDQxNzQyNDE4OTUiD2Ftb3VudEVzdGltYXRlZCIHYnVybkludiINYXNzZXRUcmFuc2ZlciINJHQwNDIzOTU0MjY0MiIQZmVlQW1vdW50Rm9yQ2FsYyINJHQwNDI2NDU0Mjc1MyINJHQwNDMwMTA0MzE2NiINdW5zdGFrZUFtb3VudCIKdW5zdGFrZUludiINJHQwNDQwNzE0NDIyMiINJHQwNDQ3MTc0NDk2NCINJHQwNDQ5Njc0NTA3NSIJb3V0QW10QW10IhRidXJuTFBBc3NldE9uRmFjdG9yeSINJHQwNDYwMjE0NjEwMyISbm9MZXNzVGhlbkFtdEFzc2V0IhRub0xlc3NUaGVuUHJpY2VBc3NldCINJHQwNDcwNTI0NzEzMyINY2hlY2tQYXltZW50cyIPY2hlY2tQb29sU3RhdHVzIg0kdDA0ODI1OTQ4MzQwIhVub0xlc3NUaGVuQW1vdW50QXNzZXQiDGNoZWNrQW1vdW50cyINJHQwNDk2MzU0OTcxNiILYW10QXNzZXRTdHIiDXByaWNlQXNzZXRTdHIiGGxhc3RSZWZyZXNoZWRCbG9ja0hlaWdodCIdY2hlY2tMYXN0UmVmcmVzaGVkQmxvY2tIZWlnaHQiDSR0MDUwOTAzNTA5NjciEGtMcFVwZGF0ZUFjdGlvbnMiCmFtdEFzc2V0SWQiDHByaWNlQXNzZXRJZCINcG9vbExQQmFsYW5jZSISYWNjQW10QXNzZXRCYWxhbmNlIhRhY2NQcmljZUFzc2V0QmFsYW5jZSIKcHJpY2VzTGlzdCIPbHBBbXRBc3NldFNoYXJlIhFscFByaWNlQXNzZXRTaGFyZSIKcG9vbFdlaWdodCIMY3VyUHJpY2VDYWxjIgxhbUJhbGFuY2VSYXciDHByQmFsYW5jZVJhdyIPYW1CYWxhbmNlUmF3WDE4Ig9wckJhbGFuY2VSYXdYMTgiEHBheW1lbnRMcEFzc2V0SWQiDHBheW1lbnRMcEFtdCICdHgiBnZlcmlmeSIPdGFyZ2V0UHVibGljS2V5IgptYXRjaGVyUHViIg0kdDA1OTYyOTU5Njk4IgduZXdIYXNoIgthbGxvd2VkSGFzaCILY3VycmVudEhhc2hzAAFhAAgAAWIAgMLXLwABYwkAtgIBAIDC1y8AAWQJALYCAQCAgJC7utat8A0AAWUJALYCAQAAAAFmCQC2AgEAAAABZwkAtgIBAAEAAWgJALYCAQACAAFpAgVXQVZFUwABagICX18AAWsAAQABbAACAAFtAAMAAW4ABAABbwABAAFwAAIAAXEAAwABcgAEAAFzAAUAAXQABgABdQAHAAF2AAgAAXcACQABeAAKAAF5AAEAAXoAAgABQQADAAFCAAEAAUMABwEBRAIBRQFGCQC8AgMJALYCAQUBRQUBZAkAtgIBBQFGAQFHAgFFAUYJALwCAwUBRQUBZAUBRgEBSAIBSQFKCQCgAwEJALwCAwUBSQkAtgIBBQFKBQFkAQFLAwFJAUoBTAkAoAMBCQC9AgQFAUkJALYCAQUBSgUBZAUBTAEBTQMBTgFPAVAJAGsDBQFOBQFPBQFQAQFRAQFJAwkAZgIAAAUBSQkBAS0BBQFJBQFJAQFSAQFJAwkAvwICBQFlBQFJCQC+AgEFAUkFAUkBAVMAAhAlc19fc3dhcENvbnRyYWN0AQFUAAITJXNfX2ZhY3RvcnlDb250cmFjdAEBVQACFCVzX19tYW5hZ2VyUHVibGljS2V5AQFWAAIbJXNfX3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5AQFXAAIRJXMlc19fcHJpY2VfX2xhc3QBAVgCAVkBWgkAuQkCCQDMCAICGCVzJXMlZCVkX19wcmljZV9faGlzdG9yeQkAzAgCCQCkAwEFAVkJAMwIAgkApAMBBQFaBQNuaWwFAWoBAmFhAgJhYgJhYwkArAICCQCsAgIJAKwCAgILJXMlcyVzX19QX18FAmFiAgJfXwUCYWMBAmFkAgJhYgJhYwkArAICCQCsAgIJAKwCAgILJXMlcyVzX19HX18FAmFiAgJfXwUCYWMBAmFlAAIPJXNfX2Ftb3VudEFzc2V0AQJhZgACDiVzX19wcmljZUFzc2V0AAJhZwIHJXNfX2ZlZQACYWgJAGsDAAoFAWIAkE4AAmFpCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFAmFnBQJhaAACYWoJALkJAgkAzAgCAgIlcwkAzAgCAgNrTHAFA25pbAUBagACYWsJALkJAgkAzAgCAgIlcwkAzAgCAhJrTHBSZWZyZXNoZWRIZWlnaHQFA25pbAUBagACYWwJALkJAgkAzAgCAgIlcwkAzAgCAg9yZWZyZXNoS0xwRGVsYXkFA25pbAUBagACYW0AHgACYW4JAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUCYWwFAmFtAQJhbwACESVzX19mYWN0b3J5Q29uZmlnAQJhcAACGCVzJXNfX21hdGNoZXJfX3B1YmxpY0tleQECYXEBAmFyCQCsAgIJAKwCAgIIJXMlcyVzX18FAmFyAiBfX21hcHBpbmdzX19wb29sQ29udHJhY3QyTHBBc3NldAECYXMCAmF0AmF1CQCsAgIJAKwCAgkArAICCQCsAgICCCVkJWQlc19fBQJhdAICX18FAmF1AghfX2NvbmZpZwECYXYBAmF3CQCsAgICKCVzJXMlc19fbWFwcGluZ3NfX2Jhc2VBc3NldDJpbnRlcm5hbElkX18FAmF3AQJheAACDCVzX19zaHV0ZG93bgECYXkBAmF6CQCsAgICEiVzJXNfX3Bvb2xXZWlnaHRfXwUCYXoBAmFBAAIXJXNfX2FsbG93ZWRMcFNjcmlwdEhhc2gAAmFCAhclc19fZmVlQ29sbGVjdG9yQWRkcmVzcwECYUMEAmFEAmFFAmFGAmFHCQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICJG9yZGVyIHZhbGlkYXRpb24gZmFpbGVkOiBvcmRlclZhbGlkPQkApQMBBQJhRAICICgFAmFFAgEpAg0gc2VuZGVyVmFsaWQ9CQClAwEFAmFGAg4gbWF0Y2hlclZhbGlkPQkApQMBBQJhRwECYUgCAmFJAmFKCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUCYUkFAmFKCQC5CQIJAMwIAgIKbWFuZGF0b3J5IAkAzAgCCQClCAEFAmFJCQDMCAICAS4JAMwIAgUCYUoJAMwIAgIPIGlzIG5vdCBkZWZpbmVkBQNuaWwCAAECYUsCAmFJAmFKCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUCYUkFAmFKCQC5CQIJAMwIAgIKbWFuZGF0b3J5IAkAzAgCCQClCAEFAmFJCQDMCAICAS4JAMwIAgUCYUoJAMwIAgIPIGlzIG5vdCBkZWZpbmVkBQNuaWwCAAECYUwBAmFNCQACAQkAuQkCCQDMCAICCGxwLnJpZGU6CQDMCAIFAmFNBQNuaWwCASABAmFOAQJhTQkAuQkCCQDMCAICCGxwLnJpZGU6CQDMCAIFAmFNBQNuaWwCASAAAmFPCQERQGV4dHJOYXRpdmUoMTA2MikBCQECYUgCBQR0aGlzCQEBVAAAAmFQCQERQGV4dHJOYXRpdmUoMTA2MikBCQECYUgCBQJhTwUCYUIAAmFRCgACYVIJAPwHBAUCYU8CEGdldEluRmVlUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJhUgIDSW50BQJhUgkAAgEJAKwCAgkAAwEFAmFSAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQAAmFTCgACYVIJAPwHBAUCYU8CEWdldE91dEZlZVJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCYVICA0ludAUCYVIJAAIBCQCsAgIJAAMBBQJhUgIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50AQJhVAAJAQt2YWx1ZU9yRWxzZQIJAJsIAgUCYU8JAQJheAAHAQJhVQAJANkEAQkBAmFIAgUCYU8JAQJhcAABAmFWAAQCYVcJAQJhSAIFBHRoaXMJAQJhZQAEAmFYCQECYUgCBQR0aGlzCQECYWYABAJhdQkBAmFLAgUCYU8JAQJhdgEFAmFYBAJhdAkBAmFLAgUCYU8JAQJhdgEFAmFXCQC1CQIJAQJhSAIFAmFPCQECYXMCCQCkAwEFAmF0CQCkAwEFAmF1BQFqAQJhWQECYVoDCQAAAgUCYVoFAWkFBHVuaXQJANkEAQUCYVoBAmJhAQJhWgMJAAACBQJhWgUEdW5pdAUBaQkA2AQBCQEFdmFsdWUBBQJhWgECYmIBAmJjCQCZCgcJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAJEDAgUCYmMFAW8JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiYwUBcAkA2QQBCQCRAwIFAmJjBQFxCQECYVkBCQCRAwIFAmJjBQFyCQECYVkBCQCRAwIFAmJjBQFzCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYmMFAXQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiYwUBdQACYmQJAQJiYgEJAQJhVgAAAmJlBQJiZAACYmYIBQJiZQJfMQACYmcIBQJiZQJfMgACYmgIBQJiZQJfMwACYmkIBQJiZQJfNAACYmoIBQJiZQJfNQACYmsIBQJiZQJfNgACYmwIBQJiZQJfNwECYm0ACQC1CQIJAQJhSAIFAmFPCQECYW8ABQFqAAJibgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgkBAmJtAAUBQgIZaW5jb3JyZWN0IHN0YWtpbmcgYWRkcmVzcwACYm8JARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIJAQJibQAFAUMCGWluY29ycmVjdCBzdGFraW5nIGFkZHJlc3MBAmJwCgJicQJicgJicwJidAJidQJidgJidwJieAJieQJiegkAuQkCCQDMCAICFCVkJWQlZCVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCYnEJAMwIAgkApAMBBQJicgkAzAgCCQCkAwEFAmJzCQDMCAIJAKQDAQUCYnQJAMwIAgkApAMBBQJidQkAzAgCCQCkAwEFAmJ2CQDMCAIJAKQDAQUCYncJAMwIAgkApAMBBQJieAkAzAgCCQCkAwEFAmJ5CQDMCAIJAKQDAQUCYnoFA25pbAUBagECYkEGAmJCAmJDAmJEAmJ0AmJ3AmJ4CQC5CQIJAMwIAgIMJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCYkIJAMwIAgkApAMBBQJiQwkAzAgCCQCkAwEFAmJECQDMCAIJAKQDAQUCYnQJAMwIAgkApAMBBQJidwkAzAgCCQCkAwEFAmJ4BQNuaWwFAWoBAmJFAQJiRgMJAAACBQJiRgIFV0FWRVMICQDvBwEFBHRoaXMJYXZhaWxhYmxlCQDwBwIFBHRoaXMJANkEAQUCYkYBAmJHAgJiSAJiSQkAvAIDBQJiSAUBZAUCYkkBAmJKAwJiSAJiSQFMCQC9AgQFAmJIBQFkBQJiSQUBTAECYksEAmJMAmJNAmJOAmJPBAJiUAkBAUQCBQJiTgUCYkwEAmJRCQEBRAIFAmJPBQJiTQkBAmJHAgUCYlEFAmJQAQJiUgMCYk4CYk8CYlMEAmJUCQECYVYABAJiVQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJUBQF0BAJiVgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJUBQF1BAJiVwkBAmJLBAUCYlUFAmJWBQJiTgUCYk8EAmJJCQEBRAIFAmJOBQJiVQQCYkgJAQFEAgUCYk8FAmJWBAJiWAkBAUQCBQJiUwUBYgQCYlkJAQJiRwIFAmJJBQJiWAQCYloJAQJiRwIFAmJIBQJiWAkAzAgCBQJiVwkAzAgCBQJiWQkAzAgCBQJiWgUDbmlsAQJjYQMCYk4CYk8CYlMEAmNiCQECYlIDBQJiTgUCYk8FAmJTCQDMCAIJAQFIAgkAkQMCBQJjYgAABQFiCQDMCAIJAQFIAgkAkQMCBQJjYgABBQFiCQDMCAIJAQFIAgkAkQMCBQJjYgACBQFiBQNuaWwBAmNjBAJjZAJjZQJjZgJhYgQCYlQJAQJhVgAEAmNnCQCRAwIFAmJUBQFxBAJjaAkAkQMCBQJiVAUBcgQCY2kJAJEDAgUCYlQFAXMEAmJMCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYlQFAXQEAmJNCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYlQFAXUEAmNqCQCRAwIFAmJUBQFwBAJjawgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBCQDZBAEFAmNnCQCsAgIJAKwCAgIGQXNzZXQgBQJjZwIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkDCQECIT0CBQJjZwUCY2UJAAIBAhVJbnZhbGlkIGFzc2V0IHBhc3NlZC4EAmNsCQECYkUBBQJjaAQCY20JAQFEAgUCY2wFAmJMBAJjbgkBAmJFAQUCY2kEAmNvCQEBRAIFAmNuBQJiTQQCY3AJAQJiRwIFAmNvBQJjbQQCY3EJAQFIAgUCY3AFAWIEAmNyCQEBRAIFAmNmBQFiBAJjcwkBAUQCBQJjawUBYgQCY3QJALwCAwUCY20FAmNyBQJjcwQCY3UJALwCAwUCY28FAmNyBQJjcwQCY3YJAQFLAwUCY3QFAmJMBQVGTE9PUgQCY3cJAQFLAwUCY3UFAmJNBQVGTE9PUgQCY3gDCQAAAgUCY2QCAAUDbmlsCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmFiBQJjdgMJAAACBQJjaAIFV0FWRVMFBHVuaXQJANkEAQUCY2gJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYWIFAmN3AwkAAAIFAmNpAgVXQVZFUwUEdW5pdAkA2QQBBQJjaQkAzAgCCQELU3RyaW5nRW50cnkCCQECYWQCCQClCAEFAmFiBQJjZAkBAmJBBgUCY3YFAmN3BQJjZgUCY3EFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFXAAUCY3EJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFYAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCY3EFA25pbAkAnAoKBQJjdgUCY3cFAmNoBQJjaQUCY2wFAmNuBQJjawUCY3AFAmNqBQJjeAECY3kJAmNkAmN6AmNBAmNCAmNDAmNEAmFiAmNFAmNGBAJiVAkBAmFWAAQCY2cJANkEAQkAkQMCBQJiVAUBcQQCY0cJAJEDAgUCYlQFAXIEAmNICQCRAwIFAmJUBQFzBAJjSQkAkQMCBQJiVAUBdgQCY0oJAJEDAgUCYlQFAXcEAmJVCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYlQFAXQEAmJWCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYlQFAXUEAmNqCQCRAwIFAmJUBQFwBAJjawgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJjZwkArAICCQCsAgICBkFzc2V0IAkA2AQBBQJjZwIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkEAmNLCQDYBAEJAQt2YWx1ZU9yRWxzZQIFAmNCCQDZBAECBVdBVkVTBAJjTAkA2AQBCQELdmFsdWVPckVsc2UCBQJjRAkA2QQBAgVXQVZFUwMDCQECIT0CBQJjRwUCY0sGCQECIT0CBQJjSAUCY0wJAAIBAiJJbnZhbGlkIGFtdCBvciBwcmljZSBhc3NldCBwYXNzZWQuBAJjbAMFAmNFCQECYkUBBQJjRwkAZQIJAQJiRQEFAmNHBQJjQQQCY24DBQJjRQkBAmJFAQUCY0gJAGUCCQECYkUBBQJjSAUCY0MEAmNNCQEBRAIFAmNBBQJiVQQCY04JAQFEAgUCY0MFAmJWBAJjTwkBAmJHAgUCY04FAmNNBAJjbQkBAUQCBQJjbAUCYlUEAmNvCQEBRAIFAmNuBQJiVgQCY1ADCQAAAgUCY2sAAAQCY3AFAWUEAmNRBQFlBAJiWAkAdgYJALkCAgUCY00FAmNOAAAJALYCAQAFAAEAAAUERE9XTgkAlwoFCQEBSAIFAmJYBQFiCQEBSAIFAmNNBQJiVQkBAUgCBQJjTgUCYlYJAQJiRwIJALcCAgUCY28FAmNOCQC3AgIFAmNtBQJjTQUCY1EEAmNwCQECYkcCBQJjbwUCY20EAmNRCQC8AgMJAQFSAQkAuAICBQJjcAUCY08FAWQFAmNwBAJjUgkBAUQCBQJjegUBYgMDCQECIT0CBQJjcAUBZQkAvwICBQJjUQUCY1IHCQACAQkArAICCQCsAgIJAKwCAgIPUHJpY2Ugc2xpcHBhZ2UgCQCmAwEFAmNRAh4gZXhjZWVkZWQgdGhlIHBhc3NlZCBsaW1pdCBvZiAJAKYDAQUCY1IEAmNzCQEBRAIFAmNrBQFiBAJjUwkAvQIEBQJjTQkBAmJKAwUCY28FAmNtBQdDRUlMSU5HBQFkBQdDRUlMSU5HBAJjVAkAvQIEBQJjTgUBZAkBAmJKAwUCY28FAmNtBQVGTE9PUgUHQ0VJTElORwQCY1UDCQC/AgIFAmNTBQJjTgkAlAoCBQJjVAUCY04JAJQKAgUCY00FAmNTBAJjVggFAmNVAl8xBAJjVwgFAmNVAl8yBAJiWAkAvQIEBQJjcwUCY1cFAmNvBQVGTE9PUgkAlwoFCQEBSwMFAmJYBQFiBQVGTE9PUgkBAUsDBQJjVgUCYlUFB0NFSUxJTkcJAQFLAwUCY1cFAmJWBQdDRUlMSU5HBQJjcAUCY1EEAmNYCAUCY1ACXzEEAmNZCAUCY1ACXzIEAmNaCAUCY1ACXzMEAmNxCQEBSAIIBQJjUAJfNAUBYgQCZGEJAQFIAggFAmNQAl81BQFiAwkAZwIAAAUCY1gJAAIBAjZJbnZhbGlkIGNhbGN1bGF0aW9ucy4gTFAgY2FsY3VsYXRlZCBpcyBsZXNzIHRoYW4gemVyby4EAmRiAwkBASEBBQJjRgAABQJjWAQCZGMJAGUCBQJjQQUCY1kEAmRkCQBlAgUCY0MFAmNaBAJkZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVcABQJjcQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVgCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJjcQkAzAgCCQELU3RyaW5nRW50cnkCCQECYWECBQJhYgUCY2QJAQJicAoFAmNZBQJjWgUCZGIFAmNxBQJjegUCZGEFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmRjBQJkZAUDbmlsCQCfCg0FAmNYBQJkYgUCY3EFAmNsBQJjbgUCY2sFAmNnBQJjagUCZGUFAmRjBQJkZAUCY0IFAmNEAQJkZgMCZGcCZGgCY2sEAmRpCQEBRwIFAmRnCQC2AgEFAmJrBAJkagkBAUcCBQJkaAkAtgIBBQJibAQCZGsJALwCAwkAdgYJALkCAgUCZGkFAmRqAAAJALYCAQAFAAEAEgUERE9XTgUBZwUCY2sDCQAAAgUCY2sFAWYFAWYFAmRrAQJkbAMCZG0CZG4CZG8EAmRwCQC4AgIJALYCAQkBAmJFAQkBAmJhAQUCYmkFAmRtBAJkcQkAuAICCQC2AgEJAQJiRQEJAQJiYQEFAmJqBQJkbgQCZHIJALgCAgkAtgIBCAkBBXZhbHVlAQkA7AcBBQJiaAhxdWFudGl0eQUCZG8EAmRzCQECZGYDBQJkcAUCZHEFAmRyBQJkcwECZHQDAmR1AmR2AmRvBAJkcAkAZAIJAQJiRQEJAQJiYQEFAmJpBQJkdQQCZHEJAGQCCQECYkUBCQECYmEBBQJiagUCZHYEAmRyCQBkAggJAQV2YWx1ZQEJAOwHAQUCYmgIcXVhbnRpdHkFAmRvBAJkawkBAmRmAwkAtgIBBQJkcAkAtgIBBQJkcQkAtgIBBQJkcgQCZHcJAMwIAgkBDEludGVnZXJFbnRyeQIFAmFrBQZoZWlnaHQJAMwIAgkBC1N0cmluZ0VudHJ5AgUCYWoJAKYDAQUCZGsFA25pbAkAlAoCBQJkdwUCZGsBAmR4AgJkeQJkawMJAMACAgUCZGsFAmR5BgkBAmFMAQkAuQkCCQDMCAICInVwZGF0ZWQgS0xwIGxvd2VyIHRoYW4gY3VycmVudCBLTHAJAMwIAgkApgMBBQJkeQkAzAgCCQCmAwEFAmRrBQNuaWwCASABAmR6AQJkQQQCZHAJAQJiRQEJAQJiYQEFAmJpBAJkcQkBAmJFAQkBAmJhAQUCYmoEAmRCCAUCZEEGYW1vdW50BAJkQwkAbgQIBQJkQQZhbW91bnQIBQJkQQVwcmljZQUBYgUFRkxPT1IEAmREAwkAAAIIBQJkQQlvcmRlclR5cGUFA0J1eQkAlAoCBQJkQgkBAS0BBQJkQwkAlAoCCQEBLQEFAmRCBQJkQwQCZHUIBQJkRAJfMQQCZHYIBQJkRAJfMgMDAwkBAmFUAAYJAAACBQJiZwUBbQYJAAACBQJiZwUBbgkAAgECHEV4Y2hhbmdlIG9wZXJhdGlvbnMgZGlzYWJsZWQDAwkBAiE9AggIBQJkQQlhc3NldFBhaXILYW1vdW50QXNzZXQFAmJpBgkBAiE9AggIBQJkQQlhc3NldFBhaXIKcHJpY2VBc3NldAUCYmoJAAIBAhNXcm9uZyBvcmRlciBhc3NldHMuBAJkRQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCoAwEJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwUCYWoCATAJAQJhTgECC2ludmFsaWQga0xwBAJkRgkBAmR0AwUCZHUFAmR2AAAEAmRHCAUCZEYCXzEEAmRICAUCZEYCXzIEAmRJCQDAAgIFAmRIBQJkRQQCZEoJALkJAgkAzAgCAgRrTHA9CQDMCAIJAKYDAQUCZEUJAMwIAgIIIGtMcE5ldz0JAMwIAgkApgMBBQJkSAkAzAgCAhQgYW1vdW50QXNzZXRCYWxhbmNlPQkAzAgCCQCkAwEFAmRwCQDMCAICEyBwcmljZUFzc2V0QmFsYW5jZT0JAMwIAgkApAMBBQJkcQkAzAgCAhkgYW1vdW50QXNzZXRCYWxhbmNlRGVsdGE9CQDMCAIJAKQDAQUCZHUJAMwIAgIYIHByaWNlQXNzZXRCYWxhbmNlRGVsdGE9CQDMCAIJAKQDAQUCZHYJAMwIAgIIIGhlaWdodD0JAMwIAgkApAMBBQZoZWlnaHQFA25pbAIACQCUCgIFAmRJBQJkSgECZEsBAmRMAwkBAiE9AgkAkAMBCAUCZEwIcGF5bWVudHMAAQkAAgECHWV4YWN0bHkgMSBwYXltZW50IGlzIGV4cGVjdGVkBAJkTQkBBXZhbHVlAQkAkQMCCAUCZEwIcGF5bWVudHMAAAQCY2UJAQV2YWx1ZQEIBQJkTQdhc3NldElkBAJkTggFAmRNBmFtb3VudAQCY1AJAQJjYwQJANgEAQgFAmRMDXRyYW5zYWN0aW9uSWQJANgEAQUCY2UFAmROCAUCZEwGY2FsbGVyBAJjdggFAmNQAl8xBAJjdwgFAmNQAl8yBAJjagkBDXBhcnNlSW50VmFsdWUBCAUCY1ACXzkEAmN4CAUCY1ADXzEwAwMJAQJhVAAGCQAAAgUCY2oFAW4JAAIBCQCsAgICLEdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbi4gU3RhdHVzID0gCQCkAwEFAmNqCQCXCgUFAmN2BQJjdwUCZE4FAmNlBQJjeAECZE8DAmRMAmN6AmNGAwkBAiE9AgkAkAMBCAUCZEwIcGF5bWVudHMAAgkAAgECH2V4YWN0bHkgMiBwYXltZW50cyBhcmUgZXhwZWN0ZWQEAmRQCQEFdmFsdWUBCQCRAwIIBQJkTAhwYXltZW50cwAABAJkUQkBBXZhbHVlAQkAkQMCCAUCZEwIcGF5bWVudHMAAQQCZFIJAQJjeQkJANgEAQgFAmRMDXRyYW5zYWN0aW9uSWQFAmN6CAUCZFAGYW1vdW50CAUCZFAHYXNzZXRJZAgFAmRRBmFtb3VudAgFAmRRB2Fzc2V0SWQJAKUIAQgFAmRMBmNhbGxlcgcFAmNGBAJjagkBDXBhcnNlSW50VmFsdWUBCAUCZFICXzgDAwMJAQJhVAAGCQAAAgUCY2oFAWwGCQAAAgUCY2oFAW4JAAIBCQCsAgICLFB1dCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbi4gU3RhdHVzID0gCQCkAwEFAmNqBQJkUgECZFMBAmRUBAJkVQkA/AcEBQJhTwIEZW1pdAkAzAgCBQJkVAUDbmlsBQNuaWwDCQAAAgUCZFUFAmRVBAJkVgQCZFcFAmRVAwkAAQIFAmRXAgdBZGRyZXNzBAJkWAUCZFcJAPwHBAUCZFgCBGVtaXQJAMwIAgUCZFQFA25pbAUDbmlsBQR1bml0AwkAAAIFAmRWBQJkVgUCZFQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmRZAgJkVAJhaQQCZFoDCQAAAgUCYWkAAAAACQBrAwUCZFQFAmFpBQFiCQCUCgIJAGUCBQJkVAUCZFoFAmRaAQJlYQQCZWICZWMCYWICYWMEAmVkCQAAAgUCYWMFBHVuaXQEAmVlCQECYkUBCQECYmEBBQJiaQQCZWYJAQJiRQEJAQJiYQEFAmJqBAJlZwMJAAACBQJlYwUCYmkGAwkAAAIFAmVjBQJiagcJAQJhTAECDWludmFsaWQgYXNzZXQEAmVoAwUCZWQJAJQKAgUCZWUFAmVmAwUCZWcJAJQKAgkAZQIFAmVlBQJlYgUCZWYJAJQKAgUCZWUJAGUCBQJlZgUCZWIEAmVpCAUCZWgCXzEEAmVqCAUCZWgCXzIEAmVrAwUCZWcJAJQKAgUCZWIAAAkAlAoCAAAFAmViBAJlbAgFAmVrAl8xBAJlbQgFAmVrAl8yBAJkQggJAQJkWQIFAmVsBQJhUQJfMQQCZEMICQECZFkCBQJlbQUCYVECXzEEAmVuCQECZFkCBQJlYgUCYVEEAmVvCAUCZW4CXzEEAmRaCAUCZW4CXzIEAmVwCQBkAgUCZWkFAmRCBAJlcQkAZAIFAmVqBQJkQwQCZXIJAQJiRwIJAQFEAgUCZXEFAmJsCQEBRAIFAmVwBQJiawQCZXMJAQFIAgUCZXIFAWIEAmV0AwUCZWcFAmVpBQJlagQCZXUJALYCAQUCZXQEAmV2CQC2AgEICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCYmgJAKwCAgkArAICAgZhc3NldCAJANgEAQUCYmgCDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BAJldwMJAL8CAgUCZXYFAWYGCQECYUwBAiJpbml0aWFsIGRlcG9zaXQgcmVxdWlyZXMgYWxsIGNvaW5zAwkAAAIFAmV3BQJldwQCZXgJALYCAQUCZW8EAmV5CQCWAwEJAMwIAgAACQDMCAIJAKADAQkAugICCQC5AgIFAmV2CQC4AgIJAQpzcXJ0QmlnSW50BAkAtwICBQFkCQC6AgIJALkCAgUCZXgFAWQFAmV1ABIAEgUERE9XTgUBZAUBZAUDbmlsBAJkZQMFAmVkBQNuaWwJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFXAAUCZXMJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFYAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCZXMJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFhAgkApQgBCQEFdmFsdWUBBQJhYgkA2AQBCQEFdmFsdWUBBQJhYwkBAmJwCgUCZWwFAmVtBQJleQUCZXMAAAAABQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wAAAAAAUDbmlsBAJlegkBAmJHAgkBAUQCBQJlagUCYmwJAQFEAgUCZWkFAmJrBAJlQQkBAUgCBQJlegUBYgQCZUIEAmVDAwUCZWcJAJQKAgUCZWwFAmVpCQCUCgIFAmVtBQJlagQCZFQIBQJlQwJfMQQCZUQIBQJlQwJfMgQCZUUJAKADAQkAvAIDBQJldgkAtgIBCQBpAgUCZFQAAgkAtgIBBQJlRAkAawMJAGUCBQJleQUCZUUFAWIFAmVFCQCXCgUFAmV5BQJkZQUCZFoFAmVCBQJlZwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECZUYFAmVHAmVvAmVjAmFiAmFjBAJlZAkAAAIFAmFjBQR1bml0BAJiVAkBAmFWAAQCYlUJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiVAUBdAQCYlYJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiVAUBdQQCZUgJAMwIAgMJAAACBQJlYwUCYmgGCQECYUwBAhBpbnZhbGlkIGxwIGFzc2V0BQNuaWwDCQAAAgUCZUgFAmVIBAJlSQMJAAACBQJlRwUCYmkGAwkAAAIFAmVHBQJiagcJAQJhTAECDWludmFsaWQgYXNzZXQEAmVKAwUCZUkJALYCAQkBAmJFAQkBAmJhAQUCYmkJALYCAQkBAmJFAQkBAmJhAQUCYmoEAmVLAwUCZUkFAmJVBQJiVgQCZUwJAQJiRQEJAQJiYQEFAmJpBAJlTQkBAmJFAQkBAmJhAQUCYmoEAmVOAwUCZUkFAmVMBQJlTQQCZU8JALYCAQUCZU4EAmV2CQC2AgEICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCYmgJAKwCAgkArAICAgZhc3NldCAJANgEAQUCYmgCDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BAJlUAkAtgIBBQJlbwQCZVEJAJYDAQkAzAgCAAAJAMwIAgkAoAMBCQC6AgIJALkCAgUCZUoJALgCAgUBZAkAdgYJALgCAgUBZAkAugICCQC5AgIFAmVQBQFkBQJldgASBQFoAAAAEgUERE9XTgUBZAUDbmlsBAJlUgkBAmRZAgUCZVEFAmFTBAJlUwgFAmVSAl8xBAJkWggFAmVSAl8yBAJlVAMFAmVJCQCWCgQFAmVTAAAJAGUCBQJlTAUCZVEFAmVNCQCWCgQAAAUCZVMFAmVMCQBlAgUCZU0FAmVRBAJlVQgFAmVUAl8xBAJlVggFAmVUAl8yBAJlVwgFAmVUAl8zBAJlWAgFAmVUAl80BAJlcgkBAmJHAgkBAUQCBQJlWAUCYmwJAQFEAgUCZVcFAmJrBAJlcwkBAUgCBQJlcgUBYgQCZGUDBQJlZAUDbmlsCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhZAIJAKUIAQkBBXZhbHVlAQUCYWIJANgEAQkBBXZhbHVlAQUCYWMJAQJiQQYFAmVVBQJlVgUCZW8FAmVzBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVwAFAmVzCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBWAIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmVzBQNuaWwEAmV6CQECYkcCCQEBRAIFAmVNBQJibAkBAUQCBQJlTAUCYmsEAmVBCQEBSAIFAmV6BQFiBAJlQgQCZVkJAGgCCQCgAwEJALwCAwUCZUoFAmVQBQJldgACCQBrAwkAZQIFAmVTBQJlWQUBYgUCZVkJAJcKBQUCZVMFAmRlBQJkWgUCZUIFAmVJCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJlWgAEAmRXCQCiCAEJAQFVAAMJAAECBQJkVwIGU3RyaW5nBAJmYQUCZFcJANkEAQUCZmEDCQABAgUCZFcCBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgECZmIABAJkVwkAoggBCQEBVgADCQABAgUCZFcCBlN0cmluZwQCZmEFAmRXCQDZBAEFAmZhAwkAAQIFAmRXAgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IBAmZjAQJkTAQCZFcJAQJlWgADCQABAgUCZFcCCkJ5dGVWZWN0b3IEAmZkBQJkVwkAAAIIBQJkTA9jYWxsZXJQdWJsaWNLZXkFAmZkAwkAAQIFAmRXAgRVbml0CQAAAggFAmRMBmNhbGxlcgUEdGhpcwkAAgECC01hdGNoIGVycm9yAQJmZQECZEwEAmZmCQACAQIRUGVybWlzc2lvbiBkZW5pZWQEAmRXCQECZVoAAwkAAQIFAmRXAgpCeXRlVmVjdG9yBAJmZAUCZFcDCQAAAggFAmRMD2NhbGxlclB1YmxpY0tleQUCZmQGBQJmZgMJAAECBQJkVwIEVW5pdAMJAAACCAUCZEwGY2FsbGVyBQR0aGlzBgUCZmYJAAIBAgtNYXRjaCBlcnJvch0CZEwBIWNhbGN1bGF0ZUFtb3VudE91dEZvclN3YXBSRUFET05MWQICZmcCZmgEAmZpAwkAAAIFAmZoBwQCZmoJAQJhSAIFBHRoaXMJAQJhZgAEAmZrCQECYUgCBQR0aGlzCQECYWUACQCUCgIFAmZqBQJmawQCZmoJAQJhSAIFBHRoaXMJAQJhZQAEAmZrCQECYUgCBQR0aGlzCQECYWYACQCUCgIFAmZqBQJmawQCZmoIBQJmaQJfMQQCZmsIBQJmaQJfMgQCZmwJAQJiRQEFAmZrBAJmbQkBAmJFAQUCZmoEAmZuCQBrAwUCZm0FAmZnCQBkAgUCZmwFAmZnBAJmbwkAuQICCQC2AgEFAmZsCQC2AgEFAmZtBAJmcAkAuQICCQC3AgIJALYCAQkBAmJFAQUCZmsJALYCAQUCZmcJALgCAgkAtgIBCQECYkUBBQJmagkAtgIBBQJmbgQCZnEDCQDAAgIFAmZwBQJmbwYJAAIBAhRuZXcgSyBpcyBmZXdlciBlcnJvcgMJAAACBQJmcQUCZnEJAJQKAgUDbmlsBQJmbgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkTAEmY2FsY3VsYXRlQW1vdW50T3V0Rm9yU3dhcEFuZFNlbmRUb2tlbnMEAmZnAmZoAmZyAmZzBAJmdAoAAmFSCQD8BwQFAmFPAhdnZXRTd2FwQ29udHJhY3RSRUFET05MWQUDbmlsBQNuaWwDCQABAgUCYVICBlN0cmluZwUCYVIJAAIBCQCsAgIJAAMBBQJhUgIbIGNvdWxkbid0IGJlIGNhc3QgdG8gU3RyaW5nBAJlSAkAzAgCAwkAZwIICQEFdmFsdWUBCQCRAwIIBQJkTAhwYXltZW50cwAABmFtb3VudAUCZmcGCQECYUwBAgxXcm9uZyBhbW91bnQJAMwIAgMJAAACCAUCZEwGY2FsbGVyCQERQGV4dHJOYXRpdmUoMTA2MikBBQJmdAYJAQJhTAECEVBlcm1pc3Npb24gZGVuaWVkBQNuaWwDCQAAAgUCZUgFAmVIBAJkTQkBBXZhbHVlAQkAkQMCCAUCZEwIcGF5bWVudHMAAAQCZmsJAQJiYQEIBQJkTQdhc3NldElkBAJmagMJAAACBQJmaAcJAQJhSAIFBHRoaXMJAQJhZgAJAQJhSAIFBHRoaXMJAQJhZQAEAmZsCQBlAgkBAmJFAQUCZmsICQEFdmFsdWUBCQCRAwIIBQJkTAhwYXltZW50cwAABmFtb3VudAQCZm0JAQJiRQEFAmZqBAJmbgkAawMFAmZtBQJmZwkAZAIFAmZsBQJmZwQCZm8JALkCAgkAtgIBBQJmbAkAtgIBBQJmbQQCZnAJALkCAgkAtgIBCQECYkUBBQJmawkAuAICCQC2AgEJAQJiRQEFAmZqCQC2AgEFAmZuBAJmcQMJAMACAgUCZnAFAmZvBgkAAgECFG5ldyBLIGlzIGZld2VyIGVycm9yAwkAAAIFAmZxBQJmcQQCZnUDCQBnAgUCZm4FAmZyBgkAAgECLEV4Y2hhbmdlIHJlc3VsdCBpcyBmZXdlciBjb2lucyB0aGFuIGV4cGVjdGVkAwkAAAIFAmZ1BQJmdQkAlAoCCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAmZzBQJmbgkBAmFZAQUCZmoFA25pbAUCZm4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZEwBCnNldE1hbmFnZXIBAmZ2BAJmdwkBAmZlAQUCZEwDCQAAAgUCZncFAmZ3BAJmeAkA2QQBBQJmdgMJAAACBQJmeAUCZngJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVYABQJmdgUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRMAQ5jb25maXJtTWFuYWdlcgAEAmZ5CQECZmIABAJmegMJAQlpc0RlZmluZWQBBQJmeQYJAAIBAhJObyBwZW5kaW5nIG1hbmFnZXIDCQAAAgUCZnoFAmZ6BAJmQQMJAAACCAUCZEwPY2FsbGVyUHVibGljS2V5CQEFdmFsdWUBBQJmeQYJAAIBAhtZb3UgYXJlIG5vdCBwZW5kaW5nIG1hbmFnZXIDCQAAAgUCZkEFAmZBCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFVAAkA2AQBCQEFdmFsdWUBBQJmeQkAzAgCCQELRGVsZXRlRW50cnkBCQEBVgAFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkTAEDcHV0AgJjegJmQgMJAGYCAAAFAmN6CQACAQIgSW52YWxpZCBzbGlwcGFnZVRvbGVyYW5jZSBwYXNzZWQEAmRSCQECZE8DBQJkTAUCY3oGBAJkYggFAmRSAl8yBAJjZwgFAmRSAl83BAJjeAgFAmRSAl85BAJkYwgFAmRSA18xMAQCZGQIBQJkUgNfMTEEAmZDCAUCZFIDXzEyBAJmRAgFAmRSA18xMwQCZFAJALYCAQgJAQV2YWx1ZQEJAJEDAggFAmRMCHBheW1lbnRzAAAGYW1vdW50BAJkUQkAtgIBCAkBBXZhbHVlAQkAkQMCCAUCZEwIcGF5bWVudHMAAQZhbW91bnQEAmRzCQECZGwDBQJkUAUCZFEJALYCAQAAAwkAAAIFAmRzBQJkcwQCZFUJAPwHBAUCYU8CBGVtaXQJAMwIAgUCZGIFA25pbAUDbmlsAwkAAAIFAmRVBQJkVQQCZFYEAmRXBQJkVQMJAAECBQJkVwIHQWRkcmVzcwQCZFgFAmRXCQD8BwQFAmRYAgRlbWl0CQDMCAIFAmRiBQNuaWwFA25pbAUEdW5pdAMJAAACBQJkVgUCZFYEAmZFAwkAZgIFAmRjAAAJAPwHBAUCYm8CA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJmQwUCZGMFA25pbAUDbmlsAwkAAAIFAmZFBQJmRQQCZkYDCQBmAgUCZGQAAAkA/AcEBQJibwIDcHV0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmZEBQJkZAUDbmlsBQNuaWwDCQAAAgUCZkYFAmZGBAJmRwMFAmZCBAJmSAkA/AcEBQJibgIFc3Rha2UFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCY2cFAmRiBQNuaWwDCQAAAgUCZkgFAmZIBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAmRMBmNhbGxlcgUCZGIFAmNnBQNuaWwEAmZJCQECZHQDAAAAAAAAAwkAAAIFAmZJBQJmSQQCZGsIBQJmSQJfMgQCZkoIBQJmSQJfMQQCZksJAQJkeAIFAmRzBQJkawMJAAACBQJmSwUCZksJAM4IAgkAzggCBQJjeAUCZkcFAmZKCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRMAQpwdXRGb3JGcmVlAQJmTAMJAGYCAAAFAmZMCQACAQIUSW52YWxpZCB2YWx1ZSBwYXNzZWQEAmRSCQECZE8DBQJkTAUCZkwHBAJjeAgFAmRSAl85BAJkUAkAtgIBCAkBBXZhbHVlAQkAkQMCCAUCZEwIcGF5bWVudHMAAAZhbW91bnQEAmRRCQC2AgEICQEFdmFsdWUBCQCRAwIIBQJkTAhwYXltZW50cwABBmFtb3VudAQCZHMJAQJkbAMFAmRQBQJkUQkAtgIBAAADCQAAAgUCZHMFAmRzBAJmTQkBAmR0AwAAAAAAAAQCZkoIBQJmTQJfMQQCZGsIBQJmTQJfMgQCZksJAQJkeAIFAmRzBQJkawMJAAACBQJmSwUCZksJAM4IAgUCY3gFAmZKCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRMAQlwdXRPbmVUa24CAmZOAmZPBAJmUAoAAmFSCQD8BwQFAmFPAihpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZFJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCYVICB0Jvb2xlYW4FAmFSCQACAQkArAICCQADAQUCYVICHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4EAmZRAwMDCQECYVQABgkAAAIFAmJnBQFsBgkAAAIFAmJnBQFuBgUCZlAEAmVICQDMCAIDAwkBASEBBQJmUQYJAQJmYwEFAmRMBgkBAmFMAQIhcHV0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluCQDMCAIDCQAAAgkAkAMBCAUCZEwIcGF5bWVudHMAAQYJAQJhTAECHmV4YWN0bHkgMSBwYXltZW50IGFyZSBleHBlY3RlZAUDbmlsAwkAAAIFAmVIBQJlSAQCZlIJAJEDAggFAmRMCHBheW1lbnRzAAAEAmVjCAUCZlIHYXNzZXRJZAQCZWIIBQJmUgZhbW91bnQEAmRzAwkAAAIFAmVjBQJiaQkBAmRsAwkAtgIBBQJlYgkAtgIBAAAJALYCAQAAAwkAAAIFAmVjBQJiagkBAmRsAwkAtgIBAAAJALYCAQUCZWIJALYCAQAACQECYUwBAh5wYXltZW50IGFzc2V0IGlzIG5vdCBzdXBwb3J0ZWQDCQAAAgUCZHMFAmRzBAJhYggFAmRMBmNhbGxlcgQCYWMIBQJkTA10cmFuc2FjdGlvbklkBAJmUwkBAmVhBAUCZWIFAmVjBQJhYgUCYWMDCQAAAgUCZlMFAmZTBAJlZwgFAmZTAl81BAJmVAgFAmZTAl80BAJkWggFAmZTAl8zBAJkZQgFAmZTAl8yBAJmVQgFAmZTAl8xBAJmVgMDCQBmAgUCZk4AAAkAZgIFAmZOBQJmVQcJAQJhTAEJALkJAgkAzAgCAh9hbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZk4FA25pbAIABQJmVQQCZFUJAQJkUwEFAmZWAwkAAAIFAmRVBQJkVQQCZkcDBQJmTwQCZlcJAPwHBAUCYm4CBXN0YWtlBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmJoBQJmVgUDbmlsAwkAAAIFAmZXBQJmVwUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQJkTAZjYWxsZXIFAmZWBQJiaAUDbmlsBAJmWAMJAGYCBQJkWgAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmFQBQJkWgUCZWMFA25pbAUDbmlsBAJmWQMJAAACBQR0aGlzBQJhUAkAlAoCAAAAAAMFAmVnCQCUCgIJAQEtAQUCZFoAAAkAlAoCAAAJAQEtAQUCZFoEAmR1CAUCZlkCXzEEAmR2CAUCZlkCXzIEAmZaCQECZHQDBQJkdQUCZHYAAAQCZkoIBQJmWgJfMQQCZGsIBQJmWgJfMgQCZEUJAQV2YWx1ZQEJAKIIAQUCYWoEAmZLCQECZHgCBQJkcwUCZGsDCQAAAgUCZksFAmZLCQCUCgIJAM4IAgkAzggCCQDOCAIFAmRlBQJmRwUCZlgFAmZKBQJmVgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkTAERcHV0T25lVGtuUkVBRE9OTFkCAmVjAmViBAJnYQkBAmVhBAUCZWIJAQJhWQEFAmVjBQR1bml0BQR1bml0BAJmVQgFAmdhAl8xBAJkZQgFAmdhAl8yBAJkWggFAmdhAl8zBAJmVAgFAmdhAl80BAJlZwgFAmdhAl81CQCUCgIFA25pbAkAlQoDBQJmVQUCZFoFAmZUAmRMAQlnZXRPbmVUa24CAmdiAmZOBAJmUAoAAmFSCQD8BwQFAmFPAihpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZFJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCYVICB0Jvb2xlYW4FAmFSCQACAQkArAICCQADAQUCYVICHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4EAmdjAwMJAQJhVAAGCQAAAgUCYmcFAW4GBQJmUAQCZUgJAMwIAgMDCQEBIQEFAmdjBgkBAmZjAQUCZEwGCQECYUwBAiFnZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJkTAhwYXltZW50cwABBgkBAmFMAQIeZXhhY3RseSAxIHBheW1lbnQgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZUgFAmVIBAJlRwkBAmFZAQUCZ2IEAmZSCQCRAwIIBQJkTAhwYXltZW50cwAABAJlYwgFAmZSB2Fzc2V0SWQEAmVvCAUCZlIGYW1vdW50BAJkcwkBAmRsAwkAtgIBAAAJALYCAQAACQC2AgEAAAMJAAACBQJkcwUCZHMEAmFiCAUCZEwGY2FsbGVyBAJhYwgFAmRMDXRyYW5zYWN0aW9uSWQEAmdkCQECZUYFBQJlRwUCZW8FAmVjBQJhYgUCYWMDCQAAAgUCZ2QFAmdkBAJlSQgFAmdkAl81BAJmVAgFAmdkAl80BAJkWggFAmdkAl8zBAJkZQgFAmdkAl8yBAJnZQgFAmdkAl8xBAJkVAMDCQBmAgUCZk4AAAkAZgIFAmZOBQJnZQcJAQJhTAEJALkJAgkAzAgCAh9hbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZk4FA25pbAIABQJnZQQCZ2YJAPwHBAUCYU8CBGJ1cm4JAMwIAgUCZW8FA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZWMFAmVvBQNuaWwDCQAAAgUCZ2YFAmdmBAJnZwkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJhYgUCZFQFAmVHBQNuaWwEAmZYAwkAZgIFAmRaAAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYVAFAmRaBQJlRwUDbmlsBQNuaWwEAmdoBAJnaQMJAAACBQR0aGlzBQJhUAAABQJkWgMFAmVJCQCUCgIJAQEtAQkAZAIFAmRUBQJnaQAACQCUCgIAAAkBAS0BCQBkAgUCZFQFAmdpBAJkdQgFAmdoAl8xBAJkdggFAmdoAl8yBAJnagkBAmR0AwUCZHUFAmR2AAAEAmZKCAUCZ2oCXzEEAmRrCAUCZ2oCXzIEAmZLCQECZHgCBQJkcwUCZGsDCQAAAgUCZksFAmZLCQCUCgIJAM4IAgkAzggCCQDOCAIFAmRlBQJnZwUCZlgFAmZKBQJkVAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkTAERZ2V0T25lVGtuUkVBRE9OTFkCAmVHAmVvBAJnawkBAmVGBQkBAmFZAQUCZUcFAmVvBQJiaAUEdW5pdAUEdW5pdAQCZ2UIBQJnawJfMQQCZGUIBQJnawJfMgQCZFoIBQJnawJfMwQCZlQIBQJnawJfNAQCZUkIBQJnawJfNQkAlAoCBQNuaWwJAJUKAwUCZ2UFAmRaBQJmVAJkTAETdW5zdGFrZUFuZEdldE9uZVRrbgMCZ2wCZ2ICZk4EAmZQCgACYVIJAPwHBAUCYU8CKGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJhUgIHQm9vbGVhbgUCYVIJAAIBCQCsAgIJAAMBBQJhUgIcIGNvdWxkbid0IGJlIGNhc3QgdG8gQm9vbGVhbgQCZ2MDAwkBAmFUAAYJAAACBQJiZwUBbgYFAmZQBAJlSAkAzAgCAwMJAQEhAQUCZ2MGCQECZmMBBQJkTAYJAQJhTAECIWdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbgkAzAgCAwkAAAIJAJADAQgFAmRMCHBheW1lbnRzAAAGCQECYUwBAhhubyBwYXltZW50cyBhcmUgZXhwZWN0ZWQFA25pbAMJAAACBQJlSAUCZUgEAmVHCQECYVkBBQJnYgQCYWIIBQJkTAZjYWxsZXIEAmFjCAUCZEwNdHJhbnNhY3Rpb25JZAQCZHMJAQJkbAMJALYCAQAACQC2AgEAAAkAtgIBAAADCQAAAgUCZHMFAmRzBAJnbQkA/AcEBQJibgIHdW5zdGFrZQkAzAgCCQDYBAEFAmJoCQDMCAIFAmdsBQNuaWwFA25pbAMJAAACBQJnbQUCZ20EAmduCQECZUYFBQJlRwUCZ2wFAmJoBQJhYgUCYWMDCQAAAgUCZ24FAmduBAJlSQgFAmduAl81BAJmVAgFAmduAl80BAJkWggFAmduAl8zBAJkZQgFAmduAl8yBAJnZQgFAmduAl8xBAJkVAMDCQBmAgUCZk4AAAkAZgIFAmZOBQJnZQcJAQJhTAEJALkJAgkAzAgCAh9hbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZk4FA25pbAIABQJnZQQCZ2YJAPwHBAUCYU8CBGJ1cm4JAMwIAgUCZ2wFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCYmgFAmdsBQNuaWwDCQAAAgUCZ2YFAmdmBAJnZwkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUCZEwGY2FsbGVyBQJkVAUCZUcFA25pbAQCZlgDCQBmAgUCZFoAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJhUAUCZFoFAmVHBQNuaWwFA25pbAQCZ28EAmdpAwkAAAIFBHRoaXMFAmFQAAAFAmRaAwUCZUkJAJQKAgkBAS0BCQBkAgUCZFQFAmdpAAAJAJQKAgAACQEBLQEJAGQCBQJkVAUCZ2kEAmR1CAUCZ28CXzEEAmR2CAUCZ28CXzIEAmdwCQECZHQDBQJkdQUCZHYAAAQCZkoIBQJncAJfMQQCZGsIBQJncAJfMgQCZksJAQJkeAIFAmRzBQJkawMJAAACBQJmSwUCZksJAJQKAgkAzggCCQDOCAIJAM4IAgUCZGUFAmdnBQJmWAUCZkoFAmRUCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRMAQNnZXQABAJjUAkBAmRLAQUCZEwEAmdxCAUCY1ACXzEEAmN3CAUCY1ACXzIEAmROCAUCY1ACXzMEAmNlCAUCY1ACXzQEAmN4CAUCY1ACXzUEAmRzCQECZGwDCQC2AgEAAAkAtgIBAAAJALYCAQAAAwkAAAIFAmRzBQJkcwQCZ3IJAPwHBAUCYU8CBGJ1cm4JAMwIAgUCZE4FA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCY2UFAmROBQNuaWwDCQAAAgUCZ3IFAmdyBAJncwkBAmR0AwkBAS0BBQJncQkBAS0BBQJjdwAABAJmSggFAmdzAl8xBAJkawgFAmdzAl8yBAJmSwkBAmR4AgUCZHMFAmRrAwkAAAIFAmZLBQJmSwkAzggCBQJjeAUCZkoJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZEwBCWdldE5vTGVzcwICZ3QCZ3UEAmNQCQECZEsBBQJkTAQCY3YIBQJjUAJfMQQCY3cIBQJjUAJfMgQCZE4IBQJjUAJfMwQCY2UIBQJjUAJfNAQCY3gIBQJjUAJfNQMJAGYCBQJndAUCY3YJAAIBCQCsAgIJAKwCAgkArAICAhxub0xlc3NUaGVuQW10QXNzZXQgZmFpbGVkOiAgCQCkAwEFAmN2AgMgPCAJAKQDAQUCZ3QDCQBmAgUCZ3UFAmN3CQACAQkArAICCQCsAgIJAKwCAgIdbm9MZXNzVGhlblByaWNlQXNzZXQgZmFpbGVkOiAJAKQDAQUCY3cCAyA8IAkApAMBBQJndQQCZHMJAQJkbAMJALYCAQAACQC2AgEAAAkAtgIBAAADCQAAAgUCZHMFAmRzBAJncgkA/AcEBQJhTwIEYnVybgkAzAgCBQJkTgUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJjZQUCZE4FA25pbAMJAAACBQJncgUCZ3IEAmd2CQECZHQDCQEBLQEFAmN2CQEBLQEFAmN3AAAEAmZKCAUCZ3YCXzEEAmRrCAUCZ3YCXzIEAmZLCQECZHgCBQJkcwUCZGsDCQAAAgUCZksFAmZLCQDOCAIFAmN4BQJmSgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkTAENdW5zdGFrZUFuZEdldAECZFQEAmd3AwkBAiE9AgkAkAMBCAUCZEwIcGF5bWVudHMAAAkAAgECGE5vIHBheW1lbnRzIGFyZSBleHBlY3RlZAYDCQAAAgUCZ3cFAmd3BAJiVAkBAmFWAAQCY2cJANkEAQkAkQMCBQJiVAUBcQQCZHMJAQJkbAMJALYCAQAACQC2AgEAAAkAtgIBAAADCQAAAgUCZHMFAmRzBAJnbQkA/AcEBQJibgIHdW5zdGFrZQkAzAgCCQDYBAEFAmNnCQDMCAIFAmRUBQNuaWwFA25pbAMJAAACBQJnbQUCZ20EAmNQCQECY2MECQDYBAEIBQJkTA10cmFuc2FjdGlvbklkCQDYBAEFAmNnBQJkVAgFAmRMBmNhbGxlcgQCY3YIBQJjUAJfMQQCY3cIBQJjUAJfMgQCY2oJAQ1wYXJzZUludFZhbHVlAQgFAmNQAl85BAJjeAgFAmNQA18xMAQCZ3gDAwkBAmFUAAYJAAACBQJjagUBbgkAAgEJAKwCAgIsR2V0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluLiBTdGF0dXMgPSAJAKQDAQUCY2oGAwkAAAIFAmd4BQJneAQCZ3IJAPwHBAUCYU8CBGJ1cm4JAMwIAgUCZFQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCY2cFAmRUBQNuaWwDCQAAAgUCZ3IFAmdyBAJneQkBAmR0AwkBAS0BBQJjdgkBAS0BBQJjdwAABAJmSggFAmd5Al8xBAJkawgFAmd5Al8yBAJmSwkBAmR4AgUCZHMFAmRrAwkAAAIFAmZLBQJmSwkAzggCBQJjeAUCZkoJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZEwBE3Vuc3Rha2VBbmRHZXROb0xlc3MDAmdsAmd6Amd1BAJnYwMJAQJhVAAGCQAAAgUCYmcFAW4EAmVICQDMCAIDCQEBIQEFAmdjBgkAAgECIWdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbgkAzAgCAwkAAAIJAJADAQgFAmRMCHBheW1lbnRzAAAGCQACAQIYbm8gcGF5bWVudHMgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZUgFAmVIBAJkcwkBAmRsAwkAtgIBAAAJALYCAQAACQC2AgEAAAMJAAACBQJkcwUCZHMEAmdtCQD8BwQFAmJuAgd1bnN0YWtlCQDMCAIJANgEAQUCYmgJAMwIAgUCZ2wFA25pbAUDbmlsAwkAAAIFAmdtBQJnbQQCY1AJAQJjYwQJANgEAQgFAmRMDXRyYW5zYWN0aW9uSWQJANgEAQUCYmgFAmdsCAUCZEwGY2FsbGVyBAJjdggFAmNQAl8xBAJjdwgFAmNQAl8yBAJjeAgFAmNQA18xMAQCZ0EJAMwIAgMJAGcCBQJjdgUCZ3oGCQACAQkAuQkCCQDMCAICLGFtb3VudCBhc3NldCBhbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZ3oFA25pbAIACQDMCAIDCQBnAgUCY3cFAmd1BgkAAgEJALkJAgkAzAgCAitwcmljZSBhc3NldCBhbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZ3UFA25pbAIABQNuaWwDCQAAAgUCZ0EFAmdBBAJncgkA/AcEBQJhTwIEYnVybgkAzAgCBQJnbAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJiaAUCZ2wFA25pbAMJAAACBQJncgUCZ3IEAmdCCQECZHQDCQEBLQEFAmN2CQEBLQEFAmN3AAAEAmZKCAUCZ0ICXzEEAmRrCAUCZ0ICXzIEAmZLCQECZHgCBQJkcwUCZGsDCQAAAgUCZksFAmZLCQDOCAIFAmN4BQJmSgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkTAEIYWN0aXZhdGUCAmdDAmdEAwkBAiE9AgkApQgBCAUCZEwGY2FsbGVyCQClCAEFAmFPCQACAQIScGVybWlzc2lvbnMgZGVuaWVkCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFlAAUCZ0MJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFmAAUCZ0QFA25pbAIHc3VjY2VzcwJkTAEKcmVmcmVzaEtMcAAEAmdFCQELdmFsdWVPckVsc2UCCQCfCAEFAmFrAAAEAmdGAwkAZwIJAGUCBQZoZWlnaHQFAmdFBQJhbgUEdW5pdAkBAmFMAQkAuQkCCQDMCAIJAKQDAQUCYW4JAMwIAgIvIGJsb2NrcyBoYXZlIG5vdCBwYXNzZWQgc2luY2UgdGhlIHByZXZpb3VzIGNhbGwFA25pbAIAAwkAAAIFAmdGBQJnRgQCZEUJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAqAMBCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMFAmFqAgEwCQECYU4BAgtpbnZhbGlkIGtMcAQCZ0cJAQJkdAMAAAAAAAAEAmdICAUCZ0cCXzEEAmRrCAUCZ0cCXzIEAmR3AwkBAiE9AgUCZEUFAmRrBQJnSAkBAmFMAQISbm90aGluZyB0byByZWZyZXNoCQCUCgIFAmR3CQCmAwEFAmRrCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRMARxnZXRQb29sQ29uZmlnV3JhcHBlclJFQURPTkxZAAkAlAoCBQNuaWwJAQJhVgACZEwBHGdldEFjY0JhbGFuY2VXcmFwcGVyUkVBRE9OTFkBAmJGCQCUCgIFA25pbAkBAmJFAQUCYkYCZEwBGWNhbGNQcmljZXNXcmFwcGVyUkVBRE9OTFkDAmJOAmJPAmJTBAJjYgkBAmJSAwUCYk4FAmJPBQJiUwkAlAoCBQNuaWwJAMwIAgkApgMBCQCRAwIFAmNiAAAJAMwIAgkApgMBCQCRAwIFAmNiAAEJAMwIAgkApgMBCQCRAwIFAmNiAAIFA25pbAJkTAEUdG9YMThXcmFwcGVyUkVBRE9OTFkCAUUBRgkAlAoCBQNuaWwJAKYDAQkBAUQCBQFFBQFGAmRMARZmcm9tWDE4V3JhcHBlclJFQURPTkxZAgFJAUoJAJQKAgUDbmlsCQEBSAIJAKcDAQUBSQUBSgJkTAEeY2FsY1ByaWNlQmlnSW50V3JhcHBlclJFQURPTkxZAgJiSAJiSQkAlAoCBQNuaWwJAKYDAQkBAmJHAgkApwMBBQJiSAkApwMBBQJiSQJkTAEjZXN0aW1hdGVQdXRPcGVyYXRpb25XcmFwcGVyUkVBRE9OTFkJAmNkAmN6AmNBAmNCAmNDAmNEAmFiAmNFAmNGCQCUCgIFA25pbAkBAmN5CQUCY2QFAmN6BQJjQQUCY0IFAmNDBQJjRAUCYWIFAmNFBQJjRgJkTAEjZXN0aW1hdGVHZXRPcGVyYXRpb25XcmFwcGVyUkVBRE9OTFkEAmNkAmNlAmNmAmFiBAJjUAkBAmNjBAUCY2QFAmNlBQJjZgkBEUBleHRyTmF0aXZlKDEwNjIpAQUCYWIJAJQKAgUDbmlsCQCcCgoIBQJjUAJfMQgFAmNQAl8yCAUCY1ACXzMIBQJjUAJfNAgFAmNQAl81CAUCY1ACXzYIBQJjUAJfNwkApgMBCAUCY1ACXzgIBQJjUAJfOQgFAmNQA18xMAJkTAENc3RhdHNSRUFET05MWQAEAmJUCQECYVYABAJjZwkA2QQBCQCRAwIFAmJUBQFxBAJnSQkAkQMCBQJiVAUBcgQCZ0oJAJEDAgUCYlQFAXMEAmNJCQCRAwIFAmJUBQF2BAJjSgkAkQMCBQJiVAUBdwQCYlUJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiVAUBdAQCYlYJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiVAUBdQQCZ0sICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCY2cJAKwCAgkArAICAgZBc3NldCAJANgEAQUCY2cCDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BAJnTAkBAmJFAQUCZ0kEAmdNCQECYkUBBQJnSgQCZ04DCQAAAgUCZ0sAAAkAzAgCBQFlCQDMCAIFAWUJAMwIAgUBZQUDbmlsCQECYlIDBQJnTAUCZ00FAmdLBAJjcQAABAJnTwkBAUgCCQCRAwIFAmdOAAEFAWIEAmdQCQEBSAIJAJEDAgUCZ04AAgUBYgQCZ1EJAQV2YWx1ZQEJAJoIAgUCYU8JAQJheQEJAKUIAQUEdGhpcwkAlAoCBQNuaWwJALkJAgkAzAgCAg4lZCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFAmdMCQDMCAIJAKQDAQUCZ00JAMwIAgkApAMBBQJnSwkAzAgCCQCkAwEFAmNxCQDMCAIJAKQDAQUCZ08JAMwIAgkApAMBBQJnUAkAzAgCCQCkAwEFAmdRBQNuaWwFAWoCZEwBIGV2YWx1YXRlUHV0QnlBbW91bnRBc3NldFJFQURPTkxZAQJjQQQCYlQJAQJhVgAEAmNnCQDZBAEJAJEDAgUCYlQFAXEEAmNHCQCRAwIFAmJUBQFyBAJjaAkA2QQBBQJjRwQCY0gJAJEDAgUCYlQFAXMEAmNpCQDZBAEFAmNIBAJiVQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJUBQF0BAJiVgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJUBQF1BAJjagkAkQMCBQJiVAUBcAQCZ0sICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCY2cJAKwCAgkArAICAgZBc3NldCAJANgEAQUCY2cCDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BAJnTAkBAmJFAQUCY0cEAmdNCQECYkUBBQJjSAQCYlAJAQFEAgUCZ0wFAmJVBAJiUQkBAUQCBQJnTQUCYlYEAmNwAwkAAAIFAmdLAAAFAWUJAQJiRwIFAmJRBQJiUAQCY00JAQFEAgUCY0EFAmJVBAJjTgkAvAIDBQJjTQUCY3AFAWQEAmNDCQEBSAIFAmNOBQJiVgQCZFIJAQJjeQkCAACgwh4FAmNBBQJjaAUCY0MFAmNpAgAGBwQCY1gIBQJkUgJfMQQCZ1IIBQJkUgJfMwQCY2wIBQJkUgJfNAQCY24IBQJkUgJfNQQCY2sIBQJkUgJfNgkAlAoCBQNuaWwJALkJAgkAzAgCAhAlZCVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCY1gJAMwIAgkApAMBCQEBSAIFAmNwBQFiCQDMCAIJAKQDAQUCY2wJAMwIAgkApAMBBQJjbgkAzAgCCQCkAwEFAmNrCQDMCAIFAmNqCQDMCAIJAKQDAQUCY0EJAMwIAgkApAMBBQJjQwUDbmlsBQFqAmRMAR9ldmFsdWF0ZVB1dEJ5UHJpY2VBc3NldFJFQURPTkxZAQJjQwQCYlQJAQJhVgAEAmNnCQDZBAEJAJEDAgUCYlQFAXEEAmNHCQCRAwIFAmJUBQFyBAJjaAkA2QQBBQJjRwQCY0gJAJEDAgUCYlQFAXMEAmNpCQDZBAEFAmNIBAJiVQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJUBQF0BAJiVgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJUBQF1BAJjagkAkQMCBQJiVAUBcAQCZ0sICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCY2cJAKwCAgkArAICAgZBc3NldCAJANgEAQUCY2cCDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BAJnUwkBAmJFAQUCY0cEAmdUCQECYkUBBQJjSAQCZ1UJAQFEAgUCZ1MFAmJVBAJnVgkBAUQCBQJnVAUCYlYEAmNwAwkAAAIFAmdLAAAFAWUJAQJiRwIFAmdWBQJnVQQCY04JAQFEAgUCY0MFAmJWBAJjTQkAvAIDBQJjTgUBZAUCY3AEAmNBCQEBSAIFAmNNBQJiVQQCZFIJAQJjeQkCAACgwh4FAmNBBQJjaAUCY0MFAmNpAgAGBwQCY1gIBQJkUgJfMQQCZ1IIBQJkUgJfMwQCY2wIBQJkUgJfNAQCY24IBQJkUgJfNQQCY2sIBQJkUgJfNgkAlAoCBQNuaWwJALkJAgkAzAgCAhAlZCVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCY1gJAMwIAgkApAMBCQEBSAIFAmNwBQFiCQDMCAIJAKQDAQUCY2wJAMwIAgkApAMBBQJjbgkAzAgCCQCkAwEFAmNrCQDMCAIFAmNqCQDMCAIJAKQDAQUCY0EJAMwIAgkApAMBBQJjQwUDbmlsBQFqAmRMARNldmFsdWF0ZUdldFJFQURPTkxZAgJnVwJnWAQCY1AJAQJjYwQCAAUCZ1cFAmdYBQR0aGlzBAJjdggFAmNQAl8xBAJjdwgFAmNQAl8yBAJjbAgFAmNQAl81BAJjbggFAmNQAl82BAJjawgFAmNQAl83BAJjcQgFAmNQAl84BAJjagkBDXBhcnNlSW50VmFsdWUBCAUCY1ACXzkJAJQKAgUDbmlsCQC5CQIJAMwIAgIOJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJjdgkAzAgCCQCkAwEFAmN3CQDMCAIJAKQDAQUCY2wJAMwIAgkApAMBBQJjbgkAzAgCCQCkAwEFAmNrCQDMCAIJAKYDAQUCY3EJAMwIAgkApAMBBQJjagUDbmlsBQFqAQJnWQECZ1oABAJoYQQCZFcJAQJlWgADCQABAgUCZFcCCkJ5dGVWZWN0b3IEAmZkBQJkVwUCZmQDCQABAgUCZFcCBFVuaXQIBQJnWQ9zZW5kZXJQdWJsaWNLZXkJAAIBAgtNYXRjaCBlcnJvcgQCZFcFAmdZAwkAAQIFAmRXAgVPcmRlcgQCZEEFAmRXBAJoYgkBAmFVAAQCaGMJAQJkegEFAmRBBAJhRAgFAmhjAl8xBAJhRQgFAmhjAl8yBAJhRgkA9AMDCAUCZEEJYm9keUJ5dGVzCQCRAwIIBQJkQQZwcm9vZnMAAAgFAmRBD3NlbmRlclB1YmxpY0tleQQCYUcJAPQDAwgFAmRBCWJvZHlCeXRlcwkAkQMCCAUCZEEGcHJvb2ZzAAEFAmhiAwMDBQJhRAUCYUYHBQJhRwcGCQECYUMEBQJhRAUCYUUFAmFGBQJhRwMJAAECBQJkVwIUU2V0U2NyaXB0VHJhbnNhY3Rpb24EAmZhBQJkVwMJAPQDAwgFAmdZCWJvZHlCeXRlcwkAkQMCCAUCZ1kGcHJvb2ZzAAAFAmhhBgQCaGQJAPYDAQkBBXZhbHVlAQgFAmZhBnNjcmlwdAQCaGUJANsEAQkBBXZhbHVlAQkAnQgCBQJhTwkBAmFBAAQCaGYJAPEHAQUEdGhpcwMJAAACBQJoZQUCaGQJAQIhPQIFAmhmBQJoZAcJAPQDAwgFAmdZCWJvZHlCeXRlcwkAkQMCCAUCZ1kGcHJvb2ZzAAAFAmhhZQflqw==", "height": 2477964, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: HxieAmcDMt8ZRJy8wx3FEnMrcyjbY9ZmPNttFEErgGhg Next: 7mxWoMhWrMbz8thTEF3MVoZaneaczToQzVhZLegCH5pY Diff:
OldNewDifferences
707707
708708
709709 @Callable(dL)
710-func calculateAmountOutForSwapREADONLY (fg,fh,fi) = {
711- let fj = if ((fh == false))
710+func calculateAmountOutForSwapREADONLY (fg,fh) = {
711+ let fi = if ((fh == false))
712712 then {
713- let fk = aH(this, af())
714- let fl = aH(this, ae())
715- $Tuple2(fk, fl)
713+ let fj = aH(this, af())
714+ let fk = aH(this, ae())
715+ $Tuple2(fj, fk)
716716 }
717717 else {
718- let fk = aH(this, ae())
719- let fl = aH(this, af())
720- $Tuple2(fk, fl)
718+ let fj = aH(this, ae())
719+ let fk = aH(this, af())
720+ $Tuple2(fj, fk)
721721 }
722- let fk = fj._1
723- let fl = fj._2
724- let fm = bE(fl)
725- let fn = bE(fk)
726- let fo = fraction(fn, fg, (fm + fg))
727- let fp = (toBigInt(fm) * toBigInt(fn))
728- let fq = (((toBigInt(bE(fl)) + toBigInt(fg)) + toBigInt(fi)) * (toBigInt(bE(fk)) - toBigInt(fo)))
729- let fr = if ((fq >= fp))
722+ let fj = fi._1
723+ let fk = fi._2
724+ let fl = bE(fk)
725+ let fm = bE(fj)
726+ let fn = fraction(fm, fg, (fl + fg))
727+ let fo = (toBigInt(fl) * toBigInt(fm))
728+ let fp = ((toBigInt(bE(fk)) + toBigInt(fg)) * (toBigInt(bE(fj)) - toBigInt(fn)))
729+ let fq = if ((fp >= fo))
730730 then true
731731 else throw("new K is fewer error")
732- if ((fr == fr))
733- then $Tuple2(nil, fo)
732+ if ((fq == fq))
733+ then $Tuple2(nil, fn)
734734 else throw("Strict value is not equal to itself.")
735735 }
736736
737737
738738
739739 @Callable(dL)
740-func calculateAmountOutForSwapAndSendTokens (fg,fh,fs,ft,fi) = {
741- let fu = {
740+func calculateAmountOutForSwapAndSendTokens (fg,fh,fr,fs) = {
741+ let ft = {
742742 let aR = invoke(aO, "getSwapContractREADONLY", nil, nil)
743743 if ($isInstanceOf(aR, "String"))
744744 then aR
746746 }
747747 let eH = [if ((value(dL.payments[0]).amount >= fg))
748748 then true
749- else aL("Wrong amount"), if ((dL.caller == addressFromStringValue(fu)))
749+ else aL("Wrong amount"), if ((dL.caller == addressFromStringValue(ft)))
750750 then true
751751 else aL("Permission denied")]
752752 if ((eH == eH))
753753 then {
754754 let dM = value(dL.payments[0])
755- let fl = ba(dM.assetId)
756- let fk = if ((fh == false))
755+ let fk = ba(dM.assetId)
756+ let fj = if ((fh == false))
757757 then aH(this, af())
758758 else aH(this, ae())
759- let fm = (bE(fl) - value(dL.payments[0]).amount)
760- let fn = bE(fk)
761- let fo = fraction(fn, fg, (fm + fg))
762- let fp = (toBigInt(fm) * toBigInt(fn))
763- let fq = ((toBigInt(bE(fl)) + toBigInt(fi)) * (toBigInt(bE(fk)) - toBigInt(fo)))
764- let fr = if ((fq >= fp))
759+ let fl = (bE(fk) - value(dL.payments[0]).amount)
760+ let fm = bE(fj)
761+ let fn = fraction(fm, fg, (fl + fg))
762+ let fo = (toBigInt(fl) * toBigInt(fm))
763+ let fp = (toBigInt(bE(fk)) * (toBigInt(bE(fj)) - toBigInt(fn)))
764+ let fq = if ((fp >= fo))
765765 then true
766766 else throw("new K is fewer error")
767- if ((fr == fr))
767+ if ((fq == fq))
768768 then {
769- let fv = if ((fo >= fs))
769+ let fu = if ((fn >= fr))
770770 then true
771771 else throw("Exchange result is fewer coins than expected")
772- if ((fv == fv))
773- then $Tuple2([ScriptTransfer(addressFromStringValue(ft), fo, aY(fk))], fo)
772+ if ((fu == fu))
773+ then $Tuple2([ScriptTransfer(addressFromStringValue(fs), fn, aY(fj))], fn)
774774 else throw("Strict value is not equal to itself.")
775775 }
776776 else throw("Strict value is not equal to itself.")
781781
782782
783783 @Callable(dL)
784-func setManager (fw) = {
785- let fx = fe(dL)
786- if ((fx == fx))
784+func setManager (fv) = {
785+ let fw = fe(dL)
786+ if ((fw == fw))
787787 then {
788- let fy = fromBase58String(fw)
789- if ((fy == fy))
790- then [StringEntry(V(), fw)]
788+ let fx = fromBase58String(fv)
789+ if ((fx == fx))
790+ then [StringEntry(V(), fv)]
791791 else throw("Strict value is not equal to itself.")
792792 }
793793 else throw("Strict value is not equal to itself.")
797797
798798 @Callable(dL)
799799 func confirmManager () = {
800- let fz = fb()
801- let fA = if (isDefined(fz))
800+ let fy = fb()
801+ let fz = if (isDefined(fy))
802802 then true
803803 else throw("No pending manager")
804- if ((fA == fA))
804+ if ((fz == fz))
805805 then {
806- let fB = if ((dL.callerPublicKey == value(fz)))
806+ let fA = if ((dL.callerPublicKey == value(fy)))
807807 then true
808808 else throw("You are not pending manager")
809- if ((fB == fB))
810- then [StringEntry(U(), toBase58String(value(fz))), DeleteEntry(V())]
809+ if ((fA == fA))
810+ then [StringEntry(U(), toBase58String(value(fy))), DeleteEntry(V())]
811811 else throw("Strict value is not equal to itself.")
812812 }
813813 else throw("Strict value is not equal to itself.")
816816
817817
818818 @Callable(dL)
819-func put (cz,fC) = if ((0 > cz))
819+func put (cz,fB) = if ((0 > cz))
820820 then throw("Invalid slippageTolerance passed")
821821 else {
822822 let dR = dO(dL, cz, true)
825825 let cx = dR._9
826826 let dc = dR._10
827827 let dd = dR._11
828- let fD = dR._12
829- let fE = dR._13
828+ let fC = dR._12
829+ let fD = dR._13
830830 let dP = toBigInt(value(dL.payments[0]).amount)
831831 let dQ = toBigInt(value(dL.payments[1]).amount)
832832 let ds = dl(dP, dQ, toBigInt(0))
846846 }
847847 if ((dV == dV))
848848 then {
849- let fF = if ((dc > 0))
850- then invoke(bo, "put", nil, [AttachedPayment(fD, dc)])
849+ let fE = if ((dc > 0))
850+ then invoke(bo, "put", nil, [AttachedPayment(fC, dc)])
851851 else nil
852- if ((fF == fF))
852+ if ((fE == fE))
853853 then {
854- let fG = if ((dd > 0))
855- then invoke(bo, "put", nil, [AttachedPayment(fE, dd)])
854+ let fF = if ((dd > 0))
855+ then invoke(bo, "put", nil, [AttachedPayment(fD, dd)])
856856 else nil
857- if ((fG == fG))
857+ if ((fF == fF))
858858 then {
859- let fH = if (fC)
859+ let fG = if (fB)
860860 then {
861- let fI = invoke(bn, "stake", nil, [AttachedPayment(cg, db)])
862- if ((fI == fI))
861+ let fH = invoke(bn, "stake", nil, [AttachedPayment(cg, db)])
862+ if ((fH == fH))
863863 then nil
864864 else throw("Strict value is not equal to itself.")
865865 }
866866 else [ScriptTransfer(dL.caller, db, cg)]
867- let fJ = dt(0, 0, 0)
868- if ((fJ == fJ))
867+ let fI = dt(0, 0, 0)
868+ if ((fI == fI))
869869 then {
870- let dk = fJ._2
871- let fK = fJ._1
872- let fL = dx(ds, dk)
873- if ((fL == fL))
874- then ((cx ++ fH) ++ fK)
870+ let dk = fI._2
871+ let fJ = fI._1
872+ let fK = dx(ds, dk)
873+ if ((fK == fK))
874+ then ((cx ++ fG) ++ fJ)
875875 else throw("Strict value is not equal to itself.")
876876 }
877877 else throw("Strict value is not equal to itself.")
890890
891891
892892 @Callable(dL)
893-func putForFree (fM) = if ((0 > fM))
893+func putForFree (fL) = if ((0 > fL))
894894 then throw("Invalid value passed")
895895 else {
896- let dR = dO(dL, fM, false)
896+ let dR = dO(dL, fL, false)
897897 let cx = dR._9
898898 let dP = toBigInt(value(dL.payments[0]).amount)
899899 let dQ = toBigInt(value(dL.payments[1]).amount)
900900 let ds = dl(dP, dQ, toBigInt(0))
901901 if ((ds == ds))
902902 then {
903- let fN = dt(0, 0, 0)
904- let fK = fN._1
905- let dk = fN._2
906- let fL = dx(ds, dk)
907- if ((fL == fL))
908- then (cx ++ fK)
903+ let fM = dt(0, 0, 0)
904+ let fJ = fM._1
905+ let dk = fM._2
906+ let fK = dx(ds, dk)
907+ if ((fK == fK))
908+ then (cx ++ fJ)
909909 else throw("Strict value is not equal to itself.")
910910 }
911911 else throw("Strict value is not equal to itself.")
914914
915915
916916 @Callable(dL)
917-func putOneTkn (fO,fP) = {
918- let fQ = {
917+func putOneTkn (fN,fO) = {
918+ let fP = {
919919 let aR = invoke(aO, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
920920 if ($isInstanceOf(aR, "Boolean"))
921921 then aR
922922 else throw(($getType(aR) + " couldn't be cast to Boolean"))
923923 }
924- let fR = if (if (if (aT())
924+ let fQ = if (if (if (aT())
925925 then true
926926 else (bg == l))
927927 then true
928928 else (bg == n))
929929 then true
930- else fQ
931- let eH = [if (if (!(fR))
930+ else fP
931+ let eH = [if (if (!(fQ))
932932 then true
933933 else fc(dL))
934934 then true
937937 else aL("exactly 1 payment are expected")]
938938 if ((eH == eH))
939939 then {
940- let fS = dL.payments[0]
941- let ec = fS.assetId
942- let eb = fS.amount
940+ let fR = dL.payments[0]
941+ let ec = fR.assetId
942+ let eb = fR.amount
943943 let ds = if ((ec == bi))
944944 then dl(toBigInt(eb), toBigInt(0), toBigInt(0))
945945 else if ((ec == bj))
949949 then {
950950 let ab = dL.caller
951951 let ac = dL.transactionId
952- let fT = ea(eb, ec, ab, ac)
953- if ((fT == fT))
952+ let fS = ea(eb, ec, ab, ac)
953+ if ((fS == fS))
954954 then {
955- let eg = fT._5
956- let fU = fT._4
957- let dZ = fT._3
958- let de = fT._2
959- let fV = fT._1
960- let fW = if (if ((fO > 0))
961- then (fO > fV)
955+ let eg = fS._5
956+ let fT = fS._4
957+ let dZ = fS._3
958+ let de = fS._2
959+ let fU = fS._1
960+ let fV = if (if ((fN > 0))
961+ then (fN > fU)
962962 else false)
963- then aL(makeString(["amount to receive is less than ", toString(fO)], ""))
964- else fV
965- let dU = dS(fW)
963+ then aL(makeString(["amount to receive is less than ", toString(fN)], ""))
964+ else fU
965+ let dU = dS(fV)
966966 if ((dU == dU))
967967 then {
968- let fH = if (fP)
968+ let fG = if (fO)
969969 then {
970- let fX = invoke(bn, "stake", nil, [AttachedPayment(bh, fW)])
971- if ((fX == fX))
970+ let fW = invoke(bn, "stake", nil, [AttachedPayment(bh, fV)])
971+ if ((fW == fW))
972972 then nil
973973 else throw("Strict value is not equal to itself.")
974974 }
975- else [ScriptTransfer(dL.caller, fW, bh)]
976- let fY = if ((dZ > 0))
975+ else [ScriptTransfer(dL.caller, fV, bh)]
976+ let fX = if ((dZ > 0))
977977 then [ScriptTransfer(aP, dZ, ec)]
978978 else nil
979- let fZ = if ((this == aP))
979+ let fY = if ((this == aP))
980980 then $Tuple2(0, 0)
981981 else if (eg)
982982 then $Tuple2(-(dZ), 0)
983983 else $Tuple2(0, -(dZ))
984- let du = fZ._1
985- let dv = fZ._2
986- let ga = dt(du, dv, 0)
987- let fK = ga._1
988- let dk = ga._2
984+ let du = fY._1
985+ let dv = fY._2
986+ let fZ = dt(du, dv, 0)
987+ let fJ = fZ._1
988+ let dk = fZ._2
989989 let dE = value(getString(aj))
990- let fL = dx(ds, dk)
991- if ((fL == fL))
992- then $Tuple2((((de ++ fH) ++ fY) ++ fK), fW)
990+ let fK = dx(ds, dk)
991+ if ((fK == fK))
992+ then $Tuple2((((de ++ fG) ++ fX) ++ fJ), fV)
993993 else throw("Strict value is not equal to itself.")
994994 }
995995 else throw("Strict value is not equal to itself.")
10051005
10061006 @Callable(dL)
10071007 func putOneTknREADONLY (ec,eb) = {
1008- let gb = ea(eb, aY(ec), unit, unit)
1009- let fV = gb._1
1010- let de = gb._2
1011- let dZ = gb._3
1012- let fU = gb._4
1013- let eg = gb._5
1014- $Tuple2(nil, $Tuple3(fV, dZ, fU))
1008+ let ga = ea(eb, aY(ec), unit, unit)
1009+ let fU = ga._1
1010+ let de = ga._2
1011+ let dZ = ga._3
1012+ let fT = ga._4
1013+ let eg = ga._5
1014+ $Tuple2(nil, $Tuple3(fU, dZ, fT))
10151015 }
10161016
10171017
10181018
10191019 @Callable(dL)
1020-func getOneTkn (gc,fO) = {
1021- let fQ = {
1020+func getOneTkn (gb,fN) = {
1021+ let fP = {
10221022 let aR = invoke(aO, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
10231023 if ($isInstanceOf(aR, "Boolean"))
10241024 then aR
10251025 else throw(($getType(aR) + " couldn't be cast to Boolean"))
10261026 }
1027- let gd = if (if (aT())
1027+ let gc = if (if (aT())
10281028 then true
10291029 else (bg == n))
10301030 then true
1031- else fQ
1032- let eH = [if (if (!(gd))
1031+ else fP
1032+ let eH = [if (if (!(gc))
10331033 then true
10341034 else fc(dL))
10351035 then true
10381038 else aL("exactly 1 payment are expected")]
10391039 if ((eH == eH))
10401040 then {
1041- let eG = aY(gc)
1042- let fS = dL.payments[0]
1043- let ec = fS.assetId
1044- let eo = fS.amount
1041+ let eG = aY(gb)
1042+ let fR = dL.payments[0]
1043+ let ec = fR.assetId
1044+ let eo = fR.amount
10451045 let ds = dl(toBigInt(0), toBigInt(0), toBigInt(0))
10461046 if ((ds == ds))
10471047 then {
10481048 let ab = dL.caller
10491049 let ac = dL.transactionId
1050- let ge = eF(eG, eo, ec, ab, ac)
1051- if ((ge == ge))
1050+ let gd = eF(eG, eo, ec, ab, ac)
1051+ if ((gd == gd))
10521052 then {
1053- let eI = ge._5
1054- let fU = ge._4
1055- let dZ = ge._3
1056- let de = ge._2
1057- let gf = ge._1
1058- let dT = if (if ((fO > 0))
1059- then (fO > gf)
1053+ let eI = gd._5
1054+ let fT = gd._4
1055+ let dZ = gd._3
1056+ let de = gd._2
1057+ let ge = gd._1
1058+ let dT = if (if ((fN > 0))
1059+ then (fN > ge)
10601060 else false)
1061- then aL(makeString(["amount to receive is less than ", toString(fO)], ""))
1062- else gf
1063- let gg = invoke(aO, "burn", [eo], [AttachedPayment(ec, eo)])
1064- if ((gg == gg))
1061+ then aL(makeString(["amount to receive is less than ", toString(fN)], ""))
1062+ else ge
1063+ let gf = invoke(aO, "burn", [eo], [AttachedPayment(ec, eo)])
1064+ if ((gf == gf))
10651065 then {
1066- let gh = [ScriptTransfer(ab, dT, eG)]
1067- let fY = if ((dZ > 0))
1066+ let gg = [ScriptTransfer(ab, dT, eG)]
1067+ let fX = if ((dZ > 0))
10681068 then [ScriptTransfer(aP, dZ, eG)]
10691069 else nil
1070- let gi = {
1071- let gj = if ((this == aP))
1070+ let gh = {
1071+ let gi = if ((this == aP))
10721072 then 0
10731073 else dZ
10741074 if (eI)
1075- then $Tuple2(-((dT + gj)), 0)
1076- else $Tuple2(0, -((dT + gj)))
1075+ then $Tuple2(-((dT + gi)), 0)
1076+ else $Tuple2(0, -((dT + gi)))
10771077 }
1078- let du = gi._1
1079- let dv = gi._2
1080- let gk = dt(du, dv, 0)
1081- let fK = gk._1
1082- let dk = gk._2
1083- let fL = dx(ds, dk)
1084- if ((fL == fL))
1085- then $Tuple2((((de ++ gh) ++ fY) ++ fK), dT)
1078+ let du = gh._1
1079+ let dv = gh._2
1080+ let gj = dt(du, dv, 0)
1081+ let fJ = gj._1
1082+ let dk = gj._2
1083+ let fK = dx(ds, dk)
1084+ if ((fK == fK))
1085+ then $Tuple2((((de ++ gg) ++ fX) ++ fJ), dT)
10861086 else throw("Strict value is not equal to itself.")
10871087 }
10881088 else throw("Strict value is not equal to itself.")
10981098
10991099 @Callable(dL)
11001100 func getOneTknREADONLY (eG,eo) = {
1101- let gl = eF(aY(eG), eo, bh, unit, unit)
1102- let gf = gl._1
1103- let de = gl._2
1104- let dZ = gl._3
1105- let fU = gl._4
1106- let eI = gl._5
1107- $Tuple2(nil, $Tuple3(gf, dZ, fU))
1101+ let gk = eF(aY(eG), eo, bh, unit, unit)
1102+ let ge = gk._1
1103+ let de = gk._2
1104+ let dZ = gk._3
1105+ let fT = gk._4
1106+ let eI = gk._5
1107+ $Tuple2(nil, $Tuple3(ge, dZ, fT))
11081108 }
11091109
11101110
11111111
11121112 @Callable(dL)
1113-func unstakeAndGetOneTkn (gm,gc,fO) = {
1114- let fQ = {
1113+func unstakeAndGetOneTkn (gl,gb,fN) = {
1114+ let fP = {
11151115 let aR = invoke(aO, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
11161116 if ($isInstanceOf(aR, "Boolean"))
11171117 then aR
11181118 else throw(($getType(aR) + " couldn't be cast to Boolean"))
11191119 }
1120- let gd = if (if (aT())
1120+ let gc = if (if (aT())
11211121 then true
11221122 else (bg == n))
11231123 then true
1124- else fQ
1125- let eH = [if (if (!(gd))
1124+ else fP
1125+ let eH = [if (if (!(gc))
11261126 then true
11271127 else fc(dL))
11281128 then true
11311131 else aL("no payments are expected")]
11321132 if ((eH == eH))
11331133 then {
1134- let eG = aY(gc)
1134+ let eG = aY(gb)
11351135 let ab = dL.caller
11361136 let ac = dL.transactionId
11371137 let ds = dl(toBigInt(0), toBigInt(0), toBigInt(0))
11381138 if ((ds == ds))
11391139 then {
1140- let gn = invoke(bn, "unstake", [toBase58String(bh), gm], nil)
1141- if ((gn == gn))
1140+ let gm = invoke(bn, "unstake", [toBase58String(bh), gl], nil)
1141+ if ((gm == gm))
11421142 then {
1143- let go = eF(eG, gm, bh, ab, ac)
1144- if ((go == go))
1143+ let gn = eF(eG, gl, bh, ab, ac)
1144+ if ((gn == gn))
11451145 then {
1146- let eI = go._5
1147- let fU = go._4
1148- let dZ = go._3
1149- let de = go._2
1150- let gf = go._1
1151- let dT = if (if ((fO > 0))
1152- then (fO > gf)
1146+ let eI = gn._5
1147+ let fT = gn._4
1148+ let dZ = gn._3
1149+ let de = gn._2
1150+ let ge = gn._1
1151+ let dT = if (if ((fN > 0))
1152+ then (fN > ge)
11531153 else false)
1154- then aL(makeString(["amount to receive is less than ", toString(fO)], ""))
1155- else gf
1156- let gg = invoke(aO, "burn", [gm], [AttachedPayment(bh, gm)])
1157- if ((gg == gg))
1154+ then aL(makeString(["amount to receive is less than ", toString(fN)], ""))
1155+ else ge
1156+ let gf = invoke(aO, "burn", [gl], [AttachedPayment(bh, gl)])
1157+ if ((gf == gf))
11581158 then {
1159- let gh = [ScriptTransfer(dL.caller, dT, eG)]
1160- let fY = if ((dZ > 0))
1159+ let gg = [ScriptTransfer(dL.caller, dT, eG)]
1160+ let fX = if ((dZ > 0))
11611161 then [ScriptTransfer(aP, dZ, eG)]
11621162 else nil
1163- let gp = {
1164- let gj = if ((this == aP))
1163+ let go = {
1164+ let gi = if ((this == aP))
11651165 then 0
11661166 else dZ
11671167 if (eI)
1168- then $Tuple2(-((dT + gj)), 0)
1169- else $Tuple2(0, -((dT + gj)))
1168+ then $Tuple2(-((dT + gi)), 0)
1169+ else $Tuple2(0, -((dT + gi)))
11701170 }
1171- let du = gp._1
1172- let dv = gp._2
1173- let gq = dt(du, dv, 0)
1174- let fK = gq._1
1175- let dk = gq._2
1176- let fL = dx(ds, dk)
1177- if ((fL == fL))
1178- then $Tuple2((((de ++ gh) ++ fY) ++ fK), dT)
1171+ let du = go._1
1172+ let dv = go._2
1173+ let gp = dt(du, dv, 0)
1174+ let fJ = gp._1
1175+ let dk = gp._2
1176+ let fK = dx(ds, dk)
1177+ if ((fK == fK))
1178+ then $Tuple2((((de ++ gg) ++ fX) ++ fJ), dT)
11791179 else throw("Strict value is not equal to itself.")
11801180 }
11811181 else throw("Strict value is not equal to itself.")
11941194 @Callable(dL)
11951195 func get () = {
11961196 let cP = dK(dL)
1197- let gr = cP._1
1197+ let gq = cP._1
11981198 let cw = cP._2
11991199 let dN = cP._3
12001200 let ce = cP._4
12021202 let ds = dl(toBigInt(0), toBigInt(0), toBigInt(0))
12031203 if ((ds == ds))
12041204 then {
1205- let gs = invoke(aO, "burn", [dN], [AttachedPayment(ce, dN)])
1206- if ((gs == gs))
1205+ let gr = invoke(aO, "burn", [dN], [AttachedPayment(ce, dN)])
1206+ if ((gr == gr))
12071207 then {
1208- let gt = dt(-(gr), -(cw), 0)
1209- let fK = gt._1
1210- let dk = gt._2
1211- let fL = dx(ds, dk)
1212- if ((fL == fL))
1213- then (cx ++ fK)
1208+ let gs = dt(-(gq), -(cw), 0)
1209+ let fJ = gs._1
1210+ let dk = gs._2
1211+ let fK = dx(ds, dk)
1212+ if ((fK == fK))
1213+ then (cx ++ fJ)
12141214 else throw("Strict value is not equal to itself.")
12151215 }
12161216 else throw("Strict value is not equal to itself.")
12211221
12221222
12231223 @Callable(dL)
1224-func getNoLess (gu,gv) = {
1224+func getNoLess (gt,gu) = {
12251225 let cP = dK(dL)
12261226 let cv = cP._1
12271227 let cw = cP._2
12281228 let dN = cP._3
12291229 let ce = cP._4
12301230 let cx = cP._5
1231- if ((gu > cv))
1232- then throw(((("noLessThenAmtAsset failed: " + toString(cv)) + " < ") + toString(gu)))
1233- else if ((gv > cw))
1234- then throw(((("noLessThenPriceAsset failed: " + toString(cw)) + " < ") + toString(gv)))
1231+ if ((gt > cv))
1232+ then throw(((("noLessThenAmtAsset failed: " + toString(cv)) + " < ") + toString(gt)))
1233+ else if ((gu > cw))
1234+ then throw(((("noLessThenPriceAsset failed: " + toString(cw)) + " < ") + toString(gu)))
12351235 else {
12361236 let ds = dl(toBigInt(0), toBigInt(0), toBigInt(0))
12371237 if ((ds == ds))
12381238 then {
1239- let gs = invoke(aO, "burn", [dN], [AttachedPayment(ce, dN)])
1240- if ((gs == gs))
1239+ let gr = invoke(aO, "burn", [dN], [AttachedPayment(ce, dN)])
1240+ if ((gr == gr))
12411241 then {
1242- let gw = dt(-(cv), -(cw), 0)
1243- let fK = gw._1
1244- let dk = gw._2
1245- let fL = dx(ds, dk)
1246- if ((fL == fL))
1247- then (cx ++ fK)
1242+ let gv = dt(-(cv), -(cw), 0)
1243+ let fJ = gv._1
1244+ let dk = gv._2
1245+ let fK = dx(ds, dk)
1246+ if ((fK == fK))
1247+ then (cx ++ fJ)
12481248 else throw("Strict value is not equal to itself.")
12491249 }
12501250 else throw("Strict value is not equal to itself.")
12571257
12581258 @Callable(dL)
12591259 func unstakeAndGet (dT) = {
1260- let gx = if ((size(dL.payments) != 0))
1260+ let gw = if ((size(dL.payments) != 0))
12611261 then throw("No payments are expected")
12621262 else true
1263- if ((gx == gx))
1263+ if ((gw == gw))
12641264 then {
12651265 let bT = aV()
12661266 let cg = fromBase58String(bT[q])
12671267 let ds = dl(toBigInt(0), toBigInt(0), toBigInt(0))
12681268 if ((ds == ds))
12691269 then {
1270- let gn = invoke(bn, "unstake", [toBase58String(cg), dT], nil)
1271- if ((gn == gn))
1270+ let gm = invoke(bn, "unstake", [toBase58String(cg), dT], nil)
1271+ if ((gm == gm))
12721272 then {
12731273 let cP = cc(toBase58String(dL.transactionId), toBase58String(cg), dT, dL.caller)
12741274 let cv = cP._1
12751275 let cw = cP._2
12761276 let cj = parseIntValue(cP._9)
12771277 let cx = cP._10
1278- let gy = if (if (aT())
1278+ let gx = if (if (aT())
12791279 then true
12801280 else (cj == n))
12811281 then throw(("Get operation is blocked by admin. Status = " + toString(cj)))
12821282 else true
1283- if ((gy == gy))
1283+ if ((gx == gx))
12841284 then {
1285- let gs = invoke(aO, "burn", [dT], [AttachedPayment(cg, dT)])
1286- if ((gs == gs))
1285+ let gr = invoke(aO, "burn", [dT], [AttachedPayment(cg, dT)])
1286+ if ((gr == gr))
12871287 then {
1288- let gz = dt(-(cv), -(cw), 0)
1289- let fK = gz._1
1290- let dk = gz._2
1291- let fL = dx(ds, dk)
1292- if ((fL == fL))
1293- then (cx ++ fK)
1288+ let gy = dt(-(cv), -(cw), 0)
1289+ let fJ = gy._1
1290+ let dk = gy._2
1291+ let fK = dx(ds, dk)
1292+ if ((fK == fK))
1293+ then (cx ++ fJ)
12941294 else throw("Strict value is not equal to itself.")
12951295 }
12961296 else throw("Strict value is not equal to itself.")
13071307
13081308
13091309 @Callable(dL)
1310-func unstakeAndGetNoLess (gm,gA,gv) = {
1311- let gd = if (aT())
1310+func unstakeAndGetNoLess (gl,gz,gu) = {
1311+ let gc = if (aT())
13121312 then true
13131313 else (bg == n)
1314- let eH = [if (!(gd))
1314+ let eH = [if (!(gc))
13151315 then true
13161316 else throw("get operation is blocked by admin"), if ((size(dL.payments) == 0))
13171317 then true
13211321 let ds = dl(toBigInt(0), toBigInt(0), toBigInt(0))
13221322 if ((ds == ds))
13231323 then {
1324- let gn = invoke(bn, "unstake", [toBase58String(bh), gm], nil)
1325- if ((gn == gn))
1324+ let gm = invoke(bn, "unstake", [toBase58String(bh), gl], nil)
1325+ if ((gm == gm))
13261326 then {
1327- let cP = cc(toBase58String(dL.transactionId), toBase58String(bh), gm, dL.caller)
1327+ let cP = cc(toBase58String(dL.transactionId), toBase58String(bh), gl, dL.caller)
13281328 let cv = cP._1
13291329 let cw = cP._2
13301330 let cx = cP._10
1331- let gB = [if ((cv >= gA))
1331+ let gA = [if ((cv >= gz))
13321332 then true
1333- else throw(makeString(["amount asset amount to receive is less than ", toString(gA)], "")), if ((cw >= gv))
1333+ else throw(makeString(["amount asset amount to receive is less than ", toString(gz)], "")), if ((cw >= gu))
13341334 then true
1335- else throw(makeString(["price asset amount to receive is less than ", toString(gv)], ""))]
1336- if ((gB == gB))
1335+ else throw(makeString(["price asset amount to receive is less than ", toString(gu)], ""))]
1336+ if ((gA == gA))
13371337 then {
1338- let gs = invoke(aO, "burn", [gm], [AttachedPayment(bh, gm)])
1339- if ((gs == gs))
1338+ let gr = invoke(aO, "burn", [gl], [AttachedPayment(bh, gl)])
1339+ if ((gr == gr))
13401340 then {
1341- let gC = dt(-(cv), -(cw), 0)
1342- let fK = gC._1
1343- let dk = gC._2
1344- let fL = dx(ds, dk)
1345- if ((fL == fL))
1346- then (cx ++ fK)
1341+ let gB = dt(-(cv), -(cw), 0)
1342+ let fJ = gB._1
1343+ let dk = gB._2
1344+ let fK = dx(ds, dk)
1345+ if ((fK == fK))
1346+ then (cx ++ fJ)
13471347 else throw("Strict value is not equal to itself.")
13481348 }
13491349 else throw("Strict value is not equal to itself.")
13601360
13611361
13621362 @Callable(dL)
1363-func activate (gD,gE) = if ((toString(dL.caller) != toString(aO)))
1363+func activate (gC,gD) = if ((toString(dL.caller) != toString(aO)))
13641364 then throw("permissions denied")
1365- else $Tuple2([StringEntry(ae(), gD), StringEntry(af(), gE)], "success")
1365+ else $Tuple2([StringEntry(ae(), gC), StringEntry(af(), gD)], "success")
13661366
13671367
13681368
13691369 @Callable(dL)
13701370 func refreshKLp () = {
1371- let gF = valueOrElse(getInteger(ak), 0)
1372- let gG = if (((height - gF) >= an))
1371+ let gE = valueOrElse(getInteger(ak), 0)
1372+ let gF = if (((height - gE) >= an))
13731373 then unit
13741374 else aL(makeString([toString(an), " blocks have not passed since the previous call"], ""))
1375- if ((gG == gG))
1375+ if ((gF == gF))
13761376 then {
13771377 let dE = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, aj), "0")), aN("invalid kLp"))
1378- let gH = dt(0, 0, 0)
1379- let gI = gH._1
1380- let dk = gH._2
1378+ let gG = dt(0, 0, 0)
1379+ let gH = gG._1
1380+ let dk = gG._2
13811381 let dw = if ((dE != dk))
1382- then gI
1382+ then gH
13831383 else aL("nothing to refresh")
13841384 $Tuple2(dw, toString(dk))
13851385 }
14381438 func statsREADONLY () = {
14391439 let bT = aV()
14401440 let cg = fromBase58String(bT[q])
1441- let gJ = bT[r]
1442- let gK = bT[s]
1441+ let gI = bT[r]
1442+ let gJ = bT[s]
14431443 let cI = bT[v]
14441444 let cJ = bT[w]
14451445 let bU = parseIntValue(bT[t])
14461446 let bV = parseIntValue(bT[u])
1447- let gL = valueOrErrorMessage(assetInfo(cg), (("Asset " + toBase58String(cg)) + " doesn't exist")).quantity
1447+ let gK = valueOrErrorMessage(assetInfo(cg), (("Asset " + toBase58String(cg)) + " doesn't exist")).quantity
1448+ let gL = bE(gI)
14481449 let gM = bE(gJ)
1449- let gN = bE(gK)
1450- let gO = if ((gL == 0))
1450+ let gN = if ((gK == 0))
14511451 then [e, e, e]
1452- else bR(gM, gN, gL)
1452+ else bR(gL, gM, gK)
14531453 let cq = 0
1454- let gP = H(gO[1], b)
1455- let gQ = H(gO[2], b)
1456- let gR = value(getInteger(aO, ay(toString(this))))
1457- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(gM), toString(gN), toString(gL), toString(cq), toString(gP), toString(gQ), toString(gR)], j))
1454+ let gO = H(gN[1], b)
1455+ let gP = H(gN[2], b)
1456+ let gQ = value(getInteger(aO, ay(toString(this))))
1457+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(gL), toString(gM), toString(gK), toString(cq), toString(gO), toString(gP), toString(gQ)], j))
14581458 }
14591459
14601460
14701470 let bU = parseIntValue(bT[t])
14711471 let bV = parseIntValue(bT[u])
14721472 let cj = bT[p]
1473- let gL = valueOrErrorMessage(assetInfo(cg), (("Asset " + toBase58String(cg)) + " doesn't exist")).quantity
1474- let gM = bE(cG)
1475- let gN = bE(cH)
1476- let bP = D(gM, bU)
1477- let bQ = D(gN, bV)
1478- let cp = if ((gL == 0))
1473+ let gK = valueOrErrorMessage(assetInfo(cg), (("Asset " + toBase58String(cg)) + " doesn't exist")).quantity
1474+ let gL = bE(cG)
1475+ let gM = bE(cH)
1476+ let bP = D(gL, bU)
1477+ let bQ = D(gM, bV)
1478+ let cp = if ((gK == 0))
14791479 then e
14801480 else bG(bQ, bP)
14811481 let cM = D(cA, bU)
14831483 let cC = H(cN, bV)
14841484 let dR = cy("", 500000, cA, ch, cC, ci, "", true, false)
14851485 let cX = dR._1
1486- let gS = dR._3
1486+ let gR = dR._3
14871487 let cl = dR._4
14881488 let cn = dR._5
14891489 let ck = dR._6
15031503 let bU = parseIntValue(bT[t])
15041504 let bV = parseIntValue(bT[u])
15051505 let cj = bT[p]
1506- let gL = valueOrErrorMessage(assetInfo(cg), (("Asset " + toBase58String(cg)) + " doesn't exist")).quantity
1507- let gT = bE(cG)
1508- let gU = bE(cH)
1509- let gV = D(gT, bU)
1510- let gW = D(gU, bV)
1511- let cp = if ((gL == 0))
1506+ let gK = valueOrErrorMessage(assetInfo(cg), (("Asset " + toBase58String(cg)) + " doesn't exist")).quantity
1507+ let gS = bE(cG)
1508+ let gT = bE(cH)
1509+ let gU = D(gS, bU)
1510+ let gV = D(gT, bV)
1511+ let cp = if ((gK == 0))
15121512 then e
1513- else bG(gW, gV)
1513+ else bG(gV, gU)
15141514 let cN = D(cC, bV)
15151515 let cM = fraction(cN, d, cp)
15161516 let cA = H(cM, bU)
15171517 let dR = cy("", 500000, cA, ch, cC, ci, "", true, false)
15181518 let cX = dR._1
1519- let gS = dR._3
1519+ let gR = dR._3
15201520 let cl = dR._4
15211521 let cn = dR._5
15221522 let ck = dR._6
15261526
15271527
15281528 @Callable(dL)
1529-func evaluateGetREADONLY (gX,gY) = {
1530- let cP = cc("", gX, gY, this)
1529+func evaluateGetREADONLY (gW,gX) = {
1530+ let cP = cc("", gW, gX, this)
15311531 let cv = cP._1
15321532 let cw = cP._2
15331533 let cl = cP._5
15391539 }
15401540
15411541
1542-@Verifier(gZ)
1543-func ha () = {
1544- let hb = {
1542+@Verifier(gY)
1543+func gZ () = {
1544+ let ha = {
15451545 let dW = eZ()
15461546 if ($isInstanceOf(dW, "ByteVector"))
15471547 then {
15491549 fd
15501550 }
15511551 else if ($isInstanceOf(dW, "Unit"))
1552- then gZ.senderPublicKey
1552+ then gY.senderPublicKey
15531553 else throw("Match error")
15541554 }
1555- let dW = gZ
1555+ let dW = gY
15561556 if ($isInstanceOf(dW, "Order"))
15571557 then {
15581558 let dA = dW
1559- let hc = aU()
1560- let hd = dz(dA)
1561- let aD = hd._1
1562- let aE = hd._2
1559+ let hb = aU()
1560+ let hc = dz(dA)
1561+ let aD = hc._1
1562+ let aE = hc._2
15631563 let aF = sigVerify(dA.bodyBytes, dA.proofs[0], dA.senderPublicKey)
1564- let aG = sigVerify(dA.bodyBytes, dA.proofs[1], hc)
1564+ let aG = sigVerify(dA.bodyBytes, dA.proofs[1], hb)
15651565 if (if (if (aD)
15661566 then aF
15671567 else false)
15731573 else if ($isInstanceOf(dW, "SetScriptTransaction"))
15741574 then {
15751575 let fa = dW
1576- if (sigVerify(gZ.bodyBytes, gZ.proofs[0], hb))
1576+ if (sigVerify(gY.bodyBytes, gY.proofs[0], ha))
15771577 then true
15781578 else {
1579- let he = blake2b256(value(fa.script))
1580- let hf = fromBase64String(value(getString(aO, aA())))
1581- let hg = scriptHash(this)
1582- if ((hf == he))
1583- then (hg != he)
1579+ let hd = blake2b256(value(fa.script))
1580+ let he = fromBase64String(value(getString(aO, aA())))
1581+ let hf = scriptHash(this)
1582+ if ((he == hd))
1583+ then (hf != hd)
15841584 else false
15851585 }
15861586 }
1587- else sigVerify(gZ.bodyBytes, gZ.proofs[0], hb)
1587+ else sigVerify(gY.bodyBytes, gY.proofs[0], ha)
15881588 }
15891589
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 8
55
66 let b = 100000000
77
88 let c = toBigInt(100000000)
99
1010 let d = toBigInt(1000000000000000000)
1111
1212 let e = toBigInt(0)
1313
1414 let f = toBigInt(0)
1515
1616 let g = toBigInt(1)
1717
1818 let h = toBigInt(2)
1919
2020 let i = "WAVES"
2121
2222 let j = "__"
2323
2424 let k = 1
2525
2626 let l = 2
2727
2828 let m = 3
2929
3030 let n = 4
3131
3232 let o = 1
3333
3434 let p = 2
3535
3636 let q = 3
3737
3838 let r = 4
3939
4040 let s = 5
4141
4242 let t = 6
4343
4444 let u = 7
4545
4646 let v = 8
4747
4848 let w = 9
4949
5050 let x = 10
5151
5252 let y = 1
5353
5454 let z = 2
5555
5656 let A = 3
5757
5858 let B = 1
5959
6060 let C = 7
6161
6262 func D (E,F) = fraction(toBigInt(E), d, toBigInt(F))
6363
6464
6565 func G (E,F) = fraction(E, d, F)
6666
6767
6868 func H (I,J) = toInt(fraction(I, toBigInt(J), d))
6969
7070
7171 func K (I,J,L) = toInt(fraction(I, toBigInt(J), d, L))
7272
7373
7474 func M (N,O,P) = fraction(N, O, P)
7575
7676
7777 func Q (I) = if ((0 > I))
7878 then -(I)
7979 else I
8080
8181
8282 func R (I) = if ((e > I))
8383 then -(I)
8484 else I
8585
8686
8787 func S () = "%s__swapContract"
8888
8989
9090 func T () = "%s__factoryContract"
9191
9292
9393 func U () = "%s__managerPublicKey"
9494
9595
9696 func V () = "%s__pendingManagerPublicKey"
9797
9898
9999 func W () = "%s%s__price__last"
100100
101101
102102 func X (Y,Z) = makeString(["%s%s%d%d__price__history", toString(Y), toString(Z)], j)
103103
104104
105105 func aa (ab,ac) = ((("%s%s%s__P__" + ab) + "__") + ac)
106106
107107
108108 func ad (ab,ac) = ((("%s%s%s__G__" + ab) + "__") + ac)
109109
110110
111111 func ae () = "%s__amountAsset"
112112
113113
114114 func af () = "%s__priceAsset"
115115
116116
117117 let ag = "%s__fee"
118118
119119 let ah = fraction(10, b, 10000)
120120
121121 let ai = valueOrElse(getInteger(this, ag), ah)
122122
123123 let aj = makeString(["%s", "kLp"], j)
124124
125125 let ak = makeString(["%s", "kLpRefreshedHeight"], j)
126126
127127 let al = makeString(["%s", "refreshKLpDelay"], j)
128128
129129 let am = 30
130130
131131 let an = valueOrElse(getInteger(this, al), am)
132132
133133 func ao () = "%s__factoryConfig"
134134
135135
136136 func ap () = "%s%s__matcher__publicKey"
137137
138138
139139 func aq (ar) = (("%s%s%s__" + ar) + "__mappings__poolContract2LpAsset")
140140
141141
142142 func as (at,au) = (((("%d%d%s__" + at) + "__") + au) + "__config")
143143
144144
145145 func av (aw) = ("%s%s%s__mappings__baseAsset2internalId__" + aw)
146146
147147
148148 func ax () = "%s__shutdown"
149149
150150
151151 func ay (az) = ("%s%s__poolWeight__" + az)
152152
153153
154154 func aA () = "%s__allowedLpScriptHash"
155155
156156
157157 let aB = "%s__feeCollectorAddress"
158158
159159 func aC (aD,aE,aF,aG) = throw((((((((("order validation failed: orderValid=" + toString(aD)) + " (") + aE) + ")") + " senderValid=") + toString(aF)) + " matcherValid=") + toString(aG)))
160160
161161
162162 func aH (aI,aJ) = valueOrErrorMessage(getString(aI, aJ), makeString(["mandatory ", toString(aI), ".", aJ, " is not defined"], ""))
163163
164164
165165 func aK (aI,aJ) = valueOrErrorMessage(getInteger(aI, aJ), makeString(["mandatory ", toString(aI), ".", aJ, " is not defined"], ""))
166166
167167
168168 func aL (aM) = throw(makeString(["lp.ride:", aM], " "))
169169
170170
171171 func aN (aM) = makeString(["lp.ride:", aM], " ")
172172
173173
174174 let aO = addressFromStringValue(aH(this, T()))
175175
176176 let aP = addressFromStringValue(aH(aO, aB))
177177
178178 let aQ = {
179179 let aR = invoke(aO, "getInFeeREADONLY", [toString(this)], nil)
180180 if ($isInstanceOf(aR, "Int"))
181181 then aR
182182 else throw(($getType(aR) + " couldn't be cast to Int"))
183183 }
184184
185185 let aS = {
186186 let aR = invoke(aO, "getOutFeeREADONLY", [toString(this)], nil)
187187 if ($isInstanceOf(aR, "Int"))
188188 then aR
189189 else throw(($getType(aR) + " couldn't be cast to Int"))
190190 }
191191
192192 func aT () = valueOrElse(getBoolean(aO, ax()), false)
193193
194194
195195 func aU () = fromBase58String(aH(aO, ap()))
196196
197197
198198 func aV () = {
199199 let aW = aH(this, ae())
200200 let aX = aH(this, af())
201201 let au = aK(aO, av(aX))
202202 let at = aK(aO, av(aW))
203203 split(aH(aO, as(toString(at), toString(au))), j)
204204 }
205205
206206
207207 func aY (aZ) = if ((aZ == i))
208208 then unit
209209 else fromBase58String(aZ)
210210
211211
212212 func ba (aZ) = if ((aZ == unit))
213213 then i
214214 else toBase58String(value(aZ))
215215
216216
217217 func bb (bc) = $Tuple7(addressFromStringValue(bc[o]), parseIntValue(bc[p]), fromBase58String(bc[q]), aY(bc[r]), aY(bc[s]), parseIntValue(bc[t]), parseIntValue(bc[u]))
218218
219219
220220 let bd = bb(aV())
221221
222222 let be = bd
223223
224224 let bf = be._1
225225
226226 let bg = be._2
227227
228228 let bh = be._3
229229
230230 let bi = be._4
231231
232232 let bj = be._5
233233
234234 let bk = be._6
235235
236236 let bl = be._7
237237
238238 func bm () = split(aH(aO, ao()), j)
239239
240240
241241 let bn = valueOrErrorMessage(addressFromString(bm()[B]), "incorrect staking address")
242242
243243 let bo = valueOrErrorMessage(addressFromString(bm()[C]), "incorrect staking address")
244244
245245 func bp (bq,br,bs,bt,bu,bv,bw,bx,by,bz) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bq), toString(br), toString(bs), toString(bt), toString(bu), toString(bv), toString(bw), toString(bx), toString(by), toString(bz)], j)
246246
247247
248248 func bA (bB,bC,bD,bt,bw,bx) = makeString(["%d%d%d%d%d%d", toString(bB), toString(bC), toString(bD), toString(bt), toString(bw), toString(bx)], j)
249249
250250
251251 func bE (bF) = if ((bF == "WAVES"))
252252 then wavesBalance(this).available
253253 else assetBalance(this, fromBase58String(bF))
254254
255255
256256 func bG (bH,bI) = fraction(bH, d, bI)
257257
258258
259259 func bJ (bH,bI,L) = fraction(bH, d, bI, L)
260260
261261
262262 func bK (bL,bM,bN,bO) = {
263263 let bP = D(bN, bL)
264264 let bQ = D(bO, bM)
265265 bG(bQ, bP)
266266 }
267267
268268
269269 func bR (bN,bO,bS) = {
270270 let bT = aV()
271271 let bU = parseIntValue(bT[t])
272272 let bV = parseIntValue(bT[u])
273273 let bW = bK(bU, bV, bN, bO)
274274 let bI = D(bN, bU)
275275 let bH = D(bO, bV)
276276 let bX = D(bS, b)
277277 let bY = bG(bI, bX)
278278 let bZ = bG(bH, bX)
279279 [bW, bY, bZ]
280280 }
281281
282282
283283 func ca (bN,bO,bS) = {
284284 let cb = bR(bN, bO, bS)
285285 [H(cb[0], b), H(cb[1], b), H(cb[2], b)]
286286 }
287287
288288
289289 func cc (cd,ce,cf,ab) = {
290290 let bT = aV()
291291 let cg = bT[q]
292292 let ch = bT[r]
293293 let ci = bT[s]
294294 let bL = parseIntValue(bT[t])
295295 let bM = parseIntValue(bT[u])
296296 let cj = bT[p]
297297 let ck = valueOrErrorMessage(assetInfo(fromBase58String(cg)), (("Asset " + cg) + " doesn't exist")).quantity
298298 if ((cg != ce))
299299 then throw("Invalid asset passed.")
300300 else {
301301 let cl = bE(ch)
302302 let cm = D(cl, bL)
303303 let cn = bE(ci)
304304 let co = D(cn, bM)
305305 let cp = bG(co, cm)
306306 let cq = H(cp, b)
307307 let cr = D(cf, b)
308308 let cs = D(ck, b)
309309 let ct = fraction(cm, cr, cs)
310310 let cu = fraction(co, cr, cs)
311311 let cv = K(ct, bL, FLOOR)
312312 let cw = K(cu, bM, FLOOR)
313313 let cx = if ((cd == ""))
314314 then nil
315315 else [ScriptTransfer(ab, cv, if ((ch == "WAVES"))
316316 then unit
317317 else fromBase58String(ch)), ScriptTransfer(ab, cw, if ((ci == "WAVES"))
318318 then unit
319319 else fromBase58String(ci)), StringEntry(ad(toString(ab), cd), bA(cv, cw, cf, cq, height, lastBlock.timestamp)), IntegerEntry(W(), cq), IntegerEntry(X(height, lastBlock.timestamp), cq)]
320320 $Tuple10(cv, cw, ch, ci, cl, cn, ck, cp, cj, cx)
321321 }
322322 }
323323
324324
325325 func cy (cd,cz,cA,cB,cC,cD,ab,cE,cF) = {
326326 let bT = aV()
327327 let cg = fromBase58String(bT[q])
328328 let cG = bT[r]
329329 let cH = bT[s]
330330 let cI = bT[v]
331331 let cJ = bT[w]
332332 let bU = parseIntValue(bT[t])
333333 let bV = parseIntValue(bT[u])
334334 let cj = bT[p]
335335 let ck = valueOrErrorMessage(assetInfo(cg), (("Asset " + toBase58String(cg)) + " doesn't exist")).quantity
336336 let cK = toBase58String(valueOrElse(cB, fromBase58String("WAVES")))
337337 let cL = toBase58String(valueOrElse(cD, fromBase58String("WAVES")))
338338 if (if ((cG != cK))
339339 then true
340340 else (cH != cL))
341341 then throw("Invalid amt or price asset passed.")
342342 else {
343343 let cl = if (cE)
344344 then bE(cG)
345345 else (bE(cG) - cA)
346346 let cn = if (cE)
347347 then bE(cH)
348348 else (bE(cH) - cC)
349349 let cM = D(cA, bU)
350350 let cN = D(cC, bV)
351351 let cO = bG(cN, cM)
352352 let cm = D(cl, bU)
353353 let co = D(cn, bV)
354354 let cP = if ((ck == 0))
355355 then {
356356 let cp = e
357357 let cQ = e
358358 let bX = pow((cM * cN), 0, toBigInt(5), 1, 0, DOWN)
359359 $Tuple5(H(bX, b), H(cM, bU), H(cN, bV), bG((co + cN), (cm + cM)), cQ)
360360 }
361361 else {
362362 let cp = bG(co, cm)
363363 let cQ = fraction(R((cp - cO)), d, cp)
364364 let cR = D(cz, b)
365365 if (if ((cp != e))
366366 then (cQ > cR)
367367 else false)
368368 then throw(((("Price slippage " + toString(cQ)) + " exceeded the passed limit of ") + toString(cR)))
369369 else {
370370 let cs = D(ck, b)
371371 let cS = fraction(cM, bJ(co, cm, CEILING), d, CEILING)
372372 let cT = fraction(cN, d, bJ(co, cm, FLOOR), CEILING)
373373 let cU = if ((cS > cN))
374374 then $Tuple2(cT, cN)
375375 else $Tuple2(cM, cS)
376376 let cV = cU._1
377377 let cW = cU._2
378378 let bX = fraction(cs, cW, co, FLOOR)
379379 $Tuple5(K(bX, b, FLOOR), K(cV, bU, CEILING), K(cW, bV, CEILING), cp, cQ)
380380 }
381381 }
382382 let cX = cP._1
383383 let cY = cP._2
384384 let cZ = cP._3
385385 let cq = H(cP._4, b)
386386 let da = H(cP._5, b)
387387 if ((0 >= cX))
388388 then throw("Invalid calculations. LP calculated is less than zero.")
389389 else {
390390 let db = if (!(cF))
391391 then 0
392392 else cX
393393 let dc = (cA - cY)
394394 let dd = (cC - cZ)
395395 let de = [IntegerEntry(W(), cq), IntegerEntry(X(height, lastBlock.timestamp), cq), StringEntry(aa(ab, cd), bp(cY, cZ, db, cq, cz, da, height, lastBlock.timestamp, dc, dd))]
396396 $Tuple13(cX, db, cq, cl, cn, ck, cg, cj, de, dc, dd, cB, cD)
397397 }
398398 }
399399 }
400400
401401
402402 func df (dg,dh,ck) = {
403403 let di = G(dg, toBigInt(bk))
404404 let dj = G(dh, toBigInt(bl))
405405 let dk = fraction(pow((di * dj), 0, toBigInt(5), 1, 18, DOWN), g, ck)
406406 if ((ck == f))
407407 then f
408408 else dk
409409 }
410410
411411
412412 func dl (dm,dn,do) = {
413413 let dp = (toBigInt(bE(ba(bi))) - dm)
414414 let dq = (toBigInt(bE(ba(bj))) - dn)
415415 let dr = (toBigInt(value(assetInfo(bh)).quantity) - do)
416416 let ds = df(dp, dq, dr)
417417 ds
418418 }
419419
420420
421421 func dt (du,dv,do) = {
422422 let dp = (bE(ba(bi)) + du)
423423 let dq = (bE(ba(bj)) + dv)
424424 let dr = (value(assetInfo(bh)).quantity + do)
425425 let dk = df(toBigInt(dp), toBigInt(dq), toBigInt(dr))
426426 let dw = [IntegerEntry(ak, height), StringEntry(aj, toString(dk))]
427427 $Tuple2(dw, dk)
428428 }
429429
430430
431431 func dx (dy,dk) = if ((dk >= dy))
432432 then true
433433 else aL(makeString(["updated KLp lower than current KLp", toString(dy), toString(dk)], " "))
434434
435435
436436 func dz (dA) = {
437437 let dp = bE(ba(bi))
438438 let dq = bE(ba(bj))
439439 let dB = dA.amount
440440 let dC = fraction(dA.amount, dA.price, b, FLOOR)
441441 let dD = if ((dA.orderType == Buy))
442442 then $Tuple2(dB, -(dC))
443443 else $Tuple2(-(dB), dC)
444444 let du = dD._1
445445 let dv = dD._2
446446 if (if (if (aT())
447447 then true
448448 else (bg == m))
449449 then true
450450 else (bg == n))
451451 then throw("Exchange operations disabled")
452452 else if (if ((dA.assetPair.amountAsset != bi))
453453 then true
454454 else (dA.assetPair.priceAsset != bj))
455455 then throw("Wrong order assets.")
456456 else {
457457 let dE = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, aj), "0")), aN("invalid kLp"))
458458 let dF = dt(du, dv, 0)
459459 let dG = dF._1
460460 let dH = dF._2
461461 let dI = (dH >= dE)
462462 let dJ = makeString(["kLp=", toString(dE), " kLpNew=", toString(dH), " amountAssetBalance=", toString(dp), " priceAssetBalance=", toString(dq), " amountAssetBalanceDelta=", toString(du), " priceAssetBalanceDelta=", toString(dv), " height=", toString(height)], "")
463463 $Tuple2(dI, dJ)
464464 }
465465 }
466466
467467
468468 func dK (dL) = if ((size(dL.payments) != 1))
469469 then throw("exactly 1 payment is expected")
470470 else {
471471 let dM = value(dL.payments[0])
472472 let ce = value(dM.assetId)
473473 let dN = dM.amount
474474 let cP = cc(toBase58String(dL.transactionId), toBase58String(ce), dN, dL.caller)
475475 let cv = cP._1
476476 let cw = cP._2
477477 let cj = parseIntValue(cP._9)
478478 let cx = cP._10
479479 if (if (aT())
480480 then true
481481 else (cj == n))
482482 then throw(("Get operation is blocked by admin. Status = " + toString(cj)))
483483 else $Tuple5(cv, cw, dN, ce, cx)
484484 }
485485
486486
487487 func dO (dL,cz,cF) = if ((size(dL.payments) != 2))
488488 then throw("exactly 2 payments are expected")
489489 else {
490490 let dP = value(dL.payments[0])
491491 let dQ = value(dL.payments[1])
492492 let dR = cy(toBase58String(dL.transactionId), cz, dP.amount, dP.assetId, dQ.amount, dQ.assetId, toString(dL.caller), false, cF)
493493 let cj = parseIntValue(dR._8)
494494 if (if (if (aT())
495495 then true
496496 else (cj == l))
497497 then true
498498 else (cj == n))
499499 then throw(("Put operation is blocked by admin. Status = " + toString(cj)))
500500 else dR
501501 }
502502
503503
504504 func dS (dT) = {
505505 let dU = invoke(aO, "emit", [dT], nil)
506506 if ((dU == dU))
507507 then {
508508 let dV = {
509509 let dW = dU
510510 if ($isInstanceOf(dW, "Address"))
511511 then {
512512 let dX = dW
513513 invoke(dX, "emit", [dT], nil)
514514 }
515515 else unit
516516 }
517517 if ((dV == dV))
518518 then dT
519519 else throw("Strict value is not equal to itself.")
520520 }
521521 else throw("Strict value is not equal to itself.")
522522 }
523523
524524
525525 func dY (dT,ai) = {
526526 let dZ = if ((ai == 0))
527527 then 0
528528 else fraction(dT, ai, b)
529529 $Tuple2((dT - dZ), dZ)
530530 }
531531
532532
533533 func ea (eb,ec,ab,ac) = {
534534 let ed = (ac == unit)
535535 let ee = bE(ba(bi))
536536 let ef = bE(ba(bj))
537537 let eg = if ((ec == bi))
538538 then true
539539 else if ((ec == bj))
540540 then false
541541 else aL("invalid asset")
542542 let eh = if (ed)
543543 then $Tuple2(ee, ef)
544544 else if (eg)
545545 then $Tuple2((ee - eb), ef)
546546 else $Tuple2(ee, (ef - eb))
547547 let ei = eh._1
548548 let ej = eh._2
549549 let ek = if (eg)
550550 then $Tuple2(eb, 0)
551551 else $Tuple2(0, eb)
552552 let el = ek._1
553553 let em = ek._2
554554 let dB = dY(el, aQ)._1
555555 let dC = dY(em, aQ)._1
556556 let en = dY(eb, aQ)
557557 let eo = en._1
558558 let dZ = en._2
559559 let ep = (ei + dB)
560560 let eq = (ej + dC)
561561 let er = bG(D(eq, bl), D(ep, bk))
562562 let es = H(er, b)
563563 let et = if (eg)
564564 then ei
565565 else ej
566566 let eu = toBigInt(et)
567567 let ev = toBigInt(valueOrErrorMessage(assetInfo(bh), (("asset " + toBase58String(bh)) + " doesn't exist")).quantity)
568568 let ew = if ((ev > f))
569569 then true
570570 else aL("initial deposit requires all coins")
571571 if ((ew == ew))
572572 then {
573573 let ex = toBigInt(eo)
574574 let ey = max([0, toInt(((ev * (sqrtBigInt((d + ((ex * d) / eu)), 18, 18, DOWN) - d)) / d))])
575575 let de = if (ed)
576576 then nil
577577 else [IntegerEntry(W(), es), IntegerEntry(X(height, lastBlock.timestamp), es), StringEntry(aa(toString(value(ab)), toBase58String(value(ac))), bp(el, em, ey, es, 0, 0, height, lastBlock.timestamp, 0, 0))]
578578 let ez = bG(D(ej, bl), D(ei, bk))
579579 let eA = H(ez, b)
580580 let eB = {
581581 let eC = if (eg)
582582 then $Tuple2(el, ei)
583583 else $Tuple2(em, ej)
584584 let dT = eC._1
585585 let eD = eC._2
586586 let eE = toInt(fraction(ev, toBigInt((dT / 2)), toBigInt(eD)))
587587 fraction((ey - eE), b, eE)
588588 }
589589 $Tuple5(ey, de, dZ, eB, eg)
590590 }
591591 else throw("Strict value is not equal to itself.")
592592 }
593593
594594
595595 func eF (eG,eo,ec,ab,ac) = {
596596 let ed = (ac == unit)
597597 let bT = aV()
598598 let bU = parseIntValue(bT[t])
599599 let bV = parseIntValue(bT[u])
600600 let eH = [if ((ec == bh))
601601 then true
602602 else aL("invalid lp asset")]
603603 if ((eH == eH))
604604 then {
605605 let eI = if ((eG == bi))
606606 then true
607607 else if ((eG == bj))
608608 then false
609609 else aL("invalid asset")
610610 let eJ = if (eI)
611611 then toBigInt(bE(ba(bi)))
612612 else toBigInt(bE(ba(bj)))
613613 let eK = if (eI)
614614 then bU
615615 else bV
616616 let eL = bE(ba(bi))
617617 let eM = bE(ba(bj))
618618 let eN = if (eI)
619619 then eL
620620 else eM
621621 let eO = toBigInt(eN)
622622 let ev = toBigInt(valueOrErrorMessage(assetInfo(bh), (("asset " + toBase58String(bh)) + " doesn't exist")).quantity)
623623 let eP = toBigInt(eo)
624624 let eQ = max([0, toInt(((eJ * (d - pow((d - ((eP * d) / ev)), 18, h, 0, 18, DOWN))) / d))])
625625 let eR = dY(eQ, aS)
626626 let eS = eR._1
627627 let dZ = eR._2
628628 let eT = if (eI)
629629 then $Tuple4(eS, 0, (eL - eQ), eM)
630630 else $Tuple4(0, eS, eL, (eM - eQ))
631631 let eU = eT._1
632632 let eV = eT._2
633633 let eW = eT._3
634634 let eX = eT._4
635635 let er = bG(D(eX, bl), D(eW, bk))
636636 let es = H(er, b)
637637 let de = if (ed)
638638 then nil
639639 else [StringEntry(ad(toString(value(ab)), toBase58String(value(ac))), bA(eU, eV, eo, es, height, lastBlock.timestamp)), IntegerEntry(W(), es), IntegerEntry(X(height, lastBlock.timestamp), es)]
640640 let ez = bG(D(eM, bl), D(eL, bk))
641641 let eA = H(ez, b)
642642 let eB = {
643643 let eY = (toInt(fraction(eJ, eP, ev)) * 2)
644644 fraction((eS - eY), b, eY)
645645 }
646646 $Tuple5(eS, de, dZ, eB, eI)
647647 }
648648 else throw("Strict value is not equal to itself.")
649649 }
650650
651651
652652 func eZ () = {
653653 let dW = getString(U())
654654 if ($isInstanceOf(dW, "String"))
655655 then {
656656 let fa = dW
657657 fromBase58String(fa)
658658 }
659659 else if ($isInstanceOf(dW, "Unit"))
660660 then unit
661661 else throw("Match error")
662662 }
663663
664664
665665 func fb () = {
666666 let dW = getString(V())
667667 if ($isInstanceOf(dW, "String"))
668668 then {
669669 let fa = dW
670670 fromBase58String(fa)
671671 }
672672 else if ($isInstanceOf(dW, "Unit"))
673673 then unit
674674 else throw("Match error")
675675 }
676676
677677
678678 func fc (dL) = {
679679 let dW = eZ()
680680 if ($isInstanceOf(dW, "ByteVector"))
681681 then {
682682 let fd = dW
683683 (dL.callerPublicKey == fd)
684684 }
685685 else if ($isInstanceOf(dW, "Unit"))
686686 then (dL.caller == this)
687687 else throw("Match error")
688688 }
689689
690690
691691 func fe (dL) = {
692692 let ff = throw("Permission denied")
693693 let dW = eZ()
694694 if ($isInstanceOf(dW, "ByteVector"))
695695 then {
696696 let fd = dW
697697 if ((dL.callerPublicKey == fd))
698698 then true
699699 else ff
700700 }
701701 else if ($isInstanceOf(dW, "Unit"))
702702 then if ((dL.caller == this))
703703 then true
704704 else ff
705705 else throw("Match error")
706706 }
707707
708708
709709 @Callable(dL)
710-func calculateAmountOutForSwapREADONLY (fg,fh,fi) = {
711- let fj = if ((fh == false))
710+func calculateAmountOutForSwapREADONLY (fg,fh) = {
711+ let fi = if ((fh == false))
712712 then {
713- let fk = aH(this, af())
714- let fl = aH(this, ae())
715- $Tuple2(fk, fl)
713+ let fj = aH(this, af())
714+ let fk = aH(this, ae())
715+ $Tuple2(fj, fk)
716716 }
717717 else {
718- let fk = aH(this, ae())
719- let fl = aH(this, af())
720- $Tuple2(fk, fl)
718+ let fj = aH(this, ae())
719+ let fk = aH(this, af())
720+ $Tuple2(fj, fk)
721721 }
722- let fk = fj._1
723- let fl = fj._2
724- let fm = bE(fl)
725- let fn = bE(fk)
726- let fo = fraction(fn, fg, (fm + fg))
727- let fp = (toBigInt(fm) * toBigInt(fn))
728- let fq = (((toBigInt(bE(fl)) + toBigInt(fg)) + toBigInt(fi)) * (toBigInt(bE(fk)) - toBigInt(fo)))
729- let fr = if ((fq >= fp))
722+ let fj = fi._1
723+ let fk = fi._2
724+ let fl = bE(fk)
725+ let fm = bE(fj)
726+ let fn = fraction(fm, fg, (fl + fg))
727+ let fo = (toBigInt(fl) * toBigInt(fm))
728+ let fp = ((toBigInt(bE(fk)) + toBigInt(fg)) * (toBigInt(bE(fj)) - toBigInt(fn)))
729+ let fq = if ((fp >= fo))
730730 then true
731731 else throw("new K is fewer error")
732- if ((fr == fr))
733- then $Tuple2(nil, fo)
732+ if ((fq == fq))
733+ then $Tuple2(nil, fn)
734734 else throw("Strict value is not equal to itself.")
735735 }
736736
737737
738738
739739 @Callable(dL)
740-func calculateAmountOutForSwapAndSendTokens (fg,fh,fs,ft,fi) = {
741- let fu = {
740+func calculateAmountOutForSwapAndSendTokens (fg,fh,fr,fs) = {
741+ let ft = {
742742 let aR = invoke(aO, "getSwapContractREADONLY", nil, nil)
743743 if ($isInstanceOf(aR, "String"))
744744 then aR
745745 else throw(($getType(aR) + " couldn't be cast to String"))
746746 }
747747 let eH = [if ((value(dL.payments[0]).amount >= fg))
748748 then true
749- else aL("Wrong amount"), if ((dL.caller == addressFromStringValue(fu)))
749+ else aL("Wrong amount"), if ((dL.caller == addressFromStringValue(ft)))
750750 then true
751751 else aL("Permission denied")]
752752 if ((eH == eH))
753753 then {
754754 let dM = value(dL.payments[0])
755- let fl = ba(dM.assetId)
756- let fk = if ((fh == false))
755+ let fk = ba(dM.assetId)
756+ let fj = if ((fh == false))
757757 then aH(this, af())
758758 else aH(this, ae())
759- let fm = (bE(fl) - value(dL.payments[0]).amount)
760- let fn = bE(fk)
761- let fo = fraction(fn, fg, (fm + fg))
762- let fp = (toBigInt(fm) * toBigInt(fn))
763- let fq = ((toBigInt(bE(fl)) + toBigInt(fi)) * (toBigInt(bE(fk)) - toBigInt(fo)))
764- let fr = if ((fq >= fp))
759+ let fl = (bE(fk) - value(dL.payments[0]).amount)
760+ let fm = bE(fj)
761+ let fn = fraction(fm, fg, (fl + fg))
762+ let fo = (toBigInt(fl) * toBigInt(fm))
763+ let fp = (toBigInt(bE(fk)) * (toBigInt(bE(fj)) - toBigInt(fn)))
764+ let fq = if ((fp >= fo))
765765 then true
766766 else throw("new K is fewer error")
767- if ((fr == fr))
767+ if ((fq == fq))
768768 then {
769- let fv = if ((fo >= fs))
769+ let fu = if ((fn >= fr))
770770 then true
771771 else throw("Exchange result is fewer coins than expected")
772- if ((fv == fv))
773- then $Tuple2([ScriptTransfer(addressFromStringValue(ft), fo, aY(fk))], fo)
772+ if ((fu == fu))
773+ then $Tuple2([ScriptTransfer(addressFromStringValue(fs), fn, aY(fj))], fn)
774774 else throw("Strict value is not equal to itself.")
775775 }
776776 else throw("Strict value is not equal to itself.")
777777 }
778778 else throw("Strict value is not equal to itself.")
779779 }
780780
781781
782782
783783 @Callable(dL)
784-func setManager (fw) = {
785- let fx = fe(dL)
786- if ((fx == fx))
784+func setManager (fv) = {
785+ let fw = fe(dL)
786+ if ((fw == fw))
787787 then {
788- let fy = fromBase58String(fw)
789- if ((fy == fy))
790- then [StringEntry(V(), fw)]
788+ let fx = fromBase58String(fv)
789+ if ((fx == fx))
790+ then [StringEntry(V(), fv)]
791791 else throw("Strict value is not equal to itself.")
792792 }
793793 else throw("Strict value is not equal to itself.")
794794 }
795795
796796
797797
798798 @Callable(dL)
799799 func confirmManager () = {
800- let fz = fb()
801- let fA = if (isDefined(fz))
800+ let fy = fb()
801+ let fz = if (isDefined(fy))
802802 then true
803803 else throw("No pending manager")
804- if ((fA == fA))
804+ if ((fz == fz))
805805 then {
806- let fB = if ((dL.callerPublicKey == value(fz)))
806+ let fA = if ((dL.callerPublicKey == value(fy)))
807807 then true
808808 else throw("You are not pending manager")
809- if ((fB == fB))
810- then [StringEntry(U(), toBase58String(value(fz))), DeleteEntry(V())]
809+ if ((fA == fA))
810+ then [StringEntry(U(), toBase58String(value(fy))), DeleteEntry(V())]
811811 else throw("Strict value is not equal to itself.")
812812 }
813813 else throw("Strict value is not equal to itself.")
814814 }
815815
816816
817817
818818 @Callable(dL)
819-func put (cz,fC) = if ((0 > cz))
819+func put (cz,fB) = if ((0 > cz))
820820 then throw("Invalid slippageTolerance passed")
821821 else {
822822 let dR = dO(dL, cz, true)
823823 let db = dR._2
824824 let cg = dR._7
825825 let cx = dR._9
826826 let dc = dR._10
827827 let dd = dR._11
828- let fD = dR._12
829- let fE = dR._13
828+ let fC = dR._12
829+ let fD = dR._13
830830 let dP = toBigInt(value(dL.payments[0]).amount)
831831 let dQ = toBigInt(value(dL.payments[1]).amount)
832832 let ds = dl(dP, dQ, toBigInt(0))
833833 if ((ds == ds))
834834 then {
835835 let dU = invoke(aO, "emit", [db], nil)
836836 if ((dU == dU))
837837 then {
838838 let dV = {
839839 let dW = dU
840840 if ($isInstanceOf(dW, "Address"))
841841 then {
842842 let dX = dW
843843 invoke(dX, "emit", [db], nil)
844844 }
845845 else unit
846846 }
847847 if ((dV == dV))
848848 then {
849- let fF = if ((dc > 0))
850- then invoke(bo, "put", nil, [AttachedPayment(fD, dc)])
849+ let fE = if ((dc > 0))
850+ then invoke(bo, "put", nil, [AttachedPayment(fC, dc)])
851851 else nil
852- if ((fF == fF))
852+ if ((fE == fE))
853853 then {
854- let fG = if ((dd > 0))
855- then invoke(bo, "put", nil, [AttachedPayment(fE, dd)])
854+ let fF = if ((dd > 0))
855+ then invoke(bo, "put", nil, [AttachedPayment(fD, dd)])
856856 else nil
857- if ((fG == fG))
857+ if ((fF == fF))
858858 then {
859- let fH = if (fC)
859+ let fG = if (fB)
860860 then {
861- let fI = invoke(bn, "stake", nil, [AttachedPayment(cg, db)])
862- if ((fI == fI))
861+ let fH = invoke(bn, "stake", nil, [AttachedPayment(cg, db)])
862+ if ((fH == fH))
863863 then nil
864864 else throw("Strict value is not equal to itself.")
865865 }
866866 else [ScriptTransfer(dL.caller, db, cg)]
867- let fJ = dt(0, 0, 0)
868- if ((fJ == fJ))
867+ let fI = dt(0, 0, 0)
868+ if ((fI == fI))
869869 then {
870- let dk = fJ._2
871- let fK = fJ._1
872- let fL = dx(ds, dk)
873- if ((fL == fL))
874- then ((cx ++ fH) ++ fK)
870+ let dk = fI._2
871+ let fJ = fI._1
872+ let fK = dx(ds, dk)
873+ if ((fK == fK))
874+ then ((cx ++ fG) ++ fJ)
875875 else throw("Strict value is not equal to itself.")
876876 }
877877 else throw("Strict value is not equal to itself.")
878878 }
879879 else throw("Strict value is not equal to itself.")
880880 }
881881 else throw("Strict value is not equal to itself.")
882882 }
883883 else throw("Strict value is not equal to itself.")
884884 }
885885 else throw("Strict value is not equal to itself.")
886886 }
887887 else throw("Strict value is not equal to itself.")
888888 }
889889
890890
891891
892892 @Callable(dL)
893-func putForFree (fM) = if ((0 > fM))
893+func putForFree (fL) = if ((0 > fL))
894894 then throw("Invalid value passed")
895895 else {
896- let dR = dO(dL, fM, false)
896+ let dR = dO(dL, fL, false)
897897 let cx = dR._9
898898 let dP = toBigInt(value(dL.payments[0]).amount)
899899 let dQ = toBigInt(value(dL.payments[1]).amount)
900900 let ds = dl(dP, dQ, toBigInt(0))
901901 if ((ds == ds))
902902 then {
903- let fN = dt(0, 0, 0)
904- let fK = fN._1
905- let dk = fN._2
906- let fL = dx(ds, dk)
907- if ((fL == fL))
908- then (cx ++ fK)
903+ let fM = dt(0, 0, 0)
904+ let fJ = fM._1
905+ let dk = fM._2
906+ let fK = dx(ds, dk)
907+ if ((fK == fK))
908+ then (cx ++ fJ)
909909 else throw("Strict value is not equal to itself.")
910910 }
911911 else throw("Strict value is not equal to itself.")
912912 }
913913
914914
915915
916916 @Callable(dL)
917-func putOneTkn (fO,fP) = {
918- let fQ = {
917+func putOneTkn (fN,fO) = {
918+ let fP = {
919919 let aR = invoke(aO, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
920920 if ($isInstanceOf(aR, "Boolean"))
921921 then aR
922922 else throw(($getType(aR) + " couldn't be cast to Boolean"))
923923 }
924- let fR = if (if (if (aT())
924+ let fQ = if (if (if (aT())
925925 then true
926926 else (bg == l))
927927 then true
928928 else (bg == n))
929929 then true
930- else fQ
931- let eH = [if (if (!(fR))
930+ else fP
931+ let eH = [if (if (!(fQ))
932932 then true
933933 else fc(dL))
934934 then true
935935 else aL("put operation is blocked by admin"), if ((size(dL.payments) == 1))
936936 then true
937937 else aL("exactly 1 payment are expected")]
938938 if ((eH == eH))
939939 then {
940- let fS = dL.payments[0]
941- let ec = fS.assetId
942- let eb = fS.amount
940+ let fR = dL.payments[0]
941+ let ec = fR.assetId
942+ let eb = fR.amount
943943 let ds = if ((ec == bi))
944944 then dl(toBigInt(eb), toBigInt(0), toBigInt(0))
945945 else if ((ec == bj))
946946 then dl(toBigInt(0), toBigInt(eb), toBigInt(0))
947947 else aL("payment asset is not supported")
948948 if ((ds == ds))
949949 then {
950950 let ab = dL.caller
951951 let ac = dL.transactionId
952- let fT = ea(eb, ec, ab, ac)
953- if ((fT == fT))
952+ let fS = ea(eb, ec, ab, ac)
953+ if ((fS == fS))
954954 then {
955- let eg = fT._5
956- let fU = fT._4
957- let dZ = fT._3
958- let de = fT._2
959- let fV = fT._1
960- let fW = if (if ((fO > 0))
961- then (fO > fV)
955+ let eg = fS._5
956+ let fT = fS._4
957+ let dZ = fS._3
958+ let de = fS._2
959+ let fU = fS._1
960+ let fV = if (if ((fN > 0))
961+ then (fN > fU)
962962 else false)
963- then aL(makeString(["amount to receive is less than ", toString(fO)], ""))
964- else fV
965- let dU = dS(fW)
963+ then aL(makeString(["amount to receive is less than ", toString(fN)], ""))
964+ else fU
965+ let dU = dS(fV)
966966 if ((dU == dU))
967967 then {
968- let fH = if (fP)
968+ let fG = if (fO)
969969 then {
970- let fX = invoke(bn, "stake", nil, [AttachedPayment(bh, fW)])
971- if ((fX == fX))
970+ let fW = invoke(bn, "stake", nil, [AttachedPayment(bh, fV)])
971+ if ((fW == fW))
972972 then nil
973973 else throw("Strict value is not equal to itself.")
974974 }
975- else [ScriptTransfer(dL.caller, fW, bh)]
976- let fY = if ((dZ > 0))
975+ else [ScriptTransfer(dL.caller, fV, bh)]
976+ let fX = if ((dZ > 0))
977977 then [ScriptTransfer(aP, dZ, ec)]
978978 else nil
979- let fZ = if ((this == aP))
979+ let fY = if ((this == aP))
980980 then $Tuple2(0, 0)
981981 else if (eg)
982982 then $Tuple2(-(dZ), 0)
983983 else $Tuple2(0, -(dZ))
984- let du = fZ._1
985- let dv = fZ._2
986- let ga = dt(du, dv, 0)
987- let fK = ga._1
988- let dk = ga._2
984+ let du = fY._1
985+ let dv = fY._2
986+ let fZ = dt(du, dv, 0)
987+ let fJ = fZ._1
988+ let dk = fZ._2
989989 let dE = value(getString(aj))
990- let fL = dx(ds, dk)
991- if ((fL == fL))
992- then $Tuple2((((de ++ fH) ++ fY) ++ fK), fW)
990+ let fK = dx(ds, dk)
991+ if ((fK == fK))
992+ then $Tuple2((((de ++ fG) ++ fX) ++ fJ), fV)
993993 else throw("Strict value is not equal to itself.")
994994 }
995995 else throw("Strict value is not equal to itself.")
996996 }
997997 else throw("Strict value is not equal to itself.")
998998 }
999999 else throw("Strict value is not equal to itself.")
10001000 }
10011001 else throw("Strict value is not equal to itself.")
10021002 }
10031003
10041004
10051005
10061006 @Callable(dL)
10071007 func putOneTknREADONLY (ec,eb) = {
1008- let gb = ea(eb, aY(ec), unit, unit)
1009- let fV = gb._1
1010- let de = gb._2
1011- let dZ = gb._3
1012- let fU = gb._4
1013- let eg = gb._5
1014- $Tuple2(nil, $Tuple3(fV, dZ, fU))
1008+ let ga = ea(eb, aY(ec), unit, unit)
1009+ let fU = ga._1
1010+ let de = ga._2
1011+ let dZ = ga._3
1012+ let fT = ga._4
1013+ let eg = ga._5
1014+ $Tuple2(nil, $Tuple3(fU, dZ, fT))
10151015 }
10161016
10171017
10181018
10191019 @Callable(dL)
1020-func getOneTkn (gc,fO) = {
1021- let fQ = {
1020+func getOneTkn (gb,fN) = {
1021+ let fP = {
10221022 let aR = invoke(aO, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
10231023 if ($isInstanceOf(aR, "Boolean"))
10241024 then aR
10251025 else throw(($getType(aR) + " couldn't be cast to Boolean"))
10261026 }
1027- let gd = if (if (aT())
1027+ let gc = if (if (aT())
10281028 then true
10291029 else (bg == n))
10301030 then true
1031- else fQ
1032- let eH = [if (if (!(gd))
1031+ else fP
1032+ let eH = [if (if (!(gc))
10331033 then true
10341034 else fc(dL))
10351035 then true
10361036 else aL("get operation is blocked by admin"), if ((size(dL.payments) == 1))
10371037 then true
10381038 else aL("exactly 1 payment are expected")]
10391039 if ((eH == eH))
10401040 then {
1041- let eG = aY(gc)
1042- let fS = dL.payments[0]
1043- let ec = fS.assetId
1044- let eo = fS.amount
1041+ let eG = aY(gb)
1042+ let fR = dL.payments[0]
1043+ let ec = fR.assetId
1044+ let eo = fR.amount
10451045 let ds = dl(toBigInt(0), toBigInt(0), toBigInt(0))
10461046 if ((ds == ds))
10471047 then {
10481048 let ab = dL.caller
10491049 let ac = dL.transactionId
1050- let ge = eF(eG, eo, ec, ab, ac)
1051- if ((ge == ge))
1050+ let gd = eF(eG, eo, ec, ab, ac)
1051+ if ((gd == gd))
10521052 then {
1053- let eI = ge._5
1054- let fU = ge._4
1055- let dZ = ge._3
1056- let de = ge._2
1057- let gf = ge._1
1058- let dT = if (if ((fO > 0))
1059- then (fO > gf)
1053+ let eI = gd._5
1054+ let fT = gd._4
1055+ let dZ = gd._3
1056+ let de = gd._2
1057+ let ge = gd._1
1058+ let dT = if (if ((fN > 0))
1059+ then (fN > ge)
10601060 else false)
1061- then aL(makeString(["amount to receive is less than ", toString(fO)], ""))
1062- else gf
1063- let gg = invoke(aO, "burn", [eo], [AttachedPayment(ec, eo)])
1064- if ((gg == gg))
1061+ then aL(makeString(["amount to receive is less than ", toString(fN)], ""))
1062+ else ge
1063+ let gf = invoke(aO, "burn", [eo], [AttachedPayment(ec, eo)])
1064+ if ((gf == gf))
10651065 then {
1066- let gh = [ScriptTransfer(ab, dT, eG)]
1067- let fY = if ((dZ > 0))
1066+ let gg = [ScriptTransfer(ab, dT, eG)]
1067+ let fX = if ((dZ > 0))
10681068 then [ScriptTransfer(aP, dZ, eG)]
10691069 else nil
1070- let gi = {
1071- let gj = if ((this == aP))
1070+ let gh = {
1071+ let gi = if ((this == aP))
10721072 then 0
10731073 else dZ
10741074 if (eI)
1075- then $Tuple2(-((dT + gj)), 0)
1076- else $Tuple2(0, -((dT + gj)))
1075+ then $Tuple2(-((dT + gi)), 0)
1076+ else $Tuple2(0, -((dT + gi)))
10771077 }
1078- let du = gi._1
1079- let dv = gi._2
1080- let gk = dt(du, dv, 0)
1081- let fK = gk._1
1082- let dk = gk._2
1083- let fL = dx(ds, dk)
1084- if ((fL == fL))
1085- then $Tuple2((((de ++ gh) ++ fY) ++ fK), dT)
1078+ let du = gh._1
1079+ let dv = gh._2
1080+ let gj = dt(du, dv, 0)
1081+ let fJ = gj._1
1082+ let dk = gj._2
1083+ let fK = dx(ds, dk)
1084+ if ((fK == fK))
1085+ then $Tuple2((((de ++ gg) ++ fX) ++ fJ), dT)
10861086 else throw("Strict value is not equal to itself.")
10871087 }
10881088 else throw("Strict value is not equal to itself.")
10891089 }
10901090 else throw("Strict value is not equal to itself.")
10911091 }
10921092 else throw("Strict value is not equal to itself.")
10931093 }
10941094 else throw("Strict value is not equal to itself.")
10951095 }
10961096
10971097
10981098
10991099 @Callable(dL)
11001100 func getOneTknREADONLY (eG,eo) = {
1101- let gl = eF(aY(eG), eo, bh, unit, unit)
1102- let gf = gl._1
1103- let de = gl._2
1104- let dZ = gl._3
1105- let fU = gl._4
1106- let eI = gl._5
1107- $Tuple2(nil, $Tuple3(gf, dZ, fU))
1101+ let gk = eF(aY(eG), eo, bh, unit, unit)
1102+ let ge = gk._1
1103+ let de = gk._2
1104+ let dZ = gk._3
1105+ let fT = gk._4
1106+ let eI = gk._5
1107+ $Tuple2(nil, $Tuple3(ge, dZ, fT))
11081108 }
11091109
11101110
11111111
11121112 @Callable(dL)
1113-func unstakeAndGetOneTkn (gm,gc,fO) = {
1114- let fQ = {
1113+func unstakeAndGetOneTkn (gl,gb,fN) = {
1114+ let fP = {
11151115 let aR = invoke(aO, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
11161116 if ($isInstanceOf(aR, "Boolean"))
11171117 then aR
11181118 else throw(($getType(aR) + " couldn't be cast to Boolean"))
11191119 }
1120- let gd = if (if (aT())
1120+ let gc = if (if (aT())
11211121 then true
11221122 else (bg == n))
11231123 then true
1124- else fQ
1125- let eH = [if (if (!(gd))
1124+ else fP
1125+ let eH = [if (if (!(gc))
11261126 then true
11271127 else fc(dL))
11281128 then true
11291129 else aL("get operation is blocked by admin"), if ((size(dL.payments) == 0))
11301130 then true
11311131 else aL("no payments are expected")]
11321132 if ((eH == eH))
11331133 then {
1134- let eG = aY(gc)
1134+ let eG = aY(gb)
11351135 let ab = dL.caller
11361136 let ac = dL.transactionId
11371137 let ds = dl(toBigInt(0), toBigInt(0), toBigInt(0))
11381138 if ((ds == ds))
11391139 then {
1140- let gn = invoke(bn, "unstake", [toBase58String(bh), gm], nil)
1141- if ((gn == gn))
1140+ let gm = invoke(bn, "unstake", [toBase58String(bh), gl], nil)
1141+ if ((gm == gm))
11421142 then {
1143- let go = eF(eG, gm, bh, ab, ac)
1144- if ((go == go))
1143+ let gn = eF(eG, gl, bh, ab, ac)
1144+ if ((gn == gn))
11451145 then {
1146- let eI = go._5
1147- let fU = go._4
1148- let dZ = go._3
1149- let de = go._2
1150- let gf = go._1
1151- let dT = if (if ((fO > 0))
1152- then (fO > gf)
1146+ let eI = gn._5
1147+ let fT = gn._4
1148+ let dZ = gn._3
1149+ let de = gn._2
1150+ let ge = gn._1
1151+ let dT = if (if ((fN > 0))
1152+ then (fN > ge)
11531153 else false)
1154- then aL(makeString(["amount to receive is less than ", toString(fO)], ""))
1155- else gf
1156- let gg = invoke(aO, "burn", [gm], [AttachedPayment(bh, gm)])
1157- if ((gg == gg))
1154+ then aL(makeString(["amount to receive is less than ", toString(fN)], ""))
1155+ else ge
1156+ let gf = invoke(aO, "burn", [gl], [AttachedPayment(bh, gl)])
1157+ if ((gf == gf))
11581158 then {
1159- let gh = [ScriptTransfer(dL.caller, dT, eG)]
1160- let fY = if ((dZ > 0))
1159+ let gg = [ScriptTransfer(dL.caller, dT, eG)]
1160+ let fX = if ((dZ > 0))
11611161 then [ScriptTransfer(aP, dZ, eG)]
11621162 else nil
1163- let gp = {
1164- let gj = if ((this == aP))
1163+ let go = {
1164+ let gi = if ((this == aP))
11651165 then 0
11661166 else dZ
11671167 if (eI)
1168- then $Tuple2(-((dT + gj)), 0)
1169- else $Tuple2(0, -((dT + gj)))
1168+ then $Tuple2(-((dT + gi)), 0)
1169+ else $Tuple2(0, -((dT + gi)))
11701170 }
1171- let du = gp._1
1172- let dv = gp._2
1173- let gq = dt(du, dv, 0)
1174- let fK = gq._1
1175- let dk = gq._2
1176- let fL = dx(ds, dk)
1177- if ((fL == fL))
1178- then $Tuple2((((de ++ gh) ++ fY) ++ fK), dT)
1171+ let du = go._1
1172+ let dv = go._2
1173+ let gp = dt(du, dv, 0)
1174+ let fJ = gp._1
1175+ let dk = gp._2
1176+ let fK = dx(ds, dk)
1177+ if ((fK == fK))
1178+ then $Tuple2((((de ++ gg) ++ fX) ++ fJ), dT)
11791179 else throw("Strict value is not equal to itself.")
11801180 }
11811181 else throw("Strict value is not equal to itself.")
11821182 }
11831183 else throw("Strict value is not equal to itself.")
11841184 }
11851185 else throw("Strict value is not equal to itself.")
11861186 }
11871187 else throw("Strict value is not equal to itself.")
11881188 }
11891189 else throw("Strict value is not equal to itself.")
11901190 }
11911191
11921192
11931193
11941194 @Callable(dL)
11951195 func get () = {
11961196 let cP = dK(dL)
1197- let gr = cP._1
1197+ let gq = cP._1
11981198 let cw = cP._2
11991199 let dN = cP._3
12001200 let ce = cP._4
12011201 let cx = cP._5
12021202 let ds = dl(toBigInt(0), toBigInt(0), toBigInt(0))
12031203 if ((ds == ds))
12041204 then {
1205- let gs = invoke(aO, "burn", [dN], [AttachedPayment(ce, dN)])
1206- if ((gs == gs))
1205+ let gr = invoke(aO, "burn", [dN], [AttachedPayment(ce, dN)])
1206+ if ((gr == gr))
12071207 then {
1208- let gt = dt(-(gr), -(cw), 0)
1209- let fK = gt._1
1210- let dk = gt._2
1211- let fL = dx(ds, dk)
1212- if ((fL == fL))
1213- then (cx ++ fK)
1208+ let gs = dt(-(gq), -(cw), 0)
1209+ let fJ = gs._1
1210+ let dk = gs._2
1211+ let fK = dx(ds, dk)
1212+ if ((fK == fK))
1213+ then (cx ++ fJ)
12141214 else throw("Strict value is not equal to itself.")
12151215 }
12161216 else throw("Strict value is not equal to itself.")
12171217 }
12181218 else throw("Strict value is not equal to itself.")
12191219 }
12201220
12211221
12221222
12231223 @Callable(dL)
1224-func getNoLess (gu,gv) = {
1224+func getNoLess (gt,gu) = {
12251225 let cP = dK(dL)
12261226 let cv = cP._1
12271227 let cw = cP._2
12281228 let dN = cP._3
12291229 let ce = cP._4
12301230 let cx = cP._5
1231- if ((gu > cv))
1232- then throw(((("noLessThenAmtAsset failed: " + toString(cv)) + " < ") + toString(gu)))
1233- else if ((gv > cw))
1234- then throw(((("noLessThenPriceAsset failed: " + toString(cw)) + " < ") + toString(gv)))
1231+ if ((gt > cv))
1232+ then throw(((("noLessThenAmtAsset failed: " + toString(cv)) + " < ") + toString(gt)))
1233+ else if ((gu > cw))
1234+ then throw(((("noLessThenPriceAsset failed: " + toString(cw)) + " < ") + toString(gu)))
12351235 else {
12361236 let ds = dl(toBigInt(0), toBigInt(0), toBigInt(0))
12371237 if ((ds == ds))
12381238 then {
1239- let gs = invoke(aO, "burn", [dN], [AttachedPayment(ce, dN)])
1240- if ((gs == gs))
1239+ let gr = invoke(aO, "burn", [dN], [AttachedPayment(ce, dN)])
1240+ if ((gr == gr))
12411241 then {
1242- let gw = dt(-(cv), -(cw), 0)
1243- let fK = gw._1
1244- let dk = gw._2
1245- let fL = dx(ds, dk)
1246- if ((fL == fL))
1247- then (cx ++ fK)
1242+ let gv = dt(-(cv), -(cw), 0)
1243+ let fJ = gv._1
1244+ let dk = gv._2
1245+ let fK = dx(ds, dk)
1246+ if ((fK == fK))
1247+ then (cx ++ fJ)
12481248 else throw("Strict value is not equal to itself.")
12491249 }
12501250 else throw("Strict value is not equal to itself.")
12511251 }
12521252 else throw("Strict value is not equal to itself.")
12531253 }
12541254 }
12551255
12561256
12571257
12581258 @Callable(dL)
12591259 func unstakeAndGet (dT) = {
1260- let gx = if ((size(dL.payments) != 0))
1260+ let gw = if ((size(dL.payments) != 0))
12611261 then throw("No payments are expected")
12621262 else true
1263- if ((gx == gx))
1263+ if ((gw == gw))
12641264 then {
12651265 let bT = aV()
12661266 let cg = fromBase58String(bT[q])
12671267 let ds = dl(toBigInt(0), toBigInt(0), toBigInt(0))
12681268 if ((ds == ds))
12691269 then {
1270- let gn = invoke(bn, "unstake", [toBase58String(cg), dT], nil)
1271- if ((gn == gn))
1270+ let gm = invoke(bn, "unstake", [toBase58String(cg), dT], nil)
1271+ if ((gm == gm))
12721272 then {
12731273 let cP = cc(toBase58String(dL.transactionId), toBase58String(cg), dT, dL.caller)
12741274 let cv = cP._1
12751275 let cw = cP._2
12761276 let cj = parseIntValue(cP._9)
12771277 let cx = cP._10
1278- let gy = if (if (aT())
1278+ let gx = if (if (aT())
12791279 then true
12801280 else (cj == n))
12811281 then throw(("Get operation is blocked by admin. Status = " + toString(cj)))
12821282 else true
1283- if ((gy == gy))
1283+ if ((gx == gx))
12841284 then {
1285- let gs = invoke(aO, "burn", [dT], [AttachedPayment(cg, dT)])
1286- if ((gs == gs))
1285+ let gr = invoke(aO, "burn", [dT], [AttachedPayment(cg, dT)])
1286+ if ((gr == gr))
12871287 then {
1288- let gz = dt(-(cv), -(cw), 0)
1289- let fK = gz._1
1290- let dk = gz._2
1291- let fL = dx(ds, dk)
1292- if ((fL == fL))
1293- then (cx ++ fK)
1288+ let gy = dt(-(cv), -(cw), 0)
1289+ let fJ = gy._1
1290+ let dk = gy._2
1291+ let fK = dx(ds, dk)
1292+ if ((fK == fK))
1293+ then (cx ++ fJ)
12941294 else throw("Strict value is not equal to itself.")
12951295 }
12961296 else throw("Strict value is not equal to itself.")
12971297 }
12981298 else throw("Strict value is not equal to itself.")
12991299 }
13001300 else throw("Strict value is not equal to itself.")
13011301 }
13021302 else throw("Strict value is not equal to itself.")
13031303 }
13041304 else throw("Strict value is not equal to itself.")
13051305 }
13061306
13071307
13081308
13091309 @Callable(dL)
1310-func unstakeAndGetNoLess (gm,gA,gv) = {
1311- let gd = if (aT())
1310+func unstakeAndGetNoLess (gl,gz,gu) = {
1311+ let gc = if (aT())
13121312 then true
13131313 else (bg == n)
1314- let eH = [if (!(gd))
1314+ let eH = [if (!(gc))
13151315 then true
13161316 else throw("get operation is blocked by admin"), if ((size(dL.payments) == 0))
13171317 then true
13181318 else throw("no payments are expected")]
13191319 if ((eH == eH))
13201320 then {
13211321 let ds = dl(toBigInt(0), toBigInt(0), toBigInt(0))
13221322 if ((ds == ds))
13231323 then {
1324- let gn = invoke(bn, "unstake", [toBase58String(bh), gm], nil)
1325- if ((gn == gn))
1324+ let gm = invoke(bn, "unstake", [toBase58String(bh), gl], nil)
1325+ if ((gm == gm))
13261326 then {
1327- let cP = cc(toBase58String(dL.transactionId), toBase58String(bh), gm, dL.caller)
1327+ let cP = cc(toBase58String(dL.transactionId), toBase58String(bh), gl, dL.caller)
13281328 let cv = cP._1
13291329 let cw = cP._2
13301330 let cx = cP._10
1331- let gB = [if ((cv >= gA))
1331+ let gA = [if ((cv >= gz))
13321332 then true
1333- else throw(makeString(["amount asset amount to receive is less than ", toString(gA)], "")), if ((cw >= gv))
1333+ else throw(makeString(["amount asset amount to receive is less than ", toString(gz)], "")), if ((cw >= gu))
13341334 then true
1335- else throw(makeString(["price asset amount to receive is less than ", toString(gv)], ""))]
1336- if ((gB == gB))
1335+ else throw(makeString(["price asset amount to receive is less than ", toString(gu)], ""))]
1336+ if ((gA == gA))
13371337 then {
1338- let gs = invoke(aO, "burn", [gm], [AttachedPayment(bh, gm)])
1339- if ((gs == gs))
1338+ let gr = invoke(aO, "burn", [gl], [AttachedPayment(bh, gl)])
1339+ if ((gr == gr))
13401340 then {
1341- let gC = dt(-(cv), -(cw), 0)
1342- let fK = gC._1
1343- let dk = gC._2
1344- let fL = dx(ds, dk)
1345- if ((fL == fL))
1346- then (cx ++ fK)
1341+ let gB = dt(-(cv), -(cw), 0)
1342+ let fJ = gB._1
1343+ let dk = gB._2
1344+ let fK = dx(ds, dk)
1345+ if ((fK == fK))
1346+ then (cx ++ fJ)
13471347 else throw("Strict value is not equal to itself.")
13481348 }
13491349 else throw("Strict value is not equal to itself.")
13501350 }
13511351 else throw("Strict value is not equal to itself.")
13521352 }
13531353 else throw("Strict value is not equal to itself.")
13541354 }
13551355 else throw("Strict value is not equal to itself.")
13561356 }
13571357 else throw("Strict value is not equal to itself.")
13581358 }
13591359
13601360
13611361
13621362 @Callable(dL)
1363-func activate (gD,gE) = if ((toString(dL.caller) != toString(aO)))
1363+func activate (gC,gD) = if ((toString(dL.caller) != toString(aO)))
13641364 then throw("permissions denied")
1365- else $Tuple2([StringEntry(ae(), gD), StringEntry(af(), gE)], "success")
1365+ else $Tuple2([StringEntry(ae(), gC), StringEntry(af(), gD)], "success")
13661366
13671367
13681368
13691369 @Callable(dL)
13701370 func refreshKLp () = {
1371- let gF = valueOrElse(getInteger(ak), 0)
1372- let gG = if (((height - gF) >= an))
1371+ let gE = valueOrElse(getInteger(ak), 0)
1372+ let gF = if (((height - gE) >= an))
13731373 then unit
13741374 else aL(makeString([toString(an), " blocks have not passed since the previous call"], ""))
1375- if ((gG == gG))
1375+ if ((gF == gF))
13761376 then {
13771377 let dE = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, aj), "0")), aN("invalid kLp"))
1378- let gH = dt(0, 0, 0)
1379- let gI = gH._1
1380- let dk = gH._2
1378+ let gG = dt(0, 0, 0)
1379+ let gH = gG._1
1380+ let dk = gG._2
13811381 let dw = if ((dE != dk))
1382- then gI
1382+ then gH
13831383 else aL("nothing to refresh")
13841384 $Tuple2(dw, toString(dk))
13851385 }
13861386 else throw("Strict value is not equal to itself.")
13871387 }
13881388
13891389
13901390
13911391 @Callable(dL)
13921392 func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aV())
13931393
13941394
13951395
13961396 @Callable(dL)
13971397 func getAccBalanceWrapperREADONLY (bF) = $Tuple2(nil, bE(bF))
13981398
13991399
14001400
14011401 @Callable(dL)
14021402 func calcPricesWrapperREADONLY (bN,bO,bS) = {
14031403 let cb = bR(bN, bO, bS)
14041404 $Tuple2(nil, [toString(cb[0]), toString(cb[1]), toString(cb[2])])
14051405 }
14061406
14071407
14081408
14091409 @Callable(dL)
14101410 func toX18WrapperREADONLY (E,F) = $Tuple2(nil, toString(D(E, F)))
14111411
14121412
14131413
14141414 @Callable(dL)
14151415 func fromX18WrapperREADONLY (I,J) = $Tuple2(nil, H(parseBigIntValue(I), J))
14161416
14171417
14181418
14191419 @Callable(dL)
14201420 func calcPriceBigIntWrapperREADONLY (bH,bI) = $Tuple2(nil, toString(bG(parseBigIntValue(bH), parseBigIntValue(bI))))
14211421
14221422
14231423
14241424 @Callable(dL)
14251425 func estimatePutOperationWrapperREADONLY (cd,cz,cA,cB,cC,cD,ab,cE,cF) = $Tuple2(nil, cy(cd, cz, cA, cB, cC, cD, ab, cE, cF))
14261426
14271427
14281428
14291429 @Callable(dL)
14301430 func estimateGetOperationWrapperREADONLY (cd,ce,cf,ab) = {
14311431 let cP = cc(cd, ce, cf, addressFromStringValue(ab))
14321432 $Tuple2(nil, $Tuple10(cP._1, cP._2, cP._3, cP._4, cP._5, cP._6, cP._7, toString(cP._8), cP._9, cP._10))
14331433 }
14341434
14351435
14361436
14371437 @Callable(dL)
14381438 func statsREADONLY () = {
14391439 let bT = aV()
14401440 let cg = fromBase58String(bT[q])
1441- let gJ = bT[r]
1442- let gK = bT[s]
1441+ let gI = bT[r]
1442+ let gJ = bT[s]
14431443 let cI = bT[v]
14441444 let cJ = bT[w]
14451445 let bU = parseIntValue(bT[t])
14461446 let bV = parseIntValue(bT[u])
1447- let gL = valueOrErrorMessage(assetInfo(cg), (("Asset " + toBase58String(cg)) + " doesn't exist")).quantity
1447+ let gK = valueOrErrorMessage(assetInfo(cg), (("Asset " + toBase58String(cg)) + " doesn't exist")).quantity
1448+ let gL = bE(gI)
14481449 let gM = bE(gJ)
1449- let gN = bE(gK)
1450- let gO = if ((gL == 0))
1450+ let gN = if ((gK == 0))
14511451 then [e, e, e]
1452- else bR(gM, gN, gL)
1452+ else bR(gL, gM, gK)
14531453 let cq = 0
1454- let gP = H(gO[1], b)
1455- let gQ = H(gO[2], b)
1456- let gR = value(getInteger(aO, ay(toString(this))))
1457- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(gM), toString(gN), toString(gL), toString(cq), toString(gP), toString(gQ), toString(gR)], j))
1454+ let gO = H(gN[1], b)
1455+ let gP = H(gN[2], b)
1456+ let gQ = value(getInteger(aO, ay(toString(this))))
1457+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(gL), toString(gM), toString(gK), toString(cq), toString(gO), toString(gP), toString(gQ)], j))
14581458 }
14591459
14601460
14611461
14621462 @Callable(dL)
14631463 func evaluatePutByAmountAssetREADONLY (cA) = {
14641464 let bT = aV()
14651465 let cg = fromBase58String(bT[q])
14661466 let cG = bT[r]
14671467 let ch = fromBase58String(cG)
14681468 let cH = bT[s]
14691469 let ci = fromBase58String(cH)
14701470 let bU = parseIntValue(bT[t])
14711471 let bV = parseIntValue(bT[u])
14721472 let cj = bT[p]
1473- let gL = valueOrErrorMessage(assetInfo(cg), (("Asset " + toBase58String(cg)) + " doesn't exist")).quantity
1474- let gM = bE(cG)
1475- let gN = bE(cH)
1476- let bP = D(gM, bU)
1477- let bQ = D(gN, bV)
1478- let cp = if ((gL == 0))
1473+ let gK = valueOrErrorMessage(assetInfo(cg), (("Asset " + toBase58String(cg)) + " doesn't exist")).quantity
1474+ let gL = bE(cG)
1475+ let gM = bE(cH)
1476+ let bP = D(gL, bU)
1477+ let bQ = D(gM, bV)
1478+ let cp = if ((gK == 0))
14791479 then e
14801480 else bG(bQ, bP)
14811481 let cM = D(cA, bU)
14821482 let cN = fraction(cM, cp, d)
14831483 let cC = H(cN, bV)
14841484 let dR = cy("", 500000, cA, ch, cC, ci, "", true, false)
14851485 let cX = dR._1
1486- let gS = dR._3
1486+ let gR = dR._3
14871487 let cl = dR._4
14881488 let cn = dR._5
14891489 let ck = dR._6
14901490 $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cX), toString(H(cp, b)), toString(cl), toString(cn), toString(ck), cj, toString(cA), toString(cC)], j))
14911491 }
14921492
14931493
14941494
14951495 @Callable(dL)
14961496 func evaluatePutByPriceAssetREADONLY (cC) = {
14971497 let bT = aV()
14981498 let cg = fromBase58String(bT[q])
14991499 let cG = bT[r]
15001500 let ch = fromBase58String(cG)
15011501 let cH = bT[s]
15021502 let ci = fromBase58String(cH)
15031503 let bU = parseIntValue(bT[t])
15041504 let bV = parseIntValue(bT[u])
15051505 let cj = bT[p]
1506- let gL = valueOrErrorMessage(assetInfo(cg), (("Asset " + toBase58String(cg)) + " doesn't exist")).quantity
1507- let gT = bE(cG)
1508- let gU = bE(cH)
1509- let gV = D(gT, bU)
1510- let gW = D(gU, bV)
1511- let cp = if ((gL == 0))
1506+ let gK = valueOrErrorMessage(assetInfo(cg), (("Asset " + toBase58String(cg)) + " doesn't exist")).quantity
1507+ let gS = bE(cG)
1508+ let gT = bE(cH)
1509+ let gU = D(gS, bU)
1510+ let gV = D(gT, bV)
1511+ let cp = if ((gK == 0))
15121512 then e
1513- else bG(gW, gV)
1513+ else bG(gV, gU)
15141514 let cN = D(cC, bV)
15151515 let cM = fraction(cN, d, cp)
15161516 let cA = H(cM, bU)
15171517 let dR = cy("", 500000, cA, ch, cC, ci, "", true, false)
15181518 let cX = dR._1
1519- let gS = dR._3
1519+ let gR = dR._3
15201520 let cl = dR._4
15211521 let cn = dR._5
15221522 let ck = dR._6
15231523 $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cX), toString(H(cp, b)), toString(cl), toString(cn), toString(ck), cj, toString(cA), toString(cC)], j))
15241524 }
15251525
15261526
15271527
15281528 @Callable(dL)
1529-func evaluateGetREADONLY (gX,gY) = {
1530- let cP = cc("", gX, gY, this)
1529+func evaluateGetREADONLY (gW,gX) = {
1530+ let cP = cc("", gW, gX, this)
15311531 let cv = cP._1
15321532 let cw = cP._2
15331533 let cl = cP._5
15341534 let cn = cP._6
15351535 let ck = cP._7
15361536 let cq = cP._8
15371537 let cj = parseIntValue(cP._9)
15381538 $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(cv), toString(cw), toString(cl), toString(cn), toString(ck), toString(cq), toString(cj)], j))
15391539 }
15401540
15411541
1542-@Verifier(gZ)
1543-func ha () = {
1544- let hb = {
1542+@Verifier(gY)
1543+func gZ () = {
1544+ let ha = {
15451545 let dW = eZ()
15461546 if ($isInstanceOf(dW, "ByteVector"))
15471547 then {
15481548 let fd = dW
15491549 fd
15501550 }
15511551 else if ($isInstanceOf(dW, "Unit"))
1552- then gZ.senderPublicKey
1552+ then gY.senderPublicKey
15531553 else throw("Match error")
15541554 }
1555- let dW = gZ
1555+ let dW = gY
15561556 if ($isInstanceOf(dW, "Order"))
15571557 then {
15581558 let dA = dW
1559- let hc = aU()
1560- let hd = dz(dA)
1561- let aD = hd._1
1562- let aE = hd._2
1559+ let hb = aU()
1560+ let hc = dz(dA)
1561+ let aD = hc._1
1562+ let aE = hc._2
15631563 let aF = sigVerify(dA.bodyBytes, dA.proofs[0], dA.senderPublicKey)
1564- let aG = sigVerify(dA.bodyBytes, dA.proofs[1], hc)
1564+ let aG = sigVerify(dA.bodyBytes, dA.proofs[1], hb)
15651565 if (if (if (aD)
15661566 then aF
15671567 else false)
15681568 then aG
15691569 else false)
15701570 then true
15711571 else aC(aD, aE, aF, aG)
15721572 }
15731573 else if ($isInstanceOf(dW, "SetScriptTransaction"))
15741574 then {
15751575 let fa = dW
1576- if (sigVerify(gZ.bodyBytes, gZ.proofs[0], hb))
1576+ if (sigVerify(gY.bodyBytes, gY.proofs[0], ha))
15771577 then true
15781578 else {
1579- let he = blake2b256(value(fa.script))
1580- let hf = fromBase64String(value(getString(aO, aA())))
1581- let hg = scriptHash(this)
1582- if ((hf == he))
1583- then (hg != he)
1579+ let hd = blake2b256(value(fa.script))
1580+ let he = fromBase64String(value(getString(aO, aA())))
1581+ let hf = scriptHash(this)
1582+ if ((he == hd))
1583+ then (hf != hd)
15841584 else false
15851585 }
15861586 }
1587- else sigVerify(gZ.bodyBytes, gZ.proofs[0], hb)
1587+ else sigVerify(gY.bodyBytes, gY.proofs[0], ha)
15881588 }
15891589

github/deemru/w8io/873ac7e 
300.05 ms