tx · CYa4JPvSW4nEr76jJTwvbvfphV6tRhEvFpkynXJXa8r

3N9Zi6AcWcGbM23jQJ4fnzFsoHoTsxYDznr:  -0.02800000 Waves

2024.04.26 16:30 [3079861] smart account 3N9Zi6AcWcGbM23jQJ4fnzFsoHoTsxYDznr > SELF 0.00000000 Waves

{ "type": 13, "id": "CYa4JPvSW4nEr76jJTwvbvfphV6tRhEvFpkynXJXa8r", "fee": 2800000, "feeAssetId": null, "timestamp": 1714138228546, "version": 2, "chainId": 84, "sender": "3N9Zi6AcWcGbM23jQJ4fnzFsoHoTsxYDznr", "senderPublicKey": "GFbasS3jufhZkK4xR7tdTjjnP8K33KvJFEDHRtxXDkaJ", "proofs": [ "5qCdU3UirF5gUDHDvrCBoTSmp3Shb7jT9iNMtkvELf8ayGYjsvzwQbcFgw5b5xGL8jk8xZiYq6Epv5NaDtGg3Edj" ], "script": "base64:BgKUHQgCEgQKAggBEgcKBQgICAgBEgQKAggIEgUKAwgIARIECgIICBIDCgEBEgMKAQESAwoBCBIECgIICBIECgIIBBIAEgMKAQESABIECgIICBIECgIICBIECgIICBIAEgQKAggIEgUKAwgIASIJc2VwYXJhdG9yIg5wb29sV2VpZ2h0TXVsdCIPbWF4RGVwdGhEZWZhdWx0IhlmaW5hbGl6YXRpb25TdGFnZUJhbGFuY2VzIhZmaW5hbGl6YXRpb25TdGFnZVRvdGFsIhdmaW5hbGl6YXRpb25TdGFnZVNoYXJlcyILd2F2ZXNTdHJpbmciEHBvb2xTdGF0dXNBY3RpdmUiFXBvb2xTdGF0dXNQdXREaXNhYmxlZCIZcG9vbFN0YXR1c01hdGNoZXJEaXNhYmxlZCIScG9vbFN0YXR1c1NodXRkb3duIg5rZXlFcG9jaExlbmd0aCIRa2V5RXBvY2hMZW5ndGhOZXciFWtleUVwb2NoTGVuZ3RoQnlFcG9jaCIFZXBvY2giD2tleUN1cnJlbnRFcG9jaCILa2V5TWF4RGVwdGgiEGtleVJlc3VtcHRpb25GZWUiImtleVZvdGluZ0VtaXNzaW9uQ2FuZGlkYXRlQ29udHJhY3QiHWtleVZvdGluZ0VtaXNzaW9uUmF0ZUNvbnRyYWN0IhJrZXlGYWN0b3J5Q29udHJhY3QiE2tleUJvb3N0aW5nQ29udHJhY3QiEmtleVN0YWtpbmdDb250cmFjdCIWa2V5QXNzZXRzU3RvcmVDb250cmFjdCIUa2V5RmluYWxpemF0aW9uU3RhZ2UiC2tleU5leHRQb29sIgtrZXlOZXh0VXNlciIOa2V5U3RhcnRIZWlnaHQiEWtleUN1cnJlbnRFcG9jaFVpIhBrZXlTdGFydEhlaWdodFVpIh1rZXlGaW5hbGl6YXRpb25TaG91bGRCZUZvcmNlZCIWa2V5QWxsb3dlZExwU2NyaXB0SGFzaCIca2V5QWxsb3dlZExwU3RhYmxlU2NyaXB0SGFzaCIVa2V5U3RhcnRIZWlnaHRCeUVwb2NoIgxrZXlGaW5hbGl6ZWQiCWtleUluTGlzdCIEcG9vbCILJHQwMjI0NDIyODQiDWFtb3VudEFzc2V0SWQiDHByaWNlQXNzZXRJZCIHa2V5VXNlZCIHYWRkcmVzcyIHa2V5Vm90ZSILJHQwMjU1ODI1OTgiD2tleVZvdGluZ1Jlc3VsdCILJHQwMjc4MDI4MjAiFWtleVZvdGluZ1Jlc3VsdFN0YWtlZCIMbHBBc3NldElkU3RyIgxrZXlQb29sU2hhcmUiCyR0MDMxNDEzMTgxIg1rZXlUb3RhbFZvdGVzIg9rZXlTdGFrZWRCeVVzZXIiDnVzZXJBZGRyZXNzU3RyIgd3cmFwRXJyIgNtc2ciCHRocm93RXJyIg5nZXRWYWx1ZU9yRmFpbCIDa2V5IgR0eXBlIgVlcnJvciIHJG1hdGNoMCIDc3RyIgNpbnQiDGdldFN0ck9yRmFpbCIBQCIMZ2V0SW50T3JGYWlsIgxwb29sVG9TdHJpbmciDHN0cmluZ1RvUG9vbCIFcGFydHMiD2ZhY3RvcnlDb250cmFjdCIaSWR4RmFjdG9yeUNmZ0d3eFJld2FyZERhcHAiDWtleUZhY3RvcnlDZmciFHJlYWRGYWN0b3J5Q2ZnT3JGYWlsIgdmYWN0b3J5IhlnZXRHd3hSZXdhcmRBZGRyZXNzT3JGYWlsIgpmYWN0b3J5Q2ZnIgxwYXJzZUFzc2V0SWQiBWlucHV0Ig9hc3NldElkVG9TdHJpbmciC2dldFBvb2xJbmZvIg5wb29sSW5mb09wdGlvbiIWZ2V0THBBc3NldEJ5UG9vbEFzc2V0cyIfa2V5TWFwcGluZ3NCYXNlQXNzZXQyaW50ZXJuYWxJZCIMYmFzZUFzc2V0U3RyIilrZXlNYXBwaW5nUG9vbEFzc2V0c1RvUG9vbENvbnRyYWN0QWRkcmVzcyIYaW50ZXJuYWxBbW91bnRBc3NldElkU3RyIhdpbnRlcm5hbFByaWNlQXNzZXRJZFN0ciIfa2V5TWFwcGluZ1Bvb2xDb250cmFjdFRvTFBBc3NldCITcG9vbENvbnRyYWN0QWRkcmVzcyIVYW1vdW50QXNzZXRJbnRlcm5hbElkIhRwcmljZUFzc2V0SW50ZXJuYWxJZCIJbHBBc3NldElkIhhjaGVja1d4RW1pc3Npb25Qb29sTGFiZWwiCyR0MDY1NDE2NTgxIhBnd3hSZXdhcmREZXBvc2l0IhJnd3hSZXdhcmRzQ29udHJhY3QiDXBvb2xzTGlzdE5hbWUiEGdldFZvdGVzTGlzdE5hbWUiCyR0MDY5OTg3MDM4IgtrZXlMaXN0SGVhZCIIbGlzdE5hbWUiBG1ldGEiC2tleUxpc3RTaXplIgtrZXlMaXN0UHJldiICaWQiC2tleUxpc3ROZXh0Igxjb250YWluc05vZGUiCmhlYWRPclVuaXQiCnByZXZPclVuaXQiCm5leHRPclVuaXQiEWluc2VydE5vZGVBY3Rpb25zIghsaXN0U2l6ZSIJY2hlY2tOb2RlIhFkZWxldGVOb2RlQWN0aW9ucyIWa2V5TWFuYWdlclZhdWx0QWRkcmVzcyITa2V5TWFuYWdlclB1YmxpY0tleSIcZ2V0TWFuYWdlclZhdWx0QWRkcmVzc09yVGhpcyIBcyIWbWFuYWdlclB1YmxpY0tleU9yVW5pdCITbWFuYWdlclZhdWx0QWRkcmVzcyIJaXNNYW5hZ2VyIgFpIgJwayILbXVzdE1hbmFnZXIiCG11c3RUaGlzIgt1c2VyQWRkcmVzcyIMdGFyZ2V0SGVpZ2h0Ihdib29zdGluZ0NvbnRyYWN0QWRkcmVzcyIfdm90aW5nRW1pc3Npb25DYW5kaWRhdGVDb250cmFjdCIQYm9vc3RpbmdDb250cmFjdCIPc3Rha2luZ0NvbnRyYWN0IgtlcG9jaExlbmd0aCIGY2hlY2tzIg1pbkxpc3RBY3Rpb25zIhhjdXJyZW50RXBvY2hJc05vdERlZmluZWQiEnN0YXJ0SGVpZ2h0QWN0aW9ucyIGYW1vdW50IgtzdGFydEhlaWdodCIJZW5kSGVpZ2h0IhdmaW5hbGl6YXRpb25TdGFnZU9yVW5pdCIEdXNlZCIEdm90ZSIKcG9vbFJlc3VsdCIKdG90YWxWb3RlcyITZ3d4QW1vdW50QXRFbmRUb3RhbCIJYXZhaWxhYmxlIgduZXdWb3RlIgp3eEVtaXNzaW9uIg12b3Rlc0xpc3ROYW1lIhB2b3Rlc0xpc3RBY3Rpb25zIg5uZXdFcG9jaExlbmd0aCILbmV3TWF4RGVwdGgiB3Bvb2xTdHIiC2NoZWNrQ2FsbGVyIg1lcG9jaFByZXZpb3VzIg0kdDAxNzI0MjE3MjgyIgtiYWxhbmNlSXNPayIHYWN0aW9ucyITZGVsZXRlV3hFbWlzc2lvbkludiIPbW9kaWZ5V2VpZ2h0SW52Igtwb29sQWRkcmVzcyIQc2V0UG9vbFN0YXR1c0ludiILbGlzdEFjdGlvbnMiE3N0YXJ0SGVpZ2h0UHJldmlvdXMiE2Vwb2NoTGVuZ3RoUHJldmlvdXMiEWVuZEhlaWdodFByZXZpb3VzIhBjaGVja1RhcmdldEVwb2NoIg0kdDAxOTEwODE5MTQ4Ihtnd3hBbW91bnRBdEVuZFRvdGFsUHJldmlvdXMiDHZvdGluZ1Jlc3VsdCISdm90ZVByZXZpb3VzT3B0aW9uIgx2b3RlUHJldmlvdXMiGnZvdGluZ1Jlc3VsdFN0YWtlZFByZXZpb3VzIgxzdGFrZWRCeVVzZXIiGXZvdGluZ1Jlc3VsdFN0YWtlZEFjdGlvbnMiBWZvcmNlIgt0YXJnZXRFcG9jaCIMY3VycmVudEVwb2NoIg0kdDAyMTYxODIxNjU4IgFyIhNhc3NldHNTdG9yZUNvbnRyYWN0IgVzaGFyZSINcHJldmlvdXNFcG9jaCIIbmV3RXBvY2giFG5ld0Vwb2NoTGVuZ3RoT3B0aW9uIhVuZXdFcG9jaExlbmd0aEFjdGlvbnMiCnBvb2xPclVuaXQiByRtYXRjaDEiC25leHRQb29sU3RyIg5uZXh0UG9vbE9yVW5pdCIKdXNlck9yVW5pdCIMcG9vbHNIZWFkU3RyIg5uZXh0VXNlck9yVW5pdCIEdXNlciIEbmV4dCIOcHJvY2Vzc1ZvdGVJbnYiByRtYXRjaDIiCG5leHRVc2VyIhNnd3hSZXdhcmREZXBvc2l0SW52Igdjb3VudGVyIhp2b3RpbmdFbWlzc2lvblJhdGVDb250cmFjdCIGcmVzdWx0IgNpbnYiCG1heERlcHRoIhZmaW5hbGl6YXRpb25JblByb2dyZXNzIh9zbGlwcGFnZVRvbGVyYW5jZU9yTWluT3V0QW1vdW50Ig0kdDAzMTYxOTMxNzQ5IgpmZWVQYXltZW50Ig9rQm9vc3RpbmdDb25maWciDWlkeENmZ0Fzc2V0SWQiCXd4QXNzZXRJZCITYW1vdW50QXNzZXRWZXJpZmllZCIScHJpY2VBc3NldFZlcmlmaWVkIg1yZXN1bXB0aW9uRmVlIhRscEFzc2V0QmFsYW5jZUJlZm9yZSIJYXV0b1N0YWtlIgNwdXQiDnBvb2xTY3JpcHRIYXNoIhFhbGxvd2VkU2NyaXB0SGFzaCIIaXNTdGFibGUiDGZ1bmN0aW9uTmFtZSIMY2hlY2tCYWxhbmNlIhNscEFzc2V0QmFsYW5jZUFmdGVyIhJscEFzc2V0QmFsYW5jZURpZmYiFmxwQXNzZXRUcmFuc2ZlckFjdGlvbnMiEHNldFd4RW1pc3Npb25JbnYiCnBvb2xTdGF0dXMiAnR4IgZ2ZXJpZnkiD3RhcmdldFB1YmxpY0tleUwAAWECAl9fAAFiAIDC1y8AAWMACgABZAAAAAFlAAEAAWYAAgABZwIFV0FWRVMAAWgAAQABaQACAAFqAAMAAWsABAABbAkAuQkCCQDMCAICAiVzCQDMCAICC2Vwb2NoTGVuZ3RoBQNuaWwFAWEAAW0JALkJAgkAzAgCAgQlcyVzCQDMCAICEGVwb2NoTGVuZ3RoX19uZXcFA25pbAUBYQEBbgEBbwkAuQkCCQDMCAICBCVzJWQJAMwIAgILZXBvY2hMZW5ndGgJAMwIAgkApAMBBQFvBQNuaWwFAWEAAXAJALkJAgkAzAgCAgIlcwkAzAgCAgxjdXJyZW50RXBvY2gFA25pbAUBYQABcQkAuQkCCQDMCAICAiVzCQDMCAICCG1heERlcHRoBQNuaWwFAWEAAXIJALkJAgkAzAgCAgIlcwkAzAgCAg1yZXN1bXB0aW9uRmVlBQNuaWwFAWEAAXMJALkJAgkAzAgCAgIlcwkAzAgCAh92b3RpbmdFbWlzc2lvbkNhbmRpZGF0ZUNvbnRyYWN0BQNuaWwFAWEAAXQJALkJAgkAzAgCAgIlcwkAzAgCAhp2b3RpbmdFbWlzc2lvblJhdGVDb250cmFjdAUDbmlsBQFhAAF1CQC5CQIJAMwIAgICJXMJAMwIAgIPZmFjdG9yeUNvbnRyYWN0BQNuaWwFAWEAAXYJALkJAgkAzAgCAgIlcwkAzAgCAhBib29zdGluZ0NvbnRyYWN0BQNuaWwFAWEAAXcJALkJAgkAzAgCAgIlcwkAzAgCAg9zdGFraW5nQ29udHJhY3QFA25pbAUBYQABeAkAuQkCCQDMCAICAiVzCQDMCAICE2Fzc2V0c1N0b3JlQ29udHJhY3QFA25pbAUBYQABeQkAuQkCCQDMCAICAiVzCQDMCAICEWZpbmFsaXphdGlvblN0YWdlBQNuaWwFAWEAAXoJALkJAgkAzAgCAgIlcwkAzAgCAghuZXh0UG9vbAUDbmlsBQFhAAFBCQC5CQIJAMwIAgICJXMJAMwIAgIIbmV4dFVzZXIFA25pbAUBYQABQgkAuQkCCQDMCAICAiVzCQDMCAICC3N0YXJ0SGVpZ2h0BQNuaWwFAWEAAUMJALkJAgkAzAgCAgIlcwkAzAgCAg5jdXJyZW50RXBvY2hVaQUDbmlsBQFhAAFECQC5CQIJAMwIAgICJXMJAMwIAgINc3RhcnRIZWlnaHRVaQUDbmlsBQFhAAFFCQC5CQIJAMwIAgICJXMJAMwIAgIFZm9yY2UFA25pbAUBYQEBRgACFyVzX19hbGxvd2VkTHBTY3JpcHRIYXNoAQFHAAIdJXNfX2FsbG93ZWRMcFN0YWJsZVNjcmlwdEhhc2gBAUgBAW8JALkJAgkAzAgCAgQlcyVkCQDMCAICC3N0YXJ0SGVpZ2h0CQDMCAIJAKQDAQUBbwUDbmlsBQFhAQFJAQFvCQC5CQIJAMwIAgIEJXMlZAkAzAgCAglmaW5hbGl6ZWQJAMwIAgkApAMBBQFvBQNuaWwFAWEBAUoBAUsEAUwFAUsEAU0IBQFMAl8xBAFOCAUBTAJfMgkAuQkCCQDMCAICBiVzJXMlcwkAzAgCAgZpbkxpc3QJAMwIAgUBTQkAzAgCBQFOBQNuaWwFAWEBAU8CAVABbwkAuQkCCQDMCAICBiVzJXMlZAkAzAgCAgR1c2VkCQDMCAIJAKUIAQUBUAkAzAgCCQCkAwEFAW8FA25pbAUBYQEBUQMBSwFQAW8EAVIFAUsEAU0IBQFSAl8xBAFOCAUBUgJfMgkAuQkCCQDMCAICCiVzJXMlcyVzJWQJAMwIAgIEdm90ZQkAzAgCBQFNCQDMCAIFAU4JAMwIAgkApQgBBQFQCQDMCAIJAKQDAQUBbwUDbmlsBQFhAQFTAgFLAW8EAVQFAUsEAU0IBQFUAl8xBAFOCAUBVAJfMgkAuQkCCQDMCAICCCVzJXMlcyVkCQDMCAICDHZvdGluZ1Jlc3VsdAkAzAgCBQFNCQDMCAIFAU4JAMwIAgkApAMBBQFvBQNuaWwFAWEBAVUCAVYBbwkAuQkCCQDMCAICBiVzJXMlZAkAzAgCAhJ2b3RpbmdSZXN1bHRTdGFrZWQJAMwIAgUBVgkAzAgCCQCkAwEFAW8FA25pbAUBYQEBVwIBSwFvBAFYBQFLBAFNCAUBWAJfMQQBTggFAVgCXzIJALkJAgkAzAgCAgglcyVzJXMlZAkAzAgCAglwb29sU2hhcmUJAMwIAgUBTQkAzAgCBQFOCQDMCAIJAKQDAQUBbwUDbmlsBQFhAQFZAQFvCQC5CQIJAMwIAgIEJXMlZAkAzAgCAgp0b3RhbFZvdGVzCQDMCAIJAKQDAQUBbwUDbmlsBQFhAQFaAgFWAmFhCQC5CQIJAMwIAgIGJXMlcyVzCQDMCAICBnN0YWtlZAkAzAgCBQJhYQkAzAgCBQFWBQNuaWwFAWEBAmFiAQJhYwkAuQkCCQDMCAICFXZvdGluZ19lbWlzc2lvbi5yaWRlOgkAzAgCBQJhYwUDbmlsAgEgAQJhZAECYWMJAAIBCQECYWIBBQJhYwECYWUDAVACYWYCYWcEAmFoCQECYWIBCQC5CQIJAMwIAgIKbWFuZGF0b3J5IAkAzAgCCQClCAEFAVAJAMwIAgIBLgkAzAgCBQJhZgkAzAgCAg8gaXMgbm90IGRlZmluZWQFA25pbAIACQETdmFsdWVPckVycm9yTWVzc2FnZQIEAmFpBQJhZwMJAAECBQJhaQIGU3RyaW5nBAJhagUCYWkJAJ0IAgUBUAUCYWYDCQABAgUCYWkCA0ludAQCYWsFAmFpCQCaCAIFAVAFAmFmCQECYWQBAhJpbnZhbGlkIGVudHJ5IHR5cGUFAmFoAQJhbAIBUAJhZgoAAmFtCQECYWUDBQFQBQJhZgIAAwkAAQIFAmFtAgZTdHJpbmcFAmFtCQACAQkArAICCQADAQUCYW0CGyBjb3VsZG4ndCBiZSBjYXN0IHRvIFN0cmluZwECYW4CAVACYWYKAAJhbQkBAmFlAwUBUAUCYWYAAAMJAAECBQJhbQIDSW50BQJhbQkAAgEJAKwCAgkAAwEFAmFtAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQBAmFvAQFLCQCsAgIJAKwCAggFAUsCXzEFAWEIBQFLAl8yAQJhcAECYWoEAmFxCQC1CQIFAmFqBQFhAwkAAAIJAJADAQUCYXEAAgkAlAoCCQCRAwIFAmFxAAAJAJEDAgUCYXEAAQkBAmFkAQITaW52YWxpZCBwb29sIHN0cmluZwACYXIJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQJhbAIFBHRoaXMFAXUAAmFzAAoBAmF0AAIRJXNfX2ZhY3RvcnlDb25maWcBAmF1AQJhdgkAtQkCCQECYWwCBQJhdgkBAmF0AAUBYQECYXcBAmF4CQERQGV4dHJOYXRpdmUoMTA2MikBCQCRAwIFAmF4BQJhcwECYXkBAmF6AwkAAAIFAmF6BQFnBQR1bml0CQDZBAEFAmF6AQJhQQECYXoDCQAAAgUCYXoFBHVuaXQFAWcJANgEAQkBBXZhbHVlAQUCYXoBAmFCAgFNAU4EAmFDCgACYW0JAPwHBAUCYXICEHBvb2xJbmZvUkVBRE9OTFkJAMwIAgUBTQkAzAgCBQFOBQNuaWwFA25pbAMJAAECBQJhbQIVKEFkZHJlc3MsIEJ5dGVWZWN0b3IpBQJhbQUEdW5pdAUCYUMBAmFEAgFNAU4KAQJhRQECYUYJAKwCAgIoJXMlcyVzX19tYXBwaW5nc19fYmFzZUFzc2V0MmludGVybmFsSWRfXwUCYUYKAQJhRwICYUgCYUkJAKwCAgkArAICCQCsAgIJAKwCAgIKJWQlZCVzJXNfXwkApAMBBQJhSAICX18JAKQDAQUCYUkCI19fbWFwcGluZ3NfX3Bvb2xBc3NldHMyUG9vbENvbnRyYWN0CgECYUoBAmFLCQCsAgIJAKwCAgIIJXMlcyVzX18FAmFLAiBfX21hcHBpbmdzX19wb29sQ29udHJhY3QyTHBBc3NldAQCYUwJAQJhbgIFAmFyCQECYUUBBQFNBAJhTQkBAmFuAgUCYXIJAQJhRQEFAU4EAmFLCQECYWwCBQJhcgkBAmFHAgUCYUwFAmFNBAJhTgkBAmFsAgUCYXIJAQJhSgEFAmFLBQJhTgECYU8BAUsEAmFQBQFLBAFNCAUCYVACXzEEAU4IBQJhUAJfMgoAAmFtCQD8BwQFAmFyAhhjaGVja1d4RW1pc3Npb25Qb29sTGFiZWwJAMwIAgUBTQkAzAgCBQFOBQNuaWwFA25pbAMJAAECBQJhbQIHQm9vbGVhbgUCYW0JAAIBCQCsAgIJAAMBBQJhbQIcIGNvdWxkbid0IGJlIGNhc3QgdG8gQm9vbGVhbgECYVEABAJheAkBAmF1AQUCYXIEAmFSCQECYXcBBQJheAkA/AcEBQJhUgIHZGVwb3NpdAUDbmlsBQNuaWwAAmFTAgVwb29scwECYVQBAUsEAmFVBQFLBAFNCAUCYVUCXzEEAU4IBQJhVQJfMgkAuQkCCQDMCAICBXZvdGVzCQDMCAIFAU0JAMwIAgUBTgUDbmlsBQFhAQJhVgECYVcEAmFYAwkAAAIFAmFXBQJhUwIEJXMlcwIIJXMlcyVzJXMJALkJAgkAzAgCBQJhWAkAzAgCBQJhVwkAzAgCAgRoZWFkBQNuaWwFAWEBAmFZAQJhVwQCYVgDCQAAAgUCYVcFAmFTAgQlcyVzAgglcyVzJXMlcwkAuQkCCQDMCAIFAmFYCQDMCAIFAmFXCQDMCAICBHNpemUFA25pbAUBYQECYVoCAmFXAmJhBAJhWAMJAAACBQJhVwUCYVMCCCVzJXMlcyVzAgolcyVzJXMlcyVzCQC5CQIJAMwIAgUCYVgJAMwIAgUCYVcJAMwIAgUCYmEJAMwIAgIEcHJldgUDbmlsBQFhAQJiYgICYVcCYmEEAmFYAwkAAAIFAmFXBQJhUwIIJXMlcyVzJXMCCiVzJXMlcyVzJXMJALkJAgkAzAgCBQJhWAkAzAgCBQJhVwkAzAgCBQJiYQkAzAgCAgRuZXh0BQNuaWwFAWEBAmJjAgJhVwJiYQQCYmQJAJ0IAgUEdGhpcwkBAmFWAQUCYVcEAmJlCQCdCAIFBHRoaXMJAQJhWgIFAmFXBQJiYQQCYmYJAJ0IAgUEdGhpcwkBAmJiAgUCYVcFAmJhAwMJAAACBQJiYQkBC3ZhbHVlT3JFbHNlAgUCYmQCAAYJAQIhPQIFAmJlBQR1bml0BgkBAiE9AgUCYmYFBHVuaXQBAmJnAgJhVwJiYQQCYmQJAJ0IAgUEdGhpcwkBAmFWAQUCYVcEAmJoCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAQJhWQEFAmFXAAAEAmJpAwkBASEBCQECYmMCBQJhVwUCYmEGCQECYWQBAgtOb2RlIGV4aXN0cwMJAAACBQJiaQUCYmkJAM4IAgkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYVkBBQJhVwkAZAIFAmJoAAEFA25pbAMJAQIhPQIFAmJkBQR1bml0CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJiYgIFAmFXBQJiYQkBBXZhbHVlAQUCYmQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFaAgUCYVcJAQV2YWx1ZQEFAmJkBQJiYQUDbmlsBQNuaWwJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFWAQUCYVcFAmJhBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmJqAgJhVwJiYQQCYmQJAJ0IAgUEdGhpcwkBAmFWAQUCYVcEAmJoCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAQJhWQEFAmFXAAAEAmJlCQCdCAIFBHRoaXMJAQJhWgIFAmFXBQJiYQQCYmYJAJ0IAgUEdGhpcwkBAmJiAgUCYVcFAmJhCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJhWQEFAmFXCQBlAgUCYmgAAQUDbmlsAwMJAQIhPQIFAmJlBQR1bml0CQECIT0CBQJiZgUEdW5pdAcJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmJiAgUCYVcJAQV2YWx1ZQEFAmJlCQEFdmFsdWUBBQJiZgkAzAgCCQELU3RyaW5nRW50cnkCCQECYVoCBQJhVwkBBXZhbHVlAQUCYmYJAQV2YWx1ZQEFAmJlCQDMCAIJAQtEZWxldGVFbnRyeQEJAQJhWgIFAmFXBQJiYQkAzAgCCQELRGVsZXRlRW50cnkBCQECYmICBQJhVwUCYmEFA25pbAMJAQIhPQIFAmJmBQR1bml0CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhVgEFAmFXCQEFdmFsdWUBBQJiZgkAzAgCCQELRGVsZXRlRW50cnkBCQECYmICBQJhVwUCYmEJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAmFaAgUCYVcJAQV2YWx1ZQEFAmJmBQNuaWwDCQECIT0CBQJiZQUEdW5pdAkAzAgCCQELRGVsZXRlRW50cnkBCQECYVoCBQJhVwUCYmEJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAmJiAgUCYVcJAQV2YWx1ZQEFAmJlBQNuaWwDCQAAAgUCYmEJAQt2YWx1ZU9yRWxzZQIFAmJkAgAJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAmFWAQUCYVcFA25pbAkBAmFkAQkArAICCQCsAgIJAKwCAgIOaW52YWxpZCBub2RlOiAFAmFXAgEuBQJiYQECYmsAAhclc19fbWFuYWdlclZhdWx0QWRkcmVzcwECYmwAAhQlc19fbWFuYWdlclB1YmxpY0tleQECYm0ABAJhaQkAoggBCQECYmsAAwkAAQIFAmFpAgZTdHJpbmcEAmJuBQJhaQkBEUBleHRyTmF0aXZlKDEwNjIpAQUCYm4FBHRoaXMBAmJvAAQCYnAJAQJibQAEAmFpCQCdCAIFAmJwCQECYmwAAwkAAQIFAmFpAgZTdHJpbmcEAmJuBQJhaQkA2QQBBQJibgMJAAECBQJhaQIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAQJicQECYnIEAmFpCQECYm8AAwkAAQIFAmFpAgpCeXRlVmVjdG9yBAJicwUCYWkJAAACCAUCYnIPY2FsbGVyUHVibGljS2V5BQJicwMJAAECBQJhaQIEVW5pdAkAAAIIBQJicgZjYWxsZXIFBHRoaXMJAAIBAgtNYXRjaCBlcnJvcgECYnQBAmJyAwkBAmJxAQUCYnIGCQACAQIRcGVybWlzc2lvbiBkZW5pZWQBAmJ1AQJicgMJAAACCAUCYnIGY2FsbGVyBQR0aGlzBgkAAgECEXBlcm1pc3Npb24gZGVuaWVkEwJicgEYZ2V0VXNlckd3eEFtb3VudEF0SGVpZ2h0AgJidgJidwQCYngJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQECYWwCBQR0aGlzBQF2CQECYWIBAiFpbnZhbGlkIGJvb3N0aW5nIGNvbnRyYWN0IGFkZHJlc3MJAJQKAgUDbmlsCgACYW0JAPwHBAUCYngCIGdldFVzZXJHd3hBbW91bnRBdEhlaWdodFJFQURPTkxZCQDMCAIFAmJ2CQDMCAIFAmJ3BQNuaWwFA25pbAMJAAECBQJhbQIDSW50BQJhbQkAAgEJAKwCAgkAAwEFAmFtAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQCYnIBC2NvbnN0cnVjdG9yBQJhcgJieQJiegJiQQJiQgQCYkMJAMwIAgkBAmJ0AQUCYnIJAMwIAgMJAQIhPQIJAKYIAQUCYXIFBHVuaXQGAiBpbnZhbGlkIGZhY3RvcnkgY29udHJhY3QgYWRkcmVzcwkAzAgCAwkBAiE9AgkApggBBQJieQUEdW5pdAYCMmludmFsaWQgdm90aW5nIGVtaXNzaW9uIGNhbmRpZGF0ZSBjb250cmFjdCBhZGRyZXNzCQDMCAIDCQECIT0CCQCmCAEFAmJ6BQR1bml0BgIhaW52YWxpZCBib29zdGluZyBjb250cmFjdCBhZGRyZXNzCQDMCAIDCQECIT0CCQCmCAEFAmJBBQR1bml0BgIgaW52YWxpZCBzdGFraW5nIGNvbnRyYWN0IGFkZHJlc3MJAMwIAgMJAGYCBQJiQgAABgkBAmFkAQIUaW52YWxpZCBlcG9jaCBsZW5ndGgFA25pbAMJAAACBQJiQwUCYkMJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCBQF1BQJhcgkAzAgCCQELU3RyaW5nRW50cnkCBQFzBQJieQkAzAgCCQELU3RyaW5nRW50cnkCBQF2BQJiegkAzAgCCQELU3RyaW5nRW50cnkCBQF3BQJiQQkAzAgCCQEMSW50ZWdlckVudHJ5AgUBbAUCYkIFA25pbAUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJicgEGY3JlYXRlAgFNAU4EAmJDCQDMCAIDCQAAAgkA2AQBCAgFAmJyBmNhbGxlcgVieXRlcwkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzBQFzAgAGCQECYnQBBQJicgUDbmlsAwkAAAIFAmJDBQJiQwQBSwkAlAoCBQFNBQFOBAJiRAkAzggCCQDMCAIJAQxCb29sZWFuRW50cnkCCQEBSgEFAUsGBQNuaWwJAQJiZwIFAmFTCQECYW8BBQFLBAJiRQkAAAIJAJoIAgUEdGhpcwUBcAUEdW5pdAQCYkYDBQJiRQQBbwAACQDMCAIJAQxJbnRlZ2VyRW50cnkCBQFwBQFvCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBSAEFAW8FBmhlaWdodAkAzAgCCQEMSW50ZWdlckVudHJ5AgUBQgUGaGVpZ2h0CQDMCAIJAQxJbnRlZ2VyRW50cnkCBQFDBQFvCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQFEBQZoZWlnaHQFA25pbAUDbmlsCQCUCgIJAM4IAgUCYkQFAmJGBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmJyAQR2b3RlAwFNAU4CYkcEAUsJAJQKAgUBTQUBTgQBbwkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQFwAAAEAmJICQECYW4CBQR0aGlzCQEBSAEFAW8EAmJCCQECYW4CBQR0aGlzBQFsBAJiSQkAZAIFAmJIBQJiQgQCYkoJAJoIAgUEdGhpcwUBeQQCYksJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBAU8CCAUCYnIGY2FsbGVyBQFvAAAEAmJMCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAQFRAwUBSwgFAmJyBmNhbGxlcgUBbwAABAJiTQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQEBUwIFAUsFAW8AAAQCYk4JAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBAVkBBQFvAAAEAmJPCgACYW0JAPwHBAUEdGhpcwIYZ2V0VXNlckd3eEFtb3VudEF0SGVpZ2h0CQDMCAIJANgEAQgIBQJicgZjYWxsZXIFYnl0ZXMJAMwIAgUCYkkFA25pbAUDbmlsAwkAAQIFAmFtAgNJbnQFAmFtCQACAQkArAICCQADAQUCYW0CGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAQCYlAJAGUCBQJiTwUCYksEAmJRCQBkAgUCYkwFAmJHBAJiUgkBAmFPAQUBSwQCYkMJAMwIAgMJAQIhPQIJAKAIAQkBAUoBBQFLBQR1bml0BgkBAmFkAQIOaW52YWxpZCBhc3NldHMJAMwIAgMJAGYCBQJiSQUGaGVpZ2h0BgkBAmFkAQIOaW52YWxpZCBoZWlnaHQJAMwIAgMJAAACBQJiSgUEdW5pdAYJAQJhZAECGGZpbmFsaXphdGlvbiBpbiBwcm9ncmVzcwkAzAgCAwkAZgIFAmJPAAAGCQECYWQBAhN5b3UgZG8gbm90IGhhdmUgZ1dYCQDMCAIDAwkAZgIFAmJHAAAJAGcCBQJiUAUCYkcHBgkBAmFkAQIOaW52YWxpZCBhbW91bnQJAMwIAgMFAmJSBgkBAmFkAQIdcG9vbCBoYXNuJ3QgV1hfRU1JU1NJT04gbGFiZWwFA25pbAMJAAACBQJiQwUCYkMEAmJTCQECYVQBBQFLBAJhYQkApQgBCAUCYnIGY2FsbGVyBAJiVAMJAQJiYwIFAmJTBQJhYQUDbmlsCQECYmcCBQJiUwUCYWEJAJQKAgkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBTwIIBQJicgZjYWxsZXIFAW8JAGQCBQJiSwUCYkcJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFRAwUBSwgFAmJyBmNhbGxlcgUBbwUCYlEJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFTAgUBSwUBbwkAZAIFAmJNBQJiRwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVkBBQFvCQBkAgUCYk4FAmJHBQNuaWwFAmJUBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmJyAQpjYW5jZWxWb3RlAgFNAU4EAUsJAJQKAgUBTQUBTgQBbwkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQFwAAAEAmJICQECYW4CBQR0aGlzCQEBSAEFAW8EAmJCCQECYW4CBQR0aGlzBQFsBAJiSQkAZAIFAmJIBQJiQgQCYkoJAJoIAgUEdGhpcwUBeQQCYksJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBAU8CCAUCYnIGY2FsbGVyBQFvAAAEAmJMCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAQFRAwUBSwgFAmJyBmNhbGxlcgUBbwAABAJiTQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQEBUwIFAUsFAW8AAAQCYk4JAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBAVkBBQFvAAAEAmJDCQDMCAIDCQECIT0CCQCgCAEJAQFKAQUBSwUEdW5pdAYJAQJhZAECDmludmFsaWQgYXNzZXRzCQDMCAIDCQBmAgUCYkkFBmhlaWdodAYJAQJhZAECDmludmFsaWQgaGVpZ2h0CQDMCAIDCQAAAgUCYkoFBHVuaXQGCQECYWQBAhhmaW5hbGl6YXRpb24gaW4gcHJvZ3Jlc3MJAMwIAgMJAGYCBQJiTAAABgkBAmFkAQIHbm8gdm90ZQUDbmlsAwkAAAIFAmJDBQJiQwQCYlMJAQJhVAEFAUsEAmFhCQClCAEIBQJicgZjYWxsZXIJAJQKAgkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBTwIIBQJicgZjYWxsZXIFAW8JAJYDAQkAzAgCCQBlAgUCYksFAmJMCQDMCAIAAAUDbmlsCQDMCAIJAQtEZWxldGVFbnRyeQEJAQFRAwUBSwgFAmJyBmNhbGxlcgUBbwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVMCBQFLBQFvCQBlAgUCYk0FAmJMCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBWQEFAW8JAGUCBQJiTgUCYkwFA25pbAkBAmJqAgUCYlMFAmFhBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmJyAQ5zZXRFcG9jaExlbmd0aAECYlUEAmJDCQDMCAIJAQJidAEFAmJyCQDMCAIDCQBmAgUCYlUAAAYJAQJhZAECFGludmFsaWQgZXBvY2ggbGVuZ3RoBQNuaWwDCQAAAgUCYkMFAmJDCQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIFAW0FAmJVBQNuaWwFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CYnIBC3NldE1heERlcHRoAQJiVgQCYkMJAMwIAgkBAmJ0AQUCYnIJAMwIAgMJAGYCBQJiVgAABgkBAmFkAQIRaW52YWxpZCBtYXggZGVwdGgFA25pbAMJAAACBQJiQwUCYkMJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUBcQUCYlYFA25pbAUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJicgEacHJvY2Vzc1Bvb2xCYWxhbmNlSU5URVJOQUwBAmJXBAJiWAkBAmJ1AQUCYnIDCQAAAgUCYlgFAmJYBAFvCQECYW4CBQR0aGlzBQFwBAJiWQkAZQIFAW8AAQQBSwkBAmFwAQUCYlcEAmJaBQFLBAFNCAUCYloCXzEEAU4IBQJiWgJfMgQCYU4JAQJhRAIFAU0FAU4EAmNhCgACYW0JAPwHBAUCYXICDGNoZWNrQmFsYW5jZQkAzAgCBQJhTgUDbmlsBQNuaWwDCQABAgUCYW0CB0Jvb2xlYW4FAmFtCQACAQkArAICCQADAQUCYW0CHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4EAmNiAwkBASEBBQJjYQQCY2MJAPwHBAUCYXICGWRlbGV0ZVd4RW1pc3Npb25Qb29sTGFiZWwJAMwIAgUBTQkAzAgCBQFOBQNuaWwFA25pbAMJAAACBQJjYwUCY2MEAmNkCQD8BwQFAmFyAgxtb2RpZnlXZWlnaHQJAMwIAgUCYU4JAMwIAgAABQNuaWwFA25pbAMJAAACBQJjZAUCY2QEAmNlCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQECYUICBQFNBQFOCQECYWIBAg5pbnZhbGlkIGFzc2V0cwJfMQQCY2YJAPwHBAUCYXICCm1hbmFnZVBvb2wJAMwIAgkApQgBBQJjZQkAzAgCBQFqBQNuaWwFA25pbAMJAAACBQJjZgUCY2YEAmNnCQDOCAIJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAUoBBQFLBQNuaWwJAQJiagIFAmFTCQECYW8BBQFLCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFXAgUBSwUCYlkAAAUDbmlsBQJjZwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgUDbmlsCQCUCgIFAmNiBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmJyARNwcm9jZXNzVm90ZUlOVEVSTkFMAgJiVwJhYQQCYlgJAQJidQEFAmJyAwkAAAIFAmJYBQJiWAQCYnYJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBBQJhYQkBAmFiAQkArAICAipwcm9jZXNzVm90ZUlOVEVSTkFMOiBpbnZhbGlkIHVzZXIgYWRkcmVzcyAFAmFhBAFvCQECYW4CBQR0aGlzBQFwBAJiWQkAZQIFAW8AAQQCYkIJAQJhbgIFBHRoaXMFAWwEAmJICQECYW4CBQR0aGlzCQEBSAEFAW8EAmJJCQBkAgUCYkgFAmJCBAJjaAkBAmFuAgUEdGhpcwkBAUgBBQJiWQQCY2kJAQJhbgIFBHRoaXMJAQFuAQUCYlkEAmNqCQBkAgUCY2gFAmNpBAJjawMJAGcCBQJiWQAABgkBAmFkAQIrcHJvY2Vzc1ZvdGVJTlRFUk5BTDogaW52YWxpZCBwcmV2aW91cyBlcG9jaAMJAAACBQJjawUCY2sEAUsJAQJhcAEFAmJXBAJjbAUBSwQBTQgFAmNsAl8xBAFOCAUCY2wCXzIEAmJPCgACYW0JAPwHBAUEdGhpcwIYZ2V0VXNlckd3eEFtb3VudEF0SGVpZ2h0CQDMCAIFAmFhCQDMCAIFAmJJBQNuaWwFA25pbAMJAAECBQJhbQIDSW50BQJhbQkAAgEJAKwCAgkAAwEFAmFtAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQEAmNtCgACYW0JAPwHBAUEdGhpcwIYZ2V0VXNlckd3eEFtb3VudEF0SGVpZ2h0CQDMCAIFAmFhCQDMCAIFAmNqBQNuaWwFA25pbAMJAAECBQJhbQIDSW50BQJhbQkAAgEJAKwCAgkAAwEFAmFtAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQEAmJOCQELdmFsdWVPckVsc2UCCQCfCAEJAQFZAQUBbwAABAJjbgkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEBUwIFAUsFAW8AAAQCY28JAJ8IAQkBAVEDBQFLBQJidgUCYlkEAmNwCQETdmFsdWVPckVycm9yTWVzc2FnZQIFAmNvCQECYWIBCQCsAgIJAKwCAgkArAICCQCsAgICFHByb2Nlc3NWb3RlSU5URVJOQUwgBQJiVwIBIAUCYWECEjogbm8gcHJldmlvdXMgdm90ZQQCYksJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBAU8CBQJidgUBbwAABAFWCQECYUQCBQFNBQFOBAJjcQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEBVQIFAVYFAmJZAAAEAmJBCQERQGV4dHJOYXRpdmUoMTA2MikBCQECYWwCBQR0aGlzBQF3BAJjcgkBC3ZhbHVlT3JFbHNlAgkAmggCBQJiQQkBAVoCBQFWBQJhYQAABAJjcwMDCQAAAgUCY3IAAAYJAAACBQJjbwUEdW5pdAUDbmlsCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVQIFAVYFAmJZCQBkAgUCY3EFAmNwBQNuaWwEAmFOCQECYUQCBQFNBQFOBAJiUQMJAGYCBQJjbQAACQBrAwUCY3AFAmJPBQJjbQAABAJjYgMDCQAAAgUCY28FBHVuaXQGCQBnAgAABQJiUQkBAmJqAgkBAmFUAQUBSwUCYWEJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFRAwUBSwUCYnYFAW8FAmJRCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBWQEFAW8JAGQCBQJiTgUCYlEJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFTAgUBSwUBbwkAZAIFAmNuBQJiUQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAU8CBQJidgUBbwkAZAIFAmJLBQJiUQUDbmlsCQCUCgIJAM4IAgUCY2IFAmNzBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmJyARNwcm9jZXNzUG9vbElOVEVSTkFMAgJiVwJjdAQCYlgJAQJidQEFAmJyAwkAAAIFAmJYBQJiWAQCY3UEAmN2CQECYW4CBQR0aGlzBQFwAwUCY3QFAmN2CQBlAgUCY3YAAQQCY2sDCQBnAgUCY3UAAAYJAQJhZAECKXByb2Nlc3NQb29sSU5URVJOQUw6IGludmFsaWQgdGFyZ2V0IGVwb2NoAwkAAAIFAmNrBQJjawQBSwkBAmFwAQUCYlcEAmN3BQFLBAFNCAUCY3cCXzEEAU4IBQJjdwJfMgQCYkEJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQJhbAIFBHRoaXMFAXcEAmFOCQECYUQCBQFNBQFOBAJjeAoAAmFtCQD8BwQFAmJBAhJ1c2Vyc0xpc3RUcmF2ZXJzYWwJAMwIAgUCYU4FA25pbAUDbmlsAwkAAQIFAmFtAgdCb29sZWFuBQJhbQkAAgEJAKwCAgkAAwEFAmFtAhwgY291bGRuJ3QgYmUgY2FzdCB0byBCb29sZWFuAwkAAAIFAmN4BQJjeAMFAmN4CQCUCgIFA25pbAYEAmN5CQERQGV4dHJOYXRpdmUoMTA2MikBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUCYXIFAXgCHWludmFsaWQgYXNzZXRzIHN0b3JlIGNvbnRyYWN0BAJiTgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQEBWQEFAmN1AAAEAmNuCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAQFTAgUBSwUCY3UAAAQCY3oDCQAAAgUCYk4AAAAACQBrAwUCY24FAWIFAmJOBAJjZAkA/AcEBQJhcgIMbW9kaWZ5V2VpZ2h0CQDMCAIFAmFOCQDMCAIFAmN6BQNuaWwFA25pbAMJAAACBQJjZAUCY2QJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVcCBQFLBQJjdQUCY3oFA25pbAcJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CYnIBDmZpbmFsaXplSGVscGVyAAQCY3QJAQt2YWx1ZU9yRWxzZQIJAKAIAQUBRQcEAW8JAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUBcAAABAJjQQkAZQIFAW8AAQQCYkgJAQJhbgIFBHRoaXMJAQFIAQUBbwQCYkIJAQJhbgIFBHRoaXMFAWwEAmJJCQBkAgUCYkgFAmJCBAJiSgkAmggCBQR0aGlzBQF5AwMDCQBnAgUGaGVpZ2h0BQJiSQkAAAIFAmJKBQR1bml0BwkBASEBBQJjdAcEAmNCCQBkAgUBbwABBAJjQwkAmggCBQR0aGlzBQFtBAJjRAQCYWkFAmNDAwkAAQIFAmFpAgNJbnQEAmJVBQJhaQkAzAgCCQEMSW50ZWdlckVudHJ5AgUBbAUCYlUJAMwIAgkBC0RlbGV0ZUVudHJ5AQUBbQUDbmlsAwkAAQIFAmFpAgRVbml0BQNuaWwJAAIBAgtNYXRjaCBlcnJvcgkAlAoCCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFIAQUCY0IFBmhlaWdodAkAzAgCCQEMSW50ZWdlckVudHJ5AgUBQgUGaGVpZ2h0CQDMCAIJAQxJbnRlZ2VyRW50cnkCBQFwBQJjQgkAzAgCCQEMSW50ZWdlckVudHJ5AgUBeQUBZAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAW4BBQFvBQJiQgUDbmlsBQJjRAYDAwUCY3QJAAACBQJiSgUEdW5pdAcJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUBeQUBZgUDbmlsBgMJAAACBQJiSgUEdW5pdAkAlAoCBQNuaWwHAwkAAAIFAmJKBQFkBAJjRQkAoggBBQF6BAJhaQUCY0UDCQABAgUCYWkCBFVuaXQEAmNGCQCiCAEJAQJhVgEFAmFTAwkAAQIFAmNGAgRVbml0CQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIFAXkFAWUJAMwIAgkBC0RlbGV0ZUVudHJ5AQUBegUDbmlsBgMJAAECBQJjRgIGU3RyaW5nBAJjRwUCY0YJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCBQF6BQJjRwUDbmlsBgkAAgECC01hdGNoIGVycm9yAwkAAQIFAmFpAgZTdHJpbmcEAmJXBQJhaQQCY0gJAKIIAQkBAmJiAgUCYVMFAmJXAwkAAAIFAmNIBQJjSAQCY3gJAPwHBAUEdGhpcwIacHJvY2Vzc1Bvb2xCYWxhbmNlSU5URVJOQUwJAMwIAgUCYlcFA25pbAUDbmlsAwkAAAIFAmN4BQJjeAQCY0YFAmNIAwkAAQIFAmNGAgRVbml0CQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIFAXkFAWUJAMwIAgkBC0RlbGV0ZUVudHJ5AQUBegUDbmlsBgMJAAECBQJjRgIGU3RyaW5nBAJjRwUCY0YJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCBQF6BQJjRwUDbmlsBgkAAgECC01hdGNoIGVycm9yCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQILTWF0Y2ggZXJyb3IDCQAAAgUCYkoFAWUEAmNFCQCiCAEFAXoEAmNJCQCiCAEFAUEEAmFpBQJjRQMJAAECBQJhaQIEVW5pdAQCY0YJAKIIAQkBAmFWAQUCYVMDCQABAgUCY0YCBFVuaXQJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUBeQUBZgkAzAgCCQELRGVsZXRlRW50cnkBBQF6CQDMCAIJAQtEZWxldGVFbnRyeQEFAUEFA25pbAYDCQABAgUCY0YCBlN0cmluZwQCY0oFAmNGCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgUBegUCY0oFA25pbAYJAAIBAgtNYXRjaCBlcnJvcgMJAAECBQJhaQIGU3RyaW5nBAJiVwUCYWkEAUsJAQJhcAEFAmJXBAJjSwQCY0YFAmNJAwkAAQIFAmNGAgRVbml0CQCiCAEJAQJhVgEJAQJhVAEFAUsDCQABAgUCY0YCBlN0cmluZwQCY0wFAmNGBAJjTQkAoggBCQECYmICCQECYVQBBQFLBQJjTAMJAAACBQJjTQUCY00EAmNOCQD8BwQFBHRoaXMCE3Byb2Nlc3NWb3RlSU5URVJOQUwJAMwIAgUCYlcJAMwIAgUCY0wFA25pbAUDbmlsAwkAAAIFAmNOBQJjTgUCY00JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAgtNYXRjaCBlcnJvcgQCY0YFAmNLAwkAAQIFAmNGAgRVbml0BAJjSAkAoggBCQECYmICBQJhUwUCYlcEAmNPBQJjSAMJAAECBQJjTwIEVW5pdAkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQF5BQFmCQDMCAIJAQtEZWxldGVFbnRyeQEFAXoJAMwIAgkBC0RlbGV0ZUVudHJ5AQUBQQUDbmlsBgMJAAECBQJjTwIGU3RyaW5nBAJibgUCY08JAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCBQF6BQJibgkAzAgCCQELRGVsZXRlRW50cnkBBQFBBQNuaWwGCQACAQILTWF0Y2ggZXJyb3IDCQABAgUCY0YCBlN0cmluZwQCY1AFAmNGCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgUBQQUCY1AFA25pbAYJAAIBAgtNYXRjaCBlcnJvcgkAAgECC01hdGNoIGVycm9yAwkAAAIFAmJKBQFmBAJjRQkAoggBBQF6BAJhaQUCY0UDCQABAgUCYWkCBFVuaXQEAmNGCQCiCAEJAQJhVgEFAmFTAwkAAQIFAmNGAgRVbml0BAJjYgMFAmN0CQDMCAIJAQtEZWxldGVFbnRyeQEFAXkJAMwIAgkBC0RlbGV0ZUVudHJ5AQUBRQUDbmlsCQDMCAIJAQtEZWxldGVFbnRyeQEFAXkJAMwIAgkBDEJvb2xlYW5FbnRyeQIJAQFJAQUCY0EGCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQFDBQFvCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQFEBQJiSAUDbmlsBAJjUQkBAmFRAAMJAAACBQJjUQUCY1EJAJQKAgUCY2IGCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAwkAAQIFAmNGAgZTdHJpbmcEAmNHBQJjRgkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIFAXoFAmNHBQNuaWwGCQACAQILTWF0Y2ggZXJyb3IDCQABAgUCYWkCBlN0cmluZwQCYlcFAmFpBAJjSAkAoggBCQECYmICBQJhUwUCYlcDCQAAAgUCY0gFAmNIBAJjeAoAAmFtCQD8BwQFBHRoaXMCE3Byb2Nlc3NQb29sSU5URVJOQUwJAMwIAgUCYlcJAMwIAgUCY3QFA25pbAUDbmlsAwkAAQIFAmFtAgdCb29sZWFuBQJhbQkAAgEJAKwCAgkAAwEFAmFtAhwgY291bGRuJ3QgYmUgY2FzdCB0byBCb29sZWFuAwkAAAIFAmN4BQJjeAMFAmN4CQCUCgIFA25pbAYEAmNGBQJjSAMJAAECBQJjRgIEVW5pdAQCY2IDBQJjdAkAzAgCCQELRGVsZXRlRW50cnkBBQF5CQDMCAIJAQtEZWxldGVFbnRyeQEFAUUJAMwIAgkBC0RlbGV0ZUVudHJ5AQUBegUDbmlsCQDMCAIJAQtEZWxldGVFbnRyeQEFAXkJAMwIAgkBDEJvb2xlYW5FbnRyeQIJAQFJAQUCY0EGCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQFDBQFvCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQFEBQJiSAkAzAgCCQELRGVsZXRlRW50cnkBBQF6BQNuaWwEAmNRCQECYVEAAwkAAAIFAmNRBQJjUQkAlAoCBQJjYgYJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4DCQABAgUCY0YCBlN0cmluZwQCY0cFAmNGCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgUBegUCY0cFA25pbAYJAAIBAgtNYXRjaCBlcnJvcgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECC01hdGNoIGVycm9yCQECYWQBAhZmaW5hbGl6YXRpb24gaXMgYnJva2VuAmJyAQ9maW5hbGl6ZVdyYXBwZXIBAmNSBAJjUwkBEUBleHRyTmF0aXZlKDEwNjIpAQkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwUBdAQCY1QKAAJhbQkA/AcEBQR0aGlzAg5maW5hbGl6ZUhlbHBlcgUDbmlsBQNuaWwDCQABAgUCYW0CB0Jvb2xlYW4FAmFtCQACAQkArAICCQADAQUCYW0CHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4DCQAAAgUCY1QFAmNUAwkBASEBBQJjVAMJAAACBQJjUgAACQECYWQBAh5DdXJyZW50IHZvdGluZyBpcyBub3Qgb3ZlciB5ZXQEAmNVCQD8BwQFAmNTAghmaW5hbGl6ZQUDbmlsBQNuaWwDCQAAAgUCY1UFAmNVCQCUCgIFA25pbAUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgQCY1YJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUBcQUBYwMJAGYCBQJjVgUCY1IEAmNVCQD8BwQFBHRoaXMCD2ZpbmFsaXplV3JhcHBlcgkAzAgCCQBkAgUCY1IAAQUDbmlsBQNuaWwDCQAAAgUCY1UFAmNVCQCUCgIFA25pbAUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAlAoCBQNuaWwFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CYnIBCGZpbmFsaXplAAQCY1UJAPwHBAUEdGhpcwIPZmluYWxpemVXcmFwcGVyCQDMCAIAAAUDbmlsBQNuaWwDCQAAAgUCY1UFAmNVCQCUCgIFA25pbAUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJicgEUY29udGFpbnNOb2RlUkVBRE9OTFkCAmFXAmJhCQCUCgIFA25pbAkBAmJjAgUCYVcFAmJhAmJyAQppbnNlcnROb2RlAgJhVwJiYQQCYlgJAQJidAEFAmJyAwkAAAIFAmJYBQJiWAkAlAoCCQECYmcCBQJhVwUCYmEFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CYnIBCmRlbGV0ZU5vZGUCAmFXAmJhBAJiWAkBAmJ0AQUCYnIDCQAAAgUCYlgFAmJYCQCUCgIJAQJiagIFAmFXBQJiYQUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJicgEYaXNGaW5hbGl6YXRpb25JblByb2dyZXNzAAQCYkoJAJoIAgUEdGhpcwUBeQQCY1cJAQIhPQIFAmJKBQR1bml0CQCUCgIFA25pbAUCY1cCYnIBCmRlbGV0ZVBvb2wCAU0BTgQCYlgDAwkAAAIIBQJicgZjYWxsZXIFAmFyBgkBAmJ0AQUCYnIGCQECYWQBAhFQZXJtaXNzaW9uIGRlbmllZAMJAAACBQJiWAUCYlgEAmFXAgVwb29scwQBSwkAlAoCBQFNBQFOBAJiYQkAuQkCCQDMCAIFAU0JAMwIAgUBTgUDbmlsBQFhBAJjYgMJAQJiYwIFAmFXBQJiYQkBAmJqAgUCYVcFAmJhBQNuaWwJAM4IAgkAzAgCCQELRGVsZXRlRW50cnkBCQEBSgEFAUsFA25pbAUCY2IJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CYnIBBnJlc3VtZQMBTQFOAmNYBAJiSgkAmggCBQR0aGlzBQF5BAJjWQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQECYUICBQFNBQFOCQECYWIBAg5pbnZhbGlkIGFzc2V0cwQCY2UIBQJjWQJfMQQCYU4IBQJjWQJfMgQCY1oJAJEDAggFAmJyCHBheW1lbnRzAAAEAmN5CQERQGV4dHJOYXRpdmUoMTA2MikBCQERQGV4dHJOYXRpdmUoMTA1MykCBQJhcgUBeAQCZGECCiVzX19jb25maWcEAmRiAAEEAmJ6CQERQGV4dHJOYXRpdmUoMTA2MikBCQECYWwCBQR0aGlzBQF2BAJkYwkA2QQBCQCRAwIJALUJAgkBEUBleHRyTmF0aXZlKDEwNTMpAgUCYnoFAmRhBQFhBQJkYgQCZGQKAAJhbQkA/AcEBQJjeQISaXNWZXJpZmllZFJFQURPTkxZCQDMCAIFAU0FA25pbAUDbmlsAwkAAQIFAmFtAgdCb29sZWFuBQJhbQkAAgEJAKwCAgkAAwEFAmFtAhwgY291bGRuJ3QgYmUgY2FzdCB0byBCb29sZWFuBAJkZQoAAmFtCQD8BwQFAmN5AhJpc1ZlcmlmaWVkUkVBRE9OTFkJAMwIAgUBTgUDbmlsBQNuaWwDCQABAgUCYW0CB0Jvb2xlYW4FAmFtCQACAQkArAICCQADAQUCYW0CHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4EAmRmCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUEdGhpcwUBcgIWaW52YWxpZCByZXN1bXB0aW9uIGZlZQQCYkMJAMwIAgMJAGYCCQCQAwEIBQJicghwYXltZW50cwAABgkBAmFkAQInYXQgbGVhc3Qgb25lIHBheW1lbnQgc2hvdWxkIGJlIGF0dGFjaGVkCQDMCAIDCQAAAgUCYkoFBHVuaXQGCQECYWQBAhtmaW5hbGl6YXRpb24gaXMgaW4gcHJvZ3Jlc3MJAMwIAgMJAAACCAUCY1oHYXNzZXRJZAUCZGMGCQECYWQBAhxpbnZhbGlkIGZlZSBwYXltZW50IGFzc2V0IGlkCQDMCAIDCQAAAggFAmNaBmFtb3VudAUCZGYGCQECYWQBAhppbnZhbGlkIGZlZSBwYXltZW50IGFtb3VudAkAzAgCAwMFAmRkBQJkZQcGCQECYWQBAh5ib3RoIGFzc2V0cyBzaG91bGQgYmUgdmVyaWZpZWQFA25pbAMJAAACBQJiQwUCYkMEAmRnCQDwBwIFBHRoaXMFAmFOAwkAAAIFAmRnBQJkZwQCZGgHBAJkaQMJAAACCQCQAwEIBQJicghwYXltZW50cwABBQR1bml0AwkAAAIJAJADAQgFAmJyCHBheW1lbnRzAAIEAmRqCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAPEHAQUCY2UJAQJhYgECHHBvb2wgYWRkcmVzcyBpcyBub3Qgc2NyaXB0ZWQEAmRrCQDbBAEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQJhcgkBAUcACQECYWIBAihhbGxvd2VkIGxwIHN0YWJsZSBzY3JpcHQgaGFzaCBpcyBub3Qgc2V0BAJkbAkAAAIFAmRqBQJkawQCZG0DBQJkbAILcHV0T25lVGtuVjICCXB1dE9uZVRrbgkA/AcEBQJjZQUCZG0JAMwIAgUCY1gJAMwIAgUCZGgFA25pbAkAzAgCCQCRAwIIBQJicghwYXltZW50cwABBQNuaWwDCQAAAgkAkAMBCAUCYnIIcGF5bWVudHMAAwkA/AcEBQJjZQIDcHV0CQDMCAIFAmNYCQDMCAIFAmRoBQNuaWwJAMwIAgkAkQMCCAUCYnIIcGF5bWVudHMAAQkAzAgCCQCRAwIIBQJicghwYXltZW50cwACBQNuaWwJAQJhZAECFWludmFsaWQgcGF5bWVudHMgc2l6ZQMJAAACBQJkaQUCZGkEAmNhCgACYW0JAPwHBAUCYXICDGNoZWNrQmFsYW5jZQkAzAgCCQECYUEBBQJhTgUDbmlsBQNuaWwDCQABAgUCYW0CB0Jvb2xlYW4FAmFtCQACAQkArAICCQADAQUCYW0CHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4EAmRuAwUCY2EGCQECYWQBAhRiYWxhbmNlcyBhcmUgdG9vIGxvdwMJAAACBQJkbgUCZG4EAmRvCQDwBwIFBHRoaXMFAmFOAwkAAAIFAmRvBQJkbwQCZHAJAGUCBQJkbwUCZGcEAmRxAwkAZgIFAmRwAAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAmJyBmNhbGxlcgUCZHAFAmFOBQNuaWwFA25pbAQCZHIJAPwHBAUCYXICFnNldFd4RW1pc3Npb25Qb29sTGFiZWwJAMwIAgUBTQkAzAgCBQFOBQNuaWwFA25pbAMJAAACBQJkcgUCZHIEAmRzCgACYW0JAPwHBAUCYXICFWdldFBvb2xTdGF0dXNSRUFET05MWQkAzAgCCQClCAEFAmNlBQNuaWwFA25pbAMJAAECBQJhbQIDSW50BQJhbQkAAgEJAKwCAgkAAwEFAmFtAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQEAmNmAwkAAAIFAmRzBQFqCQD8BwQFAmFyAgptYW5hZ2VQb29sCQDMCAIJAKUIAQUCY2UJAMwIAgUBaAUDbmlsBQNuaWwFBHVuaXQDCQAAAgUCY2YFAmNmBAFLCQCUCgIFAU0FAU4EAmJECQDOCAIJAMwIAgkBDEJvb2xlYW5FbnRyeQIJAQFKAQUBSwYFA25pbAkBAmJnAgUCYVMJAQJhbwEFAUsJAJQKAgkAzggCBQJiRAUCZHEFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmR0AQJkdQAEAmR2BAJhaQkBAmJvAAMJAAECBQJhaQIKQnl0ZVZlY3RvcgQCYnMFAmFpBQJicwMJAAECBQJhaQIEVW5pdAgFAmR0D3NlbmRlclB1YmxpY0tleQkAAgECC01hdGNoIGVycm9yCQD0AwMIBQJkdAlib2R5Qnl0ZXMJAJEDAggFAmR0BnByb29mcwAABQJkdjr2v74=", "height": 3079861, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 92ea3wYcCXBKmFveQCqZYdk1c1BdNCBy77wUCXKQj3FL Next: none Diff:
OldNewDifferences
10611061 then {
10621062 let dh = false
10631063 let di = if ((size(br.payments) == 1))
1064- then {
1065- let ca = {
1066- let am = invoke(ar, "checkBalance", [aA(aN)], nil)
1067- if ($isInstanceOf(am, "Boolean"))
1068- then am
1069- else throw(($getType(am) + " couldn't be cast to Boolean"))
1070- }
1071- if (ca)
1072- then true
1073- else ad("assets should be attached")
1074- }
1064+ then unit
10751065 else if ((size(br.payments) == 2))
10761066 then {
10771067 let dj = valueOrErrorMessage(scriptHash(ce), ab("pool address is not scripted"))
10871077 else ad("invalid payments size")
10881078 if ((di == di))
10891079 then {
1090- let dn = assetBalance(this, aN)
1080+ let ca = {
1081+ let am = invoke(ar, "checkBalance", [aA(aN)], nil)
1082+ if ($isInstanceOf(am, "Boolean"))
1083+ then am
1084+ else throw(($getType(am) + " couldn't be cast to Boolean"))
1085+ }
1086+ let dn = if (ca)
1087+ then true
1088+ else ad("balances are too low")
10911089 if ((dn == dn))
10921090 then {
1093- let do = (dn - dg)
1094- let dp = if ((do > 0))
1095- then [ScriptTransfer(br.caller, do, aN)]
1096- else nil
1097- let dq = invoke(ar, "setWxEmissionPoolLabel", [M, N], nil)
1098- if ((dq == dq))
1091+ let do = assetBalance(this, aN)
1092+ if ((do == do))
10991093 then {
1100- let dr = {
1101- let am = invoke(ar, "getPoolStatusREADONLY", [toString(ce)], nil)
1102- if ($isInstanceOf(am, "Int"))
1103- then am
1104- else throw(($getType(am) + " couldn't be cast to Int"))
1105- }
1106- let cf = if ((dr == j))
1107- then invoke(ar, "managePool", [toString(ce), h], nil)
1108- else unit
1109- if ((cf == cf))
1094+ let dp = (do - dg)
1095+ let dq = if ((dp > 0))
1096+ then [ScriptTransfer(br.caller, dp, aN)]
1097+ else nil
1098+ let dr = invoke(ar, "setWxEmissionPoolLabel", [M, N], nil)
1099+ if ((dr == dr))
11101100 then {
1111- let K = $Tuple2(M, N)
1112- let bD = ([BooleanEntry(J(K), true)] ++ bg(aS, ao(K)))
1113- $Tuple2((bD ++ dp), unit)
1101+ let ds = {
1102+ let am = invoke(ar, "getPoolStatusREADONLY", [toString(ce)], nil)
1103+ if ($isInstanceOf(am, "Int"))
1104+ then am
1105+ else throw(($getType(am) + " couldn't be cast to Int"))
1106+ }
1107+ let cf = if ((ds == j))
1108+ then invoke(ar, "managePool", [toString(ce), h], nil)
1109+ else unit
1110+ if ((cf == cf))
1111+ then {
1112+ let K = $Tuple2(M, N)
1113+ let bD = ([BooleanEntry(J(K), true)] ++ bg(aS, ao(K)))
1114+ $Tuple2((bD ++ dq), unit)
1115+ }
1116+ else throw("Strict value is not equal to itself.")
11141117 }
11151118 else throw("Strict value is not equal to itself.")
11161119 }
11261129 }
11271130
11281131
1129-@Verifier(ds)
1130-func dt () = {
1131- let du = {
1132+@Verifier(dt)
1133+func du () = {
1134+ let dv = {
11321135 let ai = bo()
11331136 if ($isInstanceOf(ai, "ByteVector"))
11341137 then {
11361139 bs
11371140 }
11381141 else if ($isInstanceOf(ai, "Unit"))
1139- then ds.senderPublicKey
1142+ then dt.senderPublicKey
11401143 else throw("Match error")
11411144 }
1142- sigVerify(ds.bodyBytes, ds.proofs[0], du)
1145+ sigVerify(dt.bodyBytes, dt.proofs[0], dv)
11431146 }
11441147
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 = 2
1515
1616 let g = "WAVES"
1717
1818 let h = 1
1919
2020 let i = 2
2121
2222 let j = 3
2323
2424 let k = 4
2525
2626 let l = makeString(["%s", "epochLength"], a)
2727
2828 let m = makeString(["%s%s", "epochLength__new"], a)
2929
3030 func n (o) = makeString(["%s%d", "epochLength", toString(o)], a)
3131
3232
3333 let p = makeString(["%s", "currentEpoch"], a)
3434
3535 let q = makeString(["%s", "maxDepth"], a)
3636
3737 let r = makeString(["%s", "resumptionFee"], a)
3838
3939 let s = makeString(["%s", "votingEmissionCandidateContract"], a)
4040
4141 let t = makeString(["%s", "votingEmissionRateContract"], a)
4242
4343 let u = makeString(["%s", "factoryContract"], a)
4444
4545 let v = makeString(["%s", "boostingContract"], a)
4646
4747 let w = makeString(["%s", "stakingContract"], a)
4848
4949 let x = makeString(["%s", "assetsStoreContract"], a)
5050
5151 let y = makeString(["%s", "finalizationStage"], a)
5252
5353 let z = makeString(["%s", "nextPool"], a)
5454
5555 let A = makeString(["%s", "nextUser"], a)
5656
5757 let B = makeString(["%s", "startHeight"], a)
5858
5959 let C = makeString(["%s", "currentEpochUi"], a)
6060
6161 let D = makeString(["%s", "startHeightUi"], a)
6262
6363 let E = makeString(["%s", "force"], a)
6464
6565 func F () = "%s__allowedLpScriptHash"
6666
6767
6868 func G () = "%s__allowedLpStableScriptHash"
6969
7070
7171 func H (o) = makeString(["%s%d", "startHeight", toString(o)], a)
7272
7373
7474 func I (o) = makeString(["%s%d", "finalized", toString(o)], a)
7575
7676
7777 func J (K) = {
7878 let L = K
7979 let M = L._1
8080 let N = L._2
8181 makeString(["%s%s%s", "inList", M, N], a)
8282 }
8383
8484
8585 func O (P,o) = makeString(["%s%s%d", "used", toString(P), toString(o)], a)
8686
8787
8888 func Q (K,P,o) = {
8989 let R = K
9090 let M = R._1
9191 let N = R._2
9292 makeString(["%s%s%s%s%d", "vote", M, N, toString(P), toString(o)], a)
9393 }
9494
9595
9696 func S (K,o) = {
9797 let T = K
9898 let M = T._1
9999 let N = T._2
100100 makeString(["%s%s%s%d", "votingResult", M, N, toString(o)], a)
101101 }
102102
103103
104104 func U (V,o) = makeString(["%s%s%d", "votingResultStaked", V, toString(o)], a)
105105
106106
107107 func W (K,o) = {
108108 let X = K
109109 let M = X._1
110110 let N = X._2
111111 makeString(["%s%s%s%d", "poolShare", M, N, toString(o)], a)
112112 }
113113
114114
115115 func Y (o) = makeString(["%s%d", "totalVotes", toString(o)], a)
116116
117117
118118 func Z (V,aa) = makeString(["%s%s%s", "staked", aa, V], a)
119119
120120
121121 func ab (ac) = makeString(["voting_emission.ride:", ac], " ")
122122
123123
124124 func ad (ac) = throw(ab(ac))
125125
126126
127127 func ae (P,af,ag) = {
128128 let ah = ab(makeString(["mandatory ", toString(P), ".", af, " is not defined"], ""))
129129 valueOrErrorMessage({
130130 let ai = ag
131131 if ($isInstanceOf(ai, "String"))
132132 then {
133133 let aj = ai
134134 getString(P, af)
135135 }
136136 else if ($isInstanceOf(ai, "Int"))
137137 then {
138138 let ak = ai
139139 getInteger(P, af)
140140 }
141141 else ad("invalid entry type")
142142 }, ah)
143143 }
144144
145145
146146 func al (P,af) = {
147147 let am = ae(P, af, "")
148148 if ($isInstanceOf(am, "String"))
149149 then am
150150 else throw(($getType(am) + " couldn't be cast to String"))
151151 }
152152
153153
154154 func an (P,af) = {
155155 let am = ae(P, af, 0)
156156 if ($isInstanceOf(am, "Int"))
157157 then am
158158 else throw(($getType(am) + " couldn't be cast to Int"))
159159 }
160160
161161
162162 func ao (K) = ((K._1 + a) + K._2)
163163
164164
165165 func ap (aj) = {
166166 let aq = split(aj, a)
167167 if ((size(aq) == 2))
168168 then $Tuple2(aq[0], aq[1])
169169 else ad("invalid pool string")
170170 }
171171
172172
173173 let ar = addressFromStringValue(al(this, u))
174174
175175 let as = 10
176176
177177 func at () = "%s__factoryConfig"
178178
179179
180180 func au (av) = split(al(av, at()), a)
181181
182182
183183 func aw (ax) = addressFromStringValue(ax[as])
184184
185185
186186 func ay (az) = if ((az == g))
187187 then unit
188188 else fromBase58String(az)
189189
190190
191191 func aA (az) = if ((az == unit))
192192 then g
193193 else toBase58String(value(az))
194194
195195
196196 func aB (M,N) = {
197197 let aC = {
198198 let am = invoke(ar, "poolInfoREADONLY", [M, N], nil)
199199 if ($isInstanceOf(am, "(Address, ByteVector)"))
200200 then am
201201 else unit
202202 }
203203 aC
204204 }
205205
206206
207207 func aD (M,N) = {
208208 func aE (aF) = ("%s%s%s__mappings__baseAsset2internalId__" + aF)
209209
210210 func aG (aH,aI) = (((("%d%d%s%s__" + toString(aH)) + "__") + toString(aI)) + "__mappings__poolAssets2PoolContract")
211211
212212 func aJ (aK) = (("%s%s%s__" + aK) + "__mappings__poolContract2LpAsset")
213213
214214 let aL = an(ar, aE(M))
215215 let aM = an(ar, aE(N))
216216 let aK = al(ar, aG(aL, aM))
217217 let aN = al(ar, aJ(aK))
218218 aN
219219 }
220220
221221
222222 func aO (K) = {
223223 let aP = K
224224 let M = aP._1
225225 let N = aP._2
226226 let am = invoke(ar, "checkWxEmissionPoolLabel", [M, N], nil)
227227 if ($isInstanceOf(am, "Boolean"))
228228 then am
229229 else throw(($getType(am) + " couldn't be cast to Boolean"))
230230 }
231231
232232
233233 func aQ () = {
234234 let ax = au(ar)
235235 let aR = aw(ax)
236236 invoke(aR, "deposit", nil, nil)
237237 }
238238
239239
240240 let aS = "pools"
241241
242242 func aT (K) = {
243243 let aU = K
244244 let M = aU._1
245245 let N = aU._2
246246 makeString(["votes", M, N], a)
247247 }
248248
249249
250250 func aV (aW) = {
251251 let aX = if ((aW == aS))
252252 then "%s%s"
253253 else "%s%s%s%s"
254254 makeString([aX, aW, "head"], a)
255255 }
256256
257257
258258 func aY (aW) = {
259259 let aX = if ((aW == aS))
260260 then "%s%s"
261261 else "%s%s%s%s"
262262 makeString([aX, aW, "size"], a)
263263 }
264264
265265
266266 func aZ (aW,ba) = {
267267 let aX = if ((aW == aS))
268268 then "%s%s%s%s"
269269 else "%s%s%s%s%s"
270270 makeString([aX, aW, ba, "prev"], a)
271271 }
272272
273273
274274 func bb (aW,ba) = {
275275 let aX = if ((aW == aS))
276276 then "%s%s%s%s"
277277 else "%s%s%s%s%s"
278278 makeString([aX, aW, ba, "next"], a)
279279 }
280280
281281
282282 func bc (aW,ba) = {
283283 let bd = getString(this, aV(aW))
284284 let be = getString(this, aZ(aW, ba))
285285 let bf = getString(this, bb(aW, ba))
286286 if (if ((ba == valueOrElse(bd, "")))
287287 then true
288288 else (be != unit))
289289 then true
290290 else (bf != unit)
291291 }
292292
293293
294294 func bg (aW,ba) = {
295295 let bd = getString(this, aV(aW))
296296 let bh = valueOrElse(getInteger(this, aY(aW)), 0)
297297 let bi = if (!(bc(aW, ba)))
298298 then true
299299 else ad("Node exists")
300300 if ((bi == bi))
301301 then (([IntegerEntry(aY(aW), (bh + 1))] ++ (if ((bd != unit))
302302 then [StringEntry(bb(aW, ba), value(bd)), StringEntry(aZ(aW, value(bd)), ba)]
303303 else nil)) ++ [StringEntry(aV(aW), ba)])
304304 else throw("Strict value is not equal to itself.")
305305 }
306306
307307
308308 func bj (aW,ba) = {
309309 let bd = getString(this, aV(aW))
310310 let bh = valueOrElse(getInteger(this, aY(aW)), 0)
311311 let be = getString(this, aZ(aW, ba))
312312 let bf = getString(this, bb(aW, ba))
313313 ([IntegerEntry(aY(aW), (bh - 1))] ++ (if (if ((be != unit))
314314 then (bf != unit)
315315 else false)
316316 then [StringEntry(bb(aW, value(be)), value(bf)), StringEntry(aZ(aW, value(bf)), value(be)), DeleteEntry(aZ(aW, ba)), DeleteEntry(bb(aW, ba))]
317317 else if ((bf != unit))
318318 then [StringEntry(aV(aW), value(bf)), DeleteEntry(bb(aW, ba)), DeleteEntry(aZ(aW, value(bf)))]
319319 else if ((be != unit))
320320 then [DeleteEntry(aZ(aW, ba)), DeleteEntry(bb(aW, value(be)))]
321321 else if ((ba == valueOrElse(bd, "")))
322322 then [DeleteEntry(aV(aW))]
323323 else ad(((("invalid node: " + aW) + ".") + ba))))
324324 }
325325
326326
327327 func bk () = "%s__managerVaultAddress"
328328
329329
330330 func bl () = "%s__managerPublicKey"
331331
332332
333333 func bm () = {
334334 let ai = getString(bk())
335335 if ($isInstanceOf(ai, "String"))
336336 then {
337337 let bn = ai
338338 addressFromStringValue(bn)
339339 }
340340 else this
341341 }
342342
343343
344344 func bo () = {
345345 let bp = bm()
346346 let ai = getString(bp, bl())
347347 if ($isInstanceOf(ai, "String"))
348348 then {
349349 let bn = ai
350350 fromBase58String(bn)
351351 }
352352 else if ($isInstanceOf(ai, "Unit"))
353353 then unit
354354 else throw("Match error")
355355 }
356356
357357
358358 func bq (br) = {
359359 let ai = bo()
360360 if ($isInstanceOf(ai, "ByteVector"))
361361 then {
362362 let bs = ai
363363 (br.callerPublicKey == bs)
364364 }
365365 else if ($isInstanceOf(ai, "Unit"))
366366 then (br.caller == this)
367367 else throw("Match error")
368368 }
369369
370370
371371 func bt (br) = if (bq(br))
372372 then true
373373 else throw("permission denied")
374374
375375
376376 func bu (br) = if ((br.caller == this))
377377 then true
378378 else throw("permission denied")
379379
380380
381381 @Callable(br)
382382 func getUserGwxAmountAtHeight (bv,bw) = {
383383 let bx = valueOrErrorMessage(addressFromString(al(this, v)), ab("invalid boosting contract address"))
384384 $Tuple2(nil, {
385385 let am = invoke(bx, "getUserGwxAmountAtHeightREADONLY", [bv, bw], nil)
386386 if ($isInstanceOf(am, "Int"))
387387 then am
388388 else throw(($getType(am) + " couldn't be cast to Int"))
389389 })
390390 }
391391
392392
393393
394394 @Callable(br)
395395 func constructor (ar,by,bz,bA,bB) = {
396396 let bC = [bt(br), if ((addressFromString(ar) != unit))
397397 then true
398398 else "invalid factory contract address", if ((addressFromString(by) != unit))
399399 then true
400400 else "invalid voting emission candidate contract address", if ((addressFromString(bz) != unit))
401401 then true
402402 else "invalid boosting contract address", if ((addressFromString(bA) != unit))
403403 then true
404404 else "invalid staking contract address", if ((bB > 0))
405405 then true
406406 else ad("invalid epoch length")]
407407 if ((bC == bC))
408408 then $Tuple2([StringEntry(u, ar), StringEntry(s, by), StringEntry(v, bz), StringEntry(w, bA), IntegerEntry(l, bB)], unit)
409409 else throw("Strict value is not equal to itself.")
410410 }
411411
412412
413413
414414 @Callable(br)
415415 func create (M,N) = {
416416 let bC = [if ((toBase58String(br.caller.bytes) == valueOrElse(getString(this, s), "")))
417417 then true
418418 else bt(br)]
419419 if ((bC == bC))
420420 then {
421421 let K = $Tuple2(M, N)
422422 let bD = ([BooleanEntry(J(K), true)] ++ bg(aS, ao(K)))
423423 let bE = (getInteger(this, p) == unit)
424424 let bF = if (bE)
425425 then {
426426 let o = 0
427427 [IntegerEntry(p, o), IntegerEntry(H(o), height), IntegerEntry(B, height), IntegerEntry(C, o), IntegerEntry(D, height)]
428428 }
429429 else nil
430430 $Tuple2((bD ++ bF), unit)
431431 }
432432 else throw("Strict value is not equal to itself.")
433433 }
434434
435435
436436
437437 @Callable(br)
438438 func vote (M,N,bG) = {
439439 let K = $Tuple2(M, N)
440440 let o = valueOrElse(getInteger(this, p), 0)
441441 let bH = an(this, H(o))
442442 let bB = an(this, l)
443443 let bI = (bH + bB)
444444 let bJ = getInteger(this, y)
445445 let bK = valueOrElse(getInteger(this, O(br.caller, o)), 0)
446446 let bL = valueOrElse(getInteger(this, Q(K, br.caller, o)), 0)
447447 let bM = valueOrElse(getInteger(this, S(K, o)), 0)
448448 let bN = valueOrElse(getInteger(this, Y(o)), 0)
449449 let bO = {
450450 let am = invoke(this, "getUserGwxAmountAtHeight", [toBase58String(br.caller.bytes), bI], nil)
451451 if ($isInstanceOf(am, "Int"))
452452 then am
453453 else throw(($getType(am) + " couldn't be cast to Int"))
454454 }
455455 let bP = (bO - bK)
456456 let bQ = (bL + bG)
457457 let bR = aO(K)
458458 let bC = [if ((getBoolean(J(K)) != unit))
459459 then true
460460 else ad("invalid assets"), if ((bI > height))
461461 then true
462462 else ad("invalid height"), if ((bJ == unit))
463463 then true
464464 else ad("finalization in progress"), if ((bO > 0))
465465 then true
466466 else ad("you do not have gWX"), if (if ((bG > 0))
467467 then (bP >= bG)
468468 else false)
469469 then true
470470 else ad("invalid amount"), if (bR)
471471 then true
472472 else ad("pool hasn't WX_EMISSION label")]
473473 if ((bC == bC))
474474 then {
475475 let bS = aT(K)
476476 let aa = toString(br.caller)
477477 let bT = if (bc(bS, aa))
478478 then nil
479479 else bg(bS, aa)
480480 $Tuple2(([IntegerEntry(O(br.caller, o), (bK + bG)), IntegerEntry(Q(K, br.caller, o), bQ), IntegerEntry(S(K, o), (bM + bG)), IntegerEntry(Y(o), (bN + bG))] ++ bT), unit)
481481 }
482482 else throw("Strict value is not equal to itself.")
483483 }
484484
485485
486486
487487 @Callable(br)
488488 func cancelVote (M,N) = {
489489 let K = $Tuple2(M, N)
490490 let o = valueOrElse(getInteger(this, p), 0)
491491 let bH = an(this, H(o))
492492 let bB = an(this, l)
493493 let bI = (bH + bB)
494494 let bJ = getInteger(this, y)
495495 let bK = valueOrElse(getInteger(this, O(br.caller, o)), 0)
496496 let bL = valueOrElse(getInteger(this, Q(K, br.caller, o)), 0)
497497 let bM = valueOrElse(getInteger(this, S(K, o)), 0)
498498 let bN = valueOrElse(getInteger(this, Y(o)), 0)
499499 let bC = [if ((getBoolean(J(K)) != unit))
500500 then true
501501 else ad("invalid assets"), if ((bI > height))
502502 then true
503503 else ad("invalid height"), if ((bJ == unit))
504504 then true
505505 else ad("finalization in progress"), if ((bL > 0))
506506 then true
507507 else ad("no vote")]
508508 if ((bC == bC))
509509 then {
510510 let bS = aT(K)
511511 let aa = toString(br.caller)
512512 $Tuple2(([IntegerEntry(O(br.caller, o), max([(bK - bL), 0])), DeleteEntry(Q(K, br.caller, o)), IntegerEntry(S(K, o), (bM - bL)), IntegerEntry(Y(o), (bN - bL))] ++ bj(bS, aa)), unit)
513513 }
514514 else throw("Strict value is not equal to itself.")
515515 }
516516
517517
518518
519519 @Callable(br)
520520 func setEpochLength (bU) = {
521521 let bC = [bt(br), if ((bU > 0))
522522 then true
523523 else ad("invalid epoch length")]
524524 if ((bC == bC))
525525 then $Tuple2([IntegerEntry(m, bU)], unit)
526526 else throw("Strict value is not equal to itself.")
527527 }
528528
529529
530530
531531 @Callable(br)
532532 func setMaxDepth (bV) = {
533533 let bC = [bt(br), if ((bV > 0))
534534 then true
535535 else ad("invalid max depth")]
536536 if ((bC == bC))
537537 then $Tuple2([IntegerEntry(q, bV)], unit)
538538 else throw("Strict value is not equal to itself.")
539539 }
540540
541541
542542
543543 @Callable(br)
544544 func processPoolBalanceINTERNAL (bW) = {
545545 let bX = bu(br)
546546 if ((bX == bX))
547547 then {
548548 let o = an(this, p)
549549 let bY = (o - 1)
550550 let K = ap(bW)
551551 let bZ = K
552552 let M = bZ._1
553553 let N = bZ._2
554554 let aN = aD(M, N)
555555 let ca = {
556556 let am = invoke(ar, "checkBalance", [aN], nil)
557557 if ($isInstanceOf(am, "Boolean"))
558558 then am
559559 else throw(($getType(am) + " couldn't be cast to Boolean"))
560560 }
561561 let cb = if (!(ca))
562562 then {
563563 let cc = invoke(ar, "deleteWxEmissionPoolLabel", [M, N], nil)
564564 if ((cc == cc))
565565 then {
566566 let cd = invoke(ar, "modifyWeight", [aN, 0], nil)
567567 if ((cd == cd))
568568 then {
569569 let ce = valueOrErrorMessage(aB(M, N), ab("invalid assets"))._1
570570 let cf = invoke(ar, "managePool", [toString(ce), j], nil)
571571 if ((cf == cf))
572572 then {
573573 let cg = ([DeleteEntry(J(K))] ++ bj(aS, ao(K)))
574574 ([IntegerEntry(W(K, bY), 0)] ++ cg)
575575 }
576576 else throw("Strict value is not equal to itself.")
577577 }
578578 else throw("Strict value is not equal to itself.")
579579 }
580580 else throw("Strict value is not equal to itself.")
581581 }
582582 else nil
583583 $Tuple2(cb, unit)
584584 }
585585 else throw("Strict value is not equal to itself.")
586586 }
587587
588588
589589
590590 @Callable(br)
591591 func processVoteINTERNAL (bW,aa) = {
592592 let bX = bu(br)
593593 if ((bX == bX))
594594 then {
595595 let bv = valueOrErrorMessage(addressFromString(aa), ab(("processVoteINTERNAL: invalid user address " + aa)))
596596 let o = an(this, p)
597597 let bY = (o - 1)
598598 let bB = an(this, l)
599599 let bH = an(this, H(o))
600600 let bI = (bH + bB)
601601 let ch = an(this, H(bY))
602602 let ci = an(this, n(bY))
603603 let cj = (ch + ci)
604604 let ck = if ((bY >= 0))
605605 then true
606606 else ad("processVoteINTERNAL: invalid previous epoch")
607607 if ((ck == ck))
608608 then {
609609 let K = ap(bW)
610610 let cl = K
611611 let M = cl._1
612612 let N = cl._2
613613 let bO = {
614614 let am = invoke(this, "getUserGwxAmountAtHeight", [aa, bI], nil)
615615 if ($isInstanceOf(am, "Int"))
616616 then am
617617 else throw(($getType(am) + " couldn't be cast to Int"))
618618 }
619619 let cm = {
620620 let am = invoke(this, "getUserGwxAmountAtHeight", [aa, cj], nil)
621621 if ($isInstanceOf(am, "Int"))
622622 then am
623623 else throw(($getType(am) + " couldn't be cast to Int"))
624624 }
625625 let bN = valueOrElse(getInteger(Y(o)), 0)
626626 let cn = valueOrElse(getInteger(S(K, o)), 0)
627627 let co = getInteger(Q(K, bv, bY))
628628 let cp = valueOrErrorMessage(co, ab((((("processVoteINTERNAL " + bW) + " ") + aa) + ": no previous vote")))
629629 let bK = valueOrElse(getInteger(this, O(bv, o)), 0)
630630 let V = aD(M, N)
631631 let cq = valueOrElse(getInteger(U(V, bY)), 0)
632632 let bA = addressFromStringValue(al(this, w))
633633 let cr = valueOrElse(getInteger(bA, Z(V, aa)), 0)
634634 let cs = if (if ((cr == 0))
635635 then true
636636 else (co == unit))
637637 then nil
638638 else [IntegerEntry(U(V, bY), (cq + cp))]
639639 let aN = aD(M, N)
640640 let bQ = if ((cm > 0))
641641 then fraction(cp, bO, cm)
642642 else 0
643643 let cb = if (if ((co == unit))
644644 then true
645645 else (0 >= bQ))
646646 then bj(aT(K), aa)
647647 else [IntegerEntry(Q(K, bv, o), bQ), IntegerEntry(Y(o), (bN + bQ)), IntegerEntry(S(K, o), (cn + bQ)), IntegerEntry(O(bv, o), (bK + bQ))]
648648 $Tuple2((cb ++ cs), unit)
649649 }
650650 else throw("Strict value is not equal to itself.")
651651 }
652652 else throw("Strict value is not equal to itself.")
653653 }
654654
655655
656656
657657 @Callable(br)
658658 func processPoolINTERNAL (bW,ct) = {
659659 let bX = bu(br)
660660 if ((bX == bX))
661661 then {
662662 let cu = {
663663 let cv = an(this, p)
664664 if (ct)
665665 then cv
666666 else (cv - 1)
667667 }
668668 let ck = if ((cu >= 0))
669669 then true
670670 else ad("processPoolINTERNAL: invalid target epoch")
671671 if ((ck == ck))
672672 then {
673673 let K = ap(bW)
674674 let cw = K
675675 let M = cw._1
676676 let N = cw._2
677677 let bA = addressFromStringValue(al(this, w))
678678 let aN = aD(M, N)
679679 let cx = {
680680 let am = invoke(bA, "usersListTraversal", [aN], nil)
681681 if ($isInstanceOf(am, "Boolean"))
682682 then am
683683 else throw(($getType(am) + " couldn't be cast to Boolean"))
684684 }
685685 if ((cx == cx))
686686 then if (cx)
687687 then $Tuple2(nil, true)
688688 else {
689689 let cy = addressFromStringValue(valueOrErrorMessage(getString(ar, x), "invalid assets store contract"))
690690 let bN = valueOrElse(getInteger(this, Y(cu)), 0)
691691 let cn = valueOrElse(getInteger(this, S(K, cu)), 0)
692692 let cz = if ((bN == 0))
693693 then 0
694694 else fraction(cn, b, bN)
695695 let cd = invoke(ar, "modifyWeight", [aN, cz], nil)
696696 if ((cd == cd))
697697 then $Tuple2([IntegerEntry(W(K, cu), cz)], false)
698698 else throw("Strict value is not equal to itself.")
699699 }
700700 else throw("Strict value is not equal to itself.")
701701 }
702702 else throw("Strict value is not equal to itself.")
703703 }
704704 else throw("Strict value is not equal to itself.")
705705 }
706706
707707
708708
709709 @Callable(br)
710710 func finalizeHelper () = {
711711 let ct = valueOrElse(getBoolean(E), false)
712712 let o = valueOrElse(getInteger(this, p), 0)
713713 let cA = (o - 1)
714714 let bH = an(this, H(o))
715715 let bB = an(this, l)
716716 let bI = (bH + bB)
717717 let bJ = getInteger(this, y)
718718 if (if (if ((height >= bI))
719719 then (bJ == unit)
720720 else false)
721721 then !(ct)
722722 else false)
723723 then {
724724 let cB = (o + 1)
725725 let cC = getInteger(this, m)
726726 let cD = {
727727 let ai = cC
728728 if ($isInstanceOf(ai, "Int"))
729729 then {
730730 let bU = ai
731731 [IntegerEntry(l, bU), DeleteEntry(m)]
732732 }
733733 else if ($isInstanceOf(ai, "Unit"))
734734 then nil
735735 else throw("Match error")
736736 }
737737 $Tuple2(([IntegerEntry(H(cB), height), IntegerEntry(B, height), IntegerEntry(p, cB), IntegerEntry(y, d), IntegerEntry(n(o), bB)] ++ cD), true)
738738 }
739739 else if (if (ct)
740740 then (bJ == unit)
741741 else false)
742742 then $Tuple2([IntegerEntry(y, f)], true)
743743 else if ((bJ == unit))
744744 then $Tuple2(nil, false)
745745 else if ((bJ == d))
746746 then {
747747 let cE = getString(z)
748748 let ai = cE
749749 if ($isInstanceOf(ai, "Unit"))
750750 then {
751751 let cF = getString(aV(aS))
752752 if ($isInstanceOf(cF, "Unit"))
753753 then $Tuple2([IntegerEntry(y, e), DeleteEntry(z)], true)
754754 else if ($isInstanceOf(cF, "String"))
755755 then {
756756 let cG = cF
757757 $Tuple2([StringEntry(z, cG)], true)
758758 }
759759 else throw("Match error")
760760 }
761761 else if ($isInstanceOf(ai, "String"))
762762 then {
763763 let bW = ai
764764 let cH = getString(bb(aS, bW))
765765 if ((cH == cH))
766766 then {
767767 let cx = invoke(this, "processPoolBalanceINTERNAL", [bW], nil)
768768 if ((cx == cx))
769769 then {
770770 let cF = cH
771771 if ($isInstanceOf(cF, "Unit"))
772772 then $Tuple2([IntegerEntry(y, e), DeleteEntry(z)], true)
773773 else if ($isInstanceOf(cF, "String"))
774774 then {
775775 let cG = cF
776776 $Tuple2([StringEntry(z, cG)], 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 if ((bJ == e))
787787 then {
788788 let cE = getString(z)
789789 let cI = getString(A)
790790 let ai = cE
791791 if ($isInstanceOf(ai, "Unit"))
792792 then {
793793 let cF = getString(aV(aS))
794794 if ($isInstanceOf(cF, "Unit"))
795795 then $Tuple2([IntegerEntry(y, f), DeleteEntry(z), DeleteEntry(A)], true)
796796 else if ($isInstanceOf(cF, "String"))
797797 then {
798798 let cJ = cF
799799 $Tuple2([StringEntry(z, cJ)], true)
800800 }
801801 else throw("Match error")
802802 }
803803 else if ($isInstanceOf(ai, "String"))
804804 then {
805805 let bW = ai
806806 let K = ap(bW)
807807 let cK = {
808808 let cF = cI
809809 if ($isInstanceOf(cF, "Unit"))
810810 then getString(aV(aT(K)))
811811 else if ($isInstanceOf(cF, "String"))
812812 then {
813813 let cL = cF
814814 let cM = getString(bb(aT(K), cL))
815815 if ((cM == cM))
816816 then {
817817 let cN = invoke(this, "processVoteINTERNAL", [bW, cL], nil)
818818 if ((cN == cN))
819819 then cM
820820 else throw("Strict value is not equal to itself.")
821821 }
822822 else throw("Strict value is not equal to itself.")
823823 }
824824 else throw("Match error")
825825 }
826826 let cF = cK
827827 if ($isInstanceOf(cF, "Unit"))
828828 then {
829829 let cH = getString(bb(aS, bW))
830830 let cO = cH
831831 if ($isInstanceOf(cO, "Unit"))
832832 then $Tuple2([IntegerEntry(y, f), DeleteEntry(z), DeleteEntry(A)], true)
833833 else if ($isInstanceOf(cO, "String"))
834834 then {
835835 let bn = cO
836836 $Tuple2([StringEntry(z, bn), DeleteEntry(A)], true)
837837 }
838838 else throw("Match error")
839839 }
840840 else if ($isInstanceOf(cF, "String"))
841841 then {
842842 let cP = cF
843843 $Tuple2([StringEntry(A, cP)], true)
844844 }
845845 else throw("Match error")
846846 }
847847 else throw("Match error")
848848 }
849849 else if ((bJ == f))
850850 then {
851851 let cE = getString(z)
852852 let ai = cE
853853 if ($isInstanceOf(ai, "Unit"))
854854 then {
855855 let cF = getString(aV(aS))
856856 if ($isInstanceOf(cF, "Unit"))
857857 then {
858858 let cb = if (ct)
859859 then [DeleteEntry(y), DeleteEntry(E)]
860860 else [DeleteEntry(y), BooleanEntry(I(cA), true), IntegerEntry(C, o), IntegerEntry(D, bH)]
861861 let cQ = aQ()
862862 if ((cQ == cQ))
863863 then $Tuple2(cb, true)
864864 else throw("Strict value is not equal to itself.")
865865 }
866866 else if ($isInstanceOf(cF, "String"))
867867 then {
868868 let cG = cF
869869 $Tuple2([StringEntry(z, cG)], true)
870870 }
871871 else throw("Match error")
872872 }
873873 else if ($isInstanceOf(ai, "String"))
874874 then {
875875 let bW = ai
876876 let cH = getString(bb(aS, bW))
877877 if ((cH == cH))
878878 then {
879879 let cx = {
880880 let am = invoke(this, "processPoolINTERNAL", [bW, ct], nil)
881881 if ($isInstanceOf(am, "Boolean"))
882882 then am
883883 else throw(($getType(am) + " couldn't be cast to Boolean"))
884884 }
885885 if ((cx == cx))
886886 then if (cx)
887887 then $Tuple2(nil, true)
888888 else {
889889 let cF = cH
890890 if ($isInstanceOf(cF, "Unit"))
891891 then {
892892 let cb = if (ct)
893893 then [DeleteEntry(y), DeleteEntry(E), DeleteEntry(z)]
894894 else [DeleteEntry(y), BooleanEntry(I(cA), true), IntegerEntry(C, o), IntegerEntry(D, bH), DeleteEntry(z)]
895895 let cQ = aQ()
896896 if ((cQ == cQ))
897897 then $Tuple2(cb, true)
898898 else throw("Strict value is not equal to itself.")
899899 }
900900 else if ($isInstanceOf(cF, "String"))
901901 then {
902902 let cG = cF
903903 $Tuple2([StringEntry(z, cG)], true)
904904 }
905905 else throw("Match error")
906906 }
907907 else throw("Strict value is not equal to itself.")
908908 }
909909 else throw("Strict value is not equal to itself.")
910910 }
911911 else throw("Match error")
912912 }
913913 else ad("finalization is broken")
914914 }
915915
916916
917917
918918 @Callable(br)
919919 func finalizeWrapper (cR) = {
920920 let cS = addressFromStringValue(getStringValue(this, t))
921921 let cT = {
922922 let am = invoke(this, "finalizeHelper", nil, nil)
923923 if ($isInstanceOf(am, "Boolean"))
924924 then am
925925 else throw(($getType(am) + " couldn't be cast to Boolean"))
926926 }
927927 if ((cT == cT))
928928 then if (!(cT))
929929 then if ((cR == 0))
930930 then ad("Current voting is not over yet")
931931 else {
932932 let cU = invoke(cS, "finalize", nil, nil)
933933 if ((cU == cU))
934934 then $Tuple2(nil, unit)
935935 else throw("Strict value is not equal to itself.")
936936 }
937937 else {
938938 let cV = valueOrElse(getInteger(this, q), c)
939939 if ((cV > cR))
940940 then {
941941 let cU = invoke(this, "finalizeWrapper", [(cR + 1)], nil)
942942 if ((cU == cU))
943943 then $Tuple2(nil, unit)
944944 else throw("Strict value is not equal to itself.")
945945 }
946946 else $Tuple2(nil, unit)
947947 }
948948 else throw("Strict value is not equal to itself.")
949949 }
950950
951951
952952
953953 @Callable(br)
954954 func finalize () = {
955955 let cU = invoke(this, "finalizeWrapper", [0], nil)
956956 if ((cU == cU))
957957 then $Tuple2(nil, unit)
958958 else throw("Strict value is not equal to itself.")
959959 }
960960
961961
962962
963963 @Callable(br)
964964 func containsNodeREADONLY (aW,ba) = $Tuple2(nil, bc(aW, ba))
965965
966966
967967
968968 @Callable(br)
969969 func insertNode (aW,ba) = {
970970 let bX = bt(br)
971971 if ((bX == bX))
972972 then $Tuple2(bg(aW, ba), unit)
973973 else throw("Strict value is not equal to itself.")
974974 }
975975
976976
977977
978978 @Callable(br)
979979 func deleteNode (aW,ba) = {
980980 let bX = bt(br)
981981 if ((bX == bX))
982982 then $Tuple2(bj(aW, ba), unit)
983983 else throw("Strict value is not equal to itself.")
984984 }
985985
986986
987987
988988 @Callable(br)
989989 func isFinalizationInProgress () = {
990990 let bJ = getInteger(this, y)
991991 let cW = (bJ != unit)
992992 $Tuple2(nil, cW)
993993 }
994994
995995
996996
997997 @Callable(br)
998998 func deletePool (M,N) = {
999999 let bX = if (if ((br.caller == ar))
10001000 then true
10011001 else bt(br))
10021002 then true
10031003 else ad("Permission denied")
10041004 if ((bX == bX))
10051005 then {
10061006 let aW = "pools"
10071007 let K = $Tuple2(M, N)
10081008 let ba = makeString([M, N], a)
10091009 let cb = if (bc(aW, ba))
10101010 then bj(aW, ba)
10111011 else nil
10121012 ([DeleteEntry(J(K))] ++ cb)
10131013 }
10141014 else throw("Strict value is not equal to itself.")
10151015 }
10161016
10171017
10181018
10191019 @Callable(br)
10201020 func resume (M,N,cX) = {
10211021 let bJ = getInteger(this, y)
10221022 let cY = valueOrErrorMessage(aB(M, N), ab("invalid assets"))
10231023 let ce = cY._1
10241024 let aN = cY._2
10251025 let cZ = br.payments[0]
10261026 let cy = addressFromStringValue(getStringValue(ar, x))
10271027 let da = "%s__config"
10281028 let db = 1
10291029 let bz = addressFromStringValue(al(this, v))
10301030 let dc = fromBase58String(split(getStringValue(bz, da), a)[db])
10311031 let dd = {
10321032 let am = invoke(cy, "isVerifiedREADONLY", [M], nil)
10331033 if ($isInstanceOf(am, "Boolean"))
10341034 then am
10351035 else throw(($getType(am) + " couldn't be cast to Boolean"))
10361036 }
10371037 let de = {
10381038 let am = invoke(cy, "isVerifiedREADONLY", [N], nil)
10391039 if ($isInstanceOf(am, "Boolean"))
10401040 then am
10411041 else throw(($getType(am) + " couldn't be cast to Boolean"))
10421042 }
10431043 let df = valueOrErrorMessage(getInteger(this, r), "invalid resumption fee")
10441044 let bC = [if ((size(br.payments) > 0))
10451045 then true
10461046 else ad("at least one payment should be attached"), if ((bJ == unit))
10471047 then true
10481048 else ad("finalization is in progress"), if ((cZ.assetId == dc))
10491049 then true
10501050 else ad("invalid fee payment asset id"), if ((cZ.amount == df))
10511051 then true
10521052 else ad("invalid fee payment amount"), if (if (dd)
10531053 then de
10541054 else false)
10551055 then true
10561056 else ad("both assets should be verified")]
10571057 if ((bC == bC))
10581058 then {
10591059 let dg = assetBalance(this, aN)
10601060 if ((dg == dg))
10611061 then {
10621062 let dh = false
10631063 let di = if ((size(br.payments) == 1))
1064- then {
1065- let ca = {
1066- let am = invoke(ar, "checkBalance", [aA(aN)], nil)
1067- if ($isInstanceOf(am, "Boolean"))
1068- then am
1069- else throw(($getType(am) + " couldn't be cast to Boolean"))
1070- }
1071- if (ca)
1072- then true
1073- else ad("assets should be attached")
1074- }
1064+ then unit
10751065 else if ((size(br.payments) == 2))
10761066 then {
10771067 let dj = valueOrErrorMessage(scriptHash(ce), ab("pool address is not scripted"))
10781068 let dk = fromBase64String(valueOrErrorMessage(getString(ar, G()), ab("allowed lp stable script hash is not set")))
10791069 let dl = (dj == dk)
10801070 let dm = if (dl)
10811071 then "putOneTknV2"
10821072 else "putOneTkn"
10831073 invoke(ce, dm, [cX, dh], [br.payments[1]])
10841074 }
10851075 else if ((size(br.payments) == 3))
10861076 then invoke(ce, "put", [cX, dh], [br.payments[1], br.payments[2]])
10871077 else ad("invalid payments size")
10881078 if ((di == di))
10891079 then {
1090- let dn = assetBalance(this, aN)
1080+ let ca = {
1081+ let am = invoke(ar, "checkBalance", [aA(aN)], nil)
1082+ if ($isInstanceOf(am, "Boolean"))
1083+ then am
1084+ else throw(($getType(am) + " couldn't be cast to Boolean"))
1085+ }
1086+ let dn = if (ca)
1087+ then true
1088+ else ad("balances are too low")
10911089 if ((dn == dn))
10921090 then {
1093- let do = (dn - dg)
1094- let dp = if ((do > 0))
1095- then [ScriptTransfer(br.caller, do, aN)]
1096- else nil
1097- let dq = invoke(ar, "setWxEmissionPoolLabel", [M, N], nil)
1098- if ((dq == dq))
1091+ let do = assetBalance(this, aN)
1092+ if ((do == do))
10991093 then {
1100- let dr = {
1101- let am = invoke(ar, "getPoolStatusREADONLY", [toString(ce)], nil)
1102- if ($isInstanceOf(am, "Int"))
1103- then am
1104- else throw(($getType(am) + " couldn't be cast to Int"))
1105- }
1106- let cf = if ((dr == j))
1107- then invoke(ar, "managePool", [toString(ce), h], nil)
1108- else unit
1109- if ((cf == cf))
1094+ let dp = (do - dg)
1095+ let dq = if ((dp > 0))
1096+ then [ScriptTransfer(br.caller, dp, aN)]
1097+ else nil
1098+ let dr = invoke(ar, "setWxEmissionPoolLabel", [M, N], nil)
1099+ if ((dr == dr))
11101100 then {
1111- let K = $Tuple2(M, N)
1112- let bD = ([BooleanEntry(J(K), true)] ++ bg(aS, ao(K)))
1113- $Tuple2((bD ++ dp), unit)
1101+ let ds = {
1102+ let am = invoke(ar, "getPoolStatusREADONLY", [toString(ce)], nil)
1103+ if ($isInstanceOf(am, "Int"))
1104+ then am
1105+ else throw(($getType(am) + " couldn't be cast to Int"))
1106+ }
1107+ let cf = if ((ds == j))
1108+ then invoke(ar, "managePool", [toString(ce), h], nil)
1109+ else unit
1110+ if ((cf == cf))
1111+ then {
1112+ let K = $Tuple2(M, N)
1113+ let bD = ([BooleanEntry(J(K), true)] ++ bg(aS, ao(K)))
1114+ $Tuple2((bD ++ dq), unit)
1115+ }
1116+ else throw("Strict value is not equal to itself.")
11141117 }
11151118 else throw("Strict value is not equal to itself.")
11161119 }
11171120 else throw("Strict value is not equal to itself.")
11181121 }
11191122 else throw("Strict value is not equal to itself.")
11201123 }
11211124 else throw("Strict value is not equal to itself.")
11221125 }
11231126 else throw("Strict value is not equal to itself.")
11241127 }
11251128 else throw("Strict value is not equal to itself.")
11261129 }
11271130
11281131
1129-@Verifier(ds)
1130-func dt () = {
1131- let du = {
1132+@Verifier(dt)
1133+func du () = {
1134+ let dv = {
11321135 let ai = bo()
11331136 if ($isInstanceOf(ai, "ByteVector"))
11341137 then {
11351138 let bs = ai
11361139 bs
11371140 }
11381141 else if ($isInstanceOf(ai, "Unit"))
1139- then ds.senderPublicKey
1142+ then dt.senderPublicKey
11401143 else throw("Match error")
11411144 }
1142- sigVerify(ds.bodyBytes, ds.proofs[0], du)
1145+ sigVerify(dt.bodyBytes, dt.proofs[0], dv)
11431146 }
11441147

github/deemru/w8io/3ef1775 
322.28 ms