tx · 3XPWFmfdzr7wBAcwE9EnytbXaqmpRB6bkwa6T2ghPbnU

3MzKSdTH2jFbypLsoNfrH7QgkzSbx3EYwCA:  -0.04100000 Waves

2023.08.17 16:16 [2714641] smart account 3MzKSdTH2jFbypLsoNfrH7QgkzSbx3EYwCA > SELF 0.00000000 Waves

{ "type": 13, "id": "3XPWFmfdzr7wBAcwE9EnytbXaqmpRB6bkwa6T2ghPbnU", "fee": 4100000, "feeAssetId": null, "timestamp": 1692278201129, "version": 2, "chainId": 84, "sender": "3MzKSdTH2jFbypLsoNfrH7QgkzSbx3EYwCA", "senderPublicKey": "35yd3qw1gxKDxKwGAykHN9fANbXNWwseaUwbWDj24o3x", "proofs": [ "3opapZZwDPwg18C6oVX8Au35oG1fTxks2diswnPQHxkQBHno1Nu7vyuRJYHnJn6PKk6j9xSyGAZaVsUjcJURs8YF" ], "script": "base64:BgKkLQgCEgUKAwEEARIHCgUBBAEIARIDCgEIEgQKAgEEEgQKAgEEEgMKAQESABIECgIIARIAEgQKAggBEgQKAggBEgQKAgEBEgMKAQESBQoDAQEBEgUKAwEIARIECgIBCBIECgIBCBIECgIICBIAEgMKAQgSBQoDAQEBEgQKAggBEgQKAgEBEgQKAggIEgsKCQgBAQIBAggEBBIGCgQICAEIEgAiBnNjYWxlOCIMc2NhbGU4QmlnSW50IgdzY2FsZTE4Igp6ZXJvQmlnSW50IgRiaWcwIgRiaWcxIgRiaWcyIgRiaWczIgRiaWc0IgpzbGlwcGFnZTREIgt3YXZlc1N0cmluZyIKYW1wSW5pdGlhbCIFQW11bHQiBURjb252IgNTRVAiBUVNUFRZIgpQb29sQWN0aXZlIgpQb29sUHV0RGlzIg5Qb29sTWF0Y2hlckRpcyIMUG9vbFNodXRkb3duIg5pZHhQb29sQWRkcmVzcyIJaWR4UG9vbFN0IglpZHhMUEFzSWQiCWlkeEFtQXNJZCIJaWR4UHJBc0lkIgtpZHhBbXRBc0RjbSINaWR4UHJpY2VBc0RjbSILaWR4SUFtdEFzSWQiDWlkeElQcmljZUFzSWQiD2lkeEZhY3RTdGFrQ250ciISaWR4RmFjdG9yeVJlc3RDbnRyIhBpZHhGYWN0U2xpcHBDbnRyIhFpZHhGYWN0R3d4UmV3Q250ciIKZmVlRGVmYXVsdCICdDEiB29yaWdWYWwiDW9yaWdTY2FsZU11bHQiCHQxQmlnSW50IgJmMSIDdmFsIg9yZXN1bHRTY2FsZU11bHQiDGZyb21YMThSb3VuZCIFcm91bmQiAnQyIgJmMiICdHMiA2FtdCIIcmVzU2NhbGUiCGN1clNjYWxlIgNhYnMiCWFic0JpZ0ludCICZmMiE2tleU1hbmFnZXJQdWJsaWNLZXkiFmtleU1hbmFnZXJWYXVsdEFkZHJlc3MiAnBsIgJwaCIBaCIBdCIDcGF1IgJ1YSIEdHhJZCIDZ2F1IgJhYSICcGEiA2FtcCINa2V5QW1wSGlzdG9yeSIMaGVpZ2h0QmxvY2tzIhRrZXlDaGFuZ2VBbXBMYXN0Q2FsbCIGa2V5RmVlIgNmZWUiBmtleURMcCIVa2V5RExwUmVmcmVzaGVkSGVpZ2h0IhJrZXlETHBSZWZyZXNoRGVsYXkiFmRMcFJlZnJlc2hEZWxheURlZmF1bHQiD2RMcFJlZnJlc2hEZWxheSIEZmNmZyIEbXRwayICcGMiBmlBbXRBcyIFaVByQXMiA21iYSIFYkFTdHIiA2FwcyIca2V5QWxsb3dlZExwU3RhYmxlU2NyaXB0SGFzaCIWa2V5RmVlQ29sbGVjdG9yQWRkcmVzcyIWa2V5U2tpcE9yZGVyVmFsaWRhdGlvbiILcG9vbEFkZHJlc3MiD3Rocm93T3JkZXJFcnJvciIKb3JkZXJWYWxpZCIOb3JkZXJWYWxpZEluZm8iC3NlbmRlclZhbGlkIgxtYXRjaGVyVmFsaWQiF2FkZHJlc3NGcm9tU3RyaW5nT3JUaGlzIg1hZGRyZXNzU3RyaW5nIgckbWF0Y2gwIgFhIhxnZXRNYW5hZ2VyVmF1bHRBZGRyZXNzT3JUaGlzIg5mYWN0b3J5QWRkcmVzcyIDZmNhIgFzIgRzdHJmIgRhZGRyIgNrZXkiBGludGYiCHRocm93RXJyIgNtc2ciBmZtdEVyciIFaW5GZWUiAUAiBm91dEZlZSIBQSIDaWdzIgJtcCITZmVlQ29sbGVjdG9yQWRkcmVzcyIDZ3BjIgVhbXRBcyIHcHJpY2VBcyIIaVByaWNlQXMiDHBhcnNlQXNzZXRJZCIFaW5wdXQiD2Fzc2V0SWRUb1N0cmluZyIPcGFyc2VQb29sQ29uZmlnIgpwb29sQ29uZmlnIhBwb29sQ29uZmlnUGFyc2VkIgskdDA4NjA4ODc5NCIOY2ZnUG9vbEFkZHJlc3MiDWNmZ1Bvb2xTdGF0dXMiDGNmZ0xwQXNzZXRJZCIQY2ZnQW1vdW50QXNzZXRJZCIPY2ZnUHJpY2VBc3NldElkIhZjZmdBbW91bnRBc3NldERlY2ltYWxzIhVjZmdQcmljZUFzc2V0RGVjaW1hbHMiA2dmYyINZmFjdG9yeUNvbmZpZyIPc3Rha2luZ0NvbnRyYWN0Ig9zbGlwYWdlQ29udHJhY3QiC2d3eENvbnRyYWN0IgxyZXN0Q29udHJhY3QiEWRhdGFQdXRBY3Rpb25JbmZvIg1pbkFtdEFzc2V0QW10Ig9pblByaWNlQXNzZXRBbXQiCG91dExwQW10IgVwcmljZSIKc2xpcEJ5VXNlciIMc2xpcHBhZ2VSZWFsIgh0eEhlaWdodCILdHhUaW1lc3RhbXAiDHNsaXBhZ2VBbUFtdCIMc2xpcGFnZVByQW10IhFkYXRhR2V0QWN0aW9uSW5mbyIOb3V0QW10QXNzZXRBbXQiEG91dFByaWNlQXNzZXRBbXQiB2luTHBBbXQiDWdldEFjY0JhbGFuY2UiB2Fzc2V0SWQiBGNwYmkiCHByQW10WDE4IghhbUFtdFgxOCIFY3BiaXIiA3ZhZCICQTEiAkEyIghzbGlwcGFnZSIEZGlmZiIEcGFzcyICdmQiAkQxIgJEMCIEc2xwZyIEZmFpbCIDcGNwIgphbUFzc2V0RGNtIgpwckFzc2V0RGNtIgVhbUFtdCIFcHJBbXQiC2FtdEFzQW10WDE4IgpwckFzQW10WDE4IgpjYWxjUHJpY2VzIgVscEFtdCIIYW10QXNEY20iB3ByQXNEY20iCHByaWNlWDE4IghscEFtdFgxOCINbHBQckluQW1Bc1gxOCINbHBQckluUHJBc1gxOCIPY2FsY3VsYXRlUHJpY2VzIgFwIgd0YWtlRmVlIgZhbW91bnQiCWZlZUFtb3VudCIEZ2V0RCICeHAiA3hwMCIDeHAxIgNhbm4iC3hwMF94cDFfbl9uIgVhbm5fcyIFYW5uXzEiCWNhbGNETmV4dCIBZCICZGQiA2RkZCICZHAiBGNhbGMiA2FjYyIBaSIFZE5leHQiCGREaWZmUmF3IgVkRGlmZiIDYXJyIg0kdDAxMzI5OTEzMzQ3IgIkbCICJHMiBSRhY2MwIgUkZjBfMSICJGEiAiRpIgUkZjBfMiIFZm91bmQiA2VnbyIGdHhJZDU4IgpwbXRBc3NldElkIghwbXRMcEFtdCILdXNlckFkZHJlc3MiBGxwSWQiBGFtSWQiBHBySWQiBWFtRGNtIgVwckRjbSIDc3RzIgdscEVtaXNzIglhbUJhbGFuY2UiDGFtQmFsYW5jZVgxOCIJcHJCYWxhbmNlIgxwckJhbGFuY2VYMTgiC2N1clByaWNlWDE4IghjdXJQcmljZSILcG10THBBbXRYMTgiCmxwRW1pc3NYMTgiC291dEFtQW10WDE4IgtvdXRQckFtdFgxOCIIb3V0QW1BbXQiCG91dFByQW10IgVzdGF0ZSIDZXBvIgdpbkFtQW10IgZpbkFtSWQiB2luUHJBbXQiBmluUHJJZCIGaXNFdmFsIgZlbWl0THAiCmlzT25lQXNzZXQiEHZhbGlkYXRlU2xpcHBhZ2UiBnBtdEFtdCIFcG10SWQiB2FtSWRTdHIiB3BySWRTdHIiBmFtdERjbSIIcHJpY2VEY20iBGxwRW0iD2luQW1Bc3NldEFtdFgxOCIPaW5QckFzc2V0QW10WDE4Igx1c2VyUHJpY2VYMTgiAXIiBmNoZWNrRCILc2xpcHBhZ2VYMTgiD3NsaXBwYWdlUmVhbFgxOCINbHBFbWlzc2lvblgxOCIKcHJWaWFBbVgxOCIKYW1WaWFQclgxOCIMZXhwZWN0ZWRBbXRzIhFleHBBbXRBc3NldEFtdFgxOCITZXhwUHJpY2VBc3NldEFtdFgxOCIJY2FsY0xwQW10Ig5jYWxjQW1Bc3NldFBtdCIOY2FsY1ByQXNzZXRQbXQiDHNsaXBwYWdlQ2FsYyIJZW1pdExwQW10IgZhbURpZmYiBnByRGlmZiINJHQwMjExMDkyMTQ1NCIKd3JpdGVBbUFtdCIKd3JpdGVQckFtdCILY29tbW9uU3RhdGUiBWdldFlEIgFEIgFuIgF4IgphUHJlY2lzaW9uIgFjIgFiIgNjdXIiDSR0MDIyNjQ5MjI2NjkiAXkiBXlOZXh0IgV5RGlmZiINJHQwMjI5NzYyMzAyMyIHY2FsY0RMcCINYW1vdW50QmFsYW5jZSIMcHJpY2VCYWxhbmNlIgpscEVtaXNzaW9uIgp1cGRhdGVkRExwIg5jYWxjQ3VycmVudERMcCIQYW1vdW50QXNzZXREZWx0YSIPcHJpY2VBc3NldERlbHRhIhRscEFzc2V0RW1pc3Npb25EZWx0YSISYW1vdW50QXNzZXRCYWxhbmNlIhFwcmljZUFzc2V0QmFsYW5jZSIPbHBBc3NldEVtaXNzaW9uIgpjdXJyZW50RExwIhJyZWZyZXNoRExwSW50ZXJuYWwiF2Ftb3VudEFzc2V0QmFsYW5jZURlbHRhIhZwcmljZUFzc2V0QmFsYW5jZURlbHRhIgdhY3Rpb25zIhJ2YWxpZGF0ZVVwZGF0ZWRETHAiBm9sZERMcCIbdmFsaWRhdGVNYXRjaGVyT3JkZXJBbGxvd2VkIgVvcmRlciIRYW1vdW50QXNzZXRBbW91bnQiEHByaWNlQXNzZXRBbW91bnQiDSR0MDI1MjIxMjU0MzMiA2RMcCINJHQwMjU3NzUyNTg3NSINdW51c2VkQWN0aW9ucyIGZExwTmV3Igxpc09yZGVyVmFsaWQiBGluZm8iAmNnIgNwbXQiAmNwIgZjYWxsZXIiB2FtQXNQbXQiB3ByQXNQbXQiDWNhbGNQdXRPbmVUa24iCXBtdEFtdFJhdyILd2l0aFRha2VGZWUiDWNoZWNoRW1pc3Npb24iDSR0MDI4NTMxMjg5OTMiDGFtQmFsYW5jZU9sZCIMcHJCYWxhbmNlT2xkIg0kdDAyODk5OTI5MTc1IgthbUFtb3VudFJhdyILcHJBbW91bnRSYXciDSR0MDI5MTc5Mjk0MzMiCGFtQW1vdW50IghwckFtb3VudCIMYW1CYWxhbmNlTmV3IgxwckJhbGFuY2VOZXciCGxwQW1vdW50Ig5wb29sUHJvcG9ydGlvbiIPYW1vdW50QXNzZXRQYXJ0Ig5wcmljZUFzc2V0UGFydCIJbHBBbXRCb3RoIgVib251cyITZ2V0T25lVGtuVjJJbnRlcm5hbCIKb3V0QXNzZXRJZCIMbWluT3V0QW1vdW50IghwYXltZW50cyIMb3JpZ2luQ2FsbGVyIg10cmFuc2FjdGlvbklkIgphbURlY2ltYWxzIgpwckRlY2ltYWxzIgpwb29sU3RhdHVzIg0kdDAzMTU0NTMxNjU2Igh0b3RhbEdldCILdG90YWxBbW91bnQiDSR0MDMxODQ2MzIxNTMiBW91dEFtIgVvdXRQciIIY3VyUHJYMTgiBWN1clByIhFvdXRBc3NldElkT3JXYXZlcyIQc2VuZEZlZVRvTWF0Y2hlciIEYnVybiINJHQwMzI5MzgzMzI4OCIQZmVlQW1vdW50Rm9yQ2FsYyIQb3V0SW5BbW91bnRBc3NldCINJHQwMzMyOTEzMzM5OSIRcmVmcmVzaERMcEFjdGlvbnMiEWlzVXBkYXRlZERMcFZhbGlkIhZtYW5hZ2VyUHVibGljS2V5T3JVbml0IhNtYW5hZ2VyVmF1bHRBZGRyZXNzIgJwZCIJaXNNYW5hZ2VyIgJwayILbXVzdE1hbmFnZXIiBGdldFkiCWlzUmV2ZXJzZSITcG9vbEFtb3VudEluQmFsYW5jZSINJHQwMzQ4ODYzNDkwNiINJHQwMzUyMzczNTI4NCITc2tpcE9yZGVyVmFsaWRhdGlvbiINY2xlYW5BbW91bnRJbiINZmVlUG9vbEFtb3VudCINJHQwMzU2MzYzNjA2MCIIYXNzZXRPdXQiAmR5Igt0b3RhbEdldFJhdyIFbmV3WHAiBG5ld0QiDGFtb3VudE91dE1pbiIJYWRkcmVzc1RvIgtzd2FwQ29udGFjdCISaXNQb29sU3dhcERpc2FibGVkIg5pc1N3YXBEaXNhYmxlZCIGY2hlY2tzIgdhc3NldEluIg0kdDAzNzc5NTM4MTg5IghjaGVja01pbiIEc2xpcCIJYXV0b1N0YWtlIgdmYWN0Q2ZnIgtzdGFraW5nQ250ciIIc2xpcENudHIiCmFtQXNzZXRQbXQiCnByQXNzZXRQbXQiAWUiCWxwQXNzZXRJZCICZWwiBmxlZ2FjeSICc2EiAnNwIghscFRybnNmciICc3MiDSR0MDQyNjQ0NDI3ODYiBWNoZWNrIhRscEFzc2V0RW1pc3Npb25BZnRlciIgaXNQb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWQiDWlzUHV0RGlzYWJsZWQiDSR0MDQ0NDI3NDQ1ODUiB2VzdGltTFAiDSR0MDQ1NDcwNDU4MTkiFHBheW1lbnRJbkFtb3VudEFzc2V0Ig0kdDA0NTgyMjQ1OTMwIgdtYXhTbHBnIgZlc3RQdXQiDSR0MDQ2OTYwNDcwMjUiCW91dEFtdEFtdCINJHQwNDgxOTg0ODI4MCINaXNHZXREaXNhYmxlZCINJHQwNDg4OTg0OTA1MyIYbGFzdFJlZnJlc2hlZEJsb2NrSGVpZ2h0Ih1jaGVja0xhc3RSZWZyZXNoZWRCbG9ja0hlaWdodCINJHQwNDk1Nzc0OTY0MSIQZExwVXBkYXRlQWN0aW9ucyINbHBBc3NldEFtb3VudCIFaW5kZXgiBG5ld1kiDSR0MDUwNjUxNTA3MDYiDSR0MDUxMDgxNTExOTYiDnN1bU9mR2V0QXNzZXRzIhJub0xlc3NUaGVuQW10QXNzZXQiFG5vTGVzc1RoZW5QcmljZUFzc2V0IhRidXJuTFBBc3NldE9uRmFjdG9yeSINJHQwNTIzNjI1MjQ0MyINY2hlY2tQYXltZW50cyIKZmFjdG9yeUNmZyIHc3Rha2luZyIKdW5zdGFrZUludiIBdiIFYnVybkEiDSR0MDUzNDcwNTM1NTEiDXVuc3Rha2VBbW91bnQiFW5vTGVzc1RoZW5BbW91bnRBc3NldCIDcmVzIgxjaGVja0Ftb3VudHMiDSR0MDU0ODAyNTQ4ODMiF2xwQXNzZXRSZWNpcGllbnRBZGRyZXNzIg0kdDA1NTkwNTU2MDkzIhBwYXltZW50QW1vdW50UmF3Ig5wYXltZW50QXNzZXRJZCINJHQwNTYyMjE1NjMyNCINJHQwNTY0NzI1NjU3NiIIYW10QXNTdHIiB3ByQXNTdHIiAnByIgxyZXNTY2FsZU11bHQiB3VzckFkZHIiB3BtdEFzSWQiA2NmZyINJHQwNTkwNTY1OTI1NSIEbGlzdCIFZGVsYXkiBWRlbHRhIgZ0YXJnZXQiBmN1ckFtcCIJbmV3QW1wUmF3IgZuZXdBbXAiCGxhc3RDYWxsIgR3YWl0IgJ0eCIGdmVyaWZ5Ig90YXJnZXRQdWJsaWNLZXkiCm1hdGNoZXJQdWIiDSR0MDYwMTg4NjAzMDUiB25ld0hhc2giC2FsbG93ZWRIYXNoIgtjdXJyZW50SGFzaIUBAAFhAIDC1y8AAWIJALYCAQCAwtcvAAFjCQC2AgEAgICQu7rWrfANAAFkCQC2AgEAAAABZQkAtgIBAAAAAWYJALYCAQABAAFnCQC2AgEAAgABaAkAtgIBAAMAAWkJALYCAQAEAAFqCQC2AgEJAGUCBQFhCQBpAgkAaAIFAWEAAQUBYQABawIFV0FWRVMAAWwAMgABbQIDMTAwAAFuAgExAAFvAgJfXwABcAIAAAFxAAEAAXIAAgABcwADAAF0AAQAAXUAAQABdgACAAF3AAMAAXgABAABeQAFAAF6AAYAAUEABwABQgAIAAFDAAkAAUQAAQABRQAGAAFGAAcAAUcACgABSAkAawMACgUBYQCQTgEBSQIBSgFLCQC8AgMJALYCAQUBSgUBYwkAtgIBBQFLAQFMAgFKAUsJALwCAwUBSgUBYwUBSwEBTQIBTgFPCQCgAwEJALwCAwUBTgkAtgIBBQFPBQFjAQFQAwFOAU8BUQkAoAMBCQC9AgQFAU4JALYCAQUBTwUBYwUBUQEBUgIBSgFLCQC8AgMFAUoFAWMJALYCAQUBSwEBUwIBTgFPCQC8AgMFAU4JALYCAQUBTwUBYwEBVAMBVQFWAVcJAGsDBQFVBQFWBQFXAQFYAQFOAwkAvwICBQFkBQFOCQC+AgEFAU4FAU4BAVkBAU4DCQC/AgIFAWQFAU4JAL4CAQUBTgUBTgEBWgACEyVzX19mYWN0b3J5Q29udHJhY3QBAmFhAAIUJXNfX21hbmFnZXJQdWJsaWNLZXkBAmFiAAIXJXNfX21hbmFnZXJWYXVsdEFkZHJlc3MBAmFjAAIRJXMlc19fcHJpY2VfX2xhc3QBAmFkAgJhZQJhZgkAuQkCCQDMCAICGCVzJXMlZCVkX19wcmljZV9faGlzdG9yeQkAzAgCCQCkAwEFAmFlCQDMCAIJAKQDAQUCYWYFA25pbAUBbwECYWcCAmFoAmFpCQCsAgIJAKwCAgkArAICAgslcyVzJXNfX1BfXwUCYWgCAl9fBQJhaQECYWoCAmFoAmFpCQCsAgIJAKwCAgkArAICAgslcyVzJXNfX0dfXwUCYWgCAl9fBQJhaQECYWsAAg8lc19fYW1vdW50QXNzZXQBAmFsAAIOJXNfX3ByaWNlQXNzZXQBAmFtAAIHJXNfX2FtcAECYW4BAmFvCQCsAgICCyVzJWRfX2FtcF9fCQCkAwEFAmFvAQJhcAACFSVzX19jaGFuZ2VBbXBMYXN0Q2FsbAACYXECByVzX19mZWUAAmFyCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFAmFxBQFIAAJhcwkAuQkCCQDMCAICAiVzCQDMCAICA2RMcAUDbmlsBQFvAAJhdAkAuQkCCQDMCAICAiVzCQDMCAICEmRMcFJlZnJlc2hlZEhlaWdodAUDbmlsBQFvAAJhdQkAuQkCCQDMCAICAiVzCQDMCAICD3JlZnJlc2hETHBEZWxheQUDbmlsBQFvAAJhdgAeAAJhdwkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQJhdQUCYXYBAmF4AAIRJXNfX2ZhY3RvcnlDb25maWcBAmF5AAIYJXMlc19fbWF0Y2hlcl9fcHVibGljS2V5AQJhegICYUECYUIJAKwCAgkArAICCQCsAgIJAKwCAgIIJWQlZCVzX18FAmFBAgJfXwUCYUICCF9fY29uZmlnAQJhQwECYUQJAKwCAgIoJXMlcyVzX19tYXBwaW5nc19fYmFzZUFzc2V0MmludGVybmFsSWRfXwUCYUQBAmFFAAIMJXNfX3NodXRkb3duAQJhRgACHSVzX19hbGxvd2VkTHBTdGFibGVTY3JpcHRIYXNoAQJhRwACFyVzX19mZWVDb2xsZWN0b3JBZGRyZXNzAQJhSAECYUkJAKwCAgIbJXMlc19fc2tpcE9yZGVyVmFsaWRhdGlvbl9fBQJhSQECYUoEAmFLAmFMAmFNAmFOCQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICJG9yZGVyIHZhbGlkYXRpb24gZmFpbGVkOiBvcmRlclZhbGlkPQkApQMBBQJhSwICICgFAmFMAgEpAg0gc2VuZGVyVmFsaWQ9CQClAwEFAmFNAg4gbWF0Y2hlclZhbGlkPQkApQMBBQJhTgECYU8BAmFQBAJhUQkApggBBQJhUAMJAAECBQJhUQIHQWRkcmVzcwQCYVIFAmFRBQJhUgUEdGhpcwECYVMABAJhVAQCYVEJAKIIAQkBAVoAAwkAAQIFAmFRAgZTdHJpbmcEAmFVBQJhUQkBAmFPAQUCYVUFBHRoaXMEAmFRCQCdCAIFAmFUCQECYWIAAwkAAQIFAmFRAgZTdHJpbmcEAmFWBQJhUQkBAmFPAQUCYVYFBHRoaXMBAmFXAgJhWAJhWQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFAmFYBQJhWQkAuQkCCQDMCAICCm1hbmRhdG9yeSAJAMwIAgkApQgBBQJhWAkAzAgCAgEuCQDMCAIFAmFZCQDMCAICDCBub3QgZGVmaW5lZAUDbmlsAgABAmFaAgJhWAJhWQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFAmFYBQJhWQkAuQkCCQDMCAICCm1hbmRhdG9yeSAJAMwIAgkApQgBBQJhWAkAzAgCAgEuCQDMCAIFAmFZCQDMCAICDCBub3QgZGVmaW5lZAUDbmlsAgABAmJhAQJiYgkAAgEJALkJAgkAzAgCAg9scF9zdGFibGUucmlkZToJAMwIAgUCYmIFA25pbAIBIAECYmMBAmJiCQC5CQIJAMwIAgIPbHBfc3RhYmxlLnJpZGU6CQDMCAIFAmJiBQNuaWwCASAAAmFVCQERQGV4dHJOYXRpdmUoMTA2MikBCQECYVcCBQR0aGlzCQEBWgAAAmJkCgACYmUJAPwHBAUCYVUCEGdldEluRmVlUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJiZQIDSW50BQJiZQkAAgEJAKwCAgkAAwEFAmJlAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQAAmJmCgACYmUJAPwHBAUCYVUCEWdldE91dEZlZVJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCYmUCA0ludAUCYmUJAAIBCQCsAgIJAAMBBQJiZQIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50AAJiZwkBAmFXAgUEdGhpcwkBAmFtAAECYmgACQELdmFsdWVPckVsc2UCCQCbCAIFAmFVCQECYUUABwECYmkACQDZBAEJAQJhVwIFAmFVCQECYXkAAAJiagkBEUBleHRyTmF0aXZlKDEwNjIpAQkBAmFXAgUCYVUJAQJhRwABAmJrAAQCYmwJAQJhVwIFBHRoaXMJAQJhawAEAmJtCQECYVcCBQR0aGlzCQECYWwABAJibgkBAmFaAgUCYVUJAQJhQwEFAmJtBAJhQQkBAmFaAgUCYVUJAQJhQwEFAmJsCQC1CQIJAQJhVwIFAmFVCQECYXoCCQCkAwEFAmFBCQCkAwEFAmJuBQFvAQJibwECYnADCQAAAgUCYnAFAWsFBHVuaXQJANkEAQUCYnABAmJxAQJicAMJAAACBQJicAUEdW5pdAUBawkA2AQBCQEFdmFsdWUBBQJicAECYnIBAmJzCQCZCgcJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAJEDAgUCYnMFAXUJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJicwUBdgkA2QQBCQCRAwIFAmJzBQF3CQECYm8BCQCRAwIFAmJzBQF4CQECYm8BCQCRAwIFAmJzBQF5CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYnMFAXoJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJicwUBQQACYnQJAQJicgEJAQJiawAAAmJ1BQJidAACYnYIBQJidQJfMQACYncIBQJidQJfMgACYngIBQJidQJfMwACYnkIBQJidQJfNAACYnoIBQJidQJfNQACYkEIBQJidQJfNgACYkIIBQJidQJfNwECYkMACQC1CQIJAQJhVwIFAmFVCQECYXgABQFvAAJiRAkBAmJDAAACYkUJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmJEBQFEAiBJbnZhbGlkIHN0YWtpbmcgY29udHJhY3QgYWRkcmVzcwACYkYJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmJEBQFGAiBJbnZhbGlkIHNsaXBhZ2UgY29udHJhY3QgYWRkcmVzcwACYkcJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmJEBQFHAhxJbnZhbGlkIGd3eCBjb250cmFjdCBhZGRyZXNzAAJiSAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCYkQFAUUCHEludmFsaWQgZ3d4IGNvbnRyYWN0IGFkZHJlc3MBAmJJCgJiSgJiSwJiTAJiTQJiTgJiTwJiUAJiUQJiUgJiUwkAuQkCCQDMCAICFCVkJWQlZCVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCYkoJAMwIAgkApAMBBQJiSwkAzAgCCQCkAwEFAmJMCQDMCAIJAKQDAQUCYk0JAMwIAgkApAMBBQJiTgkAzAgCCQCkAwEFAmJPCQDMCAIJAKQDAQUCYlAJAMwIAgkApAMBBQJiUQkAzAgCCQCkAwEFAmJSCQDMCAIJAKQDAQUCYlMFA25pbAUBbwECYlQGAmJVAmJWAmJXAmJNAmJQAmJRCQC5CQIJAMwIAgIMJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCYlUJAMwIAgkApAMBBQJiVgkAzAgCCQCkAwEFAmJXCQDMCAIJAKQDAQUCYk0JAMwIAgkApAMBBQJiUAkAzAgCCQCkAwEFAmJRBQNuaWwFAW8BAmJYAQJiWQMJAAACBQJiWQIFV0FWRVMICQDvBwEFBHRoaXMJYXZhaWxhYmxlCQDwBwIFBHRoaXMJANkEAQUCYlkBAmJaAgJjYQJjYgkAvAIDBQJjYQUBYwUCY2IBAmNjAwJjYQJjYgFRCQC9AgQFAmNhBQFjBQJjYgUBUQECY2QDAmNlAmNmAmNnBAJjaAkAvAIDCQC4AgIFAmNlBQJjZgUBYgUCY2YEAmNpCQC/AgIJALgCAgUCY2cJAQFYAQUCY2gFAWQDCQEBIQEFAmNpCQACAQkArAICAgpCaWcgc2xwZzogCQCmAwEFAmNoCQCUCgIFAmNpCQCZAwEJAMwIAgUCY2UJAMwIAgUCY2YFA25pbAECY2oDAmNrAmNsAmNtBAJjaAkAvAIDBQJjbAUBYgUCY2sEAmNuCQC/AgIFAmNtBQJjaAMDBQJjbgYJAL8CAgUCY2wFAmNrCQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkApgMBBQJjbAIBIAkApgMBBQJjawIBIAkApgMBBQJjaAIBIAkApgMBBQJjbQUCY24BAmNvBAJjcAJjcQJjcgJjcwQCY3QJAQFJAgUCY3IFAmNwBAJjdQkBAUkCBQJjcwUCY3EJAQJiWgIFAmN1BQJjdAECY3YDAmNyAmNzAmN3BAJjeAUCYkEEAmN5BQJiQgQCY3oJAQJjbwQFAmN4BQJjeQUCY3IFAmNzBAJjYgkBAUkCBQJjcgUCY3gEAmNhCQEBSQIFAmNzBQJjeQQCY0EJAQFJAgUCY3cFAWEEAmNCCQECYloCBQJjYgUCY0EEAmNDCQECYloCBQJjYQUCY0EJAMwIAgUCY3oJAMwIAgUCY0IJAMwIAgUCY0MFA25pbAECY0QDAmNyAmNzAmN3BAJjRQkBAmN2AwUCY3IFAmNzBQJjdwkAzAgCCQEBTQIJAJEDAgUCY0UAAAUBYQkAzAgCCQEBTQIJAJEDAgUCY0UAAQUBYQkAzAgCCQEBTQIJAJEDAgUCY0UAAgUBYQUDbmlsAQJjRgICY0cCYXIEAmNIAwkAAAIFAmFyAAAAAAkAawMFAmNHBQJhcgUBYQkAlAoCCQBlAgUCY0cFAmNIBQJjSAECY0kBAmNKBAJjSwkAkQMCBQJjSgAABAJjTAkAkQMCBQJjSgABBAJhVgkAtwICBQJjSwUCY0wDCQAAAgUCYVYFAWUFAWUEAmFSCQENcGFyc2VJbnRWYWx1ZQEFAmJnBAJjTQkAaAIFAmFSAAIEAmNFCQC8AgMFAmNLBQJjTAUBZgQCY04JALwCAwUCY0UFAWkFAWYEAmNPCQC8AgMJALYCAQUCY00FAmFWBQFmBAJjUAkAtgIBCQBlAgUCY00AAQoBAmNRAQJjUgQCY1MJALwCAwUCY1IFAmNSBQFmBAJjVAkAvAIDBQJjUwUCY1IFAWYEAmNVCQC8AgMFAmNUBQFmBQJjTgkAvAIDCQC3AgIFAmNPCQC8AgMFAmNVBQFnBQFmBQJjUgkAtwICCQC8AgMFAmNQBQJjUgUBZgkAvAIDBQFoBQJjVQUBZgoBAmNWAgJjVwJjWAMIBQJjVwJfMgUCY1cEAmNSCAUCY1cCXzEEAmNZCQECY1EBBQJjUgQCY1oJALgCAgUCY1kJAQV2YWx1ZQEFAmNSBAJkYQMJAL8CAgUBZQUCY1oJAL4CAQUCY1oFAmNaAwkAwAICBQFmBQJkYQkAlAoCBQJjWQYJAJQKAgUCY1kHBAJkYgkAzAgCAAAJAMwIAgABCQDMCAIAAgkAzAgCAAMJAMwIAgAECQDMCAIABQkAzAgCAAYJAMwIAgAHCQDMCAIACAkAzAgCAAkJAMwIAgAKCQDMCAIACwkAzAgCAAwJAMwIAgANCQDMCAIADgkAzAgCAA8JAMwIAgAQBQNuaWwEAmRjCgACZGQFAmRiCgACZGUJAJADAQUCZGQKAAJkZgkAlAoCBQJhVgcKAQJkZwICZGgCZGkDCQBnAgUCZGkFAmRlBQJkaAkBAmNWAgUCZGgJAJEDAgUCZGQFAmRpCgECZGoCAmRoAmRpAwkAZwIFAmRpBQJkZQUCZGgJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxNwkBAmRqAgkBAmRnAgkBAmRnAgkBAmRnAgkBAmRnAgkBAmRnAgkBAmRnAgkBAmRnAgkBAmRnAgkBAmRnAgkBAmRnAgkBAmRnAgkBAmRnAgkBAmRnAgkBAmRnAgkBAmRnAgkBAmRnAgkBAmRnAgUCZGYAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEEAmNSCAUCZGMCXzEEAmRrCAUCZGMCXzIDBQJkawUCY1IJAAIBCQCsAgICGUQgY2FsY3VsYXRpb24gZXJyb3IsIEQgPSAJAKYDAQUCY1IBAmRsBAJkbQJkbgJkbwJkcAQCZHEFAmJ4BAJkcgkA2AQBCQEFdmFsdWUBBQJieQQCZHMJANgEAQkBBXZhbHVlAQUCYnoEAmR0BQJiQQQCZHUFAmJCBAJkdgkApAMBBQJidwQCZHcICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCZHECC1dyb25nIExQIGlkCHF1YW50aXR5AwkBAiE9AgkA2AQBBQJkcQUCZG4JAAIBAg9Xcm9uZyBwbXQgYXNzZXQEAmR4CQECYlgBBQJkcgQCZHkJAQFJAgUCZHgFAmR0BAJkegkBAmJYAQUCZHMEAmRBCQEBSQIFAmR6BQJkdQQCZEIJAQJiWgIFAmRBBQJkeQQCZEMJAQFNAgUCZEIFAWEEAmRECQEBSQIFAmRvBQFhBAJkRQkBAUkCBQJkdwUBYQQCZEYJALwCAwUCZHkFAmREBQJkRQQCZEcJALwCAwUCZEEFAmREBQJkRQQCZEgJAQFQAwUCZEYFAmR0BQVGTE9PUgQCZEkJAQFQAwUCZEcFAmR1BQVGTE9PUgQCZEoDCQAAAgUCZG0CAAUDbmlsCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmRwBQJkSAMJAAACBQJkcgIFV0FWRVMFBHVuaXQJANkEAQUCZHIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCZHAFAmRJAwkAAAIFAmRzAgVXQVZFUwUEdW5pdAkA2QQBBQJkcwkAzAgCCQELU3RyaW5nRW50cnkCCQECYWoCCQClCAEFAmRwBQJkbQkBAmJUBgUCZEgFAmRJBQJkbwUCZEMFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJhYwAFAmRDCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYWQCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJkQwUDbmlsCQCcCgoFAmRIBQJkSQUCZHIFAmRzBQJkeAUCZHoFAmR3BQJkQgUCZHYFAmRKAQJkSw0CZG0CY2cCZEwCZE0CZE4CZE8CZHACZFACZFECZFICZFMCZFQCZFUEAmRxBQJieAQCZFYJANgEAQkBBXZhbHVlAQUCYnkEAmRXCQDYBAEJAQV2YWx1ZQEFAmJ6BAJkWAUCYkEEAmRZBQJiQgQCZHYJAKQDAQUCYncEAmRaCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFAmRxAghXciBscCBhcwhxdWFudGl0eQQCZHgDBQJkUAkBAmJYAQUCZFYDAwUCZFIJAAACBQJkVQUCZFYHCQBlAgkBAmJYAQUCZFYFAmRUAwUCZFIJAQJiWAEFAmRWCQBlAgkBAmJYAQUCZFYFAmRMBAJkegMFAmRQCQECYlgBBQJkVwMDBQJkUgkAAAIFAmRVBQJkVwcJAGUCCQECYlgBBQJkVwUCZFQDBQJkUgkBAmJYAQUCZFcJAGUCCQECYlgBBQJkVwUCZE4EAmVhCQEBSQIFAmRMBQJkWAQCZWIJAQFJAgUCZE4FAmRZBAJlYwkBAmJaAgUCZWIFAmVhBAJkeQkBAUkCBQJkeAUCZFgEAmRBCQEBSQIFAmR6BQJkWQQCY2wJAQJjSQEJAMwIAgUCZHkJAMwIAgUCZEEFA25pbAQCZWQDCQAAAgUCZFoAAAQCY2sJAQJjSQEJAMwIAgkAtwICBQJkeQUCZWEJAMwIAgkAtwICBQJkQQUCZWIFA25pbAQCZWUDCQC/AgIFAmNrBQJjbAYJAAIBAhxEMSBzaG91bGQgYmUgZ3JlYXRlciB0aGFuIEQwAwkAAAIFAmVlBQJlZQQCZEIFAWQEAmVmBQFkBAJjQQUCY2sJAJcKBQkBAU0CBQJjQQUBYQkBAU0CBQJlYQUCZFgJAQFNAgUCZWIFAmRZCQECYloCCQC3AgIFAmRBBQJlYgkAtwICBQJkeQUCZWEFAmVmCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBAJkQgkBAmJaAgUCZEEFAmR5BAJlZwkAvAIDCQEBWAEJALgCAgUCZEIFAmVjBQFjBQJkQgQCZWYJAQFJAgUCY2cFAWEDAwMFAmRTCQECIT0CBQJkQgUBZAcJAL8CAgUCZWcFAmVmBwkAAgEJAKwCAgkArAICCQCsAgICD1ByaWNlIHNsaXBwYWdlIAkApgMBBQJlZwIDID4gCQCmAwEFAmVmBAJlaAkBAUkCBQJkWgUBYQQCZWkJAL0CBAUCZWEJAQJjYwMFAmRBBQJkeQUHQ0VJTElORwUBYwUHQ0VJTElORwQCZWoJAL0CBAUCZWIFAWMJAQJjYwMFAmRBBQJkeQUFRkxPT1IFB0NFSUxJTkcEAmVrAwkAvwICBQJlaQUCZWIJAJQKAgUCZWoFAmViCQCUCgIFAmVhBQJlaQQCZWwIBQJlawJfMQQCZW0IBQJlawJfMgQCY2sJAQJjSQEJAMwIAgkAtwICBQJkeQUCZWwJAMwIAgkAtwICBQJkQQUCZW0FA25pbAQCZWUDCQC/AgIFAmNrBQJjbAYJAAIBAhxEMSBzaG91bGQgYmUgZ3JlYXRlciB0aGFuIEQwAwkAAAIFAmVlBQJlZQQCY0EJALwCAwUCZWgJALgCAgUCY2sFAmNsBQJjbAkAlwoFCQEBUAMFAmNBBQFhBQVGTE9PUgkBAVADBQJlbAUCZFgFB0NFSUxJTkcJAQFQAwUCZW0FAmRZBQdDRUlMSU5HBQJkQgUCZWYJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4EAmVuCAUCZWQCXzEEAmVvCAUCZWQCXzIEAmVwCAUCZWQCXzMEAmRDCQEBTQIIBQJlZAJfNAUBYQQCZXEJAQFNAggFAmVkAl81BQFhAwkAZwIAAAUCZW4JAAIBAgdMUCA8PSAwBAJlcgMJAQEhAQUCZFEAAAUCZW4EAmVzCQBlAgUCZEwFAmVvBAJldAkAZQIFAmROBQJlcAQCZXUDAwUCZFIJAAACBQJkVQUCZFYHCQCUCgIFAmRUAAADAwUCZFIJAAACBQJkVQUCZFcHCQCUCgIAAAUCZFQJAJQKAgUCZW8FAmVwBAJldggFAmV1Al8xBAJldwgFAmV1Al8yBAJleAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmFjAAUCZEMJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJhZAIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmRDCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhZwIFAmRwBQJkbQkBAmJJCgUCZXYFAmV3BQJlcgUCZEMFAmNnBQJlcQUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCZXMFAmV0BQNuaWwJAJ8KDQUCZW4FAmVyBQJkQwUCZHgFAmR6BQJkWgUCZHEFAmR2BQJleAUCZXMFAmV0BQJkTQUCZE8BAmV5AwJjSgJjWAJlegQCZUEFAWcEAmVCCQCRAwIFAmNKAwkAAAIFAmNYAAAAAQAABAJlQwkApwMBBQFtBAJhUgkAuQICCQCnAwEFAmJnBQJlQwQCYVYFAmVCBAJjTQkAuQICBQJhUgUCZUEEAmVECQC6AgIJALkCAgkAuQICCQC6AgIJALkCAgUCZXoFAmV6CQC5AgIFAmVCBQJlQQUCZXoFAmVDCQC5AgIFAmNNBQJlQQQCZUUJALgCAgkAtwICBQJhVgkAugICCQC5AgIFAmV6BQJlQwUCY00FAmV6CgECY1YCAmNXAmVGBAJlRwUCY1cEAmVICAUCZUcCXzEEAmRrCAUCZUcCXzIDCQECIT0CBQJkawUEdW5pdAUCY1cEAmVJCQC6AgIJALcCAgkAuQICBQJlSAUCZUgFAmVECQC3AgIJALkCAgUBZwUCZUgFAmVFBAJlSgkBAVkBCQC4AgIFAmVJCQEFdmFsdWUBBQJlSAMJAMACAgUBZgUCZUoJAJQKAgUCZUkFAmVGCQCUCgIFAmVJBQR1bml0BAJkYgkAzAgCAAAJAMwIAgABCQDMCAIAAgkAzAgCAAMJAMwIAgAECQDMCAIABQkAzAgCAAYJAMwIAgAHCQDMCAIACAkAzAgCAAkJAMwIAgAKCQDMCAIACwkAzAgCAAwJAMwIAgANCQDMCAIADgUDbmlsBAJlSwoAAmRkBQJkYgoAAmRlCQCQAwEFAmRkCgACZGYJAJQKAgUCZXoFBHVuaXQKAQJkZwICZGgCZGkDCQBnAgUCZGkFAmRlBQJkaAkBAmNWAgUCZGgJAJEDAgUCZGQFAmRpCgECZGoCAmRoAmRpAwkAZwIFAmRpBQJkZQUCZGgJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxNQkBAmRqAgkBAmRnAgkBAmRnAgkBAmRnAgkBAmRnAgkBAmRnAgkBAmRnAgkBAmRnAgkBAmRnAgkBAmRnAgkBAmRnAgkBAmRnAgkBAmRnAgkBAmRnAgkBAmRnAgkBAmRnAgUCZGYAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwQCZUgIBQJlSwJfMQQCZGsIBQJlSwJfMgMJAQIhPQIFAmRrBQR1bml0BQJlSAkAAgEJAKwCAgIZWSBjYWxjdWxhdGlvbiBlcnJvciwgWSA9IAkApgMBBQJlSAECZUwDAmVNAmVOAmVPBAJlUAkAvAIDCQECY0kBCQDMCAIJAQFMAgUCZU0JALYCAQUCYkEJAMwIAgkBAUwCBQJlTgkAtgIBBQJiQgUDbmlsBQFjBQJlTwMJAAACBQJlTwUBZQUBZQUCZVABAmVRAwJlUgJlUwJlVAQCZVUJALgCAgkAtgIBCQECYlgBCQECYnEBBQJieQUCZVIEAmVWCQC4AgIJALYCAQkBAmJYAQkBAmJxAQUCYnoFAmVTBAJlVwkAuAICCQC2AgEICQEFdmFsdWUBCQDsBwEFAmJ4CHF1YW50aXR5BQJlVAQCZVgJAQJlTAMFAmVVBQJlVgUCZVcFAmVYAQJlWQMCZVoCZmECZVQEAmVVCQBkAgkBAmJYAQkBAmJxAQUCYnkFAmVaBAJlVgkAZAIJAQJiWAEJAQJicQEFAmJ6BQJmYQQCZVcJAGQCCAkBBXZhbHVlAQkA7AcBBQJieAhxdWFudGl0eQUCZVQEAmVQCQECZUwDCQC2AgEFAmVVCQC2AgEFAmVWCQC2AgEFAmVXBAJmYgkAzAgCCQEMSW50ZWdlckVudHJ5AgUCYXQFBmhlaWdodAkAzAgCCQELU3RyaW5nRW50cnkCBQJhcwkApgMBBQJlUAUDbmlsCQCUCgIFAmZiBQJlUAECZmMCAmZkAmVQAwkAwAICBQJlUAUCZmQGCQECYmEBAiJ1cGRhdGVkIERMcCBsb3dlciB0aGFuIGN1cnJlbnQgRExwAQJmZQECZmYEAmVVCQECYlgBCQECYnEBBQJieQQCZVYJAQJiWAEJAQJicQEFAmJ6BAJmZwgFAmZmBmFtb3VudAQCZmgJAG4ECAUCZmYGYW1vdW50CAUCZmYFcHJpY2UFAWEFBUZMT09SBAJmaQMJAAACCAUCZmYJb3JkZXJUeXBlBQNCdXkJAJQKAgUCZmcJAQEtAQUCZmgJAJQKAgkBAS0BBQJmZwUCZmgEAmVaCAUCZmkCXzEEAmZhCAUCZmkCXzIDAwMJAQJiaAAGCQAAAgUCYncFAXMGCQAAAgUCYncFAXQJAAIBAg1BZG1pbiBibG9ja2VkAwMJAQIhPQIICAUCZmYJYXNzZXRQYWlyC2Ftb3VudEFzc2V0BQJieQYJAQIhPQIICAUCZmYJYXNzZXRQYWlyCnByaWNlQXNzZXQFAmJ6CQACAQIJV3IgYXNzZXRzBAJmagkApwMBCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMFAmFzAgEwBAJmawkBAmVZAwUCZVoFAmZhAAAEAmZsCAUCZmsCXzEEAmZtCAUCZmsCXzIEAmZuCQDAAgIFAmZtBQJmagQCZm8JALkJAgkAzAgCAgRkTHA9CQDMCAIJAKYDAQUCZmoJAMwIAgIIIGRMcE5ldz0JAMwIAgkApgMBBQJmbQkAzAgCAhQgYW1vdW50QXNzZXRCYWxhbmNlPQkAzAgCCQCkAwEFAmVVCQDMCAICEyBwcmljZUFzc2V0QmFsYW5jZT0JAMwIAgkApAMBBQJlVgkAzAgCAhkgYW1vdW50QXNzZXRCYWxhbmNlRGVsdGE9CQDMCAIJAKQDAQUCZVoJAMwIAgIYIHByaWNlQXNzZXRCYWxhbmNlRGVsdGE9CQDMCAIJAKQDAQUCZmEJAMwIAgIIIGhlaWdodD0JAMwIAgkApAMBBQZoZWlnaHQFA25pbAIACQCUCgIFAmZuBQJmbwECZnABAmNYAwkBAiE9AgkAkAMBCAUCY1gIcGF5bWVudHMAAQkAAgECCjEgcG1udCBleHAEAmZxCQEFdmFsdWUBCQCRAwIIBQJjWAhwYXltZW50cwAABAJkbgkBBXZhbHVlAQgFAmZxB2Fzc2V0SWQEAmRUCAUCZnEGYW1vdW50BAJlZAkBAmRsBAkA2AQBCAUCY1gNdHJhbnNhY3Rpb25JZAkA2AQBBQJkbgUCZFQIBQJjWAZjYWxsZXIEAmRICAUCZWQCXzEEAmRJCAUCZWQCXzIEAmR2CQENcGFyc2VJbnRWYWx1ZQEIBQJlZAJfOQQCZEoIBQJlZANfMTADAwkBAmJoAAYJAAACBQJkdgUBdAkAAgEJAKwCAgIPQWRtaW4gYmxvY2tlZDogCQCkAwEFAmR2CQCXCgUFAmRIBQJkSQUCZFQFAmRuBQJkSgECZnIKAmZzAmFpAmZ0AmZ1AmNnAmRRAmRSAmRTAmRUAmRVBAJlZAkBAmRLDQUCYWkFAmNnCAkBBXZhbHVlAQUCZnQGYW1vdW50CAkBBXZhbHVlAQUCZnQHYXNzZXRJZAgJAQV2YWx1ZQEFAmZ1BmFtb3VudAgJAQV2YWx1ZQEFAmZ1B2Fzc2V0SWQFAmZzCQAAAgUCYWkCAAUCZFEFAmRSBQJkUwUCZFQFAmRVBAJkdgkBDXBhcnNlSW50VmFsdWUBCAUCZWQCXzgDAwMJAQJiaAAGCQAAAgUCZHYFAXIGCQAAAgUCZHYFAXQJAAIBCQCsAgICCEJsb2NrZWQ6CQCkAwEFAmR2BQJlZAECZnYFAmZ3AmRuAmRwAmFpAmZ4BAJkcgkA2AQBCQEFdmFsdWUBBQJieQQCZHMJANgEAQkBBXZhbHVlAQUCYnoEAmRxBQJieAQCZFgFAmJBBAJkWQUCYkIEAmVXCQC2AgEICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCZHECEGludmFsaWQgbHAgYXNzZXQIcXVhbnRpdHkEAmZ5AwkAvwICBQJlVwUBZQYJAAIBAiJpbml0aWFsIGRlcG9zaXQgcmVxdWlyZXMgYWxsIGNvaW5zAwkAAAIFAmZ5BQJmeQQCZHgJAQJiWAEFAmRyBAJkegkBAmJYAQUCZHMEAmZ6AwkAAAIFAmFpAgAJAJQKAgUCZHgFAmR6AwkAAAIFAmRuBQJkcgMJAGYCBQJmdwUCZHgJAAIBAhZpbnZhbGlkIHBheW1lbnQgYW1vdW50CQCUCgIJAGUCBQJkeAUCZncFAmR6AwkAAAIFAmRuBQJkcwMJAGYCBQJmdwUCZHoJAAIBAhZpbnZhbGlkIHBheW1lbnQgYW1vdW50CQCUCgIFAmR4CQBlAgUCZHoFAmZ3CQACAQIQd3JvbmcgcG10QXNzZXRJZAQCZkEIBQJmegJfMQQCZkIIBQJmegJfMgQCZkMDCQAAAgUCZG4FAmRyCQCUCgIFAmZ3AAADCQAAAgUCZG4FAmRzCQCUCgIAAAUCZncJAAIBAg9pbnZhbGlkIHBheW1lbnQEAmZECAUCZkMCXzEEAmZFCAUCZkMCXzIEAmZGAwUCZngJAJUKAwgJAQJjRgIFAmZEBQJiZAJfMQgJAQJjRgIFAmZFBQJiZAJfMQgJAQJjRgIFAmZ3BQJiZAJfMgkAlQoDBQJmRAUCZkUAAAQCZkcIBQJmRgJfMQQCZkgIBQJmRgJfMgQCY0gIBQJmRgJfMwQCZkkJAGQCBQJmQQUCZkcEAmZKCQBkAgUCZkIFAmZIBAJjbAkBAmNJAQkAzAgCCQEBSQIFAmZBBQJiQQkAzAgCCQEBSQIFAmZCBQJiQgUDbmlsBAJjawkBAmNJAQkAzAgCCQEBSQIFAmZJBQJiQQkAzAgCCQEBSQIFAmZKBQJiQgUDbmlsBAJlZQMJAL8CAgUCY2sFAmNsBgkBBXRocm93AAMJAAACBQJlZQUCZWUEAmZLCQC9AgQFAmVXCQC4AgIFAmNrBQJjbAUCY2wFBUZMT09SBAJkQwkBAU0CCQECYloCCQEBSQIFAmZKBQJkWQkBAUkCBQJmSQUCZFgFAWEEAmV4CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYWMABQJkQwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmFkAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCZEMJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFnAgUCZHAFAmFpCQECYkkKBQJmRAUCZkUJAKADAQUCZksFAmRDAAAAAAUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAAAAAAFA25pbAQCZkwJAGsDBQJmQgUBYQUCZkEEAmZNCQBrAwUCZncFAWEJAGQCBQJmTAUBYQQCZk4JAGUCBQJmdwUCZk0EAmZPCQC8AgMFAmVXCQC2AgEFAmZOCQC2AgEFAmZCBAJmUAkAoAMBCQC8AgMJALgCAgUCZksFAmZPBQFiBQJmTwkAlgoECQCgAwEFAmZLBQJleAUCY0gFAmZQCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJmUQYCZlICZlMCZlQCZnMCZlUCZlYEAmRxCQDYBAEJAQV2YWx1ZQEFAmJ4BAJkcgkA2AQBCQEFdmFsdWUBBQJieQQCZHMJANgEAQkBBXZhbHVlAQUCYnoEAmZXBQJiQQQCZlgFAmJCBAJmWQUCYncEAmRwAwkAAAIFAmZzBQJiSAUCZlUFAmZzBAJmcQkBBXZhbHVlAQkAkQMCBQJmVAAABAJkbgkBBXZhbHVlAQgFAmZxB2Fzc2V0SWQEAmRUCAUCZnEGYW1vdW50BAJlWAkBAmVRAwUBZQUBZQUBZQMJAAACBQJlWAUCZVgEAmRtCQDYBAEFAmZWAwkBAiE9AgUCZHEJANgEAQUCZG4JAAIBAghXcm9uZyBMUAQCZHgJAQJiWAEFAmRyBAJkegkBAmJYAQUCZHMEAmZaCgACYmUJAPwHBAUEdGhpcwITZ2V0T25lVGtuVjJSRUFET05MWQkAzAgCBQJmUgkAzAgCBQJkVAUDbmlsBQNuaWwDCQABAgUCYmUCCihJbnQsIEludCkFAmJlCQACAQkArAICCQADAQUCYmUCHyBjb3VsZG4ndCBiZSBjYXN0IHRvIChJbnQsIEludCkDCQAAAgUCZloFAmZaBAJjSAgFAmZaAl8yBAJnYQgFAmZaAl8xBAJnYgMDCQBmAgUCZlMAAAkAZgIFAmZTBQJnYQcJAQJiYQEJALkJAgkAzAgCAh9hbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZlMFA25pbAIABQJnYQQCZ2MDCQAAAgUCZlIFAmRyCQCWCgQFAmdiAAAJAGUCCQBlAgUCZHgFAmdiBQJjSAUCZHoDCQAAAgUCZlIFAmRzCQCWCgQAAAUCZ2IFAmR4CQBlAgkAZQIFAmR6BQJnYgUCY0gJAAIBAhRpbnZhbGlkIG91dCBhc3NldCBpZAQCZ2QIBQJnYwJfMQQCZ2UIBQJnYwJfMgQCZkkIBQJnYwJfMwQCZkoIBQJnYwJfNAQCZ2YJAQJiWgIJAQFJAgUCZkoFAmZYCQEBSQIFAmZJBQJmVwQCZ2cJAQFNAgUCZ2YFAWEEAmdoAwkAAAIFAmZSAgVXQVZFUwUEdW5pdAkA2QQBBQJmUgQCZ2kDCQBmAgUCY0gAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJiagUCY0gFAmdoBQNuaWwFA25pbAQCZEoJAM4IAgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJkcAUCZ2IFAmdoCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhagIJAKUIAQUCZHAFAmRtCQECYlQGBQJnZAUCZ2UFAmRUBQJnZwUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmFjAAUCZ2cJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJhZAIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmdnBQNuaWwFAmdpAwkAAAIFAmRKBQJkSgQCZ2oJAPwHBAUCYVUCBGJ1cm4JAMwIAgUCZFQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZG4FAmRUBQNuaWwDCQAAAgUCZ2oFAmdqBAJnawQCZ2wDCQAAAgUEdGhpcwUCYmoAAAUCY0gEAmdtAwkAAAIJAQJibwEFAmZSBQJieQYHAwUCZ20JAJQKAgkBAS0BCQBkAgUCZ2EFAmdsAAAJAJQKAgAACQEBLQEJAGQCBQJnYQUCZ2wEAmVaCAUCZ2sCXzEEAmZhCAUCZ2sCXzIEAmduCQECZVkDBQJlWgUCZmEAAAQCZ28IBQJnbgJfMQQCZVAIBQJnbgJfMgQCZ3AJAQJmYwIFAmVYBQJlUAMJAAACBQJncAUCZ3AJAJQKAgkAzggCBQJkSgUCZ28FAmdiCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJncQAEAmdyCQECYVMABAJhUQkAnQgCBQJncgkBAmFhAAMJAAECBQJhUQIGU3RyaW5nBAJhVgUCYVEJANkEAQUCYVYDCQABAgUCYVECBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgACZ3MJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAECZ3QBAmNYBAJhUQkBAmdxAAMJAAECBQJhUQIKQnl0ZVZlY3RvcgQCZ3UFAmFRCQAAAggFAmNYD2NhbGxlclB1YmxpY0tleQUCZ3UDCQABAgUCYVECBFVuaXQJAAACCAUCY1gGY2FsbGVyBQR0aGlzCQACAQILTWF0Y2ggZXJyb3IBAmd2AQJjWAQCYVEJAQJncQADCQABAgUCYVECCkJ5dGVWZWN0b3IEAmd1BQJhUQMJAAACCAUCY1gPY2FsbGVyUHVibGljS2V5BQJndQYFAmdzAwkAAQIFAmFRAgRVbml0AwkAAAIIBQJjWAZjYWxsZXIFBHRoaXMGBQJncwkAAgECC01hdGNoIGVycm9yAQJndwMCZ3gCZXoCZ3kEAmJzCQECYmsABAJkcgkAkQMCBQJicwUBeAQCZHMJAJEDAgUCYnMFAXkEAmVBBQFnBAJlQwkApwMBBQFtBAJhUgkAuQICCQCnAwEFAmJnBQJlQwQCY0oDCQAAAgUCZ3gHCQDMCAIJALcCAgkAtgIBCQECYlgBBQJkcgUCZ3kJAMwIAgkAtgIBCQECYlgBBQJkcwUDbmlsCQDMCAIJALcCAgkAtgIBCQECYlgBBQJkcwUCZ3kJAMwIAgkAtgIBCQECYlgBBQJkcgUDbmlsBAJlQgkAkQMCBQJjSgAABAJhVgUCZUIEAmNNCQC5AgIFAmFSBQJlQQQCZUQJALoCAgkAuQICCQC5AgIJALoCAgkAuQICBQJlegUCZXoJALkCAgUCZUIFAmVBBQJlegUCZUMJALkCAgUCY00FAmVBBAJlRQkAuAICCQC3AgIFAmFWCQC6AgIJALkCAgUCZXoFAmVDBQJjTQUCZXoKAQJjVgICY1cCZUYEAmd6BQJjVwQCZUgIBQJnegJfMQQCZGsIBQJnegJfMgMJAQIhPQIFAmRrBQR1bml0BQJjVwQCZUkJALoCAgkAtwICCQC5AgIFAmVIBQJlSAUCZUQJALcCAgkAuQICBQFnBQJlSAUCZUUEAmVKCQEBWQEJALgCAgUCZUkJAQV2YWx1ZQEFAmVIAwkAwAICBQFmBQJlSgkAlAoCBQJlSQUCZUYJAJQKAgUCZUkFBHVuaXQEAmRiCQDMCAIAAAkAzAgCAAEJAMwIAgACCQDMCAIAAwkAzAgCAAQJAMwIAgAFCQDMCAIABgkAzAgCAAcJAMwIAgAICQDMCAIACQkAzAgCAAoJAMwIAgALCQDMCAIADAkAzAgCAA0JAMwIAgAOBQNuaWwEAmdBCgACZGQFAmRiCgACZGUJAJADAQUCZGQKAAJkZgkAlAoCBQJlegUEdW5pdAoBAmRnAgJkaAJkaQMJAGcCBQJkaQUCZGUFAmRoCQECY1YCBQJkaAkAkQMCBQJkZAUCZGkKAQJkagICZGgCZGkDCQBnAgUCZGkFAmRlBQJkaAkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDE1CQECZGoCCQECZGcCCQECZGcCCQECZGcCCQECZGcCCQECZGcCCQECZGcCCQECZGcCCQECZGcCCQECZGcCCQECZGcCCQECZGcCCQECZGcCCQECZGcCCQECZGcCCQECZGcCBQJkZgAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPBAJlSAgFAmdBAl8xBAJkawgFAmdBAl8yAwkBAiE9AgUCZGsFBHVuaXQFAmVICQACAQkArAICAhlZIGNhbGN1bGF0aW9uIGVycm9yLCBZID0gCQCmAwEFAmVIAQJnQgAJAQt2YWx1ZU9yRWxzZQIJAJsIAgUCYVUJAQJhSAEJAKUIAQUEdGhpcwcbAmNYASFjYWxjdWxhdGVBbW91bnRPdXRGb3JTd2FwUkVBRE9OTFkDAmdDAmd4AmdEBAJnRQMJAAACBQJneAcEAmdGCQECYVcCBQR0aGlzCQECYWwABAJneQkAtwICCQC2AgEJAQJiWAEJAQJhVwIFBHRoaXMJAQJhawAJALYCAQUCZ0MJAJQKAgUCZ0YFAmd5BAJnRgkBAmFXAgUEdGhpcwkBAmFrAAQCZ3kJALcCAgkAtgIBCQECYlgBCQECYVcCBQR0aGlzCQECYWwACQC2AgEFAmdDCQCUCgIFAmdGBQJneQQCZ0YIBQJnRQJfMQQCZ3kIBQJnRQJfMgQCYnMJAQJiawAEAmRyCQCRAwIFAmJzBQF4BAJkcwkAkQMCBQJicwUBeQQCY0oJAMwIAgkAtgIBCQECYlgBBQJkcgkAzAgCCQC2AgEJAQJiWAEFAmRzBQNuaWwEAmV6CQECY0kBBQJjSgQCZUgJAQJndwMFAmd4BQJlegkAtgIBBQJnQwQCZ0cJALgCAgkAuAICCQC2AgEJAQJiWAEFAmdGBQJlSAkAtgIBAAEEAmdICQCWAwEJAMwIAgAACQDMCAIJAKADAQUCZ0cFA25pbAQCZ0kDCQAAAgUCZ3gHCQDMCAIJALcCAgkAtwICCQC2AgEJAQJiWAEFAmRyCQC2AgEFAmdDCQC2AgEFAmdECQDMCAIJALgCAgkAtgIBCQECYlgBBQJkcwUCZ0cFA25pbAkAzAgCCQC4AgIJALYCAQkBAmJYAQUCZHIFAmdHCQDMCAIJALcCAgkAtwICCQC2AgEJAQJiWAEFAmRzCQC2AgEFAmdDCQC2AgEFAmdEBQNuaWwEAmdKCQECY0kBBQJnSQQCZWUDCQDAAgIFAmdKBQJlegYJAAIBCQC5CQIJAMwIAgIUbmV3IEQgaXMgZmV3ZXIgZXJyb3IJAMwIAgkApgMBBQJlegkAzAgCCQCmAwEFAmdKBQNuaWwCAl9fAwkAAAIFAmVlBQJlZQkAlAoCBQNuaWwFAmdICQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmNYASZjYWxjdWxhdGVBbW91bnRPdXRGb3JTd2FwQW5kU2VuZFRva2VucwUCZ0MCZ3gCZ0sCZ0wCZ0QEAmdNCgACYmUJAPwHBAUCYVUCF2dldFN3YXBDb250cmFjdFJFQURPTkxZBQNuaWwFA25pbAMJAAECBQJiZQIGU3RyaW5nBQJiZQkAAgEJAKwCAgkAAwEFAmJlAhsgY291bGRuJ3QgYmUgY2FzdCB0byBTdHJpbmcEAmdOCgACYmUJAPwHBAUCYVUCGmlzUG9vbFN3YXBEaXNhYmxlZFJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCYmUCB0Jvb2xlYW4FAmJlCQACAQkArAICCQADAQUCYmUCHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4EAmdPAwMJAQJiaAAGCQAAAgUCYncFAXQGBQJnTgQCZ1AJAMwIAgMDCQEBIQEFAmdPBgkBAmd0AQUCY1gGCQECYmEBAiJzd2FwIG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluCQDMCAIDCQBnAggJAQV2YWx1ZQEJAJEDAggFAmNYCHBheW1lbnRzAAAGYW1vdW50BQJnQwYJAQJiYQECDFdyb25nIGFtb3VudAkAzAgCAwkAAAIIBQJjWAZjYWxsZXIJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAmdNBgkBAmJhAQIRUGVybWlzc2lvbiBkZW5pZWQFA25pbAMJAAACBQJnUAUCZ1AEAmZxCQEFdmFsdWUBCQCRAwIIBQJjWAhwYXltZW50cwAABAJnUQkBAmJxAQgFAmZxB2Fzc2V0SWQEAmdSAwkAAAIFAmd4BwQCZ0YJAQJhVwIFBHRoaXMJAQJhbAAEAmd5CQBlAgkBAmJYAQUCZ1EICQEFdmFsdWUBCQCRAwIIBQJjWAhwYXltZW50cwAABmFtb3VudAkAlAoCBQJnRgUCZ3kEAmdGCQECYVcCBQR0aGlzCQECYWsABAJneQkAZQIJAQJiWAEFAmdRCAkBBXZhbHVlAQkAkQMCCAUCY1gIcGF5bWVudHMAAAZhbW91bnQJAJQKAgUCZ0YFAmd5BAJnRggFAmdSAl8xBAJneQgFAmdSAl8yBAJicwkBAmJrAAQCZHIJAJEDAgUCYnMFAXgEAmRzCQCRAwIFAmJzBQF5BAJjSgMJAAACBQJneAcJAMwIAgkAuAICCQC2AgEJAQJiWAEFAmRyCQC2AgEICQEFdmFsdWUBCQCRAwIIBQJjWAhwYXltZW50cwAABmFtb3VudAkAzAgCCQC2AgEJAQJiWAEFAmRzBQNuaWwJAMwIAgkAtgIBCQECYlgBBQJkcgkAzAgCCQC4AgIJALYCAQkBAmJYAQUCZHMJALYCAQgJAQV2YWx1ZQEJAJEDAggFAmNYCHBheW1lbnRzAAAGYW1vdW50BQNuaWwEAmV6CQECY0kBBQJjSgQCZUgJAQJndwMFAmd4BQJlegkAtgIBAAAEAmdHCQC4AgIJALgCAgkAtgIBCQECYlgBBQJnRgUCZUgJALYCAQABBAJnSAkAlgMBCQDMCAIAAAkAzAgCCQCgAwEFAmdHBQNuaWwEAmdTAwkAZwIFAmdIBQJnSwYJAAIBAixFeGNoYW5nZSByZXN1bHQgaXMgZmV3ZXIgY29pbnMgdGhhbiBleHBlY3RlZAMJAAACBQJnUwUCZ1MEAmdJAwkAAAIFAmd4BwkAzAgCCQC3AgIJALYCAQkBAmJYAQUCZHIJALYCAQUCZ0QJAMwIAgkAuAICCQC2AgEJAQJiWAEFAmRzBQJnRwUDbmlsCQDMCAIJALgCAgkAtgIBCQECYlgBBQJkcgUCZ0cJAMwIAgkAtwICCQC2AgEJAQJiWAEFAmRzCQC2AgEFAmdEBQNuaWwEAmdKCQECY0kBBQJnSQQCZWUDCQDAAgIFAmdKBQJlegYJAAIBAhRuZXcgRCBpcyBmZXdlciBlcnJvcgMJAAACBQJlZQUCZWUEAmVaAwUCZ3gJAQEtAQUCZ0gFAmdEBAJmYQMFAmd4BQJnRAkBAS0BBQJnSAQCZ28ICQECZVkDBQJlWgUCZmEAAAJfMQMJAAACBQJnbwUCZ28JAJQKAgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQERQGV4dHJOYXRpdmUoMTA2MikBBQJnTAUCZ0gJAQJibwEFAmdGBQNuaWwFAmdICQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmNYAQtjb25zdHJ1Y3RvcgEBWgQCZUQJAQJndgEFAmNYAwkAAAIFAmVEBQJlRAkAzAgCCQELU3RyaW5nRW50cnkCCQEBWgAFAVoFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJjWAEDcHV0AgJnVAJnVQQCZ1YJAQJiQwAEAmdXCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJnVgUBRAIKV3Igc3QgYWRkcgQCZ1gJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmdWBQFGAgpXciBzbCBhZGRyAwkAZgIAAAUCZ1QJAAIBAg5Xcm9uZyBzbGlwcGFnZQMJAQIhPQIJAJADAQgFAmNYCHBheW1lbnRzAAIJAAIBAgwyIHBtbnRzIGV4cGQEAmdZCQC2AgEICQEFdmFsdWUBCQCRAwIIBQJjWAhwYXltZW50cwAABmFtb3VudAQCZ1oJALYCAQgJAQV2YWx1ZQEJAJEDAggFAmNYCHBheW1lbnRzAAEGYW1vdW50BAJlVQkAuAICCQC2AgEJAQJiWAEJAQJicQEFAmJ5BQJnWQMJAAACBQJlVQUCZVUEAmVWCQC4AgIJALYCAQkBAmJYAQkBAmJxAQUCYnoFAmdaAwkAAAIFAmVWBQJlVgQCZVcJALYCAQgJAQV2YWx1ZQEJAOwHAQUCYngIcXVhbnRpdHkDCQAAAgUCZVcFAmVXBAJlWAkBAmVRAwUCZ1kFAmdaCQC2AgEAAAMJAAACBQJlWAUCZVgEAmhhCQECZnIKCQClCAEIBQJjWAZjYWxsZXIJANgEAQgFAmNYDXRyYW5zYWN0aW9uSWQJAQ9BdHRhY2hlZFBheW1lbnQCCAkBBXZhbHVlAQkAkQMCCAUCY1gIcGF5bWVudHMAAAdhc3NldElkCAkBBXZhbHVlAQkAkQMCCAUCY1gIcGF5bWVudHMAAAZhbW91bnQJAJEDAggFAmNYCHBheW1lbnRzAAEFAmdUBgcGAAACAAQCZXIIBQJoYQJfMgQCaGIIBQJoYQJfNwQCZEoIBQJoYQJfOQQCZXMIBQJoYQNfMTAEAmV0CAUCaGEDXzExBAJkcggFAmhhA18xMgQCZHMIBQJoYQNfMTMEAmVkCQD8BwQFAmFVAgRlbWl0CQDMCAIFAmVyBQNuaWwFA25pbAMJAAACBQJlZAUCZWQEAmhjBAJhUQUCZWQDCQABAgUCYVECB0FkZHJlc3MEAmhkBQJhUQkA/AcEBQJoZAIEZW1pdAkAzAgCBQJlcgUDbmlsBQNuaWwFBHVuaXQDCQAAAgUCaGMFAmhjBAJoZQMJAGYCBQJlcwAACQD8BwQFAmdYAgNwdXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZHIFAmVzBQNuaWwFA25pbAMJAAACBQJoZQUCaGUEAmhmAwkAZgIFAmV0AAAJAPwHBAUCZ1gCA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJkcwUCZXQFA25pbAUDbmlsAwkAAAIFAmhmBQJoZgQCaGcDBQJnVQQCaGgJAPwHBAUCZ1cCBXN0YWtlBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmhiBQJlcgUDbmlsAwkAAAIFAmhoBQJoaAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQJjWAZjYWxsZXIFAmVyBQJoYgUDbmlsBAJoaQkBAmVZAwAAAAAAAAQCZ28IBQJoaQJfMQQCZVAIBQJoaQJfMgQCaGoDCQDAAgIFAmVQBQJlWAYJAQJiYQEJALkJAgkAzAgCAiJ1cGRhdGVkIERMcCBsb3dlciB0aGFuIGN1cnJlbnQgRExwCQDMCAIJAKYDAQUCZVUJAMwIAgkApgMBBQJlVgkAzAgCCQCmAwEFAmVXCQDMCAIJAKYDAQUCZVgJAMwIAgkApgMBBQJlUAkAzAgCCQCkAwEFAmVzCQDMCAIJAKQDAQUCZXQFA25pbAIBIAMJAAACBQJoagUCaGoEAmhrCAkBBXZhbHVlAQkA7AcBBQJieAhxdWFudGl0eQMJAAACBQJoawUCaGsJAM4IAgkAzggCBQJkSgUCaGcFAmdvCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmNYAQtwdXRPbmVUa25WMgICZlMCZ1UEAmhsCgACYmUJAPwHBAUCYVUCKGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJiZQIHQm9vbGVhbgUCYmUJAAIBCQCsAgIJAAMBBQJiZQIcIGNvdWxkbid0IGJlIGNhc3QgdG8gQm9vbGVhbgQCaG0DAwMJAQJiaAAGCQAAAgUCYncFAXIGCQAAAgUCYncFAXQGBQJobAQCZ1AJAMwIAgMDCQEBIQEFAmhtBgkBAmd0AQUCY1gGCQECYmEBAiFwdXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJjWAhwYXltZW50cwABBgkBAmJhAQIeZXhhY3RseSAxIHBheW1lbnQgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZ1AFAmdQBAJkcgkA2AQBCQEFdmFsdWUBBQJieQQCZHMJANgEAQkBBXZhbHVlAQUCYnoEAmRxBQJieAQCZlcFAmJBBAJmWAUCYkIEAmRwAwkAAAIIBQJjWAZjYWxsZXIFBHRoaXMIBQJjWAxvcmlnaW5DYWxsZXIIBQJjWAZjYWxsZXIEAmZxCQEFdmFsdWUBCQCRAwIIBQJjWAhwYXltZW50cwAABAJkbgkA2AQBCQEFdmFsdWUBCAUCZnEHYXNzZXRJZAQCZFQIBQJmcQZhbW91bnQEAmVYAwkAAAIIBQJmcQdhc3NldElkBQJieQkBAmVRAwkAtgIBBQJkVAkAtgIBAAAJALYCAQAACQECZVEDCQC2AgEAAAkAtgIBBQJkVAkAtgIBAAADCQAAAgUCZVgFAmVYBAJobgkBAmZ2BQUCZFQFAmRuCQClCAEFAmRwCQDYBAEIBQJjWA10cmFuc2FjdGlvbklkBgMJAAACBQJobgUCaG4EAmNICAUCaG4CXzMEAmRKCAUCaG4CXzIEAmhvCAUCaG4CXzEEAmVyAwMJAGYCBQJmUwAACQBmAgUCZlMFAmhvBwkBAmJhAQkAuQkCCQDMCAICH2Ftb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJmUwUDbmlsAgAFAmhvBAJoYQkA/AcEBQJhVQIEZW1pdAkAzAgCBQJlcgUDbmlsBQNuaWwDCQAAAgUCaGEFAmhhBAJoYwQCYVEFAmhhAwkAAQIFAmFRAgdBZGRyZXNzBAJoZAUCYVEJAPwHBAUCaGQCBGVtaXQJAMwIAgUCZXIFA25pbAUDbmlsBQR1bml0AwkAAAIFAmhjBQJoYwQCaGcDBQJnVQQCaGgJAPwHBAUCYkUCCHN0YWtlRm9yCQDMCAIJAKUIAQgFAmNYBmNhbGxlcgUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJkcQUCZXIFA25pbAMJAAACBQJoaAUCaGgFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUCY1gGY2FsbGVyBQJlcgUCZHEFA25pbAQCZ2kDCQBmAgUCY0gAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJiagUCY0gJANkEAQUCZG4FA25pbAUDbmlsBAJocAMJAAACBQR0aGlzBQJiagkAlAoCAAAAAAQCaHEDCQAAAggFAmZxB2Fzc2V0SWQFAmJ5BgcDBQJocQkAlAoCCQEBLQEFAmNIAAAJAJQKAgAACQEBLQEFAmNIBAJlWggFAmhwAl8xBAJmYQgFAmhwAl8yBAJocgkBAmVZAwUCZVoFAmZhAAAEAmdvCAUCaHICXzEEAmVQCAUCaHICXzIEAmdwCQECZmMCBQJlWAUCZVADCQAAAgUCZ3AFAmdwCQCUCgIJAM4IAgkAzggCCQDOCAIFAmRKBQJoZwUCZ2kFAmdvBQJlcgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJjWAEKcHV0Rm9yRnJlZQECaHMDCQBmAgAABQJocwkAAgECCldyb25nIHNscGcDCQECIT0CCQCQAwEIBQJjWAhwYXltZW50cwACCQACAQIMMiBwbW50cyBleHBkBAJodAkBAmZyCgkApQgBCAUCY1gGY2FsbGVyCQDYBAEIBQJjWA10cmFuc2FjdGlvbklkCQEPQXR0YWNoZWRQYXltZW50AggJAQV2YWx1ZQEJAJEDAggFAmNYCHBheW1lbnRzAAAHYXNzZXRJZAgJAQV2YWx1ZQEJAJEDAggFAmNYCHBheW1lbnRzAAAGYW1vdW50CQCRAwIIBQJjWAhwYXltZW50cwABBQJocwcHBgAAAgAEAmRKCAUCaHQCXzkEAmdZCQC2AgEICQEFdmFsdWUBCQCRAwIIBQJjWAhwYXltZW50cwAABmFtb3VudAQCZ1oJALYCAQgJAQV2YWx1ZQEJAJEDAggFAmNYCHBheW1lbnRzAAEGYW1vdW50BAJlWAkBAmVRAwUCZ1kFAmdaCQC2AgEAAAMJAAACBQJlWAUCZVgEAmh1CQECZVkDAAAAAAAABAJnbwgFAmh1Al8xBAJlUAgFAmh1Al8yBAJncAkBAmZjAgUCZVgFAmVQAwkAAAIFAmdwBQJncAkAzggCBQJkSgUCZ28JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CY1gBA2dldAAEAmVYCQECZVEDCQC2AgEAAAkAtgIBAAAJALYCAQAAAwkAAAIFAmVYBQJlWAQCZWQJAQJmcAEFAmNYBAJodggFAmVkAl8xBAJkSQgFAmVkAl8yBAJkVAgFAmVkAl8zBAJkbggFAmVkAl80BAJkSggFAmVkAl81BAJlRQkA/AcEBQJhVQIEYnVybgkAzAgCBQJkVAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJkbgUCZFQFA25pbAMJAAACBQJlRQUCZUUEAmh3CQECZVkDCQEBLQEFAmh2CQEBLQEFAmRJAAAEAmdvCAUCaHcCXzEEAmVQCAUCaHcCXzIEAmdwCQECZmMCBQJlWAUCZVADCQAAAgUCZ3AFAmdwCQDOCAIFAmRKBQJnbwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJjWAELZ2V0T25lVGtuVjICAmZSAmZTBAJobAoAAmJlCQD8BwQFAmFVAihpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZFJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCYmUCB0Jvb2xlYW4FAmJlCQACAQkArAICCQADAQUCYmUCHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4EAmh4AwMJAQJiaAAGCQAAAgUCYncFAXQGBQJobAQCZ1AJAMwIAgMDCQEBIQEFAmh4BgkBAmd0AQUCY1gGCQECYmEBAiFnZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJjWAhwYXltZW50cwABBgkBAmJhAQIeZXhhY3RseSAxIHBheW1lbnQgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZ1AFAmdQBAJoeQkBAmZRBgUCZlIFAmZTCAUCY1gIcGF5bWVudHMIBQJjWAZjYWxsZXIIBQJjWAxvcmlnaW5DYWxsZXIIBQJjWA10cmFuc2FjdGlvbklkBAJkSggFAmh5Al8xBAJnYggFAmh5Al8yCQCUCgIFAmRKBQJnYgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJjWAEKcmVmcmVzaERMcAAEAmh6CQELdmFsdWVPckVsc2UCCQCfCAEFAmF0AAAEAmhBAwkAZwIJAGUCBQZoZWlnaHQFAmh6BQJhdwUEdW5pdAkBAmJhAQkAuQkCCQDMCAIJAKQDAQUCYXcJAMwIAgIvIGJsb2NrcyBoYXZlIG5vdCBwYXNzZWQgc2luY2UgdGhlIHByZXZpb3VzIGNhbGwFA25pbAIAAwkAAAIFAmhBBQJoQQQCZmoJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAqAMBCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMFAmFzAgEwCQECYmMBAgtpbnZhbGlkIGRMcAQCaEIJAQJlWQMAAAAAAAAEAmhDCAUCaEICXzEEAmVQCAUCaEICXzIEAmZiAwkBAiE9AgUCZmoFAmVQBQJoQwkBAmJhAQISbm90aGluZyB0byByZWZyZXNoCQCUCgIFAmZiCQCmAwEFAmVQCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmNYARNnZXRPbmVUa25WMlJFQURPTkxZAgJmUgJoRAQCZHIJANgEAQkBBXZhbHVlAQUCYnkEAmRzCQDYBAEJAQV2YWx1ZQEFAmJ6BAJkcQkA2AQBCQEFdmFsdWUBBQJieAQCY0oJAMwIAgkAtgIBCQECYlgBBQJkcgkAzAgCCQC2AgEJAQJiWAEFAmRzBQNuaWwEAmVPCQC2AgEICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQkA2QQBBQJkcQIQaW52YWxpZCBscCBhc3NldAhxdWFudGl0eQQCY2wJAQJjSQEFAmNKBAJjawkAuAICBQJjbAkAvAIDCQC2AgEFAmhEBQJjbAUCZU8EAmhFAwkAAAIFAmZSBQJkcgAAAwkAAAIFAmZSBQJkcwABCQACAQIUaW52YWxpZCBvdXQgYXNzZXQgaWQEAmhGCQECZXkDBQJjSgUCaEUFAmNrBAJnRwkAuAICCQCRAwIFAmNKBQJoRQUCaEYEAmdICQCWAwEJAMwIAgAACQDMCAIJAKADAQkAuAICBQJnRwUBZgUDbmlsBAJoRwkBAmNGAgUCZ0gFAmJmBAJnYQgFAmhHAl8xBAJjSAgFAmhHAl8yCQCUCgIFA25pbAkAlAoCBQJnYQUCY0gCY1gBHGdldE9uZVRrblYyV2l0aEJvbnVzUkVBRE9OTFkCAmZSAmhEBAJkcgkA2AQBCQEFdmFsdWUBBQJieQQCZHMJANgEAQkBBXZhbHVlAQUCYnoEAmRxCQDYBAEJAQV2YWx1ZQEFAmJ4BAJkeAkBAmJYAQUCZHIEAmR6CQECYlgBBQJkcwQCaEgKAAJiZQkA/AcEBQR0aGlzAhNnZXRPbmVUa25WMlJFQURPTkxZCQDMCAIFAmZSCQDMCAIFAmhEBQNuaWwFA25pbAMJAAECBQJiZQIKKEludCwgSW50KQUCYmUJAAIBCQCsAgIJAAMBBQJiZQIfIGNvdWxkbid0IGJlIGNhc3QgdG8gKEludCwgSW50KQQCZ2EIBQJoSAJfMQQCY0gIBQJoSAJfMgQCZWQJAQJkbAQCAAUCZHEFAmhEBQR0aGlzBAJkSAgFAmVkAl8xBAJkSQgFAmVkAl8yBAJoSQkAZAIFAmRIBQJkSQQCZlADCQAAAgUCaEkAAAMJAAACBQJnYQAAAAAJAAIBAhdib251cyBjYWxjdWxhdGlvbiBlcnJvcgkAawMJAGUCBQJnYQUCaEkFAWEFAmhJCQCUCgIFA25pbAkAlQoDBQJnYQUCY0gFAmZQAmNYAQlnZXROb0xlc3MCAmhKAmhLBAJlZAkBAmZwAQUCY1gEAmRICAUCZWQCXzEEAmRJCAUCZWQCXzIEAmRUCAUCZWQCXzMEAmRuCAUCZWQCXzQEAmRKCAUCZWQCXzUDCQBmAgUCaEoFAmRICQACAQkArAICCQCsAgIJAKwCAgIJRmFpbGVkOiAgCQCkAwEFAmRIAgMgPCAJAKQDAQUCaEoDCQBmAgUCaEsFAmRJCQACAQkArAICCQCsAgIJAKwCAgIIRmFpbGVkOiAJAKQDAQUCZEkCAyA8IAkApAMBBQJoSwQCZVgJAQJlUQMJALYCAQAACQC2AgEAAAkAtgIBAAADCQAAAgUCZVgFAmVYBAJoTAkA/AcEBQJhVQIEYnVybgkAzAgCBQJkVAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJkbgUCZFQFA25pbAMJAAACBQJoTAUCaEwEAmhNCQECZVkDCQEBLQEFAmRICQEBLQEFAmRJAAAEAmdvCAUCaE0CXzEEAmVQCAUCaE0CXzIEAmdwCQECZmMCBQJlWAUCZVADCQAAAgUCZ3AFAmdwCQDOCAIFAmRKBQJnbwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJjWAENdW5zdGFrZUFuZEdldAECY0cEAmhOAwkBAiE9AgkAkAMBCAUCY1gIcGF5bWVudHMAAAkAAgECDU5vIHBtbnRzIGV4cGQGAwkAAAIFAmhOBQJoTgQCaE8JAQJiQwAEAmhiBQJieAQCaFAJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmhPBQFEAgpXciBzdCBhZGRyBAJlWAkBAmVRAwkAtgIBAAAJALYCAQAACQC2AgEAAAMJAAACBQJlWAUCZVgEAmhRCQD8BwQFAmhQAgd1bnN0YWtlCQDMCAIJANgEAQUCaGIJAMwIAgUCY0cFA25pbAUDbmlsAwkAAAIFAmhRBQJoUQQCZWQJAQJkbAQJANgEAQgFAmNYDXRyYW5zYWN0aW9uSWQJANgEAQUCaGIFAmNHCAUCY1gGY2FsbGVyBAJkSAgFAmVkAl8xBAJkSQgFAmVkAl8yBAJkdgkBDXBhcnNlSW50VmFsdWUBCAUCZWQCXzkEAmRKCAUCZWQDXzEwBAJoUgMDCQECYmgABgkAAAIFAmR2BQF0CQACAQkArAICAglCbG9ja2VkOiAJAKQDAQUCZHYGAwkAAAIFAmhSBQJoUgQCaFMJAPwHBAUCYVUCBGJ1cm4JAMwIAgUCY0cFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCaGIFAmNHBQNuaWwDCQAAAgUCaFMFAmhTBAJoVAkBAmVZAwkBAS0BBQJkSAkBAS0BBQJkSQAABAJnbwgFAmhUAl8xBAJlUAgFAmhUAl8yBAJncAkBAmZjAgUCZVgFAmVQAwkAAAIFAmdwBQJncAkAzggCBQJkSgUCZ28JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CY1gBE3Vuc3Rha2VBbmRHZXROb0xlc3MDAmhVAmhWAmhLBAJoeAMJAQJiaAAGCQAAAgUCYncFAXQEAmdQCQDMCAIDCQEBIQEFAmh4BgkAAgECIWdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbgkAzAgCAwkAAAIJAJADAQgFAmNYCHBheW1lbnRzAAAGCQACAQIYbm8gcGF5bWVudHMgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZ1AFAmdQBAJlWAkBAmVRAwkAtgIBAAAJALYCAQAACQC2AgEAAAMJAAACBQJlWAUCZVgEAmhRCQD8BwQFAmJFAgd1bnN0YWtlCQDMCAIJANgEAQUCYngJAMwIAgUCaFUFA25pbAUDbmlsAwkAAAIFAmhRBQJoUQQCaFcJAQJkbAQJANgEAQgFAmNYDXRyYW5zYWN0aW9uSWQJANgEAQUCYngFAmhVCAUCY1gGY2FsbGVyBAJkSAgFAmhXAl8xBAJkSQgFAmhXAl8yBAJkSggFAmhXA18xMAQCaFgJAMwIAgMJAGcCBQJkSAUCaFYGCQACAQkAuQkCCQDMCAICLGFtb3VudCBhc3NldCBhbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCaFYFA25pbAIACQDMCAIDCQBnAgUCZEkFAmhLBgkAAgEJALkJAgkAzAgCAitwcmljZSBhc3NldCBhbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCaEsFA25pbAIABQNuaWwDCQAAAgUCaFgFAmhYBAJoTAkA/AcEBQJhVQIEYnVybgkAzAgCBQJoVQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJieAUCaFUFA25pbAMJAAACBQJoTAUCaEwEAmhZCQECZVkDCQEBLQEFAmRICQEBLQEFAmRJAAAEAmdvCAUCaFkCXzEEAmVQCAUCaFkCXzIEAmdwCQECZmMCBQJlWAUCZVADCQAAAgUCZ3AFAmdwCQDOCAIFAmRKBQJnbwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJjWAEVdW5zdGFrZUFuZEdldE9uZVRrblYyAwJoVQJmUgJmUwQCaGwKAAJiZQkA/AcEBQJhVQIoaXNQb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWRSRUFET05MWQkAzAgCCQClCAEFBHRoaXMFA25pbAUDbmlsAwkAAQIFAmJlAgdCb29sZWFuBQJiZQkAAgEJAKwCAgkAAwEFAmJlAhwgY291bGRuJ3QgYmUgY2FzdCB0byBCb29sZWFuBAJoeAMDCQECYmgABgkAAAIFAmJ3BQF0BgUCaGwEAmdQCQDMCAIDAwkBASEBBQJoeAYJAQJndAEFAmNYBgkBAmJhAQIhZ2V0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluCQDMCAIDCQAAAgkAkAMBCAUCY1gIcGF5bWVudHMAAAYJAQJiYQECGG5vIHBheW1lbnRzIGFyZSBleHBlY3RlZAUDbmlsAwkAAAIFAmdQBQJnUAQCaE8JAQJiQwAEAmhiBQJieAQCaFAJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmhPBQFEAgpXciBzdCBhZGRyBAJkcAgFAmNYBmNhbGxlcgQCaFoFBHRoaXMEAmhRCQD8BwQFAmhQAg91bnN0YWtlSU5URVJOQUwJAMwIAgUCaGIJAMwIAgUCaFUJAMwIAggFAmRwBWJ5dGVzCQDMCAIIBQJoWgVieXRlcwUDbmlsBQNuaWwDCQAAAgUCaFEFAmhRBAJpYQkBAmZRBgUCZlIFAmZTCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJoYgUCaFUFA25pbAgFAmNYBmNhbGxlcggFAmNYDG9yaWdpbkNhbGxlcggFAmNYDXRyYW5zYWN0aW9uSWQEAmRKCAUCaWECXzEEAmdiCAUCaWECXzIJAJQKAgUCZEoFAmdiCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmNYARxwdXRPbmVUa25WMldpdGhCb251c1JFQURPTkxZAgJpYgJpYwQCaWQJAQJmdgUFAmliBQJpYwIAAgAGBAJmSwgFAmlkAl8xBAJkSggFAmlkAl8yBAJjSAgFAmlkAl8zBAJmUAgFAmlkAl80CQCUCgIFA25pbAkAlQoDBQJmSwUCY0gFAmZQAmNYASFwdXRPbmVUa25WMldpdGhvdXRUYWtlRmVlUkVBRE9OTFkCAmliAmljBAJpZQkBAmZ2BQUCaWIFAmljAgACAAcEAmZLCAUCaWUCXzEEAmRKCAUCaWUCXzIEAmNICAUCaWUCXzMEAmZQCAUCaWUCXzQJAJQKAgUDbmlsCQCVCgMFAmZLBQJjSAUCZlACY1gBCGFjdGl2YXRlAgJpZgJpZwMJAQIhPQIJAKUIAQgFAmNYBmNhbGxlcgkApQgBBQJhVQkAAgECBmRlbmllZAkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhawAFAmlmCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhbAAFAmlnCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhbQAJAKQDAQUBbAkAzAgCCQELU3RyaW5nRW50cnkCCQECYW4BBQZoZWlnaHQJAKQDAQUBbAUDbmlsAgdzdWNjZXNzAmNYARxnZXRQb29sQ29uZmlnV3JhcHBlclJFQURPTkxZAAkAlAoCBQNuaWwJAQJiawACY1gBHGdldEFjY0JhbGFuY2VXcmFwcGVyUkVBRE9OTFkBAmJZCQCUCgIFA25pbAkBAmJYAQUCYlkCY1gBGWNhbGNQcmljZXNXcmFwcGVyUkVBRE9OTFkDAmNyAmNzAmN3BAJpaAkBAmN2AwUCY3IFAmNzBQJjdwkAlAoCBQNuaWwJAMwIAgkApgMBCQCRAwIFAmloAAAJAMwIAgkApgMBCQCRAwIFAmloAAEJAMwIAgkApgMBCQCRAwIFAmloAAIFA25pbAJjWAEWZnJvbVgxOFdyYXBwZXJSRUFET05MWQIBTgJpaQkAlAoCBQNuaWwJAQFNAgkApwMBBQFOBQJpaQJjWAEUdG9YMThXcmFwcGVyUkVBRE9OTFkCAUoBSwkAlAoCBQNuaWwJAKYDAQkBAUkCBQFKBQFLAmNYAR5jYWxjUHJpY2VCaWdJbnRXcmFwcGVyUkVBRE9OTFkCAmNhAmNiCQCUCgIFA25pbAkApgMBCQECYloCCQCnAwEFAmNhCQCnAwEFAmNiAmNYASNlc3RpbWF0ZVB1dE9wZXJhdGlvbldyYXBwZXJSRUFET05MWQkCZG0CY2cCZEwCZE0CZE4CZE8CaWoCZFACZFEJAJQKAgUDbmlsCQECZEsNBQJkbQUCY2cFAmRMBQJkTQUCZE4FAmRPBQJpagUCZFAFAmRRBgcAAAIAAmNYASNlc3RpbWF0ZUdldE9wZXJhdGlvbldyYXBwZXJSRUFET05MWQQCZG0CaWsCZG8CaWoEAmVkCQECZGwEBQJkbQUCaWsFAmRvCQERQGV4dHJOYXRpdmUoMTA2MikBBQJpagkAlAoCBQNuaWwJAJwKCggFAmVkAl8xCAUCZWQCXzIIBQJlZAJfMwgFAmVkAl80CAUCZWQCXzUIBQJlZAJfNggFAmVkAl83CQCmAwEIBQJlZAJfOAgFAmVkAl85CAUCZWQDXzEwAmNYAQljaGFuZ2VBbXAABAJpbAkA/AcEBQJhVQIaZ2V0Q2hhbmdlQW1wQ29uZmlnUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAQCaW0EAmFRBQJpbAMJAAECBQJhUQIJTGlzdFtBbnldBAJpbgUCYVEJAJUKAwoAAmJlCQCRAwIFAmluAAADCQABAgUCYmUCA0ludAUCYmUJAAIBCQCsAgIJAAMBBQJiZQIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50CgACYmUJAJEDAgUCaW4AAQMJAAECBQJiZQIDSW50BQJiZQkAAgEJAKwCAgkAAwEFAmJlAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQKAAJiZQkAkQMCBQJpbgACAwkAAQIFAmJlAgNJbnQFAmJlCQACAQkArAICCQADAQUCYmUCGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAkBAmJhAQISaW52YWxpZCBlbnRyeSB0eXBlBAJpbwgFAmltAl8xBAJpcAgFAmltAl8yBAJpcQgFAmltAl8zBAJpcgkBDXBhcnNlSW50VmFsdWUBCQERQGV4dHJOYXRpdmUoMTA1OCkBCQECYW0ABAJpcwkAZAIFAmlyBQJpcAQCaXQDCQBmAgAABQJpcAMJAGYCBQJpcQUCaXMFAmlxBQJpcwMJAGYCBQJpcwUCaXEFAmlxBQJpcwQCaXUJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBAmFwAAAABAJpdgkAZAIFAml1BQJpbwQCZ1AJAMwIAgMJAGYCBQZoZWlnaHQFAml2BgkBAmJhAQIXdHJ5IGFnYWluIGluIGZldyBibG9ja3MJAMwIAgMJAQIhPQIFAmlyBQJpdAYJAQJiYQECFmFscmVhZHkgcmVhY2hlZCB0YXJnZXQFA25pbAMJAAACBQJnUAUCZ1AJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJhcAAFBmhlaWdodAkAzAgCCQELU3RyaW5nRW50cnkCCQECYW0ACQCkAwEFAml0CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhbgEFBmhlaWdodAkApAMBBQJpdAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJpdwECaXgABAJpeQQCYVEJAQJncQADCQABAgUCYVECCkJ5dGVWZWN0b3IEAmd1BQJhUQUCZ3UDCQABAgUCYVECBFVuaXQIBQJpdw9zZW5kZXJQdWJsaWNLZXkJAAIBAgtNYXRjaCBlcnJvcgQCYVEFAml3AwkAAQIFAmFRAgVPcmRlcgQCZmYFAmFRBAJpegkBAmJpAAQCaUEDCQECZ0IACQCUCgIGAgAJAQJmZQEFAmZmBAJhSwgFAmlBAl8xBAJhTAgFAmlBAl8yBAJhTQkA9AMDCAUCZmYJYm9keUJ5dGVzCQCRAwIIBQJmZgZwcm9vZnMAAAgFAmZmD3NlbmRlclB1YmxpY0tleQQCYU4JAPQDAwgFAmZmCWJvZHlCeXRlcwkAkQMCCAUCZmYGcHJvb2ZzAAEFAml6AwMDBQJhSwUCYU0HBQJhTgcGCQECYUoEBQJhSwUCYUwFAmFNBQJhTgMJAAECBQJhUQIUU2V0U2NyaXB0VHJhbnNhY3Rpb24EAmFWBQJhUQMJAPQDAwgFAml3CWJvZHlCeXRlcwkAkQMCCAUCaXcGcHJvb2ZzAAAFAml5BgQCaUIJAPYDAQkBBXZhbHVlAQgFAmFWBnNjcmlwdAQCaUMJANsEAQkBBXZhbHVlAQkAnQgCBQJhVQkBAmFGAAQCaUQJAPEHAQUEdGhpcwMJAAACBQJpQwUCaUIJAQIhPQIFAmlEBQJpQgcJAPQDAwgFAml3CWJvZHlCeXRlcwkAkQMCCAUCaXcGcHJvb2ZzAAAFAml5eBH12Q==", "height": 2714641, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 6faV9THtV3Ht8RK8hmYbgKanU8j9sfbGT5CHzZVH2r1W Next: 2QsYKjvWTjZf3jfQy11m2oprjWQsoovwi92ZRJamfLUS Diff:
OldNewDifferences
10201020 then be
10211021 else throw(($getType(be) + " couldn't be cast to String"))
10221022 }
1023- let gN = [if ((value(cX.payments[0]).amount >= gC))
1023+ let gN = {
1024+ let be = invoke(aU, "isPoolSwapDisabledREADONLY", [toString(this)], nil)
1025+ if ($isInstanceOf(be, "Boolean"))
1026+ then be
1027+ else throw(($getType(be) + " couldn't be cast to Boolean"))
1028+ }
1029+ let gO = if (if (bh())
1030+ then true
1031+ else (bw == t))
1032+ then true
1033+ else gN
1034+ let gP = [if (if (!(gO))
1035+ then true
1036+ else gt(cX))
1037+ then true
1038+ else ba("swap operation is blocked by admin"), if ((value(cX.payments[0]).amount >= gC))
10241039 then true
10251040 else ba("Wrong amount"), if ((cX.caller == addressFromStringValue(gM)))
10261041 then true
10271042 else ba("Permission denied")]
1028- if ((gN == gN))
1043+ if ((gP == gP))
10291044 then {
10301045 let fq = value(cX.payments[0])
1031- let gO = bq(fq.assetId)
1032- let gP = if ((gx == false))
1046+ let gQ = bq(fq.assetId)
1047+ let gR = if ((gx == false))
10331048 then {
10341049 let gF = aW(this, al())
1035- let gy = (bX(gO) - value(cX.payments[0]).amount)
1050+ let gy = (bX(gQ) - value(cX.payments[0]).amount)
10361051 $Tuple2(gF, gy)
10371052 }
10381053 else {
10391054 let gF = aW(this, ak())
1040- let gy = (bX(gO) - value(cX.payments[0]).amount)
1055+ let gy = (bX(gQ) - value(cX.payments[0]).amount)
10411056 $Tuple2(gF, gy)
10421057 }
1043- let gF = gP._1
1044- let gy = gP._2
1058+ let gF = gR._1
1059+ let gy = gR._2
10451060 let bs = bk()
10461061 let dr = bs[x]
10471062 let ds = bs[y]
10521067 let eH = gw(gx, ez, toBigInt(0))
10531068 let gG = ((toBigInt(bX(gF)) - eH) - toBigInt(1))
10541069 let gH = max([0, toInt(gG)])
1055- let gQ = if ((gH >= gK))
1070+ let gS = if ((gH >= gK))
10561071 then true
10571072 else throw("Exchange result is fewer coins than expected")
1058- if ((gQ == gQ))
1073+ if ((gS == gS))
10591074 then {
10601075 let gI = if ((gx == false))
10611076 then [(toBigInt(bX(dr)) + toBigInt(gD)), (toBigInt(bX(ds)) - gG)]
10971112
10981113
10991114 @Callable(cX)
1100-func put (gR,gS) = {
1101- let gT = bC()
1102- let gU = valueOrErrorMessage(addressFromString(gT[D]), "Wr st addr")
1103- let gV = valueOrErrorMessage(addressFromString(gT[F]), "Wr sl addr")
1104- if ((0 > gR))
1115+func put (gT,gU) = {
1116+ let gV = bC()
1117+ let gW = valueOrErrorMessage(addressFromString(gV[D]), "Wr st addr")
1118+ let gX = valueOrErrorMessage(addressFromString(gV[F]), "Wr sl addr")
1119+ if ((0 > gT))
11051120 then throw("Wrong slippage")
11061121 else if ((size(cX.payments) != 2))
11071122 then throw("2 pmnts expd")
11081123 else {
1109- let gW = toBigInt(value(cX.payments[0]).amount)
1110- let gX = toBigInt(value(cX.payments[1]).amount)
1111- let eU = (toBigInt(bX(bq(by))) - gW)
1124+ let gY = toBigInt(value(cX.payments[0]).amount)
1125+ let gZ = toBigInt(value(cX.payments[1]).amount)
1126+ let eU = (toBigInt(bX(bq(by))) - gY)
11121127 if ((eU == eU))
11131128 then {
1114- let eV = (toBigInt(bX(bq(bz))) - gX)
1129+ let eV = (toBigInt(bX(bq(bz))) - gZ)
11151130 if ((eV == eV))
11161131 then {
11171132 let eW = toBigInt(value(assetInfo(bx)).quantity)
11181133 if ((eW == eW))
11191134 then {
1120- let eX = eQ(gW, gX, toBigInt(0))
1135+ let eX = eQ(gY, gZ, toBigInt(0))
11211136 if ((eX == eX))
11221137 then {
1123- let gY = fr(toString(cX.caller), toBase58String(cX.transactionId), AttachedPayment(value(cX.payments[0]).assetId, value(cX.payments[0]).amount), cX.payments[1], gR, true, false, true, 0, "")
1124- let er = gY._2
1125- let gZ = gY._7
1126- let dJ = gY._9
1127- let es = gY._10
1128- let et = gY._11
1129- let dr = gY._12
1130- let ds = gY._13
1138+ let ha = fr(toString(cX.caller), toBase58String(cX.transactionId), AttachedPayment(value(cX.payments[0]).assetId, value(cX.payments[0]).amount), cX.payments[1], gT, true, false, true, 0, "")
1139+ let er = ha._2
1140+ let hb = ha._7
1141+ let dJ = ha._9
1142+ let es = ha._10
1143+ let et = ha._11
1144+ let dr = ha._12
1145+ let ds = ha._13
11311146 let ed = invoke(aU, "emit", [er], nil)
11321147 if ((ed == ed))
11331148 then {
1134- let ha = {
1149+ let hc = {
11351150 let aQ = ed
11361151 if ($isInstanceOf(aQ, "Address"))
11371152 then {
1138- let hb = aQ
1139- invoke(hb, "emit", [er], nil)
1153+ let hd = aQ
1154+ invoke(hd, "emit", [er], nil)
11401155 }
11411156 else unit
11421157 }
1143- if ((ha == ha))
1158+ if ((hc == hc))
11441159 then {
1145- let hc = if ((es > 0))
1146- then invoke(gV, "put", nil, [AttachedPayment(dr, es)])
1160+ let he = if ((es > 0))
1161+ then invoke(gX, "put", nil, [AttachedPayment(dr, es)])
11471162 else nil
1148- if ((hc == hc))
1163+ if ((he == he))
11491164 then {
1150- let hd = if ((et > 0))
1151- then invoke(gV, "put", nil, [AttachedPayment(ds, et)])
1165+ let hf = if ((et > 0))
1166+ then invoke(gX, "put", nil, [AttachedPayment(ds, et)])
11521167 else nil
1153- if ((hd == hd))
1168+ if ((hf == hf))
11541169 then {
1155- let he = if (gS)
1170+ let hg = if (gU)
11561171 then {
1157- let hf = invoke(gU, "stake", nil, [AttachedPayment(gZ, er)])
1158- if ((hf == hf))
1172+ let hh = invoke(gW, "stake", nil, [AttachedPayment(hb, er)])
1173+ if ((hh == hh))
11591174 then nil
11601175 else throw("Strict value is not equal to itself.")
11611176 }
1162- else [ScriptTransfer(cX.caller, er, gZ)]
1163- let hg = eY(0, 0, 0)
1164- let go = hg._1
1165- let eP = hg._2
1166- let hh = if ((eP >= eX))
1177+ else [ScriptTransfer(cX.caller, er, hb)]
1178+ let hi = eY(0, 0, 0)
1179+ let go = hi._1
1180+ let eP = hi._2
1181+ let hj = if ((eP >= eX))
11671182 then true
11681183 else ba(makeString(["updated DLp lower than current DLp", toString(eU), toString(eV), toString(eW), toString(eX), toString(eP), toString(es), toString(et)], " "))
1169- if ((hh == hh))
1184+ if ((hj == hj))
11701185 then {
1171- let hi = value(assetInfo(bx)).quantity
1172- if ((hi == hi))
1173- then ((dJ ++ he) ++ go)
1186+ let hk = value(assetInfo(bx)).quantity
1187+ if ((hk == hk))
1188+ then ((dJ ++ hg) ++ go)
11741189 else throw("Strict value is not equal to itself.")
11751190 }
11761191 else throw("Strict value is not equal to itself.")
11961211
11971212
11981213 @Callable(cX)
1199-func putOneTknV2 (fS,gS) = {
1200- let hj = {
1214+func putOneTknV2 (fS,gU) = {
1215+ let hl = {
12011216 let be = invoke(aU, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
12021217 if ($isInstanceOf(be, "Boolean"))
12031218 then be
12041219 else throw(($getType(be) + " couldn't be cast to Boolean"))
12051220 }
1206- let hk = if (if (if (bh())
1221+ let hm = if (if (if (bh())
12071222 then true
12081223 else (bw == r))
12091224 then true
12101225 else (bw == t))
12111226 then true
1212- else hj
1213- let gN = [if (if (!(hk))
1227+ else hl
1228+ let gP = [if (if (!(hm))
12141229 then true
12151230 else gt(cX))
12161231 then true
12171232 else ba("put operation is blocked by admin"), if ((size(cX.payments) == 1))
12181233 then true
12191234 else ba("exactly 1 payment are expected")]
1220- if ((gN == gN))
1235+ if ((gP == gP))
12211236 then {
12221237 let dr = toBase58String(value(by))
12231238 let ds = toBase58String(value(bz))
12351250 else eQ(toBigInt(0), toBigInt(dT), toBigInt(0))
12361251 if ((eX == eX))
12371252 then {
1238- let hl = fv(dT, dn, toString(dp), toBase58String(cX.transactionId), true)
1239- if ((hl == hl))
1253+ let hn = fv(dT, dn, toString(dp), toBase58String(cX.transactionId), true)
1254+ if ((hn == hn))
12401255 then {
1241- let cH = hl._3
1242- let dJ = hl._2
1243- let hm = hl._1
1256+ let cH = hn._3
1257+ let dJ = hn._2
1258+ let ho = hn._1
12441259 let er = if (if ((fS > 0))
1245- then (fS > hm)
1260+ then (fS > ho)
12461261 else false)
12471262 then ba(makeString(["amount to receive is less than ", toString(fS)], ""))
1248- else hm
1249- let gY = invoke(aU, "emit", [er], nil)
1250- if ((gY == gY))
1263+ else ho
1264+ let ha = invoke(aU, "emit", [er], nil)
1265+ if ((ha == ha))
12511266 then {
1252- let ha = {
1253- let aQ = gY
1267+ let hc = {
1268+ let aQ = ha
12541269 if ($isInstanceOf(aQ, "Address"))
12551270 then {
1256- let hb = aQ
1257- invoke(hb, "emit", [er], nil)
1271+ let hd = aQ
1272+ invoke(hd, "emit", [er], nil)
12581273 }
12591274 else unit
12601275 }
1261- if ((ha == ha))
1276+ if ((hc == hc))
12621277 then {
1263- let he = if (gS)
1278+ let hg = if (gU)
12641279 then {
1265- let hf = invoke(bE, "stakeFor", [toString(cX.caller)], [AttachedPayment(dq, er)])
1266- if ((hf == hf))
1280+ let hh = invoke(bE, "stakeFor", [toString(cX.caller)], [AttachedPayment(dq, er)])
1281+ if ((hh == hh))
12671282 then nil
12681283 else throw("Strict value is not equal to itself.")
12691284 }
12711286 let gi = if ((cH > 0))
12721287 then [ScriptTransfer(bj, cH, fromBase58String(dn))]
12731288 else nil
1274- let hn = if ((this == bj))
1289+ let hp = if ((this == bj))
12751290 then $Tuple2(0, 0)
12761291 else {
1277- let ho = if ((fq.assetId == by))
1292+ let hq = if ((fq.assetId == by))
12781293 then true
12791294 else false
1280- if (ho)
1295+ if (hq)
12811296 then $Tuple2(-(cH), 0)
12821297 else $Tuple2(0, -(cH))
12831298 }
1284- let eZ = hn._1
1285- let fa = hn._2
1286- let hp = eY(eZ, fa, 0)
1287- let go = hp._1
1288- let eP = hp._2
1299+ let eZ = hp._1
1300+ let fa = hp._2
1301+ let hr = eY(eZ, fa, 0)
1302+ let go = hr._1
1303+ let eP = hr._2
12891304 let gp = fc(eX, eP)
12901305 if ((gp == gp))
1291- then $Tuple2((((dJ ++ he) ++ gi) ++ go), er)
1306+ then $Tuple2((((dJ ++ hg) ++ gi) ++ go), er)
12921307 else throw("Strict value is not equal to itself.")
12931308 }
12941309 else throw("Strict value is not equal to itself.")
13051320
13061321
13071322 @Callable(cX)
1308-func putForFree (hq) = if ((0 > hq))
1323+func putForFree (hs) = if ((0 > hs))
13091324 then throw("Wrong slpg")
13101325 else if ((size(cX.payments) != 2))
13111326 then throw("2 pmnts expd")
13121327 else {
1313- let hr = fr(toString(cX.caller), toBase58String(cX.transactionId), AttachedPayment(value(cX.payments[0]).assetId, value(cX.payments[0]).amount), cX.payments[1], hq, false, false, true, 0, "")
1314- let dJ = hr._9
1315- let gW = toBigInt(value(cX.payments[0]).amount)
1316- let gX = toBigInt(value(cX.payments[1]).amount)
1317- let eX = eQ(gW, gX, toBigInt(0))
1328+ let ht = fr(toString(cX.caller), toBase58String(cX.transactionId), AttachedPayment(value(cX.payments[0]).assetId, value(cX.payments[0]).amount), cX.payments[1], hs, false, false, true, 0, "")
1329+ let dJ = ht._9
1330+ let gY = toBigInt(value(cX.payments[0]).amount)
1331+ let gZ = toBigInt(value(cX.payments[1]).amount)
1332+ let eX = eQ(gY, gZ, toBigInt(0))
13181333 if ((eX == eX))
13191334 then {
1320- let hs = eY(0, 0, 0)
1321- let go = hs._1
1322- let eP = hs._2
1335+ let hu = eY(0, 0, 0)
1336+ let go = hu._1
1337+ let eP = hu._2
13231338 let gp = fc(eX, eP)
13241339 if ((gp == gp))
13251340 then (dJ ++ go)
13361351 if ((eX == eX))
13371352 then {
13381353 let ed = fp(cX)
1339- let ht = ed._1
1354+ let hv = ed._1
13401355 let dI = ed._2
13411356 let dT = ed._3
13421357 let dn = ed._4
13441359 let eE = invoke(aU, "burn", [dT], [AttachedPayment(dn, dT)])
13451360 if ((eE == eE))
13461361 then {
1347- let hu = eY(-(ht), -(dI), 0)
1348- let go = hu._1
1349- let eP = hu._2
1362+ let hw = eY(-(hv), -(dI), 0)
1363+ let go = hw._1
1364+ let eP = hw._2
13501365 let gp = fc(eX, eP)
13511366 if ((gp == gp))
13521367 then (dJ ++ go)
13611376
13621377 @Callable(cX)
13631378 func getOneTknV2 (fR,fS) = {
1364- let hj = {
1379+ let hl = {
13651380 let be = invoke(aU, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
13661381 if ($isInstanceOf(be, "Boolean"))
13671382 then be
13681383 else throw(($getType(be) + " couldn't be cast to Boolean"))
13691384 }
1370- let hv = if (if (bh())
1385+ let hx = if (if (bh())
13711386 then true
13721387 else (bw == t))
13731388 then true
1374- else hj
1375- let gN = [if (if (!(hv))
1389+ else hl
1390+ let gP = [if (if (!(hx))
13761391 then true
13771392 else gt(cX))
13781393 then true
13791394 else ba("get operation is blocked by admin"), if ((size(cX.payments) == 1))
13801395 then true
13811396 else ba("exactly 1 payment are expected")]
1382- if ((gN == gN))
1397+ if ((gP == gP))
13831398 then {
1384- let hw = fQ(fR, fS, cX.payments, cX.caller, cX.originCaller, cX.transactionId)
1385- let dJ = hw._1
1386- let gb = hw._2
1399+ let hy = fQ(fR, fS, cX.payments, cX.caller, cX.originCaller, cX.transactionId)
1400+ let dJ = hy._1
1401+ let gb = hy._2
13871402 $Tuple2(dJ, gb)
13881403 }
13891404 else throw("Strict value is not equal to itself.")
13931408
13941409 @Callable(cX)
13951410 func refreshDLp () = {
1396- let hx = valueOrElse(getInteger(at), 0)
1397- let hy = if (((height - hx) >= aw))
1411+ let hz = valueOrElse(getInteger(at), 0)
1412+ let hA = if (((height - hz) >= aw))
13981413 then unit
13991414 else ba(makeString([toString(aw), " blocks have not passed since the previous call"], ""))
1400- if ((hy == hy))
1415+ if ((hA == hA))
14011416 then {
14021417 let fj = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, as), "0")), bc("invalid dLp"))
1403- let hz = eY(0, 0, 0)
1404- let hA = hz._1
1405- let eP = hz._2
1418+ let hB = eY(0, 0, 0)
1419+ let hC = hB._1
1420+ let eP = hB._2
14061421 let fb = if ((fj != eP))
1407- then hA
1422+ then hC
14081423 else ba("nothing to refresh")
14091424 $Tuple2(fb, toString(eP))
14101425 }
14141429
14151430
14161431 @Callable(cX)
1417-func getOneTknV2READONLY (fR,hB) = {
1432+func getOneTknV2READONLY (fR,hD) = {
14181433 let dr = toBase58String(value(by))
14191434 let ds = toBase58String(value(bz))
14201435 let dq = toBase58String(value(bx))
14211436 let cJ = [toBigInt(bX(dr)), toBigInt(bX(ds))]
14221437 let eO = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(dq)), "invalid lp asset").quantity)
14231438 let cl = cI(cJ)
1424- let ck = (cl - fraction(toBigInt(hB), cl, eO))
1425- let hC = if ((fR == dr))
1439+ let ck = (cl - fraction(toBigInt(hD), cl, eO))
1440+ let hE = if ((fR == dr))
14261441 then 0
14271442 else if ((fR == ds))
14281443 then 1
14291444 else throw("invalid out asset id")
1430- let hD = ey(cJ, hC, ck)
1431- let gG = (cJ[hC] - hD)
1445+ let hF = ey(cJ, hE, ck)
1446+ let gG = (cJ[hE] - hF)
14321447 let gH = max([0, toInt((gG - f))])
1433- let hE = cF(gH, bf)
1434- let ga = hE._1
1435- let cH = hE._2
1448+ let hG = cF(gH, bf)
1449+ let ga = hG._1
1450+ let cH = hG._2
14361451 $Tuple2(nil, $Tuple2(ga, cH))
14371452 }
14381453
14391454
14401455
14411456 @Callable(cX)
1442-func getOneTknV2WithBonusREADONLY (fR,hB) = {
1457+func getOneTknV2WithBonusREADONLY (fR,hD) = {
14431458 let dr = toBase58String(value(by))
14441459 let ds = toBase58String(value(bz))
14451460 let dq = toBase58String(value(bx))
14461461 let dx = bX(dr)
14471462 let dz = bX(ds)
1448- let hF = {
1449- let be = invoke(this, "getOneTknV2READONLY", [fR, hB], nil)
1463+ let hH = {
1464+ let be = invoke(this, "getOneTknV2READONLY", [fR, hD], nil)
14501465 if ($isInstanceOf(be, "(Int, Int)"))
14511466 then be
14521467 else throw(($getType(be) + " couldn't be cast to (Int, Int)"))
14531468 }
1454- let ga = hF._1
1455- let cH = hF._2
1456- let ed = dl("", dq, hB, this)
1469+ let ga = hH._1
1470+ let cH = hH._2
1471+ let ed = dl("", dq, hD, this)
14571472 let dH = ed._1
14581473 let dI = ed._2
1459- let hG = (dH + dI)
1460- let fP = if ((hG == 0))
1474+ let hI = (dH + dI)
1475+ let fP = if ((hI == 0))
14611476 then if ((ga == 0))
14621477 then 0
14631478 else throw("bonus calculation error")
1464- else fraction((ga - hG), a, hG)
1479+ else fraction((ga - hI), a, hI)
14651480 $Tuple2(nil, $Tuple3(ga, cH, fP))
14661481 }
14671482
14681483
14691484
14701485 @Callable(cX)
1471-func getNoLess (hH,hI) = {
1486+func getNoLess (hJ,hK) = {
14721487 let ed = fp(cX)
14731488 let dH = ed._1
14741489 let dI = ed._2
14751490 let dT = ed._3
14761491 let dn = ed._4
14771492 let dJ = ed._5
1478- if ((hH > dH))
1479- then throw(((("Failed: " + toString(dH)) + " < ") + toString(hH)))
1480- else if ((hI > dI))
1481- then throw(((("Failed: " + toString(dI)) + " < ") + toString(hI)))
1493+ if ((hJ > dH))
1494+ then throw(((("Failed: " + toString(dH)) + " < ") + toString(hJ)))
1495+ else if ((hK > dI))
1496+ then throw(((("Failed: " + toString(dI)) + " < ") + toString(hK)))
14821497 else {
14831498 let eX = eQ(toBigInt(0), toBigInt(0), toBigInt(0))
14841499 if ((eX == eX))
14851500 then {
1486- let hJ = invoke(aU, "burn", [dT], [AttachedPayment(dn, dT)])
1487- if ((hJ == hJ))
1501+ let hL = invoke(aU, "burn", [dT], [AttachedPayment(dn, dT)])
1502+ if ((hL == hL))
14881503 then {
1489- let hK = eY(-(dH), -(dI), 0)
1490- let go = hK._1
1491- let eP = hK._2
1504+ let hM = eY(-(dH), -(dI), 0)
1505+ let go = hM._1
1506+ let eP = hM._2
14921507 let gp = fc(eX, eP)
14931508 if ((gp == gp))
14941509 then (dJ ++ go)
15041519
15051520 @Callable(cX)
15061521 func unstakeAndGet (cG) = {
1507- let hL = if ((size(cX.payments) != 0))
1522+ let hN = if ((size(cX.payments) != 0))
15081523 then throw("No pmnts expd")
15091524 else true
1510- if ((hL == hL))
1525+ if ((hN == hN))
15111526 then {
1512- let hM = bC()
1513- let gZ = bx
1514- let hN = valueOrErrorMessage(addressFromString(hM[D]), "Wr st addr")
1527+ let hO = bC()
1528+ let hb = bx
1529+ let hP = valueOrErrorMessage(addressFromString(hO[D]), "Wr st addr")
15151530 let eX = eQ(toBigInt(0), toBigInt(0), toBigInt(0))
15161531 if ((eX == eX))
15171532 then {
1518- let hO = invoke(hN, "unstake", [toBase58String(gZ), cG], nil)
1519- if ((hO == hO))
1533+ let hQ = invoke(hP, "unstake", [toBase58String(hb), cG], nil)
1534+ if ((hQ == hQ))
15201535 then {
1521- let ed = dl(toBase58String(cX.transactionId), toBase58String(gZ), cG, cX.caller)
1536+ let ed = dl(toBase58String(cX.transactionId), toBase58String(hb), cG, cX.caller)
15221537 let dH = ed._1
15231538 let dI = ed._2
15241539 let dv = parseIntValue(ed._9)
15251540 let dJ = ed._10
1526- let hP = if (if (bh())
1541+ let hR = if (if (bh())
15271542 then true
15281543 else (dv == t))
15291544 then throw(("Blocked: " + toString(dv)))
15301545 else true
1531- if ((hP == hP))
1546+ if ((hR == hR))
15321547 then {
1533- let hQ = invoke(aU, "burn", [cG], [AttachedPayment(gZ, cG)])
1534- if ((hQ == hQ))
1548+ let hS = invoke(aU, "burn", [cG], [AttachedPayment(hb, cG)])
1549+ if ((hS == hS))
15351550 then {
1536- let hR = eY(-(dH), -(dI), 0)
1537- let go = hR._1
1538- let eP = hR._2
1551+ let hT = eY(-(dH), -(dI), 0)
1552+ let go = hT._1
1553+ let eP = hT._2
15391554 let gp = fc(eX, eP)
15401555 if ((gp == gp))
15411556 then (dJ ++ go)
15551570
15561571
15571572 @Callable(cX)
1558-func unstakeAndGetNoLess (hS,hT,hI) = {
1559- let hv = if (bh())
1573+func unstakeAndGetNoLess (hU,hV,hK) = {
1574+ let hx = if (bh())
15601575 then true
15611576 else (bw == t)
1562- let gN = [if (!(hv))
1577+ let gP = [if (!(hx))
15631578 then true
15641579 else throw("get operation is blocked by admin"), if ((size(cX.payments) == 0))
15651580 then true
15661581 else throw("no payments are expected")]
1567- if ((gN == gN))
1582+ if ((gP == gP))
15681583 then {
15691584 let eX = eQ(toBigInt(0), toBigInt(0), toBigInt(0))
15701585 if ((eX == eX))
15711586 then {
1572- let hO = invoke(bE, "unstake", [toBase58String(bx), hS], nil)
1573- if ((hO == hO))
1587+ let hQ = invoke(bE, "unstake", [toBase58String(bx), hU], nil)
1588+ if ((hQ == hQ))
15741589 then {
1575- let hU = dl(toBase58String(cX.transactionId), toBase58String(bx), hS, cX.caller)
1576- let dH = hU._1
1577- let dI = hU._2
1578- let dJ = hU._10
1579- let hV = [if ((dH >= hT))
1590+ let hW = dl(toBase58String(cX.transactionId), toBase58String(bx), hU, cX.caller)
1591+ let dH = hW._1
1592+ let dI = hW._2
1593+ let dJ = hW._10
1594+ let hX = [if ((dH >= hV))
15801595 then true
1581- else throw(makeString(["amount asset amount to receive is less than ", toString(hT)], "")), if ((dI >= hI))
1596+ else throw(makeString(["amount asset amount to receive is less than ", toString(hV)], "")), if ((dI >= hK))
15821597 then true
1583- else throw(makeString(["price asset amount to receive is less than ", toString(hI)], ""))]
1584- if ((hV == hV))
1598+ else throw(makeString(["price asset amount to receive is less than ", toString(hK)], ""))]
1599+ if ((hX == hX))
15851600 then {
1586- let hJ = invoke(aU, "burn", [hS], [AttachedPayment(bx, hS)])
1587- if ((hJ == hJ))
1601+ let hL = invoke(aU, "burn", [hU], [AttachedPayment(bx, hU)])
1602+ if ((hL == hL))
15881603 then {
1589- let hW = eY(-(dH), -(dI), 0)
1590- let go = hW._1
1591- let eP = hW._2
1604+ let hY = eY(-(dH), -(dI), 0)
1605+ let go = hY._1
1606+ let eP = hY._2
15921607 let gp = fc(eX, eP)
15931608 if ((gp == gp))
15941609 then (dJ ++ go)
16081623
16091624
16101625 @Callable(cX)
1611-func unstakeAndGetOneTknV2 (hS,fR,fS) = {
1612- let hj = {
1626+func unstakeAndGetOneTknV2 (hU,fR,fS) = {
1627+ let hl = {
16131628 let be = invoke(aU, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
16141629 if ($isInstanceOf(be, "Boolean"))
16151630 then be
16161631 else throw(($getType(be) + " couldn't be cast to Boolean"))
16171632 }
1618- let hv = if (if (bh())
1633+ let hx = if (if (bh())
16191634 then true
16201635 else (bw == t))
16211636 then true
1622- else hj
1623- let gN = [if (if (!(hv))
1637+ else hl
1638+ let gP = [if (if (!(hx))
16241639 then true
16251640 else gt(cX))
16261641 then true
16271642 else ba("get operation is blocked by admin"), if ((size(cX.payments) == 0))
16281643 then true
16291644 else ba("no payments are expected")]
1630- if ((gN == gN))
1645+ if ((gP == gP))
16311646 then {
1632- let hM = bC()
1633- let gZ = bx
1634- let hN = valueOrErrorMessage(addressFromString(hM[D]), "Wr st addr")
1647+ let hO = bC()
1648+ let hb = bx
1649+ let hP = valueOrErrorMessage(addressFromString(hO[D]), "Wr st addr")
16351650 let dp = cX.caller
1636- let hX = this
1637- let hO = invoke(hN, "unstakeINTERNAL", [gZ, hS, dp.bytes, hX.bytes], nil)
1638- if ((hO == hO))
1651+ let hZ = this
1652+ let hQ = invoke(hP, "unstakeINTERNAL", [hb, hU, dp.bytes, hZ.bytes], nil)
1653+ if ((hQ == hQ))
16391654 then {
1640- let hY = fQ(fR, fS, [AttachedPayment(gZ, hS)], cX.caller, cX.originCaller, cX.transactionId)
1641- let dJ = hY._1
1642- let gb = hY._2
1655+ let ia = fQ(fR, fS, [AttachedPayment(hb, hU)], cX.caller, cX.originCaller, cX.transactionId)
1656+ let dJ = ia._1
1657+ let gb = ia._2
16431658 $Tuple2(dJ, gb)
16441659 }
16451660 else throw("Strict value is not equal to itself.")
16501665
16511666
16521667 @Callable(cX)
1653-func putOneTknV2WithBonusREADONLY (hZ,ia) = {
1654- let ib = fv(hZ, ia, "", "", true)
1655- let fK = ib._1
1656- let dJ = ib._2
1657- let cH = ib._3
1658- let fP = ib._4
1668+func putOneTknV2WithBonusREADONLY (ib,ic) = {
1669+ let id = fv(ib, ic, "", "", true)
1670+ let fK = id._1
1671+ let dJ = id._2
1672+ let cH = id._3
1673+ let fP = id._4
16591674 $Tuple2(nil, $Tuple3(fK, cH, fP))
16601675 }
16611676
16621677
16631678
16641679 @Callable(cX)
1665-func putOneTknV2WithoutTakeFeeREADONLY (hZ,ia) = {
1666- let ic = fv(hZ, ia, "", "", false)
1667- let fK = ic._1
1668- let dJ = ic._2
1669- let cH = ic._3
1670- let fP = ic._4
1680+func putOneTknV2WithoutTakeFeeREADONLY (ib,ic) = {
1681+ let ie = fv(ib, ic, "", "", false)
1682+ let fK = ie._1
1683+ let dJ = ie._2
1684+ let cH = ie._3
1685+ let fP = ie._4
16711686 $Tuple2(nil, $Tuple3(fK, cH, fP))
16721687 }
16731688
16741689
16751690
16761691 @Callable(cX)
1677-func activate (id,ie) = if ((toString(cX.caller) != toString(aU)))
1692+func activate (if,ig) = if ((toString(cX.caller) != toString(aU)))
16781693 then throw("denied")
1679- else $Tuple2([StringEntry(ak(), id), StringEntry(al(), ie), StringEntry(am(), toString(l)), StringEntry(an(height), toString(l))], "success")
1694+ else $Tuple2([StringEntry(ak(), if), StringEntry(al(), ig), StringEntry(am(), toString(l)), StringEntry(an(height), toString(l))], "success")
16801695
16811696
16821697
16921707
16931708 @Callable(cX)
16941709 func calcPricesWrapperREADONLY (cr,cs,cw) = {
1695- let if = cv(cr, cs, cw)
1696- $Tuple2(nil, [toString(if[0]), toString(if[1]), toString(if[2])])
1710+ let ih = cv(cr, cs, cw)
1711+ $Tuple2(nil, [toString(ih[0]), toString(ih[1]), toString(ih[2])])
16971712 }
16981713
16991714
17001715
17011716 @Callable(cX)
1702-func fromX18WrapperREADONLY (N,ig) = $Tuple2(nil, M(parseBigIntValue(N), ig))
1717+func fromX18WrapperREADONLY (N,ii) = $Tuple2(nil, M(parseBigIntValue(N), ii))
17031718
17041719
17051720
17141729
17151730
17161731 @Callable(cX)
1717-func estimatePutOperationWrapperREADONLY (dm,cg,dL,dM,dN,dO,ih,dP,dQ) = $Tuple2(nil, dK(dm, cg, dL, dM, dN, dO, ih, dP, dQ, true, false, 0, ""))
1732+func estimatePutOperationWrapperREADONLY (dm,cg,dL,dM,dN,dO,ij,dP,dQ) = $Tuple2(nil, dK(dm, cg, dL, dM, dN, dO, ij, dP, dQ, true, false, 0, ""))
17181733
17191734
17201735
17211736 @Callable(cX)
1722-func estimateGetOperationWrapperREADONLY (dm,ii,do,ih) = {
1723- let ed = dl(dm, ii, do, addressFromStringValue(ih))
1737+func estimateGetOperationWrapperREADONLY (dm,ik,do,ij) = {
1738+ let ed = dl(dm, ik, do, addressFromStringValue(ij))
17241739 $Tuple2(nil, $Tuple10(ed._1, ed._2, ed._3, ed._4, ed._5, ed._6, ed._7, toString(ed._8), ed._9, ed._10))
17251740 }
17261741
17281743
17291744 @Callable(cX)
17301745 func changeAmp () = {
1731- let ij = invoke(aU, "getChangeAmpConfigREADONLY", [toString(this)], nil)
1732- let ik = {
1733- let aQ = ij
1746+ let il = invoke(aU, "getChangeAmpConfigREADONLY", [toString(this)], nil)
1747+ let im = {
1748+ let aQ = il
17341749 if ($isInstanceOf(aQ, "List[Any]"))
17351750 then {
1736- let il = aQ
1751+ let in = aQ
17371752 $Tuple3({
1738- let be = il[0]
1753+ let be = in[0]
17391754 if ($isInstanceOf(be, "Int"))
17401755 then be
17411756 else throw(($getType(be) + " couldn't be cast to Int"))
17421757 }, {
1743- let be = il[1]
1758+ let be = in[1]
17441759 if ($isInstanceOf(be, "Int"))
17451760 then be
17461761 else throw(($getType(be) + " couldn't be cast to Int"))
17471762 }, {
1748- let be = il[2]
1763+ let be = in[2]
17491764 if ($isInstanceOf(be, "Int"))
17501765 then be
17511766 else throw(($getType(be) + " couldn't be cast to Int"))
17531768 }
17541769 else ba("invalid entry type")
17551770 }
1756- let im = ik._1
1757- let in = ik._2
1758- let io = ik._3
1759- let ip = parseIntValue(getStringValue(am()))
1760- let iq = (ip + in)
1761- let ir = if ((0 > in))
1762- then if ((io > iq))
1763- then io
1764- else iq
1765- else if ((iq > io))
1766- then io
1767- else iq
1768- let is = valueOrElse(getInteger(ap()), 0)
1769- let it = (is + im)
1770- let gN = [if ((height > it))
1771+ let io = im._1
1772+ let ip = im._2
1773+ let iq = im._3
1774+ let ir = parseIntValue(getStringValue(am()))
1775+ let is = (ir + ip)
1776+ let it = if ((0 > ip))
1777+ then if ((iq > is))
1778+ then iq
1779+ else is
1780+ else if ((is > iq))
1781+ then iq
1782+ else is
1783+ let iu = valueOrElse(getInteger(ap()), 0)
1784+ let iv = (iu + io)
1785+ let gP = [if ((height > iv))
17711786 then true
1772- else ba("try again in few blocks"), if ((ip != ir))
1787+ else ba("try again in few blocks"), if ((ir != it))
17731788 then true
17741789 else ba("already reached target")]
1775- if ((gN == gN))
1776- then [IntegerEntry(ap(), height), StringEntry(am(), toString(ir)), StringEntry(an(height), toString(ir))]
1790+ if ((gP == gP))
1791+ then [IntegerEntry(ap(), height), StringEntry(am(), toString(it)), StringEntry(an(height), toString(it))]
17771792 else throw("Strict value is not equal to itself.")
17781793 }
17791794
17801795
1781-@Verifier(iu)
1782-func iv () = {
1783- let iw = {
1796+@Verifier(iw)
1797+func ix () = {
1798+ let iy = {
17841799 let aQ = gq()
17851800 if ($isInstanceOf(aQ, "ByteVector"))
17861801 then {
17881803 gu
17891804 }
17901805 else if ($isInstanceOf(aQ, "Unit"))
1791- then iu.senderPublicKey
1806+ then iw.senderPublicKey
17921807 else throw("Match error")
17931808 }
1794- let aQ = iu
1809+ let aQ = iw
17951810 if ($isInstanceOf(aQ, "Order"))
17961811 then {
17971812 let ff = aQ
1798- let ix = bi()
1799- let iy = if (gB())
1813+ let iz = bi()
1814+ let iA = if (gB())
18001815 then $Tuple2(true, "")
18011816 else fe(ff)
1802- let aK = iy._1
1803- let aL = iy._2
1817+ let aK = iA._1
1818+ let aL = iA._2
18041819 let aM = sigVerify(ff.bodyBytes, ff.proofs[0], ff.senderPublicKey)
1805- let aN = sigVerify(ff.bodyBytes, ff.proofs[1], ix)
1820+ let aN = sigVerify(ff.bodyBytes, ff.proofs[1], iz)
18061821 if (if (if (aK)
18071822 then aM
18081823 else false)
18141829 else if ($isInstanceOf(aQ, "SetScriptTransaction"))
18151830 then {
18161831 let aV = aQ
1817- if (sigVerify(iu.bodyBytes, iu.proofs[0], iw))
1832+ if (sigVerify(iw.bodyBytes, iw.proofs[0], iy))
18181833 then true
18191834 else {
1820- let iz = blake2b256(value(aV.script))
1821- let iA = fromBase64String(value(getString(aU, aF())))
1822- let iB = scriptHash(this)
1823- if ((iA == iz))
1824- then (iB != iz)
1835+ let iB = blake2b256(value(aV.script))
1836+ let iC = fromBase64String(value(getString(aU, aF())))
1837+ let iD = scriptHash(this)
1838+ if ((iC == iB))
1839+ then (iD != iB)
18251840 else false
18261841 }
18271842 }
1828- else sigVerify(iu.bodyBytes, iu.proofs[0], iw)
1843+ else sigVerify(iw.bodyBytes, iw.proofs[0], iy)
18291844 }
18301845
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 100000000
55
66 let b = toBigInt(100000000)
77
88 let c = toBigInt(1000000000000000000)
99
1010 let d = toBigInt(0)
1111
1212 let e = toBigInt(0)
1313
1414 let f = toBigInt(1)
1515
1616 let g = toBigInt(2)
1717
1818 let h = toBigInt(3)
1919
2020 let i = toBigInt(4)
2121
2222 let j = toBigInt((a - ((a * 1) / a)))
2323
2424 let k = "WAVES"
2525
2626 let l = 50
2727
2828 let m = "100"
2929
3030 let n = "1"
3131
3232 let o = "__"
3333
3434 let p = ""
3535
3636 let q = 1
3737
3838 let r = 2
3939
4040 let s = 3
4141
4242 let t = 4
4343
4444 let u = 1
4545
4646 let v = 2
4747
4848 let w = 3
4949
5050 let x = 4
5151
5252 let y = 5
5353
5454 let z = 6
5555
5656 let A = 7
5757
5858 let B = 8
5959
6060 let C = 9
6161
6262 let D = 1
6363
6464 let E = 6
6565
6666 let F = 7
6767
6868 let G = 10
6969
7070 let H = fraction(10, a, 10000)
7171
7272 func I (J,K) = fraction(toBigInt(J), c, toBigInt(K))
7373
7474
7575 func L (J,K) = fraction(J, c, K)
7676
7777
7878 func M (N,O) = toInt(fraction(N, toBigInt(O), c))
7979
8080
8181 func P (N,O,Q) = toInt(fraction(N, toBigInt(O), c, Q))
8282
8383
8484 func R (J,K) = fraction(J, c, toBigInt(K))
8585
8686
8787 func S (N,O) = fraction(N, toBigInt(O), c)
8888
8989
9090 func T (U,V,W) = fraction(U, V, W)
9191
9292
9393 func X (N) = if ((d > N))
9494 then -(N)
9595 else N
9696
9797
9898 func Y (N) = if ((d > N))
9999 then -(N)
100100 else N
101101
102102
103103 func Z () = "%s__factoryContract"
104104
105105
106106 func aa () = "%s__managerPublicKey"
107107
108108
109109 func ab () = "%s__managerVaultAddress"
110110
111111
112112 func ac () = "%s%s__price__last"
113113
114114
115115 func ad (ae,af) = makeString(["%s%s%d%d__price__history", toString(ae), toString(af)], o)
116116
117117
118118 func ag (ah,ai) = ((("%s%s%s__P__" + ah) + "__") + ai)
119119
120120
121121 func aj (ah,ai) = ((("%s%s%s__G__" + ah) + "__") + ai)
122122
123123
124124 func ak () = "%s__amountAsset"
125125
126126
127127 func al () = "%s__priceAsset"
128128
129129
130130 func am () = "%s__amp"
131131
132132
133133 func an (ao) = ("%s%d__amp__" + toString(ao))
134134
135135
136136 func ap () = "%s__changeAmpLastCall"
137137
138138
139139 let aq = "%s__fee"
140140
141141 let ar = valueOrElse(getInteger(this, aq), H)
142142
143143 let as = makeString(["%s", "dLp"], o)
144144
145145 let at = makeString(["%s", "dLpRefreshedHeight"], o)
146146
147147 let au = makeString(["%s", "refreshDLpDelay"], o)
148148
149149 let av = 30
150150
151151 let aw = valueOrElse(getInteger(this, au), av)
152152
153153 func ax () = "%s__factoryConfig"
154154
155155
156156 func ay () = "%s%s__matcher__publicKey"
157157
158158
159159 func az (aA,aB) = (((("%d%d%s__" + aA) + "__") + aB) + "__config")
160160
161161
162162 func aC (aD) = ("%s%s%s__mappings__baseAsset2internalId__" + aD)
163163
164164
165165 func aE () = "%s__shutdown"
166166
167167
168168 func aF () = "%s__allowedLpStableScriptHash"
169169
170170
171171 func aG () = "%s__feeCollectorAddress"
172172
173173
174174 func aH (aI) = ("%s%s__skipOrderValidation__" + aI)
175175
176176
177177 func aJ (aK,aL,aM,aN) = throw((((((((("order validation failed: orderValid=" + toString(aK)) + " (") + aL) + ")") + " senderValid=") + toString(aM)) + " matcherValid=") + toString(aN)))
178178
179179
180180 func aO (aP) = {
181181 let aQ = addressFromString(aP)
182182 if ($isInstanceOf(aQ, "Address"))
183183 then {
184184 let aR = aQ
185185 aR
186186 }
187187 else this
188188 }
189189
190190
191191 func aS () = {
192192 let aT = {
193193 let aQ = getString(Z())
194194 if ($isInstanceOf(aQ, "String"))
195195 then {
196196 let aU = aQ
197197 aO(aU)
198198 }
199199 else this
200200 }
201201 let aQ = getString(aT, ab())
202202 if ($isInstanceOf(aQ, "String"))
203203 then {
204204 let aV = aQ
205205 aO(aV)
206206 }
207207 else this
208208 }
209209
210210
211211 func aW (aX,aY) = valueOrErrorMessage(getString(aX, aY), makeString(["mandatory ", toString(aX), ".", aY, " not defined"], ""))
212212
213213
214214 func aZ (aX,aY) = valueOrErrorMessage(getInteger(aX, aY), makeString(["mandatory ", toString(aX), ".", aY, " not defined"], ""))
215215
216216
217217 func ba (bb) = throw(makeString(["lp_stable.ride:", bb], " "))
218218
219219
220220 func bc (bb) = makeString(["lp_stable.ride:", bb], " ")
221221
222222
223223 let aU = addressFromStringValue(aW(this, Z()))
224224
225225 let bd = {
226226 let be = invoke(aU, "getInFeeREADONLY", [toString(this)], nil)
227227 if ($isInstanceOf(be, "Int"))
228228 then be
229229 else throw(($getType(be) + " couldn't be cast to Int"))
230230 }
231231
232232 let bf = {
233233 let be = invoke(aU, "getOutFeeREADONLY", [toString(this)], nil)
234234 if ($isInstanceOf(be, "Int"))
235235 then be
236236 else throw(($getType(be) + " couldn't be cast to Int"))
237237 }
238238
239239 let bg = aW(this, am())
240240
241241 func bh () = valueOrElse(getBoolean(aU, aE()), false)
242242
243243
244244 func bi () = fromBase58String(aW(aU, ay()))
245245
246246
247247 let bj = addressFromStringValue(aW(aU, aG()))
248248
249249 func bk () = {
250250 let bl = aW(this, ak())
251251 let bm = aW(this, al())
252252 let bn = aZ(aU, aC(bm))
253253 let aA = aZ(aU, aC(bl))
254254 split(aW(aU, az(toString(aA), toString(bn))), o)
255255 }
256256
257257
258258 func bo (bp) = if ((bp == k))
259259 then unit
260260 else fromBase58String(bp)
261261
262262
263263 func bq (bp) = if ((bp == unit))
264264 then k
265265 else toBase58String(value(bp))
266266
267267
268268 func br (bs) = $Tuple7(addressFromStringValue(bs[u]), parseIntValue(bs[v]), fromBase58String(bs[w]), bo(bs[x]), bo(bs[y]), parseIntValue(bs[z]), parseIntValue(bs[A]))
269269
270270
271271 let bt = br(bk())
272272
273273 let bu = bt
274274
275275 let bv = bu._1
276276
277277 let bw = bu._2
278278
279279 let bx = bu._3
280280
281281 let by = bu._4
282282
283283 let bz = bu._5
284284
285285 let bA = bu._6
286286
287287 let bB = bu._7
288288
289289 func bC () = split(aW(aU, ax()), o)
290290
291291
292292 let bD = bC()
293293
294294 let bE = valueOrErrorMessage(addressFromString(bD[D]), "Invalid staking contract address")
295295
296296 let bF = valueOrErrorMessage(addressFromString(bD[F]), "Invalid slipage contract address")
297297
298298 let bG = valueOrErrorMessage(addressFromString(bD[G]), "Invalid gwx contract address")
299299
300300 let bH = valueOrErrorMessage(addressFromString(bD[E]), "Invalid gwx contract address")
301301
302302 func bI (bJ,bK,bL,bM,bN,bO,bP,bQ,bR,bS) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bJ), toString(bK), toString(bL), toString(bM), toString(bN), toString(bO), toString(bP), toString(bQ), toString(bR), toString(bS)], o)
303303
304304
305305 func bT (bU,bV,bW,bM,bP,bQ) = makeString(["%d%d%d%d%d%d", toString(bU), toString(bV), toString(bW), toString(bM), toString(bP), toString(bQ)], o)
306306
307307
308308 func bX (bY) = if ((bY == "WAVES"))
309309 then wavesBalance(this).available
310310 else assetBalance(this, fromBase58String(bY))
311311
312312
313313 func bZ (ca,cb) = fraction(ca, c, cb)
314314
315315
316316 func cc (ca,cb,Q) = fraction(ca, c, cb, Q)
317317
318318
319319 func cd (ce,cf,cg) = {
320320 let ch = fraction((ce - cf), b, cf)
321321 let ci = ((cg - X(ch)) > d)
322322 if (!(ci))
323323 then throw(("Big slpg: " + toString(ch)))
324324 else $Tuple2(ci, min([ce, cf]))
325325 }
326326
327327
328328 func cj (ck,cl,cm) = {
329329 let ch = fraction(cl, b, ck)
330330 let cn = (cm > ch)
331331 if (if (cn)
332332 then true
333333 else (cl > ck))
334334 then throw(((((((toString(cl) + " ") + toString(ck)) + " ") + toString(ch)) + " ") + toString(cm)))
335335 else cn
336336 }
337337
338338
339339 func co (cp,cq,cr,cs) = {
340340 let ct = I(cr, cp)
341341 let cu = I(cs, cq)
342342 bZ(cu, ct)
343343 }
344344
345345
346346 func cv (cr,cs,cw) = {
347347 let cx = bA
348348 let cy = bB
349349 let cz = co(cx, cy, cr, cs)
350350 let cb = I(cr, cx)
351351 let ca = I(cs, cy)
352352 let cA = I(cw, a)
353353 let cB = bZ(cb, cA)
354354 let cC = bZ(ca, cA)
355355 [cz, cB, cC]
356356 }
357357
358358
359359 func cD (cr,cs,cw) = {
360360 let cE = cv(cr, cs, cw)
361361 [M(cE[0], a), M(cE[1], a), M(cE[2], a)]
362362 }
363363
364364
365365 func cF (cG,ar) = {
366366 let cH = if ((ar == 0))
367367 then 0
368368 else fraction(cG, ar, a)
369369 $Tuple2((cG - cH), cH)
370370 }
371371
372372
373373 func cI (cJ) = {
374374 let cK = cJ[0]
375375 let cL = cJ[1]
376376 let aV = (cK + cL)
377377 if ((aV == e))
378378 then e
379379 else {
380380 let aR = parseIntValue(bg)
381381 let cM = (aR * 2)
382382 let cE = fraction(cK, cL, f)
383383 let cN = fraction(cE, i, f)
384384 let cO = fraction(toBigInt(cM), aV, f)
385385 let cP = toBigInt((cM - 1))
386386 func cQ (cR) = {
387387 let cS = fraction(cR, cR, f)
388388 let cT = fraction(cS, cR, f)
389389 let cU = fraction(cT, f, cN)
390390 fraction((cO + fraction(cU, g, f)), cR, (fraction(cP, cR, f) + fraction(h, cU, f)))
391391 }
392392
393393 func cV (cW,cX) = if (cW._2)
394394 then cW
395395 else {
396396 let cR = cW._1
397397 let cY = cQ(cR)
398398 let cZ = (cY - value(cR))
399399 let da = if ((e > cZ))
400400 then -(cZ)
401401 else cZ
402402 if ((f >= da))
403403 then $Tuple2(cY, true)
404404 else $Tuple2(cY, false)
405405 }
406406
407407 let db = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]
408408 let dc = {
409409 let dd = db
410410 let de = size(dd)
411411 let df = $Tuple2(aV, false)
412412 func dg (dh,di) = if ((di >= de))
413413 then dh
414414 else cV(dh, dd[di])
415415
416416 func dj (dh,di) = if ((di >= de))
417417 then dh
418418 else throw("List size exceeds 17")
419419
420420 dj(dg(dg(dg(dg(dg(dg(dg(dg(dg(dg(dg(dg(dg(dg(dg(dg(dg(df, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17)
421421 }
422422 let cR = dc._1
423423 let dk = dc._2
424424 if (dk)
425425 then cR
426426 else throw(("D calculation error, D = " + toString(cR)))
427427 }
428428 }
429429
430430
431431 func dl (dm,dn,do,dp) = {
432432 let dq = bx
433433 let dr = toBase58String(value(by))
434434 let ds = toBase58String(value(bz))
435435 let dt = bA
436436 let du = bB
437437 let dv = toString(bw)
438438 let dw = valueOrErrorMessage(assetInfo(dq), "Wrong LP id").quantity
439439 if ((toBase58String(dq) != dn))
440440 then throw("Wrong pmt asset")
441441 else {
442442 let dx = bX(dr)
443443 let dy = I(dx, dt)
444444 let dz = bX(ds)
445445 let dA = I(dz, du)
446446 let dB = bZ(dA, dy)
447447 let dC = M(dB, a)
448448 let dD = I(do, a)
449449 let dE = I(dw, a)
450450 let dF = fraction(dy, dD, dE)
451451 let dG = fraction(dA, dD, dE)
452452 let dH = P(dF, dt, FLOOR)
453453 let dI = P(dG, du, FLOOR)
454454 let dJ = if ((dm == ""))
455455 then nil
456456 else [ScriptTransfer(dp, dH, if ((dr == "WAVES"))
457457 then unit
458458 else fromBase58String(dr)), ScriptTransfer(dp, dI, if ((ds == "WAVES"))
459459 then unit
460460 else fromBase58String(ds)), StringEntry(aj(toString(dp), dm), bT(dH, dI, do, dC, height, lastBlock.timestamp)), IntegerEntry(ac(), dC), IntegerEntry(ad(height, lastBlock.timestamp), dC)]
461461 $Tuple10(dH, dI, dr, ds, dx, dz, dw, dB, dv, dJ)
462462 }
463463 }
464464
465465
466466 func dK (dm,cg,dL,dM,dN,dO,dp,dP,dQ,dR,dS,dT,dU) = {
467467 let dq = bx
468468 let dV = toBase58String(value(by))
469469 let dW = toBase58String(value(bz))
470470 let dX = bA
471471 let dY = bB
472472 let dv = toString(bw)
473473 let dZ = valueOrErrorMessage(assetInfo(dq), "Wr lp as").quantity
474474 let dx = if (dP)
475475 then bX(dV)
476476 else if (if (dR)
477477 then (dU == dV)
478478 else false)
479479 then (bX(dV) - dT)
480480 else if (dR)
481481 then bX(dV)
482482 else (bX(dV) - dL)
483483 let dz = if (dP)
484484 then bX(dW)
485485 else if (if (dR)
486486 then (dU == dW)
487487 else false)
488488 then (bX(dW) - dT)
489489 else if (dR)
490490 then bX(dW)
491491 else (bX(dW) - dN)
492492 let ea = I(dL, dX)
493493 let eb = I(dN, dY)
494494 let ec = bZ(eb, ea)
495495 let dy = I(dx, dX)
496496 let dA = I(dz, dY)
497497 let cl = cI([dy, dA])
498498 let ed = if ((dZ == 0))
499499 then {
500500 let ck = cI([(dy + ea), (dA + eb)])
501501 let ee = if ((ck > cl))
502502 then true
503503 else throw("D1 should be greater than D0")
504504 if ((ee == ee))
505505 then {
506506 let dB = d
507507 let ef = d
508508 let cA = ck
509509 $Tuple5(M(cA, a), M(ea, dX), M(eb, dY), bZ((dA + eb), (dy + ea)), ef)
510510 }
511511 else throw("Strict value is not equal to itself.")
512512 }
513513 else {
514514 let dB = bZ(dA, dy)
515515 let eg = fraction(X((dB - ec)), c, dB)
516516 let ef = I(cg, a)
517517 if (if (if (dS)
518518 then (dB != d)
519519 else false)
520520 then (eg > ef)
521521 else false)
522522 then throw(((("Price slippage " + toString(eg)) + " > ") + toString(ef)))
523523 else {
524524 let eh = I(dZ, a)
525525 let ei = fraction(ea, cc(dA, dy, CEILING), c, CEILING)
526526 let ej = fraction(eb, c, cc(dA, dy, FLOOR), CEILING)
527527 let ek = if ((ei > eb))
528528 then $Tuple2(ej, eb)
529529 else $Tuple2(ea, ei)
530530 let el = ek._1
531531 let em = ek._2
532532 let ck = cI([(dy + el), (dA + em)])
533533 let ee = if ((ck > cl))
534534 then true
535535 else throw("D1 should be greater than D0")
536536 if ((ee == ee))
537537 then {
538538 let cA = fraction(eh, (ck - cl), cl)
539539 $Tuple5(P(cA, a, FLOOR), P(el, dX, CEILING), P(em, dY, CEILING), dB, ef)
540540 }
541541 else throw("Strict value is not equal to itself.")
542542 }
543543 }
544544 let en = ed._1
545545 let eo = ed._2
546546 let ep = ed._3
547547 let dC = M(ed._4, a)
548548 let eq = M(ed._5, a)
549549 if ((0 >= en))
550550 then throw("LP <= 0")
551551 else {
552552 let er = if (!(dQ))
553553 then 0
554554 else en
555555 let es = (dL - eo)
556556 let et = (dN - ep)
557557 let eu = if (if (dR)
558558 then (dU == dV)
559559 else false)
560560 then $Tuple2(dT, 0)
561561 else if (if (dR)
562562 then (dU == dW)
563563 else false)
564564 then $Tuple2(0, dT)
565565 else $Tuple2(eo, ep)
566566 let ev = eu._1
567567 let ew = eu._2
568568 let ex = [IntegerEntry(ac(), dC), IntegerEntry(ad(height, lastBlock.timestamp), dC), StringEntry(ag(dp, dm), bI(ev, ew, er, dC, cg, eq, height, lastBlock.timestamp, es, et))]
569569 $Tuple13(en, er, dC, dx, dz, dZ, dq, dv, ex, es, et, dM, dO)
570570 }
571571 }
572572
573573
574574 func ey (cJ,cX,ez) = {
575575 let eA = g
576576 let eB = cJ[if ((cX == 0))
577577 then 1
578578 else 0]
579579 let eC = parseBigIntValue(m)
580580 let aR = (parseBigIntValue(bg) * eC)
581581 let aV = eB
582582 let cM = (aR * eA)
583583 let eD = (((((ez * ez) / (eB * eA)) * ez) * eC) / (cM * eA))
584584 let eE = ((aV + ((ez * eC) / cM)) - ez)
585585 func cV (cW,eF) = {
586586 let eG = cW
587587 let eH = eG._1
588588 let dk = eG._2
589589 if ((dk != unit))
590590 then cW
591591 else {
592592 let eI = (((eH * eH) + eD) / ((g * eH) + eE))
593593 let eJ = Y((eI - value(eH)))
594594 if ((f >= eJ))
595595 then $Tuple2(eI, eF)
596596 else $Tuple2(eI, unit)
597597 }
598598 }
599599
600600 let db = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
601601 let eK = {
602602 let dd = db
603603 let de = size(dd)
604604 let df = $Tuple2(ez, unit)
605605 func dg (dh,di) = if ((di >= de))
606606 then dh
607607 else cV(dh, dd[di])
608608
609609 func dj (dh,di) = if ((di >= de))
610610 then dh
611611 else throw("List size exceeds 15")
612612
613613 dj(dg(dg(dg(dg(dg(dg(dg(dg(dg(dg(dg(dg(dg(dg(dg(df, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
614614 }
615615 let eH = eK._1
616616 let dk = eK._2
617617 if ((dk != unit))
618618 then eH
619619 else throw(("Y calculation error, Y = " + toString(eH)))
620620 }
621621
622622
623623 func eL (eM,eN,eO) = {
624624 let eP = fraction(cI([L(eM, toBigInt(bA)), L(eN, toBigInt(bB))]), c, eO)
625625 if ((eO == e))
626626 then e
627627 else eP
628628 }
629629
630630
631631 func eQ (eR,eS,eT) = {
632632 let eU = (toBigInt(bX(bq(by))) - eR)
633633 let eV = (toBigInt(bX(bq(bz))) - eS)
634634 let eW = (toBigInt(value(assetInfo(bx)).quantity) - eT)
635635 let eX = eL(eU, eV, eW)
636636 eX
637637 }
638638
639639
640640 func eY (eZ,fa,eT) = {
641641 let eU = (bX(bq(by)) + eZ)
642642 let eV = (bX(bq(bz)) + fa)
643643 let eW = (value(assetInfo(bx)).quantity + eT)
644644 let eP = eL(toBigInt(eU), toBigInt(eV), toBigInt(eW))
645645 let fb = [IntegerEntry(at, height), StringEntry(as, toString(eP))]
646646 $Tuple2(fb, eP)
647647 }
648648
649649
650650 func fc (fd,eP) = if ((eP >= fd))
651651 then true
652652 else ba("updated DLp lower than current DLp")
653653
654654
655655 func fe (ff) = {
656656 let eU = bX(bq(by))
657657 let eV = bX(bq(bz))
658658 let fg = ff.amount
659659 let fh = fraction(ff.amount, ff.price, a, FLOOR)
660660 let fi = if ((ff.orderType == Buy))
661661 then $Tuple2(fg, -(fh))
662662 else $Tuple2(-(fg), fh)
663663 let eZ = fi._1
664664 let fa = fi._2
665665 if (if (if (bh())
666666 then true
667667 else (bw == s))
668668 then true
669669 else (bw == t))
670670 then throw("Admin blocked")
671671 else if (if ((ff.assetPair.amountAsset != by))
672672 then true
673673 else (ff.assetPair.priceAsset != bz))
674674 then throw("Wr assets")
675675 else {
676676 let fj = parseBigIntValue(valueOrElse(getString(this, as), "0"))
677677 let fk = eY(eZ, fa, 0)
678678 let fl = fk._1
679679 let fm = fk._2
680680 let fn = (fm >= fj)
681681 let fo = makeString(["dLp=", toString(fj), " dLpNew=", toString(fm), " amountAssetBalance=", toString(eU), " priceAssetBalance=", toString(eV), " amountAssetBalanceDelta=", toString(eZ), " priceAssetBalanceDelta=", toString(fa), " height=", toString(height)], "")
682682 $Tuple2(fn, fo)
683683 }
684684 }
685685
686686
687687 func fp (cX) = if ((size(cX.payments) != 1))
688688 then throw("1 pmnt exp")
689689 else {
690690 let fq = value(cX.payments[0])
691691 let dn = value(fq.assetId)
692692 let dT = fq.amount
693693 let ed = dl(toBase58String(cX.transactionId), toBase58String(dn), dT, cX.caller)
694694 let dH = ed._1
695695 let dI = ed._2
696696 let dv = parseIntValue(ed._9)
697697 let dJ = ed._10
698698 if (if (bh())
699699 then true
700700 else (dv == t))
701701 then throw(("Admin blocked: " + toString(dv)))
702702 else $Tuple5(dH, dI, dT, dn, dJ)
703703 }
704704
705705
706706 func fr (fs,ai,ft,fu,cg,dQ,dR,dS,dT,dU) = {
707707 let ed = dK(ai, cg, value(ft).amount, value(ft).assetId, value(fu).amount, value(fu).assetId, fs, (ai == ""), dQ, dR, dS, dT, dU)
708708 let dv = parseIntValue(ed._8)
709709 if (if (if (bh())
710710 then true
711711 else (dv == r))
712712 then true
713713 else (dv == t))
714714 then throw(("Blocked:" + toString(dv)))
715715 else ed
716716 }
717717
718718
719719 func fv (fw,dn,dp,ai,fx) = {
720720 let dr = toBase58String(value(by))
721721 let ds = toBase58String(value(bz))
722722 let dq = bx
723723 let dX = bA
724724 let dY = bB
725725 let eW = toBigInt(valueOrErrorMessage(assetInfo(dq), "invalid lp asset").quantity)
726726 let fy = if ((eW > e))
727727 then true
728728 else throw("initial deposit requires all coins")
729729 if ((fy == fy))
730730 then {
731731 let dx = bX(dr)
732732 let dz = bX(ds)
733733 let fz = if ((ai == ""))
734734 then $Tuple2(dx, dz)
735735 else if ((dn == dr))
736736 then if ((fw > dx))
737737 then throw("invalid payment amount")
738738 else $Tuple2((dx - fw), dz)
739739 else if ((dn == ds))
740740 then if ((fw > dz))
741741 then throw("invalid payment amount")
742742 else $Tuple2(dx, (dz - fw))
743743 else throw("wrong pmtAssetId")
744744 let fA = fz._1
745745 let fB = fz._2
746746 let fC = if ((dn == dr))
747747 then $Tuple2(fw, 0)
748748 else if ((dn == ds))
749749 then $Tuple2(0, fw)
750750 else throw("invalid payment")
751751 let fD = fC._1
752752 let fE = fC._2
753753 let fF = if (fx)
754754 then $Tuple3(cF(fD, bd)._1, cF(fE, bd)._1, cF(fw, bd)._2)
755755 else $Tuple3(fD, fE, 0)
756756 let fG = fF._1
757757 let fH = fF._2
758758 let cH = fF._3
759759 let fI = (fA + fG)
760760 let fJ = (fB + fH)
761761 let cl = cI([I(fA, bA), I(fB, bB)])
762762 let ck = cI([I(fI, bA), I(fJ, bB)])
763763 let ee = if ((ck > cl))
764764 then true
765765 else throw()
766766 if ((ee == ee))
767767 then {
768768 let fK = fraction(eW, (ck - cl), cl, FLOOR)
769769 let dC = M(bZ(I(fJ, dY), I(fI, dX)), a)
770770 let ex = [IntegerEntry(ac(), dC), IntegerEntry(ad(height, lastBlock.timestamp), dC), StringEntry(ag(dp, ai), bI(fD, fE, toInt(fK), dC, 0, 0, height, lastBlock.timestamp, 0, 0))]
771771 let fL = fraction(fB, a, fA)
772772 let fM = fraction(fw, a, (fL + a))
773773 let fN = (fw - fM)
774774 let fO = fraction(eW, toBigInt(fN), toBigInt(fB))
775775 let fP = toInt(fraction((fK - fO), b, fO))
776776 $Tuple4(toInt(fK), ex, cH, fP)
777777 }
778778 else throw("Strict value is not equal to itself.")
779779 }
780780 else throw("Strict value is not equal to itself.")
781781 }
782782
783783
784784 func fQ (fR,fS,fT,fs,fU,fV) = {
785785 let dq = toBase58String(value(bx))
786786 let dr = toBase58String(value(by))
787787 let ds = toBase58String(value(bz))
788788 let fW = bA
789789 let fX = bB
790790 let fY = bw
791791 let dp = if ((fs == bH))
792792 then fU
793793 else fs
794794 let fq = value(fT[0])
795795 let dn = value(fq.assetId)
796796 let dT = fq.amount
797797 let eX = eQ(e, e, e)
798798 if ((eX == eX))
799799 then {
800800 let dm = toBase58String(fV)
801801 if ((dq != toBase58String(dn)))
802802 then throw("Wrong LP")
803803 else {
804804 let dx = bX(dr)
805805 let dz = bX(ds)
806806 let fZ = {
807807 let be = invoke(this, "getOneTknV2READONLY", [fR, dT], nil)
808808 if ($isInstanceOf(be, "(Int, Int)"))
809809 then be
810810 else throw(($getType(be) + " couldn't be cast to (Int, Int)"))
811811 }
812812 if ((fZ == fZ))
813813 then {
814814 let cH = fZ._2
815815 let ga = fZ._1
816816 let gb = if (if ((fS > 0))
817817 then (fS > ga)
818818 else false)
819819 then ba(makeString(["amount to receive is less than ", toString(fS)], ""))
820820 else ga
821821 let gc = if ((fR == dr))
822822 then $Tuple4(gb, 0, ((dx - gb) - cH), dz)
823823 else if ((fR == ds))
824824 then $Tuple4(0, gb, dx, ((dz - gb) - cH))
825825 else throw("invalid out asset id")
826826 let gd = gc._1
827827 let ge = gc._2
828828 let fI = gc._3
829829 let fJ = gc._4
830830 let gf = bZ(I(fJ, fX), I(fI, fW))
831831 let gg = M(gf, a)
832832 let gh = if ((fR == "WAVES"))
833833 then unit
834834 else fromBase58String(fR)
835835 let gi = if ((cH > 0))
836836 then [ScriptTransfer(bj, cH, gh)]
837837 else nil
838838 let dJ = ([ScriptTransfer(dp, gb, gh), StringEntry(aj(toString(dp), dm), bT(gd, ge, dT, gg, height, lastBlock.timestamp)), IntegerEntry(ac(), gg), IntegerEntry(ad(height, lastBlock.timestamp), gg)] ++ gi)
839839 if ((dJ == dJ))
840840 then {
841841 let gj = invoke(aU, "burn", [dT], [AttachedPayment(dn, dT)])
842842 if ((gj == gj))
843843 then {
844844 let gk = {
845845 let gl = if ((this == bj))
846846 then 0
847847 else cH
848848 let gm = if ((bo(fR) == by))
849849 then true
850850 else false
851851 if (gm)
852852 then $Tuple2(-((ga + gl)), 0)
853853 else $Tuple2(0, -((ga + gl)))
854854 }
855855 let eZ = gk._1
856856 let fa = gk._2
857857 let gn = eY(eZ, fa, 0)
858858 let go = gn._1
859859 let eP = gn._2
860860 let gp = fc(eX, eP)
861861 if ((gp == gp))
862862 then $Tuple2((dJ ++ go), gb)
863863 else throw("Strict value is not equal to itself.")
864864 }
865865 else throw("Strict value is not equal to itself.")
866866 }
867867 else throw("Strict value is not equal to itself.")
868868 }
869869 else throw("Strict value is not equal to itself.")
870870 }
871871 }
872872 else throw("Strict value is not equal to itself.")
873873 }
874874
875875
876876 func gq () = {
877877 let gr = aS()
878878 let aQ = getString(gr, aa())
879879 if ($isInstanceOf(aQ, "String"))
880880 then {
881881 let aV = aQ
882882 fromBase58String(aV)
883883 }
884884 else if ($isInstanceOf(aQ, "Unit"))
885885 then unit
886886 else throw("Match error")
887887 }
888888
889889
890890 let gs = throw("Permission denied")
891891
892892 func gt (cX) = {
893893 let aQ = gq()
894894 if ($isInstanceOf(aQ, "ByteVector"))
895895 then {
896896 let gu = aQ
897897 (cX.callerPublicKey == gu)
898898 }
899899 else if ($isInstanceOf(aQ, "Unit"))
900900 then (cX.caller == this)
901901 else throw("Match error")
902902 }
903903
904904
905905 func gv (cX) = {
906906 let aQ = gq()
907907 if ($isInstanceOf(aQ, "ByteVector"))
908908 then {
909909 let gu = aQ
910910 if ((cX.callerPublicKey == gu))
911911 then true
912912 else gs
913913 }
914914 else if ($isInstanceOf(aQ, "Unit"))
915915 then if ((cX.caller == this))
916916 then true
917917 else gs
918918 else throw("Match error")
919919 }
920920
921921
922922 func gw (gx,ez,gy) = {
923923 let bs = bk()
924924 let dr = bs[x]
925925 let ds = bs[y]
926926 let eA = g
927927 let eC = parseBigIntValue(m)
928928 let aR = (parseBigIntValue(bg) * eC)
929929 let cJ = if ((gx == false))
930930 then [(toBigInt(bX(dr)) + gy), toBigInt(bX(ds))]
931931 else [(toBigInt(bX(ds)) + gy), toBigInt(bX(dr))]
932932 let eB = cJ[0]
933933 let aV = eB
934934 let cM = (aR * eA)
935935 let eD = (((((ez * ez) / (eB * eA)) * ez) * eC) / (cM * eA))
936936 let eE = ((aV + ((ez * eC) / cM)) - ez)
937937 func cV (cW,eF) = {
938938 let gz = cW
939939 let eH = gz._1
940940 let dk = gz._2
941941 if ((dk != unit))
942942 then cW
943943 else {
944944 let eI = (((eH * eH) + eD) / ((g * eH) + eE))
945945 let eJ = Y((eI - value(eH)))
946946 if ((f >= eJ))
947947 then $Tuple2(eI, eF)
948948 else $Tuple2(eI, unit)
949949 }
950950 }
951951
952952 let db = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
953953 let gA = {
954954 let dd = db
955955 let de = size(dd)
956956 let df = $Tuple2(ez, unit)
957957 func dg (dh,di) = if ((di >= de))
958958 then dh
959959 else cV(dh, dd[di])
960960
961961 func dj (dh,di) = if ((di >= de))
962962 then dh
963963 else throw("List size exceeds 15")
964964
965965 dj(dg(dg(dg(dg(dg(dg(dg(dg(dg(dg(dg(dg(dg(dg(dg(df, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
966966 }
967967 let eH = gA._1
968968 let dk = gA._2
969969 if ((dk != unit))
970970 then eH
971971 else throw(("Y calculation error, Y = " + toString(eH)))
972972 }
973973
974974
975975 func gB () = valueOrElse(getBoolean(aU, aH(toString(this))), false)
976976
977977
978978 @Callable(cX)
979979 func calculateAmountOutForSwapREADONLY (gC,gx,gD) = {
980980 let gE = if ((gx == false))
981981 then {
982982 let gF = aW(this, al())
983983 let gy = (toBigInt(bX(aW(this, ak()))) + toBigInt(gC))
984984 $Tuple2(gF, gy)
985985 }
986986 else {
987987 let gF = aW(this, ak())
988988 let gy = (toBigInt(bX(aW(this, al()))) + toBigInt(gC))
989989 $Tuple2(gF, gy)
990990 }
991991 let gF = gE._1
992992 let gy = gE._2
993993 let bs = bk()
994994 let dr = bs[x]
995995 let ds = bs[y]
996996 let cJ = [toBigInt(bX(dr)), toBigInt(bX(ds))]
997997 let ez = cI(cJ)
998998 let eH = gw(gx, ez, toBigInt(gC))
999999 let gG = ((toBigInt(bX(gF)) - eH) - toBigInt(1))
10001000 let gH = max([0, toInt(gG)])
10011001 let gI = if ((gx == false))
10021002 then [((toBigInt(bX(dr)) + toBigInt(gC)) + toBigInt(gD)), (toBigInt(bX(ds)) - gG)]
10031003 else [(toBigInt(bX(dr)) - gG), ((toBigInt(bX(ds)) + toBigInt(gC)) + toBigInt(gD))]
10041004 let gJ = cI(gI)
10051005 let ee = if ((gJ >= ez))
10061006 then true
10071007 else throw(makeString(["new D is fewer error", toString(ez), toString(gJ)], "__"))
10081008 if ((ee == ee))
10091009 then $Tuple2(nil, gH)
10101010 else throw("Strict value is not equal to itself.")
10111011 }
10121012
10131013
10141014
10151015 @Callable(cX)
10161016 func calculateAmountOutForSwapAndSendTokens (gC,gx,gK,gL,gD) = {
10171017 let gM = {
10181018 let be = invoke(aU, "getSwapContractREADONLY", nil, nil)
10191019 if ($isInstanceOf(be, "String"))
10201020 then be
10211021 else throw(($getType(be) + " couldn't be cast to String"))
10221022 }
1023- let gN = [if ((value(cX.payments[0]).amount >= gC))
1023+ let gN = {
1024+ let be = invoke(aU, "isPoolSwapDisabledREADONLY", [toString(this)], nil)
1025+ if ($isInstanceOf(be, "Boolean"))
1026+ then be
1027+ else throw(($getType(be) + " couldn't be cast to Boolean"))
1028+ }
1029+ let gO = if (if (bh())
1030+ then true
1031+ else (bw == t))
1032+ then true
1033+ else gN
1034+ let gP = [if (if (!(gO))
1035+ then true
1036+ else gt(cX))
1037+ then true
1038+ else ba("swap operation is blocked by admin"), if ((value(cX.payments[0]).amount >= gC))
10241039 then true
10251040 else ba("Wrong amount"), if ((cX.caller == addressFromStringValue(gM)))
10261041 then true
10271042 else ba("Permission denied")]
1028- if ((gN == gN))
1043+ if ((gP == gP))
10291044 then {
10301045 let fq = value(cX.payments[0])
1031- let gO = bq(fq.assetId)
1032- let gP = if ((gx == false))
1046+ let gQ = bq(fq.assetId)
1047+ let gR = if ((gx == false))
10331048 then {
10341049 let gF = aW(this, al())
1035- let gy = (bX(gO) - value(cX.payments[0]).amount)
1050+ let gy = (bX(gQ) - value(cX.payments[0]).amount)
10361051 $Tuple2(gF, gy)
10371052 }
10381053 else {
10391054 let gF = aW(this, ak())
1040- let gy = (bX(gO) - value(cX.payments[0]).amount)
1055+ let gy = (bX(gQ) - value(cX.payments[0]).amount)
10411056 $Tuple2(gF, gy)
10421057 }
1043- let gF = gP._1
1044- let gy = gP._2
1058+ let gF = gR._1
1059+ let gy = gR._2
10451060 let bs = bk()
10461061 let dr = bs[x]
10471062 let ds = bs[y]
10481063 let cJ = if ((gx == false))
10491064 then [(toBigInt(bX(dr)) - toBigInt(value(cX.payments[0]).amount)), toBigInt(bX(ds))]
10501065 else [toBigInt(bX(dr)), (toBigInt(bX(ds)) - toBigInt(value(cX.payments[0]).amount))]
10511066 let ez = cI(cJ)
10521067 let eH = gw(gx, ez, toBigInt(0))
10531068 let gG = ((toBigInt(bX(gF)) - eH) - toBigInt(1))
10541069 let gH = max([0, toInt(gG)])
1055- let gQ = if ((gH >= gK))
1070+ let gS = if ((gH >= gK))
10561071 then true
10571072 else throw("Exchange result is fewer coins than expected")
1058- if ((gQ == gQ))
1073+ if ((gS == gS))
10591074 then {
10601075 let gI = if ((gx == false))
10611076 then [(toBigInt(bX(dr)) + toBigInt(gD)), (toBigInt(bX(ds)) - gG)]
10621077 else [(toBigInt(bX(dr)) - gG), (toBigInt(bX(ds)) + toBigInt(gD))]
10631078 let gJ = cI(gI)
10641079 let ee = if ((gJ >= ez))
10651080 then true
10661081 else throw("new D is fewer error")
10671082 if ((ee == ee))
10681083 then {
10691084 let eZ = if (gx)
10701085 then -(gH)
10711086 else gD
10721087 let fa = if (gx)
10731088 then gD
10741089 else -(gH)
10751090 let go = eY(eZ, fa, 0)._1
10761091 if ((go == go))
10771092 then $Tuple2([ScriptTransfer(addressFromStringValue(gL), gH, bo(gF))], gH)
10781093 else throw("Strict value is not equal to itself.")
10791094 }
10801095 else throw("Strict value is not equal to itself.")
10811096 }
10821097 else throw("Strict value is not equal to itself.")
10831098 }
10841099 else throw("Strict value is not equal to itself.")
10851100 }
10861101
10871102
10881103
10891104 @Callable(cX)
10901105 func constructor (Z) = {
10911106 let eD = gv(cX)
10921107 if ((eD == eD))
10931108 then [StringEntry(Z(), Z)]
10941109 else throw("Strict value is not equal to itself.")
10951110 }
10961111
10971112
10981113
10991114 @Callable(cX)
1100-func put (gR,gS) = {
1101- let gT = bC()
1102- let gU = valueOrErrorMessage(addressFromString(gT[D]), "Wr st addr")
1103- let gV = valueOrErrorMessage(addressFromString(gT[F]), "Wr sl addr")
1104- if ((0 > gR))
1115+func put (gT,gU) = {
1116+ let gV = bC()
1117+ let gW = valueOrErrorMessage(addressFromString(gV[D]), "Wr st addr")
1118+ let gX = valueOrErrorMessage(addressFromString(gV[F]), "Wr sl addr")
1119+ if ((0 > gT))
11051120 then throw("Wrong slippage")
11061121 else if ((size(cX.payments) != 2))
11071122 then throw("2 pmnts expd")
11081123 else {
1109- let gW = toBigInt(value(cX.payments[0]).amount)
1110- let gX = toBigInt(value(cX.payments[1]).amount)
1111- let eU = (toBigInt(bX(bq(by))) - gW)
1124+ let gY = toBigInt(value(cX.payments[0]).amount)
1125+ let gZ = toBigInt(value(cX.payments[1]).amount)
1126+ let eU = (toBigInt(bX(bq(by))) - gY)
11121127 if ((eU == eU))
11131128 then {
1114- let eV = (toBigInt(bX(bq(bz))) - gX)
1129+ let eV = (toBigInt(bX(bq(bz))) - gZ)
11151130 if ((eV == eV))
11161131 then {
11171132 let eW = toBigInt(value(assetInfo(bx)).quantity)
11181133 if ((eW == eW))
11191134 then {
1120- let eX = eQ(gW, gX, toBigInt(0))
1135+ let eX = eQ(gY, gZ, toBigInt(0))
11211136 if ((eX == eX))
11221137 then {
1123- let gY = fr(toString(cX.caller), toBase58String(cX.transactionId), AttachedPayment(value(cX.payments[0]).assetId, value(cX.payments[0]).amount), cX.payments[1], gR, true, false, true, 0, "")
1124- let er = gY._2
1125- let gZ = gY._7
1126- let dJ = gY._9
1127- let es = gY._10
1128- let et = gY._11
1129- let dr = gY._12
1130- let ds = gY._13
1138+ let ha = fr(toString(cX.caller), toBase58String(cX.transactionId), AttachedPayment(value(cX.payments[0]).assetId, value(cX.payments[0]).amount), cX.payments[1], gT, true, false, true, 0, "")
1139+ let er = ha._2
1140+ let hb = ha._7
1141+ let dJ = ha._9
1142+ let es = ha._10
1143+ let et = ha._11
1144+ let dr = ha._12
1145+ let ds = ha._13
11311146 let ed = invoke(aU, "emit", [er], nil)
11321147 if ((ed == ed))
11331148 then {
1134- let ha = {
1149+ let hc = {
11351150 let aQ = ed
11361151 if ($isInstanceOf(aQ, "Address"))
11371152 then {
1138- let hb = aQ
1139- invoke(hb, "emit", [er], nil)
1153+ let hd = aQ
1154+ invoke(hd, "emit", [er], nil)
11401155 }
11411156 else unit
11421157 }
1143- if ((ha == ha))
1158+ if ((hc == hc))
11441159 then {
1145- let hc = if ((es > 0))
1146- then invoke(gV, "put", nil, [AttachedPayment(dr, es)])
1160+ let he = if ((es > 0))
1161+ then invoke(gX, "put", nil, [AttachedPayment(dr, es)])
11471162 else nil
1148- if ((hc == hc))
1163+ if ((he == he))
11491164 then {
1150- let hd = if ((et > 0))
1151- then invoke(gV, "put", nil, [AttachedPayment(ds, et)])
1165+ let hf = if ((et > 0))
1166+ then invoke(gX, "put", nil, [AttachedPayment(ds, et)])
11521167 else nil
1153- if ((hd == hd))
1168+ if ((hf == hf))
11541169 then {
1155- let he = if (gS)
1170+ let hg = if (gU)
11561171 then {
1157- let hf = invoke(gU, "stake", nil, [AttachedPayment(gZ, er)])
1158- if ((hf == hf))
1172+ let hh = invoke(gW, "stake", nil, [AttachedPayment(hb, er)])
1173+ if ((hh == hh))
11591174 then nil
11601175 else throw("Strict value is not equal to itself.")
11611176 }
1162- else [ScriptTransfer(cX.caller, er, gZ)]
1163- let hg = eY(0, 0, 0)
1164- let go = hg._1
1165- let eP = hg._2
1166- let hh = if ((eP >= eX))
1177+ else [ScriptTransfer(cX.caller, er, hb)]
1178+ let hi = eY(0, 0, 0)
1179+ let go = hi._1
1180+ let eP = hi._2
1181+ let hj = if ((eP >= eX))
11671182 then true
11681183 else ba(makeString(["updated DLp lower than current DLp", toString(eU), toString(eV), toString(eW), toString(eX), toString(eP), toString(es), toString(et)], " "))
1169- if ((hh == hh))
1184+ if ((hj == hj))
11701185 then {
1171- let hi = value(assetInfo(bx)).quantity
1172- if ((hi == hi))
1173- then ((dJ ++ he) ++ go)
1186+ let hk = value(assetInfo(bx)).quantity
1187+ if ((hk == hk))
1188+ then ((dJ ++ hg) ++ go)
11741189 else throw("Strict value is not equal to itself.")
11751190 }
11761191 else throw("Strict value is not equal to itself.")
11771192 }
11781193 else throw("Strict value is not equal to itself.")
11791194 }
11801195 else throw("Strict value is not equal to itself.")
11811196 }
11821197 else throw("Strict value is not equal to itself.")
11831198 }
11841199 else throw("Strict value is not equal to itself.")
11851200 }
11861201 else throw("Strict value is not equal to itself.")
11871202 }
11881203 else throw("Strict value is not equal to itself.")
11891204 }
11901205 else throw("Strict value is not equal to itself.")
11911206 }
11921207 else throw("Strict value is not equal to itself.")
11931208 }
11941209 }
11951210
11961211
11971212
11981213 @Callable(cX)
1199-func putOneTknV2 (fS,gS) = {
1200- let hj = {
1214+func putOneTknV2 (fS,gU) = {
1215+ let hl = {
12011216 let be = invoke(aU, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
12021217 if ($isInstanceOf(be, "Boolean"))
12031218 then be
12041219 else throw(($getType(be) + " couldn't be cast to Boolean"))
12051220 }
1206- let hk = if (if (if (bh())
1221+ let hm = if (if (if (bh())
12071222 then true
12081223 else (bw == r))
12091224 then true
12101225 else (bw == t))
12111226 then true
1212- else hj
1213- let gN = [if (if (!(hk))
1227+ else hl
1228+ let gP = [if (if (!(hm))
12141229 then true
12151230 else gt(cX))
12161231 then true
12171232 else ba("put operation is blocked by admin"), if ((size(cX.payments) == 1))
12181233 then true
12191234 else ba("exactly 1 payment are expected")]
1220- if ((gN == gN))
1235+ if ((gP == gP))
12211236 then {
12221237 let dr = toBase58String(value(by))
12231238 let ds = toBase58String(value(bz))
12241239 let dq = bx
12251240 let fW = bA
12261241 let fX = bB
12271242 let dp = if ((cX.caller == this))
12281243 then cX.originCaller
12291244 else cX.caller
12301245 let fq = value(cX.payments[0])
12311246 let dn = toBase58String(value(fq.assetId))
12321247 let dT = fq.amount
12331248 let eX = if ((fq.assetId == by))
12341249 then eQ(toBigInt(dT), toBigInt(0), toBigInt(0))
12351250 else eQ(toBigInt(0), toBigInt(dT), toBigInt(0))
12361251 if ((eX == eX))
12371252 then {
1238- let hl = fv(dT, dn, toString(dp), toBase58String(cX.transactionId), true)
1239- if ((hl == hl))
1253+ let hn = fv(dT, dn, toString(dp), toBase58String(cX.transactionId), true)
1254+ if ((hn == hn))
12401255 then {
1241- let cH = hl._3
1242- let dJ = hl._2
1243- let hm = hl._1
1256+ let cH = hn._3
1257+ let dJ = hn._2
1258+ let ho = hn._1
12441259 let er = if (if ((fS > 0))
1245- then (fS > hm)
1260+ then (fS > ho)
12461261 else false)
12471262 then ba(makeString(["amount to receive is less than ", toString(fS)], ""))
1248- else hm
1249- let gY = invoke(aU, "emit", [er], nil)
1250- if ((gY == gY))
1263+ else ho
1264+ let ha = invoke(aU, "emit", [er], nil)
1265+ if ((ha == ha))
12511266 then {
1252- let ha = {
1253- let aQ = gY
1267+ let hc = {
1268+ let aQ = ha
12541269 if ($isInstanceOf(aQ, "Address"))
12551270 then {
1256- let hb = aQ
1257- invoke(hb, "emit", [er], nil)
1271+ let hd = aQ
1272+ invoke(hd, "emit", [er], nil)
12581273 }
12591274 else unit
12601275 }
1261- if ((ha == ha))
1276+ if ((hc == hc))
12621277 then {
1263- let he = if (gS)
1278+ let hg = if (gU)
12641279 then {
1265- let hf = invoke(bE, "stakeFor", [toString(cX.caller)], [AttachedPayment(dq, er)])
1266- if ((hf == hf))
1280+ let hh = invoke(bE, "stakeFor", [toString(cX.caller)], [AttachedPayment(dq, er)])
1281+ if ((hh == hh))
12671282 then nil
12681283 else throw("Strict value is not equal to itself.")
12691284 }
12701285 else [ScriptTransfer(cX.caller, er, dq)]
12711286 let gi = if ((cH > 0))
12721287 then [ScriptTransfer(bj, cH, fromBase58String(dn))]
12731288 else nil
1274- let hn = if ((this == bj))
1289+ let hp = if ((this == bj))
12751290 then $Tuple2(0, 0)
12761291 else {
1277- let ho = if ((fq.assetId == by))
1292+ let hq = if ((fq.assetId == by))
12781293 then true
12791294 else false
1280- if (ho)
1295+ if (hq)
12811296 then $Tuple2(-(cH), 0)
12821297 else $Tuple2(0, -(cH))
12831298 }
1284- let eZ = hn._1
1285- let fa = hn._2
1286- let hp = eY(eZ, fa, 0)
1287- let go = hp._1
1288- let eP = hp._2
1299+ let eZ = hp._1
1300+ let fa = hp._2
1301+ let hr = eY(eZ, fa, 0)
1302+ let go = hr._1
1303+ let eP = hr._2
12891304 let gp = fc(eX, eP)
12901305 if ((gp == gp))
1291- then $Tuple2((((dJ ++ he) ++ gi) ++ go), er)
1306+ then $Tuple2((((dJ ++ hg) ++ gi) ++ go), er)
12921307 else throw("Strict value is not equal to itself.")
12931308 }
12941309 else throw("Strict value is not equal to itself.")
12951310 }
12961311 else throw("Strict value is not equal to itself.")
12971312 }
12981313 else throw("Strict value is not equal to itself.")
12991314 }
13001315 else throw("Strict value is not equal to itself.")
13011316 }
13021317 else throw("Strict value is not equal to itself.")
13031318 }
13041319
13051320
13061321
13071322 @Callable(cX)
1308-func putForFree (hq) = if ((0 > hq))
1323+func putForFree (hs) = if ((0 > hs))
13091324 then throw("Wrong slpg")
13101325 else if ((size(cX.payments) != 2))
13111326 then throw("2 pmnts expd")
13121327 else {
1313- let hr = fr(toString(cX.caller), toBase58String(cX.transactionId), AttachedPayment(value(cX.payments[0]).assetId, value(cX.payments[0]).amount), cX.payments[1], hq, false, false, true, 0, "")
1314- let dJ = hr._9
1315- let gW = toBigInt(value(cX.payments[0]).amount)
1316- let gX = toBigInt(value(cX.payments[1]).amount)
1317- let eX = eQ(gW, gX, toBigInt(0))
1328+ let ht = fr(toString(cX.caller), toBase58String(cX.transactionId), AttachedPayment(value(cX.payments[0]).assetId, value(cX.payments[0]).amount), cX.payments[1], hs, false, false, true, 0, "")
1329+ let dJ = ht._9
1330+ let gY = toBigInt(value(cX.payments[0]).amount)
1331+ let gZ = toBigInt(value(cX.payments[1]).amount)
1332+ let eX = eQ(gY, gZ, toBigInt(0))
13181333 if ((eX == eX))
13191334 then {
1320- let hs = eY(0, 0, 0)
1321- let go = hs._1
1322- let eP = hs._2
1335+ let hu = eY(0, 0, 0)
1336+ let go = hu._1
1337+ let eP = hu._2
13231338 let gp = fc(eX, eP)
13241339 if ((gp == gp))
13251340 then (dJ ++ go)
13261341 else throw("Strict value is not equal to itself.")
13271342 }
13281343 else throw("Strict value is not equal to itself.")
13291344 }
13301345
13311346
13321347
13331348 @Callable(cX)
13341349 func get () = {
13351350 let eX = eQ(toBigInt(0), toBigInt(0), toBigInt(0))
13361351 if ((eX == eX))
13371352 then {
13381353 let ed = fp(cX)
1339- let ht = ed._1
1354+ let hv = ed._1
13401355 let dI = ed._2
13411356 let dT = ed._3
13421357 let dn = ed._4
13431358 let dJ = ed._5
13441359 let eE = invoke(aU, "burn", [dT], [AttachedPayment(dn, dT)])
13451360 if ((eE == eE))
13461361 then {
1347- let hu = eY(-(ht), -(dI), 0)
1348- let go = hu._1
1349- let eP = hu._2
1362+ let hw = eY(-(hv), -(dI), 0)
1363+ let go = hw._1
1364+ let eP = hw._2
13501365 let gp = fc(eX, eP)
13511366 if ((gp == gp))
13521367 then (dJ ++ go)
13531368 else throw("Strict value is not equal to itself.")
13541369 }
13551370 else throw("Strict value is not equal to itself.")
13561371 }
13571372 else throw("Strict value is not equal to itself.")
13581373 }
13591374
13601375
13611376
13621377 @Callable(cX)
13631378 func getOneTknV2 (fR,fS) = {
1364- let hj = {
1379+ let hl = {
13651380 let be = invoke(aU, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
13661381 if ($isInstanceOf(be, "Boolean"))
13671382 then be
13681383 else throw(($getType(be) + " couldn't be cast to Boolean"))
13691384 }
1370- let hv = if (if (bh())
1385+ let hx = if (if (bh())
13711386 then true
13721387 else (bw == t))
13731388 then true
1374- else hj
1375- let gN = [if (if (!(hv))
1389+ else hl
1390+ let gP = [if (if (!(hx))
13761391 then true
13771392 else gt(cX))
13781393 then true
13791394 else ba("get operation is blocked by admin"), if ((size(cX.payments) == 1))
13801395 then true
13811396 else ba("exactly 1 payment are expected")]
1382- if ((gN == gN))
1397+ if ((gP == gP))
13831398 then {
1384- let hw = fQ(fR, fS, cX.payments, cX.caller, cX.originCaller, cX.transactionId)
1385- let dJ = hw._1
1386- let gb = hw._2
1399+ let hy = fQ(fR, fS, cX.payments, cX.caller, cX.originCaller, cX.transactionId)
1400+ let dJ = hy._1
1401+ let gb = hy._2
13871402 $Tuple2(dJ, gb)
13881403 }
13891404 else throw("Strict value is not equal to itself.")
13901405 }
13911406
13921407
13931408
13941409 @Callable(cX)
13951410 func refreshDLp () = {
1396- let hx = valueOrElse(getInteger(at), 0)
1397- let hy = if (((height - hx) >= aw))
1411+ let hz = valueOrElse(getInteger(at), 0)
1412+ let hA = if (((height - hz) >= aw))
13981413 then unit
13991414 else ba(makeString([toString(aw), " blocks have not passed since the previous call"], ""))
1400- if ((hy == hy))
1415+ if ((hA == hA))
14011416 then {
14021417 let fj = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, as), "0")), bc("invalid dLp"))
1403- let hz = eY(0, 0, 0)
1404- let hA = hz._1
1405- let eP = hz._2
1418+ let hB = eY(0, 0, 0)
1419+ let hC = hB._1
1420+ let eP = hB._2
14061421 let fb = if ((fj != eP))
1407- then hA
1422+ then hC
14081423 else ba("nothing to refresh")
14091424 $Tuple2(fb, toString(eP))
14101425 }
14111426 else throw("Strict value is not equal to itself.")
14121427 }
14131428
14141429
14151430
14161431 @Callable(cX)
1417-func getOneTknV2READONLY (fR,hB) = {
1432+func getOneTknV2READONLY (fR,hD) = {
14181433 let dr = toBase58String(value(by))
14191434 let ds = toBase58String(value(bz))
14201435 let dq = toBase58String(value(bx))
14211436 let cJ = [toBigInt(bX(dr)), toBigInt(bX(ds))]
14221437 let eO = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(dq)), "invalid lp asset").quantity)
14231438 let cl = cI(cJ)
1424- let ck = (cl - fraction(toBigInt(hB), cl, eO))
1425- let hC = if ((fR == dr))
1439+ let ck = (cl - fraction(toBigInt(hD), cl, eO))
1440+ let hE = if ((fR == dr))
14261441 then 0
14271442 else if ((fR == ds))
14281443 then 1
14291444 else throw("invalid out asset id")
1430- let hD = ey(cJ, hC, ck)
1431- let gG = (cJ[hC] - hD)
1445+ let hF = ey(cJ, hE, ck)
1446+ let gG = (cJ[hE] - hF)
14321447 let gH = max([0, toInt((gG - f))])
1433- let hE = cF(gH, bf)
1434- let ga = hE._1
1435- let cH = hE._2
1448+ let hG = cF(gH, bf)
1449+ let ga = hG._1
1450+ let cH = hG._2
14361451 $Tuple2(nil, $Tuple2(ga, cH))
14371452 }
14381453
14391454
14401455
14411456 @Callable(cX)
1442-func getOneTknV2WithBonusREADONLY (fR,hB) = {
1457+func getOneTknV2WithBonusREADONLY (fR,hD) = {
14431458 let dr = toBase58String(value(by))
14441459 let ds = toBase58String(value(bz))
14451460 let dq = toBase58String(value(bx))
14461461 let dx = bX(dr)
14471462 let dz = bX(ds)
1448- let hF = {
1449- let be = invoke(this, "getOneTknV2READONLY", [fR, hB], nil)
1463+ let hH = {
1464+ let be = invoke(this, "getOneTknV2READONLY", [fR, hD], nil)
14501465 if ($isInstanceOf(be, "(Int, Int)"))
14511466 then be
14521467 else throw(($getType(be) + " couldn't be cast to (Int, Int)"))
14531468 }
1454- let ga = hF._1
1455- let cH = hF._2
1456- let ed = dl("", dq, hB, this)
1469+ let ga = hH._1
1470+ let cH = hH._2
1471+ let ed = dl("", dq, hD, this)
14571472 let dH = ed._1
14581473 let dI = ed._2
1459- let hG = (dH + dI)
1460- let fP = if ((hG == 0))
1474+ let hI = (dH + dI)
1475+ let fP = if ((hI == 0))
14611476 then if ((ga == 0))
14621477 then 0
14631478 else throw("bonus calculation error")
1464- else fraction((ga - hG), a, hG)
1479+ else fraction((ga - hI), a, hI)
14651480 $Tuple2(nil, $Tuple3(ga, cH, fP))
14661481 }
14671482
14681483
14691484
14701485 @Callable(cX)
1471-func getNoLess (hH,hI) = {
1486+func getNoLess (hJ,hK) = {
14721487 let ed = fp(cX)
14731488 let dH = ed._1
14741489 let dI = ed._2
14751490 let dT = ed._3
14761491 let dn = ed._4
14771492 let dJ = ed._5
1478- if ((hH > dH))
1479- then throw(((("Failed: " + toString(dH)) + " < ") + toString(hH)))
1480- else if ((hI > dI))
1481- then throw(((("Failed: " + toString(dI)) + " < ") + toString(hI)))
1493+ if ((hJ > dH))
1494+ then throw(((("Failed: " + toString(dH)) + " < ") + toString(hJ)))
1495+ else if ((hK > dI))
1496+ then throw(((("Failed: " + toString(dI)) + " < ") + toString(hK)))
14821497 else {
14831498 let eX = eQ(toBigInt(0), toBigInt(0), toBigInt(0))
14841499 if ((eX == eX))
14851500 then {
1486- let hJ = invoke(aU, "burn", [dT], [AttachedPayment(dn, dT)])
1487- if ((hJ == hJ))
1501+ let hL = invoke(aU, "burn", [dT], [AttachedPayment(dn, dT)])
1502+ if ((hL == hL))
14881503 then {
1489- let hK = eY(-(dH), -(dI), 0)
1490- let go = hK._1
1491- let eP = hK._2
1504+ let hM = eY(-(dH), -(dI), 0)
1505+ let go = hM._1
1506+ let eP = hM._2
14921507 let gp = fc(eX, eP)
14931508 if ((gp == gp))
14941509 then (dJ ++ go)
14951510 else throw("Strict value is not equal to itself.")
14961511 }
14971512 else throw("Strict value is not equal to itself.")
14981513 }
14991514 else throw("Strict value is not equal to itself.")
15001515 }
15011516 }
15021517
15031518
15041519
15051520 @Callable(cX)
15061521 func unstakeAndGet (cG) = {
1507- let hL = if ((size(cX.payments) != 0))
1522+ let hN = if ((size(cX.payments) != 0))
15081523 then throw("No pmnts expd")
15091524 else true
1510- if ((hL == hL))
1525+ if ((hN == hN))
15111526 then {
1512- let hM = bC()
1513- let gZ = bx
1514- let hN = valueOrErrorMessage(addressFromString(hM[D]), "Wr st addr")
1527+ let hO = bC()
1528+ let hb = bx
1529+ let hP = valueOrErrorMessage(addressFromString(hO[D]), "Wr st addr")
15151530 let eX = eQ(toBigInt(0), toBigInt(0), toBigInt(0))
15161531 if ((eX == eX))
15171532 then {
1518- let hO = invoke(hN, "unstake", [toBase58String(gZ), cG], nil)
1519- if ((hO == hO))
1533+ let hQ = invoke(hP, "unstake", [toBase58String(hb), cG], nil)
1534+ if ((hQ == hQ))
15201535 then {
1521- let ed = dl(toBase58String(cX.transactionId), toBase58String(gZ), cG, cX.caller)
1536+ let ed = dl(toBase58String(cX.transactionId), toBase58String(hb), cG, cX.caller)
15221537 let dH = ed._1
15231538 let dI = ed._2
15241539 let dv = parseIntValue(ed._9)
15251540 let dJ = ed._10
1526- let hP = if (if (bh())
1541+ let hR = if (if (bh())
15271542 then true
15281543 else (dv == t))
15291544 then throw(("Blocked: " + toString(dv)))
15301545 else true
1531- if ((hP == hP))
1546+ if ((hR == hR))
15321547 then {
1533- let hQ = invoke(aU, "burn", [cG], [AttachedPayment(gZ, cG)])
1534- if ((hQ == hQ))
1548+ let hS = invoke(aU, "burn", [cG], [AttachedPayment(hb, cG)])
1549+ if ((hS == hS))
15351550 then {
1536- let hR = eY(-(dH), -(dI), 0)
1537- let go = hR._1
1538- let eP = hR._2
1551+ let hT = eY(-(dH), -(dI), 0)
1552+ let go = hT._1
1553+ let eP = hT._2
15391554 let gp = fc(eX, eP)
15401555 if ((gp == gp))
15411556 then (dJ ++ go)
15421557 else throw("Strict value is not equal to itself.")
15431558 }
15441559 else throw("Strict value is not equal to itself.")
15451560 }
15461561 else throw("Strict value is not equal to itself.")
15471562 }
15481563 else throw("Strict value is not equal to itself.")
15491564 }
15501565 else throw("Strict value is not equal to itself.")
15511566 }
15521567 else throw("Strict value is not equal to itself.")
15531568 }
15541569
15551570
15561571
15571572 @Callable(cX)
1558-func unstakeAndGetNoLess (hS,hT,hI) = {
1559- let hv = if (bh())
1573+func unstakeAndGetNoLess (hU,hV,hK) = {
1574+ let hx = if (bh())
15601575 then true
15611576 else (bw == t)
1562- let gN = [if (!(hv))
1577+ let gP = [if (!(hx))
15631578 then true
15641579 else throw("get operation is blocked by admin"), if ((size(cX.payments) == 0))
15651580 then true
15661581 else throw("no payments are expected")]
1567- if ((gN == gN))
1582+ if ((gP == gP))
15681583 then {
15691584 let eX = eQ(toBigInt(0), toBigInt(0), toBigInt(0))
15701585 if ((eX == eX))
15711586 then {
1572- let hO = invoke(bE, "unstake", [toBase58String(bx), hS], nil)
1573- if ((hO == hO))
1587+ let hQ = invoke(bE, "unstake", [toBase58String(bx), hU], nil)
1588+ if ((hQ == hQ))
15741589 then {
1575- let hU = dl(toBase58String(cX.transactionId), toBase58String(bx), hS, cX.caller)
1576- let dH = hU._1
1577- let dI = hU._2
1578- let dJ = hU._10
1579- let hV = [if ((dH >= hT))
1590+ let hW = dl(toBase58String(cX.transactionId), toBase58String(bx), hU, cX.caller)
1591+ let dH = hW._1
1592+ let dI = hW._2
1593+ let dJ = hW._10
1594+ let hX = [if ((dH >= hV))
15801595 then true
1581- else throw(makeString(["amount asset amount to receive is less than ", toString(hT)], "")), if ((dI >= hI))
1596+ else throw(makeString(["amount asset amount to receive is less than ", toString(hV)], "")), if ((dI >= hK))
15821597 then true
1583- else throw(makeString(["price asset amount to receive is less than ", toString(hI)], ""))]
1584- if ((hV == hV))
1598+ else throw(makeString(["price asset amount to receive is less than ", toString(hK)], ""))]
1599+ if ((hX == hX))
15851600 then {
1586- let hJ = invoke(aU, "burn", [hS], [AttachedPayment(bx, hS)])
1587- if ((hJ == hJ))
1601+ let hL = invoke(aU, "burn", [hU], [AttachedPayment(bx, hU)])
1602+ if ((hL == hL))
15881603 then {
1589- let hW = eY(-(dH), -(dI), 0)
1590- let go = hW._1
1591- let eP = hW._2
1604+ let hY = eY(-(dH), -(dI), 0)
1605+ let go = hY._1
1606+ let eP = hY._2
15921607 let gp = fc(eX, eP)
15931608 if ((gp == gp))
15941609 then (dJ ++ go)
15951610 else throw("Strict value is not equal to itself.")
15961611 }
15971612 else throw("Strict value is not equal to itself.")
15981613 }
15991614 else throw("Strict value is not equal to itself.")
16001615 }
16011616 else throw("Strict value is not equal to itself.")
16021617 }
16031618 else throw("Strict value is not equal to itself.")
16041619 }
16051620 else throw("Strict value is not equal to itself.")
16061621 }
16071622
16081623
16091624
16101625 @Callable(cX)
1611-func unstakeAndGetOneTknV2 (hS,fR,fS) = {
1612- let hj = {
1626+func unstakeAndGetOneTknV2 (hU,fR,fS) = {
1627+ let hl = {
16131628 let be = invoke(aU, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
16141629 if ($isInstanceOf(be, "Boolean"))
16151630 then be
16161631 else throw(($getType(be) + " couldn't be cast to Boolean"))
16171632 }
1618- let hv = if (if (bh())
1633+ let hx = if (if (bh())
16191634 then true
16201635 else (bw == t))
16211636 then true
1622- else hj
1623- let gN = [if (if (!(hv))
1637+ else hl
1638+ let gP = [if (if (!(hx))
16241639 then true
16251640 else gt(cX))
16261641 then true
16271642 else ba("get operation is blocked by admin"), if ((size(cX.payments) == 0))
16281643 then true
16291644 else ba("no payments are expected")]
1630- if ((gN == gN))
1645+ if ((gP == gP))
16311646 then {
1632- let hM = bC()
1633- let gZ = bx
1634- let hN = valueOrErrorMessage(addressFromString(hM[D]), "Wr st addr")
1647+ let hO = bC()
1648+ let hb = bx
1649+ let hP = valueOrErrorMessage(addressFromString(hO[D]), "Wr st addr")
16351650 let dp = cX.caller
1636- let hX = this
1637- let hO = invoke(hN, "unstakeINTERNAL", [gZ, hS, dp.bytes, hX.bytes], nil)
1638- if ((hO == hO))
1651+ let hZ = this
1652+ let hQ = invoke(hP, "unstakeINTERNAL", [hb, hU, dp.bytes, hZ.bytes], nil)
1653+ if ((hQ == hQ))
16391654 then {
1640- let hY = fQ(fR, fS, [AttachedPayment(gZ, hS)], cX.caller, cX.originCaller, cX.transactionId)
1641- let dJ = hY._1
1642- let gb = hY._2
1655+ let ia = fQ(fR, fS, [AttachedPayment(hb, hU)], cX.caller, cX.originCaller, cX.transactionId)
1656+ let dJ = ia._1
1657+ let gb = ia._2
16431658 $Tuple2(dJ, gb)
16441659 }
16451660 else throw("Strict value is not equal to itself.")
16461661 }
16471662 else throw("Strict value is not equal to itself.")
16481663 }
16491664
16501665
16511666
16521667 @Callable(cX)
1653-func putOneTknV2WithBonusREADONLY (hZ,ia) = {
1654- let ib = fv(hZ, ia, "", "", true)
1655- let fK = ib._1
1656- let dJ = ib._2
1657- let cH = ib._3
1658- let fP = ib._4
1668+func putOneTknV2WithBonusREADONLY (ib,ic) = {
1669+ let id = fv(ib, ic, "", "", true)
1670+ let fK = id._1
1671+ let dJ = id._2
1672+ let cH = id._3
1673+ let fP = id._4
16591674 $Tuple2(nil, $Tuple3(fK, cH, fP))
16601675 }
16611676
16621677
16631678
16641679 @Callable(cX)
1665-func putOneTknV2WithoutTakeFeeREADONLY (hZ,ia) = {
1666- let ic = fv(hZ, ia, "", "", false)
1667- let fK = ic._1
1668- let dJ = ic._2
1669- let cH = ic._3
1670- let fP = ic._4
1680+func putOneTknV2WithoutTakeFeeREADONLY (ib,ic) = {
1681+ let ie = fv(ib, ic, "", "", false)
1682+ let fK = ie._1
1683+ let dJ = ie._2
1684+ let cH = ie._3
1685+ let fP = ie._4
16711686 $Tuple2(nil, $Tuple3(fK, cH, fP))
16721687 }
16731688
16741689
16751690
16761691 @Callable(cX)
1677-func activate (id,ie) = if ((toString(cX.caller) != toString(aU)))
1692+func activate (if,ig) = if ((toString(cX.caller) != toString(aU)))
16781693 then throw("denied")
1679- else $Tuple2([StringEntry(ak(), id), StringEntry(al(), ie), StringEntry(am(), toString(l)), StringEntry(an(height), toString(l))], "success")
1694+ else $Tuple2([StringEntry(ak(), if), StringEntry(al(), ig), StringEntry(am(), toString(l)), StringEntry(an(height), toString(l))], "success")
16801695
16811696
16821697
16831698 @Callable(cX)
16841699 func getPoolConfigWrapperREADONLY () = $Tuple2(nil, bk())
16851700
16861701
16871702
16881703 @Callable(cX)
16891704 func getAccBalanceWrapperREADONLY (bY) = $Tuple2(nil, bX(bY))
16901705
16911706
16921707
16931708 @Callable(cX)
16941709 func calcPricesWrapperREADONLY (cr,cs,cw) = {
1695- let if = cv(cr, cs, cw)
1696- $Tuple2(nil, [toString(if[0]), toString(if[1]), toString(if[2])])
1710+ let ih = cv(cr, cs, cw)
1711+ $Tuple2(nil, [toString(ih[0]), toString(ih[1]), toString(ih[2])])
16971712 }
16981713
16991714
17001715
17011716 @Callable(cX)
1702-func fromX18WrapperREADONLY (N,ig) = $Tuple2(nil, M(parseBigIntValue(N), ig))
1717+func fromX18WrapperREADONLY (N,ii) = $Tuple2(nil, M(parseBigIntValue(N), ii))
17031718
17041719
17051720
17061721 @Callable(cX)
17071722 func toX18WrapperREADONLY (J,K) = $Tuple2(nil, toString(I(J, K)))
17081723
17091724
17101725
17111726 @Callable(cX)
17121727 func calcPriceBigIntWrapperREADONLY (ca,cb) = $Tuple2(nil, toString(bZ(parseBigIntValue(ca), parseBigIntValue(cb))))
17131728
17141729
17151730
17161731 @Callable(cX)
1717-func estimatePutOperationWrapperREADONLY (dm,cg,dL,dM,dN,dO,ih,dP,dQ) = $Tuple2(nil, dK(dm, cg, dL, dM, dN, dO, ih, dP, dQ, true, false, 0, ""))
1732+func estimatePutOperationWrapperREADONLY (dm,cg,dL,dM,dN,dO,ij,dP,dQ) = $Tuple2(nil, dK(dm, cg, dL, dM, dN, dO, ij, dP, dQ, true, false, 0, ""))
17181733
17191734
17201735
17211736 @Callable(cX)
1722-func estimateGetOperationWrapperREADONLY (dm,ii,do,ih) = {
1723- let ed = dl(dm, ii, do, addressFromStringValue(ih))
1737+func estimateGetOperationWrapperREADONLY (dm,ik,do,ij) = {
1738+ let ed = dl(dm, ik, do, addressFromStringValue(ij))
17241739 $Tuple2(nil, $Tuple10(ed._1, ed._2, ed._3, ed._4, ed._5, ed._6, ed._7, toString(ed._8), ed._9, ed._10))
17251740 }
17261741
17271742
17281743
17291744 @Callable(cX)
17301745 func changeAmp () = {
1731- let ij = invoke(aU, "getChangeAmpConfigREADONLY", [toString(this)], nil)
1732- let ik = {
1733- let aQ = ij
1746+ let il = invoke(aU, "getChangeAmpConfigREADONLY", [toString(this)], nil)
1747+ let im = {
1748+ let aQ = il
17341749 if ($isInstanceOf(aQ, "List[Any]"))
17351750 then {
1736- let il = aQ
1751+ let in = aQ
17371752 $Tuple3({
1738- let be = il[0]
1753+ let be = in[0]
17391754 if ($isInstanceOf(be, "Int"))
17401755 then be
17411756 else throw(($getType(be) + " couldn't be cast to Int"))
17421757 }, {
1743- let be = il[1]
1758+ let be = in[1]
17441759 if ($isInstanceOf(be, "Int"))
17451760 then be
17461761 else throw(($getType(be) + " couldn't be cast to Int"))
17471762 }, {
1748- let be = il[2]
1763+ let be = in[2]
17491764 if ($isInstanceOf(be, "Int"))
17501765 then be
17511766 else throw(($getType(be) + " couldn't be cast to Int"))
17521767 })
17531768 }
17541769 else ba("invalid entry type")
17551770 }
1756- let im = ik._1
1757- let in = ik._2
1758- let io = ik._3
1759- let ip = parseIntValue(getStringValue(am()))
1760- let iq = (ip + in)
1761- let ir = if ((0 > in))
1762- then if ((io > iq))
1763- then io
1764- else iq
1765- else if ((iq > io))
1766- then io
1767- else iq
1768- let is = valueOrElse(getInteger(ap()), 0)
1769- let it = (is + im)
1770- let gN = [if ((height > it))
1771+ let io = im._1
1772+ let ip = im._2
1773+ let iq = im._3
1774+ let ir = parseIntValue(getStringValue(am()))
1775+ let is = (ir + ip)
1776+ let it = if ((0 > ip))
1777+ then if ((iq > is))
1778+ then iq
1779+ else is
1780+ else if ((is > iq))
1781+ then iq
1782+ else is
1783+ let iu = valueOrElse(getInteger(ap()), 0)
1784+ let iv = (iu + io)
1785+ let gP = [if ((height > iv))
17711786 then true
1772- else ba("try again in few blocks"), if ((ip != ir))
1787+ else ba("try again in few blocks"), if ((ir != it))
17731788 then true
17741789 else ba("already reached target")]
1775- if ((gN == gN))
1776- then [IntegerEntry(ap(), height), StringEntry(am(), toString(ir)), StringEntry(an(height), toString(ir))]
1790+ if ((gP == gP))
1791+ then [IntegerEntry(ap(), height), StringEntry(am(), toString(it)), StringEntry(an(height), toString(it))]
17771792 else throw("Strict value is not equal to itself.")
17781793 }
17791794
17801795
1781-@Verifier(iu)
1782-func iv () = {
1783- let iw = {
1796+@Verifier(iw)
1797+func ix () = {
1798+ let iy = {
17841799 let aQ = gq()
17851800 if ($isInstanceOf(aQ, "ByteVector"))
17861801 then {
17871802 let gu = aQ
17881803 gu
17891804 }
17901805 else if ($isInstanceOf(aQ, "Unit"))
1791- then iu.senderPublicKey
1806+ then iw.senderPublicKey
17921807 else throw("Match error")
17931808 }
1794- let aQ = iu
1809+ let aQ = iw
17951810 if ($isInstanceOf(aQ, "Order"))
17961811 then {
17971812 let ff = aQ
1798- let ix = bi()
1799- let iy = if (gB())
1813+ let iz = bi()
1814+ let iA = if (gB())
18001815 then $Tuple2(true, "")
18011816 else fe(ff)
1802- let aK = iy._1
1803- let aL = iy._2
1817+ let aK = iA._1
1818+ let aL = iA._2
18041819 let aM = sigVerify(ff.bodyBytes, ff.proofs[0], ff.senderPublicKey)
1805- let aN = sigVerify(ff.bodyBytes, ff.proofs[1], ix)
1820+ let aN = sigVerify(ff.bodyBytes, ff.proofs[1], iz)
18061821 if (if (if (aK)
18071822 then aM
18081823 else false)
18091824 then aN
18101825 else false)
18111826 then true
18121827 else aJ(aK, aL, aM, aN)
18131828 }
18141829 else if ($isInstanceOf(aQ, "SetScriptTransaction"))
18151830 then {
18161831 let aV = aQ
1817- if (sigVerify(iu.bodyBytes, iu.proofs[0], iw))
1832+ if (sigVerify(iw.bodyBytes, iw.proofs[0], iy))
18181833 then true
18191834 else {
1820- let iz = blake2b256(value(aV.script))
1821- let iA = fromBase64String(value(getString(aU, aF())))
1822- let iB = scriptHash(this)
1823- if ((iA == iz))
1824- then (iB != iz)
1835+ let iB = blake2b256(value(aV.script))
1836+ let iC = fromBase64String(value(getString(aU, aF())))
1837+ let iD = scriptHash(this)
1838+ if ((iC == iB))
1839+ then (iD != iB)
18251840 else false
18261841 }
18271842 }
1828- else sigVerify(iu.bodyBytes, iu.proofs[0], iw)
1843+ else sigVerify(iw.bodyBytes, iw.proofs[0], iy)
18291844 }
18301845

github/deemru/w8io/026f985 
398.79 ms