tx · 7db296TdSDtxQ1aGsiUKGe6d1ajzxETUwyGbtqQDs644

3N9evuqxGecMq9hBmpdJu2VkMzdR5VNVrvK:  -0.02400000 Waves

2022.07.19 18:52 [2146838] smart account 3N9evuqxGecMq9hBmpdJu2VkMzdR5VNVrvK > SELF 0.00000000 Waves

{ "type": 13, "id": "7db296TdSDtxQ1aGsiUKGe6d1ajzxETUwyGbtqQDs644", "fee": 2400000, "feeAssetId": null, "timestamp": 1658245974925, "version": 2, "chainId": 84, "sender": "3N9evuqxGecMq9hBmpdJu2VkMzdR5VNVrvK", "senderPublicKey": "AHY8zupoYc6HPJ5fh1gQiGE9bNZSeifFbcQQ89okxVug", "proofs": [ "XtLxAiftxwfzYMvKH9uyYMpuoz62wtZg6TsFXwMpAAWCHRAukob6La1tgfmcHHDonbgWojBP3QoBvWdw41ujuU4" ], "script": "base64:BgIvCAISABIAEgASABIDCgEBEgASAwoBARIAEgASAwoBCBIECgIBARIDCgEIEgMKAQgEAAtTdGFrZWRUb2tlbgEg+a5dhaqgwfNcHhVklvUuRcimKrmAG+DKV13AJarHD1AAC0dvdmVyblRva2VuASABbIXC10DGLlfEc7PFC2dO3zpcxegcWHrOz/9RkZaZLQAUTGlrZVBhY2thZ2VBU0lNSUNvc3QJAGgCAAEAgMLXLwAWTGlrZVBhY2thZ2VUUk9JS0FOQ29zdAkAaAIABQCAwtcvDQFpAQtEZXZXaXRoZHJhdwAECmN1cnJlbnRLZXkJANgEAQgIBQFpBmNhbGxlcgVieXRlcwMJAAACBQpjdXJyZW50S2V5AiMzUDc0YnVIdDk4Qm5vakZjYVJFSlp0Yjk4S0R5VW1aR2VtSgQMRGV2Qm94QW1vdW50BAckbWF0Y2gwCQCaCAIFBHRoaXMCBkRldkJveAMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAMJAGYCAAAFDERldkJveEFtb3VudAkAAgECEk5vdCBlbm91Z2ggYmFsYW5jZQkAzAgCCQEMSW50ZWdlckVudHJ5AgIGRGV2Qm94AAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBQxEZXZCb3hBbW91bnQFC0dvdmVyblRva2VuBQNuaWwJAAIBAixZb3UgY2Fubm90IHdpdGhkcmF3IGFzIHlvdXIgYXJlIG5vdCB0aGUgRGV2LgFpARVXaXRoZHJhd1dlZWtseUVhcm5pbmcABBpDb250cmFjdFdhbGxldFN0YWtlQmFsYW5jZQkA8AcCBQR0aGlzBQtTdGFrZWRUb2tlbgQMTWF4RGVwb3NpdGVyBAckbWF0Y2gwCQCdCAIFBHRoaXMCDE1heERlcG9zaXRlcgMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAWEFByRtYXRjaDAFAWECAAQSVXNlcldlZWtseUVhcm5pbmdzCQCsAgIJANgEAQgIBQFpBmNhbGxlcgVieXRlcwIMX1dlZWtFYXJuaW5nBAxTdGFrZUJhbGFuY2UEByRtYXRjaDAJAJoIAgUEdGhpcwIMU3Rha2VCYWxhbmNlAwkAAQIFByRtYXRjaDACA0ludAQBYQUHJG1hdGNoMAUBYQAABAtQcml6ZUFtb3VudAQHJG1hdGNoMAkAmggCBQR0aGlzAgdGdW5kQm94AwkAAQIFByRtYXRjaDACA0ludAQBYQUHJG1hdGNoMAUBYQAABBVIZWlnaHRUcmFuc2FjdEZ1bmRCb3gEByRtYXRjaDAJAJoIAgUEdGhpcwILUHJpemVIZWlnaHQDCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhAAAEEFByaXplSGVpZ2h0VmFsdWUDAwkAAAIFFUhlaWdodFRyYW5zYWN0RnVuZEJveAAACQAAAgULUHJpemVBbW91bnQAAAcAAAMDCQAAAgUVSGVpZ2h0VHJhbnNhY3RGdW5kQm94AAAJAQIhPQIFC1ByaXplQW1vdW50AAAHBQZoZWlnaHQDAwkBAiE9AgUVSGVpZ2h0VHJhbnNhY3RGdW5kQm94AAAJAQIhPQIFC1ByaXplQW1vdW50AAAHBRVIZWlnaHRUcmFuc2FjdEZ1bmRCb3gAAAQKY3VycmVudEtleQkA2AQBCAgFAWkGY2FsbGVyBWJ5dGVzBAluZXdBbW91bnQEByRtYXRjaDAJAJoIAgUEdGhpcwUSVXNlcldlZWtseUVhcm5pbmdzAwkAAQIFByRtYXRjaDACA0ludAQBYQUHJG1hdGNoMAUBYQAAAwkAZgIAAAUJbmV3QW1vdW50CQACAQIeQ2FuJ3Qgd2l0aGRyYXcgbmVnYXRpdmUgYW1vdW50AwkAZgIAAAUJbmV3QW1vdW50CQACAQkArAICAkFVc2VyIGNhbm5vdCB3aXRoZHJhdyBtb3JlIHRoYW4gZGVwb3NpdGVkIGZ1bmRzLCBZb3VyIGRlcG9zaXQgaXM6IAkApAMBCQBpAgUJbmV3QW1vdW50AIDC1y8JAMwIAgkBDEludGVnZXJFbnRyeQIFElVzZXJXZWVrbHlFYXJuaW5ncwAACQDMCAIJAQxJbnRlZ2VyRW50cnkCAgtQcml6ZUhlaWdodAUQUHJpemVIZWlnaHRWYWx1ZQkAzAgCCQEMSW50ZWdlckVudHJ5AgIKTWF4RGVwb3NpdAAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUJbmV3QW1vdW50BQtTdGFrZWRUb2tlbgUDbmlsAWkBClB1c2hSZXdhcmQABAxtaW5QdXNoQmxvY2sACgQNbWluU3Rha2VCbG9jawkAaAIABwCgCwQORGVsYXlBZnRlclB1c2gAPAQIV2FpdFRpbWUJAGgCAKALAAEEBm1pbnJlZgADBA5GaXJzdFB1c2hUaW1lcgkAaAIABwCgCwQXdXNlcldhbGxldEdvdmVybkJhbGFuY2UJAPAHAgkBB0FkZHJlc3MBCAgFAWkGY2FsbGVyBWJ5dGVzBQtHb3Zlcm5Ub2tlbgQDcG10AwkAAAIJAJADAQgFAWkIcGF5bWVudHMAAQkAkQMCCAUBaQhwYXltZW50cwAACQACAQIcQXR0YWNoZWQgcGF5bWVudCBpcyByZXF1aXJlZAQIVXNlclB1c2gJAKwCAgkA2AQBCAgFAWkGY2FsbGVyBWJ5dGVzAgVfUHVzaAQUVXNlckxhc3RQdXNoT2xkVmFsdWUEByRtYXRjaDAJAJoIAgUEdGhpcwUIVXNlclB1c2gDCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhAAAEC1VzZXJSZWZzTnVtCQCsAgIJANgEAQgIBQFpBmNhbGxlcgVieXRlcwIFX3JlZnMEEFVzZXJSZWZzTnVtVmFsdWUEByRtYXRjaDAJAJoIAgUEdGhpcwULVXNlclJlZnNOdW0DCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhAAAEEEhpZ2hlc3RQdXNoVmFsdWUEByRtYXRjaDAJAJoIAgUEdGhpcwILSGlnaGVzdFB1c2gDCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhAAADCQBmAgUXdXNlcldhbGxldEdvdmVybkJhbGFuY2UIBQNwbXQGYW1vdW50AwMJAGYCCQBkAggFA3BtdAZhbW91bnQFFFVzZXJMYXN0UHVzaE9sZFZhbHVlBRBIaWdoZXN0UHVzaFZhbHVlCQAAAggFA3BtdAdhc3NldElkBQtHb3Zlcm5Ub2tlbgcEEVVzZXJMYXN0UHVzaEJsb2NrCQCsAgIJANgEAQgIBQFpBmNhbGxlcgVieXRlcwISX1VzZXJMYXN0UHVzaEJsb2NrBBJVc2VyTGFzdFN0YWtlQmxvY2sJAKwCAgkA2AQBCAgFAWkGY2FsbGVyBWJ5dGVzAhNfVXNlckxhc3RTdGFrZUJsb2NrBAlVc2VyU3Rha2UJAKwCAgkA2AQBCAgFAWkGY2FsbGVyBWJ5dGVzAghfU3Rha2luZwQaQ29udHJhY3RXYWxsZXRTdGFrZUJhbGFuY2UJAPAHAgUEdGhpcwULU3Rha2VkVG9rZW4EDFN0YWtlQmFsYW5jZQQHJG1hdGNoMAkAmggCBQR0aGlzAgxTdGFrZUJhbGFuY2UDCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhAAAEC1ByaXplQW1vdW50BAckbWF0Y2gwCQCaCAIFBHRoaXMCB0Z1bmRCb3gDCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhAAAEFUhlaWdodFRyYW5zYWN0RnVuZEJveAQHJG1hdGNoMAkAmggCBQR0aGlzAgtQcml6ZUhlaWdodAMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAQQUHJpemVIZWlnaHRWYWx1ZQMDCQAAAgUVSGVpZ2h0VHJhbnNhY3RGdW5kQm94AAAJAAACBQtQcml6ZUFtb3VudAAABwAAAwMJAAACBRVIZWlnaHRUcmFuc2FjdEZ1bmRCb3gAAAkBAiE9AgULUHJpemVBbW91bnQAAAcFBmhlaWdodAMDCQECIT0CBRVIZWlnaHRUcmFuc2FjdEZ1bmRCb3gAAAkBAiE9AgULUHJpemVBbW91bnQAAAcFFUhlaWdodFRyYW5zYWN0RnVuZEJveAAABAtBY3R1YWxEZWxheQQHJG1hdGNoMAkAmggCBQR0aGlzAgVEZWxheQMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAQSSGlnaGVzdFB1c2hBZGRyZXNzBAckbWF0Y2gwCQCaCAIFBHRoaXMCEkhpZ2hlc3RQdXNoQWRkcmVzcwMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAQWVXNlckxhc3RQdXNoQmxvY2tWYWx1ZQQHJG1hdGNoMAkAmggCBQR0aGlzBRFVc2VyTGFzdFB1c2hCbG9jawMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAQXVXNlckxhc3RTdGFrZUJsb2NrVmFsdWUEByRtYXRjaDAJAJoIAgUEdGhpcwUSVXNlckxhc3RTdGFrZUJsb2NrAwkAAQIFByRtYXRjaDACA0ludAQBYQUHJG1hdGNoMAUBYQAABA5Vc2VyU3Rha2VWYWx1ZQQHJG1hdGNoMAkAmggCBQR0aGlzBQlVc2VyU3Rha2UDCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhAAAEDURldkJveEJhbGFuY2UEByRtYXRjaDAJAJoIAgUEdGhpcwIGRGV2Qm94AwkAAQIFByRtYXRjaDACA0ludAQBYQUHJG1hdGNoMAUBYQAABAxEZXZCb3hBbW91bnQJAGQCBQ1EZXZCb3hCYWxhbmNlCQBpAgkAaAIIBQNwbXQGYW1vdW50AAUA6AcEDVVzZXJQdXNodmFsdWUJAGQCCAUDcG10BmFtb3VudAUUVXNlckxhc3RQdXNoT2xkVmFsdWUECE5ld0RlbGF5AwMJAGYCBQZoZWlnaHQJAGQCCQBkAgUQUHJpemVIZWlnaHRWYWx1ZQULQWN0dWFsRGVsYXkFCFdhaXRUaW1lCQBmAgUQSGlnaGVzdFB1c2hWYWx1ZQAABwUORmlyc3RQdXNoVGltZXIJAGQCBQtBY3R1YWxEZWxheQUORGVsYXlBZnRlclB1c2gEF0hpZ2hlc3RQdXNoQWRkcmVzc1ZhbHVlAwMJAGYCBQZoZWlnaHQJAGQCCQBkAgUQUHJpemVIZWlnaHRWYWx1ZQUITmV3RGVsYXkFCFdhaXRUaW1lCQBmAgUQSGlnaGVzdFB1c2hWYWx1ZQAABwIABRJIaWdoZXN0UHVzaEFkZHJlc3MEE1ByaXplSGVpZ2h0VmFsdWVOZXcDAwkAZgIFBmhlaWdodAkAZAIJAGQCBRBQcml6ZUhlaWdodFZhbHVlBQhOZXdEZWxheQUIV2FpdFRpbWUJAGYCBRBIaWdoZXN0UHVzaFZhbHVlAAAHBQZoZWlnaHQFEFByaXplSGVpZ2h0VmFsdWUDAwkAZgIFDVVzZXJQdXNodmFsdWUAAAkAZgIJAGUCBQZoZWlnaHQFF1VzZXJMYXN0U3Rha2VCbG9ja1ZhbHVlBQ1taW5TdGFrZUJsb2NrBwMJAGYCCQBlAgUGaGVpZ2h0BRZVc2VyTGFzdFB1c2hCbG9ja1ZhbHVlBQxtaW5QdXNoQmxvY2sDCQBmAgUOVXNlclN0YWtlVmFsdWUAAAMJAGYCBQ1Vc2VyUHVzaHZhbHVlBRBIaWdoZXN0UHVzaFZhbHVlAwkAZgIFC1ByaXplQW1vdW50AAADAwMDCQBnAgkAZAIFE1ByaXplSGVpZ2h0VmFsdWVOZXcFCE5ld0RlbGF5BQZoZWlnaHQGCQBnAgUGaGVpZ2h0CQBkAgkAZAIFE1ByaXplSGVpZ2h0VmFsdWVOZXcFCE5ld0RlbGF5BQhXYWl0VGltZQkAZgIFEEhpZ2hlc3RQdXNoVmFsdWUAAAcGCQAAAgUQSGlnaGVzdFB1c2hWYWx1ZQAAAwkAZwIFEFVzZXJSZWZzTnVtVmFsdWUFBm1pbnJlZgkAzAgCCQEMSW50ZWdlckVudHJ5AgUIVXNlclB1c2gFDVVzZXJQdXNodmFsdWUJAMwIAgkBC1N0cmluZ0VudHJ5AgISSGlnaGVzdFB1c2hBZGRyZXNzCQDYBAEICAUBaQZjYWxsZXIFYnl0ZXMJAMwIAgkBDEludGVnZXJFbnRyeQICC0hpZ2hlc3RQdXNoBQ1Vc2VyUHVzaHZhbHVlCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRFVc2VyTGFzdFB1c2hCbG9jawUGaGVpZ2h0CQDMCAIJAQxJbnRlZ2VyRW50cnkCAgtQcml6ZUhlaWdodAUTUHJpemVIZWlnaHRWYWx1ZU5ldwkAzAgCCQEMSW50ZWdlckVudHJ5AgIFRGVsYXkFCE5ld0RlbGF5CQDMCAIJAQxJbnRlZ2VyRW50cnkCAgZEZXZCb3gFDERldkJveEFtb3VudAUDbmlsCQACAQkArAICCQCsAgICEVlvdSBoYXZlIHRvIGhhdmUgCQCkAwEFBm1pbnJlZgI8IHJlZmVycmFscyBhbHJlYWR5IHN0YWtpbmcgZm9yIGEgbWluaW11bSBvZiAxMCBkYXlzLCB0byBwdXNoBAN0eHQDCQBmAgUQSGlnaGVzdFB1c2hWYWx1ZQAAAk9Zb3UgY2Fubm90IFB1c2ggYWZ0ZXIgcmV3YXJkaW5nIFByaXplIGFuZCBiZWZvcmUgT25lIGRheSBoYXMgcGFzc2VkIGFmdGVyIGF3YXJkAhBVbmV4cGVjdGVkIGVycm9yCQACAQUDdHh0CQACAQJOWW91IGNhbm5vdCBwdXNoIGJlZm9yZSB0aGUgcmV3YXJkIGlzIHVubG9ja2VkLCBubyByZXdhcmQgaGFzIGJlZW4gZGV0ZWN0ZWQgeWV0CQACAQJDWW91ciBwdXNoIGluIHRyb2lrYW4gdG9rZW4sIHNob3VsZCBiZSBIaWdoZXIgdGhhbiBsYXN0IEhpZ2hlc3QgUHVzaAkAAgECWFRvIGJlIGFibGUgdG8gcGFydGljaXBhdGUgaW4gUHVzaGluZyBmb3IgdGhlIHJld2FyZCB5b3UgbmVlZCB0byBTdGFrZSBBU0lNSXMgaW4gdGhlIGRBcHAJAAIBAjVZb3UgaGF2ZSB0byB3YWl0IDEwbWluIGJlZm9yZSB5b3UgY2FuIG1ha2UgYSBuZXcgUHVzaAkAAgEJAKwCAgI6WW91ciBQdXNoIGRvdCBub3QgY29tcGx5IG9uZSBvZiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6IAJdMS4gUG9zaXRpdmUgVmFsdWUgZm9yIFB1c2ggaW4gVHJvaWthbiBUb2tlCiAyLiBNdXN0IFN0YWtlZCBBU0lNSSBUb2tlbiBmb3IgYSBtaW5pbXVtIG9mIHdlZWsgCQACAQkArAICCQCsAgICdkNhbiBkZXBvc2l0IG9ubHkgcG9zaXRpdmUgYW1vdW50cyBvZiBUcm9pa2FuIFRva2VuLCBvciBDaGVjayB5b3VyIFdhbGxldCBiYWxhbmNlIGluIFRyb2lrYSwgeW91IHNob3VsZCBoYXZlIG1vcmUgdGhhbiAJAKQDAQUQSGlnaGVzdFB1c2hWYWx1ZQIIIHRvIHB1c2gJAAIBAqQBWW91IGRvIG5vdCBoYXZlIGVub3VnaCBUcm9pa2FuIFRva2VucyBpbiB5b3VyIFdhbGxldCBCYWxhbmNlLCBQbGVhc2UgSGFydmVzdCBpZiB5b3UgaGF2ZSBlYXJuZWQgVHJvaWthbiB3YWxsZXQgb3IgdHJhbnNmZXIgdG8geW91ciB3YWxsZXQgbmVjZXNzYXJ5IFRyb2lrYW4gYW1vdW50ICEBaQEFU3Rha2UABAhXYWl0VGltZQkAaAIAoAsAAQQDcG10AwkAAAIJAJADAQgFAWkIcGF5bWVudHMAAQkAkQMCCAUBaQhwYXltZW50cwAACQACAQIcQXR0YWNoZWQgcGF5bWVudCBpcyByZXF1aXJlZAMDCQBmAggFA3BtdAZhbW91bnQAAAkAAAIIBQNwbXQHYXNzZXRJZAULU3Rha2VkVG9rZW4HBB9Hb3Zlcm5Ub2tlblNtYXJ0Q29udHJhY3RCYWxhbmNlCQDwBwIFBHRoaXMFC0dvdmVyblRva2VuBAdVc2VyQVBZCQCsAgIJANgEAQgIBQFpBmNhbGxlcgVieXRlcwIEX0FQWQQIVXNlclB1c2gJAKwCAgkA2AQBCAgFAWkGY2FsbGVyBWJ5dGVzAgVfUHVzaAQSVXNlclN0YWtlZFRva2VuS2V5CQCsAgIJANgEAQgIBQFpBmNhbGxlcgVieXRlcwIIX1N0YWtpbmcEElVzZXJHb3Zlcm5Ub2tlbktleQkArAICCQDYBAEICAUBaQZjYWxsZXIFYnl0ZXMCCV9FYXJuaW5ncwQSVXNlckxhc3RTdGFrZUJsb2NrCQCsAgIJANgEAQgIBQFpBmNhbGxlcgVieXRlcwITX1VzZXJMYXN0U3Rha2VCbG9jawQYVXNlclN0YWtlVHJhbnNhY3Rpb25zS2V5CQCsAgIJANgEAQgIBQFpBmNhbGxlcgVieXRlcwITX1N0YWtlZFRyYW5zYWN0aW9ucwQNQWRkcmVzc0hlaWdodAkArAICCQDYBAEICAUBaQZjYWxsZXIFYnl0ZXMCDF9Qcml6ZUhlaWdodAQQVXNlcldlZWtFYXJuaW5ncwkArAICCQDYBAEICAUBaQZjYWxsZXIFYnl0ZXMCDF9XZWVrRWFybmluZwQVVXNlclN0YWtlVHJhbnNhY3Rpb25zBAckbWF0Y2gwCQCaCAIFBHRoaXMFGFVzZXJTdGFrZVRyYW5zYWN0aW9uc0tleQMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAQMTWF4RGVwb3NpdGVyBAckbWF0Y2gwCQCdCAIFBHRoaXMCDE1heERlcG9zaXRlcgMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAWEFByRtYXRjaDAFAWECAAQPTWF4RGVwb3NpdEJsb2NrBAckbWF0Y2gwCQCaCAIFBHRoaXMCD01heERlcG9zaXRCbG9jawMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAQKTWF4RGVwb3NpdAQHJG1hdGNoMAkAmggCBQR0aGlzAgpNYXhEZXBvc2l0AwkAAQIFByRtYXRjaDACA0ludAQBYQUHJG1hdGNoMAUBYQAABBFNYXhEZXBvc2l0ZXJWYWx1ZQMJAGYCCAUDcG10BmFtb3VudAUKTWF4RGVwb3NpdAkA2AQBCAgFAWkGY2FsbGVyBWJ5dGVzBQxNYXhEZXBvc2l0ZXIED01heERlcG9zaXRWYWx1ZQMJAGYCCAUDcG10BmFtb3VudAUKTWF4RGVwb3NpdAgFA3BtdAZhbW91bnQFCk1heERlcG9zaXQEFE1heERlcG9zaXRCbG9ja1ZhbHVlAwkAZgIIBQNwbXQGYW1vdW50BQpNYXhEZXBvc2l0BQZoZWlnaHQFD01heERlcG9zaXRCbG9jawQNVXNlclB1c2hWYWx1ZQQHJG1hdGNoMAkAmggCBQR0aGlzBQhVc2VyUHVzaAMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAQXVXNlckxhc3RTdGFrZUJsb2NrVmFsdWUEByRtYXRjaDAJAJoIAgUEdGhpcwUSVXNlckxhc3RTdGFrZUJsb2NrAwkAAQIFByRtYXRjaDACA0ludAQBYQUHJG1hdGNoMAUBYQAABBpVc2VyTGFzdFN0YWtlQmxvY2tOZXdWYWx1ZQMJAAACBRdVc2VyTGFzdFN0YWtlQmxvY2tWYWx1ZQAABQZoZWlnaHQFF1VzZXJMYXN0U3Rha2VCbG9ja1ZhbHVlBBhOZXdVc2VyU3Rha2VUcmFuc2FjdGlvbnMJAGQCBRVVc2VyU3Rha2VUcmFuc2FjdGlvbnMAAQQYY3VycmVudEFtb3VudFN0YWtlZFRva2VuBAckbWF0Y2gwCQCaCAIFBHRoaXMFElVzZXJTdGFrZWRUb2tlbktleQMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAQUbmV3QW1vdW50U3Rha2VkVG9rZW4JAGQCBRhjdXJyZW50QW1vdW50U3Rha2VkVG9rZW4IBQNwbXQGYW1vdW50BBpDb250cmFjdFdhbGxldFN0YWtlQmFsYW5jZQkA8AcCBQR0aGlzBQtTdGFrZWRUb2tlbgQMU3Rha2VCYWxhbmNlBAckbWF0Y2gwCQCaCAIFBHRoaXMCDFN0YWtlQmFsYW5jZQMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAQSU3Rha2VCYWxhbmNlQW1vdW50CQBkAgUMU3Rha2VCYWxhbmNlCAUDcG10BmFtb3VudAQLUHJpemVBbW91bnQEByRtYXRjaDAJAJoIAgUEdGhpcwIHRnVuZEJveAMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAQVVXNlcldlZWtFYXJuaW5nc1ZhbHVlBAckbWF0Y2gwCQCaCAIFBHRoaXMFEFVzZXJXZWVrRWFybmluZ3MDCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhAAAEGGN1cnJlbnRBbW91bnRHb3Zlcm5Ub2tlbgQHJG1hdGNoMAkAmggCBQR0aGlzBRJVc2VyR292ZXJuVG9rZW5LZXkDCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhAAAEFUhlaWdodFRyYW5zYWN0RnVuZEJveAQHJG1hdGNoMAkAmggCBQR0aGlzAgtQcml6ZUhlaWdodAMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAQQUHJpemVIZWlnaHRWYWx1ZQMDCQAAAgUVSGVpZ2h0VHJhbnNhY3RGdW5kQm94AAAJAAACBQtQcml6ZUFtb3VudAAABwAAAwMJAAACBRVIZWlnaHRUcmFuc2FjdEZ1bmRCb3gAAAkBAiE9AgULUHJpemVBbW91bnQAAAcFBmhlaWdodAMDCQECIT0CBRVIZWlnaHRUcmFuc2FjdEZ1bmRCb3gAAAkBAiE9AgULUHJpemVBbW91bnQAAAcFFUhlaWdodFRyYW5zYWN0RnVuZEJveAAABAtBY3R1YWxEZWxheQQHJG1hdGNoMAkAmggCBQR0aGlzAgVEZWxheQMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAQQSGlnaGVzdFB1c2hWYWx1ZQQHJG1hdGNoMAkAmggCBQR0aGlzAgtIaWdoZXN0UHVzaAMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAQSSGlnaGVzdFB1c2hBZGRyZXNzBAckbWF0Y2gwCQCdCAIFBHRoaXMCEkhpZ2hlc3RQdXNoQWRkcmVzcwMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAWEFByRtYXRjaDAFAWECAAQXSGlnaGVzdFB1c2hBZGRyZXNzVmFsdWUDAwkAZgIFBmhlaWdodAkAZAIJAGQCBRBQcml6ZUhlaWdodFZhbHVlBQtBY3R1YWxEZWxheQUIV2FpdFRpbWUJAGYCBRBIaWdoZXN0UHVzaFZhbHVlAAAHAgAFEkhpZ2hlc3RQdXNoQWRkcmVzcwQTUHJpemVIZWlnaHRWYWx1ZU5ldwMDCQBmAgUGaGVpZ2h0CQBkAgkAZAIFEFByaXplSGVpZ2h0VmFsdWUFC0FjdHVhbERlbGF5BQhXYWl0VGltZQkAZgIFEEhpZ2hlc3RQdXNoVmFsdWUAAAcFBmhlaWdodAUQUHJpemVIZWlnaHRWYWx1ZQMJAGYCAIDC1y8FH0dvdmVyblRva2VuU21hcnRDb250cmFjdEJhbGFuY2UJAAIBAj5ObyBlbm91Z2ggR292ZXJuVG9rZW4gSW4gQ29udHJhY3QsIFBsZWFzZSBkZXBvc2l0IEdvdmVyblRva2VucwQGUmV3YXJkAwkAAAIFDFN0YWtlQmFsYW5jZQAAAJBOAwkAZgIFGE5ld1VzZXJTdGFrZVRyYW5zYWN0aW9ucwAKCQBoAgkAaAIAkE4FGE5ld1VzZXJTdGFrZVRyYW5zYWN0aW9ucwkAZAIAAQkAaQIFFG5ld0Ftb3VudFN0YWtlZFRva2VuBQxTdGFrZUJhbGFuY2UJAGgCAJBOCQBkAgABCQBpAgUUbmV3QW1vdW50U3Rha2VkVG9rZW4FDFN0YWtlQmFsYW5jZQQMVXNlckFQWVZhbHVlAwkAZgIFGGN1cnJlbnRBbW91bnRHb3Zlcm5Ub2tlbgAACQBpAgkAaAIAZAUGUmV3YXJkBRhjdXJyZW50QW1vdW50R292ZXJuVG9rZW4AAAQUbmV3QW1vdW50R292ZXJuVG9rZW4JAGQCBRhjdXJyZW50QW1vdW50R292ZXJuVG9rZW4FBlJld2FyZAkAzAgCCQEMSW50ZWdlckVudHJ5AgUSVXNlckdvdmVyblRva2VuS2V5BRRuZXdBbW91bnRHb3Zlcm5Ub2tlbgkAzAgCCQEMSW50ZWdlckVudHJ5AgUSVXNlclN0YWtlZFRva2VuS2V5BRRuZXdBbW91bnRTdGFrZWRUb2tlbgkAzAgCCQEMSW50ZWdlckVudHJ5AgUYVXNlclN0YWtlVHJhbnNhY3Rpb25zS2V5BRhOZXdVc2VyU3Rha2VUcmFuc2FjdGlvbnMJAMwIAgkBDEludGVnZXJFbnRyeQICDFN0YWtlQmFsYW5jZQUSU3Rha2VCYWxhbmNlQW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCAgtQcml6ZUhlaWdodAUTUHJpemVIZWlnaHRWYWx1ZU5ldwkAzAgCCQEMSW50ZWdlckVudHJ5AgUHVXNlckFQWQUMVXNlckFQWVZhbHVlCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRJVc2VyTGFzdFN0YWtlQmxvY2sFGlVzZXJMYXN0U3Rha2VCbG9ja05ld1ZhbHVlCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQhVc2VyUHVzaAUNVXNlclB1c2hWYWx1ZQkAzAgCCQELU3RyaW5nRW50cnkCAgxNYXhEZXBvc2l0ZXIFEU1heERlcG9zaXRlclZhbHVlCQDMCAIJAQxJbnRlZ2VyRW50cnkCAgpNYXhEZXBvc2l0BQ9NYXhEZXBvc2l0VmFsdWUJAMwIAgkBDEludGVnZXJFbnRyeQICD01heERlcG9zaXRCbG9jawUUTWF4RGVwb3NpdEJsb2NrVmFsdWUJAMwIAgkBC1N0cmluZ0VudHJ5AgISSGlnaGVzdFB1c2hBZGRyZXNzBRdIaWdoZXN0UHVzaEFkZHJlc3NWYWx1ZQkAzAgCCQEMSW50ZWdlckVudHJ5AgUQVXNlcldlZWtFYXJuaW5ncwUVVXNlcldlZWtFYXJuaW5nc1ZhbHVlCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUGUmV3YXJkBQtHb3Zlcm5Ub2tlbgUDbmlsCQACAQIbQ2FuIGRlcG9zaXQgb25seSBTdGFrZVRva2VuAWkBE1dpdGhkcmF3U3Rha2VkRnVuZHMBBmFtb3VudAQIV2FpdFRpbWUJAGgCAKALAAEEElVzZXJMYXN0U3Rha2VCbG9jawkArAICCQDYBAEICAUBaQZjYWxsZXIFYnl0ZXMCE19Vc2VyTGFzdFN0YWtlQmxvY2sEElVzZXJTdGFrZWRUb2tlbktleQkArAICCQDYBAEICAUBaQZjYWxsZXIFYnl0ZXMCCF9TdGFraW5nBBJVc2VyR292ZXJuVG9rZW5LZXkJAKwCAgkArAICCQDYBAEICAUBaQZjYWxsZXIFYnl0ZXMCAV8JANgEAQULR292ZXJuVG9rZW4EGkNvbnRyYWN0V2FsbGV0U3Rha2VCYWxhbmNlCQDwBwIFBHRoaXMFC1N0YWtlZFRva2VuBBdVc2VyTGFzdFN0YWtlQmxvY2tWYWx1ZQQHJG1hdGNoMAkAmggCBQR0aGlzBRJVc2VyTGFzdFN0YWtlQmxvY2sDCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhAAAEDFN0YWtlQmFsYW5jZQQHJG1hdGNoMAkAmggCBQR0aGlzAgxTdGFrZUJhbGFuY2UDCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhAAAEC1ByaXplQW1vdW50BAckbWF0Y2gwCQCaCAIFBHRoaXMCB0Z1bmRCb3gDCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhAAAEFUhlaWdodFRyYW5zYWN0RnVuZEJveAQHJG1hdGNoMAkAmggCBQR0aGlzAgtQcml6ZUhlaWdodAMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAQLQWN0dWFsRGVsYXkEByRtYXRjaDAJAJoIAgUEdGhpcwIFRGVsYXkDCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhAAAEEEhpZ2hlc3RQdXNoVmFsdWUEByRtYXRjaDAJAJoIAgUEdGhpcwILSGlnaGVzdFB1c2gDCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhAAAEEFByaXplSGVpZ2h0VmFsdWUDAwkAAAIFFUhlaWdodFRyYW5zYWN0RnVuZEJveAAACQAAAgULUHJpemVBbW91bnQAAAcAAAMDCQAAAgUVSGVpZ2h0VHJhbnNhY3RGdW5kQm94AAAJAQIhPQIFC1ByaXplQW1vdW50AAAHBQZoZWlnaHQDAwkBAiE9AgUVSGVpZ2h0VHJhbnNhY3RGdW5kQm94AAAJAQIhPQIFC1ByaXplQW1vdW50AAAHBRVIZWlnaHRUcmFuc2FjdEZ1bmRCb3gAAAQSSGlnaGVzdFB1c2hBZGRyZXNzBAckbWF0Y2gwCQCdCAIFBHRoaXMCEkhpZ2hlc3RQdXNoQWRkcmVzcwMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAWEFByRtYXRjaDAFAWECAAQXSGlnaGVzdFB1c2hBZGRyZXNzVmFsdWUDAwkAZgIFBmhlaWdodAkAZAIJAGQCBRBQcml6ZUhlaWdodFZhbHVlBQtBY3R1YWxEZWxheQUIV2FpdFRpbWUJAGYCBRBIaWdoZXN0UHVzaFZhbHVlAAAHAgAFEkhpZ2hlc3RQdXNoQWRkcmVzcwQTUHJpemVIZWlnaHRWYWx1ZU5ldwMDCQBmAgUGaGVpZ2h0CQBkAgkAZAIFEFByaXplSGVpZ2h0VmFsdWUFC0FjdHVhbERlbGF5BQhXYWl0VGltZQkAZgIFEEhpZ2hlc3RQdXNoVmFsdWUAAAcFBmhlaWdodAUQUHJpemVIZWlnaHRWYWx1ZQQKY3VycmVudEtleQkA2AQBCAgFAWkGY2FsbGVyBWJ5dGVzBA1jdXJyZW50QW1vdW50BAckbWF0Y2gwCQCaCAIFBHRoaXMFElVzZXJTdGFrZWRUb2tlbktleQMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAQJbmV3QW1vdW50CQBlAgUNY3VycmVudEFtb3VudAUGYW1vdW50BBJTdGFrZUJhbGFuY2VBbW91bnQJAGUCBQxTdGFrZUJhbGFuY2UFBmFtb3VudAQaVXNlckxhc3RTdGFrZUJsb2NrTmV3VmFsdWUDCQAAAgUSU3Rha2VCYWxhbmNlQW1vdW50AAAAAAUXVXNlckxhc3RTdGFrZUJsb2NrVmFsdWUDCQBmAgAABQZhbW91bnQJAAIBAh5DYW4ndCB3aXRoZHJhdyBuZWdhdGl2ZSBhbW91bnQDCQBmAgAABQluZXdBbW91bnQJAAIBCQCsAgICQVVzZXIgY2Fubm90IHdpdGhkcmF3IG1vcmUgdGhhbiBkZXBvc2l0ZWQgZnVuZHMsIFlvdXIgZGVwb3NpdCBpczogCQCkAwEJAGkCBQ1jdXJyZW50QW1vdW50AIDC1y8DCQBmAgCAwtcvCQDwBwIFBHRoaXMFC0dvdmVyblRva2VuCQACAQkArAICAh9Ob3QgZW5vdWdoIFRyb2lrYSBJbiBDb250cmFjdDogCQCkAwEJAGkCCQDwBwIFBHRoaXMFC0dvdmVyblRva2VuAIDC1y8JAMwIAgkBDEludGVnZXJFbnRyeQIFElVzZXJHb3Zlcm5Ub2tlbktleQCAwtcvCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRJVc2VyU3Rha2VkVG9rZW5LZXkFCW5ld0Ftb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgIMU3Rha2VCYWxhbmNlBRJTdGFrZUJhbGFuY2VBbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQICC1ByaXplSGVpZ2h0BRNQcml6ZUhlaWdodFZhbHVlTmV3CQDMCAIJAQxJbnRlZ2VyRW50cnkCBRJVc2VyTGFzdFN0YWtlQmxvY2sFGlVzZXJMYXN0U3Rha2VCbG9ja05ld1ZhbHVlCQDMCAIJAQtTdHJpbmdFbnRyeQICEkhpZ2hlc3RQdXNoQWRkcmVzcwUXSGlnaGVzdFB1c2hBZGRyZXNzVmFsdWUJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyAIDC1y8FC0dvdmVyblRva2VuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUGYW1vdW50BQtTdGFrZWRUb2tlbgUDbmlsAWkBFldpdGhkcmF3QmlnU3Rha2VSZXdhcmQABAhXYWl0VGltZQkAaAIAoAsAAQQYTGFzdEJpZ1N0YWtlclJld2FyZEJsb2NrCQCsAgIJANgEAQgIBQFpBmNhbGxlcgVieXRlcwIZX0xhc3RCaWdTdGFrZXJSZXdhcmRCbG9jawQPQmlnU3Rha2VyUmV3YXJkCQCsAgIJANgEAQgIBQFpBmNhbGxlcgVieXRlcwIKX0JpZ1N0YWtlcgQSVXNlckdvdmVyblRva2VuS2V5CQCsAgIJANgEAQgIBQFpBmNhbGxlcgVieXRlcwIJX0Vhcm5pbmdzBBJMaW1pV2l0aGRyYXdSZXdhcmQACgQVVXNlckdvdmVyblRva2VuQW1vdW50BAckbWF0Y2gwCQCaCAIFBHRoaXMFElVzZXJHb3Zlcm5Ub2tlbktleQMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAQdTGFzdEJpZ1N0YWtlclJld2FyZEJsb2NrVmFsdWUEByRtYXRjaDAJAJoIAgUEdGhpcwUYTGFzdEJpZ1N0YWtlclJld2FyZEJsb2NrAwkAAQIFByRtYXRjaDACA0ludAQBYQUHJG1hdGNoMAUBYQAABBlCaWdTdGFrZXJSZXdhcmRUb3RhbFZhbHVlBAckbWF0Y2gwCQCaCAIFBHRoaXMCFEJpZ1N0YWtlclJld2FyZFRvdGFsAwkAAQIFByRtYXRjaDACA0ludAQBYQUHJG1hdGNoMAUBYQAABAtQcml6ZUFtb3VudAQHJG1hdGNoMAkAmggCBQR0aGlzAgdGdW5kQm94AwkAAQIFByRtYXRjaDACA0ludAQBYQUHJG1hdGNoMAUBYQAABBVIZWlnaHRUcmFuc2FjdEZ1bmRCb3gEByRtYXRjaDAJAJoIAgUEdGhpcwILUHJpemVIZWlnaHQDCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhAAAEEFByaXplSGVpZ2h0VmFsdWUDAwkAAAIFFUhlaWdodFRyYW5zYWN0RnVuZEJveAAACQAAAgULUHJpemVBbW91bnQAAAcAAAMDCQAAAgUVSGVpZ2h0VHJhbnNhY3RGdW5kQm94AAAJAQIhPQIFC1ByaXplQW1vdW50AAAHBQZoZWlnaHQDAwkBAiE9AgUVSGVpZ2h0VHJhbnNhY3RGdW5kQm94AAAJAQIhPQIFC1ByaXplQW1vdW50AAAHBRVIZWlnaHRUcmFuc2FjdEZ1bmRCb3gAAAQLQWN0dWFsRGVsYXkEByRtYXRjaDAJAJoIAgUEdGhpcwIFRGVsYXkDCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhAAAEEEhpZ2hlc3RQdXNoVmFsdWUEByRtYXRjaDAJAJoIAgUEdGhpcwILSGlnaGVzdFB1c2gDCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhAAAEEkhpZ2hlc3RQdXNoQWRkcmVzcwQHJG1hdGNoMAkAnQgCBQR0aGlzAhJIaWdoZXN0UHVzaEFkZHJlc3MDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFhBQckbWF0Y2gwBQFhAgAEF0hpZ2hlc3RQdXNoQWRkcmVzc1ZhbHVlAwMJAGYCBQZoZWlnaHQJAGQCCQBkAgUQUHJpemVIZWlnaHRWYWx1ZQULQWN0dWFsRGVsYXkFCFdhaXRUaW1lCQBmAgUQSGlnaGVzdFB1c2hWYWx1ZQAABwIABRJIaWdoZXN0UHVzaEFkZHJlc3MEE1ByaXplSGVpZ2h0VmFsdWVOZXcDAwkAZgIFBmhlaWdodAkAZAIJAGQCBRBQcml6ZUhlaWdodFZhbHVlBQtBY3R1YWxEZWxheQUIV2FpdFRpbWUJAGYCBRBIaWdoZXN0UHVzaFZhbHVlAAAHBQZoZWlnaHQFEFByaXplSGVpZ2h0VmFsdWUECmN1cnJlbnRLZXkJANgEAQgIBQFpBmNhbGxlcgVieXRlcwQGYW1vdW50BAckbWF0Y2gwCQCaCAIFBHRoaXMFD0JpZ1N0YWtlclJld2FyZAMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAQSU3Rha2VCYWxhbmNlQW1vdW50CQBlAgUZQmlnU3Rha2VyUmV3YXJkVG90YWxWYWx1ZQUGYW1vdW50BBJCaWdTdGFrZXJSZXdhcmRUYXgDCQBmAgAACQBoAgkAaQIFFVVzZXJHb3Zlcm5Ub2tlbkFtb3VudADoBwkAZQIA6AcJAGkCCQBoAgDoBwkAZQIFBmhlaWdodAUdTGFzdEJpZ1N0YWtlclJld2FyZEJsb2NrVmFsdWUJAGgCBRJMaW1pV2l0aGRyYXdSZXdhcmQAoAsJAGgCAOgHAIDC1y8JAGgCCQBpAgUVVXNlckdvdmVyblRva2VuQW1vdW50AOgHCQBlAgDoBwkAaQIJAGgCAOgHCQBlAgUGaGVpZ2h0BR1MYXN0QmlnU3Rha2VyUmV3YXJkQmxvY2tWYWx1ZQkAaAIFEkxpbWlXaXRoZHJhd1Jld2FyZACgCwMJAGYCAAAFBmFtb3VudAkAAgEJAKwCAgkArAICCQCsAgICH0Nhbid0IHdpdGhkcmF3IG5lZ2F0aXZlIGFtb3VudCAJAKQDAQkAZQIFFVVzZXJHb3Zlcm5Ub2tlbkFtb3VudAkAaAIA6AcAgMLXLwIFIC4uLiAJAKQDAQUGYW1vdW50AwMDCQBmAgkAaAIA6AcAgMLXLwUVVXNlckdvdmVyblRva2VuQW1vdW50BgkAZgIAAQUGYW1vdW50BgkAZgIAAAkAZQIFFVVzZXJHb3Zlcm5Ub2tlbkFtb3VudAUSQmlnU3Rha2VyUmV3YXJkVGF4CQACAQkArAICAlxObyBBU0lNSSByZXdhcmQgYXZhaWxhYmxlLCBvciBOb3QgZW5vdWdoIEVhcm5lZCBUcm9pa2FuIFRva2VucyB0byBkbyB0cmFuc2FjdGlvbiwgeW91IGhhdmU6IAkApAMBCQBpAgUVVXNlckdvdmVyblRva2VuQW1vdW50AIDC1y8DCQBmAgUSU3Rha2VCYWxhbmNlQW1vdW50AAAJAMwIAgkBDEludGVnZXJFbnRyeQIFD0JpZ1N0YWtlclJld2FyZAAACQDMCAIJAQxJbnRlZ2VyRW50cnkCAhRCaWdTdGFrZXJSZXdhcmRUb3RhbAUSU3Rha2VCYWxhbmNlQW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCBRJVc2VyR292ZXJuVG9rZW5LZXkJAGUCBRVVc2VyR292ZXJuVG9rZW5BbW91bnQFEkJpZ1N0YWtlclJld2FyZFRheAkAzAgCCQEMSW50ZWdlckVudHJ5AgILUHJpemVIZWlnaHQFEFByaXplSGVpZ2h0VmFsdWUJAMwIAgkBDEludGVnZXJFbnRyeQIFGExhc3RCaWdTdGFrZXJSZXdhcmRCbG9jawUGaGVpZ2h0CQDMCAIJAQtTdHJpbmdFbnRyeQICEkhpZ2hlc3RQdXNoQWRkcmVzcwUXSGlnaGVzdFB1c2hBZGRyZXNzVmFsdWUJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBQZhbW91bnQFC1N0YWtlZFRva2VuBQNuaWwJAAIBAlJCYWxhbmNlIEVycm9yLCBUb3RhbCBCaWcgU3Rha2VycyBjYW5ub3QgYmUgbmVnYXRpdmUsIE9wZXJhdGlvbiB3b24ndCBiZSBhdXRob3JpemVkAWkBE0hhcnZlc3RHb3Zlcm5Ub2lrZW4BBmFtb3VudAQaQ29udHJhY3RXYWxsZXRTdGFrZUJhbGFuY2UJAPAHAgUEdGhpcwULU3Rha2VkVG9rZW4EElVzZXJHb3Zlcm5Ub2tlbktleQkArAICCQDYBAEICAUBaQZjYWxsZXIFYnl0ZXMCCV9FYXJuaW5ncwQMU3Rha2VCYWxhbmNlBAckbWF0Y2gwCQCaCAIFBHRoaXMCDFN0YWtlQmFsYW5jZQMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAQLUHJpemVBbW91bnQEByRtYXRjaDAJAJoIAgUEdGhpcwIHRnVuZEJveAMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAQVSGVpZ2h0VHJhbnNhY3RGdW5kQm94BAckbWF0Y2gwCQCaCAIFBHRoaXMCC1ByaXplSGVpZ2h0AwkAAQIFByRtYXRjaDACA0ludAQBYQUHJG1hdGNoMAUBYQAABBBQcml6ZUhlaWdodFZhbHVlAwMJAAACBRVIZWlnaHRUcmFuc2FjdEZ1bmRCb3gAAAkAAAIFC1ByaXplQW1vdW50AAAHAAADAwkAAAIFFUhlaWdodFRyYW5zYWN0RnVuZEJveAAACQECIT0CBQtQcml6ZUFtb3VudAAABwUGaGVpZ2h0AwMJAQIhPQIFFUhlaWdodFRyYW5zYWN0RnVuZEJveAAACQECIT0CBQtQcml6ZUFtb3VudAAABwUVSGVpZ2h0VHJhbnNhY3RGdW5kQm94AAAECmN1cnJlbnRLZXkJANgEAQgIBQFpBmNhbGxlcgVieXRlcwQNY3VycmVudEFtb3VudAQHJG1hdGNoMAkAmggCBQR0aGlzBRJVc2VyR292ZXJuVG9rZW5LZXkDCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhAAAECW5ld0Ftb3VudAkAZQIFDWN1cnJlbnRBbW91bnQFBmFtb3VudAMJAGYCAAAFBmFtb3VudAkAAgECHkNhbid0IHdpdGhkcmF3IG5lZ2F0aXZlIGFtb3VudAMJAGYCAAAFCW5ld0Ftb3VudAkAAgEJAKwCAgJBVXNlciBjYW5ub3Qgd2l0aGRyYXcgbW9yZSB0aGFuIGRlcG9zaXRlZCBmdW5kcywgWW91ciBkZXBvc2l0IGlzOiAJAKQDAQkAaQIFDWN1cnJlbnRBbW91bnQAgMLXLwkAzAgCCQEMSW50ZWdlckVudHJ5AgUSVXNlckdvdmVyblRva2VuS2V5BQluZXdBbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQICC1ByaXplSGVpZ2h0BRBQcml6ZUhlaWdodFZhbHVlCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUGYW1vdW50BQtHb3Zlcm5Ub2tlbgUDbmlsAWkBCmRlbGF5cHJpemUABAlEZWxheURheXMJAGgCAKALAAEECFdhaXRUaW1lCQBoAgCgCwABBBJVc2VyR292ZXJuVG9rZW5LZXkJAKwCAgkArAICCQDYBAEICAUBaQZjYWxsZXIFYnl0ZXMCAV8JANgEAQULR292ZXJuVG9rZW4EGFVzZXJXYWxsZXRTR292ZXJuQmFsYW5jZQkA8AcCCQEHQWRkcmVzcwEICAUBaQZjYWxsZXIFYnl0ZXMFC0dvdmVyblRva2VuBBpDb250cmFjdFdhbGxldFN0YWtlQmFsYW5jZQkA8AcCBQR0aGlzBQtTdGFrZWRUb2tlbgQMU3Rha2VCYWxhbmNlBAckbWF0Y2gwCQCaCAIFBHRoaXMCDFN0YWtlQmFsYW5jZQMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAQLUHJpemVBbW91bnQEByRtYXRjaDAJAJoIAgUEdGhpcwIHRnVuZEJveAMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAQVSGVpZ2h0VHJhbnNhY3RGdW5kQm94BAckbWF0Y2gwCQCaCAIFBHRoaXMCC1ByaXplSGVpZ2h0AwkAAQIFByRtYXRjaDACA0ludAQBYQUHJG1hdGNoMAUBYQAABAtBY3R1YWxEZWxheQQHJG1hdGNoMAkAmggCBQR0aGlzAgVEZWxheQMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAQQUHJpemVIZWlnaHRWYWx1ZQMDCQAAAgUVSGVpZ2h0VHJhbnNhY3RGdW5kQm94AAAJAAACBQtQcml6ZUFtb3VudAAABwAAAwMJAAACBRVIZWlnaHRUcmFuc2FjdEZ1bmRCb3gAAAkBAiE9AgULUHJpemVBbW91bnQAAAcFBmhlaWdodAMDCQECIT0CBRVIZWlnaHRUcmFuc2FjdEZ1bmRCb3gAAAkBAiE9AgULUHJpemVBbW91bnQAAAcFFUhlaWdodFRyYW5zYWN0RnVuZEJveAAABBBIaWdoZXN0UHVzaFZhbHVlBAckbWF0Y2gwCQCaCAIFBHRoaXMCC0hpZ2hlc3RQdXNoAwkAAQIFByRtYXRjaDACA0ludAQBYQUHJG1hdGNoMAUBYQAABBJIaWdoZXN0UHVzaEFkZHJlc3MEByRtYXRjaDAJAJ0IAgUEdGhpcwISSGlnaGVzdFB1c2hBZGRyZXNzAwkAAQIFByRtYXRjaDACBlN0cmluZwQBYQUHJG1hdGNoMAUBYQIABBdIaWdoZXN0UHVzaEFkZHJlc3NWYWx1ZQMDCQBmAgUGaGVpZ2h0CQBkAgkAZAIFEFByaXplSGVpZ2h0VmFsdWUFC0FjdHVhbERlbGF5BQhXYWl0VGltZQkAZgIFEEhpZ2hlc3RQdXNoVmFsdWUAAAcCAAUSSGlnaGVzdFB1c2hBZGRyZXNzBBNQcml6ZUhlaWdodFZhbHVlTmV3AwMJAGYCBQZoZWlnaHQJAGQCCQBkAgUQUHJpemVIZWlnaHRWYWx1ZQULQWN0dWFsRGVsYXkFCFdhaXRUaW1lCQBmAgUQSGlnaGVzdFB1c2hWYWx1ZQAABwUGaGVpZ2h0BRBQcml6ZUhlaWdodFZhbHVlBA9BY3R1YWxEZWxheUNvc3QEByRtYXRjaDAJAJoIAgUEdGhpcwIJRGVsYXlDb3N0AwkAAQIFByRtYXRjaDACA0ludAQBYQUHJG1hdGNoMAUBYQAKBANwbXQDCQAAAgkAkAMBCAUBaQhwYXltZW50cwABCQCRAwIIBQFpCHBheW1lbnRzAAAJAAIBAhxBdHRhY2hlZCBwYXltZW50IGlzIHJlcXVpcmVkBA1EZXZCb3hCYWxhbmNlBAckbWF0Y2gwCQCaCAIFBHRoaXMCBkRldkJveAMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAMDCQEJaXNEZWZpbmVkAQgFA3BtdAdhc3NldElkCQAAAggFA3BtdAdhc3NldElkBQtHb3Zlcm5Ub2tlbgcDCQBmAgULUHJpemVBbW91bnQAAAQVVXNlckdvdmVyblRva2VuQW1vdW50CAUDcG10BmFtb3VudAQMRGV2Qm94QW1vdW50CQBkAgUNRGV2Qm94QmFsYW5jZQkAaQIJAGgCCAUDcG10BmFtb3VudAAFAOgHBAxOZXdEZWxheUNvc3QDCQAAAgUPQWN0dWFsRGVsYXlDb3N0AAAAgJTr3AMJAGgCAAIFD0FjdHVhbERlbGF5Q29zdAMJAGcCBRVVc2VyR292ZXJuVG9rZW5BbW91bnQFDE5ld0RlbGF5Q29zdAQITmV3RGVsYXkJAGQCBQtBY3R1YWxEZWxheQUJRGVsYXlEYXlzCQDMCAIJAQxJbnRlZ2VyRW50cnkCAgVEZWxheQUITmV3RGVsYXkJAMwIAgkBDEludGVnZXJFbnRyeQICCURlbGF5Q29zdAUMTmV3RGVsYXlDb3N0CQDMCAIJAQxJbnRlZ2VyRW50cnkCAgtQcml6ZUhlaWdodAUTUHJpemVIZWlnaHRWYWx1ZU5ldwkAzAgCCQEMSW50ZWdlckVudHJ5AgIGRGV2Qm94BQxEZXZCb3hBbW91bnQJAMwIAgkBC1N0cmluZ0VudHJ5AgISSGlnaGVzdFB1c2hBZGRyZXNzBRdIaWdoZXN0UHVzaEFkZHJlc3NWYWx1ZQUDbmlsCQACAQkArAICCQCsAgICSVRvIGRlbGF5IHRoZSByZWxlYXNlIG9mIHRoZSByZXdhcmQgT05FIERBWSBsYXRlciB0aGFuIGV4cGVjdGVkLCB5b3UgbmVlZCAJAKQDAQUMTmV3RGVsYXlDb3N0AgdUUk9JS0FzCQACAQJeWW91IGNhbm5vdCBkZWxheSB0aGUgcmV3YXJkIGJlZm9yZSByZXdhcmQgaXMgcmVjZWl2ZWQhIFBsZWFzZSB3YWl0IHVudGlsIGEgcmV3YXJkIGlzIGF2YWlsYWJsZQkAAgECKUNhbiBVc2Ugb25seSBUcm9pa2EgVG9rZW4gdG8gRGVsYXkgUmV3YXJkAWkBCkNsYWltUHJpemUABBJVc2VyU3Rha2VkVG9rZW5LZXkJAKwCAgkA2AQBCAgFAWkGY2FsbGVyBWJ5dGVzAghfU3Rha2luZwQIVXNlclB1c2gJAKwCAgkA2AQBCAgFAWkGY2FsbGVyBWJ5dGVzAgVfUHVzaAQSVXNlckxhc3RTdGFrZUJsb2NrCQCsAgIJANgEAQgIBQFpBmNhbGxlcgVieXRlcwITX1VzZXJMYXN0U3Rha2VCbG9jawQNbWluU3Rha2VCbG9jawkAaAIAoAsABwQGbWlucmVmAAMEF0NvbnRyYWN0R292VG9rZW5CYWxhbmNlCQDwBwIFBHRoaXMFC0dvdmVyblRva2VuBBpDb250cmFjdFdhbGxldFN0YWtlQmFsYW5jZQkA8AcCBQR0aGlzBQtTdGFrZWRUb2tlbgQMU3Rha2VCYWxhbmNlBAckbWF0Y2gwCQCaCAIFBHRoaXMCDFN0YWtlQmFsYW5jZQMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAQLUHJpemVBbW91bnQEByRtYXRjaDAJAJoIAgUEdGhpcwIHRnVuZEJveAMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAQNVXNlclB1c2hWYWx1ZQQHJG1hdGNoMAkAmggCBQR0aGlzBQhVc2VyUHVzaAMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAQXVXNlckxhc3RTdGFrZUJsb2NrVmFsdWUEByRtYXRjaDAJAJoIAgUEdGhpcwUSVXNlckxhc3RTdGFrZUJsb2NrAwkAAQIFByRtYXRjaDACA0ludAQBYQUHJG1hdGNoMAUBYQAABBVVc2VyU3Rha2VkVG9rZW5BbW91bnQEByRtYXRjaDAJAJoIAgUEdGhpcwUSVXNlclN0YWtlZFRva2VuS2V5AwkAAQIFByRtYXRjaDACA0ludAQBYQUHJG1hdGNoMAUBYQAABAtBY3R1YWxEZWxheQQHJG1hdGNoMAkAmggCBQR0aGlzAgVEZWxheQMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAQLUHJpemVXaW5uZXIEByRtYXRjaDAJAJ0IAgUEdGhpcwISSGlnaGVzdFB1c2hBZGRyZXNzAwkAAQIFByRtYXRjaDACBlN0cmluZwQBYQUHJG1hdGNoMAUBYQIABAtQcml6ZUhlaWdodAQHJG1hdGNoMAkAmggCBQR0aGlzAgtQcml6ZUhlaWdodAMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAQQSGlnaGVzdFB1c2hWYWx1ZQQHJG1hdGNoMAkAmggCBQR0aGlzAgtIaWdoZXN0UHVzaAMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAQLVXNlclJlZnNOdW0JAKwCAgkA2AQBCAgFAWkGY2FsbGVyBWJ5dGVzAgVfcmVmcwQQVXNlclJlZnNOdW1WYWx1ZQQHJG1hdGNoMAkAmggCBQR0aGlzBQtVc2VyUmVmc051bQMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAMDCQAAAgULUHJpemVBbW91bnQAAAYJAGYCAIDIr6AlBRdDb250cmFjdEdvdlRva2VuQmFsYW5jZQkAAgECSU5vIHByaXplIHRvIENsYWltIG9yIE5vdCBlbm91Z2ggR292ZXJuIFRva2VuIGVuIENvbnRyYWN0IChNaW4gMTAwIFRyb2lrYSkDCQECIT0CCQDYBAEICAUBaQZjYWxsZXIFYnl0ZXMFC1ByaXplV2lubmVyCQACAQI2WW91IGFyZSBub3QgdGhlIHdpbm5lciBoZW5jZSBjYW5ub3QgY2xhaW0gdGhlIHJld2FyZCAgAwMJAGYCAIDC1y8FFVVzZXJTdGFrZWRUb2tlbkFtb3VudAkAZgIFDW1pblN0YWtlQmxvY2sFF1VzZXJMYXN0U3Rha2VCbG9ja1ZhbHVlBwkAAgECLllvdSBoYXZlIHRvIFN0YWtlIEFTSU1JIFRva2VuIHRvIGNsYWltIHJld2FyZCADAwkAZgIFBmhlaWdodAkAZAIFC1ByaXplSGVpZ2h0BQtBY3R1YWxEZWxheQkAZwIFDVVzZXJQdXNoVmFsdWUFEEhpZ2hlc3RQdXNoVmFsdWUHAwkAZwIFEFVzZXJSZWZzTnVtVmFsdWUFBm1pbnJlZgkAzAgCCQEMSW50ZWdlckVudHJ5AgULUHJpemVXaW5uZXIFC1ByaXplQW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCAgdGdW5kQm94AAAJAMwIAgkBDEludGVnZXJFbnRyeQICC0hpZ2hlc3RQdXNoAAAJAMwIAgkBDEludGVnZXJFbnRyeQIFCFVzZXJQdXNoAAAJAMwIAgkBC1N0cmluZ0VudHJ5AgISSGlnaGVzdFB1c2hBZGRyZXNzAgAJAMwIAgkBDEludGVnZXJFbnRyeQICC1ByaXplSGVpZ2h0AAAJAMwIAgkBDEludGVnZXJFbnRyeQICBURlbGF5AAAJAMwIAgkBDEludGVnZXJFbnRyeQICCURlbGF5Q29zdAAACQDMCAIJAQtTdHJpbmdFbnRyeQICCkxhc3RXaW5uZXIFC1ByaXplV2lubmVyCQDMCAIJAQxJbnRlZ2VyRW50cnkCAglMYXN0UHJpemUFC1ByaXplQW1vdW50CQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgULUHJpemVBbW91bnQFC1N0YWtlZFRva2VuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgCAlOvcAwULR292ZXJuVG9rZW4FA25pbAkAAgEJAKwCAgkArAICAhJZb3UgaGF2ZSB0byBoYXZlICAJAKQDAQUGbWlucmVmAkcgIHJlZmVycmFscyBhbHJlYWR5IHN0YWtpbmcgZm9yIGEgbWluaW11bSBvZiAxMCBkYXlzIHRvIENsYWltIHRoZSBwcml6ZQkAAgECYVlvdSBoYXZlIHRvIGJlIHRoZSB1c2VyIHdpdGggdGhlIGhpZ2hlc3QgUHVzaCBhbmQgd2FpdCB0aWxsIGNvdW50b3duIGlzIGZpbmlzaGVkLCB0byBjbGFpbSBSZXdhcmQBaQEJQWRkbWVudG9yAQZNZW50b3IEEVVzZXJNZW50b3JBZGRyZXNzCQCsAgIJANgEAQgIBQFpBmNhbGxlcgVieXRlcwIHX01lbnRvcgMJAQIhPQIFBk1lbnRvcgIACQDMCAIJAQtTdHJpbmdFbnRyeQIFEVVzZXJNZW50b3JBZGRyZXNzBQZNZW50b3IFA25pbAkAAgECIE1lbnRvcidzIEFkZHJlc3MgY2Fubm90IGJlIGVtcHR5AWkBD0dldExpa2VzUGFja2FnZQINVHdpdHRlclVzZXJJZAdUd2l0dElkBBtMaWtlUGFja2FnZVRST0lLQU5Db3N0VmFsdWUEByRtYXRjaDAJAJoIAgUEdGhpcwIWTGlrZVBhY2thZ2VUUk9JS0FOQ29zdAMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAQZTGlrZVBhY2thZ2VBU0lNSUNvc3RWYWx1ZQQHJG1hdGNoMAkAmggCBQR0aGlzAhRMaWtlUGFja2FnZUFTSU1JQ29zdAMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAQDcG10AwkAAAIJAJADAQgFAWkIcGF5bWVudHMAAgkAkQMCCAUBaQhwYXltZW50cwAACQACAQIcQXR0YWNoZWQgcGF5bWVudCBpcyByZXF1aXJlZAMDCQAAAggJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkBQtTdGFrZWRUb2tlbgkAAAIICQCRAwIIBQFpCHBheW1lbnRzAAEHYXNzZXRJZAULR292ZXJuVG9rZW4HAwkAZwIICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50BRlMaWtlUGFja2FnZUFTSU1JQ29zdFZhbHVlAwkAZwIICQCRAwIIBQFpCHBheW1lbnRzAAEGYW1vdW50BRtMaWtlUGFja2FnZVRST0lLQU5Db3N0VmFsdWUECkluZmx1ZW5jZXIJAKwCAgkArAICCQCkAwEFDVR3aXR0ZXJVc2VySWQCDF9Ud2l0dDJMaWtlXwkApAMBBQdUd2l0dElkBBFJbmZsdWVuY2VyQmFsYW5jZQQHJG1hdGNoMAkAmggCBQR0aGlzBQpJbmZsdWVuY2VyAwkAAQIFByRtYXRjaDACA0ludAQBYQUHJG1hdGNoMAUBYQAAAwkAAAIFEUluZmx1ZW5jZXJCYWxhbmNlAAAJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCkAwEFDVR3aXR0ZXJVc2VySWQCDF9Ud2l0dDJMaWtlXwkApAMBBQdUd2l0dElkCQBpAgkAaAIAXwUUTGlrZVBhY2thZ2VBU0lNSUNvc3QAZAkAzAgCCQEMSW50ZWdlckVudHJ5AgIQTGlrZVR3aXR0c0RldkJveAkAaQIJAGgCAAUFFExpa2VQYWNrYWdlQVNJTUlDb3N0AGQFA25pbAkAAgECZkNhbm5vdCBhY3F1aXJlIGEgbmV3IHBhY2thZ2UsIHRoZSBwcmlvciBsaWtlIHBhY2thZ2UgaGFzIHRvIGJlIGRyYWluZWQgdG8gYmUgYWJsZSB0byBhY3F1aXJlIGEgbmV3IG9uZQkAAgEJAKwCAgIaVFJPSUtBTiBBbW91bnQgc2hvdWxkIGJlIDoJAKQDAQkAaQIFFExpa2VQYWNrYWdlQVNJTUlDb3N0AIDC1y8JAAIBCQCsAgICGEFTSU1JIEFtb3VudCBzaG91bGQgYmUgOgkApAMBCQBpAgUWTGlrZVBhY2thZ2VUUk9JS0FOQ29zdACAwtcvCQACAQIwUGF5bWVudHMgc2hvdWxkIGJlIGJvdGggQVNJTUkgYW5kIFRST0lLQU4gdG9rZW5zAWkBF0dldE15TGlrZWRUd2l0dHNSZXdhcmRzAQZVc2VySWQEGFVzZXJFYXJuZWRMaWtlVHdpdHRBU0lNSQQHJG1hdGNoMAkAmggCBQR0aGlzCQCsAgIFBlVzZXJJZAIMX0xpa2VfQW1vdW50AwkAAQIFByRtYXRjaDACA0ludAQBYQUHJG1hdGNoMAUBYQAABBxVc2VyRWFybmVkZEFwcFJUVHdpdHRUUk9JS0FOBAckbWF0Y2gwCQCaCAIFBHRoaXMJAKwCAgUGVXNlcklkAhZfVHJvaWthbmRBcHBfUlRfQW1vdW50AwkAAQIFByRtYXRjaDACA0ludAQBYQUHJG1hdGNoMAUBYQAAAwMJAGcCBRhVc2VyRWFybmVkTGlrZVR3aXR0QVNJTUkJAGgCAAEAgMLXLwkAZwIFHFVzZXJFYXJuZWRkQXBwUlRUd2l0dFRST0lLQU4JAGgCAAEAgMLXLwcJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUGVXNlcklkAhZfVHJvaWthbmRBcHBfUlRfQW1vdW50AAAJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUGVXNlcklkAgxfTGlrZV9BbW91bnQAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFGFVzZXJFYXJuZWRMaWtlVHdpdHRBU0lNSQULU3Rha2VkVG9rZW4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBRxVc2VyRWFybmVkZEFwcFJUVHdpdHRUUk9JS0FOBQtHb3Zlcm5Ub2tlbgUDbmlsCQACAQI7TWluaW11bSBlYXJuaW5ncyB0byB3aXRoZHJhdyBhcmU6IDEwMCBBU0lNSSBhbmQgNTAgVHJvaWthbnMBaQEVTGlua1R3aXR0ZXJBY2MyV2FsbGV0AQ1Ud2l0dGVyVXNlcklkBBNUd2l0dGVyTGlua2VkV2FsbGV0BAckbWF0Y2gwCQCdCAIFBHRoaXMJAKwCAgUNVHdpdHRlclVzZXJJZAIHX1dhbGxldAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAWEFByRtYXRjaDAFAWECBE5vbmUDCQAAAgkA2AQBCAgFAWkGY2FsbGVyBWJ5dGVzBRNUd2l0dGVyTGlua2VkV2FsbGV0CQACAQI6WW91IGFscmVhZHkgaGF2ZSB5b3VyIHdhbGxldCBsaW5rZWQgdG8gdGhlIFR3aXR0ZXIgYWNjb3VudAMDCQECIT0CCQDYBAEICAUBaQZjYWxsZXIFYnl0ZXMFE1R3aXR0ZXJMaW5rZWRXYWxsZXQJAQIhPQIFE1R3aXR0ZXJMaW5rZWRXYWxsZXQCBE5vbmUHCQACAQJJVGhlIHdhbGxldCB5b3UgYXJlIHVzaW5nIGlzIG5vdCB0aGUgbGlua2VkIFdhbGxldCB0byB0aGlzIFR3aXR0ZXIgYWNjb3VudAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFDVR3aXR0ZXJVc2VySWQCB19XYWxsZXQJANgEAQgIBQFpBmNhbGxlcgVieXRlcwUDbmlsABDR/Hc=", "height": 2146838, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: GWBzu7anXvdwPSDwGmCTgugKK3DccgTfCMB8bcYAMmRA Next: B6MPnqNvu7YTFn7hsqwrvLDpeFPSCuAviNf7nNM4z4x9 Diff:
OldNewDifferences
914914
915915 @Callable(i)
916916 func GetMyLikedTwittsRewards (UserId) = {
917- let UserEarnedLikeTwittASIMI = match getInteger(this, (toString(UserId) + "_Like_Amount")) {
917+ let UserEarnedLikeTwittASIMI = match getInteger(this, (UserId + "_Like_Amount")) {
918918 case a: Int =>
919919 a
920920 case _ =>
921921 0
922922 }
923- let UserEarneddAppRTTwittTROIKAN = match getInteger(this, (toString(UserId) + "_TroikandApp_RT_Amount")) {
923+ let UserEarneddAppRTTwittTROIKAN = match getInteger(this, (UserId + "_TroikandApp_RT_Amount")) {
924924 case a: Int =>
925925 a
926926 case _ =>
929929 if (if ((UserEarnedLikeTwittASIMI >= (1 * 100000000)))
930930 then (UserEarneddAppRTTwittTROIKAN >= (1 * 100000000))
931931 else false)
932- then [IntegerEntry((toString(UserId) + "_TroikandApp_RT_Amount"), 0), IntegerEntry((toString(UserId) + "_Like_Amount"), 0), ScriptTransfer(i.caller, UserEarnedLikeTwittASIMI, StakedToken), ScriptTransfer(i.caller, UserEarneddAppRTTwittTROIKAN, GovernToken)]
932+ then [IntegerEntry((UserId + "_TroikandApp_RT_Amount"), 0), IntegerEntry((UserId + "_Like_Amount"), 0), ScriptTransfer(i.caller, UserEarnedLikeTwittASIMI, StakedToken), ScriptTransfer(i.caller, UserEarneddAppRTTwittTROIKAN, GovernToken)]
933933 else throw("Minimum earnings to withdraw are: 100 ASIMI and 50 Troikans")
934934 }
935935
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let StakedToken = base58'Hoej8L1ezqQY4Miex4Z4J7uJ33LCdcubV3DsubGHEqWP'
55
66 let GovernToken = base58'6ZPMzZseuYoMP4ByozJpVxbugXBobwJYF22zVjW5JjN'
77
88 let LikePackageASIMICost = (1 * 100000000)
99
1010 let LikePackageTROIKANCost = (5 * 100000000)
1111
1212 @Callable(i)
1313 func DevWithdraw () = {
1414 let currentKey = toBase58String(i.caller.bytes)
1515 if ((currentKey == "3P74buHt98BnojFcaREJZtb98KDyUmZGemJ"))
1616 then {
1717 let DevBoxAmount = match getInteger(this, "DevBox") {
1818 case a: Int =>
1919 a
2020 case _ =>
2121 0
2222 }
2323 if ((0 > DevBoxAmount))
2424 then throw("Not enough balance")
2525 else [IntegerEntry("DevBox", 0), ScriptTransfer(i.caller, DevBoxAmount, GovernToken)]
2626 }
2727 else throw("You cannot withdraw as your are not the Dev.")
2828 }
2929
3030
3131
3232 @Callable(i)
3333 func WithdrawWeeklyEarning () = {
3434 let ContractWalletStakeBalance = assetBalance(this, StakedToken)
3535 let MaxDepositer = match getString(this, "MaxDepositer") {
3636 case a: String =>
3737 a
3838 case _ =>
3939 ""
4040 }
4141 let UserWeeklyEarnings = (toBase58String(i.caller.bytes) + "_WeekEarning")
4242 let StakeBalance = match getInteger(this, "StakeBalance") {
4343 case a: Int =>
4444 a
4545 case _ =>
4646 0
4747 }
4848 let PrizeAmount = match getInteger(this, "FundBox") {
4949 case a: Int =>
5050 a
5151 case _ =>
5252 0
5353 }
5454 let HeightTransactFundBox = match getInteger(this, "PrizeHeight") {
5555 case a: Int =>
5656 a
5757 case _ =>
5858 0
5959 }
6060 let PrizeHeightValue = if (if ((HeightTransactFundBox == 0))
6161 then (PrizeAmount == 0)
6262 else false)
6363 then 0
6464 else if (if ((HeightTransactFundBox == 0))
6565 then (PrizeAmount != 0)
6666 else false)
6767 then height
6868 else if (if ((HeightTransactFundBox != 0))
6969 then (PrizeAmount != 0)
7070 else false)
7171 then HeightTransactFundBox
7272 else 0
7373 let currentKey = toBase58String(i.caller.bytes)
7474 let newAmount = match getInteger(this, UserWeeklyEarnings) {
7575 case a: Int =>
7676 a
7777 case _ =>
7878 0
7979 }
8080 if ((0 > newAmount))
8181 then throw("Can't withdraw negative amount")
8282 else if ((0 > newAmount))
8383 then throw(("User cannot withdraw more than deposited funds, Your deposit is: " + toString((newAmount / 100000000))))
8484 else [IntegerEntry(UserWeeklyEarnings, 0), IntegerEntry("PrizeHeight", PrizeHeightValue), IntegerEntry("MaxDeposit", 0), ScriptTransfer(i.caller, newAmount, StakedToken)]
8585 }
8686
8787
8888
8989 @Callable(i)
9090 func PushReward () = {
9191 let minPushBlock = 10
9292 let minStakeBlock = (7 * 1440)
9393 let DelayAfterPush = 60
9494 let WaitTime = (1440 * 1)
9595 let minref = 3
9696 let FirstPushTimer = (7 * 1440)
9797 let userWalletGovernBalance = assetBalance(Address(i.caller.bytes), GovernToken)
9898 let pmt = if ((size(i.payments) == 1))
9999 then i.payments[0]
100100 else throw("Attached payment is required")
101101 let UserPush = (toBase58String(i.caller.bytes) + "_Push")
102102 let UserLastPushOldValue = match getInteger(this, UserPush) {
103103 case a: Int =>
104104 a
105105 case _ =>
106106 0
107107 }
108108 let UserRefsNum = (toBase58String(i.caller.bytes) + "_refs")
109109 let UserRefsNumValue = match getInteger(this, UserRefsNum) {
110110 case a: Int =>
111111 a
112112 case _ =>
113113 0
114114 }
115115 let HighestPushValue = match getInteger(this, "HighestPush") {
116116 case a: Int =>
117117 a
118118 case _ =>
119119 0
120120 }
121121 if ((userWalletGovernBalance > pmt.amount))
122122 then if (if (((pmt.amount + UserLastPushOldValue) > HighestPushValue))
123123 then (pmt.assetId == GovernToken)
124124 else false)
125125 then {
126126 let UserLastPushBlock = (toBase58String(i.caller.bytes) + "_UserLastPushBlock")
127127 let UserLastStakeBlock = (toBase58String(i.caller.bytes) + "_UserLastStakeBlock")
128128 let UserStake = (toBase58String(i.caller.bytes) + "_Staking")
129129 let ContractWalletStakeBalance = assetBalance(this, StakedToken)
130130 let StakeBalance = match getInteger(this, "StakeBalance") {
131131 case a: Int =>
132132 a
133133 case _ =>
134134 0
135135 }
136136 let PrizeAmount = match getInteger(this, "FundBox") {
137137 case a: Int =>
138138 a
139139 case _ =>
140140 0
141141 }
142142 let HeightTransactFundBox = match getInteger(this, "PrizeHeight") {
143143 case a: Int =>
144144 a
145145 case _ =>
146146 0
147147 }
148148 let PrizeHeightValue = if (if ((HeightTransactFundBox == 0))
149149 then (PrizeAmount == 0)
150150 else false)
151151 then 0
152152 else if (if ((HeightTransactFundBox == 0))
153153 then (PrizeAmount != 0)
154154 else false)
155155 then height
156156 else if (if ((HeightTransactFundBox != 0))
157157 then (PrizeAmount != 0)
158158 else false)
159159 then HeightTransactFundBox
160160 else 0
161161 let ActualDelay = match getInteger(this, "Delay") {
162162 case a: Int =>
163163 a
164164 case _ =>
165165 0
166166 }
167167 let HighestPushAddress = match getInteger(this, "HighestPushAddress") {
168168 case a: Int =>
169169 a
170170 case _ =>
171171 0
172172 }
173173 let UserLastPushBlockValue = match getInteger(this, UserLastPushBlock) {
174174 case a: Int =>
175175 a
176176 case _ =>
177177 0
178178 }
179179 let UserLastStakeBlockValue = match getInteger(this, UserLastStakeBlock) {
180180 case a: Int =>
181181 a
182182 case _ =>
183183 0
184184 }
185185 let UserStakeValue = match getInteger(this, UserStake) {
186186 case a: Int =>
187187 a
188188 case _ =>
189189 0
190190 }
191191 let DevBoxBalance = match getInteger(this, "DevBox") {
192192 case a: Int =>
193193 a
194194 case _ =>
195195 0
196196 }
197197 let DevBoxAmount = (DevBoxBalance + ((pmt.amount * 5) / 1000))
198198 let UserPushvalue = (pmt.amount + UserLastPushOldValue)
199199 let NewDelay = if (if ((height > ((PrizeHeightValue + ActualDelay) + WaitTime)))
200200 then (HighestPushValue > 0)
201201 else false)
202202 then FirstPushTimer
203203 else (ActualDelay + DelayAfterPush)
204204 let HighestPushAddressValue = if (if ((height > ((PrizeHeightValue + NewDelay) + WaitTime)))
205205 then (HighestPushValue > 0)
206206 else false)
207207 then ""
208208 else HighestPushAddress
209209 let PrizeHeightValueNew = if (if ((height > ((PrizeHeightValue + NewDelay) + WaitTime)))
210210 then (HighestPushValue > 0)
211211 else false)
212212 then height
213213 else PrizeHeightValue
214214 if (if ((UserPushvalue > 0))
215215 then ((height - UserLastStakeBlockValue) > minStakeBlock)
216216 else false)
217217 then if (((height - UserLastPushBlockValue) > minPushBlock))
218218 then if ((UserStakeValue > 0))
219219 then if ((UserPushvalue > HighestPushValue))
220220 then if ((PrizeAmount > 0))
221221 then if (if (if (if (((PrizeHeightValueNew + NewDelay) >= height))
222222 then true
223223 else (height >= ((PrizeHeightValueNew + NewDelay) + WaitTime)))
224224 then (HighestPushValue > 0)
225225 else false)
226226 then true
227227 else (HighestPushValue == 0))
228228 then if ((UserRefsNumValue >= minref))
229229 then [IntegerEntry(UserPush, UserPushvalue), StringEntry("HighestPushAddress", toBase58String(i.caller.bytes)), IntegerEntry("HighestPush", UserPushvalue), IntegerEntry(UserLastPushBlock, height), IntegerEntry("PrizeHeight", PrizeHeightValueNew), IntegerEntry("Delay", NewDelay), IntegerEntry("DevBox", DevBoxAmount)]
230230 else throw((("You have to have " + toString(minref)) + " referrals already staking for a minimum of 10 days, to push"))
231231 else {
232232 let txt = if ((HighestPushValue > 0))
233233 then "You cannot Push after rewarding Prize and before One day has passed after award"
234234 else "Unexpected error"
235235 throw(txt)
236236 }
237237 else throw("You cannot push before the reward is unlocked, no reward has been detected yet")
238238 else throw("Your push in troikan token, should be Higher than last Highest Push")
239239 else throw("To be able to participate in Pushing for the reward you need to Stake ASIMIs in the dApp")
240240 else throw("You have to wait 10min before you can make a new Push")
241241 else throw(("Your Push dot not comply one of the following conditions: " + "1. Positive Value for Push in Troikan Toke
242242 2. Must Staked ASIMI Token for a minimum of week "))
243243 }
244244 else throw((("Can deposit only positive amounts of Troikan Token, or Check your Wallet balance in Troika, you should have more than " + toString(HighestPushValue)) + " to push"))
245245 else throw("You do not have enough Troikan Tokens in your Wallet Balance, Please Harvest if you have earned Troikan wallet or transfer to your wallet necessary Troikan amount !")
246246 }
247247
248248
249249
250250 @Callable(i)
251251 func Stake () = {
252252 let WaitTime = (1440 * 1)
253253 let pmt = if ((size(i.payments) == 1))
254254 then i.payments[0]
255255 else throw("Attached payment is required")
256256 if (if ((pmt.amount > 0))
257257 then (pmt.assetId == StakedToken)
258258 else false)
259259 then {
260260 let GovernTokenSmartContractBalance = assetBalance(this, GovernToken)
261261 let UserAPY = (toBase58String(i.caller.bytes) + "_APY")
262262 let UserPush = (toBase58String(i.caller.bytes) + "_Push")
263263 let UserStakedTokenKey = (toBase58String(i.caller.bytes) + "_Staking")
264264 let UserGovernTokenKey = (toBase58String(i.caller.bytes) + "_Earnings")
265265 let UserLastStakeBlock = (toBase58String(i.caller.bytes) + "_UserLastStakeBlock")
266266 let UserStakeTransactionsKey = (toBase58String(i.caller.bytes) + "_StakedTransactions")
267267 let AddressHeight = (toBase58String(i.caller.bytes) + "_PrizeHeight")
268268 let UserWeekEarnings = (toBase58String(i.caller.bytes) + "_WeekEarning")
269269 let UserStakeTransactions = match getInteger(this, UserStakeTransactionsKey) {
270270 case a: Int =>
271271 a
272272 case _ =>
273273 0
274274 }
275275 let MaxDepositer = match getString(this, "MaxDepositer") {
276276 case a: String =>
277277 a
278278 case _ =>
279279 ""
280280 }
281281 let MaxDepositBlock = match getInteger(this, "MaxDepositBlock") {
282282 case a: Int =>
283283 a
284284 case _ =>
285285 0
286286 }
287287 let MaxDeposit = match getInteger(this, "MaxDeposit") {
288288 case a: Int =>
289289 a
290290 case _ =>
291291 0
292292 }
293293 let MaxDepositerValue = if ((pmt.amount > MaxDeposit))
294294 then toBase58String(i.caller.bytes)
295295 else MaxDepositer
296296 let MaxDepositValue = if ((pmt.amount > MaxDeposit))
297297 then pmt.amount
298298 else MaxDeposit
299299 let MaxDepositBlockValue = if ((pmt.amount > MaxDeposit))
300300 then height
301301 else MaxDepositBlock
302302 let UserPushValue = match getInteger(this, UserPush) {
303303 case a: Int =>
304304 a
305305 case _ =>
306306 0
307307 }
308308 let UserLastStakeBlockValue = match getInteger(this, UserLastStakeBlock) {
309309 case a: Int =>
310310 a
311311 case _ =>
312312 0
313313 }
314314 let UserLastStakeBlockNewValue = if ((UserLastStakeBlockValue == 0))
315315 then height
316316 else UserLastStakeBlockValue
317317 let NewUserStakeTransactions = (UserStakeTransactions + 1)
318318 let currentAmountStakedToken = match getInteger(this, UserStakedTokenKey) {
319319 case a: Int =>
320320 a
321321 case _ =>
322322 0
323323 }
324324 let newAmountStakedToken = (currentAmountStakedToken + pmt.amount)
325325 let ContractWalletStakeBalance = assetBalance(this, StakedToken)
326326 let StakeBalance = match getInteger(this, "StakeBalance") {
327327 case a: Int =>
328328 a
329329 case _ =>
330330 0
331331 }
332332 let StakeBalanceAmount = (StakeBalance + pmt.amount)
333333 let PrizeAmount = match getInteger(this, "FundBox") {
334334 case a: Int =>
335335 a
336336 case _ =>
337337 0
338338 }
339339 let UserWeekEarningsValue = match getInteger(this, UserWeekEarnings) {
340340 case a: Int =>
341341 a
342342 case _ =>
343343 0
344344 }
345345 let currentAmountGovernToken = match getInteger(this, UserGovernTokenKey) {
346346 case a: Int =>
347347 a
348348 case _ =>
349349 0
350350 }
351351 let HeightTransactFundBox = match getInteger(this, "PrizeHeight") {
352352 case a: Int =>
353353 a
354354 case _ =>
355355 0
356356 }
357357 let PrizeHeightValue = if (if ((HeightTransactFundBox == 0))
358358 then (PrizeAmount == 0)
359359 else false)
360360 then 0
361361 else if (if ((HeightTransactFundBox == 0))
362362 then (PrizeAmount != 0)
363363 else false)
364364 then height
365365 else if (if ((HeightTransactFundBox != 0))
366366 then (PrizeAmount != 0)
367367 else false)
368368 then HeightTransactFundBox
369369 else 0
370370 let ActualDelay = match getInteger(this, "Delay") {
371371 case a: Int =>
372372 a
373373 case _ =>
374374 0
375375 }
376376 let HighestPushValue = match getInteger(this, "HighestPush") {
377377 case a: Int =>
378378 a
379379 case _ =>
380380 0
381381 }
382382 let HighestPushAddress = match getString(this, "HighestPushAddress") {
383383 case a: String =>
384384 a
385385 case _ =>
386386 ""
387387 }
388388 let HighestPushAddressValue = if (if ((height > ((PrizeHeightValue + ActualDelay) + WaitTime)))
389389 then (HighestPushValue > 0)
390390 else false)
391391 then ""
392392 else HighestPushAddress
393393 let PrizeHeightValueNew = if (if ((height > ((PrizeHeightValue + ActualDelay) + WaitTime)))
394394 then (HighestPushValue > 0)
395395 else false)
396396 then height
397397 else PrizeHeightValue
398398 if ((100000000 > GovernTokenSmartContractBalance))
399399 then throw("No enough GovernToken In Contract, Please deposit GovernTokens")
400400 else {
401401 let Reward = if ((StakeBalance == 0))
402402 then 10000
403403 else if ((NewUserStakeTransactions > 10))
404404 then ((10000 * NewUserStakeTransactions) * (1 + (newAmountStakedToken / StakeBalance)))
405405 else (10000 * (1 + (newAmountStakedToken / StakeBalance)))
406406 let UserAPYValue = if ((currentAmountGovernToken > 0))
407407 then ((100 * Reward) / currentAmountGovernToken)
408408 else 0
409409 let newAmountGovernToken = (currentAmountGovernToken + Reward)
410410 [IntegerEntry(UserGovernTokenKey, newAmountGovernToken), IntegerEntry(UserStakedTokenKey, newAmountStakedToken), IntegerEntry(UserStakeTransactionsKey, NewUserStakeTransactions), IntegerEntry("StakeBalance", StakeBalanceAmount), IntegerEntry("PrizeHeight", PrizeHeightValueNew), IntegerEntry(UserAPY, UserAPYValue), IntegerEntry(UserLastStakeBlock, UserLastStakeBlockNewValue), IntegerEntry(UserPush, UserPushValue), StringEntry("MaxDepositer", MaxDepositerValue), IntegerEntry("MaxDeposit", MaxDepositValue), IntegerEntry("MaxDepositBlock", MaxDepositBlockValue), StringEntry("HighestPushAddress", HighestPushAddressValue), IntegerEntry(UserWeekEarnings, UserWeekEarningsValue), ScriptTransfer(i.caller, Reward, GovernToken)]
411411 }
412412 }
413413 else throw("Can deposit only StakeToken")
414414 }
415415
416416
417417
418418 @Callable(i)
419419 func WithdrawStakedFunds (amount) = {
420420 let WaitTime = (1440 * 1)
421421 let UserLastStakeBlock = (toBase58String(i.caller.bytes) + "_UserLastStakeBlock")
422422 let UserStakedTokenKey = (toBase58String(i.caller.bytes) + "_Staking")
423423 let UserGovernTokenKey = ((toBase58String(i.caller.bytes) + "_") + toBase58String(GovernToken))
424424 let ContractWalletStakeBalance = assetBalance(this, StakedToken)
425425 let UserLastStakeBlockValue = match getInteger(this, UserLastStakeBlock) {
426426 case a: Int =>
427427 a
428428 case _ =>
429429 0
430430 }
431431 let StakeBalance = match getInteger(this, "StakeBalance") {
432432 case a: Int =>
433433 a
434434 case _ =>
435435 0
436436 }
437437 let PrizeAmount = match getInteger(this, "FundBox") {
438438 case a: Int =>
439439 a
440440 case _ =>
441441 0
442442 }
443443 let HeightTransactFundBox = match getInteger(this, "PrizeHeight") {
444444 case a: Int =>
445445 a
446446 case _ =>
447447 0
448448 }
449449 let ActualDelay = match getInteger(this, "Delay") {
450450 case a: Int =>
451451 a
452452 case _ =>
453453 0
454454 }
455455 let HighestPushValue = match getInteger(this, "HighestPush") {
456456 case a: Int =>
457457 a
458458 case _ =>
459459 0
460460 }
461461 let PrizeHeightValue = if (if ((HeightTransactFundBox == 0))
462462 then (PrizeAmount == 0)
463463 else false)
464464 then 0
465465 else if (if ((HeightTransactFundBox == 0))
466466 then (PrizeAmount != 0)
467467 else false)
468468 then height
469469 else if (if ((HeightTransactFundBox != 0))
470470 then (PrizeAmount != 0)
471471 else false)
472472 then HeightTransactFundBox
473473 else 0
474474 let HighestPushAddress = match getString(this, "HighestPushAddress") {
475475 case a: String =>
476476 a
477477 case _ =>
478478 ""
479479 }
480480 let HighestPushAddressValue = if (if ((height > ((PrizeHeightValue + ActualDelay) + WaitTime)))
481481 then (HighestPushValue > 0)
482482 else false)
483483 then ""
484484 else HighestPushAddress
485485 let PrizeHeightValueNew = if (if ((height > ((PrizeHeightValue + ActualDelay) + WaitTime)))
486486 then (HighestPushValue > 0)
487487 else false)
488488 then height
489489 else PrizeHeightValue
490490 let currentKey = toBase58String(i.caller.bytes)
491491 let currentAmount = match getInteger(this, UserStakedTokenKey) {
492492 case a: Int =>
493493 a
494494 case _ =>
495495 0
496496 }
497497 let newAmount = (currentAmount - amount)
498498 let StakeBalanceAmount = (StakeBalance - amount)
499499 let UserLastStakeBlockNewValue = if ((StakeBalanceAmount == 0))
500500 then 0
501501 else UserLastStakeBlockValue
502502 if ((0 > amount))
503503 then throw("Can't withdraw negative amount")
504504 else if ((0 > newAmount))
505505 then throw(("User cannot withdraw more than deposited funds, Your deposit is: " + toString((currentAmount / 100000000))))
506506 else if ((100000000 > assetBalance(this, GovernToken)))
507507 then throw(("Not enough Troika In Contract: " + toString((assetBalance(this, GovernToken) / 100000000))))
508508 else [IntegerEntry(UserGovernTokenKey, 100000000), IntegerEntry(UserStakedTokenKey, newAmount), IntegerEntry("StakeBalance", StakeBalanceAmount), IntegerEntry("PrizeHeight", PrizeHeightValueNew), IntegerEntry(UserLastStakeBlock, UserLastStakeBlockNewValue), StringEntry("HighestPushAddress", HighestPushAddressValue), ScriptTransfer(i.caller, 100000000, GovernToken), ScriptTransfer(i.caller, amount, StakedToken)]
509509 }
510510
511511
512512
513513 @Callable(i)
514514 func WithdrawBigStakeReward () = {
515515 let WaitTime = (1440 * 1)
516516 let LastBigStakerRewardBlock = (toBase58String(i.caller.bytes) + "_LastBigStakerRewardBlock")
517517 let BigStakerReward = (toBase58String(i.caller.bytes) + "_BigStaker")
518518 let UserGovernTokenKey = (toBase58String(i.caller.bytes) + "_Earnings")
519519 let LimiWithdrawReward = 10
520520 let UserGovernTokenAmount = match getInteger(this, UserGovernTokenKey) {
521521 case a: Int =>
522522 a
523523 case _ =>
524524 0
525525 }
526526 let LastBigStakerRewardBlockValue = match getInteger(this, LastBigStakerRewardBlock) {
527527 case a: Int =>
528528 a
529529 case _ =>
530530 0
531531 }
532532 let BigStakerRewardTotalValue = match getInteger(this, "BigStakerRewardTotal") {
533533 case a: Int =>
534534 a
535535 case _ =>
536536 0
537537 }
538538 let PrizeAmount = match getInteger(this, "FundBox") {
539539 case a: Int =>
540540 a
541541 case _ =>
542542 0
543543 }
544544 let HeightTransactFundBox = match getInteger(this, "PrizeHeight") {
545545 case a: Int =>
546546 a
547547 case _ =>
548548 0
549549 }
550550 let PrizeHeightValue = if (if ((HeightTransactFundBox == 0))
551551 then (PrizeAmount == 0)
552552 else false)
553553 then 0
554554 else if (if ((HeightTransactFundBox == 0))
555555 then (PrizeAmount != 0)
556556 else false)
557557 then height
558558 else if (if ((HeightTransactFundBox != 0))
559559 then (PrizeAmount != 0)
560560 else false)
561561 then HeightTransactFundBox
562562 else 0
563563 let ActualDelay = match getInteger(this, "Delay") {
564564 case a: Int =>
565565 a
566566 case _ =>
567567 0
568568 }
569569 let HighestPushValue = match getInteger(this, "HighestPush") {
570570 case a: Int =>
571571 a
572572 case _ =>
573573 0
574574 }
575575 let HighestPushAddress = match getString(this, "HighestPushAddress") {
576576 case a: String =>
577577 a
578578 case _ =>
579579 ""
580580 }
581581 let HighestPushAddressValue = if (if ((height > ((PrizeHeightValue + ActualDelay) + WaitTime)))
582582 then (HighestPushValue > 0)
583583 else false)
584584 then ""
585585 else HighestPushAddress
586586 let PrizeHeightValueNew = if (if ((height > ((PrizeHeightValue + ActualDelay) + WaitTime)))
587587 then (HighestPushValue > 0)
588588 else false)
589589 then height
590590 else PrizeHeightValue
591591 let currentKey = toBase58String(i.caller.bytes)
592592 let amount = match getInteger(this, BigStakerReward) {
593593 case a: Int =>
594594 a
595595 case _ =>
596596 0
597597 }
598598 let StakeBalanceAmount = (BigStakerRewardTotalValue - amount)
599599 let BigStakerRewardTax = if ((0 > ((UserGovernTokenAmount / 1000) * (1000 - ((1000 * (height - LastBigStakerRewardBlockValue)) / (LimiWithdrawReward * 1440))))))
600600 then (1000 * 100000000)
601601 else ((UserGovernTokenAmount / 1000) * (1000 - ((1000 * (height - LastBigStakerRewardBlockValue)) / (LimiWithdrawReward * 1440))))
602602 if ((0 > amount))
603603 then throw(((("Can't withdraw negative amount " + toString((UserGovernTokenAmount - (1000 * 100000000)))) + " ... ") + toString(amount)))
604604 else if (if (if (((1000 * 100000000) > UserGovernTokenAmount))
605605 then true
606606 else (1 > amount))
607607 then true
608608 else (0 > (UserGovernTokenAmount - BigStakerRewardTax)))
609609 then throw(("No ASIMI reward available, or Not enough Earned Troikan Tokens to do transaction, you have: " + toString((UserGovernTokenAmount / 100000000))))
610610 else if ((StakeBalanceAmount > 0))
611611 then [IntegerEntry(BigStakerReward, 0), IntegerEntry("BigStakerRewardTotal", StakeBalanceAmount), IntegerEntry(UserGovernTokenKey, (UserGovernTokenAmount - BigStakerRewardTax)), IntegerEntry("PrizeHeight", PrizeHeightValue), IntegerEntry(LastBigStakerRewardBlock, height), StringEntry("HighestPushAddress", HighestPushAddressValue), ScriptTransfer(i.caller, amount, StakedToken)]
612612 else throw("Balance Error, Total Big Stakers cannot be negative, Operation won't be authorized")
613613 }
614614
615615
616616
617617 @Callable(i)
618618 func HarvestGovernToiken (amount) = {
619619 let ContractWalletStakeBalance = assetBalance(this, StakedToken)
620620 let UserGovernTokenKey = (toBase58String(i.caller.bytes) + "_Earnings")
621621 let StakeBalance = match getInteger(this, "StakeBalance") {
622622 case a: Int =>
623623 a
624624 case _ =>
625625 0
626626 }
627627 let PrizeAmount = match getInteger(this, "FundBox") {
628628 case a: Int =>
629629 a
630630 case _ =>
631631 0
632632 }
633633 let HeightTransactFundBox = match getInteger(this, "PrizeHeight") {
634634 case a: Int =>
635635 a
636636 case _ =>
637637 0
638638 }
639639 let PrizeHeightValue = if (if ((HeightTransactFundBox == 0))
640640 then (PrizeAmount == 0)
641641 else false)
642642 then 0
643643 else if (if ((HeightTransactFundBox == 0))
644644 then (PrizeAmount != 0)
645645 else false)
646646 then height
647647 else if (if ((HeightTransactFundBox != 0))
648648 then (PrizeAmount != 0)
649649 else false)
650650 then HeightTransactFundBox
651651 else 0
652652 let currentKey = toBase58String(i.caller.bytes)
653653 let currentAmount = match getInteger(this, UserGovernTokenKey) {
654654 case a: Int =>
655655 a
656656 case _ =>
657657 0
658658 }
659659 let newAmount = (currentAmount - amount)
660660 if ((0 > amount))
661661 then throw("Can't withdraw negative amount")
662662 else if ((0 > newAmount))
663663 then throw(("User cannot withdraw more than deposited funds, Your deposit is: " + toString((currentAmount / 100000000))))
664664 else [IntegerEntry(UserGovernTokenKey, newAmount), IntegerEntry("PrizeHeight", PrizeHeightValue), ScriptTransfer(i.caller, amount, GovernToken)]
665665 }
666666
667667
668668
669669 @Callable(i)
670670 func delayprize () = {
671671 let DelayDays = (1440 * 1)
672672 let WaitTime = (1440 * 1)
673673 let UserGovernTokenKey = ((toBase58String(i.caller.bytes) + "_") + toBase58String(GovernToken))
674674 let UserWalletSGovernBalance = assetBalance(Address(i.caller.bytes), GovernToken)
675675 let ContractWalletStakeBalance = assetBalance(this, StakedToken)
676676 let StakeBalance = match getInteger(this, "StakeBalance") {
677677 case a: Int =>
678678 a
679679 case _ =>
680680 0
681681 }
682682 let PrizeAmount = match getInteger(this, "FundBox") {
683683 case a: Int =>
684684 a
685685 case _ =>
686686 0
687687 }
688688 let HeightTransactFundBox = match getInteger(this, "PrizeHeight") {
689689 case a: Int =>
690690 a
691691 case _ =>
692692 0
693693 }
694694 let ActualDelay = match getInteger(this, "Delay") {
695695 case a: Int =>
696696 a
697697 case _ =>
698698 0
699699 }
700700 let PrizeHeightValue = if (if ((HeightTransactFundBox == 0))
701701 then (PrizeAmount == 0)
702702 else false)
703703 then 0
704704 else if (if ((HeightTransactFundBox == 0))
705705 then (PrizeAmount != 0)
706706 else false)
707707 then height
708708 else if (if ((HeightTransactFundBox != 0))
709709 then (PrizeAmount != 0)
710710 else false)
711711 then HeightTransactFundBox
712712 else 0
713713 let HighestPushValue = match getInteger(this, "HighestPush") {
714714 case a: Int =>
715715 a
716716 case _ =>
717717 0
718718 }
719719 let HighestPushAddress = match getString(this, "HighestPushAddress") {
720720 case a: String =>
721721 a
722722 case _ =>
723723 ""
724724 }
725725 let HighestPushAddressValue = if (if ((height > ((PrizeHeightValue + ActualDelay) + WaitTime)))
726726 then (HighestPushValue > 0)
727727 else false)
728728 then ""
729729 else HighestPushAddress
730730 let PrizeHeightValueNew = if (if ((height > ((PrizeHeightValue + ActualDelay) + WaitTime)))
731731 then (HighestPushValue > 0)
732732 else false)
733733 then height
734734 else PrizeHeightValue
735735 let ActualDelayCost = match getInteger(this, "DelayCost") {
736736 case a: Int =>
737737 a
738738 case _ =>
739739 10
740740 }
741741 let pmt = if ((size(i.payments) == 1))
742742 then i.payments[0]
743743 else throw("Attached payment is required")
744744 let DevBoxBalance = match getInteger(this, "DevBox") {
745745 case a: Int =>
746746 a
747747 case _ =>
748748 0
749749 }
750750 if (if (isDefined(pmt.assetId))
751751 then (pmt.assetId == GovernToken)
752752 else false)
753753 then if ((PrizeAmount > 0))
754754 then {
755755 let UserGovernTokenAmount = pmt.amount
756756 let DevBoxAmount = (DevBoxBalance + ((pmt.amount * 5) / 1000))
757757 let NewDelayCost = if ((ActualDelayCost == 0))
758758 then 1000000000
759759 else (2 * ActualDelayCost)
760760 if ((UserGovernTokenAmount >= NewDelayCost))
761761 then {
762762 let NewDelay = (ActualDelay + DelayDays)
763763 [IntegerEntry("Delay", NewDelay), IntegerEntry("DelayCost", NewDelayCost), IntegerEntry("PrizeHeight", PrizeHeightValueNew), IntegerEntry("DevBox", DevBoxAmount), StringEntry("HighestPushAddress", HighestPushAddressValue)]
764764 }
765765 else throw((("To delay the release of the reward ONE DAY later than expected, you need " + toString(NewDelayCost)) + "TROIKAs"))
766766 }
767767 else throw("You cannot delay the reward before reward is received! Please wait until a reward is available")
768768 else throw("Can Use only Troika Token to Delay Reward")
769769 }
770770
771771
772772
773773 @Callable(i)
774774 func ClaimPrize () = {
775775 let UserStakedTokenKey = (toBase58String(i.caller.bytes) + "_Staking")
776776 let UserPush = (toBase58String(i.caller.bytes) + "_Push")
777777 let UserLastStakeBlock = (toBase58String(i.caller.bytes) + "_UserLastStakeBlock")
778778 let minStakeBlock = (1440 * 7)
779779 let minref = 3
780780 let ContractGovTokenBalance = assetBalance(this, GovernToken)
781781 let ContractWalletStakeBalance = assetBalance(this, StakedToken)
782782 let StakeBalance = match getInteger(this, "StakeBalance") {
783783 case a: Int =>
784784 a
785785 case _ =>
786786 0
787787 }
788788 let PrizeAmount = match getInteger(this, "FundBox") {
789789 case a: Int =>
790790 a
791791 case _ =>
792792 0
793793 }
794794 let UserPushValue = match getInteger(this, UserPush) {
795795 case a: Int =>
796796 a
797797 case _ =>
798798 0
799799 }
800800 let UserLastStakeBlockValue = match getInteger(this, UserLastStakeBlock) {
801801 case a: Int =>
802802 a
803803 case _ =>
804804 0
805805 }
806806 let UserStakedTokenAmount = match getInteger(this, UserStakedTokenKey) {
807807 case a: Int =>
808808 a
809809 case _ =>
810810 0
811811 }
812812 let ActualDelay = match getInteger(this, "Delay") {
813813 case a: Int =>
814814 a
815815 case _ =>
816816 0
817817 }
818818 let PrizeWinner = match getString(this, "HighestPushAddress") {
819819 case a: String =>
820820 a
821821 case _ =>
822822 ""
823823 }
824824 let PrizeHeight = match getInteger(this, "PrizeHeight") {
825825 case a: Int =>
826826 a
827827 case _ =>
828828 0
829829 }
830830 let HighestPushValue = match getInteger(this, "HighestPush") {
831831 case a: Int =>
832832 a
833833 case _ =>
834834 0
835835 }
836836 let UserRefsNum = (toBase58String(i.caller.bytes) + "_refs")
837837 let UserRefsNumValue = match getInteger(this, UserRefsNum) {
838838 case a: Int =>
839839 a
840840 case _ =>
841841 0
842842 }
843843 if (if ((PrizeAmount == 0))
844844 then true
845845 else (10000000000 > ContractGovTokenBalance))
846846 then throw("No prize to Claim or Not enough Govern Token en Contract (Min 100 Troika)")
847847 else if ((toBase58String(i.caller.bytes) != PrizeWinner))
848848 then throw("You are not the winner hence cannot claim the reward ")
849849 else if (if ((100000000 > UserStakedTokenAmount))
850850 then (minStakeBlock > UserLastStakeBlockValue)
851851 else false)
852852 then throw("You have to Stake ASIMI Token to claim reward ")
853853 else if (if ((height > (PrizeHeight + ActualDelay)))
854854 then (UserPushValue >= HighestPushValue)
855855 else false)
856856 then if ((UserRefsNumValue >= minref))
857857 then [IntegerEntry(PrizeWinner, PrizeAmount), IntegerEntry("FundBox", 0), IntegerEntry("HighestPush", 0), IntegerEntry(UserPush, 0), StringEntry("HighestPushAddress", ""), IntegerEntry("PrizeHeight", 0), IntegerEntry("Delay", 0), IntegerEntry("DelayCost", 0), StringEntry("LastWinner", PrizeWinner), IntegerEntry("LastPrize", PrizeAmount), ScriptTransfer(i.caller, PrizeAmount, StakedToken), ScriptTransfer(i.caller, 1000000000, GovernToken)]
858858 else throw((("You have to have " + toString(minref)) + " referrals already staking for a minimum of 10 days to Claim the prize"))
859859 else throw("You have to be the user with the highest Push and wait till countown is finished, to claim Reward")
860860 }
861861
862862
863863
864864 @Callable(i)
865865 func Addmentor (Mentor) = {
866866 let UserMentorAddress = (toBase58String(i.caller.bytes) + "_Mentor")
867867 if ((Mentor != ""))
868868 then [StringEntry(UserMentorAddress, Mentor)]
869869 else throw("Mentor's Address cannot be empty")
870870 }
871871
872872
873873
874874 @Callable(i)
875875 func GetLikesPackage (TwitterUserId,TwittId) = {
876876 let LikePackageTROIKANCostValue = match getInteger(this, "LikePackageTROIKANCost") {
877877 case a: Int =>
878878 a
879879 case _ =>
880880 0
881881 }
882882 let LikePackageASIMICostValue = match getInteger(this, "LikePackageASIMICost") {
883883 case a: Int =>
884884 a
885885 case _ =>
886886 0
887887 }
888888 let pmt = if ((size(i.payments) == 2))
889889 then i.payments[0]
890890 else throw("Attached payment is required")
891891 if (if ((i.payments[0].assetId == StakedToken))
892892 then (i.payments[1].assetId == GovernToken)
893893 else false)
894894 then if ((i.payments[0].amount >= LikePackageASIMICostValue))
895895 then if ((i.payments[1].amount >= LikePackageTROIKANCostValue))
896896 then {
897897 let Influencer = ((toString(TwitterUserId) + "_Twitt2Like_") + toString(TwittId))
898898 let InfluencerBalance = match getInteger(this, Influencer) {
899899 case a: Int =>
900900 a
901901 case _ =>
902902 0
903903 }
904904 if ((InfluencerBalance == 0))
905905 then [IntegerEntry(((toString(TwitterUserId) + "_Twitt2Like_") + toString(TwittId)), ((95 * LikePackageASIMICost) / 100)), IntegerEntry("LikeTwittsDevBox", ((5 * LikePackageASIMICost) / 100))]
906906 else throw("Cannot acquire a new package, the prior like package has to be drained to be able to acquire a new one")
907907 }
908908 else throw(("TROIKAN Amount should be :" + toString((LikePackageASIMICost / 100000000))))
909909 else throw(("ASIMI Amount should be :" + toString((LikePackageTROIKANCost / 100000000))))
910910 else throw("Payments should be both ASIMI and TROIKAN tokens")
911911 }
912912
913913
914914
915915 @Callable(i)
916916 func GetMyLikedTwittsRewards (UserId) = {
917- let UserEarnedLikeTwittASIMI = match getInteger(this, (toString(UserId) + "_Like_Amount")) {
917+ let UserEarnedLikeTwittASIMI = match getInteger(this, (UserId + "_Like_Amount")) {
918918 case a: Int =>
919919 a
920920 case _ =>
921921 0
922922 }
923- let UserEarneddAppRTTwittTROIKAN = match getInteger(this, (toString(UserId) + "_TroikandApp_RT_Amount")) {
923+ let UserEarneddAppRTTwittTROIKAN = match getInteger(this, (UserId + "_TroikandApp_RT_Amount")) {
924924 case a: Int =>
925925 a
926926 case _ =>
927927 0
928928 }
929929 if (if ((UserEarnedLikeTwittASIMI >= (1 * 100000000)))
930930 then (UserEarneddAppRTTwittTROIKAN >= (1 * 100000000))
931931 else false)
932- then [IntegerEntry((toString(UserId) + "_TroikandApp_RT_Amount"), 0), IntegerEntry((toString(UserId) + "_Like_Amount"), 0), ScriptTransfer(i.caller, UserEarnedLikeTwittASIMI, StakedToken), ScriptTransfer(i.caller, UserEarneddAppRTTwittTROIKAN, GovernToken)]
932+ then [IntegerEntry((UserId + "_TroikandApp_RT_Amount"), 0), IntegerEntry((UserId + "_Like_Amount"), 0), ScriptTransfer(i.caller, UserEarnedLikeTwittASIMI, StakedToken), ScriptTransfer(i.caller, UserEarneddAppRTTwittTROIKAN, GovernToken)]
933933 else throw("Minimum earnings to withdraw are: 100 ASIMI and 50 Troikans")
934934 }
935935
936936
937937
938938 @Callable(i)
939939 func LinkTwitterAcc2Wallet (TwitterUserId) = {
940940 let TwitterLinkedWallet = match getString(this, (TwitterUserId + "_Wallet")) {
941941 case a: String =>
942942 a
943943 case _ =>
944944 "None"
945945 }
946946 if ((toBase58String(i.caller.bytes) == TwitterLinkedWallet))
947947 then throw("You already have your wallet linked to the Twitter account")
948948 else if (if ((toBase58String(i.caller.bytes) != TwitterLinkedWallet))
949949 then (TwitterLinkedWallet != "None")
950950 else false)
951951 then throw("The wallet you are using is not the linked Wallet to this Twitter account")
952952 else [StringEntry((TwitterUserId + "_Wallet"), toBase58String(i.caller.bytes))]
953953 }
954954
955955

github/deemru/w8io/6500d08 
103.71 ms