tx · 32QzWNBiqy53yKfvr6w2QkMwgABWVxejMjJemc8iRoZ9

3N5W8da2iiijVieA6qLGo7KzCJj8B19smWU:  -0.01400000 Waves

2021.06.11 20:23 [1565993] smart account 3N5W8da2iiijVieA6qLGo7KzCJj8B19smWU > SELF 0.00000000 Waves

{ "type": 13, "id": "32QzWNBiqy53yKfvr6w2QkMwgABWVxejMjJemc8iRoZ9", "fee": 1400000, "feeAssetId": null, "timestamp": 1623432229214, "version": 2, "chainId": 84, "sender": "3N5W8da2iiijVieA6qLGo7KzCJj8B19smWU", "senderPublicKey": "AWADFmQjf2WbDSqb24S9YZpix3VEdiBdeiJ2J2sSfQ49", "proofs": [ "5fQnj21MAugTqG4jowhoUCfnWfi1NxstPQpVeXaV74zTddVo9WBgWBtvPfMXD2TAydYxjTkEL2rkEWjEg9oKnnBB" ], "script": "base64:AAIEAAAAAAAAAB0IAhIAEgASAwoBARIAEgASCAoGGBEYEQEBEgASAAAAAE0AAAAADGFkbWluUHViS2V5MQEAAAAgBM915WTQwQ9OZ7kfE2TEGg3qhCRCMX0zkF1AWAqdk0oAAAAADGFkbWluUHViS2V5MgEAAAAgBM915WTQwQ9OZ7kfE2TEGg3qhCRCMX0zkF1AWAqdk0oAAAAADGFkbWluUHViS2V5MwEAAAAgBM915WTQwQ9OZ7kfE2TEGg3qhCRCMX0zkF1AWAqdk0oAAAAAFGFkbWluUHViS2V5U3RhcnRTdG9wAQAAACAEz3XlZNDBD05nuR8TZMQaDeqEJEIxfTOQXUBYCp2TSgAAAAARYWRtaW5QdWJLZXlXYWxsZXQBAAAAID53WmVaVsn8KVcztbwNRS3KzKf4hZION3dY82IVUhQSAAAAAAlrZXlBY3RpdmUCAAAABmFjdGl2ZQAAAAAIa2V5Q2F1c2UCAAAADnNodXRkb3duX2NhdXNlAAAAAA9rZXlMYXN0SW50ZXJlc3QCAAAADWxhc3RfaW50ZXJlc3QAAAAAE2tleVVzZXJMYXN0SW50ZXJlc3QCAAAADl9sYXN0X2ludGVyZXN0AAAAABFrZXlVc2VyU1dPUExvY2tlZAIAAAAMX1NXT1BfYW1vdW50AAAAABRrZXlVc2VyR2V0QmFja0hlaWdodAIAAAAOX2dldEJhY2tIZWlnaHQAAAAAEmtleVRvdGFsU1dPUExvY2tlZAIAAAARdG90YWxfU1dPUF9hbW91bnQAAAAAEmtVc2VyVG90YWxWb3RlU1dPUAIAAAAVX3VzZXJfdG90YWxfU1dPUF92b3RlAAAAABdrZXlVc2VyVm90ZU9wdGlvbkFtb3VudAIAAAATX1NXT1Bfb3B0aW9uX2Ftb3VudAAAAAAYa2V5VG90YWxWb3RlT3B0aW9uQW1vdW50AgAAABh0b3RhbF9TV09QX29wdGlvbl9hbW91bnQAAAAAGGtleVVzZXJTV09QQ2xhaW1lZEFtb3VudAIAAAAUX1NXT1BfY2xhaW1lZF9hbW91bnQAAAAAHGtleVVzZXJTV09QTGFzdENsYWltZWRBbW91bnQCAAAAGV9TV09QX2xhc3RfY2xhaW1lZF9hbW91bnQAAAAAC2tleVZvdGVOYW1lAgAAAAl2b3RlX25hbWUAAAAADWtleU9wdGlvbk5hbWUCAAAADF9vcHRpb25fbmFtZQAAAAAUa2V5Vm90aW5nU3RhcnRIZWlnaHQCAAAADF9zdGFydEhlaWdodAAAAAAPa2V5Vm90ZUR1cmF0aW9uAgAAAA5fdm90ZV9kdXJhdGlvbgAAAAAca2V5UmV3YXJkUG9vbEZyYWN0aW9uQ3VycmVudAIAAAAdX2N1cnJlbnRfcG9vbF9mcmFjdGlvbl9yZXdhcmQAAAAAHWtleVJld2FyZFBvb2xGcmFjdGlvblByZXZpb3VzAgAAAB5fcHJldmlvdXNfcG9vbF9mcmFjdGlvbl9yZXdhcmQAAAAAFWtleUhlaWdodFBvb2xGcmFjdGlvbgIAAAAaX3Bvb2xfcmV3YXJkX3VwZGF0ZV9oZWlnaHQAAAAAHWtleVRvdGFsUmV3YXJkUGVyQmxvY2tDdXJyZW50AgAAAB50b3RhbF9yZXdhcmRfcGVyX2Jsb2NrX2N1cnJlbnQAAAAAHmtleVRvdGFsUmV3YXJkUGVyQmxvY2tQcmV2aW91cwIAAAAfdG90YWxfcmV3YXJkX3Blcl9ibG9ja19wcmV2aW91cwAAAAAVa2V5UmV3YXJkVXBkYXRlSGVpZ2h0AgAAABRyZXdhcmRfdXBkYXRlX2hlaWdodAAAAAAka2V5UmV3YXJkVXBkYXRlRmlyc3RQYWdpbmF0aW9uSGVpZ2h0AgAAACVyZXdhcmRfdXBkYXRlX2hlaWdodF9maXJzdF9wYWdpbmF0aW9uAAAAABVrZXlOb1ZvdGluZ0Zvck5ld1Bvb2wCAAAACF92b3RlX25vAAAAABZrZXlZZXNWb3RpbmdGb3JOZXdQb29sAgAAAAlfdm90ZV95ZXMAAAAAG2tleUFtb3VudE9mVm90aW5nRm9yTmV3UG9vbAIAAAARbWF4X2Ftb3VudF92b3RpbmcAAAAAG2tleVN0YXR1c09mVm90aW5nRm9yTmV3UG9vbAIAAAAHX3N0YXR1cwAAAAAfa2V5SGVpZ2h0T2ZQb29sVm90aW5nRm9yTmV3UG9vbAIAAAAOX2ZpbmlzaF9oZWlnaHQAAAAAD2FjdGl2ZVZvdGVGaXJzdAIAAAAUdm90aW5nX2FjdGl2ZV9jZWxsXzEAAAAAEGFjdGl2ZVZvdGVTZWNvbmQCAAAAFHZvdGluZ19hY3RpdmVfY2VsbF8yAAAAAA9hY3RpdmVWb3RlVGhpcmQCAAAAFHZvdGluZ19hY3RpdmVfY2VsbF8zAAAAAA5rZXlUZW1wUHJldlN1bQIAAAATc3VtX3Jld2FyZF9wcmV2aW91cwAAAAANa2V5VGVtcEN1clN1bQIAAAASc3VtX3Jld2FyZF9jdXJyZW50AAAAAAhpc0FjdGl2ZQkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBsAAAACBQAAAAR0aGlzBQAAAAlrZXlBY3RpdmUGAAAAABJmYXJtaW5nU1dPUEFkZHJlc3MJAQAAAAdBZGRyZXNzAAAAAQEAAAAaAVQsS4J2Ro3vGTI9KakEzAv69iHSjreZL2YAAAAAEnZvdGluZ0xpdGVDb250cmFjdAkBAAAAB0FkZHJlc3MAAAABAQAAABoBVBo2ft9Xop0naVz+v/cm1Of7ocNoPiDKfwAAAAAQdm90aW5nRm9yTmV3UG9vbAkBAAAAB0FkZHJlc3MAAAABAQAAABoBVHYh4XkVy3N3fz+gY3RQqyMsWxkYg/NLggAAAAAJa2V5U1dPUGlkAgAAAAdTV09QX2lkAAAAAARTV09QCQACWQAAAAEJAQAAABFAZXh0ck5hdGl2ZSgxMDUzKQAAAAIFAAAAEmZhcm1pbmdTV09QQWRkcmVzcwUAAAAJa2V5U1dPUGlkAAAAAApzY2FsZVZhbHVlAAAAAAAF9eEAAAAAAA50b3RhbFZvdGVTaGFyZQAAAAACVAvkAAAAAAAMa1N0YXJ0SGVpZ2h0AgAAAAxzdGFydF9oZWlnaHQAAAAAC2tCYXNlUGVyaW9kAgAAAAtiYXNlX3BlcmlvZAAAAAANa1BlcmlvZExlbmd0aAIAAAANcGVyaW9kX2xlbmd0aAAAAAAPa1VzZXJUb3RhbFN0cnVjAgAAABFfdXNlcl90b3RhbF9zdHJ1YwAAAAAKYmFzZVBlcmlvZAkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEGgAAAAIFAAAAEnZvdGluZ0xpdGVDb250cmFjdAUAAAALa0Jhc2VQZXJpb2QCAAAAJEVtcHR5IGtCYXNlUGVyaW9kIGF0IHZvdGluZyBjb250cmFjdAAAAAALc3RhcnRIZWlnaHQJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABBoAAAACBQAAABJ2b3RpbmdMaXRlQ29udHJhY3QFAAAADGtTdGFydEhlaWdodAIAAAAlRW1wdHkga1N0YXJ0SGVpZ2h0IGF0IHZvdGluZyBjb250cmFjdAAAAAAMcGVyaW9kTGVuZ3RoCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQaAAAAAgUAAAASdm90aW5nTGl0ZUNvbnRyYWN0BQAAAA1rUGVyaW9kTGVuZ3RoAgAAACZFbXB0eSBrUGVyaW9kTGVuZ3RoIGF0IHZvdGluZyBjb250cmFjdAAAAAAPZmlyc3RBY3RpdmVWb3RlCQEAAAALdmFsdWVPckVsc2UAAAACCQAEHQAAAAIFAAAAEHZvdGluZ0Zvck5ld1Bvb2wFAAAAD2FjdGl2ZVZvdGVGaXJzdAIAAAAAAAAAABBzZWNvbmRBY3RpdmVWb3RlCQEAAAALdmFsdWVPckVsc2UAAAACCQAEHQAAAAIFAAAAEHZvdGluZ0Zvck5ld1Bvb2wFAAAAEGFjdGl2ZVZvdGVTZWNvbmQCAAAAAAAAAAAPdGhpcmRBY3RpdmVWb3RlCQEAAAALdmFsdWVPckVsc2UAAAACCQAEHQAAAAIFAAAAEHZvdGluZ0Zvck5ld1Bvb2wFAAAAD2FjdGl2ZVZvdGVUaGlyZAIAAAAAAAAAABBjdXJyVm90aW5nUGVyaW9kCQAAZAAAAAIFAAAACmJhc2VQZXJpb2QJAABpAAAAAgkAAGUAAAACBQAAAAZoZWlnaHQFAAAAC3N0YXJ0SGVpZ2h0BQAAAAxwZXJpb2RMZW5ndGgBAAAAB3N1c3BlbmQAAAABAAAABWNhdXNlCQAETAAAAAIJAQAAAAxCb29sZWFuRW50cnkAAAACBQAAAAlrZXlBY3RpdmUHCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAACGtleUNhdXNlBQAAAAVjYXVzZQUAAAADbmlsAQAAABJ0aHJvd05vdEVub3VnaFNXT1AAAAAACQAAAgAAAAECAAAARk5vdCBlbm91Z2ggU1dPUDogdXNlclNXT1BMb2NrZWQgLSB1c2VyVG90YWxWb3RlQW1vdW50IDwgdm90ZVNXT1BBbW91bnQBAAAAE2dldExhc3RJbnRlcmVzdEluZm8AAAAABAAAAAxsYXN0SW50ZXJlc3QJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwUAAAAPa2V5TGFzdEludGVyZXN0AAAAAAAAAAAABQAAAAxsYXN0SW50ZXJlc3QBAAAAEWdldFVzZXJTV09QTG9ja2VkAAAAAQAAAAR1c2VyCQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAABHRoaXMJAAEsAAAAAgkABCUAAAABBQAAAAR1c2VyBQAAABFrZXlVc2VyU1dPUExvY2tlZAAAAAAAAAAAAAEAAAAYZ2V0VXNlclNXT1BDbGFpbWVkQW1vdW50AAAAAQAAAAR1c2VyCQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAABHRoaXMJAAEsAAAAAgkABCUAAAABBQAAAAR1c2VyBQAAABhrZXlVc2VyU1dPUENsYWltZWRBbW91bnQAAAAAAAAAAAABAAAAFmdldFVzZXJUb3RhbFZvdGVBbW91bnQAAAABAAAABHVzZXIJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAASdm90aW5nTGl0ZUNvbnRyYWN0CQABLAAAAAIJAAQlAAAAAQUAAAAEdXNlcgUAAAASa1VzZXJUb3RhbFZvdGVTV09QAAAAAAAAAAAAAQAAABNnZXRVc2VySW50ZXJlc3RJbmZvAAAAAgAAAAR1c2VyAAAADGxhc3RJbnRlcmVzdAQAAAAOdXNlclNXT1BBbW91bnQJAQAAABFnZXRVc2VyU1dPUExvY2tlZAAAAAEFAAAABHVzZXIEAAAAEHVzZXJMYXN0SW50ZXJlc3QJAAQaAAAAAgUAAAAEdGhpcwkAASwAAAACCQAEJQAAAAEFAAAABHVzZXIFAAAAE2tleVVzZXJMYXN0SW50ZXJlc3QEAAAAFXVzZXJMYXN0SW50ZXJlc3RWYWx1ZQQAAAAHJG1hdGNoMAUAAAAQdXNlckxhc3RJbnRlcmVzdAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAABB1c2VyTGFzdEludGVyZXN0BQAAAAckbWF0Y2gwBQAAABB1c2VyTGFzdEludGVyZXN0BQAAAAxsYXN0SW50ZXJlc3QJAAUUAAAAAgUAAAAVdXNlckxhc3RJbnRlcmVzdFZhbHVlBQAAAA51c2VyU1dPUEFtb3VudAEAAAAgZ2V0VXNlclRvdGFsVm90ZUFtb3VudEZvck9uZVBvb2wAAAACAAAABHBvb2wAAAAEdXNlcgQAAAAGdm90aW5nCQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAAEHZvdGluZ0Zvck5ld1Bvb2wFAAAABHBvb2wA//////////8EAAAADmhlaWdodE9mVm90aW5nCQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAAEHZvdGluZ0Zvck5ld1Bvb2wJAAEsAAAAAgkAAaQAAAABBQAAAAZ2b3RpbmcFAAAAH2tleUhlaWdodE9mUG9vbFZvdGluZ0Zvck5ld1Bvb2wAAAAAAAAAAAAEAAAADnN0YXR1c09mVm90aW5nCQEAAAALdmFsdWVPckVsc2UAAAACCQAEGwAAAAIFAAAAEHZvdGluZ0Zvck5ld1Bvb2wJAAEsAAAAAgkAAaQAAAABBQAAAAZ2b3RpbmcFAAAAG2tleVN0YXR1c09mVm90aW5nRm9yTmV3UG9vbAYEAAAADWN1cnJlbnRIZWlnaHQFAAAABmhlaWdodAMJAABmAAAAAgAAAAAAAAAAAAUAAAAGdm90aW5nAAAAAAAAAAAAAwkBAAAAASEAAAABBQAAAA5zdGF0dXNPZlZvdGluZwAAAAAAAAAAAAMJAABmAAAAAgUAAAAOaGVpZ2h0T2ZWb3RpbmcFAAAADWN1cnJlbnRIZWlnaHQJAABkAAAAAgkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAABB2b3RpbmdGb3JOZXdQb29sCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQAEJQAAAAEFAAAABHVzZXICAAAAAV8JAAGkAAAAAQUAAAAGdm90aW5nBQAAABZrZXlZZXNWb3RpbmdGb3JOZXdQb29sAAAAAAAAAAAACQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAAEHZvdGluZ0Zvck5ld1Bvb2wJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAQlAAAAAQUAAAAEdXNlcgIAAAABXwkAAaQAAAABBQAAAAZ2b3RpbmcFAAAAFWtleU5vVm90aW5nRm9yTmV3UG9vbAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAgZ2V0VXNlclRvdGFsVm90ZUZvck5ld1Bvb2xBbW91bnQAAAABAAAABHVzZXIEAAAADGxpc3RPZlZvdGluZwkABEwAAAACCQEAAAAgZ2V0VXNlclRvdGFsVm90ZUFtb3VudEZvck9uZVBvb2wAAAACBQAAAA9maXJzdEFjdGl2ZVZvdGUFAAAABHVzZXIJAARMAAAAAgkBAAAAIGdldFVzZXJUb3RhbFZvdGVBbW91bnRGb3JPbmVQb29sAAAAAgUAAAAQc2Vjb25kQWN0aXZlVm90ZQUAAAAEdXNlcgkABEwAAAACCQEAAAAgZ2V0VXNlclRvdGFsVm90ZUFtb3VudEZvck9uZVBvb2wAAAACBQAAAA90aGlyZEFjdGl2ZVZvdGUFAAAABHVzZXIFAAAAA25pbAkAAZYAAAABBQAAAAxsaXN0T2ZWb3RpbmcBAAAAEmdldFRvdGFsU1dPUExvY2tlZAAAAAAJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwUAAAASa2V5VG90YWxTV09QTG9ja2VkAAAAAAAAAAAAAQAAAA9nZXRVc2VyVm90ZUluZm8AAAABAAAABHVzZXIEAAAACyR0MDYwNzI2NjIzAwkBAAAACWlzRGVmaW5lZAAAAAEJAAQdAAAAAgUAAAASdm90aW5nTGl0ZUNvbnRyYWN0CQABLAAAAAIJAAQlAAAAAQUAAAAEdXNlcgUAAAAPa1VzZXJUb3RhbFN0cnVjBAAAAARkYXRhCQAEtQAAAAIJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABB0AAAACBQAAABJ2b3RpbmdMaXRlQ29udHJhY3QJAAEsAAAAAgkABCUAAAABBQAAAAR1c2VyBQAAAA9rVXNlclRvdGFsU3RydWMCAAAAFUVtcHR5IGtVc2VyVG90YWxTdHJ1YwIAAAABXwkABRUAAAADCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAEZGF0YQAAAAAAAAAAAAkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAABGRhdGEAAAAAAAAAAAEJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAARkYXRhAAAAAAAAAAACBAAAAA51UG9vbFRvdGFsU1dPUAkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAABJ2b3RpbmdMaXRlQ29udHJhY3QJAAEsAAAAAgkABCUAAAABBQAAAAR1c2VyBQAAABJrVXNlclRvdGFsVm90ZVNXT1AAAAAAAAAAAAAJAAUVAAAAAwUAAAAOdVBvb2xUb3RhbFNXT1AAAAAAAAAAAAAFAAAAEGN1cnJWb3RpbmdQZXJpb2QEAAAAEXVzZXJUb3RhbFZvdGVTV09QCAUAAAALJHQwNjA3MjY2MjMAAAACXzEEAAAAC3VzZXJVbnZvdGVkCAUAAAALJHQwNjA3MjY2MjMAAAACXzIEAAAAEXVzZXJVbnZvdGVkUGVyaW9kCAUAAAALJHQwNjA3MjY2MjMAAAACXzMEAAAAEXVzZXJVbnZvdGVkQWN0dWFsAwkAAAAAAAACBQAAABF1c2VyVW52b3RlZFBlcmlvZAUAAAAQY3VyclZvdGluZ1BlcmlvZAUAAAALdXNlclVudm90ZWQAAAAAAAAAAAAJAAUUAAAAAgUAAAARdXNlclRvdGFsVm90ZVNXT1AFAAAAEXVzZXJVbnZvdGVkQWN0dWFsAQAAABdnZXRVc2VyVm90ZU9wdGlvbkFtb3VudAAAAAEAAAAEdXNlcgkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAAR0aGlzCQABLAAAAAIJAAQlAAAAAQUAAAAEdXNlcgUAAAAXa2V5VXNlclZvdGVPcHRpb25BbW91bnQAAAAAAAAAAAABAAAAFGdldFZvdGluZ1N0YXJ0SGVpZ2h0AAAAAQAAAAh2b3RlTmFtZQkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAAR0aGlzCQABLAAAAAIFAAAACHZvdGVOYW1lBQAAABRrZXlWb3RpbmdTdGFydEhlaWdodAAAAAAAAAAAAAEAAAATZ2V0UG9vbFVwZGF0ZUhlaWdodAAAAAEAAAAEcG9vbAkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAAEdGhpcwkAASwAAAACBQAAAARwb29sBQAAABVrZXlIZWlnaHRQb29sRnJhY3Rpb24AAAAAAAAAAAABAAAAEGdldEN1clBvb2xXZWlnaHQAAAABAAAABHBvb2wJAQAAAAt2YWx1ZU9y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T1BMb2NrZWQJAABlAAAAAgUAAAAMbGFzdEludGVyZXN0BQAAABB1c2VyTGFzdEludGVyZXN0BQAAAApzY2FsZVZhbHVlBAAAAA91c2VyTmV3SW50ZXJlc3QFAAAADGxhc3RJbnRlcmVzdAkABRQAAAACBQAAAA91c2VyTmV3SW50ZXJlc3QFAAAAC2NsYWltQW1vdW50AAAACAAAAAFpAQAAAAdhaXJEcm9wAAAAAAMJAQAAAAEhAAAAAQUAAAAIaXNBY3RpdmUJAAACAAAAAQIAAAAfREFwcCBpcyBpbmFjdGl2ZSBhdCB0aGlzIG1vbWVudAQAAAALJHQwOTA3ODkxNTMJAAUUAAAAAggJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAAAAAGYW1vdW50CAkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAAAAAdhc3NldElkBAAAAAlwbXRBbW91bnQIBQAAAAskdDA5MDc4OTE1MwAAAAJfMQQAAAAKcG10QXNzZXRJZAgFAAAACyR0MDkwNzg5MTUzAAAAAl8yAwkBAAAAAiE9AAAAAgUAAAAKcG10QXNzZXRJZAUAAAAEU1dPUAkAAAIAAAABAgAAABRJbmNvcnJlY3QgcG10QXNzZXRJZAQAAAAPdG90YWxTV09QTG9ja2VkCQEAAAASZ2V0VG90YWxTV09QTG9ja2VkAAAAAAQAAAAMbGFzdEludGVyZXN0CQEAAAATZ2V0TGFzdEludGVyZXN0SW5mbwAAAAAEAAAAC2ludGVyZXN0TmV3CQAAZAAAAAIFAAAADGxhc3RJbnRlcmVzdAkAAGsAAAADBQAAAAlwbXRBbW91bnQFAAAACnNjYWxlVmFsdWUFAAAAD3RvdGFsU1dPUExvY2tlZAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAPa2V5TGFzdEludGVyZXN0BQAAAAtpbnRlcmVzdE5ldwUAAAADbmlsAAAAAWkBAAAACGxvY2tTV09QAAAAAAMJAQAAAAEhAAAAAQUAAAAIaXNBY3RpdmUJAAACAAAAAQIAAAAfREFwcCBpcyBpbmFjdGl2ZSBhdCB0aGlzIG1vbWVudAQAAAALJHQwOTU5MTk2NjYJAAUUAAAAAggJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAAAAAGYW1vdW50CAkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAAAAAdhc3NldElkBAAAAAlwbXRBbW91bnQIBQAAAAskdDA5NTkxOTY2NgAAAAJfMQQAAAAKcG10QXNzZXRJZAgFAAAACyR0MDk1OTE5NjY2AAAAAl8yAwkBAAAAAiE9AAAAAgUAAAAKcG10QXNzZXRJZAUAAAAEU1dPUAkAAAIAAAABAgAAABRJbmNvcnJlY3QgcG10QXNzZXRJZAQAAAAMbGFzdEludGVyZXN0CQEAAAATZ2V0TGFzdEludGVyZXN0SW5mbwAAAAAEAAAACyR0MDk3ODI5ODY0CQEAAAATZ2V0VXNlckludGVyZXN0SW5mbwAAAAIIBQAAAAFpAAAABmNhbGxlcgUAAAAMbGFzdEludGVyZXN0BAAAABB1c2VyTGFzdEludGVyZXN0CAUAAAALJHQwOTc4Mjk4NjQAAAACXzEEAAAADnVzZXJTV09QTG9ja2VkCAUAAAALJHQwOTc4Mjk4NjQAAAACXzIEAAAAC2NsYWltQW1vdW50CQAAawAAAAMFAAAADnVzZXJTV09QTG9ja2VkCQAAZQAAAAIFAAAADGxhc3RJbnRlcmVzdAUAAAAQdXNlckxhc3RJbnRlcmVzdAUAAAAKc2NhbGVWYWx1ZQQAAAARdXNlclNXT1BMb2NrZWROZXcJAABkAAAAAgkAAGQAAAACBQAAAA51c2VyU1dPUExvY2tlZAUAAAAJcG10QW1vdW50BQAAAAtjbGFpbUFtb3VudAQAAAAPdXNlck5ld0ludGVyZXN0BQAAAAxsYXN0SW50ZXJlc3QEAAAAD3RvdGFsU1dPUExvY2tlZAkBAAAAEmdldFRvdGFsU1dPUExvY2tlZAAAAAAEAAAAEnRvdGFsU1dPUExvY2tlZE5ldwkAAGQAAAACCQAAZAAAAAIFAAAAD3RvdGFsU1dPUExvY2tlZAUAAAAJcG10QW1vdW50BQAAAAtjbGFpbUFtb3VudAQAAAARdXNlckNsYWltZWRBbW91bnQJAQAAABhnZXRVc2VyU1dPUENsYWltZWRBbW91bnQAAAABCAUAAAABaQAAAAZjYWxsZXIEAAAAFHVzZXJDbGFpbWVkQW1vdW50TmV3CQAAZAAAAAIFAAAAEXVzZXJDbGFpbWVkQW1vdW50BQAAAAtjbGFpbUFtb3VudAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgUAAAATa2V5VXNlckxhc3RJbnRlcmVzdAUAAAAPdXNlck5ld0ludGVyZXN0CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBQAAABFrZXlVc2VyU1dPUExvY2tlZAUAAAARdXNlclNXT1BMb2NrZWROZXcJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAEmtleVRvdGFsU1dPUExvY2tlZAUAAAASdG90YWxTV09QTG9ja2VkTmV3CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBQAAABhrZXlVc2VyU1dPUENsYWltZWRBbW91bnQFAAAAFHVzZXJDbGFpbWVkQW1vdW50TmV3CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBQAAABxrZXlVc2VyU1dPUExhc3RDbGFpbWVkQW1vdW50BQAAAAtjbGFpbUFtb3VudAUAAAADbmlsAAAAAWkBAAAADHdpdGhkcmF3U1dPUAAAAAEAAAAOd2l0aGRyYXdBbW91bnQDCQEAAAABIQAAAAEFAAAACGlzQWN0aXZlCQAAAgAAAAECAAAAH0RBcHAgaXMgaW5hY3RpdmUgYXQgdGhpcyBtb21lbnQDCQAAZwAAAAIAAAAAAAAAAAAFAAAADndpdGhkcmF3QW1vdW50CQAAAgAAAAECAAAAE3dpdGhkcmF3QW1vdW50IDw9IDAEAAAAD3RvdGFsU1dPUExvY2tlZAkBAAAAEmdldFRvdGFsU1dPUExvY2tlZAAAAAAEAAAADnVzZXJTV09QTG9ja2VkCQEAAAARZ2V0VXNlclNXT1BMb2NrZWQAAAABCAUAAAABaQAAAAZjYWxsZXIEAAAADSR0MDExMDE0MTEwNjkJAQAAAAljbGFpbUNhbGMAAAABCAUAAAABaQAAAAZjYWxsZXIEAAAAD3VzZXJOZXdJbnRlcmVzdAgFAAAADSR0MDExMDE0MTEwNjkAAAACXzEEAAAAC2NsYWltQW1vdW50CAUAAAANJHQwMTEwMTQxMTA2OQAAAAJfMgQAAAANJHQwMTEwNzQxMTEzOQkBAAAAD2dldFVzZXJWb3RlSW5mbwAAAAEIBQAAAAFpAAAABmNhbGxlcgQAAAAOdXNlclZvdGVBbW91bnQIBQAAAA0kdDAxMTA3NDExMTM5AAAAAl8xBAAAABB1c2VyVW52b3RlQW1vdW50CAUAAAANJHQwMTEwNzQxMTEzOQAAAAJfMgQAAAAYdXNlclZvdGVBbW91bnRGb3JOZXdQb29sCQEAAAAgZ2V0VXNlclRvdGFsVm90ZUZvck5ld1Bvb2xBbW91bnQAAAABCAUAAAABaQAAAAZjYWxsZXIDAwMJAABmAAAAAgAAAAAAAAAAAAUAAAAQdXNlclVudm90ZUFtb3VudAYJAABmAAAAAgAAAAAAAAAAAAUAAAAOdXNlclZvdGVBbW91bnQGCQAAZgAAAAIAAAAAAAAAAAAFAAAAGHVzZXJWb3RlQW1vdW50Rm9yTmV3UG9vbAkAAAIAAAABAgAAAEp1c2VyVW52b3RlQW1vdW50IDwgMCB8fCB1c2VyVm90ZUFtb3VudCA8IDAgfHwgdXNlclZvdGVBbW91bnRGb3JOZXdQb29sIDwgMAQAAAASYXZhaWxhYmxlVG9VbnN0YWtlCQAAZQAAAAIFAAAADnVzZXJTV09QTG9ja2VkCQABlgAAAAEJAARMAAAAAgUAAAAYdXNlclZvdGVBbW91bnRGb3JOZXdQb29sCQAETAAAAAIJAABkAAAAAgUAAAAOdXNlclZvdGVBbW91bnQFAAAAEHVzZXJVbnZvdGVBbW91bnQFAAAAA25pbAMJAABmAAAAAgUAAAAOd2l0aGRyYXdBbW91bnQFAAAAEmF2YWlsYWJsZVRvVW5zdGFrZQkAAAIAAAABAgAAACN3aXRoZHJhd0Ftb3VudCA+IGF2YWlsYWJsZVRvVW5zdGFrZQQAAAASdG90YWxTV09QTG9ja2VkTmV3CQAAZQAAAAIJAABkAAAAAgUAAAAPdG90YWxTV09QTG9ja2VkBQAAAAtjbGFpbUFtb3VudAUAAAAOd2l0aGRyYXdBbW91bnQEAAAAEXVzZXJTV09QYW1vdW50TmV3CQAAZQAAAAIJAABkAAAAAgUAAAAOdXNlclNXT1BMb2NrZWQFAAAAC2NsYWltQW1vdW50BQAAAA53aXRoZHJhd0Ftb3VudAQAAAARdXNlckNsYWltZWRBbW91bnQJAQAAABhnZXRVc2VyU1dPUENsYWltZWRBbW91bnQAAAABCAUAAAABaQAAAAZjYWxsZXIEAAAAFHVzZXJDbGFpbWVkQW1vdW50TmV3CQAAZAAAAAIFAAAAEXVzZXJDbGFpbWVkQW1vdW50BQAAAAtjbGFpbUFtb3VudAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgUAAAATa2V5VXNlckxhc3RJbnRlcmVzdAUAAAAPdXNlck5ld0ludGVyZXN0CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBQAAABFrZXlVc2VyU1dPUExvY2tlZAUAAAARdXNlclNXT1BhbW91bnROZXcJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAEmtleVRvdGFsU1dPUExvY2tlZAUAAAASdG90YWxTV09QTG9ja2VkTmV3CQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgUAAAAOd2l0aGRyYXdBbW91bnQFAAAABFNXT1AJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIFAAAAGGtleVVzZXJTV09QQ2xhaW1lZEFtb3VudAUAAAAUdXNlckNsYWltZWRBbW91bnROZXcJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIFAAAAHGtleVVzZXJTV09QTGFzdENsYWltZWRBbW91bnQFAAAAC2NsYWltQW1vdW50BQAAAANuaWwAAAABaQEAAAAUY2xhaW1BbmRXaXRoZHJhd1NXT1AAAAAAAwkBAAAAASEAAAABBQAAAAhpc0FjdGl2ZQkAAAIAAAABAgAAAB9EQXBwIGlzIGluYWN0aXZlIGF0IHRoaXMgbW9tZW50BAAAAAxsYXN0SW50ZXJlc3QJAQAAABNnZXRMYXN0SW50ZXJlc3RJbmZvAAAAAAQAAAANJHQwMTI1MTQxMjU2OQkBAAAACWNsYWltQ2FsYwAAAAEIBQAAAAFpAAAABmNhbGxlcgQAAAAPdXNlck5ld0ludGVyZXN0CAUAAAANJHQwMTI1MTQxMjU2OQAAAAJfMQQAAAALY2xhaW1BbW91bnQIBQAAAA0kdDAxMjUxNDEyNTY5AAAAAl8yBAAAABF1c2VyQ2xhaW1lZEFtb3VudAkBAAAAGGdldFVzZXJTV09QQ2xhaW1lZEFtb3VudAAAAAEIBQAAAAFpAAAABmNhbGxlcgQAAAAUdXNlckNsYWltZWRBbW91bnROZXcJAABkAAAAAgUAAAARdXNlckNsYWltZWRBbW91bnQFAAAAC2NsYWltQW1vdW50AwkAAAAAAAACBQAAAAtjbGFpbUFtb3VudAAAAAAAAAAAAAkAAAIAAAABAgAAABlZb3UgaGF2ZSAwIGF2YWlsYWJsZSBTV09QCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBQAAABNrZXlVc2VyTGFzdEludGVyZXN0BQAAAA91c2VyTmV3SW50ZXJlc3QJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIFAAAAGGtleVVzZXJTV09QQ2xhaW1lZEFtb3VudAUAAAAUdXNlckNsYWltZWRBbW91bnROZXcJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIFAAAAHGtleVVzZXJTV09QTGFzdENsYWltZWRBbW91bnQFAAAAC2NsYWltQW1vdW50CQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgUAAAALY2xhaW1BbW91bnQFAAAABFNXT1AFAAAAA25pbAAAAAFpAQAAABFjbGFpbUFuZFN0YWtlU1dPUAAAAAADCQEAAAABIQAAAAEFAAAACGlzQWN0aXZlCQAAAgAAAAECAAAAH0RBcHAgaXMgaW5hY3RpdmUgYXQgdGhpcyBtb21lbnQEAAAAD3RvdGFsU1dPUExvY2tlZAkBAAAAEmdldFRvdGFsU1dPUExvY2tlZAAAAAAEAAAADnVzZXJTV09QTG9ja2VkCQEAAAARZ2V0VXNlclNXT1BMb2NrZWQAAAABCAUAAAABaQAAAAZjYWxsZXIEAAAADGxhc3RJbnRlcmVzdAkBAAAAE2dldExhc3RJbnRlcmVzdEluZm8AAAAABAAAAA0kdDAxMzM0ODEzNDAzCQEAAAAJY2xhaW1DYWxjAAAAAQgFAAAAAWkAAAAGY2FsbGVyBAAAAA91c2VyTmV3SW50ZXJlc3QIBQAAAA0kdDAxMzM0ODEzNDAzAAAAAl8xBAAAAAtjbGFpbUFtb3VudAgFAAAADSR0MDEzMzQ4MTM0MDMAAAACXzIEAAAAEXVzZXJTV09QTG9ja2VkTmV3CQAAZAAAAAIFAAAADnVzZXJTV09QTG9ja2VkBQAAAAtjbGFpbUFtb3VudAQAAAASdG90YWxTV09QTG9ja2VkTmV3CQAAZAAAAAIFAAAAD3RvdGFsU1dPUExvY2tlZAUAAAALY2xhaW1BbW91bnQEAAAAEXVzZXJDbGFpbWVkQW1vdW50CQEAAAAYZ2V0VXNlclNXT1BDbGFpbWVkQW1vdW50AAAAAQgFAAAAAWkAAAAGY2FsbGVyBAAAABR1c2VyQ2xhaW1lZEFtb3VudE5ldwkAAGQAAAACBQAAABF1c2VyQ2xhaW1lZEFtb3VudAUAAAALY2xhaW1BbW91bnQDCQAAAAAAAAIFAAAAC2NsYWltQW1vdW50AAAAAAAAAAAACQAAAgAAAAECAAAAGVlvdSBoYXZlIDAgYXZhaWxhYmxlIFNXT1AJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIFAAAAE2tleVVzZXJMYXN0SW50ZXJlc3QFAAAAD3VzZXJOZXdJbnRlcmVzdAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAASa2V5VG90YWxTV09QTG9ja2VkBQAAABJ0b3RhbFNXT1BMb2NrZWROZXcJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIFAAAAEWtleVVzZXJTV09QTG9ja2VkBQAAABF1c2VyU1dPUExvY2tlZE5ldwkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgUAAAAYa2V5VXNlclNXT1BDbGFpbWVkQW1vdW50BQAAABR1c2VyQ2xhaW1lZEFtb3VudE5ldwkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgUAAAAca2V5VXNlclNXT1BMYXN0Q2xhaW1lZEFtb3VudAUAAAALY2xhaW1BbW91bnQFAAAAA25pbAAAAAFpAQAAAA11cGRhdGVXZWlnaHRzAAAABgAAAA1wcmV2aW91c1Bvb2xzAAAAD3ByZXZpb3VzUmV3YXJkcwAAAAxjdXJyZW50UG9vbHMAAAAOY3VycmVudFJld2FyZHMAAAAScmV3YXJkVXBkYXRlSGVpZ2h0AAAACnBhZ2luYXRpb24DCQEAAAABIQAAAAEFAAAACGlzQWN0aXZlCQAAAgAAAAECAAAAH0RBcHAgaXMgaW5hY3RpdmUgYXQgdGhpcyBtb21lbnQEAAAAC2Ftb3VudFBvb2xzAAAAAAAAAAAKBAAAABd0b3RhbFJld2FyZFVwZGF0ZUhlaWdodAkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAAEdGhpcwUAAAAVa2V5UmV3YXJkVXBkYXRlSGVpZ2h0AAAAAAAAAAAAAwkBAAAAASEAAAABCQEAAAAPY29udGFpbnNFbGVtZW50AAAAAgkABEwAAAACBQAAAAxhZG1pblB1YktleTEJAARMAAAAAgUAAAAMYWRtaW5QdWJLZXkyCQAETAAAAAIFAAAADGFkbWluUHViS2V5MwkABEwAAAACBQAAABRhZG1pblB1YktleVN0YXJ0U3RvcAkABEwAAAACBQAAABFhZG1pblB1YktleVdhbGxldAUAAAADbmlsCAUAAAABaQAAAA9jYWxsZXJQdWJsaWNLZXkJAAACAAAAAQIAAAAhT25seSBhZG1pbiBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uAwMJAABmAAAAAgkAAZAAAAABBQAAAA1wcmV2aW91c1Bvb2xzBQAAAAthbW91bnRQb29scwYJAABmAAAAAgkAAZAAAAABBQAAAAxjdXJyZW50UG9vbHMFAAAAC2Ftb3VudFBvb2xzCQAAAgAAAAEJAAEsAAAAAgIAAAAWTWF4IGFtb3VudCBvZiBwb29sIGlzIAkAAaQAAAABBQAAAAthbW91bnRQb29scwMJAABnAAAAAgUAAAAXdG90YWxSZXdhcmRVcGRhdGVIZWlnaHQFAAAAEnJld2FyZFVwZGF0ZUhlaWdodAkAAAIAAAABAgAAAC1yZXdhcmRVcGRhdGVIZWlnaHQgPD0gdG90YWxSZXdhcmRVcGRhdGVIZWlnaHQDCQAAZwAAAAIFAAAABmhlaWdodAUAAAAScmV3YXJkVXBkYXRlSGVpZ2h0CQAAAgAAAAECAAAALXJld2FyZFVwZGF0ZUhlaWdodCA8PSB0b3RhbFJld2FyZFVwZGF0ZUhlaWdodAMJAABnAAAAAgAAAAAAAAAAAAUAAAAScmV3YXJkVXBkYXRlSGVpZ2h0CQAAAgAAAAECAAAAGDAgPj0gcmV3YXJkVXBkYXRlSGVpZ2h0IAoBAAAAA3N1bQAAAAIAAAABYQAAAAFiCQAAZAAAAAIFAAAAAWEFAAAAAWIKAQAAABljaGFuZ2VQcmV2aW91c1Jld2FyZEVudHJ5AAAAAgAAAAthY2N1bXVsYXRlZAAAAARwb29sBAAAAAxwb29sQ3VyUmV3YXIJAQAAABBnZXRDdXJQb29sV2VpZ2h0AAAAAQUAAAAEcG9vbAQAAAAWcmV3YXJkVXBkYXRlUG9vbEhlaWdodAkBAAAAE2dldFBvb2xVcGRhdGVIZWlnaHQAAAABBQAAAARwb29sAwkBAAAAAiE9AAAAAgUAAAAScmV3YXJkVXBkYXRlSGVpZ2h0BQAAABZyZXdhcmRVcGRhdGVQb29sSGVpZ2h0AwkAAAAAAAACBQAAABZyZXdhcmRVcGRhdGVQb29sSGVpZ2h0BQAAABd0b3RhbFJld2FyZFVwZGF0ZUhlaWdodAQAAAAKcG9vbFJld2FyZAkBAAAAEGdldEN1clBvb2xXZWlnaHQAAAABBQAAAARwb29sCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIFAAAABHBvb2wFAAAAHWtleVJld2FyZFBvb2xGcmFjdGlvblByZXZpb3VzBQAAAApwb29sUmV3YXJkBQAAAAthY2N1bXVsYXRlZAUAAAADbmlsBQAAAANuaWwKAQAAABhjaGFuZ2VDdXJyZW50UmV3YXJkRW50cnkAAAACAAAAC2FjY3VtdWxhdGVkAAAABHBvb2wEAAAACXBvb2xJbmRleAkBAAAABXZhbHVlAAAAAQkABE8AAAACBQAAAAxjdXJyZW50UG9vbHMFAAAABHBvb2wEAAAACnBvb2xSZXdhcmQJAAGRAAAAAgUAAAAOY3VycmVudFJld2FyZHMFAAAACXBvb2xJbmRleAMJAABmAAAAAgAAAAAAAAAAAAUAAAAKcG9vbFJld2FyZAkAAAIAAAABAgAAAA5Qb29sUmV3YXJkIDwgMAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACBQAAAARwb29sBQAAABxrZXlSZXdhcmRQb29sRnJhY3Rpb25DdXJyZW50BQAAAApwb29sUmV3YXJkBQAAAAthY2N1bXVsYXRlZAoBAAAAEWNoYW5nZUhlaWdodEVudHJ5AAAAAgAAAAthY2N1bXVsYXRlZAAAAARwb29sBAAAAApwb29sSGVpZ2h0BQAAABJyZXdhcmRVcGRhdGVIZWlnaHQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgUAAAAEcG9vbAUAAAAVa2V5SGVpZ2h0UG9vbEZyYWN0aW9uBQAAAApwb29sSGVpZ2h0BQAAAAthY2N1bXVsYXRlZAoBAAAADGdldFN1bVJld2FyZAAAAAMAAAALcHJldlRlbXBTdW0AAAAKY3VyVGVtcFN1bQAAAApwYWdpbmF0aW9uAwkAAAAAAAACBQAAAApwYWdpbmF0aW9uAAAAAAAAAAAAAwMJAABmAAAAAgUAAAALcHJldlRlbXBTdW0FAAAADnRvdGFsVm90ZVNoYXJlBgkAAGYAAAACBQAAAApjdXJUZW1wU3VtBQAAAA50b3RhbFZvdGVTaGFyZQkAAAIAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAABKc3VtUmV3YXJkUHJldmlvdXMgPiB0b3RhbFZvdGVTaGFyZSBvciBzdW1SZXdhcmRDdXJyZW50ID4gdG90YWxWb3RlU2hhcmUgLSAJAAGkAAAAAQUAAAAKcGFnaW5hdGlvbgIAAAABIAkAAaQAAAABBQAAAAtwcmV2VGVtcFN1bQIAAAABIAkAAaQAAAABBQAAAApjdXJUZW1wU3VtCQAFFQAAAAMJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAADmtleVRlbXBQcmV2U3VtBQAAAAtwcmV2VGVtcFN1bQUAAAADbmlsCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAA1rZXlUZW1wQ3VyU3VtBQAAAApjdXJUZW1wU3VtBQAAAANuaWwJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAJGtleVJld2FyZFVwZGF0ZUZpcnN0UGFnaW5hdGlvbkhlaWdodAUAAAAScmV3YXJkVXBkYXRlSGVpZ2h0BQAAAANuaWwDCQAAAAAAAAIFAAAACnBhZ2luYXRpb24AAAAAAAAAAAEEAAAAEnByZXZUZW1wU3VtRnJvbUtleQkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAAR0aGlzBQAAAA5rZXlUZW1wUHJldlN1bQAAAAAAAAAAAAQAAAARY3VyVGVtcFN1bUZyb21LZXkJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwUAAAANa2V5VGVtcEN1clN1bQAAAAAAAAAAAAQAAAAmcmV3YXJkVXBkYXRlSGVpZ2h0Rmlyc3RQYWdpbmF0aW9uRW50cnkJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwUAAAAka2V5UmV3YXJkVXBkYXRlRmlyc3RQYWdpbmF0aW9uSGVpZ2h0AAAAAAAAAAAAAwMJAABmAAAAAgkAAGQAAAACBQAAAAtwcmV2VGVtcFN1bQUAAAAScHJldlRlbXBTdW1Gcm9tS2V5BQAAAA50b3RhbFZvdGVTaGFyZQYJAABmAAAAAgkAAGQAAAACBQAAAApjdXJUZW1wU3VtBQAAABFjdXJUZW1wU3VtRnJvbUtleQUAAAAOdG90YWxWb3RlU2hhcmUJAAACAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAASnN1bVJld2FyZFByZXZpb3VzID4gdG90YWxWb3RlU2hhcmUgb3Igc3VtUmV3YXJkQ3VycmVudCA+IHRvdGFsVm90ZVNoYXJlIC0gCQABpAAAAAEFAAAACnBhZ2luYXRpb24CAAAAASAJAAGkAAAAAQkAAGQAAAACBQAAAAtwcmV2VGVtcFN1bQUAAAAScHJldlRlbXBTdW1Gcm9tS2V5AgAAAAEgCQABpAAAAAEJAABkAAAAAgUAAAAKY3VyVGVtcFN1bQUAAAARY3VyVGVtcFN1bUZyb21LZXkDCQEAAAACIT0AAAACBQAAACZyZXdhcmRVcGRhdGVIZWlnaHRGaXJzdFBhZ2luYXRpb25FbnRyeQUAAAAScmV3YXJkVXBkYXRlSGVpZ2h0CQAAAgAAAAECAAAARGN1cnJlbnQgcmV3YXJkVXBkYXRlSGVpZ2h0ICE9IHJld2FyZFVwZGF0ZUhlaWdodEZpcnN0UGFnaW5hdGlvbkVudHJ5CQAFFQAAAAMJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAADmtleVRlbXBQcmV2U3VtCQAAZAAAAAIFAAAAC3ByZXZUZW1wU3VtBQAAABJwcmV2VGVtcFN1bUZyb21LZXkFAAAAA25pbAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAANa2V5VGVtcEN1clN1bQkAAGQAAAACBQAAAApjdXJUZW1wU3VtBQAAABFjdXJUZW1wU3VtRnJvbUtleQUAAAADbmlsBQAAAANuaWwDCQAAAAAAAAIFAAAACnBhZ2luYXRpb24AAAAAAAAAAAIEAAAAB3ByZXZTdW0JAABkAAAAAgkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAAR0aGlzBQAAAA5rZXlUZW1wUHJldlN1bQAAAAAAAAAAAAUAAAALcHJldlRlbXBTdW0EAAAABmN1clN1bQkAAGQAAAACCQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAABHRoaXMFAAAADWtleVRlbXBDdXJTdW0AAAAAAAAAAAAFAAAACmN1clRlbXBTdW0EAAAAJnJld2FyZFVwZGF0ZUhlaWdodEZpcnN0UGFnaW5hdGlvbkVudHJ5CQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAABHRoaXMFAAAAJGtleVJld2FyZFVwZGF0ZUZpcnN0UGFnaW5hdGlvbkhlaWdodAAAAAAAAAAAAAMDCQEAAAACIT0AAAACBQAAAAdwcmV2U3VtBQAAAA50b3RhbFZvdGVTaGFyZQYJAQAAAAIhPQAAAAIFAAAABmN1clN1bQUAAAAOdG90YWxWb3RlU2hhcmUJAAACAAAAAQIAAABJc3VtUmV3YXJkUHJldmlvdXMgIT0gdG90YWxWb3RlU2hhcmUgb3Igc3VtUmV3YXJkQ3VycmVudCAhPSB0b3RhbFZvdGVTaGFyZQMJAQAAAAIhPQAAAAIFAAAAJnJld2FyZFVwZGF0ZUhlaWdodEZpcnN0UGFnaW5hdGlvbkVudHJ5BQAAABJyZXdhcmRVcGRhdGVIZWlnaHQJAAACAAAAAQIAAABEY3VycmVudCByZXdhcmRVcGRhdGVIZWlnaHQgIT0gcmV3YXJkVXBkYXRlSGVpZ2h0Rmlyc3RQYWdpbmF0aW9uRW50cnkJAAUVAAAAAwkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAOa2V5VGVtcFByZXZTdW0FAAAAB3ByZXZTdW0FAAAAA25pbAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAANa2V5VGVtcEN1clN1bQUAAAAGY3VyU3VtBQAAAANuaWwFAAAAA25pbAkAAAIAAAABAgAAABRJbmNvcnJlY3QgcGFnaW5hdGlvbgQAAAAVc3VtUmV3YXJkUHJldmlvdXNUZW1wBAAAAA8kbGlzdDE4ODU5MTg4OTIFAAAAD3ByZXZpb3VzUmV3YXJkcwQAAAAPJHNpemUxODg1OTE4ODkyCQABkAAAAAEFAAAADyRsaXN0MTg4NTkxODg5MgQAAAAPJGFjYzAxODg1OTE4ODkyAAAAAAAAAAAAAwkAAAAAAAACBQAAAA8kc2l6ZTE4ODU5MTg4OTIAAAAAAAAAAAAFAAAADyRhY2MwMTg4NTkxODg5MgQAAAAPJGFjYzExODg1OTE4ODkyCQEAAAADc3VtAAAAAgUAAAAPJGFjYzAxODg1OTE4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AAAAAgUAAAAPJGxpc3QxODkyNTE4OTU3AAAAAAAAAAAGAwkAAAAAAAACBQAAAA8kc2l6ZTE4OTI1MTg5NTcAAAAAAAAAAAcFAAAADyRhY2M3MTg5MjUxODk1NwQAAAAPJGFjYzgxODkyNTE4OTU3CQEAAAADc3VtAAAAAgUAAAAPJGFjYzcxODkyNTE4OTU3CQABkQAAAAIFAAAADyRsaXN0MTg5MjUxODk1NwAAAAAAAAAABwMJAAAAAAAAAgUAAAAPJHNpemUxODkyNTE4OTU3AAAAAAAAAAAIBQAAAA8kYWNjODE4OTI1MTg5NTcEAAAADyRhY2M5MTg5MjUxODk1NwkBAAAAA3N1bQAAAAIFAAAADyRhY2M4MTg5MjUxODk1NwkAAZEAAAACBQAAAA8kbGlzdDE4OTI1MTg5NTcAAAAAAAAAAAgDCQAAAAAAAAIFAAAADyRzaXplMTg5MjUxODk1NwAAAAAAAAAACQUAAAAPJGFjYzkxODkyNTE4OTU3BAAAABAkYWNjMTAxODkyNTE4OTU3CQEAAAADc3VtAAAAAgUAAAAPJGFjYzkxODkyNTE4OTU3CQABkQAAAAIFAAAADyRsaXN0MTg5MjUxODk1NwAAAAAAAAAACQMJAAAAAAAAAgUAAAAPJHNpemUxODkyNTE4OTU3AAAAAAAAAAAKBQAAABAkYWNjMTAxODkyNTE4OTU3BAAAABAkYWNjMTExODkyNTE4OTU3CQEAAAADc3VtAAAAAgUAAAAQJGFjYzEwMTg5MjUxODk1NwkAAZEAAAACBQAAAA8kbGlzdDE4OTI1MTg5NTcAAAAAAAAAAAoJAAACAAAAAQIAAAATTGlzdCBzaXplIGV4Y2VlZCAxMAQAAAANJHQwMTg5NjMxOTExNgkBAAAADGdldFN1bVJld2FyZAAAAAMFAAAAFXN1bVJld2FyZFByZXZpb3VzVGVtcAUAAAAUc3VtUmV3YXJkQ3VycmVudFRlbXAFAAAACnBhZ2luYXRpb24EAAAAEXN1bVJld2FyZFByZXZpb3VzCAUAAAANJHQwMTg5NjMxOTExNgAAAAJfMQQAAAAQc3VtUmV3YXJkQ3VycmVudAgFAAAADSR0MDE4OTYzMTkxMTYAAAACXzIEAAAAJnJld2FyZFVwZGF0ZUhlaWdodEZpcnN0UGFnaW5hdGlvbkVudHJ5CAUAAAANJHQwMTg5NjMxOTExNgAAAAJfMwQAAAAXcmV3YXJkVXBkYXRlSGVpZ2h0RW50cnkDCQAAAAAAAAIFAAAACnBhZ2luYXRpb24AAAAAAAAAAAIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAFWtleVJld2FyZFVwZGF0ZUhlaWdodAUAAAAScmV3YXJkVXBkYXRlSGVpZ2h0BQAAAANuaWwJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAFWtleVJld2FyZFVwZGF0ZUhlaWdodAkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAAEdGhpcwUAAAAVa2V5UmV3YXJkVXBkYXRlSGVpZ2h0BQAAAANuaWwDCQAAZgAAAAIFAAAABmhlaWdodAUAAAAScmV3YXJkVXBkYXRlSGVpZ2h0CQAAAgAAAAECAAAAG3Jld2FyZFVwZGF0ZUhlaWdodCA8IGhlaWdodAQAAAAWcHJldmlvdXNSZXdhcmRFbnRyeU5ldwQAAAAPJGxpc3QxOTQ0NTE5NDk5BQAAAA1wcmV2aW91c1Bvb2xzBAAAAA8kc2l6ZTE5NDQ1MTk0OTkJAAGQAAAAAQUAAAAPJGxpc3QxOTQ0NTE5NDk5BAAAAA8kYWNjMDE5NDQ1MTk0OTkFAAAAA25pbAMJAAAAAAAAAgUAAAAPJHNpemUxOTQ0NTE5NDk5AAAAAAAAAAAABQAAAA8kYWNjMDE5NDQ1MTk0OTkEAAAADyRhY2MxMTk0NDUxOTQ5OQkBAAAAGWNoYW5nZVByZXZpb3VzUmV3YXJkRW50cnkAAAACBQAAAA8kYWNjMDE5NDQ1MTk0OTkJAAGRAAAAAgUAAAAPJGxpc3QxOTQ0NTE5NDk5AAAAAAAAAAAAAwkAAAAAAAACBQAAAA8kc2l6ZTE5NDQ1MTk0OTkAAAAAAAAAAAEFAAAADyRhY2MxMTk0NDUxOTQ5OQQAAAAPJGFjYzIxOTQ0NTE5NDk5CQEAAAAZY2hhbmdlUHJldmlvdXNSZXdhcmRFbnRyeQAAAAIFAAAADyRhY2MxMTk0NDUxOTQ5OQkAAZEAAAACBQAAAA8kbGlzdDE5NDQ1MTk0OTkAAAAAAAAAAAEDCQAAAAAAAAIFAAAADyRzaXplMTk0NDUxOTQ5OQAAAAAAAAAAAgUAAAAPJGFjYzIxOTQ0NTE5NDk5BAAAAA8kYWNjMzE5NDQ1MTk0OTkJAQAAABljaGFuZ2VQcmV2aW91c1Jld2FyZEVudHJ5AAAAAgUAAAAPJGFjYzIxOTQ0NTE5NDk5CQABkQAAAAIFAAAADyRsaXN0MTk0NDUxOTQ5OQAAAAAAAAAAAgMJAAAAAAAAAgUAAAAPJHNpemUxOTQ0NTE5NDk5AAAAAAAAAAADBQAAAA8kYWNjMzE5NDQ1MTk0OTkEAAAADyRhY2M0MTk0NDUxOTQ5OQkBAAAAGWNoYW5nZVByZXZpb3VzUmV3YXJkRW50cnkAAAACBQAAAA8kYWNjMzE5NDQ1MTk0OTkJAAGRAAAAAgUAAAAPJGxpc3QxOTQ0NTE5NDk5AAAAAAAAAAADAwkAAAAAAAACBQAAAA8kc2l6ZTE5NDQ1MTk0OTkAAAAAAAAAAAQFAAAADyRhY2M0MTk0NDUxOTQ5OQQAAAAPJGFjYzUxOTQ0NTE5NDk5CQEAAAAZY2hhbmdlUHJldmlvdXNSZXdhcmRFbnRyeQAAAAIFAAAADyRhY2M0MTk0NDUxOTQ5OQkAAZEAAAACBQAAAA8kbGlzdDE5NDQ1MTk0OTkAAAAAAAAAAAQDCQAAAAAAAAIFAAAADyRzaXplMTk0NDUxOTQ5OQAAAAAAAAAABQUAAAAPJGFjYzUxOTQ0NTE5NDk5BAAAAA8kYWNjNjE5NDQ1MTk0OTkJAQAAABljaGFuZ2VQcmV2aW91c1Jld2FyZEVudHJ5AAAAAgUAAAAPJGFjYzUxOTQ0NTE5NDk5CQABkQAAAAIFAAAADyRsaXN0MTk0NDUxOTQ5OQAAAAAAAAAABQMJAAAAAAAAAgUAAAAPJHNpemUxOTQ0NTE5NDk5AAAAAAAAAAAGBQAAAA8kYWNjNjE5NDQ1MTk0OTkEAAAADyRhY2M3MTk0NDUxOTQ5OQkBAAAAGWNoYW5nZVByZXZpb3VzUmV3YXJkRW50cnkAAAACBQAAAA8kYWNjNjE5NDQ1MTk0OTkJAAGRAAAAAgUAAAAPJGxpc3QxOTQ0NTE5NDk5AAAAAAAAAAAGAwkAAAAAAAACBQAAAA8kc2l6ZTE5NDQ1MTk0OTkAAAAAAAAAAAcFAAAADyRhY2M3MTk0NDUxOTQ5OQQAAAAPJGFjYzgxOTQ0NTE5NDk5CQEAAAAZY2hhbmdlUHJldmlvdXNSZXdhcmRFbnRyeQAAAAIFAAAADyRhY2M3MTk0NDUxOTQ5OQkAAZEAAAACBQAAAA8kbGlzdDE5NDQ1MTk0OTkAAAAAAAAAAAcDCQAAAAAAAAIFAAAADyRzaXplMTk0NDUxOTQ5OQAAAAAAAAAACAUAAAAPJGFjYzgxOTQ0NTE5NDk5BAAAAA8kYWNjOTE5NDQ1MTk0OTkJAQAAABljaGFuZ2VQcmV2aW91c1Jld2FyZEVudHJ5AAAAAgUAAAAPJGFjYzgxOTQ0NTE5NDk5CQABkQAAAAIFAAAADyRsaXN0MTk0NDUxOTQ5OQAAAAAAAAAACAMJAAAAAAAAAgUAAAAPJHNpemUxOTQ0NTE5NDk5AAAAAAAAAAAJBQAAAA8kYWNjOTE5NDQ1MTk0OTkEAAAAECRhY2MxMDE5NDQ1MTk0OTkJAQAAABljaGFuZ2VQcmV2aW91c1Jld2FyZEVudHJ5AAAAAgUAAAAPJGFjYzkxOTQ0NTE5NDk5CQABkQAAAAIFAAAADyRsaXN0MTk0NDUxOTQ5OQAAAAAAAAAACQMJAAAAAAAAAgUAAAAPJHNpemUxOTQ0NTE5NDk5AAAAAAAAAAAKBQAAABAkYWNjMTAxOTQ0NTE5NDk5BAAAABAkYWNjMTExOTQ0NTE5NDk5CQEAAAAZY2hhbmdlUHJldmlvdXNSZXdhcmRFbnRyeQAAAAIFAAAAECRhY2MxMDE5NDQ1MTk0OTkJAAGRAAAAAgUAAAAPJGxpc3QxOTQ0NTE5NDk5AAAAAAAAAAAKCQAAAgAAAAECAAAAE0xpc3Qgc2l6ZSBleGNlZWQgMTAEAAAAFWN1cnJlbnRSZXdhcmRFbnRyeU5ldwQAAAAPJGxpc3QxOTUzMjE5NTg0BQAAAAxjdXJyZW50UG9vbHMEAAAADyRzaXplMTk1MzIxOTU4NAkAAZAAAAABBQAAAA8kbGlzdDE5NTMyMTk1ODQEAAAADyRhY2MwMTk1MzIxOTU4NAUAAAADbmlsAwkAAAAAAAACBQAAAA8kc2l6ZTE5NTMyMTk1ODQAAAAAAAAAAAAFAAAADyRhY2MwMTk1MzIxOTU4NAQAAAAPJGFjYzExOTUzMjE5NTg0CQEAAAAYY2hhbmdlQ3VycmVudFJld2FyZEVudHJ5AAAAAgUAAAAPJGFjYzAxOTUzMjE5NTg0CQABkQAAAAIFAAAADyRsaXN0MTk1MzIxOTU4NAAAAAAAAAAAAAMJAAAAAAAAAgUAAAAPJHNpemUxOTUzMjE5NTg0AAAAAAAAAAABBQAAAA8kYWNjMTE5NTMyMTk1ODQEAAAADyRhY2MyMTk1MzIxOTU4NAkBAAAAGGNoYW5nZUN1cnJlbnRSZXdhcmRFbnRyeQAAAAIFAAAADyRhY2MxMTk1MzIxOTU4NAkAAZEAAAACBQAAAA8kbGlzdDE5NTMyMTk1ODQAAAAAAAAAAAEDCQAAAAAAAAIFAAAADyRzaXplMTk1MzIxOTU4NAAAAAAAAAAAAgUAAAAPJGFjYzIxOTUzMjE5NTg0BAAAAA8kYWNjMzE5NTMyMTk1ODQJAQAAABhjaGFuZ2VDdXJyZW50UmV3YXJkRW50cnkAAAACBQAAAA8kYWNjMjE5NTMyMTk1ODQJAAGRAAAAAgUAAAAPJGxpc3QxOTUzMjE5NTg0AAAAAAAAAAACAwkAAAAAAAACBQAAAA8kc2l6ZTE5NTMyMTk1ODQAAAAAAAAAAAMFAAAADyRhY2MzMTk1MzIxOTU4NAQAAAAPJGFjYzQxOTUzMjE5NTg0CQEAAAAYY2hhbmdlQ3VycmVudFJld2FyZEVudHJ5AAAAAgUAAAAPJGFjYzMxOTUzMjE5NTg0CQABkQAAAAIFAAAADyRsaXN0MTk1MzIxOTU4NAAAAAAAAAAAAwMJAAAAAAAAAgUAAAAPJHNpemUxOTUzMjE5NTg0AAAAAAAAAAAEBQAAAA8kYWNjNDE5NTMyMTk1ODQEAAAADyRhY2M1MTk1MzIxOTU4NAkBAAAAGGNoYW5nZUN1cnJlbnRSZXdhcmRFbnRyeQAAAAIFAAAADyRhY2M0MTk1MzIxOTU4NAkAAZEAAAACBQAAAA8kbGlzdDE5NTMyMTk1ODQAAAAAAAAAAAQDCQAAAAAAAAIFAAAADyRzaXplMTk1MzIxOTU4NAAAAAAAAAAABQUAAAAPJGFjYzUxOTUzMjE5NTg0BAAAAA8kYWNjNjE5NTMyMTk1ODQJAQAAABhjaGFuZ2VDdXJyZW50UmV3YXJkRW50cnkAAAACBQAAAA8kYWNjNTE5NTMyMTk1ODQJAAGRAAAAAgUAAAAPJGxpc3QxOTUzMjE5NTg0AAAAAAAAAAAFAwkAAAAAAAACBQAAAA8kc2l6ZTE5NTMyMTk1ODQAAAAAAAAAAAYFAAAADyRhY2M2MTk1MzIxOTU4NAQAAAAPJGFjYzcxOTUzMjE5NTg0CQEAAAAYY2hhbmdlQ3VycmVudFJld2FyZEVudHJ5AAAAAgUAAAAPJGFjYzYxOTUzMjE5NTg0CQABkQAAAAIFAAAADyRsaXN0MTk1MzIxOTU4NAAAAAAAAAAABgMJAAAAAAAAAgUAAAAPJHNpemUxOTUzMjE5NTg0AAAAAAAAAAAHBQAAAA8kYWNjNzE5NTMyMTk1ODQEAAAADyRhY2M4MTk1MzIxOTU4NAkBAAAAGGNoYW5nZUN1cnJlbnRSZXdhcmRFbnRyeQAAAAIFAAAADyRhY2M3MTk1MzIxOTU4NAkAAZEAAAACBQAAAA8kbGlzdDE5NTMyMTk1ODQAAAAAAAAAAAcDCQAAAAAAAAIFAAAADyRzaXplMTk1MzIxOTU4NAAAAAAAAAAACAUAAAAPJGFjYzgxOTUzMjE5NTg0BAAAAA8kYWNjOTE5NTMyMTk1ODQJAQAAABhjaGFuZ2VDdXJyZW50UmV3YXJkRW50cnkAAAACBQAAAA8kYWNjODE5NTMyMTk1ODQJAAGRAAAAAgUAAAAPJGxpc3QxOTUzMjE5NTg0AAAAAAAAAAAIAwkAAAAAAAACBQAAAA8kc2l6ZTE5NTMyMTk1ODQAAAAAAAAAAAkFAAAADyRhY2M5MTk1MzIxOTU4NAQAAAAQJGFjYzEwMTk1MzIxOTU4NAkBAAAAGGNoYW5nZUN1cnJlbnRSZXdhcmRFbnRyeQAAAAIFAAAADyRhY2M5MTk1MzIxOTU4NAkAAZEAAAACBQAAAA8kbGlzdDE5NTMyMTk1ODQAAAAAAAAAAAkDCQAAAAAAAAIFAAAADyRzaXplMTk1MzIxOTU4NAAAAAAAAAAACgUAAAAQJGFjYzEwMTk1MzIxOTU4NAQAAAAQJGFjYzExMTk1MzIxOTU4NAkBAAAAGGNoYW5nZUN1cnJlbnRSZXdhcmRFbnRyeQAAAAIFAAAAECRhY2MxMDE5NTMyMTk1ODQJAAGRAAAAAgUAAAAPJGxpc3QxOTUzMjE5NTg0AAAAAAAAAAAKCQAAAgAAAAECAAAAE0xpc3Qgc2l6ZSBleGNlZWQgMTAEAAAAEWhlaWdodEVudHJ5TmV3Q3VyBAAAAA8kbGlzdDE5NjEzMTk2NTgFAAAADGN1cnJlbnRQb29scwQAAAAPJHNpemUxOTYxMzE5NjU4CQABkAAAAAEFAAAADyRsaXN0MTk2MTMxOTY1OAQAAAAPJGFjYzAxOTYxMzE5NjU4BQAAAANuaWwDCQAAAAAAAAIFAAAADyRzaXplMTk2MTMxOTY1OAAAAAAAAAAAAAUAAAAPJGFjYzAxOTYxMzE5NjU4BAAAAA8kYWNjMTE5NjEzMTk2NTgJAQAAABFjaGFuZ2VIZWlnaHRFbnRyeQAAAAIFAAAADyRhY2MwMTk2MTMxOTY1OAkAAZEAAAACBQAAAA8kbGlzdDE5NjEzMTk2NTgAAAAAAAAAAAADCQAAAAAAAAIFAAAADyRzaXplMTk2MTMxOTY1OAAAAAAAAAAAAQUAAAAPJGFjYzExOTYxMzE5NjU4BAAAAA8kYWNjMjE5NjEzMTk2NTgJAQAAABFjaGFuZ2VIZWlnaHRFbnRyeQAAAAIFAAAADyRhY2MxMTk2MTMxOTY1OAkAAZEAAAACBQAAAA8kbGlzdDE5NjEzMTk2NTgAAAAAAAAAAAEDCQAAAAAAAAIFAAAADyRzaXplMTk2MTMxOTY1OAAAAAAAAAAAAgUAAAAPJGFjYzIxOTYxMzE5NjU4BAAAAA8kYWNjMzE5NjEzMTk2NTgJAQAAABFjaGFuZ2VIZWlnaHRFbnRyeQAAAAIFAAAADyRhY2MyMTk2MTMxOTY1OAkAAZEAAAACBQAAAA8kbGlzdDE5NjEzMTk2NTgAAAAAAAAAAAIDCQAAAAAAAAIFAAAADyRzaXplMTk2MTMxOTY1OAAAAAAAAAAAAwUAAAAPJGFjYzMxOTYxMzE5NjU4BAAAAA8kYWNjNDE5NjEzMTk2NTgJAQAAABFjaGFuZ2VIZWlnaHRFbnRyeQAAAAIFAAAADyRhY2MzMTk2MTMxOTY1OAkAAZEAAAACBQAAAA8kbGlzdDE5NjEzMTk2NTgAAAAAAAAAAAMDCQAAAAAAAAIFAAAADyRzaXplMTk2MTMxOTY1OAAAAAAAAAAABAUAAAAPJGFjYzQxOTYxMzE5NjU4BAAAAA8kYWNjNTE5NjEzMTk2NTgJAQAAABFjaGFuZ2VIZWlnaHRFbnRyeQAAAAIFAAAADyRhY2M0MTk2MTMxOTY1OAkAAZEAAAACBQAAAA8kbGlzdDE5NjEzMTk2NTgAAAAAAAAAAAQDCQAAAAAAAAIFAAAADyRzaXplMTk2MTMxOTY1OAAAAAAAAAAABQUAAAAPJGFjYzUxOTYxMzE5NjU4BAAAAA8kYWNjNjE5NjEzMTk2NTgJAQAAABFjaGFuZ2VIZWlnaHRFbnRyeQAAAAIFAAAADyRhY2M1MTk2MTMxOTY1OAkAAZEAAAACBQAAAA8kbGlzdDE5NjEzMTk2NTgAAAAAAAAAAAUDCQAAAAAAAAIFAAAADyRzaXplMTk2MTMxOTY1OAAAAAAAAAAABgUAAAAPJGFjYzYxOTYxMzE5NjU4BAAAAA8kYWNjNzE5NjEzMTk2NTgJAQAAABFjaGFuZ2VIZWlnaHRFbnRyeQAAAAIFAAAADyRhY2M2MTk2MTMxOTY1OAkAAZEAAAACBQAAAA8kbGlzdDE5NjEzMTk2NTgAAAAAAAAAAAYDCQAAAAAAAAIFAAAADyRzaXplMTk2MTMxOTY1OAAAAAAAAAAABwUAAAAPJGFjYzcxOTYxMzE5NjU4BAAAAA8kYWNjODE5NjEzMTk2NTgJAQAAABFjaGFuZ2VIZWlnaHRFbnRyeQAAAAIFAAAADyRhY2M3MTk2MTMxOTY1OAkAAZEAAAACBQAAAA8kbGlzdDE5NjEzMTk2NTgAAAAAAAAAAAcDCQAAAAAAAAIFAAAADyRzaXplMTk2MTMxOTY1OAAAAAAAAAAACAUAAAAPJGFjYzgxOTYxMzE5NjU4BAAAAA8kYWNjOTE5NjEzMTk2NTgJAQAAABFjaGFuZ2VIZWlnaHRFbnRyeQAAAAIFAAAADyRhY2M4MTk2MTMxOTY1OAkAAZEAAAACBQAAAA8kbGlzdDE5NjEzMTk2NTgAAAAAAAAAAAgDCQAAAAAAAAIFAAAADyRzaXplMTk2MTMxOTY1OAAAAAAAAAAACQUAAAAPJGFjYzkxOTYxMzE5NjU4BAAAABAkYWNjMTAxOTYxMzE5NjU4CQEAAAARY2hhbmdlSGVpZ2h0RW50cnkAAAACBQAAAA8kYWNjOTE5NjEzMTk2NTgJAAGRAAAAAgUAAAAPJGxpc3QxOTYxMzE5NjU4AAAAAAAAAAAJAwkAAAAAAAACBQAAAA8kc2l6ZTE5NjEzMTk2NTgAAAAAAAAAAAoFAAAAECRhY2MxMDE5NjEzMTk2NTgEAAAAECRhY2MxMTE5NjEzMTk2NTgJAQAAABFjaGFuZ2VIZWlnaHRFbnRyeQAAAAIFAAAAECRhY2MxMDE5NjEzMTk2NTgJAAGRAAAAAgUAAAAPJGxpc3QxOTYxMzE5NjU4AAAAAAAAAAAKCQAAAgAAAAECAAAAE0xpc3Qgc2l6ZSBleGNlZWQgMTAJAAROAAAAAgkABE4AAAACCQAETgAAAAIJAAROAAAAAgkABE4AAAACCQAETgAAAAIFAAAAFnByZXZpb3VzUmV3YXJkRW50cnlOZXcFAAAAFWN1cnJlbnRSZXdhcmRFbnRyeU5ldwUAAAARaGVpZ2h0RW50cnlOZXdDdXIFAAAAEXN1bVJld2FyZFByZXZpb3VzBQAAABBzdW1SZXdhcmRDdXJyZW50BQAAABdyZXdhcmRVcGRhdGVIZWlnaHRFbnRyeQUAAAAmcmV3YXJkVXBkYXRlSGVpZ2h0Rmlyc3RQYWdpbmF0aW9uRW50cnkAAAABaQEAAAAIc2h1dGRvd24AAAAAAwkBAAAAASEAAAABBQAAAAhpc0FjdGl2ZQkAAAIAAAABCQABLAAAAAICAAAAIkRBcHAgaXMgYWxyZWFkeSBzdXNwZW5kZWQuIENhdXNlOiAJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQdAAAAAgUAAAAEdGhpcwUAAAAIa2V5Q2F1c2UCAAAAGnRoZSBjYXVzZSB3YXNuJ3Qgc3BlY2lmaWVkAwkBAAAAASEAAAABCQEAAAAPY29udGFpbnNFbGVtZW50AAAAAgkABEwAAAACBQAAAAxhZG1pblB1YktleTEJAARMAAAAAgUAAAAMYWRtaW5QdWJLZXkyCQAETAAAAAIFAAAADGFkbWluUHViS2V5MwkABEwAAAACBQAAABRhZG1pblB1YktleVN0YXJ0U3RvcAUAAAADbmlsCAUAAAABaQAAAA9jYWxsZXJQdWJsaWNLZXkJAAACAAAAAQIAAAAhT25seSBhZG1pbiBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uCQEAAAAHc3VzcGVuZAAAAAECAAAAD1BhdXNlZCBieSBhZG1pbgAAAAFpAQAAAAhhY3RpdmF0ZQAAAAADBQAAAAhpc0FjdGl2ZQkAAAIAAAABAgAAABZEQXBwIGlzIGFscmVhZHkgYWN0aXZlAwkBAAAAASEAAAABCQEAAAAPY29udGFpbnNFbGVtZW50AAAAAgkABEwAAAACBQAAAAxhZG1pblB1YktleTEJAARMAAAAAgUAAAAMYWRtaW5QdWJLZXkyCQAETAAAAAIFAAAADGFkbWluUHViS2V5MwkABEwAAAACBQAAABRhZG1pblB1YktleVN0YXJ0U3RvcAUAAAADbmlsCAUAAAABaQAAAA9jYWxsZXJQdWJsaWNLZXkJAAACAAAAAQIAAAAhT25seSBhZG1pbiBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uCQAETAAAAAIJAQAAAAxCb29sZWFuRW50cnkAAAACBQAAAAlrZXlBY3RpdmUGCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEFAAAACGtleUNhdXNlBQAAAANuaWwAAAABAAAAAnR4AQAAAAZ2ZXJpZnkAAAAACQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAAgFAAAAAnR4AAAAD3NlbmRlclB1YmxpY0tleQCeV4k=", "height": 1565993, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 6KBwphUa1m6DbSwwzpfwTGkkEQ7WnE1hvqx5Bf1ibXer Next: EJjvdtxEqrmhmkCS3AX9cWmf6y1Sb5MKqCyQN7rMfvsW Diff:
OldNewDifferences
174174
175175
176176 func getUserVoteInfo (user) = {
177- let $t060666617 = if (isDefined(getString(votingLiteContract, (toString(user) + kUserTotalStruc))))
177+ let $t060726623 = if (isDefined(getString(votingLiteContract, (toString(user) + kUserTotalStruc))))
178178 then {
179179 let data = split(valueOrErrorMessage(getString(votingLiteContract, (toString(user) + kUserTotalStruc)), "Empty kUserTotalStruc"), "_")
180180 $Tuple3(parseIntValue(data[0]), parseIntValue(data[1]), parseIntValue(data[2]))
183183 let uPoolTotalSWOP = valueOrElse(getInteger(votingLiteContract, (toString(user) + kUserTotalVoteSWOP)), 0)
184184 $Tuple3(uPoolTotalSWOP, 0, currVotingPeriod)
185185 }
186- let userTotalVoteSWOP = $t060666617._1
187- let userUnvoted = $t060666617._2
188- let userUnvotedPeriod = $t060666617._3
186+ let userTotalVoteSWOP = $t060726623._1
187+ let userUnvoted = $t060726623._2
188+ let userUnvotedPeriod = $t060726623._3
189189 let userUnvotedActual = if ((userUnvotedPeriod == currVotingPeriod))
190190 then userUnvoted
191191 else 0
197197
198198
199199 func getVotingStartHeight (voteName) = valueOrElse(getInteger(this, (voteName + keyVotingStartHeight)), 0)
200+
201+
202+func getPoolUpdateHeight (pool) = valueOrElse(getIntegerValue(this, (pool + keyHeightPoolFraction)), 0)
203+
204+
205+func getCurPoolWeight (pool) = valueOrElse(getIntegerValue(this, (pool + keyRewardPoolFractionCurrent)), 0)
200206
201207
202208 func getVoteOptionAmount (user,voteName,option) = {
238244
239245 func claimCalc (caller) = {
240246 let lastInterest = getLastInterestInfo()
241- let $t084098489 = getUserInterestInfo(caller, lastInterest)
242- let userLastInterest = $t084098489._1
243- let userSWOPLocked = $t084098489._2
247+ let $t087338813 = getUserInterestInfo(caller, lastInterest)
248+ let userLastInterest = $t087338813._1
249+ let userSWOPLocked = $t087338813._2
244250 let claimAmount = fraction(userSWOPLocked, (lastInterest - userLastInterest), scaleValue)
245251 let userNewInterest = lastInterest
246252 $Tuple2(userNewInterest, claimAmount)
251257 func airDrop () = if (!(isActive))
252258 then throw("DApp is inactive at this moment")
253259 else {
254- let $t087548829 = $Tuple2(i.payments[0].amount, i.payments[0].assetId)
255- let pmtAmount = $t087548829._1
256- let pmtAssetId = $t087548829._2
260+ let $t090789153 = $Tuple2(i.payments[0].amount, i.payments[0].assetId)
261+ let pmtAmount = $t090789153._1
262+ let pmtAssetId = $t090789153._2
257263 if ((pmtAssetId != SWOP))
258264 then throw("Incorrect pmtAssetId")
259265 else {
270276 func lockSWOP () = if (!(isActive))
271277 then throw("DApp is inactive at this moment")
272278 else {
273- let $t092679342 = $Tuple2(i.payments[0].amount, i.payments[0].assetId)
274- let pmtAmount = $t092679342._1
275- let pmtAssetId = $t092679342._2
279+ let $t095919666 = $Tuple2(i.payments[0].amount, i.payments[0].assetId)
280+ let pmtAmount = $t095919666._1
281+ let pmtAssetId = $t095919666._2
276282 if ((pmtAssetId != SWOP))
277283 then throw("Incorrect pmtAssetId")
278284 else {
279285 let lastInterest = getLastInterestInfo()
280- let $t094589540 = getUserInterestInfo(i.caller, lastInterest)
281- let userLastInterest = $t094589540._1
282- let userSWOPLocked = $t094589540._2
286+ let $t097829864 = getUserInterestInfo(i.caller, lastInterest)
287+ let userLastInterest = $t097829864._1
288+ let userSWOPLocked = $t097829864._2
283289 let claimAmount = fraction(userSWOPLocked, (lastInterest - userLastInterest), scaleValue)
284290 let userSWOPLockedNew = ((userSWOPLocked + pmtAmount) + claimAmount)
285291 let userNewInterest = lastInterest
301307 else {
302308 let totalSWOPLocked = getTotalSWOPLocked()
303309 let userSWOPLocked = getUserSWOPLocked(i.caller)
304- let $t01069010745 = claimCalc(i.caller)
305- let userNewInterest = $t01069010745._1
306- let claimAmount = $t01069010745._2
307- let $t01075010815 = getUserVoteInfo(i.caller)
308- let userVoteAmount = $t01075010815._1
309- let userUnvoteAmount = $t01075010815._2
310+ let $t01101411069 = claimCalc(i.caller)
311+ let userNewInterest = $t01101411069._1
312+ let claimAmount = $t01101411069._2
313+ let $t01107411139 = getUserVoteInfo(i.caller)
314+ let userVoteAmount = $t01107411139._1
315+ let userUnvoteAmount = $t01107411139._2
310316 let userVoteAmountForNewPool = getUserTotalVoteForNewPoolAmount(i.caller)
311317 if (if (if ((0 > userUnvoteAmount))
312318 then true
335341 then throw("DApp is inactive at this moment")
336342 else {
337343 let lastInterest = getLastInterestInfo()
338- let $t01219012245 = claimCalc(i.caller)
339- let userNewInterest = $t01219012245._1
340- let claimAmount = $t01219012245._2
344+ let $t01251412569 = claimCalc(i.caller)
345+ let userNewInterest = $t01251412569._1
346+ let claimAmount = $t01251412569._2
341347 let userClaimedAmount = getUserSWOPClaimedAmount(i.caller)
342348 let userClaimedAmountNew = (userClaimedAmount + claimAmount)
343349 if ((claimAmount == 0))
354360 let totalSWOPLocked = getTotalSWOPLocked()
355361 let userSWOPLocked = getUserSWOPLocked(i.caller)
356362 let lastInterest = getLastInterestInfo()
357- let $t01302413079 = claimCalc(i.caller)
358- let userNewInterest = $t01302413079._1
359- let claimAmount = $t01302413079._2
363+ let $t01334813403 = claimCalc(i.caller)
364+ let userNewInterest = $t01334813403._1
365+ let claimAmount = $t01334813403._2
360366 let userSWOPLockedNew = (userSWOPLocked + claimAmount)
361367 let totalSWOPLockedNew = (totalSWOPLocked + claimAmount)
362368 let userClaimedAmount = getUserSWOPClaimedAmount(i.caller)
373379 then throw("DApp is inactive at this moment")
374380 else {
375381 let amountPools = 10
382+ let totalRewardUpdateHeight = valueOrElse(getIntegerValue(this, keyRewardUpdateHeight), 0)
376383 if (!(containsElement([adminPubKey1, adminPubKey2, adminPubKey3, adminPubKeyStartStop, adminPubKeyWallet], i.callerPublicKey)))
377384 then throw("Only admin can call this function")
378385 else if (if ((size(previousPools) > amountPools))
379386 then true
380387 else (size(currentPools) > amountPools))
381388 then throw(("Max amount of pool is " + toString(amountPools)))
382- else {
383- func sum (a,b) = (a + b)
389+ else if ((totalRewardUpdateHeight >= rewardUpdateHeight))
390+ then throw("rewardUpdateHeight <= totalRewardUpdateHeight")
391+ else if ((height >= rewardUpdateHeight))
392+ then throw("rewardUpdateHeight <= totalRewardUpdateHeight")
393+ else if ((0 >= rewardUpdateHeight))
394+ then throw("0 >= rewardUpdateHeight ")
395+ else {
396+ func sum (a,b) = (a + b)
384397
385- func PreviousRewardEntry (accumulated,pool) = {
386- let poolIndex = value(indexOf(previousPools, pool))
387- let poolReward = previousRewards[poolIndex]
398+ func changePreviousRewardEntry (accumulated,pool) = {
399+ let poolCurRewar = getCurPoolWeight(pool)
400+ let rewardUpdatePoolHeight = getPoolUpdateHeight(pool)
401+ if ((rewardUpdateHeight != rewardUpdatePoolHeight))
402+ then if ((rewardUpdatePoolHeight == totalRewardUpdateHeight))
403+ then {
404+ let poolReward = getCurPoolWeight(pool)
388405 IntegerEntry((pool + keyRewardPoolFractionPrevious), poolReward) :: accumulated
389- }
406+ }
407+ else nil
408+ else nil
409+ }
390410
391- func CurrentRewardEntry (accumulated,pool) = {
392- let poolIndex = value(indexOf(currentPools, pool))
393- let poolReward = currentRewards[poolIndex]
394-IntegerEntry((pool + keyRewardPoolFractionCurrent), poolReward) :: accumulated
395- }
411+ func changeCurrentRewardEntry (accumulated,pool) = {
412+ let poolIndex = value(indexOf(currentPools, pool))
413+ let poolReward = currentRewards[poolIndex]
414+ if ((0 > poolReward))
415+ then throw("PoolReward < 0")
416+ else IntegerEntry((pool + keyRewardPoolFractionCurrent), poolReward) :: accumulated
417+ }
396418
397- func HeightEntry (accumulated,pool) = {
398- let poolHeight = rewardUpdateHeight
419+ func changeHeightEntry (accumulated,pool) = {
420+ let poolHeight = rewardUpdateHeight
399421 IntegerEntry((pool + keyHeightPoolFraction), poolHeight) :: accumulated
400- }
422+ }
401423
402- func getSumReward (prevTempSum,curTempSum,pagination) = if ((pagination == 0))
403- then if (if ((prevTempSum > totalVoteShare))
404- then true
405- else (curTempSum > totalVoteShare))
406- then throw(((((("sumRewardPrevious > totalVoteShare or sumRewardCurrent > totalVoteShare - " + toString(pagination)) + " ") + toString(prevTempSum)) + " ") + toString(curTempSum)))
407- else $Tuple3([IntegerEntry(keyTempPrevSum, prevTempSum)], [IntegerEntry(keyTempCurSum, curTempSum)], [IntegerEntry(keyRewardUpdateFirstPaginationHeight, rewardUpdateHeight)])
408- else if ((pagination == 1))
409- then {
410- let prevTempSumFromKey = valueOrElse(getInteger(this, keyTempPrevSum), 0)
411- let curTempSumFromKey = valueOrElse(getInteger(this, keyTempCurSum), 0)
412- let rewardUpdateHeightFirstPaginationEntry = valueOrElse(getInteger(this, keyRewardUpdateFirstPaginationHeight), 0)
413- if (if (((prevTempSum + prevTempSumFromKey) > totalVoteShare))
414- then true
415- else ((curTempSum + curTempSumFromKey) > totalVoteShare))
416- then throw(((((("sumRewardPrevious > totalVoteShare or sumRewardCurrent > totalVoteShare - " + toString(pagination)) + " ") + toString((prevTempSum + prevTempSumFromKey))) + " ") + toString((curTempSum + curTempSumFromKey))))
417- else if ((rewardUpdateHeightFirstPaginationEntry != rewardUpdateHeight))
418- then throw("current rewardUpdateHeight != rewardUpdateHeightFirstPaginationEntry")
419- else $Tuple3([IntegerEntry(keyTempPrevSum, (prevTempSum + prevTempSumFromKey))], [IntegerEntry(keyTempCurSum, (curTempSum + curTempSumFromKey))], nil)
420- }
421- else if ((pagination == 2))
422- then {
423- let prevSum = (valueOrElse(getInteger(this, keyTempPrevSum), 0) + prevTempSum)
424- let curSum = (valueOrElse(getInteger(this, keyTempCurSum), 0) + curTempSum)
425- let rewardUpdateHeightFirstPaginationEntry = valueOrElse(getInteger(this, keyRewardUpdateFirstPaginationHeight), 0)
426- if (if ((prevSum != totalVoteShare))
424+ func getSumReward (prevTempSum,curTempSum,pagination) = if ((pagination == 0))
425+ then if (if ((prevTempSum > totalVoteShare))
427426 then true
428- else (curSum != totalVoteShare))
429- then throw(((("sumRewardPrevious != totalVoteShare or sumRewardCurrent != totalVoteShare; sumRewardPrevious: " + toString(prevSum)) + "; sumRewardCurrent: ") + toString(curSum)))
430- else if ((rewardUpdateHeightFirstPaginationEntry != rewardUpdateHeight))
431- then throw("current rewardUpdateHeight != rewardUpdateHeightFirstPaginationEntry")
432- else $Tuple3([IntegerEntry(keyTempPrevSum, prevSum)], [IntegerEntry(keyTempCurSum, curSum)], nil)
427+ else (curTempSum > totalVoteShare))
428+ then throw(((((("sumRewardPrevious > totalVoteShare or sumRewardCurrent > totalVoteShare - " + toString(pagination)) + " ") + toString(prevTempSum)) + " ") + toString(curTempSum)))
429+ else $Tuple3([IntegerEntry(keyTempPrevSum, prevTempSum)], [IntegerEntry(keyTempCurSum, curTempSum)], [IntegerEntry(keyRewardUpdateFirstPaginationHeight, rewardUpdateHeight)])
430+ else if ((pagination == 1))
431+ then {
432+ let prevTempSumFromKey = valueOrElse(getInteger(this, keyTempPrevSum), 0)
433+ let curTempSumFromKey = valueOrElse(getInteger(this, keyTempCurSum), 0)
434+ let rewardUpdateHeightFirstPaginationEntry = valueOrElse(getInteger(this, keyRewardUpdateFirstPaginationHeight), 0)
435+ if (if (((prevTempSum + prevTempSumFromKey) > totalVoteShare))
436+ then true
437+ else ((curTempSum + curTempSumFromKey) > totalVoteShare))
438+ then throw(((((("sumRewardPrevious > totalVoteShare or sumRewardCurrent > totalVoteShare - " + toString(pagination)) + " ") + toString((prevTempSum + prevTempSumFromKey))) + " ") + toString((curTempSum + curTempSumFromKey))))
439+ else if ((rewardUpdateHeightFirstPaginationEntry != rewardUpdateHeight))
440+ then throw("current rewardUpdateHeight != rewardUpdateHeightFirstPaginationEntry")
441+ else $Tuple3([IntegerEntry(keyTempPrevSum, (prevTempSum + prevTempSumFromKey))], [IntegerEntry(keyTempCurSum, (curTempSum + curTempSumFromKey))], nil)
442+ }
443+ else if ((pagination == 2))
444+ then {
445+ let prevSum = (valueOrElse(getInteger(this, keyTempPrevSum), 0) + prevTempSum)
446+ let curSum = (valueOrElse(getInteger(this, keyTempCurSum), 0) + curTempSum)
447+ let rewardUpdateHeightFirstPaginationEntry = valueOrElse(getInteger(this, keyRewardUpdateFirstPaginationHeight), 0)
448+ if (if ((prevSum != totalVoteShare))
449+ then true
450+ else (curSum != totalVoteShare))
451+ then throw("sumRewardPrevious != totalVoteShare or sumRewardCurrent != totalVoteShare")
452+ else if ((rewardUpdateHeightFirstPaginationEntry != rewardUpdateHeight))
453+ then throw("current rewardUpdateHeight != rewardUpdateHeightFirstPaginationEntry")
454+ else $Tuple3([IntegerEntry(keyTempPrevSum, prevSum)], [IntegerEntry(keyTempCurSum, curSum)], nil)
455+ }
456+ else throw("Incorrect pagination")
457+
458+ let sumRewardPreviousTemp = {
459+ let $list1885918892 = previousRewards
460+ let $size1885918892 = size($list1885918892)
461+ let $acc01885918892 = 0
462+ if (($size1885918892 == 0))
463+ then $acc01885918892
464+ else {
465+ let $acc11885918892 = sum($acc01885918892, $list1885918892[0])
466+ if (($size1885918892 == 1))
467+ then $acc11885918892
468+ else {
469+ let $acc21885918892 = sum($acc11885918892, $list1885918892[1])
470+ if (($size1885918892 == 2))
471+ then $acc21885918892
472+ else {
473+ let $acc31885918892 = sum($acc21885918892, $list1885918892[2])
474+ if (($size1885918892 == 3))
475+ then $acc31885918892
476+ else {
477+ let $acc41885918892 = sum($acc31885918892, $list1885918892[3])
478+ if (($size1885918892 == 4))
479+ then $acc41885918892
480+ else {
481+ let $acc51885918892 = sum($acc41885918892, $list1885918892[4])
482+ if (($size1885918892 == 5))
483+ then $acc51885918892
484+ else {
485+ let $acc61885918892 = sum($acc51885918892, $list1885918892[5])
486+ if (($size1885918892 == 6))
487+ then $acc61885918892
488+ else {
489+ let $acc71885918892 = sum($acc61885918892, $list1885918892[6])
490+ if (($size1885918892 == 7))
491+ then $acc71885918892
492+ else {
493+ let $acc81885918892 = sum($acc71885918892, $list1885918892[7])
494+ if (($size1885918892 == 8))
495+ then $acc81885918892
496+ else {
497+ let $acc91885918892 = sum($acc81885918892, $list1885918892[8])
498+ if (($size1885918892 == 9))
499+ then $acc91885918892
500+ else {
501+ let $acc101885918892 = sum($acc91885918892, $list1885918892[9])
502+ if (($size1885918892 == 10))
503+ then $acc101885918892
504+ else {
505+ let $acc111885918892 = sum($acc101885918892, $list1885918892[10])
506+ throw("List size exceed 10")
507+ }
508+ }
509+ }
510+ }
511+ }
512+ }
513+ }
514+ }
515+ }
516+ }
517+ }
433518 }
434- else throw("Incorrect pagination")
435-
436- let sumRewardPreviousTemp = {
437- let $list1782917862 = previousRewards
438- let $size1782917862 = size($list1782917862)
439- let $acc01782917862 = 0
440- if (($size1782917862 == 0))
441- then $acc01782917862
442- else {
443- let $acc11782917862 = sum($acc01782917862, $list1782917862[0])
444- if (($size1782917862 == 1))
445- then $acc11782917862
519+ let sumRewardCurrentTemp = {
520+ let $list1892518957 = currentRewards
521+ let $size1892518957 = size($list1892518957)
522+ let $acc01892518957 = 0
523+ if (($size1892518957 == 0))
524+ then $acc01892518957
525+ else {
526+ let $acc11892518957 = sum($acc01892518957, $list1892518957[0])
527+ if (($size1892518957 == 1))
528+ then $acc11892518957
529+ else {
530+ let $acc21892518957 = sum($acc11892518957, $list1892518957[1])
531+ if (($size1892518957 == 2))
532+ then $acc21892518957
533+ else {
534+ let $acc31892518957 = sum($acc21892518957, $list1892518957[2])
535+ if (($size1892518957 == 3))
536+ then $acc31892518957
537+ else {
538+ let $acc41892518957 = sum($acc31892518957, $list1892518957[3])
539+ if (($size1892518957 == 4))
540+ then $acc41892518957
541+ else {
542+ let $acc51892518957 = sum($acc41892518957, $list1892518957[4])
543+ if (($size1892518957 == 5))
544+ then $acc51892518957
545+ else {
546+ let $acc61892518957 = sum($acc51892518957, $list1892518957[5])
547+ if (($size1892518957 == 6))
548+ then $acc61892518957
549+ else {
550+ let $acc71892518957 = sum($acc61892518957, $list1892518957[6])
551+ if (($size1892518957 == 7))
552+ then $acc71892518957
553+ else {
554+ let $acc81892518957 = sum($acc71892518957, $list1892518957[7])
555+ if (($size1892518957 == 8))
556+ then $acc81892518957
557+ else {
558+ let $acc91892518957 = sum($acc81892518957, $list1892518957[8])
559+ if (($size1892518957 == 9))
560+ then $acc91892518957
561+ else {
562+ let $acc101892518957 = sum($acc91892518957, $list1892518957[9])
563+ if (($size1892518957 == 10))
564+ then $acc101892518957
565+ else {
566+ let $acc111892518957 = sum($acc101892518957, $list1892518957[10])
567+ throw("List size exceed 10")
568+ }
569+ }
570+ }
571+ }
572+ }
573+ }
574+ }
575+ }
576+ }
577+ }
578+ }
579+ }
580+ let $t01896319116 = getSumReward(sumRewardPreviousTemp, sumRewardCurrentTemp, pagination)
581+ let sumRewardPrevious = $t01896319116._1
582+ let sumRewardCurrent = $t01896319116._2
583+ let rewardUpdateHeightFirstPaginationEntry = $t01896319116._3
584+ let rewardUpdateHeightEntry = if ((pagination == 2))
585+ then [IntegerEntry(keyRewardUpdateHeight, rewardUpdateHeight)]
586+ else [IntegerEntry(keyRewardUpdateHeight, getIntegerValue(this, keyRewardUpdateHeight))]
587+ if ((height > rewardUpdateHeight))
588+ then throw("rewardUpdateHeight < height")
446589 else {
447- let $acc21782917862 = sum($acc11782917862, $list1782917862[1])
448- if (($size1782917862 == 2))
449- then $acc21782917862
450- else {
451- let $acc31782917862 = sum($acc21782917862, $list1782917862[2])
452- if (($size1782917862 == 3))
453- then $acc31782917862
454- else {
455- let $acc41782917862 = sum($acc31782917862, $list1782917862[3])
456- if (($size1782917862 == 4))
457- then $acc41782917862
458- else {
459- let $acc51782917862 = sum($acc41782917862, $list1782917862[4])
460- if (($size1782917862 == 5))
461- then $acc51782917862
462- else {
463- let $acc61782917862 = sum($acc51782917862, $list1782917862[5])
464- if (($size1782917862 == 6))
465- then $acc61782917862
466- else {
467- let $acc71782917862 = sum($acc61782917862, $list1782917862[6])
468- if (($size1782917862 == 7))
469- then $acc71782917862
470- else {
471- let $acc81782917862 = sum($acc71782917862, $list1782917862[7])
472- if (($size1782917862 == 8))
473- then $acc81782917862
474- else {
475- let $acc91782917862 = sum($acc81782917862, $list1782917862[8])
476- if (($size1782917862 == 9))
477- then $acc91782917862
478- else {
479- let $acc101782917862 = sum($acc91782917862, $list1782917862[9])
480- if (($size1782917862 == 10))
481- then $acc101782917862
482- else {
483- let $acc111782917862 = sum($acc101782917862, $list1782917862[10])
484- throw("List size exceed 10")
485- }
486- }
487- }
488- }
489- }
490- }
491- }
492- }
493- }
590+ let previousRewardEntryNew = {
591+ let $list1944519499 = previousPools
592+ let $size1944519499 = size($list1944519499)
593+ let $acc01944519499 = nil
594+ if (($size1944519499 == 0))
595+ then $acc01944519499
596+ else {
597+ let $acc11944519499 = changePreviousRewardEntry($acc01944519499, $list1944519499[0])
598+ if (($size1944519499 == 1))
599+ then $acc11944519499
600+ else {
601+ let $acc21944519499 = changePreviousRewardEntry($acc11944519499, $list1944519499[1])
602+ if (($size1944519499 == 2))
603+ then $acc21944519499
604+ else {
605+ let $acc31944519499 = changePreviousRewardEntry($acc21944519499, $list1944519499[2])
606+ if (($size1944519499 == 3))
607+ then $acc31944519499
608+ else {
609+ let $acc41944519499 = changePreviousRewardEntry($acc31944519499, $list1944519499[3])
610+ if (($size1944519499 == 4))
611+ then $acc41944519499
612+ else {
613+ let $acc51944519499 = changePreviousRewardEntry($acc41944519499, $list1944519499[4])
614+ if (($size1944519499 == 5))
615+ then $acc51944519499
616+ else {
617+ let $acc61944519499 = changePreviousRewardEntry($acc51944519499, $list1944519499[5])
618+ if (($size1944519499 == 6))
619+ then $acc61944519499
620+ else {
621+ let $acc71944519499 = changePreviousRewardEntry($acc61944519499, $list1944519499[6])
622+ if (($size1944519499 == 7))
623+ then $acc71944519499
624+ else {
625+ let $acc81944519499 = changePreviousRewardEntry($acc71944519499, $list1944519499[7])
626+ if (($size1944519499 == 8))
627+ then $acc81944519499
628+ else {
629+ let $acc91944519499 = changePreviousRewardEntry($acc81944519499, $list1944519499[8])
630+ if (($size1944519499 == 9))
631+ then $acc91944519499
632+ else {
633+ let $acc101944519499 = changePreviousRewardEntry($acc91944519499, $list1944519499[9])
634+ if (($size1944519499 == 10))
635+ then $acc101944519499
636+ else {
637+ let $acc111944519499 = changePreviousRewardEntry($acc101944519499, $list1944519499[10])
638+ throw("List size exceed 10")
639+ }
640+ }
641+ }
642+ }
643+ }
644+ }
645+ }
646+ }
647+ }
648+ }
649+ }
650+ }
651+ let currentRewardEntryNew = {
652+ let $list1953219584 = currentPools
653+ let $size1953219584 = size($list1953219584)
654+ let $acc01953219584 = nil
655+ if (($size1953219584 == 0))
656+ then $acc01953219584
657+ else {
658+ let $acc11953219584 = changeCurrentRewardEntry($acc01953219584, $list1953219584[0])
659+ if (($size1953219584 == 1))
660+ then $acc11953219584
661+ else {
662+ let $acc21953219584 = changeCurrentRewardEntry($acc11953219584, $list1953219584[1])
663+ if (($size1953219584 == 2))
664+ then $acc21953219584
665+ else {
666+ let $acc31953219584 = changeCurrentRewardEntry($acc21953219584, $list1953219584[2])
667+ if (($size1953219584 == 3))
668+ then $acc31953219584
669+ else {
670+ let $acc41953219584 = changeCurrentRewardEntry($acc31953219584, $list1953219584[3])
671+ if (($size1953219584 == 4))
672+ then $acc41953219584
673+ else {
674+ let $acc51953219584 = changeCurrentRewardEntry($acc41953219584, $list1953219584[4])
675+ if (($size1953219584 == 5))
676+ then $acc51953219584
677+ else {
678+ let $acc61953219584 = changeCurrentRewardEntry($acc51953219584, $list1953219584[5])
679+ if (($size1953219584 == 6))
680+ then $acc61953219584
681+ else {
682+ let $acc71953219584 = changeCurrentRewardEntry($acc61953219584, $list1953219584[6])
683+ if (($size1953219584 == 7))
684+ then $acc71953219584
685+ else {
686+ let $acc81953219584 = changeCurrentRewardEntry($acc71953219584, $list1953219584[7])
687+ if (($size1953219584 == 8))
688+ then $acc81953219584
689+ else {
690+ let $acc91953219584 = changeCurrentRewardEntry($acc81953219584, $list1953219584[8])
691+ if (($size1953219584 == 9))
692+ then $acc91953219584
693+ else {
694+ let $acc101953219584 = changeCurrentRewardEntry($acc91953219584, $list1953219584[9])
695+ if (($size1953219584 == 10))
696+ then $acc101953219584
697+ else {
698+ let $acc111953219584 = changeCurrentRewardEntry($acc101953219584, $list1953219584[10])
699+ throw("List size exceed 10")
700+ }
701+ }
702+ }
703+ }
704+ }
705+ }
706+ }
707+ }
708+ }
709+ }
710+ }
711+ }
712+ let heightEntryNewCur = {
713+ let $list1961319658 = currentPools
714+ let $size1961319658 = size($list1961319658)
715+ let $acc01961319658 = nil
716+ if (($size1961319658 == 0))
717+ then $acc01961319658
718+ else {
719+ let $acc11961319658 = changeHeightEntry($acc01961319658, $list1961319658[0])
720+ if (($size1961319658 == 1))
721+ then $acc11961319658
722+ else {
723+ let $acc21961319658 = changeHeightEntry($acc11961319658, $list1961319658[1])
724+ if (($size1961319658 == 2))
725+ then $acc21961319658
726+ else {
727+ let $acc31961319658 = changeHeightEntry($acc21961319658, $list1961319658[2])
728+ if (($size1961319658 == 3))
729+ then $acc31961319658
730+ else {
731+ let $acc41961319658 = changeHeightEntry($acc31961319658, $list1961319658[3])
732+ if (($size1961319658 == 4))
733+ then $acc41961319658
734+ else {
735+ let $acc51961319658 = changeHeightEntry($acc41961319658, $list1961319658[4])
736+ if (($size1961319658 == 5))
737+ then $acc51961319658
738+ else {
739+ let $acc61961319658 = changeHeightEntry($acc51961319658, $list1961319658[5])
740+ if (($size1961319658 == 6))
741+ then $acc61961319658
742+ else {
743+ let $acc71961319658 = changeHeightEntry($acc61961319658, $list1961319658[6])
744+ if (($size1961319658 == 7))
745+ then $acc71961319658
746+ else {
747+ let $acc81961319658 = changeHeightEntry($acc71961319658, $list1961319658[7])
748+ if (($size1961319658 == 8))
749+ then $acc81961319658
750+ else {
751+ let $acc91961319658 = changeHeightEntry($acc81961319658, $list1961319658[8])
752+ if (($size1961319658 == 9))
753+ then $acc91961319658
754+ else {
755+ let $acc101961319658 = changeHeightEntry($acc91961319658, $list1961319658[9])
756+ if (($size1961319658 == 10))
757+ then $acc101961319658
758+ else {
759+ let $acc111961319658 = changeHeightEntry($acc101961319658, $list1961319658[10])
760+ throw("List size exceed 10")
761+ }
762+ }
763+ }
764+ }
765+ }
766+ }
767+ }
768+ }
769+ }
770+ }
771+ }
772+ }
773+ ((((((previousRewardEntryNew ++ currentRewardEntryNew) ++ heightEntryNewCur) ++ sumRewardPrevious) ++ sumRewardCurrent) ++ rewardUpdateHeightEntry) ++ rewardUpdateHeightFirstPaginationEntry)
494774 }
495775 }
496- }
497- let sumRewardCurrentTemp = {
498- let $list1789517927 = currentRewards
499- let $size1789517927 = size($list1789517927)
500- let $acc01789517927 = 0
501- if (($size1789517927 == 0))
502- then $acc01789517927
503- else {
504- let $acc11789517927 = sum($acc01789517927, $list1789517927[0])
505- if (($size1789517927 == 1))
506- then $acc11789517927
507- else {
508- let $acc21789517927 = sum($acc11789517927, $list1789517927[1])
509- if (($size1789517927 == 2))
510- then $acc21789517927
511- else {
512- let $acc31789517927 = sum($acc21789517927, $list1789517927[2])
513- if (($size1789517927 == 3))
514- then $acc31789517927
515- else {
516- let $acc41789517927 = sum($acc31789517927, $list1789517927[3])
517- if (($size1789517927 == 4))
518- then $acc41789517927
519- else {
520- let $acc51789517927 = sum($acc41789517927, $list1789517927[4])
521- if (($size1789517927 == 5))
522- then $acc51789517927
523- else {
524- let $acc61789517927 = sum($acc51789517927, $list1789517927[5])
525- if (($size1789517927 == 6))
526- then $acc61789517927
527- else {
528- let $acc71789517927 = sum($acc61789517927, $list1789517927[6])
529- if (($size1789517927 == 7))
530- then $acc71789517927
531- else {
532- let $acc81789517927 = sum($acc71789517927, $list1789517927[7])
533- if (($size1789517927 == 8))
534- then $acc81789517927
535- else {
536- let $acc91789517927 = sum($acc81789517927, $list1789517927[8])
537- if (($size1789517927 == 9))
538- then $acc91789517927
539- else {
540- let $acc101789517927 = sum($acc91789517927, $list1789517927[9])
541- if (($size1789517927 == 10))
542- then $acc101789517927
543- else {
544- let $acc111789517927 = sum($acc101789517927, $list1789517927[10])
545- throw("List size exceed 10")
546- }
547- }
548- }
549- }
550- }
551- }
552- }
553- }
554- }
555- }
556- }
557- }
558- let $t01793318086 = getSumReward(sumRewardPreviousTemp, sumRewardCurrentTemp, pagination)
559- let sumRewardPrevious = $t01793318086._1
560- let sumRewardCurrent = $t01793318086._2
561- let rewardUpdateHeightFirstPaginationEntry = $t01793318086._3
562- let rewardUpdateHeightEntry = if ((pagination == 2))
563- then [IntegerEntry(keyRewardUpdateHeight, rewardUpdateHeight)]
564- else [IntegerEntry(keyRewardUpdateHeight, getIntegerValue(this, keyRewardUpdateHeight))]
565- if ((height > rewardUpdateHeight))
566- then throw("rewardUpdateHeight < height")
567- else {
568- let previousRewardEntryNew = {
569- let $list1841518463 = previousPools
570- let $size1841518463 = size($list1841518463)
571- let $acc01841518463 = nil
572- if (($size1841518463 == 0))
573- then $acc01841518463
574- else {
575- let $acc11841518463 = PreviousRewardEntry($acc01841518463, $list1841518463[0])
576- if (($size1841518463 == 1))
577- then $acc11841518463
578- else {
579- let $acc21841518463 = PreviousRewardEntry($acc11841518463, $list1841518463[1])
580- if (($size1841518463 == 2))
581- then $acc21841518463
582- else {
583- let $acc31841518463 = PreviousRewardEntry($acc21841518463, $list1841518463[2])
584- if (($size1841518463 == 3))
585- then $acc31841518463
586- else {
587- let $acc41841518463 = PreviousRewardEntry($acc31841518463, $list1841518463[3])
588- if (($size1841518463 == 4))
589- then $acc41841518463
590- else {
591- let $acc51841518463 = PreviousRewardEntry($acc41841518463, $list1841518463[4])
592- if (($size1841518463 == 5))
593- then $acc51841518463
594- else {
595- let $acc61841518463 = PreviousRewardEntry($acc51841518463, $list1841518463[5])
596- if (($size1841518463 == 6))
597- then $acc61841518463
598- else {
599- let $acc71841518463 = PreviousRewardEntry($acc61841518463, $list1841518463[6])
600- if (($size1841518463 == 7))
601- then $acc71841518463
602- else {
603- let $acc81841518463 = PreviousRewardEntry($acc71841518463, $list1841518463[7])
604- if (($size1841518463 == 8))
605- then $acc81841518463
606- else {
607- let $acc91841518463 = PreviousRewardEntry($acc81841518463, $list1841518463[8])
608- if (($size1841518463 == 9))
609- then $acc91841518463
610- else {
611- let $acc101841518463 = PreviousRewardEntry($acc91841518463, $list1841518463[9])
612- if (($size1841518463 == 10))
613- then $acc101841518463
614- else {
615- let $acc111841518463 = PreviousRewardEntry($acc101841518463, $list1841518463[10])
616- throw("List size exceed 10")
617- }
618- }
619- }
620- }
621- }
622- }
623- }
624- }
625- }
626- }
627- }
628- }
629- let currentRewardEntryNew = {
630- let $list1849618542 = currentPools
631- let $size1849618542 = size($list1849618542)
632- let $acc01849618542 = nil
633- if (($size1849618542 == 0))
634- then $acc01849618542
635- else {
636- let $acc11849618542 = CurrentRewardEntry($acc01849618542, $list1849618542[0])
637- if (($size1849618542 == 1))
638- then $acc11849618542
639- else {
640- let $acc21849618542 = CurrentRewardEntry($acc11849618542, $list1849618542[1])
641- if (($size1849618542 == 2))
642- then $acc21849618542
643- else {
644- let $acc31849618542 = CurrentRewardEntry($acc21849618542, $list1849618542[2])
645- if (($size1849618542 == 3))
646- then $acc31849618542
647- else {
648- let $acc41849618542 = CurrentRewardEntry($acc31849618542, $list1849618542[3])
649- if (($size1849618542 == 4))
650- then $acc41849618542
651- else {
652- let $acc51849618542 = CurrentRewardEntry($acc41849618542, $list1849618542[4])
653- if (($size1849618542 == 5))
654- then $acc51849618542
655- else {
656- let $acc61849618542 = CurrentRewardEntry($acc51849618542, $list1849618542[5])
657- if (($size1849618542 == 6))
658- then $acc61849618542
659- else {
660- let $acc71849618542 = CurrentRewardEntry($acc61849618542, $list1849618542[6])
661- if (($size1849618542 == 7))
662- then $acc71849618542
663- else {
664- let $acc81849618542 = CurrentRewardEntry($acc71849618542, $list1849618542[7])
665- if (($size1849618542 == 8))
666- then $acc81849618542
667- else {
668- let $acc91849618542 = CurrentRewardEntry($acc81849618542, $list1849618542[8])
669- if (($size1849618542 == 9))
670- then $acc91849618542
671- else {
672- let $acc101849618542 = CurrentRewardEntry($acc91849618542, $list1849618542[9])
673- if (($size1849618542 == 10))
674- then $acc101849618542
675- else {
676- let $acc111849618542 = CurrentRewardEntry($acc101849618542, $list1849618542[10])
677- throw("List size exceed 10")
678- }
679- }
680- }
681- }
682- }
683- }
684- }
685- }
686- }
687- }
688- }
689- }
690- let heightEntryNew = {
691- let $list1856818607 = currentPools
692- let $size1856818607 = size($list1856818607)
693- let $acc01856818607 = nil
694- if (($size1856818607 == 0))
695- then $acc01856818607
696- else {
697- let $acc11856818607 = HeightEntry($acc01856818607, $list1856818607[0])
698- if (($size1856818607 == 1))
699- then $acc11856818607
700- else {
701- let $acc21856818607 = HeightEntry($acc11856818607, $list1856818607[1])
702- if (($size1856818607 == 2))
703- then $acc21856818607
704- else {
705- let $acc31856818607 = HeightEntry($acc21856818607, $list1856818607[2])
706- if (($size1856818607 == 3))
707- then $acc31856818607
708- else {
709- let $acc41856818607 = HeightEntry($acc31856818607, $list1856818607[3])
710- if (($size1856818607 == 4))
711- then $acc41856818607
712- else {
713- let $acc51856818607 = HeightEntry($acc41856818607, $list1856818607[4])
714- if (($size1856818607 == 5))
715- then $acc51856818607
716- else {
717- let $acc61856818607 = HeightEntry($acc51856818607, $list1856818607[5])
718- if (($size1856818607 == 6))
719- then $acc61856818607
720- else {
721- let $acc71856818607 = HeightEntry($acc61856818607, $list1856818607[6])
722- if (($size1856818607 == 7))
723- then $acc71856818607
724- else {
725- let $acc81856818607 = HeightEntry($acc71856818607, $list1856818607[7])
726- if (($size1856818607 == 8))
727- then $acc81856818607
728- else {
729- let $acc91856818607 = HeightEntry($acc81856818607, $list1856818607[8])
730- if (($size1856818607 == 9))
731- then $acc91856818607
732- else {
733- let $acc101856818607 = HeightEntry($acc91856818607, $list1856818607[9])
734- if (($size1856818607 == 10))
735- then $acc101856818607
736- else {
737- let $acc111856818607 = HeightEntry($acc101856818607, $list1856818607[10])
738- throw("List size exceed 10")
739- }
740- }
741- }
742- }
743- }
744- }
745- }
746- }
747- }
748- }
749- }
750- }
751- ((((((previousRewardEntryNew ++ currentRewardEntryNew) ++ heightEntryNew) ++ sumRewardPrevious) ++ sumRewardCurrent) ++ rewardUpdateHeightEntry) ++ rewardUpdateHeightFirstPaginationEntry)
752- }
753- }
754776 }
755777
756778
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 4 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let adminPubKey1 = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
55
66 let adminPubKey2 = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
77
88 let adminPubKey3 = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
99
1010 let adminPubKeyStartStop = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
1111
1212 let adminPubKeyWallet = base58'5CqqMkmtXXt35KRH9LdWA3ap6TffPvTT5SHQzYrVFbBw'
1313
1414 let keyActive = "active"
1515
1616 let keyCause = "shutdown_cause"
1717
1818 let keyLastInterest = "last_interest"
1919
2020 let keyUserLastInterest = "_last_interest"
2121
2222 let keyUserSWOPLocked = "_SWOP_amount"
2323
2424 let keyUserGetBackHeight = "_getBackHeight"
2525
2626 let keyTotalSWOPLocked = "total_SWOP_amount"
2727
2828 let kUserTotalVoteSWOP = "_user_total_SWOP_vote"
2929
3030 let keyUserVoteOptionAmount = "_SWOP_option_amount"
3131
3232 let keyTotalVoteOptionAmount = "total_SWOP_option_amount"
3333
3434 let keyUserSWOPClaimedAmount = "_SWOP_claimed_amount"
3535
3636 let keyUserSWOPLastClaimedAmount = "_SWOP_last_claimed_amount"
3737
3838 let keyVoteName = "vote_name"
3939
4040 let keyOptionName = "_option_name"
4141
4242 let keyVotingStartHeight = "_startHeight"
4343
4444 let keyVoteDuration = "_vote_duration"
4545
4646 let keyRewardPoolFractionCurrent = "_current_pool_fraction_reward"
4747
4848 let keyRewardPoolFractionPrevious = "_previous_pool_fraction_reward"
4949
5050 let keyHeightPoolFraction = "_pool_reward_update_height"
5151
5252 let keyTotalRewardPerBlockCurrent = "total_reward_per_block_current"
5353
5454 let keyTotalRewardPerBlockPrevious = "total_reward_per_block_previous"
5555
5656 let keyRewardUpdateHeight = "reward_update_height"
5757
5858 let keyRewardUpdateFirstPaginationHeight = "reward_update_height_first_pagination"
5959
6060 let keyNoVotingForNewPool = "_vote_no"
6161
6262 let keyYesVotingForNewPool = "_vote_yes"
6363
6464 let keyAmountOfVotingForNewPool = "max_amount_voting"
6565
6666 let keyStatusOfVotingForNewPool = "_status"
6767
6868 let keyHeightOfPoolVotingForNewPool = "_finish_height"
6969
7070 let activeVoteFirst = "voting_active_cell_1"
7171
7272 let activeVoteSecond = "voting_active_cell_2"
7373
7474 let activeVoteThird = "voting_active_cell_3"
7575
7676 let keyTempPrevSum = "sum_reward_previous"
7777
7878 let keyTempCurSum = "sum_reward_current"
7979
8080 let isActive = valueOrElse(getBoolean(this, keyActive), true)
8181
8282 let farmingSWOPAddress = Address(base58'3MsxHxruYWoddB4HRiPBYAWtMXMtCF1V9XT')
8383
8484 let votingLiteContract = Address(base58'3MrJgdL1GniipErHy44YF9idzLaUL2iX5DQ')
8585
8686 let votingForNewPool = Address(base58'3Mzgi6deFV8CyF2nqbWSBkqba5JaD42EXyb')
8787
8888 let keySWOPid = "SWOP_id"
8989
9090 let SWOP = fromBase58String(getStringValue(farmingSWOPAddress, keySWOPid))
9191
9292 let scaleValue = 100000000
9393
9494 let totalVoteShare = 10000000000
9595
9696 let kStartHeight = "start_height"
9797
9898 let kBasePeriod = "base_period"
9999
100100 let kPeriodLength = "period_length"
101101
102102 let kUserTotalStruc = "_user_total_struc"
103103
104104 let basePeriod = valueOrErrorMessage(getInteger(votingLiteContract, kBasePeriod), "Empty kBasePeriod at voting contract")
105105
106106 let startHeight = valueOrErrorMessage(getInteger(votingLiteContract, kStartHeight), "Empty kStartHeight at voting contract")
107107
108108 let periodLength = valueOrErrorMessage(getInteger(votingLiteContract, kPeriodLength), "Empty kPeriodLength at voting contract")
109109
110110 let firstActiveVote = valueOrElse(getString(votingForNewPool, activeVoteFirst), "")
111111
112112 let secondActiveVote = valueOrElse(getString(votingForNewPool, activeVoteSecond), "")
113113
114114 let thirdActiveVote = valueOrElse(getString(votingForNewPool, activeVoteThird), "")
115115
116116 let currVotingPeriod = (basePeriod + ((height - startHeight) / periodLength))
117117
118118 func suspend (cause) = [BooleanEntry(keyActive, false), StringEntry(keyCause, cause)]
119119
120120
121121 func throwNotEnoughSWOP () = throw("Not enough SWOP: userSWOPLocked - userTotalVoteAmount < voteSWOPAmount")
122122
123123
124124 func getLastInterestInfo () = {
125125 let lastInterest = valueOrElse(getInteger(this, keyLastInterest), 0)
126126 lastInterest
127127 }
128128
129129
130130 func getUserSWOPLocked (user) = valueOrElse(getInteger(this, (toString(user) + keyUserSWOPLocked)), 0)
131131
132132
133133 func getUserSWOPClaimedAmount (user) = valueOrElse(getInteger(this, (toString(user) + keyUserSWOPClaimedAmount)), 0)
134134
135135
136136 func getUserTotalVoteAmount (user) = valueOrElse(getInteger(votingLiteContract, (toString(user) + kUserTotalVoteSWOP)), 0)
137137
138138
139139 func getUserInterestInfo (user,lastInterest) = {
140140 let userSWOPAmount = getUserSWOPLocked(user)
141141 let userLastInterest = getInteger(this, (toString(user) + keyUserLastInterest))
142142 let userLastInterestValue = match userLastInterest {
143143 case userLastInterest: Int =>
144144 userLastInterest
145145 case _ =>
146146 lastInterest
147147 }
148148 $Tuple2(userLastInterestValue, userSWOPAmount)
149149 }
150150
151151
152152 func getUserTotalVoteAmountForOnePool (pool,user) = {
153153 let voting = valueOrElse(getInteger(votingForNewPool, pool), -1)
154154 let heightOfVoting = valueOrElse(getInteger(votingForNewPool, (toString(voting) + keyHeightOfPoolVotingForNewPool)), 0)
155155 let statusOfVoting = valueOrElse(getBoolean(votingForNewPool, (toString(voting) + keyStatusOfVotingForNewPool)), true)
156156 let currentHeight = height
157157 if ((0 > voting))
158158 then 0
159159 else if (!(statusOfVoting))
160160 then 0
161161 else if ((heightOfVoting > currentHeight))
162162 then (valueOrElse(getInteger(votingForNewPool, (((toString(user) + "_") + toString(voting)) + keyYesVotingForNewPool)), 0) + valueOrElse(getInteger(votingForNewPool, (((toString(user) + "_") + toString(voting)) + keyNoVotingForNewPool)), 0))
163163 else 0
164164 }
165165
166166
167167 func getUserTotalVoteForNewPoolAmount (user) = {
168168 let listOfVoting = [getUserTotalVoteAmountForOnePool(firstActiveVote, user), getUserTotalVoteAmountForOnePool(secondActiveVote, user), getUserTotalVoteAmountForOnePool(thirdActiveVote, user)]
169169 max(listOfVoting)
170170 }
171171
172172
173173 func getTotalSWOPLocked () = valueOrElse(getInteger(this, keyTotalSWOPLocked), 0)
174174
175175
176176 func getUserVoteInfo (user) = {
177- let $t060666617 = if (isDefined(getString(votingLiteContract, (toString(user) + kUserTotalStruc))))
177+ let $t060726623 = if (isDefined(getString(votingLiteContract, (toString(user) + kUserTotalStruc))))
178178 then {
179179 let data = split(valueOrErrorMessage(getString(votingLiteContract, (toString(user) + kUserTotalStruc)), "Empty kUserTotalStruc"), "_")
180180 $Tuple3(parseIntValue(data[0]), parseIntValue(data[1]), parseIntValue(data[2]))
181181 }
182182 else {
183183 let uPoolTotalSWOP = valueOrElse(getInteger(votingLiteContract, (toString(user) + kUserTotalVoteSWOP)), 0)
184184 $Tuple3(uPoolTotalSWOP, 0, currVotingPeriod)
185185 }
186- let userTotalVoteSWOP = $t060666617._1
187- let userUnvoted = $t060666617._2
188- let userUnvotedPeriod = $t060666617._3
186+ let userTotalVoteSWOP = $t060726623._1
187+ let userUnvoted = $t060726623._2
188+ let userUnvotedPeriod = $t060726623._3
189189 let userUnvotedActual = if ((userUnvotedPeriod == currVotingPeriod))
190190 then userUnvoted
191191 else 0
192192 $Tuple2(userTotalVoteSWOP, userUnvotedActual)
193193 }
194194
195195
196196 func getUserVoteOptionAmount (user) = valueOrElse(getInteger(this, (toString(user) + keyUserVoteOptionAmount)), 0)
197197
198198
199199 func getVotingStartHeight (voteName) = valueOrElse(getInteger(this, (voteName + keyVotingStartHeight)), 0)
200+
201+
202+func getPoolUpdateHeight (pool) = valueOrElse(getIntegerValue(this, (pool + keyHeightPoolFraction)), 0)
203+
204+
205+func getCurPoolWeight (pool) = valueOrElse(getIntegerValue(this, (pool + keyRewardPoolFractionCurrent)), 0)
200206
201207
202208 func getVoteOptionAmount (user,voteName,option) = {
203209 let userVoteOptionAmount = getInteger(this, (((voteName + option) + toString(user)) + keyUserVoteOptionAmount))
204210 let uvoa = match userVoteOptionAmount {
205211 case uvoa: Int =>
206212 uvoa
207213 case uvoa: Unit =>
208214 0
209215 case _ =>
210216 throw("Match error")
211217 }
212218 valueOrErrorMessage(uvoa, (((("No data on the key: " + voteName) + option) + toString(user)) + keyUserVoteOptionAmount))
213219 }
214220
215221
216222 func getVoteDuration (voteName) = valueOrErrorMessage(getInteger(this, (voteName + keyVoteDuration)), (("No data on the key: " + voteName) + keyVoteDuration))
217223
218224
219225 func getTotalVoteOptionAmount (voteName,option) = {
220226 let totalVoteOptionAmount = getInteger(this, ((voteName + option) + keyTotalVoteOptionAmount))
221227 let tvoa = match totalVoteOptionAmount {
222228 case tvoa: Int =>
223229 tvoa
224230 case tvoa: Unit =>
225231 0
226232 case _ =>
227233 throw("Match error")
228234 }
229235 tvoa
230236 }
231237
232238
233239 func getUserGetBackAmount (voteName,option,user,getBackSWOPHeight) = {
234240 let key = ((((((voteName + "_") + option) + "_") + toString(user)) + "_") + toString(getBackSWOPHeight))
235241 valueOrErrorMessage(getInteger(this, key), ("No data on the key: " + key))
236242 }
237243
238244
239245 func claimCalc (caller) = {
240246 let lastInterest = getLastInterestInfo()
241- let $t084098489 = getUserInterestInfo(caller, lastInterest)
242- let userLastInterest = $t084098489._1
243- let userSWOPLocked = $t084098489._2
247+ let $t087338813 = getUserInterestInfo(caller, lastInterest)
248+ let userLastInterest = $t087338813._1
249+ let userSWOPLocked = $t087338813._2
244250 let claimAmount = fraction(userSWOPLocked, (lastInterest - userLastInterest), scaleValue)
245251 let userNewInterest = lastInterest
246252 $Tuple2(userNewInterest, claimAmount)
247253 }
248254
249255
250256 @Callable(i)
251257 func airDrop () = if (!(isActive))
252258 then throw("DApp is inactive at this moment")
253259 else {
254- let $t087548829 = $Tuple2(i.payments[0].amount, i.payments[0].assetId)
255- let pmtAmount = $t087548829._1
256- let pmtAssetId = $t087548829._2
260+ let $t090789153 = $Tuple2(i.payments[0].amount, i.payments[0].assetId)
261+ let pmtAmount = $t090789153._1
262+ let pmtAssetId = $t090789153._2
257263 if ((pmtAssetId != SWOP))
258264 then throw("Incorrect pmtAssetId")
259265 else {
260266 let totalSWOPLocked = getTotalSWOPLocked()
261267 let lastInterest = getLastInterestInfo()
262268 let interestNew = (lastInterest + fraction(pmtAmount, scaleValue, totalSWOPLocked))
263269 [IntegerEntry(keyLastInterest, interestNew)]
264270 }
265271 }
266272
267273
268274
269275 @Callable(i)
270276 func lockSWOP () = if (!(isActive))
271277 then throw("DApp is inactive at this moment")
272278 else {
273- let $t092679342 = $Tuple2(i.payments[0].amount, i.payments[0].assetId)
274- let pmtAmount = $t092679342._1
275- let pmtAssetId = $t092679342._2
279+ let $t095919666 = $Tuple2(i.payments[0].amount, i.payments[0].assetId)
280+ let pmtAmount = $t095919666._1
281+ let pmtAssetId = $t095919666._2
276282 if ((pmtAssetId != SWOP))
277283 then throw("Incorrect pmtAssetId")
278284 else {
279285 let lastInterest = getLastInterestInfo()
280- let $t094589540 = getUserInterestInfo(i.caller, lastInterest)
281- let userLastInterest = $t094589540._1
282- let userSWOPLocked = $t094589540._2
286+ let $t097829864 = getUserInterestInfo(i.caller, lastInterest)
287+ let userLastInterest = $t097829864._1
288+ let userSWOPLocked = $t097829864._2
283289 let claimAmount = fraction(userSWOPLocked, (lastInterest - userLastInterest), scaleValue)
284290 let userSWOPLockedNew = ((userSWOPLocked + pmtAmount) + claimAmount)
285291 let userNewInterest = lastInterest
286292 let totalSWOPLocked = getTotalSWOPLocked()
287293 let totalSWOPLockedNew = ((totalSWOPLocked + pmtAmount) + claimAmount)
288294 let userClaimedAmount = getUserSWOPClaimedAmount(i.caller)
289295 let userClaimedAmountNew = (userClaimedAmount + claimAmount)
290296 [IntegerEntry((toString(i.caller) + keyUserLastInterest), userNewInterest), IntegerEntry((toString(i.caller) + keyUserSWOPLocked), userSWOPLockedNew), IntegerEntry(keyTotalSWOPLocked, totalSWOPLockedNew), IntegerEntry((toString(i.caller) + keyUserSWOPClaimedAmount), userClaimedAmountNew), IntegerEntry((toString(i.caller) + keyUserSWOPLastClaimedAmount), claimAmount)]
291297 }
292298 }
293299
294300
295301
296302 @Callable(i)
297303 func withdrawSWOP (withdrawAmount) = if (!(isActive))
298304 then throw("DApp is inactive at this moment")
299305 else if ((0 >= withdrawAmount))
300306 then throw("withdrawAmount <= 0")
301307 else {
302308 let totalSWOPLocked = getTotalSWOPLocked()
303309 let userSWOPLocked = getUserSWOPLocked(i.caller)
304- let $t01069010745 = claimCalc(i.caller)
305- let userNewInterest = $t01069010745._1
306- let claimAmount = $t01069010745._2
307- let $t01075010815 = getUserVoteInfo(i.caller)
308- let userVoteAmount = $t01075010815._1
309- let userUnvoteAmount = $t01075010815._2
310+ let $t01101411069 = claimCalc(i.caller)
311+ let userNewInterest = $t01101411069._1
312+ let claimAmount = $t01101411069._2
313+ let $t01107411139 = getUserVoteInfo(i.caller)
314+ let userVoteAmount = $t01107411139._1
315+ let userUnvoteAmount = $t01107411139._2
310316 let userVoteAmountForNewPool = getUserTotalVoteForNewPoolAmount(i.caller)
311317 if (if (if ((0 > userUnvoteAmount))
312318 then true
313319 else (0 > userVoteAmount))
314320 then true
315321 else (0 > userVoteAmountForNewPool))
316322 then throw("userUnvoteAmount < 0 || userVoteAmount < 0 || userVoteAmountForNewPool < 0")
317323 else {
318324 let availableToUnstake = (userSWOPLocked - max([userVoteAmountForNewPool, (userVoteAmount + userUnvoteAmount)]))
319325 if ((withdrawAmount > availableToUnstake))
320326 then throw("withdrawAmount > availableToUnstake")
321327 else {
322328 let totalSWOPLockedNew = ((totalSWOPLocked + claimAmount) - withdrawAmount)
323329 let userSWOPamountNew = ((userSWOPLocked + claimAmount) - withdrawAmount)
324330 let userClaimedAmount = getUserSWOPClaimedAmount(i.caller)
325331 let userClaimedAmountNew = (userClaimedAmount + claimAmount)
326332 [IntegerEntry((toString(i.caller) + keyUserLastInterest), userNewInterest), IntegerEntry((toString(i.caller) + keyUserSWOPLocked), userSWOPamountNew), IntegerEntry(keyTotalSWOPLocked, totalSWOPLockedNew), ScriptTransfer(i.caller, withdrawAmount, SWOP), IntegerEntry((toString(i.caller) + keyUserSWOPClaimedAmount), userClaimedAmountNew), IntegerEntry((toString(i.caller) + keyUserSWOPLastClaimedAmount), claimAmount)]
327333 }
328334 }
329335 }
330336
331337
332338
333339 @Callable(i)
334340 func claimAndWithdrawSWOP () = if (!(isActive))
335341 then throw("DApp is inactive at this moment")
336342 else {
337343 let lastInterest = getLastInterestInfo()
338- let $t01219012245 = claimCalc(i.caller)
339- let userNewInterest = $t01219012245._1
340- let claimAmount = $t01219012245._2
344+ let $t01251412569 = claimCalc(i.caller)
345+ let userNewInterest = $t01251412569._1
346+ let claimAmount = $t01251412569._2
341347 let userClaimedAmount = getUserSWOPClaimedAmount(i.caller)
342348 let userClaimedAmountNew = (userClaimedAmount + claimAmount)
343349 if ((claimAmount == 0))
344350 then throw("You have 0 available SWOP")
345351 else [IntegerEntry((toString(i.caller) + keyUserLastInterest), userNewInterest), IntegerEntry((toString(i.caller) + keyUserSWOPClaimedAmount), userClaimedAmountNew), IntegerEntry((toString(i.caller) + keyUserSWOPLastClaimedAmount), claimAmount), ScriptTransfer(i.caller, claimAmount, SWOP)]
346352 }
347353
348354
349355
350356 @Callable(i)
351357 func claimAndStakeSWOP () = if (!(isActive))
352358 then throw("DApp is inactive at this moment")
353359 else {
354360 let totalSWOPLocked = getTotalSWOPLocked()
355361 let userSWOPLocked = getUserSWOPLocked(i.caller)
356362 let lastInterest = getLastInterestInfo()
357- let $t01302413079 = claimCalc(i.caller)
358- let userNewInterest = $t01302413079._1
359- let claimAmount = $t01302413079._2
363+ let $t01334813403 = claimCalc(i.caller)
364+ let userNewInterest = $t01334813403._1
365+ let claimAmount = $t01334813403._2
360366 let userSWOPLockedNew = (userSWOPLocked + claimAmount)
361367 let totalSWOPLockedNew = (totalSWOPLocked + claimAmount)
362368 let userClaimedAmount = getUserSWOPClaimedAmount(i.caller)
363369 let userClaimedAmountNew = (userClaimedAmount + claimAmount)
364370 if ((claimAmount == 0))
365371 then throw("You have 0 available SWOP")
366372 else [IntegerEntry((toString(i.caller) + keyUserLastInterest), userNewInterest), IntegerEntry(keyTotalSWOPLocked, totalSWOPLockedNew), IntegerEntry((toString(i.caller) + keyUserSWOPLocked), userSWOPLockedNew), IntegerEntry((toString(i.caller) + keyUserSWOPClaimedAmount), userClaimedAmountNew), IntegerEntry((toString(i.caller) + keyUserSWOPLastClaimedAmount), claimAmount)]
367373 }
368374
369375
370376
371377 @Callable(i)
372378 func updateWeights (previousPools,previousRewards,currentPools,currentRewards,rewardUpdateHeight,pagination) = if (!(isActive))
373379 then throw("DApp is inactive at this moment")
374380 else {
375381 let amountPools = 10
382+ let totalRewardUpdateHeight = valueOrElse(getIntegerValue(this, keyRewardUpdateHeight), 0)
376383 if (!(containsElement([adminPubKey1, adminPubKey2, adminPubKey3, adminPubKeyStartStop, adminPubKeyWallet], i.callerPublicKey)))
377384 then throw("Only admin can call this function")
378385 else if (if ((size(previousPools) > amountPools))
379386 then true
380387 else (size(currentPools) > amountPools))
381388 then throw(("Max amount of pool is " + toString(amountPools)))
382- else {
383- func sum (a,b) = (a + b)
389+ else if ((totalRewardUpdateHeight >= rewardUpdateHeight))
390+ then throw("rewardUpdateHeight <= totalRewardUpdateHeight")
391+ else if ((height >= rewardUpdateHeight))
392+ then throw("rewardUpdateHeight <= totalRewardUpdateHeight")
393+ else if ((0 >= rewardUpdateHeight))
394+ then throw("0 >= rewardUpdateHeight ")
395+ else {
396+ func sum (a,b) = (a + b)
384397
385- func PreviousRewardEntry (accumulated,pool) = {
386- let poolIndex = value(indexOf(previousPools, pool))
387- let poolReward = previousRewards[poolIndex]
398+ func changePreviousRewardEntry (accumulated,pool) = {
399+ let poolCurRewar = getCurPoolWeight(pool)
400+ let rewardUpdatePoolHeight = getPoolUpdateHeight(pool)
401+ if ((rewardUpdateHeight != rewardUpdatePoolHeight))
402+ then if ((rewardUpdatePoolHeight == totalRewardUpdateHeight))
403+ then {
404+ let poolReward = getCurPoolWeight(pool)
388405 IntegerEntry((pool + keyRewardPoolFractionPrevious), poolReward) :: accumulated
389- }
406+ }
407+ else nil
408+ else nil
409+ }
390410
391- func CurrentRewardEntry (accumulated,pool) = {
392- let poolIndex = value(indexOf(currentPools, pool))
393- let poolReward = currentRewards[poolIndex]
394-IntegerEntry((pool + keyRewardPoolFractionCurrent), poolReward) :: accumulated
395- }
411+ func changeCurrentRewardEntry (accumulated,pool) = {
412+ let poolIndex = value(indexOf(currentPools, pool))
413+ let poolReward = currentRewards[poolIndex]
414+ if ((0 > poolReward))
415+ then throw("PoolReward < 0")
416+ else IntegerEntry((pool + keyRewardPoolFractionCurrent), poolReward) :: accumulated
417+ }
396418
397- func HeightEntry (accumulated,pool) = {
398- let poolHeight = rewardUpdateHeight
419+ func changeHeightEntry (accumulated,pool) = {
420+ let poolHeight = rewardUpdateHeight
399421 IntegerEntry((pool + keyHeightPoolFraction), poolHeight) :: accumulated
400- }
422+ }
401423
402- func getSumReward (prevTempSum,curTempSum,pagination) = if ((pagination == 0))
403- then if (if ((prevTempSum > totalVoteShare))
404- then true
405- else (curTempSum > totalVoteShare))
406- then throw(((((("sumRewardPrevious > totalVoteShare or sumRewardCurrent > totalVoteShare - " + toString(pagination)) + " ") + toString(prevTempSum)) + " ") + toString(curTempSum)))
407- else $Tuple3([IntegerEntry(keyTempPrevSum, prevTempSum)], [IntegerEntry(keyTempCurSum, curTempSum)], [IntegerEntry(keyRewardUpdateFirstPaginationHeight, rewardUpdateHeight)])
408- else if ((pagination == 1))
409- then {
410- let prevTempSumFromKey = valueOrElse(getInteger(this, keyTempPrevSum), 0)
411- let curTempSumFromKey = valueOrElse(getInteger(this, keyTempCurSum), 0)
412- let rewardUpdateHeightFirstPaginationEntry = valueOrElse(getInteger(this, keyRewardUpdateFirstPaginationHeight), 0)
413- if (if (((prevTempSum + prevTempSumFromKey) > totalVoteShare))
414- then true
415- else ((curTempSum + curTempSumFromKey) > totalVoteShare))
416- then throw(((((("sumRewardPrevious > totalVoteShare or sumRewardCurrent > totalVoteShare - " + toString(pagination)) + " ") + toString((prevTempSum + prevTempSumFromKey))) + " ") + toString((curTempSum + curTempSumFromKey))))
417- else if ((rewardUpdateHeightFirstPaginationEntry != rewardUpdateHeight))
418- then throw("current rewardUpdateHeight != rewardUpdateHeightFirstPaginationEntry")
419- else $Tuple3([IntegerEntry(keyTempPrevSum, (prevTempSum + prevTempSumFromKey))], [IntegerEntry(keyTempCurSum, (curTempSum + curTempSumFromKey))], nil)
420- }
421- else if ((pagination == 2))
422- then {
423- let prevSum = (valueOrElse(getInteger(this, keyTempPrevSum), 0) + prevTempSum)
424- let curSum = (valueOrElse(getInteger(this, keyTempCurSum), 0) + curTempSum)
425- let rewardUpdateHeightFirstPaginationEntry = valueOrElse(getInteger(this, keyRewardUpdateFirstPaginationHeight), 0)
426- if (if ((prevSum != totalVoteShare))
424+ func getSumReward (prevTempSum,curTempSum,pagination) = if ((pagination == 0))
425+ then if (if ((prevTempSum > totalVoteShare))
427426 then true
428- else (curSum != totalVoteShare))
429- then throw(((("sumRewardPrevious != totalVoteShare or sumRewardCurrent != totalVoteShare; sumRewardPrevious: " + toString(prevSum)) + "; sumRewardCurrent: ") + toString(curSum)))
430- else if ((rewardUpdateHeightFirstPaginationEntry != rewardUpdateHeight))
431- then throw("current rewardUpdateHeight != rewardUpdateHeightFirstPaginationEntry")
432- else $Tuple3([IntegerEntry(keyTempPrevSum, prevSum)], [IntegerEntry(keyTempCurSum, curSum)], nil)
427+ else (curTempSum > totalVoteShare))
428+ then throw(((((("sumRewardPrevious > totalVoteShare or sumRewardCurrent > totalVoteShare - " + toString(pagination)) + " ") + toString(prevTempSum)) + " ") + toString(curTempSum)))
429+ else $Tuple3([IntegerEntry(keyTempPrevSum, prevTempSum)], [IntegerEntry(keyTempCurSum, curTempSum)], [IntegerEntry(keyRewardUpdateFirstPaginationHeight, rewardUpdateHeight)])
430+ else if ((pagination == 1))
431+ then {
432+ let prevTempSumFromKey = valueOrElse(getInteger(this, keyTempPrevSum), 0)
433+ let curTempSumFromKey = valueOrElse(getInteger(this, keyTempCurSum), 0)
434+ let rewardUpdateHeightFirstPaginationEntry = valueOrElse(getInteger(this, keyRewardUpdateFirstPaginationHeight), 0)
435+ if (if (((prevTempSum + prevTempSumFromKey) > totalVoteShare))
436+ then true
437+ else ((curTempSum + curTempSumFromKey) > totalVoteShare))
438+ then throw(((((("sumRewardPrevious > totalVoteShare or sumRewardCurrent > totalVoteShare - " + toString(pagination)) + " ") + toString((prevTempSum + prevTempSumFromKey))) + " ") + toString((curTempSum + curTempSumFromKey))))
439+ else if ((rewardUpdateHeightFirstPaginationEntry != rewardUpdateHeight))
440+ then throw("current rewardUpdateHeight != rewardUpdateHeightFirstPaginationEntry")
441+ else $Tuple3([IntegerEntry(keyTempPrevSum, (prevTempSum + prevTempSumFromKey))], [IntegerEntry(keyTempCurSum, (curTempSum + curTempSumFromKey))], nil)
442+ }
443+ else if ((pagination == 2))
444+ then {
445+ let prevSum = (valueOrElse(getInteger(this, keyTempPrevSum), 0) + prevTempSum)
446+ let curSum = (valueOrElse(getInteger(this, keyTempCurSum), 0) + curTempSum)
447+ let rewardUpdateHeightFirstPaginationEntry = valueOrElse(getInteger(this, keyRewardUpdateFirstPaginationHeight), 0)
448+ if (if ((prevSum != totalVoteShare))
449+ then true
450+ else (curSum != totalVoteShare))
451+ then throw("sumRewardPrevious != totalVoteShare or sumRewardCurrent != totalVoteShare")
452+ else if ((rewardUpdateHeightFirstPaginationEntry != rewardUpdateHeight))
453+ then throw("current rewardUpdateHeight != rewardUpdateHeightFirstPaginationEntry")
454+ else $Tuple3([IntegerEntry(keyTempPrevSum, prevSum)], [IntegerEntry(keyTempCurSum, curSum)], nil)
455+ }
456+ else throw("Incorrect pagination")
457+
458+ let sumRewardPreviousTemp = {
459+ let $list1885918892 = previousRewards
460+ let $size1885918892 = size($list1885918892)
461+ let $acc01885918892 = 0
462+ if (($size1885918892 == 0))
463+ then $acc01885918892
464+ else {
465+ let $acc11885918892 = sum($acc01885918892, $list1885918892[0])
466+ if (($size1885918892 == 1))
467+ then $acc11885918892
468+ else {
469+ let $acc21885918892 = sum($acc11885918892, $list1885918892[1])
470+ if (($size1885918892 == 2))
471+ then $acc21885918892
472+ else {
473+ let $acc31885918892 = sum($acc21885918892, $list1885918892[2])
474+ if (($size1885918892 == 3))
475+ then $acc31885918892
476+ else {
477+ let $acc41885918892 = sum($acc31885918892, $list1885918892[3])
478+ if (($size1885918892 == 4))
479+ then $acc41885918892
480+ else {
481+ let $acc51885918892 = sum($acc41885918892, $list1885918892[4])
482+ if (($size1885918892 == 5))
483+ then $acc51885918892
484+ else {
485+ let $acc61885918892 = sum($acc51885918892, $list1885918892[5])
486+ if (($size1885918892 == 6))
487+ then $acc61885918892
488+ else {
489+ let $acc71885918892 = sum($acc61885918892, $list1885918892[6])
490+ if (($size1885918892 == 7))
491+ then $acc71885918892
492+ else {
493+ let $acc81885918892 = sum($acc71885918892, $list1885918892[7])
494+ if (($size1885918892 == 8))
495+ then $acc81885918892
496+ else {
497+ let $acc91885918892 = sum($acc81885918892, $list1885918892[8])
498+ if (($size1885918892 == 9))
499+ then $acc91885918892
500+ else {
501+ let $acc101885918892 = sum($acc91885918892, $list1885918892[9])
502+ if (($size1885918892 == 10))
503+ then $acc101885918892
504+ else {
505+ let $acc111885918892 = sum($acc101885918892, $list1885918892[10])
506+ throw("List size exceed 10")
507+ }
508+ }
509+ }
510+ }
511+ }
512+ }
513+ }
514+ }
515+ }
516+ }
517+ }
433518 }
434- else throw("Incorrect pagination")
435-
436- let sumRewardPreviousTemp = {
437- let $list1782917862 = previousRewards
438- let $size1782917862 = size($list1782917862)
439- let $acc01782917862 = 0
440- if (($size1782917862 == 0))
441- then $acc01782917862
442- else {
443- let $acc11782917862 = sum($acc01782917862, $list1782917862[0])
444- if (($size1782917862 == 1))
445- then $acc11782917862
519+ let sumRewardCurrentTemp = {
520+ let $list1892518957 = currentRewards
521+ let $size1892518957 = size($list1892518957)
522+ let $acc01892518957 = 0
523+ if (($size1892518957 == 0))
524+ then $acc01892518957
525+ else {
526+ let $acc11892518957 = sum($acc01892518957, $list1892518957[0])
527+ if (($size1892518957 == 1))
528+ then $acc11892518957
529+ else {
530+ let $acc21892518957 = sum($acc11892518957, $list1892518957[1])
531+ if (($size1892518957 == 2))
532+ then $acc21892518957
533+ else {
534+ let $acc31892518957 = sum($acc21892518957, $list1892518957[2])
535+ if (($size1892518957 == 3))
536+ then $acc31892518957
537+ else {
538+ let $acc41892518957 = sum($acc31892518957, $list1892518957[3])
539+ if (($size1892518957 == 4))
540+ then $acc41892518957
541+ else {
542+ let $acc51892518957 = sum($acc41892518957, $list1892518957[4])
543+ if (($size1892518957 == 5))
544+ then $acc51892518957
545+ else {
546+ let $acc61892518957 = sum($acc51892518957, $list1892518957[5])
547+ if (($size1892518957 == 6))
548+ then $acc61892518957
549+ else {
550+ let $acc71892518957 = sum($acc61892518957, $list1892518957[6])
551+ if (($size1892518957 == 7))
552+ then $acc71892518957
553+ else {
554+ let $acc81892518957 = sum($acc71892518957, $list1892518957[7])
555+ if (($size1892518957 == 8))
556+ then $acc81892518957
557+ else {
558+ let $acc91892518957 = sum($acc81892518957, $list1892518957[8])
559+ if (($size1892518957 == 9))
560+ then $acc91892518957
561+ else {
562+ let $acc101892518957 = sum($acc91892518957, $list1892518957[9])
563+ if (($size1892518957 == 10))
564+ then $acc101892518957
565+ else {
566+ let $acc111892518957 = sum($acc101892518957, $list1892518957[10])
567+ throw("List size exceed 10")
568+ }
569+ }
570+ }
571+ }
572+ }
573+ }
574+ }
575+ }
576+ }
577+ }
578+ }
579+ }
580+ let $t01896319116 = getSumReward(sumRewardPreviousTemp, sumRewardCurrentTemp, pagination)
581+ let sumRewardPrevious = $t01896319116._1
582+ let sumRewardCurrent = $t01896319116._2
583+ let rewardUpdateHeightFirstPaginationEntry = $t01896319116._3
584+ let rewardUpdateHeightEntry = if ((pagination == 2))
585+ then [IntegerEntry(keyRewardUpdateHeight, rewardUpdateHeight)]
586+ else [IntegerEntry(keyRewardUpdateHeight, getIntegerValue(this, keyRewardUpdateHeight))]
587+ if ((height > rewardUpdateHeight))
588+ then throw("rewardUpdateHeight < height")
446589 else {
447- let $acc21782917862 = sum($acc11782917862, $list1782917862[1])
448- if (($size1782917862 == 2))
449- then $acc21782917862
450- else {
451- let $acc31782917862 = sum($acc21782917862, $list1782917862[2])
452- if (($size1782917862 == 3))
453- then $acc31782917862
454- else {
455- let $acc41782917862 = sum($acc31782917862, $list1782917862[3])
456- if (($size1782917862 == 4))
457- then $acc41782917862
458- else {
459- let $acc51782917862 = sum($acc41782917862, $list1782917862[4])
460- if (($size1782917862 == 5))
461- then $acc51782917862
462- else {
463- let $acc61782917862 = sum($acc51782917862, $list1782917862[5])
464- if (($size1782917862 == 6))
465- then $acc61782917862
466- else {
467- let $acc71782917862 = sum($acc61782917862, $list1782917862[6])
468- if (($size1782917862 == 7))
469- then $acc71782917862
470- else {
471- let $acc81782917862 = sum($acc71782917862, $list1782917862[7])
472- if (($size1782917862 == 8))
473- then $acc81782917862
474- else {
475- let $acc91782917862 = sum($acc81782917862, $list1782917862[8])
476- if (($size1782917862 == 9))
477- then $acc91782917862
478- else {
479- let $acc101782917862 = sum($acc91782917862, $list1782917862[9])
480- if (($size1782917862 == 10))
481- then $acc101782917862
482- else {
483- let $acc111782917862 = sum($acc101782917862, $list1782917862[10])
484- throw("List size exceed 10")
485- }
486- }
487- }
488- }
489- }
490- }
491- }
492- }
493- }
590+ let previousRewardEntryNew = {
591+ let $list1944519499 = previousPools
592+ let $size1944519499 = size($list1944519499)
593+ let $acc01944519499 = nil
594+ if (($size1944519499 == 0))
595+ then $acc01944519499
596+ else {
597+ let $acc11944519499 = changePreviousRewardEntry($acc01944519499, $list1944519499[0])
598+ if (($size1944519499 == 1))
599+ then $acc11944519499
600+ else {
601+ let $acc21944519499 = changePreviousRewardEntry($acc11944519499, $list1944519499[1])
602+ if (($size1944519499 == 2))
603+ then $acc21944519499
604+ else {
605+ let $acc31944519499 = changePreviousRewardEntry($acc21944519499, $list1944519499[2])
606+ if (($size1944519499 == 3))
607+ then $acc31944519499
608+ else {
609+ let $acc41944519499 = changePreviousRewardEntry($acc31944519499, $list1944519499[3])
610+ if (($size1944519499 == 4))
611+ then $acc41944519499
612+ else {
613+ let $acc51944519499 = changePreviousRewardEntry($acc41944519499, $list1944519499[4])
614+ if (($size1944519499 == 5))
615+ then $acc51944519499
616+ else {
617+ let $acc61944519499 = changePreviousRewardEntry($acc51944519499, $list1944519499[5])
618+ if (($size1944519499 == 6))
619+ then $acc61944519499
620+ else {
621+ let $acc71944519499 = changePreviousRewardEntry($acc61944519499, $list1944519499[6])
622+ if (($size1944519499 == 7))
623+ then $acc71944519499
624+ else {
625+ let $acc81944519499 = changePreviousRewardEntry($acc71944519499, $list1944519499[7])
626+ if (($size1944519499 == 8))
627+ then $acc81944519499
628+ else {
629+ let $acc91944519499 = changePreviousRewardEntry($acc81944519499, $list1944519499[8])
630+ if (($size1944519499 == 9))
631+ then $acc91944519499
632+ else {
633+ let $acc101944519499 = changePreviousRewardEntry($acc91944519499, $list1944519499[9])
634+ if (($size1944519499 == 10))
635+ then $acc101944519499
636+ else {
637+ let $acc111944519499 = changePreviousRewardEntry($acc101944519499, $list1944519499[10])
638+ throw("List size exceed 10")
639+ }
640+ }
641+ }
642+ }
643+ }
644+ }
645+ }
646+ }
647+ }
648+ }
649+ }
650+ }
651+ let currentRewardEntryNew = {
652+ let $list1953219584 = currentPools
653+ let $size1953219584 = size($list1953219584)
654+ let $acc01953219584 = nil
655+ if (($size1953219584 == 0))
656+ then $acc01953219584
657+ else {
658+ let $acc11953219584 = changeCurrentRewardEntry($acc01953219584, $list1953219584[0])
659+ if (($size1953219584 == 1))
660+ then $acc11953219584
661+ else {
662+ let $acc21953219584 = changeCurrentRewardEntry($acc11953219584, $list1953219584[1])
663+ if (($size1953219584 == 2))
664+ then $acc21953219584
665+ else {
666+ let $acc31953219584 = changeCurrentRewardEntry($acc21953219584, $list1953219584[2])
667+ if (($size1953219584 == 3))
668+ then $acc31953219584
669+ else {
670+ let $acc41953219584 = changeCurrentRewardEntry($acc31953219584, $list1953219584[3])
671+ if (($size1953219584 == 4))
672+ then $acc41953219584
673+ else {
674+ let $acc51953219584 = changeCurrentRewardEntry($acc41953219584, $list1953219584[4])
675+ if (($size1953219584 == 5))
676+ then $acc51953219584
677+ else {
678+ let $acc61953219584 = changeCurrentRewardEntry($acc51953219584, $list1953219584[5])
679+ if (($size1953219584 == 6))
680+ then $acc61953219584
681+ else {
682+ let $acc71953219584 = changeCurrentRewardEntry($acc61953219584, $list1953219584[6])
683+ if (($size1953219584 == 7))
684+ then $acc71953219584
685+ else {
686+ let $acc81953219584 = changeCurrentRewardEntry($acc71953219584, $list1953219584[7])
687+ if (($size1953219584 == 8))
688+ then $acc81953219584
689+ else {
690+ let $acc91953219584 = changeCurrentRewardEntry($acc81953219584, $list1953219584[8])
691+ if (($size1953219584 == 9))
692+ then $acc91953219584
693+ else {
694+ let $acc101953219584 = changeCurrentRewardEntry($acc91953219584, $list1953219584[9])
695+ if (($size1953219584 == 10))
696+ then $acc101953219584
697+ else {
698+ let $acc111953219584 = changeCurrentRewardEntry($acc101953219584, $list1953219584[10])
699+ throw("List size exceed 10")
700+ }
701+ }
702+ }
703+ }
704+ }
705+ }
706+ }
707+ }
708+ }
709+ }
710+ }
711+ }
712+ let heightEntryNewCur = {
713+ let $list1961319658 = currentPools
714+ let $size1961319658 = size($list1961319658)
715+ let $acc01961319658 = nil
716+ if (($size1961319658 == 0))
717+ then $acc01961319658
718+ else {
719+ let $acc11961319658 = changeHeightEntry($acc01961319658, $list1961319658[0])
720+ if (($size1961319658 == 1))
721+ then $acc11961319658
722+ else {
723+ let $acc21961319658 = changeHeightEntry($acc11961319658, $list1961319658[1])
724+ if (($size1961319658 == 2))
725+ then $acc21961319658
726+ else {
727+ let $acc31961319658 = changeHeightEntry($acc21961319658, $list1961319658[2])
728+ if (($size1961319658 == 3))
729+ then $acc31961319658
730+ else {
731+ let $acc41961319658 = changeHeightEntry($acc31961319658, $list1961319658[3])
732+ if (($size1961319658 == 4))
733+ then $acc41961319658
734+ else {
735+ let $acc51961319658 = changeHeightEntry($acc41961319658, $list1961319658[4])
736+ if (($size1961319658 == 5))
737+ then $acc51961319658
738+ else {
739+ let $acc61961319658 = changeHeightEntry($acc51961319658, $list1961319658[5])
740+ if (($size1961319658 == 6))
741+ then $acc61961319658
742+ else {
743+ let $acc71961319658 = changeHeightEntry($acc61961319658, $list1961319658[6])
744+ if (($size1961319658 == 7))
745+ then $acc71961319658
746+ else {
747+ let $acc81961319658 = changeHeightEntry($acc71961319658, $list1961319658[7])
748+ if (($size1961319658 == 8))
749+ then $acc81961319658
750+ else {
751+ let $acc91961319658 = changeHeightEntry($acc81961319658, $list1961319658[8])
752+ if (($size1961319658 == 9))
753+ then $acc91961319658
754+ else {
755+ let $acc101961319658 = changeHeightEntry($acc91961319658, $list1961319658[9])
756+ if (($size1961319658 == 10))
757+ then $acc101961319658
758+ else {
759+ let $acc111961319658 = changeHeightEntry($acc101961319658, $list1961319658[10])
760+ throw("List size exceed 10")
761+ }
762+ }
763+ }
764+ }
765+ }
766+ }
767+ }
768+ }
769+ }
770+ }
771+ }
772+ }
773+ ((((((previousRewardEntryNew ++ currentRewardEntryNew) ++ heightEntryNewCur) ++ sumRewardPrevious) ++ sumRewardCurrent) ++ rewardUpdateHeightEntry) ++ rewardUpdateHeightFirstPaginationEntry)
494774 }
495775 }
496- }
497- let sumRewardCurrentTemp = {
498- let $list1789517927 = currentRewards
499- let $size1789517927 = size($list1789517927)
500- let $acc01789517927 = 0
501- if (($size1789517927 == 0))
502- then $acc01789517927
503- else {
504- let $acc11789517927 = sum($acc01789517927, $list1789517927[0])
505- if (($size1789517927 == 1))
506- then $acc11789517927
507- else {
508- let $acc21789517927 = sum($acc11789517927, $list1789517927[1])
509- if (($size1789517927 == 2))
510- then $acc21789517927
511- else {
512- let $acc31789517927 = sum($acc21789517927, $list1789517927[2])
513- if (($size1789517927 == 3))
514- then $acc31789517927
515- else {
516- let $acc41789517927 = sum($acc31789517927, $list1789517927[3])
517- if (($size1789517927 == 4))
518- then $acc41789517927
519- else {
520- let $acc51789517927 = sum($acc41789517927, $list1789517927[4])
521- if (($size1789517927 == 5))
522- then $acc51789517927
523- else {
524- let $acc61789517927 = sum($acc51789517927, $list1789517927[5])
525- if (($size1789517927 == 6))
526- then $acc61789517927
527- else {
528- let $acc71789517927 = sum($acc61789517927, $list1789517927[6])
529- if (($size1789517927 == 7))
530- then $acc71789517927
531- else {
532- let $acc81789517927 = sum($acc71789517927, $list1789517927[7])
533- if (($size1789517927 == 8))
534- then $acc81789517927
535- else {
536- let $acc91789517927 = sum($acc81789517927, $list1789517927[8])
537- if (($size1789517927 == 9))
538- then $acc91789517927
539- else {
540- let $acc101789517927 = sum($acc91789517927, $list1789517927[9])
541- if (($size1789517927 == 10))
542- then $acc101789517927
543- else {
544- let $acc111789517927 = sum($acc101789517927, $list1789517927[10])
545- throw("List size exceed 10")
546- }
547- }
548- }
549- }
550- }
551- }
552- }
553- }
554- }
555- }
556- }
557- }
558- let $t01793318086 = getSumReward(sumRewardPreviousTemp, sumRewardCurrentTemp, pagination)
559- let sumRewardPrevious = $t01793318086._1
560- let sumRewardCurrent = $t01793318086._2
561- let rewardUpdateHeightFirstPaginationEntry = $t01793318086._3
562- let rewardUpdateHeightEntry = if ((pagination == 2))
563- then [IntegerEntry(keyRewardUpdateHeight, rewardUpdateHeight)]
564- else [IntegerEntry(keyRewardUpdateHeight, getIntegerValue(this, keyRewardUpdateHeight))]
565- if ((height > rewardUpdateHeight))
566- then throw("rewardUpdateHeight < height")
567- else {
568- let previousRewardEntryNew = {
569- let $list1841518463 = previousPools
570- let $size1841518463 = size($list1841518463)
571- let $acc01841518463 = nil
572- if (($size1841518463 == 0))
573- then $acc01841518463
574- else {
575- let $acc11841518463 = PreviousRewardEntry($acc01841518463, $list1841518463[0])
576- if (($size1841518463 == 1))
577- then $acc11841518463
578- else {
579- let $acc21841518463 = PreviousRewardEntry($acc11841518463, $list1841518463[1])
580- if (($size1841518463 == 2))
581- then $acc21841518463
582- else {
583- let $acc31841518463 = PreviousRewardEntry($acc21841518463, $list1841518463[2])
584- if (($size1841518463 == 3))
585- then $acc31841518463
586- else {
587- let $acc41841518463 = PreviousRewardEntry($acc31841518463, $list1841518463[3])
588- if (($size1841518463 == 4))
589- then $acc41841518463
590- else {
591- let $acc51841518463 = PreviousRewardEntry($acc41841518463, $list1841518463[4])
592- if (($size1841518463 == 5))
593- then $acc51841518463
594- else {
595- let $acc61841518463 = PreviousRewardEntry($acc51841518463, $list1841518463[5])
596- if (($size1841518463 == 6))
597- then $acc61841518463
598- else {
599- let $acc71841518463 = PreviousRewardEntry($acc61841518463, $list1841518463[6])
600- if (($size1841518463 == 7))
601- then $acc71841518463
602- else {
603- let $acc81841518463 = PreviousRewardEntry($acc71841518463, $list1841518463[7])
604- if (($size1841518463 == 8))
605- then $acc81841518463
606- else {
607- let $acc91841518463 = PreviousRewardEntry($acc81841518463, $list1841518463[8])
608- if (($size1841518463 == 9))
609- then $acc91841518463
610- else {
611- let $acc101841518463 = PreviousRewardEntry($acc91841518463, $list1841518463[9])
612- if (($size1841518463 == 10))
613- then $acc101841518463
614- else {
615- let $acc111841518463 = PreviousRewardEntry($acc101841518463, $list1841518463[10])
616- throw("List size exceed 10")
617- }
618- }
619- }
620- }
621- }
622- }
623- }
624- }
625- }
626- }
627- }
628- }
629- let currentRewardEntryNew = {
630- let $list1849618542 = currentPools
631- let $size1849618542 = size($list1849618542)
632- let $acc01849618542 = nil
633- if (($size1849618542 == 0))
634- then $acc01849618542
635- else {
636- let $acc11849618542 = CurrentRewardEntry($acc01849618542, $list1849618542[0])
637- if (($size1849618542 == 1))
638- then $acc11849618542
639- else {
640- let $acc21849618542 = CurrentRewardEntry($acc11849618542, $list1849618542[1])
641- if (($size1849618542 == 2))
642- then $acc21849618542
643- else {
644- let $acc31849618542 = CurrentRewardEntry($acc21849618542, $list1849618542[2])
645- if (($size1849618542 == 3))
646- then $acc31849618542
647- else {
648- let $acc41849618542 = CurrentRewardEntry($acc31849618542, $list1849618542[3])
649- if (($size1849618542 == 4))
650- then $acc41849618542
651- else {
652- let $acc51849618542 = CurrentRewardEntry($acc41849618542, $list1849618542[4])
653- if (($size1849618542 == 5))
654- then $acc51849618542
655- else {
656- let $acc61849618542 = CurrentRewardEntry($acc51849618542, $list1849618542[5])
657- if (($size1849618542 == 6))
658- then $acc61849618542
659- else {
660- let $acc71849618542 = CurrentRewardEntry($acc61849618542, $list1849618542[6])
661- if (($size1849618542 == 7))
662- then $acc71849618542
663- else {
664- let $acc81849618542 = CurrentRewardEntry($acc71849618542, $list1849618542[7])
665- if (($size1849618542 == 8))
666- then $acc81849618542
667- else {
668- let $acc91849618542 = CurrentRewardEntry($acc81849618542, $list1849618542[8])
669- if (($size1849618542 == 9))
670- then $acc91849618542
671- else {
672- let $acc101849618542 = CurrentRewardEntry($acc91849618542, $list1849618542[9])
673- if (($size1849618542 == 10))
674- then $acc101849618542
675- else {
676- let $acc111849618542 = CurrentRewardEntry($acc101849618542, $list1849618542[10])
677- throw("List size exceed 10")
678- }
679- }
680- }
681- }
682- }
683- }
684- }
685- }
686- }
687- }
688- }
689- }
690- let heightEntryNew = {
691- let $list1856818607 = currentPools
692- let $size1856818607 = size($list1856818607)
693- let $acc01856818607 = nil
694- if (($size1856818607 == 0))
695- then $acc01856818607
696- else {
697- let $acc11856818607 = HeightEntry($acc01856818607, $list1856818607[0])
698- if (($size1856818607 == 1))
699- then $acc11856818607
700- else {
701- let $acc21856818607 = HeightEntry($acc11856818607, $list1856818607[1])
702- if (($size1856818607 == 2))
703- then $acc21856818607
704- else {
705- let $acc31856818607 = HeightEntry($acc21856818607, $list1856818607[2])
706- if (($size1856818607 == 3))
707- then $acc31856818607
708- else {
709- let $acc41856818607 = HeightEntry($acc31856818607, $list1856818607[3])
710- if (($size1856818607 == 4))
711- then $acc41856818607
712- else {
713- let $acc51856818607 = HeightEntry($acc41856818607, $list1856818607[4])
714- if (($size1856818607 == 5))
715- then $acc51856818607
716- else {
717- let $acc61856818607 = HeightEntry($acc51856818607, $list1856818607[5])
718- if (($size1856818607 == 6))
719- then $acc61856818607
720- else {
721- let $acc71856818607 = HeightEntry($acc61856818607, $list1856818607[6])
722- if (($size1856818607 == 7))
723- then $acc71856818607
724- else {
725- let $acc81856818607 = HeightEntry($acc71856818607, $list1856818607[7])
726- if (($size1856818607 == 8))
727- then $acc81856818607
728- else {
729- let $acc91856818607 = HeightEntry($acc81856818607, $list1856818607[8])
730- if (($size1856818607 == 9))
731- then $acc91856818607
732- else {
733- let $acc101856818607 = HeightEntry($acc91856818607, $list1856818607[9])
734- if (($size1856818607 == 10))
735- then $acc101856818607
736- else {
737- let $acc111856818607 = HeightEntry($acc101856818607, $list1856818607[10])
738- throw("List size exceed 10")
739- }
740- }
741- }
742- }
743- }
744- }
745- }
746- }
747- }
748- }
749- }
750- }
751- ((((((previousRewardEntryNew ++ currentRewardEntryNew) ++ heightEntryNew) ++ sumRewardPrevious) ++ sumRewardCurrent) ++ rewardUpdateHeightEntry) ++ rewardUpdateHeightFirstPaginationEntry)
752- }
753- }
754776 }
755777
756778
757779
758780 @Callable(i)
759781 func shutdown () = if (!(isActive))
760782 then throw(("DApp is already suspended. Cause: " + valueOrElse(getString(this, keyCause), "the cause wasn't specified")))
761783 else if (!(containsElement([adminPubKey1, adminPubKey2, adminPubKey3, adminPubKeyStartStop], i.callerPublicKey)))
762784 then throw("Only admin can call this function")
763785 else suspend("Paused by admin")
764786
765787
766788
767789 @Callable(i)
768790 func activate () = if (isActive)
769791 then throw("DApp is already active")
770792 else if (!(containsElement([adminPubKey1, adminPubKey2, adminPubKey3, adminPubKeyStartStop], i.callerPublicKey)))
771793 then throw("Only admin can call this function")
772794 else [BooleanEntry(keyActive, true), DeleteEntry(keyCause)]
773795
774796
775797 @Verifier(tx)
776798 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
777799

github/deemru/w8io/169f3d6 
118.51 ms