tx · 7KYQJz6bNGU2KQkhS5iu73VCFofNkvPeBrLrqr3JrhF4

3N9Zi6AcWcGbM23jQJ4fnzFsoHoTsxYDznr:  -0.02300000 Waves

2023.05.22 10:07 [2588858] smart account 3N9Zi6AcWcGbM23jQJ4fnzFsoHoTsxYDznr > SELF 0.00000000 Waves

{ "type": 13, "id": "7KYQJz6bNGU2KQkhS5iu73VCFofNkvPeBrLrqr3JrhF4", "fee": 2300000, "feeAssetId": null, "timestamp": 1684739306144, "version": 2, "chainId": 84, "sender": "3N9Zi6AcWcGbM23jQJ4fnzFsoHoTsxYDznr", "senderPublicKey": "GFbasS3jufhZkK4xR7tdTjjnP8K33KvJFEDHRtxXDkaJ", "proofs": [ "x7qwCisDewAQxQw4YLfQmrdy2hVpgL7RRQnnoJaFrBC9oovqST9HVcZ77WMYTFHf9o3Sf1vMH1G9gDnhGTFpMmC" ], "script": "base64:BgLDFggCEgQKAggBEgcKBQgICAgBEgQKAggIEgUKAwgIARIECgIICBIDCgEBEgMKAQESBAoCCAgSBAoCCAQSABIDCgEBEgASBAoCCAgSBAoCCAgSBAoCCAgSACIJc2VwYXJhdG9yIg5wb29sV2VpZ2h0TXVsdCIPbWF4RGVwdGhEZWZhdWx0IhZmaW5hbGl6YXRpb25TdGFnZVRvdGFsIhdmaW5hbGl6YXRpb25TdGFnZVNoYXJlcyIOa2V5RXBvY2hMZW5ndGgiEWtleUVwb2NoTGVuZ3RoTmV3IhVrZXlFcG9jaExlbmd0aEJ5RXBvY2giBWVwb2NoIg9rZXlDdXJyZW50RXBvY2giC2tleU1heERlcHRoIiJrZXlWb3RpbmdFbWlzc2lvbkNhbmRpZGF0ZUNvbnRyYWN0IhJrZXlGYWN0b3J5Q29udHJhY3QiE2tleUJvb3N0aW5nQ29udHJhY3QiEmtleVN0YWtpbmdDb250cmFjdCIUa2V5RmluYWxpemF0aW9uU3RhZ2UiC2tleU5leHRQb29sIgtrZXlOZXh0VXNlciIOa2V5U3RhcnRIZWlnaHQiEWtleUN1cnJlbnRFcG9jaFVpIhBrZXlTdGFydEhlaWdodFVpIh1rZXlGaW5hbGl6YXRpb25TaG91bGRCZUZvcmNlZCIVa2V5U3RhcnRIZWlnaHRCeUVwb2NoIgxrZXlGaW5hbGl6ZWQiCWtleUluTGlzdCIEcG9vbCILJHQwMTY5MzE3MzMiDWFtb3VudEFzc2V0SWQiDHByaWNlQXNzZXRJZCIHa2V5VXNlZCIHYWRkcmVzcyIHa2V5Vm90ZSILJHQwMjAwNzIwNDciD2tleVZvdGluZ1Jlc3VsdCILJHQwMjIyOTIyNjkiFWtleVZvdGluZ1Jlc3VsdFN0YWtlZCIMbHBBc3NldElkU3RyIgxrZXlQb29sU2hhcmUiCyR0MDI1OTAyNjMwIg1rZXlUb3RhbFZvdGVzIg9rZXlTdGFrZWRCeVVzZXIiDnVzZXJBZGRyZXNzU3RyIgd3cmFwRXJyIgNtc2ciCHRocm93RXJyIg5nZXRWYWx1ZU9yRmFpbCIDa2V5IgR0eXBlIgVlcnJvciIHJG1hdGNoMCIDc3RyIgNpbnQiDGdldFN0ck9yRmFpbCIBQCIMZ2V0SW50T3JGYWlsIgxwb29sVG9TdHJpbmciDHN0cmluZ1RvUG9vbCIFcGFydHMiD2ZhY3RvcnlDb250cmFjdCIaSWR4RmFjdG9yeUNmZ0d3eFJld2FyZERhcHAiDWtleUZhY3RvcnlDZmciFHJlYWRGYWN0b3J5Q2ZnT3JGYWlsIgdmYWN0b3J5IhlnZXRHd3hSZXdhcmRBZGRyZXNzT3JGYWlsIgpmYWN0b3J5Q2ZnIhZnZXRMcEFzc2V0QnlQb29sQXNzZXRzIh9rZXlNYXBwaW5nc0Jhc2VBc3NldDJpbnRlcm5hbElkIgxiYXNlQXNzZXRTdHIiKWtleU1hcHBpbmdQb29sQXNzZXRzVG9Qb29sQ29udHJhY3RBZGRyZXNzIhhpbnRlcm5hbEFtb3VudEFzc2V0SWRTdHIiF2ludGVybmFsUHJpY2VBc3NldElkU3RyIh9rZXlNYXBwaW5nUG9vbENvbnRyYWN0VG9MUEFzc2V0IhNwb29sQ29udHJhY3RBZGRyZXNzIhVhbW91bnRBc3NldEludGVybmFsSWQiFHByaWNlQXNzZXRJbnRlcm5hbElkIglscEFzc2V0SWQiGGNoZWNrV3hFbWlzc2lvblBvb2xMYWJlbCILJHQwNTQ3MDU1MTAiEGd3eFJld2FyZERlcG9zaXQiEmd3eFJld2FyZHNDb250cmFjdCINcG9vbHNMaXN0TmFtZSIQZ2V0Vm90ZXNMaXN0TmFtZSILJHQwNTkyNzU5NjciC2tleUxpc3RIZWFkIghsaXN0TmFtZSIEbWV0YSILa2V5TGlzdFNpemUiC2tleUxpc3RQcmV2IgJpZCILa2V5TGlzdE5leHQiDGNvbnRhaW5zTm9kZSIKaGVhZE9yVW5pdCIKcHJldk9yVW5pdCIKbmV4dE9yVW5pdCIRaW5zZXJ0Tm9kZUFjdGlvbnMiCGxpc3RTaXplIgljaGVja05vZGUiEWRlbGV0ZU5vZGVBY3Rpb25zIhZrZXlNYW5hZ2VyVmF1bHRBZGRyZXNzIhNrZXlNYW5hZ2VyUHVibGljS2V5IhxnZXRNYW5hZ2VyVmF1bHRBZGRyZXNzT3JUaGlzIgFzIhZtYW5hZ2VyUHVibGljS2V5T3JVbml0IhNtYW5hZ2VyVmF1bHRBZGRyZXNzIglpc01hbmFnZXIiAWkiAnBrIgttdXN0TWFuYWdlciIIbXVzdFRoaXMiC3VzZXJBZGRyZXNzIgx0YXJnZXRIZWlnaHQiF2Jvb3N0aW5nQ29udHJhY3RBZGRyZXNzIh92b3RpbmdFbWlzc2lvbkNhbmRpZGF0ZUNvbnRyYWN0IhBib29zdGluZ0NvbnRyYWN0Ig9zdGFraW5nQ29udHJhY3QiC2Vwb2NoTGVuZ3RoIgZjaGVja3MiDWluTGlzdEFjdGlvbnMiGGN1cnJlbnRFcG9jaElzTm90RGVmaW5lZCISc3RhcnRIZWlnaHRBY3Rpb25zIgZhbW91bnQiC3N0YXJ0SGVpZ2h0IgllbmRIZWlnaHQiF2ZpbmFsaXphdGlvblN0YWdlT3JVbml0IgR1c2VkIgR2b3RlIgpwb29sUmVzdWx0Igp0b3RhbFZvdGVzIhNnd3hBbW91bnRBdEVuZFRvdGFsIglhdmFpbGFibGUiB25ld1ZvdGUiCnd4RW1pc3Npb24iDXZvdGVzTGlzdE5hbWUiEHZvdGVzTGlzdEFjdGlvbnMiDm5ld0Vwb2NoTGVuZ3RoIgtuZXdNYXhEZXB0aCIHcG9vbFN0ciILY2hlY2tDYWxsZXIiDWVwb2NoUHJldmlvdXMiE3N0YXJ0SGVpZ2h0UHJldmlvdXMiE2Vwb2NoTGVuZ3RoUHJldmlvdXMiEWVuZEhlaWdodFByZXZpb3VzIhBjaGVja1RhcmdldEVwb2NoIg0kdDAxNzk3MDE4MDEwIhtnd3hBbW91bnRBdEVuZFRvdGFsUHJldmlvdXMiDHZvdGluZ1Jlc3VsdCIMdm90ZVByZXZpb3VzIhp2b3RpbmdSZXN1bHRTdGFrZWRQcmV2aW91cyIMc3Rha2VkQnlVc2VyIhl2b3RpbmdSZXN1bHRTdGFrZWRBY3Rpb25zIgdhY3Rpb25zIgVmb3JjZSILdGFyZ2V0RXBvY2giDGN1cnJlbnRFcG9jaCINJHQwMjAzNjcyMDQwNyIBciIFc2hhcmUiD21vZGlmeVdlaWdodEludiIQcG9vbHNMaXN0QWN0aW9ucyINcHJldmlvdXNFcG9jaCIIbmV3RXBvY2giFG5ld0Vwb2NoTGVuZ3RoT3B0aW9uIhVuZXdFcG9jaExlbmd0aEFjdGlvbnMiCnBvb2xPclVuaXQiCnVzZXJPclVuaXQiByRtYXRjaDEiDHBvb2xzSGVhZFN0ciIObmV4dFVzZXJPclVuaXQiBHVzZXIiBG5leHQiDnByb2Nlc3NWb3RlSW52Ig5uZXh0UG9vbE9yVW5pdCIHJG1hdGNoMiIIbmV4dFVzZXIiE2d3eFJld2FyZERlcG9zaXRJbnYiC25leHRQb29sU3RyIgdjb3VudGVyIgZyZXN1bHQiCG1heERlcHRoIgNpbnYiFmZpbmFsaXphdGlvbkluUHJvZ3Jlc3MiAnR4IgZ2ZXJpZnkiD3RhcmdldFB1YmxpY0tleT4AAWECAl9fAAFiAIDC1y8AAWMACgABZAAAAAFlAAEAAWYJALkJAgkAzAgCAgIlcwkAzAgCAgtlcG9jaExlbmd0aAUDbmlsBQFhAAFnCQC5CQIJAMwIAgIEJXMlcwkAzAgCAhBlcG9jaExlbmd0aF9fbmV3BQNuaWwFAWEBAWgBAWkJALkJAgkAzAgCAgQlcyVkCQDMCAICC2Vwb2NoTGVuZ3RoCQDMCAIJAKQDAQUBaQUDbmlsBQFhAAFqCQC5CQIJAMwIAgICJXMJAMwIAgIMY3VycmVudEVwb2NoBQNuaWwFAWEAAWsJALkJAgkAzAgCAgIlcwkAzAgCAghtYXhEZXB0aAUDbmlsBQFhAAFsCQC5CQIJAMwIAgICJXMJAMwIAgIfdm90aW5nRW1pc3Npb25DYW5kaWRhdGVDb250cmFjdAUDbmlsBQFhAAFtCQC5CQIJAMwIAgICJXMJAMwIAgIPZmFjdG9yeUNvbnRyYWN0BQNuaWwFAWEAAW4JALkJAgkAzAgCAgIlcwkAzAgCAhBib29zdGluZ0NvbnRyYWN0BQNuaWwFAWEAAW8JALkJAgkAzAgCAgIlcwkAzAgCAg9zdGFraW5nQ29udHJhY3QFA25pbAUBYQABcAkAuQkCCQDMCAICAiVzCQDMCAICEWZpbmFsaXphdGlvblN0YWdlBQNuaWwFAWEAAXEJALkJAgkAzAgCAgIlcwkAzAgCAghuZXh0UG9vbAUDbmlsBQFhAAFyCQC5CQIJAMwIAgICJXMJAMwIAgIIbmV4dFVzZXIFA25pbAUBYQABcwkAuQkCCQDMCAICAiVzCQDMCAICC3N0YXJ0SGVpZ2h0BQNuaWwFAWEAAXQJALkJAgkAzAgCAgIlcwkAzAgCAg5jdXJyZW50RXBvY2hVaQUDbmlsBQFhAAF1CQC5CQIJAMwIAgICJXMJAMwIAgINc3RhcnRIZWlnaHRVaQUDbmlsBQFhAAF2CQC5CQIJAMwIAgICJXMJAMwIAgIFZm9yY2UFA25pbAUBYQEBdwEBaQkAuQkCCQDMCAICBCVzJWQJAMwIAgILc3RhcnRIZWlnaHQJAMwIAgkApAMBBQFpBQNuaWwFAWEBAXgBAWkJALkJAgkAzAgCAgQlcyVkCQDMCAICCWZpbmFsaXplZAkAzAgCCQCkAwEFAWkFA25pbAUBYQEBeQEBegQBQQUBegQBQggFAUECXzEEAUMIBQFBAl8yCQC5CQIJAMwIAgIGJXMlcyVzCQDMCAICBmluTGlzdAkAzAgCBQFCCQDMCAIFAUMFA25pbAUBYQEBRAIBRQFpCQC5CQIJAMwIAgIGJXMlcyVkCQDMCAICBHVzZWQJAMwIAgkApQgBBQFFCQDMCAIJAKQDAQUBaQUDbmlsBQFhAQFGAwF6AUUBaQQBRwUBegQBQggFAUcCXzEEAUMIBQFHAl8yCQC5CQIJAMwIAgIKJXMlcyVzJXMlZAkAzAgCAgR2b3RlCQDMCAIFAUIJAMwIAgUBQwkAzAgCCQClCAEFAUUJAMwIAgkApAMBBQFpBQNuaWwFAWEBAUgCAXoBaQQBSQUBegQBQggFAUkCXzEEAUMIBQFJAl8yCQC5CQIJAMwIAgIIJXMlcyVzJWQJAMwIAgIMdm90aW5nUmVzdWx0CQDMCAIFAUIJAMwIAgUBQwkAzAgCCQCkAwEFAWkFA25pbAUBYQEBSgIBSwFpCQC5CQIJAMwIAgIGJXMlcyVkCQDMCAICEnZvdGluZ1Jlc3VsdFN0YWtlZAkAzAgCBQFLCQDMCAIJAKQDAQUBaQUDbmlsBQFhAQFMAgF6AWkEAU0FAXoEAUIIBQFNAl8xBAFDCAUBTQJfMgkAuQkCCQDMCAICCCVzJXMlcyVkCQDMCAICCXBvb2xTaGFyZQkAzAgCBQFCCQDMCAIFAUMJAMwIAgkApAMBBQFpBQNuaWwFAWEBAU4BAWkJALkJAgkAzAgCAgQlcyVkCQDMCAICCnRvdGFsVm90ZXMJAMwIAgkApAMBBQFpBQNuaWwFAWEBAU8CAUsBUAkAuQkCCQDMCAICBiVzJXMlcwkAzAgCAgZzdGFrZWQJAMwIAgUBUAkAzAgCBQFLBQNuaWwFAWEBAVEBAVIJALkJAgkAzAgCAhV2b3RpbmdfZW1pc3Npb24ucmlkZToJAMwIAgUBUgUDbmlsAgEgAQFTAQFSCQACAQkBAVEBBQFSAQFUAwFFAVUBVgQBVwkBAVEBCQC5CQIJAMwIAgIKbWFuZGF0b3J5IAkAzAgCCQClCAEFAUUJAMwIAgIBLgkAzAgCBQFVCQDMCAICDyBpcyBub3QgZGVmaW5lZAUDbmlsAgAJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgQBWAUBVgMJAAECBQFYAgZTdHJpbmcEAVkFAVgJAJ0IAgUBRQUBVQMJAAECBQFYAgNJbnQEAVoFAVgJAJoIAgUBRQUBVQkBAVMBAhJpbnZhbGlkIGVudHJ5IHR5cGUFAVcBAmFhAgFFAVUKAAJhYgkBAVQDBQFFBQFVAgADCQABAgUCYWICBlN0cmluZwUCYWIJAAIBCQCsAgIJAAMBBQJhYgIbIGNvdWxkbid0IGJlIGNhc3QgdG8gU3RyaW5nAQJhYwIBRQFVCgACYWIJAQFUAwUBRQUBVQAAAwkAAQIFAmFiAgNJbnQFAmFiCQACAQkArAICCQADAQUCYWICGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAECYWQBAXoJAKwCAgkArAICCAUBegJfMQUBYQgFAXoCXzIBAmFlAQFZBAJhZgkAtQkCBQFZBQFhAwkAAAIJAJADAQUCYWYAAgkAlAoCCQCRAwIFAmFmAAAJAJEDAgUCYWYAAQkBAVMBAhNpbnZhbGlkIHBvb2wgc3RyaW5nAAJhZwkBEUBleHRyTmF0aXZlKDEwNjIpAQkBAmFhAgUEdGhpcwUBbQACYWgACgECYWkAAhElc19fZmFjdG9yeUNvbmZpZwECYWoBAmFrCQC1CQIJAQJhYQIFAmFrCQECYWkABQFhAQJhbAECYW0JARFAZXh0ck5hdGl2ZSgxMDYyKQEJAJEDAgUCYW0FAmFoAQJhbgIBQgFDCgECYW8BAmFwCQCsAgICKCVzJXMlc19fbWFwcGluZ3NfX2Jhc2VBc3NldDJpbnRlcm5hbElkX18FAmFwCgECYXECAmFyAmFzCQCsAgIJAKwCAgkArAICCQCsAgICCiVkJWQlcyVzX18JAKQDAQUCYXICAl9fCQCkAwEFAmFzAiNfX21hcHBpbmdzX19wb29sQXNzZXRzMlBvb2xDb250cmFjdAoBAmF0AQJhdQkArAICCQCsAgICCCVzJXMlc19fBQJhdQIgX19tYXBwaW5nc19fcG9vbENvbnRyYWN0MkxwQXNzZXQEAmF2CQECYWMCBQJhZwkBAmFvAQUBQgQCYXcJAQJhYwIFAmFnCQECYW8BBQFDBAJhdQkBAmFhAgUCYWcJAQJhcQIFAmF2BQJhdwQCYXgJAQJhYQIFAmFnCQECYXQBBQJhdQUCYXgBAmF5AQF6BAJhegUBegQBQggFAmF6Al8xBAFDCAUCYXoCXzIKAAJhYgkA/AcEBQJhZwIYY2hlY2tXeEVtaXNzaW9uUG9vbExhYmVsCQDMCAIFAUIJAMwIAgUBQwUDbmlsBQNuaWwDCQABAgUCYWICB0Jvb2xlYW4FAmFiCQACAQkArAICCQADAQUCYWICHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4BAmFBAAQCYW0JAQJhagEFAmFnBAJhQgkBAmFsAQUCYW0JAPwHBAUCYUICB2RlcG9zaXQFA25pbAUDbmlsAAJhQwIFcG9vbHMBAmFEAQF6BAJhRQUBegQBQggFAmFFAl8xBAFDCAUCYUUCXzIJALkJAgkAzAgCAgV2b3RlcwkAzAgCBQFCCQDMCAIFAUMFA25pbAUBYQECYUYBAmFHBAJhSAMJAAACBQJhRwUCYUMCBCVzJXMCCCVzJXMlcyVzCQC5CQIJAMwIAgUCYUgJAMwIAgUCYUcJAMwIAgIEaGVhZAUDbmlsBQFhAQJhSQECYUcEAmFIAwkAAAIFAmFHBQJhQwIEJXMlcwIIJXMlcyVzJXMJALkJAgkAzAgCBQJhSAkAzAgCBQJhRwkAzAgCAgRzaXplBQNuaWwFAWEBAmFKAgJhRwJhSwQCYUgDCQAAAgUCYUcFAmFDAgglcyVzJXMlcwIKJXMlcyVzJXMlcwkAuQkCCQDMCAIFAmFICQDMCAIFAmFHCQDMCAIFAmFLCQDMCAICBHByZXYFA25pbAUBYQECYUwCAmFHAmFLBAJhSAMJAAACBQJhRwUCYUMCCCVzJXMlcyVzAgolcyVzJXMlcyVzCQC5CQIJAMwIAgUCYUgJAMwIAgUCYUcJAMwIAgUCYUsJAMwIAgIEbmV4dAUDbmlsBQFhAQJhTQICYUcCYUsEAmFOCQCdCAIFBHRoaXMJAQJhRgEFAmFHBAJhTwkAnQgCBQR0aGlzCQECYUoCBQJhRwUCYUsEAmFQCQCdCAIFBHRoaXMJAQJhTAIFAmFHBQJhSwMDCQAAAgUCYUsJAQt2YWx1ZU9yRWxzZQIFAmFOAgAGCQECIT0CBQJhTwUEdW5pdAYJAQIhPQIFAmFQBQR1bml0AQJhUQICYUcCYUsEAmFOCQCdCAIFBHRoaXMJAQJhRgEFAmFHBAJhUgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQECYUkBBQJhRwAABAJhUwMJAQEhAQkBAmFNAgUCYUcFAmFLBgkBAVMBAgtOb2RlIGV4aXN0cwMJAAACBQJhUwUCYVMJAM4IAgkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYUkBBQJhRwkAZAIFAmFSAAEFA25pbAMJAQIhPQIFAmFOBQR1bml0CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhTAIFAmFHBQJhSwkBBXZhbHVlAQUCYU4JAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFKAgUCYUcJAQV2YWx1ZQEFAmFOBQJhSwUDbmlsBQNuaWwJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFGAQUCYUcFAmFLBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmFUAgJhRwJhSwQCYU4JAJ0IAgUEdGhpcwkBAmFGAQUCYUcEAmFSCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAQJhSQEFAmFHAAAEAmFPCQCdCAIFBHRoaXMJAQJhSgIFAmFHBQJhSwQCYVAJAJ0IAgUEdGhpcwkBAmFMAgUCYUcFAmFLCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJhSQEFAmFHCQBlAgUCYVIAAQUDbmlsAwMJAQIhPQIFAmFPBQR1bml0CQECIT0CBQJhUAUEdW5pdAcJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFMAgUCYUcJAQV2YWx1ZQEFAmFPCQEFdmFsdWUBBQJhUAkAzAgCCQELU3RyaW5nRW50cnkCCQECYUoCBQJhRwkBBXZhbHVlAQUCYVAJAQV2YWx1ZQEFAmFPCQDMCAIJAQtEZWxldGVFbnRyeQEJAQJhSgIFAmFHBQJhSwkAzAgCCQELRGVsZXRlRW50cnkBCQECYUwCBQJhRwUCYUsFA25pbAMJAQIhPQIFAmFQBQR1bml0CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhRgEFAmFHCQEFdmFsdWUBBQJhUAkAzAgCCQELRGVsZXRlRW50cnkBCQECYUwCBQJhRwUCYUsJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAmFKAgUCYUcJAQV2YWx1ZQEFAmFQBQNuaWwDCQECIT0CBQJhTwUEdW5pdAkAzAgCCQELRGVsZXRlRW50cnkBCQECYUoCBQJhRwUCYUsJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAmFMAgUCYUcJAQV2YWx1ZQEFAmFPBQNuaWwDCQAAAgUCYUsJAQt2YWx1ZU9yRWxzZQIFAmFOAgAJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAmFGAQUCYUcFA25pbAkBAVMBCQCsAgIJAKwCAgkArAICAg5pbnZhbGlkIG5vZGU6IAUCYUcCAS4FAmFLAQJhVQACFyVzX19tYW5hZ2VyVmF1bHRBZGRyZXNzAQJhVgACFCVzX19tYW5hZ2VyUHVibGljS2V5AQJhVwAEAVgJAKIIAQkBAmFVAAMJAAECBQFYAgZTdHJpbmcEAmFYBQFYCQERQGV4dHJOYXRpdmUoMTA2MikBBQJhWAUEdGhpcwECYVkABAJhWgkBAmFXAAQBWAkAnQgCBQJhWgkBAmFWAAMJAAECBQFYAgZTdHJpbmcEAmFYBQFYCQDZBAEFAmFYAwkAAQIFAVgCBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgECYmEBAmJiBAFYCQECYVkAAwkAAQIFAVgCCkJ5dGVWZWN0b3IEAmJjBQFYCQAAAggFAmJiD2NhbGxlclB1YmxpY0tleQUCYmMDCQABAgUBWAIEVW5pdAkAAAIIBQJiYgZjYWxsZXIFBHRoaXMJAAIBAgtNYXRjaCBlcnJvcgECYmQBAmJiAwkBAmJhAQUCYmIGCQACAQIRcGVybWlzc2lvbiBkZW5pZWQBAmJlAQJiYgMJAAACCAUCYmIGY2FsbGVyBQR0aGlzBgkAAgECEXBlcm1pc3Npb24gZGVuaWVkEAJiYgEYZ2V0VXNlckd3eEFtb3VudEF0SGVpZ2h0AgJiZgJiZwQCYmgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQECYWECBQR0aGlzBQFuCQEBUQECIWludmFsaWQgYm9vc3RpbmcgY29udHJhY3QgYWRkcmVzcwkAlAoCBQNuaWwKAAJhYgkA/AcEBQJiaAIgZ2V0VXNlckd3eEFtb3VudEF0SGVpZ2h0UkVBRE9OTFkJAMwIAgUCYmYJAMwIAgUCYmcFA25pbAUDbmlsAwkAAQIFAmFiAgNJbnQFAmFiCQACAQkArAICCQADAQUCYWICGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAJiYgELY29uc3RydWN0b3IFAmFnAmJpAmJqAmJrAmJsBAJibQkAzAgCCQECYmQBBQJiYgkAzAgCAwkBAiE9AgkApggBBQJhZwUEdW5pdAYCIGludmFsaWQgZmFjdG9yeSBjb250cmFjdCBhZGRyZXNzCQDMCAIDCQECIT0CCQCmCAEFAmJpBQR1bml0BgIyaW52YWxpZCB2b3RpbmcgZW1pc3Npb24gY2FuZGlkYXRlIGNvbnRyYWN0IGFkZHJlc3MJAMwIAgMJAQIhPQIJAKYIAQUCYmoFBHVuaXQGAiFpbnZhbGlkIGJvb3N0aW5nIGNvbnRyYWN0IGFkZHJlc3MJAMwIAgMJAQIhPQIJAKYIAQUCYmsFBHVuaXQGAiBpbnZhbGlkIHN0YWtpbmcgY29udHJhY3QgYWRkcmVzcwkAzAgCAwkAZgIFAmJsAAAGCQEBUwECFGludmFsaWQgZXBvY2ggbGVuZ3RoBQNuaWwDCQAAAgUCYm0FAmJtCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgUBbQUCYWcJAMwIAgkBC1N0cmluZ0VudHJ5AgUBbAUCYmkJAMwIAgkBC1N0cmluZ0VudHJ5AgUBbgUCYmoJAMwIAgkBC1N0cmluZ0VudHJ5AgUBbwUCYmsJAMwIAgkBDEludGVnZXJFbnRyeQIFAWYFAmJsBQNuaWwFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CYmIBBmNyZWF0ZQIBQgFDBAJibQkAzAgCAwkAAAIJANgEAQgIBQJiYgZjYWxsZXIFYnl0ZXMJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwUBbAIABgkBAmJkAQUCYmIFA25pbAMJAAACBQJibQUCYm0EAXoJAJQKAgUBQgUBQwQCYm4JAM4IAgkAzAgCCQEMQm9vbGVhbkVudHJ5AgkBAXkBBQF6BgUDbmlsCQECYVECBQJhQwkBAmFkAQUBegQCYm8JAAACCQCaCAIFBHRoaXMFAWoFBHVuaXQEAmJwAwUCYm8EAWkAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgUBagUBaQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAXcBBQFpBQZoZWlnaHQJAMwIAgkBDEludGVnZXJFbnRyeQIFAXMFBmhlaWdodAkAzAgCCQEMSW50ZWdlckVudHJ5AgUBdAUBaQkAzAgCCQEMSW50ZWdlckVudHJ5AgUBdQUGaGVpZ2h0BQNuaWwFA25pbAkAlAoCCQDOCAIFAmJuBQJicAUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJiYgEEdm90ZQMBQgFDAmJxBAF6CQCUCgIFAUIFAUMEAWkJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUBagAABAJicgkBAmFjAgUEdGhpcwkBAXcBBQFpBAJibAkBAmFjAgUEdGhpcwUBZgQCYnMJAGQCBQJicgUCYmwEAmJ0CQCaCAIFBHRoaXMFAXAEAmJ1CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAQFEAggFAmJiBmNhbGxlcgUBaQAABAJidgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQEBRgMFAXoIBQJiYgZjYWxsZXIFAWkAAAQCYncJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBAUgCBQF6BQFpAAAEAmJ4CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAQFOAQUBaQAABAJieQoAAmFiCQD8BwQFBHRoaXMCGGdldFVzZXJHd3hBbW91bnRBdEhlaWdodAkAzAgCCQDYBAEICAUCYmIGY2FsbGVyBWJ5dGVzCQDMCAIFAmJzBQNuaWwFA25pbAMJAAECBQJhYgIDSW50BQJhYgkAAgEJAKwCAgkAAwEFAmFiAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQEAmJ6CQBlAgUCYnkFAmJ1BAJiQQkAZAIFAmJ2BQJicQQCYkIJAQJheQEFAXoEAmJtCQDMCAIDCQECIT0CCQCgCAEJAQF5AQUBegUEdW5pdAYJAQFTAQIOaW52YWxpZCBhc3NldHMJAMwIAgMJAGYCBQJicwUGaGVpZ2h0BgkBAVMBAg5pbnZhbGlkIGhlaWdodAkAzAgCAwkAAAIFAmJ0BQR1bml0BgkBAVMBAhhmaW5hbGl6YXRpb24gaW4gcHJvZ3Jlc3MJAMwIAgMJAGYCBQJieQAABgkBAVMBAhN5b3UgZG8gbm90IGhhdmUgZ1dYCQDMCAIDAwkAZgIFAmJxAAAJAGcCBQJiegUCYnEHBgkBAVMBAg5pbnZhbGlkIGFtb3VudAkAzAgCAwUCYkIGCQEBUwECHXBvb2wgaGFzbid0IFdYX0VNSVNTSU9OIGxhYmVsBQNuaWwDCQAAAgUCYm0FAmJtBAJiQwkBAmFEAQUBegQBUAkApQgBCAUCYmIGY2FsbGVyBAJiRAMJAQJhTQIFAmJDBQFQBQNuaWwJAQJhUQIFAmJDBQFQCQCUCgIJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAUQCCAUCYmIGY2FsbGVyBQFpCQBkAgUCYnUFAmJxCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBRgMFAXoIBQJiYgZjYWxsZXIFAWkFAmJBCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBSAIFAXoFAWkJAGQCBQJidwUCYnEJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFOAQUBaQkAZAIFAmJ4BQJicQUDbmlsBQJiRAUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJiYgEKY2FuY2VsVm90ZQIBQgFDBAF6CQCUCgIFAUIFAUMEAWkJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUBagAABAJicgkBAmFjAgUEdGhpcwkBAXcBBQFpBAJibAkBAmFjAgUEdGhpcwUBZgQCYnMJAGQCBQJicgUCYmwEAmJ0CQCaCAIFBHRoaXMFAXAEAmJ1CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAQFEAggFAmJiBmNhbGxlcgUBaQAABAJidgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQEBRgMFAXoIBQJiYgZjYWxsZXIFAWkAAAQCYncJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBAUgCBQF6BQFpAAAEAmJ4CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAQFOAQUBaQAABAJibQkAzAgCAwkBAiE9AgkAoAgBCQEBeQEFAXoFBHVuaXQGCQEBUwECDmludmFsaWQgYXNzZXRzCQDMCAIDCQBmAgUCYnMFBmhlaWdodAYJAQFTAQIOaW52YWxpZCBoZWlnaHQJAMwIAgMJAAACBQJidAUEdW5pdAYJAQFTAQIYZmluYWxpemF0aW9uIGluIHByb2dyZXNzCQDMCAIDCQBmAgUCYnYAAAYJAQFTAQIHbm8gdm90ZQUDbmlsAwkAAAIFAmJtBQJibQQCYkMJAQJhRAEFAXoEAVAJAKUIAQgFAmJiBmNhbGxlcgkAlAoCCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFEAggFAmJiBmNhbGxlcgUBaQkAlgMBCQDMCAIJAGUCBQJidQUCYnYJAMwIAgAABQNuaWwJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAUYDBQF6CAUCYmIGY2FsbGVyBQFpCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBSAIFAXoFAWkJAGUCBQJidwUCYnYJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFOAQUBaQkAZQIFAmJ4BQJidgUDbmlsCQECYVQCBQJiQwUBUAUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJiYgEOc2V0RXBvY2hMZW5ndGgBAmJFBAJibQkAzAgCCQECYmQBBQJiYgkAzAgCAwkAZgIFAmJFAAAGCQEBUwECFGludmFsaWQgZXBvY2ggbGVuZ3RoBQNuaWwDCQAAAgUCYm0FAmJtCQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIFAWcFAmJFBQNuaWwFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CYmIBC3NldE1heERlcHRoAQJiRgQCYm0JAMwIAgkBAmJkAQUCYmIJAMwIAgMJAGYCBQJiRgAABgkBAVMBAhFpbnZhbGlkIG1heCBkZXB0aAUDbmlsAwkAAAIFAmJtBQJibQkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQFrBQJiRgUDbmlsBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmJiARNwcm9jZXNzVm90ZUlOVEVSTkFMAgJiRwFQBAJiSAkBAmJlAQUCYmIDCQAAAgUCYkgFAmJIBAJiZgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEFAVAJAQFRAQkArAICAipwcm9jZXNzVm90ZUlOVEVSTkFMOiBpbnZhbGlkIHVzZXIgYWRkcmVzcyAFAVAEAWkJAQJhYwIFBHRoaXMFAWoEAmJJCQBlAgUBaQABBAJibAkBAmFjAgUEdGhpcwUBZgQCYnIJAQJhYwIFBHRoaXMJAQF3AQUBaQQCYnMJAGQCBQJicgUCYmwEAmJKCQECYWMCBQR0aGlzCQEBdwEFAmJJBAJiSwkBAmFjAgUEdGhpcwkBAWgBBQJiSQQCYkwJAGQCBQJiSgUCYksEAmJNAwkAZwIFAmJJAAAGCQEBUwECK3Byb2Nlc3NWb3RlSU5URVJOQUw6IGludmFsaWQgcHJldmlvdXMgZXBvY2gDCQAAAgUCYk0FAmJNBAF6CQECYWUBBQJiRwQCYk4FAXoEAUIIBQJiTgJfMQQBQwgFAmJOAl8yBAJiQgkBAmF5AQUBegQCYnkKAAJhYgkA/AcEBQR0aGlzAhhnZXRVc2VyR3d4QW1vdW50QXRIZWlnaHQJAMwIAgUBUAkAzAgCBQJicwUDbmlsBQNuaWwDCQABAgUCYWICA0ludAUCYWIJAAIBCQCsAgIJAAMBBQJhYgIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50BAJiTwoAAmFiCQD8BwQFBHRoaXMCGGdldFVzZXJHd3hBbW91bnRBdEhlaWdodAkAzAgCBQFQCQDMCAIFAmJMBQNuaWwFA25pbAMJAAECBQJhYgIDSW50BQJhYgkAAgEJAKwCAgkAAwEFAmFiAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQEAmJ4CQELdmFsdWVPckVsc2UCCQCfCAEJAQFOAQUBaQAABAJiUAkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEBSAIFAXoFAWkAAAQCYlEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnwgBCQEBRgMFAXoFAmJmBQJiSQkBAVEBCQCsAgIJAKwCAgkArAICCQCsAgICFHByb2Nlc3NWb3RlSU5URVJOQUwgBQJiRwIBIAUBUAISOiBubyBwcmV2aW91cyB2b3RlBAJidQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQEBRAIFAmJmBQFpAAAEAUsJAQJhbgIFAUIFAUMEAmJSCQELdmFsdWVPckVsc2UCCQCfCAEJAQFKAgUBSwUCYkkAAAQCYmsJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQJhYQIFBHRoaXMFAW8EAmJTCQELdmFsdWVPckVsc2UCCQCaCAIFAmJrCQEBTwIFAUsFAVAAAAQCYlQDCQAAAgUCYlMAAAUDbmlsCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBSgIFAUsFAmJJCQBkAgUCYlIFAmJRBQNuaWwEAmJBAwkAZgIFAmJPAAAJAGsDBQJiUQUCYnkFAmJPAAAEAmJVAwMJAGYCBQJiQQAABQJiQgcJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFGAwUBegUCYmYFAWkFAmJBCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBTgEFAWkJAGQCBQJieAUCYkEJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFIAgUBegUBaQkAZAIFAmJQBQJiQQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAUQCBQJiZgUBaQkAZAIFAmJ1BQJiQQUDbmlsCQECYVQCCQECYUQBBQF6BQFQCQCUCgIJAM4IAgUCYlUFAmJUBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmJiARNwcm9jZXNzUG9vbElOVEVSTkFMAgJiRwJiVgQCYkgJAQJiZQEFAmJiAwkAAAIFAmJIBQJiSAQCYlcEAmJYCQECYWMCBQR0aGlzBQFqAwUCYlYFAmJYCQBlAgUCYlgAAQQCYk0DCQBnAgUCYlcAAAYJAQFTAQIpcHJvY2Vzc1Bvb2xJTlRFUk5BTDogaW52YWxpZCB0YXJnZXQgZXBvY2gDCQAAAgUCYk0FAmJNBAF6CQECYWUBBQJiRwQCYlkFAXoEAUIIBQJiWQJfMQQBQwgFAmJZAl8yBAJiawkBEUBleHRyTmF0aXZlKDEwNjIpAQkBAmFhAgUEdGhpcwUBbwQCYXgJAQJhbgIFAUIFAUMEAmJaCgACYWIJAPwHBAUCYmsCEnVzZXJzTGlzdFRyYXZlcnNhbAkAzAgCBQJheAUDbmlsBQNuaWwDCQABAgUCYWICB0Jvb2xlYW4FAmFiCQACAQkArAICCQADAQUCYWICHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4DCQAAAgUCYloFAmJaAwUCYloJAJQKAgUDbmlsBgQCYkIJAQJheQEFAXoEAmJ4CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAQFOAQUCYlcAAAQCYlAJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBAUgCBQF6BQJiVwAABAJjYQMDCQAAAgUCYngAAAYJAQEhAQUCYkIAAAkAawMFAmJQBQFiBQJieAQCY2IJAPwHBAUCYWcCDG1vZGlmeVdlaWdodAkAzAgCBQJheAkAzAgCBQJjYQUDbmlsBQNuaWwDCQAAAgUCY2IFAmNiBAJjYwMDBQJiQgYFAmJWBQNuaWwJAM4IAgkAzAgCCQELRGVsZXRlRW50cnkBCQEBeQEFAXoFA25pbAkBAmFUAgUCYUMFAmJHCQCUCgIJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAUwCBQF6BQJiVwUCY2EFA25pbAUCY2MHCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmJiAQ5maW5hbGl6ZUhlbHBlcgAEAmJWCQELdmFsdWVPckVsc2UCCQCgCAEFAXYHBAFpCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFAWoAAAQCY2QJAGUCBQFpAAEEAmJyCQECYWMCBQR0aGlzCQEBdwEFAWkEAmJsCQECYWMCBQR0aGlzBQFmBAJicwkAZAIFAmJyBQJibAQCYnQJAJoIAgUEdGhpcwUBcAMDAwkAZwIFBmhlaWdodAUCYnMJAAACBQJidAUEdW5pdAcJAQEhAQUCYlYHBAJjZQkAZAIFAWkAAQQCY2YJAJoIAgUEdGhpcwUBZwQCY2cEAVgFAmNmAwkAAQIFAVgCA0ludAQCYkUFAVgJAMwIAgkBDEludGVnZXJFbnRyeQIFAWYFAmJFCQDMCAIJAQtEZWxldGVFbnRyeQEFAWcFA25pbAMJAAECBQFYAgRVbml0BQNuaWwJAAIBAgtNYXRjaCBlcnJvcgkAlAoCCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIJAQF3AQUCY2UFBmhlaWdodAkAzAgCCQEMSW50ZWdlckVudHJ5AgUBcwUGaGVpZ2h0CQDMCAIJAQxJbnRlZ2VyRW50cnkCBQFqBQJjZQkAzAgCCQEMSW50ZWdlckVudHJ5AgUBcAUBZAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAWgBBQFpBQJibAUDbmlsBQJjZwYDAwUCYlYJAAACBQJidAUEdW5pdAcJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUBcAUBZQUDbmlsBgMJAAACBQJidAUEdW5pdAkAlAoCBQNuaWwHAwkAAAIFAmJ0BQFkBAJjaAkAoggBBQFxBAJjaQkAoggBBQFyBAFYBQJjaAMJAAECBQFYAgRVbml0BAJjagkAoggBCQECYUYBBQJhQwMJAAECBQJjagIEVW5pdAkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQFwBQFlCQDMCAIJAQtEZWxldGVFbnRyeQEFAXEJAMwIAgkBC0RlbGV0ZUVudHJ5AQUBcgUDbmlsBgMJAAECBQJjagIGU3RyaW5nBAJjawUCY2oJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCBQFxBQJjawUDbmlsBgkAAgECC01hdGNoIGVycm9yAwkAAQIFAVgCBlN0cmluZwQCYkcFAVgEAXoJAQJhZQEFAmJHBAJjbAQCY2oFAmNpAwkAAQIFAmNqAgRVbml0CQCiCAEJAQJhRgEJAQJhRAEFAXoDCQABAgUCY2oCBlN0cmluZwQCY20FAmNqBAJjbgkAoggBCQECYUwCCQECYUQBBQF6BQJjbQMJAAACBQJjbgUCY24EAmNvCQD8BwQFBHRoaXMCE3Byb2Nlc3NWb3RlSU5URVJOQUwJAMwIAgUCYkcJAMwIAgUCY20FA25pbAUDbmlsAwkAAAIFAmNvBQJjbwUCY24JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAgtNYXRjaCBlcnJvcgQCY2oFAmNsAwkAAQIFAmNqAgRVbml0BAJjcAkAoggBCQECYUwCBQJhQwUCYkcEAmNxBQJjcAMJAAECBQJjcQIEVW5pdAkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQFwBQFlCQDMCAIJAQtEZWxldGVFbnRyeQEFAXEJAMwIAgkBC0RlbGV0ZUVudHJ5AQUBcgUDbmlsBgMJAAECBQJjcQIGU3RyaW5nBAJhWAUCY3EJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCBQFxBQJhWAkAzAgCCQELRGVsZXRlRW50cnkBBQFyBQNuaWwGCQACAQILTWF0Y2ggZXJyb3IDCQABAgUCY2oCBlN0cmluZwQCY3IFAmNqCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgUBcgUCY3IFA25pbAYJAAIBAgtNYXRjaCBlcnJvcgkAAgECC01hdGNoIGVycm9yAwkAAAIFAmJ0BQFlBAJjaAkAoggBBQFxBAFYBQJjaAMJAAECBQFYAgRVbml0BAJjagkAoggBCQECYUYBBQJhQwMJAAECBQJjagIEVW5pdAQCYlUDBQJiVgkAzAgCCQELRGVsZXRlRW50cnkBBQFwCQDMCAIJAQtEZWxldGVFbnRyeQEFAXYFA25pbAkAzAgCCQELRGVsZXRlRW50cnkBBQFwCQDMCAIJAQxCb29sZWFuRW50cnkCCQEBeAEFAmNkBgkAzAgCCQEMSW50ZWdlckVudHJ5AgUBdAUBaQkAzAgCCQEMSW50ZWdlckVudHJ5AgUBdQUCYnIFA25pbAQCY3MJAQJhQQADCQAAAgUCY3MFAmNzCQCUCgIFAmJVBgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgMJAAECBQJjagIGU3RyaW5nBAJjdAUCY2oJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCBQFxBQJjdAUDbmlsBgkAAgECC01hdGNoIGVycm9yAwkAAQIFAVgCBlN0cmluZwQCYkcFAVgEAmNwCQCiCAEJAQJhTAIFAmFDBQJiRwMJAAACBQJjcAUCY3AEAmJaCgACYWIJAPwHBAUEdGhpcwITcHJvY2Vzc1Bvb2xJTlRFUk5BTAkAzAgCBQJiRwkAzAgCBQJiVgUDbmlsBQNuaWwDCQABAgUCYWICB0Jvb2xlYW4FAmFiCQACAQkArAICCQADAQUCYWICHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4DCQAAAgUCYloFAmJaAwUCYloJAJQKAgUDbmlsBgQCY2oFAmNwAwkAAQIFAmNqAgRVbml0BAJiVQMFAmJWCQDMCAIJAQtEZWxldGVFbnRyeQEFAXAJAMwIAgkBC0RlbGV0ZUVudHJ5AQUBdgkAzAgCCQELRGVsZXRlRW50cnkBBQFxBQNuaWwJAMwIAgkBC0RlbGV0ZUVudHJ5AQUBcAkAzAgCCQEMQm9vbGVhbkVudHJ5AgkBAXgBBQJjZAYJAMwIAgkBDEludGVnZXJFbnRyeQIFAXQFAWkJAMwIAgkBDEludGVnZXJFbnRyeQIFAXUFAmJyCQDMCAIJAQtEZWxldGVFbnRyeQEFAXEFA25pbAQCY3MJAQJhQQADCQAAAgUCY3MFAmNzCQCUCgIFAmJVBgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgMJAAECBQJjagIGU3RyaW5nBAJjdAUCY2oJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCBQFxBQJjdAUDbmlsBgkAAgECC01hdGNoIGVycm9yCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQILTWF0Y2ggZXJyb3IJAQFTAQIWZmluYWxpemF0aW9uIGlzIGJyb2tlbgJiYgEPZmluYWxpemVXcmFwcGVyAQJjdQQCY3YKAAJhYgkA/AcEBQR0aGlzAg5maW5hbGl6ZUhlbHBlcgUDbmlsBQNuaWwDCQABAgUCYWICB0Jvb2xlYW4FAmFiCQACAQkArAICCQADAQUCYWICHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4DCQAAAgUCY3YFAmN2AwkBASEBBQJjdgMJAAACBQJjdQAACQEBUwECHkN1cnJlbnQgdm90aW5nIGlzIG5vdCBvdmVyIHlldAkAlAoCBQNuaWwFBHVuaXQEAmN3CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFAWsFAWMDCQBmAgUCY3cFAmN1BAJjeAkA/AcEBQR0aGlzAg9maW5hbGl6ZVdyYXBwZXIJAMwIAgkAZAIFAmN1AAEFA25pbAUDbmlsAwkAAAIFAmN4BQJjeAkAlAoCBQNuaWwFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAJQKAgUDbmlsBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmJiAQhmaW5hbGl6ZQAEAmN4CQD8BwQFBHRoaXMCD2ZpbmFsaXplV3JhcHBlcgkAzAgCAAAFA25pbAUDbmlsAwkAAAIFAmN4BQJjeAkAlAoCBQNuaWwFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CYmIBFGNvbnRhaW5zTm9kZVJFQURPTkxZAgJhRwJhSwkAlAoCBQNuaWwJAQJhTQIFAmFHBQJhSwJiYgEKaW5zZXJ0Tm9kZQICYUcCYUsEAmJICQECYmQBBQJiYgMJAAACBQJiSAUCYkgJAJQKAgkBAmFRAgUCYUcFAmFLBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmJiAQpkZWxldGVOb2RlAgJhRwJhSwQCYkgJAQJiZAEFAmJiAwkAAAIFAmJIBQJiSAkAlAoCCQECYVQCBQJhRwUCYUsFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CYmIBGGlzRmluYWxpemF0aW9uSW5Qcm9ncmVzcwAEAmJ0CQCaCAIFBHRoaXMFAXAEAmN5CQECIT0CBQJidAUEdW5pdAkAlAoCBQNuaWwFAmN5AQJjegECY0EABAJjQgQBWAkBAmFZAAMJAAECBQFYAgpCeXRlVmVjdG9yBAJiYwUBWAUCYmMDCQABAgUBWAIEVW5pdAgFAmN6D3NlbmRlclB1YmxpY0tleQkAAgECC01hdGNoIGVycm9yCQD0AwMIBQJjeglib2R5Qnl0ZXMJAJEDAggFAmN6BnByb29mcwAABQJjQhfF/kY=", "height": 2588858, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 5mdwckWoBuwHGxXrUXHeYhvZFyg7PfnXgoE6CtGxbTWw Next: Fs8EQGC68ygA1Mc2a5Bcn3tJcoUq2SmE9cDxeMQBfKui Diff:
OldNewDifferences
851851 }
852852
853853
854-@Verifier(cy)
855-func cz () = {
856- let cA = {
854+
855+@Callable(bb)
856+func isFinalizationInProgress () = {
857+ let bt = getInteger(this, p)
858+ let cy = (bt != unit)
859+ $Tuple2(nil, cy)
860+ }
861+
862+
863+@Verifier(cz)
864+func cA () = {
865+ let cB = {
857866 let X = aY()
858867 if ($isInstanceOf(X, "ByteVector"))
859868 then {
861870 bc
862871 }
863872 else if ($isInstanceOf(X, "Unit"))
864- then cy.senderPublicKey
873+ then cz.senderPublicKey
865874 else throw("Match error")
866875 }
867- sigVerify(cy.bodyBytes, cy.proofs[0], cA)
876+ sigVerify(cz.bodyBytes, cz.proofs[0], cB)
868877 }
869878
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "__"
55
66 let b = 100000000
77
88 let c = 10
99
1010 let d = 0
1111
1212 let e = 1
1313
1414 let f = makeString(["%s", "epochLength"], a)
1515
1616 let g = makeString(["%s%s", "epochLength__new"], a)
1717
1818 func h (i) = makeString(["%s%d", "epochLength", toString(i)], a)
1919
2020
2121 let j = makeString(["%s", "currentEpoch"], a)
2222
2323 let k = makeString(["%s", "maxDepth"], a)
2424
2525 let l = makeString(["%s", "votingEmissionCandidateContract"], a)
2626
2727 let m = makeString(["%s", "factoryContract"], a)
2828
2929 let n = makeString(["%s", "boostingContract"], a)
3030
3131 let o = makeString(["%s", "stakingContract"], a)
3232
3333 let p = makeString(["%s", "finalizationStage"], a)
3434
3535 let q = makeString(["%s", "nextPool"], a)
3636
3737 let r = makeString(["%s", "nextUser"], a)
3838
3939 let s = makeString(["%s", "startHeight"], a)
4040
4141 let t = makeString(["%s", "currentEpochUi"], a)
4242
4343 let u = makeString(["%s", "startHeightUi"], a)
4444
4545 let v = makeString(["%s", "force"], a)
4646
4747 func w (i) = makeString(["%s%d", "startHeight", toString(i)], a)
4848
4949
5050 func x (i) = makeString(["%s%d", "finalized", toString(i)], a)
5151
5252
5353 func y (z) = {
5454 let A = z
5555 let B = A._1
5656 let C = A._2
5757 makeString(["%s%s%s", "inList", B, C], a)
5858 }
5959
6060
6161 func D (E,i) = makeString(["%s%s%d", "used", toString(E), toString(i)], a)
6262
6363
6464 func F (z,E,i) = {
6565 let G = z
6666 let B = G._1
6767 let C = G._2
6868 makeString(["%s%s%s%s%d", "vote", B, C, toString(E), toString(i)], a)
6969 }
7070
7171
7272 func H (z,i) = {
7373 let I = z
7474 let B = I._1
7575 let C = I._2
7676 makeString(["%s%s%s%d", "votingResult", B, C, toString(i)], a)
7777 }
7878
7979
8080 func J (K,i) = makeString(["%s%s%d", "votingResultStaked", K, toString(i)], a)
8181
8282
8383 func L (z,i) = {
8484 let M = z
8585 let B = M._1
8686 let C = M._2
8787 makeString(["%s%s%s%d", "poolShare", B, C, toString(i)], a)
8888 }
8989
9090
9191 func N (i) = makeString(["%s%d", "totalVotes", toString(i)], a)
9292
9393
9494 func O (K,P) = makeString(["%s%s%s", "staked", P, K], a)
9595
9696
9797 func Q (R) = makeString(["voting_emission.ride:", R], " ")
9898
9999
100100 func S (R) = throw(Q(R))
101101
102102
103103 func T (E,U,V) = {
104104 let W = Q(makeString(["mandatory ", toString(E), ".", U, " is not defined"], ""))
105105 valueOrErrorMessage({
106106 let X = V
107107 if ($isInstanceOf(X, "String"))
108108 then {
109109 let Y = X
110110 getString(E, U)
111111 }
112112 else if ($isInstanceOf(X, "Int"))
113113 then {
114114 let Z = X
115115 getInteger(E, U)
116116 }
117117 else S("invalid entry type")
118118 }, W)
119119 }
120120
121121
122122 func aa (E,U) = {
123123 let ab = T(E, U, "")
124124 if ($isInstanceOf(ab, "String"))
125125 then ab
126126 else throw(($getType(ab) + " couldn't be cast to String"))
127127 }
128128
129129
130130 func ac (E,U) = {
131131 let ab = T(E, U, 0)
132132 if ($isInstanceOf(ab, "Int"))
133133 then ab
134134 else throw(($getType(ab) + " couldn't be cast to Int"))
135135 }
136136
137137
138138 func ad (z) = ((z._1 + a) + z._2)
139139
140140
141141 func ae (Y) = {
142142 let af = split(Y, a)
143143 if ((size(af) == 2))
144144 then $Tuple2(af[0], af[1])
145145 else S("invalid pool string")
146146 }
147147
148148
149149 let ag = addressFromStringValue(aa(this, m))
150150
151151 let ah = 10
152152
153153 func ai () = "%s__factoryConfig"
154154
155155
156156 func aj (ak) = split(aa(ak, ai()), a)
157157
158158
159159 func al (am) = addressFromStringValue(am[ah])
160160
161161
162162 func an (B,C) = {
163163 func ao (ap) = ("%s%s%s__mappings__baseAsset2internalId__" + ap)
164164
165165 func aq (ar,as) = (((("%d%d%s%s__" + toString(ar)) + "__") + toString(as)) + "__mappings__poolAssets2PoolContract")
166166
167167 func at (au) = (("%s%s%s__" + au) + "__mappings__poolContract2LpAsset")
168168
169169 let av = ac(ag, ao(B))
170170 let aw = ac(ag, ao(C))
171171 let au = aa(ag, aq(av, aw))
172172 let ax = aa(ag, at(au))
173173 ax
174174 }
175175
176176
177177 func ay (z) = {
178178 let az = z
179179 let B = az._1
180180 let C = az._2
181181 let ab = invoke(ag, "checkWxEmissionPoolLabel", [B, C], nil)
182182 if ($isInstanceOf(ab, "Boolean"))
183183 then ab
184184 else throw(($getType(ab) + " couldn't be cast to Boolean"))
185185 }
186186
187187
188188 func aA () = {
189189 let am = aj(ag)
190190 let aB = al(am)
191191 invoke(aB, "deposit", nil, nil)
192192 }
193193
194194
195195 let aC = "pools"
196196
197197 func aD (z) = {
198198 let aE = z
199199 let B = aE._1
200200 let C = aE._2
201201 makeString(["votes", B, C], a)
202202 }
203203
204204
205205 func aF (aG) = {
206206 let aH = if ((aG == aC))
207207 then "%s%s"
208208 else "%s%s%s%s"
209209 makeString([aH, aG, "head"], a)
210210 }
211211
212212
213213 func aI (aG) = {
214214 let aH = if ((aG == aC))
215215 then "%s%s"
216216 else "%s%s%s%s"
217217 makeString([aH, aG, "size"], a)
218218 }
219219
220220
221221 func aJ (aG,aK) = {
222222 let aH = if ((aG == aC))
223223 then "%s%s%s%s"
224224 else "%s%s%s%s%s"
225225 makeString([aH, aG, aK, "prev"], a)
226226 }
227227
228228
229229 func aL (aG,aK) = {
230230 let aH = if ((aG == aC))
231231 then "%s%s%s%s"
232232 else "%s%s%s%s%s"
233233 makeString([aH, aG, aK, "next"], a)
234234 }
235235
236236
237237 func aM (aG,aK) = {
238238 let aN = getString(this, aF(aG))
239239 let aO = getString(this, aJ(aG, aK))
240240 let aP = getString(this, aL(aG, aK))
241241 if (if ((aK == valueOrElse(aN, "")))
242242 then true
243243 else (aO != unit))
244244 then true
245245 else (aP != unit)
246246 }
247247
248248
249249 func aQ (aG,aK) = {
250250 let aN = getString(this, aF(aG))
251251 let aR = valueOrElse(getInteger(this, aI(aG)), 0)
252252 let aS = if (!(aM(aG, aK)))
253253 then true
254254 else S("Node exists")
255255 if ((aS == aS))
256256 then (([IntegerEntry(aI(aG), (aR + 1))] ++ (if ((aN != unit))
257257 then [StringEntry(aL(aG, aK), value(aN)), StringEntry(aJ(aG, value(aN)), aK)]
258258 else nil)) ++ [StringEntry(aF(aG), aK)])
259259 else throw("Strict value is not equal to itself.")
260260 }
261261
262262
263263 func aT (aG,aK) = {
264264 let aN = getString(this, aF(aG))
265265 let aR = valueOrElse(getInteger(this, aI(aG)), 0)
266266 let aO = getString(this, aJ(aG, aK))
267267 let aP = getString(this, aL(aG, aK))
268268 ([IntegerEntry(aI(aG), (aR - 1))] ++ (if (if ((aO != unit))
269269 then (aP != unit)
270270 else false)
271271 then [StringEntry(aL(aG, value(aO)), value(aP)), StringEntry(aJ(aG, value(aP)), value(aO)), DeleteEntry(aJ(aG, aK)), DeleteEntry(aL(aG, aK))]
272272 else if ((aP != unit))
273273 then [StringEntry(aF(aG), value(aP)), DeleteEntry(aL(aG, aK)), DeleteEntry(aJ(aG, value(aP)))]
274274 else if ((aO != unit))
275275 then [DeleteEntry(aJ(aG, aK)), DeleteEntry(aL(aG, value(aO)))]
276276 else if ((aK == valueOrElse(aN, "")))
277277 then [DeleteEntry(aF(aG))]
278278 else S(((("invalid node: " + aG) + ".") + aK))))
279279 }
280280
281281
282282 func aU () = "%s__managerVaultAddress"
283283
284284
285285 func aV () = "%s__managerPublicKey"
286286
287287
288288 func aW () = {
289289 let X = getString(aU())
290290 if ($isInstanceOf(X, "String"))
291291 then {
292292 let aX = X
293293 addressFromStringValue(aX)
294294 }
295295 else this
296296 }
297297
298298
299299 func aY () = {
300300 let aZ = aW()
301301 let X = getString(aZ, aV())
302302 if ($isInstanceOf(X, "String"))
303303 then {
304304 let aX = X
305305 fromBase58String(aX)
306306 }
307307 else if ($isInstanceOf(X, "Unit"))
308308 then unit
309309 else throw("Match error")
310310 }
311311
312312
313313 func ba (bb) = {
314314 let X = aY()
315315 if ($isInstanceOf(X, "ByteVector"))
316316 then {
317317 let bc = X
318318 (bb.callerPublicKey == bc)
319319 }
320320 else if ($isInstanceOf(X, "Unit"))
321321 then (bb.caller == this)
322322 else throw("Match error")
323323 }
324324
325325
326326 func bd (bb) = if (ba(bb))
327327 then true
328328 else throw("permission denied")
329329
330330
331331 func be (bb) = if ((bb.caller == this))
332332 then true
333333 else throw("permission denied")
334334
335335
336336 @Callable(bb)
337337 func getUserGwxAmountAtHeight (bf,bg) = {
338338 let bh = valueOrErrorMessage(addressFromString(aa(this, n)), Q("invalid boosting contract address"))
339339 $Tuple2(nil, {
340340 let ab = invoke(bh, "getUserGwxAmountAtHeightREADONLY", [bf, bg], nil)
341341 if ($isInstanceOf(ab, "Int"))
342342 then ab
343343 else throw(($getType(ab) + " couldn't be cast to Int"))
344344 })
345345 }
346346
347347
348348
349349 @Callable(bb)
350350 func constructor (ag,bi,bj,bk,bl) = {
351351 let bm = [bd(bb), if ((addressFromString(ag) != unit))
352352 then true
353353 else "invalid factory contract address", if ((addressFromString(bi) != unit))
354354 then true
355355 else "invalid voting emission candidate contract address", if ((addressFromString(bj) != unit))
356356 then true
357357 else "invalid boosting contract address", if ((addressFromString(bk) != unit))
358358 then true
359359 else "invalid staking contract address", if ((bl > 0))
360360 then true
361361 else S("invalid epoch length")]
362362 if ((bm == bm))
363363 then $Tuple2([StringEntry(m, ag), StringEntry(l, bi), StringEntry(n, bj), StringEntry(o, bk), IntegerEntry(f, bl)], unit)
364364 else throw("Strict value is not equal to itself.")
365365 }
366366
367367
368368
369369 @Callable(bb)
370370 func create (B,C) = {
371371 let bm = [if ((toBase58String(bb.caller.bytes) == valueOrElse(getString(this, l), "")))
372372 then true
373373 else bd(bb)]
374374 if ((bm == bm))
375375 then {
376376 let z = $Tuple2(B, C)
377377 let bn = ([BooleanEntry(y(z), true)] ++ aQ(aC, ad(z)))
378378 let bo = (getInteger(this, j) == unit)
379379 let bp = if (bo)
380380 then {
381381 let i = 0
382382 [IntegerEntry(j, i), IntegerEntry(w(i), height), IntegerEntry(s, height), IntegerEntry(t, i), IntegerEntry(u, height)]
383383 }
384384 else nil
385385 $Tuple2((bn ++ bp), unit)
386386 }
387387 else throw("Strict value is not equal to itself.")
388388 }
389389
390390
391391
392392 @Callable(bb)
393393 func vote (B,C,bq) = {
394394 let z = $Tuple2(B, C)
395395 let i = valueOrElse(getInteger(this, j), 0)
396396 let br = ac(this, w(i))
397397 let bl = ac(this, f)
398398 let bs = (br + bl)
399399 let bt = getInteger(this, p)
400400 let bu = valueOrElse(getInteger(this, D(bb.caller, i)), 0)
401401 let bv = valueOrElse(getInteger(this, F(z, bb.caller, i)), 0)
402402 let bw = valueOrElse(getInteger(this, H(z, i)), 0)
403403 let bx = valueOrElse(getInteger(this, N(i)), 0)
404404 let by = {
405405 let ab = invoke(this, "getUserGwxAmountAtHeight", [toBase58String(bb.caller.bytes), bs], nil)
406406 if ($isInstanceOf(ab, "Int"))
407407 then ab
408408 else throw(($getType(ab) + " couldn't be cast to Int"))
409409 }
410410 let bz = (by - bu)
411411 let bA = (bv + bq)
412412 let bB = ay(z)
413413 let bm = [if ((getBoolean(y(z)) != unit))
414414 then true
415415 else S("invalid assets"), if ((bs > height))
416416 then true
417417 else S("invalid height"), if ((bt == unit))
418418 then true
419419 else S("finalization in progress"), if ((by > 0))
420420 then true
421421 else S("you do not have gWX"), if (if ((bq > 0))
422422 then (bz >= bq)
423423 else false)
424424 then true
425425 else S("invalid amount"), if (bB)
426426 then true
427427 else S("pool hasn't WX_EMISSION label")]
428428 if ((bm == bm))
429429 then {
430430 let bC = aD(z)
431431 let P = toString(bb.caller)
432432 let bD = if (aM(bC, P))
433433 then nil
434434 else aQ(bC, P)
435435 $Tuple2(([IntegerEntry(D(bb.caller, i), (bu + bq)), IntegerEntry(F(z, bb.caller, i), bA), IntegerEntry(H(z, i), (bw + bq)), IntegerEntry(N(i), (bx + bq))] ++ bD), unit)
436436 }
437437 else throw("Strict value is not equal to itself.")
438438 }
439439
440440
441441
442442 @Callable(bb)
443443 func cancelVote (B,C) = {
444444 let z = $Tuple2(B, C)
445445 let i = valueOrElse(getInteger(this, j), 0)
446446 let br = ac(this, w(i))
447447 let bl = ac(this, f)
448448 let bs = (br + bl)
449449 let bt = getInteger(this, p)
450450 let bu = valueOrElse(getInteger(this, D(bb.caller, i)), 0)
451451 let bv = valueOrElse(getInteger(this, F(z, bb.caller, i)), 0)
452452 let bw = valueOrElse(getInteger(this, H(z, i)), 0)
453453 let bx = valueOrElse(getInteger(this, N(i)), 0)
454454 let bm = [if ((getBoolean(y(z)) != unit))
455455 then true
456456 else S("invalid assets"), if ((bs > height))
457457 then true
458458 else S("invalid height"), if ((bt == unit))
459459 then true
460460 else S("finalization in progress"), if ((bv > 0))
461461 then true
462462 else S("no vote")]
463463 if ((bm == bm))
464464 then {
465465 let bC = aD(z)
466466 let P = toString(bb.caller)
467467 $Tuple2(([IntegerEntry(D(bb.caller, i), max([(bu - bv), 0])), DeleteEntry(F(z, bb.caller, i)), IntegerEntry(H(z, i), (bw - bv)), IntegerEntry(N(i), (bx - bv))] ++ aT(bC, P)), unit)
468468 }
469469 else throw("Strict value is not equal to itself.")
470470 }
471471
472472
473473
474474 @Callable(bb)
475475 func setEpochLength (bE) = {
476476 let bm = [bd(bb), if ((bE > 0))
477477 then true
478478 else S("invalid epoch length")]
479479 if ((bm == bm))
480480 then $Tuple2([IntegerEntry(g, bE)], unit)
481481 else throw("Strict value is not equal to itself.")
482482 }
483483
484484
485485
486486 @Callable(bb)
487487 func setMaxDepth (bF) = {
488488 let bm = [bd(bb), if ((bF > 0))
489489 then true
490490 else S("invalid max depth")]
491491 if ((bm == bm))
492492 then $Tuple2([IntegerEntry(k, bF)], unit)
493493 else throw("Strict value is not equal to itself.")
494494 }
495495
496496
497497
498498 @Callable(bb)
499499 func processVoteINTERNAL (bG,P) = {
500500 let bH = be(bb)
501501 if ((bH == bH))
502502 then {
503503 let bf = valueOrErrorMessage(addressFromString(P), Q(("processVoteINTERNAL: invalid user address " + P)))
504504 let i = ac(this, j)
505505 let bI = (i - 1)
506506 let bl = ac(this, f)
507507 let br = ac(this, w(i))
508508 let bs = (br + bl)
509509 let bJ = ac(this, w(bI))
510510 let bK = ac(this, h(bI))
511511 let bL = (bJ + bK)
512512 let bM = if ((bI >= 0))
513513 then true
514514 else S("processVoteINTERNAL: invalid previous epoch")
515515 if ((bM == bM))
516516 then {
517517 let z = ae(bG)
518518 let bN = z
519519 let B = bN._1
520520 let C = bN._2
521521 let bB = ay(z)
522522 let by = {
523523 let ab = invoke(this, "getUserGwxAmountAtHeight", [P, bs], nil)
524524 if ($isInstanceOf(ab, "Int"))
525525 then ab
526526 else throw(($getType(ab) + " couldn't be cast to Int"))
527527 }
528528 let bO = {
529529 let ab = invoke(this, "getUserGwxAmountAtHeight", [P, bL], nil)
530530 if ($isInstanceOf(ab, "Int"))
531531 then ab
532532 else throw(($getType(ab) + " couldn't be cast to Int"))
533533 }
534534 let bx = valueOrElse(getInteger(N(i)), 0)
535535 let bP = valueOrElse(getInteger(H(z, i)), 0)
536536 let bQ = valueOrErrorMessage(getInteger(F(z, bf, bI)), Q((((("processVoteINTERNAL " + bG) + " ") + P) + ": no previous vote")))
537537 let bu = valueOrElse(getInteger(this, D(bf, i)), 0)
538538 let K = an(B, C)
539539 let bR = valueOrElse(getInteger(J(K, bI)), 0)
540540 let bk = addressFromStringValue(aa(this, o))
541541 let bS = valueOrElse(getInteger(bk, O(K, P)), 0)
542542 let bT = if ((bS == 0))
543543 then nil
544544 else [IntegerEntry(J(K, bI), (bR + bQ))]
545545 let bA = if ((bO > 0))
546546 then fraction(bQ, by, bO)
547547 else 0
548548 let bU = if (if ((bA > 0))
549549 then bB
550550 else false)
551551 then [IntegerEntry(F(z, bf, i), bA), IntegerEntry(N(i), (bx + bA)), IntegerEntry(H(z, i), (bP + bA)), IntegerEntry(D(bf, i), (bu + bA))]
552552 else aT(aD(z), P)
553553 $Tuple2((bU ++ bT), unit)
554554 }
555555 else throw("Strict value is not equal to itself.")
556556 }
557557 else throw("Strict value is not equal to itself.")
558558 }
559559
560560
561561
562562 @Callable(bb)
563563 func processPoolINTERNAL (bG,bV) = {
564564 let bH = be(bb)
565565 if ((bH == bH))
566566 then {
567567 let bW = {
568568 let bX = ac(this, j)
569569 if (bV)
570570 then bX
571571 else (bX - 1)
572572 }
573573 let bM = if ((bW >= 0))
574574 then true
575575 else S("processPoolINTERNAL: invalid target epoch")
576576 if ((bM == bM))
577577 then {
578578 let z = ae(bG)
579579 let bY = z
580580 let B = bY._1
581581 let C = bY._2
582582 let bk = addressFromStringValue(aa(this, o))
583583 let ax = an(B, C)
584584 let bZ = {
585585 let ab = invoke(bk, "usersListTraversal", [ax], nil)
586586 if ($isInstanceOf(ab, "Boolean"))
587587 then ab
588588 else throw(($getType(ab) + " couldn't be cast to Boolean"))
589589 }
590590 if ((bZ == bZ))
591591 then if (bZ)
592592 then $Tuple2(nil, true)
593593 else {
594594 let bB = ay(z)
595595 let bx = valueOrElse(getInteger(this, N(bW)), 0)
596596 let bP = valueOrElse(getInteger(this, H(z, bW)), 0)
597597 let ca = if (if ((bx == 0))
598598 then true
599599 else !(bB))
600600 then 0
601601 else fraction(bP, b, bx)
602602 let cb = invoke(ag, "modifyWeight", [ax, ca], nil)
603603 if ((cb == cb))
604604 then {
605605 let cc = if (if (bB)
606606 then true
607607 else bV)
608608 then nil
609609 else ([DeleteEntry(y(z))] ++ aT(aC, bG))
610610 $Tuple2(([IntegerEntry(L(z, bW), ca)] ++ cc), false)
611611 }
612612 else throw("Strict value is not equal to itself.")
613613 }
614614 else throw("Strict value is not equal to itself.")
615615 }
616616 else throw("Strict value is not equal to itself.")
617617 }
618618 else throw("Strict value is not equal to itself.")
619619 }
620620
621621
622622
623623 @Callable(bb)
624624 func finalizeHelper () = {
625625 let bV = valueOrElse(getBoolean(v), false)
626626 let i = valueOrElse(getInteger(this, j), 0)
627627 let cd = (i - 1)
628628 let br = ac(this, w(i))
629629 let bl = ac(this, f)
630630 let bs = (br + bl)
631631 let bt = getInteger(this, p)
632632 if (if (if ((height >= bs))
633633 then (bt == unit)
634634 else false)
635635 then !(bV)
636636 else false)
637637 then {
638638 let ce = (i + 1)
639639 let cf = getInteger(this, g)
640640 let cg = {
641641 let X = cf
642642 if ($isInstanceOf(X, "Int"))
643643 then {
644644 let bE = X
645645 [IntegerEntry(f, bE), DeleteEntry(g)]
646646 }
647647 else if ($isInstanceOf(X, "Unit"))
648648 then nil
649649 else throw("Match error")
650650 }
651651 $Tuple2(([IntegerEntry(w(ce), height), IntegerEntry(s, height), IntegerEntry(j, ce), IntegerEntry(p, d), IntegerEntry(h(i), bl)] ++ cg), true)
652652 }
653653 else if (if (bV)
654654 then (bt == unit)
655655 else false)
656656 then $Tuple2([IntegerEntry(p, e)], true)
657657 else if ((bt == unit))
658658 then $Tuple2(nil, false)
659659 else if ((bt == d))
660660 then {
661661 let ch = getString(q)
662662 let ci = getString(r)
663663 let X = ch
664664 if ($isInstanceOf(X, "Unit"))
665665 then {
666666 let cj = getString(aF(aC))
667667 if ($isInstanceOf(cj, "Unit"))
668668 then $Tuple2([IntegerEntry(p, e), DeleteEntry(q), DeleteEntry(r)], true)
669669 else if ($isInstanceOf(cj, "String"))
670670 then {
671671 let ck = cj
672672 $Tuple2([StringEntry(q, ck)], true)
673673 }
674674 else throw("Match error")
675675 }
676676 else if ($isInstanceOf(X, "String"))
677677 then {
678678 let bG = X
679679 let z = ae(bG)
680680 let cl = {
681681 let cj = ci
682682 if ($isInstanceOf(cj, "Unit"))
683683 then getString(aF(aD(z)))
684684 else if ($isInstanceOf(cj, "String"))
685685 then {
686686 let cm = cj
687687 let cn = getString(aL(aD(z), cm))
688688 if ((cn == cn))
689689 then {
690690 let co = invoke(this, "processVoteINTERNAL", [bG, cm], nil)
691691 if ((co == co))
692692 then cn
693693 else throw("Strict value is not equal to itself.")
694694 }
695695 else throw("Strict value is not equal to itself.")
696696 }
697697 else throw("Match error")
698698 }
699699 let cj = cl
700700 if ($isInstanceOf(cj, "Unit"))
701701 then {
702702 let cp = getString(aL(aC, bG))
703703 let cq = cp
704704 if ($isInstanceOf(cq, "Unit"))
705705 then $Tuple2([IntegerEntry(p, e), DeleteEntry(q), DeleteEntry(r)], true)
706706 else if ($isInstanceOf(cq, "String"))
707707 then {
708708 let aX = cq
709709 $Tuple2([StringEntry(q, aX), DeleteEntry(r)], true)
710710 }
711711 else throw("Match error")
712712 }
713713 else if ($isInstanceOf(cj, "String"))
714714 then {
715715 let cr = cj
716716 $Tuple2([StringEntry(r, cr)], true)
717717 }
718718 else throw("Match error")
719719 }
720720 else throw("Match error")
721721 }
722722 else if ((bt == e))
723723 then {
724724 let ch = getString(q)
725725 let X = ch
726726 if ($isInstanceOf(X, "Unit"))
727727 then {
728728 let cj = getString(aF(aC))
729729 if ($isInstanceOf(cj, "Unit"))
730730 then {
731731 let bU = if (bV)
732732 then [DeleteEntry(p), DeleteEntry(v)]
733733 else [DeleteEntry(p), BooleanEntry(x(cd), true), IntegerEntry(t, i), IntegerEntry(u, br)]
734734 let cs = aA()
735735 if ((cs == cs))
736736 then $Tuple2(bU, true)
737737 else throw("Strict value is not equal to itself.")
738738 }
739739 else if ($isInstanceOf(cj, "String"))
740740 then {
741741 let ct = cj
742742 $Tuple2([StringEntry(q, ct)], true)
743743 }
744744 else throw("Match error")
745745 }
746746 else if ($isInstanceOf(X, "String"))
747747 then {
748748 let bG = X
749749 let cp = getString(aL(aC, bG))
750750 if ((cp == cp))
751751 then {
752752 let bZ = {
753753 let ab = invoke(this, "processPoolINTERNAL", [bG, bV], nil)
754754 if ($isInstanceOf(ab, "Boolean"))
755755 then ab
756756 else throw(($getType(ab) + " couldn't be cast to Boolean"))
757757 }
758758 if ((bZ == bZ))
759759 then if (bZ)
760760 then $Tuple2(nil, true)
761761 else {
762762 let cj = cp
763763 if ($isInstanceOf(cj, "Unit"))
764764 then {
765765 let bU = if (bV)
766766 then [DeleteEntry(p), DeleteEntry(v), DeleteEntry(q)]
767767 else [DeleteEntry(p), BooleanEntry(x(cd), true), IntegerEntry(t, i), IntegerEntry(u, br), DeleteEntry(q)]
768768 let cs = aA()
769769 if ((cs == cs))
770770 then $Tuple2(bU, true)
771771 else throw("Strict value is not equal to itself.")
772772 }
773773 else if ($isInstanceOf(cj, "String"))
774774 then {
775775 let ct = cj
776776 $Tuple2([StringEntry(q, ct)], true)
777777 }
778778 else throw("Match error")
779779 }
780780 else throw("Strict value is not equal to itself.")
781781 }
782782 else throw("Strict value is not equal to itself.")
783783 }
784784 else throw("Match error")
785785 }
786786 else S("finalization is broken")
787787 }
788788
789789
790790
791791 @Callable(bb)
792792 func finalizeWrapper (cu) = {
793793 let cv = {
794794 let ab = invoke(this, "finalizeHelper", nil, nil)
795795 if ($isInstanceOf(ab, "Boolean"))
796796 then ab
797797 else throw(($getType(ab) + " couldn't be cast to Boolean"))
798798 }
799799 if ((cv == cv))
800800 then if (!(cv))
801801 then if ((cu == 0))
802802 then S("Current voting is not over yet")
803803 else $Tuple2(nil, unit)
804804 else {
805805 let cw = valueOrElse(getInteger(this, k), c)
806806 if ((cw > cu))
807807 then {
808808 let cx = invoke(this, "finalizeWrapper", [(cu + 1)], nil)
809809 if ((cx == cx))
810810 then $Tuple2(nil, unit)
811811 else throw("Strict value is not equal to itself.")
812812 }
813813 else $Tuple2(nil, unit)
814814 }
815815 else throw("Strict value is not equal to itself.")
816816 }
817817
818818
819819
820820 @Callable(bb)
821821 func finalize () = {
822822 let cx = invoke(this, "finalizeWrapper", [0], nil)
823823 if ((cx == cx))
824824 then $Tuple2(nil, unit)
825825 else throw("Strict value is not equal to itself.")
826826 }
827827
828828
829829
830830 @Callable(bb)
831831 func containsNodeREADONLY (aG,aK) = $Tuple2(nil, aM(aG, aK))
832832
833833
834834
835835 @Callable(bb)
836836 func insertNode (aG,aK) = {
837837 let bH = bd(bb)
838838 if ((bH == bH))
839839 then $Tuple2(aQ(aG, aK), unit)
840840 else throw("Strict value is not equal to itself.")
841841 }
842842
843843
844844
845845 @Callable(bb)
846846 func deleteNode (aG,aK) = {
847847 let bH = bd(bb)
848848 if ((bH == bH))
849849 then $Tuple2(aT(aG, aK), unit)
850850 else throw("Strict value is not equal to itself.")
851851 }
852852
853853
854-@Verifier(cy)
855-func cz () = {
856- let cA = {
854+
855+@Callable(bb)
856+func isFinalizationInProgress () = {
857+ let bt = getInteger(this, p)
858+ let cy = (bt != unit)
859+ $Tuple2(nil, cy)
860+ }
861+
862+
863+@Verifier(cz)
864+func cA () = {
865+ let cB = {
857866 let X = aY()
858867 if ($isInstanceOf(X, "ByteVector"))
859868 then {
860869 let bc = X
861870 bc
862871 }
863872 else if ($isInstanceOf(X, "Unit"))
864- then cy.senderPublicKey
873+ then cz.senderPublicKey
865874 else throw("Match error")
866875 }
867- sigVerify(cy.bodyBytes, cy.proofs[0], cA)
876+ sigVerify(cz.bodyBytes, cz.proofs[0], cB)
868877 }
869878

github/deemru/w8io/169f3d6 
88.07 ms