tx · AsStSyGat4zjoxBfsjDmJDPZrWYizWLEHSDibvyXTCJV

3N7HtrKeFFLz5oy6PfGv1Lg3GwPk4gCPdGy:  -0.02600000 Waves

2024.11.25 15:52 [3386966] smart account 3N7HtrKeFFLz5oy6PfGv1Lg3GwPk4gCPdGy > SELF 0.00000000 Waves

{ "type": 13, "id": "AsStSyGat4zjoxBfsjDmJDPZrWYizWLEHSDibvyXTCJV", "fee": 2600000, "feeAssetId": null, "timestamp": 1732539206462, "version": 2, "chainId": 84, "sender": "3N7HtrKeFFLz5oy6PfGv1Lg3GwPk4gCPdGy", "senderPublicKey": "FsR18761ZAsUqsTd7TK3XmR6bhihs1UXVmpHYxz5JzQ1", "proofs": [ "EMTanNWXR95RauygNQM1qZaUJkysLoz9RC1MXAEpHgsGmJ8KdoWVgqA9E19m4gA4w7Xp2oaoLvQUwPNyGLjUqpj" ], "script": "base64:BgJHCAISBgoECAgICBIDCgEIEgMKAQESBAoCCAESAwoBARIECgIIARIAEgMKAQgSAwoBARIDCgEBEgMKAQgSAwoBCBIDCgEBEgCSAQADU0VQAgJfXwAFTVVMVDYAwIQ9AAVNVUxUOACAwtcvAA5NSU5TSE9QUEFZTUVOVACgjQYACkRBWV9NSUxMSVMAgLiZKQAFY2hhaW4JAMkBAgkAygECCAUEdGhpcwVieXRlcwABAAEACkRBWV9CTE9DS1MEByRtYXRjaDAFBWNoYWluAwkAAAIBAVcFByRtYXRjaDAAoAsDCQAAAgEBVAUHJG1hdGNoMAA8CQACAQINVW5rbm93biBjaGFpbgALV0VFS19CTE9DS1MEByRtYXRjaDAFBWNoYWluAwkAAAIBAVcFByRtYXRjaDAA4E4DCQAAAgEBVAUHJG1hdGNoMAC0AQkAAgECDVVua25vd24gY2hhaW4AClZSRl9PRkZTRVQEByRtYXRjaDAFBWNoYWluAwkAAAIBAVcFByRtYXRjaDAAAAMJAAACAQFUBQckbWF0Y2gwAJD5RQkAAgECDVVua25vd24gY2hhaW4AC3VzZHRBc3NldElkBAckbWF0Y2gwBQVjaGFpbgMJAAACAQFXBQckbWF0Y2gwASCE2nqyCAM/TtG7yo7ui5O8yYLdC136B5ao1CP5qA//uQMJAAACAQFUBQckbWF0Y2gwASBVsdifcoeC7+XjW42sBatl3ppDoS8WuwXzGreHpfHFGAkAAgECDVVua25vd24gY2hhaW4AFmRlZmF1bHRSZXN0MkFkZHJlc3NTdHIEByRtYXRjaDAFBWNoYWluAwkAAAIBAVcFByRtYXRjaDACIzNQRndZdGE4YmlFejMxenBlRmU1REpLOHdFNXRyU3BRVkY4AwkAAAIBAVQFByRtYXRjaDACIzNON1V1WWFyNjI2NFA1OEZCaFZXS1BRQWg0WXVhMmhnbmd2CQACAQINVW5rbm93biBjaGFpbgAVZGVmYXVsdFJlc3RBZGRyZXNzU3RyBAckbWF0Y2gwBQVjaGFpbgMJAAACAQFXBQckbWF0Y2gwAiMzUFFDdXZGYnZoNExrUFVucm5VMXozam5iQTFwOW0zV05odgMJAAACAQFUBQckbWF0Y2gwAiMzTXVta0dHenRDS0FYcFdEcXhrZGRvZnFYU1VicVFrdlNKeQkAAgECDVVua25vd24gY2hhaW4AEUtTX0FMTE9XX05GVF9EUkFXBAckbWF0Y2gwBQVjaGFpbgMJAAACAQFXBQckbWF0Y2gwBwMJAAACAQFUBQckbWF0Y2gwBgkAAgECDVVua25vd24gY2hhaW4BD2dldFN0cmluZ09yRmFpbAIHYWRkcmVzcwNrZXkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQdhZGRyZXNzBQNrZXkJALkJAgkAzAgCAgptYW5kYXRvcnkgCQDMCAIJAKUIAQUHYWRkcmVzcwkAzAgCAgEuCQDMCAIFA2tleQkAzAgCAg8gaXMgbm90IGRlZmluZWQFA25pbAIAABBJZHhDZmdBY3JlczJEYXBwAAEADUlkeENmZ1dsZ0RhcHAAAgAUSWR4Q2ZnUHV6emxlUG9vbERhcHAABAAUSWR4Q2ZnSW52ZXN0RnVuZERhcHAABQEKa2V5UmVzdENmZwACDiVzX19yZXN0Q29uZmlnAQ9rZXlSZXN0MkFkZHJlc3MAAg0lc19fcmVzdDJBZGRyAQ5rZXlSZXN0QWRkcmVzcwACDCVzX19yZXN0QWRkcgAMcmVzdENvbnRyYWN0CQERQGV4dHJOYXRpdmUoMTA2MikBCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMJAQ5rZXlSZXN0QWRkcmVzcwAFFWRlZmF1bHRSZXN0QWRkcmVzc1N0cgERcmVhZFJlc3RDZmdPckZhaWwBBHJlc3QJALwJAgkBD2dldFN0cmluZ09yRmFpbAIFBHJlc3QJAQprZXlSZXN0Q2ZnAAUDU0VQARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCCHJlc3QyQ2ZnA2lkeAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUIcmVzdDJDZmcFA2lkeAkArAICAipSZXN0IGNmZyBkb2Vzbid0IGNvbnRhaW4gYWRkcmVzcyBhdCBpbmRleCAJAKQDAQUDaWR4ABFJZHhDZmdTdGFraW5nRGFwcAABAA9JZHhDZmdBY3Jlc0RhcHAACAAHcmVzdENmZwkBEXJlYWRSZXN0Q2ZnT3JGYWlsAQUMcmVzdENvbnRyYWN0AA9zdGFraW5nQ29udHJhY3QJARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCBQdyZXN0Q2ZnBRFJZHhDZmdTdGFraW5nRGFwcAANYWNyZXNDb250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFB3Jlc3RDZmcFD0lkeENmZ0FjcmVzRGFwcAANcmVzdDJDb250cmFjdAkBEUBleHRyTmF0aXZlKDEwNjIpAQkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzCQEPa2V5UmVzdDJBZGRyZXNzAAUWZGVmYXVsdFJlc3QyQWRkcmVzc1N0cgAIcmVzdDJDZmcJARFyZWFkUmVzdENmZ09yRmFpbAEFDXJlc3QyQ29udHJhY3QADmFjcmVzMkNvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUIcmVzdDJDZmcFEElkeENmZ0FjcmVzMkRhcHAAC3dsZ0NvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUIcmVzdDJDZmcFDUlkeENmZ1dsZ0RhcHAAEnB1enpsZVBvb2xDb250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFCHJlc3QyQ2ZnBRRJZHhDZmdQdXp6bGVQb29sRGFwcAASaW52ZXN0RnVuZENvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUIcmVzdDJDZmcFFElkeENmZ0ludmVzdEZ1bmREYXBwARVrZXlMYXN0V2Vla1R4SWRCeVVzZXIBBGFkZHIJAKwCAgITbGFzdFdlZWtUeElkQnlVc2VyXwUEYWRkcgANd2xnQXNzZXRJZEtleQILd2xnX2Fzc2V0SWQACndsZ0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnAgCBQt3bGdDb250cmFjdAUNd2xnQXNzZXRJZEtleQIYV0xHT0xEIGlzIG5vdCBpc3N1ZWQgeWV0AQprZXlVc2VyQmV0AQRhZGRyCQCsAgICCHVzZXJCZXRfBQRhZGRyARJrZXlVc2VyV2Vla1RpY2tldHMCBGFkZHIEd2VlawkArAICCQCsAgIJAKwCAgIQdXNlcldlZWtUaWNrZXRzXwUEYWRkcgIBXwkApAMBBQR3ZWVrARNrZXlUb3RhbFdlZWtUaWNrZXRzAQR3ZWVrCQCsAgICEXRvdGFsV2Vla1RpY2tldHNfCQCkAwEFBHdlZWsBGGtleVRvdGFsV2Vla1BhcnRpY2lwYW50cwEEd2VlawkArAICAhZ0b3RhbFdlZWtQYXJ0aWNpcGFudHNfCQCkAwEFBHdlZWsBDmtleU51bU5GVDJEcmF3AQR3ZWVrCQCsAgICDG51bU5GVDJEcmF3XwkApAMBBQR3ZWVrAQ5rZXlOdW1ORlREcmF3bgEEd2VlawkArAICAgxudW1ORlREcmF3bl8JAKQDAQUEd2VlawEOa2V5V2Vla1dpbm5lcnMBBHdlZWsJAKwCAgIMd2Vla1dpbm5lcnNfCQCkAwEFBHdlZWsBCndpbm5pbmdCZXQBA2RheQkAagIJALEJAQkBBXZhbHVlAQgJAQV2YWx1ZQEJAO0HAQkAZAIJAGgCBQNkYXkFCkRBWV9CTE9DS1MFClZSRl9PRkZTRVQDdnJmAAQBBWFzSW50AQF2BAckbWF0Y2gwBQF2AwkAAQIFByRtYXRjaDACA0ludAQBbgUHJG1hdGNoMAUBbgkAAgECFWZhaWwgdG8gY2FzdCBpbnRvIEludAEKZml4ZWRQb2ludAIDdmFsCGRlY2ltYWxzBAZ0ZW5Qb3cJAGwGAAoAAAUIZGVjaW1hbHMAAAAABQRET1dOBAdsb3dQYXJ0CQCkAwEJAGoCBQN2YWwFBnRlblBvdwQGemVyb2VzCQCwAgIJAKQDAQUGdGVuUG93CQBkAgABCQCxAgEFB2xvd1BhcnQJAKwCAgkArAICCQCsAgIJAKQDAQkAaQIFA3ZhbAUGdGVuUG93AgEuBQZ6ZXJvZXMFB2xvd1BhcnQBD2dldFJhbmRvbU51bWJlcgMIbWF4VmFsdWUEc2FsdAdlbnRyb3B5AwkAZwIAAAUIbWF4VmFsdWUJAAIBAhZtYXhWYWx1ZSBzaG91bGQgYmUgPiAwBApyYW5kb21IYXNoCQDUFgEJAMsBAgUEc2FsdAUHZW50cm9weQkAagIJALEJAQUKcmFuZG9tSGFzaAUIbWF4VmFsdWUABlNDQUxFOACAwtcvAAx4cExldmVsU2NhbGUAgBkAD3hwTGV2ZWxSZWNpcFBvdwCgHwASbnVtUG9pbnRzT25MZXZlbFVwAAMAD3dsZ0Jhc2VBbW91bnRYcACA0NvD9AIBCWtleVVzZXJYUAEEYWRkcgkArAICAgd1c2VyWFBfBQRhZGRyAQxrZXlVc2VyTGV2ZWwBBGFkZHIJAKwCAgIKdXNlckxldmVsXwUEYWRkcgAFeHBXbGcAkE4BCWxldmVsQnlYUAECeHAJAGsDBQx4cExldmVsU2NhbGUJAGwGBQJ4cAAEBQ94cExldmVsUmVjaXBQb3cABAAEBQRET1dOBQZTQ0FMRTgBB2xldmVsVXACCWN1cnJMZXZlbAVuZXdYUAQIbmV3TGV2ZWwJAQlsZXZlbEJ5WFABBQVuZXdYUAkAzAgCBQhuZXdMZXZlbAkAzAgCCQBoAgUSbnVtUG9pbnRzT25MZXZlbFVwCQBlAgUIbmV3TGV2ZWwFCWN1cnJMZXZlbAUDbmlsAAhNSUxMSU9ONgCAgOmDsd4WAAtQTEFZRVJTSEFSRQCAtRgACURBWU1JTExJUwCAuJkpAAt0ZWFtQWRkcktleQIIdGVhbUFkZHIAD2xhc3RUZWFtVGltZUtleQIUbGFzdENsYWltZWRUaW1lX3RlYW0AEXRlYW1BbW91bnRMZWZ0S2V5Ag50ZWFtQW1vdW50TGVmdAAVbGFzdEFjdGl2aXRpZXNUaW1lS2V5AhpsYXN0Q2xhaW1lZFRpbWVfYWN0aXZpdGllcwAQYWN0QW1vdW50TGVmdEtleQIUYWN0aXZpdGllc0Ftb3VudExlZnQAFHN0YWtlcnNBbW91bnRMZWZ0S2V5AhFzdGFrZXJzQW1vdW50TGVmdAEZa2V5TGFzdFdsZ1RyYWRlVGltZUJ5VXNlcgEEYWRkcgkArAICAhBsYXN0QXJiVGltZVVzZXJfBQRhZGRyARprZXlMYXN0V2xnVHJhZGVMaW1pdEJ5VXNlcgEEYWRkcgkArAICAhFsYXN0V2xnTGltaXRVc2VyXwUEYWRkcgAPd2xnSXNzdWVUaW1lS2V5Ag13bGdfaXNzdWVUaW1lABJ3bGdJc3N1ZWRBbW91bnRLZXkCEHdsZ19pc3N1ZWRBbW91bnQBGmtleUFjcmVzU3Rha2VkQW1vdW50QnlVc2VyAQRhZGRyCQCsAgICGGFjcmVzU3Rha2VkQW1vdW50QnlVc2VyXwUEYWRkcgEYa2V5V2xnU3Rha2VkQW1vdW50QnlVc2VyAQRhZGRyCQCsAgICFndsZ1N0YWtlZEFtb3VudEJ5VXNlcl8FBGFkZHIAEXdsZ1N0YWtlZFRvdGFsS2V5AhR3bGdTdGFrZWRBbW91bnRUb3RhbAEWa2V5V2xnU3Rha2VkVGltZUJ5VXNlcgEEYWRkcgkArAICAhR3bGdTdGFrZWRUaW1lQnlVc2VyXwUEYWRkcgADTTZfAMCEPQADTThfAIDC1y8AClRFQU1fU0hBUkUAwJoMAA5BQ1RJVklUWV9TSEFSRQCgjQYADFBMQVlFUl9TSEFSRQCAtRgAC1lFQVJfTUlMTElTAICG68d1AAZEQVlfTVMAgLiZKQAHSVNTVUUxMACAlOvcAwAPUExBWUVSUzEwX1NIQVJFAIDqMAARTUFSS0VUSU5HMTBfU0hBUkUAoI0GAAxURUFNMTBfU0hBUkUAoI0GABFORVdfU1RBS0lOR19TVEFSVACA87jCsTIAEG1hcmtldGluZ0FkZHJLZXkCDW1hcmtldGluZ0FkZHIACnRlYW1BZHJLZXkCCHRlYW1BZGRyAA5sYXN0VGVhbVRpbUtleQIUbGFzdENsYWltZWRUaW1lX3RlYW0ADnRlYW1BbXRMZWZ0S2V5Ag50ZWFtQW1vdW50TGVmdAAUbGFzdEFjdGl2aXRpZXNUaW1LZXkCGmxhc3RDbGFpbWVkVGltZV9hY3Rpdml0aWVzAA1hY3RBbXRMZWZ0S2V5AhRhY3Rpdml0aWVzQW1vdW50TGVmdAARc3Rha2Vyc0FtdExlZnRLZXkCEXN0YWtlcnNBbW91bnRMZWZ0ARZrZXlMYXN0Q2xhaW1UaW1lQnlVc2VyAQRhZGRyCQCsAgICFGxhc3RDbGFpbWVkVGltZVVzZXJfBQRhZGRyAQ1kaXN0ckJ5UGVyaW9kAgxpc3N1ZWRBbW91bnQGcGVyaW9kCQBrAwUMaXNzdWVkQW1vdW50CQBoAgUMUExBWUVSX1NIQVJFCQBkAgUGcGVyaW9kAAEJAGgCAAYFA002XwARd2xnSXNzdWUxMFRpbWVLZXkCD3dsZ19pc3N1ZTEwVGltZQAOd2xnSXNzdWVUaW1LZXkCDXdsZ19pc3N1ZVRpbWUAD3dsZ0lzc3VlZEFtdEtleQIQd2xnX2lzc3VlZEFtb3VudAAOemJJc3N1ZWRBbXRLZXkCEnpiaWxsX2lzc3VlZEFtb3VudAEXa2V5QWNyZXNTdGFrZWRBbXRCeVVzZXIBBGFkZHIJAKwCAgIYYWNyZXNTdGFrZWRBbW91bnRCeVVzZXJfBQRhZGRyABJhY3Jlc1N0YWtkVG90YWxLZXkCFmFjcmVzU3Rha2VkQW1vdW50VG90YWwAFHRvdGFsRmFybWluZ1Bvd2VyS2V5AhF0b3RhbEZhcm1pbmdQb3dlcgAJZGFwcDJSZXN0AAAADGRhcHAyU3Rha2luZwABAAhkYXBwMldsZwACAAtkYXBwMlB1enpsZQADAA9kYXBwMkludmVzdEZ1bmQABAAUSWR4RHR4MVBlcmNHZW1XaW5uZXIAAQAVREVGQVVMVF9XRUVLTFlfUFJJWkVTAAUADUFDUkVTX0ZPUl9CRVQAgMLXLwEQa2V5VXNlckZ1bGxCb251cwEEYWRkcgkArAICAg51c2VyRnVsbEJvbnVzXwUEYWRkcgAKbGV2ZWxBY3JlcwkAzAgCAAAJAMwIAgAKCQDMCAIAFAkAzAgCACgJAMwIAgBQCQDMCAIAlgEJAMwIAgD6AQkAzAgCAJADCQDMCAIAvAUJAMwIAgDoBwUDbmlsAQ9nZXRMZXZlbEJ5QWNyZXMBBWFjcmVzBANhY3IJAGkCCQBkAgUFYWNyZXMA/8HXLwUDTThfCgEHY2hlY2tlcgIDYWNjBGl0ZW0DCQBnAgUEaXRlbQUDYWNyBQNhY2MJAGQCBQNhY2MAAQoAAiRsBQpsZXZlbEFjcmVzCgACJHMJAJADAQUCJGwKAAUkYWNjMAAACgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQdjaGVja2VyAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKARZnZXRGYXJtaW5nUG93ZXJCeUFjcmVzAQVhY3JlcwkAaAIJAGgCBQVhY3JlcwAUCQBkAgkBD2dldExldmVsQnlBY3JlcwEFBWFjcmVzAAQBHmdldEZhcm1pbmdQb3dlckJ5QWNyZXNBbmRCb251cwIFYWNyZXMGYm9udXM2BApub3RCb251c2VkCQEWZ2V0RmFybWluZ1Bvd2VyQnlBY3JlcwEFBWFjcmVzCQCUCgIJAGsDBQpub3RCb251c2VkCQBkAgUDTTZfBQZib251czYFA002XwUKbm90Qm9udXNlZAEQZ2V0RmFybWluZ1Bvd2VycwISdXNlckFkZHJTdHJPckVtcHR5DmFjcmVzMkNvbnRyYWN0BAd0b3RhbEZQCQELdmFsdWVPckVsc2UCCQCaCAIFDmFjcmVzMkNvbnRyYWN0BRR0b3RhbEZhcm1pbmdQb3dlcktleQAABAl1c2VyQWNyZXMJAQt2YWx1ZU9yRWxzZQIJAJoIAgUOYWNyZXMyQ29udHJhY3QJARdrZXlBY3Jlc1N0YWtlZEFtdEJ5VXNlcgEFEnVzZXJBZGRyU3RyT3JFbXB0eQAABAl1c2VyQm9udXMJAQt2YWx1ZU9yRWxzZQIJAJoIAgUOYWNyZXMyQ29udHJhY3QJARBrZXlVc2VyRnVsbEJvbnVzAQUSdXNlckFkZHJTdHJPckVtcHR5AAAECCR0MDc5MTQzCQEeZ2V0RmFybWluZ1Bvd2VyQnlBY3Jlc0FuZEJvbnVzAgUJdXNlckFjcmVzBQl1c2VyQm9udXMEDXVzZXJGUGJvbnVzZWQIBQgkdDA3OTE0MwJfMQQQdXNlckZQbm90Qm9udXNlZAgFCCR0MDc5MTQzAl8yCQDMCAIFB3RvdGFsRlAJAMwIAgUNdXNlckZQYm9udXNlZAkAzAgCBRB1c2VyRlBub3RCb251c2VkCQDMCAIFCXVzZXJCb251cwUDbmlsAAppZHhUb3RhbEZQAAAAEGlkeFVzZXJGUGJvbnVzZWQAAQALaXhXbGdBbW91bnQAAAAIaXhXbGdXbGcAAQAKaXhXbGdQcmljZQACAA5peFdsZ0lzc3VlVGltZQAIAA9peFdsZ1RlYW1BbUxlZnQACwATaXhXbGdUZWFtQW1BdmFpbE5vdwAMAA5peFdsZ0FjdEFtTGVmdAAPABJpeFdsZ0FjdEFtQXZhaWxOb3cAEAAQaXhXbGdBbUxlZnRUb3RhbAATABNpeFdsZ1VzZXJBbUF2YWlsTm93ABcAEGl4V2xnRWZmVXNlclRpbWUAGAASaXhXbGdJc3N1ZTEwQW1vdW50ABkAG2l4V2xnTWFya2V0aW5nSXNzdWUxMEFtb3VudAAaABZpeFdsZ1RlYW1Jc3N1ZTEwQW1vdW50ABsAD2l4V2xnVXNlcjEwcGFydAAcABBpeFdsZ0lzc3VlMTBUaW1lAB0BDGdldFdsZ1N0YXRzMgQLdXNlckFkZHJPcHQJY29udHJhY3RzBnVzZHRJZBV1c2R0QmFsYW5jZUNvcnJlY3Rpb24EDGlzc3VlZEFtb3VudAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIJAJEDAgUJY29udHJhY3RzBQhkYXBwMldsZwUPd2xnSXNzdWVkQW10S2V5AhhXTEdPTEQgaXMgbm90IGlzc3VlZCB5ZXQEB3Jlc3RVc2QJAPAHAgkAkQMCBQljb250cmFjdHMFCWRhcHAyUmVzdAUGdXNkdElkBAZ3bGdVc2QJAGUCCQDwBwIJAJEDAgUJY29udHJhY3RzBQhkYXBwMldsZwUGdXNkdElkBRV1c2R0QmFsYW5jZUNvcnJlY3Rpb24ECXB1enpsZVVzZAkA8AcCCQCRAwIFCWNvbnRyYWN0cwULZGFwcDJQdXp6bGUFBnVzZHRJZAQJYWNyZXMyVXNkCQDwBwIJAJEDAgUJY29udHJhY3RzBQxkYXBwMlN0YWtpbmcFBnVzZHRJZAQRaW52ZXN0Rm5kQ29udHJhY3QJAJEDAgUJY29udHJhY3RzBQ9kYXBwMkludmVzdEZ1bmQED2ludmVzdEZ1bmRUb3RhbAkAZAIJAPAHAgURaW52ZXN0Rm5kQ29udHJhY3QFBnVzZHRJZAkBC3ZhbHVlT3JFbHNlAgkAmggCBRFpbnZlc3RGbmRDb250cmFjdAUOemJJc3N1ZWRBbXRLZXkAAAQNdG90YWxGdW5kc1VzZAkAZAIJAGQCBQlhY3JlczJVc2QFBndsZ1VzZAUPaW52ZXN0RnVuZFRvdGFsBAV3bGdJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCcCAIJAJEDAgUJY29udHJhY3RzBQhkYXBwMldsZwILd2xnX2Fzc2V0SWQCE05vdCBpbml0aWFsaXplZCB5ZXQEA25vdwgFCWxhc3RCbG9jawl0aW1lc3RhbXAECWlzc3VlVGltZQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIJAJEDAgUJY29udHJhY3RzBQhkYXBwMldsZwUOd2xnSXNzdWVUaW1LZXkCD05vdCBpbml0aWFsaXplZAQGd2xnV2xnCQDwBwIJAJEDAgUJY29udHJhY3RzBQhkYXBwMldsZwUFd2xnSWQECXRlYW1Ub3RhbAkAawMFDGlzc3VlZEFtb3VudAUKVEVBTV9TSEFSRQUDTTZfBA50ZWFtQW1vdW50TGVmdAkBC3ZhbHVlT3JFbHNlAgkAmggCCQCRAwIFCWNvbnRyYWN0cwUIZGFwcDJXbGcFDnRlYW1BbXRMZWZ0S2V5BQl0ZWFtVG90YWwEDGxhc3RUZWFtVGltZQkBC3ZhbHVlT3JFbHNlAgkAmggCCQCRAwIFCWNvbnRyYWN0cwUIZGFwcDJXbGcFDmxhc3RUZWFtVGltS2V5BQlpc3N1ZVRpbWUECHRlYW1BZGRyCQERQGV4dHJOYXRpdmUoMTA2MikBCQEFdmFsdWUBCQCdCAIJAJEDAgUJY29udHJhY3RzBQhkYXBwMldsZwUKdGVhbUFkcktleQQWdGVhbUFtb3VudEF2YWlsYWJsZU5vdwkAlwMBCQDMCAIJAGsDBQl0ZWFtVG90YWwJAGUCBQNub3cFDGxhc3RUZWFtVGltZQkAaAIAAwULWUVBUl9NSUxMSVMJAMwIAgUOdGVhbUFtb3VudExlZnQFA25pbAQKdGVhbVdsZ29sZAkA8AcCBQh0ZWFtQWRkcgUFd2xnSWQECGFjdFRvdGFsCQBrAwUMaXNzdWVkQW1vdW50BQ5BQ1RJVklUWV9TSEFSRQUDTTZfBA1hY3RBbW91bnRMZWZ0CQELdmFsdWVPckVsc2UCCQCaCAIJAJEDAgUJY29udHJhY3RzBQhkYXBwMldsZwUNYWN0QW10TGVmdEtleQUIYWN0VG90YWwEEmxhc3RBY3Rpdml0aWVzVGltZQkBC3ZhbHVlT3JFbHNlAgkAmggCCQCRAwIFCWNvbnRyYWN0cwUIZGFwcDJXbGcFFGxhc3RBY3Rpdml0aWVzVGltS2V5BQlpc3N1ZVRpbWUEFWFjdEFtb3VudEF2YWlsYWJsZU5vdwkAlwMBCQDMCAIJAGsDBQhhY3RUb3RhbAkAZQIFA25vdwUSbGFzdEFjdGl2aXRpZXNUaW1lCQBoAgADBQtZRUFSX01JTExJUwkAzAgCBQ1hY3RBbW91bnRMZWZ0BQNuaWwECWFjdFdsZ29sZAkA8AcCCQCRAwIFCWNvbnRyYWN0cwUJZGFwcDJSZXN0BQV3bGdJZAQMbGFzdFVzZXJUaW1lCQELdmFsdWVPckVsc2UCCQCaCAIJAJEDAgUJY29udHJhY3RzBQhkYXBwMldsZwkBFmtleUxhc3RDbGFpbVRpbWVCeVVzZXIBBQt1c2VyQWRkck9wdAUJaXNzdWVUaW1lBA5sYXN0VXNlclBlcmlvZAkAaQIJAGUCBQxsYXN0VXNlclRpbWUFCWlzc3VlVGltZQULWUVBUl9NSUxMSVMECm5vd0xpbWl0ZWQJAJcDAQkAzAgCBQNub3cJAMwIAgkAZAIFCWlzc3VlVGltZQkAaAIAAwULWUVBUl9NSUxMSVMFA25pbAQJY3VyUGVyaW9kCQCXAwEJAMwIAgkAaQIJAGUCBQNub3cFCWlzc3VlVGltZQULWUVBUl9NSUxMSVMJAMwIAgACBQNuaWwEA2VmZgkBEGdldEZhcm1pbmdQb3dlcnMCBQt1c2VyQWRkck9wdAkAkQMCBQljb250cmFjdHMFDGRhcHAyU3Rha2luZwQVY3VyUGVyaW9kRGlzdHJpYnV0aW9uCQENZGlzdHJCeVBlcmlvZAIFDGlzc3VlZEFtb3VudAUJY3VyUGVyaW9kBA1wcmV2UGVyaW9kRW5kCQBkAgUJaXNzdWVUaW1lCQBoAgULWUVBUl9NSUxMSVMFCWN1clBlcmlvZAQRcHJldlByZXZQZXJpb2RFbmQJAGQCBQlpc3N1ZVRpbWUJAGgCBQtZRUFSX01JTExJUwkAZQIFCWN1clBlcmlvZAABBAJhMAkAawMFFWN1clBlcmlvZERpc3RyaWJ1dGlvbgkAZQIFCm5vd0xpbWl0ZWQFDGxhc3RVc2VyVGltZQULWUVBUl9NSUxMSVMEDXVzZXJBdmFpbGFibGUDCQAAAgUObGFzdFVzZXJQZXJpb2QFCWN1clBlcmlvZAUCYTADCQAAAgUObGFzdFVzZXJQZXJpb2QJAGUCBQljdXJQZXJpb2QAAQQCYTEJAGsDCQENZGlzdHJCeVBlcmlvZAIFDGlzc3VlZEFtb3VudAkAZQIFCWN1clBlcmlvZAABCQBlAgUNcHJldlBlcmlvZEVuZAUMbGFzdFVzZXJUaW1lBQtZRUFSX01JTExJUwkAZAIFAmExBQJhMAQCYTIJAGsDCQENZGlzdHJCeVBlcmlvZAIFDGlzc3VlZEFtb3VudAkAZQIFCWN1clBlcmlvZAACCQBlAgURcHJldlByZXZQZXJpb2RFbmQFDGxhc3RVc2VyVGltZQULWUVBUl9NSUxMSVMEAmExCQENZGlzdHJCeVBlcmlvZAIFDGlzc3VlZEFtb3VudAkAZQIFCWN1clBlcmlvZAABCQBkAgkAZAIFAmEyBQJhMQUCYTAED2Ftb3VudExlZnRUb3RhbAkBC3ZhbHVlT3JFbHNlAgkAmggCCQCRAwIFCWNvbnRyYWN0cwUIZGFwcDJXbGcFEXN0YWtlcnNBbXRMZWZ0S2V5AAAECnVzZXJBbW91bnQDCQECIT0CCQCRAwIFA2VmZgUKaWR4VG90YWxGUAAACQBrAwUNdXNlckF2YWlsYWJsZQkAkQMCBQNlZmYFEGlkeFVzZXJGUGJvbnVzZWQJAJEDAgUDZWZmBQppZHhUb3RhbEZQAAAED2xhc3RJc3N1ZTEwVGltZQkBC3ZhbHVlT3JFbHNlAgkAmggCCQCRAwIFCWNvbnRyYWN0cwUIZGFwcDJXbGcFEXdsZ0lzc3VlMTBUaW1lS2V5BRFORVdfU1RBS0lOR19TVEFSVAQNaXNzdWUxMEFtb3VudAkAawMFB0lTU1VFMTAJAJYDAQkAzAgCCQBlAgUDbm93BQ9sYXN0SXNzdWUxMFRpbWUJAMwIAgAABQNuaWwFBkRBWV9NUwQWbWFya2V0aW5nSXNzdWUxMEFtb3VudAkAawMFDWlzc3VlMTBBbW91bnQFEU1BUktFVElORzEwX1NIQVJFBQNNNl8EEXRlYW1Jc3N1ZTEwQW1vdW50CQBrAwUNaXNzdWUxMEFtb3VudAUMVEVBTTEwX1NIQVJFBQNNNl8EDnVzZXIxMEludGVydmFsCQCWAwEJAMwIAgkAZQIFA25vdwkAlgMBCQDMCAIFEU5FV19TVEFLSU5HX1NUQVJUCQDMCAIFDGxhc3RVc2VyVGltZQUDbmlsCQDMCAIAAAUDbmlsBAp1c2VyMTBwYXJ0AwkBAiE9AgkAkQMCBQNlZmYFCmlkeFRvdGFsRlAAAAkAawMJAGsDCQBrAwUHSVNTVUUxMAUOdXNlcjEwSW50ZXJ2YWwFBkRBWV9NUwkAkQMCBQNlZmYFEGlkeFVzZXJGUGJvbnVzZWQJAJEDAgUDZWZmBQppZHhUb3RhbEZQBQ9QTEFZRVJTMTBfU0hBUkUFA002XwAABA5uZXdJc3N1ZTEwVGltZQkAlgMBCQDMCAIFEU5FV19TVEFLSU5HX1NUQVJUCQDMCAIFA25vdwUDbmlsBBBhY3Jlc1N0YWtlZFRvdGFsCQELdmFsdWVPckVsc2UCCQCaCAIJAJEDAgUJY29udHJhY3RzBQxkYXBwMlN0YWtpbmcFEmFjcmVzU3Rha2RUb3RhbEtleQAACQDMCAIFDGlzc3VlZEFtb3VudAkAzAgCBQZ3bGdXbGcJAMwIAgkAawMFDXRvdGFsRnVuZHNVc2QFA004XwUMaXNzdWVkQW1vdW50CQDMCAIFDXRvdGFsRnVuZHNVc2QJAMwIAgUHcmVzdFVzZAkAzAgCBQlhY3JlczJVc2QJAMwIAgUGd2xnVXNkCQDMCAIFCXB1enpsZVVzZAkAzAgCBQlpc3N1ZVRpbWUJAMwIAgUMbGFzdFRlYW1UaW1lCQDMCAIFCXRlYW1Ub3RhbAkAzAgCBQ50ZWFtQW1vdW50TGVmdAkAzAgCBRZ0ZWFtQW1vdW50QXZhaWxhYmxlTm93CQDMCAIFCnRlYW1XbGdvbGQJAMwIAgUIYWN0VG90YWwJAMwIAgUNYWN0QW1vdW50TGVmdAkAzAgCBRVhY3RBbW91bnRBdmFpbGFibGVOb3cJAMwIAgUJYWN0V2xnb2xkCQDMCAIFCWN1clBlcmlvZAkAzAgCBQ9hbW91bnRMZWZ0VG90YWwJAMwIAgUVY3VyUGVyaW9kRGlzdHJpYnV0aW9uCQDMCAIFDGxhc3RVc2VyVGltZQkAzAgCBQ9pbnZlc3RGdW5kVG90YWwJAMwIAgUKdXNlckFtb3VudAkAzAgCBQpub3dMaW1pdGVkCQDMCAIFDWlzc3VlMTBBbW91bnQJAMwIAgUWbWFya2V0aW5nSXNzdWUxMEFtb3VudAkAzAgCBRF0ZWFtSXNzdWUxMEFtb3VudAkAzAgCBQp1c2VyMTBwYXJ0CQDMCAIFDm5ld0lzc3VlMTBUaW1lCQDMCAIJAJEDAgUDZWZmBQppZHhUb3RhbEZQCQDMCAIFEGFjcmVzU3Rha2VkVG90YWwFA25pbAANcHJvZml0QWRkcktleQIKcHJvZml0QWRkcgAZc3Rha2Vyc0Ftb3VudFBhaWRUb3RhbEtleQIWc3Rha2Vyc0Ftb3VudFBhaWRUb3RhbAEYa2V5U3Rha2Vyc0Ftb3VudFBhaWRVc2VyAQRhZGRyCQCsAgICFnN0YWtlcnNBbW91bnRQYWlkVXNlcl8FBGFkZHIBB3Byb2xvZzIACQEFYXNJbnQBCQD9BwQFDmFjcmVzMkNvbnRyYWN0AgpzYXZlTGFzdFR4BQNuaWwFA25pbAESZ2V0U3dhcExpbWl0V2xnb2xkAQRhZGRyBAhsYXN0VGltZQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEZa2V5TGFzdFdsZ1RyYWRlVGltZUJ5VXNlcgEFBGFkZHIAAAQMZGVmYXVsdExpbWl0CQELdmFsdWVPckVsc2UCCQCaCAIFDmFjcmVzMkNvbnRyYWN0CQEaa2V5QWNyZXNTdGFrZWRBbW91bnRCeVVzZXIBBQRhZGRyAAAEDWxhc3RMaW1pdExlZnQJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBGmtleUxhc3RXbGdUcmFkZUxpbWl0QnlVc2VyAQUEYWRkcgUMZGVmYXVsdExpbWl0BAxjdXJyZW50TGltaXQJAGQCBQ1sYXN0TGltaXRMZWZ0CQBrAwUMZGVmYXVsdExpbWl0CQBlAggFCWxhc3RCbG9jawl0aW1lc3RhbXAFCGxhc3RUaW1lBQpEQVlfTUlMTElTCQCXAwEJAMwIAgUMY3VycmVudExpbWl0CQDMCAIFDGRlZmF1bHRMaW1pdAUDbmlsAQ5jbGFpbUludGVybmFsMgEEYWRkcgQIY3VyU3RhdHMJAQxnZXRXbGdTdGF0czIEBQRhZGRyCQDMCAIFDXJlc3QyQ29udHJhY3QJAMwIAgUOYWNyZXMyQ29udHJhY3QJAMwIAgULd2xnQ29udHJhY3QJAMwIAgUScHV6emxlUG9vbENvbnRyYWN0CQDMCAIFEmludmVzdEZ1bmRDb250cmFjdAUDbmlsBQt1c2R0QXNzZXRJZAAABAt1c2VyVGltZUtleQkBFmtleUxhc3RDbGFpbVRpbWVCeVVzZXIBBQRhZGRyBAxsYXN0VXNlclRpbWUJAQt2YWx1ZU9yRWxzZQIJAJ8IAQULdXNlclRpbWVLZXkAAAQLdXNlckVmZlRpbWUJAJEDAgUIY3VyU3RhdHMFEGl4V2xnRWZmVXNlclRpbWUDCQAAAgUMbGFzdFVzZXJUaW1lBQt1c2VyRWZmVGltZQkAlAoCBQNuaWwAAAQDbm93CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQJaXNzdWVUaW1lCQCRAwIFCGN1clN0YXRzBQ5peFdsZ0lzc3VlVGltZQQOdGVhbUFtb3VudExlZnQJAJEDAgUIY3VyU3RhdHMFD2l4V2xnVGVhbUFtTGVmdAQKdGVhbUFtb3VudAkAZAIJAJEDAgUIY3VyU3RhdHMFE2l4V2xnVGVhbUFtQXZhaWxOb3cJAJEDAgUIY3VyU3RhdHMFFml4V2xnVGVhbUlzc3VlMTBBbW91bnQEDHRlYW1UcmFuc2ZlcgMJAGYCBQp0ZWFtQW1vdW50AAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQkBBXZhbHVlAQkAoggBBQt0ZWFtQWRkcktleQUKdGVhbUFtb3VudAUKd2xnQXNzZXRJZAUDbmlsBQNuaWwEDWFjdEFtb3VudExlZnQJAJEDAgUIY3VyU3RhdHMFDml4V2xnQWN0QW1MZWZ0BAlhY3RBbW91bnQJAJEDAgUIY3VyU3RhdHMFEml4V2xnQWN0QW1BdmFpbE5vdwQLYWN0VHJhbnNmZXIDCQBmAgUJYWN0QW1vdW50AAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUMcmVzdENvbnRyYWN0BQlhY3RBbW91bnQFCndsZ0Fzc2V0SWQFA25pbAUDbmlsBA9tYXJrZXRpbmdBbW91bnQJAJEDAgUIY3VyU3RhdHMFG2l4V2xnTWFya2V0aW5nSXNzdWUxMEFtb3VudAQRbWFya2V0aW5nVHJhbnNmZXIDCQBmAgUPbWFya2V0aW5nQW1vdW50AAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQkBBXZhbHVlAQkAoggBBRBtYXJrZXRpbmdBZGRyS2V5BQ9tYXJrZXRpbmdBbW91bnQFCndsZ0Fzc2V0SWQFA25pbAUDbmlsBAp1c2VyQW1vdW50CQCRAwIFCGN1clN0YXRzBRNpeFdsZ1VzZXJBbUF2YWlsTm93BAd1c2VyS2V5CQEYa2V5U3Rha2Vyc0Ftb3VudFBhaWRVc2VyAQUEYWRkcgQJdXNlclRvdGFsCQBkAgUKdXNlckFtb3VudAkAkQMCBQhjdXJTdGF0cwUPaXhXbGdVc2VyMTBwYXJ0BA5pc3N1ZWQxMEFtb3VudAkAkQMCBQhjdXJTdGF0cwUSaXhXbGdJc3N1ZTEwQW1vdW50CQCUCgIJAM4IAgkAzggCCQDOCAIJAMwIAgkBB1JlaXNzdWUDBQp3bGdBc3NldElkBQ5pc3N1ZWQxMEFtb3VudAYJAMwIAgkBDEludGVnZXJFbnRyeQIFEndsZ0lzc3VlZEFtb3VudEtleQkAZAIJAJEDAgUIY3VyU3RhdHMFC2l4V2xnQW1vdW50BQ5pc3N1ZWQxMEFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgURd2xnSXNzdWUxMFRpbWVLZXkJAJEDAgUIY3VyU3RhdHMFEGl4V2xnSXNzdWUxMFRpbWUJAMwIAgkBDEludGVnZXJFbnRyeQIFB3VzZXJLZXkJAGQCCQELdmFsdWVPckVsc2UCCQCfCAEFB3VzZXJLZXkAAAUKdXNlckFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgUZc3Rha2Vyc0Ftb3VudFBhaWRUb3RhbEtleQkAZAIJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUZc3Rha2Vyc0Ftb3VudFBhaWRUb3RhbEtleQAABQp1c2VyQW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCBRRzdGFrZXJzQW1vdW50TGVmdEtleQkAZQIJAJEDAgUIY3VyU3RhdHMFEGl4V2xnQW1MZWZ0VG90YWwFCnVzZXJBbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIFEXRlYW1BbW91bnRMZWZ0S2V5CQBkAgkAZQIFDnRlYW1BbW91bnRMZWZ0BQp0ZWFtQW1vdW50CQCRAwIFCGN1clN0YXRzBRZpeFdsZ1RlYW1Jc3N1ZTEwQW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCBQ9sYXN0VGVhbVRpbWVLZXkFA25vdwkAzAgCCQEMSW50ZWdlckVudHJ5AgUQYWN0QW1vdW50TGVmdEtleQkAZQIFDWFjdEFtb3VudExlZnQFCWFjdEFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgUVbGFzdEFjdGl2aXRpZXNUaW1lS2V5BQNub3cJAMwIAgkBDEludGVnZXJFbnRyeQIFC3VzZXJUaW1lS2V5BQt1c2VyRWZmVGltZQUDbmlsBQx0ZWFtVHJhbnNmZXIFC2FjdFRyYW5zZmVyBRFtYXJrZXRpbmdUcmFuc2ZlcgUJdXNlclRvdGFsAQ50YWtlWHBJbnRlcm5hbAIEYWRkcgVkZWx0YQQDbm93CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQHdGltZUtleQkBFmtleVdsZ1N0YWtlZFRpbWVCeVVzZXIBBQRhZGRyBAlhbW91bnRLZXkJARhrZXlXbGdTdGFrZWRBbW91bnRCeVVzZXIBBQRhZGRyBAhsYXN0VGltZQkBC3ZhbHVlT3JFbHNlAgkAnwgBBQd0aW1lS2V5AAAEB29sZFVzZXIJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJYW1vdW50S2V5AAAECG9sZFRvdGFsCQELdmFsdWVPckVsc2UCCQCfCAEFEXdsZ1N0YWtlZFRvdGFsS2V5AAAEAnhwCQBrAwkAawMFBXhwV2xnBQdvbGRVc2VyBQ93bGdCYXNlQW1vdW50WHAJAGUCBQhsYXN0VGltZQUDbm93BQlEQVlNSUxMSVMJAJUKAwkAzAgCCQEMSW50ZWdlckVudHJ5AgUHdGltZUtleQUDbm93CQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlhbW91bnRLZXkJAGQCBQdvbGRVc2VyBQVkZWx0YQkAzAgCCQEMSW50ZWdlckVudHJ5AgURd2xnU3Rha2VkVG90YWxLZXkJAGQCBQhvbGRUb3RhbAUFZGVsdGEFA25pbAUCeHAFB29sZFVzZXIBEW9wZW5DaGVzdEludGVybmFsAQRhZGRyBAR3ZWVrCQBpAgUGaGVpZ2h0BQtXRUVLX0JMT0NLUwQIZHJhd1dlZWsJAGUCBQR3ZWVrAAEECW51bVByaXplcwkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEOa2V5TnVtTkZUMkRyYXcBBQhkcmF3V2VlawUVREVGQVVMVF9XRUVLTFlfUFJJWkVTBAtwcml6ZXNEcmF3bgkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEOa2V5TnVtTkZURHJhd24BBQhkcmF3V2VlawAABAt1c2VyVGlja2V0cwkBC3ZhbHVlT3JFbHNlAgkAnwgBCQESa2V5VXNlcldlZWtUaWNrZXRzAgUEYWRkcgUIZHJhd1dlZWsAAAMJAGcCAAAFC3VzZXJUaWNrZXRzCQCUCgIFA25pbAUEdW5pdAQLd2Vla1RpY2tldHMJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBE2tleVRvdGFsV2Vla1RpY2tldHMBBQhkcmF3V2VlawAAAwkAZwIAAAULd2Vla1RpY2tldHMJAJQKAgkAzAgCCQELRGVsZXRlRW50cnkBCQESa2V5VXNlcldlZWtUaWNrZXRzAgUEYWRkcgUIZHJhd1dlZWsFA25pbAUEdW5pdAQHZW50cm9weQkBBXZhbHVlAQgJAQV2YWx1ZQEJAO0HAQkAaAIFBHdlZWsFC1dFRUtfQkxPQ0tTA3ZyZgQEc2FsdAkA2QQBCQCRAwIJALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBCQEVa2V5TGFzdFdlZWtUeElkQnlVc2VyAQUEYWRkcgIKNDJfREVGQVVMVAIBXwABBAZyYW5kb20JAQ9nZXRSYW5kb21OdW1iZXIDBQt3ZWVrVGlja2V0cwUEc2FsdAUHZW50cm9weQMJAGYCCQBoAgULdXNlclRpY2tldHMFCW51bVByaXplcwUGcmFuZG9tBAtpc3N1ZVJlc3VsdAkA/AcEBQ5hY3JlczJDb250cmFjdAIIaXNzdWVORlQJAMwIAgUEYWRkcgkAzAgCBRRJZHhEdHgxUGVyY0dlbVdpbm5lcgUDbmlsBQNuaWwEB3dpbm5lcnMJAKIIAQkBDmtleVdlZWtXaW5uZXJzAQUIZHJhd1dlZWsECm5ld1dpbm5lcnMDCQEJaXNEZWZpbmVkAQUHd2lubmVycwkArAICCQCsAgIJAQV2YWx1ZQEFB3dpbm5lcnMCAV8FBGFkZHIFBGFkZHIJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDmtleU51bU5GVERyYXduAQUIZHJhd1dlZWsJAGQCBQtwcml6ZXNEcmF3bgABCQDMCAIJAQtEZWxldGVFbnRyeQEJARJrZXlVc2VyV2Vla1RpY2tldHMCBQRhZGRyBQhkcmF3V2VlawkAzAgCCQELU3RyaW5nRW50cnkCCQEOa2V5V2Vla1dpbm5lcnMBBQhkcmF3V2VlawUKbmV3V2lubmVycwUDbmlsBQtpc3N1ZVJlc3VsdAQHcmFuZG9tMQkAZAIJAQ9nZXRSYW5kb21OdW1iZXIDAAkJAMsBAgEBQgUEc2FsdAUHZW50cm9weQABBAtjb25zVGlja2V0cwkAawMFC3VzZXJUaWNrZXRzBQdyYW5kb20xAAoJAJQKAgkAzAgCCQELRGVsZXRlRW50cnkBCQESa2V5VXNlcldlZWtUaWNrZXRzAgUEYWRkcgUIZHJhd1dlZWsJAMwIAgkBDEludGVnZXJFbnRyeQIJARJrZXlVc2VyV2Vla1RpY2tldHMCBQRhZGRyBQR3ZWVrBQtjb25zVGlja2V0cwUDbmlsBQtjb25zVGlja2V0cwEUY2xhaW1UaWNrZXRzSW50ZXJuYWwCBGFkZHIKdXNlckJldFN0cgQEd2VlawkAaQIFBmhlaWdodAULV0VFS19CTE9DS1MECnRpY2tldHNLZXkJARJrZXlVc2VyV2Vla1RpY2tldHMCBQRhZGRyBQR3ZWVrBAZkYXlCZXQJALUJAgUKdXNlckJldFN0cgIBXwQPb2xkVG90YWxUaWNrZXRzCQELdmFsdWVPckVsc2UCCQCfCAEJARNrZXlUb3RhbFdlZWtUaWNrZXRzAQUEd2VlawAABApvbGRUaWNrZXRzCQELdmFsdWVPckVsc2UCCQCfCAEFCnRpY2tldHNLZXkAAAQMZGVsdGFUaWNrZXRzAwkAAAIJAQp3aW5uaW5nQmV0AQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBmRheUJldAAACQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUGZGF5QmV0AAEAAQAABA9vbGRQYXJ0aWNpcGFudHMJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBGGtleVRvdGFsV2Vla1BhcnRpY2lwYW50cwEFBHdlZWsAAAQSdXBkYXRlUGFydGljaXBhbnRzAwMJAAACBQpvbGRUaWNrZXRzAAAJAAACBQxkZWx0YVRpY2tldHMAAQcJAMwIAgkBDEludGVnZXJFbnRyeQIJARhrZXlUb3RhbFdlZWtQYXJ0aWNpcGFudHMBBQR3ZWVrCQBkAgUPb2xkUGFydGljaXBhbnRzAAEFA25pbAUDbmlsCQCUCgIDCQAAAgUMZGVsdGFUaWNrZXRzAAAFA25pbAkAzQgCCQDNCAIFEnVwZGF0ZVBhcnRpY2lwYW50cwkBDEludGVnZXJFbnRyeQIFCnRpY2tldHNLZXkJAGQCBQpvbGRUaWNrZXRzBQxkZWx0YVRpY2tldHMJAQxJbnRlZ2VyRW50cnkCCQETa2V5VG90YWxXZWVrVGlja2V0cwEFBHdlZWsJAGQCBQ9vbGRUb3RhbFRpY2tldHMFDGRlbHRhVGlja2V0cwUMZGVsdGFUaWNrZXRzDgFpAQ1jb25zdHJ1Y3RvclYxBAhyZXN0QWRkcg1tYXJrZXRpbmdBZGRyCHRlYW1BZGRyCnByb2ZpdEFkZHIDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAMJAQlpc0RlZmluZWQBCQChCAEFDXdsZ0Fzc2V0SWRLZXkJAAIBAhNBbHJlYWR5IGluaXRpYWxpemVkBAxpc3N1ZWRBbW91bnQFCE1JTExJT042BAVpc3N1ZQkAwwgHAgZXTEdPTEQCIFdhdmVzTGFuZHMgR29sZCBpbnZlc3RtZW50IHRva2VuBQxpc3N1ZWRBbW91bnQACAYFBHVuaXQAAAQHYXNzZXRJZAkAuAgBBQVpc3N1ZQkAzAgCBQVpc3N1ZQkAzAgCCQEMSW50ZWdlckVudHJ5AgUPd2xnSXNzdWVUaW1lS2V5CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgUSd2xnSXNzdWVkQW1vdW50S2V5BQxpc3N1ZWRBbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIFGXN0YWtlcnNBbW91bnRQYWlkVG90YWxLZXkAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgUUc3Rha2Vyc0Ftb3VudExlZnRLZXkJAGsDBQhNSUxMSU9ONgULUExBWUVSU0hBUkUFBU1VTFQ2CQDMCAIJAQtCaW5hcnlFbnRyeQIFDXdsZ0Fzc2V0SWRLZXkFB2Fzc2V0SWQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDmtleVJlc3RBZGRyZXNzAAUIcmVzdEFkZHIJAMwIAgkBC1N0cmluZ0VudHJ5AgUQbWFya2V0aW5nQWRkcktleQUNbWFya2V0aW5nQWRkcgkAzAgCCQELU3RyaW5nRW50cnkCBQt0ZWFtQWRkcktleQUIdGVhbUFkZHIJAMwIAgkBC1N0cmluZ0VudHJ5AgUNcHJvZml0QWRkcktleQUKcHJvZml0QWRkcgUDbmlsAWkBDWNvbnN0cnVjdG9yVjIBCXJlc3QyQWRkcgMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECEVBlcm1pc3Npb24gZGVuaWVkCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQ9rZXlSZXN0MkFkZHJlc3MABQlyZXN0MkFkZHIFA25pbAFpAQZidXlXbGcBDG1pblRvUmVjZWl2ZQQMcHJvbG9nUmVzdWx0CQEHcHJvbG9nMgADCQAAAgUMcHJvbG9nUmVzdWx0BQxwcm9sb2dSZXN1bHQDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAiJleGFjdGx5IDEgcGF5bWVudCBtdXN0IGJlIGF0dGFjaGVkBANwbXQJAJEDAggFAWkIcGF5bWVudHMAAAQHdXNkdEFtdAgFA3BtdAZhbW91bnQDAwkBASEBCQEJaXNEZWZpbmVkAQgFA3BtdAdhc3NldElkBgkBAiE9AgkBBXZhbHVlAQgFA3BtdAdhc3NldElkBQt1c2R0QXNzZXRJZAkAAgECE1VTRFQgcGF5bWVudHMgb25seSEEBmNhbGxlcggFAWkGY2FsbGVyBARhZGRyCQClCAEFBmNhbGxlcgMJAGYCBQ5NSU5TSE9QUEFZTUVOVAUHdXNkdEFtdAkAAgEJAKwCAgkArAICAhJZb3UgY2FuIHRyYWRlIG1pbiAJAQpmaXhlZFBvaW50AgUOTUlOU0hPUFBBWU1FTlQABgIFIFVTRFQECGN1clN0YXRzCQEMZ2V0V2xnU3RhdHMyBAIACQDMCAIFDXJlc3QyQ29udHJhY3QJAMwIAgUOYWNyZXMyQ29udHJhY3QJAMwIAgULd2xnQ29udHJhY3QJAMwIAgUScHV6emxlUG9vbENvbnRyYWN0CQDMCAIFEmludmVzdEZ1bmRDb250cmFjdAUDbmlsBQt1c2R0QXNzZXRJZAUHdXNkdEFtdAQMY3VyV2xnQW1vdW50CQCRAwIFCGN1clN0YXRzBQtpeFdsZ0Ftb3VudAQId2xnUHJpY2UJAJEDAgUIY3VyU3RhdHMFCml4V2xnUHJpY2UECGJ1eVByaWNlCQBuBAUId2xnUHJpY2UABgAFBQdDRUlMSU5HBAl3bGdBbW91bnQJAGsDBQd1c2R0QW10BQVNVUxUOAUIYnV5UHJpY2UEBm1heFdsZwkBEmdldFN3YXBMaW1pdFdsZ29sZAEFBGFkZHIDCQBmAgUJd2xnQW1vdW50BQZtYXhXbGcJAAIBCQCsAgIJAKwCAgIQWW91IGNhbiBnZXQgbWF4IAkBCmZpeGVkUG9pbnQCBQZtYXhXbGcACAIVIFdMR09MRCBhdCB0aGUgbW9tZW50AwkAZgIFDG1pblRvUmVjZWl2ZQUJd2xnQW1vdW50CQACAQIwUHJpY2UgY2hhbmdlZCBkdXJpbmcgb3BlcmF0aW9uLCBwbGVhc2UgdHJ5IGFnYWluBAxwcm9maXRBbW91bnQJAGkCBQd1c2R0QW10AAYJAJQKAgkAzAgCCQEHUmVpc3N1ZQMFCndsZ0Fzc2V0SWQFCXdsZ0Ftb3VudAYJAMwIAgkBDEludGVnZXJFbnRyeQIFEndsZ0lzc3VlZEFtb3VudEtleQkAZAIFDGN1cldsZ0Ftb3VudAUJd2xnQW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEZa2V5TGFzdFdsZ1RyYWRlVGltZUJ5VXNlcgEFBGFkZHIIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEaa2V5TGFzdFdsZ1RyYWRlTGltaXRCeVVzZXIBBQRhZGRyCQBlAgUGbWF4V2xnBQl3bGdBbW91bnQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQkBBXZhbHVlAQkAoggBBQ1wcm9maXRBZGRyS2V5BQxwcm9maXRBbW91bnQFC3VzZHRBc3NldElkCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFBmNhbGxlcgUJd2xnQW1vdW50BQp3bGdBc3NldElkBQNuaWwFDHByb2xvZ1Jlc3VsdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQ5idXlXbGdSRUFET05MWQIHYWRkcmVzcwd1c2R0QW10BAhjdXJTdGF0cwkBDGdldFdsZ1N0YXRzMgQCAAkAzAgCBQ1yZXN0MkNvbnRyYWN0CQDMCAIFDmFjcmVzMkNvbnRyYWN0CQDMCAIFC3dsZ0NvbnRyYWN0CQDMCAIFEnB1enpsZVBvb2xDb250cmFjdAkAzAgCBRJpbnZlc3RGdW5kQ29udHJhY3QFA25pbAULdXNkdEFzc2V0SWQFB3VzZHRBbXQECHdsZ1ByaWNlCQCRAwIFCGN1clN0YXRzBQppeFdsZ1ByaWNlBAhidXlQcmljZQkAbgQFCHdsZ1ByaWNlAAYABQUHQ0VJTElORwQJd2xnQW1vdW50CQBrAwUHdXNkdEFtdAUFTVVMVDgFCGJ1eVByaWNlBAZtYXhXbGcJARJnZXRTd2FwTGltaXRXbGdvbGQBBQdhZGRyZXNzBAdtYXhVc2R0CQBrAwUGbWF4V2xnBQhidXlQcmljZQUFTVVMVDgEDHByb2ZpdEFtb3VudAkAaQIFB3VzZHRBbXQABgkAlAoCBQNuaWwJAMwIAgUJd2xnQW1vdW50CQDMCAIFDk1JTlNIT1BQQVlNRU5UCQDMCAIFB21heFVzZHQJAMwIAgUMcHJvZml0QW1vdW50BQNuaWwBaQEHc2VsbFdsZwEJbWluQW1vdW50BAxwcm9sb2dSZXN1bHQJAQdwcm9sb2cyAAMJAAACBQxwcm9sb2dSZXN1bHQFDHByb2xvZ1Jlc3VsdAMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECImV4YWN0bHkgMSBwYXltZW50IG11c3QgYmUgYXR0YWNoZWQEA3BtdAkAkQMCCAUBaQhwYXltZW50cwAABAZ3bGdBbXQIBQNwbXQGYW1vdW50BAZjYWxsZXIIBQFpBmNhbGxlcgQEYWRkcgkApQgBBQZjYWxsZXIEBm1heFdsZwkBEmdldFN3YXBMaW1pdFdsZ29sZAEFBGFkZHIDCQBmAgUGd2xnQW10BQZtYXhXbGcJAAIBCQCsAgIJAKwCAgISWW91IGNhbiBzcGVuZCBtYXggCQEKZml4ZWRQb2ludAIFBm1heFdsZwAIAhUgV0xHT0xEIGF0IHRoZSBtb21lbnQDAwkBASEBCQEJaXNEZWZpbmVkAQgFA3BtdAdhc3NldElkBgkBAiE9AgkBBXZhbHVlAQgFA3BtdAdhc3NldElkBQp3bGdBc3NldElkCQACAQIVV0xHT0xEIHBheW1lbnRzIG9ubHkhBAhjdXJTdGF0cwkBDGdldFdsZ1N0YXRzMgQCAAkAzAgCBQ1yZXN0MkNvbnRyYWN0CQDMCAIFDmFjcmVzMkNvbnRyYWN0CQDMCAIFC3dsZ0NvbnRyYWN0CQDMCAIFEnB1enpsZVBvb2xDb250cmFjdAkAzAgCBRJpbnZlc3RGdW5kQ29udHJhY3QFA25pbAULdXNkdEFzc2V0SWQAAAQMY3VyV2xnQW1vdW50CQCRAwIFCGN1clN0YXRzBQtpeFdsZ0Ftb3VudAQJc2VsbFByaWNlCQBpAgkAkQMCBQhjdXJTdGF0cwUKaXhXbGdQcmljZQACBAd1c2R0QW10CQBrAwUGd2xnQW10BQlzZWxsUHJpY2UFBU1VTFQ4AwkAZgIFDk1JTlNIT1BQQVlNRU5UBQd1c2R0QW10CQACAQkArAICCQCsAgICEllvdSBjYW4gdHJhZGUgbWluIAkBCmZpeGVkUG9pbnQCBQ5NSU5TSE9QUEFZTUVOVAAGAgUgVVNEVAMJAGYCBQltaW5BbW91bnQFB3VzZHRBbXQJAAIBAjBQcmljZSBjaGFuZ2VkIGR1cmluZyBvcGVyYXRpb24sIHBsZWFzZSB0cnkgYWdhaW4EDHByb2ZpdEFtb3VudAkAaQIFB3VzZHRBbXQABQkAlAoCCQDMCAIJAQRCdXJuAgUKd2xnQXNzZXRJZAUGd2xnQW10CQDMCAIJAQxJbnRlZ2VyRW50cnkCBRJ3bGdJc3N1ZWRBbW91bnRLZXkJAGUCBQxjdXJXbGdBbW91bnQFBndsZ0FtdAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBGWtleUxhc3RXbGdUcmFkZVRpbWVCeVVzZXIBBQRhZGRyCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBGmtleUxhc3RXbGdUcmFkZUxpbWl0QnlVc2VyAQUEYWRkcgkAZQIFBm1heFdsZwUGd2xnQW10CQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQV2YWx1ZQEJAKIIAQUNcHJvZml0QWRkcktleQUMcHJvZml0QW1vdW50BQt1c2R0QXNzZXRJZAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQZjYWxsZXIFB3VzZHRBbXQFC3VzZHRBc3NldElkBQNuaWwFDHByb2xvZ1Jlc3VsdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQ9zZWxsV2xnUkVBRE9OTFkCB2FkZHJlc3MGd2xnQW10BAZtYXhXbGcJARJnZXRTd2FwTGltaXRXbGdvbGQBBQdhZGRyZXNzBAhjdXJTdGF0cwkBDGdldFdsZ1N0YXRzMgQCAAkAzAgCBQ1yZXN0MkNvbnRyYWN0CQDMCAIFDmFjcmVzMkNvbnRyYWN0CQDMCAIFC3dsZ0NvbnRyYWN0CQDMCAIFEnB1enpsZVBvb2xDb250cmFjdAkAzAgCBRJpbnZlc3RGdW5kQ29udHJhY3QFA25pbAULdXNkdEFzc2V0SWQAAAQJc2VsbFByaWNlCQBpAgkAkQMCBQhjdXJTdGF0cwUKaXhXbGdQcmljZQACBAd1c2R0QW10CQBrAwUGd2xnQW10BQlzZWxsUHJpY2UFBU1VTFQ4BAZtaW5XbGcJAGsDBQ5NSU5TSE9QUEFZTUVOVAUFTVVMVDgFCXNlbGxQcmljZQQMcHJvZml0QW1vdW50CQBpAgUHdXNkdEFtdAAFCQCUCgIFA25pbAkAzAgCBQd1c2R0QW10CQDMCAIFBm1pbldsZwkAzAgCBQZtYXhXbGcJAMwIAgUMcHJvZml0QW1vdW50BQNuaWwBaQEFY2xhaW0ABAxwcm9sb2dSZXN1bHQJAQdwcm9sb2cyAAMJAAACBQxwcm9sb2dSZXN1bHQFDHByb2xvZ1Jlc3VsdAMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBA0kdDAxNDA0NTE0MTE0CQEOY2xhaW1JbnRlcm5hbDIBCQClCAEIBQFpBmNhbGxlcgQHYWN0aW9ucwgFDSR0MDE0MDQ1MTQxMTQCXzEEEHdsZ0NsYWltZWRBbW91bnQIBQ0kdDAxNDA0NTE0MTE0Al8yCQCUCgIJAM0IAgUHYWN0aW9ucwkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBRB3bGdDbGFpbWVkQW1vdW50BQp3bGdBc3NldElkBQxwcm9sb2dSZXN1bHQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQESb25TdGFrZVVuc3Rha2VMYW5kAQRhZGRyAwMDCQECIT0CCAUBaQZjYWxsZXIFD3N0YWtpbmdDb250cmFjdAkBAiE9AggFAWkGY2FsbGVyBQ1hY3Jlc0NvbnRyYWN0BwkBAiE9AggFAWkGY2FsbGVyBQ5hY3JlczJDb250cmFjdAcJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAQNJHQwMTQ0MzMxNDQ4NwkBDmNsYWltSW50ZXJuYWwyAQUEYWRkcgQHYWN0aW9ucwgFDSR0MDE0NDMzMTQ0ODcCXzEEEHdsZ0NsYWltZWRBbW91bnQIBQ0kdDAxNDQzMzE0NDg3Al8yCQCUCgIDCQBmAgUQd2xnQ2xhaW1lZEFtb3VudAAACQDNCAIFB2FjdGlvbnMJAQ5TY3JpcHRUcmFuc2ZlcgMJARFAZXh0ck5hdGl2ZSgxMDYyKQEFBGFkZHIFEHdsZ0NsYWltZWRBbW91bnQFCndsZ0Fzc2V0SWQFB2FjdGlvbnMFEHdsZ0NsYWltZWRBbW91bnQBaQEKYnVybldsZ29sZAEGd2xnQW10AwkBAiE9AggFAWkGY2FsbGVyBQ5hY3JlczJDb250cmFjdAkAAgECEVBlcm1pc3Npb24gZGVuaWVkBAhjdXJTdGF0cwkBDGdldFdsZ1N0YXRzMgQCAAkAzAgCBQ1yZXN0MkNvbnRyYWN0CQDMCAIFDmFjcmVzMkNvbnRyYWN0CQDMCAIFC3dsZ0NvbnRyYWN0CQDMCAIFEnB1enpsZVBvb2xDb250cmFjdAkAzAgCBRJpbnZlc3RGdW5kQ29udHJhY3QFA25pbAULdXNkdEFzc2V0SWQAAAMJAGYCBQZ3bGdBbXQJAJEDAgUIY3VyU3RhdHMFCGl4V2xnV2xnCQACAQkArAICCQCsAgIJAKwCAgIFT25seSAJAQpmaXhlZFBvaW50AgkAkQMCBQhjdXJTdGF0cwUIaXhXbGdXbGcACAIlIFdMR09MRCBsZWZ0IG9uIGNvbnRyYWN0LCBjYW4ndCBidXJuIAkBCmZpeGVkUG9pbnQCBQZ3bGdBbXQACAQNd2xnQW1vdW50TGVmdAkAZQIJAJEDAgUIY3VyU3RhdHMFC2l4V2xnQW1vdW50BQZ3bGdBbXQJAJQKAgkAzAgCCQEEQnVybgIFCndsZ0Fzc2V0SWQFBndsZ0FtdAkAzAgCCQEMSW50ZWdlckVudHJ5AgUSd2xnSXNzdWVkQW1vdW50S2V5BQ13bGdBbW91bnRMZWZ0BQNuaWwFDXdsZ0Ftb3VudExlZnQBaQEMYmV0Rm9yVGlja2V0AQNiZXQEDHByb2xvZ1Jlc3VsdAkBB3Byb2xvZzIAAwkAAAIFDHByb2xvZ1Jlc3VsdAUMcHJvbG9nUmVzdWx0AwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQEBGFkZHIJAKUIAQgFAWkGY2FsbGVyBAhkcmF3V2VlawkAZQIJAGkCBQZoZWlnaHQFC1dFRUtfQkxPQ0tTAAEEC3VzZXJUaWNrZXRzCQELdmFsdWVPckVsc2UCCQCfCAEJARJrZXlVc2VyV2Vla1RpY2tldHMCBQRhZGRyBQhkcmF3V2VlawAABAt3ZWVrVGlja2V0cwkBC3ZhbHVlT3JFbHNlAgkAnwgBCQETa2V5VG90YWxXZWVrVGlja2V0cwEFCGRyYXdXZWVrAAADAwkAZgIFC3VzZXJUaWNrZXRzAAAJAGYCBQt3ZWVrVGlja2V0cwAABwkAAgECG1BsZWFzZSBvcGVuIHRoZSBjaGVzdCBmaXJzdAMJAQIhPQIJAGkCBQNiZXQABAAACQACAQIbSW52YWxpZCBiZXQ6IHNob3VsZCBiZSAwLi4zBAZtb21lbnQJAGoCBQZoZWlnaHQFCkRBWV9CTE9DS1MDCQBmAgUGbW9tZW50CQBlAgUKREFZX0JMT0NLUwADCQACAQkArAICCQCsAgICMUNhbm5vdCBiZXQ6IHRoZSBkYXkgaXMgYWxtb3N0IGVuZGVkLCBwbGVhc2Ugd2FpdCAJAKQDAQkAZQIFCkRBWV9CTE9DS1MFBm1vbWVudAIHIGJsb2NrcwQLc3Rha2VkQWNyZXMJAQt2YWx1ZU9yRWxzZQIJAJoIAgUOYWNyZXMyQ29udHJhY3QJARdrZXlBY3Jlc1N0YWtlZEFtdEJ5VXNlcgEFBGFkZHIAAAMJAGYCBQ1BQ1JFU19GT1JfQkVUBQtzdGFrZWRBY3JlcwkAAgEJAKwCAgkArAICAhtZb3UgbmVlZCB0byBzdGFrZSBhdCBsZWFzdCAJAQpmaXhlZFBvaW50AgUNQUNSRVNfRk9SX0JFVAAIAg0gQUNSRVMgdG8gYmV0BAh0b21vcnJvdwkAZAIJAGkCBQZoZWlnaHQFCkRBWV9CTE9DS1MAAQQGYmV0S2V5CQEKa2V5VXNlckJldAEFBGFkZHIEDW9sZFVzZXJCZXRTdHIJAKIIAQUGYmV0S2V5BAtuZXdCZXRFbnRyeQkBC1N0cmluZ0VudHJ5AgUGYmV0S2V5CQCsAgIJAKwCAgkApAMBBQh0b21vcnJvdwIBXwkApAMBBQNiZXQDCQEJaXNEZWZpbmVkAQUNb2xkVXNlckJldFN0cgQHdXNlckJldAkBBXZhbHVlAQUNb2xkVXNlckJldFN0cgMJAAACCQCRAwIJALUJAgUHdXNlckJldAIBXwAACQCkAwEFCHRvbW9ycm93CQACAQIcWW91IGFscmVhZHkgYmV0IGZvciB0b21vcnJvdwQBcgkBFGNsYWltVGlja2V0c0ludGVybmFsAgUEYWRkcgUHdXNlckJldAkAlAoCCQDNCAIIBQFyAl8xBQtuZXdCZXRFbnRyeQgFAXICXzIJAJQKAgkAzAgCBQtuZXdCZXRFbnRyeQUDbmlsAAAJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEJdGFrZVdsZ1hwAQRhZGRyAwkBAiE9AggFAWkGY2FsbGVyBQ9zdGFraW5nQ29udHJhY3QJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAQNJHQwMTcwOTcxNzE0MAkBDnRha2VYcEludGVybmFsAgUEYWRkcgAABAdhY3Rpb25zCAUNJHQwMTcwOTcxNzE0MAJfMQQCeHAIBQ0kdDAxNzA5NzE3MTQwAl8yCQCUCgIFB2FjdGlvbnMFAnhwAWkBEmNoZWNrV2xnWHBSRUFET05MWQEEYWRkcgQNJHQwMTcyMTcxNzI2NQkBDnRha2VYcEludGVybmFsAgUEYWRkcgAABAdpZ25vcmVkCAUNJHQwMTcyMTcxNzI2NQJfMQQHZGVsdGFYUAgFDSR0MDE3MjE3MTcyNjUCXzIEBW5ld1hQCQBkAgkBC3ZhbHVlT3JFbHNlAgkAmggCBQ9zdGFraW5nQ29udHJhY3QJAQlrZXlVc2VyWFABBQRhZGRyAAAFB2RlbHRhWFAECWx2bFBvaW50cwkBB2xldmVsVXACCQELdmFsdWVPckVsc2UCCQCaCAIFD3N0YWtpbmdDb250cmFjdAkBDGtleVVzZXJMZXZlbAEFBGFkZHIAAAUFbmV3WFAJAJQKAgUDbmlsCQDNCAIFCWx2bFBvaW50cwUFbmV3WFABaQEMc2V0TnVtUHJpemVzAQludW1Qcml6ZXMDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAQEd2VlawkAaQIFBmhlaWdodAULV0VFS19CTE9DS1MJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDmtleU51bU5GVDJEcmF3AQUEd2VlawUJbnVtUHJpemVzBQNuaWwFCW51bVByaXplcwFpAQlvcGVuQ2hlc3QAAwkBASEBBRFLU19BTExPV19ORlRfRFJBVwkAAgECFFRlbXBvcmFyaWx5IGRpc2FibGVkBAxwcm9sb2dSZXN1bHQJAQdwcm9sb2cyAAMJAAACBQxwcm9sb2dSZXN1bHQFDHByb2xvZ1Jlc3VsdAMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBAhkcmF3V2VlawkAZQIJAGkCBQZoZWlnaHQFC1dFRUtfQkxPQ0tTAAEEBGFkZHIJAKUIAQgFAWkGY2FsbGVyBAt1c2VyVGlja2V0cwkBC3ZhbHVlT3JFbHNlAgkAnwgBCQESa2V5VXNlcldlZWtUaWNrZXRzAgUEYWRkcgUIZHJhd1dlZWsAAAMJAGcCAAAFC3VzZXJUaWNrZXRzCQACAQIZTm8gZ2VtcyB0byBvcGVuIHRoZSBjaGVzdAkBEW9wZW5DaGVzdEludGVybmFsAQUEYWRkcgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgAJj+2G", "height": 3386966, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 4EbzTKshDBTuVWUL49Cv8rcPoy6tBZuoz1bkHrcUMgr5 Next: J1MKT2c23fPEq9HGgY8L3waCiyk8qshDeYedpnqZYJEY Diff:
OldNewDifferences
3434 let j = {
3535 let h = f
3636 if ((base58'2W' == h))
37+ then 0
38+ else if ((base58'2T' == h))
39+ then 1146000
40+ else throw("Unknown chain")
41+ }
42+
43+let k = {
44+ let h = f
45+ if ((base58'2W' == h))
3746 then base58'9wc3LXNA4TEBsXyKtoLE9mrbDD7WMHXvXrCjZvabLAsi'
3847 else if ((base58'2T' == h))
3948 then base58'6mWwf9mZBjVgkC54idpyaZLQfAosD914wT8fGf2iiY63'
4049 else throw("Unknown chain")
4150 }
4251
43-let k = {
52+let l = {
4453 let h = f
4554 if ((base58'2W' == h))
4655 then "3PFwYta8biEz31zpeFe5DJK8wE5trSpQVF8"
4958 else throw("Unknown chain")
5059 }
5160
52-let l = {
61+let m = {
5362 let h = f
5463 if ((base58'2W' == h))
5564 then "3PQCuvFbvh4LkPUnrnU1z3jnbA1p9m3WNhv"
5867 else throw("Unknown chain")
5968 }
6069
61-let m = {
70+let n = {
6271 let h = f
6372 if ((base58'2W' == h))
6473 then false
6776 else throw("Unknown chain")
6877 }
6978
70-func n (o,p) = valueOrErrorMessage(getString(o, p), makeString(["mandatory ", toString(o), ".", p, " is not defined"], ""))
79+func o (p,q) = valueOrErrorMessage(getString(p, q), makeString(["mandatory ", toString(p), ".", q, " is not defined"], ""))
7180
7281
73-let q = 1
82+let r = 1
7483
75-let r = 2
84+let s = 2
7685
77-let s = 4
86+let t = 4
7887
79-let t = 5
88+let u = 5
8089
81-func u () = "%s__restConfig"
90+func v () = "%s__restConfig"
8291
8392
84-func v () = "%s__rest2Addr"
93+func w () = "%s__rest2Addr"
8594
8695
87-func w () = "%s__restAddr"
96+func x () = "%s__restAddr"
8897
8998
90-let x = addressFromStringValue(valueOrElse(getString(this, w()), l))
99+let y = addressFromStringValue(valueOrElse(getString(this, x()), m))
91100
92-func y (z) = split_4C(n(z, u()), a)
101+func z (A) = split_4C(o(A, v()), a)
93102
94103
95-func A (B,C) = valueOrErrorMessage(addressFromString(B[C]), ("Rest cfg doesn't contain address at index " + toString(C)))
104+func B (C,D) = valueOrErrorMessage(addressFromString(C[D]), ("Rest cfg doesn't contain address at index " + toString(D)))
96105
97106
98-let D = 1
107+let E = 1
99108
100-let E = 8
109+let F = 8
101110
102-let F = y(x)
111+let G = z(y)
103112
104-let G = A(F, D)
113+let H = B(G, E)
105114
106-let H = A(F, E)
115+let I = B(G, F)
107116
108-let I = addressFromStringValue(valueOrElse(getString(this, v()), k))
117+let J = addressFromStringValue(valueOrElse(getString(this, w()), l))
109118
110-let B = y(I)
119+let C = z(J)
111120
112-let J = A(B, q)
121+let K = B(C, r)
113122
114-let K = A(B, r)
123+let L = B(C, s)
115124
116-let L = A(B, s)
125+let M = B(C, t)
117126
118-let M = A(B, t)
127+let N = B(C, u)
119128
120-func N (O) = ("lastWeekTxIdByUser_" + O)
129+func O (P) = ("lastWeekTxIdByUser_" + P)
121130
122131
123-let P = "wlg_assetId"
132+let Q = "wlg_assetId"
124133
125-let Q = valueOrErrorMessage(getBinary(K, P), "WLGOLD is not issued yet")
134+let R = valueOrErrorMessage(getBinary(L, Q), "WLGOLD is not issued yet")
126135
127-func R (O) = ("userBet_" + O)
136+func S (P) = ("userBet_" + P)
128137
129138
130-func S (O,T) = ((("userWeekTickets_" + O) + "_") + toString(T))
139+func T (P,U) = ((("userWeekTickets_" + P) + "_") + toString(U))
131140
132141
133-func U (T) = ("totalWeekTickets_" + toString(T))
142+func V (U) = ("totalWeekTickets_" + toString(U))
134143
135144
136-func V (T) = ("totalWeekParticipants_" + toString(T))
145+func W (U) = ("totalWeekParticipants_" + toString(U))
137146
138147
139-func W (T) = ("numNFT2Draw_" + toString(T))
148+func X (U) = ("numNFT2Draw_" + toString(U))
140149
141150
142-func X (T) = ("numNFTDrawn_" + toString(T))
151+func Y (U) = ("numNFTDrawn_" + toString(U))
143152
144153
145-func Y (T) = ("weekWinners_" + toString(T))
154+func Z (U) = ("weekWinners_" + toString(U))
146155
147156
148-func Z (aa) = (toInt(value(value(blockInfoByHeight((aa * g))).vrf)) % 4)
157+func aa (ab) = (toInt(value(value(blockInfoByHeight(((ab * g) + j))).vrf)) % 4)
149158
150159
151-func ab (ac) = {
152- let h = ac
160+func ac (ad) = {
161+ let h = ad
153162 if ($isInstanceOf(h, "Int"))
154163 then {
155- let ad = h
156- ad
164+ let ae = h
165+ ae
157166 }
158167 else throw("fail to cast into Int")
159168 }
160169
161170
162-func ae (af,ag) = {
163- let ah = pow(10, 0, ag, 0, 0, DOWN)
164- let ai = toString((af % ah))
165- let aj = drop(toString(ah), (1 + size(ai)))
166- (((toString((af / ah)) + ".") + aj) + ai)
171+func af (ag,ah) = {
172+ let ai = pow(10, 0, ah, 0, 0, DOWN)
173+ let aj = toString((ag % ai))
174+ let ak = drop(toString(ai), (1 + size(aj)))
175+ (((toString((ag / ai)) + ".") + ak) + aj)
167176 }
168177
169178
170-func ak (al,am,an) = if ((0 >= al))
179+func al (am,an,ao) = if ((0 >= am))
171180 then throw("maxValue should be > 0")
172181 else {
173- let ao = sha256_16Kb((am + an))
174- (toInt(ao) % al)
182+ let ap = sha256_16Kb((an + ao))
183+ (toInt(ap) % am)
175184 }
176185
177186
178-let ap = 100000000
187+let aq = 100000000
179188
180-let aq = 3200
189+let ar = 3200
181190
182-let ar = 4000
191+let as = 4000
183192
184-let as = 3
193+let at = 3
185194
186-let at = 100000000000
195+let au = 100000000000
187196
188-func au (O) = ("userXP_" + O)
197+func av (P) = ("userXP_" + P)
189198
190199
191-func av (O) = ("userLevel_" + O)
200+func aw (P) = ("userLevel_" + P)
192201
193202
194-let aw = 10000
203+let ax = 10000
195204
196-func ax (ay) = fraction(aq, pow(ay, 4, ar, 4, 4, DOWN), ap)
205+func ay (az) = fraction(ar, pow(az, 4, as, 4, 4, DOWN), aq)
197206
198207
199-func az (aA,aB) = {
200- let aC = ax(aB)
201-[aC, (as * (aC - aA))]
208+func aA (aB,aC) = {
209+ let aD = ay(aC)
210+[aD, (at * (aD - aB))]
202211 }
203212
204213
205-let aD = 100000000000000
214+let aE = 100000000000000
206215
207-let aE = 400000
216+let aF = 400000
208217
209-let aF = 86400000
218+let aG = 86400000
210219
211-let aG = "teamAddr"
220+let aH = "teamAddr"
212221
213-let aH = "lastClaimedTime_team"
222+let aI = "lastClaimedTime_team"
214223
215-let aI = "teamAmountLeft"
224+let aJ = "teamAmountLeft"
216225
217-let aJ = "lastClaimedTime_activities"
226+let aK = "lastClaimedTime_activities"
218227
219-let aK = "activitiesAmountLeft"
228+let aL = "activitiesAmountLeft"
220229
221-let aL = "stakersAmountLeft"
230+let aM = "stakersAmountLeft"
222231
223-func aM (O) = ("lastArbTimeUser_" + O)
232+func aN (P) = ("lastArbTimeUser_" + P)
224233
225234
226-func aN (O) = ("lastWlgLimitUser_" + O)
235+func aO (P) = ("lastWlgLimitUser_" + P)
227236
228237
229-let aO = "wlg_issueTime"
238+let aP = "wlg_issueTime"
230239
231-let aP = "wlg_issuedAmount"
240+let aQ = "wlg_issuedAmount"
232241
233-func aQ (O) = ("acresStakedAmountByUser_" + O)
242+func aR (P) = ("acresStakedAmountByUser_" + P)
234243
235244
236-func aR (O) = ("wlgStakedAmountByUser_" + O)
245+func aS (P) = ("wlgStakedAmountByUser_" + P)
237246
238247
239-let aS = "wlgStakedAmountTotal"
248+let aT = "wlgStakedAmountTotal"
240249
241-func aT (O) = ("wlgStakedTimeByUser_" + O)
250+func aU (P) = ("wlgStakedTimeByUser_" + P)
242251
243252
244-let aU = 1000000
253+let aV = 1000000
245254
246-let aV = 100000000
255+let aW = 100000000
247256
248-let aW = 200000
257+let aX = 200000
249258
250-let aX = 100000
259+let aY = 100000
251260
252-let aY = 400000
261+let aZ = 400000
253262
254-let aZ = 31557600000
263+let ba = 31557600000
255264
256-let ba = 86400000
265+let bb = 86400000
257266
258-let bb = 1000000000
267+let bc = 1000000000
259268
260-let bc = 800000
261-
262-let bd = 100000
269+let bd = 800000
263270
264271 let be = 100000
265272
266-let bf = 1731279600000
273+let bf = 100000
267274
268-let bg = "marketingAddr"
275+let bg = 1731279600000
269276
270-let bh = "teamAddr"
277+let bh = "marketingAddr"
271278
272-let bi = "lastClaimedTime_team"
279+let bi = "teamAddr"
273280
274-let bj = "teamAmountLeft"
281+let bj = "lastClaimedTime_team"
275282
276-let bk = "lastClaimedTime_activities"
283+let bk = "teamAmountLeft"
277284
278-let bl = "activitiesAmountLeft"
285+let bl = "lastClaimedTime_activities"
279286
280-let bm = "stakersAmountLeft"
287+let bm = "activitiesAmountLeft"
281288
282-func bn (O) = ("lastClaimedTimeUser_" + O)
289+let bn = "stakersAmountLeft"
290+
291+func bo (P) = ("lastClaimedTimeUser_" + P)
283292
284293
285-func bo (bp,bq) = fraction(bp, (aY * (bq + 1)), (6 * aU))
294+func bp (bq,br) = fraction(bq, (aZ * (br + 1)), (6 * aV))
286295
287296
288-let br = "wlg_issue10Time"
297+let bs = "wlg_issue10Time"
289298
290-let bs = "wlg_issueTime"
299+let bt = "wlg_issueTime"
291300
292-let bt = "wlg_issuedAmount"
301+let bu = "wlg_issuedAmount"
293302
294-let bu = "zbill_issuedAmount"
303+let bv = "zbill_issuedAmount"
295304
296-func bv (O) = ("acresStakedAmountByUser_" + O)
305+func bw (P) = ("acresStakedAmountByUser_" + P)
297306
298307
299-let bw = "acresStakedAmountTotal"
308+let bx = "acresStakedAmountTotal"
300309
301-let bx = "totalFarmingPower"
310+let by = "totalFarmingPower"
302311
303-let by = 0
312+let bz = 0
304313
305-let bz = 1
314+let bA = 1
306315
307-let bA = 2
316+let bB = 2
308317
309-let bB = 3
318+let bC = 3
310319
311-let bC = 4
320+let bD = 4
312321
313-let bD = 1
322+let bE = 1
314323
315-let bE = 5
324+let bF = 5
316325
317-let bF = 100000000
326+let bG = 100000000
318327
319-func bG (O) = ("userFullBonus_" + O)
328+func bH (P) = ("userFullBonus_" + P)
320329
321330
322-let bH = [0, 10, 20, 40, 80, 150, 250, 400, 700, 1000]
331+let bI = [0, 10, 20, 40, 80, 150, 250, 400, 700, 1000]
323332
324-func bI (bJ) = {
325- let bK = ((bJ + 99999999) / aV)
326- func bL (bM,bN) = if ((bN >= bK))
327- then bM
328- else (bM + 1)
333+func bJ (bK) = {
334+ let bL = ((bK + 99999999) / aW)
335+ func bM (bN,bO) = if ((bO >= bL))
336+ then bN
337+ else (bN + 1)
329338
330- let bO = bH
331- let bP = size(bO)
332- let bQ = 0
333- func bR (bS,bT) = if ((bT >= bP))
334- then bS
335- else bL(bS, bO[bT])
339+ let bP = bI
340+ let bQ = size(bP)
341+ let bR = 0
342+ func bS (bT,bU) = if ((bU >= bQ))
343+ then bT
344+ else bM(bT, bP[bU])
336345
337- func bU (bS,bT) = if ((bT >= bP))
338- then bS
346+ func bV (bT,bU) = if ((bU >= bQ))
347+ then bT
339348 else throw("List size exceeds 10")
340349
341- bU(bR(bR(bR(bR(bR(bR(bR(bR(bR(bR(bQ, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
350+ bV(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bR, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
342351 }
343352
344353
345-func bV (bJ) = ((bJ * 20) * (bI(bJ) + 4))
354+func bW (bK) = ((bK * 20) * (bJ(bK) + 4))
346355
347356
348-func bW (bJ,bX) = {
349- let bY = bV(bJ)
350- $Tuple2(fraction(bY, (aU + bX), aU), bY)
357+func bX (bK,bY) = {
358+ let bZ = bW(bK)
359+ $Tuple2(fraction(bZ, (aV + bY), aV), bZ)
351360 }
352361
353362
354-func bZ (ca,J) = {
355- let cb = valueOrElse(getInteger(J, bx), 0)
356- let cc = valueOrElse(getInteger(J, bv(ca)), 0)
357- let cd = valueOrElse(getInteger(J, bG(ca)), 0)
358- let ce = bW(cc, cd)
359- let cf = ce._1
360- let cg = ce._2
361-[cb, cf, cg, cd]
363+func ca (cb,K) = {
364+ let cc = valueOrElse(getInteger(K, by), 0)
365+ let cd = valueOrElse(getInteger(K, bw(cb)), 0)
366+ let ce = valueOrElse(getInteger(K, bH(cb)), 0)
367+ let cf = bX(cd, ce)
368+ let cg = cf._1
369+ let ch = cf._2
370+[cc, cg, ch, ce]
362371 }
363372
364373
365-let ch = 0
374+let ci = 0
366375
367-let ci = 1
376+let cj = 1
368377
369-let cj = 0
378+let ck = 0
370379
371-let ck = 1
380+let cl = 1
372381
373-let cl = 2
382+let cm = 2
374383
375-let cm = 8
384+let cn = 8
376385
377-let cn = 11
386+let co = 11
378387
379-let co = 12
388+let cp = 12
380389
381-let cp = 15
390+let cq = 15
382391
383-let cq = 16
392+let cr = 16
384393
385-let cr = 19
394+let cs = 19
386395
387-let cs = 23
396+let ct = 23
388397
389-let ct = 24
398+let cu = 24
390399
391-let cu = 25
400+let cv = 25
392401
393-let cv = 26
402+let cw = 26
394403
395-let cw = 27
404+let cx = 27
396405
397-let cx = 28
406+let cy = 28
398407
399-let cy = 29
408+let cz = 29
400409
401-func cz (cA,cB,cC,cD) = {
402- let bp = valueOrErrorMessage(getInteger(cB[bA], bt), "WLGOLD is not issued yet")
403- let cE = assetBalance(cB[by], cC)
404- let cF = (assetBalance(cB[bA], cC) - cD)
405- let cG = assetBalance(cB[bB], cC)
406- let cH = assetBalance(cB[bz], cC)
407- let cI = cB[bC]
408- let cJ = (assetBalance(cI, cC) + valueOrElse(getInteger(cI, bu), 0))
409- let cK = ((cH + cF) + cJ)
410- let cL = valueOrErrorMessage(getBinary(cB[bA], "wlg_assetId"), "Not initialized yet")
411- let cM = lastBlock.timestamp
412- let cN = valueOrErrorMessage(getInteger(cB[bA], bs), "Not initialized")
413- let cO = assetBalance(cB[bA], cL)
414- let cP = fraction(bp, aW, aU)
415- let cQ = valueOrElse(getInteger(cB[bA], bj), cP)
416- let cR = valueOrElse(getInteger(cB[bA], bi), cN)
417- let cS = addressFromStringValue(value(getString(cB[bA], bh)))
418- let cT = min([fraction(cP, (cM - cR), (3 * aZ)), cQ])
419- let cU = assetBalance(cS, cL)
420- let cV = fraction(bp, aX, aU)
421- let cW = valueOrElse(getInteger(cB[bA], bl), cV)
422- let cX = valueOrElse(getInteger(cB[bA], bk), cN)
423- let cY = min([fraction(cV, (cM - cX), (3 * aZ)), cW])
424- let cZ = assetBalance(cB[by], cL)
425- let da = valueOrElse(getInteger(cB[bA], bn(cA)), cN)
426- let db = ((da - cN) / aZ)
427- let dc = min([cM, (cN + (3 * aZ))])
428- let dd = min([((cM - cN) / aZ), 2])
429- let de = bZ(cA, cB[bz])
430- let df = bo(bp, dd)
431- let dg = (cN + (aZ * dd))
432- let dh = (cN + (aZ * (dd - 1)))
433- let di = fraction(df, (dc - da), aZ)
434- let dj = if ((db == dd))
435- then di
436- else if ((db == (dd - 1)))
410+func cA (cB,cC,cD,cE) = {
411+ let bq = valueOrErrorMessage(getInteger(cC[bB], bu), "WLGOLD is not issued yet")
412+ let cF = assetBalance(cC[bz], cD)
413+ let cG = (assetBalance(cC[bB], cD) - cE)
414+ let cH = assetBalance(cC[bC], cD)
415+ let cI = assetBalance(cC[bA], cD)
416+ let cJ = cC[bD]
417+ let cK = (assetBalance(cJ, cD) + valueOrElse(getInteger(cJ, bv), 0))
418+ let cL = ((cI + cG) + cK)
419+ let cM = valueOrErrorMessage(getBinary(cC[bB], "wlg_assetId"), "Not initialized yet")
420+ let cN = lastBlock.timestamp
421+ let cO = valueOrErrorMessage(getInteger(cC[bB], bt), "Not initialized")
422+ let cP = assetBalance(cC[bB], cM)
423+ let cQ = fraction(bq, aX, aV)
424+ let cR = valueOrElse(getInteger(cC[bB], bk), cQ)
425+ let cS = valueOrElse(getInteger(cC[bB], bj), cO)
426+ let cT = addressFromStringValue(value(getString(cC[bB], bi)))
427+ let cU = min([fraction(cQ, (cN - cS), (3 * ba)), cR])
428+ let cV = assetBalance(cT, cM)
429+ let cW = fraction(bq, aY, aV)
430+ let cX = valueOrElse(getInteger(cC[bB], bm), cW)
431+ let cY = valueOrElse(getInteger(cC[bB], bl), cO)
432+ let cZ = min([fraction(cW, (cN - cY), (3 * ba)), cX])
433+ let da = assetBalance(cC[bz], cM)
434+ let db = valueOrElse(getInteger(cC[bB], bo(cB)), cO)
435+ let dc = ((db - cO) / ba)
436+ let dd = min([cN, (cO + (3 * ba))])
437+ let de = min([((cN - cO) / ba), 2])
438+ let df = ca(cB, cC[bA])
439+ let dg = bp(bq, de)
440+ let dh = (cO + (ba * de))
441+ let di = (cO + (ba * (de - 1)))
442+ let dj = fraction(dg, (dd - db), ba)
443+ let dk = if ((dc == de))
444+ then dj
445+ else if ((dc == (de - 1)))
437446 then {
438- let dk = fraction(bo(bp, (dd - 1)), (dg - da), aZ)
439- (dk + di)
447+ let dl = fraction(bp(bq, (de - 1)), (dh - db), ba)
448+ (dl + dj)
440449 }
441450 else {
442- let dl = fraction(bo(bp, (dd - 2)), (dh - da), aZ)
443- let dk = bo(bp, (dd - 1))
444- ((dl + dk) + di)
451+ let dm = fraction(bp(bq, (de - 2)), (di - db), ba)
452+ let dl = bp(bq, (de - 1))
453+ ((dm + dl) + dj)
445454 }
446- let dm = valueOrElse(getInteger(cB[bA], bm), 0)
447- let dn = if ((de[ch] != 0))
448- then fraction(dj, de[ci], de[ch])
455+ let dn = valueOrElse(getInteger(cC[bB], bn), 0)
456+ let do = if ((df[ci] != 0))
457+ then fraction(dk, df[cj], df[ci])
449458 else 0
450- let do = valueOrElse(getInteger(cB[bA], br), bf)
451- let dp = fraction(bb, max([(cM - do), 0]), ba)
452- let dq = fraction(dp, bd, aU)
453- let dr = fraction(dp, be, aU)
454- let ds = max([(cM - max([bf, da])), 0])
455- let dt = if ((de[ch] != 0))
456- then fraction(fraction(fraction(bb, ds, ba), de[ci], de[ch]), bc, aU)
459+ let dp = valueOrElse(getInteger(cC[bB], bs), bg)
460+ let dq = fraction(bc, max([(cN - dp), 0]), bb)
461+ let dr = fraction(dq, be, aV)
462+ let ds = fraction(dq, bf, aV)
463+ let dt = max([(cN - max([bg, db])), 0])
464+ let du = if ((df[ci] != 0))
465+ then fraction(fraction(fraction(bc, dt, bb), df[cj], df[ci]), bd, aV)
457466 else 0
458- let du = max([bf, cM])
459- let dv = valueOrElse(getInteger(cB[bz], bw), 0)
460-[bp, cO, fraction(cK, aV, bp), cK, cE, cH, cF, cG, cN, cR, cP, cQ, cT, cU, cV, cW, cY, cZ, dd, dm, df, da, cJ, dn, dc, dp, dq, dr, dt, du, de[ch], dv]
467+ let dv = max([bg, cN])
468+ let dw = valueOrElse(getInteger(cC[bA], bx), 0)
469+[bq, cP, fraction(cL, aW, bq), cL, cF, cI, cG, cH, cO, cS, cQ, cR, cU, cV, cW, cX, cZ, da, de, dn, dg, db, cK, do, dd, dq, dr, ds, du, dv, df[ci], dw]
461470 }
462471
463472
464-let dw = "profitAddr"
473+let dx = "profitAddr"
465474
466-let dx = "stakersAmountPaidTotal"
475+let dy = "stakersAmountPaidTotal"
467476
468-func dy (O) = ("stakersAmountPaidUser_" + O)
477+func dz (P) = ("stakersAmountPaidUser_" + P)
469478
470479
471-func dz () = ab(reentrantInvoke(J, "saveLastTx", nil, nil))
480+func dA () = ac(reentrantInvoke(K, "saveLastTx", nil, nil))
472481
473482
474-func dA (O) = {
475- let dB = valueOrElse(getInteger(aM(O)), 0)
476- let dC = valueOrElse(getInteger(J, aQ(O)), 0)
477- let dD = valueOrElse(getInteger(aN(O)), dC)
478- let dE = (dD + fraction(dC, (lastBlock.timestamp - dB), e))
479- min([dE, dC])
483+func dB (P) = {
484+ let dC = valueOrElse(getInteger(aN(P)), 0)
485+ let dD = valueOrElse(getInteger(K, aR(P)), 0)
486+ let dE = valueOrElse(getInteger(aO(P)), dD)
487+ let dF = (dE + fraction(dD, (lastBlock.timestamp - dC), e))
488+ min([dF, dD])
480489 }
481490
482491
483-func dF (O) = {
484- let dG = cz(O, [I, J, K, L, M], j, 0)
485- let dH = bn(O)
486- let da = valueOrElse(getInteger(dH), 0)
487- let dI = dG[ct]
488- if ((da == dI))
492+func dG (P) = {
493+ let dH = cA(P, [J, K, L, M, N], k, 0)
494+ let dI = bo(P)
495+ let db = valueOrElse(getInteger(dI), 0)
496+ let dJ = dH[cu]
497+ if ((db == dJ))
489498 then $Tuple2(nil, 0)
490499 else {
491- let cM = lastBlock.timestamp
492- let cN = dG[cm]
493- let cQ = dG[cn]
494- let dJ = (dG[co] + dG[cw])
495- let dK = if ((dJ > 0))
496- then [ScriptTransfer(addressFromStringValue(value(getString(aG))), dJ, Q)]
500+ let cN = lastBlock.timestamp
501+ let cO = dH[cn]
502+ let cR = dH[co]
503+ let dK = (dH[cp] + dH[cx])
504+ let dL = if ((dK > 0))
505+ then [ScriptTransfer(addressFromStringValue(value(getString(aH))), dK, R)]
497506 else nil
498- let cW = dG[cp]
499- let dL = dG[cq]
500- let dM = if ((dL > 0))
501- then [ScriptTransfer(x, dL, Q)]
507+ let cX = dH[cq]
508+ let dM = dH[cr]
509+ let dN = if ((dM > 0))
510+ then [ScriptTransfer(y, dM, R)]
502511 else nil
503- let dN = dG[cv]
504- let dO = if ((dN > 0))
505- then [ScriptTransfer(addressFromStringValue(value(getString(bg))), dN, Q)]
512+ let dO = dH[cw]
513+ let dP = if ((dO > 0))
514+ then [ScriptTransfer(addressFromStringValue(value(getString(bh))), dO, R)]
506515 else nil
507- let dn = dG[cs]
508- let dP = dy(O)
509- let dQ = (dn + dG[cx])
510- let dR = dG[cu]
511- $Tuple2(((([Reissue(Q, dR, true), IntegerEntry(aP, (dG[cj] + dR)), IntegerEntry(br, dG[cy]), IntegerEntry(dP, (valueOrElse(getInteger(dP), 0) + dn)), IntegerEntry(dx, (valueOrElse(getInteger(dx), 0) + dn)), IntegerEntry(aL, (dG[cr] - dn)), IntegerEntry(aI, ((cQ - dJ) + dG[cw])), IntegerEntry(aH, cM), IntegerEntry(aK, (cW - dL)), IntegerEntry(aJ, cM), IntegerEntry(dH, dI)] ++ dK) ++ dM) ++ dO), dQ)
516+ let do = dH[ct]
517+ let dQ = dz(P)
518+ let dR = (do + dH[cy])
519+ let dS = dH[cv]
520+ $Tuple2(((([Reissue(R, dS, true), IntegerEntry(aQ, (dH[ck] + dS)), IntegerEntry(bs, dH[cz]), IntegerEntry(dQ, (valueOrElse(getInteger(dQ), 0) + do)), IntegerEntry(dy, (valueOrElse(getInteger(dy), 0) + do)), IntegerEntry(aM, (dH[cs] - do)), IntegerEntry(aJ, ((cR - dK) + dH[cx])), IntegerEntry(aI, cN), IntegerEntry(aL, (cX - dM)), IntegerEntry(aK, cN), IntegerEntry(dI, dJ)] ++ dL) ++ dN) ++ dP), dR)
512521 }
513522 }
514523
515524
516-func dS (O,dT) = {
517- let cM = lastBlock.timestamp
518- let dU = aT(O)
519- let dV = aR(O)
520- let dB = valueOrElse(getInteger(dU), 0)
521- let dW = valueOrElse(getInteger(dV), 0)
522- let dX = valueOrElse(getInteger(aS), 0)
523- let ay = fraction(fraction(aw, dW, at), (dB - cM), aF)
524- $Tuple3([IntegerEntry(dU, cM), IntegerEntry(dV, (dW + dT)), IntegerEntry(aS, (dX + dT))], ay, dW)
525+func dT (P,dU) = {
526+ let cN = lastBlock.timestamp
527+ let dV = aU(P)
528+ let dW = aS(P)
529+ let dC = valueOrElse(getInteger(dV), 0)
530+ let dX = valueOrElse(getInteger(dW), 0)
531+ let dY = valueOrElse(getInteger(aT), 0)
532+ let az = fraction(fraction(ax, dX, au), (dC - cN), aG)
533+ $Tuple3([IntegerEntry(dV, cN), IntegerEntry(dW, (dX + dU)), IntegerEntry(aT, (dY + dU))], az, dX)
525534 }
526535
527536
528-func dY (O) = {
529- let T = (height / i)
530- let dZ = (T - 1)
531- let ea = valueOrElse(getInteger(W(dZ)), bE)
532- let eb = valueOrElse(getInteger(X(dZ)), 0)
533- let ec = valueOrElse(getInteger(S(O, dZ)), 0)
534- if ((0 >= ec))
537+func dZ (P) = {
538+ let U = (height / i)
539+ let ea = (U - 1)
540+ let eb = valueOrElse(getInteger(X(ea)), bF)
541+ let ec = valueOrElse(getInteger(Y(ea)), 0)
542+ let ed = valueOrElse(getInteger(T(P, ea)), 0)
543+ if ((0 >= ed))
535544 then $Tuple2(nil, unit)
536545 else {
537- let ed = valueOrElse(getInteger(U(dZ)), 0)
538- if ((0 >= ed))
539- then $Tuple2([DeleteEntry(S(O, dZ))], unit)
546+ let ee = valueOrElse(getInteger(V(ea)), 0)
547+ if ((0 >= ee))
548+ then $Tuple2([DeleteEntry(T(P, ea))], unit)
540549 else {
541- let an = value(value(blockInfoByHeight((T * i))).vrf)
542- let am = fromBase58String(split(valueOrElse(getString(N(O)), "42_DEFAULT"), "_")[1])
543- let ee = ak(ed, am, an)
544- if (((ec * ea) > ee))
550+ let ao = value(value(blockInfoByHeight((U * i))).vrf)
551+ let an = fromBase58String(split(valueOrElse(getString(O(P)), "42_DEFAULT"), "_")[1])
552+ let ef = al(ee, an, ao)
553+ if (((ed * eb) > ef))
545554 then {
546- let ef = invoke(J, "issueNFT", [O, bD], nil)
547- let eg = getString(Y(dZ))
548- let eh = if (isDefined(eg))
549- then ((value(eg) + "_") + O)
550- else O
551- $Tuple2([IntegerEntry(X(dZ), (eb + 1)), DeleteEntry(S(O, dZ)), StringEntry(Y(dZ), eh)], ef)
555+ let eg = invoke(K, "issueNFT", [P, bE], nil)
556+ let eh = getString(Z(ea))
557+ let ei = if (isDefined(eh))
558+ then ((value(eh) + "_") + P)
559+ else P
560+ $Tuple2([IntegerEntry(Y(ea), (ec + 1)), DeleteEntry(T(P, ea)), StringEntry(Z(ea), ei)], eg)
552561 }
553562 else {
554- let ei = (ak(9, (base58'29' + am), an) + 1)
555- let ej = fraction(ec, ei, 10)
556- $Tuple2([DeleteEntry(S(O, dZ)), IntegerEntry(S(O, T), ej)], ej)
563+ let ej = (al(9, (base58'29' + an), ao) + 1)
564+ let ek = fraction(ed, ej, 10)
565+ $Tuple2([DeleteEntry(T(P, ea)), IntegerEntry(T(P, U), ek)], ek)
557566 }
558567 }
559568 }
560569 }
561570
562571
563-func ek (O,el) = {
564- let T = (height / i)
565- let em = S(O, T)
566- let en = split(el, "_")
567- let eo = valueOrElse(getInteger(U(T)), 0)
568- let ep = valueOrElse(getInteger(em), 0)
569- let eq = if ((Z(parseIntValue(en[0])) == parseIntValue(en[1])))
572+func el (P,em) = {
573+ let U = (height / i)
574+ let en = T(P, U)
575+ let eo = split(em, "_")
576+ let ep = valueOrElse(getInteger(V(U)), 0)
577+ let eq = valueOrElse(getInteger(en), 0)
578+ let er = if ((aa(parseIntValue(eo[0])) == parseIntValue(eo[1])))
570579 then 1
571580 else 0
572- let er = valueOrElse(getInteger(V(T)), 0)
573- let es = if (if ((ep == 0))
574- then (eq == 1)
581+ let es = valueOrElse(getInteger(W(U)), 0)
582+ let et = if (if ((eq == 0))
583+ then (er == 1)
575584 else false)
576- then [IntegerEntry(V(T), (er + 1))]
585+ then [IntegerEntry(W(U), (es + 1))]
577586 else nil
578- $Tuple2(if ((eq == 0))
587+ $Tuple2(if ((er == 0))
579588 then nil
580- else ((es :+ IntegerEntry(em, (ep + eq))) :+ IntegerEntry(U(T), (eo + eq))), eq)
589+ else ((et :+ IntegerEntry(en, (eq + er))) :+ IntegerEntry(V(U), (ep + er))), er)
581590 }
582591
583592
584-@Callable(et)
585-func constructorV1 (eu,ev,cS,ew) = if ((et.caller != this))
593+@Callable(eu)
594+func constructorV1 (ev,ew,cT,ex) = if ((eu.caller != this))
586595 then throw("Permission denied")
587- else if (isDefined(getBinary(P)))
596+ else if (isDefined(getBinary(Q)))
588597 then throw("Already initialized")
589598 else {
590- let bp = aD
591- let ex = Issue("WLGOLD", "WavesLands Gold investment token", bp, 8, true, unit, 0)
592- let ey = calculateAssetId(ex)
593-[ex, IntegerEntry(aO, lastBlock.timestamp), IntegerEntry(aP, bp), IntegerEntry(dx, 0), IntegerEntry(aL, fraction(aD, aE, b)), BinaryEntry(P, ey), StringEntry(w(), eu), StringEntry(bg, ev), StringEntry(aG, cS), StringEntry(dw, ew)]
599+ let bq = aE
600+ let ey = Issue("WLGOLD", "WavesLands Gold investment token", bq, 8, true, unit, 0)
601+ let ez = calculateAssetId(ey)
602+[ey, IntegerEntry(aP, lastBlock.timestamp), IntegerEntry(aQ, bq), IntegerEntry(dy, 0), IntegerEntry(aM, fraction(aE, aF, b)), BinaryEntry(Q, ez), StringEntry(x(), ev), StringEntry(bh, ew), StringEntry(aH, cT), StringEntry(dx, ex)]
594603 }
595604
596605
597606
598-@Callable(et)
599-func constructorV2 (ez) = if ((et.caller != this))
607+@Callable(eu)
608+func constructorV2 (eA) = if ((eu.caller != this))
600609 then throw("Permission denied")
601- else [StringEntry(v(), ez)]
610+ else [StringEntry(w(), eA)]
602611
603612
604613
605-@Callable(et)
606-func buyWlg (eA) = {
607- let eB = dz()
608- if ((eB == eB))
609- then if ((size(et.payments) != 1))
614+@Callable(eu)
615+func buyWlg (eB) = {
616+ let eC = dA()
617+ if ((eC == eC))
618+ then if ((size(eu.payments) != 1))
610619 then throw("exactly 1 payment must be attached")
611620 else {
612- let eC = et.payments[0]
613- let eD = eC.amount
614- if (if (!(isDefined(eC.assetId)))
621+ let eD = eu.payments[0]
622+ let eE = eD.amount
623+ if (if (!(isDefined(eD.assetId)))
615624 then true
616- else (value(eC.assetId) != j))
625+ else (value(eD.assetId) != k))
617626 then throw("USDT payments only!")
618627 else {
619- let eE = et.caller
620- let O = toString(eE)
621- if ((d > eD))
622- then throw((("You can trade min " + ae(d, 6)) + " USDT"))
628+ let eF = eu.caller
629+ let P = toString(eF)
630+ if ((d > eE))
631+ then throw((("You can trade min " + af(d, 6)) + " USDT"))
623632 else {
624- let dG = cz("", [I, J, K, L, M], j, eD)
625- let eF = dG[cj]
626- let eG = dG[cl]
627- let eH = fraction(eG, 6, 5, CEILING)
628- let eI = fraction(eD, c, eH)
629- let eJ = dA(O)
630- if ((eI > eJ))
631- then throw((("You can get max " + ae(eJ, 8)) + " WLGOLD at the moment"))
632- else if ((eA > eI))
633+ let dH = cA("", [J, K, L, M, N], k, eE)
634+ let eG = dH[ck]
635+ let eH = dH[cm]
636+ let eI = fraction(eH, 6, 5, CEILING)
637+ let eJ = fraction(eE, c, eI)
638+ let eK = dB(P)
639+ if ((eJ > eK))
640+ then throw((("You can get max " + af(eK, 8)) + " WLGOLD at the moment"))
641+ else if ((eB > eJ))
633642 then throw("Price changed during operation, please try again")
634643 else {
635- let eK = (eD / 6)
636- $Tuple2([Reissue(Q, eI, true), IntegerEntry(aP, (eF + eI)), IntegerEntry(aM(O), lastBlock.timestamp), IntegerEntry(aN(O), (eJ - eI)), ScriptTransfer(addressFromStringValue(value(getString(dw))), eK, j), ScriptTransfer(eE, eI, Q)], eB)
644+ let eL = (eE / 6)
645+ $Tuple2([Reissue(R, eJ, true), IntegerEntry(aQ, (eG + eJ)), IntegerEntry(aN(P), lastBlock.timestamp), IntegerEntry(aO(P), (eK - eJ)), ScriptTransfer(addressFromStringValue(value(getString(dx))), eL, k), ScriptTransfer(eF, eJ, R)], eC)
637646 }
638647 }
639648 }
643652
644653
645654
646-@Callable(et)
647-func buyWlgREADONLY (o,eD) = {
648- let dG = cz("", [I, J, K, L, M], j, eD)
649- let eG = dG[cl]
650- let eH = fraction(eG, 6, 5, CEILING)
651- let eI = fraction(eD, c, eH)
652- let eJ = dA(o)
653- let eL = fraction(eJ, eH, c)
654- let eK = (eD / 6)
655- $Tuple2(nil, [eI, d, eL, eK])
655+@Callable(eu)
656+func buyWlgREADONLY (p,eE) = {
657+ let dH = cA("", [J, K, L, M, N], k, eE)
658+ let eH = dH[cm]
659+ let eI = fraction(eH, 6, 5, CEILING)
660+ let eJ = fraction(eE, c, eI)
661+ let eK = dB(p)
662+ let eM = fraction(eK, eI, c)
663+ let eL = (eE / 6)
664+ $Tuple2(nil, [eJ, d, eM, eL])
656665 }
657666
658667
659668
660-@Callable(et)
661-func sellWlg (eM) = {
662- let eB = dz()
663- if ((eB == eB))
664- then if ((size(et.payments) != 1))
669+@Callable(eu)
670+func sellWlg (eN) = {
671+ let eC = dA()
672+ if ((eC == eC))
673+ then if ((size(eu.payments) != 1))
665674 then throw("exactly 1 payment must be attached")
666675 else {
667- let eC = et.payments[0]
668- let eN = eC.amount
669- let eE = et.caller
670- let O = toString(eE)
671- let eJ = dA(O)
672- if ((eN > eJ))
673- then throw((("You can spend max " + ae(eJ, 8)) + " WLGOLD at the moment"))
674- else if (if (!(isDefined(eC.assetId)))
676+ let eD = eu.payments[0]
677+ let eO = eD.amount
678+ let eF = eu.caller
679+ let P = toString(eF)
680+ let eK = dB(P)
681+ if ((eO > eK))
682+ then throw((("You can spend max " + af(eK, 8)) + " WLGOLD at the moment"))
683+ else if (if (!(isDefined(eD.assetId)))
675684 then true
676- else (value(eC.assetId) != Q))
685+ else (value(eD.assetId) != R))
677686 then throw("WLGOLD payments only!")
678687 else {
679- let dG = cz("", [I, J, K, L, M], j, 0)
680- let eF = dG[cj]
681- let eO = (dG[cl] / 2)
682- let eD = fraction(eN, eO, c)
683- if ((d > eD))
684- then throw((("You can trade min " + ae(d, 6)) + " USDT"))
685- else if ((eM > eD))
688+ let dH = cA("", [J, K, L, M, N], k, 0)
689+ let eG = dH[ck]
690+ let eP = (dH[cm] / 2)
691+ let eE = fraction(eO, eP, c)
692+ if ((d > eE))
693+ then throw((("You can trade min " + af(d, 6)) + " USDT"))
694+ else if ((eN > eE))
686695 then throw("Price changed during operation, please try again")
687696 else {
688- let eK = (eD / 5)
689- $Tuple2([Burn(Q, eN), IntegerEntry(aP, (eF - eN)), IntegerEntry(aM(O), lastBlock.timestamp), IntegerEntry(aN(O), (eJ - eN)), ScriptTransfer(addressFromStringValue(value(getString(dw))), eK, j), ScriptTransfer(eE, eD, j)], eB)
697+ let eL = (eE / 5)
698+ $Tuple2([Burn(R, eO), IntegerEntry(aQ, (eG - eO)), IntegerEntry(aN(P), lastBlock.timestamp), IntegerEntry(aO(P), (eK - eO)), ScriptTransfer(addressFromStringValue(value(getString(dx))), eL, k), ScriptTransfer(eF, eE, k)], eC)
690699 }
691700 }
692701 }
695704
696705
697706
698-@Callable(et)
699-func sellWlgREADONLY (o,eN) = {
700- let eJ = dA(o)
701- let dG = cz("", [I, J, K, L, M], j, 0)
702- let eO = (dG[cl] / 2)
703- let eD = fraction(eN, eO, c)
704- let eP = fraction(d, c, eO)
705- let eK = (eD / 5)
706- $Tuple2(nil, [eD, eP, eJ, eK])
707+@Callable(eu)
708+func sellWlgREADONLY (p,eO) = {
709+ let eK = dB(p)
710+ let dH = cA("", [J, K, L, M, N], k, 0)
711+ let eP = (dH[cm] / 2)
712+ let eE = fraction(eO, eP, c)
713+ let eQ = fraction(d, c, eP)
714+ let eL = (eE / 5)
715+ $Tuple2(nil, [eE, eQ, eK, eL])
707716 }
708717
709718
710719
711-@Callable(et)
720+@Callable(eu)
712721 func claim () = {
713- let eB = dz()
714- if ((eB == eB))
715- then if ((size(et.payments) != 0))
722+ let eC = dA()
723+ if ((eC == eC))
724+ then if ((size(eu.payments) != 0))
716725 then throw("No payments required")
717726 else {
718- let eQ = dF(toString(et.caller))
719- let eR = eQ._1
720- let eS = eQ._2
721- $Tuple2((eR :+ ScriptTransfer(et.caller, eS, Q)), eB)
727+ let eR = dG(toString(eu.caller))
728+ let eS = eR._1
729+ let eT = eR._2
730+ $Tuple2((eS :+ ScriptTransfer(eu.caller, eT, R)), eC)
722731 }
723732 else throw("Strict value is not equal to itself.")
724733 }
725734
726735
727736
728-@Callable(et)
729-func onStakeUnstakeLand (O) = if (if (if ((et.caller != G))
730- then (et.caller != H)
737+@Callable(eu)
738+func onStakeUnstakeLand (P) = if (if (if ((eu.caller != H))
739+ then (eu.caller != I)
731740 else false)
732- then (et.caller != J)
741+ then (eu.caller != K)
733742 else false)
734743 then throw("Permission denied")
735744 else {
736- let eT = dF(O)
737- let eR = eT._1
738- let eS = eT._2
739- $Tuple2(if ((eS > 0))
740- then (eR :+ ScriptTransfer(addressFromStringValue(O), eS, Q))
741- else eR, eS)
745+ let eU = dG(P)
746+ let eS = eU._1
747+ let eT = eU._2
748+ $Tuple2(if ((eT > 0))
749+ then (eS :+ ScriptTransfer(addressFromStringValue(P), eT, R))
750+ else eS, eT)
742751 }
743752
744753
745754
746-@Callable(et)
747-func burnWlgold (eN) = if ((et.caller != J))
755+@Callable(eu)
756+func burnWlgold (eO) = if ((eu.caller != K))
748757 then throw("Permission denied")
749758 else {
750- let dG = cz("", [I, J, K, L, M], j, 0)
751- if ((eN > dG[ck]))
752- then throw(((("Only " + ae(dG[ck], 8)) + " WLGOLD left on contract, can't burn ") + ae(eN, 8)))
759+ let dH = cA("", [J, K, L, M, N], k, 0)
760+ if ((eO > dH[cl]))
761+ then throw(((("Only " + af(dH[cl], 8)) + " WLGOLD left on contract, can't burn ") + af(eO, 8)))
753762 else {
754- let eU = (dG[cj] - eN)
755- $Tuple2([Burn(Q, eN), IntegerEntry(aP, eU)], eU)
763+ let eV = (dH[ck] - eO)
764+ $Tuple2([Burn(R, eO), IntegerEntry(aQ, eV)], eV)
756765 }
757766 }
758767
759768
760769
761-@Callable(et)
762-func betForTicket (eV) = {
763- let eB = dz()
764- if ((eB == eB))
765- then if ((size(et.payments) != 0))
770+@Callable(eu)
771+func betForTicket (eW) = {
772+ let eC = dA()
773+ if ((eC == eC))
774+ then if ((size(eu.payments) != 0))
766775 then throw("No payments required")
767776 else {
768- let O = toString(et.caller)
769- let dZ = ((height / i) - 1)
770- let ec = valueOrElse(getInteger(S(O, dZ)), 0)
771- let ed = valueOrElse(getInteger(U(dZ)), 0)
772- if (if ((ec > 0))
773- then (ed > 0)
777+ let P = toString(eu.caller)
778+ let ea = ((height / i) - 1)
779+ let ed = valueOrElse(getInteger(T(P, ea)), 0)
780+ let ee = valueOrElse(getInteger(V(ea)), 0)
781+ if (if ((ed > 0))
782+ then (ee > 0)
774783 else false)
775784 then throw("Please open the chest first")
776- else if (((eV / 4) != 0))
785+ else if (((eW / 4) != 0))
777786 then throw("Invalid bet: should be 0..3")
778787 else {
779- let eW = (height % g)
780- if ((eW > (g - 3)))
781- then throw((("Cannot bet: the day is almost ended, please wait " + toString((g - eW))) + " blocks"))
788+ let eX = (height % g)
789+ if ((eX > (g - 3)))
790+ then throw((("Cannot bet: the day is almost ended, please wait " + toString((g - eX))) + " blocks"))
782791 else {
783- let eX = valueOrElse(getInteger(J, bv(O)), 0)
784- if ((bF > eX))
785- then throw((("You need to stake at least " + ae(bF, 8)) + " ACRES to bet"))
792+ let eY = valueOrElse(getInteger(K, bw(P)), 0)
793+ if ((bG > eY))
794+ then throw((("You need to stake at least " + af(bG, 8)) + " ACRES to bet"))
786795 else {
787- let eY = ((height / g) + 1)
788- let eZ = R(O)
789- let fa = getString(eZ)
790- let fb = StringEntry(eZ, ((toString(eY) + "_") + toString(eV)))
791- if (isDefined(fa))
796+ let eZ = ((height / g) + 1)
797+ let fa = S(P)
798+ let fb = getString(fa)
799+ let fc = StringEntry(fa, ((toString(eZ) + "_") + toString(eW)))
800+ if (isDefined(fb))
792801 then {
793- let fc = value(fa)
794- if ((split(fc, "_")[0] == toString(eY)))
802+ let fd = value(fb)
803+ if ((split(fd, "_")[0] == toString(eZ)))
795804 then throw("You already bet for tomorrow")
796805 else {
797- let fd = ek(O, fc)
798- $Tuple2((fd._1 :+ fb), fd._2)
806+ let fe = el(P, fd)
807+ $Tuple2((fe._1 :+ fc), fe._2)
799808 }
800809 }
801- else $Tuple2([fb], 0)
810+ else $Tuple2([fc], 0)
802811 }
803812 }
804813 }
808817
809818
810819
811-@Callable(et)
812-func takeWlgXp (O) = if ((et.caller != G))
820+@Callable(eu)
821+func takeWlgXp (P) = if ((eu.caller != H))
813822 then throw("Permission denied")
814823 else {
815- let fe = dS(O, 0)
816- let eR = fe._1
817- let ay = fe._2
818- $Tuple2(eR, ay)
824+ let ff = dT(P, 0)
825+ let eS = ff._1
826+ let az = ff._2
827+ $Tuple2(eS, az)
819828 }
820829
821830
822831
823-@Callable(et)
824-func checkWlgXpREADONLY (O) = {
825- let ff = dS(O, 0)
826- let fg = ff._1
827- let fh = ff._2
828- let aB = (valueOrElse(getInteger(G, au(O)), 0) + fh)
829- let fi = az(valueOrElse(getInteger(G, av(O)), 0), aB)
830- $Tuple2(nil, (fi :+ aB))
832+@Callable(eu)
833+func checkWlgXpREADONLY (P) = {
834+ let fg = dT(P, 0)
835+ let fh = fg._1
836+ let fi = fg._2
837+ let aC = (valueOrElse(getInteger(H, av(P)), 0) + fi)
838+ let fj = aA(valueOrElse(getInteger(H, aw(P)), 0), aC)
839+ $Tuple2(nil, (fj :+ aC))
831840 }
832841
833842
834843
835-@Callable(et)
836-func setNumPrizes (ea) = if ((et.caller != this))
844+@Callable(eu)
845+func setNumPrizes (eb) = if ((eu.caller != this))
837846 then throw("Permission denied")
838847 else {
839- let T = (height / i)
840- $Tuple2([IntegerEntry(W(T), ea)], ea)
848+ let U = (height / i)
849+ $Tuple2([IntegerEntry(X(U), eb)], eb)
841850 }
842851
843852
844853
845-@Callable(et)
846-func openChest () = if (!(m))
854+@Callable(eu)
855+func openChest () = if (!(n))
847856 then throw("Temporarily disabled")
848857 else {
849- let eB = dz()
850- if ((eB == eB))
851- then if ((size(et.payments) != 0))
858+ let eC = dA()
859+ if ((eC == eC))
860+ then if ((size(eu.payments) != 0))
852861 then throw("No payments required")
853862 else {
854- let dZ = ((height / i) - 1)
855- let O = toString(et.caller)
856- let ec = valueOrElse(getInteger(S(O, dZ)), 0)
857- if ((0 >= ec))
863+ let ea = ((height / i) - 1)
864+ let P = toString(eu.caller)
865+ let ed = valueOrElse(getInteger(T(P, ea)), 0)
866+ if ((0 >= ed))
858867 then throw("No gems to open the chest")
859- else dY(O)
868+ else dZ(P)
860869 }
861870 else throw("Strict value is not equal to itself.")
862871 }
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "__"
55
66 let b = 1000000
77
88 let c = 100000000
99
1010 let d = 100000
1111
1212 let e = 86400000
1313
1414 let f = take(drop(this.bytes, 1), 1)
1515
1616 let g = {
1717 let h = f
1818 if ((base58'2W' == h))
1919 then 1440
2020 else if ((base58'2T' == h))
2121 then 60
2222 else throw("Unknown chain")
2323 }
2424
2525 let i = {
2626 let h = f
2727 if ((base58'2W' == h))
2828 then 10080
2929 else if ((base58'2T' == h))
3030 then 180
3131 else throw("Unknown chain")
3232 }
3333
3434 let j = {
3535 let h = f
3636 if ((base58'2W' == h))
37+ then 0
38+ else if ((base58'2T' == h))
39+ then 1146000
40+ else throw("Unknown chain")
41+ }
42+
43+let k = {
44+ let h = f
45+ if ((base58'2W' == h))
3746 then base58'9wc3LXNA4TEBsXyKtoLE9mrbDD7WMHXvXrCjZvabLAsi'
3847 else if ((base58'2T' == h))
3948 then base58'6mWwf9mZBjVgkC54idpyaZLQfAosD914wT8fGf2iiY63'
4049 else throw("Unknown chain")
4150 }
4251
43-let k = {
52+let l = {
4453 let h = f
4554 if ((base58'2W' == h))
4655 then "3PFwYta8biEz31zpeFe5DJK8wE5trSpQVF8"
4756 else if ((base58'2T' == h))
4857 then "3N7UuYar6264P58FBhVWKPQAh4Yua2hgngv"
4958 else throw("Unknown chain")
5059 }
5160
52-let l = {
61+let m = {
5362 let h = f
5463 if ((base58'2W' == h))
5564 then "3PQCuvFbvh4LkPUnrnU1z3jnbA1p9m3WNhv"
5665 else if ((base58'2T' == h))
5766 then "3MumkGGztCKAXpWDqxkddofqXSUbqQkvSJy"
5867 else throw("Unknown chain")
5968 }
6069
61-let m = {
70+let n = {
6271 let h = f
6372 if ((base58'2W' == h))
6473 then false
6574 else if ((base58'2T' == h))
6675 then true
6776 else throw("Unknown chain")
6877 }
6978
70-func n (o,p) = valueOrErrorMessage(getString(o, p), makeString(["mandatory ", toString(o), ".", p, " is not defined"], ""))
79+func o (p,q) = valueOrErrorMessage(getString(p, q), makeString(["mandatory ", toString(p), ".", q, " is not defined"], ""))
7180
7281
73-let q = 1
82+let r = 1
7483
75-let r = 2
84+let s = 2
7685
77-let s = 4
86+let t = 4
7887
79-let t = 5
88+let u = 5
8089
81-func u () = "%s__restConfig"
90+func v () = "%s__restConfig"
8291
8392
84-func v () = "%s__rest2Addr"
93+func w () = "%s__rest2Addr"
8594
8695
87-func w () = "%s__restAddr"
96+func x () = "%s__restAddr"
8897
8998
90-let x = addressFromStringValue(valueOrElse(getString(this, w()), l))
99+let y = addressFromStringValue(valueOrElse(getString(this, x()), m))
91100
92-func y (z) = split_4C(n(z, u()), a)
101+func z (A) = split_4C(o(A, v()), a)
93102
94103
95-func A (B,C) = valueOrErrorMessage(addressFromString(B[C]), ("Rest cfg doesn't contain address at index " + toString(C)))
104+func B (C,D) = valueOrErrorMessage(addressFromString(C[D]), ("Rest cfg doesn't contain address at index " + toString(D)))
96105
97106
98-let D = 1
107+let E = 1
99108
100-let E = 8
109+let F = 8
101110
102-let F = y(x)
111+let G = z(y)
103112
104-let G = A(F, D)
113+let H = B(G, E)
105114
106-let H = A(F, E)
115+let I = B(G, F)
107116
108-let I = addressFromStringValue(valueOrElse(getString(this, v()), k))
117+let J = addressFromStringValue(valueOrElse(getString(this, w()), l))
109118
110-let B = y(I)
119+let C = z(J)
111120
112-let J = A(B, q)
121+let K = B(C, r)
113122
114-let K = A(B, r)
123+let L = B(C, s)
115124
116-let L = A(B, s)
125+let M = B(C, t)
117126
118-let M = A(B, t)
127+let N = B(C, u)
119128
120-func N (O) = ("lastWeekTxIdByUser_" + O)
129+func O (P) = ("lastWeekTxIdByUser_" + P)
121130
122131
123-let P = "wlg_assetId"
132+let Q = "wlg_assetId"
124133
125-let Q = valueOrErrorMessage(getBinary(K, P), "WLGOLD is not issued yet")
134+let R = valueOrErrorMessage(getBinary(L, Q), "WLGOLD is not issued yet")
126135
127-func R (O) = ("userBet_" + O)
136+func S (P) = ("userBet_" + P)
128137
129138
130-func S (O,T) = ((("userWeekTickets_" + O) + "_") + toString(T))
139+func T (P,U) = ((("userWeekTickets_" + P) + "_") + toString(U))
131140
132141
133-func U (T) = ("totalWeekTickets_" + toString(T))
142+func V (U) = ("totalWeekTickets_" + toString(U))
134143
135144
136-func V (T) = ("totalWeekParticipants_" + toString(T))
145+func W (U) = ("totalWeekParticipants_" + toString(U))
137146
138147
139-func W (T) = ("numNFT2Draw_" + toString(T))
148+func X (U) = ("numNFT2Draw_" + toString(U))
140149
141150
142-func X (T) = ("numNFTDrawn_" + toString(T))
151+func Y (U) = ("numNFTDrawn_" + toString(U))
143152
144153
145-func Y (T) = ("weekWinners_" + toString(T))
154+func Z (U) = ("weekWinners_" + toString(U))
146155
147156
148-func Z (aa) = (toInt(value(value(blockInfoByHeight((aa * g))).vrf)) % 4)
157+func aa (ab) = (toInt(value(value(blockInfoByHeight(((ab * g) + j))).vrf)) % 4)
149158
150159
151-func ab (ac) = {
152- let h = ac
160+func ac (ad) = {
161+ let h = ad
153162 if ($isInstanceOf(h, "Int"))
154163 then {
155- let ad = h
156- ad
164+ let ae = h
165+ ae
157166 }
158167 else throw("fail to cast into Int")
159168 }
160169
161170
162-func ae (af,ag) = {
163- let ah = pow(10, 0, ag, 0, 0, DOWN)
164- let ai = toString((af % ah))
165- let aj = drop(toString(ah), (1 + size(ai)))
166- (((toString((af / ah)) + ".") + aj) + ai)
171+func af (ag,ah) = {
172+ let ai = pow(10, 0, ah, 0, 0, DOWN)
173+ let aj = toString((ag % ai))
174+ let ak = drop(toString(ai), (1 + size(aj)))
175+ (((toString((ag / ai)) + ".") + ak) + aj)
167176 }
168177
169178
170-func ak (al,am,an) = if ((0 >= al))
179+func al (am,an,ao) = if ((0 >= am))
171180 then throw("maxValue should be > 0")
172181 else {
173- let ao = sha256_16Kb((am + an))
174- (toInt(ao) % al)
182+ let ap = sha256_16Kb((an + ao))
183+ (toInt(ap) % am)
175184 }
176185
177186
178-let ap = 100000000
187+let aq = 100000000
179188
180-let aq = 3200
189+let ar = 3200
181190
182-let ar = 4000
191+let as = 4000
183192
184-let as = 3
193+let at = 3
185194
186-let at = 100000000000
195+let au = 100000000000
187196
188-func au (O) = ("userXP_" + O)
197+func av (P) = ("userXP_" + P)
189198
190199
191-func av (O) = ("userLevel_" + O)
200+func aw (P) = ("userLevel_" + P)
192201
193202
194-let aw = 10000
203+let ax = 10000
195204
196-func ax (ay) = fraction(aq, pow(ay, 4, ar, 4, 4, DOWN), ap)
205+func ay (az) = fraction(ar, pow(az, 4, as, 4, 4, DOWN), aq)
197206
198207
199-func az (aA,aB) = {
200- let aC = ax(aB)
201-[aC, (as * (aC - aA))]
208+func aA (aB,aC) = {
209+ let aD = ay(aC)
210+[aD, (at * (aD - aB))]
202211 }
203212
204213
205-let aD = 100000000000000
214+let aE = 100000000000000
206215
207-let aE = 400000
216+let aF = 400000
208217
209-let aF = 86400000
218+let aG = 86400000
210219
211-let aG = "teamAddr"
220+let aH = "teamAddr"
212221
213-let aH = "lastClaimedTime_team"
222+let aI = "lastClaimedTime_team"
214223
215-let aI = "teamAmountLeft"
224+let aJ = "teamAmountLeft"
216225
217-let aJ = "lastClaimedTime_activities"
226+let aK = "lastClaimedTime_activities"
218227
219-let aK = "activitiesAmountLeft"
228+let aL = "activitiesAmountLeft"
220229
221-let aL = "stakersAmountLeft"
230+let aM = "stakersAmountLeft"
222231
223-func aM (O) = ("lastArbTimeUser_" + O)
232+func aN (P) = ("lastArbTimeUser_" + P)
224233
225234
226-func aN (O) = ("lastWlgLimitUser_" + O)
235+func aO (P) = ("lastWlgLimitUser_" + P)
227236
228237
229-let aO = "wlg_issueTime"
238+let aP = "wlg_issueTime"
230239
231-let aP = "wlg_issuedAmount"
240+let aQ = "wlg_issuedAmount"
232241
233-func aQ (O) = ("acresStakedAmountByUser_" + O)
242+func aR (P) = ("acresStakedAmountByUser_" + P)
234243
235244
236-func aR (O) = ("wlgStakedAmountByUser_" + O)
245+func aS (P) = ("wlgStakedAmountByUser_" + P)
237246
238247
239-let aS = "wlgStakedAmountTotal"
248+let aT = "wlgStakedAmountTotal"
240249
241-func aT (O) = ("wlgStakedTimeByUser_" + O)
250+func aU (P) = ("wlgStakedTimeByUser_" + P)
242251
243252
244-let aU = 1000000
253+let aV = 1000000
245254
246-let aV = 100000000
255+let aW = 100000000
247256
248-let aW = 200000
257+let aX = 200000
249258
250-let aX = 100000
259+let aY = 100000
251260
252-let aY = 400000
261+let aZ = 400000
253262
254-let aZ = 31557600000
263+let ba = 31557600000
255264
256-let ba = 86400000
265+let bb = 86400000
257266
258-let bb = 1000000000
267+let bc = 1000000000
259268
260-let bc = 800000
261-
262-let bd = 100000
269+let bd = 800000
263270
264271 let be = 100000
265272
266-let bf = 1731279600000
273+let bf = 100000
267274
268-let bg = "marketingAddr"
275+let bg = 1731279600000
269276
270-let bh = "teamAddr"
277+let bh = "marketingAddr"
271278
272-let bi = "lastClaimedTime_team"
279+let bi = "teamAddr"
273280
274-let bj = "teamAmountLeft"
281+let bj = "lastClaimedTime_team"
275282
276-let bk = "lastClaimedTime_activities"
283+let bk = "teamAmountLeft"
277284
278-let bl = "activitiesAmountLeft"
285+let bl = "lastClaimedTime_activities"
279286
280-let bm = "stakersAmountLeft"
287+let bm = "activitiesAmountLeft"
281288
282-func bn (O) = ("lastClaimedTimeUser_" + O)
289+let bn = "stakersAmountLeft"
290+
291+func bo (P) = ("lastClaimedTimeUser_" + P)
283292
284293
285-func bo (bp,bq) = fraction(bp, (aY * (bq + 1)), (6 * aU))
294+func bp (bq,br) = fraction(bq, (aZ * (br + 1)), (6 * aV))
286295
287296
288-let br = "wlg_issue10Time"
297+let bs = "wlg_issue10Time"
289298
290-let bs = "wlg_issueTime"
299+let bt = "wlg_issueTime"
291300
292-let bt = "wlg_issuedAmount"
301+let bu = "wlg_issuedAmount"
293302
294-let bu = "zbill_issuedAmount"
303+let bv = "zbill_issuedAmount"
295304
296-func bv (O) = ("acresStakedAmountByUser_" + O)
305+func bw (P) = ("acresStakedAmountByUser_" + P)
297306
298307
299-let bw = "acresStakedAmountTotal"
308+let bx = "acresStakedAmountTotal"
300309
301-let bx = "totalFarmingPower"
310+let by = "totalFarmingPower"
302311
303-let by = 0
312+let bz = 0
304313
305-let bz = 1
314+let bA = 1
306315
307-let bA = 2
316+let bB = 2
308317
309-let bB = 3
318+let bC = 3
310319
311-let bC = 4
320+let bD = 4
312321
313-let bD = 1
322+let bE = 1
314323
315-let bE = 5
324+let bF = 5
316325
317-let bF = 100000000
326+let bG = 100000000
318327
319-func bG (O) = ("userFullBonus_" + O)
328+func bH (P) = ("userFullBonus_" + P)
320329
321330
322-let bH = [0, 10, 20, 40, 80, 150, 250, 400, 700, 1000]
331+let bI = [0, 10, 20, 40, 80, 150, 250, 400, 700, 1000]
323332
324-func bI (bJ) = {
325- let bK = ((bJ + 99999999) / aV)
326- func bL (bM,bN) = if ((bN >= bK))
327- then bM
328- else (bM + 1)
333+func bJ (bK) = {
334+ let bL = ((bK + 99999999) / aW)
335+ func bM (bN,bO) = if ((bO >= bL))
336+ then bN
337+ else (bN + 1)
329338
330- let bO = bH
331- let bP = size(bO)
332- let bQ = 0
333- func bR (bS,bT) = if ((bT >= bP))
334- then bS
335- else bL(bS, bO[bT])
339+ let bP = bI
340+ let bQ = size(bP)
341+ let bR = 0
342+ func bS (bT,bU) = if ((bU >= bQ))
343+ then bT
344+ else bM(bT, bP[bU])
336345
337- func bU (bS,bT) = if ((bT >= bP))
338- then bS
346+ func bV (bT,bU) = if ((bU >= bQ))
347+ then bT
339348 else throw("List size exceeds 10")
340349
341- bU(bR(bR(bR(bR(bR(bR(bR(bR(bR(bR(bQ, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
350+ bV(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bR, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
342351 }
343352
344353
345-func bV (bJ) = ((bJ * 20) * (bI(bJ) + 4))
354+func bW (bK) = ((bK * 20) * (bJ(bK) + 4))
346355
347356
348-func bW (bJ,bX) = {
349- let bY = bV(bJ)
350- $Tuple2(fraction(bY, (aU + bX), aU), bY)
357+func bX (bK,bY) = {
358+ let bZ = bW(bK)
359+ $Tuple2(fraction(bZ, (aV + bY), aV), bZ)
351360 }
352361
353362
354-func bZ (ca,J) = {
355- let cb = valueOrElse(getInteger(J, bx), 0)
356- let cc = valueOrElse(getInteger(J, bv(ca)), 0)
357- let cd = valueOrElse(getInteger(J, bG(ca)), 0)
358- let ce = bW(cc, cd)
359- let cf = ce._1
360- let cg = ce._2
361-[cb, cf, cg, cd]
363+func ca (cb,K) = {
364+ let cc = valueOrElse(getInteger(K, by), 0)
365+ let cd = valueOrElse(getInteger(K, bw(cb)), 0)
366+ let ce = valueOrElse(getInteger(K, bH(cb)), 0)
367+ let cf = bX(cd, ce)
368+ let cg = cf._1
369+ let ch = cf._2
370+[cc, cg, ch, ce]
362371 }
363372
364373
365-let ch = 0
374+let ci = 0
366375
367-let ci = 1
376+let cj = 1
368377
369-let cj = 0
378+let ck = 0
370379
371-let ck = 1
380+let cl = 1
372381
373-let cl = 2
382+let cm = 2
374383
375-let cm = 8
384+let cn = 8
376385
377-let cn = 11
386+let co = 11
378387
379-let co = 12
388+let cp = 12
380389
381-let cp = 15
390+let cq = 15
382391
383-let cq = 16
392+let cr = 16
384393
385-let cr = 19
394+let cs = 19
386395
387-let cs = 23
396+let ct = 23
388397
389-let ct = 24
398+let cu = 24
390399
391-let cu = 25
400+let cv = 25
392401
393-let cv = 26
402+let cw = 26
394403
395-let cw = 27
404+let cx = 27
396405
397-let cx = 28
406+let cy = 28
398407
399-let cy = 29
408+let cz = 29
400409
401-func cz (cA,cB,cC,cD) = {
402- let bp = valueOrErrorMessage(getInteger(cB[bA], bt), "WLGOLD is not issued yet")
403- let cE = assetBalance(cB[by], cC)
404- let cF = (assetBalance(cB[bA], cC) - cD)
405- let cG = assetBalance(cB[bB], cC)
406- let cH = assetBalance(cB[bz], cC)
407- let cI = cB[bC]
408- let cJ = (assetBalance(cI, cC) + valueOrElse(getInteger(cI, bu), 0))
409- let cK = ((cH + cF) + cJ)
410- let cL = valueOrErrorMessage(getBinary(cB[bA], "wlg_assetId"), "Not initialized yet")
411- let cM = lastBlock.timestamp
412- let cN = valueOrErrorMessage(getInteger(cB[bA], bs), "Not initialized")
413- let cO = assetBalance(cB[bA], cL)
414- let cP = fraction(bp, aW, aU)
415- let cQ = valueOrElse(getInteger(cB[bA], bj), cP)
416- let cR = valueOrElse(getInteger(cB[bA], bi), cN)
417- let cS = addressFromStringValue(value(getString(cB[bA], bh)))
418- let cT = min([fraction(cP, (cM - cR), (3 * aZ)), cQ])
419- let cU = assetBalance(cS, cL)
420- let cV = fraction(bp, aX, aU)
421- let cW = valueOrElse(getInteger(cB[bA], bl), cV)
422- let cX = valueOrElse(getInteger(cB[bA], bk), cN)
423- let cY = min([fraction(cV, (cM - cX), (3 * aZ)), cW])
424- let cZ = assetBalance(cB[by], cL)
425- let da = valueOrElse(getInteger(cB[bA], bn(cA)), cN)
426- let db = ((da - cN) / aZ)
427- let dc = min([cM, (cN + (3 * aZ))])
428- let dd = min([((cM - cN) / aZ), 2])
429- let de = bZ(cA, cB[bz])
430- let df = bo(bp, dd)
431- let dg = (cN + (aZ * dd))
432- let dh = (cN + (aZ * (dd - 1)))
433- let di = fraction(df, (dc - da), aZ)
434- let dj = if ((db == dd))
435- then di
436- else if ((db == (dd - 1)))
410+func cA (cB,cC,cD,cE) = {
411+ let bq = valueOrErrorMessage(getInteger(cC[bB], bu), "WLGOLD is not issued yet")
412+ let cF = assetBalance(cC[bz], cD)
413+ let cG = (assetBalance(cC[bB], cD) - cE)
414+ let cH = assetBalance(cC[bC], cD)
415+ let cI = assetBalance(cC[bA], cD)
416+ let cJ = cC[bD]
417+ let cK = (assetBalance(cJ, cD) + valueOrElse(getInteger(cJ, bv), 0))
418+ let cL = ((cI + cG) + cK)
419+ let cM = valueOrErrorMessage(getBinary(cC[bB], "wlg_assetId"), "Not initialized yet")
420+ let cN = lastBlock.timestamp
421+ let cO = valueOrErrorMessage(getInteger(cC[bB], bt), "Not initialized")
422+ let cP = assetBalance(cC[bB], cM)
423+ let cQ = fraction(bq, aX, aV)
424+ let cR = valueOrElse(getInteger(cC[bB], bk), cQ)
425+ let cS = valueOrElse(getInteger(cC[bB], bj), cO)
426+ let cT = addressFromStringValue(value(getString(cC[bB], bi)))
427+ let cU = min([fraction(cQ, (cN - cS), (3 * ba)), cR])
428+ let cV = assetBalance(cT, cM)
429+ let cW = fraction(bq, aY, aV)
430+ let cX = valueOrElse(getInteger(cC[bB], bm), cW)
431+ let cY = valueOrElse(getInteger(cC[bB], bl), cO)
432+ let cZ = min([fraction(cW, (cN - cY), (3 * ba)), cX])
433+ let da = assetBalance(cC[bz], cM)
434+ let db = valueOrElse(getInteger(cC[bB], bo(cB)), cO)
435+ let dc = ((db - cO) / ba)
436+ let dd = min([cN, (cO + (3 * ba))])
437+ let de = min([((cN - cO) / ba), 2])
438+ let df = ca(cB, cC[bA])
439+ let dg = bp(bq, de)
440+ let dh = (cO + (ba * de))
441+ let di = (cO + (ba * (de - 1)))
442+ let dj = fraction(dg, (dd - db), ba)
443+ let dk = if ((dc == de))
444+ then dj
445+ else if ((dc == (de - 1)))
437446 then {
438- let dk = fraction(bo(bp, (dd - 1)), (dg - da), aZ)
439- (dk + di)
447+ let dl = fraction(bp(bq, (de - 1)), (dh - db), ba)
448+ (dl + dj)
440449 }
441450 else {
442- let dl = fraction(bo(bp, (dd - 2)), (dh - da), aZ)
443- let dk = bo(bp, (dd - 1))
444- ((dl + dk) + di)
451+ let dm = fraction(bp(bq, (de - 2)), (di - db), ba)
452+ let dl = bp(bq, (de - 1))
453+ ((dm + dl) + dj)
445454 }
446- let dm = valueOrElse(getInteger(cB[bA], bm), 0)
447- let dn = if ((de[ch] != 0))
448- then fraction(dj, de[ci], de[ch])
455+ let dn = valueOrElse(getInteger(cC[bB], bn), 0)
456+ let do = if ((df[ci] != 0))
457+ then fraction(dk, df[cj], df[ci])
449458 else 0
450- let do = valueOrElse(getInteger(cB[bA], br), bf)
451- let dp = fraction(bb, max([(cM - do), 0]), ba)
452- let dq = fraction(dp, bd, aU)
453- let dr = fraction(dp, be, aU)
454- let ds = max([(cM - max([bf, da])), 0])
455- let dt = if ((de[ch] != 0))
456- then fraction(fraction(fraction(bb, ds, ba), de[ci], de[ch]), bc, aU)
459+ let dp = valueOrElse(getInteger(cC[bB], bs), bg)
460+ let dq = fraction(bc, max([(cN - dp), 0]), bb)
461+ let dr = fraction(dq, be, aV)
462+ let ds = fraction(dq, bf, aV)
463+ let dt = max([(cN - max([bg, db])), 0])
464+ let du = if ((df[ci] != 0))
465+ then fraction(fraction(fraction(bc, dt, bb), df[cj], df[ci]), bd, aV)
457466 else 0
458- let du = max([bf, cM])
459- let dv = valueOrElse(getInteger(cB[bz], bw), 0)
460-[bp, cO, fraction(cK, aV, bp), cK, cE, cH, cF, cG, cN, cR, cP, cQ, cT, cU, cV, cW, cY, cZ, dd, dm, df, da, cJ, dn, dc, dp, dq, dr, dt, du, de[ch], dv]
467+ let dv = max([bg, cN])
468+ let dw = valueOrElse(getInteger(cC[bA], bx), 0)
469+[bq, cP, fraction(cL, aW, bq), cL, cF, cI, cG, cH, cO, cS, cQ, cR, cU, cV, cW, cX, cZ, da, de, dn, dg, db, cK, do, dd, dq, dr, ds, du, dv, df[ci], dw]
461470 }
462471
463472
464-let dw = "profitAddr"
473+let dx = "profitAddr"
465474
466-let dx = "stakersAmountPaidTotal"
475+let dy = "stakersAmountPaidTotal"
467476
468-func dy (O) = ("stakersAmountPaidUser_" + O)
477+func dz (P) = ("stakersAmountPaidUser_" + P)
469478
470479
471-func dz () = ab(reentrantInvoke(J, "saveLastTx", nil, nil))
480+func dA () = ac(reentrantInvoke(K, "saveLastTx", nil, nil))
472481
473482
474-func dA (O) = {
475- let dB = valueOrElse(getInteger(aM(O)), 0)
476- let dC = valueOrElse(getInteger(J, aQ(O)), 0)
477- let dD = valueOrElse(getInteger(aN(O)), dC)
478- let dE = (dD + fraction(dC, (lastBlock.timestamp - dB), e))
479- min([dE, dC])
483+func dB (P) = {
484+ let dC = valueOrElse(getInteger(aN(P)), 0)
485+ let dD = valueOrElse(getInteger(K, aR(P)), 0)
486+ let dE = valueOrElse(getInteger(aO(P)), dD)
487+ let dF = (dE + fraction(dD, (lastBlock.timestamp - dC), e))
488+ min([dF, dD])
480489 }
481490
482491
483-func dF (O) = {
484- let dG = cz(O, [I, J, K, L, M], j, 0)
485- let dH = bn(O)
486- let da = valueOrElse(getInteger(dH), 0)
487- let dI = dG[ct]
488- if ((da == dI))
492+func dG (P) = {
493+ let dH = cA(P, [J, K, L, M, N], k, 0)
494+ let dI = bo(P)
495+ let db = valueOrElse(getInteger(dI), 0)
496+ let dJ = dH[cu]
497+ if ((db == dJ))
489498 then $Tuple2(nil, 0)
490499 else {
491- let cM = lastBlock.timestamp
492- let cN = dG[cm]
493- let cQ = dG[cn]
494- let dJ = (dG[co] + dG[cw])
495- let dK = if ((dJ > 0))
496- then [ScriptTransfer(addressFromStringValue(value(getString(aG))), dJ, Q)]
500+ let cN = lastBlock.timestamp
501+ let cO = dH[cn]
502+ let cR = dH[co]
503+ let dK = (dH[cp] + dH[cx])
504+ let dL = if ((dK > 0))
505+ then [ScriptTransfer(addressFromStringValue(value(getString(aH))), dK, R)]
497506 else nil
498- let cW = dG[cp]
499- let dL = dG[cq]
500- let dM = if ((dL > 0))
501- then [ScriptTransfer(x, dL, Q)]
507+ let cX = dH[cq]
508+ let dM = dH[cr]
509+ let dN = if ((dM > 0))
510+ then [ScriptTransfer(y, dM, R)]
502511 else nil
503- let dN = dG[cv]
504- let dO = if ((dN > 0))
505- then [ScriptTransfer(addressFromStringValue(value(getString(bg))), dN, Q)]
512+ let dO = dH[cw]
513+ let dP = if ((dO > 0))
514+ then [ScriptTransfer(addressFromStringValue(value(getString(bh))), dO, R)]
506515 else nil
507- let dn = dG[cs]
508- let dP = dy(O)
509- let dQ = (dn + dG[cx])
510- let dR = dG[cu]
511- $Tuple2(((([Reissue(Q, dR, true), IntegerEntry(aP, (dG[cj] + dR)), IntegerEntry(br, dG[cy]), IntegerEntry(dP, (valueOrElse(getInteger(dP), 0) + dn)), IntegerEntry(dx, (valueOrElse(getInteger(dx), 0) + dn)), IntegerEntry(aL, (dG[cr] - dn)), IntegerEntry(aI, ((cQ - dJ) + dG[cw])), IntegerEntry(aH, cM), IntegerEntry(aK, (cW - dL)), IntegerEntry(aJ, cM), IntegerEntry(dH, dI)] ++ dK) ++ dM) ++ dO), dQ)
516+ let do = dH[ct]
517+ let dQ = dz(P)
518+ let dR = (do + dH[cy])
519+ let dS = dH[cv]
520+ $Tuple2(((([Reissue(R, dS, true), IntegerEntry(aQ, (dH[ck] + dS)), IntegerEntry(bs, dH[cz]), IntegerEntry(dQ, (valueOrElse(getInteger(dQ), 0) + do)), IntegerEntry(dy, (valueOrElse(getInteger(dy), 0) + do)), IntegerEntry(aM, (dH[cs] - do)), IntegerEntry(aJ, ((cR - dK) + dH[cx])), IntegerEntry(aI, cN), IntegerEntry(aL, (cX - dM)), IntegerEntry(aK, cN), IntegerEntry(dI, dJ)] ++ dL) ++ dN) ++ dP), dR)
512521 }
513522 }
514523
515524
516-func dS (O,dT) = {
517- let cM = lastBlock.timestamp
518- let dU = aT(O)
519- let dV = aR(O)
520- let dB = valueOrElse(getInteger(dU), 0)
521- let dW = valueOrElse(getInteger(dV), 0)
522- let dX = valueOrElse(getInteger(aS), 0)
523- let ay = fraction(fraction(aw, dW, at), (dB - cM), aF)
524- $Tuple3([IntegerEntry(dU, cM), IntegerEntry(dV, (dW + dT)), IntegerEntry(aS, (dX + dT))], ay, dW)
525+func dT (P,dU) = {
526+ let cN = lastBlock.timestamp
527+ let dV = aU(P)
528+ let dW = aS(P)
529+ let dC = valueOrElse(getInteger(dV), 0)
530+ let dX = valueOrElse(getInteger(dW), 0)
531+ let dY = valueOrElse(getInteger(aT), 0)
532+ let az = fraction(fraction(ax, dX, au), (dC - cN), aG)
533+ $Tuple3([IntegerEntry(dV, cN), IntegerEntry(dW, (dX + dU)), IntegerEntry(aT, (dY + dU))], az, dX)
525534 }
526535
527536
528-func dY (O) = {
529- let T = (height / i)
530- let dZ = (T - 1)
531- let ea = valueOrElse(getInteger(W(dZ)), bE)
532- let eb = valueOrElse(getInteger(X(dZ)), 0)
533- let ec = valueOrElse(getInteger(S(O, dZ)), 0)
534- if ((0 >= ec))
537+func dZ (P) = {
538+ let U = (height / i)
539+ let ea = (U - 1)
540+ let eb = valueOrElse(getInteger(X(ea)), bF)
541+ let ec = valueOrElse(getInteger(Y(ea)), 0)
542+ let ed = valueOrElse(getInteger(T(P, ea)), 0)
543+ if ((0 >= ed))
535544 then $Tuple2(nil, unit)
536545 else {
537- let ed = valueOrElse(getInteger(U(dZ)), 0)
538- if ((0 >= ed))
539- then $Tuple2([DeleteEntry(S(O, dZ))], unit)
546+ let ee = valueOrElse(getInteger(V(ea)), 0)
547+ if ((0 >= ee))
548+ then $Tuple2([DeleteEntry(T(P, ea))], unit)
540549 else {
541- let an = value(value(blockInfoByHeight((T * i))).vrf)
542- let am = fromBase58String(split(valueOrElse(getString(N(O)), "42_DEFAULT"), "_")[1])
543- let ee = ak(ed, am, an)
544- if (((ec * ea) > ee))
550+ let ao = value(value(blockInfoByHeight((U * i))).vrf)
551+ let an = fromBase58String(split(valueOrElse(getString(O(P)), "42_DEFAULT"), "_")[1])
552+ let ef = al(ee, an, ao)
553+ if (((ed * eb) > ef))
545554 then {
546- let ef = invoke(J, "issueNFT", [O, bD], nil)
547- let eg = getString(Y(dZ))
548- let eh = if (isDefined(eg))
549- then ((value(eg) + "_") + O)
550- else O
551- $Tuple2([IntegerEntry(X(dZ), (eb + 1)), DeleteEntry(S(O, dZ)), StringEntry(Y(dZ), eh)], ef)
555+ let eg = invoke(K, "issueNFT", [P, bE], nil)
556+ let eh = getString(Z(ea))
557+ let ei = if (isDefined(eh))
558+ then ((value(eh) + "_") + P)
559+ else P
560+ $Tuple2([IntegerEntry(Y(ea), (ec + 1)), DeleteEntry(T(P, ea)), StringEntry(Z(ea), ei)], eg)
552561 }
553562 else {
554- let ei = (ak(9, (base58'29' + am), an) + 1)
555- let ej = fraction(ec, ei, 10)
556- $Tuple2([DeleteEntry(S(O, dZ)), IntegerEntry(S(O, T), ej)], ej)
563+ let ej = (al(9, (base58'29' + an), ao) + 1)
564+ let ek = fraction(ed, ej, 10)
565+ $Tuple2([DeleteEntry(T(P, ea)), IntegerEntry(T(P, U), ek)], ek)
557566 }
558567 }
559568 }
560569 }
561570
562571
563-func ek (O,el) = {
564- let T = (height / i)
565- let em = S(O, T)
566- let en = split(el, "_")
567- let eo = valueOrElse(getInteger(U(T)), 0)
568- let ep = valueOrElse(getInteger(em), 0)
569- let eq = if ((Z(parseIntValue(en[0])) == parseIntValue(en[1])))
572+func el (P,em) = {
573+ let U = (height / i)
574+ let en = T(P, U)
575+ let eo = split(em, "_")
576+ let ep = valueOrElse(getInteger(V(U)), 0)
577+ let eq = valueOrElse(getInteger(en), 0)
578+ let er = if ((aa(parseIntValue(eo[0])) == parseIntValue(eo[1])))
570579 then 1
571580 else 0
572- let er = valueOrElse(getInteger(V(T)), 0)
573- let es = if (if ((ep == 0))
574- then (eq == 1)
581+ let es = valueOrElse(getInteger(W(U)), 0)
582+ let et = if (if ((eq == 0))
583+ then (er == 1)
575584 else false)
576- then [IntegerEntry(V(T), (er + 1))]
585+ then [IntegerEntry(W(U), (es + 1))]
577586 else nil
578- $Tuple2(if ((eq == 0))
587+ $Tuple2(if ((er == 0))
579588 then nil
580- else ((es :+ IntegerEntry(em, (ep + eq))) :+ IntegerEntry(U(T), (eo + eq))), eq)
589+ else ((et :+ IntegerEntry(en, (eq + er))) :+ IntegerEntry(V(U), (ep + er))), er)
581590 }
582591
583592
584-@Callable(et)
585-func constructorV1 (eu,ev,cS,ew) = if ((et.caller != this))
593+@Callable(eu)
594+func constructorV1 (ev,ew,cT,ex) = if ((eu.caller != this))
586595 then throw("Permission denied")
587- else if (isDefined(getBinary(P)))
596+ else if (isDefined(getBinary(Q)))
588597 then throw("Already initialized")
589598 else {
590- let bp = aD
591- let ex = Issue("WLGOLD", "WavesLands Gold investment token", bp, 8, true, unit, 0)
592- let ey = calculateAssetId(ex)
593-[ex, IntegerEntry(aO, lastBlock.timestamp), IntegerEntry(aP, bp), IntegerEntry(dx, 0), IntegerEntry(aL, fraction(aD, aE, b)), BinaryEntry(P, ey), StringEntry(w(), eu), StringEntry(bg, ev), StringEntry(aG, cS), StringEntry(dw, ew)]
599+ let bq = aE
600+ let ey = Issue("WLGOLD", "WavesLands Gold investment token", bq, 8, true, unit, 0)
601+ let ez = calculateAssetId(ey)
602+[ey, IntegerEntry(aP, lastBlock.timestamp), IntegerEntry(aQ, bq), IntegerEntry(dy, 0), IntegerEntry(aM, fraction(aE, aF, b)), BinaryEntry(Q, ez), StringEntry(x(), ev), StringEntry(bh, ew), StringEntry(aH, cT), StringEntry(dx, ex)]
594603 }
595604
596605
597606
598-@Callable(et)
599-func constructorV2 (ez) = if ((et.caller != this))
607+@Callable(eu)
608+func constructorV2 (eA) = if ((eu.caller != this))
600609 then throw("Permission denied")
601- else [StringEntry(v(), ez)]
610+ else [StringEntry(w(), eA)]
602611
603612
604613
605-@Callable(et)
606-func buyWlg (eA) = {
607- let eB = dz()
608- if ((eB == eB))
609- then if ((size(et.payments) != 1))
614+@Callable(eu)
615+func buyWlg (eB) = {
616+ let eC = dA()
617+ if ((eC == eC))
618+ then if ((size(eu.payments) != 1))
610619 then throw("exactly 1 payment must be attached")
611620 else {
612- let eC = et.payments[0]
613- let eD = eC.amount
614- if (if (!(isDefined(eC.assetId)))
621+ let eD = eu.payments[0]
622+ let eE = eD.amount
623+ if (if (!(isDefined(eD.assetId)))
615624 then true
616- else (value(eC.assetId) != j))
625+ else (value(eD.assetId) != k))
617626 then throw("USDT payments only!")
618627 else {
619- let eE = et.caller
620- let O = toString(eE)
621- if ((d > eD))
622- then throw((("You can trade min " + ae(d, 6)) + " USDT"))
628+ let eF = eu.caller
629+ let P = toString(eF)
630+ if ((d > eE))
631+ then throw((("You can trade min " + af(d, 6)) + " USDT"))
623632 else {
624- let dG = cz("", [I, J, K, L, M], j, eD)
625- let eF = dG[cj]
626- let eG = dG[cl]
627- let eH = fraction(eG, 6, 5, CEILING)
628- let eI = fraction(eD, c, eH)
629- let eJ = dA(O)
630- if ((eI > eJ))
631- then throw((("You can get max " + ae(eJ, 8)) + " WLGOLD at the moment"))
632- else if ((eA > eI))
633+ let dH = cA("", [J, K, L, M, N], k, eE)
634+ let eG = dH[ck]
635+ let eH = dH[cm]
636+ let eI = fraction(eH, 6, 5, CEILING)
637+ let eJ = fraction(eE, c, eI)
638+ let eK = dB(P)
639+ if ((eJ > eK))
640+ then throw((("You can get max " + af(eK, 8)) + " WLGOLD at the moment"))
641+ else if ((eB > eJ))
633642 then throw("Price changed during operation, please try again")
634643 else {
635- let eK = (eD / 6)
636- $Tuple2([Reissue(Q, eI, true), IntegerEntry(aP, (eF + eI)), IntegerEntry(aM(O), lastBlock.timestamp), IntegerEntry(aN(O), (eJ - eI)), ScriptTransfer(addressFromStringValue(value(getString(dw))), eK, j), ScriptTransfer(eE, eI, Q)], eB)
644+ let eL = (eE / 6)
645+ $Tuple2([Reissue(R, eJ, true), IntegerEntry(aQ, (eG + eJ)), IntegerEntry(aN(P), lastBlock.timestamp), IntegerEntry(aO(P), (eK - eJ)), ScriptTransfer(addressFromStringValue(value(getString(dx))), eL, k), ScriptTransfer(eF, eJ, R)], eC)
637646 }
638647 }
639648 }
640649 }
641650 else throw("Strict value is not equal to itself.")
642651 }
643652
644653
645654
646-@Callable(et)
647-func buyWlgREADONLY (o,eD) = {
648- let dG = cz("", [I, J, K, L, M], j, eD)
649- let eG = dG[cl]
650- let eH = fraction(eG, 6, 5, CEILING)
651- let eI = fraction(eD, c, eH)
652- let eJ = dA(o)
653- let eL = fraction(eJ, eH, c)
654- let eK = (eD / 6)
655- $Tuple2(nil, [eI, d, eL, eK])
655+@Callable(eu)
656+func buyWlgREADONLY (p,eE) = {
657+ let dH = cA("", [J, K, L, M, N], k, eE)
658+ let eH = dH[cm]
659+ let eI = fraction(eH, 6, 5, CEILING)
660+ let eJ = fraction(eE, c, eI)
661+ let eK = dB(p)
662+ let eM = fraction(eK, eI, c)
663+ let eL = (eE / 6)
664+ $Tuple2(nil, [eJ, d, eM, eL])
656665 }
657666
658667
659668
660-@Callable(et)
661-func sellWlg (eM) = {
662- let eB = dz()
663- if ((eB == eB))
664- then if ((size(et.payments) != 1))
669+@Callable(eu)
670+func sellWlg (eN) = {
671+ let eC = dA()
672+ if ((eC == eC))
673+ then if ((size(eu.payments) != 1))
665674 then throw("exactly 1 payment must be attached")
666675 else {
667- let eC = et.payments[0]
668- let eN = eC.amount
669- let eE = et.caller
670- let O = toString(eE)
671- let eJ = dA(O)
672- if ((eN > eJ))
673- then throw((("You can spend max " + ae(eJ, 8)) + " WLGOLD at the moment"))
674- else if (if (!(isDefined(eC.assetId)))
676+ let eD = eu.payments[0]
677+ let eO = eD.amount
678+ let eF = eu.caller
679+ let P = toString(eF)
680+ let eK = dB(P)
681+ if ((eO > eK))
682+ then throw((("You can spend max " + af(eK, 8)) + " WLGOLD at the moment"))
683+ else if (if (!(isDefined(eD.assetId)))
675684 then true
676- else (value(eC.assetId) != Q))
685+ else (value(eD.assetId) != R))
677686 then throw("WLGOLD payments only!")
678687 else {
679- let dG = cz("", [I, J, K, L, M], j, 0)
680- let eF = dG[cj]
681- let eO = (dG[cl] / 2)
682- let eD = fraction(eN, eO, c)
683- if ((d > eD))
684- then throw((("You can trade min " + ae(d, 6)) + " USDT"))
685- else if ((eM > eD))
688+ let dH = cA("", [J, K, L, M, N], k, 0)
689+ let eG = dH[ck]
690+ let eP = (dH[cm] / 2)
691+ let eE = fraction(eO, eP, c)
692+ if ((d > eE))
693+ then throw((("You can trade min " + af(d, 6)) + " USDT"))
694+ else if ((eN > eE))
686695 then throw("Price changed during operation, please try again")
687696 else {
688- let eK = (eD / 5)
689- $Tuple2([Burn(Q, eN), IntegerEntry(aP, (eF - eN)), IntegerEntry(aM(O), lastBlock.timestamp), IntegerEntry(aN(O), (eJ - eN)), ScriptTransfer(addressFromStringValue(value(getString(dw))), eK, j), ScriptTransfer(eE, eD, j)], eB)
697+ let eL = (eE / 5)
698+ $Tuple2([Burn(R, eO), IntegerEntry(aQ, (eG - eO)), IntegerEntry(aN(P), lastBlock.timestamp), IntegerEntry(aO(P), (eK - eO)), ScriptTransfer(addressFromStringValue(value(getString(dx))), eL, k), ScriptTransfer(eF, eE, k)], eC)
690699 }
691700 }
692701 }
693702 else throw("Strict value is not equal to itself.")
694703 }
695704
696705
697706
698-@Callable(et)
699-func sellWlgREADONLY (o,eN) = {
700- let eJ = dA(o)
701- let dG = cz("", [I, J, K, L, M], j, 0)
702- let eO = (dG[cl] / 2)
703- let eD = fraction(eN, eO, c)
704- let eP = fraction(d, c, eO)
705- let eK = (eD / 5)
706- $Tuple2(nil, [eD, eP, eJ, eK])
707+@Callable(eu)
708+func sellWlgREADONLY (p,eO) = {
709+ let eK = dB(p)
710+ let dH = cA("", [J, K, L, M, N], k, 0)
711+ let eP = (dH[cm] / 2)
712+ let eE = fraction(eO, eP, c)
713+ let eQ = fraction(d, c, eP)
714+ let eL = (eE / 5)
715+ $Tuple2(nil, [eE, eQ, eK, eL])
707716 }
708717
709718
710719
711-@Callable(et)
720+@Callable(eu)
712721 func claim () = {
713- let eB = dz()
714- if ((eB == eB))
715- then if ((size(et.payments) != 0))
722+ let eC = dA()
723+ if ((eC == eC))
724+ then if ((size(eu.payments) != 0))
716725 then throw("No payments required")
717726 else {
718- let eQ = dF(toString(et.caller))
719- let eR = eQ._1
720- let eS = eQ._2
721- $Tuple2((eR :+ ScriptTransfer(et.caller, eS, Q)), eB)
727+ let eR = dG(toString(eu.caller))
728+ let eS = eR._1
729+ let eT = eR._2
730+ $Tuple2((eS :+ ScriptTransfer(eu.caller, eT, R)), eC)
722731 }
723732 else throw("Strict value is not equal to itself.")
724733 }
725734
726735
727736
728-@Callable(et)
729-func onStakeUnstakeLand (O) = if (if (if ((et.caller != G))
730- then (et.caller != H)
737+@Callable(eu)
738+func onStakeUnstakeLand (P) = if (if (if ((eu.caller != H))
739+ then (eu.caller != I)
731740 else false)
732- then (et.caller != J)
741+ then (eu.caller != K)
733742 else false)
734743 then throw("Permission denied")
735744 else {
736- let eT = dF(O)
737- let eR = eT._1
738- let eS = eT._2
739- $Tuple2(if ((eS > 0))
740- then (eR :+ ScriptTransfer(addressFromStringValue(O), eS, Q))
741- else eR, eS)
745+ let eU = dG(P)
746+ let eS = eU._1
747+ let eT = eU._2
748+ $Tuple2(if ((eT > 0))
749+ then (eS :+ ScriptTransfer(addressFromStringValue(P), eT, R))
750+ else eS, eT)
742751 }
743752
744753
745754
746-@Callable(et)
747-func burnWlgold (eN) = if ((et.caller != J))
755+@Callable(eu)
756+func burnWlgold (eO) = if ((eu.caller != K))
748757 then throw("Permission denied")
749758 else {
750- let dG = cz("", [I, J, K, L, M], j, 0)
751- if ((eN > dG[ck]))
752- then throw(((("Only " + ae(dG[ck], 8)) + " WLGOLD left on contract, can't burn ") + ae(eN, 8)))
759+ let dH = cA("", [J, K, L, M, N], k, 0)
760+ if ((eO > dH[cl]))
761+ then throw(((("Only " + af(dH[cl], 8)) + " WLGOLD left on contract, can't burn ") + af(eO, 8)))
753762 else {
754- let eU = (dG[cj] - eN)
755- $Tuple2([Burn(Q, eN), IntegerEntry(aP, eU)], eU)
763+ let eV = (dH[ck] - eO)
764+ $Tuple2([Burn(R, eO), IntegerEntry(aQ, eV)], eV)
756765 }
757766 }
758767
759768
760769
761-@Callable(et)
762-func betForTicket (eV) = {
763- let eB = dz()
764- if ((eB == eB))
765- then if ((size(et.payments) != 0))
770+@Callable(eu)
771+func betForTicket (eW) = {
772+ let eC = dA()
773+ if ((eC == eC))
774+ then if ((size(eu.payments) != 0))
766775 then throw("No payments required")
767776 else {
768- let O = toString(et.caller)
769- let dZ = ((height / i) - 1)
770- let ec = valueOrElse(getInteger(S(O, dZ)), 0)
771- let ed = valueOrElse(getInteger(U(dZ)), 0)
772- if (if ((ec > 0))
773- then (ed > 0)
777+ let P = toString(eu.caller)
778+ let ea = ((height / i) - 1)
779+ let ed = valueOrElse(getInteger(T(P, ea)), 0)
780+ let ee = valueOrElse(getInteger(V(ea)), 0)
781+ if (if ((ed > 0))
782+ then (ee > 0)
774783 else false)
775784 then throw("Please open the chest first")
776- else if (((eV / 4) != 0))
785+ else if (((eW / 4) != 0))
777786 then throw("Invalid bet: should be 0..3")
778787 else {
779- let eW = (height % g)
780- if ((eW > (g - 3)))
781- then throw((("Cannot bet: the day is almost ended, please wait " + toString((g - eW))) + " blocks"))
788+ let eX = (height % g)
789+ if ((eX > (g - 3)))
790+ then throw((("Cannot bet: the day is almost ended, please wait " + toString((g - eX))) + " blocks"))
782791 else {
783- let eX = valueOrElse(getInteger(J, bv(O)), 0)
784- if ((bF > eX))
785- then throw((("You need to stake at least " + ae(bF, 8)) + " ACRES to bet"))
792+ let eY = valueOrElse(getInteger(K, bw(P)), 0)
793+ if ((bG > eY))
794+ then throw((("You need to stake at least " + af(bG, 8)) + " ACRES to bet"))
786795 else {
787- let eY = ((height / g) + 1)
788- let eZ = R(O)
789- let fa = getString(eZ)
790- let fb = StringEntry(eZ, ((toString(eY) + "_") + toString(eV)))
791- if (isDefined(fa))
796+ let eZ = ((height / g) + 1)
797+ let fa = S(P)
798+ let fb = getString(fa)
799+ let fc = StringEntry(fa, ((toString(eZ) + "_") + toString(eW)))
800+ if (isDefined(fb))
792801 then {
793- let fc = value(fa)
794- if ((split(fc, "_")[0] == toString(eY)))
802+ let fd = value(fb)
803+ if ((split(fd, "_")[0] == toString(eZ)))
795804 then throw("You already bet for tomorrow")
796805 else {
797- let fd = ek(O, fc)
798- $Tuple2((fd._1 :+ fb), fd._2)
806+ let fe = el(P, fd)
807+ $Tuple2((fe._1 :+ fc), fe._2)
799808 }
800809 }
801- else $Tuple2([fb], 0)
810+ else $Tuple2([fc], 0)
802811 }
803812 }
804813 }
805814 }
806815 else throw("Strict value is not equal to itself.")
807816 }
808817
809818
810819
811-@Callable(et)
812-func takeWlgXp (O) = if ((et.caller != G))
820+@Callable(eu)
821+func takeWlgXp (P) = if ((eu.caller != H))
813822 then throw("Permission denied")
814823 else {
815- let fe = dS(O, 0)
816- let eR = fe._1
817- let ay = fe._2
818- $Tuple2(eR, ay)
824+ let ff = dT(P, 0)
825+ let eS = ff._1
826+ let az = ff._2
827+ $Tuple2(eS, az)
819828 }
820829
821830
822831
823-@Callable(et)
824-func checkWlgXpREADONLY (O) = {
825- let ff = dS(O, 0)
826- let fg = ff._1
827- let fh = ff._2
828- let aB = (valueOrElse(getInteger(G, au(O)), 0) + fh)
829- let fi = az(valueOrElse(getInteger(G, av(O)), 0), aB)
830- $Tuple2(nil, (fi :+ aB))
832+@Callable(eu)
833+func checkWlgXpREADONLY (P) = {
834+ let fg = dT(P, 0)
835+ let fh = fg._1
836+ let fi = fg._2
837+ let aC = (valueOrElse(getInteger(H, av(P)), 0) + fi)
838+ let fj = aA(valueOrElse(getInteger(H, aw(P)), 0), aC)
839+ $Tuple2(nil, (fj :+ aC))
831840 }
832841
833842
834843
835-@Callable(et)
836-func setNumPrizes (ea) = if ((et.caller != this))
844+@Callable(eu)
845+func setNumPrizes (eb) = if ((eu.caller != this))
837846 then throw("Permission denied")
838847 else {
839- let T = (height / i)
840- $Tuple2([IntegerEntry(W(T), ea)], ea)
848+ let U = (height / i)
849+ $Tuple2([IntegerEntry(X(U), eb)], eb)
841850 }
842851
843852
844853
845-@Callable(et)
846-func openChest () = if (!(m))
854+@Callable(eu)
855+func openChest () = if (!(n))
847856 then throw("Temporarily disabled")
848857 else {
849- let eB = dz()
850- if ((eB == eB))
851- then if ((size(et.payments) != 0))
858+ let eC = dA()
859+ if ((eC == eC))
860+ then if ((size(eu.payments) != 0))
852861 then throw("No payments required")
853862 else {
854- let dZ = ((height / i) - 1)
855- let O = toString(et.caller)
856- let ec = valueOrElse(getInteger(S(O, dZ)), 0)
857- if ((0 >= ec))
863+ let ea = ((height / i) - 1)
864+ let P = toString(eu.caller)
865+ let ed = valueOrElse(getInteger(T(P, ea)), 0)
866+ if ((0 >= ed))
858867 then throw("No gems to open the chest")
859- else dY(O)
868+ else dZ(P)
860869 }
861870 else throw("Strict value is not equal to itself.")
862871 }
863872
864873

github/deemru/w8io/026f985 
346.42 ms