tx · B94FsyD5gvDZhwSxP4FUuUqZgb4n1e27U8iMd6jjwVVo

3N5W8da2iiijVieA6qLGo7KzCJj8B19smWU:  -0.01400000 Waves

2021.07.14 10:26 [1612988] smart account 3N5W8da2iiijVieA6qLGo7KzCJj8B19smWU > SELF 0.00000000 Waves

{ "type": 13, "id": "B94FsyD5gvDZhwSxP4FUuUqZgb4n1e27U8iMd6jjwVVo", "fee": 1400000, "feeAssetId": null, "timestamp": 1626247626544, "version": 2, "chainId": 84, "sender": "3N5W8da2iiijVieA6qLGo7KzCJj8B19smWU", "senderPublicKey": "AWADFmQjf2WbDSqb24S9YZpix3VEdiBdeiJ2J2sSfQ49", "proofs": [ "3F9fA6tPDd3sSw5WF8SVk3ssPM3vatoMDQuJHacTfpDbcaFWCdwxuNTijCw5JFPY9ExDngc8DwMt5oViTwxPDGyb" ], "script": "base64:AAIFAAAAAAAAABsIAhIAEgASAwoBARIAEgASBgoEGBEBARIAEgAAAABTAAAAABRhZG1pblB1YktleVN0YXJ0U3RvcAEAAAAgBM915WTQwQ9OZ7kfE2TEGg3qhCRCMX0zkF1AWAqdk0oAAAAAEWFkbWluUHViS2V5V2FsbGV0AQAAACA+d1plWlbJ/ClXM7W8DUUtysyn+IWSDjd3WPNiFVIUEgAAAAAJa2V5QWN0aXZlAgAAAAZhY3RpdmUAAAAACGtleUNhdXNlAgAAAA5zaHV0ZG93bl9jYXVzZQAAAAAPa2V5TGFzdEludGVyZXN0AgAAAA1sYXN0X2ludGVyZXN0AAAAABNrZXlVc2VyTGFzdEludGVyZXN0AgAAAA5fbGFzdF9pbnRlcmVzdAAAAAARa2V5VXNlclNXT1BMb2NrZWQCAAAADF9TV09QX2Ftb3VudAAAAAAUa2V5VXNlckdldEJhY2tIZWlnaHQCAAAADl9nZXRCYWNrSGVpZ2h0AAAAABJrZXlUb3RhbFNXT1BMb2NrZWQCAAAAEXRvdGFsX1NXT1BfYW1vdW50AAAAABJrVXNlclRvdGFsVm90ZVNXT1ACAAAAFV91c2VyX3RvdGFsX1NXT1Bfdm90ZQAAAAAXa2V5VXNlclZvdGVPcHRpb25BbW91bnQCAAAAE19TV09QX29wdGlvbl9hbW91bnQAAAAAGGtleVRvdGFsVm90ZU9wdGlvbkFtb3VudAIAAAAYdG90YWxfU1dPUF9vcHRpb25fYW1vdW50AAAAABhrZXlVc2VyU1dPUENsYWltZWRBbW91bnQCAAAAFF9TV09QX2NsYWltZWRfYW1vdW50AAAAABxrZXlVc2VyU1dPUExhc3RDbGFpbWVkQW1vdW50AgAAABlfU1dPUF9sYXN0X2NsYWltZWRfYW1vdW50AAAAAAtrZXlWb3RlTmFtZQIAAAAJdm90ZV9uYW1lAAAAAA1rZXlPcHRpb25OYW1lAgAAAAxfb3B0aW9uX25hbWUAAAAAFGtleVZvdGluZ1N0YXJ0SGVpZ2h0AgAAAAxfc3RhcnRIZWlnaHQAAAAAD2tleVZvdGVEdXJhdGlvbgIAAAAOX3ZvdGVfZHVyYXRpb24AAAAAHGtleVJld2FyZFBvb2xGcmFjdGlvbkN1cnJlbnQCAAAAHV9jdXJyZW50X3Bvb2xfZnJhY3Rpb25fcmV3YXJkAAAAAB1rZXlSZXdhcmRQb29sRnJhY3Rpb25QcmV2aW91cwIAAAAeX3ByZXZpb3VzX3Bvb2xfZnJhY3Rpb25fcmV3YXJkAAAAABVrZXlIZWlnaHRQb29sRnJhY3Rpb24CAAAAGl9wb29sX3Jld2FyZF91cGRhdGVfaGVpZ2h0AAAAAB1rZXlUb3RhbFJld2FyZFBlckJsb2NrQ3VycmVudAIAAAAedG90YWxfcmV3YXJkX3Blcl9ibG9ja19jdXJyZW50AAAAAB5rZXlUb3RhbFJld2FyZFBlckJsb2NrUHJldmlvdXMCAAAAH3RvdGFsX3Jld2FyZF9wZXJfYmxvY2tfcHJldmlvdXMAAAAAFWtleVJld2FyZFVwZGF0ZUhlaWdodAIAAAAUcmV3YXJkX3VwZGF0ZV9oZWlnaHQAAAAAJGtleVJld2FyZFVwZGF0ZUZpcnN0UGFnaW5hdGlvbkhlaWdodAIAAAAlcmV3YXJkX3VwZGF0ZV9oZWlnaHRfZmlyc3RfcGFnaW5hdGlvbgAAAAAVa2V5Tm9Wb3RpbmdGb3JOZXdQb29sAgAAAAhfdm90ZV9ubwAAAAAWa2V5WWVzVm90aW5nRm9yTmV3UG9vbAIAAAAJX3ZvdGVfeWVzAAAAABtrZXlBbW91bnRPZlZvdGluZ0Zvck5ld1Bvb2wCAAAAEW1heF9hbW91bnRfdm90aW5nAAAAABtrZXlTdGF0dXNPZlZvdGluZ0Zvck5ld1Bvb2wCAAAAB19zdGF0dXMAAAAAH2tleUhlaWdodE9mUG9vbFZvdGluZ0Zvck5ld1Bvb2wCAAAADl9maW5pc2hfaGVpZ2h0AAAAAA9hY3RpdmVWb3RlRmlyc3QCAAAAFHZvdGluZ19hY3RpdmVfY2VsbF8xAAAAABBhY3RpdmVWb3RlU2Vjb25kAgAAABR2b3RpbmdfYWN0aXZlX2NlbGxfMgAAAAAPYWN0aXZlVm90ZVRoaXJkAgAAABR2b3RpbmdfYWN0aXZlX2NlbGxfMwAAAAANa2V5VGVtcEN1clN1bQIAAAASc3VtX3Jld2FyZF9jdXJyZW50AAAAAA9rZXlBZG1pblB1YktleTECAAAAC2FkbWluX3B1Yl8xAAAAAA9rZXlBZG1pblB1YktleTICAAAAC2FkbWluX3B1Yl8yAAAAAA9rZXlBZG1pblB1YktleTMCAAAAC2FkbWluX3B1Yl8zAAAAAA9vcmFjbGVBZG1pblBvb2wJAQAAAAdBZGRyZXNzAAAAAQEAAAAaAVSASQQg8oyz+7dxVOj4PLohRHZWDMPVBaoBAAAAC2dldEFkbWluUHViAAAAAQAAAAtrZXlBZG1pblB1YgQAAAAHJG1hdGNoMAkABB0AAAACBQAAAA9vcmFjbGVBZG1pblBvb2wFAAAAC2tleUFkbWluUHViAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAZTdHJpbmcEAAAABnN0cmluZwUAAAAHJG1hdGNoMAkAAlkAAAABBQAAAAZzdHJpbmcEAAAAB25vdGhpbmcFAAAAByRtYXRjaDAJAAACAAAAAQIAAAAZQWRtaW4gcHVibGljIGtleSBpcyBlbXB0eQAAAAAMYWRtaW5QdWJLZXkxCQEAAAALZ2V0QWRtaW5QdWIAAAABBQAAAA9rZXlBZG1pblB1YktleTEAAAAADGFkbWluUHViS2V5MgkBAAAAC2dldEFkbWluUHViAAAAAQUAAAAPa2V5QWRtaW5QdWJLZXkyAAAAAAxhZG1pblB1YktleTMJAQAAAAtnZXRBZG1pblB1YgAAAAEFAAAAD2tleUFkbWluUHViS2V5MwAAAAAIaXNBY3RpdmUJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQbAAAAAgUAAAAEdGhpcwUAAAAJa2V5QWN0aXZlBgAAAAASZmFybWluZ1NXT1BBZGRyZXNzCQEAAAAHQWRkcmVzcwAAAAEBAAAAGgFULEuCdkaN7xkyPSmpBMwL+vYh0o63mS9mAAAAABJ2b3RpbmdMaXRlQ29udHJhY3QJAQAAAAdBZGRyZXNzAAAAAQEAAAAaAVQaNn7fV6KdJ2lc/r/3JtTn+6HDaD4gyn8AAAAAEHZvdGluZ0Zvck5ld1Bvb2wJAQAAAAdBZGRyZXNzAAAAAQEAAAAaAVR2IeF5Fctzd38/oGN0UKsjLFsZGIPzS4IAAAAACWtleVNXT1BpZAIAAAAHU1dPUF9pZAAAAAAEU1dPUAkAAlkAAAABCQEAAAARQGV4dHJOYXRpdmUoMTA1MykAAAACBQAAABJmYXJtaW5nU1dPUEFkZHJlc3MFAAAACWtleVNXT1BpZAAAAAAKc2NhbGVWYWx1ZQAAAAAABfXhAAAAAAAOdG90YWxWb3RlU2hhcmUAAAAAAlQL5AAAAAAADGtTdGFydEhlaWdodAIAAAAMc3RhcnRfaGVpZ2h0AAAAAAtrQmFzZVBlcmlvZAIAAAALYmFzZV9wZXJpb2QAAAAADWtQZXJpb2RMZW5ndGgCAAAADXBlcmlvZF9sZW5ndGgAAAAAD2tVc2VyVG90YWxTdHJ1YwIAAAARX3VzZXJfdG90YWxfc3RydWMAAAAACmJhc2VQZXJpb2QJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABBoAAAACBQAAABJ2b3RpbmdMaXRlQ29udHJhY3QFAAAAC2tCYXNlUGVyaW9kAgAAACRFbXB0eSBrQmFzZVBlcmlvZCBhdCB2b3RpbmcgY29udHJhY3QAAAAAC3N0YXJ0SGVpZ2h0CQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQaAAAAAgUAAAASdm90aW5nTGl0ZUNvbnRyYWN0BQAAAAxrU3RhcnRIZWlnaHQCAAAAJUVtcHR5IGtTdGFydEhlaWdodCBhdCB2b3RpbmcgY29udHJhY3QAAAAADHBlcmlvZExlbmd0aAkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEGgAAAAIFAAAAEnZvdGluZ0xpdGVDb250cmFjdAUAAAANa1BlcmlvZExlbmd0aAIAAAAmRW1wdHkga1BlcmlvZExlbmd0aCBhdCB2b3RpbmcgY29udHJhY3QAAAAAD2ZpcnN0QWN0aXZlVm90ZQkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABB0AAAACBQAAABB2b3RpbmdGb3JOZXdQb29sBQAAAA9hY3RpdmVWb3RlRmlyc3QCAAAAAAAAAAAQc2Vjb25kQWN0aXZlVm90ZQkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABB0AAAACBQAAABB2b3RpbmdGb3JOZXdQb29sBQAAABBhY3RpdmVWb3RlU2Vjb25kAgAAAAAAAAAAD3RoaXJkQWN0aXZlVm90ZQkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABB0AAAACBQAAABB2b3RpbmdGb3JOZXdQb29sBQAAAA9hY3RpdmVWb3RlVGhpcmQCAAAAAAAAAAAQY3VyclZvdGluZ1BlcmlvZAkAAGQAAAACBQAAAApiYXNlUGVyaW9kCQAAaQAAAAIJAABlAAAAAgUAAAAGaGVpZ2h0BQAAAAtzdGFydEhlaWdodAUAAAAMcGVyaW9kTGVuZ3RoAQAAAAdzdXNwZW5kAAAAAQAAAAVjYXVzZQkABEwAAAACCQEAAAAMQm9vbGVhbkVudHJ5AAAAAgUAAAAJa2V5QWN0aXZlBwkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAAAhrZXlDYXVzZQUAAAAFY2F1c2UFAAAAA25pbAEAAAASdGhyb3dOb3RFbm91Z2hTV09QAAAAAAkAAAIAAAABAgAAAEZOb3QgZW5vdWdoIFNXT1A6IHVzZXJTV09QTG9ja2VkIC0gdXNlclRvdGFsVm90ZUFtb3VudCA8IHZvdGVTV09QQW1vdW50AQAAABNnZXRMYXN0SW50ZXJlc3RJbmZvAAAAAAQAAAAMbGFzdEludGVyZXN0CQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAABHRoaXMFAAAAD2tleUxhc3RJbnRlcmVzdAAAAAAAAAAAAAUAAAAMbGFzdEludGVyZXN0AQAAABFnZXRVc2VyU1dPUExvY2tlZAAAAAEAAAAEdXNlcgkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAAR0aGlzCQABLAAAAAIJAAQlAAAAAQUAAAAEdXNlcgUAAAARa2V5VXNlclNXT1BMb2NrZWQAAAAAAAAAAAABAAAAGGdldFVzZXJTV09QQ2xhaW1lZEFtb3VudAAAAAEAAAAEdXNlcgkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAAR0aGlzCQABLAAAAAIJAAQlAAAAAQUAAAAEdXNlcgUAAAAYa2V5VXNlclNXT1BDbGFpbWVkQW1vdW50AAAAAAAAAAAAAQAAABZnZXRVc2VyVG90YWxWb3RlQW1vdW50AAAAAQAAAAR1c2VyCQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAAEnZvdGluZ0xpdGVDb250cmFjdAkAASwAAAACCQAEJQAAAAEFAAAABHVzZXIFAAAAEmtVc2VyVG90YWxWb3RlU1dPUAAAAAAAAAAAAAEAAAATZ2V0VXNlckludGVyZXN0SW5mbwAAAAIAAAAEdXNlcgAAAAxsYXN0SW50ZXJlc3QEAAAADnVzZXJTV09QQW1vdW50CQEAAAARZ2V0VXNlclNXT1BMb2NrZWQAAAABBQAAAAR1c2VyBAAAABB1c2VyTGFzdEludGVyZXN0CQAEGgAAAAIFAAAABHRoaXMJAAEsAAAAAgkABCUAAAABBQAAAAR1c2VyBQAAABNrZXlVc2VyTGFzdEludGVyZXN0BAAAABV1c2VyTGFzdEludGVyZXN0VmFsdWUEAAAAByRtYXRjaDAFAAAAEHVzZXJMYXN0SW50ZXJlc3QDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAAQdXNlckxhc3RJbnRlcmVzdAUAAAAHJG1hdGNoMAUAAAAQdXNlckxhc3RJbnRlcmVzdAUAAAAMbGFzdEludGVyZXN0CQAFFAAAAAIFAAAAFXVzZXJMYXN0SW50ZXJlc3RWYWx1ZQUAAAAOdXNlclNXT1BBbW91bnQBAAAAIGdldFVzZXJUb3RhbFZvdGVBbW91bnRGb3JPbmVQb29sAAAAAgAAAARwb29sAAAABHVzZXIEAAAABnZvdGluZwkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAABB2b3RpbmdGb3JOZXdQb29sBQAAAARwb29sAP//////////BAAAAA5oZWlnaHRPZlZvdGluZwkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAABB2b3RpbmdGb3JOZXdQb29sCQABLAAAAAIJAAGkAAAAAQUAAAAGdm90aW5nBQAAAB9rZXlIZWlnaHRPZlBvb2xWb3RpbmdGb3JOZXdQb29sAAAAAAAAAAAABAAAAA5zdGF0dXNPZlZvdGluZwkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBsAAAACBQAAABB2b3RpbmdGb3JOZXdQb29sCQABLAAAAAIJAAGkAAAAAQUAAAAGdm90aW5nBQAAABtrZXlTdGF0dXNPZlZvdGluZ0Zvck5ld1Bvb2wGBAAAAA1jdXJyZW50SGVpZ2h0BQAAAAZoZWlnaHQDCQAAZgAAAAIAAAAAAAAAAAAFAAAABnZvdGluZwAAAAAAAAAAAAMJAQAAAAEhAAAAAQUAAAAOc3RhdHVzT2ZWb3RpbmcAAAAAAAAAAAADCQAAZgAAAAIFAAAADmhlaWdodE9mVm90aW5nBQAAAA1jdXJyZW50SGVpZ2h0CQAAZAAAAAIJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAAQdm90aW5nRm9yTmV3UG9vbAkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkABCUAAAABBQAAAAR1c2VyAgAAAAFfCQABpAAAAAEFAAAABnZvdGluZwUAAAAWa2V5WWVzVm90aW5nRm9yTmV3UG9vbAAAAAAAAAAAAAkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAABB2b3RpbmdGb3JOZXdQb29sCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQAEJQAAAAEFAAAABHVzZXICAAAAAV8JAAGkAAAAAQUAAAAGdm90aW5nBQAAABVrZXlOb1ZvdGluZ0Zvck5ld1Bvb2wAAAAAAAAAAAAAAAAAAAAAAAABAAAAIGdldFVzZXJUb3RhbFZvdGVGb3JOZXdQb29sQW1vdW50AAAAAQAAAAR1c2VyBAAAAAxsaXN0T2ZWb3RpbmcJAARMAAAAAgkBAAAAIGdldFVzZXJUb3RhbFZvdGVBbW91bnRGb3JPbmVQb29sAAAAAgUAAAAPZmlyc3RBY3RpdmVWb3RlBQAAAAR1c2VyCQAETAAAAAIJAQAAACBnZXRVc2VyVG90YWxWb3RlQW1vdW50Rm9yT25lUG9vbAAAAAIFAAAAEHNlY29uZEFjdGl2ZVZvdGUFAAAABHVzZXIJAARMAAAAAgkBAAAAIGdldFVzZXJUb3RhbFZvdGVBbW91bnRGb3JPbmVQb29sAAAAAgUAAAAPdGhpcmRBY3RpdmVWb3RlBQAAAAR1c2VyBQAAAANuaWwJAAGWAAAAAQUAAAAMbGlzdE9mVm90aW5nAQAAABJnZXRUb3RhbFNXT1BMb2NrZWQAAAAACQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAABHRoaXMFAAAAEmtleVRvdGFsU1dPUExvY2tlZAAAAAAAAAAAAAEAAAAPZ2V0VXNlclZvdGVJbmZvAAAAAQAAAAR1c2VyBAAAAAskdDA2MzYwNjkxMQMJAQAAAAlpc0RlZmluZWQAAAABCQAEHQAAAAIFAAAAEnZvdGluZ0xpdGVDb250cmFjdAkAASwAAAACCQAEJQAAAAEFAAAABHVzZXIFAAAAD2tVc2VyVG90YWxTdHJ1YwQAAAAEZGF0YQkABLUAAAACCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQdAAAAAgUAAAASdm90aW5nTGl0ZUNvbnRyYWN0CQABLAAAAAIJAAQlAAAAAQUAAAAEdXNlcgUAAAAPa1VzZXJUb3RhbFN0cnVjAgAAABVFbXB0eSBrVXNlclRvdGFsU3RydWMCAAAAAV8JAAUVAAAAAwkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAABGRhdGEAAAAAAAAAAAAJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAARkYXRhAAAAAAAAAAABCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAEZGF0YQAAAAAAAAAAAgQAAAAOdVBvb2xUb3RhbFNXT1AJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAASdm90aW5nTGl0ZUNvbnRyYWN0CQABLAAAAAIJAAQlAAAAAQUAAAAEdXNlcgUAAAASa1VzZXJUb3RhbFZvdGVTV09QAAAAAAAAAAAACQAFFQAAAAMFAAAADnVQb29sVG90YWxTV09QAAAAAAAAAAAABQAAABBjdXJyVm90aW5nUGVyaW9kBAAAABF1c2VyVG90YWxWb3RlU1dPUAgFAAAACyR0MDYzNjA2OTExAAAAAl8xBAAAAAt1c2VyVW52b3RlZAgFAAAACyR0MDYzNjA2OTExAAAAAl8yBAAAABF1c2VyVW52b3RlZFBlcmlvZAgFAAAACyR0MDYzNjA2OTExAAAAAl8zBAAAABF1c2VyVW52b3RlZEFjdHVhbAMJAAAAAAAAAgUAAAARdXNlclVudm90ZWRQZXJpb2QFAAAAEGN1cnJWb3RpbmdQZXJpb2QFAAAAC3VzZXJVbnZvdGVkAAAAAAAAAAAACQAFFAAAAAIFAAAAEXVzZXJUb3RhbFZvdGVTV09QBQAAABF1c2VyVW52b3RlZEFjdHVhbAEAAAAXZ2V0VXNlclZvdGVPcHRpb25BbW91bnQAAAABAAAABHVzZXIJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwkAASwAAAACCQAEJQAAAAEFAAAABHVzZXIFAAAAF2tleVVzZXJWb3RlT3B0aW9uQW1vdW50AAAAAAAAAAAAAQAAABRnZXRWb3RpbmdTdGFydEhlaWdodAAAAAEAAAAIdm90ZU5hbWUJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwkAASwAAAACBQAAAAh2b3RlTmFtZQUAAAAUa2V5Vm90aW5nU3RhcnRIZWlnaHQAAAAAAAAAAAABAAAAE2dldFBvb2xVcGRhdGVIZWlnaHQAAAABAAAABHBvb2wJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwkAASwAAAACBQAAAARwb29sBQAAABVrZXlIZWlnaHRQb29sRnJhY3Rpb24AAAAAAAAAAAABAAAAGGlzRGVmaW5lUG9vbFVwZGF0ZUhlaWdodAAAAAEAAAAEcG9vbAkBAAAACWlzRGVmaW5lZAAAAAEJAAQaAAAAAgUAAAAEdGhpcwkAASwAAAACBQAAAARwb29sBQAAABVrZXlIZWlnaHRQb29sRnJhY3Rpb24BAAAAEGdldEN1clBvb2xXZWlnaHQAAAABAAAABHBvb2wJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwkAASwAAAACBQAAAARwb29sBQAAABxrZXlSZXdhcmRQb29sRnJhY3Rpb25DdXJyZW50AAAAAAAAAAAAAQAAABFnZXRQcmV2UG9vbFdlaWdodAAAAAEAAAAEcG9vbAkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAAR0aGlzCQABLAAAAAIFAAAABHBvb2wFAAAAHWtleVJld2FyZFBvb2xGcmFjdGlvblByZXZpb3VzAAAAAAAAAAAAAQAAABNnZXRWb3RlT3B0aW9uQW1vdW50AAAAAwAAAAR1c2VyAAAACHZvdGVOYW1lAAAABm9wdGlvbgQAAAAUdXNlclZvdGVPcHRpb25BbW91bnQJAAQaAAAAAgUAAAAEdGhpcwkAASwAAAACCQABLAAAAAIJAAEsAAAAAgUAAAAIdm90ZU5hbWUFAAAABm9wdGlvbgkABCUAAAABBQAAAAR1c2VyBQAAABdrZXlVc2VyVm90ZU9wdGlvbkFtb3VudAQAAAAEdXZvYQQAAAAHJG1hdGNoMAUAAAAUdXNlclZvdGVPcHRpb25BbW91bnQDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAAEdXZvYQUAAAAHJG1hdGNoMAUAAAAEdXZvYQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAEVW5pdAQAAAAEdXZvYQUAAAAHJG1hdGNoMAAAAAAAAAAAAAkAAAIAAAABAgAAAAtNYXRjaCBlcnJvcgkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACBQAAAAR1dm9hCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAFE5vIGRhdGEgb24gdGhlIGtleTogBQAAAAh2b3RlTmFtZQUAAAAGb3B0aW9uCQAEJQAAAAEFAAAABHVzZXIFAAAAF2tleVVzZXJWb3RlT3B0aW9uQW1vdW50AQAAAA9nZXRWb3RlRHVyYXRpb24AAAABAAAACHZvdGVOYW1lCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwkAASwAAAACBQAAAAh2b3RlTmFtZQUAAAAPa2V5Vm90ZUR1cmF0aW9uCQABLAAAAAIJAAEsAAAAAgIAAAAUTm8gZGF0YSBvbiB0aGUga2V5OiAFAAAACHZvdGVOYW1lBQAAAA9rZXlWb3RlRHVyYXRpb24BAAAAGGdldFRvdGFsVm90ZU9wdGlvbkFtb3VudAAAAAIAAAAIdm90ZU5hbWUAAAAGb3B0aW9uBAAAABV0b3RhbFZvdGVPcHRpb25BbW91bnQJAAQaAAAAAgUAAAAEdGhpcwkAASwAAAACCQABLAAAAAIFAAAACHZvdGVOYW1lBQAAAAZvcHRpb24FAAAAGGtleVRvdGFsVm90ZU9wdGlvbkFtb3VudAQAAAAEdHZvYQQAAAAHJG1hdGNoMAUAAAAVdG90YWxWb3RlT3B0aW9uQW1vdW50AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAABHR2b2EFAAAAByRtYXRjaDAFAAAABHR2b2EDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABFVuaXQEAAAABHR2b2EFAAAAByRtYXRjaDAAAAAAAAAAAAAJAAACAAAAAQIAAAALTWF0Y2ggZXJyb3IFAAAABHR2b2EBAAAAFGdldFVzZXJHZXRCYWNrQW1vdW50AAAABAAAAAh2b3RlTmFtZQAAAAZvcHRpb24AAAAEdXNlcgAAABFnZXRCYWNrU1dPUEhlaWdodAQAAAADa2V5CQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACBQAAAAh2b3RlTmFtZQIAAAABXwUAAAAGb3B0aW9uAgAAAAFfCQAEJQAAAAEFAAAABHVzZXICAAAAAV8JAAGkAAAAAQUAAAARZ2V0QmFja1NXT1BIZWlnaHQJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABBoAAAACBQAAAAR0aGlzBQAAAANrZXkJAAEsAAAAAgIAAAAUTm8gZGF0YSBvbiB0aGUga2V5OiAFAAAAA2tleQEAAAAJY2xhaW1DYWxjAAAAAQAAAAZjYWxsZXIEAAAADGxhc3RJbnRlcmVzdAkBAAAAE2dldExhc3RJbnRlcmVzdEluZm8AAAAABAAAAAskdDA5MzE1OTM5NQkBAAAAE2dldFVzZXJJbnRlcmVzdEluZm8AAAACBQAAAAZjYWxsZXIFAAAADGxhc3RJbnRlcmVzdAQAAAAQdXNlckxhc3RJbnRlcmVzdAgFAAAACyR0MDkzMTU5Mzk1AAAAAl8xBAAAAA51c2VyU1dPUExvY2tlZAgFAAAACyR0MDkzMTU5Mzk1AAAAAl8yBAAAAAtjbGFpbUFtb3VudAkAAaAAAAABCQABPAAAAAMJAAE2AAAAAQUAAAAOdXNlclNXT1BMb2NrZWQJAAE2AAAAAQkAAGUAAAACBQAAAAxsYXN0SW50ZXJlc3QFAAAAEHVzZXJMYXN0SW50ZXJlc3QJAAE2AAAAAQUAAAAKc2NhbGVWYWx1ZQQAAAAPdXNlck5ld0ludGVyZXN0BQAAAAxsYXN0SW50ZXJlc3QJAAUUAAAAAgUAAAAPdXNlck5ld0ludGVyZXN0BQAAAAtjbGFpbUFtb3VudAAAAAgAAAABaQEAAAAHYWlyRHJvcAAAAAADCQEAAAABIQAAAAEFAAAACGlzQWN0aXZlCQAAAgAAAAECAAAAH0RBcHAgaXMgaW5hY3RpdmUgYXQgdGhpcyBtb21lbnQEAAAACyR0MDk3MDM5Nzc4CQAFFAAAAAIICQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAAAAAABmFtb3VudAgJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAAAAAHYXNzZXRJZAQAAAAJcG10QW1vdW50CAUAAAALJHQwOTcwMzk3NzgAAAACXzEEAAAACnBtdEFzc2V0SWQIBQAAAAskdDA5NzAzOTc3OAAAAAJfMgMJAQAAAAIhPQAAAAIFAAAACnBtdEFzc2V0SWQFAAAABFNXT1AJAAACAAAAAQIAAAAUSW5jb3JyZWN0IHBtdEFzc2V0SWQEAAAAD3RvdGFsU1dPUExvY2tlZAkBAAAAEmdldFRvdGFsU1dPUExvY2tlZAAAAAAEAAAADGxhc3RJbnRlcmVzdAkBAAAAE2dldExhc3RJbnRlcmVzdEluZm8AAAAABAAAAAtpbnRlcmVzdE5ldwkAAGQAAAACBQAAAAxsYXN0SW50ZXJlc3QJAAGgAAAAAQkAATwAAAADCQABNgAAAAEFAAAACXBtdEFtb3VudAkAATYAAAABBQAAAApzY2FsZVZhbHVlCQABNgAAAAEFAAAAD3RvdGFsU1dPUExvY2tlZAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAPa2V5TGFzdEludGVyZXN0BQAAAAtpbnRlcmVzdE5ldwUAAAADbmlsAAAAAWkBAAAACGxvY2tTV09QAAAAAAMJAQAAAAEhAAAAAQUAAAAIaXNBY3RpdmUJAAACAAAAAQIAAAAfREFwcCBpcyBpbmFjdGl2ZSBhdCB0aGlzIG1vbWVudAQAAAANJHQwMTAyNTcxMDMzMgkABRQAAAACCAkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAAAAAZhbW91bnQICQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAAAAAAB2Fzc2V0SWQEAAAACXBtdEFtb3VudAgFAAAADSR0MDEwMjU3MTAzMzIAAAACXzEEAAAACnBtdEFzc2V0SWQIBQAAAA0kdDAxMDI1NzEwMzMyAAAAAl8yAwkBAAAAAiE9AAAAAgUAAAAKcG10QXNzZXRJZAUAAAAEU1dPUAkAAAIAAAABAgAAABRJbmNvcnJlY3QgcG10QXNzZXRJZAQAAAAMbGFzdEludGVyZXN0CQEAAAATZ2V0TGFzdEludGVyZXN0SW5mbwAAAAAEAAAADSR0MDEwNDQ4MTA1MzAJAQAAABNnZXRVc2VySW50ZXJlc3RJbmZvAAAAAggFAAAAAWkAAAAGY2FsbGVyBQAAAAxsYXN0SW50ZXJlc3QEAAAAEHVzZXJMYXN0SW50ZXJlc3QIBQAAAA0kdDAxMDQ0ODEwNTMwAAAAAl8xBAAAAA51c2VyU1dPUExvY2tlZAgFAAAADSR0MDEwNDQ4MTA1MzAAAAACXzIEAAAAC2NsYWltQW1vdW50CQABoAAAAAEJAAE8AAAAAwkAATYAAAABBQAAAA51c2VyU1dPUExvY2tlZAkAATYAAAABCQAAZQAAAAIFAAAADGxhc3RJbnRlcmVzdAUAAAAQdXNlckxhc3RJbnRlcmVzdAkAATYAAAABBQAAAApzY2FsZVZhbHVlBAAAABF1c2VyU1dPUExvY2tlZE5ldwkAAGQAAAACCQAAZAAAAAIFAAAADnVzZXJTV09QTG9ja2VkBQAAAAlwbXRBbW91bnQFAAAAC2NsYWltQW1vdW50BAAAAA91c2VyTmV3SW50ZXJlc3QFAAAADGxhc3RJbnRlcmVzdAQAAAAPdG90YWxTV09QTG9ja2VkCQEAAAASZ2V0VG90YWxTV09QTG9ja2VkAAAAAAQAAAASdG90YWxTV09QTG9ja2VkTmV3CQAAZAAAAAIJAABkAAAAAgUAAAAPdG90YWxTV09QTG9ja2VkBQAAAAlwbXRBbW91bnQFAAAAC2NsYWltQW1vdW50BAAAABF1c2VyQ2xhaW1lZEFtb3VudAkBAAAAGGdldFVzZXJTV09QQ2xhaW1lZEFtb3VudAAAAAEIBQAAAAFpAAAABmNhbGxlcgQAAAAUdXNlckNsYWltZWRBbW91bnROZXcJAABkAAAAAgUAAAARdXNlckNsYWltZWRBbW91bnQFAAAAC2NsYWltQW1vdW50CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBQAAABNrZXlVc2VyTGFzdEludGVyZXN0BQAAAA91c2VyTmV3SW50ZXJlc3QJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIFAAAAEWtleVVzZXJTV09QTG9ja2VkBQAAABF1c2VyU1dPUExvY2tlZE5ldwkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAASa2V5VG90YWxTV09QTG9ja2VkBQAAABJ0b3RhbFNXT1BMb2NrZWROZXcJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIFAAAAGGtleVVzZXJTV09QQ2xhaW1lZEFtb3VudAUAAAAUdXNlckNsYWltZWRBbW91bnROZXcJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIFAAAAHGtleVVzZXJTV09QTGFzdENsYWltZWRBbW91bnQFAAAAC2NsYWltQW1vdW50BQAAAANuaWwAAAABaQEAAAAMd2l0aGRyYXdTV09QAAAAAQAAAA53aXRoZHJhd0Ftb3VudAMJAQAAAAEhAAAAAQUAAAAIaXNBY3RpdmUJAAACAAAAAQIAAAAfREFwcCBpcyBpbmFjdGl2ZSBhdCB0aGlzIG1vbWVudAMJAABnAAAAAgAAAAAAAAAAAAUAAAAOd2l0aGRyYXdBbW91bnQJAAACAAAAAQIAAAATd2l0aGRyYXdBbW91bnQgPD0gMAQAAAAPdG90YWxTV09QTG9ja2VkCQEAAAASZ2V0VG90YWxTV09QTG9ja2VkAAAAAAQAAAAOdXNlclNXT1BMb2NrZWQJAQAAABFnZXRVc2VyU1dPUExvY2tlZAAAAAEIBQAAAAFpAAAABmNhbGxlcgQAAAANJHQwMTE3MjMxMTc3OAkBAAAACWNsYWltQ2FsYwAAAAEIBQAAAAFpAAAABmNhbGxlcgQAAAAPdXNlck5ld0ludGVyZXN0CAUAAAANJHQwMTE3MjMxMTc3OAAAAAJfMQQAAAALY2xhaW1BbW91bnQIBQAAAA0kdDAxMTcyMzExNzc4AAAAAl8yBAAAAA0kdDAxMTc4MzExODQ4CQEAAAAPZ2V0VXNlclZvdGVJbmZvAAAAAQgFAAAAAWkAAAAGY2FsbGVyBAAAAA51c2VyVm90ZUFtb3VudAgFAAAADSR0MDExNzgzMTE4NDgAAAACXzEEAAAAEHVzZXJVbnZvdGVBbW91bnQIBQAAAA0kdDAxMTc4MzExODQ4AAAAAl8yBAAAABh1c2VyVm90ZUFtb3VudEZvck5ld1Bvb2wJAQAAACBnZXRVc2VyVG90YWxWb3RlRm9yTmV3UG9vbEFtb3VudAAAAAEIBQAAAAFpAAAABmNhbGxlcgMDAwkAAGYAAAACAAAAAAAAAAAABQAAABB1c2VyVW52b3RlQW1vdW50BgkAAGYAAAACAAAAAAAAAAAABQAAAA51c2VyVm90ZUFtb3VudAYJAABmAAAAAgAAAAAAAAAAAAUAAAAYdXNlclZvdGVBbW91bnRGb3JOZXdQb29sCQAAAgAAAAECAAAASnVzZXJVbnZvdGVBbW91bnQgPCAwIHx8IHVzZXJWb3RlQW1vdW50IDwgMCB8fCB1c2VyVm90ZUFtb3VudEZvck5ld1Bvb2wgPCAwBAAAABJhdmFpbGFibGVUb1Vuc3Rha2UJAABlAAAAAgUAAAAOdXNlclNXT1BMb2NrZWQJAAGWAAAAAQkABEwAAAACBQAAABh1c2VyVm90ZUFtb3VudEZvck5ld1Bvb2wJAARMAAAAAgkAAGQAAAACBQAAAA51c2VyVm90ZUFtb3VudAUAAAAQdXNlclVudm90ZUFtb3VudAUAAAADbmlsAwkAAGYAAAACBQAAAA53aXRoZHJhd0Ftb3VudAUAAAASYXZhaWxhYmxlVG9VbnN0YWtlCQAAAgAAAAECAAAAI3dpdGhkcmF3QW1vdW50ID4gYXZhaWxhYmxlVG9VbnN0YWtlBAAAABJ0b3RhbFNXT1BMb2NrZWROZXcJAABlAAAAAgkAAGQAAAACBQAAAA90b3RhbFNXT1BMb2NrZWQFAAAAC2NsYWltQW1vdW50BQAAAA53aXRoZHJhd0Ftb3VudAQAAAARdXNlclNXT1BhbW91bnROZXcJAABlAAAAAgkAAGQAAAACBQAAAA51c2VyU1dPUExvY2tlZAUAAAALY2xhaW1BbW91bnQFAAAADndpdGhkcmF3QW1vdW50BAAAABF1c2VyQ2xhaW1lZEFtb3VudAkBAAAAGGdldFVzZXJTV09QQ2xhaW1lZEFtb3VudAAAAAEIBQAAAAFpAAAABmNhbGxlcgQAAAAUdXNlckNsYWltZWRBbW91bnROZXcJAABkAAAAAgUAAAARdXNlckNsYWltZWRBbW91bnQFAAAAC2NsYWltQW1vdW50CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBQAAABNrZXlVc2VyTGFzdEludGVyZXN0BQAAAA91c2VyTmV3SW50ZXJlc3QJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIFAAAAEWtleVVzZXJTV09QTG9ja2VkBQAAABF1c2VyU1dPUGFtb3VudE5ldwkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAASa2V5VG90YWxTV09QTG9ja2VkBQAAABJ0b3RhbFNXT1BMb2NrZWROZXcJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyBQAAAA53aXRoZHJhd0Ftb3VudAUAAAAEU1dPUAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgUAAAAYa2V5VXNlclNXT1BDbGFpbWVkQW1vdW50BQAAABR1c2VyQ2xhaW1lZEFtb3VudE5ldwkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgUAAAAca2V5VXNlclNXT1BMYXN0Q2xhaW1lZEFtb3VudAUAAAALY2xhaW1BbW91bnQFAAAAA25pbAAAAAFpAQAAABRjbGFpbUFuZFdpdGhkcmF3U1dPUAAAAAADCQEAAAABIQAAAAEFAAAACGlzQWN0aXZlCQAAAgAAAAECAAAAH0RBcHAgaXMgaW5hY3RpdmUgYXQgdGhpcyBtb21lbnQEAAAADGxhc3RJbnRlcmVzdAkBAAAAE2dldExhc3RJbnRlcmVzdEluZm8AAAAABAAAAA0kdDAxMzIyMzEzMjc4CQEAAAAJY2xhaW1DYWxjAAAAAQgFAAAAAWkAAAAGY2FsbGVyBAAAAA91c2VyTmV3SW50ZXJlc3QIBQAAAA0kdDAxMzIyMzEzMjc4AAAAAl8xBAAAAAtjbGFpbUFtb3VudAgFAAAADSR0MDEzMjIzMTMyNzgAAAACXzIEAAAAEXVzZXJDbGFpbWVkQW1vdW50CQEAAAAYZ2V0VXNlclNXT1BDbGFpbWVkQW1vdW50AAAAAQgFAAAAAWkAAAAGY2FsbGVyBAAAABR1c2VyQ2xhaW1lZEFtb3VudE5ldwkAAGQAAAACBQAAABF1c2VyQ2xhaW1lZEFtb3VudAUAAAALY2xhaW1BbW91bnQDCQAAAAAAAAIFAAAAC2NsYWltQW1vdW50AAAAAAAAAAAACQAAAgAAAAECAAAAGVlvdSBoYXZlIDAgYXZhaWxhYmxlIFNXT1AJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIFAAAAE2tleVVzZXJMYXN0SW50ZXJlc3QFAAAAD3VzZXJOZXdJbnRlcmVzdAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgUAAAAYa2V5VXNlclNXT1BDbGFpbWVkQW1vdW50BQAAABR1c2VyQ2xhaW1lZEFtb3VudE5ldwkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgUAAAAca2V5VXNlclNXT1BMYXN0Q2xhaW1lZEFtb3VudAUAAAALY2xhaW1BbW91bnQJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyBQAAAAtjbGFpbUFtb3VudAUAAAAEU1dPUAUAAAADbmlsAAAAAWkBAAAAEWNsYWltQW5kU3Rha2VTV09QAAAAAAMJAQAAAAEhAAAAAQUAAAAIaXNBY3RpdmUJAAACAAAAAQIAAAAfREFwcCBpcyBpbmFjdGl2ZSBhdCB0aGlzIG1vbWVudAQAAAAPdG90YWxTV09QTG9ja2VkCQEAAAASZ2V0VG90YWxTV09QTG9ja2VkAAAAAAQAAAAOdXNlclNXT1BMb2NrZWQJAQAAABFnZXRVc2VyU1dPUExvY2tlZAAAAAEIBQAAAAFpAAAABmNhbGxlcgQAAAAMbGFzdEludGVyZXN0CQEAAAATZ2V0TGFzdEludGVyZXN0SW5mbwAAAAAEAAAADSR0MDE0MDU3MTQxMTIJAQAAAAljbGFpbUNhbGMAAAABCAUAAAABaQAAAAZjYWxsZXIEAAAAD3VzZXJOZXdJbnRlcmVzdAgFAAAADSR0MDE0MDU3MTQxMTIAAAACXzEEAAAAC2NsYWltQW1vdW50CAUAAAANJHQwMTQwNTcxNDExMgAAAAJfMgQAAAARdXNlclNXT1BMb2NrZWROZXcJAABkAAAAAgUAAAAOdXNlclNXT1BMb2NrZWQFAAAAC2NsYWltQW1vdW50BAAAABJ0b3RhbFNXT1BMb2NrZWROZXcJAABkAAAAAgUAAAAPdG90YWxTV09QTG9ja2VkBQAAAAtjbGFpbUFtb3VudAQAAAARdXNlckNsYWltZWRBbW91bnQJAQAAABhnZXRVc2VyU1dPUENsYWltZWRBbW91bnQAAAABCAUAAAABaQAAAAZjYWxsZXIEAAAAFHVzZXJDbGFpbWVkQW1vdW50TmV3CQAAZAAAAAIFAAAAEXVzZXJDbGFpbWVkQW1vdW50BQAAAAtjbGFpbUFtb3VudAMJAAAAAAAAAgUAAAALY2xhaW1BbW91bnQAAAAAAAAAAAAJAAACAAAAAQIAAAAZWW91IGhhdmUgMCBhdmFpbGFibGUgU1dPUAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgUAAAATa2V5VXNlckxhc3RJbnRlcmVzdAUAAAAPdXNlck5ld0ludGVyZXN0CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABJrZXlUb3RhbFNXT1BMb2NrZWQFAAAAEnRvdGFsU1dPUExvY2tlZE5ldwkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgUAAAARa2V5VXNlclNXT1BMb2NrZWQFAAAAEXVzZXJTV09QTG9ja2VkTmV3CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBQAAABhrZXlVc2VyU1dPUENsYWltZWRBbW91bnQFAAAAFHVzZXJDbGFpbWVkQW1vdW50TmV3CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBQAAABxrZXlVc2VyU1dPUExhc3RDbGFpbWVkQW1vdW50BQAAAAtjbGFpbUFtb3VudAUAAAADbmlsAAAAAWkBAAAADXVwZGF0ZVdlaWdodHMAAAAEAAAADGN1cnJlbnRQb29scwAAAA5jdXJyZW50UmV3YXJkcwAAABJyZXdhcmRVcGRhdGVIZWlnaHQAAAAKcGFnaW5hdGlvbgMJAQAAAAEhAAAAAQUAAAAIaXNBY3RpdmUJAAACAAAAAQIAAAAfREFwcCBpcyBpbmFjdGl2ZSBhdCB0aGlzIG1vbWVudAQAAAALYW1vdW50UG9vbHMAAAAAAAAAAAoEAAAAF3RvdGFsUmV3YXJkVXBkYXRlSGVpZ2h0CQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAABHRoaXMFAAAAFWtleVJld2FyZFVwZGF0ZUhlaWdodAAAAAAAAAAAAAMJAQAAAAEhAAAAAQkBAAAAD2NvbnRhaW5zRWxlbWVudAAAAAIJAARMAAAAAgUAAAAMYWRtaW5QdWJLZXkxCQAETAAAAAIFAAAADGFkbWluUHViS2V5MgkABEwAAAACBQAAAAxhZG1pblB1YktleTMJAARMAAAAAgUAAAAUYWRtaW5QdWJLZXlTdGFydFN0b3AJAARMAAAAAgUAAAARYWRtaW5QdWJLZXlXYWxsZXQFAAAAA25pbAgFAAAAAWkAAAAPY2FsbGVyUHVibGljS2V5CQAAAgAAAAECAAAAIU9ubHkgYWRtaW4gY2FuIGNhbGwgdGhpcyBmdW5jdGlvbgMJAABmAAAAAgkAAZAAAAABBQAAAAxjdXJyZW50UG9vbHMFAAAAC2Ftb3VudFBvb2xzCQAAAgAAAAEJAAEsAAAAAgIAAAAWTWF4IGFtb3VudCBvZiBwb29sIGlzIAkAAaQAAAABBQAAAAthbW91bnRQb29scwMJAABnAAAAAgUAAAAXdG90YWxSZXdhcmRVcGRhdGVIZWlnaHQFAAAAEnJld2FyZFVwZGF0ZUhlaWdodAkAAAIAAAABAgAAAC1yZXdhcmRVcGRhdGVIZWlnaHQgPD0gdG90YWxSZXdhcmRVcGRhdGVIZWlnaHQDCQAAZwAAAAIFAAAABmhlaWdodAUAAAAScmV3YXJkVXBkYXRlSGVpZ2h0CQAAAgAAAAECAAAAHGhlaWdodCA+PSByZXdhcmRVcGRhdGVIZWlnaHQDCQAAZwAAAAIAAAAAAAAAAAAFAAAAEnJld2FyZFVwZGF0ZUhlaWdodAkAAAIAAAABAgAAABgwID49IHJld2FyZFVwZGF0ZUhlaWdodCAKAQAAAANzdW0AAAACAAAAAWEAAAABYgkAAGQAAAACBQAAAAFhBQAAAAFiCgEAAAAZY2hhbmdlUHJldmlvdXNSZXdhcmRFbnRyeQAAAAIAAAALYWNjdW11bGF0ZWQAAAAEcG9vbAQAAAAWcG9vbFJld2FyZFVwZGF0ZUhlaWdodAkBAAAAE2dldFBvb2xVcGRhdGVIZWlnaHQAAAABBQAAAARwb29sAwMJAQAAAAEhAAAAAQkBAAAAGGlzRGVmaW5lUG9vbFVwZGF0ZUhlaWdodAAAAAEFAAAABHBvb2wGAwkBAAAAAiE9AAAAAgUAAAAScmV3YXJkVXBkYXRlSGVpZ2h0BQAAABZwb29sUmV3YXJkVXBkYXRlSGVpZ2h0CQAAAAAAAAIFAAAAFnBvb2xSZXdhcmRVcGRhdGVIZWlnaHQFAAAAF3RvdGFsUmV3YXJkVXBkYXRlSGVpZ2h0BwQAAAAKcG9vbFJld2FyZAkBAAAAEGdldEN1clBvb2xXZWlnaHQAAAABBQAAAARwb29sCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIFAAAABHBvb2wFAAAAHWtleVJld2FyZFBvb2xGcmFjdGlvblByZXZpb3VzBQAAAApwb29sUmV3YXJkBQAAAAthY2N1bXVsYXRlZAQAAAAKcG9vbFJld2FyZAkBAAAAEWdldFByZXZQb29sV2VpZ2h0AAAAAQUAAAAEcG9vbAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACBQAAAARwb29sBQAAAB1rZXlSZXdhcmRQb29sRnJhY3Rpb25QcmV2aW91cwUAAAAKcG9vbFJld2FyZAUAAAALYWNjdW11bGF0ZWQKAQAAABhjaGFuZ2VDdXJyZW50UmV3YXJkRW50cnkAAAACAAAAC2FjY3VtdWxhdGVkAAAABHBvb2wEAAAACXBvb2xJbmRleAkBAAAABXZhbHVlAAAAAQkABE8AAAACBQAAAAxjdXJyZW50UG9vbHMFAAAABHBvb2wEAAAACnBvb2xSZXdhcmQJAAGRAAAAAgUAAAAOY3VycmVudFJld2FyZHMFAAAACXBvb2xJbmRleAMJAABmAAAAAgAAAAAAAAAAAAUAAAAKcG9vbFJld2FyZAkAAAIAAAABAgAAAA5Qb29sUmV3YXJkIDwgMAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACBQAAAARwb29sBQAAABxrZXlSZXdhcmRQb29sRnJhY3Rpb25DdXJyZW50BQAAAApwb29sUmV3YXJkBQAAAAthY2N1bXVsYXRlZAoBAAAAEWNoYW5nZUhlaWdodEVudHJ5AAAAAgAAAAthY2N1bXVsYXRlZAAAAARwb29sBAAAAApwb29sSGVpZ2h0BQAAABJyZXdhcmRVcGRhdGVIZWlnaHQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgUAAAAEcG9vbAUAAAAVa2V5SGVpZ2h0UG9vbEZyYWN0aW9uBQAAAApwb29sSGVpZ2h0BQAAAAthY2N1bXVsYXRlZAoBAAAADGdldFN1bVJld2FyZAAAAAIAAAAKY3VyVGVtcFN1bQAAAApwYWdpbmF0aW9uAwkAAAAAAAACBQAAAApwYWdpbmF0aW9uAAAAAAAAAAAAAwkAAGYAAAACBQAAAApjdXJUZW1wU3VtBQAAAA50b3RhbFZvdGVTaGFyZQkAAAIAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAEpzdW1SZXdhcmRQcmV2aW91cyA+IHRvdGFsVm90ZVNoYXJlIG9yIHN1bVJld2FyZEN1cnJlbnQgPiB0b3RhbFZvdGVTaGFyZSAtIAkAAaQAAAABBQAAAApwYWdpbmF0aW9uAgAAAAEgCQABpAAAAAEFAAAACmN1clRlbXBTdW0JAAUUAAAAAgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAANa2V5VGVtcEN1clN1bQUAAAAKY3VyVGVtcFN1bQUAAAADbmlsCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAACRrZXlSZXdhcmRVcGRhdGVGaXJzdFBhZ2luYXRpb25IZWlnaHQFAAAAEnJld2FyZFVwZGF0ZUhlaWdodAUAAAADbmlsAwkAAAAAAAACBQAAAApwYWdpbmF0aW9uAAAAAAAAAAABBAAAABFjdXJUZW1wU3VtRnJvbUtleQkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAAR0aGlzBQAAAA1rZXlUZW1wQ3VyU3VtAAAAAAAAAAAABAAAACZyZXdhcmRVcGRhdGVIZWlnaHRGaXJzdFBhZ2luYXRpb25FbnRyeQkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAAR0aGlzBQAAACRrZXlSZXdhcmRVcGRhdGVGaXJzdFBhZ2luYXRpb25IZWlnaHQAAAAAAAAAAAADCQAAZgAAAAIJAABkAAAAAgUAAAAKY3VyVGVtcFN1bQUAAAARY3VyVGVtcFN1bUZyb21LZXkFAAAADnRvdGFsVm90ZVNoYXJlCQAAAgAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAASnN1bVJld2FyZFByZXZpb3VzID4gdG90YWxWb3RlU2hhcmUgb3Igc3VtUmV3YXJkQ3VycmVudCA+IHRvdGFsVm90ZVNoYXJlIC0gCQABpAAAAAEFAAAACnBhZ2luYXRpb24CAAAAASAJAAGkAAAAAQkAAGQAAAACBQAAAApjdXJUZW1wU3VtBQAAABFjdXJUZW1wU3VtRnJvbUtleQMJAQAAAAIhPQAAAAIFAAAAJnJld2FyZFVwZGF0ZUhlaWdodEZpcnN0UGFnaW5hdGlvbkVudHJ5BQAAABJyZXdhcmRVcGRhdGVIZWlnaHQJAAACAAAAAQIAAABEY3VycmVudCByZXdhcmRVcGRhdGVIZWlnaHQgIT0gcmV3YXJkVXBkYXRlSGVpZ2h0Rmlyc3RQYWdpbmF0aW9uRW50cnkJAAUUAAAAAgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAANa2V5VGVtcEN1clN1bQkAAGQAAAACBQAAAApjdXJUZW1wU3VtBQAAABFjdXJUZW1wU3VtRnJvbUtleQUAAAADbmlsBQAAAANuaWwDCQAAAAAAAAIFAAAACnBhZ2luYXRpb24AAAAAAAAAAAIEAAAABmN1clN1bQkAAGQAAAACCQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAABHRoaXMFAAAADWtleVRlbXBDdXJTdW0AAAAAAAAAAAAFAAAACmN1clRlbXBTdW0EAAAAJnJld2FyZFVwZGF0ZUhlaWdodEZpcnN0UGFnaW5hdGlvbkVudHJ5CQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAABHRoaXMFAAAAJGtleVJld2FyZFVwZGF0ZUZpcnN0UGFnaW5hdGlvbkhlaWdodAAAAAAAAAAAAAMJAQAAAAIhPQAAAAIFAAAABmN1clN1bQUAAAAOdG90YWxWb3RlU2hhcmUJAAACAAAAAQIAAABJc3VtUmV3YXJkUHJldmlvdXMgIT0gdG90YWxWb3RlU2hhcmUgb3Igc3VtUmV3YXJkQ3VycmVudCAhPSB0b3RhbFZvdGVTaGFyZQMJAQAAAAIhPQAAAAIFAAAAJnJld2FyZFVwZGF0ZUhlaWdodEZpcnN0UGFnaW5hdGlvbkVudHJ5BQAAABJyZXdhcmRVcGRhdGVIZWlnaHQJAAACAAAAAQIAAABEY3VycmVudCByZXdhcmRVcGRhdGVIZWlnaHQgIT0gcmV3YXJkVXBkYXRlSGVpZ2h0Rmlyc3RQYWdpbmF0aW9uRW50cnkJAAUUAAAAAgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAANa2V5VGVtcEN1clN1bQUAAAAGY3VyU3VtBQAAAANuaWwFAAAAA25pbAkAAAIAAAABAgAAABRJbmNvcnJlY3QgcGFnaW5hdGlvbgQAAAAWcHJldmlvdXNSZXdhcmRFbnRyeU5ldwQAAAAPJGxpc3QxODk3MzE5MDI1BQAAAAxjdXJyZW50UG9vbHMEAAAADyRzaXplMTg5NzMxOTAyNQkAAZAAAAABBQAAAA8kbGlzdDE4OTczMTkwMjUEAAAADyRhY2MwMTg5NzMxOTAyNQUAAAADbmlsAwkAAAAAAAACBQAAAA8kc2l6ZTE4OTczMTkwMjUAAAAAAAAAAAAFAAAADyRhY2MwMTg5NzMxOTAyNQQAAAAPJGFjYzExODk3MzE5MDI1CQEAAAAZY2hhbmdlUHJldmlvdXNSZXdhcmRFbnRyeQAAAAIFAAAADyRhY2MwMTg5NzMxOTAyNQkAAZEAAAACBQAAAA8kbGlzdDE4OTczMTkwMjUAAAAAAAAAAAADCQAAAAAAAAIFAAAADyRzaXplMTg5NzMxOTAyNQAAAAAAAAAAAQUAAAAPJGFjYzExODk3MzE5MDI1BAAAAA8kYWNjMjE4OTczMTkwMjUJAQAAABljaGFuZ2VQcmV2aW91c1Jld2FyZEVudHJ5AAAAAgUAAAAPJGFjYzExODk3MzE5MDI1CQABkQAAAAIFAAAADyRsaXN0MTg5NzMxOTAyNQAAAAAAAAAAAQMJAAAAAAAAAgUAAAAPJHNpemUxODk3MzE5MDI1AAAAAAAAAAACBQAAAA8kYWNjMjE4OTczMTkwMjUEAAAADyRhY2MzMTg5NzMxOTAyNQkBAAAAGWNoYW5nZVByZXZpb3VzUmV3YXJkRW50cnkAAAACBQAAAA8kYWNjMjE4OTczMTkwMjUJAAGRAAAAAgUAAAAPJGxpc3QxODk3MzE5MDI1AAAAAAAAAAACAwkAAAAAAAACBQAAAA8kc2l6ZTE4OTczMTkwMjUAAAAAAAAAAAMFAAAADyRhY2MzMTg5NzMxOTAyNQQAAAAPJGFjYzQxODk3MzE5MDI1CQEAAAAZY2hhbmdlUHJldmlvdXNSZXdhcmRFbnRyeQAAAAIFAAAADyRhY2MzMTg5NzMxOTAyNQkAAZEAAAACBQAAAA8kbGlzdDE4OTczMTkwMjUAAAAAAAAAAAMDCQAAAAAAAAIFAAAADyRzaXplMTg5NzMxOTAyNQAAAAAAAAAABAUAAAAPJGFjYzQxODk3MzE5MDI1BAAAAA8kYWNjNTE4OTczMTkwMjUJAQAAABljaGFuZ2VQcmV2aW91c1Jld2FyZEVudHJ5AAAAAgUAAAAPJGFjYzQxODk3MzE5MDI1CQABkQAAAAIFAAAADyRsaXN0MTg5NzMxOTAyNQAAAAAAAAAABAMJAAAAAAAAAgUAAAAPJHNpemUxODk3MzE5MDI1AAAAAAAAAAAFBQAAAA8kYWNjNTE4OTczMTkwMjUEAAAADyRhY2M2MTg5NzMxOTAyNQkBAAAAGWNoYW5nZVByZXZpb3VzUmV3YXJkRW50cnkAAAACBQAAAA8kYWNjNTE4OTczMTkwMjUJAAGRAAAAAgUAAAAPJGxpc3QxODk3MzE5MDI1AAAAAAAAAAAFAwkAAAAAAAACBQAAAA8kc2l6ZTE4OTczMTkwMjUAAAAAAAAAAAYFAAAADyRhY2M2MTg5NzMxOTAyNQQAAAAPJGFjYzcxODk3MzE5MDI1CQEAAAAZY2hhbmdlUHJldmlvdXNSZXdhcmRFbnRyeQAAAAIFAAAADyRhY2M2MTg5NzMxOTAyNQkAAZEAAAACBQAAAA8kbGlzdDE4OTczMTkwMjUAAAAAAAAAAAYDCQAAAAAAAAIFAAAADyRzaXplMTg5NzMxOTAyNQAAAAAAAAAABwUAAAAPJGFjYzcxODk3MzE5MDI1BAAAAA8kYWNjODE4OTczMTkwMjUJAQAAABljaGFuZ2VQcmV2aW91c1Jld2FyZEVudHJ5AAAAAgUAAAAPJGFjYzcxODk3MzE5MDI1CQABkQAAAAIFAAAADyRsaXN0MTg5NzMxOTAyNQAAAAAAAAAABwMJAAAAAAAAAgUAAAAPJHNpemUxODk3MzE5MDI1AAAAAAAAAAAIBQAAAA8kYWNjODE4OTczMTkwMjUEAAAADyRhY2M5MTg5NzMxOTAyNQkBAAAAGWNoYW5nZVByZXZpb3VzUmV3YXJkRW50cnkAAAACBQAAAA8kYWNjODE4OTczMTkwMjUJAAGRAAAAAgUAAAAPJGxpc3QxODk3MzE5MDI1AAAAAAAAAAAIAwkAAAAAAAACBQAAAA8kc2l6ZTE4OTczMTkwMjUAAAAAAAAAAAkFAAAADyRhY2M5MTg5NzMxOTAyNQQAAAAQJGFjYzEwMTg5NzMxOTAyNQkBAAAAGWNoYW5nZVByZXZpb3VzUmV3YXJkRW50cnkAAAACBQAAAA8kYWNjOTE4OTczMTkwMjUJAAGRAAAAAgUAAAAPJGxpc3QxODk3MzE5MDI1AAAAAAAAAAAJAwkAAAAAAAACBQAAAA8kc2l6ZTE4OTczMTkwMjUAAAAAAAAAAAoFAAAAECRhY2MxMDE4OTczMTkwMjUEAAAAECRhY2MxMTE4OTczMTkwMjUJAQAAABljaGFuZ2VQcmV2aW91c1Jld2FyZEVudHJ5AAAAAgUAAAAQJGFjYzEwMTg5NzMxOTAyNQkAAZEAAAACBQAAAA8kbGlzdDE4OTczMTkwMjUAAAAAAAAAAAoJAAACAAAAAQIAAAATTGlzdCBzaXplIGV4Y2VlZCAxMAQAAAAVY3VycmVudFJld2FyZEVudHJ5TmV3BAAAAA8kbGlzdDE5MDU4MTkxMTAFAAAADGN1cnJlbnRQb29scwQAAAAPJHNpemUxOTA1ODE5MTEwCQABkAAAAAEFAAAADyRsaXN0MTkwNTgxOTExMAQAAAAPJGFjYzAxOTA1ODE5MTEwBQAAAANuaWwDCQAAAAAAAAIFAAAADyRzaXplMTkwNTgxOTExMAAAAAAAAAAAAAUAAAAPJGFjYzAxOTA1ODE5MTEwBAAAAA8kYWNjMTE5MDU4MTkxMTAJAQAAABhjaGFuZ2VDdXJyZW50UmV3YXJkRW50cnkAAAACBQAAAA8kYWNjMDE5MDU4MTkxMTAJAAGRAAAAAgUAAAAPJGxpc3QxOTA1ODE5MTEwAAAAAAAAAAAAAwkAAAAAAAACBQAAAA8kc2l6ZTE5MDU4MTkxMTAAAAAAAAAAAAEFAAAADyRhY2MxMTkwNTgxOTExMAQAAAAPJGFjYzIxOTA1ODE5MTEwCQEAAAAYY2hhbmdlQ3VycmVudFJld2FyZEVudHJ5AAAAAgUAAAAPJGFjYzExOTA1ODE5MTEwCQABkQAAAAIFAAAADyRsaXN0MTkwNTgxOTExMAAAAAAAAAAAAQMJAAAAAAAAAgUAAAAPJHNpemUxOTA1ODE5MTEwAAAAAAAAAAACBQAAAA8kYWNjMjE5MDU4MTkxMTAEAAAADyRhY2MzMTkwNTgxOTExMAkBAAAAGGNoYW5nZUN1cnJlbnRSZXdhcmRFbnRyeQAAAAIFAAAADyRhY2MyMTkwNTgxOTExMAkAAZEAAAACBQAAAA8kbGlzdDE5MDU4MTkxMTAAAAAAAAAAAAIDCQAAAAAAAAIFAAAADyRzaXplMTkwNTgxOTExMAAAAAAAAAAAAwUAAAAPJGFjYzMxOTA1ODE5MTEwBAAAAA8kYWNjNDE5MDU4MTkxMTAJAQAAABhjaGFuZ2VDdXJyZW50UmV3YXJkRW50cnkAAAACBQAAAA8kYWNjMzE5MDU4MTkxMTAJAAGRAAAAAgUAAAAPJGxpc3QxOTA1ODE5MTEwAAAAAAAAAAADAwkAAAAAAAACBQAAAA8kc2l6ZTE5MDU4MTkxMTAAAAAAAAAAAAQFAAAADyRhY2M0MTkwNTgxOTExMAQAAAAPJGFjYzUxOTA1ODE5MTEwCQEAAAAYY2hhbmdlQ3VycmVudFJld2FyZEVudHJ5AAAAAgUAAAAPJGFjYzQxOTA1ODE5MTEwCQABkQAAAAIFAAAADyRsaXN0MTkwNTgxOTExMAAAAAAAAAAABAMJAAAAAAAAAgUAAAAPJHNpemUxOTA1ODE5MTEwAAAAAAAAAAAFBQAAAA8kYWNjNTE5MDU4MTkxMTAEAAAADyRhY2M2MTkwNTgxOTExMAkBAAAAGGNoYW5nZUN1cnJlbnRSZXdhcmRFbnRyeQAAAAIFAAAADyRhY2M1MTkwNTgxOTExMAkAAZEAAAACBQAAAA8kbGlzdDE5MDU4MTkxMTAAAAAAAAAAAAUDCQAAAAAAAAIFAAAADyRzaXplMTkwNTgxOTExMAAAAAAAAAAABgUAAAAPJGFjYzYxOTA1ODE5MTEwBAAAAA8kYWNjNzE5MDU4MTkxMTAJAQAAABhjaGFuZ2VDdXJyZW50UmV3YXJkRW50cnkAAAACBQAAAA8kYWNjNjE5MDU4MTkxMTAJAAGRAAAAAgUAAAAPJGxpc3QxOTA1ODE5MTEwAAAAAAAAAAAGAwkAAAAAAAACBQAAAA8kc2l6ZTE5MDU4MTkxMTAAAAAAAAAAAAcFAAAADyRhY2M3MTkwNTgxOTExMAQAAAAPJGFjYzgxOTA1ODE5MTEwCQEAAAAYY2hhbmdlQ3VycmVudFJld2FyZEVudHJ5AAAAAgUAAAAPJGFjYzcxOTA1ODE5MTEwCQABkQAAAAIFAAAADyRsaXN0MTkwNTgxOTExMAAAAAAAAAAABwMJAAAAAAAAAgUAAAAPJHNpemUxOTA1ODE5MTEwAAAAAAAAAAAIBQAAAA8kYWNjODE5MDU4MTkxMTAEAAAADyRhY2M5MTkwNTgxOTExMAkBAAAAGGNoYW5nZUN1cnJlbnRSZXdhcmRFbnRyeQAAAAIFAAAADyRhY2M4MTkwNTgxOTExMAkAAZEAAAACBQAAAA8kbGlzdDE5MDU4MTkxMTAAAAAAAAAAAAgDCQAAAAAAAAIFAAAADyRzaXplMTkwNTgxOTExMAAAAAAAAAAACQUAAAAPJGFjYzkxOTA1ODE5MTEwBAAAABAkYWNjMTAxOTA1ODE5MTEwCQEAAAAYY2hhbmdlQ3VycmVudFJld2FyZEVudHJ5AAAAAgUAAAAPJGFjYzkxOTA1ODE5MTEwCQABkQAAAAIFAAAADyRsaXN0MTkwNTgxOTExMAAAAAAAAAAACQMJAAAAAAAAAgUAAAAPJHNpemUxOTA1ODE5MTEwAAAAAAAAAAAKBQAAABAkYWNjMTAxOTA1ODE5MTEwBAAAABAkYWNjMTExOTA1ODE5MTEwCQEAAAAYY2hhbmdlQ3VycmVudFJld2FyZEVudHJ5AAAAAgUAAAAQJGFjYzEwMTkwNTgxOTExMAkAAZEAAAACBQAAAA8kbGlzdDE5MDU4MTkxMTAAAAAAAAAAAAoJAAACAAAAAQIAAAATTGlzdCBzaXplIGV4Y2VlZCAxMAQAAAARaGVpZ2h0RW50cnlOZXdDdXIEAAAADyRsaXN0MTkxMzkxOTE4NAUAAAAMY3VycmVudFBvb2xzBAAAAA8kc2l6ZTE5MTM5MTkxODQJAAGQAAAAAQUAAAAPJGxpc3QxOTEzOTE5MTg0BAAAAA8kYWNjMDE5MTM5MTkxODQFAAAAA25pbAMJAAAAAAAAAgUAAAAPJHNpemUxOTEzOTE5MTg0AAAAAAAAAAAABQAAAA8kYWNjMDE5MTM5MTkxODQEAAAADyRhY2MxMTkxMzkxOTE4NAkBAAAAEWNoYW5nZUhlaWdodEVudHJ5AAAAAgUAAAAPJGFjYzAxOTEzOTE5MTg0CQABkQAAAAIFAAAADyRsaXN0MTkxMzkxOTE4NAAAAAAAAAAAAAMJAAAAAAAAAgUAAAAPJHNpemUxOTEzOTE5MTg0AAAAAAAAAAABBQAAAA8kYWNjMTE5MTM5MTkxODQEAAAADyRhY2MyMTkxMzkxOTE4NAkBAAAAEWNoYW5nZUhlaWdodEVudHJ5AAAAAgUAAAAPJGFjYzExOTEzOTE5MTg0CQABkQAAAAIFAAAADyRsaXN0MTkxMzkxOTE4NAAAAAAAAAAAAQMJAAAAAAAAAgUAAAAPJHNpemUxOTEzOTE5MTg0AAAAAAAAAAACBQAAAA8kYWNjMjE5MTM5MTkxODQEAAAADyRhY2MzMTkxMzkxOTE4NAkBAAAAEWNoYW5nZUhlaWdodEVudHJ5AAAAAgUAAAAPJGFjYzIxOTEzOTE5MTg0CQABkQAAAAIFAAAADyRsaXN0MTkxMzkxOTE4NAAAAAAAAAAAAgMJAAAAAAAAAgUAAAAPJHNpemUxOTEzOTE5MTg0AAAAAAAAAAADBQAAAA8kYWNjMzE5MTM5MTkxODQEAAAADyRhY2M0MTkxMzkxOTE4NAkBAAAAEWNoYW5nZUhlaWdodEVudHJ5AAAAAgUAAAAPJGFjYzMxOTEzOTE5MTg0CQABkQAAAAIFAAAADyRsaXN0MTkxMzkxOTE4NAAAAAAAAAAAAwMJAAAAAAAAAgUAAAAPJHNpemUxOTEzOTE5MTg0AAAAAAAAAAAEBQAAAA8kYWNjNDE5MTM5MTkxODQEAAAADyRhY2M1MTkxMzkxOTE4NAkBAAAAEWNoYW5nZUhlaWdodEVudHJ5AAAAAgUAAAAPJGFjYzQxOTEzOTE5MTg0CQABkQAAAAIFAAAADyRsaXN0MTkxMzkxOTE4NAAAAAAAAAAABAMJAAAAAAAAAgUAAAAPJHNpemUxOTEzOTE5MTg0AAAAAAAAAAAFBQAAAA8kYWNjNTE5MTM5MTkxODQEAAAADyRhY2M2MTkxMzkxOTE4NAkBAAAAEWNoYW5nZUhlaWdodEVudHJ5AAAAAgUAAAAPJGFjYzUxOTEzOTE5MTg0CQABkQAAAAIFAAAADyRsaXN0MTkxMzkxOTE4NAAAAAAAAAAABQMJAAAAAAAAAgUAAAAPJHNpemUxOTEzOTE5MTg0AAAAAAAAAAAGBQAAAA8kYWNjNjE5MTM5MTkxODQEAAAADyRhY2M3MTkxMzkxOTE4NAkBAAAAEWNoYW5nZUhlaWdodEVudHJ5AAAAAgUAAAAPJGFjYzYxOTEzOTE5MTg0CQABkQAAAAIFAAAADyRsaXN0MTkxMzkxOTE4NAAAAAAAAAAABgMJAAAAAAAAAgUAAAAPJHNpemUxOTEzOTE5MTg0AAAAAAAAAAAHBQAAAA8kYWNjNzE5MTM5MTkxODQEAAAADyRhY2M4MTkxMzkxOTE4NAkBAAAAEWNoYW5nZUhlaWdodEVudHJ5AAAAAgUAAAAPJGFjYzcxOTEzOTE5MTg0CQABkQAAAAIFAAAADyRsaXN0MTkxMzkxOTE4NAAAAAAAAAAABwMJAAAAAAAAAgUAAAAPJHNpemUxOTEzOTE5MTg0AAAAAAAAAAAIBQAAAA8kYWNjODE5MTM5MTkxODQEAAAADyRhY2M5MTkxMzkxOTE4NAkBAAAAEWNoYW5nZUhlaWdodEVudHJ5AAAAAgUAAAAPJGFjYzgxOTEzOTE5MTg0CQABkQAAAAIFAAAADyRsaXN0MTkxMzkxOTE4NAAAAAAAAAAACAMJAAAAAAAAAgUAAAAPJHNpemUxOTEzOTE5MTg0AAAAAAAAAAAJBQAAAA8kYWNjOTE5MTM5MTkxODQEAAAAECRhY2MxMDE5MTM5MTkxODQJAQAAABFjaGFuZ2VIZWlnaHRFbnRyeQAAAAIFAAAADyRhY2M5MTkxMzkxOTE4NAkAAZEAAAACBQAAAA8kbGlzdDE5MTM5MTkxODQAAAAAAAAAAAkDCQAAAAAAAAIFAAAADyRzaXplMTkxMzkxOTE4NAAAAAAAAAAACgUAAAAQJGFjYzEwMTkxMzkxOTE4NAQAAAAQJGFjYzExMTkxMzkxOTE4NAkBAAAAEWNoYW5nZUhlaWdodEVudHJ5AAAAAgUAAAAQJGFjYzEwMTkxMzkxOTE4NAkAAZEAAAACBQAAAA8kbGlzdDE5MTM5MTkxODQAAAAAAAAAAAoJAAACAAAAAQIAAAATTGlzdCBzaXplIGV4Y2VlZCAxMAQAAAAUc3VtUmV3YXJkQ3VycmVudFRlbXAEAAAADyRsaXN0MTkyMTgxOTI1MAUAAAAOY3VycmVudFJld2FyZHMEAAAADyRzaXplMTkyMTgxOTI1MAkAAZAAAAABBQAAAA8kbGlzdDE5MjE4MTkyNTAEAAAADyRhY2MwMTkyMTgxOTI1MAAAAAAAAAAAAAMJAAAAAAAAAgUAAAAPJHNpemUxOTIxODE5MjUwAAAAAAAAAAAABQAAAA8kYWNjMDE5MjE4MTkyNTAEAAAADyRhY2MxMTkyMTgxOTI1MAkBAAAAA3N1bQAAAAIFAAAADyRhY2MwMTkyMTgxOTI1MAkAAZEAAAACBQAAAA8kbGlzdDE5MjE4MTkyNTAAAAAAAAAAAAADCQAAAAAAAAIFAAAADyRzaXplMTkyMTgxOTI1MAAAAAAAAAAAAQUAAAAPJGFjYzExOTIxODE5MjUwBAAAAA8kYWNjMjE5MjE4MTkyNTAJAQAAAANzdW0AAAACBQAAAA8kYWNjMTE5MjE4MTkyNTAJAAGRAAAAAgUAAAAPJGxpc3QxOTIxODE5MjUwAAAAAAAAAAABAwkAAAAAAAACBQAAAA8kc2l6ZTE5MjE4MTkyNTAAAAAAAAAAAAIFAAAADyRhY2MyMTkyMTgxOTI1MAQAAAAPJGFjYzMxOTIxODE5MjUwCQEAAAADc3VtAAAAAgUAAAAPJGFjYzIxOTIxODE5MjUwCQABkQAAAAIFAAAADyRsaXN0MTkyMTgxOTI1MAAAAAAAAAAAAgMJAAAAAAAAAgUAAAAPJHNpemUxOTIxODE5MjUwAAAAAAAAAAADBQAAAA8kYWNjMzE5MjE4MTkyNTAEAAAADyRhY2M0MTkyMTgxOTI1MAkBAAAAA3N1bQAAAAIFAAAADyRhY2MzMTkyMTgxOTI1MAkAAZEAAAACBQAAAA8kbGlzdDE5MjE4MTkyNTAAAAAAAAAAAAMDCQAAAAAAAAIFAAAADyRzaXplMTkyMTgxOTI1MAAAAAAAAAAABAUAAAAPJGFjYzQxOTIxODE5MjUwBAAAAA8kYWNjNTE5MjE4MTkyNTAJAQAAAANzdW0AAAACBQAAAA8kYWNjNDE5MjE4MTkyNTAJAAGRAAAAAgUAAAAPJGxpc3QxOTIxODE5MjUwAAAAAAAAAAAEAwkAAAAAAAACBQAAAA8kc2l6ZTE5MjE4MTkyNTAAAAAAAAAAAAUFAAAADyRhY2M1MTkyMTgxOTI1MAQAAAAPJGFjYzYxOTIxODE5MjUwCQEAAAADc3VtAAAAAgUAAAAPJGFjYzUxOTIxODE5MjUwCQABkQAAAAIFAAAADyRsaXN0MTkyMTgxOTI1MAAAAAAAAAAABQMJAAAAAAAAAgUAAAAPJHNpemUxOTIxODE5MjUwAAAAAAAAAAAGBQAAAA8kYWNjNjE5MjE4MTkyNTAEAAAADyRhY2M3MTkyMTgxOTI1MAkBAAAAA3N1bQAAAAIFAAAADyRhY2M2MTkyMTgxOTI1MAkAAZEAAAACBQAAAA8kbGlzdDE5MjE4MTkyNTAAAAAAAAAAAAYDCQAAAAAAAAIFAAAADyRzaXplMTkyMTgxOTI1MAAAAAAAAAAABwUAAAAPJGFjYzcxOTIxODE5MjUwBAAAAA8kYWNjODE5MjE4MTkyNTAJAQAAAANzdW0AAAACBQAAAA8kYWNjNzE5MjE4MTkyNTAJAAGRAAAAAgUAAAAPJGxpc3QxOTIxODE5MjUwAAAAAAAAAAAHAwkAAAAAAAACBQAAAA8kc2l6ZTE5MjE4MTkyNTAAAAAAAAAAAAgFAAAADyRhY2M4MTkyMTgxOTI1MAQAAAAPJGFjYzkxOTIxODE5MjUwCQEAAAADc3VtAAAAAgUAAAAPJGFjYzgxOTIxODE5MjUwCQABkQAAAAIFAAAADyRsaXN0MTkyMTgxOTI1MAAAAAAAAAAACAMJAAAAAAAAAgUAAAAPJHNpemUxOTIxODE5MjUwAAAAAAAAAAAJBQAAAA8kYWNjOTE5MjE4MTkyNTAEAAAAECRhY2MxMDE5MjE4MTkyNTAJAQAAAANzdW0AAAACBQAAAA8kYWNjOTE5MjE4MTkyNTAJAAGRAAAAAgUAAAAPJGxpc3QxOTIxODE5MjUwAAAAAAAAAAAJAwkAAAAAAAACBQAAAA8kc2l6ZTE5MjE4MTkyNTAAAAAAAAAAAAoFAAAAECRhY2MxMDE5MjE4MTkyNTAEAAAAECRhY2MxMTE5MjE4MTkyNTAJAQAAAANzdW0AAAACBQAAABAkYWNjMTAxOTIxODE5MjUwCQABkQAAAAIFAAAADyRsaXN0MTkyMTgxOTI1MAAAAAAAAAAACgkAAAIAAAABAgAAABNMaXN0IHNpemUgZXhjZWVkIDEwBAAAAA0kdDAxOTI1NjE5MzY3CQEAAAAMZ2V0U3VtUmV3YXJkAAAAAgUAAAAUc3VtUmV3YXJkQ3VycmVudFRlbXAFAAAACnBhZ2luYXRpb24EAAAAEHN1bVJld2FyZEN1cnJlbnQIBQAAAA0kdDAxOTI1NjE5MzY3AAAAAl8xBAAAACZyZXdhcmRVcGRhdGVIZWlnaHRGaXJzdFBhZ2luYXRpb25FbnRyeQgFAAAADSR0MDE5MjU2MTkzNjcAAAACXzIEAAAAF3Jld2FyZFVwZGF0ZUhlaWdodEVudHJ5AwkAAAAAAAACBQAAAApwYWdpbmF0aW9uAAAAAAAAAAACCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABVrZXlSZXdhcmRVcGRhdGVIZWlnaHQFAAAAEnJld2FyZFVwZGF0ZUhlaWdodAUAAAADbmlsBQAAAANuaWwDCQAAZgAAAAIFAAAABmhlaWdodAUAAAAScmV3YXJkVXBkYXRlSGVpZ2h0CQAAAgAAAAECAAAAG3Jld2FyZFVwZGF0ZUhlaWdodCA8IGhlaWdodAkABE4AAAACCQAETgAAAAIJAAROAAAAAgkABE4AAAACCQAETgAAAAIFAAAAFnByZXZpb3VzUmV3YXJkRW50cnlOZXcFAAAAFWN1cnJlbnRSZXdhcmRFbnRyeU5ldwUAAAARaGVpZ2h0RW50cnlOZXdDdXIFAAAAEHN1bVJld2FyZEN1cnJlbnQFAAAAF3Jld2FyZFVwZGF0ZUhlaWdodEVudHJ5BQAAACZyZXdhcmRVcGRhdGVIZWlnaHRGaXJzdFBhZ2luYXRpb25FbnRyeQAAAAFpAQAAAAhzaHV0ZG93bgAAAAADCQEAAAABIQAAAAEFAAAACGlzQWN0aXZlCQAAAgAAAAEJAAEsAAAAAgIAAAAiREFwcCBpcyBhbHJlYWR5IHN1c3BlbmRlZC4gQ2F1c2U6IAkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABB0AAAACBQAAAAR0aGlzBQAAAAhrZXlDYXVzZQIAAAAadGhlIGNhdXNlIHdhc24ndCBzcGVjaWZpZWQDCQEAAAABIQAAAAEJAQAAAA9jb250YWluc0VsZW1lbnQAAAACCQAETAAAAAIFAAAADGFkbWluUHViS2V5MQkABEwAAAACBQAAAAxhZG1pblB1YktleTIJAARMAAAAAgUAAAAMYWRtaW5QdWJLZXkzCQAETAAAAAIFAAAAFGFkbWluUHViS2V5U3RhcnRTdG9wBQAAAANuaWwIBQAAAAFpAAAAD2NhbGxlclB1YmxpY0tleQkAAAIAAAABAgAAACFPbmx5IGFkbWluIGNhbiBjYWxsIHRoaXMgZnVuY3Rpb24JAQAAAAdzdXNwZW5kAAAAAQIAAAAPUGF1c2VkIGJ5IGFkbWluAAAAAWkBAAAACGFjdGl2YXRlAAAAAAMFAAAACGlzQWN0aXZlCQAAAgAAAAECAAAAFkRBcHAgaXMgYWxyZWFkeSBhY3RpdmUDCQEAAAABIQAAAAEJAQAAAA9jb250YWluc0VsZW1lbnQAAAACCQAETAAAAAIFAAAADGFkbWluUHViS2V5MQkABEwAAAACBQAAAAxhZG1pblB1YktleTIJAARMAAAAAgUAAAAMYWRtaW5QdWJLZXkzCQAETAAAAAIFAAAAFGFkbWluUHViS2V5U3RhcnRTdG9wBQAAAANuaWwIBQAAAAFpAAAAD2NhbGxlclB1YmxpY0tleQkAAAIAAAABAgAAACFPbmx5IGFkbWluIGNhbiBjYWxsIHRoaXMgZnVuY3Rpb24JAARMAAAAAgkBAAAADEJvb2xlYW5FbnRyeQAAAAIFAAAACWtleUFjdGl2ZQYJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQUAAAAIa2V5Q2F1c2UFAAAAA25pbAAAAAEAAAACdHgBAAAABnZlcmlmeQAAAAAEAAAAEmFkbWluUHViS2V5MVNpZ25lZAMJAAH0AAAAAwgFAAAAAnR4AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAACdHgAAAAGcHJvb2ZzAAAAAAAAAAAABQAAAAxhZG1pblB1YktleTEAAAAAAAAAAAEAAAAAAAAAAAAEAAAAEmFkbWluUHViS2V5MlNpZ25lZAMJAAH0AAAAAwgFAAAAAnR4AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAACdHgAAAAGcHJvb2ZzAAAAAAAAAAABBQAAAAxhZG1pblB1YktleTIAAAAAAAAAAAEAAAAAAAAAAAAEAAAAEmFkbWluUHViS2V5M1NpZ25lZAMJAAH0AAAAAwgFAAAAAnR4AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAACdHgAAAAGcHJvb2ZzAAAAAAAAAAACBQAAAAxhZG1pblB1YktleTMAAAAAAAAAAAEAAAAAAAAAAAAJAABnAAAAAgkAAGQAAAACCQAAZAAAAAIFAAAAEmFkbWluUHViS2V5MVNpZ25lZAUAAAASYWRtaW5QdWJLZXkyU2lnbmVkBQAAABJhZG1pblB1YktleTNTaWduZWQAAAAAAAAAAAKpY8Lt", "height": 1612988, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 56n7J4K8cqhiw3Aw6UsvT2FNwpoXHucJnSqbKVxhLPT6 Next: B19w4a1oHoLB6JZkfhoP45ELhQebDusMwBTQ1cafH7rQ Diff:
OldNewDifferences
1-{-# STDLIB_VERSION 4 #-}
1+{-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let adminPubKey1 = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
5-
6-let adminPubKey2 = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
7-
8-let adminPubKey3 = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
9-
104 let adminPubKeyStartStop = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
115
126 let adminPubKeyWallet = base58'5CqqMkmtXXt35KRH9LdWA3ap6TffPvTT5SHQzYrVFbBw'
7468 let activeVoteThird = "voting_active_cell_3"
7569
7670 let keyTempCurSum = "sum_reward_current"
71+
72+let keyAdminPubKey1 = "admin_pub_1"
73+
74+let keyAdminPubKey2 = "admin_pub_2"
75+
76+let keyAdminPubKey3 = "admin_pub_3"
77+
78+let oracleAdminPool = Address(base58'3N1cPjixuHTujhGvb5HQoFvGt4fkUG8o3KF')
79+
80+func getAdminPub (keyAdminPub) = match getString(oracleAdminPool, keyAdminPub) {
81+ case string: String =>
82+ fromBase58String(string)
83+ case nothing =>
84+ throw("Admin public key is empty")
85+}
86+
87+
88+let adminPubKey1 = getAdminPub(keyAdminPubKey1)
89+
90+let adminPubKey2 = getAdminPub(keyAdminPubKey2)
91+
92+let adminPubKey3 = getAdminPub(keyAdminPubKey3)
7793
7894 let isActive = valueOrElse(getBoolean(this, keyActive), true)
7995
172188
173189
174190 func getUserVoteInfo (user) = {
175- let $t060546605 = if (isDefined(getString(votingLiteContract, (toString(user) + kUserTotalStruc))))
191+ let $t063606911 = if (isDefined(getString(votingLiteContract, (toString(user) + kUserTotalStruc))))
176192 then {
177193 let data = split(valueOrErrorMessage(getString(votingLiteContract, (toString(user) + kUserTotalStruc)), "Empty kUserTotalStruc"), "_")
178194 $Tuple3(parseIntValue(data[0]), parseIntValue(data[1]), parseIntValue(data[2]))
181197 let uPoolTotalSWOP = valueOrElse(getInteger(votingLiteContract, (toString(user) + kUserTotalVoteSWOP)), 0)
182198 $Tuple3(uPoolTotalSWOP, 0, currVotingPeriod)
183199 }
184- let userTotalVoteSWOP = $t060546605._1
185- let userUnvoted = $t060546605._2
186- let userUnvotedPeriod = $t060546605._3
200+ let userTotalVoteSWOP = $t063606911._1
201+ let userUnvoted = $t063606911._2
202+ let userUnvotedPeriod = $t063606911._3
187203 let userUnvotedActual = if ((userUnvotedPeriod == currVotingPeriod))
188204 then userUnvoted
189205 else 0
248264
249265 func claimCalc (caller) = {
250266 let lastInterest = getLastInterestInfo()
251- let $t090139093 = getUserInterestInfo(caller, lastInterest)
252- let userLastInterest = $t090139093._1
253- let userSWOPLocked = $t090139093._2
254- let claimAmount = fraction(userSWOPLocked, (lastInterest - userLastInterest), scaleValue)
267+ let $t093159395 = getUserInterestInfo(caller, lastInterest)
268+ let userLastInterest = $t093159395._1
269+ let userSWOPLocked = $t093159395._2
270+ let claimAmount = toInt(fraction(toBigInt(userSWOPLocked), toBigInt((lastInterest - userLastInterest)), toBigInt(scaleValue)))
255271 let userNewInterest = lastInterest
256272 $Tuple2(userNewInterest, claimAmount)
257273 }
261277 func airDrop () = if (!(isActive))
262278 then throw("DApp is inactive at this moment")
263279 else {
264- let $t093589433 = $Tuple2(i.payments[0].amount, i.payments[0].assetId)
265- let pmtAmount = $t093589433._1
266- let pmtAssetId = $t093589433._2
280+ let $t097039778 = $Tuple2(i.payments[0].amount, i.payments[0].assetId)
281+ let pmtAmount = $t097039778._1
282+ let pmtAssetId = $t097039778._2
267283 if ((pmtAssetId != SWOP))
268284 then throw("Incorrect pmtAssetId")
269285 else {
270286 let totalSWOPLocked = getTotalSWOPLocked()
271287 let lastInterest = getLastInterestInfo()
272- let interestNew = (lastInterest + fraction(pmtAmount, scaleValue, totalSWOPLocked))
288+ let interestNew = (lastInterest + toInt(fraction(toBigInt(pmtAmount), toBigInt(scaleValue), toBigInt(totalSWOPLocked))))
273289 [IntegerEntry(keyLastInterest, interestNew)]
274290 }
275291 }
280296 func lockSWOP () = if (!(isActive))
281297 then throw("DApp is inactive at this moment")
282298 else {
283- let $t098719946 = $Tuple2(i.payments[0].amount, i.payments[0].assetId)
284- let pmtAmount = $t098719946._1
285- let pmtAssetId = $t098719946._2
299+ let $t01025710332 = $Tuple2(i.payments[0].amount, i.payments[0].assetId)
300+ let pmtAmount = $t01025710332._1
301+ let pmtAssetId = $t01025710332._2
286302 if ((pmtAssetId != SWOP))
287303 then throw("Incorrect pmtAssetId")
288304 else {
289305 let lastInterest = getLastInterestInfo()
290- let $t01006210144 = getUserInterestInfo(i.caller, lastInterest)
291- let userLastInterest = $t01006210144._1
292- let userSWOPLocked = $t01006210144._2
293- let claimAmount = fraction(userSWOPLocked, (lastInterest - userLastInterest), scaleValue)
306+ let $t01044810530 = getUserInterestInfo(i.caller, lastInterest)
307+ let userLastInterest = $t01044810530._1
308+ let userSWOPLocked = $t01044810530._2
309+ let claimAmount = toInt(fraction(toBigInt(userSWOPLocked), toBigInt((lastInterest - userLastInterest)), toBigInt(scaleValue)))
294310 let userSWOPLockedNew = ((userSWOPLocked + pmtAmount) + claimAmount)
295311 let userNewInterest = lastInterest
296312 let totalSWOPLocked = getTotalSWOPLocked()
311327 else {
312328 let totalSWOPLocked = getTotalSWOPLocked()
313329 let userSWOPLocked = getUserSWOPLocked(i.caller)
314- let $t01129411349 = claimCalc(i.caller)
315- let userNewInterest = $t01129411349._1
316- let claimAmount = $t01129411349._2
317- let $t01135411419 = getUserVoteInfo(i.caller)
318- let userVoteAmount = $t01135411419._1
319- let userUnvoteAmount = $t01135411419._2
330+ let $t01172311778 = claimCalc(i.caller)
331+ let userNewInterest = $t01172311778._1
332+ let claimAmount = $t01172311778._2
333+ let $t01178311848 = getUserVoteInfo(i.caller)
334+ let userVoteAmount = $t01178311848._1
335+ let userUnvoteAmount = $t01178311848._2
320336 let userVoteAmountForNewPool = getUserTotalVoteForNewPoolAmount(i.caller)
321337 if (if (if ((0 > userUnvoteAmount))
322338 then true
345361 then throw("DApp is inactive at this moment")
346362 else {
347363 let lastInterest = getLastInterestInfo()
348- let $t01279412849 = claimCalc(i.caller)
349- let userNewInterest = $t01279412849._1
350- let claimAmount = $t01279412849._2
364+ let $t01322313278 = claimCalc(i.caller)
365+ let userNewInterest = $t01322313278._1
366+ let claimAmount = $t01322313278._2
351367 let userClaimedAmount = getUserSWOPClaimedAmount(i.caller)
352368 let userClaimedAmountNew = (userClaimedAmount + claimAmount)
353369 if ((claimAmount == 0))
364380 let totalSWOPLocked = getTotalSWOPLocked()
365381 let userSWOPLocked = getUserSWOPLocked(i.caller)
366382 let lastInterest = getLastInterestInfo()
367- let $t01362813683 = claimCalc(i.caller)
368- let userNewInterest = $t01362813683._1
369- let claimAmount = $t01362813683._2
383+ let $t01405714112 = claimCalc(i.caller)
384+ let userNewInterest = $t01405714112._1
385+ let claimAmount = $t01405714112._2
370386 let userSWOPLockedNew = (userSWOPLocked + claimAmount)
371387 let totalSWOPLockedNew = (totalSWOPLocked + claimAmount)
372388 let userClaimedAmount = getUserSWOPClaimedAmount(i.caller)
454470 else throw("Incorrect pagination")
455471
456472 let previousRewardEntryNew = {
457- let $list1855518607 = currentPools
458- let $size1855518607 = size($list1855518607)
459- let $acc01855518607 = nil
460- if (($size1855518607 == 0))
461- then $acc01855518607
473+ let $list1897319025 = currentPools
474+ let $size1897319025 = size($list1897319025)
475+ let $acc01897319025 = nil
476+ if (($size1897319025 == 0))
477+ then $acc01897319025
462478 else {
463- let $acc11855518607 = changePreviousRewardEntry($acc01855518607, $list1855518607[0])
464- if (($size1855518607 == 1))
465- then $acc11855518607
479+ let $acc11897319025 = changePreviousRewardEntry($acc01897319025, $list1897319025[0])
480+ if (($size1897319025 == 1))
481+ then $acc11897319025
466482 else {
467- let $acc21855518607 = changePreviousRewardEntry($acc11855518607, $list1855518607[1])
468- if (($size1855518607 == 2))
469- then $acc21855518607
483+ let $acc21897319025 = changePreviousRewardEntry($acc11897319025, $list1897319025[1])
484+ if (($size1897319025 == 2))
485+ then $acc21897319025
470486 else {
471- let $acc31855518607 = changePreviousRewardEntry($acc21855518607, $list1855518607[2])
472- if (($size1855518607 == 3))
473- then $acc31855518607
487+ let $acc31897319025 = changePreviousRewardEntry($acc21897319025, $list1897319025[2])
488+ if (($size1897319025 == 3))
489+ then $acc31897319025
474490 else {
475- let $acc41855518607 = changePreviousRewardEntry($acc31855518607, $list1855518607[3])
476- if (($size1855518607 == 4))
477- then $acc41855518607
491+ let $acc41897319025 = changePreviousRewardEntry($acc31897319025, $list1897319025[3])
492+ if (($size1897319025 == 4))
493+ then $acc41897319025
478494 else {
479- let $acc51855518607 = changePreviousRewardEntry($acc41855518607, $list1855518607[4])
480- if (($size1855518607 == 5))
481- then $acc51855518607
495+ let $acc51897319025 = changePreviousRewardEntry($acc41897319025, $list1897319025[4])
496+ if (($size1897319025 == 5))
497+ then $acc51897319025
482498 else {
483- let $acc61855518607 = changePreviousRewardEntry($acc51855518607, $list1855518607[5])
484- if (($size1855518607 == 6))
485- then $acc61855518607
499+ let $acc61897319025 = changePreviousRewardEntry($acc51897319025, $list1897319025[5])
500+ if (($size1897319025 == 6))
501+ then $acc61897319025
486502 else {
487- let $acc71855518607 = changePreviousRewardEntry($acc61855518607, $list1855518607[6])
488- if (($size1855518607 == 7))
489- then $acc71855518607
503+ let $acc71897319025 = changePreviousRewardEntry($acc61897319025, $list1897319025[6])
504+ if (($size1897319025 == 7))
505+ then $acc71897319025
490506 else {
491- let $acc81855518607 = changePreviousRewardEntry($acc71855518607, $list1855518607[7])
492- if (($size1855518607 == 8))
493- then $acc81855518607
507+ let $acc81897319025 = changePreviousRewardEntry($acc71897319025, $list1897319025[7])
508+ if (($size1897319025 == 8))
509+ then $acc81897319025
494510 else {
495- let $acc91855518607 = changePreviousRewardEntry($acc81855518607, $list1855518607[8])
496- if (($size1855518607 == 9))
497- then $acc91855518607
511+ let $acc91897319025 = changePreviousRewardEntry($acc81897319025, $list1897319025[8])
512+ if (($size1897319025 == 9))
513+ then $acc91897319025
498514 else {
499- let $acc101855518607 = changePreviousRewardEntry($acc91855518607, $list1855518607[9])
500- if (($size1855518607 == 10))
501- then $acc101855518607
515+ let $acc101897319025 = changePreviousRewardEntry($acc91897319025, $list1897319025[9])
516+ if (($size1897319025 == 10))
517+ then $acc101897319025
502518 else {
503- let $acc111855518607 = changePreviousRewardEntry($acc101855518607, $list1855518607[10])
519+ let $acc111897319025 = changePreviousRewardEntry($acc101897319025, $list1897319025[10])
504520 throw("List size exceed 10")
505521 }
506522 }
515531 }
516532 }
517533 let currentRewardEntryNew = {
518- let $list1864018692 = currentPools
519- let $size1864018692 = size($list1864018692)
520- let $acc01864018692 = nil
521- if (($size1864018692 == 0))
522- then $acc01864018692
534+ let $list1905819110 = currentPools
535+ let $size1905819110 = size($list1905819110)
536+ let $acc01905819110 = nil
537+ if (($size1905819110 == 0))
538+ then $acc01905819110
523539 else {
524- let $acc11864018692 = changeCurrentRewardEntry($acc01864018692, $list1864018692[0])
525- if (($size1864018692 == 1))
526- then $acc11864018692
540+ let $acc11905819110 = changeCurrentRewardEntry($acc01905819110, $list1905819110[0])
541+ if (($size1905819110 == 1))
542+ then $acc11905819110
527543 else {
528- let $acc21864018692 = changeCurrentRewardEntry($acc11864018692, $list1864018692[1])
529- if (($size1864018692 == 2))
530- then $acc21864018692
544+ let $acc21905819110 = changeCurrentRewardEntry($acc11905819110, $list1905819110[1])
545+ if (($size1905819110 == 2))
546+ then $acc21905819110
531547 else {
532- let $acc31864018692 = changeCurrentRewardEntry($acc21864018692, $list1864018692[2])
533- if (($size1864018692 == 3))
534- then $acc31864018692
548+ let $acc31905819110 = changeCurrentRewardEntry($acc21905819110, $list1905819110[2])
549+ if (($size1905819110 == 3))
550+ then $acc31905819110
535551 else {
536- let $acc41864018692 = changeCurrentRewardEntry($acc31864018692, $list1864018692[3])
537- if (($size1864018692 == 4))
538- then $acc41864018692
552+ let $acc41905819110 = changeCurrentRewardEntry($acc31905819110, $list1905819110[3])
553+ if (($size1905819110 == 4))
554+ then $acc41905819110
539555 else {
540- let $acc51864018692 = changeCurrentRewardEntry($acc41864018692, $list1864018692[4])
541- if (($size1864018692 == 5))
542- then $acc51864018692
556+ let $acc51905819110 = changeCurrentRewardEntry($acc41905819110, $list1905819110[4])
557+ if (($size1905819110 == 5))
558+ then $acc51905819110
543559 else {
544- let $acc61864018692 = changeCurrentRewardEntry($acc51864018692, $list1864018692[5])
545- if (($size1864018692 == 6))
546- then $acc61864018692
560+ let $acc61905819110 = changeCurrentRewardEntry($acc51905819110, $list1905819110[5])
561+ if (($size1905819110 == 6))
562+ then $acc61905819110
547563 else {
548- let $acc71864018692 = changeCurrentRewardEntry($acc61864018692, $list1864018692[6])
549- if (($size1864018692 == 7))
550- then $acc71864018692
564+ let $acc71905819110 = changeCurrentRewardEntry($acc61905819110, $list1905819110[6])
565+ if (($size1905819110 == 7))
566+ then $acc71905819110
551567 else {
552- let $acc81864018692 = changeCurrentRewardEntry($acc71864018692, $list1864018692[7])
553- if (($size1864018692 == 8))
554- then $acc81864018692
568+ let $acc81905819110 = changeCurrentRewardEntry($acc71905819110, $list1905819110[7])
569+ if (($size1905819110 == 8))
570+ then $acc81905819110
555571 else {
556- let $acc91864018692 = changeCurrentRewardEntry($acc81864018692, $list1864018692[8])
557- if (($size1864018692 == 9))
558- then $acc91864018692
572+ let $acc91905819110 = changeCurrentRewardEntry($acc81905819110, $list1905819110[8])
573+ if (($size1905819110 == 9))
574+ then $acc91905819110
559575 else {
560- let $acc101864018692 = changeCurrentRewardEntry($acc91864018692, $list1864018692[9])
561- if (($size1864018692 == 10))
562- then $acc101864018692
576+ let $acc101905819110 = changeCurrentRewardEntry($acc91905819110, $list1905819110[9])
577+ if (($size1905819110 == 10))
578+ then $acc101905819110
563579 else {
564- let $acc111864018692 = changeCurrentRewardEntry($acc101864018692, $list1864018692[10])
580+ let $acc111905819110 = changeCurrentRewardEntry($acc101905819110, $list1905819110[10])
565581 throw("List size exceed 10")
566582 }
567583 }
576592 }
577593 }
578594 let heightEntryNewCur = {
579- let $list1872118766 = currentPools
580- let $size1872118766 = size($list1872118766)
581- let $acc01872118766 = nil
582- if (($size1872118766 == 0))
583- then $acc01872118766
595+ let $list1913919184 = currentPools
596+ let $size1913919184 = size($list1913919184)
597+ let $acc01913919184 = nil
598+ if (($size1913919184 == 0))
599+ then $acc01913919184
584600 else {
585- let $acc11872118766 = changeHeightEntry($acc01872118766, $list1872118766[0])
586- if (($size1872118766 == 1))
587- then $acc11872118766
601+ let $acc11913919184 = changeHeightEntry($acc01913919184, $list1913919184[0])
602+ if (($size1913919184 == 1))
603+ then $acc11913919184
588604 else {
589- let $acc21872118766 = changeHeightEntry($acc11872118766, $list1872118766[1])
590- if (($size1872118766 == 2))
591- then $acc21872118766
605+ let $acc21913919184 = changeHeightEntry($acc11913919184, $list1913919184[1])
606+ if (($size1913919184 == 2))
607+ then $acc21913919184
592608 else {
593- let $acc31872118766 = changeHeightEntry($acc21872118766, $list1872118766[2])
594- if (($size1872118766 == 3))
595- then $acc31872118766
609+ let $acc31913919184 = changeHeightEntry($acc21913919184, $list1913919184[2])
610+ if (($size1913919184 == 3))
611+ then $acc31913919184
596612 else {
597- let $acc41872118766 = changeHeightEntry($acc31872118766, $list1872118766[3])
598- if (($size1872118766 == 4))
599- then $acc41872118766
613+ let $acc41913919184 = changeHeightEntry($acc31913919184, $list1913919184[3])
614+ if (($size1913919184 == 4))
615+ then $acc41913919184
600616 else {
601- let $acc51872118766 = changeHeightEntry($acc41872118766, $list1872118766[4])
602- if (($size1872118766 == 5))
603- then $acc51872118766
617+ let $acc51913919184 = changeHeightEntry($acc41913919184, $list1913919184[4])
618+ if (($size1913919184 == 5))
619+ then $acc51913919184
604620 else {
605- let $acc61872118766 = changeHeightEntry($acc51872118766, $list1872118766[5])
606- if (($size1872118766 == 6))
607- then $acc61872118766
621+ let $acc61913919184 = changeHeightEntry($acc51913919184, $list1913919184[5])
622+ if (($size1913919184 == 6))
623+ then $acc61913919184
608624 else {
609- let $acc71872118766 = changeHeightEntry($acc61872118766, $list1872118766[6])
610- if (($size1872118766 == 7))
611- then $acc71872118766
625+ let $acc71913919184 = changeHeightEntry($acc61913919184, $list1913919184[6])
626+ if (($size1913919184 == 7))
627+ then $acc71913919184
612628 else {
613- let $acc81872118766 = changeHeightEntry($acc71872118766, $list1872118766[7])
614- if (($size1872118766 == 8))
615- then $acc81872118766
629+ let $acc81913919184 = changeHeightEntry($acc71913919184, $list1913919184[7])
630+ if (($size1913919184 == 8))
631+ then $acc81913919184
616632 else {
617- let $acc91872118766 = changeHeightEntry($acc81872118766, $list1872118766[8])
618- if (($size1872118766 == 9))
619- then $acc91872118766
633+ let $acc91913919184 = changeHeightEntry($acc81913919184, $list1913919184[8])
634+ if (($size1913919184 == 9))
635+ then $acc91913919184
620636 else {
621- let $acc101872118766 = changeHeightEntry($acc91872118766, $list1872118766[9])
622- if (($size1872118766 == 10))
623- then $acc101872118766
637+ let $acc101913919184 = changeHeightEntry($acc91913919184, $list1913919184[9])
638+ if (($size1913919184 == 10))
639+ then $acc101913919184
624640 else {
625- let $acc111872118766 = changeHeightEntry($acc101872118766, $list1872118766[10])
641+ let $acc111913919184 = changeHeightEntry($acc101913919184, $list1913919184[10])
626642 throw("List size exceed 10")
627643 }
628644 }
637653 }
638654 }
639655 let sumRewardCurrentTemp = {
640- let $list1880018832 = currentRewards
641- let $size1880018832 = size($list1880018832)
642- let $acc01880018832 = 0
643- if (($size1880018832 == 0))
644- then $acc01880018832
656+ let $list1921819250 = currentRewards
657+ let $size1921819250 = size($list1921819250)
658+ let $acc01921819250 = 0
659+ if (($size1921819250 == 0))
660+ then $acc01921819250
645661 else {
646- let $acc11880018832 = sum($acc01880018832, $list1880018832[0])
647- if (($size1880018832 == 1))
648- then $acc11880018832
662+ let $acc11921819250 = sum($acc01921819250, $list1921819250[0])
663+ if (($size1921819250 == 1))
664+ then $acc11921819250
649665 else {
650- let $acc21880018832 = sum($acc11880018832, $list1880018832[1])
651- if (($size1880018832 == 2))
652- then $acc21880018832
666+ let $acc21921819250 = sum($acc11921819250, $list1921819250[1])
667+ if (($size1921819250 == 2))
668+ then $acc21921819250
653669 else {
654- let $acc31880018832 = sum($acc21880018832, $list1880018832[2])
655- if (($size1880018832 == 3))
656- then $acc31880018832
670+ let $acc31921819250 = sum($acc21921819250, $list1921819250[2])
671+ if (($size1921819250 == 3))
672+ then $acc31921819250
657673 else {
658- let $acc41880018832 = sum($acc31880018832, $list1880018832[3])
659- if (($size1880018832 == 4))
660- then $acc41880018832
674+ let $acc41921819250 = sum($acc31921819250, $list1921819250[3])
675+ if (($size1921819250 == 4))
676+ then $acc41921819250
661677 else {
662- let $acc51880018832 = sum($acc41880018832, $list1880018832[4])
663- if (($size1880018832 == 5))
664- then $acc51880018832
678+ let $acc51921819250 = sum($acc41921819250, $list1921819250[4])
679+ if (($size1921819250 == 5))
680+ then $acc51921819250
665681 else {
666- let $acc61880018832 = sum($acc51880018832, $list1880018832[5])
667- if (($size1880018832 == 6))
668- then $acc61880018832
682+ let $acc61921819250 = sum($acc51921819250, $list1921819250[5])
683+ if (($size1921819250 == 6))
684+ then $acc61921819250
669685 else {
670- let $acc71880018832 = sum($acc61880018832, $list1880018832[6])
671- if (($size1880018832 == 7))
672- then $acc71880018832
686+ let $acc71921819250 = sum($acc61921819250, $list1921819250[6])
687+ if (($size1921819250 == 7))
688+ then $acc71921819250
673689 else {
674- let $acc81880018832 = sum($acc71880018832, $list1880018832[7])
675- if (($size1880018832 == 8))
676- then $acc81880018832
690+ let $acc81921819250 = sum($acc71921819250, $list1921819250[7])
691+ if (($size1921819250 == 8))
692+ then $acc81921819250
677693 else {
678- let $acc91880018832 = sum($acc81880018832, $list1880018832[8])
679- if (($size1880018832 == 9))
680- then $acc91880018832
694+ let $acc91921819250 = sum($acc81921819250, $list1921819250[8])
695+ if (($size1921819250 == 9))
696+ then $acc91921819250
681697 else {
682- let $acc101880018832 = sum($acc91880018832, $list1880018832[9])
683- if (($size1880018832 == 10))
684- then $acc101880018832
698+ let $acc101921819250 = sum($acc91921819250, $list1921819250[9])
699+ if (($size1921819250 == 10))
700+ then $acc101921819250
685701 else {
686- let $acc111880018832 = sum($acc101880018832, $list1880018832[10])
702+ let $acc111921819250 = sum($acc101921819250, $list1921819250[10])
687703 throw("List size exceed 10")
688704 }
689705 }
697713 }
698714 }
699715 }
700- let $t01883818949 = getSumReward(sumRewardCurrentTemp, pagination)
701- let sumRewardCurrent = $t01883818949._1
702- let rewardUpdateHeightFirstPaginationEntry = $t01883818949._2
716+ let $t01925619367 = getSumReward(sumRewardCurrentTemp, pagination)
717+ let sumRewardCurrent = $t01925619367._1
718+ let rewardUpdateHeightFirstPaginationEntry = $t01925619367._2
703719 let rewardUpdateHeightEntry = if ((pagination == 2))
704720 then [IntegerEntry(keyRewardUpdateHeight, rewardUpdateHeight)]
705721 else nil
729745
730746
731747 @Verifier(tx)
732-func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
748+func verify () = {
749+ let adminPubKey1Signed = if (sigVerify(tx.bodyBytes, tx.proofs[0], adminPubKey1))
750+ then 1
751+ else 0
752+ let adminPubKey2Signed = if (sigVerify(tx.bodyBytes, tx.proofs[1], adminPubKey2))
753+ then 1
754+ else 0
755+ let adminPubKey3Signed = if (sigVerify(tx.bodyBytes, tx.proofs[2], adminPubKey3))
756+ then 1
757+ else 0
758+ (((adminPubKey1Signed + adminPubKey2Signed) + adminPubKey3Signed) >= 2)
759+ }
733760
Full:
OldNewDifferences
1-{-# STDLIB_VERSION 4 #-}
1+{-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let adminPubKey1 = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
5-
6-let adminPubKey2 = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
7-
8-let adminPubKey3 = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
9-
104 let adminPubKeyStartStop = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
115
126 let adminPubKeyWallet = base58'5CqqMkmtXXt35KRH9LdWA3ap6TffPvTT5SHQzYrVFbBw'
137
148 let keyActive = "active"
159
1610 let keyCause = "shutdown_cause"
1711
1812 let keyLastInterest = "last_interest"
1913
2014 let keyUserLastInterest = "_last_interest"
2115
2216 let keyUserSWOPLocked = "_SWOP_amount"
2317
2418 let keyUserGetBackHeight = "_getBackHeight"
2519
2620 let keyTotalSWOPLocked = "total_SWOP_amount"
2721
2822 let kUserTotalVoteSWOP = "_user_total_SWOP_vote"
2923
3024 let keyUserVoteOptionAmount = "_SWOP_option_amount"
3125
3226 let keyTotalVoteOptionAmount = "total_SWOP_option_amount"
3327
3428 let keyUserSWOPClaimedAmount = "_SWOP_claimed_amount"
3529
3630 let keyUserSWOPLastClaimedAmount = "_SWOP_last_claimed_amount"
3731
3832 let keyVoteName = "vote_name"
3933
4034 let keyOptionName = "_option_name"
4135
4236 let keyVotingStartHeight = "_startHeight"
4337
4438 let keyVoteDuration = "_vote_duration"
4539
4640 let keyRewardPoolFractionCurrent = "_current_pool_fraction_reward"
4741
4842 let keyRewardPoolFractionPrevious = "_previous_pool_fraction_reward"
4943
5044 let keyHeightPoolFraction = "_pool_reward_update_height"
5145
5246 let keyTotalRewardPerBlockCurrent = "total_reward_per_block_current"
5347
5448 let keyTotalRewardPerBlockPrevious = "total_reward_per_block_previous"
5549
5650 let keyRewardUpdateHeight = "reward_update_height"
5751
5852 let keyRewardUpdateFirstPaginationHeight = "reward_update_height_first_pagination"
5953
6054 let keyNoVotingForNewPool = "_vote_no"
6155
6256 let keyYesVotingForNewPool = "_vote_yes"
6357
6458 let keyAmountOfVotingForNewPool = "max_amount_voting"
6559
6660 let keyStatusOfVotingForNewPool = "_status"
6761
6862 let keyHeightOfPoolVotingForNewPool = "_finish_height"
6963
7064 let activeVoteFirst = "voting_active_cell_1"
7165
7266 let activeVoteSecond = "voting_active_cell_2"
7367
7468 let activeVoteThird = "voting_active_cell_3"
7569
7670 let keyTempCurSum = "sum_reward_current"
71+
72+let keyAdminPubKey1 = "admin_pub_1"
73+
74+let keyAdminPubKey2 = "admin_pub_2"
75+
76+let keyAdminPubKey3 = "admin_pub_3"
77+
78+let oracleAdminPool = Address(base58'3N1cPjixuHTujhGvb5HQoFvGt4fkUG8o3KF')
79+
80+func getAdminPub (keyAdminPub) = match getString(oracleAdminPool, keyAdminPub) {
81+ case string: String =>
82+ fromBase58String(string)
83+ case nothing =>
84+ throw("Admin public key is empty")
85+}
86+
87+
88+let adminPubKey1 = getAdminPub(keyAdminPubKey1)
89+
90+let adminPubKey2 = getAdminPub(keyAdminPubKey2)
91+
92+let adminPubKey3 = getAdminPub(keyAdminPubKey3)
7793
7894 let isActive = valueOrElse(getBoolean(this, keyActive), true)
7995
8096 let farmingSWOPAddress = Address(base58'3MsxHxruYWoddB4HRiPBYAWtMXMtCF1V9XT')
8197
8298 let votingLiteContract = Address(base58'3MrJgdL1GniipErHy44YF9idzLaUL2iX5DQ')
8399
84100 let votingForNewPool = Address(base58'3Mzgi6deFV8CyF2nqbWSBkqba5JaD42EXyb')
85101
86102 let keySWOPid = "SWOP_id"
87103
88104 let SWOP = fromBase58String(getStringValue(farmingSWOPAddress, keySWOPid))
89105
90106 let scaleValue = 100000000
91107
92108 let totalVoteShare = 10000000000
93109
94110 let kStartHeight = "start_height"
95111
96112 let kBasePeriod = "base_period"
97113
98114 let kPeriodLength = "period_length"
99115
100116 let kUserTotalStruc = "_user_total_struc"
101117
102118 let basePeriod = valueOrErrorMessage(getInteger(votingLiteContract, kBasePeriod), "Empty kBasePeriod at voting contract")
103119
104120 let startHeight = valueOrErrorMessage(getInteger(votingLiteContract, kStartHeight), "Empty kStartHeight at voting contract")
105121
106122 let periodLength = valueOrErrorMessage(getInteger(votingLiteContract, kPeriodLength), "Empty kPeriodLength at voting contract")
107123
108124 let firstActiveVote = valueOrElse(getString(votingForNewPool, activeVoteFirst), "")
109125
110126 let secondActiveVote = valueOrElse(getString(votingForNewPool, activeVoteSecond), "")
111127
112128 let thirdActiveVote = valueOrElse(getString(votingForNewPool, activeVoteThird), "")
113129
114130 let currVotingPeriod = (basePeriod + ((height - startHeight) / periodLength))
115131
116132 func suspend (cause) = [BooleanEntry(keyActive, false), StringEntry(keyCause, cause)]
117133
118134
119135 func throwNotEnoughSWOP () = throw("Not enough SWOP: userSWOPLocked - userTotalVoteAmount < voteSWOPAmount")
120136
121137
122138 func getLastInterestInfo () = {
123139 let lastInterest = valueOrElse(getInteger(this, keyLastInterest), 0)
124140 lastInterest
125141 }
126142
127143
128144 func getUserSWOPLocked (user) = valueOrElse(getInteger(this, (toString(user) + keyUserSWOPLocked)), 0)
129145
130146
131147 func getUserSWOPClaimedAmount (user) = valueOrElse(getInteger(this, (toString(user) + keyUserSWOPClaimedAmount)), 0)
132148
133149
134150 func getUserTotalVoteAmount (user) = valueOrElse(getInteger(votingLiteContract, (toString(user) + kUserTotalVoteSWOP)), 0)
135151
136152
137153 func getUserInterestInfo (user,lastInterest) = {
138154 let userSWOPAmount = getUserSWOPLocked(user)
139155 let userLastInterest = getInteger(this, (toString(user) + keyUserLastInterest))
140156 let userLastInterestValue = match userLastInterest {
141157 case userLastInterest: Int =>
142158 userLastInterest
143159 case _ =>
144160 lastInterest
145161 }
146162 $Tuple2(userLastInterestValue, userSWOPAmount)
147163 }
148164
149165
150166 func getUserTotalVoteAmountForOnePool (pool,user) = {
151167 let voting = valueOrElse(getInteger(votingForNewPool, pool), -1)
152168 let heightOfVoting = valueOrElse(getInteger(votingForNewPool, (toString(voting) + keyHeightOfPoolVotingForNewPool)), 0)
153169 let statusOfVoting = valueOrElse(getBoolean(votingForNewPool, (toString(voting) + keyStatusOfVotingForNewPool)), true)
154170 let currentHeight = height
155171 if ((0 > voting))
156172 then 0
157173 else if (!(statusOfVoting))
158174 then 0
159175 else if ((heightOfVoting > currentHeight))
160176 then (valueOrElse(getInteger(votingForNewPool, (((toString(user) + "_") + toString(voting)) + keyYesVotingForNewPool)), 0) + valueOrElse(getInteger(votingForNewPool, (((toString(user) + "_") + toString(voting)) + keyNoVotingForNewPool)), 0))
161177 else 0
162178 }
163179
164180
165181 func getUserTotalVoteForNewPoolAmount (user) = {
166182 let listOfVoting = [getUserTotalVoteAmountForOnePool(firstActiveVote, user), getUserTotalVoteAmountForOnePool(secondActiveVote, user), getUserTotalVoteAmountForOnePool(thirdActiveVote, user)]
167183 max(listOfVoting)
168184 }
169185
170186
171187 func getTotalSWOPLocked () = valueOrElse(getInteger(this, keyTotalSWOPLocked), 0)
172188
173189
174190 func getUserVoteInfo (user) = {
175- let $t060546605 = if (isDefined(getString(votingLiteContract, (toString(user) + kUserTotalStruc))))
191+ let $t063606911 = if (isDefined(getString(votingLiteContract, (toString(user) + kUserTotalStruc))))
176192 then {
177193 let data = split(valueOrErrorMessage(getString(votingLiteContract, (toString(user) + kUserTotalStruc)), "Empty kUserTotalStruc"), "_")
178194 $Tuple3(parseIntValue(data[0]), parseIntValue(data[1]), parseIntValue(data[2]))
179195 }
180196 else {
181197 let uPoolTotalSWOP = valueOrElse(getInteger(votingLiteContract, (toString(user) + kUserTotalVoteSWOP)), 0)
182198 $Tuple3(uPoolTotalSWOP, 0, currVotingPeriod)
183199 }
184- let userTotalVoteSWOP = $t060546605._1
185- let userUnvoted = $t060546605._2
186- let userUnvotedPeriod = $t060546605._3
200+ let userTotalVoteSWOP = $t063606911._1
201+ let userUnvoted = $t063606911._2
202+ let userUnvotedPeriod = $t063606911._3
187203 let userUnvotedActual = if ((userUnvotedPeriod == currVotingPeriod))
188204 then userUnvoted
189205 else 0
190206 $Tuple2(userTotalVoteSWOP, userUnvotedActual)
191207 }
192208
193209
194210 func getUserVoteOptionAmount (user) = valueOrElse(getInteger(this, (toString(user) + keyUserVoteOptionAmount)), 0)
195211
196212
197213 func getVotingStartHeight (voteName) = valueOrElse(getInteger(this, (voteName + keyVotingStartHeight)), 0)
198214
199215
200216 func getPoolUpdateHeight (pool) = valueOrElse(getInteger(this, (pool + keyHeightPoolFraction)), 0)
201217
202218
203219 func isDefinePoolUpdateHeight (pool) = isDefined(getInteger(this, (pool + keyHeightPoolFraction)))
204220
205221
206222 func getCurPoolWeight (pool) = valueOrElse(getInteger(this, (pool + keyRewardPoolFractionCurrent)), 0)
207223
208224
209225 func getPrevPoolWeight (pool) = valueOrElse(getInteger(this, (pool + keyRewardPoolFractionPrevious)), 0)
210226
211227
212228 func getVoteOptionAmount (user,voteName,option) = {
213229 let userVoteOptionAmount = getInteger(this, (((voteName + option) + toString(user)) + keyUserVoteOptionAmount))
214230 let uvoa = match userVoteOptionAmount {
215231 case uvoa: Int =>
216232 uvoa
217233 case uvoa: Unit =>
218234 0
219235 case _ =>
220236 throw("Match error")
221237 }
222238 valueOrErrorMessage(uvoa, (((("No data on the key: " + voteName) + option) + toString(user)) + keyUserVoteOptionAmount))
223239 }
224240
225241
226242 func getVoteDuration (voteName) = valueOrErrorMessage(getInteger(this, (voteName + keyVoteDuration)), (("No data on the key: " + voteName) + keyVoteDuration))
227243
228244
229245 func getTotalVoteOptionAmount (voteName,option) = {
230246 let totalVoteOptionAmount = getInteger(this, ((voteName + option) + keyTotalVoteOptionAmount))
231247 let tvoa = match totalVoteOptionAmount {
232248 case tvoa: Int =>
233249 tvoa
234250 case tvoa: Unit =>
235251 0
236252 case _ =>
237253 throw("Match error")
238254 }
239255 tvoa
240256 }
241257
242258
243259 func getUserGetBackAmount (voteName,option,user,getBackSWOPHeight) = {
244260 let key = ((((((voteName + "_") + option) + "_") + toString(user)) + "_") + toString(getBackSWOPHeight))
245261 valueOrErrorMessage(getInteger(this, key), ("No data on the key: " + key))
246262 }
247263
248264
249265 func claimCalc (caller) = {
250266 let lastInterest = getLastInterestInfo()
251- let $t090139093 = getUserInterestInfo(caller, lastInterest)
252- let userLastInterest = $t090139093._1
253- let userSWOPLocked = $t090139093._2
254- let claimAmount = fraction(userSWOPLocked, (lastInterest - userLastInterest), scaleValue)
267+ let $t093159395 = getUserInterestInfo(caller, lastInterest)
268+ let userLastInterest = $t093159395._1
269+ let userSWOPLocked = $t093159395._2
270+ let claimAmount = toInt(fraction(toBigInt(userSWOPLocked), toBigInt((lastInterest - userLastInterest)), toBigInt(scaleValue)))
255271 let userNewInterest = lastInterest
256272 $Tuple2(userNewInterest, claimAmount)
257273 }
258274
259275
260276 @Callable(i)
261277 func airDrop () = if (!(isActive))
262278 then throw("DApp is inactive at this moment")
263279 else {
264- let $t093589433 = $Tuple2(i.payments[0].amount, i.payments[0].assetId)
265- let pmtAmount = $t093589433._1
266- let pmtAssetId = $t093589433._2
280+ let $t097039778 = $Tuple2(i.payments[0].amount, i.payments[0].assetId)
281+ let pmtAmount = $t097039778._1
282+ let pmtAssetId = $t097039778._2
267283 if ((pmtAssetId != SWOP))
268284 then throw("Incorrect pmtAssetId")
269285 else {
270286 let totalSWOPLocked = getTotalSWOPLocked()
271287 let lastInterest = getLastInterestInfo()
272- let interestNew = (lastInterest + fraction(pmtAmount, scaleValue, totalSWOPLocked))
288+ let interestNew = (lastInterest + toInt(fraction(toBigInt(pmtAmount), toBigInt(scaleValue), toBigInt(totalSWOPLocked))))
273289 [IntegerEntry(keyLastInterest, interestNew)]
274290 }
275291 }
276292
277293
278294
279295 @Callable(i)
280296 func lockSWOP () = if (!(isActive))
281297 then throw("DApp is inactive at this moment")
282298 else {
283- let $t098719946 = $Tuple2(i.payments[0].amount, i.payments[0].assetId)
284- let pmtAmount = $t098719946._1
285- let pmtAssetId = $t098719946._2
299+ let $t01025710332 = $Tuple2(i.payments[0].amount, i.payments[0].assetId)
300+ let pmtAmount = $t01025710332._1
301+ let pmtAssetId = $t01025710332._2
286302 if ((pmtAssetId != SWOP))
287303 then throw("Incorrect pmtAssetId")
288304 else {
289305 let lastInterest = getLastInterestInfo()
290- let $t01006210144 = getUserInterestInfo(i.caller, lastInterest)
291- let userLastInterest = $t01006210144._1
292- let userSWOPLocked = $t01006210144._2
293- let claimAmount = fraction(userSWOPLocked, (lastInterest - userLastInterest), scaleValue)
306+ let $t01044810530 = getUserInterestInfo(i.caller, lastInterest)
307+ let userLastInterest = $t01044810530._1
308+ let userSWOPLocked = $t01044810530._2
309+ let claimAmount = toInt(fraction(toBigInt(userSWOPLocked), toBigInt((lastInterest - userLastInterest)), toBigInt(scaleValue)))
294310 let userSWOPLockedNew = ((userSWOPLocked + pmtAmount) + claimAmount)
295311 let userNewInterest = lastInterest
296312 let totalSWOPLocked = getTotalSWOPLocked()
297313 let totalSWOPLockedNew = ((totalSWOPLocked + pmtAmount) + claimAmount)
298314 let userClaimedAmount = getUserSWOPClaimedAmount(i.caller)
299315 let userClaimedAmountNew = (userClaimedAmount + claimAmount)
300316 [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)]
301317 }
302318 }
303319
304320
305321
306322 @Callable(i)
307323 func withdrawSWOP (withdrawAmount) = if (!(isActive))
308324 then throw("DApp is inactive at this moment")
309325 else if ((0 >= withdrawAmount))
310326 then throw("withdrawAmount <= 0")
311327 else {
312328 let totalSWOPLocked = getTotalSWOPLocked()
313329 let userSWOPLocked = getUserSWOPLocked(i.caller)
314- let $t01129411349 = claimCalc(i.caller)
315- let userNewInterest = $t01129411349._1
316- let claimAmount = $t01129411349._2
317- let $t01135411419 = getUserVoteInfo(i.caller)
318- let userVoteAmount = $t01135411419._1
319- let userUnvoteAmount = $t01135411419._2
330+ let $t01172311778 = claimCalc(i.caller)
331+ let userNewInterest = $t01172311778._1
332+ let claimAmount = $t01172311778._2
333+ let $t01178311848 = getUserVoteInfo(i.caller)
334+ let userVoteAmount = $t01178311848._1
335+ let userUnvoteAmount = $t01178311848._2
320336 let userVoteAmountForNewPool = getUserTotalVoteForNewPoolAmount(i.caller)
321337 if (if (if ((0 > userUnvoteAmount))
322338 then true
323339 else (0 > userVoteAmount))
324340 then true
325341 else (0 > userVoteAmountForNewPool))
326342 then throw("userUnvoteAmount < 0 || userVoteAmount < 0 || userVoteAmountForNewPool < 0")
327343 else {
328344 let availableToUnstake = (userSWOPLocked - max([userVoteAmountForNewPool, (userVoteAmount + userUnvoteAmount)]))
329345 if ((withdrawAmount > availableToUnstake))
330346 then throw("withdrawAmount > availableToUnstake")
331347 else {
332348 let totalSWOPLockedNew = ((totalSWOPLocked + claimAmount) - withdrawAmount)
333349 let userSWOPamountNew = ((userSWOPLocked + claimAmount) - withdrawAmount)
334350 let userClaimedAmount = getUserSWOPClaimedAmount(i.caller)
335351 let userClaimedAmountNew = (userClaimedAmount + claimAmount)
336352 [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)]
337353 }
338354 }
339355 }
340356
341357
342358
343359 @Callable(i)
344360 func claimAndWithdrawSWOP () = if (!(isActive))
345361 then throw("DApp is inactive at this moment")
346362 else {
347363 let lastInterest = getLastInterestInfo()
348- let $t01279412849 = claimCalc(i.caller)
349- let userNewInterest = $t01279412849._1
350- let claimAmount = $t01279412849._2
364+ let $t01322313278 = claimCalc(i.caller)
365+ let userNewInterest = $t01322313278._1
366+ let claimAmount = $t01322313278._2
351367 let userClaimedAmount = getUserSWOPClaimedAmount(i.caller)
352368 let userClaimedAmountNew = (userClaimedAmount + claimAmount)
353369 if ((claimAmount == 0))
354370 then throw("You have 0 available SWOP")
355371 else [IntegerEntry((toString(i.caller) + keyUserLastInterest), userNewInterest), IntegerEntry((toString(i.caller) + keyUserSWOPClaimedAmount), userClaimedAmountNew), IntegerEntry((toString(i.caller) + keyUserSWOPLastClaimedAmount), claimAmount), ScriptTransfer(i.caller, claimAmount, SWOP)]
356372 }
357373
358374
359375
360376 @Callable(i)
361377 func claimAndStakeSWOP () = if (!(isActive))
362378 then throw("DApp is inactive at this moment")
363379 else {
364380 let totalSWOPLocked = getTotalSWOPLocked()
365381 let userSWOPLocked = getUserSWOPLocked(i.caller)
366382 let lastInterest = getLastInterestInfo()
367- let $t01362813683 = claimCalc(i.caller)
368- let userNewInterest = $t01362813683._1
369- let claimAmount = $t01362813683._2
383+ let $t01405714112 = claimCalc(i.caller)
384+ let userNewInterest = $t01405714112._1
385+ let claimAmount = $t01405714112._2
370386 let userSWOPLockedNew = (userSWOPLocked + claimAmount)
371387 let totalSWOPLockedNew = (totalSWOPLocked + claimAmount)
372388 let userClaimedAmount = getUserSWOPClaimedAmount(i.caller)
373389 let userClaimedAmountNew = (userClaimedAmount + claimAmount)
374390 if ((claimAmount == 0))
375391 then throw("You have 0 available SWOP")
376392 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)]
377393 }
378394
379395
380396
381397 @Callable(i)
382398 func updateWeights (currentPools,currentRewards,rewardUpdateHeight,pagination) = if (!(isActive))
383399 then throw("DApp is inactive at this moment")
384400 else {
385401 let amountPools = 10
386402 let totalRewardUpdateHeight = valueOrElse(getInteger(this, keyRewardUpdateHeight), 0)
387403 if (!(containsElement([adminPubKey1, adminPubKey2, adminPubKey3, adminPubKeyStartStop, adminPubKeyWallet], i.callerPublicKey)))
388404 then throw("Only admin can call this function")
389405 else if ((size(currentPools) > amountPools))
390406 then throw(("Max amount of pool is " + toString(amountPools)))
391407 else if ((totalRewardUpdateHeight >= rewardUpdateHeight))
392408 then throw("rewardUpdateHeight <= totalRewardUpdateHeight")
393409 else if ((height >= rewardUpdateHeight))
394410 then throw("height >= rewardUpdateHeight")
395411 else if ((0 >= rewardUpdateHeight))
396412 then throw("0 >= rewardUpdateHeight ")
397413 else {
398414 func sum (a,b) = (a + b)
399415
400416 func changePreviousRewardEntry (accumulated,pool) = {
401417 let poolRewardUpdateHeight = getPoolUpdateHeight(pool)
402418 if (if (!(isDefinePoolUpdateHeight(pool)))
403419 then true
404420 else if ((rewardUpdateHeight != poolRewardUpdateHeight))
405421 then (poolRewardUpdateHeight == totalRewardUpdateHeight)
406422 else false)
407423 then {
408424 let poolReward = getCurPoolWeight(pool)
409425 IntegerEntry((pool + keyRewardPoolFractionPrevious), poolReward) :: accumulated
410426 }
411427 else {
412428 let poolReward = getPrevPoolWeight(pool)
413429 IntegerEntry((pool + keyRewardPoolFractionPrevious), poolReward) :: accumulated
414430 }
415431 }
416432
417433 func changeCurrentRewardEntry (accumulated,pool) = {
418434 let poolIndex = value(indexOf(currentPools, pool))
419435 let poolReward = currentRewards[poolIndex]
420436 if ((0 > poolReward))
421437 then throw("PoolReward < 0")
422438 else IntegerEntry((pool + keyRewardPoolFractionCurrent), poolReward) :: accumulated
423439 }
424440
425441 func changeHeightEntry (accumulated,pool) = {
426442 let poolHeight = rewardUpdateHeight
427443 IntegerEntry((pool + keyHeightPoolFraction), poolHeight) :: accumulated
428444 }
429445
430446 func getSumReward (curTempSum,pagination) = if ((pagination == 0))
431447 then if ((curTempSum > totalVoteShare))
432448 then throw(((("sumRewardPrevious > totalVoteShare or sumRewardCurrent > totalVoteShare - " + toString(pagination)) + " ") + toString(curTempSum)))
433449 else $Tuple2([IntegerEntry(keyTempCurSum, curTempSum)], [IntegerEntry(keyRewardUpdateFirstPaginationHeight, rewardUpdateHeight)])
434450 else if ((pagination == 1))
435451 then {
436452 let curTempSumFromKey = valueOrElse(getInteger(this, keyTempCurSum), 0)
437453 let rewardUpdateHeightFirstPaginationEntry = valueOrElse(getInteger(this, keyRewardUpdateFirstPaginationHeight), 0)
438454 if (((curTempSum + curTempSumFromKey) > totalVoteShare))
439455 then throw(((("sumRewardPrevious > totalVoteShare or sumRewardCurrent > totalVoteShare - " + toString(pagination)) + " ") + toString((curTempSum + curTempSumFromKey))))
440456 else if ((rewardUpdateHeightFirstPaginationEntry != rewardUpdateHeight))
441457 then throw("current rewardUpdateHeight != rewardUpdateHeightFirstPaginationEntry")
442458 else $Tuple2([IntegerEntry(keyTempCurSum, (curTempSum + curTempSumFromKey))], nil)
443459 }
444460 else if ((pagination == 2))
445461 then {
446462 let curSum = (valueOrElse(getInteger(this, keyTempCurSum), 0) + curTempSum)
447463 let rewardUpdateHeightFirstPaginationEntry = valueOrElse(getInteger(this, keyRewardUpdateFirstPaginationHeight), 0)
448464 if ((curSum != totalVoteShare))
449465 then throw("sumRewardPrevious != totalVoteShare or sumRewardCurrent != totalVoteShare")
450466 else if ((rewardUpdateHeightFirstPaginationEntry != rewardUpdateHeight))
451467 then throw("current rewardUpdateHeight != rewardUpdateHeightFirstPaginationEntry")
452468 else $Tuple2([IntegerEntry(keyTempCurSum, curSum)], nil)
453469 }
454470 else throw("Incorrect pagination")
455471
456472 let previousRewardEntryNew = {
457- let $list1855518607 = currentPools
458- let $size1855518607 = size($list1855518607)
459- let $acc01855518607 = nil
460- if (($size1855518607 == 0))
461- then $acc01855518607
473+ let $list1897319025 = currentPools
474+ let $size1897319025 = size($list1897319025)
475+ let $acc01897319025 = nil
476+ if (($size1897319025 == 0))
477+ then $acc01897319025
462478 else {
463- let $acc11855518607 = changePreviousRewardEntry($acc01855518607, $list1855518607[0])
464- if (($size1855518607 == 1))
465- then $acc11855518607
479+ let $acc11897319025 = changePreviousRewardEntry($acc01897319025, $list1897319025[0])
480+ if (($size1897319025 == 1))
481+ then $acc11897319025
466482 else {
467- let $acc21855518607 = changePreviousRewardEntry($acc11855518607, $list1855518607[1])
468- if (($size1855518607 == 2))
469- then $acc21855518607
483+ let $acc21897319025 = changePreviousRewardEntry($acc11897319025, $list1897319025[1])
484+ if (($size1897319025 == 2))
485+ then $acc21897319025
470486 else {
471- let $acc31855518607 = changePreviousRewardEntry($acc21855518607, $list1855518607[2])
472- if (($size1855518607 == 3))
473- then $acc31855518607
487+ let $acc31897319025 = changePreviousRewardEntry($acc21897319025, $list1897319025[2])
488+ if (($size1897319025 == 3))
489+ then $acc31897319025
474490 else {
475- let $acc41855518607 = changePreviousRewardEntry($acc31855518607, $list1855518607[3])
476- if (($size1855518607 == 4))
477- then $acc41855518607
491+ let $acc41897319025 = changePreviousRewardEntry($acc31897319025, $list1897319025[3])
492+ if (($size1897319025 == 4))
493+ then $acc41897319025
478494 else {
479- let $acc51855518607 = changePreviousRewardEntry($acc41855518607, $list1855518607[4])
480- if (($size1855518607 == 5))
481- then $acc51855518607
495+ let $acc51897319025 = changePreviousRewardEntry($acc41897319025, $list1897319025[4])
496+ if (($size1897319025 == 5))
497+ then $acc51897319025
482498 else {
483- let $acc61855518607 = changePreviousRewardEntry($acc51855518607, $list1855518607[5])
484- if (($size1855518607 == 6))
485- then $acc61855518607
499+ let $acc61897319025 = changePreviousRewardEntry($acc51897319025, $list1897319025[5])
500+ if (($size1897319025 == 6))
501+ then $acc61897319025
486502 else {
487- let $acc71855518607 = changePreviousRewardEntry($acc61855518607, $list1855518607[6])
488- if (($size1855518607 == 7))
489- then $acc71855518607
503+ let $acc71897319025 = changePreviousRewardEntry($acc61897319025, $list1897319025[6])
504+ if (($size1897319025 == 7))
505+ then $acc71897319025
490506 else {
491- let $acc81855518607 = changePreviousRewardEntry($acc71855518607, $list1855518607[7])
492- if (($size1855518607 == 8))
493- then $acc81855518607
507+ let $acc81897319025 = changePreviousRewardEntry($acc71897319025, $list1897319025[7])
508+ if (($size1897319025 == 8))
509+ then $acc81897319025
494510 else {
495- let $acc91855518607 = changePreviousRewardEntry($acc81855518607, $list1855518607[8])
496- if (($size1855518607 == 9))
497- then $acc91855518607
511+ let $acc91897319025 = changePreviousRewardEntry($acc81897319025, $list1897319025[8])
512+ if (($size1897319025 == 9))
513+ then $acc91897319025
498514 else {
499- let $acc101855518607 = changePreviousRewardEntry($acc91855518607, $list1855518607[9])
500- if (($size1855518607 == 10))
501- then $acc101855518607
515+ let $acc101897319025 = changePreviousRewardEntry($acc91897319025, $list1897319025[9])
516+ if (($size1897319025 == 10))
517+ then $acc101897319025
502518 else {
503- let $acc111855518607 = changePreviousRewardEntry($acc101855518607, $list1855518607[10])
519+ let $acc111897319025 = changePreviousRewardEntry($acc101897319025, $list1897319025[10])
504520 throw("List size exceed 10")
505521 }
506522 }
507523 }
508524 }
509525 }
510526 }
511527 }
512528 }
513529 }
514530 }
515531 }
516532 }
517533 let currentRewardEntryNew = {
518- let $list1864018692 = currentPools
519- let $size1864018692 = size($list1864018692)
520- let $acc01864018692 = nil
521- if (($size1864018692 == 0))
522- then $acc01864018692
534+ let $list1905819110 = currentPools
535+ let $size1905819110 = size($list1905819110)
536+ let $acc01905819110 = nil
537+ if (($size1905819110 == 0))
538+ then $acc01905819110
523539 else {
524- let $acc11864018692 = changeCurrentRewardEntry($acc01864018692, $list1864018692[0])
525- if (($size1864018692 == 1))
526- then $acc11864018692
540+ let $acc11905819110 = changeCurrentRewardEntry($acc01905819110, $list1905819110[0])
541+ if (($size1905819110 == 1))
542+ then $acc11905819110
527543 else {
528- let $acc21864018692 = changeCurrentRewardEntry($acc11864018692, $list1864018692[1])
529- if (($size1864018692 == 2))
530- then $acc21864018692
544+ let $acc21905819110 = changeCurrentRewardEntry($acc11905819110, $list1905819110[1])
545+ if (($size1905819110 == 2))
546+ then $acc21905819110
531547 else {
532- let $acc31864018692 = changeCurrentRewardEntry($acc21864018692, $list1864018692[2])
533- if (($size1864018692 == 3))
534- then $acc31864018692
548+ let $acc31905819110 = changeCurrentRewardEntry($acc21905819110, $list1905819110[2])
549+ if (($size1905819110 == 3))
550+ then $acc31905819110
535551 else {
536- let $acc41864018692 = changeCurrentRewardEntry($acc31864018692, $list1864018692[3])
537- if (($size1864018692 == 4))
538- then $acc41864018692
552+ let $acc41905819110 = changeCurrentRewardEntry($acc31905819110, $list1905819110[3])
553+ if (($size1905819110 == 4))
554+ then $acc41905819110
539555 else {
540- let $acc51864018692 = changeCurrentRewardEntry($acc41864018692, $list1864018692[4])
541- if (($size1864018692 == 5))
542- then $acc51864018692
556+ let $acc51905819110 = changeCurrentRewardEntry($acc41905819110, $list1905819110[4])
557+ if (($size1905819110 == 5))
558+ then $acc51905819110
543559 else {
544- let $acc61864018692 = changeCurrentRewardEntry($acc51864018692, $list1864018692[5])
545- if (($size1864018692 == 6))
546- then $acc61864018692
560+ let $acc61905819110 = changeCurrentRewardEntry($acc51905819110, $list1905819110[5])
561+ if (($size1905819110 == 6))
562+ then $acc61905819110
547563 else {
548- let $acc71864018692 = changeCurrentRewardEntry($acc61864018692, $list1864018692[6])
549- if (($size1864018692 == 7))
550- then $acc71864018692
564+ let $acc71905819110 = changeCurrentRewardEntry($acc61905819110, $list1905819110[6])
565+ if (($size1905819110 == 7))
566+ then $acc71905819110
551567 else {
552- let $acc81864018692 = changeCurrentRewardEntry($acc71864018692, $list1864018692[7])
553- if (($size1864018692 == 8))
554- then $acc81864018692
568+ let $acc81905819110 = changeCurrentRewardEntry($acc71905819110, $list1905819110[7])
569+ if (($size1905819110 == 8))
570+ then $acc81905819110
555571 else {
556- let $acc91864018692 = changeCurrentRewardEntry($acc81864018692, $list1864018692[8])
557- if (($size1864018692 == 9))
558- then $acc91864018692
572+ let $acc91905819110 = changeCurrentRewardEntry($acc81905819110, $list1905819110[8])
573+ if (($size1905819110 == 9))
574+ then $acc91905819110
559575 else {
560- let $acc101864018692 = changeCurrentRewardEntry($acc91864018692, $list1864018692[9])
561- if (($size1864018692 == 10))
562- then $acc101864018692
576+ let $acc101905819110 = changeCurrentRewardEntry($acc91905819110, $list1905819110[9])
577+ if (($size1905819110 == 10))
578+ then $acc101905819110
563579 else {
564- let $acc111864018692 = changeCurrentRewardEntry($acc101864018692, $list1864018692[10])
580+ let $acc111905819110 = changeCurrentRewardEntry($acc101905819110, $list1905819110[10])
565581 throw("List size exceed 10")
566582 }
567583 }
568584 }
569585 }
570586 }
571587 }
572588 }
573589 }
574590 }
575591 }
576592 }
577593 }
578594 let heightEntryNewCur = {
579- let $list1872118766 = currentPools
580- let $size1872118766 = size($list1872118766)
581- let $acc01872118766 = nil
582- if (($size1872118766 == 0))
583- then $acc01872118766
595+ let $list1913919184 = currentPools
596+ let $size1913919184 = size($list1913919184)
597+ let $acc01913919184 = nil
598+ if (($size1913919184 == 0))
599+ then $acc01913919184
584600 else {
585- let $acc11872118766 = changeHeightEntry($acc01872118766, $list1872118766[0])
586- if (($size1872118766 == 1))
587- then $acc11872118766
601+ let $acc11913919184 = changeHeightEntry($acc01913919184, $list1913919184[0])
602+ if (($size1913919184 == 1))
603+ then $acc11913919184
588604 else {
589- let $acc21872118766 = changeHeightEntry($acc11872118766, $list1872118766[1])
590- if (($size1872118766 == 2))
591- then $acc21872118766
605+ let $acc21913919184 = changeHeightEntry($acc11913919184, $list1913919184[1])
606+ if (($size1913919184 == 2))
607+ then $acc21913919184
592608 else {
593- let $acc31872118766 = changeHeightEntry($acc21872118766, $list1872118766[2])
594- if (($size1872118766 == 3))
595- then $acc31872118766
609+ let $acc31913919184 = changeHeightEntry($acc21913919184, $list1913919184[2])
610+ if (($size1913919184 == 3))
611+ then $acc31913919184
596612 else {
597- let $acc41872118766 = changeHeightEntry($acc31872118766, $list1872118766[3])
598- if (($size1872118766 == 4))
599- then $acc41872118766
613+ let $acc41913919184 = changeHeightEntry($acc31913919184, $list1913919184[3])
614+ if (($size1913919184 == 4))
615+ then $acc41913919184
600616 else {
601- let $acc51872118766 = changeHeightEntry($acc41872118766, $list1872118766[4])
602- if (($size1872118766 == 5))
603- then $acc51872118766
617+ let $acc51913919184 = changeHeightEntry($acc41913919184, $list1913919184[4])
618+ if (($size1913919184 == 5))
619+ then $acc51913919184
604620 else {
605- let $acc61872118766 = changeHeightEntry($acc51872118766, $list1872118766[5])
606- if (($size1872118766 == 6))
607- then $acc61872118766
621+ let $acc61913919184 = changeHeightEntry($acc51913919184, $list1913919184[5])
622+ if (($size1913919184 == 6))
623+ then $acc61913919184
608624 else {
609- let $acc71872118766 = changeHeightEntry($acc61872118766, $list1872118766[6])
610- if (($size1872118766 == 7))
611- then $acc71872118766
625+ let $acc71913919184 = changeHeightEntry($acc61913919184, $list1913919184[6])
626+ if (($size1913919184 == 7))
627+ then $acc71913919184
612628 else {
613- let $acc81872118766 = changeHeightEntry($acc71872118766, $list1872118766[7])
614- if (($size1872118766 == 8))
615- then $acc81872118766
629+ let $acc81913919184 = changeHeightEntry($acc71913919184, $list1913919184[7])
630+ if (($size1913919184 == 8))
631+ then $acc81913919184
616632 else {
617- let $acc91872118766 = changeHeightEntry($acc81872118766, $list1872118766[8])
618- if (($size1872118766 == 9))
619- then $acc91872118766
633+ let $acc91913919184 = changeHeightEntry($acc81913919184, $list1913919184[8])
634+ if (($size1913919184 == 9))
635+ then $acc91913919184
620636 else {
621- let $acc101872118766 = changeHeightEntry($acc91872118766, $list1872118766[9])
622- if (($size1872118766 == 10))
623- then $acc101872118766
637+ let $acc101913919184 = changeHeightEntry($acc91913919184, $list1913919184[9])
638+ if (($size1913919184 == 10))
639+ then $acc101913919184
624640 else {
625- let $acc111872118766 = changeHeightEntry($acc101872118766, $list1872118766[10])
641+ let $acc111913919184 = changeHeightEntry($acc101913919184, $list1913919184[10])
626642 throw("List size exceed 10")
627643 }
628644 }
629645 }
630646 }
631647 }
632648 }
633649 }
634650 }
635651 }
636652 }
637653 }
638654 }
639655 let sumRewardCurrentTemp = {
640- let $list1880018832 = currentRewards
641- let $size1880018832 = size($list1880018832)
642- let $acc01880018832 = 0
643- if (($size1880018832 == 0))
644- then $acc01880018832
656+ let $list1921819250 = currentRewards
657+ let $size1921819250 = size($list1921819250)
658+ let $acc01921819250 = 0
659+ if (($size1921819250 == 0))
660+ then $acc01921819250
645661 else {
646- let $acc11880018832 = sum($acc01880018832, $list1880018832[0])
647- if (($size1880018832 == 1))
648- then $acc11880018832
662+ let $acc11921819250 = sum($acc01921819250, $list1921819250[0])
663+ if (($size1921819250 == 1))
664+ then $acc11921819250
649665 else {
650- let $acc21880018832 = sum($acc11880018832, $list1880018832[1])
651- if (($size1880018832 == 2))
652- then $acc21880018832
666+ let $acc21921819250 = sum($acc11921819250, $list1921819250[1])
667+ if (($size1921819250 == 2))
668+ then $acc21921819250
653669 else {
654- let $acc31880018832 = sum($acc21880018832, $list1880018832[2])
655- if (($size1880018832 == 3))
656- then $acc31880018832
670+ let $acc31921819250 = sum($acc21921819250, $list1921819250[2])
671+ if (($size1921819250 == 3))
672+ then $acc31921819250
657673 else {
658- let $acc41880018832 = sum($acc31880018832, $list1880018832[3])
659- if (($size1880018832 == 4))
660- then $acc41880018832
674+ let $acc41921819250 = sum($acc31921819250, $list1921819250[3])
675+ if (($size1921819250 == 4))
676+ then $acc41921819250
661677 else {
662- let $acc51880018832 = sum($acc41880018832, $list1880018832[4])
663- if (($size1880018832 == 5))
664- then $acc51880018832
678+ let $acc51921819250 = sum($acc41921819250, $list1921819250[4])
679+ if (($size1921819250 == 5))
680+ then $acc51921819250
665681 else {
666- let $acc61880018832 = sum($acc51880018832, $list1880018832[5])
667- if (($size1880018832 == 6))
668- then $acc61880018832
682+ let $acc61921819250 = sum($acc51921819250, $list1921819250[5])
683+ if (($size1921819250 == 6))
684+ then $acc61921819250
669685 else {
670- let $acc71880018832 = sum($acc61880018832, $list1880018832[6])
671- if (($size1880018832 == 7))
672- then $acc71880018832
686+ let $acc71921819250 = sum($acc61921819250, $list1921819250[6])
687+ if (($size1921819250 == 7))
688+ then $acc71921819250
673689 else {
674- let $acc81880018832 = sum($acc71880018832, $list1880018832[7])
675- if (($size1880018832 == 8))
676- then $acc81880018832
690+ let $acc81921819250 = sum($acc71921819250, $list1921819250[7])
691+ if (($size1921819250 == 8))
692+ then $acc81921819250
677693 else {
678- let $acc91880018832 = sum($acc81880018832, $list1880018832[8])
679- if (($size1880018832 == 9))
680- then $acc91880018832
694+ let $acc91921819250 = sum($acc81921819250, $list1921819250[8])
695+ if (($size1921819250 == 9))
696+ then $acc91921819250
681697 else {
682- let $acc101880018832 = sum($acc91880018832, $list1880018832[9])
683- if (($size1880018832 == 10))
684- then $acc101880018832
698+ let $acc101921819250 = sum($acc91921819250, $list1921819250[9])
699+ if (($size1921819250 == 10))
700+ then $acc101921819250
685701 else {
686- let $acc111880018832 = sum($acc101880018832, $list1880018832[10])
702+ let $acc111921819250 = sum($acc101921819250, $list1921819250[10])
687703 throw("List size exceed 10")
688704 }
689705 }
690706 }
691707 }
692708 }
693709 }
694710 }
695711 }
696712 }
697713 }
698714 }
699715 }
700- let $t01883818949 = getSumReward(sumRewardCurrentTemp, pagination)
701- let sumRewardCurrent = $t01883818949._1
702- let rewardUpdateHeightFirstPaginationEntry = $t01883818949._2
716+ let $t01925619367 = getSumReward(sumRewardCurrentTemp, pagination)
717+ let sumRewardCurrent = $t01925619367._1
718+ let rewardUpdateHeightFirstPaginationEntry = $t01925619367._2
703719 let rewardUpdateHeightEntry = if ((pagination == 2))
704720 then [IntegerEntry(keyRewardUpdateHeight, rewardUpdateHeight)]
705721 else nil
706722 if ((height > rewardUpdateHeight))
707723 then throw("rewardUpdateHeight < height")
708724 else (((((previousRewardEntryNew ++ currentRewardEntryNew) ++ heightEntryNewCur) ++ sumRewardCurrent) ++ rewardUpdateHeightEntry) ++ rewardUpdateHeightFirstPaginationEntry)
709725 }
710726 }
711727
712728
713729
714730 @Callable(i)
715731 func shutdown () = if (!(isActive))
716732 then throw(("DApp is already suspended. Cause: " + valueOrElse(getString(this, keyCause), "the cause wasn't specified")))
717733 else if (!(containsElement([adminPubKey1, adminPubKey2, adminPubKey3, adminPubKeyStartStop], i.callerPublicKey)))
718734 then throw("Only admin can call this function")
719735 else suspend("Paused by admin")
720736
721737
722738
723739 @Callable(i)
724740 func activate () = if (isActive)
725741 then throw("DApp is already active")
726742 else if (!(containsElement([adminPubKey1, adminPubKey2, adminPubKey3, adminPubKeyStartStop], i.callerPublicKey)))
727743 then throw("Only admin can call this function")
728744 else [BooleanEntry(keyActive, true), DeleteEntry(keyCause)]
729745
730746
731747 @Verifier(tx)
732-func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
748+func verify () = {
749+ let adminPubKey1Signed = if (sigVerify(tx.bodyBytes, tx.proofs[0], adminPubKey1))
750+ then 1
751+ else 0
752+ let adminPubKey2Signed = if (sigVerify(tx.bodyBytes, tx.proofs[1], adminPubKey2))
753+ then 1
754+ else 0
755+ let adminPubKey3Signed = if (sigVerify(tx.bodyBytes, tx.proofs[2], adminPubKey3))
756+ then 1
757+ else 0
758+ (((adminPubKey1Signed + adminPubKey2Signed) + adminPubKey3Signed) >= 2)
759+ }
733760

github/deemru/w8io/873ac7e 
372.03 ms