Name: series-workflow2g9wz Phase: Failed StartedAt: 2026-09-13 04:28:29 +0000 UTC FinishedAt: 2026-09-13 05:17:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2g9wz[0] Phase: Succeeded StartedAt: 2026-09-13 04:28:29 +0000 UTC FinishedAt: 2026-09-13 05:17:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2g9wz[0].run-triage Phase: Succeeded StartedAt: 2026-09-13 04:28:29 +0000 UTC FinishedAt: 2026-09-13 05:17:47 +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+CgkJCTx0ZD4yMDI2LzA5LzEzIDA1OjE2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgZXJyb3IgaGFuZGxpbmcgaW4gdHJmNzk3MGFfc3RhcnR1cCgpIHdpdGhpbiBkcml2ZXJzL25mYy90cmY3OTcwYS5jLiBUaGUgdHJmNzk3MGEgZHJpdmVyIGlzIGEgZGVkaWNhdGVkIFNQSSBkcml2ZXIgZm9yIFRleGFzIEluc3RydW1lbnRzIFRSRjc5NzBBIE5GQyB0cmFuc2NlaXZlciBjaGlwcywgcmVseWluZyBzdHJpY3RseSBvbiBEZXZpY2UgVHJlZSBiaW5kaW5ncyAoZmFpbGluZyBwcm9iZSBpZiBzcGktXHUwMDNlZGV2Lm9mX25vZGUgaXMgYWJzZW50KSBhbG9uZyB3aXRoIGRlZGljYXRlZCBHUElPcyBhbmQgcmVndWxhdG9ycy4gVGhpcyBwaHlzaWNhbCBBU0lDIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL0dDRSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgb24gYW1kNjQsIHJlbmRlcmluZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIHN5emthbGxlciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMyAwNToxNjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGFhYTRkNWFhZmNmN2YzYTAxNjkzN2QyODY4NjhmNzlkNjhiYmUzMjRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIFNlcCAxMyAwNToxNjo1MiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25mYy90cmY3OTcwYS5jIGIvZHJpdmVycy9uZmMvdHJmNzk3MGEuY1xuaW5kZXggNjA4ODMwMDFmYTVkOS4uZGRmYzU4YzI5OTY0OSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmZjL3RyZjc5NzBhLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmZjL3RyZjc5NzBhLmNcbkBAIC0xOTk3LDggJiM0MzsxOTk3LDEwIEBAIHN0YXRpYyBpbnQgdHJmNzk3MGFfc3RhcnR1cChzdHJ1Y3QgdHJmNzk3MGEgKnRyZilcbiBcdFx0cmV0dXJuIHJldDtcbiBcbiBcdHJldCA9IHRyZjc5NzBhX3VwZGF0ZV9yeF9nYWluX3JlZHVjdGlvbih0cmYpO1xuLVx0aWYgKHJldClcbiYjNDM7XHRpZiAocmV0KSB7XG4mIzQzO1x0XHR0cmY3OTcwYV9wb3dlcl9kb3duKHRyZik7XG4gXHRcdHJldHVybiByZXQ7XG4mIzQzO1x0fVxuIFxuIFx0cG1fcnVudGltZV9zZXRfYWN0aXZlKHRyZi1cdTAwM2VkZXYpO1xuIFx0cG1fcnVudGltZV9lbmFibGUodHJmLVx1MDAzZWRldik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTMgMDU6MTY8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgZXJyb3IgaGFuZGxpbmcgaW4gdHJmNzk3MGFfc3RhcnR1cCgpIHdpdGhpbiBkcml2ZXJzL25mYy90cmY3OTcwYS5jLiBUaGUgdHJmNzk3MGEgZHJpdmVyIGlzIGEgZGVkaWNhdGVkIFNQSSBkcml2ZXIgZm9yIFRleGFzIEluc3RydW1lbnRzIFRSRjc5NzBBIE5GQyB0cmFuc2NlaXZlciBjaGlwcywgcmVseWluZyBzdHJpY3RseSBvbiBEZXZpY2UgVHJlZSBiaW5kaW5ncyAoZmFpbGluZyBwcm9iZSBpZiBzcGktXHUwMDNlZGV2Lm9mX25vZGUgaXMgYWJzZW50KSBhbG9uZyB3aXRoIGRlZGljYXRlZCBHUElPcyBhbmQgcmVndWxhdG9ycy4gVGhpcyBwaHlzaWNhbCBBU0lDIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL0dDRSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgb24gYW1kNjQsIHJlbmRlcmluZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIHN5emthbGxlciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzCnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoxLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsCmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuCgotIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOgogIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQKICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLgogIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCwKICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuCgotIERPIE5PVCBCTElORExZIFRSVVNUICYjMzQ7Tk8gRlVOQ1RJT05BTCBDSEFOR0UmIzM0OyAoTkZDSSkgT1IgJiMzNDtSRUZBQ1RPUklORyYjMzQ7IENMQUlNUzoKICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzICYjMzQ7Y2xlYW51cHMmIzM0OywgJiMzNDtyZWZhY3RvcmluZ3MmIzM0Oywgb3Igc3RhdGUKICAmIzM0O05vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkJiMzNDsuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLgogIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudAogIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLgogIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuCgotIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOgogIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKiwKICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy4KICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyCiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczoKCi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczoKICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy4KICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKQogICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLgogICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHMKICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuCiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuCi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOgogICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6CiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmcKICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLgogICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOgotIENvcmUgU3Vic3lzdGVtczoKICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSwKICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy4KLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6CiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuCi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOgogICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLgotIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6CiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo0LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTikKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6CgotIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzoKICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1cwogIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0CiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuCiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzICYjMzQ7Zm9jdXNlZCYjMzQ7LAogIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy4KCi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOgogIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50cwogIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LgoKLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6CiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFjawogIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLgogIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlcgogIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZToKLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgotIENoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuCi0gU3RyaXAgYW55ICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGFhYTRkNWFhZmNmN2YzYTAxNjkzN2QyODY4NjhmNzlkNjhiYmUzMjQKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU3VuIFNlcCAxMyAwNToxNjo1MiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmZjL3RyZjc5NzBhLmMgYi9kcml2ZXJzL25mYy90cmY3OTcwYS5jCmluZGV4IDYwODgzMDAxZmE1ZDkuLmRkZmM1OGMyOTk2NDkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmZjL3RyZjc5NzBhLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZmMvdHJmNzk3MGEuYwpAQCAtMTk5Nyw4ICYjNDM7MTk5NywxMCBAQCBzdGF0aWMgaW50IHRyZjc5NzBhX3N0YXJ0dXAoc3RydWN0IHRyZjc5NzBhICp0cmYpCiAJCXJldHVybiByZXQ7CiAKIAlyZXQgPSB0cmY3OTcwYV91cGRhdGVfcnhfZ2Fpbl9yZWR1Y3Rpb24odHJmKTsKLQlpZiAocmV0KQomIzQzOwlpZiAocmV0KSB7CiYjNDM7CQl0cmY3OTcwYV9wb3dlcl9kb3duKHRyZik7CiAJCXJldHVybiByZXQ7CiYjNDM7CX0KIAogCXBtX3J1bnRpbWVfc2V0X2FjdGl2ZSh0cmYtJmd0O2Rldik7CiAJcG1fcnVudGltZV9lbmFibGUodHJmLSZndDtkZXYpOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMyAwNToxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTEzCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMzE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFRSRjc5NzBBIERyaXZlciBQYXRjaCoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2guIFRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlIGlzIGFtZDY0LCB3aGljaCBpcyBnb29kIHRvIGtub3csIGJ1dCBkb2VzbiYjMzk7dCByZWFsbHkgYWZmZWN0IHRoZSBjb2RlIGNoYW5nZSBpdHNlbGYuIEl0JiMzOTtzIGEgZGlmZiBvbiBgZHJpdmVycy9uZmMvdHJmNzk3MGEuY2AuIFRoZSBjaGFuZ2UgaXMgc3RyYWlnaHRmb3J3YXJkLCBhbmQgdGhlIGxpbmUgbnVtYmVycyBhcmUgcHJldHR5IGNsb3NlLCBzbyBpdCYjMzk7cyBhIHNtYWxsLCB0YXJnZXRlZCB1cGRhdGUuCgpUaGUgY29yZSBvZiB0aGUgY2hhbmdlIGxvb2tzIGxpa2UgYSBzdWJ0bGUgYnVnIGZpeCBvciBlbmhhbmNlbWVudCB0byBlcnJvciBoYW5kbGluZyB3aXRoaW4gdGhlIGB0cmY3OTcwYV9zdGFydHVwYCBmdW5jdGlvbi4gU3BlY2lmaWNhbGx5LCBpdCBzZWVtcyBsaWtlIHRoZSBgdHJmNzk3MGFfdXBkYXRlX3J4X2dhaW5fcmVkdWN0aW9uYCBmdW5jdGlvbiYjMzk7cyByZXR1cm4gY29kZSB3YXNuJiMzOTt0IGJlaW5nIGZ1bGx5IGhhbmRsZWQuIE5vdywgaWYgYHRyZjc5NzBhX3VwZGF0ZV9yeF9nYWluX3JlZHVjdGlvbmAgcmV0dXJucyBhbiBlcnJvciAoYHJldGAgaXMgbm9uLXplcm8pLCB0aGUgcGF0Y2ggZW5zdXJlcyB0aGF0IHRoZSBgdHJmNzk3MGFfcG93ZXJfZG93bmAgZnVuY3Rpb24gaXMgY2FsbGVkICpiZWZvcmUqIHJldHVybmluZyBmcm9tIHRoZSBgdHJmNzk3MGFfc3RhcnR1cGAgZnVuY3Rpb24uIFRoaXMgaXMgYSBjcnVjaWFsIHNhZmV0eSBtZWFzdXJlOyBpdCYjMzk7cyB0aGUgcmlnaHQgd2F5IHRvIGVuc3VyZSBjbGVhbiBzaHV0ZG93biB3aGVuIGFuIGVycm9yIG9jY3VycywgcHJldmVudGluZyBwb3RlbnRpYWwgaXNzdWVzIHdpdGggdGhlIGhhcmR3YXJlIHN0YXRlIG9yIHJlc291cmNlIGxlYWtzLiBXaXRob3V0IGl0LCB0aGUgZGV2aWNlIG1pZ2h0IHN0YXkgaW4gYW4gdW5kZWZpbmVkIHN0YXRlLCBzbyB0aGlzIGlzIGEgZ3JlYXQgY2F0Y2guCgpOb3csIGJlZm9yZSBJIGdpdmUgdGhpcyBwYXRjaCBhIHRodW1icy11cCwgSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IGNoZWNrIGEgZmV3IHRoaW5ncy4gSSYjMzk7bGwgdXNlIGBncmVwYCAob3IgcG9zc2libHkgbG9vayBhdCB0aGUgZmlsZSYjMzk7cyBzdXJyb3VuZGluZyBjb2RlKSB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0LiBJIHdhbnQgdG8gc2VlIGhvdyBgdHJmNzk3MGEuY2AgaXMgY29uZmlndXJlZCAoS2NvbmZpZyksIGFueSBvdGhlciBmdW5jdGlvbnMgY2FsbGluZyBpdCwgYW5kIGFsc28gdGhlIHVuZGVybHlpbmcgYnVzIHR5cGUgKFNQSSwgSTJDLCBldGMuKSB0aGF0IHRoZSBkcml2ZXIgaW50ZXJhY3RzIHdpdGguIEkgd2FudCB0byBtYWtlIHN1cmUgdGhlIGNoYW5nZSBpcyBjb25zaXN0ZW50IHdpdGggdGhlIG92ZXJhbGwgZHJpdmVyIGJlaGF2aW9yIGFuZCBkb2VzbiYjMzk7dCBpbnRyb2R1Y2UgYW55IHJlZ3Jlc3Npb25zIG9yIHNpZGUgZWZmZWN0cy4gVGhpcyBzdGVwIHdpbGwgbGV0IG1lIHZlcmlmeSB0aGF0IHRoaXMgcG93ZXItZG93biBpcyBhbHNvIGFwcHJvcHJpYXRlIGZvciB0aGUgdW5kZXJseWluZyBidXMuIEdvb2QgaHlnaWVuZSBkZW1hbmRzIHRoaXMgc29ydCBvZiBiYXNpYyBkdWUgZGlsaWdlbmNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEzIDA1OjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3RyZjc5NzBhJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDc4NSBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuZHJpdmVycy9uZmMvS2NvbmZpZz05PWNvbmZpZyBORkNfVFJGNzk3MEFcbi0tXG5kcml2ZXJzL25mYy9LY29uZmlnLTE4LVx0ICBzYXkgTSAgdG8gY29tcGlsZSBpdCBhcyBhIG1vZHVsZS4gVGhlIG1vZHVsZSB3aWxsIGJlIGNhbGxlZFxuZHJpdmVycy9uZmMvS2NvbmZpZzoxOTpcdCAgdHJmNzk3MGEua28uXG5kcml2ZXJzL25mYy9LY29uZmlnLTIwLVxuLS1cbmRyaXZlcnMvbmZjL01ha2VmaWxlPTEzPW9iai0kKENPTkZJR19ORkNfTVJWTClcdFx0JiM0Mzs9IG5mY21ydmwvXG5kcml2ZXJzL25mYy9NYWtlZmlsZToxNDpvYmotJChDT05GSUdfTkZDX1RSRjc5NzBBKVx0JiM0Mzs9IHRyZjc5NzBhLm9cbmRyaXZlcnMvbmZjL01ha2VmaWxlLTE1LW9iai0kKENPTkZJR19ORkNfU1QyMU5GQ0EpICBcdCYjNDM7PSBzdDIxbmZjYS9cbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTI3LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoyODovKiBUaGVyZSBhcmUgMyB3YXlzIHRoZSBob3N0IGNhbiBjb21tdW5pY2F0ZSB3aXRoIHRoZSB0cmY3OTcwYTpcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMjktICogcGFyYWxsZWwgbW9kZSwgU1BJIHdpdGggU2xhdmUgU2VsZWN0IChTUykgbW9kZSwgYW5kIFNQSSB3aXRob3V0XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0zMS0gKlxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzozMjogKiBUaGUgdHJmNzk3MGEgaXMgdmVyeSB0aW1pbmcgc2Vuc2l0aXZlIGFuZCB0aGUgVklOLCBFTjIsIGFuZCBFTlxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0zMy0gKiBwaW5zIG11c3QgYXNzZXJ0ZWQgaW4gdGhhdCBvcmRlciBhbmQgd2l0aCBzcGVjaWZpYyBkZWxheXMgaW4gYmV0d2Vlbi5cbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTM1LSAqIGNvbmZpcm1lZCB0byB3b3JrIHdpdGggdGhpcyBkcml2ZXIuICBUaGVyZSBpcyBhIGJ1ZyB3aXRoIHRoZSBjdXJyZW50XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjM2OiAqIHZlcnNpb24gb2YgdGhlIHRyZjc5NzBhIHRoYXQgcmVxdWlyZXMgdGhhdCBFTjIgcmVtYWluIGxvdyBubyBtYXR0ZXJcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMzctICogd2hhdC4gIElmIGl0IGdvZXMgaGlnaCwgaXQgd2lsbCBnZW5lcmF0ZSBhbiBSRiBmaWVsZCBldmVuIHdoZW4gaW5cbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTM5LSAqIHdoZW4gRU4yIGlzIGxlZnQgbG93LiAgVGhlICYjMzk7ZW4yLXJmLXF1aXJrJiMzOTsgZGV2aWNlIHRyZWUgcHJvcGVydHlcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NDA6ICogaW5kaWNhdGVzIHRoYXQgdHJmNzk3MGEgY3VycmVudGx5IGJlaW5nIHVzZWQgaGFzIHRoZSBlcnJhdHVtIGFuZFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy00MS0gKiB0aGF0IEVOMiBtdXN0IGJlIGtlcHQgbG93LlxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNDQtICogVGltZW91dHMgYXJlIHJlcXVpcmVkIHNvIHRoaW5ncyBkb24mIzM5O3QgaGFuZyB3aGVuIHRoZXJlIGlzIG5vIHJlc3BvbnNlXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjQ1OiAqIGZyb20gdGhlIHRyZjc5NzBhIChvciB0YWcpLiAgVXNpbmcgdGhpcyBtZWNoYW5pc20gY3JlYXRlcyBhIHJhY2Ugd2l0aFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy00Ni0gKiBpbnRlcnJ1cHRzLCBob3dldmVyLiAgVGhhdCBpcywgYW4gaW50ZXJydXB0IGFuZCBhIHRpbWVvdXQgY291bGQgb2NjdXJcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTYwLSAqIHRoZSBlbnRpcmUgYW50aWNvbGxpc2lvbiBwcm9jZWR1cmUgYWdhaW4gYnV0IHRoZSBkaWdpdGFsIGxheWVyIGRvZXNuJiMzOTt0XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjYxOiAqIHN1cHBvcnQgdGhhdC4gIFNvLCBpZiBhbiBhYm9ydCBpcyByZWNlaXZlZCBiZWZvcmUgdHJmNzk3MGFfc2VuZF9jbWQoKVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02Mi0gKiBoYXMgc2VudCB0aGUgY29tbWFuZCB0byB0aGUgdGFnLCBpdCBzaW1wbHkgcmV0dXJucyAtRUNBTkNFTEVELiAgSWYgdGhlXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05Ni0gKiB3aGVuIHRoZSBmcmFtaW5nIGlzICYjMzk7TkZDX0RJR0lUQUxfRlJBTUlOR19ORkNBX1QyVCYjMzk7LiAgVGhpcyBpcyBkb25lIGJ5XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjk3OiAqIHRoZSB0cmY3OTcwYV9wZXJfY21kX2NvbmZpZygpIHJvdXRpbmUuXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTk4LSAqXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNDQtLyogUXVpcmtzICovXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE0NTovKiBFcnJhdHVtOiBXaGVuIHJlYWRpbmcgSVJRIFN0YXR1cyByZWdpc3RlciBvbiB0cmY3OTcwYSwgd2UgbXVzdCBpc3N1ZSBhXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE0Ni0gKiByZWFkIGNvbnRpbnVvdXMgY29tbWFuZCBmb3IgSVJRIFN0YXR1cyBhbmQgQ29sbGlzaW9uIFBvc2l0aW9uIHJlZ2lzdGVycy5cbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTQxNS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NDE2OmVudW0gdHJmNzk3MGFfc3RhdGUge1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy00MTctXHRUUkY3OTcwQV9TVF9QV1JfT0ZGLFxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNDI5LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo0MzA6c3RydWN0IHRyZjc5NzBhIHtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NDMxOlx0ZW51bSB0cmY3OTcwYV9zdGF0ZVx0XHRzdGF0ZTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNDMyLVx0c3RydWN0IGRldmljZVx0XHRcdCpkZXY7XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy00NjUtXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjQ2NjpzdGF0aWMgaW50IHRyZjc5NzBhX2NtZChzdHJ1Y3QgdHJmNzk3MGEgKnRyZiwgdTggb3Bjb2RlKVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy00Njcte1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNDc5LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo0ODA6c3RhdGljIGludCB0cmY3OTcwYV9yZWFkKHN0cnVjdCB0cmY3OTcwYSAqdHJmLCB1OCByZWcsIHU4ICp2YWwpXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTQ4MS17XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy00OTQtXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjQ5NTpzdGF0aWMgaW50IHRyZjc5NzBhX3JlYWRfY29udChzdHJ1Y3QgdHJmNzk3MGEgKnRyZiwgdTggcmVnLCB1OCAqYnVmLFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy00OTYtXHRcdFx0ICAgICAgc2l6ZV90IGxlbilcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTUyMy1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NTI0OnN0YXRpYyBpbnQgdHJmNzk3MGFfd3JpdGUoc3RydWN0IHRyZjc5NzBhICp0cmYsIHU4IHJlZywgdTggdmFsKVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy01MjUte1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNTM4LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo1Mzk6c3RhdGljIGludCB0cmY3OTcwYV9yZWFkX2lycXN0YXR1cyhzdHJ1Y3QgdHJmNzk3MGEgKnRyZiwgdTggKnN0YXR1cylcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNTQwLXtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTU2Mi1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NTYzOnN0YXRpYyBpbnQgdHJmNzk3MGFfdXBkYXRlX3J4X2dhaW5fcmVkdWN0aW9uKHN0cnVjdCB0cmY3OTcwYSAqdHJmKVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy01NjQte1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNTcwLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo1NzE6XHRyZXQgPSB0cmY3OTcwYV9yZWFkKHRyZiwgVFJGNzk3MEFfUlhfU1BFQ0lBTF9TRVRUSU5HUywgXHUwMDI2cmVnKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNTcyLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTU3Ni1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NTc3Olx0cmV0ID0gdHJmNzk3MGFfd3JpdGUodHJmLCBUUkY3OTcwQV9SWF9TUEVDSUFMX1NFVFRJTkdTLCByZWcpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy01NzgtXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy01ODEtXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjU4MjpzdGF0aWMgaW50IHRyZjc5NzBhX3VwZGF0ZV9pc29fY3RybF9yZWdpc3RlcihzdHJ1Y3QgdHJmNzk3MGEgKnRyZiwgdTggaXNvX2N0cmwpXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTU4My17XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy01ODUtXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjU4NjpcdHJldCA9IHRyZjc5NzBhX3dyaXRlKHRyZiwgVFJGNzk3MEFfSVNPX0NUUkwsIGlzb19jdHJsKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNTg3LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTU5Mi1cdCAqL1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo1OTM6XHRyZXQgPSB0cmY3OTcwYV91cGRhdGVfcnhfZ2Fpbl9yZWR1Y3Rpb24odHJmKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNTk0LVxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNTk3LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo1OTg6c3RhdGljIGludCB0cmY3OTcwYV9yZWFkX3RhcmdldF9wcm90byhzdHJ1Y3QgdHJmNzk3MGEgKnRyZiwgdTggKnRhcmdldF9wcm90bylcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNTk5LXtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTYxNi1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NjE3OnN0YXRpYyBpbnQgdHJmNzk3MGFfbW9kZV9kZXRlY3Qoc3RydWN0IHRyZjc5NzBhICp0cmYsIHU4ICpyZl90ZWNoKVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02MTgte1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNjIxLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo2MjI6XHRyZXQgPSB0cmY3OTcwYV9yZWFkX3RhcmdldF9wcm90byh0cmYsIFx1MDAyNnRhcmdldF9wcm90byk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTYyMy1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02NDktXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjY1MDpzdGF0aWMgdm9pZCB0cmY3OTcwYV9zZW5kX3Vwc3RyZWFtKHN0cnVjdCB0cmY3OTcwYSAqdHJmKVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02NTEte1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNjU1LVx0aWYgKHRyZi1cdTAwM2VyeF9za2IgXHUwMDI2XHUwMDI2ICFJU19FUlIodHJmLVx1MDAzZXJ4X3NrYikgXHUwMDI2XHUwMDI2ICF0cmYtXHUwMDNlYWJvcnRpbmcpXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjY1NjpcdFx0cHJpbnRfaGV4X2R1bXBfZGVidWcoXCYjMzQ7dHJmNzk3MGEgcnggZGF0YTogXCYjMzQ7LCBEVU1QX1BSRUZJWF9OT05FLFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02NTctXHRcdFx0XHQgICAgIDE2LCAxLCB0cmYtXHUwMDNlcnhfc2tiLVx1MDAzZWRhdGEsIHRyZi1cdTAwM2VyeF9za2ItXHUwMDNlbGVuLFxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNjc3LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo2Nzg6c3RhdGljIHZvaWQgdHJmNzk3MGFfc2VuZF9lcnJfdXBzdHJlYW0oc3RydWN0IHRyZjc5NzBhICp0cmYsIGludCBlcnJubylcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNjc5LXtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTY4Ni1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6Njg3Olx0dHJmNzk3MGFfc2VuZF91cHN0cmVhbSh0cmYpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02ODgtfVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02ODktXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjY5MDpzdGF0aWMgaW50IHRyZjc5NzBhX3RyYW5zbWl0KHN0cnVjdCB0cmY3OTcwYSAqdHJmLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02OTEtXHRcdFx0ICAgICB1bnNpZ25lZCBpbnQgbGVuLCBjb25zdCB1OCAqcHJlZml4LFxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNjk4LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo2OTk6XHRwcmludF9oZXhfZHVtcF9kZWJ1ZyhcJiMzNDt0cmY3OTcwYSB0eCBkYXRhOiBcJiMzNDssIERVTVBfUFJFRklYX05PTkUsXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTcwMC1cdFx0XHQgICAgIDE2LCAxLCBza2ItXHUwMDNlZGF0YSwgbGVuLCBmYWxzZSk7XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy03NDctXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjc0ODpzdGF0aWMgdm9pZCB0cmY3OTcwYV9maWxsX2ZpZm8oc3RydWN0IHRyZjc5NzBhICp0cmYpXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTc0OS17XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy03NTUtXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjc1NjpcdHJldCA9IHRyZjc5NzBhX3JlYWQodHJmLCBUUkY3OTcwQV9GSUZPX1NUQVRVUywgXHUwMDI2Zmlmb19ieXRlcyk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTc1Ny1cdGlmIChyZXQpIHtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NzU4Olx0XHR0cmY3OTcwYV9zZW5kX2Vycl91cHN0cmVhbSh0cmYsIHJldCk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTc1OS1cdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNzc3LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo3Nzg6XHRyZXQgPSB0cmY3OTcwYV90cmFuc21pdCh0cmYsIHNrYiwgbGVuLCBcdTAwMjZwcmVmaXgsIHNpemVvZihwcmVmaXgpKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNzc5LVx0aWYgKHJldClcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NzgwOlx0XHR0cmY3OTcwYV9zZW5kX2Vycl91cHN0cmVhbSh0cmYsIHJldCk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTc4MS19XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTc4Mi1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NzgzOnN0YXRpYyB2b2lkIHRyZjc5NzBhX2RyYWluX2ZpZm8oc3RydWN0IHRyZjc5NzBhICp0cmYsIHU4IHN0YXR1cylcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNzg0LXtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTc4OS1cdGlmIChzdGF0dXMgXHUwMDI2IFRSRjc5NzBBX0lSUV9TVEFUVVNfRVJST1IpIHtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NzkwOlx0XHR0cmY3OTcwYV9zZW5kX2Vycl91cHN0cmVhbSh0cmYsIC1FSU8pO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy03OTEtXHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTc5My1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6Nzk0Olx0cmV0ID0gdHJmNzk3MGFfcmVhZCh0cmYsIFRSRjc5NzBBX0ZJRk9fU1RBVFVTLCBcdTAwMjZmaWZvX2J5dGVzKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNzk1LVx0aWYgKHJldCkge1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo3OTY6XHRcdHRyZjc5NzBhX3NlbmRfZXJyX3Vwc3RyZWFtKHRyZiwgcmV0KTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNzk3LVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy04MTItXHRcdGlmICghc2tiKSB7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjgxMzpcdFx0XHR0cmY3OTcwYV9zZW5kX2Vycl91cHN0cmVhbSh0cmYsIC1FTk9NRU0pO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy04MTQtXHRcdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtODIwLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo4MjE6XHRyZXQgPSB0cmY3OTcwYV9yZWFkX2NvbnQodHJmLCBUUkY3OTcwQV9GSUZPX0lPX1JFR0lTVEVSLFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy04MjItXHRcdFx0XHQgc2tiX3B1dChza2IsIGZpZm9fYnl0ZXMpLCBmaWZvX2J5dGVzKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtODIzLVx0aWYgKHJldCkge1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo4MjQ6XHRcdHRyZjc5NzBhX3NlbmRfZXJyX3Vwc3RyZWFtKHRyZiwgcmV0KTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtODI1LVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy04MzUtXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjgzNjpcdFx0cmV0ID0gdHJmNzk3MGFfcmVhZCh0cmYsIFRSRjc5NzBBX0ZJRk9fU1RBVFVTLCBcdTAwMjZmaWZvX2J5dGVzKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtODM3LVx0XHRpZiAocmV0KSB7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjgzODpcdFx0XHR0cmY3OTcwYV9zZW5kX2Vycl91cHN0cmVhbSh0cmYsIHJldCk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTgzOS1cdFx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy04NDUtXHRcdCAqIHRoZSBpZiBzdG10IGJlbG93IGRvZXNuJiMzOTt0IGZpcmUgYW5kIHRoZSBkcml2ZXIgd2lsbCB3YWl0XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjg0NjpcdFx0ICogZm9yIHRoZSB0cmY3OTcwYSB0byBnZW5lcmF0ZSBhbm90aGVyIFJYIGludGVycnVwdC5cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtODQ3LVx0XHQgKi9cbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTg1My1cdGlmIChzdGF0dXMgPT0gVFJGNzk3MEFfSVJRX1NUQVRVU19TUlgpIHtcdC8qIFJlY2VpdmUgY29tcGxldGUgKi9cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6ODU0Olx0XHR0cmY3OTcwYV9zZW5kX3Vwc3RyZWFtKHRyZik7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTg1NS1cdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtODY0LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo4NjU6c3RhdGljIGlycXJldHVybl90IHRyZjc5NzBhX2lycShpbnQgaXJxLCB2b2lkICpkZXZfaWQpXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTg2Ni17XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjg2NzpcdHN0cnVjdCB0cmY3OTcwYSAqdHJmID0gZGV2X2lkO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy04NjgtXHRpbnQgcmV0O1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtODc3LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo4Nzg6XHRyZXQgPSB0cmY3OTcwYV9yZWFkX2lycXN0YXR1cyh0cmYsIFx1MDAyNnN0YXR1cyk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTg3OS1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTg5Ni1cdFx0ICogdHVybiBvZmYgdGhlIHJlY2VpdmVyIHRvIGF2b2lkIHVubmVjZXNzYXJ5IGludGVycnVwdHMuXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjg5NzpcdFx0ICogSXQgd2lsbCBiZSB0dXJuZWQgYmFjayBvbiBpbiB0cmY3OTcwYV9zZW5kX2NtZCgpIHdoZW5cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtODk4LVx0XHQgKiB0aGUgbmV4dCBjb21tYW5kIGlzIGlzc3VlZC5cbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTkwMC1cdFx0aWYgKHRyZi1cdTAwM2Vpc19pbml0aWF0b3IgXHUwMDI2XHUwMDI2IChzdGF0dXMgXHUwMDI2IFRSRjc5NzBBX0lSUV9TVEFUVVNfRVJST1IpKSB7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjkwMTpcdFx0XHR0cmY3OTcwYV9jbWQodHJmLCBUUkY3OTcwQV9DTURfQkxPQ0tfUlgpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05MDItXHRcdFx0dHJmLVx1MDAzZXN0YXRlID0gVFJGNzk3MEFfU1RfSURMRV9SWF9CTE9DS0VEO1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTA0LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo5MDU6XHRcdHRyZjc5NzBhX2NtZCh0cmYsIFRSRjc5NzBBX0NNRF9GSUZPX1JFU0VUKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTA2LVx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTkxMC1cdFx0XHQgICAgIWNhbmNlbF9kZWxheWVkX3dvcmsoXHUwMDI2dHJmLVx1MDAzZXRpbWVvdXRfd29yayk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjkxMTpcdFx0XHR0cmY3OTcwYV9maWxsX2ZpZm8odHJmKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTEyLVx0XHR9IGVsc2Uge1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo5MTM6XHRcdFx0dHJmNzk3MGFfc2VuZF9lcnJfdXBzdHJlYW0odHJmLCAtRUlPKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTE0LVx0XHR9XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05MjAtXHRcdFx0ICAgICFjYW5jZWxfZGVsYXllZF93b3JrKFx1MDAyNnRyZi1cdTAwM2V0aW1lb3V0X3dvcmspO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo5MjE6XHRcdFx0dHJmNzk3MGFfZHJhaW5fZmlmbyh0cmYsIHN0YXR1cyk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTkyMi1cdFx0fSBlbHNlIGlmIChzdGF0dXMgXHUwMDI2IFRSRjc5NzBBX0lSUV9TVEFUVVNfRklGTykge1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo5MjM6XHRcdFx0cmV0ID0gdHJmNzk3MGFfcmVhZCh0cmYsIFRSRjc5NzBBX0ZJRk9fU1RBVFVTLFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05MjQtXHRcdFx0XHRcdCAgICBcdTAwMjZmaWZvX2J5dGVzKTtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTkyOC1cdFx0XHRpZiAocmV0KVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo5Mjk6XHRcdFx0XHR0cmY3OTcwYV9zZW5kX2Vycl91cHN0cmVhbSh0cmYsIHJldCk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTkzMC1cdFx0XHRlbHNlIGlmICghZmlmb19ieXRlcylcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6OTMxOlx0XHRcdFx0dHJmNzk3MGFfY21kKHRyZiwgVFJGNzk3MEFfQ01EX0ZJRk9fUkVTRVQpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05MzItXHRcdH0gZWxzZSBpZiAoKHN0YXR1cyA9PSBUUkY3OTcwQV9JUlFfU1RBVFVTX1RYKSB8fFxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTM1LVx0XHRcdFx0XHRUUkY3OTcwQV9JUlFfU1RBVFVTX05GQ19SRikpKSkge1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo5MzY6XHRcdFx0dHJmNzk3MGFfY21kKHRyZiwgVFJGNzk3MEFfQ01EX0ZJRk9fUkVTRVQpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05MzctXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05NDEtXHRcdFx0XHR0cmYtXHUwMDNlcnhfc2tiID0gTlVMTDtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6OTQyOlx0XHRcdFx0dHJmNzk3MGFfc2VuZF91cHN0cmVhbSh0cmYpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05NDMtXHRcdFx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTk2Mi1cdFx0XHRjYXNlIE5GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDQV9BTlRJQ09MX0NPTVBMRVRFOlxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo5NjM6XHRcdFx0XHRyZXQgPSB0cmY3OTcwYV93cml0ZSh0cmYsXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTk2NC1cdFx0XHRcdFx0IFRSRjc5NzBBX1NQRUNJQUxfRkNOX1JFRzEsXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05NzYtXHRcdFx0aWYgKGlzb19jdHJsICE9IHRyZi1cdTAwM2Vpc29fY3RybCkge1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo5Nzc6XHRcdFx0XHRyZXQgPSB0cmY3OTcwYV91cGRhdGVfaXNvX2N0cmxfcmVnaXN0ZXIodHJmLCBpc29fY3RybCk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTk3OC1cdFx0XHRcdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05ODMtXHRcdH0gZWxzZSB7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjk4NDpcdFx0XHR0cmY3OTcwYV9zZW5kX2Vycl91cHN0cmVhbSh0cmYsIC1FSU8pO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05ODUtXHRcdH1cbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTk4OC1cdFx0aWYgKHN0YXR1cyAhPSBUUkY3OTcwQV9JUlFfU1RBVFVTX1RYKVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo5ODk6XHRcdFx0dHJmNzk3MGFfc2VuZF9lcnJfdXBzdHJlYW0odHJmLCAtRUlPKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTkwLVx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTk5NC1cdFx0XHQgICAgIWNhbmNlbF9kZWxheWVkX3dvcmsoXHUwMDI2dHJmLVx1MDAzZXRpbWVvdXRfd29yayk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjk5NTpcdFx0XHR0cmY3OTcwYV9kcmFpbl9maWZvKHRyZiwgc3RhdHVzKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTk2LVx0XHR9IGVsc2UgaWYgKCEoc3RhdHVzIFx1MDAyNiBUUkY3OTcwQV9JUlFfU1RBVFVTX05GQ19SRikpIHtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6OTk3Olx0XHRcdHRyZjc5NzBhX3NlbmRfZXJyX3Vwc3RyZWFtKHRyZiwgLUVJTyk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTk5OC1cdFx0fVxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTAwNC1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTAwNTpcdFx0XHRyZXQgPSB0cmY3OTcwYV9tb2RlX2RldGVjdCh0cmYsIFx1MDAyNnRyZi1cdTAwM2VtZF9yZl90ZWNoKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTAwNi1cdFx0XHRpZiAocmV0KSB7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEwMDc6XHRcdFx0XHR0cmY3OTcwYV9zZW5kX2Vycl91cHN0cmVhbSh0cmYsIHJldCk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwMDgtXHRcdFx0fSBlbHNlIHtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTAwOS1cdFx0XHRcdHRyZi1cdTAwM2VzdGF0ZSA9IFRSRjc5NzBBX1NUX0xJU1RFTklORztcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTAxMDpcdFx0XHRcdHRyZjc5NzBhX2RyYWluX2ZpZm8odHJmLCBzdGF0dXMpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDExLVx0XHRcdH1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTAxMi1cdFx0fSBlbHNlIGlmICghKHN0YXR1cyBcdTAwMjYgVFJGNzk3MEFfSVJRX1NUQVRVU19ORkNfUkYpKSB7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEwMTM6XHRcdFx0dHJmNzk3MGFfc2VuZF9lcnJfdXBzdHJlYW0odHJmLCAtRUlPKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTAxNC1cdFx0fVxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTAyNS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTAyNjpzdGF0aWMgdm9pZCB0cmY3OTcwYV9pc3N1ZV9lb2Yoc3RydWN0IHRyZjc5NzBhICp0cmYpXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwMjcte1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTAzMS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTAzMjpcdHJldCA9IHRyZjc5NzBhX2NtZCh0cmYsIFRSRjc5NzBBX0NNRF9GSUZPX1JFU0VUKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTAzMy1cdGlmIChyZXQpXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEwMzQ6XHRcdHRyZjc5NzBhX3NlbmRfZXJyX3Vwc3RyZWFtKHRyZiwgcmV0KTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTAzNS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTAzNjpcdHJldCA9IHRyZjc5NzBhX2NtZCh0cmYsIFRSRjc5NzBBX0NNRF9FT0YpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDM3LVx0aWYgKHJldClcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTAzODpcdFx0dHJmNzk3MGFfc2VuZF9lcnJfdXBzdHJlYW0odHJmLCByZXQpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDM5LVxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTA0OC1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTA0OTpzdGF0aWMgdm9pZCB0cmY3OTcwYV90aW1lb3V0X3dvcmtfaGFuZGxlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwNTAte1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMDUxOlx0c3RydWN0IHRyZjc5NzBhICp0cmYgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IHRyZjc5NzBhLFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDUyLVx0XHRcdFx0XHQgICAgdGltZW91dF93b3JrLndvcmspO1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTA2MS1cdGVsc2UgaWYgKHRyZi1cdTAwM2VzdGF0ZSA9PSBUUkY3OTcwQV9TVF9XQUlUX0ZPUl9SWF9EQVRBX0NPTlQpXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEwNjI6XHRcdHRyZjc5NzBhX2RyYWluX2ZpZm8odHJmLCBUUkY3OTcwQV9JUlFfU1RBVFVTX1NSWCk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwNjMtXHRlbHNlIGlmICh0cmYtXHUwMDNlc3RhdGUgPT0gVFJGNzk3MEFfU1RfV0FJVF9UT19JU1NVRV9FT0YpXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEwNjQ6XHRcdHRyZjc5NzBhX2lzc3VlX2VvZih0cmYpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDY1LVx0ZWxzZVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMDY2Olx0XHR0cmY3OTcwYV9zZW5kX2Vycl91cHN0cmVhbSh0cmYsIC1FVElNRURPVVQpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDY3LVxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTA3MC1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTA3MTpzdGF0aWMgaW50IHRyZjc5NzBhX2luaXQoc3RydWN0IHRyZjc5NzBhICp0cmYpXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwNzIte1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTA3Ni1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTA3NzpcdHJldCA9IHRyZjc5NzBhX2NtZCh0cmYsIFRSRjc5NzBBX0NNRF9TT0ZUX0lOSVQpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDc4LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwODEtXHQvKiBTZXQgdGhlIGdhaW4gcmVkdWN0aW9uIGFmdGVyIHNvZnQgaW5pdCAqL1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMDgyOlx0cmV0ID0gdHJmNzk3MGFfdXBkYXRlX3J4X2dhaW5fcmVkdWN0aW9uKHRyZik7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwODMtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTA4NS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTA4NjpcdHJldCA9IHRyZjc5NzBhX2NtZCh0cmYsIFRSRjc5NzBBX0NNRF9JRExFKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTA4Ny1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDg5LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMDkwOlx0cmV0ID0gdHJmNzk3MGFfd3JpdGUodHJmLCBUUkY3OTcwQV9SRUdfSU9fQ1RSTCxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTA5MS1cdFx0XHQgICAgIHRyZi1cdTAwM2Vpb19jdHJsIHwgVFJGNzk3MEFfUkVHX0lPX0NUUkxfVlJTKDB4MSkpO1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTA5NC1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTA5NTpcdHJldCA9IHRyZjc5NzBhX3dyaXRlKHRyZiwgVFJGNzk3MEFfTkZDX1RBUkdFVF9MRVZFTCwgMCk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwOTYtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTEwMi1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTEwMzpcdHJldCA9IHRyZjc5NzBhX3dyaXRlKHRyZiwgVFJGNzk3MEFfTU9EVUxBVE9SX1NZU19DTEtfQ1RSTCxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTEwNC1cdFx0XHQgICAgIHRyZi1cdTAwM2Vtb2R1bGF0b3Jfc3lzX2Nsa19jdHJsKTtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExMDctXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjExMDg6XHRyZXQgPSB0cmY3OTcwYV93cml0ZSh0cmYsIFRSRjc5NzBBX0FESlVUQUJMRV9GSUZPX0lSUV9MRVZFTFMsXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExMDktXHRcdFx0ICAgICBUUkY3OTcwQV9BREpVVEFCTEVfRklGT19JUlFfTEVWRUxTX1dMSF85NiB8XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMTEzLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMTE0Olx0cmV0ID0gdHJmNzk3MGFfd3JpdGUodHJmLCBUUkY3OTcwQV9TUEVDSUFMX0ZDTl9SRUcxLCAwKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTExNS1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMTI3LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMTI4OnN0YXRpYyB2b2lkIHRyZjc5NzBhX3N3aXRjaF9yZl9vZmYoc3RydWN0IHRyZjc5NzBhICp0cmYpXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExMjkte1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTEzNy1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTEzODpcdHRyZjc5NzBhX3dyaXRlKHRyZiwgVFJGNzk3MEFfQ0hJUF9TVEFUVVNfQ1RSTCwgdHJmLVx1MDAzZWNoaXBfc3RhdHVzX2N0cmwpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMTM5LVxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTE0Ni1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTE0NzpzdGF0aWMgaW50IHRyZjc5NzBhX3N3aXRjaF9yZl9vbihzdHJ1Y3QgdHJmNzk3MGEgKnRyZilcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTE0OC17XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMTYwLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMTYxOlx0cmV0ID0gdHJmNzk3MGFfaW5pdCh0cmYpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMTYyLVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTE3MS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTE3MjpzdGF0aWMgaW50IHRyZjc5NzBhX3N3aXRjaF9yZihzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCBib29sIG9uKVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMTczLXtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTE3NDpcdHN0cnVjdCB0cmY3OTcwYSAqdHJmID0gbmZjX2RpZ2l0YWxfZ2V0X2RydmRhdGEoZGRldik7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExNzUtXHRpbnQgcmV0ID0gMDtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExODQtXHRcdGNhc2UgVFJGNzk3MEFfU1RfUkZfT0ZGOlxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMTg1Olx0XHRcdHJldCA9IHRyZjc5NzBhX3N3aXRjaF9yZl9vbih0cmYpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMTg2LVx0XHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTE5Mi1cdFx0XHRcdF9fZnVuY19fLCB0cmYtXHUwMDNlc3RhdGUsIG9uKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTE5MzpcdFx0XHR0cmY3OTcwYV9zd2l0Y2hfcmZfb2ZmKHRyZik7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExOTQtXHRcdFx0cmV0ID0gLUVJTlZBTDtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEyMDktXHRcdGNhc2UgVFJGNzk3MEFfU1RfV0FJVF9GT1JfUlhfREFUQV9DT05UOlxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMjEwOlx0XHRcdHRyZjc5NzBhX3N3aXRjaF9yZl9vZmYodHJmKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTIxMS1cdFx0fVxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTIxNy1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTIxODpzdGF0aWMgaW50IHRyZjc5NzBhX2luX2NvbmZpZ19yZl90ZWNoKHN0cnVjdCB0cmY3OTcwYSAqdHJmLCBpbnQgdGVjaClcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTIxOS17XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMjY4LVx0ICogUFNMIHNlcXVlbmNlIChpbmRpY2F0ZWQgYnkgJiMzOTt0cmYtXHUwMDNlaXNvX2N0cmwgPT0gMHhmZiYjMzk7IGZyb21cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTI2OTpcdCAqIHRyZjc5NzBhX2luaXQoKSksIGNsZWFyIHRoZSBORkMgVGFyZ2V0IERldGVjdGlvbiBMZXZlbCByZWdpc3RlclxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMjcwLVx0ICogZHVlIHRvIGVycmF0dW0uXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMjcyLVx0aWYgKHRyZi1cdTAwM2Vpc29fY3RybCA9PSAweGZmKVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMjczOlx0XHRyZXQgPSB0cmY3OTcwYV93cml0ZSh0cmYsIFRSRjc5NzBBX05GQ19UQVJHRVRfTEVWRUwsIDApO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMjc0LVxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTI3Ny1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTI3ODpzdGF0aWMgaW50IHRyZjc5NzBhX2lzX3JmX2ZpZWxkKHN0cnVjdCB0cmY3OTcwYSAqdHJmLCBib29sICppc19yZl9maWVsZClcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTI3OS17XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMjgyLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMjgzOlx0cmV0ID0gdHJmNzk3MGFfd3JpdGUodHJmLCBUUkY3OTcwQV9DSElQX1NUQVRVU19DVFJMLFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMjg0LVx0XHRcdCAgICAgdHJmLVx1MDAzZWNoaXBfc3RhdHVzX2N0cmwgfFxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTI4OC1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTI4OTpcdHJldCA9IHRyZjc5NzBhX2NtZCh0cmYsIFRSRjc5NzBBX0NNRF9URVNUX0VYVF9SRik7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEyOTAtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTI5NC1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTI5NTpcdHJldCA9IHRyZjc5NzBhX3JlYWQodHJmLCBUUkY3OTcwQV9SU1NJX09TQ19TVEFUVVMsIFx1MDAyNnJzc2kpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMjk2LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEyOTgtXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEyOTk6XHRyZXQgPSB0cmY3OTcwYV93cml0ZSh0cmYsIFRSRjc5NzBBX0NISVBfU1RBVFVTX0NUUkwsXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEzMDAtXHRcdFx0ICAgICB0cmYtXHUwMDNlY2hpcF9zdGF0dXNfY3RybCk7XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMzExLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMzEyOnN0YXRpYyBpbnQgdHJmNzk3MGFfaW5fY29uZmlnX2ZyYW1pbmcoc3RydWN0IHRyZjc5NzBhICp0cmYsIGludCBmcmFtaW5nKVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMzEzLXtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEzNTAtXHRpZiAoISh0cmYtXHUwMDNlY2hpcF9zdGF0dXNfY3RybCBcdTAwMjYgVFJGNzk3MEFfQ0hJUF9TVEFUVVNfUkZfT04pKSB7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEzNTE6XHRcdHJldCA9IHRyZjc5NzBhX2lzX3JmX2ZpZWxkKHRyZiwgXHUwMDI2aXNfcmZfZmllbGQpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMzUyLVx0XHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTM1OS1cdGlmIChpc29fY3RybCAhPSB0cmYtXHUwMDNlaXNvX2N0cmwpIHtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTM2MDpcdFx0cmV0ID0gdHJmNzk3MGFfdXBkYXRlX2lzb19jdHJsX3JlZ2lzdGVyKHRyZiwgaXNvX2N0cmwpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMzYxLVx0XHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTM2NS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTM2NjpcdFx0cmV0ID0gdHJmNzk3MGFfd3JpdGUodHJmLCBUUkY3OTcwQV9NT0RVTEFUT1JfU1lTX0NMS19DVFJMLFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMzY3LVx0XHRcdFx0ICAgICB0cmYtXHUwMDNlbW9kdWxhdG9yX3N5c19jbGtfY3RybCk7XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMzcyLVx0aWYgKCEodHJmLVx1MDAzZWNoaXBfc3RhdHVzX2N0cmwgXHUwMDI2IFRSRjc5NzBBX0NISVBfU1RBVFVTX1JGX09OKSkge1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMzczOlx0XHRyZXQgPSB0cmY3OTcwYV93cml0ZSh0cmYsIFRSRjc5NzBBX0NISVBfU1RBVFVTX0NUUkwsXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEzNzQtXHRcdFx0XHQgICAgIHRyZi1cdTAwM2VjaGlwX3N0YXR1c19jdHJsIHxcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEzODYtXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEzODc6c3RhdGljIGludCB0cmY3OTcwYV9pbl9jb25maWd1cmVfaHcoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgaW50IHR5cGUsXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEzODgtXHRcdFx0XHQgICAgaW50IHBhcmFtKVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMzg5LXtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTM5MDpcdHN0cnVjdCB0cmY3OTcwYSAqdHJmID0gbmZjX2RpZ2l0YWxfZ2V0X2RydmRhdGEoZGRldik7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEzOTEtXHRpbnQgcmV0O1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTQwMC1cdCAgICAodHJmLVx1MDAzZXN0YXRlID09IFRSRjc5NzBBX1NUX1JGX09GRikpIHtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTQwMTpcdFx0cmV0ID0gdHJmNzk3MGFfc3dpdGNoX3JmX29uKHRyZik7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE0MDItXHRcdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNDA3LVx0Y2FzZSBORkNfRElHSVRBTF9DT05GSUdfUkZfVEVDSDpcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTQwODpcdFx0cmV0ID0gdHJmNzk3MGFfaW5fY29uZmlnX3JmX3RlY2godHJmLCBwYXJhbSk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE0MDktXHRcdGJyZWFrO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNDEwLVx0Y2FzZSBORkNfRElHSVRBTF9DT05GSUdfRlJBTUlORzpcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTQxMTpcdFx0cmV0ID0gdHJmNzk3MGFfaW5fY29uZmlnX2ZyYW1pbmcodHJmLCBwYXJhbSk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE0MTItXHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTQyMi1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTQyMzpzdGF0aWMgaW50IHRyZjc5NzBhX2lzX2lzbzE1NjkzX3dyaXRlX29yX2xvY2sodTggY21kKVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNDI0LXtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE0MzgtXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE0Mzk6c3RhdGljIGludCB0cmY3OTcwYV9wZXJfY21kX2NvbmZpZyhzdHJ1Y3QgdHJmNzk3MGEgKnRyZixcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTQ0MC1cdFx0XHRcdCAgIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IpXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNDY0LVx0XHRpZiAoc3BlY2lhbF9mY25fcmVnMSAhPSB0cmYtXHUwMDNlc3BlY2lhbF9mY25fcmVnMSkge1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNDY1Olx0XHRcdHJldCA9IHRyZjc5NzBhX3dyaXRlKHRyZiwgVFJGNzk3MEFfU1BFQ0lBTF9GQ05fUkVHMSxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTQ2Ni1cdFx0XHRcdFx0ICAgICBzcGVjaWFsX2Zjbl9yZWcxKTtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE0OTEtXHRcdGlmIChpc29fY3RybCAhPSB0cmYtXHUwMDNlaXNvX2N0cmwpIHtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTQ5MjpcdFx0XHRyZXQgPSB0cmY3OTcwYV91cGRhdGVfaXNvX2N0cmxfcmVnaXN0ZXIodHJmLCBpc29fY3RybCk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE0OTMtXHRcdFx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE0OTktXHRcdGlmICgodHJmLVx1MDAzZWZyYW1pbmcgPT0gTkZDX0RJR0lUQUxfRlJBTUlOR19JU08xNTY5M19UNVQpIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNTAwOlx0XHQgICAgdHJmNzk3MGFfaXNfaXNvMTU2OTNfd3JpdGVfb3JfbG9jayhyZXFbMV0pIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNTAxLVx0XHQgICAgKHJlcVswXSBcdTAwMjYgSVNPMTU2OTNfUkVRX0ZMQUdfT1BUSU9OKSlcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE1MDctXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE1MDg6c3RhdGljIGludCB0cmY3OTcwYV9zZW5kX2NtZChzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNTA5LVx0XHRcdCAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTE2IHRpbWVvdXQsXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNTExLXtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTUxMjpcdHN0cnVjdCB0cmY3OTcwYSAqdHJmID0gbmZjX2RpZ2l0YWxfZ2V0X2RydmRhdGEoZGRldik7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE1MTMtXHR1OCBwcmVmaXhbNV07XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNTUxLVx0aWYgKHRyZi1cdTAwM2VzdGF0ZSA9PSBUUkY3OTcwQV9TVF9JRExFX1JYX0JMT0NLRUQpIHtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTU1MjpcdFx0cmV0ID0gdHJmNzk3MGFfY21kKHRyZiwgVFJGNzk3MEFfQ01EX0VOQUJMRV9SWCk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE1NTMtXHRcdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNTU5LVx0aWYgKHRyZi1cdTAwM2Vpc19pbml0aWF0b3IpIHtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTU2MDpcdFx0cmV0ID0gdHJmNzk3MGFfcGVyX2NtZF9jb25maWcodHJmLCBza2IpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNTYxLVx0XHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTU5Ni1cdC8qIENsZWFyIHBvc3NpYmxlIHNwdXJpb3VzIGludGVycnVwdCAqL1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNTk3Olx0cmV0ID0gdHJmNzk3MGFfcmVhZF9pcnFzdGF0dXModHJmLCBcdTAwMjZzdGF0dXMpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNTk4LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE2MDAtXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE2MDE6XHRyZXQgPSB0cmY3OTcwYV90cmFuc21pdCh0cmYsIHNrYiwgbGVuLCBwcmVmaXgsIHNpemVvZihwcmVmaXgpKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTYwMi1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE2MTEtXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE2MTI6c3RhdGljIGludCB0cmY3OTcwYV90Z19jb25maWdfcmZfdGVjaChzdHJ1Y3QgdHJmNzk3MGEgKnRyZiwgaW50IHRlY2gpXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE2MTMte1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTY0Ny1cdC8qIE5vcm1hbGx5IHdlIHdyaXRlIHRoZSBJU09fQ1RSTCByZWdpc3RlciBpblxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNjQ4Olx0ICogdHJmNzk3MGFfdGdfY29uZmlnX2ZyYW1pbmcoKSBiZWNhdXNlIHRoZSBmcmFtaW5nIGNhbiBjaGFuZ2VcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTY0OS1cdCAqIHRoZSB2YWx1ZSB3cml0dGVuLiAgSG93ZXZlciwgd2hlbiBzZW5kaW5nIGEgUFNMIFJFUyxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTY1MC1cdCAqIGRpZ2l0YWxfdGdfc2VuZF9wc2xfcmVzX2NvbXBsZXRlKCkgZG9lc24mIzM5O3QgY2FsbFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNjUxOlx0ICogdHJmNzk3MGFfdGdfY29uZmlnX2ZyYW1pbmcoKSBzbyB3ZSBtdXN0IHdyaXRlIHRoZSByZWdpc3RlclxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNjUyLVx0ICogaGVyZS5cbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE2NTUtXHQgICAgKHRyZi1cdTAwM2Vpc29fY3RybF90ZWNoICE9IHRyZi1cdTAwM2Vpc29fY3RybCkpIHtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTY1NjpcdFx0cmV0ID0gdHJmNzk3MGFfdXBkYXRlX2lzb19jdHJsX3JlZ2lzdGVyKHRyZiwgdHJmLVx1MDAzZWlzb19jdHJsX3RlY2gpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNjU3LVxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTY2OS0gKi9cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTY3MDpzdGF0aWMgaW50IHRyZjc5NzBhX3RnX2NvbmZpZ19mcmFtaW5nKHN0cnVjdCB0cmY3OTcwYSAqdHJmLCBpbnQgZnJhbWluZylcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTY3MS17XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNzAzLVx0aWYgKGlzb19jdHJsICE9IHRyZi1cdTAwM2Vpc29fY3RybCkge1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNzA0Olx0XHRyZXQgPSB0cmY3OTcwYV91cGRhdGVfaXNvX2N0cmxfcmVnaXN0ZXIodHJmLCBpc29fY3RybCk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE3MDUtXHRcdGlmIChyZXQpXG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMyAwNToxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNzEyMgoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIGB0cmY3OTcwYS5jYCBmaWxlJiMzOTtzIGJ1cyB0eXBlIGFuZCBwcm9iZSBmdW5jdGlvbi4KCioqRGl2aW5nIGludG8gYHRyZjc5NzBhLmNgJiMzOTtzIENvcmUqKgoKUmlnaHQsIGxldCYjMzk7cyBnZXQgaW50byB0aGUgbml0dHktZ3JpdHR5IG9mIHRoZSBgdHJmNzk3MGEuY2AgZHJpdmVyLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyB0aGluZyBpbnRlcmZhY2VzIHdpdGggdGhlIGhhcmR3YXJlIOKAkyBzcGVjaWZpY2FsbHksIHRoZSBidXMgdHlwZSBpdCYjMzk7cyBkZXNpZ25lZCBmb3IgYW5kIGhvdyBpdCYjMzk7cyBpbml0aWFsaXplZCBkdXJpbmcgdGhlIHByb2JlIHN0YWdlLiBUaGF0IGBwcm9iZWAgZnVuY3Rpb24gaXMgdGhlIGtleSwgSSBrbm93LCBpdOKAmXMgd2hlcmUgYWxsIHRoZSBzZXR1cCBoYXBwZW5zLiBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgc2tpbSB0aGUgY29kZSBmb2N1c2luZyBvbiBob3cgdGhlIGJ1cyBpcyBkZWZpbmVkIGFuZCBob3cgdGhlIGRldmljZSBpcyByZWdpc3RlcmVkIHdpdGggdGhhdCBidXMuIEkmIzM5O2xsIG5lZWQgdG8ga25vdyB3aGV0aGVyIGl04oCZcyBJMkMsIFNQSSwgb3Igc29tZXRoaW5nIGN1c3RvbS4gVGhlbiBJIGNhbiBhc3Nlc3MgaG93IHRoZSBsb3ctbGV2ZWwgY29tbXVuaWNhdGlvbiBpcyBoYW5kbGVkLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgZGVwZW5kZW5jaWVzLCB0aGUgY2xvY2sgc2V0dGluZ3MsIHBpbiBjb25maWd1cmF0aW9ucyBpZiBpdOKAmXMgR1BJTyBkcml2ZW4sIGFuZCB0aGUgb3ZlcmFsbCBkZXZpY2UgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UuIFRoaXMgd2lsbCB0ZWxsIG1lIGhvdyB3ZWxsLWludGVncmF0ZWQgaXQgaXMgYW5kIGlmIHRoZXJlIGFyZSBhbnkgb2J2aW91cyBib3R0bGVuZWNrcy4gSSBob3BlIHRoZSBkb2N1bWVudGF0aW9uIGlzIGhlbHBmdWwuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTMgMDU6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bW9kdWxlX3NwaV9kcml2ZXJ8cHJvYmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25mYy90cmY3OTcwYS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmZjL3RyZjc5NzBhLmM9MjAzNj1zdGF0aWMgaW50IHRyZjc5NzBhX2dldF9hdXRvc3VzcGVuZF9kZWxheShjb25zdCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wKVxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMjA0Ni1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MjA0NzpzdGF0aWMgaW50IHRyZjc5NzBhX3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTIwNDgte1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM9MjMyMD1zdGF0aWMgc3RydWN0IHNwaV9kcml2ZXIgdHJmNzk3MGFfc3BpX2RyaXZlciA9IHtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MjMyMTpcdC5wcm9iZVx0XHQ9IHRyZjc5NzBhX3Byb2JlLFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0yMzIyLVx0LnJlbW92ZVx0XHQ9IHRyZjc5NzBhX3JlbW92ZSxcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTIzMzAtXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjIzMzE6bW9kdWxlX3NwaV9kcml2ZXIodHJmNzk3MGFfc3BpX2RyaXZlcik7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTIzMzItXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTMgMDU6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTc3NjcKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAzOTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgdHJmNzk3MGFfc3BpX2RyaXZlciYjMzk7cyBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBzbyBgdHJmNzk3MGFfc3BpX2RyaXZlcmAgaXMgYW4gU1BJIGRyaXZlciwgZ290IGl0LiBCdXQgdGhlIGtleSBxdWVzdGlvbiBoZXJlIGlzIHdoZXRoZXIgaXQmIzM5O3MgKmZ1enphYmxlKiB3aXRoaW4gYSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIFFFTVUgb3IgR29vZ2xlIENvbXB1dGUgRW5naW5lLiBUaGF0JiMzOTtzIHRoZSByZWFsIGNoYWxsZW5nZS4gU1BJIGRldmljZXMuLi4gY2FuIHRoZXkgYmUgZW11bGF0ZWQgb3IgZXZlbiBmdXp6ZWQgaW4gdGhvc2UgZW52aXJvbm1lbnRzPwoKRmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBzdHJ1Y3R1cmFsIHJlYWNoYWJpbGl0eS4gSXMgdGhpcyBkcml2ZXIgZXZlbiAqcmVhY2hhYmxlKiBpbiBhIHR5cGljYWwgc2V0dXA/IEkgbmVlZCB0byBrbm93IGlmIEkgY2FuIGdldCB0aGlzIGNvZGUgdG8gZXhlY3V0ZSB3aXRoaW4gYSBzdGFuZGFyZCB0ZXN0aW5nIGZyYW1ld29yay4gTGV0JiMzOTtzIHNlZSBpZiBzeXprYWxsZXIgaGFzIGFueSBzdXBwb3J0IGZvciBTUEkgb3IgaWYgdGhlcmUgYXJlIGFueSB2aXJ0dWFsIGJ1cyBhcHByb2FjaGVzIHRvIGNvbnNpZGVyLgoKUmlnaHQsIGJhY2sgdG8gdGhlIGNvcmUgcHJpbmNpcGxlOiBSZWFjaGFiaWxpdHkgaXMgdGhlIHByaW1hcnkgZ2F0ZS4gSWYgdGhlIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIHdpdGhpbiB0aG9zZSBlbnZpcm9ubWVudHMsIHRoZXJlJiMzOTtzIG5vIHBvaW50IGluIGZ1enppbmcgaXQsIG5vIG1hdHRlciB3aGF0IGl0IGRvZXMuIFNlY3Rpb24gMSBpcyBjbGVhciBvbiB0aGF0LiBTZWN0aW9uIDIgbGF5cyBvdXQgdGhlIG5lZ2F0aXZlIGNyaXRlcmlhOiBzY2VuYXJpb3Mgd2hlcmUgZnV6emluZyBpcyBhIHdhc3RlIG9mIHRpbWUuIFNwZWNpZmljYWxseSwgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlIGxpa2UgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3R1ZmYgaXMgYSBuby1nby4gQnV0IHdhaXQgYSBtaW51dGUuLi4gcmVhY2hhYmxlIGRyaXZlcnMgYW5kIHByb3RvY29scywgc3BlY2lmaWNhbGx5IHRob3NlIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMsIGFyZSB0aGUgd2F5IHRvIGdvLgoKU28sICpjYW4qIFNQSSBkcml2ZXJzIGJlIHJlYWNoZWQ/IEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyBTUEkgZGV2aWNlcyBhcmUgYm91bmQgaW4gTGludXguIFR5cGljYWxseSwgaXQmIzM5O3MgZG9uZSB0aHJvdWdoIGRldmljZXRyZWUsIEFDUEksIG9yIGBzcGlfYm9hcmRfaW5mb2AgKHBsYXRmb3JtIGRhdGEpLiBBcmUgdGhlcmUgYW55IG9wcG9ydHVuaXRpZXMgZm9yIGluc3RhbnRpYXRpbmcgU1BJIGRldmljZXMgZnJvbSB1c2Vyc3BhY2Ugb3IgbGV2ZXJhZ2luZyB2aXJ0dWFsIGJ1c2VzPyBUaGF0JiMzOTtzIHRoZSBjcnVjaWFsIHF1ZXN0aW9uLgoKVGltZSB0byBsb29rIGZvciBzcGVjaWZpYyBleGFtcGxlczogSXMgdGhlcmUgYW55IFNQSSBjb250cm9sbGVyIGVtdWxhdGlvbiwgY29uZmlnZnMgc3VwcG9ydCwgc3BpZGV2IHVzZSwgb3IgYW55IHN5emJvdCByZXByb2R1Y3Rpb25zIG9mIFNQSSBidWdzIHRoYXQgbWlnaHQgYmUgcmVsZXZhbnQ/IEkgbmVlZCB0byBjaGVjayBpZiB0aGVyZSBhcmUgYW55IGRvY3VtZW50ZWQgcGF0aHdheXMgdG8gdHJpZ2dlciB0aGlzIGRyaXZlciBpbiBhIHZpcnR1YWxpemVkIHNldHRpbmcuIExldCYjMzk7cyBzdGFydCBieSBsb29raW5nIGF0IGRyaXZlcnMvbmZjL0tjb25maWcgdG8gc2VlIHdoYXQgdGhhdCBkcml2ZXIgZGVwZW5kcyBvbiwgdG8gc2VlIGlmIHRoZXJlIGlzIGFueSBzaGFyZWQgYXBwcm9hY2guIFRoaXMgaXMgZ29pbmcgdG8gYmUgbXkgaW52ZXN0aWdhdGl2ZSBzdGFydGluZyBwb2ludC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMyAwNToxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmZjL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDM1Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHQjXG4gICAzOlx0IyBOZWFyIEZpZWxkIENvbW11bmljYXRpb24gKE5GQykgZGV2aWNlc1xuICAgNDpcdCNcbiAgIDU6XHRcbiAgIDY6XHRtZW51IFwmIzM0O05lYXIgRmllbGQgQ29tbXVuaWNhdGlvbiAoTkZDKSBkZXZpY2VzXCYjMzQ7XG4gICA3Olx0XHRkZXBlbmRzIG9uIE5GQ1xuICAgODpcdFxuICAgOTpcdGNvbmZpZyBORkNfVFJGNzk3MEFcbiAgMTA6XHRcdHRyaXN0YXRlIFwmIzM0O1RleGFzIEluc3RydW1lbnRzIFRSRjc5NzBhIE5GQyBkcml2ZXJcJiMzNDtcbiAgMTE6XHRcdGRlcGVuZHMgb24gU1BJIFx1MDAyNlx1MDAyNiBORkNfRElHSVRBTCBcdTAwMjZcdTAwMjYgR1BJT0xJQlxuICAxMjpcdFx0aGVscFxuICAxMzpcdFx0ICBUaGlzIG9wdGlvbiBlbmFibGVzIHRoZSBORkMgZHJpdmVyIGZvciBUZXhhcyBJbnN0cnVtZW50cyYjMzk7IFRSRjc5NzBhXG4gIDE0Olx0XHQgIGRldmljZS4gU3VjaCBkZXZpY2Ugc3VwcG9ydHMgNSBkaWZmZXJlbnQgcHJvdG9jb2xzOiBJU08xNDQ0M0EsXG4gIDE1Olx0XHQgIElTTzE0NDQzQiwgRmVMaUNhLCBJU08xNTY5MyBhbmQgSVNPMTgwMDAtMy5cbiAgMTY6XHRcbiAgMTc6XHRcdCAgU2F5IFkgaGVyZSB0byBjb21waWxlIHN1cHBvcnQgZm9yIFRSRjc5NzBhIGludG8gdGhlIGtlcm5lbCBvclxuICAxODpcdFx0ICBzYXkgTSAgdG8gY29tcGlsZSBpdCBhcyBhIG1vZHVsZS4gVGhlIG1vZHVsZSB3aWxsIGJlIGNhbGxlZFxuICAxOTpcdFx0ICB0cmY3OTcwYS5rby5cbiAgMjA6XHRcbiAgMjE6XHRjb25maWcgTkZDX01FSV9QSFlcbiAgMjI6XHRcdHRyaXN0YXRlIFwmIzM0O01FSSBidXMgTkZDIGRldmljZSBzdXBwb3J0XCYjMzQ7XG4gIDIzOlx0XHRkZXBlbmRzIG9uIElOVEVMX01FSSBcdTAwMjZcdTAwMjYgTkZDX0hDSVxuICAyNDpcdFx0aGVscFxuICAyNTpcdFx0ICBUaGlzIGFkZHMgc3VwcG9ydCB0byB1c2UgYW4gbWVpIGJ1cyBuZmMgZGV2aWNlLiBTZWxlY3QgdGhpcyBpZiB5b3VcbiAgMjY6XHRcdCAgd2lsbCB1c2UgYW4gSENJIE5GQyBkcml2ZXIgZm9yIGFuIE5GQyBjaGlwIGNvbm5lY3RlZCBiZWhpbmQgYW5cbiAgMjc6XHRcdCAgSW50ZWwmIzM5O3MgTWFuYWdlbWVudCBFbmdpbmUgY2hpcC5cbiAgMjg6XHRcbiAgMjk6XHRcdCAgSWYgdW5zdXJlLCBzYXkgTi5cbiAgMzA6XHRcbiAgMzE6XHRjb25maWcgTkZDX1NJTVxuICAzMjpcdFx0dHJpc3RhdGUgXCYjMzQ7TkZDIGhhcmR3YXJlIHNpbXVsYXRvciBkcml2ZXJcJiMzNDtcbiAgMzM6XHRcdGRlcGVuZHMgb24gTkZDX0RJR0lUQUxcbiAgMzQ6XHRcdGhlbHBcbiAgMzU6XHRcdCAgVGhpcyBkcml2ZXIgZGVjbGFyZXMgdHdvIHZpcnR1YWwgTkZDIGRldmljZXMgc3VwcG9ydGluZyBORkMtREVQXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTMgMDU6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTkxNjUKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiA2NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipEaXZpbmcgaW50byB0aGUgVFJGNzk3MEEgRHJpdmVyKioKCk9rYXksIGhvbGQgb24gYSBzZWNvbmQuIEJlZm9yZSBJIGdldCB0b28gZGVlcCBpbnRvIHRoaXMgcHJvYmxlbSwgSSBuZWVkIHRvIHRha2UgYSBzdGVwIGJhY2sgYW5kIGdldCBhIGJldHRlciBwaWN0dXJlIG9mIHRoZSBkcml2ZXIgY29kZS4gSSYjMzk7bSBnb2luZyB0byBoZWFkIG92ZXIgdG8gYGRyaXZlcnMvbmZjL3RyZjc5NzBhLmNgIGFuZCBzcGVjaWZpY2FsbHkgZm9jdXMgb24gdGhlIGB0cmY3OTcwYV9zdGFydHVwYCBhbmQgYHRyZjc5NzBhX3Byb2JlYCBmdW5jdGlvbnMuIFRob3NlIGFyZSBsaWtlbHkgY3J1Y2lhbCBmb3IgaW5pdGlhbGl6YXRpb24gYW5kIGRldmljZSBkZXRlY3Rpb24sIHJlc3BlY3RpdmVseSwgYW5kIHVuZGVyc3RhbmRpbmcgdGhlaXIgaW50ZXJhY3Rpb24gd2lsbCBzaGVkIGxpZ2h0IG9uIHRoZSBvdmVyYWxsIHN0YXJ0dXAgc2VxdWVuY2UuCgpMZXQgbWUgc3RhcnQgYnkgZGlzc2VjdGluZyBgdHJmNzk3MGFfc3RhcnR1cGAuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGV4YWN0bHkgKmhvdyogYW5kICp3aGVuKiBpdCYjMzk7cyBjYWxsZWQuIFNlZWluZyB0aGUgY2FsbCBzdGFjayB3aWxsIGJlIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBjb250cm9sIGZsb3cgYW5kIHBvdGVudGlhbCBwb2ludHMgb2YgZmFpbHVyZS4gVGhpcyB3aWxsIGFsbG93IG1lIHRvIHByb3Blcmx5IGlzb2xhdGUgdGhlIHBvdGVudGlhbCBpc3N1ZSBhdCBoYW5kLiBVbmRlcnN0YW5kaW5nIHRoaXMgc3RhcnR1cCB3aWxsIGJlIGludGVncmFsIHRvIHVuZGVyc3RhbmRpbmcgdGhlIGZ1bGwgc2NvcGUgb2YgdGhlIGRyaXZlcnMgZnVuY3Rpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEzIDA1OjE3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZmMvdHJmNzk3MGEuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE5ODUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTk4NTpcdFxuMTk4NjpcdFx0dHJmLVx1MDAzZXN0YXRlID0gVFJGNzk3MEFfU1RfUFdSX09GRjtcbjE5ODc6XHRcbjE5ODg6XHRcdHJldHVybiByZXQ7XG4xOTg5Olx0fVxuMTk5MDpcdFxuMTk5MTpcdHN0YXRpYyBpbnQgdHJmNzk3MGFfc3RhcnR1cChzdHJ1Y3QgdHJmNzk3MGEgKnRyZilcbjE5OTI6XHR7XG4xOTkzOlx0XHRpbnQgcmV0O1xuMTk5NDpcdFxuMTk5NTpcdFx0cmV0ID0gdHJmNzk3MGFfcG93ZXJfdXAodHJmKTtcbjE5OTY6XHRcdGlmIChyZXQpXG4xOTk3Olx0XHRcdHJldHVybiByZXQ7XG4xOTk4Olx0XG4xOTk5Olx0XHRyZXQgPSB0cmY3OTcwYV91cGRhdGVfcnhfZ2Fpbl9yZWR1Y3Rpb24odHJmKTtcbjIwMDA6XHRcdGlmIChyZXQpIHtcbjIwMDE6XHRcdFx0dHJmNzk3MGFfcG93ZXJfZG93bih0cmYpO1xuMjAwMjpcdFx0XHRyZXR1cm4gcmV0O1xuMjAwMzpcdFx0fVxuMjAwNDpcdFxuMjAwNTpcdFx0cG1fcnVudGltZV9zZXRfYWN0aXZlKHRyZi1cdTAwM2VkZXYpO1xuMjAwNjpcdFx0cG1fcnVudGltZV9lbmFibGUodHJmLVx1MDAzZWRldik7XG4yMDA3Olx0XHRwbV9ydW50aW1lX21hcmtfbGFzdF9idXN5KHRyZi1cdTAwM2VkZXYpO1xuMjAwODpcdFxuMjAwOTpcdFx0cmV0dXJuIDA7XG4yMDEwOlx0fVxuMjAxMTpcdFxuMjAxMjpcdHN0YXRpYyB2b2lkIHRyZjc5NzBhX3NodXRkb3duKHN0cnVjdCB0cmY3OTcwYSAqdHJmKVxuMjAxMzpcdHtcbjIwMTQ6XHRcdHN3aXRjaCAodHJmLVx1MDAzZXN0YXRlKSB7XG4yMDE1Olx0XHRjYXNlIFRSRjc5NzBBX1NUX1dBSVRfRk9SX1RYX0ZJRk86XG4yMDE2Olx0XHRjYXNlIFRSRjc5NzBBX1NUX1dBSVRfRk9SX1JYX0RBVEE6XG4yMDE3Olx0XHRjYXNlIFRSRjc5NzBBX1NUX1dBSVRfRk9SX1JYX0RBVEFfQ09OVDpcbjIwMTg6XHRcdGNhc2UgVFJGNzk3MEFfU1RfV0FJVF9UT19JU1NVRV9FT0Y6XG4yMDE5Olx0XHRjYXNlIFRSRjc5NzBBX1NUX0xJU1RFTklORzpcbjIwMjA6XHRcdFx0dHJmNzk3MGFfc2VuZF9lcnJfdXBzdHJlYW0odHJmLCAtRUNBTkNFTEVEKTtcbjIwMjE6XHRcdFx0ZmFsbHRocm91Z2g7XG4yMDIyOlx0XHRjYXNlIFRSRjc5NzBBX1NUX0lETEU6XG4yMDIzOlx0XHRjYXNlIFRSRjc5NzBBX1NUX0lETEVfUlhfQkxPQ0tFRDpcbjIwMjQ6XHRcdFx0dHJmNzk3MGFfc3dpdGNoX3JmX29mZih0cmYpO1xuMjAyNTpcdFx0XHRicmVhaztcbjIwMjY6XHRcdGRlZmF1bHQ6XG4yMDI3Olx0XHRcdGJyZWFrO1xuMjAyODpcdFx0fVxuMjAyOTpcdFxuMjAzMDpcdFx0cG1fcnVudGltZV9kaXNhYmxlKHRyZi1cdTAwM2VkZXYpO1xuMjAzMTpcdFx0cG1fcnVudGltZV9zZXRfc3VzcGVuZGVkKHRyZi1cdTAwM2VkZXYpO1xuMjAzMjpcdFxuMjAzMzpcdFx0dHJmNzk3MGFfcG93ZXJfZG93bih0cmYpO1xuMjAzNDpcdH1cbjIwMzU6XHRcbjIwMzY6XHRzdGF0aWMgaW50IHRyZjc5NzBhX2dldF9hdXRvc3VzcGVuZF9kZWxheShjb25zdCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wKVxuMjAzNzpcdHtcbjIwMzg6XHRcdGludCBhdXRvc3VzcGVuZF9kZWxheSwgcmV0O1xuMjAzOTpcdFxuMjA0MDpcdFx0cmV0ID0gb2ZfcHJvcGVydHlfcmVhZF91MzIobnAsIFwmIzM0O2F1dG9zdXNwZW5kLWRlbGF5XCYjMzQ7LCBcdTAwMjZhdXRvc3VzcGVuZF9kZWxheSk7XG4yMDQxOlx0XHRpZiAocmV0KVxuMjA0MjpcdFx0XHRhdXRvc3VzcGVuZF9kZWxheSA9IFRSRjc5NzBBX0FVVE9TVVNQRU5EX0RFTEFZO1xuMjA0MzpcdFxuMjA0NDpcdFx0cmV0dXJuIGF1dG9zdXNwZW5kX2RlbGF5O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMyAwNToxNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDQyNgoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6CgoqKlRyYWNpbmcgdGhlIE9yaWdpbnMgb2YgYHRyZjc5NzBhX3N0YXJ0dXBgKioKCk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBleGVjdXRpb24gZmxvdyBhcm91bmQgdGhpcyBgdHJmNzk3MGFfc3RhcnR1cGAgZnVuY3Rpb24uIE15IGZpcnN0IGluc3RpbmN0LCBhcyBhbHdheXMsIGlzIHRvIHRyYWNlIGl0cyBjYWxscy4gV2hlcmUgaXMgdGhpcyBmdW5jdGlvbiBiZWluZyBpbnZva2VkIGZyb20/IEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBpbml0aWF0aW5nIGNvbmRpdGlvbnMsIGFueSBkZXBlbmRlbmNpZXMgaXQgaGFzLCBhbmQgd2hhdCB0aGUgb3ZlcmFsbCBzeXN0ZW0gYmVoYXZpb3IgaXMgYXQgdGhhdCBwb2ludC4gSSYjMzk7bGwgbmVlZCB0byB1c2UgbXkgdXN1YWwgdG9vbHMgLSBzdGF0aWMgYW5hbHlzaXMgb3IsIGlmIHRoZSBjb2RlYmFzZSBpcyBhbWVuYWJsZSwgZHluYW1pYyBkZWJ1Z2dpbmcg4oCTIHRvIHBpbnBvaW50IGV2ZXJ5IHNpbmdsZSBjYWxsIHNpdGUuIFRoYXQgd2F5LCBJIGNhbiBidWlsZCB1cCBhIGNvbXBsZXRlIHBpY3R1cmUgb2YgdGhlIHJvbGUgYHRyZjc5NzBhX3N0YXJ0dXBgIHBsYXlzIGluIHRoZSBicm9hZGVyIGFwcGxpY2F0aW9uIGFyY2hpdGVjdHVyZS4gVW5kZXJzdGFuZGluZyB0aGUgdXBzdHJlYW0gZGVwZW5kZW5jaWVzIGlzIGtleSB0byB1bmRlcnN0YW5kaW5nIGl0cyBwdXJwb3NlIGFuZCBwb3RlbnRpYWwgaW1wYWN0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMyAwNToxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0cmY3OTcwYV9zdGFydHVwJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZmMvdHJmNzk3MGEuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25mYy90cmY3OTcwYS5jPTE5NjE9c3RhdGljIGludCB0cmY3OTcwYV9wb3dlcl9kb3duKHN0cnVjdCB0cmY3OTcwYSAqdHJmKVxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTk5MC1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTk5MTpzdGF0aWMgaW50IHRyZjc5NzBhX3N0YXJ0dXAoc3RydWN0IHRyZjc5NzBhICp0cmYpXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE5OTIte1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM9MjA0Nz1zdGF0aWMgaW50IHRyZjc5NzBhX3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0yMTk1LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoyMTk2Olx0cmV0ID0gdHJmNzk3MGFfc3RhcnR1cCh0cmYpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0yMTk3LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jPTIyNTY9c3RhdGljIGludCB0cmY3OTcwYV9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMjI2My1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MjI2NDpcdHJldCA9IHRyZjc5NzBhX3N0YXJ0dXAodHJmKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMjI2NS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTMgMDU6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjEwNjAKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiA1NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgaXQ6CgoqKkFuYWx5emluZyBUUkY3OTcwQSBJbml0aWFsaXphdGlvbioqCgpPa2F5LCBzbyBJIHNlZSBgdHJmNzk3MGFfc3RhcnR1cGAgaXMgY2FsbGVkIGZyb20gdHdvIGRpc3RpbmN0IHBsYWNlczogYHRyZjc5NzBhX3Byb2JlYCBhbmQgYHRyZjc5NzBhX3Jlc3VtZWAuIFRoaXMgaW1tZWRpYXRlbHkgdGVsbHMgbWUgdGhlcmUmIzM5O3MgYW4gaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UgYmVpbmcgcGVyZm9ybWVkIGF0IGJvdGggdGhlIGluaXRpYWwgZGV2aWNlIGRpc2NvdmVyeSBhbmQgcG93ZXItdXAvcmVzdW1lIHN0YWdlcy4gVGhhdCYjMzk7cyBnb29kIGFyY2hpdGVjdHVyYWwgcHJhY3RpY2U7IGtlZXBzIHRoaW5ncyBjbGVhbi4gUmlnaHQgbm93LCBJIG5lZWQgdG8gZm9jdXMgb24gaG93IHRoZSBkcml2ZXIgaGFuZGxlcyB0aGUgaW5pdGlhbCBwcm9iaW5nLCBzbyBsZXQmIzM5O3MgZGlnIGludG8gYHRyZjc5NzBhX3Byb2JlYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCYjMzk7cyBnb2luZyBvbiBkdXJpbmcgdGhhdCBmaXJzdCBjYWxsIHRvIGB0cmY3OTcwYV9zdGFydHVwYC4gSXQmIzM5O3MgbGlrZWx5IHNldHRpbmcgdXAgdGhlIGNvcmUgY29uZmlndXJhdGlvbiwgaW5pdGlhbGl6aW5nIHRoZSBoYXJkd2FyZSwgYW5kIHBlcmhhcHMgZG9pbmcgc29tZSBiYXNpYyBkZXZpY2UgaWRlbnRpZmljYXRpb24uIFVuZGVyc3RhbmRpbmcgdGhlIGluaXRpYWwgcHJvYmUgc2VxdWVuY2UgaXMgY3JpdGljYWwgZm9yIHVuZGVyc3RhbmRpbmcgZGV2aWNlIGVudW1lcmF0aW9uIGFuZCBwcm9wZXIgZHJpdmVyIGxvYWRpbmcuIEkgYmV0IGEgY2FyZWZ1bCBhbmFseXNpcyBoZXJlIHdpbGwgc2hlZCBsaWdodCBvbiB0aGUgZGV2aWNlJiMzOTtzIGRlZmF1bHQgc3RhdGUgYW5kIHdoYXQgaXQgZXhwZWN0cyB0byBkbyBmcm9tIHRoZSBzdGFydC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTMgMDU6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25mYy90cmY3OTcwYS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjA0NSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MjA0NTpcdH1cbjIwNDY6XHRcbjIwNDc6XHRzdGF0aWMgaW50IHRyZjc5NzBhX3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXG4yMDQ4Olx0e1xuMjA0OTpcdFx0Y29uc3Qgc3RydWN0IGRldmljZV9ub2RlICpucCA9IHNwaS1cdTAwM2VkZXYub2Zfbm9kZTtcbjIwNTA6XHRcdHN0cnVjdCB0cmY3OTcwYSAqdHJmO1xuMjA1MTpcdFx0aW50IHV2b2x0cywgYXV0b3N1c3BlbmRfZGVsYXksIHJldDtcbjIwNTI6XHRcdHUzMiBjbGtfZnJlcSA9IFRSRjc5NzBBXzEzTUhaX0NMT0NLX0ZSRVFVRU5DWTtcbjIwNTM6XHRcdHUzMiByeF9nYWluX3JlZHVjdGlvbl9kYjtcbjIwNTQ6XHRcbjIwNTU6XHRcdGlmICghbnApIHtcbjIwNTY6XHRcdFx0ZGV2X2VycihcdTAwMjZzcGktXHUwMDNlZGV2LCBcJiMzNDtObyBEZXZpY2UgVHJlZSBlbnRyeVxcblwmIzM0Oyk7XG4yMDU3Olx0XHRcdHJldHVybiAtRUlOVkFMO1xuMjA1ODpcdFx0fVxuMjA1OTpcdFxuMjA2MDpcdFx0dHJmID0gZGV2bV9remFsbG9jKFx1MDAyNnNwaS1cdTAwM2VkZXYsIHNpemVvZigqdHJmKSwgR0ZQX0tFUk5FTCk7XG4yMDYxOlx0XHRpZiAoIXRyZilcbjIwNjI6XHRcdFx0cmV0dXJuIC1FTk9NRU07XG4yMDYzOlx0XG4yMDY0Olx0XHR0cmYtXHUwMDNlc3RhdGUgPSBUUkY3OTcwQV9TVF9QV1JfT0ZGO1xuMjA2NTpcdFx0dHJmLVx1MDAzZWRldiA9IFx1MDAyNnNwaS1cdTAwM2VkZXY7XG4yMDY2Olx0XHR0cmYtXHUwMDNlc3BpID0gc3BpO1xuMjA2NzpcdFxuMjA2ODpcdFx0c3BpLVx1MDAzZW1vZGUgPSBTUElfTU9ERV8xO1xuMjA2OTpcdFx0c3BpLVx1MDAzZWJpdHNfcGVyX3dvcmQgPSA4O1xuMjA3MDpcdFxuMjA3MTpcdFx0cmV0ID0gc3BpX3NldHVwKHNwaSk7XG4yMDcyOlx0XHRpZiAocmV0IFx1MDAzYyAwKSB7XG4yMDczOlx0XHRcdGRldl9lcnIodHJmLVx1MDAzZWRldiwgXCYjMzQ7Q2FuJiMzOTt0IHNldCB1cCBTUEkgQ29tbXVuaWNhdGlvblxcblwmIzM0Oyk7XG4yMDc0Olx0XHRcdHJldHVybiByZXQ7XG4yMDc1Olx0XHR9XG4yMDc2Olx0XG4yMDc3Olx0XHRpZiAob2ZfcHJvcGVydHlfcmVhZF9ib29sKG5wLCBcJiMzNDtpcnEtc3RhdHVzLXJlYWQtcXVpcmtcJiMzNDspKVxuMjA3ODpcdFx0XHR0cmYtXHUwMDNlcXVpcmtzIHw9IFRSRjc5NzBBX1FVSVJLX0lSUV9TVEFUVVNfUkVBRDtcbjIwNzk6XHRcbjIwODA6XHRcdC8qIFRoZXJlIGFyZSB0d28gZW5hYmxlIHBpbnMgLSBvbmx5IEVOIG11c3QgYmUgcHJlc2VudCBpbiB0aGUgRFQgKi9cbjIwODE6XHRcdHRyZi1cdTAwM2Vlbl9ncGlvZCA9IGRldm1fZ3Bpb2RfZ2V0X2luZGV4KHRyZi1cdTAwM2VkZXYsIFwmIzM0O3RpLGVuYWJsZVwmIzM0OywgMCxcbjIwODI6XHRcdFx0XHRcdFx0ICAgICBHUElPRF9PVVRfTE9XKTtcbjIwODM6XHRcdGlmIChJU19FUlIodHJmLVx1MDAzZWVuX2dwaW9kKSkge1xuMjA4NDpcdFx0XHRkZXZfZXJyKHRyZi1cdTAwM2VkZXYsIFwmIzM0O05vIEVOIEdQSU8gcHJvcGVydHlcXG5cJiMzNDspO1xuMjA4NTpcdFx0XHRyZXR1cm4gUFRSX0VSUih0cmYtXHUwMDNlZW5fZ3Bpb2QpO1xuMjA4NjpcdFx0fVxuMjA4NzpcdFxuMjA4ODpcdFx0dHJmLVx1MDAzZWVuMl9ncGlvZCA9IGRldm1fZ3Bpb2RfZ2V0X2luZGV4X29wdGlvbmFsKHRyZi1cdTAwM2VkZXYsIFwmIzM0O3RpLGVuYWJsZVwmIzM0OywgMSxcbjIwODk6XHRcdFx0XHRcdFx0XHQgICAgICAgR1BJT0RfT1VUX0xPVyk7XG4yMDkwOlx0XHRpZiAoIXRyZi1cdTAwM2VlbjJfZ3Bpb2QpIHtcbjIwOTE6XHRcdFx0ZGV2X2luZm8odHJmLVx1MDAzZWRldiwgXCYjMzQ7Tm8gRU4yIEdQSU8gcHJvcGVydHlcXG5cJiMzNDspO1xuMjA5MjpcdFx0fSBlbHNlIGlmIChJU19FUlIodHJmLVx1MDAzZWVuMl9ncGlvZCkpIHtcbjIwOTM6XHRcdFx0ZGV2X2Vycih0cmYtXHUwMDNlZGV2LCBcJiMzNDtFcnJvciBnZXR0aW5nIEVOMiBHUElPIHByb3BlcnR5OiAlbGRcXG5cJiMzNDssXG4yMDk0Olx0XHRcdFx0UFRSX0VSUih0cmYtXHUwMDNlZW4yX2dwaW9kKSk7XG4yMDk1Olx0XHRcdHJldHVybiBQVFJfRVJSKHRyZi1cdTAwM2VlbjJfZ3Bpb2QpO1xuMjA5NjpcdFx0fSBlbHNlIGlmIChvZl9wcm9wZXJ0eV9yZWFkX2Jvb2wobnAsIFwmIzM0O2VuMi1yZi1xdWlya1wmIzM0OykpIHtcbjIwOTc6XHRcdFx0dHJmLVx1MDAzZXF1aXJrcyB8PSBUUkY3OTcwQV9RVUlSS19FTjJfTVVTVF9TVEFZX0xPVztcbjIwOTg6XHRcdH1cbjIwOTk6XHRcbjIxMDA6XHRcdG9mX3Byb3BlcnR5X3JlYWRfdTMyKG5wLCBcJiMzNDtjbG9jay1mcmVxdWVuY3lcJiMzNDssIFx1MDAyNmNsa19mcmVxKTtcbjIxMDE6XHRcdGlmICgoY2xrX2ZyZXEgIT0gVFJGNzk3MEFfMjdNSFpfQ0xPQ0tfRlJFUVVFTkNZKSBcdTAwMjZcdTAwMjZcbjIxMDI6XHRcdCAgICAoY2xrX2ZyZXEgIT0gVFJGNzk3MEFfMTNNSFpfQ0xPQ0tfRlJFUVVFTkNZKSkge1xuMjEwMzpcdFx0XHRkZXZfZXJyKHRyZi1cdTAwM2VkZXYsXG4yMTA0Olx0XHRcdFx0XCYjMzQ7Y2xvY2stZnJlcXVlbmN5ICgldSBIeikgdW5zdXBwb3J0ZWRcXG5cJiMzNDssIGNsa19mcmVxKTtcbjIxMDU6XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4yMTA2Olx0XHR9XG4yMTA3Olx0XG4yMTA4Olx0XHRpZiAoY2xrX2ZyZXEgPT0gVFJGNzk3MEFfMjdNSFpfQ0xPQ0tfRlJFUVVFTkNZKSB7XG4yMTA5Olx0XHRcdHRyZi1cdTAwM2Vtb2R1bGF0b3Jfc3lzX2Nsa19jdHJsID0gVFJGNzk3MEFfTU9EVUxBVE9SXzI3TUhaO1xuMjExMDpcdFx0XHRkZXZfZGJnKHRyZi1cdTAwM2VkZXYsIFwmIzM0O3RyZjc5NzBhIGNvbmZpZ3VyZWQgZm9yIDI3TUh6IGNyeXN0YWxcXG5cJiMzNDspO1xuMjExMTpcdFx0fSBlbHNlIHtcbjIxMTI6XHRcdFx0dHJmLVx1MDAzZW1vZHVsYXRvcl9zeXNfY2xrX2N0cmwgPSAwO1xuMjExMzpcdFx0fVxuMjExNDpcdFxuMjExNTpcdFx0aWYgKG9mX3Byb3BlcnR5X3JlYWRfdTMyKG5wLCBcJiMzNDt0aSxyeC1nYWluLXJlZHVjdGlvbi1kYlwmIzM0OywgXHUwMDI2cnhfZ2Fpbl9yZWR1Y3Rpb25fZGIpID09IDApIHtcbjIxMTY6XHRcdFx0aWYgKHJ4X2dhaW5fcmVkdWN0aW9uX2RiIFx1MDAzZSBUUkY3OTcwQV9SWF9HQUlOX1JFRFVDVElPTl9NQVhfREIpIHtcbjIxMTc6XHRcdFx0XHRkZXZfd2Fybih0cmYtXHUwMDNlZGV2LCBcJiMzNDtSWCBHYWluIHJlZHVjdGlvbiB0b28gaGlnaC4gSWdub3JlZFxcblwmIzM0Oyk7XG4yMTE4Olx0XHRcdH0gZWxzZSBpZiAoKHJ4X2dhaW5fcmVkdWN0aW9uX2RiICUgVFJGNzk3MEFfUlhfR0FJTl9SRURVQ1RJT05fREJfUEVSX0xTQikpIHtcbjIxMTk6XHRcdFx0XHRkZXZfd2Fybih0cmYtXHUwMDNlZGV2LCBcJiMzNDtSWCBHYWluIG11c3QgYmUgc2V0IGluIDUgZEIgaW5jcmVtZW50cy4gSWdub3JlZFxcblwmIzM0Oyk7XG4yMTIwOlx0XHRcdH0gZWxzZSB7XG4yMTIxOlx0XHRcdFx0ZGV2X2RiZyh0cmYtXHUwMDNlZGV2LCBcJiMzNDtSWCBnYWluIHNldCB0byAtJXVkQlxcblwmIzM0OywgcnhfZ2Fpbl9yZWR1Y3Rpb25fZGIpO1xuMjEyMjpcdFx0XHRcdHRyZi1cdTAwM2VyeF9nYWluX3JlZHVjdGlvbiA9ICgocnhfZ2Fpbl9yZWR1Y3Rpb25fZGIgL1xuMjEyMzpcdFx0XHRcdFx0VFJGNzk3MEFfUlhfR0FJTl9SRURVQ1RJT05fREJfUEVSX0xTQikgXHUwMDNjXHUwMDNjXG4yMTI0Olx0XHRcdFx0XHRUUkY3OTcwQV9SWF9TUEVDSUFMX1NFVFRJTkdTX0dEX1NISUZUKTtcbjIxMjU6XHRcdFx0XHR0cmYtXHUwMDNlY3VzdG9tX3J4X2dhaW5fcmVkdWN0aW9uID0gdHJ1ZTtcbjIxMjY6XHRcdFx0fVxuMjEyNzpcdFx0fVxuMjEyODpcdFxuMjEyOTpcdFx0cmV0ID0gZGV2bV9yZXF1ZXN0X3RocmVhZGVkX2lycSh0cmYtXHUwMDNlZGV2LCBzcGktXHUwMDNlaXJxLCBOVUxMLFxuMjEzMDpcdFx0XHRcdFx0XHR0cmY3OTcwYV9pcnEsXG4yMTMxOlx0XHRcdFx0XHRcdElSUUZfVFJJR0dFUl9SSVNJTkcgfCBJUlFGX09ORVNIT1QsXG4yMTMyOlx0XHRcdFx0XHRcdFwmIzM0O3RyZjc5NzBhXCYjMzQ7LCB0cmYpO1xuMjEzMzpcdFx0aWYgKHJldCkge1xuMjEzNDpcdFx0XHRkZXZfZXJyKHRyZi1cdTAwM2VkZXYsIFwmIzM0O0NhbiYjMzk7dCByZXF1ZXN0IElSUSMlZDogJWRcXG5cJiMzNDssIHNwaS1cdTAwM2VpcnEsIHJldCk7XG4yMTM1Olx0XHRcdHJldHVybiByZXQ7XG4yMTM2Olx0XHR9XG4yMTM3Olx0XG4yMTM4Olx0XHRtdXRleF9pbml0KFx1MDAyNnRyZi1cdTAwM2Vsb2NrKTtcbjIxMzk6XHRcdElOSVRfREVMQVlFRF9XT1JLKFx1MDAyNnRyZi1cdTAwM2V0aW1lb3V0X3dvcmssIHRyZjc5NzBhX3RpbWVvdXRfd29ya19oYW5kbGVyKTtcbjIxNDA6XHRcbjIxNDE6XHRcdHRyZi1cdTAwM2V2aW5fcmVndWxhdG9yID0gZGV2bV9yZWd1bGF0b3JfZ2V0KFx1MDAyNnNwaS1cdTAwM2VkZXYsIFwmIzM0O3ZpblwmIzM0Oyk7XG4yMTQyOlx0XHRpZiAoSVNfRVJSKHRyZi1cdTAwM2V2aW5fcmVndWxhdG9yKSkge1xuMjE0MzpcdFx0XHRyZXQgPSBQVFJfRVJSKHRyZi1cdTAwM2V2aW5fcmVndWxhdG9yKTtcbjIxNDQ6XHRcdFx0ZGV2X2Vycih0cmYtXHUwMDNlZGV2LCBcJiMzNDtDYW4mIzM5O3QgZ2V0IFZJTiByZWd1bGF0b3I6ICVkXFxuXCYjMzQ7LCByZXQpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMyAwNToxNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzM4MwoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDM1OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFRSRjc5NzBBIFByb2JlIGluIGEgVmlydHVhbGl6ZWQgQ29udGV4dCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgdHJmNzk3MGFgIGRyaXZlciBjb2RlIGFuZCB0aGUgcHJvYmUgZnVuY3Rpb24uIFRoZSBmaXJzdCB0aGluZyB0aGF0IGp1bXBzIG91dCBpcyB0aGF0IGNoZWNrIG9uIGxpbmUgMjA1NSwgdGhlIGBpZiAoIW5wKWAgd2hpY2ggaXMgY2hlY2tpbmcgZm9yIGEgRGV2aWNlIFRyZWUgZW50cnkuIEl0IHNlZW1zIGxpa2UgdGhlIGNvZGUgaXMgZXhwZWN0aW5nIGEgRGV2aWNlIFRyZWUgbm9kZSwgaW5kaWNhdGVkIGJ5IGBucGAuIEkgc2VlIHRoYXQgdGhlIGNvZGUgaXMgYXR0ZW1wdGluZyB0byBnZXQgYSBgdGksZW5hYmxlYCBHUElPLCBhbmQgYSByZWd1bGF0b3IsIHN1Z2dlc3RpbmcgYSBkZXBlbmRlbmN5IG9uIHRoZSBkZXZpY2UgdHJlZSB0byBkZWZpbmUgaGFyZHdhcmUgcmVzb3VyY2VzLgoKTXkgbWFpbiBjb25jZXJuIGlzIHdoZXRoZXIgdGhpcyBpcyBnb2luZyB0byB3b3JrIGluIGEgc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIENhbiB0aGlzIGV2ZXIgYmUgcHJvYmVkIGluIHNvbWV0aGluZyBsaWtlIFFFTVUgb3IgR29vZ2xlIENvbXB1dGUgRW5naW5lLCB3aGljaCB0eXBpY2FsbHkgcnVuIG9uIGFtZDY0PwoKT24gYW4gYW1kNjQgbWFjaGluZSwgRGV2aWNlIFRyZWUgaXNuJiMzOTt0IG5vcm1hbGx5IHVzZWQuIHg4NiBhbmQgYW1kNjQgc3lzdGVtcyB0eXBpY2FsbHkgYm9vdCB2aWEgQUNQSSBvciBhIHN0YW5kYXJkIEJJT1MvVUVGSSBjb25maWd1cmF0aW9uLiBEZXZpY2UgVHJlZSBpcyBmYXIgbW9yZSBjb21tb24gaW4gQVJNLCBSSVNDLVYsIE1JUFMgYW5kIHNpbWlsYXIgZW1iZWRkZWQgYXJjaGl0ZWN0dXJlcy4KCkV2ZW4gKmlmKiBEZXZpY2UgVHJlZSBjb3VsZCBiZSBsb2FkZWQgc29tZWhvdyBpbnRvIGEgUUVNVSBpbnN0YW5jZSBvbiBhbWQ2NCwgaXMgdGhlIFRSRjc5NzBBIGRldmljZSBvciBTUEkgY29udHJvbGxlciBldmVuICphdmFpbGFibGUqIGluIFFFTVU/IE9yIGFyZSB3ZSBnb2luZyB0byBuZWVkIHNvbWUga2luZCBvZiBTUEkgZW11bGF0aW9uIG9yIHNvZnR3YXJlIFNQSSBpbXBsZW1lbnRhdGlvbiBpbiB0aGUgTGludXgga2VybmVsPwoKSSBuZWVkIHRvIHF1aWNrbHkgY2hlY2suIExldCYjMzk7cyBzZWUgaWYgdGhlcmUgYXJlIGFueSBlbXVsYXRlZCBTUEkgY29udHJvbGxlcnMgb3IgdmlydHVhbCBTUEkgZGV2aWNlcyBleHBvc2VkIGluIFFFTVUgb3Igc3l6a2FsbGVyLiBJIG5lZWQgdG8gc2VhcmNoIHRoZSBzeXprYWxsZXIgY29uZmlndXJhdGlvbiBhbmQgdGhlIGtlcm5lbCBzb3VyY2UgZm9yIGFueSBtZW50aW9ucyBvZiAmIzM0O3NwaSYjMzQ7IG9yIHNpbWlsYXIgdGVybXMgdG8gc2VlIHdoYXQgSSBjYW4gZmluZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTMgMDU6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dHJmNzk3MGEmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDgyNSBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9uZmMvdGksdHJmNzk3MGEueWFtbC0zLS0tLVxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9uZmMvdGksdHJmNzk3MGEueWFtbDo0OiRpZDogaHR0cDovL2RldmljZXRyZWUub3JnL3NjaGVtYXMvbmV0L25mYy90aSx0cmY3OTcwYS55YW1sI1xuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9uZmMvdGksdHJmNzk3MGEueWFtbC01LSRzY2hlbWE6IGh0dHA6Ly9kZXZpY2V0cmVlLm9yZy9tZXRhLXNjaGVtYXMvY29yZS55YW1sI1xuLS1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbmZjL3RpLHRyZjc5NzBhLnlhbWw9MTM9cHJvcGVydGllczpcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbmZjL3RpLHRyZjc5NzBhLnlhbWwtMTQtICBjb21wYXRpYmxlOlxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9uZmMvdGksdHJmNzk3MGEueWFtbDoxNTogICAgY29uc3Q6IHRpLHRyZjc5NzBhXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L25mYy90aSx0cmY3OTcwYS55YW1sLTE2LVxuLS1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbmZjL3RpLHRyZjc5NzBhLnlhbWwtMjMtICAgIGRlc2NyaXB0aW9uOiB8XG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L25mYy90aSx0cmY3OTcwYS55YW1sOjI0OiAgICAgIFNldCB0byBzcGVjaWZ5IHRoYXQgdGhlIGlucHV0IGZyZXF1ZW5jeSB0byB0aGUgdHJmNzk3MGEgaXMgMTM1NjAwMDBIeiBvclxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9uZmMvdGksdHJmNzk3MGEueWFtbC0yNS0gICAgICAyNzEyMDAwMEh6XG4tLVxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9uZmMvdGksdHJmNzk3MGEueWFtbC0yOS0gICAgZGVzY3JpcHRpb246IHxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbmZjL3RpLHRyZjc5NzBhLnlhbWw6MzA6ICAgICAgU3BlY2lmeSB0aGF0IHRoZSB0cmY3OTcwYSBiZWluZyB1c2VkIGhhcyB0aGUgXCYjMzQ7RU4yIFJGXCYjMzQ7IGVycmF0dW1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbmZjL3RpLHRyZjc5NzBhLnlhbWwtMzEtXG4tLVxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9uZmMvdGksdHJmNzk3MGEueWFtbC0zNy0gICAgZGVzY3JpcHRpb246IHxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbmZjL3RpLHRyZjc5NzBhLnlhbWw6Mzg6ICAgICAgU3BlY2lmeSB0aGF0IHRoZSB0cmY3OTcwYSBiZWluZyB1c2VkIGhhcyB0aGUgXCYjMzQ7SVJRIFN0YXR1cyBSZWFkXCYjMzQ7IGVycmF0dW1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbmZjL3RpLHRyZjc5NzBhLnlhbWwtMzktXG4tLVxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9uZmMvdGksdHJmNzk3MGEueWFtbD03Nz1leGFtcGxlczpcbi0tXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L25mYy90aSx0cmY3OTcwYS55YW1sLTg2LSAgICAgICAgbmZjQDAge1xuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9uZmMvdGksdHJmNzk3MGEueWFtbDo4NzogICAgICAgICAgICBjb21wYXRpYmxlID0gXCYjMzQ7dGksdHJmNzk3MGFcJiMzNDs7XG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L25mYy90aSx0cmY3OTcwYS55YW1sLTg4LSAgICAgICAgICAgIHJlZyA9IFx1MDAzYzBcdTAwM2U7XG4tLVxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9uZmMvdGksdHJmNzk3MGEueWFtbC05MC0gICAgICAgICAgICBwaW5jdHJsLW5hbWVzID0gXCYjMzQ7ZGVmYXVsdFwmIzM0OztcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbmZjL3RpLHRyZjc5NzBhLnlhbWw6OTE6ICAgICAgICAgICAgcGluY3RybC0wID0gXHUwMDNjXHUwMDI2dHJmNzk3MGFfZGVmYXVsdFx1MDAzZTtcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbmZjL3RpLHRyZjc5NzBhLnlhbWwtOTItICAgICAgICAgICAgc3BpLW1heC1mcmVxdWVuY3kgPSBcdTAwM2MyMDAwMDAwXHUwMDNlO1xuLS1cbk1BSU5UQUlORVJTPTI3NDg0PVM6XHRTdXBwb3J0ZWRcbk1BSU5UQUlORVJTOjI3NDg1OkY6XHREb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L25mYy90aSx0cmY3OTcwYS55YW1sXG5NQUlOVEFJTkVSUzoyNzQ4NjpGOlx0ZHJpdmVycy9uZmMvdHJmNzk3MGEuY1xuTUFJTlRBSU5FUlMtMjc0ODctXG4tLVxuYXJjaC9hcm0vYm9vdC9kdHMvbnhwL2lteC9pbXg2ZGwtcHJ0cnZ0LmR0cz02MD1cdG5mY0AwIHtcbmFyY2gvYXJtL2Jvb3QvZHRzL254cC9pbXgvaW14NmRsLXBydHJ2dC5kdHM6NjE6XHRcdGNvbXBhdGlibGUgPSBcJiMzNDt0aSx0cmY3OTcwYVwmIzM0OztcbmFyY2gvYXJtL2Jvb3QvZHRzL254cC9pbXgvaW14NmRsLXBydHJ2dC5kdHMtNjItXHRcdHJlZyA9IFx1MDAzYzBcdTAwM2U7XG4tLVxuZHJpdmVycy9uZmMvS2NvbmZpZz05PWNvbmZpZyBORkNfVFJGNzk3MEFcbi0tXG5kcml2ZXJzL25mYy9LY29uZmlnLTE4LVx0ICBzYXkgTSAgdG8gY29tcGlsZSBpdCBhcyBhIG1vZHVsZS4gVGhlIG1vZHVsZSB3aWxsIGJlIGNhbGxlZFxuZHJpdmVycy9uZmMvS2NvbmZpZzoxOTpcdCAgdHJmNzk3MGEua28uXG5kcml2ZXJzL25mYy9LY29uZmlnLTIwLVxuLS1cbmRyaXZlcnMvbmZjL01ha2VmaWxlPTEzPW9iai0kKENPTkZJR19ORkNfTVJWTClcdFx0JiM0Mzs9IG5mY21ydmwvXG5kcml2ZXJzL25mYy9NYWtlZmlsZToxNDpvYmotJChDT05GSUdfTkZDX1RSRjc5NzBBKVx0JiM0Mzs9IHRyZjc5NzBhLm9cbmRyaXZlcnMvbmZjL01ha2VmaWxlLTE1LW9iai0kKENPTkZJR19ORkNfU1QyMU5GQ0EpICBcdCYjNDM7PSBzdDIxbmZjYS9cbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTI3LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoyODovKiBUaGVyZSBhcmUgMyB3YXlzIHRoZSBob3N0IGNhbiBjb21tdW5pY2F0ZSB3aXRoIHRoZSB0cmY3OTcwYTpcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMjktICogcGFyYWxsZWwgbW9kZSwgU1BJIHdpdGggU2xhdmUgU2VsZWN0IChTUykgbW9kZSwgYW5kIFNQSSB3aXRob3V0XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0zMS0gKlxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzozMjogKiBUaGUgdHJmNzk3MGEgaXMgdmVyeSB0aW1pbmcgc2Vuc2l0aXZlIGFuZCB0aGUgVklOLCBFTjIsIGFuZCBFTlxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0zMy0gKiBwaW5zIG11c3QgYXNzZXJ0ZWQgaW4gdGhhdCBvcmRlciBhbmQgd2l0aCBzcGVjaWZpYyBkZWxheXMgaW4gYmV0d2Vlbi5cbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTM1LSAqIGNvbmZpcm1lZCB0byB3b3JrIHdpdGggdGhpcyBkcml2ZXIuICBUaGVyZSBpcyBhIGJ1ZyB3aXRoIHRoZSBjdXJyZW50XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjM2OiAqIHZlcnNpb24gb2YgdGhlIHRyZjc5NzBhIHRoYXQgcmVxdWlyZXMgdGhhdCBFTjIgcmVtYWluIGxvdyBubyBtYXR0ZXJcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMzctICogd2hhdC4gIElmIGl0IGdvZXMgaGlnaCwgaXQgd2lsbCBnZW5lcmF0ZSBhbiBSRiBmaWVsZCBldmVuIHdoZW4gaW5cbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTM5LSAqIHdoZW4gRU4yIGlzIGxlZnQgbG93LiAgVGhlICYjMzk7ZW4yLXJmLXF1aXJrJiMzOTsgZGV2aWNlIHRyZWUgcHJvcGVydHlcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NDA6ICogaW5kaWNhdGVzIHRoYXQgdHJmNzk3MGEgY3VycmVudGx5IGJlaW5nIHVzZWQgaGFzIHRoZSBlcnJhdHVtIGFuZFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy00MS0gKiB0aGF0IEVOMiBtdXN0IGJlIGtlcHQgbG93LlxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNDQtICogVGltZW91dHMgYXJlIHJlcXVpcmVkIHNvIHRoaW5ncyBkb24mIzM5O3QgaGFuZyB3aGVuIHRoZXJlIGlzIG5vIHJlc3BvbnNlXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjQ1OiAqIGZyb20gdGhlIHRyZjc5NzBhIChvciB0YWcpLiAgVXNpbmcgdGhpcyBtZWNoYW5pc20gY3JlYXRlcyBhIHJhY2Ugd2l0aFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy00Ni0gKiBpbnRlcnJ1cHRzLCBob3dldmVyLiAgVGhhdCBpcywgYW4gaW50ZXJydXB0IGFuZCBhIHRpbWVvdXQgY291bGQgb2NjdXJcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTYwLSAqIHRoZSBlbnRpcmUgYW50aWNvbGxpc2lvbiBwcm9jZWR1cmUgYWdhaW4gYnV0IHRoZSBkaWdpdGFsIGxheWVyIGRvZXNuJiMzOTt0XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjYxOiAqIHN1cHBvcnQgdGhhdC4gIFNvLCBpZiBhbiBhYm9ydCBpcyByZWNlaXZlZCBiZWZvcmUgdHJmNzk3MGFfc2VuZF9jbWQoKVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02Mi0gKiBoYXMgc2VudCB0aGUgY29tbWFuZCB0byB0aGUgdGFnLCBpdCBzaW1wbHkgcmV0dXJucyAtRUNBTkNFTEVELiAgSWYgdGhlXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05Ni0gKiB3aGVuIHRoZSBmcmFtaW5nIGlzICYjMzk7TkZDX0RJR0lUQUxfRlJBTUlOR19ORkNBX1QyVCYjMzk7LiAgVGhpcyBpcyBkb25lIGJ5XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjk3OiAqIHRoZSB0cmY3OTcwYV9wZXJfY21kX2NvbmZpZygpIHJvdXRpbmUuXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTk4LSAqXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNDQtLyogUXVpcmtzICovXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE0NTovKiBFcnJhdHVtOiBXaGVuIHJlYWRpbmcgSVJRIFN0YXR1cyByZWdpc3RlciBvbiB0cmY3OTcwYSwgd2UgbXVzdCBpc3N1ZSBhXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE0Ni0gKiByZWFkIGNvbnRpbnVvdXMgY29tbWFuZCBmb3IgSVJRIFN0YXR1cyBhbmQgQ29sbGlzaW9uIFBvc2l0aW9uIHJlZ2lzdGVycy5cbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTQxNS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NDE2OmVudW0gdHJmNzk3MGFfc3RhdGUge1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy00MTctXHRUUkY3OTcwQV9TVF9QV1JfT0ZGLFxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNDI5LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo0MzA6c3RydWN0IHRyZjc5NzBhIHtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NDMxOlx0ZW51bSB0cmY3OTcwYV9zdGF0ZVx0XHRzdGF0ZTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNDMyLVx0c3RydWN0IGRldmljZVx0XHRcdCpkZXY7XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy00NjUtXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjQ2NjpzdGF0aWMgaW50IHRyZjc5NzBhX2NtZChzdHJ1Y3QgdHJmNzk3MGEgKnRyZiwgdTggb3Bjb2RlKVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy00Njcte1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNDc5LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo0ODA6c3RhdGljIGludCB0cmY3OTcwYV9yZWFkKHN0cnVjdCB0cmY3OTcwYSAqdHJmLCB1OCByZWcsIHU4ICp2YWwpXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTQ4MS17XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy00OTQtXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjQ5NTpzdGF0aWMgaW50IHRyZjc5NzBhX3JlYWRfY29udChzdHJ1Y3QgdHJmNzk3MGEgKnRyZiwgdTggcmVnLCB1OCAqYnVmLFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy00OTYtXHRcdFx0ICAgICAgc2l6ZV90IGxlbilcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTUyMy1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NTI0OnN0YXRpYyBpbnQgdHJmNzk3MGFfd3JpdGUoc3RydWN0IHRyZjc5NzBhICp0cmYsIHU4IHJlZywgdTggdmFsKVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy01MjUte1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNTM4LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo1Mzk6c3RhdGljIGludCB0cmY3OTcwYV9yZWFkX2lycXN0YXR1cyhzdHJ1Y3QgdHJmNzk3MGEgKnRyZiwgdTggKnN0YXR1cylcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNTQwLXtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTU2Mi1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NTYzOnN0YXRpYyBpbnQgdHJmNzk3MGFfdXBkYXRlX3J4X2dhaW5fcmVkdWN0aW9uKHN0cnVjdCB0cmY3OTcwYSAqdHJmKVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy01NjQte1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNTcwLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo1NzE6XHRyZXQgPSB0cmY3OTcwYV9yZWFkKHRyZiwgVFJGNzk3MEFfUlhfU1BFQ0lBTF9TRVRUSU5HUywgXHUwMDI2cmVnKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNTcyLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTU3Ni1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NTc3Olx0cmV0ID0gdHJmNzk3MGFfd3JpdGUodHJmLCBUUkY3OTcwQV9SWF9TUEVDSUFMX1NFVFRJTkdTLCByZWcpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy01NzgtXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy01ODEtXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjU4MjpzdGF0aWMgaW50IHRyZjc5NzBhX3VwZGF0ZV9pc29fY3RybF9yZWdpc3RlcihzdHJ1Y3QgdHJmNzk3MGEgKnRyZiwgdTggaXNvX2N0cmwpXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTU4My17XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy01ODUtXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjU4NjpcdHJldCA9IHRyZjc5NzBhX3dyaXRlKHRyZiwgVFJGNzk3MEFfSVNPX0NUUkwsIGlzb19jdHJsKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNTg3LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTU5Mi1cdCAqL1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo1OTM6XHRyZXQgPSB0cmY3OTcwYV91cGRhdGVfcnhfZ2Fpbl9yZWR1Y3Rpb24odHJmKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNTk0LVxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNTk3LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo1OTg6c3RhdGljIGludCB0cmY3OTcwYV9yZWFkX3RhcmdldF9wcm90byhzdHJ1Y3QgdHJmNzk3MGEgKnRyZiwgdTggKnRhcmdldF9wcm90bylcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNTk5LXtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTYxNi1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NjE3OnN0YXRpYyBpbnQgdHJmNzk3MGFfbW9kZV9kZXRlY3Qoc3RydWN0IHRyZjc5NzBhICp0cmYsIHU4ICpyZl90ZWNoKVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02MTgte1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNjIxLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo2MjI6XHRyZXQgPSB0cmY3OTcwYV9yZWFkX3RhcmdldF9wcm90byh0cmYsIFx1MDAyNnRhcmdldF9wcm90byk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTYyMy1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02NDktXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjY1MDpzdGF0aWMgdm9pZCB0cmY3OTcwYV9zZW5kX3Vwc3RyZWFtKHN0cnVjdCB0cmY3OTcwYSAqdHJmKVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02NTEte1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNjU1LVx0aWYgKHRyZi1cdTAwM2VyeF9za2IgXHUwMDI2XHUwMDI2ICFJU19FUlIodHJmLVx1MDAzZXJ4X3NrYikgXHUwMDI2XHUwMDI2ICF0cmYtXHUwMDNlYWJvcnRpbmcpXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjY1NjpcdFx0cHJpbnRfaGV4X2R1bXBfZGVidWcoXCYjMzQ7dHJmNzk3MGEgcnggZGF0YTogXCYjMzQ7LCBEVU1QX1BSRUZJWF9OT05FLFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02NTctXHRcdFx0XHQgICAgIDE2LCAxLCB0cmYtXHUwMDNlcnhfc2tiLVx1MDAzZWRhdGEsIHRyZi1cdTAwM2VyeF9za2ItXHUwMDNlbGVuLFxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNjc3LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo2Nzg6c3RhdGljIHZvaWQgdHJmNzk3MGFfc2VuZF9lcnJfdXBzdHJlYW0oc3RydWN0IHRyZjc5NzBhICp0cmYsIGludCBlcnJubylcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNjc5LXtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTY4Ni1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6Njg3Olx0dHJmNzk3MGFfc2VuZF91cHN0cmVhbSh0cmYpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02ODgtfVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02ODktXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjY5MDpzdGF0aWMgaW50IHRyZjc5NzBhX3RyYW5zbWl0KHN0cnVjdCB0cmY3OTcwYSAqdHJmLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02OTEtXHRcdFx0ICAgICB1bnNpZ25lZCBpbnQgbGVuLCBjb25zdCB1OCAqcHJlZml4LFxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNjk4LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo2OTk6XHRwcmludF9oZXhfZHVtcF9kZWJ1ZyhcJiMzNDt0cmY3OTcwYSB0eCBkYXRhOiBcJiMzNDssIERVTVBfUFJFRklYX05PTkUsXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTcwMC1cdFx0XHQgICAgIDE2LCAxLCBza2ItXHUwMDNlZGF0YSwgbGVuLCBmYWxzZSk7XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy03NDctXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjc0ODpzdGF0aWMgdm9pZCB0cmY3OTcwYV9maWxsX2ZpZm8oc3RydWN0IHRyZjc5NzBhICp0cmYpXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTc0OS17XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy03NTUtXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjc1NjpcdHJldCA9IHRyZjc5NzBhX3JlYWQodHJmLCBUUkY3OTcwQV9GSUZPX1NUQVRVUywgXHUwMDI2Zmlmb19ieXRlcyk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTc1Ny1cdGlmIChyZXQpIHtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NzU4Olx0XHR0cmY3OTcwYV9zZW5kX2Vycl91cHN0cmVhbSh0cmYsIHJldCk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTc1OS1cdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNzc3LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo3Nzg6XHRyZXQgPSB0cmY3OTcwYV90cmFuc21pdCh0cmYsIHNrYiwgbGVuLCBcdTAwMjZwcmVmaXgsIHNpemVvZihwcmVmaXgpKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNzc5LVx0aWYgKHJldClcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NzgwOlx0XHR0cmY3OTcwYV9zZW5kX2Vycl91cHN0cmVhbSh0cmYsIHJldCk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTc4MS19XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTc4Mi1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NzgzOnN0YXRpYyB2b2lkIHRyZjc5NzBhX2RyYWluX2ZpZm8oc3RydWN0IHRyZjc5NzBhICp0cmYsIHU4IHN0YXR1cylcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNzg0LXtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTc4OS1cdGlmIChzdGF0dXMgXHUwMDI2IFRSRjc5NzBBX0lSUV9TVEFUVVNfRVJST1IpIHtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NzkwOlx0XHR0cmY3OTcwYV9zZW5kX2Vycl91cHN0cmVhbSh0cmYsIC1FSU8pO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy03OTEtXHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTc5My1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6Nzk0Olx0cmV0ID0gdHJmNzk3MGFfcmVhZCh0cmYsIFRSRjc5NzBBX0ZJRk9fU1RBVFVTLCBcdTAwMjZmaWZvX2J5dGVzKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNzk1LVx0aWYgKHJldCkge1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo3OTY6XHRcdHRyZjc5NzBhX3NlbmRfZXJyX3Vwc3RyZWFtKHRyZiwgcmV0KTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNzk3LVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy04MTItXHRcdGlmICghc2tiKSB7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjgxMzpcdFx0XHR0cmY3OTcwYV9zZW5kX2Vycl91cHN0cmVhbSh0cmYsIC1FTk9NRU0pO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy04MTQtXHRcdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtODIwLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo4MjE6XHRyZXQgPSB0cmY3OTcwYV9yZWFkX2NvbnQodHJmLCBUUkY3OTcwQV9GSUZPX0lPX1JFR0lTVEVSLFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy04MjItXHRcdFx0XHQgc2tiX3B1dChza2IsIGZpZm9fYnl0ZXMpLCBmaWZvX2J5dGVzKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtODIzLVx0aWYgKHJldCkge1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo4MjQ6XHRcdHRyZjc5NzBhX3NlbmRfZXJyX3Vwc3RyZWFtKHRyZiwgcmV0KTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtODI1LVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy04MzUtXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjgzNjpcdFx0cmV0ID0gdHJmNzk3MGFfcmVhZCh0cmYsIFRSRjc5NzBBX0ZJRk9fU1RBVFVTLCBcdTAwMjZmaWZvX2J5dGVzKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtODM3LVx0XHRpZiAocmV0KSB7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjgzODpcdFx0XHR0cmY3OTcwYV9zZW5kX2Vycl91cHN0cmVhbSh0cmYsIHJldCk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTgzOS1cdFx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy04NDUtXHRcdCAqIHRoZSBpZiBzdG10IGJlbG93IGRvZXNuJiMzOTt0IGZpcmUgYW5kIHRoZSBkcml2ZXIgd2lsbCB3YWl0XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjg0NjpcdFx0ICogZm9yIHRoZSB0cmY3OTcwYSB0byBnZW5lcmF0ZSBhbm90aGVyIFJYIGludGVycnVwdC5cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtODQ3LVx0XHQgKi9cbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTg1My1cdGlmIChzdGF0dXMgPT0gVFJGNzk3MEFfSVJRX1NUQVRVU19TUlgpIHtcdC8qIFJlY2VpdmUgY29tcGxldGUgKi9cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6ODU0Olx0XHR0cmY3OTcwYV9zZW5kX3Vwc3RyZWFtKHRyZik7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTg1NS1cdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtODY0LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo4NjU6c3RhdGljIGlycXJldHVybl90IHRyZjc5NzBhX2lycShpbnQgaXJxLCB2b2lkICpkZXZfaWQpXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTg2Ni17XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjg2NzpcdHN0cnVjdCB0cmY3OTcwYSAqdHJmID0gZGV2X2lkO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy04NjgtXHRpbnQgcmV0O1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtODc3LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo4Nzg6XHRyZXQgPSB0cmY3OTcwYV9yZWFkX2lycXN0YXR1cyh0cmYsIFx1MDAyNnN0YXR1cyk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTg3OS1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTg5Ni1cdFx0ICogdHVybiBvZmYgdGhlIHJlY2VpdmVyIHRvIGF2b2lkIHVubmVjZXNzYXJ5IGludGVycnVwdHMuXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjg5NzpcdFx0ICogSXQgd2lsbCBiZSB0dXJuZWQgYmFjayBvbiBpbiB0cmY3OTcwYV9zZW5kX2NtZCgpIHdoZW5cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtODk4LVx0XHQgKiB0aGUgbmV4dCBjb21tYW5kIGlzIGlzc3VlZC5cbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTkwMC1cdFx0aWYgKHRyZi1cdTAwM2Vpc19pbml0aWF0b3IgXHUwMDI2XHUwMDI2IChzdGF0dXMgXHUwMDI2IFRSRjc5NzBBX0lSUV9TVEFUVVNfRVJST1IpKSB7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjkwMTpcdFx0XHR0cmY3OTcwYV9jbWQodHJmLCBUUkY3OTcwQV9DTURfQkxPQ0tfUlgpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05MDItXHRcdFx0dHJmLVx1MDAzZXN0YXRlID0gVFJGNzk3MEFfU1RfSURMRV9SWF9CTE9DS0VEO1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTA0LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo5MDU6XHRcdHRyZjc5NzBhX2NtZCh0cmYsIFRSRjc5NzBBX0NNRF9GSUZPX1JFU0VUKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTA2LVx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTkxMC1cdFx0XHQgICAgIWNhbmNlbF9kZWxheWVkX3dvcmsoXHUwMDI2dHJmLVx1MDAzZXRpbWVvdXRfd29yayk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjkxMTpcdFx0XHR0cmY3OTcwYV9maWxsX2ZpZm8odHJmKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTEyLVx0XHR9IGVsc2Uge1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo5MTM6XHRcdFx0dHJmNzk3MGFfc2VuZF9lcnJfdXBzdHJlYW0odHJmLCAtRUlPKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTE0LVx0XHR9XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05MjAtXHRcdFx0ICAgICFjYW5jZWxfZGVsYXllZF93b3JrKFx1MDAyNnRyZi1cdTAwM2V0aW1lb3V0X3dvcmspO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo5MjE6XHRcdFx0dHJmNzk3MGFfZHJhaW5fZmlmbyh0cmYsIHN0YXR1cyk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTkyMi1cdFx0fSBlbHNlIGlmIChzdGF0dXMgXHUwMDI2IFRSRjc5NzBBX0lSUV9TVEFUVVNfRklGTykge1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo5MjM6XHRcdFx0cmV0ID0gdHJmNzk3MGFfcmVhZCh0cmYsIFRSRjc5NzBBX0ZJRk9fU1RBVFVTLFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05MjQtXHRcdFx0XHRcdCAgICBcdTAwMjZmaWZvX2J5dGVzKTtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTkyOC1cdFx0XHRpZiAocmV0KVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo5Mjk6XHRcdFx0XHR0cmY3OTcwYV9zZW5kX2Vycl91cHN0cmVhbSh0cmYsIHJldCk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTkzMC1cdFx0XHRlbHNlIGlmICghZmlmb19ieXRlcylcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6OTMxOlx0XHRcdFx0dHJmNzk3MGFfY21kKHRyZiwgVFJGNzk3MEFfQ01EX0ZJRk9fUkVTRVQpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05MzItXHRcdH0gZWxzZSBpZiAoKHN0YXR1cyA9PSBUUkY3OTcwQV9JUlFfU1RBVFVTX1RYKSB8fFxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTM1LVx0XHRcdFx0XHRUUkY3OTcwQV9JUlFfU1RBVFVTX05GQ19SRikpKSkge1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo5MzY6XHRcdFx0dHJmNzk3MGFfY21kKHRyZiwgVFJGNzk3MEFfQ01EX0ZJRk9fUkVTRVQpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05MzctXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05NDEtXHRcdFx0XHR0cmYtXHUwMDNlcnhfc2tiID0gTlVMTDtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6OTQyOlx0XHRcdFx0dHJmNzk3MGFfc2VuZF91cHN0cmVhbSh0cmYpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05NDMtXHRcdFx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTk2Mi1cdFx0XHRjYXNlIE5GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDQV9BTlRJQ09MX0NPTVBMRVRFOlxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo5NjM6XHRcdFx0XHRyZXQgPSB0cmY3OTcwYV93cml0ZSh0cmYsXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTk2NC1cdFx0XHRcdFx0IFRSRjc5NzBBX1NQRUNJQUxfRkNOX1JFRzEsXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05NzYtXHRcdFx0aWYgKGlzb19jdHJsICE9IHRyZi1cdTAwM2Vpc29fY3RybCkge1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo5Nzc6XHRcdFx0XHRyZXQgPSB0cmY3OTcwYV91cGRhdGVfaXNvX2N0cmxfcmVnaXN0ZXIodHJmLCBpc29fY3RybCk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTk3OC1cdFx0XHRcdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05ODMtXHRcdH0gZWxzZSB7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjk4NDpcdFx0XHR0cmY3OTcwYV9zZW5kX2Vycl91cHN0cmVhbSh0cmYsIC1FSU8pO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05ODUtXHRcdH1cbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTk4OC1cdFx0aWYgKHN0YXR1cyAhPSBUUkY3OTcwQV9JUlFfU1RBVFVTX1RYKVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo5ODk6XHRcdFx0dHJmNzk3MGFfc2VuZF9lcnJfdXBzdHJlYW0odHJmLCAtRUlPKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTkwLVx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTk5NC1cdFx0XHQgICAgIWNhbmNlbF9kZWxheWVkX3dvcmsoXHUwMDI2dHJmLVx1MDAzZXRpbWVvdXRfd29yayk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjk5NTpcdFx0XHR0cmY3OTcwYV9kcmFpbl9maWZvKHRyZiwgc3RhdHVzKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTk2LVx0XHR9IGVsc2UgaWYgKCEoc3RhdHVzIFx1MDAyNiBUUkY3OTcwQV9JUlFfU1RBVFVTX05GQ19SRikpIHtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6OTk3Olx0XHRcdHRyZjc5NzBhX3NlbmRfZXJyX3Vwc3RyZWFtKHRyZiwgLUVJTyk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTk5OC1cdFx0fVxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTAwNC1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTAwNTpcdFx0XHRyZXQgPSB0cmY3OTcwYV9tb2RlX2RldGVjdCh0cmYsIFx1MDAyNnRyZi1cdTAwM2VtZF9yZl90ZWNoKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTAwNi1cdFx0XHRpZiAocmV0KSB7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEwMDc6XHRcdFx0XHR0cmY3OTcwYV9zZW5kX2Vycl91cHN0cmVhbSh0cmYsIHJldCk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwMDgtXHRcdFx0fSBlbHNlIHtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTAwOS1cdFx0XHRcdHRyZi1cdTAwM2VzdGF0ZSA9IFRSRjc5NzBBX1NUX0xJU1RFTklORztcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTAxMDpcdFx0XHRcdHRyZjc5NzBhX2RyYWluX2ZpZm8odHJmLCBzdGF0dXMpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDExLVx0XHRcdH1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTAxMi1cdFx0fSBlbHNlIGlmICghKHN0YXR1cyBcdTAwMjYgVFJGNzk3MEFfSVJRX1NUQVRVU19ORkNfUkYpKSB7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEwMTM6XHRcdFx0dHJmNzk3MGFfc2VuZF9lcnJfdXBzdHJlYW0odHJmLCAtRUlPKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTAxNC1cdFx0fVxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTAyNS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTAyNjpzdGF0aWMgdm9pZCB0cmY3OTcwYV9pc3N1ZV9lb2Yoc3RydWN0IHRyZjc5NzBhICp0cmYpXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwMjcte1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTAzMS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTAzMjpcdHJldCA9IHRyZjc5NzBhX2NtZCh0cmYsIFRSRjc5NzBBX0NNRF9GSUZPX1JFU0VUKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTAzMy1cdGlmIChyZXQpXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEwMzQ6XHRcdHRyZjc5NzBhX3NlbmRfZXJyX3Vwc3RyZWFtKHRyZiwgcmV0KTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTAzNS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTAzNjpcdHJldCA9IHRyZjc5NzBhX2NtZCh0cmYsIFRSRjc5NzBBX0NNRF9FT0YpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDM3LVx0aWYgKHJldClcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTAzODpcdFx0dHJmNzk3MGFfc2VuZF9lcnJfdXBzdHJlYW0odHJmLCByZXQpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDM5LVxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTA0OC1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTA0OTpzdGF0aWMgdm9pZCB0cmY3OTcwYV90aW1lb3V0X3dvcmtfaGFuZGxlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwNTAte1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMDUxOlx0c3RydWN0IHRyZjc5NzBhICp0cmYgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IHRyZjc5NzBhLFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDUyLVx0XHRcdFx0XHQgICAgdGltZW91dF93b3JrLndvcmspO1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTA2MS1cdGVsc2UgaWYgKHRyZi1cdTAwM2VzdGF0ZSA9PSBUUkY3OTcwQV9TVF9XQUlUX0ZPUl9SWF9EQVRBX0NPTlQpXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEwNjI6XHRcdHRyZjc5NzBhX2RyYWluX2ZpZm8odHJmLCBUUkY3OTcwQV9JUlFfU1RBVFVTX1NSWCk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwNjMtXHRlbHNlIGlmICh0cmYtXHUwMDNlc3RhdGUgPT0gVFJGNzk3MEFfU1RfV0FJVF9UT19JU1NVRV9FT0YpXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEwNjQ6XHRcdHRyZjc5NzBhX2lzc3VlX2VvZih0cmYpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDY1LVx0ZWxzZVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMDY2Olx0XHR0cmY3OTcwYV9zZW5kX2Vycl91cHN0cmVhbSh0cmYsIC1FVElNRURPVVQpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDY3LVxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTA3MC1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTA3MTpzdGF0aWMgaW50IHRyZjc5NzBhX2luaXQoc3RydWN0IHRyZjc5NzBhICp0cmYpXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwNzIte1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTA3Ni1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTA3NzpcdHJldCA9IHRyZjc5NzBhX2NtZCh0cmYsIFRSRjc5NzBBX0NNRF9TT0ZUX0lOSVQpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDc4LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwODEtXHQvKiBTZXQgdGhlIGdhaW4gcmVkdWN0aW9uIGFmdGVyIHNvZnQgaW5pdCAqL1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMDgyOlx0cmV0ID0gdHJmNzk3MGFfdXBkYXRlX3J4X2dhaW5fcmVkdWN0aW9uKHRyZik7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwODMtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTA4NS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTA4NjpcdHJldCA9IHRyZjc5NzBhX2NtZCh0cmYsIFRSRjc5NzBBX0NNRF9JRExFKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTA4Ny1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDg5LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMDkwOlx0cmV0ID0gdHJmNzk3MGFfd3JpdGUodHJmLCBUUkY3OTcwQV9SRUdfSU9fQ1RSTCxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTA5MS1cdFx0XHQgICAgIHRyZi1cdTAwM2Vpb19jdHJsIHwgVFJGNzk3MEFfUkVHX0lPX0NUUkxfVlJTKDB4MSkpO1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTA5NC1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTA5NTpcdHJldCA9IHRyZjc5NzBhX3dyaXRlKHRyZiwgVFJGNzk3MEFfTkZDX1RBUkdFVF9MRVZFTCwgMCk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwOTYtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTEwMi1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTEwMzpcdHJldCA9IHRyZjc5NzBhX3dyaXRlKHRyZiwgVFJGNzk3MEFfTU9EVUxBVE9SX1NZU19DTEtfQ1RSTCxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTEwNC1cdFx0XHQgICAgIHRyZi1cdTAwM2Vtb2R1bGF0b3Jfc3lzX2Nsa19jdHJsKTtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExMDctXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjExMDg6XHRyZXQgPSB0cmY3OTcwYV93cml0ZSh0cmYsIFRSRjc5NzBBX0FESlVUQUJMRV9GSUZPX0lSUV9MRVZFTFMsXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExMDktXHRcdFx0ICAgICBUUkY3OTcwQV9BREpVVEFCTEVfRklGT19JUlFfTEVWRUxTX1dMSF85NiB8XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMTEzLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMTE0Olx0cmV0ID0gdHJmNzk3MGFfd3JpdGUodHJmLCBUUkY3OTcwQV9TUEVDSUFMX0ZDTl9SRUcxLCAwKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTExNS1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMTI3LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMTI4OnN0YXRpYyB2b2lkIHRyZjc5NzBhX3N3aXRjaF9yZl9vZmYoc3RydWN0IHRyZjc5NzBhICp0cmYpXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExMjkte1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTEzNy1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTEzODpcdHRyZjc5NzBhX3dyaXRlKHRyZiwgVFJGNzk3MEFfQ0hJUF9TVEFUVVNfQ1RSTCwgdHJmLVx1MDAzZWNoaXBfc3RhdHVzX2N0cmwpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMTM5LVxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTE0Ni1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTE0NzpzdGF0aWMgaW50IHRyZjc5NzBhX3N3aXRjaF9yZl9vbihzdHJ1Y3QgdHJmNzk3MGEgKnRyZilcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTE0OC17XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMTYwLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMTYxOlx0cmV0ID0gdHJmNzk3MGFfaW5pdCh0cmYpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMTYyLVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTE3MS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTE3MjpzdGF0aWMgaW50IHRyZjc5NzBhX3N3aXRjaF9yZihzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCBib29sIG9uKVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMTczLXtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTE3NDpcdHN0cnVjdCB0cmY3OTcwYSAqdHJmID0gbmZjX2RpZ2l0YWxfZ2V0X2RydmRhdGEoZGRldik7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExNzUtXHRpbnQgcmV0ID0gMDtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExODQtXHRcdGNhc2UgVFJGNzk3MEFfU1RfUkZfT0ZGOlxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMTg1Olx0XHRcdHJldCA9IHRyZjc5NzBhX3N3aXRjaF9yZl9vbih0cmYpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMTg2LVx0XHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTE5Mi1cdFx0XHRcdF9fZnVuY19fLCB0cmYtXHUwMDNlc3RhdGUsIG9uKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTE5MzpcdFx0XHR0cmY3OTcwYV9zd2l0Y2hfcmZfb2ZmKHRyZik7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExOTQtXHRcdFx0cmV0ID0gLUVJTlZBTDtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEyMDktXHRcdGNhc2UgVFJGNzk3MEFfU1RfV0FJVF9GT1JfUlhfREFUQV9DT05UOlxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMjEwOlx0XHRcdHRyZjc5NzBhX3N3aXRjaF9yZl9vZmYodHJmKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTIxMS1cdFx0fVxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTIxNy1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTIxODpzdGF0aWMgaW50IHRyZjc5NzBhX2luX2NvbmZpZ19yZl90ZWNoKHN0cnVjdCB0cmY3OTcwYSAqdHJmLCBpbnQgdGVjaClcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTIxOS17XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMjY4LVx0ICogUFNMIHNlcXVlbmNlIChpbmRpY2F0ZWQgYnkgJiMzOTt0cmYtXHUwMDNlaXNvX2N0cmwgPT0gMHhmZiYjMzk7IGZyb21cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTI2OTpcdCAqIHRyZjc5NzBhX2luaXQoKSksIGNsZWFyIHRoZSBORkMgVGFyZ2V0IERldGVjdGlvbiBMZXZlbCByZWdpc3RlclxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMjcwLVx0ICogZHVlIHRvIGVycmF0dW0uXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMjcyLVx0aWYgKHRyZi1cdTAwM2Vpc29fY3RybCA9PSAweGZmKVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMjczOlx0XHRyZXQgPSB0cmY3OTcwYV93cml0ZSh0cmYsIFRSRjc5NzBBX05GQ19UQVJHRVRfTEVWRUwsIDApO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMjc0LVxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTI3Ny1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTI3ODpzdGF0aWMgaW50IHRyZjc5NzBhX2lzX3JmX2ZpZWxkKHN0cnVjdCB0cmY3OTcwYSAqdHJmLCBib29sICppc19yZl9maWVsZClcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTI3OS17XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMjgyLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMjgzOlx0cmV0ID0gdHJmNzk3MGFfd3JpdGUodHJmLCBUUkY3OTcwQV9DSElQX1NUQVRVU19DVFJMLFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMjg0LVx0XHRcdCAgICAgdHJmLVx1MDAzZWNoaXBfc3RhdHVzX2N0cmwgfFxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTI4OC1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTI4OTpcdHJldCA9IHRyZjc5NzBhX2NtZCh0cmYsIFRSRjc5NzBBX0NNRF9URVNUX0VYVF9SRik7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEyOTAtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTI5NC1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTI5NTpcdHJldCA9IHRyZjc5NzBhX3JlYWQodHJmLCBUUkY3OTcwQV9SU1NJX09TQ19TVEFUVVMsIFx1MDAyNnJzc2kpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMjk2LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEyOTgtXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEyOTk6XHRyZXQgPSB0cmY3OTcwYV93cml0ZSh0cmYsIFRSRjc5NzBBX0NISVBfU1RBVFVTX0NUUkwsXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEzMDAtXHRcdFx0ICAgICB0cmYtXHUwMDNlY2hpcF9zdGF0dXNfY3RybCk7XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMzExLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMzEyOnN0YXRpYyBpbnQgdHJmNzk3MGFfaW5fY29uZmlnX2ZyYW1pbmcoc3RydWN0IHRyZjc5NzBhICp0cmYsIGludCBmcmFtaW5nKVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMzEzLXtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEzNTAtXHRpZiAoISh0cmYtXHUwMDNlY2hpcF9zdGF0dXNfY3RybCBcdTAwMjYgVFJGNzk3MEFfQ0hJUF9TVEFUVVNfUkZfT04pKSB7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEzNTE6XHRcdHJldCA9IHRyZjc5NzBhX2lzX3JmX2ZpZWxkKHRyZiwgXHUwMDI2aXNfcmZfZmllbGQpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMzUyLVx0XHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTM1OS1cdGlmIChpc29fY3RybCAhPSB0cmYtXHUwMDNlaXNvX2N0cmwpIHtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTM2MDpcdFx0cmV0ID0gdHJmNzk3MGFfdXBkYXRlX2lzb19jdHJsX3JlZ2lzdGVyKHRyZiwgaXNvX2N0cmwpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMzYxLVx0XHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTM2NS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTM2NjpcdFx0cmV0ID0gdHJmNzk3MGFfd3JpdGUodHJmLCBUUkY3OTcwQV9NT0RVTEFUT1JfU1lTX0NMS19DVFJMLFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMzY3LVx0XHRcdFx0ICAgICB0cmYtXHUwMDNlbW9kdWxhdG9yX3N5c19jbGtfY3RybCk7XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMzcyLVx0aWYgKCEodHJmLVx1MDAzZWNoaXBfc3RhdHVzX2N0cmwgXHUwMDI2IFRSRjc5NzBBX0NISVBfU1RBVFVTX1JGX09OKSkge1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMzczOlx0XHRyZXQgPSB0cmY3OTcwYV93cml0ZSh0cmYsIFRSRjc5NzBBX0NISVBfU1RBVFVTX0NUUkwsXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEzNzQtXHRcdFx0XHQgICAgIHRyZi1cdTAwM2VjaGlwX3N0YXR1c19jdHJsIHxcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEzODYtXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEzODc6c3RhdGljIGludCB0cmY3OTcwYV9pbl9jb25maWd1cmVfaHcoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgaW50IHR5cGUsXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEzODgtXHRcdFx0XHQgICAgaW50IHBhcmFtKVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMzg5LXtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTM5MDpcdHN0cnVjdCB0cmY3OTcwYSAqdHJmID0gbmZjX2RpZ2l0YWxfZ2V0X2RydmRhdGEoZGRldik7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEzOTEtXHRpbnQgcmV0O1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTQwMC1cdCAgICAodHJmLVx1MDAzZXN0YXRlID09IFRSRjc5NzBBX1NUX1JGX09GRikpIHtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTQwMTpcdFx0cmV0ID0gdHJmNzk3MGFfc3dpdGNoX3JmX29uKHRyZik7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE0MDItXHRcdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNDA3LVx0Y2FzZSBORkNfRElHSVRBTF9DT05GSUdfUkZfVEVDSDpcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTQwODpcdFx0cmV0ID0gdHJmNzk3MGFfaW5fY29uZmlnX3JmX3RlY2godHJmLCBwYXJhbSk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE0MDktXHRcdGJyZWFrO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNDEwLVx0Y2FzZSBORkNfRElHSVRBTF9DT05GSUdfRlJBTUlORzpcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTQxMTpcdFx0cmV0ID0gdHJmNzk3MGFfaW5fY29uZmlnX2ZyYW1pbmcodHJmLCBwYXJhbSk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE0MTItXHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTQyMi1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTQyMzpzdGF0aWMgaW50IHRyZjc5NzBhX2lzX2lzbzE1NjkzX3dyaXRlX29yX2xvY2sodTggY21kKVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNDI0LXtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE0MzgtXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE0Mzk6c3RhdGljIGludCB0cmY3OTcwYV9wZXJfY21kX2NvbmZpZyhzdHJ1Y3QgdHJmNzk3MGEgKnRyZixcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTQ0MC1cdFx0XHRcdCAgIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IpXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNDY0LVx0XHRpZiAoc3BlY2lhbF9mY25fcmVnMSAhPSB0cmYtXHUwMDNlc3BlY2lhbF9mY25fcmVnMSkge1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNDY1Olx0XHRcdHJldCA9IHRyZjc5NzBhX3dyaXRlKHRyZiwgVFJGNzk3MEFfU1BFQ0lBTF9GQ05fUkVHMSxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTQ2Ni1cdFx0XHRcdFx0ICAgICBzcGVjaWFsX2Zjbl9yZWcxKTtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE0OTEtXHRcdGlmIChpc29fY3RybCAhPSB0cmYtXHUwMDNlaXNvX2N0cmwpIHtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTQ5MjpcdFx0XHRyZXQgPSB0cmY3OTcwYV91cGRhdGVfaXNvX2N0cmxfcmVnaXN0ZXIodHJmLCBpc29fY3RybCk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE0OTMtXHRcdFx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE0OTktXHRcdGlmICgodHJmLVx1MDAzZWZyYW1pbmcgPT0gTkZDX0RJR0lUQUxfRlJBTUlOR19JU08xNTY5M19UNVQpIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNTAwOlx0XHQgICAgdHJmNzk3MGFfaXNfaXNvMTU2OTNfd3JpdGVfb3JfbG9jayhyZXFbMV0pIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNTAxLVx0XHQgICAgKHJlcVswXSBcdTAwMjYgSVNPMTU2OTNfUkVRX0ZMQUdfT1BUSU9OKSlcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE1MDctXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE1MDg6c3RhdGljIGludCB0cmY3OTcwYV9zZW5kX2NtZChzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNTA5LVx0XHRcdCAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTE2IHRpbWVvdXQsXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNTExLXtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTUxMjpcdHN0cnVjdCB0cmY3OTcwYSAqdHJmID0gbmZjX2RpZ2l0YWxfZ2V0X2RydmRhdGEoZGRldik7XG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTMgMDU6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzc1OTYKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiA2NTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBSZWFjaGFiaWxpdHkgb2YgVFJGNzk3MEEgRHJpdmVyIGZvciBGdXp6aW5nKioKCk9rYXksIHNvIHRoZSBgdHJmNzk3MGFgIGRyaXZlciBpcyBsb2NhdGVkIGluIGBhcmNoL2FybS9ib290L2R0cy9ueHAvaW14L2lteDZkbC1wcnRydnQuZHRzYC4gSW1tZWRpYXRlbHksIEkgc2VlIHNvbWUga2V5IHJlcXVpcmVtZW50czogaXQgbmVlZHMgYW4gYHNwaS0mZ3Q7ZGV2Lm9mX25vZGVgIERldmljZSBUcmVlIGVudHJ5IChgbnBgKSBmb3IgcHJvcGVyIGluaXRpYWxpemF0aW9uLCBHUElPIHBpbnMgKHNwZWNpZmljYWxseSBgdGksZW5hYmxlYCksIGFuZCBhIHJlZ3VsYXRvciBgdmluYC4gSXQmIzM5O3MgYW4gU1BJIGRldmljZSwgc3BlY2lmaWNhbGx5IGZvciB0aGUgVGV4YXMgSW5zdHJ1bWVudHMgVFJGNzk3MGEgTkZDIHRyYW5zY2VpdmVyIGNoaXAuCgpOb3cgdGhlIGNyaXRpY2FsIHF1ZXN0aW9uOiBjYW4gdGhpcyBldmVyIGJlIHJlYWNoZWQgZm9yIGZ1enppbmcsIGdpdmVuIHRoZSB0YXJnZXQgZW52aXJvbm1lbnQgaXMgYW1kNjQsIHR5cGljYWxseSBpbiBRRU1VIG9yIEdDRT8gVGhlIGluc3RydWN0aW9ucyBlbXBoYXNpemUgcmVhY2hhYmlsaXR5LiBTZWN0aW9uIDEgYW5kIDIgbWFrZSB0aGlzIHZlcnkgY2xlYXI6IGFueSBmdXp6aW5nIGhhcyB0byBiZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIFVucmVhY2hhYmxlIGhhcmR3YXJlIG1lYW5zICpubyogZnV6emluZy4gSSBuZWVkIHRvIGJlIGFic29sdXRlbHkgc3VyZSB0aGlzIGlzIHJlYWNoYWJsZS4KClRoZSBkcml2ZXIgcmVxdWlyZXMgRGV2aWNlIFRyZWUgaW5mb3JtYXRpb24gYW5kIHNwZWNpZmljIGhhcmR3YXJlIGZlYXR1cmVzLCB3aGljaCBpcyBjb25jZXJuaW5nLiBUaGUgdGV4dCBsaXN0cyBzZXZlcmFsIGV4YW1wbGVzIG9mIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBjb2RlLCBpbmNsdWRpbmcgdmVuZG9yLXNwZWNpZmljIFBDSWUgZGV2aWNlcyBhbmQgZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyB0aGF0IGFyZSB0cmlnZ2VyZWQgYnkgaG90LXVucGx1ZyBvciBtYW51YWwgdW5iaW5kaW5nLiBUaGlzIGluc3RhbnRseSBtYWtlcyBtZSB0aGluayBvZiBTUEkgZGV2aWNlcyBhbmQgc3BlY2lmaWMgaGFyZHdhcmUgZGVwZW5kZW5jaWVzLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiBTUEkgaXMgZW11bGF0ZWQgaW4gYSB3YXkgdGhhdCB3b3VsZCBhbGxvdyB0aGUgZnV6emluZyB0byB3b3JrLCBvciBpZiBpdCBjb3VudHMgYXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLiBEb2VzIFFFTVUgb3Igc3l6a2FsbGVyIGhhdmUgKmFueSogd2F5IHRvIGluc3RhbnRpYXRlIGEgVFJGNzk3MEEgU1BJIGRldmljZT8KCk15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGNoZWNrIGlmIHN5emthbGxlciBldmVuIHN1cHBvcnRzIFNQSSBkZXZpY2VzLiBJdCBoYXMgcHNldWRvLXN5c2NhbGxzIGZvciB0aGluZ3MgbGlrZSBVU0IsIG5ldGxpbmssIGFuZCB2aG9zdCwgYnV0IGRvZXMgaXQgaGF2ZSBgc3l6X3NwaV8qYCBjYWxscz8gSWYgaXQgZG9lcywgdGhhdCYjMzk7cyBhIGdvb2Qgc2lnbi4gSG93ZXZlciwgSSBjYW4mIzM5O3QgaW1tZWRpYXRlbHkgdXNlIHN5ei1ncmVwcGVyIG9uIHN5emthbGxlciBkZXNjcmlwdGlvbnMsIEkmIzM5O2QgbmVlZCB0aGUgdG9vbHMgdG8gYmUgcHJlc2VudCBhbmQgYWNjZXNzaWJsZSwgc28gdGhlIG5leHQgYmVzdCBhcHByb2FjaCBpcyB0byBjaGVjayB0aGUga2VybmVsIGl0c2VsZiBhbmQgc3l6Ym90IGZvciBTUEkgc3VwcG9ydC4gSSYjMzk7bSBnb2luZyB0byBncmVwIHRoZSBgZHJpdmVycy9zcGlgIGRpcmVjdG9yeSBmb3IgdGVybXMgbGlrZSAmIzM0O21vY2smIzM0OyBvciBhICYjMzQ7dmlydHVhbCBidXMmIzM0Oy4gTWF5YmUgdGhlcmUmIzM5O3MgYSBtZWNoYW5pc20gaW4gcGxhY2UgdG8gZW11bGF0ZSBTUEkgZGV2aWNlcyBmb3IgdGVzdGluZz8gSWYgbm90LCB0aGlzIGxvb2tzIGxpa2UgYSBkZWFkIGVuZCBmb3IgZnV6emluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTMgMDU6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5jb2Rlc2VhcmNoLWRpci1pbmRleDwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RGlyJiMzNDs6ICYjMzQ7ZHJpdmVycy9zcGkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZXMmIzM0OzogWwogICAgJiMzNDthdG1lbC1xdWFkc3BpLmMmIzM0OywKICAgICYjMzQ7aW50ZXJuYWxzLmgmIzM0OywKICAgICYjMzQ7c3BpLWFpcm9oYS1zbmZpLmMmIzM0OywKICAgICYjMzQ7c3BpLWFsdGVyYS1jb3JlLmMmIzM0OywKICAgICYjMzQ7c3BpLWFsdGVyYS1kZmwuYyYjMzQ7LAogICAgJiMzNDtzcGktYWx0ZXJhLXBsYXRmb3JtLmMmIzM0OywKICAgICYjMzQ7c3BpLWFtZC1wY2kuYyYjMzQ7LAogICAgJiMzNDtzcGktYW1kLmMmIzM0OywKICAgICYjMzQ7c3BpLWFtZC5oJiMzNDssCiAgICAmIzM0O3NwaS1hbWxvZ2ljLXNwaWZjLWExLmMmIzM0OywKICAgICYjMzQ7c3BpLWFtbG9naWMtc3BpZmMtYTQuYyYjMzQ7LAogICAgJiMzNDtzcGktYW1sb2dpYy1zcGlzZy5jJiMzNDssCiAgICAmIzM0O3NwaS1hcHBsZS5jJiMzNDssCiAgICAmIzM0O3NwaS1hcjkzNHguYyYjMzQ7LAogICAgJiMzNDtzcGktYXJtYWRhLTM3MDAuYyYjMzQ7LAogICAgJiMzNDtzcGktYXNwZWVkLXNtYy5jJiMzNDssCiAgICAmIzM0O3NwaS1hdDkxLXVzYXJ0LmMmIzM0OywKICAgICYjMzQ7c3BpLWF0Y3NwaTIwMC5jJiMzNDssCiAgICAmIzM0O3NwaS1hdGg3OS5jJiMzNDssCiAgICAmIzM0O3NwaS1hdG1lbC5jJiMzNDssCiAgICAmIzM0O3NwaS1hdTE1NTAuYyYjMzQ7LAogICAgJiMzNDtzcGktYXhpLXNwaS1lbmdpbmUuYyYjMzQ7LAogICAgJiMzNDtzcGktYXhpYWRvLmMmIzM0OywKICAgICYjMzQ7c3BpLWF4aWFkby5oJiMzNDssCiAgICAmIzM0O3NwaS1iY20tcXNwaS5jJiMzNDssCiAgICAmIzM0O3NwaS1iY20tcXNwaS5oJiMzNDssCiAgICAmIzM0O3NwaS1iY20yODM1LmMmIzM0OywKICAgICYjMzQ7c3BpLWJjbTI4MzVhdXguYyYjMzQ7LAogICAgJiMzNDtzcGktYmNtNjN4eC1oc3NwaS5jJiMzNDssCiAgICAmIzM0O3NwaS1iY202M3h4LmMmIzM0OywKICAgICYjMzQ7c3BpLWJjbWJjYS1oc3NwaS5jJiMzNDssCiAgICAmIzM0O3NwaS1iaXRiYW5nLXR4cnguaCYjMzQ7LAogICAgJiMzNDtzcGktYml0YmFuZy5jJiMzNDssCiAgICAmIzM0O3NwaS1icmNtc3RiLXFzcGkuYyYjMzQ7LAogICAgJiMzNDtzcGktYnV0dGVyZmx5LmMmIzM0OywKICAgICYjMzQ7c3BpLWNhZGVuY2UtcXVhZHNwaS5jJiMzNDssCiAgICAmIzM0O3NwaS1jYWRlbmNlLXhzcGkuYyYjMzQ7LAogICAgJiMzNDtzcGktY2FkZW5jZS5jJiMzNDssCiAgICAmIzM0O3NwaS1jYXZpdW0tb2N0ZW9uLmMmIzM0OywKICAgICYjMzQ7c3BpLWNhdml1bS10aHVuZGVyeC5jJiMzNDssCiAgICAmIzM0O3NwaS1jYXZpdW0uYyYjMzQ7LAogICAgJiMzNDtzcGktY2F2aXVtLmgmIzM0OywKICAgICYjMzQ7c3BpLWNoMzQxLmMmIzM0OywKICAgICYjMzQ7c3BpLWNscHM3MTF4LmMmIzM0OywKICAgICYjMzQ7c3BpLWNvbGRmaXJlLXFzcGkuYyYjMzQ7LAogICAgJiMzNDtzcGktY3M0Mmw0My5jJiMzNDssCiAgICAmIzM0O3NwaS1kYXZpbmNpLmMmIzM0OywKICAgICYjMzQ7c3BpLWRsbjIuYyYjMzQ7LAogICAgJiMzNDtzcGktZHctY29yZS5jJiMzNDssCiAgICAmIzM0O3NwaS1kdy1kbWEuYyYjMzQ7LAogICAgJiMzNDtzcGktZHctbW1pby5jJiMzNDssCiAgICAmIzM0O3NwaS1kdy1wY2kuYyYjMzQ7LAogICAgJiMzNDtzcGktZHcuaCYjMzQ7LAogICAgJiMzNDtzcGktZXA5M3h4LmMmIzM0OywKICAgICYjMzQ7c3BpLWZhbGNvbi5jJiMzNDssCiAgICAmIzM0O3NwaS1mc2kuYyYjMzQ7LAogICAgJiMzNDtzcGktZnNsLWNwbS5jJiMzNDssCiAgICAmIzM0O3NwaS1mc2wtY3BtLmgmIzM0OywKICAgICYjMzQ7c3BpLWZzbC1kc3BpLmMmIzM0OywKICAgICYjMzQ7c3BpLWZzbC1lc3BpLmMmIzM0OywKICAgICYjMzQ7c3BpLWZzbC1saWIuYyYjMzQ7LAogICAgJiMzNDtzcGktZnNsLWxpYi5oJiMzNDssCiAgICAmIzM0O3NwaS1mc2wtbHBzcGkuYyYjMzQ7LAogICAgJiMzNDtzcGktZnNsLXFzcGkuYyYjMzQ7LAogICAgJiMzNDtzcGktZnNsLXNwaS5jJiMzNDssCiAgICAmIzM0O3NwaS1mc2wtc3BpLmgmIzM0OywKICAgICYjMzQ7c3BpLWdlbmktcWNvbS5jJiMzNDssCiAgICAmIzM0O3NwaS1ncGlvLmMmIzM0OywKICAgICYjMzQ7c3BpLWd4cC5jJiMzNDssCiAgICAmIzM0O3NwaS1oaXNpLWt1bnBlbmcuYyYjMzQ7LAogICAgJiMzNDtzcGktaGlzaS1zZmMtdjN4eC5jJiMzNDssCiAgICAmIzM0O3NwaS1pbWctc3BmaS5jJiMzNDssCiAgICAmIzM0O3NwaS1pbXguYyYjMzQ7LAogICAgJiMzNDtzcGktaW5nZW5pYy5jJiMzNDssCiAgICAmIzM0O3NwaS1pbnRlbC1wY2kuYyYjMzQ7LAogICAgJiMzNDtzcGktaW50ZWwtcGxhdGZvcm0uYyYjMzQ7LAogICAgJiMzNDtzcGktaW50ZWwuYyYjMzQ7LAogICAgJiMzNDtzcGktaW50ZWwuaCYjMzQ7LAogICAgJiMzNDtzcGktaXByb2MtcXNwaS5jJiMzNDssCiAgICAmIzM0O3NwaS1qY29yZS5jJiMzNDssCiAgICAmIzM0O3NwaS1rc3BpMi5jJiMzNDssCiAgICAmIzM0O3NwaS1sYW50aXEtc3NjLmMmIzM0OywKICAgICYjMzQ7c3BpLWxqY2EuYyYjMzQ7LAogICAgJiMzNDtzcGktbG03MGxscC5jJiMzNDssCiAgICAmIzM0O3NwaS1sb29uZ3Nvbi1jb3JlLmMmIzM0OywKICAgICYjMzQ7c3BpLWxvb25nc29uLXBjaS5jJiMzNDssCiAgICAmIzM0O3NwaS1sb29uZ3Nvbi1wbGF0LmMmIzM0OywKICAgICYjMzQ7c3BpLWxvb25nc29uLmgmIzM0OywKICAgICYjMzQ7c3BpLWxvb3BiYWNrLXRlc3QuYyYjMzQ7LAogICAgJiMzNDtzcGktbHA4ODQxLXJ0Yy5jJiMzNDssCiAgICAmIzM0O3NwaS1tYTM1ZDEtcXNwaS5jJiMzNDssCiAgICAmIzM0O3NwaS1tZW0uYyYjMzQ7LAogICAgJiMzNDtzcGktbWVzb24tc3BpY2MuYyYjMzQ7LAogICAgJiMzNDtzcGktbWVzb24tc3BpZmMuYyYjMzQ7LAogICAgJiMzNDtzcGktbWljcm9jaGlwLWNvcmUtcXNwaS5jJiMzNDssCiAgICAmIzM0O3NwaS1taWNyb2NoaXAtY29yZS1zcGkuYyYjMzQ7LAogICAgJiMzNDtzcGktbXBjNTEyeC1wc2MuYyYjMzQ7LAogICAgJiMzNDtzcGktbXBjNTJ4eC1wc2MuYyYjMzQ7LAogICAgJiMzNDtzcGktbXBjNTJ4eC5jJiMzNDssCiAgICAmIzM0O3NwaS1tcGZzLmMmIzM0OywKICAgICYjMzQ7c3BpLW10NjV4eC5jJiMzNDssCiAgICAmIzM0O3NwaS1tdDc2MjEuYyYjMzQ7LAogICAgJiMzNDtzcGktbXRrLW5vci5jJiMzNDssCiAgICAmIzM0O3NwaS1tdGstc25maS5jJiMzNDssCiAgICAmIzM0O3NwaS1tdXguYyYjMzQ7LAogICAgJiMzNDtzcGktbXhpYy5jJiMzNDssCiAgICAmIzM0O3NwaS1teHMuYyYjMzQ7LAogICAgJiMzNDtzcGktbnBjbS1maXUuYyYjMzQ7LAogICAgJiMzNDtzcGktbnBjbS1wc3BpLmMmIzM0OywKICAgICYjMzQ7c3BpLW54cC1mc3BpLmMmIzM0OywKICAgICYjMzQ7c3BpLW54cC14c3BpLmMmIzM0OywKICAgICYjMzQ7c3BpLW9jLXRpbnkuYyYjMzQ7LAogICAgJiMzNDtzcGktb2ZmbG9hZC10cmlnZ2VyLWFkaS11dGlsLXNpZ21hLWRlbHRhLmMmIzM0OywKICAgICYjMzQ7c3BpLW9mZmxvYWQtdHJpZ2dlci1wd20uYyYjMzQ7LAogICAgJiMzNDtzcGktb2ZmbG9hZC5jJiMzNDssCiAgICAmIzM0O3NwaS1vbWFwLXV3aXJlLmMmIzM0OywKICAgICYjMzQ7c3BpLW9tYXAyLW1jc3BpLmMmIzM0OywKICAgICYjMzQ7c3BpLW9yaW9uLmMmIzM0OywKICAgICYjMzQ7c3BpLXBjaTF4eHh4LmMmIzM0OywKICAgICYjMzQ7c3BpLXBpYzMyLXNxaS5jJiMzNDssCiAgICAmIzM0O3NwaS1waWMzMi5jJiMzNDssCiAgICAmIzM0O3NwaS1wbDAyMi5jJiMzNDssCiAgICAmIzM0O3NwaS1wcGM0eHguYyYjMzQ7LAogICAgJiMzNDtzcGktcHhhMnh4LWRtYS5jJiMzNDssCiAgICAmIzM0O3NwaS1weGEyeHgtcGNpLmMmIzM0OywKICAgICYjMzQ7c3BpLXB4YTJ4eC1wbGF0Zm9ybS5jJiMzNDssCiAgICAmIzM0O3NwaS1weGEyeHguYyYjMzQ7LAogICAgJiMzNDtzcGktcHhhMnh4LmgmIzM0OywKICAgICYjMzQ7c3BpLXFjb20tcXNwaS5jJiMzNDssCiAgICAmIzM0O3NwaS1xcGljLXNuYW5kLmMmIzM0OywKICAgICYjMzQ7c3BpLXF1cC5jJiMzNDssCiAgICAmIzM0O3NwaS1yYjR4eC5jJiMzNDssCiAgICAmIzM0O3NwaS1yZWFsdGVrLXJ0bC1zbmFuZC5jJiMzNDssCiAgICAmIzM0O3NwaS1yZWFsdGVrLXJ0bC5jJiMzNDssCiAgICAmIzM0O3NwaS1yb2NrY2hpcC1zZmMuYyYjMzQ7LAogICAgJiMzNDtzcGktcm9ja2NoaXAuYyYjMzQ7LAogICAgJiMzNDtzcGktcnBjLWlmLmMmIzM0OywKICAgICYjMzQ7c3BpLXJzcGkuYyYjMzQ7LAogICAgJiMzNDtzcGktcnp2MmgtcnNwaS5jJiMzNDssCiAgICAmIzM0O3NwaS1yenYybS1jc2kuYyYjMzQ7LAogICAgJiMzNDtzcGktczNjNjR4eC5jJiMzNDssCiAgICAmIzM0O3NwaS1zYzE4aXM2MDIuYyYjMzQ7LAogICAgJiMzNDtzcGktc2cyMDQ0LW5vci5jJiMzNDssCiAgICAmIzM0O3NwaS1zaC1oc3BpLmMmIzM0OywKICAgICYjMzQ7c3BpLXNoLW1zaW9mLmMmIzM0OywKICAgICYjMzQ7c3BpLXNoLXNjaS5jJiMzNDssCiAgICAmIzM0O3NwaS1zaC5jJiMzNDssCiAgICAmIzM0O3NwaS1zaWZpdmUuYyYjMzQ7LAogICAgJiMzNDtzcGktc2xhdmUtbXQyN3h4LmMmIzM0OywKICAgICYjMzQ7c3BpLXNsYXZlLXN5c3RlbS1jb250cm9sLmMmIzM0OywKICAgICYjMzQ7c3BpLXNsYXZlLXRpbWUuYyYjMzQ7LAogICAgJiMzNDtzcGktc24tZi1vc3BpLmMmIzM0OywKICAgICYjMzQ7c3BpLXNwYWNlbWl0LWsxLmMmIzM0OywKICAgICYjMzQ7c3BpLXNwcmQtYWRpLmMmIzM0OywKICAgICYjMzQ7c3BpLXNwcmQuYyYjMzQ7LAogICAgJiMzNDtzcGktc3Qtc3NjNC5jJiMzNDssCiAgICAmIzM0O3NwaS1zdG0zMi1vc3BpLmMmIzM0OywKICAgICYjMzQ7c3BpLXN0bTMyLXFzcGkuYyYjMzQ7LAogICAgJiMzNDtzcGktc3RtMzIuYyYjMzQ7LAogICAgJiMzNDtzcGktc3VuNGkuYyYjMzQ7LAogICAgJiMzNDtzcGktc3VuNmkuYyYjMzQ7LAogICAgJiMzNDtzcGktc3VucGx1cy1zcDcwMjEuYyYjMzQ7LAogICAgJiMzNDtzcGktc3lucXVhY2VyLmMmIzM0OywKICAgICYjMzQ7c3BpLXRlZ3JhMTE0LmMmIzM0OywKICAgICYjMzQ7c3BpLXRlZ3JhMjAtc2ZsYXNoLmMmIzM0OywKICAgICYjMzQ7c3BpLXRlZ3JhMjAtc2xpbmsuYyYjMzQ7LAogICAgJiMzNDtzcGktdGVncmEyMTAtcXVhZC5jJiMzNDssCiAgICAmIzM0O3NwaS10ZXN0LmgmIzM0OywKICAgICYjMzQ7c3BpLXRpLXFzcGkuYyYjMzQ7LAogICAgJiMzNDtzcGktdGxlNjJ4MC5jJiMzNDssCiAgICAmIzM0O3NwaS10b3BjbGlmZi1wY2guYyYjMzQ7LAogICAgJiMzNDtzcGktdW5pcGhpZXIuYyYjMzQ7LAogICAgJiMzNDtzcGktdmlydGlvLmMmIzM0OywKICAgICYjMzQ7c3BpLXdwY20tZml1LmMmIzM0OywKICAgICYjMzQ7c3BpLXhjb21tLmMmIzM0OywKICAgICYjMzQ7c3BpLXhpbGlueC5jJiMzNDssCiAgICAmIzM0O3NwaS14bHAuYyYjMzQ7LAogICAgJiMzNDtzcGkteHRlbnNhLXh0ZnBnYS5jJiMzNDssCiAgICAmIzM0O3NwaS16eW5xLXFzcGkuYyYjMzQ7LAogICAgJiMzNDtzcGktenlucW1wLWdxc3BpLmMmIzM0OywKICAgICYjMzQ7c3BpLmMmIzM0OywKICAgICYjMzQ7c3BpZGV2LmMmIzM0OwogIF0sCiAgJiMzNDtTdWJkaXJzJiMzNDs6IFsKICAgICYjMzQ7dGVzdHMmIzM0OwogIF0KfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMyAwNToxNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MDg0NAoJCQkJCQkJb3V0cHV0OiAxNTYKCQkJCQkJCXRob3VnaHRzOiAxMzMxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5c2lzIG9mIFRSRjc5NzBBIERyaXZlciBSZWFjaGFiaWxpdHkgZm9yIEZ1enppbmcqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gV2UmIzM5O3JlIGxvb2tpbmcgYXQgdGhlIGB0cmY3OTcwYWAgZHJpdmVyLCBzcGVjaWZpY2FsbHkgdGhlIGB0cmY3OTcwYV9wcm9iZWAgZnVuY3Rpb24uIFRoZSBjb2RlIGltbWVkaWF0ZWx5IGZsYWdzIGEgRGV2aWNlIFRyZWUgZGVwZW5kZW5jeSAoYHNwaS0mZ3Q7ZGV2Lm9mX25vZGVgIG11c3QgYmUgbm9uLU5VTEwpLiAgVGhpcyBpcyB0aGUgZmlyc3QgcmVkIGZsYWcsIGFzIHRoaXMgaW1wbGllcyBhIHNwZWNpZmljIGhhcmR3YXJlIGNvbmZpZ3VyYXRpb24gZGVmaW5lZCBpbiB0aGUgRGV2aWNlIFRyZWUuICBGdXJ0aGVyIGRvd24sIGl0IGNhbGxzIGZvciBhIEdQSU8gZW5hYmxlIGxpbmUgKGB0aSxlbmFibGVgKSBhbmQgYSB2b2x0YWdlIHJlZ3VsYXRvciAoJiMzNDt2aW4mIzM0OykuIFRoaXMgaW1wbGllcyBwaHlzaWNhbCBoYXJkd2FyZSBpbnRlcmFjdGlvbiwgYW5kIHRoZSByZWxpYW5jZSBvbiBEZXZpY2UgVHJlZSBjb25maWd1cmF0aW9uIHRlbGxzIHVzIHRoaXMgaXNuJiMzOTt0IGEgdmlydHVhbCBkZXZpY2UuCgpUaGUgdGFyZ2V0IGlzIEFNRDY0LCB3aGljaCBpcyBpbXBvcnRhbnQuIEFNRDY0IHR5cGljYWxseSB1c2VzIEFDUEksIG5vdCBEZXZpY2UgVHJlZSwgc28gaW1tZWRpYXRlbHkgdGhpcyBpcyBhIHByb2JsZW0uICBXZSYjMzk7cmUgdGFsa2luZyBhYm91dCBhICpwaHlzaWNhbCogTkZDIHRyYW5zY2VpdmVyIEFTSUMg4oCTIHRoZSBUUkY3OTcwQSDigJMgY29ubmVjdGVkIHZpYSBhbiBTUEkgYnVzLiAgVGhlc2UgY2hpcHMgYXJlIGNvbW1vbmx5IGZvdW5kIGluIGVtYmVkZGVkIHN5c3RlbXMsIHdoaWNoIHRlbmQgdG8gYmUgQVJNLWJhc2VkLCBzdWNoIGFzIHRoZSBpLk1YNiBhcyBzaG93biBpbiBzb21lIGtlcm5lbCBEVFMgZmlsZXMuIFRoZSBpbXBsaWNhdGlvbiBpcyB0aGF0IHdlIHJlcXVpcmUgYSBwaHlzaWNhbCBjaGlwIG9uIGFuIFNQSSBidXMgYW5kIGEgbWF0Y2hpbmcgRGV2aWNlIFRyZWUgY29uZmlndXJhdGlvbiwgdGhhdCBpcyBhIHBoeXNpY2FsIHRhcmdldC4KClFFTVUsIEdDRSwgYW5kIG90aGVyIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAqZG8gbm90KiBlbXVsYXRlIHRoaXMgY2hpcC4gVGhleSBhbHNvIGRvbiYjMzk7dCB0eXBpY2FsbHkgaGF2ZSBkZXZpY2UgdHJlZSBub2RlcyBmb3IgVFJGNzk3MEEuIEV2ZW4gaWYgd2UgKmNvdWxkKiBjcmVhdGUgYW4gU1BJIGRldmljZSwgdGhlIGRyaXZlciYjMzk7cyBwcm9iZSBmdW5jdGlvbiBpdHNlbGYgcmV0dXJucyBhbiBlcnJvciBpZiBgbnBgIGlzIE5VTEwuIFRoZSBkcml2ZXIgaXNuJiMzOTt0IGp1c3QgZGlmZmljdWx0IHRvIHJlYWNoOyBpdCYjMzk7cyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuIFRoZSBndWlkZSBjbGVhcmx5IHNheXMgdGhhdCB1bnJlYWNoYWJsZSBjb2RlIHNob3VsZCBub3QgYmUgZnV6emVkLgoKTG9va2luZyBmdXJ0aGVyLCBgdHJmNzk3MGFfc3RhcnR1cGAgaXMgb25seSBldmVyIGNhbGxlZCBmcm9tIGB0cmY3OTcwYV9wcm9iZWAgKGR1cmluZyBpbml0aWFsIHNldHVwKSBhbmQgYHRyZjc5NzBhX3Jlc3VtZWAuIFNpbmNlIGB0cmY3OTcwYV9wcm9iZWAgcmVxdWlyZXMgdGhlIGRldmljZSB0cmVlLCB0aGUgZHJpdmVyJiMzOTtzIHByb2JlIGlzIG9ubHkgcmVhY2hhYmxlIHZpYSBEVCBjb25maWd1cmF0aW9uIHRoYXQgaXMgbmV2ZXIgcHJlc2VudCBvbiBzdGFuZGFyZCBhbWQ2NCBzeXN0ZW1zIGVtdWxhdGVkIGluIFFFTVUgb3IgR0NFLgoKVGh1cywgYmFzZWQgb24gdGhlIHJlYWNoYWJpbGl0eSBndWlkZWxpbmVzLCB0aGUgY2FsbCB0byBgdHJmNzk3MGFfc3RhcnR1cGAgYW5kIHRoZSBjb2RlIGluIGBkcml2ZXJzL25mYy90cmY3OTcwYS5jYCBhcmUgY29tcGxldGVseSB1bnJlYWNoYWJsZSBpbiBhIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnQgb24gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuICBUaGVyZWZvcmUsIGBXb3J0aEZ1enppbmdgIGlzIHVuZXF1aXZvY2FsbHkgYGZhbHNlYC4gVGhlIHJlYXNvbmluZyBpcyB0aGF0IHRoZSBkcml2ZXIgaXMgZGVzaWduZWQgZm9yIGEgc3BlY2lmaWMgcGllY2Ugb2YgcGh5c2ljYWwgaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgb3Igc2ltdWxhdGVkLCBhbmQgdGhlIGJ1cyBhbmQgY29uZmlndXJhdGlvbiBvZiB0aGUgZGV2aWNlIGlzIGluY29tcGF0aWJsZSB3aXRoIHRoZSB0YXJnZXQgcGxhdGZvcm0uIFRoZXJlIGFyZSBubyByZWxldmFudCBmb2N1cyBzeW1ib2xzIG9yIGVuYWJsZSBjb25maWd1cmF0aW9ucyBuZWVkZWQuIFRpbWUgdG8gc2V0IHRoZSByZXN1bHRzIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMyAwNToxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGVycm9yIGhhbmRsaW5nIGluIHRyZjc5NzBhX3N0YXJ0dXAoKSB3aXRoaW4gZHJpdmVycy9uZmMvdHJmNzk3MGEuYy4gVGhlIHRyZjc5NzBhIGRyaXZlciBpcyBhIGRlZGljYXRlZCBTUEkgZHJpdmVyIGZvciBUZXhhcyBJbnN0cnVtZW50cyBUUkY3OTcwQSBORkMgdHJhbnNjZWl2ZXIgY2hpcHMsIHJlbHlpbmcgc3RyaWN0bHkgb24gRGV2aWNlIFRyZWUgYmluZGluZ3MgKGZhaWxpbmcgcHJvYmUgaWYgc3BpLVx1MDAzZWRldi5vZl9ub2RlIGlzIGFic2VudCkgYWxvbmcgd2l0aCBkZWRpY2F0ZWQgR1BJT3MgYW5kIHJlZ3VsYXRvcnMuIFRoaXMgcGh5c2ljYWwgQVNJQyBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS9HQ0UgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIG9uIGFtZDY0LCByZW5kZXJpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBzeXprYWxsZXIgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGVycm9yIGhhbmRsaW5nIGluIHRyZjc5NzBhX3N0YXJ0dXAoKSB3aXRoaW4gZHJpdmVycy9uZmMvdHJmNzk3MGEuYy4gVGhlIHRyZjc5NzBhIGRyaXZlciBpcyBhIGRlZGljYXRlZCBTUEkgZHJpdmVyIGZvciBUZXhhcyBJbnN0cnVtZW50cyBUUkY3OTcwQSBORkMgdHJhbnNjZWl2ZXIgY2hpcHMsIHJlbHlpbmcgc3RyaWN0bHkgb24gRGV2aWNlIFRyZWUgYmluZGluZ3MgKGZhaWxpbmcgcHJvYmUgaWYgc3BpLVx1MDAzZWRldi5vZl9ub2RlIGlzIGFic2VudCkgYWxvbmcgd2l0aCBkZWRpY2F0ZWQgR1BJT3MgYW5kIHJlZ3VsYXRvcnMuIFRoaXMgcGh5c2ljYWwgQVNJQyBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS9HQ0UgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIG9uIGFtZDY0LCByZW5kZXJpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBzeXprYWxsZXIgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEzIDA1OjE3PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOS0xM1QwNToxNjo1My44MjI0MTA1NVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQyOTI2MjUwMjI2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgZXJyb3IgaGFuZGxpbmcgaW4gdHJmNzk3MGFfc3RhcnR1cCgpIHdpdGhpbiBkcml2ZXJzL25mYy90cmY3OTcwYS5jLiBUaGUgdHJmNzk3MGEgZHJpdmVyIGlzIGEgZGVkaWNhdGVkIFNQSSBkcml2ZXIgZm9yIFRleGFzIEluc3RydW1lbnRzIFRSRjc5NzBBIE5GQyB0cmFuc2NlaXZlciBjaGlwcywgcmVseWluZyBzdHJpY3RseSBvbiBEZXZpY2UgVHJlZSBiaW5kaW5ncyAoZmFpbGluZyBwcm9iZSBpZiBzcGktXFx1MDAzZWRldi5vZl9ub2RlIGlzIGFic2VudCkgYWxvbmcgd2l0aCBkZWRpY2F0ZWQgR1BJT3MgYW5kIHJlZ3VsYXRvcnMuIFRoaXMgcGh5c2ljYWwgQVNJQyBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS9HQ0UgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIG9uIGFtZDY0LCByZW5kZXJpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBzeXprYWxsZXIgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEzVDA1OjE2OjUzLjgyMjQxNTI3WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDUxOTEyNzg2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYWFhNGQ1YWFmY2Y3ZjNhMDE2OTM3ZDI4Njg2OGY3OWQ2OGJiZTMyNFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU3VuIFNlcCAxMyAwNToxNjo1MiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25mYy90cmY3OTcwYS5jIGIvZHJpdmVycy9uZmMvdHJmNzk3MGEuY1xcbmluZGV4IDYwODgzMDAxZmE1ZDkuLmRkZmM1OGMyOTk2NDkgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZmMvdHJmNzk3MGEuY1xcbisrKyBiL2RyaXZlcnMvbmZjL3RyZjc5NzBhLmNcXG5AQCAtMTk5Nyw4ICsxOTk3LDEwIEBAIHN0YXRpYyBpbnQgdHJmNzk3MGFfc3RhcnR1cChzdHJ1Y3QgdHJmNzk3MGEgKnRyZilcXG4gXFx0XFx0cmV0dXJuIHJldDtcXG4gXFxuIFxcdHJldCA9IHRyZjc5NzBhX3VwZGF0ZV9yeF9nYWluX3JlZHVjdGlvbih0cmYpO1xcbi1cXHRpZiAocmV0KVxcbitcXHRpZiAocmV0KSB7XFxuK1xcdFxcdHRyZjc5NzBhX3Bvd2VyX2Rvd24odHJmKTtcXG4gXFx0XFx0cmV0dXJuIHJldDtcXG4rXFx0fVxcbiBcXG4gXFx0cG1fcnVudGltZV9zZXRfYWN0aXZlKHRyZi1cXHUwMDNlZGV2KTtcXG4gXFx0cG1fcnVudGltZV9lbmFibGUodHJmLVxcdTAwM2VkZXYpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xM1QwNToxNjo1NS4yNzUxMzQ4MzZaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjQxNDczNTEyMzAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBlcnJvciBoYW5kbGluZyBpbiB0cmY3OTcwYV9zdGFydHVwKCkgd2l0aGluIGRyaXZlcnMvbmZjL3RyZjc5NzBhLmMuIFRoZSB0cmY3OTcwYSBkcml2ZXIgaXMgYSBkZWRpY2F0ZWQgU1BJIGRyaXZlciBmb3IgVGV4YXMgSW5zdHJ1bWVudHMgVFJGNzk3MEEgTkZDIHRyYW5zY2VpdmVyIGNoaXBzLCByZWx5aW5nIHN0cmljdGx5IG9uIERldmljZSBUcmVlIGJpbmRpbmdzIChmYWlsaW5nIHByb2JlIGlmIHNwaS1cXHUwMDNlZGV2Lm9mX25vZGUgaXMgYWJzZW50KSBhbG9uZyB3aXRoIGRlZGljYXRlZCBHUElPcyBhbmQgcmVndWxhdG9ycy4gVGhpcyBwaHlzaWNhbCBBU0lDIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL0dDRSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgb24gYW1kNjQsIHJlbmRlcmluZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIHN5emthbGxlciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzc1xudG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5UaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLFxuYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy5cblxuLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURTpcbiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZFxuICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLlxuICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsXG4gIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy5cblxuLSBETyBOT1QgQkxJTkRMWSBUUlVTVCBcIk5PIEZVTkNUSU9OQUwgQ0hBTkdFXCIgKE5GQ0kpIE9SIFwiUkVGQUNUT1JJTkdcIiBDTEFJTVM6XG4gIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgXCJjbGVhbnVwc1wiLCBcInJlZmFjdG9yaW5nc1wiLCBvciBzdGF0ZVxuICBcIk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkXCIuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLlxuICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnRcbiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuXG4gIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuXG5cbi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6XG4gIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKixcbiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuXG4gIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXJcbiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOlxuXG4tIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6XG4gICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLlxuICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKVxuICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cbiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50c1xuICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuXG4gICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLlxuLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6XG4gICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczpcbiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmdcbiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy5cbiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4zLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzpcbi0gQ29yZSBTdWJzeXN0ZW1zOlxuICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSxcbiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuXG4tIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczpcbiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuXG4tIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczpcbiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuXG4tIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6XG4gICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6XG5cbi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOlxuICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1c1xuICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdFxuICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS5cbiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzIFwiZm9jdXNlZFwiLFxuICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuXG5cbi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOlxuICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHNcbiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuXG5cbi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOlxuICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrXG4gIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLlxuICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXJcbiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlnc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6XG4tIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4tIENoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuXG4tIFN0cmlwIGFueSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBhYWE0ZDVhYWZjZjdmM2EwMTY5MzdkMjg2ODY4Zjc5ZDY4YmJlMzI0XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBTZXAgMTMgMDU6MTY6NTIgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25mYy90cmY3OTcwYS5jIGIvZHJpdmVycy9uZmMvdHJmNzk3MGEuY1xuaW5kZXggNjA4ODMwMDFmYTVkOS4uZGRmYzU4YzI5OTY0OSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmZjL3RyZjc5NzBhLmNcbisrKyBiL2RyaXZlcnMvbmZjL3RyZjc5NzBhLmNcbkBAIC0xOTk3LDggKzE5OTcsMTAgQEAgc3RhdGljIGludCB0cmY3OTcwYV9zdGFydHVwKHN0cnVjdCB0cmY3OTcwYSAqdHJmKVxuIFx0XHRyZXR1cm4gcmV0O1xuIFxuIFx0cmV0ID0gdHJmNzk3MGFfdXBkYXRlX3J4X2dhaW5fcmVkdWN0aW9uKHRyZik7XG4tXHRpZiAocmV0KVxuK1x0aWYgKHJldCkge1xuK1x0XHR0cmY3OTcwYV9wb3dlcl9kb3duKHRyZik7XG4gXHRcdHJldHVybiByZXQ7XG4rXHR9XG4gXG4gXHRwbV9ydW50aW1lX3NldF9hY3RpdmUodHJmLVx1MDAzZWRldik7XG4gXHRwbV9ydW50aW1lX2VuYWJsZSh0cmYtXHUwMDNlZGV2KTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEzVDA1OjE2OjU1LjI3NTEzNjA1NloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjQyMTQ3NTA2MDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgVFJGNzk3MEEgRHJpdmVyIFBhdGNoKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2guIFRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlIGlzIGFtZDY0LCB3aGljaCBpcyBnb29kIHRvIGtub3csIGJ1dCBkb2Vzbid0IHJlYWxseSBhZmZlY3QgdGhlIGNvZGUgY2hhbmdlIGl0c2VsZi4gSXQncyBhIGRpZmYgb24gYGRyaXZlcnMvbmZjL3RyZjc5NzBhLmNgLiBUaGUgY2hhbmdlIGlzIHN0cmFpZ2h0Zm9yd2FyZCwgYW5kIHRoZSBsaW5lIG51bWJlcnMgYXJlIHByZXR0eSBjbG9zZSwgc28gaXQncyBhIHNtYWxsLCB0YXJnZXRlZCB1cGRhdGUuXG5cblRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgbG9va3MgbGlrZSBhIHN1YnRsZSBidWcgZml4IG9yIGVuaGFuY2VtZW50IHRvIGVycm9yIGhhbmRsaW5nIHdpdGhpbiB0aGUgYHRyZjc5NzBhX3N0YXJ0dXBgIGZ1bmN0aW9uLiBTcGVjaWZpY2FsbHksIGl0IHNlZW1zIGxpa2UgdGhlIGB0cmY3OTcwYV91cGRhdGVfcnhfZ2Fpbl9yZWR1Y3Rpb25gIGZ1bmN0aW9uJ3MgcmV0dXJuIGNvZGUgd2Fzbid0IGJlaW5nIGZ1bGx5IGhhbmRsZWQuIE5vdywgaWYgYHRyZjc5NzBhX3VwZGF0ZV9yeF9nYWluX3JlZHVjdGlvbmAgcmV0dXJucyBhbiBlcnJvciAoYHJldGAgaXMgbm9uLXplcm8pLCB0aGUgcGF0Y2ggZW5zdXJlcyB0aGF0IHRoZSBgdHJmNzk3MGFfcG93ZXJfZG93bmAgZnVuY3Rpb24gaXMgY2FsbGVkICpiZWZvcmUqIHJldHVybmluZyBmcm9tIHRoZSBgdHJmNzk3MGFfc3RhcnR1cGAgZnVuY3Rpb24uIFRoaXMgaXMgYSBjcnVjaWFsIHNhZmV0eSBtZWFzdXJlOyBpdCdzIHRoZSByaWdodCB3YXkgdG8gZW5zdXJlIGNsZWFuIHNodXRkb3duIHdoZW4gYW4gZXJyb3Igb2NjdXJzLCBwcmV2ZW50aW5nIHBvdGVudGlhbCBpc3N1ZXMgd2l0aCB0aGUgaGFyZHdhcmUgc3RhdGUgb3IgcmVzb3VyY2UgbGVha3MuIFdpdGhvdXQgaXQsIHRoZSBkZXZpY2UgbWlnaHQgc3RheSBpbiBhbiB1bmRlZmluZWQgc3RhdGUsIHNvIHRoaXMgaXMgYSBncmVhdCBjYXRjaC5cblxuTm93LCBiZWZvcmUgSSBnaXZlIHRoaXMgcGF0Y2ggYSB0aHVtYnMtdXAsIEknbSBnb2luZyB0byBxdWlja2x5IGNoZWNrIGEgZmV3IHRoaW5ncy4gSSdsbCB1c2UgYGdyZXBgIChvciBwb3NzaWJseSBsb29rIGF0IHRoZSBmaWxlJ3Mgc3Vycm91bmRpbmcgY29kZSkgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dC4gSSB3YW50IHRvIHNlZSBob3cgYHRyZjc5NzBhLmNgIGlzIGNvbmZpZ3VyZWQgKEtjb25maWcpLCBhbnkgb3RoZXIgZnVuY3Rpb25zIGNhbGxpbmcgaXQsIGFuZCBhbHNvIHRoZSB1bmRlcmx5aW5nIGJ1cyB0eXBlIChTUEksIEkyQywgZXRjLikgdGhhdCB0aGUgZHJpdmVyIGludGVyYWN0cyB3aXRoLiBJIHdhbnQgdG8gbWFrZSBzdXJlIHRoZSBjaGFuZ2UgaXMgY29uc2lzdGVudCB3aXRoIHRoZSBvdmVyYWxsIGRyaXZlciBiZWhhdmlvciBhbmQgZG9lc24ndCBpbnRyb2R1Y2UgYW55IHJlZ3Jlc3Npb25zIG9yIHNpZGUgZWZmZWN0cy4gVGhpcyBzdGVwIHdpbGwgbGV0IG1lIHZlcmlmeSB0aGF0IHRoaXMgcG93ZXItZG93biBpcyBhbHNvIGFwcHJvcHJpYXRlIGZvciB0aGUgdW5kZXJseWluZyBidXMuIEdvb2QgaHlnaWVuZSBkZW1hbmRzIHRoaXMgc29ydCBvZiBiYXNpYyBkdWUgZGlsaWdlbmNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTEzLCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzE3LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTNUMDU6MTY6NTkuNDg5ODk2MDA1WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5NzczMzExLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInRyZjc5NzBhXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmZjXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNzg1IGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL25mYy9LY29uZmlnPTk9Y29uZmlnIE5GQ19UUkY3OTcwQVxcbi0tXFxuZHJpdmVycy9uZmMvS2NvbmZpZy0xOC1cXHQgIHNheSBNICB0byBjb21waWxlIGl0IGFzIGEgbW9kdWxlLiBUaGUgbW9kdWxlIHdpbGwgYmUgY2FsbGVkXFxuZHJpdmVycy9uZmMvS2NvbmZpZzoxOTpcXHQgIHRyZjc5NzBhLmtvLlxcbmRyaXZlcnMvbmZjL0tjb25maWctMjAtXFxuLS1cXG5kcml2ZXJzL25mYy9NYWtlZmlsZT0xMz1vYmotJChDT05GSUdfTkZDX01SVkwpXFx0XFx0Kz0gbmZjbXJ2bC9cXG5kcml2ZXJzL25mYy9NYWtlZmlsZToxNDpvYmotJChDT05GSUdfTkZDX1RSRjc5NzBBKVxcdCs9IHRyZjc5NzBhLm9cXG5kcml2ZXJzL25mYy9NYWtlZmlsZS0xNS1vYmotJChDT05GSUdfTkZDX1NUMjFORkNBKSAgXFx0Kz0gc3QyMW5mY2EvXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTI3LVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6Mjg6LyogVGhlcmUgYXJlIDMgd2F5cyB0aGUgaG9zdCBjYW4gY29tbXVuaWNhdGUgd2l0aCB0aGUgdHJmNzk3MGE6XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0yOS0gKiBwYXJhbGxlbCBtb2RlLCBTUEkgd2l0aCBTbGF2ZSBTZWxlY3QgKFNTKSBtb2RlLCBhbmQgU1BJIHdpdGhvdXRcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMzEtICpcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjMyOiAqIFRoZSB0cmY3OTcwYSBpcyB2ZXJ5IHRpbWluZyBzZW5zaXRpdmUgYW5kIHRoZSBWSU4sIEVOMiwgYW5kIEVOXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0zMy0gKiBwaW5zIG11c3QgYXNzZXJ0ZWQgaW4gdGhhdCBvcmRlciBhbmQgd2l0aCBzcGVjaWZpYyBkZWxheXMgaW4gYmV0d2Vlbi5cXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMzUtICogY29uZmlybWVkIHRvIHdvcmsgd2l0aCB0aGlzIGRyaXZlci4gIFRoZXJlIGlzIGEgYnVnIHdpdGggdGhlIGN1cnJlbnRcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjM2OiAqIHZlcnNpb24gb2YgdGhlIHRyZjc5NzBhIHRoYXQgcmVxdWlyZXMgdGhhdCBFTjIgcmVtYWluIGxvdyBubyBtYXR0ZXJcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTM3LSAqIHdoYXQuICBJZiBpdCBnb2VzIGhpZ2gsIGl0IHdpbGwgZ2VuZXJhdGUgYW4gUkYgZmllbGQgZXZlbiB3aGVuIGluXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTM5LSAqIHdoZW4gRU4yIGlzIGxlZnQgbG93LiAgVGhlICdlbjItcmYtcXVpcmsnIGRldmljZSB0cmVlIHByb3BlcnR5XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo0MDogKiBpbmRpY2F0ZXMgdGhhdCB0cmY3OTcwYSBjdXJyZW50bHkgYmVpbmcgdXNlZCBoYXMgdGhlIGVycmF0dW0gYW5kXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy00MS0gKiB0aGF0IEVOMiBtdXN0IGJlIGtlcHQgbG93Llxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy00NC0gKiBUaW1lb3V0cyBhcmUgcmVxdWlyZWQgc28gdGhpbmdzIGRvbid0IGhhbmcgd2hlbiB0aGVyZSBpcyBubyByZXNwb25zZVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NDU6ICogZnJvbSB0aGUgdHJmNzk3MGEgKG9yIHRhZykuICBVc2luZyB0aGlzIG1lY2hhbmlzbSBjcmVhdGVzIGEgcmFjZSB3aXRoXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy00Ni0gKiBpbnRlcnJ1cHRzLCBob3dldmVyLiAgVGhhdCBpcywgYW4gaW50ZXJydXB0IGFuZCBhIHRpbWVvdXQgY291bGQgb2NjdXJcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNjAtICogdGhlIGVudGlyZSBhbnRpY29sbGlzaW9uIHByb2NlZHVyZSBhZ2FpbiBidXQgdGhlIGRpZ2l0YWwgbGF5ZXIgZG9lc24ndFxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NjE6ICogc3VwcG9ydCB0aGF0LiAgU28sIGlmIGFuIGFib3J0IGlzIHJlY2VpdmVkIGJlZm9yZSB0cmY3OTcwYV9zZW5kX2NtZCgpXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02Mi0gKiBoYXMgc2VudCB0aGUgY29tbWFuZCB0byB0aGUgdGFnLCBpdCBzaW1wbHkgcmV0dXJucyAtRUNBTkNFTEVELiAgSWYgdGhlXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTk2LSAqIHdoZW4gdGhlIGZyYW1pbmcgaXMgJ05GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDQV9UMlQnLiAgVGhpcyBpcyBkb25lIGJ5XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo5NzogKiB0aGUgdHJmNzk3MGFfcGVyX2NtZF9jb25maWcoKSByb3V0aW5lLlxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTgtICpcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTQ0LS8qIFF1aXJrcyAqL1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTQ1Oi8qIEVycmF0dW06IFdoZW4gcmVhZGluZyBJUlEgU3RhdHVzIHJlZ2lzdGVyIG9uIHRyZjc5NzBhLCB3ZSBtdXN0IGlzc3VlIGFcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE0Ni0gKiByZWFkIGNvbnRpbnVvdXMgY29tbWFuZCBmb3IgSVJRIFN0YXR1cyBhbmQgQ29sbGlzaW9uIFBvc2l0aW9uIHJlZ2lzdGVycy5cXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNDE1LVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NDE2OmVudW0gdHJmNzk3MGFfc3RhdGUge1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNDE3LVxcdFRSRjc5NzBBX1NUX1BXUl9PRkYsXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTQyOS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjQzMDpzdHJ1Y3QgdHJmNzk3MGEge1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NDMxOlxcdGVudW0gdHJmNzk3MGFfc3RhdGVcXHRcXHRzdGF0ZTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTQzMi1cXHRzdHJ1Y3QgZGV2aWNlXFx0XFx0XFx0KmRldjtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNDY1LVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NDY2OnN0YXRpYyBpbnQgdHJmNzk3MGFfY21kKHN0cnVjdCB0cmY3OTcwYSAqdHJmLCB1OCBvcGNvZGUpXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy00Njcte1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy00NzktXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo0ODA6c3RhdGljIGludCB0cmY3OTcwYV9yZWFkKHN0cnVjdCB0cmY3OTcwYSAqdHJmLCB1OCByZWcsIHU4ICp2YWwpXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy00ODEte1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy00OTQtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo0OTU6c3RhdGljIGludCB0cmY3OTcwYV9yZWFkX2NvbnQoc3RydWN0IHRyZjc5NzBhICp0cmYsIHU4IHJlZywgdTggKmJ1ZixcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTQ5Ni1cXHRcXHRcXHQgICAgICBzaXplX3QgbGVuKVxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy01MjMtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo1MjQ6c3RhdGljIGludCB0cmY3OTcwYV93cml0ZShzdHJ1Y3QgdHJmNzk3MGEgKnRyZiwgdTggcmVnLCB1OCB2YWwpXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy01MjUte1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy01MzgtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo1Mzk6c3RhdGljIGludCB0cmY3OTcwYV9yZWFkX2lycXN0YXR1cyhzdHJ1Y3QgdHJmNzk3MGEgKnRyZiwgdTggKnN0YXR1cylcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTU0MC17XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTU2Mi1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjU2MzpzdGF0aWMgaW50IHRyZjc5NzBhX3VwZGF0ZV9yeF9nYWluX3JlZHVjdGlvbihzdHJ1Y3QgdHJmNzk3MGEgKnRyZilcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTU2NC17XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTU3MC1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjU3MTpcXHRyZXQgPSB0cmY3OTcwYV9yZWFkKHRyZiwgVFJGNzk3MEFfUlhfU1BFQ0lBTF9TRVRUSU5HUywgXFx1MDAyNnJlZyk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy01NzItXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNTc2LVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NTc3OlxcdHJldCA9IHRyZjc5NzBhX3dyaXRlKHRyZiwgVFJGNzk3MEFfUlhfU1BFQ0lBTF9TRVRUSU5HUywgcmVnKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTU3OC1cXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNTgxLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NTgyOnN0YXRpYyBpbnQgdHJmNzk3MGFfdXBkYXRlX2lzb19jdHJsX3JlZ2lzdGVyKHN0cnVjdCB0cmY3OTcwYSAqdHJmLCB1OCBpc29fY3RybClcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTU4My17XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTU4NS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjU4NjpcXHRyZXQgPSB0cmY3OTcwYV93cml0ZSh0cmYsIFRSRjc5NzBBX0lTT19DVFJMLCBpc29fY3RybCk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy01ODctXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNTkyLVxcdCAqL1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NTkzOlxcdHJldCA9IHRyZjc5NzBhX3VwZGF0ZV9yeF9nYWluX3JlZHVjdGlvbih0cmYpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNTk0LVxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy01OTctXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo1OTg6c3RhdGljIGludCB0cmY3OTcwYV9yZWFkX3RhcmdldF9wcm90byhzdHJ1Y3QgdHJmNzk3MGEgKnRyZiwgdTggKnRhcmdldF9wcm90bylcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTU5OS17XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTYxNi1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjYxNzpzdGF0aWMgaW50IHRyZjc5NzBhX21vZGVfZGV0ZWN0KHN0cnVjdCB0cmY3OTcwYSAqdHJmLCB1OCAqcmZfdGVjaClcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTYxOC17XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTYyMS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjYyMjpcXHRyZXQgPSB0cmY3OTcwYV9yZWFkX3RhcmdldF9wcm90byh0cmYsIFxcdTAwMjZ0YXJnZXRfcHJvdG8pO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNjIzLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTY0OS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjY1MDpzdGF0aWMgdm9pZCB0cmY3OTcwYV9zZW5kX3Vwc3RyZWFtKHN0cnVjdCB0cmY3OTcwYSAqdHJmKVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNjUxLXtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNjU1LVxcdGlmICh0cmYtXFx1MDAzZXJ4X3NrYiBcXHUwMDI2XFx1MDAyNiAhSVNfRVJSKHRyZi1cXHUwMDNlcnhfc2tiKSBcXHUwMDI2XFx1MDAyNiAhdHJmLVxcdTAwM2VhYm9ydGluZylcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjY1NjpcXHRcXHRwcmludF9oZXhfZHVtcF9kZWJ1ZyhcXFwidHJmNzk3MGEgcnggZGF0YTogXFxcIiwgRFVNUF9QUkVGSVhfTk9ORSxcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTY1Ny1cXHRcXHRcXHRcXHQgICAgIDE2LCAxLCB0cmYtXFx1MDAzZXJ4X3NrYi1cXHUwMDNlZGF0YSwgdHJmLVxcdTAwM2VyeF9za2ItXFx1MDAzZWxlbixcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNjc3LVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6Njc4OnN0YXRpYyB2b2lkIHRyZjc5NzBhX3NlbmRfZXJyX3Vwc3RyZWFtKHN0cnVjdCB0cmY3OTcwYSAqdHJmLCBpbnQgZXJybm8pXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02Nzkte1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02ODYtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo2ODc6XFx0dHJmNzk3MGFfc2VuZF91cHN0cmVhbSh0cmYpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNjg4LX1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTY4OS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjY5MDpzdGF0aWMgaW50IHRyZjc5NzBhX3RyYW5zbWl0KHN0cnVjdCB0cmY3OTcwYSAqdHJmLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNjkxLVxcdFxcdFxcdCAgICAgdW5zaWduZWQgaW50IGxlbiwgY29uc3QgdTggKnByZWZpeCxcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNjk4LVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6Njk5OlxcdHByaW50X2hleF9kdW1wX2RlYnVnKFxcXCJ0cmY3OTcwYSB0eCBkYXRhOiBcXFwiLCBEVU1QX1BSRUZJWF9OT05FLFxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNzAwLVxcdFxcdFxcdCAgICAgMTYsIDEsIHNrYi1cXHUwMDNlZGF0YSwgbGVuLCBmYWxzZSk7XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTc0Ny1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjc0ODpzdGF0aWMgdm9pZCB0cmY3OTcwYV9maWxsX2ZpZm8oc3RydWN0IHRyZjc5NzBhICp0cmYpXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy03NDkte1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy03NTUtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo3NTY6XFx0cmV0ID0gdHJmNzk3MGFfcmVhZCh0cmYsIFRSRjc5NzBBX0ZJRk9fU1RBVFVTLCBcXHUwMDI2Zmlmb19ieXRlcyk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy03NTctXFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NzU4OlxcdFxcdHRyZjc5NzBhX3NlbmRfZXJyX3Vwc3RyZWFtKHRyZiwgcmV0KTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTc1OS1cXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTc3Ny1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjc3ODpcXHRyZXQgPSB0cmY3OTcwYV90cmFuc21pdCh0cmYsIHNrYiwgbGVuLCBcXHUwMDI2cHJlZml4LCBzaXplb2YocHJlZml4KSk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy03NzktXFx0aWYgKHJldClcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjc4MDpcXHRcXHR0cmY3OTcwYV9zZW5kX2Vycl91cHN0cmVhbSh0cmYsIHJldCk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy03ODEtfVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNzgyLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NzgzOnN0YXRpYyB2b2lkIHRyZjc5NzBhX2RyYWluX2ZpZm8oc3RydWN0IHRyZjc5NzBhICp0cmYsIHU4IHN0YXR1cylcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTc4NC17XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTc4OS1cXHRpZiAoc3RhdHVzIFxcdTAwMjYgVFJGNzk3MEFfSVJRX1NUQVRVU19FUlJPUikge1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NzkwOlxcdFxcdHRyZjc5NzBhX3NlbmRfZXJyX3Vwc3RyZWFtKHRyZiwgLUVJTyk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy03OTEtXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy03OTMtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo3OTQ6XFx0cmV0ID0gdHJmNzk3MGFfcmVhZCh0cmYsIFRSRjc5NzBBX0ZJRk9fU1RBVFVTLCBcXHUwMDI2Zmlmb19ieXRlcyk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy03OTUtXFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6Nzk2OlxcdFxcdHRyZjc5NzBhX3NlbmRfZXJyX3Vwc3RyZWFtKHRyZiwgcmV0KTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTc5Ny1cXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTgxMi1cXHRcXHRpZiAoIXNrYikge1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6ODEzOlxcdFxcdFxcdHRyZjc5NzBhX3NlbmRfZXJyX3Vwc3RyZWFtKHRyZiwgLUVOT01FTSk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy04MTQtXFx0XFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy04MjAtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo4MjE6XFx0cmV0ID0gdHJmNzk3MGFfcmVhZF9jb250KHRyZiwgVFJGNzk3MEFfRklGT19JT19SRUdJU1RFUixcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTgyMi1cXHRcXHRcXHRcXHQgc2tiX3B1dChza2IsIGZpZm9fYnl0ZXMpLCBmaWZvX2J5dGVzKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTgyMy1cXHRpZiAocmV0KSB7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo4MjQ6XFx0XFx0dHJmNzk3MGFfc2VuZF9lcnJfdXBzdHJlYW0odHJmLCByZXQpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtODI1LVxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtODM1LVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6ODM2OlxcdFxcdHJldCA9IHRyZjc5NzBhX3JlYWQodHJmLCBUUkY3OTcwQV9GSUZPX1NUQVRVUywgXFx1MDAyNmZpZm9fYnl0ZXMpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtODM3LVxcdFxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjgzODpcXHRcXHRcXHR0cmY3OTcwYV9zZW5kX2Vycl91cHN0cmVhbSh0cmYsIHJldCk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy04MzktXFx0XFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy04NDUtXFx0XFx0ICogdGhlIGlmIHN0bXQgYmVsb3cgZG9lc24ndCBmaXJlIGFuZCB0aGUgZHJpdmVyIHdpbGwgd2FpdFxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6ODQ2OlxcdFxcdCAqIGZvciB0aGUgdHJmNzk3MGEgdG8gZ2VuZXJhdGUgYW5vdGhlciBSWCBpbnRlcnJ1cHQuXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy04NDctXFx0XFx0ICovXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTg1My1cXHRpZiAoc3RhdHVzID09IFRSRjc5NzBBX0lSUV9TVEFUVVNfU1JYKSB7XFx0LyogUmVjZWl2ZSBjb21wbGV0ZSAqL1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6ODU0OlxcdFxcdHRyZjc5NzBhX3NlbmRfdXBzdHJlYW0odHJmKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTg1NS1cXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTg2NC1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjg2NTpzdGF0aWMgaXJxcmV0dXJuX3QgdHJmNzk3MGFfaXJxKGludCBpcnEsIHZvaWQgKmRldl9pZClcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTg2Ni17XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo4Njc6XFx0c3RydWN0IHRyZjc5NzBhICp0cmYgPSBkZXZfaWQ7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy04NjgtXFx0aW50IHJldDtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtODc3LVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6ODc4OlxcdHJldCA9IHRyZjc5NzBhX3JlYWRfaXJxc3RhdHVzKHRyZiwgXFx1MDAyNnN0YXR1cyk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy04NzktXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy04OTYtXFx0XFx0ICogdHVybiBvZmYgdGhlIHJlY2VpdmVyIHRvIGF2b2lkIHVubmVjZXNzYXJ5IGludGVycnVwdHMuXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo4OTc6XFx0XFx0ICogSXQgd2lsbCBiZSB0dXJuZWQgYmFjayBvbiBpbiB0cmY3OTcwYV9zZW5kX2NtZCgpIHdoZW5cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTg5OC1cXHRcXHQgKiB0aGUgbmV4dCBjb21tYW5kIGlzIGlzc3VlZC5cXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTAwLVxcdFxcdGlmICh0cmYtXFx1MDAzZWlzX2luaXRpYXRvciBcXHUwMDI2XFx1MDAyNiAoc3RhdHVzIFxcdTAwMjYgVFJGNzk3MEFfSVJRX1NUQVRVU19FUlJPUikpIHtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjkwMTpcXHRcXHRcXHR0cmY3OTcwYV9jbWQodHJmLCBUUkY3OTcwQV9DTURfQkxPQ0tfUlgpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTAyLVxcdFxcdFxcdHRyZi1cXHUwMDNlc3RhdGUgPSBUUkY3OTcwQV9TVF9JRExFX1JYX0JMT0NLRUQ7XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTkwNC1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjkwNTpcXHRcXHR0cmY3OTcwYV9jbWQodHJmLCBUUkY3OTcwQV9DTURfRklGT19SRVNFVCk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05MDYtXFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTkxMC1cXHRcXHRcXHQgICAgIWNhbmNlbF9kZWxheWVkX3dvcmsoXFx1MDAyNnRyZi1cXHUwMDNldGltZW91dF93b3JrKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjkxMTpcXHRcXHRcXHR0cmY3OTcwYV9maWxsX2ZpZm8odHJmKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTkxMi1cXHRcXHR9IGVsc2Uge1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6OTEzOlxcdFxcdFxcdHRyZjc5NzBhX3NlbmRfZXJyX3Vwc3RyZWFtKHRyZiwgLUVJTyk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05MTQtXFx0XFx0fVxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05MjAtXFx0XFx0XFx0ICAgICFjYW5jZWxfZGVsYXllZF93b3JrKFxcdTAwMjZ0cmYtXFx1MDAzZXRpbWVvdXRfd29yayk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo5MjE6XFx0XFx0XFx0dHJmNzk3MGFfZHJhaW5fZmlmbyh0cmYsIHN0YXR1cyk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05MjItXFx0XFx0fSBlbHNlIGlmIChzdGF0dXMgXFx1MDAyNiBUUkY3OTcwQV9JUlFfU1RBVFVTX0ZJRk8pIHtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjkyMzpcXHRcXHRcXHRyZXQgPSB0cmY3OTcwYV9yZWFkKHRyZiwgVFJGNzk3MEFfRklGT19TVEFUVVMsXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05MjQtXFx0XFx0XFx0XFx0XFx0ICAgIFxcdTAwMjZmaWZvX2J5dGVzKTtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTI4LVxcdFxcdFxcdGlmIChyZXQpXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo5Mjk6XFx0XFx0XFx0XFx0dHJmNzk3MGFfc2VuZF9lcnJfdXBzdHJlYW0odHJmLCByZXQpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTMwLVxcdFxcdFxcdGVsc2UgaWYgKCFmaWZvX2J5dGVzKVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6OTMxOlxcdFxcdFxcdFxcdHRyZjc5NzBhX2NtZCh0cmYsIFRSRjc5NzBBX0NNRF9GSUZPX1JFU0VUKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTkzMi1cXHRcXHR9IGVsc2UgaWYgKChzdGF0dXMgPT0gVFJGNzk3MEFfSVJRX1NUQVRVU19UWCkgfHxcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTM1LVxcdFxcdFxcdFxcdFxcdFRSRjc5NzBBX0lSUV9TVEFUVVNfTkZDX1JGKSkpKSB7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo5MzY6XFx0XFx0XFx0dHJmNzk3MGFfY21kKHRyZiwgVFJGNzk3MEFfQ01EX0ZJRk9fUkVTRVQpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTM3LVxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05NDEtXFx0XFx0XFx0XFx0dHJmLVxcdTAwM2VyeF9za2IgPSBOVUxMO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6OTQyOlxcdFxcdFxcdFxcdHRyZjc5NzBhX3NlbmRfdXBzdHJlYW0odHJmKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTk0My1cXHRcXHRcXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTYyLVxcdFxcdFxcdGNhc2UgTkZDX0RJR0lUQUxfRlJBTUlOR19ORkNBX0FOVElDT0xfQ09NUExFVEU6XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo5NjM6XFx0XFx0XFx0XFx0cmV0ID0gdHJmNzk3MGFfd3JpdGUodHJmLFxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTY0LVxcdFxcdFxcdFxcdFxcdCBUUkY3OTcwQV9TUEVDSUFMX0ZDTl9SRUcxLFxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05NzYtXFx0XFx0XFx0aWYgKGlzb19jdHJsICE9IHRyZi1cXHUwMDNlaXNvX2N0cmwpIHtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjk3NzpcXHRcXHRcXHRcXHRyZXQgPSB0cmY3OTcwYV91cGRhdGVfaXNvX2N0cmxfcmVnaXN0ZXIodHJmLCBpc29fY3RybCk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05NzgtXFx0XFx0XFx0XFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTgzLVxcdFxcdH0gZWxzZSB7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo5ODQ6XFx0XFx0XFx0dHJmNzk3MGFfc2VuZF9lcnJfdXBzdHJlYW0odHJmLCAtRUlPKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTk4NS1cXHRcXHR9XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTk4OC1cXHRcXHRpZiAoc3RhdHVzICE9IFRSRjc5NzBBX0lSUV9TVEFUVVNfVFgpXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo5ODk6XFx0XFx0XFx0dHJmNzk3MGFfc2VuZF9lcnJfdXBzdHJlYW0odHJmLCAtRUlPKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTk5MC1cXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTk0LVxcdFxcdFxcdCAgICAhY2FuY2VsX2RlbGF5ZWRfd29yayhcXHUwMDI2dHJmLVxcdTAwM2V0aW1lb3V0X3dvcmspO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6OTk1OlxcdFxcdFxcdHRyZjc5NzBhX2RyYWluX2ZpZm8odHJmLCBzdGF0dXMpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTk2LVxcdFxcdH0gZWxzZSBpZiAoIShzdGF0dXMgXFx1MDAyNiBUUkY3OTcwQV9JUlFfU1RBVFVTX05GQ19SRikpIHtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjk5NzpcXHRcXHRcXHR0cmY3OTcwYV9zZW5kX2Vycl91cHN0cmVhbSh0cmYsIC1FSU8pO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTk4LVxcdFxcdH1cXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTAwNC1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEwMDU6XFx0XFx0XFx0cmV0ID0gdHJmNzk3MGFfbW9kZV9kZXRlY3QodHJmLCBcXHUwMDI2dHJmLVxcdTAwM2VtZF9yZl90ZWNoKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwMDYtXFx0XFx0XFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTAwNzpcXHRcXHRcXHRcXHR0cmY3OTcwYV9zZW5kX2Vycl91cHN0cmVhbSh0cmYsIHJldCk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDA4LVxcdFxcdFxcdH0gZWxzZSB7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDA5LVxcdFxcdFxcdFxcdHRyZi1cXHUwMDNlc3RhdGUgPSBUUkY3OTcwQV9TVF9MSVNURU5JTkc7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMDEwOlxcdFxcdFxcdFxcdHRyZjc5NzBhX2RyYWluX2ZpZm8odHJmLCBzdGF0dXMpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTAxMS1cXHRcXHRcXHR9XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDEyLVxcdFxcdH0gZWxzZSBpZiAoIShzdGF0dXMgXFx1MDAyNiBUUkY3OTcwQV9JUlFfU1RBVFVTX05GQ19SRikpIHtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEwMTM6XFx0XFx0XFx0dHJmNzk3MGFfc2VuZF9lcnJfdXBzdHJlYW0odHJmLCAtRUlPKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwMTQtXFx0XFx0fVxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDI1LVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTAyNjpzdGF0aWMgdm9pZCB0cmY3OTcwYV9pc3N1ZV9lb2Yoc3RydWN0IHRyZjc5NzBhICp0cmYpXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDI3LXtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTAzMS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEwMzI6XFx0cmV0ID0gdHJmNzk3MGFfY21kKHRyZiwgVFJGNzk3MEFfQ01EX0ZJRk9fUkVTRVQpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTAzMy1cXHRpZiAocmV0KVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTAzNDpcXHRcXHR0cmY3OTcwYV9zZW5kX2Vycl91cHN0cmVhbSh0cmYsIHJldCk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDM1LVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTAzNjpcXHRyZXQgPSB0cmY3OTcwYV9jbWQodHJmLCBUUkY3OTcwQV9DTURfRU9GKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwMzctXFx0aWYgKHJldClcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEwMzg6XFx0XFx0dHJmNzk3MGFfc2VuZF9lcnJfdXBzdHJlYW0odHJmLCByZXQpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTAzOS1cXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTA0OC1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEwNDk6c3RhdGljIHZvaWQgdHJmNzk3MGFfdGltZW91dF93b3JrX2hhbmRsZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTA1MC17XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMDUxOlxcdHN0cnVjdCB0cmY3OTcwYSAqdHJmID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCB0cmY3OTcwYSxcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwNTItXFx0XFx0XFx0XFx0XFx0ICAgIHRpbWVvdXRfd29yay53b3JrKTtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTA2MS1cXHRlbHNlIGlmICh0cmYtXFx1MDAzZXN0YXRlID09IFRSRjc5NzBBX1NUX1dBSVRfRk9SX1JYX0RBVEFfQ09OVClcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEwNjI6XFx0XFx0dHJmNzk3MGFfZHJhaW5fZmlmbyh0cmYsIFRSRjc5NzBBX0lSUV9TVEFUVVNfU1JYKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwNjMtXFx0ZWxzZSBpZiAodHJmLVxcdTAwM2VzdGF0ZSA9PSBUUkY3OTcwQV9TVF9XQUlUX1RPX0lTU1VFX0VPRilcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEwNjQ6XFx0XFx0dHJmNzk3MGFfaXNzdWVfZW9mKHRyZik7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDY1LVxcdGVsc2VcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEwNjY6XFx0XFx0dHJmNzk3MGFfc2VuZF9lcnJfdXBzdHJlYW0odHJmLCAtRVRJTUVET1VUKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwNjctXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwNzAtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMDcxOnN0YXRpYyBpbnQgdHJmNzk3MGFfaW5pdChzdHJ1Y3QgdHJmNzk3MGEgKnRyZilcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwNzIte1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDc2LVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTA3NzpcXHRyZXQgPSB0cmY3OTcwYV9jbWQodHJmLCBUUkY3OTcwQV9DTURfU09GVF9JTklUKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwNzgtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTA4MS1cXHQvKiBTZXQgdGhlIGdhaW4gcmVkdWN0aW9uIGFmdGVyIHNvZnQgaW5pdCAqL1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTA4MjpcXHRyZXQgPSB0cmY3OTcwYV91cGRhdGVfcnhfZ2Fpbl9yZWR1Y3Rpb24odHJmKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwODMtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTA4NS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEwODY6XFx0cmV0ID0gdHJmNzk3MGFfY21kKHRyZiwgVFJGNzk3MEFfQ01EX0lETEUpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTA4Ny1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDg5LVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTA5MDpcXHRyZXQgPSB0cmY3OTcwYV93cml0ZSh0cmYsIFRSRjc5NzBBX1JFR19JT19DVFJMLFxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTA5MS1cXHRcXHRcXHQgICAgIHRyZi1cXHUwMDNlaW9fY3RybCB8IFRSRjc5NzBBX1JFR19JT19DVFJMX1ZSUygweDEpKTtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTA5NC1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEwOTU6XFx0cmV0ID0gdHJmNzk3MGFfd3JpdGUodHJmLCBUUkY3OTcwQV9ORkNfVEFSR0VUX0xFVkVMLCAwKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwOTYtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTEwMi1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjExMDM6XFx0cmV0ID0gdHJmNzk3MGFfd3JpdGUodHJmLCBUUkY3OTcwQV9NT0RVTEFUT1JfU1lTX0NMS19DVFJMLFxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTEwNC1cXHRcXHRcXHQgICAgIHRyZi1cXHUwMDNlbW9kdWxhdG9yX3N5c19jbGtfY3RybCk7XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExMDctXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMTA4OlxcdHJldCA9IHRyZjc5NzBhX3dyaXRlKHRyZiwgVFJGNzk3MEFfQURKVVRBQkxFX0ZJRk9fSVJRX0xFVkVMUyxcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExMDktXFx0XFx0XFx0ICAgICBUUkY3OTcwQV9BREpVVEFCTEVfRklGT19JUlFfTEVWRUxTX1dMSF85NiB8XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExMTMtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMTE0OlxcdHJldCA9IHRyZjc5NzBhX3dyaXRlKHRyZiwgVFJGNzk3MEFfU1BFQ0lBTF9GQ05fUkVHMSwgMCk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMTE1LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExMjctXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMTI4OnN0YXRpYyB2b2lkIHRyZjc5NzBhX3N3aXRjaF9yZl9vZmYoc3RydWN0IHRyZjc5NzBhICp0cmYpXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMTI5LXtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTEzNy1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjExMzg6XFx0dHJmNzk3MGFfd3JpdGUodHJmLCBUUkY3OTcwQV9DSElQX1NUQVRVU19DVFJMLCB0cmYtXFx1MDAzZWNoaXBfc3RhdHVzX2N0cmwpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTEzOS1cXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTE0Ni1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjExNDc6c3RhdGljIGludCB0cmY3OTcwYV9zd2l0Y2hfcmZfb24oc3RydWN0IHRyZjc5NzBhICp0cmYpXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMTQ4LXtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTE2MC1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjExNjE6XFx0cmV0ID0gdHJmNzk3MGFfaW5pdCh0cmYpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTE2Mi1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExNzEtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMTcyOnN0YXRpYyBpbnQgdHJmNzk3MGFfc3dpdGNoX3JmKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIGJvb2wgb24pXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMTczLXtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjExNzQ6XFx0c3RydWN0IHRyZjc5NzBhICp0cmYgPSBuZmNfZGlnaXRhbF9nZXRfZHJ2ZGF0YShkZGV2KTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExNzUtXFx0aW50IHJldCA9IDA7XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExODQtXFx0XFx0Y2FzZSBUUkY3OTcwQV9TVF9SRl9PRkY6XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMTg1OlxcdFxcdFxcdHJldCA9IHRyZjc5NzBhX3N3aXRjaF9yZl9vbih0cmYpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTE4Ni1cXHRcXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTE5Mi1cXHRcXHRcXHRcXHRfX2Z1bmNfXywgdHJmLVxcdTAwM2VzdGF0ZSwgb24pO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTE5MzpcXHRcXHRcXHR0cmY3OTcwYV9zd2l0Y2hfcmZfb2ZmKHRyZik7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMTk0LVxcdFxcdFxcdHJldCA9IC1FSU5WQUw7XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEyMDktXFx0XFx0Y2FzZSBUUkY3OTcwQV9TVF9XQUlUX0ZPUl9SWF9EQVRBX0NPTlQ6XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMjEwOlxcdFxcdFxcdHRyZjc5NzBhX3N3aXRjaF9yZl9vZmYodHJmKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEyMTEtXFx0XFx0fVxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMjE3LVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTIxODpzdGF0aWMgaW50IHRyZjc5NzBhX2luX2NvbmZpZ19yZl90ZWNoKHN0cnVjdCB0cmY3OTcwYSAqdHJmLCBpbnQgdGVjaClcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEyMTkte1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMjY4LVxcdCAqIFBTTCBzZXF1ZW5jZSAoaW5kaWNhdGVkIGJ5ICd0cmYtXFx1MDAzZWlzb19jdHJsID09IDB4ZmYnIGZyb21cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEyNjk6XFx0ICogdHJmNzk3MGFfaW5pdCgpKSwgY2xlYXIgdGhlIE5GQyBUYXJnZXQgRGV0ZWN0aW9uIExldmVsIHJlZ2lzdGVyXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMjcwLVxcdCAqIGR1ZSB0byBlcnJhdHVtLlxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMjcyLVxcdGlmICh0cmYtXFx1MDAzZWlzb19jdHJsID09IDB4ZmYpXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMjczOlxcdFxcdHJldCA9IHRyZjc5NzBhX3dyaXRlKHRyZiwgVFJGNzk3MEFfTkZDX1RBUkdFVF9MRVZFTCwgMCk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMjc0LVxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMjc3LVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTI3ODpzdGF0aWMgaW50IHRyZjc5NzBhX2lzX3JmX2ZpZWxkKHN0cnVjdCB0cmY3OTcwYSAqdHJmLCBib29sICppc19yZl9maWVsZClcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEyNzkte1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMjgyLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTI4MzpcXHRyZXQgPSB0cmY3OTcwYV93cml0ZSh0cmYsIFRSRjc5NzBBX0NISVBfU1RBVFVTX0NUUkwsXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMjg0LVxcdFxcdFxcdCAgICAgdHJmLVxcdTAwM2VjaGlwX3N0YXR1c19jdHJsIHxcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTI4OC1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEyODk6XFx0cmV0ID0gdHJmNzk3MGFfY21kKHRyZiwgVFJGNzk3MEFfQ01EX1RFU1RfRVhUX1JGKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEyOTAtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTI5NC1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEyOTU6XFx0cmV0ID0gdHJmNzk3MGFfcmVhZCh0cmYsIFRSRjc5NzBBX1JTU0lfT1NDX1NUQVRVUywgXFx1MDAyNnJzc2kpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTI5Ni1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMjk4LVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTI5OTpcXHRyZXQgPSB0cmY3OTcwYV93cml0ZSh0cmYsIFRSRjc5NzBBX0NISVBfU1RBVFVTX0NUUkwsXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMzAwLVxcdFxcdFxcdCAgICAgdHJmLVxcdTAwM2VjaGlwX3N0YXR1c19jdHJsKTtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTMxMS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEzMTI6c3RhdGljIGludCB0cmY3OTcwYV9pbl9jb25maWdfZnJhbWluZyhzdHJ1Y3QgdHJmNzk3MGEgKnRyZiwgaW50IGZyYW1pbmcpXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMzEzLXtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTM1MC1cXHRpZiAoISh0cmYtXFx1MDAzZWNoaXBfc3RhdHVzX2N0cmwgXFx1MDAyNiBUUkY3OTcwQV9DSElQX1NUQVRVU19SRl9PTikpIHtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEzNTE6XFx0XFx0cmV0ID0gdHJmNzk3MGFfaXNfcmZfZmllbGQodHJmLCBcXHUwMDI2aXNfcmZfZmllbGQpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTM1Mi1cXHRcXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMzU5LVxcdGlmIChpc29fY3RybCAhPSB0cmYtXFx1MDAzZWlzb19jdHJsKSB7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMzYwOlxcdFxcdHJldCA9IHRyZjc5NzBhX3VwZGF0ZV9pc29fY3RybF9yZWdpc3Rlcih0cmYsIGlzb19jdHJsKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEzNjEtXFx0XFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTM2NS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEzNjY6XFx0XFx0cmV0ID0gdHJmNzk3MGFfd3JpdGUodHJmLCBUUkY3OTcwQV9NT0RVTEFUT1JfU1lTX0NMS19DVFJMLFxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTM2Ny1cXHRcXHRcXHRcXHQgICAgIHRyZi1cXHUwMDNlbW9kdWxhdG9yX3N5c19jbGtfY3RybCk7XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEzNzItXFx0aWYgKCEodHJmLVxcdTAwM2VjaGlwX3N0YXR1c19jdHJsIFxcdTAwMjYgVFJGNzk3MEFfQ0hJUF9TVEFUVVNfUkZfT04pKSB7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMzczOlxcdFxcdHJldCA9IHRyZjc5NzBhX3dyaXRlKHRyZiwgVFJGNzk3MEFfQ0hJUF9TVEFUVVNfQ1RSTCxcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEzNzQtXFx0XFx0XFx0XFx0ICAgICB0cmYtXFx1MDAzZWNoaXBfc3RhdHVzX2N0cmwgfFxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMzg2LVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTM4NzpzdGF0aWMgaW50IHRyZjc5NzBhX2luX2NvbmZpZ3VyZV9odyhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCBpbnQgdHlwZSxcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEzODgtXFx0XFx0XFx0XFx0ICAgIGludCBwYXJhbSlcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEzODkte1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTM5MDpcXHRzdHJ1Y3QgdHJmNzk3MGEgKnRyZiA9IG5mY19kaWdpdGFsX2dldF9kcnZkYXRhKGRkZXYpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTM5MS1cXHRpbnQgcmV0O1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNDAwLVxcdCAgICAodHJmLVxcdTAwM2VzdGF0ZSA9PSBUUkY3OTcwQV9TVF9SRl9PRkYpKSB7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNDAxOlxcdFxcdHJldCA9IHRyZjc5NzBhX3N3aXRjaF9yZl9vbih0cmYpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTQwMi1cXHRcXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNDA3LVxcdGNhc2UgTkZDX0RJR0lUQUxfQ09ORklHX1JGX1RFQ0g6XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNDA4OlxcdFxcdHJldCA9IHRyZjc5NzBhX2luX2NvbmZpZ19yZl90ZWNoKHRyZiwgcGFyYW0pO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTQwOS1cXHRcXHRicmVhaztcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE0MTAtXFx0Y2FzZSBORkNfRElHSVRBTF9DT05GSUdfRlJBTUlORzpcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE0MTE6XFx0XFx0cmV0ID0gdHJmNzk3MGFfaW5fY29uZmlnX2ZyYW1pbmcodHJmLCBwYXJhbSk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNDEyLVxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNDIyLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTQyMzpzdGF0aWMgaW50IHRyZjc5NzBhX2lzX2lzbzE1NjkzX3dyaXRlX29yX2xvY2sodTggY21kKVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTQyNC17XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE0MzgtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNDM5OnN0YXRpYyBpbnQgdHJmNzk3MGFfcGVyX2NtZF9jb25maWcoc3RydWN0IHRyZjc5NzBhICp0cmYsXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNDQwLVxcdFxcdFxcdFxcdCAgIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE0NjQtXFx0XFx0aWYgKHNwZWNpYWxfZmNuX3JlZzEgIT0gdHJmLVxcdTAwM2VzcGVjaWFsX2Zjbl9yZWcxKSB7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNDY1OlxcdFxcdFxcdHJldCA9IHRyZjc5NzBhX3dyaXRlKHRyZiwgVFJGNzk3MEFfU1BFQ0lBTF9GQ05fUkVHMSxcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE0NjYtXFx0XFx0XFx0XFx0XFx0ICAgICBzcGVjaWFsX2Zjbl9yZWcxKTtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTQ5MS1cXHRcXHRpZiAoaXNvX2N0cmwgIT0gdHJmLVxcdTAwM2Vpc29fY3RybCkge1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTQ5MjpcXHRcXHRcXHRyZXQgPSB0cmY3OTcwYV91cGRhdGVfaXNvX2N0cmxfcmVnaXN0ZXIodHJmLCBpc29fY3RybCk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNDkzLVxcdFxcdFxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE0OTktXFx0XFx0aWYgKCh0cmYtXFx1MDAzZWZyYW1pbmcgPT0gTkZDX0RJR0lUQUxfRlJBTUlOR19JU08xNTY5M19UNVQpIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNTAwOlxcdFxcdCAgICB0cmY3OTcwYV9pc19pc28xNTY5M193cml0ZV9vcl9sb2NrKHJlcVsxXSkgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE1MDEtXFx0XFx0ICAgIChyZXFbMF0gXFx1MDAyNiBJU08xNTY5M19SRVFfRkxBR19PUFRJT04pKVxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNTA3LVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTUwODpzdGF0aWMgaW50IHRyZjc5NzBhX3NlbmRfY21kKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNTA5LVxcdFxcdFxcdCAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTE2IHRpbWVvdXQsXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE1MTEte1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTUxMjpcXHRzdHJ1Y3QgdHJmNzk3MGEgKnRyZiA9IG5mY19kaWdpdGFsX2dldF9kcnZkYXRhKGRkZXYpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTUxMy1cXHR1OCBwcmVmaXhbNV07XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE1NTEtXFx0aWYgKHRyZi1cXHUwMDNlc3RhdGUgPT0gVFJGNzk3MEFfU1RfSURMRV9SWF9CTE9DS0VEKSB7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNTUyOlxcdFxcdHJldCA9IHRyZjc5NzBhX2NtZCh0cmYsIFRSRjc5NzBBX0NNRF9FTkFCTEVfUlgpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTU1My1cXHRcXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNTU5LVxcdGlmICh0cmYtXFx1MDAzZWlzX2luaXRpYXRvcikge1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTU2MDpcXHRcXHRyZXQgPSB0cmY3OTcwYV9wZXJfY21kX2NvbmZpZyh0cmYsIHNrYik7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNTYxLVxcdFxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE1OTYtXFx0LyogQ2xlYXIgcG9zc2libGUgc3B1cmlvdXMgaW50ZXJydXB0ICovXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNTk3OlxcdHJldCA9IHRyZjc5NzBhX3JlYWRfaXJxc3RhdHVzKHRyZiwgXFx1MDAyNnN0YXR1cyk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNTk4LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE2MDAtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNjAxOlxcdHJldCA9IHRyZjc5NzBhX3RyYW5zbWl0KHRyZiwgc2tiLCBsZW4sIHByZWZpeCwgc2l6ZW9mKHByZWZpeCkpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTYwMi1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE2MTEtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNjEyOnN0YXRpYyBpbnQgdHJmNzk3MGFfdGdfY29uZmlnX3JmX3RlY2goc3RydWN0IHRyZjc5NzBhICp0cmYsIGludCB0ZWNoKVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTYxMy17XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE2NDctXFx0LyogTm9ybWFsbHkgd2Ugd3JpdGUgdGhlIElTT19DVFJMIHJlZ2lzdGVyIGluXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNjQ4OlxcdCAqIHRyZjc5NzBhX3RnX2NvbmZpZ19mcmFtaW5nKCkgYmVjYXVzZSB0aGUgZnJhbWluZyBjYW4gY2hhbmdlXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNjQ5LVxcdCAqIHRoZSB2YWx1ZSB3cml0dGVuLiAgSG93ZXZlciwgd2hlbiBzZW5kaW5nIGEgUFNMIFJFUyxcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE2NTAtXFx0ICogZGlnaXRhbF90Z19zZW5kX3BzbF9yZXNfY29tcGxldGUoKSBkb2Vzbid0IGNhbGxcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE2NTE6XFx0ICogdHJmNzk3MGFfdGdfY29uZmlnX2ZyYW1pbmcoKSBzbyB3ZSBtdXN0IHdyaXRlIHRoZSByZWdpc3RlclxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTY1Mi1cXHQgKiBoZXJlLlxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNjU1LVxcdCAgICAodHJmLVxcdTAwM2Vpc29fY3RybF90ZWNoICE9IHRyZi1cXHUwMDNlaXNvX2N0cmwpKSB7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNjU2OlxcdFxcdHJldCA9IHRyZjc5NzBhX3VwZGF0ZV9pc29fY3RybF9yZWdpc3Rlcih0cmYsIHRyZi1cXHUwMDNlaXNvX2N0cmxfdGVjaCk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNjU3LVxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNjY5LSAqL1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTY3MDpzdGF0aWMgaW50IHRyZjc5NzBhX3RnX2NvbmZpZ19mcmFtaW5nKHN0cnVjdCB0cmY3OTcwYSAqdHJmLCBpbnQgZnJhbWluZylcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE2NzEte1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNzAzLVxcdGlmIChpc29fY3RybCAhPSB0cmYtXFx1MDAzZWlzb19jdHJsKSB7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNzA0OlxcdFxcdHJldCA9IHRyZjc5NzBhX3VwZGF0ZV9pc29fY3RybF9yZWdpc3Rlcih0cmYsIGlzb19jdHJsKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE3MDUtXFx0XFx0aWYgKHJldClcXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTNUMDU6MTY6NTkuNTM5Njc0NDA2WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6MzE0NTg2NjU1MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIGB0cmY3OTcwYS5jYCBmaWxlJ3MgYnVzIHR5cGUgYW5kIHByb2JlIGZ1bmN0aW9uLlxuXG4qKkRpdmluZyBpbnRvIGB0cmY3OTcwYS5jYCdzIENvcmUqKlxuXG5SaWdodCwgbGV0J3MgZ2V0IGludG8gdGhlIG5pdHR5LWdyaXR0eSBvZiB0aGUgYHRyZjc5NzBhLmNgIGRyaXZlci4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgdGhpbmcgaW50ZXJmYWNlcyB3aXRoIHRoZSBoYXJkd2FyZSDigJMgc3BlY2lmaWNhbGx5LCB0aGUgYnVzIHR5cGUgaXQncyBkZXNpZ25lZCBmb3IgYW5kIGhvdyBpdCdzIGluaXRpYWxpemVkIGR1cmluZyB0aGUgcHJvYmUgc3RhZ2UuIFRoYXQgYHByb2JlYCBmdW5jdGlvbiBpcyB0aGUga2V5LCBJIGtub3csIGl04oCZcyB3aGVyZSBhbGwgdGhlIHNldHVwIGhhcHBlbnMuIEknbSBnb2luZyB0byBxdWlja2x5IHNraW0gdGhlIGNvZGUgZm9jdXNpbmcgb24gaG93IHRoZSBidXMgaXMgZGVmaW5lZCBhbmQgaG93IHRoZSBkZXZpY2UgaXMgcmVnaXN0ZXJlZCB3aXRoIHRoYXQgYnVzLiBJJ2xsIG5lZWQgdG8ga25vdyB3aGV0aGVyIGl04oCZcyBJMkMsIFNQSSwgb3Igc29tZXRoaW5nIGN1c3RvbS4gVGhlbiBJIGNhbiBhc3Nlc3MgaG93IHRoZSBsb3ctbGV2ZWwgY29tbXVuaWNhdGlvbiBpcyBoYW5kbGVkLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgZGVwZW5kZW5jaWVzLCB0aGUgY2xvY2sgc2V0dGluZ3MsIHBpbiBjb25maWd1cmF0aW9ucyBpZiBpdOKAmXMgR1BJTyBkcml2ZW4sIGFuZCB0aGUgb3ZlcmFsbCBkZXZpY2UgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UuIFRoaXMgd2lsbCB0ZWxsIG1lIGhvdyB3ZWxsLWludGVncmF0ZWQgaXQgaXMgYW5kIGlmIHRoZXJlIGFyZSBhbnkgb2J2aW91cyBib3R0bGVuZWNrcy4gSSBob3BlIHRoZSBkb2N1bWVudGF0aW9uIGlzIGhlbHBmdWwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3MTIyLCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTNUMDU6MTc6MDIuNjg1NTQ2NzU4WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3NDI1MzQyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1vZHVsZV9zcGlfZHJpdmVyfHByb2JlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmZjL3RyZjc5NzBhLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZmMvdHJmNzk3MGEuYz0yMDM2PXN0YXRpYyBpbnQgdHJmNzk3MGFfZ2V0X2F1dG9zdXNwZW5kX2RlbGF5KGNvbnN0IHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTIwNDYtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoyMDQ3OnN0YXRpYyBpbnQgdHJmNzk3MGFfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSlcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTIwNDgte1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYz0yMzIwPXN0YXRpYyBzdHJ1Y3Qgc3BpX2RyaXZlciB0cmY3OTcwYV9zcGlfZHJpdmVyID0ge1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MjMyMTpcXHQucHJvYmVcXHRcXHQ9IHRyZjc5NzBhX3Byb2JlLFxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMjMyMi1cXHQucmVtb3ZlXFx0XFx0PSB0cmY3OTcwYV9yZW1vdmUsXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTIzMzAtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoyMzMxOm1vZHVsZV9zcGlfZHJpdmVyKHRyZjc5NzBhX3NwaV9kcml2ZXIpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMjMzMi1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTNUMDU6MTc6MDIuNzMyOTc2ODhaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjo0OTk0NTM0ODAzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIHRyZjc5NzBhX3NwaV9kcml2ZXIncyBGdXp6aW5nIFBvdGVudGlhbCoqXG5cbk9rYXksIHNvIGB0cmY3OTcwYV9zcGlfZHJpdmVyYCBpcyBhbiBTUEkgZHJpdmVyLCBnb3QgaXQuIEJ1dCB0aGUga2V5IHF1ZXN0aW9uIGhlcmUgaXMgd2hldGhlciBpdCdzICpmdXp6YWJsZSogd2l0aGluIGEgc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBRRU1VIG9yIEdvb2dsZSBDb21wdXRlIEVuZ2luZS4gVGhhdCdzIHRoZSByZWFsIGNoYWxsZW5nZS4gU1BJIGRldmljZXMuLi4gY2FuIHRoZXkgYmUgZW11bGF0ZWQgb3IgZXZlbiBmdXp6ZWQgaW4gdGhvc2UgZW52aXJvbm1lbnRzP1xuXG5GaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHN0cnVjdHVyYWwgcmVhY2hhYmlsaXR5LiBJcyB0aGlzIGRyaXZlciBldmVuICpyZWFjaGFibGUqIGluIGEgdHlwaWNhbCBzZXR1cD8gSSBuZWVkIHRvIGtub3cgaWYgSSBjYW4gZ2V0IHRoaXMgY29kZSB0byBleGVjdXRlIHdpdGhpbiBhIHN0YW5kYXJkIHRlc3RpbmcgZnJhbWV3b3JrLiBMZXQncyBzZWUgaWYgc3l6a2FsbGVyIGhhcyBhbnkgc3VwcG9ydCBmb3IgU1BJIG9yIGlmIHRoZXJlIGFyZSBhbnkgdmlydHVhbCBidXMgYXBwcm9hY2hlcyB0byBjb25zaWRlci5cblxuUmlnaHQsIGJhY2sgdG8gdGhlIGNvcmUgcHJpbmNpcGxlOiBSZWFjaGFiaWxpdHkgaXMgdGhlIHByaW1hcnkgZ2F0ZS4gSWYgdGhlIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIHdpdGhpbiB0aG9zZSBlbnZpcm9ubWVudHMsIHRoZXJlJ3Mgbm8gcG9pbnQgaW4gZnV6emluZyBpdCwgbm8gbWF0dGVyIHdoYXQgaXQgZG9lcy4gU2VjdGlvbiAxIGlzIGNsZWFyIG9uIHRoYXQuIFNlY3Rpb24gMiBsYXlzIG91dCB0aGUgbmVnYXRpdmUgY3JpdGVyaWE6IHNjZW5hcmlvcyB3aGVyZSBmdXp6aW5nIGlzIGEgd2FzdGUgb2YgdGltZS4gU3BlY2lmaWNhbGx5LCBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUgbGlrZSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzdHVmZiBpcyBhIG5vLWdvLiBCdXQgd2FpdCBhIG1pbnV0ZS4uLiByZWFjaGFibGUgZHJpdmVycyBhbmQgcHJvdG9jb2xzLCBzcGVjaWZpY2FsbHkgdGhvc2UgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcywgYXJlIHRoZSB3YXkgdG8gZ28uXG5cblNvLCAqY2FuKiBTUEkgZHJpdmVycyBiZSByZWFjaGVkPyBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgU1BJIGRldmljZXMgYXJlIGJvdW5kIGluIExpbnV4LiBUeXBpY2FsbHksIGl0J3MgZG9uZSB0aHJvdWdoIGRldmljZXRyZWUsIEFDUEksIG9yIGBzcGlfYm9hcmRfaW5mb2AgKHBsYXRmb3JtIGRhdGEpLiBBcmUgdGhlcmUgYW55IG9wcG9ydHVuaXRpZXMgZm9yIGluc3RhbnRpYXRpbmcgU1BJIGRldmljZXMgZnJvbSB1c2Vyc3BhY2Ugb3IgbGV2ZXJhZ2luZyB2aXJ0dWFsIGJ1c2VzPyBUaGF0J3MgdGhlIGNydWNpYWwgcXVlc3Rpb24uXG5cblRpbWUgdG8gbG9vayBmb3Igc3BlY2lmaWMgZXhhbXBsZXM6IElzIHRoZXJlIGFueSBTUEkgY29udHJvbGxlciBlbXVsYXRpb24sIGNvbmZpZ2ZzIHN1cHBvcnQsIHNwaWRldiB1c2UsIG9yIGFueSBzeXpib3QgcmVwcm9kdWN0aW9ucyBvZiBTUEkgYnVncyB0aGF0IG1pZ2h0IGJlIHJlbGV2YW50PyBJIG5lZWQgdG8gY2hlY2sgaWYgdGhlcmUgYXJlIGFueSBkb2N1bWVudGVkIHBhdGh3YXlzIHRvIHRyaWdnZXIgdGhpcyBkcml2ZXIgaW4gYSB2aXJ0dWFsaXplZCBzZXR0aW5nLiBMZXQncyBzdGFydCBieSBsb29raW5nIGF0IGRyaXZlcnMvbmZjL0tjb25maWcgdG8gc2VlIHdoYXQgdGhhdCBkcml2ZXIgZGVwZW5kcyBvbiwgdG8gc2VlIGlmIHRoZXJlIGlzIGFueSBzaGFyZWQgYXBwcm9hY2guIFRoaXMgaXMgZ29pbmcgdG8gYmUgbXkgaW52ZXN0aWdhdGl2ZSBzdGFydGluZyBwb2ludC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTc3NjcsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTNUMDU6MTc6MDcuNzI3NTEzMzUzWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjM2NzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZmMvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAzNVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0I1xcbiAgIDM6XFx0IyBOZWFyIEZpZWxkIENvbW11bmljYXRpb24gKE5GQykgZGV2aWNlc1xcbiAgIDQ6XFx0I1xcbiAgIDU6XFx0XFxuICAgNjpcXHRtZW51IFxcXCJOZWFyIEZpZWxkIENvbW11bmljYXRpb24gKE5GQykgZGV2aWNlc1xcXCJcXG4gICA3OlxcdFxcdGRlcGVuZHMgb24gTkZDXFxuICAgODpcXHRcXG4gICA5OlxcdGNvbmZpZyBORkNfVFJGNzk3MEFcXG4gIDEwOlxcdFxcdHRyaXN0YXRlIFxcXCJUZXhhcyBJbnN0cnVtZW50cyBUUkY3OTcwYSBORkMgZHJpdmVyXFxcIlxcbiAgMTE6XFx0XFx0ZGVwZW5kcyBvbiBTUEkgXFx1MDAyNlxcdTAwMjYgTkZDX0RJR0lUQUwgXFx1MDAyNlxcdTAwMjYgR1BJT0xJQlxcbiAgMTI6XFx0XFx0aGVscFxcbiAgMTM6XFx0XFx0ICBUaGlzIG9wdGlvbiBlbmFibGVzIHRoZSBORkMgZHJpdmVyIGZvciBUZXhhcyBJbnN0cnVtZW50cycgVFJGNzk3MGFcXG4gIDE0OlxcdFxcdCAgZGV2aWNlLiBTdWNoIGRldmljZSBzdXBwb3J0cyA1IGRpZmZlcmVudCBwcm90b2NvbHM6IElTTzE0NDQzQSxcXG4gIDE1OlxcdFxcdCAgSVNPMTQ0NDNCLCBGZUxpQ2EsIElTTzE1NjkzIGFuZCBJU08xODAwMC0zLlxcbiAgMTY6XFx0XFxuICAxNzpcXHRcXHQgIFNheSBZIGhlcmUgdG8gY29tcGlsZSBzdXBwb3J0IGZvciBUUkY3OTcwYSBpbnRvIHRoZSBrZXJuZWwgb3JcXG4gIDE4OlxcdFxcdCAgc2F5IE0gIHRvIGNvbXBpbGUgaXQgYXMgYSBtb2R1bGUuIFRoZSBtb2R1bGUgd2lsbCBiZSBjYWxsZWRcXG4gIDE5OlxcdFxcdCAgdHJmNzk3MGEua28uXFxuICAyMDpcXHRcXG4gIDIxOlxcdGNvbmZpZyBORkNfTUVJX1BIWVxcbiAgMjI6XFx0XFx0dHJpc3RhdGUgXFxcIk1FSSBidXMgTkZDIGRldmljZSBzdXBwb3J0XFxcIlxcbiAgMjM6XFx0XFx0ZGVwZW5kcyBvbiBJTlRFTF9NRUkgXFx1MDAyNlxcdTAwMjYgTkZDX0hDSVxcbiAgMjQ6XFx0XFx0aGVscFxcbiAgMjU6XFx0XFx0ICBUaGlzIGFkZHMgc3VwcG9ydCB0byB1c2UgYW4gbWVpIGJ1cyBuZmMgZGV2aWNlLiBTZWxlY3QgdGhpcyBpZiB5b3VcXG4gIDI2OlxcdFxcdCAgd2lsbCB1c2UgYW4gSENJIE5GQyBkcml2ZXIgZm9yIGFuIE5GQyBjaGlwIGNvbm5lY3RlZCBiZWhpbmQgYW5cXG4gIDI3OlxcdFxcdCAgSW50ZWwncyBNYW5hZ2VtZW50IEVuZ2luZSBjaGlwLlxcbiAgMjg6XFx0XFxuICAyOTpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IE4uXFxuICAzMDpcXHRcXG4gIDMxOlxcdGNvbmZpZyBORkNfU0lNXFxuICAzMjpcXHRcXHR0cmlzdGF0ZSBcXFwiTkZDIGhhcmR3YXJlIHNpbXVsYXRvciBkcml2ZXJcXFwiXFxuICAzMzpcXHRcXHRkZXBlbmRzIG9uIE5GQ19ESUdJVEFMXFxuICAzNDpcXHRcXHRoZWxwXFxuICAzNTpcXHRcXHQgIFRoaXMgZHJpdmVyIGRlY2xhcmVzIHR3byB2aXJ0dWFsIE5GQyBkZXZpY2VzIHN1cHBvcnRpbmcgTkZDLURFUFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xM1QwNToxNzowNy43Mjc1NzkyOTNaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjoyMDM4NDg1NjgwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkRpdmluZyBpbnRvIHRoZSBUUkY3OTcwQSBEcml2ZXIqKlxuXG5Pa2F5LCBob2xkIG9uIGEgc2Vjb25kLiBCZWZvcmUgSSBnZXQgdG9vIGRlZXAgaW50byB0aGlzIHByb2JsZW0sIEkgbmVlZCB0byB0YWtlIGEgc3RlcCBiYWNrIGFuZCBnZXQgYSBiZXR0ZXIgcGljdHVyZSBvZiB0aGUgZHJpdmVyIGNvZGUuIEknbSBnb2luZyB0byBoZWFkIG92ZXIgdG8gYGRyaXZlcnMvbmZjL3RyZjc5NzBhLmNgIGFuZCBzcGVjaWZpY2FsbHkgZm9jdXMgb24gdGhlIGB0cmY3OTcwYV9zdGFydHVwYCBhbmQgYHRyZjc5NzBhX3Byb2JlYCBmdW5jdGlvbnMuIFRob3NlIGFyZSBsaWtlbHkgY3J1Y2lhbCBmb3IgaW5pdGlhbGl6YXRpb24gYW5kIGRldmljZSBkZXRlY3Rpb24sIHJlc3BlY3RpdmVseSwgYW5kIHVuZGVyc3RhbmRpbmcgdGhlaXIgaW50ZXJhY3Rpb24gd2lsbCBzaGVkIGxpZ2h0IG9uIHRoZSBvdmVyYWxsIHN0YXJ0dXAgc2VxdWVuY2UuXG5cbkxldCBtZSBzdGFydCBieSBkaXNzZWN0aW5nIGB0cmY3OTcwYV9zdGFydHVwYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgZXhhY3RseSAqaG93KiBhbmQgKndoZW4qIGl0J3MgY2FsbGVkLiBTZWVpbmcgdGhlIGNhbGwgc3RhY2sgd2lsbCBiZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgY29udHJvbCBmbG93IGFuZCBwb3RlbnRpYWwgcG9pbnRzIG9mIGZhaWx1cmUuIFRoaXMgd2lsbCBhbGxvdyBtZSB0byBwcm9wZXJseSBpc29sYXRlIHRoZSBwb3RlbnRpYWwgaXNzdWUgYXQgaGFuZC4gVW5kZXJzdGFuZGluZyB0aGlzIHN0YXJ0dXAgd2lsbCBiZSBpbnRlZ3JhbCB0byB1bmRlcnN0YW5kaW5nIHRoZSBmdWxsIHNjb3BlIG9mIHRoZSBkcml2ZXJzIGZ1bmN0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTE2NSwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY2LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTNUMDU6MTc6MDkuNzY2MDY4MDEzWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0MDM3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25mYy90cmY3OTcwYS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE5ODUsXG4gIFwiTGluZUNvdW50XCI6IDYwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjE5ODU6XFx0XFxuMTk4NjpcXHRcXHR0cmYtXFx1MDAzZXN0YXRlID0gVFJGNzk3MEFfU1RfUFdSX09GRjtcXG4xOTg3OlxcdFxcbjE5ODg6XFx0XFx0cmV0dXJuIHJldDtcXG4xOTg5OlxcdH1cXG4xOTkwOlxcdFxcbjE5OTE6XFx0c3RhdGljIGludCB0cmY3OTcwYV9zdGFydHVwKHN0cnVjdCB0cmY3OTcwYSAqdHJmKVxcbjE5OTI6XFx0e1xcbjE5OTM6XFx0XFx0aW50IHJldDtcXG4xOTk0OlxcdFxcbjE5OTU6XFx0XFx0cmV0ID0gdHJmNzk3MGFfcG93ZXJfdXAodHJmKTtcXG4xOTk2OlxcdFxcdGlmIChyZXQpXFxuMTk5NzpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbjE5OTg6XFx0XFxuMTk5OTpcXHRcXHRyZXQgPSB0cmY3OTcwYV91cGRhdGVfcnhfZ2Fpbl9yZWR1Y3Rpb24odHJmKTtcXG4yMDAwOlxcdFxcdGlmIChyZXQpIHtcXG4yMDAxOlxcdFxcdFxcdHRyZjc5NzBhX3Bvd2VyX2Rvd24odHJmKTtcXG4yMDAyOlxcdFxcdFxcdHJldHVybiByZXQ7XFxuMjAwMzpcXHRcXHR9XFxuMjAwNDpcXHRcXG4yMDA1OlxcdFxcdHBtX3J1bnRpbWVfc2V0X2FjdGl2ZSh0cmYtXFx1MDAzZWRldik7XFxuMjAwNjpcXHRcXHRwbV9ydW50aW1lX2VuYWJsZSh0cmYtXFx1MDAzZWRldik7XFxuMjAwNzpcXHRcXHRwbV9ydW50aW1lX21hcmtfbGFzdF9idXN5KHRyZi1cXHUwMDNlZGV2KTtcXG4yMDA4OlxcdFxcbjIwMDk6XFx0XFx0cmV0dXJuIDA7XFxuMjAxMDpcXHR9XFxuMjAxMTpcXHRcXG4yMDEyOlxcdHN0YXRpYyB2b2lkIHRyZjc5NzBhX3NodXRkb3duKHN0cnVjdCB0cmY3OTcwYSAqdHJmKVxcbjIwMTM6XFx0e1xcbjIwMTQ6XFx0XFx0c3dpdGNoICh0cmYtXFx1MDAzZXN0YXRlKSB7XFxuMjAxNTpcXHRcXHRjYXNlIFRSRjc5NzBBX1NUX1dBSVRfRk9SX1RYX0ZJRk86XFxuMjAxNjpcXHRcXHRjYXNlIFRSRjc5NzBBX1NUX1dBSVRfRk9SX1JYX0RBVEE6XFxuMjAxNzpcXHRcXHRjYXNlIFRSRjc5NzBBX1NUX1dBSVRfRk9SX1JYX0RBVEFfQ09OVDpcXG4yMDE4OlxcdFxcdGNhc2UgVFJGNzk3MEFfU1RfV0FJVF9UT19JU1NVRV9FT0Y6XFxuMjAxOTpcXHRcXHRjYXNlIFRSRjc5NzBBX1NUX0xJU1RFTklORzpcXG4yMDIwOlxcdFxcdFxcdHRyZjc5NzBhX3NlbmRfZXJyX3Vwc3RyZWFtKHRyZiwgLUVDQU5DRUxFRCk7XFxuMjAyMTpcXHRcXHRcXHRmYWxsdGhyb3VnaDtcXG4yMDIyOlxcdFxcdGNhc2UgVFJGNzk3MEFfU1RfSURMRTpcXG4yMDIzOlxcdFxcdGNhc2UgVFJGNzk3MEFfU1RfSURMRV9SWF9CTE9DS0VEOlxcbjIwMjQ6XFx0XFx0XFx0dHJmNzk3MGFfc3dpdGNoX3JmX29mZih0cmYpO1xcbjIwMjU6XFx0XFx0XFx0YnJlYWs7XFxuMjAyNjpcXHRcXHRkZWZhdWx0OlxcbjIwMjc6XFx0XFx0XFx0YnJlYWs7XFxuMjAyODpcXHRcXHR9XFxuMjAyOTpcXHRcXG4yMDMwOlxcdFxcdHBtX3J1bnRpbWVfZGlzYWJsZSh0cmYtXFx1MDAzZWRldik7XFxuMjAzMTpcXHRcXHRwbV9ydW50aW1lX3NldF9zdXNwZW5kZWQodHJmLVxcdTAwM2VkZXYpO1xcbjIwMzI6XFx0XFxuMjAzMzpcXHRcXHR0cmY3OTcwYV9wb3dlcl9kb3duKHRyZik7XFxuMjAzNDpcXHR9XFxuMjAzNTpcXHRcXG4yMDM2OlxcdHN0YXRpYyBpbnQgdHJmNzk3MGFfZ2V0X2F1dG9zdXNwZW5kX2RlbGF5KGNvbnN0IHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApXFxuMjAzNzpcXHR7XFxuMjAzODpcXHRcXHRpbnQgYXV0b3N1c3BlbmRfZGVsYXksIHJldDtcXG4yMDM5OlxcdFxcbjIwNDA6XFx0XFx0cmV0ID0gb2ZfcHJvcGVydHlfcmVhZF91MzIobnAsIFxcXCJhdXRvc3VzcGVuZC1kZWxheVxcXCIsIFxcdTAwMjZhdXRvc3VzcGVuZF9kZWxheSk7XFxuMjA0MTpcXHRcXHRpZiAocmV0KVxcbjIwNDI6XFx0XFx0XFx0YXV0b3N1c3BlbmRfZGVsYXkgPSBUUkY3OTcwQV9BVVRPU1VTUEVORF9ERUxBWTtcXG4yMDQzOlxcdFxcbjIwNDQ6XFx0XFx0cmV0dXJuIGF1dG9zdXNwZW5kX2RlbGF5O1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xM1QwNToxNzowOS43NjYyMTIzMjNaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6MjU3NzA0MTEzNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6XG5cbioqVHJhY2luZyB0aGUgT3JpZ2lucyBvZiBgdHJmNzk3MGFfc3RhcnR1cGAqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZXhlY3V0aW9uIGZsb3cgYXJvdW5kIHRoaXMgYHRyZjc5NzBhX3N0YXJ0dXBgIGZ1bmN0aW9uLiBNeSBmaXJzdCBpbnN0aW5jdCwgYXMgYWx3YXlzLCBpcyB0byB0cmFjZSBpdHMgY2FsbHMuIFdoZXJlIGlzIHRoaXMgZnVuY3Rpb24gYmVpbmcgaW52b2tlZCBmcm9tPyBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgaW5pdGlhdGluZyBjb25kaXRpb25zLCBhbnkgZGVwZW5kZW5jaWVzIGl0IGhhcywgYW5kIHdoYXQgdGhlIG92ZXJhbGwgc3lzdGVtIGJlaGF2aW9yIGlzIGF0IHRoYXQgcG9pbnQuIEknbGwgbmVlZCB0byB1c2UgbXkgdXN1YWwgdG9vbHMgLSBzdGF0aWMgYW5hbHlzaXMgb3IsIGlmIHRoZSBjb2RlYmFzZSBpcyBhbWVuYWJsZSwgZHluYW1pYyBkZWJ1Z2dpbmcg4oCTIHRvIHBpbnBvaW50IGV2ZXJ5IHNpbmdsZSBjYWxsIHNpdGUuIFRoYXQgd2F5LCBJIGNhbiBidWlsZCB1cCBhIGNvbXBsZXRlIHBpY3R1cmUgb2YgdGhlIHJvbGUgYHRyZjc5NzBhX3N0YXJ0dXBgIHBsYXlzIGluIHRoZSBicm9hZGVyIGFwcGxpY2F0aW9uIGFyY2hpdGVjdHVyZS4gVW5kZXJzdGFuZGluZyB0aGUgdXBzdHJlYW0gZGVwZW5kZW5jaWVzIGlzIGtleSB0byB1bmRlcnN0YW5kaW5nIGl0cyBwdXJwb3NlIGFuZCBwb3RlbnRpYWwgaW1wYWN0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDQyNiwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTNUMDU6MTc6MTIuMzQzMjU3MTI3WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MTQyMTc1MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0cmY3OTcwYV9zdGFydHVwXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmZjL3RyZjc5NzBhLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZmMvdHJmNzk3MGEuYz0xOTYxPXN0YXRpYyBpbnQgdHJmNzk3MGFfcG93ZXJfZG93bihzdHJ1Y3QgdHJmNzk3MGEgKnRyZilcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTk5MC1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE5OTE6c3RhdGljIGludCB0cmY3OTcwYV9zdGFydHVwKHN0cnVjdCB0cmY3OTcwYSAqdHJmKVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTk5Mi17XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jPTIwNDc9c3RhdGljIGludCB0cmY3OTcwYV9wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKVxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0yMTk1LVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MjE5NjpcXHRyZXQgPSB0cmY3OTcwYV9zdGFydHVwKHRyZik7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0yMTk3LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jPTIyNTY9c3RhdGljIGludCB0cmY3OTcwYV9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0yMjYzLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MjI2NDpcXHRyZXQgPSB0cmY3OTcwYV9zdGFydHVwKHRyZik7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0yMjY1LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xM1QwNToxNzoxMi4zOTQ2ODIzODlaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6MzA3NjYyNTI3MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGlua2luZyBpdDpcblxuKipBbmFseXppbmcgVFJGNzk3MEEgSW5pdGlhbGl6YXRpb24qKlxuXG5Pa2F5LCBzbyBJIHNlZSBgdHJmNzk3MGFfc3RhcnR1cGAgaXMgY2FsbGVkIGZyb20gdHdvIGRpc3RpbmN0IHBsYWNlczogYHRyZjc5NzBhX3Byb2JlYCBhbmQgYHRyZjc5NzBhX3Jlc3VtZWAuIFRoaXMgaW1tZWRpYXRlbHkgdGVsbHMgbWUgdGhlcmUncyBhbiBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZSBiZWluZyBwZXJmb3JtZWQgYXQgYm90aCB0aGUgaW5pdGlhbCBkZXZpY2UgZGlzY292ZXJ5IGFuZCBwb3dlci11cC9yZXN1bWUgc3RhZ2VzLiBUaGF0J3MgZ29vZCBhcmNoaXRlY3R1cmFsIHByYWN0aWNlOyBrZWVwcyB0aGluZ3MgY2xlYW4uIFJpZ2h0IG5vdywgSSBuZWVkIHRvIGZvY3VzIG9uIGhvdyB0aGUgZHJpdmVyIGhhbmRsZXMgdGhlIGluaXRpYWwgcHJvYmluZywgc28gbGV0J3MgZGlnIGludG8gYHRyZjc5NzBhX3Byb2JlYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCdzIGdvaW5nIG9uIGR1cmluZyB0aGF0IGZpcnN0IGNhbGwgdG8gYHRyZjc5NzBhX3N0YXJ0dXBgLiBJdCdzIGxpa2VseSBzZXR0aW5nIHVwIHRoZSBjb3JlIGNvbmZpZ3VyYXRpb24sIGluaXRpYWxpemluZyB0aGUgaGFyZHdhcmUsIGFuZCBwZXJoYXBzIGRvaW5nIHNvbWUgYmFzaWMgZGV2aWNlIGlkZW50aWZpY2F0aW9uLiBVbmRlcnN0YW5kaW5nIHRoZSBpbml0aWFsIHByb2JlIHNlcXVlbmNlIGlzIGNyaXRpY2FsIGZvciB1bmRlcnN0YW5kaW5nIGRldmljZSBlbnVtZXJhdGlvbiBhbmQgcHJvcGVyIGRyaXZlciBsb2FkaW5nLiBJIGJldCBhIGNhcmVmdWwgYW5hbHlzaXMgaGVyZSB3aWxsIHNoZWQgbGlnaHQgb24gdGhlIGRldmljZSdzIGRlZmF1bHQgc3RhdGUgYW5kIHdoYXQgaXQgZXhwZWN0cyB0byBkbyBmcm9tIHRoZSBzdGFydC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjEwNjAsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xM1QwNToxNzoxNS40NzEzMDk3MjJaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTgzNTMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmZjL3RyZjc5NzBhLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMjA0NSxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjIwNDU6XFx0fVxcbjIwNDY6XFx0XFxuMjA0NzpcXHRzdGF0aWMgaW50IHRyZjc5NzBhX3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXFxuMjA0ODpcXHR7XFxuMjA0OTpcXHRcXHRjb25zdCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wID0gc3BpLVxcdTAwM2VkZXYub2Zfbm9kZTtcXG4yMDUwOlxcdFxcdHN0cnVjdCB0cmY3OTcwYSAqdHJmO1xcbjIwNTE6XFx0XFx0aW50IHV2b2x0cywgYXV0b3N1c3BlbmRfZGVsYXksIHJldDtcXG4yMDUyOlxcdFxcdHUzMiBjbGtfZnJlcSA9IFRSRjc5NzBBXzEzTUhaX0NMT0NLX0ZSRVFVRU5DWTtcXG4yMDUzOlxcdFxcdHUzMiByeF9nYWluX3JlZHVjdGlvbl9kYjtcXG4yMDU0OlxcdFxcbjIwNTU6XFx0XFx0aWYgKCFucCkge1xcbjIwNTY6XFx0XFx0XFx0ZGV2X2VycihcXHUwMDI2c3BpLVxcdTAwM2VkZXYsIFxcXCJObyBEZXZpY2UgVHJlZSBlbnRyeVxcXFxuXFxcIik7XFxuMjA1NzpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4yMDU4OlxcdFxcdH1cXG4yMDU5OlxcdFxcbjIwNjA6XFx0XFx0dHJmID0gZGV2bV9remFsbG9jKFxcdTAwMjZzcGktXFx1MDAzZWRldiwgc2l6ZW9mKCp0cmYpLCBHRlBfS0VSTkVMKTtcXG4yMDYxOlxcdFxcdGlmICghdHJmKVxcbjIwNjI6XFx0XFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuMjA2MzpcXHRcXG4yMDY0OlxcdFxcdHRyZi1cXHUwMDNlc3RhdGUgPSBUUkY3OTcwQV9TVF9QV1JfT0ZGO1xcbjIwNjU6XFx0XFx0dHJmLVxcdTAwM2VkZXYgPSBcXHUwMDI2c3BpLVxcdTAwM2VkZXY7XFxuMjA2NjpcXHRcXHR0cmYtXFx1MDAzZXNwaSA9IHNwaTtcXG4yMDY3OlxcdFxcbjIwNjg6XFx0XFx0c3BpLVxcdTAwM2Vtb2RlID0gU1BJX01PREVfMTtcXG4yMDY5OlxcdFxcdHNwaS1cXHUwMDNlYml0c19wZXJfd29yZCA9IDg7XFxuMjA3MDpcXHRcXG4yMDcxOlxcdFxcdHJldCA9IHNwaV9zZXR1cChzcGkpO1xcbjIwNzI6XFx0XFx0aWYgKHJldCBcXHUwMDNjIDApIHtcXG4yMDczOlxcdFxcdFxcdGRldl9lcnIodHJmLVxcdTAwM2VkZXYsIFxcXCJDYW4ndCBzZXQgdXAgU1BJIENvbW11bmljYXRpb25cXFxcblxcXCIpO1xcbjIwNzQ6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4yMDc1OlxcdFxcdH1cXG4yMDc2OlxcdFxcbjIwNzc6XFx0XFx0aWYgKG9mX3Byb3BlcnR5X3JlYWRfYm9vbChucCwgXFxcImlycS1zdGF0dXMtcmVhZC1xdWlya1xcXCIpKVxcbjIwNzg6XFx0XFx0XFx0dHJmLVxcdTAwM2VxdWlya3MgfD0gVFJGNzk3MEFfUVVJUktfSVJRX1NUQVRVU19SRUFEO1xcbjIwNzk6XFx0XFxuMjA4MDpcXHRcXHQvKiBUaGVyZSBhcmUgdHdvIGVuYWJsZSBwaW5zIC0gb25seSBFTiBtdXN0IGJlIHByZXNlbnQgaW4gdGhlIERUICovXFxuMjA4MTpcXHRcXHR0cmYtXFx1MDAzZWVuX2dwaW9kID0gZGV2bV9ncGlvZF9nZXRfaW5kZXgodHJmLVxcdTAwM2VkZXYsIFxcXCJ0aSxlbmFibGVcXFwiLCAwLFxcbjIwODI6XFx0XFx0XFx0XFx0XFx0XFx0ICAgICBHUElPRF9PVVRfTE9XKTtcXG4yMDgzOlxcdFxcdGlmIChJU19FUlIodHJmLVxcdTAwM2Vlbl9ncGlvZCkpIHtcXG4yMDg0OlxcdFxcdFxcdGRldl9lcnIodHJmLVxcdTAwM2VkZXYsIFxcXCJObyBFTiBHUElPIHByb3BlcnR5XFxcXG5cXFwiKTtcXG4yMDg1OlxcdFxcdFxcdHJldHVybiBQVFJfRVJSKHRyZi1cXHUwMDNlZW5fZ3Bpb2QpO1xcbjIwODY6XFx0XFx0fVxcbjIwODc6XFx0XFxuMjA4ODpcXHRcXHR0cmYtXFx1MDAzZWVuMl9ncGlvZCA9IGRldm1fZ3Bpb2RfZ2V0X2luZGV4X29wdGlvbmFsKHRyZi1cXHUwMDNlZGV2LCBcXFwidGksZW5hYmxlXFxcIiwgMSxcXG4yMDg5OlxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICAgICBHUElPRF9PVVRfTE9XKTtcXG4yMDkwOlxcdFxcdGlmICghdHJmLVxcdTAwM2VlbjJfZ3Bpb2QpIHtcXG4yMDkxOlxcdFxcdFxcdGRldl9pbmZvKHRyZi1cXHUwMDNlZGV2LCBcXFwiTm8gRU4yIEdQSU8gcHJvcGVydHlcXFxcblxcXCIpO1xcbjIwOTI6XFx0XFx0fSBlbHNlIGlmIChJU19FUlIodHJmLVxcdTAwM2VlbjJfZ3Bpb2QpKSB7XFxuMjA5MzpcXHRcXHRcXHRkZXZfZXJyKHRyZi1cXHUwMDNlZGV2LCBcXFwiRXJyb3IgZ2V0dGluZyBFTjIgR1BJTyBwcm9wZXJ0eTogJWxkXFxcXG5cXFwiLFxcbjIwOTQ6XFx0XFx0XFx0XFx0UFRSX0VSUih0cmYtXFx1MDAzZWVuMl9ncGlvZCkpO1xcbjIwOTU6XFx0XFx0XFx0cmV0dXJuIFBUUl9FUlIodHJmLVxcdTAwM2VlbjJfZ3Bpb2QpO1xcbjIwOTY6XFx0XFx0fSBlbHNlIGlmIChvZl9wcm9wZXJ0eV9yZWFkX2Jvb2wobnAsIFxcXCJlbjItcmYtcXVpcmtcXFwiKSkge1xcbjIwOTc6XFx0XFx0XFx0dHJmLVxcdTAwM2VxdWlya3MgfD0gVFJGNzk3MEFfUVVJUktfRU4yX01VU1RfU1RBWV9MT1c7XFxuMjA5ODpcXHRcXHR9XFxuMjA5OTpcXHRcXG4yMTAwOlxcdFxcdG9mX3Byb3BlcnR5X3JlYWRfdTMyKG5wLCBcXFwiY2xvY2stZnJlcXVlbmN5XFxcIiwgXFx1MDAyNmNsa19mcmVxKTtcXG4yMTAxOlxcdFxcdGlmICgoY2xrX2ZyZXEgIT0gVFJGNzk3MEFfMjdNSFpfQ0xPQ0tfRlJFUVVFTkNZKSBcXHUwMDI2XFx1MDAyNlxcbjIxMDI6XFx0XFx0ICAgIChjbGtfZnJlcSAhPSBUUkY3OTcwQV8xM01IWl9DTE9DS19GUkVRVUVOQ1kpKSB7XFxuMjEwMzpcXHRcXHRcXHRkZXZfZXJyKHRyZi1cXHUwMDNlZGV2LFxcbjIxMDQ6XFx0XFx0XFx0XFx0XFxcImNsb2NrLWZyZXF1ZW5jeSAoJXUgSHopIHVuc3VwcG9ydGVkXFxcXG5cXFwiLCBjbGtfZnJlcSk7XFxuMjEwNTpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4yMTA2OlxcdFxcdH1cXG4yMTA3OlxcdFxcbjIxMDg6XFx0XFx0aWYgKGNsa19mcmVxID09IFRSRjc5NzBBXzI3TUhaX0NMT0NLX0ZSRVFVRU5DWSkge1xcbjIxMDk6XFx0XFx0XFx0dHJmLVxcdTAwM2Vtb2R1bGF0b3Jfc3lzX2Nsa19jdHJsID0gVFJGNzk3MEFfTU9EVUxBVE9SXzI3TUhaO1xcbjIxMTA6XFx0XFx0XFx0ZGV2X2RiZyh0cmYtXFx1MDAzZWRldiwgXFxcInRyZjc5NzBhIGNvbmZpZ3VyZWQgZm9yIDI3TUh6IGNyeXN0YWxcXFxcblxcXCIpO1xcbjIxMTE6XFx0XFx0fSBlbHNlIHtcXG4yMTEyOlxcdFxcdFxcdHRyZi1cXHUwMDNlbW9kdWxhdG9yX3N5c19jbGtfY3RybCA9IDA7XFxuMjExMzpcXHRcXHR9XFxuMjExNDpcXHRcXG4yMTE1OlxcdFxcdGlmIChvZl9wcm9wZXJ0eV9yZWFkX3UzMihucCwgXFxcInRpLHJ4LWdhaW4tcmVkdWN0aW9uLWRiXFxcIiwgXFx1MDAyNnJ4X2dhaW5fcmVkdWN0aW9uX2RiKSA9PSAwKSB7XFxuMjExNjpcXHRcXHRcXHRpZiAocnhfZ2Fpbl9yZWR1Y3Rpb25fZGIgXFx1MDAzZSBUUkY3OTcwQV9SWF9HQUlOX1JFRFVDVElPTl9NQVhfREIpIHtcXG4yMTE3OlxcdFxcdFxcdFxcdGRldl93YXJuKHRyZi1cXHUwMDNlZGV2LCBcXFwiUlggR2FpbiByZWR1Y3Rpb24gdG9vIGhpZ2guIElnbm9yZWRcXFxcblxcXCIpO1xcbjIxMTg6XFx0XFx0XFx0fSBlbHNlIGlmICgocnhfZ2Fpbl9yZWR1Y3Rpb25fZGIgJSBUUkY3OTcwQV9SWF9HQUlOX1JFRFVDVElPTl9EQl9QRVJfTFNCKSkge1xcbjIxMTk6XFx0XFx0XFx0XFx0ZGV2X3dhcm4odHJmLVxcdTAwM2VkZXYsIFxcXCJSWCBHYWluIG11c3QgYmUgc2V0IGluIDUgZEIgaW5jcmVtZW50cy4gSWdub3JlZFxcXFxuXFxcIik7XFxuMjEyMDpcXHRcXHRcXHR9IGVsc2Uge1xcbjIxMjE6XFx0XFx0XFx0XFx0ZGV2X2RiZyh0cmYtXFx1MDAzZWRldiwgXFxcIlJYIGdhaW4gc2V0IHRvIC0ldWRCXFxcXG5cXFwiLCByeF9nYWluX3JlZHVjdGlvbl9kYik7XFxuMjEyMjpcXHRcXHRcXHRcXHR0cmYtXFx1MDAzZXJ4X2dhaW5fcmVkdWN0aW9uID0gKChyeF9nYWluX3JlZHVjdGlvbl9kYiAvXFxuMjEyMzpcXHRcXHRcXHRcXHRcXHRUUkY3OTcwQV9SWF9HQUlOX1JFRFVDVElPTl9EQl9QRVJfTFNCKSBcXHUwMDNjXFx1MDAzY1xcbjIxMjQ6XFx0XFx0XFx0XFx0XFx0VFJGNzk3MEFfUlhfU1BFQ0lBTF9TRVRUSU5HU19HRF9TSElGVCk7XFxuMjEyNTpcXHRcXHRcXHRcXHR0cmYtXFx1MDAzZWN1c3RvbV9yeF9nYWluX3JlZHVjdGlvbiA9IHRydWU7XFxuMjEyNjpcXHRcXHRcXHR9XFxuMjEyNzpcXHRcXHR9XFxuMjEyODpcXHRcXG4yMTI5OlxcdFxcdHJldCA9IGRldm1fcmVxdWVzdF90aHJlYWRlZF9pcnEodHJmLVxcdTAwM2VkZXYsIHNwaS1cXHUwMDNlaXJxLCBOVUxMLFxcbjIxMzA6XFx0XFx0XFx0XFx0XFx0XFx0dHJmNzk3MGFfaXJxLFxcbjIxMzE6XFx0XFx0XFx0XFx0XFx0XFx0SVJRRl9UUklHR0VSX1JJU0lORyB8IElSUUZfT05FU0hPVCxcXG4yMTMyOlxcdFxcdFxcdFxcdFxcdFxcdFxcXCJ0cmY3OTcwYVxcXCIsIHRyZik7XFxuMjEzMzpcXHRcXHRpZiAocmV0KSB7XFxuMjEzNDpcXHRcXHRcXHRkZXZfZXJyKHRyZi1cXHUwMDNlZGV2LCBcXFwiQ2FuJ3QgcmVxdWVzdCBJUlEjJWQ6ICVkXFxcXG5cXFwiLCBzcGktXFx1MDAzZWlycSwgcmV0KTtcXG4yMTM1OlxcdFxcdFxcdHJldHVybiByZXQ7XFxuMjEzNjpcXHRcXHR9XFxuMjEzNzpcXHRcXG4yMTM4OlxcdFxcdG11dGV4X2luaXQoXFx1MDAyNnRyZi1cXHUwMDNlbG9jayk7XFxuMjEzOTpcXHRcXHRJTklUX0RFTEFZRURfV09SSyhcXHUwMDI2dHJmLVxcdTAwM2V0aW1lb3V0X3dvcmssIHRyZjc5NzBhX3RpbWVvdXRfd29ya19oYW5kbGVyKTtcXG4yMTQwOlxcdFxcbjIxNDE6XFx0XFx0dHJmLVxcdTAwM2V2aW5fcmVndWxhdG9yID0gZGV2bV9yZWd1bGF0b3JfZ2V0KFxcdTAwMjZzcGktXFx1MDAzZWRldiwgXFxcInZpblxcXCIpO1xcbjIxNDI6XFx0XFx0aWYgKElTX0VSUih0cmYtXFx1MDAzZXZpbl9yZWd1bGF0b3IpKSB7XFxuMjE0MzpcXHRcXHRcXHRyZXQgPSBQVFJfRVJSKHRyZi1cXHUwMDNldmluX3JlZ3VsYXRvcik7XFxuMjE0NDpcXHRcXHRcXHRkZXZfZXJyKHRyZi1cXHUwMDNlZGV2LCBcXFwiQ2FuJ3QgZ2V0IFZJTiByZWd1bGF0b3I6ICVkXFxcXG5cXFwiLCByZXQpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xM1QwNToxNzoxNS40NzE0OTUyOTJaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6NDM3MDkyODM0NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFRSRjc5NzBBIFByb2JlIGluIGEgVmlydHVhbGl6ZWQgQ29udGV4dCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYHRyZjc5NzBhYCBkcml2ZXIgY29kZSBhbmQgdGhlIHByb2JlIGZ1bmN0aW9uLiBUaGUgZmlyc3QgdGhpbmcgdGhhdCBqdW1wcyBvdXQgaXMgdGhhdCBjaGVjayBvbiBsaW5lIDIwNTUsIHRoZSBgaWYgKCFucClgIHdoaWNoIGlzIGNoZWNraW5nIGZvciBhIERldmljZSBUcmVlIGVudHJ5LiBJdCBzZWVtcyBsaWtlIHRoZSBjb2RlIGlzIGV4cGVjdGluZyBhIERldmljZSBUcmVlIG5vZGUsIGluZGljYXRlZCBieSBgbnBgLiBJIHNlZSB0aGF0IHRoZSBjb2RlIGlzIGF0dGVtcHRpbmcgdG8gZ2V0IGEgYHRpLGVuYWJsZWAgR1BJTywgYW5kIGEgcmVndWxhdG9yLCBzdWdnZXN0aW5nIGEgZGVwZW5kZW5jeSBvbiB0aGUgZGV2aWNlIHRyZWUgdG8gZGVmaW5lIGhhcmR3YXJlIHJlc291cmNlcy5cblxuTXkgbWFpbiBjb25jZXJuIGlzIHdoZXRoZXIgdGhpcyBpcyBnb2luZyB0byB3b3JrIGluIGEgc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIENhbiB0aGlzIGV2ZXIgYmUgcHJvYmVkIGluIHNvbWV0aGluZyBsaWtlIFFFTVUgb3IgR29vZ2xlIENvbXB1dGUgRW5naW5lLCB3aGljaCB0eXBpY2FsbHkgcnVuIG9uIGFtZDY0P1xuXG5PbiBhbiBhbWQ2NCBtYWNoaW5lLCBEZXZpY2UgVHJlZSBpc24ndCBub3JtYWxseSB1c2VkLiB4ODYgYW5kIGFtZDY0IHN5c3RlbXMgdHlwaWNhbGx5IGJvb3QgdmlhIEFDUEkgb3IgYSBzdGFuZGFyZCBCSU9TL1VFRkkgY29uZmlndXJhdGlvbi4gRGV2aWNlIFRyZWUgaXMgZmFyIG1vcmUgY29tbW9uIGluIEFSTSwgUklTQy1WLCBNSVBTIGFuZCBzaW1pbGFyIGVtYmVkZGVkIGFyY2hpdGVjdHVyZXMuXG5cbkV2ZW4gKmlmKiBEZXZpY2UgVHJlZSBjb3VsZCBiZSBsb2FkZWQgc29tZWhvdyBpbnRvIGEgUUVNVSBpbnN0YW5jZSBvbiBhbWQ2NCwgaXMgdGhlIFRSRjc5NzBBIGRldmljZSBvciBTUEkgY29udHJvbGxlciBldmVuICphdmFpbGFibGUqIGluIFFFTVU/IE9yIGFyZSB3ZSBnb2luZyB0byBuZWVkIHNvbWUga2luZCBvZiBTUEkgZW11bGF0aW9uIG9yIHNvZnR3YXJlIFNQSSBpbXBsZW1lbnRhdGlvbiBpbiB0aGUgTGludXgga2VybmVsP1xuXG5JIG5lZWQgdG8gcXVpY2tseSBjaGVjay4gTGV0J3Mgc2VlIGlmIHRoZXJlIGFyZSBhbnkgZW11bGF0ZWQgU1BJIGNvbnRyb2xsZXJzIG9yIHZpcnR1YWwgU1BJIGRldmljZXMgZXhwb3NlZCBpbiBRRU1VIG9yIHN5emthbGxlci4gSSBuZWVkIHRvIHNlYXJjaCB0aGUgc3l6a2FsbGVyIGNvbmZpZ3VyYXRpb24gYW5kIHRoZSBrZXJuZWwgc291cmNlIGZvciBhbnkgbWVudGlvbnMgb2YgXCJzcGlcIiBvciBzaW1pbGFyIHRlcm1zIHRvIHNlZSB3aGF0IEkgY2FuIGZpbmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzMzgzLCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzU5LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTNUMDU6MTc6MTkuODQyNDI1NTU3WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTc2MzM5ODc1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInRyZjc5NzBhXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgODI1IGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L25mYy90aSx0cmY3OTcwYS55YW1sLTMtLS0tXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9uZmMvdGksdHJmNzk3MGEueWFtbDo0OiRpZDogaHR0cDovL2RldmljZXRyZWUub3JnL3NjaGVtYXMvbmV0L25mYy90aSx0cmY3OTcwYS55YW1sI1xcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbmZjL3RpLHRyZjc5NzBhLnlhbWwtNS0kc2NoZW1hOiBodHRwOi8vZGV2aWNldHJlZS5vcmcvbWV0YS1zY2hlbWFzL2NvcmUueWFtbCNcXG4tLVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbmZjL3RpLHRyZjc5NzBhLnlhbWw9MTM9cHJvcGVydGllczpcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L25mYy90aSx0cmY3OTcwYS55YW1sLTE0LSAgY29tcGF0aWJsZTpcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L25mYy90aSx0cmY3OTcwYS55YW1sOjE1OiAgICBjb25zdDogdGksdHJmNzk3MGFcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L25mYy90aSx0cmY3OTcwYS55YW1sLTE2LVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9uZmMvdGksdHJmNzk3MGEueWFtbC0yMy0gICAgZGVzY3JpcHRpb246IHxcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L25mYy90aSx0cmY3OTcwYS55YW1sOjI0OiAgICAgIFNldCB0byBzcGVjaWZ5IHRoYXQgdGhlIGlucHV0IGZyZXF1ZW5jeSB0byB0aGUgdHJmNzk3MGEgaXMgMTM1NjAwMDBIeiBvclxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbmZjL3RpLHRyZjc5NzBhLnlhbWwtMjUtICAgICAgMjcxMjAwMDBIelxcbi0tXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9uZmMvdGksdHJmNzk3MGEueWFtbC0yOS0gICAgZGVzY3JpcHRpb246IHxcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L25mYy90aSx0cmY3OTcwYS55YW1sOjMwOiAgICAgIFNwZWNpZnkgdGhhdCB0aGUgdHJmNzk3MGEgYmVpbmcgdXNlZCBoYXMgdGhlIFxcXCJFTjIgUkZcXFwiIGVycmF0dW1cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L25mYy90aSx0cmY3OTcwYS55YW1sLTMxLVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9uZmMvdGksdHJmNzk3MGEueWFtbC0zNy0gICAgZGVzY3JpcHRpb246IHxcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L25mYy90aSx0cmY3OTcwYS55YW1sOjM4OiAgICAgIFNwZWNpZnkgdGhhdCB0aGUgdHJmNzk3MGEgYmVpbmcgdXNlZCBoYXMgdGhlIFxcXCJJUlEgU3RhdHVzIFJlYWRcXFwiIGVycmF0dW1cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L25mYy90aSx0cmY3OTcwYS55YW1sLTM5LVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9uZmMvdGksdHJmNzk3MGEueWFtbD03Nz1leGFtcGxlczpcXG4tLVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbmZjL3RpLHRyZjc5NzBhLnlhbWwtODYtICAgICAgICBuZmNAMCB7XFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9uZmMvdGksdHJmNzk3MGEueWFtbDo4NzogICAgICAgICAgICBjb21wYXRpYmxlID0gXFxcInRpLHRyZjc5NzBhXFxcIjtcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L25mYy90aSx0cmY3OTcwYS55YW1sLTg4LSAgICAgICAgICAgIHJlZyA9IFxcdTAwM2MwXFx1MDAzZTtcXG4tLVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbmZjL3RpLHRyZjc5NzBhLnlhbWwtOTAtICAgICAgICAgICAgcGluY3RybC1uYW1lcyA9IFxcXCJkZWZhdWx0XFxcIjtcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L25mYy90aSx0cmY3OTcwYS55YW1sOjkxOiAgICAgICAgICAgIHBpbmN0cmwtMCA9IFxcdTAwM2NcXHUwMDI2dHJmNzk3MGFfZGVmYXVsdFxcdTAwM2U7XFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9uZmMvdGksdHJmNzk3MGEueWFtbC05Mi0gICAgICAgICAgICBzcGktbWF4LWZyZXF1ZW5jeSA9IFxcdTAwM2MyMDAwMDAwXFx1MDAzZTtcXG4tLVxcbk1BSU5UQUlORVJTPTI3NDg0PVM6XFx0U3VwcG9ydGVkXFxuTUFJTlRBSU5FUlM6Mjc0ODU6RjpcXHREb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L25mYy90aSx0cmY3OTcwYS55YW1sXFxuTUFJTlRBSU5FUlM6Mjc0ODY6RjpcXHRkcml2ZXJzL25mYy90cmY3OTcwYS5jXFxuTUFJTlRBSU5FUlMtMjc0ODctXFxuLS1cXG5hcmNoL2FybS9ib290L2R0cy9ueHAvaW14L2lteDZkbC1wcnRydnQuZHRzPTYwPVxcdG5mY0AwIHtcXG5hcmNoL2FybS9ib290L2R0cy9ueHAvaW14L2lteDZkbC1wcnRydnQuZHRzOjYxOlxcdFxcdGNvbXBhdGlibGUgPSBcXFwidGksdHJmNzk3MGFcXFwiO1xcbmFyY2gvYXJtL2Jvb3QvZHRzL254cC9pbXgvaW14NmRsLXBydHJ2dC5kdHMtNjItXFx0XFx0cmVnID0gXFx1MDAzYzBcXHUwMDNlO1xcbi0tXFxuZHJpdmVycy9uZmMvS2NvbmZpZz05PWNvbmZpZyBORkNfVFJGNzk3MEFcXG4tLVxcbmRyaXZlcnMvbmZjL0tjb25maWctMTgtXFx0ICBzYXkgTSAgdG8gY29tcGlsZSBpdCBhcyBhIG1vZHVsZS4gVGhlIG1vZHVsZSB3aWxsIGJlIGNhbGxlZFxcbmRyaXZlcnMvbmZjL0tjb25maWc6MTk6XFx0ICB0cmY3OTcwYS5rby5cXG5kcml2ZXJzL25mYy9LY29uZmlnLTIwLVxcbi0tXFxuZHJpdmVycy9uZmMvTWFrZWZpbGU9MTM9b2JqLSQoQ09ORklHX05GQ19NUlZMKVxcdFxcdCs9IG5mY21ydmwvXFxuZHJpdmVycy9uZmMvTWFrZWZpbGU6MTQ6b2JqLSQoQ09ORklHX05GQ19UUkY3OTcwQSlcXHQrPSB0cmY3OTcwYS5vXFxuZHJpdmVycy9uZmMvTWFrZWZpbGUtMTUtb2JqLSQoQ09ORklHX05GQ19TVDIxTkZDQSkgIFxcdCs9IHN0MjFuZmNhL1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0yNy1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjI4Oi8qIFRoZXJlIGFyZSAzIHdheXMgdGhlIGhvc3QgY2FuIGNvbW11bmljYXRlIHdpdGggdGhlIHRyZjc5NzBhOlxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMjktICogcGFyYWxsZWwgbW9kZSwgU1BJIHdpdGggU2xhdmUgU2VsZWN0IChTUykgbW9kZSwgYW5kIFNQSSB3aXRob3V0XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTMxLSAqXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzozMjogKiBUaGUgdHJmNzk3MGEgaXMgdmVyeSB0aW1pbmcgc2Vuc2l0aXZlIGFuZCB0aGUgVklOLCBFTjIsIGFuZCBFTlxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMzMtICogcGlucyBtdXN0IGFzc2VydGVkIGluIHRoYXQgb3JkZXIgYW5kIHdpdGggc3BlY2lmaWMgZGVsYXlzIGluIGJldHdlZW4uXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTM1LSAqIGNvbmZpcm1lZCB0byB3b3JrIHdpdGggdGhpcyBkcml2ZXIuICBUaGVyZSBpcyBhIGJ1ZyB3aXRoIHRoZSBjdXJyZW50XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzozNjogKiB2ZXJzaW9uIG9mIHRoZSB0cmY3OTcwYSB0aGF0IHJlcXVpcmVzIHRoYXQgRU4yIHJlbWFpbiBsb3cgbm8gbWF0dGVyXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0zNy0gKiB3aGF0LiAgSWYgaXQgZ29lcyBoaWdoLCBpdCB3aWxsIGdlbmVyYXRlIGFuIFJGIGZpZWxkIGV2ZW4gd2hlbiBpblxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0zOS0gKiB3aGVuIEVOMiBpcyBsZWZ0IGxvdy4gIFRoZSAnZW4yLXJmLXF1aXJrJyBkZXZpY2UgdHJlZSBwcm9wZXJ0eVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NDA6ICogaW5kaWNhdGVzIHRoYXQgdHJmNzk3MGEgY3VycmVudGx5IGJlaW5nIHVzZWQgaGFzIHRoZSBlcnJhdHVtIGFuZFxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNDEtICogdGhhdCBFTjIgbXVzdCBiZSBrZXB0IGxvdy5cXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNDQtICogVGltZW91dHMgYXJlIHJlcXVpcmVkIHNvIHRoaW5ncyBkb24ndCBoYW5nIHdoZW4gdGhlcmUgaXMgbm8gcmVzcG9uc2VcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjQ1OiAqIGZyb20gdGhlIHRyZjc5NzBhIChvciB0YWcpLiAgVXNpbmcgdGhpcyBtZWNoYW5pc20gY3JlYXRlcyBhIHJhY2Ugd2l0aFxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNDYtICogaW50ZXJydXB0cywgaG93ZXZlci4gIFRoYXQgaXMsIGFuIGludGVycnVwdCBhbmQgYSB0aW1lb3V0IGNvdWxkIG9jY3VyXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTYwLSAqIHRoZSBlbnRpcmUgYW50aWNvbGxpc2lvbiBwcm9jZWR1cmUgYWdhaW4gYnV0IHRoZSBkaWdpdGFsIGxheWVyIGRvZXNuJ3RcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjYxOiAqIHN1cHBvcnQgdGhhdC4gIFNvLCBpZiBhbiBhYm9ydCBpcyByZWNlaXZlZCBiZWZvcmUgdHJmNzk3MGFfc2VuZF9jbWQoKVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNjItICogaGFzIHNlbnQgdGhlIGNvbW1hbmQgdG8gdGhlIHRhZywgaXQgc2ltcGx5IHJldHVybnMgLUVDQU5DRUxFRC4gIElmIHRoZVxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05Ni0gKiB3aGVuIHRoZSBmcmFtaW5nIGlzICdORkNfRElHSVRBTF9GUkFNSU5HX05GQ0FfVDJUJy4gIFRoaXMgaXMgZG9uZSBieVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6OTc6ICogdGhlIHRyZjc5NzBhX3Blcl9jbWRfY29uZmlnKCkgcm91dGluZS5cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTk4LSAqXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE0NC0vKiBRdWlya3MgKi9cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE0NTovKiBFcnJhdHVtOiBXaGVuIHJlYWRpbmcgSVJRIFN0YXR1cyByZWdpc3RlciBvbiB0cmY3OTcwYSwgd2UgbXVzdCBpc3N1ZSBhXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNDYtICogcmVhZCBjb250aW51b3VzIGNvbW1hbmQgZm9yIElSUSBTdGF0dXMgYW5kIENvbGxpc2lvbiBQb3NpdGlvbiByZWdpc3RlcnMuXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTQxNS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjQxNjplbnVtIHRyZjc5NzBhX3N0YXRlIHtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTQxNy1cXHRUUkY3OTcwQV9TVF9QV1JfT0ZGLFxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy00MjktXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo0MzA6c3RydWN0IHRyZjc5NzBhIHtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjQzMTpcXHRlbnVtIHRyZjc5NzBhX3N0YXRlXFx0XFx0c3RhdGU7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy00MzItXFx0c3RydWN0IGRldmljZVxcdFxcdFxcdCpkZXY7XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTQ2NS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjQ2NjpzdGF0aWMgaW50IHRyZjc5NzBhX2NtZChzdHJ1Y3QgdHJmNzk3MGEgKnRyZiwgdTggb3Bjb2RlKVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNDY3LXtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNDc5LVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NDgwOnN0YXRpYyBpbnQgdHJmNzk3MGFfcmVhZChzdHJ1Y3QgdHJmNzk3MGEgKnRyZiwgdTggcmVnLCB1OCAqdmFsKVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNDgxLXtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNDk0LVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NDk1OnN0YXRpYyBpbnQgdHJmNzk3MGFfcmVhZF9jb250KHN0cnVjdCB0cmY3OTcwYSAqdHJmLCB1OCByZWcsIHU4ICpidWYsXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy00OTYtXFx0XFx0XFx0ICAgICAgc2l6ZV90IGxlbilcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNTIzLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NTI0OnN0YXRpYyBpbnQgdHJmNzk3MGFfd3JpdGUoc3RydWN0IHRyZjc5NzBhICp0cmYsIHU4IHJlZywgdTggdmFsKVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNTI1LXtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNTM4LVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NTM5OnN0YXRpYyBpbnQgdHJmNzk3MGFfcmVhZF9pcnFzdGF0dXMoc3RydWN0IHRyZjc5NzBhICp0cmYsIHU4ICpzdGF0dXMpXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy01NDAte1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy01NjItXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo1NjM6c3RhdGljIGludCB0cmY3OTcwYV91cGRhdGVfcnhfZ2Fpbl9yZWR1Y3Rpb24oc3RydWN0IHRyZjc5NzBhICp0cmYpXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy01NjQte1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy01NzAtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo1NzE6XFx0cmV0ID0gdHJmNzk3MGFfcmVhZCh0cmYsIFRSRjc5NzBBX1JYX1NQRUNJQUxfU0VUVElOR1MsIFxcdTAwMjZyZWcpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNTcyLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTU3Ni1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjU3NzpcXHRyZXQgPSB0cmY3OTcwYV93cml0ZSh0cmYsIFRSRjc5NzBBX1JYX1NQRUNJQUxfU0VUVElOR1MsIHJlZyk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy01NzgtXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTU4MS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjU4MjpzdGF0aWMgaW50IHRyZjc5NzBhX3VwZGF0ZV9pc29fY3RybF9yZWdpc3RlcihzdHJ1Y3QgdHJmNzk3MGEgKnRyZiwgdTggaXNvX2N0cmwpXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy01ODMte1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy01ODUtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo1ODY6XFx0cmV0ID0gdHJmNzk3MGFfd3JpdGUodHJmLCBUUkY3OTcwQV9JU09fQ1RSTCwgaXNvX2N0cmwpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNTg3LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTU5Mi1cXHQgKi9cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjU5MzpcXHRyZXQgPSB0cmY3OTcwYV91cGRhdGVfcnhfZ2Fpbl9yZWR1Y3Rpb24odHJmKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTU5NC1cXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNTk3LVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NTk4OnN0YXRpYyBpbnQgdHJmNzk3MGFfcmVhZF90YXJnZXRfcHJvdG8oc3RydWN0IHRyZjc5NzBhICp0cmYsIHU4ICp0YXJnZXRfcHJvdG8pXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy01OTkte1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02MTYtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo2MTc6c3RhdGljIGludCB0cmY3OTcwYV9tb2RlX2RldGVjdChzdHJ1Y3QgdHJmNzk3MGEgKnRyZiwgdTggKnJmX3RlY2gpXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02MTgte1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02MjEtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo2MjI6XFx0cmV0ID0gdHJmNzk3MGFfcmVhZF90YXJnZXRfcHJvdG8odHJmLCBcXHUwMDI2dGFyZ2V0X3Byb3RvKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTYyMy1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02NDktXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo2NTA6c3RhdGljIHZvaWQgdHJmNzk3MGFfc2VuZF91cHN0cmVhbShzdHJ1Y3QgdHJmNzk3MGEgKnRyZilcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTY1MS17XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTY1NS1cXHRpZiAodHJmLVxcdTAwM2VyeF9za2IgXFx1MDAyNlxcdTAwMjYgIUlTX0VSUih0cmYtXFx1MDAzZXJ4X3NrYikgXFx1MDAyNlxcdTAwMjYgIXRyZi1cXHUwMDNlYWJvcnRpbmcpXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo2NTY6XFx0XFx0cHJpbnRfaGV4X2R1bXBfZGVidWcoXFxcInRyZjc5NzBhIHJ4IGRhdGE6IFxcXCIsIERVTVBfUFJFRklYX05PTkUsXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02NTctXFx0XFx0XFx0XFx0ICAgICAxNiwgMSwgdHJmLVxcdTAwM2VyeF9za2ItXFx1MDAzZWRhdGEsIHRyZi1cXHUwMDNlcnhfc2tiLVxcdTAwM2VsZW4sXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTY3Ny1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjY3ODpzdGF0aWMgdm9pZCB0cmY3OTcwYV9zZW5kX2Vycl91cHN0cmVhbShzdHJ1Y3QgdHJmNzk3MGEgKnRyZiwgaW50IGVycm5vKVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNjc5LXtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNjg2LVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6Njg3OlxcdHRyZjc5NzBhX3NlbmRfdXBzdHJlYW0odHJmKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTY4OC19XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02ODktXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo2OTA6c3RhdGljIGludCB0cmY3OTcwYV90cmFuc21pdChzdHJ1Y3QgdHJmNzk3MGEgKnRyZiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTY5MS1cXHRcXHRcXHQgICAgIHVuc2lnbmVkIGludCBsZW4sIGNvbnN0IHU4ICpwcmVmaXgsXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTY5OC1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjY5OTpcXHRwcmludF9oZXhfZHVtcF9kZWJ1ZyhcXFwidHJmNzk3MGEgdHggZGF0YTogXFxcIiwgRFVNUF9QUkVGSVhfTk9ORSxcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTcwMC1cXHRcXHRcXHQgICAgIDE2LCAxLCBza2ItXFx1MDAzZWRhdGEsIGxlbiwgZmFsc2UpO1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy03NDctXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo3NDg6c3RhdGljIHZvaWQgdHJmNzk3MGFfZmlsbF9maWZvKHN0cnVjdCB0cmY3OTcwYSAqdHJmKVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNzQ5LXtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNzU1LVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NzU2OlxcdHJldCA9IHRyZjc5NzBhX3JlYWQodHJmLCBUUkY3OTcwQV9GSUZPX1NUQVRVUywgXFx1MDAyNmZpZm9fYnl0ZXMpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNzU3LVxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjc1ODpcXHRcXHR0cmY3OTcwYV9zZW5kX2Vycl91cHN0cmVhbSh0cmYsIHJldCk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy03NTktXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy03NzctXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo3Nzg6XFx0cmV0ID0gdHJmNzk3MGFfdHJhbnNtaXQodHJmLCBza2IsIGxlbiwgXFx1MDAyNnByZWZpeCwgc2l6ZW9mKHByZWZpeCkpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNzc5LVxcdGlmIChyZXQpXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo3ODA6XFx0XFx0dHJmNzk3MGFfc2VuZF9lcnJfdXBzdHJlYW0odHJmLCByZXQpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNzgxLX1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTc4Mi1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjc4MzpzdGF0aWMgdm9pZCB0cmY3OTcwYV9kcmFpbl9maWZvKHN0cnVjdCB0cmY3OTcwYSAqdHJmLCB1OCBzdGF0dXMpXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy03ODQte1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy03ODktXFx0aWYgKHN0YXR1cyBcXHUwMDI2IFRSRjc5NzBBX0lSUV9TVEFUVVNfRVJST1IpIHtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjc5MDpcXHRcXHR0cmY3OTcwYV9zZW5kX2Vycl91cHN0cmVhbSh0cmYsIC1FSU8pO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNzkxLVxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNzkzLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6Nzk0OlxcdHJldCA9IHRyZjc5NzBhX3JlYWQodHJmLCBUUkY3OTcwQV9GSUZPX1NUQVRVUywgXFx1MDAyNmZpZm9fYnl0ZXMpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNzk1LVxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjc5NjpcXHRcXHR0cmY3OTcwYV9zZW5kX2Vycl91cHN0cmVhbSh0cmYsIHJldCk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy03OTctXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy04MTItXFx0XFx0aWYgKCFza2IpIHtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjgxMzpcXHRcXHRcXHR0cmY3OTcwYV9zZW5kX2Vycl91cHN0cmVhbSh0cmYsIC1FTk9NRU0pO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtODE0LVxcdFxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtODIwLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6ODIxOlxcdHJldCA9IHRyZjc5NzBhX3JlYWRfY29udCh0cmYsIFRSRjc5NzBBX0ZJRk9fSU9fUkVHSVNURVIsXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy04MjItXFx0XFx0XFx0XFx0IHNrYl9wdXQoc2tiLCBmaWZvX2J5dGVzKSwgZmlmb19ieXRlcyk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy04MjMtXFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6ODI0OlxcdFxcdHRyZjc5NzBhX3NlbmRfZXJyX3Vwc3RyZWFtKHRyZiwgcmV0KTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTgyNS1cXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTgzNS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjgzNjpcXHRcXHRyZXQgPSB0cmY3OTcwYV9yZWFkKHRyZiwgVFJGNzk3MEFfRklGT19TVEFUVVMsIFxcdTAwMjZmaWZvX2J5dGVzKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTgzNy1cXHRcXHRpZiAocmV0KSB7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo4Mzg6XFx0XFx0XFx0dHJmNzk3MGFfc2VuZF9lcnJfdXBzdHJlYW0odHJmLCByZXQpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtODM5LVxcdFxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtODQ1LVxcdFxcdCAqIHRoZSBpZiBzdG10IGJlbG93IGRvZXNuJ3QgZmlyZSBhbmQgdGhlIGRyaXZlciB3aWxsIHdhaXRcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjg0NjpcXHRcXHQgKiBmb3IgdGhlIHRyZjc5NzBhIHRvIGdlbmVyYXRlIGFub3RoZXIgUlggaW50ZXJydXB0LlxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtODQ3LVxcdFxcdCAqL1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy04NTMtXFx0aWYgKHN0YXR1cyA9PSBUUkY3OTcwQV9JUlFfU1RBVFVTX1NSWCkge1xcdC8qIFJlY2VpdmUgY29tcGxldGUgKi9cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjg1NDpcXHRcXHR0cmY3OTcwYV9zZW5kX3Vwc3RyZWFtKHRyZik7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy04NTUtXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy04NjQtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo4NjU6c3RhdGljIGlycXJldHVybl90IHRyZjc5NzBhX2lycShpbnQgaXJxLCB2b2lkICpkZXZfaWQpXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy04NjYte1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6ODY3OlxcdHN0cnVjdCB0cmY3OTcwYSAqdHJmID0gZGV2X2lkO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtODY4LVxcdGludCByZXQ7XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTg3Ny1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjg3ODpcXHRyZXQgPSB0cmY3OTcwYV9yZWFkX2lycXN0YXR1cyh0cmYsIFxcdTAwMjZzdGF0dXMpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtODc5LVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtODk2LVxcdFxcdCAqIHR1cm4gb2ZmIHRoZSByZWNlaXZlciB0byBhdm9pZCB1bm5lY2Vzc2FyeSBpbnRlcnJ1cHRzLlxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6ODk3OlxcdFxcdCAqIEl0IHdpbGwgYmUgdHVybmVkIGJhY2sgb24gaW4gdHJmNzk3MGFfc2VuZF9jbWQoKSB3aGVuXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy04OTgtXFx0XFx0ICogdGhlIG5leHQgY29tbWFuZCBpcyBpc3N1ZWQuXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTkwMC1cXHRcXHRpZiAodHJmLVxcdTAwM2Vpc19pbml0aWF0b3IgXFx1MDAyNlxcdTAwMjYgKHN0YXR1cyBcXHUwMDI2IFRSRjc5NzBBX0lSUV9TVEFUVVNfRVJST1IpKSB7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo5MDE6XFx0XFx0XFx0dHJmNzk3MGFfY21kKHRyZiwgVFJGNzk3MEFfQ01EX0JMT0NLX1JYKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTkwMi1cXHRcXHRcXHR0cmYtXFx1MDAzZXN0YXRlID0gVFJGNzk3MEFfU1RfSURMRV9SWF9CTE9DS0VEO1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05MDQtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo5MDU6XFx0XFx0dHJmNzk3MGFfY21kKHRyZiwgVFJGNzk3MEFfQ01EX0ZJRk9fUkVTRVQpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTA2LVxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05MTAtXFx0XFx0XFx0ICAgICFjYW5jZWxfZGVsYXllZF93b3JrKFxcdTAwMjZ0cmYtXFx1MDAzZXRpbWVvdXRfd29yayk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo5MTE6XFx0XFx0XFx0dHJmNzk3MGFfZmlsbF9maWZvKHRyZik7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05MTItXFx0XFx0fSBlbHNlIHtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjkxMzpcXHRcXHRcXHR0cmY3OTcwYV9zZW5kX2Vycl91cHN0cmVhbSh0cmYsIC1FSU8pO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTE0LVxcdFxcdH1cXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTIwLVxcdFxcdFxcdCAgICAhY2FuY2VsX2RlbGF5ZWRfd29yayhcXHUwMDI2dHJmLVxcdTAwM2V0aW1lb3V0X3dvcmspO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6OTIxOlxcdFxcdFxcdHRyZjc5NzBhX2RyYWluX2ZpZm8odHJmLCBzdGF0dXMpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTIyLVxcdFxcdH0gZWxzZSBpZiAoc3RhdHVzIFxcdTAwMjYgVFJGNzk3MEFfSVJRX1NUQVRVU19GSUZPKSB7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo5MjM6XFx0XFx0XFx0cmV0ID0gdHJmNzk3MGFfcmVhZCh0cmYsIFRSRjc5NzBBX0ZJRk9fU1RBVFVTLFxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTI0LVxcdFxcdFxcdFxcdFxcdCAgICBcXHUwMDI2Zmlmb19ieXRlcyk7XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTkyOC1cXHRcXHRcXHRpZiAocmV0KVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6OTI5OlxcdFxcdFxcdFxcdHRyZjc5NzBhX3NlbmRfZXJyX3Vwc3RyZWFtKHRyZiwgcmV0KTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTkzMC1cXHRcXHRcXHRlbHNlIGlmICghZmlmb19ieXRlcylcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjkzMTpcXHRcXHRcXHRcXHR0cmY3OTcwYV9jbWQodHJmLCBUUkY3OTcwQV9DTURfRklGT19SRVNFVCk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05MzItXFx0XFx0fSBlbHNlIGlmICgoc3RhdHVzID09IFRSRjc5NzBBX0lSUV9TVEFUVVNfVFgpIHx8XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTkzNS1cXHRcXHRcXHRcXHRcXHRUUkY3OTcwQV9JUlFfU1RBVFVTX05GQ19SRikpKSkge1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6OTM2OlxcdFxcdFxcdHRyZjc5NzBhX2NtZCh0cmYsIFRSRjc5NzBBX0NNRF9GSUZPX1JFU0VUKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTkzNy1cXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTQxLVxcdFxcdFxcdFxcdHRyZi1cXHUwMDNlcnhfc2tiID0gTlVMTDtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjk0MjpcXHRcXHRcXHRcXHR0cmY3OTcwYV9zZW5kX3Vwc3RyZWFtKHRyZik7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05NDMtXFx0XFx0XFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTk2Mi1cXHRcXHRcXHRjYXNlIE5GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDQV9BTlRJQ09MX0NPTVBMRVRFOlxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6OTYzOlxcdFxcdFxcdFxcdHJldCA9IHRyZjc5NzBhX3dyaXRlKHRyZixcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTk2NC1cXHRcXHRcXHRcXHRcXHQgVFJGNzk3MEFfU1BFQ0lBTF9GQ05fUkVHMSxcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTc2LVxcdFxcdFxcdGlmIChpc29fY3RybCAhPSB0cmYtXFx1MDAzZWlzb19jdHJsKSB7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo5Nzc6XFx0XFx0XFx0XFx0cmV0ID0gdHJmNzk3MGFfdXBkYXRlX2lzb19jdHJsX3JlZ2lzdGVyKHRyZiwgaXNvX2N0cmwpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTc4LVxcdFxcdFxcdFxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTk4My1cXHRcXHR9IGVsc2Uge1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6OTg0OlxcdFxcdFxcdHRyZjc5NzBhX3NlbmRfZXJyX3Vwc3RyZWFtKHRyZiwgLUVJTyk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05ODUtXFx0XFx0fVxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05ODgtXFx0XFx0aWYgKHN0YXR1cyAhPSBUUkY3OTcwQV9JUlFfU1RBVFVTX1RYKVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6OTg5OlxcdFxcdFxcdHRyZjc5NzBhX3NlbmRfZXJyX3Vwc3RyZWFtKHRyZiwgLUVJTyk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05OTAtXFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTk5NC1cXHRcXHRcXHQgICAgIWNhbmNlbF9kZWxheWVkX3dvcmsoXFx1MDAyNnRyZi1cXHUwMDNldGltZW91dF93b3JrKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjk5NTpcXHRcXHRcXHR0cmY3OTcwYV9kcmFpbl9maWZvKHRyZiwgc3RhdHVzKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTk5Ni1cXHRcXHR9IGVsc2UgaWYgKCEoc3RhdHVzIFxcdTAwMjYgVFJGNzk3MEFfSVJRX1NUQVRVU19ORkNfUkYpKSB7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo5OTc6XFx0XFx0XFx0dHJmNzk3MGFfc2VuZF9lcnJfdXBzdHJlYW0odHJmLCAtRUlPKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTk5OC1cXHRcXHR9XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwMDQtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMDA1OlxcdFxcdFxcdHJldCA9IHRyZjc5NzBhX21vZGVfZGV0ZWN0KHRyZiwgXFx1MDAyNnRyZi1cXHUwMDNlbWRfcmZfdGVjaCk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDA2LVxcdFxcdFxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEwMDc6XFx0XFx0XFx0XFx0dHJmNzk3MGFfc2VuZF9lcnJfdXBzdHJlYW0odHJmLCByZXQpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTAwOC1cXHRcXHRcXHR9IGVsc2Uge1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTAwOS1cXHRcXHRcXHRcXHR0cmYtXFx1MDAzZXN0YXRlID0gVFJGNzk3MEFfU1RfTElTVEVOSU5HO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTAxMDpcXHRcXHRcXHRcXHR0cmY3OTcwYV9kcmFpbl9maWZvKHRyZiwgc3RhdHVzKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwMTEtXFx0XFx0XFx0fVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTAxMi1cXHRcXHR9IGVsc2UgaWYgKCEoc3RhdHVzIFxcdTAwMjYgVFJGNzk3MEFfSVJRX1NUQVRVU19ORkNfUkYpKSB7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMDEzOlxcdFxcdFxcdHRyZjc5NzBhX3NlbmRfZXJyX3Vwc3RyZWFtKHRyZiwgLUVJTyk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDE0LVxcdFxcdH1cXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTAyNS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEwMjY6c3RhdGljIHZvaWQgdHJmNzk3MGFfaXNzdWVfZW9mKHN0cnVjdCB0cmY3OTcwYSAqdHJmKVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTAyNy17XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwMzEtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMDMyOlxcdHJldCA9IHRyZjc5NzBhX2NtZCh0cmYsIFRSRjc5NzBBX0NNRF9GSUZPX1JFU0VUKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwMzMtXFx0aWYgKHJldClcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEwMzQ6XFx0XFx0dHJmNzk3MGFfc2VuZF9lcnJfdXBzdHJlYW0odHJmLCByZXQpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTAzNS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEwMzY6XFx0cmV0ID0gdHJmNzk3MGFfY21kKHRyZiwgVFJGNzk3MEFfQ01EX0VPRik7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDM3LVxcdGlmIChyZXQpXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMDM4OlxcdFxcdHRyZjc5NzBhX3NlbmRfZXJyX3Vwc3RyZWFtKHRyZiwgcmV0KTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwMzktXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwNDgtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMDQ5OnN0YXRpYyB2b2lkIHRyZjc5NzBhX3RpbWVvdXRfd29ya19oYW5kbGVyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwNTAte1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTA1MTpcXHRzdHJ1Y3QgdHJmNzk3MGEgKnRyZiA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgdHJmNzk3MGEsXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDUyLVxcdFxcdFxcdFxcdFxcdCAgICB0aW1lb3V0X3dvcmsud29yayk7XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwNjEtXFx0ZWxzZSBpZiAodHJmLVxcdTAwM2VzdGF0ZSA9PSBUUkY3OTcwQV9TVF9XQUlUX0ZPUl9SWF9EQVRBX0NPTlQpXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMDYyOlxcdFxcdHRyZjc5NzBhX2RyYWluX2ZpZm8odHJmLCBUUkY3OTcwQV9JUlFfU1RBVFVTX1NSWCk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDYzLVxcdGVsc2UgaWYgKHRyZi1cXHUwMDNlc3RhdGUgPT0gVFJGNzk3MEFfU1RfV0FJVF9UT19JU1NVRV9FT0YpXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMDY0OlxcdFxcdHRyZjc5NzBhX2lzc3VlX2VvZih0cmYpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTA2NS1cXHRlbHNlXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMDY2OlxcdFxcdHRyZjc5NzBhX3NlbmRfZXJyX3Vwc3RyZWFtKHRyZiwgLUVUSU1FRE9VVCk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDY3LVxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDcwLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTA3MTpzdGF0aWMgaW50IHRyZjc5NzBhX2luaXQoc3RydWN0IHRyZjc5NzBhICp0cmYpXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDcyLXtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTA3Ni1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEwNzc6XFx0cmV0ID0gdHJmNzk3MGFfY21kKHRyZiwgVFJGNzk3MEFfQ01EX1NPRlRfSU5JVCk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDc4LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwODEtXFx0LyogU2V0IHRoZSBnYWluIHJlZHVjdGlvbiBhZnRlciBzb2Z0IGluaXQgKi9cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEwODI6XFx0cmV0ID0gdHJmNzk3MGFfdXBkYXRlX3J4X2dhaW5fcmVkdWN0aW9uKHRyZik7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDgzLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwODUtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMDg2OlxcdHJldCA9IHRyZjc5NzBhX2NtZCh0cmYsIFRSRjc5NzBBX0NNRF9JRExFKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwODctXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTA4OS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEwOTA6XFx0cmV0ID0gdHJmNzk3MGFfd3JpdGUodHJmLCBUUkY3OTcwQV9SRUdfSU9fQ1RSTCxcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwOTEtXFx0XFx0XFx0ICAgICB0cmYtXFx1MDAzZWlvX2N0cmwgfCBUUkY3OTcwQV9SRUdfSU9fQ1RSTF9WUlMoMHgxKSk7XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwOTQtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMDk1OlxcdHJldCA9IHRyZjc5NzBhX3dyaXRlKHRyZiwgVFJGNzk3MEFfTkZDX1RBUkdFVF9MRVZFTCwgMCk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDk2LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExMDItXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMTAzOlxcdHJldCA9IHRyZjc5NzBhX3dyaXRlKHRyZiwgVFJGNzk3MEFfTU9EVUxBVE9SX1NZU19DTEtfQ1RSTCxcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExMDQtXFx0XFx0XFx0ICAgICB0cmYtXFx1MDAzZW1vZHVsYXRvcl9zeXNfY2xrX2N0cmwpO1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMTA3LVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTEwODpcXHRyZXQgPSB0cmY3OTcwYV93cml0ZSh0cmYsIFRSRjc5NzBBX0FESlVUQUJMRV9GSUZPX0lSUV9MRVZFTFMsXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMTA5LVxcdFxcdFxcdCAgICAgVFJGNzk3MEFfQURKVVRBQkxFX0ZJRk9fSVJRX0xFVkVMU19XTEhfOTYgfFxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMTEzLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTExNDpcXHRyZXQgPSB0cmY3OTcwYV93cml0ZSh0cmYsIFRSRjc5NzBBX1NQRUNJQUxfRkNOX1JFRzEsIDApO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTExNS1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMTI3LVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTEyODpzdGF0aWMgdm9pZCB0cmY3OTcwYV9zd2l0Y2hfcmZfb2ZmKHN0cnVjdCB0cmY3OTcwYSAqdHJmKVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTEyOS17XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExMzctXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMTM4OlxcdHRyZjc5NzBhX3dyaXRlKHRyZiwgVFJGNzk3MEFfQ0hJUF9TVEFUVVNfQ1RSTCwgdHJmLVxcdTAwM2VjaGlwX3N0YXR1c19jdHJsKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExMzktXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExNDYtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMTQ3OnN0YXRpYyBpbnQgdHJmNzk3MGFfc3dpdGNoX3JmX29uKHN0cnVjdCB0cmY3OTcwYSAqdHJmKVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTE0OC17XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExNjAtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMTYxOlxcdHJldCA9IHRyZjc5NzBhX2luaXQodHJmKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExNjItXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMTcxLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTE3MjpzdGF0aWMgaW50IHRyZjc5NzBhX3N3aXRjaF9yZihzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCBib29sIG9uKVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTE3My17XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMTc0OlxcdHN0cnVjdCB0cmY3OTcwYSAqdHJmID0gbmZjX2RpZ2l0YWxfZ2V0X2RydmRhdGEoZGRldik7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMTc1LVxcdGludCByZXQgPSAwO1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMTg0LVxcdFxcdGNhc2UgVFJGNzk3MEFfU1RfUkZfT0ZGOlxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTE4NTpcXHRcXHRcXHRyZXQgPSB0cmY3OTcwYV9zd2l0Y2hfcmZfb24odHJmKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExODYtXFx0XFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExOTItXFx0XFx0XFx0XFx0X19mdW5jX18sIHRyZi1cXHUwMDNlc3RhdGUsIG9uKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjExOTM6XFx0XFx0XFx0dHJmNzk3MGFfc3dpdGNoX3JmX29mZih0cmYpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTE5NC1cXHRcXHRcXHRyZXQgPSAtRUlOVkFMO1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMjA5LVxcdFxcdGNhc2UgVFJGNzk3MEFfU1RfV0FJVF9GT1JfUlhfREFUQV9DT05UOlxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTIxMDpcXHRcXHRcXHR0cmY3OTcwYV9zd2l0Y2hfcmZfb2ZmKHRyZik7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMjExLVxcdFxcdH1cXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTIxNy1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEyMTg6c3RhdGljIGludCB0cmY3OTcwYV9pbl9jb25maWdfcmZfdGVjaChzdHJ1Y3QgdHJmNzk3MGEgKnRyZiwgaW50IHRlY2gpXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMjE5LXtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTI2OC1cXHQgKiBQU0wgc2VxdWVuY2UgKGluZGljYXRlZCBieSAndHJmLVxcdTAwM2Vpc29fY3RybCA9PSAweGZmJyBmcm9tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMjY5OlxcdCAqIHRyZjc5NzBhX2luaXQoKSksIGNsZWFyIHRoZSBORkMgVGFyZ2V0IERldGVjdGlvbiBMZXZlbCByZWdpc3RlclxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTI3MC1cXHQgKiBkdWUgdG8gZXJyYXR1bS5cXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTI3Mi1cXHRpZiAodHJmLVxcdTAwM2Vpc29fY3RybCA9PSAweGZmKVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTI3MzpcXHRcXHRyZXQgPSB0cmY3OTcwYV93cml0ZSh0cmYsIFRSRjc5NzBBX05GQ19UQVJHRVRfTEVWRUwsIDApO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTI3NC1cXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTI3Ny1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEyNzg6c3RhdGljIGludCB0cmY3OTcwYV9pc19yZl9maWVsZChzdHJ1Y3QgdHJmNzk3MGEgKnRyZiwgYm9vbCAqaXNfcmZfZmllbGQpXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMjc5LXtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTI4Mi1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEyODM6XFx0cmV0ID0gdHJmNzk3MGFfd3JpdGUodHJmLCBUUkY3OTcwQV9DSElQX1NUQVRVU19DVFJMLFxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTI4NC1cXHRcXHRcXHQgICAgIHRyZi1cXHUwMDNlY2hpcF9zdGF0dXNfY3RybCB8XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEyODgtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMjg5OlxcdHJldCA9IHRyZjc5NzBhX2NtZCh0cmYsIFRSRjc5NzBBX0NNRF9URVNUX0VYVF9SRik7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMjkwLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEyOTQtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMjk1OlxcdHJldCA9IHRyZjc5NzBhX3JlYWQodHJmLCBUUkY3OTcwQV9SU1NJX09TQ19TVEFUVVMsIFxcdTAwMjZyc3NpKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEyOTYtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTI5OC1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEyOTk6XFx0cmV0ID0gdHJmNzk3MGFfd3JpdGUodHJmLCBUUkY3OTcwQV9DSElQX1NUQVRVU19DVFJMLFxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTMwMC1cXHRcXHRcXHQgICAgIHRyZi1cXHUwMDNlY2hpcF9zdGF0dXNfY3RybCk7XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEzMTEtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMzEyOnN0YXRpYyBpbnQgdHJmNzk3MGFfaW5fY29uZmlnX2ZyYW1pbmcoc3RydWN0IHRyZjc5NzBhICp0cmYsIGludCBmcmFtaW5nKVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTMxMy17XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEzNTAtXFx0aWYgKCEodHJmLVxcdTAwM2VjaGlwX3N0YXR1c19jdHJsIFxcdTAwMjYgVFJGNzk3MEFfQ0hJUF9TVEFUVVNfUkZfT04pKSB7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMzUxOlxcdFxcdHJldCA9IHRyZjc5NzBhX2lzX3JmX2ZpZWxkKHRyZiwgXFx1MDAyNmlzX3JmX2ZpZWxkKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEzNTItXFx0XFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTM1OS1cXHRpZiAoaXNvX2N0cmwgIT0gdHJmLVxcdTAwM2Vpc29fY3RybCkge1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTM2MDpcXHRcXHRyZXQgPSB0cmY3OTcwYV91cGRhdGVfaXNvX2N0cmxfcmVnaXN0ZXIodHJmLCBpc29fY3RybCk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMzYxLVxcdFxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEzNjUtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMzY2OlxcdFxcdHJldCA9IHRyZjc5NzBhX3dyaXRlKHRyZiwgVFJGNzk3MEFfTU9EVUxBVE9SX1NZU19DTEtfQ1RSTCxcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEzNjctXFx0XFx0XFx0XFx0ICAgICB0cmYtXFx1MDAzZW1vZHVsYXRvcl9zeXNfY2xrX2N0cmwpO1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMzcyLVxcdGlmICghKHRyZi1cXHUwMDNlY2hpcF9zdGF0dXNfY3RybCBcXHUwMDI2IFRSRjc5NzBBX0NISVBfU1RBVFVTX1JGX09OKSkge1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTM3MzpcXHRcXHRyZXQgPSB0cmY3OTcwYV93cml0ZSh0cmYsIFRSRjc5NzBBX0NISVBfU1RBVFVTX0NUUkwsXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMzc0LVxcdFxcdFxcdFxcdCAgICAgdHJmLVxcdTAwM2VjaGlwX3N0YXR1c19jdHJsIHxcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTM4Ni1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEzODc6c3RhdGljIGludCB0cmY3OTcwYV9pbl9jb25maWd1cmVfaHcoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgaW50IHR5cGUsXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMzg4LVxcdFxcdFxcdFxcdCAgICBpbnQgcGFyYW0pXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMzg5LXtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEzOTA6XFx0c3RydWN0IHRyZjc5NzBhICp0cmYgPSBuZmNfZGlnaXRhbF9nZXRfZHJ2ZGF0YShkZGV2KTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEzOTEtXFx0aW50IHJldDtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTQwMC1cXHQgICAgKHRyZi1cXHUwMDNlc3RhdGUgPT0gVFJGNzk3MEFfU1RfUkZfT0ZGKSkge1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTQwMTpcXHRcXHRyZXQgPSB0cmY3OTcwYV9zd2l0Y2hfcmZfb24odHJmKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE0MDItXFx0XFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTQwNy1cXHRjYXNlIE5GQ19ESUdJVEFMX0NPTkZJR19SRl9URUNIOlxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTQwODpcXHRcXHRyZXQgPSB0cmY3OTcwYV9pbl9jb25maWdfcmZfdGVjaCh0cmYsIHBhcmFtKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE0MDktXFx0XFx0YnJlYWs7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNDEwLVxcdGNhc2UgTkZDX0RJR0lUQUxfQ09ORklHX0ZSQU1JTkc6XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNDExOlxcdFxcdHJldCA9IHRyZjc5NzBhX2luX2NvbmZpZ19mcmFtaW5nKHRyZiwgcGFyYW0pO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTQxMi1cXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTQyMi1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE0MjM6c3RhdGljIGludCB0cmY3OTcwYV9pc19pc28xNTY5M193cml0ZV9vcl9sb2NrKHU4IGNtZClcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE0MjQte1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNDM4LVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTQzOTpzdGF0aWMgaW50IHRyZjc5NzBhX3Blcl9jbWRfY29uZmlnKHN0cnVjdCB0cmY3OTcwYSAqdHJmLFxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTQ0MC1cXHRcXHRcXHRcXHQgICBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNDY0LVxcdFxcdGlmIChzcGVjaWFsX2Zjbl9yZWcxICE9IHRyZi1cXHUwMDNlc3BlY2lhbF9mY25fcmVnMSkge1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTQ2NTpcXHRcXHRcXHRyZXQgPSB0cmY3OTcwYV93cml0ZSh0cmYsIFRSRjc5NzBBX1NQRUNJQUxfRkNOX1JFRzEsXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNDY2LVxcdFxcdFxcdFxcdFxcdCAgICAgc3BlY2lhbF9mY25fcmVnMSk7XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE0OTEtXFx0XFx0aWYgKGlzb19jdHJsICE9IHRyZi1cXHUwMDNlaXNvX2N0cmwpIHtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE0OTI6XFx0XFx0XFx0cmV0ID0gdHJmNzk3MGFfdXBkYXRlX2lzb19jdHJsX3JlZ2lzdGVyKHRyZiwgaXNvX2N0cmwpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTQ5My1cXHRcXHRcXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNDk5LVxcdFxcdGlmICgodHJmLVxcdTAwM2VmcmFtaW5nID09IE5GQ19ESUdJVEFMX0ZSQU1JTkdfSVNPMTU2OTNfVDVUKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTUwMDpcXHRcXHQgICAgdHJmNzk3MGFfaXNfaXNvMTU2OTNfd3JpdGVfb3JfbG9jayhyZXFbMV0pIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNTAxLVxcdFxcdCAgICAocmVxWzBdIFxcdTAwMjYgSVNPMTU2OTNfUkVRX0ZMQUdfT1BUSU9OKSlcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTUwNy1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE1MDg6c3RhdGljIGludCB0cmY3OTcwYV9zZW5kX2NtZChzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTUwOS1cXHRcXHRcXHQgICAgIHN0cnVjdCBza19idWZmICpza2IsIHUxNiB0aW1lb3V0LFxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNTExLXtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE1MTI6XFx0c3RydWN0IHRyZjc5NzBhICp0cmYgPSBuZmNfZGlnaXRhbF9nZXRfZHJ2ZGF0YShkZGV2KTtcXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTNUMDU6MTc6MjEuNDE4Nzc1MTEyWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjY2OTIyODQ0NzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBSZWFjaGFiaWxpdHkgb2YgVFJGNzk3MEEgRHJpdmVyIGZvciBGdXp6aW5nKipcblxuT2theSwgc28gdGhlIGB0cmY3OTcwYWAgZHJpdmVyIGlzIGxvY2F0ZWQgaW4gYGFyY2gvYXJtL2Jvb3QvZHRzL254cC9pbXgvaW14NmRsLXBydHJ2dC5kdHNgLiBJbW1lZGlhdGVseSwgSSBzZWUgc29tZSBrZXkgcmVxdWlyZW1lbnRzOiBpdCBuZWVkcyBhbiBgc3BpLVx1MDAzZWRldi5vZl9ub2RlYCBEZXZpY2UgVHJlZSBlbnRyeSAoYG5wYCkgZm9yIHByb3BlciBpbml0aWFsaXphdGlvbiwgR1BJTyBwaW5zIChzcGVjaWZpY2FsbHkgYHRpLGVuYWJsZWApLCBhbmQgYSByZWd1bGF0b3IgYHZpbmAuIEl0J3MgYW4gU1BJIGRldmljZSwgc3BlY2lmaWNhbGx5IGZvciB0aGUgVGV4YXMgSW5zdHJ1bWVudHMgVFJGNzk3MGEgTkZDIHRyYW5zY2VpdmVyIGNoaXAuXG5cbk5vdyB0aGUgY3JpdGljYWwgcXVlc3Rpb246IGNhbiB0aGlzIGV2ZXIgYmUgcmVhY2hlZCBmb3IgZnV6emluZywgZ2l2ZW4gdGhlIHRhcmdldCBlbnZpcm9ubWVudCBpcyBhbWQ2NCwgdHlwaWNhbGx5IGluIFFFTVUgb3IgR0NFPyBUaGUgaW5zdHJ1Y3Rpb25zIGVtcGhhc2l6ZSByZWFjaGFiaWxpdHkuIFNlY3Rpb24gMSBhbmQgMiBtYWtlIHRoaXMgdmVyeSBjbGVhcjogYW55IGZ1enppbmcgaGFzIHRvIGJlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gVW5yZWFjaGFibGUgaGFyZHdhcmUgbWVhbnMgKm5vKiBmdXp6aW5nLiBJIG5lZWQgdG8gYmUgYWJzb2x1dGVseSBzdXJlIHRoaXMgaXMgcmVhY2hhYmxlLlxuXG5UaGUgZHJpdmVyIHJlcXVpcmVzIERldmljZSBUcmVlIGluZm9ybWF0aW9uIGFuZCBzcGVjaWZpYyBoYXJkd2FyZSBmZWF0dXJlcywgd2hpY2ggaXMgY29uY2VybmluZy4gVGhlIHRleHQgbGlzdHMgc2V2ZXJhbCBleGFtcGxlcyBvZiBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgY29kZSwgaW5jbHVkaW5nIHZlbmRvci1zcGVjaWZpYyBQQ0llIGRldmljZXMgYW5kIGRyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgdGhhdCBhcmUgdHJpZ2dlcmVkIGJ5IGhvdC11bnBsdWcgb3IgbWFudWFsIHVuYmluZGluZy4gVGhpcyBpbnN0YW50bHkgbWFrZXMgbWUgdGhpbmsgb2YgU1BJIGRldmljZXMgYW5kIHNwZWNpZmljIGhhcmR3YXJlIGRlcGVuZGVuY2llcy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgU1BJIGlzIGVtdWxhdGVkIGluIGEgd2F5IHRoYXQgd291bGQgYWxsb3cgdGhlIGZ1enppbmcgdG8gd29yaywgb3IgaWYgaXQgY291bnRzIGFzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS4gRG9lcyBRRU1VIG9yIHN5emthbGxlciBoYXZlICphbnkqIHdheSB0byBpbnN0YW50aWF0ZSBhIFRSRjc5NzBBIFNQSSBkZXZpY2U/XG5cbk15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGNoZWNrIGlmIHN5emthbGxlciBldmVuIHN1cHBvcnRzIFNQSSBkZXZpY2VzLiBJdCBoYXMgcHNldWRvLXN5c2NhbGxzIGZvciB0aGluZ3MgbGlrZSBVU0IsIG5ldGxpbmssIGFuZCB2aG9zdCwgYnV0IGRvZXMgaXQgaGF2ZSBgc3l6X3NwaV8qYCBjYWxscz8gSWYgaXQgZG9lcywgdGhhdCdzIGEgZ29vZCBzaWduLiBIb3dldmVyLCBJIGNhbid0IGltbWVkaWF0ZWx5IHVzZSBzeXotZ3JlcHBlciBvbiBzeXprYWxsZXIgZGVzY3JpcHRpb25zLCBJJ2QgbmVlZCB0aGUgdG9vbHMgdG8gYmUgcHJlc2VudCBhbmQgYWNjZXNzaWJsZSwgc28gdGhlIG5leHQgYmVzdCBhcHByb2FjaCBpcyB0byBjaGVjayB0aGUga2VybmVsIGl0c2VsZiBhbmQgc3l6Ym90IGZvciBTUEkgc3VwcG9ydC4gSSdtIGdvaW5nIHRvIGdyZXAgdGhlIGBkcml2ZXJzL3NwaWAgZGlyZWN0b3J5IGZvciB0ZXJtcyBsaWtlIFwibW9ja1wiIG9yIGEgXCJ2aXJ0dWFsIGJ1c1wiLiBNYXliZSB0aGVyZSdzIGEgbWVjaGFuaXNtIGluIHBsYWNlIHRvIGVtdWxhdGUgU1BJIGRldmljZXMgZm9yIHRlc3Rpbmc/IElmIG5vdCwgdGhpcyBsb29rcyBsaWtlIGEgZGVhZCBlbmQgZm9yIGZ1enppbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM3NTk2LCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjU2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEzVDA1OjE3OjI4LjExMTA2MjQ2MVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJjb2Rlc2VhcmNoLWRpci1pbmRleCIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI4MTkyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkRpclwiOiBcImRyaXZlcnMvc3BpXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIkZpbGVzXCI6IFtcbiAgICBcImF0bWVsLXF1YWRzcGkuY1wiLFxuICAgIFwiaW50ZXJuYWxzLmhcIixcbiAgICBcInNwaS1haXJvaGEtc25maS5jXCIsXG4gICAgXCJzcGktYWx0ZXJhLWNvcmUuY1wiLFxuICAgIFwic3BpLWFsdGVyYS1kZmwuY1wiLFxuICAgIFwic3BpLWFsdGVyYS1wbGF0Zm9ybS5jXCIsXG4gICAgXCJzcGktYW1kLXBjaS5jXCIsXG4gICAgXCJzcGktYW1kLmNcIixcbiAgICBcInNwaS1hbWQuaFwiLFxuICAgIFwic3BpLWFtbG9naWMtc3BpZmMtYTEuY1wiLFxuICAgIFwic3BpLWFtbG9naWMtc3BpZmMtYTQuY1wiLFxuICAgIFwic3BpLWFtbG9naWMtc3Bpc2cuY1wiLFxuICAgIFwic3BpLWFwcGxlLmNcIixcbiAgICBcInNwaS1hcjkzNHguY1wiLFxuICAgIFwic3BpLWFybWFkYS0zNzAwLmNcIixcbiAgICBcInNwaS1hc3BlZWQtc21jLmNcIixcbiAgICBcInNwaS1hdDkxLXVzYXJ0LmNcIixcbiAgICBcInNwaS1hdGNzcGkyMDAuY1wiLFxuICAgIFwic3BpLWF0aDc5LmNcIixcbiAgICBcInNwaS1hdG1lbC5jXCIsXG4gICAgXCJzcGktYXUxNTUwLmNcIixcbiAgICBcInNwaS1heGktc3BpLWVuZ2luZS5jXCIsXG4gICAgXCJzcGktYXhpYWRvLmNcIixcbiAgICBcInNwaS1heGlhZG8uaFwiLFxuICAgIFwic3BpLWJjbS1xc3BpLmNcIixcbiAgICBcInNwaS1iY20tcXNwaS5oXCIsXG4gICAgXCJzcGktYmNtMjgzNS5jXCIsXG4gICAgXCJzcGktYmNtMjgzNWF1eC5jXCIsXG4gICAgXCJzcGktYmNtNjN4eC1oc3NwaS5jXCIsXG4gICAgXCJzcGktYmNtNjN4eC5jXCIsXG4gICAgXCJzcGktYmNtYmNhLWhzc3BpLmNcIixcbiAgICBcInNwaS1iaXRiYW5nLXR4cnguaFwiLFxuICAgIFwic3BpLWJpdGJhbmcuY1wiLFxuICAgIFwic3BpLWJyY21zdGItcXNwaS5jXCIsXG4gICAgXCJzcGktYnV0dGVyZmx5LmNcIixcbiAgICBcInNwaS1jYWRlbmNlLXF1YWRzcGkuY1wiLFxuICAgIFwic3BpLWNhZGVuY2UteHNwaS5jXCIsXG4gICAgXCJzcGktY2FkZW5jZS5jXCIsXG4gICAgXCJzcGktY2F2aXVtLW9jdGVvbi5jXCIsXG4gICAgXCJzcGktY2F2aXVtLXRodW5kZXJ4LmNcIixcbiAgICBcInNwaS1jYXZpdW0uY1wiLFxuICAgIFwic3BpLWNhdml1bS5oXCIsXG4gICAgXCJzcGktY2gzNDEuY1wiLFxuICAgIFwic3BpLWNscHM3MTF4LmNcIixcbiAgICBcInNwaS1jb2xkZmlyZS1xc3BpLmNcIixcbiAgICBcInNwaS1jczQybDQzLmNcIixcbiAgICBcInNwaS1kYXZpbmNpLmNcIixcbiAgICBcInNwaS1kbG4yLmNcIixcbiAgICBcInNwaS1kdy1jb3JlLmNcIixcbiAgICBcInNwaS1kdy1kbWEuY1wiLFxuICAgIFwic3BpLWR3LW1taW8uY1wiLFxuICAgIFwic3BpLWR3LXBjaS5jXCIsXG4gICAgXCJzcGktZHcuaFwiLFxuICAgIFwic3BpLWVwOTN4eC5jXCIsXG4gICAgXCJzcGktZmFsY29uLmNcIixcbiAgICBcInNwaS1mc2kuY1wiLFxuICAgIFwic3BpLWZzbC1jcG0uY1wiLFxuICAgIFwic3BpLWZzbC1jcG0uaFwiLFxuICAgIFwic3BpLWZzbC1kc3BpLmNcIixcbiAgICBcInNwaS1mc2wtZXNwaS5jXCIsXG4gICAgXCJzcGktZnNsLWxpYi5jXCIsXG4gICAgXCJzcGktZnNsLWxpYi5oXCIsXG4gICAgXCJzcGktZnNsLWxwc3BpLmNcIixcbiAgICBcInNwaS1mc2wtcXNwaS5jXCIsXG4gICAgXCJzcGktZnNsLXNwaS5jXCIsXG4gICAgXCJzcGktZnNsLXNwaS5oXCIsXG4gICAgXCJzcGktZ2VuaS1xY29tLmNcIixcbiAgICBcInNwaS1ncGlvLmNcIixcbiAgICBcInNwaS1neHAuY1wiLFxuICAgIFwic3BpLWhpc2kta3VucGVuZy5jXCIsXG4gICAgXCJzcGktaGlzaS1zZmMtdjN4eC5jXCIsXG4gICAgXCJzcGktaW1nLXNwZmkuY1wiLFxuICAgIFwic3BpLWlteC5jXCIsXG4gICAgXCJzcGktaW5nZW5pYy5jXCIsXG4gICAgXCJzcGktaW50ZWwtcGNpLmNcIixcbiAgICBcInNwaS1pbnRlbC1wbGF0Zm9ybS5jXCIsXG4gICAgXCJzcGktaW50ZWwuY1wiLFxuICAgIFwic3BpLWludGVsLmhcIixcbiAgICBcInNwaS1pcHJvYy1xc3BpLmNcIixcbiAgICBcInNwaS1qY29yZS5jXCIsXG4gICAgXCJzcGkta3NwaTIuY1wiLFxuICAgIFwic3BpLWxhbnRpcS1zc2MuY1wiLFxuICAgIFwic3BpLWxqY2EuY1wiLFxuICAgIFwic3BpLWxtNzBsbHAuY1wiLFxuICAgIFwic3BpLWxvb25nc29uLWNvcmUuY1wiLFxuICAgIFwic3BpLWxvb25nc29uLXBjaS5jXCIsXG4gICAgXCJzcGktbG9vbmdzb24tcGxhdC5jXCIsXG4gICAgXCJzcGktbG9vbmdzb24uaFwiLFxuICAgIFwic3BpLWxvb3BiYWNrLXRlc3QuY1wiLFxuICAgIFwic3BpLWxwODg0MS1ydGMuY1wiLFxuICAgIFwic3BpLW1hMzVkMS1xc3BpLmNcIixcbiAgICBcInNwaS1tZW0uY1wiLFxuICAgIFwic3BpLW1lc29uLXNwaWNjLmNcIixcbiAgICBcInNwaS1tZXNvbi1zcGlmYy5jXCIsXG4gICAgXCJzcGktbWljcm9jaGlwLWNvcmUtcXNwaS5jXCIsXG4gICAgXCJzcGktbWljcm9jaGlwLWNvcmUtc3BpLmNcIixcbiAgICBcInNwaS1tcGM1MTJ4LXBzYy5jXCIsXG4gICAgXCJzcGktbXBjNTJ4eC1wc2MuY1wiLFxuICAgIFwic3BpLW1wYzUyeHguY1wiLFxuICAgIFwic3BpLW1wZnMuY1wiLFxuICAgIFwic3BpLW10NjV4eC5jXCIsXG4gICAgXCJzcGktbXQ3NjIxLmNcIixcbiAgICBcInNwaS1tdGstbm9yLmNcIixcbiAgICBcInNwaS1tdGstc25maS5jXCIsXG4gICAgXCJzcGktbXV4LmNcIixcbiAgICBcInNwaS1teGljLmNcIixcbiAgICBcInNwaS1teHMuY1wiLFxuICAgIFwic3BpLW5wY20tZml1LmNcIixcbiAgICBcInNwaS1ucGNtLXBzcGkuY1wiLFxuICAgIFwic3BpLW54cC1mc3BpLmNcIixcbiAgICBcInNwaS1ueHAteHNwaS5jXCIsXG4gICAgXCJzcGktb2MtdGlueS5jXCIsXG4gICAgXCJzcGktb2ZmbG9hZC10cmlnZ2VyLWFkaS11dGlsLXNpZ21hLWRlbHRhLmNcIixcbiAgICBcInNwaS1vZmZsb2FkLXRyaWdnZXItcHdtLmNcIixcbiAgICBcInNwaS1vZmZsb2FkLmNcIixcbiAgICBcInNwaS1vbWFwLXV3aXJlLmNcIixcbiAgICBcInNwaS1vbWFwMi1tY3NwaS5jXCIsXG4gICAgXCJzcGktb3Jpb24uY1wiLFxuICAgIFwic3BpLXBjaTF4eHh4LmNcIixcbiAgICBcInNwaS1waWMzMi1zcWkuY1wiLFxuICAgIFwic3BpLXBpYzMyLmNcIixcbiAgICBcInNwaS1wbDAyMi5jXCIsXG4gICAgXCJzcGktcHBjNHh4LmNcIixcbiAgICBcInNwaS1weGEyeHgtZG1hLmNcIixcbiAgICBcInNwaS1weGEyeHgtcGNpLmNcIixcbiAgICBcInNwaS1weGEyeHgtcGxhdGZvcm0uY1wiLFxuICAgIFwic3BpLXB4YTJ4eC5jXCIsXG4gICAgXCJzcGktcHhhMnh4LmhcIixcbiAgICBcInNwaS1xY29tLXFzcGkuY1wiLFxuICAgIFwic3BpLXFwaWMtc25hbmQuY1wiLFxuICAgIFwic3BpLXF1cC5jXCIsXG4gICAgXCJzcGktcmI0eHguY1wiLFxuICAgIFwic3BpLXJlYWx0ZWstcnRsLXNuYW5kLmNcIixcbiAgICBcInNwaS1yZWFsdGVrLXJ0bC5jXCIsXG4gICAgXCJzcGktcm9ja2NoaXAtc2ZjLmNcIixcbiAgICBcInNwaS1yb2NrY2hpcC5jXCIsXG4gICAgXCJzcGktcnBjLWlmLmNcIixcbiAgICBcInNwaS1yc3BpLmNcIixcbiAgICBcInNwaS1yenYyaC1yc3BpLmNcIixcbiAgICBcInNwaS1yenYybS1jc2kuY1wiLFxuICAgIFwic3BpLXMzYzY0eHguY1wiLFxuICAgIFwic3BpLXNjMThpczYwMi5jXCIsXG4gICAgXCJzcGktc2cyMDQ0LW5vci5jXCIsXG4gICAgXCJzcGktc2gtaHNwaS5jXCIsXG4gICAgXCJzcGktc2gtbXNpb2YuY1wiLFxuICAgIFwic3BpLXNoLXNjaS5jXCIsXG4gICAgXCJzcGktc2guY1wiLFxuICAgIFwic3BpLXNpZml2ZS5jXCIsXG4gICAgXCJzcGktc2xhdmUtbXQyN3h4LmNcIixcbiAgICBcInNwaS1zbGF2ZS1zeXN0ZW0tY29udHJvbC5jXCIsXG4gICAgXCJzcGktc2xhdmUtdGltZS5jXCIsXG4gICAgXCJzcGktc24tZi1vc3BpLmNcIixcbiAgICBcInNwaS1zcGFjZW1pdC1rMS5jXCIsXG4gICAgXCJzcGktc3ByZC1hZGkuY1wiLFxuICAgIFwic3BpLXNwcmQuY1wiLFxuICAgIFwic3BpLXN0LXNzYzQuY1wiLFxuICAgIFwic3BpLXN0bTMyLW9zcGkuY1wiLFxuICAgIFwic3BpLXN0bTMyLXFzcGkuY1wiLFxuICAgIFwic3BpLXN0bTMyLmNcIixcbiAgICBcInNwaS1zdW40aS5jXCIsXG4gICAgXCJzcGktc3VuNmkuY1wiLFxuICAgIFwic3BpLXN1bnBsdXMtc3A3MDIxLmNcIixcbiAgICBcInNwaS1zeW5xdWFjZXIuY1wiLFxuICAgIFwic3BpLXRlZ3JhMTE0LmNcIixcbiAgICBcInNwaS10ZWdyYTIwLXNmbGFzaC5jXCIsXG4gICAgXCJzcGktdGVncmEyMC1zbGluay5jXCIsXG4gICAgXCJzcGktdGVncmEyMTAtcXVhZC5jXCIsXG4gICAgXCJzcGktdGVzdC5oXCIsXG4gICAgXCJzcGktdGktcXNwaS5jXCIsXG4gICAgXCJzcGktdGxlNjJ4MC5jXCIsXG4gICAgXCJzcGktdG9wY2xpZmYtcGNoLmNcIixcbiAgICBcInNwaS11bmlwaGllci5jXCIsXG4gICAgXCJzcGktdmlydGlvLmNcIixcbiAgICBcInNwaS13cGNtLWZpdS5jXCIsXG4gICAgXCJzcGkteGNvbW0uY1wiLFxuICAgIFwic3BpLXhpbGlueC5jXCIsXG4gICAgXCJzcGkteGxwLmNcIixcbiAgICBcInNwaS14dGVuc2EteHRmcGdhLmNcIixcbiAgICBcInNwaS16eW5xLXFzcGkuY1wiLFxuICAgIFwic3BpLXp5bnFtcC1ncXNwaS5jXCIsXG4gICAgXCJzcGkuY1wiLFxuICAgIFwic3BpZGV2LmNcIlxuICBdLFxuICBcIlN1YmRpcnNcIjogW1xuICAgIFwidGVzdHNcIlxuICBdXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xM1QwNToxNzoyOC4xMTEzNDc1MDFaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6ODYzNzI3NDU3NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXNpcyBvZiBUUkY3OTcwQSBEcml2ZXIgUmVhY2hhYmlsaXR5IGZvciBGdXp6aW5nKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBXZSdyZSBsb29raW5nIGF0IHRoZSBgdHJmNzk3MGFgIGRyaXZlciwgc3BlY2lmaWNhbGx5IHRoZSBgdHJmNzk3MGFfcHJvYmVgIGZ1bmN0aW9uLiBUaGUgY29kZSBpbW1lZGlhdGVseSBmbGFncyBhIERldmljZSBUcmVlIGRlcGVuZGVuY3kgKGBzcGktXHUwMDNlZGV2Lm9mX25vZGVgIG11c3QgYmUgbm9uLU5VTEwpLiAgVGhpcyBpcyB0aGUgZmlyc3QgcmVkIGZsYWcsIGFzIHRoaXMgaW1wbGllcyBhIHNwZWNpZmljIGhhcmR3YXJlIGNvbmZpZ3VyYXRpb24gZGVmaW5lZCBpbiB0aGUgRGV2aWNlIFRyZWUuICBGdXJ0aGVyIGRvd24sIGl0IGNhbGxzIGZvciBhIEdQSU8gZW5hYmxlIGxpbmUgKGB0aSxlbmFibGVgKSBhbmQgYSB2b2x0YWdlIHJlZ3VsYXRvciAoXCJ2aW5cIikuIFRoaXMgaW1wbGllcyBwaHlzaWNhbCBoYXJkd2FyZSBpbnRlcmFjdGlvbiwgYW5kIHRoZSByZWxpYW5jZSBvbiBEZXZpY2UgVHJlZSBjb25maWd1cmF0aW9uIHRlbGxzIHVzIHRoaXMgaXNuJ3QgYSB2aXJ0dWFsIGRldmljZS5cblxuVGhlIHRhcmdldCBpcyBBTUQ2NCwgd2hpY2ggaXMgaW1wb3J0YW50LiBBTUQ2NCB0eXBpY2FsbHkgdXNlcyBBQ1BJLCBub3QgRGV2aWNlIFRyZWUsIHNvIGltbWVkaWF0ZWx5IHRoaXMgaXMgYSBwcm9ibGVtLiAgV2UncmUgdGFsa2luZyBhYm91dCBhICpwaHlzaWNhbCogTkZDIHRyYW5zY2VpdmVyIEFTSUMg4oCTIHRoZSBUUkY3OTcwQSDigJMgY29ubmVjdGVkIHZpYSBhbiBTUEkgYnVzLiAgVGhlc2UgY2hpcHMgYXJlIGNvbW1vbmx5IGZvdW5kIGluIGVtYmVkZGVkIHN5c3RlbXMsIHdoaWNoIHRlbmQgdG8gYmUgQVJNLWJhc2VkLCBzdWNoIGFzIHRoZSBpLk1YNiBhcyBzaG93biBpbiBzb21lIGtlcm5lbCBEVFMgZmlsZXMuIFRoZSBpbXBsaWNhdGlvbiBpcyB0aGF0IHdlIHJlcXVpcmUgYSBwaHlzaWNhbCBjaGlwIG9uIGFuIFNQSSBidXMgYW5kIGEgbWF0Y2hpbmcgRGV2aWNlIFRyZWUgY29uZmlndXJhdGlvbiwgdGhhdCBpcyBhIHBoeXNpY2FsIHRhcmdldC5cblxuUUVNVSwgR0NFLCBhbmQgb3RoZXIgc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzICpkbyBub3QqIGVtdWxhdGUgdGhpcyBjaGlwLiBUaGV5IGFsc28gZG9uJ3QgdHlwaWNhbGx5IGhhdmUgZGV2aWNlIHRyZWUgbm9kZXMgZm9yIFRSRjc5NzBBLiBFdmVuIGlmIHdlICpjb3VsZCogY3JlYXRlIGFuIFNQSSBkZXZpY2UsIHRoZSBkcml2ZXIncyBwcm9iZSBmdW5jdGlvbiBpdHNlbGYgcmV0dXJucyBhbiBlcnJvciBpZiBgbnBgIGlzIE5VTEwuIFRoZSBkcml2ZXIgaXNuJ3QganVzdCBkaWZmaWN1bHQgdG8gcmVhY2g7IGl0J3Mgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLiBUaGUgZ3VpZGUgY2xlYXJseSBzYXlzIHRoYXQgdW5yZWFjaGFibGUgY29kZSBzaG91bGQgbm90IGJlIGZ1enplZC5cblxuTG9va2luZyBmdXJ0aGVyLCBgdHJmNzk3MGFfc3RhcnR1cGAgaXMgb25seSBldmVyIGNhbGxlZCBmcm9tIGB0cmY3OTcwYV9wcm9iZWAgKGR1cmluZyBpbml0aWFsIHNldHVwKSBhbmQgYHRyZjc5NzBhX3Jlc3VtZWAuIFNpbmNlIGB0cmY3OTcwYV9wcm9iZWAgcmVxdWlyZXMgdGhlIGRldmljZSB0cmVlLCB0aGUgZHJpdmVyJ3MgcHJvYmUgaXMgb25seSByZWFjaGFibGUgdmlhIERUIGNvbmZpZ3VyYXRpb24gdGhhdCBpcyBuZXZlciBwcmVzZW50IG9uIHN0YW5kYXJkIGFtZDY0IHN5c3RlbXMgZW11bGF0ZWQgaW4gUUVNVSBvciBHQ0UuXG5cblRodXMsIGJhc2VkIG9uIHRoZSByZWFjaGFiaWxpdHkgZ3VpZGVsaW5lcywgdGhlIGNhbGwgdG8gYHRyZjc5NzBhX3N0YXJ0dXBgIGFuZCB0aGUgY29kZSBpbiBgZHJpdmVycy9uZmMvdHJmNzk3MGEuY2AgYXJlIGNvbXBsZXRlbHkgdW5yZWFjaGFibGUgaW4gYSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50IG9uIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLiAgVGhlcmVmb3JlLCBgV29ydGhGdXp6aW5nYCBpcyB1bmVxdWl2b2NhbGx5IGBmYWxzZWAuIFRoZSByZWFzb25pbmcgaXMgdGhhdCB0aGUgZHJpdmVyIGlzIGRlc2lnbmVkIGZvciBhIHNwZWNpZmljIHBpZWNlIG9mIHBoeXNpY2FsIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIG9yIHNpbXVsYXRlZCwgYW5kIHRoZSBidXMgYW5kIGNvbmZpZ3VyYXRpb24gb2YgdGhlIGRldmljZSBpcyBpbmNvbXBhdGlibGUgd2l0aCB0aGUgdGFyZ2V0IHBsYXRmb3JtLiBUaGVyZSBhcmUgbm8gcmVsZXZhbnQgZm9jdXMgc3ltYm9scyBvciBlbmFibGUgY29uZmlndXJhdGlvbnMgbmVlZGVkLiBUaW1lIHRvIHNldCB0aGUgcmVzdWx0cyFcblxuXG4iLCJJbnB1dFRva2VucyI6NDA4NDQsIk91dHB1dFRva2VucyI6MTU2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMzMSwiVG9vbENhbGxzIjpbImNvZGVzZWFyY2gtZGlyLWluZGV4Il19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTNUMDU6MTc6MzYuNzQ4NjI0ODY2WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjAyNTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgZXJyb3IgaGFuZGxpbmcgaW4gdHJmNzk3MGFfc3RhcnR1cCgpIHdpdGhpbiBkcml2ZXJzL25mYy90cmY3OTcwYS5jLiBUaGUgdHJmNzk3MGEgZHJpdmVyIGlzIGEgZGVkaWNhdGVkIFNQSSBkcml2ZXIgZm9yIFRleGFzIEluc3RydW1lbnRzIFRSRjc5NzBBIE5GQyB0cmFuc2NlaXZlciBjaGlwcywgcmVseWluZyBzdHJpY3RseSBvbiBEZXZpY2UgVHJlZSBiaW5kaW5ncyAoZmFpbGluZyBwcm9iZSBpZiBzcGktXFx1MDAzZWRldi5vZl9ub2RlIGlzIGFic2VudCkgYWxvbmcgd2l0aCBkZWRpY2F0ZWQgR1BJT3MgYW5kIHJlZ3VsYXRvcnMuIFRoaXMgcGh5c2ljYWwgQVNJQyBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS9HQ0UgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIG9uIGFtZDY0LCByZW5kZXJpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBzeXprYWxsZXIgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGVycm9yIGhhbmRsaW5nIGluIHRyZjc5NzBhX3N0YXJ0dXAoKSB3aXRoaW4gZHJpdmVycy9uZmMvdHJmNzk3MGEuYy4gVGhlIHRyZjc5NzBhIGRyaXZlciBpcyBhIGRlZGljYXRlZCBTUEkgZHJpdmVyIGZvciBUZXhhcyBJbnN0cnVtZW50cyBUUkY3OTcwQSBORkMgdHJhbnNjZWl2ZXIgY2hpcHMsIHJlbHlpbmcgc3RyaWN0bHkgb24gRGV2aWNlIFRyZWUgYmluZGluZ3MgKGZhaWxpbmcgcHJvYmUgaWYgc3BpLVxcdTAwM2VkZXYub2Zfbm9kZSBpcyBhYnNlbnQpIGFsb25nIHdpdGggZGVkaWNhdGVkIEdQSU9zIGFuZCByZWd1bGF0b3JzLiBUaGlzIHBoeXNpY2FsIEFTSUMgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUvR0NFIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBvbiBhbWQ2NCwgcmVuZGVyaW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3Igc3l6a2FsbGVyIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xM1QwNToxNzozNi43NDg2NTA1MTZaIiwiU2VxIjoyMSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxMzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },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-workflow2g9wz[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-13 04:28:29 +0000 UTC FinishedAt: 2026-09-13 05:17:37 +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+CgkJCTx0ZD4yMDI2LzA5LzEzIDA1OjE2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgZXJyb3IgaGFuZGxpbmcgaW4gdHJmNzk3MGFfc3RhcnR1cCgpIHdpdGhpbiBkcml2ZXJzL25mYy90cmY3OTcwYS5jLiBUaGUgdHJmNzk3MGEgZHJpdmVyIGlzIGEgZGVkaWNhdGVkIFNQSSBkcml2ZXIgZm9yIFRleGFzIEluc3RydW1lbnRzIFRSRjc5NzBBIE5GQyB0cmFuc2NlaXZlciBjaGlwcywgcmVseWluZyBzdHJpY3RseSBvbiBEZXZpY2UgVHJlZSBiaW5kaW5ncyAoZmFpbGluZyBwcm9iZSBpZiBzcGktXHUwMDNlZGV2Lm9mX25vZGUgaXMgYWJzZW50KSBhbG9uZyB3aXRoIGRlZGljYXRlZCBHUElPcyBhbmQgcmVndWxhdG9ycy4gVGhpcyBwaHlzaWNhbCBBU0lDIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL0dDRSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgb24gYW1kNjQsIHJlbmRlcmluZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIHN5emthbGxlciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMyAwNToxNjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGFhYTRkNWFhZmNmN2YzYTAxNjkzN2QyODY4NjhmNzlkNjhiYmUzMjRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIFNlcCAxMyAwNToxNjo1MiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25mYy90cmY3OTcwYS5jIGIvZHJpdmVycy9uZmMvdHJmNzk3MGEuY1xuaW5kZXggNjA4ODMwMDFmYTVkOS4uZGRmYzU4YzI5OTY0OSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmZjL3RyZjc5NzBhLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmZjL3RyZjc5NzBhLmNcbkBAIC0xOTk3LDggJiM0MzsxOTk3LDEwIEBAIHN0YXRpYyBpbnQgdHJmNzk3MGFfc3RhcnR1cChzdHJ1Y3QgdHJmNzk3MGEgKnRyZilcbiBcdFx0cmV0dXJuIHJldDtcbiBcbiBcdHJldCA9IHRyZjc5NzBhX3VwZGF0ZV9yeF9nYWluX3JlZHVjdGlvbih0cmYpO1xuLVx0aWYgKHJldClcbiYjNDM7XHRpZiAocmV0KSB7XG4mIzQzO1x0XHR0cmY3OTcwYV9wb3dlcl9kb3duKHRyZik7XG4gXHRcdHJldHVybiByZXQ7XG4mIzQzO1x0fVxuIFxuIFx0cG1fcnVudGltZV9zZXRfYWN0aXZlKHRyZi1cdTAwM2VkZXYpO1xuIFx0cG1fcnVudGltZV9lbmFibGUodHJmLVx1MDAzZWRldik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTMgMDU6MTY8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgZXJyb3IgaGFuZGxpbmcgaW4gdHJmNzk3MGFfc3RhcnR1cCgpIHdpdGhpbiBkcml2ZXJzL25mYy90cmY3OTcwYS5jLiBUaGUgdHJmNzk3MGEgZHJpdmVyIGlzIGEgZGVkaWNhdGVkIFNQSSBkcml2ZXIgZm9yIFRleGFzIEluc3RydW1lbnRzIFRSRjc5NzBBIE5GQyB0cmFuc2NlaXZlciBjaGlwcywgcmVseWluZyBzdHJpY3RseSBvbiBEZXZpY2UgVHJlZSBiaW5kaW5ncyAoZmFpbGluZyBwcm9iZSBpZiBzcGktXHUwMDNlZGV2Lm9mX25vZGUgaXMgYWJzZW50KSBhbG9uZyB3aXRoIGRlZGljYXRlZCBHUElPcyBhbmQgcmVndWxhdG9ycy4gVGhpcyBwaHlzaWNhbCBBU0lDIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL0dDRSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgb24gYW1kNjQsIHJlbmRlcmluZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIHN5emthbGxlciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzCnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoxLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsCmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuCgotIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOgogIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQKICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLgogIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCwKICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuCgotIERPIE5PVCBCTElORExZIFRSVVNUICYjMzQ7Tk8gRlVOQ1RJT05BTCBDSEFOR0UmIzM0OyAoTkZDSSkgT1IgJiMzNDtSRUZBQ1RPUklORyYjMzQ7IENMQUlNUzoKICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzICYjMzQ7Y2xlYW51cHMmIzM0OywgJiMzNDtyZWZhY3RvcmluZ3MmIzM0Oywgb3Igc3RhdGUKICAmIzM0O05vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkJiMzNDsuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLgogIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudAogIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLgogIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuCgotIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOgogIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKiwKICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy4KICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyCiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczoKCi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczoKICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy4KICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKQogICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLgogICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHMKICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuCiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuCi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOgogICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6CiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmcKICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLgogICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOgotIENvcmUgU3Vic3lzdGVtczoKICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSwKICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy4KLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6CiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuCi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOgogICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLgotIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6CiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo0LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTikKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6CgotIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzoKICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1cwogIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0CiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuCiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzICYjMzQ7Zm9jdXNlZCYjMzQ7LAogIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy4KCi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOgogIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50cwogIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LgoKLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6CiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFjawogIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLgogIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlcgogIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZToKLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgotIENoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuCi0gU3RyaXAgYW55ICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGFhYTRkNWFhZmNmN2YzYTAxNjkzN2QyODY4NjhmNzlkNjhiYmUzMjQKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU3VuIFNlcCAxMyAwNToxNjo1MiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmZjL3RyZjc5NzBhLmMgYi9kcml2ZXJzL25mYy90cmY3OTcwYS5jCmluZGV4IDYwODgzMDAxZmE1ZDkuLmRkZmM1OGMyOTk2NDkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmZjL3RyZjc5NzBhLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZmMvdHJmNzk3MGEuYwpAQCAtMTk5Nyw4ICYjNDM7MTk5NywxMCBAQCBzdGF0aWMgaW50IHRyZjc5NzBhX3N0YXJ0dXAoc3RydWN0IHRyZjc5NzBhICp0cmYpCiAJCXJldHVybiByZXQ7CiAKIAlyZXQgPSB0cmY3OTcwYV91cGRhdGVfcnhfZ2Fpbl9yZWR1Y3Rpb24odHJmKTsKLQlpZiAocmV0KQomIzQzOwlpZiAocmV0KSB7CiYjNDM7CQl0cmY3OTcwYV9wb3dlcl9kb3duKHRyZik7CiAJCXJldHVybiByZXQ7CiYjNDM7CX0KIAogCXBtX3J1bnRpbWVfc2V0X2FjdGl2ZSh0cmYtJmd0O2Rldik7CiAJcG1fcnVudGltZV9lbmFibGUodHJmLSZndDtkZXYpOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMyAwNToxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTEzCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMzE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFRSRjc5NzBBIERyaXZlciBQYXRjaCoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2guIFRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlIGlzIGFtZDY0LCB3aGljaCBpcyBnb29kIHRvIGtub3csIGJ1dCBkb2VzbiYjMzk7dCByZWFsbHkgYWZmZWN0IHRoZSBjb2RlIGNoYW5nZSBpdHNlbGYuIEl0JiMzOTtzIGEgZGlmZiBvbiBgZHJpdmVycy9uZmMvdHJmNzk3MGEuY2AuIFRoZSBjaGFuZ2UgaXMgc3RyYWlnaHRmb3J3YXJkLCBhbmQgdGhlIGxpbmUgbnVtYmVycyBhcmUgcHJldHR5IGNsb3NlLCBzbyBpdCYjMzk7cyBhIHNtYWxsLCB0YXJnZXRlZCB1cGRhdGUuCgpUaGUgY29yZSBvZiB0aGUgY2hhbmdlIGxvb2tzIGxpa2UgYSBzdWJ0bGUgYnVnIGZpeCBvciBlbmhhbmNlbWVudCB0byBlcnJvciBoYW5kbGluZyB3aXRoaW4gdGhlIGB0cmY3OTcwYV9zdGFydHVwYCBmdW5jdGlvbi4gU3BlY2lmaWNhbGx5LCBpdCBzZWVtcyBsaWtlIHRoZSBgdHJmNzk3MGFfdXBkYXRlX3J4X2dhaW5fcmVkdWN0aW9uYCBmdW5jdGlvbiYjMzk7cyByZXR1cm4gY29kZSB3YXNuJiMzOTt0IGJlaW5nIGZ1bGx5IGhhbmRsZWQuIE5vdywgaWYgYHRyZjc5NzBhX3VwZGF0ZV9yeF9nYWluX3JlZHVjdGlvbmAgcmV0dXJucyBhbiBlcnJvciAoYHJldGAgaXMgbm9uLXplcm8pLCB0aGUgcGF0Y2ggZW5zdXJlcyB0aGF0IHRoZSBgdHJmNzk3MGFfcG93ZXJfZG93bmAgZnVuY3Rpb24gaXMgY2FsbGVkICpiZWZvcmUqIHJldHVybmluZyBmcm9tIHRoZSBgdHJmNzk3MGFfc3RhcnR1cGAgZnVuY3Rpb24uIFRoaXMgaXMgYSBjcnVjaWFsIHNhZmV0eSBtZWFzdXJlOyBpdCYjMzk7cyB0aGUgcmlnaHQgd2F5IHRvIGVuc3VyZSBjbGVhbiBzaHV0ZG93biB3aGVuIGFuIGVycm9yIG9jY3VycywgcHJldmVudGluZyBwb3RlbnRpYWwgaXNzdWVzIHdpdGggdGhlIGhhcmR3YXJlIHN0YXRlIG9yIHJlc291cmNlIGxlYWtzLiBXaXRob3V0IGl0LCB0aGUgZGV2aWNlIG1pZ2h0IHN0YXkgaW4gYW4gdW5kZWZpbmVkIHN0YXRlLCBzbyB0aGlzIGlzIGEgZ3JlYXQgY2F0Y2guCgpOb3csIGJlZm9yZSBJIGdpdmUgdGhpcyBwYXRjaCBhIHRodW1icy11cCwgSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IGNoZWNrIGEgZmV3IHRoaW5ncy4gSSYjMzk7bGwgdXNlIGBncmVwYCAob3IgcG9zc2libHkgbG9vayBhdCB0aGUgZmlsZSYjMzk7cyBzdXJyb3VuZGluZyBjb2RlKSB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0LiBJIHdhbnQgdG8gc2VlIGhvdyBgdHJmNzk3MGEuY2AgaXMgY29uZmlndXJlZCAoS2NvbmZpZyksIGFueSBvdGhlciBmdW5jdGlvbnMgY2FsbGluZyBpdCwgYW5kIGFsc28gdGhlIHVuZGVybHlpbmcgYnVzIHR5cGUgKFNQSSwgSTJDLCBldGMuKSB0aGF0IHRoZSBkcml2ZXIgaW50ZXJhY3RzIHdpdGguIEkgd2FudCB0byBtYWtlIHN1cmUgdGhlIGNoYW5nZSBpcyBjb25zaXN0ZW50IHdpdGggdGhlIG92ZXJhbGwgZHJpdmVyIGJlaGF2aW9yIGFuZCBkb2VzbiYjMzk7dCBpbnRyb2R1Y2UgYW55IHJlZ3Jlc3Npb25zIG9yIHNpZGUgZWZmZWN0cy4gVGhpcyBzdGVwIHdpbGwgbGV0IG1lIHZlcmlmeSB0aGF0IHRoaXMgcG93ZXItZG93biBpcyBhbHNvIGFwcHJvcHJpYXRlIGZvciB0aGUgdW5kZXJseWluZyBidXMuIEdvb2QgaHlnaWVuZSBkZW1hbmRzIHRoaXMgc29ydCBvZiBiYXNpYyBkdWUgZGlsaWdlbmNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEzIDA1OjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3RyZjc5NzBhJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDc4NSBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuZHJpdmVycy9uZmMvS2NvbmZpZz05PWNvbmZpZyBORkNfVFJGNzk3MEFcbi0tXG5kcml2ZXJzL25mYy9LY29uZmlnLTE4LVx0ICBzYXkgTSAgdG8gY29tcGlsZSBpdCBhcyBhIG1vZHVsZS4gVGhlIG1vZHVsZSB3aWxsIGJlIGNhbGxlZFxuZHJpdmVycy9uZmMvS2NvbmZpZzoxOTpcdCAgdHJmNzk3MGEua28uXG5kcml2ZXJzL25mYy9LY29uZmlnLTIwLVxuLS1cbmRyaXZlcnMvbmZjL01ha2VmaWxlPTEzPW9iai0kKENPTkZJR19ORkNfTVJWTClcdFx0JiM0Mzs9IG5mY21ydmwvXG5kcml2ZXJzL25mYy9NYWtlZmlsZToxNDpvYmotJChDT05GSUdfTkZDX1RSRjc5NzBBKVx0JiM0Mzs9IHRyZjc5NzBhLm9cbmRyaXZlcnMvbmZjL01ha2VmaWxlLTE1LW9iai0kKENPTkZJR19ORkNfU1QyMU5GQ0EpICBcdCYjNDM7PSBzdDIxbmZjYS9cbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTI3LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoyODovKiBUaGVyZSBhcmUgMyB3YXlzIHRoZSBob3N0IGNhbiBjb21tdW5pY2F0ZSB3aXRoIHRoZSB0cmY3OTcwYTpcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMjktICogcGFyYWxsZWwgbW9kZSwgU1BJIHdpdGggU2xhdmUgU2VsZWN0IChTUykgbW9kZSwgYW5kIFNQSSB3aXRob3V0XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0zMS0gKlxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzozMjogKiBUaGUgdHJmNzk3MGEgaXMgdmVyeSB0aW1pbmcgc2Vuc2l0aXZlIGFuZCB0aGUgVklOLCBFTjIsIGFuZCBFTlxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0zMy0gKiBwaW5zIG11c3QgYXNzZXJ0ZWQgaW4gdGhhdCBvcmRlciBhbmQgd2l0aCBzcGVjaWZpYyBkZWxheXMgaW4gYmV0d2Vlbi5cbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTM1LSAqIGNvbmZpcm1lZCB0byB3b3JrIHdpdGggdGhpcyBkcml2ZXIuICBUaGVyZSBpcyBhIGJ1ZyB3aXRoIHRoZSBjdXJyZW50XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjM2OiAqIHZlcnNpb24gb2YgdGhlIHRyZjc5NzBhIHRoYXQgcmVxdWlyZXMgdGhhdCBFTjIgcmVtYWluIGxvdyBubyBtYXR0ZXJcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMzctICogd2hhdC4gIElmIGl0IGdvZXMgaGlnaCwgaXQgd2lsbCBnZW5lcmF0ZSBhbiBSRiBmaWVsZCBldmVuIHdoZW4gaW5cbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTM5LSAqIHdoZW4gRU4yIGlzIGxlZnQgbG93LiAgVGhlICYjMzk7ZW4yLXJmLXF1aXJrJiMzOTsgZGV2aWNlIHRyZWUgcHJvcGVydHlcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NDA6ICogaW5kaWNhdGVzIHRoYXQgdHJmNzk3MGEgY3VycmVudGx5IGJlaW5nIHVzZWQgaGFzIHRoZSBlcnJhdHVtIGFuZFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy00MS0gKiB0aGF0IEVOMiBtdXN0IGJlIGtlcHQgbG93LlxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNDQtICogVGltZW91dHMgYXJlIHJlcXVpcmVkIHNvIHRoaW5ncyBkb24mIzM5O3QgaGFuZyB3aGVuIHRoZXJlIGlzIG5vIHJlc3BvbnNlXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjQ1OiAqIGZyb20gdGhlIHRyZjc5NzBhIChvciB0YWcpLiAgVXNpbmcgdGhpcyBtZWNoYW5pc20gY3JlYXRlcyBhIHJhY2Ugd2l0aFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy00Ni0gKiBpbnRlcnJ1cHRzLCBob3dldmVyLiAgVGhhdCBpcywgYW4gaW50ZXJydXB0IGFuZCBhIHRpbWVvdXQgY291bGQgb2NjdXJcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTYwLSAqIHRoZSBlbnRpcmUgYW50aWNvbGxpc2lvbiBwcm9jZWR1cmUgYWdhaW4gYnV0IHRoZSBkaWdpdGFsIGxheWVyIGRvZXNuJiMzOTt0XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjYxOiAqIHN1cHBvcnQgdGhhdC4gIFNvLCBpZiBhbiBhYm9ydCBpcyByZWNlaXZlZCBiZWZvcmUgdHJmNzk3MGFfc2VuZF9jbWQoKVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02Mi0gKiBoYXMgc2VudCB0aGUgY29tbWFuZCB0byB0aGUgdGFnLCBpdCBzaW1wbHkgcmV0dXJucyAtRUNBTkNFTEVELiAgSWYgdGhlXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05Ni0gKiB3aGVuIHRoZSBmcmFtaW5nIGlzICYjMzk7TkZDX0RJR0lUQUxfRlJBTUlOR19ORkNBX1QyVCYjMzk7LiAgVGhpcyBpcyBkb25lIGJ5XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjk3OiAqIHRoZSB0cmY3OTcwYV9wZXJfY21kX2NvbmZpZygpIHJvdXRpbmUuXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTk4LSAqXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNDQtLyogUXVpcmtzICovXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE0NTovKiBFcnJhdHVtOiBXaGVuIHJlYWRpbmcgSVJRIFN0YXR1cyByZWdpc3RlciBvbiB0cmY3OTcwYSwgd2UgbXVzdCBpc3N1ZSBhXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE0Ni0gKiByZWFkIGNvbnRpbnVvdXMgY29tbWFuZCBmb3IgSVJRIFN0YXR1cyBhbmQgQ29sbGlzaW9uIFBvc2l0aW9uIHJlZ2lzdGVycy5cbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTQxNS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NDE2OmVudW0gdHJmNzk3MGFfc3RhdGUge1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy00MTctXHRUUkY3OTcwQV9TVF9QV1JfT0ZGLFxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNDI5LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo0MzA6c3RydWN0IHRyZjc5NzBhIHtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NDMxOlx0ZW51bSB0cmY3OTcwYV9zdGF0ZVx0XHRzdGF0ZTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNDMyLVx0c3RydWN0IGRldmljZVx0XHRcdCpkZXY7XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy00NjUtXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjQ2NjpzdGF0aWMgaW50IHRyZjc5NzBhX2NtZChzdHJ1Y3QgdHJmNzk3MGEgKnRyZiwgdTggb3Bjb2RlKVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy00Njcte1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNDc5LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo0ODA6c3RhdGljIGludCB0cmY3OTcwYV9yZWFkKHN0cnVjdCB0cmY3OTcwYSAqdHJmLCB1OCByZWcsIHU4ICp2YWwpXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTQ4MS17XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy00OTQtXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjQ5NTpzdGF0aWMgaW50IHRyZjc5NzBhX3JlYWRfY29udChzdHJ1Y3QgdHJmNzk3MGEgKnRyZiwgdTggcmVnLCB1OCAqYnVmLFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy00OTYtXHRcdFx0ICAgICAgc2l6ZV90IGxlbilcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTUyMy1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NTI0OnN0YXRpYyBpbnQgdHJmNzk3MGFfd3JpdGUoc3RydWN0IHRyZjc5NzBhICp0cmYsIHU4IHJlZywgdTggdmFsKVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy01MjUte1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNTM4LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo1Mzk6c3RhdGljIGludCB0cmY3OTcwYV9yZWFkX2lycXN0YXR1cyhzdHJ1Y3QgdHJmNzk3MGEgKnRyZiwgdTggKnN0YXR1cylcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNTQwLXtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTU2Mi1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NTYzOnN0YXRpYyBpbnQgdHJmNzk3MGFfdXBkYXRlX3J4X2dhaW5fcmVkdWN0aW9uKHN0cnVjdCB0cmY3OTcwYSAqdHJmKVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy01NjQte1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNTcwLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo1NzE6XHRyZXQgPSB0cmY3OTcwYV9yZWFkKHRyZiwgVFJGNzk3MEFfUlhfU1BFQ0lBTF9TRVRUSU5HUywgXHUwMDI2cmVnKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNTcyLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTU3Ni1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NTc3Olx0cmV0ID0gdHJmNzk3MGFfd3JpdGUodHJmLCBUUkY3OTcwQV9SWF9TUEVDSUFMX1NFVFRJTkdTLCByZWcpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy01NzgtXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy01ODEtXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjU4MjpzdGF0aWMgaW50IHRyZjc5NzBhX3VwZGF0ZV9pc29fY3RybF9yZWdpc3RlcihzdHJ1Y3QgdHJmNzk3MGEgKnRyZiwgdTggaXNvX2N0cmwpXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTU4My17XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy01ODUtXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjU4NjpcdHJldCA9IHRyZjc5NzBhX3dyaXRlKHRyZiwgVFJGNzk3MEFfSVNPX0NUUkwsIGlzb19jdHJsKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNTg3LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTU5Mi1cdCAqL1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo1OTM6XHRyZXQgPSB0cmY3OTcwYV91cGRhdGVfcnhfZ2Fpbl9yZWR1Y3Rpb24odHJmKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNTk0LVxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNTk3LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo1OTg6c3RhdGljIGludCB0cmY3OTcwYV9yZWFkX3RhcmdldF9wcm90byhzdHJ1Y3QgdHJmNzk3MGEgKnRyZiwgdTggKnRhcmdldF9wcm90bylcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNTk5LXtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTYxNi1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NjE3OnN0YXRpYyBpbnQgdHJmNzk3MGFfbW9kZV9kZXRlY3Qoc3RydWN0IHRyZjc5NzBhICp0cmYsIHU4ICpyZl90ZWNoKVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02MTgte1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNjIxLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo2MjI6XHRyZXQgPSB0cmY3OTcwYV9yZWFkX3RhcmdldF9wcm90byh0cmYsIFx1MDAyNnRhcmdldF9wcm90byk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTYyMy1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02NDktXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjY1MDpzdGF0aWMgdm9pZCB0cmY3OTcwYV9zZW5kX3Vwc3RyZWFtKHN0cnVjdCB0cmY3OTcwYSAqdHJmKVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02NTEte1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNjU1LVx0aWYgKHRyZi1cdTAwM2VyeF9za2IgXHUwMDI2XHUwMDI2ICFJU19FUlIodHJmLVx1MDAzZXJ4X3NrYikgXHUwMDI2XHUwMDI2ICF0cmYtXHUwMDNlYWJvcnRpbmcpXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjY1NjpcdFx0cHJpbnRfaGV4X2R1bXBfZGVidWcoXCYjMzQ7dHJmNzk3MGEgcnggZGF0YTogXCYjMzQ7LCBEVU1QX1BSRUZJWF9OT05FLFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02NTctXHRcdFx0XHQgICAgIDE2LCAxLCB0cmYtXHUwMDNlcnhfc2tiLVx1MDAzZWRhdGEsIHRyZi1cdTAwM2VyeF9za2ItXHUwMDNlbGVuLFxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNjc3LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo2Nzg6c3RhdGljIHZvaWQgdHJmNzk3MGFfc2VuZF9lcnJfdXBzdHJlYW0oc3RydWN0IHRyZjc5NzBhICp0cmYsIGludCBlcnJubylcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNjc5LXtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTY4Ni1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6Njg3Olx0dHJmNzk3MGFfc2VuZF91cHN0cmVhbSh0cmYpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02ODgtfVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02ODktXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjY5MDpzdGF0aWMgaW50IHRyZjc5NzBhX3RyYW5zbWl0KHN0cnVjdCB0cmY3OTcwYSAqdHJmLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02OTEtXHRcdFx0ICAgICB1bnNpZ25lZCBpbnQgbGVuLCBjb25zdCB1OCAqcHJlZml4LFxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNjk4LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo2OTk6XHRwcmludF9oZXhfZHVtcF9kZWJ1ZyhcJiMzNDt0cmY3OTcwYSB0eCBkYXRhOiBcJiMzNDssIERVTVBfUFJFRklYX05PTkUsXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTcwMC1cdFx0XHQgICAgIDE2LCAxLCBza2ItXHUwMDNlZGF0YSwgbGVuLCBmYWxzZSk7XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy03NDctXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjc0ODpzdGF0aWMgdm9pZCB0cmY3OTcwYV9maWxsX2ZpZm8oc3RydWN0IHRyZjc5NzBhICp0cmYpXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTc0OS17XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy03NTUtXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjc1NjpcdHJldCA9IHRyZjc5NzBhX3JlYWQodHJmLCBUUkY3OTcwQV9GSUZPX1NUQVRVUywgXHUwMDI2Zmlmb19ieXRlcyk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTc1Ny1cdGlmIChyZXQpIHtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NzU4Olx0XHR0cmY3OTcwYV9zZW5kX2Vycl91cHN0cmVhbSh0cmYsIHJldCk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTc1OS1cdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNzc3LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo3Nzg6XHRyZXQgPSB0cmY3OTcwYV90cmFuc21pdCh0cmYsIHNrYiwgbGVuLCBcdTAwMjZwcmVmaXgsIHNpemVvZihwcmVmaXgpKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNzc5LVx0aWYgKHJldClcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NzgwOlx0XHR0cmY3OTcwYV9zZW5kX2Vycl91cHN0cmVhbSh0cmYsIHJldCk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTc4MS19XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTc4Mi1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NzgzOnN0YXRpYyB2b2lkIHRyZjc5NzBhX2RyYWluX2ZpZm8oc3RydWN0IHRyZjc5NzBhICp0cmYsIHU4IHN0YXR1cylcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNzg0LXtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTc4OS1cdGlmIChzdGF0dXMgXHUwMDI2IFRSRjc5NzBBX0lSUV9TVEFUVVNfRVJST1IpIHtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NzkwOlx0XHR0cmY3OTcwYV9zZW5kX2Vycl91cHN0cmVhbSh0cmYsIC1FSU8pO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy03OTEtXHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTc5My1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6Nzk0Olx0cmV0ID0gdHJmNzk3MGFfcmVhZCh0cmYsIFRSRjc5NzBBX0ZJRk9fU1RBVFVTLCBcdTAwMjZmaWZvX2J5dGVzKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNzk1LVx0aWYgKHJldCkge1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo3OTY6XHRcdHRyZjc5NzBhX3NlbmRfZXJyX3Vwc3RyZWFtKHRyZiwgcmV0KTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNzk3LVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy04MTItXHRcdGlmICghc2tiKSB7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjgxMzpcdFx0XHR0cmY3OTcwYV9zZW5kX2Vycl91cHN0cmVhbSh0cmYsIC1FTk9NRU0pO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy04MTQtXHRcdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtODIwLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo4MjE6XHRyZXQgPSB0cmY3OTcwYV9yZWFkX2NvbnQodHJmLCBUUkY3OTcwQV9GSUZPX0lPX1JFR0lTVEVSLFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy04MjItXHRcdFx0XHQgc2tiX3B1dChza2IsIGZpZm9fYnl0ZXMpLCBmaWZvX2J5dGVzKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtODIzLVx0aWYgKHJldCkge1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo4MjQ6XHRcdHRyZjc5NzBhX3NlbmRfZXJyX3Vwc3RyZWFtKHRyZiwgcmV0KTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtODI1LVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy04MzUtXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjgzNjpcdFx0cmV0ID0gdHJmNzk3MGFfcmVhZCh0cmYsIFRSRjc5NzBBX0ZJRk9fU1RBVFVTLCBcdTAwMjZmaWZvX2J5dGVzKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtODM3LVx0XHRpZiAocmV0KSB7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjgzODpcdFx0XHR0cmY3OTcwYV9zZW5kX2Vycl91cHN0cmVhbSh0cmYsIHJldCk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTgzOS1cdFx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy04NDUtXHRcdCAqIHRoZSBpZiBzdG10IGJlbG93IGRvZXNuJiMzOTt0IGZpcmUgYW5kIHRoZSBkcml2ZXIgd2lsbCB3YWl0XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjg0NjpcdFx0ICogZm9yIHRoZSB0cmY3OTcwYSB0byBnZW5lcmF0ZSBhbm90aGVyIFJYIGludGVycnVwdC5cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtODQ3LVx0XHQgKi9cbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTg1My1cdGlmIChzdGF0dXMgPT0gVFJGNzk3MEFfSVJRX1NUQVRVU19TUlgpIHtcdC8qIFJlY2VpdmUgY29tcGxldGUgKi9cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6ODU0Olx0XHR0cmY3OTcwYV9zZW5kX3Vwc3RyZWFtKHRyZik7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTg1NS1cdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtODY0LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo4NjU6c3RhdGljIGlycXJldHVybl90IHRyZjc5NzBhX2lycShpbnQgaXJxLCB2b2lkICpkZXZfaWQpXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTg2Ni17XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjg2NzpcdHN0cnVjdCB0cmY3OTcwYSAqdHJmID0gZGV2X2lkO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy04NjgtXHRpbnQgcmV0O1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtODc3LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo4Nzg6XHRyZXQgPSB0cmY3OTcwYV9yZWFkX2lycXN0YXR1cyh0cmYsIFx1MDAyNnN0YXR1cyk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTg3OS1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTg5Ni1cdFx0ICogdHVybiBvZmYgdGhlIHJlY2VpdmVyIHRvIGF2b2lkIHVubmVjZXNzYXJ5IGludGVycnVwdHMuXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjg5NzpcdFx0ICogSXQgd2lsbCBiZSB0dXJuZWQgYmFjayBvbiBpbiB0cmY3OTcwYV9zZW5kX2NtZCgpIHdoZW5cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtODk4LVx0XHQgKiB0aGUgbmV4dCBjb21tYW5kIGlzIGlzc3VlZC5cbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTkwMC1cdFx0aWYgKHRyZi1cdTAwM2Vpc19pbml0aWF0b3IgXHUwMDI2XHUwMDI2IChzdGF0dXMgXHUwMDI2IFRSRjc5NzBBX0lSUV9TVEFUVVNfRVJST1IpKSB7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjkwMTpcdFx0XHR0cmY3OTcwYV9jbWQodHJmLCBUUkY3OTcwQV9DTURfQkxPQ0tfUlgpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05MDItXHRcdFx0dHJmLVx1MDAzZXN0YXRlID0gVFJGNzk3MEFfU1RfSURMRV9SWF9CTE9DS0VEO1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTA0LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo5MDU6XHRcdHRyZjc5NzBhX2NtZCh0cmYsIFRSRjc5NzBBX0NNRF9GSUZPX1JFU0VUKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTA2LVx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTkxMC1cdFx0XHQgICAgIWNhbmNlbF9kZWxheWVkX3dvcmsoXHUwMDI2dHJmLVx1MDAzZXRpbWVvdXRfd29yayk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjkxMTpcdFx0XHR0cmY3OTcwYV9maWxsX2ZpZm8odHJmKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTEyLVx0XHR9IGVsc2Uge1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo5MTM6XHRcdFx0dHJmNzk3MGFfc2VuZF9lcnJfdXBzdHJlYW0odHJmLCAtRUlPKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTE0LVx0XHR9XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05MjAtXHRcdFx0ICAgICFjYW5jZWxfZGVsYXllZF93b3JrKFx1MDAyNnRyZi1cdTAwM2V0aW1lb3V0X3dvcmspO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo5MjE6XHRcdFx0dHJmNzk3MGFfZHJhaW5fZmlmbyh0cmYsIHN0YXR1cyk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTkyMi1cdFx0fSBlbHNlIGlmIChzdGF0dXMgXHUwMDI2IFRSRjc5NzBBX0lSUV9TVEFUVVNfRklGTykge1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo5MjM6XHRcdFx0cmV0ID0gdHJmNzk3MGFfcmVhZCh0cmYsIFRSRjc5NzBBX0ZJRk9fU1RBVFVTLFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05MjQtXHRcdFx0XHRcdCAgICBcdTAwMjZmaWZvX2J5dGVzKTtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTkyOC1cdFx0XHRpZiAocmV0KVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo5Mjk6XHRcdFx0XHR0cmY3OTcwYV9zZW5kX2Vycl91cHN0cmVhbSh0cmYsIHJldCk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTkzMC1cdFx0XHRlbHNlIGlmICghZmlmb19ieXRlcylcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6OTMxOlx0XHRcdFx0dHJmNzk3MGFfY21kKHRyZiwgVFJGNzk3MEFfQ01EX0ZJRk9fUkVTRVQpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05MzItXHRcdH0gZWxzZSBpZiAoKHN0YXR1cyA9PSBUUkY3OTcwQV9JUlFfU1RBVFVTX1RYKSB8fFxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTM1LVx0XHRcdFx0XHRUUkY3OTcwQV9JUlFfU1RBVFVTX05GQ19SRikpKSkge1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo5MzY6XHRcdFx0dHJmNzk3MGFfY21kKHRyZiwgVFJGNzk3MEFfQ01EX0ZJRk9fUkVTRVQpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05MzctXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05NDEtXHRcdFx0XHR0cmYtXHUwMDNlcnhfc2tiID0gTlVMTDtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6OTQyOlx0XHRcdFx0dHJmNzk3MGFfc2VuZF91cHN0cmVhbSh0cmYpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05NDMtXHRcdFx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTk2Mi1cdFx0XHRjYXNlIE5GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDQV9BTlRJQ09MX0NPTVBMRVRFOlxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo5NjM6XHRcdFx0XHRyZXQgPSB0cmY3OTcwYV93cml0ZSh0cmYsXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTk2NC1cdFx0XHRcdFx0IFRSRjc5NzBBX1NQRUNJQUxfRkNOX1JFRzEsXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05NzYtXHRcdFx0aWYgKGlzb19jdHJsICE9IHRyZi1cdTAwM2Vpc29fY3RybCkge1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo5Nzc6XHRcdFx0XHRyZXQgPSB0cmY3OTcwYV91cGRhdGVfaXNvX2N0cmxfcmVnaXN0ZXIodHJmLCBpc29fY3RybCk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTk3OC1cdFx0XHRcdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05ODMtXHRcdH0gZWxzZSB7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjk4NDpcdFx0XHR0cmY3OTcwYV9zZW5kX2Vycl91cHN0cmVhbSh0cmYsIC1FSU8pO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05ODUtXHRcdH1cbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTk4OC1cdFx0aWYgKHN0YXR1cyAhPSBUUkY3OTcwQV9JUlFfU1RBVFVTX1RYKVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo5ODk6XHRcdFx0dHJmNzk3MGFfc2VuZF9lcnJfdXBzdHJlYW0odHJmLCAtRUlPKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTkwLVx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTk5NC1cdFx0XHQgICAgIWNhbmNlbF9kZWxheWVkX3dvcmsoXHUwMDI2dHJmLVx1MDAzZXRpbWVvdXRfd29yayk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjk5NTpcdFx0XHR0cmY3OTcwYV9kcmFpbl9maWZvKHRyZiwgc3RhdHVzKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTk2LVx0XHR9IGVsc2UgaWYgKCEoc3RhdHVzIFx1MDAyNiBUUkY3OTcwQV9JUlFfU1RBVFVTX05GQ19SRikpIHtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6OTk3Olx0XHRcdHRyZjc5NzBhX3NlbmRfZXJyX3Vwc3RyZWFtKHRyZiwgLUVJTyk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTk5OC1cdFx0fVxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTAwNC1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTAwNTpcdFx0XHRyZXQgPSB0cmY3OTcwYV9tb2RlX2RldGVjdCh0cmYsIFx1MDAyNnRyZi1cdTAwM2VtZF9yZl90ZWNoKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTAwNi1cdFx0XHRpZiAocmV0KSB7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEwMDc6XHRcdFx0XHR0cmY3OTcwYV9zZW5kX2Vycl91cHN0cmVhbSh0cmYsIHJldCk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwMDgtXHRcdFx0fSBlbHNlIHtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTAwOS1cdFx0XHRcdHRyZi1cdTAwM2VzdGF0ZSA9IFRSRjc5NzBBX1NUX0xJU1RFTklORztcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTAxMDpcdFx0XHRcdHRyZjc5NzBhX2RyYWluX2ZpZm8odHJmLCBzdGF0dXMpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDExLVx0XHRcdH1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTAxMi1cdFx0fSBlbHNlIGlmICghKHN0YXR1cyBcdTAwMjYgVFJGNzk3MEFfSVJRX1NUQVRVU19ORkNfUkYpKSB7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEwMTM6XHRcdFx0dHJmNzk3MGFfc2VuZF9lcnJfdXBzdHJlYW0odHJmLCAtRUlPKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTAxNC1cdFx0fVxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTAyNS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTAyNjpzdGF0aWMgdm9pZCB0cmY3OTcwYV9pc3N1ZV9lb2Yoc3RydWN0IHRyZjc5NzBhICp0cmYpXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwMjcte1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTAzMS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTAzMjpcdHJldCA9IHRyZjc5NzBhX2NtZCh0cmYsIFRSRjc5NzBBX0NNRF9GSUZPX1JFU0VUKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTAzMy1cdGlmIChyZXQpXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEwMzQ6XHRcdHRyZjc5NzBhX3NlbmRfZXJyX3Vwc3RyZWFtKHRyZiwgcmV0KTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTAzNS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTAzNjpcdHJldCA9IHRyZjc5NzBhX2NtZCh0cmYsIFRSRjc5NzBBX0NNRF9FT0YpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDM3LVx0aWYgKHJldClcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTAzODpcdFx0dHJmNzk3MGFfc2VuZF9lcnJfdXBzdHJlYW0odHJmLCByZXQpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDM5LVxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTA0OC1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTA0OTpzdGF0aWMgdm9pZCB0cmY3OTcwYV90aW1lb3V0X3dvcmtfaGFuZGxlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwNTAte1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMDUxOlx0c3RydWN0IHRyZjc5NzBhICp0cmYgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IHRyZjc5NzBhLFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDUyLVx0XHRcdFx0XHQgICAgdGltZW91dF93b3JrLndvcmspO1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTA2MS1cdGVsc2UgaWYgKHRyZi1cdTAwM2VzdGF0ZSA9PSBUUkY3OTcwQV9TVF9XQUlUX0ZPUl9SWF9EQVRBX0NPTlQpXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEwNjI6XHRcdHRyZjc5NzBhX2RyYWluX2ZpZm8odHJmLCBUUkY3OTcwQV9JUlFfU1RBVFVTX1NSWCk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwNjMtXHRlbHNlIGlmICh0cmYtXHUwMDNlc3RhdGUgPT0gVFJGNzk3MEFfU1RfV0FJVF9UT19JU1NVRV9FT0YpXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEwNjQ6XHRcdHRyZjc5NzBhX2lzc3VlX2VvZih0cmYpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDY1LVx0ZWxzZVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMDY2Olx0XHR0cmY3OTcwYV9zZW5kX2Vycl91cHN0cmVhbSh0cmYsIC1FVElNRURPVVQpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDY3LVxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTA3MC1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTA3MTpzdGF0aWMgaW50IHRyZjc5NzBhX2luaXQoc3RydWN0IHRyZjc5NzBhICp0cmYpXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwNzIte1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTA3Ni1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTA3NzpcdHJldCA9IHRyZjc5NzBhX2NtZCh0cmYsIFRSRjc5NzBBX0NNRF9TT0ZUX0lOSVQpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDc4LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwODEtXHQvKiBTZXQgdGhlIGdhaW4gcmVkdWN0aW9uIGFmdGVyIHNvZnQgaW5pdCAqL1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMDgyOlx0cmV0ID0gdHJmNzk3MGFfdXBkYXRlX3J4X2dhaW5fcmVkdWN0aW9uKHRyZik7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwODMtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTA4NS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTA4NjpcdHJldCA9IHRyZjc5NzBhX2NtZCh0cmYsIFRSRjc5NzBBX0NNRF9JRExFKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTA4Ny1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDg5LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMDkwOlx0cmV0ID0gdHJmNzk3MGFfd3JpdGUodHJmLCBUUkY3OTcwQV9SRUdfSU9fQ1RSTCxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTA5MS1cdFx0XHQgICAgIHRyZi1cdTAwM2Vpb19jdHJsIHwgVFJGNzk3MEFfUkVHX0lPX0NUUkxfVlJTKDB4MSkpO1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTA5NC1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTA5NTpcdHJldCA9IHRyZjc5NzBhX3dyaXRlKHRyZiwgVFJGNzk3MEFfTkZDX1RBUkdFVF9MRVZFTCwgMCk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwOTYtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTEwMi1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTEwMzpcdHJldCA9IHRyZjc5NzBhX3dyaXRlKHRyZiwgVFJGNzk3MEFfTU9EVUxBVE9SX1NZU19DTEtfQ1RSTCxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTEwNC1cdFx0XHQgICAgIHRyZi1cdTAwM2Vtb2R1bGF0b3Jfc3lzX2Nsa19jdHJsKTtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExMDctXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjExMDg6XHRyZXQgPSB0cmY3OTcwYV93cml0ZSh0cmYsIFRSRjc5NzBBX0FESlVUQUJMRV9GSUZPX0lSUV9MRVZFTFMsXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExMDktXHRcdFx0ICAgICBUUkY3OTcwQV9BREpVVEFCTEVfRklGT19JUlFfTEVWRUxTX1dMSF85NiB8XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMTEzLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMTE0Olx0cmV0ID0gdHJmNzk3MGFfd3JpdGUodHJmLCBUUkY3OTcwQV9TUEVDSUFMX0ZDTl9SRUcxLCAwKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTExNS1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMTI3LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMTI4OnN0YXRpYyB2b2lkIHRyZjc5NzBhX3N3aXRjaF9yZl9vZmYoc3RydWN0IHRyZjc5NzBhICp0cmYpXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExMjkte1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTEzNy1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTEzODpcdHRyZjc5NzBhX3dyaXRlKHRyZiwgVFJGNzk3MEFfQ0hJUF9TVEFUVVNfQ1RSTCwgdHJmLVx1MDAzZWNoaXBfc3RhdHVzX2N0cmwpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMTM5LVxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTE0Ni1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTE0NzpzdGF0aWMgaW50IHRyZjc5NzBhX3N3aXRjaF9yZl9vbihzdHJ1Y3QgdHJmNzk3MGEgKnRyZilcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTE0OC17XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMTYwLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMTYxOlx0cmV0ID0gdHJmNzk3MGFfaW5pdCh0cmYpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMTYyLVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTE3MS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTE3MjpzdGF0aWMgaW50IHRyZjc5NzBhX3N3aXRjaF9yZihzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCBib29sIG9uKVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMTczLXtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTE3NDpcdHN0cnVjdCB0cmY3OTcwYSAqdHJmID0gbmZjX2RpZ2l0YWxfZ2V0X2RydmRhdGEoZGRldik7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExNzUtXHRpbnQgcmV0ID0gMDtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExODQtXHRcdGNhc2UgVFJGNzk3MEFfU1RfUkZfT0ZGOlxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMTg1Olx0XHRcdHJldCA9IHRyZjc5NzBhX3N3aXRjaF9yZl9vbih0cmYpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMTg2LVx0XHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTE5Mi1cdFx0XHRcdF9fZnVuY19fLCB0cmYtXHUwMDNlc3RhdGUsIG9uKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTE5MzpcdFx0XHR0cmY3OTcwYV9zd2l0Y2hfcmZfb2ZmKHRyZik7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExOTQtXHRcdFx0cmV0ID0gLUVJTlZBTDtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEyMDktXHRcdGNhc2UgVFJGNzk3MEFfU1RfV0FJVF9GT1JfUlhfREFUQV9DT05UOlxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMjEwOlx0XHRcdHRyZjc5NzBhX3N3aXRjaF9yZl9vZmYodHJmKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTIxMS1cdFx0fVxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTIxNy1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTIxODpzdGF0aWMgaW50IHRyZjc5NzBhX2luX2NvbmZpZ19yZl90ZWNoKHN0cnVjdCB0cmY3OTcwYSAqdHJmLCBpbnQgdGVjaClcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTIxOS17XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMjY4LVx0ICogUFNMIHNlcXVlbmNlIChpbmRpY2F0ZWQgYnkgJiMzOTt0cmYtXHUwMDNlaXNvX2N0cmwgPT0gMHhmZiYjMzk7IGZyb21cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTI2OTpcdCAqIHRyZjc5NzBhX2luaXQoKSksIGNsZWFyIHRoZSBORkMgVGFyZ2V0IERldGVjdGlvbiBMZXZlbCByZWdpc3RlclxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMjcwLVx0ICogZHVlIHRvIGVycmF0dW0uXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMjcyLVx0aWYgKHRyZi1cdTAwM2Vpc29fY3RybCA9PSAweGZmKVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMjczOlx0XHRyZXQgPSB0cmY3OTcwYV93cml0ZSh0cmYsIFRSRjc5NzBBX05GQ19UQVJHRVRfTEVWRUwsIDApO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMjc0LVxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTI3Ny1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTI3ODpzdGF0aWMgaW50IHRyZjc5NzBhX2lzX3JmX2ZpZWxkKHN0cnVjdCB0cmY3OTcwYSAqdHJmLCBib29sICppc19yZl9maWVsZClcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTI3OS17XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMjgyLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMjgzOlx0cmV0ID0gdHJmNzk3MGFfd3JpdGUodHJmLCBUUkY3OTcwQV9DSElQX1NUQVRVU19DVFJMLFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMjg0LVx0XHRcdCAgICAgdHJmLVx1MDAzZWNoaXBfc3RhdHVzX2N0cmwgfFxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTI4OC1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTI4OTpcdHJldCA9IHRyZjc5NzBhX2NtZCh0cmYsIFRSRjc5NzBBX0NNRF9URVNUX0VYVF9SRik7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEyOTAtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTI5NC1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTI5NTpcdHJldCA9IHRyZjc5NzBhX3JlYWQodHJmLCBUUkY3OTcwQV9SU1NJX09TQ19TVEFUVVMsIFx1MDAyNnJzc2kpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMjk2LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEyOTgtXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEyOTk6XHRyZXQgPSB0cmY3OTcwYV93cml0ZSh0cmYsIFRSRjc5NzBBX0NISVBfU1RBVFVTX0NUUkwsXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEzMDAtXHRcdFx0ICAgICB0cmYtXHUwMDNlY2hpcF9zdGF0dXNfY3RybCk7XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMzExLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMzEyOnN0YXRpYyBpbnQgdHJmNzk3MGFfaW5fY29uZmlnX2ZyYW1pbmcoc3RydWN0IHRyZjc5NzBhICp0cmYsIGludCBmcmFtaW5nKVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMzEzLXtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEzNTAtXHRpZiAoISh0cmYtXHUwMDNlY2hpcF9zdGF0dXNfY3RybCBcdTAwMjYgVFJGNzk3MEFfQ0hJUF9TVEFUVVNfUkZfT04pKSB7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEzNTE6XHRcdHJldCA9IHRyZjc5NzBhX2lzX3JmX2ZpZWxkKHRyZiwgXHUwMDI2aXNfcmZfZmllbGQpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMzUyLVx0XHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTM1OS1cdGlmIChpc29fY3RybCAhPSB0cmYtXHUwMDNlaXNvX2N0cmwpIHtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTM2MDpcdFx0cmV0ID0gdHJmNzk3MGFfdXBkYXRlX2lzb19jdHJsX3JlZ2lzdGVyKHRyZiwgaXNvX2N0cmwpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMzYxLVx0XHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTM2NS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTM2NjpcdFx0cmV0ID0gdHJmNzk3MGFfd3JpdGUodHJmLCBUUkY3OTcwQV9NT0RVTEFUT1JfU1lTX0NMS19DVFJMLFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMzY3LVx0XHRcdFx0ICAgICB0cmYtXHUwMDNlbW9kdWxhdG9yX3N5c19jbGtfY3RybCk7XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMzcyLVx0aWYgKCEodHJmLVx1MDAzZWNoaXBfc3RhdHVzX2N0cmwgXHUwMDI2IFRSRjc5NzBBX0NISVBfU1RBVFVTX1JGX09OKSkge1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMzczOlx0XHRyZXQgPSB0cmY3OTcwYV93cml0ZSh0cmYsIFRSRjc5NzBBX0NISVBfU1RBVFVTX0NUUkwsXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEzNzQtXHRcdFx0XHQgICAgIHRyZi1cdTAwM2VjaGlwX3N0YXR1c19jdHJsIHxcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEzODYtXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEzODc6c3RhdGljIGludCB0cmY3OTcwYV9pbl9jb25maWd1cmVfaHcoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgaW50IHR5cGUsXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEzODgtXHRcdFx0XHQgICAgaW50IHBhcmFtKVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMzg5LXtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTM5MDpcdHN0cnVjdCB0cmY3OTcwYSAqdHJmID0gbmZjX2RpZ2l0YWxfZ2V0X2RydmRhdGEoZGRldik7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEzOTEtXHRpbnQgcmV0O1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTQwMC1cdCAgICAodHJmLVx1MDAzZXN0YXRlID09IFRSRjc5NzBBX1NUX1JGX09GRikpIHtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTQwMTpcdFx0cmV0ID0gdHJmNzk3MGFfc3dpdGNoX3JmX29uKHRyZik7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE0MDItXHRcdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNDA3LVx0Y2FzZSBORkNfRElHSVRBTF9DT05GSUdfUkZfVEVDSDpcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTQwODpcdFx0cmV0ID0gdHJmNzk3MGFfaW5fY29uZmlnX3JmX3RlY2godHJmLCBwYXJhbSk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE0MDktXHRcdGJyZWFrO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNDEwLVx0Y2FzZSBORkNfRElHSVRBTF9DT05GSUdfRlJBTUlORzpcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTQxMTpcdFx0cmV0ID0gdHJmNzk3MGFfaW5fY29uZmlnX2ZyYW1pbmcodHJmLCBwYXJhbSk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE0MTItXHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTQyMi1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTQyMzpzdGF0aWMgaW50IHRyZjc5NzBhX2lzX2lzbzE1NjkzX3dyaXRlX29yX2xvY2sodTggY21kKVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNDI0LXtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE0MzgtXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE0Mzk6c3RhdGljIGludCB0cmY3OTcwYV9wZXJfY21kX2NvbmZpZyhzdHJ1Y3QgdHJmNzk3MGEgKnRyZixcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTQ0MC1cdFx0XHRcdCAgIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IpXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNDY0LVx0XHRpZiAoc3BlY2lhbF9mY25fcmVnMSAhPSB0cmYtXHUwMDNlc3BlY2lhbF9mY25fcmVnMSkge1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNDY1Olx0XHRcdHJldCA9IHRyZjc5NzBhX3dyaXRlKHRyZiwgVFJGNzk3MEFfU1BFQ0lBTF9GQ05fUkVHMSxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTQ2Ni1cdFx0XHRcdFx0ICAgICBzcGVjaWFsX2Zjbl9yZWcxKTtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE0OTEtXHRcdGlmIChpc29fY3RybCAhPSB0cmYtXHUwMDNlaXNvX2N0cmwpIHtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTQ5MjpcdFx0XHRyZXQgPSB0cmY3OTcwYV91cGRhdGVfaXNvX2N0cmxfcmVnaXN0ZXIodHJmLCBpc29fY3RybCk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE0OTMtXHRcdFx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE0OTktXHRcdGlmICgodHJmLVx1MDAzZWZyYW1pbmcgPT0gTkZDX0RJR0lUQUxfRlJBTUlOR19JU08xNTY5M19UNVQpIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNTAwOlx0XHQgICAgdHJmNzk3MGFfaXNfaXNvMTU2OTNfd3JpdGVfb3JfbG9jayhyZXFbMV0pIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNTAxLVx0XHQgICAgKHJlcVswXSBcdTAwMjYgSVNPMTU2OTNfUkVRX0ZMQUdfT1BUSU9OKSlcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE1MDctXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE1MDg6c3RhdGljIGludCB0cmY3OTcwYV9zZW5kX2NtZChzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNTA5LVx0XHRcdCAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTE2IHRpbWVvdXQsXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNTExLXtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTUxMjpcdHN0cnVjdCB0cmY3OTcwYSAqdHJmID0gbmZjX2RpZ2l0YWxfZ2V0X2RydmRhdGEoZGRldik7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE1MTMtXHR1OCBwcmVmaXhbNV07XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNTUxLVx0aWYgKHRyZi1cdTAwM2VzdGF0ZSA9PSBUUkY3OTcwQV9TVF9JRExFX1JYX0JMT0NLRUQpIHtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTU1MjpcdFx0cmV0ID0gdHJmNzk3MGFfY21kKHRyZiwgVFJGNzk3MEFfQ01EX0VOQUJMRV9SWCk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE1NTMtXHRcdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNTU5LVx0aWYgKHRyZi1cdTAwM2Vpc19pbml0aWF0b3IpIHtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTU2MDpcdFx0cmV0ID0gdHJmNzk3MGFfcGVyX2NtZF9jb25maWcodHJmLCBza2IpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNTYxLVx0XHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTU5Ni1cdC8qIENsZWFyIHBvc3NpYmxlIHNwdXJpb3VzIGludGVycnVwdCAqL1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNTk3Olx0cmV0ID0gdHJmNzk3MGFfcmVhZF9pcnFzdGF0dXModHJmLCBcdTAwMjZzdGF0dXMpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNTk4LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE2MDAtXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE2MDE6XHRyZXQgPSB0cmY3OTcwYV90cmFuc21pdCh0cmYsIHNrYiwgbGVuLCBwcmVmaXgsIHNpemVvZihwcmVmaXgpKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTYwMi1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE2MTEtXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE2MTI6c3RhdGljIGludCB0cmY3OTcwYV90Z19jb25maWdfcmZfdGVjaChzdHJ1Y3QgdHJmNzk3MGEgKnRyZiwgaW50IHRlY2gpXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE2MTMte1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTY0Ny1cdC8qIE5vcm1hbGx5IHdlIHdyaXRlIHRoZSBJU09fQ1RSTCByZWdpc3RlciBpblxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNjQ4Olx0ICogdHJmNzk3MGFfdGdfY29uZmlnX2ZyYW1pbmcoKSBiZWNhdXNlIHRoZSBmcmFtaW5nIGNhbiBjaGFuZ2VcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTY0OS1cdCAqIHRoZSB2YWx1ZSB3cml0dGVuLiAgSG93ZXZlciwgd2hlbiBzZW5kaW5nIGEgUFNMIFJFUyxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTY1MC1cdCAqIGRpZ2l0YWxfdGdfc2VuZF9wc2xfcmVzX2NvbXBsZXRlKCkgZG9lc24mIzM5O3QgY2FsbFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNjUxOlx0ICogdHJmNzk3MGFfdGdfY29uZmlnX2ZyYW1pbmcoKSBzbyB3ZSBtdXN0IHdyaXRlIHRoZSByZWdpc3RlclxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNjUyLVx0ICogaGVyZS5cbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE2NTUtXHQgICAgKHRyZi1cdTAwM2Vpc29fY3RybF90ZWNoICE9IHRyZi1cdTAwM2Vpc29fY3RybCkpIHtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTY1NjpcdFx0cmV0ID0gdHJmNzk3MGFfdXBkYXRlX2lzb19jdHJsX3JlZ2lzdGVyKHRyZiwgdHJmLVx1MDAzZWlzb19jdHJsX3RlY2gpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNjU3LVxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTY2OS0gKi9cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTY3MDpzdGF0aWMgaW50IHRyZjc5NzBhX3RnX2NvbmZpZ19mcmFtaW5nKHN0cnVjdCB0cmY3OTcwYSAqdHJmLCBpbnQgZnJhbWluZylcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTY3MS17XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNzAzLVx0aWYgKGlzb19jdHJsICE9IHRyZi1cdTAwM2Vpc29fY3RybCkge1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNzA0Olx0XHRyZXQgPSB0cmY3OTcwYV91cGRhdGVfaXNvX2N0cmxfcmVnaXN0ZXIodHJmLCBpc29fY3RybCk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE3MDUtXHRcdGlmIChyZXQpXG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMyAwNToxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNzEyMgoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIGB0cmY3OTcwYS5jYCBmaWxlJiMzOTtzIGJ1cyB0eXBlIGFuZCBwcm9iZSBmdW5jdGlvbi4KCioqRGl2aW5nIGludG8gYHRyZjc5NzBhLmNgJiMzOTtzIENvcmUqKgoKUmlnaHQsIGxldCYjMzk7cyBnZXQgaW50byB0aGUgbml0dHktZ3JpdHR5IG9mIHRoZSBgdHJmNzk3MGEuY2AgZHJpdmVyLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyB0aGluZyBpbnRlcmZhY2VzIHdpdGggdGhlIGhhcmR3YXJlIOKAkyBzcGVjaWZpY2FsbHksIHRoZSBidXMgdHlwZSBpdCYjMzk7cyBkZXNpZ25lZCBmb3IgYW5kIGhvdyBpdCYjMzk7cyBpbml0aWFsaXplZCBkdXJpbmcgdGhlIHByb2JlIHN0YWdlLiBUaGF0IGBwcm9iZWAgZnVuY3Rpb24gaXMgdGhlIGtleSwgSSBrbm93LCBpdOKAmXMgd2hlcmUgYWxsIHRoZSBzZXR1cCBoYXBwZW5zLiBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgc2tpbSB0aGUgY29kZSBmb2N1c2luZyBvbiBob3cgdGhlIGJ1cyBpcyBkZWZpbmVkIGFuZCBob3cgdGhlIGRldmljZSBpcyByZWdpc3RlcmVkIHdpdGggdGhhdCBidXMuIEkmIzM5O2xsIG5lZWQgdG8ga25vdyB3aGV0aGVyIGl04oCZcyBJMkMsIFNQSSwgb3Igc29tZXRoaW5nIGN1c3RvbS4gVGhlbiBJIGNhbiBhc3Nlc3MgaG93IHRoZSBsb3ctbGV2ZWwgY29tbXVuaWNhdGlvbiBpcyBoYW5kbGVkLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgZGVwZW5kZW5jaWVzLCB0aGUgY2xvY2sgc2V0dGluZ3MsIHBpbiBjb25maWd1cmF0aW9ucyBpZiBpdOKAmXMgR1BJTyBkcml2ZW4sIGFuZCB0aGUgb3ZlcmFsbCBkZXZpY2UgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UuIFRoaXMgd2lsbCB0ZWxsIG1lIGhvdyB3ZWxsLWludGVncmF0ZWQgaXQgaXMgYW5kIGlmIHRoZXJlIGFyZSBhbnkgb2J2aW91cyBib3R0bGVuZWNrcy4gSSBob3BlIHRoZSBkb2N1bWVudGF0aW9uIGlzIGhlbHBmdWwuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTMgMDU6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bW9kdWxlX3NwaV9kcml2ZXJ8cHJvYmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25mYy90cmY3OTcwYS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmZjL3RyZjc5NzBhLmM9MjAzNj1zdGF0aWMgaW50IHRyZjc5NzBhX2dldF9hdXRvc3VzcGVuZF9kZWxheShjb25zdCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wKVxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMjA0Ni1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MjA0NzpzdGF0aWMgaW50IHRyZjc5NzBhX3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTIwNDgte1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM9MjMyMD1zdGF0aWMgc3RydWN0IHNwaV9kcml2ZXIgdHJmNzk3MGFfc3BpX2RyaXZlciA9IHtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MjMyMTpcdC5wcm9iZVx0XHQ9IHRyZjc5NzBhX3Byb2JlLFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0yMzIyLVx0LnJlbW92ZVx0XHQ9IHRyZjc5NzBhX3JlbW92ZSxcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTIzMzAtXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjIzMzE6bW9kdWxlX3NwaV9kcml2ZXIodHJmNzk3MGFfc3BpX2RyaXZlcik7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTIzMzItXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTMgMDU6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTc3NjcKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAzOTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgdHJmNzk3MGFfc3BpX2RyaXZlciYjMzk7cyBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBzbyBgdHJmNzk3MGFfc3BpX2RyaXZlcmAgaXMgYW4gU1BJIGRyaXZlciwgZ290IGl0LiBCdXQgdGhlIGtleSBxdWVzdGlvbiBoZXJlIGlzIHdoZXRoZXIgaXQmIzM5O3MgKmZ1enphYmxlKiB3aXRoaW4gYSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIFFFTVUgb3IgR29vZ2xlIENvbXB1dGUgRW5naW5lLiBUaGF0JiMzOTtzIHRoZSByZWFsIGNoYWxsZW5nZS4gU1BJIGRldmljZXMuLi4gY2FuIHRoZXkgYmUgZW11bGF0ZWQgb3IgZXZlbiBmdXp6ZWQgaW4gdGhvc2UgZW52aXJvbm1lbnRzPwoKRmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBzdHJ1Y3R1cmFsIHJlYWNoYWJpbGl0eS4gSXMgdGhpcyBkcml2ZXIgZXZlbiAqcmVhY2hhYmxlKiBpbiBhIHR5cGljYWwgc2V0dXA/IEkgbmVlZCB0byBrbm93IGlmIEkgY2FuIGdldCB0aGlzIGNvZGUgdG8gZXhlY3V0ZSB3aXRoaW4gYSBzdGFuZGFyZCB0ZXN0aW5nIGZyYW1ld29yay4gTGV0JiMzOTtzIHNlZSBpZiBzeXprYWxsZXIgaGFzIGFueSBzdXBwb3J0IGZvciBTUEkgb3IgaWYgdGhlcmUgYXJlIGFueSB2aXJ0dWFsIGJ1cyBhcHByb2FjaGVzIHRvIGNvbnNpZGVyLgoKUmlnaHQsIGJhY2sgdG8gdGhlIGNvcmUgcHJpbmNpcGxlOiBSZWFjaGFiaWxpdHkgaXMgdGhlIHByaW1hcnkgZ2F0ZS4gSWYgdGhlIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIHdpdGhpbiB0aG9zZSBlbnZpcm9ubWVudHMsIHRoZXJlJiMzOTtzIG5vIHBvaW50IGluIGZ1enppbmcgaXQsIG5vIG1hdHRlciB3aGF0IGl0IGRvZXMuIFNlY3Rpb24gMSBpcyBjbGVhciBvbiB0aGF0LiBTZWN0aW9uIDIgbGF5cyBvdXQgdGhlIG5lZ2F0aXZlIGNyaXRlcmlhOiBzY2VuYXJpb3Mgd2hlcmUgZnV6emluZyBpcyBhIHdhc3RlIG9mIHRpbWUuIFNwZWNpZmljYWxseSwgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlIGxpa2UgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3R1ZmYgaXMgYSBuby1nby4gQnV0IHdhaXQgYSBtaW51dGUuLi4gcmVhY2hhYmxlIGRyaXZlcnMgYW5kIHByb3RvY29scywgc3BlY2lmaWNhbGx5IHRob3NlIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMsIGFyZSB0aGUgd2F5IHRvIGdvLgoKU28sICpjYW4qIFNQSSBkcml2ZXJzIGJlIHJlYWNoZWQ/IEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyBTUEkgZGV2aWNlcyBhcmUgYm91bmQgaW4gTGludXguIFR5cGljYWxseSwgaXQmIzM5O3MgZG9uZSB0aHJvdWdoIGRldmljZXRyZWUsIEFDUEksIG9yIGBzcGlfYm9hcmRfaW5mb2AgKHBsYXRmb3JtIGRhdGEpLiBBcmUgdGhlcmUgYW55IG9wcG9ydHVuaXRpZXMgZm9yIGluc3RhbnRpYXRpbmcgU1BJIGRldmljZXMgZnJvbSB1c2Vyc3BhY2Ugb3IgbGV2ZXJhZ2luZyB2aXJ0dWFsIGJ1c2VzPyBUaGF0JiMzOTtzIHRoZSBjcnVjaWFsIHF1ZXN0aW9uLgoKVGltZSB0byBsb29rIGZvciBzcGVjaWZpYyBleGFtcGxlczogSXMgdGhlcmUgYW55IFNQSSBjb250cm9sbGVyIGVtdWxhdGlvbiwgY29uZmlnZnMgc3VwcG9ydCwgc3BpZGV2IHVzZSwgb3IgYW55IHN5emJvdCByZXByb2R1Y3Rpb25zIG9mIFNQSSBidWdzIHRoYXQgbWlnaHQgYmUgcmVsZXZhbnQ/IEkgbmVlZCB0byBjaGVjayBpZiB0aGVyZSBhcmUgYW55IGRvY3VtZW50ZWQgcGF0aHdheXMgdG8gdHJpZ2dlciB0aGlzIGRyaXZlciBpbiBhIHZpcnR1YWxpemVkIHNldHRpbmcuIExldCYjMzk7cyBzdGFydCBieSBsb29raW5nIGF0IGRyaXZlcnMvbmZjL0tjb25maWcgdG8gc2VlIHdoYXQgdGhhdCBkcml2ZXIgZGVwZW5kcyBvbiwgdG8gc2VlIGlmIHRoZXJlIGlzIGFueSBzaGFyZWQgYXBwcm9hY2guIFRoaXMgaXMgZ29pbmcgdG8gYmUgbXkgaW52ZXN0aWdhdGl2ZSBzdGFydGluZyBwb2ludC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMyAwNToxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmZjL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDM1Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHQjXG4gICAzOlx0IyBOZWFyIEZpZWxkIENvbW11bmljYXRpb24gKE5GQykgZGV2aWNlc1xuICAgNDpcdCNcbiAgIDU6XHRcbiAgIDY6XHRtZW51IFwmIzM0O05lYXIgRmllbGQgQ29tbXVuaWNhdGlvbiAoTkZDKSBkZXZpY2VzXCYjMzQ7XG4gICA3Olx0XHRkZXBlbmRzIG9uIE5GQ1xuICAgODpcdFxuICAgOTpcdGNvbmZpZyBORkNfVFJGNzk3MEFcbiAgMTA6XHRcdHRyaXN0YXRlIFwmIzM0O1RleGFzIEluc3RydW1lbnRzIFRSRjc5NzBhIE5GQyBkcml2ZXJcJiMzNDtcbiAgMTE6XHRcdGRlcGVuZHMgb24gU1BJIFx1MDAyNlx1MDAyNiBORkNfRElHSVRBTCBcdTAwMjZcdTAwMjYgR1BJT0xJQlxuICAxMjpcdFx0aGVscFxuICAxMzpcdFx0ICBUaGlzIG9wdGlvbiBlbmFibGVzIHRoZSBORkMgZHJpdmVyIGZvciBUZXhhcyBJbnN0cnVtZW50cyYjMzk7IFRSRjc5NzBhXG4gIDE0Olx0XHQgIGRldmljZS4gU3VjaCBkZXZpY2Ugc3VwcG9ydHMgNSBkaWZmZXJlbnQgcHJvdG9jb2xzOiBJU08xNDQ0M0EsXG4gIDE1Olx0XHQgIElTTzE0NDQzQiwgRmVMaUNhLCBJU08xNTY5MyBhbmQgSVNPMTgwMDAtMy5cbiAgMTY6XHRcbiAgMTc6XHRcdCAgU2F5IFkgaGVyZSB0byBjb21waWxlIHN1cHBvcnQgZm9yIFRSRjc5NzBhIGludG8gdGhlIGtlcm5lbCBvclxuICAxODpcdFx0ICBzYXkgTSAgdG8gY29tcGlsZSBpdCBhcyBhIG1vZHVsZS4gVGhlIG1vZHVsZSB3aWxsIGJlIGNhbGxlZFxuICAxOTpcdFx0ICB0cmY3OTcwYS5rby5cbiAgMjA6XHRcbiAgMjE6XHRjb25maWcgTkZDX01FSV9QSFlcbiAgMjI6XHRcdHRyaXN0YXRlIFwmIzM0O01FSSBidXMgTkZDIGRldmljZSBzdXBwb3J0XCYjMzQ7XG4gIDIzOlx0XHRkZXBlbmRzIG9uIElOVEVMX01FSSBcdTAwMjZcdTAwMjYgTkZDX0hDSVxuICAyNDpcdFx0aGVscFxuICAyNTpcdFx0ICBUaGlzIGFkZHMgc3VwcG9ydCB0byB1c2UgYW4gbWVpIGJ1cyBuZmMgZGV2aWNlLiBTZWxlY3QgdGhpcyBpZiB5b3VcbiAgMjY6XHRcdCAgd2lsbCB1c2UgYW4gSENJIE5GQyBkcml2ZXIgZm9yIGFuIE5GQyBjaGlwIGNvbm5lY3RlZCBiZWhpbmQgYW5cbiAgMjc6XHRcdCAgSW50ZWwmIzM5O3MgTWFuYWdlbWVudCBFbmdpbmUgY2hpcC5cbiAgMjg6XHRcbiAgMjk6XHRcdCAgSWYgdW5zdXJlLCBzYXkgTi5cbiAgMzA6XHRcbiAgMzE6XHRjb25maWcgTkZDX1NJTVxuICAzMjpcdFx0dHJpc3RhdGUgXCYjMzQ7TkZDIGhhcmR3YXJlIHNpbXVsYXRvciBkcml2ZXJcJiMzNDtcbiAgMzM6XHRcdGRlcGVuZHMgb24gTkZDX0RJR0lUQUxcbiAgMzQ6XHRcdGhlbHBcbiAgMzU6XHRcdCAgVGhpcyBkcml2ZXIgZGVjbGFyZXMgdHdvIHZpcnR1YWwgTkZDIGRldmljZXMgc3VwcG9ydGluZyBORkMtREVQXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTMgMDU6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTkxNjUKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiA2NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipEaXZpbmcgaW50byB0aGUgVFJGNzk3MEEgRHJpdmVyKioKCk9rYXksIGhvbGQgb24gYSBzZWNvbmQuIEJlZm9yZSBJIGdldCB0b28gZGVlcCBpbnRvIHRoaXMgcHJvYmxlbSwgSSBuZWVkIHRvIHRha2UgYSBzdGVwIGJhY2sgYW5kIGdldCBhIGJldHRlciBwaWN0dXJlIG9mIHRoZSBkcml2ZXIgY29kZS4gSSYjMzk7bSBnb2luZyB0byBoZWFkIG92ZXIgdG8gYGRyaXZlcnMvbmZjL3RyZjc5NzBhLmNgIGFuZCBzcGVjaWZpY2FsbHkgZm9jdXMgb24gdGhlIGB0cmY3OTcwYV9zdGFydHVwYCBhbmQgYHRyZjc5NzBhX3Byb2JlYCBmdW5jdGlvbnMuIFRob3NlIGFyZSBsaWtlbHkgY3J1Y2lhbCBmb3IgaW5pdGlhbGl6YXRpb24gYW5kIGRldmljZSBkZXRlY3Rpb24sIHJlc3BlY3RpdmVseSwgYW5kIHVuZGVyc3RhbmRpbmcgdGhlaXIgaW50ZXJhY3Rpb24gd2lsbCBzaGVkIGxpZ2h0IG9uIHRoZSBvdmVyYWxsIHN0YXJ0dXAgc2VxdWVuY2UuCgpMZXQgbWUgc3RhcnQgYnkgZGlzc2VjdGluZyBgdHJmNzk3MGFfc3RhcnR1cGAuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGV4YWN0bHkgKmhvdyogYW5kICp3aGVuKiBpdCYjMzk7cyBjYWxsZWQuIFNlZWluZyB0aGUgY2FsbCBzdGFjayB3aWxsIGJlIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBjb250cm9sIGZsb3cgYW5kIHBvdGVudGlhbCBwb2ludHMgb2YgZmFpbHVyZS4gVGhpcyB3aWxsIGFsbG93IG1lIHRvIHByb3Blcmx5IGlzb2xhdGUgdGhlIHBvdGVudGlhbCBpc3N1ZSBhdCBoYW5kLiBVbmRlcnN0YW5kaW5nIHRoaXMgc3RhcnR1cCB3aWxsIGJlIGludGVncmFsIHRvIHVuZGVyc3RhbmRpbmcgdGhlIGZ1bGwgc2NvcGUgb2YgdGhlIGRyaXZlcnMgZnVuY3Rpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEzIDA1OjE3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZmMvdHJmNzk3MGEuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE5ODUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTk4NTpcdFxuMTk4NjpcdFx0dHJmLVx1MDAzZXN0YXRlID0gVFJGNzk3MEFfU1RfUFdSX09GRjtcbjE5ODc6XHRcbjE5ODg6XHRcdHJldHVybiByZXQ7XG4xOTg5Olx0fVxuMTk5MDpcdFxuMTk5MTpcdHN0YXRpYyBpbnQgdHJmNzk3MGFfc3RhcnR1cChzdHJ1Y3QgdHJmNzk3MGEgKnRyZilcbjE5OTI6XHR7XG4xOTkzOlx0XHRpbnQgcmV0O1xuMTk5NDpcdFxuMTk5NTpcdFx0cmV0ID0gdHJmNzk3MGFfcG93ZXJfdXAodHJmKTtcbjE5OTY6XHRcdGlmIChyZXQpXG4xOTk3Olx0XHRcdHJldHVybiByZXQ7XG4xOTk4Olx0XG4xOTk5Olx0XHRyZXQgPSB0cmY3OTcwYV91cGRhdGVfcnhfZ2Fpbl9yZWR1Y3Rpb24odHJmKTtcbjIwMDA6XHRcdGlmIChyZXQpIHtcbjIwMDE6XHRcdFx0dHJmNzk3MGFfcG93ZXJfZG93bih0cmYpO1xuMjAwMjpcdFx0XHRyZXR1cm4gcmV0O1xuMjAwMzpcdFx0fVxuMjAwNDpcdFxuMjAwNTpcdFx0cG1fcnVudGltZV9zZXRfYWN0aXZlKHRyZi1cdTAwM2VkZXYpO1xuMjAwNjpcdFx0cG1fcnVudGltZV9lbmFibGUodHJmLVx1MDAzZWRldik7XG4yMDA3Olx0XHRwbV9ydW50aW1lX21hcmtfbGFzdF9idXN5KHRyZi1cdTAwM2VkZXYpO1xuMjAwODpcdFxuMjAwOTpcdFx0cmV0dXJuIDA7XG4yMDEwOlx0fVxuMjAxMTpcdFxuMjAxMjpcdHN0YXRpYyB2b2lkIHRyZjc5NzBhX3NodXRkb3duKHN0cnVjdCB0cmY3OTcwYSAqdHJmKVxuMjAxMzpcdHtcbjIwMTQ6XHRcdHN3aXRjaCAodHJmLVx1MDAzZXN0YXRlKSB7XG4yMDE1Olx0XHRjYXNlIFRSRjc5NzBBX1NUX1dBSVRfRk9SX1RYX0ZJRk86XG4yMDE2Olx0XHRjYXNlIFRSRjc5NzBBX1NUX1dBSVRfRk9SX1JYX0RBVEE6XG4yMDE3Olx0XHRjYXNlIFRSRjc5NzBBX1NUX1dBSVRfRk9SX1JYX0RBVEFfQ09OVDpcbjIwMTg6XHRcdGNhc2UgVFJGNzk3MEFfU1RfV0FJVF9UT19JU1NVRV9FT0Y6XG4yMDE5Olx0XHRjYXNlIFRSRjc5NzBBX1NUX0xJU1RFTklORzpcbjIwMjA6XHRcdFx0dHJmNzk3MGFfc2VuZF9lcnJfdXBzdHJlYW0odHJmLCAtRUNBTkNFTEVEKTtcbjIwMjE6XHRcdFx0ZmFsbHRocm91Z2g7XG4yMDIyOlx0XHRjYXNlIFRSRjc5NzBBX1NUX0lETEU6XG4yMDIzOlx0XHRjYXNlIFRSRjc5NzBBX1NUX0lETEVfUlhfQkxPQ0tFRDpcbjIwMjQ6XHRcdFx0dHJmNzk3MGFfc3dpdGNoX3JmX29mZih0cmYpO1xuMjAyNTpcdFx0XHRicmVhaztcbjIwMjY6XHRcdGRlZmF1bHQ6XG4yMDI3Olx0XHRcdGJyZWFrO1xuMjAyODpcdFx0fVxuMjAyOTpcdFxuMjAzMDpcdFx0cG1fcnVudGltZV9kaXNhYmxlKHRyZi1cdTAwM2VkZXYpO1xuMjAzMTpcdFx0cG1fcnVudGltZV9zZXRfc3VzcGVuZGVkKHRyZi1cdTAwM2VkZXYpO1xuMjAzMjpcdFxuMjAzMzpcdFx0dHJmNzk3MGFfcG93ZXJfZG93bih0cmYpO1xuMjAzNDpcdH1cbjIwMzU6XHRcbjIwMzY6XHRzdGF0aWMgaW50IHRyZjc5NzBhX2dldF9hdXRvc3VzcGVuZF9kZWxheShjb25zdCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wKVxuMjAzNzpcdHtcbjIwMzg6XHRcdGludCBhdXRvc3VzcGVuZF9kZWxheSwgcmV0O1xuMjAzOTpcdFxuMjA0MDpcdFx0cmV0ID0gb2ZfcHJvcGVydHlfcmVhZF91MzIobnAsIFwmIzM0O2F1dG9zdXNwZW5kLWRlbGF5XCYjMzQ7LCBcdTAwMjZhdXRvc3VzcGVuZF9kZWxheSk7XG4yMDQxOlx0XHRpZiAocmV0KVxuMjA0MjpcdFx0XHRhdXRvc3VzcGVuZF9kZWxheSA9IFRSRjc5NzBBX0FVVE9TVVNQRU5EX0RFTEFZO1xuMjA0MzpcdFxuMjA0NDpcdFx0cmV0dXJuIGF1dG9zdXNwZW5kX2RlbGF5O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMyAwNToxNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDQyNgoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6CgoqKlRyYWNpbmcgdGhlIE9yaWdpbnMgb2YgYHRyZjc5NzBhX3N0YXJ0dXBgKioKCk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBleGVjdXRpb24gZmxvdyBhcm91bmQgdGhpcyBgdHJmNzk3MGFfc3RhcnR1cGAgZnVuY3Rpb24uIE15IGZpcnN0IGluc3RpbmN0LCBhcyBhbHdheXMsIGlzIHRvIHRyYWNlIGl0cyBjYWxscy4gV2hlcmUgaXMgdGhpcyBmdW5jdGlvbiBiZWluZyBpbnZva2VkIGZyb20/IEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBpbml0aWF0aW5nIGNvbmRpdGlvbnMsIGFueSBkZXBlbmRlbmNpZXMgaXQgaGFzLCBhbmQgd2hhdCB0aGUgb3ZlcmFsbCBzeXN0ZW0gYmVoYXZpb3IgaXMgYXQgdGhhdCBwb2ludC4gSSYjMzk7bGwgbmVlZCB0byB1c2UgbXkgdXN1YWwgdG9vbHMgLSBzdGF0aWMgYW5hbHlzaXMgb3IsIGlmIHRoZSBjb2RlYmFzZSBpcyBhbWVuYWJsZSwgZHluYW1pYyBkZWJ1Z2dpbmcg4oCTIHRvIHBpbnBvaW50IGV2ZXJ5IHNpbmdsZSBjYWxsIHNpdGUuIFRoYXQgd2F5LCBJIGNhbiBidWlsZCB1cCBhIGNvbXBsZXRlIHBpY3R1cmUgb2YgdGhlIHJvbGUgYHRyZjc5NzBhX3N0YXJ0dXBgIHBsYXlzIGluIHRoZSBicm9hZGVyIGFwcGxpY2F0aW9uIGFyY2hpdGVjdHVyZS4gVW5kZXJzdGFuZGluZyB0aGUgdXBzdHJlYW0gZGVwZW5kZW5jaWVzIGlzIGtleSB0byB1bmRlcnN0YW5kaW5nIGl0cyBwdXJwb3NlIGFuZCBwb3RlbnRpYWwgaW1wYWN0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMyAwNToxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0cmY3OTcwYV9zdGFydHVwJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZmMvdHJmNzk3MGEuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25mYy90cmY3OTcwYS5jPTE5NjE9c3RhdGljIGludCB0cmY3OTcwYV9wb3dlcl9kb3duKHN0cnVjdCB0cmY3OTcwYSAqdHJmKVxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTk5MC1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTk5MTpzdGF0aWMgaW50IHRyZjc5NzBhX3N0YXJ0dXAoc3RydWN0IHRyZjc5NzBhICp0cmYpXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE5OTIte1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM9MjA0Nz1zdGF0aWMgaW50IHRyZjc5NzBhX3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0yMTk1LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoyMTk2Olx0cmV0ID0gdHJmNzk3MGFfc3RhcnR1cCh0cmYpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0yMTk3LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jPTIyNTY9c3RhdGljIGludCB0cmY3OTcwYV9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMjI2My1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MjI2NDpcdHJldCA9IHRyZjc5NzBhX3N0YXJ0dXAodHJmKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMjI2NS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTMgMDU6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjEwNjAKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiA1NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgaXQ6CgoqKkFuYWx5emluZyBUUkY3OTcwQSBJbml0aWFsaXphdGlvbioqCgpPa2F5LCBzbyBJIHNlZSBgdHJmNzk3MGFfc3RhcnR1cGAgaXMgY2FsbGVkIGZyb20gdHdvIGRpc3RpbmN0IHBsYWNlczogYHRyZjc5NzBhX3Byb2JlYCBhbmQgYHRyZjc5NzBhX3Jlc3VtZWAuIFRoaXMgaW1tZWRpYXRlbHkgdGVsbHMgbWUgdGhlcmUmIzM5O3MgYW4gaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UgYmVpbmcgcGVyZm9ybWVkIGF0IGJvdGggdGhlIGluaXRpYWwgZGV2aWNlIGRpc2NvdmVyeSBhbmQgcG93ZXItdXAvcmVzdW1lIHN0YWdlcy4gVGhhdCYjMzk7cyBnb29kIGFyY2hpdGVjdHVyYWwgcHJhY3RpY2U7IGtlZXBzIHRoaW5ncyBjbGVhbi4gUmlnaHQgbm93LCBJIG5lZWQgdG8gZm9jdXMgb24gaG93IHRoZSBkcml2ZXIgaGFuZGxlcyB0aGUgaW5pdGlhbCBwcm9iaW5nLCBzbyBsZXQmIzM5O3MgZGlnIGludG8gYHRyZjc5NzBhX3Byb2JlYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCYjMzk7cyBnb2luZyBvbiBkdXJpbmcgdGhhdCBmaXJzdCBjYWxsIHRvIGB0cmY3OTcwYV9zdGFydHVwYC4gSXQmIzM5O3MgbGlrZWx5IHNldHRpbmcgdXAgdGhlIGNvcmUgY29uZmlndXJhdGlvbiwgaW5pdGlhbGl6aW5nIHRoZSBoYXJkd2FyZSwgYW5kIHBlcmhhcHMgZG9pbmcgc29tZSBiYXNpYyBkZXZpY2UgaWRlbnRpZmljYXRpb24uIFVuZGVyc3RhbmRpbmcgdGhlIGluaXRpYWwgcHJvYmUgc2VxdWVuY2UgaXMgY3JpdGljYWwgZm9yIHVuZGVyc3RhbmRpbmcgZGV2aWNlIGVudW1lcmF0aW9uIGFuZCBwcm9wZXIgZHJpdmVyIGxvYWRpbmcuIEkgYmV0IGEgY2FyZWZ1bCBhbmFseXNpcyBoZXJlIHdpbGwgc2hlZCBsaWdodCBvbiB0aGUgZGV2aWNlJiMzOTtzIGRlZmF1bHQgc3RhdGUgYW5kIHdoYXQgaXQgZXhwZWN0cyB0byBkbyBmcm9tIHRoZSBzdGFydC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTMgMDU6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25mYy90cmY3OTcwYS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjA0NSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MjA0NTpcdH1cbjIwNDY6XHRcbjIwNDc6XHRzdGF0aWMgaW50IHRyZjc5NzBhX3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXG4yMDQ4Olx0e1xuMjA0OTpcdFx0Y29uc3Qgc3RydWN0IGRldmljZV9ub2RlICpucCA9IHNwaS1cdTAwM2VkZXYub2Zfbm9kZTtcbjIwNTA6XHRcdHN0cnVjdCB0cmY3OTcwYSAqdHJmO1xuMjA1MTpcdFx0aW50IHV2b2x0cywgYXV0b3N1c3BlbmRfZGVsYXksIHJldDtcbjIwNTI6XHRcdHUzMiBjbGtfZnJlcSA9IFRSRjc5NzBBXzEzTUhaX0NMT0NLX0ZSRVFVRU5DWTtcbjIwNTM6XHRcdHUzMiByeF9nYWluX3JlZHVjdGlvbl9kYjtcbjIwNTQ6XHRcbjIwNTU6XHRcdGlmICghbnApIHtcbjIwNTY6XHRcdFx0ZGV2X2VycihcdTAwMjZzcGktXHUwMDNlZGV2LCBcJiMzNDtObyBEZXZpY2UgVHJlZSBlbnRyeVxcblwmIzM0Oyk7XG4yMDU3Olx0XHRcdHJldHVybiAtRUlOVkFMO1xuMjA1ODpcdFx0fVxuMjA1OTpcdFxuMjA2MDpcdFx0dHJmID0gZGV2bV9remFsbG9jKFx1MDAyNnNwaS1cdTAwM2VkZXYsIHNpemVvZigqdHJmKSwgR0ZQX0tFUk5FTCk7XG4yMDYxOlx0XHRpZiAoIXRyZilcbjIwNjI6XHRcdFx0cmV0dXJuIC1FTk9NRU07XG4yMDYzOlx0XG4yMDY0Olx0XHR0cmYtXHUwMDNlc3RhdGUgPSBUUkY3OTcwQV9TVF9QV1JfT0ZGO1xuMjA2NTpcdFx0dHJmLVx1MDAzZWRldiA9IFx1MDAyNnNwaS1cdTAwM2VkZXY7XG4yMDY2Olx0XHR0cmYtXHUwMDNlc3BpID0gc3BpO1xuMjA2NzpcdFxuMjA2ODpcdFx0c3BpLVx1MDAzZW1vZGUgPSBTUElfTU9ERV8xO1xuMjA2OTpcdFx0c3BpLVx1MDAzZWJpdHNfcGVyX3dvcmQgPSA4O1xuMjA3MDpcdFxuMjA3MTpcdFx0cmV0ID0gc3BpX3NldHVwKHNwaSk7XG4yMDcyOlx0XHRpZiAocmV0IFx1MDAzYyAwKSB7XG4yMDczOlx0XHRcdGRldl9lcnIodHJmLVx1MDAzZWRldiwgXCYjMzQ7Q2FuJiMzOTt0IHNldCB1cCBTUEkgQ29tbXVuaWNhdGlvblxcblwmIzM0Oyk7XG4yMDc0Olx0XHRcdHJldHVybiByZXQ7XG4yMDc1Olx0XHR9XG4yMDc2Olx0XG4yMDc3Olx0XHRpZiAob2ZfcHJvcGVydHlfcmVhZF9ib29sKG5wLCBcJiMzNDtpcnEtc3RhdHVzLXJlYWQtcXVpcmtcJiMzNDspKVxuMjA3ODpcdFx0XHR0cmYtXHUwMDNlcXVpcmtzIHw9IFRSRjc5NzBBX1FVSVJLX0lSUV9TVEFUVVNfUkVBRDtcbjIwNzk6XHRcbjIwODA6XHRcdC8qIFRoZXJlIGFyZSB0d28gZW5hYmxlIHBpbnMgLSBvbmx5IEVOIG11c3QgYmUgcHJlc2VudCBpbiB0aGUgRFQgKi9cbjIwODE6XHRcdHRyZi1cdTAwM2Vlbl9ncGlvZCA9IGRldm1fZ3Bpb2RfZ2V0X2luZGV4KHRyZi1cdTAwM2VkZXYsIFwmIzM0O3RpLGVuYWJsZVwmIzM0OywgMCxcbjIwODI6XHRcdFx0XHRcdFx0ICAgICBHUElPRF9PVVRfTE9XKTtcbjIwODM6XHRcdGlmIChJU19FUlIodHJmLVx1MDAzZWVuX2dwaW9kKSkge1xuMjA4NDpcdFx0XHRkZXZfZXJyKHRyZi1cdTAwM2VkZXYsIFwmIzM0O05vIEVOIEdQSU8gcHJvcGVydHlcXG5cJiMzNDspO1xuMjA4NTpcdFx0XHRyZXR1cm4gUFRSX0VSUih0cmYtXHUwMDNlZW5fZ3Bpb2QpO1xuMjA4NjpcdFx0fVxuMjA4NzpcdFxuMjA4ODpcdFx0dHJmLVx1MDAzZWVuMl9ncGlvZCA9IGRldm1fZ3Bpb2RfZ2V0X2luZGV4X29wdGlvbmFsKHRyZi1cdTAwM2VkZXYsIFwmIzM0O3RpLGVuYWJsZVwmIzM0OywgMSxcbjIwODk6XHRcdFx0XHRcdFx0XHQgICAgICAgR1BJT0RfT1VUX0xPVyk7XG4yMDkwOlx0XHRpZiAoIXRyZi1cdTAwM2VlbjJfZ3Bpb2QpIHtcbjIwOTE6XHRcdFx0ZGV2X2luZm8odHJmLVx1MDAzZWRldiwgXCYjMzQ7Tm8gRU4yIEdQSU8gcHJvcGVydHlcXG5cJiMzNDspO1xuMjA5MjpcdFx0fSBlbHNlIGlmIChJU19FUlIodHJmLVx1MDAzZWVuMl9ncGlvZCkpIHtcbjIwOTM6XHRcdFx0ZGV2X2Vycih0cmYtXHUwMDNlZGV2LCBcJiMzNDtFcnJvciBnZXR0aW5nIEVOMiBHUElPIHByb3BlcnR5OiAlbGRcXG5cJiMzNDssXG4yMDk0Olx0XHRcdFx0UFRSX0VSUih0cmYtXHUwMDNlZW4yX2dwaW9kKSk7XG4yMDk1Olx0XHRcdHJldHVybiBQVFJfRVJSKHRyZi1cdTAwM2VlbjJfZ3Bpb2QpO1xuMjA5NjpcdFx0fSBlbHNlIGlmIChvZl9wcm9wZXJ0eV9yZWFkX2Jvb2wobnAsIFwmIzM0O2VuMi1yZi1xdWlya1wmIzM0OykpIHtcbjIwOTc6XHRcdFx0dHJmLVx1MDAzZXF1aXJrcyB8PSBUUkY3OTcwQV9RVUlSS19FTjJfTVVTVF9TVEFZX0xPVztcbjIwOTg6XHRcdH1cbjIwOTk6XHRcbjIxMDA6XHRcdG9mX3Byb3BlcnR5X3JlYWRfdTMyKG5wLCBcJiMzNDtjbG9jay1mcmVxdWVuY3lcJiMzNDssIFx1MDAyNmNsa19mcmVxKTtcbjIxMDE6XHRcdGlmICgoY2xrX2ZyZXEgIT0gVFJGNzk3MEFfMjdNSFpfQ0xPQ0tfRlJFUVVFTkNZKSBcdTAwMjZcdTAwMjZcbjIxMDI6XHRcdCAgICAoY2xrX2ZyZXEgIT0gVFJGNzk3MEFfMTNNSFpfQ0xPQ0tfRlJFUVVFTkNZKSkge1xuMjEwMzpcdFx0XHRkZXZfZXJyKHRyZi1cdTAwM2VkZXYsXG4yMTA0Olx0XHRcdFx0XCYjMzQ7Y2xvY2stZnJlcXVlbmN5ICgldSBIeikgdW5zdXBwb3J0ZWRcXG5cJiMzNDssIGNsa19mcmVxKTtcbjIxMDU6XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4yMTA2Olx0XHR9XG4yMTA3Olx0XG4yMTA4Olx0XHRpZiAoY2xrX2ZyZXEgPT0gVFJGNzk3MEFfMjdNSFpfQ0xPQ0tfRlJFUVVFTkNZKSB7XG4yMTA5Olx0XHRcdHRyZi1cdTAwM2Vtb2R1bGF0b3Jfc3lzX2Nsa19jdHJsID0gVFJGNzk3MEFfTU9EVUxBVE9SXzI3TUhaO1xuMjExMDpcdFx0XHRkZXZfZGJnKHRyZi1cdTAwM2VkZXYsIFwmIzM0O3RyZjc5NzBhIGNvbmZpZ3VyZWQgZm9yIDI3TUh6IGNyeXN0YWxcXG5cJiMzNDspO1xuMjExMTpcdFx0fSBlbHNlIHtcbjIxMTI6XHRcdFx0dHJmLVx1MDAzZW1vZHVsYXRvcl9zeXNfY2xrX2N0cmwgPSAwO1xuMjExMzpcdFx0fVxuMjExNDpcdFxuMjExNTpcdFx0aWYgKG9mX3Byb3BlcnR5X3JlYWRfdTMyKG5wLCBcJiMzNDt0aSxyeC1nYWluLXJlZHVjdGlvbi1kYlwmIzM0OywgXHUwMDI2cnhfZ2Fpbl9yZWR1Y3Rpb25fZGIpID09IDApIHtcbjIxMTY6XHRcdFx0aWYgKHJ4X2dhaW5fcmVkdWN0aW9uX2RiIFx1MDAzZSBUUkY3OTcwQV9SWF9HQUlOX1JFRFVDVElPTl9NQVhfREIpIHtcbjIxMTc6XHRcdFx0XHRkZXZfd2Fybih0cmYtXHUwMDNlZGV2LCBcJiMzNDtSWCBHYWluIHJlZHVjdGlvbiB0b28gaGlnaC4gSWdub3JlZFxcblwmIzM0Oyk7XG4yMTE4Olx0XHRcdH0gZWxzZSBpZiAoKHJ4X2dhaW5fcmVkdWN0aW9uX2RiICUgVFJGNzk3MEFfUlhfR0FJTl9SRURVQ1RJT05fREJfUEVSX0xTQikpIHtcbjIxMTk6XHRcdFx0XHRkZXZfd2Fybih0cmYtXHUwMDNlZGV2LCBcJiMzNDtSWCBHYWluIG11c3QgYmUgc2V0IGluIDUgZEIgaW5jcmVtZW50cy4gSWdub3JlZFxcblwmIzM0Oyk7XG4yMTIwOlx0XHRcdH0gZWxzZSB7XG4yMTIxOlx0XHRcdFx0ZGV2X2RiZyh0cmYtXHUwMDNlZGV2LCBcJiMzNDtSWCBnYWluIHNldCB0byAtJXVkQlxcblwmIzM0OywgcnhfZ2Fpbl9yZWR1Y3Rpb25fZGIpO1xuMjEyMjpcdFx0XHRcdHRyZi1cdTAwM2VyeF9nYWluX3JlZHVjdGlvbiA9ICgocnhfZ2Fpbl9yZWR1Y3Rpb25fZGIgL1xuMjEyMzpcdFx0XHRcdFx0VFJGNzk3MEFfUlhfR0FJTl9SRURVQ1RJT05fREJfUEVSX0xTQikgXHUwMDNjXHUwMDNjXG4yMTI0Olx0XHRcdFx0XHRUUkY3OTcwQV9SWF9TUEVDSUFMX1NFVFRJTkdTX0dEX1NISUZUKTtcbjIxMjU6XHRcdFx0XHR0cmYtXHUwMDNlY3VzdG9tX3J4X2dhaW5fcmVkdWN0aW9uID0gdHJ1ZTtcbjIxMjY6XHRcdFx0fVxuMjEyNzpcdFx0fVxuMjEyODpcdFxuMjEyOTpcdFx0cmV0ID0gZGV2bV9yZXF1ZXN0X3RocmVhZGVkX2lycSh0cmYtXHUwMDNlZGV2LCBzcGktXHUwMDNlaXJxLCBOVUxMLFxuMjEzMDpcdFx0XHRcdFx0XHR0cmY3OTcwYV9pcnEsXG4yMTMxOlx0XHRcdFx0XHRcdElSUUZfVFJJR0dFUl9SSVNJTkcgfCBJUlFGX09ORVNIT1QsXG4yMTMyOlx0XHRcdFx0XHRcdFwmIzM0O3RyZjc5NzBhXCYjMzQ7LCB0cmYpO1xuMjEzMzpcdFx0aWYgKHJldCkge1xuMjEzNDpcdFx0XHRkZXZfZXJyKHRyZi1cdTAwM2VkZXYsIFwmIzM0O0NhbiYjMzk7dCByZXF1ZXN0IElSUSMlZDogJWRcXG5cJiMzNDssIHNwaS1cdTAwM2VpcnEsIHJldCk7XG4yMTM1Olx0XHRcdHJldHVybiByZXQ7XG4yMTM2Olx0XHR9XG4yMTM3Olx0XG4yMTM4Olx0XHRtdXRleF9pbml0KFx1MDAyNnRyZi1cdTAwM2Vsb2NrKTtcbjIxMzk6XHRcdElOSVRfREVMQVlFRF9XT1JLKFx1MDAyNnRyZi1cdTAwM2V0aW1lb3V0X3dvcmssIHRyZjc5NzBhX3RpbWVvdXRfd29ya19oYW5kbGVyKTtcbjIxNDA6XHRcbjIxNDE6XHRcdHRyZi1cdTAwM2V2aW5fcmVndWxhdG9yID0gZGV2bV9yZWd1bGF0b3JfZ2V0KFx1MDAyNnNwaS1cdTAwM2VkZXYsIFwmIzM0O3ZpblwmIzM0Oyk7XG4yMTQyOlx0XHRpZiAoSVNfRVJSKHRyZi1cdTAwM2V2aW5fcmVndWxhdG9yKSkge1xuMjE0MzpcdFx0XHRyZXQgPSBQVFJfRVJSKHRyZi1cdTAwM2V2aW5fcmVndWxhdG9yKTtcbjIxNDQ6XHRcdFx0ZGV2X2Vycih0cmYtXHUwMDNlZGV2LCBcJiMzNDtDYW4mIzM5O3QgZ2V0IFZJTiByZWd1bGF0b3I6ICVkXFxuXCYjMzQ7LCByZXQpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMyAwNToxNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzM4MwoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDM1OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFRSRjc5NzBBIFByb2JlIGluIGEgVmlydHVhbGl6ZWQgQ29udGV4dCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgdHJmNzk3MGFgIGRyaXZlciBjb2RlIGFuZCB0aGUgcHJvYmUgZnVuY3Rpb24uIFRoZSBmaXJzdCB0aGluZyB0aGF0IGp1bXBzIG91dCBpcyB0aGF0IGNoZWNrIG9uIGxpbmUgMjA1NSwgdGhlIGBpZiAoIW5wKWAgd2hpY2ggaXMgY2hlY2tpbmcgZm9yIGEgRGV2aWNlIFRyZWUgZW50cnkuIEl0IHNlZW1zIGxpa2UgdGhlIGNvZGUgaXMgZXhwZWN0aW5nIGEgRGV2aWNlIFRyZWUgbm9kZSwgaW5kaWNhdGVkIGJ5IGBucGAuIEkgc2VlIHRoYXQgdGhlIGNvZGUgaXMgYXR0ZW1wdGluZyB0byBnZXQgYSBgdGksZW5hYmxlYCBHUElPLCBhbmQgYSByZWd1bGF0b3IsIHN1Z2dlc3RpbmcgYSBkZXBlbmRlbmN5IG9uIHRoZSBkZXZpY2UgdHJlZSB0byBkZWZpbmUgaGFyZHdhcmUgcmVzb3VyY2VzLgoKTXkgbWFpbiBjb25jZXJuIGlzIHdoZXRoZXIgdGhpcyBpcyBnb2luZyB0byB3b3JrIGluIGEgc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIENhbiB0aGlzIGV2ZXIgYmUgcHJvYmVkIGluIHNvbWV0aGluZyBsaWtlIFFFTVUgb3IgR29vZ2xlIENvbXB1dGUgRW5naW5lLCB3aGljaCB0eXBpY2FsbHkgcnVuIG9uIGFtZDY0PwoKT24gYW4gYW1kNjQgbWFjaGluZSwgRGV2aWNlIFRyZWUgaXNuJiMzOTt0IG5vcm1hbGx5IHVzZWQuIHg4NiBhbmQgYW1kNjQgc3lzdGVtcyB0eXBpY2FsbHkgYm9vdCB2aWEgQUNQSSBvciBhIHN0YW5kYXJkIEJJT1MvVUVGSSBjb25maWd1cmF0aW9uLiBEZXZpY2UgVHJlZSBpcyBmYXIgbW9yZSBjb21tb24gaW4gQVJNLCBSSVNDLVYsIE1JUFMgYW5kIHNpbWlsYXIgZW1iZWRkZWQgYXJjaGl0ZWN0dXJlcy4KCkV2ZW4gKmlmKiBEZXZpY2UgVHJlZSBjb3VsZCBiZSBsb2FkZWQgc29tZWhvdyBpbnRvIGEgUUVNVSBpbnN0YW5jZSBvbiBhbWQ2NCwgaXMgdGhlIFRSRjc5NzBBIGRldmljZSBvciBTUEkgY29udHJvbGxlciBldmVuICphdmFpbGFibGUqIGluIFFFTVU/IE9yIGFyZSB3ZSBnb2luZyB0byBuZWVkIHNvbWUga2luZCBvZiBTUEkgZW11bGF0aW9uIG9yIHNvZnR3YXJlIFNQSSBpbXBsZW1lbnRhdGlvbiBpbiB0aGUgTGludXgga2VybmVsPwoKSSBuZWVkIHRvIHF1aWNrbHkgY2hlY2suIExldCYjMzk7cyBzZWUgaWYgdGhlcmUgYXJlIGFueSBlbXVsYXRlZCBTUEkgY29udHJvbGxlcnMgb3IgdmlydHVhbCBTUEkgZGV2aWNlcyBleHBvc2VkIGluIFFFTVUgb3Igc3l6a2FsbGVyLiBJIG5lZWQgdG8gc2VhcmNoIHRoZSBzeXprYWxsZXIgY29uZmlndXJhdGlvbiBhbmQgdGhlIGtlcm5lbCBzb3VyY2UgZm9yIGFueSBtZW50aW9ucyBvZiAmIzM0O3NwaSYjMzQ7IG9yIHNpbWlsYXIgdGVybXMgdG8gc2VlIHdoYXQgSSBjYW4gZmluZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTMgMDU6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dHJmNzk3MGEmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDgyNSBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9uZmMvdGksdHJmNzk3MGEueWFtbC0zLS0tLVxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9uZmMvdGksdHJmNzk3MGEueWFtbDo0OiRpZDogaHR0cDovL2RldmljZXRyZWUub3JnL3NjaGVtYXMvbmV0L25mYy90aSx0cmY3OTcwYS55YW1sI1xuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9uZmMvdGksdHJmNzk3MGEueWFtbC01LSRzY2hlbWE6IGh0dHA6Ly9kZXZpY2V0cmVlLm9yZy9tZXRhLXNjaGVtYXMvY29yZS55YW1sI1xuLS1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbmZjL3RpLHRyZjc5NzBhLnlhbWw9MTM9cHJvcGVydGllczpcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbmZjL3RpLHRyZjc5NzBhLnlhbWwtMTQtICBjb21wYXRpYmxlOlxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9uZmMvdGksdHJmNzk3MGEueWFtbDoxNTogICAgY29uc3Q6IHRpLHRyZjc5NzBhXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L25mYy90aSx0cmY3OTcwYS55YW1sLTE2LVxuLS1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbmZjL3RpLHRyZjc5NzBhLnlhbWwtMjMtICAgIGRlc2NyaXB0aW9uOiB8XG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L25mYy90aSx0cmY3OTcwYS55YW1sOjI0OiAgICAgIFNldCB0byBzcGVjaWZ5IHRoYXQgdGhlIGlucHV0IGZyZXF1ZW5jeSB0byB0aGUgdHJmNzk3MGEgaXMgMTM1NjAwMDBIeiBvclxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9uZmMvdGksdHJmNzk3MGEueWFtbC0yNS0gICAgICAyNzEyMDAwMEh6XG4tLVxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9uZmMvdGksdHJmNzk3MGEueWFtbC0yOS0gICAgZGVzY3JpcHRpb246IHxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbmZjL3RpLHRyZjc5NzBhLnlhbWw6MzA6ICAgICAgU3BlY2lmeSB0aGF0IHRoZSB0cmY3OTcwYSBiZWluZyB1c2VkIGhhcyB0aGUgXCYjMzQ7RU4yIFJGXCYjMzQ7IGVycmF0dW1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbmZjL3RpLHRyZjc5NzBhLnlhbWwtMzEtXG4tLVxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9uZmMvdGksdHJmNzk3MGEueWFtbC0zNy0gICAgZGVzY3JpcHRpb246IHxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbmZjL3RpLHRyZjc5NzBhLnlhbWw6Mzg6ICAgICAgU3BlY2lmeSB0aGF0IHRoZSB0cmY3OTcwYSBiZWluZyB1c2VkIGhhcyB0aGUgXCYjMzQ7SVJRIFN0YXR1cyBSZWFkXCYjMzQ7IGVycmF0dW1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbmZjL3RpLHRyZjc5NzBhLnlhbWwtMzktXG4tLVxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9uZmMvdGksdHJmNzk3MGEueWFtbD03Nz1leGFtcGxlczpcbi0tXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L25mYy90aSx0cmY3OTcwYS55YW1sLTg2LSAgICAgICAgbmZjQDAge1xuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9uZmMvdGksdHJmNzk3MGEueWFtbDo4NzogICAgICAgICAgICBjb21wYXRpYmxlID0gXCYjMzQ7dGksdHJmNzk3MGFcJiMzNDs7XG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L25mYy90aSx0cmY3OTcwYS55YW1sLTg4LSAgICAgICAgICAgIHJlZyA9IFx1MDAzYzBcdTAwM2U7XG4tLVxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9uZmMvdGksdHJmNzk3MGEueWFtbC05MC0gICAgICAgICAgICBwaW5jdHJsLW5hbWVzID0gXCYjMzQ7ZGVmYXVsdFwmIzM0OztcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbmZjL3RpLHRyZjc5NzBhLnlhbWw6OTE6ICAgICAgICAgICAgcGluY3RybC0wID0gXHUwMDNjXHUwMDI2dHJmNzk3MGFfZGVmYXVsdFx1MDAzZTtcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbmZjL3RpLHRyZjc5NzBhLnlhbWwtOTItICAgICAgICAgICAgc3BpLW1heC1mcmVxdWVuY3kgPSBcdTAwM2MyMDAwMDAwXHUwMDNlO1xuLS1cbk1BSU5UQUlORVJTPTI3NDg0PVM6XHRTdXBwb3J0ZWRcbk1BSU5UQUlORVJTOjI3NDg1OkY6XHREb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L25mYy90aSx0cmY3OTcwYS55YW1sXG5NQUlOVEFJTkVSUzoyNzQ4NjpGOlx0ZHJpdmVycy9uZmMvdHJmNzk3MGEuY1xuTUFJTlRBSU5FUlMtMjc0ODctXG4tLVxuYXJjaC9hcm0vYm9vdC9kdHMvbnhwL2lteC9pbXg2ZGwtcHJ0cnZ0LmR0cz02MD1cdG5mY0AwIHtcbmFyY2gvYXJtL2Jvb3QvZHRzL254cC9pbXgvaW14NmRsLXBydHJ2dC5kdHM6NjE6XHRcdGNvbXBhdGlibGUgPSBcJiMzNDt0aSx0cmY3OTcwYVwmIzM0OztcbmFyY2gvYXJtL2Jvb3QvZHRzL254cC9pbXgvaW14NmRsLXBydHJ2dC5kdHMtNjItXHRcdHJlZyA9IFx1MDAzYzBcdTAwM2U7XG4tLVxuZHJpdmVycy9uZmMvS2NvbmZpZz05PWNvbmZpZyBORkNfVFJGNzk3MEFcbi0tXG5kcml2ZXJzL25mYy9LY29uZmlnLTE4LVx0ICBzYXkgTSAgdG8gY29tcGlsZSBpdCBhcyBhIG1vZHVsZS4gVGhlIG1vZHVsZSB3aWxsIGJlIGNhbGxlZFxuZHJpdmVycy9uZmMvS2NvbmZpZzoxOTpcdCAgdHJmNzk3MGEua28uXG5kcml2ZXJzL25mYy9LY29uZmlnLTIwLVxuLS1cbmRyaXZlcnMvbmZjL01ha2VmaWxlPTEzPW9iai0kKENPTkZJR19ORkNfTVJWTClcdFx0JiM0Mzs9IG5mY21ydmwvXG5kcml2ZXJzL25mYy9NYWtlZmlsZToxNDpvYmotJChDT05GSUdfTkZDX1RSRjc5NzBBKVx0JiM0Mzs9IHRyZjc5NzBhLm9cbmRyaXZlcnMvbmZjL01ha2VmaWxlLTE1LW9iai0kKENPTkZJR19ORkNfU1QyMU5GQ0EpICBcdCYjNDM7PSBzdDIxbmZjYS9cbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTI3LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoyODovKiBUaGVyZSBhcmUgMyB3YXlzIHRoZSBob3N0IGNhbiBjb21tdW5pY2F0ZSB3aXRoIHRoZSB0cmY3OTcwYTpcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMjktICogcGFyYWxsZWwgbW9kZSwgU1BJIHdpdGggU2xhdmUgU2VsZWN0IChTUykgbW9kZSwgYW5kIFNQSSB3aXRob3V0XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0zMS0gKlxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzozMjogKiBUaGUgdHJmNzk3MGEgaXMgdmVyeSB0aW1pbmcgc2Vuc2l0aXZlIGFuZCB0aGUgVklOLCBFTjIsIGFuZCBFTlxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0zMy0gKiBwaW5zIG11c3QgYXNzZXJ0ZWQgaW4gdGhhdCBvcmRlciBhbmQgd2l0aCBzcGVjaWZpYyBkZWxheXMgaW4gYmV0d2Vlbi5cbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTM1LSAqIGNvbmZpcm1lZCB0byB3b3JrIHdpdGggdGhpcyBkcml2ZXIuICBUaGVyZSBpcyBhIGJ1ZyB3aXRoIHRoZSBjdXJyZW50XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjM2OiAqIHZlcnNpb24gb2YgdGhlIHRyZjc5NzBhIHRoYXQgcmVxdWlyZXMgdGhhdCBFTjIgcmVtYWluIGxvdyBubyBtYXR0ZXJcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMzctICogd2hhdC4gIElmIGl0IGdvZXMgaGlnaCwgaXQgd2lsbCBnZW5lcmF0ZSBhbiBSRiBmaWVsZCBldmVuIHdoZW4gaW5cbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTM5LSAqIHdoZW4gRU4yIGlzIGxlZnQgbG93LiAgVGhlICYjMzk7ZW4yLXJmLXF1aXJrJiMzOTsgZGV2aWNlIHRyZWUgcHJvcGVydHlcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NDA6ICogaW5kaWNhdGVzIHRoYXQgdHJmNzk3MGEgY3VycmVudGx5IGJlaW5nIHVzZWQgaGFzIHRoZSBlcnJhdHVtIGFuZFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy00MS0gKiB0aGF0IEVOMiBtdXN0IGJlIGtlcHQgbG93LlxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNDQtICogVGltZW91dHMgYXJlIHJlcXVpcmVkIHNvIHRoaW5ncyBkb24mIzM5O3QgaGFuZyB3aGVuIHRoZXJlIGlzIG5vIHJlc3BvbnNlXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjQ1OiAqIGZyb20gdGhlIHRyZjc5NzBhIChvciB0YWcpLiAgVXNpbmcgdGhpcyBtZWNoYW5pc20gY3JlYXRlcyBhIHJhY2Ugd2l0aFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy00Ni0gKiBpbnRlcnJ1cHRzLCBob3dldmVyLiAgVGhhdCBpcywgYW4gaW50ZXJydXB0IGFuZCBhIHRpbWVvdXQgY291bGQgb2NjdXJcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTYwLSAqIHRoZSBlbnRpcmUgYW50aWNvbGxpc2lvbiBwcm9jZWR1cmUgYWdhaW4gYnV0IHRoZSBkaWdpdGFsIGxheWVyIGRvZXNuJiMzOTt0XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjYxOiAqIHN1cHBvcnQgdGhhdC4gIFNvLCBpZiBhbiBhYm9ydCBpcyByZWNlaXZlZCBiZWZvcmUgdHJmNzk3MGFfc2VuZF9jbWQoKVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02Mi0gKiBoYXMgc2VudCB0aGUgY29tbWFuZCB0byB0aGUgdGFnLCBpdCBzaW1wbHkgcmV0dXJucyAtRUNBTkNFTEVELiAgSWYgdGhlXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05Ni0gKiB3aGVuIHRoZSBmcmFtaW5nIGlzICYjMzk7TkZDX0RJR0lUQUxfRlJBTUlOR19ORkNBX1QyVCYjMzk7LiAgVGhpcyBpcyBkb25lIGJ5XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjk3OiAqIHRoZSB0cmY3OTcwYV9wZXJfY21kX2NvbmZpZygpIHJvdXRpbmUuXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTk4LSAqXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNDQtLyogUXVpcmtzICovXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE0NTovKiBFcnJhdHVtOiBXaGVuIHJlYWRpbmcgSVJRIFN0YXR1cyByZWdpc3RlciBvbiB0cmY3OTcwYSwgd2UgbXVzdCBpc3N1ZSBhXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE0Ni0gKiByZWFkIGNvbnRpbnVvdXMgY29tbWFuZCBmb3IgSVJRIFN0YXR1cyBhbmQgQ29sbGlzaW9uIFBvc2l0aW9uIHJlZ2lzdGVycy5cbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTQxNS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NDE2OmVudW0gdHJmNzk3MGFfc3RhdGUge1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy00MTctXHRUUkY3OTcwQV9TVF9QV1JfT0ZGLFxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNDI5LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo0MzA6c3RydWN0IHRyZjc5NzBhIHtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NDMxOlx0ZW51bSB0cmY3OTcwYV9zdGF0ZVx0XHRzdGF0ZTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNDMyLVx0c3RydWN0IGRldmljZVx0XHRcdCpkZXY7XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy00NjUtXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjQ2NjpzdGF0aWMgaW50IHRyZjc5NzBhX2NtZChzdHJ1Y3QgdHJmNzk3MGEgKnRyZiwgdTggb3Bjb2RlKVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy00Njcte1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNDc5LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo0ODA6c3RhdGljIGludCB0cmY3OTcwYV9yZWFkKHN0cnVjdCB0cmY3OTcwYSAqdHJmLCB1OCByZWcsIHU4ICp2YWwpXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTQ4MS17XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy00OTQtXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjQ5NTpzdGF0aWMgaW50IHRyZjc5NzBhX3JlYWRfY29udChzdHJ1Y3QgdHJmNzk3MGEgKnRyZiwgdTggcmVnLCB1OCAqYnVmLFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy00OTYtXHRcdFx0ICAgICAgc2l6ZV90IGxlbilcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTUyMy1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NTI0OnN0YXRpYyBpbnQgdHJmNzk3MGFfd3JpdGUoc3RydWN0IHRyZjc5NzBhICp0cmYsIHU4IHJlZywgdTggdmFsKVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy01MjUte1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNTM4LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo1Mzk6c3RhdGljIGludCB0cmY3OTcwYV9yZWFkX2lycXN0YXR1cyhzdHJ1Y3QgdHJmNzk3MGEgKnRyZiwgdTggKnN0YXR1cylcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNTQwLXtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTU2Mi1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NTYzOnN0YXRpYyBpbnQgdHJmNzk3MGFfdXBkYXRlX3J4X2dhaW5fcmVkdWN0aW9uKHN0cnVjdCB0cmY3OTcwYSAqdHJmKVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy01NjQte1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNTcwLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo1NzE6XHRyZXQgPSB0cmY3OTcwYV9yZWFkKHRyZiwgVFJGNzk3MEFfUlhfU1BFQ0lBTF9TRVRUSU5HUywgXHUwMDI2cmVnKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNTcyLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTU3Ni1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NTc3Olx0cmV0ID0gdHJmNzk3MGFfd3JpdGUodHJmLCBUUkY3OTcwQV9SWF9TUEVDSUFMX1NFVFRJTkdTLCByZWcpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy01NzgtXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy01ODEtXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjU4MjpzdGF0aWMgaW50IHRyZjc5NzBhX3VwZGF0ZV9pc29fY3RybF9yZWdpc3RlcihzdHJ1Y3QgdHJmNzk3MGEgKnRyZiwgdTggaXNvX2N0cmwpXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTU4My17XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy01ODUtXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjU4NjpcdHJldCA9IHRyZjc5NzBhX3dyaXRlKHRyZiwgVFJGNzk3MEFfSVNPX0NUUkwsIGlzb19jdHJsKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNTg3LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTU5Mi1cdCAqL1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo1OTM6XHRyZXQgPSB0cmY3OTcwYV91cGRhdGVfcnhfZ2Fpbl9yZWR1Y3Rpb24odHJmKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNTk0LVxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNTk3LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo1OTg6c3RhdGljIGludCB0cmY3OTcwYV9yZWFkX3RhcmdldF9wcm90byhzdHJ1Y3QgdHJmNzk3MGEgKnRyZiwgdTggKnRhcmdldF9wcm90bylcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNTk5LXtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTYxNi1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NjE3OnN0YXRpYyBpbnQgdHJmNzk3MGFfbW9kZV9kZXRlY3Qoc3RydWN0IHRyZjc5NzBhICp0cmYsIHU4ICpyZl90ZWNoKVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02MTgte1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNjIxLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo2MjI6XHRyZXQgPSB0cmY3OTcwYV9yZWFkX3RhcmdldF9wcm90byh0cmYsIFx1MDAyNnRhcmdldF9wcm90byk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTYyMy1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02NDktXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjY1MDpzdGF0aWMgdm9pZCB0cmY3OTcwYV9zZW5kX3Vwc3RyZWFtKHN0cnVjdCB0cmY3OTcwYSAqdHJmKVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02NTEte1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNjU1LVx0aWYgKHRyZi1cdTAwM2VyeF9za2IgXHUwMDI2XHUwMDI2ICFJU19FUlIodHJmLVx1MDAzZXJ4X3NrYikgXHUwMDI2XHUwMDI2ICF0cmYtXHUwMDNlYWJvcnRpbmcpXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjY1NjpcdFx0cHJpbnRfaGV4X2R1bXBfZGVidWcoXCYjMzQ7dHJmNzk3MGEgcnggZGF0YTogXCYjMzQ7LCBEVU1QX1BSRUZJWF9OT05FLFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02NTctXHRcdFx0XHQgICAgIDE2LCAxLCB0cmYtXHUwMDNlcnhfc2tiLVx1MDAzZWRhdGEsIHRyZi1cdTAwM2VyeF9za2ItXHUwMDNlbGVuLFxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNjc3LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo2Nzg6c3RhdGljIHZvaWQgdHJmNzk3MGFfc2VuZF9lcnJfdXBzdHJlYW0oc3RydWN0IHRyZjc5NzBhICp0cmYsIGludCBlcnJubylcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNjc5LXtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTY4Ni1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6Njg3Olx0dHJmNzk3MGFfc2VuZF91cHN0cmVhbSh0cmYpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02ODgtfVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02ODktXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjY5MDpzdGF0aWMgaW50IHRyZjc5NzBhX3RyYW5zbWl0KHN0cnVjdCB0cmY3OTcwYSAqdHJmLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02OTEtXHRcdFx0ICAgICB1bnNpZ25lZCBpbnQgbGVuLCBjb25zdCB1OCAqcHJlZml4LFxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNjk4LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo2OTk6XHRwcmludF9oZXhfZHVtcF9kZWJ1ZyhcJiMzNDt0cmY3OTcwYSB0eCBkYXRhOiBcJiMzNDssIERVTVBfUFJFRklYX05PTkUsXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTcwMC1cdFx0XHQgICAgIDE2LCAxLCBza2ItXHUwMDNlZGF0YSwgbGVuLCBmYWxzZSk7XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy03NDctXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjc0ODpzdGF0aWMgdm9pZCB0cmY3OTcwYV9maWxsX2ZpZm8oc3RydWN0IHRyZjc5NzBhICp0cmYpXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTc0OS17XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy03NTUtXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjc1NjpcdHJldCA9IHRyZjc5NzBhX3JlYWQodHJmLCBUUkY3OTcwQV9GSUZPX1NUQVRVUywgXHUwMDI2Zmlmb19ieXRlcyk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTc1Ny1cdGlmIChyZXQpIHtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NzU4Olx0XHR0cmY3OTcwYV9zZW5kX2Vycl91cHN0cmVhbSh0cmYsIHJldCk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTc1OS1cdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNzc3LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo3Nzg6XHRyZXQgPSB0cmY3OTcwYV90cmFuc21pdCh0cmYsIHNrYiwgbGVuLCBcdTAwMjZwcmVmaXgsIHNpemVvZihwcmVmaXgpKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNzc5LVx0aWYgKHJldClcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NzgwOlx0XHR0cmY3OTcwYV9zZW5kX2Vycl91cHN0cmVhbSh0cmYsIHJldCk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTc4MS19XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTc4Mi1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NzgzOnN0YXRpYyB2b2lkIHRyZjc5NzBhX2RyYWluX2ZpZm8oc3RydWN0IHRyZjc5NzBhICp0cmYsIHU4IHN0YXR1cylcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNzg0LXtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTc4OS1cdGlmIChzdGF0dXMgXHUwMDI2IFRSRjc5NzBBX0lSUV9TVEFUVVNfRVJST1IpIHtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NzkwOlx0XHR0cmY3OTcwYV9zZW5kX2Vycl91cHN0cmVhbSh0cmYsIC1FSU8pO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy03OTEtXHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTc5My1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6Nzk0Olx0cmV0ID0gdHJmNzk3MGFfcmVhZCh0cmYsIFRSRjc5NzBBX0ZJRk9fU1RBVFVTLCBcdTAwMjZmaWZvX2J5dGVzKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNzk1LVx0aWYgKHJldCkge1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo3OTY6XHRcdHRyZjc5NzBhX3NlbmRfZXJyX3Vwc3RyZWFtKHRyZiwgcmV0KTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNzk3LVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy04MTItXHRcdGlmICghc2tiKSB7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjgxMzpcdFx0XHR0cmY3OTcwYV9zZW5kX2Vycl91cHN0cmVhbSh0cmYsIC1FTk9NRU0pO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy04MTQtXHRcdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtODIwLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo4MjE6XHRyZXQgPSB0cmY3OTcwYV9yZWFkX2NvbnQodHJmLCBUUkY3OTcwQV9GSUZPX0lPX1JFR0lTVEVSLFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy04MjItXHRcdFx0XHQgc2tiX3B1dChza2IsIGZpZm9fYnl0ZXMpLCBmaWZvX2J5dGVzKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtODIzLVx0aWYgKHJldCkge1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo4MjQ6XHRcdHRyZjc5NzBhX3NlbmRfZXJyX3Vwc3RyZWFtKHRyZiwgcmV0KTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtODI1LVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy04MzUtXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjgzNjpcdFx0cmV0ID0gdHJmNzk3MGFfcmVhZCh0cmYsIFRSRjc5NzBBX0ZJRk9fU1RBVFVTLCBcdTAwMjZmaWZvX2J5dGVzKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtODM3LVx0XHRpZiAocmV0KSB7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjgzODpcdFx0XHR0cmY3OTcwYV9zZW5kX2Vycl91cHN0cmVhbSh0cmYsIHJldCk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTgzOS1cdFx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy04NDUtXHRcdCAqIHRoZSBpZiBzdG10IGJlbG93IGRvZXNuJiMzOTt0IGZpcmUgYW5kIHRoZSBkcml2ZXIgd2lsbCB3YWl0XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjg0NjpcdFx0ICogZm9yIHRoZSB0cmY3OTcwYSB0byBnZW5lcmF0ZSBhbm90aGVyIFJYIGludGVycnVwdC5cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtODQ3LVx0XHQgKi9cbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTg1My1cdGlmIChzdGF0dXMgPT0gVFJGNzk3MEFfSVJRX1NUQVRVU19TUlgpIHtcdC8qIFJlY2VpdmUgY29tcGxldGUgKi9cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6ODU0Olx0XHR0cmY3OTcwYV9zZW5kX3Vwc3RyZWFtKHRyZik7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTg1NS1cdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtODY0LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo4NjU6c3RhdGljIGlycXJldHVybl90IHRyZjc5NzBhX2lycShpbnQgaXJxLCB2b2lkICpkZXZfaWQpXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTg2Ni17XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjg2NzpcdHN0cnVjdCB0cmY3OTcwYSAqdHJmID0gZGV2X2lkO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy04NjgtXHRpbnQgcmV0O1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtODc3LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo4Nzg6XHRyZXQgPSB0cmY3OTcwYV9yZWFkX2lycXN0YXR1cyh0cmYsIFx1MDAyNnN0YXR1cyk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTg3OS1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTg5Ni1cdFx0ICogdHVybiBvZmYgdGhlIHJlY2VpdmVyIHRvIGF2b2lkIHVubmVjZXNzYXJ5IGludGVycnVwdHMuXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjg5NzpcdFx0ICogSXQgd2lsbCBiZSB0dXJuZWQgYmFjayBvbiBpbiB0cmY3OTcwYV9zZW5kX2NtZCgpIHdoZW5cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtODk4LVx0XHQgKiB0aGUgbmV4dCBjb21tYW5kIGlzIGlzc3VlZC5cbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTkwMC1cdFx0aWYgKHRyZi1cdTAwM2Vpc19pbml0aWF0b3IgXHUwMDI2XHUwMDI2IChzdGF0dXMgXHUwMDI2IFRSRjc5NzBBX0lSUV9TVEFUVVNfRVJST1IpKSB7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjkwMTpcdFx0XHR0cmY3OTcwYV9jbWQodHJmLCBUUkY3OTcwQV9DTURfQkxPQ0tfUlgpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05MDItXHRcdFx0dHJmLVx1MDAzZXN0YXRlID0gVFJGNzk3MEFfU1RfSURMRV9SWF9CTE9DS0VEO1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTA0LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo5MDU6XHRcdHRyZjc5NzBhX2NtZCh0cmYsIFRSRjc5NzBBX0NNRF9GSUZPX1JFU0VUKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTA2LVx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTkxMC1cdFx0XHQgICAgIWNhbmNlbF9kZWxheWVkX3dvcmsoXHUwMDI2dHJmLVx1MDAzZXRpbWVvdXRfd29yayk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjkxMTpcdFx0XHR0cmY3OTcwYV9maWxsX2ZpZm8odHJmKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTEyLVx0XHR9IGVsc2Uge1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo5MTM6XHRcdFx0dHJmNzk3MGFfc2VuZF9lcnJfdXBzdHJlYW0odHJmLCAtRUlPKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTE0LVx0XHR9XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05MjAtXHRcdFx0ICAgICFjYW5jZWxfZGVsYXllZF93b3JrKFx1MDAyNnRyZi1cdTAwM2V0aW1lb3V0X3dvcmspO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo5MjE6XHRcdFx0dHJmNzk3MGFfZHJhaW5fZmlmbyh0cmYsIHN0YXR1cyk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTkyMi1cdFx0fSBlbHNlIGlmIChzdGF0dXMgXHUwMDI2IFRSRjc5NzBBX0lSUV9TVEFUVVNfRklGTykge1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo5MjM6XHRcdFx0cmV0ID0gdHJmNzk3MGFfcmVhZCh0cmYsIFRSRjc5NzBBX0ZJRk9fU1RBVFVTLFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05MjQtXHRcdFx0XHRcdCAgICBcdTAwMjZmaWZvX2J5dGVzKTtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTkyOC1cdFx0XHRpZiAocmV0KVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo5Mjk6XHRcdFx0XHR0cmY3OTcwYV9zZW5kX2Vycl91cHN0cmVhbSh0cmYsIHJldCk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTkzMC1cdFx0XHRlbHNlIGlmICghZmlmb19ieXRlcylcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6OTMxOlx0XHRcdFx0dHJmNzk3MGFfY21kKHRyZiwgVFJGNzk3MEFfQ01EX0ZJRk9fUkVTRVQpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05MzItXHRcdH0gZWxzZSBpZiAoKHN0YXR1cyA9PSBUUkY3OTcwQV9JUlFfU1RBVFVTX1RYKSB8fFxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTM1LVx0XHRcdFx0XHRUUkY3OTcwQV9JUlFfU1RBVFVTX05GQ19SRikpKSkge1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo5MzY6XHRcdFx0dHJmNzk3MGFfY21kKHRyZiwgVFJGNzk3MEFfQ01EX0ZJRk9fUkVTRVQpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05MzctXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05NDEtXHRcdFx0XHR0cmYtXHUwMDNlcnhfc2tiID0gTlVMTDtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6OTQyOlx0XHRcdFx0dHJmNzk3MGFfc2VuZF91cHN0cmVhbSh0cmYpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05NDMtXHRcdFx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTk2Mi1cdFx0XHRjYXNlIE5GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDQV9BTlRJQ09MX0NPTVBMRVRFOlxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo5NjM6XHRcdFx0XHRyZXQgPSB0cmY3OTcwYV93cml0ZSh0cmYsXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTk2NC1cdFx0XHRcdFx0IFRSRjc5NzBBX1NQRUNJQUxfRkNOX1JFRzEsXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05NzYtXHRcdFx0aWYgKGlzb19jdHJsICE9IHRyZi1cdTAwM2Vpc29fY3RybCkge1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo5Nzc6XHRcdFx0XHRyZXQgPSB0cmY3OTcwYV91cGRhdGVfaXNvX2N0cmxfcmVnaXN0ZXIodHJmLCBpc29fY3RybCk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTk3OC1cdFx0XHRcdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05ODMtXHRcdH0gZWxzZSB7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjk4NDpcdFx0XHR0cmY3OTcwYV9zZW5kX2Vycl91cHN0cmVhbSh0cmYsIC1FSU8pO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05ODUtXHRcdH1cbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTk4OC1cdFx0aWYgKHN0YXR1cyAhPSBUUkY3OTcwQV9JUlFfU1RBVFVTX1RYKVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo5ODk6XHRcdFx0dHJmNzk3MGFfc2VuZF9lcnJfdXBzdHJlYW0odHJmLCAtRUlPKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTkwLVx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTk5NC1cdFx0XHQgICAgIWNhbmNlbF9kZWxheWVkX3dvcmsoXHUwMDI2dHJmLVx1MDAzZXRpbWVvdXRfd29yayk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjk5NTpcdFx0XHR0cmY3OTcwYV9kcmFpbl9maWZvKHRyZiwgc3RhdHVzKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTk2LVx0XHR9IGVsc2UgaWYgKCEoc3RhdHVzIFx1MDAyNiBUUkY3OTcwQV9JUlFfU1RBVFVTX05GQ19SRikpIHtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6OTk3Olx0XHRcdHRyZjc5NzBhX3NlbmRfZXJyX3Vwc3RyZWFtKHRyZiwgLUVJTyk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTk5OC1cdFx0fVxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTAwNC1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTAwNTpcdFx0XHRyZXQgPSB0cmY3OTcwYV9tb2RlX2RldGVjdCh0cmYsIFx1MDAyNnRyZi1cdTAwM2VtZF9yZl90ZWNoKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTAwNi1cdFx0XHRpZiAocmV0KSB7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEwMDc6XHRcdFx0XHR0cmY3OTcwYV9zZW5kX2Vycl91cHN0cmVhbSh0cmYsIHJldCk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwMDgtXHRcdFx0fSBlbHNlIHtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTAwOS1cdFx0XHRcdHRyZi1cdTAwM2VzdGF0ZSA9IFRSRjc5NzBBX1NUX0xJU1RFTklORztcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTAxMDpcdFx0XHRcdHRyZjc5NzBhX2RyYWluX2ZpZm8odHJmLCBzdGF0dXMpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDExLVx0XHRcdH1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTAxMi1cdFx0fSBlbHNlIGlmICghKHN0YXR1cyBcdTAwMjYgVFJGNzk3MEFfSVJRX1NUQVRVU19ORkNfUkYpKSB7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEwMTM6XHRcdFx0dHJmNzk3MGFfc2VuZF9lcnJfdXBzdHJlYW0odHJmLCAtRUlPKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTAxNC1cdFx0fVxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTAyNS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTAyNjpzdGF0aWMgdm9pZCB0cmY3OTcwYV9pc3N1ZV9lb2Yoc3RydWN0IHRyZjc5NzBhICp0cmYpXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwMjcte1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTAzMS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTAzMjpcdHJldCA9IHRyZjc5NzBhX2NtZCh0cmYsIFRSRjc5NzBBX0NNRF9GSUZPX1JFU0VUKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTAzMy1cdGlmIChyZXQpXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEwMzQ6XHRcdHRyZjc5NzBhX3NlbmRfZXJyX3Vwc3RyZWFtKHRyZiwgcmV0KTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTAzNS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTAzNjpcdHJldCA9IHRyZjc5NzBhX2NtZCh0cmYsIFRSRjc5NzBBX0NNRF9FT0YpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDM3LVx0aWYgKHJldClcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTAzODpcdFx0dHJmNzk3MGFfc2VuZF9lcnJfdXBzdHJlYW0odHJmLCByZXQpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDM5LVxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTA0OC1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTA0OTpzdGF0aWMgdm9pZCB0cmY3OTcwYV90aW1lb3V0X3dvcmtfaGFuZGxlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwNTAte1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMDUxOlx0c3RydWN0IHRyZjc5NzBhICp0cmYgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IHRyZjc5NzBhLFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDUyLVx0XHRcdFx0XHQgICAgdGltZW91dF93b3JrLndvcmspO1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTA2MS1cdGVsc2UgaWYgKHRyZi1cdTAwM2VzdGF0ZSA9PSBUUkY3OTcwQV9TVF9XQUlUX0ZPUl9SWF9EQVRBX0NPTlQpXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEwNjI6XHRcdHRyZjc5NzBhX2RyYWluX2ZpZm8odHJmLCBUUkY3OTcwQV9JUlFfU1RBVFVTX1NSWCk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwNjMtXHRlbHNlIGlmICh0cmYtXHUwMDNlc3RhdGUgPT0gVFJGNzk3MEFfU1RfV0FJVF9UT19JU1NVRV9FT0YpXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEwNjQ6XHRcdHRyZjc5NzBhX2lzc3VlX2VvZih0cmYpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDY1LVx0ZWxzZVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMDY2Olx0XHR0cmY3OTcwYV9zZW5kX2Vycl91cHN0cmVhbSh0cmYsIC1FVElNRURPVVQpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDY3LVxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTA3MC1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTA3MTpzdGF0aWMgaW50IHRyZjc5NzBhX2luaXQoc3RydWN0IHRyZjc5NzBhICp0cmYpXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwNzIte1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTA3Ni1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTA3NzpcdHJldCA9IHRyZjc5NzBhX2NtZCh0cmYsIFRSRjc5NzBBX0NNRF9TT0ZUX0lOSVQpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDc4LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwODEtXHQvKiBTZXQgdGhlIGdhaW4gcmVkdWN0aW9uIGFmdGVyIHNvZnQgaW5pdCAqL1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMDgyOlx0cmV0ID0gdHJmNzk3MGFfdXBkYXRlX3J4X2dhaW5fcmVkdWN0aW9uKHRyZik7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwODMtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTA4NS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTA4NjpcdHJldCA9IHRyZjc5NzBhX2NtZCh0cmYsIFRSRjc5NzBBX0NNRF9JRExFKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTA4Ny1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDg5LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMDkwOlx0cmV0ID0gdHJmNzk3MGFfd3JpdGUodHJmLCBUUkY3OTcwQV9SRUdfSU9fQ1RSTCxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTA5MS1cdFx0XHQgICAgIHRyZi1cdTAwM2Vpb19jdHJsIHwgVFJGNzk3MEFfUkVHX0lPX0NUUkxfVlJTKDB4MSkpO1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTA5NC1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTA5NTpcdHJldCA9IHRyZjc5NzBhX3dyaXRlKHRyZiwgVFJGNzk3MEFfTkZDX1RBUkdFVF9MRVZFTCwgMCk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwOTYtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTEwMi1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTEwMzpcdHJldCA9IHRyZjc5NzBhX3dyaXRlKHRyZiwgVFJGNzk3MEFfTU9EVUxBVE9SX1NZU19DTEtfQ1RSTCxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTEwNC1cdFx0XHQgICAgIHRyZi1cdTAwM2Vtb2R1bGF0b3Jfc3lzX2Nsa19jdHJsKTtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExMDctXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjExMDg6XHRyZXQgPSB0cmY3OTcwYV93cml0ZSh0cmYsIFRSRjc5NzBBX0FESlVUQUJMRV9GSUZPX0lSUV9MRVZFTFMsXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExMDktXHRcdFx0ICAgICBUUkY3OTcwQV9BREpVVEFCTEVfRklGT19JUlFfTEVWRUxTX1dMSF85NiB8XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMTEzLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMTE0Olx0cmV0ID0gdHJmNzk3MGFfd3JpdGUodHJmLCBUUkY3OTcwQV9TUEVDSUFMX0ZDTl9SRUcxLCAwKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTExNS1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMTI3LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMTI4OnN0YXRpYyB2b2lkIHRyZjc5NzBhX3N3aXRjaF9yZl9vZmYoc3RydWN0IHRyZjc5NzBhICp0cmYpXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExMjkte1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTEzNy1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTEzODpcdHRyZjc5NzBhX3dyaXRlKHRyZiwgVFJGNzk3MEFfQ0hJUF9TVEFUVVNfQ1RSTCwgdHJmLVx1MDAzZWNoaXBfc3RhdHVzX2N0cmwpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMTM5LVxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTE0Ni1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTE0NzpzdGF0aWMgaW50IHRyZjc5NzBhX3N3aXRjaF9yZl9vbihzdHJ1Y3QgdHJmNzk3MGEgKnRyZilcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTE0OC17XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMTYwLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMTYxOlx0cmV0ID0gdHJmNzk3MGFfaW5pdCh0cmYpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMTYyLVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTE3MS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTE3MjpzdGF0aWMgaW50IHRyZjc5NzBhX3N3aXRjaF9yZihzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCBib29sIG9uKVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMTczLXtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTE3NDpcdHN0cnVjdCB0cmY3OTcwYSAqdHJmID0gbmZjX2RpZ2l0YWxfZ2V0X2RydmRhdGEoZGRldik7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExNzUtXHRpbnQgcmV0ID0gMDtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExODQtXHRcdGNhc2UgVFJGNzk3MEFfU1RfUkZfT0ZGOlxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMTg1Olx0XHRcdHJldCA9IHRyZjc5NzBhX3N3aXRjaF9yZl9vbih0cmYpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMTg2LVx0XHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTE5Mi1cdFx0XHRcdF9fZnVuY19fLCB0cmYtXHUwMDNlc3RhdGUsIG9uKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTE5MzpcdFx0XHR0cmY3OTcwYV9zd2l0Y2hfcmZfb2ZmKHRyZik7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExOTQtXHRcdFx0cmV0ID0gLUVJTlZBTDtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEyMDktXHRcdGNhc2UgVFJGNzk3MEFfU1RfV0FJVF9GT1JfUlhfREFUQV9DT05UOlxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMjEwOlx0XHRcdHRyZjc5NzBhX3N3aXRjaF9yZl9vZmYodHJmKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTIxMS1cdFx0fVxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTIxNy1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTIxODpzdGF0aWMgaW50IHRyZjc5NzBhX2luX2NvbmZpZ19yZl90ZWNoKHN0cnVjdCB0cmY3OTcwYSAqdHJmLCBpbnQgdGVjaClcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTIxOS17XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMjY4LVx0ICogUFNMIHNlcXVlbmNlIChpbmRpY2F0ZWQgYnkgJiMzOTt0cmYtXHUwMDNlaXNvX2N0cmwgPT0gMHhmZiYjMzk7IGZyb21cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTI2OTpcdCAqIHRyZjc5NzBhX2luaXQoKSksIGNsZWFyIHRoZSBORkMgVGFyZ2V0IERldGVjdGlvbiBMZXZlbCByZWdpc3RlclxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMjcwLVx0ICogZHVlIHRvIGVycmF0dW0uXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMjcyLVx0aWYgKHRyZi1cdTAwM2Vpc29fY3RybCA9PSAweGZmKVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMjczOlx0XHRyZXQgPSB0cmY3OTcwYV93cml0ZSh0cmYsIFRSRjc5NzBBX05GQ19UQVJHRVRfTEVWRUwsIDApO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMjc0LVxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTI3Ny1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTI3ODpzdGF0aWMgaW50IHRyZjc5NzBhX2lzX3JmX2ZpZWxkKHN0cnVjdCB0cmY3OTcwYSAqdHJmLCBib29sICppc19yZl9maWVsZClcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTI3OS17XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMjgyLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMjgzOlx0cmV0ID0gdHJmNzk3MGFfd3JpdGUodHJmLCBUUkY3OTcwQV9DSElQX1NUQVRVU19DVFJMLFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMjg0LVx0XHRcdCAgICAgdHJmLVx1MDAzZWNoaXBfc3RhdHVzX2N0cmwgfFxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTI4OC1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTI4OTpcdHJldCA9IHRyZjc5NzBhX2NtZCh0cmYsIFRSRjc5NzBBX0NNRF9URVNUX0VYVF9SRik7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEyOTAtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTI5NC1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTI5NTpcdHJldCA9IHRyZjc5NzBhX3JlYWQodHJmLCBUUkY3OTcwQV9SU1NJX09TQ19TVEFUVVMsIFx1MDAyNnJzc2kpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMjk2LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEyOTgtXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEyOTk6XHRyZXQgPSB0cmY3OTcwYV93cml0ZSh0cmYsIFRSRjc5NzBBX0NISVBfU1RBVFVTX0NUUkwsXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEzMDAtXHRcdFx0ICAgICB0cmYtXHUwMDNlY2hpcF9zdGF0dXNfY3RybCk7XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMzExLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMzEyOnN0YXRpYyBpbnQgdHJmNzk3MGFfaW5fY29uZmlnX2ZyYW1pbmcoc3RydWN0IHRyZjc5NzBhICp0cmYsIGludCBmcmFtaW5nKVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMzEzLXtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEzNTAtXHRpZiAoISh0cmYtXHUwMDNlY2hpcF9zdGF0dXNfY3RybCBcdTAwMjYgVFJGNzk3MEFfQ0hJUF9TVEFUVVNfUkZfT04pKSB7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEzNTE6XHRcdHJldCA9IHRyZjc5NzBhX2lzX3JmX2ZpZWxkKHRyZiwgXHUwMDI2aXNfcmZfZmllbGQpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMzUyLVx0XHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTM1OS1cdGlmIChpc29fY3RybCAhPSB0cmYtXHUwMDNlaXNvX2N0cmwpIHtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTM2MDpcdFx0cmV0ID0gdHJmNzk3MGFfdXBkYXRlX2lzb19jdHJsX3JlZ2lzdGVyKHRyZiwgaXNvX2N0cmwpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMzYxLVx0XHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTM2NS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTM2NjpcdFx0cmV0ID0gdHJmNzk3MGFfd3JpdGUodHJmLCBUUkY3OTcwQV9NT0RVTEFUT1JfU1lTX0NMS19DVFJMLFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMzY3LVx0XHRcdFx0ICAgICB0cmYtXHUwMDNlbW9kdWxhdG9yX3N5c19jbGtfY3RybCk7XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMzcyLVx0aWYgKCEodHJmLVx1MDAzZWNoaXBfc3RhdHVzX2N0cmwgXHUwMDI2IFRSRjc5NzBBX0NISVBfU1RBVFVTX1JGX09OKSkge1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMzczOlx0XHRyZXQgPSB0cmY3OTcwYV93cml0ZSh0cmYsIFRSRjc5NzBBX0NISVBfU1RBVFVTX0NUUkwsXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEzNzQtXHRcdFx0XHQgICAgIHRyZi1cdTAwM2VjaGlwX3N0YXR1c19jdHJsIHxcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEzODYtXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEzODc6c3RhdGljIGludCB0cmY3OTcwYV9pbl9jb25maWd1cmVfaHcoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgaW50IHR5cGUsXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEzODgtXHRcdFx0XHQgICAgaW50IHBhcmFtKVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMzg5LXtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTM5MDpcdHN0cnVjdCB0cmY3OTcwYSAqdHJmID0gbmZjX2RpZ2l0YWxfZ2V0X2RydmRhdGEoZGRldik7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEzOTEtXHRpbnQgcmV0O1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTQwMC1cdCAgICAodHJmLVx1MDAzZXN0YXRlID09IFRSRjc5NzBBX1NUX1JGX09GRikpIHtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTQwMTpcdFx0cmV0ID0gdHJmNzk3MGFfc3dpdGNoX3JmX29uKHRyZik7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE0MDItXHRcdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNDA3LVx0Y2FzZSBORkNfRElHSVRBTF9DT05GSUdfUkZfVEVDSDpcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTQwODpcdFx0cmV0ID0gdHJmNzk3MGFfaW5fY29uZmlnX3JmX3RlY2godHJmLCBwYXJhbSk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE0MDktXHRcdGJyZWFrO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNDEwLVx0Y2FzZSBORkNfRElHSVRBTF9DT05GSUdfRlJBTUlORzpcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTQxMTpcdFx0cmV0ID0gdHJmNzk3MGFfaW5fY29uZmlnX2ZyYW1pbmcodHJmLCBwYXJhbSk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE0MTItXHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTQyMi1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTQyMzpzdGF0aWMgaW50IHRyZjc5NzBhX2lzX2lzbzE1NjkzX3dyaXRlX29yX2xvY2sodTggY21kKVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNDI0LXtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE0MzgtXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE0Mzk6c3RhdGljIGludCB0cmY3OTcwYV9wZXJfY21kX2NvbmZpZyhzdHJ1Y3QgdHJmNzk3MGEgKnRyZixcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTQ0MC1cdFx0XHRcdCAgIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IpXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNDY0LVx0XHRpZiAoc3BlY2lhbF9mY25fcmVnMSAhPSB0cmYtXHUwMDNlc3BlY2lhbF9mY25fcmVnMSkge1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNDY1Olx0XHRcdHJldCA9IHRyZjc5NzBhX3dyaXRlKHRyZiwgVFJGNzk3MEFfU1BFQ0lBTF9GQ05fUkVHMSxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTQ2Ni1cdFx0XHRcdFx0ICAgICBzcGVjaWFsX2Zjbl9yZWcxKTtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE0OTEtXHRcdGlmIChpc29fY3RybCAhPSB0cmYtXHUwMDNlaXNvX2N0cmwpIHtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTQ5MjpcdFx0XHRyZXQgPSB0cmY3OTcwYV91cGRhdGVfaXNvX2N0cmxfcmVnaXN0ZXIodHJmLCBpc29fY3RybCk7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE0OTMtXHRcdFx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE0OTktXHRcdGlmICgodHJmLVx1MDAzZWZyYW1pbmcgPT0gTkZDX0RJR0lUQUxfRlJBTUlOR19JU08xNTY5M19UNVQpIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNTAwOlx0XHQgICAgdHJmNzk3MGFfaXNfaXNvMTU2OTNfd3JpdGVfb3JfbG9jayhyZXFbMV0pIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNTAxLVx0XHQgICAgKHJlcVswXSBcdTAwMjYgSVNPMTU2OTNfUkVRX0ZMQUdfT1BUSU9OKSlcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE1MDctXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE1MDg6c3RhdGljIGludCB0cmY3OTcwYV9zZW5kX2NtZChzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNTA5LVx0XHRcdCAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTE2IHRpbWVvdXQsXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNTExLXtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTUxMjpcdHN0cnVjdCB0cmY3OTcwYSAqdHJmID0gbmZjX2RpZ2l0YWxfZ2V0X2RydmRhdGEoZGRldik7XG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTMgMDU6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzc1OTYKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiA2NTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBSZWFjaGFiaWxpdHkgb2YgVFJGNzk3MEEgRHJpdmVyIGZvciBGdXp6aW5nKioKCk9rYXksIHNvIHRoZSBgdHJmNzk3MGFgIGRyaXZlciBpcyBsb2NhdGVkIGluIGBhcmNoL2FybS9ib290L2R0cy9ueHAvaW14L2lteDZkbC1wcnRydnQuZHRzYC4gSW1tZWRpYXRlbHksIEkgc2VlIHNvbWUga2V5IHJlcXVpcmVtZW50czogaXQgbmVlZHMgYW4gYHNwaS0mZ3Q7ZGV2Lm9mX25vZGVgIERldmljZSBUcmVlIGVudHJ5IChgbnBgKSBmb3IgcHJvcGVyIGluaXRpYWxpemF0aW9uLCBHUElPIHBpbnMgKHNwZWNpZmljYWxseSBgdGksZW5hYmxlYCksIGFuZCBhIHJlZ3VsYXRvciBgdmluYC4gSXQmIzM5O3MgYW4gU1BJIGRldmljZSwgc3BlY2lmaWNhbGx5IGZvciB0aGUgVGV4YXMgSW5zdHJ1bWVudHMgVFJGNzk3MGEgTkZDIHRyYW5zY2VpdmVyIGNoaXAuCgpOb3cgdGhlIGNyaXRpY2FsIHF1ZXN0aW9uOiBjYW4gdGhpcyBldmVyIGJlIHJlYWNoZWQgZm9yIGZ1enppbmcsIGdpdmVuIHRoZSB0YXJnZXQgZW52aXJvbm1lbnQgaXMgYW1kNjQsIHR5cGljYWxseSBpbiBRRU1VIG9yIEdDRT8gVGhlIGluc3RydWN0aW9ucyBlbXBoYXNpemUgcmVhY2hhYmlsaXR5LiBTZWN0aW9uIDEgYW5kIDIgbWFrZSB0aGlzIHZlcnkgY2xlYXI6IGFueSBmdXp6aW5nIGhhcyB0byBiZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIFVucmVhY2hhYmxlIGhhcmR3YXJlIG1lYW5zICpubyogZnV6emluZy4gSSBuZWVkIHRvIGJlIGFic29sdXRlbHkgc3VyZSB0aGlzIGlzIHJlYWNoYWJsZS4KClRoZSBkcml2ZXIgcmVxdWlyZXMgRGV2aWNlIFRyZWUgaW5mb3JtYXRpb24gYW5kIHNwZWNpZmljIGhhcmR3YXJlIGZlYXR1cmVzLCB3aGljaCBpcyBjb25jZXJuaW5nLiBUaGUgdGV4dCBsaXN0cyBzZXZlcmFsIGV4YW1wbGVzIG9mIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBjb2RlLCBpbmNsdWRpbmcgdmVuZG9yLXNwZWNpZmljIFBDSWUgZGV2aWNlcyBhbmQgZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyB0aGF0IGFyZSB0cmlnZ2VyZWQgYnkgaG90LXVucGx1ZyBvciBtYW51YWwgdW5iaW5kaW5nLiBUaGlzIGluc3RhbnRseSBtYWtlcyBtZSB0aGluayBvZiBTUEkgZGV2aWNlcyBhbmQgc3BlY2lmaWMgaGFyZHdhcmUgZGVwZW5kZW5jaWVzLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiBTUEkgaXMgZW11bGF0ZWQgaW4gYSB3YXkgdGhhdCB3b3VsZCBhbGxvdyB0aGUgZnV6emluZyB0byB3b3JrLCBvciBpZiBpdCBjb3VudHMgYXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLiBEb2VzIFFFTVUgb3Igc3l6a2FsbGVyIGhhdmUgKmFueSogd2F5IHRvIGluc3RhbnRpYXRlIGEgVFJGNzk3MEEgU1BJIGRldmljZT8KCk15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGNoZWNrIGlmIHN5emthbGxlciBldmVuIHN1cHBvcnRzIFNQSSBkZXZpY2VzLiBJdCBoYXMgcHNldWRvLXN5c2NhbGxzIGZvciB0aGluZ3MgbGlrZSBVU0IsIG5ldGxpbmssIGFuZCB2aG9zdCwgYnV0IGRvZXMgaXQgaGF2ZSBgc3l6X3NwaV8qYCBjYWxscz8gSWYgaXQgZG9lcywgdGhhdCYjMzk7cyBhIGdvb2Qgc2lnbi4gSG93ZXZlciwgSSBjYW4mIzM5O3QgaW1tZWRpYXRlbHkgdXNlIHN5ei1ncmVwcGVyIG9uIHN5emthbGxlciBkZXNjcmlwdGlvbnMsIEkmIzM5O2QgbmVlZCB0aGUgdG9vbHMgdG8gYmUgcHJlc2VudCBhbmQgYWNjZXNzaWJsZSwgc28gdGhlIG5leHQgYmVzdCBhcHByb2FjaCBpcyB0byBjaGVjayB0aGUga2VybmVsIGl0c2VsZiBhbmQgc3l6Ym90IGZvciBTUEkgc3VwcG9ydC4gSSYjMzk7bSBnb2luZyB0byBncmVwIHRoZSBgZHJpdmVycy9zcGlgIGRpcmVjdG9yeSBmb3IgdGVybXMgbGlrZSAmIzM0O21vY2smIzM0OyBvciBhICYjMzQ7dmlydHVhbCBidXMmIzM0Oy4gTWF5YmUgdGhlcmUmIzM5O3MgYSBtZWNoYW5pc20gaW4gcGxhY2UgdG8gZW11bGF0ZSBTUEkgZGV2aWNlcyBmb3IgdGVzdGluZz8gSWYgbm90LCB0aGlzIGxvb2tzIGxpa2UgYSBkZWFkIGVuZCBmb3IgZnV6emluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTMgMDU6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5jb2Rlc2VhcmNoLWRpci1pbmRleDwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RGlyJiMzNDs6ICYjMzQ7ZHJpdmVycy9zcGkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZXMmIzM0OzogWwogICAgJiMzNDthdG1lbC1xdWFkc3BpLmMmIzM0OywKICAgICYjMzQ7aW50ZXJuYWxzLmgmIzM0OywKICAgICYjMzQ7c3BpLWFpcm9oYS1zbmZpLmMmIzM0OywKICAgICYjMzQ7c3BpLWFsdGVyYS1jb3JlLmMmIzM0OywKICAgICYjMzQ7c3BpLWFsdGVyYS1kZmwuYyYjMzQ7LAogICAgJiMzNDtzcGktYWx0ZXJhLXBsYXRmb3JtLmMmIzM0OywKICAgICYjMzQ7c3BpLWFtZC1wY2kuYyYjMzQ7LAogICAgJiMzNDtzcGktYW1kLmMmIzM0OywKICAgICYjMzQ7c3BpLWFtZC5oJiMzNDssCiAgICAmIzM0O3NwaS1hbWxvZ2ljLXNwaWZjLWExLmMmIzM0OywKICAgICYjMzQ7c3BpLWFtbG9naWMtc3BpZmMtYTQuYyYjMzQ7LAogICAgJiMzNDtzcGktYW1sb2dpYy1zcGlzZy5jJiMzNDssCiAgICAmIzM0O3NwaS1hcHBsZS5jJiMzNDssCiAgICAmIzM0O3NwaS1hcjkzNHguYyYjMzQ7LAogICAgJiMzNDtzcGktYXJtYWRhLTM3MDAuYyYjMzQ7LAogICAgJiMzNDtzcGktYXNwZWVkLXNtYy5jJiMzNDssCiAgICAmIzM0O3NwaS1hdDkxLXVzYXJ0LmMmIzM0OywKICAgICYjMzQ7c3BpLWF0Y3NwaTIwMC5jJiMzNDssCiAgICAmIzM0O3NwaS1hdGg3OS5jJiMzNDssCiAgICAmIzM0O3NwaS1hdG1lbC5jJiMzNDssCiAgICAmIzM0O3NwaS1hdTE1NTAuYyYjMzQ7LAogICAgJiMzNDtzcGktYXhpLXNwaS1lbmdpbmUuYyYjMzQ7LAogICAgJiMzNDtzcGktYXhpYWRvLmMmIzM0OywKICAgICYjMzQ7c3BpLWF4aWFkby5oJiMzNDssCiAgICAmIzM0O3NwaS1iY20tcXNwaS5jJiMzNDssCiAgICAmIzM0O3NwaS1iY20tcXNwaS5oJiMzNDssCiAgICAmIzM0O3NwaS1iY20yODM1LmMmIzM0OywKICAgICYjMzQ7c3BpLWJjbTI4MzVhdXguYyYjMzQ7LAogICAgJiMzNDtzcGktYmNtNjN4eC1oc3NwaS5jJiMzNDssCiAgICAmIzM0O3NwaS1iY202M3h4LmMmIzM0OywKICAgICYjMzQ7c3BpLWJjbWJjYS1oc3NwaS5jJiMzNDssCiAgICAmIzM0O3NwaS1iaXRiYW5nLXR4cnguaCYjMzQ7LAogICAgJiMzNDtzcGktYml0YmFuZy5jJiMzNDssCiAgICAmIzM0O3NwaS1icmNtc3RiLXFzcGkuYyYjMzQ7LAogICAgJiMzNDtzcGktYnV0dGVyZmx5LmMmIzM0OywKICAgICYjMzQ7c3BpLWNhZGVuY2UtcXVhZHNwaS5jJiMzNDssCiAgICAmIzM0O3NwaS1jYWRlbmNlLXhzcGkuYyYjMzQ7LAogICAgJiMzNDtzcGktY2FkZW5jZS5jJiMzNDssCiAgICAmIzM0O3NwaS1jYXZpdW0tb2N0ZW9uLmMmIzM0OywKICAgICYjMzQ7c3BpLWNhdml1bS10aHVuZGVyeC5jJiMzNDssCiAgICAmIzM0O3NwaS1jYXZpdW0uYyYjMzQ7LAogICAgJiMzNDtzcGktY2F2aXVtLmgmIzM0OywKICAgICYjMzQ7c3BpLWNoMzQxLmMmIzM0OywKICAgICYjMzQ7c3BpLWNscHM3MTF4LmMmIzM0OywKICAgICYjMzQ7c3BpLWNvbGRmaXJlLXFzcGkuYyYjMzQ7LAogICAgJiMzNDtzcGktY3M0Mmw0My5jJiMzNDssCiAgICAmIzM0O3NwaS1kYXZpbmNpLmMmIzM0OywKICAgICYjMzQ7c3BpLWRsbjIuYyYjMzQ7LAogICAgJiMzNDtzcGktZHctY29yZS5jJiMzNDssCiAgICAmIzM0O3NwaS1kdy1kbWEuYyYjMzQ7LAogICAgJiMzNDtzcGktZHctbW1pby5jJiMzNDssCiAgICAmIzM0O3NwaS1kdy1wY2kuYyYjMzQ7LAogICAgJiMzNDtzcGktZHcuaCYjMzQ7LAogICAgJiMzNDtzcGktZXA5M3h4LmMmIzM0OywKICAgICYjMzQ7c3BpLWZhbGNvbi5jJiMzNDssCiAgICAmIzM0O3NwaS1mc2kuYyYjMzQ7LAogICAgJiMzNDtzcGktZnNsLWNwbS5jJiMzNDssCiAgICAmIzM0O3NwaS1mc2wtY3BtLmgmIzM0OywKICAgICYjMzQ7c3BpLWZzbC1kc3BpLmMmIzM0OywKICAgICYjMzQ7c3BpLWZzbC1lc3BpLmMmIzM0OywKICAgICYjMzQ7c3BpLWZzbC1saWIuYyYjMzQ7LAogICAgJiMzNDtzcGktZnNsLWxpYi5oJiMzNDssCiAgICAmIzM0O3NwaS1mc2wtbHBzcGkuYyYjMzQ7LAogICAgJiMzNDtzcGktZnNsLXFzcGkuYyYjMzQ7LAogICAgJiMzNDtzcGktZnNsLXNwaS5jJiMzNDssCiAgICAmIzM0O3NwaS1mc2wtc3BpLmgmIzM0OywKICAgICYjMzQ7c3BpLWdlbmktcWNvbS5jJiMzNDssCiAgICAmIzM0O3NwaS1ncGlvLmMmIzM0OywKICAgICYjMzQ7c3BpLWd4cC5jJiMzNDssCiAgICAmIzM0O3NwaS1oaXNpLWt1bnBlbmcuYyYjMzQ7LAogICAgJiMzNDtzcGktaGlzaS1zZmMtdjN4eC5jJiMzNDssCiAgICAmIzM0O3NwaS1pbWctc3BmaS5jJiMzNDssCiAgICAmIzM0O3NwaS1pbXguYyYjMzQ7LAogICAgJiMzNDtzcGktaW5nZW5pYy5jJiMzNDssCiAgICAmIzM0O3NwaS1pbnRlbC1wY2kuYyYjMzQ7LAogICAgJiMzNDtzcGktaW50ZWwtcGxhdGZvcm0uYyYjMzQ7LAogICAgJiMzNDtzcGktaW50ZWwuYyYjMzQ7LAogICAgJiMzNDtzcGktaW50ZWwuaCYjMzQ7LAogICAgJiMzNDtzcGktaXByb2MtcXNwaS5jJiMzNDssCiAgICAmIzM0O3NwaS1qY29yZS5jJiMzNDssCiAgICAmIzM0O3NwaS1rc3BpMi5jJiMzNDssCiAgICAmIzM0O3NwaS1sYW50aXEtc3NjLmMmIzM0OywKICAgICYjMzQ7c3BpLWxqY2EuYyYjMzQ7LAogICAgJiMzNDtzcGktbG03MGxscC5jJiMzNDssCiAgICAmIzM0O3NwaS1sb29uZ3Nvbi1jb3JlLmMmIzM0OywKICAgICYjMzQ7c3BpLWxvb25nc29uLXBjaS5jJiMzNDssCiAgICAmIzM0O3NwaS1sb29uZ3Nvbi1wbGF0LmMmIzM0OywKICAgICYjMzQ7c3BpLWxvb25nc29uLmgmIzM0OywKICAgICYjMzQ7c3BpLWxvb3BiYWNrLXRlc3QuYyYjMzQ7LAogICAgJiMzNDtzcGktbHA4ODQxLXJ0Yy5jJiMzNDssCiAgICAmIzM0O3NwaS1tYTM1ZDEtcXNwaS5jJiMzNDssCiAgICAmIzM0O3NwaS1tZW0uYyYjMzQ7LAogICAgJiMzNDtzcGktbWVzb24tc3BpY2MuYyYjMzQ7LAogICAgJiMzNDtzcGktbWVzb24tc3BpZmMuYyYjMzQ7LAogICAgJiMzNDtzcGktbWljcm9jaGlwLWNvcmUtcXNwaS5jJiMzNDssCiAgICAmIzM0O3NwaS1taWNyb2NoaXAtY29yZS1zcGkuYyYjMzQ7LAogICAgJiMzNDtzcGktbXBjNTEyeC1wc2MuYyYjMzQ7LAogICAgJiMzNDtzcGktbXBjNTJ4eC1wc2MuYyYjMzQ7LAogICAgJiMzNDtzcGktbXBjNTJ4eC5jJiMzNDssCiAgICAmIzM0O3NwaS1tcGZzLmMmIzM0OywKICAgICYjMzQ7c3BpLW10NjV4eC5jJiMzNDssCiAgICAmIzM0O3NwaS1tdDc2MjEuYyYjMzQ7LAogICAgJiMzNDtzcGktbXRrLW5vci5jJiMzNDssCiAgICAmIzM0O3NwaS1tdGstc25maS5jJiMzNDssCiAgICAmIzM0O3NwaS1tdXguYyYjMzQ7LAogICAgJiMzNDtzcGktbXhpYy5jJiMzNDssCiAgICAmIzM0O3NwaS1teHMuYyYjMzQ7LAogICAgJiMzNDtzcGktbnBjbS1maXUuYyYjMzQ7LAogICAgJiMzNDtzcGktbnBjbS1wc3BpLmMmIzM0OywKICAgICYjMzQ7c3BpLW54cC1mc3BpLmMmIzM0OywKICAgICYjMzQ7c3BpLW54cC14c3BpLmMmIzM0OywKICAgICYjMzQ7c3BpLW9jLXRpbnkuYyYjMzQ7LAogICAgJiMzNDtzcGktb2ZmbG9hZC10cmlnZ2VyLWFkaS11dGlsLXNpZ21hLWRlbHRhLmMmIzM0OywKICAgICYjMzQ7c3BpLW9mZmxvYWQtdHJpZ2dlci1wd20uYyYjMzQ7LAogICAgJiMzNDtzcGktb2ZmbG9hZC5jJiMzNDssCiAgICAmIzM0O3NwaS1vbWFwLXV3aXJlLmMmIzM0OywKICAgICYjMzQ7c3BpLW9tYXAyLW1jc3BpLmMmIzM0OywKICAgICYjMzQ7c3BpLW9yaW9uLmMmIzM0OywKICAgICYjMzQ7c3BpLXBjaTF4eHh4LmMmIzM0OywKICAgICYjMzQ7c3BpLXBpYzMyLXNxaS5jJiMzNDssCiAgICAmIzM0O3NwaS1waWMzMi5jJiMzNDssCiAgICAmIzM0O3NwaS1wbDAyMi5jJiMzNDssCiAgICAmIzM0O3NwaS1wcGM0eHguYyYjMzQ7LAogICAgJiMzNDtzcGktcHhhMnh4LWRtYS5jJiMzNDssCiAgICAmIzM0O3NwaS1weGEyeHgtcGNpLmMmIzM0OywKICAgICYjMzQ7c3BpLXB4YTJ4eC1wbGF0Zm9ybS5jJiMzNDssCiAgICAmIzM0O3NwaS1weGEyeHguYyYjMzQ7LAogICAgJiMzNDtzcGktcHhhMnh4LmgmIzM0OywKICAgICYjMzQ7c3BpLXFjb20tcXNwaS5jJiMzNDssCiAgICAmIzM0O3NwaS1xcGljLXNuYW5kLmMmIzM0OywKICAgICYjMzQ7c3BpLXF1cC5jJiMzNDssCiAgICAmIzM0O3NwaS1yYjR4eC5jJiMzNDssCiAgICAmIzM0O3NwaS1yZWFsdGVrLXJ0bC1zbmFuZC5jJiMzNDssCiAgICAmIzM0O3NwaS1yZWFsdGVrLXJ0bC5jJiMzNDssCiAgICAmIzM0O3NwaS1yb2NrY2hpcC1zZmMuYyYjMzQ7LAogICAgJiMzNDtzcGktcm9ja2NoaXAuYyYjMzQ7LAogICAgJiMzNDtzcGktcnBjLWlmLmMmIzM0OywKICAgICYjMzQ7c3BpLXJzcGkuYyYjMzQ7LAogICAgJiMzNDtzcGktcnp2MmgtcnNwaS5jJiMzNDssCiAgICAmIzM0O3NwaS1yenYybS1jc2kuYyYjMzQ7LAogICAgJiMzNDtzcGktczNjNjR4eC5jJiMzNDssCiAgICAmIzM0O3NwaS1zYzE4aXM2MDIuYyYjMzQ7LAogICAgJiMzNDtzcGktc2cyMDQ0LW5vci5jJiMzNDssCiAgICAmIzM0O3NwaS1zaC1oc3BpLmMmIzM0OywKICAgICYjMzQ7c3BpLXNoLW1zaW9mLmMmIzM0OywKICAgICYjMzQ7c3BpLXNoLXNjaS5jJiMzNDssCiAgICAmIzM0O3NwaS1zaC5jJiMzNDssCiAgICAmIzM0O3NwaS1zaWZpdmUuYyYjMzQ7LAogICAgJiMzNDtzcGktc2xhdmUtbXQyN3h4LmMmIzM0OywKICAgICYjMzQ7c3BpLXNsYXZlLXN5c3RlbS1jb250cm9sLmMmIzM0OywKICAgICYjMzQ7c3BpLXNsYXZlLXRpbWUuYyYjMzQ7LAogICAgJiMzNDtzcGktc24tZi1vc3BpLmMmIzM0OywKICAgICYjMzQ7c3BpLXNwYWNlbWl0LWsxLmMmIzM0OywKICAgICYjMzQ7c3BpLXNwcmQtYWRpLmMmIzM0OywKICAgICYjMzQ7c3BpLXNwcmQuYyYjMzQ7LAogICAgJiMzNDtzcGktc3Qtc3NjNC5jJiMzNDssCiAgICAmIzM0O3NwaS1zdG0zMi1vc3BpLmMmIzM0OywKICAgICYjMzQ7c3BpLXN0bTMyLXFzcGkuYyYjMzQ7LAogICAgJiMzNDtzcGktc3RtMzIuYyYjMzQ7LAogICAgJiMzNDtzcGktc3VuNGkuYyYjMzQ7LAogICAgJiMzNDtzcGktc3VuNmkuYyYjMzQ7LAogICAgJiMzNDtzcGktc3VucGx1cy1zcDcwMjEuYyYjMzQ7LAogICAgJiMzNDtzcGktc3lucXVhY2VyLmMmIzM0OywKICAgICYjMzQ7c3BpLXRlZ3JhMTE0LmMmIzM0OywKICAgICYjMzQ7c3BpLXRlZ3JhMjAtc2ZsYXNoLmMmIzM0OywKICAgICYjMzQ7c3BpLXRlZ3JhMjAtc2xpbmsuYyYjMzQ7LAogICAgJiMzNDtzcGktdGVncmEyMTAtcXVhZC5jJiMzNDssCiAgICAmIzM0O3NwaS10ZXN0LmgmIzM0OywKICAgICYjMzQ7c3BpLXRpLXFzcGkuYyYjMzQ7LAogICAgJiMzNDtzcGktdGxlNjJ4MC5jJiMzNDssCiAgICAmIzM0O3NwaS10b3BjbGlmZi1wY2guYyYjMzQ7LAogICAgJiMzNDtzcGktdW5pcGhpZXIuYyYjMzQ7LAogICAgJiMzNDtzcGktdmlydGlvLmMmIzM0OywKICAgICYjMzQ7c3BpLXdwY20tZml1LmMmIzM0OywKICAgICYjMzQ7c3BpLXhjb21tLmMmIzM0OywKICAgICYjMzQ7c3BpLXhpbGlueC5jJiMzNDssCiAgICAmIzM0O3NwaS14bHAuYyYjMzQ7LAogICAgJiMzNDtzcGkteHRlbnNhLXh0ZnBnYS5jJiMzNDssCiAgICAmIzM0O3NwaS16eW5xLXFzcGkuYyYjMzQ7LAogICAgJiMzNDtzcGktenlucW1wLWdxc3BpLmMmIzM0OywKICAgICYjMzQ7c3BpLmMmIzM0OywKICAgICYjMzQ7c3BpZGV2LmMmIzM0OwogIF0sCiAgJiMzNDtTdWJkaXJzJiMzNDs6IFsKICAgICYjMzQ7dGVzdHMmIzM0OwogIF0KfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMyAwNToxNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MDg0NAoJCQkJCQkJb3V0cHV0OiAxNTYKCQkJCQkJCXRob3VnaHRzOiAxMzMxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5c2lzIG9mIFRSRjc5NzBBIERyaXZlciBSZWFjaGFiaWxpdHkgZm9yIEZ1enppbmcqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gV2UmIzM5O3JlIGxvb2tpbmcgYXQgdGhlIGB0cmY3OTcwYWAgZHJpdmVyLCBzcGVjaWZpY2FsbHkgdGhlIGB0cmY3OTcwYV9wcm9iZWAgZnVuY3Rpb24uIFRoZSBjb2RlIGltbWVkaWF0ZWx5IGZsYWdzIGEgRGV2aWNlIFRyZWUgZGVwZW5kZW5jeSAoYHNwaS0mZ3Q7ZGV2Lm9mX25vZGVgIG11c3QgYmUgbm9uLU5VTEwpLiAgVGhpcyBpcyB0aGUgZmlyc3QgcmVkIGZsYWcsIGFzIHRoaXMgaW1wbGllcyBhIHNwZWNpZmljIGhhcmR3YXJlIGNvbmZpZ3VyYXRpb24gZGVmaW5lZCBpbiB0aGUgRGV2aWNlIFRyZWUuICBGdXJ0aGVyIGRvd24sIGl0IGNhbGxzIGZvciBhIEdQSU8gZW5hYmxlIGxpbmUgKGB0aSxlbmFibGVgKSBhbmQgYSB2b2x0YWdlIHJlZ3VsYXRvciAoJiMzNDt2aW4mIzM0OykuIFRoaXMgaW1wbGllcyBwaHlzaWNhbCBoYXJkd2FyZSBpbnRlcmFjdGlvbiwgYW5kIHRoZSByZWxpYW5jZSBvbiBEZXZpY2UgVHJlZSBjb25maWd1cmF0aW9uIHRlbGxzIHVzIHRoaXMgaXNuJiMzOTt0IGEgdmlydHVhbCBkZXZpY2UuCgpUaGUgdGFyZ2V0IGlzIEFNRDY0LCB3aGljaCBpcyBpbXBvcnRhbnQuIEFNRDY0IHR5cGljYWxseSB1c2VzIEFDUEksIG5vdCBEZXZpY2UgVHJlZSwgc28gaW1tZWRpYXRlbHkgdGhpcyBpcyBhIHByb2JsZW0uICBXZSYjMzk7cmUgdGFsa2luZyBhYm91dCBhICpwaHlzaWNhbCogTkZDIHRyYW5zY2VpdmVyIEFTSUMg4oCTIHRoZSBUUkY3OTcwQSDigJMgY29ubmVjdGVkIHZpYSBhbiBTUEkgYnVzLiAgVGhlc2UgY2hpcHMgYXJlIGNvbW1vbmx5IGZvdW5kIGluIGVtYmVkZGVkIHN5c3RlbXMsIHdoaWNoIHRlbmQgdG8gYmUgQVJNLWJhc2VkLCBzdWNoIGFzIHRoZSBpLk1YNiBhcyBzaG93biBpbiBzb21lIGtlcm5lbCBEVFMgZmlsZXMuIFRoZSBpbXBsaWNhdGlvbiBpcyB0aGF0IHdlIHJlcXVpcmUgYSBwaHlzaWNhbCBjaGlwIG9uIGFuIFNQSSBidXMgYW5kIGEgbWF0Y2hpbmcgRGV2aWNlIFRyZWUgY29uZmlndXJhdGlvbiwgdGhhdCBpcyBhIHBoeXNpY2FsIHRhcmdldC4KClFFTVUsIEdDRSwgYW5kIG90aGVyIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAqZG8gbm90KiBlbXVsYXRlIHRoaXMgY2hpcC4gVGhleSBhbHNvIGRvbiYjMzk7dCB0eXBpY2FsbHkgaGF2ZSBkZXZpY2UgdHJlZSBub2RlcyBmb3IgVFJGNzk3MEEuIEV2ZW4gaWYgd2UgKmNvdWxkKiBjcmVhdGUgYW4gU1BJIGRldmljZSwgdGhlIGRyaXZlciYjMzk7cyBwcm9iZSBmdW5jdGlvbiBpdHNlbGYgcmV0dXJucyBhbiBlcnJvciBpZiBgbnBgIGlzIE5VTEwuIFRoZSBkcml2ZXIgaXNuJiMzOTt0IGp1c3QgZGlmZmljdWx0IHRvIHJlYWNoOyBpdCYjMzk7cyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuIFRoZSBndWlkZSBjbGVhcmx5IHNheXMgdGhhdCB1bnJlYWNoYWJsZSBjb2RlIHNob3VsZCBub3QgYmUgZnV6emVkLgoKTG9va2luZyBmdXJ0aGVyLCBgdHJmNzk3MGFfc3RhcnR1cGAgaXMgb25seSBldmVyIGNhbGxlZCBmcm9tIGB0cmY3OTcwYV9wcm9iZWAgKGR1cmluZyBpbml0aWFsIHNldHVwKSBhbmQgYHRyZjc5NzBhX3Jlc3VtZWAuIFNpbmNlIGB0cmY3OTcwYV9wcm9iZWAgcmVxdWlyZXMgdGhlIGRldmljZSB0cmVlLCB0aGUgZHJpdmVyJiMzOTtzIHByb2JlIGlzIG9ubHkgcmVhY2hhYmxlIHZpYSBEVCBjb25maWd1cmF0aW9uIHRoYXQgaXMgbmV2ZXIgcHJlc2VudCBvbiBzdGFuZGFyZCBhbWQ2NCBzeXN0ZW1zIGVtdWxhdGVkIGluIFFFTVUgb3IgR0NFLgoKVGh1cywgYmFzZWQgb24gdGhlIHJlYWNoYWJpbGl0eSBndWlkZWxpbmVzLCB0aGUgY2FsbCB0byBgdHJmNzk3MGFfc3RhcnR1cGAgYW5kIHRoZSBjb2RlIGluIGBkcml2ZXJzL25mYy90cmY3OTcwYS5jYCBhcmUgY29tcGxldGVseSB1bnJlYWNoYWJsZSBpbiBhIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnQgb24gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuICBUaGVyZWZvcmUsIGBXb3J0aEZ1enppbmdgIGlzIHVuZXF1aXZvY2FsbHkgYGZhbHNlYC4gVGhlIHJlYXNvbmluZyBpcyB0aGF0IHRoZSBkcml2ZXIgaXMgZGVzaWduZWQgZm9yIGEgc3BlY2lmaWMgcGllY2Ugb2YgcGh5c2ljYWwgaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgb3Igc2ltdWxhdGVkLCBhbmQgdGhlIGJ1cyBhbmQgY29uZmlndXJhdGlvbiBvZiB0aGUgZGV2aWNlIGlzIGluY29tcGF0aWJsZSB3aXRoIHRoZSB0YXJnZXQgcGxhdGZvcm0uIFRoZXJlIGFyZSBubyByZWxldmFudCBmb2N1cyBzeW1ib2xzIG9yIGVuYWJsZSBjb25maWd1cmF0aW9ucyBuZWVkZWQuIFRpbWUgdG8gc2V0IHRoZSByZXN1bHRzIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMyAwNToxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGVycm9yIGhhbmRsaW5nIGluIHRyZjc5NzBhX3N0YXJ0dXAoKSB3aXRoaW4gZHJpdmVycy9uZmMvdHJmNzk3MGEuYy4gVGhlIHRyZjc5NzBhIGRyaXZlciBpcyBhIGRlZGljYXRlZCBTUEkgZHJpdmVyIGZvciBUZXhhcyBJbnN0cnVtZW50cyBUUkY3OTcwQSBORkMgdHJhbnNjZWl2ZXIgY2hpcHMsIHJlbHlpbmcgc3RyaWN0bHkgb24gRGV2aWNlIFRyZWUgYmluZGluZ3MgKGZhaWxpbmcgcHJvYmUgaWYgc3BpLVx1MDAzZWRldi5vZl9ub2RlIGlzIGFic2VudCkgYWxvbmcgd2l0aCBkZWRpY2F0ZWQgR1BJT3MgYW5kIHJlZ3VsYXRvcnMuIFRoaXMgcGh5c2ljYWwgQVNJQyBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS9HQ0UgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIG9uIGFtZDY0LCByZW5kZXJpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBzeXprYWxsZXIgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGVycm9yIGhhbmRsaW5nIGluIHRyZjc5NzBhX3N0YXJ0dXAoKSB3aXRoaW4gZHJpdmVycy9uZmMvdHJmNzk3MGEuYy4gVGhlIHRyZjc5NzBhIGRyaXZlciBpcyBhIGRlZGljYXRlZCBTUEkgZHJpdmVyIGZvciBUZXhhcyBJbnN0cnVtZW50cyBUUkY3OTcwQSBORkMgdHJhbnNjZWl2ZXIgY2hpcHMsIHJlbHlpbmcgc3RyaWN0bHkgb24gRGV2aWNlIFRyZWUgYmluZGluZ3MgKGZhaWxpbmcgcHJvYmUgaWYgc3BpLVx1MDAzZWRldi5vZl9ub2RlIGlzIGFic2VudCkgYWxvbmcgd2l0aCBkZWRpY2F0ZWQgR1BJT3MgYW5kIHJlZ3VsYXRvcnMuIFRoaXMgcGh5c2ljYWwgQVNJQyBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS9HQ0UgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIG9uIGFtZDY0LCByZW5kZXJpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBzeXprYWxsZXIgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEzIDA1OjE3PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOS0xM1QwNToxNjo1My44MjI0MTA1NVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQyOTI2MjUwMjI2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgZXJyb3IgaGFuZGxpbmcgaW4gdHJmNzk3MGFfc3RhcnR1cCgpIHdpdGhpbiBkcml2ZXJzL25mYy90cmY3OTcwYS5jLiBUaGUgdHJmNzk3MGEgZHJpdmVyIGlzIGEgZGVkaWNhdGVkIFNQSSBkcml2ZXIgZm9yIFRleGFzIEluc3RydW1lbnRzIFRSRjc5NzBBIE5GQyB0cmFuc2NlaXZlciBjaGlwcywgcmVseWluZyBzdHJpY3RseSBvbiBEZXZpY2UgVHJlZSBiaW5kaW5ncyAoZmFpbGluZyBwcm9iZSBpZiBzcGktXFx1MDAzZWRldi5vZl9ub2RlIGlzIGFic2VudCkgYWxvbmcgd2l0aCBkZWRpY2F0ZWQgR1BJT3MgYW5kIHJlZ3VsYXRvcnMuIFRoaXMgcGh5c2ljYWwgQVNJQyBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS9HQ0UgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIG9uIGFtZDY0LCByZW5kZXJpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBzeXprYWxsZXIgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEzVDA1OjE2OjUzLjgyMjQxNTI3WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDUxOTEyNzg2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYWFhNGQ1YWFmY2Y3ZjNhMDE2OTM3ZDI4Njg2OGY3OWQ2OGJiZTMyNFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU3VuIFNlcCAxMyAwNToxNjo1MiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25mYy90cmY3OTcwYS5jIGIvZHJpdmVycy9uZmMvdHJmNzk3MGEuY1xcbmluZGV4IDYwODgzMDAxZmE1ZDkuLmRkZmM1OGMyOTk2NDkgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZmMvdHJmNzk3MGEuY1xcbisrKyBiL2RyaXZlcnMvbmZjL3RyZjc5NzBhLmNcXG5AQCAtMTk5Nyw4ICsxOTk3LDEwIEBAIHN0YXRpYyBpbnQgdHJmNzk3MGFfc3RhcnR1cChzdHJ1Y3QgdHJmNzk3MGEgKnRyZilcXG4gXFx0XFx0cmV0dXJuIHJldDtcXG4gXFxuIFxcdHJldCA9IHRyZjc5NzBhX3VwZGF0ZV9yeF9nYWluX3JlZHVjdGlvbih0cmYpO1xcbi1cXHRpZiAocmV0KVxcbitcXHRpZiAocmV0KSB7XFxuK1xcdFxcdHRyZjc5NzBhX3Bvd2VyX2Rvd24odHJmKTtcXG4gXFx0XFx0cmV0dXJuIHJldDtcXG4rXFx0fVxcbiBcXG4gXFx0cG1fcnVudGltZV9zZXRfYWN0aXZlKHRyZi1cXHUwMDNlZGV2KTtcXG4gXFx0cG1fcnVudGltZV9lbmFibGUodHJmLVxcdTAwM2VkZXYpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xM1QwNToxNjo1NS4yNzUxMzQ4MzZaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjQxNDczNTEyMzAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBlcnJvciBoYW5kbGluZyBpbiB0cmY3OTcwYV9zdGFydHVwKCkgd2l0aGluIGRyaXZlcnMvbmZjL3RyZjc5NzBhLmMuIFRoZSB0cmY3OTcwYSBkcml2ZXIgaXMgYSBkZWRpY2F0ZWQgU1BJIGRyaXZlciBmb3IgVGV4YXMgSW5zdHJ1bWVudHMgVFJGNzk3MEEgTkZDIHRyYW5zY2VpdmVyIGNoaXBzLCByZWx5aW5nIHN0cmljdGx5IG9uIERldmljZSBUcmVlIGJpbmRpbmdzIChmYWlsaW5nIHByb2JlIGlmIHNwaS1cXHUwMDNlZGV2Lm9mX25vZGUgaXMgYWJzZW50KSBhbG9uZyB3aXRoIGRlZGljYXRlZCBHUElPcyBhbmQgcmVndWxhdG9ycy4gVGhpcyBwaHlzaWNhbCBBU0lDIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL0dDRSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgb24gYW1kNjQsIHJlbmRlcmluZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIHN5emthbGxlciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzc1xudG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5UaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLFxuYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy5cblxuLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURTpcbiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZFxuICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLlxuICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsXG4gIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy5cblxuLSBETyBOT1QgQkxJTkRMWSBUUlVTVCBcIk5PIEZVTkNUSU9OQUwgQ0hBTkdFXCIgKE5GQ0kpIE9SIFwiUkVGQUNUT1JJTkdcIiBDTEFJTVM6XG4gIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgXCJjbGVhbnVwc1wiLCBcInJlZmFjdG9yaW5nc1wiLCBvciBzdGF0ZVxuICBcIk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkXCIuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLlxuICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnRcbiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuXG4gIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuXG5cbi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6XG4gIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKixcbiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuXG4gIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXJcbiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOlxuXG4tIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6XG4gICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLlxuICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKVxuICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cbiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50c1xuICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuXG4gICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLlxuLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6XG4gICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczpcbiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmdcbiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy5cbiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4zLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzpcbi0gQ29yZSBTdWJzeXN0ZW1zOlxuICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSxcbiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuXG4tIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczpcbiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuXG4tIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczpcbiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuXG4tIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6XG4gICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6XG5cbi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOlxuICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1c1xuICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdFxuICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS5cbiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzIFwiZm9jdXNlZFwiLFxuICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuXG5cbi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOlxuICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHNcbiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuXG5cbi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOlxuICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrXG4gIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLlxuICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXJcbiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlnc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6XG4tIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4tIENoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuXG4tIFN0cmlwIGFueSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBhYWE0ZDVhYWZjZjdmM2EwMTY5MzdkMjg2ODY4Zjc5ZDY4YmJlMzI0XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBTZXAgMTMgMDU6MTY6NTIgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25mYy90cmY3OTcwYS5jIGIvZHJpdmVycy9uZmMvdHJmNzk3MGEuY1xuaW5kZXggNjA4ODMwMDFmYTVkOS4uZGRmYzU4YzI5OTY0OSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmZjL3RyZjc5NzBhLmNcbisrKyBiL2RyaXZlcnMvbmZjL3RyZjc5NzBhLmNcbkBAIC0xOTk3LDggKzE5OTcsMTAgQEAgc3RhdGljIGludCB0cmY3OTcwYV9zdGFydHVwKHN0cnVjdCB0cmY3OTcwYSAqdHJmKVxuIFx0XHRyZXR1cm4gcmV0O1xuIFxuIFx0cmV0ID0gdHJmNzk3MGFfdXBkYXRlX3J4X2dhaW5fcmVkdWN0aW9uKHRyZik7XG4tXHRpZiAocmV0KVxuK1x0aWYgKHJldCkge1xuK1x0XHR0cmY3OTcwYV9wb3dlcl9kb3duKHRyZik7XG4gXHRcdHJldHVybiByZXQ7XG4rXHR9XG4gXG4gXHRwbV9ydW50aW1lX3NldF9hY3RpdmUodHJmLVx1MDAzZWRldik7XG4gXHRwbV9ydW50aW1lX2VuYWJsZSh0cmYtXHUwMDNlZGV2KTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEzVDA1OjE2OjU1LjI3NTEzNjA1NloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjQyMTQ3NTA2MDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgVFJGNzk3MEEgRHJpdmVyIFBhdGNoKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2guIFRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlIGlzIGFtZDY0LCB3aGljaCBpcyBnb29kIHRvIGtub3csIGJ1dCBkb2Vzbid0IHJlYWxseSBhZmZlY3QgdGhlIGNvZGUgY2hhbmdlIGl0c2VsZi4gSXQncyBhIGRpZmYgb24gYGRyaXZlcnMvbmZjL3RyZjc5NzBhLmNgLiBUaGUgY2hhbmdlIGlzIHN0cmFpZ2h0Zm9yd2FyZCwgYW5kIHRoZSBsaW5lIG51bWJlcnMgYXJlIHByZXR0eSBjbG9zZSwgc28gaXQncyBhIHNtYWxsLCB0YXJnZXRlZCB1cGRhdGUuXG5cblRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgbG9va3MgbGlrZSBhIHN1YnRsZSBidWcgZml4IG9yIGVuaGFuY2VtZW50IHRvIGVycm9yIGhhbmRsaW5nIHdpdGhpbiB0aGUgYHRyZjc5NzBhX3N0YXJ0dXBgIGZ1bmN0aW9uLiBTcGVjaWZpY2FsbHksIGl0IHNlZW1zIGxpa2UgdGhlIGB0cmY3OTcwYV91cGRhdGVfcnhfZ2Fpbl9yZWR1Y3Rpb25gIGZ1bmN0aW9uJ3MgcmV0dXJuIGNvZGUgd2Fzbid0IGJlaW5nIGZ1bGx5IGhhbmRsZWQuIE5vdywgaWYgYHRyZjc5NzBhX3VwZGF0ZV9yeF9nYWluX3JlZHVjdGlvbmAgcmV0dXJucyBhbiBlcnJvciAoYHJldGAgaXMgbm9uLXplcm8pLCB0aGUgcGF0Y2ggZW5zdXJlcyB0aGF0IHRoZSBgdHJmNzk3MGFfcG93ZXJfZG93bmAgZnVuY3Rpb24gaXMgY2FsbGVkICpiZWZvcmUqIHJldHVybmluZyBmcm9tIHRoZSBgdHJmNzk3MGFfc3RhcnR1cGAgZnVuY3Rpb24uIFRoaXMgaXMgYSBjcnVjaWFsIHNhZmV0eSBtZWFzdXJlOyBpdCdzIHRoZSByaWdodCB3YXkgdG8gZW5zdXJlIGNsZWFuIHNodXRkb3duIHdoZW4gYW4gZXJyb3Igb2NjdXJzLCBwcmV2ZW50aW5nIHBvdGVudGlhbCBpc3N1ZXMgd2l0aCB0aGUgaGFyZHdhcmUgc3RhdGUgb3IgcmVzb3VyY2UgbGVha3MuIFdpdGhvdXQgaXQsIHRoZSBkZXZpY2UgbWlnaHQgc3RheSBpbiBhbiB1bmRlZmluZWQgc3RhdGUsIHNvIHRoaXMgaXMgYSBncmVhdCBjYXRjaC5cblxuTm93LCBiZWZvcmUgSSBnaXZlIHRoaXMgcGF0Y2ggYSB0aHVtYnMtdXAsIEknbSBnb2luZyB0byBxdWlja2x5IGNoZWNrIGEgZmV3IHRoaW5ncy4gSSdsbCB1c2UgYGdyZXBgIChvciBwb3NzaWJseSBsb29rIGF0IHRoZSBmaWxlJ3Mgc3Vycm91bmRpbmcgY29kZSkgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dC4gSSB3YW50IHRvIHNlZSBob3cgYHRyZjc5NzBhLmNgIGlzIGNvbmZpZ3VyZWQgKEtjb25maWcpLCBhbnkgb3RoZXIgZnVuY3Rpb25zIGNhbGxpbmcgaXQsIGFuZCBhbHNvIHRoZSB1bmRlcmx5aW5nIGJ1cyB0eXBlIChTUEksIEkyQywgZXRjLikgdGhhdCB0aGUgZHJpdmVyIGludGVyYWN0cyB3aXRoLiBJIHdhbnQgdG8gbWFrZSBzdXJlIHRoZSBjaGFuZ2UgaXMgY29uc2lzdGVudCB3aXRoIHRoZSBvdmVyYWxsIGRyaXZlciBiZWhhdmlvciBhbmQgZG9lc24ndCBpbnRyb2R1Y2UgYW55IHJlZ3Jlc3Npb25zIG9yIHNpZGUgZWZmZWN0cy4gVGhpcyBzdGVwIHdpbGwgbGV0IG1lIHZlcmlmeSB0aGF0IHRoaXMgcG93ZXItZG93biBpcyBhbHNvIGFwcHJvcHJpYXRlIGZvciB0aGUgdW5kZXJseWluZyBidXMuIEdvb2QgaHlnaWVuZSBkZW1hbmRzIHRoaXMgc29ydCBvZiBiYXNpYyBkdWUgZGlsaWdlbmNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTEzLCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzE3LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTNUMDU6MTY6NTkuNDg5ODk2MDA1WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5NzczMzExLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInRyZjc5NzBhXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmZjXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNzg1IGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL25mYy9LY29uZmlnPTk9Y29uZmlnIE5GQ19UUkY3OTcwQVxcbi0tXFxuZHJpdmVycy9uZmMvS2NvbmZpZy0xOC1cXHQgIHNheSBNICB0byBjb21waWxlIGl0IGFzIGEgbW9kdWxlLiBUaGUgbW9kdWxlIHdpbGwgYmUgY2FsbGVkXFxuZHJpdmVycy9uZmMvS2NvbmZpZzoxOTpcXHQgIHRyZjc5NzBhLmtvLlxcbmRyaXZlcnMvbmZjL0tjb25maWctMjAtXFxuLS1cXG5kcml2ZXJzL25mYy9NYWtlZmlsZT0xMz1vYmotJChDT05GSUdfTkZDX01SVkwpXFx0XFx0Kz0gbmZjbXJ2bC9cXG5kcml2ZXJzL25mYy9NYWtlZmlsZToxNDpvYmotJChDT05GSUdfTkZDX1RSRjc5NzBBKVxcdCs9IHRyZjc5NzBhLm9cXG5kcml2ZXJzL25mYy9NYWtlZmlsZS0xNS1vYmotJChDT05GSUdfTkZDX1NUMjFORkNBKSAgXFx0Kz0gc3QyMW5mY2EvXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTI3LVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6Mjg6LyogVGhlcmUgYXJlIDMgd2F5cyB0aGUgaG9zdCBjYW4gY29tbXVuaWNhdGUgd2l0aCB0aGUgdHJmNzk3MGE6XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0yOS0gKiBwYXJhbGxlbCBtb2RlLCBTUEkgd2l0aCBTbGF2ZSBTZWxlY3QgKFNTKSBtb2RlLCBhbmQgU1BJIHdpdGhvdXRcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMzEtICpcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjMyOiAqIFRoZSB0cmY3OTcwYSBpcyB2ZXJ5IHRpbWluZyBzZW5zaXRpdmUgYW5kIHRoZSBWSU4sIEVOMiwgYW5kIEVOXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0zMy0gKiBwaW5zIG11c3QgYXNzZXJ0ZWQgaW4gdGhhdCBvcmRlciBhbmQgd2l0aCBzcGVjaWZpYyBkZWxheXMgaW4gYmV0d2Vlbi5cXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMzUtICogY29uZmlybWVkIHRvIHdvcmsgd2l0aCB0aGlzIGRyaXZlci4gIFRoZXJlIGlzIGEgYnVnIHdpdGggdGhlIGN1cnJlbnRcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjM2OiAqIHZlcnNpb24gb2YgdGhlIHRyZjc5NzBhIHRoYXQgcmVxdWlyZXMgdGhhdCBFTjIgcmVtYWluIGxvdyBubyBtYXR0ZXJcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTM3LSAqIHdoYXQuICBJZiBpdCBnb2VzIGhpZ2gsIGl0IHdpbGwgZ2VuZXJhdGUgYW4gUkYgZmllbGQgZXZlbiB3aGVuIGluXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTM5LSAqIHdoZW4gRU4yIGlzIGxlZnQgbG93LiAgVGhlICdlbjItcmYtcXVpcmsnIGRldmljZSB0cmVlIHByb3BlcnR5XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo0MDogKiBpbmRpY2F0ZXMgdGhhdCB0cmY3OTcwYSBjdXJyZW50bHkgYmVpbmcgdXNlZCBoYXMgdGhlIGVycmF0dW0gYW5kXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy00MS0gKiB0aGF0IEVOMiBtdXN0IGJlIGtlcHQgbG93Llxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy00NC0gKiBUaW1lb3V0cyBhcmUgcmVxdWlyZWQgc28gdGhpbmdzIGRvbid0IGhhbmcgd2hlbiB0aGVyZSBpcyBubyByZXNwb25zZVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NDU6ICogZnJvbSB0aGUgdHJmNzk3MGEgKG9yIHRhZykuICBVc2luZyB0aGlzIG1lY2hhbmlzbSBjcmVhdGVzIGEgcmFjZSB3aXRoXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy00Ni0gKiBpbnRlcnJ1cHRzLCBob3dldmVyLiAgVGhhdCBpcywgYW4gaW50ZXJydXB0IGFuZCBhIHRpbWVvdXQgY291bGQgb2NjdXJcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNjAtICogdGhlIGVudGlyZSBhbnRpY29sbGlzaW9uIHByb2NlZHVyZSBhZ2FpbiBidXQgdGhlIGRpZ2l0YWwgbGF5ZXIgZG9lc24ndFxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NjE6ICogc3VwcG9ydCB0aGF0LiAgU28sIGlmIGFuIGFib3J0IGlzIHJlY2VpdmVkIGJlZm9yZSB0cmY3OTcwYV9zZW5kX2NtZCgpXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02Mi0gKiBoYXMgc2VudCB0aGUgY29tbWFuZCB0byB0aGUgdGFnLCBpdCBzaW1wbHkgcmV0dXJucyAtRUNBTkNFTEVELiAgSWYgdGhlXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTk2LSAqIHdoZW4gdGhlIGZyYW1pbmcgaXMgJ05GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDQV9UMlQnLiAgVGhpcyBpcyBkb25lIGJ5XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo5NzogKiB0aGUgdHJmNzk3MGFfcGVyX2NtZF9jb25maWcoKSByb3V0aW5lLlxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTgtICpcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTQ0LS8qIFF1aXJrcyAqL1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTQ1Oi8qIEVycmF0dW06IFdoZW4gcmVhZGluZyBJUlEgU3RhdHVzIHJlZ2lzdGVyIG9uIHRyZjc5NzBhLCB3ZSBtdXN0IGlzc3VlIGFcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE0Ni0gKiByZWFkIGNvbnRpbnVvdXMgY29tbWFuZCBmb3IgSVJRIFN0YXR1cyBhbmQgQ29sbGlzaW9uIFBvc2l0aW9uIHJlZ2lzdGVycy5cXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNDE1LVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NDE2OmVudW0gdHJmNzk3MGFfc3RhdGUge1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNDE3LVxcdFRSRjc5NzBBX1NUX1BXUl9PRkYsXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTQyOS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjQzMDpzdHJ1Y3QgdHJmNzk3MGEge1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NDMxOlxcdGVudW0gdHJmNzk3MGFfc3RhdGVcXHRcXHRzdGF0ZTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTQzMi1cXHRzdHJ1Y3QgZGV2aWNlXFx0XFx0XFx0KmRldjtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNDY1LVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NDY2OnN0YXRpYyBpbnQgdHJmNzk3MGFfY21kKHN0cnVjdCB0cmY3OTcwYSAqdHJmLCB1OCBvcGNvZGUpXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy00Njcte1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy00NzktXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo0ODA6c3RhdGljIGludCB0cmY3OTcwYV9yZWFkKHN0cnVjdCB0cmY3OTcwYSAqdHJmLCB1OCByZWcsIHU4ICp2YWwpXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy00ODEte1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy00OTQtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo0OTU6c3RhdGljIGludCB0cmY3OTcwYV9yZWFkX2NvbnQoc3RydWN0IHRyZjc5NzBhICp0cmYsIHU4IHJlZywgdTggKmJ1ZixcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTQ5Ni1cXHRcXHRcXHQgICAgICBzaXplX3QgbGVuKVxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy01MjMtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo1MjQ6c3RhdGljIGludCB0cmY3OTcwYV93cml0ZShzdHJ1Y3QgdHJmNzk3MGEgKnRyZiwgdTggcmVnLCB1OCB2YWwpXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy01MjUte1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy01MzgtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo1Mzk6c3RhdGljIGludCB0cmY3OTcwYV9yZWFkX2lycXN0YXR1cyhzdHJ1Y3QgdHJmNzk3MGEgKnRyZiwgdTggKnN0YXR1cylcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTU0MC17XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTU2Mi1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjU2MzpzdGF0aWMgaW50IHRyZjc5NzBhX3VwZGF0ZV9yeF9nYWluX3JlZHVjdGlvbihzdHJ1Y3QgdHJmNzk3MGEgKnRyZilcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTU2NC17XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTU3MC1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjU3MTpcXHRyZXQgPSB0cmY3OTcwYV9yZWFkKHRyZiwgVFJGNzk3MEFfUlhfU1BFQ0lBTF9TRVRUSU5HUywgXFx1MDAyNnJlZyk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy01NzItXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNTc2LVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NTc3OlxcdHJldCA9IHRyZjc5NzBhX3dyaXRlKHRyZiwgVFJGNzk3MEFfUlhfU1BFQ0lBTF9TRVRUSU5HUywgcmVnKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTU3OC1cXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNTgxLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NTgyOnN0YXRpYyBpbnQgdHJmNzk3MGFfdXBkYXRlX2lzb19jdHJsX3JlZ2lzdGVyKHN0cnVjdCB0cmY3OTcwYSAqdHJmLCB1OCBpc29fY3RybClcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTU4My17XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTU4NS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjU4NjpcXHRyZXQgPSB0cmY3OTcwYV93cml0ZSh0cmYsIFRSRjc5NzBBX0lTT19DVFJMLCBpc29fY3RybCk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy01ODctXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNTkyLVxcdCAqL1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NTkzOlxcdHJldCA9IHRyZjc5NzBhX3VwZGF0ZV9yeF9nYWluX3JlZHVjdGlvbih0cmYpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNTk0LVxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy01OTctXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo1OTg6c3RhdGljIGludCB0cmY3OTcwYV9yZWFkX3RhcmdldF9wcm90byhzdHJ1Y3QgdHJmNzk3MGEgKnRyZiwgdTggKnRhcmdldF9wcm90bylcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTU5OS17XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTYxNi1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjYxNzpzdGF0aWMgaW50IHRyZjc5NzBhX21vZGVfZGV0ZWN0KHN0cnVjdCB0cmY3OTcwYSAqdHJmLCB1OCAqcmZfdGVjaClcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTYxOC17XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTYyMS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjYyMjpcXHRyZXQgPSB0cmY3OTcwYV9yZWFkX3RhcmdldF9wcm90byh0cmYsIFxcdTAwMjZ0YXJnZXRfcHJvdG8pO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNjIzLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTY0OS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjY1MDpzdGF0aWMgdm9pZCB0cmY3OTcwYV9zZW5kX3Vwc3RyZWFtKHN0cnVjdCB0cmY3OTcwYSAqdHJmKVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNjUxLXtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNjU1LVxcdGlmICh0cmYtXFx1MDAzZXJ4X3NrYiBcXHUwMDI2XFx1MDAyNiAhSVNfRVJSKHRyZi1cXHUwMDNlcnhfc2tiKSBcXHUwMDI2XFx1MDAyNiAhdHJmLVxcdTAwM2VhYm9ydGluZylcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjY1NjpcXHRcXHRwcmludF9oZXhfZHVtcF9kZWJ1ZyhcXFwidHJmNzk3MGEgcnggZGF0YTogXFxcIiwgRFVNUF9QUkVGSVhfTk9ORSxcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTY1Ny1cXHRcXHRcXHRcXHQgICAgIDE2LCAxLCB0cmYtXFx1MDAzZXJ4X3NrYi1cXHUwMDNlZGF0YSwgdHJmLVxcdTAwM2VyeF9za2ItXFx1MDAzZWxlbixcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNjc3LVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6Njc4OnN0YXRpYyB2b2lkIHRyZjc5NzBhX3NlbmRfZXJyX3Vwc3RyZWFtKHN0cnVjdCB0cmY3OTcwYSAqdHJmLCBpbnQgZXJybm8pXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02Nzkte1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02ODYtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo2ODc6XFx0dHJmNzk3MGFfc2VuZF91cHN0cmVhbSh0cmYpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNjg4LX1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTY4OS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjY5MDpzdGF0aWMgaW50IHRyZjc5NzBhX3RyYW5zbWl0KHN0cnVjdCB0cmY3OTcwYSAqdHJmLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNjkxLVxcdFxcdFxcdCAgICAgdW5zaWduZWQgaW50IGxlbiwgY29uc3QgdTggKnByZWZpeCxcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNjk4LVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6Njk5OlxcdHByaW50X2hleF9kdW1wX2RlYnVnKFxcXCJ0cmY3OTcwYSB0eCBkYXRhOiBcXFwiLCBEVU1QX1BSRUZJWF9OT05FLFxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNzAwLVxcdFxcdFxcdCAgICAgMTYsIDEsIHNrYi1cXHUwMDNlZGF0YSwgbGVuLCBmYWxzZSk7XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTc0Ny1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjc0ODpzdGF0aWMgdm9pZCB0cmY3OTcwYV9maWxsX2ZpZm8oc3RydWN0IHRyZjc5NzBhICp0cmYpXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy03NDkte1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy03NTUtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo3NTY6XFx0cmV0ID0gdHJmNzk3MGFfcmVhZCh0cmYsIFRSRjc5NzBBX0ZJRk9fU1RBVFVTLCBcXHUwMDI2Zmlmb19ieXRlcyk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy03NTctXFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NzU4OlxcdFxcdHRyZjc5NzBhX3NlbmRfZXJyX3Vwc3RyZWFtKHRyZiwgcmV0KTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTc1OS1cXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTc3Ny1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjc3ODpcXHRyZXQgPSB0cmY3OTcwYV90cmFuc21pdCh0cmYsIHNrYiwgbGVuLCBcXHUwMDI2cHJlZml4LCBzaXplb2YocHJlZml4KSk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy03NzktXFx0aWYgKHJldClcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjc4MDpcXHRcXHR0cmY3OTcwYV9zZW5kX2Vycl91cHN0cmVhbSh0cmYsIHJldCk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy03ODEtfVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNzgyLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NzgzOnN0YXRpYyB2b2lkIHRyZjc5NzBhX2RyYWluX2ZpZm8oc3RydWN0IHRyZjc5NzBhICp0cmYsIHU4IHN0YXR1cylcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTc4NC17XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTc4OS1cXHRpZiAoc3RhdHVzIFxcdTAwMjYgVFJGNzk3MEFfSVJRX1NUQVRVU19FUlJPUikge1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NzkwOlxcdFxcdHRyZjc5NzBhX3NlbmRfZXJyX3Vwc3RyZWFtKHRyZiwgLUVJTyk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy03OTEtXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy03OTMtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo3OTQ6XFx0cmV0ID0gdHJmNzk3MGFfcmVhZCh0cmYsIFRSRjc5NzBBX0ZJRk9fU1RBVFVTLCBcXHUwMDI2Zmlmb19ieXRlcyk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy03OTUtXFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6Nzk2OlxcdFxcdHRyZjc5NzBhX3NlbmRfZXJyX3Vwc3RyZWFtKHRyZiwgcmV0KTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTc5Ny1cXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTgxMi1cXHRcXHRpZiAoIXNrYikge1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6ODEzOlxcdFxcdFxcdHRyZjc5NzBhX3NlbmRfZXJyX3Vwc3RyZWFtKHRyZiwgLUVOT01FTSk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy04MTQtXFx0XFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy04MjAtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo4MjE6XFx0cmV0ID0gdHJmNzk3MGFfcmVhZF9jb250KHRyZiwgVFJGNzk3MEFfRklGT19JT19SRUdJU1RFUixcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTgyMi1cXHRcXHRcXHRcXHQgc2tiX3B1dChza2IsIGZpZm9fYnl0ZXMpLCBmaWZvX2J5dGVzKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTgyMy1cXHRpZiAocmV0KSB7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo4MjQ6XFx0XFx0dHJmNzk3MGFfc2VuZF9lcnJfdXBzdHJlYW0odHJmLCByZXQpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtODI1LVxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtODM1LVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6ODM2OlxcdFxcdHJldCA9IHRyZjc5NzBhX3JlYWQodHJmLCBUUkY3OTcwQV9GSUZPX1NUQVRVUywgXFx1MDAyNmZpZm9fYnl0ZXMpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtODM3LVxcdFxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjgzODpcXHRcXHRcXHR0cmY3OTcwYV9zZW5kX2Vycl91cHN0cmVhbSh0cmYsIHJldCk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy04MzktXFx0XFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy04NDUtXFx0XFx0ICogdGhlIGlmIHN0bXQgYmVsb3cgZG9lc24ndCBmaXJlIGFuZCB0aGUgZHJpdmVyIHdpbGwgd2FpdFxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6ODQ2OlxcdFxcdCAqIGZvciB0aGUgdHJmNzk3MGEgdG8gZ2VuZXJhdGUgYW5vdGhlciBSWCBpbnRlcnJ1cHQuXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy04NDctXFx0XFx0ICovXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTg1My1cXHRpZiAoc3RhdHVzID09IFRSRjc5NzBBX0lSUV9TVEFUVVNfU1JYKSB7XFx0LyogUmVjZWl2ZSBjb21wbGV0ZSAqL1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6ODU0OlxcdFxcdHRyZjc5NzBhX3NlbmRfdXBzdHJlYW0odHJmKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTg1NS1cXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTg2NC1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjg2NTpzdGF0aWMgaXJxcmV0dXJuX3QgdHJmNzk3MGFfaXJxKGludCBpcnEsIHZvaWQgKmRldl9pZClcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTg2Ni17XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo4Njc6XFx0c3RydWN0IHRyZjc5NzBhICp0cmYgPSBkZXZfaWQ7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy04NjgtXFx0aW50IHJldDtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtODc3LVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6ODc4OlxcdHJldCA9IHRyZjc5NzBhX3JlYWRfaXJxc3RhdHVzKHRyZiwgXFx1MDAyNnN0YXR1cyk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy04NzktXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy04OTYtXFx0XFx0ICogdHVybiBvZmYgdGhlIHJlY2VpdmVyIHRvIGF2b2lkIHVubmVjZXNzYXJ5IGludGVycnVwdHMuXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo4OTc6XFx0XFx0ICogSXQgd2lsbCBiZSB0dXJuZWQgYmFjayBvbiBpbiB0cmY3OTcwYV9zZW5kX2NtZCgpIHdoZW5cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTg5OC1cXHRcXHQgKiB0aGUgbmV4dCBjb21tYW5kIGlzIGlzc3VlZC5cXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTAwLVxcdFxcdGlmICh0cmYtXFx1MDAzZWlzX2luaXRpYXRvciBcXHUwMDI2XFx1MDAyNiAoc3RhdHVzIFxcdTAwMjYgVFJGNzk3MEFfSVJRX1NUQVRVU19FUlJPUikpIHtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjkwMTpcXHRcXHRcXHR0cmY3OTcwYV9jbWQodHJmLCBUUkY3OTcwQV9DTURfQkxPQ0tfUlgpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTAyLVxcdFxcdFxcdHRyZi1cXHUwMDNlc3RhdGUgPSBUUkY3OTcwQV9TVF9JRExFX1JYX0JMT0NLRUQ7XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTkwNC1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjkwNTpcXHRcXHR0cmY3OTcwYV9jbWQodHJmLCBUUkY3OTcwQV9DTURfRklGT19SRVNFVCk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05MDYtXFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTkxMC1cXHRcXHRcXHQgICAgIWNhbmNlbF9kZWxheWVkX3dvcmsoXFx1MDAyNnRyZi1cXHUwMDNldGltZW91dF93b3JrKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjkxMTpcXHRcXHRcXHR0cmY3OTcwYV9maWxsX2ZpZm8odHJmKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTkxMi1cXHRcXHR9IGVsc2Uge1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6OTEzOlxcdFxcdFxcdHRyZjc5NzBhX3NlbmRfZXJyX3Vwc3RyZWFtKHRyZiwgLUVJTyk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05MTQtXFx0XFx0fVxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05MjAtXFx0XFx0XFx0ICAgICFjYW5jZWxfZGVsYXllZF93b3JrKFxcdTAwMjZ0cmYtXFx1MDAzZXRpbWVvdXRfd29yayk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo5MjE6XFx0XFx0XFx0dHJmNzk3MGFfZHJhaW5fZmlmbyh0cmYsIHN0YXR1cyk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05MjItXFx0XFx0fSBlbHNlIGlmIChzdGF0dXMgXFx1MDAyNiBUUkY3OTcwQV9JUlFfU1RBVFVTX0ZJRk8pIHtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjkyMzpcXHRcXHRcXHRyZXQgPSB0cmY3OTcwYV9yZWFkKHRyZiwgVFJGNzk3MEFfRklGT19TVEFUVVMsXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05MjQtXFx0XFx0XFx0XFx0XFx0ICAgIFxcdTAwMjZmaWZvX2J5dGVzKTtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTI4LVxcdFxcdFxcdGlmIChyZXQpXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo5Mjk6XFx0XFx0XFx0XFx0dHJmNzk3MGFfc2VuZF9lcnJfdXBzdHJlYW0odHJmLCByZXQpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTMwLVxcdFxcdFxcdGVsc2UgaWYgKCFmaWZvX2J5dGVzKVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6OTMxOlxcdFxcdFxcdFxcdHRyZjc5NzBhX2NtZCh0cmYsIFRSRjc5NzBBX0NNRF9GSUZPX1JFU0VUKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTkzMi1cXHRcXHR9IGVsc2UgaWYgKChzdGF0dXMgPT0gVFJGNzk3MEFfSVJRX1NUQVRVU19UWCkgfHxcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTM1LVxcdFxcdFxcdFxcdFxcdFRSRjc5NzBBX0lSUV9TVEFUVVNfTkZDX1JGKSkpKSB7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo5MzY6XFx0XFx0XFx0dHJmNzk3MGFfY21kKHRyZiwgVFJGNzk3MEFfQ01EX0ZJRk9fUkVTRVQpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTM3LVxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05NDEtXFx0XFx0XFx0XFx0dHJmLVxcdTAwM2VyeF9za2IgPSBOVUxMO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6OTQyOlxcdFxcdFxcdFxcdHRyZjc5NzBhX3NlbmRfdXBzdHJlYW0odHJmKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTk0My1cXHRcXHRcXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTYyLVxcdFxcdFxcdGNhc2UgTkZDX0RJR0lUQUxfRlJBTUlOR19ORkNBX0FOVElDT0xfQ09NUExFVEU6XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo5NjM6XFx0XFx0XFx0XFx0cmV0ID0gdHJmNzk3MGFfd3JpdGUodHJmLFxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTY0LVxcdFxcdFxcdFxcdFxcdCBUUkY3OTcwQV9TUEVDSUFMX0ZDTl9SRUcxLFxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05NzYtXFx0XFx0XFx0aWYgKGlzb19jdHJsICE9IHRyZi1cXHUwMDNlaXNvX2N0cmwpIHtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjk3NzpcXHRcXHRcXHRcXHRyZXQgPSB0cmY3OTcwYV91cGRhdGVfaXNvX2N0cmxfcmVnaXN0ZXIodHJmLCBpc29fY3RybCk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05NzgtXFx0XFx0XFx0XFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTgzLVxcdFxcdH0gZWxzZSB7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo5ODQ6XFx0XFx0XFx0dHJmNzk3MGFfc2VuZF9lcnJfdXBzdHJlYW0odHJmLCAtRUlPKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTk4NS1cXHRcXHR9XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTk4OC1cXHRcXHRpZiAoc3RhdHVzICE9IFRSRjc5NzBBX0lSUV9TVEFUVVNfVFgpXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo5ODk6XFx0XFx0XFx0dHJmNzk3MGFfc2VuZF9lcnJfdXBzdHJlYW0odHJmLCAtRUlPKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTk5MC1cXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTk0LVxcdFxcdFxcdCAgICAhY2FuY2VsX2RlbGF5ZWRfd29yayhcXHUwMDI2dHJmLVxcdTAwM2V0aW1lb3V0X3dvcmspO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6OTk1OlxcdFxcdFxcdHRyZjc5NzBhX2RyYWluX2ZpZm8odHJmLCBzdGF0dXMpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTk2LVxcdFxcdH0gZWxzZSBpZiAoIShzdGF0dXMgXFx1MDAyNiBUUkY3OTcwQV9JUlFfU1RBVFVTX05GQ19SRikpIHtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjk5NzpcXHRcXHRcXHR0cmY3OTcwYV9zZW5kX2Vycl91cHN0cmVhbSh0cmYsIC1FSU8pO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTk4LVxcdFxcdH1cXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTAwNC1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEwMDU6XFx0XFx0XFx0cmV0ID0gdHJmNzk3MGFfbW9kZV9kZXRlY3QodHJmLCBcXHUwMDI2dHJmLVxcdTAwM2VtZF9yZl90ZWNoKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwMDYtXFx0XFx0XFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTAwNzpcXHRcXHRcXHRcXHR0cmY3OTcwYV9zZW5kX2Vycl91cHN0cmVhbSh0cmYsIHJldCk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDA4LVxcdFxcdFxcdH0gZWxzZSB7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDA5LVxcdFxcdFxcdFxcdHRyZi1cXHUwMDNlc3RhdGUgPSBUUkY3OTcwQV9TVF9MSVNURU5JTkc7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMDEwOlxcdFxcdFxcdFxcdHRyZjc5NzBhX2RyYWluX2ZpZm8odHJmLCBzdGF0dXMpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTAxMS1cXHRcXHRcXHR9XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDEyLVxcdFxcdH0gZWxzZSBpZiAoIShzdGF0dXMgXFx1MDAyNiBUUkY3OTcwQV9JUlFfU1RBVFVTX05GQ19SRikpIHtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEwMTM6XFx0XFx0XFx0dHJmNzk3MGFfc2VuZF9lcnJfdXBzdHJlYW0odHJmLCAtRUlPKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwMTQtXFx0XFx0fVxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDI1LVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTAyNjpzdGF0aWMgdm9pZCB0cmY3OTcwYV9pc3N1ZV9lb2Yoc3RydWN0IHRyZjc5NzBhICp0cmYpXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDI3LXtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTAzMS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEwMzI6XFx0cmV0ID0gdHJmNzk3MGFfY21kKHRyZiwgVFJGNzk3MEFfQ01EX0ZJRk9fUkVTRVQpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTAzMy1cXHRpZiAocmV0KVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTAzNDpcXHRcXHR0cmY3OTcwYV9zZW5kX2Vycl91cHN0cmVhbSh0cmYsIHJldCk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDM1LVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTAzNjpcXHRyZXQgPSB0cmY3OTcwYV9jbWQodHJmLCBUUkY3OTcwQV9DTURfRU9GKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwMzctXFx0aWYgKHJldClcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEwMzg6XFx0XFx0dHJmNzk3MGFfc2VuZF9lcnJfdXBzdHJlYW0odHJmLCByZXQpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTAzOS1cXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTA0OC1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEwNDk6c3RhdGljIHZvaWQgdHJmNzk3MGFfdGltZW91dF93b3JrX2hhbmRsZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTA1MC17XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMDUxOlxcdHN0cnVjdCB0cmY3OTcwYSAqdHJmID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCB0cmY3OTcwYSxcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwNTItXFx0XFx0XFx0XFx0XFx0ICAgIHRpbWVvdXRfd29yay53b3JrKTtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTA2MS1cXHRlbHNlIGlmICh0cmYtXFx1MDAzZXN0YXRlID09IFRSRjc5NzBBX1NUX1dBSVRfRk9SX1JYX0RBVEFfQ09OVClcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEwNjI6XFx0XFx0dHJmNzk3MGFfZHJhaW5fZmlmbyh0cmYsIFRSRjc5NzBBX0lSUV9TVEFUVVNfU1JYKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwNjMtXFx0ZWxzZSBpZiAodHJmLVxcdTAwM2VzdGF0ZSA9PSBUUkY3OTcwQV9TVF9XQUlUX1RPX0lTU1VFX0VPRilcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEwNjQ6XFx0XFx0dHJmNzk3MGFfaXNzdWVfZW9mKHRyZik7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDY1LVxcdGVsc2VcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEwNjY6XFx0XFx0dHJmNzk3MGFfc2VuZF9lcnJfdXBzdHJlYW0odHJmLCAtRVRJTUVET1VUKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwNjctXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwNzAtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMDcxOnN0YXRpYyBpbnQgdHJmNzk3MGFfaW5pdChzdHJ1Y3QgdHJmNzk3MGEgKnRyZilcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwNzIte1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDc2LVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTA3NzpcXHRyZXQgPSB0cmY3OTcwYV9jbWQodHJmLCBUUkY3OTcwQV9DTURfU09GVF9JTklUKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwNzgtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTA4MS1cXHQvKiBTZXQgdGhlIGdhaW4gcmVkdWN0aW9uIGFmdGVyIHNvZnQgaW5pdCAqL1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTA4MjpcXHRyZXQgPSB0cmY3OTcwYV91cGRhdGVfcnhfZ2Fpbl9yZWR1Y3Rpb24odHJmKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwODMtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTA4NS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEwODY6XFx0cmV0ID0gdHJmNzk3MGFfY21kKHRyZiwgVFJGNzk3MEFfQ01EX0lETEUpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTA4Ny1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDg5LVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTA5MDpcXHRyZXQgPSB0cmY3OTcwYV93cml0ZSh0cmYsIFRSRjc5NzBBX1JFR19JT19DVFJMLFxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTA5MS1cXHRcXHRcXHQgICAgIHRyZi1cXHUwMDNlaW9fY3RybCB8IFRSRjc5NzBBX1JFR19JT19DVFJMX1ZSUygweDEpKTtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTA5NC1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEwOTU6XFx0cmV0ID0gdHJmNzk3MGFfd3JpdGUodHJmLCBUUkY3OTcwQV9ORkNfVEFSR0VUX0xFVkVMLCAwKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwOTYtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTEwMi1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjExMDM6XFx0cmV0ID0gdHJmNzk3MGFfd3JpdGUodHJmLCBUUkY3OTcwQV9NT0RVTEFUT1JfU1lTX0NMS19DVFJMLFxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTEwNC1cXHRcXHRcXHQgICAgIHRyZi1cXHUwMDNlbW9kdWxhdG9yX3N5c19jbGtfY3RybCk7XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExMDctXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMTA4OlxcdHJldCA9IHRyZjc5NzBhX3dyaXRlKHRyZiwgVFJGNzk3MEFfQURKVVRBQkxFX0ZJRk9fSVJRX0xFVkVMUyxcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExMDktXFx0XFx0XFx0ICAgICBUUkY3OTcwQV9BREpVVEFCTEVfRklGT19JUlFfTEVWRUxTX1dMSF85NiB8XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExMTMtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMTE0OlxcdHJldCA9IHRyZjc5NzBhX3dyaXRlKHRyZiwgVFJGNzk3MEFfU1BFQ0lBTF9GQ05fUkVHMSwgMCk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMTE1LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExMjctXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMTI4OnN0YXRpYyB2b2lkIHRyZjc5NzBhX3N3aXRjaF9yZl9vZmYoc3RydWN0IHRyZjc5NzBhICp0cmYpXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMTI5LXtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTEzNy1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjExMzg6XFx0dHJmNzk3MGFfd3JpdGUodHJmLCBUUkY3OTcwQV9DSElQX1NUQVRVU19DVFJMLCB0cmYtXFx1MDAzZWNoaXBfc3RhdHVzX2N0cmwpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTEzOS1cXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTE0Ni1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjExNDc6c3RhdGljIGludCB0cmY3OTcwYV9zd2l0Y2hfcmZfb24oc3RydWN0IHRyZjc5NzBhICp0cmYpXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMTQ4LXtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTE2MC1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjExNjE6XFx0cmV0ID0gdHJmNzk3MGFfaW5pdCh0cmYpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTE2Mi1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExNzEtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMTcyOnN0YXRpYyBpbnQgdHJmNzk3MGFfc3dpdGNoX3JmKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIGJvb2wgb24pXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMTczLXtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjExNzQ6XFx0c3RydWN0IHRyZjc5NzBhICp0cmYgPSBuZmNfZGlnaXRhbF9nZXRfZHJ2ZGF0YShkZGV2KTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExNzUtXFx0aW50IHJldCA9IDA7XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExODQtXFx0XFx0Y2FzZSBUUkY3OTcwQV9TVF9SRl9PRkY6XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMTg1OlxcdFxcdFxcdHJldCA9IHRyZjc5NzBhX3N3aXRjaF9yZl9vbih0cmYpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTE4Ni1cXHRcXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTE5Mi1cXHRcXHRcXHRcXHRfX2Z1bmNfXywgdHJmLVxcdTAwM2VzdGF0ZSwgb24pO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTE5MzpcXHRcXHRcXHR0cmY3OTcwYV9zd2l0Y2hfcmZfb2ZmKHRyZik7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMTk0LVxcdFxcdFxcdHJldCA9IC1FSU5WQUw7XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEyMDktXFx0XFx0Y2FzZSBUUkY3OTcwQV9TVF9XQUlUX0ZPUl9SWF9EQVRBX0NPTlQ6XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMjEwOlxcdFxcdFxcdHRyZjc5NzBhX3N3aXRjaF9yZl9vZmYodHJmKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEyMTEtXFx0XFx0fVxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMjE3LVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTIxODpzdGF0aWMgaW50IHRyZjc5NzBhX2luX2NvbmZpZ19yZl90ZWNoKHN0cnVjdCB0cmY3OTcwYSAqdHJmLCBpbnQgdGVjaClcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEyMTkte1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMjY4LVxcdCAqIFBTTCBzZXF1ZW5jZSAoaW5kaWNhdGVkIGJ5ICd0cmYtXFx1MDAzZWlzb19jdHJsID09IDB4ZmYnIGZyb21cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEyNjk6XFx0ICogdHJmNzk3MGFfaW5pdCgpKSwgY2xlYXIgdGhlIE5GQyBUYXJnZXQgRGV0ZWN0aW9uIExldmVsIHJlZ2lzdGVyXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMjcwLVxcdCAqIGR1ZSB0byBlcnJhdHVtLlxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMjcyLVxcdGlmICh0cmYtXFx1MDAzZWlzb19jdHJsID09IDB4ZmYpXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMjczOlxcdFxcdHJldCA9IHRyZjc5NzBhX3dyaXRlKHRyZiwgVFJGNzk3MEFfTkZDX1RBUkdFVF9MRVZFTCwgMCk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMjc0LVxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMjc3LVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTI3ODpzdGF0aWMgaW50IHRyZjc5NzBhX2lzX3JmX2ZpZWxkKHN0cnVjdCB0cmY3OTcwYSAqdHJmLCBib29sICppc19yZl9maWVsZClcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEyNzkte1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMjgyLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTI4MzpcXHRyZXQgPSB0cmY3OTcwYV93cml0ZSh0cmYsIFRSRjc5NzBBX0NISVBfU1RBVFVTX0NUUkwsXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMjg0LVxcdFxcdFxcdCAgICAgdHJmLVxcdTAwM2VjaGlwX3N0YXR1c19jdHJsIHxcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTI4OC1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEyODk6XFx0cmV0ID0gdHJmNzk3MGFfY21kKHRyZiwgVFJGNzk3MEFfQ01EX1RFU1RfRVhUX1JGKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEyOTAtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTI5NC1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEyOTU6XFx0cmV0ID0gdHJmNzk3MGFfcmVhZCh0cmYsIFRSRjc5NzBBX1JTU0lfT1NDX1NUQVRVUywgXFx1MDAyNnJzc2kpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTI5Ni1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMjk4LVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTI5OTpcXHRyZXQgPSB0cmY3OTcwYV93cml0ZSh0cmYsIFRSRjc5NzBBX0NISVBfU1RBVFVTX0NUUkwsXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMzAwLVxcdFxcdFxcdCAgICAgdHJmLVxcdTAwM2VjaGlwX3N0YXR1c19jdHJsKTtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTMxMS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEzMTI6c3RhdGljIGludCB0cmY3OTcwYV9pbl9jb25maWdfZnJhbWluZyhzdHJ1Y3QgdHJmNzk3MGEgKnRyZiwgaW50IGZyYW1pbmcpXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMzEzLXtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTM1MC1cXHRpZiAoISh0cmYtXFx1MDAzZWNoaXBfc3RhdHVzX2N0cmwgXFx1MDAyNiBUUkY3OTcwQV9DSElQX1NUQVRVU19SRl9PTikpIHtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEzNTE6XFx0XFx0cmV0ID0gdHJmNzk3MGFfaXNfcmZfZmllbGQodHJmLCBcXHUwMDI2aXNfcmZfZmllbGQpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTM1Mi1cXHRcXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMzU5LVxcdGlmIChpc29fY3RybCAhPSB0cmYtXFx1MDAzZWlzb19jdHJsKSB7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMzYwOlxcdFxcdHJldCA9IHRyZjc5NzBhX3VwZGF0ZV9pc29fY3RybF9yZWdpc3Rlcih0cmYsIGlzb19jdHJsKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEzNjEtXFx0XFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTM2NS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEzNjY6XFx0XFx0cmV0ID0gdHJmNzk3MGFfd3JpdGUodHJmLCBUUkY3OTcwQV9NT0RVTEFUT1JfU1lTX0NMS19DVFJMLFxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTM2Ny1cXHRcXHRcXHRcXHQgICAgIHRyZi1cXHUwMDNlbW9kdWxhdG9yX3N5c19jbGtfY3RybCk7XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEzNzItXFx0aWYgKCEodHJmLVxcdTAwM2VjaGlwX3N0YXR1c19jdHJsIFxcdTAwMjYgVFJGNzk3MEFfQ0hJUF9TVEFUVVNfUkZfT04pKSB7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMzczOlxcdFxcdHJldCA9IHRyZjc5NzBhX3dyaXRlKHRyZiwgVFJGNzk3MEFfQ0hJUF9TVEFUVVNfQ1RSTCxcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEzNzQtXFx0XFx0XFx0XFx0ICAgICB0cmYtXFx1MDAzZWNoaXBfc3RhdHVzX2N0cmwgfFxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMzg2LVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTM4NzpzdGF0aWMgaW50IHRyZjc5NzBhX2luX2NvbmZpZ3VyZV9odyhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCBpbnQgdHlwZSxcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEzODgtXFx0XFx0XFx0XFx0ICAgIGludCBwYXJhbSlcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEzODkte1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTM5MDpcXHRzdHJ1Y3QgdHJmNzk3MGEgKnRyZiA9IG5mY19kaWdpdGFsX2dldF9kcnZkYXRhKGRkZXYpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTM5MS1cXHRpbnQgcmV0O1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNDAwLVxcdCAgICAodHJmLVxcdTAwM2VzdGF0ZSA9PSBUUkY3OTcwQV9TVF9SRl9PRkYpKSB7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNDAxOlxcdFxcdHJldCA9IHRyZjc5NzBhX3N3aXRjaF9yZl9vbih0cmYpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTQwMi1cXHRcXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNDA3LVxcdGNhc2UgTkZDX0RJR0lUQUxfQ09ORklHX1JGX1RFQ0g6XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNDA4OlxcdFxcdHJldCA9IHRyZjc5NzBhX2luX2NvbmZpZ19yZl90ZWNoKHRyZiwgcGFyYW0pO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTQwOS1cXHRcXHRicmVhaztcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE0MTAtXFx0Y2FzZSBORkNfRElHSVRBTF9DT05GSUdfRlJBTUlORzpcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE0MTE6XFx0XFx0cmV0ID0gdHJmNzk3MGFfaW5fY29uZmlnX2ZyYW1pbmcodHJmLCBwYXJhbSk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNDEyLVxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNDIyLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTQyMzpzdGF0aWMgaW50IHRyZjc5NzBhX2lzX2lzbzE1NjkzX3dyaXRlX29yX2xvY2sodTggY21kKVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTQyNC17XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE0MzgtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNDM5OnN0YXRpYyBpbnQgdHJmNzk3MGFfcGVyX2NtZF9jb25maWcoc3RydWN0IHRyZjc5NzBhICp0cmYsXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNDQwLVxcdFxcdFxcdFxcdCAgIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE0NjQtXFx0XFx0aWYgKHNwZWNpYWxfZmNuX3JlZzEgIT0gdHJmLVxcdTAwM2VzcGVjaWFsX2Zjbl9yZWcxKSB7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNDY1OlxcdFxcdFxcdHJldCA9IHRyZjc5NzBhX3dyaXRlKHRyZiwgVFJGNzk3MEFfU1BFQ0lBTF9GQ05fUkVHMSxcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE0NjYtXFx0XFx0XFx0XFx0XFx0ICAgICBzcGVjaWFsX2Zjbl9yZWcxKTtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTQ5MS1cXHRcXHRpZiAoaXNvX2N0cmwgIT0gdHJmLVxcdTAwM2Vpc29fY3RybCkge1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTQ5MjpcXHRcXHRcXHRyZXQgPSB0cmY3OTcwYV91cGRhdGVfaXNvX2N0cmxfcmVnaXN0ZXIodHJmLCBpc29fY3RybCk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNDkzLVxcdFxcdFxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE0OTktXFx0XFx0aWYgKCh0cmYtXFx1MDAzZWZyYW1pbmcgPT0gTkZDX0RJR0lUQUxfRlJBTUlOR19JU08xNTY5M19UNVQpIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNTAwOlxcdFxcdCAgICB0cmY3OTcwYV9pc19pc28xNTY5M193cml0ZV9vcl9sb2NrKHJlcVsxXSkgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE1MDEtXFx0XFx0ICAgIChyZXFbMF0gXFx1MDAyNiBJU08xNTY5M19SRVFfRkxBR19PUFRJT04pKVxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNTA3LVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTUwODpzdGF0aWMgaW50IHRyZjc5NzBhX3NlbmRfY21kKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNTA5LVxcdFxcdFxcdCAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTE2IHRpbWVvdXQsXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE1MTEte1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTUxMjpcXHRzdHJ1Y3QgdHJmNzk3MGEgKnRyZiA9IG5mY19kaWdpdGFsX2dldF9kcnZkYXRhKGRkZXYpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTUxMy1cXHR1OCBwcmVmaXhbNV07XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE1NTEtXFx0aWYgKHRyZi1cXHUwMDNlc3RhdGUgPT0gVFJGNzk3MEFfU1RfSURMRV9SWF9CTE9DS0VEKSB7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNTUyOlxcdFxcdHJldCA9IHRyZjc5NzBhX2NtZCh0cmYsIFRSRjc5NzBBX0NNRF9FTkFCTEVfUlgpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTU1My1cXHRcXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNTU5LVxcdGlmICh0cmYtXFx1MDAzZWlzX2luaXRpYXRvcikge1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTU2MDpcXHRcXHRyZXQgPSB0cmY3OTcwYV9wZXJfY21kX2NvbmZpZyh0cmYsIHNrYik7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNTYxLVxcdFxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE1OTYtXFx0LyogQ2xlYXIgcG9zc2libGUgc3B1cmlvdXMgaW50ZXJydXB0ICovXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNTk3OlxcdHJldCA9IHRyZjc5NzBhX3JlYWRfaXJxc3RhdHVzKHRyZiwgXFx1MDAyNnN0YXR1cyk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNTk4LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE2MDAtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNjAxOlxcdHJldCA9IHRyZjc5NzBhX3RyYW5zbWl0KHRyZiwgc2tiLCBsZW4sIHByZWZpeCwgc2l6ZW9mKHByZWZpeCkpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTYwMi1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE2MTEtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNjEyOnN0YXRpYyBpbnQgdHJmNzk3MGFfdGdfY29uZmlnX3JmX3RlY2goc3RydWN0IHRyZjc5NzBhICp0cmYsIGludCB0ZWNoKVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTYxMy17XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE2NDctXFx0LyogTm9ybWFsbHkgd2Ugd3JpdGUgdGhlIElTT19DVFJMIHJlZ2lzdGVyIGluXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNjQ4OlxcdCAqIHRyZjc5NzBhX3RnX2NvbmZpZ19mcmFtaW5nKCkgYmVjYXVzZSB0aGUgZnJhbWluZyBjYW4gY2hhbmdlXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNjQ5LVxcdCAqIHRoZSB2YWx1ZSB3cml0dGVuLiAgSG93ZXZlciwgd2hlbiBzZW5kaW5nIGEgUFNMIFJFUyxcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE2NTAtXFx0ICogZGlnaXRhbF90Z19zZW5kX3BzbF9yZXNfY29tcGxldGUoKSBkb2Vzbid0IGNhbGxcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE2NTE6XFx0ICogdHJmNzk3MGFfdGdfY29uZmlnX2ZyYW1pbmcoKSBzbyB3ZSBtdXN0IHdyaXRlIHRoZSByZWdpc3RlclxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTY1Mi1cXHQgKiBoZXJlLlxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNjU1LVxcdCAgICAodHJmLVxcdTAwM2Vpc29fY3RybF90ZWNoICE9IHRyZi1cXHUwMDNlaXNvX2N0cmwpKSB7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNjU2OlxcdFxcdHJldCA9IHRyZjc5NzBhX3VwZGF0ZV9pc29fY3RybF9yZWdpc3Rlcih0cmYsIHRyZi1cXHUwMDNlaXNvX2N0cmxfdGVjaCk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNjU3LVxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNjY5LSAqL1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTY3MDpzdGF0aWMgaW50IHRyZjc5NzBhX3RnX2NvbmZpZ19mcmFtaW5nKHN0cnVjdCB0cmY3OTcwYSAqdHJmLCBpbnQgZnJhbWluZylcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE2NzEte1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNzAzLVxcdGlmIChpc29fY3RybCAhPSB0cmYtXFx1MDAzZWlzb19jdHJsKSB7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNzA0OlxcdFxcdHJldCA9IHRyZjc5NzBhX3VwZGF0ZV9pc29fY3RybF9yZWdpc3Rlcih0cmYsIGlzb19jdHJsKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE3MDUtXFx0XFx0aWYgKHJldClcXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTNUMDU6MTY6NTkuNTM5Njc0NDA2WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6MzE0NTg2NjU1MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIGB0cmY3OTcwYS5jYCBmaWxlJ3MgYnVzIHR5cGUgYW5kIHByb2JlIGZ1bmN0aW9uLlxuXG4qKkRpdmluZyBpbnRvIGB0cmY3OTcwYS5jYCdzIENvcmUqKlxuXG5SaWdodCwgbGV0J3MgZ2V0IGludG8gdGhlIG5pdHR5LWdyaXR0eSBvZiB0aGUgYHRyZjc5NzBhLmNgIGRyaXZlci4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgdGhpbmcgaW50ZXJmYWNlcyB3aXRoIHRoZSBoYXJkd2FyZSDigJMgc3BlY2lmaWNhbGx5LCB0aGUgYnVzIHR5cGUgaXQncyBkZXNpZ25lZCBmb3IgYW5kIGhvdyBpdCdzIGluaXRpYWxpemVkIGR1cmluZyB0aGUgcHJvYmUgc3RhZ2UuIFRoYXQgYHByb2JlYCBmdW5jdGlvbiBpcyB0aGUga2V5LCBJIGtub3csIGl04oCZcyB3aGVyZSBhbGwgdGhlIHNldHVwIGhhcHBlbnMuIEknbSBnb2luZyB0byBxdWlja2x5IHNraW0gdGhlIGNvZGUgZm9jdXNpbmcgb24gaG93IHRoZSBidXMgaXMgZGVmaW5lZCBhbmQgaG93IHRoZSBkZXZpY2UgaXMgcmVnaXN0ZXJlZCB3aXRoIHRoYXQgYnVzLiBJJ2xsIG5lZWQgdG8ga25vdyB3aGV0aGVyIGl04oCZcyBJMkMsIFNQSSwgb3Igc29tZXRoaW5nIGN1c3RvbS4gVGhlbiBJIGNhbiBhc3Nlc3MgaG93IHRoZSBsb3ctbGV2ZWwgY29tbXVuaWNhdGlvbiBpcyBoYW5kbGVkLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgZGVwZW5kZW5jaWVzLCB0aGUgY2xvY2sgc2V0dGluZ3MsIHBpbiBjb25maWd1cmF0aW9ucyBpZiBpdOKAmXMgR1BJTyBkcml2ZW4sIGFuZCB0aGUgb3ZlcmFsbCBkZXZpY2UgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UuIFRoaXMgd2lsbCB0ZWxsIG1lIGhvdyB3ZWxsLWludGVncmF0ZWQgaXQgaXMgYW5kIGlmIHRoZXJlIGFyZSBhbnkgb2J2aW91cyBib3R0bGVuZWNrcy4gSSBob3BlIHRoZSBkb2N1bWVudGF0aW9uIGlzIGhlbHBmdWwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3MTIyLCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTNUMDU6MTc6MDIuNjg1NTQ2NzU4WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3NDI1MzQyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1vZHVsZV9zcGlfZHJpdmVyfHByb2JlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmZjL3RyZjc5NzBhLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZmMvdHJmNzk3MGEuYz0yMDM2PXN0YXRpYyBpbnQgdHJmNzk3MGFfZ2V0X2F1dG9zdXNwZW5kX2RlbGF5KGNvbnN0IHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTIwNDYtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoyMDQ3OnN0YXRpYyBpbnQgdHJmNzk3MGFfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSlcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTIwNDgte1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYz0yMzIwPXN0YXRpYyBzdHJ1Y3Qgc3BpX2RyaXZlciB0cmY3OTcwYV9zcGlfZHJpdmVyID0ge1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MjMyMTpcXHQucHJvYmVcXHRcXHQ9IHRyZjc5NzBhX3Byb2JlLFxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMjMyMi1cXHQucmVtb3ZlXFx0XFx0PSB0cmY3OTcwYV9yZW1vdmUsXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTIzMzAtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoyMzMxOm1vZHVsZV9zcGlfZHJpdmVyKHRyZjc5NzBhX3NwaV9kcml2ZXIpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMjMzMi1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTNUMDU6MTc6MDIuNzMyOTc2ODhaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjo0OTk0NTM0ODAzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIHRyZjc5NzBhX3NwaV9kcml2ZXIncyBGdXp6aW5nIFBvdGVudGlhbCoqXG5cbk9rYXksIHNvIGB0cmY3OTcwYV9zcGlfZHJpdmVyYCBpcyBhbiBTUEkgZHJpdmVyLCBnb3QgaXQuIEJ1dCB0aGUga2V5IHF1ZXN0aW9uIGhlcmUgaXMgd2hldGhlciBpdCdzICpmdXp6YWJsZSogd2l0aGluIGEgc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBRRU1VIG9yIEdvb2dsZSBDb21wdXRlIEVuZ2luZS4gVGhhdCdzIHRoZSByZWFsIGNoYWxsZW5nZS4gU1BJIGRldmljZXMuLi4gY2FuIHRoZXkgYmUgZW11bGF0ZWQgb3IgZXZlbiBmdXp6ZWQgaW4gdGhvc2UgZW52aXJvbm1lbnRzP1xuXG5GaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHN0cnVjdHVyYWwgcmVhY2hhYmlsaXR5LiBJcyB0aGlzIGRyaXZlciBldmVuICpyZWFjaGFibGUqIGluIGEgdHlwaWNhbCBzZXR1cD8gSSBuZWVkIHRvIGtub3cgaWYgSSBjYW4gZ2V0IHRoaXMgY29kZSB0byBleGVjdXRlIHdpdGhpbiBhIHN0YW5kYXJkIHRlc3RpbmcgZnJhbWV3b3JrLiBMZXQncyBzZWUgaWYgc3l6a2FsbGVyIGhhcyBhbnkgc3VwcG9ydCBmb3IgU1BJIG9yIGlmIHRoZXJlIGFyZSBhbnkgdmlydHVhbCBidXMgYXBwcm9hY2hlcyB0byBjb25zaWRlci5cblxuUmlnaHQsIGJhY2sgdG8gdGhlIGNvcmUgcHJpbmNpcGxlOiBSZWFjaGFiaWxpdHkgaXMgdGhlIHByaW1hcnkgZ2F0ZS4gSWYgdGhlIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIHdpdGhpbiB0aG9zZSBlbnZpcm9ubWVudHMsIHRoZXJlJ3Mgbm8gcG9pbnQgaW4gZnV6emluZyBpdCwgbm8gbWF0dGVyIHdoYXQgaXQgZG9lcy4gU2VjdGlvbiAxIGlzIGNsZWFyIG9uIHRoYXQuIFNlY3Rpb24gMiBsYXlzIG91dCB0aGUgbmVnYXRpdmUgY3JpdGVyaWE6IHNjZW5hcmlvcyB3aGVyZSBmdXp6aW5nIGlzIGEgd2FzdGUgb2YgdGltZS4gU3BlY2lmaWNhbGx5LCBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUgbGlrZSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzdHVmZiBpcyBhIG5vLWdvLiBCdXQgd2FpdCBhIG1pbnV0ZS4uLiByZWFjaGFibGUgZHJpdmVycyBhbmQgcHJvdG9jb2xzLCBzcGVjaWZpY2FsbHkgdGhvc2UgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcywgYXJlIHRoZSB3YXkgdG8gZ28uXG5cblNvLCAqY2FuKiBTUEkgZHJpdmVycyBiZSByZWFjaGVkPyBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgU1BJIGRldmljZXMgYXJlIGJvdW5kIGluIExpbnV4LiBUeXBpY2FsbHksIGl0J3MgZG9uZSB0aHJvdWdoIGRldmljZXRyZWUsIEFDUEksIG9yIGBzcGlfYm9hcmRfaW5mb2AgKHBsYXRmb3JtIGRhdGEpLiBBcmUgdGhlcmUgYW55IG9wcG9ydHVuaXRpZXMgZm9yIGluc3RhbnRpYXRpbmcgU1BJIGRldmljZXMgZnJvbSB1c2Vyc3BhY2Ugb3IgbGV2ZXJhZ2luZyB2aXJ0dWFsIGJ1c2VzPyBUaGF0J3MgdGhlIGNydWNpYWwgcXVlc3Rpb24uXG5cblRpbWUgdG8gbG9vayBmb3Igc3BlY2lmaWMgZXhhbXBsZXM6IElzIHRoZXJlIGFueSBTUEkgY29udHJvbGxlciBlbXVsYXRpb24sIGNvbmZpZ2ZzIHN1cHBvcnQsIHNwaWRldiB1c2UsIG9yIGFueSBzeXpib3QgcmVwcm9kdWN0aW9ucyBvZiBTUEkgYnVncyB0aGF0IG1pZ2h0IGJlIHJlbGV2YW50PyBJIG5lZWQgdG8gY2hlY2sgaWYgdGhlcmUgYXJlIGFueSBkb2N1bWVudGVkIHBhdGh3YXlzIHRvIHRyaWdnZXIgdGhpcyBkcml2ZXIgaW4gYSB2aXJ0dWFsaXplZCBzZXR0aW5nLiBMZXQncyBzdGFydCBieSBsb29raW5nIGF0IGRyaXZlcnMvbmZjL0tjb25maWcgdG8gc2VlIHdoYXQgdGhhdCBkcml2ZXIgZGVwZW5kcyBvbiwgdG8gc2VlIGlmIHRoZXJlIGlzIGFueSBzaGFyZWQgYXBwcm9hY2guIFRoaXMgaXMgZ29pbmcgdG8gYmUgbXkgaW52ZXN0aWdhdGl2ZSBzdGFydGluZyBwb2ludC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTc3NjcsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTNUMDU6MTc6MDcuNzI3NTEzMzUzWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjM2NzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZmMvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAzNVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0I1xcbiAgIDM6XFx0IyBOZWFyIEZpZWxkIENvbW11bmljYXRpb24gKE5GQykgZGV2aWNlc1xcbiAgIDQ6XFx0I1xcbiAgIDU6XFx0XFxuICAgNjpcXHRtZW51IFxcXCJOZWFyIEZpZWxkIENvbW11bmljYXRpb24gKE5GQykgZGV2aWNlc1xcXCJcXG4gICA3OlxcdFxcdGRlcGVuZHMgb24gTkZDXFxuICAgODpcXHRcXG4gICA5OlxcdGNvbmZpZyBORkNfVFJGNzk3MEFcXG4gIDEwOlxcdFxcdHRyaXN0YXRlIFxcXCJUZXhhcyBJbnN0cnVtZW50cyBUUkY3OTcwYSBORkMgZHJpdmVyXFxcIlxcbiAgMTE6XFx0XFx0ZGVwZW5kcyBvbiBTUEkgXFx1MDAyNlxcdTAwMjYgTkZDX0RJR0lUQUwgXFx1MDAyNlxcdTAwMjYgR1BJT0xJQlxcbiAgMTI6XFx0XFx0aGVscFxcbiAgMTM6XFx0XFx0ICBUaGlzIG9wdGlvbiBlbmFibGVzIHRoZSBORkMgZHJpdmVyIGZvciBUZXhhcyBJbnN0cnVtZW50cycgVFJGNzk3MGFcXG4gIDE0OlxcdFxcdCAgZGV2aWNlLiBTdWNoIGRldmljZSBzdXBwb3J0cyA1IGRpZmZlcmVudCBwcm90b2NvbHM6IElTTzE0NDQzQSxcXG4gIDE1OlxcdFxcdCAgSVNPMTQ0NDNCLCBGZUxpQ2EsIElTTzE1NjkzIGFuZCBJU08xODAwMC0zLlxcbiAgMTY6XFx0XFxuICAxNzpcXHRcXHQgIFNheSBZIGhlcmUgdG8gY29tcGlsZSBzdXBwb3J0IGZvciBUUkY3OTcwYSBpbnRvIHRoZSBrZXJuZWwgb3JcXG4gIDE4OlxcdFxcdCAgc2F5IE0gIHRvIGNvbXBpbGUgaXQgYXMgYSBtb2R1bGUuIFRoZSBtb2R1bGUgd2lsbCBiZSBjYWxsZWRcXG4gIDE5OlxcdFxcdCAgdHJmNzk3MGEua28uXFxuICAyMDpcXHRcXG4gIDIxOlxcdGNvbmZpZyBORkNfTUVJX1BIWVxcbiAgMjI6XFx0XFx0dHJpc3RhdGUgXFxcIk1FSSBidXMgTkZDIGRldmljZSBzdXBwb3J0XFxcIlxcbiAgMjM6XFx0XFx0ZGVwZW5kcyBvbiBJTlRFTF9NRUkgXFx1MDAyNlxcdTAwMjYgTkZDX0hDSVxcbiAgMjQ6XFx0XFx0aGVscFxcbiAgMjU6XFx0XFx0ICBUaGlzIGFkZHMgc3VwcG9ydCB0byB1c2UgYW4gbWVpIGJ1cyBuZmMgZGV2aWNlLiBTZWxlY3QgdGhpcyBpZiB5b3VcXG4gIDI2OlxcdFxcdCAgd2lsbCB1c2UgYW4gSENJIE5GQyBkcml2ZXIgZm9yIGFuIE5GQyBjaGlwIGNvbm5lY3RlZCBiZWhpbmQgYW5cXG4gIDI3OlxcdFxcdCAgSW50ZWwncyBNYW5hZ2VtZW50IEVuZ2luZSBjaGlwLlxcbiAgMjg6XFx0XFxuICAyOTpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IE4uXFxuICAzMDpcXHRcXG4gIDMxOlxcdGNvbmZpZyBORkNfU0lNXFxuICAzMjpcXHRcXHR0cmlzdGF0ZSBcXFwiTkZDIGhhcmR3YXJlIHNpbXVsYXRvciBkcml2ZXJcXFwiXFxuICAzMzpcXHRcXHRkZXBlbmRzIG9uIE5GQ19ESUdJVEFMXFxuICAzNDpcXHRcXHRoZWxwXFxuICAzNTpcXHRcXHQgIFRoaXMgZHJpdmVyIGRlY2xhcmVzIHR3byB2aXJ0dWFsIE5GQyBkZXZpY2VzIHN1cHBvcnRpbmcgTkZDLURFUFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xM1QwNToxNzowNy43Mjc1NzkyOTNaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjoyMDM4NDg1NjgwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkRpdmluZyBpbnRvIHRoZSBUUkY3OTcwQSBEcml2ZXIqKlxuXG5Pa2F5LCBob2xkIG9uIGEgc2Vjb25kLiBCZWZvcmUgSSBnZXQgdG9vIGRlZXAgaW50byB0aGlzIHByb2JsZW0sIEkgbmVlZCB0byB0YWtlIGEgc3RlcCBiYWNrIGFuZCBnZXQgYSBiZXR0ZXIgcGljdHVyZSBvZiB0aGUgZHJpdmVyIGNvZGUuIEknbSBnb2luZyB0byBoZWFkIG92ZXIgdG8gYGRyaXZlcnMvbmZjL3RyZjc5NzBhLmNgIGFuZCBzcGVjaWZpY2FsbHkgZm9jdXMgb24gdGhlIGB0cmY3OTcwYV9zdGFydHVwYCBhbmQgYHRyZjc5NzBhX3Byb2JlYCBmdW5jdGlvbnMuIFRob3NlIGFyZSBsaWtlbHkgY3J1Y2lhbCBmb3IgaW5pdGlhbGl6YXRpb24gYW5kIGRldmljZSBkZXRlY3Rpb24sIHJlc3BlY3RpdmVseSwgYW5kIHVuZGVyc3RhbmRpbmcgdGhlaXIgaW50ZXJhY3Rpb24gd2lsbCBzaGVkIGxpZ2h0IG9uIHRoZSBvdmVyYWxsIHN0YXJ0dXAgc2VxdWVuY2UuXG5cbkxldCBtZSBzdGFydCBieSBkaXNzZWN0aW5nIGB0cmY3OTcwYV9zdGFydHVwYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgZXhhY3RseSAqaG93KiBhbmQgKndoZW4qIGl0J3MgY2FsbGVkLiBTZWVpbmcgdGhlIGNhbGwgc3RhY2sgd2lsbCBiZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgY29udHJvbCBmbG93IGFuZCBwb3RlbnRpYWwgcG9pbnRzIG9mIGZhaWx1cmUuIFRoaXMgd2lsbCBhbGxvdyBtZSB0byBwcm9wZXJseSBpc29sYXRlIHRoZSBwb3RlbnRpYWwgaXNzdWUgYXQgaGFuZC4gVW5kZXJzdGFuZGluZyB0aGlzIHN0YXJ0dXAgd2lsbCBiZSBpbnRlZ3JhbCB0byB1bmRlcnN0YW5kaW5nIHRoZSBmdWxsIHNjb3BlIG9mIHRoZSBkcml2ZXJzIGZ1bmN0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTE2NSwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY2LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTNUMDU6MTc6MDkuNzY2MDY4MDEzWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0MDM3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25mYy90cmY3OTcwYS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE5ODUsXG4gIFwiTGluZUNvdW50XCI6IDYwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjE5ODU6XFx0XFxuMTk4NjpcXHRcXHR0cmYtXFx1MDAzZXN0YXRlID0gVFJGNzk3MEFfU1RfUFdSX09GRjtcXG4xOTg3OlxcdFxcbjE5ODg6XFx0XFx0cmV0dXJuIHJldDtcXG4xOTg5OlxcdH1cXG4xOTkwOlxcdFxcbjE5OTE6XFx0c3RhdGljIGludCB0cmY3OTcwYV9zdGFydHVwKHN0cnVjdCB0cmY3OTcwYSAqdHJmKVxcbjE5OTI6XFx0e1xcbjE5OTM6XFx0XFx0aW50IHJldDtcXG4xOTk0OlxcdFxcbjE5OTU6XFx0XFx0cmV0ID0gdHJmNzk3MGFfcG93ZXJfdXAodHJmKTtcXG4xOTk2OlxcdFxcdGlmIChyZXQpXFxuMTk5NzpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbjE5OTg6XFx0XFxuMTk5OTpcXHRcXHRyZXQgPSB0cmY3OTcwYV91cGRhdGVfcnhfZ2Fpbl9yZWR1Y3Rpb24odHJmKTtcXG4yMDAwOlxcdFxcdGlmIChyZXQpIHtcXG4yMDAxOlxcdFxcdFxcdHRyZjc5NzBhX3Bvd2VyX2Rvd24odHJmKTtcXG4yMDAyOlxcdFxcdFxcdHJldHVybiByZXQ7XFxuMjAwMzpcXHRcXHR9XFxuMjAwNDpcXHRcXG4yMDA1OlxcdFxcdHBtX3J1bnRpbWVfc2V0X2FjdGl2ZSh0cmYtXFx1MDAzZWRldik7XFxuMjAwNjpcXHRcXHRwbV9ydW50aW1lX2VuYWJsZSh0cmYtXFx1MDAzZWRldik7XFxuMjAwNzpcXHRcXHRwbV9ydW50aW1lX21hcmtfbGFzdF9idXN5KHRyZi1cXHUwMDNlZGV2KTtcXG4yMDA4OlxcdFxcbjIwMDk6XFx0XFx0cmV0dXJuIDA7XFxuMjAxMDpcXHR9XFxuMjAxMTpcXHRcXG4yMDEyOlxcdHN0YXRpYyB2b2lkIHRyZjc5NzBhX3NodXRkb3duKHN0cnVjdCB0cmY3OTcwYSAqdHJmKVxcbjIwMTM6XFx0e1xcbjIwMTQ6XFx0XFx0c3dpdGNoICh0cmYtXFx1MDAzZXN0YXRlKSB7XFxuMjAxNTpcXHRcXHRjYXNlIFRSRjc5NzBBX1NUX1dBSVRfRk9SX1RYX0ZJRk86XFxuMjAxNjpcXHRcXHRjYXNlIFRSRjc5NzBBX1NUX1dBSVRfRk9SX1JYX0RBVEE6XFxuMjAxNzpcXHRcXHRjYXNlIFRSRjc5NzBBX1NUX1dBSVRfRk9SX1JYX0RBVEFfQ09OVDpcXG4yMDE4OlxcdFxcdGNhc2UgVFJGNzk3MEFfU1RfV0FJVF9UT19JU1NVRV9FT0Y6XFxuMjAxOTpcXHRcXHRjYXNlIFRSRjc5NzBBX1NUX0xJU1RFTklORzpcXG4yMDIwOlxcdFxcdFxcdHRyZjc5NzBhX3NlbmRfZXJyX3Vwc3RyZWFtKHRyZiwgLUVDQU5DRUxFRCk7XFxuMjAyMTpcXHRcXHRcXHRmYWxsdGhyb3VnaDtcXG4yMDIyOlxcdFxcdGNhc2UgVFJGNzk3MEFfU1RfSURMRTpcXG4yMDIzOlxcdFxcdGNhc2UgVFJGNzk3MEFfU1RfSURMRV9SWF9CTE9DS0VEOlxcbjIwMjQ6XFx0XFx0XFx0dHJmNzk3MGFfc3dpdGNoX3JmX29mZih0cmYpO1xcbjIwMjU6XFx0XFx0XFx0YnJlYWs7XFxuMjAyNjpcXHRcXHRkZWZhdWx0OlxcbjIwMjc6XFx0XFx0XFx0YnJlYWs7XFxuMjAyODpcXHRcXHR9XFxuMjAyOTpcXHRcXG4yMDMwOlxcdFxcdHBtX3J1bnRpbWVfZGlzYWJsZSh0cmYtXFx1MDAzZWRldik7XFxuMjAzMTpcXHRcXHRwbV9ydW50aW1lX3NldF9zdXNwZW5kZWQodHJmLVxcdTAwM2VkZXYpO1xcbjIwMzI6XFx0XFxuMjAzMzpcXHRcXHR0cmY3OTcwYV9wb3dlcl9kb3duKHRyZik7XFxuMjAzNDpcXHR9XFxuMjAzNTpcXHRcXG4yMDM2OlxcdHN0YXRpYyBpbnQgdHJmNzk3MGFfZ2V0X2F1dG9zdXNwZW5kX2RlbGF5KGNvbnN0IHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApXFxuMjAzNzpcXHR7XFxuMjAzODpcXHRcXHRpbnQgYXV0b3N1c3BlbmRfZGVsYXksIHJldDtcXG4yMDM5OlxcdFxcbjIwNDA6XFx0XFx0cmV0ID0gb2ZfcHJvcGVydHlfcmVhZF91MzIobnAsIFxcXCJhdXRvc3VzcGVuZC1kZWxheVxcXCIsIFxcdTAwMjZhdXRvc3VzcGVuZF9kZWxheSk7XFxuMjA0MTpcXHRcXHRpZiAocmV0KVxcbjIwNDI6XFx0XFx0XFx0YXV0b3N1c3BlbmRfZGVsYXkgPSBUUkY3OTcwQV9BVVRPU1VTUEVORF9ERUxBWTtcXG4yMDQzOlxcdFxcbjIwNDQ6XFx0XFx0cmV0dXJuIGF1dG9zdXNwZW5kX2RlbGF5O1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xM1QwNToxNzowOS43NjYyMTIzMjNaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6MjU3NzA0MTEzNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6XG5cbioqVHJhY2luZyB0aGUgT3JpZ2lucyBvZiBgdHJmNzk3MGFfc3RhcnR1cGAqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZXhlY3V0aW9uIGZsb3cgYXJvdW5kIHRoaXMgYHRyZjc5NzBhX3N0YXJ0dXBgIGZ1bmN0aW9uLiBNeSBmaXJzdCBpbnN0aW5jdCwgYXMgYWx3YXlzLCBpcyB0byB0cmFjZSBpdHMgY2FsbHMuIFdoZXJlIGlzIHRoaXMgZnVuY3Rpb24gYmVpbmcgaW52b2tlZCBmcm9tPyBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgaW5pdGlhdGluZyBjb25kaXRpb25zLCBhbnkgZGVwZW5kZW5jaWVzIGl0IGhhcywgYW5kIHdoYXQgdGhlIG92ZXJhbGwgc3lzdGVtIGJlaGF2aW9yIGlzIGF0IHRoYXQgcG9pbnQuIEknbGwgbmVlZCB0byB1c2UgbXkgdXN1YWwgdG9vbHMgLSBzdGF0aWMgYW5hbHlzaXMgb3IsIGlmIHRoZSBjb2RlYmFzZSBpcyBhbWVuYWJsZSwgZHluYW1pYyBkZWJ1Z2dpbmcg4oCTIHRvIHBpbnBvaW50IGV2ZXJ5IHNpbmdsZSBjYWxsIHNpdGUuIFRoYXQgd2F5LCBJIGNhbiBidWlsZCB1cCBhIGNvbXBsZXRlIHBpY3R1cmUgb2YgdGhlIHJvbGUgYHRyZjc5NzBhX3N0YXJ0dXBgIHBsYXlzIGluIHRoZSBicm9hZGVyIGFwcGxpY2F0aW9uIGFyY2hpdGVjdHVyZS4gVW5kZXJzdGFuZGluZyB0aGUgdXBzdHJlYW0gZGVwZW5kZW5jaWVzIGlzIGtleSB0byB1bmRlcnN0YW5kaW5nIGl0cyBwdXJwb3NlIGFuZCBwb3RlbnRpYWwgaW1wYWN0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDQyNiwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTNUMDU6MTc6MTIuMzQzMjU3MTI3WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MTQyMTc1MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0cmY3OTcwYV9zdGFydHVwXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmZjL3RyZjc5NzBhLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZmMvdHJmNzk3MGEuYz0xOTYxPXN0YXRpYyBpbnQgdHJmNzk3MGFfcG93ZXJfZG93bihzdHJ1Y3QgdHJmNzk3MGEgKnRyZilcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTk5MC1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE5OTE6c3RhdGljIGludCB0cmY3OTcwYV9zdGFydHVwKHN0cnVjdCB0cmY3OTcwYSAqdHJmKVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTk5Mi17XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jPTIwNDc9c3RhdGljIGludCB0cmY3OTcwYV9wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKVxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0yMTk1LVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MjE5NjpcXHRyZXQgPSB0cmY3OTcwYV9zdGFydHVwKHRyZik7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0yMTk3LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jPTIyNTY9c3RhdGljIGludCB0cmY3OTcwYV9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0yMjYzLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MjI2NDpcXHRyZXQgPSB0cmY3OTcwYV9zdGFydHVwKHRyZik7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0yMjY1LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xM1QwNToxNzoxMi4zOTQ2ODIzODlaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6MzA3NjYyNTI3MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGlua2luZyBpdDpcblxuKipBbmFseXppbmcgVFJGNzk3MEEgSW5pdGlhbGl6YXRpb24qKlxuXG5Pa2F5LCBzbyBJIHNlZSBgdHJmNzk3MGFfc3RhcnR1cGAgaXMgY2FsbGVkIGZyb20gdHdvIGRpc3RpbmN0IHBsYWNlczogYHRyZjc5NzBhX3Byb2JlYCBhbmQgYHRyZjc5NzBhX3Jlc3VtZWAuIFRoaXMgaW1tZWRpYXRlbHkgdGVsbHMgbWUgdGhlcmUncyBhbiBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZSBiZWluZyBwZXJmb3JtZWQgYXQgYm90aCB0aGUgaW5pdGlhbCBkZXZpY2UgZGlzY292ZXJ5IGFuZCBwb3dlci11cC9yZXN1bWUgc3RhZ2VzLiBUaGF0J3MgZ29vZCBhcmNoaXRlY3R1cmFsIHByYWN0aWNlOyBrZWVwcyB0aGluZ3MgY2xlYW4uIFJpZ2h0IG5vdywgSSBuZWVkIHRvIGZvY3VzIG9uIGhvdyB0aGUgZHJpdmVyIGhhbmRsZXMgdGhlIGluaXRpYWwgcHJvYmluZywgc28gbGV0J3MgZGlnIGludG8gYHRyZjc5NzBhX3Byb2JlYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCdzIGdvaW5nIG9uIGR1cmluZyB0aGF0IGZpcnN0IGNhbGwgdG8gYHRyZjc5NzBhX3N0YXJ0dXBgLiBJdCdzIGxpa2VseSBzZXR0aW5nIHVwIHRoZSBjb3JlIGNvbmZpZ3VyYXRpb24sIGluaXRpYWxpemluZyB0aGUgaGFyZHdhcmUsIGFuZCBwZXJoYXBzIGRvaW5nIHNvbWUgYmFzaWMgZGV2aWNlIGlkZW50aWZpY2F0aW9uLiBVbmRlcnN0YW5kaW5nIHRoZSBpbml0aWFsIHByb2JlIHNlcXVlbmNlIGlzIGNyaXRpY2FsIGZvciB1bmRlcnN0YW5kaW5nIGRldmljZSBlbnVtZXJhdGlvbiBhbmQgcHJvcGVyIGRyaXZlciBsb2FkaW5nLiBJIGJldCBhIGNhcmVmdWwgYW5hbHlzaXMgaGVyZSB3aWxsIHNoZWQgbGlnaHQgb24gdGhlIGRldmljZSdzIGRlZmF1bHQgc3RhdGUgYW5kIHdoYXQgaXQgZXhwZWN0cyB0byBkbyBmcm9tIHRoZSBzdGFydC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjEwNjAsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xM1QwNToxNzoxNS40NzEzMDk3MjJaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTgzNTMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmZjL3RyZjc5NzBhLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMjA0NSxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjIwNDU6XFx0fVxcbjIwNDY6XFx0XFxuMjA0NzpcXHRzdGF0aWMgaW50IHRyZjc5NzBhX3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXFxuMjA0ODpcXHR7XFxuMjA0OTpcXHRcXHRjb25zdCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wID0gc3BpLVxcdTAwM2VkZXYub2Zfbm9kZTtcXG4yMDUwOlxcdFxcdHN0cnVjdCB0cmY3OTcwYSAqdHJmO1xcbjIwNTE6XFx0XFx0aW50IHV2b2x0cywgYXV0b3N1c3BlbmRfZGVsYXksIHJldDtcXG4yMDUyOlxcdFxcdHUzMiBjbGtfZnJlcSA9IFRSRjc5NzBBXzEzTUhaX0NMT0NLX0ZSRVFVRU5DWTtcXG4yMDUzOlxcdFxcdHUzMiByeF9nYWluX3JlZHVjdGlvbl9kYjtcXG4yMDU0OlxcdFxcbjIwNTU6XFx0XFx0aWYgKCFucCkge1xcbjIwNTY6XFx0XFx0XFx0ZGV2X2VycihcXHUwMDI2c3BpLVxcdTAwM2VkZXYsIFxcXCJObyBEZXZpY2UgVHJlZSBlbnRyeVxcXFxuXFxcIik7XFxuMjA1NzpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4yMDU4OlxcdFxcdH1cXG4yMDU5OlxcdFxcbjIwNjA6XFx0XFx0dHJmID0gZGV2bV9remFsbG9jKFxcdTAwMjZzcGktXFx1MDAzZWRldiwgc2l6ZW9mKCp0cmYpLCBHRlBfS0VSTkVMKTtcXG4yMDYxOlxcdFxcdGlmICghdHJmKVxcbjIwNjI6XFx0XFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuMjA2MzpcXHRcXG4yMDY0OlxcdFxcdHRyZi1cXHUwMDNlc3RhdGUgPSBUUkY3OTcwQV9TVF9QV1JfT0ZGO1xcbjIwNjU6XFx0XFx0dHJmLVxcdTAwM2VkZXYgPSBcXHUwMDI2c3BpLVxcdTAwM2VkZXY7XFxuMjA2NjpcXHRcXHR0cmYtXFx1MDAzZXNwaSA9IHNwaTtcXG4yMDY3OlxcdFxcbjIwNjg6XFx0XFx0c3BpLVxcdTAwM2Vtb2RlID0gU1BJX01PREVfMTtcXG4yMDY5OlxcdFxcdHNwaS1cXHUwMDNlYml0c19wZXJfd29yZCA9IDg7XFxuMjA3MDpcXHRcXG4yMDcxOlxcdFxcdHJldCA9IHNwaV9zZXR1cChzcGkpO1xcbjIwNzI6XFx0XFx0aWYgKHJldCBcXHUwMDNjIDApIHtcXG4yMDczOlxcdFxcdFxcdGRldl9lcnIodHJmLVxcdTAwM2VkZXYsIFxcXCJDYW4ndCBzZXQgdXAgU1BJIENvbW11bmljYXRpb25cXFxcblxcXCIpO1xcbjIwNzQ6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4yMDc1OlxcdFxcdH1cXG4yMDc2OlxcdFxcbjIwNzc6XFx0XFx0aWYgKG9mX3Byb3BlcnR5X3JlYWRfYm9vbChucCwgXFxcImlycS1zdGF0dXMtcmVhZC1xdWlya1xcXCIpKVxcbjIwNzg6XFx0XFx0XFx0dHJmLVxcdTAwM2VxdWlya3MgfD0gVFJGNzk3MEFfUVVJUktfSVJRX1NUQVRVU19SRUFEO1xcbjIwNzk6XFx0XFxuMjA4MDpcXHRcXHQvKiBUaGVyZSBhcmUgdHdvIGVuYWJsZSBwaW5zIC0gb25seSBFTiBtdXN0IGJlIHByZXNlbnQgaW4gdGhlIERUICovXFxuMjA4MTpcXHRcXHR0cmYtXFx1MDAzZWVuX2dwaW9kID0gZGV2bV9ncGlvZF9nZXRfaW5kZXgodHJmLVxcdTAwM2VkZXYsIFxcXCJ0aSxlbmFibGVcXFwiLCAwLFxcbjIwODI6XFx0XFx0XFx0XFx0XFx0XFx0ICAgICBHUElPRF9PVVRfTE9XKTtcXG4yMDgzOlxcdFxcdGlmIChJU19FUlIodHJmLVxcdTAwM2Vlbl9ncGlvZCkpIHtcXG4yMDg0OlxcdFxcdFxcdGRldl9lcnIodHJmLVxcdTAwM2VkZXYsIFxcXCJObyBFTiBHUElPIHByb3BlcnR5XFxcXG5cXFwiKTtcXG4yMDg1OlxcdFxcdFxcdHJldHVybiBQVFJfRVJSKHRyZi1cXHUwMDNlZW5fZ3Bpb2QpO1xcbjIwODY6XFx0XFx0fVxcbjIwODc6XFx0XFxuMjA4ODpcXHRcXHR0cmYtXFx1MDAzZWVuMl9ncGlvZCA9IGRldm1fZ3Bpb2RfZ2V0X2luZGV4X29wdGlvbmFsKHRyZi1cXHUwMDNlZGV2LCBcXFwidGksZW5hYmxlXFxcIiwgMSxcXG4yMDg5OlxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICAgICBHUElPRF9PVVRfTE9XKTtcXG4yMDkwOlxcdFxcdGlmICghdHJmLVxcdTAwM2VlbjJfZ3Bpb2QpIHtcXG4yMDkxOlxcdFxcdFxcdGRldl9pbmZvKHRyZi1cXHUwMDNlZGV2LCBcXFwiTm8gRU4yIEdQSU8gcHJvcGVydHlcXFxcblxcXCIpO1xcbjIwOTI6XFx0XFx0fSBlbHNlIGlmIChJU19FUlIodHJmLVxcdTAwM2VlbjJfZ3Bpb2QpKSB7XFxuMjA5MzpcXHRcXHRcXHRkZXZfZXJyKHRyZi1cXHUwMDNlZGV2LCBcXFwiRXJyb3IgZ2V0dGluZyBFTjIgR1BJTyBwcm9wZXJ0eTogJWxkXFxcXG5cXFwiLFxcbjIwOTQ6XFx0XFx0XFx0XFx0UFRSX0VSUih0cmYtXFx1MDAzZWVuMl9ncGlvZCkpO1xcbjIwOTU6XFx0XFx0XFx0cmV0dXJuIFBUUl9FUlIodHJmLVxcdTAwM2VlbjJfZ3Bpb2QpO1xcbjIwOTY6XFx0XFx0fSBlbHNlIGlmIChvZl9wcm9wZXJ0eV9yZWFkX2Jvb2wobnAsIFxcXCJlbjItcmYtcXVpcmtcXFwiKSkge1xcbjIwOTc6XFx0XFx0XFx0dHJmLVxcdTAwM2VxdWlya3MgfD0gVFJGNzk3MEFfUVVJUktfRU4yX01VU1RfU1RBWV9MT1c7XFxuMjA5ODpcXHRcXHR9XFxuMjA5OTpcXHRcXG4yMTAwOlxcdFxcdG9mX3Byb3BlcnR5X3JlYWRfdTMyKG5wLCBcXFwiY2xvY2stZnJlcXVlbmN5XFxcIiwgXFx1MDAyNmNsa19mcmVxKTtcXG4yMTAxOlxcdFxcdGlmICgoY2xrX2ZyZXEgIT0gVFJGNzk3MEFfMjdNSFpfQ0xPQ0tfRlJFUVVFTkNZKSBcXHUwMDI2XFx1MDAyNlxcbjIxMDI6XFx0XFx0ICAgIChjbGtfZnJlcSAhPSBUUkY3OTcwQV8xM01IWl9DTE9DS19GUkVRVUVOQ1kpKSB7XFxuMjEwMzpcXHRcXHRcXHRkZXZfZXJyKHRyZi1cXHUwMDNlZGV2LFxcbjIxMDQ6XFx0XFx0XFx0XFx0XFxcImNsb2NrLWZyZXF1ZW5jeSAoJXUgSHopIHVuc3VwcG9ydGVkXFxcXG5cXFwiLCBjbGtfZnJlcSk7XFxuMjEwNTpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4yMTA2OlxcdFxcdH1cXG4yMTA3OlxcdFxcbjIxMDg6XFx0XFx0aWYgKGNsa19mcmVxID09IFRSRjc5NzBBXzI3TUhaX0NMT0NLX0ZSRVFVRU5DWSkge1xcbjIxMDk6XFx0XFx0XFx0dHJmLVxcdTAwM2Vtb2R1bGF0b3Jfc3lzX2Nsa19jdHJsID0gVFJGNzk3MEFfTU9EVUxBVE9SXzI3TUhaO1xcbjIxMTA6XFx0XFx0XFx0ZGV2X2RiZyh0cmYtXFx1MDAzZWRldiwgXFxcInRyZjc5NzBhIGNvbmZpZ3VyZWQgZm9yIDI3TUh6IGNyeXN0YWxcXFxcblxcXCIpO1xcbjIxMTE6XFx0XFx0fSBlbHNlIHtcXG4yMTEyOlxcdFxcdFxcdHRyZi1cXHUwMDNlbW9kdWxhdG9yX3N5c19jbGtfY3RybCA9IDA7XFxuMjExMzpcXHRcXHR9XFxuMjExNDpcXHRcXG4yMTE1OlxcdFxcdGlmIChvZl9wcm9wZXJ0eV9yZWFkX3UzMihucCwgXFxcInRpLHJ4LWdhaW4tcmVkdWN0aW9uLWRiXFxcIiwgXFx1MDAyNnJ4X2dhaW5fcmVkdWN0aW9uX2RiKSA9PSAwKSB7XFxuMjExNjpcXHRcXHRcXHRpZiAocnhfZ2Fpbl9yZWR1Y3Rpb25fZGIgXFx1MDAzZSBUUkY3OTcwQV9SWF9HQUlOX1JFRFVDVElPTl9NQVhfREIpIHtcXG4yMTE3OlxcdFxcdFxcdFxcdGRldl93YXJuKHRyZi1cXHUwMDNlZGV2LCBcXFwiUlggR2FpbiByZWR1Y3Rpb24gdG9vIGhpZ2guIElnbm9yZWRcXFxcblxcXCIpO1xcbjIxMTg6XFx0XFx0XFx0fSBlbHNlIGlmICgocnhfZ2Fpbl9yZWR1Y3Rpb25fZGIgJSBUUkY3OTcwQV9SWF9HQUlOX1JFRFVDVElPTl9EQl9QRVJfTFNCKSkge1xcbjIxMTk6XFx0XFx0XFx0XFx0ZGV2X3dhcm4odHJmLVxcdTAwM2VkZXYsIFxcXCJSWCBHYWluIG11c3QgYmUgc2V0IGluIDUgZEIgaW5jcmVtZW50cy4gSWdub3JlZFxcXFxuXFxcIik7XFxuMjEyMDpcXHRcXHRcXHR9IGVsc2Uge1xcbjIxMjE6XFx0XFx0XFx0XFx0ZGV2X2RiZyh0cmYtXFx1MDAzZWRldiwgXFxcIlJYIGdhaW4gc2V0IHRvIC0ldWRCXFxcXG5cXFwiLCByeF9nYWluX3JlZHVjdGlvbl9kYik7XFxuMjEyMjpcXHRcXHRcXHRcXHR0cmYtXFx1MDAzZXJ4X2dhaW5fcmVkdWN0aW9uID0gKChyeF9nYWluX3JlZHVjdGlvbl9kYiAvXFxuMjEyMzpcXHRcXHRcXHRcXHRcXHRUUkY3OTcwQV9SWF9HQUlOX1JFRFVDVElPTl9EQl9QRVJfTFNCKSBcXHUwMDNjXFx1MDAzY1xcbjIxMjQ6XFx0XFx0XFx0XFx0XFx0VFJGNzk3MEFfUlhfU1BFQ0lBTF9TRVRUSU5HU19HRF9TSElGVCk7XFxuMjEyNTpcXHRcXHRcXHRcXHR0cmYtXFx1MDAzZWN1c3RvbV9yeF9nYWluX3JlZHVjdGlvbiA9IHRydWU7XFxuMjEyNjpcXHRcXHRcXHR9XFxuMjEyNzpcXHRcXHR9XFxuMjEyODpcXHRcXG4yMTI5OlxcdFxcdHJldCA9IGRldm1fcmVxdWVzdF90aHJlYWRlZF9pcnEodHJmLVxcdTAwM2VkZXYsIHNwaS1cXHUwMDNlaXJxLCBOVUxMLFxcbjIxMzA6XFx0XFx0XFx0XFx0XFx0XFx0dHJmNzk3MGFfaXJxLFxcbjIxMzE6XFx0XFx0XFx0XFx0XFx0XFx0SVJRRl9UUklHR0VSX1JJU0lORyB8IElSUUZfT05FU0hPVCxcXG4yMTMyOlxcdFxcdFxcdFxcdFxcdFxcdFxcXCJ0cmY3OTcwYVxcXCIsIHRyZik7XFxuMjEzMzpcXHRcXHRpZiAocmV0KSB7XFxuMjEzNDpcXHRcXHRcXHRkZXZfZXJyKHRyZi1cXHUwMDNlZGV2LCBcXFwiQ2FuJ3QgcmVxdWVzdCBJUlEjJWQ6ICVkXFxcXG5cXFwiLCBzcGktXFx1MDAzZWlycSwgcmV0KTtcXG4yMTM1OlxcdFxcdFxcdHJldHVybiByZXQ7XFxuMjEzNjpcXHRcXHR9XFxuMjEzNzpcXHRcXG4yMTM4OlxcdFxcdG11dGV4X2luaXQoXFx1MDAyNnRyZi1cXHUwMDNlbG9jayk7XFxuMjEzOTpcXHRcXHRJTklUX0RFTEFZRURfV09SSyhcXHUwMDI2dHJmLVxcdTAwM2V0aW1lb3V0X3dvcmssIHRyZjc5NzBhX3RpbWVvdXRfd29ya19oYW5kbGVyKTtcXG4yMTQwOlxcdFxcbjIxNDE6XFx0XFx0dHJmLVxcdTAwM2V2aW5fcmVndWxhdG9yID0gZGV2bV9yZWd1bGF0b3JfZ2V0KFxcdTAwMjZzcGktXFx1MDAzZWRldiwgXFxcInZpblxcXCIpO1xcbjIxNDI6XFx0XFx0aWYgKElTX0VSUih0cmYtXFx1MDAzZXZpbl9yZWd1bGF0b3IpKSB7XFxuMjE0MzpcXHRcXHRcXHRyZXQgPSBQVFJfRVJSKHRyZi1cXHUwMDNldmluX3JlZ3VsYXRvcik7XFxuMjE0NDpcXHRcXHRcXHRkZXZfZXJyKHRyZi1cXHUwMDNlZGV2LCBcXFwiQ2FuJ3QgZ2V0IFZJTiByZWd1bGF0b3I6ICVkXFxcXG5cXFwiLCByZXQpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xM1QwNToxNzoxNS40NzE0OTUyOTJaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6NDM3MDkyODM0NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFRSRjc5NzBBIFByb2JlIGluIGEgVmlydHVhbGl6ZWQgQ29udGV4dCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYHRyZjc5NzBhYCBkcml2ZXIgY29kZSBhbmQgdGhlIHByb2JlIGZ1bmN0aW9uLiBUaGUgZmlyc3QgdGhpbmcgdGhhdCBqdW1wcyBvdXQgaXMgdGhhdCBjaGVjayBvbiBsaW5lIDIwNTUsIHRoZSBgaWYgKCFucClgIHdoaWNoIGlzIGNoZWNraW5nIGZvciBhIERldmljZSBUcmVlIGVudHJ5LiBJdCBzZWVtcyBsaWtlIHRoZSBjb2RlIGlzIGV4cGVjdGluZyBhIERldmljZSBUcmVlIG5vZGUsIGluZGljYXRlZCBieSBgbnBgLiBJIHNlZSB0aGF0IHRoZSBjb2RlIGlzIGF0dGVtcHRpbmcgdG8gZ2V0IGEgYHRpLGVuYWJsZWAgR1BJTywgYW5kIGEgcmVndWxhdG9yLCBzdWdnZXN0aW5nIGEgZGVwZW5kZW5jeSBvbiB0aGUgZGV2aWNlIHRyZWUgdG8gZGVmaW5lIGhhcmR3YXJlIHJlc291cmNlcy5cblxuTXkgbWFpbiBjb25jZXJuIGlzIHdoZXRoZXIgdGhpcyBpcyBnb2luZyB0byB3b3JrIGluIGEgc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIENhbiB0aGlzIGV2ZXIgYmUgcHJvYmVkIGluIHNvbWV0aGluZyBsaWtlIFFFTVUgb3IgR29vZ2xlIENvbXB1dGUgRW5naW5lLCB3aGljaCB0eXBpY2FsbHkgcnVuIG9uIGFtZDY0P1xuXG5PbiBhbiBhbWQ2NCBtYWNoaW5lLCBEZXZpY2UgVHJlZSBpc24ndCBub3JtYWxseSB1c2VkLiB4ODYgYW5kIGFtZDY0IHN5c3RlbXMgdHlwaWNhbGx5IGJvb3QgdmlhIEFDUEkgb3IgYSBzdGFuZGFyZCBCSU9TL1VFRkkgY29uZmlndXJhdGlvbi4gRGV2aWNlIFRyZWUgaXMgZmFyIG1vcmUgY29tbW9uIGluIEFSTSwgUklTQy1WLCBNSVBTIGFuZCBzaW1pbGFyIGVtYmVkZGVkIGFyY2hpdGVjdHVyZXMuXG5cbkV2ZW4gKmlmKiBEZXZpY2UgVHJlZSBjb3VsZCBiZSBsb2FkZWQgc29tZWhvdyBpbnRvIGEgUUVNVSBpbnN0YW5jZSBvbiBhbWQ2NCwgaXMgdGhlIFRSRjc5NzBBIGRldmljZSBvciBTUEkgY29udHJvbGxlciBldmVuICphdmFpbGFibGUqIGluIFFFTVU/IE9yIGFyZSB3ZSBnb2luZyB0byBuZWVkIHNvbWUga2luZCBvZiBTUEkgZW11bGF0aW9uIG9yIHNvZnR3YXJlIFNQSSBpbXBsZW1lbnRhdGlvbiBpbiB0aGUgTGludXgga2VybmVsP1xuXG5JIG5lZWQgdG8gcXVpY2tseSBjaGVjay4gTGV0J3Mgc2VlIGlmIHRoZXJlIGFyZSBhbnkgZW11bGF0ZWQgU1BJIGNvbnRyb2xsZXJzIG9yIHZpcnR1YWwgU1BJIGRldmljZXMgZXhwb3NlZCBpbiBRRU1VIG9yIHN5emthbGxlci4gSSBuZWVkIHRvIHNlYXJjaCB0aGUgc3l6a2FsbGVyIGNvbmZpZ3VyYXRpb24gYW5kIHRoZSBrZXJuZWwgc291cmNlIGZvciBhbnkgbWVudGlvbnMgb2YgXCJzcGlcIiBvciBzaW1pbGFyIHRlcm1zIHRvIHNlZSB3aGF0IEkgY2FuIGZpbmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzMzgzLCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzU5LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTNUMDU6MTc6MTkuODQyNDI1NTU3WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTc2MzM5ODc1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInRyZjc5NzBhXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgODI1IGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L25mYy90aSx0cmY3OTcwYS55YW1sLTMtLS0tXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9uZmMvdGksdHJmNzk3MGEueWFtbDo0OiRpZDogaHR0cDovL2RldmljZXRyZWUub3JnL3NjaGVtYXMvbmV0L25mYy90aSx0cmY3OTcwYS55YW1sI1xcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbmZjL3RpLHRyZjc5NzBhLnlhbWwtNS0kc2NoZW1hOiBodHRwOi8vZGV2aWNldHJlZS5vcmcvbWV0YS1zY2hlbWFzL2NvcmUueWFtbCNcXG4tLVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbmZjL3RpLHRyZjc5NzBhLnlhbWw9MTM9cHJvcGVydGllczpcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L25mYy90aSx0cmY3OTcwYS55YW1sLTE0LSAgY29tcGF0aWJsZTpcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L25mYy90aSx0cmY3OTcwYS55YW1sOjE1OiAgICBjb25zdDogdGksdHJmNzk3MGFcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L25mYy90aSx0cmY3OTcwYS55YW1sLTE2LVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9uZmMvdGksdHJmNzk3MGEueWFtbC0yMy0gICAgZGVzY3JpcHRpb246IHxcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L25mYy90aSx0cmY3OTcwYS55YW1sOjI0OiAgICAgIFNldCB0byBzcGVjaWZ5IHRoYXQgdGhlIGlucHV0IGZyZXF1ZW5jeSB0byB0aGUgdHJmNzk3MGEgaXMgMTM1NjAwMDBIeiBvclxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbmZjL3RpLHRyZjc5NzBhLnlhbWwtMjUtICAgICAgMjcxMjAwMDBIelxcbi0tXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9uZmMvdGksdHJmNzk3MGEueWFtbC0yOS0gICAgZGVzY3JpcHRpb246IHxcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L25mYy90aSx0cmY3OTcwYS55YW1sOjMwOiAgICAgIFNwZWNpZnkgdGhhdCB0aGUgdHJmNzk3MGEgYmVpbmcgdXNlZCBoYXMgdGhlIFxcXCJFTjIgUkZcXFwiIGVycmF0dW1cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L25mYy90aSx0cmY3OTcwYS55YW1sLTMxLVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9uZmMvdGksdHJmNzk3MGEueWFtbC0zNy0gICAgZGVzY3JpcHRpb246IHxcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L25mYy90aSx0cmY3OTcwYS55YW1sOjM4OiAgICAgIFNwZWNpZnkgdGhhdCB0aGUgdHJmNzk3MGEgYmVpbmcgdXNlZCBoYXMgdGhlIFxcXCJJUlEgU3RhdHVzIFJlYWRcXFwiIGVycmF0dW1cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L25mYy90aSx0cmY3OTcwYS55YW1sLTM5LVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9uZmMvdGksdHJmNzk3MGEueWFtbD03Nz1leGFtcGxlczpcXG4tLVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbmZjL3RpLHRyZjc5NzBhLnlhbWwtODYtICAgICAgICBuZmNAMCB7XFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9uZmMvdGksdHJmNzk3MGEueWFtbDo4NzogICAgICAgICAgICBjb21wYXRpYmxlID0gXFxcInRpLHRyZjc5NzBhXFxcIjtcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L25mYy90aSx0cmY3OTcwYS55YW1sLTg4LSAgICAgICAgICAgIHJlZyA9IFxcdTAwM2MwXFx1MDAzZTtcXG4tLVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbmZjL3RpLHRyZjc5NzBhLnlhbWwtOTAtICAgICAgICAgICAgcGluY3RybC1uYW1lcyA9IFxcXCJkZWZhdWx0XFxcIjtcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L25mYy90aSx0cmY3OTcwYS55YW1sOjkxOiAgICAgICAgICAgIHBpbmN0cmwtMCA9IFxcdTAwM2NcXHUwMDI2dHJmNzk3MGFfZGVmYXVsdFxcdTAwM2U7XFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9uZmMvdGksdHJmNzk3MGEueWFtbC05Mi0gICAgICAgICAgICBzcGktbWF4LWZyZXF1ZW5jeSA9IFxcdTAwM2MyMDAwMDAwXFx1MDAzZTtcXG4tLVxcbk1BSU5UQUlORVJTPTI3NDg0PVM6XFx0U3VwcG9ydGVkXFxuTUFJTlRBSU5FUlM6Mjc0ODU6RjpcXHREb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L25mYy90aSx0cmY3OTcwYS55YW1sXFxuTUFJTlRBSU5FUlM6Mjc0ODY6RjpcXHRkcml2ZXJzL25mYy90cmY3OTcwYS5jXFxuTUFJTlRBSU5FUlMtMjc0ODctXFxuLS1cXG5hcmNoL2FybS9ib290L2R0cy9ueHAvaW14L2lteDZkbC1wcnRydnQuZHRzPTYwPVxcdG5mY0AwIHtcXG5hcmNoL2FybS9ib290L2R0cy9ueHAvaW14L2lteDZkbC1wcnRydnQuZHRzOjYxOlxcdFxcdGNvbXBhdGlibGUgPSBcXFwidGksdHJmNzk3MGFcXFwiO1xcbmFyY2gvYXJtL2Jvb3QvZHRzL254cC9pbXgvaW14NmRsLXBydHJ2dC5kdHMtNjItXFx0XFx0cmVnID0gXFx1MDAzYzBcXHUwMDNlO1xcbi0tXFxuZHJpdmVycy9uZmMvS2NvbmZpZz05PWNvbmZpZyBORkNfVFJGNzk3MEFcXG4tLVxcbmRyaXZlcnMvbmZjL0tjb25maWctMTgtXFx0ICBzYXkgTSAgdG8gY29tcGlsZSBpdCBhcyBhIG1vZHVsZS4gVGhlIG1vZHVsZSB3aWxsIGJlIGNhbGxlZFxcbmRyaXZlcnMvbmZjL0tjb25maWc6MTk6XFx0ICB0cmY3OTcwYS5rby5cXG5kcml2ZXJzL25mYy9LY29uZmlnLTIwLVxcbi0tXFxuZHJpdmVycy9uZmMvTWFrZWZpbGU9MTM9b2JqLSQoQ09ORklHX05GQ19NUlZMKVxcdFxcdCs9IG5mY21ydmwvXFxuZHJpdmVycy9uZmMvTWFrZWZpbGU6MTQ6b2JqLSQoQ09ORklHX05GQ19UUkY3OTcwQSlcXHQrPSB0cmY3OTcwYS5vXFxuZHJpdmVycy9uZmMvTWFrZWZpbGUtMTUtb2JqLSQoQ09ORklHX05GQ19TVDIxTkZDQSkgIFxcdCs9IHN0MjFuZmNhL1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0yNy1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjI4Oi8qIFRoZXJlIGFyZSAzIHdheXMgdGhlIGhvc3QgY2FuIGNvbW11bmljYXRlIHdpdGggdGhlIHRyZjc5NzBhOlxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMjktICogcGFyYWxsZWwgbW9kZSwgU1BJIHdpdGggU2xhdmUgU2VsZWN0IChTUykgbW9kZSwgYW5kIFNQSSB3aXRob3V0XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTMxLSAqXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzozMjogKiBUaGUgdHJmNzk3MGEgaXMgdmVyeSB0aW1pbmcgc2Vuc2l0aXZlIGFuZCB0aGUgVklOLCBFTjIsIGFuZCBFTlxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMzMtICogcGlucyBtdXN0IGFzc2VydGVkIGluIHRoYXQgb3JkZXIgYW5kIHdpdGggc3BlY2lmaWMgZGVsYXlzIGluIGJldHdlZW4uXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTM1LSAqIGNvbmZpcm1lZCB0byB3b3JrIHdpdGggdGhpcyBkcml2ZXIuICBUaGVyZSBpcyBhIGJ1ZyB3aXRoIHRoZSBjdXJyZW50XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzozNjogKiB2ZXJzaW9uIG9mIHRoZSB0cmY3OTcwYSB0aGF0IHJlcXVpcmVzIHRoYXQgRU4yIHJlbWFpbiBsb3cgbm8gbWF0dGVyXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0zNy0gKiB3aGF0LiAgSWYgaXQgZ29lcyBoaWdoLCBpdCB3aWxsIGdlbmVyYXRlIGFuIFJGIGZpZWxkIGV2ZW4gd2hlbiBpblxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0zOS0gKiB3aGVuIEVOMiBpcyBsZWZ0IGxvdy4gIFRoZSAnZW4yLXJmLXF1aXJrJyBkZXZpY2UgdHJlZSBwcm9wZXJ0eVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NDA6ICogaW5kaWNhdGVzIHRoYXQgdHJmNzk3MGEgY3VycmVudGx5IGJlaW5nIHVzZWQgaGFzIHRoZSBlcnJhdHVtIGFuZFxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNDEtICogdGhhdCBFTjIgbXVzdCBiZSBrZXB0IGxvdy5cXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNDQtICogVGltZW91dHMgYXJlIHJlcXVpcmVkIHNvIHRoaW5ncyBkb24ndCBoYW5nIHdoZW4gdGhlcmUgaXMgbm8gcmVzcG9uc2VcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjQ1OiAqIGZyb20gdGhlIHRyZjc5NzBhIChvciB0YWcpLiAgVXNpbmcgdGhpcyBtZWNoYW5pc20gY3JlYXRlcyBhIHJhY2Ugd2l0aFxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNDYtICogaW50ZXJydXB0cywgaG93ZXZlci4gIFRoYXQgaXMsIGFuIGludGVycnVwdCBhbmQgYSB0aW1lb3V0IGNvdWxkIG9jY3VyXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTYwLSAqIHRoZSBlbnRpcmUgYW50aWNvbGxpc2lvbiBwcm9jZWR1cmUgYWdhaW4gYnV0IHRoZSBkaWdpdGFsIGxheWVyIGRvZXNuJ3RcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjYxOiAqIHN1cHBvcnQgdGhhdC4gIFNvLCBpZiBhbiBhYm9ydCBpcyByZWNlaXZlZCBiZWZvcmUgdHJmNzk3MGFfc2VuZF9jbWQoKVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNjItICogaGFzIHNlbnQgdGhlIGNvbW1hbmQgdG8gdGhlIHRhZywgaXQgc2ltcGx5IHJldHVybnMgLUVDQU5DRUxFRC4gIElmIHRoZVxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05Ni0gKiB3aGVuIHRoZSBmcmFtaW5nIGlzICdORkNfRElHSVRBTF9GUkFNSU5HX05GQ0FfVDJUJy4gIFRoaXMgaXMgZG9uZSBieVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6OTc6ICogdGhlIHRyZjc5NzBhX3Blcl9jbWRfY29uZmlnKCkgcm91dGluZS5cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTk4LSAqXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE0NC0vKiBRdWlya3MgKi9cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE0NTovKiBFcnJhdHVtOiBXaGVuIHJlYWRpbmcgSVJRIFN0YXR1cyByZWdpc3RlciBvbiB0cmY3OTcwYSwgd2UgbXVzdCBpc3N1ZSBhXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNDYtICogcmVhZCBjb250aW51b3VzIGNvbW1hbmQgZm9yIElSUSBTdGF0dXMgYW5kIENvbGxpc2lvbiBQb3NpdGlvbiByZWdpc3RlcnMuXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTQxNS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjQxNjplbnVtIHRyZjc5NzBhX3N0YXRlIHtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTQxNy1cXHRUUkY3OTcwQV9TVF9QV1JfT0ZGLFxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy00MjktXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo0MzA6c3RydWN0IHRyZjc5NzBhIHtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjQzMTpcXHRlbnVtIHRyZjc5NzBhX3N0YXRlXFx0XFx0c3RhdGU7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy00MzItXFx0c3RydWN0IGRldmljZVxcdFxcdFxcdCpkZXY7XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTQ2NS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjQ2NjpzdGF0aWMgaW50IHRyZjc5NzBhX2NtZChzdHJ1Y3QgdHJmNzk3MGEgKnRyZiwgdTggb3Bjb2RlKVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNDY3LXtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNDc5LVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NDgwOnN0YXRpYyBpbnQgdHJmNzk3MGFfcmVhZChzdHJ1Y3QgdHJmNzk3MGEgKnRyZiwgdTggcmVnLCB1OCAqdmFsKVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNDgxLXtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNDk0LVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NDk1OnN0YXRpYyBpbnQgdHJmNzk3MGFfcmVhZF9jb250KHN0cnVjdCB0cmY3OTcwYSAqdHJmLCB1OCByZWcsIHU4ICpidWYsXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy00OTYtXFx0XFx0XFx0ICAgICAgc2l6ZV90IGxlbilcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNTIzLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NTI0OnN0YXRpYyBpbnQgdHJmNzk3MGFfd3JpdGUoc3RydWN0IHRyZjc5NzBhICp0cmYsIHU4IHJlZywgdTggdmFsKVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNTI1LXtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNTM4LVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NTM5OnN0YXRpYyBpbnQgdHJmNzk3MGFfcmVhZF9pcnFzdGF0dXMoc3RydWN0IHRyZjc5NzBhICp0cmYsIHU4ICpzdGF0dXMpXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy01NDAte1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy01NjItXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo1NjM6c3RhdGljIGludCB0cmY3OTcwYV91cGRhdGVfcnhfZ2Fpbl9yZWR1Y3Rpb24oc3RydWN0IHRyZjc5NzBhICp0cmYpXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy01NjQte1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy01NzAtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo1NzE6XFx0cmV0ID0gdHJmNzk3MGFfcmVhZCh0cmYsIFRSRjc5NzBBX1JYX1NQRUNJQUxfU0VUVElOR1MsIFxcdTAwMjZyZWcpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNTcyLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTU3Ni1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjU3NzpcXHRyZXQgPSB0cmY3OTcwYV93cml0ZSh0cmYsIFRSRjc5NzBBX1JYX1NQRUNJQUxfU0VUVElOR1MsIHJlZyk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy01NzgtXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTU4MS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjU4MjpzdGF0aWMgaW50IHRyZjc5NzBhX3VwZGF0ZV9pc29fY3RybF9yZWdpc3RlcihzdHJ1Y3QgdHJmNzk3MGEgKnRyZiwgdTggaXNvX2N0cmwpXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy01ODMte1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy01ODUtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo1ODY6XFx0cmV0ID0gdHJmNzk3MGFfd3JpdGUodHJmLCBUUkY3OTcwQV9JU09fQ1RSTCwgaXNvX2N0cmwpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNTg3LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTU5Mi1cXHQgKi9cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjU5MzpcXHRyZXQgPSB0cmY3OTcwYV91cGRhdGVfcnhfZ2Fpbl9yZWR1Y3Rpb24odHJmKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTU5NC1cXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNTk3LVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NTk4OnN0YXRpYyBpbnQgdHJmNzk3MGFfcmVhZF90YXJnZXRfcHJvdG8oc3RydWN0IHRyZjc5NzBhICp0cmYsIHU4ICp0YXJnZXRfcHJvdG8pXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy01OTkte1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02MTYtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo2MTc6c3RhdGljIGludCB0cmY3OTcwYV9tb2RlX2RldGVjdChzdHJ1Y3QgdHJmNzk3MGEgKnRyZiwgdTggKnJmX3RlY2gpXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02MTgte1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02MjEtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo2MjI6XFx0cmV0ID0gdHJmNzk3MGFfcmVhZF90YXJnZXRfcHJvdG8odHJmLCBcXHUwMDI2dGFyZ2V0X3Byb3RvKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTYyMy1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02NDktXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo2NTA6c3RhdGljIHZvaWQgdHJmNzk3MGFfc2VuZF91cHN0cmVhbShzdHJ1Y3QgdHJmNzk3MGEgKnRyZilcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTY1MS17XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTY1NS1cXHRpZiAodHJmLVxcdTAwM2VyeF9za2IgXFx1MDAyNlxcdTAwMjYgIUlTX0VSUih0cmYtXFx1MDAzZXJ4X3NrYikgXFx1MDAyNlxcdTAwMjYgIXRyZi1cXHUwMDNlYWJvcnRpbmcpXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo2NTY6XFx0XFx0cHJpbnRfaGV4X2R1bXBfZGVidWcoXFxcInRyZjc5NzBhIHJ4IGRhdGE6IFxcXCIsIERVTVBfUFJFRklYX05PTkUsXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02NTctXFx0XFx0XFx0XFx0ICAgICAxNiwgMSwgdHJmLVxcdTAwM2VyeF9za2ItXFx1MDAzZWRhdGEsIHRyZi1cXHUwMDNlcnhfc2tiLVxcdTAwM2VsZW4sXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTY3Ny1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjY3ODpzdGF0aWMgdm9pZCB0cmY3OTcwYV9zZW5kX2Vycl91cHN0cmVhbShzdHJ1Y3QgdHJmNzk3MGEgKnRyZiwgaW50IGVycm5vKVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNjc5LXtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNjg2LVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6Njg3OlxcdHRyZjc5NzBhX3NlbmRfdXBzdHJlYW0odHJmKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTY4OC19XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02ODktXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo2OTA6c3RhdGljIGludCB0cmY3OTcwYV90cmFuc21pdChzdHJ1Y3QgdHJmNzk3MGEgKnRyZiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTY5MS1cXHRcXHRcXHQgICAgIHVuc2lnbmVkIGludCBsZW4sIGNvbnN0IHU4ICpwcmVmaXgsXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTY5OC1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjY5OTpcXHRwcmludF9oZXhfZHVtcF9kZWJ1ZyhcXFwidHJmNzk3MGEgdHggZGF0YTogXFxcIiwgRFVNUF9QUkVGSVhfTk9ORSxcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTcwMC1cXHRcXHRcXHQgICAgIDE2LCAxLCBza2ItXFx1MDAzZWRhdGEsIGxlbiwgZmFsc2UpO1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy03NDctXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo3NDg6c3RhdGljIHZvaWQgdHJmNzk3MGFfZmlsbF9maWZvKHN0cnVjdCB0cmY3OTcwYSAqdHJmKVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNzQ5LXtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNzU1LVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NzU2OlxcdHJldCA9IHRyZjc5NzBhX3JlYWQodHJmLCBUUkY3OTcwQV9GSUZPX1NUQVRVUywgXFx1MDAyNmZpZm9fYnl0ZXMpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNzU3LVxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjc1ODpcXHRcXHR0cmY3OTcwYV9zZW5kX2Vycl91cHN0cmVhbSh0cmYsIHJldCk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy03NTktXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy03NzctXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo3Nzg6XFx0cmV0ID0gdHJmNzk3MGFfdHJhbnNtaXQodHJmLCBza2IsIGxlbiwgXFx1MDAyNnByZWZpeCwgc2l6ZW9mKHByZWZpeCkpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNzc5LVxcdGlmIChyZXQpXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo3ODA6XFx0XFx0dHJmNzk3MGFfc2VuZF9lcnJfdXBzdHJlYW0odHJmLCByZXQpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNzgxLX1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTc4Mi1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjc4MzpzdGF0aWMgdm9pZCB0cmY3OTcwYV9kcmFpbl9maWZvKHN0cnVjdCB0cmY3OTcwYSAqdHJmLCB1OCBzdGF0dXMpXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy03ODQte1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy03ODktXFx0aWYgKHN0YXR1cyBcXHUwMDI2IFRSRjc5NzBBX0lSUV9TVEFUVVNfRVJST1IpIHtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjc5MDpcXHRcXHR0cmY3OTcwYV9zZW5kX2Vycl91cHN0cmVhbSh0cmYsIC1FSU8pO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNzkxLVxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNzkzLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6Nzk0OlxcdHJldCA9IHRyZjc5NzBhX3JlYWQodHJmLCBUUkY3OTcwQV9GSUZPX1NUQVRVUywgXFx1MDAyNmZpZm9fYnl0ZXMpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNzk1LVxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjc5NjpcXHRcXHR0cmY3OTcwYV9zZW5kX2Vycl91cHN0cmVhbSh0cmYsIHJldCk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy03OTctXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy04MTItXFx0XFx0aWYgKCFza2IpIHtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjgxMzpcXHRcXHRcXHR0cmY3OTcwYV9zZW5kX2Vycl91cHN0cmVhbSh0cmYsIC1FTk9NRU0pO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtODE0LVxcdFxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtODIwLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6ODIxOlxcdHJldCA9IHRyZjc5NzBhX3JlYWRfY29udCh0cmYsIFRSRjc5NzBBX0ZJRk9fSU9fUkVHSVNURVIsXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy04MjItXFx0XFx0XFx0XFx0IHNrYl9wdXQoc2tiLCBmaWZvX2J5dGVzKSwgZmlmb19ieXRlcyk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy04MjMtXFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6ODI0OlxcdFxcdHRyZjc5NzBhX3NlbmRfZXJyX3Vwc3RyZWFtKHRyZiwgcmV0KTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTgyNS1cXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTgzNS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjgzNjpcXHRcXHRyZXQgPSB0cmY3OTcwYV9yZWFkKHRyZiwgVFJGNzk3MEFfRklGT19TVEFUVVMsIFxcdTAwMjZmaWZvX2J5dGVzKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTgzNy1cXHRcXHRpZiAocmV0KSB7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo4Mzg6XFx0XFx0XFx0dHJmNzk3MGFfc2VuZF9lcnJfdXBzdHJlYW0odHJmLCByZXQpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtODM5LVxcdFxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtODQ1LVxcdFxcdCAqIHRoZSBpZiBzdG10IGJlbG93IGRvZXNuJ3QgZmlyZSBhbmQgdGhlIGRyaXZlciB3aWxsIHdhaXRcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjg0NjpcXHRcXHQgKiBmb3IgdGhlIHRyZjc5NzBhIHRvIGdlbmVyYXRlIGFub3RoZXIgUlggaW50ZXJydXB0LlxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtODQ3LVxcdFxcdCAqL1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy04NTMtXFx0aWYgKHN0YXR1cyA9PSBUUkY3OTcwQV9JUlFfU1RBVFVTX1NSWCkge1xcdC8qIFJlY2VpdmUgY29tcGxldGUgKi9cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjg1NDpcXHRcXHR0cmY3OTcwYV9zZW5kX3Vwc3RyZWFtKHRyZik7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy04NTUtXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy04NjQtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo4NjU6c3RhdGljIGlycXJldHVybl90IHRyZjc5NzBhX2lycShpbnQgaXJxLCB2b2lkICpkZXZfaWQpXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy04NjYte1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6ODY3OlxcdHN0cnVjdCB0cmY3OTcwYSAqdHJmID0gZGV2X2lkO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtODY4LVxcdGludCByZXQ7XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTg3Ny1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjg3ODpcXHRyZXQgPSB0cmY3OTcwYV9yZWFkX2lycXN0YXR1cyh0cmYsIFxcdTAwMjZzdGF0dXMpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtODc5LVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtODk2LVxcdFxcdCAqIHR1cm4gb2ZmIHRoZSByZWNlaXZlciB0byBhdm9pZCB1bm5lY2Vzc2FyeSBpbnRlcnJ1cHRzLlxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6ODk3OlxcdFxcdCAqIEl0IHdpbGwgYmUgdHVybmVkIGJhY2sgb24gaW4gdHJmNzk3MGFfc2VuZF9jbWQoKSB3aGVuXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy04OTgtXFx0XFx0ICogdGhlIG5leHQgY29tbWFuZCBpcyBpc3N1ZWQuXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTkwMC1cXHRcXHRpZiAodHJmLVxcdTAwM2Vpc19pbml0aWF0b3IgXFx1MDAyNlxcdTAwMjYgKHN0YXR1cyBcXHUwMDI2IFRSRjc5NzBBX0lSUV9TVEFUVVNfRVJST1IpKSB7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo5MDE6XFx0XFx0XFx0dHJmNzk3MGFfY21kKHRyZiwgVFJGNzk3MEFfQ01EX0JMT0NLX1JYKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTkwMi1cXHRcXHRcXHR0cmYtXFx1MDAzZXN0YXRlID0gVFJGNzk3MEFfU1RfSURMRV9SWF9CTE9DS0VEO1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05MDQtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo5MDU6XFx0XFx0dHJmNzk3MGFfY21kKHRyZiwgVFJGNzk3MEFfQ01EX0ZJRk9fUkVTRVQpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTA2LVxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05MTAtXFx0XFx0XFx0ICAgICFjYW5jZWxfZGVsYXllZF93b3JrKFxcdTAwMjZ0cmYtXFx1MDAzZXRpbWVvdXRfd29yayk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo5MTE6XFx0XFx0XFx0dHJmNzk3MGFfZmlsbF9maWZvKHRyZik7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05MTItXFx0XFx0fSBlbHNlIHtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjkxMzpcXHRcXHRcXHR0cmY3OTcwYV9zZW5kX2Vycl91cHN0cmVhbSh0cmYsIC1FSU8pO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTE0LVxcdFxcdH1cXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTIwLVxcdFxcdFxcdCAgICAhY2FuY2VsX2RlbGF5ZWRfd29yayhcXHUwMDI2dHJmLVxcdTAwM2V0aW1lb3V0X3dvcmspO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6OTIxOlxcdFxcdFxcdHRyZjc5NzBhX2RyYWluX2ZpZm8odHJmLCBzdGF0dXMpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTIyLVxcdFxcdH0gZWxzZSBpZiAoc3RhdHVzIFxcdTAwMjYgVFJGNzk3MEFfSVJRX1NUQVRVU19GSUZPKSB7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo5MjM6XFx0XFx0XFx0cmV0ID0gdHJmNzk3MGFfcmVhZCh0cmYsIFRSRjc5NzBBX0ZJRk9fU1RBVFVTLFxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTI0LVxcdFxcdFxcdFxcdFxcdCAgICBcXHUwMDI2Zmlmb19ieXRlcyk7XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTkyOC1cXHRcXHRcXHRpZiAocmV0KVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6OTI5OlxcdFxcdFxcdFxcdHRyZjc5NzBhX3NlbmRfZXJyX3Vwc3RyZWFtKHRyZiwgcmV0KTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTkzMC1cXHRcXHRcXHRlbHNlIGlmICghZmlmb19ieXRlcylcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjkzMTpcXHRcXHRcXHRcXHR0cmY3OTcwYV9jbWQodHJmLCBUUkY3OTcwQV9DTURfRklGT19SRVNFVCk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05MzItXFx0XFx0fSBlbHNlIGlmICgoc3RhdHVzID09IFRSRjc5NzBBX0lSUV9TVEFUVVNfVFgpIHx8XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTkzNS1cXHRcXHRcXHRcXHRcXHRUUkY3OTcwQV9JUlFfU1RBVFVTX05GQ19SRikpKSkge1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6OTM2OlxcdFxcdFxcdHRyZjc5NzBhX2NtZCh0cmYsIFRSRjc5NzBBX0NNRF9GSUZPX1JFU0VUKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTkzNy1cXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTQxLVxcdFxcdFxcdFxcdHRyZi1cXHUwMDNlcnhfc2tiID0gTlVMTDtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjk0MjpcXHRcXHRcXHRcXHR0cmY3OTcwYV9zZW5kX3Vwc3RyZWFtKHRyZik7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05NDMtXFx0XFx0XFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTk2Mi1cXHRcXHRcXHRjYXNlIE5GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDQV9BTlRJQ09MX0NPTVBMRVRFOlxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6OTYzOlxcdFxcdFxcdFxcdHJldCA9IHRyZjc5NzBhX3dyaXRlKHRyZixcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTk2NC1cXHRcXHRcXHRcXHRcXHQgVFJGNzk3MEFfU1BFQ0lBTF9GQ05fUkVHMSxcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTc2LVxcdFxcdFxcdGlmIChpc29fY3RybCAhPSB0cmYtXFx1MDAzZWlzb19jdHJsKSB7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo5Nzc6XFx0XFx0XFx0XFx0cmV0ID0gdHJmNzk3MGFfdXBkYXRlX2lzb19jdHJsX3JlZ2lzdGVyKHRyZiwgaXNvX2N0cmwpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTc4LVxcdFxcdFxcdFxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTk4My1cXHRcXHR9IGVsc2Uge1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6OTg0OlxcdFxcdFxcdHRyZjc5NzBhX3NlbmRfZXJyX3Vwc3RyZWFtKHRyZiwgLUVJTyk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05ODUtXFx0XFx0fVxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05ODgtXFx0XFx0aWYgKHN0YXR1cyAhPSBUUkY3OTcwQV9JUlFfU1RBVFVTX1RYKVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6OTg5OlxcdFxcdFxcdHRyZjc5NzBhX3NlbmRfZXJyX3Vwc3RyZWFtKHRyZiwgLUVJTyk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05OTAtXFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTk5NC1cXHRcXHRcXHQgICAgIWNhbmNlbF9kZWxheWVkX3dvcmsoXFx1MDAyNnRyZi1cXHUwMDNldGltZW91dF93b3JrKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjk5NTpcXHRcXHRcXHR0cmY3OTcwYV9kcmFpbl9maWZvKHRyZiwgc3RhdHVzKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTk5Ni1cXHRcXHR9IGVsc2UgaWYgKCEoc3RhdHVzIFxcdTAwMjYgVFJGNzk3MEFfSVJRX1NUQVRVU19ORkNfUkYpKSB7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo5OTc6XFx0XFx0XFx0dHJmNzk3MGFfc2VuZF9lcnJfdXBzdHJlYW0odHJmLCAtRUlPKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTk5OC1cXHRcXHR9XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwMDQtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMDA1OlxcdFxcdFxcdHJldCA9IHRyZjc5NzBhX21vZGVfZGV0ZWN0KHRyZiwgXFx1MDAyNnRyZi1cXHUwMDNlbWRfcmZfdGVjaCk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDA2LVxcdFxcdFxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEwMDc6XFx0XFx0XFx0XFx0dHJmNzk3MGFfc2VuZF9lcnJfdXBzdHJlYW0odHJmLCByZXQpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTAwOC1cXHRcXHRcXHR9IGVsc2Uge1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTAwOS1cXHRcXHRcXHRcXHR0cmYtXFx1MDAzZXN0YXRlID0gVFJGNzk3MEFfU1RfTElTVEVOSU5HO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTAxMDpcXHRcXHRcXHRcXHR0cmY3OTcwYV9kcmFpbl9maWZvKHRyZiwgc3RhdHVzKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwMTEtXFx0XFx0XFx0fVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTAxMi1cXHRcXHR9IGVsc2UgaWYgKCEoc3RhdHVzIFxcdTAwMjYgVFJGNzk3MEFfSVJRX1NUQVRVU19ORkNfUkYpKSB7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMDEzOlxcdFxcdFxcdHRyZjc5NzBhX3NlbmRfZXJyX3Vwc3RyZWFtKHRyZiwgLUVJTyk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDE0LVxcdFxcdH1cXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTAyNS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEwMjY6c3RhdGljIHZvaWQgdHJmNzk3MGFfaXNzdWVfZW9mKHN0cnVjdCB0cmY3OTcwYSAqdHJmKVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTAyNy17XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwMzEtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMDMyOlxcdHJldCA9IHRyZjc5NzBhX2NtZCh0cmYsIFRSRjc5NzBBX0NNRF9GSUZPX1JFU0VUKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwMzMtXFx0aWYgKHJldClcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEwMzQ6XFx0XFx0dHJmNzk3MGFfc2VuZF9lcnJfdXBzdHJlYW0odHJmLCByZXQpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTAzNS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEwMzY6XFx0cmV0ID0gdHJmNzk3MGFfY21kKHRyZiwgVFJGNzk3MEFfQ01EX0VPRik7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDM3LVxcdGlmIChyZXQpXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMDM4OlxcdFxcdHRyZjc5NzBhX3NlbmRfZXJyX3Vwc3RyZWFtKHRyZiwgcmV0KTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwMzktXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwNDgtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMDQ5OnN0YXRpYyB2b2lkIHRyZjc5NzBhX3RpbWVvdXRfd29ya19oYW5kbGVyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwNTAte1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTA1MTpcXHRzdHJ1Y3QgdHJmNzk3MGEgKnRyZiA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgdHJmNzk3MGEsXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDUyLVxcdFxcdFxcdFxcdFxcdCAgICB0aW1lb3V0X3dvcmsud29yayk7XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwNjEtXFx0ZWxzZSBpZiAodHJmLVxcdTAwM2VzdGF0ZSA9PSBUUkY3OTcwQV9TVF9XQUlUX0ZPUl9SWF9EQVRBX0NPTlQpXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMDYyOlxcdFxcdHRyZjc5NzBhX2RyYWluX2ZpZm8odHJmLCBUUkY3OTcwQV9JUlFfU1RBVFVTX1NSWCk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDYzLVxcdGVsc2UgaWYgKHRyZi1cXHUwMDNlc3RhdGUgPT0gVFJGNzk3MEFfU1RfV0FJVF9UT19JU1NVRV9FT0YpXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMDY0OlxcdFxcdHRyZjc5NzBhX2lzc3VlX2VvZih0cmYpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTA2NS1cXHRlbHNlXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMDY2OlxcdFxcdHRyZjc5NzBhX3NlbmRfZXJyX3Vwc3RyZWFtKHRyZiwgLUVUSU1FRE9VVCk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDY3LVxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDcwLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTA3MTpzdGF0aWMgaW50IHRyZjc5NzBhX2luaXQoc3RydWN0IHRyZjc5NzBhICp0cmYpXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDcyLXtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTA3Ni1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEwNzc6XFx0cmV0ID0gdHJmNzk3MGFfY21kKHRyZiwgVFJGNzk3MEFfQ01EX1NPRlRfSU5JVCk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDc4LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwODEtXFx0LyogU2V0IHRoZSBnYWluIHJlZHVjdGlvbiBhZnRlciBzb2Z0IGluaXQgKi9cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEwODI6XFx0cmV0ID0gdHJmNzk3MGFfdXBkYXRlX3J4X2dhaW5fcmVkdWN0aW9uKHRyZik7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDgzLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwODUtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMDg2OlxcdHJldCA9IHRyZjc5NzBhX2NtZCh0cmYsIFRSRjc5NzBBX0NNRF9JRExFKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwODctXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTA4OS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEwOTA6XFx0cmV0ID0gdHJmNzk3MGFfd3JpdGUodHJmLCBUUkY3OTcwQV9SRUdfSU9fQ1RSTCxcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwOTEtXFx0XFx0XFx0ICAgICB0cmYtXFx1MDAzZWlvX2N0cmwgfCBUUkY3OTcwQV9SRUdfSU9fQ1RSTF9WUlMoMHgxKSk7XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEwOTQtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMDk1OlxcdHJldCA9IHRyZjc5NzBhX3dyaXRlKHRyZiwgVFJGNzk3MEFfTkZDX1RBUkdFVF9MRVZFTCwgMCk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMDk2LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExMDItXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMTAzOlxcdHJldCA9IHRyZjc5NzBhX3dyaXRlKHRyZiwgVFJGNzk3MEFfTU9EVUxBVE9SX1NZU19DTEtfQ1RSTCxcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExMDQtXFx0XFx0XFx0ICAgICB0cmYtXFx1MDAzZW1vZHVsYXRvcl9zeXNfY2xrX2N0cmwpO1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMTA3LVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTEwODpcXHRyZXQgPSB0cmY3OTcwYV93cml0ZSh0cmYsIFRSRjc5NzBBX0FESlVUQUJMRV9GSUZPX0lSUV9MRVZFTFMsXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMTA5LVxcdFxcdFxcdCAgICAgVFJGNzk3MEFfQURKVVRBQkxFX0ZJRk9fSVJRX0xFVkVMU19XTEhfOTYgfFxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMTEzLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTExNDpcXHRyZXQgPSB0cmY3OTcwYV93cml0ZSh0cmYsIFRSRjc5NzBBX1NQRUNJQUxfRkNOX1JFRzEsIDApO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTExNS1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMTI3LVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTEyODpzdGF0aWMgdm9pZCB0cmY3OTcwYV9zd2l0Y2hfcmZfb2ZmKHN0cnVjdCB0cmY3OTcwYSAqdHJmKVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTEyOS17XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExMzctXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMTM4OlxcdHRyZjc5NzBhX3dyaXRlKHRyZiwgVFJGNzk3MEFfQ0hJUF9TVEFUVVNfQ1RSTCwgdHJmLVxcdTAwM2VjaGlwX3N0YXR1c19jdHJsKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExMzktXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExNDYtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMTQ3OnN0YXRpYyBpbnQgdHJmNzk3MGFfc3dpdGNoX3JmX29uKHN0cnVjdCB0cmY3OTcwYSAqdHJmKVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTE0OC17XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExNjAtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMTYxOlxcdHJldCA9IHRyZjc5NzBhX2luaXQodHJmKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExNjItXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMTcxLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTE3MjpzdGF0aWMgaW50IHRyZjc5NzBhX3N3aXRjaF9yZihzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCBib29sIG9uKVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTE3My17XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMTc0OlxcdHN0cnVjdCB0cmY3OTcwYSAqdHJmID0gbmZjX2RpZ2l0YWxfZ2V0X2RydmRhdGEoZGRldik7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMTc1LVxcdGludCByZXQgPSAwO1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMTg0LVxcdFxcdGNhc2UgVFJGNzk3MEFfU1RfUkZfT0ZGOlxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTE4NTpcXHRcXHRcXHRyZXQgPSB0cmY3OTcwYV9zd2l0Y2hfcmZfb24odHJmKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExODYtXFx0XFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExOTItXFx0XFx0XFx0XFx0X19mdW5jX18sIHRyZi1cXHUwMDNlc3RhdGUsIG9uKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjExOTM6XFx0XFx0XFx0dHJmNzk3MGFfc3dpdGNoX3JmX29mZih0cmYpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTE5NC1cXHRcXHRcXHRyZXQgPSAtRUlOVkFMO1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMjA5LVxcdFxcdGNhc2UgVFJGNzk3MEFfU1RfV0FJVF9GT1JfUlhfREFUQV9DT05UOlxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTIxMDpcXHRcXHRcXHR0cmY3OTcwYV9zd2l0Y2hfcmZfb2ZmKHRyZik7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMjExLVxcdFxcdH1cXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTIxNy1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEyMTg6c3RhdGljIGludCB0cmY3OTcwYV9pbl9jb25maWdfcmZfdGVjaChzdHJ1Y3QgdHJmNzk3MGEgKnRyZiwgaW50IHRlY2gpXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMjE5LXtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTI2OC1cXHQgKiBQU0wgc2VxdWVuY2UgKGluZGljYXRlZCBieSAndHJmLVxcdTAwM2Vpc29fY3RybCA9PSAweGZmJyBmcm9tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMjY5OlxcdCAqIHRyZjc5NzBhX2luaXQoKSksIGNsZWFyIHRoZSBORkMgVGFyZ2V0IERldGVjdGlvbiBMZXZlbCByZWdpc3RlclxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTI3MC1cXHQgKiBkdWUgdG8gZXJyYXR1bS5cXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTI3Mi1cXHRpZiAodHJmLVxcdTAwM2Vpc29fY3RybCA9PSAweGZmKVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTI3MzpcXHRcXHRyZXQgPSB0cmY3OTcwYV93cml0ZSh0cmYsIFRSRjc5NzBBX05GQ19UQVJHRVRfTEVWRUwsIDApO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTI3NC1cXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTI3Ny1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEyNzg6c3RhdGljIGludCB0cmY3OTcwYV9pc19yZl9maWVsZChzdHJ1Y3QgdHJmNzk3MGEgKnRyZiwgYm9vbCAqaXNfcmZfZmllbGQpXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMjc5LXtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTI4Mi1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEyODM6XFx0cmV0ID0gdHJmNzk3MGFfd3JpdGUodHJmLCBUUkY3OTcwQV9DSElQX1NUQVRVU19DVFJMLFxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTI4NC1cXHRcXHRcXHQgICAgIHRyZi1cXHUwMDNlY2hpcF9zdGF0dXNfY3RybCB8XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEyODgtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMjg5OlxcdHJldCA9IHRyZjc5NzBhX2NtZCh0cmYsIFRSRjc5NzBBX0NNRF9URVNUX0VYVF9SRik7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMjkwLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEyOTQtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMjk1OlxcdHJldCA9IHRyZjc5NzBhX3JlYWQodHJmLCBUUkY3OTcwQV9SU1NJX09TQ19TVEFUVVMsIFxcdTAwMjZyc3NpKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEyOTYtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTI5OC1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEyOTk6XFx0cmV0ID0gdHJmNzk3MGFfd3JpdGUodHJmLCBUUkY3OTcwQV9DSElQX1NUQVRVU19DVFJMLFxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTMwMC1cXHRcXHRcXHQgICAgIHRyZi1cXHUwMDNlY2hpcF9zdGF0dXNfY3RybCk7XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEzMTEtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMzEyOnN0YXRpYyBpbnQgdHJmNzk3MGFfaW5fY29uZmlnX2ZyYW1pbmcoc3RydWN0IHRyZjc5NzBhICp0cmYsIGludCBmcmFtaW5nKVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTMxMy17XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEzNTAtXFx0aWYgKCEodHJmLVxcdTAwM2VjaGlwX3N0YXR1c19jdHJsIFxcdTAwMjYgVFJGNzk3MEFfQ0hJUF9TVEFUVVNfUkZfT04pKSB7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMzUxOlxcdFxcdHJldCA9IHRyZjc5NzBhX2lzX3JmX2ZpZWxkKHRyZiwgXFx1MDAyNmlzX3JmX2ZpZWxkKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEzNTItXFx0XFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTM1OS1cXHRpZiAoaXNvX2N0cmwgIT0gdHJmLVxcdTAwM2Vpc29fY3RybCkge1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTM2MDpcXHRcXHRyZXQgPSB0cmY3OTcwYV91cGRhdGVfaXNvX2N0cmxfcmVnaXN0ZXIodHJmLCBpc29fY3RybCk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMzYxLVxcdFxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEzNjUtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMzY2OlxcdFxcdHJldCA9IHRyZjc5NzBhX3dyaXRlKHRyZiwgVFJGNzk3MEFfTU9EVUxBVE9SX1NZU19DTEtfQ1RSTCxcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEzNjctXFx0XFx0XFx0XFx0ICAgICB0cmYtXFx1MDAzZW1vZHVsYXRvcl9zeXNfY2xrX2N0cmwpO1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMzcyLVxcdGlmICghKHRyZi1cXHUwMDNlY2hpcF9zdGF0dXNfY3RybCBcXHUwMDI2IFRSRjc5NzBBX0NISVBfU1RBVFVTX1JGX09OKSkge1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTM3MzpcXHRcXHRyZXQgPSB0cmY3OTcwYV93cml0ZSh0cmYsIFRSRjc5NzBBX0NISVBfU1RBVFVTX0NUUkwsXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMzc0LVxcdFxcdFxcdFxcdCAgICAgdHJmLVxcdTAwM2VjaGlwX3N0YXR1c19jdHJsIHxcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTM4Ni1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEzODc6c3RhdGljIGludCB0cmY3OTcwYV9pbl9jb25maWd1cmVfaHcoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgaW50IHR5cGUsXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMzg4LVxcdFxcdFxcdFxcdCAgICBpbnQgcGFyYW0pXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMzg5LXtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEzOTA6XFx0c3RydWN0IHRyZjc5NzBhICp0cmYgPSBuZmNfZGlnaXRhbF9nZXRfZHJ2ZGF0YShkZGV2KTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEzOTEtXFx0aW50IHJldDtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTQwMC1cXHQgICAgKHRyZi1cXHUwMDNlc3RhdGUgPT0gVFJGNzk3MEFfU1RfUkZfT0ZGKSkge1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTQwMTpcXHRcXHRyZXQgPSB0cmY3OTcwYV9zd2l0Y2hfcmZfb24odHJmKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE0MDItXFx0XFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTQwNy1cXHRjYXNlIE5GQ19ESUdJVEFMX0NPTkZJR19SRl9URUNIOlxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTQwODpcXHRcXHRyZXQgPSB0cmY3OTcwYV9pbl9jb25maWdfcmZfdGVjaCh0cmYsIHBhcmFtKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE0MDktXFx0XFx0YnJlYWs7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNDEwLVxcdGNhc2UgTkZDX0RJR0lUQUxfQ09ORklHX0ZSQU1JTkc6XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNDExOlxcdFxcdHJldCA9IHRyZjc5NzBhX2luX2NvbmZpZ19mcmFtaW5nKHRyZiwgcGFyYW0pO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTQxMi1cXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTQyMi1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE0MjM6c3RhdGljIGludCB0cmY3OTcwYV9pc19pc28xNTY5M193cml0ZV9vcl9sb2NrKHU4IGNtZClcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE0MjQte1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNDM4LVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTQzOTpzdGF0aWMgaW50IHRyZjc5NzBhX3Blcl9jbWRfY29uZmlnKHN0cnVjdCB0cmY3OTcwYSAqdHJmLFxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTQ0MC1cXHRcXHRcXHRcXHQgICBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNDY0LVxcdFxcdGlmIChzcGVjaWFsX2Zjbl9yZWcxICE9IHRyZi1cXHUwMDNlc3BlY2lhbF9mY25fcmVnMSkge1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTQ2NTpcXHRcXHRcXHRyZXQgPSB0cmY3OTcwYV93cml0ZSh0cmYsIFRSRjc5NzBBX1NQRUNJQUxfRkNOX1JFRzEsXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNDY2LVxcdFxcdFxcdFxcdFxcdCAgICAgc3BlY2lhbF9mY25fcmVnMSk7XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE0OTEtXFx0XFx0aWYgKGlzb19jdHJsICE9IHRyZi1cXHUwMDNlaXNvX2N0cmwpIHtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE0OTI6XFx0XFx0XFx0cmV0ID0gdHJmNzk3MGFfdXBkYXRlX2lzb19jdHJsX3JlZ2lzdGVyKHRyZiwgaXNvX2N0cmwpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTQ5My1cXHRcXHRcXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNDk5LVxcdFxcdGlmICgodHJmLVxcdTAwM2VmcmFtaW5nID09IE5GQ19ESUdJVEFMX0ZSQU1JTkdfSVNPMTU2OTNfVDVUKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTUwMDpcXHRcXHQgICAgdHJmNzk3MGFfaXNfaXNvMTU2OTNfd3JpdGVfb3JfbG9jayhyZXFbMV0pIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNTAxLVxcdFxcdCAgICAocmVxWzBdIFxcdTAwMjYgSVNPMTU2OTNfUkVRX0ZMQUdfT1BUSU9OKSlcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTUwNy1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE1MDg6c3RhdGljIGludCB0cmY3OTcwYV9zZW5kX2NtZChzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTUwOS1cXHRcXHRcXHQgICAgIHN0cnVjdCBza19idWZmICpza2IsIHUxNiB0aW1lb3V0LFxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNTExLXtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE1MTI6XFx0c3RydWN0IHRyZjc5NzBhICp0cmYgPSBuZmNfZGlnaXRhbF9nZXRfZHJ2ZGF0YShkZGV2KTtcXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTNUMDU6MTc6MjEuNDE4Nzc1MTEyWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjY2OTIyODQ0NzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBSZWFjaGFiaWxpdHkgb2YgVFJGNzk3MEEgRHJpdmVyIGZvciBGdXp6aW5nKipcblxuT2theSwgc28gdGhlIGB0cmY3OTcwYWAgZHJpdmVyIGlzIGxvY2F0ZWQgaW4gYGFyY2gvYXJtL2Jvb3QvZHRzL254cC9pbXgvaW14NmRsLXBydHJ2dC5kdHNgLiBJbW1lZGlhdGVseSwgSSBzZWUgc29tZSBrZXkgcmVxdWlyZW1lbnRzOiBpdCBuZWVkcyBhbiBgc3BpLVx1MDAzZWRldi5vZl9ub2RlYCBEZXZpY2UgVHJlZSBlbnRyeSAoYG5wYCkgZm9yIHByb3BlciBpbml0aWFsaXphdGlvbiwgR1BJTyBwaW5zIChzcGVjaWZpY2FsbHkgYHRpLGVuYWJsZWApLCBhbmQgYSByZWd1bGF0b3IgYHZpbmAuIEl0J3MgYW4gU1BJIGRldmljZSwgc3BlY2lmaWNhbGx5IGZvciB0aGUgVGV4YXMgSW5zdHJ1bWVudHMgVFJGNzk3MGEgTkZDIHRyYW5zY2VpdmVyIGNoaXAuXG5cbk5vdyB0aGUgY3JpdGljYWwgcXVlc3Rpb246IGNhbiB0aGlzIGV2ZXIgYmUgcmVhY2hlZCBmb3IgZnV6emluZywgZ2l2ZW4gdGhlIHRhcmdldCBlbnZpcm9ubWVudCBpcyBhbWQ2NCwgdHlwaWNhbGx5IGluIFFFTVUgb3IgR0NFPyBUaGUgaW5zdHJ1Y3Rpb25zIGVtcGhhc2l6ZSByZWFjaGFiaWxpdHkuIFNlY3Rpb24gMSBhbmQgMiBtYWtlIHRoaXMgdmVyeSBjbGVhcjogYW55IGZ1enppbmcgaGFzIHRvIGJlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gVW5yZWFjaGFibGUgaGFyZHdhcmUgbWVhbnMgKm5vKiBmdXp6aW5nLiBJIG5lZWQgdG8gYmUgYWJzb2x1dGVseSBzdXJlIHRoaXMgaXMgcmVhY2hhYmxlLlxuXG5UaGUgZHJpdmVyIHJlcXVpcmVzIERldmljZSBUcmVlIGluZm9ybWF0aW9uIGFuZCBzcGVjaWZpYyBoYXJkd2FyZSBmZWF0dXJlcywgd2hpY2ggaXMgY29uY2VybmluZy4gVGhlIHRleHQgbGlzdHMgc2V2ZXJhbCBleGFtcGxlcyBvZiBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgY29kZSwgaW5jbHVkaW5nIHZlbmRvci1zcGVjaWZpYyBQQ0llIGRldmljZXMgYW5kIGRyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgdGhhdCBhcmUgdHJpZ2dlcmVkIGJ5IGhvdC11bnBsdWcgb3IgbWFudWFsIHVuYmluZGluZy4gVGhpcyBpbnN0YW50bHkgbWFrZXMgbWUgdGhpbmsgb2YgU1BJIGRldmljZXMgYW5kIHNwZWNpZmljIGhhcmR3YXJlIGRlcGVuZGVuY2llcy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgU1BJIGlzIGVtdWxhdGVkIGluIGEgd2F5IHRoYXQgd291bGQgYWxsb3cgdGhlIGZ1enppbmcgdG8gd29yaywgb3IgaWYgaXQgY291bnRzIGFzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS4gRG9lcyBRRU1VIG9yIHN5emthbGxlciBoYXZlICphbnkqIHdheSB0byBpbnN0YW50aWF0ZSBhIFRSRjc5NzBBIFNQSSBkZXZpY2U/XG5cbk15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGNoZWNrIGlmIHN5emthbGxlciBldmVuIHN1cHBvcnRzIFNQSSBkZXZpY2VzLiBJdCBoYXMgcHNldWRvLXN5c2NhbGxzIGZvciB0aGluZ3MgbGlrZSBVU0IsIG5ldGxpbmssIGFuZCB2aG9zdCwgYnV0IGRvZXMgaXQgaGF2ZSBgc3l6X3NwaV8qYCBjYWxscz8gSWYgaXQgZG9lcywgdGhhdCdzIGEgZ29vZCBzaWduLiBIb3dldmVyLCBJIGNhbid0IGltbWVkaWF0ZWx5IHVzZSBzeXotZ3JlcHBlciBvbiBzeXprYWxsZXIgZGVzY3JpcHRpb25zLCBJJ2QgbmVlZCB0aGUgdG9vbHMgdG8gYmUgcHJlc2VudCBhbmQgYWNjZXNzaWJsZSwgc28gdGhlIG5leHQgYmVzdCBhcHByb2FjaCBpcyB0byBjaGVjayB0aGUga2VybmVsIGl0c2VsZiBhbmQgc3l6Ym90IGZvciBTUEkgc3VwcG9ydC4gSSdtIGdvaW5nIHRvIGdyZXAgdGhlIGBkcml2ZXJzL3NwaWAgZGlyZWN0b3J5IGZvciB0ZXJtcyBsaWtlIFwibW9ja1wiIG9yIGEgXCJ2aXJ0dWFsIGJ1c1wiLiBNYXliZSB0aGVyZSdzIGEgbWVjaGFuaXNtIGluIHBsYWNlIHRvIGVtdWxhdGUgU1BJIGRldmljZXMgZm9yIHRlc3Rpbmc/IElmIG5vdCwgdGhpcyBsb29rcyBsaWtlIGEgZGVhZCBlbmQgZm9yIGZ1enppbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM3NTk2LCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjU2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEzVDA1OjE3OjI4LjExMTA2MjQ2MVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJjb2Rlc2VhcmNoLWRpci1pbmRleCIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI4MTkyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkRpclwiOiBcImRyaXZlcnMvc3BpXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIkZpbGVzXCI6IFtcbiAgICBcImF0bWVsLXF1YWRzcGkuY1wiLFxuICAgIFwiaW50ZXJuYWxzLmhcIixcbiAgICBcInNwaS1haXJvaGEtc25maS5jXCIsXG4gICAgXCJzcGktYWx0ZXJhLWNvcmUuY1wiLFxuICAgIFwic3BpLWFsdGVyYS1kZmwuY1wiLFxuICAgIFwic3BpLWFsdGVyYS1wbGF0Zm9ybS5jXCIsXG4gICAgXCJzcGktYW1kLXBjaS5jXCIsXG4gICAgXCJzcGktYW1kLmNcIixcbiAgICBcInNwaS1hbWQuaFwiLFxuICAgIFwic3BpLWFtbG9naWMtc3BpZmMtYTEuY1wiLFxuICAgIFwic3BpLWFtbG9naWMtc3BpZmMtYTQuY1wiLFxuICAgIFwic3BpLWFtbG9naWMtc3Bpc2cuY1wiLFxuICAgIFwic3BpLWFwcGxlLmNcIixcbiAgICBcInNwaS1hcjkzNHguY1wiLFxuICAgIFwic3BpLWFybWFkYS0zNzAwLmNcIixcbiAgICBcInNwaS1hc3BlZWQtc21jLmNcIixcbiAgICBcInNwaS1hdDkxLXVzYXJ0LmNcIixcbiAgICBcInNwaS1hdGNzcGkyMDAuY1wiLFxuICAgIFwic3BpLWF0aDc5LmNcIixcbiAgICBcInNwaS1hdG1lbC5jXCIsXG4gICAgXCJzcGktYXUxNTUwLmNcIixcbiAgICBcInNwaS1heGktc3BpLWVuZ2luZS5jXCIsXG4gICAgXCJzcGktYXhpYWRvLmNcIixcbiAgICBcInNwaS1heGlhZG8uaFwiLFxuICAgIFwic3BpLWJjbS1xc3BpLmNcIixcbiAgICBcInNwaS1iY20tcXNwaS5oXCIsXG4gICAgXCJzcGktYmNtMjgzNS5jXCIsXG4gICAgXCJzcGktYmNtMjgzNWF1eC5jXCIsXG4gICAgXCJzcGktYmNtNjN4eC1oc3NwaS5jXCIsXG4gICAgXCJzcGktYmNtNjN4eC5jXCIsXG4gICAgXCJzcGktYmNtYmNhLWhzc3BpLmNcIixcbiAgICBcInNwaS1iaXRiYW5nLXR4cnguaFwiLFxuICAgIFwic3BpLWJpdGJhbmcuY1wiLFxuICAgIFwic3BpLWJyY21zdGItcXNwaS5jXCIsXG4gICAgXCJzcGktYnV0dGVyZmx5LmNcIixcbiAgICBcInNwaS1jYWRlbmNlLXF1YWRzcGkuY1wiLFxuICAgIFwic3BpLWNhZGVuY2UteHNwaS5jXCIsXG4gICAgXCJzcGktY2FkZW5jZS5jXCIsXG4gICAgXCJzcGktY2F2aXVtLW9jdGVvbi5jXCIsXG4gICAgXCJzcGktY2F2aXVtLXRodW5kZXJ4LmNcIixcbiAgICBcInNwaS1jYXZpdW0uY1wiLFxuICAgIFwic3BpLWNhdml1bS5oXCIsXG4gICAgXCJzcGktY2gzNDEuY1wiLFxuICAgIFwic3BpLWNscHM3MTF4LmNcIixcbiAgICBcInNwaS1jb2xkZmlyZS1xc3BpLmNcIixcbiAgICBcInNwaS1jczQybDQzLmNcIixcbiAgICBcInNwaS1kYXZpbmNpLmNcIixcbiAgICBcInNwaS1kbG4yLmNcIixcbiAgICBcInNwaS1kdy1jb3JlLmNcIixcbiAgICBcInNwaS1kdy1kbWEuY1wiLFxuICAgIFwic3BpLWR3LW1taW8uY1wiLFxuICAgIFwic3BpLWR3LXBjaS5jXCIsXG4gICAgXCJzcGktZHcuaFwiLFxuICAgIFwic3BpLWVwOTN4eC5jXCIsXG4gICAgXCJzcGktZmFsY29uLmNcIixcbiAgICBcInNwaS1mc2kuY1wiLFxuICAgIFwic3BpLWZzbC1jcG0uY1wiLFxuICAgIFwic3BpLWZzbC1jcG0uaFwiLFxuICAgIFwic3BpLWZzbC1kc3BpLmNcIixcbiAgICBcInNwaS1mc2wtZXNwaS5jXCIsXG4gICAgXCJzcGktZnNsLWxpYi5jXCIsXG4gICAgXCJzcGktZnNsLWxpYi5oXCIsXG4gICAgXCJzcGktZnNsLWxwc3BpLmNcIixcbiAgICBcInNwaS1mc2wtcXNwaS5jXCIsXG4gICAgXCJzcGktZnNsLXNwaS5jXCIsXG4gICAgXCJzcGktZnNsLXNwaS5oXCIsXG4gICAgXCJzcGktZ2VuaS1xY29tLmNcIixcbiAgICBcInNwaS1ncGlvLmNcIixcbiAgICBcInNwaS1neHAuY1wiLFxuICAgIFwic3BpLWhpc2kta3VucGVuZy5jXCIsXG4gICAgXCJzcGktaGlzaS1zZmMtdjN4eC5jXCIsXG4gICAgXCJzcGktaW1nLXNwZmkuY1wiLFxuICAgIFwic3BpLWlteC5jXCIsXG4gICAgXCJzcGktaW5nZW5pYy5jXCIsXG4gICAgXCJzcGktaW50ZWwtcGNpLmNcIixcbiAgICBcInNwaS1pbnRlbC1wbGF0Zm9ybS5jXCIsXG4gICAgXCJzcGktaW50ZWwuY1wiLFxuICAgIFwic3BpLWludGVsLmhcIixcbiAgICBcInNwaS1pcHJvYy1xc3BpLmNcIixcbiAgICBcInNwaS1qY29yZS5jXCIsXG4gICAgXCJzcGkta3NwaTIuY1wiLFxuICAgIFwic3BpLWxhbnRpcS1zc2MuY1wiLFxuICAgIFwic3BpLWxqY2EuY1wiLFxuICAgIFwic3BpLWxtNzBsbHAuY1wiLFxuICAgIFwic3BpLWxvb25nc29uLWNvcmUuY1wiLFxuICAgIFwic3BpLWxvb25nc29uLXBjaS5jXCIsXG4gICAgXCJzcGktbG9vbmdzb24tcGxhdC5jXCIsXG4gICAgXCJzcGktbG9vbmdzb24uaFwiLFxuICAgIFwic3BpLWxvb3BiYWNrLXRlc3QuY1wiLFxuICAgIFwic3BpLWxwODg0MS1ydGMuY1wiLFxuICAgIFwic3BpLW1hMzVkMS1xc3BpLmNcIixcbiAgICBcInNwaS1tZW0uY1wiLFxuICAgIFwic3BpLW1lc29uLXNwaWNjLmNcIixcbiAgICBcInNwaS1tZXNvbi1zcGlmYy5jXCIsXG4gICAgXCJzcGktbWljcm9jaGlwLWNvcmUtcXNwaS5jXCIsXG4gICAgXCJzcGktbWljcm9jaGlwLWNvcmUtc3BpLmNcIixcbiAgICBcInNwaS1tcGM1MTJ4LXBzYy5jXCIsXG4gICAgXCJzcGktbXBjNTJ4eC1wc2MuY1wiLFxuICAgIFwic3BpLW1wYzUyeHguY1wiLFxuICAgIFwic3BpLW1wZnMuY1wiLFxuICAgIFwic3BpLW10NjV4eC5jXCIsXG4gICAgXCJzcGktbXQ3NjIxLmNcIixcbiAgICBcInNwaS1tdGstbm9yLmNcIixcbiAgICBcInNwaS1tdGstc25maS5jXCIsXG4gICAgXCJzcGktbXV4LmNcIixcbiAgICBcInNwaS1teGljLmNcIixcbiAgICBcInNwaS1teHMuY1wiLFxuICAgIFwic3BpLW5wY20tZml1LmNcIixcbiAgICBcInNwaS1ucGNtLXBzcGkuY1wiLFxuICAgIFwic3BpLW54cC1mc3BpLmNcIixcbiAgICBcInNwaS1ueHAteHNwaS5jXCIsXG4gICAgXCJzcGktb2MtdGlueS5jXCIsXG4gICAgXCJzcGktb2ZmbG9hZC10cmlnZ2VyLWFkaS11dGlsLXNpZ21hLWRlbHRhLmNcIixcbiAgICBcInNwaS1vZmZsb2FkLXRyaWdnZXItcHdtLmNcIixcbiAgICBcInNwaS1vZmZsb2FkLmNcIixcbiAgICBcInNwaS1vbWFwLXV3aXJlLmNcIixcbiAgICBcInNwaS1vbWFwMi1tY3NwaS5jXCIsXG4gICAgXCJzcGktb3Jpb24uY1wiLFxuICAgIFwic3BpLXBjaTF4eHh4LmNcIixcbiAgICBcInNwaS1waWMzMi1zcWkuY1wiLFxuICAgIFwic3BpLXBpYzMyLmNcIixcbiAgICBcInNwaS1wbDAyMi5jXCIsXG4gICAgXCJzcGktcHBjNHh4LmNcIixcbiAgICBcInNwaS1weGEyeHgtZG1hLmNcIixcbiAgICBcInNwaS1weGEyeHgtcGNpLmNcIixcbiAgICBcInNwaS1weGEyeHgtcGxhdGZvcm0uY1wiLFxuICAgIFwic3BpLXB4YTJ4eC5jXCIsXG4gICAgXCJzcGktcHhhMnh4LmhcIixcbiAgICBcInNwaS1xY29tLXFzcGkuY1wiLFxuICAgIFwic3BpLXFwaWMtc25hbmQuY1wiLFxuICAgIFwic3BpLXF1cC5jXCIsXG4gICAgXCJzcGktcmI0eHguY1wiLFxuICAgIFwic3BpLXJlYWx0ZWstcnRsLXNuYW5kLmNcIixcbiAgICBcInNwaS1yZWFsdGVrLXJ0bC5jXCIsXG4gICAgXCJzcGktcm9ja2NoaXAtc2ZjLmNcIixcbiAgICBcInNwaS1yb2NrY2hpcC5jXCIsXG4gICAgXCJzcGktcnBjLWlmLmNcIixcbiAgICBcInNwaS1yc3BpLmNcIixcbiAgICBcInNwaS1yenYyaC1yc3BpLmNcIixcbiAgICBcInNwaS1yenYybS1jc2kuY1wiLFxuICAgIFwic3BpLXMzYzY0eHguY1wiLFxuICAgIFwic3BpLXNjMThpczYwMi5jXCIsXG4gICAgXCJzcGktc2cyMDQ0LW5vci5jXCIsXG4gICAgXCJzcGktc2gtaHNwaS5jXCIsXG4gICAgXCJzcGktc2gtbXNpb2YuY1wiLFxuICAgIFwic3BpLXNoLXNjaS5jXCIsXG4gICAgXCJzcGktc2guY1wiLFxuICAgIFwic3BpLXNpZml2ZS5jXCIsXG4gICAgXCJzcGktc2xhdmUtbXQyN3h4LmNcIixcbiAgICBcInNwaS1zbGF2ZS1zeXN0ZW0tY29udHJvbC5jXCIsXG4gICAgXCJzcGktc2xhdmUtdGltZS5jXCIsXG4gICAgXCJzcGktc24tZi1vc3BpLmNcIixcbiAgICBcInNwaS1zcGFjZW1pdC1rMS5jXCIsXG4gICAgXCJzcGktc3ByZC1hZGkuY1wiLFxuICAgIFwic3BpLXNwcmQuY1wiLFxuICAgIFwic3BpLXN0LXNzYzQuY1wiLFxuICAgIFwic3BpLXN0bTMyLW9zcGkuY1wiLFxuICAgIFwic3BpLXN0bTMyLXFzcGkuY1wiLFxuICAgIFwic3BpLXN0bTMyLmNcIixcbiAgICBcInNwaS1zdW40aS5jXCIsXG4gICAgXCJzcGktc3VuNmkuY1wiLFxuICAgIFwic3BpLXN1bnBsdXMtc3A3MDIxLmNcIixcbiAgICBcInNwaS1zeW5xdWFjZXIuY1wiLFxuICAgIFwic3BpLXRlZ3JhMTE0LmNcIixcbiAgICBcInNwaS10ZWdyYTIwLXNmbGFzaC5jXCIsXG4gICAgXCJzcGktdGVncmEyMC1zbGluay5jXCIsXG4gICAgXCJzcGktdGVncmEyMTAtcXVhZC5jXCIsXG4gICAgXCJzcGktdGVzdC5oXCIsXG4gICAgXCJzcGktdGktcXNwaS5jXCIsXG4gICAgXCJzcGktdGxlNjJ4MC5jXCIsXG4gICAgXCJzcGktdG9wY2xpZmYtcGNoLmNcIixcbiAgICBcInNwaS11bmlwaGllci5jXCIsXG4gICAgXCJzcGktdmlydGlvLmNcIixcbiAgICBcInNwaS13cGNtLWZpdS5jXCIsXG4gICAgXCJzcGkteGNvbW0uY1wiLFxuICAgIFwic3BpLXhpbGlueC5jXCIsXG4gICAgXCJzcGkteGxwLmNcIixcbiAgICBcInNwaS14dGVuc2EteHRmcGdhLmNcIixcbiAgICBcInNwaS16eW5xLXFzcGkuY1wiLFxuICAgIFwic3BpLXp5bnFtcC1ncXNwaS5jXCIsXG4gICAgXCJzcGkuY1wiLFxuICAgIFwic3BpZGV2LmNcIlxuICBdLFxuICBcIlN1YmRpcnNcIjogW1xuICAgIFwidGVzdHNcIlxuICBdXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xM1QwNToxNzoyOC4xMTEzNDc1MDFaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6ODYzNzI3NDU3NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXNpcyBvZiBUUkY3OTcwQSBEcml2ZXIgUmVhY2hhYmlsaXR5IGZvciBGdXp6aW5nKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBXZSdyZSBsb29raW5nIGF0IHRoZSBgdHJmNzk3MGFgIGRyaXZlciwgc3BlY2lmaWNhbGx5IHRoZSBgdHJmNzk3MGFfcHJvYmVgIGZ1bmN0aW9uLiBUaGUgY29kZSBpbW1lZGlhdGVseSBmbGFncyBhIERldmljZSBUcmVlIGRlcGVuZGVuY3kgKGBzcGktXHUwMDNlZGV2Lm9mX25vZGVgIG11c3QgYmUgbm9uLU5VTEwpLiAgVGhpcyBpcyB0aGUgZmlyc3QgcmVkIGZsYWcsIGFzIHRoaXMgaW1wbGllcyBhIHNwZWNpZmljIGhhcmR3YXJlIGNvbmZpZ3VyYXRpb24gZGVmaW5lZCBpbiB0aGUgRGV2aWNlIFRyZWUuICBGdXJ0aGVyIGRvd24sIGl0IGNhbGxzIGZvciBhIEdQSU8gZW5hYmxlIGxpbmUgKGB0aSxlbmFibGVgKSBhbmQgYSB2b2x0YWdlIHJlZ3VsYXRvciAoXCJ2aW5cIikuIFRoaXMgaW1wbGllcyBwaHlzaWNhbCBoYXJkd2FyZSBpbnRlcmFjdGlvbiwgYW5kIHRoZSByZWxpYW5jZSBvbiBEZXZpY2UgVHJlZSBjb25maWd1cmF0aW9uIHRlbGxzIHVzIHRoaXMgaXNuJ3QgYSB2aXJ0dWFsIGRldmljZS5cblxuVGhlIHRhcmdldCBpcyBBTUQ2NCwgd2hpY2ggaXMgaW1wb3J0YW50LiBBTUQ2NCB0eXBpY2FsbHkgdXNlcyBBQ1BJLCBub3QgRGV2aWNlIFRyZWUsIHNvIGltbWVkaWF0ZWx5IHRoaXMgaXMgYSBwcm9ibGVtLiAgV2UncmUgdGFsa2luZyBhYm91dCBhICpwaHlzaWNhbCogTkZDIHRyYW5zY2VpdmVyIEFTSUMg4oCTIHRoZSBUUkY3OTcwQSDigJMgY29ubmVjdGVkIHZpYSBhbiBTUEkgYnVzLiAgVGhlc2UgY2hpcHMgYXJlIGNvbW1vbmx5IGZvdW5kIGluIGVtYmVkZGVkIHN5c3RlbXMsIHdoaWNoIHRlbmQgdG8gYmUgQVJNLWJhc2VkLCBzdWNoIGFzIHRoZSBpLk1YNiBhcyBzaG93biBpbiBzb21lIGtlcm5lbCBEVFMgZmlsZXMuIFRoZSBpbXBsaWNhdGlvbiBpcyB0aGF0IHdlIHJlcXVpcmUgYSBwaHlzaWNhbCBjaGlwIG9uIGFuIFNQSSBidXMgYW5kIGEgbWF0Y2hpbmcgRGV2aWNlIFRyZWUgY29uZmlndXJhdGlvbiwgdGhhdCBpcyBhIHBoeXNpY2FsIHRhcmdldC5cblxuUUVNVSwgR0NFLCBhbmQgb3RoZXIgc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzICpkbyBub3QqIGVtdWxhdGUgdGhpcyBjaGlwLiBUaGV5IGFsc28gZG9uJ3QgdHlwaWNhbGx5IGhhdmUgZGV2aWNlIHRyZWUgbm9kZXMgZm9yIFRSRjc5NzBBLiBFdmVuIGlmIHdlICpjb3VsZCogY3JlYXRlIGFuIFNQSSBkZXZpY2UsIHRoZSBkcml2ZXIncyBwcm9iZSBmdW5jdGlvbiBpdHNlbGYgcmV0dXJucyBhbiBlcnJvciBpZiBgbnBgIGlzIE5VTEwuIFRoZSBkcml2ZXIgaXNuJ3QganVzdCBkaWZmaWN1bHQgdG8gcmVhY2g7IGl0J3Mgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLiBUaGUgZ3VpZGUgY2xlYXJseSBzYXlzIHRoYXQgdW5yZWFjaGFibGUgY29kZSBzaG91bGQgbm90IGJlIGZ1enplZC5cblxuTG9va2luZyBmdXJ0aGVyLCBgdHJmNzk3MGFfc3RhcnR1cGAgaXMgb25seSBldmVyIGNhbGxlZCBmcm9tIGB0cmY3OTcwYV9wcm9iZWAgKGR1cmluZyBpbml0aWFsIHNldHVwKSBhbmQgYHRyZjc5NzBhX3Jlc3VtZWAuIFNpbmNlIGB0cmY3OTcwYV9wcm9iZWAgcmVxdWlyZXMgdGhlIGRldmljZSB0cmVlLCB0aGUgZHJpdmVyJ3MgcHJvYmUgaXMgb25seSByZWFjaGFibGUgdmlhIERUIGNvbmZpZ3VyYXRpb24gdGhhdCBpcyBuZXZlciBwcmVzZW50IG9uIHN0YW5kYXJkIGFtZDY0IHN5c3RlbXMgZW11bGF0ZWQgaW4gUUVNVSBvciBHQ0UuXG5cblRodXMsIGJhc2VkIG9uIHRoZSByZWFjaGFiaWxpdHkgZ3VpZGVsaW5lcywgdGhlIGNhbGwgdG8gYHRyZjc5NzBhX3N0YXJ0dXBgIGFuZCB0aGUgY29kZSBpbiBgZHJpdmVycy9uZmMvdHJmNzk3MGEuY2AgYXJlIGNvbXBsZXRlbHkgdW5yZWFjaGFibGUgaW4gYSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50IG9uIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLiAgVGhlcmVmb3JlLCBgV29ydGhGdXp6aW5nYCBpcyB1bmVxdWl2b2NhbGx5IGBmYWxzZWAuIFRoZSByZWFzb25pbmcgaXMgdGhhdCB0aGUgZHJpdmVyIGlzIGRlc2lnbmVkIGZvciBhIHNwZWNpZmljIHBpZWNlIG9mIHBoeXNpY2FsIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIG9yIHNpbXVsYXRlZCwgYW5kIHRoZSBidXMgYW5kIGNvbmZpZ3VyYXRpb24gb2YgdGhlIGRldmljZSBpcyBpbmNvbXBhdGlibGUgd2l0aCB0aGUgdGFyZ2V0IHBsYXRmb3JtLiBUaGVyZSBhcmUgbm8gcmVsZXZhbnQgZm9jdXMgc3ltYm9scyBvciBlbmFibGUgY29uZmlndXJhdGlvbnMgbmVlZGVkLiBUaW1lIHRvIHNldCB0aGUgcmVzdWx0cyFcblxuXG4iLCJJbnB1dFRva2VucyI6NDA4NDQsIk91dHB1dFRva2VucyI6MTU2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMzMSwiVG9vbENhbGxzIjpbImNvZGVzZWFyY2gtZGlyLWluZGV4Il19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTNUMDU6MTc6MzYuNzQ4NjI0ODY2WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjAyNTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgZXJyb3IgaGFuZGxpbmcgaW4gdHJmNzk3MGFfc3RhcnR1cCgpIHdpdGhpbiBkcml2ZXJzL25mYy90cmY3OTcwYS5jLiBUaGUgdHJmNzk3MGEgZHJpdmVyIGlzIGEgZGVkaWNhdGVkIFNQSSBkcml2ZXIgZm9yIFRleGFzIEluc3RydW1lbnRzIFRSRjc5NzBBIE5GQyB0cmFuc2NlaXZlciBjaGlwcywgcmVseWluZyBzdHJpY3RseSBvbiBEZXZpY2UgVHJlZSBiaW5kaW5ncyAoZmFpbGluZyBwcm9iZSBpZiBzcGktXFx1MDAzZWRldi5vZl9ub2RlIGlzIGFic2VudCkgYWxvbmcgd2l0aCBkZWRpY2F0ZWQgR1BJT3MgYW5kIHJlZ3VsYXRvcnMuIFRoaXMgcGh5c2ljYWwgQVNJQyBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS9HQ0UgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIG9uIGFtZDY0LCByZW5kZXJpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBzeXprYWxsZXIgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGVycm9yIGhhbmRsaW5nIGluIHRyZjc5NzBhX3N0YXJ0dXAoKSB3aXRoaW4gZHJpdmVycy9uZmMvdHJmNzk3MGEuYy4gVGhlIHRyZjc5NzBhIGRyaXZlciBpcyBhIGRlZGljYXRlZCBTUEkgZHJpdmVyIGZvciBUZXhhcyBJbnN0cnVtZW50cyBUUkY3OTcwQSBORkMgdHJhbnNjZWl2ZXIgY2hpcHMsIHJlbHlpbmcgc3RyaWN0bHkgb24gRGV2aWNlIFRyZWUgYmluZGluZ3MgKGZhaWxpbmcgcHJvYmUgaWYgc3BpLVxcdTAwM2VkZXYub2Zfbm9kZSBpcyBhYnNlbnQpIGFsb25nIHdpdGggZGVkaWNhdGVkIEdQSU9zIGFuZCByZWd1bGF0b3JzLiBUaGlzIHBoeXNpY2FsIEFTSUMgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUvR0NFIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBvbiBhbWQ2NCwgcmVuZGVyaW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3Igc3l6a2FsbGVyIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xM1QwNToxNzozNi43NDg2NTA1MTZaIiwiU2VxIjoyMSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxMzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },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-workflow2g9wz[1] Phase: Running StartedAt: 2026-09-13 05:17:47 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2g9wz[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-13 05:17:47 +0000 UTC FinishedAt: 2026-09-13 05:17:51 +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,}