Name: series-workflow8q52f Phase: Failed StartedAt: 2026-08-20 17:46:01 +0000 UTC FinishedAt: 2026-08-20 17:48:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8q52f[0] Phase: Succeeded StartedAt: 2026-08-20 17:46:01 +0000 UTC FinishedAt: 2026-08-20 17:48:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8q52f[0].run-triage Phase: Succeeded StartedAt: 2026-08-20 17:46:01 +0000 UTC FinishedAt: 2026-08-20 17:48:23 +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+CgkJCTx0ZD4yMDI2LzA4LzIwIDE3OjQ3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBhZGRzIGEgZmV3IE1ESU8gcmVnaXN0ZXIgd3JpdGVzIHRvIHRoZSBoYXJkd2FyZSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZSBvZiB0aGUgTlhQIEx5bnggUENTIGRyaXZlciAocGNzLWx5bngpLiBUaGlzIGRyaXZlciBpcyB1c2VkIGJ5IHZlbmRvci1zcGVjaWZpYyBoYXJkd2FyZSAoTlhQIEVORVRDLCBEUEFBLCBBbHRlcmEgVFNFKSB3aGljaCBhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnRzLiBGdXJ0aGVybW9yZSwgdGhlIGNoYW5nZXMgYXJlIHB1cmVseSBoYXJkd2FyZSBjb25maWd1cmF0aW9uIHNlcXVlbmNlcyB3aXRob3V0IGNvbXBsZXggc29mdHdhcmUgbG9naWMsIG1ha2luZyB0aGVtIHVuc3VpdGFibGUgYW5kIHVucmVhY2hhYmxlIGZvciBnZW5lcmljIGtlcm5lbCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAxNzo0NzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDNmOGRhZjgzODg4YTNhMTg2NDAzNTZkYTg4ZTdhMjU0MDE5MWVmNWJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEF1ZyAyMCAxNzo0NzoxMSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguYyBiL2RyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jXG5pbmRleCBhOTIwODE1NjBlNjQxLi4zMzY1NTA3OWZlNTFkIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvcGNzL3Bjcy1seW54LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jXG5AQCAtMjAsNiAmIzQzOzIwLDkgQEBcbiAjZGVmaW5lIElGX01PREVfU1BFRURfTVNLXHRcdEdFTk1BU0soMywgMilcbiAjZGVmaW5lIElGX01PREVfSEFMRl9EVVBMRVhcdFx0QklUKDQpXG4gXG4mIzQzOyNkZWZpbmUgRU5FVENfUENTX1JFUExfTElOS19USU1FUl8xX0RFRlx0MHgwMDAzXG4mIzQzOyNkZWZpbmUgRU5FVENfUENTX1JFUExfTElOS19USU1FUl8yX0RFRlx0MHgwNmEwXG4mIzQzO1xuIHN0cnVjdCBseW54X3BjcyB7XG4gXHRzdHJ1Y3QgcGh5bGlua19wY3MgcGNzO1xuIFx0c3RydWN0IG1kaW9fZGV2aWNlICptZGlvO1xuQEAgLTE1NCw2ICYjNDM7MTU3LDcgQEAgc3RhdGljIGludCBseW54X3Bjc19jb25maWdfdXN4Z21paShzdHJ1Y3QgbWRpb19kZXZpY2UgKnBjcyxcbiBcdFx0XHRcdCAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgKmFkdmVydGlzaW5nLFxuIFx0XHRcdFx0ICAgdW5zaWduZWQgaW50IG5lZ19tb2RlKVxuIHtcbiYjNDM7XHRpbnQgcmV0O1xuIFx0c3RydWN0IG1paV9idXMgKmJ1cyA9IHBjcy1cdTAwM2VidXM7XG4gXHRpbnQgYWRkciA9IHBjcy1cdTAwM2VhZGRyO1xuIFxuQEAgLTE2NCwxMCAmIzQzOzE2OCwzOCBAQCBzdGF0aWMgaW50IGx5bnhfcGNzX2NvbmZpZ191c3hnbWlpKHN0cnVjdCBtZGlvX2RldmljZSAqcGNzLFxuIFx0fVxuIFxuIFx0LyogQ29uZmlndXJlIGRldmljZSBhYmlsaXR5IGZvciB0aGUgVVNYR01JSSBSZXBsaWNhdG9yICovXG4tXHRyZXR1cm4gbWRpb2J1c19jNDVfd3JpdGUoYnVzLCBhZGRyLCBNRElPX01NRF9WRU5EMiwgTUlJX0FEVkVSVElTRSxcbi1cdFx0XHRcdCBNRElPX1VTWEdNSUlfMTBHIHwgTURJT19VU1hHTUlJX0xJTksgfFxuLVx0XHRcdFx0IE1ESU9fVVNYR01JSV9GVUxMX0RVUExFWCB8XG4tXHRcdFx0XHQgQURWRVJUSVNFX1NHTUlJIHwgQURWRVJUSVNFX0xQQUNLKTtcbiYjNDM7XHRyZXQgPSBtZGlvYnVzX2M0NV93cml0ZShidXMsIGFkZHIsIE1ESU9fTU1EX1ZFTkQyLCBNSUlfQURWRVJUSVNFLFxuJiM0MztcdFx0XHRcdE1ESU9fVVNYR01JSV8xMEcgfCBNRElPX1VTWEdNSUlfTElOSyB8XG4mIzQzO1x0XHRcdFx0TURJT19VU1hHTUlJX0ZVTExfRFVQTEVYIHxcbiYjNDM7XHRcdFx0XHRBRFZFUlRJU0VfU0dNSUkgfCBBRFZFUlRJU0VfTFBBQ0spO1xuJiM0MztcdGlmIChyZXQgXHUwMDNjIDApIHtcbiYjNDM7XHRcdGRldl9lcnIoXHUwMDI2cGNzLVx1MDAzZWRldiwgXCYjMzQ7Y291bGQgbm90IHNldCBVU1hHTUlJIHJlcGxpY2F0b3IgY29uZmlnXFxuXCYjMzQ7KTtcbiYjNDM7XHRcdHJldHVybiByZXQ7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHQvKiBDb25maWd1cmUgYXV0b25lZ290aWF0aW9uICovXG4mIzQzO1x0cmV0ID0gbWRpb2J1c19jNDVfd3JpdGUoYnVzLCBhZGRyLCBNRElPX01NRF9WRU5EMiwgTUlJX0JNQ1IsXG4mIzQzO1x0XHRcdFx0Qk1DUl9SRVNFVCB8IEJNQ1JfQU5FTkFCTEUgfCBCTUNSX0FOUkVTVEFSVCk7XG4mIzQzO1x0aWYgKHJldCBcdTAwM2MgMCkge1xuJiM0MztcdFx0ZGV2X2VycihcdTAwMjZwY3MtXHUwMDNlZGV2LCBcJiMzNDtjb3VsZCBub3Qgc2V0IFVTWEdNSUkgcmVwbGljYXRvciBjb250cm9sIGNvbmZpZ1xcblwmIzM0Oyk7XG4mIzQzO1x0XHRyZXR1cm4gcmV0O1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0cmV0ID0gbWRpb2J1c19jNDVfd3JpdGUoYnVzLCBhZGRyLCBNRElPX01NRF9WRU5EMiwgTElOS19USU1FUl9MTyxcbiYjNDM7XHRcdFx0XHRFTkVUQ19QQ1NfUkVQTF9MSU5LX1RJTUVSXzFfREVGKTtcbiYjNDM7XHRpZiAocmV0IFx1MDAzYyAwKSB7XG4mIzQzO1x0XHRkZXZfZXJyKFx1MDAyNnBjcy1cdTAwM2VkZXYsIFwmIzM0O2NvdWxkIG5vdCBzZXQgVVNYR01JSSBMaW5rIFRpbWVyIDFcXG5cJiMzNDspO1xuJiM0MztcdFx0cmV0dXJuIHJldDtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHJldCA9IG1kaW9idXNfYzQ1X3dyaXRlKGJ1cywgYWRkciwgTURJT19NTURfVkVORDIsIExJTktfVElNRVJfSEksXG4mIzQzO1x0XHRcdFx0RU5FVENfUENTX1JFUExfTElOS19USU1FUl8yX0RFRik7XG4mIzQzO1x0aWYgKHJldCBcdTAwM2MgMCkge1xuJiM0MztcdFx0ZGV2X2VycihcdTAwMjZwY3MtXHUwMDNlZGV2LCBcJiMzNDtjb3VsZCBub3Qgc2V0IFVTWEdNSUkgTGluayBUaW1lciAyXFxuXCYjMzQ7KTtcbiYjNDM7XHRcdHJldHVybiByZXQ7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRyZXR1cm4gcmV0O1xuIH1cbiBcbiBzdGF0aWMgaW50IGx5bnhfcGNzX2NvbmZpZyhzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcywgdW5zaWduZWQgaW50IG5lZ19tb2RlLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIwIDE3OjQ3PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IGFkZHMgYSBmZXcgTURJTyByZWdpc3RlciB3cml0ZXMgdG8gdGhlIGhhcmR3YXJlIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlIG9mIHRoZSBOWFAgTHlueCBQQ1MgZHJpdmVyIChwY3MtbHlueCkuIFRoaXMgZHJpdmVyIGlzIHVzZWQgYnkgdmVuZG9yLXNwZWNpZmljIGhhcmR3YXJlIChOWFAgRU5FVEMsIERQQUEsIEFsdGVyYSBUU0UpIHdoaWNoIGFyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudHMuIEZ1cnRoZXJtb3JlLCB0aGUgY2hhbmdlcyBhcmUgcHVyZWx5IGhhcmR3YXJlIGNvbmZpZ3VyYXRpb24gc2VxdWVuY2VzIHdpdGhvdXQgY29tcGxleCBzb2Z0d2FyZSBsb2dpYywgbWFraW5nIHRoZW0gdW5zdWl0YWJsZSBhbmQgdW5yZWFjaGFibGUgZm9yIGdlbmVyaWMga2VybmVsIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgM2Y4ZGFmODM4ODhhM2ExODY0MDM1NmRhODhlN2EyNTQwMTkxZWY1YgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgQXVnIDIwIDE3OjQ3OjExIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGNzL3Bjcy1seW54LmMgYi9kcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguYwppbmRleCBhOTIwODE1NjBlNjQxLi4zMzY1NTA3OWZlNTFkIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguYwpAQCAtMjAsNiAmIzQzOzIwLDkgQEAKICNkZWZpbmUgSUZfTU9ERV9TUEVFRF9NU0sJCUdFTk1BU0soMywgMikKICNkZWZpbmUgSUZfTU9ERV9IQUxGX0RVUExFWAkJQklUKDQpCiAKJiM0MzsjZGVmaW5lIEVORVRDX1BDU19SRVBMX0xJTktfVElNRVJfMV9ERUYJMHgwMDAzCiYjNDM7I2RlZmluZSBFTkVUQ19QQ1NfUkVQTF9MSU5LX1RJTUVSXzJfREVGCTB4MDZhMAomIzQzOwogc3RydWN0IGx5bnhfcGNzIHsKIAlzdHJ1Y3QgcGh5bGlua19wY3MgcGNzOwogCXN0cnVjdCBtZGlvX2RldmljZSAqbWRpbzsKQEAgLTE1NCw2ICYjNDM7MTU3LDcgQEAgc3RhdGljIGludCBseW54X3Bjc19jb25maWdfdXN4Z21paShzdHJ1Y3QgbWRpb19kZXZpY2UgKnBjcywKIAkJCQkgICBjb25zdCB1bnNpZ25lZCBsb25nICphZHZlcnRpc2luZywKIAkJCQkgICB1bnNpZ25lZCBpbnQgbmVnX21vZGUpCiB7CiYjNDM7CWludCByZXQ7CiAJc3RydWN0IG1paV9idXMgKmJ1cyA9IHBjcy0mZ3Q7YnVzOwogCWludCBhZGRyID0gcGNzLSZndDthZGRyOwogCkBAIC0xNjQsMTAgJiM0MzsxNjgsMzggQEAgc3RhdGljIGludCBseW54X3Bjc19jb25maWdfdXN4Z21paShzdHJ1Y3QgbWRpb19kZXZpY2UgKnBjcywKIAl9CiAKIAkvKiBDb25maWd1cmUgZGV2aWNlIGFiaWxpdHkgZm9yIHRoZSBVU1hHTUlJIFJlcGxpY2F0b3IgKi8KLQlyZXR1cm4gbWRpb2J1c19jNDVfd3JpdGUoYnVzLCBhZGRyLCBNRElPX01NRF9WRU5EMiwgTUlJX0FEVkVSVElTRSwKLQkJCQkgTURJT19VU1hHTUlJXzEwRyB8IE1ESU9fVVNYR01JSV9MSU5LIHwKLQkJCQkgTURJT19VU1hHTUlJX0ZVTExfRFVQTEVYIHwKLQkJCQkgQURWRVJUSVNFX1NHTUlJIHwgQURWRVJUSVNFX0xQQUNLKTsKJiM0MzsJcmV0ID0gbWRpb2J1c19jNDVfd3JpdGUoYnVzLCBhZGRyLCBNRElPX01NRF9WRU5EMiwgTUlJX0FEVkVSVElTRSwKJiM0MzsJCQkJTURJT19VU1hHTUlJXzEwRyB8IE1ESU9fVVNYR01JSV9MSU5LIHwKJiM0MzsJCQkJTURJT19VU1hHTUlJX0ZVTExfRFVQTEVYIHwKJiM0MzsJCQkJQURWRVJUSVNFX1NHTUlJIHwgQURWRVJUSVNFX0xQQUNLKTsKJiM0MzsJaWYgKHJldCAmbHQ7IDApIHsKJiM0MzsJCWRldl9lcnIoJmFtcDtwY3MtJmd0O2RldiwgJiMzNDtjb3VsZCBub3Qgc2V0IFVTWEdNSUkgcmVwbGljYXRvciBjb25maWdcbiYjMzQ7KTsKJiM0MzsJCXJldHVybiByZXQ7CiYjNDM7CX0KJiM0MzsKJiM0MzsJLyogQ29uZmlndXJlIGF1dG9uZWdvdGlhdGlvbiAqLwomIzQzOwlyZXQgPSBtZGlvYnVzX2M0NV93cml0ZShidXMsIGFkZHIsIE1ESU9fTU1EX1ZFTkQyLCBNSUlfQk1DUiwKJiM0MzsJCQkJQk1DUl9SRVNFVCB8IEJNQ1JfQU5FTkFCTEUgfCBCTUNSX0FOUkVTVEFSVCk7CiYjNDM7CWlmIChyZXQgJmx0OyAwKSB7CiYjNDM7CQlkZXZfZXJyKCZhbXA7cGNzLSZndDtkZXYsICYjMzQ7Y291bGQgbm90IHNldCBVU1hHTUlJIHJlcGxpY2F0b3IgY29udHJvbCBjb25maWdcbiYjMzQ7KTsKJiM0MzsJCXJldHVybiByZXQ7CiYjNDM7CX0KJiM0MzsKJiM0MzsJcmV0ID0gbWRpb2J1c19jNDVfd3JpdGUoYnVzLCBhZGRyLCBNRElPX01NRF9WRU5EMiwgTElOS19USU1FUl9MTywKJiM0MzsJCQkJRU5FVENfUENTX1JFUExfTElOS19USU1FUl8xX0RFRik7CiYjNDM7CWlmIChyZXQgJmx0OyAwKSB7CiYjNDM7CQlkZXZfZXJyKCZhbXA7cGNzLSZndDtkZXYsICYjMzQ7Y291bGQgbm90IHNldCBVU1hHTUlJIExpbmsgVGltZXIgMVxuJiMzNDspOwomIzQzOwkJcmV0dXJuIHJldDsKJiM0MzsJfQomIzQzOwomIzQzOwlyZXQgPSBtZGlvYnVzX2M0NV93cml0ZShidXMsIGFkZHIsIE1ESU9fTU1EX1ZFTkQyLCBMSU5LX1RJTUVSX0hJLAomIzQzOwkJCQlFTkVUQ19QQ1NfUkVQTF9MSU5LX1RJTUVSXzJfREVGKTsKJiM0MzsJaWYgKHJldCAmbHQ7IDApIHsKJiM0MzsJCWRldl9lcnIoJmFtcDtwY3MtJmd0O2RldiwgJiMzNDtjb3VsZCBub3Qgc2V0IFVTWEdNSUkgTGluayBUaW1lciAyXG4mIzM0Oyk7CiYjNDM7CQlyZXR1cm4gcmV0OwomIzQzOwl9CiYjNDM7CiYjNDM7CXJldHVybiByZXQ7CiB9CiAKIHN0YXRpYyBpbnQgbHlueF9wY3NfY29uZmlnKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzLCB1bnNpZ25lZCBpbnQgbmVnX21vZGUsCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIwIDE3OjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3NDgKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiA4OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOgoKKipBbmFseXppbmcgYSBQQ1MtTHlueCBEcml2ZXIgUGF0Y2gqKgoKQWxyaWdodCwgc28gSSYjMzk7bSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCYjMzk7cyBoaXQgdGhlIG5ldHdvcmsgZHJpdmVycywgc3BlY2lmaWNhbGx5IG1vZGlmeWluZyB0aGUgYGRyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jYCBmaWxlLiBUaGUgY29yZSBvZiB0aGUgY2hhbmdlIHNlZW1zIHRvIGJlIGluIHRoZSBgbHlueF9wY3NfY29uZmlnX3VzeGdtaWlgIGZ1bmN0aW9uLiBGcm9tIGEgcXVpY2sgZ2xhbmNlLCBpdCBsb29rcyBsaWtlIGl0JiMzOTtzIGFkZGluZyBzb21lIE1ESU8gYnVzIGNvbmZpZ3VyYXRpb24gd3JpdGVzLCBsaWtlbHkgZm9yIGEgVVNYR01JSSByZXBsaWNhdG9yLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsICp3YWl0LCBpcyB0aGlzIGhhcmR3YXJlLXNwZWNpZmljPyogVGhlICYjMzQ7cGNzLWx5bngmIzM0OyBuYW1lIHN0cm9uZ2x5IHN1Z2dlc3RzIGl0JiMzOTtzIHRpZWQgdG8gYSBwYXJ0aWN1bGFyIHBpZWNlIG9mIGhhcmR3YXJlOiBhIEx5bnggUENTIGRyaXZlci4gSSBzaG91bGQgcmVhbGx5IGNvbmZpcm0gdGhhdCwgdGhvdWdoOyBsZXQmIzM5O3MgZGlnIGEgYml0IGRlZXBlciBhbmQgc2VlIHdoYXQgJiMzNDtseW54JiMzNDsgYWN0dWFsbHkgcmVmZXJzIHRvLiBCZXR0ZXIgc2FmZSB0aGFuIHNvcnJ5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIwIDE3OjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2x5bnhfcGNzX2NvbmZpZ191c3hnbWlpJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGNzL3Bjcy1seW54LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGNzL3Bjcy1seW54LmM9MTE3PXN0YXRpYyBpbnQgbHlueF9wY3NfY29uZmlnX2dpZ2Eoc3RydWN0IG1kaW9fZGV2aWNlICpwY3MsXG4tLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1seW54LmMtMTU0LVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1seW54LmM6MTU1OnN0YXRpYyBpbnQgbHlueF9wY3NfY29uZmlnX3VzeGdtaWkoc3RydWN0IG1kaW9fZGV2aWNlICpwY3MsXG5kcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguYy0xNTYtXHRcdFx0XHQgICBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlLFxuLS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jPTIwNT1zdGF0aWMgaW50IGx5bnhfcGNzX2NvbmZpZyhzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcywgdW5zaWduZWQgaW50IG5lZ19tb2RlLFxuLS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jLTIxOS1cdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFXzEwR19RWEdNSUk6XG5kcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguYzoyMjA6XHRcdHJldHVybiBseW54X3Bjc19jb25maWdfdXN4Z21paShseW54LVx1MDAzZW1kaW8sIGlmbW9kZSwgYWR2ZXJ0aXNpbmcsXG5kcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguYy0yMjEtXHRcdFx0XHRcdCAgICAgICBuZWdfbW9kZSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjAgMTc6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzM0NAoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDYzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgdGhlIGBseW54X3Bjc19jb25maWdgIENhbGwqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW4uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBmaWd1cmUgb3V0IHdoZXJlIHRoZSBgbHlueF9wY3NfY29uZmlnYCBmdW5jdGlvbiBpcyBiZWluZyBjYWxsZWQsIGJlY2F1c2UgaXQmIzM5O3MgYXNzb2NpYXRlZCB3aXRoIGBwaHlsaW5rX3Bjc2AsIHNvIEkga25vdyB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGEgcGh5c2ljYWwgbGF5ZXIgY29udHJvbCBzeXN0ZW0uIE5leHQsIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIHRoaXMgc3BlY2lmaWMgZHJpdmVyIGlzIGV2ZW4gYWNjZXNzaWJsZSBpbiBhIFFFTVUgZW52aXJvbm1lbnQuIFRoYXQmIzM5O3MgYSBjcml0aWNhbCBwaWVjZSBvZiBpbmZvcm1hdGlvbi4gVG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBkcml2ZXImIzM5O3MgY29uZmlndXJhdGlvbiBhbmQgYnVpbGQgcHJvY2VzcywgSSYjMzk7bGwgc3RhcnQgYnkgY2hlY2tpbmcgdGhlIEtjb25maWcgYW5kIE1ha2VmaWxlIGluIHRoZSBgZHJpdmVycy9uZXQvcGNzL2AgZGlyZWN0b3J5LiBUaGF0IHNob3VsZCBnaXZlIG1lIHRoZSBsb3dkb3duIG9uIHRoZSBidWlsZCBvcHRpb25zIGFuZCBkZXBlbmRlbmNpZXMgZm9yIHRoaXMgcGFydGljdWxhciBQQ1MgY29tcG9uZW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIwIDE3OjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Bjcy1seW54JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGNzLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9wY3MvTWFrZWZpbGU9Nz1vYmotJChDT05GSUdfUENTX1hQQ1MpXHRcdCYjNDM7PSBwY3NfeHBjcy5vXG5kcml2ZXJzL25ldC9wY3MvTWFrZWZpbGU6ODpvYmotJChDT05GSUdfUENTX0xZTlgpXHRcdCYjNDM7PSBwY3MtbHlueC5vXG5kcml2ZXJzL25ldC9wY3MvTWFrZWZpbGUtOS1vYmotJChDT05GSUdfUENTX01US19MWU5YSSlcdCYjNDM7PSBwY3MtbXRrLWx5bnhpLm9cbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguYy03LSNpbmNsdWRlIFx1MDAzY2xpbnV4L3BoeWxpbmsuaFx1MDAzZVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1seW54LmM6ODojaW5jbHVkZSBcdTAwM2NsaW51eC9wY3MtbHlueC5oXHUwMDNlXG5kcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguYy05LSNpbmNsdWRlIFx1MDAzY2xpbnV4L3Byb3BlcnR5LmhcdTAwM2VcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAxNzo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNzc4CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipEaXZpbmcgaW50byB0aGUgTmV0d29yayBEcml2ZXIgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGlzIG5ldHdvcmsgZHJpdmVyLiBUaGUgc3RhcnRpbmcgcG9pbnQsIGFzIGFsd2F5cyB3aXRoIHRoZSBrZXJuZWwsIGlzIHRoZSBgS2NvbmZpZ2AgZmlsZS4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gY2hlY2sgYGRyaXZlcnMvbmV0L3Bjcy9LY29uZmlnYC4gVGhpcyBmaWxlIHNob3VsZCBjb250YWluIGFsbCB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBzeW1ib2xzIOKAkyB0aGUgdGhpbmdzIHRoYXQgZGVmaW5lIHdoYXQgZmVhdHVyZXMgYXJlIGVuYWJsZWQsIHdoYXQgaGFyZHdhcmUgaXMgc3VwcG9ydGVkLCBhbmQgc28gb24uIE15IGluaXRpYWwgZ29hbCBpcyB0byBnZXQgYSBiaXJkJiMzOTtzLWV5ZSB2aWV3IG9mIGFsbCB0aGUgY29uZmlndXJhYmxlIGVsZW1lbnRzLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciB0aGluZ3MgbGlrZSB3aGV0aGVyIHNwZWNpZmljIGhhcmR3YXJlIGNoaXBzZXRzIGFyZSBzdXBwb3J0ZWQsIHZhcmlvdXMgcHJvdG9jb2wgb3B0aW9ucyAoZS5nLiwgVkxBTiwgUW9TKSwgYW5kIGFueSByZWxldmFudCBkZWJ1Z2dpbmcgb3IgcGVyZm9ybWFuY2UgdHVuaW5nIGtub2JzLiBUaGlzIEtjb25maWcgZmlsZSBpcyB0aGUgY3JpdGljYWwgZW50cnkgcG9pbnQgdG8gdW5kZXJzdGFuZGluZyAqaG93KiB0aGlzIGRyaXZlciB3b3JrcyBpbiB0ZXJtcyBvZiBob3cgaXQmIzM5O3MgYnVpbHQgYW5kIGNvbmZpZ3VyZWQuIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgYnkgcXVpY2tseSBzY2FubmluZyB0aGUgc3RydWN0dXJlLCBsb29raW5nIGZvciBsb2dpY2FsIGdyb3VwaW5ncyBhbmQgZGVwZW5kZW5jaWVzLiBNeSBmb2N1cyB3aWxsIGJlIG9uIHRoZSBhcmNoaXRlY3R1cmUsIGFueSBrZXkgY29uZmlndXJhdGlvbiBvcHRpb25zLCBhbmQgYW55dGhpbmcgdGhhdCBqdW1wcyBvdXQgYXMgdW51c3VhbCBvciBpbnRlcmVzdGluZy4gVW5kZXJzdGFuZGluZyB0aGlzIGZpbGUgaXMgZnVuZGFtZW50YWwuIEl0JiMzOTtzIHRoZSBmb3VuZGF0aW9uIHVwb24gd2hpY2ggdGhlIHJlc3Qgb2YgdGhlIGRyaXZlciYjMzk7cyBidWlsZCBwcm9jZXNzIGlzIGJ1aWx0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIwIDE3OjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBQQ1NfTFlOWCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3Bjcy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3Bjcy9LY29uZmlnPTg9Y29uZmlnIFBDU19YUENTXG4tLVxuZHJpdmVycy9uZXQvcGNzL0tjb25maWctMTQtXG5kcml2ZXJzL25ldC9wY3MvS2NvbmZpZzoxNTpjb25maWcgUENTX0xZTlhcbmRyaXZlcnMvbmV0L3Bjcy9LY29uZmlnLTE2LVx0dHJpc3RhdGVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAxNzo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MTU3CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgaW4gdGhlIGZpcnN0IHBlcnNvbiwgYXMgYW4gZXhwZXJ0IGluIHRoZSBmaWVsZCB3b3VsZCB0aGluayBpdDoKCioqRGVjb2RpbmcgdGhlIFRyaXN0YXRlJiMzOTtzIFNlbGVjdG9yKioKCkFscmlnaHQsIHRoaXMgaXMgYSB0cmlzdGF0ZSwgYW5kIHRoZSBjcml0aWNhbCB0aGluZyBoZXJlIGlzIHRoYXQgaXQmIzM5O3MgKnVucHJvbXB0ZWQqLiBUaGF0IG1lYW5zIGl0cyBzdGF0ZSBpc24mIzM5O3QgZGlyZWN0bHkgY29udHJvbGxlZCBieSBhbnkgZXhwbGljaXQgdXNlciBvciBjb25maWd1cmF0aW9uIGlucHV0LiBJdCYjMzk7cyBiZWluZyBkcml2ZW4gYnkgc29tZXRoaW5nICpleHRlcm5hbCouIFNvLCBteSBpbW1lZGlhdGUgdGhvdWdodCBpczogSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGRyaXZlcnMgb3IgbW9kdWxlcyB0aGF0IGFyZSBhY3RpdmVseSAqc2VsZWN0aW5nKiB0aGlzIHBhcnRpY3VsYXIgdHJpc3RhdGUuIEluIHRoaXMgY2FzZSwgaXQgaXMgbmFtZWQgYFBDU19MWU5YYC4gSSBuZWVkIHRvIHRyYWNlIGJhY2sgZnJvbSB0aGF0IGlkZW50aWZpZXIgYW5kIHdvcmsgbXkgd2F5IHVwc3RyZWFtLiBVbmRlcnN0YW5kaW5nIHdoYXQmIzM5O3MgcHVsbGluZyB0aGUgdHJpZ2dlciBvbiBgUENTX0xZTlhgIGlzIGdvaW5nIHRvIGJlIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBzdGF0ZSBvZiB0aGlzIHN5c3RlbSwgYW5kIGhvdyB0aGF0IHNlbGVjdGlvbiBpcyBhZmZlY3RlZC4gVGhhdCYjMzk7cyB3aGVyZSBJIG5lZWQgdG8gZm9jdXMgbXkgZWZmb3J0cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjAgMTc6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2VsZWN0IFBDU19MWU5YJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvS2NvbmZpZz0zMj1jb25maWcgTkVUX0RTQV9NU0NDX0ZFTElYXG4tLVxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9LY29uZmlnLTQ0LVx0c2VsZWN0IEZTTF9FTkVUQ19NRElPXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L0tjb25maWc6NDU6XHRzZWxlY3QgUENTX0xZTlhcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvS2NvbmZpZy00Ni1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L0tjb25maWc9NTA9Y29uZmlnIE5FVF9EU0FfTVNDQ19TRVZJTExFXG4tLVxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9LY29uZmlnLTYwLVx0c2VsZWN0IE5FVF9EU0FfVEFHX09DRUxPVFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9LY29uZmlnOjYxOlx0c2VsZWN0IFBDU19MWU5YXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L0tjb25maWctNjItXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL0tjb25maWc9Mj1jb25maWcgQUxURVJBX1RTRVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsdGVyYS9LY29uZmlnLTctXHRzZWxlY3QgUEhZTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL0tjb25maWc6ODpcdHNlbGVjdCBQQ1NfTFlOWFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL0tjb25maWctOS1cdHNlbGVjdCBNRElPX1JFR01BUFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhL0tjb25maWc9Mj1tZW51Y29uZmlnIEZTTF9EUEFBX0VUSFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhL0tjb25maWctNS1cdHNlbGVjdCBQSFlMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYS9LY29uZmlnOjY6XHRzZWxlY3QgUENTX0xZTlhcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhL0tjb25maWctNy1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvS2NvbmZpZz0yPWNvbmZpZyBGU0xfRFBBQTJfRVRIXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL0tjb25maWctNS1cdHNlbGVjdCBQSFlMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvS2NvbmZpZzo2Olx0c2VsZWN0IFBDU19MWU5YXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvS2NvbmZpZy03LVx0c2VsZWN0IEZTTF9YR01BQ19NRElPXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL0tjb25maWc9MzM9Y29uZmlnIEZTTF9EUEFBMl9TV0lUQ0hcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvS2NvbmZpZy0zOC1cdHNlbGVjdCBQSFlMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvS2NvbmZpZzozOTpcdHNlbGVjdCBQQ1NfTFlOWFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL0tjb25maWctNDAtXHRzZWxlY3QgRlNMX1hHTUFDX01ESU9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvS2NvbmZpZz0zMD1jb25maWcgRlNMX0VORVRDXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL0tjb25maWctMzgtXHRzZWxlY3QgUEhZTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL0tjb25maWc6Mzk6XHRzZWxlY3QgUENTX0xZTlhcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9LY29uZmlnLTQwLVx0c2VsZWN0IERJTUxJQlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL0tjb25maWc9Mj1jb25maWcgRlNMX0ZNQU5cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9LY29uZmlnLTYtXHRzZWxlY3QgUEhZTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vS2NvbmZpZzo3Olx0c2VsZWN0IFBDU19MWU5YXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9LY29uZmlnLTgtXHRzZWxlY3QgQ1JDMzJcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTIwMz1jb25maWcgRFdNQUNfU09DRlBHQVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjA5LVx0c2VsZWN0IFJFR01BUF9NTUlPXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjIxMDpcdHNlbGVjdCBQQ1NfTFlOWFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yMTEtXHRoZWxwXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIwIDE3OjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUzODkKCQkJCQkJCW91dHB1dDogMjYKCQkJCQkJCXRob3VnaHRzOiA0OTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIEhhcmR3YXJlIERyaXZlciBSZWFjaGFiaWxpdHkgaW4gUUVNVSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCB0cnlpbmcgdG8gZmlndXJlIG91dCB3aGljaCBoYXJkd2FyZSBkcml2ZXJzIGFyZSBldmVuIHJlbGV2YW50IGZvciBteSB0ZXN0aW5nIGluIFFFTVUuIEkgc2VlIGEgYnVuY2ggbGlzdGVkOiBgTkVUX0RTQV9NU0NDX0ZFTElYYCwgYE5FVF9EU0FfTVNDQ19TRVZJTExFYCwgYEFMVEVSQV9UU0VgLCBgRlNMX0RQQUFfRVRIYCwgYEZTTF9EUEFBMl9FVEhgLCBgRlNMX0RQQUEyX1NXSVRDSGAsIGBGU0xfRU5FVENgLCBgRlNMX0ZNQU5gLCBhbmQgYERXTUFDX1NPQ0ZQR0FgLiBUaGUgcXVlc3Rpb24gaXMsIHdoaWNoIG9mIHRoZXNlIGFyZSBhY3R1YWxseSAqcmVhY2hhYmxlKiB3aGVuIEkmIzM5O20gcnVubmluZyBRRU1VPwoKYERXTUFDX1NPQ0ZQR0FgIGxvb2tzIGxpa2UgYSBwbGF0Zm9ybSBkcml2ZXIsIHNvIG1heWJlIHRoZXJlJiMzOTtzIGEgc3BlY2lmaWMgbWFjaGluZSB0eXBlIHRoYXQgY291bGQgZW5hYmxlIGl0LCBidXQgc3l6a2FsbGVyIHVzdWFsbHkgdXNlcyBgcTM1YCBvciBgdmlydGAgKGZvciBBUk02NCksIHNvIGl0JiMzOTtzIHByb2JhYmx5IG5vdCBhIGNvbW1vbiBjb25maWd1cmF0aW9uLiBgRlNMX0VORVRDYCBpcyBhIFBDSSBkcml2ZXIsIGFuZCBJIGhpZ2hseSBkb3VidCBRRU1VIGVtdWxhdGVzIEZyZWVzY2FsZSBFTkVUQywgdGhvdWdoIEkgc2hvdWxkIGRvdWJsZS1jaGVja+KApiBObywgUUVNVSBpcyB1c3VhbGx5IHZlcnkgc3BvdHR5IHdpdGggZW11bGF0aW5nIEVORVRDLiBBbmQgZm9yIHRoZSBvdGhlcnMsIGxpa2UgYEFMVEVSQV9UU0VgLCBJJiMzOTttIGd1ZXNzaW5nICYjMzQ7bm8mIzM0OyB0b28uIFNvLCBgRFdNQUNfU09DRlBHQWAgYW5kIGBORVRfRFNBX01TQ0NfRkVMSVhgIHdoaWNoIGlzIERTQSBzd2l0Y2gsIGVpdGhlciBwbGF0Zm9ybSBvciBQQ0ksIGlzIG91dC4KClRoZSByZWFsIHF1ZXN0aW9uIGlzIGFib3V0IGBwY3MtbHlueC5jYC4gQ2FuIGFueSBvZiB0aG9zZSB2aXJ0dWFsaXplZCBoYXJkd2FyZSBpbnN0YW5jZXMgKnJlYWNoKiBgcGNzLWx5bnguY2A/IEFoLCByaWdodCwgYHBoeWxpbmtfcGNzYCBpcyBhIGdlbmVyaWMgYWJzdHJhY3Rpb24uIENhbiBJIGluc3RhbnRpYXRlIGl0IHdpdGggYSBkdW1teSBkZXZpY2U/IE5vcGUsIGl0JiMzOTtzIGFjdHVhbGx5IGluc3RhbnRpYXRlZCBieSBzcGVjaWZpYyBNQUMgZHJpdmVycy4KClNvLCBpZiBub25lIG9mIHRob3NlIE1BQyBkcml2ZXJzIGFyZSBldmVuIGVtdWxhdGVkLCB0aGVuIHRoYXQgbWVhbnMgYGx5bnhfcGNzX2NvbmZpZ191c3hnbWlpYCBpcyB1bnJlYWNoYWJsZS4gQWxyaWdodCwgSSBuZWVkIHRvIGNoZWNrIGlmIHRoZXJlIGFyZSBhbnkgKm90aGVyKiB1c2VycyBvZiBgUENTX0xZTlhgIGJlY2F1c2UgaXQgZG9lc24mIzM5O3QgbG9vayBsaWtlbHkgdGhhdCB0aGUgb25lcyBsaXN0ZWQgaGVyZSB3aWxsIHJlYWNoIGl0LiBMZXQmIzM5O3Mgc2VlLi4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIwIDE3OjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2x5bnhfcGNzX2NyZWF0ZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvc2ZwLXBoeWxpbmsucnN0PTc0PXRoaXMgZG9jdW1lbnRhdGlvbi5cbi0tXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvc2ZwLXBoeWxpbmsucnN0LTMxMS1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9zZnAtcGh5bGluay5yc3Q6MzEyOiAgICAgICAgcHJpdi1cdTAwM2VwY3MgPSBseW54X3Bjc19jcmVhdGVfbWRpb2RldihidXMsIDApO1xuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3NmcC1waHlsaW5rLnJzdC0zMTMtXG4tLVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3NmcC1waHlsaW5rLnJzdC0zMTctXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvc2ZwLXBoeWxpbmsucnN0OjMxODogICAgICAgIHByaXYtXHUwMDNlcGNzID0gbHlueF9wY3NfY3JlYXRlX2Z3bm9kZShvZl9md25vZGVfaGFuZGxlKG5vZGUpKTtcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9zZnAtcGh5bGluay5yc3QtMzE5LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXhfdnNjOTk1OS5jPTk1Nz1zdGF0aWMgaW50IHZzYzk5NTlfbWRpb19idXNfYWxsb2Moc3RydWN0IG9jZWxvdCAqb2NlbG90KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXhfdnNjOTk1OS5jLTEwMzItXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4X3ZzYzk5NTkuYzoxMDMzOlx0XHRwaHlsaW5rX3BjcyA9IGx5bnhfcGNzX2NyZWF0ZV9tZGlvZGV2KGZlbGl4LVx1MDAzZWltZGlvLCBwb3J0KTtcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXhfdnNjOTk1OS5jLTEwMzQtXHRcdGlmIChJU19FUlIocGh5bGlua19wY3MpKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3Qvc2V2aWxsZV92c2M5OTUzLmM9ODc4PXN0YXRpYyBpbnQgdnNjOTk1M19tZGlvX2J1c19hbGxvYyhzdHJ1Y3Qgb2NlbG90ICpvY2Vsb3QpXG4tLVxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9zZXZpbGxlX3ZzYzk5NTMuYy05MjItXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L3NldmlsbGVfdnNjOTk1My5jOjkyMzpcdFx0cGh5bGlua19wY3MgPSBseW54X3Bjc19jcmVhdGVfbWRpb2RldihmZWxpeC1cdTAwM2VpbWRpbywgYWRkcik7XG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L3NldmlsbGVfdnNjOTk1My5jLTkyNC1cdFx0aWYgKElTX0VSUihwaHlsaW5rX3BjcykpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL2FsdGVyYV90c2VfbWFpbi5jPTExMjg9c3RhdGljIGludCBhbHRlcmFfdHNlX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL2FsdGVyYV90c2VfbWFpbi5jLTEzOTQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvYWx0ZXJhX3RzZV9tYWluLmM6MTM5NTpcdHByaXYtXHUwMDNlcGNzID0gbHlueF9wY3NfY3JlYXRlX21kaW9kZXYocGNzX2J1cywgMCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvYWx0ZXJhX3RzZV9tYWluLmMtMTM5Ni1cdGlmIChJU19FUlIocHJpdi1cdTAwM2VwY3MpKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLW1hYy5jPTQ0Nz1zdGF0aWMgaW50IGRwYWEyX3Bjc19jcmVhdGUoc3RydWN0IGRwYWEyX21hYyAqbWFjLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGFhMi1tYWMuYy00NjAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItbWFjLmM6NDYxOlx0cGNzID0gbHlueF9wY3NfY3JlYXRlX2Z3bm9kZShub2RlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGFhMi1tYWMuYy00NjItXHRmd25vZGVfaGFuZGxlX3B1dChub2RlKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItbWFjLmMtNDc1LVx0XHRuZXRkZXZfZXJyKG1hYy1cdTAwM2VuZXRfZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLW1hYy5jOjQ3NjpcdFx0XHQgICBcJiMzNDtseW54X3Bjc19jcmVhdGVfZndub2RlKCkgZmFpbGVkOiAlcGVcXG5cJiMzNDssIHBjcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItbWFjLmMtNDc3LVx0XHRyZXR1cm4gUFRSX0VSUihwY3MpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jPTM0PXN0YXRpYyBzdHJ1Y3QgcGh5bGlua19wY3MgKmVuZXRjX3BmX2NyZWF0ZV9wY3Moc3RydWN0IGVuZXRjX3BmICpwZixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYy0zNi17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYzozNzpcdHJldHVybiBseW54X3Bjc19jcmVhdGVfbWRpb2RldihidXMsIDApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmMtMzgtfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZtYW5fbWVtYWMuYz0xMTIyPXN0YXRpYyBzdHJ1Y3QgcGh5bGlua19wY3MgKm1lbWFjX3Bjc19jcmVhdGUoc3RydWN0IGRldmljZV9ub2RlICptYWNfbm9kZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9mbWFuX21lbWFjLmMtMTEzMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZtYW5fbWVtYWMuYzoxMTMyOlx0cGNzID0gbHlueF9wY3NfY3JlYXRlX2Z3bm9kZShvZl9md25vZGVfaGFuZGxlKG5vZGUpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZtYW5fbWVtYWMuYy0xMTMzLVx0b2Zfbm9kZV9wdXQobm9kZSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29jZnBnYS5jPTQ5Nj1zdGF0aWMgaW50IHNvY2ZwZ2FfZHdtYWNfcGNzX2luaXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvY2ZwZ2EuYy01MzEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb2NmcGdhLmM6NTMyOlx0cGNzID0gbHlueF9wY3NfY3JlYXRlX21kaW9kZXYocGNzX2J1cywgMCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb2NmcGdhLmMtNTMzLVx0aWYgKElTX0VSUihwY3MpKVxuLS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jPTMwOD1zdGF0aWMgY29uc3QgcGh5X2ludGVyZmFjZV90IGx5bnhfaW50ZXJmYWNlc1tdID0ge1xuLS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jLTMxNy1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jOjMxODpzdGF0aWMgc3RydWN0IHBoeWxpbmtfcGNzICpseW54X3Bjc19jcmVhdGUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvKVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1seW54LmMtMzE5LXtcbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguYy0zMzctXG5kcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguYzozMzg6c3RydWN0IHBoeWxpbmtfcGNzICpseW54X3Bjc19jcmVhdGVfbWRpb2RldihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkcilcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jLTMzOS17XG4tLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1seW54LmMtMzQ2LVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1seW54LmM6MzQ3Olx0cGNzID0gbHlueF9wY3NfY3JlYXRlKG1kaW8pO1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1seW54LmMtMzQ4LVxuLS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jLTM1OC19XG5kcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguYzozNTk6RVhQT1JUX1NZTUJPTChseW54X3Bjc19jcmVhdGVfbWRpb2Rldik7XG5kcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguYy0zNjAtXG5kcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguYy0zNjEtLypcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jOjM2MjogKiBseW54X3Bjc19jcmVhdGVfZndub2RlKCkgY3JlYXRlcyBhIGx5bnggUENTIGluc3RhbmNlIGZyb20gdGhlIGZ3bm9kZVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1seW54LmMtMzYzLSAqIGRldmljZSBpbmRpY2F0ZWQgYnkgbm9kZS5cbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguYy0zNzAtICovXG5kcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguYzozNzE6c3RydWN0IHBoeWxpbmtfcGNzICpseW54X3Bjc19jcmVhdGVfZndub2RlKHN0cnVjdCBmd25vZGVfaGFuZGxlICpub2RlKVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1seW54LmMtMzcyLXtcbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguYy0zODItXG5kcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguYzozODM6XHRwY3MgPSBseW54X3Bjc19jcmVhdGUobWRpbyk7XG5kcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguYy0zODQtXG4tLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1seW54LmMtMzk0LX1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jOjM5NTpFWFBPUlRfU1lNQk9MX0dQTChseW54X3Bjc19jcmVhdGVfZndub2RlKTtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jLTM5Ni1cbi0tXG5pbmNsdWRlL2xpbnV4L3Bjcy1seW54LmgtMTEtXG5pbmNsdWRlL2xpbnV4L3Bjcy1seW54Lmg6MTI6c3RydWN0IHBoeWxpbmtfcGNzICpseW54X3Bjc19jcmVhdGVfbWRpb2RldihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkcik7XG5pbmNsdWRlL2xpbnV4L3Bjcy1seW54Lmg6MTM6c3RydWN0IHBoeWxpbmtfcGNzICpseW54X3Bjc19jcmVhdGVfZndub2RlKHN0cnVjdCBmd25vZGVfaGFuZGxlICpub2RlKTtcbmluY2x1ZGUvbGludXgvcGNzLWx5bnguaC0xNC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjAgMTc6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODYyMAoJCQkJCQkJb3V0cHV0OiA0NwoJCQkJCQkJdGhvdWdodHM6IDk1NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBvdGVudGlhbCBmb3IgRnV6emluZyB0aGVzZSBMeW54IFBDUyBEcml2ZXJzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBgbHlueF9wY3NfY3JlYXRlX21kaW9kZXZgIGFuZCBgbHlueF9wY3NfY3JlYXRlX2Z3bm9kZWAgYXMgdGhlIGVudHJ5IHBvaW50cyBoZXJlLiBUaGUgY2FsbGVycyBhcmUgcHJldHR5IGRpdmVyc2U6IGB2c2M5OTU5X21kaW9fYnVzX2FsbG9jYCwgYHZzYzk5NTNfbWRpb19idXNfYWxsb2NgLCBgYWx0ZXJhX3RzZV9wcm9iZWAsIGBkcGFhMl9wY3NfY3JlYXRlYCwgYGVuZXRjX3BmX2NyZWF0ZV9wY3NgLCBgbWVtYWNfcGNzX2NyZWF0ZWAsIGFuZCBgc29jZnBnYV9kd21hY19wY3NfaW5pdGAuIEEgcXVpY2sgZ2xhbmNlIHRlbGxzIG1lIG5vbmUgb2YgdGhlc2UgYXJlIGRpcmVjdGx5IHJlbGF0ZWQgdG8gaGFyZHdhcmUgZW11bGF0ZWQgYnkgUUVNVSBvdXQgb2YgdGhlIGJveC4gU3BlY2lmaWNhbGx5OiBgZmVsaXhfdnNjOTk1OWAgYW5kIGBzZXZpbGxlX3ZzYzk5NTNgIGFyZSBOWFAgT2NlbG90IERTQSBzd2l0Y2hlcy4gYGFsdGVyYV90c2VfbWFpbmAgaXMgQWx0ZXJhIFRTRSBNQUMuIGBkcGFhMi1tYWNgIGlzIE5YUCBEUEFBMi4gYGVuZXRjX3BmYCBpcyBOWFAgRU5FVEMuIGBmbWFuX21lbWFjYCBpcyBOWFAgRk1hbi4gRmluYWxseSwgYGR3bWFjLXNvY2ZwZ2FgIGlzIEFsdGVyYSBTT0NGUEdBIERXTUFDLgoKVGhlIERXTUFDIGNvbm5lY3Rpb24gbWFrZXMgbWUgdGhpbmsgYWJvdXQgc3RtbWFjLCBzaW5jZSB0aGF0JiMzOTtzIGEgU3lub3BzeXMgRGVzaWduV2FyZSBNQUMuIFFFTVUgKmRvZXMqIGVtdWxhdGUgc29tZSBzdG1tYWMgdmFyaWFudHMgbGlrZSBgeGdtYWNgLCBgaW14X2ZlY2AsIGBhbGx3aW5uZXItc3VuOGktZW1hY2AsIGFuZCBgbnBjbTd4eF9lbWNgLiBCdXQgYGR3bWFjLXNvY2ZwZ2FgIGlzIGV4cGxpY2l0bHkgZm9yIEFsdGVyYSBTT0NGUEdBLiBEb2VzIFFFTVUgZXZlbiBlbXVsYXRlIEFsdGVyYSBTT0NGUEdBPwoKTGV0JiMzOTtzIHNlZS4uLiBRRU1VIGhhcyBgaHcvYXJtL3NvY2ZwZ2EuY2A/IE5vLCB0aGF0JiMzOTtzIHdyb25nLiBRRU1VIGRvZXMgaGF2ZSBgY3ViaWVib2FyZC5jYCwgYHhpbGlueF96eW5xLmNgLCBldGMuIFdhaXQsIEkgcmVtZW1iZXIgUUVNVSBoYXMgYGh3L2FybS94aWxpbnhfenlucS5jYCBhbmQgYHhpbGlueF96eW5xbXAuY2AsIGJ1dCBBbHRlcmE/IExldCBtZSBjb25maXJtLiBMb29raW5nIHRocm91Z2ggdGhlIFFFTVUgaGFyZHdhcmUgZmlsZXMsIGl0IGRvZXNuJiMzOTt0IHNlZW0gdG8gZW11bGF0ZSB0aGUgc2FtZSBNRElPIGJ1cyBvciBQQ1MgZm9yIHRoZXNlIGRldmljZXMgaW4gYSB3YXkgdGhhdCB3b3VsZCB0cmlnZ2VyIGBseW54X3Bjc19jb25maWdfdXN4Z21paWAuCgpGdXJ0aGVybW9yZSwgYGx5bnhfcGNzX2NvbmZpZ191c3hnbWlpYCBpcyBvbmx5IGNhbGxlZCB3aGVuIHRoZSBgaWZtb2RlYCBpcyBgUEhZX0lOVEVSRkFDRV9NT0RFX1VTWEdNSUlgIG9yIGBQSFlfSU5URVJGQUNFX01PREVfMTBHX1FYR01JSWAuIFRoaXMgcmVxdWlyZXMgYSB2ZXJ5IHNwZWNpZmljIGhhcmR3YXJlIGNvbmZpZ3VyYXRpb24gdmlhIHRoZSBkZXZpY2UgdHJlZSBvciBBQ1BJIHRvIHNldCB0aGUgUEhZIGludGVyZmFjZSBtb2RlIHRvIFVTWEdNSUkuIFRoaXMgY29uZmlndXJhdGlvbiBpcyBub3Qgc29tZXRoaW5nIHdlJiMzOTtkIGdldCBpbiBhIGdlbmVyaWMgZnV6emluZyBlbnZpcm9ubWVudCBsaWtlIHN5emthbGxlciwgZXNwZWNpYWxseSBvbiB4ODZfNjQgb3IgYXJtNjQgdmlydC4gV2UgZG9uJiMzOTt0IGhhdmUgdGhlc2Ugc3BlY2lmaWMgcGxhdGZvcm0gZGV2aWNlcyBvciBQQ0kgZGV2aWNlcyAobGlrZSBFTkVUQykgcHJlc2VudCBpbiB0aGF0IHNldHVwLgoKV2FpdCwgRU5FVEMgKmlzKiBhIFBDSSBkZXZpY2UuIENvdWxkIHdlIHByb2JlIHRoaXMgdGhyb3VnaCBQQ0kgZnV6emluZz8gSWYgc3l6a2FsbGVyIGlzIHVzaW5nIGB2aGNpYCBvciBgcGNpYCBmdXp6aW5nLCBpdCBjb3VsZCBwb3RlbnRpYWxseSBpbmplY3QgUENJIGRldmljZXMuIEhvd2V2ZXIsIEVORVRDIHdvdWxkIHJlcXVpcmUgc3BlY2lmaWMgUENJIHZlbmRvci9kZXZpY2UgSURzLiBUaGUgbmV4dCBzdGVwIGlzIHRvIGNoZWNrIGBlbmV0Y19wZi5jYCBhbmQgY29uZmlybSB0aG9zZSBQQ0kgSURzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAxNzo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwY2lfZGV2aWNlX2lkIGVuZXRjX3BmX2lkX3RhYmxlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYz05NDg9REVDTEFSRV9QQ0lfRklYVVBfRklOQUwoUENJX1ZFTkRPUl9JRF9GUkVFU0NBTEUsIEVORVRDX0RFVl9JRF9QRixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYy05NTAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYzo5NTE6c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIGVuZXRjX3BmX2lkX3RhYmxlW10gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYy05NTItXHR7IFBDSV9ERVZJQ0UoUENJX1ZFTkRPUl9JRF9GUkVFU0NBTEUsIEVORVRDX0RFVl9JRF9QRikgfSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjAgMTc6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA1MzkKCQkJCQkJCW91dHB1dDogMTE5CgkJCQkJCQl0aG91Z2h0czogOTM2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgRmVhc2liaWxpdHkgQXNzZXNzbWVudCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzLCBjb3VsZCBzeXprYWxsZXImIzM5O3MgUENJIGZ1enplciB0cmlnZ2VyIHRoaXM/IEl0IGRlcGVuZHMgaWYgaXQmIzM5O3MgaW4gdGhlIFBDSSBJRCB0YWJsZSwgYnV0IGBseW54X3Bjc19jb25maWdfdXN4Z21paWAgaXMgYW4gTURJTyBidXMgb3BlcmF0aW9uLCB3aGljaCBpcyBhIGJpdCBkaWZmZXJlbnQuIFNvLCBkb2VzIGBlbmV0Y19wZmAgKmNyZWF0ZSogdGhlIFBDUyBhbmQgdGhlbiBjYWxscyBgcGh5bGlua19zdGFydGAsIHdoaWNoIGluIHR1cm4gY2FsbHMgYGx5bnhfcGNzX2NvbmZpZ2A/IFllcCwgYGVuZXRjX3BmYCB1c2VzIHBoeWxpbmssIHNvIHRoYXQgcGFydCBtYWtlcyBzZW5zZS4KCkJ1dCBob2xkIG9uLCBsZXQgbWUgbG9vayBhdCB0aGUgcGF0Y2ggaXRzZWxmLiBJdCYjMzk7cyByZWFsbHkganVzdCBhZGRpbmcgc29tZSBNRElPIHdyaXRlcyB3aXRoaW4gYGx5bnhfcGNzX2NvbmZpZ191c3hnbWlpYC4gSXMgdGhpcyBldmVuIHdvcnRoIHNwZW5kaW5nIHRpbWUgb24/IExvb2tpbmcgYXQgdGhlIGNvZGUsIGl0JiMzOTtzIGEgYnVuY2ggb2YgcmVnaXN0ZXIgd3JpdGVzOiBjb25maWd1cmluZyBkZXZpY2UgYWJpbGl0eSwgYXV0b25lZ290aWF0aW9uIGFuZCBsaW5rIHRpbWVycy4gRXNzZW50aWFsbHksIGhhcmR3YXJlIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlcy4KCk5vdywgZXZlbiBpZiB0aGUgUENJIGRldmljZSAqY291bGQqIGJlIGZ1enplZCwgdGhlIGNvcmUgbG9naWMgaGVyZSBpcyBzaW1wbGUsIGRldGVybWluaXN0aWMgTURJTyB3cml0ZXMuIE5vIGNvbXBsZXggc3RhdGUgbWFjaGluZXMsIG5vIHRyaWNreSBtZW1vcnkgbWFuYWdlbWVudCwgbm8gb2J2aW91cyBzb2Z0d2FyZSBidWdzIGp1c3QgZnJvbSBsb29raW5nIGF0IHRoZSBjb2RlLCBqdXN0IGEgc2VxdWVuY2Ugb2YgaGFyZHdhcmUgcmVnaXN0ZXIgd3JpdGVzLiBJdCYjMzk7cyBwcmV0dHkgc3BlY2lmaWMgdG8gdGhlIGhhcmR3YXJlIHRvby4gV2UgYXJlIGRlYWxpbmcgd2l0aCBhIFVTWEdNSUkgaW50ZXJmYWNlIG1vZGUsIHdoaWNoIGlzIGxpa2VseSBzZXQgdXAgYnkgZGV2aWNlIHRyZWUgb3IgQUNQSS4gR2VuZXJpYyBQQ0kgZnV6emluZyB3b24mIzM5O3QgYmUgYWJsZSB0byB0cmlnZ2VyIHRoaXMgdW5sZXNzIGl0IGNhbiBzb21laG93IHByb3ZpZGUgYSBmYWtlIGRldmljZSB0cmVlLCB3aGljaCBpcyBkaWZmaWN1bHQuCgpDb25zaWRlcmluZyB0aGUgcnVsZXMsIGFuZCBteSBleHBlcmllbmNlLCB0aGlzIGZhbGxzIHNxdWFyZWx5IGludG8gdGhlIGNhdGVnb3J5IG9mICYjMzQ7dmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUmIzM0Oy4gVGhpcyBpcyBhbiBOWFAgTHlueCBQQ1MgZHJpdmVyLCB1c2VkIHdpdGggTlhQIGFuZCBBbHRlcmEgaGFyZHdhcmUuIFdlJiMzOTtyZSBkZWFsaW5nIHdpdGggc3BlY2lmaWMgaGFyZHdhcmUgb3IgZGV2aWNlIHRyZWUgY29uZmlndXJhdGlvbnMsIG5vdCBzb21ldGhpbmcgcmVhZGlseSBhY2Nlc3NpYmxlIGluIHN0YW5kYXJkIFFFTVUuCgpUaGVyZWZvcmUsIGdpdmVuIHRoZSBjaGFyYWN0ZXJpc3RpY3Mgb2YgdGhpcyBwYXRjaCBhbmQgdGhlIHJlcXVpcmVtZW50cywgdGhpcyBpcyBub3Qgd29ydGggZnV6emluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjAgMTc6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IGFkZHMgYSBmZXcgTURJTyByZWdpc3RlciB3cml0ZXMgdG8gdGhlIGhhcmR3YXJlIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlIG9mIHRoZSBOWFAgTHlueCBQQ1MgZHJpdmVyIChwY3MtbHlueCkuIFRoaXMgZHJpdmVyIGlzIHVzZWQgYnkgdmVuZG9yLXNwZWNpZmljIGhhcmR3YXJlIChOWFAgRU5FVEMsIERQQUEsIEFsdGVyYSBUU0UpIHdoaWNoIGFyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudHMuIEZ1cnRoZXJtb3JlLCB0aGUgY2hhbmdlcyBhcmUgcHVyZWx5IGhhcmR3YXJlIGNvbmZpZ3VyYXRpb24gc2VxdWVuY2VzIHdpdGhvdXQgY29tcGxleCBzb2Z0d2FyZSBsb2dpYywgbWFraW5nIHRoZW0gdW5zdWl0YWJsZSBhbmQgdW5yZWFjaGFibGUgZm9yIGdlbmVyaWMga2VybmVsIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IGFkZHMgYSBmZXcgTURJTyByZWdpc3RlciB3cml0ZXMgdG8gdGhlIGhhcmR3YXJlIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlIG9mIHRoZSBOWFAgTHlueCBQQ1MgZHJpdmVyIChwY3MtbHlueCkuIFRoaXMgZHJpdmVyIGlzIHVzZWQgYnkgdmVuZG9yLXNwZWNpZmljIGhhcmR3YXJlIChOWFAgRU5FVEMsIERQQUEsIEFsdGVyYSBUU0UpIHdoaWNoIGFyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudHMuIEZ1cnRoZXJtb3JlLCB0aGUgY2hhbmdlcyBhcmUgcHVyZWx5IGhhcmR3YXJlIGNvbmZpZ3VyYXRpb24gc2VxdWVuY2VzIHdpdGhvdXQgY29tcGxleCBzb2Z0d2FyZSBsb2dpYywgbWFraW5nIHRoZW0gdW5zdWl0YWJsZSBhbmQgdW5yZWFjaGFibGUgZm9yIGdlbmVyaWMga2VybmVsIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAxNzo0ODwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMjBUMTc6NDc6MTIuMDE2OTE4NzZaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MDkyMDE2MzI3NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgYWRkcyBhIGZldyBNRElPIHJlZ2lzdGVyIHdyaXRlcyB0byB0aGUgaGFyZHdhcmUgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2Ugb2YgdGhlIE5YUCBMeW54IFBDUyBkcml2ZXIgKHBjcy1seW54KS4gVGhpcyBkcml2ZXIgaXMgdXNlZCBieSB2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUgKE5YUCBFTkVUQywgRFBBQSwgQWx0ZXJhIFRTRSkgd2hpY2ggYXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50cy4gRnVydGhlcm1vcmUsIHRoZSBjaGFuZ2VzIGFyZSBwdXJlbHkgaGFyZHdhcmUgY29uZmlndXJhdGlvbiBzZXF1ZW5jZXMgd2l0aG91dCBjb21wbGV4IHNvZnR3YXJlIGxvZ2ljLCBtYWtpbmcgdGhlbSB1bnN1aXRhYmxlIGFuZCB1bnJlYWNoYWJsZSBmb3IgZ2VuZXJpYyBrZXJuZWwgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIwVDE3OjQ3OjEyLjAxNjkyMzUyWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjA0MjU0MTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAzZjhkYWY4Mzg4OGEzYTE4NjQwMzU2ZGE4OGU3YTI1NDAxOTFlZjViXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgQXVnIDIwIDE3OjQ3OjExIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jIGIvZHJpdmVycy9uZXQvcGNzL3Bjcy1seW54LmNcXG5pbmRleCBhOTIwODE1NjBlNjQxLi4zMzY1NTA3OWZlNTFkIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jXFxuKysrIGIvZHJpdmVycy9uZXQvcGNzL3Bjcy1seW54LmNcXG5AQCAtMjAsNiArMjAsOSBAQFxcbiAjZGVmaW5lIElGX01PREVfU1BFRURfTVNLXFx0XFx0R0VOTUFTSygzLCAyKVxcbiAjZGVmaW5lIElGX01PREVfSEFMRl9EVVBMRVhcXHRcXHRCSVQoNClcXG4gXFxuKyNkZWZpbmUgRU5FVENfUENTX1JFUExfTElOS19USU1FUl8xX0RFRlxcdDB4MDAwM1xcbisjZGVmaW5lIEVORVRDX1BDU19SRVBMX0xJTktfVElNRVJfMl9ERUZcXHQweDA2YTBcXG4rXFxuIHN0cnVjdCBseW54X3BjcyB7XFxuIFxcdHN0cnVjdCBwaHlsaW5rX3BjcyBwY3M7XFxuIFxcdHN0cnVjdCBtZGlvX2RldmljZSAqbWRpbztcXG5AQCAtMTU0LDYgKzE1Nyw3IEBAIHN0YXRpYyBpbnQgbHlueF9wY3NfY29uZmlnX3VzeGdtaWkoc3RydWN0IG1kaW9fZGV2aWNlICpwY3MsXFxuIFxcdFxcdFxcdFxcdCAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgKmFkdmVydGlzaW5nLFxcbiBcXHRcXHRcXHRcXHQgICB1bnNpZ25lZCBpbnQgbmVnX21vZGUpXFxuIHtcXG4rXFx0aW50IHJldDtcXG4gXFx0c3RydWN0IG1paV9idXMgKmJ1cyA9IHBjcy1cXHUwMDNlYnVzO1xcbiBcXHRpbnQgYWRkciA9IHBjcy1cXHUwMDNlYWRkcjtcXG4gXFxuQEAgLTE2NCwxMCArMTY4LDM4IEBAIHN0YXRpYyBpbnQgbHlueF9wY3NfY29uZmlnX3VzeGdtaWkoc3RydWN0IG1kaW9fZGV2aWNlICpwY3MsXFxuIFxcdH1cXG4gXFxuIFxcdC8qIENvbmZpZ3VyZSBkZXZpY2UgYWJpbGl0eSBmb3IgdGhlIFVTWEdNSUkgUmVwbGljYXRvciAqL1xcbi1cXHRyZXR1cm4gbWRpb2J1c19jNDVfd3JpdGUoYnVzLCBhZGRyLCBNRElPX01NRF9WRU5EMiwgTUlJX0FEVkVSVElTRSxcXG4tXFx0XFx0XFx0XFx0IE1ESU9fVVNYR01JSV8xMEcgfCBNRElPX1VTWEdNSUlfTElOSyB8XFxuLVxcdFxcdFxcdFxcdCBNRElPX1VTWEdNSUlfRlVMTF9EVVBMRVggfFxcbi1cXHRcXHRcXHRcXHQgQURWRVJUSVNFX1NHTUlJIHwgQURWRVJUSVNFX0xQQUNLKTtcXG4rXFx0cmV0ID0gbWRpb2J1c19jNDVfd3JpdGUoYnVzLCBhZGRyLCBNRElPX01NRF9WRU5EMiwgTUlJX0FEVkVSVElTRSxcXG4rXFx0XFx0XFx0XFx0TURJT19VU1hHTUlJXzEwRyB8IE1ESU9fVVNYR01JSV9MSU5LIHxcXG4rXFx0XFx0XFx0XFx0TURJT19VU1hHTUlJX0ZVTExfRFVQTEVYIHxcXG4rXFx0XFx0XFx0XFx0QURWRVJUSVNFX1NHTUlJIHwgQURWRVJUSVNFX0xQQUNLKTtcXG4rXFx0aWYgKHJldCBcXHUwMDNjIDApIHtcXG4rXFx0XFx0ZGV2X2VycihcXHUwMDI2cGNzLVxcdTAwM2VkZXYsIFxcXCJjb3VsZCBub3Qgc2V0IFVTWEdNSUkgcmVwbGljYXRvciBjb25maWdcXFxcblxcXCIpO1xcbitcXHRcXHRyZXR1cm4gcmV0O1xcbitcXHR9XFxuK1xcbitcXHQvKiBDb25maWd1cmUgYXV0b25lZ290aWF0aW9uICovXFxuK1xcdHJldCA9IG1kaW9idXNfYzQ1X3dyaXRlKGJ1cywgYWRkciwgTURJT19NTURfVkVORDIsIE1JSV9CTUNSLFxcbitcXHRcXHRcXHRcXHRCTUNSX1JFU0VUIHwgQk1DUl9BTkVOQUJMRSB8IEJNQ1JfQU5SRVNUQVJUKTtcXG4rXFx0aWYgKHJldCBcXHUwMDNjIDApIHtcXG4rXFx0XFx0ZGV2X2VycihcXHUwMDI2cGNzLVxcdTAwM2VkZXYsIFxcXCJjb3VsZCBub3Qgc2V0IFVTWEdNSUkgcmVwbGljYXRvciBjb250cm9sIGNvbmZpZ1xcXFxuXFxcIik7XFxuK1xcdFxcdHJldHVybiByZXQ7XFxuK1xcdH1cXG4rXFxuK1xcdHJldCA9IG1kaW9idXNfYzQ1X3dyaXRlKGJ1cywgYWRkciwgTURJT19NTURfVkVORDIsIExJTktfVElNRVJfTE8sXFxuK1xcdFxcdFxcdFxcdEVORVRDX1BDU19SRVBMX0xJTktfVElNRVJfMV9ERUYpO1xcbitcXHRpZiAocmV0IFxcdTAwM2MgMCkge1xcbitcXHRcXHRkZXZfZXJyKFxcdTAwMjZwY3MtXFx1MDAzZWRldiwgXFxcImNvdWxkIG5vdCBzZXQgVVNYR01JSSBMaW5rIFRpbWVyIDFcXFxcblxcXCIpO1xcbitcXHRcXHRyZXR1cm4gcmV0O1xcbitcXHR9XFxuK1xcbitcXHRyZXQgPSBtZGlvYnVzX2M0NV93cml0ZShidXMsIGFkZHIsIE1ESU9fTU1EX1ZFTkQyLCBMSU5LX1RJTUVSX0hJLFxcbitcXHRcXHRcXHRcXHRFTkVUQ19QQ1NfUkVQTF9MSU5LX1RJTUVSXzJfREVGKTtcXG4rXFx0aWYgKHJldCBcXHUwMDNjIDApIHtcXG4rXFx0XFx0ZGV2X2VycihcXHUwMDI2cGNzLVxcdTAwM2VkZXYsIFxcXCJjb3VsZCBub3Qgc2V0IFVTWEdNSUkgTGluayBUaW1lciAyXFxcXG5cXFwiKTtcXG4rXFx0XFx0cmV0dXJuIHJldDtcXG4rXFx0fVxcbitcXG4rXFx0cmV0dXJuIHJldDtcXG4gfVxcbiBcXG4gc3RhdGljIGludCBseW54X3Bjc19jb25maWcoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsIHVuc2lnbmVkIGludCBuZWdfbW9kZSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjBUMTc6NDc6MTIuNDc4MTIxNzUzWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NjA0NTg5NDc1NTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgYWRkcyBhIGZldyBNRElPIHJlZ2lzdGVyIHdyaXRlcyB0byB0aGUgaGFyZHdhcmUgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2Ugb2YgdGhlIE5YUCBMeW54IFBDUyBkcml2ZXIgKHBjcy1seW54KS4gVGhpcyBkcml2ZXIgaXMgdXNlZCBieSB2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUgKE5YUCBFTkVUQywgRFBBQSwgQWx0ZXJhIFRTRSkgd2hpY2ggYXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50cy4gRnVydGhlcm1vcmUsIHRoZSBjaGFuZ2VzIGFyZSBwdXJlbHkgaGFyZHdhcmUgY29uZmlndXJhdGlvbiBzZXF1ZW5jZXMgd2l0aG91dCBjb21wbGV4IHNvZnR3YXJlIGxvZ2ljLCBtYWtpbmcgdGhlbSB1bnN1aXRhYmxlIGFuZCB1bnJlYWNoYWJsZSBmb3IgZ2VuZXJpYyBrZXJuZWwgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDNmOGRhZjgzODg4YTNhMTg2NDAzNTZkYTg4ZTdhMjU0MDE5MWVmNWJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEF1ZyAyMCAxNzo0NzoxMSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jIGIvZHJpdmVycy9uZXQvcGNzL3Bjcy1seW54LmNcbmluZGV4IGE5MjA4MTU2MGU2NDEuLjMzNjU1MDc5ZmU1MWQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguY1xuKysrIGIvZHJpdmVycy9uZXQvcGNzL3Bjcy1seW54LmNcbkBAIC0yMCw2ICsyMCw5IEBAXG4gI2RlZmluZSBJRl9NT0RFX1NQRUVEX01TS1x0XHRHRU5NQVNLKDMsIDIpXG4gI2RlZmluZSBJRl9NT0RFX0hBTEZfRFVQTEVYXHRcdEJJVCg0KVxuIFxuKyNkZWZpbmUgRU5FVENfUENTX1JFUExfTElOS19USU1FUl8xX0RFRlx0MHgwMDAzXG4rI2RlZmluZSBFTkVUQ19QQ1NfUkVQTF9MSU5LX1RJTUVSXzJfREVGXHQweDA2YTBcbitcbiBzdHJ1Y3QgbHlueF9wY3Mge1xuIFx0c3RydWN0IHBoeWxpbmtfcGNzIHBjcztcbiBcdHN0cnVjdCBtZGlvX2RldmljZSAqbWRpbztcbkBAIC0xNTQsNiArMTU3LDcgQEAgc3RhdGljIGludCBseW54X3Bjc19jb25maWdfdXN4Z21paShzdHJ1Y3QgbWRpb19kZXZpY2UgKnBjcyxcbiBcdFx0XHRcdCAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgKmFkdmVydGlzaW5nLFxuIFx0XHRcdFx0ICAgdW5zaWduZWQgaW50IG5lZ19tb2RlKVxuIHtcbitcdGludCByZXQ7XG4gXHRzdHJ1Y3QgbWlpX2J1cyAqYnVzID0gcGNzLVx1MDAzZWJ1cztcbiBcdGludCBhZGRyID0gcGNzLVx1MDAzZWFkZHI7XG4gXG5AQCAtMTY0LDEwICsxNjgsMzggQEAgc3RhdGljIGludCBseW54X3Bjc19jb25maWdfdXN4Z21paShzdHJ1Y3QgbWRpb19kZXZpY2UgKnBjcyxcbiBcdH1cbiBcbiBcdC8qIENvbmZpZ3VyZSBkZXZpY2UgYWJpbGl0eSBmb3IgdGhlIFVTWEdNSUkgUmVwbGljYXRvciAqL1xuLVx0cmV0dXJuIG1kaW9idXNfYzQ1X3dyaXRlKGJ1cywgYWRkciwgTURJT19NTURfVkVORDIsIE1JSV9BRFZFUlRJU0UsXG4tXHRcdFx0XHQgTURJT19VU1hHTUlJXzEwRyB8IE1ESU9fVVNYR01JSV9MSU5LIHxcbi1cdFx0XHRcdCBNRElPX1VTWEdNSUlfRlVMTF9EVVBMRVggfFxuLVx0XHRcdFx0IEFEVkVSVElTRV9TR01JSSB8IEFEVkVSVElTRV9MUEFDSyk7XG4rXHRyZXQgPSBtZGlvYnVzX2M0NV93cml0ZShidXMsIGFkZHIsIE1ESU9fTU1EX1ZFTkQyLCBNSUlfQURWRVJUSVNFLFxuK1x0XHRcdFx0TURJT19VU1hHTUlJXzEwRyB8IE1ESU9fVVNYR01JSV9MSU5LIHxcbitcdFx0XHRcdE1ESU9fVVNYR01JSV9GVUxMX0RVUExFWCB8XG4rXHRcdFx0XHRBRFZFUlRJU0VfU0dNSUkgfCBBRFZFUlRJU0VfTFBBQ0spO1xuK1x0aWYgKHJldCBcdTAwM2MgMCkge1xuK1x0XHRkZXZfZXJyKFx1MDAyNnBjcy1cdTAwM2VkZXYsIFwiY291bGQgbm90IHNldCBVU1hHTUlJIHJlcGxpY2F0b3IgY29uZmlnXFxuXCIpO1xuK1x0XHRyZXR1cm4gcmV0O1xuK1x0fVxuK1xuK1x0LyogQ29uZmlndXJlIGF1dG9uZWdvdGlhdGlvbiAqL1xuK1x0cmV0ID0gbWRpb2J1c19jNDVfd3JpdGUoYnVzLCBhZGRyLCBNRElPX01NRF9WRU5EMiwgTUlJX0JNQ1IsXG4rXHRcdFx0XHRCTUNSX1JFU0VUIHwgQk1DUl9BTkVOQUJMRSB8IEJNQ1JfQU5SRVNUQVJUKTtcbitcdGlmIChyZXQgXHUwMDNjIDApIHtcbitcdFx0ZGV2X2VycihcdTAwMjZwY3MtXHUwMDNlZGV2LCBcImNvdWxkIG5vdCBzZXQgVVNYR01JSSByZXBsaWNhdG9yIGNvbnRyb2wgY29uZmlnXFxuXCIpO1xuK1x0XHRyZXR1cm4gcmV0O1xuK1x0fVxuK1xuK1x0cmV0ID0gbWRpb2J1c19jNDVfd3JpdGUoYnVzLCBhZGRyLCBNRElPX01NRF9WRU5EMiwgTElOS19USU1FUl9MTyxcbitcdFx0XHRcdEVORVRDX1BDU19SRVBMX0xJTktfVElNRVJfMV9ERUYpO1xuK1x0aWYgKHJldCBcdTAwM2MgMCkge1xuK1x0XHRkZXZfZXJyKFx1MDAyNnBjcy1cdTAwM2VkZXYsIFwiY291bGQgbm90IHNldCBVU1hHTUlJIExpbmsgVGltZXIgMVxcblwiKTtcbitcdFx0cmV0dXJuIHJldDtcbitcdH1cbitcbitcdHJldCA9IG1kaW9idXNfYzQ1X3dyaXRlKGJ1cywgYWRkciwgTURJT19NTURfVkVORDIsIExJTktfVElNRVJfSEksXG4rXHRcdFx0XHRFTkVUQ19QQ1NfUkVQTF9MSU5LX1RJTUVSXzJfREVGKTtcbitcdGlmIChyZXQgXHUwMDNjIDApIHtcbitcdFx0ZGV2X2VycihcdTAwMjZwY3MtXHUwMDNlZGV2LCBcImNvdWxkIG5vdCBzZXQgVVNYR01JSSBMaW5rIFRpbWVyIDJcXG5cIik7XG4rXHRcdHJldHVybiByZXQ7XG4rXHR9XG4rXG4rXHRyZXR1cm4gcmV0O1xuIH1cbiBcbiBzdGF0aWMgaW50IGx5bnhfcGNzX2NvbmZpZyhzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcywgdW5zaWduZWQgaW50IG5lZ19tb2RlLFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjBUMTc6NDc6MTIuNDc4MTIzNDczWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTAwMTQ3NjAwOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6XG5cbioqQW5hbHl6aW5nIGEgUENTLUx5bnggRHJpdmVyIFBhdGNoKipcblxuQWxyaWdodCwgc28gSSdtIGxvb2tpbmcgYXQgYSBwYXRjaCB0aGF0J3MgaGl0IHRoZSBuZXR3b3JrIGRyaXZlcnMsIHNwZWNpZmljYWxseSBtb2RpZnlpbmcgdGhlIGBkcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguY2AgZmlsZS4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBzZWVtcyB0byBiZSBpbiB0aGUgYGx5bnhfcGNzX2NvbmZpZ191c3hnbWlpYCBmdW5jdGlvbi4gRnJvbSBhIHF1aWNrIGdsYW5jZSwgaXQgbG9va3MgbGlrZSBpdCdzIGFkZGluZyBzb21lIE1ESU8gYnVzIGNvbmZpZ3VyYXRpb24gd3JpdGVzLCBsaWtlbHkgZm9yIGEgVVNYR01JSSByZXBsaWNhdG9yLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsICp3YWl0LCBpcyB0aGlzIGhhcmR3YXJlLXNwZWNpZmljPyogVGhlIFwicGNzLWx5bnhcIiBuYW1lIHN0cm9uZ2x5IHN1Z2dlc3RzIGl0J3MgdGllZCB0byBhIHBhcnRpY3VsYXIgcGllY2Ugb2YgaGFyZHdhcmU6IGEgTHlueCBQQ1MgZHJpdmVyLiBJIHNob3VsZCByZWFsbHkgY29uZmlybSB0aGF0LCB0aG91Z2g7IGxldCdzIGRpZyBhIGJpdCBkZWVwZXIgYW5kIHNlZSB3aGF0IFwibHlueFwiIGFjdHVhbGx5IHJlZmVycyB0by4gQmV0dGVyIHNhZmUgdGhhbiBzb3JyeS5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjc0OCwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg5LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjBUMTc6NDc6MTcuNDc5NjAzMzUxWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3MTEzODg0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImx5bnhfcGNzX2NvbmZpZ191c3hnbWlpXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jPTExNz1zdGF0aWMgaW50IGx5bnhfcGNzX2NvbmZpZ19naWdhKHN0cnVjdCBtZGlvX2RldmljZSAqcGNzLFxcbi0tXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1seW54LmMtMTU0LVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jOjE1NTpzdGF0aWMgaW50IGx5bnhfcGNzX2NvbmZpZ191c3hnbWlpKHN0cnVjdCBtZGlvX2RldmljZSAqcGNzLFxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jLTE1Ni1cXHRcXHRcXHRcXHQgICBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlLFxcbi0tXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1seW54LmM9MjA1PXN0YXRpYyBpbnQgbHlueF9wY3NfY29uZmlnKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzLCB1bnNpZ25lZCBpbnQgbmVnX21vZGUsXFxuLS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguYy0yMTktXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfMTBHX1FYR01JSTpcXG5kcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguYzoyMjA6XFx0XFx0cmV0dXJuIGx5bnhfcGNzX2NvbmZpZ191c3hnbWlpKGx5bngtXFx1MDAzZW1kaW8sIGlmbW9kZSwgYWR2ZXJ0aXNpbmcsXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1seW54LmMtMjIxLVxcdFxcdFxcdFxcdFxcdCAgICAgICBuZWdfbW9kZSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIwVDE3OjQ3OjE3LjUyNjcyMDk0NloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1ODgyNDIwMzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyB0aGUgYGx5bnhfcGNzX2NvbmZpZ2AgQ2FsbCoqXG5cbk9rYXksIGxldCdzIGRpdmUgaW4uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBmaWd1cmUgb3V0IHdoZXJlIHRoZSBgbHlueF9wY3NfY29uZmlnYCBmdW5jdGlvbiBpcyBiZWluZyBjYWxsZWQsIGJlY2F1c2UgaXQncyBhc3NvY2lhdGVkIHdpdGggYHBoeWxpbmtfcGNzYCwgc28gSSBrbm93IHdlJ3JlIGRlYWxpbmcgd2l0aCBhIHBoeXNpY2FsIGxheWVyIGNvbnRyb2wgc3lzdGVtLiBOZXh0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGlzIHNwZWNpZmljIGRyaXZlciBpcyBldmVuIGFjY2Vzc2libGUgaW4gYSBRRU1VIGVudmlyb25tZW50LiBUaGF0J3MgYSBjcml0aWNhbCBwaWVjZSBvZiBpbmZvcm1hdGlvbi4gVG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBkcml2ZXIncyBjb25maWd1cmF0aW9uIGFuZCBidWlsZCBwcm9jZXNzLCBJJ2xsIHN0YXJ0IGJ5IGNoZWNraW5nIHRoZSBLY29uZmlnIGFuZCBNYWtlZmlsZSBpbiB0aGUgYGRyaXZlcnMvbmV0L3Bjcy9gIGRpcmVjdG9yeS4gVGhhdCBzaG91bGQgZ2l2ZSBtZSB0aGUgbG93ZG93biBvbiB0aGUgYnVpbGQgb3B0aW9ucyBhbmQgZGVwZW5kZW5jaWVzIGZvciB0aGlzIHBhcnRpY3VsYXIgUENTIGNvbXBvbmVudC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzM0NCwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIwVDE3OjQ3OjIxLjExNDk2NjA5WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY2NzUxNjQzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBjcy1seW54XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3Bjcy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcGNzL01ha2VmaWxlPTc9b2JqLSQoQ09ORklHX1BDU19YUENTKVxcdFxcdCs9IHBjc194cGNzLm9cXG5kcml2ZXJzL25ldC9wY3MvTWFrZWZpbGU6ODpvYmotJChDT05GSUdfUENTX0xZTlgpXFx0XFx0Kz0gcGNzLWx5bngub1xcbmRyaXZlcnMvbmV0L3Bjcy9NYWtlZmlsZS05LW9iai0kKENPTkZJR19QQ1NfTVRLX0xZTlhJKVxcdCs9IHBjcy1tdGstbHlueGkub1xcbi0tXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1seW54LmMtNy0jaW5jbHVkZSBcXHUwMDNjbGludXgvcGh5bGluay5oXFx1MDAzZVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jOjg6I2luY2x1ZGUgXFx1MDAzY2xpbnV4L3Bjcy1seW54LmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1seW54LmMtOS0jaW5jbHVkZSBcXHUwMDNjbGludXgvcHJvcGVydHkuaFxcdTAwM2VcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjBUMTc6NDc6MjEuMTgxNzI4OTI0WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDMzOTk3Mzc0NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipEaXZpbmcgaW50byB0aGUgTmV0d29yayBEcml2ZXIgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoaXMgbmV0d29yayBkcml2ZXIuIFRoZSBzdGFydGluZyBwb2ludCwgYXMgYWx3YXlzIHdpdGggdGhlIGtlcm5lbCwgaXMgdGhlIGBLY29uZmlnYCBmaWxlLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byBjaGVjayBgZHJpdmVycy9uZXQvcGNzL0tjb25maWdgLiBUaGlzIGZpbGUgc2hvdWxkIGNvbnRhaW4gYWxsIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIHN5bWJvbHMg4oCTIHRoZSB0aGluZ3MgdGhhdCBkZWZpbmUgd2hhdCBmZWF0dXJlcyBhcmUgZW5hYmxlZCwgd2hhdCBoYXJkd2FyZSBpcyBzdXBwb3J0ZWQsIGFuZCBzbyBvbi4gTXkgaW5pdGlhbCBnb2FsIGlzIHRvIGdldCBhIGJpcmQncy1leWUgdmlldyBvZiBhbGwgdGhlIGNvbmZpZ3VyYWJsZSBlbGVtZW50cy4gSSdsbCBiZSBsb29raW5nIGZvciB0aGluZ3MgbGlrZSB3aGV0aGVyIHNwZWNpZmljIGhhcmR3YXJlIGNoaXBzZXRzIGFyZSBzdXBwb3J0ZWQsIHZhcmlvdXMgcHJvdG9jb2wgb3B0aW9ucyAoZS5nLiwgVkxBTiwgUW9TKSwgYW5kIGFueSByZWxldmFudCBkZWJ1Z2dpbmcgb3IgcGVyZm9ybWFuY2UgdHVuaW5nIGtub2JzLiBUaGlzIEtjb25maWcgZmlsZSBpcyB0aGUgY3JpdGljYWwgZW50cnkgcG9pbnQgdG8gdW5kZXJzdGFuZGluZyAqaG93KiB0aGlzIGRyaXZlciB3b3JrcyBpbiB0ZXJtcyBvZiBob3cgaXQncyBidWlsdCBhbmQgY29uZmlndXJlZC4gSSdtIGdvaW5nIHRvIHN0YXJ0IGJ5IHF1aWNrbHkgc2Nhbm5pbmcgdGhlIHN0cnVjdHVyZSwgbG9va2luZyBmb3IgbG9naWNhbCBncm91cGluZ3MgYW5kIGRlcGVuZGVuY2llcy4gTXkgZm9jdXMgd2lsbCBiZSBvbiB0aGUgYXJjaGl0ZWN0dXJlLCBhbnkga2V5IGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgYW5kIGFueXRoaW5nIHRoYXQganVtcHMgb3V0IGFzIHVudXN1YWwgb3IgaW50ZXJlc3RpbmcuIFVuZGVyc3RhbmRpbmcgdGhpcyBmaWxlIGlzIGZ1bmRhbWVudGFsLiBJdCdzIHRoZSBmb3VuZGF0aW9uIHVwb24gd2hpY2ggdGhlIHJlc3Qgb2YgdGhlIGRyaXZlcidzIGJ1aWxkIHByb2Nlc3MgaXMgYnVpbHQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM3NzgsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQxNzo0NzoyNS41MjE3MDUwNFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0Nzg3MjE1NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgUENTX0xZTlhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvcGNzL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcGNzL0tjb25maWc9OD1jb25maWcgUENTX1hQQ1NcXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9LY29uZmlnLTE0LVxcbmRyaXZlcnMvbmV0L3Bjcy9LY29uZmlnOjE1OmNvbmZpZyBQQ1NfTFlOWFxcbmRyaXZlcnMvbmV0L3Bjcy9LY29uZmlnLTE2LVxcdHRyaXN0YXRlXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIwVDE3OjQ3OjI1LjU2OTU4MjE5NVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwMzgxNjk2MDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBzdW1tYXJ5LCBpbiB0aGUgZmlyc3QgcGVyc29uLCBhcyBhbiBleHBlcnQgaW4gdGhlIGZpZWxkIHdvdWxkIHRoaW5rIGl0OlxuXG4qKkRlY29kaW5nIHRoZSBUcmlzdGF0ZSdzIFNlbGVjdG9yKipcblxuQWxyaWdodCwgdGhpcyBpcyBhIHRyaXN0YXRlLCBhbmQgdGhlIGNyaXRpY2FsIHRoaW5nIGhlcmUgaXMgdGhhdCBpdCdzICp1bnByb21wdGVkKi4gVGhhdCBtZWFucyBpdHMgc3RhdGUgaXNuJ3QgZGlyZWN0bHkgY29udHJvbGxlZCBieSBhbnkgZXhwbGljaXQgdXNlciBvciBjb25maWd1cmF0aW9uIGlucHV0LiBJdCdzIGJlaW5nIGRyaXZlbiBieSBzb21ldGhpbmcgKmV4dGVybmFsKi4gU28sIG15IGltbWVkaWF0ZSB0aG91Z2h0IGlzOiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgZHJpdmVycyBvciBtb2R1bGVzIHRoYXQgYXJlIGFjdGl2ZWx5ICpzZWxlY3RpbmcqIHRoaXMgcGFydGljdWxhciB0cmlzdGF0ZS4gSW4gdGhpcyBjYXNlLCBpdCBpcyBuYW1lZCBgUENTX0xZTlhgLiBJIG5lZWQgdG8gdHJhY2UgYmFjayBmcm9tIHRoYXQgaWRlbnRpZmllciBhbmQgd29yayBteSB3YXkgdXBzdHJlYW0uIFVuZGVyc3RhbmRpbmcgd2hhdCdzIHB1bGxpbmcgdGhlIHRyaWdnZXIgb24gYFBDU19MWU5YYCBpcyBnb2luZyB0byBiZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgc3RhdGUgb2YgdGhpcyBzeXN0ZW0sIGFuZCBob3cgdGhhdCBzZWxlY3Rpb24gaXMgYWZmZWN0ZWQuIFRoYXQncyB3aGVyZSBJIG5lZWQgdG8gZm9jdXMgbXkgZWZmb3J0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDE1NywiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIwVDE3OjQ3OjI4LjYwNzc1NDAzNFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTk1MjI1MzAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNlbGVjdCBQQ1NfTFlOWFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZHNhL29jZWxvdC9LY29uZmlnPTMyPWNvbmZpZyBORVRfRFNBX01TQ0NfRkVMSVhcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvS2NvbmZpZy00NC1cXHRzZWxlY3QgRlNMX0VORVRDX01ESU9cXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L0tjb25maWc6NDU6XFx0c2VsZWN0IFBDU19MWU5YXFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9LY29uZmlnLTQ2LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvS2NvbmZpZz01MD1jb25maWcgTkVUX0RTQV9NU0NDX1NFVklMTEVcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvS2NvbmZpZy02MC1cXHRzZWxlY3QgTkVUX0RTQV9UQUdfT0NFTE9UXFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9LY29uZmlnOjYxOlxcdHNlbGVjdCBQQ1NfTFlOWFxcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvS2NvbmZpZy02Mi1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvS2NvbmZpZz0yPWNvbmZpZyBBTFRFUkFfVFNFXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvS2NvbmZpZy03LVxcdHNlbGVjdCBQSFlMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL0tjb25maWc6ODpcXHRzZWxlY3QgUENTX0xZTlhcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvS2NvbmZpZy05LVxcdHNlbGVjdCBNRElPX1JFR01BUFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEvS2NvbmZpZz0yPW1lbnVjb25maWcgRlNMX0RQQUFfRVRIXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYS9LY29uZmlnLTUtXFx0c2VsZWN0IFBIWUxJTktcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYS9LY29uZmlnOjY6XFx0c2VsZWN0IFBDU19MWU5YXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEvS2NvbmZpZy03LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9LY29uZmlnPTI9Y29uZmlnIEZTTF9EUEFBMl9FVEhcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9LY29uZmlnLTUtXFx0c2VsZWN0IFBIWUxJTktcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvS2NvbmZpZzo2OlxcdHNlbGVjdCBQQ1NfTFlOWFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9LY29uZmlnLTctXFx0c2VsZWN0IEZTTF9YR01BQ19NRElPXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvS2NvbmZpZz0zMz1jb25maWcgRlNMX0RQQUEyX1NXSVRDSFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL0tjb25maWctMzgtXFx0c2VsZWN0IFBIWUxJTktcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvS2NvbmZpZzozOTpcXHRzZWxlY3QgUENTX0xZTlhcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvS2NvbmZpZy00MC1cXHRzZWxlY3QgRlNMX1hHTUFDX01ESU9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9LY29uZmlnPTMwPWNvbmZpZyBGU0xfRU5FVENcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9LY29uZmlnLTM4LVxcdHNlbGVjdCBQSFlMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL0tjb25maWc6Mzk6XFx0c2VsZWN0IFBDU19MWU5YXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL0tjb25maWctNDAtXFx0c2VsZWN0IERJTUxJQlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vS2NvbmZpZz0yPWNvbmZpZyBGU0xfRk1BTlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vS2NvbmZpZy02LVxcdHNlbGVjdCBQSFlMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vS2NvbmZpZzo3OlxcdHNlbGVjdCBQQ1NfTFlOWFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL0tjb25maWctOC1cXHRzZWxlY3QgQ1JDMzJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MjAzPWNvbmZpZyBEV01BQ19TT0NGUEdBXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTIwOS1cXHRzZWxlY3QgUkVHTUFQX01NSU9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjIxMDpcXHRzZWxlY3QgUENTX0xZTlhcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTIxMS1cXHRoZWxwXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIwVDE3OjQ3OjI4LjgwMjk4NTg5NFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMjc4NDQ3ODc0NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgSGFyZHdhcmUgRHJpdmVyIFJlYWNoYWJpbGl0eSBpbiBRRU1VKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCB0cnlpbmcgdG8gZmlndXJlIG91dCB3aGljaCBoYXJkd2FyZSBkcml2ZXJzIGFyZSBldmVuIHJlbGV2YW50IGZvciBteSB0ZXN0aW5nIGluIFFFTVUuIEkgc2VlIGEgYnVuY2ggbGlzdGVkOiBgTkVUX0RTQV9NU0NDX0ZFTElYYCwgYE5FVF9EU0FfTVNDQ19TRVZJTExFYCwgYEFMVEVSQV9UU0VgLCBgRlNMX0RQQUFfRVRIYCwgYEZTTF9EUEFBMl9FVEhgLCBgRlNMX0RQQUEyX1NXSVRDSGAsIGBGU0xfRU5FVENgLCBgRlNMX0ZNQU5gLCBhbmQgYERXTUFDX1NPQ0ZQR0FgLiBUaGUgcXVlc3Rpb24gaXMsIHdoaWNoIG9mIHRoZXNlIGFyZSBhY3R1YWxseSAqcmVhY2hhYmxlKiB3aGVuIEknbSBydW5uaW5nIFFFTVU/XG5cbmBEV01BQ19TT0NGUEdBYCBsb29rcyBsaWtlIGEgcGxhdGZvcm0gZHJpdmVyLCBzbyBtYXliZSB0aGVyZSdzIGEgc3BlY2lmaWMgbWFjaGluZSB0eXBlIHRoYXQgY291bGQgZW5hYmxlIGl0LCBidXQgc3l6a2FsbGVyIHVzdWFsbHkgdXNlcyBgcTM1YCBvciBgdmlydGAgKGZvciBBUk02NCksIHNvIGl0J3MgcHJvYmFibHkgbm90IGEgY29tbW9uIGNvbmZpZ3VyYXRpb24uIGBGU0xfRU5FVENgIGlzIGEgUENJIGRyaXZlciwgYW5kIEkgaGlnaGx5IGRvdWJ0IFFFTVUgZW11bGF0ZXMgRnJlZXNjYWxlIEVORVRDLCB0aG91Z2ggSSBzaG91bGQgZG91YmxlLWNoZWNr4oCmIE5vLCBRRU1VIGlzIHVzdWFsbHkgdmVyeSBzcG90dHkgd2l0aCBlbXVsYXRpbmcgRU5FVEMuIEFuZCBmb3IgdGhlIG90aGVycywgbGlrZSBgQUxURVJBX1RTRWAsIEknbSBndWVzc2luZyBcIm5vXCIgdG9vLiBTbywgYERXTUFDX1NPQ0ZQR0FgIGFuZCBgTkVUX0RTQV9NU0NDX0ZFTElYYCB3aGljaCBpcyBEU0Egc3dpdGNoLCBlaXRoZXIgcGxhdGZvcm0gb3IgUENJLCBpcyBvdXQuXG5cblRoZSByZWFsIHF1ZXN0aW9uIGlzIGFib3V0IGBwY3MtbHlueC5jYC4gQ2FuIGFueSBvZiB0aG9zZSB2aXJ0dWFsaXplZCBoYXJkd2FyZSBpbnN0YW5jZXMgKnJlYWNoKiBgcGNzLWx5bnguY2A/IEFoLCByaWdodCwgYHBoeWxpbmtfcGNzYCBpcyBhIGdlbmVyaWMgYWJzdHJhY3Rpb24uIENhbiBJIGluc3RhbnRpYXRlIGl0IHdpdGggYSBkdW1teSBkZXZpY2U/IE5vcGUsIGl0J3MgYWN0dWFsbHkgaW5zdGFudGlhdGVkIGJ5IHNwZWNpZmljIE1BQyBkcml2ZXJzLlxuXG5TbywgaWYgbm9uZSBvZiB0aG9zZSBNQUMgZHJpdmVycyBhcmUgZXZlbiBlbXVsYXRlZCwgdGhlbiB0aGF0IG1lYW5zIGBseW54X3Bjc19jb25maWdfdXN4Z21paWAgaXMgdW5yZWFjaGFibGUuIEFscmlnaHQsIEkgbmVlZCB0byBjaGVjayBpZiB0aGVyZSBhcmUgYW55ICpvdGhlciogdXNlcnMgb2YgYFBDU19MWU5YYCBiZWNhdXNlIGl0IGRvZXNuJ3QgbG9vayBsaWtlbHkgdGhhdCB0aGUgb25lcyBsaXN0ZWQgaGVyZSB3aWxsIHJlYWNoIGl0LiBMZXQncyBzZWUuLi5cblxuXG4iLCJJbnB1dFRva2VucyI6NTM4OSwiT3V0cHV0VG9rZW5zIjoyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ5NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQxNzo0Nzo0MS41ODc0NjcyMTlaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2NTU4ODA5NDEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibHlueF9wY3NfY3JlYXRlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvc2ZwLXBoeWxpbmsucnN0PTc0PXRoaXMgZG9jdW1lbnRhdGlvbi5cXG4tLVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9zZnAtcGh5bGluay5yc3QtMzExLVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9zZnAtcGh5bGluay5yc3Q6MzEyOiAgICAgICAgcHJpdi1cXHUwMDNlcGNzID0gbHlueF9wY3NfY3JlYXRlX21kaW9kZXYoYnVzLCAwKTtcXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvc2ZwLXBoeWxpbmsucnN0LTMxMy1cXG4tLVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9zZnAtcGh5bGluay5yc3QtMzE3LVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9zZnAtcGh5bGluay5yc3Q6MzE4OiAgICAgICAgcHJpdi1cXHUwMDNlcGNzID0gbHlueF9wY3NfY3JlYXRlX2Z3bm9kZShvZl9md25vZGVfaGFuZGxlKG5vZGUpKTtcXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvc2ZwLXBoeWxpbmsucnN0LTMxOS1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXhfdnNjOTk1OS5jPTk1Nz1zdGF0aWMgaW50IHZzYzk5NTlfbWRpb19idXNfYWxsb2Moc3RydWN0IG9jZWxvdCAqb2NlbG90KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeF92c2M5OTU5LmMtMTAzMi1cXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4X3ZzYzk5NTkuYzoxMDMzOlxcdFxcdHBoeWxpbmtfcGNzID0gbHlueF9wY3NfY3JlYXRlX21kaW9kZXYoZmVsaXgtXFx1MDAzZWltZGlvLCBwb3J0KTtcXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4X3ZzYzk5NTkuYy0xMDM0LVxcdFxcdGlmIChJU19FUlIocGh5bGlua19wY3MpKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9zZXZpbGxlX3ZzYzk5NTMuYz04Nzg9c3RhdGljIGludCB2c2M5OTUzX21kaW9fYnVzX2FsbG9jKHN0cnVjdCBvY2Vsb3QgKm9jZWxvdClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3Qvc2V2aWxsZV92c2M5OTUzLmMtOTIyLVxcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3Qvc2V2aWxsZV92c2M5OTUzLmM6OTIzOlxcdFxcdHBoeWxpbmtfcGNzID0gbHlueF9wY3NfY3JlYXRlX21kaW9kZXYoZmVsaXgtXFx1MDAzZWltZGlvLCBhZGRyKTtcXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L3NldmlsbGVfdnNjOTk1My5jLTkyNC1cXHRcXHRpZiAoSVNfRVJSKHBoeWxpbmtfcGNzKSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsdGVyYS9hbHRlcmFfdHNlX21haW4uYz0xMTI4PXN0YXRpYyBpbnQgYWx0ZXJhX3RzZV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL2FsdGVyYV90c2VfbWFpbi5jLTEzOTQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL2FsdGVyYV90c2VfbWFpbi5jOjEzOTU6XFx0cHJpdi1cXHUwMDNlcGNzID0gbHlueF9wY3NfY3JlYXRlX21kaW9kZXYocGNzX2J1cywgMCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL2FsdGVyYV90c2VfbWFpbi5jLTEzOTYtXFx0aWYgKElTX0VSUihwcml2LVxcdTAwM2VwY3MpKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItbWFjLmM9NDQ3PXN0YXRpYyBpbnQgZHBhYTJfcGNzX2NyZWF0ZShzdHJ1Y3QgZHBhYTJfbWFjICptYWMsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItbWFjLmMtNDYwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGFhMi1tYWMuYzo0NjE6XFx0cGNzID0gbHlueF9wY3NfY3JlYXRlX2Z3bm9kZShub2RlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItbWFjLmMtNDYyLVxcdGZ3bm9kZV9oYW5kbGVfcHV0KG5vZGUpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLW1hYy5jLTQ3NS1cXHRcXHRuZXRkZXZfZXJyKG1hYy1cXHUwMDNlbmV0X2RldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItbWFjLmM6NDc2OlxcdFxcdFxcdCAgIFxcXCJseW54X3Bjc19jcmVhdGVfZndub2RlKCkgZmFpbGVkOiAlcGVcXFxcblxcXCIsIHBjcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLW1hYy5jLTQ3Ny1cXHRcXHRyZXR1cm4gUFRSX0VSUihwY3MpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmM9MzQ9c3RhdGljIHN0cnVjdCBwaHlsaW5rX3BjcyAqZW5ldGNfcGZfY3JlYXRlX3BjcyhzdHJ1Y3QgZW5ldGNfcGYgKnBmLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmMtMzYte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jOjM3OlxcdHJldHVybiBseW54X3Bjc19jcmVhdGVfbWRpb2RldihidXMsIDApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jLTM4LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZtYW5fbWVtYWMuYz0xMTIyPXN0YXRpYyBzdHJ1Y3QgcGh5bGlua19wY3MgKm1lbWFjX3Bjc19jcmVhdGUoc3RydWN0IGRldmljZV9ub2RlICptYWNfbm9kZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZtYW5fbWVtYWMuYy0xMTMxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZtYW5fbWVtYWMuYzoxMTMyOlxcdHBjcyA9IGx5bnhfcGNzX2NyZWF0ZV9md25vZGUob2ZfZndub2RlX2hhbmRsZShub2RlKSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vZm1hbl9tZW1hYy5jLTExMzMtXFx0b2Zfbm9kZV9wdXQobm9kZSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb2NmcGdhLmM9NDk2PXN0YXRpYyBpbnQgc29jZnBnYV9kd21hY19wY3NfaW5pdChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb2NmcGdhLmMtNTMxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvY2ZwZ2EuYzo1MzI6XFx0cGNzID0gbHlueF9wY3NfY3JlYXRlX21kaW9kZXYocGNzX2J1cywgMCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29jZnBnYS5jLTUzMy1cXHRpZiAoSVNfRVJSKHBjcykpXFxuLS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguYz0zMDg9c3RhdGljIGNvbnN0IHBoeV9pbnRlcmZhY2VfdCBseW54X2ludGVyZmFjZXNbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jLTMxNy1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguYzozMTg6c3RhdGljIHN0cnVjdCBwaHlsaW5rX3BjcyAqbHlueF9wY3NfY3JlYXRlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpbylcXG5kcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguYy0zMTkte1xcbi0tXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1seW54LmMtMzM3LVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jOjMzODpzdHJ1Y3QgcGh5bGlua19wY3MgKmx5bnhfcGNzX2NyZWF0ZV9tZGlvZGV2KHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBhZGRyKVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jLTMzOS17XFxuLS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguYy0zNDYtXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1seW54LmM6MzQ3OlxcdHBjcyA9IGx5bnhfcGNzX2NyZWF0ZShtZGlvKTtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguYy0zNDgtXFxuLS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguYy0zNTgtfVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jOjM1OTpFWFBPUlRfU1lNQk9MKGx5bnhfcGNzX2NyZWF0ZV9tZGlvZGV2KTtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguYy0zNjAtXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1seW54LmMtMzYxLS8qXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1seW54LmM6MzYyOiAqIGx5bnhfcGNzX2NyZWF0ZV9md25vZGUoKSBjcmVhdGVzIGEgbHlueCBQQ1MgaW5zdGFuY2UgZnJvbSB0aGUgZndub2RlXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1seW54LmMtMzYzLSAqIGRldmljZSBpbmRpY2F0ZWQgYnkgbm9kZS5cXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jLTM3MC0gKi9cXG5kcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguYzozNzE6c3RydWN0IHBoeWxpbmtfcGNzICpseW54X3Bjc19jcmVhdGVfZndub2RlKHN0cnVjdCBmd25vZGVfaGFuZGxlICpub2RlKVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jLTM3Mi17XFxuLS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguYy0zODItXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1seW54LmM6MzgzOlxcdHBjcyA9IGx5bnhfcGNzX2NyZWF0ZShtZGlvKTtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguYy0zODQtXFxuLS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguYy0zOTQtfVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jOjM5NTpFWFBPUlRfU1lNQk9MX0dQTChseW54X3Bjc19jcmVhdGVfZndub2RlKTtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguYy0zOTYtXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3Bjcy1seW54LmgtMTEtXFxuaW5jbHVkZS9saW51eC9wY3MtbHlueC5oOjEyOnN0cnVjdCBwaHlsaW5rX3BjcyAqbHlueF9wY3NfY3JlYXRlX21kaW9kZXYoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IGFkZHIpO1xcbmluY2x1ZGUvbGludXgvcGNzLWx5bnguaDoxMzpzdHJ1Y3QgcGh5bGlua19wY3MgKmx5bnhfcGNzX2NyZWF0ZV9md25vZGUoc3RydWN0IGZ3bm9kZV9oYW5kbGUgKm5vZGUpO1xcbmluY2x1ZGUvbGludXgvcGNzLWx5bnguaC0xNC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjBUMTc6NDc6NDMuMjQzMzU0NDlaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTIzNDg3NTcxNjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQb3RlbnRpYWwgZm9yIEZ1enppbmcgdGhlc2UgTHlueCBQQ1MgRHJpdmVycyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGBseW54X3Bjc19jcmVhdGVfbWRpb2RldmAgYW5kIGBseW54X3Bjc19jcmVhdGVfZndub2RlYCBhcyB0aGUgZW50cnkgcG9pbnRzIGhlcmUuIFRoZSBjYWxsZXJzIGFyZSBwcmV0dHkgZGl2ZXJzZTogYHZzYzk5NTlfbWRpb19idXNfYWxsb2NgLCBgdnNjOTk1M19tZGlvX2J1c19hbGxvY2AsIGBhbHRlcmFfdHNlX3Byb2JlYCwgYGRwYWEyX3Bjc19jcmVhdGVgLCBgZW5ldGNfcGZfY3JlYXRlX3Bjc2AsIGBtZW1hY19wY3NfY3JlYXRlYCwgYW5kIGBzb2NmcGdhX2R3bWFjX3Bjc19pbml0YC4gQSBxdWljayBnbGFuY2UgdGVsbHMgbWUgbm9uZSBvZiB0aGVzZSBhcmUgZGlyZWN0bHkgcmVsYXRlZCB0byBoYXJkd2FyZSBlbXVsYXRlZCBieSBRRU1VIG91dCBvZiB0aGUgYm94LiBTcGVjaWZpY2FsbHk6IGBmZWxpeF92c2M5OTU5YCBhbmQgYHNldmlsbGVfdnNjOTk1M2AgYXJlIE5YUCBPY2Vsb3QgRFNBIHN3aXRjaGVzLiBgYWx0ZXJhX3RzZV9tYWluYCBpcyBBbHRlcmEgVFNFIE1BQy4gYGRwYWEyLW1hY2AgaXMgTlhQIERQQUEyLiBgZW5ldGNfcGZgIGlzIE5YUCBFTkVUQy4gYGZtYW5fbWVtYWNgIGlzIE5YUCBGTWFuLiBGaW5hbGx5LCBgZHdtYWMtc29jZnBnYWAgaXMgQWx0ZXJhIFNPQ0ZQR0EgRFdNQUMuXG5cblRoZSBEV01BQyBjb25uZWN0aW9uIG1ha2VzIG1lIHRoaW5rIGFib3V0IHN0bW1hYywgc2luY2UgdGhhdCdzIGEgU3lub3BzeXMgRGVzaWduV2FyZSBNQUMuIFFFTVUgKmRvZXMqIGVtdWxhdGUgc29tZSBzdG1tYWMgdmFyaWFudHMgbGlrZSBgeGdtYWNgLCBgaW14X2ZlY2AsIGBhbGx3aW5uZXItc3VuOGktZW1hY2AsIGFuZCBgbnBjbTd4eF9lbWNgLiBCdXQgYGR3bWFjLXNvY2ZwZ2FgIGlzIGV4cGxpY2l0bHkgZm9yIEFsdGVyYSBTT0NGUEdBLiBEb2VzIFFFTVUgZXZlbiBlbXVsYXRlIEFsdGVyYSBTT0NGUEdBP1xuXG5MZXQncyBzZWUuLi4gUUVNVSBoYXMgYGh3L2FybS9zb2NmcGdhLmNgPyBObywgdGhhdCdzIHdyb25nLiBRRU1VIGRvZXMgaGF2ZSBgY3ViaWVib2FyZC5jYCwgYHhpbGlueF96eW5xLmNgLCBldGMuIFdhaXQsIEkgcmVtZW1iZXIgUUVNVSBoYXMgYGh3L2FybS94aWxpbnhfenlucS5jYCBhbmQgYHhpbGlueF96eW5xbXAuY2AsIGJ1dCBBbHRlcmE/IExldCBtZSBjb25maXJtLiBMb29raW5nIHRocm91Z2ggdGhlIFFFTVUgaGFyZHdhcmUgZmlsZXMsIGl0IGRvZXNuJ3Qgc2VlbSB0byBlbXVsYXRlIHRoZSBzYW1lIE1ESU8gYnVzIG9yIFBDUyBmb3IgdGhlc2UgZGV2aWNlcyBpbiBhIHdheSB0aGF0IHdvdWxkIHRyaWdnZXIgYGx5bnhfcGNzX2NvbmZpZ191c3hnbWlpYC5cblxuRnVydGhlcm1vcmUsIGBseW54X3Bjc19jb25maWdfdXN4Z21paWAgaXMgb25seSBjYWxsZWQgd2hlbiB0aGUgYGlmbW9kZWAgaXMgYFBIWV9JTlRFUkZBQ0VfTU9ERV9VU1hHTUlJYCBvciBgUEhZX0lOVEVSRkFDRV9NT0RFXzEwR19RWEdNSUlgLiBUaGlzIHJlcXVpcmVzIGEgdmVyeSBzcGVjaWZpYyBoYXJkd2FyZSBjb25maWd1cmF0aW9uIHZpYSB0aGUgZGV2aWNlIHRyZWUgb3IgQUNQSSB0byBzZXQgdGhlIFBIWSBpbnRlcmZhY2UgbW9kZSB0byBVU1hHTUlJLiBUaGlzIGNvbmZpZ3VyYXRpb24gaXMgbm90IHNvbWV0aGluZyB3ZSdkIGdldCBpbiBhIGdlbmVyaWMgZnV6emluZyBlbnZpcm9ubWVudCBsaWtlIHN5emthbGxlciwgZXNwZWNpYWxseSBvbiB4ODZfNjQgb3IgYXJtNjQgdmlydC4gV2UgZG9uJ3QgaGF2ZSB0aGVzZSBzcGVjaWZpYyBwbGF0Zm9ybSBkZXZpY2VzIG9yIFBDSSBkZXZpY2VzIChsaWtlIEVORVRDKSBwcmVzZW50IGluIHRoYXQgc2V0dXAuXG5cbldhaXQsIEVORVRDICppcyogYSBQQ0kgZGV2aWNlLiBDb3VsZCB3ZSBwcm9iZSB0aGlzIHRocm91Z2ggUENJIGZ1enppbmc/IElmIHN5emthbGxlciBpcyB1c2luZyBgdmhjaWAgb3IgYHBjaWAgZnV6emluZywgaXQgY291bGQgcG90ZW50aWFsbHkgaW5qZWN0IFBDSSBkZXZpY2VzLiBIb3dldmVyLCBFTkVUQyB3b3VsZCByZXF1aXJlIHNwZWNpZmljIFBDSSB2ZW5kb3IvZGV2aWNlIElEcy4gVGhlIG5leHQgc3RlcCBpcyB0byBjaGVjayBgZW5ldGNfcGYuY2AgYW5kIGNvbmZpcm0gdGhvc2UgUENJIElEcy5cblxuXG4iLCJJbnB1dFRva2VucyI6ODYyMCwiT3V0cHV0VG9rZW5zIjo0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk1NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQxNzo0Nzo1NS41OTIxMTM5ODhaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0ODU0NTM2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBjaV9kZXZpY2VfaWQgZW5ldGNfcGZfaWRfdGFibGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYz05NDg9REVDTEFSRV9QQ0lfRklYVVBfRklOQUwoUENJX1ZFTkRPUl9JRF9GUkVFU0NBTEUsIEVORVRDX0RFVl9JRF9QRixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jLTk1MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYzo5NTE6c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIGVuZXRjX3BmX2lkX3RhYmxlW10gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmMtOTUyLVxcdHsgUENJX0RFVklDRShQQ0lfVkVORE9SX0lEX0ZSRUVTQ0FMRSwgRU5FVENfREVWX0lEX1BGKSB9LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQxNzo0Nzo1NS42MzY5NzIxNTNaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTczMDAwNjg2MTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBGZWFzaWJpbGl0eSBBc3Nlc3NtZW50KipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzLCBjb3VsZCBzeXprYWxsZXIncyBQQ0kgZnV6emVyIHRyaWdnZXIgdGhpcz8gSXQgZGVwZW5kcyBpZiBpdCdzIGluIHRoZSBQQ0kgSUQgdGFibGUsIGJ1dCBgbHlueF9wY3NfY29uZmlnX3VzeGdtaWlgIGlzIGFuIE1ESU8gYnVzIG9wZXJhdGlvbiwgd2hpY2ggaXMgYSBiaXQgZGlmZmVyZW50LiBTbywgZG9lcyBgZW5ldGNfcGZgICpjcmVhdGUqIHRoZSBQQ1MgYW5kIHRoZW4gY2FsbHMgYHBoeWxpbmtfc3RhcnRgLCB3aGljaCBpbiB0dXJuIGNhbGxzIGBseW54X3Bjc19jb25maWdgPyBZZXAsIGBlbmV0Y19wZmAgdXNlcyBwaHlsaW5rLCBzbyB0aGF0IHBhcnQgbWFrZXMgc2Vuc2UuXG5cbkJ1dCBob2xkIG9uLCBsZXQgbWUgbG9vayBhdCB0aGUgcGF0Y2ggaXRzZWxmLiBJdCdzIHJlYWxseSBqdXN0IGFkZGluZyBzb21lIE1ESU8gd3JpdGVzIHdpdGhpbiBgbHlueF9wY3NfY29uZmlnX3VzeGdtaWlgLiBJcyB0aGlzIGV2ZW4gd29ydGggc3BlbmRpbmcgdGltZSBvbj8gTG9va2luZyBhdCB0aGUgY29kZSwgaXQncyBhIGJ1bmNoIG9mIHJlZ2lzdGVyIHdyaXRlczogY29uZmlndXJpbmcgZGV2aWNlIGFiaWxpdHksIGF1dG9uZWdvdGlhdGlvbiBhbmQgbGluayB0aW1lcnMuIEVzc2VudGlhbGx5LCBoYXJkd2FyZSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZXMuXG5cbk5vdywgZXZlbiBpZiB0aGUgUENJIGRldmljZSAqY291bGQqIGJlIGZ1enplZCwgdGhlIGNvcmUgbG9naWMgaGVyZSBpcyBzaW1wbGUsIGRldGVybWluaXN0aWMgTURJTyB3cml0ZXMuIE5vIGNvbXBsZXggc3RhdGUgbWFjaGluZXMsIG5vIHRyaWNreSBtZW1vcnkgbWFuYWdlbWVudCwgbm8gb2J2aW91cyBzb2Z0d2FyZSBidWdzIGp1c3QgZnJvbSBsb29raW5nIGF0IHRoZSBjb2RlLCBqdXN0IGEgc2VxdWVuY2Ugb2YgaGFyZHdhcmUgcmVnaXN0ZXIgd3JpdGVzLiBJdCdzIHByZXR0eSBzcGVjaWZpYyB0byB0aGUgaGFyZHdhcmUgdG9vLiBXZSBhcmUgZGVhbGluZyB3aXRoIGEgVVNYR01JSSBpbnRlcmZhY2UgbW9kZSwgd2hpY2ggaXMgbGlrZWx5IHNldCB1cCBieSBkZXZpY2UgdHJlZSBvciBBQ1BJLiBHZW5lcmljIFBDSSBmdXp6aW5nIHdvbid0IGJlIGFibGUgdG8gdHJpZ2dlciB0aGlzIHVubGVzcyBpdCBjYW4gc29tZWhvdyBwcm92aWRlIGEgZmFrZSBkZXZpY2UgdHJlZSwgd2hpY2ggaXMgZGlmZmljdWx0LlxuXG5Db25zaWRlcmluZyB0aGUgcnVsZXMsIGFuZCBteSBleHBlcmllbmNlLCB0aGlzIGZhbGxzIHNxdWFyZWx5IGludG8gdGhlIGNhdGVnb3J5IG9mIFwidmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVVcIi4gVGhpcyBpcyBhbiBOWFAgTHlueCBQQ1MgZHJpdmVyLCB1c2VkIHdpdGggTlhQIGFuZCBBbHRlcmEgaGFyZHdhcmUuIFdlJ3JlIGRlYWxpbmcgd2l0aCBzcGVjaWZpYyBoYXJkd2FyZSBvciBkZXZpY2UgdHJlZSBjb25maWd1cmF0aW9ucywgbm90IHNvbWV0aGluZyByZWFkaWx5IGFjY2Vzc2libGUgaW4gc3RhbmRhcmQgUUVNVS5cblxuVGhlcmVmb3JlLCBnaXZlbiB0aGUgY2hhcmFjdGVyaXN0aWNzIG9mIHRoaXMgcGF0Y2ggYW5kIHRoZSByZXF1aXJlbWVudHMsIHRoaXMgaXMgbm90IHdvcnRoIGZ1enppbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwNTM5LCJPdXRwdXRUb2tlbnMiOjExOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjkzNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQxNzo0ODoxMi45MzcwNDM4MjZaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDA2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IGFkZHMgYSBmZXcgTURJTyByZWdpc3RlciB3cml0ZXMgdG8gdGhlIGhhcmR3YXJlIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlIG9mIHRoZSBOWFAgTHlueCBQQ1MgZHJpdmVyIChwY3MtbHlueCkuIFRoaXMgZHJpdmVyIGlzIHVzZWQgYnkgdmVuZG9yLXNwZWNpZmljIGhhcmR3YXJlIChOWFAgRU5FVEMsIERQQUEsIEFsdGVyYSBUU0UpIHdoaWNoIGFyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudHMuIEZ1cnRoZXJtb3JlLCB0aGUgY2hhbmdlcyBhcmUgcHVyZWx5IGhhcmR3YXJlIGNvbmZpZ3VyYXRpb24gc2VxdWVuY2VzIHdpdGhvdXQgY29tcGxleCBzb2Z0d2FyZSBsb2dpYywgbWFraW5nIHRoZW0gdW5zdWl0YWJsZSBhbmQgdW5yZWFjaGFibGUgZm9yIGdlbmVyaWMga2VybmVsIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IGFkZHMgYSBmZXcgTURJTyByZWdpc3RlciB3cml0ZXMgdG8gdGhlIGhhcmR3YXJlIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlIG9mIHRoZSBOWFAgTHlueCBQQ1MgZHJpdmVyIChwY3MtbHlueCkuIFRoaXMgZHJpdmVyIGlzIHVzZWQgYnkgdmVuZG9yLXNwZWNpZmljIGhhcmR3YXJlIChOWFAgRU5FVEMsIERQQUEsIEFsdGVyYSBUU0UpIHdoaWNoIGFyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudHMuIEZ1cnRoZXJtb3JlLCB0aGUgY2hhbmdlcyBhcmUgcHVyZWx5IGhhcmR3YXJlIGNvbmZpZ3VyYXRpb24gc2VxdWVuY2VzIHdpdGhvdXQgY29tcGxleCBzb2Z0d2FyZSBsb2dpYywgbWFraW5nIHRoZW0gdW5zdWl0YWJsZSBhbmQgdW5yZWFjaGFibGUgZm9yIGdlbmVyaWMga2VybmVsIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQxNzo0ODoxMi45MzcwNzExMzdaIiwiU2VxIjoxNywiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2OTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow8q52f[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-20 17:46:01 +0000 UTC FinishedAt: 2026-08-20 17:48:13 +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+CgkJCTx0ZD4yMDI2LzA4LzIwIDE3OjQ3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBhZGRzIGEgZmV3IE1ESU8gcmVnaXN0ZXIgd3JpdGVzIHRvIHRoZSBoYXJkd2FyZSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZSBvZiB0aGUgTlhQIEx5bnggUENTIGRyaXZlciAocGNzLWx5bngpLiBUaGlzIGRyaXZlciBpcyB1c2VkIGJ5IHZlbmRvci1zcGVjaWZpYyBoYXJkd2FyZSAoTlhQIEVORVRDLCBEUEFBLCBBbHRlcmEgVFNFKSB3aGljaCBhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnRzLiBGdXJ0aGVybW9yZSwgdGhlIGNoYW5nZXMgYXJlIHB1cmVseSBoYXJkd2FyZSBjb25maWd1cmF0aW9uIHNlcXVlbmNlcyB3aXRob3V0IGNvbXBsZXggc29mdHdhcmUgbG9naWMsIG1ha2luZyB0aGVtIHVuc3VpdGFibGUgYW5kIHVucmVhY2hhYmxlIGZvciBnZW5lcmljIGtlcm5lbCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAxNzo0NzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDNmOGRhZjgzODg4YTNhMTg2NDAzNTZkYTg4ZTdhMjU0MDE5MWVmNWJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEF1ZyAyMCAxNzo0NzoxMSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguYyBiL2RyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jXG5pbmRleCBhOTIwODE1NjBlNjQxLi4zMzY1NTA3OWZlNTFkIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvcGNzL3Bjcy1seW54LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jXG5AQCAtMjAsNiAmIzQzOzIwLDkgQEBcbiAjZGVmaW5lIElGX01PREVfU1BFRURfTVNLXHRcdEdFTk1BU0soMywgMilcbiAjZGVmaW5lIElGX01PREVfSEFMRl9EVVBMRVhcdFx0QklUKDQpXG4gXG4mIzQzOyNkZWZpbmUgRU5FVENfUENTX1JFUExfTElOS19USU1FUl8xX0RFRlx0MHgwMDAzXG4mIzQzOyNkZWZpbmUgRU5FVENfUENTX1JFUExfTElOS19USU1FUl8yX0RFRlx0MHgwNmEwXG4mIzQzO1xuIHN0cnVjdCBseW54X3BjcyB7XG4gXHRzdHJ1Y3QgcGh5bGlua19wY3MgcGNzO1xuIFx0c3RydWN0IG1kaW9fZGV2aWNlICptZGlvO1xuQEAgLTE1NCw2ICYjNDM7MTU3LDcgQEAgc3RhdGljIGludCBseW54X3Bjc19jb25maWdfdXN4Z21paShzdHJ1Y3QgbWRpb19kZXZpY2UgKnBjcyxcbiBcdFx0XHRcdCAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgKmFkdmVydGlzaW5nLFxuIFx0XHRcdFx0ICAgdW5zaWduZWQgaW50IG5lZ19tb2RlKVxuIHtcbiYjNDM7XHRpbnQgcmV0O1xuIFx0c3RydWN0IG1paV9idXMgKmJ1cyA9IHBjcy1cdTAwM2VidXM7XG4gXHRpbnQgYWRkciA9IHBjcy1cdTAwM2VhZGRyO1xuIFxuQEAgLTE2NCwxMCAmIzQzOzE2OCwzOCBAQCBzdGF0aWMgaW50IGx5bnhfcGNzX2NvbmZpZ191c3hnbWlpKHN0cnVjdCBtZGlvX2RldmljZSAqcGNzLFxuIFx0fVxuIFxuIFx0LyogQ29uZmlndXJlIGRldmljZSBhYmlsaXR5IGZvciB0aGUgVVNYR01JSSBSZXBsaWNhdG9yICovXG4tXHRyZXR1cm4gbWRpb2J1c19jNDVfd3JpdGUoYnVzLCBhZGRyLCBNRElPX01NRF9WRU5EMiwgTUlJX0FEVkVSVElTRSxcbi1cdFx0XHRcdCBNRElPX1VTWEdNSUlfMTBHIHwgTURJT19VU1hHTUlJX0xJTksgfFxuLVx0XHRcdFx0IE1ESU9fVVNYR01JSV9GVUxMX0RVUExFWCB8XG4tXHRcdFx0XHQgQURWRVJUSVNFX1NHTUlJIHwgQURWRVJUSVNFX0xQQUNLKTtcbiYjNDM7XHRyZXQgPSBtZGlvYnVzX2M0NV93cml0ZShidXMsIGFkZHIsIE1ESU9fTU1EX1ZFTkQyLCBNSUlfQURWRVJUSVNFLFxuJiM0MztcdFx0XHRcdE1ESU9fVVNYR01JSV8xMEcgfCBNRElPX1VTWEdNSUlfTElOSyB8XG4mIzQzO1x0XHRcdFx0TURJT19VU1hHTUlJX0ZVTExfRFVQTEVYIHxcbiYjNDM7XHRcdFx0XHRBRFZFUlRJU0VfU0dNSUkgfCBBRFZFUlRJU0VfTFBBQ0spO1xuJiM0MztcdGlmIChyZXQgXHUwMDNjIDApIHtcbiYjNDM7XHRcdGRldl9lcnIoXHUwMDI2cGNzLVx1MDAzZWRldiwgXCYjMzQ7Y291bGQgbm90IHNldCBVU1hHTUlJIHJlcGxpY2F0b3IgY29uZmlnXFxuXCYjMzQ7KTtcbiYjNDM7XHRcdHJldHVybiByZXQ7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHQvKiBDb25maWd1cmUgYXV0b25lZ290aWF0aW9uICovXG4mIzQzO1x0cmV0ID0gbWRpb2J1c19jNDVfd3JpdGUoYnVzLCBhZGRyLCBNRElPX01NRF9WRU5EMiwgTUlJX0JNQ1IsXG4mIzQzO1x0XHRcdFx0Qk1DUl9SRVNFVCB8IEJNQ1JfQU5FTkFCTEUgfCBCTUNSX0FOUkVTVEFSVCk7XG4mIzQzO1x0aWYgKHJldCBcdTAwM2MgMCkge1xuJiM0MztcdFx0ZGV2X2VycihcdTAwMjZwY3MtXHUwMDNlZGV2LCBcJiMzNDtjb3VsZCBub3Qgc2V0IFVTWEdNSUkgcmVwbGljYXRvciBjb250cm9sIGNvbmZpZ1xcblwmIzM0Oyk7XG4mIzQzO1x0XHRyZXR1cm4gcmV0O1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0cmV0ID0gbWRpb2J1c19jNDVfd3JpdGUoYnVzLCBhZGRyLCBNRElPX01NRF9WRU5EMiwgTElOS19USU1FUl9MTyxcbiYjNDM7XHRcdFx0XHRFTkVUQ19QQ1NfUkVQTF9MSU5LX1RJTUVSXzFfREVGKTtcbiYjNDM7XHRpZiAocmV0IFx1MDAzYyAwKSB7XG4mIzQzO1x0XHRkZXZfZXJyKFx1MDAyNnBjcy1cdTAwM2VkZXYsIFwmIzM0O2NvdWxkIG5vdCBzZXQgVVNYR01JSSBMaW5rIFRpbWVyIDFcXG5cJiMzNDspO1xuJiM0MztcdFx0cmV0dXJuIHJldDtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHJldCA9IG1kaW9idXNfYzQ1X3dyaXRlKGJ1cywgYWRkciwgTURJT19NTURfVkVORDIsIExJTktfVElNRVJfSEksXG4mIzQzO1x0XHRcdFx0RU5FVENfUENTX1JFUExfTElOS19USU1FUl8yX0RFRik7XG4mIzQzO1x0aWYgKHJldCBcdTAwM2MgMCkge1xuJiM0MztcdFx0ZGV2X2VycihcdTAwMjZwY3MtXHUwMDNlZGV2LCBcJiMzNDtjb3VsZCBub3Qgc2V0IFVTWEdNSUkgTGluayBUaW1lciAyXFxuXCYjMzQ7KTtcbiYjNDM7XHRcdHJldHVybiByZXQ7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRyZXR1cm4gcmV0O1xuIH1cbiBcbiBzdGF0aWMgaW50IGx5bnhfcGNzX2NvbmZpZyhzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcywgdW5zaWduZWQgaW50IG5lZ19tb2RlLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIwIDE3OjQ3PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IGFkZHMgYSBmZXcgTURJTyByZWdpc3RlciB3cml0ZXMgdG8gdGhlIGhhcmR3YXJlIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlIG9mIHRoZSBOWFAgTHlueCBQQ1MgZHJpdmVyIChwY3MtbHlueCkuIFRoaXMgZHJpdmVyIGlzIHVzZWQgYnkgdmVuZG9yLXNwZWNpZmljIGhhcmR3YXJlIChOWFAgRU5FVEMsIERQQUEsIEFsdGVyYSBUU0UpIHdoaWNoIGFyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudHMuIEZ1cnRoZXJtb3JlLCB0aGUgY2hhbmdlcyBhcmUgcHVyZWx5IGhhcmR3YXJlIGNvbmZpZ3VyYXRpb24gc2VxdWVuY2VzIHdpdGhvdXQgY29tcGxleCBzb2Z0d2FyZSBsb2dpYywgbWFraW5nIHRoZW0gdW5zdWl0YWJsZSBhbmQgdW5yZWFjaGFibGUgZm9yIGdlbmVyaWMga2VybmVsIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgM2Y4ZGFmODM4ODhhM2ExODY0MDM1NmRhODhlN2EyNTQwMTkxZWY1YgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgQXVnIDIwIDE3OjQ3OjExIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGNzL3Bjcy1seW54LmMgYi9kcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguYwppbmRleCBhOTIwODE1NjBlNjQxLi4zMzY1NTA3OWZlNTFkIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguYwpAQCAtMjAsNiAmIzQzOzIwLDkgQEAKICNkZWZpbmUgSUZfTU9ERV9TUEVFRF9NU0sJCUdFTk1BU0soMywgMikKICNkZWZpbmUgSUZfTU9ERV9IQUxGX0RVUExFWAkJQklUKDQpCiAKJiM0MzsjZGVmaW5lIEVORVRDX1BDU19SRVBMX0xJTktfVElNRVJfMV9ERUYJMHgwMDAzCiYjNDM7I2RlZmluZSBFTkVUQ19QQ1NfUkVQTF9MSU5LX1RJTUVSXzJfREVGCTB4MDZhMAomIzQzOwogc3RydWN0IGx5bnhfcGNzIHsKIAlzdHJ1Y3QgcGh5bGlua19wY3MgcGNzOwogCXN0cnVjdCBtZGlvX2RldmljZSAqbWRpbzsKQEAgLTE1NCw2ICYjNDM7MTU3LDcgQEAgc3RhdGljIGludCBseW54X3Bjc19jb25maWdfdXN4Z21paShzdHJ1Y3QgbWRpb19kZXZpY2UgKnBjcywKIAkJCQkgICBjb25zdCB1bnNpZ25lZCBsb25nICphZHZlcnRpc2luZywKIAkJCQkgICB1bnNpZ25lZCBpbnQgbmVnX21vZGUpCiB7CiYjNDM7CWludCByZXQ7CiAJc3RydWN0IG1paV9idXMgKmJ1cyA9IHBjcy0mZ3Q7YnVzOwogCWludCBhZGRyID0gcGNzLSZndDthZGRyOwogCkBAIC0xNjQsMTAgJiM0MzsxNjgsMzggQEAgc3RhdGljIGludCBseW54X3Bjc19jb25maWdfdXN4Z21paShzdHJ1Y3QgbWRpb19kZXZpY2UgKnBjcywKIAl9CiAKIAkvKiBDb25maWd1cmUgZGV2aWNlIGFiaWxpdHkgZm9yIHRoZSBVU1hHTUlJIFJlcGxpY2F0b3IgKi8KLQlyZXR1cm4gbWRpb2J1c19jNDVfd3JpdGUoYnVzLCBhZGRyLCBNRElPX01NRF9WRU5EMiwgTUlJX0FEVkVSVElTRSwKLQkJCQkgTURJT19VU1hHTUlJXzEwRyB8IE1ESU9fVVNYR01JSV9MSU5LIHwKLQkJCQkgTURJT19VU1hHTUlJX0ZVTExfRFVQTEVYIHwKLQkJCQkgQURWRVJUSVNFX1NHTUlJIHwgQURWRVJUSVNFX0xQQUNLKTsKJiM0MzsJcmV0ID0gbWRpb2J1c19jNDVfd3JpdGUoYnVzLCBhZGRyLCBNRElPX01NRF9WRU5EMiwgTUlJX0FEVkVSVElTRSwKJiM0MzsJCQkJTURJT19VU1hHTUlJXzEwRyB8IE1ESU9fVVNYR01JSV9MSU5LIHwKJiM0MzsJCQkJTURJT19VU1hHTUlJX0ZVTExfRFVQTEVYIHwKJiM0MzsJCQkJQURWRVJUSVNFX1NHTUlJIHwgQURWRVJUSVNFX0xQQUNLKTsKJiM0MzsJaWYgKHJldCAmbHQ7IDApIHsKJiM0MzsJCWRldl9lcnIoJmFtcDtwY3MtJmd0O2RldiwgJiMzNDtjb3VsZCBub3Qgc2V0IFVTWEdNSUkgcmVwbGljYXRvciBjb25maWdcbiYjMzQ7KTsKJiM0MzsJCXJldHVybiByZXQ7CiYjNDM7CX0KJiM0MzsKJiM0MzsJLyogQ29uZmlndXJlIGF1dG9uZWdvdGlhdGlvbiAqLwomIzQzOwlyZXQgPSBtZGlvYnVzX2M0NV93cml0ZShidXMsIGFkZHIsIE1ESU9fTU1EX1ZFTkQyLCBNSUlfQk1DUiwKJiM0MzsJCQkJQk1DUl9SRVNFVCB8IEJNQ1JfQU5FTkFCTEUgfCBCTUNSX0FOUkVTVEFSVCk7CiYjNDM7CWlmIChyZXQgJmx0OyAwKSB7CiYjNDM7CQlkZXZfZXJyKCZhbXA7cGNzLSZndDtkZXYsICYjMzQ7Y291bGQgbm90IHNldCBVU1hHTUlJIHJlcGxpY2F0b3IgY29udHJvbCBjb25maWdcbiYjMzQ7KTsKJiM0MzsJCXJldHVybiByZXQ7CiYjNDM7CX0KJiM0MzsKJiM0MzsJcmV0ID0gbWRpb2J1c19jNDVfd3JpdGUoYnVzLCBhZGRyLCBNRElPX01NRF9WRU5EMiwgTElOS19USU1FUl9MTywKJiM0MzsJCQkJRU5FVENfUENTX1JFUExfTElOS19USU1FUl8xX0RFRik7CiYjNDM7CWlmIChyZXQgJmx0OyAwKSB7CiYjNDM7CQlkZXZfZXJyKCZhbXA7cGNzLSZndDtkZXYsICYjMzQ7Y291bGQgbm90IHNldCBVU1hHTUlJIExpbmsgVGltZXIgMVxuJiMzNDspOwomIzQzOwkJcmV0dXJuIHJldDsKJiM0MzsJfQomIzQzOwomIzQzOwlyZXQgPSBtZGlvYnVzX2M0NV93cml0ZShidXMsIGFkZHIsIE1ESU9fTU1EX1ZFTkQyLCBMSU5LX1RJTUVSX0hJLAomIzQzOwkJCQlFTkVUQ19QQ1NfUkVQTF9MSU5LX1RJTUVSXzJfREVGKTsKJiM0MzsJaWYgKHJldCAmbHQ7IDApIHsKJiM0MzsJCWRldl9lcnIoJmFtcDtwY3MtJmd0O2RldiwgJiMzNDtjb3VsZCBub3Qgc2V0IFVTWEdNSUkgTGluayBUaW1lciAyXG4mIzM0Oyk7CiYjNDM7CQlyZXR1cm4gcmV0OwomIzQzOwl9CiYjNDM7CiYjNDM7CXJldHVybiByZXQ7CiB9CiAKIHN0YXRpYyBpbnQgbHlueF9wY3NfY29uZmlnKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzLCB1bnNpZ25lZCBpbnQgbmVnX21vZGUsCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIwIDE3OjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3NDgKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiA4OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOgoKKipBbmFseXppbmcgYSBQQ1MtTHlueCBEcml2ZXIgUGF0Y2gqKgoKQWxyaWdodCwgc28gSSYjMzk7bSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCYjMzk7cyBoaXQgdGhlIG5ldHdvcmsgZHJpdmVycywgc3BlY2lmaWNhbGx5IG1vZGlmeWluZyB0aGUgYGRyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jYCBmaWxlLiBUaGUgY29yZSBvZiB0aGUgY2hhbmdlIHNlZW1zIHRvIGJlIGluIHRoZSBgbHlueF9wY3NfY29uZmlnX3VzeGdtaWlgIGZ1bmN0aW9uLiBGcm9tIGEgcXVpY2sgZ2xhbmNlLCBpdCBsb29rcyBsaWtlIGl0JiMzOTtzIGFkZGluZyBzb21lIE1ESU8gYnVzIGNvbmZpZ3VyYXRpb24gd3JpdGVzLCBsaWtlbHkgZm9yIGEgVVNYR01JSSByZXBsaWNhdG9yLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsICp3YWl0LCBpcyB0aGlzIGhhcmR3YXJlLXNwZWNpZmljPyogVGhlICYjMzQ7cGNzLWx5bngmIzM0OyBuYW1lIHN0cm9uZ2x5IHN1Z2dlc3RzIGl0JiMzOTtzIHRpZWQgdG8gYSBwYXJ0aWN1bGFyIHBpZWNlIG9mIGhhcmR3YXJlOiBhIEx5bnggUENTIGRyaXZlci4gSSBzaG91bGQgcmVhbGx5IGNvbmZpcm0gdGhhdCwgdGhvdWdoOyBsZXQmIzM5O3MgZGlnIGEgYml0IGRlZXBlciBhbmQgc2VlIHdoYXQgJiMzNDtseW54JiMzNDsgYWN0dWFsbHkgcmVmZXJzIHRvLiBCZXR0ZXIgc2FmZSB0aGFuIHNvcnJ5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIwIDE3OjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2x5bnhfcGNzX2NvbmZpZ191c3hnbWlpJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGNzL3Bjcy1seW54LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGNzL3Bjcy1seW54LmM9MTE3PXN0YXRpYyBpbnQgbHlueF9wY3NfY29uZmlnX2dpZ2Eoc3RydWN0IG1kaW9fZGV2aWNlICpwY3MsXG4tLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1seW54LmMtMTU0LVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1seW54LmM6MTU1OnN0YXRpYyBpbnQgbHlueF9wY3NfY29uZmlnX3VzeGdtaWkoc3RydWN0IG1kaW9fZGV2aWNlICpwY3MsXG5kcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguYy0xNTYtXHRcdFx0XHQgICBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlLFxuLS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jPTIwNT1zdGF0aWMgaW50IGx5bnhfcGNzX2NvbmZpZyhzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcywgdW5zaWduZWQgaW50IG5lZ19tb2RlLFxuLS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jLTIxOS1cdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFXzEwR19RWEdNSUk6XG5kcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguYzoyMjA6XHRcdHJldHVybiBseW54X3Bjc19jb25maWdfdXN4Z21paShseW54LVx1MDAzZW1kaW8sIGlmbW9kZSwgYWR2ZXJ0aXNpbmcsXG5kcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguYy0yMjEtXHRcdFx0XHRcdCAgICAgICBuZWdfbW9kZSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjAgMTc6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzM0NAoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDYzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgdGhlIGBseW54X3Bjc19jb25maWdgIENhbGwqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW4uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBmaWd1cmUgb3V0IHdoZXJlIHRoZSBgbHlueF9wY3NfY29uZmlnYCBmdW5jdGlvbiBpcyBiZWluZyBjYWxsZWQsIGJlY2F1c2UgaXQmIzM5O3MgYXNzb2NpYXRlZCB3aXRoIGBwaHlsaW5rX3Bjc2AsIHNvIEkga25vdyB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGEgcGh5c2ljYWwgbGF5ZXIgY29udHJvbCBzeXN0ZW0uIE5leHQsIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIHRoaXMgc3BlY2lmaWMgZHJpdmVyIGlzIGV2ZW4gYWNjZXNzaWJsZSBpbiBhIFFFTVUgZW52aXJvbm1lbnQuIFRoYXQmIzM5O3MgYSBjcml0aWNhbCBwaWVjZSBvZiBpbmZvcm1hdGlvbi4gVG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBkcml2ZXImIzM5O3MgY29uZmlndXJhdGlvbiBhbmQgYnVpbGQgcHJvY2VzcywgSSYjMzk7bGwgc3RhcnQgYnkgY2hlY2tpbmcgdGhlIEtjb25maWcgYW5kIE1ha2VmaWxlIGluIHRoZSBgZHJpdmVycy9uZXQvcGNzL2AgZGlyZWN0b3J5LiBUaGF0IHNob3VsZCBnaXZlIG1lIHRoZSBsb3dkb3duIG9uIHRoZSBidWlsZCBvcHRpb25zIGFuZCBkZXBlbmRlbmNpZXMgZm9yIHRoaXMgcGFydGljdWxhciBQQ1MgY29tcG9uZW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIwIDE3OjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Bjcy1seW54JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGNzLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9wY3MvTWFrZWZpbGU9Nz1vYmotJChDT05GSUdfUENTX1hQQ1MpXHRcdCYjNDM7PSBwY3NfeHBjcy5vXG5kcml2ZXJzL25ldC9wY3MvTWFrZWZpbGU6ODpvYmotJChDT05GSUdfUENTX0xZTlgpXHRcdCYjNDM7PSBwY3MtbHlueC5vXG5kcml2ZXJzL25ldC9wY3MvTWFrZWZpbGUtOS1vYmotJChDT05GSUdfUENTX01US19MWU5YSSlcdCYjNDM7PSBwY3MtbXRrLWx5bnhpLm9cbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguYy03LSNpbmNsdWRlIFx1MDAzY2xpbnV4L3BoeWxpbmsuaFx1MDAzZVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1seW54LmM6ODojaW5jbHVkZSBcdTAwM2NsaW51eC9wY3MtbHlueC5oXHUwMDNlXG5kcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguYy05LSNpbmNsdWRlIFx1MDAzY2xpbnV4L3Byb3BlcnR5LmhcdTAwM2VcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAxNzo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNzc4CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipEaXZpbmcgaW50byB0aGUgTmV0d29yayBEcml2ZXIgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGlzIG5ldHdvcmsgZHJpdmVyLiBUaGUgc3RhcnRpbmcgcG9pbnQsIGFzIGFsd2F5cyB3aXRoIHRoZSBrZXJuZWwsIGlzIHRoZSBgS2NvbmZpZ2AgZmlsZS4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gY2hlY2sgYGRyaXZlcnMvbmV0L3Bjcy9LY29uZmlnYC4gVGhpcyBmaWxlIHNob3VsZCBjb250YWluIGFsbCB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBzeW1ib2xzIOKAkyB0aGUgdGhpbmdzIHRoYXQgZGVmaW5lIHdoYXQgZmVhdHVyZXMgYXJlIGVuYWJsZWQsIHdoYXQgaGFyZHdhcmUgaXMgc3VwcG9ydGVkLCBhbmQgc28gb24uIE15IGluaXRpYWwgZ29hbCBpcyB0byBnZXQgYSBiaXJkJiMzOTtzLWV5ZSB2aWV3IG9mIGFsbCB0aGUgY29uZmlndXJhYmxlIGVsZW1lbnRzLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciB0aGluZ3MgbGlrZSB3aGV0aGVyIHNwZWNpZmljIGhhcmR3YXJlIGNoaXBzZXRzIGFyZSBzdXBwb3J0ZWQsIHZhcmlvdXMgcHJvdG9jb2wgb3B0aW9ucyAoZS5nLiwgVkxBTiwgUW9TKSwgYW5kIGFueSByZWxldmFudCBkZWJ1Z2dpbmcgb3IgcGVyZm9ybWFuY2UgdHVuaW5nIGtub2JzLiBUaGlzIEtjb25maWcgZmlsZSBpcyB0aGUgY3JpdGljYWwgZW50cnkgcG9pbnQgdG8gdW5kZXJzdGFuZGluZyAqaG93KiB0aGlzIGRyaXZlciB3b3JrcyBpbiB0ZXJtcyBvZiBob3cgaXQmIzM5O3MgYnVpbHQgYW5kIGNvbmZpZ3VyZWQuIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgYnkgcXVpY2tseSBzY2FubmluZyB0aGUgc3RydWN0dXJlLCBsb29raW5nIGZvciBsb2dpY2FsIGdyb3VwaW5ncyBhbmQgZGVwZW5kZW5jaWVzLiBNeSBmb2N1cyB3aWxsIGJlIG9uIHRoZSBhcmNoaXRlY3R1cmUsIGFueSBrZXkgY29uZmlndXJhdGlvbiBvcHRpb25zLCBhbmQgYW55dGhpbmcgdGhhdCBqdW1wcyBvdXQgYXMgdW51c3VhbCBvciBpbnRlcmVzdGluZy4gVW5kZXJzdGFuZGluZyB0aGlzIGZpbGUgaXMgZnVuZGFtZW50YWwuIEl0JiMzOTtzIHRoZSBmb3VuZGF0aW9uIHVwb24gd2hpY2ggdGhlIHJlc3Qgb2YgdGhlIGRyaXZlciYjMzk7cyBidWlsZCBwcm9jZXNzIGlzIGJ1aWx0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIwIDE3OjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBQQ1NfTFlOWCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3Bjcy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3Bjcy9LY29uZmlnPTg9Y29uZmlnIFBDU19YUENTXG4tLVxuZHJpdmVycy9uZXQvcGNzL0tjb25maWctMTQtXG5kcml2ZXJzL25ldC9wY3MvS2NvbmZpZzoxNTpjb25maWcgUENTX0xZTlhcbmRyaXZlcnMvbmV0L3Bjcy9LY29uZmlnLTE2LVx0dHJpc3RhdGVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAxNzo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MTU3CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgaW4gdGhlIGZpcnN0IHBlcnNvbiwgYXMgYW4gZXhwZXJ0IGluIHRoZSBmaWVsZCB3b3VsZCB0aGluayBpdDoKCioqRGVjb2RpbmcgdGhlIFRyaXN0YXRlJiMzOTtzIFNlbGVjdG9yKioKCkFscmlnaHQsIHRoaXMgaXMgYSB0cmlzdGF0ZSwgYW5kIHRoZSBjcml0aWNhbCB0aGluZyBoZXJlIGlzIHRoYXQgaXQmIzM5O3MgKnVucHJvbXB0ZWQqLiBUaGF0IG1lYW5zIGl0cyBzdGF0ZSBpc24mIzM5O3QgZGlyZWN0bHkgY29udHJvbGxlZCBieSBhbnkgZXhwbGljaXQgdXNlciBvciBjb25maWd1cmF0aW9uIGlucHV0LiBJdCYjMzk7cyBiZWluZyBkcml2ZW4gYnkgc29tZXRoaW5nICpleHRlcm5hbCouIFNvLCBteSBpbW1lZGlhdGUgdGhvdWdodCBpczogSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGRyaXZlcnMgb3IgbW9kdWxlcyB0aGF0IGFyZSBhY3RpdmVseSAqc2VsZWN0aW5nKiB0aGlzIHBhcnRpY3VsYXIgdHJpc3RhdGUuIEluIHRoaXMgY2FzZSwgaXQgaXMgbmFtZWQgYFBDU19MWU5YYC4gSSBuZWVkIHRvIHRyYWNlIGJhY2sgZnJvbSB0aGF0IGlkZW50aWZpZXIgYW5kIHdvcmsgbXkgd2F5IHVwc3RyZWFtLiBVbmRlcnN0YW5kaW5nIHdoYXQmIzM5O3MgcHVsbGluZyB0aGUgdHJpZ2dlciBvbiBgUENTX0xZTlhgIGlzIGdvaW5nIHRvIGJlIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBzdGF0ZSBvZiB0aGlzIHN5c3RlbSwgYW5kIGhvdyB0aGF0IHNlbGVjdGlvbiBpcyBhZmZlY3RlZC4gVGhhdCYjMzk7cyB3aGVyZSBJIG5lZWQgdG8gZm9jdXMgbXkgZWZmb3J0cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjAgMTc6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2VsZWN0IFBDU19MWU5YJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvS2NvbmZpZz0zMj1jb25maWcgTkVUX0RTQV9NU0NDX0ZFTElYXG4tLVxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9LY29uZmlnLTQ0LVx0c2VsZWN0IEZTTF9FTkVUQ19NRElPXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L0tjb25maWc6NDU6XHRzZWxlY3QgUENTX0xZTlhcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvS2NvbmZpZy00Ni1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L0tjb25maWc9NTA9Y29uZmlnIE5FVF9EU0FfTVNDQ19TRVZJTExFXG4tLVxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9LY29uZmlnLTYwLVx0c2VsZWN0IE5FVF9EU0FfVEFHX09DRUxPVFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9LY29uZmlnOjYxOlx0c2VsZWN0IFBDU19MWU5YXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L0tjb25maWctNjItXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL0tjb25maWc9Mj1jb25maWcgQUxURVJBX1RTRVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsdGVyYS9LY29uZmlnLTctXHRzZWxlY3QgUEhZTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL0tjb25maWc6ODpcdHNlbGVjdCBQQ1NfTFlOWFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL0tjb25maWctOS1cdHNlbGVjdCBNRElPX1JFR01BUFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhL0tjb25maWc9Mj1tZW51Y29uZmlnIEZTTF9EUEFBX0VUSFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhL0tjb25maWctNS1cdHNlbGVjdCBQSFlMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYS9LY29uZmlnOjY6XHRzZWxlY3QgUENTX0xZTlhcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhL0tjb25maWctNy1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvS2NvbmZpZz0yPWNvbmZpZyBGU0xfRFBBQTJfRVRIXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL0tjb25maWctNS1cdHNlbGVjdCBQSFlMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvS2NvbmZpZzo2Olx0c2VsZWN0IFBDU19MWU5YXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvS2NvbmZpZy03LVx0c2VsZWN0IEZTTF9YR01BQ19NRElPXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL0tjb25maWc9MzM9Y29uZmlnIEZTTF9EUEFBMl9TV0lUQ0hcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvS2NvbmZpZy0zOC1cdHNlbGVjdCBQSFlMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvS2NvbmZpZzozOTpcdHNlbGVjdCBQQ1NfTFlOWFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL0tjb25maWctNDAtXHRzZWxlY3QgRlNMX1hHTUFDX01ESU9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvS2NvbmZpZz0zMD1jb25maWcgRlNMX0VORVRDXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL0tjb25maWctMzgtXHRzZWxlY3QgUEhZTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL0tjb25maWc6Mzk6XHRzZWxlY3QgUENTX0xZTlhcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9LY29uZmlnLTQwLVx0c2VsZWN0IERJTUxJQlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL0tjb25maWc9Mj1jb25maWcgRlNMX0ZNQU5cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9LY29uZmlnLTYtXHRzZWxlY3QgUEhZTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vS2NvbmZpZzo3Olx0c2VsZWN0IFBDU19MWU5YXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9LY29uZmlnLTgtXHRzZWxlY3QgQ1JDMzJcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTIwMz1jb25maWcgRFdNQUNfU09DRlBHQVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjA5LVx0c2VsZWN0IFJFR01BUF9NTUlPXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjIxMDpcdHNlbGVjdCBQQ1NfTFlOWFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yMTEtXHRoZWxwXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIwIDE3OjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUzODkKCQkJCQkJCW91dHB1dDogMjYKCQkJCQkJCXRob3VnaHRzOiA0OTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIEhhcmR3YXJlIERyaXZlciBSZWFjaGFiaWxpdHkgaW4gUUVNVSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCB0cnlpbmcgdG8gZmlndXJlIG91dCB3aGljaCBoYXJkd2FyZSBkcml2ZXJzIGFyZSBldmVuIHJlbGV2YW50IGZvciBteSB0ZXN0aW5nIGluIFFFTVUuIEkgc2VlIGEgYnVuY2ggbGlzdGVkOiBgTkVUX0RTQV9NU0NDX0ZFTElYYCwgYE5FVF9EU0FfTVNDQ19TRVZJTExFYCwgYEFMVEVSQV9UU0VgLCBgRlNMX0RQQUFfRVRIYCwgYEZTTF9EUEFBMl9FVEhgLCBgRlNMX0RQQUEyX1NXSVRDSGAsIGBGU0xfRU5FVENgLCBgRlNMX0ZNQU5gLCBhbmQgYERXTUFDX1NPQ0ZQR0FgLiBUaGUgcXVlc3Rpb24gaXMsIHdoaWNoIG9mIHRoZXNlIGFyZSBhY3R1YWxseSAqcmVhY2hhYmxlKiB3aGVuIEkmIzM5O20gcnVubmluZyBRRU1VPwoKYERXTUFDX1NPQ0ZQR0FgIGxvb2tzIGxpa2UgYSBwbGF0Zm9ybSBkcml2ZXIsIHNvIG1heWJlIHRoZXJlJiMzOTtzIGEgc3BlY2lmaWMgbWFjaGluZSB0eXBlIHRoYXQgY291bGQgZW5hYmxlIGl0LCBidXQgc3l6a2FsbGVyIHVzdWFsbHkgdXNlcyBgcTM1YCBvciBgdmlydGAgKGZvciBBUk02NCksIHNvIGl0JiMzOTtzIHByb2JhYmx5IG5vdCBhIGNvbW1vbiBjb25maWd1cmF0aW9uLiBgRlNMX0VORVRDYCBpcyBhIFBDSSBkcml2ZXIsIGFuZCBJIGhpZ2hseSBkb3VidCBRRU1VIGVtdWxhdGVzIEZyZWVzY2FsZSBFTkVUQywgdGhvdWdoIEkgc2hvdWxkIGRvdWJsZS1jaGVja+KApiBObywgUUVNVSBpcyB1c3VhbGx5IHZlcnkgc3BvdHR5IHdpdGggZW11bGF0aW5nIEVORVRDLiBBbmQgZm9yIHRoZSBvdGhlcnMsIGxpa2UgYEFMVEVSQV9UU0VgLCBJJiMzOTttIGd1ZXNzaW5nICYjMzQ7bm8mIzM0OyB0b28uIFNvLCBgRFdNQUNfU09DRlBHQWAgYW5kIGBORVRfRFNBX01TQ0NfRkVMSVhgIHdoaWNoIGlzIERTQSBzd2l0Y2gsIGVpdGhlciBwbGF0Zm9ybSBvciBQQ0ksIGlzIG91dC4KClRoZSByZWFsIHF1ZXN0aW9uIGlzIGFib3V0IGBwY3MtbHlueC5jYC4gQ2FuIGFueSBvZiB0aG9zZSB2aXJ0dWFsaXplZCBoYXJkd2FyZSBpbnN0YW5jZXMgKnJlYWNoKiBgcGNzLWx5bnguY2A/IEFoLCByaWdodCwgYHBoeWxpbmtfcGNzYCBpcyBhIGdlbmVyaWMgYWJzdHJhY3Rpb24uIENhbiBJIGluc3RhbnRpYXRlIGl0IHdpdGggYSBkdW1teSBkZXZpY2U/IE5vcGUsIGl0JiMzOTtzIGFjdHVhbGx5IGluc3RhbnRpYXRlZCBieSBzcGVjaWZpYyBNQUMgZHJpdmVycy4KClNvLCBpZiBub25lIG9mIHRob3NlIE1BQyBkcml2ZXJzIGFyZSBldmVuIGVtdWxhdGVkLCB0aGVuIHRoYXQgbWVhbnMgYGx5bnhfcGNzX2NvbmZpZ191c3hnbWlpYCBpcyB1bnJlYWNoYWJsZS4gQWxyaWdodCwgSSBuZWVkIHRvIGNoZWNrIGlmIHRoZXJlIGFyZSBhbnkgKm90aGVyKiB1c2VycyBvZiBgUENTX0xZTlhgIGJlY2F1c2UgaXQgZG9lc24mIzM5O3QgbG9vayBsaWtlbHkgdGhhdCB0aGUgb25lcyBsaXN0ZWQgaGVyZSB3aWxsIHJlYWNoIGl0LiBMZXQmIzM5O3Mgc2VlLi4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIwIDE3OjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2x5bnhfcGNzX2NyZWF0ZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvc2ZwLXBoeWxpbmsucnN0PTc0PXRoaXMgZG9jdW1lbnRhdGlvbi5cbi0tXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvc2ZwLXBoeWxpbmsucnN0LTMxMS1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9zZnAtcGh5bGluay5yc3Q6MzEyOiAgICAgICAgcHJpdi1cdTAwM2VwY3MgPSBseW54X3Bjc19jcmVhdGVfbWRpb2RldihidXMsIDApO1xuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3NmcC1waHlsaW5rLnJzdC0zMTMtXG4tLVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3NmcC1waHlsaW5rLnJzdC0zMTctXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvc2ZwLXBoeWxpbmsucnN0OjMxODogICAgICAgIHByaXYtXHUwMDNlcGNzID0gbHlueF9wY3NfY3JlYXRlX2Z3bm9kZShvZl9md25vZGVfaGFuZGxlKG5vZGUpKTtcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9zZnAtcGh5bGluay5yc3QtMzE5LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXhfdnNjOTk1OS5jPTk1Nz1zdGF0aWMgaW50IHZzYzk5NTlfbWRpb19idXNfYWxsb2Moc3RydWN0IG9jZWxvdCAqb2NlbG90KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXhfdnNjOTk1OS5jLTEwMzItXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4X3ZzYzk5NTkuYzoxMDMzOlx0XHRwaHlsaW5rX3BjcyA9IGx5bnhfcGNzX2NyZWF0ZV9tZGlvZGV2KGZlbGl4LVx1MDAzZWltZGlvLCBwb3J0KTtcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXhfdnNjOTk1OS5jLTEwMzQtXHRcdGlmIChJU19FUlIocGh5bGlua19wY3MpKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3Qvc2V2aWxsZV92c2M5OTUzLmM9ODc4PXN0YXRpYyBpbnQgdnNjOTk1M19tZGlvX2J1c19hbGxvYyhzdHJ1Y3Qgb2NlbG90ICpvY2Vsb3QpXG4tLVxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9zZXZpbGxlX3ZzYzk5NTMuYy05MjItXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L3NldmlsbGVfdnNjOTk1My5jOjkyMzpcdFx0cGh5bGlua19wY3MgPSBseW54X3Bjc19jcmVhdGVfbWRpb2RldihmZWxpeC1cdTAwM2VpbWRpbywgYWRkcik7XG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L3NldmlsbGVfdnNjOTk1My5jLTkyNC1cdFx0aWYgKElTX0VSUihwaHlsaW5rX3BjcykpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL2FsdGVyYV90c2VfbWFpbi5jPTExMjg9c3RhdGljIGludCBhbHRlcmFfdHNlX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL2FsdGVyYV90c2VfbWFpbi5jLTEzOTQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvYWx0ZXJhX3RzZV9tYWluLmM6MTM5NTpcdHByaXYtXHUwMDNlcGNzID0gbHlueF9wY3NfY3JlYXRlX21kaW9kZXYocGNzX2J1cywgMCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvYWx0ZXJhX3RzZV9tYWluLmMtMTM5Ni1cdGlmIChJU19FUlIocHJpdi1cdTAwM2VwY3MpKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLW1hYy5jPTQ0Nz1zdGF0aWMgaW50IGRwYWEyX3Bjc19jcmVhdGUoc3RydWN0IGRwYWEyX21hYyAqbWFjLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGFhMi1tYWMuYy00NjAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItbWFjLmM6NDYxOlx0cGNzID0gbHlueF9wY3NfY3JlYXRlX2Z3bm9kZShub2RlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGFhMi1tYWMuYy00NjItXHRmd25vZGVfaGFuZGxlX3B1dChub2RlKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItbWFjLmMtNDc1LVx0XHRuZXRkZXZfZXJyKG1hYy1cdTAwM2VuZXRfZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLW1hYy5jOjQ3NjpcdFx0XHQgICBcJiMzNDtseW54X3Bjc19jcmVhdGVfZndub2RlKCkgZmFpbGVkOiAlcGVcXG5cJiMzNDssIHBjcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItbWFjLmMtNDc3LVx0XHRyZXR1cm4gUFRSX0VSUihwY3MpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jPTM0PXN0YXRpYyBzdHJ1Y3QgcGh5bGlua19wY3MgKmVuZXRjX3BmX2NyZWF0ZV9wY3Moc3RydWN0IGVuZXRjX3BmICpwZixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYy0zNi17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYzozNzpcdHJldHVybiBseW54X3Bjc19jcmVhdGVfbWRpb2RldihidXMsIDApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmMtMzgtfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZtYW5fbWVtYWMuYz0xMTIyPXN0YXRpYyBzdHJ1Y3QgcGh5bGlua19wY3MgKm1lbWFjX3Bjc19jcmVhdGUoc3RydWN0IGRldmljZV9ub2RlICptYWNfbm9kZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9mbWFuX21lbWFjLmMtMTEzMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZtYW5fbWVtYWMuYzoxMTMyOlx0cGNzID0gbHlueF9wY3NfY3JlYXRlX2Z3bm9kZShvZl9md25vZGVfaGFuZGxlKG5vZGUpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZtYW5fbWVtYWMuYy0xMTMzLVx0b2Zfbm9kZV9wdXQobm9kZSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29jZnBnYS5jPTQ5Nj1zdGF0aWMgaW50IHNvY2ZwZ2FfZHdtYWNfcGNzX2luaXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvY2ZwZ2EuYy01MzEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb2NmcGdhLmM6NTMyOlx0cGNzID0gbHlueF9wY3NfY3JlYXRlX21kaW9kZXYocGNzX2J1cywgMCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb2NmcGdhLmMtNTMzLVx0aWYgKElTX0VSUihwY3MpKVxuLS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jPTMwOD1zdGF0aWMgY29uc3QgcGh5X2ludGVyZmFjZV90IGx5bnhfaW50ZXJmYWNlc1tdID0ge1xuLS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jLTMxNy1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jOjMxODpzdGF0aWMgc3RydWN0IHBoeWxpbmtfcGNzICpseW54X3Bjc19jcmVhdGUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvKVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1seW54LmMtMzE5LXtcbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguYy0zMzctXG5kcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguYzozMzg6c3RydWN0IHBoeWxpbmtfcGNzICpseW54X3Bjc19jcmVhdGVfbWRpb2RldihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkcilcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jLTMzOS17XG4tLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1seW54LmMtMzQ2LVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1seW54LmM6MzQ3Olx0cGNzID0gbHlueF9wY3NfY3JlYXRlKG1kaW8pO1xuZHJpdmVycy9uZXQvcGNzL3Bjcy1seW54LmMtMzQ4LVxuLS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jLTM1OC19XG5kcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguYzozNTk6RVhQT1JUX1NZTUJPTChseW54X3Bjc19jcmVhdGVfbWRpb2Rldik7XG5kcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguYy0zNjAtXG5kcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguYy0zNjEtLypcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jOjM2MjogKiBseW54X3Bjc19jcmVhdGVfZndub2RlKCkgY3JlYXRlcyBhIGx5bnggUENTIGluc3RhbmNlIGZyb20gdGhlIGZ3bm9kZVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1seW54LmMtMzYzLSAqIGRldmljZSBpbmRpY2F0ZWQgYnkgbm9kZS5cbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguYy0zNzAtICovXG5kcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguYzozNzE6c3RydWN0IHBoeWxpbmtfcGNzICpseW54X3Bjc19jcmVhdGVfZndub2RlKHN0cnVjdCBmd25vZGVfaGFuZGxlICpub2RlKVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1seW54LmMtMzcyLXtcbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguYy0zODItXG5kcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguYzozODM6XHRwY3MgPSBseW54X3Bjc19jcmVhdGUobWRpbyk7XG5kcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguYy0zODQtXG4tLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1seW54LmMtMzk0LX1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jOjM5NTpFWFBPUlRfU1lNQk9MX0dQTChseW54X3Bjc19jcmVhdGVfZndub2RlKTtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jLTM5Ni1cbi0tXG5pbmNsdWRlL2xpbnV4L3Bjcy1seW54LmgtMTEtXG5pbmNsdWRlL2xpbnV4L3Bjcy1seW54Lmg6MTI6c3RydWN0IHBoeWxpbmtfcGNzICpseW54X3Bjc19jcmVhdGVfbWRpb2RldihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkcik7XG5pbmNsdWRlL2xpbnV4L3Bjcy1seW54Lmg6MTM6c3RydWN0IHBoeWxpbmtfcGNzICpseW54X3Bjc19jcmVhdGVfZndub2RlKHN0cnVjdCBmd25vZGVfaGFuZGxlICpub2RlKTtcbmluY2x1ZGUvbGludXgvcGNzLWx5bnguaC0xNC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjAgMTc6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODYyMAoJCQkJCQkJb3V0cHV0OiA0NwoJCQkJCQkJdGhvdWdodHM6IDk1NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBvdGVudGlhbCBmb3IgRnV6emluZyB0aGVzZSBMeW54IFBDUyBEcml2ZXJzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBgbHlueF9wY3NfY3JlYXRlX21kaW9kZXZgIGFuZCBgbHlueF9wY3NfY3JlYXRlX2Z3bm9kZWAgYXMgdGhlIGVudHJ5IHBvaW50cyBoZXJlLiBUaGUgY2FsbGVycyBhcmUgcHJldHR5IGRpdmVyc2U6IGB2c2M5OTU5X21kaW9fYnVzX2FsbG9jYCwgYHZzYzk5NTNfbWRpb19idXNfYWxsb2NgLCBgYWx0ZXJhX3RzZV9wcm9iZWAsIGBkcGFhMl9wY3NfY3JlYXRlYCwgYGVuZXRjX3BmX2NyZWF0ZV9wY3NgLCBgbWVtYWNfcGNzX2NyZWF0ZWAsIGFuZCBgc29jZnBnYV9kd21hY19wY3NfaW5pdGAuIEEgcXVpY2sgZ2xhbmNlIHRlbGxzIG1lIG5vbmUgb2YgdGhlc2UgYXJlIGRpcmVjdGx5IHJlbGF0ZWQgdG8gaGFyZHdhcmUgZW11bGF0ZWQgYnkgUUVNVSBvdXQgb2YgdGhlIGJveC4gU3BlY2lmaWNhbGx5OiBgZmVsaXhfdnNjOTk1OWAgYW5kIGBzZXZpbGxlX3ZzYzk5NTNgIGFyZSBOWFAgT2NlbG90IERTQSBzd2l0Y2hlcy4gYGFsdGVyYV90c2VfbWFpbmAgaXMgQWx0ZXJhIFRTRSBNQUMuIGBkcGFhMi1tYWNgIGlzIE5YUCBEUEFBMi4gYGVuZXRjX3BmYCBpcyBOWFAgRU5FVEMuIGBmbWFuX21lbWFjYCBpcyBOWFAgRk1hbi4gRmluYWxseSwgYGR3bWFjLXNvY2ZwZ2FgIGlzIEFsdGVyYSBTT0NGUEdBIERXTUFDLgoKVGhlIERXTUFDIGNvbm5lY3Rpb24gbWFrZXMgbWUgdGhpbmsgYWJvdXQgc3RtbWFjLCBzaW5jZSB0aGF0JiMzOTtzIGEgU3lub3BzeXMgRGVzaWduV2FyZSBNQUMuIFFFTVUgKmRvZXMqIGVtdWxhdGUgc29tZSBzdG1tYWMgdmFyaWFudHMgbGlrZSBgeGdtYWNgLCBgaW14X2ZlY2AsIGBhbGx3aW5uZXItc3VuOGktZW1hY2AsIGFuZCBgbnBjbTd4eF9lbWNgLiBCdXQgYGR3bWFjLXNvY2ZwZ2FgIGlzIGV4cGxpY2l0bHkgZm9yIEFsdGVyYSBTT0NGUEdBLiBEb2VzIFFFTVUgZXZlbiBlbXVsYXRlIEFsdGVyYSBTT0NGUEdBPwoKTGV0JiMzOTtzIHNlZS4uLiBRRU1VIGhhcyBgaHcvYXJtL3NvY2ZwZ2EuY2A/IE5vLCB0aGF0JiMzOTtzIHdyb25nLiBRRU1VIGRvZXMgaGF2ZSBgY3ViaWVib2FyZC5jYCwgYHhpbGlueF96eW5xLmNgLCBldGMuIFdhaXQsIEkgcmVtZW1iZXIgUUVNVSBoYXMgYGh3L2FybS94aWxpbnhfenlucS5jYCBhbmQgYHhpbGlueF96eW5xbXAuY2AsIGJ1dCBBbHRlcmE/IExldCBtZSBjb25maXJtLiBMb29raW5nIHRocm91Z2ggdGhlIFFFTVUgaGFyZHdhcmUgZmlsZXMsIGl0IGRvZXNuJiMzOTt0IHNlZW0gdG8gZW11bGF0ZSB0aGUgc2FtZSBNRElPIGJ1cyBvciBQQ1MgZm9yIHRoZXNlIGRldmljZXMgaW4gYSB3YXkgdGhhdCB3b3VsZCB0cmlnZ2VyIGBseW54X3Bjc19jb25maWdfdXN4Z21paWAuCgpGdXJ0aGVybW9yZSwgYGx5bnhfcGNzX2NvbmZpZ191c3hnbWlpYCBpcyBvbmx5IGNhbGxlZCB3aGVuIHRoZSBgaWZtb2RlYCBpcyBgUEhZX0lOVEVSRkFDRV9NT0RFX1VTWEdNSUlgIG9yIGBQSFlfSU5URVJGQUNFX01PREVfMTBHX1FYR01JSWAuIFRoaXMgcmVxdWlyZXMgYSB2ZXJ5IHNwZWNpZmljIGhhcmR3YXJlIGNvbmZpZ3VyYXRpb24gdmlhIHRoZSBkZXZpY2UgdHJlZSBvciBBQ1BJIHRvIHNldCB0aGUgUEhZIGludGVyZmFjZSBtb2RlIHRvIFVTWEdNSUkuIFRoaXMgY29uZmlndXJhdGlvbiBpcyBub3Qgc29tZXRoaW5nIHdlJiMzOTtkIGdldCBpbiBhIGdlbmVyaWMgZnV6emluZyBlbnZpcm9ubWVudCBsaWtlIHN5emthbGxlciwgZXNwZWNpYWxseSBvbiB4ODZfNjQgb3IgYXJtNjQgdmlydC4gV2UgZG9uJiMzOTt0IGhhdmUgdGhlc2Ugc3BlY2lmaWMgcGxhdGZvcm0gZGV2aWNlcyBvciBQQ0kgZGV2aWNlcyAobGlrZSBFTkVUQykgcHJlc2VudCBpbiB0aGF0IHNldHVwLgoKV2FpdCwgRU5FVEMgKmlzKiBhIFBDSSBkZXZpY2UuIENvdWxkIHdlIHByb2JlIHRoaXMgdGhyb3VnaCBQQ0kgZnV6emluZz8gSWYgc3l6a2FsbGVyIGlzIHVzaW5nIGB2aGNpYCBvciBgcGNpYCBmdXp6aW5nLCBpdCBjb3VsZCBwb3RlbnRpYWxseSBpbmplY3QgUENJIGRldmljZXMuIEhvd2V2ZXIsIEVORVRDIHdvdWxkIHJlcXVpcmUgc3BlY2lmaWMgUENJIHZlbmRvci9kZXZpY2UgSURzLiBUaGUgbmV4dCBzdGVwIGlzIHRvIGNoZWNrIGBlbmV0Y19wZi5jYCBhbmQgY29uZmlybSB0aG9zZSBQQ0kgSURzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAxNzo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwY2lfZGV2aWNlX2lkIGVuZXRjX3BmX2lkX3RhYmxlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYz05NDg9REVDTEFSRV9QQ0lfRklYVVBfRklOQUwoUENJX1ZFTkRPUl9JRF9GUkVFU0NBTEUsIEVORVRDX0RFVl9JRF9QRixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYy05NTAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYzo5NTE6c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIGVuZXRjX3BmX2lkX3RhYmxlW10gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYy05NTItXHR7IFBDSV9ERVZJQ0UoUENJX1ZFTkRPUl9JRF9GUkVFU0NBTEUsIEVORVRDX0RFVl9JRF9QRikgfSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjAgMTc6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA1MzkKCQkJCQkJCW91dHB1dDogMTE5CgkJCQkJCQl0aG91Z2h0czogOTM2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgRmVhc2liaWxpdHkgQXNzZXNzbWVudCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzLCBjb3VsZCBzeXprYWxsZXImIzM5O3MgUENJIGZ1enplciB0cmlnZ2VyIHRoaXM/IEl0IGRlcGVuZHMgaWYgaXQmIzM5O3MgaW4gdGhlIFBDSSBJRCB0YWJsZSwgYnV0IGBseW54X3Bjc19jb25maWdfdXN4Z21paWAgaXMgYW4gTURJTyBidXMgb3BlcmF0aW9uLCB3aGljaCBpcyBhIGJpdCBkaWZmZXJlbnQuIFNvLCBkb2VzIGBlbmV0Y19wZmAgKmNyZWF0ZSogdGhlIFBDUyBhbmQgdGhlbiBjYWxscyBgcGh5bGlua19zdGFydGAsIHdoaWNoIGluIHR1cm4gY2FsbHMgYGx5bnhfcGNzX2NvbmZpZ2A/IFllcCwgYGVuZXRjX3BmYCB1c2VzIHBoeWxpbmssIHNvIHRoYXQgcGFydCBtYWtlcyBzZW5zZS4KCkJ1dCBob2xkIG9uLCBsZXQgbWUgbG9vayBhdCB0aGUgcGF0Y2ggaXRzZWxmLiBJdCYjMzk7cyByZWFsbHkganVzdCBhZGRpbmcgc29tZSBNRElPIHdyaXRlcyB3aXRoaW4gYGx5bnhfcGNzX2NvbmZpZ191c3hnbWlpYC4gSXMgdGhpcyBldmVuIHdvcnRoIHNwZW5kaW5nIHRpbWUgb24/IExvb2tpbmcgYXQgdGhlIGNvZGUsIGl0JiMzOTtzIGEgYnVuY2ggb2YgcmVnaXN0ZXIgd3JpdGVzOiBjb25maWd1cmluZyBkZXZpY2UgYWJpbGl0eSwgYXV0b25lZ290aWF0aW9uIGFuZCBsaW5rIHRpbWVycy4gRXNzZW50aWFsbHksIGhhcmR3YXJlIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlcy4KCk5vdywgZXZlbiBpZiB0aGUgUENJIGRldmljZSAqY291bGQqIGJlIGZ1enplZCwgdGhlIGNvcmUgbG9naWMgaGVyZSBpcyBzaW1wbGUsIGRldGVybWluaXN0aWMgTURJTyB3cml0ZXMuIE5vIGNvbXBsZXggc3RhdGUgbWFjaGluZXMsIG5vIHRyaWNreSBtZW1vcnkgbWFuYWdlbWVudCwgbm8gb2J2aW91cyBzb2Z0d2FyZSBidWdzIGp1c3QgZnJvbSBsb29raW5nIGF0IHRoZSBjb2RlLCBqdXN0IGEgc2VxdWVuY2Ugb2YgaGFyZHdhcmUgcmVnaXN0ZXIgd3JpdGVzLiBJdCYjMzk7cyBwcmV0dHkgc3BlY2lmaWMgdG8gdGhlIGhhcmR3YXJlIHRvby4gV2UgYXJlIGRlYWxpbmcgd2l0aCBhIFVTWEdNSUkgaW50ZXJmYWNlIG1vZGUsIHdoaWNoIGlzIGxpa2VseSBzZXQgdXAgYnkgZGV2aWNlIHRyZWUgb3IgQUNQSS4gR2VuZXJpYyBQQ0kgZnV6emluZyB3b24mIzM5O3QgYmUgYWJsZSB0byB0cmlnZ2VyIHRoaXMgdW5sZXNzIGl0IGNhbiBzb21laG93IHByb3ZpZGUgYSBmYWtlIGRldmljZSB0cmVlLCB3aGljaCBpcyBkaWZmaWN1bHQuCgpDb25zaWRlcmluZyB0aGUgcnVsZXMsIGFuZCBteSBleHBlcmllbmNlLCB0aGlzIGZhbGxzIHNxdWFyZWx5IGludG8gdGhlIGNhdGVnb3J5IG9mICYjMzQ7dmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUmIzM0Oy4gVGhpcyBpcyBhbiBOWFAgTHlueCBQQ1MgZHJpdmVyLCB1c2VkIHdpdGggTlhQIGFuZCBBbHRlcmEgaGFyZHdhcmUuIFdlJiMzOTtyZSBkZWFsaW5nIHdpdGggc3BlY2lmaWMgaGFyZHdhcmUgb3IgZGV2aWNlIHRyZWUgY29uZmlndXJhdGlvbnMsIG5vdCBzb21ldGhpbmcgcmVhZGlseSBhY2Nlc3NpYmxlIGluIHN0YW5kYXJkIFFFTVUuCgpUaGVyZWZvcmUsIGdpdmVuIHRoZSBjaGFyYWN0ZXJpc3RpY3Mgb2YgdGhpcyBwYXRjaCBhbmQgdGhlIHJlcXVpcmVtZW50cywgdGhpcyBpcyBub3Qgd29ydGggZnV6emluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjAgMTc6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IGFkZHMgYSBmZXcgTURJTyByZWdpc3RlciB3cml0ZXMgdG8gdGhlIGhhcmR3YXJlIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlIG9mIHRoZSBOWFAgTHlueCBQQ1MgZHJpdmVyIChwY3MtbHlueCkuIFRoaXMgZHJpdmVyIGlzIHVzZWQgYnkgdmVuZG9yLXNwZWNpZmljIGhhcmR3YXJlIChOWFAgRU5FVEMsIERQQUEsIEFsdGVyYSBUU0UpIHdoaWNoIGFyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudHMuIEZ1cnRoZXJtb3JlLCB0aGUgY2hhbmdlcyBhcmUgcHVyZWx5IGhhcmR3YXJlIGNvbmZpZ3VyYXRpb24gc2VxdWVuY2VzIHdpdGhvdXQgY29tcGxleCBzb2Z0d2FyZSBsb2dpYywgbWFraW5nIHRoZW0gdW5zdWl0YWJsZSBhbmQgdW5yZWFjaGFibGUgZm9yIGdlbmVyaWMga2VybmVsIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IGFkZHMgYSBmZXcgTURJTyByZWdpc3RlciB3cml0ZXMgdG8gdGhlIGhhcmR3YXJlIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlIG9mIHRoZSBOWFAgTHlueCBQQ1MgZHJpdmVyIChwY3MtbHlueCkuIFRoaXMgZHJpdmVyIGlzIHVzZWQgYnkgdmVuZG9yLXNwZWNpZmljIGhhcmR3YXJlIChOWFAgRU5FVEMsIERQQUEsIEFsdGVyYSBUU0UpIHdoaWNoIGFyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudHMuIEZ1cnRoZXJtb3JlLCB0aGUgY2hhbmdlcyBhcmUgcHVyZWx5IGhhcmR3YXJlIGNvbmZpZ3VyYXRpb24gc2VxdWVuY2VzIHdpdGhvdXQgY29tcGxleCBzb2Z0d2FyZSBsb2dpYywgbWFraW5nIHRoZW0gdW5zdWl0YWJsZSBhbmQgdW5yZWFjaGFibGUgZm9yIGdlbmVyaWMga2VybmVsIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAxNzo0ODwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMjBUMTc6NDc6MTIuMDE2OTE4NzZaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MDkyMDE2MzI3NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgYWRkcyBhIGZldyBNRElPIHJlZ2lzdGVyIHdyaXRlcyB0byB0aGUgaGFyZHdhcmUgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2Ugb2YgdGhlIE5YUCBMeW54IFBDUyBkcml2ZXIgKHBjcy1seW54KS4gVGhpcyBkcml2ZXIgaXMgdXNlZCBieSB2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUgKE5YUCBFTkVUQywgRFBBQSwgQWx0ZXJhIFRTRSkgd2hpY2ggYXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50cy4gRnVydGhlcm1vcmUsIHRoZSBjaGFuZ2VzIGFyZSBwdXJlbHkgaGFyZHdhcmUgY29uZmlndXJhdGlvbiBzZXF1ZW5jZXMgd2l0aG91dCBjb21wbGV4IHNvZnR3YXJlIGxvZ2ljLCBtYWtpbmcgdGhlbSB1bnN1aXRhYmxlIGFuZCB1bnJlYWNoYWJsZSBmb3IgZ2VuZXJpYyBrZXJuZWwgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIwVDE3OjQ3OjEyLjAxNjkyMzUyWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjA0MjU0MTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAzZjhkYWY4Mzg4OGEzYTE4NjQwMzU2ZGE4OGU3YTI1NDAxOTFlZjViXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgQXVnIDIwIDE3OjQ3OjExIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jIGIvZHJpdmVycy9uZXQvcGNzL3Bjcy1seW54LmNcXG5pbmRleCBhOTIwODE1NjBlNjQxLi4zMzY1NTA3OWZlNTFkIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jXFxuKysrIGIvZHJpdmVycy9uZXQvcGNzL3Bjcy1seW54LmNcXG5AQCAtMjAsNiArMjAsOSBAQFxcbiAjZGVmaW5lIElGX01PREVfU1BFRURfTVNLXFx0XFx0R0VOTUFTSygzLCAyKVxcbiAjZGVmaW5lIElGX01PREVfSEFMRl9EVVBMRVhcXHRcXHRCSVQoNClcXG4gXFxuKyNkZWZpbmUgRU5FVENfUENTX1JFUExfTElOS19USU1FUl8xX0RFRlxcdDB4MDAwM1xcbisjZGVmaW5lIEVORVRDX1BDU19SRVBMX0xJTktfVElNRVJfMl9ERUZcXHQweDA2YTBcXG4rXFxuIHN0cnVjdCBseW54X3BjcyB7XFxuIFxcdHN0cnVjdCBwaHlsaW5rX3BjcyBwY3M7XFxuIFxcdHN0cnVjdCBtZGlvX2RldmljZSAqbWRpbztcXG5AQCAtMTU0LDYgKzE1Nyw3IEBAIHN0YXRpYyBpbnQgbHlueF9wY3NfY29uZmlnX3VzeGdtaWkoc3RydWN0IG1kaW9fZGV2aWNlICpwY3MsXFxuIFxcdFxcdFxcdFxcdCAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgKmFkdmVydGlzaW5nLFxcbiBcXHRcXHRcXHRcXHQgICB1bnNpZ25lZCBpbnQgbmVnX21vZGUpXFxuIHtcXG4rXFx0aW50IHJldDtcXG4gXFx0c3RydWN0IG1paV9idXMgKmJ1cyA9IHBjcy1cXHUwMDNlYnVzO1xcbiBcXHRpbnQgYWRkciA9IHBjcy1cXHUwMDNlYWRkcjtcXG4gXFxuQEAgLTE2NCwxMCArMTY4LDM4IEBAIHN0YXRpYyBpbnQgbHlueF9wY3NfY29uZmlnX3VzeGdtaWkoc3RydWN0IG1kaW9fZGV2aWNlICpwY3MsXFxuIFxcdH1cXG4gXFxuIFxcdC8qIENvbmZpZ3VyZSBkZXZpY2UgYWJpbGl0eSBmb3IgdGhlIFVTWEdNSUkgUmVwbGljYXRvciAqL1xcbi1cXHRyZXR1cm4gbWRpb2J1c19jNDVfd3JpdGUoYnVzLCBhZGRyLCBNRElPX01NRF9WRU5EMiwgTUlJX0FEVkVSVElTRSxcXG4tXFx0XFx0XFx0XFx0IE1ESU9fVVNYR01JSV8xMEcgfCBNRElPX1VTWEdNSUlfTElOSyB8XFxuLVxcdFxcdFxcdFxcdCBNRElPX1VTWEdNSUlfRlVMTF9EVVBMRVggfFxcbi1cXHRcXHRcXHRcXHQgQURWRVJUSVNFX1NHTUlJIHwgQURWRVJUSVNFX0xQQUNLKTtcXG4rXFx0cmV0ID0gbWRpb2J1c19jNDVfd3JpdGUoYnVzLCBhZGRyLCBNRElPX01NRF9WRU5EMiwgTUlJX0FEVkVSVElTRSxcXG4rXFx0XFx0XFx0XFx0TURJT19VU1hHTUlJXzEwRyB8IE1ESU9fVVNYR01JSV9MSU5LIHxcXG4rXFx0XFx0XFx0XFx0TURJT19VU1hHTUlJX0ZVTExfRFVQTEVYIHxcXG4rXFx0XFx0XFx0XFx0QURWRVJUSVNFX1NHTUlJIHwgQURWRVJUSVNFX0xQQUNLKTtcXG4rXFx0aWYgKHJldCBcXHUwMDNjIDApIHtcXG4rXFx0XFx0ZGV2X2VycihcXHUwMDI2cGNzLVxcdTAwM2VkZXYsIFxcXCJjb3VsZCBub3Qgc2V0IFVTWEdNSUkgcmVwbGljYXRvciBjb25maWdcXFxcblxcXCIpO1xcbitcXHRcXHRyZXR1cm4gcmV0O1xcbitcXHR9XFxuK1xcbitcXHQvKiBDb25maWd1cmUgYXV0b25lZ290aWF0aW9uICovXFxuK1xcdHJldCA9IG1kaW9idXNfYzQ1X3dyaXRlKGJ1cywgYWRkciwgTURJT19NTURfVkVORDIsIE1JSV9CTUNSLFxcbitcXHRcXHRcXHRcXHRCTUNSX1JFU0VUIHwgQk1DUl9BTkVOQUJMRSB8IEJNQ1JfQU5SRVNUQVJUKTtcXG4rXFx0aWYgKHJldCBcXHUwMDNjIDApIHtcXG4rXFx0XFx0ZGV2X2VycihcXHUwMDI2cGNzLVxcdTAwM2VkZXYsIFxcXCJjb3VsZCBub3Qgc2V0IFVTWEdNSUkgcmVwbGljYXRvciBjb250cm9sIGNvbmZpZ1xcXFxuXFxcIik7XFxuK1xcdFxcdHJldHVybiByZXQ7XFxuK1xcdH1cXG4rXFxuK1xcdHJldCA9IG1kaW9idXNfYzQ1X3dyaXRlKGJ1cywgYWRkciwgTURJT19NTURfVkVORDIsIExJTktfVElNRVJfTE8sXFxuK1xcdFxcdFxcdFxcdEVORVRDX1BDU19SRVBMX0xJTktfVElNRVJfMV9ERUYpO1xcbitcXHRpZiAocmV0IFxcdTAwM2MgMCkge1xcbitcXHRcXHRkZXZfZXJyKFxcdTAwMjZwY3MtXFx1MDAzZWRldiwgXFxcImNvdWxkIG5vdCBzZXQgVVNYR01JSSBMaW5rIFRpbWVyIDFcXFxcblxcXCIpO1xcbitcXHRcXHRyZXR1cm4gcmV0O1xcbitcXHR9XFxuK1xcbitcXHRyZXQgPSBtZGlvYnVzX2M0NV93cml0ZShidXMsIGFkZHIsIE1ESU9fTU1EX1ZFTkQyLCBMSU5LX1RJTUVSX0hJLFxcbitcXHRcXHRcXHRcXHRFTkVUQ19QQ1NfUkVQTF9MSU5LX1RJTUVSXzJfREVGKTtcXG4rXFx0aWYgKHJldCBcXHUwMDNjIDApIHtcXG4rXFx0XFx0ZGV2X2VycihcXHUwMDI2cGNzLVxcdTAwM2VkZXYsIFxcXCJjb3VsZCBub3Qgc2V0IFVTWEdNSUkgTGluayBUaW1lciAyXFxcXG5cXFwiKTtcXG4rXFx0XFx0cmV0dXJuIHJldDtcXG4rXFx0fVxcbitcXG4rXFx0cmV0dXJuIHJldDtcXG4gfVxcbiBcXG4gc3RhdGljIGludCBseW54X3Bjc19jb25maWcoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsIHVuc2lnbmVkIGludCBuZWdfbW9kZSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjBUMTc6NDc6MTIuNDc4MTIxNzUzWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NjA0NTg5NDc1NTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgYWRkcyBhIGZldyBNRElPIHJlZ2lzdGVyIHdyaXRlcyB0byB0aGUgaGFyZHdhcmUgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2Ugb2YgdGhlIE5YUCBMeW54IFBDUyBkcml2ZXIgKHBjcy1seW54KS4gVGhpcyBkcml2ZXIgaXMgdXNlZCBieSB2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUgKE5YUCBFTkVUQywgRFBBQSwgQWx0ZXJhIFRTRSkgd2hpY2ggYXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50cy4gRnVydGhlcm1vcmUsIHRoZSBjaGFuZ2VzIGFyZSBwdXJlbHkgaGFyZHdhcmUgY29uZmlndXJhdGlvbiBzZXF1ZW5jZXMgd2l0aG91dCBjb21wbGV4IHNvZnR3YXJlIGxvZ2ljLCBtYWtpbmcgdGhlbSB1bnN1aXRhYmxlIGFuZCB1bnJlYWNoYWJsZSBmb3IgZ2VuZXJpYyBrZXJuZWwgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDNmOGRhZjgzODg4YTNhMTg2NDAzNTZkYTg4ZTdhMjU0MDE5MWVmNWJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEF1ZyAyMCAxNzo0NzoxMSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jIGIvZHJpdmVycy9uZXQvcGNzL3Bjcy1seW54LmNcbmluZGV4IGE5MjA4MTU2MGU2NDEuLjMzNjU1MDc5ZmU1MWQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguY1xuKysrIGIvZHJpdmVycy9uZXQvcGNzL3Bjcy1seW54LmNcbkBAIC0yMCw2ICsyMCw5IEBAXG4gI2RlZmluZSBJRl9NT0RFX1NQRUVEX01TS1x0XHRHRU5NQVNLKDMsIDIpXG4gI2RlZmluZSBJRl9NT0RFX0hBTEZfRFVQTEVYXHRcdEJJVCg0KVxuIFxuKyNkZWZpbmUgRU5FVENfUENTX1JFUExfTElOS19USU1FUl8xX0RFRlx0MHgwMDAzXG4rI2RlZmluZSBFTkVUQ19QQ1NfUkVQTF9MSU5LX1RJTUVSXzJfREVGXHQweDA2YTBcbitcbiBzdHJ1Y3QgbHlueF9wY3Mge1xuIFx0c3RydWN0IHBoeWxpbmtfcGNzIHBjcztcbiBcdHN0cnVjdCBtZGlvX2RldmljZSAqbWRpbztcbkBAIC0xNTQsNiArMTU3LDcgQEAgc3RhdGljIGludCBseW54X3Bjc19jb25maWdfdXN4Z21paShzdHJ1Y3QgbWRpb19kZXZpY2UgKnBjcyxcbiBcdFx0XHRcdCAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgKmFkdmVydGlzaW5nLFxuIFx0XHRcdFx0ICAgdW5zaWduZWQgaW50IG5lZ19tb2RlKVxuIHtcbitcdGludCByZXQ7XG4gXHRzdHJ1Y3QgbWlpX2J1cyAqYnVzID0gcGNzLVx1MDAzZWJ1cztcbiBcdGludCBhZGRyID0gcGNzLVx1MDAzZWFkZHI7XG4gXG5AQCAtMTY0LDEwICsxNjgsMzggQEAgc3RhdGljIGludCBseW54X3Bjc19jb25maWdfdXN4Z21paShzdHJ1Y3QgbWRpb19kZXZpY2UgKnBjcyxcbiBcdH1cbiBcbiBcdC8qIENvbmZpZ3VyZSBkZXZpY2UgYWJpbGl0eSBmb3IgdGhlIFVTWEdNSUkgUmVwbGljYXRvciAqL1xuLVx0cmV0dXJuIG1kaW9idXNfYzQ1X3dyaXRlKGJ1cywgYWRkciwgTURJT19NTURfVkVORDIsIE1JSV9BRFZFUlRJU0UsXG4tXHRcdFx0XHQgTURJT19VU1hHTUlJXzEwRyB8IE1ESU9fVVNYR01JSV9MSU5LIHxcbi1cdFx0XHRcdCBNRElPX1VTWEdNSUlfRlVMTF9EVVBMRVggfFxuLVx0XHRcdFx0IEFEVkVSVElTRV9TR01JSSB8IEFEVkVSVElTRV9MUEFDSyk7XG4rXHRyZXQgPSBtZGlvYnVzX2M0NV93cml0ZShidXMsIGFkZHIsIE1ESU9fTU1EX1ZFTkQyLCBNSUlfQURWRVJUSVNFLFxuK1x0XHRcdFx0TURJT19VU1hHTUlJXzEwRyB8IE1ESU9fVVNYR01JSV9MSU5LIHxcbitcdFx0XHRcdE1ESU9fVVNYR01JSV9GVUxMX0RVUExFWCB8XG4rXHRcdFx0XHRBRFZFUlRJU0VfU0dNSUkgfCBBRFZFUlRJU0VfTFBBQ0spO1xuK1x0aWYgKHJldCBcdTAwM2MgMCkge1xuK1x0XHRkZXZfZXJyKFx1MDAyNnBjcy1cdTAwM2VkZXYsIFwiY291bGQgbm90IHNldCBVU1hHTUlJIHJlcGxpY2F0b3IgY29uZmlnXFxuXCIpO1xuK1x0XHRyZXR1cm4gcmV0O1xuK1x0fVxuK1xuK1x0LyogQ29uZmlndXJlIGF1dG9uZWdvdGlhdGlvbiAqL1xuK1x0cmV0ID0gbWRpb2J1c19jNDVfd3JpdGUoYnVzLCBhZGRyLCBNRElPX01NRF9WRU5EMiwgTUlJX0JNQ1IsXG4rXHRcdFx0XHRCTUNSX1JFU0VUIHwgQk1DUl9BTkVOQUJMRSB8IEJNQ1JfQU5SRVNUQVJUKTtcbitcdGlmIChyZXQgXHUwMDNjIDApIHtcbitcdFx0ZGV2X2VycihcdTAwMjZwY3MtXHUwMDNlZGV2LCBcImNvdWxkIG5vdCBzZXQgVVNYR01JSSByZXBsaWNhdG9yIGNvbnRyb2wgY29uZmlnXFxuXCIpO1xuK1x0XHRyZXR1cm4gcmV0O1xuK1x0fVxuK1xuK1x0cmV0ID0gbWRpb2J1c19jNDVfd3JpdGUoYnVzLCBhZGRyLCBNRElPX01NRF9WRU5EMiwgTElOS19USU1FUl9MTyxcbitcdFx0XHRcdEVORVRDX1BDU19SRVBMX0xJTktfVElNRVJfMV9ERUYpO1xuK1x0aWYgKHJldCBcdTAwM2MgMCkge1xuK1x0XHRkZXZfZXJyKFx1MDAyNnBjcy1cdTAwM2VkZXYsIFwiY291bGQgbm90IHNldCBVU1hHTUlJIExpbmsgVGltZXIgMVxcblwiKTtcbitcdFx0cmV0dXJuIHJldDtcbitcdH1cbitcbitcdHJldCA9IG1kaW9idXNfYzQ1X3dyaXRlKGJ1cywgYWRkciwgTURJT19NTURfVkVORDIsIExJTktfVElNRVJfSEksXG4rXHRcdFx0XHRFTkVUQ19QQ1NfUkVQTF9MSU5LX1RJTUVSXzJfREVGKTtcbitcdGlmIChyZXQgXHUwMDNjIDApIHtcbitcdFx0ZGV2X2VycihcdTAwMjZwY3MtXHUwMDNlZGV2LCBcImNvdWxkIG5vdCBzZXQgVVNYR01JSSBMaW5rIFRpbWVyIDJcXG5cIik7XG4rXHRcdHJldHVybiByZXQ7XG4rXHR9XG4rXG4rXHRyZXR1cm4gcmV0O1xuIH1cbiBcbiBzdGF0aWMgaW50IGx5bnhfcGNzX2NvbmZpZyhzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcywgdW5zaWduZWQgaW50IG5lZ19tb2RlLFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjBUMTc6NDc6MTIuNDc4MTIzNDczWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTAwMTQ3NjAwOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6XG5cbioqQW5hbHl6aW5nIGEgUENTLUx5bnggRHJpdmVyIFBhdGNoKipcblxuQWxyaWdodCwgc28gSSdtIGxvb2tpbmcgYXQgYSBwYXRjaCB0aGF0J3MgaGl0IHRoZSBuZXR3b3JrIGRyaXZlcnMsIHNwZWNpZmljYWxseSBtb2RpZnlpbmcgdGhlIGBkcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguY2AgZmlsZS4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBzZWVtcyB0byBiZSBpbiB0aGUgYGx5bnhfcGNzX2NvbmZpZ191c3hnbWlpYCBmdW5jdGlvbi4gRnJvbSBhIHF1aWNrIGdsYW5jZSwgaXQgbG9va3MgbGlrZSBpdCdzIGFkZGluZyBzb21lIE1ESU8gYnVzIGNvbmZpZ3VyYXRpb24gd3JpdGVzLCBsaWtlbHkgZm9yIGEgVVNYR01JSSByZXBsaWNhdG9yLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsICp3YWl0LCBpcyB0aGlzIGhhcmR3YXJlLXNwZWNpZmljPyogVGhlIFwicGNzLWx5bnhcIiBuYW1lIHN0cm9uZ2x5IHN1Z2dlc3RzIGl0J3MgdGllZCB0byBhIHBhcnRpY3VsYXIgcGllY2Ugb2YgaGFyZHdhcmU6IGEgTHlueCBQQ1MgZHJpdmVyLiBJIHNob3VsZCByZWFsbHkgY29uZmlybSB0aGF0LCB0aG91Z2g7IGxldCdzIGRpZyBhIGJpdCBkZWVwZXIgYW5kIHNlZSB3aGF0IFwibHlueFwiIGFjdHVhbGx5IHJlZmVycyB0by4gQmV0dGVyIHNhZmUgdGhhbiBzb3JyeS5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjc0OCwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg5LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjBUMTc6NDc6MTcuNDc5NjAzMzUxWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3MTEzODg0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImx5bnhfcGNzX2NvbmZpZ191c3hnbWlpXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jPTExNz1zdGF0aWMgaW50IGx5bnhfcGNzX2NvbmZpZ19naWdhKHN0cnVjdCBtZGlvX2RldmljZSAqcGNzLFxcbi0tXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1seW54LmMtMTU0LVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jOjE1NTpzdGF0aWMgaW50IGx5bnhfcGNzX2NvbmZpZ191c3hnbWlpKHN0cnVjdCBtZGlvX2RldmljZSAqcGNzLFxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jLTE1Ni1cXHRcXHRcXHRcXHQgICBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlLFxcbi0tXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1seW54LmM9MjA1PXN0YXRpYyBpbnQgbHlueF9wY3NfY29uZmlnKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzLCB1bnNpZ25lZCBpbnQgbmVnX21vZGUsXFxuLS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguYy0yMTktXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfMTBHX1FYR01JSTpcXG5kcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguYzoyMjA6XFx0XFx0cmV0dXJuIGx5bnhfcGNzX2NvbmZpZ191c3hnbWlpKGx5bngtXFx1MDAzZW1kaW8sIGlmbW9kZSwgYWR2ZXJ0aXNpbmcsXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1seW54LmMtMjIxLVxcdFxcdFxcdFxcdFxcdCAgICAgICBuZWdfbW9kZSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIwVDE3OjQ3OjE3LjUyNjcyMDk0NloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1ODgyNDIwMzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyB0aGUgYGx5bnhfcGNzX2NvbmZpZ2AgQ2FsbCoqXG5cbk9rYXksIGxldCdzIGRpdmUgaW4uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBmaWd1cmUgb3V0IHdoZXJlIHRoZSBgbHlueF9wY3NfY29uZmlnYCBmdW5jdGlvbiBpcyBiZWluZyBjYWxsZWQsIGJlY2F1c2UgaXQncyBhc3NvY2lhdGVkIHdpdGggYHBoeWxpbmtfcGNzYCwgc28gSSBrbm93IHdlJ3JlIGRlYWxpbmcgd2l0aCBhIHBoeXNpY2FsIGxheWVyIGNvbnRyb2wgc3lzdGVtLiBOZXh0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGlzIHNwZWNpZmljIGRyaXZlciBpcyBldmVuIGFjY2Vzc2libGUgaW4gYSBRRU1VIGVudmlyb25tZW50LiBUaGF0J3MgYSBjcml0aWNhbCBwaWVjZSBvZiBpbmZvcm1hdGlvbi4gVG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBkcml2ZXIncyBjb25maWd1cmF0aW9uIGFuZCBidWlsZCBwcm9jZXNzLCBJJ2xsIHN0YXJ0IGJ5IGNoZWNraW5nIHRoZSBLY29uZmlnIGFuZCBNYWtlZmlsZSBpbiB0aGUgYGRyaXZlcnMvbmV0L3Bjcy9gIGRpcmVjdG9yeS4gVGhhdCBzaG91bGQgZ2l2ZSBtZSB0aGUgbG93ZG93biBvbiB0aGUgYnVpbGQgb3B0aW9ucyBhbmQgZGVwZW5kZW5jaWVzIGZvciB0aGlzIHBhcnRpY3VsYXIgUENTIGNvbXBvbmVudC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzM0NCwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIwVDE3OjQ3OjIxLjExNDk2NjA5WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY2NzUxNjQzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBjcy1seW54XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3Bjcy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcGNzL01ha2VmaWxlPTc9b2JqLSQoQ09ORklHX1BDU19YUENTKVxcdFxcdCs9IHBjc194cGNzLm9cXG5kcml2ZXJzL25ldC9wY3MvTWFrZWZpbGU6ODpvYmotJChDT05GSUdfUENTX0xZTlgpXFx0XFx0Kz0gcGNzLWx5bngub1xcbmRyaXZlcnMvbmV0L3Bjcy9NYWtlZmlsZS05LW9iai0kKENPTkZJR19QQ1NfTVRLX0xZTlhJKVxcdCs9IHBjcy1tdGstbHlueGkub1xcbi0tXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1seW54LmMtNy0jaW5jbHVkZSBcXHUwMDNjbGludXgvcGh5bGluay5oXFx1MDAzZVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jOjg6I2luY2x1ZGUgXFx1MDAzY2xpbnV4L3Bjcy1seW54LmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1seW54LmMtOS0jaW5jbHVkZSBcXHUwMDNjbGludXgvcHJvcGVydHkuaFxcdTAwM2VcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjBUMTc6NDc6MjEuMTgxNzI4OTI0WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDMzOTk3Mzc0NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipEaXZpbmcgaW50byB0aGUgTmV0d29yayBEcml2ZXIgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoaXMgbmV0d29yayBkcml2ZXIuIFRoZSBzdGFydGluZyBwb2ludCwgYXMgYWx3YXlzIHdpdGggdGhlIGtlcm5lbCwgaXMgdGhlIGBLY29uZmlnYCBmaWxlLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byBjaGVjayBgZHJpdmVycy9uZXQvcGNzL0tjb25maWdgLiBUaGlzIGZpbGUgc2hvdWxkIGNvbnRhaW4gYWxsIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIHN5bWJvbHMg4oCTIHRoZSB0aGluZ3MgdGhhdCBkZWZpbmUgd2hhdCBmZWF0dXJlcyBhcmUgZW5hYmxlZCwgd2hhdCBoYXJkd2FyZSBpcyBzdXBwb3J0ZWQsIGFuZCBzbyBvbi4gTXkgaW5pdGlhbCBnb2FsIGlzIHRvIGdldCBhIGJpcmQncy1leWUgdmlldyBvZiBhbGwgdGhlIGNvbmZpZ3VyYWJsZSBlbGVtZW50cy4gSSdsbCBiZSBsb29raW5nIGZvciB0aGluZ3MgbGlrZSB3aGV0aGVyIHNwZWNpZmljIGhhcmR3YXJlIGNoaXBzZXRzIGFyZSBzdXBwb3J0ZWQsIHZhcmlvdXMgcHJvdG9jb2wgb3B0aW9ucyAoZS5nLiwgVkxBTiwgUW9TKSwgYW5kIGFueSByZWxldmFudCBkZWJ1Z2dpbmcgb3IgcGVyZm9ybWFuY2UgdHVuaW5nIGtub2JzLiBUaGlzIEtjb25maWcgZmlsZSBpcyB0aGUgY3JpdGljYWwgZW50cnkgcG9pbnQgdG8gdW5kZXJzdGFuZGluZyAqaG93KiB0aGlzIGRyaXZlciB3b3JrcyBpbiB0ZXJtcyBvZiBob3cgaXQncyBidWlsdCBhbmQgY29uZmlndXJlZC4gSSdtIGdvaW5nIHRvIHN0YXJ0IGJ5IHF1aWNrbHkgc2Nhbm5pbmcgdGhlIHN0cnVjdHVyZSwgbG9va2luZyBmb3IgbG9naWNhbCBncm91cGluZ3MgYW5kIGRlcGVuZGVuY2llcy4gTXkgZm9jdXMgd2lsbCBiZSBvbiB0aGUgYXJjaGl0ZWN0dXJlLCBhbnkga2V5IGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgYW5kIGFueXRoaW5nIHRoYXQganVtcHMgb3V0IGFzIHVudXN1YWwgb3IgaW50ZXJlc3RpbmcuIFVuZGVyc3RhbmRpbmcgdGhpcyBmaWxlIGlzIGZ1bmRhbWVudGFsLiBJdCdzIHRoZSBmb3VuZGF0aW9uIHVwb24gd2hpY2ggdGhlIHJlc3Qgb2YgdGhlIGRyaXZlcidzIGJ1aWxkIHByb2Nlc3MgaXMgYnVpbHQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM3NzgsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQxNzo0NzoyNS41MjE3MDUwNFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0Nzg3MjE1NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgUENTX0xZTlhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvcGNzL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcGNzL0tjb25maWc9OD1jb25maWcgUENTX1hQQ1NcXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9LY29uZmlnLTE0LVxcbmRyaXZlcnMvbmV0L3Bjcy9LY29uZmlnOjE1OmNvbmZpZyBQQ1NfTFlOWFxcbmRyaXZlcnMvbmV0L3Bjcy9LY29uZmlnLTE2LVxcdHRyaXN0YXRlXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIwVDE3OjQ3OjI1LjU2OTU4MjE5NVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwMzgxNjk2MDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBzdW1tYXJ5LCBpbiB0aGUgZmlyc3QgcGVyc29uLCBhcyBhbiBleHBlcnQgaW4gdGhlIGZpZWxkIHdvdWxkIHRoaW5rIGl0OlxuXG4qKkRlY29kaW5nIHRoZSBUcmlzdGF0ZSdzIFNlbGVjdG9yKipcblxuQWxyaWdodCwgdGhpcyBpcyBhIHRyaXN0YXRlLCBhbmQgdGhlIGNyaXRpY2FsIHRoaW5nIGhlcmUgaXMgdGhhdCBpdCdzICp1bnByb21wdGVkKi4gVGhhdCBtZWFucyBpdHMgc3RhdGUgaXNuJ3QgZGlyZWN0bHkgY29udHJvbGxlZCBieSBhbnkgZXhwbGljaXQgdXNlciBvciBjb25maWd1cmF0aW9uIGlucHV0LiBJdCdzIGJlaW5nIGRyaXZlbiBieSBzb21ldGhpbmcgKmV4dGVybmFsKi4gU28sIG15IGltbWVkaWF0ZSB0aG91Z2h0IGlzOiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgZHJpdmVycyBvciBtb2R1bGVzIHRoYXQgYXJlIGFjdGl2ZWx5ICpzZWxlY3RpbmcqIHRoaXMgcGFydGljdWxhciB0cmlzdGF0ZS4gSW4gdGhpcyBjYXNlLCBpdCBpcyBuYW1lZCBgUENTX0xZTlhgLiBJIG5lZWQgdG8gdHJhY2UgYmFjayBmcm9tIHRoYXQgaWRlbnRpZmllciBhbmQgd29yayBteSB3YXkgdXBzdHJlYW0uIFVuZGVyc3RhbmRpbmcgd2hhdCdzIHB1bGxpbmcgdGhlIHRyaWdnZXIgb24gYFBDU19MWU5YYCBpcyBnb2luZyB0byBiZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgc3RhdGUgb2YgdGhpcyBzeXN0ZW0sIGFuZCBob3cgdGhhdCBzZWxlY3Rpb24gaXMgYWZmZWN0ZWQuIFRoYXQncyB3aGVyZSBJIG5lZWQgdG8gZm9jdXMgbXkgZWZmb3J0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDE1NywiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIwVDE3OjQ3OjI4LjYwNzc1NDAzNFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTk1MjI1MzAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNlbGVjdCBQQ1NfTFlOWFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZHNhL29jZWxvdC9LY29uZmlnPTMyPWNvbmZpZyBORVRfRFNBX01TQ0NfRkVMSVhcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvS2NvbmZpZy00NC1cXHRzZWxlY3QgRlNMX0VORVRDX01ESU9cXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L0tjb25maWc6NDU6XFx0c2VsZWN0IFBDU19MWU5YXFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9LY29uZmlnLTQ2LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvS2NvbmZpZz01MD1jb25maWcgTkVUX0RTQV9NU0NDX1NFVklMTEVcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvS2NvbmZpZy02MC1cXHRzZWxlY3QgTkVUX0RTQV9UQUdfT0NFTE9UXFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9LY29uZmlnOjYxOlxcdHNlbGVjdCBQQ1NfTFlOWFxcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvS2NvbmZpZy02Mi1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvS2NvbmZpZz0yPWNvbmZpZyBBTFRFUkFfVFNFXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvS2NvbmZpZy03LVxcdHNlbGVjdCBQSFlMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL0tjb25maWc6ODpcXHRzZWxlY3QgUENTX0xZTlhcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvS2NvbmZpZy05LVxcdHNlbGVjdCBNRElPX1JFR01BUFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEvS2NvbmZpZz0yPW1lbnVjb25maWcgRlNMX0RQQUFfRVRIXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYS9LY29uZmlnLTUtXFx0c2VsZWN0IFBIWUxJTktcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYS9LY29uZmlnOjY6XFx0c2VsZWN0IFBDU19MWU5YXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEvS2NvbmZpZy03LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9LY29uZmlnPTI9Y29uZmlnIEZTTF9EUEFBMl9FVEhcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9LY29uZmlnLTUtXFx0c2VsZWN0IFBIWUxJTktcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvS2NvbmZpZzo2OlxcdHNlbGVjdCBQQ1NfTFlOWFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9LY29uZmlnLTctXFx0c2VsZWN0IEZTTF9YR01BQ19NRElPXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvS2NvbmZpZz0zMz1jb25maWcgRlNMX0RQQUEyX1NXSVRDSFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL0tjb25maWctMzgtXFx0c2VsZWN0IFBIWUxJTktcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvS2NvbmZpZzozOTpcXHRzZWxlY3QgUENTX0xZTlhcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvS2NvbmZpZy00MC1cXHRzZWxlY3QgRlNMX1hHTUFDX01ESU9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9LY29uZmlnPTMwPWNvbmZpZyBGU0xfRU5FVENcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9LY29uZmlnLTM4LVxcdHNlbGVjdCBQSFlMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL0tjb25maWc6Mzk6XFx0c2VsZWN0IFBDU19MWU5YXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL0tjb25maWctNDAtXFx0c2VsZWN0IERJTUxJQlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vS2NvbmZpZz0yPWNvbmZpZyBGU0xfRk1BTlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vS2NvbmZpZy02LVxcdHNlbGVjdCBQSFlMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vS2NvbmZpZzo3OlxcdHNlbGVjdCBQQ1NfTFlOWFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL0tjb25maWctOC1cXHRzZWxlY3QgQ1JDMzJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MjAzPWNvbmZpZyBEV01BQ19TT0NGUEdBXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTIwOS1cXHRzZWxlY3QgUkVHTUFQX01NSU9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjIxMDpcXHRzZWxlY3QgUENTX0xZTlhcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTIxMS1cXHRoZWxwXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIwVDE3OjQ3OjI4LjgwMjk4NTg5NFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMjc4NDQ3ODc0NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgSGFyZHdhcmUgRHJpdmVyIFJlYWNoYWJpbGl0eSBpbiBRRU1VKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCB0cnlpbmcgdG8gZmlndXJlIG91dCB3aGljaCBoYXJkd2FyZSBkcml2ZXJzIGFyZSBldmVuIHJlbGV2YW50IGZvciBteSB0ZXN0aW5nIGluIFFFTVUuIEkgc2VlIGEgYnVuY2ggbGlzdGVkOiBgTkVUX0RTQV9NU0NDX0ZFTElYYCwgYE5FVF9EU0FfTVNDQ19TRVZJTExFYCwgYEFMVEVSQV9UU0VgLCBgRlNMX0RQQUFfRVRIYCwgYEZTTF9EUEFBMl9FVEhgLCBgRlNMX0RQQUEyX1NXSVRDSGAsIGBGU0xfRU5FVENgLCBgRlNMX0ZNQU5gLCBhbmQgYERXTUFDX1NPQ0ZQR0FgLiBUaGUgcXVlc3Rpb24gaXMsIHdoaWNoIG9mIHRoZXNlIGFyZSBhY3R1YWxseSAqcmVhY2hhYmxlKiB3aGVuIEknbSBydW5uaW5nIFFFTVU/XG5cbmBEV01BQ19TT0NGUEdBYCBsb29rcyBsaWtlIGEgcGxhdGZvcm0gZHJpdmVyLCBzbyBtYXliZSB0aGVyZSdzIGEgc3BlY2lmaWMgbWFjaGluZSB0eXBlIHRoYXQgY291bGQgZW5hYmxlIGl0LCBidXQgc3l6a2FsbGVyIHVzdWFsbHkgdXNlcyBgcTM1YCBvciBgdmlydGAgKGZvciBBUk02NCksIHNvIGl0J3MgcHJvYmFibHkgbm90IGEgY29tbW9uIGNvbmZpZ3VyYXRpb24uIGBGU0xfRU5FVENgIGlzIGEgUENJIGRyaXZlciwgYW5kIEkgaGlnaGx5IGRvdWJ0IFFFTVUgZW11bGF0ZXMgRnJlZXNjYWxlIEVORVRDLCB0aG91Z2ggSSBzaG91bGQgZG91YmxlLWNoZWNr4oCmIE5vLCBRRU1VIGlzIHVzdWFsbHkgdmVyeSBzcG90dHkgd2l0aCBlbXVsYXRpbmcgRU5FVEMuIEFuZCBmb3IgdGhlIG90aGVycywgbGlrZSBgQUxURVJBX1RTRWAsIEknbSBndWVzc2luZyBcIm5vXCIgdG9vLiBTbywgYERXTUFDX1NPQ0ZQR0FgIGFuZCBgTkVUX0RTQV9NU0NDX0ZFTElYYCB3aGljaCBpcyBEU0Egc3dpdGNoLCBlaXRoZXIgcGxhdGZvcm0gb3IgUENJLCBpcyBvdXQuXG5cblRoZSByZWFsIHF1ZXN0aW9uIGlzIGFib3V0IGBwY3MtbHlueC5jYC4gQ2FuIGFueSBvZiB0aG9zZSB2aXJ0dWFsaXplZCBoYXJkd2FyZSBpbnN0YW5jZXMgKnJlYWNoKiBgcGNzLWx5bnguY2A/IEFoLCByaWdodCwgYHBoeWxpbmtfcGNzYCBpcyBhIGdlbmVyaWMgYWJzdHJhY3Rpb24uIENhbiBJIGluc3RhbnRpYXRlIGl0IHdpdGggYSBkdW1teSBkZXZpY2U/IE5vcGUsIGl0J3MgYWN0dWFsbHkgaW5zdGFudGlhdGVkIGJ5IHNwZWNpZmljIE1BQyBkcml2ZXJzLlxuXG5TbywgaWYgbm9uZSBvZiB0aG9zZSBNQUMgZHJpdmVycyBhcmUgZXZlbiBlbXVsYXRlZCwgdGhlbiB0aGF0IG1lYW5zIGBseW54X3Bjc19jb25maWdfdXN4Z21paWAgaXMgdW5yZWFjaGFibGUuIEFscmlnaHQsIEkgbmVlZCB0byBjaGVjayBpZiB0aGVyZSBhcmUgYW55ICpvdGhlciogdXNlcnMgb2YgYFBDU19MWU5YYCBiZWNhdXNlIGl0IGRvZXNuJ3QgbG9vayBsaWtlbHkgdGhhdCB0aGUgb25lcyBsaXN0ZWQgaGVyZSB3aWxsIHJlYWNoIGl0LiBMZXQncyBzZWUuLi5cblxuXG4iLCJJbnB1dFRva2VucyI6NTM4OSwiT3V0cHV0VG9rZW5zIjoyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ5NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQxNzo0Nzo0MS41ODc0NjcyMTlaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2NTU4ODA5NDEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibHlueF9wY3NfY3JlYXRlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvc2ZwLXBoeWxpbmsucnN0PTc0PXRoaXMgZG9jdW1lbnRhdGlvbi5cXG4tLVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9zZnAtcGh5bGluay5yc3QtMzExLVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9zZnAtcGh5bGluay5yc3Q6MzEyOiAgICAgICAgcHJpdi1cXHUwMDNlcGNzID0gbHlueF9wY3NfY3JlYXRlX21kaW9kZXYoYnVzLCAwKTtcXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvc2ZwLXBoeWxpbmsucnN0LTMxMy1cXG4tLVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9zZnAtcGh5bGluay5yc3QtMzE3LVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9zZnAtcGh5bGluay5yc3Q6MzE4OiAgICAgICAgcHJpdi1cXHUwMDNlcGNzID0gbHlueF9wY3NfY3JlYXRlX2Z3bm9kZShvZl9md25vZGVfaGFuZGxlKG5vZGUpKTtcXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvc2ZwLXBoeWxpbmsucnN0LTMxOS1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXhfdnNjOTk1OS5jPTk1Nz1zdGF0aWMgaW50IHZzYzk5NTlfbWRpb19idXNfYWxsb2Moc3RydWN0IG9jZWxvdCAqb2NlbG90KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeF92c2M5OTU5LmMtMTAzMi1cXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4X3ZzYzk5NTkuYzoxMDMzOlxcdFxcdHBoeWxpbmtfcGNzID0gbHlueF9wY3NfY3JlYXRlX21kaW9kZXYoZmVsaXgtXFx1MDAzZWltZGlvLCBwb3J0KTtcXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4X3ZzYzk5NTkuYy0xMDM0LVxcdFxcdGlmIChJU19FUlIocGh5bGlua19wY3MpKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9zZXZpbGxlX3ZzYzk5NTMuYz04Nzg9c3RhdGljIGludCB2c2M5OTUzX21kaW9fYnVzX2FsbG9jKHN0cnVjdCBvY2Vsb3QgKm9jZWxvdClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3Qvc2V2aWxsZV92c2M5OTUzLmMtOTIyLVxcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3Qvc2V2aWxsZV92c2M5OTUzLmM6OTIzOlxcdFxcdHBoeWxpbmtfcGNzID0gbHlueF9wY3NfY3JlYXRlX21kaW9kZXYoZmVsaXgtXFx1MDAzZWltZGlvLCBhZGRyKTtcXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L3NldmlsbGVfdnNjOTk1My5jLTkyNC1cXHRcXHRpZiAoSVNfRVJSKHBoeWxpbmtfcGNzKSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsdGVyYS9hbHRlcmFfdHNlX21haW4uYz0xMTI4PXN0YXRpYyBpbnQgYWx0ZXJhX3RzZV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL2FsdGVyYV90c2VfbWFpbi5jLTEzOTQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL2FsdGVyYV90c2VfbWFpbi5jOjEzOTU6XFx0cHJpdi1cXHUwMDNlcGNzID0gbHlueF9wY3NfY3JlYXRlX21kaW9kZXYocGNzX2J1cywgMCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL2FsdGVyYV90c2VfbWFpbi5jLTEzOTYtXFx0aWYgKElTX0VSUihwcml2LVxcdTAwM2VwY3MpKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItbWFjLmM9NDQ3PXN0YXRpYyBpbnQgZHBhYTJfcGNzX2NyZWF0ZShzdHJ1Y3QgZHBhYTJfbWFjICptYWMsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItbWFjLmMtNDYwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGFhMi1tYWMuYzo0NjE6XFx0cGNzID0gbHlueF9wY3NfY3JlYXRlX2Z3bm9kZShub2RlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItbWFjLmMtNDYyLVxcdGZ3bm9kZV9oYW5kbGVfcHV0KG5vZGUpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLW1hYy5jLTQ3NS1cXHRcXHRuZXRkZXZfZXJyKG1hYy1cXHUwMDNlbmV0X2RldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItbWFjLmM6NDc2OlxcdFxcdFxcdCAgIFxcXCJseW54X3Bjc19jcmVhdGVfZndub2RlKCkgZmFpbGVkOiAlcGVcXFxcblxcXCIsIHBjcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLW1hYy5jLTQ3Ny1cXHRcXHRyZXR1cm4gUFRSX0VSUihwY3MpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmM9MzQ9c3RhdGljIHN0cnVjdCBwaHlsaW5rX3BjcyAqZW5ldGNfcGZfY3JlYXRlX3BjcyhzdHJ1Y3QgZW5ldGNfcGYgKnBmLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmMtMzYte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jOjM3OlxcdHJldHVybiBseW54X3Bjc19jcmVhdGVfbWRpb2RldihidXMsIDApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jLTM4LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZtYW5fbWVtYWMuYz0xMTIyPXN0YXRpYyBzdHJ1Y3QgcGh5bGlua19wY3MgKm1lbWFjX3Bjc19jcmVhdGUoc3RydWN0IGRldmljZV9ub2RlICptYWNfbm9kZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZtYW5fbWVtYWMuYy0xMTMxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZtYW5fbWVtYWMuYzoxMTMyOlxcdHBjcyA9IGx5bnhfcGNzX2NyZWF0ZV9md25vZGUob2ZfZndub2RlX2hhbmRsZShub2RlKSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vZm1hbl9tZW1hYy5jLTExMzMtXFx0b2Zfbm9kZV9wdXQobm9kZSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb2NmcGdhLmM9NDk2PXN0YXRpYyBpbnQgc29jZnBnYV9kd21hY19wY3NfaW5pdChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb2NmcGdhLmMtNTMxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvY2ZwZ2EuYzo1MzI6XFx0cGNzID0gbHlueF9wY3NfY3JlYXRlX21kaW9kZXYocGNzX2J1cywgMCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29jZnBnYS5jLTUzMy1cXHRpZiAoSVNfRVJSKHBjcykpXFxuLS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguYz0zMDg9c3RhdGljIGNvbnN0IHBoeV9pbnRlcmZhY2VfdCBseW54X2ludGVyZmFjZXNbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jLTMxNy1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguYzozMTg6c3RhdGljIHN0cnVjdCBwaHlsaW5rX3BjcyAqbHlueF9wY3NfY3JlYXRlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpbylcXG5kcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguYy0zMTkte1xcbi0tXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1seW54LmMtMzM3LVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jOjMzODpzdHJ1Y3QgcGh5bGlua19wY3MgKmx5bnhfcGNzX2NyZWF0ZV9tZGlvZGV2KHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBhZGRyKVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jLTMzOS17XFxuLS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguYy0zNDYtXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1seW54LmM6MzQ3OlxcdHBjcyA9IGx5bnhfcGNzX2NyZWF0ZShtZGlvKTtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguYy0zNDgtXFxuLS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguYy0zNTgtfVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jOjM1OTpFWFBPUlRfU1lNQk9MKGx5bnhfcGNzX2NyZWF0ZV9tZGlvZGV2KTtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguYy0zNjAtXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1seW54LmMtMzYxLS8qXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1seW54LmM6MzYyOiAqIGx5bnhfcGNzX2NyZWF0ZV9md25vZGUoKSBjcmVhdGVzIGEgbHlueCBQQ1MgaW5zdGFuY2UgZnJvbSB0aGUgZndub2RlXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1seW54LmMtMzYzLSAqIGRldmljZSBpbmRpY2F0ZWQgYnkgbm9kZS5cXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jLTM3MC0gKi9cXG5kcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguYzozNzE6c3RydWN0IHBoeWxpbmtfcGNzICpseW54X3Bjc19jcmVhdGVfZndub2RlKHN0cnVjdCBmd25vZGVfaGFuZGxlICpub2RlKVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jLTM3Mi17XFxuLS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguYy0zODItXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1seW54LmM6MzgzOlxcdHBjcyA9IGx5bnhfcGNzX2NyZWF0ZShtZGlvKTtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguYy0zODQtXFxuLS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguYy0zOTQtfVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtbHlueC5jOjM5NTpFWFBPUlRfU1lNQk9MX0dQTChseW54X3Bjc19jcmVhdGVfZndub2RlKTtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLWx5bnguYy0zOTYtXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3Bjcy1seW54LmgtMTEtXFxuaW5jbHVkZS9saW51eC9wY3MtbHlueC5oOjEyOnN0cnVjdCBwaHlsaW5rX3BjcyAqbHlueF9wY3NfY3JlYXRlX21kaW9kZXYoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IGFkZHIpO1xcbmluY2x1ZGUvbGludXgvcGNzLWx5bnguaDoxMzpzdHJ1Y3QgcGh5bGlua19wY3MgKmx5bnhfcGNzX2NyZWF0ZV9md25vZGUoc3RydWN0IGZ3bm9kZV9oYW5kbGUgKm5vZGUpO1xcbmluY2x1ZGUvbGludXgvcGNzLWx5bnguaC0xNC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjBUMTc6NDc6NDMuMjQzMzU0NDlaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTIzNDg3NTcxNjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQb3RlbnRpYWwgZm9yIEZ1enppbmcgdGhlc2UgTHlueCBQQ1MgRHJpdmVycyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGBseW54X3Bjc19jcmVhdGVfbWRpb2RldmAgYW5kIGBseW54X3Bjc19jcmVhdGVfZndub2RlYCBhcyB0aGUgZW50cnkgcG9pbnRzIGhlcmUuIFRoZSBjYWxsZXJzIGFyZSBwcmV0dHkgZGl2ZXJzZTogYHZzYzk5NTlfbWRpb19idXNfYWxsb2NgLCBgdnNjOTk1M19tZGlvX2J1c19hbGxvY2AsIGBhbHRlcmFfdHNlX3Byb2JlYCwgYGRwYWEyX3Bjc19jcmVhdGVgLCBgZW5ldGNfcGZfY3JlYXRlX3Bjc2AsIGBtZW1hY19wY3NfY3JlYXRlYCwgYW5kIGBzb2NmcGdhX2R3bWFjX3Bjc19pbml0YC4gQSBxdWljayBnbGFuY2UgdGVsbHMgbWUgbm9uZSBvZiB0aGVzZSBhcmUgZGlyZWN0bHkgcmVsYXRlZCB0byBoYXJkd2FyZSBlbXVsYXRlZCBieSBRRU1VIG91dCBvZiB0aGUgYm94LiBTcGVjaWZpY2FsbHk6IGBmZWxpeF92c2M5OTU5YCBhbmQgYHNldmlsbGVfdnNjOTk1M2AgYXJlIE5YUCBPY2Vsb3QgRFNBIHN3aXRjaGVzLiBgYWx0ZXJhX3RzZV9tYWluYCBpcyBBbHRlcmEgVFNFIE1BQy4gYGRwYWEyLW1hY2AgaXMgTlhQIERQQUEyLiBgZW5ldGNfcGZgIGlzIE5YUCBFTkVUQy4gYGZtYW5fbWVtYWNgIGlzIE5YUCBGTWFuLiBGaW5hbGx5LCBgZHdtYWMtc29jZnBnYWAgaXMgQWx0ZXJhIFNPQ0ZQR0EgRFdNQUMuXG5cblRoZSBEV01BQyBjb25uZWN0aW9uIG1ha2VzIG1lIHRoaW5rIGFib3V0IHN0bW1hYywgc2luY2UgdGhhdCdzIGEgU3lub3BzeXMgRGVzaWduV2FyZSBNQUMuIFFFTVUgKmRvZXMqIGVtdWxhdGUgc29tZSBzdG1tYWMgdmFyaWFudHMgbGlrZSBgeGdtYWNgLCBgaW14X2ZlY2AsIGBhbGx3aW5uZXItc3VuOGktZW1hY2AsIGFuZCBgbnBjbTd4eF9lbWNgLiBCdXQgYGR3bWFjLXNvY2ZwZ2FgIGlzIGV4cGxpY2l0bHkgZm9yIEFsdGVyYSBTT0NGUEdBLiBEb2VzIFFFTVUgZXZlbiBlbXVsYXRlIEFsdGVyYSBTT0NGUEdBP1xuXG5MZXQncyBzZWUuLi4gUUVNVSBoYXMgYGh3L2FybS9zb2NmcGdhLmNgPyBObywgdGhhdCdzIHdyb25nLiBRRU1VIGRvZXMgaGF2ZSBgY3ViaWVib2FyZC5jYCwgYHhpbGlueF96eW5xLmNgLCBldGMuIFdhaXQsIEkgcmVtZW1iZXIgUUVNVSBoYXMgYGh3L2FybS94aWxpbnhfenlucS5jYCBhbmQgYHhpbGlueF96eW5xbXAuY2AsIGJ1dCBBbHRlcmE/IExldCBtZSBjb25maXJtLiBMb29raW5nIHRocm91Z2ggdGhlIFFFTVUgaGFyZHdhcmUgZmlsZXMsIGl0IGRvZXNuJ3Qgc2VlbSB0byBlbXVsYXRlIHRoZSBzYW1lIE1ESU8gYnVzIG9yIFBDUyBmb3IgdGhlc2UgZGV2aWNlcyBpbiBhIHdheSB0aGF0IHdvdWxkIHRyaWdnZXIgYGx5bnhfcGNzX2NvbmZpZ191c3hnbWlpYC5cblxuRnVydGhlcm1vcmUsIGBseW54X3Bjc19jb25maWdfdXN4Z21paWAgaXMgb25seSBjYWxsZWQgd2hlbiB0aGUgYGlmbW9kZWAgaXMgYFBIWV9JTlRFUkZBQ0VfTU9ERV9VU1hHTUlJYCBvciBgUEhZX0lOVEVSRkFDRV9NT0RFXzEwR19RWEdNSUlgLiBUaGlzIHJlcXVpcmVzIGEgdmVyeSBzcGVjaWZpYyBoYXJkd2FyZSBjb25maWd1cmF0aW9uIHZpYSB0aGUgZGV2aWNlIHRyZWUgb3IgQUNQSSB0byBzZXQgdGhlIFBIWSBpbnRlcmZhY2UgbW9kZSB0byBVU1hHTUlJLiBUaGlzIGNvbmZpZ3VyYXRpb24gaXMgbm90IHNvbWV0aGluZyB3ZSdkIGdldCBpbiBhIGdlbmVyaWMgZnV6emluZyBlbnZpcm9ubWVudCBsaWtlIHN5emthbGxlciwgZXNwZWNpYWxseSBvbiB4ODZfNjQgb3IgYXJtNjQgdmlydC4gV2UgZG9uJ3QgaGF2ZSB0aGVzZSBzcGVjaWZpYyBwbGF0Zm9ybSBkZXZpY2VzIG9yIFBDSSBkZXZpY2VzIChsaWtlIEVORVRDKSBwcmVzZW50IGluIHRoYXQgc2V0dXAuXG5cbldhaXQsIEVORVRDICppcyogYSBQQ0kgZGV2aWNlLiBDb3VsZCB3ZSBwcm9iZSB0aGlzIHRocm91Z2ggUENJIGZ1enppbmc/IElmIHN5emthbGxlciBpcyB1c2luZyBgdmhjaWAgb3IgYHBjaWAgZnV6emluZywgaXQgY291bGQgcG90ZW50aWFsbHkgaW5qZWN0IFBDSSBkZXZpY2VzLiBIb3dldmVyLCBFTkVUQyB3b3VsZCByZXF1aXJlIHNwZWNpZmljIFBDSSB2ZW5kb3IvZGV2aWNlIElEcy4gVGhlIG5leHQgc3RlcCBpcyB0byBjaGVjayBgZW5ldGNfcGYuY2AgYW5kIGNvbmZpcm0gdGhvc2UgUENJIElEcy5cblxuXG4iLCJJbnB1dFRva2VucyI6ODYyMCwiT3V0cHV0VG9rZW5zIjo0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk1NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQxNzo0Nzo1NS41OTIxMTM5ODhaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0ODU0NTM2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBjaV9kZXZpY2VfaWQgZW5ldGNfcGZfaWRfdGFibGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYz05NDg9REVDTEFSRV9QQ0lfRklYVVBfRklOQUwoUENJX1ZFTkRPUl9JRF9GUkVFU0NBTEUsIEVORVRDX0RFVl9JRF9QRixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jLTk1MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYzo5NTE6c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIGVuZXRjX3BmX2lkX3RhYmxlW10gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmMtOTUyLVxcdHsgUENJX0RFVklDRShQQ0lfVkVORE9SX0lEX0ZSRUVTQ0FMRSwgRU5FVENfREVWX0lEX1BGKSB9LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQxNzo0Nzo1NS42MzY5NzIxNTNaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTczMDAwNjg2MTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBGZWFzaWJpbGl0eSBBc3Nlc3NtZW50KipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzLCBjb3VsZCBzeXprYWxsZXIncyBQQ0kgZnV6emVyIHRyaWdnZXIgdGhpcz8gSXQgZGVwZW5kcyBpZiBpdCdzIGluIHRoZSBQQ0kgSUQgdGFibGUsIGJ1dCBgbHlueF9wY3NfY29uZmlnX3VzeGdtaWlgIGlzIGFuIE1ESU8gYnVzIG9wZXJhdGlvbiwgd2hpY2ggaXMgYSBiaXQgZGlmZmVyZW50LiBTbywgZG9lcyBgZW5ldGNfcGZgICpjcmVhdGUqIHRoZSBQQ1MgYW5kIHRoZW4gY2FsbHMgYHBoeWxpbmtfc3RhcnRgLCB3aGljaCBpbiB0dXJuIGNhbGxzIGBseW54X3Bjc19jb25maWdgPyBZZXAsIGBlbmV0Y19wZmAgdXNlcyBwaHlsaW5rLCBzbyB0aGF0IHBhcnQgbWFrZXMgc2Vuc2UuXG5cbkJ1dCBob2xkIG9uLCBsZXQgbWUgbG9vayBhdCB0aGUgcGF0Y2ggaXRzZWxmLiBJdCdzIHJlYWxseSBqdXN0IGFkZGluZyBzb21lIE1ESU8gd3JpdGVzIHdpdGhpbiBgbHlueF9wY3NfY29uZmlnX3VzeGdtaWlgLiBJcyB0aGlzIGV2ZW4gd29ydGggc3BlbmRpbmcgdGltZSBvbj8gTG9va2luZyBhdCB0aGUgY29kZSwgaXQncyBhIGJ1bmNoIG9mIHJlZ2lzdGVyIHdyaXRlczogY29uZmlndXJpbmcgZGV2aWNlIGFiaWxpdHksIGF1dG9uZWdvdGlhdGlvbiBhbmQgbGluayB0aW1lcnMuIEVzc2VudGlhbGx5LCBoYXJkd2FyZSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZXMuXG5cbk5vdywgZXZlbiBpZiB0aGUgUENJIGRldmljZSAqY291bGQqIGJlIGZ1enplZCwgdGhlIGNvcmUgbG9naWMgaGVyZSBpcyBzaW1wbGUsIGRldGVybWluaXN0aWMgTURJTyB3cml0ZXMuIE5vIGNvbXBsZXggc3RhdGUgbWFjaGluZXMsIG5vIHRyaWNreSBtZW1vcnkgbWFuYWdlbWVudCwgbm8gb2J2aW91cyBzb2Z0d2FyZSBidWdzIGp1c3QgZnJvbSBsb29raW5nIGF0IHRoZSBjb2RlLCBqdXN0IGEgc2VxdWVuY2Ugb2YgaGFyZHdhcmUgcmVnaXN0ZXIgd3JpdGVzLiBJdCdzIHByZXR0eSBzcGVjaWZpYyB0byB0aGUgaGFyZHdhcmUgdG9vLiBXZSBhcmUgZGVhbGluZyB3aXRoIGEgVVNYR01JSSBpbnRlcmZhY2UgbW9kZSwgd2hpY2ggaXMgbGlrZWx5IHNldCB1cCBieSBkZXZpY2UgdHJlZSBvciBBQ1BJLiBHZW5lcmljIFBDSSBmdXp6aW5nIHdvbid0IGJlIGFibGUgdG8gdHJpZ2dlciB0aGlzIHVubGVzcyBpdCBjYW4gc29tZWhvdyBwcm92aWRlIGEgZmFrZSBkZXZpY2UgdHJlZSwgd2hpY2ggaXMgZGlmZmljdWx0LlxuXG5Db25zaWRlcmluZyB0aGUgcnVsZXMsIGFuZCBteSBleHBlcmllbmNlLCB0aGlzIGZhbGxzIHNxdWFyZWx5IGludG8gdGhlIGNhdGVnb3J5IG9mIFwidmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVVcIi4gVGhpcyBpcyBhbiBOWFAgTHlueCBQQ1MgZHJpdmVyLCB1c2VkIHdpdGggTlhQIGFuZCBBbHRlcmEgaGFyZHdhcmUuIFdlJ3JlIGRlYWxpbmcgd2l0aCBzcGVjaWZpYyBoYXJkd2FyZSBvciBkZXZpY2UgdHJlZSBjb25maWd1cmF0aW9ucywgbm90IHNvbWV0aGluZyByZWFkaWx5IGFjY2Vzc2libGUgaW4gc3RhbmRhcmQgUUVNVS5cblxuVGhlcmVmb3JlLCBnaXZlbiB0aGUgY2hhcmFjdGVyaXN0aWNzIG9mIHRoaXMgcGF0Y2ggYW5kIHRoZSByZXF1aXJlbWVudHMsIHRoaXMgaXMgbm90IHdvcnRoIGZ1enppbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwNTM5LCJPdXRwdXRUb2tlbnMiOjExOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjkzNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQxNzo0ODoxMi45MzcwNDM4MjZaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDA2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IGFkZHMgYSBmZXcgTURJTyByZWdpc3RlciB3cml0ZXMgdG8gdGhlIGhhcmR3YXJlIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlIG9mIHRoZSBOWFAgTHlueCBQQ1MgZHJpdmVyIChwY3MtbHlueCkuIFRoaXMgZHJpdmVyIGlzIHVzZWQgYnkgdmVuZG9yLXNwZWNpZmljIGhhcmR3YXJlIChOWFAgRU5FVEMsIERQQUEsIEFsdGVyYSBUU0UpIHdoaWNoIGFyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudHMuIEZ1cnRoZXJtb3JlLCB0aGUgY2hhbmdlcyBhcmUgcHVyZWx5IGhhcmR3YXJlIGNvbmZpZ3VyYXRpb24gc2VxdWVuY2VzIHdpdGhvdXQgY29tcGxleCBzb2Z0d2FyZSBsb2dpYywgbWFraW5nIHRoZW0gdW5zdWl0YWJsZSBhbmQgdW5yZWFjaGFibGUgZm9yIGdlbmVyaWMga2VybmVsIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IGFkZHMgYSBmZXcgTURJTyByZWdpc3RlciB3cml0ZXMgdG8gdGhlIGhhcmR3YXJlIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlIG9mIHRoZSBOWFAgTHlueCBQQ1MgZHJpdmVyIChwY3MtbHlueCkuIFRoaXMgZHJpdmVyIGlzIHVzZWQgYnkgdmVuZG9yLXNwZWNpZmljIGhhcmR3YXJlIChOWFAgRU5FVEMsIERQQUEsIEFsdGVyYSBUU0UpIHdoaWNoIGFyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudHMuIEZ1cnRoZXJtb3JlLCB0aGUgY2hhbmdlcyBhcmUgcHVyZWx5IGhhcmR3YXJlIGNvbmZpZ3VyYXRpb24gc2VxdWVuY2VzIHdpdGhvdXQgY29tcGxleCBzb2Z0d2FyZSBsb2dpYywgbWFraW5nIHRoZW0gdW5zdWl0YWJsZSBhbmQgdW5yZWFjaGFibGUgZm9yIGdlbmVyaWMga2VybmVsIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQxNzo0ODoxMi45MzcwNzExMzdaIiwiU2VxIjoxNywiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2OTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow8q52f[1] Phase: Running StartedAt: 2026-08-20 17:48:23 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8q52f[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-20 17:48:23 +0000 UTC FinishedAt: 2026-08-20 17:48:45 +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,}