tx · e8eP4mbhtjPhYtC9DJqEuHahczoCURWkQAkFvpxvftv

3N7UuYar6264P58FBhVWKPQAh4Yua2hgngv:  -0.01700000 Waves

2024.11.22 16:54 [3382760] smart account 3N7UuYar6264P58FBhVWKPQAh4Yua2hgngv > SELF 0.00000000 Waves

{ "type": 13, "id": "e8eP4mbhtjPhYtC9DJqEuHahczoCURWkQAkFvpxvftv", "fee": 1700000, "feeAssetId": null, "timestamp": 1732283685382, "version": 2, "chainId": 84, "sender": "3N7UuYar6264P58FBhVWKPQAh4Yua2hgngv", "senderPublicKey": "2fNSk5gmWbXBDTkSYSKd66xSgVvAYzrJnP9YSAFNvTwC", "proofs": [ "2ahybNdDdSfiSTEkffbucuESCtqPj25q4mabScfGbpeCEyyjjLJ7ahvoDDfXCCnSmToueWDAL6SjiGP7ceR3dxk8" ], "script": "base64:BgIbCAISAwoBGBIDCgEIEgMKAQgSAwoBCBIDCgEIcAADU0VQAgJfXwAFY2hhaW4JAMkBAgkAygECCAUEdGhpcwVieXRlcwABAAEAC3VzZHRBc3NldElkBAckbWF0Y2gwBQVjaGFpbgMJAAACAQFXBQckbWF0Y2gwASCE2nqyCAM/TtG7yo7ui5O8yYLdC136B5ao1CP5qA//uQMJAAACAQFUBQckbWF0Y2gwASBVsdifcoeC7+XjW42sBatl3ppDoS8WuwXzGreHpfHFGAkAAgECDVVua25vd24gY2hhaW4AFmRlZmF1bHRSZXN0MkFkZHJlc3NTdHIEByRtYXRjaDAFBWNoYWluAwkAAAIBAVcFByRtYXRjaDACIzNQRndZdGE4YmlFejMxenBlRmU1REpLOHdFNXRyU3BRVkY4AwkAAAIBAVQFByRtYXRjaDACIzNON1V1WWFyNjI2NFA1OEZCaFZXS1BRQWg0WXVhMmhnbmd2CQACAQINVW5rbm93biBjaGFpbgAVb2xkU3Rha2luZ0NvbnRyYWN0U3RyBAckbWF0Y2gwBQVjaGFpbgMJAAACAQFXBQckbWF0Y2gwAiMzUExuY1h0UzFVODNENmNRYkZEM0g4ckJIUExnenhTRktaMQMJAAACAQFUBQckbWF0Y2gwAiMzTkRDeUJHNXE4NUp1YVJpaWdVZUV0YWlueWpDUVQzWHBabQkAAgECDVVua25vd24gY2hhaW4BD2dldFN0cmluZ09yRmFpbAIHYWRkcmVzcwNrZXkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQdhZGRyZXNzBQNrZXkJALkJAgkAzAgCAgptYW5kYXRvcnkgCQDMCAIJAKUIAQUHYWRkcmVzcwkAzAgCAgEuCQDMCAIFA2tleQkAzAgCAg8gaXMgbm90IGRlZmluZWQFA25pbAIAABBJZHhDZmdBY3JlczJEYXBwAAEADUlkeENmZ1dsZ0RhcHAAAgAUSWR4Q2ZnUHV6emxlUG9vbERhcHAABAAUSWR4Q2ZnSW52ZXN0RnVuZERhcHAABQEKa2V5UmVzdENmZwACDiVzX19yZXN0Q29uZmlnAQ9rZXlSZXN0MkFkZHJlc3MAAg0lc19fcmVzdDJBZGRyARFyZWFkUmVzdENmZ09yRmFpbAEEcmVzdAkAvAkCCQEPZ2V0U3RyaW5nT3JGYWlsAgUEcmVzdAkBCmtleVJlc3RDZmcABQNTRVABGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIIcmVzdDJDZmcDaWR4CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQhyZXN0MkNmZwUDaWR4CQCsAgICKlJlc3QgY2ZnIGRvZXNuJ3QgY29udGFpbiBhZGRyZXNzIGF0IGluZGV4IAkApAMBBQNpZHgADXJlc3QyQ29udHJhY3QJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwkBD2tleVJlc3QyQWRkcmVzcwAFFmRlZmF1bHRSZXN0MkFkZHJlc3NTdHIACHJlc3QyQ2ZnCQERcmVhZFJlc3RDZmdPckZhaWwBBQ1yZXN0MkNvbnRyYWN0AA5hY3JlczJDb250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFCHJlc3QyQ2ZnBRBJZHhDZmdBY3JlczJEYXBwAAt3bGdDb250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFCHJlc3QyQ2ZnBQ1JZHhDZmdXbGdEYXBwABJwdXp6bGVQb29sQ29udHJhY3QJARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCBQhyZXN0MkNmZwUUSWR4Q2ZnUHV6emxlUG9vbERhcHAAEmludmVzdEZ1bmRDb250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFCHJlc3QyQ2ZnBRRJZHhDZmdJbnZlc3RGdW5kRGFwcAATb2xkQWNyZXNDb250cmFjdEtleQIQb2xkQWNyZXNDb250cmFjdAEVa2V5TGFzdFdlZWtUeElkQnlVc2VyAQRhZGRyCQCsAgICE2xhc3RXZWVrVHhJZEJ5VXNlcl8FBGFkZHIBFGtleUN1cldlZWtUeElkQnlVc2VyAQRhZGRyCQCsAgICEmN1cldlZWtUeElkQnlVc2VyXwUEYWRkcgANd2xnQXNzZXRJZEtleQILd2xnX2Fzc2V0SWQACndsZ0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnAgCBQt3bGdDb250cmFjdAUNd2xnQXNzZXRJZEtleQIYV0xHT0xEIGlzIG5vdCBpc3N1ZWQgeWV0AA9hY3Jlc0Fzc2V0SWRLZXkCDGFjcmVzQXNzZXRJZAAMYWNyZXNBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJwIAgUOYWNyZXMyQ29udHJhY3QFD2FjcmVzQXNzZXRJZEtleQIXQUNSRVMgaXMgbm90IGlzc3VlZCB5ZXQBFGtleVN0YWtlZER1Y2tCeU93bmVyAQlvd25lckFkZHIJAKwCAgISc3Rha2VkRHVja0J5T3duZXJfBQlvd25lckFkZHIBFmtleUFkZHJlc3NUb0N1c3RvbU5hbWUBBGFkZHIJAKwCAgIYYWNjb3VudEN1c3RvbU5hbWVCeUFkZHJfBQRhZGRyAQ9rZXlBZGRyZXNzUmVmQnkBBGFkZHIJAKwCAgIJYWNjUmVmQnlfBQRhZGRyARNrZXlBZGRyZXNzUmVmZXJyYWxzAQRhZGRyCQCsAgICDWFjY1JlZmVycmFsc18FBGFkZHIBDGFzVHVwbGU0SW50cwEDdmFsBAckbWF0Y2gwBQN2YWwDCQABAgUHJG1hdGNoMAIUKEludCwgSW50LCBJbnQsIEludCkEAXQFByRtYXRjaDAFAXQJAAIBAiZmYWlsIHRvIGNhc3QgaW50byAoSW50LCBJbnQsIEludCwgSW50KQEMYXNUdXBsZTNJbnRzAQN2YWwEByRtYXRjaDAFA3ZhbAMJAAECBQckbWF0Y2gwAg8oSW50LCBJbnQsIEludCkEAXQFByRtYXRjaDAFAXQJAAIBAiFmYWlsIHRvIGNhc3QgaW50byAoSW50LCBJbnQsIEludCkBDGFzVHVwbGUySW50cwEDdmFsBAckbWF0Y2gwBQN2YWwDCQABAgUHJG1hdGNoMAIKKEludCwgSW50KQQBdAUHJG1hdGNoMAUBdAkAAgECHGZhaWwgdG8gY2FzdCBpbnRvIChJbnQsIEludCkAA002XwDAhD0AA004XwCAwtcvAApURUFNX1NIQVJFAMCaDAAOQUNUSVZJVFlfU0hBUkUAoI0GAAxQTEFZRVJfU0hBUkUAgLUYAAtZRUFSX01JTExJUwCAhuvHdQAGREFZX01TAIC4mSkACkRBWV9CTE9DS1MAoAsAC1dFRUtfQkxPQ0tTAOBOAAdJU1NVRTEwAICU69wDAA9QTEFZRVJTMTBfU0hBUkUAgOowABFNQVJLRVRJTkcxMF9TSEFSRQCgjQYADFRFQU0xMF9TSEFSRQCgjQYAEU5FV19TVEFLSU5HX1NUQVJUAIDzuMKxMgAKdGVhbUFkcktleQIIdGVhbUFkZHIADmxhc3RUZWFtVGltS2V5AhRsYXN0Q2xhaW1lZFRpbWVfdGVhbQAOdGVhbUFtdExlZnRLZXkCDnRlYW1BbW91bnRMZWZ0ABRsYXN0QWN0aXZpdGllc1RpbUtleQIabGFzdENsYWltZWRUaW1lX2FjdGl2aXRpZXMADWFjdEFtdExlZnRLZXkCFGFjdGl2aXRpZXNBbW91bnRMZWZ0ABFzdGFrZXJzQW10TGVmdEtleQIRc3Rha2Vyc0Ftb3VudExlZnQBFmtleUxhc3RDbGFpbVRpbWVCeVVzZXIBBGFkZHIJAKwCAgIUbGFzdENsYWltZWRUaW1lVXNlcl8FBGFkZHIBDWRpc3RyQnlQZXJpb2QCDGlzc3VlZEFtb3VudAZwZXJpb2QJAGsDBQxpc3N1ZWRBbW91bnQJAGgCBQxQTEFZRVJfU0hBUkUJAGQCBQZwZXJpb2QAAQkAaAIABgUDTTZfABF3bGdJc3N1ZTEwVGltZUtleQIPd2xnX2lzc3VlMTBUaW1lAA53bGdJc3N1ZVRpbUtleQINd2xnX2lzc3VlVGltZQAPd2xnSXNzdWVkQW10S2V5AhB3bGdfaXNzdWVkQW1vdW50AA56Yklzc3VlZEFtdEtleQISemJpbGxfaXNzdWVkQW1vdW50ARdrZXlBY3Jlc1N0YWtlZEFtdEJ5VXNlcgEEYWRkcgkArAICAhhhY3Jlc1N0YWtlZEFtb3VudEJ5VXNlcl8FBGFkZHIAEmFjcmVzU3Rha2RUb3RhbEtleQIWYWNyZXNTdGFrZWRBbW91bnRUb3RhbAAUdG90YWxGYXJtaW5nUG93ZXJLZXkCEXRvdGFsRmFybWluZ1Bvd2VyAAlkYXBwMlJlc3QAAAAMZGFwcDJTdGFraW5nAAEACGRhcHAyV2xnAAIAC2RhcHAyUHV6emxlAAMAD2RhcHAySW52ZXN0RnVuZAAEAApsZXZlbEFjcmVzCQDMCAIAAAkAzAgCAAoJAMwIAgAUCQDMCAIAKAkAzAgCAFAJAMwIAgCWAQkAzAgCAPoBCQDMCAIAkAMJAMwIAgC8BQkAzAgCAOgHBQNuaWwBD2dldExldmVsQnlBY3JlcwEFYWNyZXMEA2FjcgkAaQIJAGQCBQVhY3JlcwD/wdcvBQNNOF8KAQdjaGVja2VyAgNhY2MEaXRlbQMJAGcCBQRpdGVtBQNhY3IFA2FjYwkAZAIFA2FjYwABCgACJGwFCmxldmVsQWNyZXMKAAIkcwkAkAMBBQIkbAoABSRhY2MwAAAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBB2NoZWNrZXICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDEwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoBFmdldEZhcm1pbmdQb3dlckJ5QWNyZXMBBWFjcmVzCQBoAgkAaAIFBWFjcmVzABQJAGQCCQEPZ2V0TGV2ZWxCeUFjcmVzAQUFYWNyZXMABAEQZ2V0RmFybWluZ1Bvd2VycwISdXNlckFkZHJTdHJPckVtcHR5DmFjcmVzMkNvbnRyYWN0BAd0b3RhbEZQCQELdmFsdWVPckVsc2UCCQCaCAIFDmFjcmVzMkNvbnRyYWN0BRR0b3RhbEZhcm1pbmdQb3dlcktleQAABAl1c2VyQWNyZXMJAQt2YWx1ZU9yRWxzZQIJAJoIAgUOYWNyZXMyQ29udHJhY3QJARdrZXlBY3Jlc1N0YWtlZEFtdEJ5VXNlcgEFEnVzZXJBZGRyU3RyT3JFbXB0eQAABAZ1c2VyRlAJARZnZXRGYXJtaW5nUG93ZXJCeUFjcmVzAQUJdXNlckFjcmVzCQDMCAIFB3RvdGFsRlAJAMwIAgUGdXNlckZQBQNuaWwBCmtleVVzZXJCZXQBBGFkZHIJAKwCAgIIdXNlckJldF8FBGFkZHIBEmtleVVzZXJXZWVrVGlja2V0cwIEYWRkcgR3ZWVrCQCsAgIJAKwCAgkArAICAhB1c2VyV2Vla1RpY2tldHNfBQRhZGRyAgFfCQCkAwEFBHdlZWsBE2tleVRvdGFsV2Vla1RpY2tldHMBBHdlZWsJAKwCAgIRdG90YWxXZWVrVGlja2V0c18JAKQDAQUEd2VlawEKd2lubmluZ0JldAEDZGF5CQBqAgkAsQkBCQEFdmFsdWUBCAkBBXZhbHVlAQkA7QcBCQBoAgUDZGF5BQpEQVlfQkxPQ0tTA3ZyZgAEAAppZHhUb3RhbEZQAAAACWlkeFVzZXJGUAABAAtpeFdsZ0Ftb3VudAAAAAhpeFdsZ1dsZwABAAppeFdsZ1ByaWNlAAIACml4V2xnRnVuZHMAAwANaXhXbGdBY3Rpdml0eQAEAAtpeFdsZ0FjcmVzMgAFAA5peFdsZ0FyYml0cmFnZQAGAAlpeFdsZ1Bvb2wABwAOaXhXbGdJc3N1ZVRpbWUACAAUaXhXbGdMYXN0VGVhbUFjdFRpbWUACQAOaXhXbGdUZWFtVG90YWwACgAPaXhXbGdUZWFtQW1MZWZ0AAsAE2l4V2xnVGVhbUFtQXZhaWxOb3cADAAPaXhXbGdUZWFtV2xnb2xkAA0ADWl4V2xnQWN0VG90YWwADgAOaXhXbGdBY3RBbUxlZnQADwASaXhXbGdBY3RBbUF2YWlsTm93ABAADml4V2xnQWN0V2xnb2xkABEADml4V2xnQ3VyUGVyaW9kABIAEGl4V2xnQW1MZWZ0VG90YWwAEwAaaXhXbGdDdXJQZXJpb2REaXN0cmlidXRpb24AFAARaXhXbGdMYXN0VXNlclRpbWUAFQAVaXhXbGdJbnZlc3RGdW5kQW1vdW50ABYAE2l4V2xnVXNlckFtQXZhaWxOb3cAFwAQaXhXbGdFZmZVc2VyVGltZQAYABJpeFdsZ0lzc3VlMTBBbW91bnQAGQAbaXhXbGdNYXJrZXRpbmdJc3N1ZTEwQW1vdW50ABoAFml4V2xnVGVhbUlzc3VlMTBBbW91bnQAGwAPaXhXbGdVc2VyMTBwYXJ0ABwAEGl4V2xnSXNzdWUxMFRpbWUAHQAWaXhXbGdUb3RhbEZhcm1pbmdQb3dlcgAeABVpeFdsZ0FjcmVzU3Rha2VkVG90YWwAHwEMZ2V0V2xnU3RhdHMyBAt1c2VyQWRkck9wdAljb250cmFjdHMGdXNkdElkFXVzZHRCYWxhbmNlQ29ycmVjdGlvbgQMaXNzdWVkQW1vdW50CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgkAkQMCBQljb250cmFjdHMFCGRhcHAyV2xnBQ93bGdJc3N1ZWRBbXRLZXkCGFdMR09MRCBpcyBub3QgaXNzdWVkIHlldAQHcmVzdFVzZAkA8AcCCQCRAwIFCWNvbnRyYWN0cwUJZGFwcDJSZXN0BQZ1c2R0SWQEBndsZ1VzZAkAZQIJAPAHAgkAkQMCBQljb250cmFjdHMFCGRhcHAyV2xnBQZ1c2R0SWQFFXVzZHRCYWxhbmNlQ29ycmVjdGlvbgQJcHV6emxlVXNkCQDwBwIJAJEDAgUJY29udHJhY3RzBQtkYXBwMlB1enpsZQUGdXNkdElkBAlhY3JlczJVc2QJAPAHAgkAkQMCBQljb250cmFjdHMFDGRhcHAyU3Rha2luZwUGdXNkdElkBBFpbnZlc3RGbmRDb250cmFjdAkAkQMCBQljb250cmFjdHMFD2RhcHAySW52ZXN0RnVuZAQPaW52ZXN0RnVuZFRvdGFsCQBkAgkA8AcCBRFpbnZlc3RGbmRDb250cmFjdAUGdXNkdElkCQELdmFsdWVPckVsc2UCCQCaCAIFEWludmVzdEZuZENvbnRyYWN0BQ56Yklzc3VlZEFtdEtleQAABA10b3RhbEZ1bmRzVXNkCQBkAgkAZAIFCWFjcmVzMlVzZAUGd2xnVXNkBQ9pbnZlc3RGdW5kVG90YWwEBXdsZ0lkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJwIAgkAkQMCBQljb250cmFjdHMFCGRhcHAyV2xnAgt3bGdfYXNzZXRJZAITTm90IGluaXRpYWxpemVkIHlldAQDbm93CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQJaXNzdWVUaW1lCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgkAkQMCBQljb250cmFjdHMFCGRhcHAyV2xnBQ53bGdJc3N1ZVRpbUtleQIPTm90IGluaXRpYWxpemVkBAZ3bGdXbGcJAPAHAgkAkQMCBQljb250cmFjdHMFCGRhcHAyV2xnBQV3bGdJZAQJdGVhbVRvdGFsCQBrAwUMaXNzdWVkQW1vdW50BQpURUFNX1NIQVJFBQNNNl8EDnRlYW1BbW91bnRMZWZ0CQELdmFsdWVPckVsc2UCCQCaCAIJAJEDAgUJY29udHJhY3RzBQhkYXBwMldsZwUOdGVhbUFtdExlZnRLZXkFCXRlYW1Ub3RhbAQMbGFzdFRlYW1UaW1lCQELdmFsdWVPckVsc2UCCQCaCAIJAJEDAgUJY29udHJhY3RzBQhkYXBwMldsZwUObGFzdFRlYW1UaW1LZXkFCWlzc3VlVGltZQQIdGVhbUFkZHIJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQV2YWx1ZQEJAJ0IAgkAkQMCBQljb250cmFjdHMFCGRhcHAyV2xnBQp0ZWFtQWRyS2V5BBZ0ZWFtQW1vdW50QXZhaWxhYmxlTm93CQCXAwEJAMwIAgkAawMFCXRlYW1Ub3RhbAkAZQIFA25vdwUMbGFzdFRlYW1UaW1lCQBoAgADBQtZRUFSX01JTExJUwkAzAgCBQ50ZWFtQW1vdW50TGVmdAUDbmlsBAp0ZWFtV2xnb2xkCQDwBwIFCHRlYW1BZGRyBQV3bGdJZAQIYWN0VG90YWwJAGsDBQxpc3N1ZWRBbW91bnQFDkFDVElWSVRZX1NIQVJFBQNNNl8EDWFjdEFtb3VudExlZnQJAQt2YWx1ZU9yRWxzZQIJAJoIAgkAkQMCBQljb250cmFjdHMFCGRhcHAyV2xnBQ1hY3RBbXRMZWZ0S2V5BQhhY3RUb3RhbAQSbGFzdEFjdGl2aXRpZXNUaW1lCQELdmFsdWVPckVsc2UCCQCaCAIJAJEDAgUJY29udHJhY3RzBQhkYXBwMldsZwUUbGFzdEFjdGl2aXRpZXNUaW1LZXkFCWlzc3VlVGltZQQVYWN0QW1vdW50QXZhaWxhYmxlTm93CQCXAwEJAMwIAgkAawMFCGFjdFRvdGFsCQBlAgUDbm93BRJsYXN0QWN0aXZpdGllc1RpbWUJAGgCAAMFC1lFQVJfTUlMTElTCQDMCAIFDWFjdEFtb3VudExlZnQFA25pbAQJYWN0V2xnb2xkCQDwBwIJAJEDAgUJY29udHJhY3RzBQlkYXBwMlJlc3QFBXdsZ0lkBAxsYXN0VXNlclRpbWUJAQt2YWx1ZU9yRWxzZQIJAJoIAgkAkQMCBQljb250cmFjdHMFCGRhcHAyV2xnCQEWa2V5TGFzdENsYWltVGltZUJ5VXNlcgEFC3VzZXJBZGRyT3B0BQlpc3N1ZVRpbWUEDmxhc3RVc2VyUGVyaW9kCQBpAgkAZQIFDGxhc3RVc2VyVGltZQUJaXNzdWVUaW1lBQtZRUFSX01JTExJUwQKbm93TGltaXRlZAkAlwMBCQDMCAIFA25vdwkAzAgCCQBkAgUJaXNzdWVUaW1lCQBoAgADBQtZRUFSX01JTExJUwUDbmlsBAljdXJQZXJpb2QJAJcDAQkAzAgCCQBpAgkAZQIFA25vdwUJaXNzdWVUaW1lBQtZRUFSX01JTExJUwkAzAgCAAIFA25pbAQDZWZmCQEQZ2V0RmFybWluZ1Bvd2VycwIFC3VzZXJBZGRyT3B0CQCRAwIFCWNvbnRyYWN0cwUMZGFwcDJTdGFraW5nBBVjdXJQZXJpb2REaXN0cmlidXRpb24JAQ1kaXN0ckJ5UGVyaW9kAgUMaXNzdWVkQW1vdW50BQljdXJQZXJpb2QEDXByZXZQZXJpb2RFbmQJAGQCBQlpc3N1ZVRpbWUJAGgCBQtZRUFSX01JTExJUwUJY3VyUGVyaW9kBBFwcmV2UHJldlBlcmlvZEVuZAkAZAIFCWlzc3VlVGltZQkAaAIFC1lFQVJfTUlMTElTCQBlAgUJY3VyUGVyaW9kAAEEAmEwCQBrAwUVY3VyUGVyaW9kRGlzdHJpYnV0aW9uCQBlAgUKbm93TGltaXRlZAUMbGFzdFVzZXJUaW1lBQtZRUFSX01JTExJUwQNdXNlckF2YWlsYWJsZQMJAAACBQ5sYXN0VXNlclBlcmlvZAUJY3VyUGVyaW9kBQJhMAMJAAACBQ5sYXN0VXNlclBlcmlvZAkAZQIFCWN1clBlcmlvZAABBAJhMQkAawMJAQ1kaXN0ckJ5UGVyaW9kAgUMaXNzdWVkQW1vdW50CQBlAgUJY3VyUGVyaW9kAAEJAGUCBQ1wcmV2UGVyaW9kRW5kBQxsYXN0VXNlclRpbWUFC1lFQVJfTUlMTElTCQBkAgUCYTEFAmEwBAJhMgkAawMJAQ1kaXN0ckJ5UGVyaW9kAgUMaXNzdWVkQW1vdW50CQBlAgUJY3VyUGVyaW9kAAIJAGUCBRFwcmV2UHJldlBlcmlvZEVuZAUMbGFzdFVzZXJUaW1lBQtZRUFSX01JTExJUwQCYTEJAQ1kaXN0ckJ5UGVyaW9kAgUMaXNzdWVkQW1vdW50CQBlAgUJY3VyUGVyaW9kAAEJAGQCCQBkAgUCYTIFAmExBQJhMAQPYW1vdW50TGVmdFRvdGFsCQELdmFsdWVPckVsc2UCCQCaCAIJAJEDAgUJY29udHJhY3RzBQhkYXBwMldsZwURc3Rha2Vyc0FtdExlZnRLZXkAAAQKdXNlckFtb3VudAMJAQIhPQIJAJEDAgUDZWZmBQppZHhUb3RhbEZQAAAJAGsDBQ11c2VyQXZhaWxhYmxlCQCRAwIFA2VmZgUJaWR4VXNlckZQCQCRAwIFA2VmZgUKaWR4VG90YWxGUAAABA9sYXN0SXNzdWUxMFRpbWUJAQt2YWx1ZU9yRWxzZQIJAJoIAgkAkQMCBQljb250cmFjdHMFCGRhcHAyV2xnBRF3bGdJc3N1ZTEwVGltZUtleQURTkVXX1NUQUtJTkdfU1RBUlQEDWlzc3VlMTBBbW91bnQJAGsDBQdJU1NVRTEwCQCWAwEJAMwIAgkAZQIFA25vdwUPbGFzdElzc3VlMTBUaW1lCQDMCAIAAAUDbmlsBQZEQVlfTVMEFm1hcmtldGluZ0lzc3VlMTBBbW91bnQJAGsDBQ1pc3N1ZTEwQW1vdW50BRFNQVJLRVRJTkcxMF9TSEFSRQUDTTZfBBF0ZWFtSXNzdWUxMEFtb3VudAkAawMFDWlzc3VlMTBBbW91bnQFDFRFQU0xMF9TSEFSRQUDTTZfBA51c2VyMTBJbnRlcnZhbAkAlgMBCQDMCAIJAGUCBQNub3cJAJYDAQkAzAgCBRFORVdfU1RBS0lOR19TVEFSVAkAzAgCBQxsYXN0VXNlclRpbWUFA25pbAkAzAgCAAAFA25pbAQKdXNlcjEwcGFydAMJAQIhPQIJAJEDAgUDZWZmBQppZHhUb3RhbEZQAAAJAGsDCQBrAwkAawMFB0lTU1VFMTAFDnVzZXIxMEludGVydmFsBQZEQVlfTVMJAJEDAgUDZWZmBQlpZHhVc2VyRlAJAJEDAgUDZWZmBQppZHhUb3RhbEZQBQ9QTEFZRVJTMTBfU0hBUkUFA002XwAABA5uZXdJc3N1ZTEwVGltZQkAlgMBCQDMCAIFEU5FV19TVEFLSU5HX1NUQVJUCQDMCAIFA25vdwUDbmlsBBBhY3Jlc1N0YWtlZFRvdGFsCQELdmFsdWVPckVsc2UCCQCaCAIJAJEDAgUJY29udHJhY3RzBQxkYXBwMlN0YWtpbmcFEmFjcmVzU3Rha2RUb3RhbEtleQAACQDMCAIFDGlzc3VlZEFtb3VudAkAzAgCBQZ3bGdXbGcJAMwIAgkAawMFDXRvdGFsRnVuZHNVc2QFA004XwUMaXNzdWVkQW1vdW50CQDMCAIFDXRvdGFsRnVuZHNVc2QJAMwIAgUHcmVzdFVzZAkAzAgCBQlhY3JlczJVc2QJAMwIAgUGd2xnVXNkCQDMCAIFCXB1enpsZVVzZAkAzAgCBQlpc3N1ZVRpbWUJAMwIAgUMbGFzdFRlYW1UaW1lCQDMCAIFCXRlYW1Ub3RhbAkAzAgCBQ50ZWFtQW1vdW50TGVmdAkAzAgCBRZ0ZWFtQW1vdW50QXZhaWxhYmxlTm93CQDMCAIFCnRlYW1XbGdvbGQJAMwIAgUIYWN0VG90YWwJAMwIAgUNYWN0QW1vdW50TGVmdAkAzAgCBRVhY3RBbW91bnRBdmFpbGFibGVOb3cJAMwIAgUJYWN0V2xnb2xkCQDMCAIFCWN1clBlcmlvZAkAzAgCBQ9hbW91bnRMZWZ0VG90YWwJAMwIAgUVY3VyUGVyaW9kRGlzdHJpYnV0aW9uCQDMCAIFDGxhc3RVc2VyVGltZQkAzAgCBQ9pbnZlc3RGdW5kVG90YWwJAMwIAgUKdXNlckFtb3VudAkAzAgCBQpub3dMaW1pdGVkCQDMCAIFDWlzc3VlMTBBbW91bnQJAMwIAgUWbWFya2V0aW5nSXNzdWUxMEFtb3VudAkAzAgCBRF0ZWFtSXNzdWUxMEFtb3VudAkAzAgCBQp1c2VyMTBwYXJ0CQDMCAIFDm5ld0lzc3VlMTBUaW1lCQDMCAIJAJEDAgUDZWZmBQppZHhUb3RhbEZQCQDMCAIFEGFjcmVzU3Rha2VkVG90YWwFA25pbAEOd2FsbGV0SW50ZXJuYWwBDnVzZXJBZGRyZXNzT3B0BARhZGRyCQCmCAEFDnVzZXJBZGRyZXNzT3B0BAdiYWxhbmNlAwkBCWlzRGVmaW5lZAEFBGFkZHIJAO8HAQkBBXZhbHVlAQUEYWRkcgkBDkJhbGFuY2VEZXRhaWxzBAAAAAAAAAAABAt1c2R0QmFsYW5jZQMJAQlpc0RlZmluZWQBBQRhZGRyCQDwBwIJAQV2YWx1ZQEFBGFkZHIFC3VzZHRBc3NldElkAAAEDXdsZ29sZEJhbGFuY2UDCQEJaXNEZWZpbmVkAQUEYWRkcgkA8AcCCQEFdmFsdWUBBQRhZGRyBQp3bGdBc3NldElkAAAECmN1c3RvbU5hbWUJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUOYWNyZXMyQ29udHJhY3QJARZrZXlBZGRyZXNzVG9DdXN0b21OYW1lAQUOdXNlckFkZHJlc3NPcHQFDnVzZXJBZGRyZXNzT3B0BAhyZWZCeUtleQkBD2tleUFkZHJlc3NSZWZCeQEFDnVzZXJBZGRyZXNzT3B0BAVyZWZCeQkAnQgCBQ5hY3JlczJDb250cmFjdAUIcmVmQnlLZXkEBHJlZnMJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUOYWNyZXMyQ29udHJhY3QJARNrZXlBZGRyZXNzUmVmZXJyYWxzAQUOdXNlckFkZHJlc3NPcHQCAAQIbGFzdFR4SWQJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUOYWNyZXMyQ29udHJhY3QJARVrZXlMYXN0V2Vla1R4SWRCeVVzZXIBBQ51c2VyQWRkcmVzc09wdAIABAdjdXJUeElkCQELdmFsdWVPckVsc2UCCQCdCAIFDmFjcmVzMkNvbnRyYWN0CQEUa2V5Q3VyV2Vla1R4SWRCeVVzZXIBBQ51c2VyQWRkcmVzc09wdAIABAxhY3Jlc0JhbGFuY2UDCQEJaXNEZWZpbmVkAQUEYWRkcgkA8AcCCQEFdmFsdWUBBQRhZGRyBQxhY3Jlc0Fzc2V0SWQAAAQLc3Rha2VkQWNyZXMJAQt2YWx1ZU9yRWxzZQIJAJoIAgUOYWNyZXMyQ29udHJhY3QJARdrZXlBY3Jlc1N0YWtlZEFtdEJ5VXNlcgEFDnVzZXJBZGRyZXNzT3B0AAAEA2x2bAkBD2dldExldmVsQnlBY3JlcwEFC3N0YWtlZEFjcmVzBAJmcAkBEGdldEZhcm1pbmdQb3dlcnMCBQ51c2VyQWRkcmVzc09wdAUOYWNyZXMyQ29udHJhY3QEDmFjcmVzVG9OZXh0THZsAwkAZwIFA2x2bAkAkAMBBQpsZXZlbEFjcmVzAAAJAGUCCQBkAgkAaAIJAJEDAgUKbGV2ZWxBY3JlcwUDbHZsBQNNOF8AAQULc3Rha2VkQWNyZXMJAMwIAgkArAICAhIlcyVzX19jdXN0b21OYW1lX18FCmN1c3RvbU5hbWUJAMwIAgkArAICAhIlcyVzX19yZWZlcnJlZEJ5X18JAQt2YWx1ZU9yRWxzZQIFBXJlZkJ5AgAJAMwIAgkArAICAhElcyVzX19yZWZlcnJhbHNfXwUEcmVmcwkAzAgCCQCsAgICFCVzJXNfX2xhc3RXZWVrVHhJZF9fBQhsYXN0VHhJZAkAzAgCCQCsAgICEyVzJXNfX2N1cldlZWtUeElkX18FCGxhc3RUeElkCQDMCAIJAKwCAgIUJXMlZF9fd2F2ZXNCYWxhbmNlX18JAKQDAQgFB2JhbGFuY2UJYXZhaWxhYmxlCQDMCAIJAKwCAgITJXMlZF9fdXNkdEJhbGFuY2VfXwkApAMBBQt1c2R0QmFsYW5jZQkAzAgCCQCsAgICFSVzJWRfX3dsZ29sZEJhbGFuY2VfXwkApAMBBQ13bGdvbGRCYWxhbmNlCQDMCAIJAKwCAgIUJXMlZF9fYWNyZXNCYWxhbmNlX18JAKQDAQUMYWNyZXNCYWxhbmNlCQDMCAIJAKwCAgITJXMlZF9fc3Rha2VkQWNyZXNfXwkApAMBBQtzdGFrZWRBY3JlcwkAzAgCCQCsAgICEiVzJWRfX2N1cnJlbnRMdmxfXwkApAMBBQNsdmwJAMwIAgkArAICAhYlcyVkX19hY3Jlc1RvTmV4dEx2bF9fCQCkAwEFDmFjcmVzVG9OZXh0THZsCQDMCAIJAKwCAgIYJXMlZF9fdXNlckZhcm1pbmdQb3dlcl9fCQCkAwEJAJEDAgUCZnAFCWlkeFVzZXJGUAkAzAgCCQCsAgICGSVzJWRfX3RvdGFsRmFybWluZ1Bvd2VyX18JAKQDAQkAkQMCBQJmcAUKaWR4VG90YWxGUAUDbmlsBQFpAQ1jb25zdHJ1Y3RvclYxAQljb250cmFjdHMDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAhJwZXJtaXNzaW9ucyBkZW5pZWQKAQpkZXNjcmlwdG9yAgNhY2MLaWdub3JlZEl0ZW0JAKwCAgUDYWNjAgIlcwQFZGVzY3IKAAIkbAUJY29udHJhY3RzCgACJHMJAJADAQUCJGwKAAUkYWNjMAIACgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQpkZXNjcmlwdG9yAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQprZXlSZXN0Q2ZnAAkAuQkCCQDMCAIFBWRlc2NyBQljb250cmFjdHMFA1NFUAkAzAgCCQELU3RyaW5nRW50cnkCCQEPa2V5UmVzdDJBZGRyZXNzAAkApQgBBQR0aGlzBQNuaWwBaQESd2FsbGV0SW5mb1JFQURPTkxZAQ51c2VyQWRkcmVzc09wdAkAlAoCBQNuaWwJAQ53YWxsZXRJbnRlcm5hbAEFDnVzZXJBZGRyZXNzT3B0AWkBFmNvbnZlcnNpb25JbmZvUkVBRE9OTFkBDnVzZXJBZGRyZXNzT3B0BA9vbGRBY3Jlc0FkZHJlc3MJARFAZXh0ck5hdGl2ZSgxMDYyKQEJARFAZXh0ck5hdGl2ZSgxMDUzKQIFDmFjcmVzMkNvbnRyYWN0BRNvbGRBY3Jlc0NvbnRyYWN0S2V5BAskdDA0Njg5NDgxMQkBDGFzVHVwbGUySW50cwEJAPwHBAUPb2xkQWNyZXNBZGRyZXNzAhd1bnN0YWtlQWxsQWNyZXNSRUFET05MWQkAzAgCBQ51c2VyQWRkcmVzc09wdAUDbmlsBQNuaWwEDXVuc3Rha2VkQWNyZXMIBQskdDA0Njg5NDgxMQJfMQQMY2xhaW1lZEFjcmVzCAULJHQwNDY4OTQ4MTECXzIECyR0MDQ4MTQ0OTYzCQEMYXNUdXBsZTRJbnRzAQkA/AcEBQ5hY3JlczJDb250cmFjdAIUdW5zdGFrZUxhbmRzUkVBRE9OTFkJAMwIAgUOdXNlckFkZHJlc3NPcHQFA25pbAUDbmlsBA9hY3Jlc0Zyb21QaWVjZXMIBQskdDA0ODE0NDk2MwJfMQQMYWNyZXNGcm9tUmVzCAULJHQwNDgxNDQ5NjMCXzIEDGFjcmVzRnJvbU1hdAgFCyR0MDQ4MTQ0OTYzAl8zBA1hY3Jlc0Zyb21Qcm9kCAULJHQwNDgxNDQ5NjMCXzQEEW9sZFN0YWtpbmdBZGRyZXNzCQERQGV4dHJOYXRpdmUoMTA2MikBBRVvbGRTdGFraW5nQ29udHJhY3RTdHIEC2R1Y2tBc3NldElkCQELdmFsdWVPckVsc2UCCQCdCAIFEW9sZFN0YWtpbmdBZGRyZXNzCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQ51c2VyQWRkcmVzc09wdAIABAskdDA1MTQxNTM2MwMJAQIhPQIFC2R1Y2tBc3NldElkAgAJAQxhc1R1cGxlM0ludHMBCQD8BwQFEW9sZFN0YWtpbmdBZGRyZXNzAhN1bnN0YWtlRHVja1JFQURPTkxZCQDMCAIFC2R1Y2tBc3NldElkCQDMCAIFDnVzZXJBZGRyZXNzT3B0BQNuaWwFA25pbAkAlQoDAAAAAAAABBBhY3Jlc0Zyb21EdWNrUmVzCAULJHQwNTE0MTUzNjMCXzEEEGFjcmVzRnJvbUR1Y2tNYXQIBQskdDA1MTQxNTM2MwJfMgQRYWNyZXNGcm9tRHVja1Byb2QIBQskdDA1MTQxNTM2MwJfMwkAlAoCBQNuaWwJAMwIAgkArAICAhUlcyVkX191bnN0YWtlZEFjcmVzX18JAKQDAQUNdW5zdGFrZWRBY3JlcwkAzAgCCQCsAgICFCVzJWRfX2NsYWltZWRBY3Jlc19fCQCkAwEFDGNsYWltZWRBY3JlcwkAzAgCCQCsAgICFyVzJWRfX2FjcmVzRnJvbVBpZWNlc19fCQCkAwEFD2FjcmVzRnJvbVBpZWNlcwkAzAgCCQCsAgICFCVzJWRfX2FjcmVzRnJvbVJlc19fCQCkAwEFDGFjcmVzRnJvbVJlcwkAzAgCCQCsAgICFCVzJWRfX2FjcmVzRnJvbU1hdF9fCQCkAwEFDGFjcmVzRnJvbU1hdAkAzAgCCQCsAgICFSVzJWRfX2FjcmVzRnJvbVByb2RfXwkApAMBBQ1hY3Jlc0Zyb21Qcm9kCQDMCAIJAKwCAgIYJXMlZF9fYWNyZXNGcm9tRHVja1Jlc19fCQCkAwEFEGFjcmVzRnJvbUR1Y2tSZXMJAMwIAgkArAICAhglcyVkX19hY3Jlc0Zyb21EdWNrTWF0X18JAKQDAQUQYWNyZXNGcm9tRHVja01hdAkAzAgCCQCsAgICGSVzJWRfX2FjcmVzRnJvbUR1Y2tQcm9kX18JAKQDAQURYWNyZXNGcm9tRHVja1Byb2QFA25pbAFpARB3bGdTdGF0c1JFQURPTkxZAQt1c2VyQWRkck9wdAQIY3VyU3RhdHMJAQxnZXRXbGdTdGF0czIEBQt1c2VyQWRkck9wdAkAzAgCBQ1yZXN0MkNvbnRyYWN0CQDMCAIFDmFjcmVzMkNvbnRyYWN0CQDMCAIFC3dsZ0NvbnRyYWN0CQDMCAIFEnB1enpsZVBvb2xDb250cmFjdAkAzAgCBRJpbnZlc3RGdW5kQ29udHJhY3QFA25pbAULdXNkdEFzc2V0SWQAAAkAlAoCBQNuaWwJAMwIAgkArAICAhElcyVkX193bGdBbW91bnRfXwkApAMBCQCRAwIFCGN1clN0YXRzBQtpeFdsZ0Ftb3VudAkAzAgCCQCsAgICDiVzJWRfX3dsZ1dsZ19fCQCkAwEJAJEDAgUIY3VyU3RhdHMFCGl4V2xnV2xnCQDMCAIJAKwCAgIQJXMlZF9fd2xnUHJpY2VfXwkApAMBCQCRAwIFCGN1clN0YXRzBQppeFdsZ1ByaWNlCQDMCAIJAKwCAgIRJXMlZF9fdXNkdEZ1bmRzX18JAKQDAQkAkQMCBQhjdXJTdGF0cwUKaXhXbGdGdW5kcwkAzAgCCQCsAgICFCVzJWRfX3VzZHRBY3Rpdml0eV9fCQCkAwEJAJEDAgUIY3VyU3RhdHMFDWl4V2xnQWN0aXZpdHkJAMwIAgkArAICAhMlcyVkX191c2R0U3Rha2luZ19fCQCkAwEJAJEDAgUIY3VyU3RhdHMFC2l4V2xnQWNyZXMyCQDMCAIJAKwCAgIVJXMlZF9fdXNkdEFyYml0cmFnZV9fCQCkAwEJAJEDAgUIY3VyU3RhdHMFDml4V2xnQXJiaXRyYWdlCQDMCAIJAKwCAgIQJXMlZF9fdXNkdFBvb2xfXwkApAMBCQCRAwIFCGN1clN0YXRzBQlpeFdsZ1Bvb2wJAMwIAgkArAICAhQlcyVkX193bGdJc3N1ZVRpbWVfXwkApAMBCQCRAwIFCGN1clN0YXRzBQ5peFdsZ0lzc3VlVGltZQkAzAgCCQCsAgICGiVzJWRfX3dsZ0xhc3RUZWFtQWN0VGltZV9fCQCkAwEJAJEDAgUIY3VyU3RhdHMFFGl4V2xnTGFzdFRlYW1BY3RUaW1lCQDMCAIJAKwCAgIUJXMlZF9fd2xnVGVhbVRvdGFsX18JAKQDAQkAkQMCBQhjdXJTdGF0cwUOaXhXbGdUZWFtVG90YWwJAMwIAgkArAICAhUlcyVkX193bGdUZWFtQW1MZWZ0X18JAKQDAQkAkQMCBQhjdXJTdGF0cwUPaXhXbGdUZWFtQW1MZWZ0CQDMCAIJAKwCAgIZJXMlZF9fd2xnVGVhbUFtQXZhaWxOb3dfXwkApAMBCQCRAwIFCGN1clN0YXRzBRNpeFdsZ1RlYW1BbUF2YWlsTm93CQDMCAIJAKwCAgIVJXMlZF9fd2xnVGVhbVdsZ29sZF9fCQCkAwEJAJEDAgUIY3VyU3RhdHMFD2l4V2xnVGVhbVdsZ29sZAkAzAgCCQCsAgICEyVzJWRfX3dsZ0FjdFRvdGFsX18JAKQDAQkAkQMCBQhjdXJTdGF0cwUNaXhXbGdBY3RUb3RhbAkAzAgCCQCsAgICFCVzJWRfX3dsZ0FjdEFtTGVmdF9fCQCkAwEJAJEDAgUIY3VyU3RhdHMFDml4V2xnQWN0QW1MZWZ0CQDMCAIJAKwCAgIYJXMlZF9fd2xnQWN0QW1BdmFpbE5vd19fCQCkAwEJAJEDAgUIY3VyU3RhdHMFEml4V2xnQWN0QW1BdmFpbE5vdwkAzAgCCQCsAgICFCVzJWRfX3dsZ0FjdFdsZ29sZF9fCQCkAwEJAJEDAgUIY3VyU3RhdHMFDml4V2xnQWN0V2xnb2xkCQDMCAIJAKwCAgIUJXMlZF9fd2xnQ3VyUGVyaW9kX18JAKQDAQkAkQMCBQhjdXJTdGF0cwUOaXhXbGdDdXJQZXJpb2QJAMwIAgkArAICAhYlcyVkX193bGdBbUxlZnRUb3RhbF9fCQCkAwEJAJEDAgUIY3VyU3RhdHMFEGl4V2xnQW1MZWZ0VG90YWwJAMwIAgkArAICAiAlcyVkX193bGdDdXJQZXJpb2REaXN0cmlidXRpb25fXwkApAMBCQCRAwIFCGN1clN0YXRzBRppeFdsZ0N1clBlcmlvZERpc3RyaWJ1dGlvbgkAzAgCCQCsAgICFyVzJWRfX3dsZ0xhc3RVc2VyVGltZV9fCQCkAwEJAJEDAgUIY3VyU3RhdHMFEWl4V2xnTGFzdFVzZXJUaW1lCQDMCAIJAKwCAgIaJXMlZF9fd2xnSW52ZXN0RnVuZFRvdGFsX18JAKQDAQkAkQMCBQhjdXJTdGF0cwUVaXhXbGdJbnZlc3RGdW5kQW1vdW50CQDMCAIJAKwCAgIZJXMlZF9fd2xnVXNlckFtQXZhaWxOb3dfXwkApAMBCQCRAwIFCGN1clN0YXRzBRNpeFdsZ1VzZXJBbUF2YWlsTm93CQDMCAIJAKwCAgIWJXMlZF9fd2xnRWZmVXNlclRpbWVfXwkApAMBCQCRAwIFCGN1clN0YXRzBRBpeFdsZ0VmZlVzZXJUaW1lCQDMCAIJAKwCAgIaJXMlZF9fd2xnSXNzdWUxMEF2YWlsTm93X18JAKQDAQkAkQMCBQhjdXJTdGF0cwUSaXhXbGdJc3N1ZTEwQW1vdW50CQDMCAIJAKwCAgIjJXMlZF9fd2xnTWFya2V0aW5nSXNzdWUxMEF2YWlsTm93X18JAKQDAQkAkQMCBQhjdXJTdGF0cwUbaXhXbGdNYXJrZXRpbmdJc3N1ZTEwQW1vdW50CQDMCAIJAKwCAgIeJXMlZF9fd2xnVGVhbUlzc3VlMTBBdmFpbE5vd19fCQCkAwEJAJEDAgUIY3VyU3RhdHMFFml4V2xnVGVhbUlzc3VlMTBBbW91bnQJAMwIAgkArAICAh4lcyVkX193bGdVc2VySXNzdWUxMEF2YWlsTm93X18JAKQDAQkAkQMCBQhjdXJTdGF0cwUPaXhXbGdVc2VyMTBwYXJ0CQDMCAIJAKwCAgIaJXMlZF9fd2xnTGFzdElzc3VlMTBUaW1lX18JAKQDAQkAkQMCBQhjdXJTdGF0cwUQaXhXbGdJc3N1ZTEwVGltZQkAzAgCCQCsAgICHCVzJWRfX3dsZ1RvdGFsRmFybWluZ1Bvd2VyX18JAKQDAQkAkQMCBQhjdXJTdGF0cwUWaXhXbGdUb3RhbEZhcm1pbmdQb3dlcgkAzAgCCQCsAgICGyVzJWRfX3dsZ0FjcmVzU3Rha2VkVG90YWxfXwkApAMBCQCRAwIFCGN1clN0YXRzBRVpeFdsZ0FjcmVzU3Rha2VkVG90YWwFA25pbAFpARRsb3R0ZXJ5U3RhdHNSRUFET05MWQELdXNlckFkZHJPcHQEBXRvZGF5CQBpAgUGaGVpZ2h0BQpEQVlfQkxPQ0tTBAR3ZWVrCQBpAgUGaGVpZ2h0BQtXRUVLX0JMT0NLUwQIbGFzdFdlZWsJAGUCBQR3ZWVrAAEEDmN1cldlZWtUaWNrZXRzCQELdmFsdWVPckVsc2UCCQCaCAIFC3dsZ0NvbnRyYWN0CQESa2V5VXNlcldlZWtUaWNrZXRzAgULdXNlckFkZHJPcHQFBHdlZWsAAAQPbGFzdFdlZWtUaWNrZXRzCQELdmFsdWVPckVsc2UCCQCaCAIFC3dsZ0NvbnRyYWN0CQESa2V5VXNlcldlZWtUaWNrZXRzAgULdXNlckFkZHJPcHQFCGxhc3RXZWVrAAAEE2N1cldlZWtUb3RhbFRpY2tldHMJAQt2YWx1ZU9yRWxzZQIJAJoIAgULd2xnQ29udHJhY3QJARNrZXlUb3RhbFdlZWtUaWNrZXRzAQUEd2VlawAABBRsYXN0V2Vla1RvdGFsVGlja2V0cwkBC3ZhbHVlT3JFbHNlAgkAmggCBQt3bGdDb250cmFjdAkBE2tleVRvdGFsV2Vla1RpY2tldHMBBQhsYXN0V2VlawAABAh1c2Vyc0JldAkBC3ZhbHVlT3JFbHNlAgkAnQgCBQt3bGdDb250cmFjdAkBCmtleVVzZXJCZXQBBQt1c2VyQWRkck9wdAIACQCUCgIFA25pbAkAzAgCCQCsAgIJAKwCAgkArAICAhYlcyVkJWRfX3RvdGFsVGlja2V0c19fCQCkAwEFFGxhc3RXZWVrVG90YWxUaWNrZXRzBQNTRVAJAKQDAQUTY3VyV2Vla1RvdGFsVGlja2V0cwkAzAgCCQCsAgIJAKwCAgkArAICAhUlcyVkJWRfX3VzZXJUaWNrZXRzX18JAKQDAQUPbGFzdFdlZWtUaWNrZXRzBQNTRVAJAKQDAQUOY3VyV2Vla1RpY2tldHMJAMwIAgkArAICAhUlcyVkX19ibG9ja2NoYWluRGF5X18JAKQDAQUFdG9kYXkJAMwIAgkArAICAhglcyVkX19ibG9ja2NoYWluTWludXRlX18JAKQDAQkAagIFBmhlaWdodAUKREFZX0JMT0NLUwkAzAgCCQCsAgICFyVzJWRfX3dpbm5pbmdCZXRUb2RheV9fCQCkAwEJAQp3aW5uaW5nQmV0AQUFdG9kYXkJAMwIAgkArAICAhAlcyVzX191c2Vyc0JldF9fBQh1c2Vyc0JldAUDbmlsAELjFRg=", "height": 3382760, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 4Xuev4osTbDLAUXdFMuN5RQfS23r7dn2e9A13ooB2HW3 Next: AvCjaHJGtztMiGkai6bR623nehv9xKK7F26ns1zJCoWa Diff:
OldNewDifferences
6969
7070 let z = "oldAcresContract"
7171
72-func A (B) = ("lastTxIdByUser_" + B)
72+func A (B) = ("lastWeekTxIdByUser_" + B)
7373
7474
75-let C = "wlg_assetId"
76-
77-let D = valueOrErrorMessage(getBinary(w, C), "WLGOLD is not issued yet")
78-
79-let E = "acresAssetId"
80-
81-let F = valueOrErrorMessage(getBinary(v, E), "ACRES is not issued yet")
82-
83-func G (H) = ("stakedDuckByOwner_" + H)
75+func C (B) = ("curWeekTxIdByUser_" + B)
8476
8577
86-func I (B) = ("accountCustomNameByAddr_" + B)
78+let D = "wlg_assetId"
79+
80+let E = valueOrErrorMessage(getBinary(w, D), "WLGOLD is not issued yet")
81+
82+let F = "acresAssetId"
83+
84+let G = valueOrErrorMessage(getBinary(v, F), "ACRES is not issued yet")
85+
86+func H (I) = ("stakedDuckByOwner_" + I)
8787
8888
89-func J (B) = ("accRefBy_" + B)
89+func J (B) = ("accountCustomNameByAddr_" + B)
9090
9191
92-func K (B) = ("accReferrals_" + B)
92+func K (B) = ("accRefBy_" + B)
9393
9494
95-func L (M) = {
96- let d = M
95+func L (B) = ("accReferrals_" + B)
96+
97+
98+func M (N) = {
99+ let d = N
97100 if ($isInstanceOf(d, "(Int, Int, Int, Int)"))
98101 then {
99- let N = d
100- N
102+ let O = d
103+ O
101104 }
102105 else throw("fail to cast into (Int, Int, Int, Int)")
103106 }
104107
105108
106-func O (M) = {
107- let d = M
109+func P (N) = {
110+ let d = N
108111 if ($isInstanceOf(d, "(Int, Int, Int)"))
109112 then {
110- let N = d
111- N
113+ let O = d
114+ O
112115 }
113116 else throw("fail to cast into (Int, Int, Int)")
114117 }
115118
116119
117-func P (M) = {
118- let d = M
120+func Q (N) = {
121+ let d = N
119122 if ($isInstanceOf(d, "(Int, Int)"))
120123 then {
121- let N = d
122- N
124+ let O = d
125+ O
123126 }
124127 else throw("fail to cast into (Int, Int)")
125128 }
126129
127130
128-let Q = 1000000
131+let R = 1000000
129132
130-let R = 100000000
133+let S = 100000000
131134
132-let S = 200000
135+let T = 200000
133136
134-let T = 100000
137+let U = 100000
135138
136-let U = 400000
139+let V = 400000
137140
138-let V = 31557600000
141+let W = 31557600000
139142
140-let W = 86400000
143+let X = 86400000
141144
142-let X = 1440
145+let Y = 1440
143146
144-let Y = 1000000000
147+let Z = 10080
145148
146-let Z = 800000
149+let aa = 1000000000
147150
148-let aa = 100000
151+let ab = 800000
149152
150-let ab = 100000
153+let ac = 100000
151154
152-let ac = 1731279600000
155+let ad = 100000
153156
154-let ad = "teamAddr"
157+let ae = 1731279600000
155158
156-let ae = "lastClaimedTime_team"
159+let af = "teamAddr"
157160
158-let af = "teamAmountLeft"
161+let ag = "lastClaimedTime_team"
159162
160-let ag = "lastClaimedTime_activities"
163+let ah = "teamAmountLeft"
161164
162-let ah = "activitiesAmountLeft"
165+let ai = "lastClaimedTime_activities"
163166
164-let ai = "stakersAmountLeft"
167+let aj = "activitiesAmountLeft"
165168
166-func aj (B) = ("lastClaimedTimeUser_" + B)
169+let ak = "stakersAmountLeft"
170+
171+func al (B) = ("lastClaimedTimeUser_" + B)
167172
168173
169-func ak (al,am) = fraction(al, (U * (am + 1)), (6 * Q))
174+func am (an,ao) = fraction(an, (V * (ao + 1)), (6 * R))
170175
171176
172-let an = "wlg_issue10Time"
177+let ap = "wlg_issue10Time"
173178
174-let ao = "wlg_issueTime"
179+let aq = "wlg_issueTime"
175180
176-let ap = "wlg_issuedAmount"
181+let ar = "wlg_issuedAmount"
177182
178-let aq = "zbill_issuedAmount"
183+let as = "zbill_issuedAmount"
179184
180-func ar (B) = ("acresStakedAmountByUser_" + B)
185+func at (B) = ("acresStakedAmountByUser_" + B)
181186
182187
183-let as = "acresStakedAmountTotal"
188+let au = "acresStakedAmountTotal"
184189
185-let at = "totalFarmingPower"
190+let av = "totalFarmingPower"
186191
187-let au = 0
192+let aw = 0
188193
189-let av = 1
194+let ax = 1
190195
191-let aw = 2
196+let ay = 2
192197
193-let ax = 3
198+let az = 3
194199
195-let ay = 4
200+let aA = 4
196201
197-let az = [0, 10, 20, 40, 80, 150, 250, 400, 700, 1000]
202+let aB = [0, 10, 20, 40, 80, 150, 250, 400, 700, 1000]
198203
199-func aA (aB) = {
200- let aC = ((aB + 99999999) / R)
201- func aD (aE,aF) = if ((aF >= aC))
202- then aE
203- else (aE + 1)
204+func aC (aD) = {
205+ let aE = ((aD + 99999999) / S)
206+ func aF (aG,aH) = if ((aH >= aE))
207+ then aG
208+ else (aG + 1)
204209
205- let aG = az
206- let aH = size(aG)
207- let aI = 0
208- func aJ (aK,aL) = if ((aL >= aH))
209- then aK
210- else aD(aK, aG[aL])
210+ let aI = aB
211+ let aJ = size(aI)
212+ let aK = 0
213+ func aL (aM,aN) = if ((aN >= aJ))
214+ then aM
215+ else aF(aM, aI[aN])
211216
212- func aM (aK,aL) = if ((aL >= aH))
213- then aK
217+ func aO (aM,aN) = if ((aN >= aJ))
218+ then aM
214219 else throw("List size exceeds 10")
215220
216- aM(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aI, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
221+ aO(aL(aL(aL(aL(aL(aL(aL(aL(aL(aL(aK, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
217222 }
218223
219224
220-func aN (aB) = ((aB * 20) * (aA(aB) + 4))
225+func aP (aD) = ((aD * 20) * (aC(aD) + 4))
221226
222227
223-func aO (aP,v) = {
224- let aQ = valueOrElse(getInteger(v, at), 0)
225- let aR = valueOrElse(getInteger(v, ar(aP)), 0)
226- let aS = aN(aR)
227-[aQ, aS]
228+func aQ (aR,v) = {
229+ let aS = valueOrElse(getInteger(v, av), 0)
230+ let aT = valueOrElse(getInteger(v, at(aR)), 0)
231+ let aU = aP(aT)
232+[aS, aU]
228233 }
229234
230235
231-func aT (B) = ("userBet_" + B)
236+func aV (B) = ("userBet_" + B)
232237
233238
234-func aU (B) = ("userTickets_" + B)
239+func aW (B,aX) = ((("userWeekTickets_" + B) + "_") + toString(aX))
235240
236241
237-let aV = "totalTickets"
238-
239-func aW (aX) = (toInt(value(value(blockInfoByHeight((aX * X))).vrf)) % 4)
242+func aY (aX) = ("totalWeekTickets_" + toString(aX))
240243
241244
242-let aY = 0
245+func aZ (ba) = (toInt(value(value(blockInfoByHeight((ba * Y))).vrf)) % 4)
243246
244-let aZ = 1
245247
246-let ba = 0
248+let bb = 0
247249
248-let bb = 1
250+let bc = 1
249251
250-let bc = 2
252+let bd = 0
251253
252-let bd = 3
254+let be = 1
253255
254-let be = 4
256+let bf = 2
255257
256-let bf = 5
258+let bg = 3
257259
258-let bg = 6
260+let bh = 4
259261
260-let bh = 7
262+let bi = 5
261263
262-let bi = 8
264+let bj = 6
263265
264-let bj = 9
266+let bk = 7
265267
266-let bk = 10
268+let bl = 8
267269
268-let bl = 11
270+let bm = 9
269271
270-let bm = 12
272+let bn = 10
271273
272-let bn = 13
274+let bo = 11
273275
274-let bo = 14
276+let bp = 12
275277
276-let bp = 15
278+let bq = 13
277279
278-let bq = 16
280+let br = 14
279281
280-let br = 17
282+let bs = 15
281283
282-let bs = 18
284+let bt = 16
283285
284-let bt = 19
286+let bu = 17
285287
286-let bu = 20
288+let bv = 18
287289
288-let bv = 21
290+let bw = 19
289291
290-let bw = 22
292+let bx = 20
291293
292-let bx = 23
294+let by = 21
293295
294-let by = 24
296+let bz = 22
295297
296-let bz = 25
298+let bA = 23
297299
298-let bA = 26
300+let bB = 24
299301
300-let bB = 27
302+let bC = 25
301303
302-let bC = 28
304+let bD = 26
303305
304-let bD = 29
306+let bE = 27
305307
306-let bE = 30
308+let bF = 28
307309
308-let bF = 31
310+let bG = 29
309311
310-func bG (bH,bI,bJ,bK) = {
311- let al = valueOrErrorMessage(getInteger(bI[aw], ap), "WLGOLD is not issued yet")
312- let bL = assetBalance(bI[au], bJ)
313- let bM = (assetBalance(bI[aw], bJ) - bK)
314- let bN = assetBalance(bI[ax], bJ)
315- let bO = assetBalance(bI[av], bJ)
316- let bP = bI[ay]
317- let bQ = (assetBalance(bP, bJ) + valueOrElse(getInteger(bP, aq), 0))
318- let bR = ((bO + bM) + bQ)
319- let bS = valueOrErrorMessage(getBinary(bI[aw], "wlg_assetId"), "Not initialized yet")
320- let bT = lastBlock.timestamp
321- let bU = valueOrErrorMessage(getInteger(bI[aw], ao), "Not initialized")
322- let bV = assetBalance(bI[aw], bS)
323- let bW = fraction(al, S, Q)
324- let bX = valueOrElse(getInteger(bI[aw], af), bW)
325- let bY = valueOrElse(getInteger(bI[aw], ae), bU)
326- let bZ = addressFromStringValue(value(getString(bI[aw], ad)))
327- let ca = min([fraction(bW, (bT - bY), (3 * V)), bX])
328- let cb = assetBalance(bZ, bS)
329- let cc = fraction(al, T, Q)
330- let cd = valueOrElse(getInteger(bI[aw], ah), cc)
331- let ce = valueOrElse(getInteger(bI[aw], ag), bU)
332- let cf = min([fraction(cc, (bT - ce), (3 * V)), cd])
333- let cg = assetBalance(bI[au], bS)
334- let ch = valueOrElse(getInteger(bI[aw], aj(bH)), bU)
335- let ci = ((ch - bU) / V)
336- let cj = min([bT, (bU + (3 * V))])
337- let ck = min([((bT - bU) / V), 2])
338- let cl = aO(bH, bI[av])
339- let cm = ak(al, ck)
340- let cn = (bU + (V * ck))
341- let co = (bU + (V * (ck - 1)))
342- let cp = fraction(cm, (cj - ch), V)
343- let cq = if ((ci == ck))
344- then cp
345- else if ((ci == (ck - 1)))
312+let bH = 30
313+
314+let bI = 31
315+
316+func bJ (bK,bL,bM,bN) = {
317+ let an = valueOrErrorMessage(getInteger(bL[ay], ar), "WLGOLD is not issued yet")
318+ let bO = assetBalance(bL[aw], bM)
319+ let bP = (assetBalance(bL[ay], bM) - bN)
320+ let bQ = assetBalance(bL[az], bM)
321+ let bR = assetBalance(bL[ax], bM)
322+ let bS = bL[aA]
323+ let bT = (assetBalance(bS, bM) + valueOrElse(getInteger(bS, as), 0))
324+ let bU = ((bR + bP) + bT)
325+ let bV = valueOrErrorMessage(getBinary(bL[ay], "wlg_assetId"), "Not initialized yet")
326+ let bW = lastBlock.timestamp
327+ let bX = valueOrErrorMessage(getInteger(bL[ay], aq), "Not initialized")
328+ let bY = assetBalance(bL[ay], bV)
329+ let bZ = fraction(an, T, R)
330+ let ca = valueOrElse(getInteger(bL[ay], ah), bZ)
331+ let cb = valueOrElse(getInteger(bL[ay], ag), bX)
332+ let cc = addressFromStringValue(value(getString(bL[ay], af)))
333+ let cd = min([fraction(bZ, (bW - cb), (3 * W)), ca])
334+ let ce = assetBalance(cc, bV)
335+ let cf = fraction(an, U, R)
336+ let cg = valueOrElse(getInteger(bL[ay], aj), cf)
337+ let ch = valueOrElse(getInteger(bL[ay], ai), bX)
338+ let ci = min([fraction(cf, (bW - ch), (3 * W)), cg])
339+ let cj = assetBalance(bL[aw], bV)
340+ let ck = valueOrElse(getInteger(bL[ay], al(bK)), bX)
341+ let cl = ((ck - bX) / W)
342+ let cm = min([bW, (bX + (3 * W))])
343+ let cn = min([((bW - bX) / W), 2])
344+ let co = aQ(bK, bL[ax])
345+ let cp = am(an, cn)
346+ let cq = (bX + (W * cn))
347+ let cr = (bX + (W * (cn - 1)))
348+ let cs = fraction(cp, (cm - ck), W)
349+ let ct = if ((cl == cn))
350+ then cs
351+ else if ((cl == (cn - 1)))
346352 then {
347- let cr = fraction(ak(al, (ck - 1)), (cn - ch), V)
348- (cr + cp)
353+ let cu = fraction(am(an, (cn - 1)), (cq - ck), W)
354+ (cu + cs)
349355 }
350356 else {
351- let cs = fraction(ak(al, (ck - 2)), (co - ch), V)
352- let cr = ak(al, (ck - 1))
353- ((cs + cr) + cp)
357+ let cv = fraction(am(an, (cn - 2)), (cr - ck), W)
358+ let cu = am(an, (cn - 1))
359+ ((cv + cu) + cs)
354360 }
355- let ct = valueOrElse(getInteger(bI[aw], ai), 0)
356- let cu = if ((cl[aY] != 0))
357- then fraction(cq, cl[aZ], cl[aY])
361+ let cw = valueOrElse(getInteger(bL[ay], ak), 0)
362+ let cx = if ((co[bb] != 0))
363+ then fraction(ct, co[bc], co[bb])
358364 else 0
359- let cv = valueOrElse(getInteger(bI[aw], an), ac)
360- let cw = fraction(Y, max([(bT - cv), 0]), W)
361- let cx = fraction(cw, aa, Q)
362- let cy = fraction(cw, ab, Q)
363- let cz = max([(bT - max([ac, ch])), 0])
364- let cA = if ((cl[aY] != 0))
365- then fraction(fraction(fraction(Y, cz, W), cl[aZ], cl[aY]), Z, Q)
365+ let cy = valueOrElse(getInteger(bL[ay], ap), ae)
366+ let cz = fraction(aa, max([(bW - cy), 0]), X)
367+ let cA = fraction(cz, ac, R)
368+ let cB = fraction(cz, ad, R)
369+ let cC = max([(bW - max([ae, ck])), 0])
370+ let cD = if ((co[bb] != 0))
371+ then fraction(fraction(fraction(aa, cC, X), co[bc], co[bb]), ab, R)
366372 else 0
367- let cB = max([ac, bT])
368- let cC = valueOrElse(getInteger(bI[av], as), 0)
369-[al, bV, fraction(bR, R, al), bR, bL, bO, bM, bN, bU, bY, bW, bX, ca, cb, cc, cd, cf, cg, ck, ct, cm, ch, bQ, cu, cj, cw, cx, cy, cA, cB, cl[aY], cC]
373+ let cE = max([ae, bW])
374+ let cF = valueOrElse(getInteger(bL[ax], au), 0)
375+[an, bY, fraction(bU, S, an), bU, bO, bR, bP, bQ, bX, cb, bZ, ca, cd, ce, cf, cg, ci, cj, cn, cw, cp, ck, bT, cx, cm, cz, cA, cB, cD, cE, co[bb], cF]
370376 }
371377
372378
373-func cD (cE) = {
374- let B = addressFromString(cE)
375- let cF = if (isDefined(B))
379+func cG (cH) = {
380+ let B = addressFromString(cH)
381+ let cI = if (isDefined(B))
376382 then wavesBalance(value(B))
377383 else BalanceDetails(0, 0, 0, 0)
378- let cG = if (isDefined(B))
384+ let cJ = if (isDefined(B))
379385 then assetBalance(value(B), c)
380386 else 0
381- let cH = if (isDefined(B))
382- then assetBalance(value(B), D)
387+ let cK = if (isDefined(B))
388+ then assetBalance(value(B), E)
383389 else 0
384- let cI = valueOrElse(getString(v, I(cE)), cE)
385- let cJ = J(cE)
386- let cK = getString(v, cJ)
387- let cL = valueOrElse(getString(v, K(cE)), "")
388- let cM = valueOrElse(getString(v, A(cE)), "")
389- let cN = if (isDefined(B))
390- then assetBalance(value(B), F)
390+ let cL = valueOrElse(getString(v, J(cH)), cH)
391+ let cM = K(cH)
392+ let cN = getString(v, cM)
393+ let cO = valueOrElse(getString(v, L(cH)), "")
394+ let cP = valueOrElse(getString(v, A(cH)), "")
395+ let cQ = valueOrElse(getString(v, C(cH)), "")
396+ let cR = if (isDefined(B))
397+ then assetBalance(value(B), G)
391398 else 0
392- let cO = valueOrElse(getInteger(v, ar(cE)), 0)
393- let cP = aA(cO)
394- let cQ = aO(cE, v)
395- let cR = if ((cP >= size(az)))
399+ let cS = valueOrElse(getInteger(v, at(cH)), 0)
400+ let cT = aC(cS)
401+ let cU = aQ(cH, v)
402+ let cV = if ((cT >= size(aB)))
396403 then 0
397- else (((az[cP] * R) + 1) - cO)
398-[("%s%s__customName__" + cI), ("%s%s__referredBy__" + valueOrElse(cK, "")), ("%s%s__referrals__" + cL), ("%s%s__lastTxId__" + cM), ("%s%d__wavesBalance__" + toString(cF.available)), ("%s%d__usdtBalance__" + toString(cG)), ("%s%d__wlgoldBalance__" + toString(cH)), ("%s%d__acresBalance__" + toString(cN)), ("%s%d__stakedAcres__" + toString(cO)), ("%s%d__currentLvl__" + toString(cP)), ("%s%d__acresToNextLvl__" + toString(cR)), ("%s%d__userFarmingPower__" + toString(cQ[aZ])), ("%s%d__totalFarmingPower__" + toString(cQ[aY]))]
404+ else (((aB[cT] * S) + 1) - cS)
405+[("%s%s__customName__" + cL), ("%s%s__referredBy__" + valueOrElse(cN, "")), ("%s%s__referrals__" + cO), ("%s%s__lastWeekTxId__" + cP), ("%s%s__curWeekTxId__" + cP), ("%s%d__wavesBalance__" + toString(cI.available)), ("%s%d__usdtBalance__" + toString(cJ)), ("%s%d__wlgoldBalance__" + toString(cK)), ("%s%d__acresBalance__" + toString(cR)), ("%s%d__stakedAcres__" + toString(cS)), ("%s%d__currentLvl__" + toString(cT)), ("%s%d__acresToNextLvl__" + toString(cV)), ("%s%d__userFarmingPower__" + toString(cU[bc])), ("%s%d__totalFarmingPower__" + toString(cU[bb]))]
399406 }
400407
401408
402-@Callable(cS)
403-func constructorV1 (bI) = if ((cS.caller != this))
409+@Callable(cW)
410+func constructorV1 (bL) = if ((cW.caller != this))
404411 then throw("permissions denied")
405412 else {
406- func cT (aE,cU) = (aE + "%s")
413+ func cX (aG,cY) = (aG + "%s")
407414
408- let cV = {
409- let aG = bI
410- let aH = size(aG)
411- let aI = ""
412- func aJ (aK,aL) = if ((aL >= aH))
413- then aK
414- else cT(aK, aG[aL])
415+ let cZ = {
416+ let aI = bL
417+ let aJ = size(aI)
418+ let aK = ""
419+ func aL (aM,aN) = if ((aN >= aJ))
420+ then aM
421+ else cX(aM, aI[aN])
415422
416- func aM (aK,aL) = if ((aL >= aH))
417- then aK
423+ func aO (aM,aN) = if ((aN >= aJ))
424+ then aM
418425 else throw("List size exceeds 10")
419426
420- aM(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aI, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
427+ aO(aL(aL(aL(aL(aL(aL(aL(aL(aL(aL(aK, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
421428 }
422-[StringEntry(n(), makeString(cV :: bI, a)), StringEntry(o(), toString(this))]
429+[StringEntry(n(), makeString(cZ :: bL, a)), StringEntry(o(), toString(this))]
423430 }
424431
425432
426433
427-@Callable(cS)
428-func walletInfoREADONLY (cE) = $Tuple2(nil, cD(cE))
434+@Callable(cW)
435+func walletInfoREADONLY (cH) = $Tuple2(nil, cG(cH))
429436
430437
431438
432-@Callable(cS)
433-func conversionInfoREADONLY (cE) = {
434- let cW = addressFromStringValue(getStringValue(v, z))
435- let cX = P(invoke(cW, "unstakeAllAcresREADONLY", [cE], nil))
436- let cY = cX._1
437- let cZ = cX._2
438- let da = L(invoke(v, "unstakeLandsREADONLY", [cE], nil))
439- let db = da._1
440- let dc = da._2
441- let dd = da._3
442- let de = da._4
443- let df = addressFromStringValue(f)
444- let dg = valueOrElse(getString(df, G(cE)), "")
445- let dh = if ((dg != ""))
446- then O(invoke(df, "unstakeDuckREADONLY", [dg, cE], nil))
439+@Callable(cW)
440+func conversionInfoREADONLY (cH) = {
441+ let da = addressFromStringValue(getStringValue(v, z))
442+ let db = Q(invoke(da, "unstakeAllAcresREADONLY", [cH], nil))
443+ let dc = db._1
444+ let dd = db._2
445+ let de = M(invoke(v, "unstakeLandsREADONLY", [cH], nil))
446+ let df = de._1
447+ let dg = de._2
448+ let dh = de._3
449+ let di = de._4
450+ let dj = addressFromStringValue(f)
451+ let dk = valueOrElse(getString(dj, H(cH)), "")
452+ let dl = if ((dk != ""))
453+ then P(invoke(dj, "unstakeDuckREADONLY", [dk, cH], nil))
447454 else $Tuple3(0, 0, 0)
448- let di = dh._1
449- let dj = dh._2
450- let dk = dh._3
451- $Tuple2(nil, [("%s%d__unstakedAcres__" + toString(cY)), ("%s%d__claimedAcres__" + toString(cZ)), ("%s%d__acresFromPieces__" + toString(db)), ("%s%d__acresFromRes__" + toString(dc)), ("%s%d__acresFromMat__" + toString(dd)), ("%s%d__acresFromProd__" + toString(de)), ("%s%d__acresFromDuckRes__" + toString(di)), ("%s%d__acresFromDuckMat__" + toString(dj)), ("%s%d__acresFromDuckProd__" + toString(dk))])
455+ let dm = dl._1
456+ let dn = dl._2
457+ let do = dl._3
458+ $Tuple2(nil, [("%s%d__unstakedAcres__" + toString(dc)), ("%s%d__claimedAcres__" + toString(dd)), ("%s%d__acresFromPieces__" + toString(df)), ("%s%d__acresFromRes__" + toString(dg)), ("%s%d__acresFromMat__" + toString(dh)), ("%s%d__acresFromProd__" + toString(di)), ("%s%d__acresFromDuckRes__" + toString(dm)), ("%s%d__acresFromDuckMat__" + toString(dn)), ("%s%d__acresFromDuckProd__" + toString(do))])
452459 }
453460
454461
455462
456-@Callable(cS)
457-func wlgStatsREADONLY (bH) = {
458- let dl = bG(bH, [u, v, w, x, y], c, 0)
459- $Tuple2(nil, [("%s%d__wlgAmount__" + toString(dl[ba])), ("%s%d__wlgWlg__" + toString(dl[bb])), ("%s%d__wlgPrice__" + toString(dl[bc])), ("%s%d__usdtFunds__" + toString(dl[bd])), ("%s%d__usdtActivity__" + toString(dl[be])), ("%s%d__usdtStaking__" + toString(dl[bf])), ("%s%d__usdtArbitrage__" + toString(dl[bg])), ("%s%d__usdtPool__" + toString(dl[bh])), ("%s%d__wlgIssueTime__" + toString(dl[bi])), ("%s%d__wlgLastTeamActTime__" + toString(dl[bj])), ("%s%d__wlgTeamTotal__" + toString(dl[bk])), ("%s%d__wlgTeamAmLeft__" + toString(dl[bl])), ("%s%d__wlgTeamAmAvailNow__" + toString(dl[bm])), ("%s%d__wlgTeamWlgold__" + toString(dl[bn])), ("%s%d__wlgActTotal__" + toString(dl[bo])), ("%s%d__wlgActAmLeft__" + toString(dl[bp])), ("%s%d__wlgActAmAvailNow__" + toString(dl[bq])), ("%s%d__wlgActWlgold__" + toString(dl[br])), ("%s%d__wlgCurPeriod__" + toString(dl[bs])), ("%s%d__wlgAmLeftTotal__" + toString(dl[bt])), ("%s%d__wlgCurPeriodDistribution__" + toString(dl[bu])), ("%s%d__wlgLastUserTime__" + toString(dl[bv])), ("%s%d__wlgInvestFundTotal__" + toString(dl[bw])), ("%s%d__wlgUserAmAvailNow__" + toString(dl[bx])), ("%s%d__wlgEffUserTime__" + toString(dl[by])), ("%s%d__wlgIssue10AvailNow__" + toString(dl[bz])), ("%s%d__wlgMarketingIssue10AvailNow__" + toString(dl[bA])), ("%s%d__wlgTeamIssue10AvailNow__" + toString(dl[bB])), ("%s%d__wlgUserIssue10AvailNow__" + toString(dl[bC])), ("%s%d__wlgLastIssue10Time__" + toString(dl[bD])), ("%s%d__wlgTotalFarmingPower__" + toString(dl[bE])), ("%s%d__wlgAcresStakedTotal__" + toString(dl[bF]))])
463+@Callable(cW)
464+func wlgStatsREADONLY (bK) = {
465+ let dp = bJ(bK, [u, v, w, x, y], c, 0)
466+ $Tuple2(nil, [("%s%d__wlgAmount__" + toString(dp[bd])), ("%s%d__wlgWlg__" + toString(dp[be])), ("%s%d__wlgPrice__" + toString(dp[bf])), ("%s%d__usdtFunds__" + toString(dp[bg])), ("%s%d__usdtActivity__" + toString(dp[bh])), ("%s%d__usdtStaking__" + toString(dp[bi])), ("%s%d__usdtArbitrage__" + toString(dp[bj])), ("%s%d__usdtPool__" + toString(dp[bk])), ("%s%d__wlgIssueTime__" + toString(dp[bl])), ("%s%d__wlgLastTeamActTime__" + toString(dp[bm])), ("%s%d__wlgTeamTotal__" + toString(dp[bn])), ("%s%d__wlgTeamAmLeft__" + toString(dp[bo])), ("%s%d__wlgTeamAmAvailNow__" + toString(dp[bp])), ("%s%d__wlgTeamWlgold__" + toString(dp[bq])), ("%s%d__wlgActTotal__" + toString(dp[br])), ("%s%d__wlgActAmLeft__" + toString(dp[bs])), ("%s%d__wlgActAmAvailNow__" + toString(dp[bt])), ("%s%d__wlgActWlgold__" + toString(dp[bu])), ("%s%d__wlgCurPeriod__" + toString(dp[bv])), ("%s%d__wlgAmLeftTotal__" + toString(dp[bw])), ("%s%d__wlgCurPeriodDistribution__" + toString(dp[bx])), ("%s%d__wlgLastUserTime__" + toString(dp[by])), ("%s%d__wlgInvestFundTotal__" + toString(dp[bz])), ("%s%d__wlgUserAmAvailNow__" + toString(dp[bA])), ("%s%d__wlgEffUserTime__" + toString(dp[bB])), ("%s%d__wlgIssue10AvailNow__" + toString(dp[bC])), ("%s%d__wlgMarketingIssue10AvailNow__" + toString(dp[bD])), ("%s%d__wlgTeamIssue10AvailNow__" + toString(dp[bE])), ("%s%d__wlgUserIssue10AvailNow__" + toString(dp[bF])), ("%s%d__wlgLastIssue10Time__" + toString(dp[bG])), ("%s%d__wlgTotalFarmingPower__" + toString(dp[bH])), ("%s%d__wlgAcresStakedTotal__" + toString(dp[bI]))])
460467 }
461468
462469
463470
464-@Callable(cS)
465-func lotteryStatsREADONLY (bH) = {
466- let dm = (height / X)
467- let dn = valueOrElse(getString(w, aT(bH)), "")
468- $Tuple2(nil, [("%s%d__totalTickets__" + toString(valueOrElse(getInteger(w, aV), 0))), ("%s%d__userTickets__" + toString(valueOrElse(getInteger(w, aU(bH)), 0))), ("%s%d__blockchainDay__" + toString(dm)), ("%s%d__blockchainMinute__" + toString((height % X))), ("%s%d__winningBetToday__" + toString(aW(dm))), ("%s%s__usersBet__" + dn)])
471+@Callable(cW)
472+func lotteryStatsREADONLY (bK) = {
473+ let dq = (height / Y)
474+ let aX = (height / Z)
475+ let dr = (aX - 1)
476+ let ds = valueOrElse(getInteger(w, aW(bK, aX)), 0)
477+ let dt = valueOrElse(getInteger(w, aW(bK, dr)), 0)
478+ let du = valueOrElse(getInteger(w, aY(aX)), 0)
479+ let dv = valueOrElse(getInteger(w, aY(dr)), 0)
480+ let dw = valueOrElse(getString(w, aV(bK)), "")
481+ $Tuple2(nil, [((("%s%d%d__totalTickets__" + toString(dv)) + a) + toString(du)), ((("%s%d%d__userTickets__" + toString(dt)) + a) + toString(ds)), ("%s%d__blockchainDay__" + toString(dq)), ("%s%d__blockchainMinute__" + toString((height % Y))), ("%s%d__winningBetToday__" + toString(aZ(dq))), ("%s%s__usersBet__" + dw)])
469482 }
470483
471484
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "__"
55
66 let b = take(drop(this.bytes, 1), 1)
77
88 let c = {
99 let d = b
1010 if ((base58'2W' == d))
1111 then base58'9wc3LXNA4TEBsXyKtoLE9mrbDD7WMHXvXrCjZvabLAsi'
1212 else if ((base58'2T' == d))
1313 then base58'6mWwf9mZBjVgkC54idpyaZLQfAosD914wT8fGf2iiY63'
1414 else throw("Unknown chain")
1515 }
1616
1717 let e = {
1818 let d = b
1919 if ((base58'2W' == d))
2020 then "3PFwYta8biEz31zpeFe5DJK8wE5trSpQVF8"
2121 else if ((base58'2T' == d))
2222 then "3N7UuYar6264P58FBhVWKPQAh4Yua2hgngv"
2323 else throw("Unknown chain")
2424 }
2525
2626 let f = {
2727 let d = b
2828 if ((base58'2W' == d))
2929 then "3PLncXtS1U83D6cQbFD3H8rBHPLgzxSFKZ1"
3030 else if ((base58'2T' == d))
3131 then "3NDCyBG5q85JuaRiigUeEtainyjCQT3XpZm"
3232 else throw("Unknown chain")
3333 }
3434
3535 func g (h,i) = valueOrErrorMessage(getString(h, i), makeString(["mandatory ", toString(h), ".", i, " is not defined"], ""))
3636
3737
3838 let j = 1
3939
4040 let k = 2
4141
4242 let l = 4
4343
4444 let m = 5
4545
4646 func n () = "%s__restConfig"
4747
4848
4949 func o () = "%s__rest2Addr"
5050
5151
5252 func p (q) = split_4C(g(q, n()), a)
5353
5454
5555 func r (s,t) = valueOrErrorMessage(addressFromString(s[t]), ("Rest cfg doesn't contain address at index " + toString(t)))
5656
5757
5858 let u = addressFromStringValue(valueOrElse(getString(this, o()), e))
5959
6060 let s = p(u)
6161
6262 let v = r(s, j)
6363
6464 let w = r(s, k)
6565
6666 let x = r(s, l)
6767
6868 let y = r(s, m)
6969
7070 let z = "oldAcresContract"
7171
72-func A (B) = ("lastTxIdByUser_" + B)
72+func A (B) = ("lastWeekTxIdByUser_" + B)
7373
7474
75-let C = "wlg_assetId"
76-
77-let D = valueOrErrorMessage(getBinary(w, C), "WLGOLD is not issued yet")
78-
79-let E = "acresAssetId"
80-
81-let F = valueOrErrorMessage(getBinary(v, E), "ACRES is not issued yet")
82-
83-func G (H) = ("stakedDuckByOwner_" + H)
75+func C (B) = ("curWeekTxIdByUser_" + B)
8476
8577
86-func I (B) = ("accountCustomNameByAddr_" + B)
78+let D = "wlg_assetId"
79+
80+let E = valueOrErrorMessage(getBinary(w, D), "WLGOLD is not issued yet")
81+
82+let F = "acresAssetId"
83+
84+let G = valueOrErrorMessage(getBinary(v, F), "ACRES is not issued yet")
85+
86+func H (I) = ("stakedDuckByOwner_" + I)
8787
8888
89-func J (B) = ("accRefBy_" + B)
89+func J (B) = ("accountCustomNameByAddr_" + B)
9090
9191
92-func K (B) = ("accReferrals_" + B)
92+func K (B) = ("accRefBy_" + B)
9393
9494
95-func L (M) = {
96- let d = M
95+func L (B) = ("accReferrals_" + B)
96+
97+
98+func M (N) = {
99+ let d = N
97100 if ($isInstanceOf(d, "(Int, Int, Int, Int)"))
98101 then {
99- let N = d
100- N
102+ let O = d
103+ O
101104 }
102105 else throw("fail to cast into (Int, Int, Int, Int)")
103106 }
104107
105108
106-func O (M) = {
107- let d = M
109+func P (N) = {
110+ let d = N
108111 if ($isInstanceOf(d, "(Int, Int, Int)"))
109112 then {
110- let N = d
111- N
113+ let O = d
114+ O
112115 }
113116 else throw("fail to cast into (Int, Int, Int)")
114117 }
115118
116119
117-func P (M) = {
118- let d = M
120+func Q (N) = {
121+ let d = N
119122 if ($isInstanceOf(d, "(Int, Int)"))
120123 then {
121- let N = d
122- N
124+ let O = d
125+ O
123126 }
124127 else throw("fail to cast into (Int, Int)")
125128 }
126129
127130
128-let Q = 1000000
131+let R = 1000000
129132
130-let R = 100000000
133+let S = 100000000
131134
132-let S = 200000
135+let T = 200000
133136
134-let T = 100000
137+let U = 100000
135138
136-let U = 400000
139+let V = 400000
137140
138-let V = 31557600000
141+let W = 31557600000
139142
140-let W = 86400000
143+let X = 86400000
141144
142-let X = 1440
145+let Y = 1440
143146
144-let Y = 1000000000
147+let Z = 10080
145148
146-let Z = 800000
149+let aa = 1000000000
147150
148-let aa = 100000
151+let ab = 800000
149152
150-let ab = 100000
153+let ac = 100000
151154
152-let ac = 1731279600000
155+let ad = 100000
153156
154-let ad = "teamAddr"
157+let ae = 1731279600000
155158
156-let ae = "lastClaimedTime_team"
159+let af = "teamAddr"
157160
158-let af = "teamAmountLeft"
161+let ag = "lastClaimedTime_team"
159162
160-let ag = "lastClaimedTime_activities"
163+let ah = "teamAmountLeft"
161164
162-let ah = "activitiesAmountLeft"
165+let ai = "lastClaimedTime_activities"
163166
164-let ai = "stakersAmountLeft"
167+let aj = "activitiesAmountLeft"
165168
166-func aj (B) = ("lastClaimedTimeUser_" + B)
169+let ak = "stakersAmountLeft"
170+
171+func al (B) = ("lastClaimedTimeUser_" + B)
167172
168173
169-func ak (al,am) = fraction(al, (U * (am + 1)), (6 * Q))
174+func am (an,ao) = fraction(an, (V * (ao + 1)), (6 * R))
170175
171176
172-let an = "wlg_issue10Time"
177+let ap = "wlg_issue10Time"
173178
174-let ao = "wlg_issueTime"
179+let aq = "wlg_issueTime"
175180
176-let ap = "wlg_issuedAmount"
181+let ar = "wlg_issuedAmount"
177182
178-let aq = "zbill_issuedAmount"
183+let as = "zbill_issuedAmount"
179184
180-func ar (B) = ("acresStakedAmountByUser_" + B)
185+func at (B) = ("acresStakedAmountByUser_" + B)
181186
182187
183-let as = "acresStakedAmountTotal"
188+let au = "acresStakedAmountTotal"
184189
185-let at = "totalFarmingPower"
190+let av = "totalFarmingPower"
186191
187-let au = 0
192+let aw = 0
188193
189-let av = 1
194+let ax = 1
190195
191-let aw = 2
196+let ay = 2
192197
193-let ax = 3
198+let az = 3
194199
195-let ay = 4
200+let aA = 4
196201
197-let az = [0, 10, 20, 40, 80, 150, 250, 400, 700, 1000]
202+let aB = [0, 10, 20, 40, 80, 150, 250, 400, 700, 1000]
198203
199-func aA (aB) = {
200- let aC = ((aB + 99999999) / R)
201- func aD (aE,aF) = if ((aF >= aC))
202- then aE
203- else (aE + 1)
204+func aC (aD) = {
205+ let aE = ((aD + 99999999) / S)
206+ func aF (aG,aH) = if ((aH >= aE))
207+ then aG
208+ else (aG + 1)
204209
205- let aG = az
206- let aH = size(aG)
207- let aI = 0
208- func aJ (aK,aL) = if ((aL >= aH))
209- then aK
210- else aD(aK, aG[aL])
210+ let aI = aB
211+ let aJ = size(aI)
212+ let aK = 0
213+ func aL (aM,aN) = if ((aN >= aJ))
214+ then aM
215+ else aF(aM, aI[aN])
211216
212- func aM (aK,aL) = if ((aL >= aH))
213- then aK
217+ func aO (aM,aN) = if ((aN >= aJ))
218+ then aM
214219 else throw("List size exceeds 10")
215220
216- aM(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aI, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
221+ aO(aL(aL(aL(aL(aL(aL(aL(aL(aL(aL(aK, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
217222 }
218223
219224
220-func aN (aB) = ((aB * 20) * (aA(aB) + 4))
225+func aP (aD) = ((aD * 20) * (aC(aD) + 4))
221226
222227
223-func aO (aP,v) = {
224- let aQ = valueOrElse(getInteger(v, at), 0)
225- let aR = valueOrElse(getInteger(v, ar(aP)), 0)
226- let aS = aN(aR)
227-[aQ, aS]
228+func aQ (aR,v) = {
229+ let aS = valueOrElse(getInteger(v, av), 0)
230+ let aT = valueOrElse(getInteger(v, at(aR)), 0)
231+ let aU = aP(aT)
232+[aS, aU]
228233 }
229234
230235
231-func aT (B) = ("userBet_" + B)
236+func aV (B) = ("userBet_" + B)
232237
233238
234-func aU (B) = ("userTickets_" + B)
239+func aW (B,aX) = ((("userWeekTickets_" + B) + "_") + toString(aX))
235240
236241
237-let aV = "totalTickets"
238-
239-func aW (aX) = (toInt(value(value(blockInfoByHeight((aX * X))).vrf)) % 4)
242+func aY (aX) = ("totalWeekTickets_" + toString(aX))
240243
241244
242-let aY = 0
245+func aZ (ba) = (toInt(value(value(blockInfoByHeight((ba * Y))).vrf)) % 4)
243246
244-let aZ = 1
245247
246-let ba = 0
248+let bb = 0
247249
248-let bb = 1
250+let bc = 1
249251
250-let bc = 2
252+let bd = 0
251253
252-let bd = 3
254+let be = 1
253255
254-let be = 4
256+let bf = 2
255257
256-let bf = 5
258+let bg = 3
257259
258-let bg = 6
260+let bh = 4
259261
260-let bh = 7
262+let bi = 5
261263
262-let bi = 8
264+let bj = 6
263265
264-let bj = 9
266+let bk = 7
265267
266-let bk = 10
268+let bl = 8
267269
268-let bl = 11
270+let bm = 9
269271
270-let bm = 12
272+let bn = 10
271273
272-let bn = 13
274+let bo = 11
273275
274-let bo = 14
276+let bp = 12
275277
276-let bp = 15
278+let bq = 13
277279
278-let bq = 16
280+let br = 14
279281
280-let br = 17
282+let bs = 15
281283
282-let bs = 18
284+let bt = 16
283285
284-let bt = 19
286+let bu = 17
285287
286-let bu = 20
288+let bv = 18
287289
288-let bv = 21
290+let bw = 19
289291
290-let bw = 22
292+let bx = 20
291293
292-let bx = 23
294+let by = 21
293295
294-let by = 24
296+let bz = 22
295297
296-let bz = 25
298+let bA = 23
297299
298-let bA = 26
300+let bB = 24
299301
300-let bB = 27
302+let bC = 25
301303
302-let bC = 28
304+let bD = 26
303305
304-let bD = 29
306+let bE = 27
305307
306-let bE = 30
308+let bF = 28
307309
308-let bF = 31
310+let bG = 29
309311
310-func bG (bH,bI,bJ,bK) = {
311- let al = valueOrErrorMessage(getInteger(bI[aw], ap), "WLGOLD is not issued yet")
312- let bL = assetBalance(bI[au], bJ)
313- let bM = (assetBalance(bI[aw], bJ) - bK)
314- let bN = assetBalance(bI[ax], bJ)
315- let bO = assetBalance(bI[av], bJ)
316- let bP = bI[ay]
317- let bQ = (assetBalance(bP, bJ) + valueOrElse(getInteger(bP, aq), 0))
318- let bR = ((bO + bM) + bQ)
319- let bS = valueOrErrorMessage(getBinary(bI[aw], "wlg_assetId"), "Not initialized yet")
320- let bT = lastBlock.timestamp
321- let bU = valueOrErrorMessage(getInteger(bI[aw], ao), "Not initialized")
322- let bV = assetBalance(bI[aw], bS)
323- let bW = fraction(al, S, Q)
324- let bX = valueOrElse(getInteger(bI[aw], af), bW)
325- let bY = valueOrElse(getInteger(bI[aw], ae), bU)
326- let bZ = addressFromStringValue(value(getString(bI[aw], ad)))
327- let ca = min([fraction(bW, (bT - bY), (3 * V)), bX])
328- let cb = assetBalance(bZ, bS)
329- let cc = fraction(al, T, Q)
330- let cd = valueOrElse(getInteger(bI[aw], ah), cc)
331- let ce = valueOrElse(getInteger(bI[aw], ag), bU)
332- let cf = min([fraction(cc, (bT - ce), (3 * V)), cd])
333- let cg = assetBalance(bI[au], bS)
334- let ch = valueOrElse(getInteger(bI[aw], aj(bH)), bU)
335- let ci = ((ch - bU) / V)
336- let cj = min([bT, (bU + (3 * V))])
337- let ck = min([((bT - bU) / V), 2])
338- let cl = aO(bH, bI[av])
339- let cm = ak(al, ck)
340- let cn = (bU + (V * ck))
341- let co = (bU + (V * (ck - 1)))
342- let cp = fraction(cm, (cj - ch), V)
343- let cq = if ((ci == ck))
344- then cp
345- else if ((ci == (ck - 1)))
312+let bH = 30
313+
314+let bI = 31
315+
316+func bJ (bK,bL,bM,bN) = {
317+ let an = valueOrErrorMessage(getInteger(bL[ay], ar), "WLGOLD is not issued yet")
318+ let bO = assetBalance(bL[aw], bM)
319+ let bP = (assetBalance(bL[ay], bM) - bN)
320+ let bQ = assetBalance(bL[az], bM)
321+ let bR = assetBalance(bL[ax], bM)
322+ let bS = bL[aA]
323+ let bT = (assetBalance(bS, bM) + valueOrElse(getInteger(bS, as), 0))
324+ let bU = ((bR + bP) + bT)
325+ let bV = valueOrErrorMessage(getBinary(bL[ay], "wlg_assetId"), "Not initialized yet")
326+ let bW = lastBlock.timestamp
327+ let bX = valueOrErrorMessage(getInteger(bL[ay], aq), "Not initialized")
328+ let bY = assetBalance(bL[ay], bV)
329+ let bZ = fraction(an, T, R)
330+ let ca = valueOrElse(getInteger(bL[ay], ah), bZ)
331+ let cb = valueOrElse(getInteger(bL[ay], ag), bX)
332+ let cc = addressFromStringValue(value(getString(bL[ay], af)))
333+ let cd = min([fraction(bZ, (bW - cb), (3 * W)), ca])
334+ let ce = assetBalance(cc, bV)
335+ let cf = fraction(an, U, R)
336+ let cg = valueOrElse(getInteger(bL[ay], aj), cf)
337+ let ch = valueOrElse(getInteger(bL[ay], ai), bX)
338+ let ci = min([fraction(cf, (bW - ch), (3 * W)), cg])
339+ let cj = assetBalance(bL[aw], bV)
340+ let ck = valueOrElse(getInteger(bL[ay], al(bK)), bX)
341+ let cl = ((ck - bX) / W)
342+ let cm = min([bW, (bX + (3 * W))])
343+ let cn = min([((bW - bX) / W), 2])
344+ let co = aQ(bK, bL[ax])
345+ let cp = am(an, cn)
346+ let cq = (bX + (W * cn))
347+ let cr = (bX + (W * (cn - 1)))
348+ let cs = fraction(cp, (cm - ck), W)
349+ let ct = if ((cl == cn))
350+ then cs
351+ else if ((cl == (cn - 1)))
346352 then {
347- let cr = fraction(ak(al, (ck - 1)), (cn - ch), V)
348- (cr + cp)
353+ let cu = fraction(am(an, (cn - 1)), (cq - ck), W)
354+ (cu + cs)
349355 }
350356 else {
351- let cs = fraction(ak(al, (ck - 2)), (co - ch), V)
352- let cr = ak(al, (ck - 1))
353- ((cs + cr) + cp)
357+ let cv = fraction(am(an, (cn - 2)), (cr - ck), W)
358+ let cu = am(an, (cn - 1))
359+ ((cv + cu) + cs)
354360 }
355- let ct = valueOrElse(getInteger(bI[aw], ai), 0)
356- let cu = if ((cl[aY] != 0))
357- then fraction(cq, cl[aZ], cl[aY])
361+ let cw = valueOrElse(getInteger(bL[ay], ak), 0)
362+ let cx = if ((co[bb] != 0))
363+ then fraction(ct, co[bc], co[bb])
358364 else 0
359- let cv = valueOrElse(getInteger(bI[aw], an), ac)
360- let cw = fraction(Y, max([(bT - cv), 0]), W)
361- let cx = fraction(cw, aa, Q)
362- let cy = fraction(cw, ab, Q)
363- let cz = max([(bT - max([ac, ch])), 0])
364- let cA = if ((cl[aY] != 0))
365- then fraction(fraction(fraction(Y, cz, W), cl[aZ], cl[aY]), Z, Q)
365+ let cy = valueOrElse(getInteger(bL[ay], ap), ae)
366+ let cz = fraction(aa, max([(bW - cy), 0]), X)
367+ let cA = fraction(cz, ac, R)
368+ let cB = fraction(cz, ad, R)
369+ let cC = max([(bW - max([ae, ck])), 0])
370+ let cD = if ((co[bb] != 0))
371+ then fraction(fraction(fraction(aa, cC, X), co[bc], co[bb]), ab, R)
366372 else 0
367- let cB = max([ac, bT])
368- let cC = valueOrElse(getInteger(bI[av], as), 0)
369-[al, bV, fraction(bR, R, al), bR, bL, bO, bM, bN, bU, bY, bW, bX, ca, cb, cc, cd, cf, cg, ck, ct, cm, ch, bQ, cu, cj, cw, cx, cy, cA, cB, cl[aY], cC]
373+ let cE = max([ae, bW])
374+ let cF = valueOrElse(getInteger(bL[ax], au), 0)
375+[an, bY, fraction(bU, S, an), bU, bO, bR, bP, bQ, bX, cb, bZ, ca, cd, ce, cf, cg, ci, cj, cn, cw, cp, ck, bT, cx, cm, cz, cA, cB, cD, cE, co[bb], cF]
370376 }
371377
372378
373-func cD (cE) = {
374- let B = addressFromString(cE)
375- let cF = if (isDefined(B))
379+func cG (cH) = {
380+ let B = addressFromString(cH)
381+ let cI = if (isDefined(B))
376382 then wavesBalance(value(B))
377383 else BalanceDetails(0, 0, 0, 0)
378- let cG = if (isDefined(B))
384+ let cJ = if (isDefined(B))
379385 then assetBalance(value(B), c)
380386 else 0
381- let cH = if (isDefined(B))
382- then assetBalance(value(B), D)
387+ let cK = if (isDefined(B))
388+ then assetBalance(value(B), E)
383389 else 0
384- let cI = valueOrElse(getString(v, I(cE)), cE)
385- let cJ = J(cE)
386- let cK = getString(v, cJ)
387- let cL = valueOrElse(getString(v, K(cE)), "")
388- let cM = valueOrElse(getString(v, A(cE)), "")
389- let cN = if (isDefined(B))
390- then assetBalance(value(B), F)
390+ let cL = valueOrElse(getString(v, J(cH)), cH)
391+ let cM = K(cH)
392+ let cN = getString(v, cM)
393+ let cO = valueOrElse(getString(v, L(cH)), "")
394+ let cP = valueOrElse(getString(v, A(cH)), "")
395+ let cQ = valueOrElse(getString(v, C(cH)), "")
396+ let cR = if (isDefined(B))
397+ then assetBalance(value(B), G)
391398 else 0
392- let cO = valueOrElse(getInteger(v, ar(cE)), 0)
393- let cP = aA(cO)
394- let cQ = aO(cE, v)
395- let cR = if ((cP >= size(az)))
399+ let cS = valueOrElse(getInteger(v, at(cH)), 0)
400+ let cT = aC(cS)
401+ let cU = aQ(cH, v)
402+ let cV = if ((cT >= size(aB)))
396403 then 0
397- else (((az[cP] * R) + 1) - cO)
398-[("%s%s__customName__" + cI), ("%s%s__referredBy__" + valueOrElse(cK, "")), ("%s%s__referrals__" + cL), ("%s%s__lastTxId__" + cM), ("%s%d__wavesBalance__" + toString(cF.available)), ("%s%d__usdtBalance__" + toString(cG)), ("%s%d__wlgoldBalance__" + toString(cH)), ("%s%d__acresBalance__" + toString(cN)), ("%s%d__stakedAcres__" + toString(cO)), ("%s%d__currentLvl__" + toString(cP)), ("%s%d__acresToNextLvl__" + toString(cR)), ("%s%d__userFarmingPower__" + toString(cQ[aZ])), ("%s%d__totalFarmingPower__" + toString(cQ[aY]))]
404+ else (((aB[cT] * S) + 1) - cS)
405+[("%s%s__customName__" + cL), ("%s%s__referredBy__" + valueOrElse(cN, "")), ("%s%s__referrals__" + cO), ("%s%s__lastWeekTxId__" + cP), ("%s%s__curWeekTxId__" + cP), ("%s%d__wavesBalance__" + toString(cI.available)), ("%s%d__usdtBalance__" + toString(cJ)), ("%s%d__wlgoldBalance__" + toString(cK)), ("%s%d__acresBalance__" + toString(cR)), ("%s%d__stakedAcres__" + toString(cS)), ("%s%d__currentLvl__" + toString(cT)), ("%s%d__acresToNextLvl__" + toString(cV)), ("%s%d__userFarmingPower__" + toString(cU[bc])), ("%s%d__totalFarmingPower__" + toString(cU[bb]))]
399406 }
400407
401408
402-@Callable(cS)
403-func constructorV1 (bI) = if ((cS.caller != this))
409+@Callable(cW)
410+func constructorV1 (bL) = if ((cW.caller != this))
404411 then throw("permissions denied")
405412 else {
406- func cT (aE,cU) = (aE + "%s")
413+ func cX (aG,cY) = (aG + "%s")
407414
408- let cV = {
409- let aG = bI
410- let aH = size(aG)
411- let aI = ""
412- func aJ (aK,aL) = if ((aL >= aH))
413- then aK
414- else cT(aK, aG[aL])
415+ let cZ = {
416+ let aI = bL
417+ let aJ = size(aI)
418+ let aK = ""
419+ func aL (aM,aN) = if ((aN >= aJ))
420+ then aM
421+ else cX(aM, aI[aN])
415422
416- func aM (aK,aL) = if ((aL >= aH))
417- then aK
423+ func aO (aM,aN) = if ((aN >= aJ))
424+ then aM
418425 else throw("List size exceeds 10")
419426
420- aM(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aI, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
427+ aO(aL(aL(aL(aL(aL(aL(aL(aL(aL(aL(aK, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
421428 }
422-[StringEntry(n(), makeString(cV :: bI, a)), StringEntry(o(), toString(this))]
429+[StringEntry(n(), makeString(cZ :: bL, a)), StringEntry(o(), toString(this))]
423430 }
424431
425432
426433
427-@Callable(cS)
428-func walletInfoREADONLY (cE) = $Tuple2(nil, cD(cE))
434+@Callable(cW)
435+func walletInfoREADONLY (cH) = $Tuple2(nil, cG(cH))
429436
430437
431438
432-@Callable(cS)
433-func conversionInfoREADONLY (cE) = {
434- let cW = addressFromStringValue(getStringValue(v, z))
435- let cX = P(invoke(cW, "unstakeAllAcresREADONLY", [cE], nil))
436- let cY = cX._1
437- let cZ = cX._2
438- let da = L(invoke(v, "unstakeLandsREADONLY", [cE], nil))
439- let db = da._1
440- let dc = da._2
441- let dd = da._3
442- let de = da._4
443- let df = addressFromStringValue(f)
444- let dg = valueOrElse(getString(df, G(cE)), "")
445- let dh = if ((dg != ""))
446- then O(invoke(df, "unstakeDuckREADONLY", [dg, cE], nil))
439+@Callable(cW)
440+func conversionInfoREADONLY (cH) = {
441+ let da = addressFromStringValue(getStringValue(v, z))
442+ let db = Q(invoke(da, "unstakeAllAcresREADONLY", [cH], nil))
443+ let dc = db._1
444+ let dd = db._2
445+ let de = M(invoke(v, "unstakeLandsREADONLY", [cH], nil))
446+ let df = de._1
447+ let dg = de._2
448+ let dh = de._3
449+ let di = de._4
450+ let dj = addressFromStringValue(f)
451+ let dk = valueOrElse(getString(dj, H(cH)), "")
452+ let dl = if ((dk != ""))
453+ then P(invoke(dj, "unstakeDuckREADONLY", [dk, cH], nil))
447454 else $Tuple3(0, 0, 0)
448- let di = dh._1
449- let dj = dh._2
450- let dk = dh._3
451- $Tuple2(nil, [("%s%d__unstakedAcres__" + toString(cY)), ("%s%d__claimedAcres__" + toString(cZ)), ("%s%d__acresFromPieces__" + toString(db)), ("%s%d__acresFromRes__" + toString(dc)), ("%s%d__acresFromMat__" + toString(dd)), ("%s%d__acresFromProd__" + toString(de)), ("%s%d__acresFromDuckRes__" + toString(di)), ("%s%d__acresFromDuckMat__" + toString(dj)), ("%s%d__acresFromDuckProd__" + toString(dk))])
455+ let dm = dl._1
456+ let dn = dl._2
457+ let do = dl._3
458+ $Tuple2(nil, [("%s%d__unstakedAcres__" + toString(dc)), ("%s%d__claimedAcres__" + toString(dd)), ("%s%d__acresFromPieces__" + toString(df)), ("%s%d__acresFromRes__" + toString(dg)), ("%s%d__acresFromMat__" + toString(dh)), ("%s%d__acresFromProd__" + toString(di)), ("%s%d__acresFromDuckRes__" + toString(dm)), ("%s%d__acresFromDuckMat__" + toString(dn)), ("%s%d__acresFromDuckProd__" + toString(do))])
452459 }
453460
454461
455462
456-@Callable(cS)
457-func wlgStatsREADONLY (bH) = {
458- let dl = bG(bH, [u, v, w, x, y], c, 0)
459- $Tuple2(nil, [("%s%d__wlgAmount__" + toString(dl[ba])), ("%s%d__wlgWlg__" + toString(dl[bb])), ("%s%d__wlgPrice__" + toString(dl[bc])), ("%s%d__usdtFunds__" + toString(dl[bd])), ("%s%d__usdtActivity__" + toString(dl[be])), ("%s%d__usdtStaking__" + toString(dl[bf])), ("%s%d__usdtArbitrage__" + toString(dl[bg])), ("%s%d__usdtPool__" + toString(dl[bh])), ("%s%d__wlgIssueTime__" + toString(dl[bi])), ("%s%d__wlgLastTeamActTime__" + toString(dl[bj])), ("%s%d__wlgTeamTotal__" + toString(dl[bk])), ("%s%d__wlgTeamAmLeft__" + toString(dl[bl])), ("%s%d__wlgTeamAmAvailNow__" + toString(dl[bm])), ("%s%d__wlgTeamWlgold__" + toString(dl[bn])), ("%s%d__wlgActTotal__" + toString(dl[bo])), ("%s%d__wlgActAmLeft__" + toString(dl[bp])), ("%s%d__wlgActAmAvailNow__" + toString(dl[bq])), ("%s%d__wlgActWlgold__" + toString(dl[br])), ("%s%d__wlgCurPeriod__" + toString(dl[bs])), ("%s%d__wlgAmLeftTotal__" + toString(dl[bt])), ("%s%d__wlgCurPeriodDistribution__" + toString(dl[bu])), ("%s%d__wlgLastUserTime__" + toString(dl[bv])), ("%s%d__wlgInvestFundTotal__" + toString(dl[bw])), ("%s%d__wlgUserAmAvailNow__" + toString(dl[bx])), ("%s%d__wlgEffUserTime__" + toString(dl[by])), ("%s%d__wlgIssue10AvailNow__" + toString(dl[bz])), ("%s%d__wlgMarketingIssue10AvailNow__" + toString(dl[bA])), ("%s%d__wlgTeamIssue10AvailNow__" + toString(dl[bB])), ("%s%d__wlgUserIssue10AvailNow__" + toString(dl[bC])), ("%s%d__wlgLastIssue10Time__" + toString(dl[bD])), ("%s%d__wlgTotalFarmingPower__" + toString(dl[bE])), ("%s%d__wlgAcresStakedTotal__" + toString(dl[bF]))])
463+@Callable(cW)
464+func wlgStatsREADONLY (bK) = {
465+ let dp = bJ(bK, [u, v, w, x, y], c, 0)
466+ $Tuple2(nil, [("%s%d__wlgAmount__" + toString(dp[bd])), ("%s%d__wlgWlg__" + toString(dp[be])), ("%s%d__wlgPrice__" + toString(dp[bf])), ("%s%d__usdtFunds__" + toString(dp[bg])), ("%s%d__usdtActivity__" + toString(dp[bh])), ("%s%d__usdtStaking__" + toString(dp[bi])), ("%s%d__usdtArbitrage__" + toString(dp[bj])), ("%s%d__usdtPool__" + toString(dp[bk])), ("%s%d__wlgIssueTime__" + toString(dp[bl])), ("%s%d__wlgLastTeamActTime__" + toString(dp[bm])), ("%s%d__wlgTeamTotal__" + toString(dp[bn])), ("%s%d__wlgTeamAmLeft__" + toString(dp[bo])), ("%s%d__wlgTeamAmAvailNow__" + toString(dp[bp])), ("%s%d__wlgTeamWlgold__" + toString(dp[bq])), ("%s%d__wlgActTotal__" + toString(dp[br])), ("%s%d__wlgActAmLeft__" + toString(dp[bs])), ("%s%d__wlgActAmAvailNow__" + toString(dp[bt])), ("%s%d__wlgActWlgold__" + toString(dp[bu])), ("%s%d__wlgCurPeriod__" + toString(dp[bv])), ("%s%d__wlgAmLeftTotal__" + toString(dp[bw])), ("%s%d__wlgCurPeriodDistribution__" + toString(dp[bx])), ("%s%d__wlgLastUserTime__" + toString(dp[by])), ("%s%d__wlgInvestFundTotal__" + toString(dp[bz])), ("%s%d__wlgUserAmAvailNow__" + toString(dp[bA])), ("%s%d__wlgEffUserTime__" + toString(dp[bB])), ("%s%d__wlgIssue10AvailNow__" + toString(dp[bC])), ("%s%d__wlgMarketingIssue10AvailNow__" + toString(dp[bD])), ("%s%d__wlgTeamIssue10AvailNow__" + toString(dp[bE])), ("%s%d__wlgUserIssue10AvailNow__" + toString(dp[bF])), ("%s%d__wlgLastIssue10Time__" + toString(dp[bG])), ("%s%d__wlgTotalFarmingPower__" + toString(dp[bH])), ("%s%d__wlgAcresStakedTotal__" + toString(dp[bI]))])
460467 }
461468
462469
463470
464-@Callable(cS)
465-func lotteryStatsREADONLY (bH) = {
466- let dm = (height / X)
467- let dn = valueOrElse(getString(w, aT(bH)), "")
468- $Tuple2(nil, [("%s%d__totalTickets__" + toString(valueOrElse(getInteger(w, aV), 0))), ("%s%d__userTickets__" + toString(valueOrElse(getInteger(w, aU(bH)), 0))), ("%s%d__blockchainDay__" + toString(dm)), ("%s%d__blockchainMinute__" + toString((height % X))), ("%s%d__winningBetToday__" + toString(aW(dm))), ("%s%s__usersBet__" + dn)])
471+@Callable(cW)
472+func lotteryStatsREADONLY (bK) = {
473+ let dq = (height / Y)
474+ let aX = (height / Z)
475+ let dr = (aX - 1)
476+ let ds = valueOrElse(getInteger(w, aW(bK, aX)), 0)
477+ let dt = valueOrElse(getInteger(w, aW(bK, dr)), 0)
478+ let du = valueOrElse(getInteger(w, aY(aX)), 0)
479+ let dv = valueOrElse(getInteger(w, aY(dr)), 0)
480+ let dw = valueOrElse(getString(w, aV(bK)), "")
481+ $Tuple2(nil, [((("%s%d%d__totalTickets__" + toString(dv)) + a) + toString(du)), ((("%s%d%d__userTickets__" + toString(dt)) + a) + toString(ds)), ("%s%d__blockchainDay__" + toString(dq)), ("%s%d__blockchainMinute__" + toString((height % Y))), ("%s%d__winningBetToday__" + toString(aZ(dq))), ("%s%s__usersBet__" + dw)])
469482 }
470483
471484

github/deemru/w8io/169f3d6 
344.25 ms