Name: series-workflowd8w2d Phase: Failed StartedAt: 2026-09-10 02:17:03 +0000 UTC FinishedAt: 2026-09-10 02:42:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd8w2d[0] Phase: Succeeded StartedAt: 2026-09-10 02:17:03 +0000 UTC FinishedAt: 2026-09-10 02:42:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd8w2d[0].run-triage Phase: Succeeded StartedAt: 2026-09-10 02:17:03 +0000 UTC FinishedAt: 2026-09-10 02:42:21 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDAyOjQxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgbW9kaWZpZWQgY29kZSBpcyBpbiB0aGUgUXVhbGNvbW0gQXRoZXJvcyBXQ04zNjYwLzM2ODAgd2lyZWxlc3MgZHJpdmVyICh3Y24zNnh4KSwgd2hpY2ggaXMgYW4gT0YgcGxhdGZvcm0gZHJpdmVyIGZvciBRdWFsY29tbSBTb0NzIHJlcXVpcmluZyBRdWFsY29tbSBXQ05TUy9SUE1TRyBoYXJkd2FyZS4gSXQgY2Fubm90IGJlIHByb2JlZCBvciBleGVjdXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKHN1Y2ggYXMgUUVNVSBvciBHQ0Ugb24gYW1kNjQpLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAwMjo0MTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDM4YzQ4OGFlMmVkNDhlODc5NjlkODU2Yzk3ZGYzNmVjMmM1NzEwNjNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IFNlcCAxMCAwMjo0MTozMyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jXG5pbmRleCA0NDAyMGVjMjY1ZmI2Li44MDFmMTIxOGVmODliIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jXG5AQCAtMTA1NSw3ICYjNDM7MTA1NSw3IEBAIHZvaWQgd2NuMzZ4eF9keGVfZGVpbml0KHN0cnVjdCB3Y24zNnh4ICp3Y24pXG4gXG4gXHRmcmVlX2lycSh3Y24tXHUwMDNldHhfaXJxLCB3Y24pO1xuIFx0ZnJlZV9pcnEod2NuLVx1MDAzZXJ4X2lycSwgd2NuKTtcbi1cdHRpbWVyX2RlbGV0ZShcdTAwMjZ3Y24tXHUwMDNldHhfYWNrX3RpbWVyKTtcbiYjNDM7XHR0aW1lcl9zaHV0ZG93bl9zeW5jKFx1MDAyNndjbi1cdTAwM2V0eF9hY2tfdGltZXIpO1xuIFxuIFx0aWYgKHdjbi1cdTAwM2V0eF9hY2tfc2tiKSB7XG4gXHRcdGllZWU4MDIxMV90eF9zdGF0dXNfaXJxc2FmZSh3Y24tXHUwMDNlaHcsIHdjbi1cdTAwM2V0eF9hY2tfc2tiKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAwMjo0MTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBtb2RpZmllZCBjb2RlIGlzIGluIHRoZSBRdWFsY29tbSBBdGhlcm9zIFdDTjM2NjAvMzY4MCB3aXJlbGVzcyBkcml2ZXIgKHdjbjM2eHgpLCB3aGljaCBpcyBhbiBPRiBwbGF0Zm9ybSBkcml2ZXIgZm9yIFF1YWxjb21tIFNvQ3MgcmVxdWlyaW5nIFF1YWxjb21tIFdDTlNTL1JQTVNHIGhhcmR3YXJlLiBJdCBjYW5ub3QgYmUgcHJvYmVkIG9yIGV4ZWN1dGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoc3VjaCBhcyBRRU1VIG9yIEdDRSBvbiBhbWQ2NCksIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3MKdG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncywKYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy4KCi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6CiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZAogIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuCiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLAogIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy4KCi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgJiMzNDtOTyBGVU5DVElPTkFMIENIQU5HRSYjMzQ7IChORkNJKSBPUiAmIzM0O1JFRkFDVE9SSU5HJiMzNDsgQ0xBSU1TOgogIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgJiMzNDtjbGVhbnVwcyYjMzQ7LCAmIzM0O3JlZmFjdG9yaW5ncyYjMzQ7LCBvciBzdGF0ZQogICYjMzQ7Tm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQmIzM0Oy4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuCiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50CiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuCiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC4KCi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6CiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLAogIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLgogIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXIKICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoyLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOgoKLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOgogICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLgogICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pCiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuCiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50cwogICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy4KICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy4KLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6CiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczoKICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZwogICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuCiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQozLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6Ci0gQ29yZSBTdWJzeXN0ZW1zOgogICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLAogICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLgotIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczoKICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy4KLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6CiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuCi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczoKICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpXaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjoKCi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOgogIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzCiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHQKICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS4KICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgJiMzNDtmb2N1c2VkJiMzNDssCiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLgoKLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6CiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzCiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuCgotIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKToKICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrCiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuCiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyCiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOgotIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCi0gQ2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC4KLSBTdHJpcCBhbnkgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMzhjNDg4YWUyZWQ0OGU4Nzk2OWQ4NTZjOTdkZjM2ZWMyYzU3MTA2MwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgU2VwIDEwIDAyOjQxOjMzIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYwppbmRleCA0NDAyMGVjMjY1ZmI2Li44MDFmMTIxOGVmODliIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYwpAQCAtMTA1NSw3ICYjNDM7MTA1NSw3IEBAIHZvaWQgd2NuMzZ4eF9keGVfZGVpbml0KHN0cnVjdCB3Y24zNnh4ICp3Y24pCiAKIAlmcmVlX2lycSh3Y24tJmd0O3R4X2lycSwgd2NuKTsKIAlmcmVlX2lycSh3Y24tJmd0O3J4X2lycSwgd2NuKTsKLQl0aW1lcl9kZWxldGUoJmFtcDt3Y24tJmd0O3R4X2Fja190aW1lcik7CiYjNDM7CXRpbWVyX3NodXRkb3duX3N5bmMoJmFtcDt3Y24tJmd0O3R4X2Fja190aW1lcik7CiAKIAlpZiAod2NuLSZndDt0eF9hY2tfc2tiKSB7CiAJCWllZWU4MDIxMV90eF9zdGF0dXNfaXJxc2FmZSh3Y24tJmd0O2h3LCB3Y24tJmd0O3R4X2Fja19za2IpOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAwMjo0MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTUwCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMzg4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUGF0Y2g6IEEgRGVlcCBEaXZlKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBJIG5lZWQgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiB3aGF0IHRoaXMgcGF0Y2ggaXMgZG9pbmcuIFRoZSBgZGlmZmAgc2hvd3MgYSBjaGFuZ2UgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jYC4gUmlnaHQgYXdheSwgSSBrbm93IHRvIGZvY3VzIG9uIHRoaXMgYXJlYSDigJMgaXQmIzM5O3MgYSBkcml2ZXIgZmlsZSwgd2hpY2ggaXMgdXN1YWxseSB0aGUgaGVhcnQgb2YgdGhlIGludGVyYWN0aW9uIGJldHdlZW4gdGhlIGtlcm5lbCBhbmQgdGhlIGhhcmR3YXJlLiBJIGNhbiBzZWUgdGhlIGNoYW5nZSBpcyBpbiBob3cgdGhlIGRyaXZlciBoYW5kbGVzIHNvbWUgZm9ybSBvZiB0aW1lci4gU3BlY2lmaWNhbGx5LCB0aGUgbGluZSBgdGltZXJfZGVsZXRlYCBpcyBub3cgYHRpbWVyX3NodXRkb3duX3N5bmNgLiBUaGF04oCZcyBhIHNpZ25pZmljYW50IGRpZmZlcmVuY2UuIFVzaW5nIGB0aW1lcl9zaHV0ZG93bl9zeW5jYCBzdWdnZXN0cyBhIG1vcmUgcm9idXN0IGFuZCBwb3NzaWJseSBzYWZlciB3YXkgdG8gc2h1dCBkb3duIHRoZSB0aW1lciwgZW5zdXJpbmcgYWxsIHBlbmRpbmcgd29yayBpcyBjb21wbGV0ZWQgYmVmb3JlIGRlLWluaXRpYWxpemluZy4gVGhpcyBpbmRpY2F0ZXMgdGhleSYjMzk7cmUgYWRkcmVzc2luZyBhIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbiBvciBjbGVhbnVwIGlzc3VlIGR1cmluZyBtb2R1bGUgdW5sb2FkIG9yIGRyaXZlciBkZS1pbml0aWFsaXphdGlvbi4KCk5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQuIFRoZSBgd2NuMzZ4eGAgbmFtaW5nIGlzIGZhbWlsaWFyLiBBaCwgcmlnaHQsIFF1YWxjb21tIEF0aGVyb3MgV0NOMzY2MC8zNjgwLiBUaGF0IG5hcnJvd3MgdGhlIGZvY3VzIGNvbnNpZGVyYWJseS4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZXNlIGRldmljZXMgYW5kIHRoZSBhc3NvY2lhdGVkIGRlc2lnbiBhbmQgaGFyZHdhcmUgYXJjaGl0ZWN0dXJlLiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSBzdXJyb3VuZGluZyBjb2RlIGFuZCBLY29uZmlnIGZpbGVzIGZvciBhbnkgZGVwZW5kZW5jaWVzIG9yIGhhcmR3YXJlLXNwZWNpZmljIGNvbmZpZ3VyYXRpb25zLiBVbmRlcnN0YW5kaW5nIHRoZSBoYXJkd2FyZSYjMzk7cyBpbnRyaWNhY2llcyBpcyBjcnVjaWFsIHRvIGZ1bGx5IGFwcHJlY2lhdGluZyB0aGUgaW1wbGljYXRpb24gb2YgdGhpcyBjaGFuZ2UuIElzIHRoaXMgYSBjb21tb24gbW9kdWxlLCBvciBpcyBpdCB2ZXJ5IGhhcmR3YXJlLXNwZWNpZmljPyBJJiMzOTtsbCBjaGVjayBpdHMgbG9jYXRpb24gaW4gdGhlIGRyaXZlciBzdHJ1Y3R1cmUgdG8gZmluZCBvdXQuIFRoaXMgbGlrZWx5IGFmZmVjdHMgYSBzcGVjaWZpYyBzZXQgb2Ygd2lyZWxlc3MgYWRhcHRlcnMsIGFuZCBJIG11c3QgYXNzZXNzIHdoZXRoZXIgdGhpcyBpcyByZWxldmFudCB0byB0aGUgc3lzdGVtcyBJIHdvcmsgb24uIEkgc2hvdWxkIGFsc28gaW52ZXN0aWdhdGUgb3RoZXIgcmVsYXRlZCBmaWxlcyB0byBlbnN1cmUgdGhpcyBjaGFuZ2UgZG9lc27igJl0IGludHJvZHVjZSBhbnkgcmVncmVzc2lvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMDI6NDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7d2NuMzZ4eCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA1MzY5IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9LY29uZmlnPTI9Y29uZmlnIFdDTjM2WFhcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9LY29uZmlnLTEwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvS2NvbmZpZzoxMTpcdCAgSWYgeW91IGNob29zZSB0byBidWlsZCBhIG1vZHVsZSwgaXQmIzM5O2xsIGJlIGNhbGxlZCB3Y24zNnh4LlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvS2NvbmZpZy0xMi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9NYWtlZmlsZS0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IElTQ1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvTWFrZWZpbGU6MjpvYmotJChDT05GSUdfV0NOMzZYWCkgOj0gd2NuMzZ4eC5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9NYWtlZmlsZTozOndjbjM2eHgteSAmIzQzOz0gICBtYWluLm8gXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L01ha2VmaWxlLTQtICAgICAgICAgICAgICAgZHhlLm8gXFxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9NYWtlZmlsZS0xMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L01ha2VmaWxlOjExOndjbjM2eHgtJChDT05GSUdfTkw4MDIxMV9URVNUTU9ERSkgJiM0Mzs9IHRlc3Rtb2RlLm9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5jLTIwLSNpbmNsdWRlIFx1MDAzY2xpbnV4L3VhY2Nlc3MuaFx1MDAzZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuYzoyMTojaW5jbHVkZSBcJiMzNDt3Y24zNnh4LmhcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2RlYnVnLmMtMjItI2luY2x1ZGUgXCYjMzQ7ZGVidWcuaFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2RlYnVnLmM9Mjg9c3RhdGljIHNzaXplX3QgcmVhZF9maWxlX2Jvb2xfYm1wcyhzdHJ1Y3QgZmlsZSAqZmlsZSwgY2hhciBfX3VzZXIgKnVzZXJfYnVmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2RlYnVnLmMtMzAte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuYzozMTpcdHN0cnVjdCB3Y24zNnh4ICp3Y24gPSBmaWxlLVx1MDAzZXByaXZhdGVfZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2RlYnVnLmM6MzI6XHRzdHJ1Y3Qgd2NuMzZ4eF92aWYgKnZpZl9wcml2ID0gTlVMTDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2RlYnVnLmMtMzMtXHRzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmID0gTlVMTDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5jLTM2LVx0bGlzdF9mb3JfZWFjaF9lbnRyeSh2aWZfcHJpdiwgXHUwMDI2d2NuLVx1MDAzZXZpZl9saXN0LCBsaXN0KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5jOjM3Olx0XHRcdHZpZiA9IHdjbjM2eHhfcHJpdl90b192aWYodmlmX3ByaXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuYy0zOC1cdFx0XHRpZiAoTkw4MDIxMV9JRlRZUEVfU1RBVElPTiA9PSB2aWYtXHUwMDNldHlwZSkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2RlYnVnLmM9NTI9c3RhdGljIHNzaXplX3Qgd3JpdGVfZmlsZV9ib29sX2JtcHMoc3RydWN0IGZpbGUgKmZpbGUsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuYy01NS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5jOjU2Olx0c3RydWN0IHdjbjM2eHggKndjbiA9IGZpbGUtXHUwMDNlcHJpdmF0ZV9kYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuYzo1NzpcdHN0cnVjdCB3Y24zNnh4X3ZpZiAqdmlmX3ByaXYgPSBOVUxMO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuYy01OC1cdHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYgPSBOVUxMO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2RlYnVnLmMtNzEtXHRcdGxpc3RfZm9yX2VhY2hfZW50cnkodmlmX3ByaXYsIFx1MDAyNndjbi1cdTAwM2V2aWZfbGlzdCwgbGlzdCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuYzo3MjpcdFx0XHR2aWYgPSB3Y24zNnh4X3ByaXZfdG9fdmlmKHZpZl9wcml2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2RlYnVnLmMtNzMtXHRcdFx0aWYgKE5MODAyMTFfSUZUWVBFX1NUQVRJT04gPT0gdmlmLVx1MDAzZXR5cGUpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2RlYnVnLmM6NzQ6XHRcdFx0XHR3Y24zNnh4X2VuYWJsZV9rZWVwX2FsaXZlX251bGxfcGFja2V0KHdjbiwgdmlmKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2RlYnVnLmM6NzU6XHRcdFx0XHR3Y24zNnh4X3BtY19lbnRlcl9ibXBzX3N0YXRlKHdjbiwgdmlmKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2RlYnVnLmMtNzYtXHRcdFx0fVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2RlYnVnLmMtODItXHRcdGxpc3RfZm9yX2VhY2hfZW50cnkodmlmX3ByaXYsIFx1MDAyNndjbi1cdTAwM2V2aWZfbGlzdCwgbGlzdCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuYzo4MzpcdFx0XHR2aWYgPSB3Y24zNnh4X3ByaXZfdG9fdmlmKHZpZl9wcml2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2RlYnVnLmMtODQtXHRcdFx0aWYgKE5MODAyMTFfSUZUWVBFX1NUQVRJT04gPT0gdmlmLVx1MDAzZXR5cGUpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5jOjg1Olx0XHRcdFx0d2NuMzZ4eF9wbWNfZXhpdF9ibXBzX3N0YXRlKHdjbiwgdmlmKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2RlYnVnLmMtODYtXHRcdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5jLTkyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuYzo5MzpzdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBmb3BzX3djbjM2eHhfYm1wcyA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2RlYnVnLmMtOTQtXHQub3BlbiA9IHNpbXBsZV9vcGVuLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2RlYnVnLmM9OTk9c3RhdGljIHNzaXplX3Qgd3JpdGVfZmlsZV9kdW1wKHN0cnVjdCBmaWxlICpmaWxlLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2RlYnVnLmMtMTAyLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2RlYnVnLmM6MTAzOlx0c3RydWN0IHdjbjM2eHggKndjbiA9IGZpbGUtXHUwMDNlcHJpdmF0ZV9kYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuYy0xMDQtXHRjaGFyIGJ1ZlsyNTVdLCAqdG1wO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2RlYnVnLmMtMTI3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuYzoxMjg6XHR3Y24zNnh4X2luZm8oXCYjMzQ7RFVNUCBhcmdzIGlzICVkICVkICVkICVkICVkXFxuXCYjMzQ7LCBhcmdbMF0sIGFyZ1sxXSwgYXJnWzJdLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuYy0xMjktXHRcdCAgICAgYXJnWzNdLCBhcmdbNF0pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuYzoxMzA6XHR3Y24zNnh4X3NtZF9kdW1wX2NtZF9yZXEod2NuLCBhcmdbMF0sIGFyZ1sxXSwgYXJnWzJdLCBhcmdbM10sIGFyZ1s0XSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5jLTEzMS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5jLTEzNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2RlYnVnLmM6MTM1OnN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGZvcHNfd2NuMzZ4eF9kdW1wID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuYy0xMzYtXHQub3BlbiA9IHNpbXBsZV9vcGVuLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2RlYnVnLmM9MTQwPXN0YXRpYyBzc2l6ZV90IHJlYWRfZmlsZV9maXJtd2FyZV9mZWF0dXJlX2NhcHMoc3RydWN0IGZpbGUgKmZpbGUsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuYy0xNDMte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuYzoxNDQ6XHRzdHJ1Y3Qgd2NuMzZ4eCAqd2NuID0gZmlsZS1cdTAwM2Vwcml2YXRlX2RhdGE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5jLTE0NS1cdHNpemVfdCBsZW4gPSAwLCBidWZfbGVuID0gMjA0ODtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5jLTE1NS1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIE1BWF9GRUFUVVJFX1NVUFBPUlRFRDsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2RlYnVnLmM6MTU2Olx0XHRpZiAod2NuMzZ4eF9maXJtd2FyZV9nZXRfZmVhdF9jYXBzKHdjbi1cdTAwM2Vmd19mZWF0X2NhcHMsIGkpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5jLTE1Ny1cdFx0XHRsZW4gJiM0Mzs9IHNjbnByaW50ZihidWYgJiM0MzsgbGVuLCBidWZfbGVuIC0gbGVuLCBcJiMzNDslc1xcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2RlYnVnLmM6MTU4Olx0XHRcdFx0XHQgd2NuMzZ4eF9maXJtd2FyZV9nZXRfY2FwX25hbWUoaSkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuYy0xNTktXHRcdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5jLTE3MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2RlYnVnLmM6MTcxOnN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGZvcHNfd2NuMzZ4eF9maXJtd2FyZV9mZWF0X2NhcHMgPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5jLTE3Mi1cdC5vcGVuID0gc2ltcGxlX29wZW4sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuYy0xODMtXHRcdGlmIChJU19FUlIoZCkpIHtcdFx0XHRcdFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5jOjE4NDpcdFx0XHR3Y24zNnh4X3dhcm4oXCYjMzQ7Q3JlYXRlIHRoZSBkZWJ1Z2ZzIGVudHJ5IGZhaWxlZFwmIzM0Oyk7XFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2RlYnVnLmMtMTg1LVx0XHRcdGRmcy1cdTAwM2VmaWxlXyMjbmFtZS5kZW50cnkgPSBOVUxMO1x0XHRcXFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2RlYnVnLmMtMTg5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuYzoxOTA6dm9pZCB3Y24zNnh4X2RlYnVnZnNfaW5pdChzdHJ1Y3Qgd2NuMzZ4eCAqd2NuKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuYy0xOTEte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuYzoxOTI6XHRzdHJ1Y3Qgd2NuMzZ4eF9kZnNfZW50cnkgKmRmcyA9IFx1MDAyNndjbi1cdTAwM2VkZnM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5jLTE5My1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5jLTE5Ni1cdGlmIChJU19FUlIoZGZzLVx1MDAzZXJvb3RkaXIpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5jOjE5NzpcdFx0d2NuMzZ4eF93YXJuKFwmIzM0O0NyZWF0ZSB0aGUgZGVidWdmcyBmYWlsZWRcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuYy0xOTgtXHRcdGRmcy1cdTAwM2Vyb290ZGlyID0gTlVMTDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5jLTIwMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2RlYnVnLmM6MjAxOlx0QUREX0ZJTEUoYm1wc19zd2l0Y2hlciwgMDYwMCwgXHUwMDI2Zm9wc193Y24zNnh4X2JtcHMsIHdjbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5jOjIwMjpcdEFERF9GSUxFKGR1bXAsIDAyMDAsIFx1MDAyNmZvcHNfd2NuMzZ4eF9kdW1wLCB3Y24pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuYy0yMDMtXHRBRERfRklMRShmaXJtd2FyZV9mZWF0X2NhcHMsIDAyMDAsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5jOjIwNDpcdFx0IFx1MDAyNmZvcHNfd2NuMzZ4eF9maXJtd2FyZV9mZWF0X2NhcHMsIHdjbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5jLTIwNS19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5jLTIwNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2RlYnVnLmM6MjA3OnZvaWQgd2NuMzZ4eF9kZWJ1Z2ZzX2V4aXQoc3RydWN0IHdjbjM2eHggKndjbilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2RlYnVnLmMtMjA4LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2RlYnVnLmM6MjA5Olx0c3RydWN0IHdjbjM2eHhfZGZzX2VudHJ5ICpkZnMgPSBcdTAwMjZ3Y24tXHUwMDNlZGZzO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuYy0yMTAtXHRkZWJ1Z2ZzX3JlbW92ZV9yZWN1cnNpdmUoZGZzLVx1MDAzZXJvb3RkaXIpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2RlYnVnLmgtMjQtI2lmZGVmIENPTkZJR19XQ04zNlhYX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2RlYnVnLmg6MjU6c3RydWN0IHdjbjM2eHhfZGZzX2ZpbGUge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuaC0yNi1cdHN0cnVjdCBkZW50cnkgKmRlbnRyeTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5oLTI5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuaDozMDpzdHJ1Y3Qgd2NuMzZ4eF9kZnNfZW50cnkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuaC0zMS1cdHN0cnVjdCBkZW50cnkgKnJvb3RkaXI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5oOjMyOlx0c3RydWN0IHdjbjM2eHhfZGZzX2ZpbGUgZmlsZV9ibXBzX3N3aXRjaGVyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuaDozMzpcdHN0cnVjdCB3Y24zNnh4X2Rmc19maWxlIGZpbGVfZHVtcDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2RlYnVnLmg6MzQ6XHRzdHJ1Y3Qgd2NuMzZ4eF9kZnNfZmlsZSBmaWxlX2Zpcm13YXJlX2ZlYXRfY2FwcztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2RlYnVnLmgtMzUtfTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2RlYnVnLmgtMzYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5oOjM3OnZvaWQgd2NuMzZ4eF9kZWJ1Z2ZzX2luaXQoc3RydWN0IHdjbjM2eHggKndjbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5oOjM4OnZvaWQgd2NuMzZ4eF9kZWJ1Z2ZzX2V4aXQoc3RydWN0IHdjbjM2eHggKndjbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5oLTM5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuaC00MC0jZWxzZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuaDo0MTpzdGF0aWMgaW5saW5lIHZvaWQgd2NuMzZ4eF9kZWJ1Z2ZzX2luaXQoc3RydWN0IHdjbjM2eHggKndjbilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2RlYnVnLmgtNDIte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuaC00My19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5oOjQ0OnN0YXRpYyBpbmxpbmUgdm9pZCB3Y24zNnh4X2RlYnVnZnNfZXhpdChzdHJ1Y3Qgd2NuMzZ4eCAqd2NuKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuaC00NS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtMjYtI2luY2x1ZGUgXHUwMDNjbGludXgvc29jL3Fjb20vc21lbV9zdGF0ZS5oXHUwMDNlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzoyNzojaW5jbHVkZSBcJiMzNDt3Y24zNnh4LmhcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTI4LSNpbmNsdWRlIFwmIzM0O3R4cnguaFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtMjktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzozMDpzdGF0aWMgdm9pZCB3Y24zNnh4X2NjdV93cml0ZV9yZWdpc3RlcihzdHJ1Y3Qgd2NuMzZ4eCAqd2NuLCBpbnQgYWRkciwgaW50IGRhdGEpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy0zMS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzozMjpcdHdjbjM2eHhfZGJnKFdDTjM2WFhfREJHX0RYRSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjMzOlx0XHQgICAgXCYjMzQ7d2NuMzZ4eF9jY3Vfd3JpdGVfcmVnaXN0ZXI6IGFkZHI9JXgsIGRhdGE9JXhcXG5cJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy0zNC1cdFx0ICAgIGFkZHIsIGRhdGEpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTM4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6Mzk6c3RhdGljIHZvaWQgd2NuMzZ4eF9keGVfd3JpdGVfcmVnaXN0ZXIoc3RydWN0IHdjbjM2eHggKndjbiwgaW50IGFkZHIsIGludCBkYXRhKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNDAte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6NDE6XHR3Y24zNnh4X2RiZyhXQ04zNlhYX0RCR19EWEUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzo0MjpcdFx0ICAgIFwmIzM0O3djbjM2eHhfZHhlX3dyaXRlX3JlZ2lzdGVyOiBhZGRyPSV4LCBkYXRhPSV4XFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNDMtXHRcdCAgICBhZGRyLCBkYXRhKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy00Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjQ4OnN0YXRpYyB2b2lkIHdjbjM2eHhfZHhlX3JlYWRfcmVnaXN0ZXIoc3RydWN0IHdjbjM2eHggKndjbiwgaW50IGFkZHIsIGludCAqZGF0YSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTQ5LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy01MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjUyOlx0d2NuMzZ4eF9kYmcoV0NOMzZYWF9EQkdfRFhFLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6NTM6XHRcdCAgICBcJiMzNDt3Y24zNnh4X2R4ZV9yZWFkX3JlZ2lzdGVyOiBhZGRyPSV4LCBkYXRhPSV4XFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNTQtXHRcdCAgICBhZGRyLCAqZGF0YSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzo1NzpzdGF0aWMgdm9pZCB3Y24zNnh4X2R4ZV9mcmVlX2N0bF9ibG9jayhzdHJ1Y3Qgd2NuMzZ4eF9keGVfY2ggKmNoKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNTgte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6NTk6XHRzdHJ1Y3Qgd2NuMzZ4eF9keGVfY3RsICpjdGwgPSBjaC1cdTAwM2VoZWFkX2Jsa19jdGwsICpuZXh0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNjAtXHRpbnQgaTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy02OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjY5OnN0YXRpYyBpbnQgd2NuMzZ4eF9keGVfYWxsb2NhdGVfY3RsX2Jsb2NrKHN0cnVjdCB3Y24zNnh4X2R4ZV9jaCAqY2gpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy03MC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzo3MTpcdHN0cnVjdCB3Y24zNnh4X2R4ZV9jdGwgKnByZXZfY3RsID0gTlVMTDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjcyOlx0c3RydWN0IHdjbjM2eHhfZHhlX2N0bCAqY3VyX2N0bCA9IE5VTEw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy03My1cdGludCBpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTk2LW91dF9mYWlsOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6OTc6XHR3Y24zNnh4X2R4ZV9mcmVlX2N0bF9ibG9jayhjaCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy05OC1cdHJldHVybiAtRU5PTUVNO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTEwMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjEwMTppbnQgd2NuMzZ4eF9keGVfYWxsb2NfY3RsX2Jsa3Moc3RydWN0IHdjbjM2eHggKndjbilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTEwMi17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtMTMwLVx0LyogRFhFIGNvbnRyb2wgYmxvY2sgYWxsb2NhdGlvbiAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6MTMxOlx0cmV0ID0gd2NuMzZ4eF9keGVfYWxsb2NhdGVfY3RsX2Jsb2NrKFx1MDAyNndjbi1cdTAwM2VkeGVfdHhfbF9jaCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy0xMzItXHRpZiAocmV0KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtMTMzLVx0XHRnb3RvIG91dF9lcnI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzoxMzQ6XHRyZXQgPSB3Y24zNnh4X2R4ZV9hbGxvY2F0ZV9jdGxfYmxvY2soXHUwMDI2d2NuLVx1MDAzZWR4ZV90eF9oX2NoKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTEzNS1cdGlmIChyZXQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy0xMzYtXHRcdGdvdG8gb3V0X2VycjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjEzNzpcdHJldCA9IHdjbjM2eHhfZHhlX2FsbG9jYXRlX2N0bF9ibG9jayhcdTAwMjZ3Y24tXHUwMDNlZHhlX3J4X2xfY2gpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtMTM4LVx0aWYgKHJldClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTEzOS1cdFx0Z290byBvdXRfZXJyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6MTQwOlx0cmV0ID0gd2NuMzZ4eF9keGVfYWxsb2NhdGVfY3RsX2Jsb2NrKFx1MDAyNndjbi1cdTAwM2VkeGVfcnhfaF9jaCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy0xNDEtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTE1NC1vdXRfZXJyOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6MTU1Olx0d2NuMzZ4eF9lcnIoXCYjMzQ7RmFpbGVkIHRvIGFsbG9jYXRlIERYRSBjb250cm9sIGJsb2Nrc1xcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzoxNTY6XHR3Y24zNnh4X2R4ZV9mcmVlX2N0bF9ibGtzKHdjbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy0xNTctXHRyZXR1cm4gLUVOT01FTTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy0xNTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzoxNjA6dm9pZCB3Y24zNnh4X2R4ZV9mcmVlX2N0bF9ibGtzKHN0cnVjdCB3Y24zNnh4ICp3Y24pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy0xNjEte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6MTYyOlx0d2NuMzZ4eF9keGVfZnJlZV9jdGxfYmxvY2soXHUwMDI2d2NuLVx1MDAzZWR4ZV90eF9sX2NoKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjE2MzpcdHdjbjM2eHhfZHhlX2ZyZWVfY3RsX2Jsb2NrKFx1MDAyNndjbi1cdTAwM2VkeGVfdHhfaF9jaCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzoxNjQ6XHR3Y24zNnh4X2R4ZV9mcmVlX2N0bF9ibG9jayhcdTAwMjZ3Y24tXHUwMDNlZHhlX3J4X2xfY2gpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6MTY1Olx0d2NuMzZ4eF9keGVfZnJlZV9jdGxfYmxvY2soXHUwMDI2d2NuLVx1MDAzZWR4ZV9yeF9oX2NoKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTE2Ni19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy0xNjctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzoxNjg6c3RhdGljIGludCB3Y24zNnh4X2R4ZV9pbml0X2Rlc2NzKHN0cnVjdCB3Y24zNnh4ICp3Y24sIHN0cnVjdCB3Y24zNnh4X2R4ZV9jaCAqd2NuX2NoKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtMTY5LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTE3MC1cdHN0cnVjdCBkZXZpY2UgKmRldiA9IHdjbi1cdTAwM2VkZXY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzoxNzE6XHRzdHJ1Y3Qgd2NuMzZ4eF9keGVfZGVzYyAqY3VyX2R4ZSA9IE5VTEw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzoxNzI6XHRzdHJ1Y3Qgd2NuMzZ4eF9keGVfZGVzYyAqcHJldl9keGUgPSBOVUxMO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6MTczOlx0c3RydWN0IHdjbjM2eHhfZHhlX2N0bCAqY3VyX2N0bCA9IE5VTEw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy0xNzQtXHRzaXplX3Qgc2l6ZTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy0xNzYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzoxNzc6XHRzaXplID0gd2NuX2NoLVx1MDAzZWRlc2NfbnVtICogc2l6ZW9mKHN0cnVjdCB3Y24zNnh4X2R4ZV9kZXNjKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTE3OC1cdHdjbl9jaC1cdTAwM2VjcHVfYWRkciA9IGRtYV9hbGxvY19jb2hlcmVudChkZXYsIHNpemUsIFx1MDAyNndjbl9jaC1cdTAwM2VkbWFfYWRkcixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy0xODgtXHRcdGN1cl9jdGwtXHUwMDNlZGVzY19waHlfYWRkciA9IHdjbl9jaC1cdTAwM2VkbWFfYWRkciAmIzQzO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6MTg5Olx0XHRcdGkgKiBzaXplb2Yoc3RydWN0IHdjbjM2eHhfZHhlX2Rlc2MpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtMTkwLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTIyNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjIyODpzdGF0aWMgdm9pZCB3Y24zNnh4X2R4ZV9kZWluaXRfZGVzY3Moc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3Qgd2NuMzZ4eF9keGVfY2ggKndjbl9jaClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTIyOS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtMjMxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6MjMyOlx0c2l6ZSA9IHdjbl9jaC1cdTAwM2VkZXNjX251bSAqIHNpemVvZihzdHJ1Y3Qgd2NuMzZ4eF9keGVfZGVzYyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy0yMzMtXHRkbWFfZnJlZV9jb2hlcmVudChkZXYsIHNpemUsd2NuX2NoLVx1MDAzZWNwdV9hZGRyLCB3Y25fY2gtXHUwMDNlZG1hX2FkZHIpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTIzNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjIzNjpzdGF0aWMgdm9pZCB3Y24zNnh4X2R4ZV9pbml0X3R4X2JkKHN0cnVjdCB3Y24zNnh4X2R4ZV9jaCAqY2gsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzoyMzc6XHRcdFx0XHQgICBzdHJ1Y3Qgd2NuMzZ4eF9keGVfbWVtX3Bvb2wgKnBvb2wpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy0yMzgte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTI0MS1cdHZvaWQgKmJkX2NwdV9hZGRyID0gcG9vbC1cdTAwM2V2aXJ0X2FkZHI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzoyNDI6XHRzdHJ1Y3Qgd2NuMzZ4eF9keGVfY3RsICpjdXIgPSBjaC1cdTAwM2VoZWFkX2Jsa19jdGw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy0yNDMtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtMjU5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6MjYwOnN0YXRpYyBpbnQgd2NuMzZ4eF9keGVfZW5hYmxlX2NoX2ludChzdHJ1Y3Qgd2NuMzZ4eCAqd2NuLCB1MTYgd2NuX2NoKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtMjYxLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy0yNjMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzoyNjQ6XHR3Y24zNnh4X2R4ZV9yZWFkX3JlZ2lzdGVyKHdjbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTI2NS1cdFx0XHRcdCAgV0NOMzZYWF9EWEVfSU5UX01BU0tfUkVHLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTI2OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjI3MDpcdHdjbjM2eHhfZHhlX3dyaXRlX3JlZ2lzdGVyKHdjbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTI3MS1cdFx0XHRcdCAgIFdDTjM2WFhfRFhFX0lOVF9NQVNLX1JFRyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy0yNzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzoyNzY6c3RhdGljIHZvaWQgd2NuMzZ4eF9keGVfZGlzYWJsZV9jaF9pbnQoc3RydWN0IHdjbjM2eHggKndjbiwgdTE2IHdjbl9jaClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTI3Ny17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtMjc5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6MjgwOlx0d2NuMzZ4eF9keGVfcmVhZF9yZWdpc3Rlcih3Y24sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy0yODEtXHRcdFx0XHQgIFdDTjM2WFhfRFhFX0lOVF9NQVNLX1JFRyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy0yODUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzoyODY6XHR3Y24zNnh4X2R4ZV93cml0ZV9yZWdpc3Rlcih3Y24sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy0yODctXHRcdFx0XHQgICBXQ04zNlhYX0RYRV9JTlRfTUFTS19SRUcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtMjkwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6MjkxOnN0YXRpYyBpbnQgd2NuMzZ4eF9keGVfZmlsbF9za2Ioc3RydWN0IGRldmljZSAqZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6MjkyOlx0XHRcdFx0c3RydWN0IHdjbjM2eHhfZHhlX2N0bCAqY3RsLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtMjkzLVx0XHRcdFx0Z2ZwX3QgZ2ZwKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtMjk0LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjI5NTpcdHN0cnVjdCB3Y24zNnh4X2R4ZV9kZXNjICpkeGUgPSBjdGwtXHUwMDNlZGVzYztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTI5Ni1cdHN0cnVjdCBza19idWZmICpza2I7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtMzE1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6MzE2OnN0YXRpYyBpbnQgd2NuMzZ4eF9keGVfY2hfYWxsb2Nfc2tiKHN0cnVjdCB3Y24zNnh4ICp3Y24sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzozMTc6XHRcdFx0XHQgICAgc3RydWN0IHdjbjM2eHhfZHhlX2NoICp3Y25fY2gpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy0zMTgte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtMzE5LVx0aW50IGk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzozMjA6XHRzdHJ1Y3Qgd2NuMzZ4eF9keGVfY3RsICpjdXJfY3RsID0gTlVMTDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTMyMS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy0zMjQtXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyB3Y25fY2gtXHUwMDNlZGVzY19udW07IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzozMjU6XHRcdHdjbjM2eHhfZHhlX2ZpbGxfc2tiKHdjbi1cdTAwM2VkZXYsIGN1cl9jdGwsIEdGUF9LRVJORUwpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtMzI2LVx0XHRjdXJfY3RsID0gY3VyX2N0bC1cdTAwM2VuZXh0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTMzMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjMzMjpzdGF0aWMgdm9pZCB3Y24zNnh4X2R4ZV9jaF9mcmVlX3NrYnMoc3RydWN0IHdjbjM2eHggKndjbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjMzMzpcdFx0XHRcdCAgICAgc3RydWN0IHdjbjM2eHhfZHhlX2NoICp3Y25fY2gpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy0zMzQte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6MzM1Olx0c3RydWN0IHdjbjM2eHhfZHhlX2N0bCAqY3VyID0gd2NuX2NoLVx1MDAzZWhlYWRfYmxrX2N0bDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTMzNi1cdGludCBpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTM0My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjM0NDp2b2lkIHdjbjM2eHhfZHhlX3R4X2Fja19pbmQoc3RydWN0IHdjbjM2eHggKndjbiwgdTMyIHN0YXR1cylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTM0NS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtMzU2LVx0aWYgKCFza2IpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjM1NzpcdFx0d2NuMzZ4eF93YXJuKFwmIzM0O1NwdXJpb3VzIFRYIGNvbXBsZXRlIGluZGljYXRpb25cXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtMzU4LVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtMzY3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6MzY4Olx0d2NuMzZ4eF9kYmcoV0NOMzZYWF9EQkdfRFhFLCBcJiMzNDtkeGUgdHggYWNrIHN0YXR1czogJWRcXG5cJiMzNDssIHN0YXR1cyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy0zNjktXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtMzczLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6Mzc0OnN0YXRpYyB2b2lkIHdjbjM2eHhfZHhlX3R4X3RpbWVyKHN0cnVjdCB0aW1lcl9saXN0ICp0KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtMzc1LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjM3NjpcdHN0cnVjdCB3Y24zNnh4ICp3Y24gPSB0aW1lcl9jb250YWluZXJfb2Yod2NuLCB0LCB0eF9hY2tfdGltZXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtMzc3LVx0c3RydWN0IGllZWU4MDIxMV90eF9pbmZvICppbmZvO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTM4MS1cdC8qIFRYIFRpbWVvdXQgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjM4MjpcdHdjbjM2eHhfZGJnKFdDTjM2WFhfREJHX0RYRSwgXCYjMzQ7VFggdGltZW91dFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy0zODMtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtMzk5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6NDAwOnN0YXRpYyB2b2lkIHJlYXBfdHhfZHhlcyhzdHJ1Y3Qgd2NuMzZ4eCAqd2NuLCBzdHJ1Y3Qgd2NuMzZ4eF9keGVfY2ggKmNoKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNDAxLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjQwMjpcdHN0cnVjdCB3Y24zNnh4X2R4ZV9jdGwgKmN0bDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTQwMy1cdHN0cnVjdCBpZWVlODAyMTFfdHhfaW5mbyAqaW5mbztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy00NTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzo0NTQ6c3RhdGljIGlycXJldHVybl90IHdjbjM2eHhfaXJxX3R4X2NvbXBsZXRlKGludCBpcnEsIHZvaWQgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTQ1NS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzo0NTY6XHRzdHJ1Y3Qgd2NuMzZ4eCAqd2NuID0gZGV2O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNDU3LVx0aW50IGludF9zcmMsIGludF9yZWFzb247XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy00NTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzo0NTk6XHR3Y24zNnh4X2R4ZV9yZWFkX3JlZ2lzdGVyKHdjbiwgV0NOMzZYWF9EWEVfSU5UX1NSQ19SQVdfUkVHLCBcdTAwMjZpbnRfc3JjKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTQ2MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTQ2MS1cdGlmIChpbnRfc3JjIFx1MDAyNiBXQ04zNlhYX0lOVF9NQVNLX0NIQU5fVFhfSCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6NDYyOlx0XHR3Y24zNnh4X2R4ZV9yZWFkX3JlZ2lzdGVyKHdjbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTQ2My1cdFx0XHRcdFx0ICBXQ04zNlhYX0RYRV9DSF9TVEFUVVNfUkVHX0FERFJfVFhfSCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy00NjUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzo0NjY6XHRcdHdjbjM2eHhfZHhlX3dyaXRlX3JlZ2lzdGVyKHdjbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTQ2Ny1cdFx0XHRcdFx0ICAgV0NOMzZYWF9EWEVfMF9JTlRfQ0xSLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTQ3MC1cdFx0aWYgKGludF9yZWFzb24gXHUwMDI2IFdDTjM2WFhfQ0hfU1RBVF9JTlRfRVJSX01BU0sgKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzo0NzE6XHRcdFx0d2NuMzZ4eF9keGVfd3JpdGVfcmVnaXN0ZXIod2NuLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNDcyLVx0XHRcdFx0XHRcdCAgIFdDTjM2WFhfRFhFXzBfSU5UX0VSUl9DTFIsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNDc0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6NDc1Olx0XHRcdHdjbjM2eHhfZXJyKFwmIzM0O0RYRSBJUlEgcmVwb3J0ZWQgZXJyb3I6IDB4JXggaW4gaGlnaCBUWCBjaGFubmVsXFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNDc2LVx0XHRcdFx0XHRpbnRfc3JjKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy00NzktXHRcdGlmIChpbnRfcmVhc29uIFx1MDAyNiBXQ04zNlhYX0NIX1NUQVRfSU5UX0RPTkVfTUFTSykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6NDgwOlx0XHRcdHdjbjM2eHhfZHhlX3dyaXRlX3JlZ2lzdGVyKHdjbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTQ4MS1cdFx0XHRcdFx0XHQgICBXQ04zNlhYX0RYRV8wX0lOVF9ET05FX0NMUixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy00ODUtXHRcdGlmIChpbnRfcmVhc29uIFx1MDAyNiBXQ04zNlhYX0NIX1NUQVRfSU5UX0VEX01BU0spIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjQ4NjpcdFx0XHR3Y24zNnh4X2R4ZV93cml0ZV9yZWdpc3Rlcih3Y24sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy00ODctXHRcdFx0XHRcdFx0ICAgV0NOMzZYWF9EWEVfMF9JTlRfRURfQ0xSLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTQ5MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjQ5MTpcdFx0d2NuMzZ4eF9kYmcoV0NOMzZYWF9EQkdfRFhFLCBcJiMzNDtkeGUgdHggcmVhZHkgaGlnaCwgcmVhc29uICUwOHhcXG5cJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy00OTItXHRcdFx0ICAgIGludF9yZWFzb24pO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTUwMC1cdGlmIChpbnRfc3JjIFx1MDAyNiBXQ04zNlhYX0lOVF9NQVNLX0NIQU5fVFhfTCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6NTAxOlx0XHR3Y24zNnh4X2R4ZV9yZWFkX3JlZ2lzdGVyKHdjbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTUwMi1cdFx0XHRcdFx0ICBXQ04zNlhYX0RYRV9DSF9TVEFUVVNfUkVHX0FERFJfVFhfTCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy01MDQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzo1MDU6XHRcdHdjbjM2eHhfZHhlX3dyaXRlX3JlZ2lzdGVyKHdjbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTUwNi1cdFx0XHRcdFx0ICAgV0NOMzZYWF9EWEVfMF9JTlRfQ0xSLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTUwOS1cdFx0aWYgKGludF9yZWFzb24gXHUwMDI2IFdDTjM2WFhfQ0hfU1RBVF9JTlRfRVJSX01BU0sgKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzo1MTA6XHRcdFx0d2NuMzZ4eF9keGVfd3JpdGVfcmVnaXN0ZXIod2NuLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNTExLVx0XHRcdFx0XHRcdCAgIFdDTjM2WFhfRFhFXzBfSU5UX0VSUl9DTFIsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNTEzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6NTE0Olx0XHRcdHdjbjM2eHhfZXJyKFwmIzM0O0RYRSBJUlEgcmVwb3J0ZWQgZXJyb3I6IDB4JXggaW4gbG93IFRYIGNoYW5uZWxcXG5cJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy01MTUtXHRcdFx0XHRcdGludF9zcmMpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTUxOC1cdFx0aWYgKGludF9yZWFzb24gXHUwMDI2IFdDTjM2WFhfQ0hfU1RBVF9JTlRfRE9ORV9NQVNLKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzo1MTk6XHRcdFx0d2NuMzZ4eF9keGVfd3JpdGVfcmVnaXN0ZXIod2NuLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNTIwLVx0XHRcdFx0XHRcdCAgIFdDTjM2WFhfRFhFXzBfSU5UX0RPTkVfQ0xSLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTUyNC1cdFx0aWYgKGludF9yZWFzb24gXHUwMDI2IFdDTjM2WFhfQ0hfU1RBVF9JTlRfRURfTUFTSykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6NTI1Olx0XHRcdHdjbjM2eHhfZHhlX3dyaXRlX3JlZ2lzdGVyKHdjbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTUyNi1cdFx0XHRcdFx0XHQgICBXQ04zNlhYX0RYRV8wX0lOVF9FRF9DTFIsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNTI5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6NTMwOlx0XHR3Y24zNnh4X2RiZyhXQ04zNlhYX0RCR19EWEUsIFwmIzM0O2R4ZSB0eCByZWFkeSBsb3csIHJlYXNvbiAlMDh4XFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNTMxLVx0XHRcdCAgICBpbnRfcmVhc29uKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy01NDEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzo1NDI6c3RhdGljIGlycXJldHVybl90IHdjbjM2eHhfaXJxX3J4X3JlYWR5KGludCBpcnEsIHZvaWQgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTU0My17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzo1NDQ6XHRzdHJ1Y3Qgd2NuMzZ4eCAqd2NuID0gZGV2O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNTQ1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6NTQ2Olx0d2NuMzZ4eF9keGVfcnhfZnJhbWUod2NuKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTU0Ny1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy01NTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzo1NTE6c3RhdGljIGludCB3Y24zNnh4X2R4ZV9yZXF1ZXN0X2lycXMoc3RydWN0IHdjbjM2eHggKndjbilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTU1Mi17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNTU0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6NTU1Olx0cmV0ID0gcmVxdWVzdF9pcnEod2NuLVx1MDAzZXR4X2lycSwgd2NuMzZ4eF9pcnFfdHhfY29tcGxldGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzo1NTY6XHRcdFx0ICBJUlFGX1RSSUdHRVJfSElHSCwgXCYjMzQ7d2NuMzZ4eF90eFwmIzM0Oywgd2NuKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTU1Ny1cdGlmIChyZXQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjU1ODpcdFx0d2NuMzZ4eF9lcnIoXCYjMzQ7ZmFpbGVkIHRvIGFsbG9jIHR4IGlycVxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy01NTktXHRcdGdvdG8gb3V0X2Vycjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy01NjEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzo1NjI6XHRyZXQgPSByZXF1ZXN0X2lycSh3Y24tXHUwMDNlcnhfaXJxLCB3Y24zNnh4X2lycV9yeF9yZWFkeSwgSVJRRl9UUklHR0VSX0hJR0gsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzo1NjM6XHRcdFx0ICBcJiMzNDt3Y24zNnh4X3J4XCYjMzQ7LCB3Y24pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNTY0LVx0aWYgKHJldCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6NTY1Olx0XHR3Y24zNnh4X2VycihcJiMzNDtmYWlsZWQgdG8gYWxsb2MgcnggaXJxXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTU2Ni1cdFx0Z290byBvdXRfdHhpcnE7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNTc5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6NTgwOnN0YXRpYyBpbnQgd2NuMzZ4eF9yeF9oYW5kbGVfcGFja2V0cyhzdHJ1Y3Qgd2NuMzZ4eCAqd2NuLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6NTgxOlx0XHRcdFx0ICAgICBzdHJ1Y3Qgd2NuMzZ4eF9keGVfY2ggKmNoLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNTgyLVx0XHRcdFx0ICAgICB1MzIgY3RybCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy01ODYte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6NTg3Olx0c3RydWN0IHdjbjM2eHhfZHhlX2Rlc2MgKmR4ZTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjU4ODpcdHN0cnVjdCB3Y24zNnh4X2R4ZV9jdGwgKmN0bDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTU4OS1cdGRtYV9hZGRyX3QgIGRtYV9hZGRyO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTU5My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjU5NDpcdHdjbjM2eHhfZHhlX3JlYWRfcmVnaXN0ZXIod2NuLCBzdGF0dXNfcmVnLCBcdTAwMjZpbnRfcmVhc29uKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjU5NTpcdHdjbjM2eHhfZHhlX3dyaXRlX3JlZ2lzdGVyKHdjbiwgV0NOMzZYWF9EWEVfMF9JTlRfQ0xSLCBpbnRfbWFzayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy01OTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy01OTctXHRpZiAoaW50X3JlYXNvbiBcdTAwMjYgV0NOMzZYWF9DSF9TVEFUX0lOVF9FUlJfTUFTSykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6NTk4Olx0XHR3Y24zNnh4X2R4ZV93cml0ZV9yZWdpc3Rlcih3Y24sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy01OTktXHRcdFx0XHRcdCAgIFdDTjM2WFhfRFhFXzBfSU5UX0VSUl9DTFIsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNjAxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6NjAyOlx0XHR3Y24zNnh4X2VycihcJiMzNDtEWEUgSVJRIHJlcG9ydGVkIGVycm9yIG9uIFJYIGNoYW5uZWxcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNjAzLVx0fVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTYwNS1cdGlmIChpbnRfcmVhc29uIFx1MDAyNiBXQ04zNlhYX0NIX1NUQVRfSU5UX0RPTkVfTUFTSylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjYwNjpcdFx0d2NuMzZ4eF9keGVfd3JpdGVfcmVnaXN0ZXIod2NuLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNjA3LVx0XHRcdFx0XHQgICBXQ04zNlhYX0RYRV8wX0lOVF9ET05FX0NMUixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy02MTAtXHRpZiAoaW50X3JlYXNvbiBcdTAwMjYgV0NOMzZYWF9DSF9TVEFUX0lOVF9FRF9NQVNLKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6NjExOlx0XHR3Y24zNnh4X2R4ZV93cml0ZV9yZWdpc3Rlcih3Y24sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy02MTItXHRcdFx0XHRcdCAgIFdDTjM2WFhfRFhFXzBfSU5UX0VEX0NMUixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy02MzAtXHRcdGRtYV9hZGRyID0gZHhlLVx1MDAzZWRzdF9hZGRyX2w7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzo2MzE6XHRcdHJldCA9IHdjbjM2eHhfZHhlX2ZpbGxfc2tiKHdjbi1cdTAwM2VkZXYsIGN0bCwgR0ZQX0FUT01JQyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy02MzItXHRcdGlmICgwID09IHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTYzNy1cdFx0XHRcdFx0RE1BX0ZST01fREVWSUNFKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjYzODpcdFx0XHR3Y24zNnh4X3J4X3NrYih3Y24sIHNrYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy02MzktXHRcdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy02NTAtXHR9XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzo2NTE6XHR3Y24zNnh4X2R4ZV93cml0ZV9yZWdpc3Rlcih3Y24sIFdDTjM2WFhfRFhFX0VOQ0hfQUREUiwgZW5fbWFzayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy02NTItXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNjU5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6NjYwOnZvaWQgd2NuMzZ4eF9keGVfcnhfZnJhbWUoc3RydWN0IHdjbjM2eHggKndjbilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTY2MS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNjYzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6NjY0Olx0d2NuMzZ4eF9keGVfcmVhZF9yZWdpc3Rlcih3Y24sIFdDTjM2WFhfRFhFX0lOVF9TUkNfUkFXX1JFRywgXHUwMDI2aW50X3NyYyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy02NjUtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNjY3LVx0aWYgKGludF9zcmMgXHUwMDI2IFdDTjM2WFhfRFhFX0lOVF9DSDFfTUFTSylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjY2ODpcdFx0d2NuMzZ4eF9yeF9oYW5kbGVfcGFja2V0cyh3Y24sIFx1MDAyNndjbi1cdTAwM2VkeGVfcnhfbF9jaCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTY2OS1cdFx0XHRcdFx0ICBXQ04zNlhYX0RYRV9DVFJMX1JYX0wsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNjc1LVx0aWYgKGludF9zcmMgXHUwMDI2IFdDTjM2WFhfRFhFX0lOVF9DSDNfTUFTSylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjY3NjpcdFx0d2NuMzZ4eF9yeF9oYW5kbGVfcGFja2V0cyh3Y24sIFx1MDAyNndjbi1cdTAwM2VkeGVfcnhfaF9jaCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTY3Ny1cdFx0XHRcdFx0ICBXQ04zNlhYX0RYRV9DVFJMX1JYX0gsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNjgyLVx0aWYgKCFpbnRfc3JjKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6NjgzOlx0XHR3Y24zNnh4X3dhcm4oXCYjMzQ7Tm8gRFhFIGludGVycnVwdCBwZW5kaW5nXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTY4NC19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy02ODUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzo2ODY6aW50IHdjbjM2eHhfZHhlX2FsbG9jYXRlX21lbV9wb29scyhzdHJ1Y3Qgd2NuMzZ4eCAqd2NuKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNjg3LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy03MjMtb3V0X2VycjpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjcyNDpcdHdjbjM2eHhfZHhlX2ZyZWVfbWVtX3Bvb2xzKHdjbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzo3MjU6XHR3Y24zNnh4X2VycihcJiMzNDtGYWlsZWQgdG8gYWxsb2NhdGUgQkQgbWVtcG9vbFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy03MjYtXHRyZXR1cm4gLUVOT01FTTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy03MjgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzo3Mjk6dm9pZCB3Y24zNnh4X2R4ZV9mcmVlX21lbV9wb29scyhzdHJ1Y3Qgd2NuMzZ4eCAqd2NuKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNzMwLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy03NDQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzo3NDU6aW50IHdjbjM2eHhfZHhlX3R4X2ZyYW1lKHN0cnVjdCB3Y24zNnh4ICp3Y24sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzo3NDY6XHRcdFx0IHN0cnVjdCB3Y24zNnh4X3ZpZiAqdmlmX3ByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzo3NDc6XHRcdFx0IHN0cnVjdCB3Y24zNnh4X3R4X2JkICpiZCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTc0OC1cdFx0XHQgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy03NTAte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6NzUxOlx0c3RydWN0IHdjbjM2eHhfZHhlX2Rlc2MgKmRlc2NfYmQsICpkZXNjX3NrYjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjc1MjpcdHN0cnVjdCB3Y24zNnh4X2R4ZV9jdGwgKmN0bF9iZCwgKmN0bF9za2I7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzo3NTM6XHRzdHJ1Y3Qgd2NuMzZ4eF9keGVfY2ggKmNoID0gTlVMTDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTc1NC1cdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNzc1LVx0aWYgKHVubGlrZWx5KGN0bF9za2ItXHUwMDNlYmRfY3B1X2FkZHIpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzo3NzY6XHRcdHdjbjM2eHhfZXJyKFwmIzM0O2JkX2NwdV9hZGRyIGNhbm5vdCBiZSBOVUxMIGZvciBza2IgRFhFXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTc3Ny1cdFx0cmV0ID0gLUVJTlZBTDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy03OTEtXHRkZXNjX2JkLVx1MDAzZWRzdF9hZGRyX2wgPSBjaC1cdTAwM2VkeGVfd3E7XG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAwMjo0MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODgxMAoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqSW52ZXN0aWdhdGluZyBXQ04zNlhYIEtjb25maWcgYW5kIEJ1cyBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkgbmVlZCB0byBxdWlja2x5IGdldCBhIGhhbmRsZSBvbiB0aGUgV0NOMzZYWCBkcml2ZXImIzM5O3MgY29uZmlndXJhdGlvbiB3aXRoaW4gdGhlIGtlcm5lbC4gTXkgaW1tZWRpYXRlIGZvY3VzIGlzIG9uIGl0cyBLY29uZmlnIGVudHJpZXMuIFNwZWNpZmljYWxseSwgSSB3YW50IHRvIHBpbnBvaW50IHdoZXJlIHRoZSBXQ04zNlhYIGlzIGRlZmluZWQgYW5kIGhvdyBpdHMgYnVzIHR5cGUgaXMgc3BlY2lmaWVkLiBUaGlzIGlzIHdoZXJlIEkgY2FuIHN0YXJ0IHVuZGVyc3RhbmRpbmcgaXRzIGRlcGVuZGVuY2llcyBhbmQgaW5zdGFudGlhdGlvbiBwcm9jZWR1cmUuIEtub3dpbmcgdGhlIHVuZGVybHlpbmcgYnVzIOKAkyBTUEksIFNESU8sIFBDSWUsIGV0Yy4g4oCTIHdpbGwgYmUgY3J1Y2lhbCBmb3IgZGVidWdnaW5nIGFueSBpc3N1ZXMgb3Igb3B0aW1pemluZyBpdHMgaW50ZWdyYXRpb24uIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIGNvbmZpZ3VyYXRpb24gc3ltYm9scywgbGlrZWx5IGBDT05GSUdfV0NOMzZYWGAgYW5kIHBvdGVudGlhbGx5IHJlbGF0ZWQgYnVzLXNwZWNpZmljIG9wdGlvbnMgbGlrZSBgQ09ORklHX1dDTjM2WFhfU1BJYCBvciB0aGUgbGlrZSwgdG8gdW5kZXJzdGFuZCB0aGUgYnVpbGQtdGltZSBvcHRpb25zIGFuZCBob3cgdG8gZW5hYmxlL2Rpc2FibGUgdGhpcyBmZWF0dXJlLiBXaXRoIHRoYXQgaW5mb3JtYXRpb24gaW4gaGFuZCwgSSBjYW4gdGhlbiBkaXZlIGRlZXBlciBpbnRvIHRoZSBkcml2ZXIgY29kZSBpZiBuZWVkIGJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDAyOjQxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IElTQ1xuICAgMjpcdGNvbmZpZyBXQ04zNlhYXG4gICAzOlx0XHR0cmlzdGF0ZSBcJiMzNDtRdWFsY29tbSBBdGhlcm9zIFdDTjM2NjAvMzY4MCBzdXBwb3J0XCYjMzQ7XG4gICA0Olx0XHRkZXBlbmRzIG9uIE1BQzgwMjExIFx1MDAyNlx1MDAyNiBIQVNfRE1BXG4gICA1Olx0XHRkZXBlbmRzIG9uIFFDT01fV0NOU1NfQ1RSTCB8fCBRQ09NX1dDTlNTX0NUUkw9blxuICAgNjpcdFx0ZGVwZW5kcyBvbiBSUE1TRyB8fCBSUE1TRz1uXG4gICA3Olx0XHRoZWxwXG4gICA4Olx0XHQgIFRoaXMgbW9kdWxlIGFkZHMgc3VwcG9ydCBmb3Igd2lyZWxlc3MgYWRhcHRlcnMgYmFzZWQgb25cbiAgIDk6XHRcdCAgUXVhbGNvbW0gQXRoZXJvcyBXQ04zNjYwIGFuZCBXQ04zNjgwIG1vYmlsZSBjaGlwc2V0cy5cbiAgMTA6XHRcbiAgMTE6XHRcdCAgSWYgeW91IGNob29zZSB0byBidWlsZCBhIG1vZHVsZSwgaXQmIzM5O2xsIGJlIGNhbGxlZCB3Y24zNnh4LlxuICAxMjpcdFxuICAxMzpcdGNvbmZpZyBXQ04zNlhYX0RFQlVHRlNcbiAgMTQ6XHRcdGJvb2wgXCYjMzQ7V0NOMzZYWCBkZWJ1Z2ZzIHN1cHBvcnRcJiMzNDtcbiAgMTU6XHRcdGRlcGVuZHMgb24gV0NOMzZYWFxuICAxNjpcdFx0aGVscFxuICAxNzpcdFx0ICBFbmFibGVkIGRlYnVnZnMgc3VwcG9ydFxuICAxODpcdFxuICAxOTpcdFx0ICBJZiB1bnN1cmUsIHNheSBZIHRvIG1ha2UgaXQgZWFzaWVyIHRvIGRlYnVnIHByb2JsZW1zLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDAyOjQxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5Mzc0CgkJCQkJCQlvdXRwdXQ6IDUwCgkJCQkJCQl0aG91Z2h0czogNDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBmcm9tIGFuIGV4cGVydCYjMzk7cyBwZXJzcGVjdGl2ZToKCioqRGl2aW5nIGludG8gdGhlIFdDTjM2WFggRHJpdmVyIEluaXRpYWxpemF0aW9uKioKCkFscmlnaHQsIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBXQ04zNlhYIGRyaXZlciBpcyBpbml0aWFsaXplZCwgd2hhdCBoYXJkd2FyZSBpdCYjMzk7cyBkZXNpZ25lZCB0byBpbnRlcmZhY2Ugd2l0aCwgYW5kIGhvdyBpdCYjMzk7cyBhdHRhY2hpbmcgdG8gdGhlIHN5c3RlbS4gVGhlIGJlc3QgcGxhY2UgdG8gc3RhcnQgaXMgYWx3YXlzIHRoZSBjb3JlLiBMZXQmIzM5O3MgbG9vayBhdCBgbWFpbi5jYCB3aXRoaW4gdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9gIGRpcmVjdG9yeS4gVGhhdCYjMzk7cyB1c3VhbGx5IHdoZXJlIHRoZSBoZWFydCBvZiB0aGUgcHJvYmUgZnVuY3Rpb24gbGllcyDigJMgdGhlIGVudHJ5IHBvaW50IHdoZXJlIHRoZSBkcml2ZXIgZGV0ZXJtaW5lcyBkZXZpY2UgcHJlc2VuY2UsIGNvbmZpZ3VyYXRpb24sIGFuZCBob3cgaXQgYmluZHMgdG8gdGhlIGJ1cy4gSSBleHBlY3QgdG8gZmluZCB0aGUgc3RhbmRhcmQgYG1vZHVsZV9pbml0YCBhbmQgYG1vZHVsZV9leGl0YCBtYWNyb3MsIHdoaWNoIHdpbGwgZGVmaW5lIHRoZSBwcm9iZSBhbmQgcmVtb3ZlIGZ1bmN0aW9ucy4gSSYjMzk7bGwgYmUgbG9va2luZyBzcGVjaWZpY2FsbHkgYXQgdGhlIHByb2JlIGZ1bmN0aW9uIHRvIHVuZGVyc3RhbmQgd2hpY2ggZGV2aWNlIElEcyBpdCBzdXBwb3J0cyBhbmQsIG1vcmUgYnJvYWRseSwgd2hpY2ggYnVzIHR5cGVzIGl0JiMzOTtzIHByZXBhcmVkIHRvIGhhbmRsZSDigJMgUENJZSwgU0RJTywgVVNCLCBldGMuIEtub3dpbmcgdGhlIGF0dGFjaG1lbnQgbWV0aG9kIGlzIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBkZXZpY2UmIzM5O3MgY2FwYWJpbGl0aWVzIGFuZCBjb25zdHJhaW50cy4gVGhpcyBpbmZvcm1hdGlvbiB3aWxsIGluZm9ybSBteSBuZXh0IHN0ZXBzIGluIGFzc2Vzc2luZyBpdHMgb3ZlcmFsbCBhcmNoaXRlY3R1cmUgYW5kIHBlcmZvcm1hbmNlIGNoYXJhY3RlcmlzdGljcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAwMjo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttb2R1bGVfcGxhdGZvcm1fZHJpdmVyfG1vZHVsZV9pbml0fGRyaXZlcl9yZWdpc3RlcnxwbGF0Zm9ybV9kcml2ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM9MTY3ND1NT0RVTEVfREVWSUNFX1RBQkxFKG9mLCB3Y24zNnh4X29mX21hdGNoKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0xNjc1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjE2NzY6c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgd2NuMzZ4eF9kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtMTY3Ny1cdC5wcm9iZSA9IHdjbjM2eHhfcHJvYmUsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTE2ODQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6MTY4NTptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKHdjbjM2eHhfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0xNjg2LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDAyOjQxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5OTYxCgkJCQkJCQlvdXRwdXQ6IDQ3CgkJCQkJCQl0aG91Z2h0czogMzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYW5hbHlzaXMgb2YgdGhlIHByb3ZpZGVkIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gd2NuMzZ4eF9wcm9iZSoqCgpPa2F5LCBzbyB0aGUgbWVudGFsIHRocmVhZCBzdGFydHMgd2l0aCBgd2NuMzZ4eF9wcm9iZWAgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uY2AuIENsZWFybHksIHdlJiMzOTtyZSBhdCB0aGUgZGV2aWNlIHByb2JlIHN0YWdlIGZvciB0aGUgV0NOMzZ4eCB3aXJlbGVzcyBjaGlwc2V0IHdpdGhpbiB0aGUgQXRoZXJvcyBmYW1pbHkgb2YgZHJpdmVycy4gVGhpcyBzdWdnZXN0cyB3ZSYjMzk7cmUgdHJvdWJsZXNob290aW5nIGFuIGluaXRpYWxpemF0aW9uIGlzc3VlLCBleGFtaW5pbmcgdGhlIGRldmljZSByZWdpc3RyYXRpb24sIG9yIHBvdGVudGlhbGx5IGxvb2tpbmcgaW50byBwb3dlciBtYW5hZ2VtZW50IHNlcXVlbmNlcyB0aWVkIHRvIHRoZSBpbml0aWFsIGJyaW5nLXVwLgoKTXkgaW5pdGlhbCBhc3N1bXB0aW9uIGlzIHRoYXQgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBvbmUgb2Ygc2V2ZXJhbCBwb3NzaWJsZSBwcm9ibGVtczogZWl0aGVyIGEgZ2VuZXJhbCBwcm9iZSBmYWlsdXJlLCBhIHJlc291cmNlIGFsbG9jYXRpb24gZXJyb3IsIGEgaGFyZHdhcmUgZGV0ZWN0aW9uIGlzc3VlLCBvciBwZXJoYXBzIHNvbWUgY29uZmlndXJhdGlvbiBpbmNvbXBhdGliaWxpdHkuIFdlJiMzOTtyZSB6ZXJvaW5nIGluIG9uIHRoaXMgZnVuY3Rpb24gYmVjYXVzZSBpdCYjMzk7cyB0aGUgZW50cnkgcG9pbnQgaW50byB0aGUgZHJpdmVyJiMzOTtzIGludGVyYWN0aW9uIHdpdGggdGhlIGRldmljZSBkdXJpbmcgaXRzIGVudW1lcmF0aW9uLiBUaW1lIHRvIGRpZyBpbiBhbmQgc2VlIHdoYXQmIzM5O3MgaGFwcGVuaW5nLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBjbHVlcyBvbiByZXNvdXJjZSBjb25mbGljdHMsIGRldmljZS1zcGVjaWZpYyBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZXMsIGFuZCBlcnJvciBoYW5kbGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMDI6NDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNTYwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxNTYwOlx0XHRzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodztcbjE1NjE6XHRcdHN0cnVjdCB3Y24zNnh4ICp3Y247XG4xNTYyOlx0XHR2b2lkICp3Y25zcztcbjE1NjM6XHRcdGludCByZXQ7XG4xNTY0Olx0XHRjb25zdCB1OCAqYWRkcjtcbjE1NjU6XHRcdGludCBuX2NoYW5uZWxzO1xuMTU2NjpcdFxuMTU2NzpcdFx0d2NuMzZ4eF9kYmcoV0NOMzZYWF9EQkdfTUFDLCBcJiMzNDtwbGF0Zm9ybSBwcm9iZVxcblwmIzM0Oyk7XG4xNTY4Olx0XG4xNTY5Olx0XHR3Y25zcyA9IGRldl9nZXRfZHJ2ZGF0YShwZGV2LVx1MDAzZWRldi5wYXJlbnQpO1xuMTU3MDpcdFxuMTU3MTpcdFx0bl9jaGFubmVscyA9IHdjbl9iYW5kXzJnaHoubl9jaGFubmVscyAmIzQzOyB3Y25fYmFuZF81Z2h6Lm5fY2hhbm5lbHM7XG4xNTcyOlx0XHRodyA9IGllZWU4MDIxMV9hbGxvY19odyhzdHJ1Y3Rfc2l6ZSh3Y24sIGNoYW5fc3VydmV5LCBuX2NoYW5uZWxzKSwgXHUwMDI2d2NuMzZ4eF9vcHMpO1xuMTU3MzpcdFx0aWYgKCFodykge1xuMTU3NDpcdFx0XHR3Y24zNnh4X2VycihcJiMzNDtmYWlsZWQgdG8gYWxsb2MgaHdcXG5cJiMzNDspO1xuMTU3NTpcdFx0XHRyZXQgPSAtRU5PTUVNO1xuMTU3NjpcdFx0XHRnb3RvIG91dF9lcnI7XG4xNTc3Olx0XHR9XG4xNTc4Olx0XHRwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCBodyk7XG4xNTc5Olx0XHR3Y24gPSBody1cdTAwM2Vwcml2O1xuMTU4MDpcdFx0d2NuLVx1MDAzZWh3ID0gaHc7XG4xNTgxOlx0XHR3Y24tXHUwMDNlZGV2ID0gXHUwMDI2cGRldi1cdTAwM2VkZXY7XG4xNTgyOlx0XHR3Y24tXHUwMDNlZmlyc3RfYm9vdCA9IHRydWU7XG4xNTgzOlx0XHRtdXRleF9pbml0KFx1MDAyNndjbi1cdTAwM2Vjb25mX211dGV4KTtcbjE1ODQ6XHRcdG11dGV4X2luaXQoXHUwMDI2d2NuLVx1MDAzZWhhbF9tdXRleCk7XG4xNTg1Olx0XHRtdXRleF9pbml0KFx1MDAyNndjbi1cdTAwM2VzY2FuX2xvY2spO1xuMTU4NjpcdFx0X19za2JfcXVldWVfaGVhZF9pbml0KFx1MDAyNndjbi1cdTAwM2VhbXNkdSk7XG4xNTg3Olx0XG4xNTg4Olx0XHR3Y24tXHUwMDNlaGFsX2J1ZiA9IGRldm1fa21hbGxvYyh3Y24tXHUwMDNlZGV2LCBXQ04zNlhYX0hBTF9CVUZfU0laRSwgR0ZQX0tFUk5FTCk7XG4xNTg5Olx0XHRpZiAoIXdjbi1cdTAwM2VoYWxfYnVmKSB7XG4xNTkwOlx0XHRcdHJldCA9IC1FTk9NRU07XG4xNTkxOlx0XHRcdGdvdG8gb3V0X3dxO1xuMTU5MjpcdFx0fVxuMTU5MzpcdFxuMTU5NDpcdFx0cmV0ID0gZG1hX3NldF9tYXNrX2FuZF9jb2hlcmVudCh3Y24tXHUwMDNlZGV2LCBETUFfQklUX01BU0soMzIpKTtcbjE1OTU6XHRcdGlmIChyZXQgXHUwMDNjIDApIHtcbjE1OTY6XHRcdFx0d2NuMzZ4eF9lcnIoXCYjMzQ7ZmFpbGVkIHRvIHNldCBETUEgbWFzazogJWRcXG5cJiMzNDssIHJldCk7XG4xNTk3Olx0XHRcdGdvdG8gb3V0X3dxO1xuMTU5ODpcdFx0fVxuMTU5OTpcdFxuMTYwMDpcdFx0d2NuLVx1MDAzZW52X2ZpbGUgPSBXTEFOX05WX0ZJTEU7XG4xNjAxOlx0XHRyZXQgPSBvZl9wcm9wZXJ0eV9yZWFkX3N0cmluZyh3Y24tXHUwMDNlZGV2LVx1MDAzZXBhcmVudC1cdTAwM2VvZl9ub2RlLCBcJiMzNDtmaXJtd2FyZS1uYW1lXCYjMzQ7LCBcdTAwMjZ3Y24tXHUwMDNlbnZfZmlsZSk7XG4xNjAyOlx0XHRpZiAocmV0IFx1MDAzYyAwIFx1MDAyNlx1MDAyNiByZXQgIT0gLUVJTlZBTCkge1xuMTYwMzpcdFx0XHR3Y24zNnh4X2VycihcJiMzNDtmYWlsZWQgdG8gcmVhZCBcXFwmIzM0O2Zpcm13YXJlLW5hbWVcXFwmIzM0OyBwcm9wZXJ0eTogJWRcXG5cJiMzNDssIHJldCk7XG4xNjA0Olx0XHRcdGdvdG8gb3V0X3dxO1xuMTYwNTpcdFx0fVxuMTYwNjpcdFxuMTYwNzpcdFx0d2NuLVx1MDAzZXNtZF9jaGFubmVsID0gcWNvbV93Y25zc19vcGVuX2NoYW5uZWwod2Nuc3MsIFwmIzM0O1dMQU5fQ1RSTFwmIzM0Oywgd2NuMzZ4eF9zbWRfcnNwX3Byb2Nlc3MsIGh3KTtcbjE2MDg6XHRcdGlmIChJU19FUlIod2NuLVx1MDAzZXNtZF9jaGFubmVsKSkge1xuMTYwOTpcdFx0XHR3Y24zNnh4X2VycihcJiMzNDtmYWlsZWQgdG8gb3BlbiBXTEFOX0NUUkwgY2hhbm5lbFxcblwmIzM0Oyk7XG4xNjEwOlx0XHRcdHJldCA9IFBUUl9FUlIod2NuLVx1MDAzZXNtZF9jaGFubmVsKTtcbjE2MTE6XHRcdFx0Z290byBvdXRfd3E7XG4xNjEyOlx0XHR9XG4xNjEzOlx0XG4xNjE0Olx0XHRhZGRyID0gb2ZfZ2V0X3Byb3BlcnR5KHBkZXYtXHUwMDNlZGV2Lm9mX25vZGUsIFwmIzM0O2xvY2FsLW1hYy1hZGRyZXNzXCYjMzQ7LCBcdTAwMjZyZXQpO1xuMTYxNTpcdFx0aWYgKGFkZHIgXHUwMDI2XHUwMDI2IHJldCAhPSBFVEhfQUxFTikge1xuMTYxNjpcdFx0XHR3Y24zNnh4X2VycihcJiMzNDtpbnZhbGlkIGxvY2FsLW1hYy1hZGRyZXNzXFxuXCYjMzQ7KTtcbjE2MTc6XHRcdFx0cmV0ID0gLUVJTlZBTDtcbjE2MTg6XHRcdFx0Z290byBvdXRfZGVzdHJveV9lcHQ7XG4xNjE5Olx0XHR9IGVsc2UgaWYgKGFkZHIpIHtcbjE2MjA6XHRcdFx0d2NuMzZ4eF9pbmZvKFwmIzM0O21hYyBhZGRyZXNzOiAlcE1cXG5cJiMzNDssIGFkZHIpO1xuMTYyMTpcdFx0XHRTRVRfSUVFRTgwMjExX1BFUk1fQUREUih3Y24tXHUwMDNlaHcsIGFkZHIpO1xuMTYyMjpcdFx0fVxuMTYyMzpcdFxuMTYyNDpcdFx0cmV0ID0gd2NuMzZ4eF9wbGF0Zm9ybV9nZXRfcmVzb3VyY2VzKHdjbiwgcGRldik7XG4xNjI1Olx0XHRpZiAocmV0KVxuMTYyNjpcdFx0XHRnb3RvIG91dF9kZXN0cm95X2VwdDtcbjE2Mjc6XHRcbjE2Mjg6XHRcdHdjbjM2eHhfaW5pdF9pZWVlODAyMTEod2NuKTtcbjE2Mjk6XHRcdHJldCA9IGllZWU4MDIxMV9yZWdpc3Rlcl9odyh3Y24tXHUwMDNlaHcpO1xuMTYzMDpcdFx0aWYgKHJldClcbjE2MzE6XHRcdFx0Z290byBvdXRfdW5tYXA7XG4xNjMyOlx0XG4xNjMzOlx0XHRyZXR1cm4gMDtcbjE2MzQ6XHRcbjE2MzU6XHRvdXRfdW5tYXA6XG4xNjM2Olx0XHRpb3VubWFwKHdjbi1cdTAwM2VjY3VfYmFzZSk7XG4xNjM3Olx0XHRpb3VubWFwKHdjbi1cdTAwM2VkeGVfYmFzZSk7XG4xNjM4Olx0b3V0X2Rlc3Ryb3lfZXB0OlxuMTYzOTpcdFx0cnBtc2dfZGVzdHJveV9lcHQod2NuLVx1MDAzZXNtZF9jaGFubmVsKTtcbjE2NDA6XHRvdXRfd3E6XG4xNjQxOlx0XHRpZWVlODAyMTFfZnJlZV9odyhodyk7XG4xNjQyOlx0b3V0X2VycjpcbjE2NDM6XHRcdHJldHVybiByZXQ7XG4xNjQ0Olx0fVxuMTY0NTpcdFxuMTY0NjpcdHN0YXRpYyB2b2lkIHdjbjM2eHhfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4xNjQ3Olx0e1xuMTY0ODpcdFx0c3RydWN0IGllZWU4MDIxMV9odyAqaHcgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTtcbjE2NDk6XHRcdHN0cnVjdCB3Y24zNnh4ICp3Y24gPSBody1cdTAwM2Vwcml2O1xuMTY1MDpcdFx0d2NuMzZ4eF9kYmcoV0NOMzZYWF9EQkdfTUFDLCBcJiMzNDtwbGF0Zm9ybSByZW1vdmVcXG5cJiMzNDspO1xuMTY1MTpcdFxuMTY1MjpcdFx0cmVsZWFzZV9maXJtd2FyZSh3Y24tXHUwMDNlbnYpO1xuMTY1MzpcdFxuMTY1NDpcdFx0aWVlZTgwMjExX3VucmVnaXN0ZXJfaHcoaHcpO1xuMTY1NTpcdFxuMTY1NjpcdFx0cWNvbV9zbWVtX3N0YXRlX3B1dCh3Y24tXHUwMDNldHhfZW5hYmxlX3N0YXRlKTtcbjE2NTc6XHRcdHFjb21fc21lbV9zdGF0ZV9wdXQod2NuLVx1MDAzZXR4X3JpbmdzX2VtcHR5X3N0YXRlKTtcbjE2NTg6XHRcbjE2NTk6XHRcdHJwbXNnX2Rlc3Ryb3lfZXB0KHdjbi1cdTAwM2VzbWRfY2hhbm5lbCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDAyOjQxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyMDA2CgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgdGhlIENhbGwgU2l0ZXMgb2YgYHdjbjM2eHhfZHhlX2RlaW5pdGAqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW4uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBmdWxsIGxpZmVjeWNsZSBvZiB0aGlzIGB3Y24zNnh4X2R4ZV9kZWluaXRgIGZ1bmN0aW9uLiBUaGUgaW1tZWRpYXRlIHF1ZXN0aW9uIGluIG15IG1pbmQgaXM6IHdoZXJlIGRvZXMgaXQgZ2V0IGNhbGxlZD8gSSB3YW50IGEgY29tcGxldGUgbWFwIG9mIGFsbCBpdHMgY2FsbCBzaXRlcy4gS25vd2luZyB0aGlzIHdpbGwgZ2l2ZSBtZSBjcml0aWNhbCBpbnNpZ2h0cyBpbnRvIGhvdyB0aGUgZHJpdmVyIGlzIGJlaW5nIHNodXQgZG93biwgd2hhdCBkZXBlbmRlbmNpZXMgaXQgaGFzIG9uIG90aGVyIGNvbXBvbmVudHMsIGFuZCB1bHRpbWF0ZWx5LCB3aGVyZSBwb3RlbnRpYWwgaXNzdWVzIG9yIHJhY2UgY29uZGl0aW9ucyBtaWdodCBiZSBsdXJraW5nLiBUaW1lIHRvIHN0YXJ0IHRyYWNpbmcgdGhlIGV4ZWN1dGlvbiBmbG93IGFuZCBtYXAgaXQgYWxsIG91dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMDI6NDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7d2NuMzZ4eF9keGVfZGVpbml0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM9MTY4PXN0YXRpYyBpbnQgd2NuMzZ4eF9keGVfaW5pdF9kZXNjcyhzdHJ1Y3Qgd2NuMzZ4eCAqd2NuLCBzdHJ1Y3Qgd2NuMzZ4eF9keGVfY2ggKndjbl9jaClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy0yMjctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzoyMjg6c3RhdGljIHZvaWQgd2NuMzZ4eF9keGVfZGVpbml0X2Rlc2NzKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IHdjbjM2eHhfZHhlX2NoICp3Y25fY2gpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy0yMjkte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jPTkwMD1pbnQgd2NuMzZ4eF9keGVfaW5pdChzdHJ1Y3Qgd2NuMzZ4eCAqd2NuKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTEwMzQtb3V0X2Vycl9pcnE6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzoxMDM1Olx0d2NuMzZ4eF9keGVfZGVpbml0X2Rlc2NzKHdjbi1cdTAwM2VkZXYsIFx1MDAyNndjbi1cdTAwM2VkeGVfcnhfaF9jaCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy0xMDM2LW91dF9lcnJfcnhoX2NoOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6MTAzNzpcdHdjbjM2eHhfZHhlX2RlaW5pdF9kZXNjcyh3Y24tXHUwMDNlZGV2LCBcdTAwMjZ3Y24tXHUwMDNlZHhlX3J4X2xfY2gpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtMTAzOC1vdXRfZXJyX3J4bF9jaDpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjEwMzk6XHR3Y24zNnh4X2R4ZV9kZWluaXRfZGVzY3Mod2NuLVx1MDAzZWRldiwgXHUwMDI2d2NuLVx1MDAzZWR4ZV90eF9oX2NoKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTEwNDAtb3V0X2Vycl90eGhfY2g6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzoxMDQxOlx0d2NuMzZ4eF9keGVfZGVpbml0X2Rlc2NzKHdjbi1cdTAwM2VkZXYsIFx1MDAyNndjbi1cdTAwM2VkeGVfdHhfbF9jaCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy0xMDQyLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTEwNDUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzoxMDQ2OnZvaWQgd2NuMzZ4eF9keGVfZGVpbml0KHN0cnVjdCB3Y24zNnh4ICp3Y24pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy0xMDQ3LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy0xMDcxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6MTA3MjpcdHdjbjM2eHhfZHhlX2RlaW5pdF9kZXNjcyh3Y24tXHUwMDNlZGV2LCBcdTAwMjZ3Y24tXHUwMDNlZHhlX3R4X2xfY2gpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6MTA3MzpcdHdjbjM2eHhfZHhlX2RlaW5pdF9kZXNjcyh3Y24tXHUwMDNlZGV2LCBcdTAwMjZ3Y24tXHUwMDNlZHhlX3R4X2hfY2gpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6MTA3NDpcdHdjbjM2eHhfZHhlX2RlaW5pdF9kZXNjcyh3Y24tXHUwMDNlZGV2LCBcdTAwMjZ3Y24tXHUwMDNlZHhlX3J4X2xfY2gpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6MTA3NTpcdHdjbjM2eHhfZHhlX2RlaW5pdF9kZXNjcyh3Y24tXHUwMDNlZGV2LCBcdTAwMjZ3Y24tXHUwMDNlZHhlX3J4X2hfY2gpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtMTA3Ni19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmg9NDYxPWludCB3Y24zNnh4X2R4ZV9pbml0KHN0cnVjdCB3Y24zNnh4ICp3Y24pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmg6NDYyOnZvaWQgd2NuMzZ4eF9keGVfZGVpbml0KHN0cnVjdCB3Y24zNnh4ICp3Y24pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmgtNDYzLWludCB3Y24zNnh4X2R4ZV9pbml0X2NoYW5uZWxzKHN0cnVjdCB3Y24zNnh4ICp3Y24pO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYz0yODE9c3RhdGljIHZvaWQgd2NuMzZ4eF9zdG9wKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBib29sIHN1c3BlbmQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTI5OS1cdHdjbjM2eHhfc21kX3N0b3Aod2NuKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzozMDA6XHR3Y24zNnh4X2R4ZV9kZWluaXQod2NuKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0zMDEtXHR3Y24zNnh4X3NtZF9jbG9zZSh3Y24pO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAwMjo0MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzU1NAoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDM0MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBXQ04zNnh4IERyaXZlcioqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgYHdjbjM2eHhgLi4uIHJpZ2h0LCB0aGF0JiMzOTtzIHRoZSBkcml2ZXIgZm9yIHRoZSBRdWFsY29tbSBBdGhlcm9zIFdDTjM2NjAgb3IgV0NOMzY4MCBtb2JpbGUgd2lyZWxlc3MgaGFyZHdhcmUuIE15IGltbWVkaWF0ZSBxdWVzdGlvbiBpcyBhbHdheXMsIGhvdyBpcyB0aGlzIHRoaW5nIGhvb2tlZCB1cD8gQWgsIGl0JiMzOTtzIGEgcGxhdGZvcm0gZHJpdmVyIHRoYXQgbGl2ZXMgb24gdGhvc2UgUXVhbGNvbW0gU29DcywgdXNpbmcgYHFjb21fd2Nuc3NgLCB3aGljaCBtZWFucyBpdCBkZXBlbmRzIG9uIFF1YWxjb21tJiMzOTtzIFNNRC9SUE1TRyBzdHVmZiBhbmQgdGhlIFNvQyBoYXJkd2FyZSBpdHNlbGYg4oCTIHRoZSBzdHVmZiBiYWtlZCBpbnRvIHRob3NlIE1TTS9TbmFwZHJhZ29uIHBsYXRmb3JtcyBsaWtlIHRoZSBNU004OTYwIG9yIE1TTTg5NzQuCgpOb3csIGEgY3JpdGljYWwgcXVlc3Rpb24gZm9yIG1lLCBjYW4gSSBldmVuICp0ZXN0KiB0aGlzIHRoaW5nPyBDYW4gaXQgYmUgcHJvYmVkIG9yIGVtdWxhdGVkIGluIGEgc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBHb29nbGUgQ29tcHV0ZSBFbmdpbmUgb3IgUUVNVT8gSSBuZWVkIHRvIHRoaW5rIHRoaXMgdGhyb3VnaC4gTGV0IG1lIHF1aWNrbHkgcmVmZXJlbmNlIHNlY3Rpb24gMiBvZiBteSB0cmlhZ2UgcGhpbG9zb3BoeS4gKlN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZS4uLiogYW5kICpVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHMuLi4qIEkgbmVlZCB0byBzZWUgaWYgaXQgbWVldHMgdGhvc2UgY3JpdGVyaWEuCgpPa2F5LCBteSB0YXJnZXQgYXJjaGl0ZWN0dXJlIGlzIGFtZDY0LiBCdXQgaXNuJiMzOTt0IHRoaXMgUXVhbGNvbW0gV0NOMzZ4eCBhbiBBUk0tYmFzZWQgU29DIHBsYXRmb3JtIGRldmljZT8gVGhlIFF1YWxjb21tIFNuYXBkcmFnb24gaXMgYW4gQVJNIHBlcmlwaGVyYWwuIEhtbS4uLiBzbywgaXMgaXQgYW4gQVJNIGRldmljZSBleGNsdXNpdmVseSwgb3IgY2FuIGl0IHBvc3NpYmx5IGV4aXN0IG9uIGFtZDY0PyBJIG5lZWQgdG8gY29uZmlybSB0aGlzLiBJIHdpbGwgY2hlY2sgdGhlIGBvZl9tYXRjaF90YWJsZWAgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uY2AgdG8gY2xhcmlmeSB0aGF0IGhhcmR3YXJlIGNvbmZpZ3VyYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDAyOjQyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTY2MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxNjYwOlx0XG4xNjYxOlx0XHRpb3VubWFwKHdjbi1cdTAwM2VkeGVfYmFzZSk7XG4xNjYyOlx0XHRpb3VubWFwKHdjbi1cdTAwM2VjY3VfYmFzZSk7XG4xNjYzOlx0XG4xNjY0Olx0XHRfX3NrYl9xdWV1ZV9wdXJnZShcdTAwMjZ3Y24tXHUwMDNlYW1zZHUpO1xuMTY2NTpcdFxuMTY2NjpcdFx0bXV0ZXhfZGVzdHJveShcdTAwMjZ3Y24tXHUwMDNlaGFsX211dGV4KTtcbjE2Njc6XHRcdGllZWU4MDIxMV9mcmVlX2h3KGh3KTtcbjE2Njg6XHR9XG4xNjY5Olx0XG4xNjcwOlx0c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgd2NuMzZ4eF9vZl9tYXRjaFtdID0ge1xuMTY3MTpcdFx0eyAuY29tcGF0aWJsZSA9IFwmIzM0O3Fjb20sd2Nuc3Mtd2xhblwmIzM0OyB9LFxuMTY3MjpcdFx0e31cbjE2NzM6XHR9O1xuMTY3NDpcdE1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHdjbjM2eHhfb2ZfbWF0Y2gpO1xuMTY3NTpcdFxuMTY3NjpcdHN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIHdjbjM2eHhfZHJpdmVyID0ge1xuMTY3NzpcdFx0LnByb2JlID0gd2NuMzZ4eF9wcm9iZSxcbjE2Nzg6XHRcdC5yZW1vdmUgPSB3Y24zNnh4X3JlbW92ZSxcbjE2Nzk6XHRcdC5kcml2ZXIgPSB7XG4xNjgwOlx0XHRcdC5uYW1lID0gXCYjMzQ7d2NuMzZ4eFwmIzM0OyxcbjE2ODE6XHRcdFx0Lm9mX21hdGNoX3RhYmxlID0gd2NuMzZ4eF9vZl9tYXRjaCxcbjE2ODI6XHRcdH0sXG4xNjgzOlx0fTtcbjE2ODQ6XHRcbjE2ODU6XHRtb2R1bGVfcGxhdGZvcm1fZHJpdmVyKHdjbjM2eHhfZHJpdmVyKTtcbjE2ODY6XHRcbjE2ODc6XHRNT0RVTEVfREVTQ1JJUFRJT04oXCYjMzQ7UXVhbGNvbW0gQXRoZXJvcyBXQ04zNjYwLzM2ODAgd2lyZWxlc3MgZHJpdmVyXCYjMzQ7KTtcbjE2ODg6XHRNT0RVTEVfTElDRU5TRShcJiMzNDtEdWFsIEJTRC9HUExcJiMzNDspO1xuMTY4OTpcdE1PRFVMRV9BVVRIT1IoXCYjMzQ7RXVnZW5lIEtyYXNuaWtvdiBrLmV1Z2VuZS5lQGdtYWlsLmNvbVwmIzM0Oyk7XG4xNjkwOlx0TU9EVUxFX0ZJUk1XQVJFKFdMQU5fTlZfRklMRSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDAyOjQyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI0NzY4CgkJCQkJCQlvdXRwdXQ6IDExNQoJCQkJCQkJdGhvdWdodHM6IDY1NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBGdXp6aW5nIFdvcnRoaW5lc3Mgb2YgYHdjbjM2eHhgKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGFuYWx5c2lzIG9mIGB3Y24zNnh4X29mX21hdGNoYCBjbGVhcmx5IHNob3dzIHRoaXMgaXMgYSBwbGF0Zm9ybSBkcml2ZXIsIHNwZWNpZmljYWxseSBkZXNpZ25lZCBmb3IgUXVhbGNvbW0mIzM5O3MgV0NOU1Mgc3Vic3lzdGVtIHZpYSBPcGVuIEZpcm13YXJlIChEZXZpY2UgVHJlZSkgb24gUXVhbGNvbW0gQVJNIFNvQ3MuIFRoZSBrZXkgZ2l2ZWF3YXkgaXMgdGhlIGBjb21wYXRpYmxlID0gJiMzNDtxY29tLHdjbnNzLXdsYW4mIzM0O2AgbWF0Y2guIFRoaXMgaXMgYSB0ZWxsdGFsZSBzaWduIG9mIGEgdmVyeSBzcGVjaWZpYyBoYXJkd2FyZSBkZXBlbmRlbmN5LiBUaGVyZSYjMzk7cyBubyBQQ0kgSUQsIFVTQiBJRCwgb3IgQUNQSSBtYXRjaCwgc28gaXQmIzM5O3MgYWxsIGFib3V0IHRoYXQgRGV2aWNlIFRyZWUuCgpUaGUgY3J1Y2lhbCBwb2ludCBpcyB0aGF0IGluIHN0YW5kYXJkIGFtZDY0IGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLCB3aGljaCBJJiMzOTttIGFzc3VtaW5nIGFyZSBvdXIgcHJpbWFyeSB0ZXN0aW5nIGdyb3VuZHMsIHRoZXJlIGlzICpubyogRGV2aWNlIFRyZWUgd2l0aCBhIGBxY29tLHdjbnNzLXdsYW5gIGRldmljZS4gVGhlcmUmIzM5O3Mgbm8gUXVhbGNvbW0gV0NOU1MgUlBNU0cgaGFyZHdhcmUgcHJlc2VudC4gVGhlcmVmb3JlLCB0aGlzIGRyaXZlciwgYnkgaXRzIHZlcnkgbmF0dXJlLCAqY2Fubm90KiBwcm9iZSBvciBpbml0aWFsaXplIGluIHRob3NlIGVudmlyb25tZW50cy4gVGhpcyBpcyBmdXJ0aGVyIGNvbmZpcm1lZCBiZWNhdXNlIHRoZSBtb2RpZmllZCBmdW5jdGlvbiBgd2NuMzZ4eF9keGVfZGVpbml0YCBpcyBsb2NhdGVkIGluIGBkeGUuY2AgYW5kIGlzIG9ubHkgZXZlciByZWFjaGVkIHZpYSBgd2NuMzZ4eF9zdG9wYCwgd2hpY2ggaXRzZWxmIHJlcXVpcmVzIHRoZSBkcml2ZXIgdG8gYmUgc3VjY2Vzc2Z1bGx5IHByb2JlZCBhbmQgc3RhcnRlZC4KClRvIGJlIGFic29sdXRlbHkgc3VyZSwgbGV0JiMzOTtzIGNvbmZpcm0gdGhlIG5lZ2F0aXZlcy4gRmlyc3QsIHRoZSBoYXJkd2FyZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGU6IGl0JiMzOTtzIGEgUXVhbGNvbW0gV0NOMzY2MC8zNjgwIFNvQyBwbGF0Zm9ybSBkcml2ZXIgZGVwZW5kZW50IG9uIGEgV0NOU1Mgc3Vic3lzdGVtLCB3aGljaCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSAvIEdDRS4gU2Vjb25kLCB0aGUgYXJjaGl0ZWN0dXJlIGlzIHdyb25nOyBpdCYjMzk7cyBhIFF1YWxjb21tIHBsYXRmb3JtIGRldmljZSBtZWFudCBmb3IgQVJNIFNvQ3MsIGFuZCB0aGUgdGFyZ2V0IGlzIGFtZDY0LiBUaGF0JiMzOTtzIGEgZG91YmxlIHdoYW1teSBmb3IgcmVhY2hhYmlsaXR5LgoKU28sIGluIGNvbmNsdXNpb24sIGBXb3J0aEZ1enppbmdgIGlzIHVuZXF1aXZvY2FsbHkgYGZhbHNlYCBoZXJlLgoKVG8gZG91YmxlLWNoZWNrIHRoZSBkZXRhaWxzLCBJIHJldmlld2VkIHRoZSBjaGFuZ2UsIHdoaWNoIGludm9sdmVzIHRoZSByZXBsYWNlbWVudCBvZiBgdGltZXJfZGVsZXRlYCB3aXRoIGB0aW1lcl9zaHV0ZG93bl9zeW5jYCBvbiBgd2NuLSZndDt0eF9hY2tfdGltZXJgIGluIGB3Y24zNnh4X2R4ZV9kZWluaXQoKWAuIFRoZSBsb2NhdGlvbiBpcyBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmNgLiBJdCYjMzk7cyBhIFF1YWxjb21tIEF0aGVyb3MgV0NOMzY2MC8zNjgwIHdpcmVsZXNzIGRyaXZlciwgYW5kIGl0IGlzIGFuIE9GIHBsYXRmb3JtIGRyaXZlciBmb3IgUXVhbGNvbW0gV0NOU1MuIENvbnNpZGVyaW5nIHRoZSBhcmNoaXRlY3R1cmUgYW5kIHJlYWNoYWJpbGl0eSwgaXQgaXMgdW5yZWFjaGFibGUgaW4gc3RhbmRhcmQgeDg2L2FtZDY0IHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpIGJlY2F1c2UgdGhlIGhhcmR3YXJlL0RldmljZSBUcmVlIHBsYXRmb3JtIGRldmljZSBpcyBub3QgcHJlc2VudC4KClRoZXJlZm9yZSwgdGhlIGZpbmFsIGFuc3dlciBpczoKCi0gICAqKldvcnRoRnV6emluZzogZmFsc2UqKgotICAgKipGb2N1c1N5bWJvbHM6IFxbIF0qKgotICAgKipFbmFibGVDb25maWdzOiBcWyBdKioKLSAgICoqUmVhc29uaW5nOiB3Y24zNnh4IGlzIGEgUXVhbGNvbW0gU29DIHBsYXRmb3JtIGRyaXZlciAobWF0Y2hpbmcgT0YgY29tcGF0aWJsZSAmIzM0O3Fjb20sd2Nuc3Mtd2xhbiYjMzQ7KSByZXF1aXJpbmcgUXVhbGNvbW0gV0NOU1MgaGFyZHdhcmUsIHdoaWNoIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCB4ODYvYW1kNjQgdGVzdCBlbnZpcm9ubWVudHMuKioKClRpbWUgdG8gYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMDI6NDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBtb2RpZmllZCBjb2RlIGlzIGluIHRoZSBRdWFsY29tbSBBdGhlcm9zIFdDTjM2NjAvMzY4MCB3aXJlbGVzcyBkcml2ZXIgKHdjbjM2eHgpLCB3aGljaCBpcyBhbiBPRiBwbGF0Zm9ybSBkcml2ZXIgZm9yIFF1YWxjb21tIFNvQ3MgcmVxdWlyaW5nIFF1YWxjb21tIFdDTlNTL1JQTVNHIGhhcmR3YXJlLiBJdCBjYW5ub3QgYmUgcHJvYmVkIG9yIGV4ZWN1dGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoc3VjaCBhcyBRRU1VIG9yIEdDRSBvbiBhbWQ2NCksIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBtb2RpZmllZCBjb2RlIGlzIGluIHRoZSBRdWFsY29tbSBBdGhlcm9zIFdDTjM2NjAvMzY4MCB3aXJlbGVzcyBkcml2ZXIgKHdjbjM2eHgpLCB3aGljaCBpcyBhbiBPRiBwbGF0Zm9ybSBkcml2ZXIgZm9yIFF1YWxjb21tIFNvQ3MgcmVxdWlyaW5nIFF1YWxjb21tIFdDTlNTL1JQTVNHIGhhcmR3YXJlLiBJdCBjYW5ub3QgYmUgcHJvYmVkIG9yIGV4ZWN1dGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoc3VjaCBhcyBRRU1VIG9yIEdDRSBvbiBhbWQ2NCksIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAwMjo0MjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMTBUMDI6NDE6MzQuMTM2MTM4Njg2WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzYwODYwNTQ3MzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBtb2RpZmllZCBjb2RlIGlzIGluIHRoZSBRdWFsY29tbSBBdGhlcm9zIFdDTjM2NjAvMzY4MCB3aXJlbGVzcyBkcml2ZXIgKHdjbjM2eHgpLCB3aGljaCBpcyBhbiBPRiBwbGF0Zm9ybSBkcml2ZXIgZm9yIFF1YWxjb21tIFNvQ3MgcmVxdWlyaW5nIFF1YWxjb21tIFdDTlNTL1JQTVNHIGhhcmR3YXJlLiBJdCBjYW5ub3QgYmUgcHJvYmVkIG9yIGV4ZWN1dGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoc3VjaCBhcyBRRU1VIG9yIEdDRSBvbiBhbWQ2NCksIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQwMjo0MTozNC4xMzYxNDQxNTZaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4OTk5NzM5MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDM4YzQ4OGFlMmVkNDhlODc5NjlkODU2Yzk3ZGYzNmVjMmM1NzEwNjNcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFRodSBTZXAgMTAgMDI6NDE6MzMgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuY1xcbmluZGV4IDQ0MDIwZWMyNjVmYjYuLjgwMWYxMjE4ZWY4OWIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuY1xcbkBAIC0xMDU1LDcgKzEwNTUsNyBAQCB2b2lkIHdjbjM2eHhfZHhlX2RlaW5pdChzdHJ1Y3Qgd2NuMzZ4eCAqd2NuKVxcbiBcXG4gXFx0ZnJlZV9pcnEod2NuLVxcdTAwM2V0eF9pcnEsIHdjbik7XFxuIFxcdGZyZWVfaXJxKHdjbi1cXHUwMDNlcnhfaXJxLCB3Y24pO1xcbi1cXHR0aW1lcl9kZWxldGUoXFx1MDAyNndjbi1cXHUwMDNldHhfYWNrX3RpbWVyKTtcXG4rXFx0dGltZXJfc2h1dGRvd25fc3luYyhcXHUwMDI2d2NuLVxcdTAwM2V0eF9hY2tfdGltZXIpO1xcbiBcXG4gXFx0aWYgKHdjbi1cXHUwMDNldHhfYWNrX3NrYikge1xcbiBcXHRcXHRpZWVlODAyMTFfdHhfc3RhdHVzX2lycXNhZmUod2NuLVxcdTAwM2Vodywgd2NuLVxcdTAwM2V0eF9hY2tfc2tiKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMDI6NDE6MzQuNjI2Nzk4NDk5WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjozNTU5NTM1MDk3MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgbW9kaWZpZWQgY29kZSBpcyBpbiB0aGUgUXVhbGNvbW0gQXRoZXJvcyBXQ04zNjYwLzM2ODAgd2lyZWxlc3MgZHJpdmVyICh3Y24zNnh4KSwgd2hpY2ggaXMgYW4gT0YgcGxhdGZvcm0gZHJpdmVyIGZvciBRdWFsY29tbSBTb0NzIHJlcXVpcmluZyBRdWFsY29tbSBXQ05TUy9SUE1TRyBoYXJkd2FyZS4gSXQgY2Fubm90IGJlIHByb2JlZCBvciBleGVjdXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKHN1Y2ggYXMgUUVNVSBvciBHQ0Ugb24gYW1kNjQpLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzc1xudG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5UaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLFxuYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy5cblxuLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURTpcbiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZFxuICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLlxuICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsXG4gIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy5cblxuLSBETyBOT1QgQkxJTkRMWSBUUlVTVCBcIk5PIEZVTkNUSU9OQUwgQ0hBTkdFXCIgKE5GQ0kpIE9SIFwiUkVGQUNUT1JJTkdcIiBDTEFJTVM6XG4gIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgXCJjbGVhbnVwc1wiLCBcInJlZmFjdG9yaW5nc1wiLCBvciBzdGF0ZVxuICBcIk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkXCIuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLlxuICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnRcbiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuXG4gIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuXG5cbi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6XG4gIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKixcbiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuXG4gIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXJcbiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOlxuXG4tIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6XG4gICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLlxuICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKVxuICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cbiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50c1xuICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuXG4gICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLlxuLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6XG4gICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczpcbiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmdcbiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy5cbiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4zLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzpcbi0gQ29yZSBTdWJzeXN0ZW1zOlxuICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSxcbiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuXG4tIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczpcbiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuXG4tIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczpcbiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuXG4tIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6XG4gICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6XG5cbi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOlxuICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1c1xuICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdFxuICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS5cbiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzIFwiZm9jdXNlZFwiLFxuICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuXG5cbi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOlxuICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHNcbiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuXG5cbi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOlxuICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrXG4gIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLlxuICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXJcbiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlnc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6XG4tIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4tIENoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuXG4tIFN0cmlwIGFueSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAzOGM0ODhhZTJlZDQ4ZTg3OTY5ZDg1NmM5N2RmMzZlYzJjNTcxMDYzXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBTZXAgMTAgMDI6NDE6MzMgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jXG5pbmRleCA0NDAyMGVjMjY1ZmI2Li44MDFmMTIxOGVmODliIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jXG5AQCAtMTA1NSw3ICsxMDU1LDcgQEAgdm9pZCB3Y24zNnh4X2R4ZV9kZWluaXQoc3RydWN0IHdjbjM2eHggKndjbilcbiBcbiBcdGZyZWVfaXJxKHdjbi1cdTAwM2V0eF9pcnEsIHdjbik7XG4gXHRmcmVlX2lycSh3Y24tXHUwMDNlcnhfaXJxLCB3Y24pO1xuLVx0dGltZXJfZGVsZXRlKFx1MDAyNndjbi1cdTAwM2V0eF9hY2tfdGltZXIpO1xuK1x0dGltZXJfc2h1dGRvd25fc3luYyhcdTAwMjZ3Y24tXHUwMDNldHhfYWNrX3RpbWVyKTtcbiBcbiBcdGlmICh3Y24tXHUwMDNldHhfYWNrX3NrYikge1xuIFx0XHRpZWVlODAyMTFfdHhfc3RhdHVzX2lycXNhZmUod2NuLVx1MDAzZWh3LCB3Y24tXHUwMDNldHhfYWNrX3NrYik7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQwMjo0MTozNC42MjY4MDAxNjlaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo4OTA1MDUzODE4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUGF0Y2g6IEEgRGVlcCBEaXZlKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSBuZWVkIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2Ygd2hhdCB0aGlzIHBhdGNoIGlzIGRvaW5nLiBUaGUgYGRpZmZgIHNob3dzIGEgY2hhbmdlIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuY2AuIFJpZ2h0IGF3YXksIEkga25vdyB0byBmb2N1cyBvbiB0aGlzIGFyZWEg4oCTIGl0J3MgYSBkcml2ZXIgZmlsZSwgd2hpY2ggaXMgdXN1YWxseSB0aGUgaGVhcnQgb2YgdGhlIGludGVyYWN0aW9uIGJldHdlZW4gdGhlIGtlcm5lbCBhbmQgdGhlIGhhcmR3YXJlLiBJIGNhbiBzZWUgdGhlIGNoYW5nZSBpcyBpbiBob3cgdGhlIGRyaXZlciBoYW5kbGVzIHNvbWUgZm9ybSBvZiB0aW1lci4gU3BlY2lmaWNhbGx5LCB0aGUgbGluZSBgdGltZXJfZGVsZXRlYCBpcyBub3cgYHRpbWVyX3NodXRkb3duX3N5bmNgLiBUaGF04oCZcyBhIHNpZ25pZmljYW50IGRpZmZlcmVuY2UuIFVzaW5nIGB0aW1lcl9zaHV0ZG93bl9zeW5jYCBzdWdnZXN0cyBhIG1vcmUgcm9idXN0IGFuZCBwb3NzaWJseSBzYWZlciB3YXkgdG8gc2h1dCBkb3duIHRoZSB0aW1lciwgZW5zdXJpbmcgYWxsIHBlbmRpbmcgd29yayBpcyBjb21wbGV0ZWQgYmVmb3JlIGRlLWluaXRpYWxpemluZy4gVGhpcyBpbmRpY2F0ZXMgdGhleSdyZSBhZGRyZXNzaW5nIGEgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9uIG9yIGNsZWFudXAgaXNzdWUgZHVyaW5nIG1vZHVsZSB1bmxvYWQgb3IgZHJpdmVyIGRlLWluaXRpYWxpemF0aW9uLlxuXG5Ob3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0LiBUaGUgYHdjbjM2eHhgIG5hbWluZyBpcyBmYW1pbGlhci4gQWgsIHJpZ2h0LCBRdWFsY29tbSBBdGhlcm9zIFdDTjM2NjAvMzY4MC4gVGhhdCBuYXJyb3dzIHRoZSBmb2N1cyBjb25zaWRlcmFibHkuIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGVzZSBkZXZpY2VzIGFuZCB0aGUgYXNzb2NpYXRlZCBkZXNpZ24gYW5kIGhhcmR3YXJlIGFyY2hpdGVjdHVyZS4gSSdsbCBuZWVkIHRvIGNoZWNrIHRoZSBzdXJyb3VuZGluZyBjb2RlIGFuZCBLY29uZmlnIGZpbGVzIGZvciBhbnkgZGVwZW5kZW5jaWVzIG9yIGhhcmR3YXJlLXNwZWNpZmljIGNvbmZpZ3VyYXRpb25zLiBVbmRlcnN0YW5kaW5nIHRoZSBoYXJkd2FyZSdzIGludHJpY2FjaWVzIGlzIGNydWNpYWwgdG8gZnVsbHkgYXBwcmVjaWF0aW5nIHRoZSBpbXBsaWNhdGlvbiBvZiB0aGlzIGNoYW5nZS4gSXMgdGhpcyBhIGNvbW1vbiBtb2R1bGUsIG9yIGlzIGl0IHZlcnkgaGFyZHdhcmUtc3BlY2lmaWM/IEknbGwgY2hlY2sgaXRzIGxvY2F0aW9uIGluIHRoZSBkcml2ZXIgc3RydWN0dXJlIHRvIGZpbmQgb3V0LiBUaGlzIGxpa2VseSBhZmZlY3RzIGEgc3BlY2lmaWMgc2V0IG9mIHdpcmVsZXNzIGFkYXB0ZXJzLCBhbmQgSSBtdXN0IGFzc2VzcyB3aGV0aGVyIHRoaXMgaXMgcmVsZXZhbnQgdG8gdGhlIHN5c3RlbXMgSSB3b3JrIG9uLiBJIHNob3VsZCBhbHNvIGludmVzdGlnYXRlIG90aGVyIHJlbGF0ZWQgZmlsZXMgdG8gZW5zdXJlIHRoaXMgY2hhbmdlIGRvZXNu4oCZdCBpbnRyb2R1Y2UgYW55IHJlZ3Jlc3Npb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTUwLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mzg4LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMDI6NDE6NDMuNTMxODYwMTQ3WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5NDU0NTkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIndjbjM2eHhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA1MzY5IGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9LY29uZmlnPTI9Y29uZmlnIFdDTjM2WFhcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L0tjb25maWctMTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvS2NvbmZpZzoxMTpcXHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgYSBtb2R1bGUsIGl0J2xsIGJlIGNhbGxlZCB3Y24zNnh4LlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L0tjb25maWctMTItXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9NYWtlZmlsZS0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IElTQ1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L01ha2VmaWxlOjI6b2JqLSQoQ09ORklHX1dDTjM2WFgpIDo9IHdjbjM2eHgub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L01ha2VmaWxlOjM6d2NuMzZ4eC15ICs9ICAgbWFpbi5vIFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9NYWtlZmlsZS00LSAgICAgICAgICAgICAgIGR4ZS5vIFxcXFxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L01ha2VmaWxlLTEwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L01ha2VmaWxlOjExOndjbjM2eHgtJChDT05GSUdfTkw4MDIxMV9URVNUTU9ERSkgKz0gdGVzdG1vZGUub1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuYy0yMC0jaW5jbHVkZSBcXHUwMDNjbGludXgvdWFjY2Vzcy5oXFx1MDAzZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2RlYnVnLmM6MjE6I2luY2x1ZGUgXFxcIndjbjM2eHguaFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5jLTIyLSNpbmNsdWRlIFxcXCJkZWJ1Zy5oXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuYz0yOD1zdGF0aWMgc3NpemVfdCByZWFkX2ZpbGVfYm9vbF9ibXBzKHN0cnVjdCBmaWxlICpmaWxlLCBjaGFyIF9fdXNlciAqdXNlcl9idWYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5jLTMwLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5jOjMxOlxcdHN0cnVjdCB3Y24zNnh4ICp3Y24gPSBmaWxlLVxcdTAwM2Vwcml2YXRlX2RhdGE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuYzozMjpcXHRzdHJ1Y3Qgd2NuMzZ4eF92aWYgKnZpZl9wcml2ID0gTlVMTDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5jLTMzLVxcdHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYgPSBOVUxMO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuYy0zNi1cXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KHZpZl9wcml2LCBcXHUwMDI2d2NuLVxcdTAwM2V2aWZfbGlzdCwgbGlzdCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2RlYnVnLmM6Mzc6XFx0XFx0XFx0dmlmID0gd2NuMzZ4eF9wcml2X3RvX3ZpZih2aWZfcHJpdik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuYy0zOC1cXHRcXHRcXHRpZiAoTkw4MDIxMV9JRlRZUEVfU1RBVElPTiA9PSB2aWYtXFx1MDAzZXR5cGUpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2RlYnVnLmM9NTI9c3RhdGljIHNzaXplX3Qgd3JpdGVfZmlsZV9ib29sX2JtcHMoc3RydWN0IGZpbGUgKmZpbGUsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5jLTU1LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5jOjU2OlxcdHN0cnVjdCB3Y24zNnh4ICp3Y24gPSBmaWxlLVxcdTAwM2Vwcml2YXRlX2RhdGE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuYzo1NzpcXHRzdHJ1Y3Qgd2NuMzZ4eF92aWYgKnZpZl9wcml2ID0gTlVMTDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5jLTU4LVxcdHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYgPSBOVUxMO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuYy03MS1cXHRcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KHZpZl9wcml2LCBcXHUwMDI2d2NuLVxcdTAwM2V2aWZfbGlzdCwgbGlzdCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2RlYnVnLmM6NzI6XFx0XFx0XFx0dmlmID0gd2NuMzZ4eF9wcml2X3RvX3ZpZih2aWZfcHJpdik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuYy03My1cXHRcXHRcXHRpZiAoTkw4MDIxMV9JRlRZUEVfU1RBVElPTiA9PSB2aWYtXFx1MDAzZXR5cGUpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5jOjc0OlxcdFxcdFxcdFxcdHdjbjM2eHhfZW5hYmxlX2tlZXBfYWxpdmVfbnVsbF9wYWNrZXQod2NuLCB2aWYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2RlYnVnLmM6NzU6XFx0XFx0XFx0XFx0d2NuMzZ4eF9wbWNfZW50ZXJfYm1wc19zdGF0ZSh3Y24sIHZpZik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuYy03Ni1cXHRcXHRcXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5jLTgyLVxcdFxcdGxpc3RfZm9yX2VhY2hfZW50cnkodmlmX3ByaXYsIFxcdTAwMjZ3Y24tXFx1MDAzZXZpZl9saXN0LCBsaXN0KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuYzo4MzpcXHRcXHRcXHR2aWYgPSB3Y24zNnh4X3ByaXZfdG9fdmlmKHZpZl9wcml2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5jLTg0LVxcdFxcdFxcdGlmIChOTDgwMjExX0lGVFlQRV9TVEFUSU9OID09IHZpZi1cXHUwMDNldHlwZSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5jOjg1OlxcdFxcdFxcdFxcdHdjbjM2eHhfcG1jX2V4aXRfYm1wc19zdGF0ZSh3Y24sIHZpZik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuYy04Ni1cXHRcXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5jLTkyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2RlYnVnLmM6OTM6c3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZm9wc193Y24zNnh4X2JtcHMgPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuYy05NC1cXHQub3BlbiA9IHNpbXBsZV9vcGVuLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuYz05OT1zdGF0aWMgc3NpemVfdCB3cml0ZV9maWxlX2R1bXAoc3RydWN0IGZpbGUgKmZpbGUsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5jLTEwMi17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuYzoxMDM6XFx0c3RydWN0IHdjbjM2eHggKndjbiA9IGZpbGUtXFx1MDAzZXByaXZhdGVfZGF0YTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5jLTEwNC1cXHRjaGFyIGJ1ZlsyNTVdLCAqdG1wO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuYy0xMjctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuYzoxMjg6XFx0d2NuMzZ4eF9pbmZvKFxcXCJEVU1QIGFyZ3MgaXMgJWQgJWQgJWQgJWQgJWRcXFxcblxcXCIsIGFyZ1swXSwgYXJnWzFdLCBhcmdbMl0sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuYy0xMjktXFx0XFx0ICAgICBhcmdbM10sIGFyZ1s0XSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuYzoxMzA6XFx0d2NuMzZ4eF9zbWRfZHVtcF9jbWRfcmVxKHdjbiwgYXJnWzBdLCBhcmdbMV0sIGFyZ1syXSwgYXJnWzNdLCBhcmdbNF0pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2RlYnVnLmMtMTMxLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuYy0xMzQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuYzoxMzU6c3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZm9wc193Y24zNnh4X2R1bXAgPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuYy0xMzYtXFx0Lm9wZW4gPSBzaW1wbGVfb3BlbixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2RlYnVnLmM9MTQwPXN0YXRpYyBzc2l6ZV90IHJlYWRfZmlsZV9maXJtd2FyZV9mZWF0dXJlX2NhcHMoc3RydWN0IGZpbGUgKmZpbGUsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5jLTE0My17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuYzoxNDQ6XFx0c3RydWN0IHdjbjM2eHggKndjbiA9IGZpbGUtXFx1MDAzZXByaXZhdGVfZGF0YTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5jLTE0NS1cXHRzaXplX3QgbGVuID0gMCwgYnVmX2xlbiA9IDIwNDg7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5jLTE1NS1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgTUFYX0ZFQVRVUkVfU1VQUE9SVEVEOyBpKyspIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5jOjE1NjpcXHRcXHRpZiAod2NuMzZ4eF9maXJtd2FyZV9nZXRfZmVhdF9jYXBzKHdjbi1cXHUwMDNlZndfZmVhdF9jYXBzLCBpKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2RlYnVnLmMtMTU3LVxcdFxcdFxcdGxlbiArPSBzY25wcmludGYoYnVmICsgbGVuLCBidWZfbGVuIC0gbGVuLCBcXFwiJXNcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuYzoxNTg6XFx0XFx0XFx0XFx0XFx0IHdjbjM2eHhfZmlybXdhcmVfZ2V0X2NhcF9uYW1lKGkpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5jLTE1OS1cXHRcXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5jLTE3MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5jOjE3MTpzdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBmb3BzX3djbjM2eHhfZmlybXdhcmVfZmVhdF9jYXBzID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2RlYnVnLmMtMTcyLVxcdC5vcGVuID0gc2ltcGxlX29wZW4sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5jLTE4My1cXHRcXHRpZiAoSVNfRVJSKGQpKSB7XFx0XFx0XFx0XFx0XFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2RlYnVnLmM6MTg0OlxcdFxcdFxcdHdjbjM2eHhfd2FybihcXFwiQ3JlYXRlIHRoZSBkZWJ1Z2ZzIGVudHJ5IGZhaWxlZFxcXCIpO1xcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5jLTE4NS1cXHRcXHRcXHRkZnMtXFx1MDAzZWZpbGVfIyNuYW1lLmRlbnRyeSA9IE5VTEw7XFx0XFx0XFxcXFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuYy0xODktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuYzoxOTA6dm9pZCB3Y24zNnh4X2RlYnVnZnNfaW5pdChzdHJ1Y3Qgd2NuMzZ4eCAqd2NuKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2RlYnVnLmMtMTkxLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5jOjE5MjpcXHRzdHJ1Y3Qgd2NuMzZ4eF9kZnNfZW50cnkgKmRmcyA9IFxcdTAwMjZ3Y24tXFx1MDAzZWRmcztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5jLTE5My1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2RlYnVnLmMtMTk2LVxcdGlmIChJU19FUlIoZGZzLVxcdTAwM2Vyb290ZGlyKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2RlYnVnLmM6MTk3OlxcdFxcdHdjbjM2eHhfd2FybihcXFwiQ3JlYXRlIHRoZSBkZWJ1Z2ZzIGZhaWxlZFxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuYy0xOTgtXFx0XFx0ZGZzLVxcdTAwM2Vyb290ZGlyID0gTlVMTDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2RlYnVnLmMtMjAwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2RlYnVnLmM6MjAxOlxcdEFERF9GSUxFKGJtcHNfc3dpdGNoZXIsIDA2MDAsIFxcdTAwMjZmb3BzX3djbjM2eHhfYm1wcywgd2NuKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5jOjIwMjpcXHRBRERfRklMRShkdW1wLCAwMjAwLCBcXHUwMDI2Zm9wc193Y24zNnh4X2R1bXAsIHdjbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuYy0yMDMtXFx0QUREX0ZJTEUoZmlybXdhcmVfZmVhdF9jYXBzLCAwMjAwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2RlYnVnLmM6MjA0OlxcdFxcdCBcXHUwMDI2Zm9wc193Y24zNnh4X2Zpcm13YXJlX2ZlYXRfY2Fwcywgd2NuKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5jLTIwNS19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuYy0yMDYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuYzoyMDc6dm9pZCB3Y24zNnh4X2RlYnVnZnNfZXhpdChzdHJ1Y3Qgd2NuMzZ4eCAqd2NuKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2RlYnVnLmMtMjA4LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5jOjIwOTpcXHRzdHJ1Y3Qgd2NuMzZ4eF9kZnNfZW50cnkgKmRmcyA9IFxcdTAwMjZ3Y24tXFx1MDAzZWRmcztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5jLTIxMC1cXHRkZWJ1Z2ZzX3JlbW92ZV9yZWN1cnNpdmUoZGZzLVxcdTAwM2Vyb290ZGlyKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2RlYnVnLmgtMjQtI2lmZGVmIENPTkZJR19XQ04zNlhYX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5oOjI1OnN0cnVjdCB3Y24zNnh4X2Rmc19maWxlIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5oLTI2LVxcdHN0cnVjdCBkZW50cnkgKmRlbnRyeTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2RlYnVnLmgtMjktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuaDozMDpzdHJ1Y3Qgd2NuMzZ4eF9kZnNfZW50cnkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2RlYnVnLmgtMzEtXFx0c3RydWN0IGRlbnRyeSAqcm9vdGRpcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5oOjMyOlxcdHN0cnVjdCB3Y24zNnh4X2Rmc19maWxlIGZpbGVfYm1wc19zd2l0Y2hlcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5oOjMzOlxcdHN0cnVjdCB3Y24zNnh4X2Rmc19maWxlIGZpbGVfZHVtcDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5oOjM0OlxcdHN0cnVjdCB3Y24zNnh4X2Rmc19maWxlIGZpbGVfZmlybXdhcmVfZmVhdF9jYXBzO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2RlYnVnLmgtMzUtfTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5oLTM2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2RlYnVnLmg6Mzc6dm9pZCB3Y24zNnh4X2RlYnVnZnNfaW5pdChzdHJ1Y3Qgd2NuMzZ4eCAqd2NuKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5oOjM4OnZvaWQgd2NuMzZ4eF9kZWJ1Z2ZzX2V4aXQoc3RydWN0IHdjbjM2eHggKndjbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuaC0zOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5oLTQwLSNlbHNlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuaDo0MTpzdGF0aWMgaW5saW5lIHZvaWQgd2NuMzZ4eF9kZWJ1Z2ZzX2luaXQoc3RydWN0IHdjbjM2eHggKndjbilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5oLTQyLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5oLTQzLX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5oOjQ0OnN0YXRpYyBpbmxpbmUgdm9pZCB3Y24zNnh4X2RlYnVnZnNfZXhpdChzdHJ1Y3Qgd2NuMzZ4eCAqd2NuKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2RlYnVnLmgtNDUte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtMjYtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3NvYy9xY29tL3NtZW1fc3RhdGUuaFxcdTAwM2VcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzoyNzojaW5jbHVkZSBcXFwid2NuMzZ4eC5oXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTI4LSNpbmNsdWRlIFxcXCJ0eHJ4LmhcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtMjktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6MzA6c3RhdGljIHZvaWQgd2NuMzZ4eF9jY3Vfd3JpdGVfcmVnaXN0ZXIoc3RydWN0IHdjbjM2eHggKndjbiwgaW50IGFkZHIsIGludCBkYXRhKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTMxLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzozMjpcXHR3Y24zNnh4X2RiZyhXQ04zNlhYX0RCR19EWEUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6MzM6XFx0XFx0ICAgIFxcXCJ3Y24zNnh4X2NjdV93cml0ZV9yZWdpc3RlcjogYWRkcj0leCwgZGF0YT0leFxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy0zNC1cXHRcXHQgICAgYWRkciwgZGF0YSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy0zOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzozOTpzdGF0aWMgdm9pZCB3Y24zNnh4X2R4ZV93cml0ZV9yZWdpc3RlcihzdHJ1Y3Qgd2NuMzZ4eCAqd2NuLCBpbnQgYWRkciwgaW50IGRhdGEpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNDAte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjQxOlxcdHdjbjM2eHhfZGJnKFdDTjM2WFhfREJHX0RYRSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzo0MjpcXHRcXHQgICAgXFxcIndjbjM2eHhfZHhlX3dyaXRlX3JlZ2lzdGVyOiBhZGRyPSV4LCBkYXRhPSV4XFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTQzLVxcdFxcdCAgICBhZGRyLCBkYXRhKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTQ3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjQ4OnN0YXRpYyB2b2lkIHdjbjM2eHhfZHhlX3JlYWRfcmVnaXN0ZXIoc3RydWN0IHdjbjM2eHggKndjbiwgaW50IGFkZHIsIGludCAqZGF0YSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy00OS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy01MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzo1MjpcXHR3Y24zNnh4X2RiZyhXQ04zNlhYX0RCR19EWEUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6NTM6XFx0XFx0ICAgIFxcXCJ3Y24zNnh4X2R4ZV9yZWFkX3JlZ2lzdGVyOiBhZGRyPSV4LCBkYXRhPSV4XFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTU0LVxcdFxcdCAgICBhZGRyLCAqZGF0YSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy01Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzo1NzpzdGF0aWMgdm9pZCB3Y24zNnh4X2R4ZV9mcmVlX2N0bF9ibG9jayhzdHJ1Y3Qgd2NuMzZ4eF9keGVfY2ggKmNoKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTU4LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzo1OTpcXHRzdHJ1Y3Qgd2NuMzZ4eF9keGVfY3RsICpjdGwgPSBjaC1cXHUwMDNlaGVhZF9ibGtfY3RsLCAqbmV4dDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy02MC1cXHRpbnQgaTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTY4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjY5OnN0YXRpYyBpbnQgd2NuMzZ4eF9keGVfYWxsb2NhdGVfY3RsX2Jsb2NrKHN0cnVjdCB3Y24zNnh4X2R4ZV9jaCAqY2gpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNzAte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjcxOlxcdHN0cnVjdCB3Y24zNnh4X2R4ZV9jdGwgKnByZXZfY3RsID0gTlVMTDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzo3MjpcXHRzdHJ1Y3Qgd2NuMzZ4eF9keGVfY3RsICpjdXJfY3RsID0gTlVMTDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy03My1cXHRpbnQgaTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTk2LW91dF9mYWlsOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjk3OlxcdHdjbjM2eHhfZHhlX2ZyZWVfY3RsX2Jsb2NrKGNoKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy05OC1cXHRyZXR1cm4gLUVOT01FTTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTEwMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzoxMDE6aW50IHdjbjM2eHhfZHhlX2FsbG9jX2N0bF9ibGtzKHN0cnVjdCB3Y24zNnh4ICp3Y24pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtMTAyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTEzMC1cXHQvKiBEWEUgY29udHJvbCBibG9jayBhbGxvY2F0aW9uICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6MTMxOlxcdHJldCA9IHdjbjM2eHhfZHhlX2FsbG9jYXRlX2N0bF9ibG9jayhcXHUwMDI2d2NuLVxcdTAwM2VkeGVfdHhfbF9jaCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtMTMyLVxcdGlmIChyZXQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtMTMzLVxcdFxcdGdvdG8gb3V0X2VycjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzoxMzQ6XFx0cmV0ID0gd2NuMzZ4eF9keGVfYWxsb2NhdGVfY3RsX2Jsb2NrKFxcdTAwMjZ3Y24tXFx1MDAzZWR4ZV90eF9oX2NoKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy0xMzUtXFx0aWYgKHJldClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy0xMzYtXFx0XFx0Z290byBvdXRfZXJyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjEzNzpcXHRyZXQgPSB3Y24zNnh4X2R4ZV9hbGxvY2F0ZV9jdGxfYmxvY2soXFx1MDAyNndjbi1cXHUwMDNlZHhlX3J4X2xfY2gpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTEzOC1cXHRpZiAocmV0KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTEzOS1cXHRcXHRnb3RvIG91dF9lcnI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6MTQwOlxcdHJldCA9IHdjbjM2eHhfZHhlX2FsbG9jYXRlX2N0bF9ibG9jayhcXHUwMDI2d2NuLVxcdTAwM2VkeGVfcnhfaF9jaCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtMTQxLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy0xNTQtb3V0X2VycjpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzoxNTU6XFx0d2NuMzZ4eF9lcnIoXFxcIkZhaWxlZCB0byBhbGxvY2F0ZSBEWEUgY29udHJvbCBibG9ja3NcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjE1NjpcXHR3Y24zNnh4X2R4ZV9mcmVlX2N0bF9ibGtzKHdjbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtMTU3LVxcdHJldHVybiAtRU5PTUVNO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtMTU5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjE2MDp2b2lkIHdjbjM2eHhfZHhlX2ZyZWVfY3RsX2Jsa3Moc3RydWN0IHdjbjM2eHggKndjbilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy0xNjEte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjE2MjpcXHR3Y24zNnh4X2R4ZV9mcmVlX2N0bF9ibG9jayhcXHUwMDI2d2NuLVxcdTAwM2VkeGVfdHhfbF9jaCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6MTYzOlxcdHdjbjM2eHhfZHhlX2ZyZWVfY3RsX2Jsb2NrKFxcdTAwMjZ3Y24tXFx1MDAzZWR4ZV90eF9oX2NoKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzoxNjQ6XFx0d2NuMzZ4eF9keGVfZnJlZV9jdGxfYmxvY2soXFx1MDAyNndjbi1cXHUwMDNlZHhlX3J4X2xfY2gpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjE2NTpcXHR3Y24zNnh4X2R4ZV9mcmVlX2N0bF9ibG9jayhcXHUwMDI2d2NuLVxcdTAwM2VkeGVfcnhfaF9jaCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtMTY2LX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy0xNjctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6MTY4OnN0YXRpYyBpbnQgd2NuMzZ4eF9keGVfaW5pdF9kZXNjcyhzdHJ1Y3Qgd2NuMzZ4eCAqd2NuLCBzdHJ1Y3Qgd2NuMzZ4eF9keGVfY2ggKndjbl9jaClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy0xNjkte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTE3MC1cXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSB3Y24tXFx1MDAzZWRldjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzoxNzE6XFx0c3RydWN0IHdjbjM2eHhfZHhlX2Rlc2MgKmN1cl9keGUgPSBOVUxMO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjE3MjpcXHRzdHJ1Y3Qgd2NuMzZ4eF9keGVfZGVzYyAqcHJldl9keGUgPSBOVUxMO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjE3MzpcXHRzdHJ1Y3Qgd2NuMzZ4eF9keGVfY3RsICpjdXJfY3RsID0gTlVMTDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy0xNzQtXFx0c2l6ZV90IHNpemU7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy0xNzYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6MTc3OlxcdHNpemUgPSB3Y25fY2gtXFx1MDAzZWRlc2NfbnVtICogc2l6ZW9mKHN0cnVjdCB3Y24zNnh4X2R4ZV9kZXNjKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy0xNzgtXFx0d2NuX2NoLVxcdTAwM2VjcHVfYWRkciA9IGRtYV9hbGxvY19jb2hlcmVudChkZXYsIHNpemUsIFxcdTAwMjZ3Y25fY2gtXFx1MDAzZWRtYV9hZGRyLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtMTg4LVxcdFxcdGN1cl9jdGwtXFx1MDAzZWRlc2NfcGh5X2FkZHIgPSB3Y25fY2gtXFx1MDAzZWRtYV9hZGRyICtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzoxODk6XFx0XFx0XFx0aSAqIHNpemVvZihzdHJ1Y3Qgd2NuMzZ4eF9keGVfZGVzYyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtMTkwLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtMjI3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjIyODpzdGF0aWMgdm9pZCB3Y24zNnh4X2R4ZV9kZWluaXRfZGVzY3Moc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3Qgd2NuMzZ4eF9keGVfY2ggKndjbl9jaClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy0yMjkte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtMjMxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjIzMjpcXHRzaXplID0gd2NuX2NoLVxcdTAwM2VkZXNjX251bSAqIHNpemVvZihzdHJ1Y3Qgd2NuMzZ4eF9keGVfZGVzYyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtMjMzLVxcdGRtYV9mcmVlX2NvaGVyZW50KGRldiwgc2l6ZSx3Y25fY2gtXFx1MDAzZWNwdV9hZGRyLCB3Y25fY2gtXFx1MDAzZWRtYV9hZGRyKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTIzNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzoyMzY6c3RhdGljIHZvaWQgd2NuMzZ4eF9keGVfaW5pdF90eF9iZChzdHJ1Y3Qgd2NuMzZ4eF9keGVfY2ggKmNoLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjIzNzpcXHRcXHRcXHRcXHQgICBzdHJ1Y3Qgd2NuMzZ4eF9keGVfbWVtX3Bvb2wgKnBvb2wpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtMjM4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTI0MS1cXHR2b2lkICpiZF9jcHVfYWRkciA9IHBvb2wtXFx1MDAzZXZpcnRfYWRkcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzoyNDI6XFx0c3RydWN0IHdjbjM2eHhfZHhlX2N0bCAqY3VyID0gY2gtXFx1MDAzZWhlYWRfYmxrX2N0bDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy0yNDMtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy0yNTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6MjYwOnN0YXRpYyBpbnQgd2NuMzZ4eF9keGVfZW5hYmxlX2NoX2ludChzdHJ1Y3Qgd2NuMzZ4eCAqd2NuLCB1MTYgd2NuX2NoKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTI2MS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy0yNjMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6MjY0OlxcdHdjbjM2eHhfZHhlX3JlYWRfcmVnaXN0ZXIod2NuLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTI2NS1cXHRcXHRcXHRcXHQgIFdDTjM2WFhfRFhFX0lOVF9NQVNLX1JFRyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTI2OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzoyNzA6XFx0d2NuMzZ4eF9keGVfd3JpdGVfcmVnaXN0ZXIod2NuLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTI3MS1cXHRcXHRcXHRcXHQgICBXQ04zNlhYX0RYRV9JTlRfTUFTS19SRUcsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy0yNzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6Mjc2OnN0YXRpYyB2b2lkIHdjbjM2eHhfZHhlX2Rpc2FibGVfY2hfaW50KHN0cnVjdCB3Y24zNnh4ICp3Y24sIHUxNiB3Y25fY2gpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtMjc3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTI3OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzoyODA6XFx0d2NuMzZ4eF9keGVfcmVhZF9yZWdpc3Rlcih3Y24sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtMjgxLVxcdFxcdFxcdFxcdCAgV0NOMzZYWF9EWEVfSU5UX01BU0tfUkVHLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtMjg1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjI4NjpcXHR3Y24zNnh4X2R4ZV93cml0ZV9yZWdpc3Rlcih3Y24sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtMjg3LVxcdFxcdFxcdFxcdCAgIFdDTjM2WFhfRFhFX0lOVF9NQVNLX1JFRyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTI5MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzoyOTE6c3RhdGljIGludCB3Y24zNnh4X2R4ZV9maWxsX3NrYihzdHJ1Y3QgZGV2aWNlICpkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6MjkyOlxcdFxcdFxcdFxcdHN0cnVjdCB3Y24zNnh4X2R4ZV9jdGwgKmN0bCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy0yOTMtXFx0XFx0XFx0XFx0Z2ZwX3QgZ2ZwKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTI5NC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6Mjk1OlxcdHN0cnVjdCB3Y24zNnh4X2R4ZV9kZXNjICpkeGUgPSBjdGwtXFx1MDAzZWRlc2M7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtMjk2LVxcdHN0cnVjdCBza19idWZmICpza2I7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy0zMTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6MzE2OnN0YXRpYyBpbnQgd2NuMzZ4eF9keGVfY2hfYWxsb2Nfc2tiKHN0cnVjdCB3Y24zNnh4ICp3Y24sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6MzE3OlxcdFxcdFxcdFxcdCAgICBzdHJ1Y3Qgd2NuMzZ4eF9keGVfY2ggKndjbl9jaClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy0zMTgte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTMxOS1cXHRpbnQgaTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzozMjA6XFx0c3RydWN0IHdjbjM2eHhfZHhlX2N0bCAqY3VyX2N0bCA9IE5VTEw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtMzIxLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtMzI0LVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyB3Y25fY2gtXFx1MDAzZWRlc2NfbnVtOyBpKyspIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzozMjU6XFx0XFx0d2NuMzZ4eF9keGVfZmlsbF9za2Iod2NuLVxcdTAwM2VkZXYsIGN1cl9jdGwsIEdGUF9LRVJORUwpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTMyNi1cXHRcXHRjdXJfY3RsID0gY3VyX2N0bC1cXHUwMDNlbmV4dDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTMzMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzozMzI6c3RhdGljIHZvaWQgd2NuMzZ4eF9keGVfY2hfZnJlZV9za2JzKHN0cnVjdCB3Y24zNnh4ICp3Y24sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6MzMzOlxcdFxcdFxcdFxcdCAgICAgc3RydWN0IHdjbjM2eHhfZHhlX2NoICp3Y25fY2gpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtMzM0LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzozMzU6XFx0c3RydWN0IHdjbjM2eHhfZHhlX2N0bCAqY3VyID0gd2NuX2NoLVxcdTAwM2VoZWFkX2Jsa19jdGw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtMzM2LVxcdGludCBpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtMzQzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjM0NDp2b2lkIHdjbjM2eHhfZHhlX3R4X2Fja19pbmQoc3RydWN0IHdjbjM2eHggKndjbiwgdTMyIHN0YXR1cylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy0zNDUte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtMzU2LVxcdGlmICghc2tiKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6MzU3OlxcdFxcdHdjbjM2eHhfd2FybihcXFwiU3B1cmlvdXMgVFggY29tcGxldGUgaW5kaWNhdGlvblxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtMzU4LVxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTM2Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzozNjg6XFx0d2NuMzZ4eF9kYmcoV0NOMzZYWF9EQkdfRFhFLCBcXFwiZHhlIHR4IGFjayBzdGF0dXM6ICVkXFxcXG5cXFwiLCBzdGF0dXMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTM2OS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTM3My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzozNzQ6c3RhdGljIHZvaWQgd2NuMzZ4eF9keGVfdHhfdGltZXIoc3RydWN0IHRpbWVyX2xpc3QgKnQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtMzc1LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzozNzY6XFx0c3RydWN0IHdjbjM2eHggKndjbiA9IHRpbWVyX2NvbnRhaW5lcl9vZih3Y24sIHQsIHR4X2Fja190aW1lcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtMzc3LVxcdHN0cnVjdCBpZWVlODAyMTFfdHhfaW5mbyAqaW5mbztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTM4MS1cXHQvKiBUWCBUaW1lb3V0ICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6MzgyOlxcdHdjbjM2eHhfZGJnKFdDTjM2WFhfREJHX0RYRSwgXFxcIlRYIHRpbWVvdXRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTM4My1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTM5OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzo0MDA6c3RhdGljIHZvaWQgcmVhcF90eF9keGVzKHN0cnVjdCB3Y24zNnh4ICp3Y24sIHN0cnVjdCB3Y24zNnh4X2R4ZV9jaCAqY2gpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNDAxLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzo0MDI6XFx0c3RydWN0IHdjbjM2eHhfZHhlX2N0bCAqY3RsO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTQwMy1cXHRzdHJ1Y3QgaWVlZTgwMjExX3R4X2luZm8gKmluZm87XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy00NTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6NDU0OnN0YXRpYyBpcnFyZXR1cm5fdCB3Y24zNnh4X2lycV90eF9jb21wbGV0ZShpbnQgaXJxLCB2b2lkICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNDU1LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzo0NTY6XFx0c3RydWN0IHdjbjM2eHggKndjbiA9IGRldjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy00NTctXFx0aW50IGludF9zcmMsIGludF9yZWFzb247XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNDU4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjQ1OTpcXHR3Y24zNnh4X2R4ZV9yZWFkX3JlZ2lzdGVyKHdjbiwgV0NOMzZYWF9EWEVfSU5UX1NSQ19SQVdfUkVHLCBcXHUwMDI2aW50X3NyYyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNDYwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTQ2MS1cXHRpZiAoaW50X3NyYyBcXHUwMDI2IFdDTjM2WFhfSU5UX01BU0tfQ0hBTl9UWF9IKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6NDYyOlxcdFxcdHdjbjM2eHhfZHhlX3JlYWRfcmVnaXN0ZXIod2NuLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTQ2My1cXHRcXHRcXHRcXHRcXHQgIFdDTjM2WFhfRFhFX0NIX1NUQVRVU19SRUdfQUREUl9UWF9ILFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNDY1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjQ2NjpcXHRcXHR3Y24zNnh4X2R4ZV93cml0ZV9yZWdpc3Rlcih3Y24sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNDY3LVxcdFxcdFxcdFxcdFxcdCAgIFdDTjM2WFhfRFhFXzBfSU5UX0NMUixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTQ3MC1cXHRcXHRpZiAoaW50X3JlYXNvbiBcXHUwMDI2IFdDTjM2WFhfQ0hfU1RBVF9JTlRfRVJSX01BU0sgKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6NDcxOlxcdFxcdFxcdHdjbjM2eHhfZHhlX3dyaXRlX3JlZ2lzdGVyKHdjbixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy00NzItXFx0XFx0XFx0XFx0XFx0XFx0ICAgV0NOMzZYWF9EWEVfMF9JTlRfRVJSX0NMUixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTQ3NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzo0NzU6XFx0XFx0XFx0d2NuMzZ4eF9lcnIoXFxcIkRYRSBJUlEgcmVwb3J0ZWQgZXJyb3I6IDB4JXggaW4gaGlnaCBUWCBjaGFubmVsXFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTQ3Ni1cXHRcXHRcXHRcXHRcXHRpbnRfc3JjKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTQ3OS1cXHRcXHRpZiAoaW50X3JlYXNvbiBcXHUwMDI2IFdDTjM2WFhfQ0hfU1RBVF9JTlRfRE9ORV9NQVNLKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6NDgwOlxcdFxcdFxcdHdjbjM2eHhfZHhlX3dyaXRlX3JlZ2lzdGVyKHdjbixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy00ODEtXFx0XFx0XFx0XFx0XFx0XFx0ICAgV0NOMzZYWF9EWEVfMF9JTlRfRE9ORV9DTFIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy00ODUtXFx0XFx0aWYgKGludF9yZWFzb24gXFx1MDAyNiBXQ04zNlhYX0NIX1NUQVRfSU5UX0VEX01BU0spIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzo0ODY6XFx0XFx0XFx0d2NuMzZ4eF9keGVfd3JpdGVfcmVnaXN0ZXIod2NuLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTQ4Ny1cXHRcXHRcXHRcXHRcXHRcXHQgICBXQ04zNlhYX0RYRV8wX0lOVF9FRF9DTFIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy00OTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6NDkxOlxcdFxcdHdjbjM2eHhfZGJnKFdDTjM2WFhfREJHX0RYRSwgXFxcImR4ZSB0eCByZWFkeSBoaWdoLCByZWFzb24gJTA4eFxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy00OTItXFx0XFx0XFx0ICAgIGludF9yZWFzb24pO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNTAwLVxcdGlmIChpbnRfc3JjIFxcdTAwMjYgV0NOMzZYWF9JTlRfTUFTS19DSEFOX1RYX0wpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzo1MDE6XFx0XFx0d2NuMzZ4eF9keGVfcmVhZF9yZWdpc3Rlcih3Y24sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNTAyLVxcdFxcdFxcdFxcdFxcdCAgV0NOMzZYWF9EWEVfQ0hfU1RBVFVTX1JFR19BRERSX1RYX0wsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy01MDQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6NTA1OlxcdFxcdHdjbjM2eHhfZHhlX3dyaXRlX3JlZ2lzdGVyKHdjbixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy01MDYtXFx0XFx0XFx0XFx0XFx0ICAgV0NOMzZYWF9EWEVfMF9JTlRfQ0xSLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNTA5LVxcdFxcdGlmIChpbnRfcmVhc29uIFxcdTAwMjYgV0NOMzZYWF9DSF9TVEFUX0lOVF9FUlJfTUFTSyApIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzo1MTA6XFx0XFx0XFx0d2NuMzZ4eF9keGVfd3JpdGVfcmVnaXN0ZXIod2NuLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTUxMS1cXHRcXHRcXHRcXHRcXHRcXHQgICBXQ04zNlhYX0RYRV8wX0lOVF9FUlJfQ0xSLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNTEzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjUxNDpcXHRcXHRcXHR3Y24zNnh4X2VycihcXFwiRFhFIElSUSByZXBvcnRlZCBlcnJvcjogMHgleCBpbiBsb3cgVFggY2hhbm5lbFxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy01MTUtXFx0XFx0XFx0XFx0XFx0aW50X3NyYyk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy01MTgtXFx0XFx0aWYgKGludF9yZWFzb24gXFx1MDAyNiBXQ04zNlhYX0NIX1NUQVRfSU5UX0RPTkVfTUFTSykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjUxOTpcXHRcXHRcXHR3Y24zNnh4X2R4ZV93cml0ZV9yZWdpc3Rlcih3Y24sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNTIwLVxcdFxcdFxcdFxcdFxcdFxcdCAgIFdDTjM2WFhfRFhFXzBfSU5UX0RPTkVfQ0xSLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNTI0LVxcdFxcdGlmIChpbnRfcmVhc29uIFxcdTAwMjYgV0NOMzZYWF9DSF9TVEFUX0lOVF9FRF9NQVNLKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6NTI1OlxcdFxcdFxcdHdjbjM2eHhfZHhlX3dyaXRlX3JlZ2lzdGVyKHdjbixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy01MjYtXFx0XFx0XFx0XFx0XFx0XFx0ICAgV0NOMzZYWF9EWEVfMF9JTlRfRURfQ0xSLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNTI5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjUzMDpcXHRcXHR3Y24zNnh4X2RiZyhXQ04zNlhYX0RCR19EWEUsIFxcXCJkeGUgdHggcmVhZHkgbG93LCByZWFzb24gJTA4eFxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy01MzEtXFx0XFx0XFx0ICAgIGludF9yZWFzb24pO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNTQxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjU0MjpzdGF0aWMgaXJxcmV0dXJuX3Qgd2NuMzZ4eF9pcnFfcnhfcmVhZHkoaW50IGlycSwgdm9pZCAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTU0My17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6NTQ0OlxcdHN0cnVjdCB3Y24zNnh4ICp3Y24gPSBkZXY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNTQ1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjU0NjpcXHR3Y24zNnh4X2R4ZV9yeF9mcmFtZSh3Y24pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTU0Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTU1MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzo1NTE6c3RhdGljIGludCB3Y24zNnh4X2R4ZV9yZXF1ZXN0X2lycXMoc3RydWN0IHdjbjM2eHggKndjbilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy01NTIte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNTU0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjU1NTpcXHRyZXQgPSByZXF1ZXN0X2lycSh3Y24tXFx1MDAzZXR4X2lycSwgd2NuMzZ4eF9pcnFfdHhfY29tcGxldGUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6NTU2OlxcdFxcdFxcdCAgSVJRRl9UUklHR0VSX0hJR0gsIFxcXCJ3Y24zNnh4X3R4XFxcIiwgd2NuKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy01NTctXFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjU1ODpcXHRcXHR3Y24zNnh4X2VycihcXFwiZmFpbGVkIHRvIGFsbG9jIHR4IGlycVxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNTU5LVxcdFxcdGdvdG8gb3V0X2VycjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTU2MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzo1NjI6XFx0cmV0ID0gcmVxdWVzdF9pcnEod2NuLVxcdTAwM2VyeF9pcnEsIHdjbjM2eHhfaXJxX3J4X3JlYWR5LCBJUlFGX1RSSUdHRVJfSElHSCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzo1NjM6XFx0XFx0XFx0ICBcXFwid2NuMzZ4eF9yeFxcXCIsIHdjbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNTY0LVxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzo1NjU6XFx0XFx0d2NuMzZ4eF9lcnIoXFxcImZhaWxlZCB0byBhbGxvYyByeCBpcnFcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTU2Ni1cXHRcXHRnb3RvIG91dF90eGlycTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTU3OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzo1ODA6c3RhdGljIGludCB3Y24zNnh4X3J4X2hhbmRsZV9wYWNrZXRzKHN0cnVjdCB3Y24zNnh4ICp3Y24sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6NTgxOlxcdFxcdFxcdFxcdCAgICAgc3RydWN0IHdjbjM2eHhfZHhlX2NoICpjaCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy01ODItXFx0XFx0XFx0XFx0ICAgICB1MzIgY3RybCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTU4Ni17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6NTg3OlxcdHN0cnVjdCB3Y24zNnh4X2R4ZV9kZXNjICpkeGU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6NTg4OlxcdHN0cnVjdCB3Y24zNnh4X2R4ZV9jdGwgKmN0bDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy01ODktXFx0ZG1hX2FkZHJfdCAgZG1hX2FkZHI7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy01OTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6NTk0OlxcdHdjbjM2eHhfZHhlX3JlYWRfcmVnaXN0ZXIod2NuLCBzdGF0dXNfcmVnLCBcXHUwMDI2aW50X3JlYXNvbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6NTk1OlxcdHdjbjM2eHhfZHhlX3dyaXRlX3JlZ2lzdGVyKHdjbiwgV0NOMzZYWF9EWEVfMF9JTlRfQ0xSLCBpbnRfbWFzayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNTk2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTU5Ny1cXHRpZiAoaW50X3JlYXNvbiBcXHUwMDI2IFdDTjM2WFhfQ0hfU1RBVF9JTlRfRVJSX01BU0spIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzo1OTg6XFx0XFx0d2NuMzZ4eF9keGVfd3JpdGVfcmVnaXN0ZXIod2NuLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTU5OS1cXHRcXHRcXHRcXHRcXHQgICBXQ04zNlhYX0RYRV8wX0lOVF9FUlJfQ0xSLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNjAxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjYwMjpcXHRcXHR3Y24zNnh4X2VycihcXFwiRFhFIElSUSByZXBvcnRlZCBlcnJvciBvbiBSWCBjaGFubmVsXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy02MDMtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNjA1LVxcdGlmIChpbnRfcmVhc29uIFxcdTAwMjYgV0NOMzZYWF9DSF9TVEFUX0lOVF9ET05FX01BU0spXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6NjA2OlxcdFxcdHdjbjM2eHhfZHhlX3dyaXRlX3JlZ2lzdGVyKHdjbixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy02MDctXFx0XFx0XFx0XFx0XFx0ICAgV0NOMzZYWF9EWEVfMF9JTlRfRE9ORV9DTFIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy02MTAtXFx0aWYgKGludF9yZWFzb24gXFx1MDAyNiBXQ04zNlhYX0NIX1NUQVRfSU5UX0VEX01BU0spXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6NjExOlxcdFxcdHdjbjM2eHhfZHhlX3dyaXRlX3JlZ2lzdGVyKHdjbixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy02MTItXFx0XFx0XFx0XFx0XFx0ICAgV0NOMzZYWF9EWEVfMF9JTlRfRURfQ0xSLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNjMwLVxcdFxcdGRtYV9hZGRyID0gZHhlLVxcdTAwM2Vkc3RfYWRkcl9sO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjYzMTpcXHRcXHRyZXQgPSB3Y24zNnh4X2R4ZV9maWxsX3NrYih3Y24tXFx1MDAzZWRldiwgY3RsLCBHRlBfQVRPTUlDKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy02MzItXFx0XFx0aWYgKDAgPT0gcmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy02MzctXFx0XFx0XFx0XFx0XFx0RE1BX0ZST01fREVWSUNFKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzo2Mzg6XFx0XFx0XFx0d2NuMzZ4eF9yeF9za2Iod2NuLCBza2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTYzOS1cXHRcXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy02NTAtXFx0fVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjY1MTpcXHR3Y24zNnh4X2R4ZV93cml0ZV9yZWdpc3Rlcih3Y24sIFdDTjM2WFhfRFhFX0VOQ0hfQUREUiwgZW5fbWFzayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNjUyLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNjU5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjY2MDp2b2lkIHdjbjM2eHhfZHhlX3J4X2ZyYW1lKHN0cnVjdCB3Y24zNnh4ICp3Y24pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNjYxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTY2My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzo2NjQ6XFx0d2NuMzZ4eF9keGVfcmVhZF9yZWdpc3Rlcih3Y24sIFdDTjM2WFhfRFhFX0lOVF9TUkNfUkFXX1JFRywgXFx1MDAyNmludF9zcmMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTY2NS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTY2Ny1cXHRpZiAoaW50X3NyYyBcXHUwMDI2IFdDTjM2WFhfRFhFX0lOVF9DSDFfTUFTSylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzo2Njg6XFx0XFx0d2NuMzZ4eF9yeF9oYW5kbGVfcGFja2V0cyh3Y24sIFxcdTAwMjZ3Y24tXFx1MDAzZWR4ZV9yeF9sX2NoLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTY2OS1cXHRcXHRcXHRcXHRcXHQgIFdDTjM2WFhfRFhFX0NUUkxfUlhfTCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTY3NS1cXHRpZiAoaW50X3NyYyBcXHUwMDI2IFdDTjM2WFhfRFhFX0lOVF9DSDNfTUFTSylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzo2NzY6XFx0XFx0d2NuMzZ4eF9yeF9oYW5kbGVfcGFja2V0cyh3Y24sIFxcdTAwMjZ3Y24tXFx1MDAzZWR4ZV9yeF9oX2NoLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTY3Ny1cXHRcXHRcXHRcXHRcXHQgIFdDTjM2WFhfRFhFX0NUUkxfUlhfSCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTY4Mi1cXHRpZiAoIWludF9zcmMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6NjgzOlxcdFxcdHdjbjM2eHhfd2FybihcXFwiTm8gRFhFIGludGVycnVwdCBwZW5kaW5nXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy02ODQtfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTY4NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzo2ODY6aW50IHdjbjM2eHhfZHhlX2FsbG9jYXRlX21lbV9wb29scyhzdHJ1Y3Qgd2NuMzZ4eCAqd2NuKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTY4Ny17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy03MjMtb3V0X2VycjpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzo3MjQ6XFx0d2NuMzZ4eF9keGVfZnJlZV9tZW1fcG9vbHMod2NuKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzo3MjU6XFx0d2NuMzZ4eF9lcnIoXFxcIkZhaWxlZCB0byBhbGxvY2F0ZSBCRCBtZW1wb29sXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy03MjYtXFx0cmV0dXJuIC1FTk9NRU07XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy03MjgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6NzI5OnZvaWQgd2NuMzZ4eF9keGVfZnJlZV9tZW1fcG9vbHMoc3RydWN0IHdjbjM2eHggKndjbilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy03MzAte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNzQ0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjc0NTppbnQgd2NuMzZ4eF9keGVfdHhfZnJhbWUoc3RydWN0IHdjbjM2eHggKndjbixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzo3NDY6XFx0XFx0XFx0IHN0cnVjdCB3Y24zNnh4X3ZpZiAqdmlmX3ByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6NzQ3OlxcdFxcdFxcdCBzdHJ1Y3Qgd2NuMzZ4eF90eF9iZCAqYmQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNzQ4LVxcdFxcdFxcdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNzUwLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzo3NTE6XFx0c3RydWN0IHdjbjM2eHhfZHhlX2Rlc2MgKmRlc2NfYmQsICpkZXNjX3NrYjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzo3NTI6XFx0c3RydWN0IHdjbjM2eHhfZHhlX2N0bCAqY3RsX2JkLCAqY3RsX3NrYjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzo3NTM6XFx0c3RydWN0IHdjbjM2eHhfZHhlX2NoICpjaCA9IE5VTEw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNzU0LVxcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy03NzUtXFx0aWYgKHVubGlrZWx5KGN0bF9za2ItXFx1MDAzZWJkX2NwdV9hZGRyKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjc3NjpcXHRcXHR3Y24zNnh4X2VycihcXFwiYmRfY3B1X2FkZHIgY2Fubm90IGJlIE5VTEwgZm9yIHNrYiBEWEVcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTc3Ny1cXHRcXHRyZXQgPSAtRUlOVkFMO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNzkxLVxcdGRlc2NfYmQtXFx1MDAzZWRzdF9hZGRyX2wgPSBjaC1cXHUwMDNlZHhlX3dxO1xcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQwMjo0MTo0My41ODEzODIzMDZaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMjE5NjI0Njg4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkludmVzdGlnYXRpbmcgV0NOMzZYWCBLY29uZmlnIGFuZCBCdXMgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBxdWlja2x5IGdldCBhIGhhbmRsZSBvbiB0aGUgV0NOMzZYWCBkcml2ZXIncyBjb25maWd1cmF0aW9uIHdpdGhpbiB0aGUga2VybmVsLiBNeSBpbW1lZGlhdGUgZm9jdXMgaXMgb24gaXRzIEtjb25maWcgZW50cmllcy4gU3BlY2lmaWNhbGx5LCBJIHdhbnQgdG8gcGlucG9pbnQgd2hlcmUgdGhlIFdDTjM2WFggaXMgZGVmaW5lZCBhbmQgaG93IGl0cyBidXMgdHlwZSBpcyBzcGVjaWZpZWQuIFRoaXMgaXMgd2hlcmUgSSBjYW4gc3RhcnQgdW5kZXJzdGFuZGluZyBpdHMgZGVwZW5kZW5jaWVzIGFuZCBpbnN0YW50aWF0aW9uIHByb2NlZHVyZS4gS25vd2luZyB0aGUgdW5kZXJseWluZyBidXMg4oCTIFNQSSwgU0RJTywgUENJZSwgZXRjLiDigJMgd2lsbCBiZSBjcnVjaWFsIGZvciBkZWJ1Z2dpbmcgYW55IGlzc3VlcyBvciBvcHRpbWl6aW5nIGl0cyBpbnRlZ3JhdGlvbi4gSSdsbCBiZSBsb29raW5nIGZvciBjb25maWd1cmF0aW9uIHN5bWJvbHMsIGxpa2VseSBgQ09ORklHX1dDTjM2WFhgIGFuZCBwb3RlbnRpYWxseSByZWxhdGVkIGJ1cy1zcGVjaWZpYyBvcHRpb25zIGxpa2UgYENPTkZJR19XQ04zNlhYX1NQSWAgb3IgdGhlIGxpa2UsIHRvIHVuZGVyc3RhbmQgdGhlIGJ1aWxkLXRpbWUgb3B0aW9ucyBhbmQgaG93IHRvIGVuYWJsZS9kaXNhYmxlIHRoaXMgZmVhdHVyZS4gV2l0aCB0aGF0IGluZm9ybWF0aW9uIGluIGhhbmQsIEkgY2FuIHRoZW4gZGl2ZSBkZWVwZXIgaW50byB0aGUgZHJpdmVyIGNvZGUgaWYgbmVlZCBiZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTg4MTAsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQwMjo0MTo0NS44MDEwMDk5MDRaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MDA4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogSVNDXFxuICAgMjpcXHRjb25maWcgV0NOMzZYWFxcbiAgIDM6XFx0XFx0dHJpc3RhdGUgXFxcIlF1YWxjb21tIEF0aGVyb3MgV0NOMzY2MC8zNjgwIHN1cHBvcnRcXFwiXFxuICAgNDpcXHRcXHRkZXBlbmRzIG9uIE1BQzgwMjExIFxcdTAwMjZcXHUwMDI2IEhBU19ETUFcXG4gICA1OlxcdFxcdGRlcGVuZHMgb24gUUNPTV9XQ05TU19DVFJMIHx8IFFDT01fV0NOU1NfQ1RSTD1uXFxuICAgNjpcXHRcXHRkZXBlbmRzIG9uIFJQTVNHIHx8IFJQTVNHPW5cXG4gICA3OlxcdFxcdGhlbHBcXG4gICA4OlxcdFxcdCAgVGhpcyBtb2R1bGUgYWRkcyBzdXBwb3J0IGZvciB3aXJlbGVzcyBhZGFwdGVycyBiYXNlZCBvblxcbiAgIDk6XFx0XFx0ICBRdWFsY29tbSBBdGhlcm9zIFdDTjM2NjAgYW5kIFdDTjM2ODAgbW9iaWxlIGNoaXBzZXRzLlxcbiAgMTA6XFx0XFxuICAxMTpcXHRcXHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgYSBtb2R1bGUsIGl0J2xsIGJlIGNhbGxlZCB3Y24zNnh4LlxcbiAgMTI6XFx0XFxuICAxMzpcXHRjb25maWcgV0NOMzZYWF9ERUJVR0ZTXFxuICAxNDpcXHRcXHRib29sIFxcXCJXQ04zNlhYIGRlYnVnZnMgc3VwcG9ydFxcXCJcXG4gIDE1OlxcdFxcdGRlcGVuZHMgb24gV0NOMzZYWFxcbiAgMTY6XFx0XFx0aGVscFxcbiAgMTc6XFx0XFx0ICBFbmFibGVkIGRlYnVnZnMgc3VwcG9ydFxcbiAgMTg6XFx0XFxuICAxOTpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IFkgdG8gbWFrZSBpdCBlYXNpZXIgdG8gZGVidWcgcHJvYmxlbXMuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDAyOjQxOjQ1LjgwMTA5MTg1NFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI3MTY0MzYyMTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGZyb20gYW4gZXhwZXJ0J3MgcGVyc3BlY3RpdmU6XG5cbioqRGl2aW5nIGludG8gdGhlIFdDTjM2WFggRHJpdmVyIEluaXRpYWxpemF0aW9uKipcblxuQWxyaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgV0NOMzZYWCBkcml2ZXIgaXMgaW5pdGlhbGl6ZWQsIHdoYXQgaGFyZHdhcmUgaXQncyBkZXNpZ25lZCB0byBpbnRlcmZhY2Ugd2l0aCwgYW5kIGhvdyBpdCdzIGF0dGFjaGluZyB0byB0aGUgc3lzdGVtLiBUaGUgYmVzdCBwbGFjZSB0byBzdGFydCBpcyBhbHdheXMgdGhlIGNvcmUuIExldCdzIGxvb2sgYXQgYG1haW4uY2Agd2l0aGluIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvYCBkaXJlY3RvcnkuIFRoYXQncyB1c3VhbGx5IHdoZXJlIHRoZSBoZWFydCBvZiB0aGUgcHJvYmUgZnVuY3Rpb24gbGllcyDigJMgdGhlIGVudHJ5IHBvaW50IHdoZXJlIHRoZSBkcml2ZXIgZGV0ZXJtaW5lcyBkZXZpY2UgcHJlc2VuY2UsIGNvbmZpZ3VyYXRpb24sIGFuZCBob3cgaXQgYmluZHMgdG8gdGhlIGJ1cy4gSSBleHBlY3QgdG8gZmluZCB0aGUgc3RhbmRhcmQgYG1vZHVsZV9pbml0YCBhbmQgYG1vZHVsZV9leGl0YCBtYWNyb3MsIHdoaWNoIHdpbGwgZGVmaW5lIHRoZSBwcm9iZSBhbmQgcmVtb3ZlIGZ1bmN0aW9ucy4gSSdsbCBiZSBsb29raW5nIHNwZWNpZmljYWxseSBhdCB0aGUgcHJvYmUgZnVuY3Rpb24gdG8gdW5kZXJzdGFuZCB3aGljaCBkZXZpY2UgSURzIGl0IHN1cHBvcnRzIGFuZCwgbW9yZSBicm9hZGx5LCB3aGljaCBidXMgdHlwZXMgaXQncyBwcmVwYXJlZCB0byBoYW5kbGUg4oCTIFBDSWUsIFNESU8sIFVTQiwgZXRjLiBLbm93aW5nIHRoZSBhdHRhY2htZW50IG1ldGhvZCBpcyBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgZGV2aWNlJ3MgY2FwYWJpbGl0aWVzIGFuZCBjb25zdHJhaW50cy4gVGhpcyBpbmZvcm1hdGlvbiB3aWxsIGluZm9ybSBteSBuZXh0IHN0ZXBzIGluIGFzc2Vzc2luZyBpdHMgb3ZlcmFsbCBhcmNoaXRlY3R1cmUgYW5kIHBlcmZvcm1hbmNlIGNoYXJhY3RlcmlzdGljcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTkzNzQsIk91dHB1dFRva2VucyI6NTAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDAyOjQxOjQ4LjUxNzUzMTEwNFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODU2MDgyOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtb2R1bGVfcGxhdGZvcm1fZHJpdmVyfG1vZHVsZV9pbml0fGRyaXZlcl9yZWdpc3RlcnxwbGF0Zm9ybV9kcml2ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jPTE2NzQ9TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgd2NuMzZ4eF9vZl9tYXRjaCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTE2NzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjE2NzY6c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgd2NuMzZ4eF9kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTE2NzctXFx0LnByb2JlID0gd2NuMzZ4eF9wcm9iZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0xNjg0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzoxNjg1Om1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIod2NuMzZ4eF9kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0xNjg2LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQwMjo0MTo0OC41NjYwOTgyMDNaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1ODE2NjY4Njk1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYW5hbHlzaXMgb2YgdGhlIHByb3ZpZGVkIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byB3Y24zNnh4X3Byb2JlKipcblxuT2theSwgc28gdGhlIG1lbnRhbCB0aHJlYWQgc3RhcnRzIHdpdGggYHdjbjM2eHhfcHJvYmVgIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmNgLiBDbGVhcmx5LCB3ZSdyZSBhdCB0aGUgZGV2aWNlIHByb2JlIHN0YWdlIGZvciB0aGUgV0NOMzZ4eCB3aXJlbGVzcyBjaGlwc2V0IHdpdGhpbiB0aGUgQXRoZXJvcyBmYW1pbHkgb2YgZHJpdmVycy4gVGhpcyBzdWdnZXN0cyB3ZSdyZSB0cm91Ymxlc2hvb3RpbmcgYW4gaW5pdGlhbGl6YXRpb24gaXNzdWUsIGV4YW1pbmluZyB0aGUgZGV2aWNlIHJlZ2lzdHJhdGlvbiwgb3IgcG90ZW50aWFsbHkgbG9va2luZyBpbnRvIHBvd2VyIG1hbmFnZW1lbnQgc2VxdWVuY2VzIHRpZWQgdG8gdGhlIGluaXRpYWwgYnJpbmctdXAuXG5cbk15IGluaXRpYWwgYXNzdW1wdGlvbiBpcyB0aGF0IHdlJ3JlIGRlYWxpbmcgd2l0aCBvbmUgb2Ygc2V2ZXJhbCBwb3NzaWJsZSBwcm9ibGVtczogZWl0aGVyIGEgZ2VuZXJhbCBwcm9iZSBmYWlsdXJlLCBhIHJlc291cmNlIGFsbG9jYXRpb24gZXJyb3IsIGEgaGFyZHdhcmUgZGV0ZWN0aW9uIGlzc3VlLCBvciBwZXJoYXBzIHNvbWUgY29uZmlndXJhdGlvbiBpbmNvbXBhdGliaWxpdHkuIFdlJ3JlIHplcm9pbmcgaW4gb24gdGhpcyBmdW5jdGlvbiBiZWNhdXNlIGl0J3MgdGhlIGVudHJ5IHBvaW50IGludG8gdGhlIGRyaXZlcidzIGludGVyYWN0aW9uIHdpdGggdGhlIGRldmljZSBkdXJpbmcgaXRzIGVudW1lcmF0aW9uLiBUaW1lIHRvIGRpZyBpbiBhbmQgc2VlIHdoYXQncyBoYXBwZW5pbmcuIEknbGwgYmUgbG9va2luZyBmb3IgY2x1ZXMgb24gcmVzb3VyY2UgY29uZmxpY3RzLCBkZXZpY2Utc3BlY2lmaWMgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2VzLCBhbmQgZXJyb3IgaGFuZGxpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5OTYxLCJPdXRwdXRUb2tlbnMiOjQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMDI6NDE6NTQuMzgyNzcwMDM4WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyMDU5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTU2MCxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjE1NjA6XFx0XFx0c3RydWN0IGllZWU4MDIxMV9odyAqaHc7XFxuMTU2MTpcXHRcXHRzdHJ1Y3Qgd2NuMzZ4eCAqd2NuO1xcbjE1NjI6XFx0XFx0dm9pZCAqd2Nuc3M7XFxuMTU2MzpcXHRcXHRpbnQgcmV0O1xcbjE1NjQ6XFx0XFx0Y29uc3QgdTggKmFkZHI7XFxuMTU2NTpcXHRcXHRpbnQgbl9jaGFubmVscztcXG4xNTY2OlxcdFxcbjE1Njc6XFx0XFx0d2NuMzZ4eF9kYmcoV0NOMzZYWF9EQkdfTUFDLCBcXFwicGxhdGZvcm0gcHJvYmVcXFxcblxcXCIpO1xcbjE1Njg6XFx0XFxuMTU2OTpcXHRcXHR3Y25zcyA9IGRldl9nZXRfZHJ2ZGF0YShwZGV2LVxcdTAwM2VkZXYucGFyZW50KTtcXG4xNTcwOlxcdFxcbjE1NzE6XFx0XFx0bl9jaGFubmVscyA9IHdjbl9iYW5kXzJnaHoubl9jaGFubmVscyArIHdjbl9iYW5kXzVnaHoubl9jaGFubmVscztcXG4xNTcyOlxcdFxcdGh3ID0gaWVlZTgwMjExX2FsbG9jX2h3KHN0cnVjdF9zaXplKHdjbiwgY2hhbl9zdXJ2ZXksIG5fY2hhbm5lbHMpLCBcXHUwMDI2d2NuMzZ4eF9vcHMpO1xcbjE1NzM6XFx0XFx0aWYgKCFodykge1xcbjE1NzQ6XFx0XFx0XFx0d2NuMzZ4eF9lcnIoXFxcImZhaWxlZCB0byBhbGxvYyBod1xcXFxuXFxcIik7XFxuMTU3NTpcXHRcXHRcXHRyZXQgPSAtRU5PTUVNO1xcbjE1NzY6XFx0XFx0XFx0Z290byBvdXRfZXJyO1xcbjE1Nzc6XFx0XFx0fVxcbjE1Nzg6XFx0XFx0cGxhdGZvcm1fc2V0X2RydmRhdGEocGRldiwgaHcpO1xcbjE1Nzk6XFx0XFx0d2NuID0gaHctXFx1MDAzZXByaXY7XFxuMTU4MDpcXHRcXHR3Y24tXFx1MDAzZWh3ID0gaHc7XFxuMTU4MTpcXHRcXHR3Y24tXFx1MDAzZWRldiA9IFxcdTAwMjZwZGV2LVxcdTAwM2VkZXY7XFxuMTU4MjpcXHRcXHR3Y24tXFx1MDAzZWZpcnN0X2Jvb3QgPSB0cnVlO1xcbjE1ODM6XFx0XFx0bXV0ZXhfaW5pdChcXHUwMDI2d2NuLVxcdTAwM2Vjb25mX211dGV4KTtcXG4xNTg0OlxcdFxcdG11dGV4X2luaXQoXFx1MDAyNndjbi1cXHUwMDNlaGFsX211dGV4KTtcXG4xNTg1OlxcdFxcdG11dGV4X2luaXQoXFx1MDAyNndjbi1cXHUwMDNlc2Nhbl9sb2NrKTtcXG4xNTg2OlxcdFxcdF9fc2tiX3F1ZXVlX2hlYWRfaW5pdChcXHUwMDI2d2NuLVxcdTAwM2VhbXNkdSk7XFxuMTU4NzpcXHRcXG4xNTg4OlxcdFxcdHdjbi1cXHUwMDNlaGFsX2J1ZiA9IGRldm1fa21hbGxvYyh3Y24tXFx1MDAzZWRldiwgV0NOMzZYWF9IQUxfQlVGX1NJWkUsIEdGUF9LRVJORUwpO1xcbjE1ODk6XFx0XFx0aWYgKCF3Y24tXFx1MDAzZWhhbF9idWYpIHtcXG4xNTkwOlxcdFxcdFxcdHJldCA9IC1FTk9NRU07XFxuMTU5MTpcXHRcXHRcXHRnb3RvIG91dF93cTtcXG4xNTkyOlxcdFxcdH1cXG4xNTkzOlxcdFxcbjE1OTQ6XFx0XFx0cmV0ID0gZG1hX3NldF9tYXNrX2FuZF9jb2hlcmVudCh3Y24tXFx1MDAzZWRldiwgRE1BX0JJVF9NQVNLKDMyKSk7XFxuMTU5NTpcXHRcXHRpZiAocmV0IFxcdTAwM2MgMCkge1xcbjE1OTY6XFx0XFx0XFx0d2NuMzZ4eF9lcnIoXFxcImZhaWxlZCB0byBzZXQgRE1BIG1hc2s6ICVkXFxcXG5cXFwiLCByZXQpO1xcbjE1OTc6XFx0XFx0XFx0Z290byBvdXRfd3E7XFxuMTU5ODpcXHRcXHR9XFxuMTU5OTpcXHRcXG4xNjAwOlxcdFxcdHdjbi1cXHUwMDNlbnZfZmlsZSA9IFdMQU5fTlZfRklMRTtcXG4xNjAxOlxcdFxcdHJldCA9IG9mX3Byb3BlcnR5X3JlYWRfc3RyaW5nKHdjbi1cXHUwMDNlZGV2LVxcdTAwM2VwYXJlbnQtXFx1MDAzZW9mX25vZGUsIFxcXCJmaXJtd2FyZS1uYW1lXFxcIiwgXFx1MDAyNndjbi1cXHUwMDNlbnZfZmlsZSk7XFxuMTYwMjpcXHRcXHRpZiAocmV0IFxcdTAwM2MgMCBcXHUwMDI2XFx1MDAyNiByZXQgIT0gLUVJTlZBTCkge1xcbjE2MDM6XFx0XFx0XFx0d2NuMzZ4eF9lcnIoXFxcImZhaWxlZCB0byByZWFkIFxcXFxcXFwiZmlybXdhcmUtbmFtZVxcXFxcXFwiIHByb3BlcnR5OiAlZFxcXFxuXFxcIiwgcmV0KTtcXG4xNjA0OlxcdFxcdFxcdGdvdG8gb3V0X3dxO1xcbjE2MDU6XFx0XFx0fVxcbjE2MDY6XFx0XFxuMTYwNzpcXHRcXHR3Y24tXFx1MDAzZXNtZF9jaGFubmVsID0gcWNvbV93Y25zc19vcGVuX2NoYW5uZWwod2Nuc3MsIFxcXCJXTEFOX0NUUkxcXFwiLCB3Y24zNnh4X3NtZF9yc3BfcHJvY2VzcywgaHcpO1xcbjE2MDg6XFx0XFx0aWYgKElTX0VSUih3Y24tXFx1MDAzZXNtZF9jaGFubmVsKSkge1xcbjE2MDk6XFx0XFx0XFx0d2NuMzZ4eF9lcnIoXFxcImZhaWxlZCB0byBvcGVuIFdMQU5fQ1RSTCBjaGFubmVsXFxcXG5cXFwiKTtcXG4xNjEwOlxcdFxcdFxcdHJldCA9IFBUUl9FUlIod2NuLVxcdTAwM2VzbWRfY2hhbm5lbCk7XFxuMTYxMTpcXHRcXHRcXHRnb3RvIG91dF93cTtcXG4xNjEyOlxcdFxcdH1cXG4xNjEzOlxcdFxcbjE2MTQ6XFx0XFx0YWRkciA9IG9mX2dldF9wcm9wZXJ0eShwZGV2LVxcdTAwM2VkZXYub2Zfbm9kZSwgXFxcImxvY2FsLW1hYy1hZGRyZXNzXFxcIiwgXFx1MDAyNnJldCk7XFxuMTYxNTpcXHRcXHRpZiAoYWRkciBcXHUwMDI2XFx1MDAyNiByZXQgIT0gRVRIX0FMRU4pIHtcXG4xNjE2OlxcdFxcdFxcdHdjbjM2eHhfZXJyKFxcXCJpbnZhbGlkIGxvY2FsLW1hYy1hZGRyZXNzXFxcXG5cXFwiKTtcXG4xNjE3OlxcdFxcdFxcdHJldCA9IC1FSU5WQUw7XFxuMTYxODpcXHRcXHRcXHRnb3RvIG91dF9kZXN0cm95X2VwdDtcXG4xNjE5OlxcdFxcdH0gZWxzZSBpZiAoYWRkcikge1xcbjE2MjA6XFx0XFx0XFx0d2NuMzZ4eF9pbmZvKFxcXCJtYWMgYWRkcmVzczogJXBNXFxcXG5cXFwiLCBhZGRyKTtcXG4xNjIxOlxcdFxcdFxcdFNFVF9JRUVFODAyMTFfUEVSTV9BRERSKHdjbi1cXHUwMDNlaHcsIGFkZHIpO1xcbjE2MjI6XFx0XFx0fVxcbjE2MjM6XFx0XFxuMTYyNDpcXHRcXHRyZXQgPSB3Y24zNnh4X3BsYXRmb3JtX2dldF9yZXNvdXJjZXMod2NuLCBwZGV2KTtcXG4xNjI1OlxcdFxcdGlmIChyZXQpXFxuMTYyNjpcXHRcXHRcXHRnb3RvIG91dF9kZXN0cm95X2VwdDtcXG4xNjI3OlxcdFxcbjE2Mjg6XFx0XFx0d2NuMzZ4eF9pbml0X2llZWU4MDIxMSh3Y24pO1xcbjE2Mjk6XFx0XFx0cmV0ID0gaWVlZTgwMjExX3JlZ2lzdGVyX2h3KHdjbi1cXHUwMDNlaHcpO1xcbjE2MzA6XFx0XFx0aWYgKHJldClcXG4xNjMxOlxcdFxcdFxcdGdvdG8gb3V0X3VubWFwO1xcbjE2MzI6XFx0XFxuMTYzMzpcXHRcXHRyZXR1cm4gMDtcXG4xNjM0OlxcdFxcbjE2MzU6XFx0b3V0X3VubWFwOlxcbjE2MzY6XFx0XFx0aW91bm1hcCh3Y24tXFx1MDAzZWNjdV9iYXNlKTtcXG4xNjM3OlxcdFxcdGlvdW5tYXAod2NuLVxcdTAwM2VkeGVfYmFzZSk7XFxuMTYzODpcXHRvdXRfZGVzdHJveV9lcHQ6XFxuMTYzOTpcXHRcXHRycG1zZ19kZXN0cm95X2VwdCh3Y24tXFx1MDAzZXNtZF9jaGFubmVsKTtcXG4xNjQwOlxcdG91dF93cTpcXG4xNjQxOlxcdFxcdGllZWU4MDIxMV9mcmVlX2h3KGh3KTtcXG4xNjQyOlxcdG91dF9lcnI6XFxuMTY0MzpcXHRcXHRyZXR1cm4gcmV0O1xcbjE2NDQ6XFx0fVxcbjE2NDU6XFx0XFxuMTY0NjpcXHRzdGF0aWMgdm9pZCB3Y24zNnh4X3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbjE2NDc6XFx0e1xcbjE2NDg6XFx0XFx0c3RydWN0IGllZWU4MDIxMV9odyAqaHcgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTtcXG4xNjQ5OlxcdFxcdHN0cnVjdCB3Y24zNnh4ICp3Y24gPSBody1cXHUwMDNlcHJpdjtcXG4xNjUwOlxcdFxcdHdjbjM2eHhfZGJnKFdDTjM2WFhfREJHX01BQywgXFxcInBsYXRmb3JtIHJlbW92ZVxcXFxuXFxcIik7XFxuMTY1MTpcXHRcXG4xNjUyOlxcdFxcdHJlbGVhc2VfZmlybXdhcmUod2NuLVxcdTAwM2Vudik7XFxuMTY1MzpcXHRcXG4xNjU0OlxcdFxcdGllZWU4MDIxMV91bnJlZ2lzdGVyX2h3KGh3KTtcXG4xNjU1OlxcdFxcbjE2NTY6XFx0XFx0cWNvbV9zbWVtX3N0YXRlX3B1dCh3Y24tXFx1MDAzZXR4X2VuYWJsZV9zdGF0ZSk7XFxuMTY1NzpcXHRcXHRxY29tX3NtZW1fc3RhdGVfcHV0KHdjbi1cXHUwMDNldHhfcmluZ3NfZW1wdHlfc3RhdGUpO1xcbjE2NTg6XFx0XFxuMTY1OTpcXHRcXHRycG1zZ19kZXN0cm95X2VwdCh3Y24tXFx1MDAzZXNtZF9jaGFubmVsKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMDI6NDE6NTQuMzgyODkzNjE4WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI4MzkwMDE3MzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBDYWxsIFNpdGVzIG9mIGB3Y24zNnh4X2R4ZV9kZWluaXRgKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGZ1bGwgbGlmZWN5Y2xlIG9mIHRoaXMgYHdjbjM2eHhfZHhlX2RlaW5pdGAgZnVuY3Rpb24uIFRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gaW4gbXkgbWluZCBpczogd2hlcmUgZG9lcyBpdCBnZXQgY2FsbGVkPyBJIHdhbnQgYSBjb21wbGV0ZSBtYXAgb2YgYWxsIGl0cyBjYWxsIHNpdGVzLiBLbm93aW5nIHRoaXMgd2lsbCBnaXZlIG1lIGNyaXRpY2FsIGluc2lnaHRzIGludG8gaG93IHRoZSBkcml2ZXIgaXMgYmVpbmcgc2h1dCBkb3duLCB3aGF0IGRlcGVuZGVuY2llcyBpdCBoYXMgb24gb3RoZXIgY29tcG9uZW50cywgYW5kIHVsdGltYXRlbHksIHdoZXJlIHBvdGVudGlhbCBpc3N1ZXMgb3IgcmFjZSBjb25kaXRpb25zIG1pZ2h0IGJlIGx1cmtpbmcuIFRpbWUgdG8gc3RhcnQgdHJhY2luZyB0aGUgZXhlY3V0aW9uIGZsb3cgYW5kIG1hcCBpdCBhbGwgb3V0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjAwNiwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMDI6NDE6NTcuMjIxODk4MTUyWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MTc3MzI2OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ3Y24zNnh4X2R4ZV9kZWluaXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM9MTY4PXN0YXRpYyBpbnQgd2NuMzZ4eF9keGVfaW5pdF9kZXNjcyhzdHJ1Y3Qgd2NuMzZ4eCAqd2NuLCBzdHJ1Y3Qgd2NuMzZ4eF9keGVfY2ggKndjbl9jaClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTIyNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzoyMjg6c3RhdGljIHZvaWQgd2NuMzZ4eF9keGVfZGVpbml0X2Rlc2NzKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IHdjbjM2eHhfZHhlX2NoICp3Y25fY2gpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtMjI5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jPTkwMD1pbnQgd2NuMzZ4eF9keGVfaW5pdChzdHJ1Y3Qgd2NuMzZ4eCAqd2NuKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtMTAzNC1vdXRfZXJyX2lycTpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzoxMDM1OlxcdHdjbjM2eHhfZHhlX2RlaW5pdF9kZXNjcyh3Y24tXFx1MDAzZWRldiwgXFx1MDAyNndjbi1cXHUwMDNlZHhlX3J4X2hfY2gpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTEwMzYtb3V0X2Vycl9yeGhfY2g6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6MTAzNzpcXHR3Y24zNnh4X2R4ZV9kZWluaXRfZGVzY3Mod2NuLVxcdTAwM2VkZXYsIFxcdTAwMjZ3Y24tXFx1MDAzZWR4ZV9yeF9sX2NoKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy0xMDM4LW91dF9lcnJfcnhsX2NoOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjEwMzk6XFx0d2NuMzZ4eF9keGVfZGVpbml0X2Rlc2NzKHdjbi1cXHUwMDNlZGV2LCBcXHUwMDI2d2NuLVxcdTAwM2VkeGVfdHhfaF9jaCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtMTA0MC1vdXRfZXJyX3R4aF9jaDpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzoxMDQxOlxcdHdjbjM2eHhfZHhlX2RlaW5pdF9kZXNjcyh3Y24tXFx1MDAzZWRldiwgXFx1MDAyNndjbi1cXHUwMDNlZHhlX3R4X2xfY2gpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTEwNDItXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy0xMDQ1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjEwNDY6dm9pZCB3Y24zNnh4X2R4ZV9kZWluaXQoc3RydWN0IHdjbjM2eHggKndjbilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy0xMDQ3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTEwNzEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6MTA3MjpcXHR3Y24zNnh4X2R4ZV9kZWluaXRfZGVzY3Mod2NuLVxcdTAwM2VkZXYsIFxcdTAwMjZ3Y24tXFx1MDAzZWR4ZV90eF9sX2NoKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzoxMDczOlxcdHdjbjM2eHhfZHhlX2RlaW5pdF9kZXNjcyh3Y24tXFx1MDAzZWRldiwgXFx1MDAyNndjbi1cXHUwMDNlZHhlX3R4X2hfY2gpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjEwNzQ6XFx0d2NuMzZ4eF9keGVfZGVpbml0X2Rlc2NzKHdjbi1cXHUwMDNlZGV2LCBcXHUwMDI2d2NuLVxcdTAwM2VkeGVfcnhfbF9jaCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6MTA3NTpcXHR3Y24zNnh4X2R4ZV9kZWluaXRfZGVzY3Mod2NuLVxcdTAwM2VkZXYsIFxcdTAwMjZ3Y24tXFx1MDAzZWR4ZV9yeF9oX2NoKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy0xMDc2LX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5oPTQ2MT1pbnQgd2NuMzZ4eF9keGVfaW5pdChzdHJ1Y3Qgd2NuMzZ4eCAqd2NuKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuaDo0NjI6dm9pZCB3Y24zNnh4X2R4ZV9kZWluaXQoc3RydWN0IHdjbjM2eHggKndjbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmgtNDYzLWludCB3Y24zNnh4X2R4ZV9pbml0X2NoYW5uZWxzKHN0cnVjdCB3Y24zNnh4ICp3Y24pO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jPTI4MT1zdGF0aWMgdm9pZCB3Y24zNnh4X3N0b3Aoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIGJvb2wgc3VzcGVuZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0yOTktXFx0d2NuMzZ4eF9zbWRfc3RvcCh3Y24pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzozMDA6XFx0d2NuMzZ4eF9keGVfZGVpbml0KHdjbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTMwMS1cXHR3Y24zNnh4X3NtZF9jbG9zZSh3Y24pO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQwMjo0MTo1Ny4yNzM2NzU0NTFaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NjUxNTU0NTEyNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBXQ04zNnh4IERyaXZlcioqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIGB3Y24zNnh4YC4uLiByaWdodCwgdGhhdCdzIHRoZSBkcml2ZXIgZm9yIHRoZSBRdWFsY29tbSBBdGhlcm9zIFdDTjM2NjAgb3IgV0NOMzY4MCBtb2JpbGUgd2lyZWxlc3MgaGFyZHdhcmUuIE15IGltbWVkaWF0ZSBxdWVzdGlvbiBpcyBhbHdheXMsIGhvdyBpcyB0aGlzIHRoaW5nIGhvb2tlZCB1cD8gQWgsIGl0J3MgYSBwbGF0Zm9ybSBkcml2ZXIgdGhhdCBsaXZlcyBvbiB0aG9zZSBRdWFsY29tbSBTb0NzLCB1c2luZyBgcWNvbV93Y25zc2AsIHdoaWNoIG1lYW5zIGl0IGRlcGVuZHMgb24gUXVhbGNvbW0ncyBTTUQvUlBNU0cgc3R1ZmYgYW5kIHRoZSBTb0MgaGFyZHdhcmUgaXRzZWxmIOKAkyB0aGUgc3R1ZmYgYmFrZWQgaW50byB0aG9zZSBNU00vU25hcGRyYWdvbiBwbGF0Zm9ybXMgbGlrZSB0aGUgTVNNODk2MCBvciBNU004OTc0LlxuXG5Ob3csIGEgY3JpdGljYWwgcXVlc3Rpb24gZm9yIG1lLCBjYW4gSSBldmVuICp0ZXN0KiB0aGlzIHRoaW5nPyBDYW4gaXQgYmUgcHJvYmVkIG9yIGVtdWxhdGVkIGluIGEgc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBHb29nbGUgQ29tcHV0ZSBFbmdpbmUgb3IgUUVNVT8gSSBuZWVkIHRvIHRoaW5rIHRoaXMgdGhyb3VnaC4gTGV0IG1lIHF1aWNrbHkgcmVmZXJlbmNlIHNlY3Rpb24gMiBvZiBteSB0cmlhZ2UgcGhpbG9zb3BoeS4gKlN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZS4uLiogYW5kICpVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHMuLi4qIEkgbmVlZCB0byBzZWUgaWYgaXQgbWVldHMgdGhvc2UgY3JpdGVyaWEuXG5cbk9rYXksIG15IHRhcmdldCBhcmNoaXRlY3R1cmUgaXMgYW1kNjQuIEJ1dCBpc24ndCB0aGlzIFF1YWxjb21tIFdDTjM2eHggYW4gQVJNLWJhc2VkIFNvQyBwbGF0Zm9ybSBkZXZpY2U/IFRoZSBRdWFsY29tbSBTbmFwZHJhZ29uIGlzIGFuIEFSTSBwZXJpcGhlcmFsLiBIbW0uLi4gc28sIGlzIGl0IGFuIEFSTSBkZXZpY2UgZXhjbHVzaXZlbHksIG9yIGNhbiBpdCBwb3NzaWJseSBleGlzdCBvbiBhbWQ2ND8gSSBuZWVkIHRvIGNvbmZpcm0gdGhpcy4gSSB3aWxsIGNoZWNrIHRoZSBgb2ZfbWF0Y2hfdGFibGVgIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmNgIHRvIGNsYXJpZnkgdGhhdCBoYXJkd2FyZSBjb25maWd1cmF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzU1NCwiT3V0cHV0VG9rZW5zIjo0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM0MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQwMjo0MjowMy43ODkyMzA0NjdaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA1NTE5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNjYwLFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxNjYwOlxcdFxcbjE2NjE6XFx0XFx0aW91bm1hcCh3Y24tXFx1MDAzZWR4ZV9iYXNlKTtcXG4xNjYyOlxcdFxcdGlvdW5tYXAod2NuLVxcdTAwM2VjY3VfYmFzZSk7XFxuMTY2MzpcXHRcXG4xNjY0OlxcdFxcdF9fc2tiX3F1ZXVlX3B1cmdlKFxcdTAwMjZ3Y24tXFx1MDAzZWFtc2R1KTtcXG4xNjY1OlxcdFxcbjE2NjY6XFx0XFx0bXV0ZXhfZGVzdHJveShcXHUwMDI2d2NuLVxcdTAwM2VoYWxfbXV0ZXgpO1xcbjE2Njc6XFx0XFx0aWVlZTgwMjExX2ZyZWVfaHcoaHcpO1xcbjE2Njg6XFx0fVxcbjE2Njk6XFx0XFxuMTY3MDpcXHRzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCB3Y24zNnh4X29mX21hdGNoW10gPSB7XFxuMTY3MTpcXHRcXHR7IC5jb21wYXRpYmxlID0gXFxcInFjb20sd2Nuc3Mtd2xhblxcXCIgfSxcXG4xNjcyOlxcdFxcdHt9XFxuMTY3MzpcXHR9O1xcbjE2NzQ6XFx0TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgd2NuMzZ4eF9vZl9tYXRjaCk7XFxuMTY3NTpcXHRcXG4xNjc2OlxcdHN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIHdjbjM2eHhfZHJpdmVyID0ge1xcbjE2Nzc6XFx0XFx0LnByb2JlID0gd2NuMzZ4eF9wcm9iZSxcXG4xNjc4OlxcdFxcdC5yZW1vdmUgPSB3Y24zNnh4X3JlbW92ZSxcXG4xNjc5OlxcdFxcdC5kcml2ZXIgPSB7XFxuMTY4MDpcXHRcXHRcXHQubmFtZSA9IFxcXCJ3Y24zNnh4XFxcIixcXG4xNjgxOlxcdFxcdFxcdC5vZl9tYXRjaF90YWJsZSA9IHdjbjM2eHhfb2ZfbWF0Y2gsXFxuMTY4MjpcXHRcXHR9LFxcbjE2ODM6XFx0fTtcXG4xNjg0OlxcdFxcbjE2ODU6XFx0bW9kdWxlX3BsYXRmb3JtX2RyaXZlcih3Y24zNnh4X2RyaXZlcik7XFxuMTY4NjpcXHRcXG4xNjg3OlxcdE1PRFVMRV9ERVNDUklQVElPTihcXFwiUXVhbGNvbW0gQXRoZXJvcyBXQ04zNjYwLzM2ODAgd2lyZWxlc3MgZHJpdmVyXFxcIik7XFxuMTY4ODpcXHRNT0RVTEVfTElDRU5TRShcXFwiRHVhbCBCU0QvR1BMXFxcIik7XFxuMTY4OTpcXHRNT0RVTEVfQVVUSE9SKFxcXCJFdWdlbmUgS3Jhc25pa292IGsuZXVnZW5lLmVAZ21haWwuY29tXFxcIik7XFxuMTY5MDpcXHRNT0RVTEVfRklSTVdBUkUoV0xBTl9OVl9GSUxFKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMDI6NDI6MDMuNzg5MzM3NDY2WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjY0MzI3NzQ2ODQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgRnV6emluZyBXb3J0aGluZXNzIG9mIGB3Y24zNnh4YCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgYW5hbHlzaXMgb2YgYHdjbjM2eHhfb2ZfbWF0Y2hgIGNsZWFybHkgc2hvd3MgdGhpcyBpcyBhIHBsYXRmb3JtIGRyaXZlciwgc3BlY2lmaWNhbGx5IGRlc2lnbmVkIGZvciBRdWFsY29tbSdzIFdDTlNTIHN1YnN5c3RlbSB2aWEgT3BlbiBGaXJtd2FyZSAoRGV2aWNlIFRyZWUpIG9uIFF1YWxjb21tIEFSTSBTb0NzLiBUaGUga2V5IGdpdmVhd2F5IGlzIHRoZSBgY29tcGF0aWJsZSA9IFwicWNvbSx3Y25zcy13bGFuXCJgIG1hdGNoLiBUaGlzIGlzIGEgdGVsbHRhbGUgc2lnbiBvZiBhIHZlcnkgc3BlY2lmaWMgaGFyZHdhcmUgZGVwZW5kZW5jeS4gVGhlcmUncyBubyBQQ0kgSUQsIFVTQiBJRCwgb3IgQUNQSSBtYXRjaCwgc28gaXQncyBhbGwgYWJvdXQgdGhhdCBEZXZpY2UgVHJlZS5cblxuVGhlIGNydWNpYWwgcG9pbnQgaXMgdGhhdCBpbiBzdGFuZGFyZCBhbWQ2NCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSwgd2hpY2ggSSdtIGFzc3VtaW5nIGFyZSBvdXIgcHJpbWFyeSB0ZXN0aW5nIGdyb3VuZHMsIHRoZXJlIGlzICpubyogRGV2aWNlIFRyZWUgd2l0aCBhIGBxY29tLHdjbnNzLXdsYW5gIGRldmljZS4gVGhlcmUncyBubyBRdWFsY29tbSBXQ05TUyBSUE1TRyBoYXJkd2FyZSBwcmVzZW50LiBUaGVyZWZvcmUsIHRoaXMgZHJpdmVyLCBieSBpdHMgdmVyeSBuYXR1cmUsICpjYW5ub3QqIHByb2JlIG9yIGluaXRpYWxpemUgaW4gdGhvc2UgZW52aXJvbm1lbnRzLiBUaGlzIGlzIGZ1cnRoZXIgY29uZmlybWVkIGJlY2F1c2UgdGhlIG1vZGlmaWVkIGZ1bmN0aW9uIGB3Y24zNnh4X2R4ZV9kZWluaXRgIGlzIGxvY2F0ZWQgaW4gYGR4ZS5jYCBhbmQgaXMgb25seSBldmVyIHJlYWNoZWQgdmlhIGB3Y24zNnh4X3N0b3BgLCB3aGljaCBpdHNlbGYgcmVxdWlyZXMgdGhlIGRyaXZlciB0byBiZSBzdWNjZXNzZnVsbHkgcHJvYmVkIGFuZCBzdGFydGVkLlxuXG5UbyBiZSBhYnNvbHV0ZWx5IHN1cmUsIGxldCdzIGNvbmZpcm0gdGhlIG5lZ2F0aXZlcy4gRmlyc3QsIHRoZSBoYXJkd2FyZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGU6IGl0J3MgYSBRdWFsY29tbSBXQ04zNjYwLzM2ODAgU29DIHBsYXRmb3JtIGRyaXZlciBkZXBlbmRlbnQgb24gYSBXQ05TUyBzdWJzeXN0ZW0sIHdoaWNoIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIC8gR0NFLiBTZWNvbmQsIHRoZSBhcmNoaXRlY3R1cmUgaXMgd3Jvbmc7IGl0J3MgYSBRdWFsY29tbSBwbGF0Zm9ybSBkZXZpY2UgbWVhbnQgZm9yIEFSTSBTb0NzLCBhbmQgdGhlIHRhcmdldCBpcyBhbWQ2NC4gVGhhdCdzIGEgZG91YmxlIHdoYW1teSBmb3IgcmVhY2hhYmlsaXR5LlxuXG5TbywgaW4gY29uY2x1c2lvbiwgYFdvcnRoRnV6emluZ2AgaXMgdW5lcXVpdm9jYWxseSBgZmFsc2VgIGhlcmUuXG5cblRvIGRvdWJsZS1jaGVjayB0aGUgZGV0YWlscywgSSByZXZpZXdlZCB0aGUgY2hhbmdlLCB3aGljaCBpbnZvbHZlcyB0aGUgcmVwbGFjZW1lbnQgb2YgYHRpbWVyX2RlbGV0ZWAgd2l0aCBgdGltZXJfc2h1dGRvd25fc3luY2Agb24gYHdjbi1cdTAwM2V0eF9hY2tfdGltZXJgIGluIGB3Y24zNnh4X2R4ZV9kZWluaXQoKWAuIFRoZSBsb2NhdGlvbiBpcyBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmNgLiBJdCdzIGEgUXVhbGNvbW0gQXRoZXJvcyBXQ04zNjYwLzM2ODAgd2lyZWxlc3MgZHJpdmVyLCBhbmQgaXQgaXMgYW4gT0YgcGxhdGZvcm0gZHJpdmVyIGZvciBRdWFsY29tbSBXQ05TUy4gQ29uc2lkZXJpbmcgdGhlIGFyY2hpdGVjdHVyZSBhbmQgcmVhY2hhYmlsaXR5LCBpdCBpcyB1bnJlYWNoYWJsZSBpbiBzdGFuZGFyZCB4ODYvYW1kNjQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChRRU1VL0dDRSkgYmVjYXVzZSB0aGUgaGFyZHdhcmUvRGV2aWNlIFRyZWUgcGxhdGZvcm0gZGV2aWNlIGlzIG5vdCBwcmVzZW50LlxuXG5UaGVyZWZvcmUsIHRoZSBmaW5hbCBhbnN3ZXIgaXM6XG5cbi0gICAqKldvcnRoRnV6emluZzogZmFsc2UqKlxuLSAgICoqRm9jdXNTeW1ib2xzOiBcXFsgXSoqXG4tICAgKipFbmFibGVDb25maWdzOiBcXFsgXSoqXG4tICAgKipSZWFzb25pbmc6IHdjbjM2eHggaXMgYSBRdWFsY29tbSBTb0MgcGxhdGZvcm0gZHJpdmVyIChtYXRjaGluZyBPRiBjb21wYXRpYmxlIFwicWNvbSx3Y25zcy13bGFuXCIpIHJlcXVpcmluZyBRdWFsY29tbSBXQ05TUyBoYXJkd2FyZSwgd2hpY2ggaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIHg4Ni9hbWQ2NCB0ZXN0IGVudmlyb25tZW50cy4qKlxuXG5UaW1lIHRvIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI0NzY4LCJPdXRwdXRUb2tlbnMiOjExNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY1NywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDAyOjQyOjEwLjIyMjExNDM1MVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMzNzQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIG1vZGlmaWVkIGNvZGUgaXMgaW4gdGhlIFF1YWxjb21tIEF0aGVyb3MgV0NOMzY2MC8zNjgwIHdpcmVsZXNzIGRyaXZlciAod2NuMzZ4eCksIHdoaWNoIGlzIGFuIE9GIHBsYXRmb3JtIGRyaXZlciBmb3IgUXVhbGNvbW0gU29DcyByZXF1aXJpbmcgUXVhbGNvbW0gV0NOU1MvUlBNU0cgaGFyZHdhcmUuIEl0IGNhbm5vdCBiZSBwcm9iZWQgb3IgZXhlY3V0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChzdWNoIGFzIFFFTVUgb3IgR0NFIG9uIGFtZDY0KSwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIG1vZGlmaWVkIGNvZGUgaXMgaW4gdGhlIFF1YWxjb21tIEF0aGVyb3MgV0NOMzY2MC8zNjgwIHdpcmVsZXNzIGRyaXZlciAod2NuMzZ4eCksIHdoaWNoIGlzIGFuIE9GIHBsYXRmb3JtIGRyaXZlciBmb3IgUXVhbGNvbW0gU29DcyByZXF1aXJpbmcgUXVhbGNvbW0gV0NOU1MvUlBNU0cgaGFyZHdhcmUuIEl0IGNhbm5vdCBiZSBwcm9iZWQgb3IgZXhlY3V0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChzdWNoIGFzIFFFTVUgb3IgR0NFIG9uIGFtZDY0KSwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDAyOjQyOjEwLjIyMjE1MTc0MVoiLCJTZXEiOjE3LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDE4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowd8w2d[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-10 02:17:03 +0000 UTC FinishedAt: 2026-09-10 02:42:11 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDAyOjQxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgbW9kaWZpZWQgY29kZSBpcyBpbiB0aGUgUXVhbGNvbW0gQXRoZXJvcyBXQ04zNjYwLzM2ODAgd2lyZWxlc3MgZHJpdmVyICh3Y24zNnh4KSwgd2hpY2ggaXMgYW4gT0YgcGxhdGZvcm0gZHJpdmVyIGZvciBRdWFsY29tbSBTb0NzIHJlcXVpcmluZyBRdWFsY29tbSBXQ05TUy9SUE1TRyBoYXJkd2FyZS4gSXQgY2Fubm90IGJlIHByb2JlZCBvciBleGVjdXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKHN1Y2ggYXMgUUVNVSBvciBHQ0Ugb24gYW1kNjQpLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAwMjo0MTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDM4YzQ4OGFlMmVkNDhlODc5NjlkODU2Yzk3ZGYzNmVjMmM1NzEwNjNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IFNlcCAxMCAwMjo0MTozMyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jXG5pbmRleCA0NDAyMGVjMjY1ZmI2Li44MDFmMTIxOGVmODliIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jXG5AQCAtMTA1NSw3ICYjNDM7MTA1NSw3IEBAIHZvaWQgd2NuMzZ4eF9keGVfZGVpbml0KHN0cnVjdCB3Y24zNnh4ICp3Y24pXG4gXG4gXHRmcmVlX2lycSh3Y24tXHUwMDNldHhfaXJxLCB3Y24pO1xuIFx0ZnJlZV9pcnEod2NuLVx1MDAzZXJ4X2lycSwgd2NuKTtcbi1cdHRpbWVyX2RlbGV0ZShcdTAwMjZ3Y24tXHUwMDNldHhfYWNrX3RpbWVyKTtcbiYjNDM7XHR0aW1lcl9zaHV0ZG93bl9zeW5jKFx1MDAyNndjbi1cdTAwM2V0eF9hY2tfdGltZXIpO1xuIFxuIFx0aWYgKHdjbi1cdTAwM2V0eF9hY2tfc2tiKSB7XG4gXHRcdGllZWU4MDIxMV90eF9zdGF0dXNfaXJxc2FmZSh3Y24tXHUwMDNlaHcsIHdjbi1cdTAwM2V0eF9hY2tfc2tiKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAwMjo0MTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBtb2RpZmllZCBjb2RlIGlzIGluIHRoZSBRdWFsY29tbSBBdGhlcm9zIFdDTjM2NjAvMzY4MCB3aXJlbGVzcyBkcml2ZXIgKHdjbjM2eHgpLCB3aGljaCBpcyBhbiBPRiBwbGF0Zm9ybSBkcml2ZXIgZm9yIFF1YWxjb21tIFNvQ3MgcmVxdWlyaW5nIFF1YWxjb21tIFdDTlNTL1JQTVNHIGhhcmR3YXJlLiBJdCBjYW5ub3QgYmUgcHJvYmVkIG9yIGV4ZWN1dGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoc3VjaCBhcyBRRU1VIG9yIEdDRSBvbiBhbWQ2NCksIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3MKdG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncywKYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy4KCi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6CiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZAogIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuCiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLAogIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy4KCi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgJiMzNDtOTyBGVU5DVElPTkFMIENIQU5HRSYjMzQ7IChORkNJKSBPUiAmIzM0O1JFRkFDVE9SSU5HJiMzNDsgQ0xBSU1TOgogIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgJiMzNDtjbGVhbnVwcyYjMzQ7LCAmIzM0O3JlZmFjdG9yaW5ncyYjMzQ7LCBvciBzdGF0ZQogICYjMzQ7Tm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQmIzM0Oy4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuCiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50CiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuCiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC4KCi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6CiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLAogIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLgogIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXIKICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoyLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOgoKLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOgogICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLgogICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pCiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuCiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50cwogICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy4KICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy4KLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6CiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczoKICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZwogICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuCiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQozLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6Ci0gQ29yZSBTdWJzeXN0ZW1zOgogICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLAogICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLgotIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczoKICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy4KLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6CiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuCi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczoKICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpXaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjoKCi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOgogIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzCiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHQKICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS4KICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgJiMzNDtmb2N1c2VkJiMzNDssCiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLgoKLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6CiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzCiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuCgotIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKToKICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrCiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuCiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyCiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOgotIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCi0gQ2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC4KLSBTdHJpcCBhbnkgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMzhjNDg4YWUyZWQ0OGU4Nzk2OWQ4NTZjOTdkZjM2ZWMyYzU3MTA2MwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgU2VwIDEwIDAyOjQxOjMzIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYwppbmRleCA0NDAyMGVjMjY1ZmI2Li44MDFmMTIxOGVmODliIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYwpAQCAtMTA1NSw3ICYjNDM7MTA1NSw3IEBAIHZvaWQgd2NuMzZ4eF9keGVfZGVpbml0KHN0cnVjdCB3Y24zNnh4ICp3Y24pCiAKIAlmcmVlX2lycSh3Y24tJmd0O3R4X2lycSwgd2NuKTsKIAlmcmVlX2lycSh3Y24tJmd0O3J4X2lycSwgd2NuKTsKLQl0aW1lcl9kZWxldGUoJmFtcDt3Y24tJmd0O3R4X2Fja190aW1lcik7CiYjNDM7CXRpbWVyX3NodXRkb3duX3N5bmMoJmFtcDt3Y24tJmd0O3R4X2Fja190aW1lcik7CiAKIAlpZiAod2NuLSZndDt0eF9hY2tfc2tiKSB7CiAJCWllZWU4MDIxMV90eF9zdGF0dXNfaXJxc2FmZSh3Y24tJmd0O2h3LCB3Y24tJmd0O3R4X2Fja19za2IpOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAwMjo0MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTUwCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMzg4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUGF0Y2g6IEEgRGVlcCBEaXZlKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBJIG5lZWQgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiB3aGF0IHRoaXMgcGF0Y2ggaXMgZG9pbmcuIFRoZSBgZGlmZmAgc2hvd3MgYSBjaGFuZ2UgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jYC4gUmlnaHQgYXdheSwgSSBrbm93IHRvIGZvY3VzIG9uIHRoaXMgYXJlYSDigJMgaXQmIzM5O3MgYSBkcml2ZXIgZmlsZSwgd2hpY2ggaXMgdXN1YWxseSB0aGUgaGVhcnQgb2YgdGhlIGludGVyYWN0aW9uIGJldHdlZW4gdGhlIGtlcm5lbCBhbmQgdGhlIGhhcmR3YXJlLiBJIGNhbiBzZWUgdGhlIGNoYW5nZSBpcyBpbiBob3cgdGhlIGRyaXZlciBoYW5kbGVzIHNvbWUgZm9ybSBvZiB0aW1lci4gU3BlY2lmaWNhbGx5LCB0aGUgbGluZSBgdGltZXJfZGVsZXRlYCBpcyBub3cgYHRpbWVyX3NodXRkb3duX3N5bmNgLiBUaGF04oCZcyBhIHNpZ25pZmljYW50IGRpZmZlcmVuY2UuIFVzaW5nIGB0aW1lcl9zaHV0ZG93bl9zeW5jYCBzdWdnZXN0cyBhIG1vcmUgcm9idXN0IGFuZCBwb3NzaWJseSBzYWZlciB3YXkgdG8gc2h1dCBkb3duIHRoZSB0aW1lciwgZW5zdXJpbmcgYWxsIHBlbmRpbmcgd29yayBpcyBjb21wbGV0ZWQgYmVmb3JlIGRlLWluaXRpYWxpemluZy4gVGhpcyBpbmRpY2F0ZXMgdGhleSYjMzk7cmUgYWRkcmVzc2luZyBhIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbiBvciBjbGVhbnVwIGlzc3VlIGR1cmluZyBtb2R1bGUgdW5sb2FkIG9yIGRyaXZlciBkZS1pbml0aWFsaXphdGlvbi4KCk5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQuIFRoZSBgd2NuMzZ4eGAgbmFtaW5nIGlzIGZhbWlsaWFyLiBBaCwgcmlnaHQsIFF1YWxjb21tIEF0aGVyb3MgV0NOMzY2MC8zNjgwLiBUaGF0IG5hcnJvd3MgdGhlIGZvY3VzIGNvbnNpZGVyYWJseS4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZXNlIGRldmljZXMgYW5kIHRoZSBhc3NvY2lhdGVkIGRlc2lnbiBhbmQgaGFyZHdhcmUgYXJjaGl0ZWN0dXJlLiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSBzdXJyb3VuZGluZyBjb2RlIGFuZCBLY29uZmlnIGZpbGVzIGZvciBhbnkgZGVwZW5kZW5jaWVzIG9yIGhhcmR3YXJlLXNwZWNpZmljIGNvbmZpZ3VyYXRpb25zLiBVbmRlcnN0YW5kaW5nIHRoZSBoYXJkd2FyZSYjMzk7cyBpbnRyaWNhY2llcyBpcyBjcnVjaWFsIHRvIGZ1bGx5IGFwcHJlY2lhdGluZyB0aGUgaW1wbGljYXRpb24gb2YgdGhpcyBjaGFuZ2UuIElzIHRoaXMgYSBjb21tb24gbW9kdWxlLCBvciBpcyBpdCB2ZXJ5IGhhcmR3YXJlLXNwZWNpZmljPyBJJiMzOTtsbCBjaGVjayBpdHMgbG9jYXRpb24gaW4gdGhlIGRyaXZlciBzdHJ1Y3R1cmUgdG8gZmluZCBvdXQuIFRoaXMgbGlrZWx5IGFmZmVjdHMgYSBzcGVjaWZpYyBzZXQgb2Ygd2lyZWxlc3MgYWRhcHRlcnMsIGFuZCBJIG11c3QgYXNzZXNzIHdoZXRoZXIgdGhpcyBpcyByZWxldmFudCB0byB0aGUgc3lzdGVtcyBJIHdvcmsgb24uIEkgc2hvdWxkIGFsc28gaW52ZXN0aWdhdGUgb3RoZXIgcmVsYXRlZCBmaWxlcyB0byBlbnN1cmUgdGhpcyBjaGFuZ2UgZG9lc27igJl0IGludHJvZHVjZSBhbnkgcmVncmVzc2lvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMDI6NDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7d2NuMzZ4eCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA1MzY5IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9LY29uZmlnPTI9Y29uZmlnIFdDTjM2WFhcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9LY29uZmlnLTEwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvS2NvbmZpZzoxMTpcdCAgSWYgeW91IGNob29zZSB0byBidWlsZCBhIG1vZHVsZSwgaXQmIzM5O2xsIGJlIGNhbGxlZCB3Y24zNnh4LlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvS2NvbmZpZy0xMi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9NYWtlZmlsZS0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IElTQ1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvTWFrZWZpbGU6MjpvYmotJChDT05GSUdfV0NOMzZYWCkgOj0gd2NuMzZ4eC5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9NYWtlZmlsZTozOndjbjM2eHgteSAmIzQzOz0gICBtYWluLm8gXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L01ha2VmaWxlLTQtICAgICAgICAgICAgICAgZHhlLm8gXFxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9NYWtlZmlsZS0xMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L01ha2VmaWxlOjExOndjbjM2eHgtJChDT05GSUdfTkw4MDIxMV9URVNUTU9ERSkgJiM0Mzs9IHRlc3Rtb2RlLm9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5jLTIwLSNpbmNsdWRlIFx1MDAzY2xpbnV4L3VhY2Nlc3MuaFx1MDAzZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuYzoyMTojaW5jbHVkZSBcJiMzNDt3Y24zNnh4LmhcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2RlYnVnLmMtMjItI2luY2x1ZGUgXCYjMzQ7ZGVidWcuaFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2RlYnVnLmM9Mjg9c3RhdGljIHNzaXplX3QgcmVhZF9maWxlX2Jvb2xfYm1wcyhzdHJ1Y3QgZmlsZSAqZmlsZSwgY2hhciBfX3VzZXIgKnVzZXJfYnVmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2RlYnVnLmMtMzAte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuYzozMTpcdHN0cnVjdCB3Y24zNnh4ICp3Y24gPSBmaWxlLVx1MDAzZXByaXZhdGVfZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2RlYnVnLmM6MzI6XHRzdHJ1Y3Qgd2NuMzZ4eF92aWYgKnZpZl9wcml2ID0gTlVMTDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2RlYnVnLmMtMzMtXHRzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmID0gTlVMTDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5jLTM2LVx0bGlzdF9mb3JfZWFjaF9lbnRyeSh2aWZfcHJpdiwgXHUwMDI2d2NuLVx1MDAzZXZpZl9saXN0LCBsaXN0KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5jOjM3Olx0XHRcdHZpZiA9IHdjbjM2eHhfcHJpdl90b192aWYodmlmX3ByaXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuYy0zOC1cdFx0XHRpZiAoTkw4MDIxMV9JRlRZUEVfU1RBVElPTiA9PSB2aWYtXHUwMDNldHlwZSkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2RlYnVnLmM9NTI9c3RhdGljIHNzaXplX3Qgd3JpdGVfZmlsZV9ib29sX2JtcHMoc3RydWN0IGZpbGUgKmZpbGUsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuYy01NS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5jOjU2Olx0c3RydWN0IHdjbjM2eHggKndjbiA9IGZpbGUtXHUwMDNlcHJpdmF0ZV9kYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuYzo1NzpcdHN0cnVjdCB3Y24zNnh4X3ZpZiAqdmlmX3ByaXYgPSBOVUxMO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuYy01OC1cdHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYgPSBOVUxMO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2RlYnVnLmMtNzEtXHRcdGxpc3RfZm9yX2VhY2hfZW50cnkodmlmX3ByaXYsIFx1MDAyNndjbi1cdTAwM2V2aWZfbGlzdCwgbGlzdCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuYzo3MjpcdFx0XHR2aWYgPSB3Y24zNnh4X3ByaXZfdG9fdmlmKHZpZl9wcml2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2RlYnVnLmMtNzMtXHRcdFx0aWYgKE5MODAyMTFfSUZUWVBFX1NUQVRJT04gPT0gdmlmLVx1MDAzZXR5cGUpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2RlYnVnLmM6NzQ6XHRcdFx0XHR3Y24zNnh4X2VuYWJsZV9rZWVwX2FsaXZlX251bGxfcGFja2V0KHdjbiwgdmlmKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2RlYnVnLmM6NzU6XHRcdFx0XHR3Y24zNnh4X3BtY19lbnRlcl9ibXBzX3N0YXRlKHdjbiwgdmlmKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2RlYnVnLmMtNzYtXHRcdFx0fVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2RlYnVnLmMtODItXHRcdGxpc3RfZm9yX2VhY2hfZW50cnkodmlmX3ByaXYsIFx1MDAyNndjbi1cdTAwM2V2aWZfbGlzdCwgbGlzdCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuYzo4MzpcdFx0XHR2aWYgPSB3Y24zNnh4X3ByaXZfdG9fdmlmKHZpZl9wcml2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2RlYnVnLmMtODQtXHRcdFx0aWYgKE5MODAyMTFfSUZUWVBFX1NUQVRJT04gPT0gdmlmLVx1MDAzZXR5cGUpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5jOjg1Olx0XHRcdFx0d2NuMzZ4eF9wbWNfZXhpdF9ibXBzX3N0YXRlKHdjbiwgdmlmKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2RlYnVnLmMtODYtXHRcdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5jLTkyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuYzo5MzpzdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBmb3BzX3djbjM2eHhfYm1wcyA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2RlYnVnLmMtOTQtXHQub3BlbiA9IHNpbXBsZV9vcGVuLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2RlYnVnLmM9OTk9c3RhdGljIHNzaXplX3Qgd3JpdGVfZmlsZV9kdW1wKHN0cnVjdCBmaWxlICpmaWxlLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2RlYnVnLmMtMTAyLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2RlYnVnLmM6MTAzOlx0c3RydWN0IHdjbjM2eHggKndjbiA9IGZpbGUtXHUwMDNlcHJpdmF0ZV9kYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuYy0xMDQtXHRjaGFyIGJ1ZlsyNTVdLCAqdG1wO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2RlYnVnLmMtMTI3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuYzoxMjg6XHR3Y24zNnh4X2luZm8oXCYjMzQ7RFVNUCBhcmdzIGlzICVkICVkICVkICVkICVkXFxuXCYjMzQ7LCBhcmdbMF0sIGFyZ1sxXSwgYXJnWzJdLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuYy0xMjktXHRcdCAgICAgYXJnWzNdLCBhcmdbNF0pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuYzoxMzA6XHR3Y24zNnh4X3NtZF9kdW1wX2NtZF9yZXEod2NuLCBhcmdbMF0sIGFyZ1sxXSwgYXJnWzJdLCBhcmdbM10sIGFyZ1s0XSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5jLTEzMS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5jLTEzNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2RlYnVnLmM6MTM1OnN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGZvcHNfd2NuMzZ4eF9kdW1wID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuYy0xMzYtXHQub3BlbiA9IHNpbXBsZV9vcGVuLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2RlYnVnLmM9MTQwPXN0YXRpYyBzc2l6ZV90IHJlYWRfZmlsZV9maXJtd2FyZV9mZWF0dXJlX2NhcHMoc3RydWN0IGZpbGUgKmZpbGUsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuYy0xNDMte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuYzoxNDQ6XHRzdHJ1Y3Qgd2NuMzZ4eCAqd2NuID0gZmlsZS1cdTAwM2Vwcml2YXRlX2RhdGE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5jLTE0NS1cdHNpemVfdCBsZW4gPSAwLCBidWZfbGVuID0gMjA0ODtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5jLTE1NS1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIE1BWF9GRUFUVVJFX1NVUFBPUlRFRDsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2RlYnVnLmM6MTU2Olx0XHRpZiAod2NuMzZ4eF9maXJtd2FyZV9nZXRfZmVhdF9jYXBzKHdjbi1cdTAwM2Vmd19mZWF0X2NhcHMsIGkpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5jLTE1Ny1cdFx0XHRsZW4gJiM0Mzs9IHNjbnByaW50ZihidWYgJiM0MzsgbGVuLCBidWZfbGVuIC0gbGVuLCBcJiMzNDslc1xcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2RlYnVnLmM6MTU4Olx0XHRcdFx0XHQgd2NuMzZ4eF9maXJtd2FyZV9nZXRfY2FwX25hbWUoaSkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuYy0xNTktXHRcdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5jLTE3MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2RlYnVnLmM6MTcxOnN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGZvcHNfd2NuMzZ4eF9maXJtd2FyZV9mZWF0X2NhcHMgPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5jLTE3Mi1cdC5vcGVuID0gc2ltcGxlX29wZW4sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuYy0xODMtXHRcdGlmIChJU19FUlIoZCkpIHtcdFx0XHRcdFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5jOjE4NDpcdFx0XHR3Y24zNnh4X3dhcm4oXCYjMzQ7Q3JlYXRlIHRoZSBkZWJ1Z2ZzIGVudHJ5IGZhaWxlZFwmIzM0Oyk7XFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2RlYnVnLmMtMTg1LVx0XHRcdGRmcy1cdTAwM2VmaWxlXyMjbmFtZS5kZW50cnkgPSBOVUxMO1x0XHRcXFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2RlYnVnLmMtMTg5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuYzoxOTA6dm9pZCB3Y24zNnh4X2RlYnVnZnNfaW5pdChzdHJ1Y3Qgd2NuMzZ4eCAqd2NuKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuYy0xOTEte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuYzoxOTI6XHRzdHJ1Y3Qgd2NuMzZ4eF9kZnNfZW50cnkgKmRmcyA9IFx1MDAyNndjbi1cdTAwM2VkZnM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5jLTE5My1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5jLTE5Ni1cdGlmIChJU19FUlIoZGZzLVx1MDAzZXJvb3RkaXIpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5jOjE5NzpcdFx0d2NuMzZ4eF93YXJuKFwmIzM0O0NyZWF0ZSB0aGUgZGVidWdmcyBmYWlsZWRcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuYy0xOTgtXHRcdGRmcy1cdTAwM2Vyb290ZGlyID0gTlVMTDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5jLTIwMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2RlYnVnLmM6MjAxOlx0QUREX0ZJTEUoYm1wc19zd2l0Y2hlciwgMDYwMCwgXHUwMDI2Zm9wc193Y24zNnh4X2JtcHMsIHdjbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5jOjIwMjpcdEFERF9GSUxFKGR1bXAsIDAyMDAsIFx1MDAyNmZvcHNfd2NuMzZ4eF9kdW1wLCB3Y24pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuYy0yMDMtXHRBRERfRklMRShmaXJtd2FyZV9mZWF0X2NhcHMsIDAyMDAsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5jOjIwNDpcdFx0IFx1MDAyNmZvcHNfd2NuMzZ4eF9maXJtd2FyZV9mZWF0X2NhcHMsIHdjbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5jLTIwNS19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5jLTIwNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2RlYnVnLmM6MjA3OnZvaWQgd2NuMzZ4eF9kZWJ1Z2ZzX2V4aXQoc3RydWN0IHdjbjM2eHggKndjbilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2RlYnVnLmMtMjA4LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2RlYnVnLmM6MjA5Olx0c3RydWN0IHdjbjM2eHhfZGZzX2VudHJ5ICpkZnMgPSBcdTAwMjZ3Y24tXHUwMDNlZGZzO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuYy0yMTAtXHRkZWJ1Z2ZzX3JlbW92ZV9yZWN1cnNpdmUoZGZzLVx1MDAzZXJvb3RkaXIpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2RlYnVnLmgtMjQtI2lmZGVmIENPTkZJR19XQ04zNlhYX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2RlYnVnLmg6MjU6c3RydWN0IHdjbjM2eHhfZGZzX2ZpbGUge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuaC0yNi1cdHN0cnVjdCBkZW50cnkgKmRlbnRyeTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5oLTI5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuaDozMDpzdHJ1Y3Qgd2NuMzZ4eF9kZnNfZW50cnkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuaC0zMS1cdHN0cnVjdCBkZW50cnkgKnJvb3RkaXI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5oOjMyOlx0c3RydWN0IHdjbjM2eHhfZGZzX2ZpbGUgZmlsZV9ibXBzX3N3aXRjaGVyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuaDozMzpcdHN0cnVjdCB3Y24zNnh4X2Rmc19maWxlIGZpbGVfZHVtcDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2RlYnVnLmg6MzQ6XHRzdHJ1Y3Qgd2NuMzZ4eF9kZnNfZmlsZSBmaWxlX2Zpcm13YXJlX2ZlYXRfY2FwcztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2RlYnVnLmgtMzUtfTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2RlYnVnLmgtMzYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5oOjM3OnZvaWQgd2NuMzZ4eF9kZWJ1Z2ZzX2luaXQoc3RydWN0IHdjbjM2eHggKndjbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5oOjM4OnZvaWQgd2NuMzZ4eF9kZWJ1Z2ZzX2V4aXQoc3RydWN0IHdjbjM2eHggKndjbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5oLTM5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuaC00MC0jZWxzZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuaDo0MTpzdGF0aWMgaW5saW5lIHZvaWQgd2NuMzZ4eF9kZWJ1Z2ZzX2luaXQoc3RydWN0IHdjbjM2eHggKndjbilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2RlYnVnLmgtNDIte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuaC00My19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5oOjQ0OnN0YXRpYyBpbmxpbmUgdm9pZCB3Y24zNnh4X2RlYnVnZnNfZXhpdChzdHJ1Y3Qgd2NuMzZ4eCAqd2NuKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuaC00NS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtMjYtI2luY2x1ZGUgXHUwMDNjbGludXgvc29jL3Fjb20vc21lbV9zdGF0ZS5oXHUwMDNlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzoyNzojaW5jbHVkZSBcJiMzNDt3Y24zNnh4LmhcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTI4LSNpbmNsdWRlIFwmIzM0O3R4cnguaFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtMjktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzozMDpzdGF0aWMgdm9pZCB3Y24zNnh4X2NjdV93cml0ZV9yZWdpc3RlcihzdHJ1Y3Qgd2NuMzZ4eCAqd2NuLCBpbnQgYWRkciwgaW50IGRhdGEpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy0zMS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzozMjpcdHdjbjM2eHhfZGJnKFdDTjM2WFhfREJHX0RYRSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjMzOlx0XHQgICAgXCYjMzQ7d2NuMzZ4eF9jY3Vfd3JpdGVfcmVnaXN0ZXI6IGFkZHI9JXgsIGRhdGE9JXhcXG5cJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy0zNC1cdFx0ICAgIGFkZHIsIGRhdGEpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTM4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6Mzk6c3RhdGljIHZvaWQgd2NuMzZ4eF9keGVfd3JpdGVfcmVnaXN0ZXIoc3RydWN0IHdjbjM2eHggKndjbiwgaW50IGFkZHIsIGludCBkYXRhKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNDAte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6NDE6XHR3Y24zNnh4X2RiZyhXQ04zNlhYX0RCR19EWEUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzo0MjpcdFx0ICAgIFwmIzM0O3djbjM2eHhfZHhlX3dyaXRlX3JlZ2lzdGVyOiBhZGRyPSV4LCBkYXRhPSV4XFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNDMtXHRcdCAgICBhZGRyLCBkYXRhKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy00Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjQ4OnN0YXRpYyB2b2lkIHdjbjM2eHhfZHhlX3JlYWRfcmVnaXN0ZXIoc3RydWN0IHdjbjM2eHggKndjbiwgaW50IGFkZHIsIGludCAqZGF0YSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTQ5LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy01MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjUyOlx0d2NuMzZ4eF9kYmcoV0NOMzZYWF9EQkdfRFhFLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6NTM6XHRcdCAgICBcJiMzNDt3Y24zNnh4X2R4ZV9yZWFkX3JlZ2lzdGVyOiBhZGRyPSV4LCBkYXRhPSV4XFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNTQtXHRcdCAgICBhZGRyLCAqZGF0YSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzo1NzpzdGF0aWMgdm9pZCB3Y24zNnh4X2R4ZV9mcmVlX2N0bF9ibG9jayhzdHJ1Y3Qgd2NuMzZ4eF9keGVfY2ggKmNoKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNTgte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6NTk6XHRzdHJ1Y3Qgd2NuMzZ4eF9keGVfY3RsICpjdGwgPSBjaC1cdTAwM2VoZWFkX2Jsa19jdGwsICpuZXh0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNjAtXHRpbnQgaTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy02OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjY5OnN0YXRpYyBpbnQgd2NuMzZ4eF9keGVfYWxsb2NhdGVfY3RsX2Jsb2NrKHN0cnVjdCB3Y24zNnh4X2R4ZV9jaCAqY2gpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy03MC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzo3MTpcdHN0cnVjdCB3Y24zNnh4X2R4ZV9jdGwgKnByZXZfY3RsID0gTlVMTDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjcyOlx0c3RydWN0IHdjbjM2eHhfZHhlX2N0bCAqY3VyX2N0bCA9IE5VTEw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy03My1cdGludCBpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTk2LW91dF9mYWlsOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6OTc6XHR3Y24zNnh4X2R4ZV9mcmVlX2N0bF9ibG9jayhjaCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy05OC1cdHJldHVybiAtRU5PTUVNO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTEwMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjEwMTppbnQgd2NuMzZ4eF9keGVfYWxsb2NfY3RsX2Jsa3Moc3RydWN0IHdjbjM2eHggKndjbilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTEwMi17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtMTMwLVx0LyogRFhFIGNvbnRyb2wgYmxvY2sgYWxsb2NhdGlvbiAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6MTMxOlx0cmV0ID0gd2NuMzZ4eF9keGVfYWxsb2NhdGVfY3RsX2Jsb2NrKFx1MDAyNndjbi1cdTAwM2VkeGVfdHhfbF9jaCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy0xMzItXHRpZiAocmV0KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtMTMzLVx0XHRnb3RvIG91dF9lcnI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzoxMzQ6XHRyZXQgPSB3Y24zNnh4X2R4ZV9hbGxvY2F0ZV9jdGxfYmxvY2soXHUwMDI2d2NuLVx1MDAzZWR4ZV90eF9oX2NoKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTEzNS1cdGlmIChyZXQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy0xMzYtXHRcdGdvdG8gb3V0X2VycjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjEzNzpcdHJldCA9IHdjbjM2eHhfZHhlX2FsbG9jYXRlX2N0bF9ibG9jayhcdTAwMjZ3Y24tXHUwMDNlZHhlX3J4X2xfY2gpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtMTM4LVx0aWYgKHJldClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTEzOS1cdFx0Z290byBvdXRfZXJyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6MTQwOlx0cmV0ID0gd2NuMzZ4eF9keGVfYWxsb2NhdGVfY3RsX2Jsb2NrKFx1MDAyNndjbi1cdTAwM2VkeGVfcnhfaF9jaCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy0xNDEtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTE1NC1vdXRfZXJyOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6MTU1Olx0d2NuMzZ4eF9lcnIoXCYjMzQ7RmFpbGVkIHRvIGFsbG9jYXRlIERYRSBjb250cm9sIGJsb2Nrc1xcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzoxNTY6XHR3Y24zNnh4X2R4ZV9mcmVlX2N0bF9ibGtzKHdjbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy0xNTctXHRyZXR1cm4gLUVOT01FTTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy0xNTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzoxNjA6dm9pZCB3Y24zNnh4X2R4ZV9mcmVlX2N0bF9ibGtzKHN0cnVjdCB3Y24zNnh4ICp3Y24pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy0xNjEte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6MTYyOlx0d2NuMzZ4eF9keGVfZnJlZV9jdGxfYmxvY2soXHUwMDI2d2NuLVx1MDAzZWR4ZV90eF9sX2NoKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjE2MzpcdHdjbjM2eHhfZHhlX2ZyZWVfY3RsX2Jsb2NrKFx1MDAyNndjbi1cdTAwM2VkeGVfdHhfaF9jaCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzoxNjQ6XHR3Y24zNnh4X2R4ZV9mcmVlX2N0bF9ibG9jayhcdTAwMjZ3Y24tXHUwMDNlZHhlX3J4X2xfY2gpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6MTY1Olx0d2NuMzZ4eF9keGVfZnJlZV9jdGxfYmxvY2soXHUwMDI2d2NuLVx1MDAzZWR4ZV9yeF9oX2NoKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTE2Ni19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy0xNjctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzoxNjg6c3RhdGljIGludCB3Y24zNnh4X2R4ZV9pbml0X2Rlc2NzKHN0cnVjdCB3Y24zNnh4ICp3Y24sIHN0cnVjdCB3Y24zNnh4X2R4ZV9jaCAqd2NuX2NoKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtMTY5LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTE3MC1cdHN0cnVjdCBkZXZpY2UgKmRldiA9IHdjbi1cdTAwM2VkZXY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzoxNzE6XHRzdHJ1Y3Qgd2NuMzZ4eF9keGVfZGVzYyAqY3VyX2R4ZSA9IE5VTEw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzoxNzI6XHRzdHJ1Y3Qgd2NuMzZ4eF9keGVfZGVzYyAqcHJldl9keGUgPSBOVUxMO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6MTczOlx0c3RydWN0IHdjbjM2eHhfZHhlX2N0bCAqY3VyX2N0bCA9IE5VTEw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy0xNzQtXHRzaXplX3Qgc2l6ZTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy0xNzYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzoxNzc6XHRzaXplID0gd2NuX2NoLVx1MDAzZWRlc2NfbnVtICogc2l6ZW9mKHN0cnVjdCB3Y24zNnh4X2R4ZV9kZXNjKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTE3OC1cdHdjbl9jaC1cdTAwM2VjcHVfYWRkciA9IGRtYV9hbGxvY19jb2hlcmVudChkZXYsIHNpemUsIFx1MDAyNndjbl9jaC1cdTAwM2VkbWFfYWRkcixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy0xODgtXHRcdGN1cl9jdGwtXHUwMDNlZGVzY19waHlfYWRkciA9IHdjbl9jaC1cdTAwM2VkbWFfYWRkciAmIzQzO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6MTg5Olx0XHRcdGkgKiBzaXplb2Yoc3RydWN0IHdjbjM2eHhfZHhlX2Rlc2MpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtMTkwLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTIyNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjIyODpzdGF0aWMgdm9pZCB3Y24zNnh4X2R4ZV9kZWluaXRfZGVzY3Moc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3Qgd2NuMzZ4eF9keGVfY2ggKndjbl9jaClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTIyOS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtMjMxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6MjMyOlx0c2l6ZSA9IHdjbl9jaC1cdTAwM2VkZXNjX251bSAqIHNpemVvZihzdHJ1Y3Qgd2NuMzZ4eF9keGVfZGVzYyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy0yMzMtXHRkbWFfZnJlZV9jb2hlcmVudChkZXYsIHNpemUsd2NuX2NoLVx1MDAzZWNwdV9hZGRyLCB3Y25fY2gtXHUwMDNlZG1hX2FkZHIpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTIzNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjIzNjpzdGF0aWMgdm9pZCB3Y24zNnh4X2R4ZV9pbml0X3R4X2JkKHN0cnVjdCB3Y24zNnh4X2R4ZV9jaCAqY2gsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzoyMzc6XHRcdFx0XHQgICBzdHJ1Y3Qgd2NuMzZ4eF9keGVfbWVtX3Bvb2wgKnBvb2wpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy0yMzgte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTI0MS1cdHZvaWQgKmJkX2NwdV9hZGRyID0gcG9vbC1cdTAwM2V2aXJ0X2FkZHI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzoyNDI6XHRzdHJ1Y3Qgd2NuMzZ4eF9keGVfY3RsICpjdXIgPSBjaC1cdTAwM2VoZWFkX2Jsa19jdGw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy0yNDMtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtMjU5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6MjYwOnN0YXRpYyBpbnQgd2NuMzZ4eF9keGVfZW5hYmxlX2NoX2ludChzdHJ1Y3Qgd2NuMzZ4eCAqd2NuLCB1MTYgd2NuX2NoKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtMjYxLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy0yNjMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzoyNjQ6XHR3Y24zNnh4X2R4ZV9yZWFkX3JlZ2lzdGVyKHdjbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTI2NS1cdFx0XHRcdCAgV0NOMzZYWF9EWEVfSU5UX01BU0tfUkVHLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTI2OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjI3MDpcdHdjbjM2eHhfZHhlX3dyaXRlX3JlZ2lzdGVyKHdjbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTI3MS1cdFx0XHRcdCAgIFdDTjM2WFhfRFhFX0lOVF9NQVNLX1JFRyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy0yNzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzoyNzY6c3RhdGljIHZvaWQgd2NuMzZ4eF9keGVfZGlzYWJsZV9jaF9pbnQoc3RydWN0IHdjbjM2eHggKndjbiwgdTE2IHdjbl9jaClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTI3Ny17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtMjc5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6MjgwOlx0d2NuMzZ4eF9keGVfcmVhZF9yZWdpc3Rlcih3Y24sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy0yODEtXHRcdFx0XHQgIFdDTjM2WFhfRFhFX0lOVF9NQVNLX1JFRyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy0yODUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzoyODY6XHR3Y24zNnh4X2R4ZV93cml0ZV9yZWdpc3Rlcih3Y24sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy0yODctXHRcdFx0XHQgICBXQ04zNlhYX0RYRV9JTlRfTUFTS19SRUcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtMjkwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6MjkxOnN0YXRpYyBpbnQgd2NuMzZ4eF9keGVfZmlsbF9za2Ioc3RydWN0IGRldmljZSAqZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6MjkyOlx0XHRcdFx0c3RydWN0IHdjbjM2eHhfZHhlX2N0bCAqY3RsLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtMjkzLVx0XHRcdFx0Z2ZwX3QgZ2ZwKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtMjk0LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjI5NTpcdHN0cnVjdCB3Y24zNnh4X2R4ZV9kZXNjICpkeGUgPSBjdGwtXHUwMDNlZGVzYztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTI5Ni1cdHN0cnVjdCBza19idWZmICpza2I7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtMzE1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6MzE2OnN0YXRpYyBpbnQgd2NuMzZ4eF9keGVfY2hfYWxsb2Nfc2tiKHN0cnVjdCB3Y24zNnh4ICp3Y24sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzozMTc6XHRcdFx0XHQgICAgc3RydWN0IHdjbjM2eHhfZHhlX2NoICp3Y25fY2gpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy0zMTgte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtMzE5LVx0aW50IGk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzozMjA6XHRzdHJ1Y3Qgd2NuMzZ4eF9keGVfY3RsICpjdXJfY3RsID0gTlVMTDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTMyMS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy0zMjQtXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyB3Y25fY2gtXHUwMDNlZGVzY19udW07IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzozMjU6XHRcdHdjbjM2eHhfZHhlX2ZpbGxfc2tiKHdjbi1cdTAwM2VkZXYsIGN1cl9jdGwsIEdGUF9LRVJORUwpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtMzI2LVx0XHRjdXJfY3RsID0gY3VyX2N0bC1cdTAwM2VuZXh0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTMzMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjMzMjpzdGF0aWMgdm9pZCB3Y24zNnh4X2R4ZV9jaF9mcmVlX3NrYnMoc3RydWN0IHdjbjM2eHggKndjbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjMzMzpcdFx0XHRcdCAgICAgc3RydWN0IHdjbjM2eHhfZHhlX2NoICp3Y25fY2gpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy0zMzQte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6MzM1Olx0c3RydWN0IHdjbjM2eHhfZHhlX2N0bCAqY3VyID0gd2NuX2NoLVx1MDAzZWhlYWRfYmxrX2N0bDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTMzNi1cdGludCBpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTM0My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjM0NDp2b2lkIHdjbjM2eHhfZHhlX3R4X2Fja19pbmQoc3RydWN0IHdjbjM2eHggKndjbiwgdTMyIHN0YXR1cylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTM0NS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtMzU2LVx0aWYgKCFza2IpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjM1NzpcdFx0d2NuMzZ4eF93YXJuKFwmIzM0O1NwdXJpb3VzIFRYIGNvbXBsZXRlIGluZGljYXRpb25cXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtMzU4LVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtMzY3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6MzY4Olx0d2NuMzZ4eF9kYmcoV0NOMzZYWF9EQkdfRFhFLCBcJiMzNDtkeGUgdHggYWNrIHN0YXR1czogJWRcXG5cJiMzNDssIHN0YXR1cyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy0zNjktXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtMzczLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6Mzc0OnN0YXRpYyB2b2lkIHdjbjM2eHhfZHhlX3R4X3RpbWVyKHN0cnVjdCB0aW1lcl9saXN0ICp0KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtMzc1LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjM3NjpcdHN0cnVjdCB3Y24zNnh4ICp3Y24gPSB0aW1lcl9jb250YWluZXJfb2Yod2NuLCB0LCB0eF9hY2tfdGltZXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtMzc3LVx0c3RydWN0IGllZWU4MDIxMV90eF9pbmZvICppbmZvO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTM4MS1cdC8qIFRYIFRpbWVvdXQgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjM4MjpcdHdjbjM2eHhfZGJnKFdDTjM2WFhfREJHX0RYRSwgXCYjMzQ7VFggdGltZW91dFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy0zODMtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtMzk5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6NDAwOnN0YXRpYyB2b2lkIHJlYXBfdHhfZHhlcyhzdHJ1Y3Qgd2NuMzZ4eCAqd2NuLCBzdHJ1Y3Qgd2NuMzZ4eF9keGVfY2ggKmNoKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNDAxLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjQwMjpcdHN0cnVjdCB3Y24zNnh4X2R4ZV9jdGwgKmN0bDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTQwMy1cdHN0cnVjdCBpZWVlODAyMTFfdHhfaW5mbyAqaW5mbztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy00NTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzo0NTQ6c3RhdGljIGlycXJldHVybl90IHdjbjM2eHhfaXJxX3R4X2NvbXBsZXRlKGludCBpcnEsIHZvaWQgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTQ1NS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzo0NTY6XHRzdHJ1Y3Qgd2NuMzZ4eCAqd2NuID0gZGV2O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNDU3LVx0aW50IGludF9zcmMsIGludF9yZWFzb247XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy00NTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzo0NTk6XHR3Y24zNnh4X2R4ZV9yZWFkX3JlZ2lzdGVyKHdjbiwgV0NOMzZYWF9EWEVfSU5UX1NSQ19SQVdfUkVHLCBcdTAwMjZpbnRfc3JjKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTQ2MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTQ2MS1cdGlmIChpbnRfc3JjIFx1MDAyNiBXQ04zNlhYX0lOVF9NQVNLX0NIQU5fVFhfSCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6NDYyOlx0XHR3Y24zNnh4X2R4ZV9yZWFkX3JlZ2lzdGVyKHdjbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTQ2My1cdFx0XHRcdFx0ICBXQ04zNlhYX0RYRV9DSF9TVEFUVVNfUkVHX0FERFJfVFhfSCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy00NjUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzo0NjY6XHRcdHdjbjM2eHhfZHhlX3dyaXRlX3JlZ2lzdGVyKHdjbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTQ2Ny1cdFx0XHRcdFx0ICAgV0NOMzZYWF9EWEVfMF9JTlRfQ0xSLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTQ3MC1cdFx0aWYgKGludF9yZWFzb24gXHUwMDI2IFdDTjM2WFhfQ0hfU1RBVF9JTlRfRVJSX01BU0sgKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzo0NzE6XHRcdFx0d2NuMzZ4eF9keGVfd3JpdGVfcmVnaXN0ZXIod2NuLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNDcyLVx0XHRcdFx0XHRcdCAgIFdDTjM2WFhfRFhFXzBfSU5UX0VSUl9DTFIsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNDc0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6NDc1Olx0XHRcdHdjbjM2eHhfZXJyKFwmIzM0O0RYRSBJUlEgcmVwb3J0ZWQgZXJyb3I6IDB4JXggaW4gaGlnaCBUWCBjaGFubmVsXFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNDc2LVx0XHRcdFx0XHRpbnRfc3JjKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy00NzktXHRcdGlmIChpbnRfcmVhc29uIFx1MDAyNiBXQ04zNlhYX0NIX1NUQVRfSU5UX0RPTkVfTUFTSykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6NDgwOlx0XHRcdHdjbjM2eHhfZHhlX3dyaXRlX3JlZ2lzdGVyKHdjbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTQ4MS1cdFx0XHRcdFx0XHQgICBXQ04zNlhYX0RYRV8wX0lOVF9ET05FX0NMUixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy00ODUtXHRcdGlmIChpbnRfcmVhc29uIFx1MDAyNiBXQ04zNlhYX0NIX1NUQVRfSU5UX0VEX01BU0spIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjQ4NjpcdFx0XHR3Y24zNnh4X2R4ZV93cml0ZV9yZWdpc3Rlcih3Y24sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy00ODctXHRcdFx0XHRcdFx0ICAgV0NOMzZYWF9EWEVfMF9JTlRfRURfQ0xSLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTQ5MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjQ5MTpcdFx0d2NuMzZ4eF9kYmcoV0NOMzZYWF9EQkdfRFhFLCBcJiMzNDtkeGUgdHggcmVhZHkgaGlnaCwgcmVhc29uICUwOHhcXG5cJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy00OTItXHRcdFx0ICAgIGludF9yZWFzb24pO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTUwMC1cdGlmIChpbnRfc3JjIFx1MDAyNiBXQ04zNlhYX0lOVF9NQVNLX0NIQU5fVFhfTCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6NTAxOlx0XHR3Y24zNnh4X2R4ZV9yZWFkX3JlZ2lzdGVyKHdjbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTUwMi1cdFx0XHRcdFx0ICBXQ04zNlhYX0RYRV9DSF9TVEFUVVNfUkVHX0FERFJfVFhfTCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy01MDQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzo1MDU6XHRcdHdjbjM2eHhfZHhlX3dyaXRlX3JlZ2lzdGVyKHdjbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTUwNi1cdFx0XHRcdFx0ICAgV0NOMzZYWF9EWEVfMF9JTlRfQ0xSLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTUwOS1cdFx0aWYgKGludF9yZWFzb24gXHUwMDI2IFdDTjM2WFhfQ0hfU1RBVF9JTlRfRVJSX01BU0sgKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzo1MTA6XHRcdFx0d2NuMzZ4eF9keGVfd3JpdGVfcmVnaXN0ZXIod2NuLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNTExLVx0XHRcdFx0XHRcdCAgIFdDTjM2WFhfRFhFXzBfSU5UX0VSUl9DTFIsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNTEzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6NTE0Olx0XHRcdHdjbjM2eHhfZXJyKFwmIzM0O0RYRSBJUlEgcmVwb3J0ZWQgZXJyb3I6IDB4JXggaW4gbG93IFRYIGNoYW5uZWxcXG5cJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy01MTUtXHRcdFx0XHRcdGludF9zcmMpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTUxOC1cdFx0aWYgKGludF9yZWFzb24gXHUwMDI2IFdDTjM2WFhfQ0hfU1RBVF9JTlRfRE9ORV9NQVNLKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzo1MTk6XHRcdFx0d2NuMzZ4eF9keGVfd3JpdGVfcmVnaXN0ZXIod2NuLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNTIwLVx0XHRcdFx0XHRcdCAgIFdDTjM2WFhfRFhFXzBfSU5UX0RPTkVfQ0xSLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTUyNC1cdFx0aWYgKGludF9yZWFzb24gXHUwMDI2IFdDTjM2WFhfQ0hfU1RBVF9JTlRfRURfTUFTSykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6NTI1Olx0XHRcdHdjbjM2eHhfZHhlX3dyaXRlX3JlZ2lzdGVyKHdjbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTUyNi1cdFx0XHRcdFx0XHQgICBXQ04zNlhYX0RYRV8wX0lOVF9FRF9DTFIsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNTI5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6NTMwOlx0XHR3Y24zNnh4X2RiZyhXQ04zNlhYX0RCR19EWEUsIFwmIzM0O2R4ZSB0eCByZWFkeSBsb3csIHJlYXNvbiAlMDh4XFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNTMxLVx0XHRcdCAgICBpbnRfcmVhc29uKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy01NDEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzo1NDI6c3RhdGljIGlycXJldHVybl90IHdjbjM2eHhfaXJxX3J4X3JlYWR5KGludCBpcnEsIHZvaWQgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTU0My17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzo1NDQ6XHRzdHJ1Y3Qgd2NuMzZ4eCAqd2NuID0gZGV2O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNTQ1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6NTQ2Olx0d2NuMzZ4eF9keGVfcnhfZnJhbWUod2NuKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTU0Ny1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy01NTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzo1NTE6c3RhdGljIGludCB3Y24zNnh4X2R4ZV9yZXF1ZXN0X2lycXMoc3RydWN0IHdjbjM2eHggKndjbilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTU1Mi17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNTU0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6NTU1Olx0cmV0ID0gcmVxdWVzdF9pcnEod2NuLVx1MDAzZXR4X2lycSwgd2NuMzZ4eF9pcnFfdHhfY29tcGxldGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzo1NTY6XHRcdFx0ICBJUlFGX1RSSUdHRVJfSElHSCwgXCYjMzQ7d2NuMzZ4eF90eFwmIzM0Oywgd2NuKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTU1Ny1cdGlmIChyZXQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjU1ODpcdFx0d2NuMzZ4eF9lcnIoXCYjMzQ7ZmFpbGVkIHRvIGFsbG9jIHR4IGlycVxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy01NTktXHRcdGdvdG8gb3V0X2Vycjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy01NjEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzo1NjI6XHRyZXQgPSByZXF1ZXN0X2lycSh3Y24tXHUwMDNlcnhfaXJxLCB3Y24zNnh4X2lycV9yeF9yZWFkeSwgSVJRRl9UUklHR0VSX0hJR0gsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzo1NjM6XHRcdFx0ICBcJiMzNDt3Y24zNnh4X3J4XCYjMzQ7LCB3Y24pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNTY0LVx0aWYgKHJldCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6NTY1Olx0XHR3Y24zNnh4X2VycihcJiMzNDtmYWlsZWQgdG8gYWxsb2MgcnggaXJxXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTU2Ni1cdFx0Z290byBvdXRfdHhpcnE7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNTc5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6NTgwOnN0YXRpYyBpbnQgd2NuMzZ4eF9yeF9oYW5kbGVfcGFja2V0cyhzdHJ1Y3Qgd2NuMzZ4eCAqd2NuLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6NTgxOlx0XHRcdFx0ICAgICBzdHJ1Y3Qgd2NuMzZ4eF9keGVfY2ggKmNoLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNTgyLVx0XHRcdFx0ICAgICB1MzIgY3RybCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy01ODYte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6NTg3Olx0c3RydWN0IHdjbjM2eHhfZHhlX2Rlc2MgKmR4ZTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjU4ODpcdHN0cnVjdCB3Y24zNnh4X2R4ZV9jdGwgKmN0bDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTU4OS1cdGRtYV9hZGRyX3QgIGRtYV9hZGRyO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTU5My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjU5NDpcdHdjbjM2eHhfZHhlX3JlYWRfcmVnaXN0ZXIod2NuLCBzdGF0dXNfcmVnLCBcdTAwMjZpbnRfcmVhc29uKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjU5NTpcdHdjbjM2eHhfZHhlX3dyaXRlX3JlZ2lzdGVyKHdjbiwgV0NOMzZYWF9EWEVfMF9JTlRfQ0xSLCBpbnRfbWFzayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy01OTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy01OTctXHRpZiAoaW50X3JlYXNvbiBcdTAwMjYgV0NOMzZYWF9DSF9TVEFUX0lOVF9FUlJfTUFTSykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6NTk4Olx0XHR3Y24zNnh4X2R4ZV93cml0ZV9yZWdpc3Rlcih3Y24sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy01OTktXHRcdFx0XHRcdCAgIFdDTjM2WFhfRFhFXzBfSU5UX0VSUl9DTFIsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNjAxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6NjAyOlx0XHR3Y24zNnh4X2VycihcJiMzNDtEWEUgSVJRIHJlcG9ydGVkIGVycm9yIG9uIFJYIGNoYW5uZWxcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNjAzLVx0fVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTYwNS1cdGlmIChpbnRfcmVhc29uIFx1MDAyNiBXQ04zNlhYX0NIX1NUQVRfSU5UX0RPTkVfTUFTSylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjYwNjpcdFx0d2NuMzZ4eF9keGVfd3JpdGVfcmVnaXN0ZXIod2NuLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNjA3LVx0XHRcdFx0XHQgICBXQ04zNlhYX0RYRV8wX0lOVF9ET05FX0NMUixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy02MTAtXHRpZiAoaW50X3JlYXNvbiBcdTAwMjYgV0NOMzZYWF9DSF9TVEFUX0lOVF9FRF9NQVNLKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6NjExOlx0XHR3Y24zNnh4X2R4ZV93cml0ZV9yZWdpc3Rlcih3Y24sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy02MTItXHRcdFx0XHRcdCAgIFdDTjM2WFhfRFhFXzBfSU5UX0VEX0NMUixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy02MzAtXHRcdGRtYV9hZGRyID0gZHhlLVx1MDAzZWRzdF9hZGRyX2w7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzo2MzE6XHRcdHJldCA9IHdjbjM2eHhfZHhlX2ZpbGxfc2tiKHdjbi1cdTAwM2VkZXYsIGN0bCwgR0ZQX0FUT01JQyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy02MzItXHRcdGlmICgwID09IHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTYzNy1cdFx0XHRcdFx0RE1BX0ZST01fREVWSUNFKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjYzODpcdFx0XHR3Y24zNnh4X3J4X3NrYih3Y24sIHNrYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy02MzktXHRcdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy02NTAtXHR9XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzo2NTE6XHR3Y24zNnh4X2R4ZV93cml0ZV9yZWdpc3Rlcih3Y24sIFdDTjM2WFhfRFhFX0VOQ0hfQUREUiwgZW5fbWFzayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy02NTItXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNjU5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6NjYwOnZvaWQgd2NuMzZ4eF9keGVfcnhfZnJhbWUoc3RydWN0IHdjbjM2eHggKndjbilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTY2MS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNjYzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6NjY0Olx0d2NuMzZ4eF9keGVfcmVhZF9yZWdpc3Rlcih3Y24sIFdDTjM2WFhfRFhFX0lOVF9TUkNfUkFXX1JFRywgXHUwMDI2aW50X3NyYyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy02NjUtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNjY3LVx0aWYgKGludF9zcmMgXHUwMDI2IFdDTjM2WFhfRFhFX0lOVF9DSDFfTUFTSylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjY2ODpcdFx0d2NuMzZ4eF9yeF9oYW5kbGVfcGFja2V0cyh3Y24sIFx1MDAyNndjbi1cdTAwM2VkeGVfcnhfbF9jaCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTY2OS1cdFx0XHRcdFx0ICBXQ04zNlhYX0RYRV9DVFJMX1JYX0wsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNjc1LVx0aWYgKGludF9zcmMgXHUwMDI2IFdDTjM2WFhfRFhFX0lOVF9DSDNfTUFTSylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjY3NjpcdFx0d2NuMzZ4eF9yeF9oYW5kbGVfcGFja2V0cyh3Y24sIFx1MDAyNndjbi1cdTAwM2VkeGVfcnhfaF9jaCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTY3Ny1cdFx0XHRcdFx0ICBXQ04zNlhYX0RYRV9DVFJMX1JYX0gsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNjgyLVx0aWYgKCFpbnRfc3JjKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6NjgzOlx0XHR3Y24zNnh4X3dhcm4oXCYjMzQ7Tm8gRFhFIGludGVycnVwdCBwZW5kaW5nXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTY4NC19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy02ODUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzo2ODY6aW50IHdjbjM2eHhfZHhlX2FsbG9jYXRlX21lbV9wb29scyhzdHJ1Y3Qgd2NuMzZ4eCAqd2NuKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNjg3LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy03MjMtb3V0X2VycjpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjcyNDpcdHdjbjM2eHhfZHhlX2ZyZWVfbWVtX3Bvb2xzKHdjbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzo3MjU6XHR3Y24zNnh4X2VycihcJiMzNDtGYWlsZWQgdG8gYWxsb2NhdGUgQkQgbWVtcG9vbFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy03MjYtXHRyZXR1cm4gLUVOT01FTTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy03MjgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzo3Mjk6dm9pZCB3Y24zNnh4X2R4ZV9mcmVlX21lbV9wb29scyhzdHJ1Y3Qgd2NuMzZ4eCAqd2NuKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNzMwLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy03NDQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzo3NDU6aW50IHdjbjM2eHhfZHhlX3R4X2ZyYW1lKHN0cnVjdCB3Y24zNnh4ICp3Y24sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzo3NDY6XHRcdFx0IHN0cnVjdCB3Y24zNnh4X3ZpZiAqdmlmX3ByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzo3NDc6XHRcdFx0IHN0cnVjdCB3Y24zNnh4X3R4X2JkICpiZCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTc0OC1cdFx0XHQgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy03NTAte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6NzUxOlx0c3RydWN0IHdjbjM2eHhfZHhlX2Rlc2MgKmRlc2NfYmQsICpkZXNjX3NrYjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjc1MjpcdHN0cnVjdCB3Y24zNnh4X2R4ZV9jdGwgKmN0bF9iZCwgKmN0bF9za2I7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzo3NTM6XHRzdHJ1Y3Qgd2NuMzZ4eF9keGVfY2ggKmNoID0gTlVMTDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTc1NC1cdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNzc1LVx0aWYgKHVubGlrZWx5KGN0bF9za2ItXHUwMDNlYmRfY3B1X2FkZHIpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzo3NzY6XHRcdHdjbjM2eHhfZXJyKFwmIzM0O2JkX2NwdV9hZGRyIGNhbm5vdCBiZSBOVUxMIGZvciBza2IgRFhFXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTc3Ny1cdFx0cmV0ID0gLUVJTlZBTDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy03OTEtXHRkZXNjX2JkLVx1MDAzZWRzdF9hZGRyX2wgPSBjaC1cdTAwM2VkeGVfd3E7XG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAwMjo0MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODgxMAoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqSW52ZXN0aWdhdGluZyBXQ04zNlhYIEtjb25maWcgYW5kIEJ1cyBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkgbmVlZCB0byBxdWlja2x5IGdldCBhIGhhbmRsZSBvbiB0aGUgV0NOMzZYWCBkcml2ZXImIzM5O3MgY29uZmlndXJhdGlvbiB3aXRoaW4gdGhlIGtlcm5lbC4gTXkgaW1tZWRpYXRlIGZvY3VzIGlzIG9uIGl0cyBLY29uZmlnIGVudHJpZXMuIFNwZWNpZmljYWxseSwgSSB3YW50IHRvIHBpbnBvaW50IHdoZXJlIHRoZSBXQ04zNlhYIGlzIGRlZmluZWQgYW5kIGhvdyBpdHMgYnVzIHR5cGUgaXMgc3BlY2lmaWVkLiBUaGlzIGlzIHdoZXJlIEkgY2FuIHN0YXJ0IHVuZGVyc3RhbmRpbmcgaXRzIGRlcGVuZGVuY2llcyBhbmQgaW5zdGFudGlhdGlvbiBwcm9jZWR1cmUuIEtub3dpbmcgdGhlIHVuZGVybHlpbmcgYnVzIOKAkyBTUEksIFNESU8sIFBDSWUsIGV0Yy4g4oCTIHdpbGwgYmUgY3J1Y2lhbCBmb3IgZGVidWdnaW5nIGFueSBpc3N1ZXMgb3Igb3B0aW1pemluZyBpdHMgaW50ZWdyYXRpb24uIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIGNvbmZpZ3VyYXRpb24gc3ltYm9scywgbGlrZWx5IGBDT05GSUdfV0NOMzZYWGAgYW5kIHBvdGVudGlhbGx5IHJlbGF0ZWQgYnVzLXNwZWNpZmljIG9wdGlvbnMgbGlrZSBgQ09ORklHX1dDTjM2WFhfU1BJYCBvciB0aGUgbGlrZSwgdG8gdW5kZXJzdGFuZCB0aGUgYnVpbGQtdGltZSBvcHRpb25zIGFuZCBob3cgdG8gZW5hYmxlL2Rpc2FibGUgdGhpcyBmZWF0dXJlLiBXaXRoIHRoYXQgaW5mb3JtYXRpb24gaW4gaGFuZCwgSSBjYW4gdGhlbiBkaXZlIGRlZXBlciBpbnRvIHRoZSBkcml2ZXIgY29kZSBpZiBuZWVkIGJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDAyOjQxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IElTQ1xuICAgMjpcdGNvbmZpZyBXQ04zNlhYXG4gICAzOlx0XHR0cmlzdGF0ZSBcJiMzNDtRdWFsY29tbSBBdGhlcm9zIFdDTjM2NjAvMzY4MCBzdXBwb3J0XCYjMzQ7XG4gICA0Olx0XHRkZXBlbmRzIG9uIE1BQzgwMjExIFx1MDAyNlx1MDAyNiBIQVNfRE1BXG4gICA1Olx0XHRkZXBlbmRzIG9uIFFDT01fV0NOU1NfQ1RSTCB8fCBRQ09NX1dDTlNTX0NUUkw9blxuICAgNjpcdFx0ZGVwZW5kcyBvbiBSUE1TRyB8fCBSUE1TRz1uXG4gICA3Olx0XHRoZWxwXG4gICA4Olx0XHQgIFRoaXMgbW9kdWxlIGFkZHMgc3VwcG9ydCBmb3Igd2lyZWxlc3MgYWRhcHRlcnMgYmFzZWQgb25cbiAgIDk6XHRcdCAgUXVhbGNvbW0gQXRoZXJvcyBXQ04zNjYwIGFuZCBXQ04zNjgwIG1vYmlsZSBjaGlwc2V0cy5cbiAgMTA6XHRcbiAgMTE6XHRcdCAgSWYgeW91IGNob29zZSB0byBidWlsZCBhIG1vZHVsZSwgaXQmIzM5O2xsIGJlIGNhbGxlZCB3Y24zNnh4LlxuICAxMjpcdFxuICAxMzpcdGNvbmZpZyBXQ04zNlhYX0RFQlVHRlNcbiAgMTQ6XHRcdGJvb2wgXCYjMzQ7V0NOMzZYWCBkZWJ1Z2ZzIHN1cHBvcnRcJiMzNDtcbiAgMTU6XHRcdGRlcGVuZHMgb24gV0NOMzZYWFxuICAxNjpcdFx0aGVscFxuICAxNzpcdFx0ICBFbmFibGVkIGRlYnVnZnMgc3VwcG9ydFxuICAxODpcdFxuICAxOTpcdFx0ICBJZiB1bnN1cmUsIHNheSBZIHRvIG1ha2UgaXQgZWFzaWVyIHRvIGRlYnVnIHByb2JsZW1zLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDAyOjQxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5Mzc0CgkJCQkJCQlvdXRwdXQ6IDUwCgkJCQkJCQl0aG91Z2h0czogNDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBmcm9tIGFuIGV4cGVydCYjMzk7cyBwZXJzcGVjdGl2ZToKCioqRGl2aW5nIGludG8gdGhlIFdDTjM2WFggRHJpdmVyIEluaXRpYWxpemF0aW9uKioKCkFscmlnaHQsIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBXQ04zNlhYIGRyaXZlciBpcyBpbml0aWFsaXplZCwgd2hhdCBoYXJkd2FyZSBpdCYjMzk7cyBkZXNpZ25lZCB0byBpbnRlcmZhY2Ugd2l0aCwgYW5kIGhvdyBpdCYjMzk7cyBhdHRhY2hpbmcgdG8gdGhlIHN5c3RlbS4gVGhlIGJlc3QgcGxhY2UgdG8gc3RhcnQgaXMgYWx3YXlzIHRoZSBjb3JlLiBMZXQmIzM5O3MgbG9vayBhdCBgbWFpbi5jYCB3aXRoaW4gdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9gIGRpcmVjdG9yeS4gVGhhdCYjMzk7cyB1c3VhbGx5IHdoZXJlIHRoZSBoZWFydCBvZiB0aGUgcHJvYmUgZnVuY3Rpb24gbGllcyDigJMgdGhlIGVudHJ5IHBvaW50IHdoZXJlIHRoZSBkcml2ZXIgZGV0ZXJtaW5lcyBkZXZpY2UgcHJlc2VuY2UsIGNvbmZpZ3VyYXRpb24sIGFuZCBob3cgaXQgYmluZHMgdG8gdGhlIGJ1cy4gSSBleHBlY3QgdG8gZmluZCB0aGUgc3RhbmRhcmQgYG1vZHVsZV9pbml0YCBhbmQgYG1vZHVsZV9leGl0YCBtYWNyb3MsIHdoaWNoIHdpbGwgZGVmaW5lIHRoZSBwcm9iZSBhbmQgcmVtb3ZlIGZ1bmN0aW9ucy4gSSYjMzk7bGwgYmUgbG9va2luZyBzcGVjaWZpY2FsbHkgYXQgdGhlIHByb2JlIGZ1bmN0aW9uIHRvIHVuZGVyc3RhbmQgd2hpY2ggZGV2aWNlIElEcyBpdCBzdXBwb3J0cyBhbmQsIG1vcmUgYnJvYWRseSwgd2hpY2ggYnVzIHR5cGVzIGl0JiMzOTtzIHByZXBhcmVkIHRvIGhhbmRsZSDigJMgUENJZSwgU0RJTywgVVNCLCBldGMuIEtub3dpbmcgdGhlIGF0dGFjaG1lbnQgbWV0aG9kIGlzIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBkZXZpY2UmIzM5O3MgY2FwYWJpbGl0aWVzIGFuZCBjb25zdHJhaW50cy4gVGhpcyBpbmZvcm1hdGlvbiB3aWxsIGluZm9ybSBteSBuZXh0IHN0ZXBzIGluIGFzc2Vzc2luZyBpdHMgb3ZlcmFsbCBhcmNoaXRlY3R1cmUgYW5kIHBlcmZvcm1hbmNlIGNoYXJhY3RlcmlzdGljcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAwMjo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttb2R1bGVfcGxhdGZvcm1fZHJpdmVyfG1vZHVsZV9pbml0fGRyaXZlcl9yZWdpc3RlcnxwbGF0Zm9ybV9kcml2ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM9MTY3ND1NT0RVTEVfREVWSUNFX1RBQkxFKG9mLCB3Y24zNnh4X29mX21hdGNoKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0xNjc1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjE2NzY6c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgd2NuMzZ4eF9kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtMTY3Ny1cdC5wcm9iZSA9IHdjbjM2eHhfcHJvYmUsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTE2ODQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6MTY4NTptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKHdjbjM2eHhfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0xNjg2LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDAyOjQxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5OTYxCgkJCQkJCQlvdXRwdXQ6IDQ3CgkJCQkJCQl0aG91Z2h0czogMzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYW5hbHlzaXMgb2YgdGhlIHByb3ZpZGVkIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gd2NuMzZ4eF9wcm9iZSoqCgpPa2F5LCBzbyB0aGUgbWVudGFsIHRocmVhZCBzdGFydHMgd2l0aCBgd2NuMzZ4eF9wcm9iZWAgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uY2AuIENsZWFybHksIHdlJiMzOTtyZSBhdCB0aGUgZGV2aWNlIHByb2JlIHN0YWdlIGZvciB0aGUgV0NOMzZ4eCB3aXJlbGVzcyBjaGlwc2V0IHdpdGhpbiB0aGUgQXRoZXJvcyBmYW1pbHkgb2YgZHJpdmVycy4gVGhpcyBzdWdnZXN0cyB3ZSYjMzk7cmUgdHJvdWJsZXNob290aW5nIGFuIGluaXRpYWxpemF0aW9uIGlzc3VlLCBleGFtaW5pbmcgdGhlIGRldmljZSByZWdpc3RyYXRpb24sIG9yIHBvdGVudGlhbGx5IGxvb2tpbmcgaW50byBwb3dlciBtYW5hZ2VtZW50IHNlcXVlbmNlcyB0aWVkIHRvIHRoZSBpbml0aWFsIGJyaW5nLXVwLgoKTXkgaW5pdGlhbCBhc3N1bXB0aW9uIGlzIHRoYXQgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBvbmUgb2Ygc2V2ZXJhbCBwb3NzaWJsZSBwcm9ibGVtczogZWl0aGVyIGEgZ2VuZXJhbCBwcm9iZSBmYWlsdXJlLCBhIHJlc291cmNlIGFsbG9jYXRpb24gZXJyb3IsIGEgaGFyZHdhcmUgZGV0ZWN0aW9uIGlzc3VlLCBvciBwZXJoYXBzIHNvbWUgY29uZmlndXJhdGlvbiBpbmNvbXBhdGliaWxpdHkuIFdlJiMzOTtyZSB6ZXJvaW5nIGluIG9uIHRoaXMgZnVuY3Rpb24gYmVjYXVzZSBpdCYjMzk7cyB0aGUgZW50cnkgcG9pbnQgaW50byB0aGUgZHJpdmVyJiMzOTtzIGludGVyYWN0aW9uIHdpdGggdGhlIGRldmljZSBkdXJpbmcgaXRzIGVudW1lcmF0aW9uLiBUaW1lIHRvIGRpZyBpbiBhbmQgc2VlIHdoYXQmIzM5O3MgaGFwcGVuaW5nLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBjbHVlcyBvbiByZXNvdXJjZSBjb25mbGljdHMsIGRldmljZS1zcGVjaWZpYyBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZXMsIGFuZCBlcnJvciBoYW5kbGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMDI6NDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNTYwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxNTYwOlx0XHRzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodztcbjE1NjE6XHRcdHN0cnVjdCB3Y24zNnh4ICp3Y247XG4xNTYyOlx0XHR2b2lkICp3Y25zcztcbjE1NjM6XHRcdGludCByZXQ7XG4xNTY0Olx0XHRjb25zdCB1OCAqYWRkcjtcbjE1NjU6XHRcdGludCBuX2NoYW5uZWxzO1xuMTU2NjpcdFxuMTU2NzpcdFx0d2NuMzZ4eF9kYmcoV0NOMzZYWF9EQkdfTUFDLCBcJiMzNDtwbGF0Zm9ybSBwcm9iZVxcblwmIzM0Oyk7XG4xNTY4Olx0XG4xNTY5Olx0XHR3Y25zcyA9IGRldl9nZXRfZHJ2ZGF0YShwZGV2LVx1MDAzZWRldi5wYXJlbnQpO1xuMTU3MDpcdFxuMTU3MTpcdFx0bl9jaGFubmVscyA9IHdjbl9iYW5kXzJnaHoubl9jaGFubmVscyAmIzQzOyB3Y25fYmFuZF81Z2h6Lm5fY2hhbm5lbHM7XG4xNTcyOlx0XHRodyA9IGllZWU4MDIxMV9hbGxvY19odyhzdHJ1Y3Rfc2l6ZSh3Y24sIGNoYW5fc3VydmV5LCBuX2NoYW5uZWxzKSwgXHUwMDI2d2NuMzZ4eF9vcHMpO1xuMTU3MzpcdFx0aWYgKCFodykge1xuMTU3NDpcdFx0XHR3Y24zNnh4X2VycihcJiMzNDtmYWlsZWQgdG8gYWxsb2MgaHdcXG5cJiMzNDspO1xuMTU3NTpcdFx0XHRyZXQgPSAtRU5PTUVNO1xuMTU3NjpcdFx0XHRnb3RvIG91dF9lcnI7XG4xNTc3Olx0XHR9XG4xNTc4Olx0XHRwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCBodyk7XG4xNTc5Olx0XHR3Y24gPSBody1cdTAwM2Vwcml2O1xuMTU4MDpcdFx0d2NuLVx1MDAzZWh3ID0gaHc7XG4xNTgxOlx0XHR3Y24tXHUwMDNlZGV2ID0gXHUwMDI2cGRldi1cdTAwM2VkZXY7XG4xNTgyOlx0XHR3Y24tXHUwMDNlZmlyc3RfYm9vdCA9IHRydWU7XG4xNTgzOlx0XHRtdXRleF9pbml0KFx1MDAyNndjbi1cdTAwM2Vjb25mX211dGV4KTtcbjE1ODQ6XHRcdG11dGV4X2luaXQoXHUwMDI2d2NuLVx1MDAzZWhhbF9tdXRleCk7XG4xNTg1Olx0XHRtdXRleF9pbml0KFx1MDAyNndjbi1cdTAwM2VzY2FuX2xvY2spO1xuMTU4NjpcdFx0X19za2JfcXVldWVfaGVhZF9pbml0KFx1MDAyNndjbi1cdTAwM2VhbXNkdSk7XG4xNTg3Olx0XG4xNTg4Olx0XHR3Y24tXHUwMDNlaGFsX2J1ZiA9IGRldm1fa21hbGxvYyh3Y24tXHUwMDNlZGV2LCBXQ04zNlhYX0hBTF9CVUZfU0laRSwgR0ZQX0tFUk5FTCk7XG4xNTg5Olx0XHRpZiAoIXdjbi1cdTAwM2VoYWxfYnVmKSB7XG4xNTkwOlx0XHRcdHJldCA9IC1FTk9NRU07XG4xNTkxOlx0XHRcdGdvdG8gb3V0X3dxO1xuMTU5MjpcdFx0fVxuMTU5MzpcdFxuMTU5NDpcdFx0cmV0ID0gZG1hX3NldF9tYXNrX2FuZF9jb2hlcmVudCh3Y24tXHUwMDNlZGV2LCBETUFfQklUX01BU0soMzIpKTtcbjE1OTU6XHRcdGlmIChyZXQgXHUwMDNjIDApIHtcbjE1OTY6XHRcdFx0d2NuMzZ4eF9lcnIoXCYjMzQ7ZmFpbGVkIHRvIHNldCBETUEgbWFzazogJWRcXG5cJiMzNDssIHJldCk7XG4xNTk3Olx0XHRcdGdvdG8gb3V0X3dxO1xuMTU5ODpcdFx0fVxuMTU5OTpcdFxuMTYwMDpcdFx0d2NuLVx1MDAzZW52X2ZpbGUgPSBXTEFOX05WX0ZJTEU7XG4xNjAxOlx0XHRyZXQgPSBvZl9wcm9wZXJ0eV9yZWFkX3N0cmluZyh3Y24tXHUwMDNlZGV2LVx1MDAzZXBhcmVudC1cdTAwM2VvZl9ub2RlLCBcJiMzNDtmaXJtd2FyZS1uYW1lXCYjMzQ7LCBcdTAwMjZ3Y24tXHUwMDNlbnZfZmlsZSk7XG4xNjAyOlx0XHRpZiAocmV0IFx1MDAzYyAwIFx1MDAyNlx1MDAyNiByZXQgIT0gLUVJTlZBTCkge1xuMTYwMzpcdFx0XHR3Y24zNnh4X2VycihcJiMzNDtmYWlsZWQgdG8gcmVhZCBcXFwmIzM0O2Zpcm13YXJlLW5hbWVcXFwmIzM0OyBwcm9wZXJ0eTogJWRcXG5cJiMzNDssIHJldCk7XG4xNjA0Olx0XHRcdGdvdG8gb3V0X3dxO1xuMTYwNTpcdFx0fVxuMTYwNjpcdFxuMTYwNzpcdFx0d2NuLVx1MDAzZXNtZF9jaGFubmVsID0gcWNvbV93Y25zc19vcGVuX2NoYW5uZWwod2Nuc3MsIFwmIzM0O1dMQU5fQ1RSTFwmIzM0Oywgd2NuMzZ4eF9zbWRfcnNwX3Byb2Nlc3MsIGh3KTtcbjE2MDg6XHRcdGlmIChJU19FUlIod2NuLVx1MDAzZXNtZF9jaGFubmVsKSkge1xuMTYwOTpcdFx0XHR3Y24zNnh4X2VycihcJiMzNDtmYWlsZWQgdG8gb3BlbiBXTEFOX0NUUkwgY2hhbm5lbFxcblwmIzM0Oyk7XG4xNjEwOlx0XHRcdHJldCA9IFBUUl9FUlIod2NuLVx1MDAzZXNtZF9jaGFubmVsKTtcbjE2MTE6XHRcdFx0Z290byBvdXRfd3E7XG4xNjEyOlx0XHR9XG4xNjEzOlx0XG4xNjE0Olx0XHRhZGRyID0gb2ZfZ2V0X3Byb3BlcnR5KHBkZXYtXHUwMDNlZGV2Lm9mX25vZGUsIFwmIzM0O2xvY2FsLW1hYy1hZGRyZXNzXCYjMzQ7LCBcdTAwMjZyZXQpO1xuMTYxNTpcdFx0aWYgKGFkZHIgXHUwMDI2XHUwMDI2IHJldCAhPSBFVEhfQUxFTikge1xuMTYxNjpcdFx0XHR3Y24zNnh4X2VycihcJiMzNDtpbnZhbGlkIGxvY2FsLW1hYy1hZGRyZXNzXFxuXCYjMzQ7KTtcbjE2MTc6XHRcdFx0cmV0ID0gLUVJTlZBTDtcbjE2MTg6XHRcdFx0Z290byBvdXRfZGVzdHJveV9lcHQ7XG4xNjE5Olx0XHR9IGVsc2UgaWYgKGFkZHIpIHtcbjE2MjA6XHRcdFx0d2NuMzZ4eF9pbmZvKFwmIzM0O21hYyBhZGRyZXNzOiAlcE1cXG5cJiMzNDssIGFkZHIpO1xuMTYyMTpcdFx0XHRTRVRfSUVFRTgwMjExX1BFUk1fQUREUih3Y24tXHUwMDNlaHcsIGFkZHIpO1xuMTYyMjpcdFx0fVxuMTYyMzpcdFxuMTYyNDpcdFx0cmV0ID0gd2NuMzZ4eF9wbGF0Zm9ybV9nZXRfcmVzb3VyY2VzKHdjbiwgcGRldik7XG4xNjI1Olx0XHRpZiAocmV0KVxuMTYyNjpcdFx0XHRnb3RvIG91dF9kZXN0cm95X2VwdDtcbjE2Mjc6XHRcbjE2Mjg6XHRcdHdjbjM2eHhfaW5pdF9pZWVlODAyMTEod2NuKTtcbjE2Mjk6XHRcdHJldCA9IGllZWU4MDIxMV9yZWdpc3Rlcl9odyh3Y24tXHUwMDNlaHcpO1xuMTYzMDpcdFx0aWYgKHJldClcbjE2MzE6XHRcdFx0Z290byBvdXRfdW5tYXA7XG4xNjMyOlx0XG4xNjMzOlx0XHRyZXR1cm4gMDtcbjE2MzQ6XHRcbjE2MzU6XHRvdXRfdW5tYXA6XG4xNjM2Olx0XHRpb3VubWFwKHdjbi1cdTAwM2VjY3VfYmFzZSk7XG4xNjM3Olx0XHRpb3VubWFwKHdjbi1cdTAwM2VkeGVfYmFzZSk7XG4xNjM4Olx0b3V0X2Rlc3Ryb3lfZXB0OlxuMTYzOTpcdFx0cnBtc2dfZGVzdHJveV9lcHQod2NuLVx1MDAzZXNtZF9jaGFubmVsKTtcbjE2NDA6XHRvdXRfd3E6XG4xNjQxOlx0XHRpZWVlODAyMTFfZnJlZV9odyhodyk7XG4xNjQyOlx0b3V0X2VycjpcbjE2NDM6XHRcdHJldHVybiByZXQ7XG4xNjQ0Olx0fVxuMTY0NTpcdFxuMTY0NjpcdHN0YXRpYyB2b2lkIHdjbjM2eHhfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4xNjQ3Olx0e1xuMTY0ODpcdFx0c3RydWN0IGllZWU4MDIxMV9odyAqaHcgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTtcbjE2NDk6XHRcdHN0cnVjdCB3Y24zNnh4ICp3Y24gPSBody1cdTAwM2Vwcml2O1xuMTY1MDpcdFx0d2NuMzZ4eF9kYmcoV0NOMzZYWF9EQkdfTUFDLCBcJiMzNDtwbGF0Zm9ybSByZW1vdmVcXG5cJiMzNDspO1xuMTY1MTpcdFxuMTY1MjpcdFx0cmVsZWFzZV9maXJtd2FyZSh3Y24tXHUwMDNlbnYpO1xuMTY1MzpcdFxuMTY1NDpcdFx0aWVlZTgwMjExX3VucmVnaXN0ZXJfaHcoaHcpO1xuMTY1NTpcdFxuMTY1NjpcdFx0cWNvbV9zbWVtX3N0YXRlX3B1dCh3Y24tXHUwMDNldHhfZW5hYmxlX3N0YXRlKTtcbjE2NTc6XHRcdHFjb21fc21lbV9zdGF0ZV9wdXQod2NuLVx1MDAzZXR4X3JpbmdzX2VtcHR5X3N0YXRlKTtcbjE2NTg6XHRcbjE2NTk6XHRcdHJwbXNnX2Rlc3Ryb3lfZXB0KHdjbi1cdTAwM2VzbWRfY2hhbm5lbCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDAyOjQxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyMDA2CgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgdGhlIENhbGwgU2l0ZXMgb2YgYHdjbjM2eHhfZHhlX2RlaW5pdGAqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW4uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBmdWxsIGxpZmVjeWNsZSBvZiB0aGlzIGB3Y24zNnh4X2R4ZV9kZWluaXRgIGZ1bmN0aW9uLiBUaGUgaW1tZWRpYXRlIHF1ZXN0aW9uIGluIG15IG1pbmQgaXM6IHdoZXJlIGRvZXMgaXQgZ2V0IGNhbGxlZD8gSSB3YW50IGEgY29tcGxldGUgbWFwIG9mIGFsbCBpdHMgY2FsbCBzaXRlcy4gS25vd2luZyB0aGlzIHdpbGwgZ2l2ZSBtZSBjcml0aWNhbCBpbnNpZ2h0cyBpbnRvIGhvdyB0aGUgZHJpdmVyIGlzIGJlaW5nIHNodXQgZG93biwgd2hhdCBkZXBlbmRlbmNpZXMgaXQgaGFzIG9uIG90aGVyIGNvbXBvbmVudHMsIGFuZCB1bHRpbWF0ZWx5LCB3aGVyZSBwb3RlbnRpYWwgaXNzdWVzIG9yIHJhY2UgY29uZGl0aW9ucyBtaWdodCBiZSBsdXJraW5nLiBUaW1lIHRvIHN0YXJ0IHRyYWNpbmcgdGhlIGV4ZWN1dGlvbiBmbG93IGFuZCBtYXAgaXQgYWxsIG91dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMDI6NDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7d2NuMzZ4eF9keGVfZGVpbml0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM9MTY4PXN0YXRpYyBpbnQgd2NuMzZ4eF9keGVfaW5pdF9kZXNjcyhzdHJ1Y3Qgd2NuMzZ4eCAqd2NuLCBzdHJ1Y3Qgd2NuMzZ4eF9keGVfY2ggKndjbl9jaClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy0yMjctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzoyMjg6c3RhdGljIHZvaWQgd2NuMzZ4eF9keGVfZGVpbml0X2Rlc2NzKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IHdjbjM2eHhfZHhlX2NoICp3Y25fY2gpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy0yMjkte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jPTkwMD1pbnQgd2NuMzZ4eF9keGVfaW5pdChzdHJ1Y3Qgd2NuMzZ4eCAqd2NuKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTEwMzQtb3V0X2Vycl9pcnE6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzoxMDM1Olx0d2NuMzZ4eF9keGVfZGVpbml0X2Rlc2NzKHdjbi1cdTAwM2VkZXYsIFx1MDAyNndjbi1cdTAwM2VkeGVfcnhfaF9jaCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy0xMDM2LW91dF9lcnJfcnhoX2NoOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6MTAzNzpcdHdjbjM2eHhfZHhlX2RlaW5pdF9kZXNjcyh3Y24tXHUwMDNlZGV2LCBcdTAwMjZ3Y24tXHUwMDNlZHhlX3J4X2xfY2gpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtMTAzOC1vdXRfZXJyX3J4bF9jaDpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjEwMzk6XHR3Y24zNnh4X2R4ZV9kZWluaXRfZGVzY3Mod2NuLVx1MDAzZWRldiwgXHUwMDI2d2NuLVx1MDAzZWR4ZV90eF9oX2NoKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTEwNDAtb3V0X2Vycl90eGhfY2g6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzoxMDQxOlx0d2NuMzZ4eF9keGVfZGVpbml0X2Rlc2NzKHdjbi1cdTAwM2VkZXYsIFx1MDAyNndjbi1cdTAwM2VkeGVfdHhfbF9jaCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy0xMDQyLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTEwNDUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzoxMDQ2OnZvaWQgd2NuMzZ4eF9keGVfZGVpbml0KHN0cnVjdCB3Y24zNnh4ICp3Y24pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy0xMDQ3LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy0xMDcxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6MTA3MjpcdHdjbjM2eHhfZHhlX2RlaW5pdF9kZXNjcyh3Y24tXHUwMDNlZGV2LCBcdTAwMjZ3Y24tXHUwMDNlZHhlX3R4X2xfY2gpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6MTA3MzpcdHdjbjM2eHhfZHhlX2RlaW5pdF9kZXNjcyh3Y24tXHUwMDNlZGV2LCBcdTAwMjZ3Y24tXHUwMDNlZHhlX3R4X2hfY2gpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6MTA3NDpcdHdjbjM2eHhfZHhlX2RlaW5pdF9kZXNjcyh3Y24tXHUwMDNlZGV2LCBcdTAwMjZ3Y24tXHUwMDNlZHhlX3J4X2xfY2gpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6MTA3NTpcdHdjbjM2eHhfZHhlX2RlaW5pdF9kZXNjcyh3Y24tXHUwMDNlZGV2LCBcdTAwMjZ3Y24tXHUwMDNlZHhlX3J4X2hfY2gpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtMTA3Ni19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmg9NDYxPWludCB3Y24zNnh4X2R4ZV9pbml0KHN0cnVjdCB3Y24zNnh4ICp3Y24pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmg6NDYyOnZvaWQgd2NuMzZ4eF9keGVfZGVpbml0KHN0cnVjdCB3Y24zNnh4ICp3Y24pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmgtNDYzLWludCB3Y24zNnh4X2R4ZV9pbml0X2NoYW5uZWxzKHN0cnVjdCB3Y24zNnh4ICp3Y24pO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYz0yODE9c3RhdGljIHZvaWQgd2NuMzZ4eF9zdG9wKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBib29sIHN1c3BlbmQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTI5OS1cdHdjbjM2eHhfc21kX3N0b3Aod2NuKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzozMDA6XHR3Y24zNnh4X2R4ZV9kZWluaXQod2NuKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0zMDEtXHR3Y24zNnh4X3NtZF9jbG9zZSh3Y24pO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAwMjo0MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzU1NAoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDM0MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBXQ04zNnh4IERyaXZlcioqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgYHdjbjM2eHhgLi4uIHJpZ2h0LCB0aGF0JiMzOTtzIHRoZSBkcml2ZXIgZm9yIHRoZSBRdWFsY29tbSBBdGhlcm9zIFdDTjM2NjAgb3IgV0NOMzY4MCBtb2JpbGUgd2lyZWxlc3MgaGFyZHdhcmUuIE15IGltbWVkaWF0ZSBxdWVzdGlvbiBpcyBhbHdheXMsIGhvdyBpcyB0aGlzIHRoaW5nIGhvb2tlZCB1cD8gQWgsIGl0JiMzOTtzIGEgcGxhdGZvcm0gZHJpdmVyIHRoYXQgbGl2ZXMgb24gdGhvc2UgUXVhbGNvbW0gU29DcywgdXNpbmcgYHFjb21fd2Nuc3NgLCB3aGljaCBtZWFucyBpdCBkZXBlbmRzIG9uIFF1YWxjb21tJiMzOTtzIFNNRC9SUE1TRyBzdHVmZiBhbmQgdGhlIFNvQyBoYXJkd2FyZSBpdHNlbGYg4oCTIHRoZSBzdHVmZiBiYWtlZCBpbnRvIHRob3NlIE1TTS9TbmFwZHJhZ29uIHBsYXRmb3JtcyBsaWtlIHRoZSBNU004OTYwIG9yIE1TTTg5NzQuCgpOb3csIGEgY3JpdGljYWwgcXVlc3Rpb24gZm9yIG1lLCBjYW4gSSBldmVuICp0ZXN0KiB0aGlzIHRoaW5nPyBDYW4gaXQgYmUgcHJvYmVkIG9yIGVtdWxhdGVkIGluIGEgc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBHb29nbGUgQ29tcHV0ZSBFbmdpbmUgb3IgUUVNVT8gSSBuZWVkIHRvIHRoaW5rIHRoaXMgdGhyb3VnaC4gTGV0IG1lIHF1aWNrbHkgcmVmZXJlbmNlIHNlY3Rpb24gMiBvZiBteSB0cmlhZ2UgcGhpbG9zb3BoeS4gKlN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZS4uLiogYW5kICpVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHMuLi4qIEkgbmVlZCB0byBzZWUgaWYgaXQgbWVldHMgdGhvc2UgY3JpdGVyaWEuCgpPa2F5LCBteSB0YXJnZXQgYXJjaGl0ZWN0dXJlIGlzIGFtZDY0LiBCdXQgaXNuJiMzOTt0IHRoaXMgUXVhbGNvbW0gV0NOMzZ4eCBhbiBBUk0tYmFzZWQgU29DIHBsYXRmb3JtIGRldmljZT8gVGhlIFF1YWxjb21tIFNuYXBkcmFnb24gaXMgYW4gQVJNIHBlcmlwaGVyYWwuIEhtbS4uLiBzbywgaXMgaXQgYW4gQVJNIGRldmljZSBleGNsdXNpdmVseSwgb3IgY2FuIGl0IHBvc3NpYmx5IGV4aXN0IG9uIGFtZDY0PyBJIG5lZWQgdG8gY29uZmlybSB0aGlzLiBJIHdpbGwgY2hlY2sgdGhlIGBvZl9tYXRjaF90YWJsZWAgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uY2AgdG8gY2xhcmlmeSB0aGF0IGhhcmR3YXJlIGNvbmZpZ3VyYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDAyOjQyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTY2MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxNjYwOlx0XG4xNjYxOlx0XHRpb3VubWFwKHdjbi1cdTAwM2VkeGVfYmFzZSk7XG4xNjYyOlx0XHRpb3VubWFwKHdjbi1cdTAwM2VjY3VfYmFzZSk7XG4xNjYzOlx0XG4xNjY0Olx0XHRfX3NrYl9xdWV1ZV9wdXJnZShcdTAwMjZ3Y24tXHUwMDNlYW1zZHUpO1xuMTY2NTpcdFxuMTY2NjpcdFx0bXV0ZXhfZGVzdHJveShcdTAwMjZ3Y24tXHUwMDNlaGFsX211dGV4KTtcbjE2Njc6XHRcdGllZWU4MDIxMV9mcmVlX2h3KGh3KTtcbjE2Njg6XHR9XG4xNjY5Olx0XG4xNjcwOlx0c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgd2NuMzZ4eF9vZl9tYXRjaFtdID0ge1xuMTY3MTpcdFx0eyAuY29tcGF0aWJsZSA9IFwmIzM0O3Fjb20sd2Nuc3Mtd2xhblwmIzM0OyB9LFxuMTY3MjpcdFx0e31cbjE2NzM6XHR9O1xuMTY3NDpcdE1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHdjbjM2eHhfb2ZfbWF0Y2gpO1xuMTY3NTpcdFxuMTY3NjpcdHN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIHdjbjM2eHhfZHJpdmVyID0ge1xuMTY3NzpcdFx0LnByb2JlID0gd2NuMzZ4eF9wcm9iZSxcbjE2Nzg6XHRcdC5yZW1vdmUgPSB3Y24zNnh4X3JlbW92ZSxcbjE2Nzk6XHRcdC5kcml2ZXIgPSB7XG4xNjgwOlx0XHRcdC5uYW1lID0gXCYjMzQ7d2NuMzZ4eFwmIzM0OyxcbjE2ODE6XHRcdFx0Lm9mX21hdGNoX3RhYmxlID0gd2NuMzZ4eF9vZl9tYXRjaCxcbjE2ODI6XHRcdH0sXG4xNjgzOlx0fTtcbjE2ODQ6XHRcbjE2ODU6XHRtb2R1bGVfcGxhdGZvcm1fZHJpdmVyKHdjbjM2eHhfZHJpdmVyKTtcbjE2ODY6XHRcbjE2ODc6XHRNT0RVTEVfREVTQ1JJUFRJT04oXCYjMzQ7UXVhbGNvbW0gQXRoZXJvcyBXQ04zNjYwLzM2ODAgd2lyZWxlc3MgZHJpdmVyXCYjMzQ7KTtcbjE2ODg6XHRNT0RVTEVfTElDRU5TRShcJiMzNDtEdWFsIEJTRC9HUExcJiMzNDspO1xuMTY4OTpcdE1PRFVMRV9BVVRIT1IoXCYjMzQ7RXVnZW5lIEtyYXNuaWtvdiBrLmV1Z2VuZS5lQGdtYWlsLmNvbVwmIzM0Oyk7XG4xNjkwOlx0TU9EVUxFX0ZJUk1XQVJFKFdMQU5fTlZfRklMRSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDAyOjQyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI0NzY4CgkJCQkJCQlvdXRwdXQ6IDExNQoJCQkJCQkJdGhvdWdodHM6IDY1NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBGdXp6aW5nIFdvcnRoaW5lc3Mgb2YgYHdjbjM2eHhgKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGFuYWx5c2lzIG9mIGB3Y24zNnh4X29mX21hdGNoYCBjbGVhcmx5IHNob3dzIHRoaXMgaXMgYSBwbGF0Zm9ybSBkcml2ZXIsIHNwZWNpZmljYWxseSBkZXNpZ25lZCBmb3IgUXVhbGNvbW0mIzM5O3MgV0NOU1Mgc3Vic3lzdGVtIHZpYSBPcGVuIEZpcm13YXJlIChEZXZpY2UgVHJlZSkgb24gUXVhbGNvbW0gQVJNIFNvQ3MuIFRoZSBrZXkgZ2l2ZWF3YXkgaXMgdGhlIGBjb21wYXRpYmxlID0gJiMzNDtxY29tLHdjbnNzLXdsYW4mIzM0O2AgbWF0Y2guIFRoaXMgaXMgYSB0ZWxsdGFsZSBzaWduIG9mIGEgdmVyeSBzcGVjaWZpYyBoYXJkd2FyZSBkZXBlbmRlbmN5LiBUaGVyZSYjMzk7cyBubyBQQ0kgSUQsIFVTQiBJRCwgb3IgQUNQSSBtYXRjaCwgc28gaXQmIzM5O3MgYWxsIGFib3V0IHRoYXQgRGV2aWNlIFRyZWUuCgpUaGUgY3J1Y2lhbCBwb2ludCBpcyB0aGF0IGluIHN0YW5kYXJkIGFtZDY0IGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLCB3aGljaCBJJiMzOTttIGFzc3VtaW5nIGFyZSBvdXIgcHJpbWFyeSB0ZXN0aW5nIGdyb3VuZHMsIHRoZXJlIGlzICpubyogRGV2aWNlIFRyZWUgd2l0aCBhIGBxY29tLHdjbnNzLXdsYW5gIGRldmljZS4gVGhlcmUmIzM5O3Mgbm8gUXVhbGNvbW0gV0NOU1MgUlBNU0cgaGFyZHdhcmUgcHJlc2VudC4gVGhlcmVmb3JlLCB0aGlzIGRyaXZlciwgYnkgaXRzIHZlcnkgbmF0dXJlLCAqY2Fubm90KiBwcm9iZSBvciBpbml0aWFsaXplIGluIHRob3NlIGVudmlyb25tZW50cy4gVGhpcyBpcyBmdXJ0aGVyIGNvbmZpcm1lZCBiZWNhdXNlIHRoZSBtb2RpZmllZCBmdW5jdGlvbiBgd2NuMzZ4eF9keGVfZGVpbml0YCBpcyBsb2NhdGVkIGluIGBkeGUuY2AgYW5kIGlzIG9ubHkgZXZlciByZWFjaGVkIHZpYSBgd2NuMzZ4eF9zdG9wYCwgd2hpY2ggaXRzZWxmIHJlcXVpcmVzIHRoZSBkcml2ZXIgdG8gYmUgc3VjY2Vzc2Z1bGx5IHByb2JlZCBhbmQgc3RhcnRlZC4KClRvIGJlIGFic29sdXRlbHkgc3VyZSwgbGV0JiMzOTtzIGNvbmZpcm0gdGhlIG5lZ2F0aXZlcy4gRmlyc3QsIHRoZSBoYXJkd2FyZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGU6IGl0JiMzOTtzIGEgUXVhbGNvbW0gV0NOMzY2MC8zNjgwIFNvQyBwbGF0Zm9ybSBkcml2ZXIgZGVwZW5kZW50IG9uIGEgV0NOU1Mgc3Vic3lzdGVtLCB3aGljaCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSAvIEdDRS4gU2Vjb25kLCB0aGUgYXJjaGl0ZWN0dXJlIGlzIHdyb25nOyBpdCYjMzk7cyBhIFF1YWxjb21tIHBsYXRmb3JtIGRldmljZSBtZWFudCBmb3IgQVJNIFNvQ3MsIGFuZCB0aGUgdGFyZ2V0IGlzIGFtZDY0LiBUaGF0JiMzOTtzIGEgZG91YmxlIHdoYW1teSBmb3IgcmVhY2hhYmlsaXR5LgoKU28sIGluIGNvbmNsdXNpb24sIGBXb3J0aEZ1enppbmdgIGlzIHVuZXF1aXZvY2FsbHkgYGZhbHNlYCBoZXJlLgoKVG8gZG91YmxlLWNoZWNrIHRoZSBkZXRhaWxzLCBJIHJldmlld2VkIHRoZSBjaGFuZ2UsIHdoaWNoIGludm9sdmVzIHRoZSByZXBsYWNlbWVudCBvZiBgdGltZXJfZGVsZXRlYCB3aXRoIGB0aW1lcl9zaHV0ZG93bl9zeW5jYCBvbiBgd2NuLSZndDt0eF9hY2tfdGltZXJgIGluIGB3Y24zNnh4X2R4ZV9kZWluaXQoKWAuIFRoZSBsb2NhdGlvbiBpcyBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmNgLiBJdCYjMzk7cyBhIFF1YWxjb21tIEF0aGVyb3MgV0NOMzY2MC8zNjgwIHdpcmVsZXNzIGRyaXZlciwgYW5kIGl0IGlzIGFuIE9GIHBsYXRmb3JtIGRyaXZlciBmb3IgUXVhbGNvbW0gV0NOU1MuIENvbnNpZGVyaW5nIHRoZSBhcmNoaXRlY3R1cmUgYW5kIHJlYWNoYWJpbGl0eSwgaXQgaXMgdW5yZWFjaGFibGUgaW4gc3RhbmRhcmQgeDg2L2FtZDY0IHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpIGJlY2F1c2UgdGhlIGhhcmR3YXJlL0RldmljZSBUcmVlIHBsYXRmb3JtIGRldmljZSBpcyBub3QgcHJlc2VudC4KClRoZXJlZm9yZSwgdGhlIGZpbmFsIGFuc3dlciBpczoKCi0gICAqKldvcnRoRnV6emluZzogZmFsc2UqKgotICAgKipGb2N1c1N5bWJvbHM6IFxbIF0qKgotICAgKipFbmFibGVDb25maWdzOiBcWyBdKioKLSAgICoqUmVhc29uaW5nOiB3Y24zNnh4IGlzIGEgUXVhbGNvbW0gU29DIHBsYXRmb3JtIGRyaXZlciAobWF0Y2hpbmcgT0YgY29tcGF0aWJsZSAmIzM0O3Fjb20sd2Nuc3Mtd2xhbiYjMzQ7KSByZXF1aXJpbmcgUXVhbGNvbW0gV0NOU1MgaGFyZHdhcmUsIHdoaWNoIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCB4ODYvYW1kNjQgdGVzdCBlbnZpcm9ubWVudHMuKioKClRpbWUgdG8gYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMDI6NDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBtb2RpZmllZCBjb2RlIGlzIGluIHRoZSBRdWFsY29tbSBBdGhlcm9zIFdDTjM2NjAvMzY4MCB3aXJlbGVzcyBkcml2ZXIgKHdjbjM2eHgpLCB3aGljaCBpcyBhbiBPRiBwbGF0Zm9ybSBkcml2ZXIgZm9yIFF1YWxjb21tIFNvQ3MgcmVxdWlyaW5nIFF1YWxjb21tIFdDTlNTL1JQTVNHIGhhcmR3YXJlLiBJdCBjYW5ub3QgYmUgcHJvYmVkIG9yIGV4ZWN1dGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoc3VjaCBhcyBRRU1VIG9yIEdDRSBvbiBhbWQ2NCksIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBtb2RpZmllZCBjb2RlIGlzIGluIHRoZSBRdWFsY29tbSBBdGhlcm9zIFdDTjM2NjAvMzY4MCB3aXJlbGVzcyBkcml2ZXIgKHdjbjM2eHgpLCB3aGljaCBpcyBhbiBPRiBwbGF0Zm9ybSBkcml2ZXIgZm9yIFF1YWxjb21tIFNvQ3MgcmVxdWlyaW5nIFF1YWxjb21tIFdDTlNTL1JQTVNHIGhhcmR3YXJlLiBJdCBjYW5ub3QgYmUgcHJvYmVkIG9yIGV4ZWN1dGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoc3VjaCBhcyBRRU1VIG9yIEdDRSBvbiBhbWQ2NCksIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAwMjo0MjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMTBUMDI6NDE6MzQuMTM2MTM4Njg2WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzYwODYwNTQ3MzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBtb2RpZmllZCBjb2RlIGlzIGluIHRoZSBRdWFsY29tbSBBdGhlcm9zIFdDTjM2NjAvMzY4MCB3aXJlbGVzcyBkcml2ZXIgKHdjbjM2eHgpLCB3aGljaCBpcyBhbiBPRiBwbGF0Zm9ybSBkcml2ZXIgZm9yIFF1YWxjb21tIFNvQ3MgcmVxdWlyaW5nIFF1YWxjb21tIFdDTlNTL1JQTVNHIGhhcmR3YXJlLiBJdCBjYW5ub3QgYmUgcHJvYmVkIG9yIGV4ZWN1dGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoc3VjaCBhcyBRRU1VIG9yIEdDRSBvbiBhbWQ2NCksIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQwMjo0MTozNC4xMzYxNDQxNTZaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4OTk5NzM5MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDM4YzQ4OGFlMmVkNDhlODc5NjlkODU2Yzk3ZGYzNmVjMmM1NzEwNjNcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFRodSBTZXAgMTAgMDI6NDE6MzMgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuY1xcbmluZGV4IDQ0MDIwZWMyNjVmYjYuLjgwMWYxMjE4ZWY4OWIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuY1xcbkBAIC0xMDU1LDcgKzEwNTUsNyBAQCB2b2lkIHdjbjM2eHhfZHhlX2RlaW5pdChzdHJ1Y3Qgd2NuMzZ4eCAqd2NuKVxcbiBcXG4gXFx0ZnJlZV9pcnEod2NuLVxcdTAwM2V0eF9pcnEsIHdjbik7XFxuIFxcdGZyZWVfaXJxKHdjbi1cXHUwMDNlcnhfaXJxLCB3Y24pO1xcbi1cXHR0aW1lcl9kZWxldGUoXFx1MDAyNndjbi1cXHUwMDNldHhfYWNrX3RpbWVyKTtcXG4rXFx0dGltZXJfc2h1dGRvd25fc3luYyhcXHUwMDI2d2NuLVxcdTAwM2V0eF9hY2tfdGltZXIpO1xcbiBcXG4gXFx0aWYgKHdjbi1cXHUwMDNldHhfYWNrX3NrYikge1xcbiBcXHRcXHRpZWVlODAyMTFfdHhfc3RhdHVzX2lycXNhZmUod2NuLVxcdTAwM2Vodywgd2NuLVxcdTAwM2V0eF9hY2tfc2tiKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMDI6NDE6MzQuNjI2Nzk4NDk5WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjozNTU5NTM1MDk3MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgbW9kaWZpZWQgY29kZSBpcyBpbiB0aGUgUXVhbGNvbW0gQXRoZXJvcyBXQ04zNjYwLzM2ODAgd2lyZWxlc3MgZHJpdmVyICh3Y24zNnh4KSwgd2hpY2ggaXMgYW4gT0YgcGxhdGZvcm0gZHJpdmVyIGZvciBRdWFsY29tbSBTb0NzIHJlcXVpcmluZyBRdWFsY29tbSBXQ05TUy9SUE1TRyBoYXJkd2FyZS4gSXQgY2Fubm90IGJlIHByb2JlZCBvciBleGVjdXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKHN1Y2ggYXMgUUVNVSBvciBHQ0Ugb24gYW1kNjQpLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzc1xudG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5UaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLFxuYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy5cblxuLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURTpcbiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZFxuICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLlxuICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsXG4gIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy5cblxuLSBETyBOT1QgQkxJTkRMWSBUUlVTVCBcIk5PIEZVTkNUSU9OQUwgQ0hBTkdFXCIgKE5GQ0kpIE9SIFwiUkVGQUNUT1JJTkdcIiBDTEFJTVM6XG4gIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgXCJjbGVhbnVwc1wiLCBcInJlZmFjdG9yaW5nc1wiLCBvciBzdGF0ZVxuICBcIk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkXCIuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLlxuICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnRcbiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuXG4gIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuXG5cbi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6XG4gIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKixcbiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuXG4gIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXJcbiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOlxuXG4tIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6XG4gICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLlxuICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKVxuICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cbiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50c1xuICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuXG4gICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLlxuLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6XG4gICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczpcbiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmdcbiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy5cbiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4zLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzpcbi0gQ29yZSBTdWJzeXN0ZW1zOlxuICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSxcbiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuXG4tIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczpcbiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuXG4tIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczpcbiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuXG4tIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6XG4gICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6XG5cbi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOlxuICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1c1xuICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdFxuICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS5cbiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzIFwiZm9jdXNlZFwiLFxuICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuXG5cbi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOlxuICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHNcbiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuXG5cbi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOlxuICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrXG4gIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLlxuICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXJcbiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlnc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6XG4tIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4tIENoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuXG4tIFN0cmlwIGFueSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAzOGM0ODhhZTJlZDQ4ZTg3OTY5ZDg1NmM5N2RmMzZlYzJjNTcxMDYzXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBTZXAgMTAgMDI6NDE6MzMgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jXG5pbmRleCA0NDAyMGVjMjY1ZmI2Li44MDFmMTIxOGVmODliIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jXG5AQCAtMTA1NSw3ICsxMDU1LDcgQEAgdm9pZCB3Y24zNnh4X2R4ZV9kZWluaXQoc3RydWN0IHdjbjM2eHggKndjbilcbiBcbiBcdGZyZWVfaXJxKHdjbi1cdTAwM2V0eF9pcnEsIHdjbik7XG4gXHRmcmVlX2lycSh3Y24tXHUwMDNlcnhfaXJxLCB3Y24pO1xuLVx0dGltZXJfZGVsZXRlKFx1MDAyNndjbi1cdTAwM2V0eF9hY2tfdGltZXIpO1xuK1x0dGltZXJfc2h1dGRvd25fc3luYyhcdTAwMjZ3Y24tXHUwMDNldHhfYWNrX3RpbWVyKTtcbiBcbiBcdGlmICh3Y24tXHUwMDNldHhfYWNrX3NrYikge1xuIFx0XHRpZWVlODAyMTFfdHhfc3RhdHVzX2lycXNhZmUod2NuLVx1MDAzZWh3LCB3Y24tXHUwMDNldHhfYWNrX3NrYik7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQwMjo0MTozNC42MjY4MDAxNjlaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo4OTA1MDUzODE4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUGF0Y2g6IEEgRGVlcCBEaXZlKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSBuZWVkIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2Ygd2hhdCB0aGlzIHBhdGNoIGlzIGRvaW5nLiBUaGUgYGRpZmZgIHNob3dzIGEgY2hhbmdlIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuY2AuIFJpZ2h0IGF3YXksIEkga25vdyB0byBmb2N1cyBvbiB0aGlzIGFyZWEg4oCTIGl0J3MgYSBkcml2ZXIgZmlsZSwgd2hpY2ggaXMgdXN1YWxseSB0aGUgaGVhcnQgb2YgdGhlIGludGVyYWN0aW9uIGJldHdlZW4gdGhlIGtlcm5lbCBhbmQgdGhlIGhhcmR3YXJlLiBJIGNhbiBzZWUgdGhlIGNoYW5nZSBpcyBpbiBob3cgdGhlIGRyaXZlciBoYW5kbGVzIHNvbWUgZm9ybSBvZiB0aW1lci4gU3BlY2lmaWNhbGx5LCB0aGUgbGluZSBgdGltZXJfZGVsZXRlYCBpcyBub3cgYHRpbWVyX3NodXRkb3duX3N5bmNgLiBUaGF04oCZcyBhIHNpZ25pZmljYW50IGRpZmZlcmVuY2UuIFVzaW5nIGB0aW1lcl9zaHV0ZG93bl9zeW5jYCBzdWdnZXN0cyBhIG1vcmUgcm9idXN0IGFuZCBwb3NzaWJseSBzYWZlciB3YXkgdG8gc2h1dCBkb3duIHRoZSB0aW1lciwgZW5zdXJpbmcgYWxsIHBlbmRpbmcgd29yayBpcyBjb21wbGV0ZWQgYmVmb3JlIGRlLWluaXRpYWxpemluZy4gVGhpcyBpbmRpY2F0ZXMgdGhleSdyZSBhZGRyZXNzaW5nIGEgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9uIG9yIGNsZWFudXAgaXNzdWUgZHVyaW5nIG1vZHVsZSB1bmxvYWQgb3IgZHJpdmVyIGRlLWluaXRpYWxpemF0aW9uLlxuXG5Ob3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0LiBUaGUgYHdjbjM2eHhgIG5hbWluZyBpcyBmYW1pbGlhci4gQWgsIHJpZ2h0LCBRdWFsY29tbSBBdGhlcm9zIFdDTjM2NjAvMzY4MC4gVGhhdCBuYXJyb3dzIHRoZSBmb2N1cyBjb25zaWRlcmFibHkuIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGVzZSBkZXZpY2VzIGFuZCB0aGUgYXNzb2NpYXRlZCBkZXNpZ24gYW5kIGhhcmR3YXJlIGFyY2hpdGVjdHVyZS4gSSdsbCBuZWVkIHRvIGNoZWNrIHRoZSBzdXJyb3VuZGluZyBjb2RlIGFuZCBLY29uZmlnIGZpbGVzIGZvciBhbnkgZGVwZW5kZW5jaWVzIG9yIGhhcmR3YXJlLXNwZWNpZmljIGNvbmZpZ3VyYXRpb25zLiBVbmRlcnN0YW5kaW5nIHRoZSBoYXJkd2FyZSdzIGludHJpY2FjaWVzIGlzIGNydWNpYWwgdG8gZnVsbHkgYXBwcmVjaWF0aW5nIHRoZSBpbXBsaWNhdGlvbiBvZiB0aGlzIGNoYW5nZS4gSXMgdGhpcyBhIGNvbW1vbiBtb2R1bGUsIG9yIGlzIGl0IHZlcnkgaGFyZHdhcmUtc3BlY2lmaWM/IEknbGwgY2hlY2sgaXRzIGxvY2F0aW9uIGluIHRoZSBkcml2ZXIgc3RydWN0dXJlIHRvIGZpbmQgb3V0LiBUaGlzIGxpa2VseSBhZmZlY3RzIGEgc3BlY2lmaWMgc2V0IG9mIHdpcmVsZXNzIGFkYXB0ZXJzLCBhbmQgSSBtdXN0IGFzc2VzcyB3aGV0aGVyIHRoaXMgaXMgcmVsZXZhbnQgdG8gdGhlIHN5c3RlbXMgSSB3b3JrIG9uLiBJIHNob3VsZCBhbHNvIGludmVzdGlnYXRlIG90aGVyIHJlbGF0ZWQgZmlsZXMgdG8gZW5zdXJlIHRoaXMgY2hhbmdlIGRvZXNu4oCZdCBpbnRyb2R1Y2UgYW55IHJlZ3Jlc3Npb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTUwLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mzg4LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMDI6NDE6NDMuNTMxODYwMTQ3WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5NDU0NTkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIndjbjM2eHhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA1MzY5IGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9LY29uZmlnPTI9Y29uZmlnIFdDTjM2WFhcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L0tjb25maWctMTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvS2NvbmZpZzoxMTpcXHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgYSBtb2R1bGUsIGl0J2xsIGJlIGNhbGxlZCB3Y24zNnh4LlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L0tjb25maWctMTItXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9NYWtlZmlsZS0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IElTQ1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L01ha2VmaWxlOjI6b2JqLSQoQ09ORklHX1dDTjM2WFgpIDo9IHdjbjM2eHgub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L01ha2VmaWxlOjM6d2NuMzZ4eC15ICs9ICAgbWFpbi5vIFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9NYWtlZmlsZS00LSAgICAgICAgICAgICAgIGR4ZS5vIFxcXFxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L01ha2VmaWxlLTEwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L01ha2VmaWxlOjExOndjbjM2eHgtJChDT05GSUdfTkw4MDIxMV9URVNUTU9ERSkgKz0gdGVzdG1vZGUub1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuYy0yMC0jaW5jbHVkZSBcXHUwMDNjbGludXgvdWFjY2Vzcy5oXFx1MDAzZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2RlYnVnLmM6MjE6I2luY2x1ZGUgXFxcIndjbjM2eHguaFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5jLTIyLSNpbmNsdWRlIFxcXCJkZWJ1Zy5oXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuYz0yOD1zdGF0aWMgc3NpemVfdCByZWFkX2ZpbGVfYm9vbF9ibXBzKHN0cnVjdCBmaWxlICpmaWxlLCBjaGFyIF9fdXNlciAqdXNlcl9idWYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5jLTMwLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5jOjMxOlxcdHN0cnVjdCB3Y24zNnh4ICp3Y24gPSBmaWxlLVxcdTAwM2Vwcml2YXRlX2RhdGE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuYzozMjpcXHRzdHJ1Y3Qgd2NuMzZ4eF92aWYgKnZpZl9wcml2ID0gTlVMTDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5jLTMzLVxcdHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYgPSBOVUxMO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuYy0zNi1cXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KHZpZl9wcml2LCBcXHUwMDI2d2NuLVxcdTAwM2V2aWZfbGlzdCwgbGlzdCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2RlYnVnLmM6Mzc6XFx0XFx0XFx0dmlmID0gd2NuMzZ4eF9wcml2X3RvX3ZpZih2aWZfcHJpdik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuYy0zOC1cXHRcXHRcXHRpZiAoTkw4MDIxMV9JRlRZUEVfU1RBVElPTiA9PSB2aWYtXFx1MDAzZXR5cGUpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2RlYnVnLmM9NTI9c3RhdGljIHNzaXplX3Qgd3JpdGVfZmlsZV9ib29sX2JtcHMoc3RydWN0IGZpbGUgKmZpbGUsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5jLTU1LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5jOjU2OlxcdHN0cnVjdCB3Y24zNnh4ICp3Y24gPSBmaWxlLVxcdTAwM2Vwcml2YXRlX2RhdGE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuYzo1NzpcXHRzdHJ1Y3Qgd2NuMzZ4eF92aWYgKnZpZl9wcml2ID0gTlVMTDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5jLTU4LVxcdHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYgPSBOVUxMO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuYy03MS1cXHRcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KHZpZl9wcml2LCBcXHUwMDI2d2NuLVxcdTAwM2V2aWZfbGlzdCwgbGlzdCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2RlYnVnLmM6NzI6XFx0XFx0XFx0dmlmID0gd2NuMzZ4eF9wcml2X3RvX3ZpZih2aWZfcHJpdik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuYy03My1cXHRcXHRcXHRpZiAoTkw4MDIxMV9JRlRZUEVfU1RBVElPTiA9PSB2aWYtXFx1MDAzZXR5cGUpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5jOjc0OlxcdFxcdFxcdFxcdHdjbjM2eHhfZW5hYmxlX2tlZXBfYWxpdmVfbnVsbF9wYWNrZXQod2NuLCB2aWYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2RlYnVnLmM6NzU6XFx0XFx0XFx0XFx0d2NuMzZ4eF9wbWNfZW50ZXJfYm1wc19zdGF0ZSh3Y24sIHZpZik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuYy03Ni1cXHRcXHRcXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5jLTgyLVxcdFxcdGxpc3RfZm9yX2VhY2hfZW50cnkodmlmX3ByaXYsIFxcdTAwMjZ3Y24tXFx1MDAzZXZpZl9saXN0LCBsaXN0KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuYzo4MzpcXHRcXHRcXHR2aWYgPSB3Y24zNnh4X3ByaXZfdG9fdmlmKHZpZl9wcml2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5jLTg0LVxcdFxcdFxcdGlmIChOTDgwMjExX0lGVFlQRV9TVEFUSU9OID09IHZpZi1cXHUwMDNldHlwZSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5jOjg1OlxcdFxcdFxcdFxcdHdjbjM2eHhfcG1jX2V4aXRfYm1wc19zdGF0ZSh3Y24sIHZpZik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuYy04Ni1cXHRcXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5jLTkyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2RlYnVnLmM6OTM6c3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZm9wc193Y24zNnh4X2JtcHMgPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuYy05NC1cXHQub3BlbiA9IHNpbXBsZV9vcGVuLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuYz05OT1zdGF0aWMgc3NpemVfdCB3cml0ZV9maWxlX2R1bXAoc3RydWN0IGZpbGUgKmZpbGUsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5jLTEwMi17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuYzoxMDM6XFx0c3RydWN0IHdjbjM2eHggKndjbiA9IGZpbGUtXFx1MDAzZXByaXZhdGVfZGF0YTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5jLTEwNC1cXHRjaGFyIGJ1ZlsyNTVdLCAqdG1wO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuYy0xMjctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuYzoxMjg6XFx0d2NuMzZ4eF9pbmZvKFxcXCJEVU1QIGFyZ3MgaXMgJWQgJWQgJWQgJWQgJWRcXFxcblxcXCIsIGFyZ1swXSwgYXJnWzFdLCBhcmdbMl0sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuYy0xMjktXFx0XFx0ICAgICBhcmdbM10sIGFyZ1s0XSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuYzoxMzA6XFx0d2NuMzZ4eF9zbWRfZHVtcF9jbWRfcmVxKHdjbiwgYXJnWzBdLCBhcmdbMV0sIGFyZ1syXSwgYXJnWzNdLCBhcmdbNF0pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2RlYnVnLmMtMTMxLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuYy0xMzQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuYzoxMzU6c3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZm9wc193Y24zNnh4X2R1bXAgPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuYy0xMzYtXFx0Lm9wZW4gPSBzaW1wbGVfb3BlbixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2RlYnVnLmM9MTQwPXN0YXRpYyBzc2l6ZV90IHJlYWRfZmlsZV9maXJtd2FyZV9mZWF0dXJlX2NhcHMoc3RydWN0IGZpbGUgKmZpbGUsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5jLTE0My17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuYzoxNDQ6XFx0c3RydWN0IHdjbjM2eHggKndjbiA9IGZpbGUtXFx1MDAzZXByaXZhdGVfZGF0YTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5jLTE0NS1cXHRzaXplX3QgbGVuID0gMCwgYnVmX2xlbiA9IDIwNDg7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5jLTE1NS1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgTUFYX0ZFQVRVUkVfU1VQUE9SVEVEOyBpKyspIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5jOjE1NjpcXHRcXHRpZiAod2NuMzZ4eF9maXJtd2FyZV9nZXRfZmVhdF9jYXBzKHdjbi1cXHUwMDNlZndfZmVhdF9jYXBzLCBpKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2RlYnVnLmMtMTU3LVxcdFxcdFxcdGxlbiArPSBzY25wcmludGYoYnVmICsgbGVuLCBidWZfbGVuIC0gbGVuLCBcXFwiJXNcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuYzoxNTg6XFx0XFx0XFx0XFx0XFx0IHdjbjM2eHhfZmlybXdhcmVfZ2V0X2NhcF9uYW1lKGkpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5jLTE1OS1cXHRcXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5jLTE3MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5jOjE3MTpzdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBmb3BzX3djbjM2eHhfZmlybXdhcmVfZmVhdF9jYXBzID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2RlYnVnLmMtMTcyLVxcdC5vcGVuID0gc2ltcGxlX29wZW4sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5jLTE4My1cXHRcXHRpZiAoSVNfRVJSKGQpKSB7XFx0XFx0XFx0XFx0XFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2RlYnVnLmM6MTg0OlxcdFxcdFxcdHdjbjM2eHhfd2FybihcXFwiQ3JlYXRlIHRoZSBkZWJ1Z2ZzIGVudHJ5IGZhaWxlZFxcXCIpO1xcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5jLTE4NS1cXHRcXHRcXHRkZnMtXFx1MDAzZWZpbGVfIyNuYW1lLmRlbnRyeSA9IE5VTEw7XFx0XFx0XFxcXFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuYy0xODktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuYzoxOTA6dm9pZCB3Y24zNnh4X2RlYnVnZnNfaW5pdChzdHJ1Y3Qgd2NuMzZ4eCAqd2NuKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2RlYnVnLmMtMTkxLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5jOjE5MjpcXHRzdHJ1Y3Qgd2NuMzZ4eF9kZnNfZW50cnkgKmRmcyA9IFxcdTAwMjZ3Y24tXFx1MDAzZWRmcztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5jLTE5My1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2RlYnVnLmMtMTk2LVxcdGlmIChJU19FUlIoZGZzLVxcdTAwM2Vyb290ZGlyKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2RlYnVnLmM6MTk3OlxcdFxcdHdjbjM2eHhfd2FybihcXFwiQ3JlYXRlIHRoZSBkZWJ1Z2ZzIGZhaWxlZFxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuYy0xOTgtXFx0XFx0ZGZzLVxcdTAwM2Vyb290ZGlyID0gTlVMTDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2RlYnVnLmMtMjAwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2RlYnVnLmM6MjAxOlxcdEFERF9GSUxFKGJtcHNfc3dpdGNoZXIsIDA2MDAsIFxcdTAwMjZmb3BzX3djbjM2eHhfYm1wcywgd2NuKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5jOjIwMjpcXHRBRERfRklMRShkdW1wLCAwMjAwLCBcXHUwMDI2Zm9wc193Y24zNnh4X2R1bXAsIHdjbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuYy0yMDMtXFx0QUREX0ZJTEUoZmlybXdhcmVfZmVhdF9jYXBzLCAwMjAwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2RlYnVnLmM6MjA0OlxcdFxcdCBcXHUwMDI2Zm9wc193Y24zNnh4X2Zpcm13YXJlX2ZlYXRfY2Fwcywgd2NuKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5jLTIwNS19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuYy0yMDYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuYzoyMDc6dm9pZCB3Y24zNnh4X2RlYnVnZnNfZXhpdChzdHJ1Y3Qgd2NuMzZ4eCAqd2NuKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2RlYnVnLmMtMjA4LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5jOjIwOTpcXHRzdHJ1Y3Qgd2NuMzZ4eF9kZnNfZW50cnkgKmRmcyA9IFxcdTAwMjZ3Y24tXFx1MDAzZWRmcztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5jLTIxMC1cXHRkZWJ1Z2ZzX3JlbW92ZV9yZWN1cnNpdmUoZGZzLVxcdTAwM2Vyb290ZGlyKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2RlYnVnLmgtMjQtI2lmZGVmIENPTkZJR19XQ04zNlhYX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5oOjI1OnN0cnVjdCB3Y24zNnh4X2Rmc19maWxlIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5oLTI2LVxcdHN0cnVjdCBkZW50cnkgKmRlbnRyeTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2RlYnVnLmgtMjktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuaDozMDpzdHJ1Y3Qgd2NuMzZ4eF9kZnNfZW50cnkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2RlYnVnLmgtMzEtXFx0c3RydWN0IGRlbnRyeSAqcm9vdGRpcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5oOjMyOlxcdHN0cnVjdCB3Y24zNnh4X2Rmc19maWxlIGZpbGVfYm1wc19zd2l0Y2hlcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5oOjMzOlxcdHN0cnVjdCB3Y24zNnh4X2Rmc19maWxlIGZpbGVfZHVtcDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5oOjM0OlxcdHN0cnVjdCB3Y24zNnh4X2Rmc19maWxlIGZpbGVfZmlybXdhcmVfZmVhdF9jYXBzO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2RlYnVnLmgtMzUtfTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5oLTM2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2RlYnVnLmg6Mzc6dm9pZCB3Y24zNnh4X2RlYnVnZnNfaW5pdChzdHJ1Y3Qgd2NuMzZ4eCAqd2NuKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5oOjM4OnZvaWQgd2NuMzZ4eF9kZWJ1Z2ZzX2V4aXQoc3RydWN0IHdjbjM2eHggKndjbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuaC0zOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5oLTQwLSNlbHNlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZGVidWcuaDo0MTpzdGF0aWMgaW5saW5lIHZvaWQgd2NuMzZ4eF9kZWJ1Z2ZzX2luaXQoc3RydWN0IHdjbjM2eHggKndjbilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5oLTQyLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5oLTQzLX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9kZWJ1Zy5oOjQ0OnN0YXRpYyBpbmxpbmUgdm9pZCB3Y24zNnh4X2RlYnVnZnNfZXhpdChzdHJ1Y3Qgd2NuMzZ4eCAqd2NuKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2RlYnVnLmgtNDUte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtMjYtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3NvYy9xY29tL3NtZW1fc3RhdGUuaFxcdTAwM2VcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzoyNzojaW5jbHVkZSBcXFwid2NuMzZ4eC5oXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTI4LSNpbmNsdWRlIFxcXCJ0eHJ4LmhcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtMjktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6MzA6c3RhdGljIHZvaWQgd2NuMzZ4eF9jY3Vfd3JpdGVfcmVnaXN0ZXIoc3RydWN0IHdjbjM2eHggKndjbiwgaW50IGFkZHIsIGludCBkYXRhKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTMxLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzozMjpcXHR3Y24zNnh4X2RiZyhXQ04zNlhYX0RCR19EWEUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6MzM6XFx0XFx0ICAgIFxcXCJ3Y24zNnh4X2NjdV93cml0ZV9yZWdpc3RlcjogYWRkcj0leCwgZGF0YT0leFxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy0zNC1cXHRcXHQgICAgYWRkciwgZGF0YSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy0zOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzozOTpzdGF0aWMgdm9pZCB3Y24zNnh4X2R4ZV93cml0ZV9yZWdpc3RlcihzdHJ1Y3Qgd2NuMzZ4eCAqd2NuLCBpbnQgYWRkciwgaW50IGRhdGEpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNDAte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjQxOlxcdHdjbjM2eHhfZGJnKFdDTjM2WFhfREJHX0RYRSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzo0MjpcXHRcXHQgICAgXFxcIndjbjM2eHhfZHhlX3dyaXRlX3JlZ2lzdGVyOiBhZGRyPSV4LCBkYXRhPSV4XFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTQzLVxcdFxcdCAgICBhZGRyLCBkYXRhKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTQ3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjQ4OnN0YXRpYyB2b2lkIHdjbjM2eHhfZHhlX3JlYWRfcmVnaXN0ZXIoc3RydWN0IHdjbjM2eHggKndjbiwgaW50IGFkZHIsIGludCAqZGF0YSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy00OS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy01MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzo1MjpcXHR3Y24zNnh4X2RiZyhXQ04zNlhYX0RCR19EWEUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6NTM6XFx0XFx0ICAgIFxcXCJ3Y24zNnh4X2R4ZV9yZWFkX3JlZ2lzdGVyOiBhZGRyPSV4LCBkYXRhPSV4XFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTU0LVxcdFxcdCAgICBhZGRyLCAqZGF0YSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy01Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzo1NzpzdGF0aWMgdm9pZCB3Y24zNnh4X2R4ZV9mcmVlX2N0bF9ibG9jayhzdHJ1Y3Qgd2NuMzZ4eF9keGVfY2ggKmNoKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTU4LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzo1OTpcXHRzdHJ1Y3Qgd2NuMzZ4eF9keGVfY3RsICpjdGwgPSBjaC1cXHUwMDNlaGVhZF9ibGtfY3RsLCAqbmV4dDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy02MC1cXHRpbnQgaTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTY4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjY5OnN0YXRpYyBpbnQgd2NuMzZ4eF9keGVfYWxsb2NhdGVfY3RsX2Jsb2NrKHN0cnVjdCB3Y24zNnh4X2R4ZV9jaCAqY2gpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNzAte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjcxOlxcdHN0cnVjdCB3Y24zNnh4X2R4ZV9jdGwgKnByZXZfY3RsID0gTlVMTDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzo3MjpcXHRzdHJ1Y3Qgd2NuMzZ4eF9keGVfY3RsICpjdXJfY3RsID0gTlVMTDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy03My1cXHRpbnQgaTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTk2LW91dF9mYWlsOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjk3OlxcdHdjbjM2eHhfZHhlX2ZyZWVfY3RsX2Jsb2NrKGNoKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy05OC1cXHRyZXR1cm4gLUVOT01FTTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTEwMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzoxMDE6aW50IHdjbjM2eHhfZHhlX2FsbG9jX2N0bF9ibGtzKHN0cnVjdCB3Y24zNnh4ICp3Y24pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtMTAyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTEzMC1cXHQvKiBEWEUgY29udHJvbCBibG9jayBhbGxvY2F0aW9uICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6MTMxOlxcdHJldCA9IHdjbjM2eHhfZHhlX2FsbG9jYXRlX2N0bF9ibG9jayhcXHUwMDI2d2NuLVxcdTAwM2VkeGVfdHhfbF9jaCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtMTMyLVxcdGlmIChyZXQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtMTMzLVxcdFxcdGdvdG8gb3V0X2VycjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzoxMzQ6XFx0cmV0ID0gd2NuMzZ4eF9keGVfYWxsb2NhdGVfY3RsX2Jsb2NrKFxcdTAwMjZ3Y24tXFx1MDAzZWR4ZV90eF9oX2NoKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy0xMzUtXFx0aWYgKHJldClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy0xMzYtXFx0XFx0Z290byBvdXRfZXJyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjEzNzpcXHRyZXQgPSB3Y24zNnh4X2R4ZV9hbGxvY2F0ZV9jdGxfYmxvY2soXFx1MDAyNndjbi1cXHUwMDNlZHhlX3J4X2xfY2gpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTEzOC1cXHRpZiAocmV0KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTEzOS1cXHRcXHRnb3RvIG91dF9lcnI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6MTQwOlxcdHJldCA9IHdjbjM2eHhfZHhlX2FsbG9jYXRlX2N0bF9ibG9jayhcXHUwMDI2d2NuLVxcdTAwM2VkeGVfcnhfaF9jaCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtMTQxLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy0xNTQtb3V0X2VycjpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzoxNTU6XFx0d2NuMzZ4eF9lcnIoXFxcIkZhaWxlZCB0byBhbGxvY2F0ZSBEWEUgY29udHJvbCBibG9ja3NcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjE1NjpcXHR3Y24zNnh4X2R4ZV9mcmVlX2N0bF9ibGtzKHdjbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtMTU3LVxcdHJldHVybiAtRU5PTUVNO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtMTU5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjE2MDp2b2lkIHdjbjM2eHhfZHhlX2ZyZWVfY3RsX2Jsa3Moc3RydWN0IHdjbjM2eHggKndjbilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy0xNjEte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjE2MjpcXHR3Y24zNnh4X2R4ZV9mcmVlX2N0bF9ibG9jayhcXHUwMDI2d2NuLVxcdTAwM2VkeGVfdHhfbF9jaCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6MTYzOlxcdHdjbjM2eHhfZHhlX2ZyZWVfY3RsX2Jsb2NrKFxcdTAwMjZ3Y24tXFx1MDAzZWR4ZV90eF9oX2NoKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzoxNjQ6XFx0d2NuMzZ4eF9keGVfZnJlZV9jdGxfYmxvY2soXFx1MDAyNndjbi1cXHUwMDNlZHhlX3J4X2xfY2gpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjE2NTpcXHR3Y24zNnh4X2R4ZV9mcmVlX2N0bF9ibG9jayhcXHUwMDI2d2NuLVxcdTAwM2VkeGVfcnhfaF9jaCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtMTY2LX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy0xNjctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6MTY4OnN0YXRpYyBpbnQgd2NuMzZ4eF9keGVfaW5pdF9kZXNjcyhzdHJ1Y3Qgd2NuMzZ4eCAqd2NuLCBzdHJ1Y3Qgd2NuMzZ4eF9keGVfY2ggKndjbl9jaClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy0xNjkte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTE3MC1cXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSB3Y24tXFx1MDAzZWRldjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzoxNzE6XFx0c3RydWN0IHdjbjM2eHhfZHhlX2Rlc2MgKmN1cl9keGUgPSBOVUxMO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjE3MjpcXHRzdHJ1Y3Qgd2NuMzZ4eF9keGVfZGVzYyAqcHJldl9keGUgPSBOVUxMO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjE3MzpcXHRzdHJ1Y3Qgd2NuMzZ4eF9keGVfY3RsICpjdXJfY3RsID0gTlVMTDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy0xNzQtXFx0c2l6ZV90IHNpemU7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy0xNzYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6MTc3OlxcdHNpemUgPSB3Y25fY2gtXFx1MDAzZWRlc2NfbnVtICogc2l6ZW9mKHN0cnVjdCB3Y24zNnh4X2R4ZV9kZXNjKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy0xNzgtXFx0d2NuX2NoLVxcdTAwM2VjcHVfYWRkciA9IGRtYV9hbGxvY19jb2hlcmVudChkZXYsIHNpemUsIFxcdTAwMjZ3Y25fY2gtXFx1MDAzZWRtYV9hZGRyLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtMTg4LVxcdFxcdGN1cl9jdGwtXFx1MDAzZWRlc2NfcGh5X2FkZHIgPSB3Y25fY2gtXFx1MDAzZWRtYV9hZGRyICtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzoxODk6XFx0XFx0XFx0aSAqIHNpemVvZihzdHJ1Y3Qgd2NuMzZ4eF9keGVfZGVzYyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtMTkwLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtMjI3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjIyODpzdGF0aWMgdm9pZCB3Y24zNnh4X2R4ZV9kZWluaXRfZGVzY3Moc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3Qgd2NuMzZ4eF9keGVfY2ggKndjbl9jaClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy0yMjkte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtMjMxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjIzMjpcXHRzaXplID0gd2NuX2NoLVxcdTAwM2VkZXNjX251bSAqIHNpemVvZihzdHJ1Y3Qgd2NuMzZ4eF9keGVfZGVzYyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtMjMzLVxcdGRtYV9mcmVlX2NvaGVyZW50KGRldiwgc2l6ZSx3Y25fY2gtXFx1MDAzZWNwdV9hZGRyLCB3Y25fY2gtXFx1MDAzZWRtYV9hZGRyKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTIzNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzoyMzY6c3RhdGljIHZvaWQgd2NuMzZ4eF9keGVfaW5pdF90eF9iZChzdHJ1Y3Qgd2NuMzZ4eF9keGVfY2ggKmNoLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjIzNzpcXHRcXHRcXHRcXHQgICBzdHJ1Y3Qgd2NuMzZ4eF9keGVfbWVtX3Bvb2wgKnBvb2wpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtMjM4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTI0MS1cXHR2b2lkICpiZF9jcHVfYWRkciA9IHBvb2wtXFx1MDAzZXZpcnRfYWRkcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzoyNDI6XFx0c3RydWN0IHdjbjM2eHhfZHhlX2N0bCAqY3VyID0gY2gtXFx1MDAzZWhlYWRfYmxrX2N0bDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy0yNDMtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy0yNTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6MjYwOnN0YXRpYyBpbnQgd2NuMzZ4eF9keGVfZW5hYmxlX2NoX2ludChzdHJ1Y3Qgd2NuMzZ4eCAqd2NuLCB1MTYgd2NuX2NoKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTI2MS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy0yNjMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6MjY0OlxcdHdjbjM2eHhfZHhlX3JlYWRfcmVnaXN0ZXIod2NuLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTI2NS1cXHRcXHRcXHRcXHQgIFdDTjM2WFhfRFhFX0lOVF9NQVNLX1JFRyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTI2OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzoyNzA6XFx0d2NuMzZ4eF9keGVfd3JpdGVfcmVnaXN0ZXIod2NuLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTI3MS1cXHRcXHRcXHRcXHQgICBXQ04zNlhYX0RYRV9JTlRfTUFTS19SRUcsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy0yNzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6Mjc2OnN0YXRpYyB2b2lkIHdjbjM2eHhfZHhlX2Rpc2FibGVfY2hfaW50KHN0cnVjdCB3Y24zNnh4ICp3Y24sIHUxNiB3Y25fY2gpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtMjc3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTI3OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzoyODA6XFx0d2NuMzZ4eF9keGVfcmVhZF9yZWdpc3Rlcih3Y24sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtMjgxLVxcdFxcdFxcdFxcdCAgV0NOMzZYWF9EWEVfSU5UX01BU0tfUkVHLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtMjg1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjI4NjpcXHR3Y24zNnh4X2R4ZV93cml0ZV9yZWdpc3Rlcih3Y24sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtMjg3LVxcdFxcdFxcdFxcdCAgIFdDTjM2WFhfRFhFX0lOVF9NQVNLX1JFRyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTI5MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzoyOTE6c3RhdGljIGludCB3Y24zNnh4X2R4ZV9maWxsX3NrYihzdHJ1Y3QgZGV2aWNlICpkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6MjkyOlxcdFxcdFxcdFxcdHN0cnVjdCB3Y24zNnh4X2R4ZV9jdGwgKmN0bCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy0yOTMtXFx0XFx0XFx0XFx0Z2ZwX3QgZ2ZwKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTI5NC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6Mjk1OlxcdHN0cnVjdCB3Y24zNnh4X2R4ZV9kZXNjICpkeGUgPSBjdGwtXFx1MDAzZWRlc2M7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtMjk2LVxcdHN0cnVjdCBza19idWZmICpza2I7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy0zMTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6MzE2OnN0YXRpYyBpbnQgd2NuMzZ4eF9keGVfY2hfYWxsb2Nfc2tiKHN0cnVjdCB3Y24zNnh4ICp3Y24sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6MzE3OlxcdFxcdFxcdFxcdCAgICBzdHJ1Y3Qgd2NuMzZ4eF9keGVfY2ggKndjbl9jaClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy0zMTgte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTMxOS1cXHRpbnQgaTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzozMjA6XFx0c3RydWN0IHdjbjM2eHhfZHhlX2N0bCAqY3VyX2N0bCA9IE5VTEw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtMzIxLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtMzI0LVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyB3Y25fY2gtXFx1MDAzZWRlc2NfbnVtOyBpKyspIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzozMjU6XFx0XFx0d2NuMzZ4eF9keGVfZmlsbF9za2Iod2NuLVxcdTAwM2VkZXYsIGN1cl9jdGwsIEdGUF9LRVJORUwpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTMyNi1cXHRcXHRjdXJfY3RsID0gY3VyX2N0bC1cXHUwMDNlbmV4dDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTMzMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzozMzI6c3RhdGljIHZvaWQgd2NuMzZ4eF9keGVfY2hfZnJlZV9za2JzKHN0cnVjdCB3Y24zNnh4ICp3Y24sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6MzMzOlxcdFxcdFxcdFxcdCAgICAgc3RydWN0IHdjbjM2eHhfZHhlX2NoICp3Y25fY2gpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtMzM0LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzozMzU6XFx0c3RydWN0IHdjbjM2eHhfZHhlX2N0bCAqY3VyID0gd2NuX2NoLVxcdTAwM2VoZWFkX2Jsa19jdGw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtMzM2LVxcdGludCBpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtMzQzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjM0NDp2b2lkIHdjbjM2eHhfZHhlX3R4X2Fja19pbmQoc3RydWN0IHdjbjM2eHggKndjbiwgdTMyIHN0YXR1cylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy0zNDUte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtMzU2LVxcdGlmICghc2tiKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6MzU3OlxcdFxcdHdjbjM2eHhfd2FybihcXFwiU3B1cmlvdXMgVFggY29tcGxldGUgaW5kaWNhdGlvblxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtMzU4LVxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTM2Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzozNjg6XFx0d2NuMzZ4eF9kYmcoV0NOMzZYWF9EQkdfRFhFLCBcXFwiZHhlIHR4IGFjayBzdGF0dXM6ICVkXFxcXG5cXFwiLCBzdGF0dXMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTM2OS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTM3My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzozNzQ6c3RhdGljIHZvaWQgd2NuMzZ4eF9keGVfdHhfdGltZXIoc3RydWN0IHRpbWVyX2xpc3QgKnQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtMzc1LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzozNzY6XFx0c3RydWN0IHdjbjM2eHggKndjbiA9IHRpbWVyX2NvbnRhaW5lcl9vZih3Y24sIHQsIHR4X2Fja190aW1lcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtMzc3LVxcdHN0cnVjdCBpZWVlODAyMTFfdHhfaW5mbyAqaW5mbztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTM4MS1cXHQvKiBUWCBUaW1lb3V0ICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6MzgyOlxcdHdjbjM2eHhfZGJnKFdDTjM2WFhfREJHX0RYRSwgXFxcIlRYIHRpbWVvdXRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTM4My1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTM5OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzo0MDA6c3RhdGljIHZvaWQgcmVhcF90eF9keGVzKHN0cnVjdCB3Y24zNnh4ICp3Y24sIHN0cnVjdCB3Y24zNnh4X2R4ZV9jaCAqY2gpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNDAxLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzo0MDI6XFx0c3RydWN0IHdjbjM2eHhfZHhlX2N0bCAqY3RsO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTQwMy1cXHRzdHJ1Y3QgaWVlZTgwMjExX3R4X2luZm8gKmluZm87XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy00NTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6NDU0OnN0YXRpYyBpcnFyZXR1cm5fdCB3Y24zNnh4X2lycV90eF9jb21wbGV0ZShpbnQgaXJxLCB2b2lkICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNDU1LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzo0NTY6XFx0c3RydWN0IHdjbjM2eHggKndjbiA9IGRldjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy00NTctXFx0aW50IGludF9zcmMsIGludF9yZWFzb247XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNDU4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjQ1OTpcXHR3Y24zNnh4X2R4ZV9yZWFkX3JlZ2lzdGVyKHdjbiwgV0NOMzZYWF9EWEVfSU5UX1NSQ19SQVdfUkVHLCBcXHUwMDI2aW50X3NyYyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNDYwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTQ2MS1cXHRpZiAoaW50X3NyYyBcXHUwMDI2IFdDTjM2WFhfSU5UX01BU0tfQ0hBTl9UWF9IKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6NDYyOlxcdFxcdHdjbjM2eHhfZHhlX3JlYWRfcmVnaXN0ZXIod2NuLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTQ2My1cXHRcXHRcXHRcXHRcXHQgIFdDTjM2WFhfRFhFX0NIX1NUQVRVU19SRUdfQUREUl9UWF9ILFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNDY1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjQ2NjpcXHRcXHR3Y24zNnh4X2R4ZV93cml0ZV9yZWdpc3Rlcih3Y24sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNDY3LVxcdFxcdFxcdFxcdFxcdCAgIFdDTjM2WFhfRFhFXzBfSU5UX0NMUixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTQ3MC1cXHRcXHRpZiAoaW50X3JlYXNvbiBcXHUwMDI2IFdDTjM2WFhfQ0hfU1RBVF9JTlRfRVJSX01BU0sgKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6NDcxOlxcdFxcdFxcdHdjbjM2eHhfZHhlX3dyaXRlX3JlZ2lzdGVyKHdjbixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy00NzItXFx0XFx0XFx0XFx0XFx0XFx0ICAgV0NOMzZYWF9EWEVfMF9JTlRfRVJSX0NMUixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTQ3NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzo0NzU6XFx0XFx0XFx0d2NuMzZ4eF9lcnIoXFxcIkRYRSBJUlEgcmVwb3J0ZWQgZXJyb3I6IDB4JXggaW4gaGlnaCBUWCBjaGFubmVsXFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTQ3Ni1cXHRcXHRcXHRcXHRcXHRpbnRfc3JjKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTQ3OS1cXHRcXHRpZiAoaW50X3JlYXNvbiBcXHUwMDI2IFdDTjM2WFhfQ0hfU1RBVF9JTlRfRE9ORV9NQVNLKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6NDgwOlxcdFxcdFxcdHdjbjM2eHhfZHhlX3dyaXRlX3JlZ2lzdGVyKHdjbixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy00ODEtXFx0XFx0XFx0XFx0XFx0XFx0ICAgV0NOMzZYWF9EWEVfMF9JTlRfRE9ORV9DTFIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy00ODUtXFx0XFx0aWYgKGludF9yZWFzb24gXFx1MDAyNiBXQ04zNlhYX0NIX1NUQVRfSU5UX0VEX01BU0spIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzo0ODY6XFx0XFx0XFx0d2NuMzZ4eF9keGVfd3JpdGVfcmVnaXN0ZXIod2NuLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTQ4Ny1cXHRcXHRcXHRcXHRcXHRcXHQgICBXQ04zNlhYX0RYRV8wX0lOVF9FRF9DTFIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy00OTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6NDkxOlxcdFxcdHdjbjM2eHhfZGJnKFdDTjM2WFhfREJHX0RYRSwgXFxcImR4ZSB0eCByZWFkeSBoaWdoLCByZWFzb24gJTA4eFxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy00OTItXFx0XFx0XFx0ICAgIGludF9yZWFzb24pO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNTAwLVxcdGlmIChpbnRfc3JjIFxcdTAwMjYgV0NOMzZYWF9JTlRfTUFTS19DSEFOX1RYX0wpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzo1MDE6XFx0XFx0d2NuMzZ4eF9keGVfcmVhZF9yZWdpc3Rlcih3Y24sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNTAyLVxcdFxcdFxcdFxcdFxcdCAgV0NOMzZYWF9EWEVfQ0hfU1RBVFVTX1JFR19BRERSX1RYX0wsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy01MDQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6NTA1OlxcdFxcdHdjbjM2eHhfZHhlX3dyaXRlX3JlZ2lzdGVyKHdjbixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy01MDYtXFx0XFx0XFx0XFx0XFx0ICAgV0NOMzZYWF9EWEVfMF9JTlRfQ0xSLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNTA5LVxcdFxcdGlmIChpbnRfcmVhc29uIFxcdTAwMjYgV0NOMzZYWF9DSF9TVEFUX0lOVF9FUlJfTUFTSyApIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzo1MTA6XFx0XFx0XFx0d2NuMzZ4eF9keGVfd3JpdGVfcmVnaXN0ZXIod2NuLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTUxMS1cXHRcXHRcXHRcXHRcXHRcXHQgICBXQ04zNlhYX0RYRV8wX0lOVF9FUlJfQ0xSLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNTEzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjUxNDpcXHRcXHRcXHR3Y24zNnh4X2VycihcXFwiRFhFIElSUSByZXBvcnRlZCBlcnJvcjogMHgleCBpbiBsb3cgVFggY2hhbm5lbFxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy01MTUtXFx0XFx0XFx0XFx0XFx0aW50X3NyYyk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy01MTgtXFx0XFx0aWYgKGludF9yZWFzb24gXFx1MDAyNiBXQ04zNlhYX0NIX1NUQVRfSU5UX0RPTkVfTUFTSykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjUxOTpcXHRcXHRcXHR3Y24zNnh4X2R4ZV93cml0ZV9yZWdpc3Rlcih3Y24sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNTIwLVxcdFxcdFxcdFxcdFxcdFxcdCAgIFdDTjM2WFhfRFhFXzBfSU5UX0RPTkVfQ0xSLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNTI0LVxcdFxcdGlmIChpbnRfcmVhc29uIFxcdTAwMjYgV0NOMzZYWF9DSF9TVEFUX0lOVF9FRF9NQVNLKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6NTI1OlxcdFxcdFxcdHdjbjM2eHhfZHhlX3dyaXRlX3JlZ2lzdGVyKHdjbixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy01MjYtXFx0XFx0XFx0XFx0XFx0XFx0ICAgV0NOMzZYWF9EWEVfMF9JTlRfRURfQ0xSLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNTI5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjUzMDpcXHRcXHR3Y24zNnh4X2RiZyhXQ04zNlhYX0RCR19EWEUsIFxcXCJkeGUgdHggcmVhZHkgbG93LCByZWFzb24gJTA4eFxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy01MzEtXFx0XFx0XFx0ICAgIGludF9yZWFzb24pO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNTQxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjU0MjpzdGF0aWMgaXJxcmV0dXJuX3Qgd2NuMzZ4eF9pcnFfcnhfcmVhZHkoaW50IGlycSwgdm9pZCAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTU0My17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6NTQ0OlxcdHN0cnVjdCB3Y24zNnh4ICp3Y24gPSBkZXY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNTQ1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjU0NjpcXHR3Y24zNnh4X2R4ZV9yeF9mcmFtZSh3Y24pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTU0Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTU1MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzo1NTE6c3RhdGljIGludCB3Y24zNnh4X2R4ZV9yZXF1ZXN0X2lycXMoc3RydWN0IHdjbjM2eHggKndjbilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy01NTIte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNTU0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjU1NTpcXHRyZXQgPSByZXF1ZXN0X2lycSh3Y24tXFx1MDAzZXR4X2lycSwgd2NuMzZ4eF9pcnFfdHhfY29tcGxldGUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6NTU2OlxcdFxcdFxcdCAgSVJRRl9UUklHR0VSX0hJR0gsIFxcXCJ3Y24zNnh4X3R4XFxcIiwgd2NuKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy01NTctXFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjU1ODpcXHRcXHR3Y24zNnh4X2VycihcXFwiZmFpbGVkIHRvIGFsbG9jIHR4IGlycVxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNTU5LVxcdFxcdGdvdG8gb3V0X2VycjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTU2MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzo1NjI6XFx0cmV0ID0gcmVxdWVzdF9pcnEod2NuLVxcdTAwM2VyeF9pcnEsIHdjbjM2eHhfaXJxX3J4X3JlYWR5LCBJUlFGX1RSSUdHRVJfSElHSCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzo1NjM6XFx0XFx0XFx0ICBcXFwid2NuMzZ4eF9yeFxcXCIsIHdjbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNTY0LVxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzo1NjU6XFx0XFx0d2NuMzZ4eF9lcnIoXFxcImZhaWxlZCB0byBhbGxvYyByeCBpcnFcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTU2Ni1cXHRcXHRnb3RvIG91dF90eGlycTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTU3OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzo1ODA6c3RhdGljIGludCB3Y24zNnh4X3J4X2hhbmRsZV9wYWNrZXRzKHN0cnVjdCB3Y24zNnh4ICp3Y24sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6NTgxOlxcdFxcdFxcdFxcdCAgICAgc3RydWN0IHdjbjM2eHhfZHhlX2NoICpjaCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy01ODItXFx0XFx0XFx0XFx0ICAgICB1MzIgY3RybCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTU4Ni17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6NTg3OlxcdHN0cnVjdCB3Y24zNnh4X2R4ZV9kZXNjICpkeGU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6NTg4OlxcdHN0cnVjdCB3Y24zNnh4X2R4ZV9jdGwgKmN0bDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy01ODktXFx0ZG1hX2FkZHJfdCAgZG1hX2FkZHI7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy01OTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6NTk0OlxcdHdjbjM2eHhfZHhlX3JlYWRfcmVnaXN0ZXIod2NuLCBzdGF0dXNfcmVnLCBcXHUwMDI2aW50X3JlYXNvbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6NTk1OlxcdHdjbjM2eHhfZHhlX3dyaXRlX3JlZ2lzdGVyKHdjbiwgV0NOMzZYWF9EWEVfMF9JTlRfQ0xSLCBpbnRfbWFzayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNTk2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTU5Ny1cXHRpZiAoaW50X3JlYXNvbiBcXHUwMDI2IFdDTjM2WFhfQ0hfU1RBVF9JTlRfRVJSX01BU0spIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzo1OTg6XFx0XFx0d2NuMzZ4eF9keGVfd3JpdGVfcmVnaXN0ZXIod2NuLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTU5OS1cXHRcXHRcXHRcXHRcXHQgICBXQ04zNlhYX0RYRV8wX0lOVF9FUlJfQ0xSLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNjAxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjYwMjpcXHRcXHR3Y24zNnh4X2VycihcXFwiRFhFIElSUSByZXBvcnRlZCBlcnJvciBvbiBSWCBjaGFubmVsXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy02MDMtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNjA1LVxcdGlmIChpbnRfcmVhc29uIFxcdTAwMjYgV0NOMzZYWF9DSF9TVEFUX0lOVF9ET05FX01BU0spXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6NjA2OlxcdFxcdHdjbjM2eHhfZHhlX3dyaXRlX3JlZ2lzdGVyKHdjbixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy02MDctXFx0XFx0XFx0XFx0XFx0ICAgV0NOMzZYWF9EWEVfMF9JTlRfRE9ORV9DTFIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy02MTAtXFx0aWYgKGludF9yZWFzb24gXFx1MDAyNiBXQ04zNlhYX0NIX1NUQVRfSU5UX0VEX01BU0spXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6NjExOlxcdFxcdHdjbjM2eHhfZHhlX3dyaXRlX3JlZ2lzdGVyKHdjbixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy02MTItXFx0XFx0XFx0XFx0XFx0ICAgV0NOMzZYWF9EWEVfMF9JTlRfRURfQ0xSLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNjMwLVxcdFxcdGRtYV9hZGRyID0gZHhlLVxcdTAwM2Vkc3RfYWRkcl9sO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjYzMTpcXHRcXHRyZXQgPSB3Y24zNnh4X2R4ZV9maWxsX3NrYih3Y24tXFx1MDAzZWRldiwgY3RsLCBHRlBfQVRPTUlDKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy02MzItXFx0XFx0aWYgKDAgPT0gcmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy02MzctXFx0XFx0XFx0XFx0XFx0RE1BX0ZST01fREVWSUNFKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzo2Mzg6XFx0XFx0XFx0d2NuMzZ4eF9yeF9za2Iod2NuLCBza2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTYzOS1cXHRcXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy02NTAtXFx0fVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjY1MTpcXHR3Y24zNnh4X2R4ZV93cml0ZV9yZWdpc3Rlcih3Y24sIFdDTjM2WFhfRFhFX0VOQ0hfQUREUiwgZW5fbWFzayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNjUyLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNjU5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjY2MDp2b2lkIHdjbjM2eHhfZHhlX3J4X2ZyYW1lKHN0cnVjdCB3Y24zNnh4ICp3Y24pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNjYxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTY2My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzo2NjQ6XFx0d2NuMzZ4eF9keGVfcmVhZF9yZWdpc3Rlcih3Y24sIFdDTjM2WFhfRFhFX0lOVF9TUkNfUkFXX1JFRywgXFx1MDAyNmludF9zcmMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTY2NS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTY2Ny1cXHRpZiAoaW50X3NyYyBcXHUwMDI2IFdDTjM2WFhfRFhFX0lOVF9DSDFfTUFTSylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzo2Njg6XFx0XFx0d2NuMzZ4eF9yeF9oYW5kbGVfcGFja2V0cyh3Y24sIFxcdTAwMjZ3Y24tXFx1MDAzZWR4ZV9yeF9sX2NoLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTY2OS1cXHRcXHRcXHRcXHRcXHQgIFdDTjM2WFhfRFhFX0NUUkxfUlhfTCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTY3NS1cXHRpZiAoaW50X3NyYyBcXHUwMDI2IFdDTjM2WFhfRFhFX0lOVF9DSDNfTUFTSylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzo2NzY6XFx0XFx0d2NuMzZ4eF9yeF9oYW5kbGVfcGFja2V0cyh3Y24sIFxcdTAwMjZ3Y24tXFx1MDAzZWR4ZV9yeF9oX2NoLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTY3Ny1cXHRcXHRcXHRcXHRcXHQgIFdDTjM2WFhfRFhFX0NUUkxfUlhfSCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTY4Mi1cXHRpZiAoIWludF9zcmMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6NjgzOlxcdFxcdHdjbjM2eHhfd2FybihcXFwiTm8gRFhFIGludGVycnVwdCBwZW5kaW5nXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy02ODQtfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTY4NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzo2ODY6aW50IHdjbjM2eHhfZHhlX2FsbG9jYXRlX21lbV9wb29scyhzdHJ1Y3Qgd2NuMzZ4eCAqd2NuKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTY4Ny17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy03MjMtb3V0X2VycjpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzo3MjQ6XFx0d2NuMzZ4eF9keGVfZnJlZV9tZW1fcG9vbHMod2NuKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzo3MjU6XFx0d2NuMzZ4eF9lcnIoXFxcIkZhaWxlZCB0byBhbGxvY2F0ZSBCRCBtZW1wb29sXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy03MjYtXFx0cmV0dXJuIC1FTk9NRU07XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy03MjgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6NzI5OnZvaWQgd2NuMzZ4eF9keGVfZnJlZV9tZW1fcG9vbHMoc3RydWN0IHdjbjM2eHggKndjbilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy03MzAte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNzQ0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjc0NTppbnQgd2NuMzZ4eF9keGVfdHhfZnJhbWUoc3RydWN0IHdjbjM2eHggKndjbixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzo3NDY6XFx0XFx0XFx0IHN0cnVjdCB3Y24zNnh4X3ZpZiAqdmlmX3ByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6NzQ3OlxcdFxcdFxcdCBzdHJ1Y3Qgd2NuMzZ4eF90eF9iZCAqYmQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNzQ4LVxcdFxcdFxcdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNzUwLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzo3NTE6XFx0c3RydWN0IHdjbjM2eHhfZHhlX2Rlc2MgKmRlc2NfYmQsICpkZXNjX3NrYjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzo3NTI6XFx0c3RydWN0IHdjbjM2eHhfZHhlX2N0bCAqY3RsX2JkLCAqY3RsX3NrYjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzo3NTM6XFx0c3RydWN0IHdjbjM2eHhfZHhlX2NoICpjaCA9IE5VTEw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNzU0LVxcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy03NzUtXFx0aWYgKHVubGlrZWx5KGN0bF9za2ItXFx1MDAzZWJkX2NwdV9hZGRyKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjc3NjpcXHRcXHR3Y24zNnh4X2VycihcXFwiYmRfY3B1X2FkZHIgY2Fubm90IGJlIE5VTEwgZm9yIHNrYiBEWEVcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTc3Ny1cXHRcXHRyZXQgPSAtRUlOVkFMO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtNzkxLVxcdGRlc2NfYmQtXFx1MDAzZWRzdF9hZGRyX2wgPSBjaC1cXHUwMDNlZHhlX3dxO1xcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQwMjo0MTo0My41ODEzODIzMDZaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMjE5NjI0Njg4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkludmVzdGlnYXRpbmcgV0NOMzZYWCBLY29uZmlnIGFuZCBCdXMgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBxdWlja2x5IGdldCBhIGhhbmRsZSBvbiB0aGUgV0NOMzZYWCBkcml2ZXIncyBjb25maWd1cmF0aW9uIHdpdGhpbiB0aGUga2VybmVsLiBNeSBpbW1lZGlhdGUgZm9jdXMgaXMgb24gaXRzIEtjb25maWcgZW50cmllcy4gU3BlY2lmaWNhbGx5LCBJIHdhbnQgdG8gcGlucG9pbnQgd2hlcmUgdGhlIFdDTjM2WFggaXMgZGVmaW5lZCBhbmQgaG93IGl0cyBidXMgdHlwZSBpcyBzcGVjaWZpZWQuIFRoaXMgaXMgd2hlcmUgSSBjYW4gc3RhcnQgdW5kZXJzdGFuZGluZyBpdHMgZGVwZW5kZW5jaWVzIGFuZCBpbnN0YW50aWF0aW9uIHByb2NlZHVyZS4gS25vd2luZyB0aGUgdW5kZXJseWluZyBidXMg4oCTIFNQSSwgU0RJTywgUENJZSwgZXRjLiDigJMgd2lsbCBiZSBjcnVjaWFsIGZvciBkZWJ1Z2dpbmcgYW55IGlzc3VlcyBvciBvcHRpbWl6aW5nIGl0cyBpbnRlZ3JhdGlvbi4gSSdsbCBiZSBsb29raW5nIGZvciBjb25maWd1cmF0aW9uIHN5bWJvbHMsIGxpa2VseSBgQ09ORklHX1dDTjM2WFhgIGFuZCBwb3RlbnRpYWxseSByZWxhdGVkIGJ1cy1zcGVjaWZpYyBvcHRpb25zIGxpa2UgYENPTkZJR19XQ04zNlhYX1NQSWAgb3IgdGhlIGxpa2UsIHRvIHVuZGVyc3RhbmQgdGhlIGJ1aWxkLXRpbWUgb3B0aW9ucyBhbmQgaG93IHRvIGVuYWJsZS9kaXNhYmxlIHRoaXMgZmVhdHVyZS4gV2l0aCB0aGF0IGluZm9ybWF0aW9uIGluIGhhbmQsIEkgY2FuIHRoZW4gZGl2ZSBkZWVwZXIgaW50byB0aGUgZHJpdmVyIGNvZGUgaWYgbmVlZCBiZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTg4MTAsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQwMjo0MTo0NS44MDEwMDk5MDRaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MDA4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogSVNDXFxuICAgMjpcXHRjb25maWcgV0NOMzZYWFxcbiAgIDM6XFx0XFx0dHJpc3RhdGUgXFxcIlF1YWxjb21tIEF0aGVyb3MgV0NOMzY2MC8zNjgwIHN1cHBvcnRcXFwiXFxuICAgNDpcXHRcXHRkZXBlbmRzIG9uIE1BQzgwMjExIFxcdTAwMjZcXHUwMDI2IEhBU19ETUFcXG4gICA1OlxcdFxcdGRlcGVuZHMgb24gUUNPTV9XQ05TU19DVFJMIHx8IFFDT01fV0NOU1NfQ1RSTD1uXFxuICAgNjpcXHRcXHRkZXBlbmRzIG9uIFJQTVNHIHx8IFJQTVNHPW5cXG4gICA3OlxcdFxcdGhlbHBcXG4gICA4OlxcdFxcdCAgVGhpcyBtb2R1bGUgYWRkcyBzdXBwb3J0IGZvciB3aXJlbGVzcyBhZGFwdGVycyBiYXNlZCBvblxcbiAgIDk6XFx0XFx0ICBRdWFsY29tbSBBdGhlcm9zIFdDTjM2NjAgYW5kIFdDTjM2ODAgbW9iaWxlIGNoaXBzZXRzLlxcbiAgMTA6XFx0XFxuICAxMTpcXHRcXHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgYSBtb2R1bGUsIGl0J2xsIGJlIGNhbGxlZCB3Y24zNnh4LlxcbiAgMTI6XFx0XFxuICAxMzpcXHRjb25maWcgV0NOMzZYWF9ERUJVR0ZTXFxuICAxNDpcXHRcXHRib29sIFxcXCJXQ04zNlhYIGRlYnVnZnMgc3VwcG9ydFxcXCJcXG4gIDE1OlxcdFxcdGRlcGVuZHMgb24gV0NOMzZYWFxcbiAgMTY6XFx0XFx0aGVscFxcbiAgMTc6XFx0XFx0ICBFbmFibGVkIGRlYnVnZnMgc3VwcG9ydFxcbiAgMTg6XFx0XFxuICAxOTpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IFkgdG8gbWFrZSBpdCBlYXNpZXIgdG8gZGVidWcgcHJvYmxlbXMuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDAyOjQxOjQ1LjgwMTA5MTg1NFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI3MTY0MzYyMTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGZyb20gYW4gZXhwZXJ0J3MgcGVyc3BlY3RpdmU6XG5cbioqRGl2aW5nIGludG8gdGhlIFdDTjM2WFggRHJpdmVyIEluaXRpYWxpemF0aW9uKipcblxuQWxyaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgV0NOMzZYWCBkcml2ZXIgaXMgaW5pdGlhbGl6ZWQsIHdoYXQgaGFyZHdhcmUgaXQncyBkZXNpZ25lZCB0byBpbnRlcmZhY2Ugd2l0aCwgYW5kIGhvdyBpdCdzIGF0dGFjaGluZyB0byB0aGUgc3lzdGVtLiBUaGUgYmVzdCBwbGFjZSB0byBzdGFydCBpcyBhbHdheXMgdGhlIGNvcmUuIExldCdzIGxvb2sgYXQgYG1haW4uY2Agd2l0aGluIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvYCBkaXJlY3RvcnkuIFRoYXQncyB1c3VhbGx5IHdoZXJlIHRoZSBoZWFydCBvZiB0aGUgcHJvYmUgZnVuY3Rpb24gbGllcyDigJMgdGhlIGVudHJ5IHBvaW50IHdoZXJlIHRoZSBkcml2ZXIgZGV0ZXJtaW5lcyBkZXZpY2UgcHJlc2VuY2UsIGNvbmZpZ3VyYXRpb24sIGFuZCBob3cgaXQgYmluZHMgdG8gdGhlIGJ1cy4gSSBleHBlY3QgdG8gZmluZCB0aGUgc3RhbmRhcmQgYG1vZHVsZV9pbml0YCBhbmQgYG1vZHVsZV9leGl0YCBtYWNyb3MsIHdoaWNoIHdpbGwgZGVmaW5lIHRoZSBwcm9iZSBhbmQgcmVtb3ZlIGZ1bmN0aW9ucy4gSSdsbCBiZSBsb29raW5nIHNwZWNpZmljYWxseSBhdCB0aGUgcHJvYmUgZnVuY3Rpb24gdG8gdW5kZXJzdGFuZCB3aGljaCBkZXZpY2UgSURzIGl0IHN1cHBvcnRzIGFuZCwgbW9yZSBicm9hZGx5LCB3aGljaCBidXMgdHlwZXMgaXQncyBwcmVwYXJlZCB0byBoYW5kbGUg4oCTIFBDSWUsIFNESU8sIFVTQiwgZXRjLiBLbm93aW5nIHRoZSBhdHRhY2htZW50IG1ldGhvZCBpcyBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgZGV2aWNlJ3MgY2FwYWJpbGl0aWVzIGFuZCBjb25zdHJhaW50cy4gVGhpcyBpbmZvcm1hdGlvbiB3aWxsIGluZm9ybSBteSBuZXh0IHN0ZXBzIGluIGFzc2Vzc2luZyBpdHMgb3ZlcmFsbCBhcmNoaXRlY3R1cmUgYW5kIHBlcmZvcm1hbmNlIGNoYXJhY3RlcmlzdGljcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTkzNzQsIk91dHB1dFRva2VucyI6NTAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDAyOjQxOjQ4LjUxNzUzMTEwNFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODU2MDgyOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtb2R1bGVfcGxhdGZvcm1fZHJpdmVyfG1vZHVsZV9pbml0fGRyaXZlcl9yZWdpc3RlcnxwbGF0Zm9ybV9kcml2ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jPTE2NzQ9TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgd2NuMzZ4eF9vZl9tYXRjaCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTE2NzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjE2NzY6c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgd2NuMzZ4eF9kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTE2NzctXFx0LnByb2JlID0gd2NuMzZ4eF9wcm9iZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0xNjg0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzoxNjg1Om1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIod2NuMzZ4eF9kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0xNjg2LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQwMjo0MTo0OC41NjYwOTgyMDNaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1ODE2NjY4Njk1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYW5hbHlzaXMgb2YgdGhlIHByb3ZpZGVkIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byB3Y24zNnh4X3Byb2JlKipcblxuT2theSwgc28gdGhlIG1lbnRhbCB0aHJlYWQgc3RhcnRzIHdpdGggYHdjbjM2eHhfcHJvYmVgIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmNgLiBDbGVhcmx5LCB3ZSdyZSBhdCB0aGUgZGV2aWNlIHByb2JlIHN0YWdlIGZvciB0aGUgV0NOMzZ4eCB3aXJlbGVzcyBjaGlwc2V0IHdpdGhpbiB0aGUgQXRoZXJvcyBmYW1pbHkgb2YgZHJpdmVycy4gVGhpcyBzdWdnZXN0cyB3ZSdyZSB0cm91Ymxlc2hvb3RpbmcgYW4gaW5pdGlhbGl6YXRpb24gaXNzdWUsIGV4YW1pbmluZyB0aGUgZGV2aWNlIHJlZ2lzdHJhdGlvbiwgb3IgcG90ZW50aWFsbHkgbG9va2luZyBpbnRvIHBvd2VyIG1hbmFnZW1lbnQgc2VxdWVuY2VzIHRpZWQgdG8gdGhlIGluaXRpYWwgYnJpbmctdXAuXG5cbk15IGluaXRpYWwgYXNzdW1wdGlvbiBpcyB0aGF0IHdlJ3JlIGRlYWxpbmcgd2l0aCBvbmUgb2Ygc2V2ZXJhbCBwb3NzaWJsZSBwcm9ibGVtczogZWl0aGVyIGEgZ2VuZXJhbCBwcm9iZSBmYWlsdXJlLCBhIHJlc291cmNlIGFsbG9jYXRpb24gZXJyb3IsIGEgaGFyZHdhcmUgZGV0ZWN0aW9uIGlzc3VlLCBvciBwZXJoYXBzIHNvbWUgY29uZmlndXJhdGlvbiBpbmNvbXBhdGliaWxpdHkuIFdlJ3JlIHplcm9pbmcgaW4gb24gdGhpcyBmdW5jdGlvbiBiZWNhdXNlIGl0J3MgdGhlIGVudHJ5IHBvaW50IGludG8gdGhlIGRyaXZlcidzIGludGVyYWN0aW9uIHdpdGggdGhlIGRldmljZSBkdXJpbmcgaXRzIGVudW1lcmF0aW9uLiBUaW1lIHRvIGRpZyBpbiBhbmQgc2VlIHdoYXQncyBoYXBwZW5pbmcuIEknbGwgYmUgbG9va2luZyBmb3IgY2x1ZXMgb24gcmVzb3VyY2UgY29uZmxpY3RzLCBkZXZpY2Utc3BlY2lmaWMgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2VzLCBhbmQgZXJyb3IgaGFuZGxpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5OTYxLCJPdXRwdXRUb2tlbnMiOjQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMDI6NDE6NTQuMzgyNzcwMDM4WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyMDU5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTU2MCxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjE1NjA6XFx0XFx0c3RydWN0IGllZWU4MDIxMV9odyAqaHc7XFxuMTU2MTpcXHRcXHRzdHJ1Y3Qgd2NuMzZ4eCAqd2NuO1xcbjE1NjI6XFx0XFx0dm9pZCAqd2Nuc3M7XFxuMTU2MzpcXHRcXHRpbnQgcmV0O1xcbjE1NjQ6XFx0XFx0Y29uc3QgdTggKmFkZHI7XFxuMTU2NTpcXHRcXHRpbnQgbl9jaGFubmVscztcXG4xNTY2OlxcdFxcbjE1Njc6XFx0XFx0d2NuMzZ4eF9kYmcoV0NOMzZYWF9EQkdfTUFDLCBcXFwicGxhdGZvcm0gcHJvYmVcXFxcblxcXCIpO1xcbjE1Njg6XFx0XFxuMTU2OTpcXHRcXHR3Y25zcyA9IGRldl9nZXRfZHJ2ZGF0YShwZGV2LVxcdTAwM2VkZXYucGFyZW50KTtcXG4xNTcwOlxcdFxcbjE1NzE6XFx0XFx0bl9jaGFubmVscyA9IHdjbl9iYW5kXzJnaHoubl9jaGFubmVscyArIHdjbl9iYW5kXzVnaHoubl9jaGFubmVscztcXG4xNTcyOlxcdFxcdGh3ID0gaWVlZTgwMjExX2FsbG9jX2h3KHN0cnVjdF9zaXplKHdjbiwgY2hhbl9zdXJ2ZXksIG5fY2hhbm5lbHMpLCBcXHUwMDI2d2NuMzZ4eF9vcHMpO1xcbjE1NzM6XFx0XFx0aWYgKCFodykge1xcbjE1NzQ6XFx0XFx0XFx0d2NuMzZ4eF9lcnIoXFxcImZhaWxlZCB0byBhbGxvYyBod1xcXFxuXFxcIik7XFxuMTU3NTpcXHRcXHRcXHRyZXQgPSAtRU5PTUVNO1xcbjE1NzY6XFx0XFx0XFx0Z290byBvdXRfZXJyO1xcbjE1Nzc6XFx0XFx0fVxcbjE1Nzg6XFx0XFx0cGxhdGZvcm1fc2V0X2RydmRhdGEocGRldiwgaHcpO1xcbjE1Nzk6XFx0XFx0d2NuID0gaHctXFx1MDAzZXByaXY7XFxuMTU4MDpcXHRcXHR3Y24tXFx1MDAzZWh3ID0gaHc7XFxuMTU4MTpcXHRcXHR3Y24tXFx1MDAzZWRldiA9IFxcdTAwMjZwZGV2LVxcdTAwM2VkZXY7XFxuMTU4MjpcXHRcXHR3Y24tXFx1MDAzZWZpcnN0X2Jvb3QgPSB0cnVlO1xcbjE1ODM6XFx0XFx0bXV0ZXhfaW5pdChcXHUwMDI2d2NuLVxcdTAwM2Vjb25mX211dGV4KTtcXG4xNTg0OlxcdFxcdG11dGV4X2luaXQoXFx1MDAyNndjbi1cXHUwMDNlaGFsX211dGV4KTtcXG4xNTg1OlxcdFxcdG11dGV4X2luaXQoXFx1MDAyNndjbi1cXHUwMDNlc2Nhbl9sb2NrKTtcXG4xNTg2OlxcdFxcdF9fc2tiX3F1ZXVlX2hlYWRfaW5pdChcXHUwMDI2d2NuLVxcdTAwM2VhbXNkdSk7XFxuMTU4NzpcXHRcXG4xNTg4OlxcdFxcdHdjbi1cXHUwMDNlaGFsX2J1ZiA9IGRldm1fa21hbGxvYyh3Y24tXFx1MDAzZWRldiwgV0NOMzZYWF9IQUxfQlVGX1NJWkUsIEdGUF9LRVJORUwpO1xcbjE1ODk6XFx0XFx0aWYgKCF3Y24tXFx1MDAzZWhhbF9idWYpIHtcXG4xNTkwOlxcdFxcdFxcdHJldCA9IC1FTk9NRU07XFxuMTU5MTpcXHRcXHRcXHRnb3RvIG91dF93cTtcXG4xNTkyOlxcdFxcdH1cXG4xNTkzOlxcdFxcbjE1OTQ6XFx0XFx0cmV0ID0gZG1hX3NldF9tYXNrX2FuZF9jb2hlcmVudCh3Y24tXFx1MDAzZWRldiwgRE1BX0JJVF9NQVNLKDMyKSk7XFxuMTU5NTpcXHRcXHRpZiAocmV0IFxcdTAwM2MgMCkge1xcbjE1OTY6XFx0XFx0XFx0d2NuMzZ4eF9lcnIoXFxcImZhaWxlZCB0byBzZXQgRE1BIG1hc2s6ICVkXFxcXG5cXFwiLCByZXQpO1xcbjE1OTc6XFx0XFx0XFx0Z290byBvdXRfd3E7XFxuMTU5ODpcXHRcXHR9XFxuMTU5OTpcXHRcXG4xNjAwOlxcdFxcdHdjbi1cXHUwMDNlbnZfZmlsZSA9IFdMQU5fTlZfRklMRTtcXG4xNjAxOlxcdFxcdHJldCA9IG9mX3Byb3BlcnR5X3JlYWRfc3RyaW5nKHdjbi1cXHUwMDNlZGV2LVxcdTAwM2VwYXJlbnQtXFx1MDAzZW9mX25vZGUsIFxcXCJmaXJtd2FyZS1uYW1lXFxcIiwgXFx1MDAyNndjbi1cXHUwMDNlbnZfZmlsZSk7XFxuMTYwMjpcXHRcXHRpZiAocmV0IFxcdTAwM2MgMCBcXHUwMDI2XFx1MDAyNiByZXQgIT0gLUVJTlZBTCkge1xcbjE2MDM6XFx0XFx0XFx0d2NuMzZ4eF9lcnIoXFxcImZhaWxlZCB0byByZWFkIFxcXFxcXFwiZmlybXdhcmUtbmFtZVxcXFxcXFwiIHByb3BlcnR5OiAlZFxcXFxuXFxcIiwgcmV0KTtcXG4xNjA0OlxcdFxcdFxcdGdvdG8gb3V0X3dxO1xcbjE2MDU6XFx0XFx0fVxcbjE2MDY6XFx0XFxuMTYwNzpcXHRcXHR3Y24tXFx1MDAzZXNtZF9jaGFubmVsID0gcWNvbV93Y25zc19vcGVuX2NoYW5uZWwod2Nuc3MsIFxcXCJXTEFOX0NUUkxcXFwiLCB3Y24zNnh4X3NtZF9yc3BfcHJvY2VzcywgaHcpO1xcbjE2MDg6XFx0XFx0aWYgKElTX0VSUih3Y24tXFx1MDAzZXNtZF9jaGFubmVsKSkge1xcbjE2MDk6XFx0XFx0XFx0d2NuMzZ4eF9lcnIoXFxcImZhaWxlZCB0byBvcGVuIFdMQU5fQ1RSTCBjaGFubmVsXFxcXG5cXFwiKTtcXG4xNjEwOlxcdFxcdFxcdHJldCA9IFBUUl9FUlIod2NuLVxcdTAwM2VzbWRfY2hhbm5lbCk7XFxuMTYxMTpcXHRcXHRcXHRnb3RvIG91dF93cTtcXG4xNjEyOlxcdFxcdH1cXG4xNjEzOlxcdFxcbjE2MTQ6XFx0XFx0YWRkciA9IG9mX2dldF9wcm9wZXJ0eShwZGV2LVxcdTAwM2VkZXYub2Zfbm9kZSwgXFxcImxvY2FsLW1hYy1hZGRyZXNzXFxcIiwgXFx1MDAyNnJldCk7XFxuMTYxNTpcXHRcXHRpZiAoYWRkciBcXHUwMDI2XFx1MDAyNiByZXQgIT0gRVRIX0FMRU4pIHtcXG4xNjE2OlxcdFxcdFxcdHdjbjM2eHhfZXJyKFxcXCJpbnZhbGlkIGxvY2FsLW1hYy1hZGRyZXNzXFxcXG5cXFwiKTtcXG4xNjE3OlxcdFxcdFxcdHJldCA9IC1FSU5WQUw7XFxuMTYxODpcXHRcXHRcXHRnb3RvIG91dF9kZXN0cm95X2VwdDtcXG4xNjE5OlxcdFxcdH0gZWxzZSBpZiAoYWRkcikge1xcbjE2MjA6XFx0XFx0XFx0d2NuMzZ4eF9pbmZvKFxcXCJtYWMgYWRkcmVzczogJXBNXFxcXG5cXFwiLCBhZGRyKTtcXG4xNjIxOlxcdFxcdFxcdFNFVF9JRUVFODAyMTFfUEVSTV9BRERSKHdjbi1cXHUwMDNlaHcsIGFkZHIpO1xcbjE2MjI6XFx0XFx0fVxcbjE2MjM6XFx0XFxuMTYyNDpcXHRcXHRyZXQgPSB3Y24zNnh4X3BsYXRmb3JtX2dldF9yZXNvdXJjZXMod2NuLCBwZGV2KTtcXG4xNjI1OlxcdFxcdGlmIChyZXQpXFxuMTYyNjpcXHRcXHRcXHRnb3RvIG91dF9kZXN0cm95X2VwdDtcXG4xNjI3OlxcdFxcbjE2Mjg6XFx0XFx0d2NuMzZ4eF9pbml0X2llZWU4MDIxMSh3Y24pO1xcbjE2Mjk6XFx0XFx0cmV0ID0gaWVlZTgwMjExX3JlZ2lzdGVyX2h3KHdjbi1cXHUwMDNlaHcpO1xcbjE2MzA6XFx0XFx0aWYgKHJldClcXG4xNjMxOlxcdFxcdFxcdGdvdG8gb3V0X3VubWFwO1xcbjE2MzI6XFx0XFxuMTYzMzpcXHRcXHRyZXR1cm4gMDtcXG4xNjM0OlxcdFxcbjE2MzU6XFx0b3V0X3VubWFwOlxcbjE2MzY6XFx0XFx0aW91bm1hcCh3Y24tXFx1MDAzZWNjdV9iYXNlKTtcXG4xNjM3OlxcdFxcdGlvdW5tYXAod2NuLVxcdTAwM2VkeGVfYmFzZSk7XFxuMTYzODpcXHRvdXRfZGVzdHJveV9lcHQ6XFxuMTYzOTpcXHRcXHRycG1zZ19kZXN0cm95X2VwdCh3Y24tXFx1MDAzZXNtZF9jaGFubmVsKTtcXG4xNjQwOlxcdG91dF93cTpcXG4xNjQxOlxcdFxcdGllZWU4MDIxMV9mcmVlX2h3KGh3KTtcXG4xNjQyOlxcdG91dF9lcnI6XFxuMTY0MzpcXHRcXHRyZXR1cm4gcmV0O1xcbjE2NDQ6XFx0fVxcbjE2NDU6XFx0XFxuMTY0NjpcXHRzdGF0aWMgdm9pZCB3Y24zNnh4X3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbjE2NDc6XFx0e1xcbjE2NDg6XFx0XFx0c3RydWN0IGllZWU4MDIxMV9odyAqaHcgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTtcXG4xNjQ5OlxcdFxcdHN0cnVjdCB3Y24zNnh4ICp3Y24gPSBody1cXHUwMDNlcHJpdjtcXG4xNjUwOlxcdFxcdHdjbjM2eHhfZGJnKFdDTjM2WFhfREJHX01BQywgXFxcInBsYXRmb3JtIHJlbW92ZVxcXFxuXFxcIik7XFxuMTY1MTpcXHRcXG4xNjUyOlxcdFxcdHJlbGVhc2VfZmlybXdhcmUod2NuLVxcdTAwM2Vudik7XFxuMTY1MzpcXHRcXG4xNjU0OlxcdFxcdGllZWU4MDIxMV91bnJlZ2lzdGVyX2h3KGh3KTtcXG4xNjU1OlxcdFxcbjE2NTY6XFx0XFx0cWNvbV9zbWVtX3N0YXRlX3B1dCh3Y24tXFx1MDAzZXR4X2VuYWJsZV9zdGF0ZSk7XFxuMTY1NzpcXHRcXHRxY29tX3NtZW1fc3RhdGVfcHV0KHdjbi1cXHUwMDNldHhfcmluZ3NfZW1wdHlfc3RhdGUpO1xcbjE2NTg6XFx0XFxuMTY1OTpcXHRcXHRycG1zZ19kZXN0cm95X2VwdCh3Y24tXFx1MDAzZXNtZF9jaGFubmVsKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMDI6NDE6NTQuMzgyODkzNjE4WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI4MzkwMDE3MzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBDYWxsIFNpdGVzIG9mIGB3Y24zNnh4X2R4ZV9kZWluaXRgKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGZ1bGwgbGlmZWN5Y2xlIG9mIHRoaXMgYHdjbjM2eHhfZHhlX2RlaW5pdGAgZnVuY3Rpb24uIFRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gaW4gbXkgbWluZCBpczogd2hlcmUgZG9lcyBpdCBnZXQgY2FsbGVkPyBJIHdhbnQgYSBjb21wbGV0ZSBtYXAgb2YgYWxsIGl0cyBjYWxsIHNpdGVzLiBLbm93aW5nIHRoaXMgd2lsbCBnaXZlIG1lIGNyaXRpY2FsIGluc2lnaHRzIGludG8gaG93IHRoZSBkcml2ZXIgaXMgYmVpbmcgc2h1dCBkb3duLCB3aGF0IGRlcGVuZGVuY2llcyBpdCBoYXMgb24gb3RoZXIgY29tcG9uZW50cywgYW5kIHVsdGltYXRlbHksIHdoZXJlIHBvdGVudGlhbCBpc3N1ZXMgb3IgcmFjZSBjb25kaXRpb25zIG1pZ2h0IGJlIGx1cmtpbmcuIFRpbWUgdG8gc3RhcnQgdHJhY2luZyB0aGUgZXhlY3V0aW9uIGZsb3cgYW5kIG1hcCBpdCBhbGwgb3V0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjAwNiwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMDI6NDE6NTcuMjIxODk4MTUyWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MTc3MzI2OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ3Y24zNnh4X2R4ZV9kZWluaXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM9MTY4PXN0YXRpYyBpbnQgd2NuMzZ4eF9keGVfaW5pdF9kZXNjcyhzdHJ1Y3Qgd2NuMzZ4eCAqd2NuLCBzdHJ1Y3Qgd2NuMzZ4eF9keGVfY2ggKndjbl9jaClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTIyNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzoyMjg6c3RhdGljIHZvaWQgd2NuMzZ4eF9keGVfZGVpbml0X2Rlc2NzKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IHdjbjM2eHhfZHhlX2NoICp3Y25fY2gpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtMjI5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jPTkwMD1pbnQgd2NuMzZ4eF9keGVfaW5pdChzdHJ1Y3Qgd2NuMzZ4eCAqd2NuKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtMTAzNC1vdXRfZXJyX2lycTpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzoxMDM1OlxcdHdjbjM2eHhfZHhlX2RlaW5pdF9kZXNjcyh3Y24tXFx1MDAzZWRldiwgXFx1MDAyNndjbi1cXHUwMDNlZHhlX3J4X2hfY2gpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTEwMzYtb3V0X2Vycl9yeGhfY2g6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6MTAzNzpcXHR3Y24zNnh4X2R4ZV9kZWluaXRfZGVzY3Mod2NuLVxcdTAwM2VkZXYsIFxcdTAwMjZ3Y24tXFx1MDAzZWR4ZV9yeF9sX2NoKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy0xMDM4LW91dF9lcnJfcnhsX2NoOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjEwMzk6XFx0d2NuMzZ4eF9keGVfZGVpbml0X2Rlc2NzKHdjbi1cXHUwMDNlZGV2LCBcXHUwMDI2d2NuLVxcdTAwM2VkeGVfdHhfaF9jaCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmMtMTA0MC1vdXRfZXJyX3R4aF9jaDpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzoxMDQxOlxcdHdjbjM2eHhfZHhlX2RlaW5pdF9kZXNjcyh3Y24tXFx1MDAzZWRldiwgXFx1MDAyNndjbi1cXHUwMDNlZHhlX3R4X2xfY2gpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTEwNDItXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy0xMDQ1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjEwNDY6dm9pZCB3Y24zNnh4X2R4ZV9kZWluaXQoc3RydWN0IHdjbjM2eHggKndjbilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy0xMDQ3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jLTEwNzEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6MTA3MjpcXHR3Y24zNnh4X2R4ZV9kZWluaXRfZGVzY3Mod2NuLVxcdTAwM2VkZXYsIFxcdTAwMjZ3Y24tXFx1MDAzZWR4ZV90eF9sX2NoKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYzoxMDczOlxcdHdjbjM2eHhfZHhlX2RlaW5pdF9kZXNjcyh3Y24tXFx1MDAzZWRldiwgXFx1MDAyNndjbi1cXHUwMDNlZHhlX3R4X2hfY2gpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5jOjEwNzQ6XFx0d2NuMzZ4eF9keGVfZGVpbml0X2Rlc2NzKHdjbi1cXHUwMDNlZGV2LCBcXHUwMDI2d2NuLVxcdTAwM2VkeGVfcnhfbF9jaCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmM6MTA3NTpcXHR3Y24zNnh4X2R4ZV9kZWluaXRfZGVzY3Mod2NuLVxcdTAwM2VkZXYsIFxcdTAwMjZ3Y24tXFx1MDAzZWR4ZV9yeF9oX2NoKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuYy0xMDc2LX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L2R4ZS5oPTQ2MT1pbnQgd2NuMzZ4eF9keGVfaW5pdChzdHJ1Y3Qgd2NuMzZ4eCAqd2NuKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9keGUuaDo0NjI6dm9pZCB3Y24zNnh4X2R4ZV9kZWluaXQoc3RydWN0IHdjbjM2eHggKndjbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmgtNDYzLWludCB3Y24zNnh4X2R4ZV9pbml0X2NoYW5uZWxzKHN0cnVjdCB3Y24zNnh4ICp3Y24pO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jPTI4MT1zdGF0aWMgdm9pZCB3Y24zNnh4X3N0b3Aoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIGJvb2wgc3VzcGVuZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0yOTktXFx0d2NuMzZ4eF9zbWRfc3RvcCh3Y24pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzozMDA6XFx0d2NuMzZ4eF9keGVfZGVpbml0KHdjbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTMwMS1cXHR3Y24zNnh4X3NtZF9jbG9zZSh3Y24pO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQwMjo0MTo1Ny4yNzM2NzU0NTFaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NjUxNTU0NTEyNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBXQ04zNnh4IERyaXZlcioqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIGB3Y24zNnh4YC4uLiByaWdodCwgdGhhdCdzIHRoZSBkcml2ZXIgZm9yIHRoZSBRdWFsY29tbSBBdGhlcm9zIFdDTjM2NjAgb3IgV0NOMzY4MCBtb2JpbGUgd2lyZWxlc3MgaGFyZHdhcmUuIE15IGltbWVkaWF0ZSBxdWVzdGlvbiBpcyBhbHdheXMsIGhvdyBpcyB0aGlzIHRoaW5nIGhvb2tlZCB1cD8gQWgsIGl0J3MgYSBwbGF0Zm9ybSBkcml2ZXIgdGhhdCBsaXZlcyBvbiB0aG9zZSBRdWFsY29tbSBTb0NzLCB1c2luZyBgcWNvbV93Y25zc2AsIHdoaWNoIG1lYW5zIGl0IGRlcGVuZHMgb24gUXVhbGNvbW0ncyBTTUQvUlBNU0cgc3R1ZmYgYW5kIHRoZSBTb0MgaGFyZHdhcmUgaXRzZWxmIOKAkyB0aGUgc3R1ZmYgYmFrZWQgaW50byB0aG9zZSBNU00vU25hcGRyYWdvbiBwbGF0Zm9ybXMgbGlrZSB0aGUgTVNNODk2MCBvciBNU004OTc0LlxuXG5Ob3csIGEgY3JpdGljYWwgcXVlc3Rpb24gZm9yIG1lLCBjYW4gSSBldmVuICp0ZXN0KiB0aGlzIHRoaW5nPyBDYW4gaXQgYmUgcHJvYmVkIG9yIGVtdWxhdGVkIGluIGEgc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBHb29nbGUgQ29tcHV0ZSBFbmdpbmUgb3IgUUVNVT8gSSBuZWVkIHRvIHRoaW5rIHRoaXMgdGhyb3VnaC4gTGV0IG1lIHF1aWNrbHkgcmVmZXJlbmNlIHNlY3Rpb24gMiBvZiBteSB0cmlhZ2UgcGhpbG9zb3BoeS4gKlN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZS4uLiogYW5kICpVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHMuLi4qIEkgbmVlZCB0byBzZWUgaWYgaXQgbWVldHMgdGhvc2UgY3JpdGVyaWEuXG5cbk9rYXksIG15IHRhcmdldCBhcmNoaXRlY3R1cmUgaXMgYW1kNjQuIEJ1dCBpc24ndCB0aGlzIFF1YWxjb21tIFdDTjM2eHggYW4gQVJNLWJhc2VkIFNvQyBwbGF0Zm9ybSBkZXZpY2U/IFRoZSBRdWFsY29tbSBTbmFwZHJhZ29uIGlzIGFuIEFSTSBwZXJpcGhlcmFsLiBIbW0uLi4gc28sIGlzIGl0IGFuIEFSTSBkZXZpY2UgZXhjbHVzaXZlbHksIG9yIGNhbiBpdCBwb3NzaWJseSBleGlzdCBvbiBhbWQ2ND8gSSBuZWVkIHRvIGNvbmZpcm0gdGhpcy4gSSB3aWxsIGNoZWNrIHRoZSBgb2ZfbWF0Y2hfdGFibGVgIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmNgIHRvIGNsYXJpZnkgdGhhdCBoYXJkd2FyZSBjb25maWd1cmF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzU1NCwiT3V0cHV0VG9rZW5zIjo0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM0MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQwMjo0MjowMy43ODkyMzA0NjdaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA1NTE5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNjYwLFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxNjYwOlxcdFxcbjE2NjE6XFx0XFx0aW91bm1hcCh3Y24tXFx1MDAzZWR4ZV9iYXNlKTtcXG4xNjYyOlxcdFxcdGlvdW5tYXAod2NuLVxcdTAwM2VjY3VfYmFzZSk7XFxuMTY2MzpcXHRcXG4xNjY0OlxcdFxcdF9fc2tiX3F1ZXVlX3B1cmdlKFxcdTAwMjZ3Y24tXFx1MDAzZWFtc2R1KTtcXG4xNjY1OlxcdFxcbjE2NjY6XFx0XFx0bXV0ZXhfZGVzdHJveShcXHUwMDI2d2NuLVxcdTAwM2VoYWxfbXV0ZXgpO1xcbjE2Njc6XFx0XFx0aWVlZTgwMjExX2ZyZWVfaHcoaHcpO1xcbjE2Njg6XFx0fVxcbjE2Njk6XFx0XFxuMTY3MDpcXHRzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCB3Y24zNnh4X29mX21hdGNoW10gPSB7XFxuMTY3MTpcXHRcXHR7IC5jb21wYXRpYmxlID0gXFxcInFjb20sd2Nuc3Mtd2xhblxcXCIgfSxcXG4xNjcyOlxcdFxcdHt9XFxuMTY3MzpcXHR9O1xcbjE2NzQ6XFx0TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgd2NuMzZ4eF9vZl9tYXRjaCk7XFxuMTY3NTpcXHRcXG4xNjc2OlxcdHN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIHdjbjM2eHhfZHJpdmVyID0ge1xcbjE2Nzc6XFx0XFx0LnByb2JlID0gd2NuMzZ4eF9wcm9iZSxcXG4xNjc4OlxcdFxcdC5yZW1vdmUgPSB3Y24zNnh4X3JlbW92ZSxcXG4xNjc5OlxcdFxcdC5kcml2ZXIgPSB7XFxuMTY4MDpcXHRcXHRcXHQubmFtZSA9IFxcXCJ3Y24zNnh4XFxcIixcXG4xNjgxOlxcdFxcdFxcdC5vZl9tYXRjaF90YWJsZSA9IHdjbjM2eHhfb2ZfbWF0Y2gsXFxuMTY4MjpcXHRcXHR9LFxcbjE2ODM6XFx0fTtcXG4xNjg0OlxcdFxcbjE2ODU6XFx0bW9kdWxlX3BsYXRmb3JtX2RyaXZlcih3Y24zNnh4X2RyaXZlcik7XFxuMTY4NjpcXHRcXG4xNjg3OlxcdE1PRFVMRV9ERVNDUklQVElPTihcXFwiUXVhbGNvbW0gQXRoZXJvcyBXQ04zNjYwLzM2ODAgd2lyZWxlc3MgZHJpdmVyXFxcIik7XFxuMTY4ODpcXHRNT0RVTEVfTElDRU5TRShcXFwiRHVhbCBCU0QvR1BMXFxcIik7XFxuMTY4OTpcXHRNT0RVTEVfQVVUSE9SKFxcXCJFdWdlbmUgS3Jhc25pa292IGsuZXVnZW5lLmVAZ21haWwuY29tXFxcIik7XFxuMTY5MDpcXHRNT0RVTEVfRklSTVdBUkUoV0xBTl9OVl9GSUxFKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMDI6NDI6MDMuNzg5MzM3NDY2WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjY0MzI3NzQ2ODQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgRnV6emluZyBXb3J0aGluZXNzIG9mIGB3Y24zNnh4YCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgYW5hbHlzaXMgb2YgYHdjbjM2eHhfb2ZfbWF0Y2hgIGNsZWFybHkgc2hvd3MgdGhpcyBpcyBhIHBsYXRmb3JtIGRyaXZlciwgc3BlY2lmaWNhbGx5IGRlc2lnbmVkIGZvciBRdWFsY29tbSdzIFdDTlNTIHN1YnN5c3RlbSB2aWEgT3BlbiBGaXJtd2FyZSAoRGV2aWNlIFRyZWUpIG9uIFF1YWxjb21tIEFSTSBTb0NzLiBUaGUga2V5IGdpdmVhd2F5IGlzIHRoZSBgY29tcGF0aWJsZSA9IFwicWNvbSx3Y25zcy13bGFuXCJgIG1hdGNoLiBUaGlzIGlzIGEgdGVsbHRhbGUgc2lnbiBvZiBhIHZlcnkgc3BlY2lmaWMgaGFyZHdhcmUgZGVwZW5kZW5jeS4gVGhlcmUncyBubyBQQ0kgSUQsIFVTQiBJRCwgb3IgQUNQSSBtYXRjaCwgc28gaXQncyBhbGwgYWJvdXQgdGhhdCBEZXZpY2UgVHJlZS5cblxuVGhlIGNydWNpYWwgcG9pbnQgaXMgdGhhdCBpbiBzdGFuZGFyZCBhbWQ2NCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSwgd2hpY2ggSSdtIGFzc3VtaW5nIGFyZSBvdXIgcHJpbWFyeSB0ZXN0aW5nIGdyb3VuZHMsIHRoZXJlIGlzICpubyogRGV2aWNlIFRyZWUgd2l0aCBhIGBxY29tLHdjbnNzLXdsYW5gIGRldmljZS4gVGhlcmUncyBubyBRdWFsY29tbSBXQ05TUyBSUE1TRyBoYXJkd2FyZSBwcmVzZW50LiBUaGVyZWZvcmUsIHRoaXMgZHJpdmVyLCBieSBpdHMgdmVyeSBuYXR1cmUsICpjYW5ub3QqIHByb2JlIG9yIGluaXRpYWxpemUgaW4gdGhvc2UgZW52aXJvbm1lbnRzLiBUaGlzIGlzIGZ1cnRoZXIgY29uZmlybWVkIGJlY2F1c2UgdGhlIG1vZGlmaWVkIGZ1bmN0aW9uIGB3Y24zNnh4X2R4ZV9kZWluaXRgIGlzIGxvY2F0ZWQgaW4gYGR4ZS5jYCBhbmQgaXMgb25seSBldmVyIHJlYWNoZWQgdmlhIGB3Y24zNnh4X3N0b3BgLCB3aGljaCBpdHNlbGYgcmVxdWlyZXMgdGhlIGRyaXZlciB0byBiZSBzdWNjZXNzZnVsbHkgcHJvYmVkIGFuZCBzdGFydGVkLlxuXG5UbyBiZSBhYnNvbHV0ZWx5IHN1cmUsIGxldCdzIGNvbmZpcm0gdGhlIG5lZ2F0aXZlcy4gRmlyc3QsIHRoZSBoYXJkd2FyZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGU6IGl0J3MgYSBRdWFsY29tbSBXQ04zNjYwLzM2ODAgU29DIHBsYXRmb3JtIGRyaXZlciBkZXBlbmRlbnQgb24gYSBXQ05TUyBzdWJzeXN0ZW0sIHdoaWNoIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIC8gR0NFLiBTZWNvbmQsIHRoZSBhcmNoaXRlY3R1cmUgaXMgd3Jvbmc7IGl0J3MgYSBRdWFsY29tbSBwbGF0Zm9ybSBkZXZpY2UgbWVhbnQgZm9yIEFSTSBTb0NzLCBhbmQgdGhlIHRhcmdldCBpcyBhbWQ2NC4gVGhhdCdzIGEgZG91YmxlIHdoYW1teSBmb3IgcmVhY2hhYmlsaXR5LlxuXG5TbywgaW4gY29uY2x1c2lvbiwgYFdvcnRoRnV6emluZ2AgaXMgdW5lcXVpdm9jYWxseSBgZmFsc2VgIGhlcmUuXG5cblRvIGRvdWJsZS1jaGVjayB0aGUgZGV0YWlscywgSSByZXZpZXdlZCB0aGUgY2hhbmdlLCB3aGljaCBpbnZvbHZlcyB0aGUgcmVwbGFjZW1lbnQgb2YgYHRpbWVyX2RlbGV0ZWAgd2l0aCBgdGltZXJfc2h1dGRvd25fc3luY2Agb24gYHdjbi1cdTAwM2V0eF9hY2tfdGltZXJgIGluIGB3Y24zNnh4X2R4ZV9kZWluaXQoKWAuIFRoZSBsb2NhdGlvbiBpcyBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvZHhlLmNgLiBJdCdzIGEgUXVhbGNvbW0gQXRoZXJvcyBXQ04zNjYwLzM2ODAgd2lyZWxlc3MgZHJpdmVyLCBhbmQgaXQgaXMgYW4gT0YgcGxhdGZvcm0gZHJpdmVyIGZvciBRdWFsY29tbSBXQ05TUy4gQ29uc2lkZXJpbmcgdGhlIGFyY2hpdGVjdHVyZSBhbmQgcmVhY2hhYmlsaXR5LCBpdCBpcyB1bnJlYWNoYWJsZSBpbiBzdGFuZGFyZCB4ODYvYW1kNjQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChRRU1VL0dDRSkgYmVjYXVzZSB0aGUgaGFyZHdhcmUvRGV2aWNlIFRyZWUgcGxhdGZvcm0gZGV2aWNlIGlzIG5vdCBwcmVzZW50LlxuXG5UaGVyZWZvcmUsIHRoZSBmaW5hbCBhbnN3ZXIgaXM6XG5cbi0gICAqKldvcnRoRnV6emluZzogZmFsc2UqKlxuLSAgICoqRm9jdXNTeW1ib2xzOiBcXFsgXSoqXG4tICAgKipFbmFibGVDb25maWdzOiBcXFsgXSoqXG4tICAgKipSZWFzb25pbmc6IHdjbjM2eHggaXMgYSBRdWFsY29tbSBTb0MgcGxhdGZvcm0gZHJpdmVyIChtYXRjaGluZyBPRiBjb21wYXRpYmxlIFwicWNvbSx3Y25zcy13bGFuXCIpIHJlcXVpcmluZyBRdWFsY29tbSBXQ05TUyBoYXJkd2FyZSwgd2hpY2ggaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIHg4Ni9hbWQ2NCB0ZXN0IGVudmlyb25tZW50cy4qKlxuXG5UaW1lIHRvIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI0NzY4LCJPdXRwdXRUb2tlbnMiOjExNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY1NywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDAyOjQyOjEwLjIyMjExNDM1MVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMzNzQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIG1vZGlmaWVkIGNvZGUgaXMgaW4gdGhlIFF1YWxjb21tIEF0aGVyb3MgV0NOMzY2MC8zNjgwIHdpcmVsZXNzIGRyaXZlciAod2NuMzZ4eCksIHdoaWNoIGlzIGFuIE9GIHBsYXRmb3JtIGRyaXZlciBmb3IgUXVhbGNvbW0gU29DcyByZXF1aXJpbmcgUXVhbGNvbW0gV0NOU1MvUlBNU0cgaGFyZHdhcmUuIEl0IGNhbm5vdCBiZSBwcm9iZWQgb3IgZXhlY3V0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChzdWNoIGFzIFFFTVUgb3IgR0NFIG9uIGFtZDY0KSwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIG1vZGlmaWVkIGNvZGUgaXMgaW4gdGhlIFF1YWxjb21tIEF0aGVyb3MgV0NOMzY2MC8zNjgwIHdpcmVsZXNzIGRyaXZlciAod2NuMzZ4eCksIHdoaWNoIGlzIGFuIE9GIHBsYXRmb3JtIGRyaXZlciBmb3IgUXVhbGNvbW0gU29DcyByZXF1aXJpbmcgUXVhbGNvbW0gV0NOU1MvUlBNU0cgaGFyZHdhcmUuIEl0IGNhbm5vdCBiZSBwcm9iZWQgb3IgZXhlY3V0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChzdWNoIGFzIFFFTVUgb3IgR0NFIG9uIGFtZDY0KSwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDAyOjQyOjEwLjIyMjE1MTc0MVoiLCJTZXEiOjE3LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDE4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowd8w2d[1] Phase: Running StartedAt: 2026-09-10 02:42:21 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd8w2d[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-10 02:42:21 +0000 UTC FinishedAt: 2026-09-10 02:42:26 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:code,Default:nil,Value:*1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*1,}