tx · HMhuth8E4erWybLPu7ULFa7bpB7QgAw6YLn3amCMAga4 3N9Zi6AcWcGbM23jQJ4fnzFsoHoTsxYDznr: -0.02700000 Waves 2024.04.17 11:31 [3066519] smart account 3N9Zi6AcWcGbM23jQJ4fnzFsoHoTsxYDznr > SELF 0.00000000 Waves
{ "type": 13, "id": "HMhuth8E4erWybLPu7ULFa7bpB7QgAw6YLn3amCMAga4", "fee": 2700000, "feeAssetId": null, "timestamp": 1713342701286, "version": 2, "chainId": 84, "sender": "3N9Zi6AcWcGbM23jQJ4fnzFsoHoTsxYDznr", "senderPublicKey": "GFbasS3jufhZkK4xR7tdTjjnP8K33KvJFEDHRtxXDkaJ", "proofs": [ "5Lfqso3XowxmzVNVoER4pesJLCR72BFmFLDaqcGVLPpeFnbEaHxN9XtqfybZf14R6cbzs7wBGE5641FUx29zp9wA" ], "script": "base64:BgKpGggCEgQKAggBEgcKBQgICAgBEgQKAggIEgUKAwgIARIECgIICBIDCgEBEgMKAQESAwoBCBIECgIICBIECgIIBBIAEgMKAQESABIECgIICBIECgIICBIECgIICBIAEgQKAggIEgQKAggIIglzZXBhcmF0b3IiDnBvb2xXZWlnaHRNdWx0Ig9tYXhEZXB0aERlZmF1bHQiGWZpbmFsaXphdGlvblN0YWdlQmFsYW5jZXMiFmZpbmFsaXphdGlvblN0YWdlVG90YWwiF2ZpbmFsaXphdGlvblN0YWdlU2hhcmVzIg5rZXlFcG9jaExlbmd0aCIRa2V5RXBvY2hMZW5ndGhOZXciFWtleUVwb2NoTGVuZ3RoQnlFcG9jaCIFZXBvY2giD2tleUN1cnJlbnRFcG9jaCILa2V5TWF4RGVwdGgiEGtleVJlc3VtcHRpb25GZWUiImtleVZvdGluZ0VtaXNzaW9uQ2FuZGlkYXRlQ29udHJhY3QiHWtleVZvdGluZ0VtaXNzaW9uUmF0ZUNvbnRyYWN0IhJrZXlGYWN0b3J5Q29udHJhY3QiE2tleUJvb3N0aW5nQ29udHJhY3QiEmtleVN0YWtpbmdDb250cmFjdCIWa2V5QXNzZXRzU3RvcmVDb250cmFjdCIUa2V5RmluYWxpemF0aW9uU3RhZ2UiC2tleU5leHRQb29sIgtrZXlOZXh0VXNlciIOa2V5U3RhcnRIZWlnaHQiEWtleUN1cnJlbnRFcG9jaFVpIhBrZXlTdGFydEhlaWdodFVpIh1rZXlGaW5hbGl6YXRpb25TaG91bGRCZUZvcmNlZCIVa2V5U3RhcnRIZWlnaHRCeUVwb2NoIgxrZXlGaW5hbGl6ZWQiCWtleUluTGlzdCIEcG9vbCILJHQwMTk3MjIwMTIiDWFtb3VudEFzc2V0SWQiDHByaWNlQXNzZXRJZCIXa2V5SW5zdWZmaWNpZW50QmFsYW5jZXMiCyR0MDIxNjEyMjAxIgdrZXlVc2VkIgdhZGRyZXNzIgdrZXlWb3RlIgskdDAyNTA5MjU0OSIPa2V5Vm90aW5nUmVzdWx0IgskdDAyNzMxMjc3MSIVa2V5Vm90aW5nUmVzdWx0U3Rha2VkIgxscEFzc2V0SWRTdHIiDGtleVBvb2xTaGFyZSILJHQwMzA5MjMxMzIiDWtleVRvdGFsVm90ZXMiD2tleVN0YWtlZEJ5VXNlciIOdXNlckFkZHJlc3NTdHIiB3dyYXBFcnIiA21zZyIIdGhyb3dFcnIiDmdldFZhbHVlT3JGYWlsIgNrZXkiBHR5cGUiBWVycm9yIgckbWF0Y2gwIgNzdHIiA2ludCIMZ2V0U3RyT3JGYWlsIgFAIgxnZXRJbnRPckZhaWwiDHBvb2xUb1N0cmluZyIMc3RyaW5nVG9Qb29sIgVwYXJ0cyIPZmFjdG9yeUNvbnRyYWN0IhpJZHhGYWN0b3J5Q2ZnR3d4UmV3YXJkRGFwcCINa2V5RmFjdG9yeUNmZyIUcmVhZEZhY3RvcnlDZmdPckZhaWwiB2ZhY3RvcnkiGWdldEd3eFJld2FyZEFkZHJlc3NPckZhaWwiCmZhY3RvcnlDZmciC2dldFBvb2xJbmZvIg5wb29sSW5mb09wdGlvbiIWZ2V0THBBc3NldEJ5UG9vbEFzc2V0cyIfa2V5TWFwcGluZ3NCYXNlQXNzZXQyaW50ZXJuYWxJZCIMYmFzZUFzc2V0U3RyIilrZXlNYXBwaW5nUG9vbEFzc2V0c1RvUG9vbENvbnRyYWN0QWRkcmVzcyIYaW50ZXJuYWxBbW91bnRBc3NldElkU3RyIhdpbnRlcm5hbFByaWNlQXNzZXRJZFN0ciIfa2V5TWFwcGluZ1Bvb2xDb250cmFjdFRvTFBBc3NldCITcG9vbENvbnRyYWN0QWRkcmVzcyIVYW1vdW50QXNzZXRJbnRlcm5hbElkIhRwcmljZUFzc2V0SW50ZXJuYWxJZCIJbHBBc3NldElkIhhjaGVja1d4RW1pc3Npb25Qb29sTGFiZWwiCyR0MDYyNTg2Mjk4IhBnd3hSZXdhcmREZXBvc2l0IhJnd3hSZXdhcmRzQ29udHJhY3QiDXBvb2xzTGlzdE5hbWUiEGdldFZvdGVzTGlzdE5hbWUiCyR0MDY3MTU2NzU1IgtrZXlMaXN0SGVhZCIIbGlzdE5hbWUiBG1ldGEiC2tleUxpc3RTaXplIgtrZXlMaXN0UHJldiICaWQiC2tleUxpc3ROZXh0Igxjb250YWluc05vZGUiCmhlYWRPclVuaXQiCnByZXZPclVuaXQiCm5leHRPclVuaXQiEWluc2VydE5vZGVBY3Rpb25zIghsaXN0U2l6ZSIJY2hlY2tOb2RlIhFkZWxldGVOb2RlQWN0aW9ucyIWa2V5TWFuYWdlclZhdWx0QWRkcmVzcyITa2V5TWFuYWdlclB1YmxpY0tleSIcZ2V0TWFuYWdlclZhdWx0QWRkcmVzc09yVGhpcyIBcyIWbWFuYWdlclB1YmxpY0tleU9yVW5pdCITbWFuYWdlclZhdWx0QWRkcmVzcyIJaXNNYW5hZ2VyIgFpIgJwayILbXVzdE1hbmFnZXIiCG11c3RUaGlzIgt1c2VyQWRkcmVzcyIMdGFyZ2V0SGVpZ2h0Ihdib29zdGluZ0NvbnRyYWN0QWRkcmVzcyIfdm90aW5nRW1pc3Npb25DYW5kaWRhdGVDb250cmFjdCIQYm9vc3RpbmdDb250cmFjdCIPc3Rha2luZ0NvbnRyYWN0IgtlcG9jaExlbmd0aCIGY2hlY2tzIg1pbkxpc3RBY3Rpb25zIhhjdXJyZW50RXBvY2hJc05vdERlZmluZWQiEnN0YXJ0SGVpZ2h0QWN0aW9ucyIGYW1vdW50IgtzdGFydEhlaWdodCIJZW5kSGVpZ2h0IhdmaW5hbGl6YXRpb25TdGFnZU9yVW5pdCIEdXNlZCIEdm90ZSIKcG9vbFJlc3VsdCIKdG90YWxWb3RlcyITZ3d4QW1vdW50QXRFbmRUb3RhbCIJYXZhaWxhYmxlIgduZXdWb3RlIgp3eEVtaXNzaW9uIg12b3Rlc0xpc3ROYW1lIhB2b3Rlc0xpc3RBY3Rpb25zIg5uZXdFcG9jaExlbmd0aCILbmV3TWF4RGVwdGgiB3Bvb2xTdHIiC2NoZWNrQ2FsbGVyIg1lcG9jaFByZXZpb3VzIg0kdDAxNjk3OTE3MDE5IhJiYWxhbmNlSXNPa0N1cnJlbnQiE2JhbGFuY2VJc09rUHJldmlvdXMiB2FjdGlvbnMiE2RlbGV0ZVd4RW1pc3Npb25JbnYiD21vZGlmeVdlaWdodEludiILcG9vbEFkZHJlc3MiCW5ld1N0YXR1cyIQc2V0UG9vbFN0YXR1c0ludiILbGlzdEFjdGlvbnMiE3N0YXJ0SGVpZ2h0UHJldmlvdXMiE2Vwb2NoTGVuZ3RoUHJldmlvdXMiEWVuZEhlaWdodFByZXZpb3VzIhBjaGVja1RhcmdldEVwb2NoIg0kdDAxOTM3MjE5NDEyIhtnd3hBbW91bnRBdEVuZFRvdGFsUHJldmlvdXMiDHZvdGluZ1Jlc3VsdCIMdm90ZVByZXZpb3VzIhp2b3RpbmdSZXN1bHRTdGFrZWRQcmV2aW91cyIMc3Rha2VkQnlVc2VyIhl2b3RpbmdSZXN1bHRTdGFrZWRBY3Rpb25zIgVmb3JjZSILdGFyZ2V0RXBvY2giDGN1cnJlbnRFcG9jaCINJHQwMjE3NzUyMTgxNSIBciITYXNzZXRzU3RvcmVDb250cmFjdCIFc2hhcmUiDXByZXZpb3VzRXBvY2giCG5ld0Vwb2NoIhRuZXdFcG9jaExlbmd0aE9wdGlvbiIVbmV3RXBvY2hMZW5ndGhBY3Rpb25zIgpwb29sT3JVbml0IgckbWF0Y2gxIgtuZXh0UG9vbFN0ciIObmV4dFBvb2xPclVuaXQiCnVzZXJPclVuaXQiDHBvb2xzSGVhZFN0ciIObmV4dFVzZXJPclVuaXQiBHVzZXIiBG5leHQiDnByb2Nlc3NWb3RlSW52IgckbWF0Y2gyIghuZXh0VXNlciITZ3d4UmV3YXJkRGVwb3NpdEludiIHY291bnRlciIadm90aW5nRW1pc3Npb25SYXRlQ29udHJhY3QiBnJlc3VsdCIDaW52IghtYXhEZXB0aCIWZmluYWxpemF0aW9uSW5Qcm9ncmVzcyILYmFsYW5jZUlzT2siB3BheW1lbnQiD2tCb29zdGluZ0NvbmZpZyINaWR4Q2ZnQXNzZXRJZCIJd3hBc3NldElkIhNhbW91bnRBc3NldFZlcmlmaWVkIhJwcmljZUFzc2V0VmVyaWZpZWQiDXJlc3VtcHRpb25GZWUiEHNldFd4RW1pc3Npb25JbnYiAnR4IgZ2ZXJpZnkiD3RhcmdldFB1YmxpY0tleUQAAWECAl9fAAFiAIDC1y8AAWMACgABZAAAAAFlAAEAAWYAAgABZwkAuQkCCQDMCAICAiVzCQDMCAICC2Vwb2NoTGVuZ3RoBQNuaWwFAWEAAWgJALkJAgkAzAgCAgQlcyVzCQDMCAICEGVwb2NoTGVuZ3RoX19uZXcFA25pbAUBYQEBaQEBagkAuQkCCQDMCAICBCVzJWQJAMwIAgILZXBvY2hMZW5ndGgJAMwIAgkApAMBBQFqBQNuaWwFAWEAAWsJALkJAgkAzAgCAgIlcwkAzAgCAgxjdXJyZW50RXBvY2gFA25pbAUBYQABbAkAuQkCCQDMCAICAiVzCQDMCAICCG1heERlcHRoBQNuaWwFAWEAAW0JALkJAgkAzAgCAgIlcwkAzAgCAg1yZXN1bXB0aW9uRmVlBQNuaWwFAWEAAW4JALkJAgkAzAgCAgIlcwkAzAgCAh92b3RpbmdFbWlzc2lvbkNhbmRpZGF0ZUNvbnRyYWN0BQNuaWwFAWEAAW8JALkJAgkAzAgCAgIlcwkAzAgCAhp2b3RpbmdFbWlzc2lvblJhdGVDb250cmFjdAUDbmlsBQFhAAFwCQC5CQIJAMwIAgICJXMJAMwIAgIPZmFjdG9yeUNvbnRyYWN0BQNuaWwFAWEAAXEJALkJAgkAzAgCAgIlcwkAzAgCAhBib29zdGluZ0NvbnRyYWN0BQNuaWwFAWEAAXIJALkJAgkAzAgCAgIlcwkAzAgCAg9zdGFraW5nQ29udHJhY3QFA25pbAUBYQABcwkAuQkCCQDMCAICAiVzCQDMCAICE2Fzc2V0c1N0b3JlQ29udHJhY3QFA25pbAUBYQABdAkAuQkCCQDMCAICAiVzCQDMCAICEWZpbmFsaXphdGlvblN0YWdlBQNuaWwFAWEAAXUJALkJAgkAzAgCAgIlcwkAzAgCAghuZXh0UG9vbAUDbmlsBQFhAAF2CQC5CQIJAMwIAgICJXMJAMwIAgIIbmV4dFVzZXIFA25pbAUBYQABdwkAuQkCCQDMCAICAiVzCQDMCAICC3N0YXJ0SGVpZ2h0BQNuaWwFAWEAAXgJALkJAgkAzAgCAgIlcwkAzAgCAg5jdXJyZW50RXBvY2hVaQUDbmlsBQFhAAF5CQC5CQIJAMwIAgICJXMJAMwIAgINc3RhcnRIZWlnaHRVaQUDbmlsBQFhAAF6CQC5CQIJAMwIAgICJXMJAMwIAgIFZm9yY2UFA25pbAUBYQEBQQEBagkAuQkCCQDMCAICBCVzJWQJAMwIAgILc3RhcnRIZWlnaHQJAMwIAgkApAMBBQFqBQNuaWwFAWEBAUIBAWoJALkJAgkAzAgCAgQlcyVkCQDMCAICCWZpbmFsaXplZAkAzAgCCQCkAwEFAWoFA25pbAUBYQEBQwEBRAQBRQUBRAQBRggFAUUCXzEEAUcIBQFFAl8yCQC5CQIJAMwIAgIGJXMlcyVzCQDMCAICBmluTGlzdAkAzAgCBQFGCQDMCAIFAUcFA25pbAUBYQEBSAIBRAFqBAFJBQFEBAFGCAUBSQJfMQQBRwgFAUkCXzIJALkJAgkAzAgCAgglcyVzJXMlZAkAzAgCAhRpbnN1ZmZpY2llbnRCYWxhbmNlcwkAzAgCBQFGCQDMCAIFAUcJAMwIAgkApAMBBQFqBQNuaWwFAWEBAUoCAUsBagkAuQkCCQDMCAICBiVzJXMlZAkAzAgCAgR1c2VkCQDMCAIJAKUIAQUBSwkAzAgCCQCkAwEFAWoFA25pbAUBYQEBTAMBRAFLAWoEAU0FAUQEAUYIBQFNAl8xBAFHCAUBTQJfMgkAuQkCCQDMCAICCiVzJXMlcyVzJWQJAMwIAgIEdm90ZQkAzAgCBQFGCQDMCAIFAUcJAMwIAgkApQgBBQFLCQDMCAIJAKQDAQUBagUDbmlsBQFhAQFOAgFEAWoEAU8FAUQEAUYIBQFPAl8xBAFHCAUBTwJfMgkAuQkCCQDMCAICCCVzJXMlcyVkCQDMCAICDHZvdGluZ1Jlc3VsdAkAzAgCBQFGCQDMCAIFAUcJAMwIAgkApAMBBQFqBQNuaWwFAWEBAVACAVEBagkAuQkCCQDMCAICBiVzJXMlZAkAzAgCAhJ2b3RpbmdSZXN1bHRTdGFrZWQJAMwIAgUBUQkAzAgCCQCkAwEFAWoFA25pbAUBYQEBUgIBRAFqBAFTBQFEBAFGCAUBUwJfMQQBRwgFAVMCXzIJALkJAgkAzAgCAgglcyVzJXMlZAkAzAgCAglwb29sU2hhcmUJAMwIAgUBRgkAzAgCBQFHCQDMCAIJAKQDAQUBagUDbmlsBQFhAQFUAQFqCQC5CQIJAMwIAgIEJXMlZAkAzAgCAgp0b3RhbFZvdGVzCQDMCAIJAKQDAQUBagUDbmlsBQFhAQFVAgFRAVYJALkJAgkAzAgCAgYlcyVzJXMJAMwIAgIGc3Rha2VkCQDMCAIFAVYJAMwIAgUBUQUDbmlsBQFhAQFXAQFYCQC5CQIJAMwIAgIVdm90aW5nX2VtaXNzaW9uLnJpZGU6CQDMCAIFAVgFA25pbAIBIAEBWQEBWAkAAgEJAQFXAQUBWAEBWgMBSwJhYQJhYgQCYWMJAQFXAQkAuQkCCQDMCAICCm1hbmRhdG9yeSAJAMwIAgkApQgBBQFLCQDMCAICAS4JAMwIAgUCYWEJAMwIAgIPIGlzIG5vdCBkZWZpbmVkBQNuaWwCAAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCBAJhZAUCYWIDCQABAgUCYWQCBlN0cmluZwQCYWUFAmFkCQCdCAIFAUsFAmFhAwkAAQIFAmFkAgNJbnQEAmFmBQJhZAkAmggCBQFLBQJhYQkBAVkBAhJpbnZhbGlkIGVudHJ5IHR5cGUFAmFjAQJhZwIBSwJhYQoAAmFoCQEBWgMFAUsFAmFhAgADCQABAgUCYWgCBlN0cmluZwUCYWgJAAIBCQCsAgIJAAMBBQJhaAIbIGNvdWxkbid0IGJlIGNhc3QgdG8gU3RyaW5nAQJhaQIBSwJhYQoAAmFoCQEBWgMFAUsFAmFhAAADCQABAgUCYWgCA0ludAUCYWgJAAIBCQCsAgIJAAMBBQJhaAIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50AQJhagEBRAkArAICCQCsAgIIBQFEAl8xBQFhCAUBRAJfMgECYWsBAmFlBAJhbAkAtQkCBQJhZQUBYQMJAAACCQCQAwEFAmFsAAIJAJQKAgkAkQMCBQJhbAAACQCRAwIFAmFsAAEJAQFZAQITaW52YWxpZCBwb29sIHN0cmluZwACYW0JARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQJhZwIFBHRoaXMFAXAAAmFuAAoBAmFvAAIRJXNfX2ZhY3RvcnlDb25maWcBAmFwAQJhcQkAtQkCCQECYWcCBQJhcQkBAmFvAAUBYQECYXIBAmFzCQERQGV4dHJOYXRpdmUoMTA2MikBCQCRAwIFAmFzBQJhbgECYXQCAUYBRwQCYXUKAAJhaAkA/AcEBQJhbQIQcG9vbEluZm9SRUFET05MWQkAzAgCBQFGCQDMCAIFAUcFA25pbAUDbmlsAwkAAQIFAmFoAhUoQWRkcmVzcywgQnl0ZVZlY3RvcikFAmFoBQR1bml0BQJhdQECYXYCAUYBRwoBAmF3AQJheAkArAICAiglcyVzJXNfX21hcHBpbmdzX19iYXNlQXNzZXQyaW50ZXJuYWxJZF9fBQJheAoBAmF5AgJhegJhQQkArAICCQCsAgIJAKwCAgkArAICAgolZCVkJXMlc19fCQCkAwEFAmF6AgJfXwkApAMBBQJhQQIjX19tYXBwaW5nc19fcG9vbEFzc2V0czJQb29sQ29udHJhY3QKAQJhQgECYUMJAKwCAgkArAICAgglcyVzJXNfXwUCYUMCIF9fbWFwcGluZ3NfX3Bvb2xDb250cmFjdDJMcEFzc2V0BAJhRAkBAmFpAgUCYW0JAQJhdwEFAUYEAmFFCQECYWkCBQJhbQkBAmF3AQUBRwQCYUMJAQJhZwIFAmFtCQECYXkCBQJhRAUCYUUEAmFGCQECYWcCBQJhbQkBAmFCAQUCYUMFAmFGAQJhRwEBRAQCYUgFAUQEAUYIBQJhSAJfMQQBRwgFAmFIAl8yCgACYWgJAPwHBAUCYW0CGGNoZWNrV3hFbWlzc2lvblBvb2xMYWJlbAkAzAgCBQFGCQDMCAIFAUcFA25pbAUDbmlsAwkAAQIFAmFoAgdCb29sZWFuBQJhaAkAAgEJAKwCAgkAAwEFAmFoAhwgY291bGRuJ3QgYmUgY2FzdCB0byBCb29sZWFuAQJhSQAEAmFzCQECYXABBQJhbQQCYUoJAQJhcgEFAmFzCQD8BwQFAmFKAgdkZXBvc2l0BQNuaWwFA25pbAACYUsCBXBvb2xzAQJhTAEBRAQCYU0FAUQEAUYIBQJhTQJfMQQBRwgFAmFNAl8yCQC5CQIJAMwIAgIFdm90ZXMJAMwIAgUBRgkAzAgCBQFHBQNuaWwFAWEBAmFOAQJhTwQCYVADCQAAAgUCYU8FAmFLAgQlcyVzAgglcyVzJXMlcwkAuQkCCQDMCAIFAmFQCQDMCAIFAmFPCQDMCAICBGhlYWQFA25pbAUBYQECYVEBAmFPBAJhUAMJAAACBQJhTwUCYUsCBCVzJXMCCCVzJXMlcyVzCQC5CQIJAMwIAgUCYVAJAMwIAgUCYU8JAMwIAgIEc2l6ZQUDbmlsBQFhAQJhUgICYU8CYVMEAmFQAwkAAAIFAmFPBQJhSwIIJXMlcyVzJXMCCiVzJXMlcyVzJXMJALkJAgkAzAgCBQJhUAkAzAgCBQJhTwkAzAgCBQJhUwkAzAgCAgRwcmV2BQNuaWwFAWEBAmFUAgJhTwJhUwQCYVADCQAAAgUCYU8FAmFLAgglcyVzJXMlcwIKJXMlcyVzJXMlcwkAuQkCCQDMCAIFAmFQCQDMCAIFAmFPCQDMCAIFAmFTCQDMCAICBG5leHQFA25pbAUBYQECYVUCAmFPAmFTBAJhVgkAnQgCBQR0aGlzCQECYU4BBQJhTwQCYVcJAJ0IAgUEdGhpcwkBAmFSAgUCYU8FAmFTBAJhWAkAnQgCBQR0aGlzCQECYVQCBQJhTwUCYVMDAwkAAAIFAmFTCQELdmFsdWVPckVsc2UCBQJhVgIABgkBAiE9AgUCYVcFBHVuaXQGCQECIT0CBQJhWAUEdW5pdAECYVkCAmFPAmFTBAJhVgkAnQgCBQR0aGlzCQECYU4BBQJhTwQCYVoJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBAmFRAQUCYU8AAAQCYmEDCQEBIQEJAQJhVQIFAmFPBQJhUwYJAQFZAQILTm9kZSBleGlzdHMDCQAAAgUCYmEFAmJhCQDOCAIJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmFRAQUCYU8JAGQCBQJhWgABBQNuaWwDCQECIT0CBQJhVgUEdW5pdAkAzAgCCQELU3RyaW5nRW50cnkCCQECYVQCBQJhTwUCYVMJAQV2YWx1ZQEFAmFWCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhUgIFAmFPCQEFdmFsdWUBBQJhVgUCYVMFA25pbAUDbmlsCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhTgEFAmFPBQJhUwUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJiYgICYU8CYVMEAmFWCQCdCAIFBHRoaXMJAQJhTgEFAmFPBAJhWgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQECYVEBBQJhTwAABAJhVwkAnQgCBQR0aGlzCQECYVICBQJhTwUCYVMEAmFYCQCdCAIFBHRoaXMJAQJhVAIFAmFPBQJhUwkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYVEBBQJhTwkAZQIFAmFaAAEFA25pbAMDCQECIT0CBQJhVwUEdW5pdAkBAiE9AgUCYVgFBHVuaXQHCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhVAIFAmFPCQEFdmFsdWUBBQJhVwkBBXZhbHVlAQUCYVgJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFSAgUCYU8JAQV2YWx1ZQEFAmFYCQEFdmFsdWUBBQJhVwkAzAgCCQELRGVsZXRlRW50cnkBCQECYVICBQJhTwUCYVMJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAmFUAgUCYU8FAmFTBQNuaWwDCQECIT0CBQJhWAUEdW5pdAkAzAgCCQELU3RyaW5nRW50cnkCCQECYU4BBQJhTwkBBXZhbHVlAQUCYVgJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAmFUAgUCYU8FAmFTCQDMCAIJAQtEZWxldGVFbnRyeQEJAQJhUgIFAmFPCQEFdmFsdWUBBQJhWAUDbmlsAwkBAiE9AgUCYVcFBHVuaXQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAmFSAgUCYU8FAmFTCQDMCAIJAQtEZWxldGVFbnRyeQEJAQJhVAIFAmFPCQEFdmFsdWUBBQJhVwUDbmlsAwkAAAIFAmFTCQELdmFsdWVPckVsc2UCBQJhVgIACQDMCAIJAQtEZWxldGVFbnRyeQEJAQJhTgEFAmFPBQNuaWwJAQFZAQkArAICCQCsAgIJAKwCAgIOaW52YWxpZCBub2RlOiAFAmFPAgEuBQJhUwECYmMAAhclc19fbWFuYWdlclZhdWx0QWRkcmVzcwECYmQAAhQlc19fbWFuYWdlclB1YmxpY0tleQECYmUABAJhZAkAoggBCQECYmMAAwkAAQIFAmFkAgZTdHJpbmcEAmJmBQJhZAkBEUBleHRyTmF0aXZlKDEwNjIpAQUCYmYFBHRoaXMBAmJnAAQCYmgJAQJiZQAEAmFkCQCdCAIFAmJoCQECYmQAAwkAAQIFAmFkAgZTdHJpbmcEAmJmBQJhZAkA2QQBBQJiZgMJAAECBQJhZAIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAQJiaQECYmoEAmFkCQECYmcAAwkAAQIFAmFkAgpCeXRlVmVjdG9yBAJiawUCYWQJAAACCAUCYmoPY2FsbGVyUHVibGljS2V5BQJiawMJAAECBQJhZAIEVW5pdAkAAAIIBQJiagZjYWxsZXIFBHRoaXMJAAIBAgtNYXRjaCBlcnJvcgECYmwBAmJqAwkBAmJpAQUCYmoGCQACAQIRcGVybWlzc2lvbiBkZW5pZWQBAmJtAQJiagMJAAACCAUCYmoGY2FsbGVyBQR0aGlzBgkAAgECEXBlcm1pc3Npb24gZGVuaWVkEwJiagEYZ2V0VXNlckd3eEFtb3VudEF0SGVpZ2h0AgJibgJibwQCYnAJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQECYWcCBQR0aGlzBQFxCQEBVwECIWludmFsaWQgYm9vc3RpbmcgY29udHJhY3QgYWRkcmVzcwkAlAoCBQNuaWwKAAJhaAkA/AcEBQJicAIgZ2V0VXNlckd3eEFtb3VudEF0SGVpZ2h0UkVBRE9OTFkJAMwIAgUCYm4JAMwIAgUCYm8FA25pbAUDbmlsAwkAAQIFAmFoAgNJbnQFAmFoCQACAQkArAICCQADAQUCYWgCGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAJiagELY29uc3RydWN0b3IFAmFtAmJxAmJyAmJzAmJ0BAJidQkAzAgCCQECYmwBBQJiagkAzAgCAwkBAiE9AgkApggBBQJhbQUEdW5pdAYCIGludmFsaWQgZmFjdG9yeSBjb250cmFjdCBhZGRyZXNzCQDMCAIDCQECIT0CCQCmCAEFAmJxBQR1bml0BgIyaW52YWxpZCB2b3RpbmcgZW1pc3Npb24gY2FuZGlkYXRlIGNvbnRyYWN0IGFkZHJlc3MJAMwIAgMJAQIhPQIJAKYIAQUCYnIFBHVuaXQGAiFpbnZhbGlkIGJvb3N0aW5nIGNvbnRyYWN0IGFkZHJlc3MJAMwIAgMJAQIhPQIJAKYIAQUCYnMFBHVuaXQGAiBpbnZhbGlkIHN0YWtpbmcgY29udHJhY3QgYWRkcmVzcwkAzAgCAwkAZgIFAmJ0AAAGCQEBWQECFGludmFsaWQgZXBvY2ggbGVuZ3RoBQNuaWwDCQAAAgUCYnUFAmJ1CQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgUBcAUCYW0JAMwIAgkBC1N0cmluZ0VudHJ5AgUBbgUCYnEJAMwIAgkBC1N0cmluZ0VudHJ5AgUBcQUCYnIJAMwIAgkBC1N0cmluZ0VudHJ5AgUBcgUCYnMJAMwIAgkBDEludGVnZXJFbnRyeQIFAWcFAmJ0BQNuaWwFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CYmoBBmNyZWF0ZQIBRgFHBAJidQkAzAgCAwkAAAIJANgEAQgIBQJiagZjYWxsZXIFYnl0ZXMJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwUBbgIABgkBAmJsAQUCYmoFA25pbAMJAAACBQJidQUCYnUEAUQJAJQKAgUBRgUBRwQCYnYJAM4IAgkAzAgCCQEMQm9vbGVhbkVudHJ5AgkBAUMBBQFEBgUDbmlsCQECYVkCBQJhSwkBAmFqAQUBRAQCYncJAAACCQCaCAIFBHRoaXMFAWsFBHVuaXQEAmJ4AwUCYncEAWoAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgUBawUBagkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAUEBBQFqBQZoZWlnaHQJAMwIAgkBDEludGVnZXJFbnRyeQIFAXcFBmhlaWdodAkAzAgCCQEMSW50ZWdlckVudHJ5AgUBeAUBagkAzAgCCQEMSW50ZWdlckVudHJ5AgUBeQUGaGVpZ2h0BQNuaWwFA25pbAkAlAoCCQDOCAIFAmJ2BQJieAUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJiagEEdm90ZQMBRgFHAmJ5BAFECQCUCgIFAUYFAUcEAWoJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUBawAABAJiegkBAmFpAgUEdGhpcwkBAUEBBQFqBAJidAkBAmFpAgUEdGhpcwUBZwQCYkEJAGQCBQJiegUCYnQEAmJCCQCaCAIFBHRoaXMFAXQEAmJDCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAQFKAggFAmJqBmNhbGxlcgUBagAABAJiRAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQEBTAMFAUQIBQJiagZjYWxsZXIFAWoAAAQCYkUJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBAU4CBQFEBQFqAAAEAmJGCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAQFUAQUBagAABAJiRwoAAmFoCQD8BwQFBHRoaXMCGGdldFVzZXJHd3hBbW91bnRBdEhlaWdodAkAzAgCCQDYBAEICAUCYmoGY2FsbGVyBWJ5dGVzCQDMCAIFAmJBBQNuaWwFA25pbAMJAAECBQJhaAIDSW50BQJhaAkAAgEJAKwCAgkAAwEFAmFoAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQEAmJICQBlAgUCYkcFAmJDBAJiSQkAZAIFAmJEBQJieQQCYkoJAQJhRwEFAUQEAmJ1CQDMCAIDCQECIT0CCQCgCAEJAQFDAQUBRAUEdW5pdAYJAQFZAQIOaW52YWxpZCBhc3NldHMJAMwIAgMJAGYCBQJiQQUGaGVpZ2h0BgkBAVkBAg5pbnZhbGlkIGhlaWdodAkAzAgCAwkAAAIFAmJCBQR1bml0BgkBAVkBAhhmaW5hbGl6YXRpb24gaW4gcHJvZ3Jlc3MJAMwIAgMJAGYCBQJiRwAABgkBAVkBAhN5b3UgZG8gbm90IGhhdmUgZ1dYCQDMCAIDAwkAZgIFAmJ5AAAJAGcCBQJiSAUCYnkHBgkBAVkBAg5pbnZhbGlkIGFtb3VudAkAzAgCAwUCYkoGCQEBWQECHXBvb2wgaGFzbid0IFdYX0VNSVNTSU9OIGxhYmVsBQNuaWwDCQAAAgUCYnUFAmJ1BAJiSwkBAmFMAQUBRAQBVgkApQgBCAUCYmoGY2FsbGVyBAJiTAMJAQJhVQIFAmJLBQFWBQNuaWwJAQJhWQIFAmJLBQFWCQCUCgIJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAUoCCAUCYmoGY2FsbGVyBQFqCQBkAgUCYkMFAmJ5CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBTAMFAUQIBQJiagZjYWxsZXIFAWoFAmJJCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBTgIFAUQFAWoJAGQCBQJiRQUCYnkJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFUAQUBagkAZAIFAmJGBQJieQUDbmlsBQJiTAUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJiagEKY2FuY2VsVm90ZQIBRgFHBAFECQCUCgIFAUYFAUcEAWoJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUBawAABAJiegkBAmFpAgUEdGhpcwkBAUEBBQFqBAJidAkBAmFpAgUEdGhpcwUBZwQCYkEJAGQCBQJiegUCYnQEAmJCCQCaCAIFBHRoaXMFAXQEAmJDCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAQFKAggFAmJqBmNhbGxlcgUBagAABAJiRAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQEBTAMFAUQIBQJiagZjYWxsZXIFAWoAAAQCYkUJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBAU4CBQFEBQFqAAAEAmJGCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAQFUAQUBagAABAJidQkAzAgCAwkBAiE9AgkAoAgBCQEBQwEFAUQFBHVuaXQGCQEBWQECDmludmFsaWQgYXNzZXRzCQDMCAIDCQBmAgUCYkEFBmhlaWdodAYJAQFZAQIOaW52YWxpZCBoZWlnaHQJAMwIAgMJAAACBQJiQgUEdW5pdAYJAQFZAQIYZmluYWxpemF0aW9uIGluIHByb2dyZXNzCQDMCAIDCQBmAgUCYkQAAAYJAQFZAQIHbm8gdm90ZQUDbmlsAwkAAAIFAmJ1BQJidQQCYksJAQJhTAEFAUQEAVYJAKUIAQgFAmJqBmNhbGxlcgkAlAoCCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFKAggFAmJqBmNhbGxlcgUBagkAlgMBCQDMCAIJAGUCBQJiQwUCYkQJAMwIAgAABQNuaWwJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAUwDBQFECAUCYmoGY2FsbGVyBQFqCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBTgIFAUQFAWoJAGUCBQJiRQUCYkQJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFUAQUBagkAZQIFAmJGBQJiRAUDbmlsCQECYmICBQJiSwUBVgUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJiagEOc2V0RXBvY2hMZW5ndGgBAmJNBAJidQkAzAgCCQECYmwBBQJiagkAzAgCAwkAZgIFAmJNAAAGCQEBWQECFGludmFsaWQgZXBvY2ggbGVuZ3RoBQNuaWwDCQAAAgUCYnUFAmJ1CQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIFAWgFAmJNBQNuaWwFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CYmoBC3NldE1heERlcHRoAQJiTgQCYnUJAMwIAgkBAmJsAQUCYmoJAMwIAgMJAGYCBQJiTgAABgkBAVkBAhFpbnZhbGlkIG1heCBkZXB0aAUDbmlsAwkAAAIFAmJ1BQJidQkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQFsBQJiTgUDbmlsBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmJqARpwcm9jZXNzUG9vbEJhbGFuY2VJTlRFUk5BTAECYk8EAmJQCQECYm0BBQJiagMJAAACBQJiUAUCYlAEAWoJAQJhaQIFBHRoaXMFAWsEAmJRCQBlAgUBagABBAFECQECYWsBBQJiTwQCYlIFAUQEAUYIBQJiUgJfMQQBRwgFAmJSAl8yBAJhRgkBAmF2AgUBRgUBRwQCYlMKAAJhaAkA/AcEBQJhbQIMY2hlY2tCYWxhbmNlCQDMCAIFAmFGBQNuaWwFA25pbAMJAAECBQJhaAIHQm9vbGVhbgUCYWgJAAIBCQCsAgIJAAMBBQJhaAIcIGNvdWxkbid0IGJlIGNhc3QgdG8gQm9vbGVhbgQCYlQJAQEhAQkBC3ZhbHVlT3JFbHNlAgkAmwgCBQR0aGlzCQEBSAIFAUQJAGUCBQJiUQABBwQCYlUDCQEBIQEFAmJTAwkBASEBBQJiVAQCYlYJAPwHBAUCYW0CGWRlbGV0ZVd4RW1pc3Npb25Qb29sTGFiZWwJAMwIAgUBRgkAzAgCBQFHBQNuaWwFA25pbAMJAAACBQJiVgUCYlYEAmJXCQD8BwQFAmFtAgxtb2RpZnlXZWlnaHQJAMwIAgUCYUYJAMwIAgAABQNuaWwFA25pbAMJAAACBQJiVwUCYlcEAmJYCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQECYXQCBQFGBQFHCQEBVwECDmludmFsaWQgYXNzZXRzAl8xBAJiWQADBAJiWgkA/AcEBQJhbQIKbWFuYWdlUG9vbAkAzAgCCQClCAEFAmJYCQDMCAIFAmJZBQNuaWwFA25pbAMJAAACBQJiWgUCYloEAmNhCQDOCAIJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAUMBBQFEBQNuaWwJAQJiYgIFAmFLCQECYWoBBQFECQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFSAgUBRAUCYlEAAAUDbmlsBQJjYQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAzAgCCQEMQm9vbGVhbkVudHJ5AgkBAUgCBQFEBQJiUQYFA25pbAUDbmlsCQCUCgIFAmJVBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmJqARNwcm9jZXNzVm90ZUlOVEVSTkFMAgJiTwFWBAJiUAkBAmJtAQUCYmoDCQAAAgUCYlAFAmJQBAJibgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEFAVYJAQFXAQkArAICAipwcm9jZXNzVm90ZUlOVEVSTkFMOiBpbnZhbGlkIHVzZXIgYWRkcmVzcyAFAVYEAWoJAQJhaQIFBHRoaXMFAWsEAmJRCQBlAgUBagABBAJidAkBAmFpAgUEdGhpcwUBZwQCYnoJAQJhaQIFBHRoaXMJAQFBAQUBagQCYkEJAGQCBQJiegUCYnQEAmNiCQECYWkCBQR0aGlzCQEBQQEFAmJRBAJjYwkBAmFpAgUEdGhpcwkBAWkBBQJiUQQCY2QJAGQCBQJjYgUCY2MEAmNlAwkAZwIFAmJRAAAGCQEBWQECK3Byb2Nlc3NWb3RlSU5URVJOQUw6IGludmFsaWQgcHJldmlvdXMgZXBvY2gDCQAAAgUCY2UFAmNlBAFECQECYWsBBQJiTwQCY2YFAUQEAUYIBQJjZgJfMQQBRwgFAmNmAl8yBAJiRwoAAmFoCQD8BwQFBHRoaXMCGGdldFVzZXJHd3hBbW91bnRBdEhlaWdodAkAzAgCBQFWCQDMCAIFAmJBBQNuaWwFA25pbAMJAAECBQJhaAIDSW50BQJhaAkAAgEJAKwCAgkAAwEFAmFoAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQEAmNnCgACYWgJAPwHBAUEdGhpcwIYZ2V0VXNlckd3eEFtb3VudEF0SGVpZ2h0CQDMCAIFAVYJAMwIAgUCY2QFA25pbAUDbmlsAwkAAQIFAmFoAgNJbnQFAmFoCQACAQkArAICCQADAQUCYWgCGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAQCYkYJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBAVQBBQFqAAAEAmNoCQELdmFsdWVPckVsc2UCCQCfCAEJAQFOAgUBRAUBagAABAJjaQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCfCAEJAQFMAwUBRAUCYm4FAmJRCQEBVwEJAKwCAgkArAICCQCsAgIJAKwCAgIUcHJvY2Vzc1ZvdGVJTlRFUk5BTCAFAmJPAgEgBQFWAhI6IG5vIHByZXZpb3VzIHZvdGUEAmJDCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAQFKAgUCYm4FAWoAAAQBUQkBAmF2AgUBRgUBRwQCY2oJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBAVACBQFRBQJiUQAABAJicwkBEUBleHRyTmF0aXZlKDEwNjIpAQkBAmFnAgUEdGhpcwUBcgQCY2sJAQt2YWx1ZU9yRWxzZQIJAJoIAgUCYnMJAQFVAgUBUQUBVgAABAJjbAMJAAACBQJjawAABQNuaWwJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFQAgUBUQUCYlEJAGQCBQJjagUCY2kFA25pbAQCYUYJAQJhdgIFAUYFAUcEAmJJAwkAZgIFAmNnAAAJAGsDBQJjaQUCYkcFAmNnAAAEAmJVAwkAZgIFAmJJAAAJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFMAwUBRAUCYm4FAWoFAmJJCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVAEFAWoJAGQCBQJiRgUCYkkJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFOAgUBRAUBagkAZAIFAmNoBQJiSQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAUoCBQJibgUBagkAZAIFAmJDBQJiSQUDbmlsCQECYmICCQECYUwBBQFEBQFWCQCUCgIJAM4IAgUCYlUFAmNsBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmJqARNwcm9jZXNzUG9vbElOVEVSTkFMAgJiTwJjbQQCYlAJAQJibQEFAmJqAwkAAAIFAmJQBQJiUAQCY24EAmNvCQECYWkCBQR0aGlzBQFrAwUCY20FAmNvCQBlAgUCY28AAQQCY2UDCQBnAgUCY24AAAYJAQFZAQIpcHJvY2Vzc1Bvb2xJTlRFUk5BTDogaW52YWxpZCB0YXJnZXQgZXBvY2gDCQAAAgUCY2UFAmNlBAFECQECYWsBBQJiTwQCY3AFAUQEAUYIBQJjcAJfMQQBRwgFAmNwAl8yBAJicwkBEUBleHRyTmF0aXZlKDEwNjIpAQkBAmFnAgUEdGhpcwUBcgQCYUYJAQJhdgIFAUYFAUcEAmNxCgACYWgJAPwHBAUCYnMCEnVzZXJzTGlzdFRyYXZlcnNhbAkAzAgCBQJhRgUDbmlsBQNuaWwDCQABAgUCYWgCB0Jvb2xlYW4FAmFoCQACAQkArAICCQADAQUCYWgCHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4DCQAAAgUCY3EFAmNxAwUCY3EJAJQKAgUDbmlsBgQCY3IJARFAZXh0ck5hdGl2ZSgxMDYyKQEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQJhbQUBcwIdaW52YWxpZCBhc3NldHMgc3RvcmUgY29udHJhY3QEAmJGCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAQFUAQUCY24AAAQCY2gJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBAU4CBQFEBQJjbgAABAJjcwMJAAACBQJiRgAAAAAJAGsDBQJjaAUBYgUCYkYEAmJXCQD8BwQFAmFtAgxtb2RpZnlXZWlnaHQJAMwIAgUCYUYJAMwIAgUCY3MFA25pbAUDbmlsAwkAAAIFAmJXBQJiVwkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBUgIFAUQFAmNuBQJjcwUDbmlsBwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJiagEOZmluYWxpemVIZWxwZXIABAJjbQkBC3ZhbHVlT3JFbHNlAgkAoAgBBQF6BwQBagkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQFrAAAEAmN0CQBlAgUBagABBAJiegkBAmFpAgUEdGhpcwkBAUEBBQFqBAJidAkBAmFpAgUEdGhpcwUBZwQCYkEJAGQCBQJiegUCYnQEAmJCCQCaCAIFBHRoaXMFAXQDAwMJAGcCBQZoZWlnaHQFAmJBCQAAAgUCYkIFBHVuaXQHCQEBIQEFAmNtBwQCY3UJAGQCBQFqAAEEAmN2CQCaCAIFBHRoaXMFAWgEAmN3BAJhZAUCY3YDCQABAgUCYWQCA0ludAQCYk0FAmFkCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQFnBQJiTQkAzAgCCQELRGVsZXRlRW50cnkBBQFoBQNuaWwDCQABAgUCYWQCBFVuaXQFA25pbAkAAgECC01hdGNoIGVycm9yCQCUCgIJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAUEBBQJjdQUGaGVpZ2h0CQDMCAIJAQxJbnRlZ2VyRW50cnkCBQF3BQZoZWlnaHQJAMwIAgkBDEludGVnZXJFbnRyeQIFAWsFAmN1CQDMCAIJAQxJbnRlZ2VyRW50cnkCBQF0BQFkCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBaQEFAWoFAmJ0BQNuaWwFAmN3BgMDBQJjbQkAAAIFAmJCBQR1bml0BwkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQF0BQFmBQNuaWwGAwkAAAIFAmJCBQR1bml0CQCUCgIFA25pbAcDCQAAAgUCYkIFAWQEAmN4CQCiCAEFAXUEAmFkBQJjeAMJAAECBQJhZAIEVW5pdAQCY3kJAKIIAQkBAmFOAQUCYUsDCQABAgUCY3kCBFVuaXQJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUBdAUBZQkAzAgCCQELRGVsZXRlRW50cnkBBQF1BQNuaWwGAwkAAQIFAmN5AgZTdHJpbmcEAmN6BQJjeQkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIFAXUFAmN6BQNuaWwGCQACAQILTWF0Y2ggZXJyb3IDCQABAgUCYWQCBlN0cmluZwQCYk8FAmFkBAJjQQkAoggBCQECYVQCBQJhSwUCYk8DCQAAAgUCY0EFAmNBBAJjcQkA/AcEBQR0aGlzAhpwcm9jZXNzUG9vbEJhbGFuY2VJTlRFUk5BTAkAzAgCBQJiTwUDbmlsBQNuaWwDCQAAAgUCY3EFAmNxBAJjeQUCY0EDCQABAgUCY3kCBFVuaXQJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUBdAUBZQkAzAgCCQELRGVsZXRlRW50cnkBBQF1BQNuaWwGAwkAAQIFAmN5AgZTdHJpbmcEAmN6BQJjeQkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIFAXUFAmN6BQNuaWwGCQACAQILTWF0Y2ggZXJyb3IJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAgtNYXRjaCBlcnJvcgMJAAACBQJiQgUBZQQCY3gJAKIIAQUBdQQCY0IJAKIIAQUBdgQCYWQFAmN4AwkAAQIFAmFkAgRVbml0BAJjeQkAoggBCQECYU4BBQJhSwMJAAECBQJjeQIEVW5pdAkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQF0BQFmCQDMCAIJAQtEZWxldGVFbnRyeQEFAXUJAMwIAgkBC0RlbGV0ZUVudHJ5AQUBdgUDbmlsBgMJAAECBQJjeQIGU3RyaW5nBAJjQwUCY3kJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCBQF1BQJjQwUDbmlsBgkAAgECC01hdGNoIGVycm9yAwkAAQIFAmFkAgZTdHJpbmcEAmJPBQJhZAQBRAkBAmFrAQUCYk8EAmNEBAJjeQUCY0IDCQABAgUCY3kCBFVuaXQJAKIIAQkBAmFOAQkBAmFMAQUBRAMJAAECBQJjeQIGU3RyaW5nBAJjRQUCY3kEAmNGCQCiCAEJAQJhVAIJAQJhTAEFAUQFAmNFAwkAAAIFAmNGBQJjRgQCY0cJAPwHBAUEdGhpcwITcHJvY2Vzc1ZvdGVJTlRFUk5BTAkAzAgCBQJiTwkAzAgCBQJjRQUDbmlsBQNuaWwDCQAAAgUCY0cFAmNHBQJjRgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECC01hdGNoIGVycm9yBAJjeQUCY0QDCQABAgUCY3kCBFVuaXQEAmNBCQCiCAEJAQJhVAIFAmFLBQJiTwQCY0gFAmNBAwkAAQIFAmNIAgRVbml0CQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIFAXQFAWYJAMwIAgkBC0RlbGV0ZUVudHJ5AQUBdQkAzAgCCQELRGVsZXRlRW50cnkBBQF2BQNuaWwGAwkAAQIFAmNIAgZTdHJpbmcEAmJmBQJjSAkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIFAXUFAmJmCQDMCAIJAQtEZWxldGVFbnRyeQEFAXYFA25pbAYJAAIBAgtNYXRjaCBlcnJvcgMJAAECBQJjeQIGU3RyaW5nBAJjSQUCY3kJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCBQF2BQJjSQUDbmlsBgkAAgECC01hdGNoIGVycm9yCQACAQILTWF0Y2ggZXJyb3IDCQAAAgUCYkIFAWYEAmN4CQCiCAEFAXUEAmFkBQJjeAMJAAECBQJhZAIEVW5pdAQCY3kJAKIIAQkBAmFOAQUCYUsDCQABAgUCY3kCBFVuaXQEAmJVAwUCY20JAMwIAgkBC0RlbGV0ZUVudHJ5AQUBdAkAzAgCCQELRGVsZXRlRW50cnkBBQF6BQNuaWwJAMwIAgkBC0RlbGV0ZUVudHJ5AQUBdAkAzAgCCQEMQm9vbGVhbkVudHJ5AgkBAUIBBQJjdAYJAMwIAgkBDEludGVnZXJFbnRyeQIFAXgFAWoJAMwIAgkBDEludGVnZXJFbnRyeQIFAXkFAmJ6BQNuaWwEAmNKCQECYUkAAwkAAAIFAmNKBQJjSgkAlAoCBQJiVQYJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4DCQABAgUCY3kCBlN0cmluZwQCY3oFAmN5CQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgUBdQUCY3oFA25pbAYJAAIBAgtNYXRjaCBlcnJvcgMJAAECBQJhZAIGU3RyaW5nBAJiTwUCYWQEAmNBCQCiCAEJAQJhVAIFAmFLBQJiTwMJAAACBQJjQQUCY0EEAmNxCgACYWgJAPwHBAUEdGhpcwITcHJvY2Vzc1Bvb2xJTlRFUk5BTAkAzAgCBQJiTwkAzAgCBQJjbQUDbmlsBQNuaWwDCQABAgUCYWgCB0Jvb2xlYW4FAmFoCQACAQkArAICCQADAQUCYWgCHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4DCQAAAgUCY3EFAmNxAwUCY3EJAJQKAgUDbmlsBgQCY3kFAmNBAwkAAQIFAmN5AgRVbml0BAJiVQMFAmNtCQDMCAIJAQtEZWxldGVFbnRyeQEFAXQJAMwIAgkBC0RlbGV0ZUVudHJ5AQUBegkAzAgCCQELRGVsZXRlRW50cnkBBQF1BQNuaWwJAMwIAgkBC0RlbGV0ZUVudHJ5AQUBdAkAzAgCCQEMQm9vbGVhbkVudHJ5AgkBAUIBBQJjdAYJAMwIAgkBDEludGVnZXJFbnRyeQIFAXgFAWoJAMwIAgkBDEludGVnZXJFbnRyeQIFAXkFAmJ6CQDMCAIJAQtEZWxldGVFbnRyeQEFAXUFA25pbAQCY0oJAQJhSQADCQAAAgUCY0oFAmNKCQCUCgIFAmJVBgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgMJAAECBQJjeQIGU3RyaW5nBAJjegUCY3kJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCBQF1BQJjegUDbmlsBgkAAgECC01hdGNoIGVycm9yCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQILTWF0Y2ggZXJyb3IJAQFZAQIWZmluYWxpemF0aW9uIGlzIGJyb2tlbgJiagEPZmluYWxpemVXcmFwcGVyAQJjSwQCY0wJARFAZXh0ck5hdGl2ZSgxMDYyKQEJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBHRoaXMFAW8EAmNNCgACYWgJAPwHBAUEdGhpcwIOZmluYWxpemVIZWxwZXIFA25pbAUDbmlsAwkAAQIFAmFoAgdCb29sZWFuBQJhaAkAAgEJAKwCAgkAAwEFAmFoAhwgY291bGRuJ3QgYmUgY2FzdCB0byBCb29sZWFuAwkAAAIFAmNNBQJjTQMJAQEhAQUCY00DCQAAAgUCY0sAAAkBAVkBAh5DdXJyZW50IHZvdGluZyBpcyBub3Qgb3ZlciB5ZXQEAmNOCQD8BwQFAmNMAghmaW5hbGl6ZQUDbmlsBQNuaWwDCQAAAgUCY04FAmNOCQCUCgIFA25pbAUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgQCY08JAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUBbAUBYwMJAGYCBQJjTwUCY0sEAmNOCQD8BwQFBHRoaXMCD2ZpbmFsaXplV3JhcHBlcgkAzAgCCQBkAgUCY0sAAQUDbmlsBQNuaWwDCQAAAgUCY04FAmNOCQCUCgIFA25pbAUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAlAoCBQNuaWwFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CYmoBCGZpbmFsaXplAAQCY04JAPwHBAUEdGhpcwIPZmluYWxpemVXcmFwcGVyCQDMCAIAAAUDbmlsBQNuaWwDCQAAAgUCY04FAmNOCQCUCgIFA25pbAUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJiagEUY29udGFpbnNOb2RlUkVBRE9OTFkCAmFPAmFTCQCUCgIFA25pbAkBAmFVAgUCYU8FAmFTAmJqAQppbnNlcnROb2RlAgJhTwJhUwQCYlAJAQJibAEFAmJqAwkAAAIFAmJQBQJiUAkAlAoCCQECYVkCBQJhTwUCYVMFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CYmoBCmRlbGV0ZU5vZGUCAmFPAmFTBAJiUAkBAmJsAQUCYmoDCQAAAgUCYlAFAmJQCQCUCgIJAQJiYgIFAmFPBQJhUwUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJiagEYaXNGaW5hbGl6YXRpb25JblByb2dyZXNzAAQCYkIJAJoIAgUEdGhpcwUBdAQCY1AJAQIhPQIFAmJCBQR1bml0CQCUCgIFA25pbAUCY1ACYmoBCmRlbGV0ZVBvb2wCAUYBRwQCYlADAwkAAAIIBQJiagZjYWxsZXIFAmFtBgkBAmJsAQUCYmoGCQEBWQECEVBlcm1pc3Npb24gZGVuaWVkAwkAAAIFAmJQBQJiUAQCYU8CBXBvb2xzBAFECQCUCgIFAUYFAUcEAmFTCQC5CQIJAMwIAgUBRgkAzAgCBQFHBQNuaWwFAWEEAmJVAwkBAmFVAgUCYU8FAmFTCQECYmICBQJhTwUCYVMFA25pbAkAzggCCQDMCAIJAQtEZWxldGVFbnRyeQEJAQFDAQUBRAUDbmlsBQJiVQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJiagEGcmVzdW1lAgFGAUcEAmFGCQECYXYCBQFGBQFHBAJjUQoAAmFoCQD8BwQFAmFtAgxjaGVja0JhbGFuY2UJAMwIAgUCYUYFA25pbAUDbmlsAwkAAQIFAmFoAgdCb29sZWFuBQJhaAkAAgEJAKwCAgkAAwEFAmFoAhwgY291bGRuJ3QgYmUgY2FzdCB0byBCb29sZWFuBAJjUgkAkQMCCAUCYmoIcGF5bWVudHMAAAQCY3IJARFAZXh0ck5hdGl2ZSgxMDYyKQEJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBHRoaXMFAXMEAmNTAgolc19fY29uZmlnBAJjVAABBAJicgkBEUBleHRyTmF0aXZlKDEwNjIpAQkBAmFnAgUEdGhpcwUBcQQCY1UJANkEAQkAkQMCCQC1CQIJARFAZXh0ck5hdGl2ZSgxMDUzKQIFAmJyBQJjUwUBYQUCY1QEAmNWCgACYWgJAPwHBAUCY3ICEmlzVmVyaWZpZWRSRUFET05MWQkAzAgCBQFGBQNuaWwFA25pbAMJAAECBQJhaAIHQm9vbGVhbgUCYWgJAAIBCQCsAgIJAAMBBQJhaAIcIGNvdWxkbid0IGJlIGNhc3QgdG8gQm9vbGVhbgQCY1cKAAJhaAkA/AcEBQJjcgISaXNWZXJpZmllZFJFQURPTkxZCQDMCAIFAUcFA25pbAUDbmlsAwkAAQIFAmFoAgdCb29sZWFuBQJhaAkAAgEJAKwCAgkAAwEFAmFoAhwgY291bGRuJ3QgYmUgY2FzdCB0byBCb29sZWFuBAJjWAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFBHRoaXMFAW0CFmludmFsaWQgcmVzdW1wdGlvbiBmZWUEAmJ1CQDMCAIDBQJjUQYJAQFZAQIVaW5zdWZmaWNpZW50IGJhbGFuY2VzCQDMCAIDCQAAAgkAkAMBCAUCYmoIcGF5bWVudHMAAQYJAQFZAQIVMSBwYXltZW50IGlzIHJlcXVpcmVkCQDMCAIDCQAAAggFAmNSB2Fzc2V0SWQFAmNVBgkBAVkBAhhpbnZhbGlkIHBheW1lbnQgYXNzZXQgaWQJAMwIAgMJAAACCAUCY1IGYW1vdW50BQJjWAYJAQFZAQIWaW52YWxpZCBwYXltZW50IGFtb3VudAkAzAgCAwMFAmNWBQJjVwcGCQEBWQECHmJvdGggYXNzZXRzIHNob3VsZCBiZSB2ZXJpZmllZAUDbmlsAwkAAAIFAmJ1BQJidQQCY1kJAPwHBAUCYW0CFnNldFd4RW1pc3Npb25Qb29sTGFiZWwJAMwIAgUBRgkAzAgCBQFHBQNuaWwFA25pbAMJAAACBQJjWQUCY1kEAUQJAJQKAgUBRgUBRwQCYnYJAM4IAgkAzAgCCQEMQm9vbGVhbkVudHJ5AgkBAUMBBQFEBgUDbmlsCQECYVkCBQJhSwkBAmFqAQUBRAkAlAoCBQJidgUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECY1oBAmRhAAQCZGIEAmFkCQECYmcAAwkAAQIFAmFkAgpCeXRlVmVjdG9yBAJiawUCYWQFAmJrAwkAAQIFAmFkAgRVbml0CAUCY1oPc2VuZGVyUHVibGljS2V5CQACAQILTWF0Y2ggZXJyb3IJAPQDAwgFAmNaCWJvZHlCeXRlcwkAkQMCCAUCY1oGcHJvb2ZzAAAFAmRiPUiPew==", "height": 3066519, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: GSPTD42ZfJuujPW4kMVGFUbmJF82gZzGM2p1WJ26e4mc Next: KTryZkBiizn7FmoWa3HxgrzWHARH3brtXuWu8ijAznF Diff:
Old | New | Differences | |
---|---|---|---|
13 | 13 | ||
14 | 14 | let f = 2 | |
15 | 15 | ||
16 | - | let g = | |
16 | + | let g = makeString(["%s", "epochLength"], a) | |
17 | 17 | ||
18 | - | let h = makeString(["%s", "epochLength"], a) | |
18 | + | let h = makeString(["%s%s", "epochLength__new"], a) | |
19 | 19 | ||
20 | - | let i = makeString(["%s%s", "epochLength__new"], a) | |
21 | - | ||
22 | - | func j (k) = makeString(["%s%d", "epochLength", toString(k)], a) | |
20 | + | func i (j) = makeString(["%s%d", "epochLength", toString(j)], a) | |
23 | 21 | ||
24 | 22 | ||
25 | - | let | |
23 | + | let k = makeString(["%s", "currentEpoch"], a) | |
26 | 24 | ||
27 | - | let | |
25 | + | let l = makeString(["%s", "maxDepth"], a) | |
28 | 26 | ||
29 | - | let | |
27 | + | let m = makeString(["%s", "resumptionFee"], a) | |
30 | 28 | ||
31 | - | let | |
29 | + | let n = makeString(["%s", "votingEmissionCandidateContract"], a) | |
32 | 30 | ||
33 | - | let | |
31 | + | let o = makeString(["%s", "votingEmissionRateContract"], a) | |
34 | 32 | ||
35 | - | let | |
33 | + | let p = makeString(["%s", "factoryContract"], a) | |
36 | 34 | ||
37 | - | let | |
35 | + | let q = makeString(["%s", "boostingContract"], a) | |
38 | 36 | ||
39 | - | let | |
37 | + | let r = makeString(["%s", "stakingContract"], a) | |
40 | 38 | ||
41 | - | let | |
39 | + | let s = makeString(["%s", "assetsStoreContract"], a) | |
42 | 40 | ||
43 | - | let | |
41 | + | let t = makeString(["%s", "finalizationStage"], a) | |
44 | 42 | ||
45 | - | let | |
43 | + | let u = makeString(["%s", "nextPool"], a) | |
46 | 44 | ||
47 | - | let | |
45 | + | let v = makeString(["%s", "nextUser"], a) | |
48 | 46 | ||
49 | - | let | |
47 | + | let w = makeString(["%s", "startHeight"], a) | |
50 | 48 | ||
51 | - | let | |
49 | + | let x = makeString(["%s", "currentEpochUi"], a) | |
52 | 50 | ||
53 | - | let | |
51 | + | let y = makeString(["%s", "startHeightUi"], a) | |
54 | 52 | ||
55 | - | let | |
53 | + | let z = makeString(["%s", "force"], a) | |
56 | 54 | ||
57 | - | func | |
55 | + | func A (j) = makeString(["%s%d", "startHeight", toString(j)], a) | |
58 | 56 | ||
59 | 57 | ||
60 | - | func | |
58 | + | func B (j) = makeString(["%s%d", "finalized", toString(j)], a) | |
61 | 59 | ||
62 | 60 | ||
63 | - | func | |
64 | - | let | |
65 | - | let | |
66 | - | let | |
67 | - | makeString(["%s%s%s", "inList", | |
61 | + | func C (D) = { | |
62 | + | let E = D | |
63 | + | let F = E._1 | |
64 | + | let G = E._2 | |
65 | + | makeString(["%s%s%s", "inList", F, G], a) | |
68 | 66 | } | |
69 | 67 | ||
70 | 68 | ||
71 | - | func | |
72 | - | let | |
73 | - | let | |
74 | - | let | |
75 | - | makeString(["%s%s%s%d", "insufficientBalances", | |
69 | + | func H (D,j) = { | |
70 | + | let I = D | |
71 | + | let F = I._1 | |
72 | + | let G = I._2 | |
73 | + | makeString(["%s%s%s%d", "insufficientBalances", F, G, toString(j)], a) | |
76 | 74 | } | |
77 | 75 | ||
78 | 76 | ||
79 | - | func | |
77 | + | func J (K,j) = makeString(["%s%s%d", "used", toString(K), toString(j)], a) | |
80 | 78 | ||
81 | 79 | ||
82 | - | func | |
83 | - | let | |
84 | - | let | |
85 | - | let | |
86 | - | makeString(["%s%s%s%s%d", "vote", | |
80 | + | func L (D,K,j) = { | |
81 | + | let M = D | |
82 | + | let F = M._1 | |
83 | + | let G = M._2 | |
84 | + | makeString(["%s%s%s%s%d", "vote", F, G, toString(K), toString(j)], a) | |
87 | 85 | } | |
88 | 86 | ||
89 | 87 | ||
90 | - | func | |
91 | - | let | |
92 | - | let | |
93 | - | let | |
94 | - | makeString(["%s%s%s%d", "votingResult", | |
88 | + | func N (D,j) = { | |
89 | + | let O = D | |
90 | + | let F = O._1 | |
91 | + | let G = O._2 | |
92 | + | makeString(["%s%s%s%d", "votingResult", F, G, toString(j)], a) | |
95 | 93 | } | |
96 | 94 | ||
97 | 95 | ||
98 | - | func | |
96 | + | func P (Q,j) = makeString(["%s%s%d", "votingResultStaked", Q, toString(j)], a) | |
99 | 97 | ||
100 | 98 | ||
101 | - | func | |
102 | - | let | |
103 | - | let | |
104 | - | let | |
105 | - | makeString(["%s%s%s%d", "poolShare", | |
99 | + | func R (D,j) = { | |
100 | + | let S = D | |
101 | + | let F = S._1 | |
102 | + | let G = S._2 | |
103 | + | makeString(["%s%s%s%d", "poolShare", F, G, toString(j)], a) | |
106 | 104 | } | |
107 | 105 | ||
108 | 106 | ||
109 | - | func | |
107 | + | func T (j) = makeString(["%s%d", "totalVotes", toString(j)], a) | |
110 | 108 | ||
111 | 109 | ||
112 | - | func | |
110 | + | func U (Q,V) = makeString(["%s%s%s", "staked", V, Q], a) | |
113 | 111 | ||
114 | 112 | ||
115 | - | func | |
113 | + | func W (X) = makeString(["voting_emission.ride:", X], " ") | |
116 | 114 | ||
117 | 115 | ||
118 | - | func | |
116 | + | func Y (X) = throw(W(X)) | |
119 | 117 | ||
120 | 118 | ||
121 | - | func | |
122 | - | let | |
119 | + | func Z (K,aa,ab) = { | |
120 | + | let ac = W(makeString(["mandatory ", toString(K), ".", aa, " is not defined"], "")) | |
123 | 121 | valueOrErrorMessage({ | |
124 | - | let | |
125 | - | if ($isInstanceOf( | |
122 | + | let ad = ab | |
123 | + | if ($isInstanceOf(ad, "String")) | |
126 | 124 | then { | |
127 | - | let | |
128 | - | getString( | |
125 | + | let ae = ad | |
126 | + | getString(K, aa) | |
129 | 127 | } | |
130 | - | else if ($isInstanceOf( | |
128 | + | else if ($isInstanceOf(ad, "Int")) | |
131 | 129 | then { | |
132 | - | let | |
133 | - | getInteger( | |
130 | + | let af = ad | |
131 | + | getInteger(K, aa) | |
134 | 132 | } | |
135 | - | else | |
136 | - | }, | |
133 | + | else Y("invalid entry type") | |
134 | + | }, ac) | |
137 | 135 | } | |
138 | 136 | ||
139 | 137 | ||
140 | - | func | |
141 | - | let | |
142 | - | if ($isInstanceOf( | |
143 | - | then | |
144 | - | else throw(($getType( | |
138 | + | func ag (K,aa) = { | |
139 | + | let ah = Z(K, aa, "") | |
140 | + | if ($isInstanceOf(ah, "String")) | |
141 | + | then ah | |
142 | + | else throw(($getType(ah) + " couldn't be cast to String")) | |
145 | 143 | } | |
146 | 144 | ||
147 | 145 | ||
148 | - | func | |
149 | - | let | |
150 | - | if ($isInstanceOf( | |
151 | - | then | |
152 | - | else throw(($getType( | |
146 | + | func ai (K,aa) = { | |
147 | + | let ah = Z(K, aa, 0) | |
148 | + | if ($isInstanceOf(ah, "Int")) | |
149 | + | then ah | |
150 | + | else throw(($getType(ah) + " couldn't be cast to Int")) | |
153 | 151 | } | |
154 | 152 | ||
155 | 153 | ||
156 | - | func | |
154 | + | func aj (D) = ((D._1 + a) + D._2) | |
157 | 155 | ||
158 | 156 | ||
159 | - | func | |
160 | - | let | |
161 | - | if ((size( | |
162 | - | then $Tuple2( | |
163 | - | else | |
157 | + | func ak (ae) = { | |
158 | + | let al = split(ae, a) | |
159 | + | if ((size(al) == 2)) | |
160 | + | then $Tuple2(al[0], al[1]) | |
161 | + | else Y("invalid pool string") | |
164 | 162 | } | |
165 | 163 | ||
166 | 164 | ||
167 | - | let | |
165 | + | let am = addressFromStringValue(ag(this, p)) | |
168 | 166 | ||
169 | - | let | |
167 | + | let an = 10 | |
170 | 168 | ||
171 | - | func | |
169 | + | func ao () = "%s__factoryConfig" | |
172 | 170 | ||
173 | 171 | ||
174 | - | func | |
172 | + | func ap (aq) = split(ag(aq, ao()), a) | |
175 | 173 | ||
176 | 174 | ||
177 | - | func | |
175 | + | func ar (as) = addressFromStringValue(as[an]) | |
178 | 176 | ||
179 | 177 | ||
180 | - | func | |
181 | - | let | |
182 | - | let | |
183 | - | if ($isInstanceOf( | |
184 | - | then | |
178 | + | func at (F,G) = { | |
179 | + | let au = { | |
180 | + | let ah = invoke(am, "poolInfoREADONLY", [F, G], nil) | |
181 | + | if ($isInstanceOf(ah, "(Address, ByteVector)")) | |
182 | + | then ah | |
185 | 183 | else unit | |
186 | 184 | } | |
187 | - | | |
185 | + | au | |
188 | 186 | } | |
189 | 187 | ||
190 | 188 | ||
191 | - | func | |
192 | - | func | |
189 | + | func av (F,G) = { | |
190 | + | func aw (ax) = ("%s%s%s__mappings__baseAsset2internalId__" + ax) | |
193 | 191 | ||
194 | - | func | |
192 | + | func ay (az,aA) = (((("%d%d%s%s__" + toString(az)) + "__") + toString(aA)) + "__mappings__poolAssets2PoolContract") | |
195 | 193 | ||
196 | - | func | |
194 | + | func aB (aC) = (("%s%s%s__" + aC) + "__mappings__poolContract2LpAsset") | |
197 | 195 | ||
198 | - | let | |
199 | - | let | |
200 | - | let | |
201 | - | let | |
202 | - | | |
196 | + | let aD = ai(am, aw(F)) | |
197 | + | let aE = ai(am, aw(G)) | |
198 | + | let aC = ag(am, ay(aD, aE)) | |
199 | + | let aF = ag(am, aB(aC)) | |
200 | + | aF | |
203 | 201 | } | |
204 | 202 | ||
205 | 203 | ||
206 | - | func | |
207 | - | let | |
208 | - | let | |
209 | - | let | |
210 | - | let | |
211 | - | if ($isInstanceOf( | |
212 | - | then | |
213 | - | else throw(($getType( | |
204 | + | func aG (D) = { | |
205 | + | let aH = D | |
206 | + | let F = aH._1 | |
207 | + | let G = aH._2 | |
208 | + | let ah = invoke(am, "checkWxEmissionPoolLabel", [F, G], nil) | |
209 | + | if ($isInstanceOf(ah, "Boolean")) | |
210 | + | then ah | |
211 | + | else throw(($getType(ah) + " couldn't be cast to Boolean")) | |
214 | 212 | } | |
215 | 213 | ||
216 | 214 | ||
217 | - | func | |
218 | - | let | |
219 | - | let | |
220 | - | invoke( | |
215 | + | func aI () = { | |
216 | + | let as = ap(am) | |
217 | + | let aJ = ar(as) | |
218 | + | invoke(aJ, "deposit", nil, nil) | |
221 | 219 | } | |
222 | 220 | ||
223 | 221 | ||
224 | - | let | |
222 | + | let aK = "pools" | |
225 | 223 | ||
226 | - | func | |
227 | - | let | |
228 | - | let | |
229 | - | let | |
230 | - | makeString(["votes", | |
224 | + | func aL (D) = { | |
225 | + | let aM = D | |
226 | + | let F = aM._1 | |
227 | + | let G = aM._2 | |
228 | + | makeString(["votes", F, G], a) | |
231 | 229 | } | |
232 | 230 | ||
233 | 231 | ||
234 | - | func | |
235 | - | let | |
232 | + | func aN (aO) = { | |
233 | + | let aP = if ((aO == aK)) | |
236 | 234 | then "%s%s" | |
237 | 235 | else "%s%s%s%s" | |
238 | - | makeString([ | |
236 | + | makeString([aP, aO, "head"], a) | |
239 | 237 | } | |
240 | 238 | ||
241 | 239 | ||
242 | - | func | |
243 | - | let | |
240 | + | func aQ (aO) = { | |
241 | + | let aP = if ((aO == aK)) | |
244 | 242 | then "%s%s" | |
245 | 243 | else "%s%s%s%s" | |
246 | - | makeString([ | |
244 | + | makeString([aP, aO, "size"], a) | |
247 | 245 | } | |
248 | 246 | ||
249 | 247 | ||
250 | - | func | |
251 | - | let | |
248 | + | func aR (aO,aS) = { | |
249 | + | let aP = if ((aO == aK)) | |
252 | 250 | then "%s%s%s%s" | |
253 | 251 | else "%s%s%s%s%s" | |
254 | - | makeString([ | |
252 | + | makeString([aP, aO, aS, "prev"], a) | |
255 | 253 | } | |
256 | 254 | ||
257 | 255 | ||
258 | - | func | |
259 | - | let | |
256 | + | func aT (aO,aS) = { | |
257 | + | let aP = if ((aO == aK)) | |
260 | 258 | then "%s%s%s%s" | |
261 | 259 | else "%s%s%s%s%s" | |
262 | - | makeString([ | |
260 | + | makeString([aP, aO, aS, "next"], a) | |
263 | 261 | } | |
264 | 262 | ||
265 | 263 | ||
266 | - | func | |
267 | - | let | |
268 | - | let | |
269 | - | let | |
270 | - | if (if (( | |
264 | + | func aU (aO,aS) = { | |
265 | + | let aV = getString(this, aN(aO)) | |
266 | + | let aW = getString(this, aR(aO, aS)) | |
267 | + | let aX = getString(this, aT(aO, aS)) | |
268 | + | if (if ((aS == valueOrElse(aV, ""))) | |
271 | 269 | then true | |
272 | - | else ( | |
270 | + | else (aW != unit)) | |
273 | 271 | then true | |
274 | - | else ( | |
272 | + | else (aX != unit) | |
275 | 273 | } | |
276 | 274 | ||
277 | 275 | ||
278 | - | func | |
279 | - | let | |
280 | - | let | |
281 | - | let | |
276 | + | func aY (aO,aS) = { | |
277 | + | let aV = getString(this, aN(aO)) | |
278 | + | let aZ = valueOrElse(getInteger(this, aQ(aO)), 0) | |
279 | + | let ba = if (!(aU(aO, aS))) | |
282 | 280 | then true | |
283 | - | else | |
284 | - | if (( | |
285 | - | then (([IntegerEntry( | |
286 | - | then [StringEntry( | |
287 | - | else nil)) ++ [StringEntry(aO | |
281 | + | else Y("Node exists") | |
282 | + | if ((ba == ba)) | |
283 | + | then (([IntegerEntry(aQ(aO), (aZ + 1))] ++ (if ((aV != unit)) | |
284 | + | then [StringEntry(aT(aO, aS), value(aV)), StringEntry(aR(aO, value(aV)), aS)] | |
285 | + | else nil)) ++ [StringEntry(aN(aO), aS)]) | |
288 | 286 | else throw("Strict value is not equal to itself.") | |
289 | 287 | } | |
290 | 288 | ||
291 | 289 | ||
292 | - | func | |
293 | - | let | |
294 | - | let | |
295 | - | let | |
296 | - | let | |
297 | - | ([IntegerEntry( | |
298 | - | then ( | |
290 | + | func bb (aO,aS) = { | |
291 | + | let aV = getString(this, aN(aO)) | |
292 | + | let aZ = valueOrElse(getInteger(this, aQ(aO)), 0) | |
293 | + | let aW = getString(this, aR(aO, aS)) | |
294 | + | let aX = getString(this, aT(aO, aS)) | |
295 | + | ([IntegerEntry(aQ(aO), (aZ - 1))] ++ (if (if ((aW != unit)) | |
296 | + | then (aX != unit) | |
299 | 297 | else false) | |
300 | - | then [StringEntry( | |
301 | - | else if (( | |
302 | - | then [StringEntry(aO | |
303 | - | else if (( | |
304 | - | then [DeleteEntry( | |
305 | - | else if (( | |
306 | - | then [DeleteEntry(aO | |
307 | - | else | |
298 | + | then [StringEntry(aT(aO, value(aW)), value(aX)), StringEntry(aR(aO, value(aX)), value(aW)), DeleteEntry(aR(aO, aS)), DeleteEntry(aT(aO, aS))] | |
299 | + | else if ((aX != unit)) | |
300 | + | then [StringEntry(aN(aO), value(aX)), DeleteEntry(aT(aO, aS)), DeleteEntry(aR(aO, value(aX)))] | |
301 | + | else if ((aW != unit)) | |
302 | + | then [DeleteEntry(aR(aO, aS)), DeleteEntry(aT(aO, value(aW)))] | |
303 | + | else if ((aS == valueOrElse(aV, ""))) | |
304 | + | then [DeleteEntry(aN(aO))] | |
305 | + | else Y(((("invalid node: " + aO) + ".") + aS)))) | |
308 | 306 | } | |
309 | 307 | ||
310 | 308 | ||
311 | - | func | |
309 | + | func bc () = "%s__managerVaultAddress" | |
312 | 310 | ||
313 | 311 | ||
314 | - | func | |
312 | + | func bd () = "%s__managerPublicKey" | |
315 | 313 | ||
316 | 314 | ||
317 | - | func | |
318 | - | let | |
319 | - | if ($isInstanceOf( | |
315 | + | func be () = { | |
316 | + | let ad = getString(bc()) | |
317 | + | if ($isInstanceOf(ad, "String")) | |
320 | 318 | then { | |
321 | - | let | |
322 | - | addressFromStringValue( | |
319 | + | let bf = ad | |
320 | + | addressFromStringValue(bf) | |
323 | 321 | } | |
324 | 322 | else this | |
325 | 323 | } | |
326 | 324 | ||
327 | 325 | ||
328 | - | func | |
329 | - | let | |
330 | - | let | |
331 | - | if ($isInstanceOf( | |
326 | + | func bg () = { | |
327 | + | let bh = be() | |
328 | + | let ad = getString(bh, bd()) | |
329 | + | if ($isInstanceOf(ad, "String")) | |
332 | 330 | then { | |
333 | - | let | |
334 | - | fromBase58String( | |
331 | + | let bf = ad | |
332 | + | fromBase58String(bf) | |
335 | 333 | } | |
336 | - | else if ($isInstanceOf( | |
334 | + | else if ($isInstanceOf(ad, "Unit")) | |
337 | 335 | then unit | |
338 | 336 | else throw("Match error") | |
339 | 337 | } | |
340 | 338 | ||
341 | 339 | ||
342 | - | func | |
343 | - | let | |
344 | - | if ($isInstanceOf( | |
340 | + | func bi (bj) = { | |
341 | + | let ad = bg() | |
342 | + | if ($isInstanceOf(ad, "ByteVector")) | |
345 | 343 | then { | |
346 | - | let | |
347 | - | ( | |
344 | + | let bk = ad | |
345 | + | (bj.callerPublicKey == bk) | |
348 | 346 | } | |
349 | - | else if ($isInstanceOf( | |
350 | - | then ( | |
347 | + | else if ($isInstanceOf(ad, "Unit")) | |
348 | + | then (bj.caller == this) | |
351 | 349 | else throw("Match error") | |
352 | 350 | } | |
353 | 351 | ||
354 | 352 | ||
355 | - | func | |
353 | + | func bl (bj) = if (bi(bj)) | |
356 | 354 | then true | |
357 | 355 | else throw("permission denied") | |
358 | 356 | ||
359 | 357 | ||
360 | - | func | |
358 | + | func bm (bj) = if ((bj.caller == this)) | |
361 | 359 | then true | |
362 | 360 | else throw("permission denied") | |
363 | 361 | ||
364 | 362 | ||
365 | - | @Callable( | |
366 | - | func getUserGwxAmountAtHeight (bo | |
367 | - | let | |
363 | + | @Callable(bj) | |
364 | + | func getUserGwxAmountAtHeight (bn,bo) = { | |
365 | + | let bp = valueOrErrorMessage(addressFromString(ag(this, q)), W("invalid boosting contract address")) | |
368 | 366 | $Tuple2(nil, { | |
369 | - | let | |
370 | - | if ($isInstanceOf( | |
371 | - | then | |
372 | - | else throw(($getType( | |
367 | + | let ah = invoke(bp, "getUserGwxAmountAtHeightREADONLY", [bn, bo], nil) | |
368 | + | if ($isInstanceOf(ah, "Int")) | |
369 | + | then ah | |
370 | + | else throw(($getType(ah) + " couldn't be cast to Int")) | |
373 | 371 | }) | |
374 | 372 | } | |
375 | 373 | ||
376 | 374 | ||
377 | 375 | ||
378 | - | @Callable( | |
379 | - | func constructor ( | |
380 | - | let | |
376 | + | @Callable(bj) | |
377 | + | func constructor (am,bq,br,bs,bt) = { | |
378 | + | let bu = [bl(bj), if ((addressFromString(am) != unit)) | |
381 | 379 | then true | |
382 | - | else "invalid factory contract address", if ((addressFromString( | |
380 | + | else "invalid factory contract address", if ((addressFromString(bq) != unit)) | |
383 | 381 | then true | |
384 | - | else "invalid voting emission candidate contract address", if ((addressFromString( | |
382 | + | else "invalid voting emission candidate contract address", if ((addressFromString(br) != unit)) | |
385 | 383 | then true | |
386 | - | else "invalid boosting contract address", if ((addressFromString( | |
384 | + | else "invalid boosting contract address", if ((addressFromString(bs) != unit)) | |
387 | 385 | then true | |
388 | - | else "invalid staking contract address", if (( | |
386 | + | else "invalid staking contract address", if ((bt > 0)) | |
389 | 387 | then true | |
390 | - | else | |
391 | - | if (( | |
392 | - | then $Tuple2([StringEntry( | |
388 | + | else Y("invalid epoch length")] | |
389 | + | if ((bu == bu)) | |
390 | + | then $Tuple2([StringEntry(p, am), StringEntry(n, bq), StringEntry(q, br), StringEntry(r, bs), IntegerEntry(g, bt)], unit) | |
393 | 391 | else throw("Strict value is not equal to itself.") | |
394 | 392 | } | |
395 | 393 | ||
396 | 394 | ||
397 | 395 | ||
398 | - | @Callable( | |
399 | - | func create (G | |
400 | - | let | |
396 | + | @Callable(bj) | |
397 | + | func create (F,G) = { | |
398 | + | let bu = [if ((toBase58String(bj.caller.bytes) == valueOrElse(getString(this, n), ""))) | |
401 | 399 | then true | |
402 | - | else | |
403 | - | if (( | |
400 | + | else bl(bj)] | |
401 | + | if ((bu == bu)) | |
404 | 402 | then { | |
405 | - | let | |
406 | - | let | |
407 | - | let | |
408 | - | let | |
403 | + | let D = $Tuple2(F, G) | |
404 | + | let bv = ([BooleanEntry(C(D), true)] ++ aY(aK, aj(D))) | |
405 | + | let bw = (getInteger(this, k) == unit) | |
406 | + | let bx = if (bw) | |
409 | 407 | then { | |
410 | - | let | |
411 | - | [IntegerEntry( | |
408 | + | let j = 0 | |
409 | + | [IntegerEntry(k, j), IntegerEntry(A(j), height), IntegerEntry(w, height), IntegerEntry(x, j), IntegerEntry(y, height)] | |
412 | 410 | } | |
413 | 411 | else nil | |
414 | - | $Tuple2(( | |
412 | + | $Tuple2((bv ++ bx), unit) | |
415 | 413 | } | |
416 | 414 | else throw("Strict value is not equal to itself.") | |
417 | 415 | } | |
418 | 416 | ||
419 | 417 | ||
420 | 418 | ||
421 | - | @Callable( | |
422 | - | func vote (G, | |
423 | - | let | |
424 | - | let | |
425 | - | let | |
426 | - | let | |
427 | - | let | |
428 | - | let | |
429 | - | let | |
430 | - | let | |
431 | - | let | |
432 | - | let | |
433 | - | let | |
434 | - | let | |
435 | - | if ($isInstanceOf( | |
436 | - | then | |
437 | - | else throw(($getType( | |
419 | + | @Callable(bj) | |
420 | + | func vote (F,G,by) = { | |
421 | + | let D = $Tuple2(F, G) | |
422 | + | let j = valueOrElse(getInteger(this, k), 0) | |
423 | + | let bz = ai(this, A(j)) | |
424 | + | let bt = ai(this, g) | |
425 | + | let bA = (bz + bt) | |
426 | + | let bB = getInteger(this, t) | |
427 | + | let bC = valueOrElse(getInteger(this, J(bj.caller, j)), 0) | |
428 | + | let bD = valueOrElse(getInteger(this, L(D, bj.caller, j)), 0) | |
429 | + | let bE = valueOrElse(getInteger(this, N(D, j)), 0) | |
430 | + | let bF = valueOrElse(getInteger(this, T(j)), 0) | |
431 | + | let bG = { | |
432 | + | let ah = invoke(this, "getUserGwxAmountAtHeight", [toBase58String(bj.caller.bytes), bA], nil) | |
433 | + | if ($isInstanceOf(ah, "Int")) | |
434 | + | then ah | |
435 | + | else throw(($getType(ah) + " couldn't be cast to Int")) | |
438 | 436 | } | |
439 | - | let | |
440 | - | let | |
441 | - | let | |
442 | - | let | |
437 | + | let bH = (bG - bC) | |
438 | + | let bI = (bD + by) | |
439 | + | let bJ = aG(D) | |
440 | + | let bu = [if ((getBoolean(C(D)) != unit)) | |
443 | 441 | then true | |
444 | - | else | |
442 | + | else Y("invalid assets"), if ((bA > height)) | |
445 | 443 | then true | |
446 | - | else | |
444 | + | else Y("invalid height"), if ((bB == unit)) | |
447 | 445 | then true | |
448 | - | else | |
446 | + | else Y("finalization in progress"), if ((bG > 0)) | |
449 | 447 | then true | |
450 | - | else | |
451 | - | then ( | |
448 | + | else Y("you do not have gWX"), if (if ((by > 0)) | |
449 | + | then (bH >= by) | |
452 | 450 | else false) | |
453 | 451 | then true | |
454 | - | else | |
452 | + | else Y("invalid amount"), if (bJ) | |
455 | 453 | then true | |
456 | - | else | |
457 | - | if (( | |
454 | + | else Y("pool hasn't WX_EMISSION label")] | |
455 | + | if ((bu == bu)) | |
458 | 456 | then { | |
459 | - | let | |
460 | - | let | |
461 | - | let | |
457 | + | let bK = aL(D) | |
458 | + | let V = toString(bj.caller) | |
459 | + | let bL = if (aU(bK, V)) | |
462 | 460 | then nil | |
463 | - | else | |
464 | - | $Tuple2(([IntegerEntry( | |
461 | + | else aY(bK, V) | |
462 | + | $Tuple2(([IntegerEntry(J(bj.caller, j), (bC + by)), IntegerEntry(L(D, bj.caller, j), bI), IntegerEntry(N(D, j), (bE + by)), IntegerEntry(T(j), (bF + by))] ++ bL), unit) | |
465 | 463 | } | |
466 | 464 | else throw("Strict value is not equal to itself.") | |
467 | 465 | } | |
468 | 466 | ||
469 | 467 | ||
470 | 468 | ||
471 | - | @Callable( | |
472 | - | func cancelVote (G | |
473 | - | let | |
474 | - | let | |
475 | - | let | |
476 | - | let | |
477 | - | let | |
478 | - | let | |
479 | - | let | |
480 | - | let | |
481 | - | let | |
482 | - | let | |
483 | - | let | |
469 | + | @Callable(bj) | |
470 | + | func cancelVote (F,G) = { | |
471 | + | let D = $Tuple2(F, G) | |
472 | + | let j = valueOrElse(getInteger(this, k), 0) | |
473 | + | let bz = ai(this, A(j)) | |
474 | + | let bt = ai(this, g) | |
475 | + | let bA = (bz + bt) | |
476 | + | let bB = getInteger(this, t) | |
477 | + | let bC = valueOrElse(getInteger(this, J(bj.caller, j)), 0) | |
478 | + | let bD = valueOrElse(getInteger(this, L(D, bj.caller, j)), 0) | |
479 | + | let bE = valueOrElse(getInteger(this, N(D, j)), 0) | |
480 | + | let bF = valueOrElse(getInteger(this, T(j)), 0) | |
481 | + | let bu = [if ((getBoolean(C(D)) != unit)) | |
484 | 482 | then true | |
485 | - | else | |
483 | + | else Y("invalid assets"), if ((bA > height)) | |
486 | 484 | then true | |
487 | - | else | |
485 | + | else Y("invalid height"), if ((bB == unit)) | |
488 | 486 | then true | |
489 | - | else | |
487 | + | else Y("finalization in progress"), if ((bD > 0)) | |
490 | 488 | then true | |
491 | - | else | |
492 | - | if (( | |
489 | + | else Y("no vote")] | |
490 | + | if ((bu == bu)) | |
493 | 491 | then { | |
494 | - | let | |
495 | - | let | |
496 | - | $Tuple2(([IntegerEntry( | |
492 | + | let bK = aL(D) | |
493 | + | let V = toString(bj.caller) | |
494 | + | $Tuple2(([IntegerEntry(J(bj.caller, j), max([(bC - bD), 0])), DeleteEntry(L(D, bj.caller, j)), IntegerEntry(N(D, j), (bE - bD)), IntegerEntry(T(j), (bF - bD))] ++ bb(bK, V)), unit) | |
497 | 495 | } | |
498 | 496 | else throw("Strict value is not equal to itself.") | |
499 | 497 | } | |
500 | 498 | ||
501 | 499 | ||
502 | 500 | ||
503 | - | @Callable( | |
504 | - | func setEpochLength ( | |
505 | - | let | |
501 | + | @Callable(bj) | |
502 | + | func setEpochLength (bM) = { | |
503 | + | let bu = [bl(bj), if ((bM > 0)) | |
506 | 504 | then true | |
507 | - | else | |
508 | - | if (( | |
509 | - | then $Tuple2([IntegerEntry( | |
505 | + | else Y("invalid epoch length")] | |
506 | + | if ((bu == bu)) | |
507 | + | then $Tuple2([IntegerEntry(h, bM)], unit) | |
510 | 508 | else throw("Strict value is not equal to itself.") | |
511 | 509 | } | |
512 | 510 | ||
513 | 511 | ||
514 | 512 | ||
515 | - | @Callable( | |
516 | - | func setMaxDepth ( | |
517 | - | let | |
513 | + | @Callable(bj) | |
514 | + | func setMaxDepth (bN) = { | |
515 | + | let bu = [bl(bj), if ((bN > 0)) | |
518 | 516 | then true | |
519 | - | else | |
520 | - | if (( | |
521 | - | then $Tuple2([IntegerEntry( | |
517 | + | else Y("invalid max depth")] | |
518 | + | if ((bu == bu)) | |
519 | + | then $Tuple2([IntegerEntry(l, bN)], unit) | |
522 | 520 | else throw("Strict value is not equal to itself.") | |
523 | 521 | } | |
524 | 522 | ||
525 | 523 | ||
526 | 524 | ||
527 | - | @Callable( | |
528 | - | func processPoolBalanceINTERNAL ( | |
529 | - | let | |
530 | - | if (( | |
525 | + | @Callable(bj) | |
526 | + | func processPoolBalanceINTERNAL (bO) = { | |
527 | + | let bP = bm(bj) | |
528 | + | if ((bP == bP)) | |
531 | 529 | then { | |
532 | - | let | |
533 | - | let | |
534 | - | let | |
535 | - | let | |
536 | - | let | |
537 | - | let | |
538 | - | let | |
539 | - | let | |
540 | - | let | |
541 | - | if ($isInstanceOf( | |
542 | - | then | |
543 | - | else throw(($getType( | |
530 | + | let j = ai(this, k) | |
531 | + | let bQ = (j - 1) | |
532 | + | let D = ak(bO) | |
533 | + | let bR = D | |
534 | + | let F = bR._1 | |
535 | + | let G = bR._2 | |
536 | + | let aF = av(F, G) | |
537 | + | let bS = { | |
538 | + | let ah = invoke(am, "checkBalance", [aF], nil) | |
539 | + | if ($isInstanceOf(ah, "Boolean")) | |
540 | + | then ah | |
541 | + | else throw(($getType(ah) + " couldn't be cast to Boolean")) | |
544 | 542 | } | |
545 | - | let | |
546 | - | let | |
547 | - | then if (!( | |
543 | + | let bT = !(valueOrElse(getBoolean(this, H(D, (bQ - 1))), false)) | |
544 | + | let bU = if (!(bS)) | |
545 | + | then if (!(bT)) | |
548 | 546 | then { | |
549 | - | let | |
550 | - | if (( | |
547 | + | let bV = invoke(am, "deleteWxEmissionPoolLabel", [F, G], nil) | |
548 | + | if ((bV == bV)) | |
551 | 549 | then { | |
552 | - | let | |
553 | - | if (( | |
550 | + | let bW = invoke(am, "modifyWeight", [aF, 0], nil) | |
551 | + | if ((bW == bW)) | |
554 | 552 | then { | |
555 | - | let | |
556 | - | let | |
557 | - | let | |
558 | - | if (( | |
553 | + | let bX = valueOrErrorMessage(at(F, G), W("invalid assets"))._1 | |
554 | + | let bY = 3 | |
555 | + | let bZ = invoke(am, "managePool", [toString(bX), bY], nil) | |
556 | + | if ((bZ == bZ)) | |
559 | 557 | then { | |
560 | - | let | |
561 | - | ([IntegerEntry( | |
558 | + | let ca = ([DeleteEntry(C(D))] ++ bb(aK, aj(D))) | |
559 | + | ([IntegerEntry(R(D, bQ), 0)] ++ ca) | |
562 | 560 | } | |
563 | 561 | else throw("Strict value is not equal to itself.") | |
564 | 562 | } | |
566 | 564 | } | |
567 | 565 | else throw("Strict value is not equal to itself.") | |
568 | 566 | } | |
569 | - | else [BooleanEntry( | |
567 | + | else [BooleanEntry(H(D, bQ), true)] | |
570 | 568 | else nil | |
571 | - | $Tuple2( | |
569 | + | $Tuple2(bU, unit) | |
572 | 570 | } | |
573 | 571 | else throw("Strict value is not equal to itself.") | |
574 | 572 | } | |
575 | 573 | ||
576 | 574 | ||
577 | 575 | ||
578 | - | @Callable( | |
579 | - | func processVoteINTERNAL ( | |
580 | - | let | |
581 | - | if (( | |
576 | + | @Callable(bj) | |
577 | + | func processVoteINTERNAL (bO,V) = { | |
578 | + | let bP = bm(bj) | |
579 | + | if ((bP == bP)) | |
582 | 580 | then { | |
583 | - | let | |
584 | - | let | |
585 | - | let | |
586 | - | let | |
587 | - | let | |
588 | - | let | |
589 | - | let | |
590 | - | let | |
591 | - | let | |
592 | - | let | |
581 | + | let bn = valueOrErrorMessage(addressFromString(V), W(("processVoteINTERNAL: invalid user address " + V))) | |
582 | + | let j = ai(this, k) | |
583 | + | let bQ = (j - 1) | |
584 | + | let bt = ai(this, g) | |
585 | + | let bz = ai(this, A(j)) | |
586 | + | let bA = (bz + bt) | |
587 | + | let cb = ai(this, A(bQ)) | |
588 | + | let cc = ai(this, i(bQ)) | |
589 | + | let cd = (cb + cc) | |
590 | + | let ce = if ((bQ >= 0)) | |
593 | 591 | then true | |
594 | - | else | |
595 | - | if (( | |
592 | + | else Y("processVoteINTERNAL: invalid previous epoch") | |
593 | + | if ((ce == ce)) | |
596 | 594 | then { | |
597 | - | let | |
598 | - | let | |
599 | - | let | |
600 | - | let | |
601 | - | let | |
602 | - | let | |
603 | - | if ($isInstanceOf( | |
604 | - | then | |
605 | - | else throw(($getType( | |
595 | + | let D = ak(bO) | |
596 | + | let cf = D | |
597 | + | let F = cf._1 | |
598 | + | let G = cf._2 | |
599 | + | let bG = { | |
600 | + | let ah = invoke(this, "getUserGwxAmountAtHeight", [V, bA], nil) | |
601 | + | if ($isInstanceOf(ah, "Int")) | |
602 | + | then ah | |
603 | + | else throw(($getType(ah) + " couldn't be cast to Int")) | |
606 | 604 | } | |
607 | - | let | |
608 | - | let | |
609 | - | if ($isInstanceOf( | |
610 | - | then | |
611 | - | else throw(($getType( | |
605 | + | let cg = { | |
606 | + | let ah = invoke(this, "getUserGwxAmountAtHeight", [V, cd], nil) | |
607 | + | if ($isInstanceOf(ah, "Int")) | |
608 | + | then ah | |
609 | + | else throw(($getType(ah) + " couldn't be cast to Int")) | |
612 | 610 | } | |
613 | - | let | |
614 | - | let | |
615 | - | let | |
616 | - | let | |
617 | - | let | |
618 | - | let | |
619 | - | let | |
620 | - | let | |
621 | - | let | |
611 | + | let bF = valueOrElse(getInteger(T(j)), 0) | |
612 | + | let ch = valueOrElse(getInteger(N(D, j)), 0) | |
613 | + | let ci = valueOrErrorMessage(getInteger(L(D, bn, bQ)), W((((("processVoteINTERNAL " + bO) + " ") + V) + ": no previous vote"))) | |
614 | + | let bC = valueOrElse(getInteger(this, J(bn, j)), 0) | |
615 | + | let Q = av(F, G) | |
616 | + | let cj = valueOrElse(getInteger(P(Q, bQ)), 0) | |
617 | + | let bs = addressFromStringValue(ag(this, r)) | |
618 | + | let ck = valueOrElse(getInteger(bs, U(Q, V)), 0) | |
619 | + | let cl = if ((ck == 0)) | |
622 | 620 | then nil | |
623 | - | else [IntegerEntry(Q | |
624 | - | let | |
625 | - | let | |
626 | - | then fraction( | |
621 | + | else [IntegerEntry(P(Q, bQ), (cj + ci))] | |
622 | + | let aF = av(F, G) | |
623 | + | let bI = if ((cg > 0)) | |
624 | + | then fraction(ci, bG, cg) | |
627 | 625 | else 0 | |
628 | - | let | |
629 | - | then [IntegerEntry( | |
630 | - | else | |
631 | - | $Tuple2(( | |
626 | + | let bU = if ((bI > 0)) | |
627 | + | then [IntegerEntry(L(D, bn, j), bI), IntegerEntry(T(j), (bF + bI)), IntegerEntry(N(D, j), (ch + bI)), IntegerEntry(J(bn, j), (bC + bI))] | |
628 | + | else bb(aL(D), V) | |
629 | + | $Tuple2((bU ++ cl), unit) | |
632 | 630 | } | |
633 | 631 | else throw("Strict value is not equal to itself.") | |
634 | 632 | } | |
637 | 635 | ||
638 | 636 | ||
639 | 637 | ||
640 | - | @Callable( | |
641 | - | func processPoolINTERNAL ( | |
642 | - | let | |
643 | - | if (( | |
638 | + | @Callable(bj) | |
639 | + | func processPoolINTERNAL (bO,cm) = { | |
640 | + | let bP = bm(bj) | |
641 | + | if ((bP == bP)) | |
644 | 642 | then { | |
645 | - | let | |
646 | - | let | |
647 | - | if ( | |
648 | - | then | |
649 | - | else ( | |
643 | + | let cn = { | |
644 | + | let co = ai(this, k) | |
645 | + | if (cm) | |
646 | + | then co | |
647 | + | else (co - 1) | |
650 | 648 | } | |
651 | - | let | |
649 | + | let ce = if ((cn >= 0)) | |
652 | 650 | then true | |
653 | - | else | |
654 | - | if (( | |
651 | + | else Y("processPoolINTERNAL: invalid target epoch") | |
652 | + | if ((ce == ce)) | |
655 | 653 | then { | |
656 | - | let | |
657 | - | let | |
658 | - | let | |
659 | - | let | |
660 | - | let | |
661 | - | let | |
662 | - | let | |
663 | - | let | |
664 | - | if ($isInstanceOf( | |
665 | - | then | |
666 | - | else throw(($getType( | |
654 | + | let D = ak(bO) | |
655 | + | let cp = D | |
656 | + | let F = cp._1 | |
657 | + | let G = cp._2 | |
658 | + | let bs = addressFromStringValue(ag(this, r)) | |
659 | + | let aF = av(F, G) | |
660 | + | let cq = { | |
661 | + | let ah = invoke(bs, "usersListTraversal", [aF], nil) | |
662 | + | if ($isInstanceOf(ah, "Boolean")) | |
663 | + | then ah | |
664 | + | else throw(($getType(ah) + " couldn't be cast to Boolean")) | |
667 | 665 | } | |
668 | - | if (( | |
669 | - | then if ( | |
666 | + | if ((cq == cq)) | |
667 | + | then if (cq) | |
670 | 668 | then $Tuple2(nil, true) | |
671 | 669 | else { | |
672 | - | let | |
673 | - | let | |
674 | - | let | |
675 | - | let | |
670 | + | let cr = addressFromStringValue(valueOrErrorMessage(getString(am, s), "invalid assets store contract")) | |
671 | + | let bF = valueOrElse(getInteger(this, T(cn)), 0) | |
672 | + | let ch = valueOrElse(getInteger(this, N(D, cn)), 0) | |
673 | + | let cs = if ((bF == 0)) | |
676 | 674 | then 0 | |
677 | - | else fraction( | |
678 | - | let | |
679 | - | if (( | |
680 | - | then $Tuple2([IntegerEntry( | |
675 | + | else fraction(ch, b, bF) | |
676 | + | let bW = invoke(am, "modifyWeight", [aF, cs], nil) | |
677 | + | if ((bW == bW)) | |
678 | + | then $Tuple2([IntegerEntry(R(D, cn), cs)], false) | |
681 | 679 | else throw("Strict value is not equal to itself.") | |
682 | 680 | } | |
683 | 681 | else throw("Strict value is not equal to itself.") | |
689 | 687 | ||
690 | 688 | ||
691 | 689 | ||
692 | - | @Callable( | |
690 | + | @Callable(bj) | |
693 | 691 | func finalizeHelper () = { | |
694 | - | let | |
695 | - | let | |
696 | - | let | |
697 | - | let | |
698 | - | let | |
699 | - | let | |
700 | - | let | |
701 | - | if (if (if ((height >= | |
702 | - | then ( | |
692 | + | let cm = valueOrElse(getBoolean(z), false) | |
693 | + | let j = valueOrElse(getInteger(this, k), 0) | |
694 | + | let ct = (j - 1) | |
695 | + | let bz = ai(this, A(j)) | |
696 | + | let bt = ai(this, g) | |
697 | + | let bA = (bz + bt) | |
698 | + | let bB = getInteger(this, t) | |
699 | + | if (if (if ((height >= bA)) | |
700 | + | then (bB == unit) | |
703 | 701 | else false) | |
704 | - | then !( | |
702 | + | then !(cm) | |
705 | 703 | else false) | |
706 | 704 | then { | |
707 | - | let | |
708 | - | let | |
709 | - | let | |
710 | - | let | |
711 | - | if ($isInstanceOf( | |
705 | + | let cu = (j + 1) | |
706 | + | let cv = getInteger(this, h) | |
707 | + | let cw = { | |
708 | + | let ad = cv | |
709 | + | if ($isInstanceOf(ad, "Int")) | |
712 | 710 | then { | |
713 | - | let | |
714 | - | [IntegerEntry( | |
711 | + | let bM = ad | |
712 | + | [IntegerEntry(g, bM), DeleteEntry(h)] | |
715 | 713 | } | |
716 | - | else if ($isInstanceOf( | |
714 | + | else if ($isInstanceOf(ad, "Unit")) | |
717 | 715 | then nil | |
718 | 716 | else throw("Match error") | |
719 | 717 | } | |
720 | - | $Tuple2(([IntegerEntry( | |
718 | + | $Tuple2(([IntegerEntry(A(cu), height), IntegerEntry(w, height), IntegerEntry(k, cu), IntegerEntry(t, d), IntegerEntry(i(j), bt)] ++ cw), true) | |
721 | 719 | } | |
722 | - | else if (if ( | |
723 | - | then ( | |
720 | + | else if (if (cm) | |
721 | + | then (bB == unit) | |
724 | 722 | else false) | |
725 | - | then $Tuple2([IntegerEntry( | |
726 | - | else if (( | |
723 | + | then $Tuple2([IntegerEntry(t, f)], true) | |
724 | + | else if ((bB == unit)) | |
727 | 725 | then $Tuple2(nil, false) | |
728 | - | else if (( | |
726 | + | else if ((bB == d)) | |
729 | 727 | then { | |
730 | - | let | |
731 | - | let | |
732 | - | if ($isInstanceOf( | |
728 | + | let cx = getString(u) | |
729 | + | let ad = cx | |
730 | + | if ($isInstanceOf(ad, "Unit")) | |
733 | 731 | then { | |
734 | - | let | |
735 | - | if ($isInstanceOf( | |
736 | - | then $Tuple2([IntegerEntry( | |
737 | - | else if ($isInstanceOf( | |
732 | + | let cy = getString(aN(aK)) | |
733 | + | if ($isInstanceOf(cy, "Unit")) | |
734 | + | then $Tuple2([IntegerEntry(t, e), DeleteEntry(u)], true) | |
735 | + | else if ($isInstanceOf(cy, "String")) | |
738 | 736 | then { | |
739 | - | let | |
740 | - | $Tuple2([StringEntry( | |
737 | + | let cz = cy | |
738 | + | $Tuple2([StringEntry(u, cz)], true) | |
741 | 739 | } | |
742 | 740 | else throw("Match error") | |
743 | 741 | } | |
744 | - | else if ($isInstanceOf( | |
742 | + | else if ($isInstanceOf(ad, "String")) | |
745 | 743 | then { | |
746 | - | let | |
747 | - | let | |
748 | - | if (( | |
744 | + | let bO = ad | |
745 | + | let cA = getString(aT(aK, bO)) | |
746 | + | if ((cA == cA)) | |
749 | 747 | then { | |
750 | - | let | |
751 | - | if (( | |
748 | + | let cq = invoke(this, "processPoolBalanceINTERNAL", [bO], nil) | |
749 | + | if ((cq == cq)) | |
752 | 750 | then { | |
753 | - | let | |
754 | - | if ($isInstanceOf( | |
755 | - | then $Tuple2([IntegerEntry( | |
756 | - | else if ($isInstanceOf( | |
751 | + | let cy = cA | |
752 | + | if ($isInstanceOf(cy, "Unit")) | |
753 | + | then $Tuple2([IntegerEntry(t, e), DeleteEntry(u)], true) | |
754 | + | else if ($isInstanceOf(cy, "String")) | |
757 | 755 | then { | |
758 | - | let | |
759 | - | $Tuple2([StringEntry( | |
756 | + | let cz = cy | |
757 | + | $Tuple2([StringEntry(u, cz)], true) | |
760 | 758 | } | |
761 | 759 | else throw("Match error") | |
762 | 760 | } | |
766 | 764 | } | |
767 | 765 | else throw("Match error") | |
768 | 766 | } | |
769 | - | else if (( | |
767 | + | else if ((bB == e)) | |
770 | 768 | then { | |
771 | - | let | |
772 | - | let | |
773 | - | let | |
774 | - | if ($isInstanceOf( | |
769 | + | let cx = getString(u) | |
770 | + | let cB = getString(v) | |
771 | + | let ad = cx | |
772 | + | if ($isInstanceOf(ad, "Unit")) | |
775 | 773 | then { | |
776 | - | let | |
777 | - | if ($isInstanceOf( | |
778 | - | then $Tuple2([IntegerEntry( | |
779 | - | else if ($isInstanceOf( | |
774 | + | let cy = getString(aN(aK)) | |
775 | + | if ($isInstanceOf(cy, "Unit")) | |
776 | + | then $Tuple2([IntegerEntry(t, f), DeleteEntry(u), DeleteEntry(v)], true) | |
777 | + | else if ($isInstanceOf(cy, "String")) | |
780 | 778 | then { | |
781 | - | let | |
782 | - | $Tuple2([StringEntry( | |
779 | + | let cC = cy | |
780 | + | $Tuple2([StringEntry(u, cC)], true) | |
783 | 781 | } | |
784 | 782 | else throw("Match error") | |
785 | 783 | } | |
786 | - | else if ($isInstanceOf( | |
784 | + | else if ($isInstanceOf(ad, "String")) | |
787 | 785 | then { | |
788 | - | let | |
789 | - | let | |
790 | - | let | |
791 | - | let | |
792 | - | if ($isInstanceOf( | |
793 | - | then getString( | |
794 | - | else if ($isInstanceOf( | |
786 | + | let bO = ad | |
787 | + | let D = ak(bO) | |
788 | + | let cD = { | |
789 | + | let cy = cB | |
790 | + | if ($isInstanceOf(cy, "Unit")) | |
791 | + | then getString(aN(aL(D))) | |
792 | + | else if ($isInstanceOf(cy, "String")) | |
795 | 793 | then { | |
796 | - | let | |
797 | - | let | |
798 | - | if (( | |
794 | + | let cE = cy | |
795 | + | let cF = getString(aT(aL(D), cE)) | |
796 | + | if ((cF == cF)) | |
799 | 797 | then { | |
800 | - | let | |
801 | - | if (( | |
802 | - | then | |
798 | + | let cG = invoke(this, "processVoteINTERNAL", [bO, cE], nil) | |
799 | + | if ((cG == cG)) | |
800 | + | then cF | |
803 | 801 | else throw("Strict value is not equal to itself.") | |
804 | 802 | } | |
805 | 803 | else throw("Strict value is not equal to itself.") | |
806 | 804 | } | |
807 | 805 | else throw("Match error") | |
808 | 806 | } | |
809 | - | let | |
810 | - | if ($isInstanceOf( | |
807 | + | let cy = cD | |
808 | + | if ($isInstanceOf(cy, "Unit")) | |
811 | 809 | then { | |
812 | - | let | |
813 | - | let | |
814 | - | if ($isInstanceOf( | |
815 | - | then $Tuple2([IntegerEntry( | |
816 | - | else if ($isInstanceOf( | |
810 | + | let cA = getString(aT(aK, bO)) | |
811 | + | let cH = cA | |
812 | + | if ($isInstanceOf(cH, "Unit")) | |
813 | + | then $Tuple2([IntegerEntry(t, f), DeleteEntry(u), DeleteEntry(v)], true) | |
814 | + | else if ($isInstanceOf(cH, "String")) | |
817 | 815 | then { | |
818 | - | let | |
819 | - | $Tuple2([StringEntry( | |
816 | + | let bf = cH | |
817 | + | $Tuple2([StringEntry(u, bf), DeleteEntry(v)], true) | |
820 | 818 | } | |
821 | 819 | else throw("Match error") | |
822 | 820 | } | |
823 | - | else if ($isInstanceOf( | |
821 | + | else if ($isInstanceOf(cy, "String")) | |
824 | 822 | then { | |
825 | - | let | |
826 | - | $Tuple2([StringEntry( | |
823 | + | let cI = cy | |
824 | + | $Tuple2([StringEntry(v, cI)], true) | |
827 | 825 | } | |
828 | 826 | else throw("Match error") | |
829 | 827 | } | |
830 | 828 | else throw("Match error") | |
831 | 829 | } | |
832 | - | else if (( | |
830 | + | else if ((bB == f)) | |
833 | 831 | then { | |
834 | - | let | |
835 | - | let | |
836 | - | if ($isInstanceOf( | |
832 | + | let cx = getString(u) | |
833 | + | let ad = cx | |
834 | + | if ($isInstanceOf(ad, "Unit")) | |
837 | 835 | then { | |
838 | - | let | |
839 | - | if ($isInstanceOf( | |
836 | + | let cy = getString(aN(aK)) | |
837 | + | if ($isInstanceOf(cy, "Unit")) | |
840 | 838 | then { | |
841 | - | let | |
842 | - | then [DeleteEntry( | |
843 | - | else [DeleteEntry( | |
844 | - | let | |
845 | - | if (( | |
846 | - | then $Tuple2( | |
839 | + | let bU = if (cm) | |
840 | + | then [DeleteEntry(t), DeleteEntry(z)] | |
841 | + | else [DeleteEntry(t), BooleanEntry(B(ct), true), IntegerEntry(x, j), IntegerEntry(y, bz)] | |
842 | + | let cJ = aI() | |
843 | + | if ((cJ == cJ)) | |
844 | + | then $Tuple2(bU, true) | |
847 | 845 | else throw("Strict value is not equal to itself.") | |
848 | 846 | } | |
849 | - | else if ($isInstanceOf( | |
847 | + | else if ($isInstanceOf(cy, "String")) | |
850 | 848 | then { | |
851 | - | let | |
852 | - | $Tuple2([StringEntry( | |
849 | + | let cz = cy | |
850 | + | $Tuple2([StringEntry(u, cz)], true) | |
853 | 851 | } | |
854 | 852 | else throw("Match error") | |
855 | 853 | } | |
856 | - | else if ($isInstanceOf( | |
854 | + | else if ($isInstanceOf(ad, "String")) | |
857 | 855 | then { | |
858 | - | let | |
859 | - | let | |
860 | - | if (( | |
856 | + | let bO = ad | |
857 | + | let cA = getString(aT(aK, bO)) | |
858 | + | if ((cA == cA)) | |
861 | 859 | then { | |
862 | - | let | |
863 | - | let | |
864 | - | if ($isInstanceOf( | |
865 | - | then | |
866 | - | else throw(($getType( | |
860 | + | let cq = { | |
861 | + | let ah = invoke(this, "processPoolINTERNAL", [bO, cm], nil) | |
862 | + | if ($isInstanceOf(ah, "Boolean")) | |
863 | + | then ah | |
864 | + | else throw(($getType(ah) + " couldn't be cast to Boolean")) | |
867 | 865 | } | |
868 | - | if (( | |
869 | - | then if ( | |
866 | + | if ((cq == cq)) | |
867 | + | then if (cq) | |
870 | 868 | then $Tuple2(nil, true) | |
871 | 869 | else { | |
872 | - | let | |
873 | - | if ($isInstanceOf( | |
870 | + | let cy = cA | |
871 | + | if ($isInstanceOf(cy, "Unit")) | |
874 | 872 | then { | |
875 | - | let | |
876 | - | then [DeleteEntry( | |
877 | - | else [DeleteEntry( | |
878 | - | let | |
879 | - | if (( | |
880 | - | then $Tuple2( | |
873 | + | let bU = if (cm) | |
874 | + | then [DeleteEntry(t), DeleteEntry(z), DeleteEntry(u)] | |
875 | + | else [DeleteEntry(t), BooleanEntry(B(ct), true), IntegerEntry(x, j), IntegerEntry(y, bz), DeleteEntry(u)] | |
876 | + | let cJ = aI() | |
877 | + | if ((cJ == cJ)) | |
878 | + | then $Tuple2(bU, true) | |
881 | 879 | else throw("Strict value is not equal to itself.") | |
882 | 880 | } | |
883 | - | else if ($isInstanceOf( | |
881 | + | else if ($isInstanceOf(cy, "String")) | |
884 | 882 | then { | |
885 | - | let | |
886 | - | $Tuple2([StringEntry( | |
883 | + | let cz = cy | |
884 | + | $Tuple2([StringEntry(u, cz)], true) | |
887 | 885 | } | |
888 | 886 | else throw("Match error") | |
889 | 887 | } | |
893 | 891 | } | |
894 | 892 | else throw("Match error") | |
895 | 893 | } | |
896 | - | else | |
894 | + | else Y("finalization is broken") | |
897 | 895 | } | |
898 | 896 | ||
899 | 897 | ||
900 | 898 | ||
901 | - | @Callable( | |
902 | - | func finalizeWrapper ( | |
903 | - | let | |
904 | - | let | |
905 | - | let | |
906 | - | if ($isInstanceOf( | |
907 | - | then | |
908 | - | else throw(($getType( | |
899 | + | @Callable(bj) | |
900 | + | func finalizeWrapper (cK) = { | |
901 | + | let cL = addressFromStringValue(getStringValue(this, o)) | |
902 | + | let cM = { | |
903 | + | let ah = invoke(this, "finalizeHelper", nil, nil) | |
904 | + | if ($isInstanceOf(ah, "Boolean")) | |
905 | + | then ah | |
906 | + | else throw(($getType(ah) + " couldn't be cast to Boolean")) | |
909 | 907 | } | |
910 | - | if (( | |
911 | - | then if (!( | |
912 | - | then if (( | |
913 | - | then | |
908 | + | if ((cM == cM)) | |
909 | + | then if (!(cM)) | |
910 | + | then if ((cK == 0)) | |
911 | + | then Y("Current voting is not over yet") | |
914 | 912 | else { | |
915 | - | let | |
916 | - | if (( | |
913 | + | let cN = invoke(cL, "finalize", nil, nil) | |
914 | + | if ((cN == cN)) | |
917 | 915 | then $Tuple2(nil, unit) | |
918 | 916 | else throw("Strict value is not equal to itself.") | |
919 | 917 | } | |
920 | 918 | else { | |
921 | - | let | |
922 | - | if (( | |
919 | + | let cO = valueOrElse(getInteger(this, l), c) | |
920 | + | if ((cO > cK)) | |
923 | 921 | then { | |
924 | - | let | |
925 | - | if (( | |
922 | + | let cN = invoke(this, "finalizeWrapper", [(cK + 1)], nil) | |
923 | + | if ((cN == cN)) | |
926 | 924 | then $Tuple2(nil, unit) | |
927 | 925 | else throw("Strict value is not equal to itself.") | |
928 | 926 | } | |
933 | 931 | ||
934 | 932 | ||
935 | 933 | ||
936 | - | @Callable( | |
934 | + | @Callable(bj) | |
937 | 935 | func finalize () = { | |
938 | - | let | |
939 | - | if (( | |
936 | + | let cN = invoke(this, "finalizeWrapper", [0], nil) | |
937 | + | if ((cN == cN)) | |
940 | 938 | then $Tuple2(nil, unit) | |
941 | 939 | else throw("Strict value is not equal to itself.") | |
942 | 940 | } | |
943 | 941 | ||
944 | 942 | ||
945 | 943 | ||
946 | - | @Callable( | |
947 | - | func containsNodeREADONLY ( | |
944 | + | @Callable(bj) | |
945 | + | func containsNodeREADONLY (aO,aS) = $Tuple2(nil, aU(aO, aS)) | |
948 | 946 | ||
949 | 947 | ||
950 | 948 | ||
951 | - | @Callable( | |
952 | - | func insertNode ( | |
953 | - | let | |
954 | - | if (( | |
955 | - | then $Tuple2( | |
949 | + | @Callable(bj) | |
950 | + | func insertNode (aO,aS) = { | |
951 | + | let bP = bl(bj) | |
952 | + | if ((bP == bP)) | |
953 | + | then $Tuple2(aY(aO, aS), unit) | |
956 | 954 | else throw("Strict value is not equal to itself.") | |
957 | 955 | } | |
958 | 956 | ||
959 | 957 | ||
960 | 958 | ||
961 | - | @Callable( | |
962 | - | func deleteNode ( | |
963 | - | let | |
964 | - | if (( | |
965 | - | then $Tuple2( | |
959 | + | @Callable(bj) | |
960 | + | func deleteNode (aO,aS) = { | |
961 | + | let bP = bl(bj) | |
962 | + | if ((bP == bP)) | |
963 | + | then $Tuple2(bb(aO, aS), unit) | |
966 | 964 | else throw("Strict value is not equal to itself.") | |
967 | 965 | } | |
968 | 966 | ||
969 | 967 | ||
970 | 968 | ||
971 | - | @Callable( | |
969 | + | @Callable(bj) | |
972 | 970 | func isFinalizationInProgress () = { | |
973 | - | let | |
974 | - | let | |
975 | - | $Tuple2(nil, | |
971 | + | let bB = getInteger(this, t) | |
972 | + | let cP = (bB != unit) | |
973 | + | $Tuple2(nil, cP) | |
976 | 974 | } | |
977 | 975 | ||
978 | 976 | ||
979 | 977 | ||
980 | - | @Callable( | |
981 | - | func deletePool (G | |
982 | - | let | |
978 | + | @Callable(bj) | |
979 | + | func deletePool (F,G) = { | |
980 | + | let bP = if (if ((bj.caller == am)) | |
983 | 981 | then true | |
984 | - | else | |
982 | + | else bl(bj)) | |
985 | 983 | then true | |
986 | - | else | |
987 | - | if (( | |
984 | + | else Y("Permission denied") | |
985 | + | if ((bP == bP)) | |
988 | 986 | then { | |
989 | - | let | |
990 | - | let | |
991 | - | let | |
992 | - | let | |
993 | - | then | |
987 | + | let aO = "pools" | |
988 | + | let D = $Tuple2(F, G) | |
989 | + | let aS = makeString([F, G], a) | |
990 | + | let bU = if (aU(aO, aS)) | |
991 | + | then bb(aO, aS) | |
994 | 992 | else nil | |
995 | - | ([DeleteEntry(D | |
993 | + | ([DeleteEntry(C(D))] ++ bU) | |
996 | 994 | } | |
997 | 995 | else throw("Strict value is not equal to itself.") | |
998 | 996 | } | |
999 | 997 | ||
1000 | 998 | ||
1001 | 999 | ||
1002 | - | @Callable( | |
1003 | - | func resume (G | |
1004 | - | let | |
1005 | - | let | |
1006 | - | let | |
1007 | - | if ($isInstanceOf( | |
1008 | - | then | |
1009 | - | else throw(($getType( | |
1000 | + | @Callable(bj) | |
1001 | + | func resume (F,G) = { | |
1002 | + | let aF = av(F, G) | |
1003 | + | let cQ = { | |
1004 | + | let ah = invoke(am, "checkBalance", [aF], nil) | |
1005 | + | if ($isInstanceOf(ah, "Boolean")) | |
1006 | + | then ah | |
1007 | + | else throw(($getType(ah) + " couldn't be cast to Boolean")) | |
1010 | 1008 | } | |
1011 | - | let cS = bk.payments[0] | |
1012 | - | let cs = addressFromStringValue(getStringValue(this, t)) | |
1013 | - | let cT = "%s__config" | |
1014 | - | let cU = 1 | |
1015 | - | let bs = addressFromStringValue(ah(this, r)) | |
1016 | - | let cV = fromBase58String(split(getStringValue(bs, cT), a)[cU]) | |
1009 | + | let cR = bj.payments[0] | |
1010 | + | let cr = addressFromStringValue(getStringValue(this, s)) | |
1011 | + | let cS = "%s__config" | |
1012 | + | let cT = 1 | |
1013 | + | let br = addressFromStringValue(ag(this, q)) | |
1014 | + | let cU = fromBase58String(split(getStringValue(br, cS), a)[cT]) | |
1015 | + | let cV = { | |
1016 | + | let ah = invoke(cr, "isVerifiedREADONLY", [F], nil) | |
1017 | + | if ($isInstanceOf(ah, "Boolean")) | |
1018 | + | then ah | |
1019 | + | else throw(($getType(ah) + " couldn't be cast to Boolean")) | |
1020 | + | } | |
1017 | 1021 | let cW = { | |
1018 | - | let | |
1019 | - | if ($isInstanceOf( | |
1020 | - | then | |
1021 | - | else throw(($getType( | |
1022 | + | let ah = invoke(cr, "isVerifiedREADONLY", [G], nil) | |
1023 | + | if ($isInstanceOf(ah, "Boolean")) | |
1024 | + | then ah | |
1025 | + | else throw(($getType(ah) + " couldn't be cast to Boolean")) | |
1022 | 1026 | } | |
1023 | - | let cX = { | |
1024 | - | let ai = invoke(cs, "isVerifiedREADONLY", [H], nil) | |
1025 | - | if ($isInstanceOf(ai, "Boolean")) | |
1026 | - | then ai | |
1027 | - | else throw(($getType(ai) + " couldn't be cast to Boolean")) | |
1028 | - | } | |
1029 | - | let cY = valueOrElse(getInteger(this, n), g) | |
1030 | - | let bv = [if (cR) | |
1027 | + | let cX = valueOrErrorMessage(getInteger(this, m), "invalid resumption fee") | |
1028 | + | let bu = [if (cQ) | |
1031 | 1029 | then true | |
1032 | - | else | |
1030 | + | else Y("insufficient balances"), if ((size(bj.payments) == 1)) | |
1033 | 1031 | then true | |
1034 | - | else | |
1032 | + | else Y("1 payment is required"), if ((cR.assetId == cU)) | |
1035 | 1033 | then true | |
1036 | - | else | |
1034 | + | else Y("invalid payment asset id"), if ((cR.amount == cX)) | |
1037 | 1035 | then true | |
1038 | - | else | |
1039 | - | then | |
1036 | + | else Y("invalid payment amount"), if (if (cV) | |
1037 | + | then cW | |
1040 | 1038 | else false) | |
1041 | 1039 | then true | |
1042 | - | else | |
1043 | - | if (( | |
1040 | + | else Y("both assets should be verified")] | |
1041 | + | if ((bu == bu)) | |
1044 | 1042 | then { | |
1045 | - | let | |
1046 | - | if (( | |
1043 | + | let cY = invoke(am, "setWxEmissionPoolLabel", [F, G], nil) | |
1044 | + | if ((cY == cY)) | |
1047 | 1045 | then { | |
1048 | - | let | |
1049 | - | let | |
1050 | - | $Tuple2( | |
1046 | + | let D = $Tuple2(F, G) | |
1047 | + | let bv = ([BooleanEntry(C(D), true)] ++ aY(aK, aj(D))) | |
1048 | + | $Tuple2(bv, unit) | |
1051 | 1049 | } | |
1052 | 1050 | else throw("Strict value is not equal to itself.") | |
1053 | 1051 | } | |
1055 | 1053 | } | |
1056 | 1054 | ||
1057 | 1055 | ||
1058 | - | @Verifier( | |
1059 | - | func | |
1060 | - | let | |
1061 | - | let | |
1062 | - | if ($isInstanceOf( | |
1056 | + | @Verifier(cZ) | |
1057 | + | func da () = { | |
1058 | + | let db = { | |
1059 | + | let ad = bg() | |
1060 | + | if ($isInstanceOf(ad, "ByteVector")) | |
1063 | 1061 | then { | |
1064 | - | let | |
1065 | - | | |
1062 | + | let bk = ad | |
1063 | + | bk | |
1066 | 1064 | } | |
1067 | - | else if ($isInstanceOf( | |
1068 | - | then | |
1065 | + | else if ($isInstanceOf(ad, "Unit")) | |
1066 | + | then cZ.senderPublicKey | |
1069 | 1067 | else throw("Match error") | |
1070 | 1068 | } | |
1071 | - | sigVerify( | |
1069 | + | sigVerify(cZ.bodyBytes, cZ.proofs[0], db) | |
1072 | 1070 | } | |
1073 | 1071 |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 6 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | let a = "__" | |
5 | 5 | ||
6 | 6 | let b = 100000000 | |
7 | 7 | ||
8 | 8 | let c = 10 | |
9 | 9 | ||
10 | 10 | let d = 0 | |
11 | 11 | ||
12 | 12 | let e = 1 | |
13 | 13 | ||
14 | 14 | let f = 2 | |
15 | 15 | ||
16 | - | let g = | |
16 | + | let g = makeString(["%s", "epochLength"], a) | |
17 | 17 | ||
18 | - | let h = makeString(["%s", "epochLength"], a) | |
18 | + | let h = makeString(["%s%s", "epochLength__new"], a) | |
19 | 19 | ||
20 | - | let i = makeString(["%s%s", "epochLength__new"], a) | |
21 | - | ||
22 | - | func j (k) = makeString(["%s%d", "epochLength", toString(k)], a) | |
20 | + | func i (j) = makeString(["%s%d", "epochLength", toString(j)], a) | |
23 | 21 | ||
24 | 22 | ||
25 | - | let | |
23 | + | let k = makeString(["%s", "currentEpoch"], a) | |
26 | 24 | ||
27 | - | let | |
25 | + | let l = makeString(["%s", "maxDepth"], a) | |
28 | 26 | ||
29 | - | let | |
27 | + | let m = makeString(["%s", "resumptionFee"], a) | |
30 | 28 | ||
31 | - | let | |
29 | + | let n = makeString(["%s", "votingEmissionCandidateContract"], a) | |
32 | 30 | ||
33 | - | let | |
31 | + | let o = makeString(["%s", "votingEmissionRateContract"], a) | |
34 | 32 | ||
35 | - | let | |
33 | + | let p = makeString(["%s", "factoryContract"], a) | |
36 | 34 | ||
37 | - | let | |
35 | + | let q = makeString(["%s", "boostingContract"], a) | |
38 | 36 | ||
39 | - | let | |
37 | + | let r = makeString(["%s", "stakingContract"], a) | |
40 | 38 | ||
41 | - | let | |
39 | + | let s = makeString(["%s", "assetsStoreContract"], a) | |
42 | 40 | ||
43 | - | let | |
41 | + | let t = makeString(["%s", "finalizationStage"], a) | |
44 | 42 | ||
45 | - | let | |
43 | + | let u = makeString(["%s", "nextPool"], a) | |
46 | 44 | ||
47 | - | let | |
45 | + | let v = makeString(["%s", "nextUser"], a) | |
48 | 46 | ||
49 | - | let | |
47 | + | let w = makeString(["%s", "startHeight"], a) | |
50 | 48 | ||
51 | - | let | |
49 | + | let x = makeString(["%s", "currentEpochUi"], a) | |
52 | 50 | ||
53 | - | let | |
51 | + | let y = makeString(["%s", "startHeightUi"], a) | |
54 | 52 | ||
55 | - | let | |
53 | + | let z = makeString(["%s", "force"], a) | |
56 | 54 | ||
57 | - | func | |
55 | + | func A (j) = makeString(["%s%d", "startHeight", toString(j)], a) | |
58 | 56 | ||
59 | 57 | ||
60 | - | func | |
58 | + | func B (j) = makeString(["%s%d", "finalized", toString(j)], a) | |
61 | 59 | ||
62 | 60 | ||
63 | - | func | |
64 | - | let | |
65 | - | let | |
66 | - | let | |
67 | - | makeString(["%s%s%s", "inList", | |
61 | + | func C (D) = { | |
62 | + | let E = D | |
63 | + | let F = E._1 | |
64 | + | let G = E._2 | |
65 | + | makeString(["%s%s%s", "inList", F, G], a) | |
68 | 66 | } | |
69 | 67 | ||
70 | 68 | ||
71 | - | func | |
72 | - | let | |
73 | - | let | |
74 | - | let | |
75 | - | makeString(["%s%s%s%d", "insufficientBalances", | |
69 | + | func H (D,j) = { | |
70 | + | let I = D | |
71 | + | let F = I._1 | |
72 | + | let G = I._2 | |
73 | + | makeString(["%s%s%s%d", "insufficientBalances", F, G, toString(j)], a) | |
76 | 74 | } | |
77 | 75 | ||
78 | 76 | ||
79 | - | func | |
77 | + | func J (K,j) = makeString(["%s%s%d", "used", toString(K), toString(j)], a) | |
80 | 78 | ||
81 | 79 | ||
82 | - | func | |
83 | - | let | |
84 | - | let | |
85 | - | let | |
86 | - | makeString(["%s%s%s%s%d", "vote", | |
80 | + | func L (D,K,j) = { | |
81 | + | let M = D | |
82 | + | let F = M._1 | |
83 | + | let G = M._2 | |
84 | + | makeString(["%s%s%s%s%d", "vote", F, G, toString(K), toString(j)], a) | |
87 | 85 | } | |
88 | 86 | ||
89 | 87 | ||
90 | - | func | |
91 | - | let | |
92 | - | let | |
93 | - | let | |
94 | - | makeString(["%s%s%s%d", "votingResult", | |
88 | + | func N (D,j) = { | |
89 | + | let O = D | |
90 | + | let F = O._1 | |
91 | + | let G = O._2 | |
92 | + | makeString(["%s%s%s%d", "votingResult", F, G, toString(j)], a) | |
95 | 93 | } | |
96 | 94 | ||
97 | 95 | ||
98 | - | func | |
96 | + | func P (Q,j) = makeString(["%s%s%d", "votingResultStaked", Q, toString(j)], a) | |
99 | 97 | ||
100 | 98 | ||
101 | - | func | |
102 | - | let | |
103 | - | let | |
104 | - | let | |
105 | - | makeString(["%s%s%s%d", "poolShare", | |
99 | + | func R (D,j) = { | |
100 | + | let S = D | |
101 | + | let F = S._1 | |
102 | + | let G = S._2 | |
103 | + | makeString(["%s%s%s%d", "poolShare", F, G, toString(j)], a) | |
106 | 104 | } | |
107 | 105 | ||
108 | 106 | ||
109 | - | func | |
107 | + | func T (j) = makeString(["%s%d", "totalVotes", toString(j)], a) | |
110 | 108 | ||
111 | 109 | ||
112 | - | func | |
110 | + | func U (Q,V) = makeString(["%s%s%s", "staked", V, Q], a) | |
113 | 111 | ||
114 | 112 | ||
115 | - | func | |
113 | + | func W (X) = makeString(["voting_emission.ride:", X], " ") | |
116 | 114 | ||
117 | 115 | ||
118 | - | func | |
116 | + | func Y (X) = throw(W(X)) | |
119 | 117 | ||
120 | 118 | ||
121 | - | func | |
122 | - | let | |
119 | + | func Z (K,aa,ab) = { | |
120 | + | let ac = W(makeString(["mandatory ", toString(K), ".", aa, " is not defined"], "")) | |
123 | 121 | valueOrErrorMessage({ | |
124 | - | let | |
125 | - | if ($isInstanceOf( | |
122 | + | let ad = ab | |
123 | + | if ($isInstanceOf(ad, "String")) | |
126 | 124 | then { | |
127 | - | let | |
128 | - | getString( | |
125 | + | let ae = ad | |
126 | + | getString(K, aa) | |
129 | 127 | } | |
130 | - | else if ($isInstanceOf( | |
128 | + | else if ($isInstanceOf(ad, "Int")) | |
131 | 129 | then { | |
132 | - | let | |
133 | - | getInteger( | |
130 | + | let af = ad | |
131 | + | getInteger(K, aa) | |
134 | 132 | } | |
135 | - | else | |
136 | - | }, | |
133 | + | else Y("invalid entry type") | |
134 | + | }, ac) | |
137 | 135 | } | |
138 | 136 | ||
139 | 137 | ||
140 | - | func | |
141 | - | let | |
142 | - | if ($isInstanceOf( | |
143 | - | then | |
144 | - | else throw(($getType( | |
138 | + | func ag (K,aa) = { | |
139 | + | let ah = Z(K, aa, "") | |
140 | + | if ($isInstanceOf(ah, "String")) | |
141 | + | then ah | |
142 | + | else throw(($getType(ah) + " couldn't be cast to String")) | |
145 | 143 | } | |
146 | 144 | ||
147 | 145 | ||
148 | - | func | |
149 | - | let | |
150 | - | if ($isInstanceOf( | |
151 | - | then | |
152 | - | else throw(($getType( | |
146 | + | func ai (K,aa) = { | |
147 | + | let ah = Z(K, aa, 0) | |
148 | + | if ($isInstanceOf(ah, "Int")) | |
149 | + | then ah | |
150 | + | else throw(($getType(ah) + " couldn't be cast to Int")) | |
153 | 151 | } | |
154 | 152 | ||
155 | 153 | ||
156 | - | func | |
154 | + | func aj (D) = ((D._1 + a) + D._2) | |
157 | 155 | ||
158 | 156 | ||
159 | - | func | |
160 | - | let | |
161 | - | if ((size( | |
162 | - | then $Tuple2( | |
163 | - | else | |
157 | + | func ak (ae) = { | |
158 | + | let al = split(ae, a) | |
159 | + | if ((size(al) == 2)) | |
160 | + | then $Tuple2(al[0], al[1]) | |
161 | + | else Y("invalid pool string") | |
164 | 162 | } | |
165 | 163 | ||
166 | 164 | ||
167 | - | let | |
165 | + | let am = addressFromStringValue(ag(this, p)) | |
168 | 166 | ||
169 | - | let | |
167 | + | let an = 10 | |
170 | 168 | ||
171 | - | func | |
169 | + | func ao () = "%s__factoryConfig" | |
172 | 170 | ||
173 | 171 | ||
174 | - | func | |
172 | + | func ap (aq) = split(ag(aq, ao()), a) | |
175 | 173 | ||
176 | 174 | ||
177 | - | func | |
175 | + | func ar (as) = addressFromStringValue(as[an]) | |
178 | 176 | ||
179 | 177 | ||
180 | - | func | |
181 | - | let | |
182 | - | let | |
183 | - | if ($isInstanceOf( | |
184 | - | then | |
178 | + | func at (F,G) = { | |
179 | + | let au = { | |
180 | + | let ah = invoke(am, "poolInfoREADONLY", [F, G], nil) | |
181 | + | if ($isInstanceOf(ah, "(Address, ByteVector)")) | |
182 | + | then ah | |
185 | 183 | else unit | |
186 | 184 | } | |
187 | - | | |
185 | + | au | |
188 | 186 | } | |
189 | 187 | ||
190 | 188 | ||
191 | - | func | |
192 | - | func | |
189 | + | func av (F,G) = { | |
190 | + | func aw (ax) = ("%s%s%s__mappings__baseAsset2internalId__" + ax) | |
193 | 191 | ||
194 | - | func | |
192 | + | func ay (az,aA) = (((("%d%d%s%s__" + toString(az)) + "__") + toString(aA)) + "__mappings__poolAssets2PoolContract") | |
195 | 193 | ||
196 | - | func | |
194 | + | func aB (aC) = (("%s%s%s__" + aC) + "__mappings__poolContract2LpAsset") | |
197 | 195 | ||
198 | - | let | |
199 | - | let | |
200 | - | let | |
201 | - | let | |
202 | - | | |
196 | + | let aD = ai(am, aw(F)) | |
197 | + | let aE = ai(am, aw(G)) | |
198 | + | let aC = ag(am, ay(aD, aE)) | |
199 | + | let aF = ag(am, aB(aC)) | |
200 | + | aF | |
203 | 201 | } | |
204 | 202 | ||
205 | 203 | ||
206 | - | func | |
207 | - | let | |
208 | - | let | |
209 | - | let | |
210 | - | let | |
211 | - | if ($isInstanceOf( | |
212 | - | then | |
213 | - | else throw(($getType( | |
204 | + | func aG (D) = { | |
205 | + | let aH = D | |
206 | + | let F = aH._1 | |
207 | + | let G = aH._2 | |
208 | + | let ah = invoke(am, "checkWxEmissionPoolLabel", [F, G], nil) | |
209 | + | if ($isInstanceOf(ah, "Boolean")) | |
210 | + | then ah | |
211 | + | else throw(($getType(ah) + " couldn't be cast to Boolean")) | |
214 | 212 | } | |
215 | 213 | ||
216 | 214 | ||
217 | - | func | |
218 | - | let | |
219 | - | let | |
220 | - | invoke( | |
215 | + | func aI () = { | |
216 | + | let as = ap(am) | |
217 | + | let aJ = ar(as) | |
218 | + | invoke(aJ, "deposit", nil, nil) | |
221 | 219 | } | |
222 | 220 | ||
223 | 221 | ||
224 | - | let | |
222 | + | let aK = "pools" | |
225 | 223 | ||
226 | - | func | |
227 | - | let | |
228 | - | let | |
229 | - | let | |
230 | - | makeString(["votes", | |
224 | + | func aL (D) = { | |
225 | + | let aM = D | |
226 | + | let F = aM._1 | |
227 | + | let G = aM._2 | |
228 | + | makeString(["votes", F, G], a) | |
231 | 229 | } | |
232 | 230 | ||
233 | 231 | ||
234 | - | func | |
235 | - | let | |
232 | + | func aN (aO) = { | |
233 | + | let aP = if ((aO == aK)) | |
236 | 234 | then "%s%s" | |
237 | 235 | else "%s%s%s%s" | |
238 | - | makeString([ | |
236 | + | makeString([aP, aO, "head"], a) | |
239 | 237 | } | |
240 | 238 | ||
241 | 239 | ||
242 | - | func | |
243 | - | let | |
240 | + | func aQ (aO) = { | |
241 | + | let aP = if ((aO == aK)) | |
244 | 242 | then "%s%s" | |
245 | 243 | else "%s%s%s%s" | |
246 | - | makeString([ | |
244 | + | makeString([aP, aO, "size"], a) | |
247 | 245 | } | |
248 | 246 | ||
249 | 247 | ||
250 | - | func | |
251 | - | let | |
248 | + | func aR (aO,aS) = { | |
249 | + | let aP = if ((aO == aK)) | |
252 | 250 | then "%s%s%s%s" | |
253 | 251 | else "%s%s%s%s%s" | |
254 | - | makeString([ | |
252 | + | makeString([aP, aO, aS, "prev"], a) | |
255 | 253 | } | |
256 | 254 | ||
257 | 255 | ||
258 | - | func | |
259 | - | let | |
256 | + | func aT (aO,aS) = { | |
257 | + | let aP = if ((aO == aK)) | |
260 | 258 | then "%s%s%s%s" | |
261 | 259 | else "%s%s%s%s%s" | |
262 | - | makeString([ | |
260 | + | makeString([aP, aO, aS, "next"], a) | |
263 | 261 | } | |
264 | 262 | ||
265 | 263 | ||
266 | - | func | |
267 | - | let | |
268 | - | let | |
269 | - | let | |
270 | - | if (if (( | |
264 | + | func aU (aO,aS) = { | |
265 | + | let aV = getString(this, aN(aO)) | |
266 | + | let aW = getString(this, aR(aO, aS)) | |
267 | + | let aX = getString(this, aT(aO, aS)) | |
268 | + | if (if ((aS == valueOrElse(aV, ""))) | |
271 | 269 | then true | |
272 | - | else ( | |
270 | + | else (aW != unit)) | |
273 | 271 | then true | |
274 | - | else ( | |
272 | + | else (aX != unit) | |
275 | 273 | } | |
276 | 274 | ||
277 | 275 | ||
278 | - | func | |
279 | - | let | |
280 | - | let | |
281 | - | let | |
276 | + | func aY (aO,aS) = { | |
277 | + | let aV = getString(this, aN(aO)) | |
278 | + | let aZ = valueOrElse(getInteger(this, aQ(aO)), 0) | |
279 | + | let ba = if (!(aU(aO, aS))) | |
282 | 280 | then true | |
283 | - | else | |
284 | - | if (( | |
285 | - | then (([IntegerEntry( | |
286 | - | then [StringEntry( | |
287 | - | else nil)) ++ [StringEntry(aO | |
281 | + | else Y("Node exists") | |
282 | + | if ((ba == ba)) | |
283 | + | then (([IntegerEntry(aQ(aO), (aZ + 1))] ++ (if ((aV != unit)) | |
284 | + | then [StringEntry(aT(aO, aS), value(aV)), StringEntry(aR(aO, value(aV)), aS)] | |
285 | + | else nil)) ++ [StringEntry(aN(aO), aS)]) | |
288 | 286 | else throw("Strict value is not equal to itself.") | |
289 | 287 | } | |
290 | 288 | ||
291 | 289 | ||
292 | - | func | |
293 | - | let | |
294 | - | let | |
295 | - | let | |
296 | - | let | |
297 | - | ([IntegerEntry( | |
298 | - | then ( | |
290 | + | func bb (aO,aS) = { | |
291 | + | let aV = getString(this, aN(aO)) | |
292 | + | let aZ = valueOrElse(getInteger(this, aQ(aO)), 0) | |
293 | + | let aW = getString(this, aR(aO, aS)) | |
294 | + | let aX = getString(this, aT(aO, aS)) | |
295 | + | ([IntegerEntry(aQ(aO), (aZ - 1))] ++ (if (if ((aW != unit)) | |
296 | + | then (aX != unit) | |
299 | 297 | else false) | |
300 | - | then [StringEntry( | |
301 | - | else if (( | |
302 | - | then [StringEntry(aO | |
303 | - | else if (( | |
304 | - | then [DeleteEntry( | |
305 | - | else if (( | |
306 | - | then [DeleteEntry(aO | |
307 | - | else | |
298 | + | then [StringEntry(aT(aO, value(aW)), value(aX)), StringEntry(aR(aO, value(aX)), value(aW)), DeleteEntry(aR(aO, aS)), DeleteEntry(aT(aO, aS))] | |
299 | + | else if ((aX != unit)) | |
300 | + | then [StringEntry(aN(aO), value(aX)), DeleteEntry(aT(aO, aS)), DeleteEntry(aR(aO, value(aX)))] | |
301 | + | else if ((aW != unit)) | |
302 | + | then [DeleteEntry(aR(aO, aS)), DeleteEntry(aT(aO, value(aW)))] | |
303 | + | else if ((aS == valueOrElse(aV, ""))) | |
304 | + | then [DeleteEntry(aN(aO))] | |
305 | + | else Y(((("invalid node: " + aO) + ".") + aS)))) | |
308 | 306 | } | |
309 | 307 | ||
310 | 308 | ||
311 | - | func | |
309 | + | func bc () = "%s__managerVaultAddress" | |
312 | 310 | ||
313 | 311 | ||
314 | - | func | |
312 | + | func bd () = "%s__managerPublicKey" | |
315 | 313 | ||
316 | 314 | ||
317 | - | func | |
318 | - | let | |
319 | - | if ($isInstanceOf( | |
315 | + | func be () = { | |
316 | + | let ad = getString(bc()) | |
317 | + | if ($isInstanceOf(ad, "String")) | |
320 | 318 | then { | |
321 | - | let | |
322 | - | addressFromStringValue( | |
319 | + | let bf = ad | |
320 | + | addressFromStringValue(bf) | |
323 | 321 | } | |
324 | 322 | else this | |
325 | 323 | } | |
326 | 324 | ||
327 | 325 | ||
328 | - | func | |
329 | - | let | |
330 | - | let | |
331 | - | if ($isInstanceOf( | |
326 | + | func bg () = { | |
327 | + | let bh = be() | |
328 | + | let ad = getString(bh, bd()) | |
329 | + | if ($isInstanceOf(ad, "String")) | |
332 | 330 | then { | |
333 | - | let | |
334 | - | fromBase58String( | |
331 | + | let bf = ad | |
332 | + | fromBase58String(bf) | |
335 | 333 | } | |
336 | - | else if ($isInstanceOf( | |
334 | + | else if ($isInstanceOf(ad, "Unit")) | |
337 | 335 | then unit | |
338 | 336 | else throw("Match error") | |
339 | 337 | } | |
340 | 338 | ||
341 | 339 | ||
342 | - | func | |
343 | - | let | |
344 | - | if ($isInstanceOf( | |
340 | + | func bi (bj) = { | |
341 | + | let ad = bg() | |
342 | + | if ($isInstanceOf(ad, "ByteVector")) | |
345 | 343 | then { | |
346 | - | let | |
347 | - | ( | |
344 | + | let bk = ad | |
345 | + | (bj.callerPublicKey == bk) | |
348 | 346 | } | |
349 | - | else if ($isInstanceOf( | |
350 | - | then ( | |
347 | + | else if ($isInstanceOf(ad, "Unit")) | |
348 | + | then (bj.caller == this) | |
351 | 349 | else throw("Match error") | |
352 | 350 | } | |
353 | 351 | ||
354 | 352 | ||
355 | - | func | |
353 | + | func bl (bj) = if (bi(bj)) | |
356 | 354 | then true | |
357 | 355 | else throw("permission denied") | |
358 | 356 | ||
359 | 357 | ||
360 | - | func | |
358 | + | func bm (bj) = if ((bj.caller == this)) | |
361 | 359 | then true | |
362 | 360 | else throw("permission denied") | |
363 | 361 | ||
364 | 362 | ||
365 | - | @Callable( | |
366 | - | func getUserGwxAmountAtHeight (bo | |
367 | - | let | |
363 | + | @Callable(bj) | |
364 | + | func getUserGwxAmountAtHeight (bn,bo) = { | |
365 | + | let bp = valueOrErrorMessage(addressFromString(ag(this, q)), W("invalid boosting contract address")) | |
368 | 366 | $Tuple2(nil, { | |
369 | - | let | |
370 | - | if ($isInstanceOf( | |
371 | - | then | |
372 | - | else throw(($getType( | |
367 | + | let ah = invoke(bp, "getUserGwxAmountAtHeightREADONLY", [bn, bo], nil) | |
368 | + | if ($isInstanceOf(ah, "Int")) | |
369 | + | then ah | |
370 | + | else throw(($getType(ah) + " couldn't be cast to Int")) | |
373 | 371 | }) | |
374 | 372 | } | |
375 | 373 | ||
376 | 374 | ||
377 | 375 | ||
378 | - | @Callable( | |
379 | - | func constructor ( | |
380 | - | let | |
376 | + | @Callable(bj) | |
377 | + | func constructor (am,bq,br,bs,bt) = { | |
378 | + | let bu = [bl(bj), if ((addressFromString(am) != unit)) | |
381 | 379 | then true | |
382 | - | else "invalid factory contract address", if ((addressFromString( | |
380 | + | else "invalid factory contract address", if ((addressFromString(bq) != unit)) | |
383 | 381 | then true | |
384 | - | else "invalid voting emission candidate contract address", if ((addressFromString( | |
382 | + | else "invalid voting emission candidate contract address", if ((addressFromString(br) != unit)) | |
385 | 383 | then true | |
386 | - | else "invalid boosting contract address", if ((addressFromString( | |
384 | + | else "invalid boosting contract address", if ((addressFromString(bs) != unit)) | |
387 | 385 | then true | |
388 | - | else "invalid staking contract address", if (( | |
386 | + | else "invalid staking contract address", if ((bt > 0)) | |
389 | 387 | then true | |
390 | - | else | |
391 | - | if (( | |
392 | - | then $Tuple2([StringEntry( | |
388 | + | else Y("invalid epoch length")] | |
389 | + | if ((bu == bu)) | |
390 | + | then $Tuple2([StringEntry(p, am), StringEntry(n, bq), StringEntry(q, br), StringEntry(r, bs), IntegerEntry(g, bt)], unit) | |
393 | 391 | else throw("Strict value is not equal to itself.") | |
394 | 392 | } | |
395 | 393 | ||
396 | 394 | ||
397 | 395 | ||
398 | - | @Callable( | |
399 | - | func create (G | |
400 | - | let | |
396 | + | @Callable(bj) | |
397 | + | func create (F,G) = { | |
398 | + | let bu = [if ((toBase58String(bj.caller.bytes) == valueOrElse(getString(this, n), ""))) | |
401 | 399 | then true | |
402 | - | else | |
403 | - | if (( | |
400 | + | else bl(bj)] | |
401 | + | if ((bu == bu)) | |
404 | 402 | then { | |
405 | - | let | |
406 | - | let | |
407 | - | let | |
408 | - | let | |
403 | + | let D = $Tuple2(F, G) | |
404 | + | let bv = ([BooleanEntry(C(D), true)] ++ aY(aK, aj(D))) | |
405 | + | let bw = (getInteger(this, k) == unit) | |
406 | + | let bx = if (bw) | |
409 | 407 | then { | |
410 | - | let | |
411 | - | [IntegerEntry( | |
408 | + | let j = 0 | |
409 | + | [IntegerEntry(k, j), IntegerEntry(A(j), height), IntegerEntry(w, height), IntegerEntry(x, j), IntegerEntry(y, height)] | |
412 | 410 | } | |
413 | 411 | else nil | |
414 | - | $Tuple2(( | |
412 | + | $Tuple2((bv ++ bx), unit) | |
415 | 413 | } | |
416 | 414 | else throw("Strict value is not equal to itself.") | |
417 | 415 | } | |
418 | 416 | ||
419 | 417 | ||
420 | 418 | ||
421 | - | @Callable( | |
422 | - | func vote (G, | |
423 | - | let | |
424 | - | let | |
425 | - | let | |
426 | - | let | |
427 | - | let | |
428 | - | let | |
429 | - | let | |
430 | - | let | |
431 | - | let | |
432 | - | let | |
433 | - | let | |
434 | - | let | |
435 | - | if ($isInstanceOf( | |
436 | - | then | |
437 | - | else throw(($getType( | |
419 | + | @Callable(bj) | |
420 | + | func vote (F,G,by) = { | |
421 | + | let D = $Tuple2(F, G) | |
422 | + | let j = valueOrElse(getInteger(this, k), 0) | |
423 | + | let bz = ai(this, A(j)) | |
424 | + | let bt = ai(this, g) | |
425 | + | let bA = (bz + bt) | |
426 | + | let bB = getInteger(this, t) | |
427 | + | let bC = valueOrElse(getInteger(this, J(bj.caller, j)), 0) | |
428 | + | let bD = valueOrElse(getInteger(this, L(D, bj.caller, j)), 0) | |
429 | + | let bE = valueOrElse(getInteger(this, N(D, j)), 0) | |
430 | + | let bF = valueOrElse(getInteger(this, T(j)), 0) | |
431 | + | let bG = { | |
432 | + | let ah = invoke(this, "getUserGwxAmountAtHeight", [toBase58String(bj.caller.bytes), bA], nil) | |
433 | + | if ($isInstanceOf(ah, "Int")) | |
434 | + | then ah | |
435 | + | else throw(($getType(ah) + " couldn't be cast to Int")) | |
438 | 436 | } | |
439 | - | let | |
440 | - | let | |
441 | - | let | |
442 | - | let | |
437 | + | let bH = (bG - bC) | |
438 | + | let bI = (bD + by) | |
439 | + | let bJ = aG(D) | |
440 | + | let bu = [if ((getBoolean(C(D)) != unit)) | |
443 | 441 | then true | |
444 | - | else | |
442 | + | else Y("invalid assets"), if ((bA > height)) | |
445 | 443 | then true | |
446 | - | else | |
444 | + | else Y("invalid height"), if ((bB == unit)) | |
447 | 445 | then true | |
448 | - | else | |
446 | + | else Y("finalization in progress"), if ((bG > 0)) | |
449 | 447 | then true | |
450 | - | else | |
451 | - | then ( | |
448 | + | else Y("you do not have gWX"), if (if ((by > 0)) | |
449 | + | then (bH >= by) | |
452 | 450 | else false) | |
453 | 451 | then true | |
454 | - | else | |
452 | + | else Y("invalid amount"), if (bJ) | |
455 | 453 | then true | |
456 | - | else | |
457 | - | if (( | |
454 | + | else Y("pool hasn't WX_EMISSION label")] | |
455 | + | if ((bu == bu)) | |
458 | 456 | then { | |
459 | - | let | |
460 | - | let | |
461 | - | let | |
457 | + | let bK = aL(D) | |
458 | + | let V = toString(bj.caller) | |
459 | + | let bL = if (aU(bK, V)) | |
462 | 460 | then nil | |
463 | - | else | |
464 | - | $Tuple2(([IntegerEntry( | |
461 | + | else aY(bK, V) | |
462 | + | $Tuple2(([IntegerEntry(J(bj.caller, j), (bC + by)), IntegerEntry(L(D, bj.caller, j), bI), IntegerEntry(N(D, j), (bE + by)), IntegerEntry(T(j), (bF + by))] ++ bL), unit) | |
465 | 463 | } | |
466 | 464 | else throw("Strict value is not equal to itself.") | |
467 | 465 | } | |
468 | 466 | ||
469 | 467 | ||
470 | 468 | ||
471 | - | @Callable( | |
472 | - | func cancelVote (G | |
473 | - | let | |
474 | - | let | |
475 | - | let | |
476 | - | let | |
477 | - | let | |
478 | - | let | |
479 | - | let | |
480 | - | let | |
481 | - | let | |
482 | - | let | |
483 | - | let | |
469 | + | @Callable(bj) | |
470 | + | func cancelVote (F,G) = { | |
471 | + | let D = $Tuple2(F, G) | |
472 | + | let j = valueOrElse(getInteger(this, k), 0) | |
473 | + | let bz = ai(this, A(j)) | |
474 | + | let bt = ai(this, g) | |
475 | + | let bA = (bz + bt) | |
476 | + | let bB = getInteger(this, t) | |
477 | + | let bC = valueOrElse(getInteger(this, J(bj.caller, j)), 0) | |
478 | + | let bD = valueOrElse(getInteger(this, L(D, bj.caller, j)), 0) | |
479 | + | let bE = valueOrElse(getInteger(this, N(D, j)), 0) | |
480 | + | let bF = valueOrElse(getInteger(this, T(j)), 0) | |
481 | + | let bu = [if ((getBoolean(C(D)) != unit)) | |
484 | 482 | then true | |
485 | - | else | |
483 | + | else Y("invalid assets"), if ((bA > height)) | |
486 | 484 | then true | |
487 | - | else | |
485 | + | else Y("invalid height"), if ((bB == unit)) | |
488 | 486 | then true | |
489 | - | else | |
487 | + | else Y("finalization in progress"), if ((bD > 0)) | |
490 | 488 | then true | |
491 | - | else | |
492 | - | if (( | |
489 | + | else Y("no vote")] | |
490 | + | if ((bu == bu)) | |
493 | 491 | then { | |
494 | - | let | |
495 | - | let | |
496 | - | $Tuple2(([IntegerEntry( | |
492 | + | let bK = aL(D) | |
493 | + | let V = toString(bj.caller) | |
494 | + | $Tuple2(([IntegerEntry(J(bj.caller, j), max([(bC - bD), 0])), DeleteEntry(L(D, bj.caller, j)), IntegerEntry(N(D, j), (bE - bD)), IntegerEntry(T(j), (bF - bD))] ++ bb(bK, V)), unit) | |
497 | 495 | } | |
498 | 496 | else throw("Strict value is not equal to itself.") | |
499 | 497 | } | |
500 | 498 | ||
501 | 499 | ||
502 | 500 | ||
503 | - | @Callable( | |
504 | - | func setEpochLength ( | |
505 | - | let | |
501 | + | @Callable(bj) | |
502 | + | func setEpochLength (bM) = { | |
503 | + | let bu = [bl(bj), if ((bM > 0)) | |
506 | 504 | then true | |
507 | - | else | |
508 | - | if (( | |
509 | - | then $Tuple2([IntegerEntry( | |
505 | + | else Y("invalid epoch length")] | |
506 | + | if ((bu == bu)) | |
507 | + | then $Tuple2([IntegerEntry(h, bM)], unit) | |
510 | 508 | else throw("Strict value is not equal to itself.") | |
511 | 509 | } | |
512 | 510 | ||
513 | 511 | ||
514 | 512 | ||
515 | - | @Callable( | |
516 | - | func setMaxDepth ( | |
517 | - | let | |
513 | + | @Callable(bj) | |
514 | + | func setMaxDepth (bN) = { | |
515 | + | let bu = [bl(bj), if ((bN > 0)) | |
518 | 516 | then true | |
519 | - | else | |
520 | - | if (( | |
521 | - | then $Tuple2([IntegerEntry( | |
517 | + | else Y("invalid max depth")] | |
518 | + | if ((bu == bu)) | |
519 | + | then $Tuple2([IntegerEntry(l, bN)], unit) | |
522 | 520 | else throw("Strict value is not equal to itself.") | |
523 | 521 | } | |
524 | 522 | ||
525 | 523 | ||
526 | 524 | ||
527 | - | @Callable( | |
528 | - | func processPoolBalanceINTERNAL ( | |
529 | - | let | |
530 | - | if (( | |
525 | + | @Callable(bj) | |
526 | + | func processPoolBalanceINTERNAL (bO) = { | |
527 | + | let bP = bm(bj) | |
528 | + | if ((bP == bP)) | |
531 | 529 | then { | |
532 | - | let | |
533 | - | let | |
534 | - | let | |
535 | - | let | |
536 | - | let | |
537 | - | let | |
538 | - | let | |
539 | - | let | |
540 | - | let | |
541 | - | if ($isInstanceOf( | |
542 | - | then | |
543 | - | else throw(($getType( | |
530 | + | let j = ai(this, k) | |
531 | + | let bQ = (j - 1) | |
532 | + | let D = ak(bO) | |
533 | + | let bR = D | |
534 | + | let F = bR._1 | |
535 | + | let G = bR._2 | |
536 | + | let aF = av(F, G) | |
537 | + | let bS = { | |
538 | + | let ah = invoke(am, "checkBalance", [aF], nil) | |
539 | + | if ($isInstanceOf(ah, "Boolean")) | |
540 | + | then ah | |
541 | + | else throw(($getType(ah) + " couldn't be cast to Boolean")) | |
544 | 542 | } | |
545 | - | let | |
546 | - | let | |
547 | - | then if (!( | |
543 | + | let bT = !(valueOrElse(getBoolean(this, H(D, (bQ - 1))), false)) | |
544 | + | let bU = if (!(bS)) | |
545 | + | then if (!(bT)) | |
548 | 546 | then { | |
549 | - | let | |
550 | - | if (( | |
547 | + | let bV = invoke(am, "deleteWxEmissionPoolLabel", [F, G], nil) | |
548 | + | if ((bV == bV)) | |
551 | 549 | then { | |
552 | - | let | |
553 | - | if (( | |
550 | + | let bW = invoke(am, "modifyWeight", [aF, 0], nil) | |
551 | + | if ((bW == bW)) | |
554 | 552 | then { | |
555 | - | let | |
556 | - | let | |
557 | - | let | |
558 | - | if (( | |
553 | + | let bX = valueOrErrorMessage(at(F, G), W("invalid assets"))._1 | |
554 | + | let bY = 3 | |
555 | + | let bZ = invoke(am, "managePool", [toString(bX), bY], nil) | |
556 | + | if ((bZ == bZ)) | |
559 | 557 | then { | |
560 | - | let | |
561 | - | ([IntegerEntry( | |
558 | + | let ca = ([DeleteEntry(C(D))] ++ bb(aK, aj(D))) | |
559 | + | ([IntegerEntry(R(D, bQ), 0)] ++ ca) | |
562 | 560 | } | |
563 | 561 | else throw("Strict value is not equal to itself.") | |
564 | 562 | } | |
565 | 563 | else throw("Strict value is not equal to itself.") | |
566 | 564 | } | |
567 | 565 | else throw("Strict value is not equal to itself.") | |
568 | 566 | } | |
569 | - | else [BooleanEntry( | |
567 | + | else [BooleanEntry(H(D, bQ), true)] | |
570 | 568 | else nil | |
571 | - | $Tuple2( | |
569 | + | $Tuple2(bU, unit) | |
572 | 570 | } | |
573 | 571 | else throw("Strict value is not equal to itself.") | |
574 | 572 | } | |
575 | 573 | ||
576 | 574 | ||
577 | 575 | ||
578 | - | @Callable( | |
579 | - | func processVoteINTERNAL ( | |
580 | - | let | |
581 | - | if (( | |
576 | + | @Callable(bj) | |
577 | + | func processVoteINTERNAL (bO,V) = { | |
578 | + | let bP = bm(bj) | |
579 | + | if ((bP == bP)) | |
582 | 580 | then { | |
583 | - | let | |
584 | - | let | |
585 | - | let | |
586 | - | let | |
587 | - | let | |
588 | - | let | |
589 | - | let | |
590 | - | let | |
591 | - | let | |
592 | - | let | |
581 | + | let bn = valueOrErrorMessage(addressFromString(V), W(("processVoteINTERNAL: invalid user address " + V))) | |
582 | + | let j = ai(this, k) | |
583 | + | let bQ = (j - 1) | |
584 | + | let bt = ai(this, g) | |
585 | + | let bz = ai(this, A(j)) | |
586 | + | let bA = (bz + bt) | |
587 | + | let cb = ai(this, A(bQ)) | |
588 | + | let cc = ai(this, i(bQ)) | |
589 | + | let cd = (cb + cc) | |
590 | + | let ce = if ((bQ >= 0)) | |
593 | 591 | then true | |
594 | - | else | |
595 | - | if (( | |
592 | + | else Y("processVoteINTERNAL: invalid previous epoch") | |
593 | + | if ((ce == ce)) | |
596 | 594 | then { | |
597 | - | let | |
598 | - | let | |
599 | - | let | |
600 | - | let | |
601 | - | let | |
602 | - | let | |
603 | - | if ($isInstanceOf( | |
604 | - | then | |
605 | - | else throw(($getType( | |
595 | + | let D = ak(bO) | |
596 | + | let cf = D | |
597 | + | let F = cf._1 | |
598 | + | let G = cf._2 | |
599 | + | let bG = { | |
600 | + | let ah = invoke(this, "getUserGwxAmountAtHeight", [V, bA], nil) | |
601 | + | if ($isInstanceOf(ah, "Int")) | |
602 | + | then ah | |
603 | + | else throw(($getType(ah) + " couldn't be cast to Int")) | |
606 | 604 | } | |
607 | - | let | |
608 | - | let | |
609 | - | if ($isInstanceOf( | |
610 | - | then | |
611 | - | else throw(($getType( | |
605 | + | let cg = { | |
606 | + | let ah = invoke(this, "getUserGwxAmountAtHeight", [V, cd], nil) | |
607 | + | if ($isInstanceOf(ah, "Int")) | |
608 | + | then ah | |
609 | + | else throw(($getType(ah) + " couldn't be cast to Int")) | |
612 | 610 | } | |
613 | - | let | |
614 | - | let | |
615 | - | let | |
616 | - | let | |
617 | - | let | |
618 | - | let | |
619 | - | let | |
620 | - | let | |
621 | - | let | |
611 | + | let bF = valueOrElse(getInteger(T(j)), 0) | |
612 | + | let ch = valueOrElse(getInteger(N(D, j)), 0) | |
613 | + | let ci = valueOrErrorMessage(getInteger(L(D, bn, bQ)), W((((("processVoteINTERNAL " + bO) + " ") + V) + ": no previous vote"))) | |
614 | + | let bC = valueOrElse(getInteger(this, J(bn, j)), 0) | |
615 | + | let Q = av(F, G) | |
616 | + | let cj = valueOrElse(getInteger(P(Q, bQ)), 0) | |
617 | + | let bs = addressFromStringValue(ag(this, r)) | |
618 | + | let ck = valueOrElse(getInteger(bs, U(Q, V)), 0) | |
619 | + | let cl = if ((ck == 0)) | |
622 | 620 | then nil | |
623 | - | else [IntegerEntry(Q | |
624 | - | let | |
625 | - | let | |
626 | - | then fraction( | |
621 | + | else [IntegerEntry(P(Q, bQ), (cj + ci))] | |
622 | + | let aF = av(F, G) | |
623 | + | let bI = if ((cg > 0)) | |
624 | + | then fraction(ci, bG, cg) | |
627 | 625 | else 0 | |
628 | - | let | |
629 | - | then [IntegerEntry( | |
630 | - | else | |
631 | - | $Tuple2(( | |
626 | + | let bU = if ((bI > 0)) | |
627 | + | then [IntegerEntry(L(D, bn, j), bI), IntegerEntry(T(j), (bF + bI)), IntegerEntry(N(D, j), (ch + bI)), IntegerEntry(J(bn, j), (bC + bI))] | |
628 | + | else bb(aL(D), V) | |
629 | + | $Tuple2((bU ++ cl), unit) | |
632 | 630 | } | |
633 | 631 | else throw("Strict value is not equal to itself.") | |
634 | 632 | } | |
635 | 633 | else throw("Strict value is not equal to itself.") | |
636 | 634 | } | |
637 | 635 | ||
638 | 636 | ||
639 | 637 | ||
640 | - | @Callable( | |
641 | - | func processPoolINTERNAL ( | |
642 | - | let | |
643 | - | if (( | |
638 | + | @Callable(bj) | |
639 | + | func processPoolINTERNAL (bO,cm) = { | |
640 | + | let bP = bm(bj) | |
641 | + | if ((bP == bP)) | |
644 | 642 | then { | |
645 | - | let | |
646 | - | let | |
647 | - | if ( | |
648 | - | then | |
649 | - | else ( | |
643 | + | let cn = { | |
644 | + | let co = ai(this, k) | |
645 | + | if (cm) | |
646 | + | then co | |
647 | + | else (co - 1) | |
650 | 648 | } | |
651 | - | let | |
649 | + | let ce = if ((cn >= 0)) | |
652 | 650 | then true | |
653 | - | else | |
654 | - | if (( | |
651 | + | else Y("processPoolINTERNAL: invalid target epoch") | |
652 | + | if ((ce == ce)) | |
655 | 653 | then { | |
656 | - | let | |
657 | - | let | |
658 | - | let | |
659 | - | let | |
660 | - | let | |
661 | - | let | |
662 | - | let | |
663 | - | let | |
664 | - | if ($isInstanceOf( | |
665 | - | then | |
666 | - | else throw(($getType( | |
654 | + | let D = ak(bO) | |
655 | + | let cp = D | |
656 | + | let F = cp._1 | |
657 | + | let G = cp._2 | |
658 | + | let bs = addressFromStringValue(ag(this, r)) | |
659 | + | let aF = av(F, G) | |
660 | + | let cq = { | |
661 | + | let ah = invoke(bs, "usersListTraversal", [aF], nil) | |
662 | + | if ($isInstanceOf(ah, "Boolean")) | |
663 | + | then ah | |
664 | + | else throw(($getType(ah) + " couldn't be cast to Boolean")) | |
667 | 665 | } | |
668 | - | if (( | |
669 | - | then if ( | |
666 | + | if ((cq == cq)) | |
667 | + | then if (cq) | |
670 | 668 | then $Tuple2(nil, true) | |
671 | 669 | else { | |
672 | - | let | |
673 | - | let | |
674 | - | let | |
675 | - | let | |
670 | + | let cr = addressFromStringValue(valueOrErrorMessage(getString(am, s), "invalid assets store contract")) | |
671 | + | let bF = valueOrElse(getInteger(this, T(cn)), 0) | |
672 | + | let ch = valueOrElse(getInteger(this, N(D, cn)), 0) | |
673 | + | let cs = if ((bF == 0)) | |
676 | 674 | then 0 | |
677 | - | else fraction( | |
678 | - | let | |
679 | - | if (( | |
680 | - | then $Tuple2([IntegerEntry( | |
675 | + | else fraction(ch, b, bF) | |
676 | + | let bW = invoke(am, "modifyWeight", [aF, cs], nil) | |
677 | + | if ((bW == bW)) | |
678 | + | then $Tuple2([IntegerEntry(R(D, cn), cs)], false) | |
681 | 679 | else throw("Strict value is not equal to itself.") | |
682 | 680 | } | |
683 | 681 | else throw("Strict value is not equal to itself.") | |
684 | 682 | } | |
685 | 683 | else throw("Strict value is not equal to itself.") | |
686 | 684 | } | |
687 | 685 | else throw("Strict value is not equal to itself.") | |
688 | 686 | } | |
689 | 687 | ||
690 | 688 | ||
691 | 689 | ||
692 | - | @Callable( | |
690 | + | @Callable(bj) | |
693 | 691 | func finalizeHelper () = { | |
694 | - | let | |
695 | - | let | |
696 | - | let | |
697 | - | let | |
698 | - | let | |
699 | - | let | |
700 | - | let | |
701 | - | if (if (if ((height >= | |
702 | - | then ( | |
692 | + | let cm = valueOrElse(getBoolean(z), false) | |
693 | + | let j = valueOrElse(getInteger(this, k), 0) | |
694 | + | let ct = (j - 1) | |
695 | + | let bz = ai(this, A(j)) | |
696 | + | let bt = ai(this, g) | |
697 | + | let bA = (bz + bt) | |
698 | + | let bB = getInteger(this, t) | |
699 | + | if (if (if ((height >= bA)) | |
700 | + | then (bB == unit) | |
703 | 701 | else false) | |
704 | - | then !( | |
702 | + | then !(cm) | |
705 | 703 | else false) | |
706 | 704 | then { | |
707 | - | let | |
708 | - | let | |
709 | - | let | |
710 | - | let | |
711 | - | if ($isInstanceOf( | |
705 | + | let cu = (j + 1) | |
706 | + | let cv = getInteger(this, h) | |
707 | + | let cw = { | |
708 | + | let ad = cv | |
709 | + | if ($isInstanceOf(ad, "Int")) | |
712 | 710 | then { | |
713 | - | let | |
714 | - | [IntegerEntry( | |
711 | + | let bM = ad | |
712 | + | [IntegerEntry(g, bM), DeleteEntry(h)] | |
715 | 713 | } | |
716 | - | else if ($isInstanceOf( | |
714 | + | else if ($isInstanceOf(ad, "Unit")) | |
717 | 715 | then nil | |
718 | 716 | else throw("Match error") | |
719 | 717 | } | |
720 | - | $Tuple2(([IntegerEntry( | |
718 | + | $Tuple2(([IntegerEntry(A(cu), height), IntegerEntry(w, height), IntegerEntry(k, cu), IntegerEntry(t, d), IntegerEntry(i(j), bt)] ++ cw), true) | |
721 | 719 | } | |
722 | - | else if (if ( | |
723 | - | then ( | |
720 | + | else if (if (cm) | |
721 | + | then (bB == unit) | |
724 | 722 | else false) | |
725 | - | then $Tuple2([IntegerEntry( | |
726 | - | else if (( | |
723 | + | then $Tuple2([IntegerEntry(t, f)], true) | |
724 | + | else if ((bB == unit)) | |
727 | 725 | then $Tuple2(nil, false) | |
728 | - | else if (( | |
726 | + | else if ((bB == d)) | |
729 | 727 | then { | |
730 | - | let | |
731 | - | let | |
732 | - | if ($isInstanceOf( | |
728 | + | let cx = getString(u) | |
729 | + | let ad = cx | |
730 | + | if ($isInstanceOf(ad, "Unit")) | |
733 | 731 | then { | |
734 | - | let | |
735 | - | if ($isInstanceOf( | |
736 | - | then $Tuple2([IntegerEntry( | |
737 | - | else if ($isInstanceOf( | |
732 | + | let cy = getString(aN(aK)) | |
733 | + | if ($isInstanceOf(cy, "Unit")) | |
734 | + | then $Tuple2([IntegerEntry(t, e), DeleteEntry(u)], true) | |
735 | + | else if ($isInstanceOf(cy, "String")) | |
738 | 736 | then { | |
739 | - | let | |
740 | - | $Tuple2([StringEntry( | |
737 | + | let cz = cy | |
738 | + | $Tuple2([StringEntry(u, cz)], true) | |
741 | 739 | } | |
742 | 740 | else throw("Match error") | |
743 | 741 | } | |
744 | - | else if ($isInstanceOf( | |
742 | + | else if ($isInstanceOf(ad, "String")) | |
745 | 743 | then { | |
746 | - | let | |
747 | - | let | |
748 | - | if (( | |
744 | + | let bO = ad | |
745 | + | let cA = getString(aT(aK, bO)) | |
746 | + | if ((cA == cA)) | |
749 | 747 | then { | |
750 | - | let | |
751 | - | if (( | |
748 | + | let cq = invoke(this, "processPoolBalanceINTERNAL", [bO], nil) | |
749 | + | if ((cq == cq)) | |
752 | 750 | then { | |
753 | - | let | |
754 | - | if ($isInstanceOf( | |
755 | - | then $Tuple2([IntegerEntry( | |
756 | - | else if ($isInstanceOf( | |
751 | + | let cy = cA | |
752 | + | if ($isInstanceOf(cy, "Unit")) | |
753 | + | then $Tuple2([IntegerEntry(t, e), DeleteEntry(u)], true) | |
754 | + | else if ($isInstanceOf(cy, "String")) | |
757 | 755 | then { | |
758 | - | let | |
759 | - | $Tuple2([StringEntry( | |
756 | + | let cz = cy | |
757 | + | $Tuple2([StringEntry(u, cz)], true) | |
760 | 758 | } | |
761 | 759 | else throw("Match error") | |
762 | 760 | } | |
763 | 761 | else throw("Strict value is not equal to itself.") | |
764 | 762 | } | |
765 | 763 | else throw("Strict value is not equal to itself.") | |
766 | 764 | } | |
767 | 765 | else throw("Match error") | |
768 | 766 | } | |
769 | - | else if (( | |
767 | + | else if ((bB == e)) | |
770 | 768 | then { | |
771 | - | let | |
772 | - | let | |
773 | - | let | |
774 | - | if ($isInstanceOf( | |
769 | + | let cx = getString(u) | |
770 | + | let cB = getString(v) | |
771 | + | let ad = cx | |
772 | + | if ($isInstanceOf(ad, "Unit")) | |
775 | 773 | then { | |
776 | - | let | |
777 | - | if ($isInstanceOf( | |
778 | - | then $Tuple2([IntegerEntry( | |
779 | - | else if ($isInstanceOf( | |
774 | + | let cy = getString(aN(aK)) | |
775 | + | if ($isInstanceOf(cy, "Unit")) | |
776 | + | then $Tuple2([IntegerEntry(t, f), DeleteEntry(u), DeleteEntry(v)], true) | |
777 | + | else if ($isInstanceOf(cy, "String")) | |
780 | 778 | then { | |
781 | - | let | |
782 | - | $Tuple2([StringEntry( | |
779 | + | let cC = cy | |
780 | + | $Tuple2([StringEntry(u, cC)], true) | |
783 | 781 | } | |
784 | 782 | else throw("Match error") | |
785 | 783 | } | |
786 | - | else if ($isInstanceOf( | |
784 | + | else if ($isInstanceOf(ad, "String")) | |
787 | 785 | then { | |
788 | - | let | |
789 | - | let | |
790 | - | let | |
791 | - | let | |
792 | - | if ($isInstanceOf( | |
793 | - | then getString( | |
794 | - | else if ($isInstanceOf( | |
786 | + | let bO = ad | |
787 | + | let D = ak(bO) | |
788 | + | let cD = { | |
789 | + | let cy = cB | |
790 | + | if ($isInstanceOf(cy, "Unit")) | |
791 | + | then getString(aN(aL(D))) | |
792 | + | else if ($isInstanceOf(cy, "String")) | |
795 | 793 | then { | |
796 | - | let | |
797 | - | let | |
798 | - | if (( | |
794 | + | let cE = cy | |
795 | + | let cF = getString(aT(aL(D), cE)) | |
796 | + | if ((cF == cF)) | |
799 | 797 | then { | |
800 | - | let | |
801 | - | if (( | |
802 | - | then | |
798 | + | let cG = invoke(this, "processVoteINTERNAL", [bO, cE], nil) | |
799 | + | if ((cG == cG)) | |
800 | + | then cF | |
803 | 801 | else throw("Strict value is not equal to itself.") | |
804 | 802 | } | |
805 | 803 | else throw("Strict value is not equal to itself.") | |
806 | 804 | } | |
807 | 805 | else throw("Match error") | |
808 | 806 | } | |
809 | - | let | |
810 | - | if ($isInstanceOf( | |
807 | + | let cy = cD | |
808 | + | if ($isInstanceOf(cy, "Unit")) | |
811 | 809 | then { | |
812 | - | let | |
813 | - | let | |
814 | - | if ($isInstanceOf( | |
815 | - | then $Tuple2([IntegerEntry( | |
816 | - | else if ($isInstanceOf( | |
810 | + | let cA = getString(aT(aK, bO)) | |
811 | + | let cH = cA | |
812 | + | if ($isInstanceOf(cH, "Unit")) | |
813 | + | then $Tuple2([IntegerEntry(t, f), DeleteEntry(u), DeleteEntry(v)], true) | |
814 | + | else if ($isInstanceOf(cH, "String")) | |
817 | 815 | then { | |
818 | - | let | |
819 | - | $Tuple2([StringEntry( | |
816 | + | let bf = cH | |
817 | + | $Tuple2([StringEntry(u, bf), DeleteEntry(v)], true) | |
820 | 818 | } | |
821 | 819 | else throw("Match error") | |
822 | 820 | } | |
823 | - | else if ($isInstanceOf( | |
821 | + | else if ($isInstanceOf(cy, "String")) | |
824 | 822 | then { | |
825 | - | let | |
826 | - | $Tuple2([StringEntry( | |
823 | + | let cI = cy | |
824 | + | $Tuple2([StringEntry(v, cI)], true) | |
827 | 825 | } | |
828 | 826 | else throw("Match error") | |
829 | 827 | } | |
830 | 828 | else throw("Match error") | |
831 | 829 | } | |
832 | - | else if (( | |
830 | + | else if ((bB == f)) | |
833 | 831 | then { | |
834 | - | let | |
835 | - | let | |
836 | - | if ($isInstanceOf( | |
832 | + | let cx = getString(u) | |
833 | + | let ad = cx | |
834 | + | if ($isInstanceOf(ad, "Unit")) | |
837 | 835 | then { | |
838 | - | let | |
839 | - | if ($isInstanceOf( | |
836 | + | let cy = getString(aN(aK)) | |
837 | + | if ($isInstanceOf(cy, "Unit")) | |
840 | 838 | then { | |
841 | - | let | |
842 | - | then [DeleteEntry( | |
843 | - | else [DeleteEntry( | |
844 | - | let | |
845 | - | if (( | |
846 | - | then $Tuple2( | |
839 | + | let bU = if (cm) | |
840 | + | then [DeleteEntry(t), DeleteEntry(z)] | |
841 | + | else [DeleteEntry(t), BooleanEntry(B(ct), true), IntegerEntry(x, j), IntegerEntry(y, bz)] | |
842 | + | let cJ = aI() | |
843 | + | if ((cJ == cJ)) | |
844 | + | then $Tuple2(bU, true) | |
847 | 845 | else throw("Strict value is not equal to itself.") | |
848 | 846 | } | |
849 | - | else if ($isInstanceOf( | |
847 | + | else if ($isInstanceOf(cy, "String")) | |
850 | 848 | then { | |
851 | - | let | |
852 | - | $Tuple2([StringEntry( | |
849 | + | let cz = cy | |
850 | + | $Tuple2([StringEntry(u, cz)], true) | |
853 | 851 | } | |
854 | 852 | else throw("Match error") | |
855 | 853 | } | |
856 | - | else if ($isInstanceOf( | |
854 | + | else if ($isInstanceOf(ad, "String")) | |
857 | 855 | then { | |
858 | - | let | |
859 | - | let | |
860 | - | if (( | |
856 | + | let bO = ad | |
857 | + | let cA = getString(aT(aK, bO)) | |
858 | + | if ((cA == cA)) | |
861 | 859 | then { | |
862 | - | let | |
863 | - | let | |
864 | - | if ($isInstanceOf( | |
865 | - | then | |
866 | - | else throw(($getType( | |
860 | + | let cq = { | |
861 | + | let ah = invoke(this, "processPoolINTERNAL", [bO, cm], nil) | |
862 | + | if ($isInstanceOf(ah, "Boolean")) | |
863 | + | then ah | |
864 | + | else throw(($getType(ah) + " couldn't be cast to Boolean")) | |
867 | 865 | } | |
868 | - | if (( | |
869 | - | then if ( | |
866 | + | if ((cq == cq)) | |
867 | + | then if (cq) | |
870 | 868 | then $Tuple2(nil, true) | |
871 | 869 | else { | |
872 | - | let | |
873 | - | if ($isInstanceOf( | |
870 | + | let cy = cA | |
871 | + | if ($isInstanceOf(cy, "Unit")) | |
874 | 872 | then { | |
875 | - | let | |
876 | - | then [DeleteEntry( | |
877 | - | else [DeleteEntry( | |
878 | - | let | |
879 | - | if (( | |
880 | - | then $Tuple2( | |
873 | + | let bU = if (cm) | |
874 | + | then [DeleteEntry(t), DeleteEntry(z), DeleteEntry(u)] | |
875 | + | else [DeleteEntry(t), BooleanEntry(B(ct), true), IntegerEntry(x, j), IntegerEntry(y, bz), DeleteEntry(u)] | |
876 | + | let cJ = aI() | |
877 | + | if ((cJ == cJ)) | |
878 | + | then $Tuple2(bU, true) | |
881 | 879 | else throw("Strict value is not equal to itself.") | |
882 | 880 | } | |
883 | - | else if ($isInstanceOf( | |
881 | + | else if ($isInstanceOf(cy, "String")) | |
884 | 882 | then { | |
885 | - | let | |
886 | - | $Tuple2([StringEntry( | |
883 | + | let cz = cy | |
884 | + | $Tuple2([StringEntry(u, cz)], true) | |
887 | 885 | } | |
888 | 886 | else throw("Match error") | |
889 | 887 | } | |
890 | 888 | else throw("Strict value is not equal to itself.") | |
891 | 889 | } | |
892 | 890 | else throw("Strict value is not equal to itself.") | |
893 | 891 | } | |
894 | 892 | else throw("Match error") | |
895 | 893 | } | |
896 | - | else | |
894 | + | else Y("finalization is broken") | |
897 | 895 | } | |
898 | 896 | ||
899 | 897 | ||
900 | 898 | ||
901 | - | @Callable( | |
902 | - | func finalizeWrapper ( | |
903 | - | let | |
904 | - | let | |
905 | - | let | |
906 | - | if ($isInstanceOf( | |
907 | - | then | |
908 | - | else throw(($getType( | |
899 | + | @Callable(bj) | |
900 | + | func finalizeWrapper (cK) = { | |
901 | + | let cL = addressFromStringValue(getStringValue(this, o)) | |
902 | + | let cM = { | |
903 | + | let ah = invoke(this, "finalizeHelper", nil, nil) | |
904 | + | if ($isInstanceOf(ah, "Boolean")) | |
905 | + | then ah | |
906 | + | else throw(($getType(ah) + " couldn't be cast to Boolean")) | |
909 | 907 | } | |
910 | - | if (( | |
911 | - | then if (!( | |
912 | - | then if (( | |
913 | - | then | |
908 | + | if ((cM == cM)) | |
909 | + | then if (!(cM)) | |
910 | + | then if ((cK == 0)) | |
911 | + | then Y("Current voting is not over yet") | |
914 | 912 | else { | |
915 | - | let | |
916 | - | if (( | |
913 | + | let cN = invoke(cL, "finalize", nil, nil) | |
914 | + | if ((cN == cN)) | |
917 | 915 | then $Tuple2(nil, unit) | |
918 | 916 | else throw("Strict value is not equal to itself.") | |
919 | 917 | } | |
920 | 918 | else { | |
921 | - | let | |
922 | - | if (( | |
919 | + | let cO = valueOrElse(getInteger(this, l), c) | |
920 | + | if ((cO > cK)) | |
923 | 921 | then { | |
924 | - | let | |
925 | - | if (( | |
922 | + | let cN = invoke(this, "finalizeWrapper", [(cK + 1)], nil) | |
923 | + | if ((cN == cN)) | |
926 | 924 | then $Tuple2(nil, unit) | |
927 | 925 | else throw("Strict value is not equal to itself.") | |
928 | 926 | } | |
929 | 927 | else $Tuple2(nil, unit) | |
930 | 928 | } | |
931 | 929 | else throw("Strict value is not equal to itself.") | |
932 | 930 | } | |
933 | 931 | ||
934 | 932 | ||
935 | 933 | ||
936 | - | @Callable( | |
934 | + | @Callable(bj) | |
937 | 935 | func finalize () = { | |
938 | - | let | |
939 | - | if (( | |
936 | + | let cN = invoke(this, "finalizeWrapper", [0], nil) | |
937 | + | if ((cN == cN)) | |
940 | 938 | then $Tuple2(nil, unit) | |
941 | 939 | else throw("Strict value is not equal to itself.") | |
942 | 940 | } | |
943 | 941 | ||
944 | 942 | ||
945 | 943 | ||
946 | - | @Callable( | |
947 | - | func containsNodeREADONLY ( | |
944 | + | @Callable(bj) | |
945 | + | func containsNodeREADONLY (aO,aS) = $Tuple2(nil, aU(aO, aS)) | |
948 | 946 | ||
949 | 947 | ||
950 | 948 | ||
951 | - | @Callable( | |
952 | - | func insertNode ( | |
953 | - | let | |
954 | - | if (( | |
955 | - | then $Tuple2( | |
949 | + | @Callable(bj) | |
950 | + | func insertNode (aO,aS) = { | |
951 | + | let bP = bl(bj) | |
952 | + | if ((bP == bP)) | |
953 | + | then $Tuple2(aY(aO, aS), unit) | |
956 | 954 | else throw("Strict value is not equal to itself.") | |
957 | 955 | } | |
958 | 956 | ||
959 | 957 | ||
960 | 958 | ||
961 | - | @Callable( | |
962 | - | func deleteNode ( | |
963 | - | let | |
964 | - | if (( | |
965 | - | then $Tuple2( | |
959 | + | @Callable(bj) | |
960 | + | func deleteNode (aO,aS) = { | |
961 | + | let bP = bl(bj) | |
962 | + | if ((bP == bP)) | |
963 | + | then $Tuple2(bb(aO, aS), unit) | |
966 | 964 | else throw("Strict value is not equal to itself.") | |
967 | 965 | } | |
968 | 966 | ||
969 | 967 | ||
970 | 968 | ||
971 | - | @Callable( | |
969 | + | @Callable(bj) | |
972 | 970 | func isFinalizationInProgress () = { | |
973 | - | let | |
974 | - | let | |
975 | - | $Tuple2(nil, | |
971 | + | let bB = getInteger(this, t) | |
972 | + | let cP = (bB != unit) | |
973 | + | $Tuple2(nil, cP) | |
976 | 974 | } | |
977 | 975 | ||
978 | 976 | ||
979 | 977 | ||
980 | - | @Callable( | |
981 | - | func deletePool (G | |
982 | - | let | |
978 | + | @Callable(bj) | |
979 | + | func deletePool (F,G) = { | |
980 | + | let bP = if (if ((bj.caller == am)) | |
983 | 981 | then true | |
984 | - | else | |
982 | + | else bl(bj)) | |
985 | 983 | then true | |
986 | - | else | |
987 | - | if (( | |
984 | + | else Y("Permission denied") | |
985 | + | if ((bP == bP)) | |
988 | 986 | then { | |
989 | - | let | |
990 | - | let | |
991 | - | let | |
992 | - | let | |
993 | - | then | |
987 | + | let aO = "pools" | |
988 | + | let D = $Tuple2(F, G) | |
989 | + | let aS = makeString([F, G], a) | |
990 | + | let bU = if (aU(aO, aS)) | |
991 | + | then bb(aO, aS) | |
994 | 992 | else nil | |
995 | - | ([DeleteEntry(D | |
993 | + | ([DeleteEntry(C(D))] ++ bU) | |
996 | 994 | } | |
997 | 995 | else throw("Strict value is not equal to itself.") | |
998 | 996 | } | |
999 | 997 | ||
1000 | 998 | ||
1001 | 999 | ||
1002 | - | @Callable( | |
1003 | - | func resume (G | |
1004 | - | let | |
1005 | - | let | |
1006 | - | let | |
1007 | - | if ($isInstanceOf( | |
1008 | - | then | |
1009 | - | else throw(($getType( | |
1000 | + | @Callable(bj) | |
1001 | + | func resume (F,G) = { | |
1002 | + | let aF = av(F, G) | |
1003 | + | let cQ = { | |
1004 | + | let ah = invoke(am, "checkBalance", [aF], nil) | |
1005 | + | if ($isInstanceOf(ah, "Boolean")) | |
1006 | + | then ah | |
1007 | + | else throw(($getType(ah) + " couldn't be cast to Boolean")) | |
1010 | 1008 | } | |
1011 | - | let cS = bk.payments[0] | |
1012 | - | let cs = addressFromStringValue(getStringValue(this, t)) | |
1013 | - | let cT = "%s__config" | |
1014 | - | let cU = 1 | |
1015 | - | let bs = addressFromStringValue(ah(this, r)) | |
1016 | - | let cV = fromBase58String(split(getStringValue(bs, cT), a)[cU]) | |
1009 | + | let cR = bj.payments[0] | |
1010 | + | let cr = addressFromStringValue(getStringValue(this, s)) | |
1011 | + | let cS = "%s__config" | |
1012 | + | let cT = 1 | |
1013 | + | let br = addressFromStringValue(ag(this, q)) | |
1014 | + | let cU = fromBase58String(split(getStringValue(br, cS), a)[cT]) | |
1015 | + | let cV = { | |
1016 | + | let ah = invoke(cr, "isVerifiedREADONLY", [F], nil) | |
1017 | + | if ($isInstanceOf(ah, "Boolean")) | |
1018 | + | then ah | |
1019 | + | else throw(($getType(ah) + " couldn't be cast to Boolean")) | |
1020 | + | } | |
1017 | 1021 | let cW = { | |
1018 | - | let | |
1019 | - | if ($isInstanceOf( | |
1020 | - | then | |
1021 | - | else throw(($getType( | |
1022 | + | let ah = invoke(cr, "isVerifiedREADONLY", [G], nil) | |
1023 | + | if ($isInstanceOf(ah, "Boolean")) | |
1024 | + | then ah | |
1025 | + | else throw(($getType(ah) + " couldn't be cast to Boolean")) | |
1022 | 1026 | } | |
1023 | - | let cX = { | |
1024 | - | let ai = invoke(cs, "isVerifiedREADONLY", [H], nil) | |
1025 | - | if ($isInstanceOf(ai, "Boolean")) | |
1026 | - | then ai | |
1027 | - | else throw(($getType(ai) + " couldn't be cast to Boolean")) | |
1028 | - | } | |
1029 | - | let cY = valueOrElse(getInteger(this, n), g) | |
1030 | - | let bv = [if (cR) | |
1027 | + | let cX = valueOrErrorMessage(getInteger(this, m), "invalid resumption fee") | |
1028 | + | let bu = [if (cQ) | |
1031 | 1029 | then true | |
1032 | - | else | |
1030 | + | else Y("insufficient balances"), if ((size(bj.payments) == 1)) | |
1033 | 1031 | then true | |
1034 | - | else | |
1032 | + | else Y("1 payment is required"), if ((cR.assetId == cU)) | |
1035 | 1033 | then true | |
1036 | - | else | |
1034 | + | else Y("invalid payment asset id"), if ((cR.amount == cX)) | |
1037 | 1035 | then true | |
1038 | - | else | |
1039 | - | then | |
1036 | + | else Y("invalid payment amount"), if (if (cV) | |
1037 | + | then cW | |
1040 | 1038 | else false) | |
1041 | 1039 | then true | |
1042 | - | else | |
1043 | - | if (( | |
1040 | + | else Y("both assets should be verified")] | |
1041 | + | if ((bu == bu)) | |
1044 | 1042 | then { | |
1045 | - | let | |
1046 | - | if (( | |
1043 | + | let cY = invoke(am, "setWxEmissionPoolLabel", [F, G], nil) | |
1044 | + | if ((cY == cY)) | |
1047 | 1045 | then { | |
1048 | - | let | |
1049 | - | let | |
1050 | - | $Tuple2( | |
1046 | + | let D = $Tuple2(F, G) | |
1047 | + | let bv = ([BooleanEntry(C(D), true)] ++ aY(aK, aj(D))) | |
1048 | + | $Tuple2(bv, unit) | |
1051 | 1049 | } | |
1052 | 1050 | else throw("Strict value is not equal to itself.") | |
1053 | 1051 | } | |
1054 | 1052 | else throw("Strict value is not equal to itself.") | |
1055 | 1053 | } | |
1056 | 1054 | ||
1057 | 1055 | ||
1058 | - | @Verifier( | |
1059 | - | func | |
1060 | - | let | |
1061 | - | let | |
1062 | - | if ($isInstanceOf( | |
1056 | + | @Verifier(cZ) | |
1057 | + | func da () = { | |
1058 | + | let db = { | |
1059 | + | let ad = bg() | |
1060 | + | if ($isInstanceOf(ad, "ByteVector")) | |
1063 | 1061 | then { | |
1064 | - | let | |
1065 | - | | |
1062 | + | let bk = ad | |
1063 | + | bk | |
1066 | 1064 | } | |
1067 | - | else if ($isInstanceOf( | |
1068 | - | then | |
1065 | + | else if ($isInstanceOf(ad, "Unit")) | |
1066 | + | then cZ.senderPublicKey | |
1069 | 1067 | else throw("Match error") | |
1070 | 1068 | } | |
1071 | - | sigVerify( | |
1069 | + | sigVerify(cZ.bodyBytes, cZ.proofs[0], db) | |
1072 | 1070 | } | |
1073 | 1071 |
github/deemru/w8io/6500d08 649.98 ms ◑