tx · HuF1WqDWVwEhzJW5szDdSMUcFvV6S2h9WP7Xi1d8nnob

3N8E9LU71MDkdP8FWtbP4TBXCNhoc15hWfs:  -0.02500000 Waves

2023.03.17 17:08 [2494094] smart account 3N8E9LU71MDkdP8FWtbP4TBXCNhoc15hWfs > SELF 0.00000000 Waves

{ "type": 13, "id": "HuF1WqDWVwEhzJW5szDdSMUcFvV6S2h9WP7Xi1d8nnob", "fee": 2500000, "feeAssetId": null, "timestamp": 1679062168137, "version": 2, "chainId": 84, "sender": "3N8E9LU71MDkdP8FWtbP4TBXCNhoc15hWfs", "senderPublicKey": "2EDucEDvqYfn6hdx4PbvykQFRoNgPMWX6SiVPjM8AyxM", "proofs": [ "2hvpEXrSqYBE3teE39oQcw5cKfqcshbrvj4a6WUYp9dhvuhHEUznBFjxoijssWaJLjapiASt4DXUN1c5BERgSnxh", "5sfCdxmBvpV5YtKsuUMp7gEY2tNLqHzwEqfxN5jn5t9qQZXhDYXqUpaQT86kKqL8TibW6Q4qp4WZNwgoVFmcma2Y" ], "script": "base64:BgIiCAISAwoBCBIAEgASAwoBARIAEgASABIGCgQYEQEBEgASAFgAB2tBY3RpdmUCBmFjdGl2ZQALa0FjdGl2ZUdsb2ICFGFjdGl2ZV9hbGxfY29udHJhY3RzAAZrQ2F1c2UCDnNodXRkb3duX2NhdXNlAA1rTGFzdEludGVyZXN0Ag1sYXN0X2ludGVyZXN0ABFrVXNlckxhc3RJbnRlcmVzdAIOX2xhc3RfaW50ZXJlc3QAD2tVc2VyU1dPUExvY2tlZAIMX1NXT1BfYW1vdW50ABBrVG90YWxTV09QTG9ja2VkAhF0b3RhbF9TV09QX2Ftb3VudAAVa1VzZXJTd29wVW5sb2NrSGVpZ2h0AhNfU1dPUF91bmxvY2tfaGVpZ2h0ABBrVXNlckdTd29wTG9ja2VkAg1fR1N3b3BfYW1vdW50ABFrVG90YWxHU3dvcExvY2tlZAISdG90YWxfR1N3b3BfYW1vdW50ABJrVXNlclRvdGFsVm90ZVNXT1ACFl91c2VyX3RvdGFsX3ZvdGVfZ1NXT1AAFmtVc2VyQXZhaWxhYmxlRm9yQ2xhaW0CGV91c2VyX2F2YWlsYWJsZV9mb3JfY2xhaW0AGmtSZXdhcmRQb29sRnJhY3Rpb25DdXJyZW50Ah1fY3VycmVudF9wb29sX2ZyYWN0aW9uX3Jld2FyZAAba1Jld2FyZFBvb2xGcmFjdGlvblByZXZpb3VzAh5fcHJldmlvdXNfcG9vbF9mcmFjdGlvbl9yZXdhcmQAE2tIZWlnaHRQb29sRnJhY3Rpb24CGl9wb29sX3Jld2FyZF91cGRhdGVfaGVpZ2h0ABNrUmV3YXJkVXBkYXRlSGVpZ2h0AhRyZXdhcmRfdXBkYXRlX2hlaWdodAAia1Jld2FyZFVwZGF0ZUZpcnN0UGFnaW5hdGlvbkhlaWdodAIlcmV3YXJkX3VwZGF0ZV9oZWlnaHRfZmlyc3RfcGFnaW5hdGlvbgATa05vVm90aW5nRm9yTmV3UG9vbAIIX3ZvdGVfbm8AFGtZZXNWb3RpbmdGb3JOZXdQb29sAglfdm90ZV95ZXMAGWtTdGF0dXNPZlZvdGluZ0Zvck5ld1Bvb2wCB19zdGF0dXMAHWtIZWlnaHRPZlBvb2xWb3RpbmdGb3JOZXdQb29sAg5fZmluaXNoX2hlaWdodAAPYWN0aXZlVm90ZUZpcnN0AhR2b3RpbmdfYWN0aXZlX2NlbGxfMQAQYWN0aXZlVm90ZVNlY29uZAIUdm90aW5nX2FjdGl2ZV9jZWxsXzIAD2FjdGl2ZVZvdGVUaGlyZAIUdm90aW5nX2FjdGl2ZV9jZWxsXzMAC2tUZW1wQ3VyU3VtAhJzdW1fcmV3YXJkX2N1cnJlbnQAF2tMYXVuY2hwYWRCb3VnaHRUaWNrZXRzAg9fYm91Z2h0X3RpY2tldHMAGGtMYXVuY2hwYWRTd29wUGVyVGlja2V0cwIQX3N3b3BfcGVyX3RpY2tldAASa0xhdW5jaHBhZEFjdGl2ZUlkAhNsYXVuY2hwYWRfYWN0aXZlX2lkABJrTGF1bmNocGFkRHVyYXRpb24CCV9kdXJhdGlvbgAVa0xhdW5jaHBhZFN0YXJ0SGVpZ2h0Ag1fc3RhcnRfaGVpZ2h0AAxrU3RhcnRIZWlnaHQCDHN0YXJ0X2hlaWdodAALa0Jhc2VQZXJpb2QCC2Jhc2VfcGVyaW9kAA1rUGVyaW9kTGVuZ3RoAg1wZXJpb2RfbGVuZ3RoAA9rVXNlclRvdGFsU3RydWMCEV91c2VyX3RvdGFsX3N0cnVjABprTGF1Y2hwYWRGcmVlelN3b3BEdXJhdGlvbgIVX2ZyZWV6ZV9zd29wX2R1cmF0aW9uAAdrU1dPUGlkAgdTV09QX2lkAAtrQWlyZHJvcEZlZQILYWlyZHJvcF9mZWUADWtBZG1pblB1YktleTECC2FkbWluX3B1Yl8xAA1rQWRtaW5QdWJLZXkyAgthZG1pbl9wdWJfMgANa0FkbWluUHViS2V5MwILYWRtaW5fcHViXzMAD2tNb25leUJveFB1YktleQIRbW9uZXlfYm94X3B1Yl9rZXkADGtGYXJtaW5nQWRkcgIPZmFybWluZ19hZGRyZXNzAAtrVm90aW5nQWRkcgIOdm90aW5nX2FkZHJlc3MAEmtWb3RpbmdOZXdQb29sQWRkcgIXdm90aW5nX25ld19wb29sX2FkZHJlc3MADmtMYXVuY2hwYWRBZGRyAhFsYXVuY2hwYWRfYWRkcmVzcwALa09yYWNsZVBvb2wCBXBvb2xfAAZvcmFjbGUJAQdBZGRyZXNzAQEaAVRIE5cMwNMzzCUygLYp96dkaICr48x7S5kBE2dldEJhc2U1OEZyb21PcmFjbGUBA2tleQQHJG1hdGNoMAkAnQgCBQZvcmFjbGUFA2tleQMJAAECBQckbWF0Y2gwAgZTdHJpbmcEBnN0cmluZwUHJG1hdGNoMAkA2QQBBQZzdHJpbmcEB25vdGhpbmcFByRtYXRjaDAJAAIBCQCsAgIFA2tleQIIaXMgZW1wdHkADGFkbWluUHViS2V5MQkBE2dldEJhc2U1OEZyb21PcmFjbGUBBQ1rQWRtaW5QdWJLZXkxAAxhZG1pblB1YktleTIJARNnZXRCYXNlNThGcm9tT3JhY2xlAQUNa0FkbWluUHViS2V5MgAMYWRtaW5QdWJLZXkzCQETZ2V0QmFzZTU4RnJvbU9yYWNsZQEFDWtBZG1pblB1YktleTMADm1vbmV5Qm94UHViS2V5CQETZ2V0QmFzZTU4RnJvbU9yYWNsZQEFD2tNb25leUJveFB1YktleQALZmFybWluZ0FkZHIJAQdBZGRyZXNzAQkBE2dldEJhc2U1OEZyb21PcmFjbGUBBQxrRmFybWluZ0FkZHIACnZvdGluZ0FkZHIJAQdBZGRyZXNzAQkBE2dldEJhc2U1OEZyb21PcmFjbGUBBQtrVm90aW5nQWRkcgARdm90aW5nTmV3UG9vbEFkZHIJAQdBZGRyZXNzAQkBE2dldEJhc2U1OEZyb21PcmFjbGUBBRJrVm90aW5nTmV3UG9vbEFkZHIADWxhdW5jaHBhZEFkZHIJAQdBZGRyZXNzAQkBE2dldEJhc2U1OEZyb21PcmFjbGUBBQ5rTGF1bmNocGFkQWRkcgAUbG9ja1N3b3BCbG9ja3NBbW91bnQJAGgCAPZOAAQABFNXT1AJANkEAQkBEUBleHRyTmF0aXZlKDEwNTMpAgULZmFybWluZ0FkZHIFB2tTV09QaWQACnNjYWxlVmFsdWUAgMLXLwAOdG90YWxWb3RlU2hhcmUAgMivoCUACWZlZVNhY2xlNgDAhD0ACmJhc2VQZXJpb2QJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQp2b3RpbmdBZGRyBQtrQmFzZVBlcmlvZAIkRW1wdHkga0Jhc2VQZXJpb2QgYXQgdm90aW5nIGNvbnRyYWN0AAtzdGFydEhlaWdodAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFCnZvdGluZ0FkZHIFDGtTdGFydEhlaWdodAIlRW1wdHkga1N0YXJ0SGVpZ2h0IGF0IHZvdGluZyBjb250cmFjdAAMcGVyaW9kTGVuZ3RoCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUKdm90aW5nQWRkcgUNa1BlcmlvZExlbmd0aAImRW1wdHkga1BlcmlvZExlbmd0aCBhdCB2b3RpbmcgY29udHJhY3QAD2ZpcnN0QWN0aXZlVm90ZQkBC3ZhbHVlT3JFbHNlAgkAnQgCBRF2b3RpbmdOZXdQb29sQWRkcgUPYWN0aXZlVm90ZUZpcnN0AgAAEHNlY29uZEFjdGl2ZVZvdGUJAQt2YWx1ZU9yRWxzZQIJAJ0IAgURdm90aW5nTmV3UG9vbEFkZHIFEGFjdGl2ZVZvdGVTZWNvbmQCAAAPdGhpcmRBY3RpdmVWb3RlCQELdmFsdWVPckVsc2UCCQCdCAIFEXZvdGluZ05ld1Bvb2xBZGRyBQ9hY3RpdmVWb3RlVGhpcmQCAAAGYWN0aXZlCQELdmFsdWVPckVsc2UCCQCbCAIFBHRoaXMFB2tBY3RpdmUGAAphY3RpdmVHbG9iCQELdmFsdWVPckVsc2UCCQCbCAIFBm9yYWNsZQULa0FjdGl2ZUdsb2IGABBjdXJyVm90aW5nUGVyaW9kCQBkAgUKYmFzZVBlcmlvZAkAaQIJAGUCBQZoZWlnaHQFC3N0YXJ0SGVpZ2h0BQxwZXJpb2RMZW5ndGgBB3N1c3BlbmQBBWNhdXNlCQDMCAIJAQxCb29sZWFuRW50cnkCBQdrQWN0aXZlBwkAzAgCCQELU3RyaW5nRW50cnkCBQZrQ2F1c2UFBWNhdXNlBQNuaWwBCGlzQWN0aXZlAAMDBQZhY3RpdmUFCmFjdGl2ZUdsb2IHBQR1bml0CQACAQIfREFwcCBpcyBpbmFjdGl2ZSBhdCB0aGlzIG1vbWVudAELaXNBZG1pbkNhbGwBAWkDCQEPY29udGFpbnNFbGVtZW50AgkAzAgCBQxhZG1pblB1YktleTEJAMwIAgUMYWRtaW5QdWJLZXkyCQDMCAIFDGFkbWluUHViS2V5MwUDbmlsCAUBaQ9jYWxsZXJQdWJsaWNLZXkFBHVuaXQJAAIBAiFPbmx5IGFkbWluIGNhbiBjYWxsIHRoaXMgZnVuY3Rpb24BE2dldExhc3RJbnRlcmVzdEluZm8ACQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFDWtMYXN0SW50ZXJlc3QAAAESZ2V0VG90YWxMb2NrZWRJbmZvAAQPdG90YWxTd29wTG9ja2VkCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFEGtUb3RhbFNXT1BMb2NrZWQAAAQQdG90YWxHU3dvcExvY2tlZAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBRFrVG90YWxHU3dvcExvY2tlZAUPdG90YWxTd29wTG9ja2VkCQCUCgIFD3RvdGFsU3dvcExvY2tlZAUQdG90YWxHU3dvcExvY2tlZAERZ2V0VXNlckxvY2tlZEluZm8BBHVzZXIEDnVzZXJTd29wTG9ja2VkCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgUEdXNlcgUPa1VzZXJTV09QTG9ja2VkAAAED3VzZXJHU3dvcExvY2tlZAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIFBHVzZXIFEGtVc2VyR1N3b3BMb2NrZWQFDnVzZXJTd29wTG9ja2VkCQCUCgIFDnVzZXJTd29wTG9ja2VkBQ91c2VyR1N3b3BMb2NrZWQBE2dldFVzZXJJbnRlcmVzdEluZm8CBHVzZXIMbGFzdEludGVyZXN0BAskdDA0ODU1NDkxOAkBEWdldFVzZXJMb2NrZWRJbmZvAQUEdXNlcgQOdXNlclNXT1BBbW91bnQIBQskdDA0ODU1NDkxOAJfMQQPdXNlckdTd29wQW1vdW50CAULJHQwNDg1NTQ5MTgCXzIEEHVzZXJMYXN0SW50ZXJlc3QJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICBQR1c2VyBRFrVXNlckxhc3RJbnRlcmVzdAUMbGFzdEludGVyZXN0CQCVCgMFEHVzZXJMYXN0SW50ZXJlc3QFDnVzZXJTV09QQW1vdW50BQ91c2VyR1N3b3BBbW91bnQBGGdldFVzZXJBdmFpbGFibGVGb3JDbGFpbQEEdXNlcgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIFBHVzZXIFFmtVc2VyQXZhaWxhYmxlRm9yQ2xhaW0AAAEgZ2V0VXNlclRvdGFsVm90ZUFtb3VudEZvck9uZVBvb2wCBHBvb2wEdXNlcgQGdm90aW5nCQELdmFsdWVPckVsc2UCCQCaCAIFEXZvdGluZ05ld1Bvb2xBZGRyBQRwb29sAP///////////wEEDmhlaWdodE9mVm90aW5nCQELdmFsdWVPckVsc2UCCQCaCAIFEXZvdGluZ05ld1Bvb2xBZGRyCQCsAgIJAKQDAQUGdm90aW5nBR1rSGVpZ2h0T2ZQb29sVm90aW5nRm9yTmV3UG9vbAAABA5zdGF0dXNPZlZvdGluZwkBC3ZhbHVlT3JFbHNlAgkAmwgCBRF2b3RpbmdOZXdQb29sQWRkcgkArAICCQCkAwEFBnZvdGluZwUZa1N0YXR1c09mVm90aW5nRm9yTmV3UG9vbAYEDWN1cnJlbnRIZWlnaHQFBmhlaWdodAMJAGYCAAAFBnZvdGluZwAAAwkBASEBBQ5zdGF0dXNPZlZvdGluZwAAAwkAZgIFDmhlaWdodE9mVm90aW5nBQ1jdXJyZW50SGVpZ2h0CQBkAgkBC3ZhbHVlT3JFbHNlAgkAmggCBRF2b3RpbmdOZXdQb29sQWRkcgkArAICCQCsAgIJAKwCAgkApQgBBQR1c2VyAgFfCQCkAwEFBnZvdGluZwUUa1llc1ZvdGluZ0Zvck5ld1Bvb2wAAAkBC3ZhbHVlT3JFbHNlAgkAmggCBRF2b3RpbmdOZXdQb29sQWRkcgkArAICCQCsAgIJAKwCAgkApQgBBQR1c2VyAgFfCQCkAwEFBnZvdGluZwUTa05vVm90aW5nRm9yTmV3UG9vbAAAAAABIGdldFVzZXJUb3RhbFZvdGVGb3JOZXdQb29sQW1vdW50AQR1c2VyBAxsaXN0T2ZWb3RpbmcJAMwIAgkBIGdldFVzZXJUb3RhbFZvdGVBbW91bnRGb3JPbmVQb29sAgUPZmlyc3RBY3RpdmVWb3RlBQR1c2VyCQDMCAIJASBnZXRVc2VyVG90YWxWb3RlQW1vdW50Rm9yT25lUG9vbAIFEHNlY29uZEFjdGl2ZVZvdGUFBHVzZXIJAMwIAgkBIGdldFVzZXJUb3RhbFZvdGVBbW91bnRGb3JPbmVQb29sAgUPdGhpcmRBY3RpdmVWb3RlBQR1c2VyBQNuaWwJAJYDAQUMbGlzdE9mVm90aW5nARhnZXRVc2VyQmxvY2tlZEluTGF1Y2hwYWQBBHVzZXIECmxhdWNocGFkSWQJAKQDAQkBC3ZhbHVlT3JFbHNlAgkAmggCBQ1sYXVuY2hwYWRBZGRyBRJrTGF1bmNocGFkQWN0aXZlSWQAAAMJAAACBQpsYXVjaHBhZElkAgEwAAAEDGxTdGFydEhlaWdodAkBC3ZhbHVlT3JFbHNlAgkAmggCBQ1sYXVuY2hwYWRBZGRyCQCsAgIFCmxhdWNocGFkSWQFFWtMYXVuY2hwYWRTdGFydEhlaWdodAAABAlsRHVyYXRpb24JAQt2YWx1ZU9yRWxzZQIJAJoIAgUNbGF1bmNocGFkQWRkcgkArAICBQpsYXVjaHBhZElkBRJrTGF1bmNocGFkRHVyYXRpb24AAAQTbEZyZWV6ZVN3b3BEdXJhdGlvbgkBC3ZhbHVlT3JFbHNlAgkAmggCBQ1sYXVuY2hwYWRBZGRyCQCsAgIFCmxhdWNocGFkSWQFGmtMYXVjaHBhZEZyZWV6U3dvcER1cmF0aW9uAAAEDmJsb2NrRW5kSGVpZ2h0CQBkAgkAZAIFDGxTdGFydEhlaWdodAUJbER1cmF0aW9uBRNsRnJlZXplU3dvcER1cmF0aW9uAwkAZgIFBmhlaWdodAUOYmxvY2tFbmRIZWlnaHQAAAQNYm91Z2h0VGlja2V0cwkBC3ZhbHVlT3JFbHNlAgkAmggCBQ1sYXVuY2hwYWRBZGRyCQCsAgIJAKwCAgkArAICCQClCAEFBHVzZXICAV8FCmxhdWNocGFkSWQFF2tMYXVuY2hwYWRCb3VnaHRUaWNrZXRzAAAEDXN3b3BQZXJUaWNrZXQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUNbGF1bmNocGFkQWRkcgkArAICBQpsYXVjaHBhZElkBRhrTGF1bmNocGFkU3dvcFBlclRpY2tldHMAAAkAaAIFDWJvdWdodFRpY2tldHMFDXN3b3BQZXJUaWNrZXQBEGdldFVzZXJUb3RhbFZvdGUBBHVzZXIDCQEJaXNEZWZpbmVkAQkAnQgCBQp2b3RpbmdBZGRyCQCsAgIJAKUIAQUEdXNlcgUPa1VzZXJUb3RhbFN0cnVjCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgkAtQkCCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUKdm90aW5nQWRkcgkArAICCQClCAEFBHVzZXIFD2tVc2VyVG90YWxTdHJ1YwIVRW1wdHkga1VzZXJUb3RhbFN0cnVjAgFfAAAJAQt2YWx1ZU9yRWxzZQIJAJoIAgUKdm90aW5nQWRkcgkArAICCQClCAEFBHVzZXIFEmtVc2VyVG90YWxWb3RlU1dPUAAAARNnZXRQb29sVXBkYXRlSGVpZ2h0AQRwb29sCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgUEcG9vbAUTa0hlaWdodFBvb2xGcmFjdGlvbgAAARhpc0RlZmluZVBvb2xVcGRhdGVIZWlnaHQBBHBvb2wJAQlpc0RlZmluZWQBCQCaCAIFBHRoaXMJAKwCAgUEcG9vbAUTa0hlaWdodFBvb2xGcmFjdGlvbgEQZ2V0Q3VyUG9vbFdlaWdodAEEcG9vbAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIFBHBvb2wFGmtSZXdhcmRQb29sRnJhY3Rpb25DdXJyZW50AAABEWdldFByZXZQb29sV2VpZ2h0AQRwb29sCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgUEcG9vbAUba1Jld2FyZFBvb2xGcmFjdGlvblByZXZpb3VzAAABCWNsYWltQ2FsYwEEdXNlcgQMbGFzdEludGVyZXN0CQETZ2V0TGFzdEludGVyZXN0SW5mbwAECyR0MDgzNDM4NDQwCQETZ2V0VXNlckludGVyZXN0SW5mbwIFBHVzZXIFDGxhc3RJbnRlcmVzdAQQdXNlckxhc3RJbnRlcmVzdAgFCyR0MDgzNDM4NDQwAl8xBA51c2VyU1dPUExvY2tlZAgFCyR0MDgzNDM4NDQwAl8yBA91c2VyR1N3b3BBbW91bnQIBQskdDA4MzQzODQ0MAJfMwQLY2xhaW1BbW91bnQJAGsDBQ91c2VyR1N3b3BBbW91bnQJAGUCBQxsYXN0SW50ZXJlc3QFEHVzZXJMYXN0SW50ZXJlc3QFCnNjYWxlVmFsdWUED3VzZXJOZXdJbnRlcmVzdAUMbGFzdEludGVyZXN0CQCUCgIFD3VzZXJOZXdJbnRlcmVzdAULY2xhaW1BbW91bnQBDGlzT3JhY2xlUG9vbAELcG9vbEFkZHJlc3MDCQEJaXNEZWZpbmVkAQkAnQgCBQZvcmFjbGUJAKwCAgULa09yYWNsZVBvb2wFC3Bvb2xBZGRyZXNzBQR1bml0CQACAQIbREFwcCBpcyBub3QgcmVnaXN0ZXJlZCBwb29sCgFpAQdhZGRQb29sAQtwb29sQWRkcmVzcwkBC3ZhbHVlT3JFbHNlAgkBC2lzQWRtaW5DYWxsAQUBaQkBC3ZhbHVlT3JFbHNlAgkBCGlzQWN0aXZlAAkBC3ZhbHVlT3JFbHNlAgkBDGlzT3JhY2xlUG9vbAEFC3Bvb2xBZGRyZXNzAwkBCWlzRGVmaW5lZAEJAJoIAgUEdGhpcwkArAICBQtwb29sQWRkcmVzcwUaa1Jld2FyZFBvb2xGcmFjdGlvbkN1cnJlbnQJAAIBAhpQb29sIGFscmVhZHkgaW4gZ292ZXJuYW5jZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQtwb29sQWRkcmVzcwUaa1Jld2FyZFBvb2xGcmFjdGlvbkN1cnJlbnQAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQtwb29sQWRkcmVzcwUba1Jld2FyZFBvb2xGcmFjdGlvblByZXZpb3VzAAAJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgULcG9vbEFkZHJlc3MFE2tIZWlnaHRQb29sRnJhY3Rpb24JARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMFE2tSZXdhcmRVcGRhdGVIZWlnaHQFA25pbAFpAQdhaXJEcm9wAAkBC3ZhbHVlT3JFbHNlAgkBCGlzQWN0aXZlAAQLJHQwOTMzOTk0MTQJAJQKAggJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAQJcG10QW1vdW50CAULJHQwOTMzOTk0MTQCXzEECnBtdEFzc2V0SWQIBQskdDA5MzM5OTQxNAJfMgMJAQIhPQIFCnBtdEFzc2V0SWQFBFNXT1AJAAIBAhRJbmNvcnJlY3QgcG10QXNzZXRJZAQLJHQwOTUwNTk1NjcJARJnZXRUb3RhbExvY2tlZEluZm8ABA90b3RhbFNXT1BMb2NrZWQIBQskdDA5NTA1OTU2NwJfMQQQdG90YWxHU3dvcExvY2tlZAgFCyR0MDk1MDU5NTY3Al8yBAxsYXN0SW50ZXJlc3QJARNnZXRMYXN0SW50ZXJlc3RJbmZvAAQLaW50ZXJlc3ROZXcJAGQCBQxsYXN0SW50ZXJlc3QJAGsDBQlwbXRBbW91bnQFCnNjYWxlVmFsdWUFEHRvdGFsR1N3b3BMb2NrZWQJAMwIAgkBDEludGVnZXJFbnRyeQIFDWtMYXN0SW50ZXJlc3QFC2ludGVyZXN0TmV3BQNuaWwBaQEIbG9ja1NXT1AACQELdmFsdWVPckVsc2UCCQEIaXNBY3RpdmUABAskdDA5ODUzOTkyOAkAlAoCCAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAgJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkBAlwbXRBbW91bnQIBQskdDA5ODUzOTkyOAJfMQQKcG10QXNzZXRJZAgFCyR0MDk4NTM5OTI4Al8yAwkBAiE9AgUKcG10QXNzZXRJZAUEU1dPUAkAAgECFEluY29ycmVjdCBwbXRBc3NldElkBAR1c2VyCQClCAEIBQFpBmNhbGxlcgQMbGFzdEludGVyZXN0CQETZ2V0TGFzdEludGVyZXN0SW5mbwAEDSR0MDEwMDc5MTAxNDIJARFnZXRVc2VyTG9ja2VkSW5mbwEFBHVzZXIEDnVzZXJTV09QTG9ja2VkCAUNJHQwMTAwNzkxMDE0MgJfMQQPdXNlckdTd29wTG9ja2VkCAUNJHQwMTAwNzkxMDE0MgJfMgQNJHQwMTAxNDcxMDIwOAkBCWNsYWltQ2FsYwEFBHVzZXIED3VzZXJOZXdJbnRlcmVzdAgFDSR0MDEwMTQ3MTAyMDgCXzEEFGNsYWltQW1vdW50QXZhaWxhYmxlCAUNJHQwMTAxNDcxMDIwOAJfMgQRYXZhaWxhYmxlRm9yQ2xhaW0JARhnZXRVc2VyQXZhaWxhYmxlRm9yQ2xhaW0BBQR1c2VyBBRhdmFpbGFibGVGb3JDbGFpbU5ldwkAZAIFEWF2YWlsYWJsZUZvckNsYWltBRRjbGFpbUFtb3VudEF2YWlsYWJsZQQRdXNlclNXT1BMb2NrZWROZXcJAGQCBQ51c2VyU1dPUExvY2tlZAUJcG10QW1vdW50BBJ1c2VyR1N3b3BMb2NrZWROZXcJAGQCBQ91c2VyR1N3b3BMb2NrZWQFCXBtdEFtb3VudAQNJHQwMTA0NTYxMDUxOAkBEmdldFRvdGFsTG9ja2VkSW5mbwAED3RvdGFsU1dPUExvY2tlZAgFDSR0MDEwNDU2MTA1MTgCXzEEEHRvdGFsR1N3b3BMb2NrZWQIBQ0kdDAxMDQ1NjEwNTE4Al8yBBJ0b3RhbFNXT1BMb2NrZWROZXcJAGQCBQ90b3RhbFNXT1BMb2NrZWQFCXBtdEFtb3VudAQTdG90YWxHU3dvcExvY2tlZE5ldwkAZAIFEHRvdGFsR1N3b3BMb2NrZWQFCXBtdEFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQR1c2VyBRVrVXNlclN3b3BVbmxvY2tIZWlnaHQJAGQCBQZoZWlnaHQFFGxvY2tTd29wQmxvY2tzQW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHVzZXIFEWtVc2VyTGFzdEludGVyZXN0BQ91c2VyTmV3SW50ZXJlc3QJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEdXNlcgUPa1VzZXJTV09QTG9ja2VkBRF1c2VyU1dPUExvY2tlZE5ldwkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQR1c2VyBRBrVXNlckdTd29wTG9ja2VkBRJ1c2VyR1N3b3BMb2NrZWROZXcJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEdXNlcgUWa1VzZXJBdmFpbGFibGVGb3JDbGFpbQUUYXZhaWxhYmxlRm9yQ2xhaW1OZXcJAMwIAgkBDEludGVnZXJFbnRyeQIFEGtUb3RhbFNXT1BMb2NrZWQFEnRvdGFsU1dPUExvY2tlZE5ldwkAzAgCCQEMSW50ZWdlckVudHJ5AgURa1RvdGFsR1N3b3BMb2NrZWQFE3RvdGFsR1N3b3BMb2NrZWROZXcFA25pbAFpAQx3aXRoZHJhd1NXT1ABDndpdGhkcmF3QW1vdW50CQELdmFsdWVPckVsc2UCCQEIaXNBY3RpdmUABAR1c2VyCQClCAEIBQFpBmNhbGxlcgQMdW5sb2NrSGVpZ2h0CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgUEdXNlcgUVa1VzZXJTd29wVW5sb2NrSGVpZ2h0AAADCQBnAgAABQ53aXRoZHJhd0Ftb3VudAkAAgECE3dpdGhkcmF3QW1vdW50IDw9IDADCQBmAgUMdW5sb2NrSGVpZ2h0BQZoZWlnaHQJAAIBCQCsAgICGFlvdSBjYW4ndCB3aXRoZHJhdyB0aWxsIAkApAMBBQx1bmxvY2tIZWlnaHQEDSR0MDExNDk2MTE1NTgJARJnZXRUb3RhbExvY2tlZEluZm8ABA90b3RhbFNXT1BMb2NrZWQIBQ0kdDAxMTQ5NjExNTU4Al8xBBB0b3RhbEdTd29wTG9ja2VkCAUNJHQwMTE0OTYxMTU1OAJfMgQNJHQwMTE1NjMxMTYyNgkBEWdldFVzZXJMb2NrZWRJbmZvAQUEdXNlcgQOdXNlclNXT1BMb2NrZWQIBQ0kdDAxMTU2MzExNjI2Al8xBA91c2VyR1N3b3BMb2NrZWQIBQ0kdDAxMTU2MzExNjI2Al8yBA0kdDAxMTYzMTExNjkyCQEJY2xhaW1DYWxjAQUEdXNlcgQPdXNlck5ld0ludGVyZXN0CAUNJHQwMTE2MzExMTY5MgJfMQQUY2xhaW1BbW91bnRBdmFpbGFibGUIBQ0kdDAxMTYzMTExNjkyAl8yBBN1c2VyVG90YWxWb3RlQW1vdW50CQEQZ2V0VXNlclRvdGFsVm90ZQEIBQFpBmNhbGxlcgQYdXNlclZvdGVBbW91bnRGb3JOZXdQb29sCQEgZ2V0VXNlclRvdGFsVm90ZUZvck5ld1Bvb2xBbW91bnQBCAUBaQZjYWxsZXIEEmJsb2NrZWRJbkxhdW5jaHBhZAkBGGdldFVzZXJCbG9ja2VkSW5MYXVjaHBhZAEIBQFpBmNhbGxlcgMDCQBmAgAABRN1c2VyVG90YWxWb3RlQW1vdW50BgkAZgIAAAUYdXNlclZvdGVBbW91bnRGb3JOZXdQb29sCQACAQIydXNlclZvdGVBbW91bnQgPCAwIHx8IHVzZXJWb3RlQW1vdW50Rm9yTmV3UG9vbCA8IDAEEmF2YWlsYWJsZVRvVW5zdGFrZQkAZQIFDnVzZXJTV09QTG9ja2VkCQCWAwEJAMwIAgUYdXNlclZvdGVBbW91bnRGb3JOZXdQb29sCQDMCAIFE3VzZXJUb3RhbFZvdGVBbW91bnQJAMwIAgUSYmxvY2tlZEluTGF1bmNocGFkBQNuaWwDCQBmAgUOd2l0aGRyYXdBbW91bnQFEmF2YWlsYWJsZVRvVW5zdGFrZQkAAgECI3dpdGhkcmF3QW1vdW50ID4gYXZhaWxhYmxlVG9VbnN0YWtlBBFhdmFpbGFibGVGb3JDbGFpbQkBGGdldFVzZXJBdmFpbGFibGVGb3JDbGFpbQEFBHVzZXIEFGF2YWlsYWJsZUZvckNsYWltTmV3CQBkAgURYXZhaWxhYmxlRm9yQ2xhaW0FFGNsYWltQW1vdW50QXZhaWxhYmxlBBJ0b3RhbFNXT1BMb2NrZWROZXcJAGUCBQ90b3RhbFNXT1BMb2NrZWQFDndpdGhkcmF3QW1vdW50BBF1c2VyU1dPUEFtb3VudE5ldwkAZQIFDnVzZXJTV09QTG9ja2VkBQ53aXRoZHJhd0Ftb3VudAQTdG90YWxHU3dvcExvY2tlZE5ldwkAZAIJAGUCBRB0b3RhbEdTd29wTG9ja2VkBQ91c2VyR1N3b3BMb2NrZWQFEXVzZXJTV09QQW1vdW50TmV3CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHVzZXIFEWtVc2VyTGFzdEludGVyZXN0BQ91c2VyTmV3SW50ZXJlc3QJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEdXNlcgUPa1VzZXJTV09QTG9ja2VkBRF1c2VyU1dPUEFtb3VudE5ldwkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQR1c2VyBRBrVXNlckdTd29wTG9ja2VkBRF1c2VyU1dPUEFtb3VudE5ldwkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQR1c2VyBRZrVXNlckF2YWlsYWJsZUZvckNsYWltBRRhdmFpbGFibGVGb3JDbGFpbU5ldwkAzAgCCQEMSW50ZWdlckVudHJ5AgUQa1RvdGFsU1dPUExvY2tlZAUSdG90YWxTV09QTG9ja2VkTmV3CQDMCAIJAQxJbnRlZ2VyRW50cnkCBRFrVG90YWxHU3dvcExvY2tlZAUTdG90YWxHU3dvcExvY2tlZE5ldwkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFDndpdGhkcmF3QW1vdW50BQRTV09QBQNuaWwBaQEUY2xhaW1BbmRXaXRoZHJhd1NXT1AACQELdmFsdWVPckVsc2UCCQEIaXNBY3RpdmUABAR1c2VyCQClCAEIBQFpBmNhbGxlcgQRYXZhaWxhYmxlRm9yQ2xhaW0JARhnZXRVc2VyQXZhaWxhYmxlRm9yQ2xhaW0BBQR1c2VyBA0kdDAxMzIxMTEzMjYzCQEJY2xhaW1DYWxjAQUEdXNlcgQPdXNlck5ld0ludGVyZXN0CAUNJHQwMTMyMTExMzI2MwJfMQQLY2xhaW1BbW91bnQIBQ0kdDAxMzIxMTEzMjYzAl8yBA91c2VyQ2xhaW1BbW91bnQJAGQCBRFhdmFpbGFibGVGb3JDbGFpbQULY2xhaW1BbW91bnQDCQAAAgUPdXNlckNsYWltQW1vdW50AAAJAAIBAhlZb3UgaGF2ZSAwIGF2YWlsYWJsZSBTV09QCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHVzZXIFEWtVc2VyTGFzdEludGVyZXN0BQ91c2VyTmV3SW50ZXJlc3QJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEdXNlcgUWa1VzZXJBdmFpbGFibGVGb3JDbGFpbQAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUPdXNlckNsYWltQW1vdW50BQRTV09QBQNuaWwBaQERY2xhaW1BbmRTdGFrZVNXT1AACQELdmFsdWVPckVsc2UCCQEIaXNBY3RpdmUABAR1c2VyCQClCAEIBQFpBmNhbGxlcgQNJHQwMTM2OTMxMzc1NQkBEmdldFRvdGFsTG9ja2VkSW5mbwAED3RvdGFsU1dPUExvY2tlZAgFDSR0MDEzNjkzMTM3NTUCXzEEEHRvdGFsR1N3b3BMb2NrZWQIBQ0kdDAxMzY5MzEzNzU1Al8yBA0kdDAxMzc2MDEzODIzCQERZ2V0VXNlckxvY2tlZEluZm8BBQR1c2VyBA51c2VyU1dPUExvY2tlZAgFDSR0MDEzNzYwMTM4MjMCXzEED3VzZXJHU3dvcExvY2tlZAgFDSR0MDEzNzYwMTM4MjMCXzIEEWF2YWlsYWJsZUZvckNsYWltCQEYZ2V0VXNlckF2YWlsYWJsZUZvckNsYWltAQUEdXNlcgQNJHQwMTM4ODcxMzkzOAkBCWNsYWltQ2FsYwEFBHVzZXIED3VzZXJOZXdJbnRlcmVzdAgFDSR0MDEzODg3MTM5MzgCXzEEC2NsYWltQW1vdW50CAUNJHQwMTM4ODcxMzkzOAJfMgQPdXNlckNsYWltQW1vdW50CQBkAgURYXZhaWxhYmxlRm9yQ2xhaW0FC2NsYWltQW1vdW50BBF1c2VyU1dPUExvY2tlZE5ldwkAZAIFDnVzZXJTV09QTG9ja2VkBQ91c2VyQ2xhaW1BbW91bnQEEnVzZXJHU3dvcExvY2tlZE5ldwkAZAIFD3VzZXJHU3dvcExvY2tlZAkAaAIFD3VzZXJDbGFpbUFtb3VudAACBBJ0b3RhbFNXT1BMb2NrZWROZXcJAGQCBQ90b3RhbFNXT1BMb2NrZWQFD3VzZXJDbGFpbUFtb3VudAQTdG90YWxHU3dvcExvY2tlZE5ldwkAZAIFEHRvdGFsR1N3b3BMb2NrZWQJAGgCBQ91c2VyQ2xhaW1BbW91bnQAAgMJAAACBQ91c2VyQ2xhaW1BbW91bnQAAAkAAgECGVlvdSBoYXZlIDAgYXZhaWxhYmxlIFNXT1AJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEdXNlcgUVa1VzZXJTd29wVW5sb2NrSGVpZ2h0CQBkAgUGaGVpZ2h0BRRsb2NrU3dvcEJsb2Nrc0Ftb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQR1c2VyBRFrVXNlckxhc3RJbnRlcmVzdAUPdXNlck5ld0ludGVyZXN0CQDMCAIJAQxJbnRlZ2VyRW50cnkCBRBrVG90YWxTV09QTG9ja2VkBRJ0b3RhbFNXT1BMb2NrZWROZXcJAMwIAgkBDEludGVnZXJFbnRyeQIFEWtUb3RhbEdTd29wTG9ja2VkBRN0b3RhbEdTd29wTG9ja2VkTmV3CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHVzZXIFD2tVc2VyU1dPUExvY2tlZAURdXNlclNXT1BMb2NrZWROZXcJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEdXNlcgUQa1VzZXJHU3dvcExvY2tlZAUSdXNlckdTd29wTG9ja2VkTmV3CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHVzZXIFFmtVc2VyQXZhaWxhYmxlRm9yQ2xhaW0AAAUDbmlsAWkBE2xvY2tTV09QRnJvbUZhcm1pbmcACQELdmFsdWVPckVsc2UCCQEIaXNBY3RpdmUABA0kdDAxNDg3NDE0OTQ5CQCUCgIICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50CAkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQECXBtdEFtb3VudAgFDSR0MDE0ODc0MTQ5NDkCXzEECnBtdEFzc2V0SWQIBQ0kdDAxNDg3NDE0OTQ5Al8yAwkBAiE9AggFAWkGY2FsbGVyBQtmYXJtaW5nQWRkcgkAAgECI09ubHkgZmFybWluZyBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uAwkBAiE9AgUKcG10QXNzZXRJZAUEU1dPUAkAAgECFEluY29ycmVjdCBwbXRBc3NldElkBAR1c2VyCQClCAEIBQFpDG9yaWdpbkNhbGxlcgQMbGFzdEludGVyZXN0CQETZ2V0TGFzdEludGVyZXN0SW5mbwAEDSR0MDE1MTkyMTUyNTUJARFnZXRVc2VyTG9ja2VkSW5mbwEFBHVzZXIEDnVzZXJTV09QTG9ja2VkCAUNJHQwMTUxOTIxNTI1NQJfMQQPdXNlckdTd29wTG9ja2VkCAUNJHQwMTUxOTIxNTI1NQJfMgQNJHQwMTUyNjAxNTMyMQkBCWNsYWltQ2FsYwEFBHVzZXIED3VzZXJOZXdJbnRlcmVzdAgFDSR0MDE1MjYwMTUzMjECXzEEFGNsYWltQW1vdW50QXZhaWxhYmxlCAUNJHQwMTUyNjAxNTMyMQJfMgQRYXZhaWxhYmxlRm9yQ2xhaW0JARhnZXRVc2VyQXZhaWxhYmxlRm9yQ2xhaW0BBQR1c2VyBBRhdmFpbGFibGVGb3JDbGFpbU5ldwkAZAIFEWF2YWlsYWJsZUZvckNsYWltBRRjbGFpbUFtb3VudEF2YWlsYWJsZQQRdXNlclNXT1BMb2NrZWROZXcJAGQCBQ51c2VyU1dPUExvY2tlZAUJcG10QW1vdW50BBJ1c2VyR1N3b3BMb2NrZWROZXcJAGQCBQ91c2VyR1N3b3BMb2NrZWQJAGgCBQlwbXRBbW91bnQAAgQNJHQwMTU1NzMxNTYzNQkBEmdldFRvdGFsTG9ja2VkSW5mbwAED3RvdGFsU1dPUExvY2tlZAgFDSR0MDE1NTczMTU2MzUCXzEEEHRvdGFsR1N3b3BMb2NrZWQIBQ0kdDAxNTU3MzE1NjM1Al8yBBJ0b3RhbFNXT1BMb2NrZWROZXcJAGQCBQ90b3RhbFNXT1BMb2NrZWQFCXBtdEFtb3VudAQTdG90YWxHU3dvcExvY2tlZE5ldwkAZAIFEHRvdGFsR1N3b3BMb2NrZWQJAGgCBQlwbXRBbW91bnQAAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQR1c2VyBRVrVXNlclN3b3BVbmxvY2tIZWlnaHQJAGQCBQZoZWlnaHQFFGxvY2tTd29wQmxvY2tzQW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHVzZXIFEWtVc2VyTGFzdEludGVyZXN0BQ91c2VyTmV3SW50ZXJlc3QJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEdXNlcgUPa1VzZXJTV09QTG9ja2VkBRF1c2VyU1dPUExvY2tlZE5ldwkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQR1c2VyBRBrVXNlckdTd29wTG9ja2VkBRJ1c2VyR1N3b3BMb2NrZWROZXcJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEdXNlcgUWa1VzZXJBdmFpbGFibGVGb3JDbGFpbQUUYXZhaWxhYmxlRm9yQ2xhaW1OZXcJAMwIAgkBDEludGVnZXJFbnRyeQIFEGtUb3RhbFNXT1BMb2NrZWQFEnRvdGFsU1dPUExvY2tlZE5ldwkAzAgCCQEMSW50ZWdlckVudHJ5AgURa1RvdGFsR1N3b3BMb2NrZWQFE3RvdGFsR1N3b3BMb2NrZWROZXcFA25pbAFpAQ11cGRhdGVXZWlnaHRzBAxjdXJyZW50UG9vbHMOY3VycmVudFJld2FyZHMScmV3YXJkVXBkYXRlSGVpZ2h0CnBhZ2luYXRpb24JAQt2YWx1ZU9yRWxzZQIJAQhpc0FjdGl2ZQAEC2Ftb3VudFBvb2xzAAoEF3RvdGFsUmV3YXJkVXBkYXRlSGVpZ2h0CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFE2tSZXdhcmRVcGRhdGVIZWlnaHQAAAMJAQEhAQkBD2NvbnRhaW5zRWxlbWVudAIJAMwIAgUMYWRtaW5QdWJLZXkxCQDMCAIFDGFkbWluUHViS2V5MgkAzAgCBQxhZG1pblB1YktleTMJAMwIAgUObW9uZXlCb3hQdWJLZXkFA25pbAgFAWkPY2FsbGVyUHVibGljS2V5CQACAQIhT25seSBhZG1pbiBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uAwkAZgIJAJADAQUMY3VycmVudFBvb2xzBQthbW91bnRQb29scwkAAgEJAKwCAgIWTWF4IGFtb3VudCBvZiBwb29sIGlzIAkApAMBBQthbW91bnRQb29scwMJAGcCBRd0b3RhbFJld2FyZFVwZGF0ZUhlaWdodAUScmV3YXJkVXBkYXRlSGVpZ2h0CQACAQItcmV3YXJkVXBkYXRlSGVpZ2h0IDw9IHRvdGFsUmV3YXJkVXBkYXRlSGVpZ2h0AwkAZwIFBmhlaWdodAUScmV3YXJkVXBkYXRlSGVpZ2h0CQACAQIcaGVpZ2h0ID49IHJld2FyZFVwZGF0ZUhlaWdodAMJAGcCAAAFEnJld2FyZFVwZGF0ZUhlaWdodAkAAgECGDAgPj0gcmV3YXJkVXBkYXRlSGVpZ2h0IAoBA3N1bQIBYQFiCQBkAgUBYQUBYgoBGWNoYW5nZVByZXZpb3VzUmV3YXJkRW50cnkCC2FjY3VtdWxhdGVkBHBvb2wEFnBvb2xSZXdhcmRVcGRhdGVIZWlnaHQJARNnZXRQb29sVXBkYXRlSGVpZ2h0AQUEcG9vbAMDCQEBIQEJARhpc0RlZmluZVBvb2xVcGRhdGVIZWlnaHQBBQRwb29sBgMJAQIhPQIFEnJld2FyZFVwZGF0ZUhlaWdodAUWcG9vbFJld2FyZFVwZGF0ZUhlaWdodAkAAAIFFnBvb2xSZXdhcmRVcGRhdGVIZWlnaHQFF3RvdGFsUmV3YXJkVXBkYXRlSGVpZ2h0BwQKcG9vbFJld2FyZAkBEGdldEN1clBvb2xXZWlnaHQBBQRwb29sCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHBvb2wFG2tSZXdhcmRQb29sRnJhY3Rpb25QcmV2aW91cwUKcG9vbFJld2FyZAULYWNjdW11bGF0ZWQECnBvb2xSZXdhcmQJARFnZXRQcmV2UG9vbFdlaWdodAEFBHBvb2wJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAUba1Jld2FyZFBvb2xGcmFjdGlvblByZXZpb3VzBQpwb29sUmV3YXJkBQthY2N1bXVsYXRlZAoBGGNoYW5nZUN1cnJlbnRSZXdhcmRFbnRyeQILYWNjdW11bGF0ZWQEcG9vbAQJcG9vbEluZGV4CQEFdmFsdWUBCQDPCAIFDGN1cnJlbnRQb29scwUEcG9vbAQKcG9vbFJld2FyZAkAkQMCBQ5jdXJyZW50UmV3YXJkcwUJcG9vbEluZGV4AwkAZgIAAAUKcG9vbFJld2FyZAkAAgECDlBvb2xSZXdhcmQgPCAwCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHBvb2wFGmtSZXdhcmRQb29sRnJhY3Rpb25DdXJyZW50BQpwb29sUmV3YXJkBQthY2N1bXVsYXRlZAoBEWNoYW5nZUhlaWdodEVudHJ5AgthY2N1bXVsYXRlZARwb29sBApwb29sSGVpZ2h0BRJyZXdhcmRVcGRhdGVIZWlnaHQEB3VwVUludHIJAPwHBAULZmFybWluZ0FkZHICEnVwZGF0ZVBvb2xJbnRlcmVzdAkAzAgCBQRwb29sBQNuaWwFA25pbAMJAAACBQd1cFVJbnRyBQd1cFVJbnRyCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHBvb2wFE2tIZWlnaHRQb29sRnJhY3Rpb24FCnBvb2xIZWlnaHQFC2FjY3VtdWxhdGVkCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCgEMZ2V0U3VtUmV3YXJkAgpjdXJUZW1wU3VtCnBhZ2luYXRpb24DCQAAAgUKcGFnaW5hdGlvbgAAAwkAZgIFCmN1clRlbXBTdW0FDnRvdGFsVm90ZVNoYXJlCQACAQkArAICCQCsAgIJAKwCAgJKc3VtUmV3YXJkUHJldmlvdXMgPiB0b3RhbFZvdGVTaGFyZSBvciBzdW1SZXdhcmRDdXJyZW50ID4gdG90YWxWb3RlU2hhcmUgLSAJAKQDAQUKcGFnaW5hdGlvbgIBIAkApAMBBQpjdXJUZW1wU3VtCQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIFC2tUZW1wQ3VyU3VtBQpjdXJUZW1wU3VtBQNuaWwJAMwIAgkBDEludGVnZXJFbnRyeQIFImtSZXdhcmRVcGRhdGVGaXJzdFBhZ2luYXRpb25IZWlnaHQFEnJld2FyZFVwZGF0ZUhlaWdodAUDbmlsAwkAAAIFCnBhZ2luYXRpb24AAQQRY3VyVGVtcFN1bUZyb21LZXkJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwULa1RlbXBDdXJTdW0AAAQmcmV3YXJkVXBkYXRlSGVpZ2h0Rmlyc3RQYWdpbmF0aW9uRW50cnkJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUia1Jld2FyZFVwZGF0ZUZpcnN0UGFnaW5hdGlvbkhlaWdodAAAAwkAZgIJAGQCBQpjdXJUZW1wU3VtBRFjdXJUZW1wU3VtRnJvbUtleQUOdG90YWxWb3RlU2hhcmUJAAIBCQCsAgIJAKwCAgkArAICAkpzdW1SZXdhcmRQcmV2aW91cyA+IHRvdGFsVm90ZVNoYXJlIG9yIHN1bVJld2FyZEN1cnJlbnQgPiB0b3RhbFZvdGVTaGFyZSAtIAkApAMBBQpwYWdpbmF0aW9uAgEgCQCkAwEJAGQCBQpjdXJUZW1wU3VtBRFjdXJUZW1wU3VtRnJvbUtleQMJAQIhPQIFJnJld2FyZFVwZGF0ZUhlaWdodEZpcnN0UGFnaW5hdGlvbkVudHJ5BRJyZXdhcmRVcGRhdGVIZWlnaHQJAAIBAkRjdXJyZW50IHJld2FyZFVwZGF0ZUhlaWdodCAhPSByZXdhcmRVcGRhdGVIZWlnaHRGaXJzdFBhZ2luYXRpb25FbnRyeQkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQtrVGVtcEN1clN1bQkAZAIFCmN1clRlbXBTdW0FEWN1clRlbXBTdW1Gcm9tS2V5BQNuaWwFA25pbAMJAAACBQpwYWdpbmF0aW9uAAIEBmN1clN1bQkAZAIJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwULa1RlbXBDdXJTdW0AAAUKY3VyVGVtcFN1bQQmcmV3YXJkVXBkYXRlSGVpZ2h0Rmlyc3RQYWdpbmF0aW9uRW50cnkJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUia1Jld2FyZFVwZGF0ZUZpcnN0UGFnaW5hdGlvbkhlaWdodAAAAwkBAiE9AgUGY3VyU3VtBQ50b3RhbFZvdGVTaGFyZQkAAgECSXN1bVJld2FyZFByZXZpb3VzICE9IHRvdGFsVm90ZVNoYXJlIG9yIHN1bVJld2FyZEN1cnJlbnQgIT0gdG90YWxWb3RlU2hhcmUDCQECIT0CBSZyZXdhcmRVcGRhdGVIZWlnaHRGaXJzdFBhZ2luYXRpb25FbnRyeQUScmV3YXJkVXBkYXRlSGVpZ2h0CQACAQJEY3VycmVudCByZXdhcmRVcGRhdGVIZWlnaHQgIT0gcmV3YXJkVXBkYXRlSGVpZ2h0Rmlyc3RQYWdpbmF0aW9uRW50cnkJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgULa1RlbXBDdXJTdW0FBmN1clN1bQUDbmlsBQNuaWwJAAIBAhRJbmNvcnJlY3QgcGFnaW5hdGlvbgQWcHJldmlvdXNSZXdhcmRFbnRyeU5ldwoAAiRsBQxjdXJyZW50UG9vbHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBGWNoYW5nZVByZXZpb3VzUmV3YXJkRW50cnkCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDEwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoEFWN1cnJlbnRSZXdhcmRFbnRyeU5ldwoAAiRsBQxjdXJyZW50UG9vbHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjFfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBGGNoYW5nZUN1cnJlbnRSZXdhcmRFbnRyeQIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMV8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTAJAQUkZjFfMgIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgQRaGVpZ2h0RW50cnlOZXdDdXIKAAIkbAUMY3VycmVudFBvb2xzCgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYyXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJARFjaGFuZ2VIZWlnaHRFbnRyeQIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMl8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTAJAQUkZjJfMgIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgQUc3VtUmV3YXJkQ3VycmVudFRlbXAKAAIkbAUOY3VycmVudFJld2FyZHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwAAAKAQUkZjNfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBA3N1bQIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmM18yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTAJAQUkZjNfMgIJAQUkZjNfMQIJAQUkZjNfMQIJAQUkZjNfMQIJAQUkZjNfMQIJAQUkZjNfMQIJAQUkZjNfMQIJAQUkZjNfMQIJAQUkZjNfMQIJAQUkZjNfMQIJAQUkZjNfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgQNJHQwMjA2NjAyMDc3MQkBDGdldFN1bVJld2FyZAIFFHN1bVJld2FyZEN1cnJlbnRUZW1wBQpwYWdpbmF0aW9uBBBzdW1SZXdhcmRDdXJyZW50CAUNJHQwMjA2NjAyMDc3MQJfMQQmcmV3YXJkVXBkYXRlSGVpZ2h0Rmlyc3RQYWdpbmF0aW9uRW50cnkIBQ0kdDAyMDY2MDIwNzcxAl8yBBdyZXdhcmRVcGRhdGVIZWlnaHRFbnRyeQMJAAACBQpwYWdpbmF0aW9uAAIJAMwIAgkBDEludGVnZXJFbnRyeQIFE2tSZXdhcmRVcGRhdGVIZWlnaHQFEnJld2FyZFVwZGF0ZUhlaWdodAUDbmlsBQNuaWwDCQBmAgUGaGVpZ2h0BRJyZXdhcmRVcGRhdGVIZWlnaHQJAAIBAhtyZXdhcmRVcGRhdGVIZWlnaHQgPCBoZWlnaHQJAM4IAgkAzggCCQDOCAIJAM4IAgkAzggCBRZwcmV2aW91c1Jld2FyZEVudHJ5TmV3BRVjdXJyZW50UmV3YXJkRW50cnlOZXcFEWhlaWdodEVudHJ5TmV3Q3VyBRBzdW1SZXdhcmRDdXJyZW50BRdyZXdhcmRVcGRhdGVIZWlnaHRFbnRyeQUmcmV3YXJkVXBkYXRlSGVpZ2h0Rmlyc3RQYWdpbmF0aW9uRW50cnkBaQEIc2h1dGRvd24ACQELdmFsdWVPckVsc2UCCQELaXNBZG1pbkNhbGwBBQFpAwkBASEBBQZhY3RpdmUJAAIBCQCsAgICIkRBcHAgaXMgYWxyZWFkeSBzdXNwZW5kZWQuIENhdXNlOiAJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwUGa0NhdXNlAhp0aGUgY2F1c2Ugd2Fzbid0IHNwZWNpZmllZAkBB3N1c3BlbmQBAg9QYXVzZWQgYnkgYWRtaW4BaQEIYWN0aXZhdGUACQELdmFsdWVPckVsc2UCCQELaXNBZG1pbkNhbGwBBQFpAwUGYWN0aXZlCQACAQIWREFwcCBpcyBhbHJlYWR5IGFjdGl2ZQkAzAgCCQEMQm9vbGVhbkVudHJ5AgUHa0FjdGl2ZQYJAMwIAgkBC0RlbGV0ZUVudHJ5AQUGa0NhdXNlBQNuaWwBAnR4AQZ2ZXJpZnkABBJhZG1pblB1YktleTFTaWduZWQDCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAABQxhZG1pblB1YktleTEAAQAABBJhZG1pblB1YktleTJTaWduZWQDCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwABBQxhZG1pblB1YktleTIAAQAABBJhZG1pblB1YktleTNTaWduZWQDCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwACBQxhZG1pblB1YktleTMAAQAACQBnAgkAZAIJAGQCBRJhZG1pblB1YktleTFTaWduZWQFEmFkbWluUHViS2V5MlNpZ25lZAUSYWRtaW5QdWJLZXkzU2lnbmVkAALZ2Lw4", "height": 2494094, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 6Gy4UyhT2TRVndCjqVaZGGkE3epCsy48DXqUW8id9aV6 Next: none Diff:
OldNewDifferences
9191
9292 let S = "launchpad_address"
9393
94-let T = "airdrop_fee_money_box"
94+let T = "pool_"
9595
96-let U = "pool_"
96+let U = Address(base58'3MvVBtsXroQpy1tsPw21TU2ET9A8WfmrNjz')
9797
98-let V = Address(base58'3MvVBtsXroQpy1tsPw21TU2ET9A8WfmrNjz')
99-
100-func W (X) = {
101- let Y = getString(V, X)
102- if ($isInstanceOf(Y, "String"))
98+func V (W) = {
99+ let X = getString(U, W)
100+ if ($isInstanceOf(X, "String"))
103101 then {
104- let Z = Y
105- fromBase58String(Z)
102+ let Y = X
103+ fromBase58String(Y)
106104 }
107105 else {
108- let aa = Y
109- throw((X + "is empty"))
106+ let Z = X
107+ throw((W + "is empty"))
110108 }
111109 }
112110
113111
114-let ab = W(L)
112+let aa = V(L)
115113
116-let ac = W(M)
114+let ab = V(M)
117115
118-let ad = W(N)
116+let ac = V(N)
119117
120-let ae = W(O)
118+let ad = V(O)
121119
122-let af = Address(W(P))
120+let ae = Address(V(P))
123121
124-let ag = Address(W(Q))
122+let af = Address(V(Q))
125123
126-let ah = Address(W(R))
124+let ag = Address(V(R))
127125
128-let ai = Address(W(S))
126+let ah = Address(V(S))
129127
130-let aj = Address(W(T))
128+let ai = (10102 * 4)
131129
132-let ak = (10102 * 4)
130+let aj = fromBase58String(getStringValue(ae, J))
133131
134-let al = fromBase58String(getStringValue(af, J))
132+let ak = 100000000
135133
136-let am = 100000000
134+let al = 10000000000
137135
138-let an = 10000000000
136+let am = 1000000
139137
140-let ao = 1000000
138+let an = valueOrErrorMessage(getInteger(af, F), "Empty kBasePeriod at voting contract")
141139
142-let ap = valueOrErrorMessage(getInteger(ag, F), "Empty kBasePeriod at voting contract")
140+let ao = valueOrErrorMessage(getInteger(af, E), "Empty kStartHeight at voting contract")
143141
144-let aq = valueOrErrorMessage(getInteger(ag, E), "Empty kStartHeight at voting contract")
142+let ap = valueOrErrorMessage(getInteger(af, G), "Empty kPeriodLength at voting contract")
145143
146-let ar = valueOrErrorMessage(getInteger(ag, G), "Empty kPeriodLength at voting contract")
144+let aq = valueOrElse(getString(ag, v), "")
147145
148-let as = valueOrElse(getString(ah, v), "")
146+let ar = valueOrElse(getString(ag, w), "")
149147
150-let at = valueOrElse(getString(ah, w), "")
148+let as = valueOrElse(getString(ag, x), "")
151149
152-let au = valueOrElse(getString(ah, x), "")
150+let at = valueOrElse(getBoolean(this, a), true)
153151
154-let av = valueOrElse(getBoolean(this, a), true)
152+let au = valueOrElse(getBoolean(U, b), true)
155153
156-let aw = valueOrElse(getBoolean(V, b), true)
154+let av = (an + ((height - ao) / ap))
157155
158-let ax = getIntegerValue(V, K)
159-
160-let ay = (ap + ((height - aq) / ar))
161-
162-func az (aA) = [BooleanEntry(a, false), StringEntry(c, aA)]
156+func aw (ax) = [BooleanEntry(a, false), StringEntry(c, ax)]
163157
164158
165-func aB () = if (if (av)
166- then aw
159+func ay () = if (if (at)
160+ then au
167161 else false)
168162 then unit
169163 else throw("DApp is inactive at this moment")
170164
171165
172-func aC (aD) = if (containsElement([ab, ac, ad], aD.callerPublicKey))
166+func az (aA) = if (containsElement([aa, ab, ac], aA.callerPublicKey))
173167 then unit
174168 else throw("Only admin can call this function")
175169
176170
177-func aE () = valueOrElse(getInteger(this, d), 0)
171+func aB () = valueOrElse(getInteger(this, d), 0)
178172
179173
180-func aF () = {
181- let aG = valueOrElse(getInteger(this, g), 0)
182- let aH = valueOrElse(getInteger(this, j), aG)
183- $Tuple2(aG, aH)
174+func aC () = {
175+ let aD = valueOrElse(getInteger(this, g), 0)
176+ let aE = valueOrElse(getInteger(this, j), aD)
177+ $Tuple2(aD, aE)
184178 }
185179
186180
187-func aI (aJ) = {
188- let aK = valueOrElse(getInteger(this, (aJ + f)), 0)
189- let aL = valueOrElse(getInteger(this, (aJ + i)), aK)
190- $Tuple2(aK, aL)
181+func aF (aG) = {
182+ let aH = valueOrElse(getInteger(this, (aG + f)), 0)
183+ let aI = valueOrElse(getInteger(this, (aG + i)), aH)
184+ $Tuple2(aH, aI)
191185 }
192186
193187
194-func aM (aJ,aN) = {
195- let aO = aI(aJ)
196- let aP = aO._1
197- let aQ = aO._2
198- let aR = valueOrElse(getInteger(this, (aJ + e)), aN)
199- $Tuple3(aR, aP, aQ)
188+func aJ (aG,aK) = {
189+ let aL = aF(aG)
190+ let aM = aL._1
191+ let aN = aL._2
192+ let aO = valueOrElse(getInteger(this, (aG + e)), aK)
193+ $Tuple3(aO, aM, aN)
200194 }
201195
202196
203-func aS (aJ) = valueOrElse(getInteger(this, (aJ + l)), 0)
197+func aP (aG) = valueOrElse(getInteger(this, (aG + l)), 0)
204198
205199
206-func aT (aU,aJ) = {
207- let aV = valueOrElse(getInteger(ah, aU), -1)
208- let aW = valueOrElse(getInteger(ah, (toString(aV) + u)), 0)
209- let aX = valueOrElse(getBoolean(ah, (toString(aV) + t)), true)
210- let aY = height
211- if ((0 > aV))
200+func aQ (aR,aG) = {
201+ let aS = valueOrElse(getInteger(ag, aR), -1)
202+ let aT = valueOrElse(getInteger(ag, (toString(aS) + u)), 0)
203+ let aU = valueOrElse(getBoolean(ag, (toString(aS) + t)), true)
204+ let aV = height
205+ if ((0 > aS))
212206 then 0
213- else if (!(aX))
207+ else if (!(aU))
214208 then 0
215- else if ((aW > aY))
216- then (valueOrElse(getInteger(ah, (((toString(aJ) + "_") + toString(aV)) + s)), 0) + valueOrElse(getInteger(ah, (((toString(aJ) + "_") + toString(aV)) + r)), 0))
209+ else if ((aT > aV))
210+ then (valueOrElse(getInteger(ag, (((toString(aG) + "_") + toString(aS)) + s)), 0) + valueOrElse(getInteger(ag, (((toString(aG) + "_") + toString(aS)) + r)), 0))
217211 else 0
218212 }
219213
220214
221-func aZ (aJ) = {
222- let ba = [aT(as, aJ), aT(at, aJ), aT(au, aJ)]
223- max(ba)
215+func aW (aG) = {
216+ let aX = [aQ(aq, aG), aQ(ar, aG), aQ(as, aG)]
217+ max(aX)
224218 }
225219
226220
227-func bb (aJ) = {
228- let bc = toString(valueOrElse(getInteger(ai, B), 0))
229- if ((bc == "0"))
221+func aY (aG) = {
222+ let aZ = toString(valueOrElse(getInteger(ah, B), 0))
223+ if ((aZ == "0"))
230224 then 0
231225 else {
232- let bd = valueOrElse(getInteger(ai, (bc + D)), 0)
233- let be = valueOrElse(getInteger(ai, (bc + C)), 0)
234- let bf = valueOrElse(getInteger(ai, (bc + I)), 0)
235- let bg = ((bd + be) + bf)
236- if ((height > bg))
226+ let ba = valueOrElse(getInteger(ah, (aZ + D)), 0)
227+ let bb = valueOrElse(getInteger(ah, (aZ + C)), 0)
228+ let bc = valueOrElse(getInteger(ah, (aZ + I)), 0)
229+ let bd = ((ba + bb) + bc)
230+ if ((height > bd))
237231 then 0
238232 else {
239- let bh = valueOrElse(getInteger(ai, (((toString(aJ) + "_") + bc) + z)), 0)
240- let bi = valueOrElse(getInteger(ai, (bc + A)), 0)
241- (bh * bi)
233+ let be = valueOrElse(getInteger(ah, (((toString(aG) + "_") + aZ) + z)), 0)
234+ let bf = valueOrElse(getInteger(ah, (aZ + A)), 0)
235+ (be * bf)
242236 }
243237 }
244238 }
245239
246240
247-func bj (aJ) = if (isDefined(getString(ag, (toString(aJ) + H))))
248- then parseIntValue(split(valueOrErrorMessage(getString(ag, (toString(aJ) + H)), "Empty kUserTotalStruc"), "_")[0])
249- else valueOrElse(getInteger(ag, (toString(aJ) + k)), 0)
241+func bg (aG) = if (isDefined(getString(af, (toString(aG) + H))))
242+ then parseIntValue(split(valueOrErrorMessage(getString(af, (toString(aG) + H)), "Empty kUserTotalStruc"), "_")[0])
243+ else valueOrElse(getInteger(af, (toString(aG) + k)), 0)
250244
251245
252-func bk (aU) = valueOrElse(getInteger(this, (aU + o)), 0)
246+func bh (aR) = valueOrElse(getInteger(this, (aR + o)), 0)
253247
254248
255-func bl (aU) = isDefined(getInteger(this, (aU + o)))
249+func bi (aR) = isDefined(getInteger(this, (aR + o)))
256250
257251
258-func bm (aU) = valueOrElse(getInteger(this, (aU + m)), 0)
252+func bj (aR) = valueOrElse(getInteger(this, (aR + m)), 0)
259253
260254
261-func bn (aU) = valueOrElse(getInteger(this, (aU + n)), 0)
255+func bk (aR) = valueOrElse(getInteger(this, (aR + n)), 0)
262256
263257
264-func bo (aJ) = {
265- let aN = aE()
266- let bp = aM(aJ, aN)
267- let aR = bp._1
268- let bq = bp._2
269- let aQ = bp._3
270- let br = fraction(aQ, (aN - aR), am)
271- let bs = aN
272- $Tuple2(bs, br)
258+func bl (aG) = {
259+ let aK = aB()
260+ let bm = aJ(aG, aK)
261+ let aO = bm._1
262+ let bn = bm._2
263+ let aN = bm._3
264+ let bo = fraction(aN, (aK - aO), ak)
265+ let bp = aK
266+ $Tuple2(bp, bo)
273267 }
274268
275269
276-func bt (bu) = if (isDefined(getString(V, (U + bu))))
270+func bq (br) = if (isDefined(getString(U, (T + br))))
277271 then unit
278272 else throw("DApp is not registered pool")
279273
280274
281-@Callable(aD)
282-func addPool (bu) = valueOrElse(aC(aD), valueOrElse(aB(), valueOrElse(bt(bu), if (isDefined(getInteger(this, (bu + m))))
275+@Callable(aA)
276+func addPool (br) = valueOrElse(az(aA), valueOrElse(ay(), valueOrElse(bq(br), if (isDefined(getInteger(this, (br + m))))
283277 then throw("Pool already in governance")
284- else [IntegerEntry((bu + m), 0), IntegerEntry((bu + n), 0), IntegerEntry((bu + o), getIntegerValue(this, p))])))
278+ else [IntegerEntry((br + m), 0), IntegerEntry((br + n), 0), IntegerEntry((br + o), getIntegerValue(this, p))])))
285279
286280
287281
288-@Callable(aD)
289-func airDrop () = valueOrElse(aB(), {
290- let bv = $Tuple2(aD.payments[0].amount, aD.payments[0].assetId)
291- let bw = bv._1
292- let bx = bv._2
293- if ((bx != al))
282+@Callable(aA)
283+func airDrop () = valueOrElse(ay(), {
284+ let bs = $Tuple2(aA.payments[0].amount, aA.payments[0].assetId)
285+ let bt = bs._1
286+ let bu = bs._2
287+ if ((bu != aj))
294288 then throw("Incorrect pmtAssetId")
295289 else {
296- let by = fraction(bw, ax, ao, CEILING)
297- let bz = aF()
298- let bA = bz._1
299- let aH = bz._2
300- let aN = aE()
301- let bB = (aN + fraction((bw - by), am, aH))
302-[IntegerEntry(d, bB), ScriptTransfer(aj, by, al)]
290+ let bv = aC()
291+ let bw = bv._1
292+ let aE = bv._2
293+ let aK = aB()
294+ let bx = (aK + fraction(bt, ak, aE))
295+[IntegerEntry(d, bx)]
303296 }
304297 })
305298
306299
307300
308-@Callable(aD)
309-func lockSWOP () = valueOrElse(aB(), {
310- let bC = $Tuple2(aD.payments[0].amount, aD.payments[0].assetId)
311- let bw = bC._1
312- let bx = bC._2
313- if ((bx != al))
301+@Callable(aA)
302+func lockSWOP () = valueOrElse(ay(), {
303+ let by = $Tuple2(aA.payments[0].amount, aA.payments[0].assetId)
304+ let bt = by._1
305+ let bu = by._2
306+ if ((bu != aj))
314307 then throw("Incorrect pmtAssetId")
315308 else {
316- let aJ = toString(aD.caller)
317- let aN = aE()
318- let bD = aI(aJ)
319- let bq = bD._1
320- let aL = bD._2
321- let bE = bo(aJ)
322- let bs = bE._1
323- let bF = bE._2
324- let bG = aS(aJ)
325- let bH = (bG + bF)
326- let bI = (bq + bw)
327- let bJ = (aL + bw)
328- let bK = aF()
329- let bA = bK._1
330- let aH = bK._2
331- let bL = (bA + bw)
332- let bM = (aH + bw)
333-[IntegerEntry((aJ + h), (height + ak)), IntegerEntry((aJ + e), bs), IntegerEntry((aJ + f), bI), IntegerEntry((aJ + i), bJ), IntegerEntry((aJ + l), bH), IntegerEntry(g, bL), IntegerEntry(j, bM)]
309+ let aG = toString(aA.caller)
310+ let aK = aB()
311+ let bz = aF(aG)
312+ let bn = bz._1
313+ let aI = bz._2
314+ let bA = bl(aG)
315+ let bp = bA._1
316+ let bB = bA._2
317+ let bC = aP(aG)
318+ let bD = (bC + bB)
319+ let bE = (bn + bt)
320+ let bF = (aI + bt)
321+ let bG = aC()
322+ let bw = bG._1
323+ let aE = bG._2
324+ let bH = (bw + bt)
325+ let bI = (aE + bt)
326+[IntegerEntry((aG + h), (height + ai)), IntegerEntry((aG + e), bp), IntegerEntry((aG + f), bE), IntegerEntry((aG + i), bF), IntegerEntry((aG + l), bD), IntegerEntry(g, bH), IntegerEntry(j, bI)]
334327 }
335328 })
336329
337330
338331
339-@Callable(aD)
340-func withdrawSWOP (bN) = valueOrElse(aB(), {
341- let aJ = toString(aD.caller)
342- let bO = valueOrElse(getInteger(this, (aJ + h)), 0)
343- if ((0 >= bN))
332+@Callable(aA)
333+func withdrawSWOP (bJ) = valueOrElse(ay(), {
334+ let aG = toString(aA.caller)
335+ let bK = valueOrElse(getInteger(this, (aG + h)), 0)
336+ if ((0 >= bJ))
344337 then throw("withdrawAmount <= 0")
345- else if ((bO > height))
346- then throw(("You can't withdraw till " + toString(bO)))
338+ else if ((bK > height))
339+ then throw(("You can't withdraw till " + toString(bK)))
347340 else {
348- let bP = aF()
349- let bA = bP._1
350- let aH = bP._2
351- let bQ = aI(aJ)
352- let bq = bQ._1
353- let aL = bQ._2
354- let bR = bo(aJ)
355- let bs = bR._1
356- let bF = bR._2
357- let bS = bj(aD.caller)
358- let bT = aZ(aD.caller)
359- let bU = bb(aD.caller)
360- if (if ((0 > bS))
341+ let bL = aC()
342+ let bw = bL._1
343+ let aE = bL._2
344+ let bM = aF(aG)
345+ let bn = bM._1
346+ let aI = bM._2
347+ let bN = bl(aG)
348+ let bp = bN._1
349+ let bB = bN._2
350+ let bO = bg(aA.caller)
351+ let bP = aW(aA.caller)
352+ let bQ = aY(aA.caller)
353+ if (if ((0 > bO))
361354 then true
362- else (0 > bT))
355+ else (0 > bP))
363356 then throw("userVoteAmount < 0 || userVoteAmountForNewPool < 0")
364357 else {
365- let bV = (bq - max([bT, bS, bU]))
366- if ((bN > bV))
358+ let bR = (bn - max([bP, bO, bQ]))
359+ if ((bJ > bR))
367360 then throw("withdrawAmount > availableToUnstake")
368361 else {
369- let bG = aS(aJ)
370- let bH = (bG + bF)
371- let bL = (bA - bN)
372- let bW = (bq - bN)
373- let bM = ((aH - aL) + bW)
374-[IntegerEntry((aJ + e), bs), IntegerEntry((aJ + f), bW), IntegerEntry((aJ + i), bW), IntegerEntry((aJ + l), bH), IntegerEntry(g, bL), IntegerEntry(j, bM), ScriptTransfer(aD.caller, bN, al)]
362+ let bC = aP(aG)
363+ let bD = (bC + bB)
364+ let bH = (bw - bJ)
365+ let bS = (bn - bJ)
366+ let bI = ((aE - aI) + bS)
367+[IntegerEntry((aG + e), bp), IntegerEntry((aG + f), bS), IntegerEntry((aG + i), bS), IntegerEntry((aG + l), bD), IntegerEntry(g, bH), IntegerEntry(j, bI), ScriptTransfer(aA.caller, bJ, aj)]
375368 }
376369 }
377370 }
379372
380373
381374
382-@Callable(aD)
383-func claimAndWithdrawSWOP () = valueOrElse(aB(), {
384- let aJ = toString(aD.caller)
385- let bG = aS(aJ)
386- let bX = bo(aJ)
387- let bs = bX._1
388- let br = bX._2
389- let bY = (bG + br)
390- if ((bY == 0))
375+@Callable(aA)
376+func claimAndWithdrawSWOP () = valueOrElse(ay(), {
377+ let aG = toString(aA.caller)
378+ let bC = aP(aG)
379+ let bT = bl(aG)
380+ let bp = bT._1
381+ let bo = bT._2
382+ let bU = (bC + bo)
383+ if ((bU == 0))
391384 then throw("You have 0 available SWOP")
392- else [IntegerEntry((aJ + e), bs), IntegerEntry((aJ + l), 0), ScriptTransfer(aD.caller, bY, al)]
385+ else [IntegerEntry((aG + e), bp), IntegerEntry((aG + l), 0), ScriptTransfer(aA.caller, bU, aj)]
393386 })
394387
395388
396389
397-@Callable(aD)
398-func claimAndStakeSWOP () = valueOrElse(aB(), {
399- let aJ = toString(aD.caller)
400- let bZ = aF()
401- let bA = bZ._1
402- let aH = bZ._2
403- let ca = aI(aJ)
404- let bq = ca._1
405- let aL = ca._2
406- let bG = aS(aJ)
407- let cb = bo(aJ)
408- let bs = cb._1
409- let br = cb._2
410- let bY = (bG + br)
411- let bI = (bq + bY)
412- let bJ = (aL + (bY * 2))
413- let bL = (bA + bY)
414- let bM = (aH + (bY * 2))
415- if ((bY == 0))
390+@Callable(aA)
391+func claimAndStakeSWOP () = valueOrElse(ay(), {
392+ let aG = toString(aA.caller)
393+ let bV = aC()
394+ let bw = bV._1
395+ let aE = bV._2
396+ let bW = aF(aG)
397+ let bn = bW._1
398+ let aI = bW._2
399+ let bC = aP(aG)
400+ let bX = bl(aG)
401+ let bp = bX._1
402+ let bo = bX._2
403+ let bU = (bC + bo)
404+ let bE = (bn + bU)
405+ let bF = (aI + (bU * 2))
406+ let bH = (bw + bU)
407+ let bI = (aE + (bU * 2))
408+ if ((bU == 0))
416409 then throw("You have 0 available SWOP")
417- else [IntegerEntry((aJ + h), (height + ak)), IntegerEntry((aJ + e), bs), IntegerEntry(g, bL), IntegerEntry(j, bM), IntegerEntry((aJ + f), bI), IntegerEntry((aJ + i), bJ), IntegerEntry((aJ + l), 0)]
410+ else [IntegerEntry((aG + h), (height + ai)), IntegerEntry((aG + e), bp), IntegerEntry(g, bH), IntegerEntry(j, bI), IntegerEntry((aG + f), bE), IntegerEntry((aG + i), bF), IntegerEntry((aG + l), 0)]
418411 })
419412
420413
421414
422-@Callable(aD)
423-func lockSWOPFromFarming () = valueOrElse(aB(), {
424- let cc = $Tuple2(aD.payments[0].amount, aD.payments[0].assetId)
425- let bw = cc._1
426- let bx = cc._2
427- if ((aD.caller != af))
415+@Callable(aA)
416+func lockSWOPFromFarming () = valueOrElse(ay(), {
417+ let bY = $Tuple2(aA.payments[0].amount, aA.payments[0].assetId)
418+ let bt = bY._1
419+ let bu = bY._2
420+ if ((aA.caller != ae))
428421 then throw("Only farming can call this function")
429- else if ((bx != al))
422+ else if ((bu != aj))
430423 then throw("Incorrect pmtAssetId")
431424 else {
432- let aJ = toString(aD.originCaller)
433- let aN = aE()
434- let cd = aI(aJ)
435- let bq = cd._1
436- let aL = cd._2
437- let ce = bo(aJ)
438- let bs = ce._1
439- let bF = ce._2
440- let bG = aS(aJ)
441- let bH = (bG + bF)
442- let bI = (bq + bw)
443- let bJ = (aL + (bw * 2))
444- let cf = aF()
445- let bA = cf._1
446- let aH = cf._2
447- let bL = (bA + bw)
448- let bM = (aH + (bw * 2))
449-[IntegerEntry((aJ + h), (height + ak)), IntegerEntry((aJ + e), bs), IntegerEntry((aJ + f), bI), IntegerEntry((aJ + i), bJ), IntegerEntry((aJ + l), bH), IntegerEntry(g, bL), IntegerEntry(j, bM)]
425+ let aG = toString(aA.originCaller)
426+ let aK = aB()
427+ let bZ = aF(aG)
428+ let bn = bZ._1
429+ let aI = bZ._2
430+ let ca = bl(aG)
431+ let bp = ca._1
432+ let bB = ca._2
433+ let bC = aP(aG)
434+ let bD = (bC + bB)
435+ let bE = (bn + bt)
436+ let bF = (aI + (bt * 2))
437+ let cb = aC()
438+ let bw = cb._1
439+ let aE = cb._2
440+ let bH = (bw + bt)
441+ let bI = (aE + (bt * 2))
442+[IntegerEntry((aG + h), (height + ai)), IntegerEntry((aG + e), bp), IntegerEntry((aG + f), bE), IntegerEntry((aG + i), bF), IntegerEntry((aG + l), bD), IntegerEntry(g, bH), IntegerEntry(j, bI)]
450443 }
451444 })
452445
453446
454447
455-@Callable(aD)
456-func updateWeights (cg,ch,ci,cj) = valueOrElse(aB(), {
457- let ck = 10
458- let cl = valueOrElse(getInteger(this, p), 0)
459- if (!(containsElement([ab, ac, ad, ae], aD.callerPublicKey)))
448+@Callable(aA)
449+func updateWeights (cc,cd,ce,cf) = valueOrElse(ay(), {
450+ let cg = 10
451+ let ch = valueOrElse(getInteger(this, p), 0)
452+ if (!(containsElement([aa, ab, ac, ad], aA.callerPublicKey)))
460453 then throw("Only admin can call this function")
461- else if ((size(cg) > ck))
462- then throw(("Max amount of pool is " + toString(ck)))
463- else if ((cl >= ci))
454+ else if ((size(cc) > cg))
455+ then throw(("Max amount of pool is " + toString(cg)))
456+ else if ((ch >= ce))
464457 then throw("rewardUpdateHeight <= totalRewardUpdateHeight")
465- else if ((height >= ci))
458+ else if ((height >= ce))
466459 then throw("height >= rewardUpdateHeight")
467- else if ((0 >= ci))
460+ else if ((0 >= ce))
468461 then throw("0 >= rewardUpdateHeight ")
469462 else {
470- func cm (cn,co) = (cn + co)
463+ func ci (cj,ck) = (cj + ck)
471464
472- func cp (cq,aU) = {
473- let cr = bk(aU)
474- if (if (!(bl(aU)))
465+ func cl (cm,aR) = {
466+ let cn = bh(aR)
467+ if (if (!(bi(aR)))
475468 then true
476- else if ((ci != cr))
477- then (cr == cl)
469+ else if ((ce != cn))
470+ then (cn == ch)
478471 else false)
479472 then {
480- let cs = bm(aU)
481-IntegerEntry((aU + n), cs) :: cq
473+ let co = bj(aR)
474+IntegerEntry((aR + n), co) :: cm
482475 }
483476 else {
484- let cs = bn(aU)
485-IntegerEntry((aU + n), cs) :: cq
477+ let co = bk(aR)
478+IntegerEntry((aR + n), co) :: cm
486479 }
487480 }
488481
489- func ct (cq,aU) = {
490- let cu = value(indexOf(cg, aU))
491- let cs = ch[cu]
492- if ((0 > cs))
482+ func cp (cm,aR) = {
483+ let cq = value(indexOf(cc, aR))
484+ let co = cd[cq]
485+ if ((0 > co))
493486 then throw("PoolReward < 0")
494- else IntegerEntry((aU + m), cs) :: cq
487+ else IntegerEntry((aR + m), co) :: cm
495488 }
496489
497- func cv (cq,aU) = {
498- let cw = ci
499- let cx = invoke(af, "updatePoolInterest", [aU], nil)
500- if ((cx == cx))
501- then IntegerEntry((aU + o), cw) :: cq
490+ func cr (cm,aR) = {
491+ let cs = ce
492+ let ct = invoke(ae, "updatePoolInterest", [aR], nil)
493+ if ((ct == ct))
494+ then IntegerEntry((aR + o), cs) :: cm
502495 else throw("Strict value is not equal to itself.")
503496 }
504497
505- func cy (cz,cj) = if ((cj == 0))
506- then if ((cz > an))
507- then throw(((("sumRewardPrevious > totalVoteShare or sumRewardCurrent > totalVoteShare - " + toString(cj)) + " ") + toString(cz)))
508- else $Tuple2([IntegerEntry(y, cz)], [IntegerEntry(q, ci)])
509- else if ((cj == 1))
498+ func cu (cv,cf) = if ((cf == 0))
499+ then if ((cv > al))
500+ then throw(((("sumRewardPrevious > totalVoteShare or sumRewardCurrent > totalVoteShare - " + toString(cf)) + " ") + toString(cv)))
501+ else $Tuple2([IntegerEntry(y, cv)], [IntegerEntry(q, ce)])
502+ else if ((cf == 1))
510503 then {
511- let cA = valueOrElse(getInteger(this, y), 0)
512- let cB = valueOrElse(getInteger(this, q), 0)
513- if (((cz + cA) > an))
514- then throw(((("sumRewardPrevious > totalVoteShare or sumRewardCurrent > totalVoteShare - " + toString(cj)) + " ") + toString((cz + cA))))
515- else if ((cB != ci))
504+ let cw = valueOrElse(getInteger(this, y), 0)
505+ let cx = valueOrElse(getInteger(this, q), 0)
506+ if (((cv + cw) > al))
507+ then throw(((("sumRewardPrevious > totalVoteShare or sumRewardCurrent > totalVoteShare - " + toString(cf)) + " ") + toString((cv + cw))))
508+ else if ((cx != ce))
516509 then throw("current rewardUpdateHeight != rewardUpdateHeightFirstPaginationEntry")
517- else $Tuple2([IntegerEntry(y, (cz + cA))], nil)
510+ else $Tuple2([IntegerEntry(y, (cv + cw))], nil)
518511 }
519- else if ((cj == 2))
512+ else if ((cf == 2))
520513 then {
521- let cC = (valueOrElse(getInteger(this, y), 0) + cz)
522- let cB = valueOrElse(getInteger(this, q), 0)
523- if ((cC != an))
514+ let cy = (valueOrElse(getInteger(this, y), 0) + cv)
515+ let cx = valueOrElse(getInteger(this, q), 0)
516+ if ((cy != al))
524517 then throw("sumRewardPrevious != totalVoteShare or sumRewardCurrent != totalVoteShare")
525- else if ((cB != ci))
518+ else if ((cx != ce))
526519 then throw("current rewardUpdateHeight != rewardUpdateHeightFirstPaginationEntry")
527- else $Tuple2([IntegerEntry(y, cC)], nil)
520+ else $Tuple2([IntegerEntry(y, cy)], nil)
528521 }
529522 else throw("Incorrect pagination")
530523
531- let cD = {
532- let cE = cg
533- let cF = size(cE)
534- let cG = nil
535- func cH (cI,cJ) = if ((cJ >= cF))
536- then cI
537- else cp(cI, cE[cJ])
524+ let cz = {
525+ let cA = cc
526+ let cB = size(cA)
527+ let cC = nil
528+ func cD (cE,cF) = if ((cF >= cB))
529+ then cE
530+ else cl(cE, cA[cF])
538531
539- func cK (cI,cJ) = if ((cJ >= cF))
540- then cI
532+ func cG (cE,cF) = if ((cF >= cB))
533+ then cE
541534 else throw("List size exceeds 10")
542535
543- cK(cH(cH(cH(cH(cH(cH(cH(cH(cH(cH(cG, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
536+ cG(cD(cD(cD(cD(cD(cD(cD(cD(cD(cD(cC, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
544537 }
545- let cL = {
546- let cE = cg
547- let cF = size(cE)
548- let cG = nil
549- func cM (cI,cJ) = if ((cJ >= cF))
550- then cI
551- else ct(cI, cE[cJ])
538+ let cH = {
539+ let cA = cc
540+ let cB = size(cA)
541+ let cC = nil
542+ func cI (cE,cF) = if ((cF >= cB))
543+ then cE
544+ else cp(cE, cA[cF])
552545
553- func cN (cI,cJ) = if ((cJ >= cF))
554- then cI
546+ func cJ (cE,cF) = if ((cF >= cB))
547+ then cE
555548 else throw("List size exceeds 10")
556549
557- cN(cM(cM(cM(cM(cM(cM(cM(cM(cM(cM(cG, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
550+ cJ(cI(cI(cI(cI(cI(cI(cI(cI(cI(cI(cC, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
558551 }
559- let cO = {
560- let cE = cg
561- let cF = size(cE)
562- let cG = nil
563- func cP (cI,cJ) = if ((cJ >= cF))
564- then cI
565- else cv(cI, cE[cJ])
552+ let cK = {
553+ let cA = cc
554+ let cB = size(cA)
555+ let cC = nil
556+ func cL (cE,cF) = if ((cF >= cB))
557+ then cE
558+ else cr(cE, cA[cF])
566559
567- func cQ (cI,cJ) = if ((cJ >= cF))
568- then cI
560+ func cM (cE,cF) = if ((cF >= cB))
561+ then cE
569562 else throw("List size exceeds 10")
570563
571- cQ(cP(cP(cP(cP(cP(cP(cP(cP(cP(cP(cG, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
564+ cM(cL(cL(cL(cL(cL(cL(cL(cL(cL(cL(cC, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
572565 }
573- let cR = {
574- let cE = ch
575- let cF = size(cE)
576- let cG = 0
577- func cS (cI,cJ) = if ((cJ >= cF))
578- then cI
579- else cm(cI, cE[cJ])
566+ let cN = {
567+ let cA = cd
568+ let cB = size(cA)
569+ let cC = 0
570+ func cO (cE,cF) = if ((cF >= cB))
571+ then cE
572+ else ci(cE, cA[cF])
580573
581- func cT (cI,cJ) = if ((cJ >= cF))
582- then cI
574+ func cP (cE,cF) = if ((cF >= cB))
575+ then cE
583576 else throw("List size exceeds 10")
584577
585- cT(cS(cS(cS(cS(cS(cS(cS(cS(cS(cS(cG, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
578+ cP(cO(cO(cO(cO(cO(cO(cO(cO(cO(cO(cC, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
586579 }
587- let cU = cy(cR, cj)
588- let cV = cU._1
589- let cB = cU._2
590- let cW = if ((cj == 2))
591- then [IntegerEntry(p, ci)]
580+ let cQ = cu(cN, cf)
581+ let cR = cQ._1
582+ let cx = cQ._2
583+ let cS = if ((cf == 2))
584+ then [IntegerEntry(p, ce)]
592585 else nil
593- if ((height > ci))
586+ if ((height > ce))
594587 then throw("rewardUpdateHeight < height")
595- else (((((cD ++ cL) ++ cO) ++ cV) ++ cW) ++ cB)
588+ else (((((cz ++ cH) ++ cK) ++ cR) ++ cS) ++ cx)
596589 }
597590 })
598591
599592
600593
601-@Callable(aD)
602-func shutdown () = valueOrElse(aC(aD), if (!(av))
594+@Callable(aA)
595+func shutdown () = valueOrElse(az(aA), if (!(at))
603596 then throw(("DApp is already suspended. Cause: " + valueOrElse(getString(this, c), "the cause wasn't specified")))
604- else az("Paused by admin"))
597+ else aw("Paused by admin"))
605598
606599
607600
608-@Callable(aD)
609-func activate () = valueOrElse(aC(aD), if (av)
601+@Callable(aA)
602+func activate () = valueOrElse(az(aA), if (at)
610603 then throw("DApp is already active")
611604 else [BooleanEntry(a, true), DeleteEntry(c)])
612605
613606
614-@Verifier(cX)
615-func cY () = {
616- let cZ = if (sigVerify(cX.bodyBytes, cX.proofs[0], ab))
607+@Verifier(cT)
608+func cU () = {
609+ let cV = if (sigVerify(cT.bodyBytes, cT.proofs[0], aa))
617610 then 1
618611 else 0
619- let da = if (sigVerify(cX.bodyBytes, cX.proofs[1], ac))
612+ let cW = if (sigVerify(cT.bodyBytes, cT.proofs[1], ab))
620613 then 1
621614 else 0
622- let db = if (sigVerify(cX.bodyBytes, cX.proofs[2], ad))
615+ let cX = if (sigVerify(cT.bodyBytes, cT.proofs[2], ac))
623616 then 1
624617 else 0
625- (((cZ + da) + db) >= 2)
618+ (((cV + cW) + cX) >= 2)
626619 }
627620
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "active"
55
66 let b = "active_all_contracts"
77
88 let c = "shutdown_cause"
99
1010 let d = "last_interest"
1111
1212 let e = "_last_interest"
1313
1414 let f = "_SWOP_amount"
1515
1616 let g = "total_SWOP_amount"
1717
1818 let h = "_SWOP_unlock_height"
1919
2020 let i = "_GSwop_amount"
2121
2222 let j = "total_GSwop_amount"
2323
2424 let k = "_user_total_vote_gSWOP"
2525
2626 let l = "_user_available_for_claim"
2727
2828 let m = "_current_pool_fraction_reward"
2929
3030 let n = "_previous_pool_fraction_reward"
3131
3232 let o = "_pool_reward_update_height"
3333
3434 let p = "reward_update_height"
3535
3636 let q = "reward_update_height_first_pagination"
3737
3838 let r = "_vote_no"
3939
4040 let s = "_vote_yes"
4141
4242 let t = "_status"
4343
4444 let u = "_finish_height"
4545
4646 let v = "voting_active_cell_1"
4747
4848 let w = "voting_active_cell_2"
4949
5050 let x = "voting_active_cell_3"
5151
5252 let y = "sum_reward_current"
5353
5454 let z = "_bought_tickets"
5555
5656 let A = "_swop_per_ticket"
5757
5858 let B = "launchpad_active_id"
5959
6060 let C = "_duration"
6161
6262 let D = "_start_height"
6363
6464 let E = "start_height"
6565
6666 let F = "base_period"
6767
6868 let G = "period_length"
6969
7070 let H = "_user_total_struc"
7171
7272 let I = "_freeze_swop_duration"
7373
7474 let J = "SWOP_id"
7575
7676 let K = "airdrop_fee"
7777
7878 let L = "admin_pub_1"
7979
8080 let M = "admin_pub_2"
8181
8282 let N = "admin_pub_3"
8383
8484 let O = "money_box_pub_key"
8585
8686 let P = "farming_address"
8787
8888 let Q = "voting_address"
8989
9090 let R = "voting_new_pool_address"
9191
9292 let S = "launchpad_address"
9393
94-let T = "airdrop_fee_money_box"
94+let T = "pool_"
9595
96-let U = "pool_"
96+let U = Address(base58'3MvVBtsXroQpy1tsPw21TU2ET9A8WfmrNjz')
9797
98-let V = Address(base58'3MvVBtsXroQpy1tsPw21TU2ET9A8WfmrNjz')
99-
100-func W (X) = {
101- let Y = getString(V, X)
102- if ($isInstanceOf(Y, "String"))
98+func V (W) = {
99+ let X = getString(U, W)
100+ if ($isInstanceOf(X, "String"))
103101 then {
104- let Z = Y
105- fromBase58String(Z)
102+ let Y = X
103+ fromBase58String(Y)
106104 }
107105 else {
108- let aa = Y
109- throw((X + "is empty"))
106+ let Z = X
107+ throw((W + "is empty"))
110108 }
111109 }
112110
113111
114-let ab = W(L)
112+let aa = V(L)
115113
116-let ac = W(M)
114+let ab = V(M)
117115
118-let ad = W(N)
116+let ac = V(N)
119117
120-let ae = W(O)
118+let ad = V(O)
121119
122-let af = Address(W(P))
120+let ae = Address(V(P))
123121
124-let ag = Address(W(Q))
122+let af = Address(V(Q))
125123
126-let ah = Address(W(R))
124+let ag = Address(V(R))
127125
128-let ai = Address(W(S))
126+let ah = Address(V(S))
129127
130-let aj = Address(W(T))
128+let ai = (10102 * 4)
131129
132-let ak = (10102 * 4)
130+let aj = fromBase58String(getStringValue(ae, J))
133131
134-let al = fromBase58String(getStringValue(af, J))
132+let ak = 100000000
135133
136-let am = 100000000
134+let al = 10000000000
137135
138-let an = 10000000000
136+let am = 1000000
139137
140-let ao = 1000000
138+let an = valueOrErrorMessage(getInteger(af, F), "Empty kBasePeriod at voting contract")
141139
142-let ap = valueOrErrorMessage(getInteger(ag, F), "Empty kBasePeriod at voting contract")
140+let ao = valueOrErrorMessage(getInteger(af, E), "Empty kStartHeight at voting contract")
143141
144-let aq = valueOrErrorMessage(getInteger(ag, E), "Empty kStartHeight at voting contract")
142+let ap = valueOrErrorMessage(getInteger(af, G), "Empty kPeriodLength at voting contract")
145143
146-let ar = valueOrErrorMessage(getInteger(ag, G), "Empty kPeriodLength at voting contract")
144+let aq = valueOrElse(getString(ag, v), "")
147145
148-let as = valueOrElse(getString(ah, v), "")
146+let ar = valueOrElse(getString(ag, w), "")
149147
150-let at = valueOrElse(getString(ah, w), "")
148+let as = valueOrElse(getString(ag, x), "")
151149
152-let au = valueOrElse(getString(ah, x), "")
150+let at = valueOrElse(getBoolean(this, a), true)
153151
154-let av = valueOrElse(getBoolean(this, a), true)
152+let au = valueOrElse(getBoolean(U, b), true)
155153
156-let aw = valueOrElse(getBoolean(V, b), true)
154+let av = (an + ((height - ao) / ap))
157155
158-let ax = getIntegerValue(V, K)
159-
160-let ay = (ap + ((height - aq) / ar))
161-
162-func az (aA) = [BooleanEntry(a, false), StringEntry(c, aA)]
156+func aw (ax) = [BooleanEntry(a, false), StringEntry(c, ax)]
163157
164158
165-func aB () = if (if (av)
166- then aw
159+func ay () = if (if (at)
160+ then au
167161 else false)
168162 then unit
169163 else throw("DApp is inactive at this moment")
170164
171165
172-func aC (aD) = if (containsElement([ab, ac, ad], aD.callerPublicKey))
166+func az (aA) = if (containsElement([aa, ab, ac], aA.callerPublicKey))
173167 then unit
174168 else throw("Only admin can call this function")
175169
176170
177-func aE () = valueOrElse(getInteger(this, d), 0)
171+func aB () = valueOrElse(getInteger(this, d), 0)
178172
179173
180-func aF () = {
181- let aG = valueOrElse(getInteger(this, g), 0)
182- let aH = valueOrElse(getInteger(this, j), aG)
183- $Tuple2(aG, aH)
174+func aC () = {
175+ let aD = valueOrElse(getInteger(this, g), 0)
176+ let aE = valueOrElse(getInteger(this, j), aD)
177+ $Tuple2(aD, aE)
184178 }
185179
186180
187-func aI (aJ) = {
188- let aK = valueOrElse(getInteger(this, (aJ + f)), 0)
189- let aL = valueOrElse(getInteger(this, (aJ + i)), aK)
190- $Tuple2(aK, aL)
181+func aF (aG) = {
182+ let aH = valueOrElse(getInteger(this, (aG + f)), 0)
183+ let aI = valueOrElse(getInteger(this, (aG + i)), aH)
184+ $Tuple2(aH, aI)
191185 }
192186
193187
194-func aM (aJ,aN) = {
195- let aO = aI(aJ)
196- let aP = aO._1
197- let aQ = aO._2
198- let aR = valueOrElse(getInteger(this, (aJ + e)), aN)
199- $Tuple3(aR, aP, aQ)
188+func aJ (aG,aK) = {
189+ let aL = aF(aG)
190+ let aM = aL._1
191+ let aN = aL._2
192+ let aO = valueOrElse(getInteger(this, (aG + e)), aK)
193+ $Tuple3(aO, aM, aN)
200194 }
201195
202196
203-func aS (aJ) = valueOrElse(getInteger(this, (aJ + l)), 0)
197+func aP (aG) = valueOrElse(getInteger(this, (aG + l)), 0)
204198
205199
206-func aT (aU,aJ) = {
207- let aV = valueOrElse(getInteger(ah, aU), -1)
208- let aW = valueOrElse(getInteger(ah, (toString(aV) + u)), 0)
209- let aX = valueOrElse(getBoolean(ah, (toString(aV) + t)), true)
210- let aY = height
211- if ((0 > aV))
200+func aQ (aR,aG) = {
201+ let aS = valueOrElse(getInteger(ag, aR), -1)
202+ let aT = valueOrElse(getInteger(ag, (toString(aS) + u)), 0)
203+ let aU = valueOrElse(getBoolean(ag, (toString(aS) + t)), true)
204+ let aV = height
205+ if ((0 > aS))
212206 then 0
213- else if (!(aX))
207+ else if (!(aU))
214208 then 0
215- else if ((aW > aY))
216- then (valueOrElse(getInteger(ah, (((toString(aJ) + "_") + toString(aV)) + s)), 0) + valueOrElse(getInteger(ah, (((toString(aJ) + "_") + toString(aV)) + r)), 0))
209+ else if ((aT > aV))
210+ then (valueOrElse(getInteger(ag, (((toString(aG) + "_") + toString(aS)) + s)), 0) + valueOrElse(getInteger(ag, (((toString(aG) + "_") + toString(aS)) + r)), 0))
217211 else 0
218212 }
219213
220214
221-func aZ (aJ) = {
222- let ba = [aT(as, aJ), aT(at, aJ), aT(au, aJ)]
223- max(ba)
215+func aW (aG) = {
216+ let aX = [aQ(aq, aG), aQ(ar, aG), aQ(as, aG)]
217+ max(aX)
224218 }
225219
226220
227-func bb (aJ) = {
228- let bc = toString(valueOrElse(getInteger(ai, B), 0))
229- if ((bc == "0"))
221+func aY (aG) = {
222+ let aZ = toString(valueOrElse(getInteger(ah, B), 0))
223+ if ((aZ == "0"))
230224 then 0
231225 else {
232- let bd = valueOrElse(getInteger(ai, (bc + D)), 0)
233- let be = valueOrElse(getInteger(ai, (bc + C)), 0)
234- let bf = valueOrElse(getInteger(ai, (bc + I)), 0)
235- let bg = ((bd + be) + bf)
236- if ((height > bg))
226+ let ba = valueOrElse(getInteger(ah, (aZ + D)), 0)
227+ let bb = valueOrElse(getInteger(ah, (aZ + C)), 0)
228+ let bc = valueOrElse(getInteger(ah, (aZ + I)), 0)
229+ let bd = ((ba + bb) + bc)
230+ if ((height > bd))
237231 then 0
238232 else {
239- let bh = valueOrElse(getInteger(ai, (((toString(aJ) + "_") + bc) + z)), 0)
240- let bi = valueOrElse(getInteger(ai, (bc + A)), 0)
241- (bh * bi)
233+ let be = valueOrElse(getInteger(ah, (((toString(aG) + "_") + aZ) + z)), 0)
234+ let bf = valueOrElse(getInteger(ah, (aZ + A)), 0)
235+ (be * bf)
242236 }
243237 }
244238 }
245239
246240
247-func bj (aJ) = if (isDefined(getString(ag, (toString(aJ) + H))))
248- then parseIntValue(split(valueOrErrorMessage(getString(ag, (toString(aJ) + H)), "Empty kUserTotalStruc"), "_")[0])
249- else valueOrElse(getInteger(ag, (toString(aJ) + k)), 0)
241+func bg (aG) = if (isDefined(getString(af, (toString(aG) + H))))
242+ then parseIntValue(split(valueOrErrorMessage(getString(af, (toString(aG) + H)), "Empty kUserTotalStruc"), "_")[0])
243+ else valueOrElse(getInteger(af, (toString(aG) + k)), 0)
250244
251245
252-func bk (aU) = valueOrElse(getInteger(this, (aU + o)), 0)
246+func bh (aR) = valueOrElse(getInteger(this, (aR + o)), 0)
253247
254248
255-func bl (aU) = isDefined(getInteger(this, (aU + o)))
249+func bi (aR) = isDefined(getInteger(this, (aR + o)))
256250
257251
258-func bm (aU) = valueOrElse(getInteger(this, (aU + m)), 0)
252+func bj (aR) = valueOrElse(getInteger(this, (aR + m)), 0)
259253
260254
261-func bn (aU) = valueOrElse(getInteger(this, (aU + n)), 0)
255+func bk (aR) = valueOrElse(getInteger(this, (aR + n)), 0)
262256
263257
264-func bo (aJ) = {
265- let aN = aE()
266- let bp = aM(aJ, aN)
267- let aR = bp._1
268- let bq = bp._2
269- let aQ = bp._3
270- let br = fraction(aQ, (aN - aR), am)
271- let bs = aN
272- $Tuple2(bs, br)
258+func bl (aG) = {
259+ let aK = aB()
260+ let bm = aJ(aG, aK)
261+ let aO = bm._1
262+ let bn = bm._2
263+ let aN = bm._3
264+ let bo = fraction(aN, (aK - aO), ak)
265+ let bp = aK
266+ $Tuple2(bp, bo)
273267 }
274268
275269
276-func bt (bu) = if (isDefined(getString(V, (U + bu))))
270+func bq (br) = if (isDefined(getString(U, (T + br))))
277271 then unit
278272 else throw("DApp is not registered pool")
279273
280274
281-@Callable(aD)
282-func addPool (bu) = valueOrElse(aC(aD), valueOrElse(aB(), valueOrElse(bt(bu), if (isDefined(getInteger(this, (bu + m))))
275+@Callable(aA)
276+func addPool (br) = valueOrElse(az(aA), valueOrElse(ay(), valueOrElse(bq(br), if (isDefined(getInteger(this, (br + m))))
283277 then throw("Pool already in governance")
284- else [IntegerEntry((bu + m), 0), IntegerEntry((bu + n), 0), IntegerEntry((bu + o), getIntegerValue(this, p))])))
278+ else [IntegerEntry((br + m), 0), IntegerEntry((br + n), 0), IntegerEntry((br + o), getIntegerValue(this, p))])))
285279
286280
287281
288-@Callable(aD)
289-func airDrop () = valueOrElse(aB(), {
290- let bv = $Tuple2(aD.payments[0].amount, aD.payments[0].assetId)
291- let bw = bv._1
292- let bx = bv._2
293- if ((bx != al))
282+@Callable(aA)
283+func airDrop () = valueOrElse(ay(), {
284+ let bs = $Tuple2(aA.payments[0].amount, aA.payments[0].assetId)
285+ let bt = bs._1
286+ let bu = bs._2
287+ if ((bu != aj))
294288 then throw("Incorrect pmtAssetId")
295289 else {
296- let by = fraction(bw, ax, ao, CEILING)
297- let bz = aF()
298- let bA = bz._1
299- let aH = bz._2
300- let aN = aE()
301- let bB = (aN + fraction((bw - by), am, aH))
302-[IntegerEntry(d, bB), ScriptTransfer(aj, by, al)]
290+ let bv = aC()
291+ let bw = bv._1
292+ let aE = bv._2
293+ let aK = aB()
294+ let bx = (aK + fraction(bt, ak, aE))
295+[IntegerEntry(d, bx)]
303296 }
304297 })
305298
306299
307300
308-@Callable(aD)
309-func lockSWOP () = valueOrElse(aB(), {
310- let bC = $Tuple2(aD.payments[0].amount, aD.payments[0].assetId)
311- let bw = bC._1
312- let bx = bC._2
313- if ((bx != al))
301+@Callable(aA)
302+func lockSWOP () = valueOrElse(ay(), {
303+ let by = $Tuple2(aA.payments[0].amount, aA.payments[0].assetId)
304+ let bt = by._1
305+ let bu = by._2
306+ if ((bu != aj))
314307 then throw("Incorrect pmtAssetId")
315308 else {
316- let aJ = toString(aD.caller)
317- let aN = aE()
318- let bD = aI(aJ)
319- let bq = bD._1
320- let aL = bD._2
321- let bE = bo(aJ)
322- let bs = bE._1
323- let bF = bE._2
324- let bG = aS(aJ)
325- let bH = (bG + bF)
326- let bI = (bq + bw)
327- let bJ = (aL + bw)
328- let bK = aF()
329- let bA = bK._1
330- let aH = bK._2
331- let bL = (bA + bw)
332- let bM = (aH + bw)
333-[IntegerEntry((aJ + h), (height + ak)), IntegerEntry((aJ + e), bs), IntegerEntry((aJ + f), bI), IntegerEntry((aJ + i), bJ), IntegerEntry((aJ + l), bH), IntegerEntry(g, bL), IntegerEntry(j, bM)]
309+ let aG = toString(aA.caller)
310+ let aK = aB()
311+ let bz = aF(aG)
312+ let bn = bz._1
313+ let aI = bz._2
314+ let bA = bl(aG)
315+ let bp = bA._1
316+ let bB = bA._2
317+ let bC = aP(aG)
318+ let bD = (bC + bB)
319+ let bE = (bn + bt)
320+ let bF = (aI + bt)
321+ let bG = aC()
322+ let bw = bG._1
323+ let aE = bG._2
324+ let bH = (bw + bt)
325+ let bI = (aE + bt)
326+[IntegerEntry((aG + h), (height + ai)), IntegerEntry((aG + e), bp), IntegerEntry((aG + f), bE), IntegerEntry((aG + i), bF), IntegerEntry((aG + l), bD), IntegerEntry(g, bH), IntegerEntry(j, bI)]
334327 }
335328 })
336329
337330
338331
339-@Callable(aD)
340-func withdrawSWOP (bN) = valueOrElse(aB(), {
341- let aJ = toString(aD.caller)
342- let bO = valueOrElse(getInteger(this, (aJ + h)), 0)
343- if ((0 >= bN))
332+@Callable(aA)
333+func withdrawSWOP (bJ) = valueOrElse(ay(), {
334+ let aG = toString(aA.caller)
335+ let bK = valueOrElse(getInteger(this, (aG + h)), 0)
336+ if ((0 >= bJ))
344337 then throw("withdrawAmount <= 0")
345- else if ((bO > height))
346- then throw(("You can't withdraw till " + toString(bO)))
338+ else if ((bK > height))
339+ then throw(("You can't withdraw till " + toString(bK)))
347340 else {
348- let bP = aF()
349- let bA = bP._1
350- let aH = bP._2
351- let bQ = aI(aJ)
352- let bq = bQ._1
353- let aL = bQ._2
354- let bR = bo(aJ)
355- let bs = bR._1
356- let bF = bR._2
357- let bS = bj(aD.caller)
358- let bT = aZ(aD.caller)
359- let bU = bb(aD.caller)
360- if (if ((0 > bS))
341+ let bL = aC()
342+ let bw = bL._1
343+ let aE = bL._2
344+ let bM = aF(aG)
345+ let bn = bM._1
346+ let aI = bM._2
347+ let bN = bl(aG)
348+ let bp = bN._1
349+ let bB = bN._2
350+ let bO = bg(aA.caller)
351+ let bP = aW(aA.caller)
352+ let bQ = aY(aA.caller)
353+ if (if ((0 > bO))
361354 then true
362- else (0 > bT))
355+ else (0 > bP))
363356 then throw("userVoteAmount < 0 || userVoteAmountForNewPool < 0")
364357 else {
365- let bV = (bq - max([bT, bS, bU]))
366- if ((bN > bV))
358+ let bR = (bn - max([bP, bO, bQ]))
359+ if ((bJ > bR))
367360 then throw("withdrawAmount > availableToUnstake")
368361 else {
369- let bG = aS(aJ)
370- let bH = (bG + bF)
371- let bL = (bA - bN)
372- let bW = (bq - bN)
373- let bM = ((aH - aL) + bW)
374-[IntegerEntry((aJ + e), bs), IntegerEntry((aJ + f), bW), IntegerEntry((aJ + i), bW), IntegerEntry((aJ + l), bH), IntegerEntry(g, bL), IntegerEntry(j, bM), ScriptTransfer(aD.caller, bN, al)]
362+ let bC = aP(aG)
363+ let bD = (bC + bB)
364+ let bH = (bw - bJ)
365+ let bS = (bn - bJ)
366+ let bI = ((aE - aI) + bS)
367+[IntegerEntry((aG + e), bp), IntegerEntry((aG + f), bS), IntegerEntry((aG + i), bS), IntegerEntry((aG + l), bD), IntegerEntry(g, bH), IntegerEntry(j, bI), ScriptTransfer(aA.caller, bJ, aj)]
375368 }
376369 }
377370 }
378371 })
379372
380373
381374
382-@Callable(aD)
383-func claimAndWithdrawSWOP () = valueOrElse(aB(), {
384- let aJ = toString(aD.caller)
385- let bG = aS(aJ)
386- let bX = bo(aJ)
387- let bs = bX._1
388- let br = bX._2
389- let bY = (bG + br)
390- if ((bY == 0))
375+@Callable(aA)
376+func claimAndWithdrawSWOP () = valueOrElse(ay(), {
377+ let aG = toString(aA.caller)
378+ let bC = aP(aG)
379+ let bT = bl(aG)
380+ let bp = bT._1
381+ let bo = bT._2
382+ let bU = (bC + bo)
383+ if ((bU == 0))
391384 then throw("You have 0 available SWOP")
392- else [IntegerEntry((aJ + e), bs), IntegerEntry((aJ + l), 0), ScriptTransfer(aD.caller, bY, al)]
385+ else [IntegerEntry((aG + e), bp), IntegerEntry((aG + l), 0), ScriptTransfer(aA.caller, bU, aj)]
393386 })
394387
395388
396389
397-@Callable(aD)
398-func claimAndStakeSWOP () = valueOrElse(aB(), {
399- let aJ = toString(aD.caller)
400- let bZ = aF()
401- let bA = bZ._1
402- let aH = bZ._2
403- let ca = aI(aJ)
404- let bq = ca._1
405- let aL = ca._2
406- let bG = aS(aJ)
407- let cb = bo(aJ)
408- let bs = cb._1
409- let br = cb._2
410- let bY = (bG + br)
411- let bI = (bq + bY)
412- let bJ = (aL + (bY * 2))
413- let bL = (bA + bY)
414- let bM = (aH + (bY * 2))
415- if ((bY == 0))
390+@Callable(aA)
391+func claimAndStakeSWOP () = valueOrElse(ay(), {
392+ let aG = toString(aA.caller)
393+ let bV = aC()
394+ let bw = bV._1
395+ let aE = bV._2
396+ let bW = aF(aG)
397+ let bn = bW._1
398+ let aI = bW._2
399+ let bC = aP(aG)
400+ let bX = bl(aG)
401+ let bp = bX._1
402+ let bo = bX._2
403+ let bU = (bC + bo)
404+ let bE = (bn + bU)
405+ let bF = (aI + (bU * 2))
406+ let bH = (bw + bU)
407+ let bI = (aE + (bU * 2))
408+ if ((bU == 0))
416409 then throw("You have 0 available SWOP")
417- else [IntegerEntry((aJ + h), (height + ak)), IntegerEntry((aJ + e), bs), IntegerEntry(g, bL), IntegerEntry(j, bM), IntegerEntry((aJ + f), bI), IntegerEntry((aJ + i), bJ), IntegerEntry((aJ + l), 0)]
410+ else [IntegerEntry((aG + h), (height + ai)), IntegerEntry((aG + e), bp), IntegerEntry(g, bH), IntegerEntry(j, bI), IntegerEntry((aG + f), bE), IntegerEntry((aG + i), bF), IntegerEntry((aG + l), 0)]
418411 })
419412
420413
421414
422-@Callable(aD)
423-func lockSWOPFromFarming () = valueOrElse(aB(), {
424- let cc = $Tuple2(aD.payments[0].amount, aD.payments[0].assetId)
425- let bw = cc._1
426- let bx = cc._2
427- if ((aD.caller != af))
415+@Callable(aA)
416+func lockSWOPFromFarming () = valueOrElse(ay(), {
417+ let bY = $Tuple2(aA.payments[0].amount, aA.payments[0].assetId)
418+ let bt = bY._1
419+ let bu = bY._2
420+ if ((aA.caller != ae))
428421 then throw("Only farming can call this function")
429- else if ((bx != al))
422+ else if ((bu != aj))
430423 then throw("Incorrect pmtAssetId")
431424 else {
432- let aJ = toString(aD.originCaller)
433- let aN = aE()
434- let cd = aI(aJ)
435- let bq = cd._1
436- let aL = cd._2
437- let ce = bo(aJ)
438- let bs = ce._1
439- let bF = ce._2
440- let bG = aS(aJ)
441- let bH = (bG + bF)
442- let bI = (bq + bw)
443- let bJ = (aL + (bw * 2))
444- let cf = aF()
445- let bA = cf._1
446- let aH = cf._2
447- let bL = (bA + bw)
448- let bM = (aH + (bw * 2))
449-[IntegerEntry((aJ + h), (height + ak)), IntegerEntry((aJ + e), bs), IntegerEntry((aJ + f), bI), IntegerEntry((aJ + i), bJ), IntegerEntry((aJ + l), bH), IntegerEntry(g, bL), IntegerEntry(j, bM)]
425+ let aG = toString(aA.originCaller)
426+ let aK = aB()
427+ let bZ = aF(aG)
428+ let bn = bZ._1
429+ let aI = bZ._2
430+ let ca = bl(aG)
431+ let bp = ca._1
432+ let bB = ca._2
433+ let bC = aP(aG)
434+ let bD = (bC + bB)
435+ let bE = (bn + bt)
436+ let bF = (aI + (bt * 2))
437+ let cb = aC()
438+ let bw = cb._1
439+ let aE = cb._2
440+ let bH = (bw + bt)
441+ let bI = (aE + (bt * 2))
442+[IntegerEntry((aG + h), (height + ai)), IntegerEntry((aG + e), bp), IntegerEntry((aG + f), bE), IntegerEntry((aG + i), bF), IntegerEntry((aG + l), bD), IntegerEntry(g, bH), IntegerEntry(j, bI)]
450443 }
451444 })
452445
453446
454447
455-@Callable(aD)
456-func updateWeights (cg,ch,ci,cj) = valueOrElse(aB(), {
457- let ck = 10
458- let cl = valueOrElse(getInteger(this, p), 0)
459- if (!(containsElement([ab, ac, ad, ae], aD.callerPublicKey)))
448+@Callable(aA)
449+func updateWeights (cc,cd,ce,cf) = valueOrElse(ay(), {
450+ let cg = 10
451+ let ch = valueOrElse(getInteger(this, p), 0)
452+ if (!(containsElement([aa, ab, ac, ad], aA.callerPublicKey)))
460453 then throw("Only admin can call this function")
461- else if ((size(cg) > ck))
462- then throw(("Max amount of pool is " + toString(ck)))
463- else if ((cl >= ci))
454+ else if ((size(cc) > cg))
455+ then throw(("Max amount of pool is " + toString(cg)))
456+ else if ((ch >= ce))
464457 then throw("rewardUpdateHeight <= totalRewardUpdateHeight")
465- else if ((height >= ci))
458+ else if ((height >= ce))
466459 then throw("height >= rewardUpdateHeight")
467- else if ((0 >= ci))
460+ else if ((0 >= ce))
468461 then throw("0 >= rewardUpdateHeight ")
469462 else {
470- func cm (cn,co) = (cn + co)
463+ func ci (cj,ck) = (cj + ck)
471464
472- func cp (cq,aU) = {
473- let cr = bk(aU)
474- if (if (!(bl(aU)))
465+ func cl (cm,aR) = {
466+ let cn = bh(aR)
467+ if (if (!(bi(aR)))
475468 then true
476- else if ((ci != cr))
477- then (cr == cl)
469+ else if ((ce != cn))
470+ then (cn == ch)
478471 else false)
479472 then {
480- let cs = bm(aU)
481-IntegerEntry((aU + n), cs) :: cq
473+ let co = bj(aR)
474+IntegerEntry((aR + n), co) :: cm
482475 }
483476 else {
484- let cs = bn(aU)
485-IntegerEntry((aU + n), cs) :: cq
477+ let co = bk(aR)
478+IntegerEntry((aR + n), co) :: cm
486479 }
487480 }
488481
489- func ct (cq,aU) = {
490- let cu = value(indexOf(cg, aU))
491- let cs = ch[cu]
492- if ((0 > cs))
482+ func cp (cm,aR) = {
483+ let cq = value(indexOf(cc, aR))
484+ let co = cd[cq]
485+ if ((0 > co))
493486 then throw("PoolReward < 0")
494- else IntegerEntry((aU + m), cs) :: cq
487+ else IntegerEntry((aR + m), co) :: cm
495488 }
496489
497- func cv (cq,aU) = {
498- let cw = ci
499- let cx = invoke(af, "updatePoolInterest", [aU], nil)
500- if ((cx == cx))
501- then IntegerEntry((aU + o), cw) :: cq
490+ func cr (cm,aR) = {
491+ let cs = ce
492+ let ct = invoke(ae, "updatePoolInterest", [aR], nil)
493+ if ((ct == ct))
494+ then IntegerEntry((aR + o), cs) :: cm
502495 else throw("Strict value is not equal to itself.")
503496 }
504497
505- func cy (cz,cj) = if ((cj == 0))
506- then if ((cz > an))
507- then throw(((("sumRewardPrevious > totalVoteShare or sumRewardCurrent > totalVoteShare - " + toString(cj)) + " ") + toString(cz)))
508- else $Tuple2([IntegerEntry(y, cz)], [IntegerEntry(q, ci)])
509- else if ((cj == 1))
498+ func cu (cv,cf) = if ((cf == 0))
499+ then if ((cv > al))
500+ then throw(((("sumRewardPrevious > totalVoteShare or sumRewardCurrent > totalVoteShare - " + toString(cf)) + " ") + toString(cv)))
501+ else $Tuple2([IntegerEntry(y, cv)], [IntegerEntry(q, ce)])
502+ else if ((cf == 1))
510503 then {
511- let cA = valueOrElse(getInteger(this, y), 0)
512- let cB = valueOrElse(getInteger(this, q), 0)
513- if (((cz + cA) > an))
514- then throw(((("sumRewardPrevious > totalVoteShare or sumRewardCurrent > totalVoteShare - " + toString(cj)) + " ") + toString((cz + cA))))
515- else if ((cB != ci))
504+ let cw = valueOrElse(getInteger(this, y), 0)
505+ let cx = valueOrElse(getInteger(this, q), 0)
506+ if (((cv + cw) > al))
507+ then throw(((("sumRewardPrevious > totalVoteShare or sumRewardCurrent > totalVoteShare - " + toString(cf)) + " ") + toString((cv + cw))))
508+ else if ((cx != ce))
516509 then throw("current rewardUpdateHeight != rewardUpdateHeightFirstPaginationEntry")
517- else $Tuple2([IntegerEntry(y, (cz + cA))], nil)
510+ else $Tuple2([IntegerEntry(y, (cv + cw))], nil)
518511 }
519- else if ((cj == 2))
512+ else if ((cf == 2))
520513 then {
521- let cC = (valueOrElse(getInteger(this, y), 0) + cz)
522- let cB = valueOrElse(getInteger(this, q), 0)
523- if ((cC != an))
514+ let cy = (valueOrElse(getInteger(this, y), 0) + cv)
515+ let cx = valueOrElse(getInteger(this, q), 0)
516+ if ((cy != al))
524517 then throw("sumRewardPrevious != totalVoteShare or sumRewardCurrent != totalVoteShare")
525- else if ((cB != ci))
518+ else if ((cx != ce))
526519 then throw("current rewardUpdateHeight != rewardUpdateHeightFirstPaginationEntry")
527- else $Tuple2([IntegerEntry(y, cC)], nil)
520+ else $Tuple2([IntegerEntry(y, cy)], nil)
528521 }
529522 else throw("Incorrect pagination")
530523
531- let cD = {
532- let cE = cg
533- let cF = size(cE)
534- let cG = nil
535- func cH (cI,cJ) = if ((cJ >= cF))
536- then cI
537- else cp(cI, cE[cJ])
524+ let cz = {
525+ let cA = cc
526+ let cB = size(cA)
527+ let cC = nil
528+ func cD (cE,cF) = if ((cF >= cB))
529+ then cE
530+ else cl(cE, cA[cF])
538531
539- func cK (cI,cJ) = if ((cJ >= cF))
540- then cI
532+ func cG (cE,cF) = if ((cF >= cB))
533+ then cE
541534 else throw("List size exceeds 10")
542535
543- cK(cH(cH(cH(cH(cH(cH(cH(cH(cH(cH(cG, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
536+ cG(cD(cD(cD(cD(cD(cD(cD(cD(cD(cD(cC, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
544537 }
545- let cL = {
546- let cE = cg
547- let cF = size(cE)
548- let cG = nil
549- func cM (cI,cJ) = if ((cJ >= cF))
550- then cI
551- else ct(cI, cE[cJ])
538+ let cH = {
539+ let cA = cc
540+ let cB = size(cA)
541+ let cC = nil
542+ func cI (cE,cF) = if ((cF >= cB))
543+ then cE
544+ else cp(cE, cA[cF])
552545
553- func cN (cI,cJ) = if ((cJ >= cF))
554- then cI
546+ func cJ (cE,cF) = if ((cF >= cB))
547+ then cE
555548 else throw("List size exceeds 10")
556549
557- cN(cM(cM(cM(cM(cM(cM(cM(cM(cM(cM(cG, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
550+ cJ(cI(cI(cI(cI(cI(cI(cI(cI(cI(cI(cC, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
558551 }
559- let cO = {
560- let cE = cg
561- let cF = size(cE)
562- let cG = nil
563- func cP (cI,cJ) = if ((cJ >= cF))
564- then cI
565- else cv(cI, cE[cJ])
552+ let cK = {
553+ let cA = cc
554+ let cB = size(cA)
555+ let cC = nil
556+ func cL (cE,cF) = if ((cF >= cB))
557+ then cE
558+ else cr(cE, cA[cF])
566559
567- func cQ (cI,cJ) = if ((cJ >= cF))
568- then cI
560+ func cM (cE,cF) = if ((cF >= cB))
561+ then cE
569562 else throw("List size exceeds 10")
570563
571- cQ(cP(cP(cP(cP(cP(cP(cP(cP(cP(cP(cG, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
564+ cM(cL(cL(cL(cL(cL(cL(cL(cL(cL(cL(cC, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
572565 }
573- let cR = {
574- let cE = ch
575- let cF = size(cE)
576- let cG = 0
577- func cS (cI,cJ) = if ((cJ >= cF))
578- then cI
579- else cm(cI, cE[cJ])
566+ let cN = {
567+ let cA = cd
568+ let cB = size(cA)
569+ let cC = 0
570+ func cO (cE,cF) = if ((cF >= cB))
571+ then cE
572+ else ci(cE, cA[cF])
580573
581- func cT (cI,cJ) = if ((cJ >= cF))
582- then cI
574+ func cP (cE,cF) = if ((cF >= cB))
575+ then cE
583576 else throw("List size exceeds 10")
584577
585- cT(cS(cS(cS(cS(cS(cS(cS(cS(cS(cS(cG, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
578+ cP(cO(cO(cO(cO(cO(cO(cO(cO(cO(cO(cC, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
586579 }
587- let cU = cy(cR, cj)
588- let cV = cU._1
589- let cB = cU._2
590- let cW = if ((cj == 2))
591- then [IntegerEntry(p, ci)]
580+ let cQ = cu(cN, cf)
581+ let cR = cQ._1
582+ let cx = cQ._2
583+ let cS = if ((cf == 2))
584+ then [IntegerEntry(p, ce)]
592585 else nil
593- if ((height > ci))
586+ if ((height > ce))
594587 then throw("rewardUpdateHeight < height")
595- else (((((cD ++ cL) ++ cO) ++ cV) ++ cW) ++ cB)
588+ else (((((cz ++ cH) ++ cK) ++ cR) ++ cS) ++ cx)
596589 }
597590 })
598591
599592
600593
601-@Callable(aD)
602-func shutdown () = valueOrElse(aC(aD), if (!(av))
594+@Callable(aA)
595+func shutdown () = valueOrElse(az(aA), if (!(at))
603596 then throw(("DApp is already suspended. Cause: " + valueOrElse(getString(this, c), "the cause wasn't specified")))
604- else az("Paused by admin"))
597+ else aw("Paused by admin"))
605598
606599
607600
608-@Callable(aD)
609-func activate () = valueOrElse(aC(aD), if (av)
601+@Callable(aA)
602+func activate () = valueOrElse(az(aA), if (at)
610603 then throw("DApp is already active")
611604 else [BooleanEntry(a, true), DeleteEntry(c)])
612605
613606
614-@Verifier(cX)
615-func cY () = {
616- let cZ = if (sigVerify(cX.bodyBytes, cX.proofs[0], ab))
607+@Verifier(cT)
608+func cU () = {
609+ let cV = if (sigVerify(cT.bodyBytes, cT.proofs[0], aa))
617610 then 1
618611 else 0
619- let da = if (sigVerify(cX.bodyBytes, cX.proofs[1], ac))
612+ let cW = if (sigVerify(cT.bodyBytes, cT.proofs[1], ab))
620613 then 1
621614 else 0
622- let db = if (sigVerify(cX.bodyBytes, cX.proofs[2], ad))
615+ let cX = if (sigVerify(cT.bodyBytes, cT.proofs[2], ac))
623616 then 1
624617 else 0
625- (((cZ + da) + db) >= 2)
618+ (((cV + cW) + cX) >= 2)
626619 }
627620

github/deemru/w8io/873ac7e 
244.71 ms