tx · AB5sqUbS6tGBTPcf6WwJjPAJeP8Xh3QCjTpnXZ1HRvej

3N6wAa7PMFZJu4Zrmp3avXmMnRTrRpMM9Lh:  -0.03100000 Waves

2023.02.27 12:40 [2467949] smart account 3N6wAa7PMFZJu4Zrmp3avXmMnRTrRpMM9Lh > SELF 0.00000000 Waves

{ "type": 13, "id": "AB5sqUbS6tGBTPcf6WwJjPAJeP8Xh3QCjTpnXZ1HRvej", "fee": 3100000, "feeAssetId": null, "timestamp": 1677490953709, "version": 1, "sender": "3N6wAa7PMFZJu4Zrmp3avXmMnRTrRpMM9Lh", "senderPublicKey": "Cr8D7eozSzJh7XHsYTjBinPpo3SS83BrCGiBAJsjGxBo", "proofs": [ "39zEYqSvsyy1EUxJ2Mto6NbdZqKDQsnr9d5L9uYt2NzqSg9c7vAbffSZ1Y6emfDFHa86JAc9SShnYmEKpGgKFvCe" ], "script": "base64:BgK3JwgCEgMKAQgSABIECgIBBBIDCgEBEgQKAgEEEgQKAggBEgQKAggBEgQKAggBEgUKAwEIARIAEgQKAgEBEgMKAQESBQoDAQEBEgQKAggIEgASAwoBCBIFCgMBAQESBAoCAQESBAoCCAESBAoCCAgSCwoJCAEBAgECCAQEEgYKBAgIAQgSABIDCgEBEgMKAQESBAoCCAEiCmxQZGVjaW1hbHMiBnNjYWxlOCIMc2NhbGU4QmlnSW50IgdzY2FsZTE4Igp6ZXJvQmlnSW50IgRiaWcwIgRiaWcxIgRiaWcyIgt3YXZlc1N0cmluZyIDU0VQIgpQb29sQWN0aXZlIg9Qb29sUHV0RGlzYWJsZWQiE1Bvb2xNYXRjaGVyRGlzYWJsZWQiDFBvb2xTaHV0ZG93biIOaWR4UG9vbEFkZHJlc3MiDWlkeFBvb2xTdGF0dXMiEGlkeFBvb2xMUEFzc2V0SWQiDWlkeEFtdEFzc2V0SWQiD2lkeFByaWNlQXNzZXRJZCIOaWR4QW10QXNzZXREY20iEGlkeFByaWNlQXNzZXREY20iDmlkeElBbXRBc3NldElkIhBpZHhJUHJpY2VBc3NldElkIg1pZHhMUEFzc2V0RGNtIhJpZHhQb29sQW10QXNzZXRBbXQiFGlkeFBvb2xQcmljZUFzc2V0QW10IhFpZHhQb29sTFBBc3NldEFtdCIZaWR4RmFjdG9yeVN0YWtpbmdDb250cmFjdCIaaWR4RmFjdG9yeVNsaXBwYWdlQ29udHJhY3QiBXRvWDE4IgdvcmlnVmFsIg1vcmlnU2NhbGVNdWx0Igdmcm9tWDE4IgN2YWwiD3Jlc3VsdFNjYWxlTXVsdCIHdG9TY2FsZSIDYW10IghyZXNTY2FsZSIIY3VyU2NhbGUiA2FicyIJYWJzQmlnSW50IgJmYyIDbXBrIgRwbXBrIgJwbCICcGgiAWgiCXRpbWVzdGFtcCIDcGF1Igt1c2VyQWRkcmVzcyIEdHhJZCIDZ2F1IgJhYSICcGEiEGtleUZhY3RvcnlDb25maWciDWtleU1hdGNoZXJQdWIiKWtleU1hcHBpbmdQb29sQ29udHJhY3RBZGRyZXNzVG9Qb29sQXNzZXRzIhNwb29sQ29udHJhY3RBZGRyZXNzIg1rZXlQb29sQ29uZmlnIglpQW10QXNzZXQiC2lQcmljZUFzc2V0Ih9rZXlNYXBwaW5nc0Jhc2VBc3NldDJpbnRlcm5hbElkIgxiYXNlQXNzZXRTdHIiE2tleUFsbFBvb2xzU2h1dGRvd24iDWtleVBvb2xXZWlnaHQiD2NvbnRyYWN0QWRkcmVzcyIWa2V5QWxsb3dlZExwU2NyaXB0SGFzaCIWa2V5RmVlQ29sbGVjdG9yQWRkcmVzcyIPdGhyb3dPcmRlckVycm9yIgpvcmRlclZhbGlkIgtzZW5kZXJWYWxpZCIMbWF0Y2hlclZhbGlkIg9nZXRTdHJpbmdPckZhaWwiB2FkZHJlc3MiA2tleSIMZ2V0SW50T3JGYWlsIgh0aHJvd0VyciIDbXNnIg9mYWN0b3J5Q29udHJhY3QiE2ZlZUNvbGxlY3RvckFkZHJlc3MiBWluRmVlIgFAIgZvdXRGZWUiEGlzR2xvYmFsU2h1dGRvd24iE2dldE1hdGNoZXJQdWJPckZhaWwiDWdldFBvb2xDb25maWciCGFtdEFzc2V0IgpwcmljZUFzc2V0IgxwYXJzZUFzc2V0SWQiBWlucHV0Ig9hc3NldElkVG9TdHJpbmciD3BhcnNlUG9vbENvbmZpZyIKcG9vbENvbmZpZyIQcG9vbENvbmZpZ1BhcnNlZCILJHQwNzYwMTc3NjciDmNmZ1Bvb2xBZGRyZXNzIg1jZmdQb29sU3RhdHVzIgxjZmdMcEFzc2V0SWQiEGNmZ0Ftb3VudEFzc2V0SWQiD2NmZ1ByaWNlQXNzZXRJZCIWY2ZnQW1vdW50QXNzZXREZWNpbWFscyIVY2ZnUHJpY2VBc3NldERlY2ltYWxzIhBnZXRGYWN0b3J5Q29uZmlnIg9zdGFraW5nQ29udHJhY3QiEHNsaXBwYWdlQ29udHJhY3QiEWRhdGFQdXRBY3Rpb25JbmZvIg1pbkFtdEFzc2V0QW10Ig9pblByaWNlQXNzZXRBbXQiCG91dExwQW10IgVwcmljZSIdc2xpcHBhZ2VUb2xlcmFuY2VQYXNzZWRCeVVzZXIiFXNsaXBwYWdlVG9sZXJhbmNlUmVhbCIIdHhIZWlnaHQiC3R4VGltZXN0YW1wIhJzbGlwYWdlQW10QXNzZXRBbXQiFHNsaXBhZ2VQcmljZUFzc2V0QW10IhFkYXRhR2V0QWN0aW9uSW5mbyIOb3V0QW10QXNzZXRBbXQiEG91dFByaWNlQXNzZXRBbXQiB2luTHBBbXQiDWdldEFjY0JhbGFuY2UiB2Fzc2V0SWQiD2NhbGNQcmljZUJpZ0ludCIIcHJBbXRYMTgiCGFtQW10WDE4IhBwcml2YXRlQ2FsY1ByaWNlIgphbUFzc2V0RGNtIgpwckFzc2V0RGNtIgVhbUFtdCIFcHJBbXQiDmFtdEFzc2V0QW10WDE4IhBwcmljZUFzc2V0QW10WDE4IgpjYWxjUHJpY2VzIgVscEFtdCIDY2ZnIgthbXRBc3NldERjbSINcHJpY2VBc3NldERjbSIIcHJpY2VYMTgiCGxwQW10WDE4IhNscFByaWNlSW5BbUFzc2V0WDE4IhNscFByaWNlSW5QckFzc2V0WDE4Ig9jYWxjdWxhdGVQcmljZXMiBnByaWNlcyIUZXN0aW1hdGVHZXRPcGVyYXRpb24iBnR4SWQ1OCIKcG10QXNzZXRJZCIIcG10THBBbXQiCWxwQXNzZXRJZCIJYW1Bc3NldElkIglwckFzc2V0SWQiCnBvb2xTdGF0dXMiCmxwRW1pc3Npb24iCWFtQmFsYW5jZSIMYW1CYWxhbmNlWDE4IglwckJhbGFuY2UiDHByQmFsYW5jZVgxOCILY3VyUHJpY2VYMTgiCGN1clByaWNlIgtwbXRMcEFtdFgxOCINbHBFbWlzc2lvblgxOCILb3V0QW1BbXRYMTgiC291dFByQW10WDE4IghvdXRBbUFtdCIIb3V0UHJBbXQiBXN0YXRlIhRlc3RpbWF0ZVB1dE9wZXJhdGlvbiIRc2xpcHBhZ2VUb2xlcmFuY2UiDGluQW1Bc3NldEFtdCILaW5BbUFzc2V0SWQiDGluUHJBc3NldEFtdCILaW5QckFzc2V0SWQiCmlzRXZhbHVhdGUiBmVtaXRMcCIMYW1Bc3NldElkU3RyIgxwckFzc2V0SWRTdHIiC2lBbXRBc3NldElkIg1pUHJpY2VBc3NldElkIg5pbkFtQXNzZXRJZFN0ciIOaW5QckFzc2V0SWRTdHIiD2luQW1Bc3NldEFtdFgxOCIPaW5QckFzc2V0QW10WDE4Igx1c2VyUHJpY2VYMTgiA3JlcyILc2xpcHBhZ2VYMTgiFHNsaXBwYWdlVG9sZXJhbmNlWDE4IgpwclZpYUFtWDE4IgphbVZpYVByWDE4IgxleHBlY3RlZEFtdHMiEWV4cEFtdEFzc2V0QW10WDE4IhNleHBQcmljZUFzc2V0QW10WDE4IgljYWxjTHBBbXQiDmNhbGNBbUFzc2V0UG10Ig5jYWxjUHJBc3NldFBtdCIMc2xpcHBhZ2VDYWxjIgllbWl0THBBbXQiBmFtRGlmZiIGcHJEaWZmIgtjb21tb25TdGF0ZSIbdmFsaWRhdGVNYXRjaGVyT3JkZXJBbGxvd2VkIgVvcmRlciIKYW10QXNzZXRJZCIMcHJpY2VBc3NldElkIhJhY2NBbXRBc3NldEJhbGFuY2UiFGFjY1ByaWNlQXNzZXRCYWxhbmNlIg1vcmRlckFtdEFzc2V0IhBvcmRlckFtdEFzc2V0U3RyIg9vcmRlclByaWNlQXNzZXQiEm9yZGVyUHJpY2VBc3NldFN0ciIKb3JkZXJQcmljZSIIcHJpY2VEY20iEGNhc3RlZE9yZGVyUHJpY2UiEWlzT3JkZXJQcmljZVZhbGlkIgljb21tb25HZXQiAWkiA3BtdCIGcG10QW10Igljb21tb25QdXQiCmFtQXNzZXRQbXQiCnByQXNzZXRQbXQiBmVzdFB1dCIEZW1pdCIGYW1vdW50IgdlbWl0SW52Ig1lbWl0SW52TGVnYWN5IgckbWF0Y2gwIhVsZWdhY3lGYWN0b3J5Q29udHJhY3QiB3Rha2VGZWUiA2ZlZSIJZmVlQW1vdW50Ig9jYWxjUHV0T25lVG9rZW4iEHBheW1lbnRBbW91bnRSYXciDnBheW1lbnRBc3NldElkIgZpc0V2YWwiEGFtb3VudEJhbGFuY2VSYXciD3ByaWNlQmFsYW5jZVJhdyIUcGF5bWVudEluQW1vdW50QXNzZXQiDSR0MDIyNjY0MjI5NTciEGFtb3VudEJhbGFuY2VPbGQiD3ByaWNlQmFsYW5jZU9sZCINJHQwMjI5NjEyMzExMCIUYW1vdW50QXNzZXRBbW91bnRSYXciE3ByaWNlQXNzZXRBbW91bnRSYXciEWFtb3VudEFzc2V0QW1vdW50IhBwcmljZUFzc2V0QW1vdW50Ig0kdDAyMzI0MjIzMzA2Ig1wYXltZW50QW1vdW50IhBhbW91bnRCYWxhbmNlTmV3Ig9wcmljZUJhbGFuY2VOZXciC3ByaWNlTmV3WDE4IghwcmljZU5ldyIOcGF5bWVudEJhbGFuY2UiFHBheW1lbnRCYWxhbmNlQmlnSW50IgxzdXBwbHlCaWdJbnQiC2NoZWNoU3VwcGx5Ig1kZXBvc2l0QmlnSW50Igtpc3N1ZUFtb3VudCILcHJpY2VPbGRYMTgiCHByaWNlT2xkIgRsb3NzIg0kdDAyNDc4MzI0OTUwIgdiYWxhbmNlIg9pc3N1ZUFtb3VudEJvdGgiD2NhbGNHZXRPbmVUb2tlbiIKb3V0QXNzZXRJZCIGY2hlY2tzIhBvdXRJbkFtb3VudEFzc2V0Ig1iYWxhbmNlQmlnSW50IgxhbUJhbGFuY2VPbGQiDHByQmFsYW5jZU9sZCIKb3V0QmFsYW5jZSIQb3V0QmFsYW5jZUJpZ0ludCIOcmVkZWVtZWRCaWdJbnQiCWFtb3VudFJhdyINJHQwMjY1MzAyNjU4NiILdG90YWxBbW91bnQiDSR0MDI2NTkwMjY4MTYiC291dEFtQW1vdW50IgtvdXRQckFtb3VudCIMYW1CYWxhbmNlTmV3IgxwckJhbGFuY2VOZXciGGFtb3VudEJvdGhJblBheW1lbnRBc3NldCIWbWFuYWdlclB1YmxpY0tleU9yVW5pdCIBcyIdcGVuZGluZ01hbmFnZXJQdWJsaWNLZXlPclVuaXQiCWlzTWFuYWdlciICcGsiC211c3RNYW5hZ2VyIgJwZCIXcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkiC2NoZWNrQ2FsbGVyIhVjaGVja01hbmFnZXJQdWJsaWNLZXkiAnBtIgVoYXNQTSIHY2hlY2tQTSIPc2hvdWxkQXV0b1N0YWtlIgRhbUlkIgRwcklkIgxzbGlwcGFnZUFJbnYiDHNsaXBwYWdlUEludiIKbHBUcmFuc2ZlciILc2xwU3Rha2VJbnYiC21heFNsaXBwYWdlIgxtaW5PdXRBbW91bnQiCWF1dG9TdGFrZSIgaXNQb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWQiDWlzUHV0RGlzYWJsZWQiB3BheW1lbnQiDSR0MDMxNzIzMzE4NTMiBWJvbnVzIhNlbWl0QW1vdW50RXN0aW1hdGVkIgplbWl0QW1vdW50IghzdGFrZUludiIHc2VuZEZlZSINJHQwMzI1ODIzMjcxNyINb3V0QXNzZXRJZFN0ciINaXNHZXREaXNhYmxlZCINJHQwMzM1MjIzMzY1NyIPYW1vdW50RXN0aW1hdGVkIgdidXJuSW52Ig1hc3NldFRyYW5zZmVyIg0kdDAzNDI5MjM0NDMwIg11bnN0YWtlQW1vdW50Igp1bnN0YWtlSW52Ig0kdDAzNTI1NTM1Mzg4IglvdXRBbXRBbXQiFGJ1cm5MUEFzc2V0T25GYWN0b3J5IhJub0xlc3NUaGVuQW10QXNzZXQiFG5vTGVzc1RoZW5QcmljZUFzc2V0Ig1jaGVja1BheW1lbnRzIg9jaGVja1Bvb2xTdGF0dXMiFW5vTGVzc1RoZW5BbW91bnRBc3NldCIMY2hlY2tBbW91bnRzIgthbXRBc3NldFN0ciINcHJpY2VBc3NldFN0ciINcG9vbExQQmFsYW5jZSIKcHJpY2VzTGlzdCIPbHBBbXRBc3NldFNoYXJlIhFscFByaWNlQXNzZXRTaGFyZSIKcG9vbFdlaWdodCIMY3VyUHJpY2VDYWxjIgxhbUJhbGFuY2VSYXciDHByQmFsYW5jZVJhdyIPYW1CYWxhbmNlUmF3WDE4Ig9wckJhbGFuY2VSYXdYMTgiEHBheW1lbnRMcEFzc2V0SWQiDHBheW1lbnRMcEFtdCICdHgiBnZlcmlmeSIPdGFyZ2V0UHVibGljS2V5IgptYXRjaGVyUHViIgduZXdIYXNoIgthbGxvd2VkSGFzaCILY3VycmVudEhhc2hiAAFhAAgAAWIAgMLXLwABYwkAtgIBAIDC1y8AAWQJALYCAQCAgJC7utat8A0AAWUJALYCAQAAAAFmCQC2AgEAAAABZwkAtgIBAAEAAWgJALYCAQACAAFpAgVXQVZFUwABagICX18AAWsAAQABbAACAAFtAAMAAW4ABAABbwABAAFwAAIAAXEAAwABcgAEAAFzAAUAAXQABgABdQAHAAF2AAgAAXcACQABeAAKAAF5AAEAAXoAAgABQQADAAFCAAEAAUMABwEBRAIBRQFGCQC8AgMJALYCAQUBRQUBZAkAtgIBBQFGAQFHAgFIAUkJAKADAQkAvAIDBQFICQC2AgEFAUkFAWQBAUoDAUsBTAFNCQBrAwUBSwUBTAUBTQEBTgEBSAMJAGYCAAAFAUgJAQEtAQUBSAUBSAEBTwEBSAMJAL8CAgUBZQUBSAkAvgIBBQFIBQFIAQFQAAITJXNfX2ZhY3RvcnlDb250cmFjdAEBUQACFCVzX19tYW5hZ2VyUHVibGljS2V5AQFSAAIbJXNfX3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5AQFTAAIRJXMlc19fcHJpY2VfX2xhc3QBAVQCAVUBVgkAuQkCCQDMCAICGCVzJXMlZCVkX19wcmljZV9faGlzdG9yeQkAzAgCCQCkAwEFAVUJAMwIAgkApAMBBQFWBQNuaWwFAWoBAVcCAVgBWQkArAICCQCsAgIJAKwCAgILJXMlcyVzX19QX18FAVgCAl9fBQFZAQFaAgFYAVkJAKwCAgkArAICCQCsAgICCyVzJXMlc19fR19fBQFYAgJfXwUBWQECYWEAAg8lc19fYW1vdW50QXNzZXQBAmFiAAIOJXNfX3ByaWNlQXNzZXQBAmFjAAIRJXNfX2ZhY3RvcnlDb25maWcBAmFkAAIYJXMlc19fbWF0Y2hlcl9fcHVibGljS2V5AQJhZQECYWYJAKwCAgkArAICAgglcyVzJXNfXwUCYWYCIF9fbWFwcGluZ3NfX3Bvb2xDb250cmFjdDJMcEFzc2V0AQJhZwICYWgCYWkJAKwCAgkArAICCQCsAgIJAKwCAgIIJWQlZCVzX18FAmFoAgJfXwUCYWkCCF9fY29uZmlnAQJhagECYWsJAKwCAgIoJXMlcyVzX19tYXBwaW5nc19fYmFzZUFzc2V0MmludGVybmFsSWRfXwUCYWsBAmFsAAIMJXNfX3NodXRkb3duAQJhbQECYW4JAKwCAgISJXMlc19fcG9vbFdlaWdodF9fBQJhbgECYW8AAhclc19fYWxsb3dlZExwU2NyaXB0SGFzaAACYXACFyVzX19mZWVDb2xsZWN0b3JBZGRyZXNzAQJhcQMCYXICYXMCYXQJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIkb3JkZXIgdmFsaWRhdGlvbiBmYWlsZWQ6IG9yZGVyVmFsaWQ9CQClAwEFAmFyAg0gc2VuZGVyVmFsaWQ9CQClAwEFAmFzAg4gbWF0Y2hlclZhbGlkPQkApQMBBQJhdAECYXUCAmF2AmF3CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUCYXYFAmF3CQC5CQIJAMwIAgIKbWFuZGF0b3J5IAkAzAgCCQClCAEFAmF2CQDMCAICAS4JAMwIAgUCYXcJAMwIAgIPIGlzIG5vdCBkZWZpbmVkBQNuaWwCAAECYXgCAmF2AmF3CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUCYXYFAmF3CQC5CQIJAMwIAgIKbWFuZGF0b3J5IAkAzAgCCQClCAEFAmF2CQDMCAICAS4JAMwIAgUCYXcJAMwIAgIPIGlzIG5vdCBkZWZpbmVkBQNuaWwCAAECYXkBAmF6CQACAQkAuQkCCQDMCAICCGxwLnJpZGU6CQDMCAIFAmF6BQNuaWwCASAAAmFBCQERQGV4dHJOYXRpdmUoMTA2MikBCQECYXUCBQR0aGlzCQEBUAAAAmFCCQERQGV4dHJOYXRpdmUoMTA2MikBCQECYXUCBQJhQQUCYXAAAmFDCgACYUQJAPwHBAUCYUECEGdldEluRmVlUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJhRAIDSW50BQJhRAkAAgEJAKwCAgkAAwEFAmFEAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQAAmFFCgACYUQJAPwHBAUCYUECEWdldE91dEZlZVJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCYUQCA0ludAUCYUQJAAIBCQCsAgIJAAMBBQJhRAIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50AQJhRgAJAQt2YWx1ZU9yRWxzZQIJAJsIAgUCYUEJAQJhbAAHAQJhRwAJANkEAQkBAmF1AgUCYUEJAQJhZAABAmFIAAQCYUkJAQJhdQIFBHRoaXMJAQJhYQAEAmFKCQECYXUCBQR0aGlzCQECYWIABAJhaQkBAmF4AgUCYUEJAQJhagEFAmFKBAJhaAkBAmF4AgUCYUEJAQJhagEFAmFJCQC1CQIJAQJhdQIFAmFBCQECYWcCCQCkAwEFAmFoCQCkAwEFAmFpBQFqAQJhSwECYUwDCQAAAgUCYUwFAWkFBHVuaXQJANkEAQUCYUwBAmFNAQJhTAMJAAACBQJhTAUEdW5pdAUBaQkA2AQBCQEFdmFsdWUBBQJhTAECYU4BAmFPCQCZCgcJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAJEDAgUCYU8FAW8JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJhTwUBcAkA2QQBCQCRAwIFAmFPBQFxCQECYUsBCQCRAwIFAmFPBQFyCQECYUsBCQCRAwIFAmFPBQFzCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYU8FAXQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJhTwUBdQACYVAJAQJhTgEJAQJhSAAAAmFRBQJhUAACYVIIBQJhUQJfMQACYVMIBQJhUQJfMgACYVQIBQJhUQJfMwACYVUIBQJhUQJfNAACYVYIBQJhUQJfNQACYVcIBQJhUQJfNgACYVgIBQJhUQJfNwECYVkACQC1CQIJAQJhdQIFAmFBCQECYWMABQFqAAJhWgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgkBAmFZAAUBQgIZaW5jb3JyZWN0IHN0YWtpbmcgYWRkcmVzcwACYmEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIJAQJhWQAFAUMCGWluY29ycmVjdCBzdGFraW5nIGFkZHJlc3MBAmJiCgJiYwJiZAJiZQJiZgJiZwJiaAJiaQJiagJiawJibAkAuQkCCQDMCAICFCVkJWQlZCVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCYmMJAMwIAgkApAMBBQJiZAkAzAgCCQCkAwEFAmJlCQDMCAIJAKQDAQUCYmYJAMwIAgkApAMBBQJiZwkAzAgCCQCkAwEFAmJoCQDMCAIJAKQDAQUCYmkJAMwIAgkApAMBBQJiagkAzAgCCQCkAwEFAmJrCQDMCAIJAKQDAQUCYmwFA25pbAUBagECYm0GAmJuAmJvAmJwAmJmAmJpAmJqCQC5CQIJAMwIAgIMJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCYm4JAMwIAgkApAMBBQJibwkAzAgCCQCkAwEFAmJwCQDMCAIJAKQDAQUCYmYJAMwIAgkApAMBBQJiaQkAzAgCCQCkAwEFAmJqBQNuaWwFAWoBAmJxAQJicgMJAAACBQJicgIFV0FWRVMICQDvBwEFBHRoaXMJYXZhaWxhYmxlCQDwBwIFBHRoaXMJANkEAQUCYnIBAmJzAgJidAJidQkAvAIDBQJidAUBZAUCYnUBAmJ2BAJidwJieAJieQJiegQCYkEJAQFEAgUCYnkFAmJ3BAJiQgkBAUQCBQJiegUCYngJAQJicwIFAmJCBQJiQQECYkMDAmJ5AmJ6AmJEBAJiRQkBAmFIAAQCYkYJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiRQUBdAQCYkcJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiRQUBdQQCYkgJAQJidgQFAmJGBQJiRwUCYnkFAmJ6BAJidQkBAUQCBQJieQUCYkYEAmJ0CQEBRAIFAmJ6BQJiRwQCYkkJAQFEAgUCYkQFAWIEAmJKCQECYnMCBQJidQUCYkkEAmJLCQECYnMCBQJidAUCYkkJAMwIAgUCYkgJAMwIAgUCYkoJAMwIAgUCYksFA25pbAECYkwDAmJ5AmJ6AmJEBAJiTQkBAmJDAwUCYnkFAmJ6BQJiRAkAzAgCCQEBRwIJAJEDAgUCYk0AAAUBYgkAzAgCCQEBRwIJAJEDAgUCYk0AAQUBYgkAzAgCCQEBRwIJAJEDAgUCYk0AAgUBYgUDbmlsAQJiTgQCYk8CYlACYlEBWAQCYkUJAQJhSAAEAmJSCQCRAwIFAmJFBQFxBAJiUwkAkQMCBQJiRQUBcgQCYlQJAJEDAgUCYkUFAXMEAmJ3CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYkUFAXQEAmJ4CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYkUFAXUEAmJVCQCRAwIFAmJFBQFwBAJiVggJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBCQDZBAEFAmJSCQCsAgIJAKwCAgIGQXNzZXQgBQJiUgIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkDCQECIT0CBQJiUgUCYlAJAAIBAhVJbnZhbGlkIGFzc2V0IHBhc3NlZC4EAmJXCQECYnEBBQJiUwQCYlgJAQFEAgUCYlcFAmJ3BAJiWQkBAmJxAQUCYlQEAmJaCQEBRAIFAmJZBQJieAQCY2EJAQJicwIFAmJaBQJiWAQCY2IJAQFHAgUCY2EFAWIEAmNjCQEBRAIFAmJRBQFiBAJjZAkBAUQCBQJiVgUBYgQCY2UJALwCAwUCYlgFAmNjBQJjZAQCY2YJALwCAwUCYloFAmNjBQJjZAQCY2cJAQFHAgUCY2UFAmJ3BAJjaAkBAUcCBQJjZgUCYngEAmNpAwkAAAIFAmJPAgAFA25pbAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQFYBQJjZwMJAAACBQJiUwIFV0FWRVMFBHVuaXQJANkEAQUCYlMJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUBWAUCY2gDCQAAAgUCYlQCBVdBVkVTBQR1bml0CQDZBAEFAmJUCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFaAgkApQgBBQFYBQJiTwkBAmJtBgUCY2cFAmNoBQJiUQUCY2IFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFTAAUCY2IJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFUAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCY2IFA25pbAkAnAoKBQJjZwUCY2gFAmJTBQJiVAUCYlcFAmJZBQJiVgUCY2EFAmJVBQJjaQECY2oJAmJPAmNrAmNsAmNtAmNuAmNvAVgCY3ACY3EEAmJFCQECYUgABAJiUgkA2QQBCQCRAwIFAmJFBQFxBAJjcgkAkQMCBQJiRQUBcgQCY3MJAJEDAgUCYkUFAXMEAmN0CQCRAwIFAmJFBQF2BAJjdQkAkQMCBQJiRQUBdwQCYkYJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiRQUBdAQCYkcJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiRQUBdQQCYlUJAJEDAgUCYkUFAXAEAmJWCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFAmJSCQCsAgIJAKwCAgIGQXNzZXQgCQDYBAEFAmJSAg4gZG9lc24ndCBleGlzdAhxdWFudGl0eQQCY3YJANgEAQkBC3ZhbHVlT3JFbHNlAgUCY20JANkEAQIFV0FWRVMEAmN3CQDYBAEJAQt2YWx1ZU9yRWxzZQIFAmNvCQDZBAECBVdBVkVTAwMJAQIhPQIFAmNyBQJjdgYJAQIhPQIFAmNzBQJjdwkAAgECIkludmFsaWQgYW10IG9yIHByaWNlIGFzc2V0IHBhc3NlZC4EAmJXAwUCY3AJAQJicQEFAmNyCQBlAgkBAmJxAQUCY3IFAmNsBAJiWQMFAmNwCQECYnEBBQJjcwkAZQIJAQJicQEFAmNzBQJjbgQCY3gJAQFEAgUCY2wFAmJGBAJjeQkBAUQCBQJjbgUCYkcEAmN6CQECYnMCBQJjeQUCY3gEAmJYCQEBRAIFAmJXBQJiRgQCYloJAQFEAgUCYlkFAmJHBAJjQQMJAAACBQJiVgAABAJjYQUBZQQCY0IFAWUEAmJJCQB2BgkAuQICBQJjeAUCY3kAAAkAtgIBAAUAAQAABQRET1dOCQCXCgUJAQFHAgUCYkkFAWIJAQFHAgUCY3gFAmJGCQEBRwIFAmN5BQJiRwkBAmJzAgkAtwICBQJiWgUCY3kJALcCAgUCYlgFAmN4BQJjQgQCY2EJAQJicwIFAmJaBQJiWAQCY0IJALwCAwkBAU8BCQC4AgIFAmNhBQJjegUBZAUCY2EEAmNDCQEBRAIFAmNrBQFiAwMJAQIhPQIFAmNhBQFlCQC/AgIFAmNCBQJjQwcJAAIBCQCsAgIJAKwCAgkArAICAg9QcmljZSBzbGlwcGFnZSAJAKYDAQUCY0ICHiBleGNlZWRlZCB0aGUgcGFzc2VkIGxpbWl0IG9mIAkApgMBBQJjQwQCY2QJAQFEAgUCYlYFAWIEAmNECQC8AgMFAmN4BQJjYQUBZAQCY0UJALwCAwUCY3kFAWQFAmNhBAJjRgMJAL8CAgUCY0QFAmN5CQCUCgIFAmNFBQJjeQkAlAoCBQJjeAUCY0QEAmNHCAUCY0YCXzEEAmNICAUCY0YCXzIEAmJJCQC8AgMFAmNkBQJjSAUCYloJAJcKBQkBAUcCBQJiSQUBYgkBAUcCBQJjRwUCYkYJAQFHAgUCY0gFAmJHBQJjYQUCY0IEAmNJCAUCY0ECXzEEAmNKCAUCY0ECXzIEAmNLCAUCY0ECXzMEAmNiCQEBRwIIBQJjQQJfNAUBYgQCY0wJAQFHAggFAmNBAl81BQFiAwkAZwIAAAUCY0kJAAIBAjZJbnZhbGlkIGNhbGN1bGF0aW9ucy4gTFAgY2FsY3VsYXRlZCBpcyBsZXNzIHRoYW4gemVyby4EAmNNAwkBASEBBQJjcQAABQJjSQQCY04JAGUCBQJjbAUCY0oEAmNPCQBlAgUCY24FAmNLBAJjUAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVMABQJjYgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVQCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJjYgkAzAgCCQELU3RyaW5nRW50cnkCCQEBVwIFAVgFAmJPCQECYmIKBQJjSgUCY0sFAmNNBQJjYgUCY2sFAmNMBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJjTgUCY08FA25pbAkAnwoNBQJjSQUCY00FAmNiBQJiVwUCYlkFAmJWBQJiUgUCYlUFAmNQBQJjTgUCY08FAmNtBQJjbwECY1EBAmNSBAJiRQkBAmFIAAQCY1MJAJEDAgUCYkUFAXIEAmNUCQCRAwIFAmJFBQFzBAJiVQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJFBQFwBAJiRgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJFBQF0BAJiRwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJFBQF1BAJjVQkBAmJxAQUCY1MEAmNWCQECYnEBBQJjVAQCY2EDCQAAAggFAmNSCW9yZGVyVHlwZQUDQnV5CQECYnYEBQJiRgUCYkcJAGQCBQJjVQgFAmNSBmFtb3VudAUCY1YJAQJidgQFAmJGBQJiRwkAZQIFAmNVCAUCY1IGYW1vdW50BQJjVgQCY2IJAQFHAgUCY2EFAWIDAwMJAQJhRgAGCQAAAgUCYlUFAW0GCQAAAgUCYlUFAW4JAAIBAhxFeGNoYW5nZSBvcGVyYXRpb25zIGRpc2FibGVkBAJjVwgIBQJjUglhc3NldFBhaXILYW1vdW50QXNzZXQEAmNYAwkAAAIFAmNXBQR1bml0AgVXQVZFUwkA2AQBCQEFdmFsdWUBBQJjVwQCY1kICAUCY1IJYXNzZXRQYWlyCnByaWNlQXNzZXQEAmNaAwkAAAIFAmNZBQR1bml0AgVXQVZFUwkA2AQBCQEFdmFsdWUBBQJjWQMDCQECIT0CBQJjWAUCY1MGCQECIT0CBQJjWgUCY1QJAAIBAhNXcm9uZyBvcmRlciBhc3NldHMuBAJkYQgFAmNSBXByaWNlBAJkYgkAawMFAWIFAmJHBQJiRgQCZGMJAQFKAwUCZGEFAWIFAmRiBAJkZAMJAAACCAUCY1IJb3JkZXJUeXBlBQNCdXkJAGcCBQJjYgUCZGMJAGcCBQJkYwUCY2IGAQJkZQECZGYDCQECIT0CCQCQAwEIBQJkZghwYXltZW50cwABCQACAQIdZXhhY3RseSAxIHBheW1lbnQgaXMgZXhwZWN0ZWQEAmRnCQEFdmFsdWUBCQCRAwIIBQJkZghwYXltZW50cwAABAJiUAkBBXZhbHVlAQgFAmRnB2Fzc2V0SWQEAmRoCAUCZGcGYW1vdW50BAJjQQkBAmJOBAkA2AQBCAUCZGYNdHJhbnNhY3Rpb25JZAkA2AQBBQJiUAUCZGgIBQJkZgZjYWxsZXIEAmNnCAUCY0ECXzEEAmNoCAUCY0ECXzIEAmJVCQENcGFyc2VJbnRWYWx1ZQEIBQJjQQJfOQQCY2kIBQJjQQNfMTADAwkBAmFGAAYJAAACBQJiVQUBbgkAAgEJAKwCAgIsR2V0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluLiBTdGF0dXMgPSAJAKQDAQUCYlUJAJcKBQUCY2cFAmNoBQJkaAUCYlAFAmNpAQJkaQMCZGYCY2sCY3EDCQECIT0CCQCQAwEIBQJkZghwYXltZW50cwACCQACAQIfZXhhY3RseSAyIHBheW1lbnRzIGFyZSBleHBlY3RlZAQCZGoJAQV2YWx1ZQEJAJEDAggFAmRmCHBheW1lbnRzAAAEAmRrCQEFdmFsdWUBCQCRAwIIBQJkZghwYXltZW50cwABBAJkbAkBAmNqCQkA2AQBCAUCZGYNdHJhbnNhY3Rpb25JZAUCY2sIBQJkagZhbW91bnQIBQJkagdhc3NldElkCAUCZGsGYW1vdW50CAUCZGsHYXNzZXRJZAkApQgBCAUCZGYGY2FsbGVyBwUCY3EEAmJVCQENcGFyc2VJbnRWYWx1ZQEIBQJkbAJfOAMDAwkBAmFGAAYJAAACBQJiVQUBbAYJAAACBQJiVQUBbgkAAgEJAKwCAgIsUHV0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluLiBTdGF0dXMgPSAJAKQDAQUCYlUFAmRsAQJkbQECZG4EAmRvCQD8BwQFAmFBAgRlbWl0CQDMCAIFAmRuBQNuaWwFA25pbAMJAAACBQJkbwUCZG8EAmRwBAJkcQUCZG8DCQABAgUCZHECB0FkZHJlc3MEAmRyBQJkcQkA/AcEBQJkcgIEZW1pdAkAzAgCBQJkbgUDbmlsBQNuaWwFBHVuaXQDCQAAAgUCZHAFAmRwBQJkbgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECZHMCAmRuAmR0BAJkdQMJAAACBQJkdAAAAAAJAGsDBQJkbgUCZHQFAWIJAJQKAgkAZQIFAmRuBQJkdQUCZHUBAmR2BAJkdwJkeAFYAVkEAmR5CQAAAgUBWQUEdW5pdAQCZHoJAQJicQEJAQJhTQEFAmFVBAJkQQkBAmJxAQkBAmFNAQUCYVYEAmRCAwkAAAIFAmR4BQJhVQYDCQAAAgUCZHgFAmFWBwkBAmF5AQINaW52YWxpZCBhc3NldAQCZEMDBQJkeQkAlAoCBQJkegUCZEEDBQJkQgkAlAoCCQBlAgUCZHoFAmR3BQJkQQkAlAoCBQJkegkAZQIFAmRBBQJkdwQCZEQIBQJkQwJfMQQCZEUIBQJkQwJfMgQCZEYDBQJkQgkAlAoCBQJkdwAACQCUCgIAAAUCZHcEAmRHCAUCZEYCXzEEAmRICAUCZEYCXzIEAmRJCAkBAmRzAgUCZEcFAmFDAl8xBAJkSggJAQJkcwIFAmRIBQJhQwJfMQQCZEsJAQJkcwIFAmR3BQJhQwQCZEwIBQJkSwJfMQQCZHUIBQJkSwJfMgQCZE0JAGQCBQJkRAUCZEkEAmROCQBkAgUCZEUFAmRKBAJkTwkBAmJzAgkBAUQCBQJkTgUCYVgJAQFEAgUCZE0FAmFXBAJkUAkBAUcCBQJkTwUBYgQCZFEDBQJkQgUCZEQFAmRFBAJkUgkAtgIBBQJkUQQCZFMJALYCAQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJhVAkArAICCQCsAgICBmFzc2V0IAkA2AQBBQJhVAIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkEAmRUAwkAvwICBQJkUwUBZgYJAQJheQECImluaXRpYWwgZGVwb3NpdCByZXF1aXJlcyBhbGwgY29pbnMDCQAAAgUCZFQFAmRUBAJkVQkAtgIBBQJkTAQCZFYJAJYDAQkAzAgCAAAJAMwIAgkAoAMBCQC6AgIJALkCAgUCZFMJALgCAgkBCnNxcnRCaWdJbnQECQC3AgIFAWQJALoCAgkAuQICBQJkVQUBZAUCZFIAEgASBQRET1dOBQFkBQFkBQNuaWwEAmNQAwUCZHkFA25pbAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVMABQJkUAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVQCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJkUAkAzAgCCQELU3RyaW5nRW50cnkCCQEBVwIJAKUIAQkBBXZhbHVlAQUBWAkA2AQBCQEFdmFsdWUBBQFZCQECYmIKBQJkRwUCZEgFAmRWBQJkUAAAAAAFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAAAAAABQNuaWwEAmRXCQECYnMCCQEBRAIFAmRFBQJhWAkBAUQCBQJkRAUCYVcEAmRYCQEBRwIFAmRXBQFiBAJkWQQCZFoDBQJkQgkAlAoCBQJkRwUCZEQJAJQKAgUCZEgFAmRFBAJkbggFAmRaAl8xBAJlYQgFAmRaAl8yBAJlYgkAoAMBCQC8AgMFAmRTCQC2AgEJAGkCBQJkbgACCQC2AgEFAmVhCQBrAwkAZQIFAmRWBQJlYgUBYgUCZWIJAJYKBAUCZFYFAmNQBQJkdQUCZFkJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmVjBQJlZAJkTAJkeAFYAVkEAmR5CQAAAgUBWQUEdW5pdAQCZWUJAMwIAgMJAAACBQJkeAUCYVQGCQECYXkBAhBpbnZhbGlkIGxwIGFzc2V0BQNuaWwDCQAAAgUCZWUFAmVlBAJlZgMJAAACBQJlZAUCYVUGAwkAAAIFAmVkBQJhVgcJAQJheQECDWludmFsaWQgYXNzZXQEAmVnAwUCZWYJALYCAQkBAmJxAQkBAmFNAQUCYVUJALYCAQkBAmJxAQkBAmFNAQUCYVYEAmVoCQECYnEBCQECYU0BBQJhVQQCZWkJAQJicQEJAQJhTQEFAmFWBAJlagMFAmVmBQJlaAUCZWkEAmVrCQC2AgEFAmVqBAJkUwkAtgIBCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFAmFUCQCsAgIJAKwCAgIGYXNzZXQgCQDYBAEFAmFUAg4gZG9lc24ndCBleGlzdAhxdWFudGl0eQQCZWwJALYCAQUCZEwEAmVtCQCWAwEJAMwIAgAACQDMCAIJAKADAQkAugICCQC5AgIFAmVnCQC4AgIFAWQJAHYGCQC4AgIFAWQJALoCAgkAuQICBQJlbAUBZAUCZFMAEgUBaAAAABIFBERPV04FAWQFA25pbAQCZW4JAQJkcwIFAmVtBQJhRQQCZW8IBQJlbgJfMQQCZHUIBQJlbgJfMgQCZXADBQJlZgkAlgoEBQJlbwAACQBlAgUCZWgFAmVtBQJlaQkAlgoEAAAFAmVvBQJlaAkAZQIFAmVpBQJlbQQCZXEIBQJlcAJfMQQCZXIIBQJlcAJfMgQCZXMIBQJlcAJfMwQCZXQIBQJlcAJfNAQCZE8JAQJicwIJAQFEAgUCZXQFAmFYCQEBRAIFAmVzBQJhVwQCZFAJAQFHAgUCZE8FAWIEAmNQAwUCZHkFA25pbAkAzAgCCQELU3RyaW5nRW50cnkCCQEBWgIJAKUIAQkBBXZhbHVlAQUBWAkA2AQBCQEFdmFsdWUBBQFZCQECYm0GBQJlcQUCZXIFAmRMBQJkUAUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVMABQJkUAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVQCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJkUAUDbmlsBAJkVwkBAmJzAgkBAUQCBQJlaQUCYVgJAQFEAgUCZWgFAmFXBAJkWAkBAUcCBQJkVwUBYgQCZFkEAmV1CQBoAgkAoAMBCQC8AgMFAmVnBQJlbAUCZFMAAgkAawMJAGUCBQJlbwUCZXUFAWIFAmV1CQCWCgQFAmVvBQJjUAUCZHUFAmRZCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJldgAEAmRxCQCiCAEJAQFRAAMJAAECBQJkcQIGU3RyaW5nBAJldwUCZHEJANkEAQUCZXcDCQABAgUCZHECBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgECZXgABAJkcQkAoggBCQEBUgADCQABAgUCZHECBlN0cmluZwQCZXcFAmRxCQDZBAEFAmV3AwkAAQIFAmRxAgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IBAmV5AQJkZgQCZHEJAQJldgADCQABAgUCZHECCkJ5dGVWZWN0b3IEAmV6BQJkcQkAAAIIBQJkZg9jYWxsZXJQdWJsaWNLZXkFAmV6AwkAAQIFAmRxAgRVbml0CQAAAggFAmRmBmNhbGxlcgUEdGhpcwkAAgECC01hdGNoIGVycm9yAQJlQQECZGYEAmVCCQACAQIRUGVybWlzc2lvbiBkZW5pZWQEAmRxCQECZXYAAwkAAQIFAmRxAgpCeXRlVmVjdG9yBAJlegUCZHEDCQAAAggFAmRmD2NhbGxlclB1YmxpY0tleQUCZXoGBQJlQgMJAAECBQJkcQIEVW5pdAMJAAACCAUCZGYGY2FsbGVyBQR0aGlzBgUCZUIJAAIBAgtNYXRjaCBlcnJvchoCZGYBCnNldE1hbmFnZXIBAmVDBAJlRAkBAmVBAQUCZGYDCQAAAgUCZUQFAmVEBAJlRQkA2QQBBQJlQwMJAAACBQJlRQUCZUUJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVIABQJlQwUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRmAQ5jb25maXJtTWFuYWdlcgAEAmVGCQECZXgABAJlRwMJAQlpc0RlZmluZWQBBQJlRgYJAAIBAhJObyBwZW5kaW5nIG1hbmFnZXIDCQAAAgUCZUcFAmVHBAJlSAMJAAACCAUCZGYPY2FsbGVyUHVibGljS2V5CQEFdmFsdWUBBQJlRgYJAAIBAhtZb3UgYXJlIG5vdCBwZW5kaW5nIG1hbmFnZXIDCQAAAgUCZUgFAmVICQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFRAAkA2AQBCQEFdmFsdWUBBQJlRgkAzAgCCQELRGVsZXRlRW50cnkBCQEBUgAFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkZgEDcHV0AgJjawJlSQMJAGYCAAAFAmNrCQACAQIgSW52YWxpZCBzbGlwcGFnZVRvbGVyYW5jZSBwYXNzZWQEAmRsCQECZGkDBQJkZgUCY2sGBAJjTQgFAmRsAl8yBAJiUggFAmRsAl83BAJjaQgFAmRsAl85BAJjTggFAmRsA18xMAQCY08IBQJkbANfMTEEAmVKCAUCZGwDXzEyBAJlSwgFAmRsA18xMwQCZG8JAPwHBAUCYUECBGVtaXQJAMwIAgUCY00FA25pbAUDbmlsAwkAAAIFAmRvBQJkbwQCZHAEAmRxBQJkbwMJAAECBQJkcQIHQWRkcmVzcwQCZHIFAmRxCQD8BwQFAmRyAgRlbWl0CQDMCAIFAmNNBQNuaWwFA25pbAUEdW5pdAMJAAACBQJkcAUCZHAEAmVMAwkAZgIFAmNOAAAJAPwHBAUCYmECA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJlSgUCY04FA25pbAUDbmlsAwkAAAIFAmVMBQJlTAQCZU0DCQBmAgUCY08AAAkA/AcEBQJiYQIDcHV0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmVLBQJjTwUDbmlsBQNuaWwDCQAAAgUCZU0FAmVNBAJlTgMFAmVJBAJlTwkA/AcEBQJhWgIFc3Rha2UFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCYlIFAmNNBQNuaWwDCQAAAgUCZU8FAmVPBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAmRmBmNhbGxlcgUCY00FAmJSBQNuaWwJAM4IAgUCY2kFAmVOCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRmAQpwdXRGb3JGcmVlAQJlUAMJAGYCAAAFAmVQCQACAQIUSW52YWxpZCB2YWx1ZSBwYXNzZWQEAmRsCQECZGkDBQJkZgUCZVAHCAUCZGwCXzkCZGYBCXB1dE9uZVRrbgICZVECZVIEAmVTCgACYUQJAPwHBAUCYUECKGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJhRAIHQm9vbGVhbgUCYUQJAAIBCQCsAgIJAAMBBQJhRAIcIGNvdWxkbid0IGJlIGNhc3QgdG8gQm9vbGVhbgQCZVQDAwMJAQJhRgAGCQAAAgUCYVMFAWwGCQAAAgUCYVMFAW4GBQJlUwQCZWUJAMwIAgMDCQEBIQEFAmVUBgkBAmV5AQUCZGYGCQECYXkBAiFwdXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJkZghwYXltZW50cwABBgkBAmF5AQIeZXhhY3RseSAxIHBheW1lbnQgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZWUFAmVlBAJlVQkAkQMCCAUCZGYIcGF5bWVudHMAAAQCZHgIBQJlVQdhc3NldElkBAJkdwgFAmVVBmFtb3VudAQBWAgFAmRmBmNhbGxlcgQBWQgFAmRmDXRyYW5zYWN0aW9uSWQEAmVWCQECZHYEBQJkdwUCZHgFAVgFAVkDCQAAAgUCZVYFAmVWBAJlVwgFAmVWAl80BAJkdQgFAmVWAl8zBAJjUAgFAmVWAl8yBAJlWAgFAmVWAl8xBAJlWQMDCQBmAgUCZVEAAAkAZgIFAmVRBQJlWAcJAQJheQEJALkJAgkAzAgCAh9hbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZVEFA25pbAIABQJlWAQCZG8JAQJkbQEFAmVZAwkAAAIFAmRvBQJkbwQCZU4DBQJlUgQCZVoJAPwHBAUCYVoCBXN0YWtlBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmFUBQJlWQUDbmlsAwkAAAIFAmVaBQJlWgUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQJkZgZjYWxsZXIFAmVZBQJhVAUDbmlsBAJmYQMJAGYCBQJkdQAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmFCBQJkdQUCZHgFA25pbAUDbmlsCQCUCgIJAM4IAgkAzggCBQJjUAUCZU4FAmZhBQJlWQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkZgERcHV0T25lVGtuUkVBRE9OTFkCAmR4AmR3BAJmYgkBAmR2BAUCZHcJAQJhSwEFAmR4BQR1bml0BQR1bml0BAJlWAgFAmZiAl8xBAJjUAgFAmZiAl8yBAJkdQgFAmZiAl8zBAJlVwgFAmZiAl80CQCUCgIFA25pbAkAlQoDBQJlWAUCZHUFAmVXAmRmAQlnZXRPbmVUa24CAmZjAmVRBAJlUwoAAmFECQD8BwQFAmFBAihpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZFJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCYUQCB0Jvb2xlYW4FAmFECQACAQkArAICCQADAQUCYUQCHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4EAmZkAwMJAQJhRgAGCQAAAgUCYVMFAW4GBQJlUwQCZWUJAMwIAgMDCQEBIQEFAmZkBgkBAmV5AQUCZGYGCQECYXkBAiFnZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJkZghwYXltZW50cwABBgkBAmF5AQIeZXhhY3RseSAxIHBheW1lbnQgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZWUFAmVlBAJlZAkBAmFLAQUCZmMEAmVVCQCRAwIIBQJkZghwYXltZW50cwAABAJkeAgFAmVVB2Fzc2V0SWQEAmRMCAUCZVUGYW1vdW50BAFYCAUCZGYGY2FsbGVyBAFZCAUCZGYNdHJhbnNhY3Rpb25JZAQCZmUJAQJlYwUFAmVkBQJkTAUCZHgFAVgFAVkDCQAAAgUCZmUFAmZlBAJlVwgFAmZlAl80BAJkdQgFAmZlAl8zBAJjUAgFAmZlAl8yBAJmZggFAmZlAl8xBAJkbgMDCQBmAgUCZVEAAAkAZgIFAmVRBQJmZgcJAQJheQEJALkJAgkAzAgCAh9hbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZVEFA25pbAIABQJmZgQCZmcJAPwHBAUCYUECBGJ1cm4JAMwIAgUCZEwFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZHgFAmRMBQNuaWwDCQAAAgUCZmcFAmZnBAJmaAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQFYBQJkbgUCZWQFA25pbAQCZmEDCQBmAgUCZHUAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJhQgUCZHUFAmVkBQNuaWwFA25pbAkAlAoCCQDOCAIJAM4IAgUCY1AFAmZoBQJmYQUCZG4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZGYBEWdldE9uZVRrblJFQURPTkxZAgJlZAJkTAQCZmkJAQJlYwUJAQJhSwEFAmVkBQJkTAUCYVQFBHVuaXQFBHVuaXQEAmZmCAUCZmkCXzEEAmNQCAUCZmkCXzIEAmR1CAUCZmkCXzMEAmVXCAUCZmkCXzQJAJQKAgUDbmlsCQCVCgMFAmZmBQJkdQUCZVcCZGYBE3Vuc3Rha2VBbmRHZXRPbmVUa24DAmZqAmZjAmVRBAJlUwoAAmFECQD8BwQFAmFBAihpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZFJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCYUQCB0Jvb2xlYW4FAmFECQACAQkArAICCQADAQUCYUQCHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4EAmZkAwMJAQJhRgAGCQAAAgUCYVMFAW4GBQJlUwQCZWUJAMwIAgMDCQEBIQEFAmZkBgkBAmV5AQUCZGYGCQECYXkBAiFnZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJkZghwYXltZW50cwAABgkBAmF5AQIYbm8gcGF5bWVudHMgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZWUFAmVlBAJlZAkBAmFLAQUCZmMEAVgIBQJkZgZjYWxsZXIEAVkIBQJkZg10cmFuc2FjdGlvbklkBAJmawkA/AcEBQJhWgIHdW5zdGFrZQkAzAgCCQDYBAEFAmFUCQDMCAIFAmZqBQNuaWwFA25pbAMJAAACBQJmawUCZmsEAmZsCQECZWMFBQJlZAUCZmoFAmFUBQFYBQFZAwkAAAIFAmZsBQJmbAQCZVcIBQJmbAJfNAQCZHUIBQJmbAJfMwQCY1AIBQJmbAJfMgQCZmYIBQJmbAJfMQQCZG4DAwkAZgIFAmVRAAAJAGYCBQJlUQUCZmYHCQECYXkBCQC5CQIJAMwIAgIfYW1vdW50IHRvIHJlY2VpdmUgaXMgbGVzcyB0aGFuIAkAzAgCCQCkAwEFAmVRBQNuaWwCAAUCZmYEAmZnCQD8BwQFAmFBAgRidXJuCQDMCAIFAmZqBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmFUBQJmagUDbmlsAwkAAAIFAmZnBQJmZwQCZmgJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAmRmBmNhbGxlcgUCZG4FAmVkBQNuaWwEAmZhAwkAZgIFAmR1AAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYUIFAmR1BQJlZAUDbmlsBQNuaWwJAJQKAgkAzggCCQDOCAIFAmNQBQJmaAUCZmEFAmRuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRmAQNnZXQABAJjQQkBAmRlAQUCZGYEAmZtCAUCY0ECXzEEAmNoCAUCY0ECXzIEAmRoCAUCY0ECXzMEAmJQCAUCY0ECXzQEAmNpCAUCY0ECXzUEAmZuCQD8BwQFAmFBAgRidXJuCQDMCAIFAmRoBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmJQBQJkaAUDbmlsAwkAAAIFAmZuBQJmbgUCY2kJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZGYBCWdldE5vTGVzcwICZm8CZnAEAmNBCQECZGUBBQJkZgQCY2cIBQJjQQJfMQQCY2gIBQJjQQJfMgQCZGgIBQJjQQJfMwQCYlAIBQJjQQJfNAQCY2kIBQJjQQJfNQMJAGYCBQJmbwUCY2cJAAIBCQCsAgIJAKwCAgkArAICAhxub0xlc3NUaGVuQW10QXNzZXQgZmFpbGVkOiAgCQCkAwEFAmNnAgMgPCAJAKQDAQUCZm8DCQBmAgUCZnAFAmNoCQACAQkArAICCQCsAgIJAKwCAgIdbm9MZXNzVGhlblByaWNlQXNzZXQgZmFpbGVkOiAJAKQDAQUCY2gCAyA8IAkApAMBBQJmcAQCZm4JAPwHBAUCYUECBGJ1cm4JAMwIAgUCZGgFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCYlAFAmRoBQNuaWwDCQAAAgUCZm4FAmZuBQJjaQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkZgENdW5zdGFrZUFuZEdldAECZG4EAmZxAwkBAiE9AgkAkAMBCAUCZGYIcGF5bWVudHMAAAkAAgECGE5vIHBheW1lbnRzIGFyZSBleHBlY3RlZAYDCQAAAgUCZnEFAmZxBAJiRQkBAmFIAAQCYlIJANkEAQkAkQMCBQJiRQUBcQQCZmsJAPwHBAUCYVoCB3Vuc3Rha2UJAMwIAgkA2AQBBQJiUgkAzAgCBQJkbgUDbmlsBQNuaWwDCQAAAgUCZmsFAmZrBAJjQQkBAmJOBAkA2AQBCAUCZGYNdHJhbnNhY3Rpb25JZAkA2AQBBQJiUgUCZG4IBQJkZgZjYWxsZXIEAmJVCQENcGFyc2VJbnRWYWx1ZQEIBQJjQQJfOQQCY2kIBQJjQQNfMTAEAmZyAwMJAQJhRgAGCQAAAgUCYlUFAW4JAAIBCQCsAgICLEdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbi4gU3RhdHVzID0gCQCkAwEFAmJVBgMJAAACBQJmcgUCZnIEAmZuCQD8BwQFAmFBAgRidXJuCQDMCAIFAmRuBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmJSBQJkbgUDbmlsAwkAAAIFAmZuBQJmbgUCY2kJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZGYBE3Vuc3Rha2VBbmRHZXROb0xlc3MDAmZqAmZzAmZwBAJmZAMJAQJhRgAGCQAAAgUCYVMFAW4EAmVlCQDMCAIDCQEBIQEFAmZkBgkAAgECIWdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbgkAzAgCAwkAAAIJAJADAQgFAmRmCHBheW1lbnRzAAAGCQACAQIYbm8gcGF5bWVudHMgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZWUFAmVlBAJmawkA/AcEBQJhWgIHdW5zdGFrZQkAzAgCCQDYBAEFAmFUCQDMCAIFAmZqBQNuaWwFA25pbAMJAAACBQJmawUCZmsEAmNBCQECYk4ECQDYBAEIBQJkZg10cmFuc2FjdGlvbklkCQDYBAEFAmFUBQJmaggFAmRmBmNhbGxlcgQCY2cIBQJjQQJfMQQCY2gIBQJjQQJfMgQCY2kIBQJjQQNfMTAEAmZ0CQDMCAIDCQBnAgUCY2cFAmZzBgkAAgEJALkJAgkAzAgCAixhbW91bnQgYXNzZXQgYW1vdW50IHRvIHJlY2VpdmUgaXMgbGVzcyB0aGFuIAkAzAgCCQCkAwEFAmZzBQNuaWwCAAkAzAgCAwkAZwIFAmNoBQJmcAYJAAIBCQC5CQIJAMwIAgIrcHJpY2UgYXNzZXQgYW1vdW50IHRvIHJlY2VpdmUgaXMgbGVzcyB0aGFuIAkAzAgCCQCkAwEFAmZwBQNuaWwCAAUDbmlsAwkAAAIFAmZ0BQJmdAQCZm4JAPwHBAUCYUECBGJ1cm4JAMwIAgUCZmoFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCYVQFAmZqBQNuaWwDCQAAAgUCZm4FAmZuBQJjaQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkZgEIYWN0aXZhdGUCAmZ1AmZ2AwkBAiE9AgkApQgBCAUCZGYGY2FsbGVyCQClCAEFAmFBCQACAQIScGVybWlzc2lvbnMgZGVuaWVkCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFhAAUCZnUJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFiAAUCZnYFA25pbAIHc3VjY2VzcwJkZgEcZ2V0UG9vbENvbmZpZ1dyYXBwZXJSRUFET05MWQAJAJQKAgUDbmlsCQECYUgAAmRmARxnZXRBY2NCYWxhbmNlV3JhcHBlclJFQURPTkxZAQJicgkAlAoCBQNuaWwJAQJicQEFAmJyAmRmARljYWxjUHJpY2VzV3JhcHBlclJFQURPTkxZAwJieQJiegJiRAQCYk0JAQJiQwMFAmJ5BQJiegUCYkQJAJQKAgUDbmlsCQDMCAIJAKYDAQkAkQMCBQJiTQAACQDMCAIJAKYDAQkAkQMCBQJiTQABCQDMCAIJAKYDAQkAkQMCBQJiTQACBQNuaWwCZGYBFHRvWDE4V3JhcHBlclJFQURPTkxZAgFFAUYJAJQKAgUDbmlsCQCmAwEJAQFEAgUBRQUBRgJkZgEWZnJvbVgxOFdyYXBwZXJSRUFET05MWQIBSAFJCQCUCgIFA25pbAkBAUcCCQCnAwEFAUgFAUkCZGYBHmNhbGNQcmljZUJpZ0ludFdyYXBwZXJSRUFET05MWQICYnQCYnUJAJQKAgUDbmlsCQCmAwEJAQJicwIJAKcDAQUCYnQJAKcDAQUCYnUCZGYBI2VzdGltYXRlUHV0T3BlcmF0aW9uV3JhcHBlclJFQURPTkxZCQJiTwJjawJjbAJjbQJjbgJjbwFYAmNwAmNxCQCUCgIFA25pbAkBAmNqCQUCYk8FAmNrBQJjbAUCY20FAmNuBQJjbwUBWAUCY3AFAmNxAmRmASNlc3RpbWF0ZUdldE9wZXJhdGlvbldyYXBwZXJSRUFET05MWQQCYk8CYlACYlEBWAQCY0EJAQJiTgQFAmJPBQJiUAUCYlEJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAVgJAJQKAgUDbmlsCQCcCgoIBQJjQQJfMQgFAmNBAl8yCAUCY0ECXzMIBQJjQQJfNAgFAmNBAl81CAUCY0ECXzYIBQJjQQJfNwkApgMBCAUCY0ECXzgIBQJjQQJfOQgFAmNBA18xMAJkZgENc3RhdHNSRUFET05MWQAEAmJFCQECYUgABAJiUgkA2QQBCQCRAwIFAmJFBQFxBAJjUwkAkQMCBQJiRQUBcgQCY1QJAJEDAgUCYkUFAXMEAmN0CQCRAwIFAmJFBQF2BAJjdQkAkQMCBQJiRQUBdwQCYkYJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiRQUBdAQCYkcJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiRQUBdQQCZncICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCYlIJAKwCAgkArAICAgZBc3NldCAJANgEAQUCYlICDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BAJjVQkBAmJxAQUCY1MEAmNWCQECYnEBBQJjVAQCZngDCQAAAgUCZncAAAkAzAgCBQFlCQDMCAIFAWUJAMwIAgUBZQUDbmlsCQECYkMDBQJjVQUCY1YFAmZ3BAJjYgAABAJmeQkBAUcCCQCRAwIFAmZ4AAEFAWIEAmZ6CQEBRwIJAJEDAgUCZngAAgUBYgQCZkEJAQV2YWx1ZQEJAJoIAgUCYUEJAQJhbQEJAKUIAQUEdGhpcwkAlAoCBQNuaWwJALkJAgkAzAgCAg4lZCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFAmNVCQDMCAIJAKQDAQUCY1YJAMwIAgkApAMBBQJmdwkAzAgCCQCkAwEFAmNiCQDMCAIJAKQDAQUCZnkJAMwIAgkApAMBBQJmegkAzAgCCQCkAwEFAmZBBQNuaWwFAWoCZGYBIGV2YWx1YXRlUHV0QnlBbW91bnRBc3NldFJFQURPTkxZAQJjbAQCYkUJAQJhSAAEAmJSCQDZBAEJAJEDAgUCYkUFAXEEAmNyCQCRAwIFAmJFBQFyBAJiUwkA2QQBBQJjcgQCY3MJAJEDAgUCYkUFAXMEAmJUCQDZBAEFAmNzBAJiRgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJFBQF0BAJiRwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJFBQF1BAJiVQkAkQMCBQJiRQUBcAQCZncICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCYlIJAKwCAgkArAICAgZBc3NldCAJANgEAQUCYlICDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BAJjVQkBAmJxAQUCY3IEAmNWCQECYnEBBQJjcwQCYkEJAQFEAgUCY1UFAmJGBAJiQgkBAUQCBQJjVgUCYkcEAmNhAwkAAAIFAmZ3AAAFAWUJAQJicwIFAmJCBQJiQQQCY3gJAQFEAgUCY2wFAmJGBAJjeQkAvAIDBQJjeAUCY2EFAWQEAmNuCQEBRwIFAmN5BQJiRwQCZGwJAQJjagkCAACgwh4FAmNsBQJiUwUCY24FAmJUAgAGBwQCY0kIBQJkbAJfMQQCZkIIBQJkbAJfMwQCYlcIBQJkbAJfNAQCYlkIBQJkbAJfNQQCYlYIBQJkbAJfNgkAlAoCBQNuaWwJALkJAgkAzAgCAhAlZCVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCY0kJAMwIAgkApAMBCQEBRwIFAmNhBQFiCQDMCAIJAKQDAQUCYlcJAMwIAgkApAMBBQJiWQkAzAgCCQCkAwEFAmJWCQDMCAIFAmJVCQDMCAIJAKQDAQUCY2wJAMwIAgkApAMBBQJjbgUDbmlsBQFqAmRmAR9ldmFsdWF0ZVB1dEJ5UHJpY2VBc3NldFJFQURPTkxZAQJjbgQCYkUJAQJhSAAEAmJSCQDZBAEJAJEDAgUCYkUFAXEEAmNyCQCRAwIFAmJFBQFyBAJiUwkA2QQBBQJjcgQCY3MJAJEDAgUCYkUFAXMEAmJUCQDZBAEFAmNzBAJiRgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJFBQF0BAJiRwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJFBQF1BAJiVQkAkQMCBQJiRQUBcAQCZncICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCYlIJAKwCAgkArAICAgZBc3NldCAJANgEAQUCYlICDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BAJmQwkBAmJxAQUCY3IEAmZECQECYnEBBQJjcwQCZkUJAQFEAgUCZkMFAmJGBAJmRgkBAUQCBQJmRAUCYkcEAmNhAwkAAAIFAmZ3AAAFAWUJAQJicwIFAmZGBQJmRQQCY3kJAQFEAgUCY24FAmJHBAJjeAkAvAIDBQJjeQUBZAUCY2EEAmNsCQEBRwIFAmN4BQJiRgQCZGwJAQJjagkCAACgwh4FAmNsBQJiUwUCY24FAmJUAgAGBwQCY0kIBQJkbAJfMQQCZkIIBQJkbAJfMwQCYlcIBQJkbAJfNAQCYlkIBQJkbAJfNQQCYlYIBQJkbAJfNgkAlAoCBQNuaWwJALkJAgkAzAgCAhAlZCVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCY0kJAMwIAgkApAMBCQEBRwIFAmNhBQFiCQDMCAIJAKQDAQUCYlcJAMwIAgkApAMBBQJiWQkAzAgCCQCkAwEFAmJWCQDMCAIFAmJVCQDMCAIJAKQDAQUCY2wJAMwIAgkApAMBBQJjbgUDbmlsBQFqAmRmARNldmFsdWF0ZUdldFJFQURPTkxZAgJmRwJmSAQCY0EJAQJiTgQCAAUCZkcFAmZIBQR0aGlzBAJjZwgFAmNBAl8xBAJjaAgFAmNBAl8yBAJiVwgFAmNBAl81BAJiWQgFAmNBAl82BAJiVggFAmNBAl83BAJjYggFAmNBAl84BAJiVQkBDXBhcnNlSW50VmFsdWUBCAUCY0ECXzkJAJQKAgUDbmlsCQC5CQIJAMwIAgIOJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJjZwkAzAgCCQCkAwEFAmNoCQDMCAIJAKQDAQUCYlcJAMwIAgkApAMBBQJiWQkAzAgCCQCkAwEFAmJWCQDMCAIJAKYDAQUCY2IJAMwIAgkApAMBBQJiVQUDbmlsBQFqAQJmSQECZkoABAJmSwQCZHEJAQJldgADCQABAgUCZHECCkJ5dGVWZWN0b3IEAmV6BQJkcQUCZXoDCQABAgUCZHECBFVuaXQIBQJmSQ9zZW5kZXJQdWJsaWNLZXkJAAIBAgtNYXRjaCBlcnJvcgQCZHEFAmZJAwkAAQIFAmRxAgVPcmRlcgQCY1IFAmRxBAJmTAkBAmFHAAQCYXIJAQJjUQEFAmNSBAJhcwkA9AMDCAUCY1IJYm9keUJ5dGVzCQCRAwIIBQJjUgZwcm9vZnMAAAgFAmNSD3NlbmRlclB1YmxpY0tleQQCYXQJAPQDAwgFAmNSCWJvZHlCeXRlcwkAkQMCCAUCY1IGcHJvb2ZzAAEFAmZMAwMDBQJhcgUCYXMHBQJhdAcGCQECYXEDBQJhcgUCYXMFAmF0AwkAAQIFAmRxAhRTZXRTY3JpcHRUcmFuc2FjdGlvbgQCZXcFAmRxBAJmTQkA9gMBCQEFdmFsdWUBCAUCZXcGc2NyaXB0BAJmTgkA2wQBCQEFdmFsdWUBCQCdCAIFAmFBCQECYW8ABAJmTwkA8QcBBQR0aGlzAwMJAAACBQJmTgUCZk0JAQIhPQIFAmZPBQJmTQcGCQD0AwMIBQJmSQlib2R5Qnl0ZXMJAJEDAggFAmZJBnByb29mcwAABQJmSwkA9AMDCAUCZkkJYm9keUJ5dGVzCQCRAwIIBQJmSQZwcm9vZnMAAAUCZkvBwFdz", "chainId": 84, "height": 2467949, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 2RTYnTKXoc3oVipx3NCGTVbobTxD1tnQuwmDAzmZcXG9 Next: 3rjxMpCVZhcGG6dFnmqwEPFBsH52PN8zHpANFzFgwc8z Diff:
OldNewDifferences
6262 func D (E,F) = fraction(toBigInt(E), d, toBigInt(F))
6363
6464
65-func G (E,F) = fraction(E, d, F)
65+func G (H,I) = toInt(fraction(H, toBigInt(I), d))
6666
6767
68-func H (I,J) = toInt(fraction(I, toBigInt(J), d))
68+func J (K,L,M) = fraction(K, L, M)
6969
7070
71-func K (I,J,L) = toInt(fraction(I, toBigInt(J), d, L))
71+func N (H) = if ((0 > H))
72+ then -(H)
73+ else H
7274
7375
74-func M (N,O,P) = fraction(N, O, P)
76+func O (H) = if ((e > H))
77+ then -(H)
78+ else H
7579
7680
77-func Q (I) = if ((0 > I))
78- then -(I)
79- else I
81+func P () = "%s__factoryContract"
8082
8183
82-func R (I) = if ((e > I))
83- then -(I)
84- else I
84+func Q () = "%s__managerPublicKey"
8585
8686
87-func S () = "%s__swapContract"
87+func R () = "%s__pendingManagerPublicKey"
8888
8989
90-func T () = "%s__factoryContract"
90+func S () = "%s%s__price__last"
9191
9292
93-func U () = "%s__managerPublicKey"
93+func T (U,V) = makeString(["%s%s%d%d__price__history", toString(U), toString(V)], j)
9494
9595
96-func V () = "%s__pendingManagerPublicKey"
96+func W (X,Y) = ((("%s%s%s__P__" + X) + "__") + Y)
9797
9898
99-func W () = "%s%s__price__last"
99+func Z (X,Y) = ((("%s%s%s__G__" + X) + "__") + Y)
100100
101101
102-func X (Y,Z) = makeString(["%s%s%d%d__price__history", toString(Y), toString(Z)], j)
102+func aa () = "%s__amountAsset"
103103
104104
105-func aa (ab,ac) = ((("%s%s%s__P__" + ab) + "__") + ac)
105+func ab () = "%s__priceAsset"
106106
107107
108-func ad (ab,ac) = ((("%s%s%s__G__" + ab) + "__") + ac)
108+func ac () = "%s__factoryConfig"
109109
110110
111-func ae () = "%s__amountAsset"
111+func ad () = "%s%s__matcher__publicKey"
112112
113113
114-func af () = "%s__priceAsset"
114+func ae (af) = (("%s%s%s__" + af) + "__mappings__poolContract2LpAsset")
115115
116116
117-let ag = "%s__fee"
118-
119-let ah = fraction(10, b, 10000)
120-
121-let ai = valueOrElse(getInteger(this, ag), ah)
122-
123-let aj = makeString(["%s", "kLp"], j)
124-
125-let ak = makeString(["%s", "kLpRefreshedHeight"], j)
126-
127-let al = makeString(["%s", "refreshKLpDelay"], j)
128-
129-let am = 30
130-
131-let an = valueOrElse(getInteger(this, al), am)
132-
133-func ao () = "%s__factoryConfig"
117+func ag (ah,ai) = (((("%d%d%s__" + ah) + "__") + ai) + "__config")
134118
135119
136-func ap () = "%s%s__matcher__publicKey"
120+func aj (ak) = ("%s%s%s__mappings__baseAsset2internalId__" + ak)
137121
138122
139-func aq (ar) = (("%s%s%s__" + ar) + "__mappings__poolContract2LpAsset")
123+func al () = "%s__shutdown"
140124
141125
142-func as (at,au) = (((("%d%d%s__" + at) + "__") + au) + "__config")
126+func am (an) = ("%s%s__poolWeight__" + an)
143127
144128
145-func av (aw) = ("%s%s%s__mappings__baseAsset2internalId__" + aw)
129+func ao () = "%s__allowedLpScriptHash"
146130
147131
148-func ax () = "%s__shutdown"
132+let ap = "%s__feeCollectorAddress"
133+
134+func aq (ar,as,at) = throw(((((("order validation failed: orderValid=" + toString(ar)) + " senderValid=") + toString(as)) + " matcherValid=") + toString(at)))
149135
150136
151-func ay (az) = ("%s%s__poolWeight__" + az)
137+func au (av,aw) = valueOrErrorMessage(getString(av, aw), makeString(["mandatory ", toString(av), ".", aw, " is not defined"], ""))
152138
153139
154-func aA () = "%s__allowedLpScriptHash"
140+func ax (av,aw) = valueOrErrorMessage(getInteger(av, aw), makeString(["mandatory ", toString(av), ".", aw, " is not defined"], ""))
155141
156142
157-let aB = "%s__feeCollectorAddress"
158-
159-func aC (aD,aE,aF,aG) = throw((((((((("order validation failed: orderValid=" + toString(aD)) + " (") + aE) + ")") + " senderValid=") + toString(aF)) + " matcherValid=") + toString(aG)))
143+func ay (az) = throw(makeString(["lp.ride:", az], " "))
160144
161145
162-func aH (aI,aJ) = valueOrErrorMessage(getString(aI, aJ), makeString(["mandatory ", toString(aI), ".", aJ, " is not defined"], ""))
146+let aA = addressFromStringValue(au(this, P()))
147+
148+let aB = addressFromStringValue(au(aA, ap))
149+
150+let aC = {
151+ let aD = invoke(aA, "getInFeeREADONLY", [toString(this)], nil)
152+ if ($isInstanceOf(aD, "Int"))
153+ then aD
154+ else throw(($getType(aD) + " couldn't be cast to Int"))
155+ }
156+
157+let aE = {
158+ let aD = invoke(aA, "getOutFeeREADONLY", [toString(this)], nil)
159+ if ($isInstanceOf(aD, "Int"))
160+ then aD
161+ else throw(($getType(aD) + " couldn't be cast to Int"))
162+ }
163+
164+func aF () = valueOrElse(getBoolean(aA, al()), false)
163165
164166
165-func aK (aI,aJ) = valueOrErrorMessage(getInteger(aI, aJ), makeString(["mandatory ", toString(aI), ".", aJ, " is not defined"], ""))
167+func aG () = fromBase58String(au(aA, ad()))
166168
167169
168-func aL (aM) = throw(makeString(["lp.ride:", aM], " "))
169-
170-
171-func aN (aM) = makeString(["lp.ride:", aM], " ")
172-
173-
174-let aO = addressFromStringValue(aH(this, T()))
175-
176-let aP = addressFromStringValue(aH(aO, aB))
177-
178-let aQ = {
179- let aR = invoke(aO, "getInFeeREADONLY", [toString(this)], nil)
180- if ($isInstanceOf(aR, "Int"))
181- then aR
182- else throw(($getType(aR) + " couldn't be cast to Int"))
183- }
184-
185-let aS = {
186- let aR = invoke(aO, "getOutFeeREADONLY", [toString(this)], nil)
187- if ($isInstanceOf(aR, "Int"))
188- then aR
189- else throw(($getType(aR) + " couldn't be cast to Int"))
190- }
191-
192-func aT () = valueOrElse(getBoolean(aO, ax()), false)
193-
194-
195-func aU () = fromBase58String(aH(aO, ap()))
196-
197-
198-func aV () = {
199- let aW = aH(this, ae())
200- let aX = aH(this, af())
201- let au = aK(aO, av(aX))
202- let at = aK(aO, av(aW))
203- split(aH(aO, as(toString(at), toString(au))), j)
170+func aH () = {
171+ let aI = au(this, aa())
172+ let aJ = au(this, ab())
173+ let ai = ax(aA, aj(aJ))
174+ let ah = ax(aA, aj(aI))
175+ split(au(aA, ag(toString(ah), toString(ai))), j)
204176 }
205177
206178
207-func aY (aZ) = if ((aZ == i))
179+func aK (aL) = if ((aL == i))
208180 then unit
209- else fromBase58String(aZ)
181+ else fromBase58String(aL)
210182
211183
212-func ba (aZ) = if ((aZ == unit))
184+func aM (aL) = if ((aL == unit))
213185 then i
214- else toBase58String(value(aZ))
186+ else toBase58String(value(aL))
215187
216188
217-func bb (bc) = $Tuple7(addressFromStringValue(bc[o]), parseIntValue(bc[p]), fromBase58String(bc[q]), aY(bc[r]), aY(bc[s]), parseIntValue(bc[t]), parseIntValue(bc[u]))
189+func aN (aO) = $Tuple7(addressFromStringValue(aO[o]), parseIntValue(aO[p]), fromBase58String(aO[q]), aK(aO[r]), aK(aO[s]), parseIntValue(aO[t]), parseIntValue(aO[u]))
218190
219191
220-let bd = bb(aV())
192+let aP = aN(aH())
221193
222-let be = bd
194+let aQ = aP
223195
224-let bf = be._1
196+let aR = aQ._1
225197
226-let bg = be._2
198+let aS = aQ._2
227199
228-let bh = be._3
200+let aT = aQ._3
229201
230-let bi = be._4
202+let aU = aQ._4
231203
232-let bj = be._5
204+let aV = aQ._5
233205
234-let bk = be._6
206+let aW = aQ._6
235207
236-let bl = be._7
208+let aX = aQ._7
237209
238-func bm () = split(aH(aO, ao()), j)
210+func aY () = split(au(aA, ac()), j)
239211
240212
241-let bn = valueOrErrorMessage(addressFromString(bm()[B]), "incorrect staking address")
213+let aZ = valueOrErrorMessage(addressFromString(aY()[B]), "incorrect staking address")
242214
243-let bo = valueOrErrorMessage(addressFromString(bm()[C]), "incorrect staking address")
215+let ba = valueOrErrorMessage(addressFromString(aY()[C]), "incorrect staking address")
244216
245-func bp (bq,br,bs,bt,bu,bv,bw,bx,by,bz) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bq), toString(br), toString(bs), toString(bt), toString(bu), toString(bv), toString(bw), toString(bx), toString(by), toString(bz)], j)
217+func bb (bc,bd,be,bf,bg,bh,bi,bj,bk,bl) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bc), toString(bd), toString(be), toString(bf), toString(bg), toString(bh), toString(bi), toString(bj), toString(bk), toString(bl)], j)
246218
247219
248-func bA (bB,bC,bD,bt,bw,bx) = makeString(["%d%d%d%d%d%d", toString(bB), toString(bC), toString(bD), toString(bt), toString(bw), toString(bx)], j)
220+func bm (bn,bo,bp,bf,bi,bj) = makeString(["%d%d%d%d%d%d", toString(bn), toString(bo), toString(bp), toString(bf), toString(bi), toString(bj)], j)
249221
250222
251-func bE (bF) = if ((bF == "WAVES"))
223+func bq (br) = if ((br == "WAVES"))
252224 then wavesBalance(this).available
253- else assetBalance(this, fromBase58String(bF))
225+ else assetBalance(this, fromBase58String(br))
254226
255227
256-func bG (bH,bI) = fraction(bH, d, bI)
228+func bs (bt,bu) = fraction(bt, d, bu)
257229
258230
259-func bJ (bH,bI,L) = fraction(bH, d, bI, L)
260-
261-
262-func bK (bL,bM,bN,bO) = {
263- let bP = D(bN, bL)
264- let bQ = D(bO, bM)
265- bG(bQ, bP)
231+func bv (bw,bx,by,bz) = {
232+ let bA = D(by, bw)
233+ let bB = D(bz, bx)
234+ bs(bB, bA)
266235 }
267236
268237
269-func bR (bN,bO,bS) = {
270- let bT = aV()
271- let bU = parseIntValue(bT[t])
272- let bV = parseIntValue(bT[u])
273- let bW = bK(bU, bV, bN, bO)
274- let bI = D(bN, bU)
275- let bH = D(bO, bV)
276- let bX = D(bS, b)
277- let bY = bG(bI, bX)
278- let bZ = bG(bH, bX)
279-[bW, bY, bZ]
238+func bC (by,bz,bD) = {
239+ let bE = aH()
240+ let bF = parseIntValue(bE[t])
241+ let bG = parseIntValue(bE[u])
242+ let bH = bv(bF, bG, by, bz)
243+ let bu = D(by, bF)
244+ let bt = D(bz, bG)
245+ let bI = D(bD, b)
246+ let bJ = bs(bu, bI)
247+ let bK = bs(bt, bI)
248+[bH, bJ, bK]
280249 }
281250
282251
283-func ca (bN,bO,bS) = {
284- let cb = bR(bN, bO, bS)
285-[H(cb[0], b), H(cb[1], b), H(cb[2], b)]
252+func bL (by,bz,bD) = {
253+ let bM = bC(by, bz, bD)
254+[G(bM[0], b), G(bM[1], b), G(bM[2], b)]
286255 }
287256
288257
289-func cc (cd,ce,cf,ab) = {
290- let bT = aV()
291- let cg = bT[q]
292- let ch = bT[r]
293- let ci = bT[s]
294- let bL = parseIntValue(bT[t])
295- let bM = parseIntValue(bT[u])
296- let cj = bT[p]
297- let ck = valueOrErrorMessage(assetInfo(fromBase58String(cg)), (("Asset " + cg) + " doesn't exist")).quantity
298- if ((cg != ce))
258+func bN (bO,bP,bQ,X) = {
259+ let bE = aH()
260+ let bR = bE[q]
261+ let bS = bE[r]
262+ let bT = bE[s]
263+ let bw = parseIntValue(bE[t])
264+ let bx = parseIntValue(bE[u])
265+ let bU = bE[p]
266+ let bV = valueOrErrorMessage(assetInfo(fromBase58String(bR)), (("Asset " + bR) + " doesn't exist")).quantity
267+ if ((bR != bP))
299268 then throw("Invalid asset passed.")
300269 else {
301- let cl = bE(ch)
302- let cm = D(cl, bL)
303- let cn = bE(ci)
304- let co = D(cn, bM)
305- let cp = bG(co, cm)
306- let cq = H(cp, b)
307- let cr = D(cf, b)
308- let cs = D(ck, b)
309- let ct = fraction(cm, cr, cs)
310- let cu = fraction(co, cr, cs)
311- let cv = K(ct, bL, FLOOR)
312- let cw = K(cu, bM, FLOOR)
313- let cx = if ((cd == ""))
270+ let bW = bq(bS)
271+ let bX = D(bW, bw)
272+ let bY = bq(bT)
273+ let bZ = D(bY, bx)
274+ let ca = bs(bZ, bX)
275+ let cb = G(ca, b)
276+ let cc = D(bQ, b)
277+ let cd = D(bV, b)
278+ let ce = fraction(bX, cc, cd)
279+ let cf = fraction(bZ, cc, cd)
280+ let cg = G(ce, bw)
281+ let ch = G(cf, bx)
282+ let ci = if ((bO == ""))
314283 then nil
315- else [ScriptTransfer(ab, cv, if ((ch == "WAVES"))
284+ else [ScriptTransfer(X, cg, if ((bS == "WAVES"))
316285 then unit
317- else fromBase58String(ch)), ScriptTransfer(ab, cw, if ((ci == "WAVES"))
286+ else fromBase58String(bS)), ScriptTransfer(X, ch, if ((bT == "WAVES"))
318287 then unit
319- else fromBase58String(ci)), StringEntry(ad(toString(ab), cd), bA(cv, cw, cf, cq, height, lastBlock.timestamp)), IntegerEntry(W(), cq), IntegerEntry(X(height, lastBlock.timestamp), cq)]
320- $Tuple10(cv, cw, ch, ci, cl, cn, ck, cp, cj, cx)
288+ else fromBase58String(bT)), StringEntry(Z(toString(X), bO), bm(cg, ch, bQ, cb, height, lastBlock.timestamp)), IntegerEntry(S(), cb), IntegerEntry(T(height, lastBlock.timestamp), cb)]
289+ $Tuple10(cg, ch, bS, bT, bW, bY, bV, ca, bU, ci)
321290 }
322291 }
323292
324293
325-func cy (cd,cz,cA,cB,cC,cD,ab,cE,cF) = {
326- let bT = aV()
327- let cg = fromBase58String(bT[q])
328- let cG = bT[r]
329- let cH = bT[s]
330- let cI = bT[v]
331- let cJ = bT[w]
332- let bU = parseIntValue(bT[t])
333- let bV = parseIntValue(bT[u])
334- let cj = bT[p]
335- let ck = valueOrErrorMessage(assetInfo(cg), (("Asset " + toBase58String(cg)) + " doesn't exist")).quantity
336- let cK = toBase58String(valueOrElse(cB, fromBase58String("WAVES")))
337- let cL = toBase58String(valueOrElse(cD, fromBase58String("WAVES")))
338- if (if ((cG != cK))
294+func cj (bO,ck,cl,cm,cn,co,X,cp,cq) = {
295+ let bE = aH()
296+ let bR = fromBase58String(bE[q])
297+ let cr = bE[r]
298+ let cs = bE[s]
299+ let ct = bE[v]
300+ let cu = bE[w]
301+ let bF = parseIntValue(bE[t])
302+ let bG = parseIntValue(bE[u])
303+ let bU = bE[p]
304+ let bV = valueOrErrorMessage(assetInfo(bR), (("Asset " + toBase58String(bR)) + " doesn't exist")).quantity
305+ let cv = toBase58String(valueOrElse(cm, fromBase58String("WAVES")))
306+ let cw = toBase58String(valueOrElse(co, fromBase58String("WAVES")))
307+ if (if ((cr != cv))
339308 then true
340- else (cH != cL))
309+ else (cs != cw))
341310 then throw("Invalid amt or price asset passed.")
342311 else {
343- let cl = if (cE)
344- then bE(cG)
345- else (bE(cG) - cA)
346- let cn = if (cE)
347- then bE(cH)
348- else (bE(cH) - cC)
349- let cM = D(cA, bU)
350- let cN = D(cC, bV)
351- let cO = bG(cN, cM)
352- let cm = D(cl, bU)
353- let co = D(cn, bV)
354- let cP = if ((ck == 0))
312+ let bW = if (cp)
313+ then bq(cr)
314+ else (bq(cr) - cl)
315+ let bY = if (cp)
316+ then bq(cs)
317+ else (bq(cs) - cn)
318+ let cx = D(cl, bF)
319+ let cy = D(cn, bG)
320+ let cz = bs(cy, cx)
321+ let bX = D(bW, bF)
322+ let bZ = D(bY, bG)
323+ let cA = if ((bV == 0))
355324 then {
356- let cp = e
357- let cQ = e
358- let bX = pow((cM * cN), 0, toBigInt(5), 1, 0, DOWN)
359- $Tuple5(H(bX, b), H(cM, bU), H(cN, bV), bG((co + cN), (cm + cM)), cQ)
325+ let ca = e
326+ let cB = e
327+ let bI = pow((cx * cy), 0, toBigInt(5), 1, 0, DOWN)
328+ $Tuple5(G(bI, b), G(cx, bF), G(cy, bG), bs((bZ + cy), (bX + cx)), cB)
360329 }
361330 else {
362- let cp = bG(co, cm)
363- let cQ = fraction(R((cp - cO)), d, cp)
364- let cR = D(cz, b)
365- if (if ((cp != e))
366- then (cQ > cR)
331+ let ca = bs(bZ, bX)
332+ let cB = fraction(O((ca - cz)), d, ca)
333+ let cC = D(ck, b)
334+ if (if ((ca != e))
335+ then (cB > cC)
367336 else false)
368- then throw(((("Price slippage " + toString(cQ)) + " exceeded the passed limit of ") + toString(cR)))
337+ then throw(((("Price slippage " + toString(cB)) + " exceeded the passed limit of ") + toString(cC)))
369338 else {
370- let cs = D(ck, b)
371- let cS = fraction(cM, bJ(co, cm, CEILING), d, CEILING)
372- let cT = fraction(cN, d, bJ(co, cm, FLOOR), CEILING)
373- let cU = if ((cS > cN))
374- then $Tuple2(cT, cN)
375- else $Tuple2(cM, cS)
376- let cV = cU._1
377- let cW = cU._2
378- let bX = fraction(cs, cW, co, FLOOR)
379- $Tuple5(K(bX, b, FLOOR), K(cV, bU, CEILING), K(cW, bV, CEILING), cp, cQ)
339+ let cd = D(bV, b)
340+ let cD = fraction(cx, ca, d)
341+ let cE = fraction(cy, d, ca)
342+ let cF = if ((cD > cy))
343+ then $Tuple2(cE, cy)
344+ else $Tuple2(cx, cD)
345+ let cG = cF._1
346+ let cH = cF._2
347+ let bI = fraction(cd, cH, bZ)
348+ $Tuple5(G(bI, b), G(cG, bF), G(cH, bG), ca, cB)
380349 }
381350 }
382- let cX = cP._1
383- let cY = cP._2
384- let cZ = cP._3
385- let cq = H(cP._4, b)
386- let da = H(cP._5, b)
387- if ((0 >= cX))
351+ let cI = cA._1
352+ let cJ = cA._2
353+ let cK = cA._3
354+ let cb = G(cA._4, b)
355+ let cL = G(cA._5, b)
356+ if ((0 >= cI))
388357 then throw("Invalid calculations. LP calculated is less than zero.")
389358 else {
390- let db = if (!(cF))
359+ let cM = if (!(cq))
391360 then 0
392- else cX
393- let dc = (cA - cY)
394- let dd = (cC - cZ)
395- let de = [IntegerEntry(W(), cq), IntegerEntry(X(height, lastBlock.timestamp), cq), StringEntry(aa(ab, cd), bp(cY, cZ, db, cq, cz, da, height, lastBlock.timestamp, dc, dd))]
396- $Tuple13(cX, db, cq, cl, cn, ck, cg, cj, de, dc, dd, cB, cD)
361+ else cI
362+ let cN = (cl - cJ)
363+ let cO = (cn - cK)
364+ let cP = [IntegerEntry(S(), cb), IntegerEntry(T(height, lastBlock.timestamp), cb), StringEntry(W(X, bO), bb(cJ, cK, cM, cb, ck, cL, height, lastBlock.timestamp, cN, cO))]
365+ $Tuple13(cI, cM, cb, bW, bY, bV, bR, bU, cP, cN, cO, cm, co)
397366 }
398367 }
399368 }
400369
401370
402-func df (dg,dh,ck) = {
403- let di = G(dg, toBigInt(bk))
404- let dj = G(dh, toBigInt(bl))
405- let dk = fraction(pow((di * dj), 0, toBigInt(5), 1, 18, DOWN), g, ck)
406- if ((ck == f))
407- then f
408- else dk
371+func cQ (cR) = {
372+ let bE = aH()
373+ let cS = bE[r]
374+ let cT = bE[s]
375+ let bU = parseIntValue(bE[p])
376+ let bF = parseIntValue(bE[t])
377+ let bG = parseIntValue(bE[u])
378+ let cU = bq(cS)
379+ let cV = bq(cT)
380+ let ca = if ((cR.orderType == Buy))
381+ then bv(bF, bG, (cU + cR.amount), cV)
382+ else bv(bF, bG, (cU - cR.amount), cV)
383+ let cb = G(ca, b)
384+ if (if (if (aF())
385+ then true
386+ else (bU == m))
387+ then true
388+ else (bU == n))
389+ then throw("Exchange operations disabled")
390+ else {
391+ let cW = cR.assetPair.amountAsset
392+ let cX = if ((cW == unit))
393+ then "WAVES"
394+ else toBase58String(value(cW))
395+ let cY = cR.assetPair.priceAsset
396+ let cZ = if ((cY == unit))
397+ then "WAVES"
398+ else toBase58String(value(cY))
399+ if (if ((cX != cS))
400+ then true
401+ else (cZ != cT))
402+ then throw("Wrong order assets.")
403+ else {
404+ let da = cR.price
405+ let db = fraction(b, bG, bF)
406+ let dc = J(da, b, db)
407+ let dd = if ((cR.orderType == Buy))
408+ then (cb >= dc)
409+ else (dc >= cb)
410+ true
411+ }
412+ }
409413 }
410414
411415
412-func dl (dm,dn,do) = {
413- let dp = (toBigInt(bE(ba(bi))) - dm)
414- let dq = (toBigInt(bE(ba(bj))) - dn)
415- let dr = (toBigInt(value(assetInfo(bh)).quantity) - do)
416- let ds = df(dp, dq, dr)
417- ds
418- }
419-
420-
421-func dt (du,dv,do) = {
422- let dp = (bE(ba(bi)) + du)
423- let dq = (bE(ba(bj)) + dv)
424- let dr = (value(assetInfo(bh)).quantity + do)
425- let dk = df(toBigInt(dp), toBigInt(dq), toBigInt(dr))
426- let dw = [IntegerEntry(ak, height), StringEntry(aj, toString(dk))]
427- $Tuple2(dw, dk)
428- }
429-
430-
431-func dx (dy,dk) = if ((dk >= dy))
432- then true
433- else aL(makeString(["updated KLp lower than current KLp", toString(dy), toString(dk)], " "))
434-
435-
436-func dz (dA) = {
437- let dp = bE(ba(bi))
438- let dq = bE(ba(bj))
439- let dB = dA.amount
440- let dC = fraction(dA.amount, dA.price, b, FLOOR)
441- let dD = if ((dA.orderType == Buy))
442- then $Tuple2(dB, -(dC))
443- else $Tuple2(-(dB), dC)
444- let du = dD._1
445- let dv = dD._2
446- if (if (if (aT())
447- then true
448- else (bg == m))
449- then true
450- else (bg == n))
451- then throw("Exchange operations disabled")
452- else if (if ((dA.assetPair.amountAsset != bi))
453- then true
454- else (dA.assetPair.priceAsset != bj))
455- then throw("Wrong order assets.")
456- else {
457- let dE = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, aj), "0")), aN("invalid kLp"))
458- let dF = dt(du, dv, 0)
459- let dG = dF._1
460- let dH = dF._2
461- let dI = (dH >= dE)
462- let dJ = makeString(["kLp=", toString(dE), " kLpNew=", toString(dH), " amountAssetBalance=", toString(dp), " priceAssetBalance=", toString(dq), " amountAssetBalanceDelta=", toString(du), " priceAssetBalanceDelta=", toString(dv), " height=", toString(height)], "")
463- $Tuple2(dI, dJ)
464- }
465- }
466-
467-
468-func dK (dL) = if ((size(dL.payments) != 1))
416+func de (df) = if ((size(df.payments) != 1))
469417 then throw("exactly 1 payment is expected")
470418 else {
471- let dM = value(dL.payments[0])
472- let ce = value(dM.assetId)
473- let dN = dM.amount
474- let cP = cc(toBase58String(dL.transactionId), toBase58String(ce), dN, dL.caller)
475- let cv = cP._1
476- let cw = cP._2
477- let cj = parseIntValue(cP._9)
478- let cx = cP._10
479- if (if (aT())
419+ let dg = value(df.payments[0])
420+ let bP = value(dg.assetId)
421+ let dh = dg.amount
422+ let cA = bN(toBase58String(df.transactionId), toBase58String(bP), dh, df.caller)
423+ let cg = cA._1
424+ let ch = cA._2
425+ let bU = parseIntValue(cA._9)
426+ let ci = cA._10
427+ if (if (aF())
480428 then true
481- else (cj == n))
482- then throw(("Get operation is blocked by admin. Status = " + toString(cj)))
483- else $Tuple5(cv, cw, dN, ce, cx)
429+ else (bU == n))
430+ then throw(("Get operation is blocked by admin. Status = " + toString(bU)))
431+ else $Tuple5(cg, ch, dh, bP, ci)
484432 }
485433
486434
487-func dO (dL,cz,cF) = if ((size(dL.payments) != 2))
435+func di (df,ck,cq) = if ((size(df.payments) != 2))
488436 then throw("exactly 2 payments are expected")
489437 else {
490- let dP = value(dL.payments[0])
491- let dQ = value(dL.payments[1])
492- let dR = cy(toBase58String(dL.transactionId), cz, dP.amount, dP.assetId, dQ.amount, dQ.assetId, toString(dL.caller), false, cF)
493- let cj = parseIntValue(dR._8)
494- if (if (if (aT())
438+ let dj = value(df.payments[0])
439+ let dk = value(df.payments[1])
440+ let dl = cj(toBase58String(df.transactionId), ck, dj.amount, dj.assetId, dk.amount, dk.assetId, toString(df.caller), false, cq)
441+ let bU = parseIntValue(dl._8)
442+ if (if (if (aF())
495443 then true
496- else (cj == l))
444+ else (bU == l))
497445 then true
498- else (cj == n))
499- then throw(("Put operation is blocked by admin. Status = " + toString(cj)))
500- else dR
446+ else (bU == n))
447+ then throw(("Put operation is blocked by admin. Status = " + toString(bU)))
448+ else dl
501449 }
502450
503451
504-func dS (dT) = {
505- let dU = invoke(aO, "emit", [dT], nil)
506- if ((dU == dU))
452+func dm (dn) = {
453+ let do = invoke(aA, "emit", [dn], nil)
454+ if ((do == do))
507455 then {
508- let dV = {
509- let dW = dU
510- if ($isInstanceOf(dW, "Address"))
456+ let dp = {
457+ let dq = do
458+ if ($isInstanceOf(dq, "Address"))
511459 then {
512- let dX = dW
513- invoke(dX, "emit", [dT], nil)
460+ let dr = dq
461+ invoke(dr, "emit", [dn], nil)
514462 }
515463 else unit
516464 }
517- if ((dV == dV))
518- then dT
465+ if ((dp == dp))
466+ then dn
519467 else throw("Strict value is not equal to itself.")
520468 }
521469 else throw("Strict value is not equal to itself.")
522470 }
523471
524472
525-func dY (dT,ai) = {
526- let dZ = if ((ai == 0))
473+func ds (dn,dt) = {
474+ let du = if ((dt == 0))
527475 then 0
528- else fraction(dT, ai, b)
529- $Tuple2((dT - dZ), dZ)
476+ else fraction(dn, dt, b)
477+ $Tuple2((dn - du), du)
530478 }
531479
532480
533-func ea (eb,ec,ab,ac) = {
534- let ed = (ac == unit)
535- let ee = bE(ba(bi))
536- let ef = bE(ba(bj))
537- let eg = if ((ec == bi))
481+func dv (dw,dx,X,Y) = {
482+ let dy = (Y == unit)
483+ let dz = bq(aM(aU))
484+ let dA = bq(aM(aV))
485+ let dB = if ((dx == aU))
538486 then true
539- else if ((ec == bj))
487+ else if ((dx == aV))
540488 then false
541- else aL("invalid asset")
542- let eh = if (ed)
543- then $Tuple2(ee, ef)
544- else if (eg)
545- then $Tuple2((ee - eb), ef)
546- else $Tuple2(ee, (ef - eb))
547- let ei = eh._1
548- let ej = eh._2
549- let ek = if (eg)
550- then $Tuple2(eb, 0)
551- else $Tuple2(0, eb)
552- let el = ek._1
553- let em = ek._2
554- let dB = dY(el, aQ)._1
555- let dC = dY(em, aQ)._1
556- let en = dY(eb, aQ)
557- let eo = en._1
558- let dZ = en._2
559- let ep = (ei + dB)
560- let eq = (ej + dC)
561- let er = bG(D(eq, bl), D(ep, bk))
562- let es = H(er, b)
563- let et = if (eg)
564- then ei
565- else ej
566- let eu = toBigInt(et)
567- let ev = toBigInt(valueOrErrorMessage(assetInfo(bh), (("asset " + toBase58String(bh)) + " doesn't exist")).quantity)
568- let ew = if ((ev > f))
489+ else ay("invalid asset")
490+ let dC = if (dy)
491+ then $Tuple2(dz, dA)
492+ else if (dB)
493+ then $Tuple2((dz - dw), dA)
494+ else $Tuple2(dz, (dA - dw))
495+ let dD = dC._1
496+ let dE = dC._2
497+ let dF = if (dB)
498+ then $Tuple2(dw, 0)
499+ else $Tuple2(0, dw)
500+ let dG = dF._1
501+ let dH = dF._2
502+ let dI = ds(dG, aC)._1
503+ let dJ = ds(dH, aC)._1
504+ let dK = ds(dw, aC)
505+ let dL = dK._1
506+ let du = dK._2
507+ let dM = (dD + dI)
508+ let dN = (dE + dJ)
509+ let dO = bs(D(dN, aX), D(dM, aW))
510+ let dP = G(dO, b)
511+ let dQ = if (dB)
512+ then dD
513+ else dE
514+ let dR = toBigInt(dQ)
515+ let dS = toBigInt(valueOrErrorMessage(assetInfo(aT), (("asset " + toBase58String(aT)) + " doesn't exist")).quantity)
516+ let dT = if ((dS > f))
569517 then true
570- else aL("initial deposit requires all coins")
571- if ((ew == ew))
518+ else ay("initial deposit requires all coins")
519+ if ((dT == dT))
572520 then {
573- let ex = toBigInt(eo)
574- let ey = max([0, toInt(((ev * (sqrtBigInt((d + ((ex * d) / eu)), 18, 18, DOWN) - d)) / d))])
575- let de = if (ed)
521+ let dU = toBigInt(dL)
522+ let dV = max([0, toInt(((dS * (sqrtBigInt((d + ((dU * d) / dR)), 18, 18, DOWN) - d)) / d))])
523+ let cP = if (dy)
576524 then nil
577- else [IntegerEntry(W(), es), IntegerEntry(X(height, lastBlock.timestamp), es), StringEntry(aa(toString(value(ab)), toBase58String(value(ac))), bp(el, em, ey, es, 0, 0, height, lastBlock.timestamp, 0, 0))]
578- let ez = bG(D(ej, bl), D(ei, bk))
579- let eA = H(ez, b)
580- let eB = {
581- let eC = if (eg)
582- then $Tuple2(el, ei)
583- else $Tuple2(em, ej)
584- let dT = eC._1
585- let eD = eC._2
586- let eE = toInt(fraction(ev, toBigInt((dT / 2)), toBigInt(eD)))
587- fraction((ey - eE), b, eE)
525+ else [IntegerEntry(S(), dP), IntegerEntry(T(height, lastBlock.timestamp), dP), StringEntry(W(toString(value(X)), toBase58String(value(Y))), bb(dG, dH, dV, dP, 0, 0, height, lastBlock.timestamp, 0, 0))]
526+ let dW = bs(D(dE, aX), D(dD, aW))
527+ let dX = G(dW, b)
528+ let dY = {
529+ let dZ = if (dB)
530+ then $Tuple2(dG, dD)
531+ else $Tuple2(dH, dE)
532+ let dn = dZ._1
533+ let ea = dZ._2
534+ let eb = toInt(fraction(dS, toBigInt((dn / 2)), toBigInt(ea)))
535+ fraction((dV - eb), b, eb)
588536 }
589- $Tuple5(ey, de, dZ, eB, eg)
537+ $Tuple4(dV, cP, du, dY)
590538 }
591539 else throw("Strict value is not equal to itself.")
592540 }
593541
594542
595-func eF (eG,eo,ec,ab,ac) = {
596- let ed = (ac == unit)
597- let bT = aV()
598- let bU = parseIntValue(bT[t])
599- let bV = parseIntValue(bT[u])
600- let eH = [if ((ec == bh))
543+func ec (ed,dL,dx,X,Y) = {
544+ let dy = (Y == unit)
545+ let ee = [if ((dx == aT))
601546 then true
602- else aL("invalid lp asset")]
603- if ((eH == eH))
547+ else ay("invalid lp asset")]
548+ if ((ee == ee))
604549 then {
605- let eI = if ((eG == bi))
550+ let ef = if ((ed == aU))
606551 then true
607- else if ((eG == bj))
552+ else if ((ed == aV))
608553 then false
609- else aL("invalid asset")
610- let eJ = if (eI)
611- then toBigInt(bE(ba(bi)))
612- else toBigInt(bE(ba(bj)))
613- let eK = if (eI)
614- then bU
615- else bV
616- let eL = bE(ba(bi))
617- let eM = bE(ba(bj))
618- let eN = if (eI)
619- then eL
620- else eM
621- let eO = toBigInt(eN)
622- let ev = toBigInt(valueOrErrorMessage(assetInfo(bh), (("asset " + toBase58String(bh)) + " doesn't exist")).quantity)
623- let eP = toBigInt(eo)
624- let eQ = max([0, toInt(((eJ * (d - pow((d - ((eP * d) / ev)), 18, h, 0, 18, DOWN))) / d))])
625- let eR = dY(eQ, aS)
626- let eS = eR._1
627- let dZ = eR._2
628- let eT = if (eI)
629- then $Tuple4(eS, 0, (eL - eQ), eM)
630- else $Tuple4(0, eS, eL, (eM - eQ))
631- let eU = eT._1
632- let eV = eT._2
633- let eW = eT._3
634- let eX = eT._4
635- let er = bG(D(eX, bl), D(eW, bk))
636- let es = H(er, b)
637- let de = if (ed)
554+ else ay("invalid asset")
555+ let eg = if (ef)
556+ then toBigInt(bq(aM(aU)))
557+ else toBigInt(bq(aM(aV)))
558+ let eh = bq(aM(aU))
559+ let ei = bq(aM(aV))
560+ let ej = if (ef)
561+ then eh
562+ else ei
563+ let ek = toBigInt(ej)
564+ let dS = toBigInt(valueOrErrorMessage(assetInfo(aT), (("asset " + toBase58String(aT)) + " doesn't exist")).quantity)
565+ let el = toBigInt(dL)
566+ let em = max([0, toInt(((eg * (d - pow((d - ((el * d) / dS)), 18, h, 0, 18, DOWN))) / d))])
567+ let en = ds(em, aE)
568+ let eo = en._1
569+ let du = en._2
570+ let ep = if (ef)
571+ then $Tuple4(eo, 0, (eh - em), ei)
572+ else $Tuple4(0, eo, eh, (ei - em))
573+ let eq = ep._1
574+ let er = ep._2
575+ let es = ep._3
576+ let et = ep._4
577+ let dO = bs(D(et, aX), D(es, aW))
578+ let dP = G(dO, b)
579+ let cP = if (dy)
638580 then nil
639- else [StringEntry(ad(toString(value(ab)), toBase58String(value(ac))), bA(eU, eV, eo, es, height, lastBlock.timestamp)), IntegerEntry(W(), es), IntegerEntry(X(height, lastBlock.timestamp), es)]
640- let ez = bG(D(eM, bl), D(eL, bk))
641- let eA = H(ez, b)
642- let eB = {
643- let eY = (toInt(fraction(eJ, eP, ev)) * 2)
644- fraction((eS - eY), b, eY)
581+ else [StringEntry(Z(toString(value(X)), toBase58String(value(Y))), bm(eq, er, dL, dP, height, lastBlock.timestamp)), IntegerEntry(S(), dP), IntegerEntry(T(height, lastBlock.timestamp), dP)]
582+ let dW = bs(D(ei, aX), D(eh, aW))
583+ let dX = G(dW, b)
584+ let dY = {
585+ let eu = (toInt(fraction(eg, el, dS)) * 2)
586+ fraction((eo - eu), b, eu)
645587 }
646- $Tuple5(eS, de, dZ, eB, eI)
588+ $Tuple4(eo, cP, du, dY)
647589 }
648590 else throw("Strict value is not equal to itself.")
649591 }
650592
651593
652-func eZ () = {
653- let dW = getString(U())
654- if ($isInstanceOf(dW, "String"))
594+func ev () = {
595+ let dq = getString(Q())
596+ if ($isInstanceOf(dq, "String"))
655597 then {
656- let fa = dW
657- fromBase58String(fa)
598+ let ew = dq
599+ fromBase58String(ew)
658600 }
659- else if ($isInstanceOf(dW, "Unit"))
601+ else if ($isInstanceOf(dq, "Unit"))
660602 then unit
661603 else throw("Match error")
662604 }
663605
664606
665-func fb () = {
666- let dW = getString(V())
667- if ($isInstanceOf(dW, "String"))
607+func ex () = {
608+ let dq = getString(R())
609+ if ($isInstanceOf(dq, "String"))
668610 then {
669- let fa = dW
670- fromBase58String(fa)
611+ let ew = dq
612+ fromBase58String(ew)
671613 }
672- else if ($isInstanceOf(dW, "Unit"))
614+ else if ($isInstanceOf(dq, "Unit"))
673615 then unit
674616 else throw("Match error")
675617 }
676618
677619
678-func fc (dL) = {
679- let dW = eZ()
680- if ($isInstanceOf(dW, "ByteVector"))
620+func ey (df) = {
621+ let dq = ev()
622+ if ($isInstanceOf(dq, "ByteVector"))
681623 then {
682- let fd = dW
683- (dL.callerPublicKey == fd)
624+ let ez = dq
625+ (df.callerPublicKey == ez)
684626 }
685- else if ($isInstanceOf(dW, "Unit"))
686- then (dL.caller == this)
627+ else if ($isInstanceOf(dq, "Unit"))
628+ then (df.caller == this)
687629 else throw("Match error")
688630 }
689631
690632
691-func fe (dL) = {
692- let ff = throw("Permission denied")
693- let dW = eZ()
694- if ($isInstanceOf(dW, "ByteVector"))
633+func eA (df) = {
634+ let eB = throw("Permission denied")
635+ let dq = ev()
636+ if ($isInstanceOf(dq, "ByteVector"))
695637 then {
696- let fd = dW
697- if ((dL.callerPublicKey == fd))
638+ let ez = dq
639+ if ((df.callerPublicKey == ez))
698640 then true
699- else ff
641+ else eB
700642 }
701- else if ($isInstanceOf(dW, "Unit"))
702- then if ((dL.caller == this))
643+ else if ($isInstanceOf(dq, "Unit"))
644+ then if ((df.caller == this))
703645 then true
704- else ff
646+ else eB
705647 else throw("Match error")
706648 }
707649
708650
709-@Callable(dL)
710-func calculateAmountOutForSwapREADONLY (fg,fh,fi) = {
711- let fj = if ((fh == false))
651+@Callable(df)
652+func setManager (eC) = {
653+ let eD = eA(df)
654+ if ((eD == eD))
712655 then {
713- let fk = aH(this, af())
714- let fl = aH(this, ae())
715- $Tuple2(fk, fl)
716- }
717- else {
718- let fk = aH(this, ae())
719- let fl = aH(this, af())
720- $Tuple2(fk, fl)
721- }
722- let fk = fj._1
723- let fl = fj._2
724- let fm = bE(fl)
725- let fn = bE(fk)
726- let fo = fraction(fn, fg, (fm + fg))
727- let fp = (toBigInt(fm) * toBigInt(fn))
728- let fq = (((toBigInt(bE(fl)) + toBigInt(fg)) + toBigInt(fi)) * (toBigInt(bE(fk)) - toBigInt(fo)))
729- let fr = if ((fq >= fp))
730- then true
731- else throw("new K is fewer error")
732- if ((fr == fr))
733- then $Tuple2(nil, fo)
734- else throw("Strict value is not equal to itself.")
735- }
736-
737-
738-
739-@Callable(dL)
740-func calculateAmountOutForSwapAndSendTokens (fg,fh,fs,ft,fi) = {
741- let fu = {
742- let aR = invoke(aO, "getSwapContractREADONLY", nil, nil)
743- if ($isInstanceOf(aR, "String"))
744- then aR
745- else throw(($getType(aR) + " couldn't be cast to String"))
746- }
747- let eH = [if ((value(dL.payments[0]).amount >= fg))
748- then true
749- else aL("Wrong amount"), if ((dL.caller == addressFromStringValue(fu)))
750- then true
751- else aL("Permission denied")]
752- if ((eH == eH))
753- then {
754- let dM = value(dL.payments[0])
755- let fl = ba(dM.assetId)
756- let fk = if ((fh == false))
757- then aH(this, af())
758- else aH(this, ae())
759- let fm = (bE(fl) - value(dL.payments[0]).amount)
760- let fn = bE(fk)
761- let fo = fraction(fn, fg, (fm + fg))
762- let fp = (toBigInt(fm) * toBigInt(fn))
763- let fq = ((toBigInt(bE(fl)) + toBigInt(fi)) * (toBigInt(bE(fk)) - toBigInt(fo)))
764- let fr = if ((fq >= fp))
765- then true
766- else throw("new K is fewer error")
767- if ((fr == fr))
768- then {
769- let fv = if ((fo >= fs))
770- then true
771- else throw("Exchange result is fewer coins than expected")
772- if ((fv == fv))
773- then $Tuple2([ScriptTransfer(addressFromStringValue(ft), fo, aY(fk))], fo)
774- else throw("Strict value is not equal to itself.")
775- }
656+ let eE = fromBase58String(eC)
657+ if ((eE == eE))
658+ then [StringEntry(R(), eC)]
776659 else throw("Strict value is not equal to itself.")
777660 }
778661 else throw("Strict value is not equal to itself.")
780663
781664
782665
783-@Callable(dL)
784-func setManager (fw) = {
785- let fx = fe(dL)
786- if ((fx == fx))
666+@Callable(df)
667+func confirmManager () = {
668+ let eF = ex()
669+ let eG = if (isDefined(eF))
670+ then true
671+ else throw("No pending manager")
672+ if ((eG == eG))
787673 then {
788- let fy = fromBase58String(fw)
789- if ((fy == fy))
790- then [StringEntry(V(), fw)]
674+ let eH = if ((df.callerPublicKey == value(eF)))
675+ then true
676+ else throw("You are not pending manager")
677+ if ((eH == eH))
678+ then [StringEntry(Q(), toBase58String(value(eF))), DeleteEntry(R())]
791679 else throw("Strict value is not equal to itself.")
792680 }
793681 else throw("Strict value is not equal to itself.")
795683
796684
797685
798-@Callable(dL)
799-func confirmManager () = {
800- let fz = fb()
801- let fA = if (isDefined(fz))
802- then true
803- else throw("No pending manager")
804- if ((fA == fA))
805- then {
806- let fB = if ((dL.callerPublicKey == value(fz)))
807- then true
808- else throw("You are not pending manager")
809- if ((fB == fB))
810- then [StringEntry(U(), toBase58String(value(fz))), DeleteEntry(V())]
811- else throw("Strict value is not equal to itself.")
812- }
813- else throw("Strict value is not equal to itself.")
814- }
815-
816-
817-
818-@Callable(dL)
819-func put (cz,fC) = if ((0 > cz))
686+@Callable(df)
687+func put (ck,eI) = if ((0 > ck))
820688 then throw("Invalid slippageTolerance passed")
821689 else {
822- let dR = dO(dL, cz, true)
823- let db = dR._2
824- let cg = dR._7
825- let cx = dR._9
826- let dc = dR._10
827- let dd = dR._11
828- let fD = dR._12
829- let fE = dR._13
830- let dP = toBigInt(value(dL.payments[0]).amount)
831- let dQ = toBigInt(value(dL.payments[1]).amount)
832- let ds = dl(dP, dQ, toBigInt(0))
833- if ((ds == ds))
690+ let dl = di(df, ck, true)
691+ let cM = dl._2
692+ let bR = dl._7
693+ let ci = dl._9
694+ let cN = dl._10
695+ let cO = dl._11
696+ let eJ = dl._12
697+ let eK = dl._13
698+ let do = invoke(aA, "emit", [cM], nil)
699+ if ((do == do))
834700 then {
835- let dU = invoke(aO, "emit", [db], nil)
836- if ((dU == dU))
701+ let dp = {
702+ let dq = do
703+ if ($isInstanceOf(dq, "Address"))
704+ then {
705+ let dr = dq
706+ invoke(dr, "emit", [cM], nil)
707+ }
708+ else unit
709+ }
710+ if ((dp == dp))
837711 then {
838- let dV = {
839- let dW = dU
840- if ($isInstanceOf(dW, "Address"))
841- then {
842- let dX = dW
843- invoke(dX, "emit", [db], nil)
844- }
845- else unit
846- }
847- if ((dV == dV))
712+ let eL = if ((cN > 0))
713+ then invoke(ba, "put", nil, [AttachedPayment(eJ, cN)])
714+ else nil
715+ if ((eL == eL))
848716 then {
849- let fF = if ((dc > 0))
850- then invoke(bo, "put", nil, [AttachedPayment(fD, dc)])
717+ let eM = if ((cO > 0))
718+ then invoke(ba, "put", nil, [AttachedPayment(eK, cO)])
851719 else nil
852- if ((fF == fF))
720+ if ((eM == eM))
853721 then {
854- let fG = if ((dd > 0))
855- then invoke(bo, "put", nil, [AttachedPayment(fE, dd)])
856- else nil
857- if ((fG == fG))
722+ let eN = if (eI)
858723 then {
859- let fH = if (fC)
860- then {
861- let fI = invoke(bn, "stake", nil, [AttachedPayment(cg, db)])
862- if ((fI == fI))
863- then nil
864- else throw("Strict value is not equal to itself.")
865- }
866- else [ScriptTransfer(dL.caller, db, cg)]
867- let fJ = dt(0, 0, 0)
868- if ((fJ == fJ))
869- then {
870- let dk = fJ._2
871- let fK = fJ._1
872- let fL = dx(ds, dk)
873- if ((fL == fL))
874- then ((cx ++ fH) ++ fK)
875- else throw("Strict value is not equal to itself.")
876- }
724+ let eO = invoke(aZ, "stake", nil, [AttachedPayment(bR, cM)])
725+ if ((eO == eO))
726+ then nil
877727 else throw("Strict value is not equal to itself.")
878728 }
879- else throw("Strict value is not equal to itself.")
729+ else [ScriptTransfer(df.caller, cM, bR)]
730+ (ci ++ eN)
880731 }
881732 else throw("Strict value is not equal to itself.")
882733 }
889740
890741
891742
892-@Callable(dL)
893-func putForFree (fM) = if ((0 > fM))
743+@Callable(df)
744+func putForFree (eP) = if ((0 > eP))
894745 then throw("Invalid value passed")
895746 else {
896- let dR = dO(dL, fM, false)
897- let cx = dR._9
898- let dP = toBigInt(value(dL.payments[0]).amount)
899- let dQ = toBigInt(value(dL.payments[1]).amount)
900- let ds = dl(dP, dQ, toBigInt(0))
901- if ((ds == ds))
902- then {
903- let fN = dt(0, 0, 0)
904- let fK = fN._1
905- let dk = fN._2
906- let fL = dx(ds, dk)
907- if ((fL == fL))
908- then (cx ++ fK)
909- else throw("Strict value is not equal to itself.")
910- }
911- else throw("Strict value is not equal to itself.")
747+ let dl = di(df, eP, false)
748+ dl._9
912749 }
913750
914751
915752
916-@Callable(dL)
917-func putOneTkn (fO,fP) = {
918- let fQ = {
919- let aR = invoke(aO, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
920- if ($isInstanceOf(aR, "Boolean"))
921- then aR
922- else throw(($getType(aR) + " couldn't be cast to Boolean"))
753+@Callable(df)
754+func putOneTkn (eQ,eR) = {
755+ let eS = {
756+ let aD = invoke(aA, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
757+ if ($isInstanceOf(aD, "Boolean"))
758+ then aD
759+ else throw(($getType(aD) + " couldn't be cast to Boolean"))
923760 }
924- let fR = if (if (if (aT())
761+ let eT = if (if (if (aF())
925762 then true
926- else (bg == l))
763+ else (aS == l))
927764 then true
928- else (bg == n))
765+ else (aS == n))
929766 then true
930- else fQ
931- let eH = [if (if (!(fR))
767+ else eS
768+ let ee = [if (if (!(eT))
932769 then true
933- else fc(dL))
770+ else ey(df))
934771 then true
935- else aL("put operation is blocked by admin"), if ((size(dL.payments) == 1))
772+ else ay("put operation is blocked by admin"), if ((size(df.payments) == 1))
936773 then true
937- else aL("exactly 1 payment are expected")]
938- if ((eH == eH))
774+ else ay("exactly 1 payment are expected")]
775+ if ((ee == ee))
939776 then {
940- let fS = dL.payments[0]
941- let ec = fS.assetId
942- let eb = fS.amount
943- let ds = if ((ec == bi))
944- then dl(toBigInt(eb), toBigInt(0), toBigInt(0))
945- else if ((ec == bj))
946- then dl(toBigInt(0), toBigInt(eb), toBigInt(0))
947- else aL("payment asset is not supported")
948- if ((ds == ds))
777+ let eU = df.payments[0]
778+ let dx = eU.assetId
779+ let dw = eU.amount
780+ let X = df.caller
781+ let Y = df.transactionId
782+ let eV = dv(dw, dx, X, Y)
783+ if ((eV == eV))
949784 then {
950- let ab = dL.caller
951- let ac = dL.transactionId
952- let fT = ea(eb, ec, ab, ac)
953- if ((fT == fT))
785+ let eW = eV._4
786+ let du = eV._3
787+ let cP = eV._2
788+ let eX = eV._1
789+ let eY = if (if ((eQ > 0))
790+ then (eQ > eX)
791+ else false)
792+ then ay(makeString(["amount to receive is less than ", toString(eQ)], ""))
793+ else eX
794+ let do = dm(eY)
795+ if ((do == do))
954796 then {
955- let eg = fT._5
956- let fU = fT._4
957- let dZ = fT._3
958- let de = fT._2
959- let fV = fT._1
960- let fW = if (if ((fO > 0))
961- then (fO > fV)
797+ let eN = if (eR)
798+ then {
799+ let eZ = invoke(aZ, "stake", nil, [AttachedPayment(aT, eY)])
800+ if ((eZ == eZ))
801+ then nil
802+ else throw("Strict value is not equal to itself.")
803+ }
804+ else [ScriptTransfer(df.caller, eY, aT)]
805+ let fa = if ((du > 0))
806+ then [ScriptTransfer(aB, du, dx)]
807+ else nil
808+ $Tuple2(((cP ++ eN) ++ fa), eY)
809+ }
810+ else throw("Strict value is not equal to itself.")
811+ }
812+ else throw("Strict value is not equal to itself.")
813+ }
814+ else throw("Strict value is not equal to itself.")
815+ }
816+
817+
818+
819+@Callable(df)
820+func putOneTknREADONLY (dx,dw) = {
821+ let fb = dv(dw, aK(dx), unit, unit)
822+ let eX = fb._1
823+ let cP = fb._2
824+ let du = fb._3
825+ let eW = fb._4
826+ $Tuple2(nil, $Tuple3(eX, du, eW))
827+ }
828+
829+
830+
831+@Callable(df)
832+func getOneTkn (fc,eQ) = {
833+ let eS = {
834+ let aD = invoke(aA, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
835+ if ($isInstanceOf(aD, "Boolean"))
836+ then aD
837+ else throw(($getType(aD) + " couldn't be cast to Boolean"))
838+ }
839+ let fd = if (if (aF())
840+ then true
841+ else (aS == n))
842+ then true
843+ else eS
844+ let ee = [if (if (!(fd))
845+ then true
846+ else ey(df))
847+ then true
848+ else ay("get operation is blocked by admin"), if ((size(df.payments) == 1))
849+ then true
850+ else ay("exactly 1 payment are expected")]
851+ if ((ee == ee))
852+ then {
853+ let ed = aK(fc)
854+ let eU = df.payments[0]
855+ let dx = eU.assetId
856+ let dL = eU.amount
857+ let X = df.caller
858+ let Y = df.transactionId
859+ let fe = ec(ed, dL, dx, X, Y)
860+ if ((fe == fe))
861+ then {
862+ let eW = fe._4
863+ let du = fe._3
864+ let cP = fe._2
865+ let ff = fe._1
866+ let dn = if (if ((eQ > 0))
867+ then (eQ > ff)
868+ else false)
869+ then ay(makeString(["amount to receive is less than ", toString(eQ)], ""))
870+ else ff
871+ let fg = invoke(aA, "burn", [dL], [AttachedPayment(dx, dL)])
872+ if ((fg == fg))
873+ then {
874+ let fh = [ScriptTransfer(X, dn, ed)]
875+ let fa = if ((du > 0))
876+ then [ScriptTransfer(aB, du, ed)]
877+ else nil
878+ $Tuple2(((cP ++ fh) ++ fa), dn)
879+ }
880+ else throw("Strict value is not equal to itself.")
881+ }
882+ else throw("Strict value is not equal to itself.")
883+ }
884+ else throw("Strict value is not equal to itself.")
885+ }
886+
887+
888+
889+@Callable(df)
890+func getOneTknREADONLY (ed,dL) = {
891+ let fi = ec(aK(ed), dL, aT, unit, unit)
892+ let ff = fi._1
893+ let cP = fi._2
894+ let du = fi._3
895+ let eW = fi._4
896+ $Tuple2(nil, $Tuple3(ff, du, eW))
897+ }
898+
899+
900+
901+@Callable(df)
902+func unstakeAndGetOneTkn (fj,fc,eQ) = {
903+ let eS = {
904+ let aD = invoke(aA, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
905+ if ($isInstanceOf(aD, "Boolean"))
906+ then aD
907+ else throw(($getType(aD) + " couldn't be cast to Boolean"))
908+ }
909+ let fd = if (if (aF())
910+ then true
911+ else (aS == n))
912+ then true
913+ else eS
914+ let ee = [if (if (!(fd))
915+ then true
916+ else ey(df))
917+ then true
918+ else ay("get operation is blocked by admin"), if ((size(df.payments) == 0))
919+ then true
920+ else ay("no payments are expected")]
921+ if ((ee == ee))
922+ then {
923+ let ed = aK(fc)
924+ let X = df.caller
925+ let Y = df.transactionId
926+ let fk = invoke(aZ, "unstake", [toBase58String(aT), fj], nil)
927+ if ((fk == fk))
928+ then {
929+ let fl = ec(ed, fj, aT, X, Y)
930+ if ((fl == fl))
931+ then {
932+ let eW = fl._4
933+ let du = fl._3
934+ let cP = fl._2
935+ let ff = fl._1
936+ let dn = if (if ((eQ > 0))
937+ then (eQ > ff)
962938 else false)
963- then aL(makeString(["amount to receive is less than ", toString(fO)], ""))
964- else fV
965- let dU = dS(fW)
966- if ((dU == dU))
939+ then ay(makeString(["amount to receive is less than ", toString(eQ)], ""))
940+ else ff
941+ let fg = invoke(aA, "burn", [fj], [AttachedPayment(aT, fj)])
942+ if ((fg == fg))
967943 then {
968- let fH = if (fP)
969- then {
970- let fX = invoke(bn, "stake", nil, [AttachedPayment(bh, fW)])
971- if ((fX == fX))
972- then nil
973- else throw("Strict value is not equal to itself.")
974- }
975- else [ScriptTransfer(dL.caller, fW, bh)]
976- let fY = if ((dZ > 0))
977- then [ScriptTransfer(aP, dZ, ec)]
944+ let fh = [ScriptTransfer(df.caller, dn, ed)]
945+ let fa = if ((du > 0))
946+ then [ScriptTransfer(aB, du, ed)]
978947 else nil
979- let fZ = if ((this == aP))
980- then $Tuple2(0, 0)
981- else if (eg)
982- then $Tuple2(-(dZ), 0)
983- else $Tuple2(0, -(dZ))
984- let du = fZ._1
985- let dv = fZ._2
986- let ga = dt(du, dv, 0)
987- let fK = ga._1
988- let dk = ga._2
989- let dE = value(getString(aj))
990- let fL = dx(ds, dk)
991- if ((fL == fL))
992- then $Tuple2((((de ++ fH) ++ fY) ++ fK), fW)
993- else throw("Strict value is not equal to itself.")
948+ $Tuple2(((cP ++ fh) ++ fa), dn)
994949 }
995950 else throw("Strict value is not equal to itself.")
996951 }
1003958
1004959
1005960
1006-@Callable(dL)
1007-func putOneTknREADONLY (ec,eb) = {
1008- let gb = ea(eb, aY(ec), unit, unit)
1009- let fV = gb._1
1010- let de = gb._2
1011- let dZ = gb._3
1012- let fU = gb._4
1013- let eg = gb._5
1014- $Tuple2(nil, $Tuple3(fV, dZ, fU))
961+@Callable(df)
962+func get () = {
963+ let cA = de(df)
964+ let fm = cA._1
965+ let ch = cA._2
966+ let dh = cA._3
967+ let bP = cA._4
968+ let ci = cA._5
969+ let fn = invoke(aA, "burn", [dh], [AttachedPayment(bP, dh)])
970+ if ((fn == fn))
971+ then ci
972+ else throw("Strict value is not equal to itself.")
1015973 }
1016974
1017975
1018976
1019-@Callable(dL)
1020-func getOneTkn (gc,fO) = {
1021- let fQ = {
1022- let aR = invoke(aO, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1023- if ($isInstanceOf(aR, "Boolean"))
1024- then aR
1025- else throw(($getType(aR) + " couldn't be cast to Boolean"))
1026- }
1027- let gd = if (if (aT())
1028- then true
1029- else (bg == n))
1030- then true
1031- else fQ
1032- let eH = [if (if (!(gd))
1033- then true
1034- else fc(dL))
1035- then true
1036- else aL("get operation is blocked by admin"), if ((size(dL.payments) == 1))
1037- then true
1038- else aL("exactly 1 payment are expected")]
1039- if ((eH == eH))
977+@Callable(df)
978+func getNoLess (fo,fp) = {
979+ let cA = de(df)
980+ let cg = cA._1
981+ let ch = cA._2
982+ let dh = cA._3
983+ let bP = cA._4
984+ let ci = cA._5
985+ if ((fo > cg))
986+ then throw(((("noLessThenAmtAsset failed: " + toString(cg)) + " < ") + toString(fo)))
987+ else if ((fp > ch))
988+ then throw(((("noLessThenPriceAsset failed: " + toString(ch)) + " < ") + toString(fp)))
989+ else {
990+ let fn = invoke(aA, "burn", [dh], [AttachedPayment(bP, dh)])
991+ if ((fn == fn))
992+ then ci
993+ else throw("Strict value is not equal to itself.")
994+ }
995+ }
996+
997+
998+
999+@Callable(df)
1000+func unstakeAndGet (dn) = {
1001+ let fq = if ((size(df.payments) != 0))
1002+ then throw("No payments are expected")
1003+ else true
1004+ if ((fq == fq))
10401005 then {
1041- let eG = aY(gc)
1042- let fS = dL.payments[0]
1043- let ec = fS.assetId
1044- let eo = fS.amount
1045- let ds = dl(toBigInt(0), toBigInt(0), toBigInt(0))
1046- if ((ds == ds))
1006+ let bE = aH()
1007+ let bR = fromBase58String(bE[q])
1008+ let fk = invoke(aZ, "unstake", [toBase58String(bR), dn], nil)
1009+ if ((fk == fk))
10471010 then {
1048- let ab = dL.caller
1049- let ac = dL.transactionId
1050- let ge = eF(eG, eo, ec, ab, ac)
1051- if ((ge == ge))
1011+ let cA = bN(toBase58String(df.transactionId), toBase58String(bR), dn, df.caller)
1012+ let bU = parseIntValue(cA._9)
1013+ let ci = cA._10
1014+ let fr = if (if (aF())
1015+ then true
1016+ else (bU == n))
1017+ then throw(("Get operation is blocked by admin. Status = " + toString(bU)))
1018+ else true
1019+ if ((fr == fr))
10521020 then {
1053- let eI = ge._5
1054- let fU = ge._4
1055- let dZ = ge._3
1056- let de = ge._2
1057- let gf = ge._1
1058- let dT = if (if ((fO > 0))
1059- then (fO > gf)
1060- else false)
1061- then aL(makeString(["amount to receive is less than ", toString(fO)], ""))
1062- else gf
1063- let gg = invoke(aO, "burn", [eo], [AttachedPayment(ec, eo)])
1064- if ((gg == gg))
1065- then {
1066- let gh = [ScriptTransfer(ab, dT, eG)]
1067- let fY = if ((dZ > 0))
1068- then [ScriptTransfer(aP, dZ, eG)]
1069- else nil
1070- let gi = {
1071- let gj = if ((this == aP))
1072- then 0
1073- else dZ
1074- if (eI)
1075- then $Tuple2(-((dT + gj)), 0)
1076- else $Tuple2(0, -((dT + gj)))
1077- }
1078- let du = gi._1
1079- let dv = gi._2
1080- let gk = dt(du, dv, 0)
1081- let fK = gk._1
1082- let dk = gk._2
1083- let fL = dx(ds, dk)
1084- if ((fL == fL))
1085- then $Tuple2((((de ++ gh) ++ fY) ++ fK), dT)
1086- else throw("Strict value is not equal to itself.")
1087- }
1021+ let fn = invoke(aA, "burn", [dn], [AttachedPayment(bR, dn)])
1022+ if ((fn == fn))
1023+ then ci
10881024 else throw("Strict value is not equal to itself.")
10891025 }
10901026 else throw("Strict value is not equal to itself.")
10961032
10971033
10981034
1099-@Callable(dL)
1100-func getOneTknREADONLY (eG,eo) = {
1101- let gl = eF(aY(eG), eo, bh, unit, unit)
1102- let gf = gl._1
1103- let de = gl._2
1104- let dZ = gl._3
1105- let fU = gl._4
1106- let eI = gl._5
1107- $Tuple2(nil, $Tuple3(gf, dZ, fU))
1108- }
1109-
1110-
1111-
1112-@Callable(dL)
1113-func unstakeAndGetOneTkn (gm,gc,fO) = {
1114- let fQ = {
1115- let aR = invoke(aO, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1116- if ($isInstanceOf(aR, "Boolean"))
1117- then aR
1118- else throw(($getType(aR) + " couldn't be cast to Boolean"))
1119- }
1120- let gd = if (if (aT())
1035+@Callable(df)
1036+func unstakeAndGetNoLess (fj,fs,fp) = {
1037+ let fd = if (aF())
11211038 then true
1122- else (bg == n))
1039+ else (aS == n)
1040+ let ee = [if (!(fd))
11231041 then true
1124- else fQ
1125- let eH = [if (if (!(gd))
1042+ else throw("get operation is blocked by admin"), if ((size(df.payments) == 0))
11261043 then true
1127- else fc(dL))
1128- then true
1129- else aL("get operation is blocked by admin"), if ((size(dL.payments) == 0))
1130- then true
1131- else aL("no payments are expected")]
1132- if ((eH == eH))
1044+ else throw("no payments are expected")]
1045+ if ((ee == ee))
11331046 then {
1134- let eG = aY(gc)
1135- let ab = dL.caller
1136- let ac = dL.transactionId
1137- let ds = dl(toBigInt(0), toBigInt(0), toBigInt(0))
1138- if ((ds == ds))
1047+ let fk = invoke(aZ, "unstake", [toBase58String(aT), fj], nil)
1048+ if ((fk == fk))
11391049 then {
1140- let gn = invoke(bn, "unstake", [toBase58String(bh), gm], nil)
1141- if ((gn == gn))
1050+ let cA = bN(toBase58String(df.transactionId), toBase58String(aT), fj, df.caller)
1051+ let cg = cA._1
1052+ let ch = cA._2
1053+ let ci = cA._10
1054+ let ft = [if ((cg >= fs))
1055+ then true
1056+ else throw(makeString(["amount asset amount to receive is less than ", toString(fs)], "")), if ((ch >= fp))
1057+ then true
1058+ else throw(makeString(["price asset amount to receive is less than ", toString(fp)], ""))]
1059+ if ((ft == ft))
11421060 then {
1143- let go = eF(eG, gm, bh, ab, ac)
1144- if ((go == go))
1145- then {
1146- let eI = go._5
1147- let fU = go._4
1148- let dZ = go._3
1149- let de = go._2
1150- let gf = go._1
1151- let dT = if (if ((fO > 0))
1152- then (fO > gf)
1153- else false)
1154- then aL(makeString(["amount to receive is less than ", toString(fO)], ""))
1155- else gf
1156- let gg = invoke(aO, "burn", [gm], [AttachedPayment(bh, gm)])
1157- if ((gg == gg))
1158- then {
1159- let gh = [ScriptTransfer(dL.caller, dT, eG)]
1160- let fY = if ((dZ > 0))
1161- then [ScriptTransfer(aP, dZ, eG)]
1162- else nil
1163- let gp = {
1164- let gj = if ((this == aP))
1165- then 0
1166- else dZ
1167- if (eI)
1168- then $Tuple2(-((dT + gj)), 0)
1169- else $Tuple2(0, -((dT + gj)))
1170- }
1171- let du = gp._1
1172- let dv = gp._2
1173- let gq = dt(du, dv, 0)
1174- let fK = gq._1
1175- let dk = gq._2
1176- let fL = dx(ds, dk)
1177- if ((fL == fL))
1178- then $Tuple2((((de ++ gh) ++ fY) ++ fK), dT)
1179- else throw("Strict value is not equal to itself.")
1180- }
1181- else throw("Strict value is not equal to itself.")
1182- }
1061+ let fn = invoke(aA, "burn", [fj], [AttachedPayment(aT, fj)])
1062+ if ((fn == fn))
1063+ then ci
11831064 else throw("Strict value is not equal to itself.")
11841065 }
11851066 else throw("Strict value is not equal to itself.")
11911072
11921073
11931074
1194-@Callable(dL)
1195-func get () = {
1196- let cP = dK(dL)
1197- let gr = cP._1
1198- let cw = cP._2
1199- let dN = cP._3
1200- let ce = cP._4
1201- let cx = cP._5
1202- let ds = dl(toBigInt(0), toBigInt(0), toBigInt(0))
1203- if ((ds == ds))
1204- then {
1205- let gs = invoke(aO, "burn", [dN], [AttachedPayment(ce, dN)])
1206- if ((gs == gs))
1207- then {
1208- let gt = dt(-(gr), -(cw), 0)
1209- let fK = gt._1
1210- let dk = gt._2
1211- let fL = dx(ds, dk)
1212- if ((fL == fL))
1213- then (cx ++ fK)
1214- else throw("Strict value is not equal to itself.")
1215- }
1216- else throw("Strict value is not equal to itself.")
1217- }
1218- else throw("Strict value is not equal to itself.")
1075+@Callable(df)
1076+func activate (fu,fv) = if ((toString(df.caller) != toString(aA)))
1077+ then throw("permissions denied")
1078+ else $Tuple2([StringEntry(aa(), fu), StringEntry(ab(), fv)], "success")
1079+
1080+
1081+
1082+@Callable(df)
1083+func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aH())
1084+
1085+
1086+
1087+@Callable(df)
1088+func getAccBalanceWrapperREADONLY (br) = $Tuple2(nil, bq(br))
1089+
1090+
1091+
1092+@Callable(df)
1093+func calcPricesWrapperREADONLY (by,bz,bD) = {
1094+ let bM = bC(by, bz, bD)
1095+ $Tuple2(nil, [toString(bM[0]), toString(bM[1]), toString(bM[2])])
12191096 }
12201097
12211098
12221099
1223-@Callable(dL)
1224-func getNoLess (gu,gv) = {
1225- let cP = dK(dL)
1226- let cv = cP._1
1227- let cw = cP._2
1228- let dN = cP._3
1229- let ce = cP._4
1230- let cx = cP._5
1231- if ((gu > cv))
1232- then throw(((("noLessThenAmtAsset failed: " + toString(cv)) + " < ") + toString(gu)))
1233- else if ((gv > cw))
1234- then throw(((("noLessThenPriceAsset failed: " + toString(cw)) + " < ") + toString(gv)))
1235- else {
1236- let ds = dl(toBigInt(0), toBigInt(0), toBigInt(0))
1237- if ((ds == ds))
1238- then {
1239- let gs = invoke(aO, "burn", [dN], [AttachedPayment(ce, dN)])
1240- if ((gs == gs))
1241- then {
1242- let gw = dt(-(cv), -(cw), 0)
1243- let fK = gw._1
1244- let dk = gw._2
1245- let fL = dx(ds, dk)
1246- if ((fL == fL))
1247- then (cx ++ fK)
1248- else throw("Strict value is not equal to itself.")
1249- }
1250- else throw("Strict value is not equal to itself.")
1251- }
1252- else throw("Strict value is not equal to itself.")
1253- }
1100+@Callable(df)
1101+func toX18WrapperREADONLY (E,F) = $Tuple2(nil, toString(D(E, F)))
1102+
1103+
1104+
1105+@Callable(df)
1106+func fromX18WrapperREADONLY (H,I) = $Tuple2(nil, G(parseBigIntValue(H), I))
1107+
1108+
1109+
1110+@Callable(df)
1111+func calcPriceBigIntWrapperREADONLY (bt,bu) = $Tuple2(nil, toString(bs(parseBigIntValue(bt), parseBigIntValue(bu))))
1112+
1113+
1114+
1115+@Callable(df)
1116+func estimatePutOperationWrapperREADONLY (bO,ck,cl,cm,cn,co,X,cp,cq) = $Tuple2(nil, cj(bO, ck, cl, cm, cn, co, X, cp, cq))
1117+
1118+
1119+
1120+@Callable(df)
1121+func estimateGetOperationWrapperREADONLY (bO,bP,bQ,X) = {
1122+ let cA = bN(bO, bP, bQ, addressFromStringValue(X))
1123+ $Tuple2(nil, $Tuple10(cA._1, cA._2, cA._3, cA._4, cA._5, cA._6, cA._7, toString(cA._8), cA._9, cA._10))
12541124 }
12551125
12561126
12571127
1258-@Callable(dL)
1259-func unstakeAndGet (dT) = {
1260- let gx = if ((size(dL.payments) != 0))
1261- then throw("No payments are expected")
1262- else true
1263- if ((gx == gx))
1264- then {
1265- let bT = aV()
1266- let cg = fromBase58String(bT[q])
1267- let ds = dl(toBigInt(0), toBigInt(0), toBigInt(0))
1268- if ((ds == ds))
1269- then {
1270- let gn = invoke(bn, "unstake", [toBase58String(cg), dT], nil)
1271- if ((gn == gn))
1272- then {
1273- let cP = cc(toBase58String(dL.transactionId), toBase58String(cg), dT, dL.caller)
1274- let cv = cP._1
1275- let cw = cP._2
1276- let cj = parseIntValue(cP._9)
1277- let cx = cP._10
1278- let gy = if (if (aT())
1279- then true
1280- else (cj == n))
1281- then throw(("Get operation is blocked by admin. Status = " + toString(cj)))
1282- else true
1283- if ((gy == gy))
1284- then {
1285- let gs = invoke(aO, "burn", [dT], [AttachedPayment(cg, dT)])
1286- if ((gs == gs))
1287- then {
1288- let gz = dt(-(cv), -(cw), 0)
1289- let fK = gz._1
1290- let dk = gz._2
1291- let fL = dx(ds, dk)
1292- if ((fL == fL))
1293- then (cx ++ fK)
1294- else throw("Strict value is not equal to itself.")
1295- }
1296- else throw("Strict value is not equal to itself.")
1297- }
1298- else throw("Strict value is not equal to itself.")
1299- }
1300- else throw("Strict value is not equal to itself.")
1301- }
1302- else throw("Strict value is not equal to itself.")
1303- }
1304- else throw("Strict value is not equal to itself.")
1128+@Callable(df)
1129+func statsREADONLY () = {
1130+ let bE = aH()
1131+ let bR = fromBase58String(bE[q])
1132+ let cS = bE[r]
1133+ let cT = bE[s]
1134+ let ct = bE[v]
1135+ let cu = bE[w]
1136+ let bF = parseIntValue(bE[t])
1137+ let bG = parseIntValue(bE[u])
1138+ let fw = valueOrErrorMessage(assetInfo(bR), (("Asset " + toBase58String(bR)) + " doesn't exist")).quantity
1139+ let cU = bq(cS)
1140+ let cV = bq(cT)
1141+ let fx = if ((fw == 0))
1142+ then [e, e, e]
1143+ else bC(cU, cV, fw)
1144+ let cb = 0
1145+ let fy = G(fx[1], b)
1146+ let fz = G(fx[2], b)
1147+ let fA = value(getInteger(aA, am(toString(this))))
1148+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(cU), toString(cV), toString(fw), toString(cb), toString(fy), toString(fz), toString(fA)], j))
13051149 }
13061150
13071151
13081152
1309-@Callable(dL)
1310-func unstakeAndGetNoLess (gm,gA,gv) = {
1311- let gd = if (aT())
1312- then true
1313- else (bg == n)
1314- let eH = [if (!(gd))
1315- then true
1316- else throw("get operation is blocked by admin"), if ((size(dL.payments) == 0))
1317- then true
1318- else throw("no payments are expected")]
1319- if ((eH == eH))
1320- then {
1321- let ds = dl(toBigInt(0), toBigInt(0), toBigInt(0))
1322- if ((ds == ds))
1323- then {
1324- let gn = invoke(bn, "unstake", [toBase58String(bh), gm], nil)
1325- if ((gn == gn))
1326- then {
1327- let cP = cc(toBase58String(dL.transactionId), toBase58String(bh), gm, dL.caller)
1328- let cv = cP._1
1329- let cw = cP._2
1330- let cx = cP._10
1331- let gB = [if ((cv >= gA))
1332- then true
1333- else throw(makeString(["amount asset amount to receive is less than ", toString(gA)], "")), if ((cw >= gv))
1334- then true
1335- else throw(makeString(["price asset amount to receive is less than ", toString(gv)], ""))]
1336- if ((gB == gB))
1337- then {
1338- let gs = invoke(aO, "burn", [gm], [AttachedPayment(bh, gm)])
1339- if ((gs == gs))
1340- then {
1341- let gC = dt(-(cv), -(cw), 0)
1342- let fK = gC._1
1343- let dk = gC._2
1344- let fL = dx(ds, dk)
1345- if ((fL == fL))
1346- then (cx ++ fK)
1347- else throw("Strict value is not equal to itself.")
1348- }
1349- else throw("Strict value is not equal to itself.")
1350- }
1351- else throw("Strict value is not equal to itself.")
1352- }
1353- else throw("Strict value is not equal to itself.")
1354- }
1355- else throw("Strict value is not equal to itself.")
1356- }
1357- else throw("Strict value is not equal to itself.")
1153+@Callable(df)
1154+func evaluatePutByAmountAssetREADONLY (cl) = {
1155+ let bE = aH()
1156+ let bR = fromBase58String(bE[q])
1157+ let cr = bE[r]
1158+ let bS = fromBase58String(cr)
1159+ let cs = bE[s]
1160+ let bT = fromBase58String(cs)
1161+ let bF = parseIntValue(bE[t])
1162+ let bG = parseIntValue(bE[u])
1163+ let bU = bE[p]
1164+ let fw = valueOrErrorMessage(assetInfo(bR), (("Asset " + toBase58String(bR)) + " doesn't exist")).quantity
1165+ let cU = bq(cr)
1166+ let cV = bq(cs)
1167+ let bA = D(cU, bF)
1168+ let bB = D(cV, bG)
1169+ let ca = if ((fw == 0))
1170+ then e
1171+ else bs(bB, bA)
1172+ let cx = D(cl, bF)
1173+ let cy = fraction(cx, ca, d)
1174+ let cn = G(cy, bG)
1175+ let dl = cj("", 500000, cl, bS, cn, bT, "", true, false)
1176+ let cI = dl._1
1177+ let fB = dl._3
1178+ let bW = dl._4
1179+ let bY = dl._5
1180+ let bV = dl._6
1181+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cI), toString(G(ca, b)), toString(bW), toString(bY), toString(bV), bU, toString(cl), toString(cn)], j))
13581182 }
13591183
13601184
13611185
1362-@Callable(dL)
1363-func activate (gD,gE) = if ((toString(dL.caller) != toString(aO)))
1364- then throw("permissions denied")
1365- else $Tuple2([StringEntry(ae(), gD), StringEntry(af(), gE)], "success")
1366-
1367-
1368-
1369-@Callable(dL)
1370-func refreshKLp () = {
1371- let gF = valueOrElse(getInteger(ak), 0)
1372- let gG = if (((height - gF) >= an))
1373- then unit
1374- else aL(makeString([toString(an), " blocks have not passed since the previous call"], ""))
1375- if ((gG == gG))
1376- then {
1377- let dE = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, aj), "0")), aN("invalid kLp"))
1378- let gH = dt(0, 0, 0)
1379- let gI = gH._1
1380- let dk = gH._2
1381- let dw = if ((dE != dk))
1382- then gI
1383- else aL("nothing to refresh")
1384- $Tuple2(dw, toString(dk))
1385- }
1386- else throw("Strict value is not equal to itself.")
1186+@Callable(df)
1187+func evaluatePutByPriceAssetREADONLY (cn) = {
1188+ let bE = aH()
1189+ let bR = fromBase58String(bE[q])
1190+ let cr = bE[r]
1191+ let bS = fromBase58String(cr)
1192+ let cs = bE[s]
1193+ let bT = fromBase58String(cs)
1194+ let bF = parseIntValue(bE[t])
1195+ let bG = parseIntValue(bE[u])
1196+ let bU = bE[p]
1197+ let fw = valueOrErrorMessage(assetInfo(bR), (("Asset " + toBase58String(bR)) + " doesn't exist")).quantity
1198+ let fC = bq(cr)
1199+ let fD = bq(cs)
1200+ let fE = D(fC, bF)
1201+ let fF = D(fD, bG)
1202+ let ca = if ((fw == 0))
1203+ then e
1204+ else bs(fF, fE)
1205+ let cy = D(cn, bG)
1206+ let cx = fraction(cy, d, ca)
1207+ let cl = G(cx, bF)
1208+ let dl = cj("", 500000, cl, bS, cn, bT, "", true, false)
1209+ let cI = dl._1
1210+ let fB = dl._3
1211+ let bW = dl._4
1212+ let bY = dl._5
1213+ let bV = dl._6
1214+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cI), toString(G(ca, b)), toString(bW), toString(bY), toString(bV), bU, toString(cl), toString(cn)], j))
13871215 }
13881216
13891217
13901218
1391-@Callable(dL)
1392-func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aV())
1393-
1394-
1395-
1396-@Callable(dL)
1397-func getAccBalanceWrapperREADONLY (bF) = $Tuple2(nil, bE(bF))
1398-
1399-
1400-
1401-@Callable(dL)
1402-func calcPricesWrapperREADONLY (bN,bO,bS) = {
1403- let cb = bR(bN, bO, bS)
1404- $Tuple2(nil, [toString(cb[0]), toString(cb[1]), toString(cb[2])])
1219+@Callable(df)
1220+func evaluateGetREADONLY (fG,fH) = {
1221+ let cA = bN("", fG, fH, this)
1222+ let cg = cA._1
1223+ let ch = cA._2
1224+ let bW = cA._5
1225+ let bY = cA._6
1226+ let bV = cA._7
1227+ let cb = cA._8
1228+ let bU = parseIntValue(cA._9)
1229+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(cg), toString(ch), toString(bW), toString(bY), toString(bV), toString(cb), toString(bU)], j))
14051230 }
14061231
14071232
1408-
1409-@Callable(dL)
1410-func toX18WrapperREADONLY (E,F) = $Tuple2(nil, toString(D(E, F)))
1411-
1412-
1413-
1414-@Callable(dL)
1415-func fromX18WrapperREADONLY (I,J) = $Tuple2(nil, H(parseBigIntValue(I), J))
1416-
1417-
1418-
1419-@Callable(dL)
1420-func calcPriceBigIntWrapperREADONLY (bH,bI) = $Tuple2(nil, toString(bG(parseBigIntValue(bH), parseBigIntValue(bI))))
1421-
1422-
1423-
1424-@Callable(dL)
1425-func estimatePutOperationWrapperREADONLY (cd,cz,cA,cB,cC,cD,ab,cE,cF) = $Tuple2(nil, cy(cd, cz, cA, cB, cC, cD, ab, cE, cF))
1426-
1427-
1428-
1429-@Callable(dL)
1430-func estimateGetOperationWrapperREADONLY (cd,ce,cf,ab) = {
1431- let cP = cc(cd, ce, cf, addressFromStringValue(ab))
1432- $Tuple2(nil, $Tuple10(cP._1, cP._2, cP._3, cP._4, cP._5, cP._6, cP._7, toString(cP._8), cP._9, cP._10))
1433- }
1434-
1435-
1436-
1437-@Callable(dL)
1438-func statsREADONLY () = {
1439- let bT = aV()
1440- let cg = fromBase58String(bT[q])
1441- let gJ = bT[r]
1442- let gK = bT[s]
1443- let cI = bT[v]
1444- let cJ = bT[w]
1445- let bU = parseIntValue(bT[t])
1446- let bV = parseIntValue(bT[u])
1447- let gL = valueOrErrorMessage(assetInfo(cg), (("Asset " + toBase58String(cg)) + " doesn't exist")).quantity
1448- let gM = bE(gJ)
1449- let gN = bE(gK)
1450- let gO = if ((gL == 0))
1451- then [e, e, e]
1452- else bR(gM, gN, gL)
1453- let cq = 0
1454- let gP = H(gO[1], b)
1455- let gQ = H(gO[2], b)
1456- let gR = value(getInteger(aO, ay(toString(this))))
1457- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(gM), toString(gN), toString(gL), toString(cq), toString(gP), toString(gQ), toString(gR)], j))
1458- }
1459-
1460-
1461-
1462-@Callable(dL)
1463-func evaluatePutByAmountAssetREADONLY (cA) = {
1464- let bT = aV()
1465- let cg = fromBase58String(bT[q])
1466- let cG = bT[r]
1467- let ch = fromBase58String(cG)
1468- let cH = bT[s]
1469- let ci = fromBase58String(cH)
1470- let bU = parseIntValue(bT[t])
1471- let bV = parseIntValue(bT[u])
1472- let cj = bT[p]
1473- let gL = valueOrErrorMessage(assetInfo(cg), (("Asset " + toBase58String(cg)) + " doesn't exist")).quantity
1474- let gM = bE(cG)
1475- let gN = bE(cH)
1476- let bP = D(gM, bU)
1477- let bQ = D(gN, bV)
1478- let cp = if ((gL == 0))
1479- then e
1480- else bG(bQ, bP)
1481- let cM = D(cA, bU)
1482- let cN = fraction(cM, cp, d)
1483- let cC = H(cN, bV)
1484- let dR = cy("", 500000, cA, ch, cC, ci, "", true, false)
1485- let cX = dR._1
1486- let gS = dR._3
1487- let cl = dR._4
1488- let cn = dR._5
1489- let ck = dR._6
1490- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cX), toString(H(cp, b)), toString(cl), toString(cn), toString(ck), cj, toString(cA), toString(cC)], j))
1491- }
1492-
1493-
1494-
1495-@Callable(dL)
1496-func evaluatePutByPriceAssetREADONLY (cC) = {
1497- let bT = aV()
1498- let cg = fromBase58String(bT[q])
1499- let cG = bT[r]
1500- let ch = fromBase58String(cG)
1501- let cH = bT[s]
1502- let ci = fromBase58String(cH)
1503- let bU = parseIntValue(bT[t])
1504- let bV = parseIntValue(bT[u])
1505- let cj = bT[p]
1506- let gL = valueOrErrorMessage(assetInfo(cg), (("Asset " + toBase58String(cg)) + " doesn't exist")).quantity
1507- let gT = bE(cG)
1508- let gU = bE(cH)
1509- let gV = D(gT, bU)
1510- let gW = D(gU, bV)
1511- let cp = if ((gL == 0))
1512- then e
1513- else bG(gW, gV)
1514- let cN = D(cC, bV)
1515- let cM = fraction(cN, d, cp)
1516- let cA = H(cM, bU)
1517- let dR = cy("", 500000, cA, ch, cC, ci, "", true, false)
1518- let cX = dR._1
1519- let gS = dR._3
1520- let cl = dR._4
1521- let cn = dR._5
1522- let ck = dR._6
1523- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cX), toString(H(cp, b)), toString(cl), toString(cn), toString(ck), cj, toString(cA), toString(cC)], j))
1524- }
1525-
1526-
1527-
1528-@Callable(dL)
1529-func evaluateGetREADONLY (gX,gY) = {
1530- let cP = cc("", gX, gY, this)
1531- let cv = cP._1
1532- let cw = cP._2
1533- let cl = cP._5
1534- let cn = cP._6
1535- let ck = cP._7
1536- let cq = cP._8
1537- let cj = parseIntValue(cP._9)
1538- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(cv), toString(cw), toString(cl), toString(cn), toString(ck), toString(cq), toString(cj)], j))
1539- }
1540-
1541-
1542-@Verifier(gZ)
1543-func ha () = {
1544- let hb = {
1545- let dW = eZ()
1546- if ($isInstanceOf(dW, "ByteVector"))
1233+@Verifier(fI)
1234+func fJ () = {
1235+ let fK = {
1236+ let dq = ev()
1237+ if ($isInstanceOf(dq, "ByteVector"))
15471238 then {
1548- let fd = dW
1549- fd
1239+ let ez = dq
1240+ ez
15501241 }
1551- else if ($isInstanceOf(dW, "Unit"))
1552- then gZ.senderPublicKey
1242+ else if ($isInstanceOf(dq, "Unit"))
1243+ then fI.senderPublicKey
15531244 else throw("Match error")
15541245 }
1555- let dW = gZ
1556- if ($isInstanceOf(dW, "Order"))
1246+ let dq = fI
1247+ if ($isInstanceOf(dq, "Order"))
15571248 then {
1558- let dA = dW
1559- let hc = aU()
1560- let hd = dz(dA)
1561- let aD = hd._1
1562- let aE = hd._2
1563- let aF = sigVerify(dA.bodyBytes, dA.proofs[0], dA.senderPublicKey)
1564- let aG = sigVerify(dA.bodyBytes, dA.proofs[1], hc)
1565- if (if (if (aD)
1566- then aF
1249+ let cR = dq
1250+ let fL = aG()
1251+ let ar = cQ(cR)
1252+ let as = sigVerify(cR.bodyBytes, cR.proofs[0], cR.senderPublicKey)
1253+ let at = sigVerify(cR.bodyBytes, cR.proofs[1], fL)
1254+ if (if (if (ar)
1255+ then as
15671256 else false)
1568- then aG
1257+ then at
15691258 else false)
15701259 then true
1571- else aC(aD, aE, aF, aG)
1260+ else aq(ar, as, at)
15721261 }
1573- else if ($isInstanceOf(dW, "SetScriptTransaction"))
1262+ else if ($isInstanceOf(dq, "SetScriptTransaction"))
15741263 then {
1575- let fa = dW
1576- if (sigVerify(gZ.bodyBytes, gZ.proofs[0], hb))
1264+ let ew = dq
1265+ let fM = blake2b256(value(ew.script))
1266+ let fN = fromBase64String(value(getString(aA, ao())))
1267+ let fO = scriptHash(this)
1268+ if (if ((fN == fM))
1269+ then (fO != fM)
1270+ else false)
15771271 then true
1578- else {
1579- let he = blake2b256(value(fa.script))
1580- let hf = fromBase64String(value(getString(aO, aA())))
1581- let hg = scriptHash(this)
1582- if ((hf == he))
1583- then (hg != he)
1584- else false
1585- }
1272+ else sigVerify(fI.bodyBytes, fI.proofs[0], fK)
15861273 }
1587- else sigVerify(gZ.bodyBytes, gZ.proofs[0], hb)
1274+ else sigVerify(fI.bodyBytes, fI.proofs[0], fK)
15881275 }
15891276
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 8
55
66 let b = 100000000
77
88 let c = toBigInt(100000000)
99
1010 let d = toBigInt(1000000000000000000)
1111
1212 let e = toBigInt(0)
1313
1414 let f = toBigInt(0)
1515
1616 let g = toBigInt(1)
1717
1818 let h = toBigInt(2)
1919
2020 let i = "WAVES"
2121
2222 let j = "__"
2323
2424 let k = 1
2525
2626 let l = 2
2727
2828 let m = 3
2929
3030 let n = 4
3131
3232 let o = 1
3333
3434 let p = 2
3535
3636 let q = 3
3737
3838 let r = 4
3939
4040 let s = 5
4141
4242 let t = 6
4343
4444 let u = 7
4545
4646 let v = 8
4747
4848 let w = 9
4949
5050 let x = 10
5151
5252 let y = 1
5353
5454 let z = 2
5555
5656 let A = 3
5757
5858 let B = 1
5959
6060 let C = 7
6161
6262 func D (E,F) = fraction(toBigInt(E), d, toBigInt(F))
6363
6464
65-func G (E,F) = fraction(E, d, F)
65+func G (H,I) = toInt(fraction(H, toBigInt(I), d))
6666
6767
68-func H (I,J) = toInt(fraction(I, toBigInt(J), d))
68+func J (K,L,M) = fraction(K, L, M)
6969
7070
71-func K (I,J,L) = toInt(fraction(I, toBigInt(J), d, L))
71+func N (H) = if ((0 > H))
72+ then -(H)
73+ else H
7274
7375
74-func M (N,O,P) = fraction(N, O, P)
76+func O (H) = if ((e > H))
77+ then -(H)
78+ else H
7579
7680
77-func Q (I) = if ((0 > I))
78- then -(I)
79- else I
81+func P () = "%s__factoryContract"
8082
8183
82-func R (I) = if ((e > I))
83- then -(I)
84- else I
84+func Q () = "%s__managerPublicKey"
8585
8686
87-func S () = "%s__swapContract"
87+func R () = "%s__pendingManagerPublicKey"
8888
8989
90-func T () = "%s__factoryContract"
90+func S () = "%s%s__price__last"
9191
9292
93-func U () = "%s__managerPublicKey"
93+func T (U,V) = makeString(["%s%s%d%d__price__history", toString(U), toString(V)], j)
9494
9595
96-func V () = "%s__pendingManagerPublicKey"
96+func W (X,Y) = ((("%s%s%s__P__" + X) + "__") + Y)
9797
9898
99-func W () = "%s%s__price__last"
99+func Z (X,Y) = ((("%s%s%s__G__" + X) + "__") + Y)
100100
101101
102-func X (Y,Z) = makeString(["%s%s%d%d__price__history", toString(Y), toString(Z)], j)
102+func aa () = "%s__amountAsset"
103103
104104
105-func aa (ab,ac) = ((("%s%s%s__P__" + ab) + "__") + ac)
105+func ab () = "%s__priceAsset"
106106
107107
108-func ad (ab,ac) = ((("%s%s%s__G__" + ab) + "__") + ac)
108+func ac () = "%s__factoryConfig"
109109
110110
111-func ae () = "%s__amountAsset"
111+func ad () = "%s%s__matcher__publicKey"
112112
113113
114-func af () = "%s__priceAsset"
114+func ae (af) = (("%s%s%s__" + af) + "__mappings__poolContract2LpAsset")
115115
116116
117-let ag = "%s__fee"
118-
119-let ah = fraction(10, b, 10000)
120-
121-let ai = valueOrElse(getInteger(this, ag), ah)
122-
123-let aj = makeString(["%s", "kLp"], j)
124-
125-let ak = makeString(["%s", "kLpRefreshedHeight"], j)
126-
127-let al = makeString(["%s", "refreshKLpDelay"], j)
128-
129-let am = 30
130-
131-let an = valueOrElse(getInteger(this, al), am)
132-
133-func ao () = "%s__factoryConfig"
117+func ag (ah,ai) = (((("%d%d%s__" + ah) + "__") + ai) + "__config")
134118
135119
136-func ap () = "%s%s__matcher__publicKey"
120+func aj (ak) = ("%s%s%s__mappings__baseAsset2internalId__" + ak)
137121
138122
139-func aq (ar) = (("%s%s%s__" + ar) + "__mappings__poolContract2LpAsset")
123+func al () = "%s__shutdown"
140124
141125
142-func as (at,au) = (((("%d%d%s__" + at) + "__") + au) + "__config")
126+func am (an) = ("%s%s__poolWeight__" + an)
143127
144128
145-func av (aw) = ("%s%s%s__mappings__baseAsset2internalId__" + aw)
129+func ao () = "%s__allowedLpScriptHash"
146130
147131
148-func ax () = "%s__shutdown"
132+let ap = "%s__feeCollectorAddress"
133+
134+func aq (ar,as,at) = throw(((((("order validation failed: orderValid=" + toString(ar)) + " senderValid=") + toString(as)) + " matcherValid=") + toString(at)))
149135
150136
151-func ay (az) = ("%s%s__poolWeight__" + az)
137+func au (av,aw) = valueOrErrorMessage(getString(av, aw), makeString(["mandatory ", toString(av), ".", aw, " is not defined"], ""))
152138
153139
154-func aA () = "%s__allowedLpScriptHash"
140+func ax (av,aw) = valueOrErrorMessage(getInteger(av, aw), makeString(["mandatory ", toString(av), ".", aw, " is not defined"], ""))
155141
156142
157-let aB = "%s__feeCollectorAddress"
158-
159-func aC (aD,aE,aF,aG) = throw((((((((("order validation failed: orderValid=" + toString(aD)) + " (") + aE) + ")") + " senderValid=") + toString(aF)) + " matcherValid=") + toString(aG)))
143+func ay (az) = throw(makeString(["lp.ride:", az], " "))
160144
161145
162-func aH (aI,aJ) = valueOrErrorMessage(getString(aI, aJ), makeString(["mandatory ", toString(aI), ".", aJ, " is not defined"], ""))
146+let aA = addressFromStringValue(au(this, P()))
147+
148+let aB = addressFromStringValue(au(aA, ap))
149+
150+let aC = {
151+ let aD = invoke(aA, "getInFeeREADONLY", [toString(this)], nil)
152+ if ($isInstanceOf(aD, "Int"))
153+ then aD
154+ else throw(($getType(aD) + " couldn't be cast to Int"))
155+ }
156+
157+let aE = {
158+ let aD = invoke(aA, "getOutFeeREADONLY", [toString(this)], nil)
159+ if ($isInstanceOf(aD, "Int"))
160+ then aD
161+ else throw(($getType(aD) + " couldn't be cast to Int"))
162+ }
163+
164+func aF () = valueOrElse(getBoolean(aA, al()), false)
163165
164166
165-func aK (aI,aJ) = valueOrErrorMessage(getInteger(aI, aJ), makeString(["mandatory ", toString(aI), ".", aJ, " is not defined"], ""))
167+func aG () = fromBase58String(au(aA, ad()))
166168
167169
168-func aL (aM) = throw(makeString(["lp.ride:", aM], " "))
169-
170-
171-func aN (aM) = makeString(["lp.ride:", aM], " ")
172-
173-
174-let aO = addressFromStringValue(aH(this, T()))
175-
176-let aP = addressFromStringValue(aH(aO, aB))
177-
178-let aQ = {
179- let aR = invoke(aO, "getInFeeREADONLY", [toString(this)], nil)
180- if ($isInstanceOf(aR, "Int"))
181- then aR
182- else throw(($getType(aR) + " couldn't be cast to Int"))
183- }
184-
185-let aS = {
186- let aR = invoke(aO, "getOutFeeREADONLY", [toString(this)], nil)
187- if ($isInstanceOf(aR, "Int"))
188- then aR
189- else throw(($getType(aR) + " couldn't be cast to Int"))
190- }
191-
192-func aT () = valueOrElse(getBoolean(aO, ax()), false)
193-
194-
195-func aU () = fromBase58String(aH(aO, ap()))
196-
197-
198-func aV () = {
199- let aW = aH(this, ae())
200- let aX = aH(this, af())
201- let au = aK(aO, av(aX))
202- let at = aK(aO, av(aW))
203- split(aH(aO, as(toString(at), toString(au))), j)
170+func aH () = {
171+ let aI = au(this, aa())
172+ let aJ = au(this, ab())
173+ let ai = ax(aA, aj(aJ))
174+ let ah = ax(aA, aj(aI))
175+ split(au(aA, ag(toString(ah), toString(ai))), j)
204176 }
205177
206178
207-func aY (aZ) = if ((aZ == i))
179+func aK (aL) = if ((aL == i))
208180 then unit
209- else fromBase58String(aZ)
181+ else fromBase58String(aL)
210182
211183
212-func ba (aZ) = if ((aZ == unit))
184+func aM (aL) = if ((aL == unit))
213185 then i
214- else toBase58String(value(aZ))
186+ else toBase58String(value(aL))
215187
216188
217-func bb (bc) = $Tuple7(addressFromStringValue(bc[o]), parseIntValue(bc[p]), fromBase58String(bc[q]), aY(bc[r]), aY(bc[s]), parseIntValue(bc[t]), parseIntValue(bc[u]))
189+func aN (aO) = $Tuple7(addressFromStringValue(aO[o]), parseIntValue(aO[p]), fromBase58String(aO[q]), aK(aO[r]), aK(aO[s]), parseIntValue(aO[t]), parseIntValue(aO[u]))
218190
219191
220-let bd = bb(aV())
192+let aP = aN(aH())
221193
222-let be = bd
194+let aQ = aP
223195
224-let bf = be._1
196+let aR = aQ._1
225197
226-let bg = be._2
198+let aS = aQ._2
227199
228-let bh = be._3
200+let aT = aQ._3
229201
230-let bi = be._4
202+let aU = aQ._4
231203
232-let bj = be._5
204+let aV = aQ._5
233205
234-let bk = be._6
206+let aW = aQ._6
235207
236-let bl = be._7
208+let aX = aQ._7
237209
238-func bm () = split(aH(aO, ao()), j)
210+func aY () = split(au(aA, ac()), j)
239211
240212
241-let bn = valueOrErrorMessage(addressFromString(bm()[B]), "incorrect staking address")
213+let aZ = valueOrErrorMessage(addressFromString(aY()[B]), "incorrect staking address")
242214
243-let bo = valueOrErrorMessage(addressFromString(bm()[C]), "incorrect staking address")
215+let ba = valueOrErrorMessage(addressFromString(aY()[C]), "incorrect staking address")
244216
245-func bp (bq,br,bs,bt,bu,bv,bw,bx,by,bz) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bq), toString(br), toString(bs), toString(bt), toString(bu), toString(bv), toString(bw), toString(bx), toString(by), toString(bz)], j)
217+func bb (bc,bd,be,bf,bg,bh,bi,bj,bk,bl) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bc), toString(bd), toString(be), toString(bf), toString(bg), toString(bh), toString(bi), toString(bj), toString(bk), toString(bl)], j)
246218
247219
248-func bA (bB,bC,bD,bt,bw,bx) = makeString(["%d%d%d%d%d%d", toString(bB), toString(bC), toString(bD), toString(bt), toString(bw), toString(bx)], j)
220+func bm (bn,bo,bp,bf,bi,bj) = makeString(["%d%d%d%d%d%d", toString(bn), toString(bo), toString(bp), toString(bf), toString(bi), toString(bj)], j)
249221
250222
251-func bE (bF) = if ((bF == "WAVES"))
223+func bq (br) = if ((br == "WAVES"))
252224 then wavesBalance(this).available
253- else assetBalance(this, fromBase58String(bF))
225+ else assetBalance(this, fromBase58String(br))
254226
255227
256-func bG (bH,bI) = fraction(bH, d, bI)
228+func bs (bt,bu) = fraction(bt, d, bu)
257229
258230
259-func bJ (bH,bI,L) = fraction(bH, d, bI, L)
260-
261-
262-func bK (bL,bM,bN,bO) = {
263- let bP = D(bN, bL)
264- let bQ = D(bO, bM)
265- bG(bQ, bP)
231+func bv (bw,bx,by,bz) = {
232+ let bA = D(by, bw)
233+ let bB = D(bz, bx)
234+ bs(bB, bA)
266235 }
267236
268237
269-func bR (bN,bO,bS) = {
270- let bT = aV()
271- let bU = parseIntValue(bT[t])
272- let bV = parseIntValue(bT[u])
273- let bW = bK(bU, bV, bN, bO)
274- let bI = D(bN, bU)
275- let bH = D(bO, bV)
276- let bX = D(bS, b)
277- let bY = bG(bI, bX)
278- let bZ = bG(bH, bX)
279-[bW, bY, bZ]
238+func bC (by,bz,bD) = {
239+ let bE = aH()
240+ let bF = parseIntValue(bE[t])
241+ let bG = parseIntValue(bE[u])
242+ let bH = bv(bF, bG, by, bz)
243+ let bu = D(by, bF)
244+ let bt = D(bz, bG)
245+ let bI = D(bD, b)
246+ let bJ = bs(bu, bI)
247+ let bK = bs(bt, bI)
248+[bH, bJ, bK]
280249 }
281250
282251
283-func ca (bN,bO,bS) = {
284- let cb = bR(bN, bO, bS)
285-[H(cb[0], b), H(cb[1], b), H(cb[2], b)]
252+func bL (by,bz,bD) = {
253+ let bM = bC(by, bz, bD)
254+[G(bM[0], b), G(bM[1], b), G(bM[2], b)]
286255 }
287256
288257
289-func cc (cd,ce,cf,ab) = {
290- let bT = aV()
291- let cg = bT[q]
292- let ch = bT[r]
293- let ci = bT[s]
294- let bL = parseIntValue(bT[t])
295- let bM = parseIntValue(bT[u])
296- let cj = bT[p]
297- let ck = valueOrErrorMessage(assetInfo(fromBase58String(cg)), (("Asset " + cg) + " doesn't exist")).quantity
298- if ((cg != ce))
258+func bN (bO,bP,bQ,X) = {
259+ let bE = aH()
260+ let bR = bE[q]
261+ let bS = bE[r]
262+ let bT = bE[s]
263+ let bw = parseIntValue(bE[t])
264+ let bx = parseIntValue(bE[u])
265+ let bU = bE[p]
266+ let bV = valueOrErrorMessage(assetInfo(fromBase58String(bR)), (("Asset " + bR) + " doesn't exist")).quantity
267+ if ((bR != bP))
299268 then throw("Invalid asset passed.")
300269 else {
301- let cl = bE(ch)
302- let cm = D(cl, bL)
303- let cn = bE(ci)
304- let co = D(cn, bM)
305- let cp = bG(co, cm)
306- let cq = H(cp, b)
307- let cr = D(cf, b)
308- let cs = D(ck, b)
309- let ct = fraction(cm, cr, cs)
310- let cu = fraction(co, cr, cs)
311- let cv = K(ct, bL, FLOOR)
312- let cw = K(cu, bM, FLOOR)
313- let cx = if ((cd == ""))
270+ let bW = bq(bS)
271+ let bX = D(bW, bw)
272+ let bY = bq(bT)
273+ let bZ = D(bY, bx)
274+ let ca = bs(bZ, bX)
275+ let cb = G(ca, b)
276+ let cc = D(bQ, b)
277+ let cd = D(bV, b)
278+ let ce = fraction(bX, cc, cd)
279+ let cf = fraction(bZ, cc, cd)
280+ let cg = G(ce, bw)
281+ let ch = G(cf, bx)
282+ let ci = if ((bO == ""))
314283 then nil
315- else [ScriptTransfer(ab, cv, if ((ch == "WAVES"))
284+ else [ScriptTransfer(X, cg, if ((bS == "WAVES"))
316285 then unit
317- else fromBase58String(ch)), ScriptTransfer(ab, cw, if ((ci == "WAVES"))
286+ else fromBase58String(bS)), ScriptTransfer(X, ch, if ((bT == "WAVES"))
318287 then unit
319- else fromBase58String(ci)), StringEntry(ad(toString(ab), cd), bA(cv, cw, cf, cq, height, lastBlock.timestamp)), IntegerEntry(W(), cq), IntegerEntry(X(height, lastBlock.timestamp), cq)]
320- $Tuple10(cv, cw, ch, ci, cl, cn, ck, cp, cj, cx)
288+ else fromBase58String(bT)), StringEntry(Z(toString(X), bO), bm(cg, ch, bQ, cb, height, lastBlock.timestamp)), IntegerEntry(S(), cb), IntegerEntry(T(height, lastBlock.timestamp), cb)]
289+ $Tuple10(cg, ch, bS, bT, bW, bY, bV, ca, bU, ci)
321290 }
322291 }
323292
324293
325-func cy (cd,cz,cA,cB,cC,cD,ab,cE,cF) = {
326- let bT = aV()
327- let cg = fromBase58String(bT[q])
328- let cG = bT[r]
329- let cH = bT[s]
330- let cI = bT[v]
331- let cJ = bT[w]
332- let bU = parseIntValue(bT[t])
333- let bV = parseIntValue(bT[u])
334- let cj = bT[p]
335- let ck = valueOrErrorMessage(assetInfo(cg), (("Asset " + toBase58String(cg)) + " doesn't exist")).quantity
336- let cK = toBase58String(valueOrElse(cB, fromBase58String("WAVES")))
337- let cL = toBase58String(valueOrElse(cD, fromBase58String("WAVES")))
338- if (if ((cG != cK))
294+func cj (bO,ck,cl,cm,cn,co,X,cp,cq) = {
295+ let bE = aH()
296+ let bR = fromBase58String(bE[q])
297+ let cr = bE[r]
298+ let cs = bE[s]
299+ let ct = bE[v]
300+ let cu = bE[w]
301+ let bF = parseIntValue(bE[t])
302+ let bG = parseIntValue(bE[u])
303+ let bU = bE[p]
304+ let bV = valueOrErrorMessage(assetInfo(bR), (("Asset " + toBase58String(bR)) + " doesn't exist")).quantity
305+ let cv = toBase58String(valueOrElse(cm, fromBase58String("WAVES")))
306+ let cw = toBase58String(valueOrElse(co, fromBase58String("WAVES")))
307+ if (if ((cr != cv))
339308 then true
340- else (cH != cL))
309+ else (cs != cw))
341310 then throw("Invalid amt or price asset passed.")
342311 else {
343- let cl = if (cE)
344- then bE(cG)
345- else (bE(cG) - cA)
346- let cn = if (cE)
347- then bE(cH)
348- else (bE(cH) - cC)
349- let cM = D(cA, bU)
350- let cN = D(cC, bV)
351- let cO = bG(cN, cM)
352- let cm = D(cl, bU)
353- let co = D(cn, bV)
354- let cP = if ((ck == 0))
312+ let bW = if (cp)
313+ then bq(cr)
314+ else (bq(cr) - cl)
315+ let bY = if (cp)
316+ then bq(cs)
317+ else (bq(cs) - cn)
318+ let cx = D(cl, bF)
319+ let cy = D(cn, bG)
320+ let cz = bs(cy, cx)
321+ let bX = D(bW, bF)
322+ let bZ = D(bY, bG)
323+ let cA = if ((bV == 0))
355324 then {
356- let cp = e
357- let cQ = e
358- let bX = pow((cM * cN), 0, toBigInt(5), 1, 0, DOWN)
359- $Tuple5(H(bX, b), H(cM, bU), H(cN, bV), bG((co + cN), (cm + cM)), cQ)
325+ let ca = e
326+ let cB = e
327+ let bI = pow((cx * cy), 0, toBigInt(5), 1, 0, DOWN)
328+ $Tuple5(G(bI, b), G(cx, bF), G(cy, bG), bs((bZ + cy), (bX + cx)), cB)
360329 }
361330 else {
362- let cp = bG(co, cm)
363- let cQ = fraction(R((cp - cO)), d, cp)
364- let cR = D(cz, b)
365- if (if ((cp != e))
366- then (cQ > cR)
331+ let ca = bs(bZ, bX)
332+ let cB = fraction(O((ca - cz)), d, ca)
333+ let cC = D(ck, b)
334+ if (if ((ca != e))
335+ then (cB > cC)
367336 else false)
368- then throw(((("Price slippage " + toString(cQ)) + " exceeded the passed limit of ") + toString(cR)))
337+ then throw(((("Price slippage " + toString(cB)) + " exceeded the passed limit of ") + toString(cC)))
369338 else {
370- let cs = D(ck, b)
371- let cS = fraction(cM, bJ(co, cm, CEILING), d, CEILING)
372- let cT = fraction(cN, d, bJ(co, cm, FLOOR), CEILING)
373- let cU = if ((cS > cN))
374- then $Tuple2(cT, cN)
375- else $Tuple2(cM, cS)
376- let cV = cU._1
377- let cW = cU._2
378- let bX = fraction(cs, cW, co, FLOOR)
379- $Tuple5(K(bX, b, FLOOR), K(cV, bU, CEILING), K(cW, bV, CEILING), cp, cQ)
339+ let cd = D(bV, b)
340+ let cD = fraction(cx, ca, d)
341+ let cE = fraction(cy, d, ca)
342+ let cF = if ((cD > cy))
343+ then $Tuple2(cE, cy)
344+ else $Tuple2(cx, cD)
345+ let cG = cF._1
346+ let cH = cF._2
347+ let bI = fraction(cd, cH, bZ)
348+ $Tuple5(G(bI, b), G(cG, bF), G(cH, bG), ca, cB)
380349 }
381350 }
382- let cX = cP._1
383- let cY = cP._2
384- let cZ = cP._3
385- let cq = H(cP._4, b)
386- let da = H(cP._5, b)
387- if ((0 >= cX))
351+ let cI = cA._1
352+ let cJ = cA._2
353+ let cK = cA._3
354+ let cb = G(cA._4, b)
355+ let cL = G(cA._5, b)
356+ if ((0 >= cI))
388357 then throw("Invalid calculations. LP calculated is less than zero.")
389358 else {
390- let db = if (!(cF))
359+ let cM = if (!(cq))
391360 then 0
392- else cX
393- let dc = (cA - cY)
394- let dd = (cC - cZ)
395- let de = [IntegerEntry(W(), cq), IntegerEntry(X(height, lastBlock.timestamp), cq), StringEntry(aa(ab, cd), bp(cY, cZ, db, cq, cz, da, height, lastBlock.timestamp, dc, dd))]
396- $Tuple13(cX, db, cq, cl, cn, ck, cg, cj, de, dc, dd, cB, cD)
361+ else cI
362+ let cN = (cl - cJ)
363+ let cO = (cn - cK)
364+ let cP = [IntegerEntry(S(), cb), IntegerEntry(T(height, lastBlock.timestamp), cb), StringEntry(W(X, bO), bb(cJ, cK, cM, cb, ck, cL, height, lastBlock.timestamp, cN, cO))]
365+ $Tuple13(cI, cM, cb, bW, bY, bV, bR, bU, cP, cN, cO, cm, co)
397366 }
398367 }
399368 }
400369
401370
402-func df (dg,dh,ck) = {
403- let di = G(dg, toBigInt(bk))
404- let dj = G(dh, toBigInt(bl))
405- let dk = fraction(pow((di * dj), 0, toBigInt(5), 1, 18, DOWN), g, ck)
406- if ((ck == f))
407- then f
408- else dk
371+func cQ (cR) = {
372+ let bE = aH()
373+ let cS = bE[r]
374+ let cT = bE[s]
375+ let bU = parseIntValue(bE[p])
376+ let bF = parseIntValue(bE[t])
377+ let bG = parseIntValue(bE[u])
378+ let cU = bq(cS)
379+ let cV = bq(cT)
380+ let ca = if ((cR.orderType == Buy))
381+ then bv(bF, bG, (cU + cR.amount), cV)
382+ else bv(bF, bG, (cU - cR.amount), cV)
383+ let cb = G(ca, b)
384+ if (if (if (aF())
385+ then true
386+ else (bU == m))
387+ then true
388+ else (bU == n))
389+ then throw("Exchange operations disabled")
390+ else {
391+ let cW = cR.assetPair.amountAsset
392+ let cX = if ((cW == unit))
393+ then "WAVES"
394+ else toBase58String(value(cW))
395+ let cY = cR.assetPair.priceAsset
396+ let cZ = if ((cY == unit))
397+ then "WAVES"
398+ else toBase58String(value(cY))
399+ if (if ((cX != cS))
400+ then true
401+ else (cZ != cT))
402+ then throw("Wrong order assets.")
403+ else {
404+ let da = cR.price
405+ let db = fraction(b, bG, bF)
406+ let dc = J(da, b, db)
407+ let dd = if ((cR.orderType == Buy))
408+ then (cb >= dc)
409+ else (dc >= cb)
410+ true
411+ }
412+ }
409413 }
410414
411415
412-func dl (dm,dn,do) = {
413- let dp = (toBigInt(bE(ba(bi))) - dm)
414- let dq = (toBigInt(bE(ba(bj))) - dn)
415- let dr = (toBigInt(value(assetInfo(bh)).quantity) - do)
416- let ds = df(dp, dq, dr)
417- ds
418- }
419-
420-
421-func dt (du,dv,do) = {
422- let dp = (bE(ba(bi)) + du)
423- let dq = (bE(ba(bj)) + dv)
424- let dr = (value(assetInfo(bh)).quantity + do)
425- let dk = df(toBigInt(dp), toBigInt(dq), toBigInt(dr))
426- let dw = [IntegerEntry(ak, height), StringEntry(aj, toString(dk))]
427- $Tuple2(dw, dk)
428- }
429-
430-
431-func dx (dy,dk) = if ((dk >= dy))
432- then true
433- else aL(makeString(["updated KLp lower than current KLp", toString(dy), toString(dk)], " "))
434-
435-
436-func dz (dA) = {
437- let dp = bE(ba(bi))
438- let dq = bE(ba(bj))
439- let dB = dA.amount
440- let dC = fraction(dA.amount, dA.price, b, FLOOR)
441- let dD = if ((dA.orderType == Buy))
442- then $Tuple2(dB, -(dC))
443- else $Tuple2(-(dB), dC)
444- let du = dD._1
445- let dv = dD._2
446- if (if (if (aT())
447- then true
448- else (bg == m))
449- then true
450- else (bg == n))
451- then throw("Exchange operations disabled")
452- else if (if ((dA.assetPair.amountAsset != bi))
453- then true
454- else (dA.assetPair.priceAsset != bj))
455- then throw("Wrong order assets.")
456- else {
457- let dE = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, aj), "0")), aN("invalid kLp"))
458- let dF = dt(du, dv, 0)
459- let dG = dF._1
460- let dH = dF._2
461- let dI = (dH >= dE)
462- let dJ = makeString(["kLp=", toString(dE), " kLpNew=", toString(dH), " amountAssetBalance=", toString(dp), " priceAssetBalance=", toString(dq), " amountAssetBalanceDelta=", toString(du), " priceAssetBalanceDelta=", toString(dv), " height=", toString(height)], "")
463- $Tuple2(dI, dJ)
464- }
465- }
466-
467-
468-func dK (dL) = if ((size(dL.payments) != 1))
416+func de (df) = if ((size(df.payments) != 1))
469417 then throw("exactly 1 payment is expected")
470418 else {
471- let dM = value(dL.payments[0])
472- let ce = value(dM.assetId)
473- let dN = dM.amount
474- let cP = cc(toBase58String(dL.transactionId), toBase58String(ce), dN, dL.caller)
475- let cv = cP._1
476- let cw = cP._2
477- let cj = parseIntValue(cP._9)
478- let cx = cP._10
479- if (if (aT())
419+ let dg = value(df.payments[0])
420+ let bP = value(dg.assetId)
421+ let dh = dg.amount
422+ let cA = bN(toBase58String(df.transactionId), toBase58String(bP), dh, df.caller)
423+ let cg = cA._1
424+ let ch = cA._2
425+ let bU = parseIntValue(cA._9)
426+ let ci = cA._10
427+ if (if (aF())
480428 then true
481- else (cj == n))
482- then throw(("Get operation is blocked by admin. Status = " + toString(cj)))
483- else $Tuple5(cv, cw, dN, ce, cx)
429+ else (bU == n))
430+ then throw(("Get operation is blocked by admin. Status = " + toString(bU)))
431+ else $Tuple5(cg, ch, dh, bP, ci)
484432 }
485433
486434
487-func dO (dL,cz,cF) = if ((size(dL.payments) != 2))
435+func di (df,ck,cq) = if ((size(df.payments) != 2))
488436 then throw("exactly 2 payments are expected")
489437 else {
490- let dP = value(dL.payments[0])
491- let dQ = value(dL.payments[1])
492- let dR = cy(toBase58String(dL.transactionId), cz, dP.amount, dP.assetId, dQ.amount, dQ.assetId, toString(dL.caller), false, cF)
493- let cj = parseIntValue(dR._8)
494- if (if (if (aT())
438+ let dj = value(df.payments[0])
439+ let dk = value(df.payments[1])
440+ let dl = cj(toBase58String(df.transactionId), ck, dj.amount, dj.assetId, dk.amount, dk.assetId, toString(df.caller), false, cq)
441+ let bU = parseIntValue(dl._8)
442+ if (if (if (aF())
495443 then true
496- else (cj == l))
444+ else (bU == l))
497445 then true
498- else (cj == n))
499- then throw(("Put operation is blocked by admin. Status = " + toString(cj)))
500- else dR
446+ else (bU == n))
447+ then throw(("Put operation is blocked by admin. Status = " + toString(bU)))
448+ else dl
501449 }
502450
503451
504-func dS (dT) = {
505- let dU = invoke(aO, "emit", [dT], nil)
506- if ((dU == dU))
452+func dm (dn) = {
453+ let do = invoke(aA, "emit", [dn], nil)
454+ if ((do == do))
507455 then {
508- let dV = {
509- let dW = dU
510- if ($isInstanceOf(dW, "Address"))
456+ let dp = {
457+ let dq = do
458+ if ($isInstanceOf(dq, "Address"))
511459 then {
512- let dX = dW
513- invoke(dX, "emit", [dT], nil)
460+ let dr = dq
461+ invoke(dr, "emit", [dn], nil)
514462 }
515463 else unit
516464 }
517- if ((dV == dV))
518- then dT
465+ if ((dp == dp))
466+ then dn
519467 else throw("Strict value is not equal to itself.")
520468 }
521469 else throw("Strict value is not equal to itself.")
522470 }
523471
524472
525-func dY (dT,ai) = {
526- let dZ = if ((ai == 0))
473+func ds (dn,dt) = {
474+ let du = if ((dt == 0))
527475 then 0
528- else fraction(dT, ai, b)
529- $Tuple2((dT - dZ), dZ)
476+ else fraction(dn, dt, b)
477+ $Tuple2((dn - du), du)
530478 }
531479
532480
533-func ea (eb,ec,ab,ac) = {
534- let ed = (ac == unit)
535- let ee = bE(ba(bi))
536- let ef = bE(ba(bj))
537- let eg = if ((ec == bi))
481+func dv (dw,dx,X,Y) = {
482+ let dy = (Y == unit)
483+ let dz = bq(aM(aU))
484+ let dA = bq(aM(aV))
485+ let dB = if ((dx == aU))
538486 then true
539- else if ((ec == bj))
487+ else if ((dx == aV))
540488 then false
541- else aL("invalid asset")
542- let eh = if (ed)
543- then $Tuple2(ee, ef)
544- else if (eg)
545- then $Tuple2((ee - eb), ef)
546- else $Tuple2(ee, (ef - eb))
547- let ei = eh._1
548- let ej = eh._2
549- let ek = if (eg)
550- then $Tuple2(eb, 0)
551- else $Tuple2(0, eb)
552- let el = ek._1
553- let em = ek._2
554- let dB = dY(el, aQ)._1
555- let dC = dY(em, aQ)._1
556- let en = dY(eb, aQ)
557- let eo = en._1
558- let dZ = en._2
559- let ep = (ei + dB)
560- let eq = (ej + dC)
561- let er = bG(D(eq, bl), D(ep, bk))
562- let es = H(er, b)
563- let et = if (eg)
564- then ei
565- else ej
566- let eu = toBigInt(et)
567- let ev = toBigInt(valueOrErrorMessage(assetInfo(bh), (("asset " + toBase58String(bh)) + " doesn't exist")).quantity)
568- let ew = if ((ev > f))
489+ else ay("invalid asset")
490+ let dC = if (dy)
491+ then $Tuple2(dz, dA)
492+ else if (dB)
493+ then $Tuple2((dz - dw), dA)
494+ else $Tuple2(dz, (dA - dw))
495+ let dD = dC._1
496+ let dE = dC._2
497+ let dF = if (dB)
498+ then $Tuple2(dw, 0)
499+ else $Tuple2(0, dw)
500+ let dG = dF._1
501+ let dH = dF._2
502+ let dI = ds(dG, aC)._1
503+ let dJ = ds(dH, aC)._1
504+ let dK = ds(dw, aC)
505+ let dL = dK._1
506+ let du = dK._2
507+ let dM = (dD + dI)
508+ let dN = (dE + dJ)
509+ let dO = bs(D(dN, aX), D(dM, aW))
510+ let dP = G(dO, b)
511+ let dQ = if (dB)
512+ then dD
513+ else dE
514+ let dR = toBigInt(dQ)
515+ let dS = toBigInt(valueOrErrorMessage(assetInfo(aT), (("asset " + toBase58String(aT)) + " doesn't exist")).quantity)
516+ let dT = if ((dS > f))
569517 then true
570- else aL("initial deposit requires all coins")
571- if ((ew == ew))
518+ else ay("initial deposit requires all coins")
519+ if ((dT == dT))
572520 then {
573- let ex = toBigInt(eo)
574- let ey = max([0, toInt(((ev * (sqrtBigInt((d + ((ex * d) / eu)), 18, 18, DOWN) - d)) / d))])
575- let de = if (ed)
521+ let dU = toBigInt(dL)
522+ let dV = max([0, toInt(((dS * (sqrtBigInt((d + ((dU * d) / dR)), 18, 18, DOWN) - d)) / d))])
523+ let cP = if (dy)
576524 then nil
577- else [IntegerEntry(W(), es), IntegerEntry(X(height, lastBlock.timestamp), es), StringEntry(aa(toString(value(ab)), toBase58String(value(ac))), bp(el, em, ey, es, 0, 0, height, lastBlock.timestamp, 0, 0))]
578- let ez = bG(D(ej, bl), D(ei, bk))
579- let eA = H(ez, b)
580- let eB = {
581- let eC = if (eg)
582- then $Tuple2(el, ei)
583- else $Tuple2(em, ej)
584- let dT = eC._1
585- let eD = eC._2
586- let eE = toInt(fraction(ev, toBigInt((dT / 2)), toBigInt(eD)))
587- fraction((ey - eE), b, eE)
525+ else [IntegerEntry(S(), dP), IntegerEntry(T(height, lastBlock.timestamp), dP), StringEntry(W(toString(value(X)), toBase58String(value(Y))), bb(dG, dH, dV, dP, 0, 0, height, lastBlock.timestamp, 0, 0))]
526+ let dW = bs(D(dE, aX), D(dD, aW))
527+ let dX = G(dW, b)
528+ let dY = {
529+ let dZ = if (dB)
530+ then $Tuple2(dG, dD)
531+ else $Tuple2(dH, dE)
532+ let dn = dZ._1
533+ let ea = dZ._2
534+ let eb = toInt(fraction(dS, toBigInt((dn / 2)), toBigInt(ea)))
535+ fraction((dV - eb), b, eb)
588536 }
589- $Tuple5(ey, de, dZ, eB, eg)
537+ $Tuple4(dV, cP, du, dY)
590538 }
591539 else throw("Strict value is not equal to itself.")
592540 }
593541
594542
595-func eF (eG,eo,ec,ab,ac) = {
596- let ed = (ac == unit)
597- let bT = aV()
598- let bU = parseIntValue(bT[t])
599- let bV = parseIntValue(bT[u])
600- let eH = [if ((ec == bh))
543+func ec (ed,dL,dx,X,Y) = {
544+ let dy = (Y == unit)
545+ let ee = [if ((dx == aT))
601546 then true
602- else aL("invalid lp asset")]
603- if ((eH == eH))
547+ else ay("invalid lp asset")]
548+ if ((ee == ee))
604549 then {
605- let eI = if ((eG == bi))
550+ let ef = if ((ed == aU))
606551 then true
607- else if ((eG == bj))
552+ else if ((ed == aV))
608553 then false
609- else aL("invalid asset")
610- let eJ = if (eI)
611- then toBigInt(bE(ba(bi)))
612- else toBigInt(bE(ba(bj)))
613- let eK = if (eI)
614- then bU
615- else bV
616- let eL = bE(ba(bi))
617- let eM = bE(ba(bj))
618- let eN = if (eI)
619- then eL
620- else eM
621- let eO = toBigInt(eN)
622- let ev = toBigInt(valueOrErrorMessage(assetInfo(bh), (("asset " + toBase58String(bh)) + " doesn't exist")).quantity)
623- let eP = toBigInt(eo)
624- let eQ = max([0, toInt(((eJ * (d - pow((d - ((eP * d) / ev)), 18, h, 0, 18, DOWN))) / d))])
625- let eR = dY(eQ, aS)
626- let eS = eR._1
627- let dZ = eR._2
628- let eT = if (eI)
629- then $Tuple4(eS, 0, (eL - eQ), eM)
630- else $Tuple4(0, eS, eL, (eM - eQ))
631- let eU = eT._1
632- let eV = eT._2
633- let eW = eT._3
634- let eX = eT._4
635- let er = bG(D(eX, bl), D(eW, bk))
636- let es = H(er, b)
637- let de = if (ed)
554+ else ay("invalid asset")
555+ let eg = if (ef)
556+ then toBigInt(bq(aM(aU)))
557+ else toBigInt(bq(aM(aV)))
558+ let eh = bq(aM(aU))
559+ let ei = bq(aM(aV))
560+ let ej = if (ef)
561+ then eh
562+ else ei
563+ let ek = toBigInt(ej)
564+ let dS = toBigInt(valueOrErrorMessage(assetInfo(aT), (("asset " + toBase58String(aT)) + " doesn't exist")).quantity)
565+ let el = toBigInt(dL)
566+ let em = max([0, toInt(((eg * (d - pow((d - ((el * d) / dS)), 18, h, 0, 18, DOWN))) / d))])
567+ let en = ds(em, aE)
568+ let eo = en._1
569+ let du = en._2
570+ let ep = if (ef)
571+ then $Tuple4(eo, 0, (eh - em), ei)
572+ else $Tuple4(0, eo, eh, (ei - em))
573+ let eq = ep._1
574+ let er = ep._2
575+ let es = ep._3
576+ let et = ep._4
577+ let dO = bs(D(et, aX), D(es, aW))
578+ let dP = G(dO, b)
579+ let cP = if (dy)
638580 then nil
639- else [StringEntry(ad(toString(value(ab)), toBase58String(value(ac))), bA(eU, eV, eo, es, height, lastBlock.timestamp)), IntegerEntry(W(), es), IntegerEntry(X(height, lastBlock.timestamp), es)]
640- let ez = bG(D(eM, bl), D(eL, bk))
641- let eA = H(ez, b)
642- let eB = {
643- let eY = (toInt(fraction(eJ, eP, ev)) * 2)
644- fraction((eS - eY), b, eY)
581+ else [StringEntry(Z(toString(value(X)), toBase58String(value(Y))), bm(eq, er, dL, dP, height, lastBlock.timestamp)), IntegerEntry(S(), dP), IntegerEntry(T(height, lastBlock.timestamp), dP)]
582+ let dW = bs(D(ei, aX), D(eh, aW))
583+ let dX = G(dW, b)
584+ let dY = {
585+ let eu = (toInt(fraction(eg, el, dS)) * 2)
586+ fraction((eo - eu), b, eu)
645587 }
646- $Tuple5(eS, de, dZ, eB, eI)
588+ $Tuple4(eo, cP, du, dY)
647589 }
648590 else throw("Strict value is not equal to itself.")
649591 }
650592
651593
652-func eZ () = {
653- let dW = getString(U())
654- if ($isInstanceOf(dW, "String"))
594+func ev () = {
595+ let dq = getString(Q())
596+ if ($isInstanceOf(dq, "String"))
655597 then {
656- let fa = dW
657- fromBase58String(fa)
598+ let ew = dq
599+ fromBase58String(ew)
658600 }
659- else if ($isInstanceOf(dW, "Unit"))
601+ else if ($isInstanceOf(dq, "Unit"))
660602 then unit
661603 else throw("Match error")
662604 }
663605
664606
665-func fb () = {
666- let dW = getString(V())
667- if ($isInstanceOf(dW, "String"))
607+func ex () = {
608+ let dq = getString(R())
609+ if ($isInstanceOf(dq, "String"))
668610 then {
669- let fa = dW
670- fromBase58String(fa)
611+ let ew = dq
612+ fromBase58String(ew)
671613 }
672- else if ($isInstanceOf(dW, "Unit"))
614+ else if ($isInstanceOf(dq, "Unit"))
673615 then unit
674616 else throw("Match error")
675617 }
676618
677619
678-func fc (dL) = {
679- let dW = eZ()
680- if ($isInstanceOf(dW, "ByteVector"))
620+func ey (df) = {
621+ let dq = ev()
622+ if ($isInstanceOf(dq, "ByteVector"))
681623 then {
682- let fd = dW
683- (dL.callerPublicKey == fd)
624+ let ez = dq
625+ (df.callerPublicKey == ez)
684626 }
685- else if ($isInstanceOf(dW, "Unit"))
686- then (dL.caller == this)
627+ else if ($isInstanceOf(dq, "Unit"))
628+ then (df.caller == this)
687629 else throw("Match error")
688630 }
689631
690632
691-func fe (dL) = {
692- let ff = throw("Permission denied")
693- let dW = eZ()
694- if ($isInstanceOf(dW, "ByteVector"))
633+func eA (df) = {
634+ let eB = throw("Permission denied")
635+ let dq = ev()
636+ if ($isInstanceOf(dq, "ByteVector"))
695637 then {
696- let fd = dW
697- if ((dL.callerPublicKey == fd))
638+ let ez = dq
639+ if ((df.callerPublicKey == ez))
698640 then true
699- else ff
641+ else eB
700642 }
701- else if ($isInstanceOf(dW, "Unit"))
702- then if ((dL.caller == this))
643+ else if ($isInstanceOf(dq, "Unit"))
644+ then if ((df.caller == this))
703645 then true
704- else ff
646+ else eB
705647 else throw("Match error")
706648 }
707649
708650
709-@Callable(dL)
710-func calculateAmountOutForSwapREADONLY (fg,fh,fi) = {
711- let fj = if ((fh == false))
651+@Callable(df)
652+func setManager (eC) = {
653+ let eD = eA(df)
654+ if ((eD == eD))
712655 then {
713- let fk = aH(this, af())
714- let fl = aH(this, ae())
715- $Tuple2(fk, fl)
716- }
717- else {
718- let fk = aH(this, ae())
719- let fl = aH(this, af())
720- $Tuple2(fk, fl)
721- }
722- let fk = fj._1
723- let fl = fj._2
724- let fm = bE(fl)
725- let fn = bE(fk)
726- let fo = fraction(fn, fg, (fm + fg))
727- let fp = (toBigInt(fm) * toBigInt(fn))
728- let fq = (((toBigInt(bE(fl)) + toBigInt(fg)) + toBigInt(fi)) * (toBigInt(bE(fk)) - toBigInt(fo)))
729- let fr = if ((fq >= fp))
730- then true
731- else throw("new K is fewer error")
732- if ((fr == fr))
733- then $Tuple2(nil, fo)
734- else throw("Strict value is not equal to itself.")
735- }
736-
737-
738-
739-@Callable(dL)
740-func calculateAmountOutForSwapAndSendTokens (fg,fh,fs,ft,fi) = {
741- let fu = {
742- let aR = invoke(aO, "getSwapContractREADONLY", nil, nil)
743- if ($isInstanceOf(aR, "String"))
744- then aR
745- else throw(($getType(aR) + " couldn't be cast to String"))
746- }
747- let eH = [if ((value(dL.payments[0]).amount >= fg))
748- then true
749- else aL("Wrong amount"), if ((dL.caller == addressFromStringValue(fu)))
750- then true
751- else aL("Permission denied")]
752- if ((eH == eH))
753- then {
754- let dM = value(dL.payments[0])
755- let fl = ba(dM.assetId)
756- let fk = if ((fh == false))
757- then aH(this, af())
758- else aH(this, ae())
759- let fm = (bE(fl) - value(dL.payments[0]).amount)
760- let fn = bE(fk)
761- let fo = fraction(fn, fg, (fm + fg))
762- let fp = (toBigInt(fm) * toBigInt(fn))
763- let fq = ((toBigInt(bE(fl)) + toBigInt(fi)) * (toBigInt(bE(fk)) - toBigInt(fo)))
764- let fr = if ((fq >= fp))
765- then true
766- else throw("new K is fewer error")
767- if ((fr == fr))
768- then {
769- let fv = if ((fo >= fs))
770- then true
771- else throw("Exchange result is fewer coins than expected")
772- if ((fv == fv))
773- then $Tuple2([ScriptTransfer(addressFromStringValue(ft), fo, aY(fk))], fo)
774- else throw("Strict value is not equal to itself.")
775- }
656+ let eE = fromBase58String(eC)
657+ if ((eE == eE))
658+ then [StringEntry(R(), eC)]
776659 else throw("Strict value is not equal to itself.")
777660 }
778661 else throw("Strict value is not equal to itself.")
779662 }
780663
781664
782665
783-@Callable(dL)
784-func setManager (fw) = {
785- let fx = fe(dL)
786- if ((fx == fx))
666+@Callable(df)
667+func confirmManager () = {
668+ let eF = ex()
669+ let eG = if (isDefined(eF))
670+ then true
671+ else throw("No pending manager")
672+ if ((eG == eG))
787673 then {
788- let fy = fromBase58String(fw)
789- if ((fy == fy))
790- then [StringEntry(V(), fw)]
674+ let eH = if ((df.callerPublicKey == value(eF)))
675+ then true
676+ else throw("You are not pending manager")
677+ if ((eH == eH))
678+ then [StringEntry(Q(), toBase58String(value(eF))), DeleteEntry(R())]
791679 else throw("Strict value is not equal to itself.")
792680 }
793681 else throw("Strict value is not equal to itself.")
794682 }
795683
796684
797685
798-@Callable(dL)
799-func confirmManager () = {
800- let fz = fb()
801- let fA = if (isDefined(fz))
802- then true
803- else throw("No pending manager")
804- if ((fA == fA))
805- then {
806- let fB = if ((dL.callerPublicKey == value(fz)))
807- then true
808- else throw("You are not pending manager")
809- if ((fB == fB))
810- then [StringEntry(U(), toBase58String(value(fz))), DeleteEntry(V())]
811- else throw("Strict value is not equal to itself.")
812- }
813- else throw("Strict value is not equal to itself.")
814- }
815-
816-
817-
818-@Callable(dL)
819-func put (cz,fC) = if ((0 > cz))
686+@Callable(df)
687+func put (ck,eI) = if ((0 > ck))
820688 then throw("Invalid slippageTolerance passed")
821689 else {
822- let dR = dO(dL, cz, true)
823- let db = dR._2
824- let cg = dR._7
825- let cx = dR._9
826- let dc = dR._10
827- let dd = dR._11
828- let fD = dR._12
829- let fE = dR._13
830- let dP = toBigInt(value(dL.payments[0]).amount)
831- let dQ = toBigInt(value(dL.payments[1]).amount)
832- let ds = dl(dP, dQ, toBigInt(0))
833- if ((ds == ds))
690+ let dl = di(df, ck, true)
691+ let cM = dl._2
692+ let bR = dl._7
693+ let ci = dl._9
694+ let cN = dl._10
695+ let cO = dl._11
696+ let eJ = dl._12
697+ let eK = dl._13
698+ let do = invoke(aA, "emit", [cM], nil)
699+ if ((do == do))
834700 then {
835- let dU = invoke(aO, "emit", [db], nil)
836- if ((dU == dU))
701+ let dp = {
702+ let dq = do
703+ if ($isInstanceOf(dq, "Address"))
704+ then {
705+ let dr = dq
706+ invoke(dr, "emit", [cM], nil)
707+ }
708+ else unit
709+ }
710+ if ((dp == dp))
837711 then {
838- let dV = {
839- let dW = dU
840- if ($isInstanceOf(dW, "Address"))
841- then {
842- let dX = dW
843- invoke(dX, "emit", [db], nil)
844- }
845- else unit
846- }
847- if ((dV == dV))
712+ let eL = if ((cN > 0))
713+ then invoke(ba, "put", nil, [AttachedPayment(eJ, cN)])
714+ else nil
715+ if ((eL == eL))
848716 then {
849- let fF = if ((dc > 0))
850- then invoke(bo, "put", nil, [AttachedPayment(fD, dc)])
717+ let eM = if ((cO > 0))
718+ then invoke(ba, "put", nil, [AttachedPayment(eK, cO)])
851719 else nil
852- if ((fF == fF))
720+ if ((eM == eM))
853721 then {
854- let fG = if ((dd > 0))
855- then invoke(bo, "put", nil, [AttachedPayment(fE, dd)])
856- else nil
857- if ((fG == fG))
722+ let eN = if (eI)
858723 then {
859- let fH = if (fC)
860- then {
861- let fI = invoke(bn, "stake", nil, [AttachedPayment(cg, db)])
862- if ((fI == fI))
863- then nil
864- else throw("Strict value is not equal to itself.")
865- }
866- else [ScriptTransfer(dL.caller, db, cg)]
867- let fJ = dt(0, 0, 0)
868- if ((fJ == fJ))
869- then {
870- let dk = fJ._2
871- let fK = fJ._1
872- let fL = dx(ds, dk)
873- if ((fL == fL))
874- then ((cx ++ fH) ++ fK)
875- else throw("Strict value is not equal to itself.")
876- }
724+ let eO = invoke(aZ, "stake", nil, [AttachedPayment(bR, cM)])
725+ if ((eO == eO))
726+ then nil
877727 else throw("Strict value is not equal to itself.")
878728 }
879- else throw("Strict value is not equal to itself.")
729+ else [ScriptTransfer(df.caller, cM, bR)]
730+ (ci ++ eN)
880731 }
881732 else throw("Strict value is not equal to itself.")
882733 }
883734 else throw("Strict value is not equal to itself.")
884735 }
885736 else throw("Strict value is not equal to itself.")
886737 }
887738 else throw("Strict value is not equal to itself.")
888739 }
889740
890741
891742
892-@Callable(dL)
893-func putForFree (fM) = if ((0 > fM))
743+@Callable(df)
744+func putForFree (eP) = if ((0 > eP))
894745 then throw("Invalid value passed")
895746 else {
896- let dR = dO(dL, fM, false)
897- let cx = dR._9
898- let dP = toBigInt(value(dL.payments[0]).amount)
899- let dQ = toBigInt(value(dL.payments[1]).amount)
900- let ds = dl(dP, dQ, toBigInt(0))
901- if ((ds == ds))
902- then {
903- let fN = dt(0, 0, 0)
904- let fK = fN._1
905- let dk = fN._2
906- let fL = dx(ds, dk)
907- if ((fL == fL))
908- then (cx ++ fK)
909- else throw("Strict value is not equal to itself.")
910- }
911- else throw("Strict value is not equal to itself.")
747+ let dl = di(df, eP, false)
748+ dl._9
912749 }
913750
914751
915752
916-@Callable(dL)
917-func putOneTkn (fO,fP) = {
918- let fQ = {
919- let aR = invoke(aO, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
920- if ($isInstanceOf(aR, "Boolean"))
921- then aR
922- else throw(($getType(aR) + " couldn't be cast to Boolean"))
753+@Callable(df)
754+func putOneTkn (eQ,eR) = {
755+ let eS = {
756+ let aD = invoke(aA, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
757+ if ($isInstanceOf(aD, "Boolean"))
758+ then aD
759+ else throw(($getType(aD) + " couldn't be cast to Boolean"))
923760 }
924- let fR = if (if (if (aT())
761+ let eT = if (if (if (aF())
925762 then true
926- else (bg == l))
763+ else (aS == l))
927764 then true
928- else (bg == n))
765+ else (aS == n))
929766 then true
930- else fQ
931- let eH = [if (if (!(fR))
767+ else eS
768+ let ee = [if (if (!(eT))
932769 then true
933- else fc(dL))
770+ else ey(df))
934771 then true
935- else aL("put operation is blocked by admin"), if ((size(dL.payments) == 1))
772+ else ay("put operation is blocked by admin"), if ((size(df.payments) == 1))
936773 then true
937- else aL("exactly 1 payment are expected")]
938- if ((eH == eH))
774+ else ay("exactly 1 payment are expected")]
775+ if ((ee == ee))
939776 then {
940- let fS = dL.payments[0]
941- let ec = fS.assetId
942- let eb = fS.amount
943- let ds = if ((ec == bi))
944- then dl(toBigInt(eb), toBigInt(0), toBigInt(0))
945- else if ((ec == bj))
946- then dl(toBigInt(0), toBigInt(eb), toBigInt(0))
947- else aL("payment asset is not supported")
948- if ((ds == ds))
777+ let eU = df.payments[0]
778+ let dx = eU.assetId
779+ let dw = eU.amount
780+ let X = df.caller
781+ let Y = df.transactionId
782+ let eV = dv(dw, dx, X, Y)
783+ if ((eV == eV))
949784 then {
950- let ab = dL.caller
951- let ac = dL.transactionId
952- let fT = ea(eb, ec, ab, ac)
953- if ((fT == fT))
785+ let eW = eV._4
786+ let du = eV._3
787+ let cP = eV._2
788+ let eX = eV._1
789+ let eY = if (if ((eQ > 0))
790+ then (eQ > eX)
791+ else false)
792+ then ay(makeString(["amount to receive is less than ", toString(eQ)], ""))
793+ else eX
794+ let do = dm(eY)
795+ if ((do == do))
954796 then {
955- let eg = fT._5
956- let fU = fT._4
957- let dZ = fT._3
958- let de = fT._2
959- let fV = fT._1
960- let fW = if (if ((fO > 0))
961- then (fO > fV)
797+ let eN = if (eR)
798+ then {
799+ let eZ = invoke(aZ, "stake", nil, [AttachedPayment(aT, eY)])
800+ if ((eZ == eZ))
801+ then nil
802+ else throw("Strict value is not equal to itself.")
803+ }
804+ else [ScriptTransfer(df.caller, eY, aT)]
805+ let fa = if ((du > 0))
806+ then [ScriptTransfer(aB, du, dx)]
807+ else nil
808+ $Tuple2(((cP ++ eN) ++ fa), eY)
809+ }
810+ else throw("Strict value is not equal to itself.")
811+ }
812+ else throw("Strict value is not equal to itself.")
813+ }
814+ else throw("Strict value is not equal to itself.")
815+ }
816+
817+
818+
819+@Callable(df)
820+func putOneTknREADONLY (dx,dw) = {
821+ let fb = dv(dw, aK(dx), unit, unit)
822+ let eX = fb._1
823+ let cP = fb._2
824+ let du = fb._3
825+ let eW = fb._4
826+ $Tuple2(nil, $Tuple3(eX, du, eW))
827+ }
828+
829+
830+
831+@Callable(df)
832+func getOneTkn (fc,eQ) = {
833+ let eS = {
834+ let aD = invoke(aA, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
835+ if ($isInstanceOf(aD, "Boolean"))
836+ then aD
837+ else throw(($getType(aD) + " couldn't be cast to Boolean"))
838+ }
839+ let fd = if (if (aF())
840+ then true
841+ else (aS == n))
842+ then true
843+ else eS
844+ let ee = [if (if (!(fd))
845+ then true
846+ else ey(df))
847+ then true
848+ else ay("get operation is blocked by admin"), if ((size(df.payments) == 1))
849+ then true
850+ else ay("exactly 1 payment are expected")]
851+ if ((ee == ee))
852+ then {
853+ let ed = aK(fc)
854+ let eU = df.payments[0]
855+ let dx = eU.assetId
856+ let dL = eU.amount
857+ let X = df.caller
858+ let Y = df.transactionId
859+ let fe = ec(ed, dL, dx, X, Y)
860+ if ((fe == fe))
861+ then {
862+ let eW = fe._4
863+ let du = fe._3
864+ let cP = fe._2
865+ let ff = fe._1
866+ let dn = if (if ((eQ > 0))
867+ then (eQ > ff)
868+ else false)
869+ then ay(makeString(["amount to receive is less than ", toString(eQ)], ""))
870+ else ff
871+ let fg = invoke(aA, "burn", [dL], [AttachedPayment(dx, dL)])
872+ if ((fg == fg))
873+ then {
874+ let fh = [ScriptTransfer(X, dn, ed)]
875+ let fa = if ((du > 0))
876+ then [ScriptTransfer(aB, du, ed)]
877+ else nil
878+ $Tuple2(((cP ++ fh) ++ fa), dn)
879+ }
880+ else throw("Strict value is not equal to itself.")
881+ }
882+ else throw("Strict value is not equal to itself.")
883+ }
884+ else throw("Strict value is not equal to itself.")
885+ }
886+
887+
888+
889+@Callable(df)
890+func getOneTknREADONLY (ed,dL) = {
891+ let fi = ec(aK(ed), dL, aT, unit, unit)
892+ let ff = fi._1
893+ let cP = fi._2
894+ let du = fi._3
895+ let eW = fi._4
896+ $Tuple2(nil, $Tuple3(ff, du, eW))
897+ }
898+
899+
900+
901+@Callable(df)
902+func unstakeAndGetOneTkn (fj,fc,eQ) = {
903+ let eS = {
904+ let aD = invoke(aA, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
905+ if ($isInstanceOf(aD, "Boolean"))
906+ then aD
907+ else throw(($getType(aD) + " couldn't be cast to Boolean"))
908+ }
909+ let fd = if (if (aF())
910+ then true
911+ else (aS == n))
912+ then true
913+ else eS
914+ let ee = [if (if (!(fd))
915+ then true
916+ else ey(df))
917+ then true
918+ else ay("get operation is blocked by admin"), if ((size(df.payments) == 0))
919+ then true
920+ else ay("no payments are expected")]
921+ if ((ee == ee))
922+ then {
923+ let ed = aK(fc)
924+ let X = df.caller
925+ let Y = df.transactionId
926+ let fk = invoke(aZ, "unstake", [toBase58String(aT), fj], nil)
927+ if ((fk == fk))
928+ then {
929+ let fl = ec(ed, fj, aT, X, Y)
930+ if ((fl == fl))
931+ then {
932+ let eW = fl._4
933+ let du = fl._3
934+ let cP = fl._2
935+ let ff = fl._1
936+ let dn = if (if ((eQ > 0))
937+ then (eQ > ff)
962938 else false)
963- then aL(makeString(["amount to receive is less than ", toString(fO)], ""))
964- else fV
965- let dU = dS(fW)
966- if ((dU == dU))
939+ then ay(makeString(["amount to receive is less than ", toString(eQ)], ""))
940+ else ff
941+ let fg = invoke(aA, "burn", [fj], [AttachedPayment(aT, fj)])
942+ if ((fg == fg))
967943 then {
968- let fH = if (fP)
969- then {
970- let fX = invoke(bn, "stake", nil, [AttachedPayment(bh, fW)])
971- if ((fX == fX))
972- then nil
973- else throw("Strict value is not equal to itself.")
974- }
975- else [ScriptTransfer(dL.caller, fW, bh)]
976- let fY = if ((dZ > 0))
977- then [ScriptTransfer(aP, dZ, ec)]
944+ let fh = [ScriptTransfer(df.caller, dn, ed)]
945+ let fa = if ((du > 0))
946+ then [ScriptTransfer(aB, du, ed)]
978947 else nil
979- let fZ = if ((this == aP))
980- then $Tuple2(0, 0)
981- else if (eg)
982- then $Tuple2(-(dZ), 0)
983- else $Tuple2(0, -(dZ))
984- let du = fZ._1
985- let dv = fZ._2
986- let ga = dt(du, dv, 0)
987- let fK = ga._1
988- let dk = ga._2
989- let dE = value(getString(aj))
990- let fL = dx(ds, dk)
991- if ((fL == fL))
992- then $Tuple2((((de ++ fH) ++ fY) ++ fK), fW)
993- else throw("Strict value is not equal to itself.")
948+ $Tuple2(((cP ++ fh) ++ fa), dn)
994949 }
995950 else throw("Strict value is not equal to itself.")
996951 }
997952 else throw("Strict value is not equal to itself.")
998953 }
999954 else throw("Strict value is not equal to itself.")
1000955 }
1001956 else throw("Strict value is not equal to itself.")
1002957 }
1003958
1004959
1005960
1006-@Callable(dL)
1007-func putOneTknREADONLY (ec,eb) = {
1008- let gb = ea(eb, aY(ec), unit, unit)
1009- let fV = gb._1
1010- let de = gb._2
1011- let dZ = gb._3
1012- let fU = gb._4
1013- let eg = gb._5
1014- $Tuple2(nil, $Tuple3(fV, dZ, fU))
961+@Callable(df)
962+func get () = {
963+ let cA = de(df)
964+ let fm = cA._1
965+ let ch = cA._2
966+ let dh = cA._3
967+ let bP = cA._4
968+ let ci = cA._5
969+ let fn = invoke(aA, "burn", [dh], [AttachedPayment(bP, dh)])
970+ if ((fn == fn))
971+ then ci
972+ else throw("Strict value is not equal to itself.")
1015973 }
1016974
1017975
1018976
1019-@Callable(dL)
1020-func getOneTkn (gc,fO) = {
1021- let fQ = {
1022- let aR = invoke(aO, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1023- if ($isInstanceOf(aR, "Boolean"))
1024- then aR
1025- else throw(($getType(aR) + " couldn't be cast to Boolean"))
1026- }
1027- let gd = if (if (aT())
1028- then true
1029- else (bg == n))
1030- then true
1031- else fQ
1032- let eH = [if (if (!(gd))
1033- then true
1034- else fc(dL))
1035- then true
1036- else aL("get operation is blocked by admin"), if ((size(dL.payments) == 1))
1037- then true
1038- else aL("exactly 1 payment are expected")]
1039- if ((eH == eH))
977+@Callable(df)
978+func getNoLess (fo,fp) = {
979+ let cA = de(df)
980+ let cg = cA._1
981+ let ch = cA._2
982+ let dh = cA._3
983+ let bP = cA._4
984+ let ci = cA._5
985+ if ((fo > cg))
986+ then throw(((("noLessThenAmtAsset failed: " + toString(cg)) + " < ") + toString(fo)))
987+ else if ((fp > ch))
988+ then throw(((("noLessThenPriceAsset failed: " + toString(ch)) + " < ") + toString(fp)))
989+ else {
990+ let fn = invoke(aA, "burn", [dh], [AttachedPayment(bP, dh)])
991+ if ((fn == fn))
992+ then ci
993+ else throw("Strict value is not equal to itself.")
994+ }
995+ }
996+
997+
998+
999+@Callable(df)
1000+func unstakeAndGet (dn) = {
1001+ let fq = if ((size(df.payments) != 0))
1002+ then throw("No payments are expected")
1003+ else true
1004+ if ((fq == fq))
10401005 then {
1041- let eG = aY(gc)
1042- let fS = dL.payments[0]
1043- let ec = fS.assetId
1044- let eo = fS.amount
1045- let ds = dl(toBigInt(0), toBigInt(0), toBigInt(0))
1046- if ((ds == ds))
1006+ let bE = aH()
1007+ let bR = fromBase58String(bE[q])
1008+ let fk = invoke(aZ, "unstake", [toBase58String(bR), dn], nil)
1009+ if ((fk == fk))
10471010 then {
1048- let ab = dL.caller
1049- let ac = dL.transactionId
1050- let ge = eF(eG, eo, ec, ab, ac)
1051- if ((ge == ge))
1011+ let cA = bN(toBase58String(df.transactionId), toBase58String(bR), dn, df.caller)
1012+ let bU = parseIntValue(cA._9)
1013+ let ci = cA._10
1014+ let fr = if (if (aF())
1015+ then true
1016+ else (bU == n))
1017+ then throw(("Get operation is blocked by admin. Status = " + toString(bU)))
1018+ else true
1019+ if ((fr == fr))
10521020 then {
1053- let eI = ge._5
1054- let fU = ge._4
1055- let dZ = ge._3
1056- let de = ge._2
1057- let gf = ge._1
1058- let dT = if (if ((fO > 0))
1059- then (fO > gf)
1060- else false)
1061- then aL(makeString(["amount to receive is less than ", toString(fO)], ""))
1062- else gf
1063- let gg = invoke(aO, "burn", [eo], [AttachedPayment(ec, eo)])
1064- if ((gg == gg))
1065- then {
1066- let gh = [ScriptTransfer(ab, dT, eG)]
1067- let fY = if ((dZ > 0))
1068- then [ScriptTransfer(aP, dZ, eG)]
1069- else nil
1070- let gi = {
1071- let gj = if ((this == aP))
1072- then 0
1073- else dZ
1074- if (eI)
1075- then $Tuple2(-((dT + gj)), 0)
1076- else $Tuple2(0, -((dT + gj)))
1077- }
1078- let du = gi._1
1079- let dv = gi._2
1080- let gk = dt(du, dv, 0)
1081- let fK = gk._1
1082- let dk = gk._2
1083- let fL = dx(ds, dk)
1084- if ((fL == fL))
1085- then $Tuple2((((de ++ gh) ++ fY) ++ fK), dT)
1086- else throw("Strict value is not equal to itself.")
1087- }
1021+ let fn = invoke(aA, "burn", [dn], [AttachedPayment(bR, dn)])
1022+ if ((fn == fn))
1023+ then ci
10881024 else throw("Strict value is not equal to itself.")
10891025 }
10901026 else throw("Strict value is not equal to itself.")
10911027 }
10921028 else throw("Strict value is not equal to itself.")
10931029 }
10941030 else throw("Strict value is not equal to itself.")
10951031 }
10961032
10971033
10981034
1099-@Callable(dL)
1100-func getOneTknREADONLY (eG,eo) = {
1101- let gl = eF(aY(eG), eo, bh, unit, unit)
1102- let gf = gl._1
1103- let de = gl._2
1104- let dZ = gl._3
1105- let fU = gl._4
1106- let eI = gl._5
1107- $Tuple2(nil, $Tuple3(gf, dZ, fU))
1108- }
1109-
1110-
1111-
1112-@Callable(dL)
1113-func unstakeAndGetOneTkn (gm,gc,fO) = {
1114- let fQ = {
1115- let aR = invoke(aO, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1116- if ($isInstanceOf(aR, "Boolean"))
1117- then aR
1118- else throw(($getType(aR) + " couldn't be cast to Boolean"))
1119- }
1120- let gd = if (if (aT())
1035+@Callable(df)
1036+func unstakeAndGetNoLess (fj,fs,fp) = {
1037+ let fd = if (aF())
11211038 then true
1122- else (bg == n))
1039+ else (aS == n)
1040+ let ee = [if (!(fd))
11231041 then true
1124- else fQ
1125- let eH = [if (if (!(gd))
1042+ else throw("get operation is blocked by admin"), if ((size(df.payments) == 0))
11261043 then true
1127- else fc(dL))
1128- then true
1129- else aL("get operation is blocked by admin"), if ((size(dL.payments) == 0))
1130- then true
1131- else aL("no payments are expected")]
1132- if ((eH == eH))
1044+ else throw("no payments are expected")]
1045+ if ((ee == ee))
11331046 then {
1134- let eG = aY(gc)
1135- let ab = dL.caller
1136- let ac = dL.transactionId
1137- let ds = dl(toBigInt(0), toBigInt(0), toBigInt(0))
1138- if ((ds == ds))
1047+ let fk = invoke(aZ, "unstake", [toBase58String(aT), fj], nil)
1048+ if ((fk == fk))
11391049 then {
1140- let gn = invoke(bn, "unstake", [toBase58String(bh), gm], nil)
1141- if ((gn == gn))
1050+ let cA = bN(toBase58String(df.transactionId), toBase58String(aT), fj, df.caller)
1051+ let cg = cA._1
1052+ let ch = cA._2
1053+ let ci = cA._10
1054+ let ft = [if ((cg >= fs))
1055+ then true
1056+ else throw(makeString(["amount asset amount to receive is less than ", toString(fs)], "")), if ((ch >= fp))
1057+ then true
1058+ else throw(makeString(["price asset amount to receive is less than ", toString(fp)], ""))]
1059+ if ((ft == ft))
11421060 then {
1143- let go = eF(eG, gm, bh, ab, ac)
1144- if ((go == go))
1145- then {
1146- let eI = go._5
1147- let fU = go._4
1148- let dZ = go._3
1149- let de = go._2
1150- let gf = go._1
1151- let dT = if (if ((fO > 0))
1152- then (fO > gf)
1153- else false)
1154- then aL(makeString(["amount to receive is less than ", toString(fO)], ""))
1155- else gf
1156- let gg = invoke(aO, "burn", [gm], [AttachedPayment(bh, gm)])
1157- if ((gg == gg))
1158- then {
1159- let gh = [ScriptTransfer(dL.caller, dT, eG)]
1160- let fY = if ((dZ > 0))
1161- then [ScriptTransfer(aP, dZ, eG)]
1162- else nil
1163- let gp = {
1164- let gj = if ((this == aP))
1165- then 0
1166- else dZ
1167- if (eI)
1168- then $Tuple2(-((dT + gj)), 0)
1169- else $Tuple2(0, -((dT + gj)))
1170- }
1171- let du = gp._1
1172- let dv = gp._2
1173- let gq = dt(du, dv, 0)
1174- let fK = gq._1
1175- let dk = gq._2
1176- let fL = dx(ds, dk)
1177- if ((fL == fL))
1178- then $Tuple2((((de ++ gh) ++ fY) ++ fK), dT)
1179- else throw("Strict value is not equal to itself.")
1180- }
1181- else throw("Strict value is not equal to itself.")
1182- }
1061+ let fn = invoke(aA, "burn", [fj], [AttachedPayment(aT, fj)])
1062+ if ((fn == fn))
1063+ then ci
11831064 else throw("Strict value is not equal to itself.")
11841065 }
11851066 else throw("Strict value is not equal to itself.")
11861067 }
11871068 else throw("Strict value is not equal to itself.")
11881069 }
11891070 else throw("Strict value is not equal to itself.")
11901071 }
11911072
11921073
11931074
1194-@Callable(dL)
1195-func get () = {
1196- let cP = dK(dL)
1197- let gr = cP._1
1198- let cw = cP._2
1199- let dN = cP._3
1200- let ce = cP._4
1201- let cx = cP._5
1202- let ds = dl(toBigInt(0), toBigInt(0), toBigInt(0))
1203- if ((ds == ds))
1204- then {
1205- let gs = invoke(aO, "burn", [dN], [AttachedPayment(ce, dN)])
1206- if ((gs == gs))
1207- then {
1208- let gt = dt(-(gr), -(cw), 0)
1209- let fK = gt._1
1210- let dk = gt._2
1211- let fL = dx(ds, dk)
1212- if ((fL == fL))
1213- then (cx ++ fK)
1214- else throw("Strict value is not equal to itself.")
1215- }
1216- else throw("Strict value is not equal to itself.")
1217- }
1218- else throw("Strict value is not equal to itself.")
1075+@Callable(df)
1076+func activate (fu,fv) = if ((toString(df.caller) != toString(aA)))
1077+ then throw("permissions denied")
1078+ else $Tuple2([StringEntry(aa(), fu), StringEntry(ab(), fv)], "success")
1079+
1080+
1081+
1082+@Callable(df)
1083+func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aH())
1084+
1085+
1086+
1087+@Callable(df)
1088+func getAccBalanceWrapperREADONLY (br) = $Tuple2(nil, bq(br))
1089+
1090+
1091+
1092+@Callable(df)
1093+func calcPricesWrapperREADONLY (by,bz,bD) = {
1094+ let bM = bC(by, bz, bD)
1095+ $Tuple2(nil, [toString(bM[0]), toString(bM[1]), toString(bM[2])])
12191096 }
12201097
12211098
12221099
1223-@Callable(dL)
1224-func getNoLess (gu,gv) = {
1225- let cP = dK(dL)
1226- let cv = cP._1
1227- let cw = cP._2
1228- let dN = cP._3
1229- let ce = cP._4
1230- let cx = cP._5
1231- if ((gu > cv))
1232- then throw(((("noLessThenAmtAsset failed: " + toString(cv)) + " < ") + toString(gu)))
1233- else if ((gv > cw))
1234- then throw(((("noLessThenPriceAsset failed: " + toString(cw)) + " < ") + toString(gv)))
1235- else {
1236- let ds = dl(toBigInt(0), toBigInt(0), toBigInt(0))
1237- if ((ds == ds))
1238- then {
1239- let gs = invoke(aO, "burn", [dN], [AttachedPayment(ce, dN)])
1240- if ((gs == gs))
1241- then {
1242- let gw = dt(-(cv), -(cw), 0)
1243- let fK = gw._1
1244- let dk = gw._2
1245- let fL = dx(ds, dk)
1246- if ((fL == fL))
1247- then (cx ++ fK)
1248- else throw("Strict value is not equal to itself.")
1249- }
1250- else throw("Strict value is not equal to itself.")
1251- }
1252- else throw("Strict value is not equal to itself.")
1253- }
1100+@Callable(df)
1101+func toX18WrapperREADONLY (E,F) = $Tuple2(nil, toString(D(E, F)))
1102+
1103+
1104+
1105+@Callable(df)
1106+func fromX18WrapperREADONLY (H,I) = $Tuple2(nil, G(parseBigIntValue(H), I))
1107+
1108+
1109+
1110+@Callable(df)
1111+func calcPriceBigIntWrapperREADONLY (bt,bu) = $Tuple2(nil, toString(bs(parseBigIntValue(bt), parseBigIntValue(bu))))
1112+
1113+
1114+
1115+@Callable(df)
1116+func estimatePutOperationWrapperREADONLY (bO,ck,cl,cm,cn,co,X,cp,cq) = $Tuple2(nil, cj(bO, ck, cl, cm, cn, co, X, cp, cq))
1117+
1118+
1119+
1120+@Callable(df)
1121+func estimateGetOperationWrapperREADONLY (bO,bP,bQ,X) = {
1122+ let cA = bN(bO, bP, bQ, addressFromStringValue(X))
1123+ $Tuple2(nil, $Tuple10(cA._1, cA._2, cA._3, cA._4, cA._5, cA._6, cA._7, toString(cA._8), cA._9, cA._10))
12541124 }
12551125
12561126
12571127
1258-@Callable(dL)
1259-func unstakeAndGet (dT) = {
1260- let gx = if ((size(dL.payments) != 0))
1261- then throw("No payments are expected")
1262- else true
1263- if ((gx == gx))
1264- then {
1265- let bT = aV()
1266- let cg = fromBase58String(bT[q])
1267- let ds = dl(toBigInt(0), toBigInt(0), toBigInt(0))
1268- if ((ds == ds))
1269- then {
1270- let gn = invoke(bn, "unstake", [toBase58String(cg), dT], nil)
1271- if ((gn == gn))
1272- then {
1273- let cP = cc(toBase58String(dL.transactionId), toBase58String(cg), dT, dL.caller)
1274- let cv = cP._1
1275- let cw = cP._2
1276- let cj = parseIntValue(cP._9)
1277- let cx = cP._10
1278- let gy = if (if (aT())
1279- then true
1280- else (cj == n))
1281- then throw(("Get operation is blocked by admin. Status = " + toString(cj)))
1282- else true
1283- if ((gy == gy))
1284- then {
1285- let gs = invoke(aO, "burn", [dT], [AttachedPayment(cg, dT)])
1286- if ((gs == gs))
1287- then {
1288- let gz = dt(-(cv), -(cw), 0)
1289- let fK = gz._1
1290- let dk = gz._2
1291- let fL = dx(ds, dk)
1292- if ((fL == fL))
1293- then (cx ++ fK)
1294- else throw("Strict value is not equal to itself.")
1295- }
1296- else throw("Strict value is not equal to itself.")
1297- }
1298- else throw("Strict value is not equal to itself.")
1299- }
1300- else throw("Strict value is not equal to itself.")
1301- }
1302- else throw("Strict value is not equal to itself.")
1303- }
1304- else throw("Strict value is not equal to itself.")
1128+@Callable(df)
1129+func statsREADONLY () = {
1130+ let bE = aH()
1131+ let bR = fromBase58String(bE[q])
1132+ let cS = bE[r]
1133+ let cT = bE[s]
1134+ let ct = bE[v]
1135+ let cu = bE[w]
1136+ let bF = parseIntValue(bE[t])
1137+ let bG = parseIntValue(bE[u])
1138+ let fw = valueOrErrorMessage(assetInfo(bR), (("Asset " + toBase58String(bR)) + " doesn't exist")).quantity
1139+ let cU = bq(cS)
1140+ let cV = bq(cT)
1141+ let fx = if ((fw == 0))
1142+ then [e, e, e]
1143+ else bC(cU, cV, fw)
1144+ let cb = 0
1145+ let fy = G(fx[1], b)
1146+ let fz = G(fx[2], b)
1147+ let fA = value(getInteger(aA, am(toString(this))))
1148+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(cU), toString(cV), toString(fw), toString(cb), toString(fy), toString(fz), toString(fA)], j))
13051149 }
13061150
13071151
13081152
1309-@Callable(dL)
1310-func unstakeAndGetNoLess (gm,gA,gv) = {
1311- let gd = if (aT())
1312- then true
1313- else (bg == n)
1314- let eH = [if (!(gd))
1315- then true
1316- else throw("get operation is blocked by admin"), if ((size(dL.payments) == 0))
1317- then true
1318- else throw("no payments are expected")]
1319- if ((eH == eH))
1320- then {
1321- let ds = dl(toBigInt(0), toBigInt(0), toBigInt(0))
1322- if ((ds == ds))
1323- then {
1324- let gn = invoke(bn, "unstake", [toBase58String(bh), gm], nil)
1325- if ((gn == gn))
1326- then {
1327- let cP = cc(toBase58String(dL.transactionId), toBase58String(bh), gm, dL.caller)
1328- let cv = cP._1
1329- let cw = cP._2
1330- let cx = cP._10
1331- let gB = [if ((cv >= gA))
1332- then true
1333- else throw(makeString(["amount asset amount to receive is less than ", toString(gA)], "")), if ((cw >= gv))
1334- then true
1335- else throw(makeString(["price asset amount to receive is less than ", toString(gv)], ""))]
1336- if ((gB == gB))
1337- then {
1338- let gs = invoke(aO, "burn", [gm], [AttachedPayment(bh, gm)])
1339- if ((gs == gs))
1340- then {
1341- let gC = dt(-(cv), -(cw), 0)
1342- let fK = gC._1
1343- let dk = gC._2
1344- let fL = dx(ds, dk)
1345- if ((fL == fL))
1346- then (cx ++ fK)
1347- else throw("Strict value is not equal to itself.")
1348- }
1349- else throw("Strict value is not equal to itself.")
1350- }
1351- else throw("Strict value is not equal to itself.")
1352- }
1353- else throw("Strict value is not equal to itself.")
1354- }
1355- else throw("Strict value is not equal to itself.")
1356- }
1357- else throw("Strict value is not equal to itself.")
1153+@Callable(df)
1154+func evaluatePutByAmountAssetREADONLY (cl) = {
1155+ let bE = aH()
1156+ let bR = fromBase58String(bE[q])
1157+ let cr = bE[r]
1158+ let bS = fromBase58String(cr)
1159+ let cs = bE[s]
1160+ let bT = fromBase58String(cs)
1161+ let bF = parseIntValue(bE[t])
1162+ let bG = parseIntValue(bE[u])
1163+ let bU = bE[p]
1164+ let fw = valueOrErrorMessage(assetInfo(bR), (("Asset " + toBase58String(bR)) + " doesn't exist")).quantity
1165+ let cU = bq(cr)
1166+ let cV = bq(cs)
1167+ let bA = D(cU, bF)
1168+ let bB = D(cV, bG)
1169+ let ca = if ((fw == 0))
1170+ then e
1171+ else bs(bB, bA)
1172+ let cx = D(cl, bF)
1173+ let cy = fraction(cx, ca, d)
1174+ let cn = G(cy, bG)
1175+ let dl = cj("", 500000, cl, bS, cn, bT, "", true, false)
1176+ let cI = dl._1
1177+ let fB = dl._3
1178+ let bW = dl._4
1179+ let bY = dl._5
1180+ let bV = dl._6
1181+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cI), toString(G(ca, b)), toString(bW), toString(bY), toString(bV), bU, toString(cl), toString(cn)], j))
13581182 }
13591183
13601184
13611185
1362-@Callable(dL)
1363-func activate (gD,gE) = if ((toString(dL.caller) != toString(aO)))
1364- then throw("permissions denied")
1365- else $Tuple2([StringEntry(ae(), gD), StringEntry(af(), gE)], "success")
1366-
1367-
1368-
1369-@Callable(dL)
1370-func refreshKLp () = {
1371- let gF = valueOrElse(getInteger(ak), 0)
1372- let gG = if (((height - gF) >= an))
1373- then unit
1374- else aL(makeString([toString(an), " blocks have not passed since the previous call"], ""))
1375- if ((gG == gG))
1376- then {
1377- let dE = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, aj), "0")), aN("invalid kLp"))
1378- let gH = dt(0, 0, 0)
1379- let gI = gH._1
1380- let dk = gH._2
1381- let dw = if ((dE != dk))
1382- then gI
1383- else aL("nothing to refresh")
1384- $Tuple2(dw, toString(dk))
1385- }
1386- else throw("Strict value is not equal to itself.")
1186+@Callable(df)
1187+func evaluatePutByPriceAssetREADONLY (cn) = {
1188+ let bE = aH()
1189+ let bR = fromBase58String(bE[q])
1190+ let cr = bE[r]
1191+ let bS = fromBase58String(cr)
1192+ let cs = bE[s]
1193+ let bT = fromBase58String(cs)
1194+ let bF = parseIntValue(bE[t])
1195+ let bG = parseIntValue(bE[u])
1196+ let bU = bE[p]
1197+ let fw = valueOrErrorMessage(assetInfo(bR), (("Asset " + toBase58String(bR)) + " doesn't exist")).quantity
1198+ let fC = bq(cr)
1199+ let fD = bq(cs)
1200+ let fE = D(fC, bF)
1201+ let fF = D(fD, bG)
1202+ let ca = if ((fw == 0))
1203+ then e
1204+ else bs(fF, fE)
1205+ let cy = D(cn, bG)
1206+ let cx = fraction(cy, d, ca)
1207+ let cl = G(cx, bF)
1208+ let dl = cj("", 500000, cl, bS, cn, bT, "", true, false)
1209+ let cI = dl._1
1210+ let fB = dl._3
1211+ let bW = dl._4
1212+ let bY = dl._5
1213+ let bV = dl._6
1214+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cI), toString(G(ca, b)), toString(bW), toString(bY), toString(bV), bU, toString(cl), toString(cn)], j))
13871215 }
13881216
13891217
13901218
1391-@Callable(dL)
1392-func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aV())
1393-
1394-
1395-
1396-@Callable(dL)
1397-func getAccBalanceWrapperREADONLY (bF) = $Tuple2(nil, bE(bF))
1398-
1399-
1400-
1401-@Callable(dL)
1402-func calcPricesWrapperREADONLY (bN,bO,bS) = {
1403- let cb = bR(bN, bO, bS)
1404- $Tuple2(nil, [toString(cb[0]), toString(cb[1]), toString(cb[2])])
1219+@Callable(df)
1220+func evaluateGetREADONLY (fG,fH) = {
1221+ let cA = bN("", fG, fH, this)
1222+ let cg = cA._1
1223+ let ch = cA._2
1224+ let bW = cA._5
1225+ let bY = cA._6
1226+ let bV = cA._7
1227+ let cb = cA._8
1228+ let bU = parseIntValue(cA._9)
1229+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(cg), toString(ch), toString(bW), toString(bY), toString(bV), toString(cb), toString(bU)], j))
14051230 }
14061231
14071232
1408-
1409-@Callable(dL)
1410-func toX18WrapperREADONLY (E,F) = $Tuple2(nil, toString(D(E, F)))
1411-
1412-
1413-
1414-@Callable(dL)
1415-func fromX18WrapperREADONLY (I,J) = $Tuple2(nil, H(parseBigIntValue(I), J))
1416-
1417-
1418-
1419-@Callable(dL)
1420-func calcPriceBigIntWrapperREADONLY (bH,bI) = $Tuple2(nil, toString(bG(parseBigIntValue(bH), parseBigIntValue(bI))))
1421-
1422-
1423-
1424-@Callable(dL)
1425-func estimatePutOperationWrapperREADONLY (cd,cz,cA,cB,cC,cD,ab,cE,cF) = $Tuple2(nil, cy(cd, cz, cA, cB, cC, cD, ab, cE, cF))
1426-
1427-
1428-
1429-@Callable(dL)
1430-func estimateGetOperationWrapperREADONLY (cd,ce,cf,ab) = {
1431- let cP = cc(cd, ce, cf, addressFromStringValue(ab))
1432- $Tuple2(nil, $Tuple10(cP._1, cP._2, cP._3, cP._4, cP._5, cP._6, cP._7, toString(cP._8), cP._9, cP._10))
1433- }
1434-
1435-
1436-
1437-@Callable(dL)
1438-func statsREADONLY () = {
1439- let bT = aV()
1440- let cg = fromBase58String(bT[q])
1441- let gJ = bT[r]
1442- let gK = bT[s]
1443- let cI = bT[v]
1444- let cJ = bT[w]
1445- let bU = parseIntValue(bT[t])
1446- let bV = parseIntValue(bT[u])
1447- let gL = valueOrErrorMessage(assetInfo(cg), (("Asset " + toBase58String(cg)) + " doesn't exist")).quantity
1448- let gM = bE(gJ)
1449- let gN = bE(gK)
1450- let gO = if ((gL == 0))
1451- then [e, e, e]
1452- else bR(gM, gN, gL)
1453- let cq = 0
1454- let gP = H(gO[1], b)
1455- let gQ = H(gO[2], b)
1456- let gR = value(getInteger(aO, ay(toString(this))))
1457- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(gM), toString(gN), toString(gL), toString(cq), toString(gP), toString(gQ), toString(gR)], j))
1458- }
1459-
1460-
1461-
1462-@Callable(dL)
1463-func evaluatePutByAmountAssetREADONLY (cA) = {
1464- let bT = aV()
1465- let cg = fromBase58String(bT[q])
1466- let cG = bT[r]
1467- let ch = fromBase58String(cG)
1468- let cH = bT[s]
1469- let ci = fromBase58String(cH)
1470- let bU = parseIntValue(bT[t])
1471- let bV = parseIntValue(bT[u])
1472- let cj = bT[p]
1473- let gL = valueOrErrorMessage(assetInfo(cg), (("Asset " + toBase58String(cg)) + " doesn't exist")).quantity
1474- let gM = bE(cG)
1475- let gN = bE(cH)
1476- let bP = D(gM, bU)
1477- let bQ = D(gN, bV)
1478- let cp = if ((gL == 0))
1479- then e
1480- else bG(bQ, bP)
1481- let cM = D(cA, bU)
1482- let cN = fraction(cM, cp, d)
1483- let cC = H(cN, bV)
1484- let dR = cy("", 500000, cA, ch, cC, ci, "", true, false)
1485- let cX = dR._1
1486- let gS = dR._3
1487- let cl = dR._4
1488- let cn = dR._5
1489- let ck = dR._6
1490- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cX), toString(H(cp, b)), toString(cl), toString(cn), toString(ck), cj, toString(cA), toString(cC)], j))
1491- }
1492-
1493-
1494-
1495-@Callable(dL)
1496-func evaluatePutByPriceAssetREADONLY (cC) = {
1497- let bT = aV()
1498- let cg = fromBase58String(bT[q])
1499- let cG = bT[r]
1500- let ch = fromBase58String(cG)
1501- let cH = bT[s]
1502- let ci = fromBase58String(cH)
1503- let bU = parseIntValue(bT[t])
1504- let bV = parseIntValue(bT[u])
1505- let cj = bT[p]
1506- let gL = valueOrErrorMessage(assetInfo(cg), (("Asset " + toBase58String(cg)) + " doesn't exist")).quantity
1507- let gT = bE(cG)
1508- let gU = bE(cH)
1509- let gV = D(gT, bU)
1510- let gW = D(gU, bV)
1511- let cp = if ((gL == 0))
1512- then e
1513- else bG(gW, gV)
1514- let cN = D(cC, bV)
1515- let cM = fraction(cN, d, cp)
1516- let cA = H(cM, bU)
1517- let dR = cy("", 500000, cA, ch, cC, ci, "", true, false)
1518- let cX = dR._1
1519- let gS = dR._3
1520- let cl = dR._4
1521- let cn = dR._5
1522- let ck = dR._6
1523- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cX), toString(H(cp, b)), toString(cl), toString(cn), toString(ck), cj, toString(cA), toString(cC)], j))
1524- }
1525-
1526-
1527-
1528-@Callable(dL)
1529-func evaluateGetREADONLY (gX,gY) = {
1530- let cP = cc("", gX, gY, this)
1531- let cv = cP._1
1532- let cw = cP._2
1533- let cl = cP._5
1534- let cn = cP._6
1535- let ck = cP._7
1536- let cq = cP._8
1537- let cj = parseIntValue(cP._9)
1538- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(cv), toString(cw), toString(cl), toString(cn), toString(ck), toString(cq), toString(cj)], j))
1539- }
1540-
1541-
1542-@Verifier(gZ)
1543-func ha () = {
1544- let hb = {
1545- let dW = eZ()
1546- if ($isInstanceOf(dW, "ByteVector"))
1233+@Verifier(fI)
1234+func fJ () = {
1235+ let fK = {
1236+ let dq = ev()
1237+ if ($isInstanceOf(dq, "ByteVector"))
15471238 then {
1548- let fd = dW
1549- fd
1239+ let ez = dq
1240+ ez
15501241 }
1551- else if ($isInstanceOf(dW, "Unit"))
1552- then gZ.senderPublicKey
1242+ else if ($isInstanceOf(dq, "Unit"))
1243+ then fI.senderPublicKey
15531244 else throw("Match error")
15541245 }
1555- let dW = gZ
1556- if ($isInstanceOf(dW, "Order"))
1246+ let dq = fI
1247+ if ($isInstanceOf(dq, "Order"))
15571248 then {
1558- let dA = dW
1559- let hc = aU()
1560- let hd = dz(dA)
1561- let aD = hd._1
1562- let aE = hd._2
1563- let aF = sigVerify(dA.bodyBytes, dA.proofs[0], dA.senderPublicKey)
1564- let aG = sigVerify(dA.bodyBytes, dA.proofs[1], hc)
1565- if (if (if (aD)
1566- then aF
1249+ let cR = dq
1250+ let fL = aG()
1251+ let ar = cQ(cR)
1252+ let as = sigVerify(cR.bodyBytes, cR.proofs[0], cR.senderPublicKey)
1253+ let at = sigVerify(cR.bodyBytes, cR.proofs[1], fL)
1254+ if (if (if (ar)
1255+ then as
15671256 else false)
1568- then aG
1257+ then at
15691258 else false)
15701259 then true
1571- else aC(aD, aE, aF, aG)
1260+ else aq(ar, as, at)
15721261 }
1573- else if ($isInstanceOf(dW, "SetScriptTransaction"))
1262+ else if ($isInstanceOf(dq, "SetScriptTransaction"))
15741263 then {
1575- let fa = dW
1576- if (sigVerify(gZ.bodyBytes, gZ.proofs[0], hb))
1264+ let ew = dq
1265+ let fM = blake2b256(value(ew.script))
1266+ let fN = fromBase64String(value(getString(aA, ao())))
1267+ let fO = scriptHash(this)
1268+ if (if ((fN == fM))
1269+ then (fO != fM)
1270+ else false)
15771271 then true
1578- else {
1579- let he = blake2b256(value(fa.script))
1580- let hf = fromBase64String(value(getString(aO, aA())))
1581- let hg = scriptHash(this)
1582- if ((hf == he))
1583- then (hg != he)
1584- else false
1585- }
1272+ else sigVerify(fI.bodyBytes, fI.proofs[0], fK)
15861273 }
1587- else sigVerify(gZ.bodyBytes, gZ.proofs[0], hb)
1274+ else sigVerify(fI.bodyBytes, fI.proofs[0], fK)
15881275 }
15891276

github/deemru/w8io/873ac7e 
430.18 ms