tx · B5LvnzZWtybPu3ApyvpE1ahsjKTnQEZKn3ExATh18VGw

3N4QFkEYPsR9D54c1pHRQzqRARjubXcbGuA:  -0.02000000 Waves

2023.07.04 10:32 [2650865] smart account 3N4QFkEYPsR9D54c1pHRQzqRARjubXcbGuA > SELF 0.00000000 Waves

{ "type": 13, "id": "B5LvnzZWtybPu3ApyvpE1ahsjKTnQEZKn3ExATh18VGw", "fee": 2000000, "feeAssetId": null, "timestamp": 1688455964504, "version": 1, "sender": "3N4QFkEYPsR9D54c1pHRQzqRARjubXcbGuA", "senderPublicKey": "8nr9XxGKmrRg6E6Zss6YPynBYEFbCf39Z2D9WvVuUgzY", "proofs": [ "5ZJtShEELgFbTcKFpB1t5X4DYH8aegAXBSpmxgvZeD47Zuy5RaWbYWbMfK5SfiYvhAAH518heN44rdPXgvwAuXai" ], "script": "base64:BwIqCAISAwoBAhIGCgQCAQEBEgMKAQISAwoBAhIECgICAhIECgICAhIDCgECKAADU0VQAgJfXwANQ09OVFJBQ1RfTkFNRQIPY2FsY3VsYXRvci5yaWRlAAZTQ0FMRTgAgMLXLwAHUEVORElORwIHUEVORElORwAIRklOSVNIRUQCCEZJTklTSEVEAAVXQVZFUwIFV0FWRVMBB3dyYXBFcnIBAXMJAKwCAgkArAICBQ1DT05UUkFDVF9OQU1FAgI6IAUBcwEIdGhyb3dFcnIBAXMJAAIBCQEHd3JhcEVycgEFAXMBD2Fzc2V0SWRUb1N0cmluZwEHYXNzZXRJZAQHJG1hdGNoMAUHYXNzZXRJZAMJAAECBQckbWF0Y2gwAgpCeXRlVmVjdG9yBAFiBQckbWF0Y2gwCQDYBAEFAWIDCQABAgUHJG1hdGNoMAIEVW5pdAUFV0FWRVMJAAIBAgtNYXRjaCBlcnJvcgEDYWJzAQFuAwkAZgIAAAUBbgkBAS0BBQFuBQFuARFrZXlGYWN0b3J5QWRkcmVzcwAJALkJAgkAzAgCAgIlcwkAzAgCAgdmYWN0b3J5BQNuaWwFA1NFUAEMa2V5THBBc3NldElkAAkAuQkCCQDMCAICAiVzCQDMCAICCWxwQXNzZXRJZAUDbmlsBQNTRVABF2tleVByb3h5VHJlYXN1cnlBZGRyZXNzAAkAuQkCCQDMCAICAiVzCQDMCAICDXByb3h5VHJlYXN1cnkFA25pbAUDU0VQARZrZXlNYWluVHJlYXN1cnlBZGRyZXNzAAkAuQkCCQDMCAICAiVzCQDMCAICDG1haW5UcmVhc3VyeQUDbmlsBQNTRVABC2tleUludmVzdGVkAQdhc3NldElkCQC5CQIJAMwIAgIEJXMlcwkAzAgCAghpbnZlc3RlZAkAzAgCCQEPYXNzZXRJZFRvU3RyaW5nAQUHYXNzZXRJZAUDbmlsBQNTRVABCmtleURvbmF0ZWQBB2Fzc2V0SWQJALkJAgkAzAgCAgQlcyVzCQDMCAICB2RvbmF0ZWQJAMwIAgkBD2Fzc2V0SWRUb1N0cmluZwEFB2Fzc2V0SWQFA25pbAUDU0VQAQxrZXlBdmFpbGFibGUBC3VzZXJBZGRyZXNzCQC5CQIJAMwIAgIEJXMlcwkAzAgCAglhdmFpbGFibGUJAMwIAgkApQgBBQt1c2VyQWRkcmVzcwUDbmlsBQNTRVABCmtleUNsYWltZWQBC3VzZXJBZGRyZXNzCQC5CQIJAMwIAgIEJXMlcwkAzAgCAgdjbGFpbWVkCQDMCAIJAKUIAQULdXNlckFkZHJlc3MFA25pbAUDU0VQARBrZXlDdXJyZW50UGVyaW9kAAkAuQkCCQDMCAICAiVzCQDMCAICDWN1cnJlbnRQZXJpb2QFA25pbAUDU0VQARFrZXlQcmljZUZvclBlcmlvZAEGcGVyaW9kCQC5CQIJAMwIAgIEJXMlZAkAzAgCAgVwcmljZQkAzAgCCQCkAwEFBnBlcmlvZAUDbmlsBQNTRVABDmtleVN0YXJ0SGVpZ2h0AQZwZXJpb2QJALkJAgkAzAgCAgQlcyVkCQDMCAICC3N0YXJ0SGVpZ2h0CQDMCAIJAKQDAQUGcGVyaW9kBQNuaWwFA1NFUAEPa2V5UGVyaW9kTGVuZ3RoAAIQJXNfX3BlcmlvZExlbmd0aAEYa2V5QmxvY2tQcm9jZXNzaW5nUmV3YXJkAAIZJXNfX2Jsb2NrUHJvY2Vzc2luZ1Jld2FyZAEVa2V5TmV4dEJsb2NrVG9Qcm9jZXNzAAIWJXNfX25leHRCbG9ja1RvUHJvY2VzcwERa2V5QmxvY2tQcm9jZXNzZWQBBmhlaWdodAkAuQkCCQDMCAICBCVzJWQJAMwIAgIOYmxvY2tQcm9jZXNzZWQJAMwIAgkApAMBBQZoZWlnaHQFA25pbAUDU0VQAQ1rZXlXaXRoZHJhd2FsAAIOJXNfX3dpdGhkcmF3YWwBFGtleVdpdGhkcmF3YWxSZXF1ZXN0Agt1c2VyQWRkcmVzcwR0eElkCQC5CQIJAMwIAgIGJXMlcyVzCQDMCAICCndpdGhkcmF3YWwJAMwIAgkApQgBBQt1c2VyQWRkcmVzcwkAzAgCCQDYBAEFBHR4SWQFA25pbAUDU0VQARZ2YWx1ZVdpdGhkcmF3YWxSZXF1ZXN0BAZzdGF0dXMNbHBBc3NldEFtb3VudAx0YXJnZXRQZXJpb2QJY2xhaW1UeElkBAxjbGFpbVR4SWRTdHIEByRtYXRjaDAFCWNsYWltVHhJZAMJAAECBQckbWF0Y2gwAgpCeXRlVmVjdG9yBAFiBQckbWF0Y2gwCQDYBAEFAWIDCQABAgUHJG1hdGNoMAIEVW5pdAIEU09PTgkAAgECC01hdGNoIGVycm9yCQC5CQIJAMwIAgIIJXMlZCVkJXMJAMwIAgUGc3RhdHVzCQDMCAIJAKQDAQUNbHBBc3NldEFtb3VudAkAzAgCCQCkAwEFDHRhcmdldFBlcmlvZAkAzAgCBQxjbGFpbVR4SWRTdHIFA25pbAUDU0VQASFwYXJzZVdpdGhkcmF3YWxSZXF1ZXN0VmFsdWVPckZhaWwBAXMEBXBhcnRzCQC1CQIFAXMFA1NFUAMJAAACCQCQAwEFBXBhcnRzAAUEBnN0YXR1cwkAkQMCBQVwYXJ0cwABBA1scEFzc2V0QW1vdW50CQETdmFsdWVPckVycm9yTWVzc2FnZQIJALYJAQkAkQMCBQVwYXJ0cwACCQEHd3JhcEVycgECFWludmFsaWQgbHBBc3NldEFtb3VudAQMdGFyZ2V0UGVyaW9kCQETdmFsdWVPckVycm9yTWVzc2FnZQIJALYJAQkAkQMCBQVwYXJ0cwADCQEHd3JhcEVycgECFGludmFsaWQgdGFyZ2V0UGVyaW9kBAljbGFpbVR4SWQJAJEDAgUFcGFydHMABAkAlgoEBQZzdGF0dXMFDWxwQXNzZXRBbW91bnQFDHRhcmdldFBlcmlvZAUJY2xhaW1UeElkCQEIdGhyb3dFcnIBAiBpbnZhbGlkIHdpdGhkcmF3YWwgcmVxdWVzdCB2YWx1ZQAUZmFjdG9yeUFkZHJlc3NPcHRpb24EByRtYXRjaDAJAJ0IAgUEdGhpcwkBEWtleUZhY3RvcnlBZGRyZXNzAAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAJAKYIAQUBcwMJAAECBQckbWF0Y2gwAgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IAFGZhY3RvcnlBZGRyZXNzT3JGYWlsCQETdmFsdWVPckVycm9yTWVzc2FnZQIFFGZhY3RvcnlBZGRyZXNzT3B0aW9uCQEHd3JhcEVycgECF2ludmFsaWQgZmFjdG9yeSBhZGRyZXNzAA9scEFzc2V0SWRPcHRpb24EByRtYXRjaDAFFGZhY3RvcnlBZGRyZXNzT3B0aW9uAwkAAQIFByRtYXRjaDACB0FkZHJlc3MEAWEFByRtYXRjaDAEByRtYXRjaDEJAJ0IAgUBYQkBDGtleUxwQXNzZXRJZAADCQABAgUHJG1hdGNoMQIGU3RyaW5nBAFzBQckbWF0Y2gxCQDZBAEFAXMDCQABAgUHJG1hdGNoMQIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAwkAAQIFByRtYXRjaDACBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgAPbHBBc3NldElkT3JGYWlsCQETdmFsdWVPckVycm9yTWVzc2FnZQIFD2xwQXNzZXRJZE9wdGlvbgkBB3dyYXBFcnIBAhFpbnZhbGlkIGxwQXNzZXRJZAAacHJveHlUcmVhc3VyeUFkZHJlc3NPcHRpb24EByRtYXRjaDAFFGZhY3RvcnlBZGRyZXNzT3B0aW9uAwkAAQIFByRtYXRjaDACB0FkZHJlc3MEAWEFByRtYXRjaDAEByRtYXRjaDEJAJ0IAgUBYQkBF2tleVByb3h5VHJlYXN1cnlBZGRyZXNzAAMJAAECBQckbWF0Y2gxAgZTdHJpbmcEAXMFByRtYXRjaDEJAKYIAQUBcwMJAAECBQckbWF0Y2gxAgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IDCQABAgUHJG1hdGNoMAIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yABpwcm94eVRyZWFzdXJ5QWRkcmVzc09yRmFpbAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCBRpwcm94eVRyZWFzdXJ5QWRkcmVzc09wdGlvbgkBB3dyYXBFcnIBAh5pbnZhbGlkIHByb3h5IHRyZWFzdXJ5IGFkZHJlc3MAHGZlYXR1cmVUcmVhc3VyeUFkZHJlc3NPcHRpb24EByRtYXRjaDAFFGZhY3RvcnlBZGRyZXNzT3B0aW9uAwkAAQIFByRtYXRjaDACB0FkZHJlc3MEAWEFByRtYXRjaDAEByRtYXRjaDEJAJ0IAgUBYQkBFmtleU1haW5UcmVhc3VyeUFkZHJlc3MAAwkAAQIFByRtYXRjaDECBlN0cmluZwQBcwUHJG1hdGNoMQkApggBBQFzAwkAAQIFByRtYXRjaDECBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgMJAAECBQckbWF0Y2gwAgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IAHGZlYXR1cmVUcmVhc3VyeUFkZHJlc3NPckZhaWwJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgUcZmVhdHVyZVRyZWFzdXJ5QWRkcmVzc09wdGlvbgkBB3dyYXBFcnIBAiBpbnZhbGlkIGZlYXR1cmUgdHJlYXN1cnkgYWRkcmVzcwELb25seUFkZHJlc3MCAWkHYWRkcmVzcwMJAAACCAUBaQZjYWxsZXIFB2FkZHJlc3MGCQEIdGhyb3dFcnIBAhFwZXJtaXNzaW9uIGRlbmllZAELb25seUZhY3RvcnkBAWkJAQtvbmx5QWRkcmVzcwIFAWkFFGZhY3RvcnlBZGRyZXNzT3JGYWlsAQ9yZXdhcmRGb3JPcHRpb24CB3Jld2FyZHMGdGFyZ2V0BAFzCQCQAwEFB3Jld2FyZHMECyR0MDQyODc0MzEyCQCRAwIFB3Jld2FyZHMAAAQCYTAIBQskdDA0Mjg3NDMxMgJfMQQCcjAIBQskdDA0Mjg3NDMxMgJfMgQLJHQwNDMxNTQzNDAJAJEDAgUHcmV3YXJkcwABBAJhMQgFCyR0MDQzMTU0MzQwAl8xBAJyMQgFCyR0MDQzMTU0MzQwAl8yBAskdDA0MzQzNDM2OAkAkQMCBQdyZXdhcmRzAAIEAmEyCAULJHQwNDM0MzQzNjgCXzEEAnIyCAULJHQwNDM0MzQzNjgCXzIDAwkAZgIFAXMAAAkAAAIFAmEwBQZ0YXJnZXQHBQJyMAMDCQBmAgUBcwABCQAAAgUCYTEFBnRhcmdldAcFAnIxAwMJAGYCBQFzAAIJAAACBQJhMgUGdGFyZ2V0BwUCcjIFBHVuaXQHAWkBB2NsYWltTFABEHVzZXJBZGRyZXNzQnl0ZXMEC2NoZWNrQ2FsbGVyCQELb25seUZhY3RvcnkBBQFpAwkAAAIFC2NoZWNrQ2FsbGVyBQtjaGVja0NhbGxlcgQLdXNlckFkZHJlc3MJAQdBZGRyZXNzAQUQdXNlckFkZHJlc3NCeXRlcwQJYXZhaWxhYmxlCQELdmFsdWVPckVsc2UCCQCaCAIFFGZhY3RvcnlBZGRyZXNzT3JGYWlsCQEMa2V5QXZhaWxhYmxlAQULdXNlckFkZHJlc3MAAAQHY2xhaW1lZAkBC3ZhbHVlT3JFbHNlAgkAmggCBRRmYWN0b3J5QWRkcmVzc09yRmFpbAkBCmtleUNsYWltZWQBBQt1c2VyQWRkcmVzcwAABA5mYWN0b3J5QWN0aW9ucwMJAGYCBQlhdmFpbGFibGUAAAkAzAgCCQD8BwQFFGZhY3RvcnlBZGRyZXNzT3JGYWlsAg10cmFuc2ZlckFzc2V0CQDMCAIFEHVzZXJBZGRyZXNzQnl0ZXMJAMwIAgUJYXZhaWxhYmxlCQDMCAIFD2xwQXNzZXRJZE9yRmFpbAUDbmlsBQNuaWwJAMwIAgkA/AcEBRRmYWN0b3J5QWRkcmVzc09yRmFpbAIMaW50ZWdlckVudHJ5CQDMCAIJAQxrZXlBdmFpbGFibGUBBQt1c2VyQWRkcmVzcwkAzAgCAAAFA25pbAUDbmlsCQDMCAIJAPwHBAUUZmFjdG9yeUFkZHJlc3NPckZhaWwCDGludGVnZXJFbnRyeQkAzAgCCQEKa2V5Q2xhaW1lZAEFC3VzZXJBZGRyZXNzCQDMCAIJAGQCBQdjbGFpbWVkBQlhdmFpbGFibGUFA25pbAUDbmlsBQNuaWwJAQh0aHJvd0VycgECEG5vdGhpbmcgdG8gY2xhaW0JAJQKAgUDbmlsBQ5mYWN0b3J5QWN0aW9ucwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQhmaW5hbGl6ZQQQdXNlckFkZHJlc3NCeXRlcxhuZXdUcmVhc3VyeVZvbHVtZUluV2F2ZXMXcHdyTWFuYWdlcnNCb251c0luV2F2ZXMgdHJlYXN1cnlWb2x1bWVEaWZmQWxsb2NhdGlvbkNvZWYEC2NoZWNrQ2FsbGVyCQELb25seUZhY3RvcnkBBQFpAwkAAAIFC2NoZWNrQ2FsbGVyBQtjaGVja0NhbGxlcgQTY3VycmVudFBlcmlvZE9yRmFpbAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFFGZhY3RvcnlBZGRyZXNzT3JGYWlsCQEQa2V5Q3VycmVudFBlcmlvZAAJAQd3cmFwRXJyAQIOaW52YWxpZCBwZXJpb2QEDHBlcmlvZExlbmd0aAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFFGZhY3RvcnlBZGRyZXNzT3JGYWlsCQEPa2V5UGVyaW9kTGVuZ3RoAAkBB3dyYXBFcnIBAhVpbnZhbGlkIHBlcmlvZCBsZW5ndGgEEmN1cnJlbnRTdGFydEhlaWdodAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFFGZhY3RvcnlBZGRyZXNzT3JGYWlsCQEOa2V5U3RhcnRIZWlnaHQBBRNjdXJyZW50UGVyaW9kT3JGYWlsCQEHd3JhcEVycgECFGludmFsaWQgc3RhcnQgaGVpZ2h0BBJjdXJyZW50UHJpY2VPckZhaWwJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBRRmYWN0b3J5QWRkcmVzc09yRmFpbAkBEWtleVByaWNlRm9yUGVyaW9kAQUTY3VycmVudFBlcmlvZE9yRmFpbAkBB3dyYXBFcnIBAg1pbnZhbGlkIHByaWNlBBJuZXh0QmxvY2tUb1Byb2Nlc3MJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBRRmYWN0b3J5QWRkcmVzc09yRmFpbAkBFWtleU5leHRCbG9ja1RvUHJvY2VzcwAJAQd3cmFwRXJyAQIdaW52YWxpZCBuZXh0IGJsb2NrIHRvIHByb2Nlc3MED3BlcmlvZEVuZEhlaWdodAkAZQIJAGQCBRJjdXJyZW50U3RhcnRIZWlnaHQFDHBlcmlvZExlbmd0aAABBAZjaGVja3MJAMwIAgMJAAACCAUBaQxvcmlnaW5DYWxsZXIFHGZlYXR1cmVUcmVhc3VyeUFkZHJlc3NPckZhaWwGCQEIdGhyb3dFcnIBAhFwZXJtaXNzaW9uIGRlbmllZAkAzAgCAwkAZgIFEm5leHRCbG9ja1RvUHJvY2VzcwUPcGVyaW9kRW5kSGVpZ2h0BgkBCHRocm93RXJyAQISdW5wcm9jZXNzZWQgYmxvY2tzCQDMCAIDCQBnAgUYbmV3VHJlYXN1cnlWb2x1bWVJbldhdmVzAAAGCQEIdGhyb3dFcnIBAhtpbnZhbGlkIG5ldyB0cmVhc3VyeSB2b2x1bWUJAMwIAgMJAGcCBRdwd3JNYW5hZ2Vyc0JvbnVzSW5XYXZlcwAABgkBCHRocm93RXJyAQIaaW52YWxpZCBQV1IgbWFuYWdlcnMgYm9udXMJAMwIAgMDCQBnAgUgdHJlYXN1cnlWb2x1bWVEaWZmQWxsb2NhdGlvbkNvZWYJAQEtAQUGU0NBTEU4CQBnAgUGU0NBTEU4BSB0cmVhc3VyeVZvbHVtZURpZmZBbGxvY2F0aW9uQ29lZgcGCQEIdGhyb3dFcnIBAjNpbnZhbGlkIHRyZWFzdXJ5IHZvbHVtZSBkaWZmIGFsbG9jYXRpb24gY29lZmZpY2llbnQFA25pbAMJAAACBQZjaGVja3MFBmNoZWNrcwQSZG9uYXRlZFdhdmVzQW1vdW50CQELdmFsdWVPckVsc2UCCQCaCAIFFGZhY3RvcnlBZGRyZXNzT3JGYWlsCQEKa2V5RG9uYXRlZAEFBHVuaXQAAAQTaW52ZXN0ZWRXYXZlc0Ftb3VudAkBC3ZhbHVlT3JFbHNlAgkAmggCBRRmYWN0b3J5QWRkcmVzc09yRmFpbAkBC2tleUludmVzdGVkAQUEdW5pdAAABBxjdXJyZW50VHJlYXN1cnlWb2x1bWVJbldhdmVzCQBkAgUSZG9uYXRlZFdhdmVzQW1vdW50BRNpbnZlc3RlZFdhdmVzQW1vdW50BAlwcm9maXRSYXcJAGUCBRhuZXdUcmVhc3VyeVZvbHVtZUluV2F2ZXMFHGN1cnJlbnRUcmVhc3VyeVZvbHVtZUluV2F2ZXMEFnB3ck1hbmFnZXJzQm9udXNBbW91bnQDAwkAZgIFCXByb2ZpdFJhdwAACQBnAgUJcHJvZml0UmF3BRdwd3JNYW5hZ2Vyc0JvbnVzSW5XYXZlcwcFF3B3ck1hbmFnZXJzQm9udXNJbldhdmVzAAAEBnByb2ZpdAkAZQIFCXByb2ZpdFJhdwUWcHdyTWFuYWdlcnNCb251c0Ftb3VudAQMZG9uYXRpb25QYXJ0AwkAZgIFHGN1cnJlbnRUcmVhc3VyeVZvbHVtZUluV2F2ZXMAAAkAawMFEmRvbmF0ZWRXYXZlc0Ftb3VudAUGU0NBTEU4BRxjdXJyZW50VHJlYXN1cnlWb2x1bWVJbldhdmVzAAAEFWRvbmF0aW9uUHJvZml0UGFydFJhdwkAawMFBnByb2ZpdAUMZG9uYXRpb25QYXJ0BQZTQ0FMRTgEF2ludmVzdG1lbnRQcm9maXRQYXJ0UmF3CQBlAgUGcHJvZml0BRVkb25hdGlvblByb2ZpdFBhcnRSYXcEI3RyZWFzdXJ5Vm9sdW1lRGlmZkFsbG9jYXRpb25Db2VmQWJzCQEDYWJzAQUgdHJlYXN1cnlWb2x1bWVEaWZmQWxsb2NhdGlvbkNvZWYEEGFtb3VudFRvRG9uYXRpb24JAGsDBRdpbnZlc3RtZW50UHJvZml0UGFydFJhdwMJAGYCAAAFIHRyZWFzdXJ5Vm9sdW1lRGlmZkFsbG9jYXRpb25Db2VmBSN0cmVhc3VyeVZvbHVtZURpZmZBbGxvY2F0aW9uQ29lZkFicwAABQZTQ0FMRTgEEmFtb3VudFRvSW52ZXN0bWVudAkAawMFFWRvbmF0aW9uUHJvZml0UGFydFJhdwMJAGYCBSB0cmVhc3VyeVZvbHVtZURpZmZBbGxvY2F0aW9uQ29lZgAABSN0cmVhc3VyeVZvbHVtZURpZmZBbGxvY2F0aW9uQ29lZkFicwAABQZTQ0FMRTgEEmRvbmF0aW9uUHJvZml0UGFydAkAZAIJAGUCBRVkb25hdGlvblByb2ZpdFBhcnRSYXcFEmFtb3VudFRvSW52ZXN0bWVudAUQYW1vdW50VG9Eb25hdGlvbgQUaW52ZXN0bWVudFByb2ZpdFBhcnQJAGQCCQBlAgUXaW52ZXN0bWVudFByb2ZpdFBhcnRSYXcFEGFtb3VudFRvRG9uYXRpb24FEmFtb3VudFRvSW52ZXN0bWVudAQWaW52ZXN0ZWRXYXZlc0Ftb3VudE5ldwkAZAIFE2ludmVzdGVkV2F2ZXNBbW91bnQFFGludmVzdG1lbnRQcm9maXRQYXJ0BAluZXdQZXJpb2QJAGQCBRNjdXJyZW50UGVyaW9kT3JGYWlsAAEED2xwQXNzZXRRdWFudGl0eQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQ9scEFzc2V0SWRPckZhaWwJAQd3cmFwRXJyAQIUaW52YWxpZCBscEFzc2V0IGluZm8IcXVhbnRpdHkECG5ld1ByaWNlCQBrAwUWaW52ZXN0ZWRXYXZlc0Ftb3VudE5ldwUGU0NBTEU4BQ9scEFzc2V0UXVhbnRpdHkEE2xwQXNzZXRBbW91bnRUb0J1cm4JAQt2YWx1ZU9yRWxzZQIJAJoIAgUUZmFjdG9yeUFkZHJlc3NPckZhaWwJAQ1rZXlXaXRoZHJhd2FsAAAABBBwYXltZW50QW1vdW50TWluCQCWAwEJAMwIAgAACQDMCAIJAGsDBRNscEFzc2V0QW1vdW50VG9CdXJuBQhuZXdQcmljZQUGU0NBTEU4BQNuaWwEDXBheW1lbnRPcHRpb24DCQBmAgkAkAMBCAUBaQhwYXltZW50cwAACQCRAwIIBQFpCHBheW1lbnRzAAAFBHVuaXQEDXBheW1lbnRBbW91bnQICQEFdmFsdWUBBQ1wYXltZW50T3B0aW9uBmFtb3VudAQOcGF5bWVudEFzc2V0SWQICQEFdmFsdWUBBQ1wYXltZW50T3B0aW9uB2Fzc2V0SWQEDGNoZWNrUGF5bWVudAMDCQAAAgUQcGF5bWVudEFtb3VudE1pbgAABgMDCQECIT0CBQ1wYXltZW50T3B0aW9uBQR1bml0CQAAAgUOcGF5bWVudEFzc2V0SWQFBHVuaXQHCQBnAgUNcGF5bWVudEFtb3VudAUQcGF5bWVudEFtb3VudE1pbgcGCQEIdGhyb3dFcnIBCQCsAgICJmludmFsaWQgcGF5bWVudHMsIHBheW1lbnQgYW1vdW50IG1pbjogCQCkAwEFEHBheW1lbnRBbW91bnRNaW4DCQAAAgUMY2hlY2tQYXltZW50BQxjaGVja1BheW1lbnQEB2FjdGlvbnMDCQECIT0CBQ1wYXltZW50T3B0aW9uBQR1bml0CQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFFGZhY3RvcnlBZGRyZXNzT3JGYWlsBQ1wYXltZW50QW1vdW50BQ5wYXltZW50QXNzZXRJZAUDbmlsBQNuaWwEDmZhY3RvcnlBY3Rpb25zCQDMCAIJAPwHBAUUZmFjdG9yeUFkZHJlc3NPckZhaWwCDGludGVnZXJFbnRyeQkAzAgCCQEQa2V5Q3VycmVudFBlcmlvZAAJAMwIAgUJbmV3UGVyaW9kBQNuaWwFA25pbAkAzAgCCQD8BwQFFGZhY3RvcnlBZGRyZXNzT3JGYWlsAgxpbnRlZ2VyRW50cnkJAMwIAgkBEWtleVByaWNlRm9yUGVyaW9kAQUJbmV3UGVyaW9kCQDMCAIFCG5ld1ByaWNlBQNuaWwFA25pbAkAzAgCCQD8BwQFFGZhY3RvcnlBZGRyZXNzT3JGYWlsAgxpbnRlZ2VyRW50cnkJAMwIAgkBDmtleVN0YXJ0SGVpZ2h0AQUJbmV3UGVyaW9kCQDMCAIJAGQCBQ9wZXJpb2RFbmRIZWlnaHQAAQUDbmlsBQNuaWwJAMwIAgkA/AcEBRRmYWN0b3J5QWRkcmVzc09yRmFpbAIEYnVybgkAzAgCBRNscEFzc2V0QW1vdW50VG9CdXJuBQNuaWwFA25pbAkAzAgCCQD8BwQFFGZhY3RvcnlBZGRyZXNzT3JGYWlsAgxpbnRlZ2VyRW50cnkJAMwIAgkBDWtleVdpdGhkcmF3YWwACQDMCAIAAAUDbmlsBQNuaWwFA25pbAkAlAoCBQdhY3Rpb25zBQ5mYWN0b3J5QWN0aW9ucwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQZpbnZlc3QBEHVzZXJBZGRyZXNzQnl0ZXMEC2NoZWNrQ2FsbGVyCQELb25seUZhY3RvcnkBBQFpAwkAAAIFC2NoZWNrQ2FsbGVyBQtjaGVja0NhbGxlcgQLdXNlckFkZHJlc3MJAQdBZGRyZXNzAQUQdXNlckFkZHJlc3NCeXRlcwQTY3VycmVudFBlcmlvZE9yRmFpbAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFFGZhY3RvcnlBZGRyZXNzT3JGYWlsCQEQa2V5Q3VycmVudFBlcmlvZAAJAQd3cmFwRXJyAQIOaW52YWxpZCBwZXJpb2QEEmN1cnJlbnRQcmljZU9yRmFpbAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFFGZhY3RvcnlBZGRyZXNzT3JGYWlsCQERa2V5UHJpY2VGb3JQZXJpb2QBBRNjdXJyZW50UGVyaW9kT3JGYWlsCQEHd3JhcEVycgECDWludmFsaWQgcHJpY2UEB3BheW1lbnQDCQAAAgkAkAMBCAUBaQhwYXltZW50cwABCQCRAwIIBQFpCHBheW1lbnRzAAAJAQh0aHJvd0VycgECEGludmFsaWQgcGF5bWVudHMEDSR0MDEwNjM4MTA4MTUDAwkAAAIIBQdwYXltZW50B2Fzc2V0SWQFBHVuaXQJAGYCCAUHcGF5bWVudAZhbW91bnQAAAcJAJQKAggFB3BheW1lbnQGYW1vdW50CAUHcGF5bWVudAdhc3NldElkCQEIdGhyb3dFcnIBAhZpbnZhbGlkIHBheW1lbnQgYW1vdW50BA1wYXltZW50QW1vdW50CAUNJHQwMTA2MzgxMDgxNQJfMQQOcGF5bWVudEFzc2V0SWQIBQ0kdDAxMDYzODEwODE1Al8yBA1scEFzc2V0QW1vdW50AwkAZgIFEmN1cnJlbnRQcmljZU9yRmFpbAAACQBrAwUNcGF5bWVudEFtb3VudAUGU0NBTEU4BRJjdXJyZW50UHJpY2VPckZhaWwAAAQIaW52ZXN0ZWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUUZmFjdG9yeUFkZHJlc3NPckZhaWwJAQtrZXlJbnZlc3RlZAEFBHVuaXQAAAQHYWN0aW9ucwkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBRxmZWF0dXJlVHJlYXN1cnlBZGRyZXNzT3JGYWlsBQ1wYXltZW50QW1vdW50BQ5wYXltZW50QXNzZXRJZAUDbmlsBA5mYWN0b3J5QWN0aW9ucwkAzAgCCQD8BwQFFGZhY3RvcnlBZGRyZXNzT3JGYWlsAgxpbnRlZ2VyRW50cnkJAMwIAgkBC2tleUludmVzdGVkAQUEdW5pdAkAzAgCCQBkAgUIaW52ZXN0ZWQFDXBheW1lbnRBbW91bnQFA25pbAUDbmlsCQDMCAIJAPwHBAUUZmFjdG9yeUFkZHJlc3NPckZhaWwCB3JlaXNzdWUJAMwIAgUNbHBBc3NldEFtb3VudAUDbmlsBQNuaWwJAMwIAgkA/AcEBRRmYWN0b3J5QWRkcmVzc09yRmFpbAINdHJhbnNmZXJBc3NldAkAzAgCBRB1c2VyQWRkcmVzc0J5dGVzCQDMCAIFDWxwQXNzZXRBbW91bnQJAMwIAgUPbHBBc3NldElkT3JGYWlsBQNuaWwFA25pbAUDbmlsCQCUCgIFB2FjdGlvbnMFDmZhY3RvcnlBY3Rpb25zCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCHdpdGhkcmF3ARB1c2VyQWRkcmVzc0J5dGVzBAtjaGVja0NhbGxlcgkBC29ubHlGYWN0b3J5AQUBaQMJAAACBQtjaGVja0NhbGxlcgULY2hlY2tDYWxsZXIEC3VzZXJBZGRyZXNzCQEHQWRkcmVzcwEFEHVzZXJBZGRyZXNzQnl0ZXMEE2N1cnJlbnRQZXJpb2RPckZhaWwJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBRRmYWN0b3J5QWRkcmVzc09yRmFpbAkBEGtleUN1cnJlbnRQZXJpb2QACQEHd3JhcEVycgECDmludmFsaWQgcGVyaW9kBAdwYXltZW50AwkAAAIJAJADAQgFAWkIcGF5bWVudHMAAQkAkQMCCAUBaQhwYXltZW50cwAACQEIdGhyb3dFcnIBCQEHd3JhcEVycgECEGludmFsaWQgcGF5bWVudHMEDnBheW1lbnRBc3NldElkAwkAAAIIBQdwYXltZW50B2Fzc2V0SWQFD2xwQXNzZXRJZE9yRmFpbAUPbHBBc3NldElkT3JGYWlsCQEIdGhyb3dFcnIBAhVpbnZhbGlkIHBheW1lbnQgYXNzZXQEDXBheW1lbnRBbW91bnQDCQBmAggFB3BheW1lbnQGYW1vdW50AAAIBQdwYXltZW50BmFtb3VudAkBCHRocm93RXJyAQIWaW52YWxpZCBwYXltZW50IGFtb3VudAQKd2l0aGRyYXdhbAkBC3ZhbHVlT3JFbHNlAgkAmggCBRRmYWN0b3J5QWRkcmVzc09yRmFpbAkBDWtleVdpdGhkcmF3YWwAAAAEB2FjdGlvbnMJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUUZmFjdG9yeUFkZHJlc3NPckZhaWwFDXBheW1lbnRBbW91bnQFDnBheW1lbnRBc3NldElkBQNuaWwEDmZhY3RvcnlBY3Rpb25zCQDMCAIJAPwHBAUUZmFjdG9yeUFkZHJlc3NPckZhaWwCDGludGVnZXJFbnRyeQkAzAgCCQENa2V5V2l0aGRyYXdhbAAJAMwIAgkAZAIFCndpdGhkcmF3YWwFDXBheW1lbnRBbW91bnQFA25pbAUDbmlsCQDMCAIJAPwHBAUUZmFjdG9yeUFkZHJlc3NPckZhaWwCC3N0cmluZ0VudHJ5CQDMCAIJARRrZXlXaXRoZHJhd2FsUmVxdWVzdAIFC3VzZXJBZGRyZXNzCAUBaQ10cmFuc2FjdGlvbklkCQDMCAIJARZ2YWx1ZVdpdGhkcmF3YWxSZXF1ZXN0BAUHUEVORElORwUNcGF5bWVudEFtb3VudAkAZAIFE2N1cnJlbnRQZXJpb2RPckZhaWwAAQUEdW5pdAUDbmlsBQNuaWwFA25pbAMJAAACBQ5mYWN0b3J5QWN0aW9ucwUOZmFjdG9yeUFjdGlvbnMJAJQKAgUHYWN0aW9ucwUOZmFjdG9yeUFjdGlvbnMJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEOY2FuY2VsV2l0aGRyYXcCEHVzZXJBZGRyZXNzQnl0ZXMEdHhJZAQLY2hlY2tDYWxsZXIJAQtvbmx5RmFjdG9yeQEFAWkDCQAAAgULY2hlY2tDYWxsZXIFC2NoZWNrQ2FsbGVyBAt1c2VyQWRkcmVzcwkBB0FkZHJlc3MBBRB1c2VyQWRkcmVzc0J5dGVzBBd3aXRoZHJhd2FsUmVxdWVzdE9wdGlvbgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFFGZhY3RvcnlBZGRyZXNzT3JGYWlsCQEUa2V5V2l0aGRyYXdhbFJlcXVlc3QCBQt1c2VyQWRkcmVzcwUEdHhJZAkBB3dyYXBFcnIBAhppbnZhbGlkIHdpdGhkcmF3YWwgcmVxdWVzdAQTY3VycmVudFBlcmlvZE9yRmFpbAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFFGZhY3RvcnlBZGRyZXNzT3JGYWlsCQEQa2V5Q3VycmVudFBlcmlvZAAJAQd3cmFwRXJyAQIOaW52YWxpZCBwZXJpb2QEDSR0MDEzMjI1MTMzMzgJASFwYXJzZVdpdGhkcmF3YWxSZXF1ZXN0VmFsdWVPckZhaWwBBRd3aXRoZHJhd2FsUmVxdWVzdE9wdGlvbgQGc3RhdHVzCAUNJHQwMTMyMjUxMzMzOAJfMQQNbHBBc3NldEFtb3VudAgFDSR0MDEzMjI1MTMzMzgCXzIEDHRhcmdldFBlcmlvZAgFDSR0MDEzMjI1MTMzMzgCXzMECWNsYWltVHhJZAgFDSR0MDEzMjI1MTMzMzgCXzQEBmNoZWNrcwkAzAgCAwkAAAIFBnN0YXR1cwUHUEVORElORwYJAQh0aHJvd0VycgECIWludmFsaWQgd2l0aGRyYXdhbCByZXF1ZXN0IHN0YXR1cwkAzAgCAwkAZgIFDHRhcmdldFBlcmlvZAUTY3VycmVudFBlcmlvZE9yRmFpbAYJAQh0aHJvd0VycgECIWludmFsaWQgd2l0aGRyYXdhbCByZXF1ZXN0IHBlcmlvZAUDbmlsAwkAAAIFBmNoZWNrcwUGY2hlY2tzBAp3aXRoZHJhd2FsCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUUZmFjdG9yeUFkZHJlc3NPckZhaWwJAQ1rZXlXaXRoZHJhd2FsAAkBB3dyYXBFcnIBAh9pbnZhbGlkIHRvdGFsIHdpdGhkcmF3YWwgYW1vdW50BA5mYWN0b3J5QWN0aW9ucwkAzAgCCQD8BwQFFGZhY3RvcnlBZGRyZXNzT3JGYWlsAgxpbnRlZ2VyRW50cnkJAMwIAgkBDWtleVdpdGhkcmF3YWwACQDMCAIDCQBnAgUKd2l0aGRyYXdhbAUNbHBBc3NldEFtb3VudAkAZQIFCndpdGhkcmF3YWwFDWxwQXNzZXRBbW91bnQJAQh0aHJvd0VycgECGWludmFsaWQgd2l0aGRyYXdhbCBhbW91bnQFA25pbAUDbmlsCQDMCAIJAPwHBAUUZmFjdG9yeUFkZHJlc3NPckZhaWwCC2RlbGV0ZUVudHJ5CQDMCAIJARRrZXlXaXRoZHJhd2FsUmVxdWVzdAIFC3VzZXJBZGRyZXNzBQR0eElkBQNuaWwFA25pbAkAzAgCCQD8BwQFFGZhY3RvcnlBZGRyZXNzT3JGYWlsAg10cmFuc2ZlckFzc2V0CQDMCAIFEHVzZXJBZGRyZXNzQnl0ZXMJAMwIAgUNbHBBc3NldEFtb3VudAkAzAgCBQ9scEFzc2V0SWRPckZhaWwFA25pbAUDbmlsBQNuaWwDCQAAAgUOZmFjdG9yeUFjdGlvbnMFDmZhY3RvcnlBY3Rpb25zCQCUCgIFA25pbAUOZmFjdG9yeUFjdGlvbnMJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEKY2xhaW1XYXZlcwIQdXNlckFkZHJlc3NCeXRlcwR0eElkBAtjaGVja0NhbGxlcgkBC29ubHlGYWN0b3J5AQUBaQMJAAACBQtjaGVja0NhbGxlcgULY2hlY2tDYWxsZXIEC3VzZXJBZGRyZXNzCQEHQWRkcmVzcwEFEHVzZXJBZGRyZXNzQnl0ZXMEE2N1cnJlbnRQZXJpb2RPckZhaWwJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBRRmYWN0b3J5QWRkcmVzc09yRmFpbAkBEGtleUN1cnJlbnRQZXJpb2QACQEHd3JhcEVycgECDmludmFsaWQgcGVyaW9kBBd3aXRoZHJhd2FsUmVxdWVzdE9wdGlvbgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFFGZhY3RvcnlBZGRyZXNzT3JGYWlsCQEUa2V5V2l0aGRyYXdhbFJlcXVlc3QCBQt1c2VyQWRkcmVzcwUEdHhJZAkBB3dyYXBFcnIBAhppbnZhbGlkIHdpdGhkcmF3YWwgcmVxdWVzdAQNJHQwMTQ2NzAxNDc4MwkBIXBhcnNlV2l0aGRyYXdhbFJlcXVlc3RWYWx1ZU9yRmFpbAEFF3dpdGhkcmF3YWxSZXF1ZXN0T3B0aW9uBAZzdGF0dXMIBQ0kdDAxNDY3MDE0NzgzAl8xBA1scEFzc2V0QW1vdW50CAUNJHQwMTQ2NzAxNDc4MwJfMgQMdGFyZ2V0UGVyaW9kCAUNJHQwMTQ2NzAxNDc4MwJfMwQJY2xhaW1UeElkCAUNJHQwMTQ2NzAxNDc4MwJfNAMJAAACBQZzdGF0dXMFCEZJTklTSEVECQEIdGhyb3dFcnIBAiFpbnZhbGlkIHdpdGhkcmF3YWwgcmVxdWVzdCBzdGF0dXMDCQBmAgUMdGFyZ2V0UGVyaW9kBRNjdXJyZW50UGVyaW9kT3JGYWlsCQEIdGhyb3dFcnIBAiFpbnZhbGlkIHdpdGhkcmF3YWwgcmVxdWVzdCBwZXJpb2QEC3ByaWNlT3JGYWlsCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUUZmFjdG9yeUFkZHJlc3NPckZhaWwJARFrZXlQcmljZUZvclBlcmlvZAEFDHRhcmdldFBlcmlvZAkBB3dyYXBFcnIBAg1pbnZhbGlkIHByaWNlBAZhbW91bnQDCQBmAgULcHJpY2VPckZhaWwAAAkAawMFDWxwQXNzZXRBbW91bnQFC3ByaWNlT3JGYWlsBQZTQ0FMRTgAAAQOZmFjdG9yeUFjdGlvbnMJAMwIAgkA/AcEBRRmYWN0b3J5QWRkcmVzc09yRmFpbAILc3RyaW5nRW50cnkJAMwIAgkBFGtleVdpdGhkcmF3YWxSZXF1ZXN0AgULdXNlckFkZHJlc3MFBHR4SWQJAMwIAgkBFnZhbHVlV2l0aGRyYXdhbFJlcXVlc3QEBQhGSU5JU0hFRAUNbHBBc3NldEFtb3VudAUMdGFyZ2V0UGVyaW9kCAUBaQ10cmFuc2FjdGlvbklkBQNuaWwFA25pbAkAzAgCCQD8BwQFFGZhY3RvcnlBZGRyZXNzT3JGYWlsAg10cmFuc2ZlcldhdmVzCQDMCAIFEHVzZXJBZGRyZXNzQnl0ZXMJAMwIAgUGYW1vdW50BQNuaWwFA25pbAUDbmlsCQCUCgIFA25pbAUOZmFjdG9yeUFjdGlvbnMJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQENcHJvY2Vzc0Jsb2NrcwEQdXNlckFkZHJlc3NCeXRlcwQLY2hlY2tDYWxsZXIJAQtvbmx5RmFjdG9yeQEFAWkDCQAAAgULY2hlY2tDYWxsZXIFC2NoZWNrQ2FsbGVyBAt1c2VyQWRkcmVzcwkBB0FkZHJlc3MBBRB1c2VyQWRkcmVzc0J5dGVzBBNjdXJyZW50UGVyaW9kT3JGYWlsCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUUZmFjdG9yeUFkZHJlc3NPckZhaWwJARBrZXlDdXJyZW50UGVyaW9kAAkBB3dyYXBFcnIBAg5pbnZhbGlkIHBlcmlvZAQMcGVyaW9kTGVuZ3RoCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUUZmFjdG9yeUFkZHJlc3NPckZhaWwJAQ9rZXlQZXJpb2RMZW5ndGgACQEHd3JhcEVycgECFWludmFsaWQgcGVyaW9kIGxlbmd0aAQSY3VycmVudFN0YXJ0SGVpZ2h0CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUUZmFjdG9yeUFkZHJlc3NPckZhaWwJAQ5rZXlTdGFydEhlaWdodAEFE2N1cnJlbnRQZXJpb2RPckZhaWwJAQd3cmFwRXJyAQIUaW52YWxpZCBzdGFydCBoZWlnaHQEEmN1cnJlbnRQcmljZU9yRmFpbAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFFGZhY3RvcnlBZGRyZXNzT3JGYWlsCQERa2V5UHJpY2VGb3JQZXJpb2QBBRNjdXJyZW50UGVyaW9kT3JGYWlsCQEHd3JhcEVycgECDWludmFsaWQgcHJpY2UEEm5leHRCbG9ja1RvUHJvY2VzcwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFFGZhY3RvcnlBZGRyZXNzT3JGYWlsCQEVa2V5TmV4dEJsb2NrVG9Qcm9jZXNzAAkBB3dyYXBFcnIBAh1pbnZhbGlkIG5leHQgYmxvY2sgdG8gcHJvY2VzcwQPcGVyaW9kRW5kSGVpZ2h0CQBlAgkAZAIFEmN1cnJlbnRTdGFydEhlaWdodAUMcGVyaW9kTGVuZ3RoAAEEHGJsb2Nrc1Byb2Nlc3NpbmdCYXRjaFNpemVNYXgAKAQZYmxvY2tzUHJvY2Vzc2luZ0JhdGNoU2l6ZQMDAwkAZwIFBmhlaWdodAUSbmV4dEJsb2NrVG9Qcm9jZXNzAwkAZwIFEm5leHRCbG9ja1RvUHJvY2VzcwUSY3VycmVudFN0YXJ0SGVpZ2h0BgkAAAIFE2N1cnJlbnRQZXJpb2RPckZhaWwAAAcJAGcCBQ9wZXJpb2RFbmRIZWlnaHQFEm5leHRCbG9ja1RvUHJvY2VzcwcJAJcDAQkAzAgCCQBkAgkAZQIFD3BlcmlvZEVuZEhlaWdodAUSbmV4dEJsb2NrVG9Qcm9jZXNzAAEJAMwIAgUcYmxvY2tzUHJvY2Vzc2luZ0JhdGNoU2l6ZU1heAUDbmlsCQEIdGhyb3dFcnIBCQEHd3JhcEVycgECFGludmFsaWQgdGFyZ2V0IGJsb2NrBBVibG9ja1Byb2Nlc3NpbmdSZXdhcmQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBRRmYWN0b3J5QWRkcmVzc09yRmFpbAkBGGtleUJsb2NrUHJvY2Vzc2luZ1Jld2FyZAAJAQd3cmFwRXJyAQIfaW52YWxpZCBibG9jayBwcm9jZXNzaW5nIHJld2FyZAQgYmxvY2tQcm9jZXNzaW5nUmV3YXJkQnlHZW5lcmF0b3IJAGkCBRVibG9ja1Byb2Nlc3NpbmdSZXdhcmQFGWJsb2Nrc1Byb2Nlc3NpbmdCYXRjaFNpemUEKWJsb2NrUHJvY2Vzc2luZ1Jld2FyZEJ5R2VuZXJhdG9yUmVtYWluZGVyCQBlAgUVYmxvY2tQcm9jZXNzaW5nUmV3YXJkCQBoAgUgYmxvY2tQcm9jZXNzaW5nUmV3YXJkQnlHZW5lcmF0b3IFGWJsb2Nrc1Byb2Nlc3NpbmdCYXRjaFNpemUKAQNtYXACA2FjYwNpbmMDCQBnAgUDaW5jBRlibG9ja3NQcm9jZXNzaW5nQmF0Y2hTaXplBQNhY2MEEXRhcmdldEJsb2NrSGVpZ2h0CQBkAgUSbmV4dEJsb2NrVG9Qcm9jZXNzBQNpbmMED3RhcmdldEJsb2NrSW5mbwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDtBwEFEXRhcmdldEJsb2NrSGVpZ2h0CQEHd3JhcEVycgECEmludmFsaWQgYmxvY2sgaW5mbwQUdHJlYXN1cnlSZXdhcmRPckZhaWwJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkBD3Jld2FyZEZvck9wdGlvbgIIBQ90YXJnZXRCbG9ja0luZm8HcmV3YXJkcwUacHJveHlUcmVhc3VyeUFkZHJlc3NPckZhaWwJAQd3cmFwRXJyAQkArAICAiNpbnZhbGlkIHRyZWFzdXJ5IHJld2FyZCBmb3IgaGVpZ2h0IAkApAMBBRF0YXJnZXRCbG9ja0hlaWdodAQJZ2VuZXJhdG9yCAUPdGFyZ2V0QmxvY2tJbmZvCWdlbmVyYXRvcgQJYXZhaWxhYmxlCQELdmFsdWVPckVsc2UCCQCaCAIFFGZhY3RvcnlBZGRyZXNzT3JGYWlsCQEMa2V5QXZhaWxhYmxlAQUJZ2VuZXJhdG9yAAAEDGNhbGxlclJld2FyZAMJAAACBQNpbmMJAGUCBRlibG9ja3NQcm9jZXNzaW5nQmF0Y2hTaXplAAEJAGQCBSBibG9ja1Byb2Nlc3NpbmdSZXdhcmRCeUdlbmVyYXRvcgUpYmxvY2tQcm9jZXNzaW5nUmV3YXJkQnlHZW5lcmF0b3JSZW1haW5kZXIFIGJsb2NrUHJvY2Vzc2luZ1Jld2FyZEJ5R2VuZXJhdG9yBA1scEFzc2V0QW1vdW50AwkAZgIFEmN1cnJlbnRQcmljZU9yRmFpbAAACQBrAwkAZQIFFHRyZWFzdXJ5UmV3YXJkT3JGYWlsBQxjYWxsZXJSZXdhcmQFBlNDQUxFOAUSY3VycmVudFByaWNlT3JGYWlsAAAEFGZhY3Rv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YXJkBAdhY3Rpb25zCQDMCAIJAPwHBAUUZmFjdG9yeUFkZHJlc3NPckZhaWwCB3JlaXNzdWUJAMwIAgUSbHBBc3NldEFtb3VudFRvdGFsBQNuaWwFA25pbAkAzAgCCQD8BwQFFGZhY3RvcnlBZGRyZXNzT3JGYWlsAgxpbnRlZ2VyRW50cnkJAMwIAgkBFWtleU5leHRCbG9ja1RvUHJvY2VzcwAJAMwIAgkAZAIFEm5leHRCbG9ja1RvUHJvY2VzcwUZYmxvY2tzUHJvY2Vzc2luZ0JhdGNoU2l6ZQUDbmlsBQNuaWwJAMwIAgkA/AcEBRRmYWN0b3J5QWRkcmVzc09yRmFpbAIZdHJhbnNmZXJGcm9tUHJveHlUcmVhc3VyeQkAzAgCCAUcZmVhdHVyZVRyZWFzdXJ5QWRkcmVzc09yRmFpbAVieXRlcwkAzAgCBRpyZXdhcmRUb01haW5UcmVhc3VyeUFtb3VudAUDbmlsBQNuaWwJAMwIAgkA/AcEBRRmYWN0b3J5QWRkcmVzc09yRmFpbAIZdHJhbnNmZXJGcm9tUHJveHlUcmVhc3VyeQkAzAgCBRB1c2VyQWRkcmVzc0J5dGVzCQDMCAIFFWJsb2NrUHJvY2Vzc2luZ1Jld2FyZAUDbmlsBQNuaWwFA25pbAMJAAACBQdhY3Rpb25zBQdhY3Rpb25zCQCUCgIFA25pbAUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECdHgBBnZlcmlmeQAJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAIBQJ0eA9zZW5kZXJQdWJsaWNLZXkgUpu8", "chainId": 84, "height": 2650865, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 3Lr7BqyTgiuPQMK8VPqWbFxwxUJMcBJ81f3LUhbLKDUz Next: 44m9yjWpS7gNhmv6EENXArPuAkciZcSLmL6kCRfkzgjP Diff:
OldNewDifferences
533533 let bP = bH._2
534534 let bQ = bH._1
535535 let bR = (bP - br)
536- let bf = [invoke(T, "transferWaves", [as, br], nil), invoke(T, "reissue", [bQ], nil), invoke(T, "integerEntry", [E(), (aE + bq)], nil), invoke(T, "transferFromProxyTreasury", [ab.bytes, bR], nil), invoke(T, "transferFromProxyTreasury", [T.bytes, br], nil)]
536+ let bf = [invoke(T, "reissue", [bQ], nil), invoke(T, "integerEntry", [E(), (aE + bq)], nil), invoke(T, "transferFromProxyTreasury", [ab.bytes, bR], nil), invoke(T, "transferFromProxyTreasury", [as, br], nil)]
537537 if ((bf == bf))
538538 then $Tuple2(nil, unit)
539539 else throw("Strict value is not equal to itself.")
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 7 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "__"
55
66 let b = "calculator.ride"
77
88 let c = 100000000
99
1010 let d = "PENDING"
1111
1212 let e = "FINISHED"
1313
1414 let f = "WAVES"
1515
1616 func g (h) = ((b + ": ") + h)
1717
1818
1919 func i (h) = throw(g(h))
2020
2121
2222 func j (k) = {
2323 let l = k
2424 if ($isInstanceOf(l, "ByteVector"))
2525 then {
2626 let m = l
2727 toBase58String(m)
2828 }
2929 else if ($isInstanceOf(l, "Unit"))
3030 then f
3131 else throw("Match error")
3232 }
3333
3434
3535 func n (o) = if ((0 > o))
3636 then -(o)
3737 else o
3838
3939
4040 func p () = makeString(["%s", "factory"], a)
4141
4242
4343 func q () = makeString(["%s", "lpAssetId"], a)
4444
4545
4646 func r () = makeString(["%s", "proxyTreasury"], a)
4747
4848
4949 func s () = makeString(["%s", "mainTreasury"], a)
5050
5151
5252 func t (k) = makeString(["%s%s", "invested", j(k)], a)
5353
5454
5555 func u (k) = makeString(["%s%s", "donated", j(k)], a)
5656
5757
5858 func v (w) = makeString(["%s%s", "available", toString(w)], a)
5959
6060
6161 func x (w) = makeString(["%s%s", "claimed", toString(w)], a)
6262
6363
6464 func y () = makeString(["%s", "currentPeriod"], a)
6565
6666
6767 func z (A) = makeString(["%s%d", "price", toString(A)], a)
6868
6969
7070 func B (A) = makeString(["%s%d", "startHeight", toString(A)], a)
7171
7272
7373 func C () = "%s__periodLength"
7474
7575
7676 func D () = "%s__blockProcessingReward"
7777
7878
7979 func E () = "%s__nextBlockToProcess"
8080
8181
8282 func F (G) = makeString(["%s%d", "blockProcessed", toString(G)], a)
8383
8484
8585 func H () = "%s__withdrawal"
8686
8787
8888 func I (w,J) = makeString(["%s%s%s", "withdrawal", toString(w), toBase58String(J)], a)
8989
9090
9191 func K (L,M,N,O) = {
9292 let P = {
9393 let l = O
9494 if ($isInstanceOf(l, "ByteVector"))
9595 then {
9696 let m = l
9797 toBase58String(m)
9898 }
9999 else if ($isInstanceOf(l, "Unit"))
100100 then "SOON"
101101 else throw("Match error")
102102 }
103103 makeString(["%s%d%d%s", L, toString(M), toString(N), P], a)
104104 }
105105
106106
107107 func Q (h) = {
108108 let R = split(h, a)
109109 if ((size(R) == 5))
110110 then {
111111 let L = R[1]
112112 let M = valueOrErrorMessage(parseInt(R[2]), g("invalid lpAssetAmount"))
113113 let N = valueOrErrorMessage(parseInt(R[3]), g("invalid targetPeriod"))
114114 let O = R[4]
115115 $Tuple4(L, M, N, O)
116116 }
117117 else i("invalid withdrawal request value")
118118 }
119119
120120
121121 let S = {
122122 let l = getString(this, p())
123123 if ($isInstanceOf(l, "String"))
124124 then {
125125 let h = l
126126 addressFromString(h)
127127 }
128128 else if ($isInstanceOf(l, "Unit"))
129129 then unit
130130 else throw("Match error")
131131 }
132132
133133 let T = valueOrErrorMessage(S, g("invalid factory address"))
134134
135135 let U = {
136136 let l = S
137137 if ($isInstanceOf(l, "Address"))
138138 then {
139139 let V = l
140140 let W = getString(V, q())
141141 if ($isInstanceOf(W, "String"))
142142 then {
143143 let h = W
144144 fromBase58String(h)
145145 }
146146 else if ($isInstanceOf(W, "Unit"))
147147 then unit
148148 else throw("Match error")
149149 }
150150 else if ($isInstanceOf(l, "Unit"))
151151 then unit
152152 else throw("Match error")
153153 }
154154
155155 let X = valueOrErrorMessage(U, g("invalid lpAssetId"))
156156
157157 let Y = {
158158 let l = S
159159 if ($isInstanceOf(l, "Address"))
160160 then {
161161 let V = l
162162 let W = getString(V, r())
163163 if ($isInstanceOf(W, "String"))
164164 then {
165165 let h = W
166166 addressFromString(h)
167167 }
168168 else if ($isInstanceOf(W, "Unit"))
169169 then unit
170170 else throw("Match error")
171171 }
172172 else if ($isInstanceOf(l, "Unit"))
173173 then unit
174174 else throw("Match error")
175175 }
176176
177177 let Z = valueOrErrorMessage(Y, g("invalid proxy treasury address"))
178178
179179 let aa = {
180180 let l = S
181181 if ($isInstanceOf(l, "Address"))
182182 then {
183183 let V = l
184184 let W = getString(V, s())
185185 if ($isInstanceOf(W, "String"))
186186 then {
187187 let h = W
188188 addressFromString(h)
189189 }
190190 else if ($isInstanceOf(W, "Unit"))
191191 then unit
192192 else throw("Match error")
193193 }
194194 else if ($isInstanceOf(l, "Unit"))
195195 then unit
196196 else throw("Match error")
197197 }
198198
199199 let ab = valueOrErrorMessage(aa, g("invalid feature treasury address"))
200200
201201 func ac (ad,ae) = if ((ad.caller == ae))
202202 then true
203203 else i("permission denied")
204204
205205
206206 func af (ad) = ac(ad, T)
207207
208208
209209 func ag (ah,ai) = {
210210 let h = size(ah)
211211 let aj = ah[0]
212212 let ak = aj._1
213213 let al = aj._2
214214 let am = ah[1]
215215 let an = am._1
216216 let ao = am._2
217217 let ap = ah[2]
218218 let aq = ap._1
219219 let ar = ap._2
220220 if (if ((h > 0))
221221 then (ak == ai)
222222 else false)
223223 then al
224224 else if (if ((h > 1))
225225 then (an == ai)
226226 else false)
227227 then ao
228228 else if (if ((h > 2))
229229 then (aq == ai)
230230 else false)
231231 then ar
232232 else unit
233233 }
234234
235235
236236 @Callable(ad)
237237 func claimLP (as) = {
238238 let at = af(ad)
239239 if ((at == at))
240240 then {
241241 let w = Address(as)
242242 let au = valueOrElse(getInteger(T, v(w)), 0)
243243 let av = valueOrElse(getInteger(T, x(w)), 0)
244244 let aw = if ((au > 0))
245245 then [invoke(T, "transferAsset", [as, au, X], nil), invoke(T, "integerEntry", [v(w), 0], nil), invoke(T, "integerEntry", [x(w), (av + au)], nil)]
246246 else i("nothing to claim")
247247 $Tuple2(nil, aw)
248248 }
249249 else throw("Strict value is not equal to itself.")
250250 }
251251
252252
253253
254254 @Callable(ad)
255255 func finalize (as,ax,ay,az) = {
256256 let at = af(ad)
257257 if ((at == at))
258258 then {
259259 let aA = valueOrErrorMessage(getInteger(T, y()), g("invalid period"))
260260 let aB = valueOrErrorMessage(getInteger(T, C()), g("invalid period length"))
261261 let aC = valueOrErrorMessage(getInteger(T, B(aA)), g("invalid start height"))
262262 let aD = valueOrErrorMessage(getInteger(T, z(aA)), g("invalid price"))
263263 let aE = valueOrErrorMessage(getInteger(T, E()), g("invalid next block to process"))
264264 let aF = ((aC + aB) - 1)
265265 let aG = [if ((ad.originCaller == ab))
266266 then true
267267 else i("permission denied"), if ((aE > aF))
268268 then true
269269 else i("unprocessed blocks"), if ((ax >= 0))
270270 then true
271271 else i("invalid new treasury volume"), if ((ay >= 0))
272272 then true
273273 else i("invalid PWR managers bonus"), if (if ((az >= -(c)))
274274 then (c >= az)
275275 else false)
276276 then true
277277 else i("invalid treasury volume diff allocation coefficient")]
278278 if ((aG == aG))
279279 then {
280280 let aH = valueOrElse(getInteger(T, u(unit)), 0)
281281 let aI = valueOrElse(getInteger(T, t(unit)), 0)
282282 let aJ = (aH + aI)
283283 let aK = (ax - aJ)
284284 let aL = if (if ((aK > 0))
285285 then (aK >= ay)
286286 else false)
287287 then ay
288288 else 0
289289 let aM = (aK - aL)
290290 let aN = if ((aJ > 0))
291291 then fraction(aH, c, aJ)
292292 else 0
293293 let aO = fraction(aM, aN, c)
294294 let aP = (aM - aO)
295295 let aQ = n(az)
296296 let aR = fraction(aP, if ((0 > az))
297297 then aQ
298298 else 0, c)
299299 let aS = fraction(aO, if ((az > 0))
300300 then aQ
301301 else 0, c)
302302 let aT = ((aO - aS) + aR)
303303 let aU = ((aP - aR) + aS)
304304 let aV = (aI + aU)
305305 let aW = (aA + 1)
306306 let aX = valueOrErrorMessage(assetInfo(X), g("invalid lpAsset info")).quantity
307307 let aY = fraction(aV, c, aX)
308308 let aZ = valueOrElse(getInteger(T, H()), 0)
309309 let ba = max([0, fraction(aZ, aY, c)])
310310 let bb = if ((size(ad.payments) > 0))
311311 then ad.payments[0]
312312 else unit
313313 let bc = value(bb).amount
314314 let bd = value(bb).assetId
315315 let be = if (if ((ba == 0))
316316 then true
317317 else if (if ((bb != unit))
318318 then (bd == unit)
319319 else false)
320320 then (bc >= ba)
321321 else false)
322322 then true
323323 else i(("invalid payments, payment amount min: " + toString(ba)))
324324 if ((be == be))
325325 then {
326326 let bf = if ((bb != unit))
327327 then [ScriptTransfer(T, bc, bd)]
328328 else nil
329329 let aw = [invoke(T, "integerEntry", [y(), aW], nil), invoke(T, "integerEntry", [z(aW), aY], nil), invoke(T, "integerEntry", [B(aW), (aF + 1)], nil), invoke(T, "burn", [aZ], nil), invoke(T, "integerEntry", [H(), 0], nil)]
330330 $Tuple2(bf, aw)
331331 }
332332 else throw("Strict value is not equal to itself.")
333333 }
334334 else throw("Strict value is not equal to itself.")
335335 }
336336 else throw("Strict value is not equal to itself.")
337337 }
338338
339339
340340
341341 @Callable(ad)
342342 func invest (as) = {
343343 let at = af(ad)
344344 if ((at == at))
345345 then {
346346 let w = Address(as)
347347 let aA = valueOrErrorMessage(getInteger(T, y()), g("invalid period"))
348348 let aD = valueOrErrorMessage(getInteger(T, z(aA)), g("invalid price"))
349349 let bg = if ((size(ad.payments) == 1))
350350 then ad.payments[0]
351351 else i("invalid payments")
352352 let bh = if (if ((bg.assetId == unit))
353353 then (bg.amount > 0)
354354 else false)
355355 then $Tuple2(bg.amount, bg.assetId)
356356 else i("invalid payment amount")
357357 let bc = bh._1
358358 let bd = bh._2
359359 let M = if ((aD > 0))
360360 then fraction(bc, c, aD)
361361 else 0
362362 let bi = valueOrElse(getInteger(T, t(unit)), 0)
363363 let bf = [ScriptTransfer(ab, bc, bd)]
364364 let aw = [invoke(T, "integerEntry", [t(unit), (bi + bc)], nil), invoke(T, "reissue", [M], nil), invoke(T, "transferAsset", [as, M, X], nil)]
365365 $Tuple2(bf, aw)
366366 }
367367 else throw("Strict value is not equal to itself.")
368368 }
369369
370370
371371
372372 @Callable(ad)
373373 func withdraw (as) = {
374374 let at = af(ad)
375375 if ((at == at))
376376 then {
377377 let w = Address(as)
378378 let aA = valueOrErrorMessage(getInteger(T, y()), g("invalid period"))
379379 let bg = if ((size(ad.payments) == 1))
380380 then ad.payments[0]
381381 else i(g("invalid payments"))
382382 let bd = if ((bg.assetId == X))
383383 then X
384384 else i("invalid payment asset")
385385 let bc = if ((bg.amount > 0))
386386 then bg.amount
387387 else i("invalid payment amount")
388388 let bj = valueOrElse(getInteger(T, H()), 0)
389389 let bf = [ScriptTransfer(T, bc, bd)]
390390 let aw = [invoke(T, "integerEntry", [H(), (bj + bc)], nil), invoke(T, "stringEntry", [I(w, ad.transactionId), K(d, bc, (aA + 1), unit)], nil)]
391391 if ((aw == aw))
392392 then $Tuple2(bf, aw)
393393 else throw("Strict value is not equal to itself.")
394394 }
395395 else throw("Strict value is not equal to itself.")
396396 }
397397
398398
399399
400400 @Callable(ad)
401401 func cancelWithdraw (as,J) = {
402402 let at = af(ad)
403403 if ((at == at))
404404 then {
405405 let w = Address(as)
406406 let bk = valueOrErrorMessage(getString(T, I(w, J)), g("invalid withdrawal request"))
407407 let aA = valueOrErrorMessage(getInteger(T, y()), g("invalid period"))
408408 let bl = Q(bk)
409409 let L = bl._1
410410 let M = bl._2
411411 let N = bl._3
412412 let O = bl._4
413413 let aG = [if ((L == d))
414414 then true
415415 else i("invalid withdrawal request status"), if ((N > aA))
416416 then true
417417 else i("invalid withdrawal request period")]
418418 if ((aG == aG))
419419 then {
420420 let bj = valueOrErrorMessage(getInteger(T, H()), g("invalid total withdrawal amount"))
421421 let aw = [invoke(T, "integerEntry", [H(), if ((bj >= M))
422422 then (bj - M)
423423 else i("invalid withdrawal amount")], nil), invoke(T, "deleteEntry", [I(w, J)], nil), invoke(T, "transferAsset", [as, M, X], nil)]
424424 if ((aw == aw))
425425 then $Tuple2(nil, aw)
426426 else throw("Strict value is not equal to itself.")
427427 }
428428 else throw("Strict value is not equal to itself.")
429429 }
430430 else throw("Strict value is not equal to itself.")
431431 }
432432
433433
434434
435435 @Callable(ad)
436436 func claimWaves (as,J) = {
437437 let at = af(ad)
438438 if ((at == at))
439439 then {
440440 let w = Address(as)
441441 let aA = valueOrErrorMessage(getInteger(T, y()), g("invalid period"))
442442 let bk = valueOrErrorMessage(getString(T, I(w, J)), g("invalid withdrawal request"))
443443 let bm = Q(bk)
444444 let L = bm._1
445445 let M = bm._2
446446 let N = bm._3
447447 let O = bm._4
448448 if ((L == e))
449449 then i("invalid withdrawal request status")
450450 else if ((N > aA))
451451 then i("invalid withdrawal request period")
452452 else {
453453 let bn = valueOrErrorMessage(getInteger(T, z(N)), g("invalid price"))
454454 let bo = if ((bn > 0))
455455 then fraction(M, bn, c)
456456 else 0
457457 let aw = [invoke(T, "stringEntry", [I(w, J), K(e, M, N, ad.transactionId)], nil), invoke(T, "transferWaves", [as, bo], nil)]
458458 $Tuple2(nil, aw)
459459 }
460460 }
461461 else throw("Strict value is not equal to itself.")
462462 }
463463
464464
465465
466466 @Callable(ad)
467467 func processBlocks (as) = {
468468 let at = af(ad)
469469 if ((at == at))
470470 then {
471471 let w = Address(as)
472472 let aA = valueOrErrorMessage(getInteger(T, y()), g("invalid period"))
473473 let aB = valueOrErrorMessage(getInteger(T, C()), g("invalid period length"))
474474 let aC = valueOrErrorMessage(getInteger(T, B(aA)), g("invalid start height"))
475475 let aD = valueOrErrorMessage(getInteger(T, z(aA)), g("invalid price"))
476476 let aE = valueOrErrorMessage(getInteger(T, E()), g("invalid next block to process"))
477477 let aF = ((aC + aB) - 1)
478478 let bp = 40
479479 let bq = if (if (if ((height >= aE))
480480 then if ((aE >= aC))
481481 then true
482482 else (aA == 0)
483483 else false)
484484 then (aF >= aE)
485485 else false)
486486 then min([((aF - aE) + 1), bp])
487487 else i(g("invalid target block"))
488488 let br = valueOrErrorMessage(getInteger(T, D()), g("invalid block processing reward"))
489489 let bs = (br / bq)
490490 let bt = (br - (bs * bq))
491491 func bu (bv,bw) = if ((bw >= bq))
492492 then bv
493493 else {
494494 let bx = (aE + bw)
495495 let by = valueOrErrorMessage(blockInfoByHeight(bx), g("invalid block info"))
496496 let bz = valueOrErrorMessage(ag(by.rewards, Z), g(("invalid treasury reward for height " + toString(bx))))
497497 let bA = by.generator
498498 let au = valueOrElse(getInteger(T, v(bA)), 0)
499499 let bB = if ((bw == (bq - 1)))
500500 then (bs + bt)
501501 else bs
502502 let M = if ((aD > 0))
503503 then fraction((bz - bB), c, aD)
504504 else 0
505505 let bC = [invoke(T, "stringEntry", [F(bx), makeString([toBase58String(ad.transactionId), toString(aA), toString(bA), toBase58String(as), toString(bz), toString(bB), toString(M)], a)], nil), invoke(T, "integerEntry", [v(bA), (au + M)], nil)]
506506 if ((bC == bC))
507507 then {
508508 let bD = bv
509509 let bE = bD._1
510510 let bF = bD._2
511511 $Tuple2((bE + M), (bF + bz))
512512 }
513513 else throw("Strict value is not equal to itself.")
514514 }
515515
516516 let bG = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39]
517517 let bH = {
518518 let bI = bG
519519 let bJ = size(bI)
520520 let bK = $Tuple2(0, 0)
521521 func bL (bM,bN) = if ((bN >= bJ))
522522 then bM
523523 else bu(bM, bI[bN])
524524
525525 func bO (bM,bN) = if ((bN >= bJ))
526526 then bM
527527 else throw("List size exceeds 40")
528528
529529 bO(bL(bL(bL(bL(bL(bL(bL(bL(bL(bL(bL(bL(bL(bL(bL(bL(bL(bL(bL(bL(bL(bL(bL(bL(bL(bL(bL(bL(bL(bL(bL(bL(bL(bL(bL(bL(bL(bL(bL(bL(bK, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40)
530530 }
531531 if ((bH == bH))
532532 then {
533533 let bP = bH._2
534534 let bQ = bH._1
535535 let bR = (bP - br)
536- let bf = [invoke(T, "transferWaves", [as, br], nil), invoke(T, "reissue", [bQ], nil), invoke(T, "integerEntry", [E(), (aE + bq)], nil), invoke(T, "transferFromProxyTreasury", [ab.bytes, bR], nil), invoke(T, "transferFromProxyTreasury", [T.bytes, br], nil)]
536+ let bf = [invoke(T, "reissue", [bQ], nil), invoke(T, "integerEntry", [E(), (aE + bq)], nil), invoke(T, "transferFromProxyTreasury", [ab.bytes, bR], nil), invoke(T, "transferFromProxyTreasury", [as, br], nil)]
537537 if ((bf == bf))
538538 then $Tuple2(nil, unit)
539539 else throw("Strict value is not equal to itself.")
540540 }
541541 else throw("Strict value is not equal to itself.")
542542 }
543543 else throw("Strict value is not equal to itself.")
544544 }
545545
546546
547547 @Verifier(bS)
548548 func bT () = sigVerify(bS.bodyBytes, bS.proofs[0], bS.senderPublicKey)
549549

github/deemru/w8io/169f3d6 
87.97 ms