tx · 8y9JJ95njDLc2aTHC9yCRvSWVVY6tgM9DsckQxJsp3RB

3N18bq33YEjzWkoTDhZvc7zd7eRAyv6x4aZ:  -0.01400000 Waves

2021.03.07 17:20 [1427381] smart account 3N18bq33YEjzWkoTDhZvc7zd7eRAyv6x4aZ > SELF 0.00000000 Waves

{ "type": 13, "id": "8y9JJ95njDLc2aTHC9yCRvSWVVY6tgM9DsckQxJsp3RB", "fee": 1400000, "feeAssetId": null, "timestamp": 1615126885026, "version": 1, "sender": "3N18bq33YEjzWkoTDhZvc7zd7eRAyv6x4aZ", "senderPublicKey": "71DfVUys2KXcuEivd6kRxABvVQKB5k5c48qobMB1DzKN", "proofs": [ "5RJFCbDqqKy6cBFsNaV9pfYVvASEeqtLsVviCcQnAz2cPJ9qTjckgPtERANdtSZFgYj4rBeJ4NzTxyscQ197ZCzt" ], "script": "base64:AAIEAAAAAAAAABoIAhIAEgMKAQESBAoCAQESBAoCAQESAwoBAQAAAEoAAAAAB3ZlcnNpb24CAAAABTIuMC4wAAAAAAprZXlWZXJzaW9uAgAAAAd2ZXJzaW9uAAAAAAlrZXlBY3RpdmUCAAAABmFjdGl2ZQAAAAALa2V5QXNzZXRJZEECAAAACkFfYXNzZXRfaWQAAAAAC2tleUFzc2V0SWRCAgAAAApCX2Fzc2V0X2lkAAAAAAtrZXlCYWxhbmNlQQIAAAAPQV9hc3NldF9iYWxhbmNlAAAAAAtrZXlCYWxhbmNlQgIAAAAPQl9hc3NldF9iYWxhbmNlAAAAAA9rZXlTaGFyZUFzc2V0SWQCAAAADnNoYXJlX2Fzc2V0X2lkAAAAABNrZXlTaGFyZUFzc2V0U3VwcGx5AgAAABJzaGFyZV9hc3NldF9zdXBwbHkAAAAADWtleUNvbW1pc3Npb24CAAAACmNvbW1pc3Npb24AAAAAG2tleUNvbW1pc3Npb25TY2FsZURlbGltaXRlcgIAAAAaY29tbWlzc2lvbl9zY2FsZV9kZWxpbWl0ZXIAAAAAF2tleUNvbW1pc3Npb25Hb3Zlcm5hbmNlAgAAABVjb21taXNzaW9uX2dvdmVybmFuY2UAAAAADGtleUludmFyaWFudAIAAAAJaW52YXJpYW50AAAAAAhrZXlDYXVzZQIAAAAOc2h1dGRvd25fY2F1c2UAAAAADGFkbWluUHViS2V5MQEAAAAgXOnCuTuo2NF4oXkrXhkrIhT9M9mF7f8Lrvd+y0vKKTUAAAAADGFkbWluUHViS2V5MgEAAAAgXOnCuTuo2NF4oXkrXhkrIhT9M9mF7f8Lrvd+y0vKKTUAAAAADGFkbWluUHViS2V5MwEAAAAgXOnCuTuo2NF4oXkrXhkrIhT9M9mF7f8Lrvd+y0vKKTUAAAAAFGFkbWluUHViS2V5U3RhcnRTdG9wAQAAACBc6cK5O6jY0XiheSteGSsiFP0z2YXt/wuu937LS8opNQAAAAASYWRtaW5QdWJLZXlTdGFraW5nAQAAACBc6cK5O6jY0XiheSteGSsiFP0z2YXt/wuu937LS8opNQAAAAARZ292ZXJuYW5jZUFkZHJlc3MJAQAAAAdBZGRyZXNzAAAAAQEAAAAaAVQTpUX1edzu1C+kk914p42uKvNrLVgR210AAAAADnN0YWtpbmdBZGRyZXNzCQEAAAAHQWRkcmVzcwAAAAEBAAAAGgFUE6VF9Xnc7tQvpJPdeKeNrirzay1YEdtdAAAAAARVU0ROAQAAACAhbHLlfzrA7QSYpnxV/q9DV3gktgF1Z2+X9FVE2PAgRgAAAAAQc3Rha2luZ0ZlZUluVVNETgkAAGgAAAACAAAAAAAAAAAJCQEAAAAFdmFsdWUAAAABCAkBAAAABXZhbHVlAAAAAQkAA+wAAAABBQAAAARVU0ROAAAAD21pblNwb25zb3JlZEZlZQAAAAAIaXNBY3RpdmUJAQAAABFAZXh0ck5hdGl2ZSgxMDUxKQAAAAIFAAAABHRoaXMFAAAACWtleUFjdGl2ZQAAAAALc3RyQXNzZXRJZEEJAQAAABFAZXh0ck5hdGl2ZSgxMDUzKQAAAAIFAAAABHRoaXMFAAAAC2tleUFzc2V0SWRBAAAAAAtzdHJBc3NldElkQgkBAAAAEUBleHRyTmF0aXZlKDEwNTMpAAAAAgUAAAAEdGhpcwUAAAALa2V5QXNzZXRJZEIAAAAACGFzc2V0SWRBAwkAAAAAAAACBQAAAAtzdHJBc3NldElkQQIAAAAFV0FWRVMFAAAABHVuaXQJAAJZAAAAAQUAAAALc3RyQXNzZXRJZEEAAAAACGFzc2V0SWRCAwkAAAAAAAACBQAAAAtzdHJBc3NldElkQgIAAAAFV0FWRVMFAAAABHVuaXQJAAJZAAAAAQUAAAALc3RyQXNzZXRJZEIAAAAACmFzc2V0TmFtZUEEAAAAByRtYXRjaDAFAAAACGFzc2V0SWRBAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAApCeXRlVmVjdG9yBAAAAAJpZAUAAAAHJG1hdGNoMAgJAQAAAAV2YWx1ZQAAAAEJAAPsAAAAAQUAAAACaWQAAAAEbmFtZQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAEVW5pdAQAAAAFd2F2ZXMFAAAAByRtYXRjaDACAAAABVdBVkVTCQAAAgAAAAECAAAAC01hdGNoIGVycm9yAAAAAAphc3NldE5hbWVCBAAAAAckbWF0Y2gwBQAAAAhhc3NldElkQgMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAKQnl0ZVZlY3RvcgQAAAACaWQFAAAAByRtYXRjaDAICQEAAAAFdmFsdWUAAAABCQAD7AAAAAEFAAAAAmlkAAAABG5hbWUDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABFVuaXQEAAAABXdhdmVzBQAAAAckbWF0Y2gwAgAAAAVXQVZFUwkAAAIAAAABAgAAAAtNYXRjaCBlcnJvcgAAAAAIYmFsYW5jZUEJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAABHRoaXMFAAAAC2tleUJhbGFuY2VBAAAAAAhiYWxhbmNlQgkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAAEdGhpcwUAAAALa2V5QmFsYW5jZUIAAAAADHNoYXJlQXNzZXRJZAkAAlkAAAABCQEAAAARQGV4dHJOYXRpdmUoMTA1MykAAAACBQAAAAR0aGlzBQAAAA9rZXlTaGFyZUFzc2V0SWQAAAAAEHNoYXJlQXNzZXRTdXBwbHkJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAABHRoaXMFAAAAE2tleVNoYXJlQXNzZXRTdXBwbHkAAAAACWludmFyaWFudAkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAAEdGhpcwUAAAAMa2V5SW52YXJpYW50AAAAAApjb21taXNzaW9uAAAAAAAAAAH0AAAAABRjb21taXNzaW9uR292ZXJuYW5jZQAAAAAAAAAAyAAAAAAYY29tbWlzc2lvblNjYWxlRGVsaW1pdGVyAAAAAAAAD0JAAAAAAAtzY2FsZVZhbHVlMwAAAAAAAAAD6AAAAAALc2NhbGVWYWx1ZTgAAAAAAAX14QAAAAAADHNjYWxlVmFsdWUxMgAAAADo1KUQAAAAAAAac2xpcHBhZ2VUb2xlcmFuY2VEZWxpbWl0ZXIAAAAAAAAAA+gAAAAAEXNjYWxlVmFsdWU4RGlnaXRzAAAAAAAAAAAIAAAAABJzY2FsZVZhbHVlMTJEaWdpdHMAAAAAAAAAAAwAAAAADWRBcHBUaHJlc2hvbGQAAAAAAAAAADIAAAAAFmRBcHBUaHJlc2hvbGREZWxpbWl0ZXIAAAAAAAAAAGQAAAAAEXJhdGlvVGhyZXNob2xkTWF4AAAAAAAF9eEAAAAAABFyYXRpb1RocmVzaG9sZE1pbgAAAAAABfXdGAAAAAAFYWxwaGEAAAAAAAAAADIA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ZThEaWdpdHMFAAAABERPV04FAAAAC3NjYWxlVmFsdWU4AQAAABpjYWxjdWxhdGVIb3dNYW55U2VuZFRva2VuQQAAAAUAAAAVYW1vdW50VG9TZW5kRXN0aW1hdGVkAAAAFW1pblRva2VuUmVjZWl2ZUFtb3VudAAAAAxhbW91bnRUb2tlbkEAAAAMYW1vdW50VG9rZW5CAAAAEnRva2VuUmVjZWl2ZUFtb3VudAQAAAANc2xpcHBhZ2VWYWx1ZQkAAGUAAAACBQAAAAtzY2FsZVZhbHVlOAkAAGkAAAACCQAAaAAAAAIFAAAAC3NjYWxlVmFsdWU4AAAAAAAAAAABAAAAAAAAmJaABAAAAB5kZWx0YUJldHdlZW5NYXhBbmRNaW5TZW5kVmFsdWUJAABlAAAAAgUAAAAVYW1vdW50VG9TZW5kRXN0aW1hdGVkBQAAABVtaW5Ub2tlblJlY2VpdmVBbW91bnQEAAAAEWFtb3VudFRvU2VuZFN0ZXAxCQAAZQAAAAIFAAAAFWFtb3VudFRvU2VuZEVzdGltYXRlZAkAAGkAAAACCQAAaAAAAAIAAAAAAAAAAAEFAAAAHmRlbHRhQmV0d2Vlbk1heEFuZE1pblNlbmRWYWx1ZQAAAAAAAAAABQQAAAARYW1vdW50VG9TZW5kU3RlcDIJAABlAAAAAgUAAAAVYW1vdW50VG9TZW5kRXN0aW1hdGVkCQAAaQAAAAIJAABoAAAAAgAAAAAAAAAAAgUAAAAeZGVsdGFCZXR3ZWVuTWF4QW5kTWluU2VuZFZhbHVlAAAAAAAAAAAFBAAAABFhbW91bnRUb1NlbmRTdGVwMwkAAGUAAAACBQAAABVhbW91bnRUb1NlbmRFc3RpbWF0ZWQJAABpAAAAAgkAAGgAAAACAAAAAAAAAAADBQAAAB5kZWx0YUJldHdlZW5NYXhBbmRNaW5TZW5kVmFsdWUAAAAAAAAAAAUEAAAAEWFtb3VudFRvU2VuZFN0ZXA0CQAAZQAAAAIFAAAAFWFtb3VudFRvU2VuZEVzdGltYXRlZAkAAGkAAAACCQAAaAAAAAIAAAAAAAAAAAQFAAAAHmRlbHRhQmV0d2Vlbk1heEFuZE1pblNlbmRWYWx1ZQAAAAAAAAAABQQAAAARYW1vdW50VG9TZW5kU3RlcDUJAABlAAAAAgUAAAAVYW1vdW50VG9TZW5kRXN0aW1hdGVkCQAAaQAAAAIJAABoAAAAAgAAAAAAAAAABQUAAAAeZGVsdGFCZXR3ZWVuTWF4QW5kTWluU2VuZFZhbHVlAAAAAAAAAAAFBAAAAAF5CQAAZAAAAAIFAAAADGFtb3VudFRva2VuQgUAAAASdG9rZW5SZWNlaXZlQW1vdW50BAAAAAxpbnZhcmlhbnROZXcJAQAAAA1pbnZhcmlhbnRDYWxjAAAAAgkAAGUAAAACBQAAAAxhbW91bnRUb2tlbkEFAAAAFWFtb3VudFRvU2VuZEVzdGltYXRlZAUAAAABeQQAAAAXaW52YXJpYW50RXN0aW1hdGVkUmF0aW8JAABrAAAAAwUAAAAJaW52YXJpYW50BQAAAAtzY2FsZVZhbHVlOAUAAAAMaW52YXJpYW50TmV3AwkAAGcAAAACAAAAAAAAAAAACQAAZQAAAAIJAQAAAA1pbnZhcmlhbnRDYWxjAAAAAgkAAGUAAAACBQAAAAxhbW91bnRUb2tlbkEFAAAAEWFtb3VudFRvU2VuZFN0ZXA1BQAAAAF5BQAAAAlpbnZhcmlhbnQJAAACAAAAAQIAAAAkbWluVG9rZW5SZWNlaXZlQW1vdW50IHRvbyBsYXJnZS5lcnIxAwMJAABmAAAAAgUAAAAXaW52YXJpYW50RXN0aW1hdGVkUmF0aW8FAAAADXNsaXBwYWdlVmFsdWUJAABmAAAAAgkAAGUAAAACBQAAAAxpbnZhcmlhbnROZXcFAAAACWludmFyaWFudAAAAAAAAAAAAAcFAAAAFWFtb3VudFRvU2VuZEVzdGltYXRlZAMJAABmAAAAAgkAAGUAAAACCQEAAAANaW52YXJpYW50Q2FsYwAAAAIJAABlAAAAAgUAAAAMYW1vdW50VG9rZW5BBQAAABFhbW91bnRUb1NlbmRTdGVwMQUAAAABeQUAAAAJaW52YXJpYW50AAAAAAAAAAAACQAAaQAAAAIJAABoAAAAAgUAAAARYW1vdW50VG9TZW5kU3RlcDEJAABlAAAAAgUAAAAYY29tbWlzc2lvblNjYWxlRGVsaW1pdGVyBQAAAApjb21taXNzaW9uBQAAABhjb21taXNzaW9uU2NhbGVEZWxpbWl0ZXIDCQAAZgAAAAIJAABlAAAAAgkBAAAADWludmFyaWFudENhbGMAAAACCQAAZQAAAAIFAAAADGFtb3VudFRva2VuQQUAAAARYW1vdW50VG9TZW5kU3RlcDIFAAAAAXkFAAAACWludmFyaWFudAAAAAAAAAAAAAkAAGkAAAACCQAAaAAAAAIFAAAAEWFtb3VudFRvU2VuZFN0ZXAyCQAAZQAAAAIFAAAAGGNvbW1pc3Npb25TY2FsZURlbGltaXRlcgUAAAAKY29tbWlzc2lvbgUAAAAYY29tbWlzc2lvblNjYWxlRGVsaW1pdGVyAwkAAGYAAAACCQAAZQAAAAIJAQAAAA1pbnZhcmlhbnRDYWxjAAAAAgkAAGUAAAACBQAAAAxhbW91bnRUb2tlbkEFAAAAEWFtb3VudFRvU2VuZFN0ZXAzBQAAAAF5BQAAAAlpbnZhcmlhbnQAAAAAAAAAAAAJAABpAAAAAgkAAGgAAAACBQAAABFhbW91bnRUb1NlbmRTdGVwMwkAAGUAAAACBQAAABhjb21taXNzaW9uU2NhbGVEZWxpbWl0ZXIFAAAACmNvbW1pc3Npb24FAAAAGGNvbW1pc3Npb25TY2FsZURlbGltaXRlcgMJAABmAAAAAgkAAGUAAAACCQEAAAANaW52YXJpYW50Q2FsYwAAAAIJAABlAAAAAgUAAAAMYW1vdW50VG9rZW5BBQAAABFhbW91bnRUb1NlbmRTdGVwNAUAAAABeQUAAAAJaW52YXJpYW50AAAAAAAAAAAACQAAaQAAAAIJAABoAAAAAgUAAAARYW1vdW50VG9TZW5kU3RlcDQJAABlAAAAAgUAAAAYY29tbWlzc2lvblNjYWxlRGVsaW1pdGVyBQAAAApjb21taXNzaW9uBQAAABhjb21taXNzaW9uU2NhbGVEZWxpbWl0ZXIDCQAAZgAAAAIJAABlAAAAAgkBAAAADWludmFyaWFudENhbGMAAAACCQAAZQAAAAIFAAAADGFtb3VudFRva2VuQQUAAAARYW1vdW50VG9TZW5kU3RlcDUFAAAAAXkFAAAACWludmFyaWFudAAAAAAAAAAAAAkAAGkAAAACCQAAaAAAAAIFAAAAEWFtb3VudFRvU2VuZFN0ZXA1CQAAZQAAAAIFAAAAGGNvbW1pc3Npb25TY2FsZURlbGltaXRlcgUAAAAKY29tbWlzc2lvbgUAAAAYY29tbWlzc2lvblNjYWxlRGVsaW1pdGVyCQAAAgAAAAECAAAAPnNvbWV0aGluZyB3ZW50IHdyb25nIHdoaWxlIHdvcmtpbmcgd2l0aCBhbW91bnRUb1NlbmRTdGVwLiBlcnIyAQAAABpjYWxjdWxhdGVIb3dNYW55U2VuZFRva2VuQgAAAAUAAAAVYW1vdW50VG9TZW5kRXN0aW1hdGVkAAAAFW1pblRva2VuUmVjZWl2ZUFtb3VudAAAAAxhbW91bnRUb2tlbkEAAAAMYW1vdW50VG9rZW5CAAAAEnRva2VuUmVjZWl2ZUFtb3VudAQAAAANc2xpcHBhZ2VWYWx1ZQkAAGUAAAACBQAAAAtzY2FsZVZhbHVlOAkAAGkAAAACCQAAaAAAAAIFAAAAC3NjYWxlVmFsdWU4AAAAAAAAAAABAAAAAAAAmJaABAAAAB5kZWx0YUJldHdlZW5NYXhBbmRNaW5TZW5kVmFsdWUJAABlAAAAAgUAAAAVYW1vdW50VG9TZW5kRXN0aW1hdGVkBQAAABVtaW5Ub2tlblJlY2VpdmVBbW91bnQEAAAAEWFtb3VudFRvU2VuZFN0ZXAxCQAAZQAAAAIFAAAAFWFtb3VudFRvU2VuZEVzdGltYXRlZAkAAGkAAAACCQAAaAAAAAIAAAAAAAAAAAEFAAAAHmRlbHRhQmV0d2Vlbk1heEFuZE1pblNlbmRWYWx1ZQAAAAAAAAAABQQAAAARYW1vdW50VG9TZW5kU3RlcDIJAABlAAAAAgUAAAAVYW1vdW50VG9TZW5kRXN0aW1hdGVkCQAAaQAAAAIJAABoAAAAAgAAAAAAAAAAAgUAAAAeZGVsdGFCZXR3ZWVuTWF4QW5kTWluU2VuZFZhbHVlAAAAAAAAAAAFBAAAABFhbW91bnRUb1NlbmRTdGVwMwkAAGUAAAACBQAAABVhbW91bnRUb1NlbmRFc3RpbWF0ZWQJAABpAAAAAgkAAGgAAAACAAAAAAAAAAADBQAAAB5kZWx0YUJldHdlZW5NYXhBbmRNaW5TZW5kVmFsdWUAAAAAAAAAAAUEAAAAEWFtb3VudFRvU2VuZFN0ZXA0CQAAZQAAAAIFAAAAFWFtb3VudFRvU2VuZEVzdGltYXRlZAkAAGkAAAACCQAAaAAAAAIAAAAAAAAAAAQFAAAAHmRlbHRhQmV0d2Vlbk1heEFuZE1pblNlbmRWYWx1ZQAAAAAAAAAABQQAAAARYW1vdW50VG9TZW5kU3RlcDUJAABlAAAAAgUAAAAVYW1vdW50VG9TZW5kRXN0aW1hdGVkCQAAaQAAAAIJAABoAAAAAgAAAAAAAAAABQUAAAAeZGVsdGFCZXR3ZWVuTWF4QW5kTWluU2VuZFZhbHVlAAAAAAAAAAAFBAAAAAF4CQAAZAAAAAIFAAAADGFtb3VudFRva2VuQQUAAAASdG9rZW5SZWNlaXZlQW1vdW50BAAAAAxpbnZhcmlhbnROZXcJAQAAAA1pbnZhcmlhbnRDYWxjAAAAAgUAAAABeAkAAGUAAAACBQAAAAxhbW91bnRUb2tlbkIFAAAAFWFtb3VudFRvU2VuZEVzdGltYXRlZAQAAAAXaW52YXJpYW50RXN0aW1hdGVkUmF0aW8JAABrAAAAAwUAAAAJaW52YXJpYW50BQAAAAtzY2FsZVZhbHVlOAUAAAAMaW52YXJpYW50TmV3AwkAAGcAAAACAAAAAAAAAAAACQAAZQAAAAIJAQAAAA1pbnZhcmlhbnRDYWxjAAAAAgUAAAABeAkAAGUAAAACBQAAAAxhbW91bnRUb2tlbkIFAAAAEWFtb3VudFRvU2VuZFN0ZXA1BQAAAAlpbnZhcmlhbnQJAAACAAAAAQIAAAAkbWluVG9rZW5SZWNlaXZlQW1vdW50IHRvbyBsYXJnZS5lcnIxAwMJAABmAAAAAgUAAAAXaW52YXJpYW50RXN0aW1hdGVkUmF0aW8FAAAADXNsaXBwYWdlVmFsdWUJAABmAAAAAgkAAGUAAAACBQAAAAxpbnZhcmlhbnROZXcFAAAACWludmFyaWFudAAAAAAAAAAAAAcFAAAAFWFtb3VudFRvU2VuZEVzdGltYXRlZAMJAABmAAAAAgkAAGUAAAACCQEAAAANaW52YXJpYW50Q2FsYwAAAAIFAAAAAXgJAABlAAAAAgUAAAAMYW1vdW50VG9rZW5CBQAAABFhbW91bnRUb1NlbmRTdGVwMQUAAAAJaW52YXJpYW50AAAAAAAAAAAACQAAaQAAAAIJAABoAAAAAgUAAAARYW1vdW50VG9TZW5kU3RlcDEJAABlAAAAAgUAAAAYY29tbWlzc2lvblNjYWxlRGVsaW1pdGVyBQAAAApjb21taXNzaW9uBQAAABhjb21taXNzaW9uU2NhbGVEZWxpbWl0ZXIDCQAAZgAAAAIJAABlAAAAAgkBAAAADWludmFyaWFudENhbGMAAAACBQAAAAF4CQAAZQAAAAIFAAAADGFtb3VudFRva2VuQgUAAAARYW1vdW50VG9TZW5kU3RlcDIFAAAACWludmFyaWFudAAAAAAAAAAAAAkAAGkAAAACCQAAaAAAAAIFAAAAEWFtb3VudFRvU2VuZFN0ZXAyCQAAZQAAAAIFAAAAGGNvbW1pc3Npb25TY2FsZURlbGltaXRlcgUAAAAKY29tbWlzc2lvbgUAAAAYY29tbWlzc2lvblNjYWxlRGVsaW1pdGVyAwkAAGYAAAACCQAAZQAAAAIJAQAAAA1pbnZhcmlhbnRDYWxjAAAAAgUAAAABeAkAAGUAAAACBQAAAAxhbW91bnRUb2tlbkIFAAAAEWFtb3VudFRvU2VuZFN0ZXAzBQAAAAlpbnZhcmlhbnQAAAAAAAAAAAAJAABpAAAAAgkAAGgAAAACBQAAABFhbW91bnRUb1NlbmRTdGVwMwkAAGUAAAACBQAAABhjb21taXNzaW9uU2NhbGVEZWxpbWl0ZXIFAAAACmNvbW1pc3Npb24FAAAAGGNvbW1pc3Npb25TY2FsZURlbGltaXRlcgMJAABmAAAAAgkAAGUAAAACCQEAAAANaW52YXJpYW50Q2FsYwAAAAIFAAAAAXgJAABlAAAAAgUAAAAMYW1vdW50VG9rZW5CBQAAABFhbW91bnRUb1NlbmRTdGVwNAUAAAAJaW52YXJpYW50AAAAAAAAAAAACQAAaQAAAAIJAABoAAAAAgUAAAARYW1vdW50VG9TZW5kU3RlcDQJAABlAAAAAgUAAAAYY29tbWlzc2lvblNjYWxlRGVsaW1pdGVyBQAAAApjb21taXNzaW9uBQAAABhjb21taXNzaW9uU2NhbGVEZWxpbWl0ZXIDCQAAZgAAAAIJAABlAAAAAgkBAAAADWludmFyaWFudENhbGMAAAACBQAAAAF4CQAAZQAAAAIFAAAADGFtb3VudFRva2VuQgUAAAARYW1vdW50VG9TZW5kU3RlcDUFAAAACWludmFyaWFudAAAAAAAAAAAAAkAAGkAAAACCQAAaAAAAAIFAAAAEWFtb3VudFRvU2VuZFN0ZXA1CQAAZQAAAAIFAAAAGGNvbW1pc3Npb25TY2FsZURlbGltaXRlcgUAAAAKY29t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AAAAAAAAAAABBQAAAAxwbXREZWNpbWFsc0IFAAAACEhBTEZET1dOCQAAbAAAAAYAAAAAAAAAAAoAAAAAAAAAAAAFAAAADXNoYXJlRGVjaW1hbHMAAAAAAAAAAAAAAAAAAAAAAAAFAAAACEhBTEZET1dOBAAAAApzaGFyZUlzc3VlCQAEQgAAAAUFAAAACXNoYXJlTmFtZQUAAAAQc2hhcmVEZXNjcmlwdGlvbgUAAAASc2hhcmVJbml0aWFsU3VwcGx5BQAAAA1zaGFyZURlY2ltYWxzBgQAAAAMc2hhcmVJc3N1ZUlkCQAEOAAAAAEFAAAACnNoYXJlSXNzdWUEAAAAE2ludmFyaWFudENhbGN1bGF0ZWQJAQAAAA1pbnZhcmlhbnRDYWxjAAAAAgUAAAAKcG10QW1vdW50QQUAAAAKcG10QW1vdW50QgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAAAprZXlWZXJzaW9uBQAAAAd2ZXJzaW9uCQAETAAAAAIJAQAAAAxCb29sZWFuRW50cnkAAAACBQAAAAlrZXlBY3RpdmUGCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAAC2tleUFzc2V0SWRBBQAAAA5wbXRTdHJBc3NldElkQQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAAAtrZXlBc3NldElkQgUAAAAOcG10U3RyQXNzZXRJZEIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAC2tleUJhbGFuY2VBBQAAAApwbXRBbW91bnRBCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAAtrZXlCYWxhbmNlQgUAAAAKcG10QW1vdW50QgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAMa2V5SW52YXJpYW50BQAAABNpbnZhcmlhbnRDYWxjdWxhdGVkCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAA1rZXlDb21taXNzaW9uBQAAAApjb21taXNzaW9uCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABtrZXlDb21taXNzaW9uU2NhbGVEZWxpbWl0ZXIFAAAAGGNvbW1pc3Npb25TY2FsZURlbGltaXRlcgkABEwAAAACBQAAAApzaGFyZUlzc3VlCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAAD2tleVNoYXJlQXNzZXRJZAkAAlgAAAABBQAAAAxzaGFyZUlzc3VlSWQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAE2tleVNoYXJlQXNzZXRTdXBwbHkFAAAAEnNoYXJlSW5pdGlhbFN1cHBseQkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIFAAAAEnNoYXJlSW5pdGlhbFN1cHBseQUAAAAMc2hhcmVJc3N1ZUlkBQAAAANuaWwAAAABaQEAAAAWcmVwbGVuaXNoV2l0aFR3b1Rva2VucwAAAAEAAAARc2xpcHBhZ2VUb2xlcmFuY2UEAAAAC3BtdEFzc2V0SWRBCAkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAAAAAdhc3NldElkBAAAAAtwbXRBc3NldElkQggJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAEAAAAHYXNzZXRJZAQAAAAKcG10QW1vdW50QQkBAAAAEGRlZHVjdFN0YWtpbmdGZWUAAAACCAkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAAAAAZhbW91bnQFAAAAC3BtdEFzc2V0SWRBBAAAAApwbXRBbW91bnRCCQEAAAAQZGVkdWN0U3Rha2luZ0ZlZQAAAAIICQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAABAAAABmFtb3VudAUAAAALcG10QXNzZXRJZEIEAAAACnRva2VuUmF0aW8JAABrAAAAAwkAAGsAAAADBQAAAAhiYWxhbmNlQQUAAAALc2NhbGVWYWx1ZTgFAAAACnBtdEFtb3VudEEFAAAAC3NjYWxlVmFsdWUzCQAAawAAAAMFAAAACGJhbGFuY2VCBQAAAAtzY2FsZVZhbHVlOAUAAAAKcG10QW1vdW50QgQAAAATcmF0aW9TaGFyZVRva2Vuc0luQQkAAGsAAAADBQAAAApwbXRBbW91bnRBBQAAAAtzY2FsZVZhbHVlOAUAAAAIYmFsYW5jZUEEAAAAE3JhdGlvU2hhcmVUb2tlbnNJbkIJAABrAAAAAwUAAAAKcG10QW1vdW50QgUAAAALc2NhbGVWYWx1ZTgFAAAACGJhbGFuY2VCBAAAABVzaGFyZVRva2VuVG9QYXlBbW91bnQJAABrAAAAAwkAAZcAAAABCQAETAAAAAIFAAAAE3JhdGlvU2hhcmVUb2tlbnNJbkEJAARMAAAAAgUAAAATcmF0aW9TaGFyZVRva2Vuc0luQgUAAAADbmlsBQAAABBzaGFyZUFzc2V0U3VwcGx5BQAAAAtzY2FsZVZhbHVlOAQAAAATaW52YXJpYW50Q2FsY3VsYXRlZAkBAAAADWludmFyaWFudENhbGMAAAACCQAAZAAAAAIFAAAACGJhbGFuY2VBBQAAAApwbXRBbW91bnRBCQAAZAAAAAIFAAAACGJhbGFuY2VCBQAAAApwbXRBbW91bnRCAwkBAAAAASEAAAABBQAAAAhpc0FjdGl2ZQkBAAAAD3Rocm93SXNJbmFjdGl2ZQAAAAADAwkAAGYAAAACAAAAAAAAAAAABQAAABFzbGlwcGFnZVRvbGVyYW5jZQYJAABmAAAAAgUAAAARc2xpcHBhZ2VUb2xlcmFuY2UFAAAAGnNsaXBwYWdlVG9sZXJhbmNlRGVsaW1pdGVyCQAAAgAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAKVNsaXBwYWdlIHRvbGVyYW5jZSBtdXN0IGJlIGJldHdlZW4gMCBhbmQgCQABpAAAAAEFAAAAGnNsaXBwYWdlVG9sZXJhbmNlRGVsaW1pdGVyAgAAABYgaW5jbHVzaXZlbHkuIEFjdHVhbDogCQABpAAAAAEFAAAAEXNsaXBwYWdlVG9sZXJhbmNlAwkBAAAAAiE9AAAAAgkAAZAAAAABCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAgkAAAIAAAABAgAAABxUd28gYXR0YWNoZWQgYXNzZXRzIGV4cGVjdGVkAwMJAQAAAAIhPQAAAAIFAAAAC3BtdEFzc2V0SWRBBQAAAAhhc3NldElkQQYJAQAAAAIhPQAAAAIFAAAAC3BtdEFzc2V0SWRCBQAAAAhhc3NldElkQgkBAAAAC3Rocm93QXNzZXRzAAAAAAMDCQAAZgAAAAIJAABpAAAAAgkAAGgAAAACBQAAAAtzY2FsZVZhbHVlMwkAAGUAAAACBQAAABpzbGlwcGFnZVRvbGVyYW5jZURlbGltaXRlcgUAAAARc2xpcHBhZ2VUb2xlcmFuY2UFAAAAGnNsaXBwYWdlVG9sZXJhbmNlRGVsaW1pdGVyBQAAAAp0b2tlblJhdGlvBgkAAGYAAAACBQAAAAp0b2tlblJhdGlvCQAAaQAAAAIJAABoAAAAAgUAAAALc2NhbGVWYWx1ZTMJAABkAAAAAgUAAAAac2xpcHBhZ2VUb2xlcmFuY2VEZWxpbWl0ZXIFAAAAEXNsaXBwYWdlVG9sZXJhbmNlBQAAABpzbGlwcGFnZVRvbGVyYW5jZURlbGltaXRlcgkAAAIAAAABAgAAAD1JbmNvcnJlY3QgYXNzZXRzIGFtb3VudDogYW1vdW50cyBtdXN0IGhhdmUgdGhlIGNvbnRyYWN0IHJhdGlvAwkAAAAAAAACBQAAABVzaGFyZVRva2VuVG9QYXlBbW91bnQAAAAAAAAAAAAJAAACAAAAAQIAAAAdVG9vIHNtYWxsIGFtb3VudCB0byByZXBsZW5pc2gDCQEAAAABIQAAAAEFAAAAEGhhc0Vub3VnaEJhbGFuY2UJAQAAABFzdXNwZW5kU3VzcGljaW91cwAAAAAJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAC2tleUJhbGFuY2VBCQAAZAAAAAIFAAAACGJhbGFuY2VBBQAAAApwbXRBbW91bnRBCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAAtrZXlCYWxhbmNlQgkAAGQAAAACBQAAAAhiYWxhbmNlQgUAAAAKcG10QW1vdW50QgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAATa2V5U2hhcmVBc3NldFN1cHBseQkAAGQAAAACBQAAABBzaGFyZUFzc2V0U3VwcGx5BQAAABVzaGFyZVRva2VuVG9QYXlBbW91bnQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAADGtleUludmFyaWFudAUAAAATaW52YXJpYW50Q2FsY3VsYXRlZAkABEwAAAACCQEAAAAHUmVpc3N1ZQAAAAMFAAAADHNoYXJlQXNzZXRJZAUAAAAVc2hhcmVUb2tlblRvUGF5QW1vdW50BgkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIFAAAAFXNoYXJlVG9rZW5Ub1BheUFtb3VudAUAAAAMc2hhcmVBc3NldElkBQAAAANuaWwAAAABaQEAAAAVcmVwbGVuaXNoV2l0aE9uZVRva2VuAAAAAgAAABN2aXJ0dWFsU3dhcFRva2VuUGF5AAAAE3ZpcnR1YWxTd2FwVG9rZW5HZXQEAAAADSR0MDQyMjk0NDIzNjkJAAUUAAAAAggJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAAAAAGYW1vdW50CAkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAAAAAdhc3NldElkBAAAAAlwbXRBbW91bnQIBQAAAA0kdDA0MjI5NDQyMzY5AAAAAl8xBAAAAApwbXRBc3NldElkCAUAAAANJHQwNDIyOTQ0MjM2OQAAAAJfMgQAAAAPcG10TWluVGhyZXNob2xkAAAAAAAATEtABAAAAB10aHJlc2hvbGRWYWx1ZUZvck1pblRvbGVyYW5jZQAAAAAAAvrwgAQAAAAJdG9sZXJhbmNlAwkAAGYAAAACBQAAAB10aHJlc2hvbGRWYWx1ZUZvck1pblRvbGVyYW5jZQUAAAAJcG10QW1vdW50AAAAAAAAAYagAAAAAAAAAAABBAAAABxzbGlwcGFnZVZhbHVlTWluRm9yUmVwbGVuaXNoCQAAZQAAAAIFAAAAC3NjYWxlVmFsdWU4CQAAaQAAAAIJAABoAAAAAgUAAAALc2NhbGVWYWx1ZTgFAAAACXRvbGVyYW5jZQAAAAAAAJiWgAQAAAAcc2xpcHBhZ2VWYWx1ZU1heEZvclJlcGxlbmlzaAkAAGQAAAACBQAAAAtzY2FsZVZhbHVlOAkAAGkAAAACCQAAaAAAAAIFAAAAC3NjYWxlVmFsdWU4BQAAAAl0b2xlcmFuY2UAAAAAAACYloAEAAAAF3NsaXBwYWdlVmFsdWVNaW5Gb3JTd2FwCQAAZQAAAAIFAAAAC3NjYWxlVmFsdWU4CQAAaQAAAAIJAABoAAAAAgUAAAALc2NhbGVWYWx1ZTgAAAAAAAAAAAEAAAAAAACYloAEAAAAF3NsaXBwYWdlVmFsdWVNYXhGb3JTd2FwCQAAZAAAAAIFAAAAC3NjYWxlVmFsdWU4CQAAaQAAAAIJAABoAAAAAgUAAAALc2NhbGVWYWx1ZTgAAAAAAAAAAAEAAAAAAACYloADCQEAAAABIQAAAAEFAAAACGlzQWN0aXZlCQEAAAAPdGhyb3dJc0luYWN0aXZlAAAAAAMJAABmAAAAAgUAAAAPcG10TWluVGhyZXNob2xkBQAAAAlwbXRBbW91bnQJAAACAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAA9QYXltZW50IGFtb3VudCAJAAGkAAAAAQUAAAAJcG10QW1vdW50AgAAACcgZG9lcyBub3QgZXhjZWVkIHRoZSBtaW5pbXVtIGFtb3VudCBvZiAJAAGkAAAAAQUAAAAPcG10TWluVGhyZXNob2xkAgAAAAcgdG9rZW5zAwkBAAAAAiE9AAAAAgkAAZAAAAABCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAQkAAAIAAAABAgAAAB1PbmUgYXR0YWNoZWQgcGF5bWVudCBleHBlY3RlZAMJAQAAAAEhAAAAAQUAAAAQaGFzRW5vdWdoQmFsYW5jZQkBAAAAEXN1c3BlbmRTdXNwaWNpb3VzAAAAAAMJAAAAAAAAAgUAAAAKcG10QXNzZXRJZAUAAAAIYXNzZXRJZEEEAAAAHGFtb3VudFZpcnR1YWxSZXBsZW5pc2hUb2tlbkEJAABlAAAAAgUAAAAJcG10QW1vdW50BQAAABN2aXJ0dWFsU3dhcFRva2VuUGF5BAAAABxhbW91bnRWaXJ0dWFsUmVwbGVuaXNoVG9rZW5CBQAAABN2aXJ0dWFsU3dhcFRva2VuR2V0BAAAABhiYWxhbmNlQWZ0ZXJWaXJ0dWFsU3dhcEEJAABkAAAAAgUAAAAIYmFsYW5jZUEFAAAAE3ZpcnR1YWxTd2FwVG9rZW5QYXkEAAAAGGJhbGFuY2VBZnRlclZpcnR1YWxTd2FwQgkAAGUAAAACBQAAAAhiYWxhbmNlQgUAAAATdmlydHVhbFN3YXBUb2tlbkdldAQAAAAMaW52YXJpYW50TmV3CQEAAAANaW52YXJpYW50Q2FsYwAAAAIFAAAAGGJhbGFuY2VBZnRlclZpcnR1YWxTd2FwQQUAAAAYYmFsYW5jZUFmdGVyVmlydHVhbFN3YXBCBAAAABdpbnZhcmlhbnRFc3RpbWF0ZWRSYXRpbwkAAGsAAAADBQAAAAlpbnZhcmlhbnQFAAAAC3NjYWxlVmFsdWU4BQAAAAxpbnZhcmlhbnROZXcDAwkAAGcAAAACBQAAABdpbnZhcmlhbnRFc3RpbWF0ZWRSYXRpbwUAAAAXc2xpcHBhZ2VWYWx1ZU1pbkZvclN3YXAJAABnAAAAAgkAAGUAAAACBQAAAAxpbnZhcmlhbnROZXcFAAAACWludmFyaWFudAAAAAAAAAAAAAcEAAAAJXJhdGlvVmlydHVhbEJhbGFuY2VUb1ZpcnR1YWxSZXBsZW5pc2gJAABpAAAAAgkAAGsAAAADBQAAABhiYWxhbmNlQWZ0ZXJWaXJ0dWFsU3dhcEEJAABoAAAAAgUAAAALc2NhbGVWYWx1ZTgFAAAAC3NjYWxlVmFsdWU4BQAAABhiYWxhbmNlQWZ0ZXJWaXJ0dWFsU3dhcEIJAABrAAAAAwUAAAAcYW1vdW50VmlydHVhbFJlcGxlbmlzaFRva2VuQQUAAAALc2NhbGVWYWx1ZTgFAAAAHGFtb3VudFZpcnR1YWxSZXBsZW5pc2hUb2tlbkIDAwkAAGYAAAACBQAAABxzbGlwcGFnZVZhbHVlTWluRm9yUmVwbGVuaXNoBQAAACVyYXRpb1ZpcnR1YWxCYWxhbmNlVG9WaXJ0dWFsUmVwbGVuaXNoBgkAAGYAAAACBQAAACVyYXRpb1ZpcnR1YWxCYWxhbmNlVG9WaXJ0dWFsUmVwbGVuaXNoBQAAABxzbGlwcGFnZVZhbHVlTWF4Rm9yUmVwbGVuaXNoCQAAAgAAAAECAAAAZnN3b3Agd2l0aCB2aXJ0dWFsU3dhcFRva2VuUGF5IGFuZCB2aXJ0dWFsU3dhcFRva2VuR2V0IHBvc3NpYmxlLCBidXQgcmF0aW8gYWZ0ZXIgdmlydHVhbCBzd2FwIGluY29ycmVjdAQAAAATcmF0aW9TaGFyZVRva2Vuc0luQQkAAGsAAAADCQAAZQAAAAIFAAAAHGFtb3VudFZpcnR1YWxSZXBsZW5pc2hUb2tlbkEAAAAAAAAEHrAFAAAAC3NjYWxlVmFsdWU4CQAAZQAAAAIFAAAAGGJhbGFuY2VBZnRlclZpcnR1YWxTd2FwQQAAAAAAAAQesAQAAAAkcmF0aW9TaGFyZVRva2Vuc0luQVdpdGhvdXRDb21taXNzaW9uCQAAawAAAAMFAAAAHGFtb3VudFZpcnR1YWxSZXBsZW5pc2hUb2tlbkEFAAAAC3NjYWxlVmFsdWU4BQAAABhiYWxhbmNlQWZ0ZXJWaXJ0dWFsU3dhcEEEAAAAE3JhdGlvU2hhcmVUb2tlbnNJbkIJAABrAAAAAwkBAAAAEGRlZHVjdFN0YWtpbmdGZWUAAAACBQAAABxhbW91bnRWaXJ0dWFsUmVwbGVuaXNoVG9rZW5CBQAAAAhhc3NldElkQgUAAAALc2NhbGVWYWx1ZTgFAAAAGGJhbGFuY2VBZnRlclZpcnR1YWxTd2FwQgQAAAAVc2hhcmVUb2tlblRvUGF5QW1vdW50CQAAawAAAAMJAAGXAAAAAQkABEwAAAACBQAAABNyYXRpb1NoYXJlVG9rZW5zSW5BCQAETAAAAAIFAAAAE3JhdGlvU2hhcmVUb2tlbnNJbkIFAAAAA25pbAUAAAAQc2hhcmVBc3NldFN1cHBseQUAAAALc2NhbGVWYWx1ZTgEAAAAHXNoYXJlVG9rZW5Ub1BheUFtb3VudFRvRGVsZXRlCQAAawAAAAMJAAGWAAAAAQkABEwAAAACBQAAABNyYXRpb1NoYXJlVG9rZW5zSW5BCQAETAAAAAIFAAAAE3JhdGlvU2hhcmVUb2tlbnNJbkIFAAAAA25pbAUAAAAQc2hhcmVBc3NldFN1cHBseQUAAAALc2NhbGVWYWx1ZTgEAAAAE2ludmFyaWFudENhbGN1bGF0ZWQJAQAAAA1pbnZhcmlhbnRDYWxjAAAAAgkAAGQAAAACBQAAAAhiYWxhbmNlQQUAAAAJcG10QW1vdW50BQAAAAhiYWxhbmNlQgQAAAAPbmV3QW1vdW50VG9rZW5BCQAAZAAAAAIFAAAACGJhbGFuY2VBBQAAAAlwbXRBbW91bnQEAAAAD25ld0Ftb3VudFRva2VuQgUAAAAIYmFsYW5jZUIEAAAABHhHZXQJAABrAAAAAwUAAAAVc2hhcmVUb2tlblRvUGF5QW1vdW50BQAAAA9uZXdBbW91bnRUb2tlbkEJAABkAAAAAgUAAAAQc2hhcmVBc3NldFN1cHBseQUAAAAVc2hhcmVUb2tlblRvUGF5QW1vdW50BAAAAAR5R2V0CQAAawAAAAMFAAAAFXNoYXJlVG9rZW5Ub1BheUFtb3VudAUAAAAPbmV3QW1vdW50VG9rZW5CCQAAZAAAAAIFAAAAEHNoYXJlQXNzZXRTdXBwbHkFAAAAFXNoYXJlVG9rZW5Ub1BheUFtb3VudAQAAAATZEFwcFRocmVzaG9sZEFtb3VudAkAAGsAAAADCQAAZAAAAAIFAAAAD25ld0Ftb3VudFRva2VuQQUAAAAPbmV3QW1vdW50VG9rZW5CBQAAAA1kQXBwVGhyZXNob2xkCQAAaAAAAAIAAAAAAAAAAAIFAAAAFmRBcHBUaHJlc2hvbGREZWxpbWl0ZXIDAwkAAGYAAAACBQAAABNkQXBwVGhyZXNob2xkQW1vdW50BQAAAA9uZXdBbW91bnRUb2tlbkEGCQAAZgAAAAIFAAAAE2RBcHBUaHJlc2hvbGRBbW91bnQFAAAAD25ld0Ftb3VudFRva2VuQgkBAAAADnRocm93VGhyZXNob2xkAAAAAwUAAAATZEFwcFRocmVzaG9sZEFtb3VudAUAAAAPbmV3QW1vdW50VG9rZW5BBQAAAA9uZXdBbW91bnRUb2tlbkIJAARMAAAAAgkBAAAAB1JlaXNzdWUAAAADBQAAAAxzaGFyZUFzc2V0SWQFAAAAFXNoYXJlVG9rZW5Ub1BheUFtb3VudAYJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyBQAAABVzaGFyZVRva2VuVG9QYXlBbW91bnQFAAAADHNoYXJlQXNzZXRJZAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAATa2V5U2hhcmVBc3NldFN1cHBseQkAAGQAAAACBQAAABBzaGFyZUFzc2V0U3VwcGx5BQAAABVzaGFyZVRva2VuVG9QYXlBbW91bnQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAC2tleUJhbGFuY2VBBQAAAA9uZXdBbW91bnRUb2tlbkEJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAADGtleUludmFyaWFudAUAAAATaW52YXJpYW50Q2FsY3VsYXRlZAUAAAADbmlsCQAAAgAAAAECAAAAOmluY29ycmVjdCB2aXJ0dWFsU3dhcFRva2VuUGF5IG9yIHZpcnR1YWxTd2FwVG9rZW5HZXQgdmFsdWUDCQAAAAAAAAIFAAAACnBtdEFzc2V0SWQFAAAACGFzc2V0SWRCBAAAABxhbW91bnRWaXJ0dWFsUmVwbGVuaXNoVG9rZW5CCQAAZQAAAAIFAAAACXBtdEFtb3VudAUAAAATdmlydHVhbFN3YXBUb2tlblBheQQAAAAcYW1vdW50VmlydHVhbFJlcGxlbmlzaFRva2VuQQUAAAATdmlydHVhbFN3YXBUb2tlbkdldAQAAAAYYmFsYW5jZUFmdGVyVmlydHVhbFN3YXBBCQAAZQAAAAIFAAAACGJhbGFuY2VBBQAAABN2aXJ0dWFsU3dhcFRva2VuR2V0BAAAABhiYWxhbmNlQWZ0ZXJWaXJ0dWFsU3dhcEIJAABkAAAAAgUAAAAIYmFsYW5jZUIFAAAAE3ZpcnR1YWxTd2FwVG9rZW5QYXkEAAAADGludmFyaWFudE5ldwkBAAAADWludmFyaWFudENhbGMAAAACBQAAABhiYWxhbmNlQWZ0ZXJWaXJ0dWFsU3dhcEEFAAAAGGJhbGFuY2VBZnRlclZpcnR1YWxTd2FwQgQAAAAXaW52YXJpYW50RXN0aW1hdGVkUmF0aW8JAABrAAAAAwUAAAAJaW52YXJpYW50BQAAAAtzY2FsZVZhbHVlOAUAAAAMaW52YXJpYW50TmV3AwMJAABmAAAAAgUAAAAXaW52YXJpYW50RXN0aW1hdGVkUmF0aW8FAAAAF3NsaXBwYWdlVmFsdWVNaW5Gb3JTd2FwCQAAZwAAAAIJAABlAAAAAgUAAAAMaW52YXJpYW50TmV3BQAAAAlpbnZhcmlhbnQAAAAAAAAAAAAHBAAAACVyYXRpb1ZpcnR1YWxCYWxhbmNlVG9WaXJ0dWFsUmVwbGVuaXNoCQAAaQAAAAIJAABrAAAAAwUAAAAYYmFsYW5jZUFmdGVyVmlydHVhbFN3YXBBCQAAaAAAAAIFAAAAC3NjYWxlVmFsdWU4BQAAAAtzY2FsZVZhbHVlOAUAAAAYYmFsYW5jZUFmdGVyVmlydHVhbFN3YXBCCQAAawAAAAMFAAAAHGFtb3VudFZpcnR1YWxSZXBsZW5pc2hUb2tlbkEFAAAAC3NjYWxlVmFsdWU4BQAAABxhbW91bnRWaXJ0dWFsUmVwbGVuaXNoVG9rZW5CAwMJAABmAAAAAgUAAAAcc2xpcHBhZ2VWYWx1ZU1pbkZvclJlcGxlbmlzaAUAAAAlcmF0aW9WaXJ0dWFsQmFsYW5jZVRvVmlydHVhbFJlcGxlbmlzaAYJAABmAAAAAgUAAAAlcmF0aW9WaXJ0dWFsQmFsYW5jZVRvVmlydHVhbFJlcGxlbmlzaAUAAAAcc2xpcHBhZ2VWYWx1ZU1heEZvclJlcGxlbmlzaAkAAAIAAAABAgAAAGZzd29wIHdpdGggdmlydHVhbFN3YXBUb2tlblBheSBhbmQgdmlydHVhbFN3YXBUb2tlbkdldCBwb3NzaWJsZSwgYnV0IHJhdGlvIGFmdGVyIHZpcnR1YWwgc3dhcCBpbmNvcnJlY3QEAAAAE3JhdGlvU2hhcmVUb2tlbnNJbkEJAABrAAAAAwkBAAAAEGRlZHVjdFN0YWtpbmdGZWUAAAACBQAAABxhbW91bnRWaXJ0dWFsUmVwbGVuaXNoVG9rZW5BBQAAAAhhc3NldElkQQUAAAALc2NhbGVWYWx1ZTgFAAAAGGJhbGFuY2VBZnRlclZpcnR1YWxTd2FwQQQAAAATcmF0aW9TaGFyZVRva2Vuc0luQgkAAGsAAAADCQEAAAAQZGVkdWN0U3Rha2luZ0ZlZQAAAAIFAAAAHGFtb3VudFZpcnR1YWxSZXBsZW5pc2hUb2tlbkIFAAAACGFzc2V0SWRCBQAAAAtzY2FsZVZhbHVlOAUAAAAYYmFsYW5jZUFmdGVyVmlydHVhbFN3YXBCBAAAABVzaGFyZVRva2VuVG9QYXlBbW91bnQJAABrAAAAAwkAAZcAAAABCQAETAAAAAIFAAAAE3JhdGlvU2hhcmVUb2tlbnNJbkEJAARMAAAAAgUAAAATcmF0aW9TaGFyZVRva2Vuc0luQgUAAAADbmlsBQAAABBzaGFyZUFzc2V0U3VwcGx5BQAAAAtzY2FsZVZhbHVlOAQAAAATaW52YXJpYW50Q2FsY3VsYXRlZAkBAAAADWludmFyaWFudENhbGMAAAACBQAAAAhiYWxhbmNlQQkAAGQAAAACBQAAAAhiYWxhbmNlQgUAAAAJcG10QW1vdW50BAAAAA9uZXdBbW91bnRUb2tlbkEFAAAACGJhbGFuY2VBBAAAAA9uZXdBbW91bnRUb2tlbkIJAABkAAAAAgUAAAAIYmFsYW5jZUIFAAAACXBtdEFtb3VudAQAAAATZEFwcFRocmVzaG9sZEFtb3VudAkAAGsAAAADCQAAZAAAAAIFAAAAD25ld0Ftb3VudFRva2VuQQUAAAAPbmV3QW1vdW50VG9rZW5CBQAAAA1kQXBwVGhyZXNob2xkCQAAaAAAAAIAAAAAAAAAAAIFAAAAFmRBcHBUaHJlc2hvbGREZWxpbWl0ZXIDAwkAAGYAAAACBQAAABNkQXBwVGhyZXNob2xkQW1vdW50BQAAAA9uZXdBbW91bnRUb2tlbkEGCQAAZgAAAAIFAAAAE2RBcHBUaHJlc2hvbGRBbW91bnQFAAAAD25ld0Ftb3VudFRva2VuQgkBAAAADnRocm93VGhyZXNob2xkAAAAAwUAAAATZEFwcFRocmVzaG9sZEFtb3VudAUAAAAPbmV3QW1vdW50VG9rZW5BBQAAAA9uZXdBbW91bnRUb2tlbkIJAARMAAAAAgkBAAAAB1JlaXNzdWUAAAADBQAAAAxzaGFyZUFzc2V0SWQFAAAAFXNoYXJlVG9rZW5Ub1BheUFtb3VudAYJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyBQAAABVzaGFyZVRva2VuVG9QYXlBbW91bnQFAAAADHNoYXJlQXNzZXRJZAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAATa2V5U2hhcmVBc3NldFN1cHBseQkAAGQAAAACBQAAABBzaGFyZUFzc2V0U3VwcGx5BQAAABVzaGFyZVRva2VuVG9QYXlBbW91bnQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAC2tleUJhbGFuY2VCBQAAAA9uZXdBbW91bnRUb2tlbkIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAADGtleUludmFyaWFudAUAAAATaW52YXJpYW50Q2FsY3VsYXRlZAUAAAADbmlsCQAAAgAAAAECAAAAOmluY29ycmVjdCB2aXJ0dWFsU3dhcFRva2VuUGF5IG9yIHZpcnR1YWxTd2FwVG9rZW5HZXQgdmFsdWUJAQAAAAt0aHJvd0Fzc2V0cwAAAAAAAAABaQEAAAAIZXhjaGFuZ2UAAAACAAAAGGVzdGltYXRlZEFtb3VudFRvUmVjZWl2ZQAAABJtaW5BbW91bnRUb1JlY2VpdmUEAAAADSR0MDQ5OTIyNDk5OTcJAAUUAAAAAggJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAAAAAGYW1vdW50CAkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAAAAAdhc3NldElkBAAAAAlwbXRBbW91bnQIBQAAAA0kdDA0OTkyMjQ5OTk3AAAAAl8xBAAAAApwbXRBc3NldElkCAUAAAANJHQwNDk5MjI0OTk5NwAAAAJfMgMJAQAAAAEhAAAAAQUAAAAIaXNBY3RpdmUJAQAAAA90aHJvd0lzSW5hY3RpdmUAAAAAAwkAAGcAAAACAAAAAAAAAAAABQAAABhlc3RpbWF0ZWRBbW91bnRUb1JlY2VpdmUJAAACAAAAAQkAASwAAAACAgAAACtFc3RpbWF0ZWQgYW1vdW50IG11c3QgYmUgcG9zaXRpdmUuIEFjdHVhbDogCQABpAAAAAEFAAAAGGVzdGltYXRlZEFtb3VudFRvUmVjZWl2ZQMJAABmAAAAAgUAAAASbWluQW1vdW50VG9SZWNlaXZlBQAAABhlc3RpbWF0ZWRBbW91bnRUb1JlY2VpdmUJAAACAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAA7TWluaW1hbCBhbW91bnQgY2FuJ3QgYmUgZ3JlYXRlciB0aGFuIGVzdGltYXRlZC4gRXN0aW1hdGVkOiAJAAGkAAAAAQUAAAAYZXN0aW1hdGVkQW1vdW50VG9SZWNlaXZlAgAAAAsuIE1pbmltYWw6IAkAAaQAAAABBQAAABJtaW5BbW91bnRUb1JlY2VpdmUDCQEAAAACIT0AAAACCQABkAAAAAEIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAABCQAAAgAAAAECAAAAHU9uZSBhdHRhY2hlZCBwYXltZW50IGV4cGVjdGVkAwkBAAAAASEAAAABBQAAABBoYXNFbm91Z2hCYWxhbmNlCQEAAAARc3VzcGVuZFN1c3BpY2lvdXMAAAAAAwkAAAAAAAACBQAAAApwbXRBc3NldElkBQAAAAhhc3NldElkQQQAAAALYXNzZXRJZFNlbmQFAAAACGFzc2V0SWRCBAAAABBhbW91bnRXaXRob3V0RmVlCQEAAAAaY2FsY3VsYXRlSG93TWFueVNlbmRUb2tlbkIAAAAFBQAAABhlc3RpbWF0ZWRBbW91bnRUb1JlY2VpdmUFAAAAEm1pbkFtb3VudFRvUmVjZWl2ZQUAAAAIYmFsYW5jZUEFAAAACGJhbGFuY2VCBQAAAAlwbXRBbW91bnQEAAAADWFtb3VudFdpdGhGZWUJAABrAAAAAwUAAAAQYW1vdW50V2l0aG91dEZlZQkAAGUAAAACBQAAABhjb21taXNzaW9uU2NhbGVEZWxpbWl0ZXIFAAAACmNvbW1pc3Npb24FAAAAGGNvbW1pc3Npb25TY2FsZURlbGltaXRlcgQAAAAQZ292ZXJuYW5jZVJld2FyZAkAAGsAAAADBQAAABBhbW91bnRXaXRob3V0RmVlBQAAABRjb21taXNzaW9uR292ZXJuYW5jZQUAAAAYY29tbWlzc2lvblNjYWxlRGVsaW1pdGVyBAAAAA9uZXdBbW91bnRUb2tlbkEJAABkAAAAAgUAAAAIYmFsYW5jZUEFAAAACXBtdEFtb3VudAQAAAAPbmV3QW1vdW50VG9rZW5CCQAAZQAAAAIJAABlAAAAAgUAAAAIYmFsYW5jZUIFAAAADWFtb3VudFdpdGhGZWUFAAAAEGdvdmVybmFuY2VSZXdhcmQEAAAAE2RBcHBUaHJlc2hvbGRBbW91bnQJAABrAAAAAwkAAGQAAAACBQAAAA9uZXdBbW91bnRUb2tlbkEFAAAAD25ld0Ftb3VudFRva2VuQgUAAAANZEFwcFRocmVzaG9sZAkAAGgAAAACAAAAAAAAAAACBQAAABZkQXBwVGhyZXNob2xkRGVsaW1pdGVyAwMJAABmAAAAAgUAAAATZEFwcFRocmVzaG9sZEFtb3VudAUAAAAPbmV3QW1vdW50VG9rZW5BBgkAAGYAAAACBQAAABNkQXBwVGhyZXNob2xkQW1vdW50BQAAAA9uZXdBbW91bnRUb2tlbkIJAQAAAA50aHJvd1RocmVzaG9sZAAAAAMFAAAAE2RBcHBUaHJlc2hvbGRBbW91bnQFAAAAD25ld0Ftb3VudFRva2VuQQUAAAAPbmV3QW1vdW50VG9rZW5CAwMDCQAAAAAAAAIFAAAACGFzc2V0SWRBBQAAAARVU0ROCQAAZwAAAAIFAAAAEHN0YWtlZEFtb3VudFVTRE4FAAAAD25ld0Ftb3VudFRva2VuQQcGAwkAAAAAAAACBQAAAAhhc3NldElkQgUAAAAEVVNETgkAAGcAAAACBQAAABBzdGFrZWRBbW91bnRVU0ROBQAAAA9uZXdBbW91bnRUb2tlbkIHCQEAAAAhdGhyb3dJbnN1ZmZpY2llbnRBdmFpbGFibGVCYWxhbmNlAAAAAwUAAAANYW1vdW50V2l0aEZlZQUAAAARYXZhaWxhYmxlQmFsYW5jZUIFAAAACmFzc2V0TmFtZUIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAC2tleUJhbGFuY2VBBQAAAA9uZXdBbW91bnRUb2tlbkEJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAC2tleUJhbGFuY2VCBQAAAA9uZXdBbW91bnRUb2tlbkIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAADGtleUludmFyaWFudAkBAAAADWludmFyaWFudENhbGMAAAACCQAAZAAAAAIFAAAACGJhbGFuY2VBBQAAAAlwbXRBbW91bnQJAABlAAAAAgkAAGUAAAACBQAAAAhiYWxhbmNlQgUAAAANYW1vdW50V2l0aEZlZQUAAAAQZ292ZXJuYW5jZVJld2FyZAkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIFAAAADWFtb3VudFdpdGhGZWUFAAAAC2Fzc2V0SWRTZW5kCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMFAAAAEWdvdmVybmFuY2VBZGRyZXNzBQAAABBnb3Zlcm5hbmNlUmV3YXJkBQAAAAthc3NldElkU2VuZAUAAAADbmlsAwkAAAAAAAACBQAAAApwbXRBc3NldElkBQAAAAhhc3NldElkQgQAAAALYXNzZXRJZFNlbmQFAAAACGFzc2V0SWRBBAAAABBhbW91bnRXaXRob3V0RmVlCQEAAAAaY2FsY3VsYXRlSG93TWFueVNlbmRUb2tlbkEAAAAFBQAAABhlc3RpbWF0ZWRBbW91bnRUb1JlY2VpdmUFAAAAEm1pbkFtb3VudFRvUmVjZWl2ZQUAAAAIYmFsYW5jZUEFAAAACGJhbGFuY2VCBQAAAAlwbXRBbW91bnQEAAAADWFtb3VudFdpdGhGZWUJAABrAAAAAwUAAAAQYW1vdW50V2l0aG91dEZlZQkAAGUAAAACBQAAABhjb21taXNzaW9uU2NhbGVEZWxpbWl0ZXIFAAAACmNvbW1pc3Npb24FAAAAGGNvbW1pc3Npb25TY2FsZURlbGltaXRlcgQAAAAQZ292ZXJuYW5jZVJld2FyZAkAAGsAAAADBQAAABBhbW91bnRXaXRob3V0RmVlBQAAABRjb21taXNzaW9uR292ZXJuYW5jZQUAAAAYY29tbWlzc2lvblNjYWxlRGVsaW1pdGVyBAAAAA9uZXdBbW91bnRUb2tlbkEJAABlAAAAAgkAAGUAAAACBQAAAAhiYWxhbmNlQQUAAAANYW1vdW50V2l0aEZlZQUAAAAQZ292ZXJuYW5jZVJld2FyZAQAAAAPbmV3QW1vdW50VG9rZW5CCQAAZAAAAAIFAAAACGJhbGFuY2VCBQAAAAlwbXRBbW91bnQEAAAAE2RBcHBUaHJlc2hvbGRBbW91bnQJAABrAAAAAwkAAGQAAAACBQAAAA9uZXdBbW91bnRUb2tlbkEFAAAAD25ld0Ftb3VudFRva2VuQgUAAAANZEFwcFRocmVzaG9sZAkAAGgAAAACAAAAAAAAAAACBQAAABZkQXBwVGhyZXNob2xkRGVsaW1pdGVyAwMJAABmAAAAAgUAAAATZEFwcFRocmVzaG9sZEFtb3VudAUAAAAPbmV3QW1vdW50VG9rZW5BBgkAAGYAAAACBQAAABNkQXBwVGhyZXNob2xkQW1vdW50BQAAAA9uZXdBbW91bnRUb2tlbkIJAQAAAA50aHJvd1RocmVzaG9sZAAAAAMFAAAAE2RBcHBUaHJlc2hvbGRBbW91bnQFAAAAD25ld0Ftb3VudFRva2VuQQUAAAAPbmV3QW1vdW50VG9rZW5CAwMDCQAAAAAAAAIFAAAACGFzc2V0SWRBBQAAAARVU0ROCQAAZwAAAAIFAAAAEHN0YWtlZEFtb3VudFVTRE4FAAAAD25ld0Ftb3VudFRva2VuQQcGAwkAAAAAAAACBQAAAAhhc3NldElkQgUAAAAEVVNETgkAAGcAAAACBQAAABBzdGFrZWRBbW91bnRVU0ROBQAAAA9uZXdBbW91bnRUb2tlbkIHCQEAAAAhdGhyb3dJbnN1ZmZpY2llbnRBdmFpbGFibGVCYWxhbmNlAAAAAwUAAAANYW1vdW50V2l0aEZlZQUAAAARYXZhaWxhYmxlQmFsYW5jZUEFAAAACmFzc2V0TmFtZUEJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAC2tleUJhbGFuY2VBBQAAAA9uZXdBbW91bnRUb2tlbkEJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAC2tleUJhbGFuY2VCBQAAAA9uZXdBbW91bnRUb2tlbkIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAADGtleUludmFyaWFudAkBAAAADWludmFyaWFudENhbGMAAAACCQAAZQAAAAIJAABlAAAAAgUAAAAIYmFsYW5jZUEFAAAADWFtb3VudFdpdGhGZWUFAAAAEGdvdmVybmFuY2VSZXdhcmQJAABkAAAAAgUAAAAIYmFsYW5jZUIFAAAACXBtdEFtb3VudAkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIFAAAADWFtb3VudFdpdGhGZWUFAAAAC2Fzc2V0SWRTZW5kCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMFAAAAEWdvdmVybmFuY2VBZGRyZXNzBQAAABBnb3Zlcm5hbmNlUmV3YXJkBQAAAAthc3NldElkU2VuZAUAAAADbmlsCQEAAAALdGhyb3dBc3NldHMAAAAAAAAAAWkBAAAAGXRha2VJbnRvQWNjb3VudEV4dHJhRnVuZHMAAAABAAAAC2Ftb3VudExlYXZlBAAAAB11bmNvdW50YWJsZUFtb3VudEVucm9sbEFzc2V0QQkAAGUAAAACBQAAABlhY2NvdW50QmFsYW5jZVdpdGhTdGFrZWRBBQAAAAhiYWxhbmNlQQQAAAAddW5jb3VudGFibGVBbW91bnRFbnJvbGxBc3NldEIJAABlAAAAAgUAAAAZYWNjb3VudEJhbGFuY2VXaXRoU3Rha2VkQgUAAAAIYmFsYW5jZUIEAAAADWFtb3VudEVucm9sbEEJAABlAAAAAgUAAAAddW5jb3VudGFibGVBbW91bnRFbnJvbGxBc3NldEEDCQAAAAAAAAIFAAAACGFzc2V0SWRBBQAAAARVU0ROBQAAAAthbW91bnRMZWF2ZQAAAAAAAAAAAAQAAAANYW1vdW50RW5yb2xsQgkAAGUAAAACBQAAAB11bmNvdW50YWJsZUFtb3VudEVucm9sbEFzc2V0QgMJAAAAAAAAAgUAAAAIYXNzZXRJZEIFAAAABFVTRE4FAAAAC2Ftb3VudExlYXZlAAAAAAAAAAAAAwkBAAAAASEAAAABBQAAAAhpc0FjdGl2ZQkBAAAAD3Rocm93SXNJbmFjdGl2ZQAAAAADCQEAAAABIQAAAAEJAQAAAA9jb250YWluc0VsZW1lbnQAAAACCQAETAAAAAIFAAAADGFkbWluUHViS2V5MQkABEwAAAACBQAAAAxhZG1pblB1YktleTIJAARMAAAAAgUAAAAMYWRtaW5QdWJLZXkzCQAETAAAAAIFAAAAEmFkbWluUHViS2V5U3Rha2luZwUAAAADbmlsCAUAAAABaQAAAA9jYWxsZXJQdWJsaWNLZXkJAQAAAA50aHJvd09ubHlBZG1pbgAAAAADCQAAZgAAAAIAAAAAAAAAAAAFAAAAC2Ftb3VudExlYXZlCQAAAgAAAAEJAAEsAAAAAgIAAAAzQXJndW1lbnQgJ2Ftb3VudExlYXZlJyBjYW5ub3QgYmUgbmVnYXRpdmUuIEFjdHVhbDogCQABpAAAAAEFAAAAC2Ftb3VudExlYXZlAwMJAABmAAAAAgAAAAAAAAAAAAUAAAAddW5jb3VudGFibGVBbW91bnRFbnJvbGxBc3NldEEGCQAAZgAAAAIAAAAAAAAAAAAFAAAAHXVuY291bnRhYmxlQW1vdW50RW5yb2xsQXNzZXRCCQEAAAAHc3VzcGVuZAAAAAECAAAAFkVucm9sbCBhbW91bnQgbmVnYXRpdmUDAwkAAGYAAAACAAAAAAAAAAAABQAAAA1hbW91bnRFbnJvbGxBBgkAAGYAAAACAAAAAAAAAAAABQAAAA1hbW91bnRFbnJvbGxCCQAAAgAAAAECAAAAFVRvbyBsYXJnZSBhbW91bnRMZWF2ZQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAALa2V5QmFsYW5jZUEJAABkAAAAAgUAAAAIYmFsYW5jZUEFAAAADWFtb3VudEVucm9sbEEJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAC2tleUJhbGFuY2VCCQAAZAAAAAIFAAAACGJhbGFuY2VCBQAAAA1hbW91bnRFbnJvbGxCBQAAAANuaWwAAAAA8WwIYg==", "chainId": 84, "height": 1427381, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 28EmePggwTkGWLhme7YgGg3qMXNec9JzwSoWJR2ogemC Next: BNtv4PQa8EXSrzAnfNNzzXJDLDks5AM4xixcmKwHwKwe Diff:
OldNewDifferences
2323
2424 let k = "commission_scale_delimiter"
2525
26-let l = "invariant"
26+let l = "commission_governance"
2727
28-let m = "shutdown_cause"
28+let m = "invariant"
2929
30-let n = base58'7FhFLst7Htn4uYxGH7xYMTAmbydLVoiZef3eFghi7CG4'
30+let n = "shutdown_cause"
3131
3232 let o = base58'7FhFLst7Htn4uYxGH7xYMTAmbydLVoiZef3eFghi7CG4'
3333
3737
3838 let r = base58'7FhFLst7Htn4uYxGH7xYMTAmbydLVoiZef3eFghi7CG4'
3939
40-let s = Address(base58'3MqhxbxHEMtp2Rwy1gUb6cPSJHQepdap1Yp')
40+let s = base58'7FhFLst7Htn4uYxGH7xYMTAmbydLVoiZef3eFghi7CG4'
4141
4242 let t = Address(base58'3MqhxbxHEMtp2Rwy1gUb6cPSJHQepdap1Yp')
4343
44-let u = base58'3FUNGbzfNsQ1AZfvumCUqARXvpjjLQrvCzorYuDryQAq'
44+let u = Address(base58'3MqhxbxHEMtp2Rwy1gUb6cPSJHQepdap1Yp')
4545
46-let v = (9 * value(value(assetInfo(u)).minSponsoredFee))
46+let v = base58'3FUNGbzfNsQ1AZfvumCUqARXvpjjLQrvCzorYuDryQAq'
4747
48-let w = getBooleanValue(this, c)
48+let w = (9 * value(value(assetInfo(v)).minSponsoredFee))
4949
50-let x = getStringValue(this, d)
50+let x = getBooleanValue(this, c)
5151
52-let y = getStringValue(this, e)
52+let y = getStringValue(this, d)
5353
54-let z = if ((x == "WAVES"))
55- then unit
56- else fromBase58String(x)
54+let z = getStringValue(this, e)
5755
5856 let A = if ((y == "WAVES"))
5957 then unit
6058 else fromBase58String(y)
6159
62-let B = {
63- let C = z
64- if ($isInstanceOf(C, "ByteVector"))
60+let B = if ((z == "WAVES"))
61+ then unit
62+ else fromBase58String(z)
63+
64+let C = {
65+ let D = A
66+ if ($isInstanceOf(D, "ByteVector"))
6567 then {
66- let D = C
67- value(assetInfo(D)).name
68+ let E = D
69+ value(assetInfo(E)).name
6870 }
69- else if ($isInstanceOf(C, "Unit"))
71+ else if ($isInstanceOf(D, "Unit"))
7072 then {
71- let E = C
73+ let F = D
7274 "WAVES"
7375 }
7476 else throw("Match error")
7577 }
7678
77-let F = {
78- let C = A
79- if ($isInstanceOf(C, "ByteVector"))
79+let G = {
80+ let D = B
81+ if ($isInstanceOf(D, "ByteVector"))
8082 then {
81- let D = C
82- value(assetInfo(D)).name
83+ let E = D
84+ value(assetInfo(E)).name
8385 }
84- else if ($isInstanceOf(C, "Unit"))
86+ else if ($isInstanceOf(D, "Unit"))
8587 then {
86- let E = C
88+ let F = D
8789 "WAVES"
8890 }
8991 else throw("Match error")
9092 }
9193
92-let G = getIntegerValue(this, f)
94+let H = getIntegerValue(this, f)
9395
94-let H = getIntegerValue(this, g)
96+let I = getIntegerValue(this, g)
9597
96-let I = fromBase58String(getStringValue(this, h))
98+let J = fromBase58String(getStringValue(this, h))
9799
98-let J = getIntegerValue(this, i)
100+let K = getIntegerValue(this, i)
99101
100-let K = getIntegerValue(this, l)
102+let L = getIntegerValue(this, m)
101103
102-let L = 500
104+let M = 500
103105
104-let M = 200
106+let N = 200
105107
106-let N = 1000000
108+let O = 1000000
107109
108-let O = 1000
110+let P = 1000
109111
110-let P = 100000000
112+let Q = 100000000
111113
112-let Q = 1000000000000
114+let R = 1000000000000
113115
114-let R = 1000
116+let S = 1000
115117
116-let S = 8
118+let T = 8
117119
118-let T = 50
120+let U = 12
119121
120-let U = 100
122+let V = 50
121123
122-let V = 90000000
124+let W = 100
123125
124-let W = 110000000
126+let X = 100000000
125127
126-let X = 50
128+let Y = 99999000
127129
128-let Y = 2
130+let Z = 50
129131
130-let Z = 46000000
132+let aa = 2
131133
132-func aa (ab) = {
133- let C = ab
134- if ($isInstanceOf(C, "ByteVector"))
134+let ab = 46000000
135+
136+let ac = 8
137+
138+func ad (ae) = {
139+ let D = ae
140+ if ($isInstanceOf(D, "ByteVector"))
135141 then {
136- let D = C
137- assetBalance(this, D)
142+ let E = D
143+ assetBalance(this, E)
138144 }
139- else if ($isInstanceOf(C, "Unit"))
145+ else if ($isInstanceOf(D, "Unit"))
140146 then {
141- let E = C
147+ let F = D
142148 wavesBalance(this).available
143149 }
144150 else throw("Match error")
145151 }
146152
147153
148-let ac = {
149- let C = getInteger(t, ((("rpd_balance_" + toBase58String(u)) + "_") + toString(this)))
150- if ($isInstanceOf(C, "Int"))
154+let af = {
155+ let D = getInteger(u, ((("rpd_balance_" + toBase58String(v)) + "_") + toString(this)))
156+ if ($isInstanceOf(D, "Int"))
151157 then {
152- let ad = C
153- ad
158+ let ag = D
159+ ag
154160 }
155- else if ($isInstanceOf(C, "Unit"))
161+ else if ($isInstanceOf(D, "Unit"))
156162 then {
157- let ae = C
163+ let ah = D
158164 0
159165 }
160166 else throw("Match error")
161167 }
162168
163-let af = (G - (if ((z == u))
164- then ac
169+let ai = (H - (if ((A == v))
170+ then af
165171 else 0))
166172
167-let ag = (H - (if ((A == u))
168- then ac
173+let aj = (I - (if ((B == v))
174+ then af
169175 else 0))
170176
171-let ah = (aa(z) + (if ((z == u))
172- then ac
177+let ak = (ad(A) + (if ((A == v))
178+ then af
173179 else 0))
174180
175-let ai = (aa(A) + (if ((A == u))
176- then ac
181+let al = (ad(B) + (if ((B == v))
182+ then af
177183 else 0))
178184
179-let aj = if ((ah >= G))
180- then (ai >= H)
185+let am = if ((ak >= H))
186+ then (al >= I)
181187 else false
182188
183-func ak (al,am) = (((fraction(Q, al, am) + fraction(Q, am, al)) / 2) / 10000)
189+func an (ao,ap) = (((fraction(R, ao, ap) + fraction(R, ap, ao)) / 2) / 10000)
184190
185191
186-func an (al,am) = {
187- let ao = ak(al, am)
188- (fraction((al + am), P, pow(ao, S, X, Y, S, UP)) + (2 * fraction(pow(fraction(al, am, P), 0, 5, 1, (S / 2), DOWN), pow((ao - Z), S, X, Y, S, DOWN), P)))
192+func aq (ao,ap) = {
193+ let ar = an(ao, ap)
194+ (fraction((ao + ap), Q, pow(ar, T, Z, aa, T, UP)) + (2 * fraction(pow(fraction(ao, ap, Q), 0, 5, 1, (T / 2), DOWN), pow((ar - ab), T, Z, aa, T, DOWN), Q)))
189195 }
190196
191197
192-func ap (aq,ar,as,at) = {
193- let au = (P - ((P * 1) / 10000000))
194- let av = (aq - ar)
195- let al = (G + as)
196- let am = (H + as)
197- let aw = if ((at == z))
198- then an(al, (H - aq))
199- else if ((at == A))
200- then an((G - aq), am)
201- else throw("Wrong asset in payment")
202- let ax = fraction(P, K, aw)
203- func ay (az,aA) = if (true)
204- then throw(((toString(az) + " ") + toString(aA)))
205- else {
206- let aB = (aq - ((aA * av) / 5))
207- let aC = if ((at == z))
208- then an(al, (H - aB))
209- else an((G - aB), am)
210- if (true)
211- then aB
212- else az
213- }
214-
215- let aD = {
216- let aE = [1, 2, 3, 4, 5]
217- let aF = size(aE)
218- let aG = -1
219- if ((aF == 0))
220- then aG
221- else {
222- let aH = ay(aG, aE[0])
223- if ((aF == 1))
224- then aH
225- else {
226- let aI = ay(aH, aE[1])
227- if ((aF == 2))
228- then aI
229- else {
230- let aJ = ay(aI, aE[2])
231- if ((aF == 3))
232- then aJ
233- else {
234- let aK = ay(aJ, aE[3])
235- if ((aF == 4))
236- then aK
237- else {
238- let aL = ay(aK, aE[4])
239- if ((aF == 5))
240- then aL
241- else {
242- let aM = ay(aL, aE[5])
243- throw("List size exceed 5")
244- }
245- }
246- }
247- }
248- }
249- }
250- }
251- if ((0 > aD))
252- then throw("something went wrong while working with amountToSend")
253- else if (if ((ax > au))
254- then (aw > K)
198+func as (at,au,av,aw,ax) = {
199+ let ay = (Q - ((Q * 1) / 10000000))
200+ let az = (at - au)
201+ let aA = (at - ((1 * az) / 5))
202+ let aB = (at - ((2 * az) / 5))
203+ let aC = (at - ((3 * az) / 5))
204+ let aD = (at - ((4 * az) / 5))
205+ let aE = (at - ((5 * az) / 5))
206+ let ap = (aw + ax)
207+ let aF = aq((av - at), ap)
208+ let aG = fraction(L, Q, aF)
209+ if ((0 >= (aq((av - aE), ap) - L)))
210+ then throw("minTokenReceiveAmount too large.err1")
211+ else if (if ((aG > ay))
212+ then ((aF - L) > 0)
255213 else false)
256- then aq
257- else ((aD * (N - L)) / N)
214+ then at
215+ else if (((aq((av - aA), ap) - L) > 0))
216+ then ((aA * (O - M)) / O)
217+ else if (((aq((av - aB), ap) - L) > 0))
218+ then ((aB * (O - M)) / O)
219+ else if (((aq((av - aC), ap) - L) > 0))
220+ then ((aC * (O - M)) / O)
221+ else if (((aq((av - aD), ap) - L) > 0))
222+ then ((aD * (O - M)) / O)
223+ else if (((aq((av - aE), ap) - L) > 0))
224+ then ((aE * (O - M)) / O)
225+ else throw("something went wrong while working with amountToSendStep. err2")
258226 }
259227
260228
261-func aN (ab) = {
262- let C = ab
263- if ($isInstanceOf(C, "ByteVector"))
229+func aH (at,au,av,aw,ax) = {
230+ let ay = (Q - ((Q * 1) / 10000000))
231+ let az = (at - au)
232+ let aA = (at - ((1 * az) / 5))
233+ let aB = (at - ((2 * az) / 5))
234+ let aC = (at - ((3 * az) / 5))
235+ let aD = (at - ((4 * az) / 5))
236+ let aE = (at - ((5 * az) / 5))
237+ let ao = (av + ax)
238+ let aF = aq(ao, (aw - at))
239+ let aG = fraction(L, Q, aF)
240+ if ((0 >= (aq(ao, (aw - aE)) - L)))
241+ then throw("minTokenReceiveAmount too large.err1")
242+ else if (if ((aG > ay))
243+ then ((aF - L) > 0)
244+ else false)
245+ then at
246+ else if (((aq(ao, (aw - aA)) - L) > 0))
247+ then ((aA * (O - M)) / O)
248+ else if (((aq(ao, (aw - aB)) - L) > 0))
249+ then ((aB * (O - M)) / O)
250+ else if (((aq(ao, (aw - aC)) - L) > 0))
251+ then ((aC * (O - M)) / O)
252+ else if (((aq(ao, (aw - aD)) - L) > 0))
253+ then ((aD * (O - M)) / O)
254+ else if (((aq(ao, (aw - aE)) - L) > 0))
255+ then ((aE * (O - M)) / O)
256+ else throw("something went wrong while working with amountToSendStep. err2")
257+ }
258+
259+
260+func aI (ae) = {
261+ let D = ae
262+ if ($isInstanceOf(D, "ByteVector"))
264263 then {
265- let D = C
266- let aO = toBase58String(D)
267- let aP = valueOrErrorMessage(assetInfo(D), (("Asset " + aO) + " doesn't exist"))
268- $Tuple3(aO, aP.name, aP.decimals)
264+ let E = D
265+ let aJ = toBase58String(E)
266+ let aK = valueOrErrorMessage(assetInfo(E), (("Asset " + aJ) + " doesn't exist"))
267+ $Tuple3(aJ, aK.name, aK.decimals)
269268 }
270- else if ($isInstanceOf(C, "Unit"))
269+ else if ($isInstanceOf(D, "Unit"))
271270 then {
272- let E = C
271+ let F = D
273272 $Tuple3("WAVES", "WAVES", 8)
274273 }
275274 else throw("Match error")
276275 }
277276
278277
279-func aQ (aR) = [BooleanEntry(c, false), StringEntry(m, aR)]
278+func aL (aM) = [BooleanEntry(c, false), StringEntry(n, aM)]
280279
281280
282-func aS (aT,ab) = if ((ab == u))
281+func aN (aO,ae) = if ((ae == v))
283282 then {
284- let aU = (aT - v)
285- if ((0 >= aU))
286- then throw((((("Insufficient amount " + toString(aT)) + " to deduct staking fee ") + toString(v)) + " USD-N"))
287- else aU
283+ let aP = (aO - w)
284+ if ((0 >= aP))
285+ then throw((((("Insufficient amount " + toString(aO)) + " to deduct staking fee ") + toString(w)) + " USD-N"))
286+ else aP
288287 }
289- else aT
288+ else aO
290289
291290
292-func aV () = throw("DApp is already active")
291+func aQ () = throw("DApp is already active")
293292
294293
295-func aW () = throw("DApp is inactive at this moment")
294+func aR () = throw("DApp is inactive at this moment")
296295
297296
298-func aX () = throw("Only admin can call this function")
297+func aS () = throw("Only admin can call this function")
299298
300299
301-func aY () = throw(((("Incorrect assets attached. Expected: " + x) + " and ") + y))
300+func aT () = throw(((("Incorrect assets attached. Expected: " + y) + " and ") + z))
302301
303302
304-func aZ (ba,bb,bc) = throw(((((((((("New balance in assets of the DApp is less than threshold " + toString(ba)) + ": ") + toString(bb)) + " ") + B) + ", ") + toString(bc)) + " ") + F))
303+func aU (aV,aW,aX) = throw(((((((((("New balance in assets of the DApp is less than threshold " + toString(aV)) + ": ") + toString(aW)) + " ") + C) + ", ") + toString(aX)) + " ") + G))
305304
306305
307-func bd (aT,be,bf) = throw((((((((("Insufficient DApp balance to pay " + toString(aT)) + " ") + bf) + " due to staking. Available: ") + toString(be)) + " ") + bf) + ". Please contact support in Telegram: https://t.me/swopfisupport"))
306+func aY (aO,aZ,ba) = throw((((((((("Insufficient DApp balance to pay " + toString(aO)) + " ") + ba) + " due to staking. Available: ") + toString(aZ)) + " ") + ba) + ". Please contact support in Telegram: https://t.me/swopfisupport"))
308307
309308
310-func bg (bb,bc) = throw((((((((((((((((("Insufficient DApp balance to pay " + toString(bb)) + " ") + B) + " and ") + toString(bc)) + " ") + F) + " due to staking. Available: ") + toString(af)) + " ") + B) + " and ") + toString(ag)) + " ") + F) + ". Please contact support in Telegram: https://t.me/swopfisupport"))
309+func bb (aW,aX) = throw((((((((((((((((("Insufficient DApp balance to pay " + toString(aW)) + " ") + C) + " and ") + toString(aX)) + " ") + G) + " due to staking. Available: ") + toString(ai)) + " ") + C) + " and ") + toString(aj)) + " ") + G) + ". Please contact support in Telegram: https://t.me/swopfisupport"))
311310
312311
313-func bh () = aQ(((((((((((((((("Suspicious state. Actual balances: " + toString(G)) + " ") + B) + ", ") + toString(H)) + " ") + F) + ". State: ") + toString(aa(z))) + " ") + B) + ", ") + toString(aa(A))) + " ") + F))
312+func bc () = aL(((((((((((((((("Suspicious state. Actual balances: " + toString(H)) + " ") + C) + ", ") + toString(I)) + " ") + G) + ". State: ") + toString(ad(A))) + " ") + C) + ", ") + toString(ad(B))) + " ") + G))
314313
315314
316-@Callable(bi)
315+@Callable(bd)
317316 func init () = {
318- let bj = $Tuple2(bi.payments[0].amount, bi.payments[0].assetId)
319- let bk = bj._1
320- let bl = bj._2
321- let bm = $Tuple2(bi.payments[1].amount, bi.payments[1].assetId)
322- let bn = bm._1
323- let bo = bm._2
324- let bp = aN(bl)
325- let bq = bp._1
326- let br = bp._2
327- let bs = bp._3
328- let bt = aN(bo)
329- let bu = bt._1
330- let bv = bt._2
331- let bw = bt._3
317+ let be = $Tuple2(bd.payments[0].amount, bd.payments[0].assetId)
318+ let bf = be._1
319+ let bg = be._2
320+ let bh = $Tuple2(bd.payments[1].amount, bd.payments[1].assetId)
321+ let bi = bh._1
322+ let bj = bh._2
323+ let bk = aI(bg)
324+ let bl = bk._1
325+ let bm = bk._2
326+ let bn = bk._3
327+ let bo = aI(bj)
328+ let bp = bo._1
329+ let bq = bo._2
330+ let br = bo._3
332331 if (isDefined(getBoolean(this, c)))
333- then aV()
334- else if ((bl == bo))
332+ then aQ()
333+ else if ((bg == bj))
335334 then throw("Assets must be different")
336335 else {
337- let bx = ((("s" + take(br, 7)) + "_") + take(bv, 7))
338- let by = ((((("ShareToken of SwopFi protocol for " + br) + " and ") + bv) + " at address ") + toString(this))
339- let bz = ((bs + bw) / 2)
340- let bA = fraction(pow(bk, bs, 5, 1, bs, HALFDOWN), pow(bn, bw, 5, 1, bw, HALFDOWN), pow(10, 0, bz, 0, 0, HALFDOWN))
341- let bB = Issue(bx, by, bA, bz, true)
342- let bC = calculateAssetId(bB)
343- let bD = an(bk, bn)
344-[StringEntry(b, a), BooleanEntry(c, true), StringEntry(d, bq), StringEntry(e, bu), IntegerEntry(f, bk), IntegerEntry(g, bn), IntegerEntry(l, bD), IntegerEntry(j, L), IntegerEntry(k, N), bB, StringEntry(h, toBase58String(bC)), IntegerEntry(i, bA), ScriptTransfer(bi.caller, bA, bC)]
336+ let bs = ((("s" + take(bm, 7)) + "_") + take(bq, 7))
337+ let bt = ((((("ShareToken of SwopFi protocol for " + bm) + " and ") + bq) + " at address ") + toString(this))
338+ let bu = ((bn + br) / 2)
339+ let bv = fraction(pow(bf, bn, 5, 1, bn, HALFDOWN), pow(bi, br, 5, 1, br, HALFDOWN), pow(10, 0, bu, 0, 0, HALFDOWN))
340+ let bw = Issue(bs, bt, bv, bu, true)
341+ let bx = calculateAssetId(bw)
342+ let by = aq(bf, bi)
343+[StringEntry(b, a), BooleanEntry(c, true), StringEntry(d, bl), StringEntry(e, bp), IntegerEntry(f, bf), IntegerEntry(g, bi), IntegerEntry(m, by), IntegerEntry(j, M), IntegerEntry(k, O), bw, StringEntry(h, toBase58String(bx)), IntegerEntry(i, bv), ScriptTransfer(bd.caller, bv, bx)]
345344 }
346345 }
347346
348347
349348
350-@Callable(bi)
351-func replenishWithTwoTokens (bE) = {
352- let bl = bi.payments[0].assetId
353- let bo = bi.payments[1].assetId
354- let bk = aS(bi.payments[0].amount, bl)
355- let bn = aS(bi.payments[1].amount, bo)
356- let bF = fraction(fraction(P, G, bk), O, fraction(P, H, bn))
357- let bG = fraction(P, bk, G)
358- let bH = fraction(P, bn, H)
359- let bI = fraction(min([bG, bH]), J, P)
360- let bD = an((G + bk), (H + bn))
361- if (!(w))
362- then aW()
363- else if (if ((0 > bE))
349+@Callable(bd)
350+func replenishWithTwoTokens (bz) = {
351+ let bg = bd.payments[0].assetId
352+ let bj = bd.payments[1].assetId
353+ let bf = aN(bd.payments[0].amount, bg)
354+ let bi = aN(bd.payments[1].amount, bj)
355+ let bA = fraction(fraction(H, Q, bf), P, fraction(I, Q, bi))
356+ let bB = fraction(bf, Q, H)
357+ let bC = fraction(bi, Q, I)
358+ let bD = fraction(min([bB, bC]), K, Q)
359+ let by = aq((H + bf), (I + bi))
360+ if (!(x))
361+ then aR()
362+ else if (if ((0 > bz))
364363 then true
365- else (bE > 10))
366- then throw("Slippage tolerance must be <= 1%")
367- else if ((size(bi.payments) != 2))
364+ else (bz > S))
365+ then throw(((("Slippage tolerance must be between 0 and " + toString(S)) + " inclusively. Actual: ") + toString(bz)))
366+ else if ((size(bd.payments) != 2))
368367 then throw("Two attached assets expected")
369- else if (if ((bl != z))
368+ else if (if ((bg != A))
370369 then true
371- else (bo != A))
372- then aY()
373- else if (if ((((O * (R - bE)) / R) > bF))
370+ else (bj != B))
371+ then aT()
372+ else if (if ((((P * (S - bz)) / S) > bA))
374373 then true
375- else (bF > ((O * (R + bE)) / R)))
374+ else (bA > ((P * (S + bz)) / S)))
376375 then throw("Incorrect assets amount: amounts must have the contract ratio")
377- else if ((bI == 0))
376+ else if ((bD == 0))
378377 then throw("Too small amount to replenish")
379- else if (!(aj))
380- then bh()
381- else [IntegerEntry(f, (G + bk)), IntegerEntry(g, (H + bn)), IntegerEntry(i, (J + bI)), IntegerEntry(l, bD), Reissue(I, bI, true), ScriptTransfer(bi.caller, bI, I)]
378+ else if (!(am))
379+ then bc()
380+ else [IntegerEntry(f, (H + bf)), IntegerEntry(g, (I + bi)), IntegerEntry(i, (K + bD)), IntegerEntry(m, by), Reissue(J, bD, true), ScriptTransfer(bd.caller, bD, J)]
382381 }
383382
384383
385384
386-@Callable(bi)
387-func replenishWithOneToken (bJ,bK) = {
388- let bL = $Tuple2(bi.payments[0].amount, bi.payments[0].assetId)
389- let bM = bL._1
390- let bN = bL._2
391- let bO = 5000000
392- let bP = 50000000
393- let bQ = if ((bP > bM))
385+@Callable(bd)
386+func replenishWithOneToken (bE,bF) = {
387+ let bG = $Tuple2(bd.payments[0].amount, bd.payments[0].assetId)
388+ let bH = bG._1
389+ let bI = bG._2
390+ let bJ = 5000000
391+ let bK = 50000000
392+ let bL = if ((bK > bH))
394393 then 100000
395394 else 1
396- let bR = (P - ((P * bQ) / 10000000))
397- let bS = (P + ((P * bQ) / 10000000))
398- let bT = (P - ((P * 1) / 10000000))
399- let bU = (P + ((P * 1) / 10000000))
400- if (!(w))
401- then aW()
402- else if ((bO > bM))
403- then throw((((("Payment amount " + toString(bM)) + " does not exceed the minimum amount of ") + toString(bO)) + " tokens"))
404- else if ((size(bi.payments) != 1))
395+ let bM = (Q - ((Q * bL) / 10000000))
396+ let bN = (Q + ((Q * bL) / 10000000))
397+ let bO = (Q - ((Q * 1) / 10000000))
398+ let bP = (Q + ((Q * 1) / 10000000))
399+ if (!(x))
400+ then aR()
401+ else if ((bJ > bH))
402+ then throw((((("Payment amount " + toString(bH)) + " does not exceed the minimum amount of ") + toString(bJ)) + " tokens"))
403+ else if ((size(bd.payments) != 1))
405404 then throw("One attached payment expected")
406- else if (!(aj))
407- then bh()
408- else if (if ((bN != z))
409- then (bN != A)
410- else false)
411- then aY()
412- else {
413- let bV = if ((bN == z))
414- then $Tuple7((bM - bJ), bK, (G + bJ), (H - bK), an((G + bM), H), (G + bM), H)
415- else $Tuple7(bK, (bM - bJ), (G - bK), (H + bJ), an(G, (H + bM)), G, (H + bM))
416- let bW = bV._1
417- let bX = bV._2
418- let bY = bV._3
419- let bZ = bV._4
420- let bD = bV._5
421- let ca = bV._6
422- let cb = bV._7
423- let cc = if ((bN == z))
424- then IntegerEntry(f, ca)
425- else IntegerEntry(g, cb)
426- let aw = an(bY, bZ)
427- let ax = fraction(P, K, aw)
428- let cd = (fraction((P * P), bY, bZ) / fraction(P, bW, bX))
429- let ce = fraction((ca + cb), T, (2 * U))
430- if (if ((bT >= ax))
431- then true
432- else (K > aw))
433- then throw("Incorrect virtualSwapTokenPay or virtualSwapTokenGet value")
434- else if (if ((bR > cd))
435- then true
436- else (cd > bS))
437- then throw("Swap with virtualSwapTokenPay and virtualSwapTokenGet is possible, but ratio after virtual swap is incorrect")
438- else if (if ((ce > ca))
405+ else if (!(am))
406+ then bc()
407+ else if ((bI == A))
408+ then {
409+ let bQ = (bH - bE)
410+ let bR = bF
411+ let bS = (H + bE)
412+ let bT = (I - bF)
413+ let aF = aq(bS, bT)
414+ let aG = fraction(L, Q, aF)
415+ if (if ((aG >= bO))
416+ then ((aF - L) >= 0)
417+ else false)
418+ then {
419+ let bU = (fraction(bS, (Q * Q), bT) / fraction(bQ, Q, bR))
420+ if (if ((bM > bU))
439421 then true
440- else (ce > cb))
441- then aZ(ce, ca, cb)
422+ else (bU > bN))
423+ then throw("swop with virtualSwapTokenPay and virtualSwapTokenGet possible, but ratio after virtual swap incorrect")
442424 else {
443- let bG = fraction(aS(bW, z), P, bY)
444- let bH = fraction(aS(bX, A), P, bZ)
445- if (true)
446- then throw(toString(value(value(assetInfo(u)).minSponsoredFee)))
447- else {
448- let bI = fraction(min([bG, bH]), J, P)
449- if (true)
450- then throw(toString(bI))
451- else [Reissue(I, bI, true), ScriptTransfer(bi.caller, bI, I), IntegerEntry(i, (J + bI)), cc, IntegerEntry(l, bD)]
452- }
425+ let bB = fraction((bQ - 270000), Q, (bS - 270000))
426+ let bV = fraction(bQ, Q, bS)
427+ let bC = fraction(aN(bR, B), Q, bT)
428+ let bD = fraction(min([bB, bC]), K, Q)
429+ let bW = fraction(max([bB, bC]), K, Q)
430+ let by = aq((H + bH), I)
431+ let bX = (H + bH)
432+ let bY = I
433+ let bZ = fraction(bD, bX, (K + bD))
434+ let ca = fraction(bD, bY, (K + bD))
435+ let cb = fraction((bX + bY), V, (2 * W))
436+ if (if ((cb > bX))
437+ then true
438+ else (cb > bY))
439+ then aU(cb, bX, bY)
440+ else [Reissue(J, bD, true), ScriptTransfer(bd.caller, bD, J), IntegerEntry(i, (K + bD)), IntegerEntry(f, bX), IntegerEntry(m, by)]
453441 }
442+ }
443+ else throw("incorrect virtualSwapTokenPay or virtualSwapTokenGet value")
454444 }
445+ else if ((bI == B))
446+ then {
447+ let bR = (bH - bE)
448+ let bQ = bF
449+ let bS = (H - bF)
450+ let bT = (I + bE)
451+ let aF = aq(bS, bT)
452+ let aG = fraction(L, Q, aF)
453+ if (if ((aG > bO))
454+ then ((aF - L) >= 0)
455+ else false)
456+ then {
457+ let bU = (fraction(bS, (Q * Q), bT) / fraction(bQ, Q, bR))
458+ if (if ((bM > bU))
459+ then true
460+ else (bU > bN))
461+ then throw("swop with virtualSwapTokenPay and virtualSwapTokenGet possible, but ratio after virtual swap incorrect")
462+ else {
463+ let bB = fraction(aN(bQ, A), Q, bS)
464+ let bC = fraction(aN(bR, B), Q, bT)
465+ let bD = fraction(min([bB, bC]), K, Q)
466+ let by = aq(H, (I + bH))
467+ let bX = H
468+ let bY = (I + bH)
469+ let cb = fraction((bX + bY), V, (2 * W))
470+ if (if ((cb > bX))
471+ then true
472+ else (cb > bY))
473+ then aU(cb, bX, bY)
474+ else [Reissue(J, bD, true), ScriptTransfer(bd.caller, bD, J), IntegerEntry(i, (K + bD)), IntegerEntry(g, bY), IntegerEntry(m, by)]
475+ }
476+ }
477+ else throw("incorrect virtualSwapTokenPay or virtualSwapTokenGet value")
478+ }
479+ else aT()
455480 }
456481
457482
458483
459-@Callable(bi)
460-func withdraw () = {
461- let cf = $Tuple2(bi.payments[0].amount, bi.payments[0].assetId)
462- let bM = cf._1
463- let bN = cf._2
464- let cg = aS(fraction(bM, G, J), z)
465- let ch = aS(fraction(bM, H, J), A)
466- let bD = an((G - cg), (H - ch))
467- if (!(w))
468- then aW()
469- else if ((size(bi.payments) != 1))
470- then throw("One attached payment expected")
471- else if ((bN != I))
472- then throw(("Incorrect asset attached. Expected: " + toBase58String(I)))
473- else if (!(aj))
474- then bh()
475- else if (if ((cg > af))
476- then true
477- else (ch > ag))
478- then bg(cg, ch)
479- else [IntegerEntry(f, (G - cg)), IntegerEntry(g, (H - ch)), IntegerEntry(i, (J - bM)), IntegerEntry(l, bD), Burn(I, bM), ScriptTransfer(bi.caller, cg, z), ScriptTransfer(bi.caller, ch, A)]
484+@Callable(bd)
485+func exchange (cc,cd) = {
486+ let ce = $Tuple2(bd.payments[0].amount, bd.payments[0].assetId)
487+ let bH = ce._1
488+ let bI = ce._2
489+ if (!(x))
490+ then aR()
491+ else if ((0 >= cc))
492+ then throw(("Estimated amount must be positive. Actual: " + toString(cc)))
493+ else if ((cd > cc))
494+ then throw(((("Minimal amount can't be greater than estimated. Estimated: " + toString(cc)) + ". Minimal: ") + toString(cd)))
495+ else if ((size(bd.payments) != 1))
496+ then throw("One attached payment expected")
497+ else if (!(am))
498+ then bc()
499+ else if ((bI == A))
500+ then {
501+ let cf = B
502+ let cg = aH(cc, cd, H, I, bH)
503+ let ch = fraction(cg, (O - M), O)
504+ let ci = fraction(cg, N, O)
505+ let bX = (H + bH)
506+ let bY = ((I - ch) - ci)
507+ let cb = fraction((bX + bY), V, (2 * W))
508+ if (if ((cb > bX))
509+ then true
510+ else (cb > bY))
511+ then aU(cb, bX, bY)
512+ else if (if (if ((A == v))
513+ then (af >= bX)
514+ else false)
515+ then true
516+ else if ((B == v))
517+ then (af >= bY)
518+ else false)
519+ then aY(ch, aj, G)
520+ else [IntegerEntry(f, bX), IntegerEntry(g, bY), IntegerEntry(m, aq((H + bH), ((I - ch) - ci))), ScriptTransfer(bd.caller, ch, cf), ScriptTransfer(t, ci, cf)]
521+ }
522+ else if ((bI == B))
523+ then {
524+ let cf = A
525+ let cg = as(cc, cd, H, I, bH)
526+ let ch = fraction(cg, (O - M), O)
527+ let ci = fraction(cg, N, O)
528+ let bX = ((H - ch) - ci)
529+ let bY = (I + bH)
530+ let cb = fraction((bX + bY), V, (2 * W))
531+ if (if ((cb > bX))
532+ then true
533+ else (cb > bY))
534+ then aU(cb, bX, bY)
535+ else if (if (if ((A == v))
536+ then (af >= bX)
537+ else false)
538+ then true
539+ else if ((B == v))
540+ then (af >= bY)
541+ else false)
542+ then aY(ch, ai, C)
543+ else [IntegerEntry(f, bX), IntegerEntry(g, bY), IntegerEntry(m, aq(((H - ch) - ci), (I + bH))), ScriptTransfer(bd.caller, ch, cf), ScriptTransfer(t, ci, cf)]
544+ }
545+ else aT()
480546 }
481547
482548
483549
484-@Callable(bi)
485-func exchange (ci,cj) = {
486- let ck = $Tuple2(bi.payments[0].amount, bi.payments[0].assetId)
487- let bM = ck._1
488- let bN = ck._2
489- if (!(w))
490- then aW()
491- else if ((0 >= ci))
492- then throw(("Estimated amount must be positive. Actual: " + toString(ci)))
493- else if ((cj > ci))
494- then throw(((("Minimal amount can't be greater than estimated. Estimated: " + toString(ci)) + ". Minimal: ") + toString(cj)))
495- else if ((size(bi.payments) != 1))
496- then throw("One attached payment expected")
497- else if (!(aj))
498- then bh()
499- else if (if ((bN != z))
500- then (bN != A)
501- else false)
502- then aY()
503- else if ((10000000 > bM))
504- then throw("Only swap of 10.000000 or more tokens is allowed")
505- else if (if ((V > fraction(P, cj, bM)))
506- then true
507- else (fraction(P, ci, bM) > W))
508- then throw("Incorrect args and pmt ratio")
509- else {
510- let cl = if ((bN == z))
511- then A
512- else z
513- let cm = ap(ci, cj, bM, bN)
514- let cn = fraction(cm, (N - L), N)
515- let co = fraction(cm, M, N)
516- let cp = if ((bN == z))
517- then $Tuple2((G + bM), ((H - cn) - co))
518- else $Tuple2(((G - cn) - co), (H + bM))
519- let ca = cp._1
520- let cb = cp._2
521- let ce = fraction((ca + cb), T, (2 * U))
522- if (if ((ce > ca))
523- then true
524- else (ce > cb))
525- then aZ(ce, ca, cb)
526- else if (if (if ((z == u))
527- then (cl == z)
528- else false)
529- then (ac >= ca)
530- else false)
531- then bd(cn, af, B)
532- else if (if (if ((A == u))
533- then (cl == A)
534- else false)
535- then (ac >= cb)
536- else false)
537- then bd(cn, ag, F)
538- else [IntegerEntry(f, ca), IntegerEntry(g, cb), IntegerEntry(l, an(ca, cb)), ScriptTransfer(bi.caller, cn, cl), ScriptTransfer(s, co, cl)]
539- }
540- }
541-
542-
543-
544-@Callable(bi)
545-func shutdown () = if (!(w))
546- then throw(("DApp is already suspended. Cause: " + valueOrElse(getString(this, m), "the cause wasn't specified")))
547- else if (!(containsElement([n, o, p, q], bi.callerPublicKey)))
548- then aX()
549- else aQ("Paused by admin")
550-
551-
552-
553-@Callable(bi)
554-func activate () = if (w)
555- then aV()
556- else if (!(containsElement([n, o, p, q], bi.callerPublicKey)))
557- then aX()
558- else [BooleanEntry(c, true), DeleteEntry(m)]
559-
560-
561-
562-@Callable(bi)
563-func takeIntoAccountExtraFunds (cq) = {
564- let cr = (ah - G)
565- let cs = (ai - H)
566- let ct = (cr - (if ((z == u))
567- then cq
550+@Callable(bd)
551+func takeIntoAccountExtraFunds (cj) = {
552+ let ck = (ak - H)
553+ let cl = (al - I)
554+ let cm = (ck - (if ((A == v))
555+ then cj
568556 else 0))
569- let cu = (cs - (if ((A == u))
570- then cq
557+ let cn = (cl - (if ((B == v))
558+ then cj
571559 else 0))
572- if (!(w))
573- then aW()
574- else if ((bi.caller != this))
575- then aX()
576- else if ((0 > cq))
577- then throw(("Argument 'amountLeave' cannot be negative. Actual: " + toString(cq)))
578- else if (if ((0 > cr))
560+ if (!(x))
561+ then aR()
562+ else if (!(containsElement([o, p, q, s], bd.callerPublicKey)))
563+ then aS()
564+ else if ((0 > cj))
565+ then throw(("Argument 'amountLeave' cannot be negative. Actual: " + toString(cj)))
566+ else if (if ((0 > ck))
579567 then true
580- else (0 > cs))
581- then aQ("Enroll amount negative")
582- else if (if ((0 > ct))
568+ else (0 > cl))
569+ then aL("Enroll amount negative")
570+ else if (if ((0 > cm))
583571 then true
584- else (0 > cu))
572+ else (0 > cn))
585573 then throw("Too large amountLeave")
586- else [IntegerEntry(f, (G + ct)), IntegerEntry(g, (H + cu)), IntegerEntry(("last_income_" + x), ct), IntegerEntry(("last_income_" + y), cu)]
574+ else [IntegerEntry(f, (H + cm)), IntegerEntry(g, (I + cn))]
587575 }
588576
589577
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 4 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "2.0.0"
55
66 let b = "version"
77
88 let c = "active"
99
1010 let d = "A_asset_id"
1111
1212 let e = "B_asset_id"
1313
1414 let f = "A_asset_balance"
1515
1616 let g = "B_asset_balance"
1717
1818 let h = "share_asset_id"
1919
2020 let i = "share_asset_supply"
2121
2222 let j = "commission"
2323
2424 let k = "commission_scale_delimiter"
2525
26-let l = "invariant"
26+let l = "commission_governance"
2727
28-let m = "shutdown_cause"
28+let m = "invariant"
2929
30-let n = base58'7FhFLst7Htn4uYxGH7xYMTAmbydLVoiZef3eFghi7CG4'
30+let n = "shutdown_cause"
3131
3232 let o = base58'7FhFLst7Htn4uYxGH7xYMTAmbydLVoiZef3eFghi7CG4'
3333
3434 let p = base58'7FhFLst7Htn4uYxGH7xYMTAmbydLVoiZef3eFghi7CG4'
3535
3636 let q = base58'7FhFLst7Htn4uYxGH7xYMTAmbydLVoiZef3eFghi7CG4'
3737
3838 let r = base58'7FhFLst7Htn4uYxGH7xYMTAmbydLVoiZef3eFghi7CG4'
3939
40-let s = Address(base58'3MqhxbxHEMtp2Rwy1gUb6cPSJHQepdap1Yp')
40+let s = base58'7FhFLst7Htn4uYxGH7xYMTAmbydLVoiZef3eFghi7CG4'
4141
4242 let t = Address(base58'3MqhxbxHEMtp2Rwy1gUb6cPSJHQepdap1Yp')
4343
44-let u = base58'3FUNGbzfNsQ1AZfvumCUqARXvpjjLQrvCzorYuDryQAq'
44+let u = Address(base58'3MqhxbxHEMtp2Rwy1gUb6cPSJHQepdap1Yp')
4545
46-let v = (9 * value(value(assetInfo(u)).minSponsoredFee))
46+let v = base58'3FUNGbzfNsQ1AZfvumCUqARXvpjjLQrvCzorYuDryQAq'
4747
48-let w = getBooleanValue(this, c)
48+let w = (9 * value(value(assetInfo(v)).minSponsoredFee))
4949
50-let x = getStringValue(this, d)
50+let x = getBooleanValue(this, c)
5151
52-let y = getStringValue(this, e)
52+let y = getStringValue(this, d)
5353
54-let z = if ((x == "WAVES"))
55- then unit
56- else fromBase58String(x)
54+let z = getStringValue(this, e)
5755
5856 let A = if ((y == "WAVES"))
5957 then unit
6058 else fromBase58String(y)
6159
62-let B = {
63- let C = z
64- if ($isInstanceOf(C, "ByteVector"))
60+let B = if ((z == "WAVES"))
61+ then unit
62+ else fromBase58String(z)
63+
64+let C = {
65+ let D = A
66+ if ($isInstanceOf(D, "ByteVector"))
6567 then {
66- let D = C
67- value(assetInfo(D)).name
68+ let E = D
69+ value(assetInfo(E)).name
6870 }
69- else if ($isInstanceOf(C, "Unit"))
71+ else if ($isInstanceOf(D, "Unit"))
7072 then {
71- let E = C
73+ let F = D
7274 "WAVES"
7375 }
7476 else throw("Match error")
7577 }
7678
77-let F = {
78- let C = A
79- if ($isInstanceOf(C, "ByteVector"))
79+let G = {
80+ let D = B
81+ if ($isInstanceOf(D, "ByteVector"))
8082 then {
81- let D = C
82- value(assetInfo(D)).name
83+ let E = D
84+ value(assetInfo(E)).name
8385 }
84- else if ($isInstanceOf(C, "Unit"))
86+ else if ($isInstanceOf(D, "Unit"))
8587 then {
86- let E = C
88+ let F = D
8789 "WAVES"
8890 }
8991 else throw("Match error")
9092 }
9193
92-let G = getIntegerValue(this, f)
94+let H = getIntegerValue(this, f)
9395
94-let H = getIntegerValue(this, g)
96+let I = getIntegerValue(this, g)
9597
96-let I = fromBase58String(getStringValue(this, h))
98+let J = fromBase58String(getStringValue(this, h))
9799
98-let J = getIntegerValue(this, i)
100+let K = getIntegerValue(this, i)
99101
100-let K = getIntegerValue(this, l)
102+let L = getIntegerValue(this, m)
101103
102-let L = 500
104+let M = 500
103105
104-let M = 200
106+let N = 200
105107
106-let N = 1000000
108+let O = 1000000
107109
108-let O = 1000
110+let P = 1000
109111
110-let P = 100000000
112+let Q = 100000000
111113
112-let Q = 1000000000000
114+let R = 1000000000000
113115
114-let R = 1000
116+let S = 1000
115117
116-let S = 8
118+let T = 8
117119
118-let T = 50
120+let U = 12
119121
120-let U = 100
122+let V = 50
121123
122-let V = 90000000
124+let W = 100
123125
124-let W = 110000000
126+let X = 100000000
125127
126-let X = 50
128+let Y = 99999000
127129
128-let Y = 2
130+let Z = 50
129131
130-let Z = 46000000
132+let aa = 2
131133
132-func aa (ab) = {
133- let C = ab
134- if ($isInstanceOf(C, "ByteVector"))
134+let ab = 46000000
135+
136+let ac = 8
137+
138+func ad (ae) = {
139+ let D = ae
140+ if ($isInstanceOf(D, "ByteVector"))
135141 then {
136- let D = C
137- assetBalance(this, D)
142+ let E = D
143+ assetBalance(this, E)
138144 }
139- else if ($isInstanceOf(C, "Unit"))
145+ else if ($isInstanceOf(D, "Unit"))
140146 then {
141- let E = C
147+ let F = D
142148 wavesBalance(this).available
143149 }
144150 else throw("Match error")
145151 }
146152
147153
148-let ac = {
149- let C = getInteger(t, ((("rpd_balance_" + toBase58String(u)) + "_") + toString(this)))
150- if ($isInstanceOf(C, "Int"))
154+let af = {
155+ let D = getInteger(u, ((("rpd_balance_" + toBase58String(v)) + "_") + toString(this)))
156+ if ($isInstanceOf(D, "Int"))
151157 then {
152- let ad = C
153- ad
158+ let ag = D
159+ ag
154160 }
155- else if ($isInstanceOf(C, "Unit"))
161+ else if ($isInstanceOf(D, "Unit"))
156162 then {
157- let ae = C
163+ let ah = D
158164 0
159165 }
160166 else throw("Match error")
161167 }
162168
163-let af = (G - (if ((z == u))
164- then ac
169+let ai = (H - (if ((A == v))
170+ then af
165171 else 0))
166172
167-let ag = (H - (if ((A == u))
168- then ac
173+let aj = (I - (if ((B == v))
174+ then af
169175 else 0))
170176
171-let ah = (aa(z) + (if ((z == u))
172- then ac
177+let ak = (ad(A) + (if ((A == v))
178+ then af
173179 else 0))
174180
175-let ai = (aa(A) + (if ((A == u))
176- then ac
181+let al = (ad(B) + (if ((B == v))
182+ then af
177183 else 0))
178184
179-let aj = if ((ah >= G))
180- then (ai >= H)
185+let am = if ((ak >= H))
186+ then (al >= I)
181187 else false
182188
183-func ak (al,am) = (((fraction(Q, al, am) + fraction(Q, am, al)) / 2) / 10000)
189+func an (ao,ap) = (((fraction(R, ao, ap) + fraction(R, ap, ao)) / 2) / 10000)
184190
185191
186-func an (al,am) = {
187- let ao = ak(al, am)
188- (fraction((al + am), P, pow(ao, S, X, Y, S, UP)) + (2 * fraction(pow(fraction(al, am, P), 0, 5, 1, (S / 2), DOWN), pow((ao - Z), S, X, Y, S, DOWN), P)))
192+func aq (ao,ap) = {
193+ let ar = an(ao, ap)
194+ (fraction((ao + ap), Q, pow(ar, T, Z, aa, T, UP)) + (2 * fraction(pow(fraction(ao, ap, Q), 0, 5, 1, (T / 2), DOWN), pow((ar - ab), T, Z, aa, T, DOWN), Q)))
189195 }
190196
191197
192-func ap (aq,ar,as,at) = {
193- let au = (P - ((P * 1) / 10000000))
194- let av = (aq - ar)
195- let al = (G + as)
196- let am = (H + as)
197- let aw = if ((at == z))
198- then an(al, (H - aq))
199- else if ((at == A))
200- then an((G - aq), am)
201- else throw("Wrong asset in payment")
202- let ax = fraction(P, K, aw)
203- func ay (az,aA) = if (true)
204- then throw(((toString(az) + " ") + toString(aA)))
205- else {
206- let aB = (aq - ((aA * av) / 5))
207- let aC = if ((at == z))
208- then an(al, (H - aB))
209- else an((G - aB), am)
210- if (true)
211- then aB
212- else az
213- }
214-
215- let aD = {
216- let aE = [1, 2, 3, 4, 5]
217- let aF = size(aE)
218- let aG = -1
219- if ((aF == 0))
220- then aG
221- else {
222- let aH = ay(aG, aE[0])
223- if ((aF == 1))
224- then aH
225- else {
226- let aI = ay(aH, aE[1])
227- if ((aF == 2))
228- then aI
229- else {
230- let aJ = ay(aI, aE[2])
231- if ((aF == 3))
232- then aJ
233- else {
234- let aK = ay(aJ, aE[3])
235- if ((aF == 4))
236- then aK
237- else {
238- let aL = ay(aK, aE[4])
239- if ((aF == 5))
240- then aL
241- else {
242- let aM = ay(aL, aE[5])
243- throw("List size exceed 5")
244- }
245- }
246- }
247- }
248- }
249- }
250- }
251- if ((0 > aD))
252- then throw("something went wrong while working with amountToSend")
253- else if (if ((ax > au))
254- then (aw > K)
198+func as (at,au,av,aw,ax) = {
199+ let ay = (Q - ((Q * 1) / 10000000))
200+ let az = (at - au)
201+ let aA = (at - ((1 * az) / 5))
202+ let aB = (at - ((2 * az) / 5))
203+ let aC = (at - ((3 * az) / 5))
204+ let aD = (at - ((4 * az) / 5))
205+ let aE = (at - ((5 * az) / 5))
206+ let ap = (aw + ax)
207+ let aF = aq((av - at), ap)
208+ let aG = fraction(L, Q, aF)
209+ if ((0 >= (aq((av - aE), ap) - L)))
210+ then throw("minTokenReceiveAmount too large.err1")
211+ else if (if ((aG > ay))
212+ then ((aF - L) > 0)
255213 else false)
256- then aq
257- else ((aD * (N - L)) / N)
214+ then at
215+ else if (((aq((av - aA), ap) - L) > 0))
216+ then ((aA * (O - M)) / O)
217+ else if (((aq((av - aB), ap) - L) > 0))
218+ then ((aB * (O - M)) / O)
219+ else if (((aq((av - aC), ap) - L) > 0))
220+ then ((aC * (O - M)) / O)
221+ else if (((aq((av - aD), ap) - L) > 0))
222+ then ((aD * (O - M)) / O)
223+ else if (((aq((av - aE), ap) - L) > 0))
224+ then ((aE * (O - M)) / O)
225+ else throw("something went wrong while working with amountToSendStep. err2")
258226 }
259227
260228
261-func aN (ab) = {
262- let C = ab
263- if ($isInstanceOf(C, "ByteVector"))
229+func aH (at,au,av,aw,ax) = {
230+ let ay = (Q - ((Q * 1) / 10000000))
231+ let az = (at - au)
232+ let aA = (at - ((1 * az) / 5))
233+ let aB = (at - ((2 * az) / 5))
234+ let aC = (at - ((3 * az) / 5))
235+ let aD = (at - ((4 * az) / 5))
236+ let aE = (at - ((5 * az) / 5))
237+ let ao = (av + ax)
238+ let aF = aq(ao, (aw - at))
239+ let aG = fraction(L, Q, aF)
240+ if ((0 >= (aq(ao, (aw - aE)) - L)))
241+ then throw("minTokenReceiveAmount too large.err1")
242+ else if (if ((aG > ay))
243+ then ((aF - L) > 0)
244+ else false)
245+ then at
246+ else if (((aq(ao, (aw - aA)) - L) > 0))
247+ then ((aA * (O - M)) / O)
248+ else if (((aq(ao, (aw - aB)) - L) > 0))
249+ then ((aB * (O - M)) / O)
250+ else if (((aq(ao, (aw - aC)) - L) > 0))
251+ then ((aC * (O - M)) / O)
252+ else if (((aq(ao, (aw - aD)) - L) > 0))
253+ then ((aD * (O - M)) / O)
254+ else if (((aq(ao, (aw - aE)) - L) > 0))
255+ then ((aE * (O - M)) / O)
256+ else throw("something went wrong while working with amountToSendStep. err2")
257+ }
258+
259+
260+func aI (ae) = {
261+ let D = ae
262+ if ($isInstanceOf(D, "ByteVector"))
264263 then {
265- let D = C
266- let aO = toBase58String(D)
267- let aP = valueOrErrorMessage(assetInfo(D), (("Asset " + aO) + " doesn't exist"))
268- $Tuple3(aO, aP.name, aP.decimals)
264+ let E = D
265+ let aJ = toBase58String(E)
266+ let aK = valueOrErrorMessage(assetInfo(E), (("Asset " + aJ) + " doesn't exist"))
267+ $Tuple3(aJ, aK.name, aK.decimals)
269268 }
270- else if ($isInstanceOf(C, "Unit"))
269+ else if ($isInstanceOf(D, "Unit"))
271270 then {
272- let E = C
271+ let F = D
273272 $Tuple3("WAVES", "WAVES", 8)
274273 }
275274 else throw("Match error")
276275 }
277276
278277
279-func aQ (aR) = [BooleanEntry(c, false), StringEntry(m, aR)]
278+func aL (aM) = [BooleanEntry(c, false), StringEntry(n, aM)]
280279
281280
282-func aS (aT,ab) = if ((ab == u))
281+func aN (aO,ae) = if ((ae == v))
283282 then {
284- let aU = (aT - v)
285- if ((0 >= aU))
286- then throw((((("Insufficient amount " + toString(aT)) + " to deduct staking fee ") + toString(v)) + " USD-N"))
287- else aU
283+ let aP = (aO - w)
284+ if ((0 >= aP))
285+ then throw((((("Insufficient amount " + toString(aO)) + " to deduct staking fee ") + toString(w)) + " USD-N"))
286+ else aP
288287 }
289- else aT
288+ else aO
290289
291290
292-func aV () = throw("DApp is already active")
291+func aQ () = throw("DApp is already active")
293292
294293
295-func aW () = throw("DApp is inactive at this moment")
294+func aR () = throw("DApp is inactive at this moment")
296295
297296
298-func aX () = throw("Only admin can call this function")
297+func aS () = throw("Only admin can call this function")
299298
300299
301-func aY () = throw(((("Incorrect assets attached. Expected: " + x) + " and ") + y))
300+func aT () = throw(((("Incorrect assets attached. Expected: " + y) + " and ") + z))
302301
303302
304-func aZ (ba,bb,bc) = throw(((((((((("New balance in assets of the DApp is less than threshold " + toString(ba)) + ": ") + toString(bb)) + " ") + B) + ", ") + toString(bc)) + " ") + F))
303+func aU (aV,aW,aX) = throw(((((((((("New balance in assets of the DApp is less than threshold " + toString(aV)) + ": ") + toString(aW)) + " ") + C) + ", ") + toString(aX)) + " ") + G))
305304
306305
307-func bd (aT,be,bf) = throw((((((((("Insufficient DApp balance to pay " + toString(aT)) + " ") + bf) + " due to staking. Available: ") + toString(be)) + " ") + bf) + ". Please contact support in Telegram: https://t.me/swopfisupport"))
306+func aY (aO,aZ,ba) = throw((((((((("Insufficient DApp balance to pay " + toString(aO)) + " ") + ba) + " due to staking. Available: ") + toString(aZ)) + " ") + ba) + ". Please contact support in Telegram: https://t.me/swopfisupport"))
308307
309308
310-func bg (bb,bc) = throw((((((((((((((((("Insufficient DApp balance to pay " + toString(bb)) + " ") + B) + " and ") + toString(bc)) + " ") + F) + " due to staking. Available: ") + toString(af)) + " ") + B) + " and ") + toString(ag)) + " ") + F) + ". Please contact support in Telegram: https://t.me/swopfisupport"))
309+func bb (aW,aX) = throw((((((((((((((((("Insufficient DApp balance to pay " + toString(aW)) + " ") + C) + " and ") + toString(aX)) + " ") + G) + " due to staking. Available: ") + toString(ai)) + " ") + C) + " and ") + toString(aj)) + " ") + G) + ". Please contact support in Telegram: https://t.me/swopfisupport"))
311310
312311
313-func bh () = aQ(((((((((((((((("Suspicious state. Actual balances: " + toString(G)) + " ") + B) + ", ") + toString(H)) + " ") + F) + ". State: ") + toString(aa(z))) + " ") + B) + ", ") + toString(aa(A))) + " ") + F))
312+func bc () = aL(((((((((((((((("Suspicious state. Actual balances: " + toString(H)) + " ") + C) + ", ") + toString(I)) + " ") + G) + ". State: ") + toString(ad(A))) + " ") + C) + ", ") + toString(ad(B))) + " ") + G))
314313
315314
316-@Callable(bi)
315+@Callable(bd)
317316 func init () = {
318- let bj = $Tuple2(bi.payments[0].amount, bi.payments[0].assetId)
319- let bk = bj._1
320- let bl = bj._2
321- let bm = $Tuple2(bi.payments[1].amount, bi.payments[1].assetId)
322- let bn = bm._1
323- let bo = bm._2
324- let bp = aN(bl)
325- let bq = bp._1
326- let br = bp._2
327- let bs = bp._3
328- let bt = aN(bo)
329- let bu = bt._1
330- let bv = bt._2
331- let bw = bt._3
317+ let be = $Tuple2(bd.payments[0].amount, bd.payments[0].assetId)
318+ let bf = be._1
319+ let bg = be._2
320+ let bh = $Tuple2(bd.payments[1].amount, bd.payments[1].assetId)
321+ let bi = bh._1
322+ let bj = bh._2
323+ let bk = aI(bg)
324+ let bl = bk._1
325+ let bm = bk._2
326+ let bn = bk._3
327+ let bo = aI(bj)
328+ let bp = bo._1
329+ let bq = bo._2
330+ let br = bo._3
332331 if (isDefined(getBoolean(this, c)))
333- then aV()
334- else if ((bl == bo))
332+ then aQ()
333+ else if ((bg == bj))
335334 then throw("Assets must be different")
336335 else {
337- let bx = ((("s" + take(br, 7)) + "_") + take(bv, 7))
338- let by = ((((("ShareToken of SwopFi protocol for " + br) + " and ") + bv) + " at address ") + toString(this))
339- let bz = ((bs + bw) / 2)
340- let bA = fraction(pow(bk, bs, 5, 1, bs, HALFDOWN), pow(bn, bw, 5, 1, bw, HALFDOWN), pow(10, 0, bz, 0, 0, HALFDOWN))
341- let bB = Issue(bx, by, bA, bz, true)
342- let bC = calculateAssetId(bB)
343- let bD = an(bk, bn)
344-[StringEntry(b, a), BooleanEntry(c, true), StringEntry(d, bq), StringEntry(e, bu), IntegerEntry(f, bk), IntegerEntry(g, bn), IntegerEntry(l, bD), IntegerEntry(j, L), IntegerEntry(k, N), bB, StringEntry(h, toBase58String(bC)), IntegerEntry(i, bA), ScriptTransfer(bi.caller, bA, bC)]
336+ let bs = ((("s" + take(bm, 7)) + "_") + take(bq, 7))
337+ let bt = ((((("ShareToken of SwopFi protocol for " + bm) + " and ") + bq) + " at address ") + toString(this))
338+ let bu = ((bn + br) / 2)
339+ let bv = fraction(pow(bf, bn, 5, 1, bn, HALFDOWN), pow(bi, br, 5, 1, br, HALFDOWN), pow(10, 0, bu, 0, 0, HALFDOWN))
340+ let bw = Issue(bs, bt, bv, bu, true)
341+ let bx = calculateAssetId(bw)
342+ let by = aq(bf, bi)
343+[StringEntry(b, a), BooleanEntry(c, true), StringEntry(d, bl), StringEntry(e, bp), IntegerEntry(f, bf), IntegerEntry(g, bi), IntegerEntry(m, by), IntegerEntry(j, M), IntegerEntry(k, O), bw, StringEntry(h, toBase58String(bx)), IntegerEntry(i, bv), ScriptTransfer(bd.caller, bv, bx)]
345344 }
346345 }
347346
348347
349348
350-@Callable(bi)
351-func replenishWithTwoTokens (bE) = {
352- let bl = bi.payments[0].assetId
353- let bo = bi.payments[1].assetId
354- let bk = aS(bi.payments[0].amount, bl)
355- let bn = aS(bi.payments[1].amount, bo)
356- let bF = fraction(fraction(P, G, bk), O, fraction(P, H, bn))
357- let bG = fraction(P, bk, G)
358- let bH = fraction(P, bn, H)
359- let bI = fraction(min([bG, bH]), J, P)
360- let bD = an((G + bk), (H + bn))
361- if (!(w))
362- then aW()
363- else if (if ((0 > bE))
349+@Callable(bd)
350+func replenishWithTwoTokens (bz) = {
351+ let bg = bd.payments[0].assetId
352+ let bj = bd.payments[1].assetId
353+ let bf = aN(bd.payments[0].amount, bg)
354+ let bi = aN(bd.payments[1].amount, bj)
355+ let bA = fraction(fraction(H, Q, bf), P, fraction(I, Q, bi))
356+ let bB = fraction(bf, Q, H)
357+ let bC = fraction(bi, Q, I)
358+ let bD = fraction(min([bB, bC]), K, Q)
359+ let by = aq((H + bf), (I + bi))
360+ if (!(x))
361+ then aR()
362+ else if (if ((0 > bz))
364363 then true
365- else (bE > 10))
366- then throw("Slippage tolerance must be <= 1%")
367- else if ((size(bi.payments) != 2))
364+ else (bz > S))
365+ then throw(((("Slippage tolerance must be between 0 and " + toString(S)) + " inclusively. Actual: ") + toString(bz)))
366+ else if ((size(bd.payments) != 2))
368367 then throw("Two attached assets expected")
369- else if (if ((bl != z))
368+ else if (if ((bg != A))
370369 then true
371- else (bo != A))
372- then aY()
373- else if (if ((((O * (R - bE)) / R) > bF))
370+ else (bj != B))
371+ then aT()
372+ else if (if ((((P * (S - bz)) / S) > bA))
374373 then true
375- else (bF > ((O * (R + bE)) / R)))
374+ else (bA > ((P * (S + bz)) / S)))
376375 then throw("Incorrect assets amount: amounts must have the contract ratio")
377- else if ((bI == 0))
376+ else if ((bD == 0))
378377 then throw("Too small amount to replenish")
379- else if (!(aj))
380- then bh()
381- else [IntegerEntry(f, (G + bk)), IntegerEntry(g, (H + bn)), IntegerEntry(i, (J + bI)), IntegerEntry(l, bD), Reissue(I, bI, true), ScriptTransfer(bi.caller, bI, I)]
378+ else if (!(am))
379+ then bc()
380+ else [IntegerEntry(f, (H + bf)), IntegerEntry(g, (I + bi)), IntegerEntry(i, (K + bD)), IntegerEntry(m, by), Reissue(J, bD, true), ScriptTransfer(bd.caller, bD, J)]
382381 }
383382
384383
385384
386-@Callable(bi)
387-func replenishWithOneToken (bJ,bK) = {
388- let bL = $Tuple2(bi.payments[0].amount, bi.payments[0].assetId)
389- let bM = bL._1
390- let bN = bL._2
391- let bO = 5000000
392- let bP = 50000000
393- let bQ = if ((bP > bM))
385+@Callable(bd)
386+func replenishWithOneToken (bE,bF) = {
387+ let bG = $Tuple2(bd.payments[0].amount, bd.payments[0].assetId)
388+ let bH = bG._1
389+ let bI = bG._2
390+ let bJ = 5000000
391+ let bK = 50000000
392+ let bL = if ((bK > bH))
394393 then 100000
395394 else 1
396- let bR = (P - ((P * bQ) / 10000000))
397- let bS = (P + ((P * bQ) / 10000000))
398- let bT = (P - ((P * 1) / 10000000))
399- let bU = (P + ((P * 1) / 10000000))
400- if (!(w))
401- then aW()
402- else if ((bO > bM))
403- then throw((((("Payment amount " + toString(bM)) + " does not exceed the minimum amount of ") + toString(bO)) + " tokens"))
404- else if ((size(bi.payments) != 1))
395+ let bM = (Q - ((Q * bL) / 10000000))
396+ let bN = (Q + ((Q * bL) / 10000000))
397+ let bO = (Q - ((Q * 1) / 10000000))
398+ let bP = (Q + ((Q * 1) / 10000000))
399+ if (!(x))
400+ then aR()
401+ else if ((bJ > bH))
402+ then throw((((("Payment amount " + toString(bH)) + " does not exceed the minimum amount of ") + toString(bJ)) + " tokens"))
403+ else if ((size(bd.payments) != 1))
405404 then throw("One attached payment expected")
406- else if (!(aj))
407- then bh()
408- else if (if ((bN != z))
409- then (bN != A)
410- else false)
411- then aY()
412- else {
413- let bV = if ((bN == z))
414- then $Tuple7((bM - bJ), bK, (G + bJ), (H - bK), an((G + bM), H), (G + bM), H)
415- else $Tuple7(bK, (bM - bJ), (G - bK), (H + bJ), an(G, (H + bM)), G, (H + bM))
416- let bW = bV._1
417- let bX = bV._2
418- let bY = bV._3
419- let bZ = bV._4
420- let bD = bV._5
421- let ca = bV._6
422- let cb = bV._7
423- let cc = if ((bN == z))
424- then IntegerEntry(f, ca)
425- else IntegerEntry(g, cb)
426- let aw = an(bY, bZ)
427- let ax = fraction(P, K, aw)
428- let cd = (fraction((P * P), bY, bZ) / fraction(P, bW, bX))
429- let ce = fraction((ca + cb), T, (2 * U))
430- if (if ((bT >= ax))
431- then true
432- else (K > aw))
433- then throw("Incorrect virtualSwapTokenPay or virtualSwapTokenGet value")
434- else if (if ((bR > cd))
435- then true
436- else (cd > bS))
437- then throw("Swap with virtualSwapTokenPay and virtualSwapTokenGet is possible, but ratio after virtual swap is incorrect")
438- else if (if ((ce > ca))
405+ else if (!(am))
406+ then bc()
407+ else if ((bI == A))
408+ then {
409+ let bQ = (bH - bE)
410+ let bR = bF
411+ let bS = (H + bE)
412+ let bT = (I - bF)
413+ let aF = aq(bS, bT)
414+ let aG = fraction(L, Q, aF)
415+ if (if ((aG >= bO))
416+ then ((aF - L) >= 0)
417+ else false)
418+ then {
419+ let bU = (fraction(bS, (Q * Q), bT) / fraction(bQ, Q, bR))
420+ if (if ((bM > bU))
439421 then true
440- else (ce > cb))
441- then aZ(ce, ca, cb)
422+ else (bU > bN))
423+ then throw("swop with virtualSwapTokenPay and virtualSwapTokenGet possible, but ratio after virtual swap incorrect")
442424 else {
443- let bG = fraction(aS(bW, z), P, bY)
444- let bH = fraction(aS(bX, A), P, bZ)
445- if (true)
446- then throw(toString(value(value(assetInfo(u)).minSponsoredFee)))
447- else {
448- let bI = fraction(min([bG, bH]), J, P)
449- if (true)
450- then throw(toString(bI))
451- else [Reissue(I, bI, true), ScriptTransfer(bi.caller, bI, I), IntegerEntry(i, (J + bI)), cc, IntegerEntry(l, bD)]
452- }
425+ let bB = fraction((bQ - 270000), Q, (bS - 270000))
426+ let bV = fraction(bQ, Q, bS)
427+ let bC = fraction(aN(bR, B), Q, bT)
428+ let bD = fraction(min([bB, bC]), K, Q)
429+ let bW = fraction(max([bB, bC]), K, Q)
430+ let by = aq((H + bH), I)
431+ let bX = (H + bH)
432+ let bY = I
433+ let bZ = fraction(bD, bX, (K + bD))
434+ let ca = fraction(bD, bY, (K + bD))
435+ let cb = fraction((bX + bY), V, (2 * W))
436+ if (if ((cb > bX))
437+ then true
438+ else (cb > bY))
439+ then aU(cb, bX, bY)
440+ else [Reissue(J, bD, true), ScriptTransfer(bd.caller, bD, J), IntegerEntry(i, (K + bD)), IntegerEntry(f, bX), IntegerEntry(m, by)]
453441 }
442+ }
443+ else throw("incorrect virtualSwapTokenPay or virtualSwapTokenGet value")
454444 }
445+ else if ((bI == B))
446+ then {
447+ let bR = (bH - bE)
448+ let bQ = bF
449+ let bS = (H - bF)
450+ let bT = (I + bE)
451+ let aF = aq(bS, bT)
452+ let aG = fraction(L, Q, aF)
453+ if (if ((aG > bO))
454+ then ((aF - L) >= 0)
455+ else false)
456+ then {
457+ let bU = (fraction(bS, (Q * Q), bT) / fraction(bQ, Q, bR))
458+ if (if ((bM > bU))
459+ then true
460+ else (bU > bN))
461+ then throw("swop with virtualSwapTokenPay and virtualSwapTokenGet possible, but ratio after virtual swap incorrect")
462+ else {
463+ let bB = fraction(aN(bQ, A), Q, bS)
464+ let bC = fraction(aN(bR, B), Q, bT)
465+ let bD = fraction(min([bB, bC]), K, Q)
466+ let by = aq(H, (I + bH))
467+ let bX = H
468+ let bY = (I + bH)
469+ let cb = fraction((bX + bY), V, (2 * W))
470+ if (if ((cb > bX))
471+ then true
472+ else (cb > bY))
473+ then aU(cb, bX, bY)
474+ else [Reissue(J, bD, true), ScriptTransfer(bd.caller, bD, J), IntegerEntry(i, (K + bD)), IntegerEntry(g, bY), IntegerEntry(m, by)]
475+ }
476+ }
477+ else throw("incorrect virtualSwapTokenPay or virtualSwapTokenGet value")
478+ }
479+ else aT()
455480 }
456481
457482
458483
459-@Callable(bi)
460-func withdraw () = {
461- let cf = $Tuple2(bi.payments[0].amount, bi.payments[0].assetId)
462- let bM = cf._1
463- let bN = cf._2
464- let cg = aS(fraction(bM, G, J), z)
465- let ch = aS(fraction(bM, H, J), A)
466- let bD = an((G - cg), (H - ch))
467- if (!(w))
468- then aW()
469- else if ((size(bi.payments) != 1))
470- then throw("One attached payment expected")
471- else if ((bN != I))
472- then throw(("Incorrect asset attached. Expected: " + toBase58String(I)))
473- else if (!(aj))
474- then bh()
475- else if (if ((cg > af))
476- then true
477- else (ch > ag))
478- then bg(cg, ch)
479- else [IntegerEntry(f, (G - cg)), IntegerEntry(g, (H - ch)), IntegerEntry(i, (J - bM)), IntegerEntry(l, bD), Burn(I, bM), ScriptTransfer(bi.caller, cg, z), ScriptTransfer(bi.caller, ch, A)]
484+@Callable(bd)
485+func exchange (cc,cd) = {
486+ let ce = $Tuple2(bd.payments[0].amount, bd.payments[0].assetId)
487+ let bH = ce._1
488+ let bI = ce._2
489+ if (!(x))
490+ then aR()
491+ else if ((0 >= cc))
492+ then throw(("Estimated amount must be positive. Actual: " + toString(cc)))
493+ else if ((cd > cc))
494+ then throw(((("Minimal amount can't be greater than estimated. Estimated: " + toString(cc)) + ". Minimal: ") + toString(cd)))
495+ else if ((size(bd.payments) != 1))
496+ then throw("One attached payment expected")
497+ else if (!(am))
498+ then bc()
499+ else if ((bI == A))
500+ then {
501+ let cf = B
502+ let cg = aH(cc, cd, H, I, bH)
503+ let ch = fraction(cg, (O - M), O)
504+ let ci = fraction(cg, N, O)
505+ let bX = (H + bH)
506+ let bY = ((I - ch) - ci)
507+ let cb = fraction((bX + bY), V, (2 * W))
508+ if (if ((cb > bX))
509+ then true
510+ else (cb > bY))
511+ then aU(cb, bX, bY)
512+ else if (if (if ((A == v))
513+ then (af >= bX)
514+ else false)
515+ then true
516+ else if ((B == v))
517+ then (af >= bY)
518+ else false)
519+ then aY(ch, aj, G)
520+ else [IntegerEntry(f, bX), IntegerEntry(g, bY), IntegerEntry(m, aq((H + bH), ((I - ch) - ci))), ScriptTransfer(bd.caller, ch, cf), ScriptTransfer(t, ci, cf)]
521+ }
522+ else if ((bI == B))
523+ then {
524+ let cf = A
525+ let cg = as(cc, cd, H, I, bH)
526+ let ch = fraction(cg, (O - M), O)
527+ let ci = fraction(cg, N, O)
528+ let bX = ((H - ch) - ci)
529+ let bY = (I + bH)
530+ let cb = fraction((bX + bY), V, (2 * W))
531+ if (if ((cb > bX))
532+ then true
533+ else (cb > bY))
534+ then aU(cb, bX, bY)
535+ else if (if (if ((A == v))
536+ then (af >= bX)
537+ else false)
538+ then true
539+ else if ((B == v))
540+ then (af >= bY)
541+ else false)
542+ then aY(ch, ai, C)
543+ else [IntegerEntry(f, bX), IntegerEntry(g, bY), IntegerEntry(m, aq(((H - ch) - ci), (I + bH))), ScriptTransfer(bd.caller, ch, cf), ScriptTransfer(t, ci, cf)]
544+ }
545+ else aT()
480546 }
481547
482548
483549
484-@Callable(bi)
485-func exchange (ci,cj) = {
486- let ck = $Tuple2(bi.payments[0].amount, bi.payments[0].assetId)
487- let bM = ck._1
488- let bN = ck._2
489- if (!(w))
490- then aW()
491- else if ((0 >= ci))
492- then throw(("Estimated amount must be positive. Actual: " + toString(ci)))
493- else if ((cj > ci))
494- then throw(((("Minimal amount can't be greater than estimated. Estimated: " + toString(ci)) + ". Minimal: ") + toString(cj)))
495- else if ((size(bi.payments) != 1))
496- then throw("One attached payment expected")
497- else if (!(aj))
498- then bh()
499- else if (if ((bN != z))
500- then (bN != A)
501- else false)
502- then aY()
503- else if ((10000000 > bM))
504- then throw("Only swap of 10.000000 or more tokens is allowed")
505- else if (if ((V > fraction(P, cj, bM)))
506- then true
507- else (fraction(P, ci, bM) > W))
508- then throw("Incorrect args and pmt ratio")
509- else {
510- let cl = if ((bN == z))
511- then A
512- else z
513- let cm = ap(ci, cj, bM, bN)
514- let cn = fraction(cm, (N - L), N)
515- let co = fraction(cm, M, N)
516- let cp = if ((bN == z))
517- then $Tuple2((G + bM), ((H - cn) - co))
518- else $Tuple2(((G - cn) - co), (H + bM))
519- let ca = cp._1
520- let cb = cp._2
521- let ce = fraction((ca + cb), T, (2 * U))
522- if (if ((ce > ca))
523- then true
524- else (ce > cb))
525- then aZ(ce, ca, cb)
526- else if (if (if ((z == u))
527- then (cl == z)
528- else false)
529- then (ac >= ca)
530- else false)
531- then bd(cn, af, B)
532- else if (if (if ((A == u))
533- then (cl == A)
534- else false)
535- then (ac >= cb)
536- else false)
537- then bd(cn, ag, F)
538- else [IntegerEntry(f, ca), IntegerEntry(g, cb), IntegerEntry(l, an(ca, cb)), ScriptTransfer(bi.caller, cn, cl), ScriptTransfer(s, co, cl)]
539- }
540- }
541-
542-
543-
544-@Callable(bi)
545-func shutdown () = if (!(w))
546- then throw(("DApp is already suspended. Cause: " + valueOrElse(getString(this, m), "the cause wasn't specified")))
547- else if (!(containsElement([n, o, p, q], bi.callerPublicKey)))
548- then aX()
549- else aQ("Paused by admin")
550-
551-
552-
553-@Callable(bi)
554-func activate () = if (w)
555- then aV()
556- else if (!(containsElement([n, o, p, q], bi.callerPublicKey)))
557- then aX()
558- else [BooleanEntry(c, true), DeleteEntry(m)]
559-
560-
561-
562-@Callable(bi)
563-func takeIntoAccountExtraFunds (cq) = {
564- let cr = (ah - G)
565- let cs = (ai - H)
566- let ct = (cr - (if ((z == u))
567- then cq
550+@Callable(bd)
551+func takeIntoAccountExtraFunds (cj) = {
552+ let ck = (ak - H)
553+ let cl = (al - I)
554+ let cm = (ck - (if ((A == v))
555+ then cj
568556 else 0))
569- let cu = (cs - (if ((A == u))
570- then cq
557+ let cn = (cl - (if ((B == v))
558+ then cj
571559 else 0))
572- if (!(w))
573- then aW()
574- else if ((bi.caller != this))
575- then aX()
576- else if ((0 > cq))
577- then throw(("Argument 'amountLeave' cannot be negative. Actual: " + toString(cq)))
578- else if (if ((0 > cr))
560+ if (!(x))
561+ then aR()
562+ else if (!(containsElement([o, p, q, s], bd.callerPublicKey)))
563+ then aS()
564+ else if ((0 > cj))
565+ then throw(("Argument 'amountLeave' cannot be negative. Actual: " + toString(cj)))
566+ else if (if ((0 > ck))
579567 then true
580- else (0 > cs))
581- then aQ("Enroll amount negative")
582- else if (if ((0 > ct))
568+ else (0 > cl))
569+ then aL("Enroll amount negative")
570+ else if (if ((0 > cm))
583571 then true
584- else (0 > cu))
572+ else (0 > cn))
585573 then throw("Too large amountLeave")
586- else [IntegerEntry(f, (G + ct)), IntegerEntry(g, (H + cu)), IntegerEntry(("last_income_" + x), ct), IntegerEntry(("last_income_" + y), cu)]
574+ else [IntegerEntry(f, (H + cm)), IntegerEntry(g, (I + cn))]
587575 }
588576
589577

github/deemru/w8io/169f3d6 
187.05 ms