tx · H8kkox836HAEzoz5veDTdsgn3zraMnVuebgCNHmJjTsg

3N4QFkEYPsR9D54c1pHRQzqRARjubXcbGuA:  -0.02000000 Waves

2023.07.04 17:29 [2651278] smart account 3N4QFkEYPsR9D54c1pHRQzqRARjubXcbGuA > SELF 0.00000000 Waves

{ "type": 13, "id": "H8kkox836HAEzoz5veDTdsgn3zraMnVuebgCNHmJjTsg", "fee": 2000000, "feeAssetId": null, "timestamp": 1688480965733, "version": 1, "sender": "3N4QFkEYPsR9D54c1pHRQzqRARjubXcbGuA", "senderPublicKey": "8nr9XxGKmrRg6E6Zss6YPynBYEFbCf39Z2D9WvVuUgzY", "proofs": [ "2PWcQKpXp8Q3FyMM3wcdAiFkM12yv4DENDesr7mXHDQWNPPfUDzG2YP19hBFfej3HMTBnDJzQtechRzivtX4ph4r" ], "script": "base64:BwIqCAISAwoBAhIGCgQCAQEBEgMKAQISAwoBAhIECgICAhIECgICAhIDCgECKgADU0VQAgJfXwANQ09OVFJBQ1RfTkFNRQIPY2FsY3VsYXRvci5yaWRlAAZTQ0FMRTgAgMLXLwAHUEVORElORwIHUEVORElORwAIRklOSVNIRUQCCEZJTklTSEVEAAVXQVZFUwIFV0FWRVMBB3dyYXBFcnIBAXMJAKwCAgkArAICBQ1DT05UUkFDVF9OQU1FAgI6IAUBcwEIdGhyb3dFcnIBAXMJAAIBCQEHd3JhcEVycgEFAXMBD2Fzc2V0SWRUb1N0cmluZwEHYXNzZXRJZAQHJG1hdGNoMAUHYXNzZXRJZAMJAAECBQckbWF0Y2gwAgpCeXRlVmVjdG9yBAFiBQckbWF0Y2gwCQDYBAEFAWIDCQABAgUHJG1hdGNoMAIEVW5pdAUFV0FWRVMJAAIBAgtNYXRjaCBlcnJvcgEDYWJzAQFuAwkAZgIAAAUBbgkBAS0BBQFuBQFuARFrZXlGYWN0b3J5QWRkcmVzcwAJALkJAgkAzAgCAgIlcwkAzAgCAgdmYWN0b3J5BQNuaWwFA1NFUAETa2V5TWFuYWdlclB1YmxpY0tleQAJALkJAgkAzAgCAgIlcwkAzAgCAhBtYW5hZ2VyUHVibGljS2V5BQNuaWwFA1NFUAEMa2V5THBBc3NldElkAAkAuQkCCQDMCAICAiVzCQDMCAICCWxwQXNzZXRJZAUDbmlsBQNTRVABF2tleVByb3h5VHJlYXN1cnlBZGRyZXNzAAkAuQkCCQDMCAICAiVzCQDMCAICDXByb3h5VHJlYXN1cnkFA25pbAUDU0VQARZrZXlNYWluVHJlYXN1cnlBZGRyZXNzAAkAuQkCCQDMCAICAiVzCQDMCAICDG1haW5UcmVhc3VyeQUDbmlsBQNTRVABC2tleUludmVzdGVkAQdhc3NldElkCQC5CQIJAMwIAgIEJXMlcwkAzAgCAghpbnZlc3RlZAkAzAgCCQEPYXNzZXRJZFRvU3RyaW5nAQUHYXNzZXRJZAUDbmlsBQNTRVABCmtleURvbmF0ZWQBB2Fzc2V0SWQJALkJAgkAzAgCAgQlcyVzCQDMCAICB2RvbmF0ZWQJAMwIAgkBD2Fzc2V0SWRUb1N0cmluZwEFB2Fzc2V0SWQFA25pbAUDU0VQAQxrZXlBdmFpbGFibGUBC3VzZXJBZGRyZXNzCQC5CQIJAMwIAgIEJXMlcwkAzAgCAglhdmFpbGFibGUJAMwIAgkApQgBBQt1c2VyQWRkcmVzcwUDbmlsBQNTRVABCmtleUNsYWltZWQBC3VzZXJBZGRyZXNzCQC5CQIJAMwIAgIEJXMlcwkAzAgCAgdjbGFpbWVkCQDMCAIJAKUIAQULdXNlckFkZHJlc3MFA25pbAUDU0VQARBrZXlDdXJyZW50UGVyaW9kAAkAuQkCCQDMCAICAiVzCQDMCAICDWN1cnJlbnRQZXJpb2QFA25pbAUDU0VQARFrZXlQcmljZUZvclBlcmlvZAEGcGVyaW9kCQC5CQIJAMwIAgIEJXMlZAkAzAgCAgVwcmljZQkAzAgCCQCkAwEFBnBlcmlvZAUDbmlsBQNTRVABDmtleVN0YXJ0SGVpZ2h0AQZwZXJpb2QJALkJAgkAzAgCAgQlcyVkCQDMCAICC3N0YXJ0SGVpZ2h0CQDMCAIJAKQDAQUGcGVyaW9kBQNuaWwFA1NFUAEPa2V5UGVyaW9kTGVuZ3RoAAIQJXNfX3BlcmlvZExlbmd0aAEYa2V5QmxvY2tQcm9jZXNzaW5nUmV3YXJkAAIZJXNfX2Jsb2NrUHJvY2Vzc2luZ1Jld2FyZAEVa2V5TmV4dEJsb2NrVG9Qcm9jZXNzAAIWJXNfX25leHRCbG9ja1RvUHJvY2VzcwERa2V5QmxvY2tQcm9jZXNzZWQBBmhlaWdodAkAuQkCCQDMCAICBCVzJWQJAMwIAgIOYmxvY2tQcm9jZXNzZWQJAMwIAgkApAMBBQZoZWlnaHQFA25pbAUDU0VQAQ1rZXlXaXRoZHJhd2FsAAIOJXNfX3dpdGhkcmF3YWwBFGtleVdpdGhkcmF3YWxSZXF1ZXN0Agt1c2VyQWRkcmVzcwR0eElkCQC5CQIJAMwIAgIGJXMlcyVzCQDMCAICCndpdGhkcmF3YWwJAMwIAgkApQgBBQt1c2VyQWRkcmVzcwkAzAgCCQDYBAEFBHR4SWQFA25pbAUDU0VQARZ2YWx1ZVdpdGhkcmF3YWxSZXF1ZXN0BAZzdGF0dXMNbHBBc3NldEFtb3VudAx0YXJnZXRQZXJpb2QJY2xhaW1UeElkBAxjbGFpbVR4SWRTdHIEByRtYXRjaDAFCWNsYWltVHhJZAMJAAECBQckbWF0Y2gwAgpCeXRlVmVjdG9yBAFiBQckbWF0Y2gwCQDYBAEFAWIDCQABAgUHJG1hdGNoMAIEVW5pdAIEU09PTgkAAgECC01hdGNoIGVycm9yCQC5CQIJAMwIAgIIJXMlZCVkJXMJAMwIAgUGc3RhdHVzCQDMCAIJAKQDAQUNbHBBc3NldEFtb3VudAkAzAgCCQCkAwEFDHRhcmdldFBlcmlvZAkAzAgCBQxjbGFpbVR4SWRTdHIFA25pbAUDU0VQASFwYXJzZVdpdGhkcmF3YWxSZXF1ZXN0VmFsdWVPckZhaWwBAXMEBXBhcnRzCQC1CQIFAXMFA1NFUAMJAAACCQCQAwEFBXBhcnRzAAUEBnN0YXR1cwkAkQMCBQVwYXJ0cwABBA1scEFzc2V0QW1vdW50CQETdmFsdWVPckVycm9yTWVzc2FnZQIJALYJAQkAkQMCBQVwYXJ0cwACCQEHd3JhcEVycgECFWludmFsaWQgbHBBc3NldEFtb3VudAQMdGFyZ2V0UGVyaW9kCQETdmFsdWVPckVycm9yTWVzc2FnZQIJALYJAQkAkQMCBQVwYXJ0cwADCQEHd3JhcEVycgECFGludmFsaWQgdGFyZ2V0UGVyaW9kBAljbGFpbVR4SWQJAJEDAgUFcGFydHMABAkAlgoEBQZzdGF0dXMFDWxwQXNzZXRBbW91bnQFDHRhcmdldFBlcmlvZAUJY2xhaW1UeElkCQEIdGhyb3dFcnIBAiBpbnZhbGlkIHdpdGhkcmF3YWwgcmVxdWVzdCB2YWx1ZQAUZmFjdG9yeUFkZHJlc3NPcHRpb24EByRtYXRjaDAJAJ0IAgUEdGhpcwkBEWtleUZhY3RvcnlBZGRyZXNzAAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAJAKYIAQUBcwMJAAECBQckbWF0Y2gwAgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IAFGZhY3RvcnlBZGRyZXNzT3JGYWlsCQETdmFsdWVPckVycm9yTWVzc2FnZQIFFGZhY3RvcnlBZGRyZXNzT3B0aW9uCQEHd3JhcEVycgECF2ludmFsaWQgZmFjdG9yeSBhZGRyZXNzAA9scEFzc2V0SWRPcHRpb24EByRtYXRjaDAFFGZhY3RvcnlBZGRyZXNzT3B0aW9uAwkAAQIFByRtYXRjaDACB0FkZHJlc3MEAWEFByRtYXRjaDAEByRtYXRjaDEJAJ0IAgUBYQkBDGtleUxwQXNzZXRJZAADCQABAgUHJG1hdGNoMQIGU3RyaW5nBAFzBQckbWF0Y2gxCQDZBAEFAXMDCQABAgUHJG1hdGNoMQIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAwkAAQIFByRtYXRjaDACBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgAPbHBBc3NldElkT3JGYWlsCQETdmFsdWVPckVycm9yTWVzc2FnZQIFD2xwQXNzZXRJZE9wdGlvbgkBB3dyYXBFcnIBAhFpbnZhbGlkIGxwQXNzZXRJZAAacHJveHlUcmVhc3VyeUFkZHJlc3NPcHRpb24EByRtYXRjaDAFFGZhY3RvcnlBZGRyZXNzT3B0aW9uAwkAAQIFByRtYXRjaDACB0FkZHJlc3MEAWEFByRtYXRjaDAEByRtYXRjaDEJAJ0IAgUBYQkBF2tleVByb3h5VHJlYXN1cnlBZGRyZXNzAAMJAAECBQckbWF0Y2gxAgZTdHJpbmcEAXMFByRtYXRjaDEJAKYIAQUBcwMJAAECBQckbWF0Y2gxAgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IDCQABAgUHJG1hdGNoMAIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yABpwcm94eVRyZWFzdXJ5QWRkcmVzc09yRmFpbAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCBRpwcm94eVRyZWFzdXJ5QWRkcmVzc09wdGlvbgkBB3dyYXBFcnIBAh5pbnZhbGlkIHByb3h5IHRyZWFzdXJ5IGFkZHJlc3MAGW1haW5UcmVhc3VyeUFkZHJlc3NPcHRpb24EByRtYXRjaDAFFGZhY3RvcnlBZGRyZXNzT3B0aW9uAwkAAQIFByRtYXRjaDACB0FkZHJlc3MEAWEFByRtYXRjaDAEByRtYXRjaDEJAJ0IAgUBYQkBFmtleU1haW5UcmVhc3VyeUFkZHJlc3MAAwkAAQIFByRtYXRjaDECBlN0cmluZwQBcwUHJG1hdGNoMQkApggBBQFzAwkAAQIFByRtYXRjaDECBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgMJAAECBQckbWF0Y2gwAgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IAGW1haW5UcmVhc3VyeUFkZHJlc3NPckZhaWwJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgUZbWFpblRyZWFzdXJ5QWRkcmVzc09wdGlvbgkBB3dyYXBFcnIBAh1pbnZhbGlkIG1haW4gdHJlYXN1cnkgYWRkcmVzcwEZZ2V0TWFuYWdlclB1YmxpY0tleU9yVW5pdAAEByRtYXRjaDAFFGZhY3RvcnlBZGRyZXNzT3B0aW9uAwkAAQIFByRtYXRjaDACB0FkZHJlc3MEAmZhBQckbWF0Y2gwBAckbWF0Y2gxCQCdCAIFAmZhCQETa2V5TWFuYWdlclB1YmxpY0tleQADCQABAgUHJG1hdGNoMQIGU3RyaW5nBANwdWIFByRtYXRjaDEJANkEAQUDcHViBQR1bml0BQR1bml0AQtvbmx5QWRkcmVzcwIBaQdhZGRyZXNzAwkAAAIIBQFpBmNhbGxlcgUHYWRkcmVzcwYJAQh0aHJvd0VycgECEXBlcm1pc3Npb24gZGVuaWVkAQtvbmx5RmFjdG9yeQEBaQkBC29ubHlBZGRyZXNzAgUBaQUUZmFjdG9yeUFkZHJlc3NPckZhaWwBD3Jld2FyZEZvck9wdGlvbgIHcmV3YXJkcwZ0YXJnZXQEAXMJAJADAQUHcmV3YXJkcwQLJHQwNDYyOTQ2NTQJAJEDAgUHcmV3YXJkcwAABAJhMAgFCyR0MDQ2Mjk0NjU0Al8xBAJyMAgFCyR0MDQ2Mjk0NjU0Al8yBAskdDA0NjU3NDY4MgkAkQMCBQdyZXdhcmRzAAEEAmExCAULJHQwNDY1NzQ2ODICXzEEAnIxCAULJHQwNDY1NzQ2ODICXzIECyR0MDQ2ODU0NzEwCQCRAwIFB3Jld2FyZHMAAgQCYTIIBQskdDA0Njg1NDcxMAJfMQQCcjIIBQskdDA0Njg1NDcxMAJfMgMDCQBmAgUBcwAACQAAAgUCYTAFBnRhcmdldAcFAnIwAwMJAGYCBQFzAAEJAAACBQJhMQUGdGFyZ2V0BwUCcjEDAwkAZgIFAXMAAgkAAAIFAmEyBQZ0YXJnZXQHBQJyMgUEdW5pdAcBaQEHY2xhaW1MUAEQdXNlckFkZHJlc3NCeXRlcwQLY2hlY2tDYWxsZXIJAQtvbmx5RmFjdG9yeQEFAWkDCQAAAgULY2hlY2tDYWxsZXIFC2NoZWNrQ2FsbGVyBAt1c2VyQWRkcmVzcwkBB0FkZHJlc3MBBRB1c2VyQWRkcmVzc0J5dGVzBAlhdmFpbGFibGUJAQt2YWx1ZU9yRWxzZQIJAJoIAgUUZmFjdG9yeUFkZHJlc3NPckZhaWwJAQxrZXlBdmFpbGFibGUBBQt1c2VyQWRkcmVzcwAABAdjbGFpbWVkCQELdmFsdWVPckVsc2UCCQCaCAIFFGZhY3RvcnlBZGRyZXNzT3JGYWlsCQEKa2V5Q2xhaW1lZAEFC3VzZXJBZGRyZXNzAAAEDmZhY3RvcnlBY3Rpb25zAwkAZgIFCWF2YWlsYWJsZQAACQDMCAIJAPwHBAUUZmFjdG9yeUFkZHJlc3NPckZhaWwCDXRyYW5zZmVyQXNzZXQJAMwIAgUQdXNlckFkZHJlc3NCeXRlcwkAzAgCBQlhdmFpbGFibGUJAMwIAgUPbHBBc3NldElkT3JGYWlsBQNuaWwFA25pbAkAzAgCCQD8BwQFFGZhY3RvcnlBZGRyZXNzT3JGYWlsAgxpbnRlZ2VyRW50cnkJAMwIAgkBDGtleUF2YWlsYWJsZQEFC3VzZXJBZGRyZXNzCQDMCAIAAAUDbmlsBQNuaWwJAMwIAgkA/AcEBRRmYWN0b3J5QWRkcmVzc09yRmFpbAIMaW50ZWdlckVudHJ5CQDMCAIJAQprZXlDbGFpbWVkAQULdXNlckFkZHJlc3MJAMwIAgkAZAIFB2NsYWltZWQFCWF2YWlsYWJsZQUDbmlsBQNuaWwFA25pbAkBCHRocm93RXJyAQIQbm90aGluZyB0byBjbGFpbQkAlAoCBQNuaWwFDmZhY3RvcnlBY3Rpb25zCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCGZpbmFsaXplBBB1c2VyQWRkcmVzc0J5dGVzGG5ld1RyZWFzdXJ5Vm9sdW1lSW5XYXZlcxdwd3JNYW5hZ2Vyc0JvbnVzSW5XYXZlcyB0cmVhc3VyeVZvbHVtZURpZmZBbGxvY2F0aW9uQ29lZgQLY2hlY2tDYWxsZXIJAQtvbmx5RmFjdG9yeQEFAWkDCQAAAgULY2hlY2tDYWxsZXIFC2NoZWNrQ2FsbGVyBBNjdXJyZW50UGVyaW9kT3JGYWlsCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUUZmFjdG9yeUFkZHJlc3NPckZhaWwJARBrZXlDdXJyZW50UGVyaW9kAAkBB3dyYXBFcnIBAg5pbnZhbGlkIHBlcmlvZAQMcGVyaW9kTGVuZ3RoCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUUZmFjdG9yeUFkZHJlc3NPckZhaWwJAQ9rZXlQZXJpb2RMZW5ndGgACQEHd3JhcEVycgECFWludmFsaWQgcGVyaW9kIGxlbmd0aAQSY3VycmVudFN0YXJ0SGVpZ2h0CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUUZmFjdG9yeUFkZHJlc3NPckZhaWwJAQ5rZXlTdGFydEhlaWdodAEFE2N1cnJlbnRQZXJpb2RPckZhaWwJAQd3cmFwRXJyAQIUaW52YWxpZCBzdGFydCBoZWlnaHQEEmN1cnJlbnRQcmljZU9yRmFpbAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFFGZhY3RvcnlBZGRyZXNzT3JGYWlsCQERa2V5UHJpY2VGb3JQZXJpb2QBBRNjdXJyZW50UGVyaW9kT3JGYWlsCQEHd3JhcEVycgECDWludmFsaWQgcHJpY2UEEm5leHRCbG9ja1RvUHJvY2VzcwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFFGZhY3RvcnlBZGRyZXNzT3JGYWlsCQEVa2V5TmV4dEJsb2NrVG9Qcm9jZXNzAAkBB3dyYXBFcnIBAh1pbnZhbGlkIG5leHQgYmxvY2sgdG8gcHJvY2VzcwQPcGVyaW9kRW5kSGVpZ2h0CQBlAgkAZAIFEmN1cnJlbnRTdGFydEhlaWdodAUMcGVyaW9kTGVuZ3RoAAEEBmNoZWNrcwkAzAgCAwkAAAIIBQFpDG9yaWdpbkNhbGxlcgUZbWFpblRyZWFzdXJ5QWRkcmVzc09yRmFpbAYJAQh0aHJvd0VycgECEXBlcm1pc3Npb24gZGVuaWVkCQDMCAIDCQBmAgUSbmV4dEJsb2NrVG9Qcm9jZXNzBQ9wZXJpb2RFbmRIZWlnaHQGCQEIdGhyb3dFcnIBAhJ1bnByb2Nlc3NlZCBibG9ja3MJAMwIAgMJAGcCBRhuZXdUcmVhc3VyeVZvbHVtZUluV2F2ZXMAAAYJAQh0aHJvd0VycgECG2ludmFsaWQgbmV3IHRyZWFzdXJ5IHZvbHVtZQkAzAgCAwkAZwIFF3B3ck1hbmFnZXJzQm9udXNJbldhdmVzAAAGCQEIdGhyb3dFcnIBAhppbnZhbGlkIFBXUiBtYW5hZ2VycyBib251cwkAzAgCAwMJAGcCBSB0cmVhc3VyeVZvbHVtZURpZmZBbGxvY2F0aW9uQ29lZgkBAS0BBQZTQ0FMRTgJAGcCBQZTQ0FMRTgFIHRyZWFzdXJ5Vm9sdW1lRGlmZkFsbG9jYXRpb25Db2VmBwYJAQh0aHJvd0VycgECM2ludmFsaWQgdHJlYXN1cnkgdm9sdW1lIGRpZmYgYWxsb2NhdGlvbiBjb2VmZmljaWVudAUDbmlsAwkAAAIFBmNoZWNrcwUGY2hlY2tzBBJkb25hdGVkV2F2ZXNBbW91bnQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUUZmFjdG9yeUFkZHJlc3NPckZhaWwJAQprZXlEb25hdGVkAQUEdW5pdAAABBNpbnZlc3RlZFdhdmVzQW1vdW50CQELdmFsdWVPckVsc2UCCQCaCAIFFGZhY3RvcnlBZGRyZXNzT3JGYWlsCQELa2V5SW52ZXN0ZWQBBQR1bml0AAAEHGN1cnJlbnRUcmVhc3VyeVZvbHVtZUluV2F2ZXMJAGQCBRJkb25hdGVkV2F2ZXNBbW91bnQFE2ludmVzdGVkV2F2ZXNBbW91bnQECXByb2ZpdFJhdwkAZQIFGG5ld1RyZWFzdXJ5Vm9sdW1lSW5XYXZlcwUcY3VycmVudFRyZWFzdXJ5Vm9sdW1lSW5XYXZlcwQWcHdyTWFuYWdlcnNCb251c0Ftb3VudAMDCQBmAgUJcHJvZml0UmF3AAAJAGcCBQlwcm9maXRSYXcFF3B3ck1hbmFnZXJzQm9udXNJbldhdmVzBwUXcHdyTWFuYWdlcnNCb251c0luV2F2ZXMAAAQGcHJvZml0CQBlAgUJcHJvZml0UmF3BRZwd3JNYW5hZ2Vyc0JvbnVzQW1vdW50BAxkb25hdGlvblBhcnQDCQBmAgUcY3VycmVudFRyZWFzdXJ5Vm9sdW1lSW5XYXZlcwAACQBrAwUSZG9uYXRlZFdhdmVzQW1vdW50BQZTQ0FMRTgFHGN1cnJlbnRUcmVhc3VyeVZvbHVtZUluV2F2ZXMAAAQVZG9uYXRpb25Qcm9maXRQYXJ0UmF3CQBrAwUGcHJvZml0BQxkb25hdGlvblBhcnQFBlNDQUxFOAQXaW52ZXN0bWVudFByb2ZpdFBhcnRSYXcJAGUCBQZwcm9maXQFFWRvbmF0aW9uUHJvZml0UGFydFJhdwQjdHJlYXN1cnlWb2x1bWVEaWZmQWxsb2NhdGlvbkNvZWZBYnMJAQNhYnMBBSB0cmVhc3VyeVZvbHVtZURpZmZBbGxvY2F0aW9uQ29lZgQQYW1vdW50VG9Eb25hdGlvbgkAawMFF2ludmVzdG1lbnRQcm9maXRQYXJ0UmF3AwkAZgIAAAUgdHJlYXN1cnlWb2x1bWVEaWZmQWxsb2NhdGlvbkNvZWYFI3RyZWFzdXJ5Vm9sdW1lRGlmZkFsbG9jYXRpb25Db2VmQWJzAAAFBlNDQUxFOAQSYW1vdW50VG9JbnZlc3RtZW50CQBrAwUVZG9uYXRpb25Qcm9maXRQYXJ0UmF3AwkAZgIFIHRyZWFzdXJ5Vm9sdW1lRGlmZkFsbG9jYXRpb25Db2VmAAAFI3RyZWFzdXJ5Vm9sdW1lRGlmZkFsbG9jYXRpb25Db2VmQWJzAAAFBlNDQUxFOAQSZG9uYXRpb25Qcm9maXRQYXJ0CQBkAgkAZQIFFWRvbmF0aW9uUHJvZml0UGFydFJhdwUSYW1vdW50VG9JbnZlc3RtZW50BRBhbW91bnRUb0RvbmF0aW9uBBRpbnZlc3RtZW50UHJvZml0UGFydAkAZAIJAGUCBRdpbnZlc3RtZW50UHJvZml0UGFydFJhdwUQYW1vdW50VG9Eb25hdGlvbgUSYW1vdW50VG9JbnZlc3RtZW50BBZpbnZlc3RlZFdhdmVzQW1vdW50TmV3CQBkAgUTaW52ZXN0ZWRXYXZlc0Ftb3VudAUUaW52ZXN0bWVudFByb2ZpdFBhcnQECW5ld1BlcmlvZAkAZAIFE2N1cnJlbnRQZXJpb2RPckZhaWwAAQQPbHBBc3NldFF1YW50aXR5CAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFD2xwQXNzZXRJZE9yRmFpbAkBB3dyYXBFcnIBAhRpbnZhbGlkIGxwQXNzZXQgaW5mbwhxdWFudGl0eQQIbmV3UHJpY2UJAGsDBRZpbnZlc3RlZFdhdmVzQW1vdW50TmV3BQZTQ0FMRTgFD2xwQXNzZXRRdWFudGl0eQQTbHBBc3NldEFtb3VudFRvQnVybgkBC3ZhbHVlT3JFbHNlAgkAmggCBRRmYWN0b3J5QWRkcmVzc09yRmFpbAkBDWtleVdpdGhkcmF3YWwAAAAEC25ld0xwQW1vdW50CQBlAgUPbHBBc3NldFF1YW50aXR5BRNscEFzc2V0QW1vdW50VG9CdXJuBA9uZXdJbnZlc3RBbW91bnQJAJYDAQkAzAgCAAAJAMwIAgkAawMFC25ld0xwQW1vdW50BQhuZXdQcmljZQUGU0NBTEU4BQNuaWwEEHBheW1lbnRBbW91bnRNaW4JAJYDAQkAzAgCAAAJAMwIAgkAawMFE2xwQXNzZXRBbW91bnRUb0J1cm4FCG5ld1ByaWNlBQZTQ0FMRTgFA25pbAQNcGF5bWVudE9wdGlvbgMJAGYCCQCQAwEIBQFpCHBheW1lbnRzAAAJAJEDAggFAWkIcGF5bWVudHMAAAUEdW5pdAQNcGF5bWVudEFtb3VudAgJAQV2YWx1ZQEFDXBheW1lbnRPcHRpb24GYW1vdW50BA5wYXltZW50QXNzZXRJZAgJAQV2YWx1ZQEFDXBheW1lbnRPcHRpb24HYXNzZXRJZAQMY2hlY2tQYXltZW50AwMJAAACBRBwYXltZW50QW1vdW50TWluAAAGAwMJAQIhPQIFDXBheW1lbnRPcHRpb24FBHVuaXQJAAACBQ5wYXltZW50QXNzZXRJZAUEdW5pdAcJAGcCBQ1wYXltZW50QW1vdW50BRBwYXltZW50QW1vdW50TWluBwYJAQh0aHJvd0VycgEJAKwCAgImaW52YWxpZCBwYXltZW50cywgcGF5bWVudCBhbW91bnQgbWluOiAJAKQDAQUQcGF5bWVudEFtb3VudE1pbgMJAAACBQxjaGVja1BheW1lbnQFDGNoZWNrUGF5bWVudAQHYWN0aW9ucwMJAQIhPQIFDXBheW1lbnRPcHRpb24FBHVuaXQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUUZmFjdG9yeUFkZHJlc3NPckZhaWwFDXBheW1lbnRBbW91bnQFDnBheW1lbnRBc3NldElkBQNuaWwFA25pbAQOZmFjdG9yeUFjdGlvbnMJAMwIAgkA/AcEBRRmYWN0b3J5QWRkcmVzc09yRmFpbAIMaW50ZWdlckVudHJ5CQDMCAIJARBrZXlDdXJyZW50UGVyaW9kAAkAzAgCBQluZXdQZXJpb2QFA25pbAUDbmlsCQDMCAIJAPwHBAUUZmFjdG9yeUFkZHJlc3NPckZhaWwCDGludGVnZXJFbnRyeQkAzAgCCQERa2V5UHJpY2VGb3JQZXJpb2QBBQluZXdQZXJpb2QJAMwIAgUIbmV3UHJpY2UFA25pbAUDbmlsCQDMCAIJAPwHBAUUZmFjdG9yeUFkZHJlc3NPckZhaWwCDGludGVnZXJFbnRyeQkAzAgCCQEOa2V5U3RhcnRIZWlnaHQBBQluZXdQZXJpb2QJAMwIAgkAZAIFD3BlcmlvZEVuZEhlaWdodAABBQNuaWwFA25pbAkAzAgCCQD8BwQFFGZhY3RvcnlBZGRyZXNzT3JGYWlsAgRidXJuCQDMCAIFE2xwQXNzZXRBbW91bnRUb0J1cm4FA25pbAUDbmlsCQDMCAIJAPwHBAUUZmFjdG9yeUFkZHJlc3NPckZhaWwCDGludGVnZXJFbnRyeQkAzAgCCQENa2V5V2l0aGRyYXdhbAAJAMwIAgAABQNuaWwFA25pbAkAzAgCCQD8BwQFFGZhY3RvcnlBZGRyZXNzT3JGYWlsAgxpbnRlZ2VyRW50cnkJAMwIAgkBC2tleUludmVzdGVkAQUEdW5pdAkAzAgCBQ9uZXdJbnZlc3RBbW91bnQFA25pbAUDbmlsBQNuaWwJAJQKAgUHYWN0aW9ucwUOZmFjdG9yeUFjdGlvbnMJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEGaW52ZXN0ARB1c2VyQWRkcmVzc0J5dGVzBAtjaGVja0NhbGxlcgkBC29ubHlGYWN0b3J5AQUBaQMJAAACBQtjaGVja0NhbGxlcgULY2hlY2tDYWxsZXIEC3VzZXJBZGRyZXNzCQEHQWRkcmVzcwEFEHVzZXJBZGRyZXNzQnl0ZXMEE2N1cnJlbnRQZXJpb2RPckZhaWwJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBRRmYWN0b3J5QWRkcmVzc09yRmFpbAkBEGtleUN1cnJlbnRQZXJpb2QACQEHd3JhcEVycgECDmludmFsaWQgcGVyaW9kBBJjdXJyZW50UHJpY2VPckZhaWwJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBRRmYWN0b3J5QWRkcmVzc09yRmFpbAkBEWtleVByaWNlRm9yUGVyaW9kAQUTY3VycmVudFBlcmlvZE9yRmFpbAkBB3dyYXBFcnIBAg1pbnZhbGlkIHByaWNlBAdwYXltZW50AwkAAAIJAJADAQgFAWkIcGF5bWVudHMAAQkAkQMCCAUBaQhwYXltZW50cwAACQEIdGhyb3dFcnIBAhBpbnZhbGlkIHBheW1lbnRzBA0kdDAxMTIzMTExNDA4AwMJAAACCAUHcGF5bWVudAdhc3NldElkBQR1bml0CQBmAggFB3BheW1lbnQGYW1vdW50AAAHCQCUCgIIBQdwYXltZW50BmFtb3VudAgFB3BheW1lbnQHYXNzZXRJZAkBCHRocm93RXJyAQIWaW52YWxpZCBwYXltZW50IGFtb3VudAQNcGF5bWVudEFtb3VudAgFDSR0MDExMjMxMTE0MDgCXzEEDnBheW1lbnRBc3NldElkCAUNJHQwMTEyMzExMTQwOAJfMgQNbHBBc3NldEFtb3VudAMJAGYCBRJjdXJyZW50UHJpY2VPckZhaWwAAAkAawMFDXBheW1lbnRBbW91bnQFBlNDQUxFOAUSY3VycmVudFByaWNlT3JGYWlsAAAECGludmVzdGVkCQELdmFsdWVPckVsc2UCCQCaCAIFFGZhY3RvcnlBZGRyZXNzT3JGYWlsCQELa2V5SW52ZXN0ZWQBBQR1bml0AAAEB2FjdGlvbnMJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUZbWFpblRyZWFzdXJ5QWRkcmVzc09yRmFpbAUNcGF5bWVudEFtb3VudAUOcGF5bWVudEFzc2V0SWQFA25pbAQOZmFjdG9yeUFjdGlvbnMJAMwIAgkA/AcEBRRmYWN0b3J5QWRkcmVzc09yRmFpbAIMaW50ZWdlckVudHJ5CQDMCAIJAQtrZXlJbnZlc3RlZAEFBHVuaXQJAMwIAgkAZAIFCGludmVzdGVkBQ1wYXltZW50QW1vdW50BQNuaWwFA25pbAkAzAgCCQD8BwQFFGZhY3RvcnlBZGRyZXNzT3JGYWlsAgdyZWlzc3VlCQDMCAIFDWxwQXNzZXRBbW91bnQFA25pbAUDbmlsCQDMCAIJAPwHBAUUZmFjdG9yeUFkZHJlc3NPckZhaWwCDXRyYW5zZmVyQXNzZXQJAMwIAgUQdXNlckFkZHJlc3NCeXRlcwkAzAgCBQ1scEFzc2V0QW1vdW50CQDMCAIFD2xwQXNzZXRJZE9yRmFpbAUDbmlsBQNuaWwFA25pbAkAlAoCBQdhY3Rpb25zBQ5mYWN0b3J5QWN0aW9ucwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQh3aXRoZHJhdwEQdXNlckFkZHJlc3NCeXRlcwQLY2hlY2tDYWxsZXIJAQtvbmx5RmFjdG9yeQEFAWkDCQAAAgULY2hlY2tDYWxsZXIFC2NoZWNrQ2FsbGVyBAt1c2VyQWRkcmVzcwkBB0FkZHJlc3MBBRB1c2VyQWRkcmVzc0J5dGVzBBNjdXJyZW50UGVyaW9kT3JGYWlsCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUUZmFjdG9yeUFkZHJlc3NPckZhaWwJARBrZXlDdXJyZW50UGVyaW9kAAkBB3dyYXBFcnIBAg5pbnZhbGlkIHBlcmlvZAQHcGF5bWVudAMJAAACCQCQAwEIBQFpCHBheW1lbnRzAAEJAJEDAggFAWkIcGF5bWVudHMAAAkBCHRocm93RXJyAQkBB3dyYXBFcnIBAhBpbnZhbGlkIHBheW1lbnRzBA5wYXltZW50QXNzZXRJZAMJAAACCAUHcGF5bWVudAdhc3NldElkBQ9scEFzc2V0SWRPckZhaWwFD2xwQXNzZXRJZE9yRmFpbAkBCHRocm93RXJyAQIVaW52YWxpZCBwYXltZW50IGFzc2V0BA1wYXltZW50QW1vdW50AwkAZgIIBQdwYXltZW50BmFtb3VudAAACAUHcGF5bWVudAZhbW91bnQJAQh0aHJvd0VycgECFmludmFsaWQgcGF5bWVudCBhbW91bnQECndpdGhkcmF3YWwJAQt2YWx1ZU9yRWxzZQIJAJoIAgUUZmFjdG9yeUFkZHJlc3NPckZhaWwJAQ1rZXlXaXRoZHJhd2FsAAAABAdhY3Rpb25zCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFFGZhY3RvcnlBZGRyZXNzT3JGYWlsBQ1wYXltZW50QW1vdW50BQ5wYXltZW50QXNzZXRJZAUDbmlsBA5mYWN0b3J5QWN0aW9ucwkAzAgCCQD8BwQFFGZhY3RvcnlBZGRyZXNzT3JGYWlsAgxpbnRlZ2VyRW50cnkJAMwIAgkBDWtleVdpdGhkcmF3YWwACQDMCAIJAGQCBQp3aXRoZHJhd2FsBQ1wYXltZW50QW1vdW50BQNuaWwFA25pbAkAzAgCCQD8BwQFFGZhY3RvcnlBZGRyZXNzT3JGYWlsAgtzdHJpbmdFbnRyeQkAzAgCCQEUa2V5V2l0aGRyYXdhbFJlcXVlc3QCBQt1c2VyQWRkcmVzcwgFAWkNdHJhbnNhY3Rpb25JZAkAzAgCCQEWdmFsdWVXaXRoZHJhd2FsUmVxdWVzdAQFB1BFTkRJTkcFDXBheW1lbnRBbW91bnQJAGQCBRNjdXJyZW50UGVyaW9kT3JGYWlsAAEFBHVuaXQFA25pbAUDbmlsBQNuaWwDCQAAAgUOZmFjdG9yeUFjdGlvbnMFDmZhY3RvcnlBY3Rpb25zCQCUCgIFB2FjdGlvbnMFDmZhY3RvcnlBY3Rpb25zCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBDmNhbmNlbFdpdGhkcmF3AhB1c2VyQWRkcmVzc0J5dGVzBHR4SWQEC2NoZWNrQ2FsbGVyCQELb25seUZhY3RvcnkBBQFpAwkAAAIFC2NoZWNrQ2FsbGVyBQtjaGVja0NhbGxlcgQLdXNlckFkZHJlc3MJAQdBZGRyZXNzAQUQdXNlckFkZHJlc3NCeXRlcwQXd2l0aGRyYXdhbFJlcXVlc3RPcHRpb24JARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBRRmYWN0b3J5QWRkcmVzc09yRmFpbAkBFGtleVdpdGhkcmF3YWxSZXF1ZXN0AgULdXNlckFkZHJlc3MFBHR4SWQJAQd3cmFwRXJyAQIaaW52YWxpZCB3aXRoZHJhd2FsIHJlcXVlc3QEE2N1cnJlbnRQZXJpb2RPckZhaWwJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBRRmYWN0b3J5QWRkcmVzc09yRmFpbAkBEGtleUN1cnJlbnRQZXJpb2QACQEHd3JhcEVycgECDmludmFsaWQgcGVyaW9kBA0kdDAxMzgxNTEzOTI4CQEhcGFyc2VXaXRoZHJhd2FsUmVxdWVzdFZhbHVlT3JGYWlsAQUXd2l0aGRyYXdhbFJlcXVlc3RPcHRpb24EBnN0YXR1cwgFDSR0MDEzODE1MTM5MjgCXzEEDWxwQXNzZXRBbW91bnQIBQ0kdDAxMzgxNTEzOTI4Al8yBAx0YXJnZXRQZXJpb2QIBQ0kdDAxMzgxNTEzOTI4Al8zBAljbGFpbVR4SWQIBQ0kdDAxMzgxNTEzOTI4Al80BAZjaGVja3MJAMwIAgMJAAACBQZzdGF0dXMFB1BFTkRJTkcGCQEIdGhyb3dFcnIBAiFpbnZhbGlkIHdpdGhkcmF3YWwgcmVxdWVzdCBzdGF0dXMJAMwIAgMJAGYCBQx0YXJnZXRQZXJpb2QFE2N1cnJlbnRQZXJpb2RPckZhaWwGCQEIdGhyb3dFcnIBAiFpbnZhbGlkIHdpdGhkcmF3YWwgcmVxdWVzdCBwZXJpb2QFA25pbAMJAAACBQZjaGVja3MFBmNoZWNrcwQKd2l0aGRyYXdhbAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFFGZhY3RvcnlBZGRyZXNzT3JGYWlsCQENa2V5V2l0aGRyYXdhbAAJAQd3cmFwRXJyAQIfaW52YWxpZCB0b3RhbCB3aXRoZHJhd2FsIGFtb3VudAQOZmFjdG9yeUFjdGlvbnMJAMwIAgkA/AcEBRRmYWN0b3J5QWRkcmVzc09yRmFpbAIMaW50ZWdlckVudHJ5CQDMCAIJAQ1rZXlXaXRoZHJhd2FsAAkAzAgCAwkAZwIFCndpdGhkcmF3YWwFDWxwQXNzZXRBbW91bnQJAGUCBQp3aXRoZHJhd2FsBQ1scEFzc2V0QW1vdW50CQEIdGhyb3dFcnIBAhlpbnZhbGlkIHdpdGhkcmF3YWwgYW1vdW50BQNuaWwFA25pbAkAzAgCCQD8BwQFFGZhY3RvcnlBZGRyZXNzT3JGYWlsAgtkZWxldGVFbnRyeQkAzAgCCQEUa2V5V2l0aGRyYXdhbFJlcXVlc3QCBQt1c2VyQWRkcmVzcwUEdHhJZAUDbmlsBQNuaWwJAMwIAgkA/AcEBRRmYWN0b3J5QWRkcmVzc09yRmFpbAINdHJhbnNmZXJBc3NldAkAzAgCBRB1c2VyQWRkcmVzc0J5dGVzCQDMCAIFDWxwQXNzZXRBbW91bnQJAMwIAgUPbHBBc3NldElkT3JGYWlsBQNuaWwFA25pbAUDbmlsAwkAAAIFDmZhY3RvcnlBY3Rpb25zBQ5mYWN0b3J5QWN0aW9ucwkAlAoCBQNuaWwFDmZhY3RvcnlBY3Rpb25zCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCmNsYWltV2F2ZXMCEHVzZXJBZGRyZXNzQnl0ZXMEdHhJZAQLY2hlY2tDYWxsZXIJAQtvbmx5RmFjdG9yeQEFAWkDCQAAAgULY2hlY2tDYWxsZXIFC2NoZWNrQ2FsbGVyBAt1c2VyQWRkcmVzcwkBB0FkZHJlc3MBBRB1c2VyQWRkcmVzc0J5dGVzBBNjdXJyZW50UGVyaW9kT3JGYWlsCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUUZmFjdG9yeUFkZHJlc3NPckZhaWwJARBrZXlDdXJyZW50UGVyaW9kAAkBB3dyYXBFcnIBAg5pbnZhbGlkIHBlcmlvZAQXd2l0aGRyYXdhbFJlcXVlc3RPcHRpb24JARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBRRmYWN0b3J5QWRkcmVzc09yRmFpbAkBFGtleVdpdGhkcmF3YWxSZXF1ZXN0AgULdXNlckFkZHJlc3MFBHR4SWQJAQd3cmFwRXJyAQIaaW52YWxpZCB3aXRoZHJhd2FsIHJlcXVlc3QEDSR0MDE1MjYwMTUzNzMJASFwYXJzZVdpdGhkcmF3YWxSZXF1ZXN0VmFsdWVPckZhaWwBBRd3aXRoZHJhd2FsUmVxdWVzdE9wdGlvbgQGc3RhdHVzCAUNJHQwMTUyNjAxNTM3MwJfMQQNbHBBc3NldEFtb3VudAgFDSR0MDE1MjYwMTUzNzMCXzIEDHRhcmdldFBlcmlvZAgFDSR0MDE1MjYwMTUzNzMCXzMECWNsYWltVHhJZAgFDSR0MDE1MjYwMTUzNzMCXzQDCQAAAgUGc3RhdHVzBQhGSU5JU0hFRAkBCHRocm93RXJyAQIhaW52YWxpZCB3aXRoZHJhd2FsIHJlcXVlc3Qgc3RhdHVzAwkAZgIFDHRhcmdldFBlcmlvZAUTY3VycmVudFBlcmlvZE9yRmFpbAkBCHRocm93RXJyAQIhaW52YWxpZCB3aXRoZHJhd2FsIHJlcXVlc3QgcGVyaW9kBAtwcmljZU9yRmFpbAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFFGZhY3RvcnlBZGRyZXNzT3JGYWlsCQERa2V5UHJpY2VGb3JQZXJpb2QBBQx0YXJnZXRQZXJpb2QJAQd3cmFwRXJyAQINaW52YWxpZCBwcmljZQQGYW1vdW50AwkAZgIFC3ByaWNlT3JGYWlsAAAJAGsDBQ1scEFzc2V0QW1vdW50BQtwcmljZU9yRmFpbAUGU0NBTEU4AAAEDmZhY3RvcnlBY3Rpb25zCQDMCAIJAPwHBAUUZmFjdG9yeUFkZHJlc3NPckZhaWwCC3N0cmluZ0VudHJ5CQDMCAIJARRrZXlXaXRoZHJhd2FsUmVxdWVzdAIFC3VzZXJBZGRyZXNzBQR0eElkCQDMCAIJARZ2YWx1ZVdpdGhkcmF3YWxSZXF1ZXN0BAUIRklOSVNIRUQFDWxwQXNzZXRBbW91bnQFDHRhcmdldFBlcmlvZAgFAWkNdHJhbnNhY3Rpb25JZAUDbmlsBQNuaWwJAMwIAgkA/AcEBRRmYWN0b3J5QWRkcmVzc09yRmFpbAINdHJhbnNmZXJXYXZlcwkAzAgCBRB1c2VyQWRkcmVzc0J5dGVzCQDMCAIFBmFtb3VudAUDbmlsBQNuaWwFA25pbAkAlAoCBQNuaWwFDmZhY3RvcnlBY3Rpb25zCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBDXByb2Nlc3NCbG9ja3MBEHVzZXJBZGRyZXNzQnl0ZXMEC2NoZWNrQ2FsbGVyCQELb25seUZhY3RvcnkBBQFpAwkAAAIFC2NoZWNrQ2FsbGVyBQtjaGVja0NhbGxlcgQLdXNlckFkZHJlc3MJAQdBZGRyZXNzAQUQdXNlckFkZHJlc3NCeXRlcwQTY3VycmVudFBlcmlvZE9yRmFpbAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFFGZhY3RvcnlBZGRyZXNzT3JGYWlsCQEQa2V5Q3VycmVudFBlcmlvZAAJAQd3cmFwRXJyAQIOaW52YWxpZCBwZXJpb2QEDHBlcmlvZExlbmd0aAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFFGZhY3RvcnlBZGRyZXNzT3JGYWlsCQEPa2V5UGVyaW9kTGVuZ3RoAAkBB3dyYXBFcnIBAhVpbnZhbGlkIHBlcmlvZCBsZW5ndGgEEmN1cnJlbnRTdGFydEhlaWdodAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFFGZhY3RvcnlBZGRyZXNzT3JGYWlsCQEOa2V5U3RhcnRIZWlnaHQBBRNjdXJyZW50UGVyaW9kT3JGYWlsCQEHd3JhcEVycgECFGludmFsaWQgc3RhcnQgaGVpZ2h0BBJjdXJyZW50UHJpY2VPckZhaWwJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBRRmYWN0b3J5QWRkcmVzc09yRmFpbAkBEWtleVByaWNlRm9yUGVyaW9kAQUTY3VycmVudFBlcmlvZE9yRmFpbAkBB3dyYXBFcnIBAg1pbnZhbGlkIHByaWNlBBJuZXh0QmxvY2tUb1Byb2Nlc3MJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBRRmYWN0b3J5QWRkcmVzc09yRmFpbAkBFWtleU5leHRCbG9ja1RvUHJvY2VzcwAJAQd3cmFwRXJyAQIdaW52YWxpZCBuZXh0IGJsb2NrIHRvIHByb2Nlc3MED3BlcmlvZEVuZEhlaWdodAkAZQIJAGQCBRJjdXJyZW50U3RhcnRIZWlnaHQFDHBlcmlvZExlbmd0aAABBBxibG9ja3NQcm9jZXNzaW5nQmF0Y2hTaXplTWF4ACgEGWJsb2Nrc1Byb2Nlc3NpbmdCYXRjaFNpemUDAwMJAGcCBQZoZWlnaHQFEm5leHRCbG9ja1RvUHJvY2VzcwMJAGcCBRJuZXh0QmxvY2tUb1Byb2Nlc3MFEmN1cnJlbnRTdGFydEhlaWdodAYJAAACBRNjdXJyZW50UGVyaW9kT3JGYWlsAAAHCQBnAgUPcGVyaW9kRW5kSGVpZ2h0BRJuZXh0QmxvY2tUb1Byb2Nlc3MHCQCXAwEJAMwIAgkAZAIJAGUCBQ9wZXJpb2RFbmRIZWlnaHQFEm5leHRCbG9ja1RvUHJvY2VzcwABCQDMCAIFHGJsb2Nrc1Byb2Nlc3NpbmdCYXRjaFNpemVNYXgFA25pbAkBCHRocm93RXJyAQkBB3dyYXBFcnIBAhRpbnZhbGlkIHRhcmdldCBibG9jawQVYmxvY2tQcm9jZXNzaW5nUmV3YXJkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUUZmFjdG9yeUFkZHJlc3NPckZhaWwJARhrZXlCbG9ja1Byb2Nlc3NpbmdSZXdhcmQACQEHd3JhcEVycgECH2ludmFsaWQgYmxvY2sgcHJvY2Vzc2luZyByZXdhcmQEIGJsb2NrUHJvY2Vzc2luZ1Jld2FyZEJ5R2VuZXJhdG9yCQBpAgUVYmxvY2tQcm9jZXNzaW5nUmV3YXJkBRlibG9ja3NQcm9jZXNzaW5nQmF0Y2hTaXplBClibG9ja1Byb2Nlc3NpbmdSZXdhcmRCeUdlbmVyYXRvclJlbWFpbmRlcgkAZQIFFWJsb2NrUHJvY2Vzc2luZ1Jld2FyZAkAaAIFIGJsb2NrUHJvY2Vzc2luZ1Jld2FyZEJ5R2VuZXJhdG9yBRlibG9ja3NQcm9jZXNzaW5nQmF0Y2hTaXplCgEDbWFwAgNhY2MDaW5jAwkAZwIFA2luYwUZYmxvY2tzUHJvY2Vzc2luZ0JhdGNoU2l6ZQUDYWNjBBF0YXJnZXRCbG9ja0hlaWdodAkAZAIFEm5leHRCbG9ja1RvUHJvY2VzcwUDaW5jBA90YXJnZXRCbG9ja0luZm8JARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7QcBBRF0YXJnZXRCbG9ja0hlaWdodAkBB3dyYXBFcnIBAhJpbnZhbGlkIGJsb2NrIGluZm8EFHRyZWFzdXJ5UmV3YXJkT3JGYWlsCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAQ9yZXdhcmRGb3JPcHRpb24CCAUPdGFyZ2V0QmxvY2tJbmZvB3Jld2FyZHMFGnByb3h5VHJlYXN1cnlBZGRyZXNzT3JGYWlsCQEHd3JhcEVycgEJAKwCAgIjaW52YWxpZCB0cmVhc3VyeSByZXdhcmQgZm9yIGhlaWdodCAJAKQDAQURdGFyZ2V0QmxvY2tIZWlnaHQECWdlbmVyYXRvcggFD3RhcmdldEJsb2NrSW5mbwlnZW5lcmF0b3IECWF2YWlsYWJsZQkBC3ZhbHVlT3JFbHNlAgkAmggCBRRmYWN0b3J5QWRkcmVzc09yRmFpbAkBDGtleUF2YWlsYWJsZQEFCWdlbmVyYXRvcgAABAxjYWxsZXJSZXdhcmQDCQAAAgUDaW5jCQBlAgUZYmxvY2tzUHJvY2Vzc2luZ0JhdGNoU2l6ZQABCQBkAgUgYmxvY2tQcm9jZXNzaW5nUmV3YXJkQnlHZW5lcmF0b3IFKWJsb2NrUHJvY2Vzc2luZ1Jld2FyZEJ5R2VuZXJhdG9yUmVtYWluZGVyBSBibG9ja1Byb2Nlc3NpbmdSZXdhcmRCeUdlbmVyYXRvcgQNbHBBc3NldEFtb3VudAMJAGYCBRJjdXJyZW50UHJpY2VPckZhaWwAAAkAawMJAGUCBRR0cmVhc3VyeVJld2FyZE9yRmFpbAUMY2FsbGVyUmV3YXJkBQZTQ0FMRTgFEmN1cnJlbnRQcmljZU9yRmFpbAAABBRmYWN0b3J5QWN0aW9uc1NpbmdsZQkAzAgCCQD8BwQFFGZhY3RvcnlBZGRyZXNzT3JGYWlsAgtzdHJpbmdFbnRyeQkAzAgCCQERa2V5QmxvY2tQcm9jZXNzZWQBBRF0YXJnZXRCbG9ja0hlaWdodAkAzAgCCQC5CQIJAMwIAgkA2AQBCAUBaQ10cmFuc2FjdGlvbklkCQDMCAIJAKQDAQUTY3VycmVudFBlcmlvZE9yRmFpbAkAzAgCCQClCAEFCWdlbmVyYXRvcgkAzAgCCQDYBAEFEHVzZXJBZGRyZXNzQnl0ZXMJAMwIAgkApAMBBRR0cmVhc3VyeVJld2FyZE9yRmFpbAkAzAgCCQCkAwEFDGNhbGxlclJld2FyZAkAzAgCCQCkAwEFDWxwQXNzZXRBbW91bnQFA25pbAUDU0VQBQNuaWwFA25pbAkAzAgCCQD8BwQFFGZhY3RvcnlBZGRyZXNzT3JGYWlsAgxpbnRlZ2VyRW50cnkJAMwIAgkBDGtleUF2YWlsYWJsZQEFCWdlbmVyYXRvcgkAzAgCCQBkAgUJYXZhaWxhYmxlBQ1scEFzc2V0QW1vdW50BQNuaWwFA25pbAUDbmlsAwkAAAIFFGZhY3RvcnlBY3Rpb25zU2luZ2xlBRRmYWN0b3J5QWN0aW9uc1NpbmdsZQQNJHQwMTk2MDkxOTY0MgUDYWNjBApscEFzc2V0QWNjCAUNJHQwMTk2MDkxOTY0MgJfMQQJcmV3YXJkQWNjCAUNJHQwMTk2MDkxOTY0MgJfMgkAlAoCCQBkAgUKbHBBc3NldEFjYwUNbHBBc3NldEFtb3VudAkAZAIFCXJld2FyZEFjYwUUdHJlYXN1cnlSZXdhcmRPckZhaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4EBGxpc3QJAMwIAgAACQDMCAIAAQkAzAgCAAIJAMwIAgADCQDMCAIABAkAzAgCAAUJAMwIAgAGCQDMCAIABwkAzAgCAAgJAMwIAgAJCQDMCAIACgkAzAgCAAsJAMwIAgAMCQDMCAIADQkAzAgCAA4JAMwIAgAPCQDMCAIAEAkAzAgCABEJAMwIAgASCQDMCAIAEwkAzAgCABQJAMwIAgAVCQDMCAIAFgkAzAgCABcJAMwIAgAYCQDMCAIAGQkAzAgCABoJAMwIAgAbCQDMCAIAHAkAzAgCAB0JAMwIAgAeCQDMCAIAHwkAzAgCACAJAMwIAgAhCQDMCAIAIgkAzAgCACMJAMwIAgAkCQDMCAIAJQkAzAgCACYJAMwIAgAnBQNuaWwEDSR0MDE5OTA5MTk5ODUKAAIkbAUEbGlzdAoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJQKAgAAAAAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBA21hcAIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgNDAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAMJAAACBQ0kdDAxOTkwOTE5OTg1BQ0kdDAxOTkwOTE5OTg1BBFyZXdhcmRBbW91bnRUb3RhbAgFDSR0MDE5OTA5MTk5ODUCXzIEEmxwQXNzZXRBbW91bnRUb3RhbAgFDSR0MDE5OTA5MTk5ODUCXzEEGnJld2FyZFRvTWFpblRyZWFzdXJ5QW1vdW50CQBlAgURcmV3YXJkQW1vdW50VG90YWwFFWJsb2NrUHJvY2Vzc2luZ1Jld2FyZAQIaW52ZXN0ZWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUUZmFjdG9yeUFkZHJlc3NPckZhaWwJAQtrZXlJbnZlc3RlZAEFBHVuaXQAAAQHYWN0aW9ucwkAzAgCCQD8BwQFFGZhY3RvcnlBZGRyZXNzT3JGYWlsAgdyZWlzc3VlCQDMCAIFEmxwQXNzZXRBbW91bnRUb3RhbAUDbmlsBQNuaWwJAMwIAgkA/AcEBRRmYWN0b3J5QWRkcmVzc09yRmFpbAIMaW50ZWdlckVudHJ5CQDMCAIJARVrZXlOZXh0QmxvY2tUb1Byb2Nlc3MACQDMCAIJAGQCBRJuZXh0QmxvY2tUb1Byb2Nlc3MFGWJsb2Nrc1Byb2Nlc3NpbmdCYXRjaFNpemUFA25pbAUDbmlsCQDMCAIJAPwHBAUUZmFjdG9yeUFkZHJlc3NPckZhaWwCGXRyYW5zZmVyRnJvbVByb3h5VHJlYXN1cnkJAMwIAggFGW1haW5UcmVhc3VyeUFkZHJlc3NPckZhaWwFYnl0ZXMJAMwIAgUacmV3YXJkVG9NYWluVHJlYXN1cnlBbW91bnQFA25pbAUDbmlsCQDMCAIJAPwHBAUUZmFjdG9yeUFkZHJlc3NPckZhaWwCGXRyYW5zZmVyRnJvbVByb3h5VHJlYXN1cnkJAMwIAgUQdXNlckFkZHJlc3NCeXRlcwkAzAgCBRVibG9ja1Byb2Nlc3NpbmdSZXdhcmQFA25pbAUDbmlsCQDMCAIJAPwHBAUUZmFjdG9yeUFkZHJlc3NPckZhaWwCDGludGVnZXJFbnRyeQkAzAgCCQELa2V5SW52ZXN0ZWQBBQR1bml0CQDMCAIJAGQCBQhpbnZlc3RlZAUacmV3YXJkVG9NYWluVHJlYXN1cnlBbW91bnQFA25pbAUDbmlsBQNuaWwDCQAAAgUHYWN0aW9ucwUHYWN0aW9ucwkAlAoCBQNuaWwFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAnR4AQZ2ZXJpZnkABAlwdWJsaWNLZXkEByRtYXRjaDAJARlnZXRNYW5hZ2VyUHVibGljS2V5T3JVbml0AAMJAAECBQckbWF0Y2gwAgpCeXRlVmVjdG9yBANwdWIFByRtYXRjaDAFA3B1YggFAnR4D3NlbmRlclB1YmxpY0tleQkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAUJcHVibGljS2V5WUHQag==", "chainId": 84, "height": 2651278, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 44m9yjWpS7gNhmv6EENXArPuAkciZcSLmL6kCRfkzgjP Next: 6V5NjdS5m2hEkJJMi5ymcKJDFwHGbqYuxh5DL8xVcwGS Diff:
OldNewDifferences
4040 func p () = makeString(["%s", "factory"], a)
4141
4242
43-func q () = makeString(["%s", "lpAssetId"], a)
43+func q () = makeString(["%s", "managerPublicKey"], a)
4444
4545
46-func r () = makeString(["%s", "proxyTreasury"], a)
46+func r () = makeString(["%s", "lpAssetId"], a)
4747
4848
49-func s () = makeString(["%s", "mainTreasury"], a)
49+func s () = makeString(["%s", "proxyTreasury"], a)
5050
5151
52-func t (k) = makeString(["%s%s", "invested", j(k)], a)
52+func t () = makeString(["%s", "mainTreasury"], a)
5353
5454
55-func u (k) = makeString(["%s%s", "donated", j(k)], a)
55+func u (k) = makeString(["%s%s", "invested", j(k)], a)
5656
5757
58-func v (w) = makeString(["%s%s", "available", toString(w)], a)
58+func v (k) = makeString(["%s%s", "donated", j(k)], a)
5959
6060
61-func x (w) = makeString(["%s%s", "claimed", toString(w)], a)
61+func w (x) = makeString(["%s%s", "available", toString(x)], a)
6262
6363
64-func y () = makeString(["%s", "currentPeriod"], a)
64+func y (x) = makeString(["%s%s", "claimed", toString(x)], a)
6565
6666
67-func z (A) = makeString(["%s%d", "price", toString(A)], a)
67+func z () = makeString(["%s", "currentPeriod"], a)
6868
6969
70-func B (A) = makeString(["%s%d", "startHeight", toString(A)], a)
70+func A (B) = makeString(["%s%d", "price", toString(B)], a)
7171
7272
73-func C () = "%s__periodLength"
73+func C (B) = makeString(["%s%d", "startHeight", toString(B)], a)
7474
7575
76-func D () = "%s__blockProcessingReward"
76+func D () = "%s__periodLength"
7777
7878
79-func E () = "%s__nextBlockToProcess"
79+func E () = "%s__blockProcessingReward"
8080
8181
82-func F (G) = makeString(["%s%d", "blockProcessed", toString(G)], a)
82+func F () = "%s__nextBlockToProcess"
8383
8484
85-func H () = "%s__withdrawal"
85+func G (H) = makeString(["%s%d", "blockProcessed", toString(H)], a)
8686
8787
88-func I (w,J) = makeString(["%s%s%s", "withdrawal", toString(w), toBase58String(J)], a)
88+func I () = "%s__withdrawal"
8989
9090
91-func K (L,M,N,O) = {
92- let P = {
93- let l = O
91+func J (x,K) = makeString(["%s%s%s", "withdrawal", toString(x), toBase58String(K)], a)
92+
93+
94+func L (M,N,O,P) = {
95+ let Q = {
96+ let l = P
9497 if ($isInstanceOf(l, "ByteVector"))
9598 then {
9699 let m = l
100103 then "SOON"
101104 else throw("Match error")
102105 }
103- makeString(["%s%d%d%s", L, toString(M), toString(N), P], a)
106+ makeString(["%s%d%d%s", M, toString(N), toString(O), Q], a)
104107 }
105108
106109
107-func Q (h) = {
108- let R = split(h, a)
109- if ((size(R) == 5))
110+func R (h) = {
111+ let S = split(h, a)
112+ if ((size(S) == 5))
110113 then {
111- let L = R[1]
112- let M = valueOrErrorMessage(parseInt(R[2]), g("invalid lpAssetAmount"))
113- let N = valueOrErrorMessage(parseInt(R[3]), g("invalid targetPeriod"))
114- let O = R[4]
115- $Tuple4(L, M, N, O)
114+ let M = S[1]
115+ let N = valueOrErrorMessage(parseInt(S[2]), g("invalid lpAssetAmount"))
116+ let O = valueOrErrorMessage(parseInt(S[3]), g("invalid targetPeriod"))
117+ let P = S[4]
118+ $Tuple4(M, N, O, P)
116119 }
117120 else i("invalid withdrawal request value")
118121 }
119122
120123
121-let S = {
124+let T = {
122125 let l = getString(this, p())
123126 if ($isInstanceOf(l, "String"))
124127 then {
130133 else throw("Match error")
131134 }
132135
133-let T = valueOrErrorMessage(S, g("invalid factory address"))
136+let U = valueOrErrorMessage(T, g("invalid factory address"))
134137
135-let U = {
136- let l = S
138+let V = {
139+ let l = T
137140 if ($isInstanceOf(l, "Address"))
138141 then {
139- let V = l
140- let W = getString(V, q())
141- if ($isInstanceOf(W, "String"))
142+ let W = l
143+ let X = getString(W, r())
144+ if ($isInstanceOf(X, "String"))
142145 then {
143- let h = W
146+ let h = X
144147 fromBase58String(h)
145148 }
146- else if ($isInstanceOf(W, "Unit"))
149+ else if ($isInstanceOf(X, "Unit"))
147150 then unit
148151 else throw("Match error")
149152 }
152155 else throw("Match error")
153156 }
154157
155-let X = valueOrErrorMessage(U, g("invalid lpAssetId"))
158+let Y = valueOrErrorMessage(V, g("invalid lpAssetId"))
156159
157-let Y = {
158- let l = S
160+let Z = {
161+ let l = T
159162 if ($isInstanceOf(l, "Address"))
160163 then {
161- let V = l
162- let W = getString(V, r())
163- if ($isInstanceOf(W, "String"))
164+ let W = l
165+ let X = getString(W, s())
166+ if ($isInstanceOf(X, "String"))
164167 then {
165- let h = W
168+ let h = X
166169 addressFromString(h)
167170 }
168- else if ($isInstanceOf(W, "Unit"))
171+ else if ($isInstanceOf(X, "Unit"))
169172 then unit
170173 else throw("Match error")
171174 }
174177 else throw("Match error")
175178 }
176179
177-let Z = valueOrErrorMessage(Y, g("invalid proxy treasury address"))
180+let aa = valueOrErrorMessage(Z, g("invalid proxy treasury address"))
178181
179-let aa = {
180- let l = S
182+let ab = {
183+ let l = T
181184 if ($isInstanceOf(l, "Address"))
182185 then {
183- let V = l
184- let W = getString(V, s())
185- if ($isInstanceOf(W, "String"))
186+ let W = l
187+ let X = getString(W, t())
188+ if ($isInstanceOf(X, "String"))
186189 then {
187- let h = W
190+ let h = X
188191 addressFromString(h)
189192 }
190- else if ($isInstanceOf(W, "Unit"))
193+ else if ($isInstanceOf(X, "Unit"))
191194 then unit
192195 else throw("Match error")
193196 }
196199 else throw("Match error")
197200 }
198201
199-let ab = valueOrErrorMessage(aa, g("invalid feature treasury address"))
202+let ac = valueOrErrorMessage(ab, g("invalid main treasury address"))
200203
201-func ac (ad,ae) = if ((ad.caller == ae))
204+func ad () = {
205+ let l = T
206+ if ($isInstanceOf(l, "Address"))
207+ then {
208+ let ae = l
209+ let X = getString(ae, q())
210+ if ($isInstanceOf(X, "String"))
211+ then {
212+ let af = X
213+ fromBase58String(af)
214+ }
215+ else unit
216+ }
217+ else unit
218+ }
219+
220+
221+func ag (ah,ai) = if ((ah.caller == ai))
202222 then true
203223 else i("permission denied")
204224
205225
206-func af (ad) = ac(ad, T)
226+func aj (ah) = ag(ah, U)
207227
208228
209-func ag (ah,ai) = {
210- let h = size(ah)
211- let aj = ah[0]
212- let ak = aj._1
213- let al = aj._2
214- let am = ah[1]
215- let an = am._1
216- let ao = am._2
217- let ap = ah[2]
218- let aq = ap._1
219- let ar = ap._2
229+func ak (al,am) = {
230+ let h = size(al)
231+ let an = al[0]
232+ let ao = an._1
233+ let ap = an._2
234+ let aq = al[1]
235+ let ar = aq._1
236+ let as = aq._2
237+ let at = al[2]
238+ let au = at._1
239+ let av = at._2
220240 if (if ((h > 0))
221- then (ak == ai)
241+ then (ao == am)
222242 else false)
223- then al
243+ then ap
224244 else if (if ((h > 1))
225- then (an == ai)
245+ then (ar == am)
226246 else false)
227- then ao
247+ then as
228248 else if (if ((h > 2))
229- then (aq == ai)
249+ then (au == am)
230250 else false)
231- then ar
251+ then av
232252 else unit
233253 }
234254
235255
236-@Callable(ad)
237-func claimLP (as) = {
238- let at = af(ad)
239- if ((at == at))
256+@Callable(ah)
257+func claimLP (aw) = {
258+ let ax = aj(ah)
259+ if ((ax == ax))
240260 then {
241- let w = Address(as)
242- let au = valueOrElse(getInteger(T, v(w)), 0)
243- let av = valueOrElse(getInteger(T, x(w)), 0)
244- let aw = if ((au > 0))
245- then [invoke(T, "transferAsset", [as, au, X], nil), invoke(T, "integerEntry", [v(w), 0], nil), invoke(T, "integerEntry", [x(w), (av + au)], nil)]
261+ let x = Address(aw)
262+ let ay = valueOrElse(getInteger(U, w(x)), 0)
263+ let az = valueOrElse(getInteger(U, y(x)), 0)
264+ let aA = if ((ay > 0))
265+ then [invoke(U, "transferAsset", [aw, ay, Y], nil), invoke(U, "integerEntry", [w(x), 0], nil), invoke(U, "integerEntry", [y(x), (az + ay)], nil)]
246266 else i("nothing to claim")
247- $Tuple2(nil, aw)
267+ $Tuple2(nil, aA)
248268 }
249269 else throw("Strict value is not equal to itself.")
250270 }
251271
252272
253273
254-@Callable(ad)
255-func finalize (as,ax,ay,az) = {
256- let at = af(ad)
257- if ((at == at))
274+@Callable(ah)
275+func finalize (aw,aB,aC,aD) = {
276+ let ax = aj(ah)
277+ if ((ax == ax))
258278 then {
259- let aA = valueOrErrorMessage(getInteger(T, y()), g("invalid period"))
260- let aB = valueOrErrorMessage(getInteger(T, C()), g("invalid period length"))
261- let aC = valueOrErrorMessage(getInteger(T, B(aA)), g("invalid start height"))
262- let aD = valueOrErrorMessage(getInteger(T, z(aA)), g("invalid price"))
263- let aE = valueOrErrorMessage(getInteger(T, E()), g("invalid next block to process"))
264- let aF = ((aC + aB) - 1)
265- let aG = [if ((ad.originCaller == ab))
279+ let aE = valueOrErrorMessage(getInteger(U, z()), g("invalid period"))
280+ let aF = valueOrErrorMessage(getInteger(U, D()), g("invalid period length"))
281+ let aG = valueOrErrorMessage(getInteger(U, C(aE)), g("invalid start height"))
282+ let aH = valueOrErrorMessage(getInteger(U, A(aE)), g("invalid price"))
283+ let aI = valueOrErrorMessage(getInteger(U, F()), g("invalid next block to process"))
284+ let aJ = ((aG + aF) - 1)
285+ let aK = [if ((ah.originCaller == ac))
266286 then true
267- else i("permission denied"), if ((aE > aF))
287+ else i("permission denied"), if ((aI > aJ))
268288 then true
269- else i("unprocessed blocks"), if ((ax >= 0))
289+ else i("unprocessed blocks"), if ((aB >= 0))
270290 then true
271- else i("invalid new treasury volume"), if ((ay >= 0))
291+ else i("invalid new treasury volume"), if ((aC >= 0))
272292 then true
273- else i("invalid PWR managers bonus"), if (if ((az >= -(c)))
274- then (c >= az)
293+ else i("invalid PWR managers bonus"), if (if ((aD >= -(c)))
294+ then (c >= aD)
275295 else false)
276296 then true
277297 else i("invalid treasury volume diff allocation coefficient")]
278- if ((aG == aG))
298+ if ((aK == aK))
279299 then {
280- let aH = valueOrElse(getInteger(T, u(unit)), 0)
281- let aI = valueOrElse(getInteger(T, t(unit)), 0)
282- let aJ = (aH + aI)
283- let aK = (ax - aJ)
284- let aL = if (if ((aK > 0))
285- then (aK >= ay)
300+ let aL = valueOrElse(getInteger(U, v(unit)), 0)
301+ let aM = valueOrElse(getInteger(U, u(unit)), 0)
302+ let aN = (aL + aM)
303+ let aO = (aB - aN)
304+ let aP = if (if ((aO > 0))
305+ then (aO >= aC)
286306 else false)
287- then ay
307+ then aC
288308 else 0
289- let aM = (aK - aL)
290- let aN = if ((aJ > 0))
291- then fraction(aH, c, aJ)
309+ let aQ = (aO - aP)
310+ let aR = if ((aN > 0))
311+ then fraction(aL, c, aN)
292312 else 0
293- let aO = fraction(aM, aN, c)
294- let aP = (aM - aO)
295- let aQ = n(az)
296- let aR = fraction(aP, if ((0 > az))
297- then aQ
313+ let aS = fraction(aQ, aR, c)
314+ let aT = (aQ - aS)
315+ let aU = n(aD)
316+ let aV = fraction(aT, if ((0 > aD))
317+ then aU
298318 else 0, c)
299- let aS = fraction(aO, if ((az > 0))
300- then aQ
319+ let aW = fraction(aS, if ((aD > 0))
320+ then aU
301321 else 0, c)
302- let aT = ((aO - aS) + aR)
303- let aU = ((aP - aR) + aS)
304- let aV = (aI + aU)
305- let aW = (aA + 1)
306- let aX = valueOrErrorMessage(assetInfo(X), g("invalid lpAsset info")).quantity
307- let aY = fraction(aV, c, aX)
308- let aZ = valueOrElse(getInteger(T, H()), 0)
309- let ba = (aX - aZ)
310- let bb = max([0, fraction(ba, aY, c)])
311- let bc = max([0, fraction(aZ, aY, c)])
312- let bd = if ((size(ad.payments) > 0))
313- then ad.payments[0]
322+ let aX = ((aS - aW) + aV)
323+ let aY = ((aT - aV) + aW)
324+ let aZ = (aM + aY)
325+ let ba = (aE + 1)
326+ let bb = valueOrErrorMessage(assetInfo(Y), g("invalid lpAsset info")).quantity
327+ let bc = fraction(aZ, c, bb)
328+ let bd = valueOrElse(getInteger(U, I()), 0)
329+ let be = (bb - bd)
330+ let bf = max([0, fraction(be, bc, c)])
331+ let bg = max([0, fraction(bd, bc, c)])
332+ let bh = if ((size(ah.payments) > 0))
333+ then ah.payments[0]
314334 else unit
315- let be = value(bd).amount
316- let bf = value(bd).assetId
317- let bg = if (if ((bc == 0))
335+ let bi = value(bh).amount
336+ let bj = value(bh).assetId
337+ let bk = if (if ((bg == 0))
318338 then true
319- else if (if ((bd != unit))
320- then (bf == unit)
339+ else if (if ((bh != unit))
340+ then (bj == unit)
321341 else false)
322- then (be >= bc)
342+ then (bi >= bg)
323343 else false)
324344 then true
325- else i(("invalid payments, payment amount min: " + toString(bc)))
326- if ((bg == bg))
345+ else i(("invalid payments, payment amount min: " + toString(bg)))
346+ if ((bk == bk))
327347 then {
328- let bh = if ((bd != unit))
329- then [ScriptTransfer(T, be, bf)]
348+ let bl = if ((bh != unit))
349+ then [ScriptTransfer(U, bi, bj)]
330350 else nil
331- 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), invoke(T, "integerEntry", [t(unit), bb], nil)]
332- $Tuple2(bh, aw)
351+ let aA = [invoke(U, "integerEntry", [z(), ba], nil), invoke(U, "integerEntry", [A(ba), bc], nil), invoke(U, "integerEntry", [C(ba), (aJ + 1)], nil), invoke(U, "burn", [bd], nil), invoke(U, "integerEntry", [I(), 0], nil), invoke(U, "integerEntry", [u(unit), bf], nil)]
352+ $Tuple2(bl, aA)
333353 }
334354 else throw("Strict value is not equal to itself.")
335355 }
340360
341361
342362
343-@Callable(ad)
344-func invest (as) = {
345- let at = af(ad)
346- if ((at == at))
363+@Callable(ah)
364+func invest (aw) = {
365+ let ax = aj(ah)
366+ if ((ax == ax))
347367 then {
348- let w = Address(as)
349- let aA = valueOrErrorMessage(getInteger(T, y()), g("invalid period"))
350- let aD = valueOrErrorMessage(getInteger(T, z(aA)), g("invalid price"))
351- let bi = if ((size(ad.payments) == 1))
352- then ad.payments[0]
368+ let x = Address(aw)
369+ let aE = valueOrErrorMessage(getInteger(U, z()), g("invalid period"))
370+ let aH = valueOrErrorMessage(getInteger(U, A(aE)), g("invalid price"))
371+ let bm = if ((size(ah.payments) == 1))
372+ then ah.payments[0]
353373 else i("invalid payments")
354- let bj = if (if ((bi.assetId == unit))
355- then (bi.amount > 0)
374+ let bn = if (if ((bm.assetId == unit))
375+ then (bm.amount > 0)
356376 else false)
357- then $Tuple2(bi.amount, bi.assetId)
377+ then $Tuple2(bm.amount, bm.assetId)
358378 else i("invalid payment amount")
359- let be = bj._1
360- let bf = bj._2
361- let M = if ((aD > 0))
362- then fraction(be, c, aD)
379+ let bi = bn._1
380+ let bj = bn._2
381+ let N = if ((aH > 0))
382+ then fraction(bi, c, aH)
363383 else 0
364- let bk = valueOrElse(getInteger(T, t(unit)), 0)
365- let bh = [ScriptTransfer(ab, be, bf)]
366- let aw = [invoke(T, "integerEntry", [t(unit), (bk + be)], nil), invoke(T, "reissue", [M], nil), invoke(T, "transferAsset", [as, M, X], nil)]
367- $Tuple2(bh, aw)
384+ let bo = valueOrElse(getInteger(U, u(unit)), 0)
385+ let bl = [ScriptTransfer(ac, bi, bj)]
386+ let aA = [invoke(U, "integerEntry", [u(unit), (bo + bi)], nil), invoke(U, "reissue", [N], nil), invoke(U, "transferAsset", [aw, N, Y], nil)]
387+ $Tuple2(bl, aA)
368388 }
369389 else throw("Strict value is not equal to itself.")
370390 }
371391
372392
373393
374-@Callable(ad)
375-func withdraw (as) = {
376- let at = af(ad)
377- if ((at == at))
394+@Callable(ah)
395+func withdraw (aw) = {
396+ let ax = aj(ah)
397+ if ((ax == ax))
378398 then {
379- let w = Address(as)
380- let aA = valueOrErrorMessage(getInteger(T, y()), g("invalid period"))
381- let bi = if ((size(ad.payments) == 1))
382- then ad.payments[0]
399+ let x = Address(aw)
400+ let aE = valueOrErrorMessage(getInteger(U, z()), g("invalid period"))
401+ let bm = if ((size(ah.payments) == 1))
402+ then ah.payments[0]
383403 else i(g("invalid payments"))
384- let bf = if ((bi.assetId == X))
385- then X
404+ let bj = if ((bm.assetId == Y))
405+ then Y
386406 else i("invalid payment asset")
387- let be = if ((bi.amount > 0))
388- then bi.amount
407+ let bi = if ((bm.amount > 0))
408+ then bm.amount
389409 else i("invalid payment amount")
390- let bl = valueOrElse(getInteger(T, H()), 0)
391- let bh = [ScriptTransfer(T, be, bf)]
392- let aw = [invoke(T, "integerEntry", [H(), (bl + be)], nil), invoke(T, "stringEntry", [I(w, ad.transactionId), K(d, be, (aA + 1), unit)], nil)]
393- if ((aw == aw))
394- then $Tuple2(bh, aw)
410+ let bp = valueOrElse(getInteger(U, I()), 0)
411+ let bl = [ScriptTransfer(U, bi, bj)]
412+ let aA = [invoke(U, "integerEntry", [I(), (bp + bi)], nil), invoke(U, "stringEntry", [J(x, ah.transactionId), L(d, bi, (aE + 1), unit)], nil)]
413+ if ((aA == aA))
414+ then $Tuple2(bl, aA)
395415 else throw("Strict value is not equal to itself.")
396416 }
397417 else throw("Strict value is not equal to itself.")
399419
400420
401421
402-@Callable(ad)
403-func cancelWithdraw (as,J) = {
404- let at = af(ad)
405- if ((at == at))
422+@Callable(ah)
423+func cancelWithdraw (aw,K) = {
424+ let ax = aj(ah)
425+ if ((ax == ax))
406426 then {
407- let w = Address(as)
408- let bm = valueOrErrorMessage(getString(T, I(w, J)), g("invalid withdrawal request"))
409- let aA = valueOrErrorMessage(getInteger(T, y()), g("invalid period"))
410- let bn = Q(bm)
411- let L = bn._1
412- let M = bn._2
413- let N = bn._3
414- let O = bn._4
415- let aG = [if ((L == d))
427+ let x = Address(aw)
428+ let bq = valueOrErrorMessage(getString(U, J(x, K)), g("invalid withdrawal request"))
429+ let aE = valueOrErrorMessage(getInteger(U, z()), g("invalid period"))
430+ let br = R(bq)
431+ let M = br._1
432+ let N = br._2
433+ let O = br._3
434+ let P = br._4
435+ let aK = [if ((M == d))
416436 then true
417- else i("invalid withdrawal request status"), if ((N > aA))
437+ else i("invalid withdrawal request status"), if ((O > aE))
418438 then true
419439 else i("invalid withdrawal request period")]
420- if ((aG == aG))
440+ if ((aK == aK))
421441 then {
422- let bl = valueOrErrorMessage(getInteger(T, H()), g("invalid total withdrawal amount"))
423- let aw = [invoke(T, "integerEntry", [H(), if ((bl >= M))
424- then (bl - M)
425- else i("invalid withdrawal amount")], nil), invoke(T, "deleteEntry", [I(w, J)], nil), invoke(T, "transferAsset", [as, M, X], nil)]
426- if ((aw == aw))
427- then $Tuple2(nil, aw)
442+ let bp = valueOrErrorMessage(getInteger(U, I()), g("invalid total withdrawal amount"))
443+ let aA = [invoke(U, "integerEntry", [I(), if ((bp >= N))
444+ then (bp - N)
445+ else i("invalid withdrawal amount")], nil), invoke(U, "deleteEntry", [J(x, K)], nil), invoke(U, "transferAsset", [aw, N, Y], nil)]
446+ if ((aA == aA))
447+ then $Tuple2(nil, aA)
428448 else throw("Strict value is not equal to itself.")
429449 }
430450 else throw("Strict value is not equal to itself.")
434454
435455
436456
437-@Callable(ad)
438-func claimWaves (as,J) = {
439- let at = af(ad)
440- if ((at == at))
457+@Callable(ah)
458+func claimWaves (aw,K) = {
459+ let ax = aj(ah)
460+ if ((ax == ax))
441461 then {
442- let w = Address(as)
443- let aA = valueOrErrorMessage(getInteger(T, y()), g("invalid period"))
444- let bm = valueOrErrorMessage(getString(T, I(w, J)), g("invalid withdrawal request"))
445- let bo = Q(bm)
446- let L = bo._1
447- let M = bo._2
448- let N = bo._3
449- let O = bo._4
450- if ((L == e))
462+ let x = Address(aw)
463+ let aE = valueOrErrorMessage(getInteger(U, z()), g("invalid period"))
464+ let bq = valueOrErrorMessage(getString(U, J(x, K)), g("invalid withdrawal request"))
465+ let bs = R(bq)
466+ let M = bs._1
467+ let N = bs._2
468+ let O = bs._3
469+ let P = bs._4
470+ if ((M == e))
451471 then i("invalid withdrawal request status")
452- else if ((N > aA))
472+ else if ((O > aE))
453473 then i("invalid withdrawal request period")
454474 else {
455- let bp = valueOrErrorMessage(getInteger(T, z(N)), g("invalid price"))
456- let bq = if ((bp > 0))
457- then fraction(M, bp, c)
475+ let bt = valueOrErrorMessage(getInteger(U, A(O)), g("invalid price"))
476+ let bu = if ((bt > 0))
477+ then fraction(N, bt, c)
458478 else 0
459- let aw = [invoke(T, "stringEntry", [I(w, J), K(e, M, N, ad.transactionId)], nil), invoke(T, "transferWaves", [as, bq], nil)]
460- $Tuple2(nil, aw)
479+ let aA = [invoke(U, "stringEntry", [J(x, K), L(e, N, O, ah.transactionId)], nil), invoke(U, "transferWaves", [aw, bu], nil)]
480+ $Tuple2(nil, aA)
461481 }
462482 }
463483 else throw("Strict value is not equal to itself.")
465485
466486
467487
468-@Callable(ad)
469-func processBlocks (as) = {
470- let at = af(ad)
471- if ((at == at))
488+@Callable(ah)
489+func processBlocks (aw) = {
490+ let ax = aj(ah)
491+ if ((ax == ax))
472492 then {
473- let w = Address(as)
474- let aA = valueOrErrorMessage(getInteger(T, y()), g("invalid period"))
475- let aB = valueOrErrorMessage(getInteger(T, C()), g("invalid period length"))
476- let aC = valueOrErrorMessage(getInteger(T, B(aA)), g("invalid start height"))
477- let aD = valueOrErrorMessage(getInteger(T, z(aA)), g("invalid price"))
478- let aE = valueOrErrorMessage(getInteger(T, E()), g("invalid next block to process"))
479- let aF = ((aC + aB) - 1)
480- let br = 40
481- let bs = if (if (if ((height >= aE))
482- then if ((aE >= aC))
493+ let x = Address(aw)
494+ let aE = valueOrErrorMessage(getInteger(U, z()), g("invalid period"))
495+ let aF = valueOrErrorMessage(getInteger(U, D()), g("invalid period length"))
496+ let aG = valueOrErrorMessage(getInteger(U, C(aE)), g("invalid start height"))
497+ let aH = valueOrErrorMessage(getInteger(U, A(aE)), g("invalid price"))
498+ let aI = valueOrErrorMessage(getInteger(U, F()), g("invalid next block to process"))
499+ let aJ = ((aG + aF) - 1)
500+ let bv = 40
501+ let bw = if (if (if ((height >= aI))
502+ then if ((aI >= aG))
483503 then true
484- else (aA == 0)
504+ else (aE == 0)
485505 else false)
486- then (aF >= aE)
506+ then (aJ >= aI)
487507 else false)
488- then min([((aF - aE) + 1), br])
508+ then min([((aJ - aI) + 1), bv])
489509 else i(g("invalid target block"))
490- let bt = valueOrErrorMessage(getInteger(T, D()), g("invalid block processing reward"))
491- let bu = (bt / bs)
492- let bv = (bt - (bu * bs))
493- func bw (bx,by) = if ((by >= bs))
494- then bx
510+ let bx = valueOrErrorMessage(getInteger(U, E()), g("invalid block processing reward"))
511+ let by = (bx / bw)
512+ let bz = (bx - (by * bw))
513+ func bA (bB,bC) = if ((bC >= bw))
514+ then bB
495515 else {
496- let bz = (aE + by)
497- let bA = valueOrErrorMessage(blockInfoByHeight(bz), g("invalid block info"))
498- let bB = valueOrErrorMessage(ag(bA.rewards, Z), g(("invalid treasury reward for height " + toString(bz))))
499- let bC = bA.generator
500- let au = valueOrElse(getInteger(T, v(bC)), 0)
501- let bD = if ((by == (bs - 1)))
502- then (bu + bv)
503- else bu
504- let M = if ((aD > 0))
505- then fraction((bB - bD), c, aD)
516+ let bD = (aI + bC)
517+ let bE = valueOrErrorMessage(blockInfoByHeight(bD), g("invalid block info"))
518+ let bF = valueOrErrorMessage(ak(bE.rewards, aa), g(("invalid treasury reward for height " + toString(bD))))
519+ let bG = bE.generator
520+ let ay = valueOrElse(getInteger(U, w(bG)), 0)
521+ let bH = if ((bC == (bw - 1)))
522+ then (by + bz)
523+ else by
524+ let N = if ((aH > 0))
525+ then fraction((bF - bH), c, aH)
506526 else 0
507- let bE = [invoke(T, "stringEntry", [F(bz), makeString([toBase58String(ad.transactionId), toString(aA), toString(bC), toBase58String(as), toString(bB), toString(bD), toString(M)], a)], nil), invoke(T, "integerEntry", [v(bC), (au + M)], nil)]
508- if ((bE == bE))
527+ let bI = [invoke(U, "stringEntry", [G(bD), makeString([toBase58String(ah.transactionId), toString(aE), toString(bG), toBase58String(aw), toString(bF), toString(bH), toString(N)], a)], nil), invoke(U, "integerEntry", [w(bG), (ay + N)], nil)]
528+ if ((bI == bI))
509529 then {
510- let bF = bx
511- let bG = bF._1
512- let bH = bF._2
513- $Tuple2((bG + M), (bH + bB))
530+ let bJ = bB
531+ let bK = bJ._1
532+ let bL = bJ._2
533+ $Tuple2((bK + N), (bL + bF))
514534 }
515535 else throw("Strict value is not equal to itself.")
516536 }
517537
518- let bI = [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]
519- let bJ = {
520- let bK = bI
521- let bL = size(bK)
522- let bM = $Tuple2(0, 0)
523- func bN (bO,bP) = if ((bP >= bL))
524- then bO
525- else bw(bO, bK[bP])
538+ let bM = [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]
539+ let bN = {
540+ let bO = bM
541+ let bP = size(bO)
542+ let bQ = $Tuple2(0, 0)
543+ func bR (bS,bT) = if ((bT >= bP))
544+ then bS
545+ else bA(bS, bO[bT])
526546
527- func bQ (bO,bP) = if ((bP >= bL))
528- then bO
547+ func bU (bS,bT) = if ((bT >= bP))
548+ then bS
529549 else throw("List size exceeds 40")
530550
531- bQ(bN(bN(bN(bN(bN(bN(bN(bN(bN(bN(bN(bN(bN(bN(bN(bN(bN(bN(bN(bN(bN(bN(bN(bN(bN(bN(bN(bN(bN(bN(bN(bN(bN(bN(bN(bN(bN(bN(bN(bN(bM, 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)
551+ bU(bR(bR(bR(bR(bR(bR(bR(bR(bR(bR(bR(bR(bR(bR(bR(bR(bR(bR(bR(bR(bR(bR(bR(bR(bR(bR(bR(bR(bR(bR(bR(bR(bR(bR(bR(bR(bR(bR(bR(bR(bQ, 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)
532552 }
533- if ((bJ == bJ))
553+ if ((bN == bN))
534554 then {
535- let bR = bJ._2
536- let bS = bJ._1
537- let bT = (bR - bt)
538- let bk = valueOrElse(getInteger(T, t(unit)), 0)
539- let bh = [invoke(T, "reissue", [bS], nil), invoke(T, "integerEntry", [E(), (aE + bs)], nil), invoke(T, "transferFromProxyTreasury", [ab.bytes, bT], nil), invoke(T, "transferFromProxyTreasury", [as, bt], nil), invoke(T, "integerEntry", [t(unit), (bk + bT)], nil)]
540- if ((bh == bh))
555+ let bV = bN._2
556+ let bW = bN._1
557+ let bX = (bV - bx)
558+ let bo = valueOrElse(getInteger(U, u(unit)), 0)
559+ let bl = [invoke(U, "reissue", [bW], nil), invoke(U, "integerEntry", [F(), (aI + bw)], nil), invoke(U, "transferFromProxyTreasury", [ac.bytes, bX], nil), invoke(U, "transferFromProxyTreasury", [aw, bx], nil), invoke(U, "integerEntry", [u(unit), (bo + bX)], nil)]
560+ if ((bl == bl))
541561 then $Tuple2(nil, unit)
542562 else throw("Strict value is not equal to itself.")
543563 }
547567 }
548568
549569
550-@Verifier(bU)
551-func bV () = sigVerify(bU.bodyBytes, bU.proofs[0], bU.senderPublicKey)
570+@Verifier(bY)
571+func bZ () = {
572+ let ca = {
573+ let l = ad()
574+ if ($isInstanceOf(l, "ByteVector"))
575+ then {
576+ let af = l
577+ af
578+ }
579+ else bY.senderPublicKey
580+ }
581+ sigVerify(bY.bodyBytes, bY.proofs[0], ca)
582+ }
552583
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
43-func q () = makeString(["%s", "lpAssetId"], a)
43+func q () = makeString(["%s", "managerPublicKey"], a)
4444
4545
46-func r () = makeString(["%s", "proxyTreasury"], a)
46+func r () = makeString(["%s", "lpAssetId"], a)
4747
4848
49-func s () = makeString(["%s", "mainTreasury"], a)
49+func s () = makeString(["%s", "proxyTreasury"], a)
5050
5151
52-func t (k) = makeString(["%s%s", "invested", j(k)], a)
52+func t () = makeString(["%s", "mainTreasury"], a)
5353
5454
55-func u (k) = makeString(["%s%s", "donated", j(k)], a)
55+func u (k) = makeString(["%s%s", "invested", j(k)], a)
5656
5757
58-func v (w) = makeString(["%s%s", "available", toString(w)], a)
58+func v (k) = makeString(["%s%s", "donated", j(k)], a)
5959
6060
61-func x (w) = makeString(["%s%s", "claimed", toString(w)], a)
61+func w (x) = makeString(["%s%s", "available", toString(x)], a)
6262
6363
64-func y () = makeString(["%s", "currentPeriod"], a)
64+func y (x) = makeString(["%s%s", "claimed", toString(x)], a)
6565
6666
67-func z (A) = makeString(["%s%d", "price", toString(A)], a)
67+func z () = makeString(["%s", "currentPeriod"], a)
6868
6969
70-func B (A) = makeString(["%s%d", "startHeight", toString(A)], a)
70+func A (B) = makeString(["%s%d", "price", toString(B)], a)
7171
7272
73-func C () = "%s__periodLength"
73+func C (B) = makeString(["%s%d", "startHeight", toString(B)], a)
7474
7575
76-func D () = "%s__blockProcessingReward"
76+func D () = "%s__periodLength"
7777
7878
79-func E () = "%s__nextBlockToProcess"
79+func E () = "%s__blockProcessingReward"
8080
8181
82-func F (G) = makeString(["%s%d", "blockProcessed", toString(G)], a)
82+func F () = "%s__nextBlockToProcess"
8383
8484
85-func H () = "%s__withdrawal"
85+func G (H) = makeString(["%s%d", "blockProcessed", toString(H)], a)
8686
8787
88-func I (w,J) = makeString(["%s%s%s", "withdrawal", toString(w), toBase58String(J)], a)
88+func I () = "%s__withdrawal"
8989
9090
91-func K (L,M,N,O) = {
92- let P = {
93- let l = O
91+func J (x,K) = makeString(["%s%s%s", "withdrawal", toString(x), toBase58String(K)], a)
92+
93+
94+func L (M,N,O,P) = {
95+ let Q = {
96+ let l = P
9497 if ($isInstanceOf(l, "ByteVector"))
9598 then {
9699 let m = l
97100 toBase58String(m)
98101 }
99102 else if ($isInstanceOf(l, "Unit"))
100103 then "SOON"
101104 else throw("Match error")
102105 }
103- makeString(["%s%d%d%s", L, toString(M), toString(N), P], a)
106+ makeString(["%s%d%d%s", M, toString(N), toString(O), Q], a)
104107 }
105108
106109
107-func Q (h) = {
108- let R = split(h, a)
109- if ((size(R) == 5))
110+func R (h) = {
111+ let S = split(h, a)
112+ if ((size(S) == 5))
110113 then {
111- let L = R[1]
112- let M = valueOrErrorMessage(parseInt(R[2]), g("invalid lpAssetAmount"))
113- let N = valueOrErrorMessage(parseInt(R[3]), g("invalid targetPeriod"))
114- let O = R[4]
115- $Tuple4(L, M, N, O)
114+ let M = S[1]
115+ let N = valueOrErrorMessage(parseInt(S[2]), g("invalid lpAssetAmount"))
116+ let O = valueOrErrorMessage(parseInt(S[3]), g("invalid targetPeriod"))
117+ let P = S[4]
118+ $Tuple4(M, N, O, P)
116119 }
117120 else i("invalid withdrawal request value")
118121 }
119122
120123
121-let S = {
124+let T = {
122125 let l = getString(this, p())
123126 if ($isInstanceOf(l, "String"))
124127 then {
125128 let h = l
126129 addressFromString(h)
127130 }
128131 else if ($isInstanceOf(l, "Unit"))
129132 then unit
130133 else throw("Match error")
131134 }
132135
133-let T = valueOrErrorMessage(S, g("invalid factory address"))
136+let U = valueOrErrorMessage(T, g("invalid factory address"))
134137
135-let U = {
136- let l = S
138+let V = {
139+ let l = T
137140 if ($isInstanceOf(l, "Address"))
138141 then {
139- let V = l
140- let W = getString(V, q())
141- if ($isInstanceOf(W, "String"))
142+ let W = l
143+ let X = getString(W, r())
144+ if ($isInstanceOf(X, "String"))
142145 then {
143- let h = W
146+ let h = X
144147 fromBase58String(h)
145148 }
146- else if ($isInstanceOf(W, "Unit"))
149+ else if ($isInstanceOf(X, "Unit"))
147150 then unit
148151 else throw("Match error")
149152 }
150153 else if ($isInstanceOf(l, "Unit"))
151154 then unit
152155 else throw("Match error")
153156 }
154157
155-let X = valueOrErrorMessage(U, g("invalid lpAssetId"))
158+let Y = valueOrErrorMessage(V, g("invalid lpAssetId"))
156159
157-let Y = {
158- let l = S
160+let Z = {
161+ let l = T
159162 if ($isInstanceOf(l, "Address"))
160163 then {
161- let V = l
162- let W = getString(V, r())
163- if ($isInstanceOf(W, "String"))
164+ let W = l
165+ let X = getString(W, s())
166+ if ($isInstanceOf(X, "String"))
164167 then {
165- let h = W
168+ let h = X
166169 addressFromString(h)
167170 }
168- else if ($isInstanceOf(W, "Unit"))
171+ else if ($isInstanceOf(X, "Unit"))
169172 then unit
170173 else throw("Match error")
171174 }
172175 else if ($isInstanceOf(l, "Unit"))
173176 then unit
174177 else throw("Match error")
175178 }
176179
177-let Z = valueOrErrorMessage(Y, g("invalid proxy treasury address"))
180+let aa = valueOrErrorMessage(Z, g("invalid proxy treasury address"))
178181
179-let aa = {
180- let l = S
182+let ab = {
183+ let l = T
181184 if ($isInstanceOf(l, "Address"))
182185 then {
183- let V = l
184- let W = getString(V, s())
185- if ($isInstanceOf(W, "String"))
186+ let W = l
187+ let X = getString(W, t())
188+ if ($isInstanceOf(X, "String"))
186189 then {
187- let h = W
190+ let h = X
188191 addressFromString(h)
189192 }
190- else if ($isInstanceOf(W, "Unit"))
193+ else if ($isInstanceOf(X, "Unit"))
191194 then unit
192195 else throw("Match error")
193196 }
194197 else if ($isInstanceOf(l, "Unit"))
195198 then unit
196199 else throw("Match error")
197200 }
198201
199-let ab = valueOrErrorMessage(aa, g("invalid feature treasury address"))
202+let ac = valueOrErrorMessage(ab, g("invalid main treasury address"))
200203
201-func ac (ad,ae) = if ((ad.caller == ae))
204+func ad () = {
205+ let l = T
206+ if ($isInstanceOf(l, "Address"))
207+ then {
208+ let ae = l
209+ let X = getString(ae, q())
210+ if ($isInstanceOf(X, "String"))
211+ then {
212+ let af = X
213+ fromBase58String(af)
214+ }
215+ else unit
216+ }
217+ else unit
218+ }
219+
220+
221+func ag (ah,ai) = if ((ah.caller == ai))
202222 then true
203223 else i("permission denied")
204224
205225
206-func af (ad) = ac(ad, T)
226+func aj (ah) = ag(ah, U)
207227
208228
209-func ag (ah,ai) = {
210- let h = size(ah)
211- let aj = ah[0]
212- let ak = aj._1
213- let al = aj._2
214- let am = ah[1]
215- let an = am._1
216- let ao = am._2
217- let ap = ah[2]
218- let aq = ap._1
219- let ar = ap._2
229+func ak (al,am) = {
230+ let h = size(al)
231+ let an = al[0]
232+ let ao = an._1
233+ let ap = an._2
234+ let aq = al[1]
235+ let ar = aq._1
236+ let as = aq._2
237+ let at = al[2]
238+ let au = at._1
239+ let av = at._2
220240 if (if ((h > 0))
221- then (ak == ai)
241+ then (ao == am)
222242 else false)
223- then al
243+ then ap
224244 else if (if ((h > 1))
225- then (an == ai)
245+ then (ar == am)
226246 else false)
227- then ao
247+ then as
228248 else if (if ((h > 2))
229- then (aq == ai)
249+ then (au == am)
230250 else false)
231- then ar
251+ then av
232252 else unit
233253 }
234254
235255
236-@Callable(ad)
237-func claimLP (as) = {
238- let at = af(ad)
239- if ((at == at))
256+@Callable(ah)
257+func claimLP (aw) = {
258+ let ax = aj(ah)
259+ if ((ax == ax))
240260 then {
241- let w = Address(as)
242- let au = valueOrElse(getInteger(T, v(w)), 0)
243- let av = valueOrElse(getInteger(T, x(w)), 0)
244- let aw = if ((au > 0))
245- then [invoke(T, "transferAsset", [as, au, X], nil), invoke(T, "integerEntry", [v(w), 0], nil), invoke(T, "integerEntry", [x(w), (av + au)], nil)]
261+ let x = Address(aw)
262+ let ay = valueOrElse(getInteger(U, w(x)), 0)
263+ let az = valueOrElse(getInteger(U, y(x)), 0)
264+ let aA = if ((ay > 0))
265+ then [invoke(U, "transferAsset", [aw, ay, Y], nil), invoke(U, "integerEntry", [w(x), 0], nil), invoke(U, "integerEntry", [y(x), (az + ay)], nil)]
246266 else i("nothing to claim")
247- $Tuple2(nil, aw)
267+ $Tuple2(nil, aA)
248268 }
249269 else throw("Strict value is not equal to itself.")
250270 }
251271
252272
253273
254-@Callable(ad)
255-func finalize (as,ax,ay,az) = {
256- let at = af(ad)
257- if ((at == at))
274+@Callable(ah)
275+func finalize (aw,aB,aC,aD) = {
276+ let ax = aj(ah)
277+ if ((ax == ax))
258278 then {
259- let aA = valueOrErrorMessage(getInteger(T, y()), g("invalid period"))
260- let aB = valueOrErrorMessage(getInteger(T, C()), g("invalid period length"))
261- let aC = valueOrErrorMessage(getInteger(T, B(aA)), g("invalid start height"))
262- let aD = valueOrErrorMessage(getInteger(T, z(aA)), g("invalid price"))
263- let aE = valueOrErrorMessage(getInteger(T, E()), g("invalid next block to process"))
264- let aF = ((aC + aB) - 1)
265- let aG = [if ((ad.originCaller == ab))
279+ let aE = valueOrErrorMessage(getInteger(U, z()), g("invalid period"))
280+ let aF = valueOrErrorMessage(getInteger(U, D()), g("invalid period length"))
281+ let aG = valueOrErrorMessage(getInteger(U, C(aE)), g("invalid start height"))
282+ let aH = valueOrErrorMessage(getInteger(U, A(aE)), g("invalid price"))
283+ let aI = valueOrErrorMessage(getInteger(U, F()), g("invalid next block to process"))
284+ let aJ = ((aG + aF) - 1)
285+ let aK = [if ((ah.originCaller == ac))
266286 then true
267- else i("permission denied"), if ((aE > aF))
287+ else i("permission denied"), if ((aI > aJ))
268288 then true
269- else i("unprocessed blocks"), if ((ax >= 0))
289+ else i("unprocessed blocks"), if ((aB >= 0))
270290 then true
271- else i("invalid new treasury volume"), if ((ay >= 0))
291+ else i("invalid new treasury volume"), if ((aC >= 0))
272292 then true
273- else i("invalid PWR managers bonus"), if (if ((az >= -(c)))
274- then (c >= az)
293+ else i("invalid PWR managers bonus"), if (if ((aD >= -(c)))
294+ then (c >= aD)
275295 else false)
276296 then true
277297 else i("invalid treasury volume diff allocation coefficient")]
278- if ((aG == aG))
298+ if ((aK == aK))
279299 then {
280- let aH = valueOrElse(getInteger(T, u(unit)), 0)
281- let aI = valueOrElse(getInteger(T, t(unit)), 0)
282- let aJ = (aH + aI)
283- let aK = (ax - aJ)
284- let aL = if (if ((aK > 0))
285- then (aK >= ay)
300+ let aL = valueOrElse(getInteger(U, v(unit)), 0)
301+ let aM = valueOrElse(getInteger(U, u(unit)), 0)
302+ let aN = (aL + aM)
303+ let aO = (aB - aN)
304+ let aP = if (if ((aO > 0))
305+ then (aO >= aC)
286306 else false)
287- then ay
307+ then aC
288308 else 0
289- let aM = (aK - aL)
290- let aN = if ((aJ > 0))
291- then fraction(aH, c, aJ)
309+ let aQ = (aO - aP)
310+ let aR = if ((aN > 0))
311+ then fraction(aL, c, aN)
292312 else 0
293- let aO = fraction(aM, aN, c)
294- let aP = (aM - aO)
295- let aQ = n(az)
296- let aR = fraction(aP, if ((0 > az))
297- then aQ
313+ let aS = fraction(aQ, aR, c)
314+ let aT = (aQ - aS)
315+ let aU = n(aD)
316+ let aV = fraction(aT, if ((0 > aD))
317+ then aU
298318 else 0, c)
299- let aS = fraction(aO, if ((az > 0))
300- then aQ
319+ let aW = fraction(aS, if ((aD > 0))
320+ then aU
301321 else 0, c)
302- let aT = ((aO - aS) + aR)
303- let aU = ((aP - aR) + aS)
304- let aV = (aI + aU)
305- let aW = (aA + 1)
306- let aX = valueOrErrorMessage(assetInfo(X), g("invalid lpAsset info")).quantity
307- let aY = fraction(aV, c, aX)
308- let aZ = valueOrElse(getInteger(T, H()), 0)
309- let ba = (aX - aZ)
310- let bb = max([0, fraction(ba, aY, c)])
311- let bc = max([0, fraction(aZ, aY, c)])
312- let bd = if ((size(ad.payments) > 0))
313- then ad.payments[0]
322+ let aX = ((aS - aW) + aV)
323+ let aY = ((aT - aV) + aW)
324+ let aZ = (aM + aY)
325+ let ba = (aE + 1)
326+ let bb = valueOrErrorMessage(assetInfo(Y), g("invalid lpAsset info")).quantity
327+ let bc = fraction(aZ, c, bb)
328+ let bd = valueOrElse(getInteger(U, I()), 0)
329+ let be = (bb - bd)
330+ let bf = max([0, fraction(be, bc, c)])
331+ let bg = max([0, fraction(bd, bc, c)])
332+ let bh = if ((size(ah.payments) > 0))
333+ then ah.payments[0]
314334 else unit
315- let be = value(bd).amount
316- let bf = value(bd).assetId
317- let bg = if (if ((bc == 0))
335+ let bi = value(bh).amount
336+ let bj = value(bh).assetId
337+ let bk = if (if ((bg == 0))
318338 then true
319- else if (if ((bd != unit))
320- then (bf == unit)
339+ else if (if ((bh != unit))
340+ then (bj == unit)
321341 else false)
322- then (be >= bc)
342+ then (bi >= bg)
323343 else false)
324344 then true
325- else i(("invalid payments, payment amount min: " + toString(bc)))
326- if ((bg == bg))
345+ else i(("invalid payments, payment amount min: " + toString(bg)))
346+ if ((bk == bk))
327347 then {
328- let bh = if ((bd != unit))
329- then [ScriptTransfer(T, be, bf)]
348+ let bl = if ((bh != unit))
349+ then [ScriptTransfer(U, bi, bj)]
330350 else nil
331- 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), invoke(T, "integerEntry", [t(unit), bb], nil)]
332- $Tuple2(bh, aw)
351+ let aA = [invoke(U, "integerEntry", [z(), ba], nil), invoke(U, "integerEntry", [A(ba), bc], nil), invoke(U, "integerEntry", [C(ba), (aJ + 1)], nil), invoke(U, "burn", [bd], nil), invoke(U, "integerEntry", [I(), 0], nil), invoke(U, "integerEntry", [u(unit), bf], nil)]
352+ $Tuple2(bl, aA)
333353 }
334354 else throw("Strict value is not equal to itself.")
335355 }
336356 else throw("Strict value is not equal to itself.")
337357 }
338358 else throw("Strict value is not equal to itself.")
339359 }
340360
341361
342362
343-@Callable(ad)
344-func invest (as) = {
345- let at = af(ad)
346- if ((at == at))
363+@Callable(ah)
364+func invest (aw) = {
365+ let ax = aj(ah)
366+ if ((ax == ax))
347367 then {
348- let w = Address(as)
349- let aA = valueOrErrorMessage(getInteger(T, y()), g("invalid period"))
350- let aD = valueOrErrorMessage(getInteger(T, z(aA)), g("invalid price"))
351- let bi = if ((size(ad.payments) == 1))
352- then ad.payments[0]
368+ let x = Address(aw)
369+ let aE = valueOrErrorMessage(getInteger(U, z()), g("invalid period"))
370+ let aH = valueOrErrorMessage(getInteger(U, A(aE)), g("invalid price"))
371+ let bm = if ((size(ah.payments) == 1))
372+ then ah.payments[0]
353373 else i("invalid payments")
354- let bj = if (if ((bi.assetId == unit))
355- then (bi.amount > 0)
374+ let bn = if (if ((bm.assetId == unit))
375+ then (bm.amount > 0)
356376 else false)
357- then $Tuple2(bi.amount, bi.assetId)
377+ then $Tuple2(bm.amount, bm.assetId)
358378 else i("invalid payment amount")
359- let be = bj._1
360- let bf = bj._2
361- let M = if ((aD > 0))
362- then fraction(be, c, aD)
379+ let bi = bn._1
380+ let bj = bn._2
381+ let N = if ((aH > 0))
382+ then fraction(bi, c, aH)
363383 else 0
364- let bk = valueOrElse(getInteger(T, t(unit)), 0)
365- let bh = [ScriptTransfer(ab, be, bf)]
366- let aw = [invoke(T, "integerEntry", [t(unit), (bk + be)], nil), invoke(T, "reissue", [M], nil), invoke(T, "transferAsset", [as, M, X], nil)]
367- $Tuple2(bh, aw)
384+ let bo = valueOrElse(getInteger(U, u(unit)), 0)
385+ let bl = [ScriptTransfer(ac, bi, bj)]
386+ let aA = [invoke(U, "integerEntry", [u(unit), (bo + bi)], nil), invoke(U, "reissue", [N], nil), invoke(U, "transferAsset", [aw, N, Y], nil)]
387+ $Tuple2(bl, aA)
368388 }
369389 else throw("Strict value is not equal to itself.")
370390 }
371391
372392
373393
374-@Callable(ad)
375-func withdraw (as) = {
376- let at = af(ad)
377- if ((at == at))
394+@Callable(ah)
395+func withdraw (aw) = {
396+ let ax = aj(ah)
397+ if ((ax == ax))
378398 then {
379- let w = Address(as)
380- let aA = valueOrErrorMessage(getInteger(T, y()), g("invalid period"))
381- let bi = if ((size(ad.payments) == 1))
382- then ad.payments[0]
399+ let x = Address(aw)
400+ let aE = valueOrErrorMessage(getInteger(U, z()), g("invalid period"))
401+ let bm = if ((size(ah.payments) == 1))
402+ then ah.payments[0]
383403 else i(g("invalid payments"))
384- let bf = if ((bi.assetId == X))
385- then X
404+ let bj = if ((bm.assetId == Y))
405+ then Y
386406 else i("invalid payment asset")
387- let be = if ((bi.amount > 0))
388- then bi.amount
407+ let bi = if ((bm.amount > 0))
408+ then bm.amount
389409 else i("invalid payment amount")
390- let bl = valueOrElse(getInteger(T, H()), 0)
391- let bh = [ScriptTransfer(T, be, bf)]
392- let aw = [invoke(T, "integerEntry", [H(), (bl + be)], nil), invoke(T, "stringEntry", [I(w, ad.transactionId), K(d, be, (aA + 1), unit)], nil)]
393- if ((aw == aw))
394- then $Tuple2(bh, aw)
410+ let bp = valueOrElse(getInteger(U, I()), 0)
411+ let bl = [ScriptTransfer(U, bi, bj)]
412+ let aA = [invoke(U, "integerEntry", [I(), (bp + bi)], nil), invoke(U, "stringEntry", [J(x, ah.transactionId), L(d, bi, (aE + 1), unit)], nil)]
413+ if ((aA == aA))
414+ then $Tuple2(bl, aA)
395415 else throw("Strict value is not equal to itself.")
396416 }
397417 else throw("Strict value is not equal to itself.")
398418 }
399419
400420
401421
402-@Callable(ad)
403-func cancelWithdraw (as,J) = {
404- let at = af(ad)
405- if ((at == at))
422+@Callable(ah)
423+func cancelWithdraw (aw,K) = {
424+ let ax = aj(ah)
425+ if ((ax == ax))
406426 then {
407- let w = Address(as)
408- let bm = valueOrErrorMessage(getString(T, I(w, J)), g("invalid withdrawal request"))
409- let aA = valueOrErrorMessage(getInteger(T, y()), g("invalid period"))
410- let bn = Q(bm)
411- let L = bn._1
412- let M = bn._2
413- let N = bn._3
414- let O = bn._4
415- let aG = [if ((L == d))
427+ let x = Address(aw)
428+ let bq = valueOrErrorMessage(getString(U, J(x, K)), g("invalid withdrawal request"))
429+ let aE = valueOrErrorMessage(getInteger(U, z()), g("invalid period"))
430+ let br = R(bq)
431+ let M = br._1
432+ let N = br._2
433+ let O = br._3
434+ let P = br._4
435+ let aK = [if ((M == d))
416436 then true
417- else i("invalid withdrawal request status"), if ((N > aA))
437+ else i("invalid withdrawal request status"), if ((O > aE))
418438 then true
419439 else i("invalid withdrawal request period")]
420- if ((aG == aG))
440+ if ((aK == aK))
421441 then {
422- let bl = valueOrErrorMessage(getInteger(T, H()), g("invalid total withdrawal amount"))
423- let aw = [invoke(T, "integerEntry", [H(), if ((bl >= M))
424- then (bl - M)
425- else i("invalid withdrawal amount")], nil), invoke(T, "deleteEntry", [I(w, J)], nil), invoke(T, "transferAsset", [as, M, X], nil)]
426- if ((aw == aw))
427- then $Tuple2(nil, aw)
442+ let bp = valueOrErrorMessage(getInteger(U, I()), g("invalid total withdrawal amount"))
443+ let aA = [invoke(U, "integerEntry", [I(), if ((bp >= N))
444+ then (bp - N)
445+ else i("invalid withdrawal amount")], nil), invoke(U, "deleteEntry", [J(x, K)], nil), invoke(U, "transferAsset", [aw, N, Y], nil)]
446+ if ((aA == aA))
447+ then $Tuple2(nil, aA)
428448 else throw("Strict value is not equal to itself.")
429449 }
430450 else throw("Strict value is not equal to itself.")
431451 }
432452 else throw("Strict value is not equal to itself.")
433453 }
434454
435455
436456
437-@Callable(ad)
438-func claimWaves (as,J) = {
439- let at = af(ad)
440- if ((at == at))
457+@Callable(ah)
458+func claimWaves (aw,K) = {
459+ let ax = aj(ah)
460+ if ((ax == ax))
441461 then {
442- let w = Address(as)
443- let aA = valueOrErrorMessage(getInteger(T, y()), g("invalid period"))
444- let bm = valueOrErrorMessage(getString(T, I(w, J)), g("invalid withdrawal request"))
445- let bo = Q(bm)
446- let L = bo._1
447- let M = bo._2
448- let N = bo._3
449- let O = bo._4
450- if ((L == e))
462+ let x = Address(aw)
463+ let aE = valueOrErrorMessage(getInteger(U, z()), g("invalid period"))
464+ let bq = valueOrErrorMessage(getString(U, J(x, K)), g("invalid withdrawal request"))
465+ let bs = R(bq)
466+ let M = bs._1
467+ let N = bs._2
468+ let O = bs._3
469+ let P = bs._4
470+ if ((M == e))
451471 then i("invalid withdrawal request status")
452- else if ((N > aA))
472+ else if ((O > aE))
453473 then i("invalid withdrawal request period")
454474 else {
455- let bp = valueOrErrorMessage(getInteger(T, z(N)), g("invalid price"))
456- let bq = if ((bp > 0))
457- then fraction(M, bp, c)
475+ let bt = valueOrErrorMessage(getInteger(U, A(O)), g("invalid price"))
476+ let bu = if ((bt > 0))
477+ then fraction(N, bt, c)
458478 else 0
459- let aw = [invoke(T, "stringEntry", [I(w, J), K(e, M, N, ad.transactionId)], nil), invoke(T, "transferWaves", [as, bq], nil)]
460- $Tuple2(nil, aw)
479+ let aA = [invoke(U, "stringEntry", [J(x, K), L(e, N, O, ah.transactionId)], nil), invoke(U, "transferWaves", [aw, bu], nil)]
480+ $Tuple2(nil, aA)
461481 }
462482 }
463483 else throw("Strict value is not equal to itself.")
464484 }
465485
466486
467487
468-@Callable(ad)
469-func processBlocks (as) = {
470- let at = af(ad)
471- if ((at == at))
488+@Callable(ah)
489+func processBlocks (aw) = {
490+ let ax = aj(ah)
491+ if ((ax == ax))
472492 then {
473- let w = Address(as)
474- let aA = valueOrErrorMessage(getInteger(T, y()), g("invalid period"))
475- let aB = valueOrErrorMessage(getInteger(T, C()), g("invalid period length"))
476- let aC = valueOrErrorMessage(getInteger(T, B(aA)), g("invalid start height"))
477- let aD = valueOrErrorMessage(getInteger(T, z(aA)), g("invalid price"))
478- let aE = valueOrErrorMessage(getInteger(T, E()), g("invalid next block to process"))
479- let aF = ((aC + aB) - 1)
480- let br = 40
481- let bs = if (if (if ((height >= aE))
482- then if ((aE >= aC))
493+ let x = Address(aw)
494+ let aE = valueOrErrorMessage(getInteger(U, z()), g("invalid period"))
495+ let aF = valueOrErrorMessage(getInteger(U, D()), g("invalid period length"))
496+ let aG = valueOrErrorMessage(getInteger(U, C(aE)), g("invalid start height"))
497+ let aH = valueOrErrorMessage(getInteger(U, A(aE)), g("invalid price"))
498+ let aI = valueOrErrorMessage(getInteger(U, F()), g("invalid next block to process"))
499+ let aJ = ((aG + aF) - 1)
500+ let bv = 40
501+ let bw = if (if (if ((height >= aI))
502+ then if ((aI >= aG))
483503 then true
484- else (aA == 0)
504+ else (aE == 0)
485505 else false)
486- then (aF >= aE)
506+ then (aJ >= aI)
487507 else false)
488- then min([((aF - aE) + 1), br])
508+ then min([((aJ - aI) + 1), bv])
489509 else i(g("invalid target block"))
490- let bt = valueOrErrorMessage(getInteger(T, D()), g("invalid block processing reward"))
491- let bu = (bt / bs)
492- let bv = (bt - (bu * bs))
493- func bw (bx,by) = if ((by >= bs))
494- then bx
510+ let bx = valueOrErrorMessage(getInteger(U, E()), g("invalid block processing reward"))
511+ let by = (bx / bw)
512+ let bz = (bx - (by * bw))
513+ func bA (bB,bC) = if ((bC >= bw))
514+ then bB
495515 else {
496- let bz = (aE + by)
497- let bA = valueOrErrorMessage(blockInfoByHeight(bz), g("invalid block info"))
498- let bB = valueOrErrorMessage(ag(bA.rewards, Z), g(("invalid treasury reward for height " + toString(bz))))
499- let bC = bA.generator
500- let au = valueOrElse(getInteger(T, v(bC)), 0)
501- let bD = if ((by == (bs - 1)))
502- then (bu + bv)
503- else bu
504- let M = if ((aD > 0))
505- then fraction((bB - bD), c, aD)
516+ let bD = (aI + bC)
517+ let bE = valueOrErrorMessage(blockInfoByHeight(bD), g("invalid block info"))
518+ let bF = valueOrErrorMessage(ak(bE.rewards, aa), g(("invalid treasury reward for height " + toString(bD))))
519+ let bG = bE.generator
520+ let ay = valueOrElse(getInteger(U, w(bG)), 0)
521+ let bH = if ((bC == (bw - 1)))
522+ then (by + bz)
523+ else by
524+ let N = if ((aH > 0))
525+ then fraction((bF - bH), c, aH)
506526 else 0
507- let bE = [invoke(T, "stringEntry", [F(bz), makeString([toBase58String(ad.transactionId), toString(aA), toString(bC), toBase58String(as), toString(bB), toString(bD), toString(M)], a)], nil), invoke(T, "integerEntry", [v(bC), (au + M)], nil)]
508- if ((bE == bE))
527+ let bI = [invoke(U, "stringEntry", [G(bD), makeString([toBase58String(ah.transactionId), toString(aE), toString(bG), toBase58String(aw), toString(bF), toString(bH), toString(N)], a)], nil), invoke(U, "integerEntry", [w(bG), (ay + N)], nil)]
528+ if ((bI == bI))
509529 then {
510- let bF = bx
511- let bG = bF._1
512- let bH = bF._2
513- $Tuple2((bG + M), (bH + bB))
530+ let bJ = bB
531+ let bK = bJ._1
532+ let bL = bJ._2
533+ $Tuple2((bK + N), (bL + bF))
514534 }
515535 else throw("Strict value is not equal to itself.")
516536 }
517537
518- let bI = [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]
519- let bJ = {
520- let bK = bI
521- let bL = size(bK)
522- let bM = $Tuple2(0, 0)
523- func bN (bO,bP) = if ((bP >= bL))
524- then bO
525- else bw(bO, bK[bP])
538+ let bM = [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]
539+ let bN = {
540+ let bO = bM
541+ let bP = size(bO)
542+ let bQ = $Tuple2(0, 0)
543+ func bR (bS,bT) = if ((bT >= bP))
544+ then bS
545+ else bA(bS, bO[bT])
526546
527- func bQ (bO,bP) = if ((bP >= bL))
528- then bO
547+ func bU (bS,bT) = if ((bT >= bP))
548+ then bS
529549 else throw("List size exceeds 40")
530550
531- bQ(bN(bN(bN(bN(bN(bN(bN(bN(bN(bN(bN(bN(bN(bN(bN(bN(bN(bN(bN(bN(bN(bN(bN(bN(bN(bN(bN(bN(bN(bN(bN(bN(bN(bN(bN(bN(bN(bN(bN(bN(bM, 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)
551+ bU(bR(bR(bR(bR(bR(bR(bR(bR(bR(bR(bR(bR(bR(bR(bR(bR(bR(bR(bR(bR(bR(bR(bR(bR(bR(bR(bR(bR(bR(bR(bR(bR(bR(bR(bR(bR(bR(bR(bR(bR(bQ, 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)
532552 }
533- if ((bJ == bJ))
553+ if ((bN == bN))
534554 then {
535- let bR = bJ._2
536- let bS = bJ._1
537- let bT = (bR - bt)
538- let bk = valueOrElse(getInteger(T, t(unit)), 0)
539- let bh = [invoke(T, "reissue", [bS], nil), invoke(T, "integerEntry", [E(), (aE + bs)], nil), invoke(T, "transferFromProxyTreasury", [ab.bytes, bT], nil), invoke(T, "transferFromProxyTreasury", [as, bt], nil), invoke(T, "integerEntry", [t(unit), (bk + bT)], nil)]
540- if ((bh == bh))
555+ let bV = bN._2
556+ let bW = bN._1
557+ let bX = (bV - bx)
558+ let bo = valueOrElse(getInteger(U, u(unit)), 0)
559+ let bl = [invoke(U, "reissue", [bW], nil), invoke(U, "integerEntry", [F(), (aI + bw)], nil), invoke(U, "transferFromProxyTreasury", [ac.bytes, bX], nil), invoke(U, "transferFromProxyTreasury", [aw, bx], nil), invoke(U, "integerEntry", [u(unit), (bo + bX)], nil)]
560+ if ((bl == bl))
541561 then $Tuple2(nil, unit)
542562 else throw("Strict value is not equal to itself.")
543563 }
544564 else throw("Strict value is not equal to itself.")
545565 }
546566 else throw("Strict value is not equal to itself.")
547567 }
548568
549569
550-@Verifier(bU)
551-func bV () = sigVerify(bU.bodyBytes, bU.proofs[0], bU.senderPublicKey)
570+@Verifier(bY)
571+func bZ () = {
572+ let ca = {
573+ let l = ad()
574+ if ($isInstanceOf(l, "ByteVector"))
575+ then {
576+ let af = l
577+ af
578+ }
579+ else bY.senderPublicKey
580+ }
581+ sigVerify(bY.bodyBytes, bY.proofs[0], ca)
582+ }
552583

github/deemru/w8io/169f3d6 
234.61 ms