tx · DEo4pThXpVZW2gdC41amVkbJrSVWp8xKZsBoNAHPNJHM

3N5W8da2iiijVieA6qLGo7KzCJj8B19smWU:  -0.01400000 Waves

2021.06.13 10:26 [1568265] smart account 3N5W8da2iiijVieA6qLGo7KzCJj8B19smWU > SELF 0.00000000 Waves

{ "type": 13, "id": "DEo4pThXpVZW2gdC41amVkbJrSVWp8xKZsBoNAHPNJHM", "fee": 1400000, "feeAssetId": null, "timestamp": 1623569211974, "version": 2, "chainId": 84, "sender": "3N5W8da2iiijVieA6qLGo7KzCJj8B19smWU", "senderPublicKey": "AWADFmQjf2WbDSqb24S9YZpix3VEdiBdeiJ2J2sSfQ49", "proofs": [ "guC7ZRFXhuVKhFUxSEyvXJDJJE3294nMRJhsEhmhq6N87ohZiVPe3DY63ZCP8FTHa6jo4SdaamXXfvixQWtq7U1" ], "script": "base64:AAIEAAAAAAAAAB0IAhIAEgASAwoBARIAEgASCAoGGBEYEQEBEgASAAAAAE4AAAAADGFkbWluUHViS2V5MQEAAAAgugnXO4lZpNFdoP/xuzPQquE5aQ/L4r2R1jvuT16o4BMAAAAADGFkbWluUHViS2V5MgEAAAAgwpFEmbPSsLQNIqWRWL2IvKE3uwjL/92M5pTvWxYOfkAAAAAADGFkbWluUHViS2V5MwEAAAAgjh4XLnixBzv0SE56Myhgdih3/JnlkjCjIMLPqKvpDlUAAAAAFGFkbWluUHViS2V5U3RhcnRTdG9wAQAAACDOWQ7c6rNeo64b/Vde5+t5ETUpdEYymzwVXzwFGyhhewAAAAARYWRtaW5QdWJLZXlXYWxsZXQBAAAAIOWrnLMJte4zFN7NTCEmuQUEYSMarDhlqoxRtcWhn88cAAAAAAlrZXlBY3RpdmUCAAAABmFjdGl2ZQAAAAAIa2V5Q2F1c2UCAAAADnNodXRkb3duX2NhdXNlAAAAAA9rZXlMYXN0SW50ZXJlc3QCAAAADWxhc3RfaW50ZXJlc3QAAAAAE2tleVVzZXJMYXN0SW50ZXJlc3QCAAAADl9sYXN0X2ludGVyZXN0AAAAABFrZXlVc2VyU1dPUExvY2tlZAIAAAAMX1NXT1BfYW1vdW50AAAAABRrZXlVc2VyR2V0QmFja0hlaWdodAIAAAAOX2dldEJhY2tIZWlnaHQAAAAAEmtleVRvdGFsU1dPUExvY2tlZAIAAAARdG90YWxfU1dPUF9hbW91bnQAAAAAEmtVc2VyVG90YWxWb3RlU1dPUAIAAAAVX3VzZXJfdG90YWxfU1dPUF92b3RlAAAAABdrZXlVc2VyVm90ZU9wdGlvbkFtb3VudAIAAAATX1NXT1Bfb3B0aW9uX2Ftb3VudAAAAAAYa2V5VG90YWxWb3RlT3B0aW9uQW1vdW50AgAAABh0b3RhbF9TV09QX29wdGlvbl9hbW91bnQAAAAAGGtleVVzZXJTV09QQ2xhaW1lZEFtb3VudAIAAAAUX1NXT1BfY2xhaW1lZF9hbW91bnQAAAAAHGtleVVzZXJTV09QTGFzdENsYWltZWRBbW91bnQCAAAAGV9TV09QX2xhc3RfY2xhaW1lZF9hbW91bnQAAAAAC2tleVZvdGVOYW1lAgAAAAl2b3RlX25hbWUAAAAADWtleU9wdGlvbk5hbWUCAAAADF9vcHRpb25fbmFtZQAAAAAUa2V5Vm90aW5nU3RhcnRIZWlnaHQCAAAADF9zdGFydEhlaWdodAAAAAAPa2V5Vm90ZUR1cmF0aW9uAgAAAA5fdm90ZV9kdXJhdGlvbgAAAAAca2V5UmV3YXJkUG9vbEZyYWN0aW9uQ3VycmVudAIAAAAdX2N1cnJlbnRfcG9vbF9mcmFjdGlvbl9yZXdhcmQAAAAAHWtleVJld2FyZFBvb2xGcmFjdGlvblByZXZpb3VzAgAAAB5fcHJldmlvdXNfcG9vbF9mcmFjdGlvbl9yZXdhcmQAAAAAFWtleUhlaWdodFBvb2xGcmFjdGlvbgIAAAAaX3Bvb2xfcmV3YXJkX3VwZGF0ZV9oZWlnaHQAAAAAHWtleVRvdGFsUmV3YXJkUGVyQmxvY2tDdXJyZW50AgAAAB50b3RhbF9yZXdhcmRfcGVyX2Jsb2NrX2N1cnJlbnQAAAAAHmtleVRvdGFsUmV3YXJkUGVyQmxvY2tQcmV2aW91cwIAAAAfdG90YWxfcmV3YXJkX3Blcl9ibG9ja19wcmV2aW91cwAAAAAVa2V5UmV3YXJkVXBkYXRlSGVpZ2h0AgAAABRyZXdhcmRfdXBkYXRlX2hlaWdodAAAAAAka2V5UmV3YXJkVXBkYXRlRmlyc3RQYWdpbmF0aW9uSGVpZ2h0AgAAACVyZXdhcmRfdXBkYXRlX2hlaWdodF9maXJzdF9wYWdpbmF0aW9uAAAAABVrZXlOb1ZvdGluZ0Zvck5ld1Bvb2wCAAAACF92b3RlX25vAAAAABZrZXlZZXNWb3RpbmdGb3JOZXdQb29sAgAAAAlfdm90ZV95ZXMAAAAAG2tleUFtb3VudE9mVm90aW5nRm9yTmV3UG9vbAIAAAARbWF4X2Ftb3VudF92b3RpbmcAAAAAG2tleVN0YXR1c09mVm90aW5nRm9yTmV3UG9vbAIAAAAHX3N0YXR1cwAAAAAfa2V5SGVpZ2h0T2ZQb29sVm90aW5nRm9yTmV3UG9vbAIAAAAOX2ZpbmlzaF9oZWlnaHQAAAAAD2FjdGl2ZVZvdGVGaXJzdAIAAAAUdm90aW5nX2FjdGl2ZV9jZWxsXzEAAAAAEGFjdGl2ZVZvdGVTZWNvbmQCAAAAFHZvdGluZ19hY3RpdmVfY2VsbF8yAAAAAA9hY3RpdmVWb3RlVGhpcmQCAAAAFHZvdGluZ19hY3RpdmVfY2VsbF8zAAAAAA5rZXlUZW1wUHJldlN1bQIAAAATc3VtX3Jld2FyZF9wcmV2aW91cwAAAAANa2V5VGVtcEN1clN1bQIAAAASc3VtX3Jld2FyZF9jdXJyZW50AAAAAAhpc0FjdGl2ZQkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBsAAAACBQAAAAR0aGlzBQAAAAlrZXlBY3RpdmUGAAAAABJmYXJtaW5nU1dPUEFkZHJlc3MJAQAAAAdBZGRyZXNzAAAAAQEAAAAaAVc4DeZLRuf+UBcj/qBUTcgH5R4tWRCTmkoAAAAAEnZvdGluZ0xpdGVDb250cmFjdAkBAAAAB0FkZHJlc3MAAAABAQAAABoBV/g/+6xPyWLNjZSZW67sqUsI3PCMpKwiuwAAAAAQdm90aW5nRm9yTmV3UG9vbAkBAAAAB0FkZHJlc3MAAAABAQAAABoBV6y+6ZiMjPxkx6QfYg3Npzh7t63US4EQYQAAAAAJa2V5U1dPUGlkAgAAAAdTV09QX2lkAAAAAARTV09QCQACWQAAAAEJAQAAABFAZXh0ck5hdGl2ZSgxMDUzKQAAAAIFAAAAEmZhcm1pbmdTV09QQWRkcmVzcwUAAAAJa2V5U1dPUGlkAAAAAApzY2FsZVZhbHVlAAAAAAAF9eEAAAAAAA50b3RhbFZvdGVTaGFyZQAAAAACVAvkAAAAAAAMa1N0YXJ0SGVpZ2h0AgAAAAxzdGFydF9oZWlnaHQAAAAAC2tCYXNlUGVyaW9kAgAAAAtiYXNlX3BlcmlvZAAAAAANa1BlcmlvZExlbmd0aAIAAAANcGVyaW9kX2xlbmd0aAAAAAAPa1VzZXJUb3RhbFN0cnVjAgAAABFfdXNlcl90b3RhbF9zdHJ1YwAAAAAKYmFzZVBlcmlvZAkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEGgAAAAIFAAAAEnZvdGluZ0xpdGVDb250cmFjdAUAAAALa0Jhc2VQZXJpb2QCAAAAJEVtcHR5IGtCYXNlUGVyaW9kIGF0IHZvdGluZyBjb250cmFjdAAAAAALc3RhcnRIZWlnaHQJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABBoAAAACBQAAABJ2b3RpbmdMaXRlQ29udHJhY3QFAAAADGtTdGFydEhlaWdodAIAAAAlRW1wdHkga1N0YXJ0SGVpZ2h0IGF0IHZvdGluZyBjb250cmFjdAAAAAAMcGVyaW9kTGVuZ3RoCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQaAAAAAgUAAAASdm90aW5nTGl0ZUNvbnRyYWN0BQAAAA1rUGVyaW9kTGVuZ3RoAgAAACZFbXB0eSBrUGVyaW9kTGVuZ3RoIGF0IHZvdGluZyBjb250cmFjdAAAAAAPZmlyc3RBY3RpdmVWb3RlCQEAAAALdmFsdWVPckVsc2UAAAACCQAEHQAAAAIFAAAAEHZvdGluZ0Zvck5ld1Bvb2wFAAAAD2FjdGl2ZVZvdGVGaXJzdAIAAAAAAAAAABBzZWNvbmRBY3RpdmVWb3RlCQEAAAALdmFsdWVPckVsc2UAAAACCQAEHQAAAAIFAAAAEHZvdGluZ0Zvck5ld1Bvb2wFAAAAEGFjdGl2ZVZvdGVTZWNvbmQCAAAAAAAAAAAPdGhpcmRBY3RpdmVWb3RlCQEAAAALdmFsdWVPckVsc2UAAAACCQAEHQAAAAIFAAAAEHZvdGluZ0Zvck5ld1Bvb2wFAAAAD2FjdGl2ZVZvdGVUaGlyZAIAAAAAAAAAABBjdXJyVm90aW5nUGVyaW9kCQAAZAAAAAIFAAAACmJhc2VQZXJpb2QJAABpAAAAAgkAAGUAAAACBQAAAAZoZWlnaHQFAAAAC3N0YXJ0SGVpZ2h0BQAAAAxwZXJpb2RMZW5ndGgBAAAAB3N1c3BlbmQAAAABAAAABWNhdXNlCQAETAAAAAIJAQAAAAxCb29sZWFuRW50cnkAAAACBQAAAAlrZXlBY3RpdmUHCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAACGtleUNhdXNlBQAAAAVjYXVzZQUAAAADbmlsAQAAABJ0aHJvd05vdEVub3VnaFNXT1AAAAAACQAAAgAAAAECAAAARk5vdCBlbm91Z2ggU1dPUDogdXNlclNXT1BMb2NrZWQgLSB1c2VyVG90YWxWb3RlQW1vdW50IDwgdm90ZVNXT1BBbW91bnQBAAAAE2dldExhc3RJbnRlcmVzdEluZm8AAAAABAAAAAxsYXN0SW50ZXJlc3QJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwUAAAAPa2V5TGFzdEludGVyZXN0AAAAAAAAAAAABQAAAAxsYXN0SW50ZXJlc3QBAAAAEWdldFVzZXJTV09QTG9ja2VkAAAAAQAAAAR1c2VyCQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAABHRoaXMJAAEsAAAAAgkABCUAAAABBQAAAAR1c2VyBQAAABFrZXlVc2VyU1dPUExvY2tlZAAAAAAAAAAAAAEAAAAYZ2V0VXNlclNXT1BDbGFpbWVkQW1vdW50AAAAAQAAAAR1c2VyCQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAABHRoaXMJAAEsAAAAAgkABCUAAAABBQAAAAR1c2VyBQAAABhrZXlVc2VyU1dPUENsYWltZWRBbW91bnQAAAAAAAAAAAABAAAAFmdldFVzZXJUb3RhbFZvdGVBbW91bnQAAAABAAAABHVzZXIJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAASdm90aW5nTGl0ZUNvbnRyYWN0CQABLAAAAAIJAAQlAAAAAQUAAAAEdXNlcgUAAAASa1VzZXJUb3RhbFZvdGVTV09QAAAAAAAAAAAAAQAAABNnZXRVc2VySW50ZXJlc3RJbmZvAAAAAgAAAAR1c2VyAAAADGxhc3RJbnRlcmVzdAQAAAAOdXNlclNXT1BBbW91bnQJAQAAABFnZXRVc2VyU1dPUExvY2tlZAAAAAEFAAAABHVzZXIEAAAAEHVzZXJMYXN0SW50ZXJlc3QJAAQaAAAAAgUAAAAEdGhpcwkAASwAAAACCQAEJQAAAAEFAAAABHVzZXIFAAAAE2tleVVzZXJMYXN0SW50ZXJlc3QEAAAAFXVzZXJMYXN0SW50ZXJlc3RWYWx1ZQQAAAAHJG1hdGNoMAUAAAAQdXNlckxhc3RJbnRlcmVzdAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAABB1c2VyTGFzdEludGVyZXN0BQAAAAckbWF0Y2gwBQAAABB1c2VyTGFzdEludGVyZXN0BQAAAAxsYXN0SW50ZXJlc3QJAAUUAAAAAgUAAAAVdXNlckxhc3RJbnRlcmVzdFZhbHVlBQAAAA51c2VyU1dPUEFtb3VudAEAAAAgZ2V0VXNlclRvdGFsVm90ZUFtb3VudEZvck9uZVBvb2wAAAACAAAABHBvb2wAAAAEdXNlcgQAAAAGdm90aW5nCQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAAEHZvdGluZ0Zvck5ld1Bvb2wFAAAABHBvb2wA//////////8EAAAADmhlaWdodE9mVm90aW5nCQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAAEHZvdGluZ0Zvck5ld1Bvb2wJAAEsAAAAAgkAAaQAAAABBQAAAAZ2b3RpbmcFAAAAH2tleUhlaWdodE9mUG9vbFZvdGluZ0Zvck5ld1Bvb2wAAAAAAAAAAAAEAAAADnN0YXR1c09mVm90aW5nCQEAAAALdmFsdWVPckVsc2UAAAACCQAEGwAAAAIFAAAAEHZvdGluZ0Zvck5ld1Bvb2wJAAEsAAAAAgkAAaQAAAABBQAAAAZ2b3RpbmcFAAAAG2tleVN0YXR1c09mVm90aW5nRm9yTmV3UG9vbAYEAAAADWN1cnJlbnRIZWlnaHQFAAAABmhlaWdodAMJAABmAAAAAgAAAAAAAAAAAAUAAAAGdm90aW5nAAAAAAAAAAAAAwkBAAAAASEAAAABBQAAAA5zdGF0dXNPZlZvdGluZwAAAAAAAAAAAAMJAABmAAAAAgUAAAAOaGVpZ2h0T2ZWb3RpbmcFAAAADWN1cnJlbnRIZWlnaHQJAABkAAAAAgkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAABB2b3RpbmdGb3JOZXdQb29sCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQAEJQAAAAEFAAAABHVzZXICAAAAAV8JAAGkAAAAAQUAAAAGdm90aW5nBQAAABZrZXlZZXNWb3RpbmdGb3JOZXdQb29sAAAAAAAAAAAACQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAAEHZvdGluZ0Zvck5ld1Bvb2wJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAQlAAAAAQUAAAAEdXNlcgIAAAABXwkAAaQAAAABBQAAAAZ2b3RpbmcFAAAAFWtleU5vVm90aW5nRm9yTmV3UG9vbAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAgZ2V0VXNlclRvdGFsVm90ZUZvck5ld1Bvb2xBbW91bnQAAAABAAAABHVzZXIEAAAADGxpc3RPZlZvdGluZwkABEwAAAACCQEAAAAgZ2V0VXNlclRvdGFsVm90ZUFtb3VudEZvck9uZVBvb2wAAAACBQAAAA9maXJzdEFjdGl2ZVZvdGUFAAAABHVzZXIJAARMAAAAAgkBAAAAIGdldFVzZXJUb3RhbFZvdGVBbW91bnRGb3JPbmVQb29sAAAAAgUAAAAQc2Vjb25kQWN0aXZlVm90ZQUAAAAEdXNlcgkABEwAAAACCQEAAAAgZ2V0VXNlclRvdGFsVm90ZUFtb3VudEZvck9uZVBvb2wAAAACBQAAAA90aGlyZEFjdGl2ZVZvdGUFAAAABHVzZXIFAAAAA25pbAkAAZYAAAABBQAAAAxsaXN0T2ZWb3RpbmcBAAAAEmdldFRvdGFsU1dPUExvY2tlZAAAAAAJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwUAAAASa2V5VG90YWxTV09QTG9ja2VkAAAAAAAAAAAAAQAAAA9nZXRVc2VyVm90ZUluZm8AAAABAAAABHVzZXIEAAAACyR0MDU5NTE2NTAyAwkBAAAACWlzRGVmaW5lZAAAAAEJAAQdAAAAAgUAAAASdm90aW5nTGl0ZUNvbnRyYWN0CQABLAAAAAIJAAQlAAAAAQUAAAAEdXNlcgUAAAAPa1VzZXJUb3RhbFN0cnVjBAAAAARkYXRhCQAEtQAAAAIJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABB0AAAACBQAAABJ2b3RpbmdMaXRlQ29udHJhY3QJAAEsAAAAAgkABCUAAAABBQAAAAR1c2VyBQAAAA9rVXNlclRvdGFsU3RydWMCAAAAFUVtcHR5IGtVc2VyVG90YWxTdHJ1YwIAAAABXwkABRUAAAADCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAEZGF0YQAAAAAAAAAAAAkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAABGRhdGEAAAAAAAAAAAEJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAARkYXRhAAAAAAAAAAACBAAAAA51UG9vbFRvdGFsU1dPUAkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAABJ2b3RpbmdMaXRlQ29udHJhY3QJAAEsAAAAAgkABCUAAAABBQAAAAR1c2VyBQAAABJrVXNlclRvdGFsVm90ZVNXT1AAAAAAAAAAAAAJAAUVAAAAAwUAAAAOdVBvb2xUb3RhbFNXT1AAAAAAAAAAAAAFAAAAEGN1cnJWb3RpbmdQZXJpb2QEAAAAEXVzZXJUb3RhbFZvdGVTV09QCAUAAAALJHQwNTk1MTY1MDIAAAACXzEEAAAAC3VzZXJVbnZvdGVkCAUAAAALJHQwNTk1MTY1MDIAAAACXzIEAAAAEXVzZXJVbnZvdGVkUGVyaW9kCAUAAAALJHQwNTk1MTY1MDIAAAACXzMEAAAAEXVzZXJVbnZvdGVkQWN0dWFsAwkAAAAAAAACBQAAABF1c2VyVW52b3RlZFBlcmlvZAUAAAAQY3VyclZvdGluZ1BlcmlvZAUAAAALdXNlclVudm90ZWQAAAAAAAAAAAAJAAUUAAAAAgUAAAARdXNlclRvdGFsVm90ZVNXT1AFAAAAEXVzZXJVbnZvdGVkQWN0dWFsAQAAABdnZXRVc2VyVm90ZU9wdGlvbkFtb3VudAAAAAEAAAAEdXNlcgkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAAR0aGlzCQABLAAAAAIJAAQlAAAAAQUAAAAEdXNlcgUAAAAXa2V5VXNlclZvdGVPcHRpb25BbW91bnQAAAAAAAAAAAABAAAAFGdldFZvdGluZ1N0YXJ0SGVpZ2h0AAAAAQAAAAh2b3RlTmFtZQkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAAR0aGlzCQABLAAAAAIFAAAACHZvdGVOYW1lBQAAABRrZXlWb3RpbmdTdGFydEhlaWdodAAAAAAAAAAAAAEAAAATZ2V0UG9vbFVwZGF0ZUhlaWdodAAAAAEAAAAEcG9vbAkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAAR0aGlzCQABLAAAAAIFAAAABHBvb2wFAAAAFWtleUhlaWdodFBvb2xGcmFjdGlvbgAAAAAAAAAAAAEAAAAYaXNEZWZpbmVQb29sVXBkYXRlSGVpZ2h0AAAAAQAAAARwb29sCQEAAAAJaXNEZWZpbmVkAAAAAQkABBoA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AAACXzEEAAAADnVzZXJTV09QTG9ja2VkCAUAAAALJHQwODc1NDg4MzQAAAACXzIEAAAAC2NsYWltQW1vdW50CQAAawAAAAMFAAAADnVzZXJTV09QTG9ja2VkCQAAZQAAAAIFAAAADGxhc3RJbnRlcmVzdAUAAAAQdXNlckxhc3RJbnRlcmVzdAUAAAAKc2NhbGVWYWx1ZQQAAAAPdXNlck5ld0ludGVyZXN0BQAAAAxsYXN0SW50ZXJlc3QJAAUUAAAAAgUAAAAPdXNlck5ld0ludGVyZXN0BQAAAAtjbGFpbUFtb3VudAAAAAgAAAABaQEAAAAHYWlyRHJvcAAAAAADCQEAAAABIQAAAAEFAAAACGlzQWN0aXZlCQAAAgAAAAECAAAAH0RBcHAgaXMgaW5hY3RpdmUgYXQgdGhpcyBtb21lbnQEAAAACyR0MDkwOTk5MTc0CQAFFAAAAAIICQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAAAAAABmFtb3VudAgJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAAAAAHYXNzZXRJZAQAAAAJcG10QW1vdW50CAUAAAALJHQwOTA5OTkxNzQAAAACXzEEAAAACnBtdEFzc2V0SWQIBQAAAAskdDA5MDk5OTE3NAAAAAJfMgMJAQAAAAIhPQAAAAIFAAAACnBtdEFzc2V0SWQFAAAABFNXT1AJAAACAAAAAQIAAAAUSW5jb3JyZWN0IHBtdEFzc2V0SWQEAAAAD3RvdGFsU1dPUExvY2tlZAkBAAAAEmdldFRvdGFsU1dPUExvY2tlZAAAAAAEAAAADGxhc3RJbnRlcmVzdAkBAAAAE2dldExhc3RJbnRlcmVzdEluZm8AAAAABAAAAAtpbnRlcmVzdE5ldwkAAGQAAAACBQAAAAxsYXN0SW50ZXJlc3QJAABrAAAAAwUAAAAJcG10QW1vdW50BQAAAApzY2FsZVZhbHVlBQAAAA90b3RhbFNXT1BMb2NrZWQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAD2tleUxhc3RJbnRlcmVzdAUAAAALaW50ZXJlc3ROZXcFAAAAA25pbAAAAAFpAQAAAAhsb2NrU1dPUAAAAAADCQEAAAABIQAAAAEFAAAACGlzQWN0aXZlCQAAAgAAAAECAAAAH0RBcHAgaXMgaW5hY3RpdmUgYXQgdGhpcyBtb21lbnQEAAAACyR0MDk2MTI5Njg3CQAFFAAAAAIICQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAAAAAABmFtb3VudAgJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAAAAAHYXNzZXRJZAQAAAAJcG10QW1vdW50CAUAAAALJHQwOTYxMjk2ODcAAAACXzEEAAAACnBtdEFzc2V0SWQIBQAAAAskdDA5NjEyOTY4NwAAAAJfMgMJAQAAAAIhPQAAAAIFAAAACnBtdEFzc2V0SWQFAAAABFNXT1AJAAACAAAAAQIAAAAUSW5jb3JyZWN0IHBtdEFzc2V0SWQEAAAADGxhc3RJbnRlcmVzdAkBAAAAE2dldExhc3RJbnRlcmVzdEluZm8AAAAABAAAAAskdDA5ODAzOTg4NQkBAAAAE2dldFVzZXJJbnRlcmVzdEluZm8AAAACCAUAAAABaQAAAAZjYWxsZXIFAAAADGxhc3RJbnRlcmVzdAQAAAAQdXNlckxhc3RJbnRlcmVzdAgFAAAACyR0MDk4MDM5ODg1AAAAAl8xBAAAAA51c2VyU1dPUExvY2tlZAgFAAAACyR0MDk4MDM5ODg1AAAAAl8yBAAAAAtjbGFpbUFtb3VudAkAAGsAAAADBQAAAA51c2VyU1dPUExvY2tlZAkAAGUAAAACBQAAAAxsYXN0SW50ZXJlc3QFAAAAEHVzZXJMYXN0SW50ZXJlc3QFAAAACnNjYWxlVmFsdWUEAAAAEXVzZXJTV09QTG9ja2VkTmV3CQAAZAAAAAIJAABkAAAAAgUAAAAOdXNlclNXT1BMb2NrZWQFAAAACXBtdEFtb3VudAUAAAALY2xhaW1BbW91bnQEAAAAD3VzZXJOZXdJbnRlcmVzdAUAAAAMbGFzdEludGVyZXN0BAAAAA90b3RhbFNXT1BMb2NrZWQJAQAAABJnZXRUb3RhbFNXT1BMb2NrZWQAAAAABAAAABJ0b3RhbFNXT1BMb2NrZWROZXcJAABkAAAAAgkAAGQAAAACBQAAAA90b3RhbFNXT1BMb2NrZWQFAAAACXBtdEFtb3VudAUAAAALY2xhaW1BbW91bnQEAAAAEXVzZXJDbGFpbWVkQW1vdW50CQEAAAAYZ2V0VXNlclNXT1BDbGFpbWVkQW1vdW50AAAAAQgFAAAAAWkAAAAGY2FsbGVyBAAAABR1c2VyQ2xhaW1lZEFtb3VudE5ldwkAAGQAAAACBQAAABF1c2VyQ2xhaW1lZEFtb3VudAUAAAALY2xhaW1BbW91bnQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIFAAAAE2tleVVzZXJMYXN0SW50ZXJlc3QFAAAAD3VzZXJOZXdJbnRlcmVzdAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgUAAAARa2V5VXNlclNXT1BMb2NrZWQFAAAAEXVzZXJTV09QTG9ja2VkTmV3CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABJrZXlUb3RhbFNXT1BMb2NrZWQFAAAAEnRvdGFsU1dPUExvY2tlZE5ldwkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgUAAAAYa2V5VXNlclNXT1BDbGFpbWVkQW1vdW50BQAAABR1c2VyQ2xhaW1lZEFtb3VudE5ldwkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgUAAAAca2V5VXNlclNXT1BMYXN0Q2xhaW1lZEFtb3VudAUAAAALY2xhaW1BbW91bnQFAAAAA25pbAAAAAFpAQAAAAx3aXRoZHJhd1NXT1AAAAABAAAADndpdGhkcmF3QW1vdW50AwkBAAAAASEAAAABBQAAAAhpc0FjdGl2ZQkAAAIAAAABAgAAAB9EQXBwIGlzIGluYWN0aXZlIGF0IHRoaXMgbW9tZW50AwkAAGcAAAACAAAAAAAAAAAABQAAAA53aXRoZHJhd0Ftb3VudAkAAAIAAAABAgAAABN3aXRoZHJhd0Ftb3VudCA8PSAwBAAAAA90b3RhbFNXT1BMb2NrZWQJAQAAABJnZXRUb3RhbFNXT1BMb2NrZWQAAAAABAAAAA51c2VyU1dPUExvY2tlZAkBAAAAEWdldFVzZXJTV09QTG9ja2VkAAAAAQgFAAAAAWkAAAAGY2FsbGVyBAAAAA0kdDAxMTAzNTExMDkwCQEAAAAJY2xhaW1DYWxjAAAAAQgFAAAAAWkAAAAGY2FsbGVyBAAAAA91c2VyTmV3SW50ZXJlc3QIBQAAAA0kdDAxMTAzNTExMDkwAAAAAl8xBAAAAAtjbGFpbUFtb3VudAgFAAAADSR0MDExMDM1MTEwOTAAAAACXzIEAAAADSR0MDExMDk1MTExNjAJAQAAAA9nZXRVc2VyVm90ZUluZm8AAAABCAUAAAABaQAAAAZjYWxsZXIEAAAADnVzZXJWb3RlQW1vdW50CAUAAAANJHQwMTEwOTUxMTE2MAAAAAJfMQQAAAAQdXNlclVudm90ZUFtb3VudAgFAAAADSR0MDExMDk1MTExNjAAAAACXzIEAAAAGHVzZXJWb3RlQW1vdW50Rm9yTmV3UG9vbAkBAAAAIGdldFVzZXJUb3RhbFZvdGVGb3JOZXdQb29sQW1vdW50AAAAAQgFAAAAAWkAAAAGY2FsbGVyAwMDCQAAZgAAAAIAAAAAAAAAAAAFAAAAEHVzZXJVbnZvdGVBbW91bnQGCQAAZgAAAAIAAAAAAAAAAAAFAAAADnVzZXJWb3RlQW1vdW50BgkAAGYAAAACAAAAAAAAAAAABQAAABh1c2VyVm90ZUFtb3VudEZvck5ld1Bvb2wJAAACAAAAAQIAAABKdXNlclVudm90ZUFtb3VudCA8IDAgfHwgdXNlclZvdGVBbW91bnQgPCAwIHx8IHVzZXJWb3RlQW1vdW50Rm9yTmV3UG9vbCA8IDAEAAAAEmF2YWlsYWJsZVRvVW5zdGFrZQkAAGUAAAACBQAAAA51c2VyU1dPUExvY2tlZAkAAZYAAAABCQAETAAAAAIFAAAAGHVzZXJWb3RlQW1vdW50Rm9yTmV3UG9vbAkABEwAAAACCQAAZAAAAAIFAAAADnVzZXJWb3RlQW1vdW50BQAAABB1c2VyVW52b3RlQW1vdW50BQAAAANuaWwDCQAAZgAAAAIFAAAADndpdGhkcmF3QW1vdW50BQAAABJhdmFpbGFibGVUb1Vuc3Rha2UJAAACAAAAAQIAAAAjd2l0aGRyYXdBbW91bnQgPiBhdmFpbGFibGVUb1Vuc3Rha2UEAAAAEnRvdGFsU1dPUExvY2tlZE5ldwkAAGUAAAACCQAAZAAAAAIFAAAAD3RvdGFsU1dPUExvY2tlZAUAAAALY2xhaW1BbW91bnQFAAAADndpdGhkcmF3QW1vdW50BAAAABF1c2VyU1dPUGFtb3VudE5ldwkAAGUAAAACCQAAZAAAAAIFAAAADnVzZXJTV09QTG9ja2VkBQAAAAtjbGFpbUFtb3VudAUAAAAOd2l0aGRyYXdBbW91bnQEAAAAEXVzZXJDbGFpbWVkQW1vdW50CQEAAAAYZ2V0VXNlclNXT1BDbGFpbWVkQW1vdW50AAAAAQgFAAAAAWkAAAAGY2FsbGVyBAAAABR1c2VyQ2xhaW1lZEFtb3VudE5ldwkAAGQAAAACBQAAABF1c2VyQ2xhaW1lZEFtb3VudAUAAAALY2xhaW1BbW91bnQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIFAAAAE2tleVVzZXJMYXN0SW50ZXJlc3QFAAAAD3VzZXJOZXdJbnRlcmVzdAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgUAAAARa2V5VXNlclNXT1BMb2NrZWQFAAAAEXVzZXJTV09QYW1vdW50TmV3CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABJrZXlUb3RhbFNXT1BMb2NrZWQFAAAAEnRvdGFsU1dPUExvY2tlZE5ldwkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIFAAAADndpdGhkcmF3QW1vdW50BQAAAARTV09QCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBQAAABhrZXlVc2VyU1dPUENsYWltZWRBbW91bnQFAAAAFHVzZXJDbGFpbWVkQW1vdW50TmV3CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBQAAABxrZXlVc2VyU1dPUExhc3RDbGFpbWVkQW1vdW50BQAAAAtjbGFpbUFtb3VudAUAAAADbmlsAAAAAWkBAAAAFGNsYWltQW5kV2l0aGRyYXdTV09QAAAAAAMJAQAAAAEhAAAAAQUAAAAIaXNBY3RpdmUJAAACAAAAAQIAAAAfREFwcCBpcyBpbmFjdGl2ZSBhdCB0aGlzIG1vbWVudAQAAAAMbGFzdEludGVyZXN0CQEAAAATZ2V0TGFzdEludGVyZXN0SW5mbwAAAAAEAAAADSR0MDEyNTM1MTI1OTAJAQAAAAljbGFpbUNhbGMAAAABCAUAAAABaQAAAAZjYWxsZXIEAAAAD3VzZXJOZXdJbnRlcmVzdAgFAAAADSR0MDEyNTM1MTI1OTAAAAACXzEEAAAAC2NsYWltQW1vdW50CAUAAAANJHQwMTI1MzUxMjU5MAAAAAJfMgQAAAARdXNlckNsYWltZWRBbW91bnQJAQAAABhnZXRVc2VyU1dPUENsYWltZWRBbW91bnQAAAABCAUAAAABaQAAAAZjYWxsZXIEAAAAFHVzZXJDbGFpbWVkQW1vdW50TmV3CQAAZAAAAAIFAAAAEXVzZXJDbGFpbWVkQW1vdW50BQAAAAtjbGFpbUFtb3VudAMJAAAAAAAAAgUAAAALY2xhaW1BbW91bnQAAAAAAAAAAAAJAAACAAAAAQIAAAAZWW91IGhhdmUgMCBhdmFpbGFibGUgU1dPUAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgUAAAATa2V5VXNlckxhc3RJbnRlcmVzdAUAAAAPdXNlck5ld0ludGVyZXN0CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBQAAABhrZXlVc2VyU1dPUENsYWltZWRBbW91bnQFAAAAFHVzZXJDbGFpbWVkQW1vdW50TmV3CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBQAAABxrZXlVc2VyU1dPUExhc3RDbGFpbWVkQW1vdW50BQAAAAtjbGFpbUFtb3VudAkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIFAAAAC2NsYWltQW1vdW50BQAAAARTV09QBQAAAANuaWwAAAABaQEAAAARY2xhaW1BbmRTdGFrZVNXT1AAAAAAAwkBAAAAASEAAAABBQAAAAhpc0FjdGl2ZQkAAAIAAAABAgAAAB9EQXBwIGlzIGluYWN0aXZlIGF0IHRoaXMgbW9tZW50BAAAAA90b3RhbFNXT1BMb2NrZWQJAQAAABJnZXRUb3RhbFNXT1BMb2NrZWQAAAAABAAAAA51c2VyU1dPUExvY2tlZAkBAAAAEWdldFVzZXJTV09QTG9ja2VkAAAAAQgFAAAAAWkAAAAGY2FsbGVyBAAAAAxsYXN0SW50ZXJlc3QJAQAAABNnZXRMYXN0SW50ZXJlc3RJbmZvAAAAAAQAAAANJHQwMTMzNjkxMzQyNAkBAAAACWNsYWltQ2FsYwAAAAEIBQAAAAFpAAAABmNhbGxlcgQAAAAPdXNlck5ld0ludGVyZXN0CAUAAAANJHQwMTMzNjkxMzQyNAAAAAJfMQQAAAALY2xhaW1BbW91bnQIBQAAAA0kdDAxMzM2OTEzNDI0AAAAAl8yBAAAABF1c2VyU1dPUExvY2tlZE5ldwkAAGQAAAACBQAAAA51c2VyU1dPUExvY2tlZAUAAAALY2xhaW1BbW91bnQEAAAAEnRvdGFsU1dPUExvY2tlZE5ldwkAAGQAAAACBQAAAA90b3RhbFNXT1BMb2NrZWQFAAAAC2NsYWltQW1vdW50BAAAABF1c2VyQ2xhaW1lZEFtb3VudAkBAAAAGGdldFVzZXJTV09QQ2xhaW1lZEFtb3VudAAAAAEIBQAAAAFpAAAABmNhbGxlcgQAAAAUdXNlckNsYWltZWRBbW91bnROZXcJAABkAAAAAgUAAAARdXNlckNsYWltZWRBbW91bnQFAAAAC2NsYWltQW1vdW50AwkAAAAAAAACBQAAAAtjbGFpbUFtb3VudAAAAAAAAAAAAAkAAAIAAAABAgAAABlZb3UgaGF2ZSAwIGF2YWlsYWJsZSBTV09QCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBQAAABNrZXlVc2VyTGFzdEludGVyZXN0BQAAAA91c2VyTmV3SW50ZXJlc3QJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAEmtleVRvdGFsU1dPUExvY2tlZAUAAAASdG90YWxTV09QTG9ja2VkTmV3CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBQAAABFrZXlVc2VyU1dPUExvY2tlZAUAAAARdXNlclNXT1BMb2NrZWROZXcJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIFAAAAGGtleVVzZXJTV09QQ2xhaW1lZEFtb3VudAUAAAAUdXNlckNsYWltZWRBbW91bnROZXcJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIFAAAAHGtleVVzZXJTV09QTGFzdENsYWltZWRBbW91bnQFAAAAC2NsYWltQW1vdW50BQAAAANuaWwAAAABaQEAAAANdXBkYXRlV2VpZ2h0cwAAAAYAAAANcHJldmlvdXNQb29scwAAAA9wcmV2aW91c1Jld2FyZHMAAAAMY3VycmVudFBvb2xzAAAADmN1cnJlbnRSZXdhcmRzAAAAEnJld2FyZFVwZGF0ZUhlaWdodAAAAApwYWdpbmF0aW9uAwkBAAAAASEAAAABBQAAAAhpc0FjdGl2ZQkAAAIAAAABAgAAAB9EQXBwIGlzIGluYWN0aXZlIGF0IHRoaXMgbW9tZW50BAAAAAthbW91bnRQb29scwAAAAAAAAAACgQAAAAXdG90YWxSZXdhcmRVcGRhdGVIZWlnaHQJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwUAAAAVa2V5UmV3YXJkVXBkYXRlSGVpZ2h0AAAAAAAAAAAAAwkBAAAAASEAAAABCQEAAAAPY29udGFpbnNFbGVtZW50AAAAAgkABEwAAAACBQAAAAxhZG1pblB1YktleTEJAARMAAAAAgUAAAAMYWRtaW5QdWJLZXkyCQAETAAAAAIFAAAADGFkbWluUHViS2V5MwkABEwAAAACBQAAABRhZG1pblB1YktleVN0YXJ0U3RvcAkABEwAAAACBQAAABFhZG1pblB1YktleVdhbGxldAUAAAADbmlsCAUAAAABaQAAAA9jYWxsZXJQdWJsaWNLZXkJAAACAAAAAQIAAAAhT25seSBhZG1pbiBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uAwMJAABmAAAAAgkAAZAAAAABBQAAAA1wcmV2aW91c1Bvb2xzBQAAAAthbW91bnRQb29scwYJAABmAAAAAgkAAZAAAAABBQAAAAxjdXJyZW50UG9vbHMFAAAAC2Ftb3VudFBvb2xzCQAAAgAAAAEJAAEsAAAAAgIAAAAWTWF4IGFtb3VudCBvZiBwb29sIGlzIAkAAaQAAAABBQAAAAthbW91bnRQb29scwMJAABnAAAAAgUAAAAXdG90YWxSZXdhcmRVcGRhdGVIZWlnaHQFAAAAEnJld2FyZFVwZGF0ZUhlaWdodAkAAAIAAAABAgAAAC1yZXdhcmRVcGRhdGVIZWlnaHQgPD0gdG90YWxSZXdhcmRVcGRhdGVIZWlnaHQDCQAAZwAAAAIFAAAABmhlaWdodAUAAAAScmV3YXJkVXBkYXRlSGVpZ2h0CQAAAgAAAAECAAAAHGhlaWdodCA+PSByZXdhcmRVcGRhdGVIZWlnaHQDCQAAZwAAAAIAAAAAAAAAAAAFAAAAEnJld2FyZFVwZGF0ZUhlaWdodAkAAAIAAAABAgAAABgwID49IHJld2FyZFVwZGF0ZUhlaWdodCAKAQAAAANzdW0AAAACAAAAAWEAAAABYgkAAGQAAAACBQAAAAFhBQAAAAFiCgEAAAAZY2hhbmdlUHJldmlvdXNSZXdhcmRFbnRyeQAAAAIAAAALYWNjdW11bGF0ZWQAAAAEcG9vbAQAAAAWcG9vbFJld2FyZFVwZGF0ZUhlaWdodAkBAAAAE2dldFBvb2xVcGRhdGVIZWlnaHQAAAABBQAAAARwb29sAwkBAAAAASEAAAABCQEAAAAYaXNEZWZpbmVQb29sVXBkYXRlSGVpZ2h0AAAAAQUAAAAEcG9vbAQAAAAKcG9vbFJld2FyZAkBAAAAEGdldEN1clBvb2xXZWlnaHQAAAABBQAAAARwb29sCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIFAAAABHBvb2wFAAAAHWtleVJld2FyZFBvb2xGcmFjdGlvblByZXZpb3VzBQAAAApwb29sUmV3YXJkBQAAAAthY2N1bXVsYXRlZAMJAQAAAAIhPQAAAAIFAAAAEnJld2FyZFVwZGF0ZUhlaWdodAUAAAAWcG9vbFJld2FyZFVwZGF0ZUhlaWdodAMJAAAAAAAAAgUAAAAWcG9vbFJld2FyZFVwZGF0ZUhlaWdodAUAAAAXdG90YWxSZXdhcmRVcGRhdGVIZWlnaHQEAAAACnBvb2xSZXdhcmQJAQAAABBnZXRDdXJQb29sV2VpZ2h0AAAAAQUAAAAEcG9vbAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACBQAAAARwb29sBQAAAB1rZXlSZXdhcmRQb29sRnJhY3Rpb25QcmV2aW91cwUAAAAKcG9vbFJld2FyZAUAAAALYWNjdW11bGF0ZWQFAAAAA25pbAUAAAADbmlsCgEAAAAYY2hhbmdlQ3VycmVudFJld2FyZEVudHJ5AAAAAgAAAAthY2N1bXVsYXRlZAAAAARwb29sBAAAAAlwb29sSW5kZXgJAQAAAAV2YWx1ZQAAAAEJAARPAAAAAgUAAAAMY3VycmVudFBvb2xzBQAAAARwb29sBAAAAApwb29sUmV3YXJkCQABkQAAAAIFAAAADmN1cnJlbnRSZXdhcmRzBQAAAAlwb29sSW5kZXgDCQAAZgAAAAIAAAAAAAAAAAAFAAAACnBvb2xSZXdhcmQJAAACAAAAAQIAAAAOUG9vbFJld2FyZCA8IDAJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgUAAAAEcG9vbAUAAAAca2V5UmV3YXJkUG9vbEZyYWN0aW9uQ3VycmVudAUAAAAKcG9vbFJld2FyZAUAAAALYWNjdW11bGF0ZWQKAQAAABFjaGFuZ2VIZWlnaHRFbnRyeQAAAAIAAAALYWNjdW11bGF0ZWQAAAAEcG9vbAQAAAAKcG9vbEhlaWdodAUAAAAScmV3YXJkVXBkYXRlSGVpZ2h0CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIFAAAABHBvb2wFAAAAFWtleUhlaWdodFBvb2xGcmFjdGlvbgUAAAAKcG9vbEhlaWdodAUAAAALYWNjdW11bGF0ZWQKAQAAAAxnZXRTdW1SZXdhcmQAAAADAAAAC3ByZXZUZW1wU3VtAAAACmN1clRlbXBTdW0AAAAKcGFnaW5hdGlvbgMJAAAAAAAAAgUAAAAKcGFnaW5hdGlvbgAAAAAAAAAAAAMDCQAAZgAAAAIFAAAAC3ByZXZUZW1wU3VtBQAAAA50b3RhbFZvdGVTaGFyZQYJAABmAAAAAgUAAAAKY3VyVGVtcFN1bQUAAAAOdG90YWxWb3RlU2hhcmUJAAACAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAASnN1bVJld2FyZFByZXZpb3VzID4gdG90YWxWb3RlU2hhcmUgb3Igc3VtUmV3YXJkQ3VycmVudCA+IHRvdGFsVm90ZVNoYXJlIC0gCQABpAAAAAEFAAAACnBhZ2luYXRpb24CAAAAASAJAAGkAAAAAQUAAAALcHJldlRlbXBTdW0CAAAAASAJAAGkAAAAAQUAAAAKY3VyVGVtcFN1bQkABRUAAAADCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAA5rZXlUZW1wUHJldlN1bQUAAAALcHJldlRlbXBTdW0FAAAAA25pbAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAANa2V5VGVtcEN1clN1bQUAAAAKY3VyVGVtcFN1bQUAAAADbmlsCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAACRrZXlSZXdhcmRVcGRhdGVGaXJzdFBhZ2luYXRpb25IZWlnaHQFAAAAEnJld2FyZFVwZGF0ZUhlaWdodAUAAAADbmlsAwkAAAAAAAACBQAAAApwYWdpbmF0aW9uAAAAAAAAAAABBAAAABJwcmV2VGVtcFN1bUZyb21LZXkJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwUAAAAOa2V5VGVtcFByZXZTdW0AAAAAAAAAAAAEAAAAEWN1clRlbXBTdW1Gcm9tS2V5CQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAABHRoaXMFAAAADWtleVRlbXBDdXJTdW0AAAAAAAAAAAAEAAAAJnJld2FyZFVwZGF0ZUhlaWdodEZpcnN0UGFnaW5hdGlvbkVudHJ5CQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAABHRoaXMFAAAAJGtleVJld2FyZFVwZGF0ZUZpcnN0UGFnaW5hdGlvbkhlaWdodAAAAAAAAAAAAAMDCQAAZgAAAAIJAABkAAAAAgUAAAALcHJldlRlbXBTdW0FAAAAEnByZXZUZW1wU3VtRnJvbUtleQUAAAAOdG90YWxWb3RlU2hhcmUGCQAAZgAAAAIJAABkAAAAAgUAAAAKY3VyVGVtcFN1bQUAAAARY3VyVGVtcFN1bUZyb21LZXkFAAAADnRvdGFsVm90ZVNoYXJlCQAAAgAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAEpzdW1SZXdhcmRQcmV2aW91cyA+IHRvdGFsVm90ZVNoYXJlIG9yIHN1bVJld2FyZEN1cnJlbnQgPiB0b3RhbFZvdGVTaGFyZSAtIAkAAaQAAAABBQAAAApwYWdpbmF0aW9uAgAAAAEgCQABpAAAAAEJAABkAAAAAgUAAAALcHJldlRlbXBTdW0FAAAAEnByZXZUZW1wU3VtRnJvbUtleQIAAAABIAkAAaQAAAABCQAAZAAAAAIFAAAACmN1clRlbXBTdW0FAAAAEWN1clRlbXBTdW1Gcm9tS2V5AwkBAAAAAiE9AAAAAgUAAAAmcmV3YXJkVXBkYXRlSGVpZ2h0Rmlyc3RQYWdpbmF0aW9uRW50cnkFAAAAEnJld2FyZFVwZGF0ZUhlaWdodAkAAAIAAAABAgAAAERjdXJyZW50IHJld2FyZFVwZGF0ZUhlaWdodCAhPSByZXdhcmRVcGRhdGVIZWlnaHRGaXJzdFBhZ2luYXRpb25FbnRyeQkABRUAAAADCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAA5rZXlUZW1wUHJldlN1bQkAAGQAAAACBQAAAAtwcmV2VGVtcFN1bQUAAAAScHJldlRlbXBTdW1Gcm9tS2V5BQAAAANuaWwJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAADWtleVRlbXBDdXJTdW0JAABkAAAAAgUAAAAKY3VyVGVtcFN1bQUAAAARY3VyVGVtcFN1bUZyb21LZXkFAAAAA25pbAUAAAADbmlsAwkAAAAAAAACBQAAAApwYWdpbmF0aW9uAAAAAAAAAAACBAAAAAdwcmV2U3VtCQAAZAAAAAIJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwUAAAAOa2V5VGVtcFByZXZTdW0AAAAAAAAAAAAFAAAAC3ByZXZUZW1wU3VtBAAAAAZjdXJTdW0JAABkAAAAAgkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAAR0aGlzBQAAAA1rZXlUZW1wQ3VyU3VtAAAAAAAAAAAABQAAAApjdXJUZW1wU3VtBAAAACZyZXdhcmRVcGRhdGVIZWlnaHRGaXJzdFBhZ2luYXRpb25FbnRyeQkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAAR0aGlzBQAAACRrZXlSZXdhcmRVcGRhdGVGaXJzdFBhZ2luYXRpb25IZWlnaHQAAAAAAAAAAAADAwkBAAAAAiE9AAAAAgUAAAAHcHJldlN1bQUAAAAOdG90YWxWb3RlU2hhcmUGCQEAAAACIT0AAAACBQAAAAZjdXJTdW0FAAAADnRvdGFsVm90ZVNoYXJlCQAAAgAAAAECAAAASXN1bVJld2FyZFByZXZpb3VzICE9IHRvdGFsVm90ZVNoYXJlIG9yIHN1bVJld2FyZEN1cnJlbnQgIT0gdG90YWxWb3RlU2hhcmUDCQEAAAACIT0AAAACBQAAACZyZXdhcmRVcGRhdGVIZWlnaHRGaXJzdFBhZ2luYXRpb25FbnRyeQUAAAAScmV3YXJkVXBkYXRlSGVpZ2h0CQAAAgAAAAECAAAARGN1cnJlbnQgcmV3YXJkVXBkYXRlSGVpZ2h0ICE9IHJld2FyZFVwZGF0ZUhlaWdodEZpcnN0UGFnaW5hdGlvbkVudHJ5CQAFFQAAAAMJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAADmtleVRlbXBQcmV2U3VtBQAAAAdwcmV2U3VtBQAAAANuaWwJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAADWtleVRlbXBDdXJTdW0FAAAABmN1clN1bQUAAAADbmlsBQAAAANuaWwJAAACAAAAAQIAAAAUSW5jb3JyZWN0IHBhZ2luYXRpb24EAAAAFXN1bVJld2FyZFByZXZpb3VzVGVtcAQAAAAPJGxpc3QxOTAxNDE5MDQ3BQAAAA9wcmV2aW91c1Jld2FyZHMEAAAADyRzaXplMTkwMTQxOTA0NwkAAZAAAAABBQAAAA8kbGlzdDE5MDE0MTkwNDcEAAAADyRhY2MwMTkwMTQxOTA0NwAAAAAAAAAAAAMJAAAAAAAAAgUAAAAPJHNpemUxOTAxNDE5MDQ3AAAAAAAAAAAABQAAAA8kYWNjMDE5MDE0MTkwNDcEAAAADyRhY2MxMTkwMTQxOTA0NwkBAAAAA3N1bQAAAAIFAAAADyRhY2MwMTkwMTQxOTA0NwkAAZEAAAACBQAAAA8kbGlzdDE5MDE0MTkwNDcAAAAAAAAAAAADCQAAAAAAAAIFAAAADyRzaXplMTkwMTQxOTA0NwAAAAAAAAAAAQUAAAAPJGFjYzExOTAxNDE5MDQ3BAAAAA8kYWNjMjE5MDE0MTkwNDcJAQAAAANzdW0AAAACBQAAAA8kYWNjMTE5MDE0MTkwNDcJAAGRAAAAAgUAAAAPJGxpc3QxOTAxNDE5MDQ3AAAAAAAAAAABAwkAAAAAAAACBQAAAA8kc2l6ZTE5MDE0MTkwNDcAAAAAAAAAAAIFAAAADyRhY2MyMTkwMTQxOTA0NwQAAAAPJGFjYzMxOTAxNDE5MDQ3CQEAAAADc3VtAAAAAgUAAAAPJGFjYzIxOTAxNDE5MDQ3CQABkQAAAAIFAAAADyRsaXN0MTkwMTQxOTA0NwAAAAAAAAAAAgMJAAAAAAAAAgUAAAAPJHNpemUxOTAxNDE5MDQ3AAAAAAAAAAADBQAAAA8kYWNjMzE5MDE0MTkwNDcEAAAADyRhY2M0MTkwMTQxOTA0NwkBAAAAA3N1bQAAAAIFAAAADyRhY2MzMTkwMTQxOTA0NwkAAZEAAAACBQAAAA8kbGlzdDE5MDE0MTkwNDcAAAAAAAAAAAMDCQAAAAAAAAIFAAAADyRzaXplMTkwMTQxOTA0NwAAAAAAAAAABAUAAAAPJGFjYzQxOTAxNDE5MDQ3BAAAAA8kYWNjNTE5MDE0MTkwNDcJAQAAAANzdW0AAAACBQAAAA8kYWNjNDE5MDE0MTkwNDcJAAGRAAAAAgUAAAAPJGxpc3QxOTAxNDE5MDQ3AAAAAAAAAAAEAwkAAAAAAAACBQAAAA8kc2l6ZTE5MDE0MTkwNDcAAAAAAAAAAAUFAAAADyRhY2M1MTkwMTQxOTA0NwQAAAAPJGFjYzYxOTAxNDE5MDQ3CQEAAAADc3VtAAAAAgUAAAAPJGFjYzUxOTAxNDE5MDQ3CQABkQAAAAIFAAAADyRsaXN0MTkwMTQxOTA0NwAAAAAAAAAABQMJAAAAAAAAAgUAAAAPJHNpemUxOTAxNDE5MDQ3AAAAAAAAAAAGBQAAAA8kYWNjNjE5MDE0MTkwNDcEAAAADyRhY2M3MTkwMTQxOTA0NwkBAAAAA3N1bQAAAAIFAAAADyRhY2M2MTkwMTQxOTA0NwkAAZEAAAACBQAAAA8kbGlzdDE5MDE0MTkwNDcAAAAAAAAAAAYDCQAAAAAAAAIFAAAADyRzaXplMTkwMTQxOTA0NwAAAAAAAAAABwUAAAAPJGFjYzcxOTAxNDE5MDQ3BAAAAA8kYWNjODE5MDE0MTkwNDcJAQAAAANzdW0AAAACBQAAAA8kYWNjNzE5MDE0MTkwNDcJAAGRAAAAAgUAAAAPJGxpc3QxOTAxNDE5MDQ3AAAAAAAAAAAHAwkAAAAAAAACBQAAAA8kc2l6ZTE5MDE0MTkwNDcAAAAAAAAAAAgFAAAADyRhY2M4MTkwMTQxOTA0NwQAAAAPJGFjYzkxOTAxNDE5MDQ3CQEAAAADc3VtAAAAAgUAAAAPJGFjYzgxOTAxNDE5MDQ3CQABkQAAAAIFAAAADyRsaXN0MTkwMTQxOTA0NwAAAAAAAAAACAMJAAAAAAAAAgUAAAAPJHNpemUxOTAxNDE5MDQ3AAAAAAAAAAAJBQAAAA8kYWNjOTE5MDE0MTkwNDcEAAAAECRhY2MxMDE5MDE0MTkwNDcJAQAAAANzdW0AAAACBQAAAA8kYWNjOTE5MDE0MTkwNDcJAAGRAAAAAgUAAAAPJGxpc3QxOTAxNDE5MDQ3AAAAAAAAAAAJAwkAAAAAAAACBQAAAA8kc2l6ZTE5MDE0MTkwNDcAAAAAAAAAAAoFAAAAECRhY2MxMDE5MDE0MTkwNDcEAAAAECRhY2MxMTE5MDE0MTkwNDcJAQAAAANzdW0AAAACBQAAABAkYWNjMTAxOTAxNDE5MDQ3CQABkQAAAAIFAAAADyRsaXN0MTkwMTQxOTA0NwAAAAAAAAAACgkAAAIAAAABAgAAABNMaXN0IHNpemUgZXhjZWVkIDEwBAAAABRzdW1SZXdhcmRDdXJyZW50VGVtcAQAAAAPJGxpc3QxOTA4MDE5MTEyBQAAAA5jdXJyZW50UmV3YXJkcwQAAAAPJHNpemUxOTA4MDE5MTEyCQABkAAAAAEFAAAADyRsaXN0MTkwODAxOTExMgQAAAAPJGFjYzAxOTA4MDE5MTEyAAAAAAAAAAAAAwkAAAAAAAACBQAAAA8kc2l6ZTE5MDgwMTkxMTIAAAAAAAAAAAAFAAAADyRhY2MwMTkwODAxOTExMgQAAAAPJGFjYzExOTA4MDE5MTEyCQEAAAADc3VtAAAAAgUAAAAPJGFjYzAxOTA4MDE5MTEyCQABkQAAAAIFAAAADyRsaXN0MTkwODAxOTExMgAAAAAAAAAAAAMJAAAAAAAAAgUAAAAPJHNpemUxOTA4MDE5MTEyAAAAAAAAAAABBQAAAA8kYWNjMTE5MDgwMTkxMTIEAAAADyRhY2MyMTkwODAxOTExMgkBAAAAA3N1bQAAAAIFAAAADyRhY2MxMTkwODAxOTExMgkAAZEAAAACBQAAAA8kbGlzdDE5MDgwMTkxMTIAAAAAAAAAAAEDCQAAAAAAAAIFAAAADyRzaXplMTkwODAxOTExMgAAAAAAAAAAAgUAAAAPJGFjYzIxOTA4MDE5MTEyBAAAAA8kYWNjMzE5MDgwMTkxMTIJAQAAAANzdW0AAAACBQAAAA8kYWNjMjE5MDgwMTkxMTIJAAGRAAAAAgUAAAAPJGxpc3QxOTA4MDE5MTEyAAAAAAAAAAACAwkAAAAAAAACBQAAAA8kc2l6ZTE5MDgwMTkxMTIAAAAAAAAAAAMFAAAADyRhY2MzMTkwODAxOTExMgQAAAAPJGFjYzQxOTA4MDE5MTEyCQEAAAADc3VtAAAAAgUAAAAPJGFjYzMxOTA4MDE5MTEyCQABkQAAAAIFAAAADyRsaXN0MTkwODAxOTExMgAAAAAAAAAAAwMJAAAAAAAAAgUAAAAPJHNpemUxOTA4MDE5MTEyAAAAAAAAAAAEBQAAAA8kYWNjNDE5MDgwMTkxMTIEAAAADyRhY2M1MTkwODAxOTExMgkBAAAAA3N1bQAAAAIFAAAADyRhY2M0MTkwODAxOTExMgkAAZEAAAACBQAAAA8kbGlzdDE5MDgwMTkxMTIAAAAAAAAAAAQDCQAAAAAAAAIFAAAADyRzaXplMTkwODAxOTExMgAAAAAAAAAABQUAAAAPJGFjYzUxOTA4MDE5MTEyBAAAAA8kYWNjNjE5MDgwMTkxMTIJAQAAAANzdW0AAAACBQAAAA8kYWNjNTE5MDgwMTkxMTIJAAGRAAAAAgUAAAAPJGxpc3QxOTA4MDE5MTEyAAAAAAAAAAAFAwkAAAAAAAACBQAAAA8kc2l6ZTE5MDgwMTkxMTIAAAAAAAAAAAYFAAAADyRhY2M2MTkwODAxOTExMgQAAAAPJGFjYzcxOTA4MDE5MTEyCQEAAAADc3VtAAAAAgUAAAAPJGFjYzYxOTA4MDE5MTEyCQABkQAAAAIFAAAADyRsaXN0MTkwODAxOTExMgAAAAAAAAAABgMJAAAAAAAAAgUAAAAPJHNpemUxOTA4MDE5MTEyAAAAAAAAAAAHBQAAAA8kYWNjNzE5MDgwMTkxMTIEAAAADyRhY2M4MTkwODAxOTExMgkBAAAAA3N1bQAAAAIFAAAADyRhY2M3MTkwODAxOTExMgkAAZEAAAACBQAAAA8kbGlzdDE5MDgwMTkxMTIAAAAAAAAAAAcDCQAAAAAAAAIFAAAADyRzaXplMTkwODAxOTExMgAAAAAAAAAACAUAAAAPJGFjYzgxOTA4MDE5MTEyBAAAAA8kYWNjOTE5MDgwMTkxMTIJAQAAAANzdW0AAAACBQAAAA8kYWNjODE5MDgwMTkxMTIJAAGRAAAAAgUAAAAPJGxpc3QxOTA4MDE5MTEyAAAAAAAAAAAIAwkAAAAAAAACBQAAAA8kc2l6ZTE5MDgwMTkxMTIAAAAAAAAAAAkFAAAADyRhY2M5MTkwODAxOTExMgQAAAAQJGFjYzEwMTkwODAxOTExMgkBAAAAA3N1bQAAAAIFAAAADyRhY2M5MTkwODAxOTExMgkAAZEAAAACBQAAAA8kbGlzdDE5MDgwMTkxMTIAAAAAAAAAAAkDCQAAAAAAAAIFAAAADyRzaXplMTkwODAxOTExMgAAAAAAAAAACgUAAAAQJGFjYzEwMTkwODAxOTExMgQAAAAQJGFjYzExMTkwODAxOTExMgkBAAAAA3N1bQAAAAIFAAAAECRhY2MxMDE5MDgwMTkxMTIJAAGRAAAAAgUAAAAPJGxpc3QxOTA4MDE5MTEyAAAAAAAAAAAKCQAAAgAAAAECAAAAE0xpc3Qgc2l6ZSBleGNlZWQgMTAEAAAADSR0MDE5MTE4MTkyNzEJAQAAAAxnZXRTdW1SZXdhcmQAAAADBQAAABVzdW1SZXdhcmRQcmV2aW91c1RlbXAFAAAAFHN1bVJld2FyZEN1cnJlbnRUZW1wBQAAAApwYWdpbmF0aW9uBAAAABFzdW1SZXdhcmRQcmV2aW91cwgFAAAADSR0MDE5MTE4MTkyNzEAAAACXzEEAAAAEHN1bVJld2FyZEN1cnJlbnQIBQAAAA0kdDAxOTExODE5MjcxAAAAAl8yBAAAACZyZXdhcmRVcGRhdGVIZWlnaHRGaXJzdFBhZ2luYXRpb25FbnRyeQgFAAAADSR0MDE5MTE4MTkyNzEAAAACXzMEAAAAF3Jld2FyZFVwZGF0ZUhlaWdodEVudHJ5AwkAAAAAAAACBQAAAApwYWdpbmF0aW9uAAAAAAAAAAACCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABVrZXlSZXdhcmRVcGRhdGVIZWlnaHQFAAAAEnJld2FyZFVwZGF0ZUhlaWdodAUAAAADbmlsBQAAAANuaWwDCQAAZgAAAAIFAAAABmhlaWdodAUAAAAScmV3YXJkVXBkYXRlSGVpZ2h0CQAAAgAAAAECAAAAG3Jld2FyZFVwZGF0ZUhlaWdodCA8IGhlaWdodAQAAAAWcHJldmlvdXNSZXdhcmRFbnRyeU5ldwQAAAAPJGxpc3QxOTUyMTE5NTc1BQAAAA1wcmV2aW91c1Bvb2xzBAAAAA8kc2l6ZTE5NTIxMTk1NzUJAAGQAAAAAQUAAAAPJGxpc3QxOTUyMTE5NTc1BAAAAA8kYWNjMDE5NTIxMTk1NzUFAAAAA25pbAMJAAAAAAAAAgUAAAAPJHNpemUxOTUyMTE5NTc1AAAAAAAAAAAABQAAAA8kYWNjMDE5NTIxMTk1NzUEAAAADyRhY2MxMTk1MjExOTU3NQkBAAAAGWNoYW5nZVByZXZpb3VzUmV3YXJkRW50cnkAAAACBQAAAA8kYWNjMDE5NTIxMTk1NzUJAAGRAAAAAgUAAAAPJGxpc3QxOTUyMTE5NTc1AAAAAAAAAAAAAwkAAAAAAAACBQAAAA8kc2l6ZTE5NTIxMTk1NzUAAAAAAAAAAAEFAAAADyRhY2MxMTk1MjExOTU3NQQAAAAPJGFjYzIxOTUyMTE5NTc1CQEAAAAZY2hhbmdlUHJldmlvdXNSZXdhcmRFbnRyeQAAAAIFAAAADyRhY2MxMTk1MjExOTU3NQkAAZEAAAACBQAAAA8kbGlzdDE5NTIxMTk1NzUAAAAAAAAAAAEDCQAAAAAAAAIFAAAADyRzaXplMTk1MjExOTU3NQAAAAAAAAAAAgUAAAAPJGFjYzIxOTUyMTE5NTc1BAAAAA8kYWNjMzE5NTIxMTk1NzUJAQAAABljaGFuZ2VQcmV2aW91c1Jld2FyZEVudHJ5AAAAAgUAAAAPJGFjYzIxOTUyMTE5NTc1CQABkQAAAAIFAAAADyRsaXN0MTk1MjExOTU3NQAAAAAAAAAAAgMJAAAAAAAAAgUAAAAPJHNpemUxOTUyMTE5NTc1AAAAAAAAAAADBQAAAA8kYWNjMzE5NTIxMTk1NzUEAAAADyRhY2M0MTk1MjExOTU3NQkBAAAAGWNoYW5nZVByZXZpb3VzUmV3YXJkRW50cnkAAAACBQAAAA8kYWNjMzE5NTIxMTk1NzUJAAGRAAAAAgUAAAAPJGxpc3QxOTUyMTE5NTc1AAAAAAAAAAADAwkAAAAAAAACBQAAAA8kc2l6ZTE5NTIxMTk1NzUAAAAAAAAAAAQFAAAADyRhY2M0MTk1MjExOTU3NQQAAAAPJGFjYzUxOTUyMTE5NTc1CQEAAAAZY2hhbmdlUHJldmlvdXNSZXdhcmRFbnRyeQAAAAIFAAAADyRhY2M0MTk1MjExOTU3NQkAAZEAAAACBQAAAA8kbGlzdDE5NTIxMTk1NzUAAAAAAAAAAAQDCQAAAAAAAAIFAAAADyRzaXplMTk1MjExOTU3NQAAAAAAAAAABQUAAAAPJGFjYzUxOTUyMTE5NTc1BAAAAA8kYWNjNjE5NTIxMTk1NzUJAQAAABljaGFuZ2VQcmV2aW91c1Jld2FyZEVudHJ5AAAAAgUAAAAPJGFjYzUxOTUyMTE5NTc1CQABkQAAAAIFAAAADyRsaXN0MTk1MjExOTU3NQAAAAAAAAAABQMJAAAAAAAAAgUAAAAPJHNpemUxOTUyMTE5NTc1AAAAAAAAAAAGBQAAAA8kYWNjNjE5NTIxMTk1NzUEAAAADyRhY2M3MTk1MjExOTU3NQkBAAAAGWNoYW5nZVByZXZpb3VzUmV3YXJkRW50cnkAAAACBQAAAA8kYWNjNjE5NTIxMTk1NzUJAAGRAAAAAgUAAAAPJGxpc3QxOTUyMTE5NTc1AAAAAAAAAAAGAwkAAAAAAAACBQAAAA8kc2l6ZTE5NTIxMTk1NzUAAAAAAAAAAAcFAAAADyRhY2M3MTk1MjExOTU3NQQAAAAPJGFjYzgxOTUyMTE5NTc1CQEAAAAZY2hhbmdlUHJldmlvdXNSZXdhcmRFbnRyeQAAAAIFAAAADyRhY2M3MTk1MjExOTU3NQkAAZEAAAACBQAAAA8kbGlzdDE5NTIxMTk1NzUAAAAAAAAAAAcDCQAAAAAAAAIFAAAADyRzaXplMTk1MjExOTU3NQAAAAAAAAAACAUAAAAPJGFjYzgxOTUyMTE5NTc1BAAAAA8kYWNjOTE5NTIxMTk1NzUJAQAAABljaGFuZ2VQcmV2aW91c1Jld2FyZEVudHJ5AAAAAgUAAAAPJGFjYzgxOTUyMTE5NTc1CQABkQAAAAIFAAAADyRsaXN0MTk1MjExOTU3NQAAAAAAAAAACAMJAAAAAAAAAgUAAAAPJHNpemUxOTUyMTE5NTc1AAAAAAAAAAAJBQAAAA8kYWNjOTE5NTIxMTk1NzUEAAAAECRhY2MxMDE5NTIxMTk1NzUJAQAAABljaGFuZ2VQcmV2aW91c1Jld2FyZEVudHJ5AAAAAgUAAAAPJGFjYzkxOTUyMTE5NTc1CQABkQAAAAIFAAAADyRsaXN0MTk1MjExOTU3NQAAAAAAAAAACQMJAAAAAAAAAgUAAAAPJHNpemUxOTUyMTE5NTc1AAAAAAAAAAAKBQAAABAkYWNjMTAxOTUyMTE5NTc1BAAAABAkYWNjMTExOTUyMTE5NTc1CQEAAAAZY2hhbmdlUHJldmlvdXNSZXdhcmRFbnRyeQAAAAIFAAAAECRhY2MxMDE5NTIxMTk1NzUJAAGRAAAAAgUAAAAPJGxpc3QxOTUyMTE5NTc1AAAAAAAAAAAKCQAAAgAAAAECAAAAE0xpc3Qgc2l6ZSBleGNlZWQgMTAEAAAAFWN1cnJlbnRSZXdhcmRFbnRyeU5ldwQAAAAPJGxpc3QxOTYwODE5NjYwBQAAAAxjdXJyZW50UG9vbHMEAAAADyRzaXplMTk2MDgxOTY2MAkAAZAAAAABBQAAAA8kbGlzdDE5NjA4MTk2NjAEAAAADyRhY2MwMTk2MDgxOTY2MAUAAAADbmlsAwkAAAAAAAACBQAAAA8kc2l6ZTE5NjA4MTk2NjAAAAAAAAAAAAAFAAAADyRhY2MwMTk2MDgxOTY2MAQAAAAPJGFjYzExOTYwODE5NjYwCQEAAAAYY2hhbmdlQ3VycmVudFJld2FyZEVudHJ5AAAAAgUAAAAPJGFjYzAxOTYwODE5NjYwCQABkQAAAAIFAAAADyRsaXN0MTk2MDgxOTY2MAAAAAAAAAAAAAMJAAAAAAAAAgUAAAAPJHNpemUxOTYwODE5NjYwAAAAAAAAAAABBQAAAA8kYWNjMTE5NjA4MTk2NjAEAAAADyRhY2MyMTk2MDgxOTY2MAkBAAAAGGNoYW5nZUN1cnJlbnRSZXdhcmRFbnRyeQAAAAIFAAAADyRhY2MxMTk2MDgxOTY2MAkAAZEAAAACBQAAAA8kbGlzdDE5NjA4MTk2NjAAAAAAAAAAAAEDCQAAAAAAAAIFAAAADyRzaXplMTk2MDgxOTY2MAAAAAAAAAAAAgUAAAAPJGFjYzIxOTYwODE5NjYwBAAAAA8kYWNjMzE5NjA4MTk2NjAJAQAAABhjaGFuZ2VDdXJyZW50UmV3YXJkRW50cnkAAAACBQAAAA8kYWNjMjE5NjA4MTk2NjAJAAGRAAAAAgUAAAAPJGxpc3QxOTYwODE5NjYwAAAAAAAAAAACAwkAAAAAAAACBQAAAA8kc2l6ZTE5NjA4MTk2NjAAAAAAAAAAAAMFAAAADyRhY2MzMTk2MDgxOTY2MAQAAAAPJGFjYzQxOTYwODE5NjYwCQEAAAAYY2hhbmdlQ3VycmVudFJld2FyZEVudHJ5AAAAAgUAAAAPJGFjYzMxOTYwODE5NjYwCQABkQAAAAIFAAAADyRsaXN0MTk2MDgxOTY2MAAAAAAAAAAAAwMJAAAAAAAAAgUAAAAPJHNpemUxOTYwODE5NjYwAAAAAAAAAAAEBQAAAA8kYWNjNDE5NjA4MTk2NjAEAAAADyRhY2M1MTk2MDgxOTY2MAkBAAAAGGNoYW5nZUN1cnJlbnRSZXdhcmRFbnRyeQAAAAIFAAAADyRhY2M0MTk2MDgxOTY2MAkAAZEAAAACBQAAAA8kbGlzdDE5NjA4MTk2NjAAAAAAAAAAAAQDCQAAAAAAAAIFAAAADyRzaXplMTk2MDgxOTY2MAAAAAAAAAAABQUAAAAPJGFjYzUxOTYwODE5NjYwBAAAAA8kYWNjNjE5NjA4MTk2NjAJAQAAABhjaGFuZ2VDdXJyZW50UmV3YXJkRW50cnkAAAACBQAAAA8kYWNjNTE5NjA4MTk2NjAJAAGRAAAAAgUAAAAPJGxpc3QxOTYwODE5NjYwAAAAAAAAAAAFAwkAAAAAAAACBQAAAA8kc2l6ZTE5NjA4MTk2NjAAAAAAAAAAAAYFAAAADyRhY2M2MTk2MDgxOTY2MAQAAAAPJGFjYzcxOTYwODE5NjYwCQEAAAAYY2hhbmdlQ3VycmVudFJld2FyZEVudHJ5AAAAAgUAAAAPJGFjYzYxOTYwODE5NjYwCQABkQAAAAIFAAAADyRsaXN0MTk2MDgxOTY2MAAAAAAAAAAABgMJAAAAAAAAAgUAAAAPJHNpemUxOTYwODE5NjYwAAAAAAAAAAAHBQAAAA8kYWNjNzE5NjA4MTk2NjAEAAAADyRhY2M4MTk2MDgxOTY2MAkBAAAAGGNoYW5nZUN1cnJlbnRSZXdhcmRFbnRyeQAAAAIFAAAADyRhY2M3MTk2MDgxOTY2MAkAAZEAAAACBQAAAA8kbGlzdDE5NjA4MTk2NjAAAAAAAAAAAAcDCQAAAAAAAAIFAAAADyRzaXplMTk2MDgxOTY2MAAAAAAAAAAACAUAAAAPJGFjYzgxOTYwODE5NjYwBAAAAA8kYWNjOTE5NjA4MTk2NjAJAQAAABhjaGFuZ2VDdXJyZW50UmV3YXJkRW50cnkAAAACBQAAAA8kYWNjODE5NjA4MTk2NjAJAAGRAAAAAgUAAAAPJGxpc3QxOTYwODE5NjYwAAAAAAAAAAAIAwkAAAAAAAACBQAAAA8kc2l6ZTE5NjA4MTk2NjAAAAAAAAAAAAkFAAAADyRhY2M5MTk2MDgxOTY2MAQAAAAQJGFjYzEwMTk2MDgxOTY2MAkBAAAAGGNoYW5nZUN1cnJlbnRSZXdhcmRFbnRyeQAAAAIFAAAADyRhY2M5MTk2MDgxOTY2MAkAAZEAAAACBQAAAA8kbGlzdDE5NjA4MTk2NjAAAAAAAAAAAAkDCQAAAAAAAAIFAAAADyRzaXplMTk2MDgxOTY2MAAAAAAAAAAACgUAAAAQJGFjYzEwMTk2MDgxOTY2MAQAAAAQJGFjYzExMTk2MDgxOTY2MAkBAAAAGGNoYW5nZUN1cnJlbnRSZXdhcmRFbnRyeQAAAAIFAAAAECRhY2MxMDE5NjA4MTk2NjAJAAGRAAAAAgUAAAAPJGxpc3QxOTYwODE5NjYwAAAAAAAAAAAKCQAAAgAAAAECAAAAE0xpc3Qgc2l6ZSBleGNlZWQgMTAEAAAAEWhlaWdodEVudHJ5TmV3Q3VyBAAAAA8kbGlzdDE5Njg5MTk3MzQFAAAADGN1cnJlbnRQb29scwQAAAAPJHNpemUxOTY4OTE5NzM0CQABkAAAAAEFAAAADyRsaXN0MTk2ODkxOTczNAQAAAAPJGFjYzAxOTY4OTE5NzM0BQAAAANuaWwDCQAAAAAAAAIFAAAADyRzaXplMTk2ODkxOTczNAAAAAAAAAAAAAUAAAAPJGFjYzAxOTY4OTE5NzM0BAAAAA8kYWNjMTE5Njg5MTk3MzQJAQAAABFjaGFuZ2VIZWlnaHRFbnRyeQAAAAIFAAAADyRhY2MwMTk2ODkxOTczNAkAAZEAAAACBQAAAA8kbGlzdDE5Njg5MTk3MzQAAAAAAAAAAAADCQAAAAAAAAIFAAAADyRzaXplMTk2ODkxOTczNAAAAAAAAAAAAQUAAAAPJGFjYzExOTY4OTE5NzM0BAAAAA8kYWNjMjE5Njg5MTk3MzQJAQAAABFjaGFuZ2VIZWlnaHRFbnRyeQAAAAIFAAAADyRhY2MxMTk2ODkxOTczNAkAAZEAAAACBQAAAA8kbGlzdDE5Njg5MTk3MzQAAAAAAAAAAAEDCQAAAAAAAAIFAAAADyRzaXplMTk2ODkxOTczNAAAAAAAAAAAAgUAAAAPJGFjYzIxOTY4OTE5NzM0BAAAAA8kYWNjMzE5Njg5MTk3MzQJAQAAABFjaGFuZ2VIZWlnaHRFbnRyeQAAAAIFAAAADyRhY2MyMTk2ODkxOTczNAkAAZEAAAACBQAAAA8kbGlzdDE5Njg5MTk3MzQAAAAAAAAAAAIDCQAAAAAAAAIFAAAADyRzaXplMTk2ODkxOTczNAAAAAAAAAAAAwUAAAAPJGFjYzMxOTY4OTE5NzM0BAAAAA8kYWNjNDE5Njg5MTk3MzQJAQAAABFjaGFuZ2VIZWlnaHRFbnRyeQAAAAIFAAAADyRhY2MzMTk2ODkxOTczNAkAAZEAAAACBQAAAA8kbGlzdDE5Njg5MTk3MzQAAAAAAAAAAAMDCQAAAAAAAAIFAAAADyRzaXplMTk2ODkxOTczNAAAAAAAAAAABAUAAAAPJGFjYzQxOTY4OTE5NzM0BAAAAA8kYWNjNTE5Njg5MTk3MzQJAQAAABFjaGFuZ2VIZWlnaHRFbnRyeQAAAAIFAAAADyRhY2M0MTk2ODkxOTczNAkAAZEAAAACBQAAAA8kbGlzdDE5Njg5MTk3MzQAAAAAAAAAAAQDCQAAAAAAAAIFAAAADyRzaXplMTk2ODkxOTczNAAAAAAAAAAABQUAAAAPJGFjYzUxOTY4OTE5NzM0BAAAAA8kYWNjNjE5Njg5MTk3MzQJAQAAABFjaGFuZ2VIZWlnaHRFbnRyeQAAAAIFAAAADyRhY2M1MTk2ODkxOTczNAkAAZEAAAACBQAAAA8kbGlzdDE5Njg5MTk3MzQAAAAAAAAAAAUDCQAAAAAAAAIFAAAADyRzaXplMTk2ODkxOTczNAAAAAAAAAAABgUAAAAPJGFjYzYxOTY4OTE5NzM0BAAAAA8kYWNjNzE5Njg5MTk3MzQJAQAAABFjaGFuZ2VIZWlnaHRFbnRyeQAAAAIFAAAADyRhY2M2MTk2ODkxOTczNAkAAZEAAAACBQAAAA8kbGlzdDE5Njg5MTk3MzQAAAAAAAAAAAYDCQAAAAAAAAIFAAAADyRzaXplMTk2ODkxOTczNAAAAAAAAAAABwUAAAAPJGFjYzcxOTY4OTE5NzM0BAAAAA8kYWNjODE5Njg5MTk3MzQJAQAAABFjaGFuZ2VIZWlnaHRFbnRyeQAAAAIFAAAADyRhY2M3MTk2ODkxOTczNAkAAZEAAAACBQAAAA8kbGlzdDE5Njg5MTk3MzQAAAAAAAAAAAcDCQAAAAAAAAIFAAAADyRzaXplMTk2ODkxOTczNAAAAAAAAAAACAUAAAAPJGFjYzgxOTY4OTE5NzM0BAAAAA8kYWNjOTE5Njg5MTk3MzQJAQAAABFjaGFuZ2VIZWlnaHRFbnRyeQAAAAIFAAAADyRhY2M4MTk2ODkxOTczNAkAAZEAAAACBQAAAA8kbGlzdDE5Njg5MTk3MzQAAAAAAAAAAAgDCQAAAAAAAAIFAAAADyRzaXplMTk2ODkxOTczNAAAAAAAAAAACQUAAAAPJGFjYzkxOTY4OTE5NzM0BAAAABAkYWNjMTAxOTY4OTE5NzM0CQEAAAARY2hhbmdlSGVpZ2h0RW50cnkAAAACBQAAAA8kYWNjOTE5Njg5MTk3MzQJAAGRAAAAAgUAAAAPJGxpc3QxOTY4OTE5NzM0AAAAAAAAAAAJAwkAAAAAAAACBQAAAA8kc2l6ZTE5Njg5MTk3MzQAAAAAAAAAAAoFAAAAECRhY2MxMDE5Njg5MTk3MzQEAAAAECRhY2MxMTE5Njg5MTk3MzQJAQAAABFjaGFuZ2VIZWlnaHRFbnRyeQAAAAIFAAAAECRhY2MxMDE5Njg5MTk3MzQJAAGRAAAAAgUAAAAPJGxpc3QxOTY4OTE5NzM0AAAAAAAAAAAKCQAAAgAAAAECAAAAE0xpc3Qgc2l6ZSBleGNlZWQgMTAJAAROAAAAAgkABE4AAAACCQAETgAAAAIJAAROAAAAAgkABE4AAAACCQAETgAAAAIFAAAAFnByZXZpb3VzUmV3YXJkRW50cnlOZXcFAAAAFWN1cnJlbnRSZXdhcmRFbnRyeU5ldwUAAAARaGVpZ2h0RW50cnlOZXdDdXIFAAAAEXN1bVJld2FyZFByZXZpb3VzBQAAABBzdW1SZXdhcmRDdXJyZW50BQAAABdyZXdhcmRVcGRhdGVIZWlnaHRFbnRyeQUAAAAmcmV3YXJkVXBkYXRlSGVpZ2h0Rmlyc3RQYWdpbmF0aW9uRW50cnkAAAABaQEAAAAIc2h1dGRvd24AAAAAAwkBAAAAASEAAAABBQAAAAhpc0FjdGl2ZQkAAAIAAAABCQABLAAAAAICAAAAIkRBcHAgaXMgYWxyZWFkeSBzdXNwZW5kZWQuIENhdXNlOiAJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQdAAAAAgUAAAAEdGhpcwUAAAAIa2V5Q2F1c2UCAAAAGnRoZSBjYXVzZSB3YXNuJ3Qgc3BlY2lmaWVkAwkBAAAAASEAAAABCQEAAAAPY29udGFpbnNFbGVtZW50AAAAAgkABEwAAAACBQAAAAxhZG1pblB1YktleTEJAARMAAAAAgUAAAAMYWRtaW5QdWJLZXkyCQAETAAAAAIFAAAADGFkbWluUHViS2V5MwkABEwAAAACBQAAABRhZG1pblB1YktleVN0YXJ0U3RvcAUAAAADbmlsCAUAAAABaQAAAA9jYWxsZXJQdWJsaWNLZXkJAAACAAAAAQIAAAAhT25seSBhZG1pbiBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uCQEAAAAHc3VzcGVuZAAAAAECAAAAD1BhdXNlZCBieSBhZG1pbgAAAAFpAQAAAAhhY3RpdmF0ZQAAAAADBQAAAAhpc0FjdGl2ZQkAAAIAAAABAgAAABZEQXBwIGlzIGFscmVhZHkgYWN0aXZlAwkBAAAAASEAAAABCQEAAAAPY29udGFpbnNFbGVtZW50AAAAAgkABEwAAAACBQAAAAxhZG1pblB1YktleTEJAARMAAAAAgUAAAAMYWRtaW5QdWJLZXkyCQAETAAAAAIFAAAADGFkbWluUHViS2V5MwkABEwAAAACBQAAABRhZG1pblB1YktleVN0YXJ0U3RvcAUAAAADbmlsCAUAAAABaQAAAA9jYWxsZXJQdWJsaWNLZXkJAAACAAAAAQIAAAAhT25seSBhZG1pbiBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uCQAETAAAAAIJAQAAAAxCb29sZWFuRW50cnkAAAACBQAAAAlrZXlBY3RpdmUGCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEFAAAACGtleUNhdXNlBQAAAANuaWwAAAABAAAAAnR4AQAAAAZ2ZXJpZnkAAAAABAAAABJhZG1pblB1YktleTFTaWduZWQDCQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAAUAAAAMYWRtaW5QdWJLZXkxAAAAAAAAAAABAAAAAAAAAAAABAAAABJhZG1pblB1YktleTJTaWduZWQDCQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAQUAAAAMYWRtaW5QdWJLZXkyAAAAAAAAAAABAAAAAAAAAAAABAAAABJhZG1pblB1YktleTNTaWduZWQDCQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAgUAAAAMYWRtaW5QdWJLZXkzAAAAAAAAAAABAAAAAAAAAAAACQAAZwAAAAIJAABkAAAAAgkAAGQAAAACBQAAABJhZG1pblB1YktleTFTaWduZWQFAAAAEmFkbWluUHViS2V5MlNpZ25lZAUAAAASYWRtaW5QdWJLZXkzU2lnbmVkAAAAAAAAAAACwDoSYg==", "height": 1568265, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: CM4ztN1EiadtH8XvwuHp8baLByXTLu1aVeCuq7fANoDd Next: sqmkUDBCZbMpNBmhcE8cZXs84DFAUBQfe1iiv3tuW5Q Diff:
OldNewDifferences
11 {-# STDLIB_VERSION 4 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let adminPubKey1 = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
4+let adminPubKey1 = base58'DXDY2itiEcYBtGkVLnkpHtDFyWQUkoLJz79uJ7ECbMrA'
55
6-let adminPubKey2 = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
6+let adminPubKey2 = base58'E6Wa1SGoktYcjHjsKrvjMiqJY3SWmGKcD8Q5L8kxSPS7'
77
8-let adminPubKey3 = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
8+let adminPubKey3 = base58'AZmWJtuy4GeVrMmJH4hfFBRApe1StvhJSk4jcbT6bArQ'
99
10-let adminPubKeyStartStop = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
10+let adminPubKeyStartStop = base58'EtVkT6ed8GtbUiVVEqdmEqsp2J4qbb3rre2HFgxeVYdg'
1111
12-let adminPubKeyWallet = base58'5CqqMkmtXXt35KRH9LdWA3ap6TffPvTT5SHQzYrVFbBw'
12+let adminPubKeyWallet = base58'GTY8yEJ2S4heRompxyvbJoBN1Td5BM5Pp4JgVbj9tmCw'
1313
1414 let keyActive = "active"
1515
7979
8080 let isActive = valueOrElse(getBoolean(this, keyActive), true)
8181
82-let farmingSWOPAddress = Address(base58'3MsxHxruYWoddB4HRiPBYAWtMXMtCF1V9XT')
82+let farmingSWOPAddress = Address(base58'3P73HDkPqG15nLXevjCbmXtazHYTZbpPoPw')
8383
84-let votingLiteContract = Address(base58'3MrJgdL1GniipErHy44YF9idzLaUL2iX5DQ')
84+let votingLiteContract = Address(base58'3PQZWxShKGRgBN1qoJw6B4s9YWS9FneZTPg')
8585
86-let votingForNewPool = Address(base58'3Mzgi6deFV8CyF2nqbWSBkqba5JaD42EXyb')
86+let votingForNewPool = Address(base58'3PHgHf5C4WvHJucSHrjoVnMFsP1EhWffVLt')
8787
8888 let keySWOPid = "SWOP_id"
8989
174174
175175
176176 func getUserVoteInfo (user) = {
177- let $t060726623 = if (isDefined(getString(votingLiteContract, (toString(user) + kUserTotalStruc))))
177+ let $t059516502 = 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 = $t060726623._1
187- let userUnvoted = $t060726623._2
188- let userUnvotedPeriod = $t060726623._3
186+ let userTotalVoteSWOP = $t059516502._1
187+ let userUnvoted = $t059516502._2
188+ let userUnvotedPeriod = $t059516502._3
189189 let userUnvotedActual = if ((userUnvotedPeriod == currVotingPeriod))
190190 then userUnvoted
191191 else 0
202202 func getPoolUpdateHeight (pool) = valueOrElse(getInteger(this, (pool + keyHeightPoolFraction)), 0)
203203
204204
205-func getCurPoolWeight (pool) = valueOrElse(getIntegerValue(this, (pool + keyRewardPoolFractionCurrent)), 0)
205+func isDefinePoolUpdateHeight (pool) = isDefined(getInteger(this, (pool + keyHeightPoolFraction)))
206+
207+
208+func getCurPoolWeight (pool) = valueOrElse(getInteger(this, (pool + keyRewardPoolFractionCurrent)), 0)
206209
207210
208211 func getVoteOptionAmount (user,voteName,option) = {
244247
245248 func claimCalc (caller) = {
246249 let lastInterest = getLastInterestInfo()
247- let $t087288808 = getUserInterestInfo(caller, lastInterest)
248- let userLastInterest = $t087288808._1
249- let userSWOPLocked = $t087288808._2
250+ let $t087548834 = getUserInterestInfo(caller, lastInterest)
251+ let userLastInterest = $t087548834._1
252+ let userSWOPLocked = $t087548834._2
250253 let claimAmount = fraction(userSWOPLocked, (lastInterest - userLastInterest), scaleValue)
251254 let userNewInterest = lastInterest
252255 $Tuple2(userNewInterest, claimAmount)
257260 func airDrop () = if (!(isActive))
258261 then throw("DApp is inactive at this moment")
259262 else {
260- let $t090739148 = $Tuple2(i.payments[0].amount, i.payments[0].assetId)
261- let pmtAmount = $t090739148._1
262- let pmtAssetId = $t090739148._2
263+ let $t090999174 = $Tuple2(i.payments[0].amount, i.payments[0].assetId)
264+ let pmtAmount = $t090999174._1
265+ let pmtAssetId = $t090999174._2
263266 if ((pmtAssetId != SWOP))
264267 then throw("Incorrect pmtAssetId")
265268 else {
276279 func lockSWOP () = if (!(isActive))
277280 then throw("DApp is inactive at this moment")
278281 else {
279- let $t095869661 = $Tuple2(i.payments[0].amount, i.payments[0].assetId)
280- let pmtAmount = $t095869661._1
281- let pmtAssetId = $t095869661._2
282+ let $t096129687 = $Tuple2(i.payments[0].amount, i.payments[0].assetId)
283+ let pmtAmount = $t096129687._1
284+ let pmtAssetId = $t096129687._2
282285 if ((pmtAssetId != SWOP))
283286 then throw("Incorrect pmtAssetId")
284287 else {
285288 let lastInterest = getLastInterestInfo()
286- let $t097779859 = getUserInterestInfo(i.caller, lastInterest)
287- let userLastInterest = $t097779859._1
288- let userSWOPLocked = $t097779859._2
289+ let $t098039885 = getUserInterestInfo(i.caller, lastInterest)
290+ let userLastInterest = $t098039885._1
291+ let userSWOPLocked = $t098039885._2
289292 let claimAmount = fraction(userSWOPLocked, (lastInterest - userLastInterest), scaleValue)
290293 let userSWOPLockedNew = ((userSWOPLocked + pmtAmount) + claimAmount)
291294 let userNewInterest = lastInterest
307310 else {
308311 let totalSWOPLocked = getTotalSWOPLocked()
309312 let userSWOPLocked = getUserSWOPLocked(i.caller)
310- let $t01100911064 = claimCalc(i.caller)
311- let userNewInterest = $t01100911064._1
312- let claimAmount = $t01100911064._2
313- let $t01106911134 = getUserVoteInfo(i.caller)
314- let userVoteAmount = $t01106911134._1
315- let userUnvoteAmount = $t01106911134._2
313+ let $t01103511090 = claimCalc(i.caller)
314+ let userNewInterest = $t01103511090._1
315+ let claimAmount = $t01103511090._2
316+ let $t01109511160 = getUserVoteInfo(i.caller)
317+ let userVoteAmount = $t01109511160._1
318+ let userUnvoteAmount = $t01109511160._2
316319 let userVoteAmountForNewPool = getUserTotalVoteForNewPoolAmount(i.caller)
317320 if (if (if ((0 > userUnvoteAmount))
318321 then true
341344 then throw("DApp is inactive at this moment")
342345 else {
343346 let lastInterest = getLastInterestInfo()
344- let $t01250912564 = claimCalc(i.caller)
345- let userNewInterest = $t01250912564._1
346- let claimAmount = $t01250912564._2
347+ let $t01253512590 = claimCalc(i.caller)
348+ let userNewInterest = $t01253512590._1
349+ let claimAmount = $t01253512590._2
347350 let userClaimedAmount = getUserSWOPClaimedAmount(i.caller)
348351 let userClaimedAmountNew = (userClaimedAmount + claimAmount)
349352 if ((claimAmount == 0))
360363 let totalSWOPLocked = getTotalSWOPLocked()
361364 let userSWOPLocked = getUserSWOPLocked(i.caller)
362365 let lastInterest = getLastInterestInfo()
363- let $t01334313398 = claimCalc(i.caller)
364- let userNewInterest = $t01334313398._1
365- let claimAmount = $t01334313398._2
366+ let $t01336913424 = claimCalc(i.caller)
367+ let userNewInterest = $t01336913424._1
368+ let claimAmount = $t01336913424._2
366369 let userSWOPLockedNew = (userSWOPLocked + claimAmount)
367370 let totalSWOPLockedNew = (totalSWOPLocked + claimAmount)
368371 let userClaimedAmount = getUserSWOPClaimedAmount(i.caller)
379382 then throw("DApp is inactive at this moment")
380383 else {
381384 let amountPools = 10
382- let totalRewardUpdateHeight = valueOrElse(getIntegerValue(this, keyRewardUpdateHeight), 0)
385+ let totalRewardUpdateHeight = valueOrElse(getInteger(this, keyRewardUpdateHeight), 0)
383386 if (!(containsElement([adminPubKey1, adminPubKey2, adminPubKey3, adminPubKeyStartStop, adminPubKeyWallet], i.callerPublicKey)))
384387 then throw("Only admin can call this function")
385388 else if (if ((size(previousPools) > amountPools))
387390 else (size(currentPools) > amountPools))
388391 then throw(("Max amount of pool is " + toString(amountPools)))
389392 else if ((totalRewardUpdateHeight >= rewardUpdateHeight))
390- then throw(((("rewardUpdateHeight <= totalRewardUpdateHeight; rewardUpdateHeight: " + toString(rewardUpdateHeight)) + "; totalRewardUpdateHeight: ") + toString(totalRewardUpdateHeight)))
393+ then throw("rewardUpdateHeight <= totalRewardUpdateHeight")
391394 else if ((height >= rewardUpdateHeight))
392395 then throw("height >= rewardUpdateHeight")
393396 else if ((0 >= rewardUpdateHeight))
397400
398401 func changePreviousRewardEntry (accumulated,pool) = {
399402 let poolRewardUpdateHeight = getPoolUpdateHeight(pool)
400- if ((rewardUpdateHeight != poolRewardUpdateHeight))
401- then if ((poolRewardUpdateHeight == totalRewardUpdateHeight))
402- then {
403- let poolReward = getCurPoolWeight(pool)
403+ if (!(isDefinePoolUpdateHeight(pool)))
404+ then {
405+ let poolReward = getCurPoolWeight(pool)
404406 IntegerEntry((pool + keyRewardPoolFractionPrevious), poolReward) :: accumulated
405- }
407+ }
408+ else if ((rewardUpdateHeight != poolRewardUpdateHeight))
409+ then if ((poolRewardUpdateHeight == totalRewardUpdateHeight))
410+ then {
411+ let poolReward = getCurPoolWeight(pool)
412+IntegerEntry((pool + keyRewardPoolFractionPrevious), poolReward) :: accumulated
413+ }
414+ else nil
406415 else nil
407- else nil
408416 }
409417
410418 func changeCurrentRewardEntry (accumulated,pool) = {
424432 then if (if ((prevTempSum > totalVoteShare))
425433 then true
426434 else (curTempSum > totalVoteShare))
427- then throw(((((("sumRewardPrevious > totalVoteShare or sumRewardCurrent > totalVoteShare: " + toString(pagination)) + " ") + toString(prevTempSum)) + " ") + toString(curTempSum)))
435+ then throw(((((("sumRewardPrevious > totalVoteShare or sumRewardCurrent > totalVoteShare - " + toString(pagination)) + " ") + toString(prevTempSum)) + " ") + toString(curTempSum)))
428436 else $Tuple3([IntegerEntry(keyTempPrevSum, prevTempSum)], [IntegerEntry(keyTempCurSum, curTempSum)], [IntegerEntry(keyRewardUpdateFirstPaginationHeight, rewardUpdateHeight)])
429437 else if ((pagination == 1))
430438 then {
434442 if (if (((prevTempSum + prevTempSumFromKey) > totalVoteShare))
435443 then true
436444 else ((curTempSum + curTempSumFromKey) > totalVoteShare))
437- then throw(((((("sumRewardPrevious > totalVoteShare or sumRewardCurrent > totalVoteShare: " + toString(pagination)) + " ") + toString((prevTempSum + prevTempSumFromKey))) + " ") + toString((curTempSum + curTempSumFromKey))))
445+ then throw(((((("sumRewardPrevious > totalVoteShare or sumRewardCurrent > totalVoteShare - " + toString(pagination)) + " ") + toString((prevTempSum + prevTempSumFromKey))) + " ") + toString((curTempSum + curTempSumFromKey))))
438446 else if ((rewardUpdateHeightFirstPaginationEntry != rewardUpdateHeight))
439- then throw(((("current rewardUpdateHeight != rewardUpdateHeightFirstPaginationEntry; rewardUpdateHeight: " + toString(rewardUpdateHeight)) + " rewardUpdateHeightFirstPaginationEntry: ") + toString(rewardUpdateHeightFirstPaginationEntry)))
447+ then throw("current rewardUpdateHeight != rewardUpdateHeightFirstPaginationEntry")
440448 else $Tuple3([IntegerEntry(keyTempPrevSum, (prevTempSum + prevTempSumFromKey))], [IntegerEntry(keyTempCurSum, (curTempSum + curTempSumFromKey))], nil)
441449 }
442450 else if ((pagination == 2))
447455 if (if ((prevSum != totalVoteShare))
448456 then true
449457 else (curSum != totalVoteShare))
450- then throw(((("sumRewardPrevious != totalVoteShare or sumRewardCurrent != totalVoteShare; sumRewardPrevious: " + toString(prevSum)) + "; sumRewardCurrent:") + toString(curSum)))
458+ then throw("sumRewardPrevious != totalVoteShare or sumRewardCurrent != totalVoteShare")
451459 else if ((rewardUpdateHeightFirstPaginationEntry != rewardUpdateHeight))
452- then throw(((("current rewardUpdateHeight != rewardUpdateHeightFirstPaginationEntry; rewardUpdateHeight: " + toString(rewardUpdateHeight)) + " rewardUpdateHeightFirstPaginationEntry: ") + toString(rewardUpdateHeightFirstPaginationEntry)))
460+ then throw("current rewardUpdateHeight != rewardUpdateHeightFirstPaginationEntry")
453461 else $Tuple3([IntegerEntry(keyTempPrevSum, prevSum)], [IntegerEntry(keyTempCurSum, curSum)], nil)
454462 }
455- else throw(("Incorrect pagination: " + toString(pagination)))
463+ else throw("Incorrect pagination")
456464
457465 let sumRewardPreviousTemp = {
458- let $list1935719390 = previousRewards
459- let $size1935719390 = size($list1935719390)
460- let $acc01935719390 = 0
461- if (($size1935719390 == 0))
462- then $acc01935719390
466+ let $list1901419047 = previousRewards
467+ let $size1901419047 = size($list1901419047)
468+ let $acc01901419047 = 0
469+ if (($size1901419047 == 0))
470+ then $acc01901419047
463471 else {
464- let $acc11935719390 = sum($acc01935719390, $list1935719390[0])
465- if (($size1935719390 == 1))
466- then $acc11935719390
472+ let $acc11901419047 = sum($acc01901419047, $list1901419047[0])
473+ if (($size1901419047 == 1))
474+ then $acc11901419047
467475 else {
468- let $acc21935719390 = sum($acc11935719390, $list1935719390[1])
469- if (($size1935719390 == 2))
470- then $acc21935719390
476+ let $acc21901419047 = sum($acc11901419047, $list1901419047[1])
477+ if (($size1901419047 == 2))
478+ then $acc21901419047
471479 else {
472- let $acc31935719390 = sum($acc21935719390, $list1935719390[2])
473- if (($size1935719390 == 3))
474- then $acc31935719390
480+ let $acc31901419047 = sum($acc21901419047, $list1901419047[2])
481+ if (($size1901419047 == 3))
482+ then $acc31901419047
475483 else {
476- let $acc41935719390 = sum($acc31935719390, $list1935719390[3])
477- if (($size1935719390 == 4))
478- then $acc41935719390
484+ let $acc41901419047 = sum($acc31901419047, $list1901419047[3])
485+ if (($size1901419047 == 4))
486+ then $acc41901419047
479487 else {
480- let $acc51935719390 = sum($acc41935719390, $list1935719390[4])
481- if (($size1935719390 == 5))
482- then $acc51935719390
488+ let $acc51901419047 = sum($acc41901419047, $list1901419047[4])
489+ if (($size1901419047 == 5))
490+ then $acc51901419047
483491 else {
484- let $acc61935719390 = sum($acc51935719390, $list1935719390[5])
485- if (($size1935719390 == 6))
486- then $acc61935719390
492+ let $acc61901419047 = sum($acc51901419047, $list1901419047[5])
493+ if (($size1901419047 == 6))
494+ then $acc61901419047
487495 else {
488- let $acc71935719390 = sum($acc61935719390, $list1935719390[6])
489- if (($size1935719390 == 7))
490- then $acc71935719390
496+ let $acc71901419047 = sum($acc61901419047, $list1901419047[6])
497+ if (($size1901419047 == 7))
498+ then $acc71901419047
491499 else {
492- let $acc81935719390 = sum($acc71935719390, $list1935719390[7])
493- if (($size1935719390 == 8))
494- then $acc81935719390
500+ let $acc81901419047 = sum($acc71901419047, $list1901419047[7])
501+ if (($size1901419047 == 8))
502+ then $acc81901419047
495503 else {
496- let $acc91935719390 = sum($acc81935719390, $list1935719390[8])
497- if (($size1935719390 == 9))
498- then $acc91935719390
504+ let $acc91901419047 = sum($acc81901419047, $list1901419047[8])
505+ if (($size1901419047 == 9))
506+ then $acc91901419047
499507 else {
500- let $acc101935719390 = sum($acc91935719390, $list1935719390[9])
501- if (($size1935719390 == 10))
502- then $acc101935719390
508+ let $acc101901419047 = sum($acc91901419047, $list1901419047[9])
509+ if (($size1901419047 == 10))
510+ then $acc101901419047
503511 else {
504- let $acc111935719390 = sum($acc101935719390, $list1935719390[10])
512+ let $acc111901419047 = sum($acc101901419047, $list1901419047[10])
505513 throw("List size exceed 10")
506514 }
507515 }
516524 }
517525 }
518526 let sumRewardCurrentTemp = {
519- let $list1942319455 = currentRewards
520- let $size1942319455 = size($list1942319455)
521- let $acc01942319455 = 0
522- if (($size1942319455 == 0))
523- then $acc01942319455
527+ let $list1908019112 = currentRewards
528+ let $size1908019112 = size($list1908019112)
529+ let $acc01908019112 = 0
530+ if (($size1908019112 == 0))
531+ then $acc01908019112
524532 else {
525- let $acc11942319455 = sum($acc01942319455, $list1942319455[0])
526- if (($size1942319455 == 1))
527- then $acc11942319455
533+ let $acc11908019112 = sum($acc01908019112, $list1908019112[0])
534+ if (($size1908019112 == 1))
535+ then $acc11908019112
528536 else {
529- let $acc21942319455 = sum($acc11942319455, $list1942319455[1])
530- if (($size1942319455 == 2))
531- then $acc21942319455
537+ let $acc21908019112 = sum($acc11908019112, $list1908019112[1])
538+ if (($size1908019112 == 2))
539+ then $acc21908019112
532540 else {
533- let $acc31942319455 = sum($acc21942319455, $list1942319455[2])
534- if (($size1942319455 == 3))
535- then $acc31942319455
541+ let $acc31908019112 = sum($acc21908019112, $list1908019112[2])
542+ if (($size1908019112 == 3))
543+ then $acc31908019112
536544 else {
537- let $acc41942319455 = sum($acc31942319455, $list1942319455[3])
538- if (($size1942319455 == 4))
539- then $acc41942319455
545+ let $acc41908019112 = sum($acc31908019112, $list1908019112[3])
546+ if (($size1908019112 == 4))
547+ then $acc41908019112
540548 else {
541- let $acc51942319455 = sum($acc41942319455, $list1942319455[4])
542- if (($size1942319455 == 5))
543- then $acc51942319455
549+ let $acc51908019112 = sum($acc41908019112, $list1908019112[4])
550+ if (($size1908019112 == 5))
551+ then $acc51908019112
544552 else {
545- let $acc61942319455 = sum($acc51942319455, $list1942319455[5])
546- if (($size1942319455 == 6))
547- then $acc61942319455
553+ let $acc61908019112 = sum($acc51908019112, $list1908019112[5])
554+ if (($size1908019112 == 6))
555+ then $acc61908019112
548556 else {
549- let $acc71942319455 = sum($acc61942319455, $list1942319455[6])
550- if (($size1942319455 == 7))
551- then $acc71942319455
557+ let $acc71908019112 = sum($acc61908019112, $list1908019112[6])
558+ if (($size1908019112 == 7))
559+ then $acc71908019112
552560 else {
553- let $acc81942319455 = sum($acc71942319455, $list1942319455[7])
554- if (($size1942319455 == 8))
555- then $acc81942319455
561+ let $acc81908019112 = sum($acc71908019112, $list1908019112[7])
562+ if (($size1908019112 == 8))
563+ then $acc81908019112
556564 else {
557- let $acc91942319455 = sum($acc81942319455, $list1942319455[8])
558- if (($size1942319455 == 9))
559- then $acc91942319455
565+ let $acc91908019112 = sum($acc81908019112, $list1908019112[8])
566+ if (($size1908019112 == 9))
567+ then $acc91908019112
560568 else {
561- let $acc101942319455 = sum($acc91942319455, $list1942319455[9])
562- if (($size1942319455 == 10))
563- then $acc101942319455
569+ let $acc101908019112 = sum($acc91908019112, $list1908019112[9])
570+ if (($size1908019112 == 10))
571+ then $acc101908019112
564572 else {
565- let $acc111942319455 = sum($acc101942319455, $list1942319455[10])
573+ let $acc111908019112 = sum($acc101908019112, $list1908019112[10])
566574 throw("List size exceed 10")
567575 }
568576 }
576584 }
577585 }
578586 }
579- let $t01946119614 = getSumReward(sumRewardPreviousTemp, sumRewardCurrentTemp, pagination)
580- let sumRewardPrevious = $t01946119614._1
581- let sumRewardCurrent = $t01946119614._2
582- let rewardUpdateHeightFirstPaginationEntry = $t01946119614._3
587+ let $t01911819271 = getSumReward(sumRewardPreviousTemp, sumRewardCurrentTemp, pagination)
588+ let sumRewardPrevious = $t01911819271._1
589+ let sumRewardCurrent = $t01911819271._2
590+ let rewardUpdateHeightFirstPaginationEntry = $t01911819271._3
583591 let rewardUpdateHeightEntry = if ((pagination == 2))
584592 then [IntegerEntry(keyRewardUpdateHeight, rewardUpdateHeight)]
585- else [IntegerEntry(keyRewardUpdateHeight, getIntegerValue(this, keyRewardUpdateHeight))]
593+ else nil
586594 if ((height > rewardUpdateHeight))
587595 then throw("rewardUpdateHeight < height")
588596 else {
589597 let previousRewardEntryNew = {
590- let $list1994319997 = previousPools
591- let $size1994319997 = size($list1994319997)
592- let $acc01994319997 = nil
593- if (($size1994319997 == 0))
594- then $acc01994319997
598+ let $list1952119575 = previousPools
599+ let $size1952119575 = size($list1952119575)
600+ let $acc01952119575 = nil
601+ if (($size1952119575 == 0))
602+ then $acc01952119575
595603 else {
596- let $acc11994319997 = changePreviousRewardEntry($acc01994319997, $list1994319997[0])
597- if (($size1994319997 == 1))
598- then $acc11994319997
604+ let $acc11952119575 = changePreviousRewardEntry($acc01952119575, $list1952119575[0])
605+ if (($size1952119575 == 1))
606+ then $acc11952119575
599607 else {
600- let $acc21994319997 = changePreviousRewardEntry($acc11994319997, $list1994319997[1])
601- if (($size1994319997 == 2))
602- then $acc21994319997
608+ let $acc21952119575 = changePreviousRewardEntry($acc11952119575, $list1952119575[1])
609+ if (($size1952119575 == 2))
610+ then $acc21952119575
603611 else {
604- let $acc31994319997 = changePreviousRewardEntry($acc21994319997, $list1994319997[2])
605- if (($size1994319997 == 3))
606- then $acc31994319997
612+ let $acc31952119575 = changePreviousRewardEntry($acc21952119575, $list1952119575[2])
613+ if (($size1952119575 == 3))
614+ then $acc31952119575
607615 else {
608- let $acc41994319997 = changePreviousRewardEntry($acc31994319997, $list1994319997[3])
609- if (($size1994319997 == 4))
610- then $acc41994319997
616+ let $acc41952119575 = changePreviousRewardEntry($acc31952119575, $list1952119575[3])
617+ if (($size1952119575 == 4))
618+ then $acc41952119575
611619 else {
612- let $acc51994319997 = changePreviousRewardEntry($acc41994319997, $list1994319997[4])
613- if (($size1994319997 == 5))
614- then $acc51994319997
620+ let $acc51952119575 = changePreviousRewardEntry($acc41952119575, $list1952119575[4])
621+ if (($size1952119575 == 5))
622+ then $acc51952119575
615623 else {
616- let $acc61994319997 = changePreviousRewardEntry($acc51994319997, $list1994319997[5])
617- if (($size1994319997 == 6))
618- then $acc61994319997
624+ let $acc61952119575 = changePreviousRewardEntry($acc51952119575, $list1952119575[5])
625+ if (($size1952119575 == 6))
626+ then $acc61952119575
619627 else {
620- let $acc71994319997 = changePreviousRewardEntry($acc61994319997, $list1994319997[6])
621- if (($size1994319997 == 7))
622- then $acc71994319997
628+ let $acc71952119575 = changePreviousRewardEntry($acc61952119575, $list1952119575[6])
629+ if (($size1952119575 == 7))
630+ then $acc71952119575
623631 else {
624- let $acc81994319997 = changePreviousRewardEntry($acc71994319997, $list1994319997[7])
625- if (($size1994319997 == 8))
626- then $acc81994319997
632+ let $acc81952119575 = changePreviousRewardEntry($acc71952119575, $list1952119575[7])
633+ if (($size1952119575 == 8))
634+ then $acc81952119575
627635 else {
628- let $acc91994319997 = changePreviousRewardEntry($acc81994319997, $list1994319997[8])
629- if (($size1994319997 == 9))
630- then $acc91994319997
636+ let $acc91952119575 = changePreviousRewardEntry($acc81952119575, $list1952119575[8])
637+ if (($size1952119575 == 9))
638+ then $acc91952119575
631639 else {
632- let $acc101994319997 = changePreviousRewardEntry($acc91994319997, $list1994319997[9])
633- if (($size1994319997 == 10))
634- then $acc101994319997
640+ let $acc101952119575 = changePreviousRewardEntry($acc91952119575, $list1952119575[9])
641+ if (($size1952119575 == 10))
642+ then $acc101952119575
635643 else {
636- let $acc111994319997 = changePreviousRewardEntry($acc101994319997, $list1994319997[10])
644+ let $acc111952119575 = changePreviousRewardEntry($acc101952119575, $list1952119575[10])
637645 throw("List size exceed 10")
638646 }
639647 }
648656 }
649657 }
650658 let currentRewardEntryNew = {
651- let $list2003020082 = currentPools
652- let $size2003020082 = size($list2003020082)
653- let $acc02003020082 = nil
654- if (($size2003020082 == 0))
655- then $acc02003020082
659+ let $list1960819660 = currentPools
660+ let $size1960819660 = size($list1960819660)
661+ let $acc01960819660 = nil
662+ if (($size1960819660 == 0))
663+ then $acc01960819660
656664 else {
657- let $acc12003020082 = changeCurrentRewardEntry($acc02003020082, $list2003020082[0])
658- if (($size2003020082 == 1))
659- then $acc12003020082
665+ let $acc11960819660 = changeCurrentRewardEntry($acc01960819660, $list1960819660[0])
666+ if (($size1960819660 == 1))
667+ then $acc11960819660
660668 else {
661- let $acc22003020082 = changeCurrentRewardEntry($acc12003020082, $list2003020082[1])
662- if (($size2003020082 == 2))
663- then $acc22003020082
669+ let $acc21960819660 = changeCurrentRewardEntry($acc11960819660, $list1960819660[1])
670+ if (($size1960819660 == 2))
671+ then $acc21960819660
664672 else {
665- let $acc32003020082 = changeCurrentRewardEntry($acc22003020082, $list2003020082[2])
666- if (($size2003020082 == 3))
667- then $acc32003020082
673+ let $acc31960819660 = changeCurrentRewardEntry($acc21960819660, $list1960819660[2])
674+ if (($size1960819660 == 3))
675+ then $acc31960819660
668676 else {
669- let $acc42003020082 = changeCurrentRewardEntry($acc32003020082, $list2003020082[3])
670- if (($size2003020082 == 4))
671- then $acc42003020082
677+ let $acc41960819660 = changeCurrentRewardEntry($acc31960819660, $list1960819660[3])
678+ if (($size1960819660 == 4))
679+ then $acc41960819660
672680 else {
673- let $acc52003020082 = changeCurrentRewardEntry($acc42003020082, $list2003020082[4])
674- if (($size2003020082 == 5))
675- then $acc52003020082
681+ let $acc51960819660 = changeCurrentRewardEntry($acc41960819660, $list1960819660[4])
682+ if (($size1960819660 == 5))
683+ then $acc51960819660
676684 else {
677- let $acc62003020082 = changeCurrentRewardEntry($acc52003020082, $list2003020082[5])
678- if (($size2003020082 == 6))
679- then $acc62003020082
685+ let $acc61960819660 = changeCurrentRewardEntry($acc51960819660, $list1960819660[5])
686+ if (($size1960819660 == 6))
687+ then $acc61960819660
680688 else {
681- let $acc72003020082 = changeCurrentRewardEntry($acc62003020082, $list2003020082[6])
682- if (($size2003020082 == 7))
683- then $acc72003020082
689+ let $acc71960819660 = changeCurrentRewardEntry($acc61960819660, $list1960819660[6])
690+ if (($size1960819660 == 7))
691+ then $acc71960819660
684692 else {
685- let $acc82003020082 = changeCurrentRewardEntry($acc72003020082, $list2003020082[7])
686- if (($size2003020082 == 8))
687- then $acc82003020082
693+ let $acc81960819660 = changeCurrentRewardEntry($acc71960819660, $list1960819660[7])
694+ if (($size1960819660 == 8))
695+ then $acc81960819660
688696 else {
689- let $acc92003020082 = changeCurrentRewardEntry($acc82003020082, $list2003020082[8])
690- if (($size2003020082 == 9))
691- then $acc92003020082
697+ let $acc91960819660 = changeCurrentRewardEntry($acc81960819660, $list1960819660[8])
698+ if (($size1960819660 == 9))
699+ then $acc91960819660
692700 else {
693- let $acc102003020082 = changeCurrentRewardEntry($acc92003020082, $list2003020082[9])
694- if (($size2003020082 == 10))
695- then $acc102003020082
701+ let $acc101960819660 = changeCurrentRewardEntry($acc91960819660, $list1960819660[9])
702+ if (($size1960819660 == 10))
703+ then $acc101960819660
696704 else {
697- let $acc112003020082 = changeCurrentRewardEntry($acc102003020082, $list2003020082[10])
705+ let $acc111960819660 = changeCurrentRewardEntry($acc101960819660, $list1960819660[10])
698706 throw("List size exceed 10")
699707 }
700708 }
709717 }
710718 }
711719 let heightEntryNewCur = {
712- let $list2011120156 = currentPools
713- let $size2011120156 = size($list2011120156)
714- let $acc02011120156 = nil
715- if (($size2011120156 == 0))
716- then $acc02011120156
720+ let $list1968919734 = currentPools
721+ let $size1968919734 = size($list1968919734)
722+ let $acc01968919734 = nil
723+ if (($size1968919734 == 0))
724+ then $acc01968919734
717725 else {
718- let $acc12011120156 = changeHeightEntry($acc02011120156, $list2011120156[0])
719- if (($size2011120156 == 1))
720- then $acc12011120156
726+ let $acc11968919734 = changeHeightEntry($acc01968919734, $list1968919734[0])
727+ if (($size1968919734 == 1))
728+ then $acc11968919734
721729 else {
722- let $acc22011120156 = changeHeightEntry($acc12011120156, $list2011120156[1])
723- if (($size2011120156 == 2))
724- then $acc22011120156
730+ let $acc21968919734 = changeHeightEntry($acc11968919734, $list1968919734[1])
731+ if (($size1968919734 == 2))
732+ then $acc21968919734
725733 else {
726- let $acc32011120156 = changeHeightEntry($acc22011120156, $list2011120156[2])
727- if (($size2011120156 == 3))
728- then $acc32011120156
734+ let $acc31968919734 = changeHeightEntry($acc21968919734, $list1968919734[2])
735+ if (($size1968919734 == 3))
736+ then $acc31968919734
729737 else {
730- let $acc42011120156 = changeHeightEntry($acc32011120156, $list2011120156[3])
731- if (($size2011120156 == 4))
732- then $acc42011120156
738+ let $acc41968919734 = changeHeightEntry($acc31968919734, $list1968919734[3])
739+ if (($size1968919734 == 4))
740+ then $acc41968919734
733741 else {
734- let $acc52011120156 = changeHeightEntry($acc42011120156, $list2011120156[4])
735- if (($size2011120156 == 5))
736- then $acc52011120156
742+ let $acc51968919734 = changeHeightEntry($acc41968919734, $list1968919734[4])
743+ if (($size1968919734 == 5))
744+ then $acc51968919734
737745 else {
738- let $acc62011120156 = changeHeightEntry($acc52011120156, $list2011120156[5])
739- if (($size2011120156 == 6))
740- then $acc62011120156
746+ let $acc61968919734 = changeHeightEntry($acc51968919734, $list1968919734[5])
747+ if (($size1968919734 == 6))
748+ then $acc61968919734
741749 else {
742- let $acc72011120156 = changeHeightEntry($acc62011120156, $list2011120156[6])
743- if (($size2011120156 == 7))
744- then $acc72011120156
750+ let $acc71968919734 = changeHeightEntry($acc61968919734, $list1968919734[6])
751+ if (($size1968919734 == 7))
752+ then $acc71968919734
745753 else {
746- let $acc82011120156 = changeHeightEntry($acc72011120156, $list2011120156[7])
747- if (($size2011120156 == 8))
748- then $acc82011120156
754+ let $acc81968919734 = changeHeightEntry($acc71968919734, $list1968919734[7])
755+ if (($size1968919734 == 8))
756+ then $acc81968919734
749757 else {
750- let $acc92011120156 = changeHeightEntry($acc82011120156, $list2011120156[8])
751- if (($size2011120156 == 9))
752- then $acc92011120156
758+ let $acc91968919734 = changeHeightEntry($acc81968919734, $list1968919734[8])
759+ if (($size1968919734 == 9))
760+ then $acc91968919734
753761 else {
754- let $acc102011120156 = changeHeightEntry($acc92011120156, $list2011120156[9])
755- if (($size2011120156 == 10))
756- then $acc102011120156
762+ let $acc101968919734 = changeHeightEntry($acc91968919734, $list1968919734[9])
763+ if (($size1968919734 == 10))
764+ then $acc101968919734
757765 else {
758- let $acc112011120156 = changeHeightEntry($acc102011120156, $list2011120156[10])
766+ let $acc111968919734 = changeHeightEntry($acc101968919734, $list1968919734[10])
759767 throw("List size exceed 10")
760768 }
761769 }
794802
795803
796804 @Verifier(tx)
797-func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
805+func verify () = {
806+ let adminPubKey1Signed = if (sigVerify(tx.bodyBytes, tx.proofs[0], adminPubKey1))
807+ then 1
808+ else 0
809+ let adminPubKey2Signed = if (sigVerify(tx.bodyBytes, tx.proofs[1], adminPubKey2))
810+ then 1
811+ else 0
812+ let adminPubKey3Signed = if (sigVerify(tx.bodyBytes, tx.proofs[2], adminPubKey3))
813+ then 1
814+ else 0
815+ (((adminPubKey1Signed + adminPubKey2Signed) + adminPubKey3Signed) >= 2)
816+ }
798817
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 4 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let adminPubKey1 = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
4+let adminPubKey1 = base58'DXDY2itiEcYBtGkVLnkpHtDFyWQUkoLJz79uJ7ECbMrA'
55
6-let adminPubKey2 = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
6+let adminPubKey2 = base58'E6Wa1SGoktYcjHjsKrvjMiqJY3SWmGKcD8Q5L8kxSPS7'
77
8-let adminPubKey3 = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
8+let adminPubKey3 = base58'AZmWJtuy4GeVrMmJH4hfFBRApe1StvhJSk4jcbT6bArQ'
99
10-let adminPubKeyStartStop = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
10+let adminPubKeyStartStop = base58'EtVkT6ed8GtbUiVVEqdmEqsp2J4qbb3rre2HFgxeVYdg'
1111
12-let adminPubKeyWallet = base58'5CqqMkmtXXt35KRH9LdWA3ap6TffPvTT5SHQzYrVFbBw'
12+let adminPubKeyWallet = base58'GTY8yEJ2S4heRompxyvbJoBN1Td5BM5Pp4JgVbj9tmCw'
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
82-let farmingSWOPAddress = Address(base58'3MsxHxruYWoddB4HRiPBYAWtMXMtCF1V9XT')
82+let farmingSWOPAddress = Address(base58'3P73HDkPqG15nLXevjCbmXtazHYTZbpPoPw')
8383
84-let votingLiteContract = Address(base58'3MrJgdL1GniipErHy44YF9idzLaUL2iX5DQ')
84+let votingLiteContract = Address(base58'3PQZWxShKGRgBN1qoJw6B4s9YWS9FneZTPg')
8585
86-let votingForNewPool = Address(base58'3Mzgi6deFV8CyF2nqbWSBkqba5JaD42EXyb')
86+let votingForNewPool = Address(base58'3PHgHf5C4WvHJucSHrjoVnMFsP1EhWffVLt')
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 $t060726623 = if (isDefined(getString(votingLiteContract, (toString(user) + kUserTotalStruc))))
177+ let $t059516502 = 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 = $t060726623._1
187- let userUnvoted = $t060726623._2
188- let userUnvotedPeriod = $t060726623._3
186+ let userTotalVoteSWOP = $t059516502._1
187+ let userUnvoted = $t059516502._2
188+ let userUnvotedPeriod = $t059516502._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)
200200
201201
202202 func getPoolUpdateHeight (pool) = valueOrElse(getInteger(this, (pool + keyHeightPoolFraction)), 0)
203203
204204
205-func getCurPoolWeight (pool) = valueOrElse(getIntegerValue(this, (pool + keyRewardPoolFractionCurrent)), 0)
205+func isDefinePoolUpdateHeight (pool) = isDefined(getInteger(this, (pool + keyHeightPoolFraction)))
206+
207+
208+func getCurPoolWeight (pool) = valueOrElse(getInteger(this, (pool + keyRewardPoolFractionCurrent)), 0)
206209
207210
208211 func getVoteOptionAmount (user,voteName,option) = {
209212 let userVoteOptionAmount = getInteger(this, (((voteName + option) + toString(user)) + keyUserVoteOptionAmount))
210213 let uvoa = match userVoteOptionAmount {
211214 case uvoa: Int =>
212215 uvoa
213216 case uvoa: Unit =>
214217 0
215218 case _ =>
216219 throw("Match error")
217220 }
218221 valueOrErrorMessage(uvoa, (((("No data on the key: " + voteName) + option) + toString(user)) + keyUserVoteOptionAmount))
219222 }
220223
221224
222225 func getVoteDuration (voteName) = valueOrErrorMessage(getInteger(this, (voteName + keyVoteDuration)), (("No data on the key: " + voteName) + keyVoteDuration))
223226
224227
225228 func getTotalVoteOptionAmount (voteName,option) = {
226229 let totalVoteOptionAmount = getInteger(this, ((voteName + option) + keyTotalVoteOptionAmount))
227230 let tvoa = match totalVoteOptionAmount {
228231 case tvoa: Int =>
229232 tvoa
230233 case tvoa: Unit =>
231234 0
232235 case _ =>
233236 throw("Match error")
234237 }
235238 tvoa
236239 }
237240
238241
239242 func getUserGetBackAmount (voteName,option,user,getBackSWOPHeight) = {
240243 let key = ((((((voteName + "_") + option) + "_") + toString(user)) + "_") + toString(getBackSWOPHeight))
241244 valueOrErrorMessage(getInteger(this, key), ("No data on the key: " + key))
242245 }
243246
244247
245248 func claimCalc (caller) = {
246249 let lastInterest = getLastInterestInfo()
247- let $t087288808 = getUserInterestInfo(caller, lastInterest)
248- let userLastInterest = $t087288808._1
249- let userSWOPLocked = $t087288808._2
250+ let $t087548834 = getUserInterestInfo(caller, lastInterest)
251+ let userLastInterest = $t087548834._1
252+ let userSWOPLocked = $t087548834._2
250253 let claimAmount = fraction(userSWOPLocked, (lastInterest - userLastInterest), scaleValue)
251254 let userNewInterest = lastInterest
252255 $Tuple2(userNewInterest, claimAmount)
253256 }
254257
255258
256259 @Callable(i)
257260 func airDrop () = if (!(isActive))
258261 then throw("DApp is inactive at this moment")
259262 else {
260- let $t090739148 = $Tuple2(i.payments[0].amount, i.payments[0].assetId)
261- let pmtAmount = $t090739148._1
262- let pmtAssetId = $t090739148._2
263+ let $t090999174 = $Tuple2(i.payments[0].amount, i.payments[0].assetId)
264+ let pmtAmount = $t090999174._1
265+ let pmtAssetId = $t090999174._2
263266 if ((pmtAssetId != SWOP))
264267 then throw("Incorrect pmtAssetId")
265268 else {
266269 let totalSWOPLocked = getTotalSWOPLocked()
267270 let lastInterest = getLastInterestInfo()
268271 let interestNew = (lastInterest + fraction(pmtAmount, scaleValue, totalSWOPLocked))
269272 [IntegerEntry(keyLastInterest, interestNew)]
270273 }
271274 }
272275
273276
274277
275278 @Callable(i)
276279 func lockSWOP () = if (!(isActive))
277280 then throw("DApp is inactive at this moment")
278281 else {
279- let $t095869661 = $Tuple2(i.payments[0].amount, i.payments[0].assetId)
280- let pmtAmount = $t095869661._1
281- let pmtAssetId = $t095869661._2
282+ let $t096129687 = $Tuple2(i.payments[0].amount, i.payments[0].assetId)
283+ let pmtAmount = $t096129687._1
284+ let pmtAssetId = $t096129687._2
282285 if ((pmtAssetId != SWOP))
283286 then throw("Incorrect pmtAssetId")
284287 else {
285288 let lastInterest = getLastInterestInfo()
286- let $t097779859 = getUserInterestInfo(i.caller, lastInterest)
287- let userLastInterest = $t097779859._1
288- let userSWOPLocked = $t097779859._2
289+ let $t098039885 = getUserInterestInfo(i.caller, lastInterest)
290+ let userLastInterest = $t098039885._1
291+ let userSWOPLocked = $t098039885._2
289292 let claimAmount = fraction(userSWOPLocked, (lastInterest - userLastInterest), scaleValue)
290293 let userSWOPLockedNew = ((userSWOPLocked + pmtAmount) + claimAmount)
291294 let userNewInterest = lastInterest
292295 let totalSWOPLocked = getTotalSWOPLocked()
293296 let totalSWOPLockedNew = ((totalSWOPLocked + pmtAmount) + claimAmount)
294297 let userClaimedAmount = getUserSWOPClaimedAmount(i.caller)
295298 let userClaimedAmountNew = (userClaimedAmount + claimAmount)
296299 [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)]
297300 }
298301 }
299302
300303
301304
302305 @Callable(i)
303306 func withdrawSWOP (withdrawAmount) = if (!(isActive))
304307 then throw("DApp is inactive at this moment")
305308 else if ((0 >= withdrawAmount))
306309 then throw("withdrawAmount <= 0")
307310 else {
308311 let totalSWOPLocked = getTotalSWOPLocked()
309312 let userSWOPLocked = getUserSWOPLocked(i.caller)
310- let $t01100911064 = claimCalc(i.caller)
311- let userNewInterest = $t01100911064._1
312- let claimAmount = $t01100911064._2
313- let $t01106911134 = getUserVoteInfo(i.caller)
314- let userVoteAmount = $t01106911134._1
315- let userUnvoteAmount = $t01106911134._2
313+ let $t01103511090 = claimCalc(i.caller)
314+ let userNewInterest = $t01103511090._1
315+ let claimAmount = $t01103511090._2
316+ let $t01109511160 = getUserVoteInfo(i.caller)
317+ let userVoteAmount = $t01109511160._1
318+ let userUnvoteAmount = $t01109511160._2
316319 let userVoteAmountForNewPool = getUserTotalVoteForNewPoolAmount(i.caller)
317320 if (if (if ((0 > userUnvoteAmount))
318321 then true
319322 else (0 > userVoteAmount))
320323 then true
321324 else (0 > userVoteAmountForNewPool))
322325 then throw("userUnvoteAmount < 0 || userVoteAmount < 0 || userVoteAmountForNewPool < 0")
323326 else {
324327 let availableToUnstake = (userSWOPLocked - max([userVoteAmountForNewPool, (userVoteAmount + userUnvoteAmount)]))
325328 if ((withdrawAmount > availableToUnstake))
326329 then throw("withdrawAmount > availableToUnstake")
327330 else {
328331 let totalSWOPLockedNew = ((totalSWOPLocked + claimAmount) - withdrawAmount)
329332 let userSWOPamountNew = ((userSWOPLocked + claimAmount) - withdrawAmount)
330333 let userClaimedAmount = getUserSWOPClaimedAmount(i.caller)
331334 let userClaimedAmountNew = (userClaimedAmount + claimAmount)
332335 [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)]
333336 }
334337 }
335338 }
336339
337340
338341
339342 @Callable(i)
340343 func claimAndWithdrawSWOP () = if (!(isActive))
341344 then throw("DApp is inactive at this moment")
342345 else {
343346 let lastInterest = getLastInterestInfo()
344- let $t01250912564 = claimCalc(i.caller)
345- let userNewInterest = $t01250912564._1
346- let claimAmount = $t01250912564._2
347+ let $t01253512590 = claimCalc(i.caller)
348+ let userNewInterest = $t01253512590._1
349+ let claimAmount = $t01253512590._2
347350 let userClaimedAmount = getUserSWOPClaimedAmount(i.caller)
348351 let userClaimedAmountNew = (userClaimedAmount + claimAmount)
349352 if ((claimAmount == 0))
350353 then throw("You have 0 available SWOP")
351354 else [IntegerEntry((toString(i.caller) + keyUserLastInterest), userNewInterest), IntegerEntry((toString(i.caller) + keyUserSWOPClaimedAmount), userClaimedAmountNew), IntegerEntry((toString(i.caller) + keyUserSWOPLastClaimedAmount), claimAmount), ScriptTransfer(i.caller, claimAmount, SWOP)]
352355 }
353356
354357
355358
356359 @Callable(i)
357360 func claimAndStakeSWOP () = if (!(isActive))
358361 then throw("DApp is inactive at this moment")
359362 else {
360363 let totalSWOPLocked = getTotalSWOPLocked()
361364 let userSWOPLocked = getUserSWOPLocked(i.caller)
362365 let lastInterest = getLastInterestInfo()
363- let $t01334313398 = claimCalc(i.caller)
364- let userNewInterest = $t01334313398._1
365- let claimAmount = $t01334313398._2
366+ let $t01336913424 = claimCalc(i.caller)
367+ let userNewInterest = $t01336913424._1
368+ let claimAmount = $t01336913424._2
366369 let userSWOPLockedNew = (userSWOPLocked + claimAmount)
367370 let totalSWOPLockedNew = (totalSWOPLocked + claimAmount)
368371 let userClaimedAmount = getUserSWOPClaimedAmount(i.caller)
369372 let userClaimedAmountNew = (userClaimedAmount + claimAmount)
370373 if ((claimAmount == 0))
371374 then throw("You have 0 available SWOP")
372375 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)]
373376 }
374377
375378
376379
377380 @Callable(i)
378381 func updateWeights (previousPools,previousRewards,currentPools,currentRewards,rewardUpdateHeight,pagination) = if (!(isActive))
379382 then throw("DApp is inactive at this moment")
380383 else {
381384 let amountPools = 10
382- let totalRewardUpdateHeight = valueOrElse(getIntegerValue(this, keyRewardUpdateHeight), 0)
385+ let totalRewardUpdateHeight = valueOrElse(getInteger(this, keyRewardUpdateHeight), 0)
383386 if (!(containsElement([adminPubKey1, adminPubKey2, adminPubKey3, adminPubKeyStartStop, adminPubKeyWallet], i.callerPublicKey)))
384387 then throw("Only admin can call this function")
385388 else if (if ((size(previousPools) > amountPools))
386389 then true
387390 else (size(currentPools) > amountPools))
388391 then throw(("Max amount of pool is " + toString(amountPools)))
389392 else if ((totalRewardUpdateHeight >= rewardUpdateHeight))
390- then throw(((("rewardUpdateHeight <= totalRewardUpdateHeight; rewardUpdateHeight: " + toString(rewardUpdateHeight)) + "; totalRewardUpdateHeight: ") + toString(totalRewardUpdateHeight)))
393+ then throw("rewardUpdateHeight <= totalRewardUpdateHeight")
391394 else if ((height >= rewardUpdateHeight))
392395 then throw("height >= rewardUpdateHeight")
393396 else if ((0 >= rewardUpdateHeight))
394397 then throw("0 >= rewardUpdateHeight ")
395398 else {
396399 func sum (a,b) = (a + b)
397400
398401 func changePreviousRewardEntry (accumulated,pool) = {
399402 let poolRewardUpdateHeight = getPoolUpdateHeight(pool)
400- if ((rewardUpdateHeight != poolRewardUpdateHeight))
401- then if ((poolRewardUpdateHeight == totalRewardUpdateHeight))
402- then {
403- let poolReward = getCurPoolWeight(pool)
403+ if (!(isDefinePoolUpdateHeight(pool)))
404+ then {
405+ let poolReward = getCurPoolWeight(pool)
404406 IntegerEntry((pool + keyRewardPoolFractionPrevious), poolReward) :: accumulated
405- }
407+ }
408+ else if ((rewardUpdateHeight != poolRewardUpdateHeight))
409+ then if ((poolRewardUpdateHeight == totalRewardUpdateHeight))
410+ then {
411+ let poolReward = getCurPoolWeight(pool)
412+IntegerEntry((pool + keyRewardPoolFractionPrevious), poolReward) :: accumulated
413+ }
414+ else nil
406415 else nil
407- else nil
408416 }
409417
410418 func changeCurrentRewardEntry (accumulated,pool) = {
411419 let poolIndex = value(indexOf(currentPools, pool))
412420 let poolReward = currentRewards[poolIndex]
413421 if ((0 > poolReward))
414422 then throw("PoolReward < 0")
415423 else IntegerEntry((pool + keyRewardPoolFractionCurrent), poolReward) :: accumulated
416424 }
417425
418426 func changeHeightEntry (accumulated,pool) = {
419427 let poolHeight = rewardUpdateHeight
420428 IntegerEntry((pool + keyHeightPoolFraction), poolHeight) :: accumulated
421429 }
422430
423431 func getSumReward (prevTempSum,curTempSum,pagination) = if ((pagination == 0))
424432 then if (if ((prevTempSum > totalVoteShare))
425433 then true
426434 else (curTempSum > totalVoteShare))
427- then throw(((((("sumRewardPrevious > totalVoteShare or sumRewardCurrent > totalVoteShare: " + toString(pagination)) + " ") + toString(prevTempSum)) + " ") + toString(curTempSum)))
435+ then throw(((((("sumRewardPrevious > totalVoteShare or sumRewardCurrent > totalVoteShare - " + toString(pagination)) + " ") + toString(prevTempSum)) + " ") + toString(curTempSum)))
428436 else $Tuple3([IntegerEntry(keyTempPrevSum, prevTempSum)], [IntegerEntry(keyTempCurSum, curTempSum)], [IntegerEntry(keyRewardUpdateFirstPaginationHeight, rewardUpdateHeight)])
429437 else if ((pagination == 1))
430438 then {
431439 let prevTempSumFromKey = valueOrElse(getInteger(this, keyTempPrevSum), 0)
432440 let curTempSumFromKey = valueOrElse(getInteger(this, keyTempCurSum), 0)
433441 let rewardUpdateHeightFirstPaginationEntry = valueOrElse(getInteger(this, keyRewardUpdateFirstPaginationHeight), 0)
434442 if (if (((prevTempSum + prevTempSumFromKey) > totalVoteShare))
435443 then true
436444 else ((curTempSum + curTempSumFromKey) > totalVoteShare))
437- then throw(((((("sumRewardPrevious > totalVoteShare or sumRewardCurrent > totalVoteShare: " + toString(pagination)) + " ") + toString((prevTempSum + prevTempSumFromKey))) + " ") + toString((curTempSum + curTempSumFromKey))))
445+ then throw(((((("sumRewardPrevious > totalVoteShare or sumRewardCurrent > totalVoteShare - " + toString(pagination)) + " ") + toString((prevTempSum + prevTempSumFromKey))) + " ") + toString((curTempSum + curTempSumFromKey))))
438446 else if ((rewardUpdateHeightFirstPaginationEntry != rewardUpdateHeight))
439- then throw(((("current rewardUpdateHeight != rewardUpdateHeightFirstPaginationEntry; rewardUpdateHeight: " + toString(rewardUpdateHeight)) + " rewardUpdateHeightFirstPaginationEntry: ") + toString(rewardUpdateHeightFirstPaginationEntry)))
447+ then throw("current rewardUpdateHeight != rewardUpdateHeightFirstPaginationEntry")
440448 else $Tuple3([IntegerEntry(keyTempPrevSum, (prevTempSum + prevTempSumFromKey))], [IntegerEntry(keyTempCurSum, (curTempSum + curTempSumFromKey))], nil)
441449 }
442450 else if ((pagination == 2))
443451 then {
444452 let prevSum = (valueOrElse(getInteger(this, keyTempPrevSum), 0) + prevTempSum)
445453 let curSum = (valueOrElse(getInteger(this, keyTempCurSum), 0) + curTempSum)
446454 let rewardUpdateHeightFirstPaginationEntry = valueOrElse(getInteger(this, keyRewardUpdateFirstPaginationHeight), 0)
447455 if (if ((prevSum != totalVoteShare))
448456 then true
449457 else (curSum != totalVoteShare))
450- then throw(((("sumRewardPrevious != totalVoteShare or sumRewardCurrent != totalVoteShare; sumRewardPrevious: " + toString(prevSum)) + "; sumRewardCurrent:") + toString(curSum)))
458+ then throw("sumRewardPrevious != totalVoteShare or sumRewardCurrent != totalVoteShare")
451459 else if ((rewardUpdateHeightFirstPaginationEntry != rewardUpdateHeight))
452- then throw(((("current rewardUpdateHeight != rewardUpdateHeightFirstPaginationEntry; rewardUpdateHeight: " + toString(rewardUpdateHeight)) + " rewardUpdateHeightFirstPaginationEntry: ") + toString(rewardUpdateHeightFirstPaginationEntry)))
460+ then throw("current rewardUpdateHeight != rewardUpdateHeightFirstPaginationEntry")
453461 else $Tuple3([IntegerEntry(keyTempPrevSum, prevSum)], [IntegerEntry(keyTempCurSum, curSum)], nil)
454462 }
455- else throw(("Incorrect pagination: " + toString(pagination)))
463+ else throw("Incorrect pagination")
456464
457465 let sumRewardPreviousTemp = {
458- let $list1935719390 = previousRewards
459- let $size1935719390 = size($list1935719390)
460- let $acc01935719390 = 0
461- if (($size1935719390 == 0))
462- then $acc01935719390
466+ let $list1901419047 = previousRewards
467+ let $size1901419047 = size($list1901419047)
468+ let $acc01901419047 = 0
469+ if (($size1901419047 == 0))
470+ then $acc01901419047
463471 else {
464- let $acc11935719390 = sum($acc01935719390, $list1935719390[0])
465- if (($size1935719390 == 1))
466- then $acc11935719390
472+ let $acc11901419047 = sum($acc01901419047, $list1901419047[0])
473+ if (($size1901419047 == 1))
474+ then $acc11901419047
467475 else {
468- let $acc21935719390 = sum($acc11935719390, $list1935719390[1])
469- if (($size1935719390 == 2))
470- then $acc21935719390
476+ let $acc21901419047 = sum($acc11901419047, $list1901419047[1])
477+ if (($size1901419047 == 2))
478+ then $acc21901419047
471479 else {
472- let $acc31935719390 = sum($acc21935719390, $list1935719390[2])
473- if (($size1935719390 == 3))
474- then $acc31935719390
480+ let $acc31901419047 = sum($acc21901419047, $list1901419047[2])
481+ if (($size1901419047 == 3))
482+ then $acc31901419047
475483 else {
476- let $acc41935719390 = sum($acc31935719390, $list1935719390[3])
477- if (($size1935719390 == 4))
478- then $acc41935719390
484+ let $acc41901419047 = sum($acc31901419047, $list1901419047[3])
485+ if (($size1901419047 == 4))
486+ then $acc41901419047
479487 else {
480- let $acc51935719390 = sum($acc41935719390, $list1935719390[4])
481- if (($size1935719390 == 5))
482- then $acc51935719390
488+ let $acc51901419047 = sum($acc41901419047, $list1901419047[4])
489+ if (($size1901419047 == 5))
490+ then $acc51901419047
483491 else {
484- let $acc61935719390 = sum($acc51935719390, $list1935719390[5])
485- if (($size1935719390 == 6))
486- then $acc61935719390
492+ let $acc61901419047 = sum($acc51901419047, $list1901419047[5])
493+ if (($size1901419047 == 6))
494+ then $acc61901419047
487495 else {
488- let $acc71935719390 = sum($acc61935719390, $list1935719390[6])
489- if (($size1935719390 == 7))
490- then $acc71935719390
496+ let $acc71901419047 = sum($acc61901419047, $list1901419047[6])
497+ if (($size1901419047 == 7))
498+ then $acc71901419047
491499 else {
492- let $acc81935719390 = sum($acc71935719390, $list1935719390[7])
493- if (($size1935719390 == 8))
494- then $acc81935719390
500+ let $acc81901419047 = sum($acc71901419047, $list1901419047[7])
501+ if (($size1901419047 == 8))
502+ then $acc81901419047
495503 else {
496- let $acc91935719390 = sum($acc81935719390, $list1935719390[8])
497- if (($size1935719390 == 9))
498- then $acc91935719390
504+ let $acc91901419047 = sum($acc81901419047, $list1901419047[8])
505+ if (($size1901419047 == 9))
506+ then $acc91901419047
499507 else {
500- let $acc101935719390 = sum($acc91935719390, $list1935719390[9])
501- if (($size1935719390 == 10))
502- then $acc101935719390
508+ let $acc101901419047 = sum($acc91901419047, $list1901419047[9])
509+ if (($size1901419047 == 10))
510+ then $acc101901419047
503511 else {
504- let $acc111935719390 = sum($acc101935719390, $list1935719390[10])
512+ let $acc111901419047 = sum($acc101901419047, $list1901419047[10])
505513 throw("List size exceed 10")
506514 }
507515 }
508516 }
509517 }
510518 }
511519 }
512520 }
513521 }
514522 }
515523 }
516524 }
517525 }
518526 let sumRewardCurrentTemp = {
519- let $list1942319455 = currentRewards
520- let $size1942319455 = size($list1942319455)
521- let $acc01942319455 = 0
522- if (($size1942319455 == 0))
523- then $acc01942319455
527+ let $list1908019112 = currentRewards
528+ let $size1908019112 = size($list1908019112)
529+ let $acc01908019112 = 0
530+ if (($size1908019112 == 0))
531+ then $acc01908019112
524532 else {
525- let $acc11942319455 = sum($acc01942319455, $list1942319455[0])
526- if (($size1942319455 == 1))
527- then $acc11942319455
533+ let $acc11908019112 = sum($acc01908019112, $list1908019112[0])
534+ if (($size1908019112 == 1))
535+ then $acc11908019112
528536 else {
529- let $acc21942319455 = sum($acc11942319455, $list1942319455[1])
530- if (($size1942319455 == 2))
531- then $acc21942319455
537+ let $acc21908019112 = sum($acc11908019112, $list1908019112[1])
538+ if (($size1908019112 == 2))
539+ then $acc21908019112
532540 else {
533- let $acc31942319455 = sum($acc21942319455, $list1942319455[2])
534- if (($size1942319455 == 3))
535- then $acc31942319455
541+ let $acc31908019112 = sum($acc21908019112, $list1908019112[2])
542+ if (($size1908019112 == 3))
543+ then $acc31908019112
536544 else {
537- let $acc41942319455 = sum($acc31942319455, $list1942319455[3])
538- if (($size1942319455 == 4))
539- then $acc41942319455
545+ let $acc41908019112 = sum($acc31908019112, $list1908019112[3])
546+ if (($size1908019112 == 4))
547+ then $acc41908019112
540548 else {
541- let $acc51942319455 = sum($acc41942319455, $list1942319455[4])
542- if (($size1942319455 == 5))
543- then $acc51942319455
549+ let $acc51908019112 = sum($acc41908019112, $list1908019112[4])
550+ if (($size1908019112 == 5))
551+ then $acc51908019112
544552 else {
545- let $acc61942319455 = sum($acc51942319455, $list1942319455[5])
546- if (($size1942319455 == 6))
547- then $acc61942319455
553+ let $acc61908019112 = sum($acc51908019112, $list1908019112[5])
554+ if (($size1908019112 == 6))
555+ then $acc61908019112
548556 else {
549- let $acc71942319455 = sum($acc61942319455, $list1942319455[6])
550- if (($size1942319455 == 7))
551- then $acc71942319455
557+ let $acc71908019112 = sum($acc61908019112, $list1908019112[6])
558+ if (($size1908019112 == 7))
559+ then $acc71908019112
552560 else {
553- let $acc81942319455 = sum($acc71942319455, $list1942319455[7])
554- if (($size1942319455 == 8))
555- then $acc81942319455
561+ let $acc81908019112 = sum($acc71908019112, $list1908019112[7])
562+ if (($size1908019112 == 8))
563+ then $acc81908019112
556564 else {
557- let $acc91942319455 = sum($acc81942319455, $list1942319455[8])
558- if (($size1942319455 == 9))
559- then $acc91942319455
565+ let $acc91908019112 = sum($acc81908019112, $list1908019112[8])
566+ if (($size1908019112 == 9))
567+ then $acc91908019112
560568 else {
561- let $acc101942319455 = sum($acc91942319455, $list1942319455[9])
562- if (($size1942319455 == 10))
563- then $acc101942319455
569+ let $acc101908019112 = sum($acc91908019112, $list1908019112[9])
570+ if (($size1908019112 == 10))
571+ then $acc101908019112
564572 else {
565- let $acc111942319455 = sum($acc101942319455, $list1942319455[10])
573+ let $acc111908019112 = sum($acc101908019112, $list1908019112[10])
566574 throw("List size exceed 10")
567575 }
568576 }
569577 }
570578 }
571579 }
572580 }
573581 }
574582 }
575583 }
576584 }
577585 }
578586 }
579- let $t01946119614 = getSumReward(sumRewardPreviousTemp, sumRewardCurrentTemp, pagination)
580- let sumRewardPrevious = $t01946119614._1
581- let sumRewardCurrent = $t01946119614._2
582- let rewardUpdateHeightFirstPaginationEntry = $t01946119614._3
587+ let $t01911819271 = getSumReward(sumRewardPreviousTemp, sumRewardCurrentTemp, pagination)
588+ let sumRewardPrevious = $t01911819271._1
589+ let sumRewardCurrent = $t01911819271._2
590+ let rewardUpdateHeightFirstPaginationEntry = $t01911819271._3
583591 let rewardUpdateHeightEntry = if ((pagination == 2))
584592 then [IntegerEntry(keyRewardUpdateHeight, rewardUpdateHeight)]
585- else [IntegerEntry(keyRewardUpdateHeight, getIntegerValue(this, keyRewardUpdateHeight))]
593+ else nil
586594 if ((height > rewardUpdateHeight))
587595 then throw("rewardUpdateHeight < height")
588596 else {
589597 let previousRewardEntryNew = {
590- let $list1994319997 = previousPools
591- let $size1994319997 = size($list1994319997)
592- let $acc01994319997 = nil
593- if (($size1994319997 == 0))
594- then $acc01994319997
598+ let $list1952119575 = previousPools
599+ let $size1952119575 = size($list1952119575)
600+ let $acc01952119575 = nil
601+ if (($size1952119575 == 0))
602+ then $acc01952119575
595603 else {
596- let $acc11994319997 = changePreviousRewardEntry($acc01994319997, $list1994319997[0])
597- if (($size1994319997 == 1))
598- then $acc11994319997
604+ let $acc11952119575 = changePreviousRewardEntry($acc01952119575, $list1952119575[0])
605+ if (($size1952119575 == 1))
606+ then $acc11952119575
599607 else {
600- let $acc21994319997 = changePreviousRewardEntry($acc11994319997, $list1994319997[1])
601- if (($size1994319997 == 2))
602- then $acc21994319997
608+ let $acc21952119575 = changePreviousRewardEntry($acc11952119575, $list1952119575[1])
609+ if (($size1952119575 == 2))
610+ then $acc21952119575
603611 else {
604- let $acc31994319997 = changePreviousRewardEntry($acc21994319997, $list1994319997[2])
605- if (($size1994319997 == 3))
606- then $acc31994319997
612+ let $acc31952119575 = changePreviousRewardEntry($acc21952119575, $list1952119575[2])
613+ if (($size1952119575 == 3))
614+ then $acc31952119575
607615 else {
608- let $acc41994319997 = changePreviousRewardEntry($acc31994319997, $list1994319997[3])
609- if (($size1994319997 == 4))
610- then $acc41994319997
616+ let $acc41952119575 = changePreviousRewardEntry($acc31952119575, $list1952119575[3])
617+ if (($size1952119575 == 4))
618+ then $acc41952119575
611619 else {
612- let $acc51994319997 = changePreviousRewardEntry($acc41994319997, $list1994319997[4])
613- if (($size1994319997 == 5))
614- then $acc51994319997
620+ let $acc51952119575 = changePreviousRewardEntry($acc41952119575, $list1952119575[4])
621+ if (($size1952119575 == 5))
622+ then $acc51952119575
615623 else {
616- let $acc61994319997 = changePreviousRewardEntry($acc51994319997, $list1994319997[5])
617- if (($size1994319997 == 6))
618- then $acc61994319997
624+ let $acc61952119575 = changePreviousRewardEntry($acc51952119575, $list1952119575[5])
625+ if (($size1952119575 == 6))
626+ then $acc61952119575
619627 else {
620- let $acc71994319997 = changePreviousRewardEntry($acc61994319997, $list1994319997[6])
621- if (($size1994319997 == 7))
622- then $acc71994319997
628+ let $acc71952119575 = changePreviousRewardEntry($acc61952119575, $list1952119575[6])
629+ if (($size1952119575 == 7))
630+ then $acc71952119575
623631 else {
624- let $acc81994319997 = changePreviousRewardEntry($acc71994319997, $list1994319997[7])
625- if (($size1994319997 == 8))
626- then $acc81994319997
632+ let $acc81952119575 = changePreviousRewardEntry($acc71952119575, $list1952119575[7])
633+ if (($size1952119575 == 8))
634+ then $acc81952119575
627635 else {
628- let $acc91994319997 = changePreviousRewardEntry($acc81994319997, $list1994319997[8])
629- if (($size1994319997 == 9))
630- then $acc91994319997
636+ let $acc91952119575 = changePreviousRewardEntry($acc81952119575, $list1952119575[8])
637+ if (($size1952119575 == 9))
638+ then $acc91952119575
631639 else {
632- let $acc101994319997 = changePreviousRewardEntry($acc91994319997, $list1994319997[9])
633- if (($size1994319997 == 10))
634- then $acc101994319997
640+ let $acc101952119575 = changePreviousRewardEntry($acc91952119575, $list1952119575[9])
641+ if (($size1952119575 == 10))
642+ then $acc101952119575
635643 else {
636- let $acc111994319997 = changePreviousRewardEntry($acc101994319997, $list1994319997[10])
644+ let $acc111952119575 = changePreviousRewardEntry($acc101952119575, $list1952119575[10])
637645 throw("List size exceed 10")
638646 }
639647 }
640648 }
641649 }
642650 }
643651 }
644652 }
645653 }
646654 }
647655 }
648656 }
649657 }
650658 let currentRewardEntryNew = {
651- let $list2003020082 = currentPools
652- let $size2003020082 = size($list2003020082)
653- let $acc02003020082 = nil
654- if (($size2003020082 == 0))
655- then $acc02003020082
659+ let $list1960819660 = currentPools
660+ let $size1960819660 = size($list1960819660)
661+ let $acc01960819660 = nil
662+ if (($size1960819660 == 0))
663+ then $acc01960819660
656664 else {
657- let $acc12003020082 = changeCurrentRewardEntry($acc02003020082, $list2003020082[0])
658- if (($size2003020082 == 1))
659- then $acc12003020082
665+ let $acc11960819660 = changeCurrentRewardEntry($acc01960819660, $list1960819660[0])
666+ if (($size1960819660 == 1))
667+ then $acc11960819660
660668 else {
661- let $acc22003020082 = changeCurrentRewardEntry($acc12003020082, $list2003020082[1])
662- if (($size2003020082 == 2))
663- then $acc22003020082
669+ let $acc21960819660 = changeCurrentRewardEntry($acc11960819660, $list1960819660[1])
670+ if (($size1960819660 == 2))
671+ then $acc21960819660
664672 else {
665- let $acc32003020082 = changeCurrentRewardEntry($acc22003020082, $list2003020082[2])
666- if (($size2003020082 == 3))
667- then $acc32003020082
673+ let $acc31960819660 = changeCurrentRewardEntry($acc21960819660, $list1960819660[2])
674+ if (($size1960819660 == 3))
675+ then $acc31960819660
668676 else {
669- let $acc42003020082 = changeCurrentRewardEntry($acc32003020082, $list2003020082[3])
670- if (($size2003020082 == 4))
671- then $acc42003020082
677+ let $acc41960819660 = changeCurrentRewardEntry($acc31960819660, $list1960819660[3])
678+ if (($size1960819660 == 4))
679+ then $acc41960819660
672680 else {
673- let $acc52003020082 = changeCurrentRewardEntry($acc42003020082, $list2003020082[4])
674- if (($size2003020082 == 5))
675- then $acc52003020082
681+ let $acc51960819660 = changeCurrentRewardEntry($acc41960819660, $list1960819660[4])
682+ if (($size1960819660 == 5))
683+ then $acc51960819660
676684 else {
677- let $acc62003020082 = changeCurrentRewardEntry($acc52003020082, $list2003020082[5])
678- if (($size2003020082 == 6))
679- then $acc62003020082
685+ let $acc61960819660 = changeCurrentRewardEntry($acc51960819660, $list1960819660[5])
686+ if (($size1960819660 == 6))
687+ then $acc61960819660
680688 else {
681- let $acc72003020082 = changeCurrentRewardEntry($acc62003020082, $list2003020082[6])
682- if (($size2003020082 == 7))
683- then $acc72003020082
689+ let $acc71960819660 = changeCurrentRewardEntry($acc61960819660, $list1960819660[6])
690+ if (($size1960819660 == 7))
691+ then $acc71960819660
684692 else {
685- let $acc82003020082 = changeCurrentRewardEntry($acc72003020082, $list2003020082[7])
686- if (($size2003020082 == 8))
687- then $acc82003020082
693+ let $acc81960819660 = changeCurrentRewardEntry($acc71960819660, $list1960819660[7])
694+ if (($size1960819660 == 8))
695+ then $acc81960819660
688696 else {
689- let $acc92003020082 = changeCurrentRewardEntry($acc82003020082, $list2003020082[8])
690- if (($size2003020082 == 9))
691- then $acc92003020082
697+ let $acc91960819660 = changeCurrentRewardEntry($acc81960819660, $list1960819660[8])
698+ if (($size1960819660 == 9))
699+ then $acc91960819660
692700 else {
693- let $acc102003020082 = changeCurrentRewardEntry($acc92003020082, $list2003020082[9])
694- if (($size2003020082 == 10))
695- then $acc102003020082
701+ let $acc101960819660 = changeCurrentRewardEntry($acc91960819660, $list1960819660[9])
702+ if (($size1960819660 == 10))
703+ then $acc101960819660
696704 else {
697- let $acc112003020082 = changeCurrentRewardEntry($acc102003020082, $list2003020082[10])
705+ let $acc111960819660 = changeCurrentRewardEntry($acc101960819660, $list1960819660[10])
698706 throw("List size exceed 10")
699707 }
700708 }
701709 }
702710 }
703711 }
704712 }
705713 }
706714 }
707715 }
708716 }
709717 }
710718 }
711719 let heightEntryNewCur = {
712- let $list2011120156 = currentPools
713- let $size2011120156 = size($list2011120156)
714- let $acc02011120156 = nil
715- if (($size2011120156 == 0))
716- then $acc02011120156
720+ let $list1968919734 = currentPools
721+ let $size1968919734 = size($list1968919734)
722+ let $acc01968919734 = nil
723+ if (($size1968919734 == 0))
724+ then $acc01968919734
717725 else {
718- let $acc12011120156 = changeHeightEntry($acc02011120156, $list2011120156[0])
719- if (($size2011120156 == 1))
720- then $acc12011120156
726+ let $acc11968919734 = changeHeightEntry($acc01968919734, $list1968919734[0])
727+ if (($size1968919734 == 1))
728+ then $acc11968919734
721729 else {
722- let $acc22011120156 = changeHeightEntry($acc12011120156, $list2011120156[1])
723- if (($size2011120156 == 2))
724- then $acc22011120156
730+ let $acc21968919734 = changeHeightEntry($acc11968919734, $list1968919734[1])
731+ if (($size1968919734 == 2))
732+ then $acc21968919734
725733 else {
726- let $acc32011120156 = changeHeightEntry($acc22011120156, $list2011120156[2])
727- if (($size2011120156 == 3))
728- then $acc32011120156
734+ let $acc31968919734 = changeHeightEntry($acc21968919734, $list1968919734[2])
735+ if (($size1968919734 == 3))
736+ then $acc31968919734
729737 else {
730- let $acc42011120156 = changeHeightEntry($acc32011120156, $list2011120156[3])
731- if (($size2011120156 == 4))
732- then $acc42011120156
738+ let $acc41968919734 = changeHeightEntry($acc31968919734, $list1968919734[3])
739+ if (($size1968919734 == 4))
740+ then $acc41968919734
733741 else {
734- let $acc52011120156 = changeHeightEntry($acc42011120156, $list2011120156[4])
735- if (($size2011120156 == 5))
736- then $acc52011120156
742+ let $acc51968919734 = changeHeightEntry($acc41968919734, $list1968919734[4])
743+ if (($size1968919734 == 5))
744+ then $acc51968919734
737745 else {
738- let $acc62011120156 = changeHeightEntry($acc52011120156, $list2011120156[5])
739- if (($size2011120156 == 6))
740- then $acc62011120156
746+ let $acc61968919734 = changeHeightEntry($acc51968919734, $list1968919734[5])
747+ if (($size1968919734 == 6))
748+ then $acc61968919734
741749 else {
742- let $acc72011120156 = changeHeightEntry($acc62011120156, $list2011120156[6])
743- if (($size2011120156 == 7))
744- then $acc72011120156
750+ let $acc71968919734 = changeHeightEntry($acc61968919734, $list1968919734[6])
751+ if (($size1968919734 == 7))
752+ then $acc71968919734
745753 else {
746- let $acc82011120156 = changeHeightEntry($acc72011120156, $list2011120156[7])
747- if (($size2011120156 == 8))
748- then $acc82011120156
754+ let $acc81968919734 = changeHeightEntry($acc71968919734, $list1968919734[7])
755+ if (($size1968919734 == 8))
756+ then $acc81968919734
749757 else {
750- let $acc92011120156 = changeHeightEntry($acc82011120156, $list2011120156[8])
751- if (($size2011120156 == 9))
752- then $acc92011120156
758+ let $acc91968919734 = changeHeightEntry($acc81968919734, $list1968919734[8])
759+ if (($size1968919734 == 9))
760+ then $acc91968919734
753761 else {
754- let $acc102011120156 = changeHeightEntry($acc92011120156, $list2011120156[9])
755- if (($size2011120156 == 10))
756- then $acc102011120156
762+ let $acc101968919734 = changeHeightEntry($acc91968919734, $list1968919734[9])
763+ if (($size1968919734 == 10))
764+ then $acc101968919734
757765 else {
758- let $acc112011120156 = changeHeightEntry($acc102011120156, $list2011120156[10])
766+ let $acc111968919734 = changeHeightEntry($acc101968919734, $list1968919734[10])
759767 throw("List size exceed 10")
760768 }
761769 }
762770 }
763771 }
764772 }
765773 }
766774 }
767775 }
768776 }
769777 }
770778 }
771779 }
772780 ((((((previousRewardEntryNew ++ currentRewardEntryNew) ++ heightEntryNewCur) ++ sumRewardPrevious) ++ sumRewardCurrent) ++ rewardUpdateHeightEntry) ++ rewardUpdateHeightFirstPaginationEntry)
773781 }
774782 }
775783 }
776784
777785
778786
779787 @Callable(i)
780788 func shutdown () = if (!(isActive))
781789 then throw(("DApp is already suspended. Cause: " + valueOrElse(getString(this, keyCause), "the cause wasn't specified")))
782790 else if (!(containsElement([adminPubKey1, adminPubKey2, adminPubKey3, adminPubKeyStartStop], i.callerPublicKey)))
783791 then throw("Only admin can call this function")
784792 else suspend("Paused by admin")
785793
786794
787795
788796 @Callable(i)
789797 func activate () = if (isActive)
790798 then throw("DApp is already active")
791799 else if (!(containsElement([adminPubKey1, adminPubKey2, adminPubKey3, adminPubKeyStartStop], i.callerPublicKey)))
792800 then throw("Only admin can call this function")
793801 else [BooleanEntry(keyActive, true), DeleteEntry(keyCause)]
794802
795803
796804 @Verifier(tx)
797-func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
805+func verify () = {
806+ let adminPubKey1Signed = if (sigVerify(tx.bodyBytes, tx.proofs[0], adminPubKey1))
807+ then 1
808+ else 0
809+ let adminPubKey2Signed = if (sigVerify(tx.bodyBytes, tx.proofs[1], adminPubKey2))
810+ then 1
811+ else 0
812+ let adminPubKey3Signed = if (sigVerify(tx.bodyBytes, tx.proofs[2], adminPubKey3))
813+ then 1
814+ else 0
815+ (((adminPubKey1Signed + adminPubKey2Signed) + adminPubKey3Signed) >= 2)
816+ }
798817

github/deemru/w8io/169f3d6 
460.15 ms