tx · FX8Qp3uNwbKYfwhC7DJLfiwrELQX9pkQMsFq3XPmDwks

3N7HtrKeFFLz5oy6PfGv1Lg3GwPk4gCPdGy:  -0.02700000 Waves

2024.11.26 21:35 [3388750] smart account 3N7HtrKeFFLz5oy6PfGv1Lg3GwPk4gCPdGy > SELF 0.00000000 Waves

{ "type": 13, "id": "FX8Qp3uNwbKYfwhC7DJLfiwrELQX9pkQMsFq3XPmDwks", "fee": 2700000, "feeAssetId": null, "timestamp": 1732646173711, "version": 2, "chainId": 84, "sender": "3N7HtrKeFFLz5oy6PfGv1Lg3GwPk4gCPdGy", "senderPublicKey": "FsR18761ZAsUqsTd7TK3XmR6bhihs1UXVmpHYxz5JzQ1", "proofs": [ "3w2n3c9Japk4VrNENftTzTfgsKVEFtbBRsCiuT4824HNLqLg8p2REyN4cbJjoExU6TWuEEj5QcrkZpsjcTUk8v4x" ], "script": "base64:BgJNCAISBgoECAgICBIDCgEIEgMKAQESBAoCCAESAwoBARIECgIIARIAEgMKAQgSAwoBARIDCgEBEgMKAQgSAwoBCBIDCgEBEgASBAoCCAGWAQADU0VQAgJfXwAFTVVMVDYAwIQ9AAVNVUxUOACAwtcvAA5NSU5TSE9QUEFZTUVOVACgjQYACkRBWV9NSUxMSVMAgLiZKQAFY2hhaW4JAMkBAgkAygECCAUEdGhpcwVieXRlcwABAAEACkRBWV9CTE9DS1MEByRtYXRjaDAFBWNoYWluAwkAAAIBAVcFByRtYXRjaDAAoAsDCQAAAgEBVAUHJG1hdGNoMAA8CQACAQINVW5rbm93biBjaGFpbgALV0VFS19CTE9DS1MEByRtYXRjaDAFBWNoYWluAwkAAAIBAVcFByRtYXRjaDAA4E4DCQAAAgEBVAUHJG1hdGNoMAC0AQkAAgECDVVua25vd24gY2hhaW4AClZSRl9PRkZTRVQEByRtYXRjaDAFBWNoYWluAwkAAAIBAVcFByRtYXRjaDAAAAMJAAACAQFUBQckbWF0Y2gwAJD5RQkAAgECDVVua25vd24gY2hhaW4AC3VzZHRBc3NldElkBAckbWF0Y2gwBQVjaGFpbgMJAAACAQFXBQckbWF0Y2gwASCE2nqyCAM/TtG7yo7ui5O8yYLdC136B5ao1CP5qA//uQMJAAACAQFUBQckbWF0Y2gwASBVsdifcoeC7+XjW42sBatl3ppDoS8WuwXzGreHpfHFGAkAAgECDVVua25vd24gY2hhaW4AFmRlZmF1bHRSZXN0MkFkZHJlc3NTdHIEByRtYXRjaDAFBWNoYWluAwkAAAIBAVcFByRtYXRjaDACIzNQRndZdGE4YmlFejMxenBlRmU1REpLOHdFNXRyU3BRVkY4AwkAAAIBAVQFByRtYXRjaDACIzNON1V1WWFyNjI2NFA1OEZCaFZXS1BRQWg0WXVhMmhnbmd2CQACAQINVW5rbm93biBjaGFpbgAVZGVmYXVsdFJlc3RBZGRyZXNzU3RyBAckbWF0Y2gwBQVjaGFpbgMJAAACAQFXBQckbWF0Y2gwAiMzUFFDdXZGYnZoNExrUFVucm5VMXozam5iQTFwOW0zV05odgMJAAACAQFUBQckbWF0Y2gwAiMzTXVta0dHenRDS0FYcFdEcXhrZGRvZnFYU1VicVFrdlNKeQkAAgECDVVua25vd24gY2hhaW4AEUtTX0FMTE9XX05GVF9EUkFXBAckbWF0Y2gwBQVjaGFpbgMJAAACAQFXBQckbWF0Y2gwBwMJAAACAQFUBQckbWF0Y2gwBgkAAgECDVVua25vd24gY2hhaW4BD2dldFN0cmluZ09yRmFpbAIHYWRkcmVzcwNrZXkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQdhZGRyZXNzBQNrZXkJALkJAgkAzAgCAgptYW5kYXRvcnkgCQDMCAIJAKUIAQUHYWRkcmVzcwkAzAgCAgEuCQDMCAIFA2tleQkAzAgCAg8gaXMgbm90IGRlZmluZWQFA25pbAIAABBJZHhDZmdBY3JlczJEYXBwAAEADUlkeENmZ1dsZ0RhcHAAAgAUSWR4Q2ZnUHV6emxlUG9vbERhcHAABAAUSWR4Q2ZnSW52ZXN0RnVuZERhcHAABQEKa2V5UmVzdENmZwACDiVzX19yZXN0Q29uZmlnAQ9rZXlSZXN0MkFkZHJlc3MAAg0lc19fcmVzdDJBZGRyAQ5rZXlSZXN0QWRkcmVzcwACDCVzX19yZXN0QWRkcgAMcmVzdENvbnRyYWN0CQERQGV4dHJOYXRpdmUoMTA2MikBCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMJAQ5rZXlSZXN0QWRkcmVzcwAFFWRlZmF1bHRSZXN0QWRkcmVzc1N0cgERcmVhZFJlc3RDZmdPckZhaWwBBHJlc3QJALwJAgkBD2dldFN0cmluZ09yRmFpbAIFBHJlc3QJAQprZXlSZXN0Q2ZnAAUDU0VQARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCCHJlc3QyQ2ZnA2lkeAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUIcmVzdDJDZmcFA2lkeAkArAICAipSZXN0IGNmZyBkb2Vzbid0IGNvbnRhaW4gYWRkcmVzcyBhdCBpbmRleCAJAKQDAQUDaWR4ABFJZHhDZmdTdGFraW5nRGFwcAABAA9JZHhDZmdBY3Jlc0RhcHAACAAHcmVzdENmZwkBEXJlYWRSZXN0Q2ZnT3JGYWlsAQUMcmVzdENvbnRyYWN0AA9zdGFraW5nQ29udHJhY3QJARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCBQdyZXN0Q2ZnBRFJZHhDZmdTdGFraW5nRGFwcAANYWNyZXNDb250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFB3Jlc3RDZmcFD0lkeENmZ0FjcmVzRGFwcAANcmVzdDJDb250cmFjdAkBEUBleHRyTmF0aXZlKDEwNjIpAQkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzCQEPa2V5UmVzdDJBZGRyZXNzAAUWZGVmYXVsdFJlc3QyQWRkcmVzc1N0cgAIcmVzdDJDZmcJARFyZWFkUmVzdENmZ09yRmFpbAEFDXJlc3QyQ29udHJhY3QADmFjcmVzMkNvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUIcmVzdDJDZmcFEElkeENmZ0FjcmVzMkRhcHAAC3dsZ0NvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUIcmVzdDJDZmcFDUlkeENmZ1dsZ0RhcHAAEnB1enpsZVBvb2xDb250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFCHJlc3QyQ2ZnBRRJZHhDZmdQdXp6bGVQb29sRGFwcAASaW52ZXN0RnVuZENvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUIcmVzdDJDZmcFFElkeENmZ0ludmVzdEZ1bmREYXBwARVrZXlMYXN0V2Vla1R4SWRCeVVzZXIBBGFkZHIJAKwCAgITbGFzdFdlZWtUeElkQnlVc2VyXwUEYWRkcgANd2xnQXNzZXRJZEtleQILd2xnX2Fzc2V0SWQACndsZ0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnAgCBQt3bGdDb250cmFjdAUNd2xnQXNzZXRJZEtleQIYV0xHT0xEIGlzIG5vdCBpc3N1ZWQgeWV0AQprZXlVc2VyQmV0AQRhZGRyCQCsAgICCHVzZXJCZXRfBQRhZGRyARJrZXlVc2VyV2Vla1RpY2tldHMCBGFkZHIEd2VlawkArAICCQCsAgIJAKwCAgIQdXNlcldlZWtUaWNrZXRzXwUEYWRkcgIBXwkApAMBBQR3ZWVrARNrZXlUb3RhbFdlZWtUaWNrZXRzAQR3ZWVrCQCsAgICEXRvdGFsV2Vla1RpY2tldHNfCQCkAwEFBHdlZWsBGGtleVRvdGFsV2Vla1BhcnRpY2lwYW50cwEEd2VlawkArAICAhZ0b3RhbFdlZWtQYXJ0aWNpcGFudHNfCQCkAwEFBHdlZWsBDmtleU51bU5GVDJEcmF3AQR3ZWVrCQCsAgICDG51bU5GVDJEcmF3XwkApAMBBQR3ZWVrAQ5rZXlOdW1ORlREcmF3bgEEd2VlawkArAICAgxudW1ORlREcmF3bl8JAKQDAQUEd2VlawEOa2V5V2Vla1dpbm5lcnMBBHdlZWsJAKwCAgIMd2Vla1dpbm5lcnNfCQCkAwEFBHdlZWsBCndpbm5pbmdCZXQBA2RheQQBYgkAaAIFA2RheQUKREFZX0JMT0NLUwQBaAMJAGYCBQFiBQpWUkZfT0ZGU0VUBQFiCQBkAgUBYgUKVlJGX09GRlNFVAkAagIJALEJAQkBBXZhbHVlAQgJAQV2YWx1ZQEJAO0HAQUBaAN2cmYABAALaXhXbGdBbW91bnQAAAAIaXhXbGdXbGcAAQAKaXhXbGdQcmljZQACAA5peFdsZ0lzc3VlVGltZQAIAA9peFdsZ1RlYW1BbUxlZnQACwATaXhXbGdUZWFtQW1BdmFpbE5vdwAMAA5peFdsZ0FjdEFtTGVmdAAPABJpeFdsZ0FjdEFtQXZhaWxOb3cAEAAQaXhXbGdBbUxlZnRUb3RhbAATABNpeFdsZ1VzZXJBbUF2YWlsTm93ABcAEGl4V2xnRWZmVXNlclRpbWUAGAASaXhXbGdJc3N1ZTEwQW1vdW50ABkAG2l4V2xnTWFya2V0aW5nSXNzdWUxMEFtb3VudAAaABZpeFdsZ1RlYW1Jc3N1ZTEwQW1vdW50ABsAD2l4V2xnVXNlcjEwcGFydAAcABBpeFdsZ0lzc3VlMTBUaW1lAB0BBWFzSW50AQF2BAckbWF0Y2gwBQF2AwkAAQIFByRtYXRjaDACA0ludAQBbgUHJG1hdGNoMAUBbgkAAgECFWZhaWwgdG8gY2FzdCBpbnRvIEludAEKZml4ZWRQb2ludAIDdmFsCGRlY2ltYWxzBAZ0ZW5Qb3cJAGwGAAoAAAUIZGVjaW1hbHMAAAAABQRET1dOBAdsb3dQYXJ0CQCkAwEJAGoCBQN2YWwFBnRlblBvdwQGemVyb2VzCQCwAgIJAKQDAQUGdGVuUG93CQBkAgABCQCxAgEFB2xvd1BhcnQJAKwCAgkArAICCQCsAgIJAKQDAQkAaQIFA3ZhbAUGdGVuUG93AgEuBQZ6ZXJvZXMFB2xvd1BhcnQBD2dldFJhbmRvbU51bWJlcgMIbWF4VmFsdWUEc2FsdAdlbnRyb3B5AwkAZwIAAAUIbWF4VmFsdWUJAAIBAhZtYXhWYWx1ZSBzaG91bGQgYmUgPiAwBApyYW5kb21IYXNoCQDUFgEJAMsBAgUEc2FsdAUHZW50cm9weQkAagIJALEJAQUKcmFuZG9tSGFzaAUIbWF4VmFsdWUABlNDQUxFOACAwtcvAAx4cExldmVsU2NhbGUAgBkAD3hwTGV2ZWxSZWNpcFBvdwCgHwASbnVtUG9pbnRzT25MZXZlbFVwAAMAD3dsZ0Jhc2VBbW91bnRYcACA0NvD9AIBCWtleVVzZXJYUAEEYWRkcgkArAICAgd1c2VyWFBfBQRhZGRyAQxrZXlVc2VyTGV2ZWwBBGFkZHIJAKwCAgIKdXNlckxldmVsXwUEYWRkcgAFeHBXbGcAkE4BCWxldmVsQnlYUAECeHAJAGsDBQx4cExldmVsU2NhbGUJAGwGBQJ4cAAEBQ94cExldmVsUmVjaXBQb3cABAAEBQRET1dOBQZTQ0FMRTgBB2xldmVsVXACCWN1cnJMZXZlbAVuZXdYUAQIbmV3TGV2ZWwJAQlsZXZlbEJ5WFABBQVuZXdYUAkAzAgCBQhuZXdMZXZlbAkAzAgCCQBoAgUSbnVtUG9pbnRzT25MZXZlbFVwCQBlAgUIbmV3TGV2ZWwFCWN1cnJMZXZlbAUDbmlsAAhNSUxMSU9ONgCAgOmDsd4WAAtQTEFZRVJTSEFSRQCAtRgACURBWU1JTExJUwCAuJkpAAt0ZWFtQWRkcktleQIIdGVhbUFkZHIAD2xhc3RUZWFtVGltZUtleQIUbGFzdENsYWltZWRUaW1lX3RlYW0AEXRlYW1BbW91bnRMZWZ0S2V5Ag50ZWFtQW1vdW50TGVmdAAVbGFzdEFjdGl2aXRpZXNUaW1lS2V5AhpsYXN0Q2xhaW1lZFRpbWVfYWN0aXZpdGllcwAQYWN0QW1vdW50TGVmdEtleQIUYWN0aXZpdGllc0Ftb3VudExlZnQAFHN0YWtlcnNBbW91bnRMZWZ0S2V5AhFzdGFrZXJzQW1vdW50TGVmdAEZa2V5TGFzdFdsZ1RyYWRlVGltZUJ5VXNlcgEEYWRkcgkArAICAhBsYXN0QXJiVGltZVVzZXJfBQRhZGRyARprZXlMYXN0V2xnVHJhZGVMaW1pdEJ5VXNlcgEEYWRkcgkArAICAhFsYXN0V2xnTGltaXRVc2VyXwUEYWRkcgAPd2xnSXNzdWVUaW1lS2V5Ag13bGdfaXNzdWVUaW1lABJ3bGdJc3N1ZWRBbW91bnRLZXkCEHdsZ19pc3N1ZWRBbW91bnQBGmtleUFjcmVzU3Rha2VkQW1vdW50QnlVc2VyAQRhZGRyCQCsAgICGGFjcmVzU3Rha2VkQW1vdW50QnlVc2VyXwUEYWRkcgEYa2V5V2xnU3Rha2VkQW1vdW50QnlVc2VyAQRhZGRyCQCsAgICFndsZ1N0YWtlZEFtb3VudEJ5VXNlcl8FBGFkZHIAEXdsZ1N0YWtlZFRvdGFsS2V5AhR3bGdTdGFrZWRBbW91bnRUb3RhbAEWa2V5V2xnU3Rha2VkVGltZUJ5VXNlcgEEYWRkcgkArAICAhR3bGdTdGFrZWRUaW1lQnlVc2VyXwUEYWRkcgADTTZfAMCEPQADTThfAIDC1y8AClRFQU1fU0hBUkUAwJoMAA5BQ1RJVklUWV9TSEFSRQCgjQYADFBMQVlFUl9TSEFSRQCAtRgAC1lFQVJfTUlMTElTAICG68d1AAZEQVlfTVMAgLiZKQAHSVNTVUUxMACAlOvcAwAPUExBWUVSUzEwX1NIQVJFAIDqMAARTUFSS0VUSU5HMTBfU0hBUkUAoI0GAAxURUFNMTBfU0hBUkUAoI0GABFORVdfU1RBS0lOR19TVEFSVACA87jCsTIAEG1hcmtldGluZ0FkZHJLZXkCDW1hcmtldGluZ0FkZHIACnRlYW1BZHJLZXkCCHRlYW1BZGRyAA5sYXN0VGVhbVRpbUtleQIUbGFzdENsYWltZWRUaW1lX3RlYW0ADnRlYW1BbXRMZWZ0S2V5Ag50ZWFtQW1vdW50TGVmdAAUbGFzdEFjdGl2aXRpZXNUaW1LZXkCGmxhc3RDbGFpbWVkVGltZV9hY3Rpdml0aWVzAA1hY3RBbXRMZWZ0S2V5AhRhY3Rpdml0aWVzQW1vdW50TGVmdAARc3Rha2Vyc0FtdExlZnRLZXkCEXN0YWtlcnNBbW91bnRMZWZ0ARZrZXlMYXN0Q2xhaW1UaW1lQnlVc2VyAQRhZGRyCQCsAgICFGxhc3RDbGFpbWVkVGltZVVzZXJfBQRhZGRyAQ1kaXN0ckJ5UGVyaW9kAgxpc3N1ZWRBbW91bnQGcGVyaW9kCQBrAwUMaXNzdWVkQW1vdW50CQBoAgUMUExBWUVSX1NIQVJFCQBkAgUGcGVyaW9kAAEJAGgCAAYFA002XwARd2xnSXNzdWUxMFRpbWVLZXkCD3dsZ19pc3N1ZTEwVGltZQAOd2xnSXNzdWVUaW1LZXkCDXdsZ19pc3N1ZVRpbWUAD3dsZ0lzc3VlZEFtdEtleQIQd2xnX2lzc3VlZEFtb3VudAAOemJJc3N1ZWRBbXRLZXkCEnpiaWxsX2lzc3VlZEFtb3VudAEXa2V5QWNyZXNTdGFrZWRBbXRCeVVzZXIBBGFkZHIJAKwCAgIYYWNyZXNTdGFrZWRBbW91bnRCeVVzZXJfBQRhZGRyABJhY3Jlc1N0YWtkVG90YWxLZXkCFmFjcmVzU3Rha2VkQW1vdW50VG90YWwAFHRvdGFsRmFybWluZ1Bvd2VyS2V5AhF0b3RhbEZhcm1pbmdQb3dlcgAJZGFwcDJSZXN0AAAADGRhcHAyU3Rha2luZwABAAhkYXBwMldsZwACAAtkYXBwMlB1enpsZQADAA9kYXBwMkludmVzdEZ1bmQABAAUSWR4RHR4MVBlcmNHZW1XaW5uZXIAAQAVREVGQVVMVF9XRUVLTFlfUFJJWkVTAAUADUFDUkVTX0ZPUl9CRVQAgMLXLwARa2V5TmZ0VG90YWxJc3N1ZWQCDm5mdFRvdGFsSXNzdWVkABFrZXlOZnRUb3RhbEJ1cm5lZAIObmZ0VG90YWxCdXJuZWQAE2tleVdsTmZ0VG90YWxTdGFrZWQCEFdsTmZ0VG90YWxTdGFrZWQBEmtleVVzZXJXbE5mdE51bWJlcgEEYWRkcgkArAICAhB1c2VyV2xOZnROdW1iZXJfBQRhZGRyARBrZXlVc2VyRnVsbEJvbnVzAQRhZGRyCQCsAgICDnVzZXJGdWxsQm9udXNfBQRhZGRyAApsZXZlbEFjcmVzCQDMCAIAAAkAzAgCAAoJAMwIAgAUCQDMCAIAKAkAzAgCAFAJAMwIAgCWAQkAzAgCAPoBCQDMCAIAkAMJAMwIAgC8BQkAzAgCAOgHBQNuaWwBD2dldExldmVsQnlBY3JlcwEFYWNyZXMEA2FjcgkAaQIJAGQCBQVhY3JlcwD/wdcvBQNNOF8KAQdjaGVja2VyAgNhY2MEaXRlbQMJAGcCBQRpdGVtBQNhY3IFA2FjYwkAZAIFA2FjYwABCgACJGwFCmxldmVsQWNyZXMKAAIkcwkAkAMBBQIkbAoABSRhY2MwAAAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBB2NoZWNrZXICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDEwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoBFmdldEZhcm1pbmdQb3dlckJ5QWNyZXMBBWFjcmVzCQBoAgkAaAIFBWFjcmVzABQJAGQCCQEPZ2V0TGV2ZWxCeUFjcmVzAQUFYWNyZXMABAEeZ2V0RmFybWluZ1Bvd2VyQnlBY3Jlc0FuZEJvbnVzAgVhY3JlcwZib251czYECm5vdEJvbnVzZWQJARZnZXRGYXJtaW5nUG93ZXJCeUFjcmVzAQUFYWNyZXMJAJQKAgkAawMFCm5vdEJvbnVzZWQJAGQCBQNNNl8FBmJvbnVzNgUDTTZfBQpub3RCb251c2VkARBnZXRGYXJtaW5nUG93ZXJzAhJ1c2VyQWRkclN0ck9yRW1wdHkOYWNyZXMyQ29udHJhY3QEB3RvdGFsRlAJAQt2YWx1ZU9yRWxzZQIJAJoIAgUOYWNyZXMyQ29udHJhY3QFFHRvdGFsRmFybWluZ1Bvd2VyS2V5AAAECXVzZXJBY3JlcwkBC3ZhbHVlT3JFbHNlAgkAmggCBQ5hY3JlczJDb250cmFjdAkBF2tleUFjcmVzU3Rha2VkQW10QnlVc2VyAQUSdXNlckFkZHJTdHJPckVtcHR5AAAECXVzZXJCb251cwkBC3ZhbHVlT3JFbHNlAgkAmggCBQ5hY3JlczJDb250cmFjdAkBEGtleVVzZXJGdWxsQm9udXMBBRJ1c2VyQWRkclN0ck9yRW1wdHkAAAQIJHQwNzkxNDMJAR5nZXRGYXJtaW5nUG93ZXJCeUFjcmVzQW5kQm9udXMCBQl1c2VyQWNyZXMFCXVzZXJCb251cwQNdXNlckZQYm9udXNlZAgFCCR0MDc5MTQzAl8xBBB1c2VyRlBub3RCb251c2VkCAUIJHQwNzkxNDMCXzIJAMwIAgUHdG90YWxGUAkAzAgCBQ11c2VyRlBib251c2VkCQDMCAIFEHVzZXJGUG5vdEJvbnVzZWQJAMwIAgUJdXNlckJvbnVzBQNuaWwACmlkeFRvdGFsRlAAAAAQaWR4VXNlckZQYm9udXNlZAABAQxnZXRXbGdTdGF0czIEC3VzZXJBZGRyT3B0CWNvbnRyYWN0cwZ1c2R0SWQVdXNkdEJhbGFuY2VDb3JyZWN0aW9uBAxpc3N1ZWRBbW91bnQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCCQCRAwIFCWNvbnRyYWN0cwUIZGFwcDJXbGcFD3dsZ0lzc3VlZEFtdEtleQIYV0xHT0xEIGlzIG5vdCBpc3N1ZWQgeWV0BAdyZXN0VXNkCQDwBwIJAJEDAgUJY29udHJhY3RzBQlkYXBwMlJlc3QFBnVzZHRJZAQGd2xnVXNkCQBlAgkA8AcCCQCRAwIFCWNvbnRyYWN0cwUIZGFwcDJXbGcFBnVzZHRJZAUVdXNkdEJhbGFuY2VDb3JyZWN0aW9uBAlwdXp6bGVVc2QJAPAHAgkAkQMCBQljb250cmFjdHMFC2RhcHAyUHV6emxlBQZ1c2R0SWQECWFjcmVzMlVzZAkA8AcCCQCRAwIFCWNvbnRyYWN0cwUMZGFwcDJTdGFraW5nBQZ1c2R0SWQEEWludmVzdEZuZENvbnRyYWN0CQCRAwIFCWNvbnRyYWN0cwUPZGFwcDJJbnZlc3RGdW5kBA9pbnZlc3RGdW5kVG90YWwJAGQCCQDwBwIFEWludmVzdEZuZENvbnRyYWN0BQZ1c2R0SWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgURaW52ZXN0Rm5kQ29udHJhY3QFDnpiSXNzdWVkQW10S2V5AAAEDXRvdGFsRnVuZHNVc2QJAGQCCQBkAgUJYWNyZXMyVXNkBQZ3bGdVc2QFD2ludmVzdEZ1bmRUb3RhbAQFd2xnSWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnAgCCQCRAwIFCWNvbnRyYWN0cwUIZGFwcDJXbGcCC3dsZ19hc3NldElkAhNOb3QgaW5pdGlhbGl6ZWQgeWV0BANub3cIBQlsYXN0QmxvY2sJdGltZXN0YW1wBAlpc3N1ZVRpbWUJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCCQCRAwIFCWNvbnRyYWN0cwUIZGFwcDJXbGcFDndsZ0lzc3VlVGltS2V5Ag9Ob3QgaW5pdGlhbGl6ZWQEBndsZ1dsZwkA8AcCCQCRAwIFCWNvbnRyYWN0cwUIZGFwcDJXbGcFBXdsZ0lkBAl0ZWFtVG90YWwJAGsDBQxpc3N1ZWRBbW91bnQFClRFQU1fU0hBUkUFA002XwQOdGVhbUFtb3VudExlZnQJAQt2YWx1ZU9yRWxzZQIJAJoIAgkAkQMCBQljb250cmFjdHMFCGRhcHAyV2xnBQ50ZWFtQW10TGVmdEtleQUJdGVhbVRvdGFsBAxsYXN0VGVhbVRpbWUJAQt2YWx1ZU9yRWxzZQIJAJoIAgkAkQMCBQljb250cmFjdHMFCGRhcHAyV2xnBQ5sYXN0VGVhbVRpbUtleQUJaXNzdWVUaW1lBAh0ZWFtQWRkcgkBEUBleHRyTmF0aXZlKDEwNjIpAQkBBXZhbHVlAQkAnQgCCQCRAwIFCWNvbnRyYWN0cwUIZGFwcDJXbGcFCnRlYW1BZHJLZXkEFnRlYW1BbW91bnRBdmFpbGFibGVOb3cJAJcDAQkAzAgCCQBrAwUJdGVhbVRvdGFsCQBlAgUDbm93BQxsYXN0VGVhbVRpbWUJAGgCAAMFC1lFQVJfTUlMTElTCQDMCAIFDnRlYW1BbW91bnRMZWZ0BQNuaWwECnRlYW1XbGdvbGQJAPAHAgUIdGVhbUFkZHIFBXdsZ0lkBAhhY3RUb3RhbAkAawMFDGlzc3VlZEFtb3VudAUOQUNUSVZJVFlfU0hBUkUFA002XwQNYWN0QW1vdW50TGVmdAkBC3ZhbHVlT3JFbHNlAgkAmggCCQCRAwIFCWNvbnRyYWN0cwUIZGFwcDJXbGcFDWFjdEFtdExlZnRLZXkFCGFjdFRvdGFsBBJsYXN0QWN0aXZpdGllc1RpbWUJAQt2YWx1ZU9yRWxzZQIJAJoIAgkAkQMCBQljb250cmFjdHMFCGRhcHAyV2xnBRRsYXN0QWN0aXZpdGllc1RpbUtleQUJaXNzdWVUaW1lBBVhY3RBbW91bnRBdmFpbGFibGVOb3cJAJcDAQkAzAgCCQBrAwUIYWN0VG90YWwJAGUCBQNub3cFEmxhc3RBY3Rpdml0aWVzVGltZQkAaAIAAwULWUVBUl9NSUxMSVMJAMwIAgUNYWN0QW1vdW50TGVmdAUDbmlsBAlhY3RXbGdvbGQJAPAHAgkAkQMCBQljb250cmFjdHMFCWRhcHAyUmVzdAUFd2xnSWQEDGxhc3RVc2VyVGltZQkBC3ZhbHVlT3JFbHNlAgkAmggCCQCRAwIFCWNvbnRyYWN0cwUIZGFwcDJXbGcJARZrZXlMYXN0Q2xhaW1UaW1lQnlVc2VyAQULdXNlckFkZHJPcHQFCWlzc3VlVGltZQQObGFzdFVzZXJQZXJpb2QJAGkCCQBlAgUMbGFzdFVzZXJUaW1lBQlpc3N1ZVRpbWUFC1lFQVJfTUlMTElTBApub3dMaW1pdGVkCQCXAwEJAMwIAgUDbm93CQDMCAIJAGQCBQlpc3N1ZVRpbWUJAGgCAAMFC1lFQVJfTUlMTElTBQNuaWwECWN1clBlcmlvZAkAlwMBCQDMCAIJAGkCCQBlAgUDbm93BQlpc3N1ZVRpbWUFC1lFQVJfTUlMTElTCQDMCAIAAgUDbmlsBANlZmYJARBnZXRGYXJtaW5nUG93ZXJzAgULdXNlckFkZHJPcHQJAJEDAgUJY29udHJhY3RzBQxkYXBwMlN0YWtpbmcEFWN1clBlcmlvZERpc3RyaWJ1dGlvbgkBDWRpc3RyQnlQZXJpb2QCBQxpc3N1ZWRBbW91bnQFCWN1clBlcmlvZAQNcHJldlBlcmlvZEVuZAkAZAIFCWlzc3VlVGltZQkAaAIFC1lFQVJfTUlMTElTBQljdXJQZXJpb2QEEXByZXZQcmV2UGVyaW9kRW5kCQBkAgUJaXNzdWVUaW1lCQBoAgULWUVBUl9NSUxMSVMJAGUCBQljdXJQZXJpb2QAAQQCYTAJAGsDBRVjdXJQZXJpb2REaXN0cmlidXRpb24JAGUCBQpub3dMaW1pdGVkBQxsYXN0VXNlclRpbWUFC1lFQVJfTUlMTElTBA11c2VyQXZhaWxhYmxlAwkAAAIFDmxhc3RVc2VyUGVyaW9kBQljdXJQZXJpb2QFAmEwAwkAAAIFDmxhc3RVc2VyUGVyaW9kCQBlAgUJY3VyUGVyaW9kAAEEAmExCQBrAwkBDWRpc3RyQnlQZXJpb2QCBQxpc3N1ZWRBbW91bnQJAGUCBQljdXJQZXJpb2QAAQkAZQIFDXByZXZQZXJpb2RFbmQFDGxhc3RVc2VyVGltZQULWUVBUl9NSUxMSVMJAGQCBQJhMQUCYTAEAmEyCQBrAwkBDWRpc3RyQnlQZXJpb2QCBQxpc3N1ZWRBbW91bnQJAGUCBQljdXJQZXJpb2QAAgkAZQIFEXByZXZQcmV2UGVyaW9kRW5kBQxsYXN0VXNlclRpbWUFC1lFQVJfTUlMTElTBAJhMQkBDWRpc3RyQnlQZXJpb2QCBQxpc3N1ZWRBbW91bnQJAGUCBQljdXJQZXJpb2QAAQkAZAIJAGQCBQJhMgUCYTEFAmEwBA9hbW91bnRMZWZ0VG90YWwJAQt2YWx1ZU9yRWxzZQIJAJoIAgkAkQMCBQljb250cmFjdHMFCGRhcHAyV2xnBRFzdGFrZXJzQW10TGVmdEtleQAABAp1c2VyQW1vdW50AwkBAiE9AgkAkQMCBQNlZmYFCmlkeFRvdGFsRlAAAAkAawMFDXVzZXJBdmFpbGFibGUJAJEDAgUDZWZmBRBpZHhVc2VyRlBib251c2VkCQCRAwIFA2VmZgUKaWR4VG90YWxGUAAABA9sYXN0SXNzdWUxMFRpbWUJAQt2YWx1ZU9yRWxzZQIJAJoIAgkAkQMCBQljb250cmFjdHMFCGRhcHAyV2xnBRF3bGdJc3N1ZTEwVGltZUtleQURTkVXX1NUQUtJTkdfU1RBUlQEDWlzc3VlMTBBbW91bnQJAGsDBQdJU1NVRTEwCQCWAwEJAMwIAgkAZQIFA25vdwUPbGFzdElzc3VlMTBUaW1lCQDMCAIAAAUDbmlsBQZEQVlfTVMEFm1hcmtldGluZ0lzc3VlMTBBbW91bnQJAGsDBQ1pc3N1ZTEwQW1vdW50BRFNQVJLRVRJTkcxMF9TSEFSRQUDTTZfBBF0ZWFtSXNzdWUxMEFtb3VudAkAawMFDWlzc3VlMTBBbW91bnQFDFRFQU0xMF9TSEFSRQUDTTZfBA51c2VyMTBJbnRlcnZhbAkAlgMBCQDMCAIJAGUCBQNub3cJAJYDAQkAzAgCBRFORVdfU1RBS0lOR19TVEFSVAkAzAgCBQxsYXN0VXNlclRpbWUFA25pbAkAzAgCAAAFA25pbAQKdXNlcjEwcGFydAMJAQIhPQIJAJEDAgUDZWZmBQppZHhUb3RhbEZQAAAJAGsDCQBrAwkAawMFB0lTU1VFMTAFDnVzZXIxMEludGVydmFsBQZEQVlfTVMJAJEDAgUDZWZmBRBpZHhVc2VyRlBib251c2VkCQCRAwIFA2VmZgUKaWR4VG90YWxGUAUPUExBWUVSUzEwX1NIQVJFBQNNNl8AAAQObmV3SXNzdWUxMFRpbWUJAJYDAQkAzAgCBRFORVdfU1RBS0lOR19TVEFSVAkAzAgCBQNub3cFA25pbAQQYWNyZXNTdGFrZWRUb3RhbAkBC3ZhbHVlT3JFbHNlAgkAmggCCQCRAwIFCWNvbnRyYWN0cwUMZGFwcDJTdGFraW5nBRJhY3Jlc1N0YWtkVG90YWxLZXkAAAQObmZ0VG90YWxJc3N1ZWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgkAkQMCBQljb250cmFjdHMFDGRhcHAyU3Rha2luZwURa2V5TmZ0VG90YWxJc3N1ZWQAAAQObmZ0VG90YWxCdXJuZWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgkAkQMCBQljb250cmFjdHMFDGRhcHAyU3Rha2luZwURa2V5TmZ0VG90YWxCdXJuZWQAAAQQd2xOZnRUb3RhbFN0YWtlZAkBC3ZhbHVlT3JFbHNlAgkAmggCCQCRAwIFCWNvbnRyYWN0cwUMZGFwcDJTdGFraW5nBRNrZXlXbE5mdFRvdGFsU3Rha2VkAAAED3dsTmZ0VXNlclN0YWtlZAkBC3ZhbHVlT3JFbHNlAgkAmggCCQCRAwIFCWNvbnRyYWN0cwUMZGFwcDJTdGFraW5nCQESa2V5VXNlcldsTmZ0TnVtYmVyAQkBC3ZhbHVlT3JFbHNlAgULdXNlckFkZHJPcHQCAAAACQDMCAIFDGlzc3VlZEFtb3VudAkAzAgCBQZ3bGdXbGcJAMwIAgkAawMFDXRvdGFsRnVuZHNVc2QFA004XwUMaXNzdWVkQW1vdW50CQDMCAIFDXRvdGFsRnVuZHNVc2QJAMwIAgUHcmVzdFVzZAkAzAgCBQlhY3JlczJVc2QJAMwIAgUGd2xnVXNkCQDMCAIFCXB1enpsZVVzZAkAzAgCBQlpc3N1ZVRpbWUJAMwIAgUMbGFzdFRlYW1UaW1lCQDMCAIFCXRlYW1Ub3RhbAkAzAgCBQ50ZWFtQW1vdW50TGVmdAkAzAgCBRZ0ZWFtQW1vdW50QXZhaWxhYmxlTm93CQDMCAIFCnRlYW1XbGdvbGQJAMwIAgUIYWN0VG90YWwJAMwIAgUNYWN0QW1vdW50TGVmdAkAzAgCBRVhY3RBbW91bnRBdmFpbGFibGVOb3cJAMwIAgUJYWN0V2xnb2xkCQDMCAIFCWN1clBlcmlvZAkAzAgCBQ9hbW91bnRMZWZ0VG90YWwJAMwIAgUVY3VyUGVyaW9kRGlzdHJpYnV0aW9uCQDMCAIFDGxhc3RVc2VyVGltZQkAzAgCBQ9pbnZlc3RGdW5kVG90YWwJAMwIAgUKdXNlckFtb3VudAkAzAgCBQpub3dMaW1pdGVkCQDMCAIFDWlzc3VlMTBBbW91bnQJAMwIAgUWbWFya2V0aW5nSXNzdWUxMEFtb3VudAkAzAgCBRF0ZWFtSXNzdWUxMEFtb3VudAkAzAgCBQp1c2VyMTBwYXJ0CQDMCAIFDm5ld0lzc3VlMTBUaW1lCQDMCAIJAJEDAgUDZWZmBQppZHhUb3RhbEZQCQDMCAIFEGFjcmVzU3Rha2VkVG90YWwJAMwIAgUObmZ0VG90YWxJc3N1ZWQJAMwIAgUObmZ0VG90YWxCdXJuZWQJAMwIAgUQd2xOZnRUb3RhbFN0YWtlZAkAzAgCBQ93bE5mdFVzZXJTdGFrZWQFA25pbAANcHJvZml0QWRkcktleQIKcHJvZml0QWRkcgAZc3Rha2Vyc0Ftb3VudFBhaWRUb3RhbEtleQIWc3Rha2Vyc0Ftb3VudFBhaWRUb3RhbAEYa2V5U3Rha2Vyc0Ftb3VudFBhaWRVc2VyAQRhZGRyCQCsAgICFnN0YWtlcnNBbW91bnRQYWlkVXNlcl8FBGFkZHIBB3Byb2xvZzIACQEFYXNJbnQBCQD9BwQFDmFjcmVzMkNvbnRyYWN0AgpzYXZlTGFzdFR4BQNuaWwFA25pbAESZ2V0U3dhcExpbWl0V2xnb2xkAQRhZGRyBAhsYXN0VGltZQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEZa2V5TGFzdFdsZ1RyYWRlVGltZUJ5VXNlcgEFBGFkZHIAAAQMZGVmYXVsdExpbWl0CQELdmFsdWVPckVsc2UCCQCaCAIFDmFjcmVzMkNvbnRyYWN0CQEaa2V5QWNyZXNTdGFrZWRBbW91bnRCeVVzZXIBBQRhZGRyAAAEDWxhc3RMaW1pdExlZnQJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBGmtleUxhc3RXbGdUcmFkZUxpbWl0QnlVc2VyAQUEYWRkcgUMZGVmYXVsdExpbWl0BAxjdXJyZW50TGltaXQJAGQCBQ1sYXN0TGltaXRMZWZ0CQBrAwUMZGVmYXVsdExpbWl0CQBlAggFCWxhc3RCbG9jawl0aW1lc3RhbXAFCGxhc3RUaW1lBQpEQVlfTUlMTElTCQCXAwEJAMwIAgUMY3VycmVudExpbWl0CQDMCAIFDGRlZmF1bHRMaW1pdAUDbmlsAQ5jbGFpbUludGVybmFsMgEEYWRkcgQIY3VyU3RhdHMJAQxnZXRXbGdTdGF0czIEBQRhZGRyCQDMCAIFDXJlc3QyQ29udHJhY3QJAMwIAgUOYWNyZXMyQ29udHJhY3QJAMwIAgULd2xnQ29udHJhY3QJAMwIAgUScHV6emxlUG9vbENvbnRyYWN0CQDMCAIFEmludmVzdEZ1bmRDb250cmFjdAUDbmlsBQt1c2R0QXNzZXRJZAAABAt1c2VyVGltZUtleQkBFmtleUxhc3RDbGFpbVRpbWVCeVVzZXIBBQRhZGRyBAxsYXN0VXNlclRpbWUJAQt2YWx1ZU9yRWxzZQIJAJ8IAQULdXNlclRpbWVLZXkAAAQLdXNlckVmZlRpbWUJAJEDAgUIY3VyU3RhdHMFEGl4V2xnRWZmVXNlclRpbWUDCQAAAgUMbGFzdFVzZXJUaW1lBQt1c2VyRWZmVGltZQkAlAoCBQNuaWwAAAQDbm93CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQJaXNzdWVUaW1lCQCRAwIFCGN1clN0YXRzBQ5peFdsZ0lzc3VlVGltZQQOdGVhbUFtb3VudExlZnQJAJEDAgUIY3VyU3RhdHMFD2l4V2xnVGVhbUFtTGVmdAQKdGVhbUFtb3VudAkAZAIJAJEDAgUIY3VyU3RhdHMFE2l4V2xnVGVhbUFtQXZhaWxOb3cJAJEDAgUIY3VyU3RhdHMFFml4V2xnVGVhbUlzc3VlMTBBbW91bnQEDHRlYW1UcmFuc2ZlcgMJAGYCBQp0ZWFtQW1vdW50AAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQkBBXZhbHVlAQkAoggBBQt0ZWFtQWRkcktleQUKdGVhbUFtb3VudAUKd2xnQXNzZXRJZAUDbmlsBQNuaWwEDWFjdEFtb3VudExlZnQJAJEDAgUIY3VyU3RhdHMFDml4V2xnQWN0QW1MZWZ0BAlhY3RBbW91bnQJAJEDAgUIY3VyU3RhdHMFEml4V2xnQWN0QW1BdmFpbE5vdwQLYWN0VHJhbnNmZXIDCQBmAgUJYWN0QW1vdW50AAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUMcmVzdENvbnRyYWN0BQlhY3RBbW91bnQFCndsZ0Fzc2V0SWQFA25pbAUDbmlsBA9tYXJrZXRpbmdBbW91bnQJAJEDAgUIY3VyU3RhdHMFG2l4V2xnTWFya2V0aW5nSXNzdWUxMEFtb3VudAQRbWFya2V0aW5nVHJhbnNmZXIDCQBmAgUPbWFya2V0aW5nQW1vdW50AAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQkBBXZhbHVlAQkAoggBBRBtYXJrZXRpbmdBZGRyS2V5BQ9tYXJrZXRpbmdBbW91bnQFCndsZ0Fzc2V0SWQFA25pbAUDbmlsBAp1c2VyQW1vdW50CQCRAwIFCGN1clN0YXRzBRNpeFdsZ1VzZXJBbUF2YWlsTm93BAd1c2VyS2V5CQEYa2V5U3Rha2Vyc0Ftb3VudFBhaWRVc2VyAQUEYWRkcgQJdXNlclRvdGFsCQBkAgUKdXNlckFtb3VudAkAkQMCBQhjdXJTdGF0cwUPaXhXbGdVc2VyMTBwYXJ0BA5pc3N1ZWQxMEFtb3VudAkAkQMCBQhjdXJTdGF0cwUSaXhXbGdJc3N1ZTEwQW1vdW50CQCUCgIJAM4IAgkAzggCCQDOCAIJAMwIAgkBB1JlaXNzdWUDBQp3bGdBc3NldElkBQ5pc3N1ZWQxMEFtb3VudAYJAMwIAgkBDEludGVnZXJFbnRyeQIFEndsZ0lzc3VlZEFtb3VudEtleQkAZAIJAJEDAgUIY3VyU3RhdHMFC2l4V2xnQW1vdW50BQ5pc3N1ZWQxMEFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgURd2xnSXNzdWUxMFRpbWVLZXkJAJEDAgUIY3VyU3RhdHMFEGl4V2xnSXNzdWUxMFRpbWUJAMwIAgkBDEludGVnZXJFbnRyeQIFB3VzZXJLZXkJAGQCCQELdmFsdWVPckVsc2UCCQCfCAEFB3VzZXJLZXkAAAUKdXNlckFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgUZc3Rha2Vyc0Ftb3VudFBhaWRUb3RhbEtleQkAZAIJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUZc3Rha2Vyc0Ftb3VudFBhaWRUb3RhbEtleQAABQp1c2VyQW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCBRRzdGFrZXJzQW1vdW50TGVmdEtleQkAZQIJAJEDAgUIY3VyU3RhdHMFEGl4V2xnQW1MZWZ0VG90YWwFCnVzZXJBbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIFEXRlYW1BbW91bnRMZWZ0S2V5CQBkAgkAZQIFDnRlYW1BbW91bnRMZWZ0BQp0ZWFtQW1vdW50CQCRAwIFCGN1clN0YXRzBRZpeFdsZ1RlYW1Jc3N1ZTEwQW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCBQ9sYXN0VGVhbVRpbWVLZXkFA25vdwkAzAgCCQEMSW50ZWdlckVudHJ5AgUQYWN0QW1vdW50TGVmdEtleQkAZQIFDWFjdEFtb3VudExlZnQFCWFjdEFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgUVbGFzdEFjdGl2aXRpZXNUaW1lS2V5BQNub3cJAMwIAgkBDEludGVnZXJFbnRyeQIFC3VzZXJUaW1lS2V5BQt1c2VyRWZmVGltZQUDbmlsBQx0ZWFtVHJhbnNmZXIFC2FjdFRyYW5zZmVyBRFtYXJrZXRpbmdUcmFuc2ZlcgUJdXNlclRvdGFsAQ50YWtlWHBJbnRlcm5hbAIEYWRkcgVkZWx0YQQDbm93CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQHdGltZUtleQkBFmtleVdsZ1N0YWtlZFRpbWVCeVVzZXIBBQRhZGRyBAlhbW91bnRLZXkJARhrZXlXbGdTdGFrZWRBbW91bnRCeVVzZXIBBQRhZGRyBAhsYXN0VGltZQkBC3ZhbHVlT3JFbHNlAgkAnwgBBQd0aW1lS2V5AAAEB29sZFVzZXIJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJYW1vdW50S2V5AAAECG9sZFRvdGFsCQELdmFsdWVPckVsc2UCCQCfCAEFEXdsZ1N0YWtlZFRvdGFsS2V5AAAEAnhwCQBrAwkAawMFBXhwV2xnBQdvbGRVc2VyBQ93bGdCYXNlQW1vdW50WHAJAGUCBQhsYXN0VGltZQUDbm93BQlEQVlNSUxMSVMJAJUKAwkAzAgCCQEMSW50ZWdlckVudHJ5AgUHdGltZUtleQUDbm93CQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlhbW91bnRLZXkJAGQCBQdvbGRVc2VyBQVkZWx0YQkAzAgCCQEMSW50ZWdlckVudHJ5AgURd2xnU3Rha2VkVG90YWxLZXkJAGQCBQhvbGRUb3RhbAUFZGVsdGEFA25pbAUCeHAFB29sZFVzZXIBEW9wZW5DaGVzdEludGVybmFsAQRhZGRyBAR3ZWVrCQBpAgUGaGVpZ2h0BQtXRUVLX0JMT0NLUwQIZHJhd1dlZWsJAGUCBQR3ZWVrAAEECW51bVByaXplcwkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEOa2V5TnVtTkZUMkRyYXcBBQhkcmF3V2VlawUVREVGQVVMVF9XRUVLTFlfUFJJWkVTBAtwcml6ZXNEcmF3bgkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEOa2V5TnVtTkZURHJhd24BBQhkcmF3V2VlawAABAt1c2VyVGlja2V0cwkBC3ZhbHVlT3JFbHNlAgkAnwgBCQESa2V5VXNlcldlZWtUaWNrZXRzAgUEYWRkcgUIZHJhd1dlZWsAAAMJAGcCAAAFC3VzZXJUaWNrZXRzCQCUCgIFA25pbAUEdW5pdAQLd2Vla1RpY2tldHMJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBE2tleVRvdGFsV2Vla1RpY2tldHMBBQhkcmF3V2VlawAAAwkAZwIAAAULd2Vla1RpY2tldHMJAJQKAgkAzAgCCQELRGVsZXRlRW50cnkBCQESa2V5VXNlcldlZWtUaWNrZXRzAgUEYWRkcgUIZHJhd1dlZWsFA25pbAUEdW5pdAQHZW50cm9weQkBBXZhbHVlAQgJAQV2YWx1ZQEJAO0HAQkAaAIFBHdlZWsFC1dFRUtfQkxPQ0tTA3ZyZgQEc2FsdAkA2QQBCQCRAwIJALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBCQEVa2V5TGFzdFdlZWtUeElkQnlVc2VyAQUEYWRkcgIKNDJfREVGQVVMVAIBXwABBAZyYW5kb20JAQ9nZXRSYW5kb21OdW1iZXIDBQt3ZWVrVGlja2V0cwUEc2FsdAUHZW50cm9weQMJAGYCCQBoAgULdXNlclRpY2tldHMFCW51bVByaXplcwUGcmFuZG9tBAtpc3N1ZVJlc3VsdAkA/AcEBQ5hY3JlczJDb250cmFjdAIIaXNzdWVORlQJAMwIAgUEYWRkcgkAzAgCBRRJZHhEdHgxUGVyY0dlbVdpbm5lcgUDbmlsBQNuaWwEB3dpbm5lcnMJAKIIAQkBDmtleVdlZWtXaW5uZXJzAQUIZHJhd1dlZWsECm5ld1dpbm5lcnMDCQEJaXNEZWZpbmVkAQUHd2lubmVycwkArAICCQCsAgIJAQV2YWx1ZQEFB3dpbm5lcnMCAV8FBGFkZHIFBGFkZHIJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDmtleU51bU5GVERyYXduAQUIZHJhd1dlZWsJAGQCBQtwcml6ZXNEcmF3bgABCQDMCAIJAQtEZWxldGVFbnRyeQEJARJrZXlVc2VyV2Vla1RpY2tldHMCBQRhZGRyBQhkcmF3V2VlawkAzAgCCQELU3RyaW5nRW50cnkCCQEOa2V5V2Vla1dpbm5lcnMBBQhkcmF3V2VlawUKbmV3V2lubmVycwUDbmlsBQtpc3N1ZVJlc3VsdAQHcmFuZG9tMQkAZAIJAQ9nZXRSYW5kb21OdW1iZXIDAAkJAMsBAgEBQgUEc2FsdAUHZW50cm9weQABBAtjb25zVGlja2V0cwkAawMFC3VzZXJUaWNrZXRzBQdyYW5kb20xAAoJAJQKAgkAzAgCCQELRGVsZXRlRW50cnkBCQESa2V5VXNlcldlZWtUaWNrZXRzAgUEYWRkcgUIZHJhd1dlZWsJAMwIAgkBDEludGVnZXJFbnRyeQIJARJrZXlVc2VyV2Vla1RpY2tldHMCBQRhZGRyBQR3ZWVrBQtjb25zVGlja2V0cwUDbmlsBQtjb25zVGlja2V0cwEUY2xhaW1UaWNrZXRzSW50ZXJuYWwCBGFkZHIKdXNlckJldFN0cgQEd2VlawkAaQIFBmhlaWdodAULV0VFS19CTE9DS1MECnRpY2tldHNLZXkJARJrZXlVc2VyV2Vla1RpY2tldHMCBQRhZGRyBQR3ZWVrBAZkYXlCZXQJALUJAgUKdXNlckJldFN0cgIBXwQPb2xkVG90YWxUaWNrZXRzCQELdmFsdWVPckVsc2UCCQCfCAEJARNrZXlUb3RhbFdlZWtUaWNrZXRzAQUEd2VlawAABApvbGRUaWNrZXRzCQELdmFsdWVPckVsc2UCCQCfCAEFCnRpY2tldHNLZXkAAAQMZGVsdGFUaWNrZXRzAwkAAAIJAQp3aW5uaW5nQmV0AQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBmRheUJldAAACQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUGZGF5QmV0AAEAAQAABA9vbGRQYXJ0aWNpcGFudHMJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBGGtleVRvdGFsV2Vla1BhcnRpY2lwYW50cwEFBHdlZWsAAAQSdXBkYXRlUGFydGljaXBhbnRzAwMJAAACBQpvbGRUaWNrZXRzAAAJAAACBQxkZWx0YVRpY2tldHMAAQcJAMwIAgkBDEludGVnZXJFbnRyeQIJARhrZXlUb3RhbFdlZWtQYXJ0aWNpcGFudHMBBQR3ZWVrCQBkAgUPb2xkUGFydGljaXBhbnRzAAEFA25pbAUDbmlsCQCUCgIDCQAAAgUMZGVsdGFUaWNrZXRzAAAFA25pbAkAzQgCCQDNCAIFEnVwZGF0ZVBhcnRpY2lwYW50cwkBDEludGVnZXJFbnRyeQIFCnRpY2tldHNLZXkJAGQCBQpvbGRUaWNrZXRzBQxkZWx0YVRpY2tldHMJAQxJbnRlZ2VyRW50cnkCCQETa2V5VG90YWxXZWVrVGlja2V0cwEFBHdlZWsJAGQCBQ9vbGRUb3RhbFRpY2tldHMFDGRlbHRhVGlja2V0cwUMZGVsdGFUaWNrZXRzDwFpAQ1jb25zdHJ1Y3RvclYxBAhyZXN0QWRkcg1tYXJrZXRpbmdBZGRyCHRlYW1BZGRyCnByb2ZpdEFkZHIDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAMJAQlpc0RlZmluZWQBCQChCAEFDXdsZ0Fzc2V0SWRLZXkJAAIBAhNBbHJlYWR5IGluaXRpYWxpemVkBAxpc3N1ZWRBbW91bnQFCE1JTExJT042BAVpc3N1ZQkAwwgHAgZXTEdPTEQCIFdhdmVzTGFuZHMgR29sZCBpbnZlc3RtZW50IHRva2VuBQxpc3N1ZWRBbW91bnQACAYFBHVuaXQAAAQHYXNzZXRJZAkAuAgBBQVpc3N1ZQkAzAgCBQVpc3N1ZQkAzAgCCQEMSW50ZWdlckVudHJ5AgUPd2xnSXNzdWVUaW1lS2V5CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgUSd2xnSXNzdWVkQW1vdW50S2V5BQxpc3N1ZWRBbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIFGXN0YWtlcnNBbW91bnRQYWlkVG90YWxLZXkAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgUUc3Rha2Vyc0Ftb3VudExlZnRLZXkJAGsDBQhNSUxMSU9ONgULUExBWUVSU0hBUkUFBU1VTFQ2CQDMCAIJAQtCaW5hcnlFbnRyeQIFDXdsZ0Fzc2V0SWRLZXkFB2Fzc2V0SWQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDmtleVJlc3RBZGRyZXNzAAUIcmVzdEFkZHIJAMwIAgkBC1N0cmluZ0VudHJ5AgUQbWFya2V0aW5nQWRkcktleQUNbWFya2V0aW5nQWRkcgkAzAgCCQELU3RyaW5nRW50cnkCBQt0ZWFtQWRkcktleQUIdGVhbUFkZHIJAMwIAgkBC1N0cmluZ0VudHJ5AgUNcHJvZml0QWRkcktleQUKcHJvZml0QWRkcgUDbmlsAWkBDWNvbnN0cnVjdG9yVjIBCXJlc3QyQWRkcgMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECEVBlcm1pc3Npb24gZGVuaWVkCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQ9rZXlSZXN0MkFkZHJlc3MABQlyZXN0MkFkZHIFA25pbAFpAQZidXlXbGcBDG1pblRvUmVjZWl2ZQQMcHJvbG9nUmVzdWx0CQEHcHJvbG9nMgADCQAAAgUMcHJvbG9nUmVzdWx0BQxwcm9sb2dSZXN1bHQDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAiJleGFjdGx5IDEgcGF5bWVudCBtdXN0IGJlIGF0dGFjaGVkBANwbXQJAJEDAggFAWkIcGF5bWVudHMAAAQHdXNkdEFtdAgFA3BtdAZhbW91bnQDAwkBASEBCQEJaXNEZWZpbmVkAQgFA3BtdAdhc3NldElkBgkBAiE9AgkBBXZhbHVlAQgFA3BtdAdhc3NldElkBQt1c2R0QXNzZXRJZAkAAgECE1VTRFQgcGF5bWVudHMgb25seSEEBmNhbGxlcggFAWkGY2FsbGVyBARhZGRyCQClCAEFBmNhbGxlcgMJAGYCBQ5NSU5TSE9QUEFZTUVOVAUHdXNkdEFtdAkAAgEJAKwCAgkArAICAhJZb3UgY2FuIHRyYWRlIG1pbiAJAQpmaXhlZFBvaW50AgUOTUlOU0hPUFBBWU1FTlQABgIFIFVTRFQECGN1clN0YXRzCQEMZ2V0V2xnU3RhdHMyBAIACQDMCAIFDXJlc3QyQ29udHJhY3QJAMwIAgUOYWNyZXMyQ29udHJhY3QJAMwIAgULd2xnQ29udHJhY3QJAMwIAgUScHV6emxlUG9vbENvbnRyYWN0CQDMCAIFEmludmVzdEZ1bmRDb250cmFjdAUDbmlsBQt1c2R0QXNzZXRJZAUHdXNkdEFtdAQMY3VyV2xnQW1vdW50CQCRAwIFCGN1clN0YXRzBQtpeFdsZ0Ftb3VudAQId2xnUHJpY2UJAJEDAgUIY3VyU3RhdHMFCml4V2xnUHJpY2UECGJ1eVByaWNlCQBuBAUId2xnUHJpY2UABgAFBQdDRUlMSU5HBAl3bGdBbW91bnQJAGsDBQd1c2R0QW10BQVNVUxUOAUIYnV5UHJpY2UEBm1heFdsZwkBEmdldFN3YXBMaW1pdFdsZ29sZAEFBGFkZHIDCQBmAgUJd2xnQW1vdW50BQZtYXhXbGcJAAIBCQCsAgIJAKwCAgIQWW91IGNhbiBnZXQgbWF4IAkBCmZpeGVkUG9pbnQCBQZtYXhXbGcACAIVIFdMR09MRCBhdCB0aGUgbW9tZW50AwkAZgIFDG1pblRvUmVjZWl2ZQUJd2xnQW1vdW50CQACAQIwUHJpY2UgY2hhbmdlZCBkdXJpbmcgb3BlcmF0aW9uLCBwbGVhc2UgdHJ5IGFnYWluBAxwcm9maXRBbW91bnQJAGkCBQd1c2R0QW10AAYJAJQKAgkAzAgCCQEHUmVpc3N1ZQMFCndsZ0Fzc2V0SWQFCXdsZ0Ftb3VudAYJAMwIAgkBDEludGVnZXJFbnRyeQIFEndsZ0lzc3VlZEFtb3VudEtleQkAZAIFDGN1cldsZ0Ftb3VudAUJd2xnQW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEZa2V5TGFzdFdsZ1RyYWRlVGltZUJ5VXNlcgEFBGFkZHIIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEaa2V5TGFzdFdsZ1RyYWRlTGltaXRCeVVzZXIBBQRhZGRyCQBlAgUGbWF4V2xnBQl3bGdBbW91bnQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQkBBXZhbHVlAQkAoggBBQ1wcm9maXRBZGRyS2V5BQxwcm9maXRBbW91bnQFC3VzZHRBc3NldElkCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFBmNhbGxlcgUJd2xnQW1vdW50BQp3bGdBc3NldElkBQNuaWwFDHByb2xvZ1Jlc3VsdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQ5idXlXbGdSRUFET05MWQIHYWRkcmVzcwd1c2R0QW10BAhjdXJTdGF0cwkBDGdldFdsZ1N0YXRzMgQCAAkAzAgCBQ1yZXN0MkNvbnRyYWN0CQDMCAIFDmFjcmVzMkNvbnRyYWN0CQDMCAIFC3dsZ0NvbnRyYWN0CQDMCAIFEnB1enpsZVBvb2xDb250cmFjdAkAzAgCBRJpbnZlc3RGdW5kQ29udHJhY3QFA25pbAULdXNkdEFzc2V0SWQFB3VzZHRBbXQECHdsZ1ByaWNlCQCRAwIFCGN1clN0YXRzBQppeFdsZ1ByaWNlBAhidXlQcmljZQkAbgQFCHdsZ1ByaWNlAAYABQUHQ0VJTElORwQJd2xnQW1vdW50CQBrAwUHdXNkdEFtdAUFTVVMVDgFCGJ1eVByaWNlBAZtYXhXbGcJARJnZXRTd2FwTGltaXRXbGdvbGQBBQdhZGRyZXNzBAdtYXhVc2R0CQBrAwUGbWF4V2xnBQhidXlQcmljZQUFTVVMVDgEDHByb2ZpdEFtb3VudAkAaQIFB3VzZHRBbXQABgkAlAoCBQNuaWwJAMwIAgUJd2xnQW1vdW50CQDMCAIFDk1JTlNIT1BQQVlNRU5UCQDMCAIFB21heFVzZHQJAMwIAgUMcHJvZml0QW1vdW50BQNuaWwBaQEHc2VsbFdsZwEJbWluQW1vdW50BAxwcm9sb2dSZXN1bHQJAQdwcm9sb2cyAAMJAAACBQxwcm9sb2dSZXN1bHQFDHByb2xvZ1Jlc3VsdAMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECImV4YWN0bHkgMSBwYXltZW50IG11c3QgYmUgYXR0YWNoZWQEA3BtdAkAkQMCCAUBaQhwYXltZW50cwAABAZ3bGdBbXQIBQNwbXQGYW1vdW50BAZjYWxsZXIIBQFpBmNhbGxlcgQEYWRkcgkApQgBBQZjYWxsZXIEBm1heFdsZwkBEmdldFN3YXBMaW1pdFdsZ29sZAEFBGFkZHIDCQBmAgUGd2xnQW10BQZtYXhXbGcJAAIBCQCsAgIJAKwCAgISWW91IGNhbiBzcGVuZCBtYXggCQEKZml4ZWRQb2ludAIFBm1heFdsZwAIAhUgV0xHT0xEIGF0IHRoZSBtb21lbnQDAwkBASEBCQEJaXNEZWZpbmVkAQgFA3BtdAdhc3NldElkBgkBAiE9AgkBBXZhbHVlAQgFA3BtdAdhc3NldElkBQp3bGdBc3NldElkCQACAQIVV0xHT0xEIHBheW1lbnRzIG9ubHkhBAhjdXJTdGF0cwkBDGdldFdsZ1N0YXRzMgQCAAkAzAgCBQ1yZXN0MkNvbnRyYWN0CQDMCAIFDmFjcmVzMkNvbnRyYWN0CQDMCAIFC3dsZ0NvbnRyYWN0CQDMCAIFEnB1enpsZVBvb2xDb250cmFjdAkAzAgCBRJpbnZlc3RGdW5kQ29udHJhY3QFA25pbAULdXNkdEFzc2V0SWQAAAQMY3VyV2xnQW1vdW50CQCRAwIFCGN1clN0YXRzBQtpeFdsZ0Ftb3VudAQJc2VsbFByaWNlCQBpAgkAkQMCBQhjdXJTdGF0cwUKaXhXbGdQcmljZQACBAd1c2R0QW10CQBrAwUGd2xnQW10BQlzZWxsUHJpY2UFBU1VTFQ4AwkAZgIFDk1JTlNIT1BQQVlNRU5UBQd1c2R0QW10CQACAQkArAICCQCsAgICEllvdSBjYW4gdHJhZGUgbWluIAkBCmZpeGVkUG9pbnQCBQ5NSU5TSE9QUEFZTUVOVAAGAgUgVVNEVAMJAGYCBQltaW5BbW91bnQFB3VzZHRBbXQJAAIBAjBQcmljZSBjaGFuZ2VkIGR1cmluZyBvcGVyYXRpb24sIHBsZWFzZSB0cnkgYWdhaW4EDHByb2ZpdEFtb3VudAkAaQIFB3VzZHRBbXQABQkAlAoCCQDMCAIJAQRCdXJuAgUKd2xnQXNzZXRJZAUGd2xnQW10CQDMCAIJAQxJbnRlZ2VyRW50cnkCBRJ3bGdJc3N1ZWRBbW91bnRLZXkJAGUCBQxjdXJXbGdBbW91bnQFBndsZ0FtdAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBGWtleUxhc3RXbGdUcmFkZVRpbWVCeVVzZXIBBQRhZGRyCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBGmtleUxhc3RXbGdUcmFkZUxpbWl0QnlVc2VyAQUEYWRkcgkAZQIFBm1heFdsZwUGd2xnQW10CQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQV2YWx1ZQEJAKIIAQUNcHJvZml0QWRkcktleQUMcHJvZml0QW1vdW50BQt1c2R0QXNzZXRJZAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQZjYWxsZXIFB3VzZHRBbXQFC3VzZHRBc3NldElkBQNuaWwFDHByb2xvZ1Jlc3VsdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQ9zZWxsV2xnUkVBRE9OTFkCB2FkZHJlc3MGd2xnQW10BAZtYXhXbGcJARJnZXRTd2FwTGltaXRXbGdvbGQBBQdhZGRyZXNzBAhjdXJTdGF0cwkBDGdldFdsZ1N0YXRzMgQCAAkAzAgCBQ1yZXN0MkNvbnRyYWN0CQDMCAIFDmFjcmVzMkNvbnRyYWN0CQDMCAIFC3dsZ0NvbnRyYWN0CQDMCAIFEnB1enpsZVBvb2xDb250cmFjdAkAzAgCBRJpbnZlc3RGdW5kQ29udHJhY3QFA25pbAULdXNkdEFzc2V0SWQAAAQJc2VsbFByaWNlCQBpAgkAkQMCBQhjdXJTdGF0cwUKaXhXbGdQcmljZQACBAd1c2R0QW10CQBrAwUGd2xnQW10BQlzZWxsUHJpY2UFBU1VTFQ4BAZtaW5XbGcJAGsDBQ5NSU5TSE9QUEFZTUVOVAUFTVVMVDgFCXNlbGxQcmljZQQMcHJvZml0QW1vdW50CQBpAgUHdXNkdEFtdAAFCQCUCgIFA25pbAkAzAgCBQd1c2R0QW10CQDMCAIFBm1pbldsZwkAzAgCBQZtYXhXbGcJAMwIAgUMcHJvZml0QW1vdW50BQNuaWwBaQEFY2xhaW0ABAxwcm9sb2dSZXN1bHQJAQdwcm9sb2cyAAMJAAACBQxwcm9sb2dSZXN1bHQFDHByb2xvZ1Jlc3VsdAMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBA0kdDAxNDA0NTE0MTE0CQEOY2xhaW1JbnRlcm5hbDIBCQClCAEIBQFpBmNhbGxlcgQHYWN0aW9ucwgFDSR0MDE0MDQ1MTQxMTQCXzEEEHdsZ0NsYWltZWRBbW91bnQIBQ0kdDAxNDA0NTE0MTE0Al8yCQCUCgIJAM0IAgUHYWN0aW9ucwkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBRB3bGdDbGFpbWVkQW1vdW50BQp3bGdBc3NldElkBQxwcm9sb2dSZXN1bHQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQESb25TdGFrZVVuc3Rha2VMYW5kAQRhZGRyAwMDCQECIT0CCAUBaQZjYWxsZXIFD3N0YWtpbmdDb250cmFjdAkBAiE9AggFAWkGY2FsbGVyBQ1hY3Jlc0NvbnRyYWN0BwkBAiE9AggFAWkGY2FsbGVyBQ5hY3JlczJDb250cmFjdAcJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAQNJHQwMTQ0MzMxNDQ4NwkBDmNsYWltSW50ZXJuYWwyAQUEYWRkcgQHYWN0aW9ucwgFDSR0MDE0NDMzMTQ0ODcCXzEEEHdsZ0NsYWltZWRBbW91bnQIBQ0kdDAxNDQzMzE0NDg3Al8yCQCUCgIDCQBmAgUQd2xnQ2xhaW1lZEFtb3VudAAACQDNCAIFB2FjdGlvbnMJAQ5TY3JpcHRUcmFuc2ZlcgMJARFAZXh0ck5hdGl2ZSgxMDYyKQEFBGFkZHIFEHdsZ0NsYWltZWRBbW91bnQFCndsZ0Fzc2V0SWQFB2FjdGlvbnMFEHdsZ0NsYWltZWRBbW91bnQBaQEKYnVybldsZ29sZAEGd2xnQW10AwkBAiE9AggFAWkGY2FsbGVyBQ5hY3JlczJDb250cmFjdAkAAgECEVBlcm1pc3Npb24gZGVuaWVkBAhjdXJTdGF0cwkBDGdldFdsZ1N0YXRzMgQCAAkAzAgCBQ1yZXN0MkNvbnRyYWN0CQDMCAIFDmFjcmVzMkNvbnRyYWN0CQDMCAIFC3dsZ0NvbnRyYWN0CQDMCAIFEnB1enpsZVBvb2xDb250cmFjdAkAzAgCBRJpbnZlc3RGdW5kQ29udHJhY3QFA25pbAULdXNkdEFzc2V0SWQAAAMJAGYCBQZ3bGdBbXQJAJEDAgUIY3VyU3RhdHMFCGl4V2xnV2xnCQACAQkArAICCQCsAgIJAKwCAgIFT25seSAJAQpmaXhlZFBvaW50AgkAkQMCBQhjdXJTdGF0cwUIaXhXbGdXbGcACAIlIFdMR09MRCBsZWZ0IG9uIGNvbnRyYWN0LCBjYW4ndCBidXJuIAkBCmZpeGVkUG9pbnQCBQZ3bGdBbXQACAQNd2xnQW1vdW50TGVmdAkAZQIJAJEDAgUIY3VyU3RhdHMFC2l4V2xnQW1vdW50BQZ3bGdBbXQJAJQKAgkAzAgCCQEEQnVybgIFCndsZ0Fzc2V0SWQFBndsZ0FtdAkAzAgCCQEMSW50ZWdlckVudHJ5AgUSd2xnSXNzdWVkQW1vdW50S2V5BQ13bGdBbW91bnRMZWZ0BQNuaWwFDXdsZ0Ftb3VudExlZnQBaQEMYmV0Rm9yVGlja2V0AQNiZXQEDHByb2xvZ1Jlc3VsdAkBB3Byb2xvZzIAAwkAAAIFDHByb2xvZ1Jlc3VsdAUMcHJvbG9nUmVzdWx0AwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQEBGFkZHIJAKUIAQgFAWkGY2FsbGVyBAhkcmF3V2VlawkAZQIJAGkCBQZoZWlnaHQFC1dFRUtfQkxPQ0tTAAEEC3VzZXJUaWNrZXRzCQELdmFsdWVPckVsc2UCCQCfCAEJARJrZXlVc2VyV2Vla1RpY2tldHMCBQRhZGRyBQhkcmF3V2VlawAABAt3ZWVrVGlja2V0cwkBC3ZhbHVlT3JFbHNlAgkAnwgBCQETa2V5VG90YWxXZWVrVGlja2V0cwEFCGRyYXdXZWVrAAADAwkAZgIFC3VzZXJUaWNrZXRzAAAJAGYCBQt3ZWVrVGlja2V0cwAABwkAAgECG1BsZWFzZSBvcGVuIHRoZSBjaGVzdCBmaXJzdAMJAQIhPQIJAGkCBQNiZXQABAAACQACAQIbSW52YWxpZCBiZXQ6IHNob3VsZCBiZSAwLi4zBAZtb21lbnQJAGoCBQZoZWlnaHQFCkRBWV9CTE9DS1MDCQBmAgUGbW9tZW50CQBlAgUKREFZX0JMT0NLUwADCQACAQkArAICCQCsAgICMUNhbm5vdCBiZXQ6IHRoZSBkYXkgaXMgYWxtb3N0IGVuZGVkLCBwbGVhc2Ugd2FpdCAJAKQDAQkAZQIFCkRBWV9CTE9DS1MFBm1vbWVudAIHIGJsb2NrcwQLc3Rha2VkQWNyZXMJAQt2YWx1ZU9yRWxzZQIJAJoIAgUOYWNyZXMyQ29udHJhY3QJARdrZXlBY3Jlc1N0YWtlZEFtdEJ5VXNlcgEFBGFkZHIAAAMJAGYCBQ1BQ1JFU19GT1JfQkVUBQtzdGFrZWRBY3JlcwkAAgEJAKwCAgkArAICAhtZb3UgbmVlZCB0byBzdGFrZSBhdCBsZWFzdCAJAQpmaXhlZFBvaW50AgUNQUNSRVNfRk9SX0JFVAAIAg0gQUNSRVMgdG8gYmV0BAh0b21vcnJvdwkAZAIJAGkCBQZoZWlnaHQFCkRBWV9CTE9DS1MAAQQGYmV0S2V5CQEKa2V5VXNlckJldAEFBGFkZHIEDW9sZFVzZXJCZXRTdHIJAKIIAQUGYmV0S2V5BAtuZXdCZXRFbnRyeQkBC1N0cmluZ0VudHJ5AgUGYmV0S2V5CQCsAgIJAKwCAgkApAMBBQh0b21vcnJvdwIBXwkApAMBBQNiZXQDCQEJaXNEZWZpbmVkAQUNb2xkVXNlckJldFN0cgQHdXNlckJldAkBBXZhbHVlAQUNb2xkVXNlckJldFN0cgMJAAACCQCRAwIJALUJAgUHdXNlckJldAIBXwAACQCkAwEFCHRvbW9ycm93CQACAQIcWW91IGFscmVhZHkgYmV0IGZvciB0b21vcnJvdwQBcgkBFGNsYWltVGlja2V0c0ludGVybmFsAgUEYWRkcgUHdXNlckJldAkAlAoCCQDNCAIIBQFyAl8xBQtuZXdCZXRFbnRyeQgFAXICXzIJAJQKAgkAzAgCBQtuZXdCZXRFbnRyeQUDbmlsAAAJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEJdGFrZVdsZ1hwAQRhZGRyAwkBAiE9AggFAWkGY2FsbGVyBQ9zdGFraW5nQ29udHJhY3QJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAQNJHQwMTcwOTcxNzE0MAkBDnRha2VYcEludGVybmFsAgUEYWRkcgAABAdhY3Rpb25zCAUNJHQwMTcwOTcxNzE0MAJfMQQCeHAIBQ0kdDAxNzA5NzE3MTQwAl8yCQCUCgIFB2FjdGlvbnMFAnhwAWkBEmNoZWNrV2xnWHBSRUFET05MWQEEYWRkcgQNJHQwMTcyMTcxNzI2NQkBDnRha2VYcEludGVybmFsAgUEYWRkcgAABAdpZ25vcmVkCAUNJHQwMTcyMTcxNzI2NQJfMQQHZGVsdGFYUAgFDSR0MDE3MjE3MTcyNjUCXzIEBW5ld1hQCQBkAgkBC3ZhbHVlT3JFbHNlAgkAmggCBQ9zdGFraW5nQ29udHJhY3QJAQlrZXlVc2VyWFABBQRhZGRyAAAFB2RlbHRhWFAECWx2bFBvaW50cwkBB2xldmVsVXACCQELdmFsdWVPckVsc2UCCQCaCAIFD3N0YWtpbmdDb250cmFjdAkBDGtleVVzZXJMZXZlbAEFBGFkZHIAAAUFbmV3WFAJAJQKAgUDbmlsCQDNCAIFCWx2bFBvaW50cwUFbmV3WFABaQEMc2V0TnVtUHJpemVzAQludW1Qcml6ZXMDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAQEd2VlawkAaQIFBmhlaWdodAULV0VFS19CTE9DS1MJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDmtleU51bU5GVDJEcmF3AQUEd2VlawUJbnVtUHJpemVzBQNuaWwFCW51bVByaXplcwFpAQlvcGVuQ2hlc3QAAwkBASEBBRFLU19BTExPV19ORlRfRFJBVwkAAgECFFRlbXBvcmFyaWx5IGRpc2FibGVkBAxwcm9sb2dSZXN1bHQJAQdwcm9sb2cyAAMJAAACBQxwcm9sb2dSZXN1bHQFDHByb2xvZ1Jlc3VsdAMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBAhkcmF3V2VlawkAZQIJAGkCBQZoZWlnaHQFC1dFRUtfQkxPQ0tTAAEEBGFkZHIJAKUIAQgFAWkGY2FsbGVyBAt1c2VyVGlja2V0cwkBC3ZhbHVlT3JFbHNlAgkAnwgBCQESa2V5VXNlcldlZWtUaWNrZXRzAgUEYWRkcgUIZHJhd1dlZWsAAAMJAGcCAAAFC3VzZXJUaWNrZXRzCQACAQIZTm8gZ2VtcyB0byBvcGVuIHRoZSBjaGVzdAkBEW9wZW5DaGVzdEludGVybmFsAQUEYWRkcgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQphZGRHZW1zRm9yAgRhZGRyDGRlbHRhVGlja2V0cwMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECEVBlcm1pc3Npb24gZGVuaWVkBAR3ZWVrCQBpAgUGaGVpZ2h0BQtXRUVLX0JMT0NLUwQKdGlja2V0c0tleQkBEmtleVVzZXJXZWVrVGlja2V0cwIFBGFkZHIFBHdlZWsED29sZFRvdGFsVGlja2V0cwkBC3ZhbHVlT3JFbHNlAgkAnwgBCQETa2V5VG90YWxXZWVrVGlja2V0cwEFBHdlZWsAAAQKb2xkVGlja2V0cwkBC3ZhbHVlT3JFbHNlAgkAnwgBBQp0aWNrZXRzS2V5AAAED29sZFBhcnRpY2lwYW50cwkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEYa2V5VG90YWxXZWVrUGFydGljaXBhbnRzAQUEd2VlawAABBJ1cGRhdGVQYXJ0aWNpcGFudHMDAwkAAAIFCm9sZFRpY2tldHMAAAkAAAIFDGRlbHRhVGlja2V0cwABBwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBGGtleVRvdGFsV2Vla1BhcnRpY2lwYW50cwEFBHdlZWsJAGQCBQ9vbGRQYXJ0aWNpcGFudHMAAQUDbmlsBQNuaWwJAJQKAgkAzQgCCQDNCAIFEnVwZGF0ZVBhcnRpY2lwYW50cwkBDEludGVnZXJFbnRyeQIFCnRpY2tldHNLZXkJAGQCBQpvbGRUaWNrZXRzBQxkZWx0YVRpY2tldHMJAQxJbnRlZ2VyRW50cnkCCQETa2V5VG90YWxXZWVrVGlja2V0cwEFBHdlZWsJAGQCBQ9vbGRUb3RhbFRpY2tldHMFDGRlbHRhVGlja2V0cwUMZGVsdGFUaWNrZXRzAEKacNg=", "height": 3388750, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: EnajjKnAGT8cYn5n7v3QBdfcu3JcYbdQcqbyMaXhpgtL Next: GyfXV9FxeaAcrbJEEYs6RTEeWs11oXnFKt7BDruDpqQd Diff:
OldNewDifferences
163163 }
164164
165165
166-func ae (af) = {
167- let h = af
166+let ae = 0
167+
168+let af = 1
169+
170+let ag = 2
171+
172+let ah = 8
173+
174+let ai = 11
175+
176+let aj = 12
177+
178+let ak = 15
179+
180+let al = 16
181+
182+let am = 19
183+
184+let an = 23
185+
186+let ao = 24
187+
188+let ap = 25
189+
190+let aq = 26
191+
192+let ar = 27
193+
194+let as = 28
195+
196+let at = 29
197+
198+func au (av) = {
199+ let h = av
168200 if ($isInstanceOf(h, "Int"))
169201 then {
170- let ag = h
171- ag
202+ let aw = h
203+ aw
172204 }
173205 else throw("fail to cast into Int")
174206 }
175207
176208
177-func ah (ai,aj) = {
178- let ak = pow(10, 0, aj, 0, 0, DOWN)
179- let al = toString((ai % ak))
180- let am = drop(toString(ak), (1 + size(al)))
181- (((toString((ai / ak)) + ".") + am) + al)
209+func ax (ay,az) = {
210+ let aA = pow(10, 0, az, 0, 0, DOWN)
211+ let aB = toString((ay % aA))
212+ let aC = drop(toString(aA), (1 + size(aB)))
213+ (((toString((ay / aA)) + ".") + aC) + aB)
182214 }
183215
184216
185-func an (ao,ap,aq) = if ((0 >= ao))
217+func aD (aE,aF,aG) = if ((0 >= aE))
186218 then throw("maxValue should be > 0")
187219 else {
188- let ar = sha256_16Kb((ap + aq))
189- (toInt(ar) % ao)
220+ let aH = sha256_16Kb((aF + aG))
221+ (toInt(aH) % aE)
190222 }
191223
192224
193-let as = 100000000
225+let aI = 100000000
194226
195-let at = 3200
227+let aJ = 3200
196228
197-let au = 4000
229+let aK = 4000
198230
199-let av = 3
231+let aL = 3
200232
201-let aw = 100000000000
233+let aM = 100000000000
202234
203-func ax (P) = ("userXP_" + P)
235+func aN (P) = ("userXP_" + P)
204236
205237
206-func ay (P) = ("userLevel_" + P)
238+func aO (P) = ("userLevel_" + P)
207239
208240
209-let az = 10000
241+let aP = 10000
210242
211-func aA (aB) = fraction(at, pow(aB, 4, au, 4, 4, DOWN), as)
243+func aQ (aR) = fraction(aJ, pow(aR, 4, aK, 4, 4, DOWN), aI)
212244
213245
214-func aC (aD,aE) = {
215- let aF = aA(aE)
216-[aF, (av * (aF - aD))]
246+func aS (aT,aU) = {
247+ let aV = aQ(aU)
248+[aV, (aL * (aV - aT))]
217249 }
218250
219251
220-let aG = 100000000000000
252+let aW = 100000000000000
221253
222-let aH = 400000
254+let aX = 400000
223255
224-let aI = 86400000
256+let aY = 86400000
225257
226-let aJ = "teamAddr"
258+let aZ = "teamAddr"
227259
228-let aK = "lastClaimedTime_team"
260+let ba = "lastClaimedTime_team"
229261
230-let aL = "teamAmountLeft"
262+let bb = "teamAmountLeft"
231263
232-let aM = "lastClaimedTime_activities"
264+let bc = "lastClaimedTime_activities"
233265
234-let aN = "activitiesAmountLeft"
266+let bd = "activitiesAmountLeft"
235267
236-let aO = "stakersAmountLeft"
268+let be = "stakersAmountLeft"
237269
238-func aP (P) = ("lastArbTimeUser_" + P)
270+func bf (P) = ("lastArbTimeUser_" + P)
239271
240272
241-func aQ (P) = ("lastWlgLimitUser_" + P)
273+func bg (P) = ("lastWlgLimitUser_" + P)
242274
243275
244-let aR = "wlg_issueTime"
276+let bh = "wlg_issueTime"
245277
246-let aS = "wlg_issuedAmount"
278+let bi = "wlg_issuedAmount"
247279
248-func aT (P) = ("acresStakedAmountByUser_" + P)
280+func bj (P) = ("acresStakedAmountByUser_" + P)
249281
250282
251-func aU (P) = ("wlgStakedAmountByUser_" + P)
283+func bk (P) = ("wlgStakedAmountByUser_" + P)
252284
253285
254-let aV = "wlgStakedAmountTotal"
286+let bl = "wlgStakedAmountTotal"
255287
256-func aW (P) = ("wlgStakedTimeByUser_" + P)
288+func bm (P) = ("wlgStakedTimeByUser_" + P)
257289
258290
259-let aX = 1000000
291+let bn = 1000000
260292
261-let aY = 100000000
293+let bo = 100000000
262294
263-let aZ = 200000
295+let bp = 200000
264296
265-let ba = 100000
297+let bq = 100000
266298
267-let bb = 400000
299+let br = 400000
268300
269-let bc = 31557600000
301+let bs = 31557600000
270302
271-let bd = 86400000
303+let bt = 86400000
272304
273-let be = 1000000000
305+let bu = 1000000000
274306
275-let bf = 800000
307+let bv = 800000
276308
277-let bg = 100000
309+let bw = 100000
278310
279-let bh = 100000
311+let bx = 100000
280312
281-let bi = 1731279600000
313+let by = 1731279600000
282314
283-let bj = "marketingAddr"
315+let bz = "marketingAddr"
284316
285-let bk = "teamAddr"
317+let bA = "teamAddr"
286318
287-let bl = "lastClaimedTime_team"
319+let bB = "lastClaimedTime_team"
288320
289-let bm = "teamAmountLeft"
321+let bC = "teamAmountLeft"
290322
291-let bn = "lastClaimedTime_activities"
323+let bD = "lastClaimedTime_activities"
292324
293-let bo = "activitiesAmountLeft"
325+let bE = "activitiesAmountLeft"
294326
295-let bp = "stakersAmountLeft"
327+let bF = "stakersAmountLeft"
296328
297-func bq (P) = ("lastClaimedTimeUser_" + P)
329+func bG (P) = ("lastClaimedTimeUser_" + P)
298330
299331
300-func br (bs,bt) = fraction(bs, (bb * (bt + 1)), (6 * aX))
332+func bH (bI,bJ) = fraction(bI, (br * (bJ + 1)), (6 * bn))
301333
302334
303-let bu = "wlg_issue10Time"
335+let bK = "wlg_issue10Time"
304336
305-let bv = "wlg_issueTime"
337+let bL = "wlg_issueTime"
306338
307-let bw = "wlg_issuedAmount"
339+let bM = "wlg_issuedAmount"
308340
309-let bx = "zbill_issuedAmount"
341+let bN = "zbill_issuedAmount"
310342
311-func by (P) = ("acresStakedAmountByUser_" + P)
343+func bO (P) = ("acresStakedAmountByUser_" + P)
312344
313345
314-let bz = "acresStakedAmountTotal"
346+let bP = "acresStakedAmountTotal"
315347
316-let bA = "totalFarmingPower"
348+let bQ = "totalFarmingPower"
317349
318-let bB = 0
350+let bR = 0
319351
320-let bC = 1
352+let bS = 1
321353
322-let bD = 2
354+let bT = 2
323355
324-let bE = 3
356+let bU = 3
325357
326-let bF = 4
358+let bV = 4
327359
328-let bG = 1
360+let bW = 1
329361
330-let bH = 5
362+let bX = 5
331363
332-let bI = 100000000
364+let bY = 100000000
333365
334-func bJ (P) = ("userFullBonus_" + P)
366+let bZ = "nftTotalIssued"
367+
368+let ca = "nftTotalBurned"
369+
370+let cb = "WlNftTotalStaked"
371+
372+func cc (P) = ("userWlNftNumber_" + P)
335373
336374
337-let bK = [0, 10, 20, 40, 80, 150, 250, 400, 700, 1000]
375+func cd (P) = ("userFullBonus_" + P)
338376
339-func bL (bM) = {
340- let bN = ((bM + 99999999) / aY)
341- func bO (bP,bQ) = if ((bQ >= bN))
342- then bP
343- else (bP + 1)
344377
345- let bR = bK
346- let bS = size(bR)
347- let bT = 0
348- func bU (bV,bW) = if ((bW >= bS))
349- then bV
350- else bO(bV, bR[bW])
378+let ce = [0, 10, 20, 40, 80, 150, 250, 400, 700, 1000]
351379
352- func bX (bV,bW) = if ((bW >= bS))
353- then bV
380+func cf (cg) = {
381+ let ch = ((cg + 99999999) / bo)
382+ func ci (cj,ck) = if ((ck >= ch))
383+ then cj
384+ else (cj + 1)
385+
386+ let cl = ce
387+ let cm = size(cl)
388+ let cn = 0
389+ func co (cp,cq) = if ((cq >= cm))
390+ then cp
391+ else ci(cp, cl[cq])
392+
393+ func cr (cp,cq) = if ((cq >= cm))
394+ then cp
354395 else throw("List size exceeds 10")
355396
356- bX(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bT, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
397+ cr(co(co(co(co(co(co(co(co(co(co(cn, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
357398 }
358399
359400
360-func bY (bM) = ((bM * 20) * (bL(bM) + 4))
401+func cs (cg) = ((cg * 20) * (cf(cg) + 4))
361402
362403
363-func bZ (bM,ca) = {
364- let cb = bY(bM)
365- $Tuple2(fraction(cb, (aX + ca), aX), cb)
404+func ct (cg,cu) = {
405+ let cv = cs(cg)
406+ $Tuple2(fraction(cv, (bn + cu), bn), cv)
366407 }
367408
368409
369-func cc (cd,K) = {
370- let ce = valueOrElse(getInteger(K, bA), 0)
371- let cf = valueOrElse(getInteger(K, by(cd)), 0)
372- let cg = valueOrElse(getInteger(K, bJ(cd)), 0)
373- let ch = bZ(cf, cg)
374- let ci = ch._1
375- let cj = ch._2
376-[ce, ci, cj, cg]
410+func cw (cx,K) = {
411+ let cy = valueOrElse(getInteger(K, bQ), 0)
412+ let cz = valueOrElse(getInteger(K, bO(cx)), 0)
413+ let cA = valueOrElse(getInteger(K, cd(cx)), 0)
414+ let cB = ct(cz, cA)
415+ let cC = cB._1
416+ let cD = cB._2
417+[cy, cC, cD, cA]
377418 }
378419
379420
380-let ck = 0
421+let cE = 0
381422
382-let cl = 1
423+let cF = 1
383424
384-let cm = 0
385-
386-let cn = 1
387-
388-let co = 2
389-
390-let cp = 8
391-
392-let cq = 11
393-
394-let cr = 12
395-
396-let cs = 15
397-
398-let ct = 16
399-
400-let cu = 19
401-
402-let cv = 23
403-
404-let cw = 24
405-
406-let cx = 25
407-
408-let cy = 26
409-
410-let cz = 27
411-
412-let cA = 28
413-
414-let cB = 29
415-
416-func cC (cD,cE,cF,cG) = {
417- let bs = valueOrErrorMessage(getInteger(cE[bD], bw), "WLGOLD is not issued yet")
418- let cH = assetBalance(cE[bB], cF)
419- let cI = (assetBalance(cE[bD], cF) - cG)
420- let cJ = assetBalance(cE[bE], cF)
421- let cK = assetBalance(cE[bC], cF)
422- let cL = cE[bF]
423- let cM = (assetBalance(cL, cF) + valueOrElse(getInteger(cL, bx), 0))
424- let cN = ((cK + cI) + cM)
425- let cO = valueOrErrorMessage(getBinary(cE[bD], "wlg_assetId"), "Not initialized yet")
426- let cP = lastBlock.timestamp
427- let cQ = valueOrErrorMessage(getInteger(cE[bD], bv), "Not initialized")
428- let cR = assetBalance(cE[bD], cO)
429- let cS = fraction(bs, aZ, aX)
430- let cT = valueOrElse(getInteger(cE[bD], bm), cS)
431- let cU = valueOrElse(getInteger(cE[bD], bl), cQ)
432- let cV = addressFromStringValue(value(getString(cE[bD], bk)))
433- let cW = min([fraction(cS, (cP - cU), (3 * bc)), cT])
434- let cX = assetBalance(cV, cO)
435- let cY = fraction(bs, ba, aX)
436- let cZ = valueOrElse(getInteger(cE[bD], bo), cY)
437- let da = valueOrElse(getInteger(cE[bD], bn), cQ)
438- let db = min([fraction(cY, (cP - da), (3 * bc)), cZ])
439- let dc = assetBalance(cE[bB], cO)
440- let dd = valueOrElse(getInteger(cE[bD], bq(cD)), cQ)
441- let de = ((dd - cQ) / bc)
442- let df = min([cP, (cQ + (3 * bc))])
443- let dg = min([((cP - cQ) / bc), 2])
444- let dh = cc(cD, cE[bC])
445- let di = br(bs, dg)
446- let dj = (cQ + (bc * dg))
447- let dk = (cQ + (bc * (dg - 1)))
448- let dl = fraction(di, (df - dd), bc)
449- let dm = if ((de == dg))
450- then dl
451- else if ((de == (dg - 1)))
425+func cG (cH,cI,cJ,cK) = {
426+ let bI = valueOrErrorMessage(getInteger(cI[bT], bM), "WLGOLD is not issued yet")
427+ let cL = assetBalance(cI[bR], cJ)
428+ let cM = (assetBalance(cI[bT], cJ) - cK)
429+ let cN = assetBalance(cI[bU], cJ)
430+ let cO = assetBalance(cI[bS], cJ)
431+ let cP = cI[bV]
432+ let cQ = (assetBalance(cP, cJ) + valueOrElse(getInteger(cP, bN), 0))
433+ let cR = ((cO + cM) + cQ)
434+ let cS = valueOrErrorMessage(getBinary(cI[bT], "wlg_assetId"), "Not initialized yet")
435+ let cT = lastBlock.timestamp
436+ let cU = valueOrErrorMessage(getInteger(cI[bT], bL), "Not initialized")
437+ let cV = assetBalance(cI[bT], cS)
438+ let cW = fraction(bI, bp, bn)
439+ let cX = valueOrElse(getInteger(cI[bT], bC), cW)
440+ let cY = valueOrElse(getInteger(cI[bT], bB), cU)
441+ let cZ = addressFromStringValue(value(getString(cI[bT], bA)))
442+ let da = min([fraction(cW, (cT - cY), (3 * bs)), cX])
443+ let db = assetBalance(cZ, cS)
444+ let dc = fraction(bI, bq, bn)
445+ let dd = valueOrElse(getInteger(cI[bT], bE), dc)
446+ let de = valueOrElse(getInteger(cI[bT], bD), cU)
447+ let df = min([fraction(dc, (cT - de), (3 * bs)), dd])
448+ let dg = assetBalance(cI[bR], cS)
449+ let dh = valueOrElse(getInteger(cI[bT], bG(cH)), cU)
450+ let di = ((dh - cU) / bs)
451+ let dj = min([cT, (cU + (3 * bs))])
452+ let dk = min([((cT - cU) / bs), 2])
453+ let dl = cw(cH, cI[bS])
454+ let dm = bH(bI, dk)
455+ let dn = (cU + (bs * dk))
456+ let do = (cU + (bs * (dk - 1)))
457+ let dp = fraction(dm, (dj - dh), bs)
458+ let dq = if ((di == dk))
459+ then dp
460+ else if ((di == (dk - 1)))
452461 then {
453- let dn = fraction(br(bs, (dg - 1)), (dj - dd), bc)
454- (dn + dl)
462+ let dr = fraction(bH(bI, (dk - 1)), (dn - dh), bs)
463+ (dr + dp)
455464 }
456465 else {
457- let do = fraction(br(bs, (dg - 2)), (dk - dd), bc)
458- let dn = br(bs, (dg - 1))
459- ((do + dn) + dl)
466+ let ds = fraction(bH(bI, (dk - 2)), (do - dh), bs)
467+ let dr = bH(bI, (dk - 1))
468+ ((ds + dr) + dp)
460469 }
461- let dp = valueOrElse(getInteger(cE[bD], bp), 0)
462- let dq = if ((dh[ck] != 0))
463- then fraction(dm, dh[cl], dh[ck])
470+ let dt = valueOrElse(getInteger(cI[bT], bF), 0)
471+ let du = if ((dl[cE] != 0))
472+ then fraction(dq, dl[cF], dl[cE])
464473 else 0
465- let dr = valueOrElse(getInteger(cE[bD], bu), bi)
466- let ds = fraction(be, max([(cP - dr), 0]), bd)
467- let dt = fraction(ds, bg, aX)
468- let du = fraction(ds, bh, aX)
469- let dv = max([(cP - max([bi, dd])), 0])
470- let dw = if ((dh[ck] != 0))
471- then fraction(fraction(fraction(be, dv, bd), dh[cl], dh[ck]), bf, aX)
474+ let dv = valueOrElse(getInteger(cI[bT], bK), by)
475+ let dw = fraction(bu, max([(cT - dv), 0]), bt)
476+ let dx = fraction(dw, bw, bn)
477+ let dy = fraction(dw, bx, bn)
478+ let dz = max([(cT - max([by, dh])), 0])
479+ let dA = if ((dl[cE] != 0))
480+ then fraction(fraction(fraction(bu, dz, bt), dl[cF], dl[cE]), bv, bn)
472481 else 0
473- let dx = max([bi, cP])
474- let dy = valueOrElse(getInteger(cE[bC], bz), 0)
475-[bs, cR, fraction(cN, aY, bs), cN, cH, cK, cI, cJ, cQ, cU, cS, cT, cW, cX, cY, cZ, db, dc, dg, dp, di, dd, cM, dq, df, ds, dt, du, dw, dx, dh[ck], dy]
482+ let dB = max([by, cT])
483+ let dC = valueOrElse(getInteger(cI[bS], bP), 0)
484+ let dD = valueOrElse(getInteger(cI[bS], bZ), 0)
485+ let dE = valueOrElse(getInteger(cI[bS], ca), 0)
486+ let dF = valueOrElse(getInteger(cI[bS], cb), 0)
487+ let dG = valueOrElse(getInteger(cI[bS], cc(valueOrElse(cH, ""))), 0)
488+[bI, cV, fraction(cR, bo, bI), cR, cL, cO, cM, cN, cU, cY, cW, cX, da, db, dc, dd, df, dg, dk, dt, dm, dh, cQ, du, dj, dw, dx, dy, dA, dB, dl[cE], dC, dD, dE, dF, dG]
476489 }
477490
478491
479-let dz = "profitAddr"
492+let dH = "profitAddr"
480493
481-let dA = "stakersAmountPaidTotal"
494+let dI = "stakersAmountPaidTotal"
482495
483-func dB (P) = ("stakersAmountPaidUser_" + P)
496+func dJ (P) = ("stakersAmountPaidUser_" + P)
484497
485498
486-func dC () = ae(reentrantInvoke(K, "saveLastTx", nil, nil))
499+func dK () = au(reentrantInvoke(K, "saveLastTx", nil, nil))
487500
488501
489-func dD (P) = {
490- let dE = valueOrElse(getInteger(aP(P)), 0)
491- let dF = valueOrElse(getInteger(K, aT(P)), 0)
492- let dG = valueOrElse(getInteger(aQ(P)), dF)
493- let dH = (dG + fraction(dF, (lastBlock.timestamp - dE), e))
494- min([dH, dF])
502+func dL (P) = {
503+ let dM = valueOrElse(getInteger(bf(P)), 0)
504+ let dN = valueOrElse(getInteger(K, bj(P)), 0)
505+ let dO = valueOrElse(getInteger(bg(P)), dN)
506+ let dP = (dO + fraction(dN, (lastBlock.timestamp - dM), e))
507+ min([dP, dN])
495508 }
496509
497510
498-func dI (P) = {
499- let dJ = cC(P, [J, K, L, M, N], k, 0)
500- let dK = bq(P)
501- let dd = valueOrElse(getInteger(dK), 0)
502- let dL = dJ[cw]
503- if ((dd == dL))
511+func dQ (P) = {
512+ let dR = cG(P, [J, K, L, M, N], k, 0)
513+ let dS = bG(P)
514+ let dh = valueOrElse(getInteger(dS), 0)
515+ let dT = dR[ao]
516+ if ((dh == dT))
504517 then $Tuple2(nil, 0)
505518 else {
506- let cP = lastBlock.timestamp
507- let cQ = dJ[cp]
508- let cT = dJ[cq]
509- let dM = (dJ[cr] + dJ[cz])
510- let dN = if ((dM > 0))
511- then [ScriptTransfer(addressFromStringValue(value(getString(aJ))), dM, R)]
519+ let cT = lastBlock.timestamp
520+ let cU = dR[ah]
521+ let cX = dR[ai]
522+ let dU = (dR[aj] + dR[ar])
523+ let dV = if ((dU > 0))
524+ then [ScriptTransfer(addressFromStringValue(value(getString(aZ))), dU, R)]
512525 else nil
513- let cZ = dJ[cs]
514- let dO = dJ[ct]
515- let dP = if ((dO > 0))
516- then [ScriptTransfer(y, dO, R)]
526+ let dd = dR[ak]
527+ let dW = dR[al]
528+ let dX = if ((dW > 0))
529+ then [ScriptTransfer(y, dW, R)]
517530 else nil
518- let dQ = dJ[cy]
519- let dR = if ((dQ > 0))
520- then [ScriptTransfer(addressFromStringValue(value(getString(bj))), dQ, R)]
531+ let dY = dR[aq]
532+ let dZ = if ((dY > 0))
533+ then [ScriptTransfer(addressFromStringValue(value(getString(bz))), dY, R)]
521534 else nil
522- let dq = dJ[cv]
523- let dS = dB(P)
524- let dT = (dq + dJ[cA])
525- let dU = dJ[cx]
526- $Tuple2(((([Reissue(R, dU, true), IntegerEntry(aS, (dJ[cm] + dU)), IntegerEntry(bu, dJ[cB]), IntegerEntry(dS, (valueOrElse(getInteger(dS), 0) + dq)), IntegerEntry(dA, (valueOrElse(getInteger(dA), 0) + dq)), IntegerEntry(aO, (dJ[cu] - dq)), IntegerEntry(aL, ((cT - dM) + dJ[cz])), IntegerEntry(aK, cP), IntegerEntry(aN, (cZ - dO)), IntegerEntry(aM, cP), IntegerEntry(dK, dL)] ++ dN) ++ dP) ++ dR), dT)
535+ let du = dR[an]
536+ let ea = dJ(P)
537+ let eb = (du + dR[as])
538+ let ec = dR[ap]
539+ $Tuple2(((([Reissue(R, ec, true), IntegerEntry(bi, (dR[ae] + ec)), IntegerEntry(bK, dR[at]), IntegerEntry(ea, (valueOrElse(getInteger(ea), 0) + du)), IntegerEntry(dI, (valueOrElse(getInteger(dI), 0) + du)), IntegerEntry(be, (dR[am] - du)), IntegerEntry(bb, ((cX - dU) + dR[ar])), IntegerEntry(ba, cT), IntegerEntry(bd, (dd - dW)), IntegerEntry(bc, cT), IntegerEntry(dS, dT)] ++ dV) ++ dX) ++ dZ), eb)
527540 }
528541 }
529542
530543
531-func dV (P,dW) = {
532- let cP = lastBlock.timestamp
533- let dX = aW(P)
534- let dY = aU(P)
535- let dE = valueOrElse(getInteger(dX), 0)
536- let dZ = valueOrElse(getInteger(dY), 0)
537- let ea = valueOrElse(getInteger(aV), 0)
538- let aB = fraction(fraction(az, dZ, aw), (dE - cP), aI)
539- $Tuple3([IntegerEntry(dX, cP), IntegerEntry(dY, (dZ + dW)), IntegerEntry(aV, (ea + dW))], aB, dZ)
544+func ed (P,ee) = {
545+ let cT = lastBlock.timestamp
546+ let ef = bm(P)
547+ let eg = bk(P)
548+ let dM = valueOrElse(getInteger(ef), 0)
549+ let eh = valueOrElse(getInteger(eg), 0)
550+ let ei = valueOrElse(getInteger(bl), 0)
551+ let aR = fraction(fraction(aP, eh, aM), (dM - cT), aY)
552+ $Tuple3([IntegerEntry(ef, cT), IntegerEntry(eg, (eh + ee)), IntegerEntry(bl, (ei + ee))], aR, eh)
540553 }
541554
542555
543-func eb (P) = {
556+func ej (P) = {
544557 let U = (height / i)
545- let ec = (U - 1)
546- let ed = valueOrElse(getInteger(X(ec)), bH)
547- let ee = valueOrElse(getInteger(Y(ec)), 0)
548- let ef = valueOrElse(getInteger(T(P, ec)), 0)
549- if ((0 >= ef))
558+ let ek = (U - 1)
559+ let el = valueOrElse(getInteger(X(ek)), bX)
560+ let em = valueOrElse(getInteger(Y(ek)), 0)
561+ let en = valueOrElse(getInteger(T(P, ek)), 0)
562+ if ((0 >= en))
550563 then $Tuple2(nil, unit)
551564 else {
552- let eg = valueOrElse(getInteger(V(ec)), 0)
553- if ((0 >= eg))
554- then $Tuple2([DeleteEntry(T(P, ec))], unit)
565+ let eo = valueOrElse(getInteger(V(ek)), 0)
566+ if ((0 >= eo))
567+ then $Tuple2([DeleteEntry(T(P, ek))], unit)
555568 else {
556- let aq = value(value(blockInfoByHeight((U * i))).vrf)
557- let ap = fromBase58String(split(valueOrElse(getString(O(P)), "42_DEFAULT"), "_")[1])
558- let eh = an(eg, ap, aq)
559- if (((ef * ed) > eh))
569+ let aG = value(value(blockInfoByHeight((U * i))).vrf)
570+ let aF = fromBase58String(split(valueOrElse(getString(O(P)), "42_DEFAULT"), "_")[1])
571+ let ep = aD(eo, aF, aG)
572+ if (((en * el) > ep))
560573 then {
561- let ei = invoke(K, "issueNFT", [P, bG], nil)
562- let ej = getString(Z(ec))
563- let ek = if (isDefined(ej))
564- then ((value(ej) + "_") + P)
574+ let eq = invoke(K, "issueNFT", [P, bW], nil)
575+ let er = getString(Z(ek))
576+ let es = if (isDefined(er))
577+ then ((value(er) + "_") + P)
565578 else P
566- $Tuple2([IntegerEntry(Y(ec), (ee + 1)), DeleteEntry(T(P, ec)), StringEntry(Z(ec), ek)], ei)
579+ $Tuple2([IntegerEntry(Y(ek), (em + 1)), DeleteEntry(T(P, ek)), StringEntry(Z(ek), es)], eq)
567580 }
568581 else {
569- let el = (an(9, (base58'29' + ap), aq) + 1)
570- let em = fraction(ef, el, 10)
571- $Tuple2([DeleteEntry(T(P, ec)), IntegerEntry(T(P, U), em)], em)
582+ let et = (aD(9, (base58'29' + aF), aG) + 1)
583+ let eu = fraction(en, et, 10)
584+ $Tuple2([DeleteEntry(T(P, ek)), IntegerEntry(T(P, U), eu)], eu)
572585 }
573586 }
574587 }
575588 }
576589
577590
578-func en (P,eo) = {
591+func ev (P,ew) = {
579592 let U = (height / i)
580- let ep = T(P, U)
581- let eq = split(eo, "_")
582- let er = valueOrElse(getInteger(V(U)), 0)
583- let es = valueOrElse(getInteger(ep), 0)
584- let et = if ((aa(parseIntValue(eq[0])) == parseIntValue(eq[1])))
593+ let ex = T(P, U)
594+ let ey = split(ew, "_")
595+ let ez = valueOrElse(getInteger(V(U)), 0)
596+ let eA = valueOrElse(getInteger(ex), 0)
597+ let eB = if ((aa(parseIntValue(ey[0])) == parseIntValue(ey[1])))
585598 then 1
586599 else 0
587- let eu = valueOrElse(getInteger(W(U)), 0)
588- let ev = if (if ((es == 0))
589- then (et == 1)
600+ let eC = valueOrElse(getInteger(W(U)), 0)
601+ let eD = if (if ((eA == 0))
602+ then (eB == 1)
590603 else false)
591- then [IntegerEntry(W(U), (eu + 1))]
604+ then [IntegerEntry(W(U), (eC + 1))]
592605 else nil
593- $Tuple2(if ((et == 0))
606+ $Tuple2(if ((eB == 0))
594607 then nil
595- else ((ev :+ IntegerEntry(ep, (es + et))) :+ IntegerEntry(V(U), (er + et))), et)
608+ else ((eD :+ IntegerEntry(ex, (eA + eB))) :+ IntegerEntry(V(U), (ez + eB))), eB)
596609 }
597610
598611
599-@Callable(ew)
600-func constructorV1 (ex,ey,cV,ez) = if ((ew.caller != this))
612+@Callable(eE)
613+func constructorV1 (eF,eG,cZ,eH) = if ((eE.caller != this))
601614 then throw("Permission denied")
602615 else if (isDefined(getBinary(Q)))
603616 then throw("Already initialized")
604617 else {
605- let bs = aG
606- let eA = Issue("WLGOLD", "WavesLands Gold investment token", bs, 8, true, unit, 0)
607- let eB = calculateAssetId(eA)
608-[eA, IntegerEntry(aR, lastBlock.timestamp), IntegerEntry(aS, bs), IntegerEntry(dA, 0), IntegerEntry(aO, fraction(aG, aH, b)), BinaryEntry(Q, eB), StringEntry(x(), ex), StringEntry(bj, ey), StringEntry(aJ, cV), StringEntry(dz, ez)]
618+ let bI = aW
619+ let eI = Issue("WLGOLD", "WavesLands Gold investment token", bI, 8, true, unit, 0)
620+ let eJ = calculateAssetId(eI)
621+[eI, IntegerEntry(bh, lastBlock.timestamp), IntegerEntry(bi, bI), IntegerEntry(dI, 0), IntegerEntry(be, fraction(aW, aX, b)), BinaryEntry(Q, eJ), StringEntry(x(), eF), StringEntry(bz, eG), StringEntry(aZ, cZ), StringEntry(dH, eH)]
609622 }
610623
611624
612625
613-@Callable(ew)
614-func constructorV2 (eC) = if ((ew.caller != this))
626+@Callable(eE)
627+func constructorV2 (eK) = if ((eE.caller != this))
615628 then throw("Permission denied")
616- else [StringEntry(w(), eC)]
629+ else [StringEntry(w(), eK)]
617630
618631
619632
620-@Callable(ew)
621-func buyWlg (eD) = {
622- let eE = dC()
623- if ((eE == eE))
624- then if ((size(ew.payments) != 1))
633+@Callable(eE)
634+func buyWlg (eL) = {
635+ let eM = dK()
636+ if ((eM == eM))
637+ then if ((size(eE.payments) != 1))
625638 then throw("exactly 1 payment must be attached")
626639 else {
627- let eF = ew.payments[0]
628- let eG = eF.amount
629- if (if (!(isDefined(eF.assetId)))
640+ let eN = eE.payments[0]
641+ let eO = eN.amount
642+ if (if (!(isDefined(eN.assetId)))
630643 then true
631- else (value(eF.assetId) != k))
644+ else (value(eN.assetId) != k))
632645 then throw("USDT payments only!")
633646 else {
634- let eH = ew.caller
635- let P = toString(eH)
636- if ((d > eG))
637- then throw((("You can trade min " + ah(d, 6)) + " USDT"))
647+ let eP = eE.caller
648+ let P = toString(eP)
649+ if ((d > eO))
650+ then throw((("You can trade min " + ax(d, 6)) + " USDT"))
638651 else {
639- let dJ = cC("", [J, K, L, M, N], k, eG)
640- let eI = dJ[cm]
641- let eJ = dJ[co]
642- let eK = fraction(eJ, 6, 5, CEILING)
643- let eL = fraction(eG, c, eK)
644- let eM = dD(P)
645- if ((eL > eM))
646- then throw((("You can get max " + ah(eM, 8)) + " WLGOLD at the moment"))
647- else if ((eD > eL))
652+ let dR = cG("", [J, K, L, M, N], k, eO)
653+ let eQ = dR[ae]
654+ let eR = dR[ag]
655+ let eS = fraction(eR, 6, 5, CEILING)
656+ let eT = fraction(eO, c, eS)
657+ let eU = dL(P)
658+ if ((eT > eU))
659+ then throw((("You can get max " + ax(eU, 8)) + " WLGOLD at the moment"))
660+ else if ((eL > eT))
648661 then throw("Price changed during operation, please try again")
649662 else {
650- let eN = (eG / 6)
651- $Tuple2([Reissue(R, eL, true), IntegerEntry(aS, (eI + eL)), IntegerEntry(aP(P), lastBlock.timestamp), IntegerEntry(aQ(P), (eM - eL)), ScriptTransfer(addressFromStringValue(value(getString(dz))), eN, k), ScriptTransfer(eH, eL, R)], eE)
663+ let eV = (eO / 6)
664+ $Tuple2([Reissue(R, eT, true), IntegerEntry(bi, (eQ + eT)), IntegerEntry(bf(P), lastBlock.timestamp), IntegerEntry(bg(P), (eU - eT)), ScriptTransfer(addressFromStringValue(value(getString(dH))), eV, k), ScriptTransfer(eP, eT, R)], eM)
652665 }
653666 }
654667 }
658671
659672
660673
661-@Callable(ew)
662-func buyWlgREADONLY (p,eG) = {
663- let dJ = cC("", [J, K, L, M, N], k, eG)
664- let eJ = dJ[co]
665- let eK = fraction(eJ, 6, 5, CEILING)
666- let eL = fraction(eG, c, eK)
667- let eM = dD(p)
668- let eO = fraction(eM, eK, c)
669- let eN = (eG / 6)
670- $Tuple2(nil, [eL, d, eO, eN])
674+@Callable(eE)
675+func buyWlgREADONLY (p,eO) = {
676+ let dR = cG("", [J, K, L, M, N], k, eO)
677+ let eR = dR[ag]
678+ let eS = fraction(eR, 6, 5, CEILING)
679+ let eT = fraction(eO, c, eS)
680+ let eU = dL(p)
681+ let eW = fraction(eU, eS, c)
682+ let eV = (eO / 6)
683+ $Tuple2(nil, [eT, d, eW, eV])
671684 }
672685
673686
674687
675-@Callable(ew)
676-func sellWlg (eP) = {
677- let eE = dC()
678- if ((eE == eE))
679- then if ((size(ew.payments) != 1))
688+@Callable(eE)
689+func sellWlg (eX) = {
690+ let eM = dK()
691+ if ((eM == eM))
692+ then if ((size(eE.payments) != 1))
680693 then throw("exactly 1 payment must be attached")
681694 else {
682- let eF = ew.payments[0]
683- let eQ = eF.amount
684- let eH = ew.caller
685- let P = toString(eH)
686- let eM = dD(P)
687- if ((eQ > eM))
688- then throw((("You can spend max " + ah(eM, 8)) + " WLGOLD at the moment"))
689- else if (if (!(isDefined(eF.assetId)))
695+ let eN = eE.payments[0]
696+ let eY = eN.amount
697+ let eP = eE.caller
698+ let P = toString(eP)
699+ let eU = dL(P)
700+ if ((eY > eU))
701+ then throw((("You can spend max " + ax(eU, 8)) + " WLGOLD at the moment"))
702+ else if (if (!(isDefined(eN.assetId)))
690703 then true
691- else (value(eF.assetId) != R))
704+ else (value(eN.assetId) != R))
692705 then throw("WLGOLD payments only!")
693706 else {
694- let dJ = cC("", [J, K, L, M, N], k, 0)
695- let eI = dJ[cm]
696- let eR = (dJ[co] / 2)
697- let eG = fraction(eQ, eR, c)
698- if ((d > eG))
699- then throw((("You can trade min " + ah(d, 6)) + " USDT"))
700- else if ((eP > eG))
707+ let dR = cG("", [J, K, L, M, N], k, 0)
708+ let eQ = dR[ae]
709+ let eZ = (dR[ag] / 2)
710+ let eO = fraction(eY, eZ, c)
711+ if ((d > eO))
712+ then throw((("You can trade min " + ax(d, 6)) + " USDT"))
713+ else if ((eX > eO))
701714 then throw("Price changed during operation, please try again")
702715 else {
703- let eN = (eG / 5)
704- $Tuple2([Burn(R, eQ), IntegerEntry(aS, (eI - eQ)), IntegerEntry(aP(P), lastBlock.timestamp), IntegerEntry(aQ(P), (eM - eQ)), ScriptTransfer(addressFromStringValue(value(getString(dz))), eN, k), ScriptTransfer(eH, eG, k)], eE)
716+ let eV = (eO / 5)
717+ $Tuple2([Burn(R, eY), IntegerEntry(bi, (eQ - eY)), IntegerEntry(bf(P), lastBlock.timestamp), IntegerEntry(bg(P), (eU - eY)), ScriptTransfer(addressFromStringValue(value(getString(dH))), eV, k), ScriptTransfer(eP, eO, k)], eM)
705718 }
706719 }
707720 }
710723
711724
712725
713-@Callable(ew)
714-func sellWlgREADONLY (p,eQ) = {
715- let eM = dD(p)
716- let dJ = cC("", [J, K, L, M, N], k, 0)
717- let eR = (dJ[co] / 2)
718- let eG = fraction(eQ, eR, c)
719- let eS = fraction(d, c, eR)
720- let eN = (eG / 5)
721- $Tuple2(nil, [eG, eS, eM, eN])
726+@Callable(eE)
727+func sellWlgREADONLY (p,eY) = {
728+ let eU = dL(p)
729+ let dR = cG("", [J, K, L, M, N], k, 0)
730+ let eZ = (dR[ag] / 2)
731+ let eO = fraction(eY, eZ, c)
732+ let fa = fraction(d, c, eZ)
733+ let eV = (eO / 5)
734+ $Tuple2(nil, [eO, fa, eU, eV])
722735 }
723736
724737
725738
726-@Callable(ew)
739+@Callable(eE)
727740 func claim () = {
728- let eE = dC()
729- if ((eE == eE))
730- then if ((size(ew.payments) != 0))
741+ let eM = dK()
742+ if ((eM == eM))
743+ then if ((size(eE.payments) != 0))
731744 then throw("No payments required")
732745 else {
733- let eT = dI(toString(ew.caller))
734- let eU = eT._1
735- let eV = eT._2
736- $Tuple2((eU :+ ScriptTransfer(ew.caller, eV, R)), eE)
746+ let fb = dQ(toString(eE.caller))
747+ let fc = fb._1
748+ let fd = fb._2
749+ $Tuple2((fc :+ ScriptTransfer(eE.caller, fd, R)), eM)
737750 }
738751 else throw("Strict value is not equal to itself.")
739752 }
740753
741754
742755
743-@Callable(ew)
744-func onStakeUnstakeLand (P) = if (if (if ((ew.caller != H))
745- then (ew.caller != I)
756+@Callable(eE)
757+func onStakeUnstakeLand (P) = if (if (if ((eE.caller != H))
758+ then (eE.caller != I)
746759 else false)
747- then (ew.caller != K)
760+ then (eE.caller != K)
748761 else false)
749762 then throw("Permission denied")
750763 else {
751- let eW = dI(P)
752- let eU = eW._1
753- let eV = eW._2
754- $Tuple2(if ((eV > 0))
755- then (eU :+ ScriptTransfer(addressFromStringValue(P), eV, R))
756- else eU, eV)
764+ let fe = dQ(P)
765+ let fc = fe._1
766+ let fd = fe._2
767+ $Tuple2(if ((fd > 0))
768+ then (fc :+ ScriptTransfer(addressFromStringValue(P), fd, R))
769+ else fc, fd)
757770 }
758771
759772
760773
761-@Callable(ew)
762-func burnWlgold (eQ) = if ((ew.caller != K))
774+@Callable(eE)
775+func burnWlgold (eY) = if ((eE.caller != K))
763776 then throw("Permission denied")
764777 else {
765- let dJ = cC("", [J, K, L, M, N], k, 0)
766- if ((eQ > dJ[cn]))
767- then throw(((("Only " + ah(dJ[cn], 8)) + " WLGOLD left on contract, can't burn ") + ah(eQ, 8)))
778+ let dR = cG("", [J, K, L, M, N], k, 0)
779+ if ((eY > dR[af]))
780+ then throw(((("Only " + ax(dR[af], 8)) + " WLGOLD left on contract, can't burn ") + ax(eY, 8)))
768781 else {
769- let eX = (dJ[cm] - eQ)
770- $Tuple2([Burn(R, eQ), IntegerEntry(aS, eX)], eX)
782+ let ff = (dR[ae] - eY)
783+ $Tuple2([Burn(R, eY), IntegerEntry(bi, ff)], ff)
771784 }
772785 }
773786
774787
775788
776-@Callable(ew)
777-func betForTicket (eY) = {
778- let eE = dC()
779- if ((eE == eE))
780- then if ((size(ew.payments) != 0))
789+@Callable(eE)
790+func betForTicket (fg) = {
791+ let eM = dK()
792+ if ((eM == eM))
793+ then if ((size(eE.payments) != 0))
781794 then throw("No payments required")
782795 else {
783- let P = toString(ew.caller)
784- let ec = ((height / i) - 1)
785- let ef = valueOrElse(getInteger(T(P, ec)), 0)
786- let eg = valueOrElse(getInteger(V(ec)), 0)
787- if (if ((ef > 0))
788- then (eg > 0)
796+ let P = toString(eE.caller)
797+ let ek = ((height / i) - 1)
798+ let en = valueOrElse(getInteger(T(P, ek)), 0)
799+ let eo = valueOrElse(getInteger(V(ek)), 0)
800+ if (if ((en > 0))
801+ then (eo > 0)
789802 else false)
790803 then throw("Please open the chest first")
791- else if (((eY / 4) != 0))
804+ else if (((fg / 4) != 0))
792805 then throw("Invalid bet: should be 0..3")
793806 else {
794- let eZ = (height % g)
795- if ((eZ > (g - 3)))
796- then throw((("Cannot bet: the day is almost ended, please wait " + toString((g - eZ))) + " blocks"))
807+ let fh = (height % g)
808+ if ((fh > (g - 3)))
809+ then throw((("Cannot bet: the day is almost ended, please wait " + toString((g - fh))) + " blocks"))
797810 else {
798- let fa = valueOrElse(getInteger(K, by(P)), 0)
799- if ((bI > fa))
800- then throw((("You need to stake at least " + ah(bI, 8)) + " ACRES to bet"))
811+ let fi = valueOrElse(getInteger(K, bO(P)), 0)
812+ if ((bY > fi))
813+ then throw((("You need to stake at least " + ax(bY, 8)) + " ACRES to bet"))
801814 else {
802- let fb = ((height / g) + 1)
803- let fc = S(P)
804- let fd = getString(fc)
805- let fe = StringEntry(fc, ((toString(fb) + "_") + toString(eY)))
806- if (isDefined(fd))
815+ let fj = ((height / g) + 1)
816+ let fk = S(P)
817+ let fl = getString(fk)
818+ let fm = StringEntry(fk, ((toString(fj) + "_") + toString(fg)))
819+ if (isDefined(fl))
807820 then {
808- let ff = value(fd)
809- if ((split(ff, "_")[0] == toString(fb)))
821+ let fn = value(fl)
822+ if ((split(fn, "_")[0] == toString(fj)))
810823 then throw("You already bet for tomorrow")
811824 else {
812- let fg = en(P, ff)
813- $Tuple2((fg._1 :+ fe), fg._2)
825+ let fo = ev(P, fn)
826+ $Tuple2((fo._1 :+ fm), fo._2)
814827 }
815828 }
816- else $Tuple2([fe], 0)
829+ else $Tuple2([fm], 0)
817830 }
818831 }
819832 }
823836
824837
825838
826-@Callable(ew)
827-func takeWlgXp (P) = if ((ew.caller != H))
839+@Callable(eE)
840+func takeWlgXp (P) = if ((eE.caller != H))
828841 then throw("Permission denied")
829842 else {
830- let fh = dV(P, 0)
831- let eU = fh._1
832- let aB = fh._2
833- $Tuple2(eU, aB)
843+ let fp = ed(P, 0)
844+ let fc = fp._1
845+ let aR = fp._2
846+ $Tuple2(fc, aR)
834847 }
835848
836849
837850
838-@Callable(ew)
851+@Callable(eE)
839852 func checkWlgXpREADONLY (P) = {
840- let fi = dV(P, 0)
841- let fj = fi._1
842- let fk = fi._2
843- let aE = (valueOrElse(getInteger(H, ax(P)), 0) + fk)
844- let fl = aC(valueOrElse(getInteger(H, ay(P)), 0), aE)
845- $Tuple2(nil, (fl :+ aE))
853+ let fq = ed(P, 0)
854+ let fr = fq._1
855+ let fs = fq._2
856+ let aU = (valueOrElse(getInteger(H, aN(P)), 0) + fs)
857+ let ft = aS(valueOrElse(getInteger(H, aO(P)), 0), aU)
858+ $Tuple2(nil, (ft :+ aU))
846859 }
847860
848861
849862
850-@Callable(ew)
851-func setNumPrizes (ed) = if ((ew.caller != this))
863+@Callable(eE)
864+func setNumPrizes (el) = if ((eE.caller != this))
852865 then throw("Permission denied")
853866 else {
854867 let U = (height / i)
855- $Tuple2([IntegerEntry(X(U), ed)], ed)
868+ $Tuple2([IntegerEntry(X(U), el)], el)
856869 }
857870
858871
859872
860-@Callable(ew)
873+@Callable(eE)
861874 func openChest () = if (!(n))
862875 then throw("Temporarily disabled")
863876 else {
864- let eE = dC()
865- if ((eE == eE))
866- then if ((size(ew.payments) != 0))
877+ let eM = dK()
878+ if ((eM == eM))
879+ then if ((size(eE.payments) != 0))
867880 then throw("No payments required")
868881 else {
869- let ec = ((height / i) - 1)
870- let P = toString(ew.caller)
871- let ef = valueOrElse(getInteger(T(P, ec)), 0)
872- if ((0 >= ef))
882+ let ek = ((height / i) - 1)
883+ let P = toString(eE.caller)
884+ let en = valueOrElse(getInteger(T(P, ek)), 0)
885+ if ((0 >= en))
873886 then throw("No gems to open the chest")
874- else eb(P)
887+ else ej(P)
875888 }
876889 else throw("Strict value is not equal to itself.")
877890 }
878891
879892
880893
881-@Callable(ew)
882-func addGemsFor (P,et) = if ((ew.caller != this))
894+@Callable(eE)
895+func addGemsFor (P,eB) = if ((eE.caller != this))
883896 then throw("Permission denied")
884897 else {
885898 let U = (height / i)
886- let ep = T(P, U)
887- let er = valueOrElse(getInteger(V(U)), 0)
888- let es = valueOrElse(getInteger(ep), 0)
889- let eu = valueOrElse(getInteger(W(U)), 0)
890- let ev = if (if ((es == 0))
891- then (et == 1)
899+ let ex = T(P, U)
900+ let ez = valueOrElse(getInteger(V(U)), 0)
901+ let eA = valueOrElse(getInteger(ex), 0)
902+ let eC = valueOrElse(getInteger(W(U)), 0)
903+ let eD = if (if ((eA == 0))
904+ then (eB == 1)
892905 else false)
893- then [IntegerEntry(W(U), (eu + 1))]
906+ then [IntegerEntry(W(U), (eC + 1))]
894907 else nil
895- $Tuple2(((ev :+ IntegerEntry(ep, (es + et))) :+ IntegerEntry(V(U), (er + et))), et)
908+ $Tuple2(((eD :+ IntegerEntry(ex, (eA + eB))) :+ IntegerEntry(V(U), (ez + eB))), eB)
896909 }
897910
898911
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))
3737 then 0
3838 else if ((base58'2T' == h))
3939 then 1146000
4040 else throw("Unknown chain")
4141 }
4242
4343 let k = {
4444 let h = f
4545 if ((base58'2W' == h))
4646 then base58'9wc3LXNA4TEBsXyKtoLE9mrbDD7WMHXvXrCjZvabLAsi'
4747 else if ((base58'2T' == h))
4848 then base58'6mWwf9mZBjVgkC54idpyaZLQfAosD914wT8fGf2iiY63'
4949 else throw("Unknown chain")
5050 }
5151
5252 let l = {
5353 let h = f
5454 if ((base58'2W' == h))
5555 then "3PFwYta8biEz31zpeFe5DJK8wE5trSpQVF8"
5656 else if ((base58'2T' == h))
5757 then "3N7UuYar6264P58FBhVWKPQAh4Yua2hgngv"
5858 else throw("Unknown chain")
5959 }
6060
6161 let m = {
6262 let h = f
6363 if ((base58'2W' == h))
6464 then "3PQCuvFbvh4LkPUnrnU1z3jnbA1p9m3WNhv"
6565 else if ((base58'2T' == h))
6666 then "3MumkGGztCKAXpWDqxkddofqXSUbqQkvSJy"
6767 else throw("Unknown chain")
6868 }
6969
7070 let n = {
7171 let h = f
7272 if ((base58'2W' == h))
7373 then false
7474 else if ((base58'2T' == h))
7575 then true
7676 else throw("Unknown chain")
7777 }
7878
7979 func o (p,q) = valueOrErrorMessage(getString(p, q), makeString(["mandatory ", toString(p), ".", q, " is not defined"], ""))
8080
8181
8282 let r = 1
8383
8484 let s = 2
8585
8686 let t = 4
8787
8888 let u = 5
8989
9090 func v () = "%s__restConfig"
9191
9292
9393 func w () = "%s__rest2Addr"
9494
9595
9696 func x () = "%s__restAddr"
9797
9898
9999 let y = addressFromStringValue(valueOrElse(getString(this, x()), m))
100100
101101 func z (A) = split_4C(o(A, v()), a)
102102
103103
104104 func B (C,D) = valueOrErrorMessage(addressFromString(C[D]), ("Rest cfg doesn't contain address at index " + toString(D)))
105105
106106
107107 let E = 1
108108
109109 let F = 8
110110
111111 let G = z(y)
112112
113113 let H = B(G, E)
114114
115115 let I = B(G, F)
116116
117117 let J = addressFromStringValue(valueOrElse(getString(this, w()), l))
118118
119119 let C = z(J)
120120
121121 let K = B(C, r)
122122
123123 let L = B(C, s)
124124
125125 let M = B(C, t)
126126
127127 let N = B(C, u)
128128
129129 func O (P) = ("lastWeekTxIdByUser_" + P)
130130
131131
132132 let Q = "wlg_assetId"
133133
134134 let R = valueOrErrorMessage(getBinary(L, Q), "WLGOLD is not issued yet")
135135
136136 func S (P) = ("userBet_" + P)
137137
138138
139139 func T (P,U) = ((("userWeekTickets_" + P) + "_") + toString(U))
140140
141141
142142 func V (U) = ("totalWeekTickets_" + toString(U))
143143
144144
145145 func W (U) = ("totalWeekParticipants_" + toString(U))
146146
147147
148148 func X (U) = ("numNFT2Draw_" + toString(U))
149149
150150
151151 func Y (U) = ("numNFTDrawn_" + toString(U))
152152
153153
154154 func Z (U) = ("weekWinners_" + toString(U))
155155
156156
157157 func aa (ab) = {
158158 let ac = (ab * g)
159159 let ad = if ((ac > j))
160160 then ac
161161 else (ac + j)
162162 (toInt(value(value(blockInfoByHeight(ad)).vrf)) % 4)
163163 }
164164
165165
166-func ae (af) = {
167- let h = af
166+let ae = 0
167+
168+let af = 1
169+
170+let ag = 2
171+
172+let ah = 8
173+
174+let ai = 11
175+
176+let aj = 12
177+
178+let ak = 15
179+
180+let al = 16
181+
182+let am = 19
183+
184+let an = 23
185+
186+let ao = 24
187+
188+let ap = 25
189+
190+let aq = 26
191+
192+let ar = 27
193+
194+let as = 28
195+
196+let at = 29
197+
198+func au (av) = {
199+ let h = av
168200 if ($isInstanceOf(h, "Int"))
169201 then {
170- let ag = h
171- ag
202+ let aw = h
203+ aw
172204 }
173205 else throw("fail to cast into Int")
174206 }
175207
176208
177-func ah (ai,aj) = {
178- let ak = pow(10, 0, aj, 0, 0, DOWN)
179- let al = toString((ai % ak))
180- let am = drop(toString(ak), (1 + size(al)))
181- (((toString((ai / ak)) + ".") + am) + al)
209+func ax (ay,az) = {
210+ let aA = pow(10, 0, az, 0, 0, DOWN)
211+ let aB = toString((ay % aA))
212+ let aC = drop(toString(aA), (1 + size(aB)))
213+ (((toString((ay / aA)) + ".") + aC) + aB)
182214 }
183215
184216
185-func an (ao,ap,aq) = if ((0 >= ao))
217+func aD (aE,aF,aG) = if ((0 >= aE))
186218 then throw("maxValue should be > 0")
187219 else {
188- let ar = sha256_16Kb((ap + aq))
189- (toInt(ar) % ao)
220+ let aH = sha256_16Kb((aF + aG))
221+ (toInt(aH) % aE)
190222 }
191223
192224
193-let as = 100000000
225+let aI = 100000000
194226
195-let at = 3200
227+let aJ = 3200
196228
197-let au = 4000
229+let aK = 4000
198230
199-let av = 3
231+let aL = 3
200232
201-let aw = 100000000000
233+let aM = 100000000000
202234
203-func ax (P) = ("userXP_" + P)
235+func aN (P) = ("userXP_" + P)
204236
205237
206-func ay (P) = ("userLevel_" + P)
238+func aO (P) = ("userLevel_" + P)
207239
208240
209-let az = 10000
241+let aP = 10000
210242
211-func aA (aB) = fraction(at, pow(aB, 4, au, 4, 4, DOWN), as)
243+func aQ (aR) = fraction(aJ, pow(aR, 4, aK, 4, 4, DOWN), aI)
212244
213245
214-func aC (aD,aE) = {
215- let aF = aA(aE)
216-[aF, (av * (aF - aD))]
246+func aS (aT,aU) = {
247+ let aV = aQ(aU)
248+[aV, (aL * (aV - aT))]
217249 }
218250
219251
220-let aG = 100000000000000
252+let aW = 100000000000000
221253
222-let aH = 400000
254+let aX = 400000
223255
224-let aI = 86400000
256+let aY = 86400000
225257
226-let aJ = "teamAddr"
258+let aZ = "teamAddr"
227259
228-let aK = "lastClaimedTime_team"
260+let ba = "lastClaimedTime_team"
229261
230-let aL = "teamAmountLeft"
262+let bb = "teamAmountLeft"
231263
232-let aM = "lastClaimedTime_activities"
264+let bc = "lastClaimedTime_activities"
233265
234-let aN = "activitiesAmountLeft"
266+let bd = "activitiesAmountLeft"
235267
236-let aO = "stakersAmountLeft"
268+let be = "stakersAmountLeft"
237269
238-func aP (P) = ("lastArbTimeUser_" + P)
270+func bf (P) = ("lastArbTimeUser_" + P)
239271
240272
241-func aQ (P) = ("lastWlgLimitUser_" + P)
273+func bg (P) = ("lastWlgLimitUser_" + P)
242274
243275
244-let aR = "wlg_issueTime"
276+let bh = "wlg_issueTime"
245277
246-let aS = "wlg_issuedAmount"
278+let bi = "wlg_issuedAmount"
247279
248-func aT (P) = ("acresStakedAmountByUser_" + P)
280+func bj (P) = ("acresStakedAmountByUser_" + P)
249281
250282
251-func aU (P) = ("wlgStakedAmountByUser_" + P)
283+func bk (P) = ("wlgStakedAmountByUser_" + P)
252284
253285
254-let aV = "wlgStakedAmountTotal"
286+let bl = "wlgStakedAmountTotal"
255287
256-func aW (P) = ("wlgStakedTimeByUser_" + P)
288+func bm (P) = ("wlgStakedTimeByUser_" + P)
257289
258290
259-let aX = 1000000
291+let bn = 1000000
260292
261-let aY = 100000000
293+let bo = 100000000
262294
263-let aZ = 200000
295+let bp = 200000
264296
265-let ba = 100000
297+let bq = 100000
266298
267-let bb = 400000
299+let br = 400000
268300
269-let bc = 31557600000
301+let bs = 31557600000
270302
271-let bd = 86400000
303+let bt = 86400000
272304
273-let be = 1000000000
305+let bu = 1000000000
274306
275-let bf = 800000
307+let bv = 800000
276308
277-let bg = 100000
309+let bw = 100000
278310
279-let bh = 100000
311+let bx = 100000
280312
281-let bi = 1731279600000
313+let by = 1731279600000
282314
283-let bj = "marketingAddr"
315+let bz = "marketingAddr"
284316
285-let bk = "teamAddr"
317+let bA = "teamAddr"
286318
287-let bl = "lastClaimedTime_team"
319+let bB = "lastClaimedTime_team"
288320
289-let bm = "teamAmountLeft"
321+let bC = "teamAmountLeft"
290322
291-let bn = "lastClaimedTime_activities"
323+let bD = "lastClaimedTime_activities"
292324
293-let bo = "activitiesAmountLeft"
325+let bE = "activitiesAmountLeft"
294326
295-let bp = "stakersAmountLeft"
327+let bF = "stakersAmountLeft"
296328
297-func bq (P) = ("lastClaimedTimeUser_" + P)
329+func bG (P) = ("lastClaimedTimeUser_" + P)
298330
299331
300-func br (bs,bt) = fraction(bs, (bb * (bt + 1)), (6 * aX))
332+func bH (bI,bJ) = fraction(bI, (br * (bJ + 1)), (6 * bn))
301333
302334
303-let bu = "wlg_issue10Time"
335+let bK = "wlg_issue10Time"
304336
305-let bv = "wlg_issueTime"
337+let bL = "wlg_issueTime"
306338
307-let bw = "wlg_issuedAmount"
339+let bM = "wlg_issuedAmount"
308340
309-let bx = "zbill_issuedAmount"
341+let bN = "zbill_issuedAmount"
310342
311-func by (P) = ("acresStakedAmountByUser_" + P)
343+func bO (P) = ("acresStakedAmountByUser_" + P)
312344
313345
314-let bz = "acresStakedAmountTotal"
346+let bP = "acresStakedAmountTotal"
315347
316-let bA = "totalFarmingPower"
348+let bQ = "totalFarmingPower"
317349
318-let bB = 0
350+let bR = 0
319351
320-let bC = 1
352+let bS = 1
321353
322-let bD = 2
354+let bT = 2
323355
324-let bE = 3
356+let bU = 3
325357
326-let bF = 4
358+let bV = 4
327359
328-let bG = 1
360+let bW = 1
329361
330-let bH = 5
362+let bX = 5
331363
332-let bI = 100000000
364+let bY = 100000000
333365
334-func bJ (P) = ("userFullBonus_" + P)
366+let bZ = "nftTotalIssued"
367+
368+let ca = "nftTotalBurned"
369+
370+let cb = "WlNftTotalStaked"
371+
372+func cc (P) = ("userWlNftNumber_" + P)
335373
336374
337-let bK = [0, 10, 20, 40, 80, 150, 250, 400, 700, 1000]
375+func cd (P) = ("userFullBonus_" + P)
338376
339-func bL (bM) = {
340- let bN = ((bM + 99999999) / aY)
341- func bO (bP,bQ) = if ((bQ >= bN))
342- then bP
343- else (bP + 1)
344377
345- let bR = bK
346- let bS = size(bR)
347- let bT = 0
348- func bU (bV,bW) = if ((bW >= bS))
349- then bV
350- else bO(bV, bR[bW])
378+let ce = [0, 10, 20, 40, 80, 150, 250, 400, 700, 1000]
351379
352- func bX (bV,bW) = if ((bW >= bS))
353- then bV
380+func cf (cg) = {
381+ let ch = ((cg + 99999999) / bo)
382+ func ci (cj,ck) = if ((ck >= ch))
383+ then cj
384+ else (cj + 1)
385+
386+ let cl = ce
387+ let cm = size(cl)
388+ let cn = 0
389+ func co (cp,cq) = if ((cq >= cm))
390+ then cp
391+ else ci(cp, cl[cq])
392+
393+ func cr (cp,cq) = if ((cq >= cm))
394+ then cp
354395 else throw("List size exceeds 10")
355396
356- bX(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bT, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
397+ cr(co(co(co(co(co(co(co(co(co(co(cn, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
357398 }
358399
359400
360-func bY (bM) = ((bM * 20) * (bL(bM) + 4))
401+func cs (cg) = ((cg * 20) * (cf(cg) + 4))
361402
362403
363-func bZ (bM,ca) = {
364- let cb = bY(bM)
365- $Tuple2(fraction(cb, (aX + ca), aX), cb)
404+func ct (cg,cu) = {
405+ let cv = cs(cg)
406+ $Tuple2(fraction(cv, (bn + cu), bn), cv)
366407 }
367408
368409
369-func cc (cd,K) = {
370- let ce = valueOrElse(getInteger(K, bA), 0)
371- let cf = valueOrElse(getInteger(K, by(cd)), 0)
372- let cg = valueOrElse(getInteger(K, bJ(cd)), 0)
373- let ch = bZ(cf, cg)
374- let ci = ch._1
375- let cj = ch._2
376-[ce, ci, cj, cg]
410+func cw (cx,K) = {
411+ let cy = valueOrElse(getInteger(K, bQ), 0)
412+ let cz = valueOrElse(getInteger(K, bO(cx)), 0)
413+ let cA = valueOrElse(getInteger(K, cd(cx)), 0)
414+ let cB = ct(cz, cA)
415+ let cC = cB._1
416+ let cD = cB._2
417+[cy, cC, cD, cA]
377418 }
378419
379420
380-let ck = 0
421+let cE = 0
381422
382-let cl = 1
423+let cF = 1
383424
384-let cm = 0
385-
386-let cn = 1
387-
388-let co = 2
389-
390-let cp = 8
391-
392-let cq = 11
393-
394-let cr = 12
395-
396-let cs = 15
397-
398-let ct = 16
399-
400-let cu = 19
401-
402-let cv = 23
403-
404-let cw = 24
405-
406-let cx = 25
407-
408-let cy = 26
409-
410-let cz = 27
411-
412-let cA = 28
413-
414-let cB = 29
415-
416-func cC (cD,cE,cF,cG) = {
417- let bs = valueOrErrorMessage(getInteger(cE[bD], bw), "WLGOLD is not issued yet")
418- let cH = assetBalance(cE[bB], cF)
419- let cI = (assetBalance(cE[bD], cF) - cG)
420- let cJ = assetBalance(cE[bE], cF)
421- let cK = assetBalance(cE[bC], cF)
422- let cL = cE[bF]
423- let cM = (assetBalance(cL, cF) + valueOrElse(getInteger(cL, bx), 0))
424- let cN = ((cK + cI) + cM)
425- let cO = valueOrErrorMessage(getBinary(cE[bD], "wlg_assetId"), "Not initialized yet")
426- let cP = lastBlock.timestamp
427- let cQ = valueOrErrorMessage(getInteger(cE[bD], bv), "Not initialized")
428- let cR = assetBalance(cE[bD], cO)
429- let cS = fraction(bs, aZ, aX)
430- let cT = valueOrElse(getInteger(cE[bD], bm), cS)
431- let cU = valueOrElse(getInteger(cE[bD], bl), cQ)
432- let cV = addressFromStringValue(value(getString(cE[bD], bk)))
433- let cW = min([fraction(cS, (cP - cU), (3 * bc)), cT])
434- let cX = assetBalance(cV, cO)
435- let cY = fraction(bs, ba, aX)
436- let cZ = valueOrElse(getInteger(cE[bD], bo), cY)
437- let da = valueOrElse(getInteger(cE[bD], bn), cQ)
438- let db = min([fraction(cY, (cP - da), (3 * bc)), cZ])
439- let dc = assetBalance(cE[bB], cO)
440- let dd = valueOrElse(getInteger(cE[bD], bq(cD)), cQ)
441- let de = ((dd - cQ) / bc)
442- let df = min([cP, (cQ + (3 * bc))])
443- let dg = min([((cP - cQ) / bc), 2])
444- let dh = cc(cD, cE[bC])
445- let di = br(bs, dg)
446- let dj = (cQ + (bc * dg))
447- let dk = (cQ + (bc * (dg - 1)))
448- let dl = fraction(di, (df - dd), bc)
449- let dm = if ((de == dg))
450- then dl
451- else if ((de == (dg - 1)))
425+func cG (cH,cI,cJ,cK) = {
426+ let bI = valueOrErrorMessage(getInteger(cI[bT], bM), "WLGOLD is not issued yet")
427+ let cL = assetBalance(cI[bR], cJ)
428+ let cM = (assetBalance(cI[bT], cJ) - cK)
429+ let cN = assetBalance(cI[bU], cJ)
430+ let cO = assetBalance(cI[bS], cJ)
431+ let cP = cI[bV]
432+ let cQ = (assetBalance(cP, cJ) + valueOrElse(getInteger(cP, bN), 0))
433+ let cR = ((cO + cM) + cQ)
434+ let cS = valueOrErrorMessage(getBinary(cI[bT], "wlg_assetId"), "Not initialized yet")
435+ let cT = lastBlock.timestamp
436+ let cU = valueOrErrorMessage(getInteger(cI[bT], bL), "Not initialized")
437+ let cV = assetBalance(cI[bT], cS)
438+ let cW = fraction(bI, bp, bn)
439+ let cX = valueOrElse(getInteger(cI[bT], bC), cW)
440+ let cY = valueOrElse(getInteger(cI[bT], bB), cU)
441+ let cZ = addressFromStringValue(value(getString(cI[bT], bA)))
442+ let da = min([fraction(cW, (cT - cY), (3 * bs)), cX])
443+ let db = assetBalance(cZ, cS)
444+ let dc = fraction(bI, bq, bn)
445+ let dd = valueOrElse(getInteger(cI[bT], bE), dc)
446+ let de = valueOrElse(getInteger(cI[bT], bD), cU)
447+ let df = min([fraction(dc, (cT - de), (3 * bs)), dd])
448+ let dg = assetBalance(cI[bR], cS)
449+ let dh = valueOrElse(getInteger(cI[bT], bG(cH)), cU)
450+ let di = ((dh - cU) / bs)
451+ let dj = min([cT, (cU + (3 * bs))])
452+ let dk = min([((cT - cU) / bs), 2])
453+ let dl = cw(cH, cI[bS])
454+ let dm = bH(bI, dk)
455+ let dn = (cU + (bs * dk))
456+ let do = (cU + (bs * (dk - 1)))
457+ let dp = fraction(dm, (dj - dh), bs)
458+ let dq = if ((di == dk))
459+ then dp
460+ else if ((di == (dk - 1)))
452461 then {
453- let dn = fraction(br(bs, (dg - 1)), (dj - dd), bc)
454- (dn + dl)
462+ let dr = fraction(bH(bI, (dk - 1)), (dn - dh), bs)
463+ (dr + dp)
455464 }
456465 else {
457- let do = fraction(br(bs, (dg - 2)), (dk - dd), bc)
458- let dn = br(bs, (dg - 1))
459- ((do + dn) + dl)
466+ let ds = fraction(bH(bI, (dk - 2)), (do - dh), bs)
467+ let dr = bH(bI, (dk - 1))
468+ ((ds + dr) + dp)
460469 }
461- let dp = valueOrElse(getInteger(cE[bD], bp), 0)
462- let dq = if ((dh[ck] != 0))
463- then fraction(dm, dh[cl], dh[ck])
470+ let dt = valueOrElse(getInteger(cI[bT], bF), 0)
471+ let du = if ((dl[cE] != 0))
472+ then fraction(dq, dl[cF], dl[cE])
464473 else 0
465- let dr = valueOrElse(getInteger(cE[bD], bu), bi)
466- let ds = fraction(be, max([(cP - dr), 0]), bd)
467- let dt = fraction(ds, bg, aX)
468- let du = fraction(ds, bh, aX)
469- let dv = max([(cP - max([bi, dd])), 0])
470- let dw = if ((dh[ck] != 0))
471- then fraction(fraction(fraction(be, dv, bd), dh[cl], dh[ck]), bf, aX)
474+ let dv = valueOrElse(getInteger(cI[bT], bK), by)
475+ let dw = fraction(bu, max([(cT - dv), 0]), bt)
476+ let dx = fraction(dw, bw, bn)
477+ let dy = fraction(dw, bx, bn)
478+ let dz = max([(cT - max([by, dh])), 0])
479+ let dA = if ((dl[cE] != 0))
480+ then fraction(fraction(fraction(bu, dz, bt), dl[cF], dl[cE]), bv, bn)
472481 else 0
473- let dx = max([bi, cP])
474- let dy = valueOrElse(getInteger(cE[bC], bz), 0)
475-[bs, cR, fraction(cN, aY, bs), cN, cH, cK, cI, cJ, cQ, cU, cS, cT, cW, cX, cY, cZ, db, dc, dg, dp, di, dd, cM, dq, df, ds, dt, du, dw, dx, dh[ck], dy]
482+ let dB = max([by, cT])
483+ let dC = valueOrElse(getInteger(cI[bS], bP), 0)
484+ let dD = valueOrElse(getInteger(cI[bS], bZ), 0)
485+ let dE = valueOrElse(getInteger(cI[bS], ca), 0)
486+ let dF = valueOrElse(getInteger(cI[bS], cb), 0)
487+ let dG = valueOrElse(getInteger(cI[bS], cc(valueOrElse(cH, ""))), 0)
488+[bI, cV, fraction(cR, bo, bI), cR, cL, cO, cM, cN, cU, cY, cW, cX, da, db, dc, dd, df, dg, dk, dt, dm, dh, cQ, du, dj, dw, dx, dy, dA, dB, dl[cE], dC, dD, dE, dF, dG]
476489 }
477490
478491
479-let dz = "profitAddr"
492+let dH = "profitAddr"
480493
481-let dA = "stakersAmountPaidTotal"
494+let dI = "stakersAmountPaidTotal"
482495
483-func dB (P) = ("stakersAmountPaidUser_" + P)
496+func dJ (P) = ("stakersAmountPaidUser_" + P)
484497
485498
486-func dC () = ae(reentrantInvoke(K, "saveLastTx", nil, nil))
499+func dK () = au(reentrantInvoke(K, "saveLastTx", nil, nil))
487500
488501
489-func dD (P) = {
490- let dE = valueOrElse(getInteger(aP(P)), 0)
491- let dF = valueOrElse(getInteger(K, aT(P)), 0)
492- let dG = valueOrElse(getInteger(aQ(P)), dF)
493- let dH = (dG + fraction(dF, (lastBlock.timestamp - dE), e))
494- min([dH, dF])
502+func dL (P) = {
503+ let dM = valueOrElse(getInteger(bf(P)), 0)
504+ let dN = valueOrElse(getInteger(K, bj(P)), 0)
505+ let dO = valueOrElse(getInteger(bg(P)), dN)
506+ let dP = (dO + fraction(dN, (lastBlock.timestamp - dM), e))
507+ min([dP, dN])
495508 }
496509
497510
498-func dI (P) = {
499- let dJ = cC(P, [J, K, L, M, N], k, 0)
500- let dK = bq(P)
501- let dd = valueOrElse(getInteger(dK), 0)
502- let dL = dJ[cw]
503- if ((dd == dL))
511+func dQ (P) = {
512+ let dR = cG(P, [J, K, L, M, N], k, 0)
513+ let dS = bG(P)
514+ let dh = valueOrElse(getInteger(dS), 0)
515+ let dT = dR[ao]
516+ if ((dh == dT))
504517 then $Tuple2(nil, 0)
505518 else {
506- let cP = lastBlock.timestamp
507- let cQ = dJ[cp]
508- let cT = dJ[cq]
509- let dM = (dJ[cr] + dJ[cz])
510- let dN = if ((dM > 0))
511- then [ScriptTransfer(addressFromStringValue(value(getString(aJ))), dM, R)]
519+ let cT = lastBlock.timestamp
520+ let cU = dR[ah]
521+ let cX = dR[ai]
522+ let dU = (dR[aj] + dR[ar])
523+ let dV = if ((dU > 0))
524+ then [ScriptTransfer(addressFromStringValue(value(getString(aZ))), dU, R)]
512525 else nil
513- let cZ = dJ[cs]
514- let dO = dJ[ct]
515- let dP = if ((dO > 0))
516- then [ScriptTransfer(y, dO, R)]
526+ let dd = dR[ak]
527+ let dW = dR[al]
528+ let dX = if ((dW > 0))
529+ then [ScriptTransfer(y, dW, R)]
517530 else nil
518- let dQ = dJ[cy]
519- let dR = if ((dQ > 0))
520- then [ScriptTransfer(addressFromStringValue(value(getString(bj))), dQ, R)]
531+ let dY = dR[aq]
532+ let dZ = if ((dY > 0))
533+ then [ScriptTransfer(addressFromStringValue(value(getString(bz))), dY, R)]
521534 else nil
522- let dq = dJ[cv]
523- let dS = dB(P)
524- let dT = (dq + dJ[cA])
525- let dU = dJ[cx]
526- $Tuple2(((([Reissue(R, dU, true), IntegerEntry(aS, (dJ[cm] + dU)), IntegerEntry(bu, dJ[cB]), IntegerEntry(dS, (valueOrElse(getInteger(dS), 0) + dq)), IntegerEntry(dA, (valueOrElse(getInteger(dA), 0) + dq)), IntegerEntry(aO, (dJ[cu] - dq)), IntegerEntry(aL, ((cT - dM) + dJ[cz])), IntegerEntry(aK, cP), IntegerEntry(aN, (cZ - dO)), IntegerEntry(aM, cP), IntegerEntry(dK, dL)] ++ dN) ++ dP) ++ dR), dT)
535+ let du = dR[an]
536+ let ea = dJ(P)
537+ let eb = (du + dR[as])
538+ let ec = dR[ap]
539+ $Tuple2(((([Reissue(R, ec, true), IntegerEntry(bi, (dR[ae] + ec)), IntegerEntry(bK, dR[at]), IntegerEntry(ea, (valueOrElse(getInteger(ea), 0) + du)), IntegerEntry(dI, (valueOrElse(getInteger(dI), 0) + du)), IntegerEntry(be, (dR[am] - du)), IntegerEntry(bb, ((cX - dU) + dR[ar])), IntegerEntry(ba, cT), IntegerEntry(bd, (dd - dW)), IntegerEntry(bc, cT), IntegerEntry(dS, dT)] ++ dV) ++ dX) ++ dZ), eb)
527540 }
528541 }
529542
530543
531-func dV (P,dW) = {
532- let cP = lastBlock.timestamp
533- let dX = aW(P)
534- let dY = aU(P)
535- let dE = valueOrElse(getInteger(dX), 0)
536- let dZ = valueOrElse(getInteger(dY), 0)
537- let ea = valueOrElse(getInteger(aV), 0)
538- let aB = fraction(fraction(az, dZ, aw), (dE - cP), aI)
539- $Tuple3([IntegerEntry(dX, cP), IntegerEntry(dY, (dZ + dW)), IntegerEntry(aV, (ea + dW))], aB, dZ)
544+func ed (P,ee) = {
545+ let cT = lastBlock.timestamp
546+ let ef = bm(P)
547+ let eg = bk(P)
548+ let dM = valueOrElse(getInteger(ef), 0)
549+ let eh = valueOrElse(getInteger(eg), 0)
550+ let ei = valueOrElse(getInteger(bl), 0)
551+ let aR = fraction(fraction(aP, eh, aM), (dM - cT), aY)
552+ $Tuple3([IntegerEntry(ef, cT), IntegerEntry(eg, (eh + ee)), IntegerEntry(bl, (ei + ee))], aR, eh)
540553 }
541554
542555
543-func eb (P) = {
556+func ej (P) = {
544557 let U = (height / i)
545- let ec = (U - 1)
546- let ed = valueOrElse(getInteger(X(ec)), bH)
547- let ee = valueOrElse(getInteger(Y(ec)), 0)
548- let ef = valueOrElse(getInteger(T(P, ec)), 0)
549- if ((0 >= ef))
558+ let ek = (U - 1)
559+ let el = valueOrElse(getInteger(X(ek)), bX)
560+ let em = valueOrElse(getInteger(Y(ek)), 0)
561+ let en = valueOrElse(getInteger(T(P, ek)), 0)
562+ if ((0 >= en))
550563 then $Tuple2(nil, unit)
551564 else {
552- let eg = valueOrElse(getInteger(V(ec)), 0)
553- if ((0 >= eg))
554- then $Tuple2([DeleteEntry(T(P, ec))], unit)
565+ let eo = valueOrElse(getInteger(V(ek)), 0)
566+ if ((0 >= eo))
567+ then $Tuple2([DeleteEntry(T(P, ek))], unit)
555568 else {
556- let aq = value(value(blockInfoByHeight((U * i))).vrf)
557- let ap = fromBase58String(split(valueOrElse(getString(O(P)), "42_DEFAULT"), "_")[1])
558- let eh = an(eg, ap, aq)
559- if (((ef * ed) > eh))
569+ let aG = value(value(blockInfoByHeight((U * i))).vrf)
570+ let aF = fromBase58String(split(valueOrElse(getString(O(P)), "42_DEFAULT"), "_")[1])
571+ let ep = aD(eo, aF, aG)
572+ if (((en * el) > ep))
560573 then {
561- let ei = invoke(K, "issueNFT", [P, bG], nil)
562- let ej = getString(Z(ec))
563- let ek = if (isDefined(ej))
564- then ((value(ej) + "_") + P)
574+ let eq = invoke(K, "issueNFT", [P, bW], nil)
575+ let er = getString(Z(ek))
576+ let es = if (isDefined(er))
577+ then ((value(er) + "_") + P)
565578 else P
566- $Tuple2([IntegerEntry(Y(ec), (ee + 1)), DeleteEntry(T(P, ec)), StringEntry(Z(ec), ek)], ei)
579+ $Tuple2([IntegerEntry(Y(ek), (em + 1)), DeleteEntry(T(P, ek)), StringEntry(Z(ek), es)], eq)
567580 }
568581 else {
569- let el = (an(9, (base58'29' + ap), aq) + 1)
570- let em = fraction(ef, el, 10)
571- $Tuple2([DeleteEntry(T(P, ec)), IntegerEntry(T(P, U), em)], em)
582+ let et = (aD(9, (base58'29' + aF), aG) + 1)
583+ let eu = fraction(en, et, 10)
584+ $Tuple2([DeleteEntry(T(P, ek)), IntegerEntry(T(P, U), eu)], eu)
572585 }
573586 }
574587 }
575588 }
576589
577590
578-func en (P,eo) = {
591+func ev (P,ew) = {
579592 let U = (height / i)
580- let ep = T(P, U)
581- let eq = split(eo, "_")
582- let er = valueOrElse(getInteger(V(U)), 0)
583- let es = valueOrElse(getInteger(ep), 0)
584- let et = if ((aa(parseIntValue(eq[0])) == parseIntValue(eq[1])))
593+ let ex = T(P, U)
594+ let ey = split(ew, "_")
595+ let ez = valueOrElse(getInteger(V(U)), 0)
596+ let eA = valueOrElse(getInteger(ex), 0)
597+ let eB = if ((aa(parseIntValue(ey[0])) == parseIntValue(ey[1])))
585598 then 1
586599 else 0
587- let eu = valueOrElse(getInteger(W(U)), 0)
588- let ev = if (if ((es == 0))
589- then (et == 1)
600+ let eC = valueOrElse(getInteger(W(U)), 0)
601+ let eD = if (if ((eA == 0))
602+ then (eB == 1)
590603 else false)
591- then [IntegerEntry(W(U), (eu + 1))]
604+ then [IntegerEntry(W(U), (eC + 1))]
592605 else nil
593- $Tuple2(if ((et == 0))
606+ $Tuple2(if ((eB == 0))
594607 then nil
595- else ((ev :+ IntegerEntry(ep, (es + et))) :+ IntegerEntry(V(U), (er + et))), et)
608+ else ((eD :+ IntegerEntry(ex, (eA + eB))) :+ IntegerEntry(V(U), (ez + eB))), eB)
596609 }
597610
598611
599-@Callable(ew)
600-func constructorV1 (ex,ey,cV,ez) = if ((ew.caller != this))
612+@Callable(eE)
613+func constructorV1 (eF,eG,cZ,eH) = if ((eE.caller != this))
601614 then throw("Permission denied")
602615 else if (isDefined(getBinary(Q)))
603616 then throw("Already initialized")
604617 else {
605- let bs = aG
606- let eA = Issue("WLGOLD", "WavesLands Gold investment token", bs, 8, true, unit, 0)
607- let eB = calculateAssetId(eA)
608-[eA, IntegerEntry(aR, lastBlock.timestamp), IntegerEntry(aS, bs), IntegerEntry(dA, 0), IntegerEntry(aO, fraction(aG, aH, b)), BinaryEntry(Q, eB), StringEntry(x(), ex), StringEntry(bj, ey), StringEntry(aJ, cV), StringEntry(dz, ez)]
618+ let bI = aW
619+ let eI = Issue("WLGOLD", "WavesLands Gold investment token", bI, 8, true, unit, 0)
620+ let eJ = calculateAssetId(eI)
621+[eI, IntegerEntry(bh, lastBlock.timestamp), IntegerEntry(bi, bI), IntegerEntry(dI, 0), IntegerEntry(be, fraction(aW, aX, b)), BinaryEntry(Q, eJ), StringEntry(x(), eF), StringEntry(bz, eG), StringEntry(aZ, cZ), StringEntry(dH, eH)]
609622 }
610623
611624
612625
613-@Callable(ew)
614-func constructorV2 (eC) = if ((ew.caller != this))
626+@Callable(eE)
627+func constructorV2 (eK) = if ((eE.caller != this))
615628 then throw("Permission denied")
616- else [StringEntry(w(), eC)]
629+ else [StringEntry(w(), eK)]
617630
618631
619632
620-@Callable(ew)
621-func buyWlg (eD) = {
622- let eE = dC()
623- if ((eE == eE))
624- then if ((size(ew.payments) != 1))
633+@Callable(eE)
634+func buyWlg (eL) = {
635+ let eM = dK()
636+ if ((eM == eM))
637+ then if ((size(eE.payments) != 1))
625638 then throw("exactly 1 payment must be attached")
626639 else {
627- let eF = ew.payments[0]
628- let eG = eF.amount
629- if (if (!(isDefined(eF.assetId)))
640+ let eN = eE.payments[0]
641+ let eO = eN.amount
642+ if (if (!(isDefined(eN.assetId)))
630643 then true
631- else (value(eF.assetId) != k))
644+ else (value(eN.assetId) != k))
632645 then throw("USDT payments only!")
633646 else {
634- let eH = ew.caller
635- let P = toString(eH)
636- if ((d > eG))
637- then throw((("You can trade min " + ah(d, 6)) + " USDT"))
647+ let eP = eE.caller
648+ let P = toString(eP)
649+ if ((d > eO))
650+ then throw((("You can trade min " + ax(d, 6)) + " USDT"))
638651 else {
639- let dJ = cC("", [J, K, L, M, N], k, eG)
640- let eI = dJ[cm]
641- let eJ = dJ[co]
642- let eK = fraction(eJ, 6, 5, CEILING)
643- let eL = fraction(eG, c, eK)
644- let eM = dD(P)
645- if ((eL > eM))
646- then throw((("You can get max " + ah(eM, 8)) + " WLGOLD at the moment"))
647- else if ((eD > eL))
652+ let dR = cG("", [J, K, L, M, N], k, eO)
653+ let eQ = dR[ae]
654+ let eR = dR[ag]
655+ let eS = fraction(eR, 6, 5, CEILING)
656+ let eT = fraction(eO, c, eS)
657+ let eU = dL(P)
658+ if ((eT > eU))
659+ then throw((("You can get max " + ax(eU, 8)) + " WLGOLD at the moment"))
660+ else if ((eL > eT))
648661 then throw("Price changed during operation, please try again")
649662 else {
650- let eN = (eG / 6)
651- $Tuple2([Reissue(R, eL, true), IntegerEntry(aS, (eI + eL)), IntegerEntry(aP(P), lastBlock.timestamp), IntegerEntry(aQ(P), (eM - eL)), ScriptTransfer(addressFromStringValue(value(getString(dz))), eN, k), ScriptTransfer(eH, eL, R)], eE)
663+ let eV = (eO / 6)
664+ $Tuple2([Reissue(R, eT, true), IntegerEntry(bi, (eQ + eT)), IntegerEntry(bf(P), lastBlock.timestamp), IntegerEntry(bg(P), (eU - eT)), ScriptTransfer(addressFromStringValue(value(getString(dH))), eV, k), ScriptTransfer(eP, eT, R)], eM)
652665 }
653666 }
654667 }
655668 }
656669 else throw("Strict value is not equal to itself.")
657670 }
658671
659672
660673
661-@Callable(ew)
662-func buyWlgREADONLY (p,eG) = {
663- let dJ = cC("", [J, K, L, M, N], k, eG)
664- let eJ = dJ[co]
665- let eK = fraction(eJ, 6, 5, CEILING)
666- let eL = fraction(eG, c, eK)
667- let eM = dD(p)
668- let eO = fraction(eM, eK, c)
669- let eN = (eG / 6)
670- $Tuple2(nil, [eL, d, eO, eN])
674+@Callable(eE)
675+func buyWlgREADONLY (p,eO) = {
676+ let dR = cG("", [J, K, L, M, N], k, eO)
677+ let eR = dR[ag]
678+ let eS = fraction(eR, 6, 5, CEILING)
679+ let eT = fraction(eO, c, eS)
680+ let eU = dL(p)
681+ let eW = fraction(eU, eS, c)
682+ let eV = (eO / 6)
683+ $Tuple2(nil, [eT, d, eW, eV])
671684 }
672685
673686
674687
675-@Callable(ew)
676-func sellWlg (eP) = {
677- let eE = dC()
678- if ((eE == eE))
679- then if ((size(ew.payments) != 1))
688+@Callable(eE)
689+func sellWlg (eX) = {
690+ let eM = dK()
691+ if ((eM == eM))
692+ then if ((size(eE.payments) != 1))
680693 then throw("exactly 1 payment must be attached")
681694 else {
682- let eF = ew.payments[0]
683- let eQ = eF.amount
684- let eH = ew.caller
685- let P = toString(eH)
686- let eM = dD(P)
687- if ((eQ > eM))
688- then throw((("You can spend max " + ah(eM, 8)) + " WLGOLD at the moment"))
689- else if (if (!(isDefined(eF.assetId)))
695+ let eN = eE.payments[0]
696+ let eY = eN.amount
697+ let eP = eE.caller
698+ let P = toString(eP)
699+ let eU = dL(P)
700+ if ((eY > eU))
701+ then throw((("You can spend max " + ax(eU, 8)) + " WLGOLD at the moment"))
702+ else if (if (!(isDefined(eN.assetId)))
690703 then true
691- else (value(eF.assetId) != R))
704+ else (value(eN.assetId) != R))
692705 then throw("WLGOLD payments only!")
693706 else {
694- let dJ = cC("", [J, K, L, M, N], k, 0)
695- let eI = dJ[cm]
696- let eR = (dJ[co] / 2)
697- let eG = fraction(eQ, eR, c)
698- if ((d > eG))
699- then throw((("You can trade min " + ah(d, 6)) + " USDT"))
700- else if ((eP > eG))
707+ let dR = cG("", [J, K, L, M, N], k, 0)
708+ let eQ = dR[ae]
709+ let eZ = (dR[ag] / 2)
710+ let eO = fraction(eY, eZ, c)
711+ if ((d > eO))
712+ then throw((("You can trade min " + ax(d, 6)) + " USDT"))
713+ else if ((eX > eO))
701714 then throw("Price changed during operation, please try again")
702715 else {
703- let eN = (eG / 5)
704- $Tuple2([Burn(R, eQ), IntegerEntry(aS, (eI - eQ)), IntegerEntry(aP(P), lastBlock.timestamp), IntegerEntry(aQ(P), (eM - eQ)), ScriptTransfer(addressFromStringValue(value(getString(dz))), eN, k), ScriptTransfer(eH, eG, k)], eE)
716+ let eV = (eO / 5)
717+ $Tuple2([Burn(R, eY), IntegerEntry(bi, (eQ - eY)), IntegerEntry(bf(P), lastBlock.timestamp), IntegerEntry(bg(P), (eU - eY)), ScriptTransfer(addressFromStringValue(value(getString(dH))), eV, k), ScriptTransfer(eP, eO, k)], eM)
705718 }
706719 }
707720 }
708721 else throw("Strict value is not equal to itself.")
709722 }
710723
711724
712725
713-@Callable(ew)
714-func sellWlgREADONLY (p,eQ) = {
715- let eM = dD(p)
716- let dJ = cC("", [J, K, L, M, N], k, 0)
717- let eR = (dJ[co] / 2)
718- let eG = fraction(eQ, eR, c)
719- let eS = fraction(d, c, eR)
720- let eN = (eG / 5)
721- $Tuple2(nil, [eG, eS, eM, eN])
726+@Callable(eE)
727+func sellWlgREADONLY (p,eY) = {
728+ let eU = dL(p)
729+ let dR = cG("", [J, K, L, M, N], k, 0)
730+ let eZ = (dR[ag] / 2)
731+ let eO = fraction(eY, eZ, c)
732+ let fa = fraction(d, c, eZ)
733+ let eV = (eO / 5)
734+ $Tuple2(nil, [eO, fa, eU, eV])
722735 }
723736
724737
725738
726-@Callable(ew)
739+@Callable(eE)
727740 func claim () = {
728- let eE = dC()
729- if ((eE == eE))
730- then if ((size(ew.payments) != 0))
741+ let eM = dK()
742+ if ((eM == eM))
743+ then if ((size(eE.payments) != 0))
731744 then throw("No payments required")
732745 else {
733- let eT = dI(toString(ew.caller))
734- let eU = eT._1
735- let eV = eT._2
736- $Tuple2((eU :+ ScriptTransfer(ew.caller, eV, R)), eE)
746+ let fb = dQ(toString(eE.caller))
747+ let fc = fb._1
748+ let fd = fb._2
749+ $Tuple2((fc :+ ScriptTransfer(eE.caller, fd, R)), eM)
737750 }
738751 else throw("Strict value is not equal to itself.")
739752 }
740753
741754
742755
743-@Callable(ew)
744-func onStakeUnstakeLand (P) = if (if (if ((ew.caller != H))
745- then (ew.caller != I)
756+@Callable(eE)
757+func onStakeUnstakeLand (P) = if (if (if ((eE.caller != H))
758+ then (eE.caller != I)
746759 else false)
747- then (ew.caller != K)
760+ then (eE.caller != K)
748761 else false)
749762 then throw("Permission denied")
750763 else {
751- let eW = dI(P)
752- let eU = eW._1
753- let eV = eW._2
754- $Tuple2(if ((eV > 0))
755- then (eU :+ ScriptTransfer(addressFromStringValue(P), eV, R))
756- else eU, eV)
764+ let fe = dQ(P)
765+ let fc = fe._1
766+ let fd = fe._2
767+ $Tuple2(if ((fd > 0))
768+ then (fc :+ ScriptTransfer(addressFromStringValue(P), fd, R))
769+ else fc, fd)
757770 }
758771
759772
760773
761-@Callable(ew)
762-func burnWlgold (eQ) = if ((ew.caller != K))
774+@Callable(eE)
775+func burnWlgold (eY) = if ((eE.caller != K))
763776 then throw("Permission denied")
764777 else {
765- let dJ = cC("", [J, K, L, M, N], k, 0)
766- if ((eQ > dJ[cn]))
767- then throw(((("Only " + ah(dJ[cn], 8)) + " WLGOLD left on contract, can't burn ") + ah(eQ, 8)))
778+ let dR = cG("", [J, K, L, M, N], k, 0)
779+ if ((eY > dR[af]))
780+ then throw(((("Only " + ax(dR[af], 8)) + " WLGOLD left on contract, can't burn ") + ax(eY, 8)))
768781 else {
769- let eX = (dJ[cm] - eQ)
770- $Tuple2([Burn(R, eQ), IntegerEntry(aS, eX)], eX)
782+ let ff = (dR[ae] - eY)
783+ $Tuple2([Burn(R, eY), IntegerEntry(bi, ff)], ff)
771784 }
772785 }
773786
774787
775788
776-@Callable(ew)
777-func betForTicket (eY) = {
778- let eE = dC()
779- if ((eE == eE))
780- then if ((size(ew.payments) != 0))
789+@Callable(eE)
790+func betForTicket (fg) = {
791+ let eM = dK()
792+ if ((eM == eM))
793+ then if ((size(eE.payments) != 0))
781794 then throw("No payments required")
782795 else {
783- let P = toString(ew.caller)
784- let ec = ((height / i) - 1)
785- let ef = valueOrElse(getInteger(T(P, ec)), 0)
786- let eg = valueOrElse(getInteger(V(ec)), 0)
787- if (if ((ef > 0))
788- then (eg > 0)
796+ let P = toString(eE.caller)
797+ let ek = ((height / i) - 1)
798+ let en = valueOrElse(getInteger(T(P, ek)), 0)
799+ let eo = valueOrElse(getInteger(V(ek)), 0)
800+ if (if ((en > 0))
801+ then (eo > 0)
789802 else false)
790803 then throw("Please open the chest first")
791- else if (((eY / 4) != 0))
804+ else if (((fg / 4) != 0))
792805 then throw("Invalid bet: should be 0..3")
793806 else {
794- let eZ = (height % g)
795- if ((eZ > (g - 3)))
796- then throw((("Cannot bet: the day is almost ended, please wait " + toString((g - eZ))) + " blocks"))
807+ let fh = (height % g)
808+ if ((fh > (g - 3)))
809+ then throw((("Cannot bet: the day is almost ended, please wait " + toString((g - fh))) + " blocks"))
797810 else {
798- let fa = valueOrElse(getInteger(K, by(P)), 0)
799- if ((bI > fa))
800- then throw((("You need to stake at least " + ah(bI, 8)) + " ACRES to bet"))
811+ let fi = valueOrElse(getInteger(K, bO(P)), 0)
812+ if ((bY > fi))
813+ then throw((("You need to stake at least " + ax(bY, 8)) + " ACRES to bet"))
801814 else {
802- let fb = ((height / g) + 1)
803- let fc = S(P)
804- let fd = getString(fc)
805- let fe = StringEntry(fc, ((toString(fb) + "_") + toString(eY)))
806- if (isDefined(fd))
815+ let fj = ((height / g) + 1)
816+ let fk = S(P)
817+ let fl = getString(fk)
818+ let fm = StringEntry(fk, ((toString(fj) + "_") + toString(fg)))
819+ if (isDefined(fl))
807820 then {
808- let ff = value(fd)
809- if ((split(ff, "_")[0] == toString(fb)))
821+ let fn = value(fl)
822+ if ((split(fn, "_")[0] == toString(fj)))
810823 then throw("You already bet for tomorrow")
811824 else {
812- let fg = en(P, ff)
813- $Tuple2((fg._1 :+ fe), fg._2)
825+ let fo = ev(P, fn)
826+ $Tuple2((fo._1 :+ fm), fo._2)
814827 }
815828 }
816- else $Tuple2([fe], 0)
829+ else $Tuple2([fm], 0)
817830 }
818831 }
819832 }
820833 }
821834 else throw("Strict value is not equal to itself.")
822835 }
823836
824837
825838
826-@Callable(ew)
827-func takeWlgXp (P) = if ((ew.caller != H))
839+@Callable(eE)
840+func takeWlgXp (P) = if ((eE.caller != H))
828841 then throw("Permission denied")
829842 else {
830- let fh = dV(P, 0)
831- let eU = fh._1
832- let aB = fh._2
833- $Tuple2(eU, aB)
843+ let fp = ed(P, 0)
844+ let fc = fp._1
845+ let aR = fp._2
846+ $Tuple2(fc, aR)
834847 }
835848
836849
837850
838-@Callable(ew)
851+@Callable(eE)
839852 func checkWlgXpREADONLY (P) = {
840- let fi = dV(P, 0)
841- let fj = fi._1
842- let fk = fi._2
843- let aE = (valueOrElse(getInteger(H, ax(P)), 0) + fk)
844- let fl = aC(valueOrElse(getInteger(H, ay(P)), 0), aE)
845- $Tuple2(nil, (fl :+ aE))
853+ let fq = ed(P, 0)
854+ let fr = fq._1
855+ let fs = fq._2
856+ let aU = (valueOrElse(getInteger(H, aN(P)), 0) + fs)
857+ let ft = aS(valueOrElse(getInteger(H, aO(P)), 0), aU)
858+ $Tuple2(nil, (ft :+ aU))
846859 }
847860
848861
849862
850-@Callable(ew)
851-func setNumPrizes (ed) = if ((ew.caller != this))
863+@Callable(eE)
864+func setNumPrizes (el) = if ((eE.caller != this))
852865 then throw("Permission denied")
853866 else {
854867 let U = (height / i)
855- $Tuple2([IntegerEntry(X(U), ed)], ed)
868+ $Tuple2([IntegerEntry(X(U), el)], el)
856869 }
857870
858871
859872
860-@Callable(ew)
873+@Callable(eE)
861874 func openChest () = if (!(n))
862875 then throw("Temporarily disabled")
863876 else {
864- let eE = dC()
865- if ((eE == eE))
866- then if ((size(ew.payments) != 0))
877+ let eM = dK()
878+ if ((eM == eM))
879+ then if ((size(eE.payments) != 0))
867880 then throw("No payments required")
868881 else {
869- let ec = ((height / i) - 1)
870- let P = toString(ew.caller)
871- let ef = valueOrElse(getInteger(T(P, ec)), 0)
872- if ((0 >= ef))
882+ let ek = ((height / i) - 1)
883+ let P = toString(eE.caller)
884+ let en = valueOrElse(getInteger(T(P, ek)), 0)
885+ if ((0 >= en))
873886 then throw("No gems to open the chest")
874- else eb(P)
887+ else ej(P)
875888 }
876889 else throw("Strict value is not equal to itself.")
877890 }
878891
879892
880893
881-@Callable(ew)
882-func addGemsFor (P,et) = if ((ew.caller != this))
894+@Callable(eE)
895+func addGemsFor (P,eB) = if ((eE.caller != this))
883896 then throw("Permission denied")
884897 else {
885898 let U = (height / i)
886- let ep = T(P, U)
887- let er = valueOrElse(getInteger(V(U)), 0)
888- let es = valueOrElse(getInteger(ep), 0)
889- let eu = valueOrElse(getInteger(W(U)), 0)
890- let ev = if (if ((es == 0))
891- then (et == 1)
899+ let ex = T(P, U)
900+ let ez = valueOrElse(getInteger(V(U)), 0)
901+ let eA = valueOrElse(getInteger(ex), 0)
902+ let eC = valueOrElse(getInteger(W(U)), 0)
903+ let eD = if (if ((eA == 0))
904+ then (eB == 1)
892905 else false)
893- then [IntegerEntry(W(U), (eu + 1))]
906+ then [IntegerEntry(W(U), (eC + 1))]
894907 else nil
895- $Tuple2(((ev :+ IntegerEntry(ep, (es + et))) :+ IntegerEntry(V(U), (er + et))), et)
908+ $Tuple2(((eD :+ IntegerEntry(ex, (eA + eB))) :+ IntegerEntry(V(U), (ez + eB))), eB)
896909 }
897910
898911

github/deemru/w8io/169f3d6 
308.58 ms