Name: series-workflow8mqvc Phase: Failed StartedAt: 2026-07-08 02:55:07 +0000 UTC FinishedAt: 2026-07-08 03:11:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8mqvc[0] Phase: Succeeded StartedAt: 2026-07-08 02:55:07 +0000 UTC FinishedAt: 2026-07-08 03:11:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8mqvc[0].run-triage Phase: Succeeded StartedAt: 2026-07-08 02:55:07 +0000 UTC FinishedAt: 2026-07-08 03:11:27 +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+CgkJCTx0ZD4yMDI2LzA3LzA4IDAzOjEwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNaWNyb2NoaXAgU3Bhcng1IHN3aXRjaCBkcml2ZXIsIHdoaWNoIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgcGxhdGZvcm0gZHJpdmVyLiBUaGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKGxpa2UgUUVNVSBvciBHQ0UpLCBzbyB0aGUgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDAzOjEwPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgODkyM2UwNjY0NjY3MmY4MDE3ZDBlYTJjZGE1ZGQwMTQ2OWZmNzgxYVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDggMDM6MTA6NTAgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9sYW45Njl4L2xhbjk2OXhfcmVncy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9sYW45Njl4L2xhbjk2OXhfcmVncy5jXG5pbmRleCBhY2U0YmEyMWVlYzQzMy4uM2ZjMmMwMDZiYTEyOWUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L2xhbjk2OXgvbGFuOTY5eF9yZWdzLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvbGFuOTY5eC9sYW45Njl4X3JlZ3MuY1xuQEAgLTk1LDYgJiM0Mzs5NSw3IEBAIGNvbnN0IHVuc2lnbmVkIGludCBsYW45Njl4X2dhZGRyW0dBRERSX0xBU1RdID0ge1xuIFx0W0dBX0hTQ0hfU1lTVEVNXSA9IDM3Mzg0LFxuIFx0W0dBX0hTQ0hfTU1HVF0gPSAzNjI2MCxcbiBcdFtHQV9IU0NIX1RBU19DT05GSUddID0gMzc2OTYsXG4mIzQzO1x0W0dBX0hTQ0hfVEFTX1BST0ZJTEVfQ0ZHXSA9IDM3NzEyLFxuIFx0W0dBX1BUUF9QVFBfQ0ZHXSA9IDUxMixcbiBcdFtHQV9QVFBfUFRQX1RPRF9ET01BSU5TXSA9IDUyOCxcbiBcdFtHQV9QVFBfUEhBU0VfREVURUNUT1JfQ1RSTF0gPSA2MjgsXG5AQCAtMTI5LDYgJiM0MzsxMzAsNyBAQCBjb25zdCB1bnNpZ25lZCBpbnQgbGFuOTY5eF9nY250W0dDTlRfTEFTVF0gPSB7XG4gXHRbR0NfR0NCX1NJT19DVFJMXSA9IDEsXG4gXHRbR0NfSFNDSF9IU0NIX0NGR10gPSAxMTIwLFxuIFx0W0dDX0hTQ0hfSFNDSF9EV1JSXSA9IDMyLFxuJiM0MztcdFtHQ19IU0NIX1RBU19QUk9GSUxFX0NGR10gPSAzMCxcbiBcdFtHQ19QVFBfUFRQX1BJTlNdID0gOCxcbiBcdFtHQ19QVFBfUEhBU0VfREVURUNUT1JfQ1RSTF0gPSA4LFxuIFx0W0dDX1JFV19QT1JUXSA9IDM1LFxuQEAgLTE0NCw2ICYjNDM7MTQ2LDcgQEAgY29uc3QgdW5zaWduZWQgaW50IGxhbjk2OXhfZ3NpemVbR1NJWkVfTEFTVF0gPSB7XG4gXHRbR1dfRkRNQV9GRE1BXSA9IDQ0OCxcbiBcdFtHV19HQ0JfQ0hJUF9SRUdTXSA9IDE4MCxcbiBcdFtHV19IU0NIX1RBU19DT05GSUddID0gMTYsXG4mIzQzO1x0W0dXX0hTQ0hfVEFTX1BST0ZJTEVfQ0ZHXSA9IDY4LFxuIFx0W0dXX1BUUF9QSEFTRV9ERVRFQ1RPUl9DVFJMXSA9IDEyLFxuIFx0W0dXX1FTWVNfUEFVU0VfQ0ZHXSA9IDk4OCxcbiB9O1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X21haW5fcmVncy5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfbWFpbl9yZWdzLmhcbmluZGV4IGQ5ZWY0ZWYxMzdiODBjLi5kMzQ0Njc1MTM2NDg0OCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X21haW5fcmVncy5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9tYWluX3JlZ3MuaFxuQEAgLTUzNjksNiAmIzQzOzUzNjksMTggQEAgZXh0ZXJuIGNvbnN0IHN0cnVjdCBzcGFyeDVfcmVncyAqcmVncztcbiAjZGVmaW5lIEhTQ0hfVEFTX1NUQVRFTUFDSElORV9DRkdfUkVWSVNJVF9ETFlfR0VUKHgpXFxcbiBcdEZJRUxEX0dFVChIU0NIX1RBU19TVEFURU1BQ0hJTkVfQ0ZHX1JFVklTSVRfRExZLCB4KVxuIFxuJiM0MzsvKiBIU0NIOlRBU19QUk9GSUxFX0NGRzpUQVNfUFJPRklMRV9DT05GSUcgKi9cbiYjNDM7I2RlZmluZSBIU0NIX1RBU19QUk9GSUxFX0NPTkZJRyhnKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXG4mIzQzO1x0X19SRUcoVEFSR0VUX0hTQ0gsIDAsIDEsIHJlZ3MtXHUwMDNlZ2FkZHJbR0FfSFNDSF9UQVNfUFJPRklMRV9DRkddLCBnLCAgICAgICBcXFxuJiM0MztcdCAgICAgIHJlZ3MtXHUwMDNlZ2NudFtHQ19IU0NIX1RBU19QUk9GSUxFX0NGR10sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcbiYjNDM7XHQgICAgICByZWdzLVx1MDAzZWdzaXplW0dXX0hTQ0hfVEFTX1BST0ZJTEVfQ0ZHXSwgMzIsIDAsIDEsIDQpXG4mIzQzO1xuJiM0MzsjZGVmaW5lIEhTQ0hfVEFTX1BST0ZJTEVfQ09ORklHX0xJTktfU1BFRUQgICAgICAgR0VOTUFTSygxMCwgOClcbiYjNDM7I2RlZmluZSBIU0NIX1RBU19QUk9GSUxFX0NPTkZJR19MSU5LX1NQRUVEX1NFVCh4KVxcXG4mIzQzO1x0RklFTERfUFJFUChIU0NIX1RBU19QUk9GSUxFX0NPTkZJR19MSU5LX1NQRUVELCB4KVxuJiM0MzsjZGVmaW5lIEhTQ0hfVEFTX1BST0ZJTEVfQ09ORklHX0xJTktfU1BFRURfR0VUKHgpXFxcbiYjNDM7XHRGSUVMRF9HRVQoSFNDSF9UQVNfUFJPRklMRV9DT05GSUdfTElOS19TUEVFRCwgeClcbiYjNDM7XG4gLyogTEFOOTY5WCBPTkxZICovXG4gLyogSFNJT1dSQVA6WE1JSV9DRkc6WE1JSV9DRkcgKi9cbiAjZGVmaW5lIEhTSU9fV1JBUF9YTUlJX0NGRyhnKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9wb3J0LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9wb3J0LmNcbmluZGV4IDYyYzQ5ODkzZGUzYzM3Li5lZjA2YmVkM2E5Y2M0MiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X3BvcnQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfcG9ydC5jXG5AQCAtMTEsNiAmIzQzOzExLDcgQEBcbiAjaW5jbHVkZSBcJiMzNDtzcGFyeDVfbWFpbl9yZWdzLmhcJiMzNDtcbiAjaW5jbHVkZSBcJiMzNDtzcGFyeDVfbWFpbi5oXCYjMzQ7XG4gI2luY2x1ZGUgXCYjMzQ7c3Bhcng1X3BvcnQuaFwmIzM0O1xuJiM0MzsjaW5jbHVkZSBcJiMzNDtzcGFyeDVfcW9zLmhcJiMzNDtcbiBcbiAjZGVmaW5lIFNQWDVfRVRZUEVfVEFHX0MgICAgIDB4ODEwMFxuICNkZWZpbmUgU1BYNV9FVFlQRV9UQUdfUyAgICAgMHg4OGE4XG5AQCAtMTA1MCw2ICYjNDM7MTA1MSw5IEBAIGludCBzcGFyeDVfcG9ydF9jb25maWcoc3RydWN0IHNwYXJ4NSAqc3Bhcng1LFxuIFx0XHQgc3Bhcng1LFxuIFx0XHQgUUZXRF9TV0lUQ0hfUE9SVF9NT0RFKHBvcnQtXHUwMDNlcG9ydG5vKSk7XG4gXG4mIzQzO1x0LyogTm90aWZ5IFRBUyBhYm91dCB0aGUgc3BlZWQuICovXG4mIzQzO1x0c3Bhcng1X3Rhc19zcGVlZChwb3J0LCBjb25mLVx1MDAzZXNwZWVkKTtcbiYjNDM7XG4gXHQvKiBTYXZlIHRoZSBuZXcgdmFsdWVzICovXG4gXHRwb3J0LVx1MDAzZWNvbmYgPSAqY29uZjtcbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9xb3MuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X3Fvcy5jXG5pbmRleCBlNTgwNjcwZjM5OTJiMC4uOTcyZGE4YTcxZjVhYWEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9xb3MuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfcW9zLmNcbkBAIC05LDYgJiM0Mzs5LDE3IEBAXG4gI2luY2x1ZGUgXCYjMzQ7c3Bhcng1X21haW4uaFwmIzM0O1xuICNpbmNsdWRlIFwmIzM0O3NwYXJ4NV9xb3MuaFwmIzM0O1xuIFxuJiM0MztlbnVtIHNwYXJ4NV90YXNfbGlua19zcGVlZCB7XG4mIzQzO1x0VEFTX1NQRUVEX05PX0dCLFxuJiM0MztcdFRBU19TUEVFRF8xMCxcbiYjNDM7XHRUQVNfU1BFRURfMTAwLFxuJiM0MztcdFRBU19TUEVFRF8xMDAwLFxuJiM0MztcdFRBU19TUEVFRF8yNTAwLFxuJiM0MztcdFRBU19TUEVFRF81MDAwLFxuJiM0MztcdFRBU19TUEVFRF8xMDAwMCxcbiYjNDM7XHRUQVNfU1BFRURfMjUwMDAsXG4mIzQzO307XG4mIzQzO1xuIC8qIENhbGN1bGF0ZSBuZXcgYmFzZV90aW1lIGJhc2VkIG9uIGN5Y2xlX3RpbWUuXG4gICpcbiAgKiBUaGUgaGFyZHdhcmUgcmVxdWlyZXMgYSBiYXNlX3RpbWUgdGhhdCBpcyBhbHdheXMgaW4gdGhlIGZ1dHVyZS5cbkBAIC01ODEsMyAmIzQzOzU5Miw0MSBAQCBpbnQgc3Bhcng1X3RjX2V0c19kZWwoc3RydWN0IHNwYXJ4NV9wb3J0ICpwb3J0KVxuIFxuIFx0cmV0dXJuIHNwYXJ4NV9kd3JyX2NvbmZfc2V0KHBvcnQsIFx1MDAyNmR3cnIpO1xuIH1cbiYjNDM7XG4mIzQzO3ZvaWQgc3Bhcng1X3Rhc19zcGVlZChzdHJ1Y3Qgc3Bhcng1X3BvcnQgKnBvcnQsIGludCBzcGVlZClcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBzcGFyeDUgKnNwYXJ4NSA9IHBvcnQtXHUwMDNlc3Bhcng1O1xuJiM0MztcdHU4IHNwZDtcbiYjNDM7XG4mIzQzO1x0c3dpdGNoIChzcGVlZCkge1xuJiM0MztcdGNhc2UgU1BFRURfMTA6XG4mIzQzO1x0XHRzcGQgPSBUQVNfU1BFRURfMTA7XG4mIzQzO1x0XHRicmVhaztcbiYjNDM7XHRjYXNlIFNQRUVEXzEwMDpcbiYjNDM7XHRcdHNwZCA9IFRBU19TUEVFRF8xMDA7XG4mIzQzO1x0XHRicmVhaztcbiYjNDM7XHRjYXNlIFNQRUVEXzEwMDA6XG4mIzQzO1x0XHRzcGQgPSBUQVNfU1BFRURfMTAwMDtcbiYjNDM7XHRcdGJyZWFrO1xuJiM0MztcdGNhc2UgU1BFRURfMjUwMDpcbiYjNDM7XHRcdHNwZCA9IFRBU19TUEVFRF8yNTAwO1xuJiM0MztcdFx0YnJlYWs7XG4mIzQzO1x0Y2FzZSBTUEVFRF81MDAwOlxuJiM0MztcdFx0c3BkID0gVEFTX1NQRUVEXzUwMDA7XG4mIzQzO1x0XHRicmVhaztcbiYjNDM7XHRjYXNlIFNQRUVEXzEwMDAwOlxuJiM0MztcdFx0c3BkID0gVEFTX1NQRUVEXzEwMDAwO1xuJiM0MztcdFx0YnJlYWs7XG4mIzQzO1x0Y2FzZSBTUEVFRF8yNTAwMDpcbiYjNDM7XHRcdHNwZCA9IFRBU19TUEVFRF8yNTAwMDtcbiYjNDM7XHRcdGJyZWFrO1xuJiM0MztcdGRlZmF1bHQ6XG4mIzQzO1x0XHRuZXRkZXZfZXJyKHBvcnQtXHUwMDNlbmRldiwgXCYjMzQ7VEFTOiBVbnN1cHBvcnRlZCBzcGVlZDogJWRcXG5cJiMzNDssIHNwZWVkKTtcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHNweDVfcm13KEhTQ0hfVEFTX1BST0ZJTEVfQ09ORklHX0xJTktfU1BFRURfU0VUKHNwZCksXG4mIzQzO1x0XHQgSFNDSF9UQVNfUFJPRklMRV9DT05GSUdfTElOS19TUEVFRCxcbiYjNDM7XHRcdCBzcGFyeDUsXG4mIzQzO1x0XHQgSFNDSF9UQVNfUFJPRklMRV9DT05GSUcocG9ydC1cdTAwM2Vwb3J0bm8pKTtcbiYjNDM7fVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X3Fvcy5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfcW9zLmhcbmluZGV4IDA0Zjc2ZjFlMjNmNjBhLi5hOTJhNjk5YzU1MWY5OSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X3Fvcy5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9xb3MuaFxuQEAgLTYwLDYgJiM0Mzs2MCw3IEBAIHN0cnVjdCBzcGFyeDVfZHdyciB7XG4gfTtcbiBcbiBpbnQgc3Bhcng1X3Fvc19pbml0KHN0cnVjdCBzcGFyeDUgKnNwYXJ4NSk7XG4mIzQzO3ZvaWQgc3Bhcng1X3Rhc19zcGVlZChzdHJ1Y3Qgc3Bhcng1X3BvcnQgKnBvcnQsIGludCBzcGVlZCk7XG4gXG4gLyogTXVsdGktUXVldWUgUHJpb3JpdHkgKi9cbiBpbnQgc3Bhcng1X3RjX21xcHJpb19hZGQoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIHU4IG51bV90Yyk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfcmVncy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfcmVncy5jXG5pbmRleCAyMjBlODFiNzE0ZDQxNC4uMzg2M2Y5NTRiZDgzMjMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9yZWdzLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X3JlZ3MuY1xuQEAgLTk1LDYgJiM0Mzs5NSw3IEBAIGNvbnN0IHVuc2lnbmVkIGludCBzcGFyeDVfZ2FkZHJbR0FERFJfTEFTVF0gPSB7XG4gXHRbR0FfSFNDSF9TWVNURU1dID0gMTg0MDAwLFxuIFx0W0dBX0hTQ0hfTU1HVF0gPSAxNjIzNjgsXG4gXHRbR0FfSFNDSF9UQVNfQ09ORklHXSA9IDE2MjM4NCxcbiYjNDM7XHRbR0FfSFNDSF9UQVNfUFJPRklMRV9DRkddID0gMTg4NDE2LFxuIFx0W0dBX1BUUF9QVFBfQ0ZHXSA9IDMyMCxcbiBcdFtHQV9QVFBfUFRQX1RPRF9ET01BSU5TXSA9IDMzNixcbiBcdFtHQV9QVFBfUEhBU0VfREVURUNUT1JfQ1RSTF0gPSA0MjAsXG5AQCAtMTI5LDYgJiM0MzsxMzAsNyBAQCBjb25zdCB1bnNpZ25lZCBpbnQgc3Bhcng1X2djbnRbR0NOVF9MQVNUXSA9IHtcbiBcdFtHQ19HQ0JfU0lPX0NUUkxdID0gMyxcbiBcdFtHQ19IU0NIX0hTQ0hfQ0ZHXSA9IDUwNDAsXG4gXHRbR0NfSFNDSF9IU0NIX0RXUlJdID0gNzIsXG4mIzQzO1x0W0dDX0hTQ0hfVEFTX1BST0ZJTEVfQ0ZHXSA9IDEwMCxcbiBcdFtHQ19QVFBfUFRQX1BJTlNdID0gNSxcbiBcdFtHQ19QVFBfUEhBU0VfREVURUNUT1JfQ1RSTF0gPSA1LFxuIFx0W0dDX1JFV19QT1JUXSA9IDcwLFxuQEAgLTE0NCw2ICYjNDM7MTQ2LDcgQEAgY29uc3QgdW5zaWduZWQgaW50IHNwYXJ4NV9nc2l6ZVtHU0laRV9MQVNUXSA9IHtcbiBcdFtHV19GRE1BX0ZETUFdID0gNDI4LFxuIFx0W0dXX0dDQl9DSElQX1JFR1NdID0gNDI0LFxuIFx0W0dXX0hTQ0hfVEFTX0NPTkZJR10gPSAxMixcbiYjNDM7XHRbR1dfSFNDSF9UQVNfUFJPRklMRV9DRkddID0gNjQsXG4gXHRbR1dfUFRQX1BIQVNFX0RFVEVDVE9SX0NUUkxdID0gOCxcbiBcdFtHV19RU1lTX1BBVVNFX0NGR10gPSAxMTI4LFxuIH07XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfcmVncy5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfcmVncy5oXG5pbmRleCBlYTI4MTMwYzIzNDFiYi4uNTg1NTg5YTMxZTkwNjIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9yZWdzLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X3JlZ3MuaFxuQEAgLTEwNCw2ICYjNDM7MTA0LDcgQEAgZW51bSBzcGFyeDVfZ2FkZHJfZW51bSB7XG4gXHRHQV9IU0NIX1NZU1RFTSxcbiBcdEdBX0hTQ0hfTU1HVCxcbiBcdEdBX0hTQ0hfVEFTX0NPTkZJRyxcbiYjNDM7XHRHQV9IU0NIX1RBU19QUk9GSUxFX0NGRyxcbiBcdEdBX1BUUF9QVFBfQ0ZHLFxuIFx0R0FfUFRQX1BUUF9UT0RfRE9NQUlOUyxcbiBcdEdBX1BUUF9QSEFTRV9ERVRFQ1RPUl9DVFJMLFxuQEAgLTEzOSw2ICYjNDM7MTQwLDcgQEAgZW51bSBzcGFyeDVfZ2NudF9lbnVtIHtcbiBcdEdDX0dDQl9TSU9fQ1RSTCxcbiBcdEdDX0hTQ0hfSFNDSF9DRkcsXG4gXHRHQ19IU0NIX0hTQ0hfRFdSUixcbiYjNDM7XHRHQ19IU0NIX1RBU19QUk9GSUxFX0NGRyxcbiBcdEdDX1BUUF9QVFBfUElOUyxcbiBcdEdDX1BUUF9QSEFTRV9ERVRFQ1RPUl9DVFJMLFxuIFx0R0NfUkVXX1BPUlQsXG5AQCAtMTU1LDYgJiM0MzsxNTcsNyBAQCBlbnVtIHNwYXJ4NV9nc2l6ZV9lbnVtIHtcbiBcdEdXX0ZETUFfRkRNQSxcbiBcdEdXX0dDQl9DSElQX1JFR1MsXG4gXHRHV19IU0NIX1RBU19DT05GSUcsXG4mIzQzO1x0R1dfSFNDSF9UQVNfUFJPRklMRV9DRkcsXG4gXHRHV19QVFBfUEhBU0VfREVURUNUT1JfQ1RSTCxcbiBcdEdXX1FTWVNfUEFVU0VfQ0ZHLFxuIFx0R1NJWkVfTEFTVCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAwMzoxMDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWljcm9jaGlwIFNwYXJ4NSBzd2l0Y2ggZHJpdmVyLCB3aGljaCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIHBsYXRmb3JtIGRyaXZlci4gVGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChsaWtlIFFFTVUgb3IgR0NFKSwgc28gdGhlIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgODkyM2UwNjY0NjY3MmY4MDE3ZDBlYTJjZGE1ZGQwMTQ2OWZmNzgxYQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgSnVsIDggMDM6MTA6NTAgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L2xhbjk2OXgvbGFuOTY5eF9yZWdzLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L2xhbjk2OXgvbGFuOTY5eF9yZWdzLmMKaW5kZXggYWNlNGJhMjFlZWM0MzMuLjNmYzJjMDA2YmExMjllIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L2xhbjk2OXgvbGFuOTY5eF9yZWdzLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9sYW45Njl4L2xhbjk2OXhfcmVncy5jCkBAIC05NSw2ICYjNDM7OTUsNyBAQCBjb25zdCB1bnNpZ25lZCBpbnQgbGFuOTY5eF9nYWRkcltHQUREUl9MQVNUXSA9IHsKIAlbR0FfSFNDSF9TWVNURU1dID0gMzczODQsCiAJW0dBX0hTQ0hfTU1HVF0gPSAzNjI2MCwKIAlbR0FfSFNDSF9UQVNfQ09ORklHXSA9IDM3Njk2LAomIzQzOwlbR0FfSFNDSF9UQVNfUFJPRklMRV9DRkddID0gMzc3MTIsCiAJW0dBX1BUUF9QVFBfQ0ZHXSA9IDUxMiwKIAlbR0FfUFRQX1BUUF9UT0RfRE9NQUlOU10gPSA1MjgsCiAJW0dBX1BUUF9QSEFTRV9ERVRFQ1RPUl9DVFJMXSA9IDYyOCwKQEAgLTEyOSw2ICYjNDM7MTMwLDcgQEAgY29uc3QgdW5zaWduZWQgaW50IGxhbjk2OXhfZ2NudFtHQ05UX0xBU1RdID0gewogCVtHQ19HQ0JfU0lPX0NUUkxdID0gMSwKIAlbR0NfSFNDSF9IU0NIX0NGR10gPSAxMTIwLAogCVtHQ19IU0NIX0hTQ0hfRFdSUl0gPSAzMiwKJiM0MzsJW0dDX0hTQ0hfVEFTX1BST0ZJTEVfQ0ZHXSA9IDMwLAogCVtHQ19QVFBfUFRQX1BJTlNdID0gOCwKIAlbR0NfUFRQX1BIQVNFX0RFVEVDVE9SX0NUUkxdID0gOCwKIAlbR0NfUkVXX1BPUlRdID0gMzUsCkBAIC0xNDQsNiAmIzQzOzE0Niw3IEBAIGNvbnN0IHVuc2lnbmVkIGludCBsYW45Njl4X2dzaXplW0dTSVpFX0xBU1RdID0gewogCVtHV19GRE1BX0ZETUFdID0gNDQ4LAogCVtHV19HQ0JfQ0hJUF9SRUdTXSA9IDE4MCwKIAlbR1dfSFNDSF9UQVNfQ09ORklHXSA9IDE2LAomIzQzOwlbR1dfSFNDSF9UQVNfUFJPRklMRV9DRkddID0gNjgsCiAJW0dXX1BUUF9QSEFTRV9ERVRFQ1RPUl9DVFJMXSA9IDEyLAogCVtHV19RU1lTX1BBVVNFX0NGR10gPSA5ODgsCiB9OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfbWFpbl9yZWdzLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9tYWluX3JlZ3MuaAppbmRleCBkOWVmNGVmMTM3YjgwYy4uZDM0NDY3NTEzNjQ4NDggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X21haW5fcmVncy5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X21haW5fcmVncy5oCkBAIC01MzY5LDYgJiM0Mzs1MzY5LDE4IEBAIGV4dGVybiBjb25zdCBzdHJ1Y3Qgc3Bhcng1X3JlZ3MgKnJlZ3M7CiAjZGVmaW5lIEhTQ0hfVEFTX1NUQVRFTUFDSElORV9DRkdfUkVWSVNJVF9ETFlfR0VUKHgpXAogCUZJRUxEX0dFVChIU0NIX1RBU19TVEFURU1BQ0hJTkVfQ0ZHX1JFVklTSVRfRExZLCB4KQogCiYjNDM7LyogSFNDSDpUQVNfUFJPRklMRV9DRkc6VEFTX1BST0ZJTEVfQ09ORklHICovCiYjNDM7I2RlZmluZSBIU0NIX1RBU19QUk9GSUxFX0NPTkZJRyhnKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKJiM0MzsJX19SRUcoVEFSR0VUX0hTQ0gsIDAsIDEsIHJlZ3MtJmd0O2dhZGRyW0dBX0hTQ0hfVEFTX1BST0ZJTEVfQ0ZHXSwgZywgICAgICAgXAomIzQzOwkgICAgICByZWdzLSZndDtnY250W0dDX0hTQ0hfVEFTX1BST0ZJTEVfQ0ZHXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiYjNDM7CSAgICAgIHJlZ3MtJmd0O2dzaXplW0dXX0hTQ0hfVEFTX1BST0ZJTEVfQ0ZHXSwgMzIsIDAsIDEsIDQpCiYjNDM7CiYjNDM7I2RlZmluZSBIU0NIX1RBU19QUk9GSUxFX0NPTkZJR19MSU5LX1NQRUVEICAgICAgIEdFTk1BU0soMTAsIDgpCiYjNDM7I2RlZmluZSBIU0NIX1RBU19QUk9GSUxFX0NPTkZJR19MSU5LX1NQRUVEX1NFVCh4KVwKJiM0MzsJRklFTERfUFJFUChIU0NIX1RBU19QUk9GSUxFX0NPTkZJR19MSU5LX1NQRUVELCB4KQomIzQzOyNkZWZpbmUgSFNDSF9UQVNfUFJPRklMRV9DT05GSUdfTElOS19TUEVFRF9HRVQoeClcCiYjNDM7CUZJRUxEX0dFVChIU0NIX1RBU19QUk9GSUxFX0NPTkZJR19MSU5LX1NQRUVELCB4KQomIzQzOwogLyogTEFOOTY5WCBPTkxZICovCiAvKiBIU0lPV1JBUDpYTUlJX0NGRzpYTUlJX0NGRyAqLwogI2RlZmluZSBIU0lPX1dSQVBfWE1JSV9DRkcoZykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X3BvcnQuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X3BvcnQuYwppbmRleCA2MmM0OTg5M2RlM2MzNy4uZWYwNmJlZDNhOWNjNDIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X3BvcnQuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9wb3J0LmMKQEAgLTExLDYgJiM0MzsxMSw3IEBACiAjaW5jbHVkZSAmIzM0O3NwYXJ4NV9tYWluX3JlZ3MuaCYjMzQ7CiAjaW5jbHVkZSAmIzM0O3NwYXJ4NV9tYWluLmgmIzM0OwogI2luY2x1ZGUgJiMzNDtzcGFyeDVfcG9ydC5oJiMzNDsKJiM0MzsjaW5jbHVkZSAmIzM0O3NwYXJ4NV9xb3MuaCYjMzQ7CiAKICNkZWZpbmUgU1BYNV9FVFlQRV9UQUdfQyAgICAgMHg4MTAwCiAjZGVmaW5lIFNQWDVfRVRZUEVfVEFHX1MgICAgIDB4ODhhOApAQCAtMTA1MCw2ICYjNDM7MTA1MSw5IEBAIGludCBzcGFyeDVfcG9ydF9jb25maWcoc3RydWN0IHNwYXJ4NSAqc3Bhcng1LAogCQkgc3Bhcng1LAogCQkgUUZXRF9TV0lUQ0hfUE9SVF9NT0RFKHBvcnQtJmd0O3BvcnRubykpOwogCiYjNDM7CS8qIE5vdGlmeSBUQVMgYWJvdXQgdGhlIHNwZWVkLiAqLwomIzQzOwlzcGFyeDVfdGFzX3NwZWVkKHBvcnQsIGNvbmYtJmd0O3NwZWVkKTsKJiM0MzsKIAkvKiBTYXZlIHRoZSBuZXcgdmFsdWVzICovCiAJcG9ydC0mZ3Q7Y29uZiA9ICpjb25mOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9xb3MuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X3Fvcy5jCmluZGV4IGU1ODA2NzBmMzk5MmIwLi45NzJkYThhNzFmNWFhYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfcW9zLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfcW9zLmMKQEAgLTksNiAmIzQzOzksMTcgQEAKICNpbmNsdWRlICYjMzQ7c3Bhcng1X21haW4uaCYjMzQ7CiAjaW5jbHVkZSAmIzM0O3NwYXJ4NV9xb3MuaCYjMzQ7CiAKJiM0MztlbnVtIHNwYXJ4NV90YXNfbGlua19zcGVlZCB7CiYjNDM7CVRBU19TUEVFRF9OT19HQiwKJiM0MzsJVEFTX1NQRUVEXzEwLAomIzQzOwlUQVNfU1BFRURfMTAwLAomIzQzOwlUQVNfU1BFRURfMTAwMCwKJiM0MzsJVEFTX1NQRUVEXzI1MDAsCiYjNDM7CVRBU19TUEVFRF81MDAwLAomIzQzOwlUQVNfU1BFRURfMTAwMDAsCiYjNDM7CVRBU19TUEVFRF8yNTAwMCwKJiM0Mzt9OwomIzQzOwogLyogQ2FsY3VsYXRlIG5ldyBiYXNlX3RpbWUgYmFzZWQgb24gY3ljbGVfdGltZS4KICAqCiAgKiBUaGUgaGFyZHdhcmUgcmVxdWlyZXMgYSBiYXNlX3RpbWUgdGhhdCBpcyBhbHdheXMgaW4gdGhlIGZ1dHVyZS4KQEAgLTU4MSwzICYjNDM7NTkyLDQxIEBAIGludCBzcGFyeDVfdGNfZXRzX2RlbChzdHJ1Y3Qgc3Bhcng1X3BvcnQgKnBvcnQpCiAKIAlyZXR1cm4gc3Bhcng1X2R3cnJfY29uZl9zZXQocG9ydCwgJmFtcDtkd3JyKTsKIH0KJiM0MzsKJiM0Mzt2b2lkIHNwYXJ4NV90YXNfc3BlZWQoc3RydWN0IHNwYXJ4NV9wb3J0ICpwb3J0LCBpbnQgc3BlZWQpCiYjNDM7ewomIzQzOwlzdHJ1Y3Qgc3Bhcng1ICpzcGFyeDUgPSBwb3J0LSZndDtzcGFyeDU7CiYjNDM7CXU4IHNwZDsKJiM0MzsKJiM0MzsJc3dpdGNoIChzcGVlZCkgewomIzQzOwljYXNlIFNQRUVEXzEwOgomIzQzOwkJc3BkID0gVEFTX1NQRUVEXzEwOwomIzQzOwkJYnJlYWs7CiYjNDM7CWNhc2UgU1BFRURfMTAwOgomIzQzOwkJc3BkID0gVEFTX1NQRUVEXzEwMDsKJiM0MzsJCWJyZWFrOwomIzQzOwljYXNlIFNQRUVEXzEwMDA6CiYjNDM7CQlzcGQgPSBUQVNfU1BFRURfMTAwMDsKJiM0MzsJCWJyZWFrOwomIzQzOwljYXNlIFNQRUVEXzI1MDA6CiYjNDM7CQlzcGQgPSBUQVNfU1BFRURfMjUwMDsKJiM0MzsJCWJyZWFrOwomIzQzOwljYXNlIFNQRUVEXzUwMDA6CiYjNDM7CQlzcGQgPSBUQVNfU1BFRURfNTAwMDsKJiM0MzsJCWJyZWFrOwomIzQzOwljYXNlIFNQRUVEXzEwMDAwOgomIzQzOwkJc3BkID0gVEFTX1NQRUVEXzEwMDAwOwomIzQzOwkJYnJlYWs7CiYjNDM7CWNhc2UgU1BFRURfMjUwMDA6CiYjNDM7CQlzcGQgPSBUQVNfU1BFRURfMjUwMDA7CiYjNDM7CQlicmVhazsKJiM0MzsJZGVmYXVsdDoKJiM0MzsJCW5ldGRldl9lcnIocG9ydC0mZ3Q7bmRldiwgJiMzNDtUQVM6IFVuc3VwcG9ydGVkIHNwZWVkOiAlZFxuJiMzNDssIHNwZWVkKTsKJiM0MzsJCXJldHVybjsKJiM0MzsJfQomIzQzOwomIzQzOwlzcHg1X3JtdyhIU0NIX1RBU19QUk9GSUxFX0NPTkZJR19MSU5LX1NQRUVEX1NFVChzcGQpLAomIzQzOwkJIEhTQ0hfVEFTX1BST0ZJTEVfQ09ORklHX0xJTktfU1BFRUQsCiYjNDM7CQkgc3Bhcng1LAomIzQzOwkJIEhTQ0hfVEFTX1BST0ZJTEVfQ09ORklHKHBvcnQtJmd0O3BvcnRubykpOwomIzQzO30KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X3Fvcy5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfcW9zLmgKaW5kZXggMDRmNzZmMWUyM2Y2MGEuLmE5MmE2OTljNTUxZjk5IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9xb3MuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9xb3MuaApAQCAtNjAsNiAmIzQzOzYwLDcgQEAgc3RydWN0IHNwYXJ4NV9kd3JyIHsKIH07CiAKIGludCBzcGFyeDVfcW9zX2luaXQoc3RydWN0IHNwYXJ4NSAqc3Bhcng1KTsKJiM0Mzt2b2lkIHNwYXJ4NV90YXNfc3BlZWQoc3RydWN0IHNwYXJ4NV9wb3J0ICpwb3J0LCBpbnQgc3BlZWQpOwogCiAvKiBNdWx0aS1RdWV1ZSBQcmlvcml0eSAqLwogaW50IHNwYXJ4NV90Y19tcXByaW9fYWRkKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCB1OCBudW1fdGMpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfcmVncy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfcmVncy5jCmluZGV4IDIyMGU4MWI3MTRkNDE0Li4zODYzZjk1NGJkODMyMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfcmVncy5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X3JlZ3MuYwpAQCAtOTUsNiAmIzQzOzk1LDcgQEAgY29uc3QgdW5zaWduZWQgaW50IHNwYXJ4NV9nYWRkcltHQUREUl9MQVNUXSA9IHsKIAlbR0FfSFNDSF9TWVNURU1dID0gMTg0MDAwLAogCVtHQV9IU0NIX01NR1RdID0gMTYyMzY4LAogCVtHQV9IU0NIX1RBU19DT05GSUddID0gMTYyMzg0LAomIzQzOwlbR0FfSFNDSF9UQVNfUFJPRklMRV9DRkddID0gMTg4NDE2LAogCVtHQV9QVFBfUFRQX0NGR10gPSAzMjAsCiAJW0dBX1BUUF9QVFBfVE9EX0RPTUFJTlNdID0gMzM2LAogCVtHQV9QVFBfUEhBU0VfREVURUNUT1JfQ1RSTF0gPSA0MjAsCkBAIC0xMjksNiAmIzQzOzEzMCw3IEBAIGNvbnN0IHVuc2lnbmVkIGludCBzcGFyeDVfZ2NudFtHQ05UX0xBU1RdID0gewogCVtHQ19HQ0JfU0lPX0NUUkxdID0gMywKIAlbR0NfSFNDSF9IU0NIX0NGR10gPSA1MDQwLAogCVtHQ19IU0NIX0hTQ0hfRFdSUl0gPSA3MiwKJiM0MzsJW0dDX0hTQ0hfVEFTX1BST0ZJTEVfQ0ZHXSA9IDEwMCwKIAlbR0NfUFRQX1BUUF9QSU5TXSA9IDUsCiAJW0dDX1BUUF9QSEFTRV9ERVRFQ1RPUl9DVFJMXSA9IDUsCiAJW0dDX1JFV19QT1JUXSA9IDcwLApAQCAtMTQ0LDYgJiM0MzsxNDYsNyBAQCBjb25zdCB1bnNpZ25lZCBpbnQgc3Bhcng1X2dzaXplW0dTSVpFX0xBU1RdID0gewogCVtHV19GRE1BX0ZETUFdID0gNDI4LAogCVtHV19HQ0JfQ0hJUF9SRUdTXSA9IDQyNCwKIAlbR1dfSFNDSF9UQVNfQ09ORklHXSA9IDEyLAomIzQzOwlbR1dfSFNDSF9UQVNfUFJPRklMRV9DRkddID0gNjQsCiAJW0dXX1BUUF9QSEFTRV9ERVRFQ1RPUl9DVFJMXSA9IDgsCiAJW0dXX1FTWVNfUEFVU0VfQ0ZHXSA9IDExMjgsCiB9OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfcmVncy5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfcmVncy5oCmluZGV4IGVhMjgxMzBjMjM0MWJiLi41ODU1ODlhMzFlOTA2MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfcmVncy5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X3JlZ3MuaApAQCAtMTA0LDYgJiM0MzsxMDQsNyBAQCBlbnVtIHNwYXJ4NV9nYWRkcl9lbnVtIHsKIAlHQV9IU0NIX1NZU1RFTSwKIAlHQV9IU0NIX01NR1QsCiAJR0FfSFNDSF9UQVNfQ09ORklHLAomIzQzOwlHQV9IU0NIX1RBU19QUk9GSUxFX0NGRywKIAlHQV9QVFBfUFRQX0NGRywKIAlHQV9QVFBfUFRQX1RPRF9ET01BSU5TLAogCUdBX1BUUF9QSEFTRV9ERVRFQ1RPUl9DVFJMLApAQCAtMTM5LDYgJiM0MzsxNDAsNyBAQCBlbnVtIHNwYXJ4NV9nY250X2VudW0gewogCUdDX0dDQl9TSU9fQ1RSTCwKIAlHQ19IU0NIX0hTQ0hfQ0ZHLAogCUdDX0hTQ0hfSFNDSF9EV1JSLAomIzQzOwlHQ19IU0NIX1RBU19QUk9GSUxFX0NGRywKIAlHQ19QVFBfUFRQX1BJTlMsCiAJR0NfUFRQX1BIQVNFX0RFVEVDVE9SX0NUUkwsCiAJR0NfUkVXX1BPUlQsCkBAIC0xNTUsNiAmIzQzOzE1Nyw3IEBAIGVudW0gc3Bhcng1X2dzaXplX2VudW0gewogCUdXX0ZETUFfRkRNQSwKIAlHV19HQ0JfQ0hJUF9SRUdTLAogCUdXX0hTQ0hfVEFTX0NPTkZJRywKJiM0MzsJR1dfSFNDSF9UQVNfUFJPRklMRV9DRkcsCiAJR1dfUFRQX1BIQVNFX0RFVEVDVE9SX0NUUkwsCiAJR1dfUVNZU19QQVVTRV9DRkcsCiAJR1NJWkVfTEFTVCwKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMDM6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTMxNAoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDE4OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFNwYXJ4NSBFdGhlcm5ldCBEcml2ZXIgTW9kaWZpY2F0aW9uKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIHBhdGNoIHRoYXQgaW50cm9kdWNlcyBhIG5ldyBmdW5jdGlvbiwgYHNwYXJ4NV90YXNfc3BlZWRgLCBpbiB0aGUgTWljcm9jaGlwIFNwYXJ4NSBFdGhlcm5ldCBkcml2ZXIuIEl0JiMzOTtzIGluIGBzcGFyeDVfcW9zLmNgLCBhbmQgaXQgbG9va3MgbGlrZSBpdCYjMzk7cyBjYWxsZWQgZnJvbSBgc3Bhcng1X3BvcnRfY29uZmlnYCBpbiBgc3Bhcng1X3BvcnQuY2AuIFRoaXMgc3VnZ2VzdHMgaXQmIzM5O3MgbGlrZWx5IHJlc3BvbnNpYmxlIGZvciB1cGRhdGluZyBzb21lIGhhcmR3YXJlIHJlZ2lzdGVycywgcHJvYmFibHkgcmVsYXRlZCB0byB0aGUgcG9ydCBzcGVlZCBjb25maWd1cmF0aW9uLiBOb3RoaW5nIGltbWVkaWF0ZWx5IHNjcmVhbXMgb3V0IGFzIHByb2JsZW1hdGljLCBidXQgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBpbXBsZW1lbnRhdGlvbiBiZXR0ZXIuCgpUaGUgY3JpdGljYWwgcXVlc3Rpb24gbm93IGlzIHJlYWNoYWJpbGl0eTogQ2FuIHRoaXMgbmV3IGZ1bmN0aW9uICphY3R1YWxseSogZ2V0IGNhbGxlZCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LCB3aGljaCBpcyB3aGVyZSBJJiMzOTtsbCBsaWtlbHkgYmUgdGVzdGluZyB0aGlzPyBUaGUgZHJpdmVyIGl0c2VsZiBpcyBjbGVhcmx5IHRpZWQgdG8gdGhlIGBTUEFSWDVfU1dJVENIYCBjb25maWd1cmF0aW9uIG9wdGlvbi4gTm93LCB0aGUgcmVhbCBpc3N1ZSBpcyBob3cgdGhpcyBkZXZpY2UgYXBwZWFycyBpbiB0aGUgc3lzdGVtLiBJcyBpdCBhIFBDSSBkZXZpY2UsIG9yIGEgcGxhdGZvcm0gZGV2aWNlPyBUaGlzIHdpbGwgZHJhc3RpY2FsbHkgaW5mbHVlbmNlIGl0cyB2aXNpYmlsaXR5IHRvIGEgaHlwZXJ2aXNvci4gSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSBkcml2ZXImIzM5O3MgS2NvbmZpZyBvciBwZXJoYXBzIGV2ZW4gYHNwYXJ4NV9tYWluLmNgIHRvIGZpZ3VyZSBvdXQgaXRzIG5hdHVyZS4gTGV0JiMzOTtzIHNlZSBpZiB0aGlzIGNvbmZpZ3VyYXRpb24gYWN0dWFsbHkgc3VwcG9ydHMgdmlydHVhbGl6YXRpb24sIGFuZCB0aGVuIEkmIzM5O2xsIGFzc2VzcyB0aGUgcG90ZW50aWFsIGltcGFjdCBvZiB0aGlzIHBhdGNoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDAzOjEwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O1NQQVJYNV9TV0lUQ0gmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L0tjb25maWc6MTpjb25maWcgU1BBUlg1X1NXSVRDSFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9LY29uZmlnLTItXHR0cmlzdGF0ZSBcJiMzNDtTcGFyeDUgc3dpdGNoIGRyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvS2NvbmZpZz0xNz1jb25maWcgU1BBUlg1X0RDQlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9LY29uZmlnLTE4LVx0Ym9vbCBcJiMzNDtEYXRhIENlbnRlciBCcmlkZ2luZyAoRENCKSBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L0tjb25maWc6MTk6XHRkZXBlbmRzIG9uIFNQQVJYNV9TV0lUQ0ggXHUwMDI2XHUwMDI2IERDQlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9LY29uZmlnLTIwLVx0ZGVmYXVsdCB5XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9LY29uZmlnPTI4PWNvbmZpZyBMQU45NjlYX1NXSVRDSFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9LY29uZmlnLTI5LVx0Ym9vbCBcJiMzNDtMYW45Njl4IHN3aXRjaCBkcml2ZXJcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvS2NvbmZpZzozMDpcdGRlcGVuZHMgb24gU1BBUlg1X1NXSVRDSFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9LY29uZmlnLTMxLVx0c2VsZWN0IFBBR0VfUE9PTFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvTWFrZWZpbGUtNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvTWFrZWZpbGU6NjpvYmotJChDT05GSUdfU1BBUlg1X1NXSVRDSCkgJiM0Mzs9IHNwYXJ4NS1zd2l0Y2gub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9NYWtlZmlsZS03LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDAzOjEwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYxOTYKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBzdW1tYXJ5LCB0YWtpbmcgb24gdGhlIHBlcnNvbmEgeW91JiMzOTt2ZSByZXF1ZXN0ZWQ6CgoqKkRlY29uc3RydWN0aW5nIERldmljZSBSZWdpc3RyYXRpb24gaW4gYHNwYXJ4NV9tYWluLmNgKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgYHNwYXJ4NV9tYWluLmNgIGhhbmRsZXMgZGV2aWNlIHJlZ2lzdHJhdGlvbi4gU3BlY2lmaWNhbGx5LCBJIHdhbnQgdG8gdHJhY2UgdGhlIGZsb3cg4oCTIGZyb20gYm9vdCBvciBpbml0aWFsaXphdGlvbiwgcmlnaHQgdGhyb3VnaCB0byB0aGUgcG9pbnQgd2hlcmUgdGhlIGRldmljZSBpcyBhY3R1YWxseSBtYWRlIGF2YWlsYWJsZSB0byB0aGUgc3lzdGVtLiBXaGF0IGhvb2tzIGFyZSBpbiBwbGFjZT8gV2hhdCBkYXRhIHN0cnVjdHVyZXMgYXJlIGludm9sdmVkPyBJJiMzOTttIGFudGljaXBhdGluZyB0aGVyZSB3aWxsIGJlIGNhbGxzIHRvIGEgZ2VuZXJpYyBkcml2ZXIgZnJhbWV3b3JrLCBsaWtlbHkgaW52b2x2aW5nIGBzdHJ1Y3QgZGV2aWNlYCBhbmQgYXNzb2NpYXRlZCBtZXRob2RzLiBJIG5lZWQgdG8gc2VlIGhvdyB0aGUgc3BlY2lmaWMgYHNwYXJ4NWAgaGFyZHdhcmUgaXMgZGVzY3JpYmVkIGFuZCBhdHRhY2hlZCB0byB0aGUga2VybmVsJiMzOTtzIGRldmljZSB0cmVlIG9yIHNvbWUgZXF1aXZhbGVudCBtZWNoYW5pc20uIEFyZSB0aGVyZSBjdXN0b20gY29uZmlndXJhdGlvbiBvcHRpb25zIG9yIHF1aXJrcyB0aGF0IG5lZWQgdG8gYmUgYWRkcmVzc2VkIGF0IHRoaXMgc3RhZ2U/IEFyZSBpbnRlcnJ1cHRzIHNldCB1cCBoZXJlLCBvciBpcyB0aGF0IGRlZmVycmVkPyBJJiMzOTttIHRoaW5raW5nIGFib3V0IHJlc291cmNlIGFsbG9jYXRpb24g4oCTIG1lbW9yeSByZWdpb25zLCBpbnRlcnJ1cHQgbGluZXMsIERNQSBjaGFubmVscy4uLiBIb3cgYXJlIHRob3NlIG1hbmFnZWQgYW5kIGNsYWltZWQgZHVyaW5nIHJlZ2lzdHJhdGlvbj8gSXTigJlzIGFsc28gY3J1Y2lhbCB0byBzZWUgaG93IGVycm9yIGhhbmRsaW5nIGlzIGltcGxlbWVudGVkIGR1cmluZyB0aGlzIHByb2Nlc3MsIGFuZCBpZiB0aGVyZSBhcmUgZmFsbGJhY2sgbWVjaGFuaXNtcyBzaG91bGQgdGhlIGluaXRpYWwgcmVnaXN0cmF0aW9uIGZhaWwuIEkgbmVlZCB0byBzcG90IHRoZSBjcml0aWNhbCBwb2ludHMgd2hlcmUgaXQgbWlnaHQgYmUgcG9zc2libGUgdG8gaW5qZWN0IHNvbWUgY3VzdG9tIGNvZGUgZm9yIG15IG93biByZXF1aXJlbWVudHMuIFRoaXMgaXMgd2hlcmUgdGhlIHJ1YmJlciBtZWV0cyB0aGUgcm9hZCwgc28gbGV0JiMzOTtzIGdldCBpbnRvIGl0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDAzOjExPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21vZHVsZV8uKmRyaXZlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X21haW4uYz0xMTEyPXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIG1jaHBfc3Bhcng1X2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9tYWluLmMtMTEyMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X21haW4uYzoxMTIxOm1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIobWNocF9zcGFyeDVfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X21haW4uYy0xMTIyLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDAzOjExPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY2ODkKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkFuYWx5emluZyB0aGUgUGxhdGZvcm0gRHJpdmVyKioKCkFscmlnaHQsIG15IGluaXRpYWwgcmVhZCBpcyB0aGF0IHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYSBwbGF0Zm9ybSBkcml2ZXIgaGVyZS4gTXkgaW1tZWRpYXRlIGZvY3VzLCB0aGVuLCBpcyB1bmRlcnN0YW5kaW5nIGl0cyBpbnRlcmFjdGlvbiB3aXRoIHRoZSBicm9hZGVyIHN5c3RlbSBhcmNoaXRlY3R1cmUuIFRoZSBrZXkgaXMgaW4gdGhlIG1hdGNoIHRhYmxlLiBUaGF0JiMzOTtzIHdoZXJlIHRoZSBjcnVjaWFsIGRldGFpbHMgcmVnYXJkaW5nIGRldmljZSBpZGVudGlmaWNhdGlvbiBhbmQgYmluZGluZyByZXNpZGUuIExldCBtZSBkcmlsbCBkb3duIGFuZCBleGFtaW5lIHRoaXMgdGFibGUgdG8gdW5kZXJzdGFuZCB3aGljaCBkZXZpY2VzIHRoaXMgZHJpdmVyIGlzIGRlc2lnbmVkIHRvIHdvcmsgd2l0aCwgYW5kIHRoZSBzcGVjaWZpY3Mgb2YgdGhlIG1hdGNoIGNyaXRlcmlhLiBUaGlzIGdpdmVzIHRoZSBmcmFtZXdvcmsgZm9yIGlkZW50aWZ5aW5nIHdoYXQgdGhpcyBkb2VzLCBhbmQgd2hhdCBzeXN0ZW1zIGl0IG5lZWRzIHRvIGhvb2sgaW50by4gSSYjMzk7bGwgbmVlZCB0byBzZWUgaWYgaXQmIzM5O3MgYmFzZWQgb24gbmFtZSBtYXRjaGluZywgSUQgbWF0Y2hpbmcsIG9yIHNvbWUgbW9yZSBjb21wbGV4IHByb3BlcnR5IG1hdGNoaW5nIHNjaGVtZSB0byBmdWxseSBncmFzcCBpdHMgZnVuY3Rpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMDM6MTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7b2ZfZGV2aWNlX2lkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfbWFpbi5jPTEwOTQ9c3RhdGljIGNvbnN0IHN0cnVjdCBzcGFyeDVfbWF0Y2hfZGF0YSBzcGFyeDVfZGVzYyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9tYWluLmMtMTEwMi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X21haW4uYzoxMTAzOnN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIG1jaHBfc3Bhcng1X21hdGNoW10gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9tYWluLmMtMTEwNC1cdHsgLmNvbXBhdGlibGUgPSBcJiMzNDttaWNyb2NoaXAsc3Bhcng1LXN3aXRjaFwmIzM0OywgLmRhdGEgPSBcdTAwMjZzcGFyeDVfZGVzYyB9LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDAzOjExPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcwOTkKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAxNTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBDaGFsbGVuZ2U6IEZ1enppbmcgYSBIYXJkd2FyZS1TcGVjaWZpYyBEcml2ZXIqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgZGV2aWNlLCBhIHBsYXRmb3JtIGRldmljZSBzcGVjaWZpY2FsbHkgZGVzaWduZWQgYXJvdW5kIGEgJiMzNDttaWNyb2NoaXAsc3Bhcng1LXN3aXRjaCYjMzQ7LiBSaWdodCBhd2F5LCBJJiMzOTttIHRoaW5raW5nIHRoaXMgaXMgZ29pbmcgdG8gYmUgdHJpY2t5LiBCZWluZyBoYXJkd2FyZS1zcGVjaWZpYyBtZWFucyBJIGNhbiYjMzk7dCBqdXN0IHRocm93IGl0IGludG8gYSBnZW5lcmljIHZpcnR1YWxpemVkIHNldHVwIGxpa2UgUUVNVSBvciBHQ0UgYW5kIGV4cGVjdCBpdCB0byB3b3JrIHdpdGhvdXQgc29tZSBzZXJpb3VzIGhhcmR3YXJlIGVtdWxhdGlvbiwgYW5kIEkga25vdyB0aGVyZSBpc24mIzM5O3QgYW55IHN0YW5kYXJkIFFFTVUgc3VwcG9ydCBmb3IgdGhpcyBwYXJ0aWN1bGFyIGRldmljZS4KCkhvbGQgb24gYSBzZWNvbmQsIHRob3VnaCwgc3l6a2FsbGVyICpkb2VzKiBoYXZlIHNvbWUgZmVhdHVyZXMgZm9yIGluamVjdGluZyBwbGF0Zm9ybSBkZXZpY2VzLCB3aGljaCBpcyBwcm9taXNpbmcuIEJ1dCBJIGtub3cgZnJvbSBleHBlcmllbmNlIHRoYXQgaXQgcmFyZWx5IGdvZXMgdGhlIGV4dHJhIG1pbGUgdG8gZW11bGF0ZSB0aGUgaGFyZHdhcmUgcmVnaXN0ZXJzLiBTbywgaWYgdGhlIGRyaXZlciBhY3R1YWxseSB0cmllcyB0byByZWFkIG9yIHdyaXRlIHRvIGFueSBvZiB0aG9zZSByZWdpc3RlcnMsIHdlJiMzOTtyZSBsaWtlbHkgZ29pbmcgdG8gZ2V0IGEgY3Jhc2ggb3IgdGhlIHByb2JlIGlzIGp1c3QgZ29pbmcgdG8gZmFpbCBzaW5jZSB0aGUgaGFyZHdhcmUgaXNuJiMzOTt0IHBoeXNpY2FsbHkgcHJlc2VudCBvciBjb3JyZWN0bHkgZW11bGF0ZWQuCgpBbHJpZ2h0LCB0aGUgc21hcnQgbW92ZSBoZXJlIGlzIHRvIGRpZyBpbnRvIHRoZSBkcml2ZXImIzM5O3MgY29kZSBhbmQgc2VlIGlmIGl0IG1hcHMgYW55IG1lbW9yeSBvciByZWFkcyBkYXRhIGZyb20gaXQuIFRoYXQmIzM5O2xsIGJlIHRoZSB0ZWxsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAwMzoxMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkZXZtX2lvcmVtYXAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9tYWluLmM9MjY4PXN0YXRpYyBpbnQgc3Bhcng1X2NyZWF0ZV90YXJnZXRzKHN0cnVjdCBzcGFyeDUgKnNwYXJ4NSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9tYWluLmMtMjkzLVx0XHR9XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9tYWluLmM6Mjk0Olx0XHRpb21lbVtpZHhdID0gZGV2bV9pb3JlbWFwKHNwYXJ4NS1cdTAwM2VkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9tYWluLmMtMjk1LVx0XHRcdFx0XHQgIGlvcmVzW2lkeF0tXHUwMDNlc3RhcnQsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDAzOjExPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc3MDAKCQkJCQkJCW91dHB1dDogODIKCQkJCQkJCXRob3VnaHRzOiAxNDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBGZWFzaWJpbGl0eSBBc3Nlc3NtZW50KioKCk9rYXksIHNvIHRoaXMgY29kZSB1c2VzIGBkZXZtX2lvcmVtYXBgLCB3aGljaCBpbmRpY2F0ZXMgaXQmIzM5O3MgbGlrZWx5IHJlYWRpbmcgYW5kIHdyaXRpbmcgdG8gcmVnaXN0ZXJzLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsICYjMzQ7Y2FuIHRoaXMgYmUgZnV6emVkIGVmZmVjdGl2ZWx5PyYjMzQ7IFRoZSBjaGFsbGVuZ2UsIGFzIEkgdW5kZXJzdGFuZCBpdCwgc3RlbXMgZnJvbSB0aGUgZHJpdmVyJiMzOTtzIG5hdHVyZS4gSXQmIzM5O3MgYSBoYXJkd2FyZS1zcGVjaWZpYyBwbGF0Zm9ybSBkcml2ZXIsIHRhcmdldGluZyBzb21ldGhpbmcgbGlrZSBhIE1pY3JvY2hpcCBTcGFyeDUgc3dpdGNoLiBUaGVzZSBhcmUgZ2VuZXJhbGx5IGluYWNjZXNzaWJsZSB0byBzeXprYWxsZXIgdW5sZXNzIHdlIGhhdmUgYSBzcGVjaWFsaXplZCBlbXVsYXRvciBvciBhIHN1aXRhYmxlIGR1bW15IGRyaXZlciBpbiBwbGFjZS4KClRoZXJlZm9yZSwgYmVmb3JlIEkgZGVkaWNhdGUgYW55IHRpbWUgdG8gY3JhZnRpbmcgZnV6emluZyByb3V0aW5lcywgSSBzaG91bGQgdmVyaWZ5IHRoZSBkcml2ZXIgdHlwZS4gSXQgYXBwZWFycyBpdCBpcyBhIHN0YW5kYXJkIGhhcmR3YXJlIGRyaXZlci4gR2l2ZW4gdGhpcyBjbGFzc2lmaWNhdGlvbiwgaXQmIzM5O3MgaGlnaGx5IGltcHJvYmFibGUgdGhhdCBmdXp6aW5nIHdvdWxkIHlpZWxkIHVzZWZ1bCByZXN1bHRzIHdpdGhvdXQgYW4gdW51c3VhbCBzZXR1cC4KClRoZXJlZm9yZSwgSSYjMzk7bSBnb2luZyB0byByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgYW5kIGluY2x1ZGUgYSBqdXN0aWZpY2F0aW9uLiBUaGUgcmVhc29uaW5nIGlzIHN0cmFpZ2h0Zm9yd2FyZDogdGhpcyBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIHBsYXRmb3JtIGRyaXZlciwgc3BlY2lmaWNhbGx5IGRlc2lnbmVkIGZvciBhIE1pY3JvY2hpcCBTcGFyeDUgc3dpdGNoLiBUaGUgU3Bhcng1IHN3aXRjaCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBJIG5lZWQgdG8gZG9jdW1lbnQgdGhpcyBjbGVhcmx5IHNvIHRoZSBkZWNpc2lvbiBpcyBub3QgbWlzaW50ZXJwcmV0ZWQgbGF0ZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDAzOjExPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1pY3JvY2hpcCBTcGFyeDUgc3dpdGNoIGRyaXZlciwgd2hpY2ggaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBwbGF0Zm9ybSBkcml2ZXIuIFRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAobGlrZSBRRU1VIG9yIEdDRSksIHNvIHRoZSBjb2RlIHBhdGhzIGFyZSB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNaWNyb2NoaXAgU3Bhcng1IHN3aXRjaCBkcml2ZXIsIHdoaWNoIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgcGxhdGZvcm0gZHJpdmVyLiBUaGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKGxpa2UgUUVNVSBvciBHQ0UpLCBzbyB0aGUgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMDhUMDM6MTA6NTIuNjE2ODA2NzgyWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjM0NzA3NDgwNjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNaWNyb2NoaXAgU3Bhcng1IHN3aXRjaCBkcml2ZXIsIHdoaWNoIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgcGxhdGZvcm0gZHJpdmVyLiBUaGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKGxpa2UgUUVNVSBvciBHQ0UpLCBzbyB0aGUgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQwMzoxMDo1Mi42MTY4MTI1MDJaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY5MDgzOTg0NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDg5MjNlMDY2NDY2NzJmODAxN2QwZWEyY2RhNWRkMDE0NjlmZjc4MWFcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBKdWwgOCAwMzoxMDo1MCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L2xhbjk2OXgvbGFuOTY5eF9yZWdzLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L2xhbjk2OXgvbGFuOTY5eF9yZWdzLmNcXG5pbmRleCBhY2U0YmEyMWVlYzQzMy4uM2ZjMmMwMDZiYTEyOWUgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9sYW45Njl4L2xhbjk2OXhfcmVncy5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9sYW45Njl4L2xhbjk2OXhfcmVncy5jXFxuQEAgLTk1LDYgKzk1LDcgQEAgY29uc3QgdW5zaWduZWQgaW50IGxhbjk2OXhfZ2FkZHJbR0FERFJfTEFTVF0gPSB7XFxuIFxcdFtHQV9IU0NIX1NZU1RFTV0gPSAzNzM4NCxcXG4gXFx0W0dBX0hTQ0hfTU1HVF0gPSAzNjI2MCxcXG4gXFx0W0dBX0hTQ0hfVEFTX0NPTkZJR10gPSAzNzY5NixcXG4rXFx0W0dBX0hTQ0hfVEFTX1BST0ZJTEVfQ0ZHXSA9IDM3NzEyLFxcbiBcXHRbR0FfUFRQX1BUUF9DRkddID0gNTEyLFxcbiBcXHRbR0FfUFRQX1BUUF9UT0RfRE9NQUlOU10gPSA1MjgsXFxuIFxcdFtHQV9QVFBfUEhBU0VfREVURUNUT1JfQ1RSTF0gPSA2MjgsXFxuQEAgLTEyOSw2ICsxMzAsNyBAQCBjb25zdCB1bnNpZ25lZCBpbnQgbGFuOTY5eF9nY250W0dDTlRfTEFTVF0gPSB7XFxuIFxcdFtHQ19HQ0JfU0lPX0NUUkxdID0gMSxcXG4gXFx0W0dDX0hTQ0hfSFNDSF9DRkddID0gMTEyMCxcXG4gXFx0W0dDX0hTQ0hfSFNDSF9EV1JSXSA9IDMyLFxcbitcXHRbR0NfSFNDSF9UQVNfUFJPRklMRV9DRkddID0gMzAsXFxuIFxcdFtHQ19QVFBfUFRQX1BJTlNdID0gOCxcXG4gXFx0W0dDX1BUUF9QSEFTRV9ERVRFQ1RPUl9DVFJMXSA9IDgsXFxuIFxcdFtHQ19SRVdfUE9SVF0gPSAzNSxcXG5AQCAtMTQ0LDYgKzE0Niw3IEBAIGNvbnN0IHVuc2lnbmVkIGludCBsYW45Njl4X2dzaXplW0dTSVpFX0xBU1RdID0ge1xcbiBcXHRbR1dfRkRNQV9GRE1BXSA9IDQ0OCxcXG4gXFx0W0dXX0dDQl9DSElQX1JFR1NdID0gMTgwLFxcbiBcXHRbR1dfSFNDSF9UQVNfQ09ORklHXSA9IDE2LFxcbitcXHRbR1dfSFNDSF9UQVNfUFJPRklMRV9DRkddID0gNjgsXFxuIFxcdFtHV19QVFBfUEhBU0VfREVURUNUT1JfQ1RSTF0gPSAxMixcXG4gXFx0W0dXX1FTWVNfUEFVU0VfQ0ZHXSA9IDk4OCxcXG4gfTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfbWFpbl9yZWdzLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9tYWluX3JlZ3MuaFxcbmluZGV4IGQ5ZWY0ZWYxMzdiODBjLi5kMzQ0Njc1MTM2NDg0OCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9tYWluX3JlZ3MuaFxcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X21haW5fcmVncy5oXFxuQEAgLTUzNjksNiArNTM2OSwxOCBAQCBleHRlcm4gY29uc3Qgc3RydWN0IHNwYXJ4NV9yZWdzICpyZWdzO1xcbiAjZGVmaW5lIEhTQ0hfVEFTX1NUQVRFTUFDSElORV9DRkdfUkVWSVNJVF9ETFlfR0VUKHgpXFxcXFxcbiBcXHRGSUVMRF9HRVQoSFNDSF9UQVNfU1RBVEVNQUNISU5FX0NGR19SRVZJU0lUX0RMWSwgeClcXG4gXFxuKy8qIEhTQ0g6VEFTX1BST0ZJTEVfQ0ZHOlRBU19QUk9GSUxFX0NPTkZJRyAqL1xcbisjZGVmaW5lIEhTQ0hfVEFTX1BST0ZJTEVfQ09ORklHKGcpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcXFxcbitcXHRfX1JFRyhUQVJHRVRfSFNDSCwgMCwgMSwgcmVncy1cXHUwMDNlZ2FkZHJbR0FfSFNDSF9UQVNfUFJPRklMRV9DRkddLCBnLCAgICAgICBcXFxcXFxuK1xcdCAgICAgIHJlZ3MtXFx1MDAzZWdjbnRbR0NfSFNDSF9UQVNfUFJPRklMRV9DRkddLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXFxcXG4rXFx0ICAgICAgcmVncy1cXHUwMDNlZ3NpemVbR1dfSFNDSF9UQVNfUFJPRklMRV9DRkddLCAzMiwgMCwgMSwgNClcXG4rXFxuKyNkZWZpbmUgSFNDSF9UQVNfUFJPRklMRV9DT05GSUdfTElOS19TUEVFRCAgICAgICBHRU5NQVNLKDEwLCA4KVxcbisjZGVmaW5lIEhTQ0hfVEFTX1BST0ZJTEVfQ09ORklHX0xJTktfU1BFRURfU0VUKHgpXFxcXFxcbitcXHRGSUVMRF9QUkVQKEhTQ0hfVEFTX1BST0ZJTEVfQ09ORklHX0xJTktfU1BFRUQsIHgpXFxuKyNkZWZpbmUgSFNDSF9UQVNfUFJPRklMRV9DT05GSUdfTElOS19TUEVFRF9HRVQoeClcXFxcXFxuK1xcdEZJRUxEX0dFVChIU0NIX1RBU19QUk9GSUxFX0NPTkZJR19MSU5LX1NQRUVELCB4KVxcbitcXG4gLyogTEFOOTY5WCBPTkxZICovXFxuIC8qIEhTSU9XUkFQOlhNSUlfQ0ZHOlhNSUlfQ0ZHICovXFxuICNkZWZpbmUgSFNJT19XUkFQX1hNSUlfQ0ZHKGcpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFxcXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X3BvcnQuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X3BvcnQuY1xcbmluZGV4IDYyYzQ5ODkzZGUzYzM3Li5lZjA2YmVkM2E5Y2M0MiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9wb3J0LmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9wb3J0LmNcXG5AQCAtMTEsNiArMTEsNyBAQFxcbiAjaW5jbHVkZSBcXFwic3Bhcng1X21haW5fcmVncy5oXFxcIlxcbiAjaW5jbHVkZSBcXFwic3Bhcng1X21haW4uaFxcXCJcXG4gI2luY2x1ZGUgXFxcInNwYXJ4NV9wb3J0LmhcXFwiXFxuKyNpbmNsdWRlIFxcXCJzcGFyeDVfcW9zLmhcXFwiXFxuIFxcbiAjZGVmaW5lIFNQWDVfRVRZUEVfVEFHX0MgICAgIDB4ODEwMFxcbiAjZGVmaW5lIFNQWDVfRVRZUEVfVEFHX1MgICAgIDB4ODhhOFxcbkBAIC0xMDUwLDYgKzEwNTEsOSBAQCBpbnQgc3Bhcng1X3BvcnRfY29uZmlnKHN0cnVjdCBzcGFyeDUgKnNwYXJ4NSxcXG4gXFx0XFx0IHNwYXJ4NSxcXG4gXFx0XFx0IFFGV0RfU1dJVENIX1BPUlRfTU9ERShwb3J0LVxcdTAwM2Vwb3J0bm8pKTtcXG4gXFxuK1xcdC8qIE5vdGlmeSBUQVMgYWJvdXQgdGhlIHNwZWVkLiAqL1xcbitcXHRzcGFyeDVfdGFzX3NwZWVkKHBvcnQsIGNvbmYtXFx1MDAzZXNwZWVkKTtcXG4rXFxuIFxcdC8qIFNhdmUgdGhlIG5ldyB2YWx1ZXMgKi9cXG4gXFx0cG9ydC1cXHUwMDNlY29uZiA9ICpjb25mO1xcbiBcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfcW9zLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9xb3MuY1xcbmluZGV4IGU1ODA2NzBmMzk5MmIwLi45NzJkYThhNzFmNWFhYSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9xb3MuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X3Fvcy5jXFxuQEAgLTksNiArOSwxNyBAQFxcbiAjaW5jbHVkZSBcXFwic3Bhcng1X21haW4uaFxcXCJcXG4gI2luY2x1ZGUgXFxcInNwYXJ4NV9xb3MuaFxcXCJcXG4gXFxuK2VudW0gc3Bhcng1X3Rhc19saW5rX3NwZWVkIHtcXG4rXFx0VEFTX1NQRUVEX05PX0dCLFxcbitcXHRUQVNfU1BFRURfMTAsXFxuK1xcdFRBU19TUEVFRF8xMDAsXFxuK1xcdFRBU19TUEVFRF8xMDAwLFxcbitcXHRUQVNfU1BFRURfMjUwMCxcXG4rXFx0VEFTX1NQRUVEXzUwMDAsXFxuK1xcdFRBU19TUEVFRF8xMDAwMCxcXG4rXFx0VEFTX1NQRUVEXzI1MDAwLFxcbit9O1xcbitcXG4gLyogQ2FsY3VsYXRlIG5ldyBiYXNlX3RpbWUgYmFzZWQgb24gY3ljbGVfdGltZS5cXG4gICpcXG4gICogVGhlIGhhcmR3YXJlIHJlcXVpcmVzIGEgYmFzZV90aW1lIHRoYXQgaXMgYWx3YXlzIGluIHRoZSBmdXR1cmUuXFxuQEAgLTU4MSwzICs1OTIsNDEgQEAgaW50IHNwYXJ4NV90Y19ldHNfZGVsKHN0cnVjdCBzcGFyeDVfcG9ydCAqcG9ydClcXG4gXFxuIFxcdHJldHVybiBzcGFyeDVfZHdycl9jb25mX3NldChwb3J0LCBcXHUwMDI2ZHdycik7XFxuIH1cXG4rXFxuK3ZvaWQgc3Bhcng1X3Rhc19zcGVlZChzdHJ1Y3Qgc3Bhcng1X3BvcnQgKnBvcnQsIGludCBzcGVlZClcXG4re1xcbitcXHRzdHJ1Y3Qgc3Bhcng1ICpzcGFyeDUgPSBwb3J0LVxcdTAwM2VzcGFyeDU7XFxuK1xcdHU4IHNwZDtcXG4rXFxuK1xcdHN3aXRjaCAoc3BlZWQpIHtcXG4rXFx0Y2FzZSBTUEVFRF8xMDpcXG4rXFx0XFx0c3BkID0gVEFTX1NQRUVEXzEwO1xcbitcXHRcXHRicmVhaztcXG4rXFx0Y2FzZSBTUEVFRF8xMDA6XFxuK1xcdFxcdHNwZCA9IFRBU19TUEVFRF8xMDA7XFxuK1xcdFxcdGJyZWFrO1xcbitcXHRjYXNlIFNQRUVEXzEwMDA6XFxuK1xcdFxcdHNwZCA9IFRBU19TUEVFRF8xMDAwO1xcbitcXHRcXHRicmVhaztcXG4rXFx0Y2FzZSBTUEVFRF8yNTAwOlxcbitcXHRcXHRzcGQgPSBUQVNfU1BFRURfMjUwMDtcXG4rXFx0XFx0YnJlYWs7XFxuK1xcdGNhc2UgU1BFRURfNTAwMDpcXG4rXFx0XFx0c3BkID0gVEFTX1NQRUVEXzUwMDA7XFxuK1xcdFxcdGJyZWFrO1xcbitcXHRjYXNlIFNQRUVEXzEwMDAwOlxcbitcXHRcXHRzcGQgPSBUQVNfU1BFRURfMTAwMDA7XFxuK1xcdFxcdGJyZWFrO1xcbitcXHRjYXNlIFNQRUVEXzI1MDAwOlxcbitcXHRcXHRzcGQgPSBUQVNfU1BFRURfMjUwMDA7XFxuK1xcdFxcdGJyZWFrO1xcbitcXHRkZWZhdWx0OlxcbitcXHRcXHRuZXRkZXZfZXJyKHBvcnQtXFx1MDAzZW5kZXYsIFxcXCJUQVM6IFVuc3VwcG9ydGVkIHNwZWVkOiAlZFxcXFxuXFxcIiwgc3BlZWQpO1xcbitcXHRcXHRyZXR1cm47XFxuK1xcdH1cXG4rXFxuK1xcdHNweDVfcm13KEhTQ0hfVEFTX1BST0ZJTEVfQ09ORklHX0xJTktfU1BFRURfU0VUKHNwZCksXFxuK1xcdFxcdCBIU0NIX1RBU19QUk9GSUxFX0NPTkZJR19MSU5LX1NQRUVELFxcbitcXHRcXHQgc3Bhcng1LFxcbitcXHRcXHQgSFNDSF9UQVNfUFJPRklMRV9DT05GSUcocG9ydC1cXHUwMDNlcG9ydG5vKSk7XFxuK31cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfcW9zLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9xb3MuaFxcbmluZGV4IDA0Zjc2ZjFlMjNmNjBhLi5hOTJhNjk5YzU1MWY5OSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9xb3MuaFxcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X3Fvcy5oXFxuQEAgLTYwLDYgKzYwLDcgQEAgc3RydWN0IHNwYXJ4NV9kd3JyIHtcXG4gfTtcXG4gXFxuIGludCBzcGFyeDVfcW9zX2luaXQoc3RydWN0IHNwYXJ4NSAqc3Bhcng1KTtcXG4rdm9pZCBzcGFyeDVfdGFzX3NwZWVkKHN0cnVjdCBzcGFyeDVfcG9ydCAqcG9ydCwgaW50IHNwZWVkKTtcXG4gXFxuIC8qIE11bHRpLVF1ZXVlIFByaW9yaXR5ICovXFxuIGludCBzcGFyeDVfdGNfbXFwcmlvX2FkZChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgdTggbnVtX3RjKTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfcmVncy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfcmVncy5jXFxuaW5kZXggMjIwZTgxYjcxNGQ0MTQuLjM4NjNmOTU0YmQ4MzIzIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X3JlZ3MuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X3JlZ3MuY1xcbkBAIC05NSw2ICs5NSw3IEBAIGNvbnN0IHVuc2lnbmVkIGludCBzcGFyeDVfZ2FkZHJbR0FERFJfTEFTVF0gPSB7XFxuIFxcdFtHQV9IU0NIX1NZU1RFTV0gPSAxODQwMDAsXFxuIFxcdFtHQV9IU0NIX01NR1RdID0gMTYyMzY4LFxcbiBcXHRbR0FfSFNDSF9UQVNfQ09ORklHXSA9IDE2MjM4NCxcXG4rXFx0W0dBX0hTQ0hfVEFTX1BST0ZJTEVfQ0ZHXSA9IDE4ODQxNixcXG4gXFx0W0dBX1BUUF9QVFBfQ0ZHXSA9IDMyMCxcXG4gXFx0W0dBX1BUUF9QVFBfVE9EX0RPTUFJTlNdID0gMzM2LFxcbiBcXHRbR0FfUFRQX1BIQVNFX0RFVEVDVE9SX0NUUkxdID0gNDIwLFxcbkBAIC0xMjksNiArMTMwLDcgQEAgY29uc3QgdW5zaWduZWQgaW50IHNwYXJ4NV9nY250W0dDTlRfTEFTVF0gPSB7XFxuIFxcdFtHQ19HQ0JfU0lPX0NUUkxdID0gMyxcXG4gXFx0W0dDX0hTQ0hfSFNDSF9DRkddID0gNTA0MCxcXG4gXFx0W0dDX0hTQ0hfSFNDSF9EV1JSXSA9IDcyLFxcbitcXHRbR0NfSFNDSF9UQVNfUFJPRklMRV9DRkddID0gMTAwLFxcbiBcXHRbR0NfUFRQX1BUUF9QSU5TXSA9IDUsXFxuIFxcdFtHQ19QVFBfUEhBU0VfREVURUNUT1JfQ1RSTF0gPSA1LFxcbiBcXHRbR0NfUkVXX1BPUlRdID0gNzAsXFxuQEAgLTE0NCw2ICsxNDYsNyBAQCBjb25zdCB1bnNpZ25lZCBpbnQgc3Bhcng1X2dzaXplW0dTSVpFX0xBU1RdID0ge1xcbiBcXHRbR1dfRkRNQV9GRE1BXSA9IDQyOCxcXG4gXFx0W0dXX0dDQl9DSElQX1JFR1NdID0gNDI0LFxcbiBcXHRbR1dfSFNDSF9UQVNfQ09ORklHXSA9IDEyLFxcbitcXHRbR1dfSFNDSF9UQVNfUFJPRklMRV9DRkddID0gNjQsXFxuIFxcdFtHV19QVFBfUEhBU0VfREVURUNUT1JfQ1RSTF0gPSA4LFxcbiBcXHRbR1dfUVNZU19QQVVTRV9DRkddID0gMTEyOCxcXG4gfTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfcmVncy5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfcmVncy5oXFxuaW5kZXggZWEyODEzMGMyMzQxYmIuLjU4NTU4OWEzMWU5MDYyIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X3JlZ3MuaFxcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X3JlZ3MuaFxcbkBAIC0xMDQsNiArMTA0LDcgQEAgZW51bSBzcGFyeDVfZ2FkZHJfZW51bSB7XFxuIFxcdEdBX0hTQ0hfU1lTVEVNLFxcbiBcXHRHQV9IU0NIX01NR1QsXFxuIFxcdEdBX0hTQ0hfVEFTX0NPTkZJRyxcXG4rXFx0R0FfSFNDSF9UQVNfUFJPRklMRV9DRkcsXFxuIFxcdEdBX1BUUF9QVFBfQ0ZHLFxcbiBcXHRHQV9QVFBfUFRQX1RPRF9ET01BSU5TLFxcbiBcXHRHQV9QVFBfUEhBU0VfREVURUNUT1JfQ1RSTCxcXG5AQCAtMTM5LDYgKzE0MCw3IEBAIGVudW0gc3Bhcng1X2djbnRfZW51bSB7XFxuIFxcdEdDX0dDQl9TSU9fQ1RSTCxcXG4gXFx0R0NfSFNDSF9IU0NIX0NGRyxcXG4gXFx0R0NfSFNDSF9IU0NIX0RXUlIsXFxuK1xcdEdDX0hTQ0hfVEFTX1BST0ZJTEVfQ0ZHLFxcbiBcXHRHQ19QVFBfUFRQX1BJTlMsXFxuIFxcdEdDX1BUUF9QSEFTRV9ERVRFQ1RPUl9DVFJMLFxcbiBcXHRHQ19SRVdfUE9SVCxcXG5AQCAtMTU1LDYgKzE1Nyw3IEBAIGVudW0gc3Bhcng1X2dzaXplX2VudW0ge1xcbiBcXHRHV19GRE1BX0ZETUEsXFxuIFxcdEdXX0dDQl9DSElQX1JFR1MsXFxuIFxcdEdXX0hTQ0hfVEFTX0NPTkZJRyxcXG4rXFx0R1dfSFNDSF9UQVNfUFJPRklMRV9DRkcsXFxuIFxcdEdXX1BUUF9QSEFTRV9ERVRFQ1RPUl9DVFJMLFxcbiBcXHRHV19RU1lTX1BBVVNFX0NGRyxcXG4gXFx0R1NJWkVfTEFTVCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMDM6MTA6NTMuMzA4NTIxOTc5WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyMjc3ODk5MzMwNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1pY3JvY2hpcCBTcGFyeDUgc3dpdGNoIGRyaXZlciwgd2hpY2ggaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBwbGF0Zm9ybSBkcml2ZXIuIFRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAobGlrZSBRRU1VIG9yIEdDRSksIHNvIHRoZSBjb2RlIHBhdGhzIGFyZSB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgODkyM2UwNjY0NjY3MmY4MDE3ZDBlYTJjZGE1ZGQwMTQ2OWZmNzgxYVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDggMDM6MTA6NTAgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L2xhbjk2OXgvbGFuOTY5eF9yZWdzLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L2xhbjk2OXgvbGFuOTY5eF9yZWdzLmNcbmluZGV4IGFjZTRiYTIxZWVjNDMzLi4zZmMyYzAwNmJhMTI5ZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvbGFuOTY5eC9sYW45Njl4X3JlZ3MuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9sYW45Njl4L2xhbjk2OXhfcmVncy5jXG5AQCAtOTUsNiArOTUsNyBAQCBjb25zdCB1bnNpZ25lZCBpbnQgbGFuOTY5eF9nYWRkcltHQUREUl9MQVNUXSA9IHtcbiBcdFtHQV9IU0NIX1NZU1RFTV0gPSAzNzM4NCxcbiBcdFtHQV9IU0NIX01NR1RdID0gMzYyNjAsXG4gXHRbR0FfSFNDSF9UQVNfQ09ORklHXSA9IDM3Njk2LFxuK1x0W0dBX0hTQ0hfVEFTX1BST0ZJTEVfQ0ZHXSA9IDM3NzEyLFxuIFx0W0dBX1BUUF9QVFBfQ0ZHXSA9IDUxMixcbiBcdFtHQV9QVFBfUFRQX1RPRF9ET01BSU5TXSA9IDUyOCxcbiBcdFtHQV9QVFBfUEhBU0VfREVURUNUT1JfQ1RSTF0gPSA2MjgsXG5AQCAtMTI5LDYgKzEzMCw3IEBAIGNvbnN0IHVuc2lnbmVkIGludCBsYW45Njl4X2djbnRbR0NOVF9MQVNUXSA9IHtcbiBcdFtHQ19HQ0JfU0lPX0NUUkxdID0gMSxcbiBcdFtHQ19IU0NIX0hTQ0hfQ0ZHXSA9IDExMjAsXG4gXHRbR0NfSFNDSF9IU0NIX0RXUlJdID0gMzIsXG4rXHRbR0NfSFNDSF9UQVNfUFJPRklMRV9DRkddID0gMzAsXG4gXHRbR0NfUFRQX1BUUF9QSU5TXSA9IDgsXG4gXHRbR0NfUFRQX1BIQVNFX0RFVEVDVE9SX0NUUkxdID0gOCxcbiBcdFtHQ19SRVdfUE9SVF0gPSAzNSxcbkBAIC0xNDQsNiArMTQ2LDcgQEAgY29uc3QgdW5zaWduZWQgaW50IGxhbjk2OXhfZ3NpemVbR1NJWkVfTEFTVF0gPSB7XG4gXHRbR1dfRkRNQV9GRE1BXSA9IDQ0OCxcbiBcdFtHV19HQ0JfQ0hJUF9SRUdTXSA9IDE4MCxcbiBcdFtHV19IU0NIX1RBU19DT05GSUddID0gMTYsXG4rXHRbR1dfSFNDSF9UQVNfUFJPRklMRV9DRkddID0gNjgsXG4gXHRbR1dfUFRQX1BIQVNFX0RFVEVDVE9SX0NUUkxdID0gMTIsXG4gXHRbR1dfUVNZU19QQVVTRV9DRkddID0gOTg4LFxuIH07XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfbWFpbl9yZWdzLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9tYWluX3JlZ3MuaFxuaW5kZXggZDllZjRlZjEzN2I4MGMuLmQzNDQ2NzUxMzY0ODQ4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfbWFpbl9yZWdzLmhcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X21haW5fcmVncy5oXG5AQCAtNTM2OSw2ICs1MzY5LDE4IEBAIGV4dGVybiBjb25zdCBzdHJ1Y3Qgc3Bhcng1X3JlZ3MgKnJlZ3M7XG4gI2RlZmluZSBIU0NIX1RBU19TVEFURU1BQ0hJTkVfQ0ZHX1JFVklTSVRfRExZX0dFVCh4KVxcXG4gXHRGSUVMRF9HRVQoSFNDSF9UQVNfU1RBVEVNQUNISU5FX0NGR19SRVZJU0lUX0RMWSwgeClcbiBcbisvKiBIU0NIOlRBU19QUk9GSUxFX0NGRzpUQVNfUFJPRklMRV9DT05GSUcgKi9cbisjZGVmaW5lIEhTQ0hfVEFTX1BST0ZJTEVfQ09ORklHKGcpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcbitcdF9fUkVHKFRBUkdFVF9IU0NILCAwLCAxLCByZWdzLVx1MDAzZWdhZGRyW0dBX0hTQ0hfVEFTX1BST0ZJTEVfQ0ZHXSwgZywgICAgICAgXFxcbitcdCAgICAgIHJlZ3MtXHUwMDNlZ2NudFtHQ19IU0NIX1RBU19QUk9GSUxFX0NGR10sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcbitcdCAgICAgIHJlZ3MtXHUwMDNlZ3NpemVbR1dfSFNDSF9UQVNfUFJPRklMRV9DRkddLCAzMiwgMCwgMSwgNClcbitcbisjZGVmaW5lIEhTQ0hfVEFTX1BST0ZJTEVfQ09ORklHX0xJTktfU1BFRUQgICAgICAgR0VOTUFTSygxMCwgOClcbisjZGVmaW5lIEhTQ0hfVEFTX1BST0ZJTEVfQ09ORklHX0xJTktfU1BFRURfU0VUKHgpXFxcbitcdEZJRUxEX1BSRVAoSFNDSF9UQVNfUFJPRklMRV9DT05GSUdfTElOS19TUEVFRCwgeClcbisjZGVmaW5lIEhTQ0hfVEFTX1BST0ZJTEVfQ09ORklHX0xJTktfU1BFRURfR0VUKHgpXFxcbitcdEZJRUxEX0dFVChIU0NIX1RBU19QUk9GSUxFX0NPTkZJR19MSU5LX1NQRUVELCB4KVxuK1xuIC8qIExBTjk2OVggT05MWSAqL1xuIC8qIEhTSU9XUkFQOlhNSUlfQ0ZHOlhNSUlfQ0ZHICovXG4gI2RlZmluZSBIU0lPX1dSQVBfWE1JSV9DRkcoZykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfcG9ydC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfcG9ydC5jXG5pbmRleCA2MmM0OTg5M2RlM2MzNy4uZWYwNmJlZDNhOWNjNDIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9wb3J0LmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X3BvcnQuY1xuQEAgLTExLDYgKzExLDcgQEBcbiAjaW5jbHVkZSBcInNwYXJ4NV9tYWluX3JlZ3MuaFwiXG4gI2luY2x1ZGUgXCJzcGFyeDVfbWFpbi5oXCJcbiAjaW5jbHVkZSBcInNwYXJ4NV9wb3J0LmhcIlxuKyNpbmNsdWRlIFwic3Bhcng1X3Fvcy5oXCJcbiBcbiAjZGVmaW5lIFNQWDVfRVRZUEVfVEFHX0MgICAgIDB4ODEwMFxuICNkZWZpbmUgU1BYNV9FVFlQRV9UQUdfUyAgICAgMHg4OGE4XG5AQCAtMTA1MCw2ICsxMDUxLDkgQEAgaW50IHNwYXJ4NV9wb3J0X2NvbmZpZyhzdHJ1Y3Qgc3Bhcng1ICpzcGFyeDUsXG4gXHRcdCBzcGFyeDUsXG4gXHRcdCBRRldEX1NXSVRDSF9QT1JUX01PREUocG9ydC1cdTAwM2Vwb3J0bm8pKTtcbiBcbitcdC8qIE5vdGlmeSBUQVMgYWJvdXQgdGhlIHNwZWVkLiAqL1xuK1x0c3Bhcng1X3Rhc19zcGVlZChwb3J0LCBjb25mLVx1MDAzZXNwZWVkKTtcbitcbiBcdC8qIFNhdmUgdGhlIG5ldyB2YWx1ZXMgKi9cbiBcdHBvcnQtXHUwMDNlY29uZiA9ICpjb25mO1xuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X3Fvcy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfcW9zLmNcbmluZGV4IGU1ODA2NzBmMzk5MmIwLi45NzJkYThhNzFmNWFhYSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X3Fvcy5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9xb3MuY1xuQEAgLTksNiArOSwxNyBAQFxuICNpbmNsdWRlIFwic3Bhcng1X21haW4uaFwiXG4gI2luY2x1ZGUgXCJzcGFyeDVfcW9zLmhcIlxuIFxuK2VudW0gc3Bhcng1X3Rhc19saW5rX3NwZWVkIHtcbitcdFRBU19TUEVFRF9OT19HQixcbitcdFRBU19TUEVFRF8xMCxcbitcdFRBU19TUEVFRF8xMDAsXG4rXHRUQVNfU1BFRURfMTAwMCxcbitcdFRBU19TUEVFRF8yNTAwLFxuK1x0VEFTX1NQRUVEXzUwMDAsXG4rXHRUQVNfU1BFRURfMTAwMDAsXG4rXHRUQVNfU1BFRURfMjUwMDAsXG4rfTtcbitcbiAvKiBDYWxjdWxhdGUgbmV3IGJhc2VfdGltZSBiYXNlZCBvbiBjeWNsZV90aW1lLlxuICAqXG4gICogVGhlIGhhcmR3YXJlIHJlcXVpcmVzIGEgYmFzZV90aW1lIHRoYXQgaXMgYWx3YXlzIGluIHRoZSBmdXR1cmUuXG5AQCAtNTgxLDMgKzU5Miw0MSBAQCBpbnQgc3Bhcng1X3RjX2V0c19kZWwoc3RydWN0IHNwYXJ4NV9wb3J0ICpwb3J0KVxuIFxuIFx0cmV0dXJuIHNwYXJ4NV9kd3JyX2NvbmZfc2V0KHBvcnQsIFx1MDAyNmR3cnIpO1xuIH1cbitcbit2b2lkIHNwYXJ4NV90YXNfc3BlZWQoc3RydWN0IHNwYXJ4NV9wb3J0ICpwb3J0LCBpbnQgc3BlZWQpXG4re1xuK1x0c3RydWN0IHNwYXJ4NSAqc3Bhcng1ID0gcG9ydC1cdTAwM2VzcGFyeDU7XG4rXHR1OCBzcGQ7XG4rXG4rXHRzd2l0Y2ggKHNwZWVkKSB7XG4rXHRjYXNlIFNQRUVEXzEwOlxuK1x0XHRzcGQgPSBUQVNfU1BFRURfMTA7XG4rXHRcdGJyZWFrO1xuK1x0Y2FzZSBTUEVFRF8xMDA6XG4rXHRcdHNwZCA9IFRBU19TUEVFRF8xMDA7XG4rXHRcdGJyZWFrO1xuK1x0Y2FzZSBTUEVFRF8xMDAwOlxuK1x0XHRzcGQgPSBUQVNfU1BFRURfMTAwMDtcbitcdFx0YnJlYWs7XG4rXHRjYXNlIFNQRUVEXzI1MDA6XG4rXHRcdHNwZCA9IFRBU19TUEVFRF8yNTAwO1xuK1x0XHRicmVhaztcbitcdGNhc2UgU1BFRURfNTAwMDpcbitcdFx0c3BkID0gVEFTX1NQRUVEXzUwMDA7XG4rXHRcdGJyZWFrO1xuK1x0Y2FzZSBTUEVFRF8xMDAwMDpcbitcdFx0c3BkID0gVEFTX1NQRUVEXzEwMDAwO1xuK1x0XHRicmVhaztcbitcdGNhc2UgU1BFRURfMjUwMDA6XG4rXHRcdHNwZCA9IFRBU19TUEVFRF8yNTAwMDtcbitcdFx0YnJlYWs7XG4rXHRkZWZhdWx0OlxuK1x0XHRuZXRkZXZfZXJyKHBvcnQtXHUwMDNlbmRldiwgXCJUQVM6IFVuc3VwcG9ydGVkIHNwZWVkOiAlZFxcblwiLCBzcGVlZCk7XG4rXHRcdHJldHVybjtcbitcdH1cbitcbitcdHNweDVfcm13KEhTQ0hfVEFTX1BST0ZJTEVfQ09ORklHX0xJTktfU1BFRURfU0VUKHNwZCksXG4rXHRcdCBIU0NIX1RBU19QUk9GSUxFX0NPTkZJR19MSU5LX1NQRUVELFxuK1x0XHQgc3Bhcng1LFxuK1x0XHQgSFNDSF9UQVNfUFJPRklMRV9DT05GSUcocG9ydC1cdTAwM2Vwb3J0bm8pKTtcbit9XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfcW9zLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9xb3MuaFxuaW5kZXggMDRmNzZmMWUyM2Y2MGEuLmE5MmE2OTljNTUxZjk5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfcW9zLmhcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X3Fvcy5oXG5AQCAtNjAsNiArNjAsNyBAQCBzdHJ1Y3Qgc3Bhcng1X2R3cnIge1xuIH07XG4gXG4gaW50IHNwYXJ4NV9xb3NfaW5pdChzdHJ1Y3Qgc3Bhcng1ICpzcGFyeDUpO1xuK3ZvaWQgc3Bhcng1X3Rhc19zcGVlZChzdHJ1Y3Qgc3Bhcng1X3BvcnQgKnBvcnQsIGludCBzcGVlZCk7XG4gXG4gLyogTXVsdGktUXVldWUgUHJpb3JpdHkgKi9cbiBpbnQgc3Bhcng1X3RjX21xcHJpb19hZGQoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIHU4IG51bV90Yyk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfcmVncy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfcmVncy5jXG5pbmRleCAyMjBlODFiNzE0ZDQxNC4uMzg2M2Y5NTRiZDgzMjMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9yZWdzLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X3JlZ3MuY1xuQEAgLTk1LDYgKzk1LDcgQEAgY29uc3QgdW5zaWduZWQgaW50IHNwYXJ4NV9nYWRkcltHQUREUl9MQVNUXSA9IHtcbiBcdFtHQV9IU0NIX1NZU1RFTV0gPSAxODQwMDAsXG4gXHRbR0FfSFNDSF9NTUdUXSA9IDE2MjM2OCxcbiBcdFtHQV9IU0NIX1RBU19DT05GSUddID0gMTYyMzg0LFxuK1x0W0dBX0hTQ0hfVEFTX1BST0ZJTEVfQ0ZHXSA9IDE4ODQxNixcbiBcdFtHQV9QVFBfUFRQX0NGR10gPSAzMjAsXG4gXHRbR0FfUFRQX1BUUF9UT0RfRE9NQUlOU10gPSAzMzYsXG4gXHRbR0FfUFRQX1BIQVNFX0RFVEVDVE9SX0NUUkxdID0gNDIwLFxuQEAgLTEyOSw2ICsxMzAsNyBAQCBjb25zdCB1bnNpZ25lZCBpbnQgc3Bhcng1X2djbnRbR0NOVF9MQVNUXSA9IHtcbiBcdFtHQ19HQ0JfU0lPX0NUUkxdID0gMyxcbiBcdFtHQ19IU0NIX0hTQ0hfQ0ZHXSA9IDUwNDAsXG4gXHRbR0NfSFNDSF9IU0NIX0RXUlJdID0gNzIsXG4rXHRbR0NfSFNDSF9UQVNfUFJPRklMRV9DRkddID0gMTAwLFxuIFx0W0dDX1BUUF9QVFBfUElOU10gPSA1LFxuIFx0W0dDX1BUUF9QSEFTRV9ERVRFQ1RPUl9DVFJMXSA9IDUsXG4gXHRbR0NfUkVXX1BPUlRdID0gNzAsXG5AQCAtMTQ0LDYgKzE0Niw3IEBAIGNvbnN0IHVuc2lnbmVkIGludCBzcGFyeDVfZ3NpemVbR1NJWkVfTEFTVF0gPSB7XG4gXHRbR1dfRkRNQV9GRE1BXSA9IDQyOCxcbiBcdFtHV19HQ0JfQ0hJUF9SRUdTXSA9IDQyNCxcbiBcdFtHV19IU0NIX1RBU19DT05GSUddID0gMTIsXG4rXHRbR1dfSFNDSF9UQVNfUFJPRklMRV9DRkddID0gNjQsXG4gXHRbR1dfUFRQX1BIQVNFX0RFVEVDVE9SX0NUUkxdID0gOCxcbiBcdFtHV19RU1lTX1BBVVNFX0NGR10gPSAxMTI4LFxuIH07XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfcmVncy5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfcmVncy5oXG5pbmRleCBlYTI4MTMwYzIzNDFiYi4uNTg1NTg5YTMxZTkwNjIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9yZWdzLmhcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X3JlZ3MuaFxuQEAgLTEwNCw2ICsxMDQsNyBAQCBlbnVtIHNwYXJ4NV9nYWRkcl9lbnVtIHtcbiBcdEdBX0hTQ0hfU1lTVEVNLFxuIFx0R0FfSFNDSF9NTUdULFxuIFx0R0FfSFNDSF9UQVNfQ09ORklHLFxuK1x0R0FfSFNDSF9UQVNfUFJPRklMRV9DRkcsXG4gXHRHQV9QVFBfUFRQX0NGRyxcbiBcdEdBX1BUUF9QVFBfVE9EX0RPTUFJTlMsXG4gXHRHQV9QVFBfUEhBU0VfREVURUNUT1JfQ1RSTCxcbkBAIC0xMzksNiArMTQwLDcgQEAgZW51bSBzcGFyeDVfZ2NudF9lbnVtIHtcbiBcdEdDX0dDQl9TSU9fQ1RSTCxcbiBcdEdDX0hTQ0hfSFNDSF9DRkcsXG4gXHRHQ19IU0NIX0hTQ0hfRFdSUixcbitcdEdDX0hTQ0hfVEFTX1BST0ZJTEVfQ0ZHLFxuIFx0R0NfUFRQX1BUUF9QSU5TLFxuIFx0R0NfUFRQX1BIQVNFX0RFVEVDVE9SX0NUUkwsXG4gXHRHQ19SRVdfUE9SVCxcbkBAIC0xNTUsNiArMTU3LDcgQEAgZW51bSBzcGFyeDVfZ3NpemVfZW51bSB7XG4gXHRHV19GRE1BX0ZETUEsXG4gXHRHV19HQ0JfQ0hJUF9SRUdTLFxuIFx0R1dfSFNDSF9UQVNfQ09ORklHLFxuK1x0R1dfSFNDSF9UQVNfUFJPRklMRV9DRkcsXG4gXHRHV19QVFBfUEhBU0VfREVURUNUT1JfQ1RSTCxcbiBcdEdXX1FTWVNfUEFVU0VfQ0ZHLFxuIFx0R1NJWkVfTEFTVCxcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDAzOjEwOjUzLjMwODUyNDAzOVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ5OTcyMTIwMzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBTcGFyeDUgRXRoZXJuZXQgRHJpdmVyIE1vZGlmaWNhdGlvbioqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2ggdGhhdCBpbnRyb2R1Y2VzIGEgbmV3IGZ1bmN0aW9uLCBgc3Bhcng1X3Rhc19zcGVlZGAsIGluIHRoZSBNaWNyb2NoaXAgU3Bhcng1IEV0aGVybmV0IGRyaXZlci4gSXQncyBpbiBgc3Bhcng1X3Fvcy5jYCwgYW5kIGl0IGxvb2tzIGxpa2UgaXQncyBjYWxsZWQgZnJvbSBgc3Bhcng1X3BvcnRfY29uZmlnYCBpbiBgc3Bhcng1X3BvcnQuY2AuIFRoaXMgc3VnZ2VzdHMgaXQncyBsaWtlbHkgcmVzcG9uc2libGUgZm9yIHVwZGF0aW5nIHNvbWUgaGFyZHdhcmUgcmVnaXN0ZXJzLCBwcm9iYWJseSByZWxhdGVkIHRvIHRoZSBwb3J0IHNwZWVkIGNvbmZpZ3VyYXRpb24uIE5vdGhpbmcgaW1tZWRpYXRlbHkgc2NyZWFtcyBvdXQgYXMgcHJvYmxlbWF0aWMsIGJ1dCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIGltcGxlbWVudGF0aW9uIGJldHRlci5cblxuVGhlIGNyaXRpY2FsIHF1ZXN0aW9uIG5vdyBpcyByZWFjaGFiaWxpdHk6IENhbiB0aGlzIG5ldyBmdW5jdGlvbiAqYWN0dWFsbHkqIGdldCBjYWxsZWQgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCwgd2hpY2ggaXMgd2hlcmUgSSdsbCBsaWtlbHkgYmUgdGVzdGluZyB0aGlzPyBUaGUgZHJpdmVyIGl0c2VsZiBpcyBjbGVhcmx5IHRpZWQgdG8gdGhlIGBTUEFSWDVfU1dJVENIYCBjb25maWd1cmF0aW9uIG9wdGlvbi4gTm93LCB0aGUgcmVhbCBpc3N1ZSBpcyBob3cgdGhpcyBkZXZpY2UgYXBwZWFycyBpbiB0aGUgc3lzdGVtLiBJcyBpdCBhIFBDSSBkZXZpY2UsIG9yIGEgcGxhdGZvcm0gZGV2aWNlPyBUaGlzIHdpbGwgZHJhc3RpY2FsbHkgaW5mbHVlbmNlIGl0cyB2aXNpYmlsaXR5IHRvIGEgaHlwZXJ2aXNvci4gSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSBkcml2ZXIncyBLY29uZmlnIG9yIHBlcmhhcHMgZXZlbiBgc3Bhcng1X21haW4uY2AgdG8gZmlndXJlIG91dCBpdHMgbmF0dXJlLiBMZXQncyBzZWUgaWYgdGhpcyBjb25maWd1cmF0aW9uIGFjdHVhbGx5IHN1cHBvcnRzIHZpcnR1YWxpemF0aW9uLCBhbmQgdGhlbiBJJ2xsIGFzc2VzcyB0aGUgcG90ZW50aWFsIGltcGFjdCBvZiB0aGlzIHBhdGNoLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MzE0LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTg5LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMDM6MTA6NTguMzA1NzM4NTU0WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyMDUwNTYxNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJTUEFSWDVfU1dJVENIXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvS2NvbmZpZzoxOmNvbmZpZyBTUEFSWDVfU1dJVENIXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9LY29uZmlnLTItXFx0dHJpc3RhdGUgXFxcIlNwYXJ4NSBzd2l0Y2ggZHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9LY29uZmlnPTE3PWNvbmZpZyBTUEFSWDVfRENCXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9LY29uZmlnLTE4LVxcdGJvb2wgXFxcIkRhdGEgQ2VudGVyIEJyaWRnaW5nIChEQ0IpIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9LY29uZmlnOjE5OlxcdGRlcGVuZHMgb24gU1BBUlg1X1NXSVRDSCBcXHUwMDI2XFx1MDAyNiBEQ0JcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L0tjb25maWctMjAtXFx0ZGVmYXVsdCB5XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L0tjb25maWc9Mjg9Y29uZmlnIExBTjk2OVhfU1dJVENIXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9LY29uZmlnLTI5LVxcdGJvb2wgXFxcIkxhbjk2OXggc3dpdGNoIGRyaXZlclxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L0tjb25maWc6MzA6XFx0ZGVwZW5kcyBvbiBTUEFSWDVfU1dJVENIXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9LY29uZmlnLTMxLVxcdHNlbGVjdCBQQUdFX1BPT0xcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvTWFrZWZpbGUtNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L01ha2VmaWxlOjY6b2JqLSQoQ09ORklHX1NQQVJYNV9TV0lUQ0gpICs9IHNwYXJ4NS1zd2l0Y2gub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvTWFrZWZpbGUtNy1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMDM6MTA6NTguNTI2MjU0NzE3WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTAyNjg2MjQyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHN1bW1hcnksIHRha2luZyBvbiB0aGUgcGVyc29uYSB5b3UndmUgcmVxdWVzdGVkOlxuXG4qKkRlY29uc3RydWN0aW5nIERldmljZSBSZWdpc3RyYXRpb24gaW4gYHNwYXJ4NV9tYWluLmNgKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGBzcGFyeDVfbWFpbi5jYCBoYW5kbGVzIGRldmljZSByZWdpc3RyYXRpb24uIFNwZWNpZmljYWxseSwgSSB3YW50IHRvIHRyYWNlIHRoZSBmbG93IOKAkyBmcm9tIGJvb3Qgb3IgaW5pdGlhbGl6YXRpb24sIHJpZ2h0IHRocm91Z2ggdG8gdGhlIHBvaW50IHdoZXJlIHRoZSBkZXZpY2UgaXMgYWN0dWFsbHkgbWFkZSBhdmFpbGFibGUgdG8gdGhlIHN5c3RlbS4gV2hhdCBob29rcyBhcmUgaW4gcGxhY2U/IFdoYXQgZGF0YSBzdHJ1Y3R1cmVzIGFyZSBpbnZvbHZlZD8gSSdtIGFudGljaXBhdGluZyB0aGVyZSB3aWxsIGJlIGNhbGxzIHRvIGEgZ2VuZXJpYyBkcml2ZXIgZnJhbWV3b3JrLCBsaWtlbHkgaW52b2x2aW5nIGBzdHJ1Y3QgZGV2aWNlYCBhbmQgYXNzb2NpYXRlZCBtZXRob2RzLiBJIG5lZWQgdG8gc2VlIGhvdyB0aGUgc3BlY2lmaWMgYHNwYXJ4NWAgaGFyZHdhcmUgaXMgZGVzY3JpYmVkIGFuZCBhdHRhY2hlZCB0byB0aGUga2VybmVsJ3MgZGV2aWNlIHRyZWUgb3Igc29tZSBlcXVpdmFsZW50IG1lY2hhbmlzbS4gQXJlIHRoZXJlIGN1c3RvbSBjb25maWd1cmF0aW9uIG9wdGlvbnMgb3IgcXVpcmtzIHRoYXQgbmVlZCB0byBiZSBhZGRyZXNzZWQgYXQgdGhpcyBzdGFnZT8gQXJlIGludGVycnVwdHMgc2V0IHVwIGhlcmUsIG9yIGlzIHRoYXQgZGVmZXJyZWQ/IEknbSB0aGlua2luZyBhYm91dCByZXNvdXJjZSBhbGxvY2F0aW9uIOKAkyBtZW1vcnkgcmVnaW9ucywgaW50ZXJydXB0IGxpbmVzLCBETUEgY2hhbm5lbHMuLi4gSG93IGFyZSB0aG9zZSBtYW5hZ2VkIGFuZCBjbGFpbWVkIGR1cmluZyByZWdpc3RyYXRpb24/IEl04oCZcyBhbHNvIGNydWNpYWwgdG8gc2VlIGhvdyBlcnJvciBoYW5kbGluZyBpcyBpbXBsZW1lbnRlZCBkdXJpbmcgdGhpcyBwcm9jZXNzLCBhbmQgaWYgdGhlcmUgYXJlIGZhbGxiYWNrIG1lY2hhbmlzbXMgc2hvdWxkIHRoZSBpbml0aWFsIHJlZ2lzdHJhdGlvbiBmYWlsLiBJIG5lZWQgdG8gc3BvdCB0aGUgY3JpdGljYWwgcG9pbnRzIHdoZXJlIGl0IG1pZ2h0IGJlIHBvc3NpYmxlIHRvIGluamVjdCBzb21lIGN1c3RvbSBjb2RlIGZvciBteSBvd24gcmVxdWlyZW1lbnRzLiBUaGlzIGlzIHdoZXJlIHRoZSBydWJiZXIgbWVldHMgdGhlIHJvYWQsIHNvIGxldCdzIGdldCBpbnRvIGl0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MTk2LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMDM6MTE6MDMuNTUzMTE5NjQxWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExODUzMzA3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtb2R1bGVfLipkcml2ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfbWFpbi5jPTExMTI9c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgbWNocF9zcGFyeDVfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfbWFpbi5jLTExMjAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfbWFpbi5jOjExMjE6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihtY2hwX3NwYXJ4NV9kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X21haW4uYy0xMTIyLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQwMzoxMTowMy42NzE2NTg4OTJaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTQwNjMyODI0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkFuYWx5emluZyB0aGUgUGxhdGZvcm0gRHJpdmVyKipcblxuQWxyaWdodCwgbXkgaW5pdGlhbCByZWFkIGlzIHRoYXQgd2UncmUgZGVhbGluZyB3aXRoIGEgcGxhdGZvcm0gZHJpdmVyIGhlcmUuIE15IGltbWVkaWF0ZSBmb2N1cywgdGhlbiwgaXMgdW5kZXJzdGFuZGluZyBpdHMgaW50ZXJhY3Rpb24gd2l0aCB0aGUgYnJvYWRlciBzeXN0ZW0gYXJjaGl0ZWN0dXJlLiBUaGUga2V5IGlzIGluIHRoZSBtYXRjaCB0YWJsZS4gVGhhdCdzIHdoZXJlIHRoZSBjcnVjaWFsIGRldGFpbHMgcmVnYXJkaW5nIGRldmljZSBpZGVudGlmaWNhdGlvbiBhbmQgYmluZGluZyByZXNpZGUuIExldCBtZSBkcmlsbCBkb3duIGFuZCBleGFtaW5lIHRoaXMgdGFibGUgdG8gdW5kZXJzdGFuZCB3aGljaCBkZXZpY2VzIHRoaXMgZHJpdmVyIGlzIGRlc2lnbmVkIHRvIHdvcmsgd2l0aCwgYW5kIHRoZSBzcGVjaWZpY3Mgb2YgdGhlIG1hdGNoIGNyaXRlcmlhLiBUaGlzIGdpdmVzIHRoZSBmcmFtZXdvcmsgZm9yIGlkZW50aWZ5aW5nIHdoYXQgdGhpcyBkb2VzLCBhbmQgd2hhdCBzeXN0ZW1zIGl0IG5lZWRzIHRvIGhvb2sgaW50by4gSSdsbCBuZWVkIHRvIHNlZSBpZiBpdCdzIGJhc2VkIG9uIG5hbWUgbWF0Y2hpbmcsIElEIG1hdGNoaW5nLCBvciBzb21lIG1vcmUgY29tcGxleCBwcm9wZXJ0eSBtYXRjaGluZyBzY2hlbWUgdG8gZnVsbHkgZ3Jhc3AgaXRzIGZ1bmN0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2Njg5LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMDM6MTE6MDYuNjEyMjk0MDM1WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyODc5MzgyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJvZl9kZXZpY2VfaWRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfbWFpbi5jPTEwOTQ9c3RhdGljIGNvbnN0IHN0cnVjdCBzcGFyeDVfbWF0Y2hfZGF0YSBzcGFyeDVfZGVzYyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X21haW4uYy0xMTAyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X21haW4uYzoxMTAzOnN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIG1jaHBfc3Bhcng1X21hdGNoW10gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfbWFpbi5jLTExMDQtXFx0eyAuY29tcGF0aWJsZSA9IFxcXCJtaWNyb2NoaXAsc3Bhcng1LXN3aXRjaFxcXCIsIC5kYXRhID0gXFx1MDAyNnNwYXJ4NV9kZXNjIH0sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDAzOjExOjA2Ljc0MTA5Mzk5NVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ1NjYwNjg1MzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBDaGFsbGVuZ2U6IEZ1enppbmcgYSBIYXJkd2FyZS1TcGVjaWZpYyBEcml2ZXIqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGRldmljZSwgYSBwbGF0Zm9ybSBkZXZpY2Ugc3BlY2lmaWNhbGx5IGRlc2lnbmVkIGFyb3VuZCBhIFwibWljcm9jaGlwLHNwYXJ4NS1zd2l0Y2hcIi4gUmlnaHQgYXdheSwgSSdtIHRoaW5raW5nIHRoaXMgaXMgZ29pbmcgdG8gYmUgdHJpY2t5LiBCZWluZyBoYXJkd2FyZS1zcGVjaWZpYyBtZWFucyBJIGNhbid0IGp1c3QgdGhyb3cgaXQgaW50byBhIGdlbmVyaWMgdmlydHVhbGl6ZWQgc2V0dXAgbGlrZSBRRU1VIG9yIEdDRSBhbmQgZXhwZWN0IGl0IHRvIHdvcmsgd2l0aG91dCBzb21lIHNlcmlvdXMgaGFyZHdhcmUgZW11bGF0aW9uLCBhbmQgSSBrbm93IHRoZXJlIGlzbid0IGFueSBzdGFuZGFyZCBRRU1VIHN1cHBvcnQgZm9yIHRoaXMgcGFydGljdWxhciBkZXZpY2UuXG5cbkhvbGQgb24gYSBzZWNvbmQsIHRob3VnaCwgc3l6a2FsbGVyICpkb2VzKiBoYXZlIHNvbWUgZmVhdHVyZXMgZm9yIGluamVjdGluZyBwbGF0Zm9ybSBkZXZpY2VzLCB3aGljaCBpcyBwcm9taXNpbmcuIEJ1dCBJIGtub3cgZnJvbSBleHBlcmllbmNlIHRoYXQgaXQgcmFyZWx5IGdvZXMgdGhlIGV4dHJhIG1pbGUgdG8gZW11bGF0ZSB0aGUgaGFyZHdhcmUgcmVnaXN0ZXJzLiBTbywgaWYgdGhlIGRyaXZlciBhY3R1YWxseSB0cmllcyB0byByZWFkIG9yIHdyaXRlIHRvIGFueSBvZiB0aG9zZSByZWdpc3RlcnMsIHdlJ3JlIGxpa2VseSBnb2luZyB0byBnZXQgYSBjcmFzaCBvciB0aGUgcHJvYmUgaXMganVzdCBnb2luZyB0byBmYWlsIHNpbmNlIHRoZSBoYXJkd2FyZSBpc24ndCBwaHlzaWNhbGx5IHByZXNlbnQgb3IgY29ycmVjdGx5IGVtdWxhdGVkLlxuXG5BbHJpZ2h0LCB0aGUgc21hcnQgbW92ZSBoZXJlIGlzIHRvIGRpZyBpbnRvIHRoZSBkcml2ZXIncyBjb2RlIGFuZCBzZWUgaWYgaXQgbWFwcyBhbnkgbWVtb3J5IG9yIHJlYWRzIGRhdGEgZnJvbSBpdC4gVGhhdCdsbCBiZSB0aGUgdGVsbC5cblxuXG4iLCJJbnB1dFRva2VucyI6NzA5OSwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQwMzoxMToxMS4zMDcxNjUwNzRaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5OTIwNzc5NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZXZtX2lvcmVtYXBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfbWFpbi5jPTI2OD1zdGF0aWMgaW50IHNwYXJ4NV9jcmVhdGVfdGFyZ2V0cyhzdHJ1Y3Qgc3Bhcng1ICpzcGFyeDUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9tYWluLmMtMjkzLVxcdFxcdH1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9tYWluLmM6Mjk0OlxcdFxcdGlvbWVtW2lkeF0gPSBkZXZtX2lvcmVtYXAoc3Bhcng1LVxcdTAwM2VkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfbWFpbi5jLTI5NS1cXHRcXHRcXHRcXHRcXHQgIGlvcmVzW2lkeF0tXFx1MDAzZXN0YXJ0LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQwMzoxMToxMS41MDYzNzkxMDlaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDU4MTEwMDk1NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIEZlYXNpYmlsaXR5IEFzc2Vzc21lbnQqKlxuXG5Pa2F5LCBzbyB0aGlzIGNvZGUgdXNlcyBgZGV2bV9pb3JlbWFwYCwgd2hpY2ggaW5kaWNhdGVzIGl0J3MgbGlrZWx5IHJlYWRpbmcgYW5kIHdyaXRpbmcgdG8gcmVnaXN0ZXJzLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIFwiY2FuIHRoaXMgYmUgZnV6emVkIGVmZmVjdGl2ZWx5P1wiIFRoZSBjaGFsbGVuZ2UsIGFzIEkgdW5kZXJzdGFuZCBpdCwgc3RlbXMgZnJvbSB0aGUgZHJpdmVyJ3MgbmF0dXJlLiBJdCdzIGEgaGFyZHdhcmUtc3BlY2lmaWMgcGxhdGZvcm0gZHJpdmVyLCB0YXJnZXRpbmcgc29tZXRoaW5nIGxpa2UgYSBNaWNyb2NoaXAgU3Bhcng1IHN3aXRjaC4gVGhlc2UgYXJlIGdlbmVyYWxseSBpbmFjY2Vzc2libGUgdG8gc3l6a2FsbGVyIHVubGVzcyB3ZSBoYXZlIGEgc3BlY2lhbGl6ZWQgZW11bGF0b3Igb3IgYSBzdWl0YWJsZSBkdW1teSBkcml2ZXIgaW4gcGxhY2UuXG5cblRoZXJlZm9yZSwgYmVmb3JlIEkgZGVkaWNhdGUgYW55IHRpbWUgdG8gY3JhZnRpbmcgZnV6emluZyByb3V0aW5lcywgSSBzaG91bGQgdmVyaWZ5IHRoZSBkcml2ZXIgdHlwZS4gSXQgYXBwZWFycyBpdCBpcyBhIHN0YW5kYXJkIGhhcmR3YXJlIGRyaXZlci4gR2l2ZW4gdGhpcyBjbGFzc2lmaWNhdGlvbiwgaXQncyBoaWdobHkgaW1wcm9iYWJsZSB0aGF0IGZ1enppbmcgd291bGQgeWllbGQgdXNlZnVsIHJlc3VsdHMgd2l0aG91dCBhbiB1bnVzdWFsIHNldHVwLlxuXG5UaGVyZWZvcmUsIEknbSBnb2luZyB0byByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgYW5kIGluY2x1ZGUgYSBqdXN0aWZpY2F0aW9uLiBUaGUgcmVhc29uaW5nIGlzIHN0cmFpZ2h0Zm9yd2FyZDogdGhpcyBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIHBsYXRmb3JtIGRyaXZlciwgc3BlY2lmaWNhbGx5IGRlc2lnbmVkIGZvciBhIE1pY3JvY2hpcCBTcGFyeDUgc3dpdGNoLiBUaGUgU3Bhcng1IHN3aXRjaCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBJIG5lZWQgdG8gZG9jdW1lbnQgdGhpcyBjbGVhcmx5IHNvIHRoZSBkZWNpc2lvbiBpcyBub3QgbWlzaW50ZXJwcmV0ZWQgbGF0ZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc3MDAsIk91dHB1dFRva2VucyI6ODIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMDM6MTE6MTYuMDg3NDgyNzg2WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzExMjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1pY3JvY2hpcCBTcGFyeDUgc3dpdGNoIGRyaXZlciwgd2hpY2ggaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBwbGF0Zm9ybSBkcml2ZXIuIFRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAobGlrZSBRRU1VIG9yIEdDRSksIHNvIHRoZSBjb2RlIHBhdGhzIGFyZSB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNaWNyb2NoaXAgU3Bhcng1IHN3aXRjaCBkcml2ZXIsIHdoaWNoIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgcGxhdGZvcm0gZHJpdmVyLiBUaGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKGxpa2UgUUVNVSBvciBHQ0UpLCBzbyB0aGUgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow8mqvc[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-08 02:55:07 +0000 UTC FinishedAt: 2026-07-08 03:11:17 +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+CgkJCTx0ZD4yMDI2LzA3LzA4IDAzOjEwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNaWNyb2NoaXAgU3Bhcng1IHN3aXRjaCBkcml2ZXIsIHdoaWNoIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgcGxhdGZvcm0gZHJpdmVyLiBUaGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKGxpa2UgUUVNVSBvciBHQ0UpLCBzbyB0aGUgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDAzOjEwPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgODkyM2UwNjY0NjY3MmY4MDE3ZDBlYTJjZGE1ZGQwMTQ2OWZmNzgxYVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDggMDM6MTA6NTAgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9sYW45Njl4L2xhbjk2OXhfcmVncy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9sYW45Njl4L2xhbjk2OXhfcmVncy5jXG5pbmRleCBhY2U0YmEyMWVlYzQzMy4uM2ZjMmMwMDZiYTEyOWUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L2xhbjk2OXgvbGFuOTY5eF9yZWdzLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvbGFuOTY5eC9sYW45Njl4X3JlZ3MuY1xuQEAgLTk1LDYgJiM0Mzs5NSw3IEBAIGNvbnN0IHVuc2lnbmVkIGludCBsYW45Njl4X2dhZGRyW0dBRERSX0xBU1RdID0ge1xuIFx0W0dBX0hTQ0hfU1lTVEVNXSA9IDM3Mzg0LFxuIFx0W0dBX0hTQ0hfTU1HVF0gPSAzNjI2MCxcbiBcdFtHQV9IU0NIX1RBU19DT05GSUddID0gMzc2OTYsXG4mIzQzO1x0W0dBX0hTQ0hfVEFTX1BST0ZJTEVfQ0ZHXSA9IDM3NzEyLFxuIFx0W0dBX1BUUF9QVFBfQ0ZHXSA9IDUxMixcbiBcdFtHQV9QVFBfUFRQX1RPRF9ET01BSU5TXSA9IDUyOCxcbiBcdFtHQV9QVFBfUEhBU0VfREVURUNUT1JfQ1RSTF0gPSA2MjgsXG5AQCAtMTI5LDYgJiM0MzsxMzAsNyBAQCBjb25zdCB1bnNpZ25lZCBpbnQgbGFuOTY5eF9nY250W0dDTlRfTEFTVF0gPSB7XG4gXHRbR0NfR0NCX1NJT19DVFJMXSA9IDEsXG4gXHRbR0NfSFNDSF9IU0NIX0NGR10gPSAxMTIwLFxuIFx0W0dDX0hTQ0hfSFNDSF9EV1JSXSA9IDMyLFxuJiM0MztcdFtHQ19IU0NIX1RBU19QUk9GSUxFX0NGR10gPSAzMCxcbiBcdFtHQ19QVFBfUFRQX1BJTlNdID0gOCxcbiBcdFtHQ19QVFBfUEhBU0VfREVURUNUT1JfQ1RSTF0gPSA4LFxuIFx0W0dDX1JFV19QT1JUXSA9IDM1LFxuQEAgLTE0NCw2ICYjNDM7MTQ2LDcgQEAgY29uc3QgdW5zaWduZWQgaW50IGxhbjk2OXhfZ3NpemVbR1NJWkVfTEFTVF0gPSB7XG4gXHRbR1dfRkRNQV9GRE1BXSA9IDQ0OCxcbiBcdFtHV19HQ0JfQ0hJUF9SRUdTXSA9IDE4MCxcbiBcdFtHV19IU0NIX1RBU19DT05GSUddID0gMTYsXG4mIzQzO1x0W0dXX0hTQ0hfVEFTX1BST0ZJTEVfQ0ZHXSA9IDY4LFxuIFx0W0dXX1BUUF9QSEFTRV9ERVRFQ1RPUl9DVFJMXSA9IDEyLFxuIFx0W0dXX1FTWVNfUEFVU0VfQ0ZHXSA9IDk4OCxcbiB9O1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X21haW5fcmVncy5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfbWFpbl9yZWdzLmhcbmluZGV4IGQ5ZWY0ZWYxMzdiODBjLi5kMzQ0Njc1MTM2NDg0OCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X21haW5fcmVncy5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9tYWluX3JlZ3MuaFxuQEAgLTUzNjksNiAmIzQzOzUzNjksMTggQEAgZXh0ZXJuIGNvbnN0IHN0cnVjdCBzcGFyeDVfcmVncyAqcmVncztcbiAjZGVmaW5lIEhTQ0hfVEFTX1NUQVRFTUFDSElORV9DRkdfUkVWSVNJVF9ETFlfR0VUKHgpXFxcbiBcdEZJRUxEX0dFVChIU0NIX1RBU19TVEFURU1BQ0hJTkVfQ0ZHX1JFVklTSVRfRExZLCB4KVxuIFxuJiM0MzsvKiBIU0NIOlRBU19QUk9GSUxFX0NGRzpUQVNfUFJPRklMRV9DT05GSUcgKi9cbiYjNDM7I2RlZmluZSBIU0NIX1RBU19QUk9GSUxFX0NPTkZJRyhnKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXG4mIzQzO1x0X19SRUcoVEFSR0VUX0hTQ0gsIDAsIDEsIHJlZ3MtXHUwMDNlZ2FkZHJbR0FfSFNDSF9UQVNfUFJPRklMRV9DRkddLCBnLCAgICAgICBcXFxuJiM0MztcdCAgICAgIHJlZ3MtXHUwMDNlZ2NudFtHQ19IU0NIX1RBU19QUk9GSUxFX0NGR10sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcbiYjNDM7XHQgICAgICByZWdzLVx1MDAzZWdzaXplW0dXX0hTQ0hfVEFTX1BST0ZJTEVfQ0ZHXSwgMzIsIDAsIDEsIDQpXG4mIzQzO1xuJiM0MzsjZGVmaW5lIEhTQ0hfVEFTX1BST0ZJTEVfQ09ORklHX0xJTktfU1BFRUQgICAgICAgR0VOTUFTSygxMCwgOClcbiYjNDM7I2RlZmluZSBIU0NIX1RBU19QUk9GSUxFX0NPTkZJR19MSU5LX1NQRUVEX1NFVCh4KVxcXG4mIzQzO1x0RklFTERfUFJFUChIU0NIX1RBU19QUk9GSUxFX0NPTkZJR19MSU5LX1NQRUVELCB4KVxuJiM0MzsjZGVmaW5lIEhTQ0hfVEFTX1BST0ZJTEVfQ09ORklHX0xJTktfU1BFRURfR0VUKHgpXFxcbiYjNDM7XHRGSUVMRF9HRVQoSFNDSF9UQVNfUFJPRklMRV9DT05GSUdfTElOS19TUEVFRCwgeClcbiYjNDM7XG4gLyogTEFOOTY5WCBPTkxZICovXG4gLyogSFNJT1dSQVA6WE1JSV9DRkc6WE1JSV9DRkcgKi9cbiAjZGVmaW5lIEhTSU9fV1JBUF9YTUlJX0NGRyhnKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9wb3J0LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9wb3J0LmNcbmluZGV4IDYyYzQ5ODkzZGUzYzM3Li5lZjA2YmVkM2E5Y2M0MiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X3BvcnQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfcG9ydC5jXG5AQCAtMTEsNiAmIzQzOzExLDcgQEBcbiAjaW5jbHVkZSBcJiMzNDtzcGFyeDVfbWFpbl9yZWdzLmhcJiMzNDtcbiAjaW5jbHVkZSBcJiMzNDtzcGFyeDVfbWFpbi5oXCYjMzQ7XG4gI2luY2x1ZGUgXCYjMzQ7c3Bhcng1X3BvcnQuaFwmIzM0O1xuJiM0MzsjaW5jbHVkZSBcJiMzNDtzcGFyeDVfcW9zLmhcJiMzNDtcbiBcbiAjZGVmaW5lIFNQWDVfRVRZUEVfVEFHX0MgICAgIDB4ODEwMFxuICNkZWZpbmUgU1BYNV9FVFlQRV9UQUdfUyAgICAgMHg4OGE4XG5AQCAtMTA1MCw2ICYjNDM7MTA1MSw5IEBAIGludCBzcGFyeDVfcG9ydF9jb25maWcoc3RydWN0IHNwYXJ4NSAqc3Bhcng1LFxuIFx0XHQgc3Bhcng1LFxuIFx0XHQgUUZXRF9TV0lUQ0hfUE9SVF9NT0RFKHBvcnQtXHUwMDNlcG9ydG5vKSk7XG4gXG4mIzQzO1x0LyogTm90aWZ5IFRBUyBhYm91dCB0aGUgc3BlZWQuICovXG4mIzQzO1x0c3Bhcng1X3Rhc19zcGVlZChwb3J0LCBjb25mLVx1MDAzZXNwZWVkKTtcbiYjNDM7XG4gXHQvKiBTYXZlIHRoZSBuZXcgdmFsdWVzICovXG4gXHRwb3J0LVx1MDAzZWNvbmYgPSAqY29uZjtcbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9xb3MuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X3Fvcy5jXG5pbmRleCBlNTgwNjcwZjM5OTJiMC4uOTcyZGE4YTcxZjVhYWEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9xb3MuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfcW9zLmNcbkBAIC05LDYgJiM0Mzs5LDE3IEBAXG4gI2luY2x1ZGUgXCYjMzQ7c3Bhcng1X21haW4uaFwmIzM0O1xuICNpbmNsdWRlIFwmIzM0O3NwYXJ4NV9xb3MuaFwmIzM0O1xuIFxuJiM0MztlbnVtIHNwYXJ4NV90YXNfbGlua19zcGVlZCB7XG4mIzQzO1x0VEFTX1NQRUVEX05PX0dCLFxuJiM0MztcdFRBU19TUEVFRF8xMCxcbiYjNDM7XHRUQVNfU1BFRURfMTAwLFxuJiM0MztcdFRBU19TUEVFRF8xMDAwLFxuJiM0MztcdFRBU19TUEVFRF8yNTAwLFxuJiM0MztcdFRBU19TUEVFRF81MDAwLFxuJiM0MztcdFRBU19TUEVFRF8xMDAwMCxcbiYjNDM7XHRUQVNfU1BFRURfMjUwMDAsXG4mIzQzO307XG4mIzQzO1xuIC8qIENhbGN1bGF0ZSBuZXcgYmFzZV90aW1lIGJhc2VkIG9uIGN5Y2xlX3RpbWUuXG4gICpcbiAgKiBUaGUgaGFyZHdhcmUgcmVxdWlyZXMgYSBiYXNlX3RpbWUgdGhhdCBpcyBhbHdheXMgaW4gdGhlIGZ1dHVyZS5cbkBAIC01ODEsMyAmIzQzOzU5Miw0MSBAQCBpbnQgc3Bhcng1X3RjX2V0c19kZWwoc3RydWN0IHNwYXJ4NV9wb3J0ICpwb3J0KVxuIFxuIFx0cmV0dXJuIHNwYXJ4NV9kd3JyX2NvbmZfc2V0KHBvcnQsIFx1MDAyNmR3cnIpO1xuIH1cbiYjNDM7XG4mIzQzO3ZvaWQgc3Bhcng1X3Rhc19zcGVlZChzdHJ1Y3Qgc3Bhcng1X3BvcnQgKnBvcnQsIGludCBzcGVlZClcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBzcGFyeDUgKnNwYXJ4NSA9IHBvcnQtXHUwMDNlc3Bhcng1O1xuJiM0MztcdHU4IHNwZDtcbiYjNDM7XG4mIzQzO1x0c3dpdGNoIChzcGVlZCkge1xuJiM0MztcdGNhc2UgU1BFRURfMTA6XG4mIzQzO1x0XHRzcGQgPSBUQVNfU1BFRURfMTA7XG4mIzQzO1x0XHRicmVhaztcbiYjNDM7XHRjYXNlIFNQRUVEXzEwMDpcbiYjNDM7XHRcdHNwZCA9IFRBU19TUEVFRF8xMDA7XG4mIzQzO1x0XHRicmVhaztcbiYjNDM7XHRjYXNlIFNQRUVEXzEwMDA6XG4mIzQzO1x0XHRzcGQgPSBUQVNfU1BFRURfMTAwMDtcbiYjNDM7XHRcdGJyZWFrO1xuJiM0MztcdGNhc2UgU1BFRURfMjUwMDpcbiYjNDM7XHRcdHNwZCA9IFRBU19TUEVFRF8yNTAwO1xuJiM0MztcdFx0YnJlYWs7XG4mIzQzO1x0Y2FzZSBTUEVFRF81MDAwOlxuJiM0MztcdFx0c3BkID0gVEFTX1NQRUVEXzUwMDA7XG4mIzQzO1x0XHRicmVhaztcbiYjNDM7XHRjYXNlIFNQRUVEXzEwMDAwOlxuJiM0MztcdFx0c3BkID0gVEFTX1NQRUVEXzEwMDAwO1xuJiM0MztcdFx0YnJlYWs7XG4mIzQzO1x0Y2FzZSBTUEVFRF8yNTAwMDpcbiYjNDM7XHRcdHNwZCA9IFRBU19TUEVFRF8yNTAwMDtcbiYjNDM7XHRcdGJyZWFrO1xuJiM0MztcdGRlZmF1bHQ6XG4mIzQzO1x0XHRuZXRkZXZfZXJyKHBvcnQtXHUwMDNlbmRldiwgXCYjMzQ7VEFTOiBVbnN1cHBvcnRlZCBzcGVlZDogJWRcXG5cJiMzNDssIHNwZWVkKTtcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHNweDVfcm13KEhTQ0hfVEFTX1BST0ZJTEVfQ09ORklHX0xJTktfU1BFRURfU0VUKHNwZCksXG4mIzQzO1x0XHQgSFNDSF9UQVNfUFJPRklMRV9DT05GSUdfTElOS19TUEVFRCxcbiYjNDM7XHRcdCBzcGFyeDUsXG4mIzQzO1x0XHQgSFNDSF9UQVNfUFJPRklMRV9DT05GSUcocG9ydC1cdTAwM2Vwb3J0bm8pKTtcbiYjNDM7fVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X3Fvcy5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfcW9zLmhcbmluZGV4IDA0Zjc2ZjFlMjNmNjBhLi5hOTJhNjk5YzU1MWY5OSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X3Fvcy5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9xb3MuaFxuQEAgLTYwLDYgJiM0Mzs2MCw3IEBAIHN0cnVjdCBzcGFyeDVfZHdyciB7XG4gfTtcbiBcbiBpbnQgc3Bhcng1X3Fvc19pbml0KHN0cnVjdCBzcGFyeDUgKnNwYXJ4NSk7XG4mIzQzO3ZvaWQgc3Bhcng1X3Rhc19zcGVlZChzdHJ1Y3Qgc3Bhcng1X3BvcnQgKnBvcnQsIGludCBzcGVlZCk7XG4gXG4gLyogTXVsdGktUXVldWUgUHJpb3JpdHkgKi9cbiBpbnQgc3Bhcng1X3RjX21xcHJpb19hZGQoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIHU4IG51bV90Yyk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfcmVncy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfcmVncy5jXG5pbmRleCAyMjBlODFiNzE0ZDQxNC4uMzg2M2Y5NTRiZDgzMjMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9yZWdzLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X3JlZ3MuY1xuQEAgLTk1LDYgJiM0Mzs5NSw3IEBAIGNvbnN0IHVuc2lnbmVkIGludCBzcGFyeDVfZ2FkZHJbR0FERFJfTEFTVF0gPSB7XG4gXHRbR0FfSFNDSF9TWVNURU1dID0gMTg0MDAwLFxuIFx0W0dBX0hTQ0hfTU1HVF0gPSAxNjIzNjgsXG4gXHRbR0FfSFNDSF9UQVNfQ09ORklHXSA9IDE2MjM4NCxcbiYjNDM7XHRbR0FfSFNDSF9UQVNfUFJPRklMRV9DRkddID0gMTg4NDE2LFxuIFx0W0dBX1BUUF9QVFBfQ0ZHXSA9IDMyMCxcbiBcdFtHQV9QVFBfUFRQX1RPRF9ET01BSU5TXSA9IDMzNixcbiBcdFtHQV9QVFBfUEhBU0VfREVURUNUT1JfQ1RSTF0gPSA0MjAsXG5AQCAtMTI5LDYgJiM0MzsxMzAsNyBAQCBjb25zdCB1bnNpZ25lZCBpbnQgc3Bhcng1X2djbnRbR0NOVF9MQVNUXSA9IHtcbiBcdFtHQ19HQ0JfU0lPX0NUUkxdID0gMyxcbiBcdFtHQ19IU0NIX0hTQ0hfQ0ZHXSA9IDUwNDAsXG4gXHRbR0NfSFNDSF9IU0NIX0RXUlJdID0gNzIsXG4mIzQzO1x0W0dDX0hTQ0hfVEFTX1BST0ZJTEVfQ0ZHXSA9IDEwMCxcbiBcdFtHQ19QVFBfUFRQX1BJTlNdID0gNSxcbiBcdFtHQ19QVFBfUEhBU0VfREVURUNUT1JfQ1RSTF0gPSA1LFxuIFx0W0dDX1JFV19QT1JUXSA9IDcwLFxuQEAgLTE0NCw2ICYjNDM7MTQ2LDcgQEAgY29uc3QgdW5zaWduZWQgaW50IHNwYXJ4NV9nc2l6ZVtHU0laRV9MQVNUXSA9IHtcbiBcdFtHV19GRE1BX0ZETUFdID0gNDI4LFxuIFx0W0dXX0dDQl9DSElQX1JFR1NdID0gNDI0LFxuIFx0W0dXX0hTQ0hfVEFTX0NPTkZJR10gPSAxMixcbiYjNDM7XHRbR1dfSFNDSF9UQVNfUFJPRklMRV9DRkddID0gNjQsXG4gXHRbR1dfUFRQX1BIQVNFX0RFVEVDVE9SX0NUUkxdID0gOCxcbiBcdFtHV19RU1lTX1BBVVNFX0NGR10gPSAxMTI4LFxuIH07XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfcmVncy5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfcmVncy5oXG5pbmRleCBlYTI4MTMwYzIzNDFiYi4uNTg1NTg5YTMxZTkwNjIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9yZWdzLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X3JlZ3MuaFxuQEAgLTEwNCw2ICYjNDM7MTA0LDcgQEAgZW51bSBzcGFyeDVfZ2FkZHJfZW51bSB7XG4gXHRHQV9IU0NIX1NZU1RFTSxcbiBcdEdBX0hTQ0hfTU1HVCxcbiBcdEdBX0hTQ0hfVEFTX0NPTkZJRyxcbiYjNDM7XHRHQV9IU0NIX1RBU19QUk9GSUxFX0NGRyxcbiBcdEdBX1BUUF9QVFBfQ0ZHLFxuIFx0R0FfUFRQX1BUUF9UT0RfRE9NQUlOUyxcbiBcdEdBX1BUUF9QSEFTRV9ERVRFQ1RPUl9DVFJMLFxuQEAgLTEzOSw2ICYjNDM7MTQwLDcgQEAgZW51bSBzcGFyeDVfZ2NudF9lbnVtIHtcbiBcdEdDX0dDQl9TSU9fQ1RSTCxcbiBcdEdDX0hTQ0hfSFNDSF9DRkcsXG4gXHRHQ19IU0NIX0hTQ0hfRFdSUixcbiYjNDM7XHRHQ19IU0NIX1RBU19QUk9GSUxFX0NGRyxcbiBcdEdDX1BUUF9QVFBfUElOUyxcbiBcdEdDX1BUUF9QSEFTRV9ERVRFQ1RPUl9DVFJMLFxuIFx0R0NfUkVXX1BPUlQsXG5AQCAtMTU1LDYgJiM0MzsxNTcsNyBAQCBlbnVtIHNwYXJ4NV9nc2l6ZV9lbnVtIHtcbiBcdEdXX0ZETUFfRkRNQSxcbiBcdEdXX0dDQl9DSElQX1JFR1MsXG4gXHRHV19IU0NIX1RBU19DT05GSUcsXG4mIzQzO1x0R1dfSFNDSF9UQVNfUFJPRklMRV9DRkcsXG4gXHRHV19QVFBfUEhBU0VfREVURUNUT1JfQ1RSTCxcbiBcdEdXX1FTWVNfUEFVU0VfQ0ZHLFxuIFx0R1NJWkVfTEFTVCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAwMzoxMDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWljcm9jaGlwIFNwYXJ4NSBzd2l0Y2ggZHJpdmVyLCB3aGljaCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIHBsYXRmb3JtIGRyaXZlci4gVGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChsaWtlIFFFTVUgb3IgR0NFKSwgc28gdGhlIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgODkyM2UwNjY0NjY3MmY4MDE3ZDBlYTJjZGE1ZGQwMTQ2OWZmNzgxYQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgSnVsIDggMDM6MTA6NTAgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L2xhbjk2OXgvbGFuOTY5eF9yZWdzLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L2xhbjk2OXgvbGFuOTY5eF9yZWdzLmMKaW5kZXggYWNlNGJhMjFlZWM0MzMuLjNmYzJjMDA2YmExMjllIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L2xhbjk2OXgvbGFuOTY5eF9yZWdzLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9sYW45Njl4L2xhbjk2OXhfcmVncy5jCkBAIC05NSw2ICYjNDM7OTUsNyBAQCBjb25zdCB1bnNpZ25lZCBpbnQgbGFuOTY5eF9nYWRkcltHQUREUl9MQVNUXSA9IHsKIAlbR0FfSFNDSF9TWVNURU1dID0gMzczODQsCiAJW0dBX0hTQ0hfTU1HVF0gPSAzNjI2MCwKIAlbR0FfSFNDSF9UQVNfQ09ORklHXSA9IDM3Njk2LAomIzQzOwlbR0FfSFNDSF9UQVNfUFJPRklMRV9DRkddID0gMzc3MTIsCiAJW0dBX1BUUF9QVFBfQ0ZHXSA9IDUxMiwKIAlbR0FfUFRQX1BUUF9UT0RfRE9NQUlOU10gPSA1MjgsCiAJW0dBX1BUUF9QSEFTRV9ERVRFQ1RPUl9DVFJMXSA9IDYyOCwKQEAgLTEyOSw2ICYjNDM7MTMwLDcgQEAgY29uc3QgdW5zaWduZWQgaW50IGxhbjk2OXhfZ2NudFtHQ05UX0xBU1RdID0gewogCVtHQ19HQ0JfU0lPX0NUUkxdID0gMSwKIAlbR0NfSFNDSF9IU0NIX0NGR10gPSAxMTIwLAogCVtHQ19IU0NIX0hTQ0hfRFdSUl0gPSAzMiwKJiM0MzsJW0dDX0hTQ0hfVEFTX1BST0ZJTEVfQ0ZHXSA9IDMwLAogCVtHQ19QVFBfUFRQX1BJTlNdID0gOCwKIAlbR0NfUFRQX1BIQVNFX0RFVEVDVE9SX0NUUkxdID0gOCwKIAlbR0NfUkVXX1BPUlRdID0gMzUsCkBAIC0xNDQsNiAmIzQzOzE0Niw3IEBAIGNvbnN0IHVuc2lnbmVkIGludCBsYW45Njl4X2dzaXplW0dTSVpFX0xBU1RdID0gewogCVtHV19GRE1BX0ZETUFdID0gNDQ4LAogCVtHV19HQ0JfQ0hJUF9SRUdTXSA9IDE4MCwKIAlbR1dfSFNDSF9UQVNfQ09ORklHXSA9IDE2LAomIzQzOwlbR1dfSFNDSF9UQVNfUFJPRklMRV9DRkddID0gNjgsCiAJW0dXX1BUUF9QSEFTRV9ERVRFQ1RPUl9DVFJMXSA9IDEyLAogCVtHV19RU1lTX1BBVVNFX0NGR10gPSA5ODgsCiB9OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfbWFpbl9yZWdzLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9tYWluX3JlZ3MuaAppbmRleCBkOWVmNGVmMTM3YjgwYy4uZDM0NDY3NTEzNjQ4NDggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X21haW5fcmVncy5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X21haW5fcmVncy5oCkBAIC01MzY5LDYgJiM0Mzs1MzY5LDE4IEBAIGV4dGVybiBjb25zdCBzdHJ1Y3Qgc3Bhcng1X3JlZ3MgKnJlZ3M7CiAjZGVmaW5lIEhTQ0hfVEFTX1NUQVRFTUFDSElORV9DRkdfUkVWSVNJVF9ETFlfR0VUKHgpXAogCUZJRUxEX0dFVChIU0NIX1RBU19TVEFURU1BQ0hJTkVfQ0ZHX1JFVklTSVRfRExZLCB4KQogCiYjNDM7LyogSFNDSDpUQVNfUFJPRklMRV9DRkc6VEFTX1BST0ZJTEVfQ09ORklHICovCiYjNDM7I2RlZmluZSBIU0NIX1RBU19QUk9GSUxFX0NPTkZJRyhnKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKJiM0MzsJX19SRUcoVEFSR0VUX0hTQ0gsIDAsIDEsIHJlZ3MtJmd0O2dhZGRyW0dBX0hTQ0hfVEFTX1BST0ZJTEVfQ0ZHXSwgZywgICAgICAgXAomIzQzOwkgICAgICByZWdzLSZndDtnY250W0dDX0hTQ0hfVEFTX1BST0ZJTEVfQ0ZHXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiYjNDM7CSAgICAgIHJlZ3MtJmd0O2dzaXplW0dXX0hTQ0hfVEFTX1BST0ZJTEVfQ0ZHXSwgMzIsIDAsIDEsIDQpCiYjNDM7CiYjNDM7I2RlZmluZSBIU0NIX1RBU19QUk9GSUxFX0NPTkZJR19MSU5LX1NQRUVEICAgICAgIEdFTk1BU0soMTAsIDgpCiYjNDM7I2RlZmluZSBIU0NIX1RBU19QUk9GSUxFX0NPTkZJR19MSU5LX1NQRUVEX1NFVCh4KVwKJiM0MzsJRklFTERfUFJFUChIU0NIX1RBU19QUk9GSUxFX0NPTkZJR19MSU5LX1NQRUVELCB4KQomIzQzOyNkZWZpbmUgSFNDSF9UQVNfUFJPRklMRV9DT05GSUdfTElOS19TUEVFRF9HRVQoeClcCiYjNDM7CUZJRUxEX0dFVChIU0NIX1RBU19QUk9GSUxFX0NPTkZJR19MSU5LX1NQRUVELCB4KQomIzQzOwogLyogTEFOOTY5WCBPTkxZICovCiAvKiBIU0lPV1JBUDpYTUlJX0NGRzpYTUlJX0NGRyAqLwogI2RlZmluZSBIU0lPX1dSQVBfWE1JSV9DRkcoZykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X3BvcnQuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X3BvcnQuYwppbmRleCA2MmM0OTg5M2RlM2MzNy4uZWYwNmJlZDNhOWNjNDIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X3BvcnQuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9wb3J0LmMKQEAgLTExLDYgJiM0MzsxMSw3IEBACiAjaW5jbHVkZSAmIzM0O3NwYXJ4NV9tYWluX3JlZ3MuaCYjMzQ7CiAjaW5jbHVkZSAmIzM0O3NwYXJ4NV9tYWluLmgmIzM0OwogI2luY2x1ZGUgJiMzNDtzcGFyeDVfcG9ydC5oJiMzNDsKJiM0MzsjaW5jbHVkZSAmIzM0O3NwYXJ4NV9xb3MuaCYjMzQ7CiAKICNkZWZpbmUgU1BYNV9FVFlQRV9UQUdfQyAgICAgMHg4MTAwCiAjZGVmaW5lIFNQWDVfRVRZUEVfVEFHX1MgICAgIDB4ODhhOApAQCAtMTA1MCw2ICYjNDM7MTA1MSw5IEBAIGludCBzcGFyeDVfcG9ydF9jb25maWcoc3RydWN0IHNwYXJ4NSAqc3Bhcng1LAogCQkgc3Bhcng1LAogCQkgUUZXRF9TV0lUQ0hfUE9SVF9NT0RFKHBvcnQtJmd0O3BvcnRubykpOwogCiYjNDM7CS8qIE5vdGlmeSBUQVMgYWJvdXQgdGhlIHNwZWVkLiAqLwomIzQzOwlzcGFyeDVfdGFzX3NwZWVkKHBvcnQsIGNvbmYtJmd0O3NwZWVkKTsKJiM0MzsKIAkvKiBTYXZlIHRoZSBuZXcgdmFsdWVzICovCiAJcG9ydC0mZ3Q7Y29uZiA9ICpjb25mOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9xb3MuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X3Fvcy5jCmluZGV4IGU1ODA2NzBmMzk5MmIwLi45NzJkYThhNzFmNWFhYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfcW9zLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfcW9zLmMKQEAgLTksNiAmIzQzOzksMTcgQEAKICNpbmNsdWRlICYjMzQ7c3Bhcng1X21haW4uaCYjMzQ7CiAjaW5jbHVkZSAmIzM0O3NwYXJ4NV9xb3MuaCYjMzQ7CiAKJiM0MztlbnVtIHNwYXJ4NV90YXNfbGlua19zcGVlZCB7CiYjNDM7CVRBU19TUEVFRF9OT19HQiwKJiM0MzsJVEFTX1NQRUVEXzEwLAomIzQzOwlUQVNfU1BFRURfMTAwLAomIzQzOwlUQVNfU1BFRURfMTAwMCwKJiM0MzsJVEFTX1NQRUVEXzI1MDAsCiYjNDM7CVRBU19TUEVFRF81MDAwLAomIzQzOwlUQVNfU1BFRURfMTAwMDAsCiYjNDM7CVRBU19TUEVFRF8yNTAwMCwKJiM0Mzt9OwomIzQzOwogLyogQ2FsY3VsYXRlIG5ldyBiYXNlX3RpbWUgYmFzZWQgb24gY3ljbGVfdGltZS4KICAqCiAgKiBUaGUgaGFyZHdhcmUgcmVxdWlyZXMgYSBiYXNlX3RpbWUgdGhhdCBpcyBhbHdheXMgaW4gdGhlIGZ1dHVyZS4KQEAgLTU4MSwzICYjNDM7NTkyLDQxIEBAIGludCBzcGFyeDVfdGNfZXRzX2RlbChzdHJ1Y3Qgc3Bhcng1X3BvcnQgKnBvcnQpCiAKIAlyZXR1cm4gc3Bhcng1X2R3cnJfY29uZl9zZXQocG9ydCwgJmFtcDtkd3JyKTsKIH0KJiM0MzsKJiM0Mzt2b2lkIHNwYXJ4NV90YXNfc3BlZWQoc3RydWN0IHNwYXJ4NV9wb3J0ICpwb3J0LCBpbnQgc3BlZWQpCiYjNDM7ewomIzQzOwlzdHJ1Y3Qgc3Bhcng1ICpzcGFyeDUgPSBwb3J0LSZndDtzcGFyeDU7CiYjNDM7CXU4IHNwZDsKJiM0MzsKJiM0MzsJc3dpdGNoIChzcGVlZCkgewomIzQzOwljYXNlIFNQRUVEXzEwOgomIzQzOwkJc3BkID0gVEFTX1NQRUVEXzEwOwomIzQzOwkJYnJlYWs7CiYjNDM7CWNhc2UgU1BFRURfMTAwOgomIzQzOwkJc3BkID0gVEFTX1NQRUVEXzEwMDsKJiM0MzsJCWJyZWFrOwomIzQzOwljYXNlIFNQRUVEXzEwMDA6CiYjNDM7CQlzcGQgPSBUQVNfU1BFRURfMTAwMDsKJiM0MzsJCWJyZWFrOwomIzQzOwljYXNlIFNQRUVEXzI1MDA6CiYjNDM7CQlzcGQgPSBUQVNfU1BFRURfMjUwMDsKJiM0MzsJCWJyZWFrOwomIzQzOwljYXNlIFNQRUVEXzUwMDA6CiYjNDM7CQlzcGQgPSBUQVNfU1BFRURfNTAwMDsKJiM0MzsJCWJyZWFrOwomIzQzOwljYXNlIFNQRUVEXzEwMDAwOgomIzQzOwkJc3BkID0gVEFTX1NQRUVEXzEwMDAwOwomIzQzOwkJYnJlYWs7CiYjNDM7CWNhc2UgU1BFRURfMjUwMDA6CiYjNDM7CQlzcGQgPSBUQVNfU1BFRURfMjUwMDA7CiYjNDM7CQlicmVhazsKJiM0MzsJZGVmYXVsdDoKJiM0MzsJCW5ldGRldl9lcnIocG9ydC0mZ3Q7bmRldiwgJiMzNDtUQVM6IFVuc3VwcG9ydGVkIHNwZWVkOiAlZFxuJiMzNDssIHNwZWVkKTsKJiM0MzsJCXJldHVybjsKJiM0MzsJfQomIzQzOwomIzQzOwlzcHg1X3JtdyhIU0NIX1RBU19QUk9GSUxFX0NPTkZJR19MSU5LX1NQRUVEX1NFVChzcGQpLAomIzQzOwkJIEhTQ0hfVEFTX1BST0ZJTEVfQ09ORklHX0xJTktfU1BFRUQsCiYjNDM7CQkgc3Bhcng1LAomIzQzOwkJIEhTQ0hfVEFTX1BST0ZJTEVfQ09ORklHKHBvcnQtJmd0O3BvcnRubykpOwomIzQzO30KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X3Fvcy5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfcW9zLmgKaW5kZXggMDRmNzZmMWUyM2Y2MGEuLmE5MmE2OTljNTUxZjk5IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9xb3MuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9xb3MuaApAQCAtNjAsNiAmIzQzOzYwLDcgQEAgc3RydWN0IHNwYXJ4NV9kd3JyIHsKIH07CiAKIGludCBzcGFyeDVfcW9zX2luaXQoc3RydWN0IHNwYXJ4NSAqc3Bhcng1KTsKJiM0Mzt2b2lkIHNwYXJ4NV90YXNfc3BlZWQoc3RydWN0IHNwYXJ4NV9wb3J0ICpwb3J0LCBpbnQgc3BlZWQpOwogCiAvKiBNdWx0aS1RdWV1ZSBQcmlvcml0eSAqLwogaW50IHNwYXJ4NV90Y19tcXByaW9fYWRkKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCB1OCBudW1fdGMpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfcmVncy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfcmVncy5jCmluZGV4IDIyMGU4MWI3MTRkNDE0Li4zODYzZjk1NGJkODMyMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfcmVncy5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X3JlZ3MuYwpAQCAtOTUsNiAmIzQzOzk1LDcgQEAgY29uc3QgdW5zaWduZWQgaW50IHNwYXJ4NV9nYWRkcltHQUREUl9MQVNUXSA9IHsKIAlbR0FfSFNDSF9TWVNURU1dID0gMTg0MDAwLAogCVtHQV9IU0NIX01NR1RdID0gMTYyMzY4LAogCVtHQV9IU0NIX1RBU19DT05GSUddID0gMTYyMzg0LAomIzQzOwlbR0FfSFNDSF9UQVNfUFJPRklMRV9DRkddID0gMTg4NDE2LAogCVtHQV9QVFBfUFRQX0NGR10gPSAzMjAsCiAJW0dBX1BUUF9QVFBfVE9EX0RPTUFJTlNdID0gMzM2LAogCVtHQV9QVFBfUEhBU0VfREVURUNUT1JfQ1RSTF0gPSA0MjAsCkBAIC0xMjksNiAmIzQzOzEzMCw3IEBAIGNvbnN0IHVuc2lnbmVkIGludCBzcGFyeDVfZ2NudFtHQ05UX0xBU1RdID0gewogCVtHQ19HQ0JfU0lPX0NUUkxdID0gMywKIAlbR0NfSFNDSF9IU0NIX0NGR10gPSA1MDQwLAogCVtHQ19IU0NIX0hTQ0hfRFdSUl0gPSA3MiwKJiM0MzsJW0dDX0hTQ0hfVEFTX1BST0ZJTEVfQ0ZHXSA9IDEwMCwKIAlbR0NfUFRQX1BUUF9QSU5TXSA9IDUsCiAJW0dDX1BUUF9QSEFTRV9ERVRFQ1RPUl9DVFJMXSA9IDUsCiAJW0dDX1JFV19QT1JUXSA9IDcwLApAQCAtMTQ0LDYgJiM0MzsxNDYsNyBAQCBjb25zdCB1bnNpZ25lZCBpbnQgc3Bhcng1X2dzaXplW0dTSVpFX0xBU1RdID0gewogCVtHV19GRE1BX0ZETUFdID0gNDI4LAogCVtHV19HQ0JfQ0hJUF9SRUdTXSA9IDQyNCwKIAlbR1dfSFNDSF9UQVNfQ09ORklHXSA9IDEyLAomIzQzOwlbR1dfSFNDSF9UQVNfUFJPRklMRV9DRkddID0gNjQsCiAJW0dXX1BUUF9QSEFTRV9ERVRFQ1RPUl9DVFJMXSA9IDgsCiAJW0dXX1FTWVNfUEFVU0VfQ0ZHXSA9IDExMjgsCiB9OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfcmVncy5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfcmVncy5oCmluZGV4IGVhMjgxMzBjMjM0MWJiLi41ODU1ODlhMzFlOTA2MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfcmVncy5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X3JlZ3MuaApAQCAtMTA0LDYgJiM0MzsxMDQsNyBAQCBlbnVtIHNwYXJ4NV9nYWRkcl9lbnVtIHsKIAlHQV9IU0NIX1NZU1RFTSwKIAlHQV9IU0NIX01NR1QsCiAJR0FfSFNDSF9UQVNfQ09ORklHLAomIzQzOwlHQV9IU0NIX1RBU19QUk9GSUxFX0NGRywKIAlHQV9QVFBfUFRQX0NGRywKIAlHQV9QVFBfUFRQX1RPRF9ET01BSU5TLAogCUdBX1BUUF9QSEFTRV9ERVRFQ1RPUl9DVFJMLApAQCAtMTM5LDYgJiM0MzsxNDAsNyBAQCBlbnVtIHNwYXJ4NV9nY250X2VudW0gewogCUdDX0dDQl9TSU9fQ1RSTCwKIAlHQ19IU0NIX0hTQ0hfQ0ZHLAogCUdDX0hTQ0hfSFNDSF9EV1JSLAomIzQzOwlHQ19IU0NIX1RBU19QUk9GSUxFX0NGRywKIAlHQ19QVFBfUFRQX1BJTlMsCiAJR0NfUFRQX1BIQVNFX0RFVEVDVE9SX0NUUkwsCiAJR0NfUkVXX1BPUlQsCkBAIC0xNTUsNiAmIzQzOzE1Nyw3IEBAIGVudW0gc3Bhcng1X2dzaXplX2VudW0gewogCUdXX0ZETUFfRkRNQSwKIAlHV19HQ0JfQ0hJUF9SRUdTLAogCUdXX0hTQ0hfVEFTX0NPTkZJRywKJiM0MzsJR1dfSFNDSF9UQVNfUFJPRklMRV9DRkcsCiAJR1dfUFRQX1BIQVNFX0RFVEVDVE9SX0NUUkwsCiAJR1dfUVNZU19QQVVTRV9DRkcsCiAJR1NJWkVfTEFTVCwKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMDM6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTMxNAoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDE4OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFNwYXJ4NSBFdGhlcm5ldCBEcml2ZXIgTW9kaWZpY2F0aW9uKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIHBhdGNoIHRoYXQgaW50cm9kdWNlcyBhIG5ldyBmdW5jdGlvbiwgYHNwYXJ4NV90YXNfc3BlZWRgLCBpbiB0aGUgTWljcm9jaGlwIFNwYXJ4NSBFdGhlcm5ldCBkcml2ZXIuIEl0JiMzOTtzIGluIGBzcGFyeDVfcW9zLmNgLCBhbmQgaXQgbG9va3MgbGlrZSBpdCYjMzk7cyBjYWxsZWQgZnJvbSBgc3Bhcng1X3BvcnRfY29uZmlnYCBpbiBgc3Bhcng1X3BvcnQuY2AuIFRoaXMgc3VnZ2VzdHMgaXQmIzM5O3MgbGlrZWx5IHJlc3BvbnNpYmxlIGZvciB1cGRhdGluZyBzb21lIGhhcmR3YXJlIHJlZ2lzdGVycywgcHJvYmFibHkgcmVsYXRlZCB0byB0aGUgcG9ydCBzcGVlZCBjb25maWd1cmF0aW9uLiBOb3RoaW5nIGltbWVkaWF0ZWx5IHNjcmVhbXMgb3V0IGFzIHByb2JsZW1hdGljLCBidXQgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBpbXBsZW1lbnRhdGlvbiBiZXR0ZXIuCgpUaGUgY3JpdGljYWwgcXVlc3Rpb24gbm93IGlzIHJlYWNoYWJpbGl0eTogQ2FuIHRoaXMgbmV3IGZ1bmN0aW9uICphY3R1YWxseSogZ2V0IGNhbGxlZCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LCB3aGljaCBpcyB3aGVyZSBJJiMzOTtsbCBsaWtlbHkgYmUgdGVzdGluZyB0aGlzPyBUaGUgZHJpdmVyIGl0c2VsZiBpcyBjbGVhcmx5IHRpZWQgdG8gdGhlIGBTUEFSWDVfU1dJVENIYCBjb25maWd1cmF0aW9uIG9wdGlvbi4gTm93LCB0aGUgcmVhbCBpc3N1ZSBpcyBob3cgdGhpcyBkZXZpY2UgYXBwZWFycyBpbiB0aGUgc3lzdGVtLiBJcyBpdCBhIFBDSSBkZXZpY2UsIG9yIGEgcGxhdGZvcm0gZGV2aWNlPyBUaGlzIHdpbGwgZHJhc3RpY2FsbHkgaW5mbHVlbmNlIGl0cyB2aXNpYmlsaXR5IHRvIGEgaHlwZXJ2aXNvci4gSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSBkcml2ZXImIzM5O3MgS2NvbmZpZyBvciBwZXJoYXBzIGV2ZW4gYHNwYXJ4NV9tYWluLmNgIHRvIGZpZ3VyZSBvdXQgaXRzIG5hdHVyZS4gTGV0JiMzOTtzIHNlZSBpZiB0aGlzIGNvbmZpZ3VyYXRpb24gYWN0dWFsbHkgc3VwcG9ydHMgdmlydHVhbGl6YXRpb24sIGFuZCB0aGVuIEkmIzM5O2xsIGFzc2VzcyB0aGUgcG90ZW50aWFsIGltcGFjdCBvZiB0aGlzIHBhdGNoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDAzOjEwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O1NQQVJYNV9TV0lUQ0gmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L0tjb25maWc6MTpjb25maWcgU1BBUlg1X1NXSVRDSFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9LY29uZmlnLTItXHR0cmlzdGF0ZSBcJiMzNDtTcGFyeDUgc3dpdGNoIGRyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvS2NvbmZpZz0xNz1jb25maWcgU1BBUlg1X0RDQlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9LY29uZmlnLTE4LVx0Ym9vbCBcJiMzNDtEYXRhIENlbnRlciBCcmlkZ2luZyAoRENCKSBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L0tjb25maWc6MTk6XHRkZXBlbmRzIG9uIFNQQVJYNV9TV0lUQ0ggXHUwMDI2XHUwMDI2IERDQlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9LY29uZmlnLTIwLVx0ZGVmYXVsdCB5XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9LY29uZmlnPTI4PWNvbmZpZyBMQU45NjlYX1NXSVRDSFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9LY29uZmlnLTI5LVx0Ym9vbCBcJiMzNDtMYW45Njl4IHN3aXRjaCBkcml2ZXJcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvS2NvbmZpZzozMDpcdGRlcGVuZHMgb24gU1BBUlg1X1NXSVRDSFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9LY29uZmlnLTMxLVx0c2VsZWN0IFBBR0VfUE9PTFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvTWFrZWZpbGUtNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvTWFrZWZpbGU6NjpvYmotJChDT05GSUdfU1BBUlg1X1NXSVRDSCkgJiM0Mzs9IHNwYXJ4NS1zd2l0Y2gub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9NYWtlZmlsZS03LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDAzOjEwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYxOTYKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBzdW1tYXJ5LCB0YWtpbmcgb24gdGhlIHBlcnNvbmEgeW91JiMzOTt2ZSByZXF1ZXN0ZWQ6CgoqKkRlY29uc3RydWN0aW5nIERldmljZSBSZWdpc3RyYXRpb24gaW4gYHNwYXJ4NV9tYWluLmNgKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgYHNwYXJ4NV9tYWluLmNgIGhhbmRsZXMgZGV2aWNlIHJlZ2lzdHJhdGlvbi4gU3BlY2lmaWNhbGx5LCBJIHdhbnQgdG8gdHJhY2UgdGhlIGZsb3cg4oCTIGZyb20gYm9vdCBvciBpbml0aWFsaXphdGlvbiwgcmlnaHQgdGhyb3VnaCB0byB0aGUgcG9pbnQgd2hlcmUgdGhlIGRldmljZSBpcyBhY3R1YWxseSBtYWRlIGF2YWlsYWJsZSB0byB0aGUgc3lzdGVtLiBXaGF0IGhvb2tzIGFyZSBpbiBwbGFjZT8gV2hhdCBkYXRhIHN0cnVjdHVyZXMgYXJlIGludm9sdmVkPyBJJiMzOTttIGFudGljaXBhdGluZyB0aGVyZSB3aWxsIGJlIGNhbGxzIHRvIGEgZ2VuZXJpYyBkcml2ZXIgZnJhbWV3b3JrLCBsaWtlbHkgaW52b2x2aW5nIGBzdHJ1Y3QgZGV2aWNlYCBhbmQgYXNzb2NpYXRlZCBtZXRob2RzLiBJIG5lZWQgdG8gc2VlIGhvdyB0aGUgc3BlY2lmaWMgYHNwYXJ4NWAgaGFyZHdhcmUgaXMgZGVzY3JpYmVkIGFuZCBhdHRhY2hlZCB0byB0aGUga2VybmVsJiMzOTtzIGRldmljZSB0cmVlIG9yIHNvbWUgZXF1aXZhbGVudCBtZWNoYW5pc20uIEFyZSB0aGVyZSBjdXN0b20gY29uZmlndXJhdGlvbiBvcHRpb25zIG9yIHF1aXJrcyB0aGF0IG5lZWQgdG8gYmUgYWRkcmVzc2VkIGF0IHRoaXMgc3RhZ2U/IEFyZSBpbnRlcnJ1cHRzIHNldCB1cCBoZXJlLCBvciBpcyB0aGF0IGRlZmVycmVkPyBJJiMzOTttIHRoaW5raW5nIGFib3V0IHJlc291cmNlIGFsbG9jYXRpb24g4oCTIG1lbW9yeSByZWdpb25zLCBpbnRlcnJ1cHQgbGluZXMsIERNQSBjaGFubmVscy4uLiBIb3cgYXJlIHRob3NlIG1hbmFnZWQgYW5kIGNsYWltZWQgZHVyaW5nIHJlZ2lzdHJhdGlvbj8gSXTigJlzIGFsc28gY3J1Y2lhbCB0byBzZWUgaG93IGVycm9yIGhhbmRsaW5nIGlzIGltcGxlbWVudGVkIGR1cmluZyB0aGlzIHByb2Nlc3MsIGFuZCBpZiB0aGVyZSBhcmUgZmFsbGJhY2sgbWVjaGFuaXNtcyBzaG91bGQgdGhlIGluaXRpYWwgcmVnaXN0cmF0aW9uIGZhaWwuIEkgbmVlZCB0byBzcG90IHRoZSBjcml0aWNhbCBwb2ludHMgd2hlcmUgaXQgbWlnaHQgYmUgcG9zc2libGUgdG8gaW5qZWN0IHNvbWUgY3VzdG9tIGNvZGUgZm9yIG15IG93biByZXF1aXJlbWVudHMuIFRoaXMgaXMgd2hlcmUgdGhlIHJ1YmJlciBtZWV0cyB0aGUgcm9hZCwgc28gbGV0JiMzOTtzIGdldCBpbnRvIGl0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDAzOjExPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21vZHVsZV8uKmRyaXZlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X21haW4uYz0xMTEyPXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIG1jaHBfc3Bhcng1X2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9tYWluLmMtMTEyMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X21haW4uYzoxMTIxOm1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIobWNocF9zcGFyeDVfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X21haW4uYy0xMTIyLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDAzOjExPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY2ODkKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkFuYWx5emluZyB0aGUgUGxhdGZvcm0gRHJpdmVyKioKCkFscmlnaHQsIG15IGluaXRpYWwgcmVhZCBpcyB0aGF0IHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYSBwbGF0Zm9ybSBkcml2ZXIgaGVyZS4gTXkgaW1tZWRpYXRlIGZvY3VzLCB0aGVuLCBpcyB1bmRlcnN0YW5kaW5nIGl0cyBpbnRlcmFjdGlvbiB3aXRoIHRoZSBicm9hZGVyIHN5c3RlbSBhcmNoaXRlY3R1cmUuIFRoZSBrZXkgaXMgaW4gdGhlIG1hdGNoIHRhYmxlLiBUaGF0JiMzOTtzIHdoZXJlIHRoZSBjcnVjaWFsIGRldGFpbHMgcmVnYXJkaW5nIGRldmljZSBpZGVudGlmaWNhdGlvbiBhbmQgYmluZGluZyByZXNpZGUuIExldCBtZSBkcmlsbCBkb3duIGFuZCBleGFtaW5lIHRoaXMgdGFibGUgdG8gdW5kZXJzdGFuZCB3aGljaCBkZXZpY2VzIHRoaXMgZHJpdmVyIGlzIGRlc2lnbmVkIHRvIHdvcmsgd2l0aCwgYW5kIHRoZSBzcGVjaWZpY3Mgb2YgdGhlIG1hdGNoIGNyaXRlcmlhLiBUaGlzIGdpdmVzIHRoZSBmcmFtZXdvcmsgZm9yIGlkZW50aWZ5aW5nIHdoYXQgdGhpcyBkb2VzLCBhbmQgd2hhdCBzeXN0ZW1zIGl0IG5lZWRzIHRvIGhvb2sgaW50by4gSSYjMzk7bGwgbmVlZCB0byBzZWUgaWYgaXQmIzM5O3MgYmFzZWQgb24gbmFtZSBtYXRjaGluZywgSUQgbWF0Y2hpbmcsIG9yIHNvbWUgbW9yZSBjb21wbGV4IHByb3BlcnR5IG1hdGNoaW5nIHNjaGVtZSB0byBmdWxseSBncmFzcCBpdHMgZnVuY3Rpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMDM6MTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7b2ZfZGV2aWNlX2lkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfbWFpbi5jPTEwOTQ9c3RhdGljIGNvbnN0IHN0cnVjdCBzcGFyeDVfbWF0Y2hfZGF0YSBzcGFyeDVfZGVzYyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9tYWluLmMtMTEwMi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X21haW4uYzoxMTAzOnN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIG1jaHBfc3Bhcng1X21hdGNoW10gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9tYWluLmMtMTEwNC1cdHsgLmNvbXBhdGlibGUgPSBcJiMzNDttaWNyb2NoaXAsc3Bhcng1LXN3aXRjaFwmIzM0OywgLmRhdGEgPSBcdTAwMjZzcGFyeDVfZGVzYyB9LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDAzOjExPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcwOTkKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAxNTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBDaGFsbGVuZ2U6IEZ1enppbmcgYSBIYXJkd2FyZS1TcGVjaWZpYyBEcml2ZXIqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgZGV2aWNlLCBhIHBsYXRmb3JtIGRldmljZSBzcGVjaWZpY2FsbHkgZGVzaWduZWQgYXJvdW5kIGEgJiMzNDttaWNyb2NoaXAsc3Bhcng1LXN3aXRjaCYjMzQ7LiBSaWdodCBhd2F5LCBJJiMzOTttIHRoaW5raW5nIHRoaXMgaXMgZ29pbmcgdG8gYmUgdHJpY2t5LiBCZWluZyBoYXJkd2FyZS1zcGVjaWZpYyBtZWFucyBJIGNhbiYjMzk7dCBqdXN0IHRocm93IGl0IGludG8gYSBnZW5lcmljIHZpcnR1YWxpemVkIHNldHVwIGxpa2UgUUVNVSBvciBHQ0UgYW5kIGV4cGVjdCBpdCB0byB3b3JrIHdpdGhvdXQgc29tZSBzZXJpb3VzIGhhcmR3YXJlIGVtdWxhdGlvbiwgYW5kIEkga25vdyB0aGVyZSBpc24mIzM5O3QgYW55IHN0YW5kYXJkIFFFTVUgc3VwcG9ydCBmb3IgdGhpcyBwYXJ0aWN1bGFyIGRldmljZS4KCkhvbGQgb24gYSBzZWNvbmQsIHRob3VnaCwgc3l6a2FsbGVyICpkb2VzKiBoYXZlIHNvbWUgZmVhdHVyZXMgZm9yIGluamVjdGluZyBwbGF0Zm9ybSBkZXZpY2VzLCB3aGljaCBpcyBwcm9taXNpbmcuIEJ1dCBJIGtub3cgZnJvbSBleHBlcmllbmNlIHRoYXQgaXQgcmFyZWx5IGdvZXMgdGhlIGV4dHJhIG1pbGUgdG8gZW11bGF0ZSB0aGUgaGFyZHdhcmUgcmVnaXN0ZXJzLiBTbywgaWYgdGhlIGRyaXZlciBhY3R1YWxseSB0cmllcyB0byByZWFkIG9yIHdyaXRlIHRvIGFueSBvZiB0aG9zZSByZWdpc3RlcnMsIHdlJiMzOTtyZSBsaWtlbHkgZ29pbmcgdG8gZ2V0IGEgY3Jhc2ggb3IgdGhlIHByb2JlIGlzIGp1c3QgZ29pbmcgdG8gZmFpbCBzaW5jZSB0aGUgaGFyZHdhcmUgaXNuJiMzOTt0IHBoeXNpY2FsbHkgcHJlc2VudCBvciBjb3JyZWN0bHkgZW11bGF0ZWQuCgpBbHJpZ2h0LCB0aGUgc21hcnQgbW92ZSBoZXJlIGlzIHRvIGRpZyBpbnRvIHRoZSBkcml2ZXImIzM5O3MgY29kZSBhbmQgc2VlIGlmIGl0IG1hcHMgYW55IG1lbW9yeSBvciByZWFkcyBkYXRhIGZyb20gaXQuIFRoYXQmIzM5O2xsIGJlIHRoZSB0ZWxsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAwMzoxMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkZXZtX2lvcmVtYXAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9tYWluLmM9MjY4PXN0YXRpYyBpbnQgc3Bhcng1X2NyZWF0ZV90YXJnZXRzKHN0cnVjdCBzcGFyeDUgKnNwYXJ4NSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9tYWluLmMtMjkzLVx0XHR9XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9tYWluLmM6Mjk0Olx0XHRpb21lbVtpZHhdID0gZGV2bV9pb3JlbWFwKHNwYXJ4NS1cdTAwM2VkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9tYWluLmMtMjk1LVx0XHRcdFx0XHQgIGlvcmVzW2lkeF0tXHUwMDNlc3RhcnQsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDAzOjExPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc3MDAKCQkJCQkJCW91dHB1dDogODIKCQkJCQkJCXRob3VnaHRzOiAxNDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBGZWFzaWJpbGl0eSBBc3Nlc3NtZW50KioKCk9rYXksIHNvIHRoaXMgY29kZSB1c2VzIGBkZXZtX2lvcmVtYXBgLCB3aGljaCBpbmRpY2F0ZXMgaXQmIzM5O3MgbGlrZWx5IHJlYWRpbmcgYW5kIHdyaXRpbmcgdG8gcmVnaXN0ZXJzLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsICYjMzQ7Y2FuIHRoaXMgYmUgZnV6emVkIGVmZmVjdGl2ZWx5PyYjMzQ7IFRoZSBjaGFsbGVuZ2UsIGFzIEkgdW5kZXJzdGFuZCBpdCwgc3RlbXMgZnJvbSB0aGUgZHJpdmVyJiMzOTtzIG5hdHVyZS4gSXQmIzM5O3MgYSBoYXJkd2FyZS1zcGVjaWZpYyBwbGF0Zm9ybSBkcml2ZXIsIHRhcmdldGluZyBzb21ldGhpbmcgbGlrZSBhIE1pY3JvY2hpcCBTcGFyeDUgc3dpdGNoLiBUaGVzZSBhcmUgZ2VuZXJhbGx5IGluYWNjZXNzaWJsZSB0byBzeXprYWxsZXIgdW5sZXNzIHdlIGhhdmUgYSBzcGVjaWFsaXplZCBlbXVsYXRvciBvciBhIHN1aXRhYmxlIGR1bW15IGRyaXZlciBpbiBwbGFjZS4KClRoZXJlZm9yZSwgYmVmb3JlIEkgZGVkaWNhdGUgYW55IHRpbWUgdG8gY3JhZnRpbmcgZnV6emluZyByb3V0aW5lcywgSSBzaG91bGQgdmVyaWZ5IHRoZSBkcml2ZXIgdHlwZS4gSXQgYXBwZWFycyBpdCBpcyBhIHN0YW5kYXJkIGhhcmR3YXJlIGRyaXZlci4gR2l2ZW4gdGhpcyBjbGFzc2lmaWNhdGlvbiwgaXQmIzM5O3MgaGlnaGx5IGltcHJvYmFibGUgdGhhdCBmdXp6aW5nIHdvdWxkIHlpZWxkIHVzZWZ1bCByZXN1bHRzIHdpdGhvdXQgYW4gdW51c3VhbCBzZXR1cC4KClRoZXJlZm9yZSwgSSYjMzk7bSBnb2luZyB0byByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgYW5kIGluY2x1ZGUgYSBqdXN0aWZpY2F0aW9uLiBUaGUgcmVhc29uaW5nIGlzIHN0cmFpZ2h0Zm9yd2FyZDogdGhpcyBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIHBsYXRmb3JtIGRyaXZlciwgc3BlY2lmaWNhbGx5IGRlc2lnbmVkIGZvciBhIE1pY3JvY2hpcCBTcGFyeDUgc3dpdGNoLiBUaGUgU3Bhcng1IHN3aXRjaCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBJIG5lZWQgdG8gZG9jdW1lbnQgdGhpcyBjbGVhcmx5IHNvIHRoZSBkZWNpc2lvbiBpcyBub3QgbWlzaW50ZXJwcmV0ZWQgbGF0ZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDAzOjExPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1pY3JvY2hpcCBTcGFyeDUgc3dpdGNoIGRyaXZlciwgd2hpY2ggaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBwbGF0Zm9ybSBkcml2ZXIuIFRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAobGlrZSBRRU1VIG9yIEdDRSksIHNvIHRoZSBjb2RlIHBhdGhzIGFyZSB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNaWNyb2NoaXAgU3Bhcng1IHN3aXRjaCBkcml2ZXIsIHdoaWNoIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgcGxhdGZvcm0gZHJpdmVyLiBUaGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKGxpa2UgUUVNVSBvciBHQ0UpLCBzbyB0aGUgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMDhUMDM6MTA6NTIuNjE2ODA2NzgyWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjM0NzA3NDgwNjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNaWNyb2NoaXAgU3Bhcng1IHN3aXRjaCBkcml2ZXIsIHdoaWNoIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgcGxhdGZvcm0gZHJpdmVyLiBUaGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKGxpa2UgUUVNVSBvciBHQ0UpLCBzbyB0aGUgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQwMzoxMDo1Mi42MTY4MTI1MDJaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY5MDgzOTg0NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDg5MjNlMDY2NDY2NzJmODAxN2QwZWEyY2RhNWRkMDE0NjlmZjc4MWFcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBKdWwgOCAwMzoxMDo1MCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L2xhbjk2OXgvbGFuOTY5eF9yZWdzLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L2xhbjk2OXgvbGFuOTY5eF9yZWdzLmNcXG5pbmRleCBhY2U0YmEyMWVlYzQzMy4uM2ZjMmMwMDZiYTEyOWUgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9sYW45Njl4L2xhbjk2OXhfcmVncy5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9sYW45Njl4L2xhbjk2OXhfcmVncy5jXFxuQEAgLTk1LDYgKzk1LDcgQEAgY29uc3QgdW5zaWduZWQgaW50IGxhbjk2OXhfZ2FkZHJbR0FERFJfTEFTVF0gPSB7XFxuIFxcdFtHQV9IU0NIX1NZU1RFTV0gPSAzNzM4NCxcXG4gXFx0W0dBX0hTQ0hfTU1HVF0gPSAzNjI2MCxcXG4gXFx0W0dBX0hTQ0hfVEFTX0NPTkZJR10gPSAzNzY5NixcXG4rXFx0W0dBX0hTQ0hfVEFTX1BST0ZJTEVfQ0ZHXSA9IDM3NzEyLFxcbiBcXHRbR0FfUFRQX1BUUF9DRkddID0gNTEyLFxcbiBcXHRbR0FfUFRQX1BUUF9UT0RfRE9NQUlOU10gPSA1MjgsXFxuIFxcdFtHQV9QVFBfUEhBU0VfREVURUNUT1JfQ1RSTF0gPSA2MjgsXFxuQEAgLTEyOSw2ICsxMzAsNyBAQCBjb25zdCB1bnNpZ25lZCBpbnQgbGFuOTY5eF9nY250W0dDTlRfTEFTVF0gPSB7XFxuIFxcdFtHQ19HQ0JfU0lPX0NUUkxdID0gMSxcXG4gXFx0W0dDX0hTQ0hfSFNDSF9DRkddID0gMTEyMCxcXG4gXFx0W0dDX0hTQ0hfSFNDSF9EV1JSXSA9IDMyLFxcbitcXHRbR0NfSFNDSF9UQVNfUFJPRklMRV9DRkddID0gMzAsXFxuIFxcdFtHQ19QVFBfUFRQX1BJTlNdID0gOCxcXG4gXFx0W0dDX1BUUF9QSEFTRV9ERVRFQ1RPUl9DVFJMXSA9IDgsXFxuIFxcdFtHQ19SRVdfUE9SVF0gPSAzNSxcXG5AQCAtMTQ0LDYgKzE0Niw3IEBAIGNvbnN0IHVuc2lnbmVkIGludCBsYW45Njl4X2dzaXplW0dTSVpFX0xBU1RdID0ge1xcbiBcXHRbR1dfRkRNQV9GRE1BXSA9IDQ0OCxcXG4gXFx0W0dXX0dDQl9DSElQX1JFR1NdID0gMTgwLFxcbiBcXHRbR1dfSFNDSF9UQVNfQ09ORklHXSA9IDE2LFxcbitcXHRbR1dfSFNDSF9UQVNfUFJPRklMRV9DRkddID0gNjgsXFxuIFxcdFtHV19QVFBfUEhBU0VfREVURUNUT1JfQ1RSTF0gPSAxMixcXG4gXFx0W0dXX1FTWVNfUEFVU0VfQ0ZHXSA9IDk4OCxcXG4gfTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfbWFpbl9yZWdzLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9tYWluX3JlZ3MuaFxcbmluZGV4IGQ5ZWY0ZWYxMzdiODBjLi5kMzQ0Njc1MTM2NDg0OCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9tYWluX3JlZ3MuaFxcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X21haW5fcmVncy5oXFxuQEAgLTUzNjksNiArNTM2OSwxOCBAQCBleHRlcm4gY29uc3Qgc3RydWN0IHNwYXJ4NV9yZWdzICpyZWdzO1xcbiAjZGVmaW5lIEhTQ0hfVEFTX1NUQVRFTUFDSElORV9DRkdfUkVWSVNJVF9ETFlfR0VUKHgpXFxcXFxcbiBcXHRGSUVMRF9HRVQoSFNDSF9UQVNfU1RBVEVNQUNISU5FX0NGR19SRVZJU0lUX0RMWSwgeClcXG4gXFxuKy8qIEhTQ0g6VEFTX1BST0ZJTEVfQ0ZHOlRBU19QUk9GSUxFX0NPTkZJRyAqL1xcbisjZGVmaW5lIEhTQ0hfVEFTX1BST0ZJTEVfQ09ORklHKGcpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcXFxcbitcXHRfX1JFRyhUQVJHRVRfSFNDSCwgMCwgMSwgcmVncy1cXHUwMDNlZ2FkZHJbR0FfSFNDSF9UQVNfUFJPRklMRV9DRkddLCBnLCAgICAgICBcXFxcXFxuK1xcdCAgICAgIHJlZ3MtXFx1MDAzZWdjbnRbR0NfSFNDSF9UQVNfUFJPRklMRV9DRkddLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXFxcXG4rXFx0ICAgICAgcmVncy1cXHUwMDNlZ3NpemVbR1dfSFNDSF9UQVNfUFJPRklMRV9DRkddLCAzMiwgMCwgMSwgNClcXG4rXFxuKyNkZWZpbmUgSFNDSF9UQVNfUFJPRklMRV9DT05GSUdfTElOS19TUEVFRCAgICAgICBHRU5NQVNLKDEwLCA4KVxcbisjZGVmaW5lIEhTQ0hfVEFTX1BST0ZJTEVfQ09ORklHX0xJTktfU1BFRURfU0VUKHgpXFxcXFxcbitcXHRGSUVMRF9QUkVQKEhTQ0hfVEFTX1BST0ZJTEVfQ09ORklHX0xJTktfU1BFRUQsIHgpXFxuKyNkZWZpbmUgSFNDSF9UQVNfUFJPRklMRV9DT05GSUdfTElOS19TUEVFRF9HRVQoeClcXFxcXFxuK1xcdEZJRUxEX0dFVChIU0NIX1RBU19QUk9GSUxFX0NPTkZJR19MSU5LX1NQRUVELCB4KVxcbitcXG4gLyogTEFOOTY5WCBPTkxZICovXFxuIC8qIEhTSU9XUkFQOlhNSUlfQ0ZHOlhNSUlfQ0ZHICovXFxuICNkZWZpbmUgSFNJT19XUkFQX1hNSUlfQ0ZHKGcpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFxcXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X3BvcnQuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X3BvcnQuY1xcbmluZGV4IDYyYzQ5ODkzZGUzYzM3Li5lZjA2YmVkM2E5Y2M0MiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9wb3J0LmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9wb3J0LmNcXG5AQCAtMTEsNiArMTEsNyBAQFxcbiAjaW5jbHVkZSBcXFwic3Bhcng1X21haW5fcmVncy5oXFxcIlxcbiAjaW5jbHVkZSBcXFwic3Bhcng1X21haW4uaFxcXCJcXG4gI2luY2x1ZGUgXFxcInNwYXJ4NV9wb3J0LmhcXFwiXFxuKyNpbmNsdWRlIFxcXCJzcGFyeDVfcW9zLmhcXFwiXFxuIFxcbiAjZGVmaW5lIFNQWDVfRVRZUEVfVEFHX0MgICAgIDB4ODEwMFxcbiAjZGVmaW5lIFNQWDVfRVRZUEVfVEFHX1MgICAgIDB4ODhhOFxcbkBAIC0xMDUwLDYgKzEwNTEsOSBAQCBpbnQgc3Bhcng1X3BvcnRfY29uZmlnKHN0cnVjdCBzcGFyeDUgKnNwYXJ4NSxcXG4gXFx0XFx0IHNwYXJ4NSxcXG4gXFx0XFx0IFFGV0RfU1dJVENIX1BPUlRfTU9ERShwb3J0LVxcdTAwM2Vwb3J0bm8pKTtcXG4gXFxuK1xcdC8qIE5vdGlmeSBUQVMgYWJvdXQgdGhlIHNwZWVkLiAqL1xcbitcXHRzcGFyeDVfdGFzX3NwZWVkKHBvcnQsIGNvbmYtXFx1MDAzZXNwZWVkKTtcXG4rXFxuIFxcdC8qIFNhdmUgdGhlIG5ldyB2YWx1ZXMgKi9cXG4gXFx0cG9ydC1cXHUwMDNlY29uZiA9ICpjb25mO1xcbiBcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfcW9zLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9xb3MuY1xcbmluZGV4IGU1ODA2NzBmMzk5MmIwLi45NzJkYThhNzFmNWFhYSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9xb3MuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X3Fvcy5jXFxuQEAgLTksNiArOSwxNyBAQFxcbiAjaW5jbHVkZSBcXFwic3Bhcng1X21haW4uaFxcXCJcXG4gI2luY2x1ZGUgXFxcInNwYXJ4NV9xb3MuaFxcXCJcXG4gXFxuK2VudW0gc3Bhcng1X3Rhc19saW5rX3NwZWVkIHtcXG4rXFx0VEFTX1NQRUVEX05PX0dCLFxcbitcXHRUQVNfU1BFRURfMTAsXFxuK1xcdFRBU19TUEVFRF8xMDAsXFxuK1xcdFRBU19TUEVFRF8xMDAwLFxcbitcXHRUQVNfU1BFRURfMjUwMCxcXG4rXFx0VEFTX1NQRUVEXzUwMDAsXFxuK1xcdFRBU19TUEVFRF8xMDAwMCxcXG4rXFx0VEFTX1NQRUVEXzI1MDAwLFxcbit9O1xcbitcXG4gLyogQ2FsY3VsYXRlIG5ldyBiYXNlX3RpbWUgYmFzZWQgb24gY3ljbGVfdGltZS5cXG4gICpcXG4gICogVGhlIGhhcmR3YXJlIHJlcXVpcmVzIGEgYmFzZV90aW1lIHRoYXQgaXMgYWx3YXlzIGluIHRoZSBmdXR1cmUuXFxuQEAgLTU4MSwzICs1OTIsNDEgQEAgaW50IHNwYXJ4NV90Y19ldHNfZGVsKHN0cnVjdCBzcGFyeDVfcG9ydCAqcG9ydClcXG4gXFxuIFxcdHJldHVybiBzcGFyeDVfZHdycl9jb25mX3NldChwb3J0LCBcXHUwMDI2ZHdycik7XFxuIH1cXG4rXFxuK3ZvaWQgc3Bhcng1X3Rhc19zcGVlZChzdHJ1Y3Qgc3Bhcng1X3BvcnQgKnBvcnQsIGludCBzcGVlZClcXG4re1xcbitcXHRzdHJ1Y3Qgc3Bhcng1ICpzcGFyeDUgPSBwb3J0LVxcdTAwM2VzcGFyeDU7XFxuK1xcdHU4IHNwZDtcXG4rXFxuK1xcdHN3aXRjaCAoc3BlZWQpIHtcXG4rXFx0Y2FzZSBTUEVFRF8xMDpcXG4rXFx0XFx0c3BkID0gVEFTX1NQRUVEXzEwO1xcbitcXHRcXHRicmVhaztcXG4rXFx0Y2FzZSBTUEVFRF8xMDA6XFxuK1xcdFxcdHNwZCA9IFRBU19TUEVFRF8xMDA7XFxuK1xcdFxcdGJyZWFrO1xcbitcXHRjYXNlIFNQRUVEXzEwMDA6XFxuK1xcdFxcdHNwZCA9IFRBU19TUEVFRF8xMDAwO1xcbitcXHRcXHRicmVhaztcXG4rXFx0Y2FzZSBTUEVFRF8yNTAwOlxcbitcXHRcXHRzcGQgPSBUQVNfU1BFRURfMjUwMDtcXG4rXFx0XFx0YnJlYWs7XFxuK1xcdGNhc2UgU1BFRURfNTAwMDpcXG4rXFx0XFx0c3BkID0gVEFTX1NQRUVEXzUwMDA7XFxuK1xcdFxcdGJyZWFrO1xcbitcXHRjYXNlIFNQRUVEXzEwMDAwOlxcbitcXHRcXHRzcGQgPSBUQVNfU1BFRURfMTAwMDA7XFxuK1xcdFxcdGJyZWFrO1xcbitcXHRjYXNlIFNQRUVEXzI1MDAwOlxcbitcXHRcXHRzcGQgPSBUQVNfU1BFRURfMjUwMDA7XFxuK1xcdFxcdGJyZWFrO1xcbitcXHRkZWZhdWx0OlxcbitcXHRcXHRuZXRkZXZfZXJyKHBvcnQtXFx1MDAzZW5kZXYsIFxcXCJUQVM6IFVuc3VwcG9ydGVkIHNwZWVkOiAlZFxcXFxuXFxcIiwgc3BlZWQpO1xcbitcXHRcXHRyZXR1cm47XFxuK1xcdH1cXG4rXFxuK1xcdHNweDVfcm13KEhTQ0hfVEFTX1BST0ZJTEVfQ09ORklHX0xJTktfU1BFRURfU0VUKHNwZCksXFxuK1xcdFxcdCBIU0NIX1RBU19QUk9GSUxFX0NPTkZJR19MSU5LX1NQRUVELFxcbitcXHRcXHQgc3Bhcng1LFxcbitcXHRcXHQgSFNDSF9UQVNfUFJPRklMRV9DT05GSUcocG9ydC1cXHUwMDNlcG9ydG5vKSk7XFxuK31cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfcW9zLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9xb3MuaFxcbmluZGV4IDA0Zjc2ZjFlMjNmNjBhLi5hOTJhNjk5YzU1MWY5OSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9xb3MuaFxcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X3Fvcy5oXFxuQEAgLTYwLDYgKzYwLDcgQEAgc3RydWN0IHNwYXJ4NV9kd3JyIHtcXG4gfTtcXG4gXFxuIGludCBzcGFyeDVfcW9zX2luaXQoc3RydWN0IHNwYXJ4NSAqc3Bhcng1KTtcXG4rdm9pZCBzcGFyeDVfdGFzX3NwZWVkKHN0cnVjdCBzcGFyeDVfcG9ydCAqcG9ydCwgaW50IHNwZWVkKTtcXG4gXFxuIC8qIE11bHRpLVF1ZXVlIFByaW9yaXR5ICovXFxuIGludCBzcGFyeDVfdGNfbXFwcmlvX2FkZChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgdTggbnVtX3RjKTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfcmVncy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfcmVncy5jXFxuaW5kZXggMjIwZTgxYjcxNGQ0MTQuLjM4NjNmOTU0YmQ4MzIzIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X3JlZ3MuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X3JlZ3MuY1xcbkBAIC05NSw2ICs5NSw3IEBAIGNvbnN0IHVuc2lnbmVkIGludCBzcGFyeDVfZ2FkZHJbR0FERFJfTEFTVF0gPSB7XFxuIFxcdFtHQV9IU0NIX1NZU1RFTV0gPSAxODQwMDAsXFxuIFxcdFtHQV9IU0NIX01NR1RdID0gMTYyMzY4LFxcbiBcXHRbR0FfSFNDSF9UQVNfQ09ORklHXSA9IDE2MjM4NCxcXG4rXFx0W0dBX0hTQ0hfVEFTX1BST0ZJTEVfQ0ZHXSA9IDE4ODQxNixcXG4gXFx0W0dBX1BUUF9QVFBfQ0ZHXSA9IDMyMCxcXG4gXFx0W0dBX1BUUF9QVFBfVE9EX0RPTUFJTlNdID0gMzM2LFxcbiBcXHRbR0FfUFRQX1BIQVNFX0RFVEVDVE9SX0NUUkxdID0gNDIwLFxcbkBAIC0xMjksNiArMTMwLDcgQEAgY29uc3QgdW5zaWduZWQgaW50IHNwYXJ4NV9nY250W0dDTlRfTEFTVF0gPSB7XFxuIFxcdFtHQ19HQ0JfU0lPX0NUUkxdID0gMyxcXG4gXFx0W0dDX0hTQ0hfSFNDSF9DRkddID0gNTA0MCxcXG4gXFx0W0dDX0hTQ0hfSFNDSF9EV1JSXSA9IDcyLFxcbitcXHRbR0NfSFNDSF9UQVNfUFJPRklMRV9DRkddID0gMTAwLFxcbiBcXHRbR0NfUFRQX1BUUF9QSU5TXSA9IDUsXFxuIFxcdFtHQ19QVFBfUEhBU0VfREVURUNUT1JfQ1RSTF0gPSA1LFxcbiBcXHRbR0NfUkVXX1BPUlRdID0gNzAsXFxuQEAgLTE0NCw2ICsxNDYsNyBAQCBjb25zdCB1bnNpZ25lZCBpbnQgc3Bhcng1X2dzaXplW0dTSVpFX0xBU1RdID0ge1xcbiBcXHRbR1dfRkRNQV9GRE1BXSA9IDQyOCxcXG4gXFx0W0dXX0dDQl9DSElQX1JFR1NdID0gNDI0LFxcbiBcXHRbR1dfSFNDSF9UQVNfQ09ORklHXSA9IDEyLFxcbitcXHRbR1dfSFNDSF9UQVNfUFJPRklMRV9DRkddID0gNjQsXFxuIFxcdFtHV19QVFBfUEhBU0VfREVURUNUT1JfQ1RSTF0gPSA4LFxcbiBcXHRbR1dfUVNZU19QQVVTRV9DRkddID0gMTEyOCxcXG4gfTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfcmVncy5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfcmVncy5oXFxuaW5kZXggZWEyODEzMGMyMzQxYmIuLjU4NTU4OWEzMWU5MDYyIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X3JlZ3MuaFxcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X3JlZ3MuaFxcbkBAIC0xMDQsNiArMTA0LDcgQEAgZW51bSBzcGFyeDVfZ2FkZHJfZW51bSB7XFxuIFxcdEdBX0hTQ0hfU1lTVEVNLFxcbiBcXHRHQV9IU0NIX01NR1QsXFxuIFxcdEdBX0hTQ0hfVEFTX0NPTkZJRyxcXG4rXFx0R0FfSFNDSF9UQVNfUFJPRklMRV9DRkcsXFxuIFxcdEdBX1BUUF9QVFBfQ0ZHLFxcbiBcXHRHQV9QVFBfUFRQX1RPRF9ET01BSU5TLFxcbiBcXHRHQV9QVFBfUEhBU0VfREVURUNUT1JfQ1RSTCxcXG5AQCAtMTM5LDYgKzE0MCw3IEBAIGVudW0gc3Bhcng1X2djbnRfZW51bSB7XFxuIFxcdEdDX0dDQl9TSU9fQ1RSTCxcXG4gXFx0R0NfSFNDSF9IU0NIX0NGRyxcXG4gXFx0R0NfSFNDSF9IU0NIX0RXUlIsXFxuK1xcdEdDX0hTQ0hfVEFTX1BST0ZJTEVfQ0ZHLFxcbiBcXHRHQ19QVFBfUFRQX1BJTlMsXFxuIFxcdEdDX1BUUF9QSEFTRV9ERVRFQ1RPUl9DVFJMLFxcbiBcXHRHQ19SRVdfUE9SVCxcXG5AQCAtMTU1LDYgKzE1Nyw3IEBAIGVudW0gc3Bhcng1X2dzaXplX2VudW0ge1xcbiBcXHRHV19GRE1BX0ZETUEsXFxuIFxcdEdXX0dDQl9DSElQX1JFR1MsXFxuIFxcdEdXX0hTQ0hfVEFTX0NPTkZJRyxcXG4rXFx0R1dfSFNDSF9UQVNfUFJPRklMRV9DRkcsXFxuIFxcdEdXX1BUUF9QSEFTRV9ERVRFQ1RPUl9DVFJMLFxcbiBcXHRHV19RU1lTX1BBVVNFX0NGRyxcXG4gXFx0R1NJWkVfTEFTVCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMDM6MTA6NTMuMzA4NTIxOTc5WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyMjc3ODk5MzMwNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1pY3JvY2hpcCBTcGFyeDUgc3dpdGNoIGRyaXZlciwgd2hpY2ggaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBwbGF0Zm9ybSBkcml2ZXIuIFRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAobGlrZSBRRU1VIG9yIEdDRSksIHNvIHRoZSBjb2RlIHBhdGhzIGFyZSB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgODkyM2UwNjY0NjY3MmY4MDE3ZDBlYTJjZGE1ZGQwMTQ2OWZmNzgxYVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDggMDM6MTA6NTAgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L2xhbjk2OXgvbGFuOTY5eF9yZWdzLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L2xhbjk2OXgvbGFuOTY5eF9yZWdzLmNcbmluZGV4IGFjZTRiYTIxZWVjNDMzLi4zZmMyYzAwNmJhMTI5ZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvbGFuOTY5eC9sYW45Njl4X3JlZ3MuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9sYW45Njl4L2xhbjk2OXhfcmVncy5jXG5AQCAtOTUsNiArOTUsNyBAQCBjb25zdCB1bnNpZ25lZCBpbnQgbGFuOTY5eF9nYWRkcltHQUREUl9MQVNUXSA9IHtcbiBcdFtHQV9IU0NIX1NZU1RFTV0gPSAzNzM4NCxcbiBcdFtHQV9IU0NIX01NR1RdID0gMzYyNjAsXG4gXHRbR0FfSFNDSF9UQVNfQ09ORklHXSA9IDM3Njk2LFxuK1x0W0dBX0hTQ0hfVEFTX1BST0ZJTEVfQ0ZHXSA9IDM3NzEyLFxuIFx0W0dBX1BUUF9QVFBfQ0ZHXSA9IDUxMixcbiBcdFtHQV9QVFBfUFRQX1RPRF9ET01BSU5TXSA9IDUyOCxcbiBcdFtHQV9QVFBfUEhBU0VfREVURUNUT1JfQ1RSTF0gPSA2MjgsXG5AQCAtMTI5LDYgKzEzMCw3IEBAIGNvbnN0IHVuc2lnbmVkIGludCBsYW45Njl4X2djbnRbR0NOVF9MQVNUXSA9IHtcbiBcdFtHQ19HQ0JfU0lPX0NUUkxdID0gMSxcbiBcdFtHQ19IU0NIX0hTQ0hfQ0ZHXSA9IDExMjAsXG4gXHRbR0NfSFNDSF9IU0NIX0RXUlJdID0gMzIsXG4rXHRbR0NfSFNDSF9UQVNfUFJPRklMRV9DRkddID0gMzAsXG4gXHRbR0NfUFRQX1BUUF9QSU5TXSA9IDgsXG4gXHRbR0NfUFRQX1BIQVNFX0RFVEVDVE9SX0NUUkxdID0gOCxcbiBcdFtHQ19SRVdfUE9SVF0gPSAzNSxcbkBAIC0xNDQsNiArMTQ2LDcgQEAgY29uc3QgdW5zaWduZWQgaW50IGxhbjk2OXhfZ3NpemVbR1NJWkVfTEFTVF0gPSB7XG4gXHRbR1dfRkRNQV9GRE1BXSA9IDQ0OCxcbiBcdFtHV19HQ0JfQ0hJUF9SRUdTXSA9IDE4MCxcbiBcdFtHV19IU0NIX1RBU19DT05GSUddID0gMTYsXG4rXHRbR1dfSFNDSF9UQVNfUFJPRklMRV9DRkddID0gNjgsXG4gXHRbR1dfUFRQX1BIQVNFX0RFVEVDVE9SX0NUUkxdID0gMTIsXG4gXHRbR1dfUVNZU19QQVVTRV9DRkddID0gOTg4LFxuIH07XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfbWFpbl9yZWdzLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9tYWluX3JlZ3MuaFxuaW5kZXggZDllZjRlZjEzN2I4MGMuLmQzNDQ2NzUxMzY0ODQ4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfbWFpbl9yZWdzLmhcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X21haW5fcmVncy5oXG5AQCAtNTM2OSw2ICs1MzY5LDE4IEBAIGV4dGVybiBjb25zdCBzdHJ1Y3Qgc3Bhcng1X3JlZ3MgKnJlZ3M7XG4gI2RlZmluZSBIU0NIX1RBU19TVEFURU1BQ0hJTkVfQ0ZHX1JFVklTSVRfRExZX0dFVCh4KVxcXG4gXHRGSUVMRF9HRVQoSFNDSF9UQVNfU1RBVEVNQUNISU5FX0NGR19SRVZJU0lUX0RMWSwgeClcbiBcbisvKiBIU0NIOlRBU19QUk9GSUxFX0NGRzpUQVNfUFJPRklMRV9DT05GSUcgKi9cbisjZGVmaW5lIEhTQ0hfVEFTX1BST0ZJTEVfQ09ORklHKGcpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcbitcdF9fUkVHKFRBUkdFVF9IU0NILCAwLCAxLCByZWdzLVx1MDAzZWdhZGRyW0dBX0hTQ0hfVEFTX1BST0ZJTEVfQ0ZHXSwgZywgICAgICAgXFxcbitcdCAgICAgIHJlZ3MtXHUwMDNlZ2NudFtHQ19IU0NIX1RBU19QUk9GSUxFX0NGR10sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcbitcdCAgICAgIHJlZ3MtXHUwMDNlZ3NpemVbR1dfSFNDSF9UQVNfUFJPRklMRV9DRkddLCAzMiwgMCwgMSwgNClcbitcbisjZGVmaW5lIEhTQ0hfVEFTX1BST0ZJTEVfQ09ORklHX0xJTktfU1BFRUQgICAgICAgR0VOTUFTSygxMCwgOClcbisjZGVmaW5lIEhTQ0hfVEFTX1BST0ZJTEVfQ09ORklHX0xJTktfU1BFRURfU0VUKHgpXFxcbitcdEZJRUxEX1BSRVAoSFNDSF9UQVNfUFJPRklMRV9DT05GSUdfTElOS19TUEVFRCwgeClcbisjZGVmaW5lIEhTQ0hfVEFTX1BST0ZJTEVfQ09ORklHX0xJTktfU1BFRURfR0VUKHgpXFxcbitcdEZJRUxEX0dFVChIU0NIX1RBU19QUk9GSUxFX0NPTkZJR19MSU5LX1NQRUVELCB4KVxuK1xuIC8qIExBTjk2OVggT05MWSAqL1xuIC8qIEhTSU9XUkFQOlhNSUlfQ0ZHOlhNSUlfQ0ZHICovXG4gI2RlZmluZSBIU0lPX1dSQVBfWE1JSV9DRkcoZykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfcG9ydC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfcG9ydC5jXG5pbmRleCA2MmM0OTg5M2RlM2MzNy4uZWYwNmJlZDNhOWNjNDIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9wb3J0LmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X3BvcnQuY1xuQEAgLTExLDYgKzExLDcgQEBcbiAjaW5jbHVkZSBcInNwYXJ4NV9tYWluX3JlZ3MuaFwiXG4gI2luY2x1ZGUgXCJzcGFyeDVfbWFpbi5oXCJcbiAjaW5jbHVkZSBcInNwYXJ4NV9wb3J0LmhcIlxuKyNpbmNsdWRlIFwic3Bhcng1X3Fvcy5oXCJcbiBcbiAjZGVmaW5lIFNQWDVfRVRZUEVfVEFHX0MgICAgIDB4ODEwMFxuICNkZWZpbmUgU1BYNV9FVFlQRV9UQUdfUyAgICAgMHg4OGE4XG5AQCAtMTA1MCw2ICsxMDUxLDkgQEAgaW50IHNwYXJ4NV9wb3J0X2NvbmZpZyhzdHJ1Y3Qgc3Bhcng1ICpzcGFyeDUsXG4gXHRcdCBzcGFyeDUsXG4gXHRcdCBRRldEX1NXSVRDSF9QT1JUX01PREUocG9ydC1cdTAwM2Vwb3J0bm8pKTtcbiBcbitcdC8qIE5vdGlmeSBUQVMgYWJvdXQgdGhlIHNwZWVkLiAqL1xuK1x0c3Bhcng1X3Rhc19zcGVlZChwb3J0LCBjb25mLVx1MDAzZXNwZWVkKTtcbitcbiBcdC8qIFNhdmUgdGhlIG5ldyB2YWx1ZXMgKi9cbiBcdHBvcnQtXHUwMDNlY29uZiA9ICpjb25mO1xuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X3Fvcy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfcW9zLmNcbmluZGV4IGU1ODA2NzBmMzk5MmIwLi45NzJkYThhNzFmNWFhYSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X3Fvcy5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9xb3MuY1xuQEAgLTksNiArOSwxNyBAQFxuICNpbmNsdWRlIFwic3Bhcng1X21haW4uaFwiXG4gI2luY2x1ZGUgXCJzcGFyeDVfcW9zLmhcIlxuIFxuK2VudW0gc3Bhcng1X3Rhc19saW5rX3NwZWVkIHtcbitcdFRBU19TUEVFRF9OT19HQixcbitcdFRBU19TUEVFRF8xMCxcbitcdFRBU19TUEVFRF8xMDAsXG4rXHRUQVNfU1BFRURfMTAwMCxcbitcdFRBU19TUEVFRF8yNTAwLFxuK1x0VEFTX1NQRUVEXzUwMDAsXG4rXHRUQVNfU1BFRURfMTAwMDAsXG4rXHRUQVNfU1BFRURfMjUwMDAsXG4rfTtcbitcbiAvKiBDYWxjdWxhdGUgbmV3IGJhc2VfdGltZSBiYXNlZCBvbiBjeWNsZV90aW1lLlxuICAqXG4gICogVGhlIGhhcmR3YXJlIHJlcXVpcmVzIGEgYmFzZV90aW1lIHRoYXQgaXMgYWx3YXlzIGluIHRoZSBmdXR1cmUuXG5AQCAtNTgxLDMgKzU5Miw0MSBAQCBpbnQgc3Bhcng1X3RjX2V0c19kZWwoc3RydWN0IHNwYXJ4NV9wb3J0ICpwb3J0KVxuIFxuIFx0cmV0dXJuIHNwYXJ4NV9kd3JyX2NvbmZfc2V0KHBvcnQsIFx1MDAyNmR3cnIpO1xuIH1cbitcbit2b2lkIHNwYXJ4NV90YXNfc3BlZWQoc3RydWN0IHNwYXJ4NV9wb3J0ICpwb3J0LCBpbnQgc3BlZWQpXG4re1xuK1x0c3RydWN0IHNwYXJ4NSAqc3Bhcng1ID0gcG9ydC1cdTAwM2VzcGFyeDU7XG4rXHR1OCBzcGQ7XG4rXG4rXHRzd2l0Y2ggKHNwZWVkKSB7XG4rXHRjYXNlIFNQRUVEXzEwOlxuK1x0XHRzcGQgPSBUQVNfU1BFRURfMTA7XG4rXHRcdGJyZWFrO1xuK1x0Y2FzZSBTUEVFRF8xMDA6XG4rXHRcdHNwZCA9IFRBU19TUEVFRF8xMDA7XG4rXHRcdGJyZWFrO1xuK1x0Y2FzZSBTUEVFRF8xMDAwOlxuK1x0XHRzcGQgPSBUQVNfU1BFRURfMTAwMDtcbitcdFx0YnJlYWs7XG4rXHRjYXNlIFNQRUVEXzI1MDA6XG4rXHRcdHNwZCA9IFRBU19TUEVFRF8yNTAwO1xuK1x0XHRicmVhaztcbitcdGNhc2UgU1BFRURfNTAwMDpcbitcdFx0c3BkID0gVEFTX1NQRUVEXzUwMDA7XG4rXHRcdGJyZWFrO1xuK1x0Y2FzZSBTUEVFRF8xMDAwMDpcbitcdFx0c3BkID0gVEFTX1NQRUVEXzEwMDAwO1xuK1x0XHRicmVhaztcbitcdGNhc2UgU1BFRURfMjUwMDA6XG4rXHRcdHNwZCA9IFRBU19TUEVFRF8yNTAwMDtcbitcdFx0YnJlYWs7XG4rXHRkZWZhdWx0OlxuK1x0XHRuZXRkZXZfZXJyKHBvcnQtXHUwMDNlbmRldiwgXCJUQVM6IFVuc3VwcG9ydGVkIHNwZWVkOiAlZFxcblwiLCBzcGVlZCk7XG4rXHRcdHJldHVybjtcbitcdH1cbitcbitcdHNweDVfcm13KEhTQ0hfVEFTX1BST0ZJTEVfQ09ORklHX0xJTktfU1BFRURfU0VUKHNwZCksXG4rXHRcdCBIU0NIX1RBU19QUk9GSUxFX0NPTkZJR19MSU5LX1NQRUVELFxuK1x0XHQgc3Bhcng1LFxuK1x0XHQgSFNDSF9UQVNfUFJPRklMRV9DT05GSUcocG9ydC1cdTAwM2Vwb3J0bm8pKTtcbit9XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfcW9zLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9xb3MuaFxuaW5kZXggMDRmNzZmMWUyM2Y2MGEuLmE5MmE2OTljNTUxZjk5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfcW9zLmhcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X3Fvcy5oXG5AQCAtNjAsNiArNjAsNyBAQCBzdHJ1Y3Qgc3Bhcng1X2R3cnIge1xuIH07XG4gXG4gaW50IHNwYXJ4NV9xb3NfaW5pdChzdHJ1Y3Qgc3Bhcng1ICpzcGFyeDUpO1xuK3ZvaWQgc3Bhcng1X3Rhc19zcGVlZChzdHJ1Y3Qgc3Bhcng1X3BvcnQgKnBvcnQsIGludCBzcGVlZCk7XG4gXG4gLyogTXVsdGktUXVldWUgUHJpb3JpdHkgKi9cbiBpbnQgc3Bhcng1X3RjX21xcHJpb19hZGQoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIHU4IG51bV90Yyk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfcmVncy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfcmVncy5jXG5pbmRleCAyMjBlODFiNzE0ZDQxNC4uMzg2M2Y5NTRiZDgzMjMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9yZWdzLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X3JlZ3MuY1xuQEAgLTk1LDYgKzk1LDcgQEAgY29uc3QgdW5zaWduZWQgaW50IHNwYXJ4NV9nYWRkcltHQUREUl9MQVNUXSA9IHtcbiBcdFtHQV9IU0NIX1NZU1RFTV0gPSAxODQwMDAsXG4gXHRbR0FfSFNDSF9NTUdUXSA9IDE2MjM2OCxcbiBcdFtHQV9IU0NIX1RBU19DT05GSUddID0gMTYyMzg0LFxuK1x0W0dBX0hTQ0hfVEFTX1BST0ZJTEVfQ0ZHXSA9IDE4ODQxNixcbiBcdFtHQV9QVFBfUFRQX0NGR10gPSAzMjAsXG4gXHRbR0FfUFRQX1BUUF9UT0RfRE9NQUlOU10gPSAzMzYsXG4gXHRbR0FfUFRQX1BIQVNFX0RFVEVDVE9SX0NUUkxdID0gNDIwLFxuQEAgLTEyOSw2ICsxMzAsNyBAQCBjb25zdCB1bnNpZ25lZCBpbnQgc3Bhcng1X2djbnRbR0NOVF9MQVNUXSA9IHtcbiBcdFtHQ19HQ0JfU0lPX0NUUkxdID0gMyxcbiBcdFtHQ19IU0NIX0hTQ0hfQ0ZHXSA9IDUwNDAsXG4gXHRbR0NfSFNDSF9IU0NIX0RXUlJdID0gNzIsXG4rXHRbR0NfSFNDSF9UQVNfUFJPRklMRV9DRkddID0gMTAwLFxuIFx0W0dDX1BUUF9QVFBfUElOU10gPSA1LFxuIFx0W0dDX1BUUF9QSEFTRV9ERVRFQ1RPUl9DVFJMXSA9IDUsXG4gXHRbR0NfUkVXX1BPUlRdID0gNzAsXG5AQCAtMTQ0LDYgKzE0Niw3IEBAIGNvbnN0IHVuc2lnbmVkIGludCBzcGFyeDVfZ3NpemVbR1NJWkVfTEFTVF0gPSB7XG4gXHRbR1dfRkRNQV9GRE1BXSA9IDQyOCxcbiBcdFtHV19HQ0JfQ0hJUF9SRUdTXSA9IDQyNCxcbiBcdFtHV19IU0NIX1RBU19DT05GSUddID0gMTIsXG4rXHRbR1dfSFNDSF9UQVNfUFJPRklMRV9DRkddID0gNjQsXG4gXHRbR1dfUFRQX1BIQVNFX0RFVEVDVE9SX0NUUkxdID0gOCxcbiBcdFtHV19RU1lTX1BBVVNFX0NGR10gPSAxMTI4LFxuIH07XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfcmVncy5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfcmVncy5oXG5pbmRleCBlYTI4MTMwYzIzNDFiYi4uNTg1NTg5YTMxZTkwNjIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9yZWdzLmhcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X3JlZ3MuaFxuQEAgLTEwNCw2ICsxMDQsNyBAQCBlbnVtIHNwYXJ4NV9nYWRkcl9lbnVtIHtcbiBcdEdBX0hTQ0hfU1lTVEVNLFxuIFx0R0FfSFNDSF9NTUdULFxuIFx0R0FfSFNDSF9UQVNfQ09ORklHLFxuK1x0R0FfSFNDSF9UQVNfUFJPRklMRV9DRkcsXG4gXHRHQV9QVFBfUFRQX0NGRyxcbiBcdEdBX1BUUF9QVFBfVE9EX0RPTUFJTlMsXG4gXHRHQV9QVFBfUEhBU0VfREVURUNUT1JfQ1RSTCxcbkBAIC0xMzksNiArMTQwLDcgQEAgZW51bSBzcGFyeDVfZ2NudF9lbnVtIHtcbiBcdEdDX0dDQl9TSU9fQ1RSTCxcbiBcdEdDX0hTQ0hfSFNDSF9DRkcsXG4gXHRHQ19IU0NIX0hTQ0hfRFdSUixcbitcdEdDX0hTQ0hfVEFTX1BST0ZJTEVfQ0ZHLFxuIFx0R0NfUFRQX1BUUF9QSU5TLFxuIFx0R0NfUFRQX1BIQVNFX0RFVEVDVE9SX0NUUkwsXG4gXHRHQ19SRVdfUE9SVCxcbkBAIC0xNTUsNiArMTU3LDcgQEAgZW51bSBzcGFyeDVfZ3NpemVfZW51bSB7XG4gXHRHV19GRE1BX0ZETUEsXG4gXHRHV19HQ0JfQ0hJUF9SRUdTLFxuIFx0R1dfSFNDSF9UQVNfQ09ORklHLFxuK1x0R1dfSFNDSF9UQVNfUFJPRklMRV9DRkcsXG4gXHRHV19QVFBfUEhBU0VfREVURUNUT1JfQ1RSTCxcbiBcdEdXX1FTWVNfUEFVU0VfQ0ZHLFxuIFx0R1NJWkVfTEFTVCxcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDAzOjEwOjUzLjMwODUyNDAzOVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ5OTcyMTIwMzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBTcGFyeDUgRXRoZXJuZXQgRHJpdmVyIE1vZGlmaWNhdGlvbioqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2ggdGhhdCBpbnRyb2R1Y2VzIGEgbmV3IGZ1bmN0aW9uLCBgc3Bhcng1X3Rhc19zcGVlZGAsIGluIHRoZSBNaWNyb2NoaXAgU3Bhcng1IEV0aGVybmV0IGRyaXZlci4gSXQncyBpbiBgc3Bhcng1X3Fvcy5jYCwgYW5kIGl0IGxvb2tzIGxpa2UgaXQncyBjYWxsZWQgZnJvbSBgc3Bhcng1X3BvcnRfY29uZmlnYCBpbiBgc3Bhcng1X3BvcnQuY2AuIFRoaXMgc3VnZ2VzdHMgaXQncyBsaWtlbHkgcmVzcG9uc2libGUgZm9yIHVwZGF0aW5nIHNvbWUgaGFyZHdhcmUgcmVnaXN0ZXJzLCBwcm9iYWJseSByZWxhdGVkIHRvIHRoZSBwb3J0IHNwZWVkIGNvbmZpZ3VyYXRpb24uIE5vdGhpbmcgaW1tZWRpYXRlbHkgc2NyZWFtcyBvdXQgYXMgcHJvYmxlbWF0aWMsIGJ1dCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIGltcGxlbWVudGF0aW9uIGJldHRlci5cblxuVGhlIGNyaXRpY2FsIHF1ZXN0aW9uIG5vdyBpcyByZWFjaGFiaWxpdHk6IENhbiB0aGlzIG5ldyBmdW5jdGlvbiAqYWN0dWFsbHkqIGdldCBjYWxsZWQgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCwgd2hpY2ggaXMgd2hlcmUgSSdsbCBsaWtlbHkgYmUgdGVzdGluZyB0aGlzPyBUaGUgZHJpdmVyIGl0c2VsZiBpcyBjbGVhcmx5IHRpZWQgdG8gdGhlIGBTUEFSWDVfU1dJVENIYCBjb25maWd1cmF0aW9uIG9wdGlvbi4gTm93LCB0aGUgcmVhbCBpc3N1ZSBpcyBob3cgdGhpcyBkZXZpY2UgYXBwZWFycyBpbiB0aGUgc3lzdGVtLiBJcyBpdCBhIFBDSSBkZXZpY2UsIG9yIGEgcGxhdGZvcm0gZGV2aWNlPyBUaGlzIHdpbGwgZHJhc3RpY2FsbHkgaW5mbHVlbmNlIGl0cyB2aXNpYmlsaXR5IHRvIGEgaHlwZXJ2aXNvci4gSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSBkcml2ZXIncyBLY29uZmlnIG9yIHBlcmhhcHMgZXZlbiBgc3Bhcng1X21haW4uY2AgdG8gZmlndXJlIG91dCBpdHMgbmF0dXJlLiBMZXQncyBzZWUgaWYgdGhpcyBjb25maWd1cmF0aW9uIGFjdHVhbGx5IHN1cHBvcnRzIHZpcnR1YWxpemF0aW9uLCBhbmQgdGhlbiBJJ2xsIGFzc2VzcyB0aGUgcG90ZW50aWFsIGltcGFjdCBvZiB0aGlzIHBhdGNoLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MzE0LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTg5LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMDM6MTA6NTguMzA1NzM4NTU0WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyMDUwNTYxNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJTUEFSWDVfU1dJVENIXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvS2NvbmZpZzoxOmNvbmZpZyBTUEFSWDVfU1dJVENIXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9LY29uZmlnLTItXFx0dHJpc3RhdGUgXFxcIlNwYXJ4NSBzd2l0Y2ggZHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9LY29uZmlnPTE3PWNvbmZpZyBTUEFSWDVfRENCXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9LY29uZmlnLTE4LVxcdGJvb2wgXFxcIkRhdGEgQ2VudGVyIEJyaWRnaW5nIChEQ0IpIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9LY29uZmlnOjE5OlxcdGRlcGVuZHMgb24gU1BBUlg1X1NXSVRDSCBcXHUwMDI2XFx1MDAyNiBEQ0JcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L0tjb25maWctMjAtXFx0ZGVmYXVsdCB5XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L0tjb25maWc9Mjg9Y29uZmlnIExBTjk2OVhfU1dJVENIXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9LY29uZmlnLTI5LVxcdGJvb2wgXFxcIkxhbjk2OXggc3dpdGNoIGRyaXZlclxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L0tjb25maWc6MzA6XFx0ZGVwZW5kcyBvbiBTUEFSWDVfU1dJVENIXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9LY29uZmlnLTMxLVxcdHNlbGVjdCBQQUdFX1BPT0xcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvTWFrZWZpbGUtNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L01ha2VmaWxlOjY6b2JqLSQoQ09ORklHX1NQQVJYNV9TV0lUQ0gpICs9IHNwYXJ4NS1zd2l0Y2gub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvTWFrZWZpbGUtNy1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMDM6MTA6NTguNTI2MjU0NzE3WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTAyNjg2MjQyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHN1bW1hcnksIHRha2luZyBvbiB0aGUgcGVyc29uYSB5b3UndmUgcmVxdWVzdGVkOlxuXG4qKkRlY29uc3RydWN0aW5nIERldmljZSBSZWdpc3RyYXRpb24gaW4gYHNwYXJ4NV9tYWluLmNgKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGBzcGFyeDVfbWFpbi5jYCBoYW5kbGVzIGRldmljZSByZWdpc3RyYXRpb24uIFNwZWNpZmljYWxseSwgSSB3YW50IHRvIHRyYWNlIHRoZSBmbG93IOKAkyBmcm9tIGJvb3Qgb3IgaW5pdGlhbGl6YXRpb24sIHJpZ2h0IHRocm91Z2ggdG8gdGhlIHBvaW50IHdoZXJlIHRoZSBkZXZpY2UgaXMgYWN0dWFsbHkgbWFkZSBhdmFpbGFibGUgdG8gdGhlIHN5c3RlbS4gV2hhdCBob29rcyBhcmUgaW4gcGxhY2U/IFdoYXQgZGF0YSBzdHJ1Y3R1cmVzIGFyZSBpbnZvbHZlZD8gSSdtIGFudGljaXBhdGluZyB0aGVyZSB3aWxsIGJlIGNhbGxzIHRvIGEgZ2VuZXJpYyBkcml2ZXIgZnJhbWV3b3JrLCBsaWtlbHkgaW52b2x2aW5nIGBzdHJ1Y3QgZGV2aWNlYCBhbmQgYXNzb2NpYXRlZCBtZXRob2RzLiBJIG5lZWQgdG8gc2VlIGhvdyB0aGUgc3BlY2lmaWMgYHNwYXJ4NWAgaGFyZHdhcmUgaXMgZGVzY3JpYmVkIGFuZCBhdHRhY2hlZCB0byB0aGUga2VybmVsJ3MgZGV2aWNlIHRyZWUgb3Igc29tZSBlcXVpdmFsZW50IG1lY2hhbmlzbS4gQXJlIHRoZXJlIGN1c3RvbSBjb25maWd1cmF0aW9uIG9wdGlvbnMgb3IgcXVpcmtzIHRoYXQgbmVlZCB0byBiZSBhZGRyZXNzZWQgYXQgdGhpcyBzdGFnZT8gQXJlIGludGVycnVwdHMgc2V0IHVwIGhlcmUsIG9yIGlzIHRoYXQgZGVmZXJyZWQ/IEknbSB0aGlua2luZyBhYm91dCByZXNvdXJjZSBhbGxvY2F0aW9uIOKAkyBtZW1vcnkgcmVnaW9ucywgaW50ZXJydXB0IGxpbmVzLCBETUEgY2hhbm5lbHMuLi4gSG93IGFyZSB0aG9zZSBtYW5hZ2VkIGFuZCBjbGFpbWVkIGR1cmluZyByZWdpc3RyYXRpb24/IEl04oCZcyBhbHNvIGNydWNpYWwgdG8gc2VlIGhvdyBlcnJvciBoYW5kbGluZyBpcyBpbXBsZW1lbnRlZCBkdXJpbmcgdGhpcyBwcm9jZXNzLCBhbmQgaWYgdGhlcmUgYXJlIGZhbGxiYWNrIG1lY2hhbmlzbXMgc2hvdWxkIHRoZSBpbml0aWFsIHJlZ2lzdHJhdGlvbiBmYWlsLiBJIG5lZWQgdG8gc3BvdCB0aGUgY3JpdGljYWwgcG9pbnRzIHdoZXJlIGl0IG1pZ2h0IGJlIHBvc3NpYmxlIHRvIGluamVjdCBzb21lIGN1c3RvbSBjb2RlIGZvciBteSBvd24gcmVxdWlyZW1lbnRzLiBUaGlzIGlzIHdoZXJlIHRoZSBydWJiZXIgbWVldHMgdGhlIHJvYWQsIHNvIGxldCdzIGdldCBpbnRvIGl0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MTk2LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMDM6MTE6MDMuNTUzMTE5NjQxWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExODUzMzA3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtb2R1bGVfLipkcml2ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfbWFpbi5jPTExMTI9c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgbWNocF9zcGFyeDVfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfbWFpbi5jLTExMjAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfbWFpbi5jOjExMjE6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihtY2hwX3NwYXJ4NV9kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X21haW4uYy0xMTIyLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQwMzoxMTowMy42NzE2NTg4OTJaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTQwNjMyODI0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkFuYWx5emluZyB0aGUgUGxhdGZvcm0gRHJpdmVyKipcblxuQWxyaWdodCwgbXkgaW5pdGlhbCByZWFkIGlzIHRoYXQgd2UncmUgZGVhbGluZyB3aXRoIGEgcGxhdGZvcm0gZHJpdmVyIGhlcmUuIE15IGltbWVkaWF0ZSBmb2N1cywgdGhlbiwgaXMgdW5kZXJzdGFuZGluZyBpdHMgaW50ZXJhY3Rpb24gd2l0aCB0aGUgYnJvYWRlciBzeXN0ZW0gYXJjaGl0ZWN0dXJlLiBUaGUga2V5IGlzIGluIHRoZSBtYXRjaCB0YWJsZS4gVGhhdCdzIHdoZXJlIHRoZSBjcnVjaWFsIGRldGFpbHMgcmVnYXJkaW5nIGRldmljZSBpZGVudGlmaWNhdGlvbiBhbmQgYmluZGluZyByZXNpZGUuIExldCBtZSBkcmlsbCBkb3duIGFuZCBleGFtaW5lIHRoaXMgdGFibGUgdG8gdW5kZXJzdGFuZCB3aGljaCBkZXZpY2VzIHRoaXMgZHJpdmVyIGlzIGRlc2lnbmVkIHRvIHdvcmsgd2l0aCwgYW5kIHRoZSBzcGVjaWZpY3Mgb2YgdGhlIG1hdGNoIGNyaXRlcmlhLiBUaGlzIGdpdmVzIHRoZSBmcmFtZXdvcmsgZm9yIGlkZW50aWZ5aW5nIHdoYXQgdGhpcyBkb2VzLCBhbmQgd2hhdCBzeXN0ZW1zIGl0IG5lZWRzIHRvIGhvb2sgaW50by4gSSdsbCBuZWVkIHRvIHNlZSBpZiBpdCdzIGJhc2VkIG9uIG5hbWUgbWF0Y2hpbmcsIElEIG1hdGNoaW5nLCBvciBzb21lIG1vcmUgY29tcGxleCBwcm9wZXJ0eSBtYXRjaGluZyBzY2hlbWUgdG8gZnVsbHkgZ3Jhc3AgaXRzIGZ1bmN0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2Njg5LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMDM6MTE6MDYuNjEyMjk0MDM1WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyODc5MzgyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJvZl9kZXZpY2VfaWRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfbWFpbi5jPTEwOTQ9c3RhdGljIGNvbnN0IHN0cnVjdCBzcGFyeDVfbWF0Y2hfZGF0YSBzcGFyeDVfZGVzYyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X21haW4uYy0xMTAyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X21haW4uYzoxMTAzOnN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIG1jaHBfc3Bhcng1X21hdGNoW10gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfbWFpbi5jLTExMDQtXFx0eyAuY29tcGF0aWJsZSA9IFxcXCJtaWNyb2NoaXAsc3Bhcng1LXN3aXRjaFxcXCIsIC5kYXRhID0gXFx1MDAyNnNwYXJ4NV9kZXNjIH0sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDAzOjExOjA2Ljc0MTA5Mzk5NVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ1NjYwNjg1MzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBDaGFsbGVuZ2U6IEZ1enppbmcgYSBIYXJkd2FyZS1TcGVjaWZpYyBEcml2ZXIqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGRldmljZSwgYSBwbGF0Zm9ybSBkZXZpY2Ugc3BlY2lmaWNhbGx5IGRlc2lnbmVkIGFyb3VuZCBhIFwibWljcm9jaGlwLHNwYXJ4NS1zd2l0Y2hcIi4gUmlnaHQgYXdheSwgSSdtIHRoaW5raW5nIHRoaXMgaXMgZ29pbmcgdG8gYmUgdHJpY2t5LiBCZWluZyBoYXJkd2FyZS1zcGVjaWZpYyBtZWFucyBJIGNhbid0IGp1c3QgdGhyb3cgaXQgaW50byBhIGdlbmVyaWMgdmlydHVhbGl6ZWQgc2V0dXAgbGlrZSBRRU1VIG9yIEdDRSBhbmQgZXhwZWN0IGl0IHRvIHdvcmsgd2l0aG91dCBzb21lIHNlcmlvdXMgaGFyZHdhcmUgZW11bGF0aW9uLCBhbmQgSSBrbm93IHRoZXJlIGlzbid0IGFueSBzdGFuZGFyZCBRRU1VIHN1cHBvcnQgZm9yIHRoaXMgcGFydGljdWxhciBkZXZpY2UuXG5cbkhvbGQgb24gYSBzZWNvbmQsIHRob3VnaCwgc3l6a2FsbGVyICpkb2VzKiBoYXZlIHNvbWUgZmVhdHVyZXMgZm9yIGluamVjdGluZyBwbGF0Zm9ybSBkZXZpY2VzLCB3aGljaCBpcyBwcm9taXNpbmcuIEJ1dCBJIGtub3cgZnJvbSBleHBlcmllbmNlIHRoYXQgaXQgcmFyZWx5IGdvZXMgdGhlIGV4dHJhIG1pbGUgdG8gZW11bGF0ZSB0aGUgaGFyZHdhcmUgcmVnaXN0ZXJzLiBTbywgaWYgdGhlIGRyaXZlciBhY3R1YWxseSB0cmllcyB0byByZWFkIG9yIHdyaXRlIHRvIGFueSBvZiB0aG9zZSByZWdpc3RlcnMsIHdlJ3JlIGxpa2VseSBnb2luZyB0byBnZXQgYSBjcmFzaCBvciB0aGUgcHJvYmUgaXMganVzdCBnb2luZyB0byBmYWlsIHNpbmNlIHRoZSBoYXJkd2FyZSBpc24ndCBwaHlzaWNhbGx5IHByZXNlbnQgb3IgY29ycmVjdGx5IGVtdWxhdGVkLlxuXG5BbHJpZ2h0LCB0aGUgc21hcnQgbW92ZSBoZXJlIGlzIHRvIGRpZyBpbnRvIHRoZSBkcml2ZXIncyBjb2RlIGFuZCBzZWUgaWYgaXQgbWFwcyBhbnkgbWVtb3J5IG9yIHJlYWRzIGRhdGEgZnJvbSBpdC4gVGhhdCdsbCBiZSB0aGUgdGVsbC5cblxuXG4iLCJJbnB1dFRva2VucyI6NzA5OSwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQwMzoxMToxMS4zMDcxNjUwNzRaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5OTIwNzc5NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZXZtX2lvcmVtYXBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfbWFpbi5jPTI2OD1zdGF0aWMgaW50IHNwYXJ4NV9jcmVhdGVfdGFyZ2V0cyhzdHJ1Y3Qgc3Bhcng1ICpzcGFyeDUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9tYWluLmMtMjkzLVxcdFxcdH1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9tYWluLmM6Mjk0OlxcdFxcdGlvbWVtW2lkeF0gPSBkZXZtX2lvcmVtYXAoc3Bhcng1LVxcdTAwM2VkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfbWFpbi5jLTI5NS1cXHRcXHRcXHRcXHRcXHQgIGlvcmVzW2lkeF0tXFx1MDAzZXN0YXJ0LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQwMzoxMToxMS41MDYzNzkxMDlaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDU4MTEwMDk1NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIEZlYXNpYmlsaXR5IEFzc2Vzc21lbnQqKlxuXG5Pa2F5LCBzbyB0aGlzIGNvZGUgdXNlcyBgZGV2bV9pb3JlbWFwYCwgd2hpY2ggaW5kaWNhdGVzIGl0J3MgbGlrZWx5IHJlYWRpbmcgYW5kIHdyaXRpbmcgdG8gcmVnaXN0ZXJzLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIFwiY2FuIHRoaXMgYmUgZnV6emVkIGVmZmVjdGl2ZWx5P1wiIFRoZSBjaGFsbGVuZ2UsIGFzIEkgdW5kZXJzdGFuZCBpdCwgc3RlbXMgZnJvbSB0aGUgZHJpdmVyJ3MgbmF0dXJlLiBJdCdzIGEgaGFyZHdhcmUtc3BlY2lmaWMgcGxhdGZvcm0gZHJpdmVyLCB0YXJnZXRpbmcgc29tZXRoaW5nIGxpa2UgYSBNaWNyb2NoaXAgU3Bhcng1IHN3aXRjaC4gVGhlc2UgYXJlIGdlbmVyYWxseSBpbmFjY2Vzc2libGUgdG8gc3l6a2FsbGVyIHVubGVzcyB3ZSBoYXZlIGEgc3BlY2lhbGl6ZWQgZW11bGF0b3Igb3IgYSBzdWl0YWJsZSBkdW1teSBkcml2ZXIgaW4gcGxhY2UuXG5cblRoZXJlZm9yZSwgYmVmb3JlIEkgZGVkaWNhdGUgYW55IHRpbWUgdG8gY3JhZnRpbmcgZnV6emluZyByb3V0aW5lcywgSSBzaG91bGQgdmVyaWZ5IHRoZSBkcml2ZXIgdHlwZS4gSXQgYXBwZWFycyBpdCBpcyBhIHN0YW5kYXJkIGhhcmR3YXJlIGRyaXZlci4gR2l2ZW4gdGhpcyBjbGFzc2lmaWNhdGlvbiwgaXQncyBoaWdobHkgaW1wcm9iYWJsZSB0aGF0IGZ1enppbmcgd291bGQgeWllbGQgdXNlZnVsIHJlc3VsdHMgd2l0aG91dCBhbiB1bnVzdWFsIHNldHVwLlxuXG5UaGVyZWZvcmUsIEknbSBnb2luZyB0byByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgYW5kIGluY2x1ZGUgYSBqdXN0aWZpY2F0aW9uLiBUaGUgcmVhc29uaW5nIGlzIHN0cmFpZ2h0Zm9yd2FyZDogdGhpcyBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIHBsYXRmb3JtIGRyaXZlciwgc3BlY2lmaWNhbGx5IGRlc2lnbmVkIGZvciBhIE1pY3JvY2hpcCBTcGFyeDUgc3dpdGNoLiBUaGUgU3Bhcng1IHN3aXRjaCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBJIG5lZWQgdG8gZG9jdW1lbnQgdGhpcyBjbGVhcmx5IHNvIHRoZSBkZWNpc2lvbiBpcyBub3QgbWlzaW50ZXJwcmV0ZWQgbGF0ZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc3MDAsIk91dHB1dFRva2VucyI6ODIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMDM6MTE6MTYuMDg3NDgyNzg2WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzExMjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1pY3JvY2hpcCBTcGFyeDUgc3dpdGNoIGRyaXZlciwgd2hpY2ggaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBwbGF0Zm9ybSBkcml2ZXIuIFRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAobGlrZSBRRU1VIG9yIEdDRSksIHNvIHRoZSBjb2RlIHBhdGhzIGFyZSB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNaWNyb2NoaXAgU3Bhcng1IHN3aXRjaCBkcml2ZXIsIHdoaWNoIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgcGxhdGZvcm0gZHJpdmVyLiBUaGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKGxpa2UgUUVNVSBvciBHQ0UpLCBzbyB0aGUgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow8mqvc[1] Phase: Running StartedAt: 2026-07-08 03:11:27 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8mqvc[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-07-08 03:11:27 +0000 UTC FinishedAt: 2026-07-08 03:11:44 +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,}