tx · HjGqyxJs9QCdAWgkxTxzhgJ6CdBn6LedTwjXjm6Neh4t

3N9Zi6AcWcGbM23jQJ4fnzFsoHoTsxYDznr:  -0.02200000 Waves

2023.05.12 14:15 [2574648] smart account 3N9Zi6AcWcGbM23jQJ4fnzFsoHoTsxYDznr > SELF 0.00000000 Waves

{ "type": 13, "id": "HjGqyxJs9QCdAWgkxTxzhgJ6CdBn6LedTwjXjm6Neh4t", "fee": 2200000, "feeAssetId": null, "timestamp": 1683890124081, "version": 2, "chainId": 84, "sender": "3N9Zi6AcWcGbM23jQJ4fnzFsoHoTsxYDznr", "senderPublicKey": "GFbasS3jufhZkK4xR7tdTjjnP8K33KvJFEDHRtxXDkaJ", "proofs": [ "5sbXa7CfQ34NGq34t2V9E7JC2K7iHT3cVCrivRExJc6BL8ZHRSiYmqAqxmuXC89Pin1HTGuCEebhWL3sZDpSCiaU" ], "script": "base64:BgKpFggCEgQKAggBEgcKBQgICAgBEgQKAggIEgUKAwgIARIECgIICBIDCgEBEgMKAQESBAoCCAgSBAoCCAQSABIDCgEBEgASBAoCCAgSBAoCCAgSBAoCCAgiCXNlcGFyYXRvciIOcG9vbFdlaWdodE11bHQiD21heERlcHRoRGVmYXVsdCIWZmluYWxpemF0aW9uU3RhZ2VUb3RhbCIXZmluYWxpemF0aW9uU3RhZ2VTaGFyZXMiDmtleUVwb2NoTGVuZ3RoIhFrZXlFcG9jaExlbmd0aE5ldyIVa2V5RXBvY2hMZW5ndGhCeUVwb2NoIgVlcG9jaCIPa2V5Q3VycmVudEVwb2NoIgtrZXlNYXhEZXB0aCIia2V5Vm90aW5nRW1pc3Npb25DYW5kaWRhdGVDb250cmFjdCISa2V5RmFjdG9yeUNvbnRyYWN0IhNrZXlCb29zdGluZ0NvbnRyYWN0IhJrZXlTdGFraW5nQ29udHJhY3QiFGtleUZpbmFsaXphdGlvblN0YWdlIgtrZXlOZXh0UG9vbCILa2V5TmV4dFVzZXIiDmtleVN0YXJ0SGVpZ2h0IhFrZXlDdXJyZW50RXBvY2hVaSIQa2V5U3RhcnRIZWlnaHRVaSIda2V5RmluYWxpemF0aW9uU2hvdWxkQmVGb3JjZWQiFWtleVN0YXJ0SGVpZ2h0QnlFcG9jaCIMa2V5RmluYWxpemVkIglrZXlJbkxpc3QiBHBvb2wiCyR0MDE2OTMxNzMzIg1hbW91bnRBc3NldElkIgxwcmljZUFzc2V0SWQiB2tleVVzZWQiB2FkZHJlc3MiB2tleVZvdGUiCyR0MDIwMDcyMDQ3Ig9rZXlWb3RpbmdSZXN1bHQiCyR0MDIyMjkyMjY5IhVrZXlWb3RpbmdSZXN1bHRTdGFrZWQiDGxwQXNzZXRJZFN0ciIMa2V5UG9vbFNoYXJlIgskdDAyNTkwMjYzMCINa2V5VG90YWxWb3RlcyIPa2V5U3Rha2VkQnlVc2VyIg51c2VyQWRkcmVzc1N0ciIHd3JhcEVyciIDbXNnIgh0aHJvd0VyciIOZ2V0VmFsdWVPckZhaWwiA2tleSIEdHlwZSIFZXJyb3IiByRtYXRjaDAiA3N0ciIDaW50IgxnZXRTdHJPckZhaWwiAUAiDGdldEludE9yRmFpbCIMcG9vbFRvU3RyaW5nIgxzdHJpbmdUb1Bvb2wiBXBhcnRzIg9mYWN0b3J5Q29udHJhY3QiGklkeEZhY3RvcnlDZmdHd3hSZXdhcmREYXBwIg1rZXlGYWN0b3J5Q2ZnIhRyZWFkRmFjdG9yeUNmZ09yRmFpbCIHZmFjdG9yeSIZZ2V0R3d4UmV3YXJkQWRkcmVzc09yRmFpbCIKZmFjdG9yeUNmZyIWZ2V0THBBc3NldEJ5UG9vbEFzc2V0cyIfa2V5TWFwcGluZ3NCYXNlQXNzZXQyaW50ZXJuYWxJZCIMYmFzZUFzc2V0U3RyIilrZXlNYXBwaW5nUG9vbEFzc2V0c1RvUG9vbENvbnRyYWN0QWRkcmVzcyIYaW50ZXJuYWxBbW91bnRBc3NldElkU3RyIhdpbnRlcm5hbFByaWNlQXNzZXRJZFN0ciIfa2V5TWFwcGluZ1Bvb2xDb250cmFjdFRvTFBBc3NldCITcG9vbENvbnRyYWN0QWRkcmVzcyIVYW1vdW50QXNzZXRJbnRlcm5hbElkIhRwcmljZUFzc2V0SW50ZXJuYWxJZCIJbHBBc3NldElkIhhjaGVja1d4RW1pc3Npb25Qb29sTGFiZWwiCyR0MDU0NzA1NTEwIhBnd3hSZXdhcmREZXBvc2l0IhJnd3hSZXdhcmRzQ29udHJhY3QiDXBvb2xzTGlzdE5hbWUiEGdldFZvdGVzTGlzdE5hbWUiCyR0MDU5Mjc1OTY3IgtrZXlMaXN0SGVhZCIIbGlzdE5hbWUiBG1ldGEiC2tleUxpc3RTaXplIgtrZXlMaXN0UHJldiICaWQiC2tleUxpc3ROZXh0Igxjb250YWluc05vZGUiCmhlYWRPclVuaXQiCnByZXZPclVuaXQiCm5leHRPclVuaXQiEWluc2VydE5vZGVBY3Rpb25zIghsaXN0U2l6ZSIJY2hlY2tOb2RlIhFkZWxldGVOb2RlQWN0aW9ucyIWa2V5TWFuYWdlclZhdWx0QWRkcmVzcyITa2V5TWFuYWdlclB1YmxpY0tleSIcZ2V0TWFuYWdlclZhdWx0QWRkcmVzc09yVGhpcyIBcyIWbWFuYWdlclB1YmxpY0tleU9yVW5pdCITbWFuYWdlclZhdWx0QWRkcmVzcyIJaXNNYW5hZ2VyIgFpIgJwayILbXVzdE1hbmFnZXIiCG11c3RUaGlzIgt1c2VyQWRkcmVzcyIMdGFyZ2V0SGVpZ2h0Ihdib29zdGluZ0NvbnRyYWN0QWRkcmVzcyIfdm90aW5nRW1pc3Npb25DYW5kaWRhdGVDb250cmFjdCIQYm9vc3RpbmdDb250cmFjdCIPc3Rha2luZ0NvbnRyYWN0IgtlcG9jaExlbmd0aCIGY2hlY2tzIg1pbkxpc3RBY3Rpb25zIhhjdXJyZW50RXBvY2hJc05vdERlZmluZWQiEnN0YXJ0SGVpZ2h0QWN0aW9ucyIGYW1vdW50IgtzdGFydEhlaWdodCIJZW5kSGVpZ2h0IhdmaW5hbGl6YXRpb25TdGFnZU9yVW5pdCIEdXNlZCIEdm90ZSIKcG9vbFJlc3VsdCIKdG90YWxWb3RlcyITZ3d4QW1vdW50QXRFbmRUb3RhbCIJYXZhaWxhYmxlIgduZXdWb3RlIgp3eEVtaXNzaW9uIg12b3Rlc0xpc3ROYW1lIhB2b3Rlc0xpc3RBY3Rpb25zIg5uZXdFcG9jaExlbmd0aCILbmV3TWF4RGVwdGgiB3Bvb2xTdHIiC2NoZWNrQ2FsbGVyIg1lcG9jaFByZXZpb3VzIhNzdGFydEhlaWdodFByZXZpb3VzIhNlcG9jaExlbmd0aFByZXZpb3VzIhFlbmRIZWlnaHRQcmV2aW91cyIQY2hlY2tUYXJnZXRFcG9jaCINJHQwMTc5NzAxODAxMCIbZ3d4QW1vdW50QXRFbmRUb3RhbFByZXZpb3VzIgx2b3RpbmdSZXN1bHQiDHZvdGVQcmV2aW91cyIadm90aW5nUmVzdWx0U3Rha2VkUHJldmlvdXMiDHN0YWtlZEJ5VXNlciIZdm90aW5nUmVzdWx0U3Rha2VkQWN0aW9ucyIHYWN0aW9ucyIFZm9yY2UiC3RhcmdldEVwb2NoIgxjdXJyZW50RXBvY2giDSR0MDIwMzY3MjA0MDciAXIiBXNoYXJlIg9tb2RpZnlXZWlnaHRJbnYiEHBvb2xzTGlzdEFjdGlvbnMiDXByZXZpb3VzRXBvY2giCG5ld0Vwb2NoIhRuZXdFcG9jaExlbmd0aE9wdGlvbiIVbmV3RXBvY2hMZW5ndGhBY3Rpb25zIgpwb29sT3JVbml0Igp1c2VyT3JVbml0IgckbWF0Y2gxIgxwb29sc0hlYWRTdHIiDm5leHRVc2VyT3JVbml0IgR1c2VyIgRuZXh0Ig5wcm9jZXNzVm90ZUludiIObmV4dFBvb2xPclVuaXQiByRtYXRjaDIiCG5leHRVc2VyIhNnd3hSZXdhcmREZXBvc2l0SW52IgtuZXh0UG9vbFN0ciIHY291bnRlciIGcmVzdWx0IghtYXhEZXB0aCIDaW52IgJ0eCIGdmVyaWZ5Ig90YXJnZXRQdWJsaWNLZXk+AAFhAgJfXwABYgCAwtcvAAFjAAoAAWQAAAABZQABAAFmCQC5CQIJAMwIAgICJXMJAMwIAgILZXBvY2hMZW5ndGgFA25pbAUBYQABZwkAuQkCCQDMCAICBCVzJXMJAMwIAgIQZXBvY2hMZW5ndGhfX25ldwUDbmlsBQFhAQFoAQFpCQC5CQIJAMwIAgIEJXMlZAkAzAgCAgtlcG9jaExlbmd0aAkAzAgCCQCkAwEFAWkFA25pbAUBYQABagkAuQkCCQDMCAICAiVzCQDMCAICDGN1cnJlbnRFcG9jaAUDbmlsBQFhAAFrCQC5CQIJAMwIAgICJXMJAMwIAgIIbWF4RGVwdGgFA25pbAUBYQABbAkAuQkCCQDMCAICAiVzCQDMCAICH3ZvdGluZ0VtaXNzaW9uQ2FuZGlkYXRlQ29udHJhY3QFA25pbAUBYQABbQkAuQkCCQDMCAICAiVzCQDMCAICD2ZhY3RvcnlDb250cmFjdAUDbmlsBQFhAAFuCQC5CQIJAMwIAgICJXMJAMwIAgIQYm9vc3RpbmdDb250cmFjdAUDbmlsBQFhAAFvCQC5CQIJAMwIAgICJXMJAMwIAgIPc3Rha2luZ0NvbnRyYWN0BQNuaWwFAWEAAXAJALkJAgkAzAgCAgIlcwkAzAgCAhFmaW5hbGl6YXRpb25TdGFnZQUDbmlsBQFhAAFxCQC5CQIJAMwIAgICJXMJAMwIAgIIbmV4dFBvb2wFA25pbAUBYQABcgkAuQkCCQDMCAICAiVzCQDMCAICCG5leHRVc2VyBQNuaWwFAWEAAXMJALkJAgkAzAgCAgIlcwkAzAgCAgtzdGFydEhlaWdodAUDbmlsBQFhAAF0CQC5CQIJAMwIAgICJXMJAMwIAgIOY3VycmVudEVwb2NoVWkFA25pbAUBYQABdQkAuQkCCQDMCAICAiVzCQDMCAICDXN0YXJ0SGVpZ2h0VWkFA25pbAUBYQABdgkAuQkCCQDMCAICAiVzCQDMCAICBWZvcmNlBQNuaWwFAWEBAXcBAWkJALkJAgkAzAgCAgQlcyVkCQDMCAICC3N0YXJ0SGVpZ2h0CQDMCAIJAKQDAQUBaQUDbmlsBQFhAQF4AQFpCQC5CQIJAMwIAgIEJXMlZAkAzAgCAglmaW5hbGl6ZWQJAMwIAgkApAMBBQFpBQNuaWwFAWEBAXkBAXoEAUEFAXoEAUIIBQFBAl8xBAFDCAUBQQJfMgkAuQkCCQDMCAICBiVzJXMlcwkAzAgCAgZpbkxpc3QJAMwIAgUBQgkAzAgCBQFDBQNuaWwFAWEBAUQCAUUBaQkAuQkCCQDMCAICBiVzJXMlZAkAzAgCAgR1c2VkCQDMCAIJAKUIAQUBRQkAzAgCCQCkAwEFAWkFA25pbAUBYQEBRgMBegFFAWkEAUcFAXoEAUIIBQFHAl8xBAFDCAUBRwJfMgkAuQkCCQDMCAICCiVzJXMlcyVzJWQJAMwIAgIEdm90ZQkAzAgCBQFCCQDMCAIFAUMJAMwIAgkApQgBBQFFCQDMCAIJAKQDAQUBaQUDbmlsBQFhAQFIAgF6AWkEAUkFAXoEAUIIBQFJAl8xBAFDCAUBSQJfMgkAuQkCCQDMCAICCCVzJXMlcyVkCQDMCAICDHZvdGluZ1Jlc3VsdAkAzAgCBQFCCQDMCAIFAUMJAMwIAgkApAMBBQFpBQNuaWwFAWEBAUoCAUsBaQkAuQkCCQDMCAICBiVzJXMlZAkAzAgCAhJ2b3RpbmdSZXN1bHRTdGFrZWQJAMwIAgUBSwkAzAgCCQCkAwEFAWkFA25pbAUBYQEBTAIBegFpBAFNBQF6BAFCCAUBTQJfMQQBQwgFAU0CXzIJALkJAgkAzAgCAgglcyVzJXMlZAkAzAgCAglwb29sU2hhcmUJAMwIAgUBQgkAzAgCBQFDCQDMCAIJAKQDAQUBaQUDbmlsBQFhAQFOAQFpCQC5CQIJAMwIAgIEJXMlZAkAzAgCAgp0b3RhbFZvdGVzCQDMCAIJAKQDAQUBaQUDbmlsBQFhAQFPAgFLAVAJALkJAgkAzAgCAgYlcyVzJXMJAMwIAgIGc3Rha2VkCQDMCAIFAVAJAMwIAgUBSwUDbmlsBQFhAQFRAQFSCQC5CQIJAMwIAgIVdm90aW5nX2VtaXNzaW9uLnJpZGU6CQDMCAIFAVIFA25pbAIBIAEBUwEBUgkAAgEJAQFRAQUBUgEBVAMBRQFVAVYEAVcJAQFRAQkAuQkCCQDMCAICCm1hbmRhdG9yeSAJAMwIAgkApQgBBQFFCQDMCAICAS4JAMwIAgUBVQkAzAgCAg8gaXMgbm90IGRlZmluZWQFA25pbAIACQETdmFsdWVPckVycm9yTWVzc2FnZQIEAVgFAVYDCQABAgUBWAIGU3RyaW5nBAFZBQFYCQCdCAIFAUUFAVUDCQABAgUBWAIDSW50BAFaBQFYCQCaCAIFAUUFAVUJAQFTAQISaW52YWxpZCBlbnRyeSB0eXBlBQFXAQJhYQIBRQFVCgACYWIJAQFUAwUBRQUBVQIAAwkAAQIFAmFiAgZTdHJpbmcFAmFiCQACAQkArAICCQADAQUCYWICGyBjb3VsZG4ndCBiZSBjYXN0IHRvIFN0cmluZwECYWMCAUUBVQoAAmFiCQEBVAMFAUUFAVUAAAMJAAECBQJhYgIDSW50BQJhYgkAAgEJAKwCAgkAAwEFAmFiAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQBAmFkAQF6CQCsAgIJAKwCAggFAXoCXzEFAWEIBQF6Al8yAQJhZQEBWQQCYWYJALUJAgUBWQUBYQMJAAACCQCQAwEFAmFmAAIJAJQKAgkAkQMCBQJhZgAACQCRAwIFAmFmAAEJAQFTAQITaW52YWxpZCBwb29sIHN0cmluZwACYWcJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQJhYQIFBHRoaXMFAW0AAmFoAAoBAmFpAAIRJXNfX2ZhY3RvcnlDb25maWcBAmFqAQJhawkAtQkCCQECYWECBQJhawkBAmFpAAUBYQECYWwBAmFtCQERQGV4dHJOYXRpdmUoMTA2MikBCQCRAwIFAmFtBQJhaAECYW4CAUIBQwoBAmFvAQJhcAkArAICAiglcyVzJXNfX21hcHBpbmdzX19iYXNlQXNzZXQyaW50ZXJuYWxJZF9fBQJhcAoBAmFxAgJhcgJhcwkArAICCQCsAgIJAKwCAgkArAICAgolZCVkJXMlc19fCQCkAwEFAmFyAgJfXwkApAMBBQJhcwIjX19tYXBwaW5nc19fcG9vbEFzc2V0czJQb29sQ29udHJhY3QKAQJhdAECYXUJAKwCAgkArAICAgglcyVzJXNfXwUCYXUCIF9fbWFwcGluZ3NfX3Bvb2xDb250cmFjdDJMcEFzc2V0BAJhdgkBAmFjAgUCYWcJAQJhbwEFAUIEAmF3CQECYWMCBQJhZwkBAmFvAQUBQwQCYXUJAQJhYQIFAmFnCQECYXECBQJhdgUCYXcEAmF4CQECYWECBQJhZwkBAmF0AQUCYXUFAmF4AQJheQEBegQCYXoFAXoEAUIIBQJhegJfMQQBQwgFAmF6Al8yCgACYWIJAPwHBAUCYWcCGGNoZWNrV3hFbWlzc2lvblBvb2xMYWJlbAkAzAgCBQFCCQDMCAIFAUMFA25pbAUDbmlsAwkAAQIFAmFiAgdCb29sZWFuBQJhYgkAAgEJAKwCAgkAAwEFAmFiAhwgY291bGRuJ3QgYmUgY2FzdCB0byBCb29sZWFuAQJhQQAEAmFtCQECYWoBBQJhZwQCYUIJAQJhbAEFAmFtCQD8BwQFAmFCAgdkZXBvc2l0BQNuaWwFA25pbAACYUMCBXBvb2xzAQJhRAEBegQCYUUFAXoEAUIIBQJhRQJfMQQBQwgFAmFFAl8yCQC5CQIJAMwIAgIFdm90ZXMJAMwIAgUBQgkAzAgCBQFDBQNuaWwFAWEBAmFGAQJhRwQCYUgDCQAAAgUCYUcFAmFDAgQlcyVzAgglcyVzJXMlcwkAuQkCCQDMCAIFAmFICQDMCAIFAmFHCQDMCAICBGhlYWQFA25pbAUBYQECYUkBAmFHBAJhSAMJAAACBQJhRwUCYUMCBCVzJXMCCCVzJXMlcyVzCQC5CQIJAMwIAgUCYUgJAMwIAgUCYUcJAMwIAgIEc2l6ZQUDbmlsBQFhAQJhSgICYUcCYUsEAmFIAwkAAAIFAmFHBQJhQwIIJXMlcyVzJXMCCiVzJXMlcyVzJXMJALkJAgkAzAgCBQJhSAkAzAgCBQJhRwkAzAgCBQJhSwkAzAgCAgRwcmV2BQNuaWwFAWEBAmFMAgJhRwJhSwQCYUgDCQAAAgUCYUcFAmFDAgglcyVzJXMlcwIKJXMlcyVzJXMlcwkAuQkCCQDMCAIFAmFICQDMCAIFAmFHCQDMCAIFAmFLCQDMCAICBG5leHQFA25pbAUBYQECYU0CAmFHAmFLBAJhTgkAnQgCBQR0aGlzCQECYUYBBQJhRwQCYU8JAJ0IAgUEdGhpcwkBAmFKAgUCYUcFAmFLBAJhUAkAnQgCBQR0aGlzCQECYUwCBQJhRwUCYUsDAwkAAAIFAmFLCQELdmFsdWVPckVsc2UCBQJhTgIABgkBAiE9AgUCYU8FBHVuaXQGCQECIT0CBQJhUAUEdW5pdAECYVECAmFHAmFLBAJhTgkAnQgCBQR0aGlzCQECYUYBBQJhRwQCYVIJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBAmFJAQUCYUcAAAQCYVMDCQEBIQEJAQJhTQIFAmFHBQJhSwYJAQFTAQILTm9kZSBleGlzdHMDCQAAAgUCYVMFAmFTCQDOCAIJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmFJAQUCYUcJAGQCBQJhUgABBQNuaWwDCQECIT0CBQJhTgUEdW5pdAkAzAgCCQELU3RyaW5nRW50cnkCCQECYUwCBQJhRwUCYUsJAQV2YWx1ZQEFAmFOCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhSgIFAmFHCQEFdmFsdWUBBQJhTgUCYUsFA25pbAUDbmlsCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhRgEFAmFHBQJhSwUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJhVAICYUcCYUsEAmFOCQCdCAIFBHRoaXMJAQJhRgEFAmFHBAJhUgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQECYUkBBQJhRwAABAJhTwkAnQgCBQR0aGlzCQECYUoCBQJhRwUCYUsEAmFQCQCdCAIFBHRoaXMJAQJhTAIFAmFHBQJhSwkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYUkBBQJhRwkAZQIFAmFSAAEFA25pbAMDCQECIT0CBQJhTwUEdW5pdAkBAiE9AgUCYVAFBHVuaXQHCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhTAIFAmFHCQEFdmFsdWUBBQJhTwkBBXZhbHVlAQUCYVAJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFKAgUCYUcJAQV2YWx1ZQEFAmFQCQEFdmFsdWUBBQJhTwkAzAgCCQELRGVsZXRlRW50cnkBCQECYUoCBQJhRwUCYUsJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAmFMAgUCYUcFAmFLBQNuaWwDCQECIT0CBQJhUAUEdW5pdAkAzAgCCQELU3RyaW5nRW50cnkCCQECYUYBBQJhRwkBBXZhbHVlAQUCYVAJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAmFMAgUCYUcFAmFLCQDMCAIJAQtEZWxldGVFbnRyeQEJAQJhSgIFAmFHCQEFdmFsdWUBBQJhUAUDbmlsAwkBAiE9AgUCYU8FBHVuaXQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAmFKAgUCYUcFAmFLCQDMCAIJAQtEZWxldGVFbnRyeQEJAQJhTAIFAmFHCQEFdmFsdWUBBQJhTwUDbmlsAwkAAAIFAmFLCQELdmFsdWVPckVsc2UCBQJhTgIACQDMCAIJAQtEZWxldGVFbnRyeQEJAQJhRgEFAmFHBQNuaWwJAQFTAQkArAICCQCsAgIJAKwCAgIOaW52YWxpZCBub2RlOiAFAmFHAgEuBQJhSwECYVUAAhclc19fbWFuYWdlclZhdWx0QWRkcmVzcwECYVYAAhQlc19fbWFuYWdlclB1YmxpY0tleQECYVcABAFYCQCiCAEJAQJhVQADCQABAgUBWAIGU3RyaW5nBAJhWAUBWAkBEUBleHRyTmF0aXZlKDEwNjIpAQUCYVgFBHRoaXMBAmFZAAQCYVoJAQJhVwAEAVgJAJ0IAgUCYVoJAQJhVgADCQABAgUBWAIGU3RyaW5nBAJhWAUBWAkA2QQBBQJhWAMJAAECBQFYAgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IBAmJhAQJiYgQBWAkBAmFZAAMJAAECBQFYAgpCeXRlVmVjdG9yBAJiYwUBWAkAAAIIBQJiYg9jYWxsZXJQdWJsaWNLZXkFAmJjAwkAAQIFAVgCBFVuaXQJAAACCAUCYmIGY2FsbGVyBQR0aGlzCQACAQILTWF0Y2ggZXJyb3IBAmJkAQJiYgMJAQJiYQEFAmJiBgkAAgECEXBlcm1pc3Npb24gZGVuaWVkAQJiZQECYmIDCQAAAggFAmJiBmNhbGxlcgUEdGhpcwYJAAIBAhFwZXJtaXNzaW9uIGRlbmllZA8CYmIBGGdldFVzZXJHd3hBbW91bnRBdEhlaWdodAICYmYCYmcEAmJoCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkBAmFhAgUEdGhpcwUBbgkBAVEBAiFpbnZhbGlkIGJvb3N0aW5nIGNvbnRyYWN0IGFkZHJlc3MJAJQKAgUDbmlsCgACYWIJAPwHBAUCYmgCIGdldFVzZXJHd3hBbW91bnRBdEhlaWdodFJFQURPTkxZCQDMCAIFAmJmCQDMCAIFAmJnBQNuaWwFA25pbAMJAAECBQJhYgIDSW50BQJhYgkAAgEJAKwCAgkAAwEFAmFiAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQCYmIBC2NvbnN0cnVjdG9yBQJhZwJiaQJiagJiawJibAQCYm0JAMwIAgkBAmJkAQUCYmIJAMwIAgMJAQIhPQIJAKYIAQUCYWcFBHVuaXQGAiBpbnZhbGlkIGZhY3RvcnkgY29udHJhY3QgYWRkcmVzcwkAzAgCAwkBAiE9AgkApggBBQJiaQUEdW5pdAYCMmludmFsaWQgdm90aW5nIGVtaXNzaW9uIGNhbmRpZGF0ZSBjb250cmFjdCBhZGRyZXNzCQDMCAIDCQECIT0CCQCmCAEFAmJqBQR1bml0BgIhaW52YWxpZCBib29zdGluZyBjb250cmFjdCBhZGRyZXNzCQDMCAIDCQECIT0CCQCmCAEFAmJrBQR1bml0BgIgaW52YWxpZCBzdGFraW5nIGNvbnRyYWN0IGFkZHJlc3MJAMwIAgMJAGYCBQJibAAABgkBAVMBAhRpbnZhbGlkIGVwb2NoIGxlbmd0aAUDbmlsAwkAAAIFAmJtBQJibQkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIFAW0FAmFnCQDMCAIJAQtTdHJpbmdFbnRyeQIFAWwFAmJpCQDMCAIJAQtTdHJpbmdFbnRyeQIFAW4FAmJqCQDMCAIJAQtTdHJpbmdFbnRyeQIFAW8FAmJrCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQFmBQJibAUDbmlsBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmJiAQZjcmVhdGUCAUIBQwQCYm0JAMwIAgMJAAACCQDYBAEICAUCYmIGY2FsbGVyBWJ5dGVzCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMFAWwCAAYJAQJiZAEFAmJiBQNuaWwDCQAAAgUCYm0FAmJtBAF6CQCUCgIFAUIFAUMEAmJuCQDOCAIJAMwIAgkBDEJvb2xlYW5FbnRyeQIJAQF5AQUBegYFA25pbAkBAmFRAgUCYUMJAQJhZAEFAXoEAmJvCQAAAgkAmggCBQR0aGlzBQFqBQR1bml0BAJicAMFAmJvBAFpAAAJAMwIAgkBDEludGVnZXJFbnRyeQIFAWoFAWkJAMwIAgkBDEludGVnZXJFbnRyeQIJAQF3AQUBaQUGaGVpZ2h0CQDMCAIJAQxJbnRlZ2VyRW50cnkCBQFzBQZoZWlnaHQJAMwIAgkBDEludGVnZXJFbnRyeQIFAXQFAWkJAMwIAgkBDEludGVnZXJFbnRyeQIFAXUFBmhlaWdodAUDbmlsBQNuaWwJAJQKAgkAzggCBQJibgUCYnAFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CYmIBBHZvdGUDAUIBQwJicQQBegkAlAoCBQFCBQFDBAFpCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFAWoAAAQCYnIJAQJhYwIFBHRoaXMJAQF3AQUBaQQCYmwJAQJhYwIFBHRoaXMFAWYEAmJzCQBkAgUCYnIFAmJsBAJidAkAmggCBQR0aGlzBQFwBAJidQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQEBRAIIBQJiYgZjYWxsZXIFAWkAAAQCYnYJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBAUYDBQF6CAUCYmIGY2FsbGVyBQFpAAAEAmJ3CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAQFIAgUBegUBaQAABAJieAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQEBTgEFAWkAAAQCYnkKAAJhYgkA/AcEBQR0aGlzAhhnZXRVc2VyR3d4QW1vdW50QXRIZWlnaHQJAMwIAgkA2AQBCAgFAmJiBmNhbGxlcgVieXRlcwkAzAgCBQJicwUDbmlsBQNuaWwDCQABAgUCYWICA0ludAUCYWIJAAIBCQCsAgIJAAMBBQJhYgIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50BAJiegkAZQIFAmJ5BQJidQQCYkEJAGQCBQJidgUCYnEEAmJCCQECYXkBBQF6BAJibQkAzAgCAwkBAiE9AgkAoAgBCQEBeQEFAXoFBHVuaXQGCQEBUwECDmludmFsaWQgYXNzZXRzCQDMCAIDCQBmAgUCYnMFBmhlaWdodAYJAQFTAQIOaW52YWxpZCBoZWlnaHQJAMwIAgMJAAACBQJidAUEdW5pdAYJAQFTAQIYZmluYWxpemF0aW9uIGluIHByb2dyZXNzCQDMCAIDCQBmAgUCYnkAAAYJAQFTAQITeW91IGRvIG5vdCBoYXZlIGdXWAkAzAgCAwMJAGYCBQJicQAACQBnAgUCYnoFAmJxBwYJAQFTAQIOaW52YWxpZCBhbW91bnQJAMwIAgMFAmJCBgkBAVMBAh1wb29sIGhhc24ndCBXWF9FTUlTU0lPTiBsYWJlbAUDbmlsAwkAAAIFAmJtBQJibQQCYkMJAQJhRAEFAXoEAVAJAKUIAQgFAmJiBmNhbGxlcgQCYkQDCQECYU0CBQJiQwUBUAUDbmlsCQECYVECBQJiQwUBUAkAlAoCCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFEAggFAmJiBmNhbGxlcgUBaQkAZAIFAmJ1BQJicQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAUYDBQF6CAUCYmIGY2FsbGVyBQFpBQJiQQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAUgCBQF6BQFpCQBkAgUCYncFAmJxCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBTgEFAWkJAGQCBQJieAUCYnEFA25pbAUCYkQFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CYmIBCmNhbmNlbFZvdGUCAUIBQwQBegkAlAoCBQFCBQFDBAFpCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFAWoAAAQCYnIJAQJhYwIFBHRoaXMJAQF3AQUBaQQCYmwJAQJhYwIFBHRoaXMFAWYEAmJzCQBkAgUCYnIFAmJsBAJidAkAmggCBQR0aGlzBQFwBAJidQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQEBRAIIBQJiYgZjYWxsZXIFAWkAAAQCYnYJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBAUYDBQF6CAUCYmIGY2FsbGVyBQFpAAAEAmJ3CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAQFIAgUBegUBaQAABAJieAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQEBTgEFAWkAAAQCYm0JAMwIAgMJAQIhPQIJAKAIAQkBAXkBBQF6BQR1bml0BgkBAVMBAg5pbnZhbGlkIGFzc2V0cwkAzAgCAwkAZgIFAmJzBQZoZWlnaHQGCQEBUwECDmludmFsaWQgaGVpZ2h0CQDMCAIDCQAAAgUCYnQFBHVuaXQGCQEBUwECGGZpbmFsaXphdGlvbiBpbiBwcm9ncmVzcwkAzAgCAwkAZgIFAmJ2AAAGCQEBUwECB25vIHZvdGUFA25pbAMJAAACBQJibQUCYm0EAmJDCQECYUQBBQF6BAFQCQClCAEIBQJiYgZjYWxsZXIJAJQKAgkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBRAIIBQJiYgZjYWxsZXIFAWkJAJYDAQkAzAgCCQBlAgUCYnUFAmJ2CQDMCAIAAAUDbmlsCQDMCAIJAQtEZWxldGVFbnRyeQEJAQFGAwUBeggFAmJiBmNhbGxlcgUBaQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAUgCBQF6BQFpCQBlAgUCYncFAmJ2CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBTgEFAWkJAGUCBQJieAUCYnYFA25pbAkBAmFUAgUCYkMFAVAFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CYmIBDnNldEVwb2NoTGVuZ3RoAQJiRQQCYm0JAMwIAgkBAmJkAQUCYmIJAMwIAgMJAGYCBQJiRQAABgkBAVMBAhRpbnZhbGlkIGVwb2NoIGxlbmd0aAUDbmlsAwkAAAIFAmJtBQJibQkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQFnBQJiRQUDbmlsBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmJiAQtzZXRNYXhEZXB0aAECYkYEAmJtCQDMCAIJAQJiZAEFAmJiCQDMCAIDCQBmAgUCYkYAAAYJAQFTAQIRaW52YWxpZCBtYXggZGVwdGgFA25pbAMJAAACBQJibQUCYm0JAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUBawUCYkYFA25pbAUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJiYgETcHJvY2Vzc1ZvdGVJTlRFUk5BTAICYkcBUAQCYkgJAQJiZQEFAmJiAwkAAAIFAmJIBQJiSAQCYmYJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBBQFQCQEBUQEJAKwCAgIqcHJvY2Vzc1ZvdGVJTlRFUk5BTDogaW52YWxpZCB1c2VyIGFkZHJlc3MgBQFQBAFpCQECYWMCBQR0aGlzBQFqBAJiSQkAZQIFAWkAAQQCYmwJAQJhYwIFBHRoaXMFAWYEAmJyCQECYWMCBQR0aGlzCQEBdwEFAWkEAmJzCQBkAgUCYnIFAmJsBAJiSgkBAmFjAgUEdGhpcwkBAXcBBQJiSQQCYksJAQJhYwIFBHRoaXMJAQFoAQUCYkkEAmJMCQBkAgUCYkoFAmJLBAJiTQMJAGcCBQJiSQAABgkBAVMBAitwcm9jZXNzVm90ZUlOVEVSTkFMOiBpbnZhbGlkIHByZXZpb3VzIGVwb2NoAwkAAAIFAmJNBQJiTQQBegkBAmFlAQUCYkcEAmJOBQF6BAFCCAUCYk4CXzEEAUMIBQJiTgJfMgQCYkIJAQJheQEFAXoEAmJ5CgACYWIJAPwHBAUEdGhpcwIYZ2V0VXNlckd3eEFtb3VudEF0SGVpZ2h0CQDMCAIFAVAJAMwIAgUCYnMFA25pbAUDbmlsAwkAAQIFAmFiAgNJbnQFAmFiCQACAQkArAICCQADAQUCYWICGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAQCYk8KAAJhYgkA/AcEBQR0aGlzAhhnZXRVc2VyR3d4QW1vdW50QXRIZWlnaHQJAMwIAgUBUAkAzAgCBQJiTAUDbmlsBQNuaWwDCQABAgUCYWICA0ludAUCYWIJAAIBCQCsAgIJAAMBBQJhYgIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50BAJieAkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEBTgEFAWkAAAQCYlAJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBAUgCBQF6BQFpAAAEAmJRCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ8IAQkBAUYDBQF6BQJiZgUCYkkJAQFRAQkArAICCQCsAgIJAKwCAgkArAICAhRwcm9jZXNzVm90ZUlOVEVSTkFMIAUCYkcCASAFAVACEjogbm8gcHJldmlvdXMgdm90ZQQCYnUJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBAUQCBQJiZgUBaQAABAFLCQECYW4CBQFCBQFDBAJiUgkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEBSgIFAUsFAmJJAAAEAmJrCQERQGV4dHJOYXRpdmUoMTA2MikBCQECYWECBQR0aGlzBQFvBAJiUwkBC3ZhbHVlT3JFbHNlAgkAmggCBQJiawkBAU8CBQFLBQFQAAAEAmJUAwkAAAIFAmJTAAAFA25pbAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAUoCBQFLBQJiSQkAZAIFAmJSBQJiUQUDbmlsBAJiQQMJAGYCBQJiTwAACQBrAwUCYlEFAmJ5BQJiTwAABAJiVQMDCQBmAgUCYkEAAAUCYkIHCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBRgMFAXoFAmJmBQFpBQJiQQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAU4BBQFpCQBkAgUCYngFAmJBCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBSAIFAXoFAWkJAGQCBQJiUAUCYkEJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFEAgUCYmYFAWkJAGQCBQJidQUCYkEFA25pbAkBAmFUAgkBAmFEAQUBegUBUAkAlAoCCQDOCAIFAmJVBQJiVAUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJiYgETcHJvY2Vzc1Bvb2xJTlRFUk5BTAICYkcCYlYEAmJICQECYmUBBQJiYgMJAAACBQJiSAUCYkgEAmJXBAJiWAkBAmFjAgUEdGhpcwUBagMFAmJWBQJiWAkAZQIFAmJYAAEEAmJNAwkAZwIFAmJXAAAGCQEBUwECKXByb2Nlc3NQb29sSU5URVJOQUw6IGludmFsaWQgdGFyZ2V0IGVwb2NoAwkAAAIFAmJNBQJiTQQBegkBAmFlAQUCYkcEAmJZBQF6BAFCCAUCYlkCXzEEAUMIBQJiWQJfMgQCYmsJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQJhYQIFBHRoaXMFAW8EAmF4CQECYW4CBQFCBQFDBAJiWgoAAmFiCQD8BwQFAmJrAhJ1c2Vyc0xpc3RUcmF2ZXJzYWwJAMwIAgUCYXgFA25pbAUDbmlsAwkAAQIFAmFiAgdCb29sZWFuBQJhYgkAAgEJAKwCAgkAAwEFAmFiAhwgY291bGRuJ3QgYmUgY2FzdCB0byBCb29sZWFuAwkAAAIFAmJaBQJiWgMFAmJaCQCUCgIFA25pbAYEAmJCCQECYXkBBQF6BAJieAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQEBTgEFAmJXAAAEAmJQCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAQFIAgUBegUCYlcAAAQCY2EDAwkAAAIFAmJ4AAAGCQEBIQEFAmJCAAAJAGsDBQJiUAUBYgUCYngEAmNiCQD8BwQFAmFnAgxtb2RpZnlXZWlnaHQJAMwIAgUCYXgJAMwIAgUCY2EFA25pbAUDbmlsAwkAAAIFAmNiBQJjYgQCY2MDAwUCYkIGBQJiVgUDbmlsCQDOCAIJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAXkBBQF6BQNuaWwJAQJhVAIFAmFDBQJiRwkAlAoCCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFMAgUBegUCYlcFAmNhBQNuaWwFAmNjBwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJiYgEOZmluYWxpemVIZWxwZXIABAJiVgkBC3ZhbHVlT3JFbHNlAgkAoAgBBQF2BwQBaQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQFqAAAEAmNkCQBlAgUBaQABBAJicgkBAmFjAgUEdGhpcwkBAXcBBQFpBAJibAkBAmFjAgUEdGhpcwUBZgQCYnMJAGQCBQJicgUCYmwEAmJ0CQCaCAIFBHRoaXMFAXADAwMJAGcCBQZoZWlnaHQFAmJzCQAAAgUCYnQFBHVuaXQHCQEBIQEFAmJWBwQCY2UJAGQCBQFpAAEEAmNmCQCaCAIFBHRoaXMFAWcEAmNnBAFYBQJjZgMJAAECBQFYAgNJbnQEAmJFBQFYCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQFmBQJiRQkAzAgCCQELRGVsZXRlRW50cnkBBQFnBQNuaWwDCQABAgUBWAIEVW5pdAUDbmlsCQACAQILTWF0Y2ggZXJyb3IJAJQKAgkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBdwEFAmNlBQZoZWlnaHQJAMwIAgkBDEludGVnZXJFbnRyeQIFAXMFBmhlaWdodAkAzAgCCQEMSW50ZWdlckVudHJ5AgUBagUCY2UJAMwIAgkBDEludGVnZXJFbnRyeQIFAXAFAWQJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFoAQUBaQUCYmwFA25pbAUCY2cGAwMFAmJWCQAAAgUCYnQFBHVuaXQHCQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIFAXAFAWUFA25pbAYDCQAAAgUCYnQFBHVuaXQJAJQKAgUDbmlsBwMJAAACBQJidAUBZAQCY2gJAKIIAQUBcQQCY2kJAKIIAQUBcgQBWAUCY2gDCQABAgUBWAIEVW5pdAQCY2oJAKIIAQkBAmFGAQUCYUMDCQABAgUCY2oCBFVuaXQJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUBcAUBZQkAzAgCCQELRGVsZXRlRW50cnkBBQFxCQDMCAIJAQtEZWxldGVFbnRyeQEFAXIFA25pbAYDCQABAgUCY2oCBlN0cmluZwQCY2sFAmNqCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgUBcQUCY2sFA25pbAYJAAIBAgtNYXRjaCBlcnJvcgMJAAECBQFYAgZTdHJpbmcEAmJHBQFYBAF6CQECYWUBBQJiRwQCY2wEAmNqBQJjaQMJAAECBQJjagIEVW5pdAkAoggBCQECYUYBCQECYUQBBQF6AwkAAQIFAmNqAgZTdHJpbmcEAmNtBQJjagQCY24JAKIIAQkBAmFMAgkBAmFEAQUBegUCY20DCQAAAgUCY24FAmNuBAJjbwkA/AcEBQR0aGlzAhNwcm9jZXNzVm90ZUlOVEVSTkFMCQDMCAIFAmJHCQDMCAIFAmNtBQNuaWwFA25pbAMJAAACBQJjbwUCY28FAmNuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQILTWF0Y2ggZXJyb3IEAmNqBQJjbAMJAAECBQJjagIEVW5pdAQCY3AJAKIIAQkBAmFMAgUCYUMFAmJHBAJjcQUCY3ADCQABAgUCY3ECBFVuaXQJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUBcAUBZQkAzAgCCQELRGVsZXRlRW50cnkBBQFxCQDMCAIJAQtEZWxldGVFbnRyeQEFAXIFA25pbAYDCQABAgUCY3ECBlN0cmluZwQCYVgFAmNxCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgUBcQUCYVgJAMwIAgkBC0RlbGV0ZUVudHJ5AQUBcgUDbmlsBgkAAgECC01hdGNoIGVycm9yAwkAAQIFAmNqAgZTdHJpbmcEAmNyBQJjagkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIFAXIFAmNyBQNuaWwGCQACAQILTWF0Y2ggZXJyb3IJAAIBAgtNYXRjaCBlcnJvcgMJAAACBQJidAUBZQQCY2gJAKIIAQUBcQQBWAUCY2gDCQABAgUBWAIEVW5pdAQCY2oJAKIIAQkBAmFGAQUCYUMDCQABAgUCY2oCBFVuaXQEAmJVAwUCYlYJAMwIAgkBC0RlbGV0ZUVudHJ5AQUBcAkAzAgCCQELRGVsZXRlRW50cnkBBQF2BQNuaWwJAMwIAgkBC0RlbGV0ZUVudHJ5AQUBcAkAzAgCCQEMQm9vbGVhbkVudHJ5AgkBAXgBBQJjZAYJAMwIAgkBDEludGVnZXJFbnRyeQIFAXQFAWkJAMwIAgkBDEludGVnZXJFbnRyeQIFAXUFAmJyBQNuaWwEAmNzCQECYUEAAwkAAAIFAmNzBQJjcwkAlAoCBQJiVQYJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4DCQABAgUCY2oCBlN0cmluZwQCY3QFAmNqCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgUBcQUCY3QFA25pbAYJAAIBAgtNYXRjaCBlcnJvcgMJAAECBQFYAgZTdHJpbmcEAmJHBQFYBAJjcAkAoggBCQECYUwCBQJhQwUCYkcDCQAAAgUCY3AFAmNwBAJiWgoAAmFiCQD8BwQFBHRoaXMCE3Byb2Nlc3NQb29sSU5URVJOQUwJAMwIAgUCYkcJAMwIAgUCYlYFA25pbAUDbmlsAwkAAQIFAmFiAgdCb29sZWFuBQJhYgkAAgEJAKwCAgkAAwEFAmFiAhwgY291bGRuJ3QgYmUgY2FzdCB0byBCb29sZWFuAwkAAAIFAmJaBQJiWgMFAmJaCQCUCgIFA25pbAYEAmNqBQJjcAMJAAECBQJjagIEVW5pdAQCYlUDBQJiVgkAzAgCCQELRGVsZXRlRW50cnkBBQFwCQDMCAIJAQtEZWxldGVFbnRyeQEFAXYJAMwIAgkBC0RlbGV0ZUVudHJ5AQUBcQUDbmlsCQDMCAIJAQtEZWxldGVFbnRyeQEFAXAJAMwIAgkBDEJvb2xlYW5FbnRyeQIJAQF4AQUCY2QGCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQF0BQFpCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQF1BQJicgkAzAgCCQELRGVsZXRlRW50cnkBBQFxBQNuaWwEAmNzCQECYUEAAwkAAAIFAmNzBQJjcwkAlAoCBQJiVQYJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4DCQABAgUCY2oCBlN0cmluZwQCY3QFAmNqCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgUBcQUCY3QFA25pbAYJAAIBAgtNYXRjaCBlcnJvcgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECC01hdGNoIGVycm9yCQEBUwECFmZpbmFsaXphdGlvbiBpcyBicm9rZW4CYmIBD2ZpbmFsaXplV3JhcHBlcgECY3UEAmN2CgACYWIJAPwHBAUEdGhpcwIOZmluYWxpemVIZWxwZXIFA25pbAUDbmlsAwkAAQIFAmFiAgdCb29sZWFuBQJhYgkAAgEJAKwCAgkAAwEFAmFiAhwgY291bGRuJ3QgYmUgY2FzdCB0byBCb29sZWFuAwkAAAIFAmN2BQJjdgMJAQEhAQUCY3YDCQAAAgUCY3UAAAkBAVMBAh5DdXJyZW50IHZvdGluZyBpcyBub3Qgb3ZlciB5ZXQJAJQKAgUDbmlsBQR1bml0BAJjdwkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQFrBQFjAwkAZgIFAmN3BQJjdQQCY3gJAPwHBAUEdGhpcwIPZmluYWxpemVXcmFwcGVyCQDMCAIJAGQCBQJjdQABBQNuaWwFA25pbAMJAAACBQJjeAUCY3gJAJQKAgUDbmlsBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQCUCgIFA25pbAUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJiYgEIZmluYWxpemUABAJjeAkA/AcEBQR0aGlzAg9maW5hbGl6ZVdyYXBwZXIJAMwIAgAABQNuaWwFA25pbAMJAAACBQJjeAUCY3gJAJQKAgUDbmlsBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmJiARRjb250YWluc05vZGVSRUFET05MWQICYUcCYUsJAJQKAgUDbmlsCQECYU0CBQJhRwUCYUsCYmIBCmluc2VydE5vZGUCAmFHAmFLBAJiSAkBAmJkAQUCYmIDCQAAAgUCYkgFAmJICQCUCgIJAQJhUQIFAmFHBQJhSwUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJiYgEKZGVsZXRlTm9kZQICYUcCYUsEAmJICQECYmQBBQJiYgMJAAACBQJiSAUCYkgJAJQKAgkBAmFUAgUCYUcFAmFLBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJjeQECY3oABAJjQQQBWAkBAmFZAAMJAAECBQFYAgpCeXRlVmVjdG9yBAJiYwUBWAUCYmMDCQABAgUBWAIEVW5pdAgFAmN5D3NlbmRlclB1YmxpY0tleQkAAgECC01hdGNoIGVycm9yCQD0AwMIBQJjeQlib2R5Qnl0ZXMJAJEDAggFAmN5BnByb29mcwAABQJjQX6PrfM=", "height": 2574648, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 93a9EBkd3SmCa8cF1ZfSFe8UPdKSgs7tFysQnGqMwmAz Next: AvWs3riEyaiksSpfXbSPf7KrQHhacfsxUpmXji25PZN1 Diff:
OldNewDifferences
146146 }
147147
148148
149-func ag (B,C) = {
150- func ah (ai) = ("%s%s%s__mappings__baseAsset2internalId__" + ai)
149+let ag = addressFromStringValue(aa(this, m))
151150
152- func aj (ak,al) = (((("%d%d%s%s__" + toString(ak)) + "__") + toString(al)) + "__mappings__poolAssets2PoolContract")
151+let ah = 10
153152
154- func am (an) = (("%s%s%s__" + an) + "__mappings__poolContract2LpAsset")
153+func ai () = "%s__factoryConfig"
155154
156- let ao = addressFromStringValue(aa(this, m))
157- let ap = ac(ao, ah(B))
158- let aq = ac(ao, ah(C))
159- let an = aa(ao, aj(ap, aq))
160- let ar = aa(ao, am(an))
161- ar
155+
156+func aj (ak) = split(aa(ak, ai()), a)
157+
158+
159+func al (am) = addressFromStringValue(am[ah])
160+
161+
162+func an (B,C) = {
163+ func ao (ap) = ("%s%s%s__mappings__baseAsset2internalId__" + ap)
164+
165+ func aq (ar,as) = (((("%d%d%s%s__" + toString(ar)) + "__") + toString(as)) + "__mappings__poolAssets2PoolContract")
166+
167+ func at (au) = (("%s%s%s__" + au) + "__mappings__poolContract2LpAsset")
168+
169+ let av = ac(ag, ao(B))
170+ let aw = ac(ag, ao(C))
171+ let au = aa(ag, aq(av, aw))
172+ let ax = aa(ag, at(au))
173+ ax
162174 }
163175
164176
165-func as (z) = {
166- let at = z
167- let B = at._1
168- let C = at._2
169- let ao = addressFromStringValue(aa(this, m))
170- let ab = invoke(ao, "checkWxEmissionPoolLabel", [B, C], nil)
177+func ay (z) = {
178+ let az = z
179+ let B = az._1
180+ let C = az._2
181+ let ab = invoke(ag, "checkWxEmissionPoolLabel", [B, C], nil)
171182 if ($isInstanceOf(ab, "Boolean"))
172183 then ab
173184 else throw(($getType(ab) + " couldn't be cast to Boolean"))
174185 }
175186
176187
177-let au = "pools"
188+func aA () = {
189+ let am = aj(ag)
190+ let aB = al(am)
191+ invoke(aB, "deposit", nil, nil)
192+ }
178193
179-func av (z) = {
180- let aw = z
181- let B = aw._1
182- let C = aw._2
194+
195+let aC = "pools"
196+
197+func aD (z) = {
198+ let aE = z
199+ let B = aE._1
200+ let C = aE._2
183201 makeString(["votes", B, C], a)
184202 }
185203
186204
187-func ax (ay) = {
188- let az = if ((ay == au))
205+func aF (aG) = {
206+ let aH = if ((aG == aC))
189207 then "%s%s"
190208 else "%s%s%s%s"
191- makeString([az, ay, "head"], a)
209+ makeString([aH, aG, "head"], a)
192210 }
193211
194212
195-func aA (ay) = {
196- let az = if ((ay == au))
213+func aI (aG) = {
214+ let aH = if ((aG == aC))
197215 then "%s%s"
198216 else "%s%s%s%s"
199- makeString([az, ay, "size"], a)
217+ makeString([aH, aG, "size"], a)
200218 }
201219
202220
203-func aB (ay,aC) = {
204- let az = if ((ay == au))
221+func aJ (aG,aK) = {
222+ let aH = if ((aG == aC))
205223 then "%s%s%s%s"
206224 else "%s%s%s%s%s"
207- makeString([az, ay, aC, "prev"], a)
225+ makeString([aH, aG, aK, "prev"], a)
208226 }
209227
210228
211-func aD (ay,aC) = {
212- let az = if ((ay == au))
229+func aL (aG,aK) = {
230+ let aH = if ((aG == aC))
213231 then "%s%s%s%s"
214232 else "%s%s%s%s%s"
215- makeString([az, ay, aC, "next"], a)
233+ makeString([aH, aG, aK, "next"], a)
216234 }
217235
218236
219-func aE (ay,aC) = {
220- let aF = getString(this, ax(ay))
221- let aG = getString(this, aB(ay, aC))
222- let aH = getString(this, aD(ay, aC))
223- if (if ((aC == valueOrElse(aF, "")))
237+func aM (aG,aK) = {
238+ let aN = getString(this, aF(aG))
239+ let aO = getString(this, aJ(aG, aK))
240+ let aP = getString(this, aL(aG, aK))
241+ if (if ((aK == valueOrElse(aN, "")))
224242 then true
225- else (aG != unit))
243+ else (aO != unit))
226244 then true
227- else (aH != unit)
245+ else (aP != unit)
228246 }
229247
230248
231-func aI (ay,aC) = {
232- let aF = getString(this, ax(ay))
233- let aJ = valueOrElse(getInteger(this, aA(ay)), 0)
234- let aK = if (!(aE(ay, aC)))
249+func aQ (aG,aK) = {
250+ let aN = getString(this, aF(aG))
251+ let aR = valueOrElse(getInteger(this, aI(aG)), 0)
252+ let aS = if (!(aM(aG, aK)))
235253 then true
236254 else S("Node exists")
237- if ((aK == aK))
238- then (([IntegerEntry(aA(ay), (aJ + 1))] ++ (if ((aF != unit))
239- then [StringEntry(aD(ay, aC), value(aF)), StringEntry(aB(ay, value(aF)), aC)]
240- else nil)) ++ [StringEntry(ax(ay), aC)])
255+ if ((aS == aS))
256+ then (([IntegerEntry(aI(aG), (aR + 1))] ++ (if ((aN != unit))
257+ then [StringEntry(aL(aG, aK), value(aN)), StringEntry(aJ(aG, value(aN)), aK)]
258+ else nil)) ++ [StringEntry(aF(aG), aK)])
241259 else throw("Strict value is not equal to itself.")
242260 }
243261
244262
245-func aL (ay,aC) = {
246- let aF = getString(this, ax(ay))
247- let aJ = valueOrElse(getInteger(this, aA(ay)), 0)
248- let aG = getString(this, aB(ay, aC))
249- let aH = getString(this, aD(ay, aC))
250- ([IntegerEntry(aA(ay), (aJ - 1))] ++ (if (if ((aG != unit))
251- then (aH != unit)
263+func aT (aG,aK) = {
264+ let aN = getString(this, aF(aG))
265+ let aR = valueOrElse(getInteger(this, aI(aG)), 0)
266+ let aO = getString(this, aJ(aG, aK))
267+ let aP = getString(this, aL(aG, aK))
268+ ([IntegerEntry(aI(aG), (aR - 1))] ++ (if (if ((aO != unit))
269+ then (aP != unit)
252270 else false)
253- then [StringEntry(aD(ay, value(aG)), value(aH)), StringEntry(aB(ay, value(aH)), value(aG)), DeleteEntry(aB(ay, aC)), DeleteEntry(aD(ay, aC))]
254- else if ((aH != unit))
255- then [StringEntry(ax(ay), value(aH)), DeleteEntry(aD(ay, aC)), DeleteEntry(aB(ay, value(aH)))]
256- else if ((aG != unit))
257- then [DeleteEntry(aB(ay, aC)), DeleteEntry(aD(ay, value(aG)))]
258- else if ((aC == valueOrElse(aF, "")))
259- then [DeleteEntry(ax(ay))]
260- else S(((("invalid node: " + ay) + ".") + aC))))
271+ then [StringEntry(aL(aG, value(aO)), value(aP)), StringEntry(aJ(aG, value(aP)), value(aO)), DeleteEntry(aJ(aG, aK)), DeleteEntry(aL(aG, aK))]
272+ else if ((aP != unit))
273+ then [StringEntry(aF(aG), value(aP)), DeleteEntry(aL(aG, aK)), DeleteEntry(aJ(aG, value(aP)))]
274+ else if ((aO != unit))
275+ then [DeleteEntry(aJ(aG, aK)), DeleteEntry(aL(aG, value(aO)))]
276+ else if ((aK == valueOrElse(aN, "")))
277+ then [DeleteEntry(aF(aG))]
278+ else S(((("invalid node: " + aG) + ".") + aK))))
261279 }
262280
263281
264-func aM () = "%s__managerVaultAddress"
282+func aU () = "%s__managerVaultAddress"
265283
266284
267-func aN () = "%s__managerPublicKey"
285+func aV () = "%s__managerPublicKey"
268286
269287
270-func aO () = {
271- let X = getString(aM())
288+func aW () = {
289+ let X = getString(aU())
272290 if ($isInstanceOf(X, "String"))
273291 then {
274- let aP = X
275- addressFromStringValue(aP)
292+ let aX = X
293+ addressFromStringValue(aX)
276294 }
277295 else this
278296 }
279297
280298
281-func aQ () = {
282- let aR = aO()
283- let X = getString(aR, aN())
299+func aY () = {
300+ let aZ = aW()
301+ let X = getString(aZ, aV())
284302 if ($isInstanceOf(X, "String"))
285303 then {
286- let aP = X
287- fromBase58String(aP)
304+ let aX = X
305+ fromBase58String(aX)
288306 }
289307 else if ($isInstanceOf(X, "Unit"))
290308 then unit
292310 }
293311
294312
295-func aS (aT) = {
296- let X = aQ()
313+func ba (bb) = {
314+ let X = aY()
297315 if ($isInstanceOf(X, "ByteVector"))
298316 then {
299- let aU = X
300- (aT.callerPublicKey == aU)
317+ let bc = X
318+ (bb.callerPublicKey == bc)
301319 }
302320 else if ($isInstanceOf(X, "Unit"))
303- then (aT.caller == this)
321+ then (bb.caller == this)
304322 else throw("Match error")
305323 }
306324
307325
308-func aV (aT) = if (aS(aT))
326+func bd (bb) = if (ba(bb))
309327 then true
310328 else throw("permission denied")
311329
312330
313-func aW (aT) = if ((aT.caller == this))
331+func be (bb) = if ((bb.caller == this))
314332 then true
315333 else throw("permission denied")
316334
317335
318-@Callable(aT)
319-func getUserGwxAmountAtHeight (aX,aY) = {
320- let aZ = valueOrErrorMessage(addressFromString(aa(this, n)), Q("invalid boosting contract address"))
336+@Callable(bb)
337+func getUserGwxAmountAtHeight (bf,bg) = {
338+ let bh = valueOrErrorMessage(addressFromString(aa(this, n)), Q("invalid boosting contract address"))
321339 $Tuple2(nil, {
322- let ab = invoke(aZ, "getUserGwxAmountAtHeightREADONLY", [aX, aY], nil)
340+ let ab = invoke(bh, "getUserGwxAmountAtHeightREADONLY", [bf, bg], nil)
323341 if ($isInstanceOf(ab, "Int"))
324342 then ab
325343 else throw(($getType(ab) + " couldn't be cast to Int"))
328346
329347
330348
331-@Callable(aT)
332-func constructor (ao,ba,bb,bc,bd) = {
333- let be = [aV(aT), if ((addressFromString(ao) != unit))
349+@Callable(bb)
350+func constructor (ag,bi,bj,bk,bl) = {
351+ let bm = [bd(bb), if ((addressFromString(ag) != unit))
334352 then true
335- else "invalid factory contract address", if ((addressFromString(ba) != unit))
353+ else "invalid factory contract address", if ((addressFromString(bi) != unit))
336354 then true
337- else "invalid voting emission candidate contract address", if ((addressFromString(bb) != unit))
355+ else "invalid voting emission candidate contract address", if ((addressFromString(bj) != unit))
338356 then true
339- else "invalid boosting contract address", if ((addressFromString(bc) != unit))
357+ else "invalid boosting contract address", if ((addressFromString(bk) != unit))
340358 then true
341- else "invalid staking contract address", if ((bd > 0))
359+ else "invalid staking contract address", if ((bl > 0))
342360 then true
343361 else S("invalid epoch length")]
344- if ((be == be))
345- then $Tuple2([StringEntry(m, ao), StringEntry(l, ba), StringEntry(n, bb), StringEntry(o, bc), IntegerEntry(f, bd)], unit)
362+ if ((bm == bm))
363+ then $Tuple2([StringEntry(m, ag), StringEntry(l, bi), StringEntry(n, bj), StringEntry(o, bk), IntegerEntry(f, bl)], unit)
346364 else throw("Strict value is not equal to itself.")
347365 }
348366
349367
350368
351-@Callable(aT)
369+@Callable(bb)
352370 func create (B,C) = {
353- let be = [if ((toBase58String(aT.caller.bytes) == valueOrElse(getString(this, l), "")))
371+ let bm = [if ((toBase58String(bb.caller.bytes) == valueOrElse(getString(this, l), "")))
354372 then true
355- else aV(aT)]
356- if ((be == be))
373+ else bd(bb)]
374+ if ((bm == bm))
357375 then {
358376 let z = $Tuple2(B, C)
359- let bf = ([BooleanEntry(y(z), true)] ++ aI(au, ad(z)))
360- let bg = (getInteger(this, j) == unit)
361- let bh = if (bg)
377+ let bn = ([BooleanEntry(y(z), true)] ++ aQ(aC, ad(z)))
378+ let bo = (getInteger(this, j) == unit)
379+ let bp = if (bo)
362380 then {
363381 let i = 0
364382 [IntegerEntry(j, i), IntegerEntry(w(i), height), IntegerEntry(s, height), IntegerEntry(t, i), IntegerEntry(u, height)]
365383 }
366384 else nil
367- $Tuple2((bf ++ bh), unit)
385+ $Tuple2((bn ++ bp), unit)
368386 }
369387 else throw("Strict value is not equal to itself.")
370388 }
371389
372390
373391
374-@Callable(aT)
375-func vote (B,C,bi) = {
392+@Callable(bb)
393+func vote (B,C,bq) = {
376394 let z = $Tuple2(B, C)
377395 let i = valueOrElse(getInteger(this, j), 0)
378- let bj = ac(this, w(i))
379- let bd = ac(this, f)
380- let bk = (bj + bd)
381- let bl = getInteger(this, p)
382- let bm = valueOrElse(getInteger(this, D(aT.caller, i)), 0)
383- let bn = valueOrElse(getInteger(this, F(z, aT.caller, i)), 0)
384- let bo = valueOrElse(getInteger(this, H(z, i)), 0)
385- let bp = valueOrElse(getInteger(this, N(i)), 0)
386- let bq = {
387- let ab = invoke(this, "getUserGwxAmountAtHeight", [toBase58String(aT.caller.bytes), bk], nil)
396+ let br = ac(this, w(i))
397+ let bl = ac(this, f)
398+ let bs = (br + bl)
399+ let bt = getInteger(this, p)
400+ let bu = valueOrElse(getInteger(this, D(bb.caller, i)), 0)
401+ let bv = valueOrElse(getInteger(this, F(z, bb.caller, i)), 0)
402+ let bw = valueOrElse(getInteger(this, H(z, i)), 0)
403+ let bx = valueOrElse(getInteger(this, N(i)), 0)
404+ let by = {
405+ let ab = invoke(this, "getUserGwxAmountAtHeight", [toBase58String(bb.caller.bytes), bs], nil)
388406 if ($isInstanceOf(ab, "Int"))
389407 then ab
390408 else throw(($getType(ab) + " couldn't be cast to Int"))
391409 }
392- let br = (bq - bm)
393- let bs = (bn + bi)
394- let bt = as(z)
395- let be = [if ((getBoolean(y(z)) != unit))
410+ let bz = (by - bu)
411+ let bA = (bv + bq)
412+ let bB = ay(z)
413+ let bm = [if ((getBoolean(y(z)) != unit))
396414 then true
397- else S("invalid assets"), if ((bk > height))
415+ else S("invalid assets"), if ((bs > height))
398416 then true
399- else S("invalid height"), if ((bl == unit))
417+ else S("invalid height"), if ((bt == unit))
400418 then true
401- else S("finalization in progress"), if ((bq > 0))
419+ else S("finalization in progress"), if ((by > 0))
402420 then true
403- else S("you do not have gWX"), if (if ((bi > 0))
404- then (br >= bi)
421+ else S("you do not have gWX"), if (if ((bq > 0))
422+ then (bz >= bq)
405423 else false)
406424 then true
407- else S("invalid amount"), if (bt)
425+ else S("invalid amount"), if (bB)
408426 then true
409427 else S("pool hasn't WX_EMISSION label")]
410- if ((be == be))
428+ if ((bm == bm))
411429 then {
412- let bu = av(z)
413- let P = toString(aT.caller)
414- let bv = if (aE(bu, P))
430+ let bC = aD(z)
431+ let P = toString(bb.caller)
432+ let bD = if (aM(bC, P))
415433 then nil
416- else aI(bu, P)
417- $Tuple2(([IntegerEntry(D(aT.caller, i), (bm + bi)), IntegerEntry(F(z, aT.caller, i), bs), IntegerEntry(H(z, i), (bo + bi)), IntegerEntry(N(i), (bp + bi))] ++ bv), unit)
434+ else aQ(bC, P)
435+ $Tuple2(([IntegerEntry(D(bb.caller, i), (bu + bq)), IntegerEntry(F(z, bb.caller, i), bA), IntegerEntry(H(z, i), (bw + bq)), IntegerEntry(N(i), (bx + bq))] ++ bD), unit)
418436 }
419437 else throw("Strict value is not equal to itself.")
420438 }
421439
422440
423441
424-@Callable(aT)
442+@Callable(bb)
425443 func cancelVote (B,C) = {
426444 let z = $Tuple2(B, C)
427445 let i = valueOrElse(getInteger(this, j), 0)
428- let bj = ac(this, w(i))
429- let bd = ac(this, f)
430- let bk = (bj + bd)
431- let bl = getInteger(this, p)
432- let bm = valueOrElse(getInteger(this, D(aT.caller, i)), 0)
433- let bn = valueOrElse(getInteger(this, F(z, aT.caller, i)), 0)
434- let bo = valueOrElse(getInteger(this, H(z, i)), 0)
435- let bp = valueOrElse(getInteger(this, N(i)), 0)
436- let be = [if ((getBoolean(y(z)) != unit))
446+ let br = ac(this, w(i))
447+ let bl = ac(this, f)
448+ let bs = (br + bl)
449+ let bt = getInteger(this, p)
450+ let bu = valueOrElse(getInteger(this, D(bb.caller, i)), 0)
451+ let bv = valueOrElse(getInteger(this, F(z, bb.caller, i)), 0)
452+ let bw = valueOrElse(getInteger(this, H(z, i)), 0)
453+ let bx = valueOrElse(getInteger(this, N(i)), 0)
454+ let bm = [if ((getBoolean(y(z)) != unit))
437455 then true
438- else S("invalid assets"), if ((bk > height))
456+ else S("invalid assets"), if ((bs > height))
439457 then true
440- else S("invalid height"), if ((bl == unit))
458+ else S("invalid height"), if ((bt == unit))
441459 then true
442- else S("finalization in progress"), if ((bn > 0))
460+ else S("finalization in progress"), if ((bv > 0))
443461 then true
444462 else S("no vote")]
445- if ((be == be))
463+ if ((bm == bm))
446464 then {
447- let bu = av(z)
448- let P = toString(aT.caller)
449- $Tuple2(([IntegerEntry(D(aT.caller, i), max([(bm - bn), 0])), DeleteEntry(F(z, aT.caller, i)), IntegerEntry(H(z, i), (bo - bn)), IntegerEntry(N(i), (bp - bn))] ++ aL(bu, P)), unit)
465+ let bC = aD(z)
466+ let P = toString(bb.caller)
467+ $Tuple2(([IntegerEntry(D(bb.caller, i), max([(bu - bv), 0])), DeleteEntry(F(z, bb.caller, i)), IntegerEntry(H(z, i), (bw - bv)), IntegerEntry(N(i), (bx - bv))] ++ aT(bC, P)), unit)
450468 }
451469 else throw("Strict value is not equal to itself.")
452470 }
453471
454472
455473
456-@Callable(aT)
457-func setEpochLength (bw) = {
458- let be = [aV(aT), if ((bw > 0))
474+@Callable(bb)
475+func setEpochLength (bE) = {
476+ let bm = [bd(bb), if ((bE > 0))
459477 then true
460478 else S("invalid epoch length")]
461- if ((be == be))
462- then $Tuple2([IntegerEntry(g, bw)], unit)
479+ if ((bm == bm))
480+ then $Tuple2([IntegerEntry(g, bE)], unit)
463481 else throw("Strict value is not equal to itself.")
464482 }
465483
466484
467485
468-@Callable(aT)
469-func setMaxDepth (bx) = {
470- let be = [aV(aT), if ((bx > 0))
486+@Callable(bb)
487+func setMaxDepth (bF) = {
488+ let bm = [bd(bb), if ((bF > 0))
471489 then true
472490 else S("invalid max depth")]
473- if ((be == be))
474- then $Tuple2([IntegerEntry(k, bx)], unit)
491+ if ((bm == bm))
492+ then $Tuple2([IntegerEntry(k, bF)], unit)
475493 else throw("Strict value is not equal to itself.")
476494 }
477495
478496
479497
480-@Callable(aT)
481-func processVoteINTERNAL (by,P) = {
482- let bz = aW(aT)
483- if ((bz == bz))
498+@Callable(bb)
499+func processVoteINTERNAL (bG,P) = {
500+ let bH = be(bb)
501+ if ((bH == bH))
484502 then {
485- let aX = valueOrErrorMessage(addressFromString(P), Q(("processVoteINTERNAL: invalid user address " + P)))
503+ let bf = valueOrErrorMessage(addressFromString(P), Q(("processVoteINTERNAL: invalid user address " + P)))
486504 let i = ac(this, j)
487- let bA = (i - 1)
488- let bd = ac(this, f)
489- let bj = ac(this, w(i))
490- let bk = (bj + bd)
491- let bB = ac(this, w(bA))
492- let bC = ac(this, h(bA))
493- let bD = (bB + bC)
494- let bE = if ((bA >= 0))
505+ let bI = (i - 1)
506+ let bl = ac(this, f)
507+ let br = ac(this, w(i))
508+ let bs = (br + bl)
509+ let bJ = ac(this, w(bI))
510+ let bK = ac(this, h(bI))
511+ let bL = (bJ + bK)
512+ let bM = if ((bI >= 0))
495513 then true
496514 else S("processVoteINTERNAL: invalid previous epoch")
497- if ((bE == bE))
515+ if ((bM == bM))
498516 then {
499- let z = ae(by)
500- let bF = z
501- let B = bF._1
502- let C = bF._2
503- let bt = as(z)
504- let bq = {
505- let ab = invoke(this, "getUserGwxAmountAtHeight", [P, bk], nil)
517+ let z = ae(bG)
518+ let bN = z
519+ let B = bN._1
520+ let C = bN._2
521+ let bB = ay(z)
522+ let by = {
523+ let ab = invoke(this, "getUserGwxAmountAtHeight", [P, bs], nil)
506524 if ($isInstanceOf(ab, "Int"))
507525 then ab
508526 else throw(($getType(ab) + " couldn't be cast to Int"))
509527 }
510- let bG = {
511- let ab = invoke(this, "getUserGwxAmountAtHeight", [P, bD], nil)
528+ let bO = {
529+ let ab = invoke(this, "getUserGwxAmountAtHeight", [P, bL], nil)
512530 if ($isInstanceOf(ab, "Int"))
513531 then ab
514532 else throw(($getType(ab) + " couldn't be cast to Int"))
515533 }
516- let bp = valueOrElse(getInteger(N(i)), 0)
517- let bH = valueOrElse(getInteger(H(z, i)), 0)
518- let bI = valueOrErrorMessage(getInteger(F(z, aX, bA)), Q((((("processVoteINTERNAL " + by) + " ") + P) + ": no previous vote")))
519- let bm = valueOrElse(getInteger(this, D(aX, i)), 0)
520- let K = ag(B, C)
521- let bJ = valueOrElse(getInteger(J(K, bA)), 0)
522- let bc = addressFromStringValue(aa(this, o))
523- let bK = valueOrElse(getInteger(bc, O(K, P)), 0)
524- let bL = if ((bK == 0))
534+ let bx = valueOrElse(getInteger(N(i)), 0)
535+ let bP = valueOrElse(getInteger(H(z, i)), 0)
536+ let bQ = valueOrErrorMessage(getInteger(F(z, bf, bI)), Q((((("processVoteINTERNAL " + bG) + " ") + P) + ": no previous vote")))
537+ let bu = valueOrElse(getInteger(this, D(bf, i)), 0)
538+ let K = an(B, C)
539+ let bR = valueOrElse(getInteger(J(K, bI)), 0)
540+ let bk = addressFromStringValue(aa(this, o))
541+ let bS = valueOrElse(getInteger(bk, O(K, P)), 0)
542+ let bT = if ((bS == 0))
525543 then nil
526- else [IntegerEntry(J(K, bA), (bJ + bI))]
527- let bs = if ((bG > 0))
528- then fraction(bI, bq, bG)
544+ else [IntegerEntry(J(K, bI), (bR + bQ))]
545+ let bA = if ((bO > 0))
546+ then fraction(bQ, by, bO)
529547 else 0
530- let bM = if (if ((bs > 0))
531- then bt
548+ let bU = if (if ((bA > 0))
549+ then bB
532550 else false)
533- then [IntegerEntry(F(z, aX, i), bs), IntegerEntry(N(i), (bp + bs)), IntegerEntry(H(z, i), (bH + bs)), IntegerEntry(D(aX, i), (bm + bs))]
534- else aL(av(z), P)
535- $Tuple2((bM ++ bL), unit)
551+ then [IntegerEntry(F(z, bf, i), bA), IntegerEntry(N(i), (bx + bA)), IntegerEntry(H(z, i), (bP + bA)), IntegerEntry(D(bf, i), (bu + bA))]
552+ else aT(aD(z), P)
553+ $Tuple2((bU ++ bT), unit)
536554 }
537555 else throw("Strict value is not equal to itself.")
538556 }
541559
542560
543561
544-@Callable(aT)
545-func processPoolINTERNAL (by,bN) = {
546- let bz = aW(aT)
547- if ((bz == bz))
562+@Callable(bb)
563+func processPoolINTERNAL (bG,bV) = {
564+ let bH = be(bb)
565+ if ((bH == bH))
548566 then {
549- let bO = {
550- let bP = ac(this, j)
551- if (bN)
552- then bP
553- else (bP - 1)
567+ let bW = {
568+ let bX = ac(this, j)
569+ if (bV)
570+ then bX
571+ else (bX - 1)
554572 }
555- let bE = if ((bO >= 0))
573+ let bM = if ((bW >= 0))
556574 then true
557575 else S("processPoolINTERNAL: invalid target epoch")
558- if ((bE == bE))
576+ if ((bM == bM))
559577 then {
560- let z = ae(by)
561- let bQ = z
562- let B = bQ._1
563- let C = bQ._2
564- let bc = addressFromStringValue(aa(this, o))
565- let ao = addressFromStringValue(aa(this, m))
566- let ar = ag(B, C)
567- let bR = {
568- let ab = invoke(bc, "usersListTraversal", [ar], nil)
578+ let z = ae(bG)
579+ let bY = z
580+ let B = bY._1
581+ let C = bY._2
582+ let bk = addressFromStringValue(aa(this, o))
583+ let ax = an(B, C)
584+ let bZ = {
585+ let ab = invoke(bk, "usersListTraversal", [ax], nil)
569586 if ($isInstanceOf(ab, "Boolean"))
570587 then ab
571588 else throw(($getType(ab) + " couldn't be cast to Boolean"))
572589 }
573- if ((bR == bR))
574- then if (bR)
590+ if ((bZ == bZ))
591+ then if (bZ)
575592 then $Tuple2(nil, true)
576593 else {
577- let bt = as(z)
578- let bp = valueOrElse(getInteger(this, N(bO)), 0)
579- let bH = valueOrElse(getInteger(this, H(z, bO)), 0)
580- let bS = if (if ((bp == 0))
594+ let bB = ay(z)
595+ let bx = valueOrElse(getInteger(this, N(bW)), 0)
596+ let bP = valueOrElse(getInteger(this, H(z, bW)), 0)
597+ let ca = if (if ((bx == 0))
581598 then true
582- else !(bt))
599+ else !(bB))
583600 then 0
584- else fraction(bH, b, bp)
585- let bT = invoke(ao, "modifyWeight", [ar, bS], nil)
586- if ((bT == bT))
601+ else fraction(bP, b, bx)
602+ let cb = invoke(ag, "modifyWeight", [ax, ca], nil)
603+ if ((cb == cb))
587604 then {
588- let bU = if (if (bt)
605+ let cc = if (if (bB)
589606 then true
590- else bN)
607+ else bV)
591608 then nil
592- else ([DeleteEntry(y(z))] ++ aL(au, by))
593- $Tuple2(([IntegerEntry(L(z, bO), bS)] ++ bU), false)
609+ else ([DeleteEntry(y(z))] ++ aT(aC, bG))
610+ $Tuple2(([IntegerEntry(L(z, bW), ca)] ++ cc), false)
594611 }
595612 else throw("Strict value is not equal to itself.")
596613 }
603620
604621
605622
606-@Callable(aT)
623+@Callable(bb)
607624 func finalizeHelper () = {
608- let bN = valueOrElse(getBoolean(v), false)
625+ let bV = valueOrElse(getBoolean(v), false)
609626 let i = valueOrElse(getInteger(this, j), 0)
610- let bV = (i - 1)
611- let bj = ac(this, w(i))
612- let bd = ac(this, f)
613- let bk = (bj + bd)
614- let bl = getInteger(this, p)
615- if (if (if ((height >= bk))
616- then (bl == unit)
627+ let cd = (i - 1)
628+ let br = ac(this, w(i))
629+ let bl = ac(this, f)
630+ let bs = (br + bl)
631+ let bt = getInteger(this, p)
632+ if (if (if ((height >= bs))
633+ then (bt == unit)
617634 else false)
618- then !(bN)
635+ then !(bV)
619636 else false)
620637 then {
621- let bW = (i + 1)
622- let bX = getInteger(this, g)
623- let bY = {
624- let X = bX
638+ let ce = (i + 1)
639+ let cf = getInteger(this, g)
640+ let cg = {
641+ let X = cf
625642 if ($isInstanceOf(X, "Int"))
626643 then {
627- let bw = X
628-[IntegerEntry(f, bw), DeleteEntry(g)]
644+ let bE = X
645+[IntegerEntry(f, bE), DeleteEntry(g)]
629646 }
630647 else if ($isInstanceOf(X, "Unit"))
631648 then nil
632649 else throw("Match error")
633650 }
634- $Tuple2(([IntegerEntry(w(bW), height), IntegerEntry(s, height), IntegerEntry(j, bW), IntegerEntry(p, d), IntegerEntry(h(i), bd)] ++ bY), true)
651+ $Tuple2(([IntegerEntry(w(ce), height), IntegerEntry(s, height), IntegerEntry(j, ce), IntegerEntry(p, d), IntegerEntry(h(i), bl)] ++ cg), true)
635652 }
636- else if (if (bN)
637- then (bl == unit)
653+ else if (if (bV)
654+ then (bt == unit)
638655 else false)
639656 then $Tuple2([IntegerEntry(p, e)], true)
640- else if ((bl == unit))
657+ else if ((bt == unit))
641658 then $Tuple2(nil, false)
642- else if ((bl == d))
659+ else if ((bt == d))
643660 then {
644- let bZ = getString(q)
645- let ca = getString(r)
646- let X = bZ
661+ let ch = getString(q)
662+ let ci = getString(r)
663+ let X = ch
647664 if ($isInstanceOf(X, "Unit"))
648665 then {
649- let cb = getString(ax(au))
650- if ($isInstanceOf(cb, "Unit"))
666+ let cj = getString(aF(aC))
667+ if ($isInstanceOf(cj, "Unit"))
651668 then $Tuple2([IntegerEntry(p, e), DeleteEntry(q), DeleteEntry(r)], true)
652- else if ($isInstanceOf(cb, "String"))
669+ else if ($isInstanceOf(cj, "String"))
653670 then {
654- let cc = cb
655- $Tuple2([StringEntry(q, cc)], true)
671+ let ck = cj
672+ $Tuple2([StringEntry(q, ck)], true)
656673 }
657674 else throw("Match error")
658675 }
659676 else if ($isInstanceOf(X, "String"))
660677 then {
661- let by = X
662- let z = ae(by)
663- let cd = {
664- let cb = ca
665- if ($isInstanceOf(cb, "Unit"))
666- then getString(ax(av(z)))
667- else if ($isInstanceOf(cb, "String"))
678+ let bG = X
679+ let z = ae(bG)
680+ let cl = {
681+ let cj = ci
682+ if ($isInstanceOf(cj, "Unit"))
683+ then getString(aF(aD(z)))
684+ else if ($isInstanceOf(cj, "String"))
668685 then {
669- let ce = cb
670- let cf = getString(aD(av(z), ce))
671- if ((cf == cf))
686+ let cm = cj
687+ let cn = getString(aL(aD(z), cm))
688+ if ((cn == cn))
672689 then {
673- let cg = invoke(this, "processVoteINTERNAL", [by, ce], nil)
674- if ((cg == cg))
675- then cf
690+ let co = invoke(this, "processVoteINTERNAL", [bG, cm], nil)
691+ if ((co == co))
692+ then cn
676693 else throw("Strict value is not equal to itself.")
677694 }
678695 else throw("Strict value is not equal to itself.")
679696 }
680697 else throw("Match error")
681698 }
682- let cb = cd
683- if ($isInstanceOf(cb, "Unit"))
699+ let cj = cl
700+ if ($isInstanceOf(cj, "Unit"))
684701 then {
685- let ch = getString(aD(au, by))
686- let ci = ch
687- if ($isInstanceOf(ci, "Unit"))
702+ let cp = getString(aL(aC, bG))
703+ let cq = cp
704+ if ($isInstanceOf(cq, "Unit"))
688705 then $Tuple2([IntegerEntry(p, e), DeleteEntry(q), DeleteEntry(r)], true)
689- else if ($isInstanceOf(ci, "String"))
706+ else if ($isInstanceOf(cq, "String"))
690707 then {
691- let aP = ci
692- $Tuple2([StringEntry(q, aP), DeleteEntry(r)], true)
708+ let aX = cq
709+ $Tuple2([StringEntry(q, aX), DeleteEntry(r)], true)
693710 }
694711 else throw("Match error")
695712 }
696- else if ($isInstanceOf(cb, "String"))
713+ else if ($isInstanceOf(cj, "String"))
697714 then {
698- let cj = cb
699- $Tuple2([StringEntry(r, cj)], true)
715+ let cr = cj
716+ $Tuple2([StringEntry(r, cr)], true)
700717 }
701718 else throw("Match error")
702719 }
703720 else throw("Match error")
704721 }
705- else if ((bl == e))
722+ else if ((bt == e))
706723 then {
707- let bZ = getString(q)
708- let X = bZ
724+ let ch = getString(q)
725+ let X = ch
709726 if ($isInstanceOf(X, "Unit"))
710727 then {
711- let cb = getString(ax(au))
712- if ($isInstanceOf(cb, "Unit"))
728+ let cj = getString(aF(aC))
729+ if ($isInstanceOf(cj, "Unit"))
713730 then {
714- let bM = if (bN)
731+ let bU = if (bV)
715732 then [DeleteEntry(p), DeleteEntry(v)]
716- else [DeleteEntry(p), BooleanEntry(x(bV), true), IntegerEntry(t, i), IntegerEntry(u, bj)]
717- $Tuple2(bM, true)
733+ else [DeleteEntry(p), BooleanEntry(x(cd), true), IntegerEntry(t, i), IntegerEntry(u, br)]
734+ let cs = aA()
735+ if ((cs == cs))
736+ then $Tuple2(bU, true)
737+ else throw("Strict value is not equal to itself.")
718738 }
719- else if ($isInstanceOf(cb, "String"))
739+ else if ($isInstanceOf(cj, "String"))
720740 then {
721- let ck = cb
722- $Tuple2([StringEntry(q, ck)], true)
741+ let ct = cj
742+ $Tuple2([StringEntry(q, ct)], true)
723743 }
724744 else throw("Match error")
725745 }
726746 else if ($isInstanceOf(X, "String"))
727747 then {
728- let by = X
729- let ch = getString(aD(au, by))
730- if ((ch == ch))
748+ let bG = X
749+ let cp = getString(aL(aC, bG))
750+ if ((cp == cp))
731751 then {
732- let bR = {
733- let ab = invoke(this, "processPoolINTERNAL", [by, bN], nil)
752+ let bZ = {
753+ let ab = invoke(this, "processPoolINTERNAL", [bG, bV], nil)
734754 if ($isInstanceOf(ab, "Boolean"))
735755 then ab
736756 else throw(($getType(ab) + " couldn't be cast to Boolean"))
737757 }
738- if ((bR == bR))
739- then if (bR)
758+ if ((bZ == bZ))
759+ then if (bZ)
740760 then $Tuple2(nil, true)
741761 else {
742- let cb = ch
743- if ($isInstanceOf(cb, "Unit"))
762+ let cj = cp
763+ if ($isInstanceOf(cj, "Unit"))
744764 then {
745- let bM = if (bN)
765+ let bU = if (bV)
746766 then [DeleteEntry(p), DeleteEntry(v), DeleteEntry(q)]
747- else [DeleteEntry(p), BooleanEntry(x(bV), true), IntegerEntry(t, i), IntegerEntry(u, bj), DeleteEntry(q)]
748- $Tuple2(bM, true)
767+ else [DeleteEntry(p), BooleanEntry(x(cd), true), IntegerEntry(t, i), IntegerEntry(u, br), DeleteEntry(q)]
768+ let cs = aA()
769+ if ((cs == cs))
770+ then $Tuple2(bU, true)
771+ else throw("Strict value is not equal to itself.")
749772 }
750- else if ($isInstanceOf(cb, "String"))
773+ else if ($isInstanceOf(cj, "String"))
751774 then {
752- let ck = cb
753- $Tuple2([StringEntry(q, ck)], true)
775+ let ct = cj
776+ $Tuple2([StringEntry(q, ct)], true)
754777 }
755778 else throw("Match error")
756779 }
765788
766789
767790
768-@Callable(aT)
769-func finalizeWrapper (cl) = {
770- let cm = {
791+@Callable(bb)
792+func finalizeWrapper (cu) = {
793+ let cv = {
771794 let ab = invoke(this, "finalizeHelper", nil, nil)
772795 if ($isInstanceOf(ab, "Boolean"))
773796 then ab
774797 else throw(($getType(ab) + " couldn't be cast to Boolean"))
775798 }
776- if ((cm == cm))
777- then if (!(cm))
778- then if ((cl == 0))
799+ if ((cv == cv))
800+ then if (!(cv))
801+ then if ((cu == 0))
779802 then S("Current voting is not over yet")
780803 else $Tuple2(nil, unit)
781804 else {
782- let cn = valueOrElse(getInteger(this, k), c)
783- if ((cn > cl))
805+ let cw = valueOrElse(getInteger(this, k), c)
806+ if ((cw > cu))
784807 then {
785- let co = invoke(this, "finalizeWrapper", [(cl + 1)], nil)
786- if ((co == co))
808+ let cx = invoke(this, "finalizeWrapper", [(cu + 1)], nil)
809+ if ((cx == cx))
787810 then $Tuple2(nil, unit)
788811 else throw("Strict value is not equal to itself.")
789812 }
794817
795818
796819
797-@Callable(aT)
820+@Callable(bb)
798821 func finalize () = {
799- let co = invoke(this, "finalizeWrapper", [0], nil)
800- if ((co == co))
822+ let cx = invoke(this, "finalizeWrapper", [0], nil)
823+ if ((cx == cx))
801824 then $Tuple2(nil, unit)
802825 else throw("Strict value is not equal to itself.")
803826 }
804827
805828
806829
807-@Callable(aT)
808-func containsNodeREADONLY (ay,aC) = $Tuple2(nil, aE(ay, aC))
830+@Callable(bb)
831+func containsNodeREADONLY (aG,aK) = $Tuple2(nil, aM(aG, aK))
809832
810833
811834
812-@Callable(aT)
813-func insertNode (ay,aC) = {
814- let bz = aV(aT)
815- if ((bz == bz))
816- then $Tuple2(aI(ay, aC), unit)
835+@Callable(bb)
836+func insertNode (aG,aK) = {
837+ let bH = bd(bb)
838+ if ((bH == bH))
839+ then $Tuple2(aQ(aG, aK), unit)
817840 else throw("Strict value is not equal to itself.")
818841 }
819842
820843
821844
822-@Callable(aT)
823-func deleteNode (ay,aC) = {
824- let bz = aV(aT)
825- if ((bz == bz))
826- then $Tuple2(aL(ay, aC), unit)
845+@Callable(bb)
846+func deleteNode (aG,aK) = {
847+ let bH = bd(bb)
848+ if ((bH == bH))
849+ then $Tuple2(aT(aG, aK), unit)
827850 else throw("Strict value is not equal to itself.")
828851 }
829852
830853
831-@Verifier(cp)
832-func cq () = {
833- let cr = {
834- let X = aQ()
854+@Verifier(cy)
855+func cz () = {
856+ let cA = {
857+ let X = aY()
835858 if ($isInstanceOf(X, "ByteVector"))
836859 then {
837- let aU = X
838- aU
860+ let bc = X
861+ bc
839862 }
840863 else if ($isInstanceOf(X, "Unit"))
841- then cp.senderPublicKey
864+ then cy.senderPublicKey
842865 else throw("Match error")
843866 }
844- sigVerify(cp.bodyBytes, cp.proofs[0], cr)
867+ sigVerify(cy.bodyBytes, cy.proofs[0], cA)
845868 }
846869
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "__"
55
66 let b = 100000000
77
88 let c = 10
99
1010 let d = 0
1111
1212 let e = 1
1313
1414 let f = makeString(["%s", "epochLength"], a)
1515
1616 let g = makeString(["%s%s", "epochLength__new"], a)
1717
1818 func h (i) = makeString(["%s%d", "epochLength", toString(i)], a)
1919
2020
2121 let j = makeString(["%s", "currentEpoch"], a)
2222
2323 let k = makeString(["%s", "maxDepth"], a)
2424
2525 let l = makeString(["%s", "votingEmissionCandidateContract"], a)
2626
2727 let m = makeString(["%s", "factoryContract"], a)
2828
2929 let n = makeString(["%s", "boostingContract"], a)
3030
3131 let o = makeString(["%s", "stakingContract"], a)
3232
3333 let p = makeString(["%s", "finalizationStage"], a)
3434
3535 let q = makeString(["%s", "nextPool"], a)
3636
3737 let r = makeString(["%s", "nextUser"], a)
3838
3939 let s = makeString(["%s", "startHeight"], a)
4040
4141 let t = makeString(["%s", "currentEpochUi"], a)
4242
4343 let u = makeString(["%s", "startHeightUi"], a)
4444
4545 let v = makeString(["%s", "force"], a)
4646
4747 func w (i) = makeString(["%s%d", "startHeight", toString(i)], a)
4848
4949
5050 func x (i) = makeString(["%s%d", "finalized", toString(i)], a)
5151
5252
5353 func y (z) = {
5454 let A = z
5555 let B = A._1
5656 let C = A._2
5757 makeString(["%s%s%s", "inList", B, C], a)
5858 }
5959
6060
6161 func D (E,i) = makeString(["%s%s%d", "used", toString(E), toString(i)], a)
6262
6363
6464 func F (z,E,i) = {
6565 let G = z
6666 let B = G._1
6767 let C = G._2
6868 makeString(["%s%s%s%s%d", "vote", B, C, toString(E), toString(i)], a)
6969 }
7070
7171
7272 func H (z,i) = {
7373 let I = z
7474 let B = I._1
7575 let C = I._2
7676 makeString(["%s%s%s%d", "votingResult", B, C, toString(i)], a)
7777 }
7878
7979
8080 func J (K,i) = makeString(["%s%s%d", "votingResultStaked", K, toString(i)], a)
8181
8282
8383 func L (z,i) = {
8484 let M = z
8585 let B = M._1
8686 let C = M._2
8787 makeString(["%s%s%s%d", "poolShare", B, C, toString(i)], a)
8888 }
8989
9090
9191 func N (i) = makeString(["%s%d", "totalVotes", toString(i)], a)
9292
9393
9494 func O (K,P) = makeString(["%s%s%s", "staked", P, K], a)
9595
9696
9797 func Q (R) = makeString(["voting_emission.ride:", R], " ")
9898
9999
100100 func S (R) = throw(Q(R))
101101
102102
103103 func T (E,U,V) = {
104104 let W = Q(makeString(["mandatory ", toString(E), ".", U, " is not defined"], ""))
105105 valueOrErrorMessage({
106106 let X = V
107107 if ($isInstanceOf(X, "String"))
108108 then {
109109 let Y = X
110110 getString(E, U)
111111 }
112112 else if ($isInstanceOf(X, "Int"))
113113 then {
114114 let Z = X
115115 getInteger(E, U)
116116 }
117117 else S("invalid entry type")
118118 }, W)
119119 }
120120
121121
122122 func aa (E,U) = {
123123 let ab = T(E, U, "")
124124 if ($isInstanceOf(ab, "String"))
125125 then ab
126126 else throw(($getType(ab) + " couldn't be cast to String"))
127127 }
128128
129129
130130 func ac (E,U) = {
131131 let ab = T(E, U, 0)
132132 if ($isInstanceOf(ab, "Int"))
133133 then ab
134134 else throw(($getType(ab) + " couldn't be cast to Int"))
135135 }
136136
137137
138138 func ad (z) = ((z._1 + a) + z._2)
139139
140140
141141 func ae (Y) = {
142142 let af = split(Y, a)
143143 if ((size(af) == 2))
144144 then $Tuple2(af[0], af[1])
145145 else S("invalid pool string")
146146 }
147147
148148
149-func ag (B,C) = {
150- func ah (ai) = ("%s%s%s__mappings__baseAsset2internalId__" + ai)
149+let ag = addressFromStringValue(aa(this, m))
151150
152- func aj (ak,al) = (((("%d%d%s%s__" + toString(ak)) + "__") + toString(al)) + "__mappings__poolAssets2PoolContract")
151+let ah = 10
153152
154- func am (an) = (("%s%s%s__" + an) + "__mappings__poolContract2LpAsset")
153+func ai () = "%s__factoryConfig"
155154
156- let ao = addressFromStringValue(aa(this, m))
157- let ap = ac(ao, ah(B))
158- let aq = ac(ao, ah(C))
159- let an = aa(ao, aj(ap, aq))
160- let ar = aa(ao, am(an))
161- ar
155+
156+func aj (ak) = split(aa(ak, ai()), a)
157+
158+
159+func al (am) = addressFromStringValue(am[ah])
160+
161+
162+func an (B,C) = {
163+ func ao (ap) = ("%s%s%s__mappings__baseAsset2internalId__" + ap)
164+
165+ func aq (ar,as) = (((("%d%d%s%s__" + toString(ar)) + "__") + toString(as)) + "__mappings__poolAssets2PoolContract")
166+
167+ func at (au) = (("%s%s%s__" + au) + "__mappings__poolContract2LpAsset")
168+
169+ let av = ac(ag, ao(B))
170+ let aw = ac(ag, ao(C))
171+ let au = aa(ag, aq(av, aw))
172+ let ax = aa(ag, at(au))
173+ ax
162174 }
163175
164176
165-func as (z) = {
166- let at = z
167- let B = at._1
168- let C = at._2
169- let ao = addressFromStringValue(aa(this, m))
170- let ab = invoke(ao, "checkWxEmissionPoolLabel", [B, C], nil)
177+func ay (z) = {
178+ let az = z
179+ let B = az._1
180+ let C = az._2
181+ let ab = invoke(ag, "checkWxEmissionPoolLabel", [B, C], nil)
171182 if ($isInstanceOf(ab, "Boolean"))
172183 then ab
173184 else throw(($getType(ab) + " couldn't be cast to Boolean"))
174185 }
175186
176187
177-let au = "pools"
188+func aA () = {
189+ let am = aj(ag)
190+ let aB = al(am)
191+ invoke(aB, "deposit", nil, nil)
192+ }
178193
179-func av (z) = {
180- let aw = z
181- let B = aw._1
182- let C = aw._2
194+
195+let aC = "pools"
196+
197+func aD (z) = {
198+ let aE = z
199+ let B = aE._1
200+ let C = aE._2
183201 makeString(["votes", B, C], a)
184202 }
185203
186204
187-func ax (ay) = {
188- let az = if ((ay == au))
205+func aF (aG) = {
206+ let aH = if ((aG == aC))
189207 then "%s%s"
190208 else "%s%s%s%s"
191- makeString([az, ay, "head"], a)
209+ makeString([aH, aG, "head"], a)
192210 }
193211
194212
195-func aA (ay) = {
196- let az = if ((ay == au))
213+func aI (aG) = {
214+ let aH = if ((aG == aC))
197215 then "%s%s"
198216 else "%s%s%s%s"
199- makeString([az, ay, "size"], a)
217+ makeString([aH, aG, "size"], a)
200218 }
201219
202220
203-func aB (ay,aC) = {
204- let az = if ((ay == au))
221+func aJ (aG,aK) = {
222+ let aH = if ((aG == aC))
205223 then "%s%s%s%s"
206224 else "%s%s%s%s%s"
207- makeString([az, ay, aC, "prev"], a)
225+ makeString([aH, aG, aK, "prev"], a)
208226 }
209227
210228
211-func aD (ay,aC) = {
212- let az = if ((ay == au))
229+func aL (aG,aK) = {
230+ let aH = if ((aG == aC))
213231 then "%s%s%s%s"
214232 else "%s%s%s%s%s"
215- makeString([az, ay, aC, "next"], a)
233+ makeString([aH, aG, aK, "next"], a)
216234 }
217235
218236
219-func aE (ay,aC) = {
220- let aF = getString(this, ax(ay))
221- let aG = getString(this, aB(ay, aC))
222- let aH = getString(this, aD(ay, aC))
223- if (if ((aC == valueOrElse(aF, "")))
237+func aM (aG,aK) = {
238+ let aN = getString(this, aF(aG))
239+ let aO = getString(this, aJ(aG, aK))
240+ let aP = getString(this, aL(aG, aK))
241+ if (if ((aK == valueOrElse(aN, "")))
224242 then true
225- else (aG != unit))
243+ else (aO != unit))
226244 then true
227- else (aH != unit)
245+ else (aP != unit)
228246 }
229247
230248
231-func aI (ay,aC) = {
232- let aF = getString(this, ax(ay))
233- let aJ = valueOrElse(getInteger(this, aA(ay)), 0)
234- let aK = if (!(aE(ay, aC)))
249+func aQ (aG,aK) = {
250+ let aN = getString(this, aF(aG))
251+ let aR = valueOrElse(getInteger(this, aI(aG)), 0)
252+ let aS = if (!(aM(aG, aK)))
235253 then true
236254 else S("Node exists")
237- if ((aK == aK))
238- then (([IntegerEntry(aA(ay), (aJ + 1))] ++ (if ((aF != unit))
239- then [StringEntry(aD(ay, aC), value(aF)), StringEntry(aB(ay, value(aF)), aC)]
240- else nil)) ++ [StringEntry(ax(ay), aC)])
255+ if ((aS == aS))
256+ then (([IntegerEntry(aI(aG), (aR + 1))] ++ (if ((aN != unit))
257+ then [StringEntry(aL(aG, aK), value(aN)), StringEntry(aJ(aG, value(aN)), aK)]
258+ else nil)) ++ [StringEntry(aF(aG), aK)])
241259 else throw("Strict value is not equal to itself.")
242260 }
243261
244262
245-func aL (ay,aC) = {
246- let aF = getString(this, ax(ay))
247- let aJ = valueOrElse(getInteger(this, aA(ay)), 0)
248- let aG = getString(this, aB(ay, aC))
249- let aH = getString(this, aD(ay, aC))
250- ([IntegerEntry(aA(ay), (aJ - 1))] ++ (if (if ((aG != unit))
251- then (aH != unit)
263+func aT (aG,aK) = {
264+ let aN = getString(this, aF(aG))
265+ let aR = valueOrElse(getInteger(this, aI(aG)), 0)
266+ let aO = getString(this, aJ(aG, aK))
267+ let aP = getString(this, aL(aG, aK))
268+ ([IntegerEntry(aI(aG), (aR - 1))] ++ (if (if ((aO != unit))
269+ then (aP != unit)
252270 else false)
253- then [StringEntry(aD(ay, value(aG)), value(aH)), StringEntry(aB(ay, value(aH)), value(aG)), DeleteEntry(aB(ay, aC)), DeleteEntry(aD(ay, aC))]
254- else if ((aH != unit))
255- then [StringEntry(ax(ay), value(aH)), DeleteEntry(aD(ay, aC)), DeleteEntry(aB(ay, value(aH)))]
256- else if ((aG != unit))
257- then [DeleteEntry(aB(ay, aC)), DeleteEntry(aD(ay, value(aG)))]
258- else if ((aC == valueOrElse(aF, "")))
259- then [DeleteEntry(ax(ay))]
260- else S(((("invalid node: " + ay) + ".") + aC))))
271+ then [StringEntry(aL(aG, value(aO)), value(aP)), StringEntry(aJ(aG, value(aP)), value(aO)), DeleteEntry(aJ(aG, aK)), DeleteEntry(aL(aG, aK))]
272+ else if ((aP != unit))
273+ then [StringEntry(aF(aG), value(aP)), DeleteEntry(aL(aG, aK)), DeleteEntry(aJ(aG, value(aP)))]
274+ else if ((aO != unit))
275+ then [DeleteEntry(aJ(aG, aK)), DeleteEntry(aL(aG, value(aO)))]
276+ else if ((aK == valueOrElse(aN, "")))
277+ then [DeleteEntry(aF(aG))]
278+ else S(((("invalid node: " + aG) + ".") + aK))))
261279 }
262280
263281
264-func aM () = "%s__managerVaultAddress"
282+func aU () = "%s__managerVaultAddress"
265283
266284
267-func aN () = "%s__managerPublicKey"
285+func aV () = "%s__managerPublicKey"
268286
269287
270-func aO () = {
271- let X = getString(aM())
288+func aW () = {
289+ let X = getString(aU())
272290 if ($isInstanceOf(X, "String"))
273291 then {
274- let aP = X
275- addressFromStringValue(aP)
292+ let aX = X
293+ addressFromStringValue(aX)
276294 }
277295 else this
278296 }
279297
280298
281-func aQ () = {
282- let aR = aO()
283- let X = getString(aR, aN())
299+func aY () = {
300+ let aZ = aW()
301+ let X = getString(aZ, aV())
284302 if ($isInstanceOf(X, "String"))
285303 then {
286- let aP = X
287- fromBase58String(aP)
304+ let aX = X
305+ fromBase58String(aX)
288306 }
289307 else if ($isInstanceOf(X, "Unit"))
290308 then unit
291309 else throw("Match error")
292310 }
293311
294312
295-func aS (aT) = {
296- let X = aQ()
313+func ba (bb) = {
314+ let X = aY()
297315 if ($isInstanceOf(X, "ByteVector"))
298316 then {
299- let aU = X
300- (aT.callerPublicKey == aU)
317+ let bc = X
318+ (bb.callerPublicKey == bc)
301319 }
302320 else if ($isInstanceOf(X, "Unit"))
303- then (aT.caller == this)
321+ then (bb.caller == this)
304322 else throw("Match error")
305323 }
306324
307325
308-func aV (aT) = if (aS(aT))
326+func bd (bb) = if (ba(bb))
309327 then true
310328 else throw("permission denied")
311329
312330
313-func aW (aT) = if ((aT.caller == this))
331+func be (bb) = if ((bb.caller == this))
314332 then true
315333 else throw("permission denied")
316334
317335
318-@Callable(aT)
319-func getUserGwxAmountAtHeight (aX,aY) = {
320- let aZ = valueOrErrorMessage(addressFromString(aa(this, n)), Q("invalid boosting contract address"))
336+@Callable(bb)
337+func getUserGwxAmountAtHeight (bf,bg) = {
338+ let bh = valueOrErrorMessage(addressFromString(aa(this, n)), Q("invalid boosting contract address"))
321339 $Tuple2(nil, {
322- let ab = invoke(aZ, "getUserGwxAmountAtHeightREADONLY", [aX, aY], nil)
340+ let ab = invoke(bh, "getUserGwxAmountAtHeightREADONLY", [bf, bg], nil)
323341 if ($isInstanceOf(ab, "Int"))
324342 then ab
325343 else throw(($getType(ab) + " couldn't be cast to Int"))
326344 })
327345 }
328346
329347
330348
331-@Callable(aT)
332-func constructor (ao,ba,bb,bc,bd) = {
333- let be = [aV(aT), if ((addressFromString(ao) != unit))
349+@Callable(bb)
350+func constructor (ag,bi,bj,bk,bl) = {
351+ let bm = [bd(bb), if ((addressFromString(ag) != unit))
334352 then true
335- else "invalid factory contract address", if ((addressFromString(ba) != unit))
353+ else "invalid factory contract address", if ((addressFromString(bi) != unit))
336354 then true
337- else "invalid voting emission candidate contract address", if ((addressFromString(bb) != unit))
355+ else "invalid voting emission candidate contract address", if ((addressFromString(bj) != unit))
338356 then true
339- else "invalid boosting contract address", if ((addressFromString(bc) != unit))
357+ else "invalid boosting contract address", if ((addressFromString(bk) != unit))
340358 then true
341- else "invalid staking contract address", if ((bd > 0))
359+ else "invalid staking contract address", if ((bl > 0))
342360 then true
343361 else S("invalid epoch length")]
344- if ((be == be))
345- then $Tuple2([StringEntry(m, ao), StringEntry(l, ba), StringEntry(n, bb), StringEntry(o, bc), IntegerEntry(f, bd)], unit)
362+ if ((bm == bm))
363+ then $Tuple2([StringEntry(m, ag), StringEntry(l, bi), StringEntry(n, bj), StringEntry(o, bk), IntegerEntry(f, bl)], unit)
346364 else throw("Strict value is not equal to itself.")
347365 }
348366
349367
350368
351-@Callable(aT)
369+@Callable(bb)
352370 func create (B,C) = {
353- let be = [if ((toBase58String(aT.caller.bytes) == valueOrElse(getString(this, l), "")))
371+ let bm = [if ((toBase58String(bb.caller.bytes) == valueOrElse(getString(this, l), "")))
354372 then true
355- else aV(aT)]
356- if ((be == be))
373+ else bd(bb)]
374+ if ((bm == bm))
357375 then {
358376 let z = $Tuple2(B, C)
359- let bf = ([BooleanEntry(y(z), true)] ++ aI(au, ad(z)))
360- let bg = (getInteger(this, j) == unit)
361- let bh = if (bg)
377+ let bn = ([BooleanEntry(y(z), true)] ++ aQ(aC, ad(z)))
378+ let bo = (getInteger(this, j) == unit)
379+ let bp = if (bo)
362380 then {
363381 let i = 0
364382 [IntegerEntry(j, i), IntegerEntry(w(i), height), IntegerEntry(s, height), IntegerEntry(t, i), IntegerEntry(u, height)]
365383 }
366384 else nil
367- $Tuple2((bf ++ bh), unit)
385+ $Tuple2((bn ++ bp), unit)
368386 }
369387 else throw("Strict value is not equal to itself.")
370388 }
371389
372390
373391
374-@Callable(aT)
375-func vote (B,C,bi) = {
392+@Callable(bb)
393+func vote (B,C,bq) = {
376394 let z = $Tuple2(B, C)
377395 let i = valueOrElse(getInteger(this, j), 0)
378- let bj = ac(this, w(i))
379- let bd = ac(this, f)
380- let bk = (bj + bd)
381- let bl = getInteger(this, p)
382- let bm = valueOrElse(getInteger(this, D(aT.caller, i)), 0)
383- let bn = valueOrElse(getInteger(this, F(z, aT.caller, i)), 0)
384- let bo = valueOrElse(getInteger(this, H(z, i)), 0)
385- let bp = valueOrElse(getInteger(this, N(i)), 0)
386- let bq = {
387- let ab = invoke(this, "getUserGwxAmountAtHeight", [toBase58String(aT.caller.bytes), bk], nil)
396+ let br = ac(this, w(i))
397+ let bl = ac(this, f)
398+ let bs = (br + bl)
399+ let bt = getInteger(this, p)
400+ let bu = valueOrElse(getInteger(this, D(bb.caller, i)), 0)
401+ let bv = valueOrElse(getInteger(this, F(z, bb.caller, i)), 0)
402+ let bw = valueOrElse(getInteger(this, H(z, i)), 0)
403+ let bx = valueOrElse(getInteger(this, N(i)), 0)
404+ let by = {
405+ let ab = invoke(this, "getUserGwxAmountAtHeight", [toBase58String(bb.caller.bytes), bs], nil)
388406 if ($isInstanceOf(ab, "Int"))
389407 then ab
390408 else throw(($getType(ab) + " couldn't be cast to Int"))
391409 }
392- let br = (bq - bm)
393- let bs = (bn + bi)
394- let bt = as(z)
395- let be = [if ((getBoolean(y(z)) != unit))
410+ let bz = (by - bu)
411+ let bA = (bv + bq)
412+ let bB = ay(z)
413+ let bm = [if ((getBoolean(y(z)) != unit))
396414 then true
397- else S("invalid assets"), if ((bk > height))
415+ else S("invalid assets"), if ((bs > height))
398416 then true
399- else S("invalid height"), if ((bl == unit))
417+ else S("invalid height"), if ((bt == unit))
400418 then true
401- else S("finalization in progress"), if ((bq > 0))
419+ else S("finalization in progress"), if ((by > 0))
402420 then true
403- else S("you do not have gWX"), if (if ((bi > 0))
404- then (br >= bi)
421+ else S("you do not have gWX"), if (if ((bq > 0))
422+ then (bz >= bq)
405423 else false)
406424 then true
407- else S("invalid amount"), if (bt)
425+ else S("invalid amount"), if (bB)
408426 then true
409427 else S("pool hasn't WX_EMISSION label")]
410- if ((be == be))
428+ if ((bm == bm))
411429 then {
412- let bu = av(z)
413- let P = toString(aT.caller)
414- let bv = if (aE(bu, P))
430+ let bC = aD(z)
431+ let P = toString(bb.caller)
432+ let bD = if (aM(bC, P))
415433 then nil
416- else aI(bu, P)
417- $Tuple2(([IntegerEntry(D(aT.caller, i), (bm + bi)), IntegerEntry(F(z, aT.caller, i), bs), IntegerEntry(H(z, i), (bo + bi)), IntegerEntry(N(i), (bp + bi))] ++ bv), unit)
434+ else aQ(bC, P)
435+ $Tuple2(([IntegerEntry(D(bb.caller, i), (bu + bq)), IntegerEntry(F(z, bb.caller, i), bA), IntegerEntry(H(z, i), (bw + bq)), IntegerEntry(N(i), (bx + bq))] ++ bD), unit)
418436 }
419437 else throw("Strict value is not equal to itself.")
420438 }
421439
422440
423441
424-@Callable(aT)
442+@Callable(bb)
425443 func cancelVote (B,C) = {
426444 let z = $Tuple2(B, C)
427445 let i = valueOrElse(getInteger(this, j), 0)
428- let bj = ac(this, w(i))
429- let bd = ac(this, f)
430- let bk = (bj + bd)
431- let bl = getInteger(this, p)
432- let bm = valueOrElse(getInteger(this, D(aT.caller, i)), 0)
433- let bn = valueOrElse(getInteger(this, F(z, aT.caller, i)), 0)
434- let bo = valueOrElse(getInteger(this, H(z, i)), 0)
435- let bp = valueOrElse(getInteger(this, N(i)), 0)
436- let be = [if ((getBoolean(y(z)) != unit))
446+ let br = ac(this, w(i))
447+ let bl = ac(this, f)
448+ let bs = (br + bl)
449+ let bt = getInteger(this, p)
450+ let bu = valueOrElse(getInteger(this, D(bb.caller, i)), 0)
451+ let bv = valueOrElse(getInteger(this, F(z, bb.caller, i)), 0)
452+ let bw = valueOrElse(getInteger(this, H(z, i)), 0)
453+ let bx = valueOrElse(getInteger(this, N(i)), 0)
454+ let bm = [if ((getBoolean(y(z)) != unit))
437455 then true
438- else S("invalid assets"), if ((bk > height))
456+ else S("invalid assets"), if ((bs > height))
439457 then true
440- else S("invalid height"), if ((bl == unit))
458+ else S("invalid height"), if ((bt == unit))
441459 then true
442- else S("finalization in progress"), if ((bn > 0))
460+ else S("finalization in progress"), if ((bv > 0))
443461 then true
444462 else S("no vote")]
445- if ((be == be))
463+ if ((bm == bm))
446464 then {
447- let bu = av(z)
448- let P = toString(aT.caller)
449- $Tuple2(([IntegerEntry(D(aT.caller, i), max([(bm - bn), 0])), DeleteEntry(F(z, aT.caller, i)), IntegerEntry(H(z, i), (bo - bn)), IntegerEntry(N(i), (bp - bn))] ++ aL(bu, P)), unit)
465+ let bC = aD(z)
466+ let P = toString(bb.caller)
467+ $Tuple2(([IntegerEntry(D(bb.caller, i), max([(bu - bv), 0])), DeleteEntry(F(z, bb.caller, i)), IntegerEntry(H(z, i), (bw - bv)), IntegerEntry(N(i), (bx - bv))] ++ aT(bC, P)), unit)
450468 }
451469 else throw("Strict value is not equal to itself.")
452470 }
453471
454472
455473
456-@Callable(aT)
457-func setEpochLength (bw) = {
458- let be = [aV(aT), if ((bw > 0))
474+@Callable(bb)
475+func setEpochLength (bE) = {
476+ let bm = [bd(bb), if ((bE > 0))
459477 then true
460478 else S("invalid epoch length")]
461- if ((be == be))
462- then $Tuple2([IntegerEntry(g, bw)], unit)
479+ if ((bm == bm))
480+ then $Tuple2([IntegerEntry(g, bE)], unit)
463481 else throw("Strict value is not equal to itself.")
464482 }
465483
466484
467485
468-@Callable(aT)
469-func setMaxDepth (bx) = {
470- let be = [aV(aT), if ((bx > 0))
486+@Callable(bb)
487+func setMaxDepth (bF) = {
488+ let bm = [bd(bb), if ((bF > 0))
471489 then true
472490 else S("invalid max depth")]
473- if ((be == be))
474- then $Tuple2([IntegerEntry(k, bx)], unit)
491+ if ((bm == bm))
492+ then $Tuple2([IntegerEntry(k, bF)], unit)
475493 else throw("Strict value is not equal to itself.")
476494 }
477495
478496
479497
480-@Callable(aT)
481-func processVoteINTERNAL (by,P) = {
482- let bz = aW(aT)
483- if ((bz == bz))
498+@Callable(bb)
499+func processVoteINTERNAL (bG,P) = {
500+ let bH = be(bb)
501+ if ((bH == bH))
484502 then {
485- let aX = valueOrErrorMessage(addressFromString(P), Q(("processVoteINTERNAL: invalid user address " + P)))
503+ let bf = valueOrErrorMessage(addressFromString(P), Q(("processVoteINTERNAL: invalid user address " + P)))
486504 let i = ac(this, j)
487- let bA = (i - 1)
488- let bd = ac(this, f)
489- let bj = ac(this, w(i))
490- let bk = (bj + bd)
491- let bB = ac(this, w(bA))
492- let bC = ac(this, h(bA))
493- let bD = (bB + bC)
494- let bE = if ((bA >= 0))
505+ let bI = (i - 1)
506+ let bl = ac(this, f)
507+ let br = ac(this, w(i))
508+ let bs = (br + bl)
509+ let bJ = ac(this, w(bI))
510+ let bK = ac(this, h(bI))
511+ let bL = (bJ + bK)
512+ let bM = if ((bI >= 0))
495513 then true
496514 else S("processVoteINTERNAL: invalid previous epoch")
497- if ((bE == bE))
515+ if ((bM == bM))
498516 then {
499- let z = ae(by)
500- let bF = z
501- let B = bF._1
502- let C = bF._2
503- let bt = as(z)
504- let bq = {
505- let ab = invoke(this, "getUserGwxAmountAtHeight", [P, bk], nil)
517+ let z = ae(bG)
518+ let bN = z
519+ let B = bN._1
520+ let C = bN._2
521+ let bB = ay(z)
522+ let by = {
523+ let ab = invoke(this, "getUserGwxAmountAtHeight", [P, bs], nil)
506524 if ($isInstanceOf(ab, "Int"))
507525 then ab
508526 else throw(($getType(ab) + " couldn't be cast to Int"))
509527 }
510- let bG = {
511- let ab = invoke(this, "getUserGwxAmountAtHeight", [P, bD], nil)
528+ let bO = {
529+ let ab = invoke(this, "getUserGwxAmountAtHeight", [P, bL], nil)
512530 if ($isInstanceOf(ab, "Int"))
513531 then ab
514532 else throw(($getType(ab) + " couldn't be cast to Int"))
515533 }
516- let bp = valueOrElse(getInteger(N(i)), 0)
517- let bH = valueOrElse(getInteger(H(z, i)), 0)
518- let bI = valueOrErrorMessage(getInteger(F(z, aX, bA)), Q((((("processVoteINTERNAL " + by) + " ") + P) + ": no previous vote")))
519- let bm = valueOrElse(getInteger(this, D(aX, i)), 0)
520- let K = ag(B, C)
521- let bJ = valueOrElse(getInteger(J(K, bA)), 0)
522- let bc = addressFromStringValue(aa(this, o))
523- let bK = valueOrElse(getInteger(bc, O(K, P)), 0)
524- let bL = if ((bK == 0))
534+ let bx = valueOrElse(getInteger(N(i)), 0)
535+ let bP = valueOrElse(getInteger(H(z, i)), 0)
536+ let bQ = valueOrErrorMessage(getInteger(F(z, bf, bI)), Q((((("processVoteINTERNAL " + bG) + " ") + P) + ": no previous vote")))
537+ let bu = valueOrElse(getInteger(this, D(bf, i)), 0)
538+ let K = an(B, C)
539+ let bR = valueOrElse(getInteger(J(K, bI)), 0)
540+ let bk = addressFromStringValue(aa(this, o))
541+ let bS = valueOrElse(getInteger(bk, O(K, P)), 0)
542+ let bT = if ((bS == 0))
525543 then nil
526- else [IntegerEntry(J(K, bA), (bJ + bI))]
527- let bs = if ((bG > 0))
528- then fraction(bI, bq, bG)
544+ else [IntegerEntry(J(K, bI), (bR + bQ))]
545+ let bA = if ((bO > 0))
546+ then fraction(bQ, by, bO)
529547 else 0
530- let bM = if (if ((bs > 0))
531- then bt
548+ let bU = if (if ((bA > 0))
549+ then bB
532550 else false)
533- then [IntegerEntry(F(z, aX, i), bs), IntegerEntry(N(i), (bp + bs)), IntegerEntry(H(z, i), (bH + bs)), IntegerEntry(D(aX, i), (bm + bs))]
534- else aL(av(z), P)
535- $Tuple2((bM ++ bL), unit)
551+ then [IntegerEntry(F(z, bf, i), bA), IntegerEntry(N(i), (bx + bA)), IntegerEntry(H(z, i), (bP + bA)), IntegerEntry(D(bf, i), (bu + bA))]
552+ else aT(aD(z), P)
553+ $Tuple2((bU ++ bT), unit)
536554 }
537555 else throw("Strict value is not equal to itself.")
538556 }
539557 else throw("Strict value is not equal to itself.")
540558 }
541559
542560
543561
544-@Callable(aT)
545-func processPoolINTERNAL (by,bN) = {
546- let bz = aW(aT)
547- if ((bz == bz))
562+@Callable(bb)
563+func processPoolINTERNAL (bG,bV) = {
564+ let bH = be(bb)
565+ if ((bH == bH))
548566 then {
549- let bO = {
550- let bP = ac(this, j)
551- if (bN)
552- then bP
553- else (bP - 1)
567+ let bW = {
568+ let bX = ac(this, j)
569+ if (bV)
570+ then bX
571+ else (bX - 1)
554572 }
555- let bE = if ((bO >= 0))
573+ let bM = if ((bW >= 0))
556574 then true
557575 else S("processPoolINTERNAL: invalid target epoch")
558- if ((bE == bE))
576+ if ((bM == bM))
559577 then {
560- let z = ae(by)
561- let bQ = z
562- let B = bQ._1
563- let C = bQ._2
564- let bc = addressFromStringValue(aa(this, o))
565- let ao = addressFromStringValue(aa(this, m))
566- let ar = ag(B, C)
567- let bR = {
568- let ab = invoke(bc, "usersListTraversal", [ar], nil)
578+ let z = ae(bG)
579+ let bY = z
580+ let B = bY._1
581+ let C = bY._2
582+ let bk = addressFromStringValue(aa(this, o))
583+ let ax = an(B, C)
584+ let bZ = {
585+ let ab = invoke(bk, "usersListTraversal", [ax], nil)
569586 if ($isInstanceOf(ab, "Boolean"))
570587 then ab
571588 else throw(($getType(ab) + " couldn't be cast to Boolean"))
572589 }
573- if ((bR == bR))
574- then if (bR)
590+ if ((bZ == bZ))
591+ then if (bZ)
575592 then $Tuple2(nil, true)
576593 else {
577- let bt = as(z)
578- let bp = valueOrElse(getInteger(this, N(bO)), 0)
579- let bH = valueOrElse(getInteger(this, H(z, bO)), 0)
580- let bS = if (if ((bp == 0))
594+ let bB = ay(z)
595+ let bx = valueOrElse(getInteger(this, N(bW)), 0)
596+ let bP = valueOrElse(getInteger(this, H(z, bW)), 0)
597+ let ca = if (if ((bx == 0))
581598 then true
582- else !(bt))
599+ else !(bB))
583600 then 0
584- else fraction(bH, b, bp)
585- let bT = invoke(ao, "modifyWeight", [ar, bS], nil)
586- if ((bT == bT))
601+ else fraction(bP, b, bx)
602+ let cb = invoke(ag, "modifyWeight", [ax, ca], nil)
603+ if ((cb == cb))
587604 then {
588- let bU = if (if (bt)
605+ let cc = if (if (bB)
589606 then true
590- else bN)
607+ else bV)
591608 then nil
592- else ([DeleteEntry(y(z))] ++ aL(au, by))
593- $Tuple2(([IntegerEntry(L(z, bO), bS)] ++ bU), false)
609+ else ([DeleteEntry(y(z))] ++ aT(aC, bG))
610+ $Tuple2(([IntegerEntry(L(z, bW), ca)] ++ cc), false)
594611 }
595612 else throw("Strict value is not equal to itself.")
596613 }
597614 else throw("Strict value is not equal to itself.")
598615 }
599616 else throw("Strict value is not equal to itself.")
600617 }
601618 else throw("Strict value is not equal to itself.")
602619 }
603620
604621
605622
606-@Callable(aT)
623+@Callable(bb)
607624 func finalizeHelper () = {
608- let bN = valueOrElse(getBoolean(v), false)
625+ let bV = valueOrElse(getBoolean(v), false)
609626 let i = valueOrElse(getInteger(this, j), 0)
610- let bV = (i - 1)
611- let bj = ac(this, w(i))
612- let bd = ac(this, f)
613- let bk = (bj + bd)
614- let bl = getInteger(this, p)
615- if (if (if ((height >= bk))
616- then (bl == unit)
627+ let cd = (i - 1)
628+ let br = ac(this, w(i))
629+ let bl = ac(this, f)
630+ let bs = (br + bl)
631+ let bt = getInteger(this, p)
632+ if (if (if ((height >= bs))
633+ then (bt == unit)
617634 else false)
618- then !(bN)
635+ then !(bV)
619636 else false)
620637 then {
621- let bW = (i + 1)
622- let bX = getInteger(this, g)
623- let bY = {
624- let X = bX
638+ let ce = (i + 1)
639+ let cf = getInteger(this, g)
640+ let cg = {
641+ let X = cf
625642 if ($isInstanceOf(X, "Int"))
626643 then {
627- let bw = X
628-[IntegerEntry(f, bw), DeleteEntry(g)]
644+ let bE = X
645+[IntegerEntry(f, bE), DeleteEntry(g)]
629646 }
630647 else if ($isInstanceOf(X, "Unit"))
631648 then nil
632649 else throw("Match error")
633650 }
634- $Tuple2(([IntegerEntry(w(bW), height), IntegerEntry(s, height), IntegerEntry(j, bW), IntegerEntry(p, d), IntegerEntry(h(i), bd)] ++ bY), true)
651+ $Tuple2(([IntegerEntry(w(ce), height), IntegerEntry(s, height), IntegerEntry(j, ce), IntegerEntry(p, d), IntegerEntry(h(i), bl)] ++ cg), true)
635652 }
636- else if (if (bN)
637- then (bl == unit)
653+ else if (if (bV)
654+ then (bt == unit)
638655 else false)
639656 then $Tuple2([IntegerEntry(p, e)], true)
640- else if ((bl == unit))
657+ else if ((bt == unit))
641658 then $Tuple2(nil, false)
642- else if ((bl == d))
659+ else if ((bt == d))
643660 then {
644- let bZ = getString(q)
645- let ca = getString(r)
646- let X = bZ
661+ let ch = getString(q)
662+ let ci = getString(r)
663+ let X = ch
647664 if ($isInstanceOf(X, "Unit"))
648665 then {
649- let cb = getString(ax(au))
650- if ($isInstanceOf(cb, "Unit"))
666+ let cj = getString(aF(aC))
667+ if ($isInstanceOf(cj, "Unit"))
651668 then $Tuple2([IntegerEntry(p, e), DeleteEntry(q), DeleteEntry(r)], true)
652- else if ($isInstanceOf(cb, "String"))
669+ else if ($isInstanceOf(cj, "String"))
653670 then {
654- let cc = cb
655- $Tuple2([StringEntry(q, cc)], true)
671+ let ck = cj
672+ $Tuple2([StringEntry(q, ck)], true)
656673 }
657674 else throw("Match error")
658675 }
659676 else if ($isInstanceOf(X, "String"))
660677 then {
661- let by = X
662- let z = ae(by)
663- let cd = {
664- let cb = ca
665- if ($isInstanceOf(cb, "Unit"))
666- then getString(ax(av(z)))
667- else if ($isInstanceOf(cb, "String"))
678+ let bG = X
679+ let z = ae(bG)
680+ let cl = {
681+ let cj = ci
682+ if ($isInstanceOf(cj, "Unit"))
683+ then getString(aF(aD(z)))
684+ else if ($isInstanceOf(cj, "String"))
668685 then {
669- let ce = cb
670- let cf = getString(aD(av(z), ce))
671- if ((cf == cf))
686+ let cm = cj
687+ let cn = getString(aL(aD(z), cm))
688+ if ((cn == cn))
672689 then {
673- let cg = invoke(this, "processVoteINTERNAL", [by, ce], nil)
674- if ((cg == cg))
675- then cf
690+ let co = invoke(this, "processVoteINTERNAL", [bG, cm], nil)
691+ if ((co == co))
692+ then cn
676693 else throw("Strict value is not equal to itself.")
677694 }
678695 else throw("Strict value is not equal to itself.")
679696 }
680697 else throw("Match error")
681698 }
682- let cb = cd
683- if ($isInstanceOf(cb, "Unit"))
699+ let cj = cl
700+ if ($isInstanceOf(cj, "Unit"))
684701 then {
685- let ch = getString(aD(au, by))
686- let ci = ch
687- if ($isInstanceOf(ci, "Unit"))
702+ let cp = getString(aL(aC, bG))
703+ let cq = cp
704+ if ($isInstanceOf(cq, "Unit"))
688705 then $Tuple2([IntegerEntry(p, e), DeleteEntry(q), DeleteEntry(r)], true)
689- else if ($isInstanceOf(ci, "String"))
706+ else if ($isInstanceOf(cq, "String"))
690707 then {
691- let aP = ci
692- $Tuple2([StringEntry(q, aP), DeleteEntry(r)], true)
708+ let aX = cq
709+ $Tuple2([StringEntry(q, aX), DeleteEntry(r)], true)
693710 }
694711 else throw("Match error")
695712 }
696- else if ($isInstanceOf(cb, "String"))
713+ else if ($isInstanceOf(cj, "String"))
697714 then {
698- let cj = cb
699- $Tuple2([StringEntry(r, cj)], true)
715+ let cr = cj
716+ $Tuple2([StringEntry(r, cr)], true)
700717 }
701718 else throw("Match error")
702719 }
703720 else throw("Match error")
704721 }
705- else if ((bl == e))
722+ else if ((bt == e))
706723 then {
707- let bZ = getString(q)
708- let X = bZ
724+ let ch = getString(q)
725+ let X = ch
709726 if ($isInstanceOf(X, "Unit"))
710727 then {
711- let cb = getString(ax(au))
712- if ($isInstanceOf(cb, "Unit"))
728+ let cj = getString(aF(aC))
729+ if ($isInstanceOf(cj, "Unit"))
713730 then {
714- let bM = if (bN)
731+ let bU = if (bV)
715732 then [DeleteEntry(p), DeleteEntry(v)]
716- else [DeleteEntry(p), BooleanEntry(x(bV), true), IntegerEntry(t, i), IntegerEntry(u, bj)]
717- $Tuple2(bM, true)
733+ else [DeleteEntry(p), BooleanEntry(x(cd), true), IntegerEntry(t, i), IntegerEntry(u, br)]
734+ let cs = aA()
735+ if ((cs == cs))
736+ then $Tuple2(bU, true)
737+ else throw("Strict value is not equal to itself.")
718738 }
719- else if ($isInstanceOf(cb, "String"))
739+ else if ($isInstanceOf(cj, "String"))
720740 then {
721- let ck = cb
722- $Tuple2([StringEntry(q, ck)], true)
741+ let ct = cj
742+ $Tuple2([StringEntry(q, ct)], true)
723743 }
724744 else throw("Match error")
725745 }
726746 else if ($isInstanceOf(X, "String"))
727747 then {
728- let by = X
729- let ch = getString(aD(au, by))
730- if ((ch == ch))
748+ let bG = X
749+ let cp = getString(aL(aC, bG))
750+ if ((cp == cp))
731751 then {
732- let bR = {
733- let ab = invoke(this, "processPoolINTERNAL", [by, bN], nil)
752+ let bZ = {
753+ let ab = invoke(this, "processPoolINTERNAL", [bG, bV], nil)
734754 if ($isInstanceOf(ab, "Boolean"))
735755 then ab
736756 else throw(($getType(ab) + " couldn't be cast to Boolean"))
737757 }
738- if ((bR == bR))
739- then if (bR)
758+ if ((bZ == bZ))
759+ then if (bZ)
740760 then $Tuple2(nil, true)
741761 else {
742- let cb = ch
743- if ($isInstanceOf(cb, "Unit"))
762+ let cj = cp
763+ if ($isInstanceOf(cj, "Unit"))
744764 then {
745- let bM = if (bN)
765+ let bU = if (bV)
746766 then [DeleteEntry(p), DeleteEntry(v), DeleteEntry(q)]
747- else [DeleteEntry(p), BooleanEntry(x(bV), true), IntegerEntry(t, i), IntegerEntry(u, bj), DeleteEntry(q)]
748- $Tuple2(bM, true)
767+ else [DeleteEntry(p), BooleanEntry(x(cd), true), IntegerEntry(t, i), IntegerEntry(u, br), DeleteEntry(q)]
768+ let cs = aA()
769+ if ((cs == cs))
770+ then $Tuple2(bU, true)
771+ else throw("Strict value is not equal to itself.")
749772 }
750- else if ($isInstanceOf(cb, "String"))
773+ else if ($isInstanceOf(cj, "String"))
751774 then {
752- let ck = cb
753- $Tuple2([StringEntry(q, ck)], true)
775+ let ct = cj
776+ $Tuple2([StringEntry(q, ct)], true)
754777 }
755778 else throw("Match error")
756779 }
757780 else throw("Strict value is not equal to itself.")
758781 }
759782 else throw("Strict value is not equal to itself.")
760783 }
761784 else throw("Match error")
762785 }
763786 else S("finalization is broken")
764787 }
765788
766789
767790
768-@Callable(aT)
769-func finalizeWrapper (cl) = {
770- let cm = {
791+@Callable(bb)
792+func finalizeWrapper (cu) = {
793+ let cv = {
771794 let ab = invoke(this, "finalizeHelper", nil, nil)
772795 if ($isInstanceOf(ab, "Boolean"))
773796 then ab
774797 else throw(($getType(ab) + " couldn't be cast to Boolean"))
775798 }
776- if ((cm == cm))
777- then if (!(cm))
778- then if ((cl == 0))
799+ if ((cv == cv))
800+ then if (!(cv))
801+ then if ((cu == 0))
779802 then S("Current voting is not over yet")
780803 else $Tuple2(nil, unit)
781804 else {
782- let cn = valueOrElse(getInteger(this, k), c)
783- if ((cn > cl))
805+ let cw = valueOrElse(getInteger(this, k), c)
806+ if ((cw > cu))
784807 then {
785- let co = invoke(this, "finalizeWrapper", [(cl + 1)], nil)
786- if ((co == co))
808+ let cx = invoke(this, "finalizeWrapper", [(cu + 1)], nil)
809+ if ((cx == cx))
787810 then $Tuple2(nil, unit)
788811 else throw("Strict value is not equal to itself.")
789812 }
790813 else $Tuple2(nil, unit)
791814 }
792815 else throw("Strict value is not equal to itself.")
793816 }
794817
795818
796819
797-@Callable(aT)
820+@Callable(bb)
798821 func finalize () = {
799- let co = invoke(this, "finalizeWrapper", [0], nil)
800- if ((co == co))
822+ let cx = invoke(this, "finalizeWrapper", [0], nil)
823+ if ((cx == cx))
801824 then $Tuple2(nil, unit)
802825 else throw("Strict value is not equal to itself.")
803826 }
804827
805828
806829
807-@Callable(aT)
808-func containsNodeREADONLY (ay,aC) = $Tuple2(nil, aE(ay, aC))
830+@Callable(bb)
831+func containsNodeREADONLY (aG,aK) = $Tuple2(nil, aM(aG, aK))
809832
810833
811834
812-@Callable(aT)
813-func insertNode (ay,aC) = {
814- let bz = aV(aT)
815- if ((bz == bz))
816- then $Tuple2(aI(ay, aC), unit)
835+@Callable(bb)
836+func insertNode (aG,aK) = {
837+ let bH = bd(bb)
838+ if ((bH == bH))
839+ then $Tuple2(aQ(aG, aK), unit)
817840 else throw("Strict value is not equal to itself.")
818841 }
819842
820843
821844
822-@Callable(aT)
823-func deleteNode (ay,aC) = {
824- let bz = aV(aT)
825- if ((bz == bz))
826- then $Tuple2(aL(ay, aC), unit)
845+@Callable(bb)
846+func deleteNode (aG,aK) = {
847+ let bH = bd(bb)
848+ if ((bH == bH))
849+ then $Tuple2(aT(aG, aK), unit)
827850 else throw("Strict value is not equal to itself.")
828851 }
829852
830853
831-@Verifier(cp)
832-func cq () = {
833- let cr = {
834- let X = aQ()
854+@Verifier(cy)
855+func cz () = {
856+ let cA = {
857+ let X = aY()
835858 if ($isInstanceOf(X, "ByteVector"))
836859 then {
837- let aU = X
838- aU
860+ let bc = X
861+ bc
839862 }
840863 else if ($isInstanceOf(X, "Unit"))
841- then cp.senderPublicKey
864+ then cy.senderPublicKey
842865 else throw("Match error")
843866 }
844- sigVerify(cp.bodyBytes, cp.proofs[0], cr)
867+ sigVerify(cy.bodyBytes, cy.proofs[0], cA)
845868 }
846869

github/deemru/w8io/169f3d6 
264.64 ms