tx · CFdjXBVNU2jXJcD3PPhSwEumQ39ZiwnxMpQvvemP7fwG

3N9Zi6AcWcGbM23jQJ4fnzFsoHoTsxYDznr:  -0.02300000 Waves

2023.07.21 12:36 [2675444] smart account 3N9Zi6AcWcGbM23jQJ4fnzFsoHoTsxYDznr > SELF 0.00000000 Waves

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

github/deemru/w8io/873ac7e 
94.06 ms