Name: series-workflow49v8k Phase: Failed StartedAt: 2026-09-15 00:24:07 +0000 UTC FinishedAt: 2026-09-15 01:05:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflow49v8k[0] Phase: Succeeded StartedAt: 2026-09-15 00:24:07 +0000 UTC FinishedAt: 2026-09-15 01:05:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflow49v8k[0].run-triage Phase: Succeeded StartedAt: 2026-09-15 00:24:07 +0000 UTC FinishedAt: 2026-09-15 01:05:32 +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+CgkJCTx0ZD4yMDI2LzA5LzE1IDAxOjA0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYHRnM19pbml0X29uZWAgaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jYCwgd2hpY2ggaXMgdGhlIFBDSSBwcm9iZSBmdW5jdGlvbiBmb3IgQnJvYWRjb20gVGlnb24zIChCQ001N3h4KSBFdGhlcm5ldCBhZGFwdGVycy4gVGhpcyBkcml2ZXIgdGFyZ2V0cyB2ZW5kb3Itc3BlY2lmaWMgcGh5c2ljYWwgUENJIG5ldHdvcmsgaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciBHQ0UgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBzeXprYWxsZXIgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMDE6MDQ8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA5YWYzNWJmMjJmMGQ5N2RhOTE2NzUzYzc3NzUxMjk5OTU1NGU0YWUwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBTZXAgMTUgMDE6MDQ6MDkgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuY1xuaW5kZXggNzNhNGI1NjliMDNlMy4uNzVjYjBiMGZhYjJmYSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuY1xuQEAgLTE3OTE0LDEyICYjNDM7MTc5MTQsMTMgQEAgc3RhdGljIGludCB0ZzNfaW5pdF9vbmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4gXHR9XG4gXG4gXHRlcnIgPSB0ZzNfZ2V0X2RldmljZV9hZGRyZXNzKHRwLCBhZGRyKTtcbi1cdGlmIChlcnIpIHtcbi1cdFx0ZGV2X2VycihcdTAwMjZwZGV2LVx1MDAzZWRldixcbi1cdFx0XHRcJiMzNDtDb3VsZCBub3Qgb2J0YWluIHZhbGlkIGV0aGVybmV0IGFkZHJlc3MsIGFib3J0aW5nXFxuXCYjMzQ7KTtcbi1cdFx0Z290byBlcnJfb3V0X2FwZXVubWFwO1xuJiM0MztcdGlmICghZXJyKSB7XG4mIzQzO1x0XHRldGhfaHdfYWRkcl9zZXQoZGV2LCBhZGRyKTtcbiYjNDM7XHR9IGVsc2Uge1xuJiM0MztcdFx0ZGV2X3dhcm4oXHUwMDI2cGRldi1cdTAwM2VkZXYsXG4mIzQzO1x0XHRcdCBcJiMzNDtDb3VsZCBub3Qgb2J0YWluIHZhbGlkIGV0aGVybmV0IGFkZHJlc3MsIHVzaW5nIGEgcmFuZG9tIGFkZHJlc3NcXG5cJiMzNDspO1xuJiM0MztcdFx0ZXRoX2h3X2FkZHJfcmFuZG9tKGRldik7XG4gXHR9XG4tXHRldGhfaHdfYWRkcl9zZXQoZGV2LCBhZGRyKTtcbiBcbiBcdGludG1ieCA9IE1BSUxCT1hfSU5URVJSVVBUXzAgJiM0MzsgVEczXzY0QklUX1JFR19MT1c7XG4gXHRyY3ZtYnggPSBNQUlMQk9YX1JDVlJFVF9DT05fSURYXzAgJiM0MzsgVEczXzY0QklUX1JFR19MT1c7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMDE6MDQ8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYHRnM19pbml0X29uZWAgaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jYCwgd2hpY2ggaXMgdGhlIFBDSSBwcm9iZSBmdW5jdGlvbiBmb3IgQnJvYWRjb20gVGlnb24zIChCQ001N3h4KSBFdGhlcm5ldCBhZGFwdGVycy4gVGhpcyBkcml2ZXIgdGFyZ2V0cyB2ZW5kb3Itc3BlY2lmaWMgcGh5c2ljYWwgUENJIG5ldHdvcmsgaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciBHQ0UgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBzeXprYWxsZXIgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzcwp0b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpUaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLAphbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLgoKLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURToKICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkCiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS4KICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsCiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLgoKLSBETyBOT1QgQkxJTkRMWSBUUlVTVCAmIzM0O05PIEZVTkNUSU9OQUwgQ0hBTkdFJiMzNDsgKE5GQ0kpIE9SICYjMzQ7UkVGQUNUT1JJTkcmIzM0OyBDTEFJTVM6CiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyAmIzM0O2NsZWFudXBzJiMzNDssICYjMzQ7cmVmYWN0b3JpbmdzJiMzNDssIG9yIHN0YXRlCiAgJiMzNDtObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZCYjMzQ7LiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS4KICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnQKICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy4KICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLgoKLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDoKICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosCiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuCiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlcgogIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6CgotIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6CiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuCiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLykKICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy4KICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzCiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLgogICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLgotIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZToKICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOgogICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nCiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy4KICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzoKLSBDb3JlIFN1YnN5c3RlbXM6CiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksCiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuCi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOgogICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLgotIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczoKICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy4KLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOgogICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOgoKLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6CiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXMKICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdAogIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLgogIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyAmIzM0O2ZvY3VzZWQmIzM0OywKICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuCgotIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzoKICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHMKICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy4KCi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOgogIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2sKICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy4KICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXIKICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo1LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6Ci0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KLSBDaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLgotIFN0cmlwIGFueSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA5YWYzNWJmMjJmMGQ5N2RhOTE2NzUzYzc3NzUxMjk5OTU1NGU0YWUwCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFR1ZSBTZXAgMTUgMDE6MDQ6MDkgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jCmluZGV4IDczYTRiNTY5YjAzZTMuLjc1Y2IwYjBmYWIyZmEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jCkBAIC0xNzkxNCwxMiAmIzQzOzE3OTE0LDEzIEBAIHN0YXRpYyBpbnQgdGczX2luaXRfb25lKHN0cnVjdCBwY2lfZGV2ICpwZGV2LAogCX0KIAogCWVyciA9IHRnM19nZXRfZGV2aWNlX2FkZHJlc3ModHAsIGFkZHIpOwotCWlmIChlcnIpIHsKLQkJZGV2X2VycigmYW1wO3BkZXYtJmd0O2RldiwKLQkJCSYjMzQ7Q291bGQgbm90IG9idGFpbiB2YWxpZCBldGhlcm5ldCBhZGRyZXNzLCBhYm9ydGluZ1xuJiMzNDspOwotCQlnb3RvIGVycl9vdXRfYXBldW5tYXA7CiYjNDM7CWlmICghZXJyKSB7CiYjNDM7CQlldGhfaHdfYWRkcl9zZXQoZGV2LCBhZGRyKTsKJiM0MzsJfSBlbHNlIHsKJiM0MzsJCWRldl93YXJuKCZhbXA7cGRldi0mZ3Q7ZGV2LAomIzQzOwkJCSAmIzM0O0NvdWxkIG5vdCBvYnRhaW4gdmFsaWQgZXRoZXJuZXQgYWRkcmVzcywgdXNpbmcgYSByYW5kb20gYWRkcmVzc1xuJiMzNDspOwomIzQzOwkJZXRoX2h3X2FkZHJfcmFuZG9tKGRldik7CiAJfQotCWV0aF9od19hZGRyX3NldChkZXYsIGFkZHIpOwogCiAJaW50bWJ4ID0gTUFJTEJPWF9JTlRFUlJVUFRfMCAmIzQzOyBURzNfNjRCSVRfUkVHX0xPVzsKIAlyY3ZtYnggPSBNQUlMQk9YX1JDVlJFVF9DT05fSURYXzAgJiM0MzsgVEczXzY0QklUX1JFR19MT1c7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDAxOjA0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwMzAKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiA3OTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSB0ZzMgRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jYCwgc3BlY2lmaWNhbGx5IHRoZSBgdGczX2luaXRfb25lYCBmdW5jdGlvbi4gSXQgc2VlbXMgdG8gYmUgY2hhbmdpbmcgaG93IHRoZSBldGhlcm5ldCBhZGRyZXNzIGlzIGhhbmRsZWQgZHVyaW5nIGRldmljZSBpbml0aWFsaXphdGlvbi4gSSBzZWUgdGhlIG9yaWdpbmFsIGNvZGUgdHJpZXMgdG8gZ2V0IGEgdmFsaWQgZXRoZXJuZXQgYWRkcmVzcyBhbmQgYmFpbHMgb3V0IGlmIGl0IGNhbiYjMzk7dCwgYnV0IHRoZSBtb2RpZmllZCBjb2RlIG5vdyBhdHRlbXB0cyB0byBnZXQgYSByYW5kb20gTUFDIGFkZHJlc3MgaWYgdGhlIGhhcmR3YXJlIGFkZHJlc3MgY2FuJiMzOTt0IGJlIG9idGFpbmVkLgoKTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHF1aWNrbHkgdW5kZXJzdGFuZCB0aGUgY29udGV4dC4gYHRnM2AgaXMgdGhlIEJyb2FkY29tIFRpZ29uMyBldGhlcm5ldCBkcml2ZXIsIGxpa2VseSBmb3IgUENJIEdpZ2FiaXQgRXRoZXJuZXQgYWRhcHRlcnMgbGlrZSB0aGUgQkNNNTd4eCBzZXJpZXMuIFRoZSBrZXkgdGhpbmcgaXMsIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIGB0ZzNgIGlzIHNvbWV0aGluZyBRRU1VIGVtdWxhdGVzLiBJZiBpdCBkb2VzbiYjMzk7dCwgd2UgYXJlIGRlYWxpbmcgd2l0aCBwaHlzaWNhbCBoYXJkd2FyZSwgYW5kIHRoYXQmIzM5O3MgYSBkaWZmZXJlbnQgYmVhc3QuIEJhc2VkIG9uIHRoZSBwcm9tcHQsIGNlcnRhaW4gaGFyZHdhcmUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGR1ZSB0byBRRU1VIGxpbWl0YXRpb25zLCBzbyB0aGF0IGlzIG15IGltbWVkaWF0ZSBjb25jZXJuLgoKTGV0JiMzOTtzIHNlZSB3aGF0IHRoZSBwcm9tcHQgc2F5cyBhYm91dCB0aGlzIC0gYWgsIGl0JiMzOTtzIHNwZWNpZmljIGFib3V0IGNlcnRhaW4gaGFyZHdhcmUgdHlwZXMgdGhhdCBRRU1VIGRvZXMgKm5vdCogZW11bGF0ZS4gV2UgbmVlZCB0byBjaGVjayBpZiB0aGUgZHJpdmVyIGlzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMsIHNpbmNlIHRob3NlIGFyZSBhY2Nlc3NpYmxlLgoKQSBxdWljayBjaGVjayBjb25maXJtcyBteSBzdXNwaWNpb246IFFFTVUgZG9lc24mIzM5O3Qgb2ZmZXIgZW11bGF0aW9uIGZvciB0aGUgYHRnM2Agb3IgdGhlIEJyb2FkY29tIE5ldFh0cmVtZSBjYXJkcy4gSXQgbGlzdHMgYSBkaWZmZXJlbnQgc2V0IG9mIHN1cHBvcnRlZCBOSUNzOiBlMTAwMCwgaWdiLCB2aXJ0aW8tbmV0LCBldGMuLCBidXQgbm90aGluZyBmb3IgdGhlIFRpZ29uMy4gVGhhdCBtYWtlcyB0aGlzIGhhcmR3YXJlIHBvdGVudGlhbGx5IHVucmVhY2hhYmxlIGZvciBzdGFuZGFyZCB0ZXN0aW5nIHdpdGhpbiB0aGUgY29uZmluZXMgb2YgYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4KCk5vdywgZXZlbiBpZiBzb21lb25lIGhhZCBhY2Nlc3MgdG8gdGhlIGhhcmR3YXJlIG9yIGEgY3VzdG9tIGVtdWxhdGVkIGVudmlyb25tZW50LCB0aGUgcGF0Y2ggbW9kaWZpZXMgYHRnM19pbml0X29uZWAuIFRoaXMgZnVuY3Rpb24gaXMgcGFydCBvZiB0aGUgYHBjaV9kcml2ZXJgJiMzOTtzIGAucHJvYmVgIGZ1bmN0aW9uLiBUaGlzIG1lYW5zIHRoYXQgdGhpcyBjb2RlIGlzIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIHRoZSAqaW5pdGlhbCogcHJvYmUgb2YgdGhlIFBDSSBkZXZpY2UgKGF0IGJvb3QsIG9yIGhvdHBsdWcpLiBTbyB0aGlzIGNoYW5nZSBpcyBvbmx5IHJlbGV2YW50IGR1cmluZyBkZXZpY2UgaW5pdGlhbGl6YXRpb24uIFRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBhcmUgaW1wb3J0YW50LCBhbmQgbmVlZCBmdXJ0aGVyIGludmVzdGlnYXRpb24uCgpTbywgaW4gc3VtbWFyeSwgdGhpcyBwYXRjaCBpcyBwcm9iYWJseSBub3Qgc29tZXRoaW5nIHRlc3RhYmxlIHdpdGggc3RhbmRhcmQgUUVNVTsgaXQgbGlrZWx5IHJlcXVpcmVzIGVpdGhlciBwaHlzaWNhbCBoYXJkd2FyZSBvciBhIGN1c3RvbSBlbnZpcm9ubWVudC4gSSBzaG91bGQgc2VhcmNoIHRvIGJlIHN1cmUgaXQgaXMgbm90IGluIHRoZSBlbnZpcm9ubWVudHMgd2UgYXJlIHVzaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDAxOjA0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0NPTkZJR19USUdPTjMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9NYWtlZmlsZT0xMz1vYmotJChDT05GSUdfU0IxMjUwX01BQykgJiM0Mzs9IHNiMTI1MC1tYWMub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vTWFrZWZpbGU6MTQ6b2JqLSQoQ09ORklHX1RJR09OMykgJiM0Mzs9IHRnMy5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9NYWtlZmlsZS0xNS1vYmotJChDT05GSUdfQkdNQUMpICYjNDM7PSBiZ21hYy5vXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmM9ODA4PXN0YXRpYyBpbnQgdGczX2FwZV9ldmVudF9sb2NrKHN0cnVjdCB0ZzMgKnRwLCB1MzIgdGltZW91dF91cylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYy04MjgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYzo4Mjk6I2lmZGVmIENPTkZJR19USUdPTjNfSFdNT05cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jLTgzMC1zdGF0aWMgaW50IHRnM19hcGVfd2FpdF9mb3JfZXZlbnQoc3RydWN0IHRnMyAqdHAsIHUzMiB0aW1lb3V0X3VzKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jPTEwODYwPXN0YXRpYyBpbnQgdGczX2luaXRfaHcoc3RydWN0IHRnMyAqdHAsIGJvb2wgcmVzZXRfcGh5KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jLTEwODc1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmM6MTA4NzY6I2lmZGVmIENPTkZJR19USUdPTjNfSFdNT05cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jLTEwODc3LXN0YXRpYyB2b2lkIHRnM19zZF9zY2FuX3NjcmF0Y2hwYWQoc3RydWN0IHRnMyAqdHAsIHN0cnVjdCB0ZzNfb2NpciAqb2Npcilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYz0xMDk1OT1zdGF0aWMgaW5saW5lIHZvaWQgdGczX2h3bW9uX29wZW4oc3RydWN0IHRnMyAqdHApIHsgfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmM6MTA5NjA6I2VuZGlmIC8qIENPTkZJR19USUdPTjNfSFdNT04gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jLTEwOTYxLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDAxOjA0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ4NTQKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOgoKKipFeGFtaW5pbmcgdGhlIEJyb2FkY29tIEV0aGVybmV0IERyaXZlciBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkgbmVlZCB0byBkaXZlIGludG8gdGhlIEJyb2FkY29tIEV0aGVybmV0IGRyaXZlciBjb25maWd1cmF0aW9uLiBMZXQmIzM5O3Mgc3RhcnQgd2l0aCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZ2AuIEkgYWxyZWFkeSBoYXZlIGEgcHJldHR5IGdvb2QgbWVudGFsIG1vZGVsIG9mIGhvdyB0aGVzZSBLY29uZmlnIGZpbGVzIGFyZSBzdHJ1Y3R1cmVkLiBJJiMzOTttIGV4cGVjdGluZyB0byBmaW5kIHRoZSBzdGFuZGFyZCBzZWxlY3Rpb24gY3JpdGVyaWEsIGRlcGVuZGVuY2llcywgYW5kIGRlZmF1bHQgc2V0dGluZ3MgdGhhdCBkZXRlcm1pbmUgd2hpY2ggQnJvYWRjb20gRXRoZXJuZXQgZHJpdmVycyBnZXQgY29tcGlsZWQgaW50byB0aGUga2VybmVsLiBNeSBpbml0aWFsIGZvY3VzIHdpbGwgYmUgb24gdW5kZXJzdGFuZGluZyB0aGUgYXZhaWxhYmxlIG9wdGlvbnMsIGlkZW50aWZ5aW5nIGFueSBuZXcgb3IgY2hhbmdlZCBjb25maWd1cmF0aW9ucyBzaW5jZSBteSBsYXN0IHJldmlldywgYW5kIHNlZWluZyBpZiB0aGVyZSBhcmUgYW55IG9idmlvdXMgY29uZmxpY3RzIG9yIGRlcGVuZGVuY2llcyB0aGF0IGp1bXAgb3V0IGF0IG1lLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciB0aGluZ3MgbGlrZTogd2hpY2ggc3BlY2lmaWMgQnJvYWRjb20gY2hpcHNldHMgYXJlIHN1cHBvcnRlZD8gQXJlIHRoZXJlIGFueSBvcHRpb25zIGZvciBwb3dlciBtYW5hZ2VtZW50IG9yIHNwZWNpZmljIGZlYXR1cmVzPyBBcmUgdGhlcmUgYW55IG9idmlvdXMgc2VjdXJpdHkgb3IgcGVyZm9ybWFuY2UtcmVsYXRlZCBzZXR0aW5ncyB0aGF0IEkgc2hvdWxkIGJlIGF3YXJlIG9mPyBJJiMzOTtsbCBwcm9iYWJseSBjcm9zcy1yZWZlcmVuY2UgdGhpcyB3aXRoIHRoZSByZWxldmFudCBzb3VyY2UgY29kZSBsYXRlciwgYnV0IHRoaXMgS2NvbmZpZyBpcyB0aGUgYmVzdCBwbGFjZSB0byBnZXQgYSBoaWdoLWxldmVsIG92ZXJ2aWV3IG9mIHRoZSBkcml2ZXImIzM5O3MgY2FwYWJpbGl0aWVzIGFuZCBjb25maWd1cmFiaWxpdHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMDE6MDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFRJR09OMyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWc9MTEwPWNvbmZpZyBTQjEyNTBfTUFDXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZy0xMjItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnOjEyMzpjb25maWcgVElHT04zXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnLTEyNC1cdHRyaXN0YXRlIFwmIzM0O0Jyb2FkY29tIFRpZ29uMyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZy0xMzQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnOjEzNTpjb25maWcgVElHT04zX0hXTU9OXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnLTEzNi1cdGJvb2wgXCYjMzQ7QnJvYWRjb20gVGlnb24zIEhXTU9OIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAwMTowNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MzIxCgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgdGhlIFRJR09OMyBLY29uZmlnKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhlIEtjb25maWcgZm9yIHRoZSBUSUdPTjMuIEltbWVkaWF0ZWx5LCBJJiMzOTttIHRoaW5raW5nIGFib3V0IGhvdyB0aGlzIGNvbmZpZ3VyYXRpb24gZmlsZSBzdHJ1Y3R1cmVzIHRoZSBvcHRpb25zIGF2YWlsYWJsZSBmb3IgdGhpcyBzcGVjaWZpYyBuZXR3b3JrIGludGVyZmFjZSBjYXJkLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciB0aGUgdXN1YWwgc3VzcGVjdHM6IHRoZSBkZXZpY2UgZHJpdmVyJiMzOTtzIGNvcmUgZmVhdHVyZXMsIGl0cyBtb2R1bGFyaXR5LCBwb3RlbnRpYWwgZGVidWdnaW5nIGZsYWdzLCBhbmQgcGVyaGFwcyBzb21lIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBzZXR0aW5ncy4gSSYjMzk7bSBob3BpbmcgdG8gcXVpY2tseSBpZGVudGlmeSB0aGUga2V5IHZhcmlhYmxlcyB0aGF0IGNvbnRyb2wgaXRzIGJlaGF2aW9yIHdpdGhpbiB0aGUgTGludXgga2VybmVsLiBJdOKAmWxsIGJlIHVzZWZ1bCB0byBzZWUgaG93IHRoZSB2YXJpb3VzIGZlYXR1cmVzIGFyZSBndWFyZGVkIGJ5IGRlcGVuZGVuY2llcywgd2hpY2ggY2FuIGdpdmUgaW5zaWdodCBpbnRvIHRoZSBhcmNoaXRlY3R1cmUgYXNzdW1wdGlvbnMuIEkmIzM5O20gYW50aWNpcGF0aW5nIHRoZSBzdGFuZGFyZCBjb25kaXRpb25hbCBsb2dpYzogYGlmYCwgYHNlbGVjdGAsIGBkZXBlbmRzIG9uYCwgYW5kIG1heWJlIGV2ZW4gc29tZSBgZGVmYXVsdGAgdmFsdWVzLiBJIGFsc28gd2FudCB0byBvYnNlcnZlIHRoZSBoZWxwIHRleHQgZm9yIGEgcXVpY2sgcmVtaW5kZXIuIFNwZWNpZmljYWxseSwgSSYjMzk7bSBpbnRlcmVzdGVkIGluIGxvb2tpbmcgZm9yIGFueSBwb3RlbnRpYWwgY29tcGlsZS10aW1lIG9wdGlvbnMgZm9yIHRoaW5ncyBsaWtlIFZMQU4gc3VwcG9ydCwganVtYm8gZnJhbWVzLCBjaGVja3N1bSBvZmZsb2FkLCBvciBwZXJoYXBzIGFkdmFuY2VkIGZlYXR1cmVzIGxpa2UgZmxvdyBjb250cm9sLiBBcmUgdGhlcmUgYW55IGxlZ2FjeSBzZXR0aW5ncyBpbiB0aGVyZT8gSSBhbHNvIHdvbmRlciBpZiBpdCBoYXMgaXRzIG93biB1bmlxdWUgS2NvbmZpZyBsYW5ndWFnZS4gS25vd2luZyB0aGlzIHdpbGwgZ2l2ZSBtZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aGUgZHJpdmVyIGlzIGVuYWJsZWQsIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUga2VybmVsLCBhbmQgaG93IGVhc3kgaXQgaXMgdG8gY3VzdG9taXplIGZvciBzcGVjaWZpYyBuZWVkcy4gTGV0JiMzOTtzIHNlZSB3aGF0IHdlJiMzOTt2ZSBnb3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMDE6MDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTIwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxMjA6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZVxuIDEyMTpcdFx0ICB3aWxsIGJlIGNhbGxlZCBzYjEyNTAtbWFjLlxuIDEyMjpcdFxuIDEyMzpcdGNvbmZpZyBUSUdPTjNcbiAxMjQ6XHRcdHRyaXN0YXRlIFwmIzM0O0Jyb2FkY29tIFRpZ29uMyBzdXBwb3J0XCYjMzQ7XG4gMTI1Olx0XHRkZXBlbmRzIG9uIFBDSVxuIDEyNjpcdFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxuIDEyNzpcdFx0c2VsZWN0IENSQzMyXG4gMTI4Olx0XHRzZWxlY3QgUEhZTElCXG4gMTI5Olx0XHRoZWxwXG4gMTMwOlx0XHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIEJyb2FkY29tIFRpZ29uMyBiYXNlZCBnaWdhYml0IEV0aGVybmV0IGNhcmRzLlxuIDEzMTpcdFxuIDEzMjpcdFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlXG4gMTMzOlx0XHQgIHdpbGwgYmUgY2FsbGVkIHRnMy4gIFRoaXMgaXMgcmVjb21tZW5kZWQuXG4gMTM0Olx0XG4gMTM1Olx0Y29uZmlnIFRJR09OM19IV01PTlxuIDEzNjpcdFx0Ym9vbCBcJiMzNDtCcm9hZGNvbSBUaWdvbjMgSFdNT04gc3VwcG9ydFwmIzM0O1xuIDEzNzpcdFx0ZGVmYXVsdCB5XG4gMTM4Olx0XHRkZXBlbmRzIG9uIFRJR09OMyBcdTAwMjZcdTAwMjYgSFdNT04gXHUwMDI2XHUwMDI2ICEoVElHT04zPXkgXHUwMDI2XHUwMDI2IEhXTU9OPW0pXG4gMTM5Olx0XHRoZWxwXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMDE6MDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTk3NAoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJiMzOTttIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwcm9jZXNzOgoKKipEaXZpbmcgaW50byB0ZzNfaW5pdF9vbmUqKgoKT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGluaXRpYWxpemF0aW9uIHByb2Nlc3MgZm9yIHRoaXMgYHRnM2AgZHJpdmVyLiBTcGVjaWZpY2FsbHksIEkgd2FudCB0byBkcmlsbCBkb3duIGludG8gd2hhdCB0aGUgYHRnM19pbml0X29uZWAgZnVuY3Rpb24gKmFjdHVhbGx5KiBkb2VzLiBNeSBmaXJzdCBzdGVwIGlzIHRvIHRyYWNlIGl0cyBleGVjdXRpb24gYW5kIHVuZGVyc3RhbmQgaG93IGl0JiMzOTtzIGludGVncmF0ZWQgaW50byB0aGUgbGFyZ2VyIGRyaXZlciBmcmFtZXdvcmsuIFdoZXJlIGlzIHRoaXMgZnVuY3Rpb24gZGVjbGFyZWQ/IFdoZXJlIGRvZXMgdGhlIGtlcm5lbCBhY3R1YWxseSBjYWxsIGl0PyBLbm93aW5nIHRoZSBjYWxsIGNoYWluIGlzIGtleSB0byB1bmRlcnN0YW5kaW5nIGl0cyBwdXJwb3NlIGFuZCBpdHMgcm9sZSBpbiB0aGUgc3lzdGVtLiBJIGV4cGVjdCB0aGlzIHdpbGwgbGVhZCBtZSB0byB0aGUgcmVsZXZhbnQgUENJIGRldmljZSBwcm9iZSBmdW5jdGlvbiwgYnV0IEkgbmVlZCB0byBtYWtlIHN1cmUgSSBhbSBvbiB0aGUgcmlnaHQgdHJhY2suCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDAxOjA0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3RnM19pbml0X29uZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jPTE3NjQ5PXN0YXRpYyB2b2lkIHRnM19pbml0X2NvYWwoc3RydWN0IHRnMyAqdHApXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmMtMTc2NzktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYzoxNzY4MDpzdGF0aWMgaW50IHRnM19pbml0X29uZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jLTE3NjgxLVx0XHRcdFx0ICBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jPTE4NDI3PXN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciB0ZzNfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jLTE4NDI5LVx0LmlkX3RhYmxlXHQ9IHRnM19wY2lfdGJsLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmM6MTg0MzA6XHQucHJvYmVcdFx0PSB0ZzNfaW5pdF9vbmUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYy0xODQzMS1cdC5yZW1vdmVcdFx0PSB0ZzNfcmVtb3ZlX29uZSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMDE6MDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjQ3NgoJCQkJCQkJb3V0cHV0OiAxMjEKCQkJCQkJCXRob3VnaHRzOiA2NzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHlzaXMgb2YgdGczX2luaXRfb25lIGZvciBGdXp6aW5nIFN1aXRhYmlsaXR5KioKCk9rYXksIHNvIGB0ZzNfaW5pdF9vbmVgIGlzIHRoZSBwcm9iZSBmdW5jdGlvbiB3aXRoaW4gdGhlIGB0ZzNfZHJpdmVyYCDigJMgdGhhdCYjMzk7cyB0aGUgc3RhcnRpbmcgcG9pbnQuIExldCYjMzk7cyBzZWUgaWYgdGhpcyBjb2RlIGNoYW5nZSBtYWtlcyBzZW5zZSB0byBmdXp6LiBUaGUgcHJvbXB0JiMzOTtzIG5lZ2F0aXZlIGNyaXRlcmlhIGFyZSBwcmV0dHkgY2xlYXI6IHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiB0aGUgbW9kaWZpZWQgY29kZSBmYWxscyAqc3RyaWN0bHkqIGludG8gb25lIG9mIGEgZmV3IGNhdGVnb3JpZXMgb2YgdW5yZWFjaGFibGUgaGFyZHdhcmUuCgpUaGUgQnJvYWRjb20gVGlnb24zICh0ZzMpIHNwZWNpZmljYWxseSB0YXJnZXRzIHBoeXNpY2FsIFBDSSBuZXR3b3JrIGNhcmRzIChCQ001N3h4IHNlcmllcykuIFRoYXQmIzM5O3MgYSBrZXkgZGlzdGluY3Rpb247IGl0JiMzOTtzICpub3QqIGVtdWxhdGVkIGJ5IHN0YW5kYXJkIFFFTVUgb3IgYXZhaWxhYmxlIGluIGVudmlyb25tZW50cyBsaWtlIEdDRS4gVGh1cywgaXQmIzM5O3Mgbm90IHByZXNlbnQgaW4gYSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gVGhpcyBpcyBnb29kIGluZm9ybWF0aW9uLgoKTm93LCB0aGUgbW9kaWZpZWQgY29kZSBpcyBpbiBgdGczX2luaXRfb25lKClgLCB0aGUgcHJvYmUgY2FsbGJhY2suIFRoaXMgYC5wcm9iZWAgZnVuY3Rpb24gcnVucyBvbmx5IHdoZW4gdGhhdCAqcGh5c2ljYWwqIGhhcmR3YXJlIGdldHMgcHJvYmVkLiBTaW5jZSB0aGlzIHBoeXNpY2FsIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiB0aGUgZnV6emluZyBlbnZpcm9ubWVudHMsIHRoaXMgZnVuY3Rpb24gd291bGQgbm90IHJ1bi4gVGhhdCBtYWtlcyB0aGUgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcgcHVycG9zZXMuIEl0IGlzIHVucmVhY2hhYmxlIGR1ZSB0byB0aGUgcmVxdWlyZWQgaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KClRoZXJlZm9yZTogYFdvcnRoRnV6emluZ2Agc2hvdWxkIGJlIGBmYWxzZWAuCgpJIGNhbiBzcGVjaWZ5IHRoZSBgRW5hYmxlQ29uZmlnc2AgYXMgZWl0aGVyIGBbXWAgb3IgYFsmIzM0O1RJR09OMyYjMzQ7LCAmIzM0O1BDSSYjMzQ7XWAuIFRoZXkgYXJlIG5vdCBpbXBvcnRhbnQgc2luY2UgYFdvcnRoRnV6emluZ2AgaXMgYGZhbHNlYC4KCkFzIGZvciBgRm9jdXNTeW1ib2xzYCwgZXZlbiB0aG91Z2ggYHRnM19pbml0X29uZWAgd291bGQgYmUgdGhlIGxvZ2ljYWwgY2hvaWNlLCBpdCBzaG91bGQgYmUgc2V0IHRvIGBbXWAgd2hlbiBgV29ydGhGdXp6aW5nYCBpcyBgZmFsc2VgLiBUaGUgZnV6emVyIHdpbGwgaWdub3JlIHRoZSBjb2RlIGVudGlyZWx5IGlmIGl0IHRoaW5rcyBpdCBpcyB1bnJlYWNoYWJsZS4KCkxldCYjMzk7cyBkb3VibGUtY2hlY2sgdGhlIGd1aWRlbGluZXMuLi4gQWgsIHRoZSBgc2V0LXJlc3VsdHNgIHRvb2wgaXMgdXNlZCBvbmNlLCBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LiBHb29kLgoKVG8gc29saWRpZnkgbXkgdGhpbmtpbmcsIGxldCYjMzk7cyBsb29rIGF0IHRoZSBwYXRjaDogSXQgbW9kaWZpZXMgYHRnM19pbml0X29uZWAsIHRoZSBwcm9iZSBjYWxsYmFjayBmb3IgYSBCcm9hZGNvbSBUaWdvbjMgUENJIEdpZ2FiaXQgRXRoZXJuZXQgYWRhcHRlci4gVGhlIGRyaXZlciBuZWNlc3NpdGF0ZXMgc3BlY2lmaWMgcGh5c2ljYWwgaGFyZHdhcmUgKEJDTTU3eHggc2VyaWVzIFBDSSBuZXR3b3JrIGNhcmRzKSB0aGF0IGFyZSBub3QgZW11bGF0ZWQgaW4gdHlwaWNhbCBRRU1VIG9yIEdDRSB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cy4gVGh1cywgdGhlIGNvZGUgaXMgdW5yZWFjaGFibGUuCgpPbmx5IGBkcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuY2Agd2FzIGNoYW5nZWQgaW4gY29tbWl0IGA5YWYzNWJmMjJmMGQ5N2RhOTE2NzUzYzc3NzUxMjk5OTU1NGU0YWUwYC4KCkV2ZXJ5dGhpbmcgY2hlY2tzIG91dC4gSSYjMzk7bSBjb25maWRlbnQuIFRpbWUgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAwMTowNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGB0ZzNfaW5pdF9vbmVgIGluIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuY2AsIHdoaWNoIGlzIHRoZSBQQ0kgcHJvYmUgZnVuY3Rpb24gZm9yIEJyb2FkY29tIFRpZ29uMyAoQkNNNTd4eCkgRXRoZXJuZXQgYWRhcHRlcnMuIFRoaXMgZHJpdmVyIHRhcmdldHMgdmVuZG9yLXNwZWNpZmljIHBoeXNpY2FsIFBDSSBuZXR3b3JrIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3Igc3l6a2FsbGVyIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgdGczX2luaXRfb25lYCBpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmNgLCB3aGljaCBpcyB0aGUgUENJIHByb2JlIGZ1bmN0aW9uIGZvciBCcm9hZGNvbSBUaWdvbjMgKEJDTTU3eHgpIEV0aGVybmV0IGFkYXB0ZXJzLiBUaGlzIGRyaXZlciB0YXJnZXRzIHZlbmRvci1zcGVjaWZpYyBwaHlzaWNhbCBQQ0kgbmV0d29yayBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIHN5emthbGxlciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMDE6MDQ8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDAxOjA0OjA5LjgxNDYxMTczM1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4NTc3OTc5ODgyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYHRnM19pbml0X29uZWAgaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jYCwgd2hpY2ggaXMgdGhlIFBDSSBwcm9iZSBmdW5jdGlvbiBmb3IgQnJvYWRjb20gVGlnb24zIChCQ001N3h4KSBFdGhlcm5ldCBhZGFwdGVycy4gVGhpcyBkcml2ZXIgdGFyZ2V0cyB2ZW5kb3Itc3BlY2lmaWMgcGh5c2ljYWwgUENJIG5ldHdvcmsgaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciBHQ0UgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBzeXprYWxsZXIgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDAxOjA0OjA5LjgxNDYxNjg0NFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTY0MjgxMDYzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgOWFmMzViZjIyZjBkOTdkYTkxNjc1M2M3Nzc1MTI5OTk1NTRlNGFlMFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVHVlIFNlcCAxNSAwMTowNDowOSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jXFxuaW5kZXggNzNhNGI1NjliMDNlMy4uNzVjYjBiMGZhYjJmYSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jXFxuQEAgLTE3OTE0LDEyICsxNzkxNCwxMyBAQCBzdGF0aWMgaW50IHRnM19pbml0X29uZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4gXFx0fVxcbiBcXG4gXFx0ZXJyID0gdGczX2dldF9kZXZpY2VfYWRkcmVzcyh0cCwgYWRkcik7XFxuLVxcdGlmIChlcnIpIHtcXG4tXFx0XFx0ZGV2X2VycihcXHUwMDI2cGRldi1cXHUwMDNlZGV2LFxcbi1cXHRcXHRcXHRcXFwiQ291bGQgbm90IG9idGFpbiB2YWxpZCBldGhlcm5ldCBhZGRyZXNzLCBhYm9ydGluZ1xcXFxuXFxcIik7XFxuLVxcdFxcdGdvdG8gZXJyX291dF9hcGV1bm1hcDtcXG4rXFx0aWYgKCFlcnIpIHtcXG4rXFx0XFx0ZXRoX2h3X2FkZHJfc2V0KGRldiwgYWRkcik7XFxuK1xcdH0gZWxzZSB7XFxuK1xcdFxcdGRldl93YXJuKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsXFxuK1xcdFxcdFxcdCBcXFwiQ291bGQgbm90IG9idGFpbiB2YWxpZCBldGhlcm5ldCBhZGRyZXNzLCB1c2luZyBhIHJhbmRvbSBhZGRyZXNzXFxcXG5cXFwiKTtcXG4rXFx0XFx0ZXRoX2h3X2FkZHJfcmFuZG9tKGRldik7XFxuIFxcdH1cXG4tXFx0ZXRoX2h3X2FkZHJfc2V0KGRldiwgYWRkcik7XFxuIFxcbiBcXHRpbnRtYnggPSBNQUlMQk9YX0lOVEVSUlVQVF8wICsgVEczXzY0QklUX1JFR19MT1c7XFxuIFxcdHJjdm1ieCA9IE1BSUxCT1hfUkNWUkVUX0NPTl9JRFhfMCArIFRHM182NEJJVF9SRUdfTE9XO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQwMTowNDoxMC4zNzk1MzY4ODhaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjQ4MDEzMDM5ODM3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgdGczX2luaXRfb25lYCBpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmNgLCB3aGljaCBpcyB0aGUgUENJIHByb2JlIGZ1bmN0aW9uIGZvciBCcm9hZGNvbSBUaWdvbjMgKEJDTTU3eHgpIEV0aGVybmV0IGFkYXB0ZXJzLiBUaGlzIGRyaXZlciB0YXJnZXRzIHZlbmRvci1zcGVjaWZpYyBwaHlzaWNhbCBQQ0kgbmV0d29yayBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIHN5emthbGxlciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzc1xudG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5UaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLFxuYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy5cblxuLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURTpcbiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZFxuICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLlxuICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsXG4gIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy5cblxuLSBETyBOT1QgQkxJTkRMWSBUUlVTVCBcIk5PIEZVTkNUSU9OQUwgQ0hBTkdFXCIgKE5GQ0kpIE9SIFwiUkVGQUNUT1JJTkdcIiBDTEFJTVM6XG4gIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgXCJjbGVhbnVwc1wiLCBcInJlZmFjdG9yaW5nc1wiLCBvciBzdGF0ZVxuICBcIk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkXCIuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLlxuICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnRcbiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuXG4gIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuXG5cbi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6XG4gIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKixcbiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuXG4gIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXJcbiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOlxuXG4tIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6XG4gICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLlxuICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKVxuICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cbiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50c1xuICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuXG4gICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLlxuLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6XG4gICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczpcbiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmdcbiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy5cbiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4zLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzpcbi0gQ29yZSBTdWJzeXN0ZW1zOlxuICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSxcbiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuXG4tIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczpcbiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuXG4tIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczpcbiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuXG4tIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6XG4gICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6XG5cbi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOlxuICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1c1xuICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdFxuICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS5cbiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzIFwiZm9jdXNlZFwiLFxuICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuXG5cbi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOlxuICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHNcbiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuXG5cbi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOlxuICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrXG4gIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLlxuICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXJcbiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlnc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6XG4tIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4tIENoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuXG4tIFN0cmlwIGFueSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA5YWYzNWJmMjJmMGQ5N2RhOTE2NzUzYzc3NzUxMjk5OTU1NGU0YWUwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBTZXAgMTUgMDE6MDQ6MDkgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jXG5pbmRleCA3M2E0YjU2OWIwM2UzLi43NWNiMGIwZmFiMmZhIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jXG5AQCAtMTc5MTQsMTIgKzE3OTE0LDEzIEBAIHN0YXRpYyBpbnQgdGczX2luaXRfb25lKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuIFx0fVxuIFxuIFx0ZXJyID0gdGczX2dldF9kZXZpY2VfYWRkcmVzcyh0cCwgYWRkcik7XG4tXHRpZiAoZXJyKSB7XG4tXHRcdGRldl9lcnIoXHUwMDI2cGRldi1cdTAwM2VkZXYsXG4tXHRcdFx0XCJDb3VsZCBub3Qgb2J0YWluIHZhbGlkIGV0aGVybmV0IGFkZHJlc3MsIGFib3J0aW5nXFxuXCIpO1xuLVx0XHRnb3RvIGVycl9vdXRfYXBldW5tYXA7XG4rXHRpZiAoIWVycikge1xuK1x0XHRldGhfaHdfYWRkcl9zZXQoZGV2LCBhZGRyKTtcbitcdH0gZWxzZSB7XG4rXHRcdGRldl93YXJuKFx1MDAyNnBkZXYtXHUwMDNlZGV2LFxuK1x0XHRcdCBcIkNvdWxkIG5vdCBvYnRhaW4gdmFsaWQgZXRoZXJuZXQgYWRkcmVzcywgdXNpbmcgYSByYW5kb20gYWRkcmVzc1xcblwiKTtcbitcdFx0ZXRoX2h3X2FkZHJfcmFuZG9tKGRldik7XG4gXHR9XG4tXHRldGhfaHdfYWRkcl9zZXQoZGV2LCBhZGRyKTtcbiBcbiBcdGludG1ieCA9IE1BSUxCT1hfSU5URVJSVVBUXzAgKyBURzNfNjRCSVRfUkVHX0xPVztcbiBcdHJjdm1ieCA9IE1BSUxCT1hfUkNWUkVUX0NPTl9JRFhfMCArIFRHM182NEJJVF9SRUdfTE9XO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMDE6MDQ6MTAuMzc5NTM4NDk3WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6MTczMDMzMjE4OTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSB0ZzMgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmNgLCBzcGVjaWZpY2FsbHkgdGhlIGB0ZzNfaW5pdF9vbmVgIGZ1bmN0aW9uLiBJdCBzZWVtcyB0byBiZSBjaGFuZ2luZyBob3cgdGhlIGV0aGVybmV0IGFkZHJlc3MgaXMgaGFuZGxlZCBkdXJpbmcgZGV2aWNlIGluaXRpYWxpemF0aW9uLiBJIHNlZSB0aGUgb3JpZ2luYWwgY29kZSB0cmllcyB0byBnZXQgYSB2YWxpZCBldGhlcm5ldCBhZGRyZXNzIGFuZCBiYWlscyBvdXQgaWYgaXQgY2FuJ3QsIGJ1dCB0aGUgbW9kaWZpZWQgY29kZSBub3cgYXR0ZW1wdHMgdG8gZ2V0IGEgcmFuZG9tIE1BQyBhZGRyZXNzIGlmIHRoZSBoYXJkd2FyZSBhZGRyZXNzIGNhbid0IGJlIG9idGFpbmVkLlxuXG5NeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gcXVpY2tseSB1bmRlcnN0YW5kIHRoZSBjb250ZXh0LiBgdGczYCBpcyB0aGUgQnJvYWRjb20gVGlnb24zIGV0aGVybmV0IGRyaXZlciwgbGlrZWx5IGZvciBQQ0kgR2lnYWJpdCBFdGhlcm5ldCBhZGFwdGVycyBsaWtlIHRoZSBCQ001N3h4IHNlcmllcy4gVGhlIGtleSB0aGluZyBpcywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaWYgYHRnM2AgaXMgc29tZXRoaW5nIFFFTVUgZW11bGF0ZXMuIElmIGl0IGRvZXNuJ3QsIHdlIGFyZSBkZWFsaW5nIHdpdGggcGh5c2ljYWwgaGFyZHdhcmUsIGFuZCB0aGF0J3MgYSBkaWZmZXJlbnQgYmVhc3QuIEJhc2VkIG9uIHRoZSBwcm9tcHQsIGNlcnRhaW4gaGFyZHdhcmUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGR1ZSB0byBRRU1VIGxpbWl0YXRpb25zLCBzbyB0aGF0IGlzIG15IGltbWVkaWF0ZSBjb25jZXJuLlxuXG5MZXQncyBzZWUgd2hhdCB0aGUgcHJvbXB0IHNheXMgYWJvdXQgdGhpcyAtIGFoLCBpdCdzIHNwZWNpZmljIGFib3V0IGNlcnRhaW4gaGFyZHdhcmUgdHlwZXMgdGhhdCBRRU1VIGRvZXMgKm5vdCogZW11bGF0ZS4gV2UgbmVlZCB0byBjaGVjayBpZiB0aGUgZHJpdmVyIGlzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMsIHNpbmNlIHRob3NlIGFyZSBhY2Nlc3NpYmxlLlxuXG5BIHF1aWNrIGNoZWNrIGNvbmZpcm1zIG15IHN1c3BpY2lvbjogUUVNVSBkb2Vzbid0IG9mZmVyIGVtdWxhdGlvbiBmb3IgdGhlIGB0ZzNgIG9yIHRoZSBCcm9hZGNvbSBOZXRYdHJlbWUgY2FyZHMuIEl0IGxpc3RzIGEgZGlmZmVyZW50IHNldCBvZiBzdXBwb3J0ZWQgTklDczogZTEwMDAsIGlnYiwgdmlydGlvLW5ldCwgZXRjLiwgYnV0IG5vdGhpbmcgZm9yIHRoZSBUaWdvbjMuIFRoYXQgbWFrZXMgdGhpcyBoYXJkd2FyZSBwb3RlbnRpYWxseSB1bnJlYWNoYWJsZSBmb3Igc3RhbmRhcmQgdGVzdGluZyB3aXRoaW4gdGhlIGNvbmZpbmVzIG9mIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuXG5cbk5vdywgZXZlbiBpZiBzb21lb25lIGhhZCBhY2Nlc3MgdG8gdGhlIGhhcmR3YXJlIG9yIGEgY3VzdG9tIGVtdWxhdGVkIGVudmlyb25tZW50LCB0aGUgcGF0Y2ggbW9kaWZpZXMgYHRnM19pbml0X29uZWAuIFRoaXMgZnVuY3Rpb24gaXMgcGFydCBvZiB0aGUgYHBjaV9kcml2ZXJgJ3MgYC5wcm9iZWAgZnVuY3Rpb24uIFRoaXMgbWVhbnMgdGhhdCB0aGlzIGNvZGUgaXMgZXhlY3V0ZWQgb25seSBkdXJpbmcgdGhlICppbml0aWFsKiBwcm9iZSBvZiB0aGUgUENJIGRldmljZSAoYXQgYm9vdCwgb3IgaG90cGx1ZykuIFNvIHRoaXMgY2hhbmdlIGlzIG9ubHkgcmVsZXZhbnQgZHVyaW5nIGRldmljZSBpbml0aWFsaXphdGlvbi4gVGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIGFyZSBpbXBvcnRhbnQsIGFuZCBuZWVkIGZ1cnRoZXIgaW52ZXN0aWdhdGlvbi5cblxuU28sIGluIHN1bW1hcnksIHRoaXMgcGF0Y2ggaXMgcHJvYmFibHkgbm90IHNvbWV0aGluZyB0ZXN0YWJsZSB3aXRoIHN0YW5kYXJkIFFFTVU7IGl0IGxpa2VseSByZXF1aXJlcyBlaXRoZXIgcGh5c2ljYWwgaGFyZHdhcmUgb3IgYSBjdXN0b20gZW52aXJvbm1lbnQuIEkgc2hvdWxkIHNlYXJjaCB0byBiZSBzdXJlIGl0IGlzIG5vdCBpbiB0aGUgZW52aXJvbm1lbnRzIHdlIGFyZSB1c2luZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzAzMCwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc5NCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDAxOjA0OjI3LjY4Mjg2MjU0NVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MzM3MjkwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJDT05GSUdfVElHT04zXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL01ha2VmaWxlPTEzPW9iai0kKENPTkZJR19TQjEyNTBfTUFDKSArPSBzYjEyNTAtbWFjLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9NYWtlZmlsZToxNDpvYmotJChDT05GSUdfVElHT04zKSArPSB0ZzMub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL01ha2VmaWxlLTE1LW9iai0kKENPTkZJR19CR01BQykgKz0gYmdtYWMub1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmM9ODA4PXN0YXRpYyBpbnQgdGczX2FwZV9ldmVudF9sb2NrKHN0cnVjdCB0ZzMgKnRwLCB1MzIgdGltZW91dF91cylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jLTgyOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYzo4Mjk6I2lmZGVmIENPTkZJR19USUdPTjNfSFdNT05cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYy04MzAtc3RhdGljIGludCB0ZzNfYXBlX3dhaXRfZm9yX2V2ZW50KHN0cnVjdCB0ZzMgKnRwLCB1MzIgdGltZW91dF91cylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jPTEwODYwPXN0YXRpYyBpbnQgdGczX2luaXRfaHcoc3RydWN0IHRnMyAqdHAsIGJvb2wgcmVzZXRfcGh5KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmMtMTA4NzUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmM6MTA4NzY6I2lmZGVmIENPTkZJR19USUdPTjNfSFdNT05cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYy0xMDg3Ny1zdGF0aWMgdm9pZCB0ZzNfc2Rfc2Nhbl9zY3JhdGNocGFkKHN0cnVjdCB0ZzMgKnRwLCBzdHJ1Y3QgdGczX29jaXIgKm9jaXIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYz0xMDk1OT1zdGF0aWMgaW5saW5lIHZvaWQgdGczX2h3bW9uX29wZW4oc3RydWN0IHRnMyAqdHApIHsgfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jOjEwOTYwOiNlbmRpZiAvKiBDT05GSUdfVElHT04zX0hXTU9OICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmMtMTA5NjEtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDAxOjA0OjI3LjczNjI0MTMyNVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjExNzAxMTQ2ODcyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czpcblxuKipFeGFtaW5pbmcgdGhlIEJyb2FkY29tIEV0aGVybmV0IERyaXZlciBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSBuZWVkIHRvIGRpdmUgaW50byB0aGUgQnJvYWRjb20gRXRoZXJuZXQgZHJpdmVyIGNvbmZpZ3VyYXRpb24uIExldCdzIHN0YXJ0IHdpdGggYGRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWdgLiBJIGFscmVhZHkgaGF2ZSBhIHByZXR0eSBnb29kIG1lbnRhbCBtb2RlbCBvZiBob3cgdGhlc2UgS2NvbmZpZyBmaWxlcyBhcmUgc3RydWN0dXJlZC4gSSdtIGV4cGVjdGluZyB0byBmaW5kIHRoZSBzdGFuZGFyZCBzZWxlY3Rpb24gY3JpdGVyaWEsIGRlcGVuZGVuY2llcywgYW5kIGRlZmF1bHQgc2V0dGluZ3MgdGhhdCBkZXRlcm1pbmUgd2hpY2ggQnJvYWRjb20gRXRoZXJuZXQgZHJpdmVycyBnZXQgY29tcGlsZWQgaW50byB0aGUga2VybmVsLiBNeSBpbml0aWFsIGZvY3VzIHdpbGwgYmUgb24gdW5kZXJzdGFuZGluZyB0aGUgYXZhaWxhYmxlIG9wdGlvbnMsIGlkZW50aWZ5aW5nIGFueSBuZXcgb3IgY2hhbmdlZCBjb25maWd1cmF0aW9ucyBzaW5jZSBteSBsYXN0IHJldmlldywgYW5kIHNlZWluZyBpZiB0aGVyZSBhcmUgYW55IG9idmlvdXMgY29uZmxpY3RzIG9yIGRlcGVuZGVuY2llcyB0aGF0IGp1bXAgb3V0IGF0IG1lLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlOiB3aGljaCBzcGVjaWZpYyBCcm9hZGNvbSBjaGlwc2V0cyBhcmUgc3VwcG9ydGVkPyBBcmUgdGhlcmUgYW55IG9wdGlvbnMgZm9yIHBvd2VyIG1hbmFnZW1lbnQgb3Igc3BlY2lmaWMgZmVhdHVyZXM/IEFyZSB0aGVyZSBhbnkgb2J2aW91cyBzZWN1cml0eSBvciBwZXJmb3JtYW5jZS1yZWxhdGVkIHNldHRpbmdzIHRoYXQgSSBzaG91bGQgYmUgYXdhcmUgb2Y/IEknbGwgcHJvYmFibHkgY3Jvc3MtcmVmZXJlbmNlIHRoaXMgd2l0aCB0aGUgcmVsZXZhbnQgc291cmNlIGNvZGUgbGF0ZXIsIGJ1dCB0aGlzIEtjb25maWcgaXMgdGhlIGJlc3QgcGxhY2UgdG8gZ2V0IGEgaGlnaC1sZXZlbCBvdmVydmlldyBvZiB0aGUgZHJpdmVyJ3MgY2FwYWJpbGl0aWVzIGFuZCBjb25maWd1cmFiaWxpdHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ4NTQsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQwMTowNDozOS40MzczOTQwMDZaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTE2Nzg1NDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFRJR09OM1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnPTExMD1jb25maWcgU0IxMjUwX01BQ1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZy0xMjItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZzoxMjM6Y29uZmlnIFRJR09OM1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWctMTI0LVxcdHRyaXN0YXRlIFxcXCJCcm9hZGNvbSBUaWdvbjMgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWctMTM0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWc6MTM1OmNvbmZpZyBUSUdPTjNfSFdNT05cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnLTEzNi1cXHRib29sIFxcXCJCcm9hZGNvbSBUaWdvbjMgSFdNT04gc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMDE6MDQ6MzkuNDg5MDc3Nzc0WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6NTg4Njg1NTc4MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgdGhlIFRJR09OMyBLY29uZmlnKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoZSBLY29uZmlnIGZvciB0aGUgVElHT04zLiBJbW1lZGlhdGVseSwgSSdtIHRoaW5raW5nIGFib3V0IGhvdyB0aGlzIGNvbmZpZ3VyYXRpb24gZmlsZSBzdHJ1Y3R1cmVzIHRoZSBvcHRpb25zIGF2YWlsYWJsZSBmb3IgdGhpcyBzcGVjaWZpYyBuZXR3b3JrIGludGVyZmFjZSBjYXJkLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIHRoZSB1c3VhbCBzdXNwZWN0czogdGhlIGRldmljZSBkcml2ZXIncyBjb3JlIGZlYXR1cmVzLCBpdHMgbW9kdWxhcml0eSwgcG90ZW50aWFsIGRlYnVnZ2luZyBmbGFncywgYW5kIHBlcmhhcHMgc29tZSBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgc2V0dGluZ3MuIEknbSBob3BpbmcgdG8gcXVpY2tseSBpZGVudGlmeSB0aGUga2V5IHZhcmlhYmxlcyB0aGF0IGNvbnRyb2wgaXRzIGJlaGF2aW9yIHdpdGhpbiB0aGUgTGludXgga2VybmVsLiBJdOKAmWxsIGJlIHVzZWZ1bCB0byBzZWUgaG93IHRoZSB2YXJpb3VzIGZlYXR1cmVzIGFyZSBndWFyZGVkIGJ5IGRlcGVuZGVuY2llcywgd2hpY2ggY2FuIGdpdmUgaW5zaWdodCBpbnRvIHRoZSBhcmNoaXRlY3R1cmUgYXNzdW1wdGlvbnMuIEknbSBhbnRpY2lwYXRpbmcgdGhlIHN0YW5kYXJkIGNvbmRpdGlvbmFsIGxvZ2ljOiBgaWZgLCBgc2VsZWN0YCwgYGRlcGVuZHMgb25gLCBhbmQgbWF5YmUgZXZlbiBzb21lIGBkZWZhdWx0YCB2YWx1ZXMuIEkgYWxzbyB3YW50IHRvIG9ic2VydmUgdGhlIGhlbHAgdGV4dCBmb3IgYSBxdWljayByZW1pbmRlci4gU3BlY2lmaWNhbGx5LCBJJ20gaW50ZXJlc3RlZCBpbiBsb29raW5nIGZvciBhbnkgcG90ZW50aWFsIGNvbXBpbGUtdGltZSBvcHRpb25zIGZvciB0aGluZ3MgbGlrZSBWTEFOIHN1cHBvcnQsIGp1bWJvIGZyYW1lcywgY2hlY2tzdW0gb2ZmbG9hZCwgb3IgcGVyaGFwcyBhZHZhbmNlZCBmZWF0dXJlcyBsaWtlIGZsb3cgY29udHJvbC4gQXJlIHRoZXJlIGFueSBsZWdhY3kgc2V0dGluZ3MgaW4gdGhlcmU/IEkgYWxzbyB3b25kZXIgaWYgaXQgaGFzIGl0cyBvd24gdW5pcXVlIEtjb25maWcgbGFuZ3VhZ2UuIEtub3dpbmcgdGhpcyB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiBob3cgdGhlIGRyaXZlciBpcyBlbmFibGVkLCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIGtlcm5lbCwgYW5kIGhvdyBlYXN5IGl0IGlzIHRvIGN1c3RvbWl6ZSBmb3Igc3BlY2lmaWMgbmVlZHMuIExldCdzIHNlZSB3aGF0IHdlJ3ZlIGdvdC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTMyMSwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDAxOjA0OjQ1LjM3NTkzNjE5NFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc1NDcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMTIwLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMTIwOlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZVxcbiAxMjE6XFx0XFx0ICB3aWxsIGJlIGNhbGxlZCBzYjEyNTAtbWFjLlxcbiAxMjI6XFx0XFxuIDEyMzpcXHRjb25maWcgVElHT04zXFxuIDEyNDpcXHRcXHR0cmlzdGF0ZSBcXFwiQnJvYWRjb20gVGlnb24zIHN1cHBvcnRcXFwiXFxuIDEyNTpcXHRcXHRkZXBlbmRzIG9uIFBDSVxcbiAxMjY6XFx0XFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxcbiAxMjc6XFx0XFx0c2VsZWN0IENSQzMyXFxuIDEyODpcXHRcXHRzZWxlY3QgUEhZTElCXFxuIDEyOTpcXHRcXHRoZWxwXFxuIDEzMDpcXHRcXHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIEJyb2FkY29tIFRpZ29uMyBiYXNlZCBnaWdhYml0IEV0aGVybmV0IGNhcmRzLlxcbiAxMzE6XFx0XFxuIDEzMjpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcXG4gMTMzOlxcdFxcdCAgd2lsbCBiZSBjYWxsZWQgdGczLiAgVGhpcyBpcyByZWNvbW1lbmRlZC5cXG4gMTM0OlxcdFxcbiAxMzU6XFx0Y29uZmlnIFRJR09OM19IV01PTlxcbiAxMzY6XFx0XFx0Ym9vbCBcXFwiQnJvYWRjb20gVGlnb24zIEhXTU9OIHN1cHBvcnRcXFwiXFxuIDEzNzpcXHRcXHRkZWZhdWx0IHlcXG4gMTM4OlxcdFxcdGRlcGVuZHMgb24gVElHT04zIFxcdTAwMjZcXHUwMDI2IEhXTU9OIFxcdTAwMjZcXHUwMDI2ICEoVElHT04zPXkgXFx1MDAyNlxcdTAwMjYgSFdNT049bSlcXG4gMTM5OlxcdFxcdGhlbHBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMDE6MDQ6NDUuMzc2MDEzNDM0WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6MTY1OTExNjQ1OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJ20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gdGczX2luaXRfb25lKipcblxuT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGluaXRpYWxpemF0aW9uIHByb2Nlc3MgZm9yIHRoaXMgYHRnM2AgZHJpdmVyLiBTcGVjaWZpY2FsbHksIEkgd2FudCB0byBkcmlsbCBkb3duIGludG8gd2hhdCB0aGUgYHRnM19pbml0X29uZWAgZnVuY3Rpb24gKmFjdHVhbGx5KiBkb2VzLiBNeSBmaXJzdCBzdGVwIGlzIHRvIHRyYWNlIGl0cyBleGVjdXRpb24gYW5kIHVuZGVyc3RhbmQgaG93IGl0J3MgaW50ZWdyYXRlZCBpbnRvIHRoZSBsYXJnZXIgZHJpdmVyIGZyYW1ld29yay4gV2hlcmUgaXMgdGhpcyBmdW5jdGlvbiBkZWNsYXJlZD8gV2hlcmUgZG9lcyB0aGUga2VybmVsIGFjdHVhbGx5IGNhbGwgaXQ/IEtub3dpbmcgdGhlIGNhbGwgY2hhaW4gaXMga2V5IHRvIHVuZGVyc3RhbmRpbmcgaXRzIHB1cnBvc2UgYW5kIGl0cyByb2xlIGluIHRoZSBzeXN0ZW0uIEkgZXhwZWN0IHRoaXMgd2lsbCBsZWFkIG1lIHRvIHRoZSByZWxldmFudCBQQ0kgZGV2aWNlIHByb2JlIGZ1bmN0aW9uLCBidXQgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGFtIG9uIHRoZSByaWdodCB0cmFjay5cblxuXG4iLCJJbnB1dFRva2VucyI6NTk3NCwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMDE6MDQ6NDcuMDM1MTMzNDkyWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzUwMjY3NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0ZzNfaW5pdF9vbmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmM9MTc2NDk9c3RhdGljIHZvaWQgdGczX2luaXRfY29hbChzdHJ1Y3QgdGczICp0cClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jLTE3Njc5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jOjE3NjgwOnN0YXRpYyBpbnQgdGczX2luaXRfb25lKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jLTE3NjgxLVxcdFxcdFxcdFxcdCAgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jPTE4NDI3PXN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciB0ZzNfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmMtMTg0MjktXFx0LmlkX3RhYmxlXFx0PSB0ZzNfcGNpX3RibCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYzoxODQzMDpcXHQucHJvYmVcXHRcXHQ9IHRnM19pbml0X29uZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYy0xODQzMS1cXHQucmVtb3ZlXFx0XFx0PSB0ZzNfcmVtb3ZlX29uZSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMDE6MDQ6NDcuMDgyNjQ4MDE2WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjExMzA5ODkxMTE4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5c2lzIG9mIHRnM19pbml0X29uZSBmb3IgRnV6emluZyBTdWl0YWJpbGl0eSoqXG5cbk9rYXksIHNvIGB0ZzNfaW5pdF9vbmVgIGlzIHRoZSBwcm9iZSBmdW5jdGlvbiB3aXRoaW4gdGhlIGB0ZzNfZHJpdmVyYCDigJMgdGhhdCdzIHRoZSBzdGFydGluZyBwb2ludC4gTGV0J3Mgc2VlIGlmIHRoaXMgY29kZSBjaGFuZ2UgbWFrZXMgc2Vuc2UgdG8gZnV6ei4gVGhlIHByb21wdCdzIG5lZ2F0aXZlIGNyaXRlcmlhIGFyZSBwcmV0dHkgY2xlYXI6IHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiB0aGUgbW9kaWZpZWQgY29kZSBmYWxscyAqc3RyaWN0bHkqIGludG8gb25lIG9mIGEgZmV3IGNhdGVnb3JpZXMgb2YgdW5yZWFjaGFibGUgaGFyZHdhcmUuXG5cblRoZSBCcm9hZGNvbSBUaWdvbjMgKHRnMykgc3BlY2lmaWNhbGx5IHRhcmdldHMgcGh5c2ljYWwgUENJIG5ldHdvcmsgY2FyZHMgKEJDTTU3eHggc2VyaWVzKS4gVGhhdCdzIGEga2V5IGRpc3RpbmN0aW9uOyBpdCdzICpub3QqIGVtdWxhdGVkIGJ5IHN0YW5kYXJkIFFFTVUgb3IgYXZhaWxhYmxlIGluIGVudmlyb25tZW50cyBsaWtlIEdDRS4gVGh1cywgaXQncyBub3QgcHJlc2VudCBpbiBhIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBUaGlzIGlzIGdvb2QgaW5mb3JtYXRpb24uXG5cbk5vdywgdGhlIG1vZGlmaWVkIGNvZGUgaXMgaW4gYHRnM19pbml0X29uZSgpYCwgdGhlIHByb2JlIGNhbGxiYWNrLiBUaGlzIGAucHJvYmVgIGZ1bmN0aW9uIHJ1bnMgb25seSB3aGVuIHRoYXQgKnBoeXNpY2FsKiBoYXJkd2FyZSBnZXRzIHByb2JlZC4gU2luY2UgdGhpcyBwaHlzaWNhbCBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gdGhlIGZ1enppbmcgZW52aXJvbm1lbnRzLCB0aGlzIGZ1bmN0aW9uIHdvdWxkIG5vdCBydW4uIFRoYXQgbWFrZXMgdGhlIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nIHB1cnBvc2VzLiBJdCBpcyB1bnJlYWNoYWJsZSBkdWUgdG8gdGhlIHJlcXVpcmVkIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG5cblRoZXJlZm9yZTogYFdvcnRoRnV6emluZ2Agc2hvdWxkIGJlIGBmYWxzZWAuXG5cbkkgY2FuIHNwZWNpZnkgdGhlIGBFbmFibGVDb25maWdzYCBhcyBlaXRoZXIgYFtdYCBvciBgW1wiVElHT04zXCIsIFwiUENJXCJdYC4gVGhleSBhcmUgbm90IGltcG9ydGFudCBzaW5jZSBgV29ydGhGdXp6aW5nYCBpcyBgZmFsc2VgLlxuXG5BcyBmb3IgYEZvY3VzU3ltYm9sc2AsIGV2ZW4gdGhvdWdoIGB0ZzNfaW5pdF9vbmVgIHdvdWxkIGJlIHRoZSBsb2dpY2FsIGNob2ljZSwgaXQgc2hvdWxkIGJlIHNldCB0byBgW11gIHdoZW4gYFdvcnRoRnV6emluZ2AgaXMgYGZhbHNlYC4gVGhlIGZ1enplciB3aWxsIGlnbm9yZSB0aGUgY29kZSBlbnRpcmVseSBpZiBpdCB0aGlua3MgaXQgaXMgdW5yZWFjaGFibGUuXG5cbkxldCdzIGRvdWJsZS1jaGVjayB0aGUgZ3VpZGVsaW5lcy4uLiBBaCwgdGhlIGBzZXQtcmVzdWx0c2AgdG9vbCBpcyB1c2VkIG9uY2UsIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuIEdvb2QuXG5cblRvIHNvbGlkaWZ5IG15IHRoaW5raW5nLCBsZXQncyBsb29rIGF0IHRoZSBwYXRjaDogSXQgbW9kaWZpZXMgYHRnM19pbml0X29uZWAsIHRoZSBwcm9iZSBjYWxsYmFjayBmb3IgYSBCcm9hZGNvbSBUaWdvbjMgUENJIEdpZ2FiaXQgRXRoZXJuZXQgYWRhcHRlci4gVGhlIGRyaXZlciBuZWNlc3NpdGF0ZXMgc3BlY2lmaWMgcGh5c2ljYWwgaGFyZHdhcmUgKEJDTTU3eHggc2VyaWVzIFBDSSBuZXR3b3JrIGNhcmRzKSB0aGF0IGFyZSBub3QgZW11bGF0ZWQgaW4gdHlwaWNhbCBRRU1VIG9yIEdDRSB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cy4gVGh1cywgdGhlIGNvZGUgaXMgdW5yZWFjaGFibGUuXG5cbk9ubHkgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jYCB3YXMgY2hhbmdlZCBpbiBjb21taXQgYDlhZjM1YmYyMmYwZDk3ZGE5MTY3NTNjNzc3NTEyOTk5NTU0ZTRhZTBgLlxuXG5FdmVyeXRoaW5nIGNoZWNrcyBvdXQuIEknbSBjb25maWRlbnQuIFRpbWUgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NDc2LCJPdXRwdXRUb2tlbnMiOjEyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY3MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQwMTowNDo1OC4zOTI1NDE1MTVaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMjc1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgdGczX2luaXRfb25lYCBpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmNgLCB3aGljaCBpcyB0aGUgUENJIHByb2JlIGZ1bmN0aW9uIGZvciBCcm9hZGNvbSBUaWdvbjMgKEJDTTU3eHgpIEV0aGVybmV0IGFkYXB0ZXJzLiBUaGlzIGRyaXZlciB0YXJnZXRzIHZlbmRvci1zcGVjaWZpYyBwaHlzaWNhbCBQQ0kgbmV0d29yayBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIHN5emthbGxlciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYHRnM19pbml0X29uZWAgaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jYCwgd2hpY2ggaXMgdGhlIFBDSSBwcm9iZSBmdW5jdGlvbiBmb3IgQnJvYWRjb20gVGlnb24zIChCQ001N3h4KSBFdGhlcm5ldCBhZGFwdGVycy4gVGhpcyBkcml2ZXIgdGFyZ2V0cyB2ZW5kb3Itc3BlY2lmaWMgcGh5c2ljYWwgUENJIG5ldHdvcmsgaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciBHQ0UgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBzeXprYWxsZXIgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDAxOjA0OjU4LjM5MjU3ODgyNVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzI3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow49v8k[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-15 00:24:07 +0000 UTC FinishedAt: 2026-09-15 01:04:59 +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+CgkJCTx0ZD4yMDI2LzA5LzE1IDAxOjA0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYHRnM19pbml0X29uZWAgaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jYCwgd2hpY2ggaXMgdGhlIFBDSSBwcm9iZSBmdW5jdGlvbiBmb3IgQnJvYWRjb20gVGlnb24zIChCQ001N3h4KSBFdGhlcm5ldCBhZGFwdGVycy4gVGhpcyBkcml2ZXIgdGFyZ2V0cyB2ZW5kb3Itc3BlY2lmaWMgcGh5c2ljYWwgUENJIG5ldHdvcmsgaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciBHQ0UgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBzeXprYWxsZXIgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMDE6MDQ8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA5YWYzNWJmMjJmMGQ5N2RhOTE2NzUzYzc3NzUxMjk5OTU1NGU0YWUwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBTZXAgMTUgMDE6MDQ6MDkgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuY1xuaW5kZXggNzNhNGI1NjliMDNlMy4uNzVjYjBiMGZhYjJmYSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuY1xuQEAgLTE3OTE0LDEyICYjNDM7MTc5MTQsMTMgQEAgc3RhdGljIGludCB0ZzNfaW5pdF9vbmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4gXHR9XG4gXG4gXHRlcnIgPSB0ZzNfZ2V0X2RldmljZV9hZGRyZXNzKHRwLCBhZGRyKTtcbi1cdGlmIChlcnIpIHtcbi1cdFx0ZGV2X2VycihcdTAwMjZwZGV2LVx1MDAzZWRldixcbi1cdFx0XHRcJiMzNDtDb3VsZCBub3Qgb2J0YWluIHZhbGlkIGV0aGVybmV0IGFkZHJlc3MsIGFib3J0aW5nXFxuXCYjMzQ7KTtcbi1cdFx0Z290byBlcnJfb3V0X2FwZXVubWFwO1xuJiM0MztcdGlmICghZXJyKSB7XG4mIzQzO1x0XHRldGhfaHdfYWRkcl9zZXQoZGV2LCBhZGRyKTtcbiYjNDM7XHR9IGVsc2Uge1xuJiM0MztcdFx0ZGV2X3dhcm4oXHUwMDI2cGRldi1cdTAwM2VkZXYsXG4mIzQzO1x0XHRcdCBcJiMzNDtDb3VsZCBub3Qgb2J0YWluIHZhbGlkIGV0aGVybmV0IGFkZHJlc3MsIHVzaW5nIGEgcmFuZG9tIGFkZHJlc3NcXG5cJiMzNDspO1xuJiM0MztcdFx0ZXRoX2h3X2FkZHJfcmFuZG9tKGRldik7XG4gXHR9XG4tXHRldGhfaHdfYWRkcl9zZXQoZGV2LCBhZGRyKTtcbiBcbiBcdGludG1ieCA9IE1BSUxCT1hfSU5URVJSVVBUXzAgJiM0MzsgVEczXzY0QklUX1JFR19MT1c7XG4gXHRyY3ZtYnggPSBNQUlMQk9YX1JDVlJFVF9DT05fSURYXzAgJiM0MzsgVEczXzY0QklUX1JFR19MT1c7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMDE6MDQ8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYHRnM19pbml0X29uZWAgaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jYCwgd2hpY2ggaXMgdGhlIFBDSSBwcm9iZSBmdW5jdGlvbiBmb3IgQnJvYWRjb20gVGlnb24zIChCQ001N3h4KSBFdGhlcm5ldCBhZGFwdGVycy4gVGhpcyBkcml2ZXIgdGFyZ2V0cyB2ZW5kb3Itc3BlY2lmaWMgcGh5c2ljYWwgUENJIG5ldHdvcmsgaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciBHQ0UgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBzeXprYWxsZXIgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzcwp0b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpUaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLAphbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLgoKLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURToKICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkCiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS4KICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsCiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLgoKLSBETyBOT1QgQkxJTkRMWSBUUlVTVCAmIzM0O05PIEZVTkNUSU9OQUwgQ0hBTkdFJiMzNDsgKE5GQ0kpIE9SICYjMzQ7UkVGQUNUT1JJTkcmIzM0OyBDTEFJTVM6CiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyAmIzM0O2NsZWFudXBzJiMzNDssICYjMzQ7cmVmYWN0b3JpbmdzJiMzNDssIG9yIHN0YXRlCiAgJiMzNDtObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZCYjMzQ7LiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS4KICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnQKICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy4KICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLgoKLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDoKICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosCiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuCiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlcgogIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6CgotIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6CiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuCiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLykKICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy4KICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzCiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLgogICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLgotIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZToKICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOgogICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nCiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy4KICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzoKLSBDb3JlIFN1YnN5c3RlbXM6CiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksCiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuCi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOgogICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLgotIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczoKICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy4KLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOgogICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOgoKLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6CiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXMKICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdAogIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLgogIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyAmIzM0O2ZvY3VzZWQmIzM0OywKICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuCgotIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzoKICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHMKICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy4KCi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOgogIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2sKICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy4KICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXIKICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo1LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6Ci0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KLSBDaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLgotIFN0cmlwIGFueSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA5YWYzNWJmMjJmMGQ5N2RhOTE2NzUzYzc3NzUxMjk5OTU1NGU0YWUwCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFR1ZSBTZXAgMTUgMDE6MDQ6MDkgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jCmluZGV4IDczYTRiNTY5YjAzZTMuLjc1Y2IwYjBmYWIyZmEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jCkBAIC0xNzkxNCwxMiAmIzQzOzE3OTE0LDEzIEBAIHN0YXRpYyBpbnQgdGczX2luaXRfb25lKHN0cnVjdCBwY2lfZGV2ICpwZGV2LAogCX0KIAogCWVyciA9IHRnM19nZXRfZGV2aWNlX2FkZHJlc3ModHAsIGFkZHIpOwotCWlmIChlcnIpIHsKLQkJZGV2X2VycigmYW1wO3BkZXYtJmd0O2RldiwKLQkJCSYjMzQ7Q291bGQgbm90IG9idGFpbiB2YWxpZCBldGhlcm5ldCBhZGRyZXNzLCBhYm9ydGluZ1xuJiMzNDspOwotCQlnb3RvIGVycl9vdXRfYXBldW5tYXA7CiYjNDM7CWlmICghZXJyKSB7CiYjNDM7CQlldGhfaHdfYWRkcl9zZXQoZGV2LCBhZGRyKTsKJiM0MzsJfSBlbHNlIHsKJiM0MzsJCWRldl93YXJuKCZhbXA7cGRldi0mZ3Q7ZGV2LAomIzQzOwkJCSAmIzM0O0NvdWxkIG5vdCBvYnRhaW4gdmFsaWQgZXRoZXJuZXQgYWRkcmVzcywgdXNpbmcgYSByYW5kb20gYWRkcmVzc1xuJiMzNDspOwomIzQzOwkJZXRoX2h3X2FkZHJfcmFuZG9tKGRldik7CiAJfQotCWV0aF9od19hZGRyX3NldChkZXYsIGFkZHIpOwogCiAJaW50bWJ4ID0gTUFJTEJPWF9JTlRFUlJVUFRfMCAmIzQzOyBURzNfNjRCSVRfUkVHX0xPVzsKIAlyY3ZtYnggPSBNQUlMQk9YX1JDVlJFVF9DT05fSURYXzAgJiM0MzsgVEczXzY0QklUX1JFR19MT1c7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDAxOjA0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwMzAKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiA3OTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSB0ZzMgRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jYCwgc3BlY2lmaWNhbGx5IHRoZSBgdGczX2luaXRfb25lYCBmdW5jdGlvbi4gSXQgc2VlbXMgdG8gYmUgY2hhbmdpbmcgaG93IHRoZSBldGhlcm5ldCBhZGRyZXNzIGlzIGhhbmRsZWQgZHVyaW5nIGRldmljZSBpbml0aWFsaXphdGlvbi4gSSBzZWUgdGhlIG9yaWdpbmFsIGNvZGUgdHJpZXMgdG8gZ2V0IGEgdmFsaWQgZXRoZXJuZXQgYWRkcmVzcyBhbmQgYmFpbHMgb3V0IGlmIGl0IGNhbiYjMzk7dCwgYnV0IHRoZSBtb2RpZmllZCBjb2RlIG5vdyBhdHRlbXB0cyB0byBnZXQgYSByYW5kb20gTUFDIGFkZHJlc3MgaWYgdGhlIGhhcmR3YXJlIGFkZHJlc3MgY2FuJiMzOTt0IGJlIG9idGFpbmVkLgoKTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHF1aWNrbHkgdW5kZXJzdGFuZCB0aGUgY29udGV4dC4gYHRnM2AgaXMgdGhlIEJyb2FkY29tIFRpZ29uMyBldGhlcm5ldCBkcml2ZXIsIGxpa2VseSBmb3IgUENJIEdpZ2FiaXQgRXRoZXJuZXQgYWRhcHRlcnMgbGlrZSB0aGUgQkNNNTd4eCBzZXJpZXMuIFRoZSBrZXkgdGhpbmcgaXMsIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIGB0ZzNgIGlzIHNvbWV0aGluZyBRRU1VIGVtdWxhdGVzLiBJZiBpdCBkb2VzbiYjMzk7dCwgd2UgYXJlIGRlYWxpbmcgd2l0aCBwaHlzaWNhbCBoYXJkd2FyZSwgYW5kIHRoYXQmIzM5O3MgYSBkaWZmZXJlbnQgYmVhc3QuIEJhc2VkIG9uIHRoZSBwcm9tcHQsIGNlcnRhaW4gaGFyZHdhcmUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGR1ZSB0byBRRU1VIGxpbWl0YXRpb25zLCBzbyB0aGF0IGlzIG15IGltbWVkaWF0ZSBjb25jZXJuLgoKTGV0JiMzOTtzIHNlZSB3aGF0IHRoZSBwcm9tcHQgc2F5cyBhYm91dCB0aGlzIC0gYWgsIGl0JiMzOTtzIHNwZWNpZmljIGFib3V0IGNlcnRhaW4gaGFyZHdhcmUgdHlwZXMgdGhhdCBRRU1VIGRvZXMgKm5vdCogZW11bGF0ZS4gV2UgbmVlZCB0byBjaGVjayBpZiB0aGUgZHJpdmVyIGlzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMsIHNpbmNlIHRob3NlIGFyZSBhY2Nlc3NpYmxlLgoKQSBxdWljayBjaGVjayBjb25maXJtcyBteSBzdXNwaWNpb246IFFFTVUgZG9lc24mIzM5O3Qgb2ZmZXIgZW11bGF0aW9uIGZvciB0aGUgYHRnM2Agb3IgdGhlIEJyb2FkY29tIE5ldFh0cmVtZSBjYXJkcy4gSXQgbGlzdHMgYSBkaWZmZXJlbnQgc2V0IG9mIHN1cHBvcnRlZCBOSUNzOiBlMTAwMCwgaWdiLCB2aXJ0aW8tbmV0LCBldGMuLCBidXQgbm90aGluZyBmb3IgdGhlIFRpZ29uMy4gVGhhdCBtYWtlcyB0aGlzIGhhcmR3YXJlIHBvdGVudGlhbGx5IHVucmVhY2hhYmxlIGZvciBzdGFuZGFyZCB0ZXN0aW5nIHdpdGhpbiB0aGUgY29uZmluZXMgb2YgYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4KCk5vdywgZXZlbiBpZiBzb21lb25lIGhhZCBhY2Nlc3MgdG8gdGhlIGhhcmR3YXJlIG9yIGEgY3VzdG9tIGVtdWxhdGVkIGVudmlyb25tZW50LCB0aGUgcGF0Y2ggbW9kaWZpZXMgYHRnM19pbml0X29uZWAuIFRoaXMgZnVuY3Rpb24gaXMgcGFydCBvZiB0aGUgYHBjaV9kcml2ZXJgJiMzOTtzIGAucHJvYmVgIGZ1bmN0aW9uLiBUaGlzIG1lYW5zIHRoYXQgdGhpcyBjb2RlIGlzIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIHRoZSAqaW5pdGlhbCogcHJvYmUgb2YgdGhlIFBDSSBkZXZpY2UgKGF0IGJvb3QsIG9yIGhvdHBsdWcpLiBTbyB0aGlzIGNoYW5nZSBpcyBvbmx5IHJlbGV2YW50IGR1cmluZyBkZXZpY2UgaW5pdGlhbGl6YXRpb24uIFRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBhcmUgaW1wb3J0YW50LCBhbmQgbmVlZCBmdXJ0aGVyIGludmVzdGlnYXRpb24uCgpTbywgaW4gc3VtbWFyeSwgdGhpcyBwYXRjaCBpcyBwcm9iYWJseSBub3Qgc29tZXRoaW5nIHRlc3RhYmxlIHdpdGggc3RhbmRhcmQgUUVNVTsgaXQgbGlrZWx5IHJlcXVpcmVzIGVpdGhlciBwaHlzaWNhbCBoYXJkd2FyZSBvciBhIGN1c3RvbSBlbnZpcm9ubWVudC4gSSBzaG91bGQgc2VhcmNoIHRvIGJlIHN1cmUgaXQgaXMgbm90IGluIHRoZSBlbnZpcm9ubWVudHMgd2UgYXJlIHVzaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDAxOjA0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0NPTkZJR19USUdPTjMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9NYWtlZmlsZT0xMz1vYmotJChDT05GSUdfU0IxMjUwX01BQykgJiM0Mzs9IHNiMTI1MC1tYWMub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vTWFrZWZpbGU6MTQ6b2JqLSQoQ09ORklHX1RJR09OMykgJiM0Mzs9IHRnMy5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9NYWtlZmlsZS0xNS1vYmotJChDT05GSUdfQkdNQUMpICYjNDM7PSBiZ21hYy5vXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmM9ODA4PXN0YXRpYyBpbnQgdGczX2FwZV9ldmVudF9sb2NrKHN0cnVjdCB0ZzMgKnRwLCB1MzIgdGltZW91dF91cylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYy04MjgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYzo4Mjk6I2lmZGVmIENPTkZJR19USUdPTjNfSFdNT05cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jLTgzMC1zdGF0aWMgaW50IHRnM19hcGVfd2FpdF9mb3JfZXZlbnQoc3RydWN0IHRnMyAqdHAsIHUzMiB0aW1lb3V0X3VzKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jPTEwODYwPXN0YXRpYyBpbnQgdGczX2luaXRfaHcoc3RydWN0IHRnMyAqdHAsIGJvb2wgcmVzZXRfcGh5KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jLTEwODc1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmM6MTA4NzY6I2lmZGVmIENPTkZJR19USUdPTjNfSFdNT05cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jLTEwODc3LXN0YXRpYyB2b2lkIHRnM19zZF9zY2FuX3NjcmF0Y2hwYWQoc3RydWN0IHRnMyAqdHAsIHN0cnVjdCB0ZzNfb2NpciAqb2Npcilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYz0xMDk1OT1zdGF0aWMgaW5saW5lIHZvaWQgdGczX2h3bW9uX29wZW4oc3RydWN0IHRnMyAqdHApIHsgfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmM6MTA5NjA6I2VuZGlmIC8qIENPTkZJR19USUdPTjNfSFdNT04gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jLTEwOTYxLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDAxOjA0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ4NTQKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOgoKKipFeGFtaW5pbmcgdGhlIEJyb2FkY29tIEV0aGVybmV0IERyaXZlciBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkgbmVlZCB0byBkaXZlIGludG8gdGhlIEJyb2FkY29tIEV0aGVybmV0IGRyaXZlciBjb25maWd1cmF0aW9uLiBMZXQmIzM5O3Mgc3RhcnQgd2l0aCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZ2AuIEkgYWxyZWFkeSBoYXZlIGEgcHJldHR5IGdvb2QgbWVudGFsIG1vZGVsIG9mIGhvdyB0aGVzZSBLY29uZmlnIGZpbGVzIGFyZSBzdHJ1Y3R1cmVkLiBJJiMzOTttIGV4cGVjdGluZyB0byBmaW5kIHRoZSBzdGFuZGFyZCBzZWxlY3Rpb24gY3JpdGVyaWEsIGRlcGVuZGVuY2llcywgYW5kIGRlZmF1bHQgc2V0dGluZ3MgdGhhdCBkZXRlcm1pbmUgd2hpY2ggQnJvYWRjb20gRXRoZXJuZXQgZHJpdmVycyBnZXQgY29tcGlsZWQgaW50byB0aGUga2VybmVsLiBNeSBpbml0aWFsIGZvY3VzIHdpbGwgYmUgb24gdW5kZXJzdGFuZGluZyB0aGUgYXZhaWxhYmxlIG9wdGlvbnMsIGlkZW50aWZ5aW5nIGFueSBuZXcgb3IgY2hhbmdlZCBjb25maWd1cmF0aW9ucyBzaW5jZSBteSBsYXN0IHJldmlldywgYW5kIHNlZWluZyBpZiB0aGVyZSBhcmUgYW55IG9idmlvdXMgY29uZmxpY3RzIG9yIGRlcGVuZGVuY2llcyB0aGF0IGp1bXAgb3V0IGF0IG1lLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciB0aGluZ3MgbGlrZTogd2hpY2ggc3BlY2lmaWMgQnJvYWRjb20gY2hpcHNldHMgYXJlIHN1cHBvcnRlZD8gQXJlIHRoZXJlIGFueSBvcHRpb25zIGZvciBwb3dlciBtYW5hZ2VtZW50IG9yIHNwZWNpZmljIGZlYXR1cmVzPyBBcmUgdGhlcmUgYW55IG9idmlvdXMgc2VjdXJpdHkgb3IgcGVyZm9ybWFuY2UtcmVsYXRlZCBzZXR0aW5ncyB0aGF0IEkgc2hvdWxkIGJlIGF3YXJlIG9mPyBJJiMzOTtsbCBwcm9iYWJseSBjcm9zcy1yZWZlcmVuY2UgdGhpcyB3aXRoIHRoZSByZWxldmFudCBzb3VyY2UgY29kZSBsYXRlciwgYnV0IHRoaXMgS2NvbmZpZyBpcyB0aGUgYmVzdCBwbGFjZSB0byBnZXQgYSBoaWdoLWxldmVsIG92ZXJ2aWV3IG9mIHRoZSBkcml2ZXImIzM5O3MgY2FwYWJpbGl0aWVzIGFuZCBjb25maWd1cmFiaWxpdHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMDE6MDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFRJR09OMyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWc9MTEwPWNvbmZpZyBTQjEyNTBfTUFDXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZy0xMjItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnOjEyMzpjb25maWcgVElHT04zXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnLTEyNC1cdHRyaXN0YXRlIFwmIzM0O0Jyb2FkY29tIFRpZ29uMyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZy0xMzQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnOjEzNTpjb25maWcgVElHT04zX0hXTU9OXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnLTEzNi1cdGJvb2wgXCYjMzQ7QnJvYWRjb20gVGlnb24zIEhXTU9OIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAwMTowNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MzIxCgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgdGhlIFRJR09OMyBLY29uZmlnKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhlIEtjb25maWcgZm9yIHRoZSBUSUdPTjMuIEltbWVkaWF0ZWx5LCBJJiMzOTttIHRoaW5raW5nIGFib3V0IGhvdyB0aGlzIGNvbmZpZ3VyYXRpb24gZmlsZSBzdHJ1Y3R1cmVzIHRoZSBvcHRpb25zIGF2YWlsYWJsZSBmb3IgdGhpcyBzcGVjaWZpYyBuZXR3b3JrIGludGVyZmFjZSBjYXJkLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciB0aGUgdXN1YWwgc3VzcGVjdHM6IHRoZSBkZXZpY2UgZHJpdmVyJiMzOTtzIGNvcmUgZmVhdHVyZXMsIGl0cyBtb2R1bGFyaXR5LCBwb3RlbnRpYWwgZGVidWdnaW5nIGZsYWdzLCBhbmQgcGVyaGFwcyBzb21lIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBzZXR0aW5ncy4gSSYjMzk7bSBob3BpbmcgdG8gcXVpY2tseSBpZGVudGlmeSB0aGUga2V5IHZhcmlhYmxlcyB0aGF0IGNvbnRyb2wgaXRzIGJlaGF2aW9yIHdpdGhpbiB0aGUgTGludXgga2VybmVsLiBJdOKAmWxsIGJlIHVzZWZ1bCB0byBzZWUgaG93IHRoZSB2YXJpb3VzIGZlYXR1cmVzIGFyZSBndWFyZGVkIGJ5IGRlcGVuZGVuY2llcywgd2hpY2ggY2FuIGdpdmUgaW5zaWdodCBpbnRvIHRoZSBhcmNoaXRlY3R1cmUgYXNzdW1wdGlvbnMuIEkmIzM5O20gYW50aWNpcGF0aW5nIHRoZSBzdGFuZGFyZCBjb25kaXRpb25hbCBsb2dpYzogYGlmYCwgYHNlbGVjdGAsIGBkZXBlbmRzIG9uYCwgYW5kIG1heWJlIGV2ZW4gc29tZSBgZGVmYXVsdGAgdmFsdWVzLiBJIGFsc28gd2FudCB0byBvYnNlcnZlIHRoZSBoZWxwIHRleHQgZm9yIGEgcXVpY2sgcmVtaW5kZXIuIFNwZWNpZmljYWxseSwgSSYjMzk7bSBpbnRlcmVzdGVkIGluIGxvb2tpbmcgZm9yIGFueSBwb3RlbnRpYWwgY29tcGlsZS10aW1lIG9wdGlvbnMgZm9yIHRoaW5ncyBsaWtlIFZMQU4gc3VwcG9ydCwganVtYm8gZnJhbWVzLCBjaGVja3N1bSBvZmZsb2FkLCBvciBwZXJoYXBzIGFkdmFuY2VkIGZlYXR1cmVzIGxpa2UgZmxvdyBjb250cm9sLiBBcmUgdGhlcmUgYW55IGxlZ2FjeSBzZXR0aW5ncyBpbiB0aGVyZT8gSSBhbHNvIHdvbmRlciBpZiBpdCBoYXMgaXRzIG93biB1bmlxdWUgS2NvbmZpZyBsYW5ndWFnZS4gS25vd2luZyB0aGlzIHdpbGwgZ2l2ZSBtZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aGUgZHJpdmVyIGlzIGVuYWJsZWQsIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUga2VybmVsLCBhbmQgaG93IGVhc3kgaXQgaXMgdG8gY3VzdG9taXplIGZvciBzcGVjaWZpYyBuZWVkcy4gTGV0JiMzOTtzIHNlZSB3aGF0IHdlJiMzOTt2ZSBnb3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMDE6MDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTIwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxMjA6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZVxuIDEyMTpcdFx0ICB3aWxsIGJlIGNhbGxlZCBzYjEyNTAtbWFjLlxuIDEyMjpcdFxuIDEyMzpcdGNvbmZpZyBUSUdPTjNcbiAxMjQ6XHRcdHRyaXN0YXRlIFwmIzM0O0Jyb2FkY29tIFRpZ29uMyBzdXBwb3J0XCYjMzQ7XG4gMTI1Olx0XHRkZXBlbmRzIG9uIFBDSVxuIDEyNjpcdFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxuIDEyNzpcdFx0c2VsZWN0IENSQzMyXG4gMTI4Olx0XHRzZWxlY3QgUEhZTElCXG4gMTI5Olx0XHRoZWxwXG4gMTMwOlx0XHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIEJyb2FkY29tIFRpZ29uMyBiYXNlZCBnaWdhYml0IEV0aGVybmV0IGNhcmRzLlxuIDEzMTpcdFxuIDEzMjpcdFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlXG4gMTMzOlx0XHQgIHdpbGwgYmUgY2FsbGVkIHRnMy4gIFRoaXMgaXMgcmVjb21tZW5kZWQuXG4gMTM0Olx0XG4gMTM1Olx0Y29uZmlnIFRJR09OM19IV01PTlxuIDEzNjpcdFx0Ym9vbCBcJiMzNDtCcm9hZGNvbSBUaWdvbjMgSFdNT04gc3VwcG9ydFwmIzM0O1xuIDEzNzpcdFx0ZGVmYXVsdCB5XG4gMTM4Olx0XHRkZXBlbmRzIG9uIFRJR09OMyBcdTAwMjZcdTAwMjYgSFdNT04gXHUwMDI2XHUwMDI2ICEoVElHT04zPXkgXHUwMDI2XHUwMDI2IEhXTU9OPW0pXG4gMTM5Olx0XHRoZWxwXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMDE6MDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTk3NAoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJiMzOTttIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwcm9jZXNzOgoKKipEaXZpbmcgaW50byB0ZzNfaW5pdF9vbmUqKgoKT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGluaXRpYWxpemF0aW9uIHByb2Nlc3MgZm9yIHRoaXMgYHRnM2AgZHJpdmVyLiBTcGVjaWZpY2FsbHksIEkgd2FudCB0byBkcmlsbCBkb3duIGludG8gd2hhdCB0aGUgYHRnM19pbml0X29uZWAgZnVuY3Rpb24gKmFjdHVhbGx5KiBkb2VzLiBNeSBmaXJzdCBzdGVwIGlzIHRvIHRyYWNlIGl0cyBleGVjdXRpb24gYW5kIHVuZGVyc3RhbmQgaG93IGl0JiMzOTtzIGludGVncmF0ZWQgaW50byB0aGUgbGFyZ2VyIGRyaXZlciBmcmFtZXdvcmsuIFdoZXJlIGlzIHRoaXMgZnVuY3Rpb24gZGVjbGFyZWQ/IFdoZXJlIGRvZXMgdGhlIGtlcm5lbCBhY3R1YWxseSBjYWxsIGl0PyBLbm93aW5nIHRoZSBjYWxsIGNoYWluIGlzIGtleSB0byB1bmRlcnN0YW5kaW5nIGl0cyBwdXJwb3NlIGFuZCBpdHMgcm9sZSBpbiB0aGUgc3lzdGVtLiBJIGV4cGVjdCB0aGlzIHdpbGwgbGVhZCBtZSB0byB0aGUgcmVsZXZhbnQgUENJIGRldmljZSBwcm9iZSBmdW5jdGlvbiwgYnV0IEkgbmVlZCB0byBtYWtlIHN1cmUgSSBhbSBvbiB0aGUgcmlnaHQgdHJhY2suCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDAxOjA0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3RnM19pbml0X29uZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jPTE3NjQ5PXN0YXRpYyB2b2lkIHRnM19pbml0X2NvYWwoc3RydWN0IHRnMyAqdHApXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmMtMTc2NzktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYzoxNzY4MDpzdGF0aWMgaW50IHRnM19pbml0X29uZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jLTE3NjgxLVx0XHRcdFx0ICBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jPTE4NDI3PXN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciB0ZzNfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jLTE4NDI5LVx0LmlkX3RhYmxlXHQ9IHRnM19wY2lfdGJsLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmM6MTg0MzA6XHQucHJvYmVcdFx0PSB0ZzNfaW5pdF9vbmUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYy0xODQzMS1cdC5yZW1vdmVcdFx0PSB0ZzNfcmVtb3ZlX29uZSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMDE6MDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjQ3NgoJCQkJCQkJb3V0cHV0OiAxMjEKCQkJCQkJCXRob3VnaHRzOiA2NzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHlzaXMgb2YgdGczX2luaXRfb25lIGZvciBGdXp6aW5nIFN1aXRhYmlsaXR5KioKCk9rYXksIHNvIGB0ZzNfaW5pdF9vbmVgIGlzIHRoZSBwcm9iZSBmdW5jdGlvbiB3aXRoaW4gdGhlIGB0ZzNfZHJpdmVyYCDigJMgdGhhdCYjMzk7cyB0aGUgc3RhcnRpbmcgcG9pbnQuIExldCYjMzk7cyBzZWUgaWYgdGhpcyBjb2RlIGNoYW5nZSBtYWtlcyBzZW5zZSB0byBmdXp6LiBUaGUgcHJvbXB0JiMzOTtzIG5lZ2F0aXZlIGNyaXRlcmlhIGFyZSBwcmV0dHkgY2xlYXI6IHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiB0aGUgbW9kaWZpZWQgY29kZSBmYWxscyAqc3RyaWN0bHkqIGludG8gb25lIG9mIGEgZmV3IGNhdGVnb3JpZXMgb2YgdW5yZWFjaGFibGUgaGFyZHdhcmUuCgpUaGUgQnJvYWRjb20gVGlnb24zICh0ZzMpIHNwZWNpZmljYWxseSB0YXJnZXRzIHBoeXNpY2FsIFBDSSBuZXR3b3JrIGNhcmRzIChCQ001N3h4IHNlcmllcykuIFRoYXQmIzM5O3MgYSBrZXkgZGlzdGluY3Rpb247IGl0JiMzOTtzICpub3QqIGVtdWxhdGVkIGJ5IHN0YW5kYXJkIFFFTVUgb3IgYXZhaWxhYmxlIGluIGVudmlyb25tZW50cyBsaWtlIEdDRS4gVGh1cywgaXQmIzM5O3Mgbm90IHByZXNlbnQgaW4gYSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gVGhpcyBpcyBnb29kIGluZm9ybWF0aW9uLgoKTm93LCB0aGUgbW9kaWZpZWQgY29kZSBpcyBpbiBgdGczX2luaXRfb25lKClgLCB0aGUgcHJvYmUgY2FsbGJhY2suIFRoaXMgYC5wcm9iZWAgZnVuY3Rpb24gcnVucyBvbmx5IHdoZW4gdGhhdCAqcGh5c2ljYWwqIGhhcmR3YXJlIGdldHMgcHJvYmVkLiBTaW5jZSB0aGlzIHBoeXNpY2FsIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiB0aGUgZnV6emluZyBlbnZpcm9ubWVudHMsIHRoaXMgZnVuY3Rpb24gd291bGQgbm90IHJ1bi4gVGhhdCBtYWtlcyB0aGUgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcgcHVycG9zZXMuIEl0IGlzIHVucmVhY2hhYmxlIGR1ZSB0byB0aGUgcmVxdWlyZWQgaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KClRoZXJlZm9yZTogYFdvcnRoRnV6emluZ2Agc2hvdWxkIGJlIGBmYWxzZWAuCgpJIGNhbiBzcGVjaWZ5IHRoZSBgRW5hYmxlQ29uZmlnc2AgYXMgZWl0aGVyIGBbXWAgb3IgYFsmIzM0O1RJR09OMyYjMzQ7LCAmIzM0O1BDSSYjMzQ7XWAuIFRoZXkgYXJlIG5vdCBpbXBvcnRhbnQgc2luY2UgYFdvcnRoRnV6emluZ2AgaXMgYGZhbHNlYC4KCkFzIGZvciBgRm9jdXNTeW1ib2xzYCwgZXZlbiB0aG91Z2ggYHRnM19pbml0X29uZWAgd291bGQgYmUgdGhlIGxvZ2ljYWwgY2hvaWNlLCBpdCBzaG91bGQgYmUgc2V0IHRvIGBbXWAgd2hlbiBgV29ydGhGdXp6aW5nYCBpcyBgZmFsc2VgLiBUaGUgZnV6emVyIHdpbGwgaWdub3JlIHRoZSBjb2RlIGVudGlyZWx5IGlmIGl0IHRoaW5rcyBpdCBpcyB1bnJlYWNoYWJsZS4KCkxldCYjMzk7cyBkb3VibGUtY2hlY2sgdGhlIGd1aWRlbGluZXMuLi4gQWgsIHRoZSBgc2V0LXJlc3VsdHNgIHRvb2wgaXMgdXNlZCBvbmNlLCBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LiBHb29kLgoKVG8gc29saWRpZnkgbXkgdGhpbmtpbmcsIGxldCYjMzk7cyBsb29rIGF0IHRoZSBwYXRjaDogSXQgbW9kaWZpZXMgYHRnM19pbml0X29uZWAsIHRoZSBwcm9iZSBjYWxsYmFjayBmb3IgYSBCcm9hZGNvbSBUaWdvbjMgUENJIEdpZ2FiaXQgRXRoZXJuZXQgYWRhcHRlci4gVGhlIGRyaXZlciBuZWNlc3NpdGF0ZXMgc3BlY2lmaWMgcGh5c2ljYWwgaGFyZHdhcmUgKEJDTTU3eHggc2VyaWVzIFBDSSBuZXR3b3JrIGNhcmRzKSB0aGF0IGFyZSBub3QgZW11bGF0ZWQgaW4gdHlwaWNhbCBRRU1VIG9yIEdDRSB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cy4gVGh1cywgdGhlIGNvZGUgaXMgdW5yZWFjaGFibGUuCgpPbmx5IGBkcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuY2Agd2FzIGNoYW5nZWQgaW4gY29tbWl0IGA5YWYzNWJmMjJmMGQ5N2RhOTE2NzUzYzc3NzUxMjk5OTU1NGU0YWUwYC4KCkV2ZXJ5dGhpbmcgY2hlY2tzIG91dC4gSSYjMzk7bSBjb25maWRlbnQuIFRpbWUgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAwMTowNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGB0ZzNfaW5pdF9vbmVgIGluIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuY2AsIHdoaWNoIGlzIHRoZSBQQ0kgcHJvYmUgZnVuY3Rpb24gZm9yIEJyb2FkY29tIFRpZ29uMyAoQkNNNTd4eCkgRXRoZXJuZXQgYWRhcHRlcnMuIFRoaXMgZHJpdmVyIHRhcmdldHMgdmVuZG9yLXNwZWNpZmljIHBoeXNpY2FsIFBDSSBuZXR3b3JrIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3Igc3l6a2FsbGVyIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgdGczX2luaXRfb25lYCBpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmNgLCB3aGljaCBpcyB0aGUgUENJIHByb2JlIGZ1bmN0aW9uIGZvciBCcm9hZGNvbSBUaWdvbjMgKEJDTTU3eHgpIEV0aGVybmV0IGFkYXB0ZXJzLiBUaGlzIGRyaXZlciB0YXJnZXRzIHZlbmRvci1zcGVjaWZpYyBwaHlzaWNhbCBQQ0kgbmV0d29yayBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIHN5emthbGxlciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMDE6MDQ8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDAxOjA0OjA5LjgxNDYxMTczM1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4NTc3OTc5ODgyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYHRnM19pbml0X29uZWAgaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jYCwgd2hpY2ggaXMgdGhlIFBDSSBwcm9iZSBmdW5jdGlvbiBmb3IgQnJvYWRjb20gVGlnb24zIChCQ001N3h4KSBFdGhlcm5ldCBhZGFwdGVycy4gVGhpcyBkcml2ZXIgdGFyZ2V0cyB2ZW5kb3Itc3BlY2lmaWMgcGh5c2ljYWwgUENJIG5ldHdvcmsgaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciBHQ0UgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBzeXprYWxsZXIgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDAxOjA0OjA5LjgxNDYxNjg0NFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTY0MjgxMDYzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgOWFmMzViZjIyZjBkOTdkYTkxNjc1M2M3Nzc1MTI5OTk1NTRlNGFlMFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVHVlIFNlcCAxNSAwMTowNDowOSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jXFxuaW5kZXggNzNhNGI1NjliMDNlMy4uNzVjYjBiMGZhYjJmYSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jXFxuQEAgLTE3OTE0LDEyICsxNzkxNCwxMyBAQCBzdGF0aWMgaW50IHRnM19pbml0X29uZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4gXFx0fVxcbiBcXG4gXFx0ZXJyID0gdGczX2dldF9kZXZpY2VfYWRkcmVzcyh0cCwgYWRkcik7XFxuLVxcdGlmIChlcnIpIHtcXG4tXFx0XFx0ZGV2X2VycihcXHUwMDI2cGRldi1cXHUwMDNlZGV2LFxcbi1cXHRcXHRcXHRcXFwiQ291bGQgbm90IG9idGFpbiB2YWxpZCBldGhlcm5ldCBhZGRyZXNzLCBhYm9ydGluZ1xcXFxuXFxcIik7XFxuLVxcdFxcdGdvdG8gZXJyX291dF9hcGV1bm1hcDtcXG4rXFx0aWYgKCFlcnIpIHtcXG4rXFx0XFx0ZXRoX2h3X2FkZHJfc2V0KGRldiwgYWRkcik7XFxuK1xcdH0gZWxzZSB7XFxuK1xcdFxcdGRldl93YXJuKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsXFxuK1xcdFxcdFxcdCBcXFwiQ291bGQgbm90IG9idGFpbiB2YWxpZCBldGhlcm5ldCBhZGRyZXNzLCB1c2luZyBhIHJhbmRvbSBhZGRyZXNzXFxcXG5cXFwiKTtcXG4rXFx0XFx0ZXRoX2h3X2FkZHJfcmFuZG9tKGRldik7XFxuIFxcdH1cXG4tXFx0ZXRoX2h3X2FkZHJfc2V0KGRldiwgYWRkcik7XFxuIFxcbiBcXHRpbnRtYnggPSBNQUlMQk9YX0lOVEVSUlVQVF8wICsgVEczXzY0QklUX1JFR19MT1c7XFxuIFxcdHJjdm1ieCA9IE1BSUxCT1hfUkNWUkVUX0NPTl9JRFhfMCArIFRHM182NEJJVF9SRUdfTE9XO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQwMTowNDoxMC4zNzk1MzY4ODhaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjQ4MDEzMDM5ODM3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgdGczX2luaXRfb25lYCBpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmNgLCB3aGljaCBpcyB0aGUgUENJIHByb2JlIGZ1bmN0aW9uIGZvciBCcm9hZGNvbSBUaWdvbjMgKEJDTTU3eHgpIEV0aGVybmV0IGFkYXB0ZXJzLiBUaGlzIGRyaXZlciB0YXJnZXRzIHZlbmRvci1zcGVjaWZpYyBwaHlzaWNhbCBQQ0kgbmV0d29yayBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIHN5emthbGxlciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzc1xudG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5UaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLFxuYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy5cblxuLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURTpcbiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZFxuICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLlxuICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsXG4gIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy5cblxuLSBETyBOT1QgQkxJTkRMWSBUUlVTVCBcIk5PIEZVTkNUSU9OQUwgQ0hBTkdFXCIgKE5GQ0kpIE9SIFwiUkVGQUNUT1JJTkdcIiBDTEFJTVM6XG4gIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgXCJjbGVhbnVwc1wiLCBcInJlZmFjdG9yaW5nc1wiLCBvciBzdGF0ZVxuICBcIk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkXCIuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLlxuICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnRcbiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuXG4gIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuXG5cbi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6XG4gIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKixcbiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuXG4gIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXJcbiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOlxuXG4tIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6XG4gICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLlxuICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKVxuICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cbiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50c1xuICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuXG4gICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLlxuLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6XG4gICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczpcbiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmdcbiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy5cbiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4zLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzpcbi0gQ29yZSBTdWJzeXN0ZW1zOlxuICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSxcbiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuXG4tIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczpcbiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuXG4tIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczpcbiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuXG4tIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6XG4gICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6XG5cbi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOlxuICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1c1xuICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdFxuICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS5cbiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzIFwiZm9jdXNlZFwiLFxuICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuXG5cbi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOlxuICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHNcbiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuXG5cbi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOlxuICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrXG4gIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLlxuICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXJcbiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlnc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6XG4tIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4tIENoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuXG4tIFN0cmlwIGFueSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA5YWYzNWJmMjJmMGQ5N2RhOTE2NzUzYzc3NzUxMjk5OTU1NGU0YWUwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBTZXAgMTUgMDE6MDQ6MDkgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jXG5pbmRleCA3M2E0YjU2OWIwM2UzLi43NWNiMGIwZmFiMmZhIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jXG5AQCAtMTc5MTQsMTIgKzE3OTE0LDEzIEBAIHN0YXRpYyBpbnQgdGczX2luaXRfb25lKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuIFx0fVxuIFxuIFx0ZXJyID0gdGczX2dldF9kZXZpY2VfYWRkcmVzcyh0cCwgYWRkcik7XG4tXHRpZiAoZXJyKSB7XG4tXHRcdGRldl9lcnIoXHUwMDI2cGRldi1cdTAwM2VkZXYsXG4tXHRcdFx0XCJDb3VsZCBub3Qgb2J0YWluIHZhbGlkIGV0aGVybmV0IGFkZHJlc3MsIGFib3J0aW5nXFxuXCIpO1xuLVx0XHRnb3RvIGVycl9vdXRfYXBldW5tYXA7XG4rXHRpZiAoIWVycikge1xuK1x0XHRldGhfaHdfYWRkcl9zZXQoZGV2LCBhZGRyKTtcbitcdH0gZWxzZSB7XG4rXHRcdGRldl93YXJuKFx1MDAyNnBkZXYtXHUwMDNlZGV2LFxuK1x0XHRcdCBcIkNvdWxkIG5vdCBvYnRhaW4gdmFsaWQgZXRoZXJuZXQgYWRkcmVzcywgdXNpbmcgYSByYW5kb20gYWRkcmVzc1xcblwiKTtcbitcdFx0ZXRoX2h3X2FkZHJfcmFuZG9tKGRldik7XG4gXHR9XG4tXHRldGhfaHdfYWRkcl9zZXQoZGV2LCBhZGRyKTtcbiBcbiBcdGludG1ieCA9IE1BSUxCT1hfSU5URVJSVVBUXzAgKyBURzNfNjRCSVRfUkVHX0xPVztcbiBcdHJjdm1ieCA9IE1BSUxCT1hfUkNWUkVUX0NPTl9JRFhfMCArIFRHM182NEJJVF9SRUdfTE9XO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMDE6MDQ6MTAuMzc5NTM4NDk3WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6MTczMDMzMjE4OTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSB0ZzMgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmNgLCBzcGVjaWZpY2FsbHkgdGhlIGB0ZzNfaW5pdF9vbmVgIGZ1bmN0aW9uLiBJdCBzZWVtcyB0byBiZSBjaGFuZ2luZyBob3cgdGhlIGV0aGVybmV0IGFkZHJlc3MgaXMgaGFuZGxlZCBkdXJpbmcgZGV2aWNlIGluaXRpYWxpemF0aW9uLiBJIHNlZSB0aGUgb3JpZ2luYWwgY29kZSB0cmllcyB0byBnZXQgYSB2YWxpZCBldGhlcm5ldCBhZGRyZXNzIGFuZCBiYWlscyBvdXQgaWYgaXQgY2FuJ3QsIGJ1dCB0aGUgbW9kaWZpZWQgY29kZSBub3cgYXR0ZW1wdHMgdG8gZ2V0IGEgcmFuZG9tIE1BQyBhZGRyZXNzIGlmIHRoZSBoYXJkd2FyZSBhZGRyZXNzIGNhbid0IGJlIG9idGFpbmVkLlxuXG5NeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gcXVpY2tseSB1bmRlcnN0YW5kIHRoZSBjb250ZXh0LiBgdGczYCBpcyB0aGUgQnJvYWRjb20gVGlnb24zIGV0aGVybmV0IGRyaXZlciwgbGlrZWx5IGZvciBQQ0kgR2lnYWJpdCBFdGhlcm5ldCBhZGFwdGVycyBsaWtlIHRoZSBCQ001N3h4IHNlcmllcy4gVGhlIGtleSB0aGluZyBpcywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaWYgYHRnM2AgaXMgc29tZXRoaW5nIFFFTVUgZW11bGF0ZXMuIElmIGl0IGRvZXNuJ3QsIHdlIGFyZSBkZWFsaW5nIHdpdGggcGh5c2ljYWwgaGFyZHdhcmUsIGFuZCB0aGF0J3MgYSBkaWZmZXJlbnQgYmVhc3QuIEJhc2VkIG9uIHRoZSBwcm9tcHQsIGNlcnRhaW4gaGFyZHdhcmUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGR1ZSB0byBRRU1VIGxpbWl0YXRpb25zLCBzbyB0aGF0IGlzIG15IGltbWVkaWF0ZSBjb25jZXJuLlxuXG5MZXQncyBzZWUgd2hhdCB0aGUgcHJvbXB0IHNheXMgYWJvdXQgdGhpcyAtIGFoLCBpdCdzIHNwZWNpZmljIGFib3V0IGNlcnRhaW4gaGFyZHdhcmUgdHlwZXMgdGhhdCBRRU1VIGRvZXMgKm5vdCogZW11bGF0ZS4gV2UgbmVlZCB0byBjaGVjayBpZiB0aGUgZHJpdmVyIGlzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMsIHNpbmNlIHRob3NlIGFyZSBhY2Nlc3NpYmxlLlxuXG5BIHF1aWNrIGNoZWNrIGNvbmZpcm1zIG15IHN1c3BpY2lvbjogUUVNVSBkb2Vzbid0IG9mZmVyIGVtdWxhdGlvbiBmb3IgdGhlIGB0ZzNgIG9yIHRoZSBCcm9hZGNvbSBOZXRYdHJlbWUgY2FyZHMuIEl0IGxpc3RzIGEgZGlmZmVyZW50IHNldCBvZiBzdXBwb3J0ZWQgTklDczogZTEwMDAsIGlnYiwgdmlydGlvLW5ldCwgZXRjLiwgYnV0IG5vdGhpbmcgZm9yIHRoZSBUaWdvbjMuIFRoYXQgbWFrZXMgdGhpcyBoYXJkd2FyZSBwb3RlbnRpYWxseSB1bnJlYWNoYWJsZSBmb3Igc3RhbmRhcmQgdGVzdGluZyB3aXRoaW4gdGhlIGNvbmZpbmVzIG9mIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuXG5cbk5vdywgZXZlbiBpZiBzb21lb25lIGhhZCBhY2Nlc3MgdG8gdGhlIGhhcmR3YXJlIG9yIGEgY3VzdG9tIGVtdWxhdGVkIGVudmlyb25tZW50LCB0aGUgcGF0Y2ggbW9kaWZpZXMgYHRnM19pbml0X29uZWAuIFRoaXMgZnVuY3Rpb24gaXMgcGFydCBvZiB0aGUgYHBjaV9kcml2ZXJgJ3MgYC5wcm9iZWAgZnVuY3Rpb24uIFRoaXMgbWVhbnMgdGhhdCB0aGlzIGNvZGUgaXMgZXhlY3V0ZWQgb25seSBkdXJpbmcgdGhlICppbml0aWFsKiBwcm9iZSBvZiB0aGUgUENJIGRldmljZSAoYXQgYm9vdCwgb3IgaG90cGx1ZykuIFNvIHRoaXMgY2hhbmdlIGlzIG9ubHkgcmVsZXZhbnQgZHVyaW5nIGRldmljZSBpbml0aWFsaXphdGlvbi4gVGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIGFyZSBpbXBvcnRhbnQsIGFuZCBuZWVkIGZ1cnRoZXIgaW52ZXN0aWdhdGlvbi5cblxuU28sIGluIHN1bW1hcnksIHRoaXMgcGF0Y2ggaXMgcHJvYmFibHkgbm90IHNvbWV0aGluZyB0ZXN0YWJsZSB3aXRoIHN0YW5kYXJkIFFFTVU7IGl0IGxpa2VseSByZXF1aXJlcyBlaXRoZXIgcGh5c2ljYWwgaGFyZHdhcmUgb3IgYSBjdXN0b20gZW52aXJvbm1lbnQuIEkgc2hvdWxkIHNlYXJjaCB0byBiZSBzdXJlIGl0IGlzIG5vdCBpbiB0aGUgZW52aXJvbm1lbnRzIHdlIGFyZSB1c2luZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzAzMCwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc5NCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDAxOjA0OjI3LjY4Mjg2MjU0NVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MzM3MjkwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJDT05GSUdfVElHT04zXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL01ha2VmaWxlPTEzPW9iai0kKENPTkZJR19TQjEyNTBfTUFDKSArPSBzYjEyNTAtbWFjLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9NYWtlZmlsZToxNDpvYmotJChDT05GSUdfVElHT04zKSArPSB0ZzMub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL01ha2VmaWxlLTE1LW9iai0kKENPTkZJR19CR01BQykgKz0gYmdtYWMub1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmM9ODA4PXN0YXRpYyBpbnQgdGczX2FwZV9ldmVudF9sb2NrKHN0cnVjdCB0ZzMgKnRwLCB1MzIgdGltZW91dF91cylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jLTgyOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYzo4Mjk6I2lmZGVmIENPTkZJR19USUdPTjNfSFdNT05cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYy04MzAtc3RhdGljIGludCB0ZzNfYXBlX3dhaXRfZm9yX2V2ZW50KHN0cnVjdCB0ZzMgKnRwLCB1MzIgdGltZW91dF91cylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jPTEwODYwPXN0YXRpYyBpbnQgdGczX2luaXRfaHcoc3RydWN0IHRnMyAqdHAsIGJvb2wgcmVzZXRfcGh5KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmMtMTA4NzUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmM6MTA4NzY6I2lmZGVmIENPTkZJR19USUdPTjNfSFdNT05cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYy0xMDg3Ny1zdGF0aWMgdm9pZCB0ZzNfc2Rfc2Nhbl9zY3JhdGNocGFkKHN0cnVjdCB0ZzMgKnRwLCBzdHJ1Y3QgdGczX29jaXIgKm9jaXIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYz0xMDk1OT1zdGF0aWMgaW5saW5lIHZvaWQgdGczX2h3bW9uX29wZW4oc3RydWN0IHRnMyAqdHApIHsgfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jOjEwOTYwOiNlbmRpZiAvKiBDT05GSUdfVElHT04zX0hXTU9OICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmMtMTA5NjEtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDAxOjA0OjI3LjczNjI0MTMyNVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjExNzAxMTQ2ODcyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czpcblxuKipFeGFtaW5pbmcgdGhlIEJyb2FkY29tIEV0aGVybmV0IERyaXZlciBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSBuZWVkIHRvIGRpdmUgaW50byB0aGUgQnJvYWRjb20gRXRoZXJuZXQgZHJpdmVyIGNvbmZpZ3VyYXRpb24uIExldCdzIHN0YXJ0IHdpdGggYGRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWdgLiBJIGFscmVhZHkgaGF2ZSBhIHByZXR0eSBnb29kIG1lbnRhbCBtb2RlbCBvZiBob3cgdGhlc2UgS2NvbmZpZyBmaWxlcyBhcmUgc3RydWN0dXJlZC4gSSdtIGV4cGVjdGluZyB0byBmaW5kIHRoZSBzdGFuZGFyZCBzZWxlY3Rpb24gY3JpdGVyaWEsIGRlcGVuZGVuY2llcywgYW5kIGRlZmF1bHQgc2V0dGluZ3MgdGhhdCBkZXRlcm1pbmUgd2hpY2ggQnJvYWRjb20gRXRoZXJuZXQgZHJpdmVycyBnZXQgY29tcGlsZWQgaW50byB0aGUga2VybmVsLiBNeSBpbml0aWFsIGZvY3VzIHdpbGwgYmUgb24gdW5kZXJzdGFuZGluZyB0aGUgYXZhaWxhYmxlIG9wdGlvbnMsIGlkZW50aWZ5aW5nIGFueSBuZXcgb3IgY2hhbmdlZCBjb25maWd1cmF0aW9ucyBzaW5jZSBteSBsYXN0IHJldmlldywgYW5kIHNlZWluZyBpZiB0aGVyZSBhcmUgYW55IG9idmlvdXMgY29uZmxpY3RzIG9yIGRlcGVuZGVuY2llcyB0aGF0IGp1bXAgb3V0IGF0IG1lLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlOiB3aGljaCBzcGVjaWZpYyBCcm9hZGNvbSBjaGlwc2V0cyBhcmUgc3VwcG9ydGVkPyBBcmUgdGhlcmUgYW55IG9wdGlvbnMgZm9yIHBvd2VyIG1hbmFnZW1lbnQgb3Igc3BlY2lmaWMgZmVhdHVyZXM/IEFyZSB0aGVyZSBhbnkgb2J2aW91cyBzZWN1cml0eSBvciBwZXJmb3JtYW5jZS1yZWxhdGVkIHNldHRpbmdzIHRoYXQgSSBzaG91bGQgYmUgYXdhcmUgb2Y/IEknbGwgcHJvYmFibHkgY3Jvc3MtcmVmZXJlbmNlIHRoaXMgd2l0aCB0aGUgcmVsZXZhbnQgc291cmNlIGNvZGUgbGF0ZXIsIGJ1dCB0aGlzIEtjb25maWcgaXMgdGhlIGJlc3QgcGxhY2UgdG8gZ2V0IGEgaGlnaC1sZXZlbCBvdmVydmlldyBvZiB0aGUgZHJpdmVyJ3MgY2FwYWJpbGl0aWVzIGFuZCBjb25maWd1cmFiaWxpdHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ4NTQsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQwMTowNDozOS40MzczOTQwMDZaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTE2Nzg1NDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFRJR09OM1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnPTExMD1jb25maWcgU0IxMjUwX01BQ1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZy0xMjItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZzoxMjM6Y29uZmlnIFRJR09OM1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWctMTI0LVxcdHRyaXN0YXRlIFxcXCJCcm9hZGNvbSBUaWdvbjMgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWctMTM0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWc6MTM1OmNvbmZpZyBUSUdPTjNfSFdNT05cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnLTEzNi1cXHRib29sIFxcXCJCcm9hZGNvbSBUaWdvbjMgSFdNT04gc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMDE6MDQ6MzkuNDg5MDc3Nzc0WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6NTg4Njg1NTc4MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgdGhlIFRJR09OMyBLY29uZmlnKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoZSBLY29uZmlnIGZvciB0aGUgVElHT04zLiBJbW1lZGlhdGVseSwgSSdtIHRoaW5raW5nIGFib3V0IGhvdyB0aGlzIGNvbmZpZ3VyYXRpb24gZmlsZSBzdHJ1Y3R1cmVzIHRoZSBvcHRpb25zIGF2YWlsYWJsZSBmb3IgdGhpcyBzcGVjaWZpYyBuZXR3b3JrIGludGVyZmFjZSBjYXJkLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIHRoZSB1c3VhbCBzdXNwZWN0czogdGhlIGRldmljZSBkcml2ZXIncyBjb3JlIGZlYXR1cmVzLCBpdHMgbW9kdWxhcml0eSwgcG90ZW50aWFsIGRlYnVnZ2luZyBmbGFncywgYW5kIHBlcmhhcHMgc29tZSBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgc2V0dGluZ3MuIEknbSBob3BpbmcgdG8gcXVpY2tseSBpZGVudGlmeSB0aGUga2V5IHZhcmlhYmxlcyB0aGF0IGNvbnRyb2wgaXRzIGJlaGF2aW9yIHdpdGhpbiB0aGUgTGludXgga2VybmVsLiBJdOKAmWxsIGJlIHVzZWZ1bCB0byBzZWUgaG93IHRoZSB2YXJpb3VzIGZlYXR1cmVzIGFyZSBndWFyZGVkIGJ5IGRlcGVuZGVuY2llcywgd2hpY2ggY2FuIGdpdmUgaW5zaWdodCBpbnRvIHRoZSBhcmNoaXRlY3R1cmUgYXNzdW1wdGlvbnMuIEknbSBhbnRpY2lwYXRpbmcgdGhlIHN0YW5kYXJkIGNvbmRpdGlvbmFsIGxvZ2ljOiBgaWZgLCBgc2VsZWN0YCwgYGRlcGVuZHMgb25gLCBhbmQgbWF5YmUgZXZlbiBzb21lIGBkZWZhdWx0YCB2YWx1ZXMuIEkgYWxzbyB3YW50IHRvIG9ic2VydmUgdGhlIGhlbHAgdGV4dCBmb3IgYSBxdWljayByZW1pbmRlci4gU3BlY2lmaWNhbGx5LCBJJ20gaW50ZXJlc3RlZCBpbiBsb29raW5nIGZvciBhbnkgcG90ZW50aWFsIGNvbXBpbGUtdGltZSBvcHRpb25zIGZvciB0aGluZ3MgbGlrZSBWTEFOIHN1cHBvcnQsIGp1bWJvIGZyYW1lcywgY2hlY2tzdW0gb2ZmbG9hZCwgb3IgcGVyaGFwcyBhZHZhbmNlZCBmZWF0dXJlcyBsaWtlIGZsb3cgY29udHJvbC4gQXJlIHRoZXJlIGFueSBsZWdhY3kgc2V0dGluZ3MgaW4gdGhlcmU/IEkgYWxzbyB3b25kZXIgaWYgaXQgaGFzIGl0cyBvd24gdW5pcXVlIEtjb25maWcgbGFuZ3VhZ2UuIEtub3dpbmcgdGhpcyB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiBob3cgdGhlIGRyaXZlciBpcyBlbmFibGVkLCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIGtlcm5lbCwgYW5kIGhvdyBlYXN5IGl0IGlzIHRvIGN1c3RvbWl6ZSBmb3Igc3BlY2lmaWMgbmVlZHMuIExldCdzIHNlZSB3aGF0IHdlJ3ZlIGdvdC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTMyMSwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDAxOjA0OjQ1LjM3NTkzNjE5NFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc1NDcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMTIwLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMTIwOlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZVxcbiAxMjE6XFx0XFx0ICB3aWxsIGJlIGNhbGxlZCBzYjEyNTAtbWFjLlxcbiAxMjI6XFx0XFxuIDEyMzpcXHRjb25maWcgVElHT04zXFxuIDEyNDpcXHRcXHR0cmlzdGF0ZSBcXFwiQnJvYWRjb20gVGlnb24zIHN1cHBvcnRcXFwiXFxuIDEyNTpcXHRcXHRkZXBlbmRzIG9uIFBDSVxcbiAxMjY6XFx0XFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxcbiAxMjc6XFx0XFx0c2VsZWN0IENSQzMyXFxuIDEyODpcXHRcXHRzZWxlY3QgUEhZTElCXFxuIDEyOTpcXHRcXHRoZWxwXFxuIDEzMDpcXHRcXHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIEJyb2FkY29tIFRpZ29uMyBiYXNlZCBnaWdhYml0IEV0aGVybmV0IGNhcmRzLlxcbiAxMzE6XFx0XFxuIDEzMjpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcXG4gMTMzOlxcdFxcdCAgd2lsbCBiZSBjYWxsZWQgdGczLiAgVGhpcyBpcyByZWNvbW1lbmRlZC5cXG4gMTM0OlxcdFxcbiAxMzU6XFx0Y29uZmlnIFRJR09OM19IV01PTlxcbiAxMzY6XFx0XFx0Ym9vbCBcXFwiQnJvYWRjb20gVGlnb24zIEhXTU9OIHN1cHBvcnRcXFwiXFxuIDEzNzpcXHRcXHRkZWZhdWx0IHlcXG4gMTM4OlxcdFxcdGRlcGVuZHMgb24gVElHT04zIFxcdTAwMjZcXHUwMDI2IEhXTU9OIFxcdTAwMjZcXHUwMDI2ICEoVElHT04zPXkgXFx1MDAyNlxcdTAwMjYgSFdNT049bSlcXG4gMTM5OlxcdFxcdGhlbHBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMDE6MDQ6NDUuMzc2MDEzNDM0WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6MTY1OTExNjQ1OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJ20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gdGczX2luaXRfb25lKipcblxuT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGluaXRpYWxpemF0aW9uIHByb2Nlc3MgZm9yIHRoaXMgYHRnM2AgZHJpdmVyLiBTcGVjaWZpY2FsbHksIEkgd2FudCB0byBkcmlsbCBkb3duIGludG8gd2hhdCB0aGUgYHRnM19pbml0X29uZWAgZnVuY3Rpb24gKmFjdHVhbGx5KiBkb2VzLiBNeSBmaXJzdCBzdGVwIGlzIHRvIHRyYWNlIGl0cyBleGVjdXRpb24gYW5kIHVuZGVyc3RhbmQgaG93IGl0J3MgaW50ZWdyYXRlZCBpbnRvIHRoZSBsYXJnZXIgZHJpdmVyIGZyYW1ld29yay4gV2hlcmUgaXMgdGhpcyBmdW5jdGlvbiBkZWNsYXJlZD8gV2hlcmUgZG9lcyB0aGUga2VybmVsIGFjdHVhbGx5IGNhbGwgaXQ/IEtub3dpbmcgdGhlIGNhbGwgY2hhaW4gaXMga2V5IHRvIHVuZGVyc3RhbmRpbmcgaXRzIHB1cnBvc2UgYW5kIGl0cyByb2xlIGluIHRoZSBzeXN0ZW0uIEkgZXhwZWN0IHRoaXMgd2lsbCBsZWFkIG1lIHRvIHRoZSByZWxldmFudCBQQ0kgZGV2aWNlIHByb2JlIGZ1bmN0aW9uLCBidXQgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGFtIG9uIHRoZSByaWdodCB0cmFjay5cblxuXG4iLCJJbnB1dFRva2VucyI6NTk3NCwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMDE6MDQ6NDcuMDM1MTMzNDkyWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzUwMjY3NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0ZzNfaW5pdF9vbmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmM9MTc2NDk9c3RhdGljIHZvaWQgdGczX2luaXRfY29hbChzdHJ1Y3QgdGczICp0cClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jLTE3Njc5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jOjE3NjgwOnN0YXRpYyBpbnQgdGczX2luaXRfb25lKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jLTE3NjgxLVxcdFxcdFxcdFxcdCAgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jPTE4NDI3PXN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciB0ZzNfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmMtMTg0MjktXFx0LmlkX3RhYmxlXFx0PSB0ZzNfcGNpX3RibCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYzoxODQzMDpcXHQucHJvYmVcXHRcXHQ9IHRnM19pbml0X29uZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYy0xODQzMS1cXHQucmVtb3ZlXFx0XFx0PSB0ZzNfcmVtb3ZlX29uZSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMDE6MDQ6NDcuMDgyNjQ4MDE2WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjExMzA5ODkxMTE4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5c2lzIG9mIHRnM19pbml0X29uZSBmb3IgRnV6emluZyBTdWl0YWJpbGl0eSoqXG5cbk9rYXksIHNvIGB0ZzNfaW5pdF9vbmVgIGlzIHRoZSBwcm9iZSBmdW5jdGlvbiB3aXRoaW4gdGhlIGB0ZzNfZHJpdmVyYCDigJMgdGhhdCdzIHRoZSBzdGFydGluZyBwb2ludC4gTGV0J3Mgc2VlIGlmIHRoaXMgY29kZSBjaGFuZ2UgbWFrZXMgc2Vuc2UgdG8gZnV6ei4gVGhlIHByb21wdCdzIG5lZ2F0aXZlIGNyaXRlcmlhIGFyZSBwcmV0dHkgY2xlYXI6IHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiB0aGUgbW9kaWZpZWQgY29kZSBmYWxscyAqc3RyaWN0bHkqIGludG8gb25lIG9mIGEgZmV3IGNhdGVnb3JpZXMgb2YgdW5yZWFjaGFibGUgaGFyZHdhcmUuXG5cblRoZSBCcm9hZGNvbSBUaWdvbjMgKHRnMykgc3BlY2lmaWNhbGx5IHRhcmdldHMgcGh5c2ljYWwgUENJIG5ldHdvcmsgY2FyZHMgKEJDTTU3eHggc2VyaWVzKS4gVGhhdCdzIGEga2V5IGRpc3RpbmN0aW9uOyBpdCdzICpub3QqIGVtdWxhdGVkIGJ5IHN0YW5kYXJkIFFFTVUgb3IgYXZhaWxhYmxlIGluIGVudmlyb25tZW50cyBsaWtlIEdDRS4gVGh1cywgaXQncyBub3QgcHJlc2VudCBpbiBhIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBUaGlzIGlzIGdvb2QgaW5mb3JtYXRpb24uXG5cbk5vdywgdGhlIG1vZGlmaWVkIGNvZGUgaXMgaW4gYHRnM19pbml0X29uZSgpYCwgdGhlIHByb2JlIGNhbGxiYWNrLiBUaGlzIGAucHJvYmVgIGZ1bmN0aW9uIHJ1bnMgb25seSB3aGVuIHRoYXQgKnBoeXNpY2FsKiBoYXJkd2FyZSBnZXRzIHByb2JlZC4gU2luY2UgdGhpcyBwaHlzaWNhbCBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gdGhlIGZ1enppbmcgZW52aXJvbm1lbnRzLCB0aGlzIGZ1bmN0aW9uIHdvdWxkIG5vdCBydW4uIFRoYXQgbWFrZXMgdGhlIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nIHB1cnBvc2VzLiBJdCBpcyB1bnJlYWNoYWJsZSBkdWUgdG8gdGhlIHJlcXVpcmVkIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG5cblRoZXJlZm9yZTogYFdvcnRoRnV6emluZ2Agc2hvdWxkIGJlIGBmYWxzZWAuXG5cbkkgY2FuIHNwZWNpZnkgdGhlIGBFbmFibGVDb25maWdzYCBhcyBlaXRoZXIgYFtdYCBvciBgW1wiVElHT04zXCIsIFwiUENJXCJdYC4gVGhleSBhcmUgbm90IGltcG9ydGFudCBzaW5jZSBgV29ydGhGdXp6aW5nYCBpcyBgZmFsc2VgLlxuXG5BcyBmb3IgYEZvY3VzU3ltYm9sc2AsIGV2ZW4gdGhvdWdoIGB0ZzNfaW5pdF9vbmVgIHdvdWxkIGJlIHRoZSBsb2dpY2FsIGNob2ljZSwgaXQgc2hvdWxkIGJlIHNldCB0byBgW11gIHdoZW4gYFdvcnRoRnV6emluZ2AgaXMgYGZhbHNlYC4gVGhlIGZ1enplciB3aWxsIGlnbm9yZSB0aGUgY29kZSBlbnRpcmVseSBpZiBpdCB0aGlua3MgaXQgaXMgdW5yZWFjaGFibGUuXG5cbkxldCdzIGRvdWJsZS1jaGVjayB0aGUgZ3VpZGVsaW5lcy4uLiBBaCwgdGhlIGBzZXQtcmVzdWx0c2AgdG9vbCBpcyB1c2VkIG9uY2UsIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuIEdvb2QuXG5cblRvIHNvbGlkaWZ5IG15IHRoaW5raW5nLCBsZXQncyBsb29rIGF0IHRoZSBwYXRjaDogSXQgbW9kaWZpZXMgYHRnM19pbml0X29uZWAsIHRoZSBwcm9iZSBjYWxsYmFjayBmb3IgYSBCcm9hZGNvbSBUaWdvbjMgUENJIEdpZ2FiaXQgRXRoZXJuZXQgYWRhcHRlci4gVGhlIGRyaXZlciBuZWNlc3NpdGF0ZXMgc3BlY2lmaWMgcGh5c2ljYWwgaGFyZHdhcmUgKEJDTTU3eHggc2VyaWVzIFBDSSBuZXR3b3JrIGNhcmRzKSB0aGF0IGFyZSBub3QgZW11bGF0ZWQgaW4gdHlwaWNhbCBRRU1VIG9yIEdDRSB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cy4gVGh1cywgdGhlIGNvZGUgaXMgdW5yZWFjaGFibGUuXG5cbk9ubHkgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jYCB3YXMgY2hhbmdlZCBpbiBjb21taXQgYDlhZjM1YmYyMmYwZDk3ZGE5MTY3NTNjNzc3NTEyOTk5NTU0ZTRhZTBgLlxuXG5FdmVyeXRoaW5nIGNoZWNrcyBvdXQuIEknbSBjb25maWRlbnQuIFRpbWUgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NDc2LCJPdXRwdXRUb2tlbnMiOjEyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY3MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQwMTowNDo1OC4zOTI1NDE1MTVaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMjc1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgdGczX2luaXRfb25lYCBpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmNgLCB3aGljaCBpcyB0aGUgUENJIHByb2JlIGZ1bmN0aW9uIGZvciBCcm9hZGNvbSBUaWdvbjMgKEJDTTU3eHgpIEV0aGVybmV0IGFkYXB0ZXJzLiBUaGlzIGRyaXZlciB0YXJnZXRzIHZlbmRvci1zcGVjaWZpYyBwaHlzaWNhbCBQQ0kgbmV0d29yayBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIHN5emthbGxlciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYHRnM19pbml0X29uZWAgaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jYCwgd2hpY2ggaXMgdGhlIFBDSSBwcm9iZSBmdW5jdGlvbiBmb3IgQnJvYWRjb20gVGlnb24zIChCQ001N3h4KSBFdGhlcm5ldCBhZGFwdGVycy4gVGhpcyBkcml2ZXIgdGFyZ2V0cyB2ZW5kb3Itc3BlY2lmaWMgcGh5c2ljYWwgUENJIG5ldHdvcmsgaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciBHQ0UgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBzeXprYWxsZXIgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDAxOjA0OjU4LjM5MjU3ODgyNVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzI3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow49v8k[1] Phase: Running StartedAt: 2026-09-15 01:05:32 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow49v8k[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-15 01:05:32 +0000 UTC FinishedAt: 2026-09-15 01:05:37 +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,}