Name: series-workflow4v5bj Phase: Failed StartedAt: 2026-09-06 20:41:38 +0000 UTC FinishedAt: 2026-09-06 20:44:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4v5bj[0] Phase: Succeeded StartedAt: 2026-09-06 20:41:38 +0000 UTC FinishedAt: 2026-09-06 20:44:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4v5bj[0].run-triage Phase: Succeeded StartedAt: 2026-09-06 20:41:38 +0000 UTC FinishedAt: 2026-09-06 20:44:03 +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+CgkJCTx0ZD4yMDI2LzA5LzA2IDIwOjQzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgbW9kaWZpZWQgY29kZSBpcyBleGNsdXNpdmVseSB3aXRoaW4gdGhlIE1lbGxhbm94IG1seDUgZHJpdmVyIChkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvKSwgd2hpY2ggZHJpdmVzIHBoeXNpY2FsIE1lbGxhbm94IENvbm5lY3RYIG5ldHdvcmsgYWRhcHRlcnMgLyBTbWFydE5JQ3MuIEJlY2F1c2UgaXQgcmVxdWlyZXMgcGh5c2ljYWwgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBzeXprYWxsZXIgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMjA6NDM8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBjNWRkZDczOWZiMzA5MWQyYzQzMGZkYmNhMzFmY2EwZjI2ZTQ3MjgxXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBTZXAgNiAyMDo0MzozMyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fcmVwLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fcmVwLmNcbmluZGV4IGNlNzY1NjkyZmQxOWIuLjg4YTE3MGU0MGJkOTMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fcmVwLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9yZXAuY1xuQEAgLTU2LDcgJiM0Mzs1Niw2IEBAXG4gI2luY2x1ZGUgXCYjMzQ7bGliL3Z4bGFuLmhcJiMzNDtcbiAjZGVmaW5lIENSRUFURV9UUkFDRV9QT0lOVFNcbiAjaW5jbHVkZSBcJiMzNDtkaWFnL2VuX3JlcF90cmFjZXBvaW50LmhcJiMzNDtcbi0jaW5jbHVkZSBcJiMzNDtkaWFnL3JlcG9ydGVyX3ZuaWMuaFwmIzM0O1xuICNpbmNsdWRlIFwmIzM0O2VuX2FjY2VsL2lwc2VjLmhcJiMzNDtcbiAjaW5jbHVkZSBcJiMzNDtlbi90Yy9pbnRfcG9ydC5oXCYjMzQ7XG4gI2luY2x1ZGUgXCYjMzQ7ZW4vcHRwLmhcJiMzNDtcbkBAIC0xNDM5LDUxICYjNDM7MTQzOCw2IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgbWx4NWVfdWxfcmVwX3N0YXRzX2dycHNfbnVtKHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2KVxuIFx0cmV0dXJuIEFSUkFZX1NJWkUobWx4NWVfdWxfcmVwX3N0YXRzX2dycHMpO1xuIH1cbiBcbi1zdGF0aWMgaW50XG4tbWx4NWVfcmVwX3ZuaWNfcmVwb3J0ZXJfZGlhZ25vc2Uoc3RydWN0IGRldmxpbmtfaGVhbHRoX3JlcG9ydGVyICpyZXBvcnRlcixcbi1cdFx0XHRcdCBzdHJ1Y3QgZGV2bGlua19mbXNnICpmbXNnLFxuLVx0XHRcdFx0IHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcbi17XG4tXHRzdHJ1Y3QgbWx4NWVfcmVwX3ByaXYgKnJwcml2ID0gZGV2bGlua19oZWFsdGhfcmVwb3J0ZXJfcHJpdihyZXBvcnRlcik7XG4tXHRzdHJ1Y3QgbWx4NV9lc3dpdGNoX3JlcCAqcmVwID0gcnByaXYtXHUwMDNlcmVwO1xuLVxuLVx0bWx4NV9yZXBvcnRlcl92bmljX2RpYWdub3NlX2NvdW50ZXJzKHJlcC1cdTAwM2Vlc3ctXHUwMDNlZGV2LCBmbXNnLCByZXAtXHUwMDNldnBvcnQsXG4tXHRcdFx0XHRcdCAgICAgdHJ1ZSk7XG4tXHRyZXR1cm4gMDtcbi19XG4tXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBkZXZsaW5rX2hlYWx0aF9yZXBvcnRlcl9vcHMgbWx4NV9yZXBfdm5pY19yZXBvcnRlcl9vcHMgPSB7XG4tXHQubmFtZSA9IFwmIzM0O3ZuaWNcJiMzNDssXG4tXHQuZGlhZ25vc2UgPSBtbHg1ZV9yZXBfdm5pY19yZXBvcnRlcl9kaWFnbm9zZSxcbi19O1xuLVxuLXN0YXRpYyB2b2lkIG1seDVlX3JlcF92bmljX3JlcG9ydGVyX2NyZWF0ZShzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdixcbi1cdFx0XHRcdFx0ICAgc3RydWN0IGRldmxpbmtfcG9ydCAqZGxfcG9ydClcbi17XG4tXHRzdHJ1Y3QgbWx4NWVfcmVwX3ByaXYgKnJwcml2ID0gcHJpdi1cdTAwM2VwcHJpdjtcbi1cdHN0cnVjdCBkZXZsaW5rX2hlYWx0aF9yZXBvcnRlciAqcmVwb3J0ZXI7XG4tXG4tXHRyZXBvcnRlciA9IGRldmxfcG9ydF9oZWFsdGhfcmVwb3J0ZXJfY3JlYXRlKGRsX3BvcnQsXG4tXHRcdFx0XHRcdFx0ICAgIFx1MDAyNm1seDVfcmVwX3ZuaWNfcmVwb3J0ZXJfb3BzLFxuLVx0XHRcdFx0XHRcdCAgICBycHJpdik7XG4tXHRpZiAoSVNfRVJSKHJlcG9ydGVyKSkge1xuLVx0XHRtbHg1X2NvcmVfZXJyKHByaXYtXHUwMDNlbWRldixcbi1cdFx0XHQgICAgICBcJiMzNDtGYWlsZWQgdG8gY3JlYXRlIHJlcHJlc2VudG9yIHZuaWMgcmVwb3J0ZXIsIGVyciA9ICVwZVxcblwmIzM0Oyxcbi1cdFx0XHQgICAgICByZXBvcnRlcik7XG4tXHRcdHJldHVybjtcbi1cdH1cbi1cbi1cdHJwcml2LVx1MDAzZXJlcF92bmljX3JlcG9ydGVyID0gcmVwb3J0ZXI7XG4tfVxuLVxuLXN0YXRpYyB2b2lkIG1seDVlX3JlcF92bmljX3JlcG9ydGVyX2Rlc3Ryb3koc3RydWN0IG1seDVlX3ByaXYgKnByaXYpXG4te1xuLVx0c3RydWN0IG1seDVlX3JlcF9wcml2ICpycHJpdiA9IHByaXYtXHUwMDNlcHByaXY7XG4tXG4tXHRpZiAoIUlTX0VSUl9PUl9OVUxMKHJwcml2LVx1MDAzZXJlcF92bmljX3JlcG9ydGVyKSlcbi1cdFx0ZGV2bF9oZWFsdGhfcmVwb3J0ZXJfZGVzdHJveShycHJpdi1cdTAwM2VyZXBfdm5pY19yZXBvcnRlcik7XG4tfVxuLVxuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbWx4NWVfcHJvZmlsZSBtbHg1ZV9yZXBfcHJvZmlsZSA9IHtcbiBcdC5pbml0XHRcdFx0PSBtbHg1ZV9pbml0X3JlcCxcbiBcdC5jbGVhbnVwXHRcdD0gbWx4NWVfY2xlYW51cF9yZXAsXG5AQCAtMTYwNywxMCAmIzQzOzE1NjEsOCBAQCBtbHg1ZV92cG9ydF92Zl9yZXBfbG9hZChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBzdHJ1Y3QgbWx4NV9lc3dpdGNoX3JlcCAqcmVwKVxuIFxuIFx0ZGxfcG9ydCA9IG1seDVfZXN3X29mZmxvYWRzX2RldmxpbmtfcG9ydChkZXYtXHUwMDNlcHJpdi5lc3dpdGNoLFxuIFx0XHRcdFx0XHRcdCBycHJpdi1cdTAwM2VyZXAtXHUwMDNldnBvcnQpO1xuLVx0aWYgKCFJU19FUlIoZGxfcG9ydCkpIHtcbiYjNDM7XHRpZiAoIUlTX0VSUihkbF9wb3J0KSlcbiBcdFx0U0VUX05FVERFVl9ERVZMSU5LX1BPUlQobmV0ZGV2LCBkbF9wb3J0KTtcbi1cdFx0bWx4NWVfcmVwX3ZuaWNfcmVwb3J0ZXJfY3JlYXRlKHByaXYsIGRsX3BvcnQpO1xuLVx0fVxuIFxuIFx0ZXJyID0gcmVnaXN0ZXJfbmV0ZGV2KG5ldGRldik7XG4gXHRpZiAoZXJyKSB7XG5AQCAtMTYyMyw3ICYjNDM7MTU3NSw2IEBAIG1seDVlX3Zwb3J0X3ZmX3JlcF9sb2FkKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHN0cnVjdCBtbHg1X2Vzd2l0Y2hfcmVwICpyZXApXG4gXHRyZXR1cm4gMDtcbiBcbiBlcnJfZGV0YWNoX25ldGRldjpcbi1cdG1seDVlX3JlcF92bmljX3JlcG9ydGVyX2Rlc3Ryb3kocHJpdik7XG4gXHRtbHg1ZV9kZXRhY2hfbmV0ZGV2KG5ldGRldl9wcml2KG5ldGRldikpO1xuIGVycl9jbGVhbnVwX3Byb2ZpbGU6XG4gXHRwcml2LVx1MDAzZXByb2ZpbGUtXHUwMDNlY2xlYW51cChwcml2KTtcbkBAIC0xNjgxLDcgJiM0MzsxNjMyLDYgQEAgbWx4NWVfdnBvcnRfcmVwX3VubG9hZChzdHJ1Y3QgbWx4NV9lc3dpdGNoX3JlcCAqcmVwKVxuIFx0fVxuIFxuIFx0dW5yZWdpc3Rlcl9uZXRkZXYobmV0ZGV2KTtcbi1cdG1seDVlX3JlcF92bmljX3JlcG9ydGVyX2Rlc3Ryb3kocHJpdik7XG4gXHRtbHg1ZV9kZXRhY2hfbmV0ZGV2KHByaXYpO1xuIFx0cHJpdi1cdTAwM2Vwcm9maWxlLVx1MDAzZWNsZWFudXAocHJpdik7XG4gXHRtbHg1ZV9kZXN0cm95X25ldGRldihuZXRkZXYpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9yZXAuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9yZXAuaFxuaW5kZXggNzA2NDBmYTFhZDdiYy4uYmNkN2I0ZTgxNGQwNiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9yZXAuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3JlcC5oXG5AQCAtMTE4LDcgJiM0MzsxMTgsNiBAQCBzdHJ1Y3QgbWx4NWVfcmVwX3ByaXYge1xuIFx0c3RydWN0IHJ0bmxfbGlua19zdGF0czY0IHByZXZfdmZfdnBvcnRfc3RhdHM7XG4gXHRzdHJ1Y3QgbWx4NV9mbG93X2hhbmRsZSAqc2VuZF90b192cG9ydF9tZXRhX3J1bGU7XG4gXHRzdHJ1Y3Qgcmhhc2h0YWJsZSB0Y19odDtcbi1cdHN0cnVjdCBkZXZsaW5rX2hlYWx0aF9yZXBvcnRlciAqcmVwX3ZuaWNfcmVwb3J0ZXI7XG4gfTtcbiBcbiBzdGF0aWMgaW5saW5lXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Vzdy9kZXZsaW5rX3BvcnQuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lc3cvZGV2bGlua19wb3J0LmNcbmluZGV4IDM2YjAwYTg1NmJjMjEuLmZkYzk2MGVhNTMzMTggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXN3L2RldmxpbmtfcG9ydC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXN3L2RldmxpbmtfcG9ydC5jXG5AQCAtNCw2ICYjNDM7NCwyNiBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L21seDUvZHJpdmVyLmhcdTAwM2VcbiAjaW5jbHVkZSBcJiMzNDtlc3dpdGNoLmhcJiMzNDtcbiAjaW5jbHVkZSBcJiMzNDtkZXZsaW5rLmhcJiMzNDtcbiYjNDM7I2luY2x1ZGUgXCYjMzQ7ZGlhZy9yZXBvcnRlcl92bmljLmhcJiMzNDtcbiYjNDM7XG4mIzQzO3N0YXRpYyBpbnRcbiYjNDM7bWx4NV9lc3dfcmVwX3ZuaWNfcmVwb3J0ZXJfZGlhZ25vc2Uoc3RydWN0IGRldmxpbmtfaGVhbHRoX3JlcG9ydGVyICpyZXBvcnRlcixcbiYjNDM7XHRcdFx0XHQgICAgc3RydWN0IGRldmxpbmtfZm1zZyAqZm1zZyxcbiYjNDM7XHRcdFx0XHQgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IG1seDVfdnBvcnQgKnZwb3J0ID0gZGV2bGlua19oZWFsdGhfcmVwb3J0ZXJfcHJpdihyZXBvcnRlcik7XG4mIzQzO1xuJiM0MztcdG1seDVfcmVwb3J0ZXJfdm5pY19kaWFnbm9zZV9jb3VudGVycyh2cG9ydC1cdTAwM2VkZXYsIGZtc2csIHZwb3J0LVx1MDAzZXZwb3J0LFxuJiM0MztcdFx0XHRcdFx0ICAgICB0cnVlKTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBjb25zdFxuJiM0MztzdHJ1Y3QgZGV2bGlua19oZWFsdGhfcmVwb3J0ZXJfb3BzIG1seDVfZXN3X3JlcF92bmljX3JlcG9ydGVyX29wcyA9IHtcbiYjNDM7XHQubmFtZSA9IFwmIzM0O3ZuaWNcJiMzNDssXG4mIzQzO1x0LmRpYWdub3NlID0gbWx4NV9lc3dfcmVwX3ZuaWNfcmVwb3J0ZXJfZGlhZ25vc2UsXG4mIzQzO307XG4gXG4gc3RhdGljIHZvaWRcbiBtbHg1X2Vzd19nZXRfcG9ydF9wYXJlbnRfaWQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgc3RydWN0IG5ldGRldl9waHlzX2l0ZW1faWQgKnBwaWQpXG5AQCAtMjIwLDYgJiM0MzsyNDAsNyBAQCBzdGF0aWMgdm9pZCBtbHg1X2Vzd19kZXZsaW5rX3BvcnRfcmVzX3VucmVnaXN0ZXIoc3RydWN0IGRldmxpbmtfcG9ydCAqZGxfcG9ydClcbiBcbiBpbnQgbWx4NV9lc3dfb2ZmbG9hZHNfZGV2bGlua19wb3J0X3JlZ2lzdGVyKHN0cnVjdCBtbHg1X2Vzd2l0Y2ggKmVzdywgc3RydWN0IG1seDVfdnBvcnQgKnZwb3J0KVxuIHtcbiYjNDM7XHRzdHJ1Y3QgZGV2bGlua19oZWFsdGhfcmVwb3J0ZXIgKnJlcG9ydGVyO1xuIFx0c3RydWN0IG1seDVfY29yZV9kZXYgKmRldiA9IGVzdy1cdTAwM2VkZXY7XG4gXHRjb25zdCBzdHJ1Y3QgZGV2bGlua19wb3J0X29wcyAqb3BzO1xuIFx0c3RydWN0IG1seDVfZGV2bGlua19wb3J0ICpkbF9wb3J0O1xuQEAgLTI1NSw2ICYjNDM7Mjc2LDE2IEBAIGludCBtbHg1X2Vzd19vZmZsb2Fkc19kZXZsaW5rX3BvcnRfcmVnaXN0ZXIoc3RydWN0IG1seDVfZXN3aXRjaCAqZXN3LCBzdHJ1Y3QgbWx4XG4gXHRcdG1seDVfY29yZV9kYmcoZGV2LCBcJiMzNDtGYWlsZWQgdG8gcmVnaXN0ZXIgcG9ydCByZXNvdXJjZXM6ICVkXFxuXCYjMzQ7LFxuIFx0XHRcdCAgICAgIGVycik7XG4gXG4mIzQzO1x0cmVwb3J0ZXIgPSBkZXZsX3BvcnRfaGVhbHRoX3JlcG9ydGVyX2NyZWF0ZShcbiYjNDM7XHRcdFx1MDAyNmRsX3BvcnQtXHUwMDNlZGxfcG9ydCwgXHUwMDI2bWx4NV9lc3dfcmVwX3ZuaWNfcmVwb3J0ZXJfb3BzLFxuJiM0MztcdFx0dnBvcnQpO1xuJiM0MztcdGlmIChJU19FUlIocmVwb3J0ZXIpKVxuJiM0MztcdFx0bWx4NV9jb3JlX2VycihkZXYsXG4mIzQzO1x0XHRcdCAgICAgIFwmIzM0O0ZhaWxlZCB0byBjcmVhdGUgdm5pYyBoZWFsdGggcmVwb3J0ZXIgZm9yIHZwb3J0ICVkOiAlcGVcXG5cJiMzNDssXG4mIzQzO1x0XHRcdCAgICAgIHZwb3J0X251bSwgcmVwb3J0ZXIpO1xuJiM0MztcdGVsc2VcbiYjNDM7XHRcdGRsX3BvcnQtXHUwMDNldm5pY19yZXBvcnRlciA9IHJlcG9ydGVyO1xuJiM0MztcbiBcdHJldHVybiAwO1xuIFxuIHJhdGVfZXJyOlxuQEAgLTI2OSw2ICYjNDM7MzAwLDEyIEBAIHZvaWQgbWx4NV9lc3dfb2ZmbG9hZHNfZGV2bGlua19wb3J0X3VucmVnaXN0ZXIoc3RydWN0IG1seDVfdnBvcnQgKnZwb3J0KVxuIFx0aWYgKCF2cG9ydC1cdTAwM2VkbF9wb3J0KVxuIFx0XHRyZXR1cm47XG4gXHRkbF9wb3J0ID0gdnBvcnQtXHUwMDNlZGxfcG9ydDtcbiYjNDM7XG4mIzQzO1x0aWYgKGRsX3BvcnQtXHUwMDNldm5pY19yZXBvcnRlcikge1xuJiM0MztcdFx0ZGV2bF9oZWFsdGhfcmVwb3J0ZXJfZGVzdHJveShkbF9wb3J0LVx1MDAzZXZuaWNfcmVwb3J0ZXIpO1xuJiM0MztcdFx0ZGxfcG9ydC1cdTAwM2V2bmljX3JlcG9ydGVyID0gTlVMTDtcbiYjNDM7XHR9XG4mIzQzO1xuIFx0bWx4NV9lc3dfZGV2bGlua19wb3J0X3Jlc191bnJlZ2lzdGVyKFx1MDAyNmRsX3BvcnQtXHUwMDNlZGxfcG9ydCk7XG4gXG4gXHRkZXZsX3JhdGVfbGVhZl9kZXN0cm95KFx1MDAyNmRsX3BvcnQtXHUwMDNlZGxfcG9ydCk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Vzd2l0Y2guaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lc3dpdGNoLmhcbmluZGV4IGM2NTVmNmU4ZGExY2UuLjhiMWY5M2IxM2VhOWMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXN3aXRjaC5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXN3aXRjaC5oXG5AQCAtMTg5LDYgJiM0MzsxODksNyBAQCBzdHJ1Y3QgbWx4NV92cG9ydDtcbiBzdHJ1Y3QgbWx4NV9kZXZsaW5rX3BvcnQge1xuIFx0c3RydWN0IGRldmxpbmtfcG9ydCBkbF9wb3J0O1xuIFx0c3RydWN0IG1seDVfdnBvcnQgKnZwb3J0O1xuJiM0MztcdHN0cnVjdCBkZXZsaW5rX2hlYWx0aF9yZXBvcnRlciAqdm5pY19yZXBvcnRlcjtcbiB9O1xuIFxuIHN0YXRpYyBpbmxpbmUgdm9pZCBtbHg1X2RldmxpbmtfcG9ydF9pbml0KHN0cnVjdCBtbHg1X2RldmxpbmtfcG9ydCAqZGxfcG9ydCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAyMDo0MzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBtb2RpZmllZCBjb2RlIGlzIGV4Y2x1c2l2ZWx5IHdpdGhpbiB0aGUgTWVsbGFub3ggbWx4NSBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS8pLCB3aGljaCBkcml2ZXMgcGh5c2ljYWwgTWVsbGFub3ggQ29ubmVjdFggbmV0d29yayBhZGFwdGVycyAvIFNtYXJ0TklDcy4gQmVjYXVzZSBpdCByZXF1aXJlcyBwaHlzaWNhbCBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChRRU1VL0dDRSksIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIHN5emthbGxlciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzCnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoxLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsCmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuCgotIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOgogIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQKICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLgogIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCwKICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuCgotIERPIE5PVCBCTElORExZIFRSVVNUICYjMzQ7Tk8gRlVOQ1RJT05BTCBDSEFOR0UmIzM0OyAoTkZDSSkgT1IgJiMzNDtSRUZBQ1RPUklORyYjMzQ7IENMQUlNUzoKICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzICYjMzQ7Y2xlYW51cHMmIzM0OywgJiMzNDtyZWZhY3RvcmluZ3MmIzM0Oywgb3Igc3RhdGUKICAmIzM0O05vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkJiMzNDsuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLgogIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudAogIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLgogIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuCgotIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOgogIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKiwKICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy4KICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyCiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczoKCi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczoKICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy4KICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKQogICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLgogICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHMKICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuCiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuCi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOgogICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6CiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmcKICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLgogICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOgotIENvcmUgU3Vic3lzdGVtczoKICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSwKICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy4KLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6CiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuCi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOgogICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLgotIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6CiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo0LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTikKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6CgotIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzoKICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1cwogIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0CiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuCiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzICYjMzQ7Zm9jdXNlZCYjMzQ7LAogIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy4KCi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOgogIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50cwogIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LgoKLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6CiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFjawogIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLgogIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlcgogIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZToKLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgotIENoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuCi0gU3RyaXAgYW55ICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGM1ZGRkNzM5ZmIzMDkxZDJjNDMwZmRiY2EzMWZjYTBmMjZlNDcyODEKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU3VuIFNlcCA2IDIwOjQzOjMzIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3JlcC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3JlcC5jCmluZGV4IGNlNzY1NjkyZmQxOWIuLjg4YTE3MGU0MGJkOTMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9yZXAuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fcmVwLmMKQEAgLTU2LDcgJiM0Mzs1Niw2IEBACiAjaW5jbHVkZSAmIzM0O2xpYi92eGxhbi5oJiMzNDsKICNkZWZpbmUgQ1JFQVRFX1RSQUNFX1BPSU5UUwogI2luY2x1ZGUgJiMzNDtkaWFnL2VuX3JlcF90cmFjZXBvaW50LmgmIzM0OwotI2luY2x1ZGUgJiMzNDtkaWFnL3JlcG9ydGVyX3ZuaWMuaCYjMzQ7CiAjaW5jbHVkZSAmIzM0O2VuX2FjY2VsL2lwc2VjLmgmIzM0OwogI2luY2x1ZGUgJiMzNDtlbi90Yy9pbnRfcG9ydC5oJiMzNDsKICNpbmNsdWRlICYjMzQ7ZW4vcHRwLmgmIzM0OwpAQCAtMTQzOSw1MSAmIzQzOzE0MzgsNiBAQCBzdGF0aWMgdW5zaWduZWQgaW50IG1seDVlX3VsX3JlcF9zdGF0c19ncnBzX251bShzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdikKIAlyZXR1cm4gQVJSQVlfU0laRShtbHg1ZV91bF9yZXBfc3RhdHNfZ3Jwcyk7CiB9CiAKLXN0YXRpYyBpbnQKLW1seDVlX3JlcF92bmljX3JlcG9ydGVyX2RpYWdub3NlKHN0cnVjdCBkZXZsaW5rX2hlYWx0aF9yZXBvcnRlciAqcmVwb3J0ZXIsCi0JCQkJIHN0cnVjdCBkZXZsaW5rX2Ztc2cgKmZtc2csCi0JCQkJIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaykKLXsKLQlzdHJ1Y3QgbWx4NWVfcmVwX3ByaXYgKnJwcml2ID0gZGV2bGlua19oZWFsdGhfcmVwb3J0ZXJfcHJpdihyZXBvcnRlcik7Ci0Jc3RydWN0IG1seDVfZXN3aXRjaF9yZXAgKnJlcCA9IHJwcml2LSZndDtyZXA7Ci0KLQltbHg1X3JlcG9ydGVyX3ZuaWNfZGlhZ25vc2VfY291bnRlcnMocmVwLSZndDtlc3ctJmd0O2RldiwgZm1zZywgcmVwLSZndDt2cG9ydCwKLQkJCQkJICAgICB0cnVlKTsKLQlyZXR1cm4gMDsKLX0KLQotc3RhdGljIGNvbnN0IHN0cnVjdCBkZXZsaW5rX2hlYWx0aF9yZXBvcnRlcl9vcHMgbWx4NV9yZXBfdm5pY19yZXBvcnRlcl9vcHMgPSB7Ci0JLm5hbWUgPSAmIzM0O3ZuaWMmIzM0OywKLQkuZGlhZ25vc2UgPSBtbHg1ZV9yZXBfdm5pY19yZXBvcnRlcl9kaWFnbm9zZSwKLX07Ci0KLXN0YXRpYyB2b2lkIG1seDVlX3JlcF92bmljX3JlcG9ydGVyX2NyZWF0ZShzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdiwKLQkJCQkJICAgc3RydWN0IGRldmxpbmtfcG9ydCAqZGxfcG9ydCkKLXsKLQlzdHJ1Y3QgbWx4NWVfcmVwX3ByaXYgKnJwcml2ID0gcHJpdi0mZ3Q7cHByaXY7Ci0Jc3RydWN0IGRldmxpbmtfaGVhbHRoX3JlcG9ydGVyICpyZXBvcnRlcjsKLQotCXJlcG9ydGVyID0gZGV2bF9wb3J0X2hlYWx0aF9yZXBvcnRlcl9jcmVhdGUoZGxfcG9ydCwKLQkJCQkJCSAgICAmYW1wO21seDVfcmVwX3ZuaWNfcmVwb3J0ZXJfb3BzLAotCQkJCQkJICAgIHJwcml2KTsKLQlpZiAoSVNfRVJSKHJlcG9ydGVyKSkgewotCQltbHg1X2NvcmVfZXJyKHByaXYtJmd0O21kZXYsCi0JCQkgICAgICAmIzM0O0ZhaWxlZCB0byBjcmVhdGUgcmVwcmVzZW50b3Igdm5pYyByZXBvcnRlciwgZXJyID0gJXBlXG4mIzM0OywKLQkJCSAgICAgIHJlcG9ydGVyKTsKLQkJcmV0dXJuOwotCX0KLQotCXJwcml2LSZndDtyZXBfdm5pY19yZXBvcnRlciA9IHJlcG9ydGVyOwotfQotCi1zdGF0aWMgdm9pZCBtbHg1ZV9yZXBfdm5pY19yZXBvcnRlcl9kZXN0cm95KHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2KQotewotCXN0cnVjdCBtbHg1ZV9yZXBfcHJpdiAqcnByaXYgPSBwcml2LSZndDtwcHJpdjsKLQotCWlmICghSVNfRVJSX09SX05VTEwocnByaXYtJmd0O3JlcF92bmljX3JlcG9ydGVyKSkKLQkJZGV2bF9oZWFsdGhfcmVwb3J0ZXJfZGVzdHJveShycHJpdi0mZ3Q7cmVwX3ZuaWNfcmVwb3J0ZXIpOwotfQotCiBzdGF0aWMgY29uc3Qgc3RydWN0IG1seDVlX3Byb2ZpbGUgbWx4NWVfcmVwX3Byb2ZpbGUgPSB7CiAJLmluaXQJCQk9IG1seDVlX2luaXRfcmVwLAogCS5jbGVhbnVwCQk9IG1seDVlX2NsZWFudXBfcmVwLApAQCAtMTYwNywxMCAmIzQzOzE1NjEsOCBAQCBtbHg1ZV92cG9ydF92Zl9yZXBfbG9hZChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBzdHJ1Y3QgbWx4NV9lc3dpdGNoX3JlcCAqcmVwKQogCiAJZGxfcG9ydCA9IG1seDVfZXN3X29mZmxvYWRzX2RldmxpbmtfcG9ydChkZXYtJmd0O3ByaXYuZXN3aXRjaCwKIAkJCQkJCSBycHJpdi0mZ3Q7cmVwLSZndDt2cG9ydCk7Ci0JaWYgKCFJU19FUlIoZGxfcG9ydCkpIHsKJiM0MzsJaWYgKCFJU19FUlIoZGxfcG9ydCkpCiAJCVNFVF9ORVRERVZfREVWTElOS19QT1JUKG5ldGRldiwgZGxfcG9ydCk7Ci0JCW1seDVlX3JlcF92bmljX3JlcG9ydGVyX2NyZWF0ZShwcml2LCBkbF9wb3J0KTsKLQl9CiAKIAllcnIgPSByZWdpc3Rlcl9uZXRkZXYobmV0ZGV2KTsKIAlpZiAoZXJyKSB7CkBAIC0xNjIzLDcgJiM0MzsxNTc1LDYgQEAgbWx4NWVfdnBvcnRfdmZfcmVwX2xvYWQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgc3RydWN0IG1seDVfZXN3aXRjaF9yZXAgKnJlcCkKIAlyZXR1cm4gMDsKIAogZXJyX2RldGFjaF9uZXRkZXY6Ci0JbWx4NWVfcmVwX3ZuaWNfcmVwb3J0ZXJfZGVzdHJveShwcml2KTsKIAltbHg1ZV9kZXRhY2hfbmV0ZGV2KG5ldGRldl9wcml2KG5ldGRldikpOwogZXJyX2NsZWFudXBfcHJvZmlsZToKIAlwcml2LSZndDtwcm9maWxlLSZndDtjbGVhbnVwKHByaXYpOwpAQCAtMTY4MSw3ICYjNDM7MTYzMiw2IEBAIG1seDVlX3Zwb3J0X3JlcF91bmxvYWQoc3RydWN0IG1seDVfZXN3aXRjaF9yZXAgKnJlcCkKIAl9CiAKIAl1bnJlZ2lzdGVyX25ldGRldihuZXRkZXYpOwotCW1seDVlX3JlcF92bmljX3JlcG9ydGVyX2Rlc3Ryb3kocHJpdik7CiAJbWx4NWVfZGV0YWNoX25ldGRldihwcml2KTsKIAlwcml2LSZndDtwcm9maWxlLSZndDtjbGVhbnVwKHByaXYpOwogCW1seDVlX2Rlc3Ryb3lfbmV0ZGV2KG5ldGRldik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fcmVwLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fcmVwLmgKaW5kZXggNzA2NDBmYTFhZDdiYy4uYmNkN2I0ZTgxNGQwNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3JlcC5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9yZXAuaApAQCAtMTE4LDcgJiM0MzsxMTgsNiBAQCBzdHJ1Y3QgbWx4NWVfcmVwX3ByaXYgewogCXN0cnVjdCBydG5sX2xpbmtfc3RhdHM2NCBwcmV2X3ZmX3Zwb3J0X3N0YXRzOwogCXN0cnVjdCBtbHg1X2Zsb3dfaGFuZGxlICpzZW5kX3RvX3Zwb3J0X21ldGFfcnVsZTsKIAlzdHJ1Y3Qgcmhhc2h0YWJsZSB0Y19odDsKLQlzdHJ1Y3QgZGV2bGlua19oZWFsdGhfcmVwb3J0ZXIgKnJlcF92bmljX3JlcG9ydGVyOwogfTsKIAogc3RhdGljIGlubGluZQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Vzdy9kZXZsaW5rX3BvcnQuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lc3cvZGV2bGlua19wb3J0LmMKaW5kZXggMzZiMDBhODU2YmMyMS4uZmRjOTYwZWE1MzMxOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Vzdy9kZXZsaW5rX3BvcnQuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXN3L2RldmxpbmtfcG9ydC5jCkBAIC00LDYgJiM0Mzs0LDI2IEBACiAjaW5jbHVkZSAmbHQ7bGludXgvbWx4NS9kcml2ZXIuaCZndDsKICNpbmNsdWRlICYjMzQ7ZXN3aXRjaC5oJiMzNDsKICNpbmNsdWRlICYjMzQ7ZGV2bGluay5oJiMzNDsKJiM0MzsjaW5jbHVkZSAmIzM0O2RpYWcvcmVwb3J0ZXJfdm5pYy5oJiMzNDsKJiM0MzsKJiM0MztzdGF0aWMgaW50CiYjNDM7bWx4NV9lc3dfcmVwX3ZuaWNfcmVwb3J0ZXJfZGlhZ25vc2Uoc3RydWN0IGRldmxpbmtfaGVhbHRoX3JlcG9ydGVyICpyZXBvcnRlciwKJiM0MzsJCQkJICAgIHN0cnVjdCBkZXZsaW5rX2Ztc2cgKmZtc2csCiYjNDM7CQkJCSAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spCiYjNDM7ewomIzQzOwlzdHJ1Y3QgbWx4NV92cG9ydCAqdnBvcnQgPSBkZXZsaW5rX2hlYWx0aF9yZXBvcnRlcl9wcml2KHJlcG9ydGVyKTsKJiM0MzsKJiM0MzsJbWx4NV9yZXBvcnRlcl92bmljX2RpYWdub3NlX2NvdW50ZXJzKHZwb3J0LSZndDtkZXYsIGZtc2csIHZwb3J0LSZndDt2cG9ydCwKJiM0MzsJCQkJCSAgICAgdHJ1ZSk7CiYjNDM7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgY29uc3QKJiM0MztzdHJ1Y3QgZGV2bGlua19oZWFsdGhfcmVwb3J0ZXJfb3BzIG1seDVfZXN3X3JlcF92bmljX3JlcG9ydGVyX29wcyA9IHsKJiM0MzsJLm5hbWUgPSAmIzM0O3ZuaWMmIzM0OywKJiM0MzsJLmRpYWdub3NlID0gbWx4NV9lc3dfcmVwX3ZuaWNfcmVwb3J0ZXJfZGlhZ25vc2UsCiYjNDM7fTsKIAogc3RhdGljIHZvaWQKIG1seDVfZXN3X2dldF9wb3J0X3BhcmVudF9pZChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBzdHJ1Y3QgbmV0ZGV2X3BoeXNfaXRlbV9pZCAqcHBpZCkKQEAgLTIyMCw2ICYjNDM7MjQwLDcgQEAgc3RhdGljIHZvaWQgbWx4NV9lc3dfZGV2bGlua19wb3J0X3Jlc191bnJlZ2lzdGVyKHN0cnVjdCBkZXZsaW5rX3BvcnQgKmRsX3BvcnQpCiAKIGludCBtbHg1X2Vzd19vZmZsb2Fkc19kZXZsaW5rX3BvcnRfcmVnaXN0ZXIoc3RydWN0IG1seDVfZXN3aXRjaCAqZXN3LCBzdHJ1Y3QgbWx4NV92cG9ydCAqdnBvcnQpCiB7CiYjNDM7CXN0cnVjdCBkZXZsaW5rX2hlYWx0aF9yZXBvcnRlciAqcmVwb3J0ZXI7CiAJc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiA9IGVzdy0mZ3Q7ZGV2OwogCWNvbnN0IHN0cnVjdCBkZXZsaW5rX3BvcnRfb3BzICpvcHM7CiAJc3RydWN0IG1seDVfZGV2bGlua19wb3J0ICpkbF9wb3J0OwpAQCAtMjU1LDYgJiM0MzsyNzYsMTYgQEAgaW50IG1seDVfZXN3X29mZmxvYWRzX2RldmxpbmtfcG9ydF9yZWdpc3RlcihzdHJ1Y3QgbWx4NV9lc3dpdGNoICplc3csIHN0cnVjdCBtbHgKIAkJbWx4NV9jb3JlX2RiZyhkZXYsICYjMzQ7RmFpbGVkIHRvIHJlZ2lzdGVyIHBvcnQgcmVzb3VyY2VzOiAlZFxuJiMzNDssCiAJCQkgICAgICBlcnIpOwogCiYjNDM7CXJlcG9ydGVyID0gZGV2bF9wb3J0X2hlYWx0aF9yZXBvcnRlcl9jcmVhdGUoCiYjNDM7CQkmYW1wO2RsX3BvcnQtJmd0O2RsX3BvcnQsICZhbXA7bWx4NV9lc3dfcmVwX3ZuaWNfcmVwb3J0ZXJfb3BzLAomIzQzOwkJdnBvcnQpOwomIzQzOwlpZiAoSVNfRVJSKHJlcG9ydGVyKSkKJiM0MzsJCW1seDVfY29yZV9lcnIoZGV2LAomIzQzOwkJCSAgICAgICYjMzQ7RmFpbGVkIHRvIGNyZWF0ZSB2bmljIGhlYWx0aCByZXBvcnRlciBmb3IgdnBvcnQgJWQ6ICVwZVxuJiMzNDssCiYjNDM7CQkJICAgICAgdnBvcnRfbnVtLCByZXBvcnRlcik7CiYjNDM7CWVsc2UKJiM0MzsJCWRsX3BvcnQtJmd0O3ZuaWNfcmVwb3J0ZXIgPSByZXBvcnRlcjsKJiM0MzsKIAlyZXR1cm4gMDsKIAogcmF0ZV9lcnI6CkBAIC0yNjksNiAmIzQzOzMwMCwxMiBAQCB2b2lkIG1seDVfZXN3X29mZmxvYWRzX2RldmxpbmtfcG9ydF91bnJlZ2lzdGVyKHN0cnVjdCBtbHg1X3Zwb3J0ICp2cG9ydCkKIAlpZiAoIXZwb3J0LSZndDtkbF9wb3J0KQogCQlyZXR1cm47CiAJZGxfcG9ydCA9IHZwb3J0LSZndDtkbF9wb3J0OwomIzQzOwomIzQzOwlpZiAoZGxfcG9ydC0mZ3Q7dm5pY19yZXBvcnRlcikgewomIzQzOwkJZGV2bF9oZWFsdGhfcmVwb3J0ZXJfZGVzdHJveShkbF9wb3J0LSZndDt2bmljX3JlcG9ydGVyKTsKJiM0MzsJCWRsX3BvcnQtJmd0O3ZuaWNfcmVwb3J0ZXIgPSBOVUxMOwomIzQzOwl9CiYjNDM7CiAJbWx4NV9lc3dfZGV2bGlua19wb3J0X3Jlc191bnJlZ2lzdGVyKCZhbXA7ZGxfcG9ydC0mZ3Q7ZGxfcG9ydCk7CiAKIAlkZXZsX3JhdGVfbGVhZl9kZXN0cm95KCZhbXA7ZGxfcG9ydC0mZ3Q7ZGxfcG9ydCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXN3aXRjaC5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Vzd2l0Y2guaAppbmRleCBjNjU1ZjZlOGRhMWNlLi44YjFmOTNiMTNlYTljIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXN3aXRjaC5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lc3dpdGNoLmgKQEAgLTE4OSw2ICYjNDM7MTg5LDcgQEAgc3RydWN0IG1seDVfdnBvcnQ7CiBzdHJ1Y3QgbWx4NV9kZXZsaW5rX3BvcnQgewogCXN0cnVjdCBkZXZsaW5rX3BvcnQgZGxfcG9ydDsKIAlzdHJ1Y3QgbWx4NV92cG9ydCAqdnBvcnQ7CiYjNDM7CXN0cnVjdCBkZXZsaW5rX2hlYWx0aF9yZXBvcnRlciAqdm5pY19yZXBvcnRlcjsKIH07CiAKIHN0YXRpYyBpbmxpbmUgdm9pZCBtbHg1X2RldmxpbmtfcG9ydF9pbml0KHN0cnVjdCBtbHg1X2RldmxpbmtfcG9ydCAqZGxfcG9ydCwKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMjA6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTQ3MAoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDM0MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBvdGVudGlhbCBmb3IgRnV6emluZyB0aGlzIE1lbGxhbm94IERyaXZlciBDb2RlKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgdGhlIE1lbGxhbm94IG1seDUgZHJpdmVyIOKAkyBzcGVjaWZpY2FsbHkgdGhlc2UgZmlsZXM6IGBlbl9yZXAuY2AsIGBlbl9yZXAuaGAsIGBkZXZsaW5rX3BvcnQuY2AsIGFuZCBgZXN3aXRjaC5oYCB3aXRoaW4gdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYCBkaXJlY3RvcnkuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O2NhbiB0aGlzIGV2ZW4gYmUgZnV6emVkIGVmZmVjdGl2ZWx5PyYjMzQ7IEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgaXQgbWVldHMgdGhlIGNyaXRlcmlhIGZvciBiZWluZyAmIzM0O1dvcnRoRnV6emluZz1mYWxzZSYjMzQ7IGJhc2VkIG9uIFNlY3Rpb24gMiBvZiB0aGUgZ3VpZGVsaW5lcyDigJMgc3BlY2lmaWNhbGx5IHRoZSAmIzM0O1N0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZSYjMzQ7IGNsYXVzZS4KClRoZSBndWlkZWxpbmVzIG1lbnRpb24gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgbGlrZSBgbWx4c3dgLCBgcGRzX2NvcmVgLCBgcWVkYCwgYGlvbmljYCwgYW5kIGBhbWRncHVgIGFzIGV4YW1wbGVzIG9mIGRyaXZlcnMgdGhhdCBhcmUgZGlmZmljdWx0IHRvIGZ1enogYmVjYXVzZSB0aGV5IG5lZWQgcGh5c2ljYWwgQVNJQ3Mgb3IgUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4gTm93LCBteSB1bmRlcnN0YW5kaW5nIGlzIHRoYXQgTWVsbGFub3ggbWx4NSBpcyBhIHBoeXNpY2FsIE5JQy9TbWFydE5JQyBkcml2ZXIuIEl0JiMzOTtzIGJ1aWx0IGZvciBDb25uZWN0WCBoYXJkd2FyZSAoQ29ubmVjdFgtNCwgNSwgNiwgNywgZXRjLikuIEkga25vdyB0aGlzIGRyaXZlciByZXF1aXJlcyB0aGUgYWN0dWFsIE1lbGxhbm94IGhhcmR3YXJlLiBNeSBiaWdnZXN0IGNvbmNlcm4gcmlnaHQgbm93IGlzIHdoZXRoZXIgdGhpcyBgbWx4NWAgaXMgZW11bGF0ZWQgb3IgYWNjZXNzaWJsZSB0aHJvdWdoIGEgdmlydHVhbCBidXMgaW4gYSB3YXkgdGhhdCB3b3VsZCBtYWtlIGZ1enppbmcgZmVhc2libGUuIEkmIzM5O20gcHJldHR5IHN1cmUgaXQmIzM5O3MgYSBzdGFuZGFyZCBQQ0kgZGV2aWNlIGRyaXZlciBsb2NhdGVkIGluIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYCwgd2hpY2ggc3Ryb25nbHkgc3VnZ2VzdHMgKnBoeXNpY2FsKiBoYXJkd2FyZSBkZXBlbmRlbmN5LgoKSSBuZWVkIHRvIGNvbmZpcm0gdGhpcy4gSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSBrZXJuZWwgc291cmNlIHRyZWUgYW5kIHRoZSBjb25maWcgb3B0aW9ucyB0byBzZWUgaWYgdGhlcmUmIzM5O3MgYW55IG1lbnRpb24gb2YgbW9ja2luZyBvciB2aXJ0dWFsaXphdGlvbiBzdXBwb3J0IGZvciBgbWx4NWAuIEl0JiMzOTtzIGNydWNpYWwgdG8gdW5kZXJzdGFuZCBpZiB0aGlzIGRyaXZlciByZWxpZXMgKnB1cmVseSogb24gcGh5c2ljYWwgaGFyZHdhcmUsIG9yIGlmIHRoZXJlJiMzOTtzIHNvbWUgcG9zc2liaWxpdHkgb2Ygc29mdHdhcmUgZW11bGF0aW9uIG9yIGEgdmlydHVhbCBidXMgaW50ZXJmYWNlIHRoYXQgd291bGQgYWxsb3cgdXMgdG8gZWZmZWN0aXZlbHkgZnV6eiBpdC4gSWYgaXQmIzM5O3MgdGhlIGZvcm1lciwgdGhlbiB3ZSBtaWdodCBoYXZlIGEgZGVhZCBlbmQgaW4gdGVybXMgb2YgZnV6emluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAyMDo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtDT05GSUdfTUxYNV9DT1JFJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGU9Nz1zdWJkaXItY2NmbGFncy15ICYjNDM7PSAtSSQoc3JjKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlLTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGU6OTpvYmotJChDT05GSUdfTUxYNV9DT1JFKSAmIzQzOz0gbWx4NV9jb3JlLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZS0xMC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGU9MTQ9bWx4NV9jb3JlLXkgOj1cdG1haW4ubyBjbWQubyBkZWJ1Z2ZzLm8gZncubyBlcS5vIHVhci5vIHBhZ2VhbGxvYy5vIFxcXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlLTI1LSNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZToyNjptbHg1X2NvcmUtJChDT05GSUdfTUxYNV9DT1JFX0VOKSAmIzQzOz0gZW4vcnF0Lm8gZW4vdGlyLm8gZW4vcnNzLm8gZW4vcnhfcmVzLm8gXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZS0yNy1cdFx0ZW4vY2hhbm5lbHMubyBlbl9tYWluLm8gZW5fY29tbW9uLm8gZW5fZnMubyBlbl9ldGh0b29sLm8gXFxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGU9Mzk9bWx4NV9jb3JlLSQoQ09ORklHX01MWDVfRU5fUlhORkMpICAgICYjNDM7PSBlbl9mc19ldGh0b29sLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZTo0MDptbHg1X2NvcmUtJChDT05GSUdfTUxYNV9DT1JFX0VOX0RDQikgJiM0Mzs9IGVuX2RjYm5sLm8gZW4vcG9ydF9idWZmZXIub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlLTQxLW1seDVfY29yZS0kKENPTkZJR19QQ0lfSFlQRVJWX0lOVEVSRkFDRSkgJiM0Mzs9IGVuL2h2X3ZoY2Ffc3RhdHMub1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZT05Mz1tbHg1X2NvcmUtJChDT05GSUdfUENJX0hZUEVSVl9JTlRFUkZBQ0UpICYjNDM7PSBsaWIvaHYubyBsaWIvaHZfdmhjYS5vXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlLTk3LSNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZTo5ODptbHg1X2NvcmUtJChDT05GSUdfTUxYNV9DT1JFX0lQT0lCKSAmIzQzOz0gaXBvaWIvaXBvaWIubyBpcG9pYi9ldGh0b29sLm8gaXBvaWIvaXBvaWJfdmxhbi5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGUtOTktXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Rldi5jPTU3PWJvb2wgbWx4NV9ldGhfc3VwcG9ydGVkKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZGV2LmMtNTgte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Rldi5jOjU5Olx0aWYgKCFJU19FTkFCTEVEKENPTkZJR19NTFg1X0NPUkVfRU4pKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Rldi5jLTYwLVx0XHRyZXR1cm4gZmFsc2U7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuLmg9OTA1PXN0cnVjdCBtbHg1ZV9wcml2IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4uaC05MTAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4uaDo5MTE6I2lmZGVmIENPTkZJR19NTFg1X0NPUkVfRU5fRENCXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4uaC05MTItXHRzdHJ1Y3QgbWx4NWVfZGNieF9kcCAgICAgICBkY2J4X2RwO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi5oLTk1Ny1cdHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvIG5pY19pbmZvO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuLmg6OTU4OiNpZmRlZiBDT05GSUdfTUxYNV9DT1JFX0VOX0RDQlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuLmgtOTU5LVx0c3RydWN0IG1seDVlX2RjYnggICAgICAgICAgZGNieDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vZGNibmwuaC02LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL2RjYm5sLmg6NzojaWZkZWYgQ09ORklHX01MWDVfQ09SRV9FTl9EQ0JcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9kY2JubC5oLTgtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3NlbHEuYz0xMzI9dm9pZCBtbHg1ZV9zZWxxX2NhbmNlbChzdHJ1Y3QgbWx4NWVfc2VscSAqc2VscSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vc2VscS5jLTEzOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9zZWxxLmM6MTQwOiNpZmRlZiBDT05GSUdfTUxYNV9DT1JFX0VOX0RDQlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3NlbHEuYy0xNDEtc3RhdGljIGludCBtbHg1ZV9nZXRfZHNjcF91cChzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vc2VscS5jPTE1ND1zdGF0aWMgaW50IG1seDVlX2dldF91cChzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9zZWxxLmMtMTU1LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9zZWxxLmM6MTU2OiNpZmRlZiBDT05GSUdfTUxYNV9DT1JFX0VOX0RDQlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3NlbHEuYy0xNTctXHRpZiAoUkVBRF9PTkNFKHByaXYtXHUwMDNlZGNieF9kcC50cnVzdF9zdGF0ZSkgPT0gTUxYNV9RUFRTX1RSVVNUX0RTQ1ApXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3J4LmM9MjQ4ND1pbnQgbWx4NWVfcG9sbF9yeF9jcShzdHJ1Y3QgbWx4NWVfY3EgKmNxLCBpbnQgYnVkZ2V0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9yeC5jLTI1MTYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fcnguYzoyNTE3OiNpZmRlZiBDT05GSUdfTUxYNV9DT1JFX0lQT0lCXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fcnguYy0yNTE4LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9yeC5jPTI2NDE9Y29uc3Qgc3RydWN0IG1seDVlX3J4X2hhbmRsZXJzIG1seDVpX3J4X2hhbmRsZXJzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9yeC5jLTI2NDQtfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9yeC5jOjI2NDU6I2VuZGlmIC8qIENPTkZJR19NTFg1X0NPUkVfSVBPSUIgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9yeC5jLTI2NDYtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3RjLmM9MTAwNz1zdGF0aWMgaW50IG1seDVlX2hhaXJwaW5fZ2V0X3ByaW8oc3RydWN0IG1seDVlX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3RjLmMtMTAxNC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl90Yy5jOjEwMTU6I2lmZGVmIENPTkZJR19NTFg1X0NPUkVfRU5fRENCXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fdGMuYy0xMDE2LVx0aWYgKHByaXYtXHUwMDNlZGNieF9kcC50cnVzdF9zdGF0ZSAhPSBNTFg1X1FQVFNfVFJVU1RfUENQKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3R4LmM9ODcyPXZvaWQgbWx4NWVfZnJlZV90eHFzcV9kZXNjcyhzdHJ1Y3QgbWx4NWVfdHhxc3EgKnNxKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl90eC5jLTkxNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl90eC5jOjkxODojaWZkZWYgQ09ORklHX01MWDVfQ09SRV9JUE9JQlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3R4LmMtOTE5LXN0YXRpYyBpbmxpbmUgdm9pZFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9pcG9pYi9pcG9pYi5oLTM1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2lwb2liL2lwb2liLmg6MzY6I2lmZGVmIENPTkZJR19NTFg1X0NPUkVfSVBPSUJcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9pcG9pYi9pcG9pYi5oLTM3LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9pcG9pYi9pcG9pYi5oPTEzMD12b2lkIG1seDVpX3BhcmVudF9wdXQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvaXBvaWIvaXBvaWIuaC0xMzEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvaXBvaWIvaXBvaWIuaDoxMzI6I2VuZGlmIC8qIENPTkZJR19NTFg1X0NPUkVfSVBPSUIgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9pcG9pYi9pcG9pYi5oLTEzMy0jZW5kaWYgLyogX19NTFg1RV9JUE9CX0hfXyAqL1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvc2QuaD0yND12b2lkIG1seDVfc2RfcHV0X2FkZXYoc3RydWN0IGF1eGlsaWFyeV9kZXZpY2UgKmFjdHVhbF9hZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvc2QuaC0yNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvc2QuaDoyNzojaWZkZWYgQ09ORklHX01MWDVfQ09SRV9FTlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9zZC5oLTI4LWJvb2wgbWx4NV9zZF9pc19zdXBwb3J0ZWQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9zZC5oPTM3PXZvaWQgbWx4NV9zZF9jbGVhbnVwKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9zZC5oLTM4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9zZC5oOjM5OiNpZmRlZiBDT05GSUdfTUxYNV9DT1JFX0VOXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL3NkLmgtNDAtc3RydWN0IG1seDVfZGV2Y29tX2NvbXBfZGV2ICptbHg1X3NkX2dldF9kZXZjb20oc3RydWN0IG1seDVfY29yZV9kZXYgKmRldik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21seDVfY29yZS5oPTM5Nj12b2lkIG1seDVfZndfdmVyc2lvbl9xdWVyeShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB1MzIgKnJ1bm5pbmdfdmVyLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tbHg1X2NvcmUuaC0zOTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWx4NV9jb3JlLmg6Mzk5OiNpZmRlZiBDT05GSUdfTUxYNV9DT1JFX0VOXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWx4NV9jb3JlLmgtNDAwLWludCBtbHg1ZV9pbml0KHZvaWQpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDIwOjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkyMDMKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgaXNzdWU6CgoqKktjb25maWcgQ2hlY2sgZm9yIE1MWDVfQ09SRSoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gbWFrZSBzdXJlIGBNTFg1X0NPUkVgIGlzIHByb3Blcmx5IGNvbmZpZ3VyZWQuIE15IGZpcnN0IHRob3VnaHQgaXMgdG8gZGl2ZSBpbnRvIHRoZSBLY29uZmlnIGZpbGVzLiBJIG5lZWQgdG8gcXVpY2tseSB2ZXJpZnkgaXRzIGRlcGVuZGVuY2llcyBhbmQgcG90ZW50aWFsIHNldHRpbmdzLiBJcyBpdCBlbmFibGVkIGFzIGEgbW9kdWxlIG9yIGJ1aWx0LWluPyBBcmUgdGhlcmUgYW55IHJlbGV2YW50IGNvbmRpdGlvbmFscyBJIG5lZWQgdG8gYmUgYXdhcmUgb2Y/IEFyZSB0aGVyZSBvdGhlciBmZWF0dXJlcyBpdCBpbXBhY3RzIG9yIHRoYXQgZGVwZW5kIG9uIGl0PyBJJiMzOTtsbCBuZWVkIHRvIGNvbmZpcm0gdGhlIGRlZmF1bHQgY29uZmlndXJhdGlvbiBhbmQgd2hldGhlciBhbnkgb3ZlcnJpZGluZyBvcHRpb25zIGFyZSBwcmVzZW50IHRoYXQgbWlnaHQgYmUgaW5mbHVlbmNpbmcgaXRzIGJlaGF2aW9yLiBTcGVjaWZpY2FsbHksIEkmIzM5O20gbG9va2luZyBmb3Igd2hlcmUgaXQmIzM5O3MgZGVmaW5lZCwgaXRzIHJlbGF0aW9uc2hpcHMgdG8gb3RoZXIgb3B0aW9ucywgYW5kIGFueSBhc3NvY2lhdGVkIHN5bWJvbHMgb3IgaGVscCB0ZXh0IHRoYXQgbWlnaHQgc2hlZCBsaWdodCBvbiBpdHMgY3VycmVudCBzdGF0ZS4gVGltZSB0byBnZXQgaW50byB0aGUgZGV0YWlscyBhbmQgbWFrZSBzdXJlIEkmIzM5O20gbm90IG1pc3NpbmcgYW55dGhpbmcgb2J2aW91cyEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAyMDo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTUxYNV9DT1JFJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnLTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZzo2OmNvbmZpZyBNTFg1X0NPUkVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnLTctXHR0cmlzdGF0ZSBcJiMzNDtNZWxsYW5veCA1dGggZ2VuZXJhdGlvbiBuZXR3b3JrIGFkYXB0ZXJzIChDb25uZWN0WCBzZXJpZXMpIGNvcmUgZHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWc9MTk9Y29uZmlnIE1MWDVfRlBHQVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnLTI4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWc6Mjk6Y29uZmlnIE1MWDVfQ09SRV9FTlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWctMzAtXHRib29sIFwmIzM0O01lbGxhbm94IDV0aCBnZW5lcmF0aW9uIG5ldHdvcmsgYWRhcHRlcnMgKENvbm5lY3RYIHNlcmllcykgRXRoZXJuZXQgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnPTExMj1jb25maWcgTUxYNV9UQ19TQU1QTEVcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZy0xMjQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZzoxMjU6Y29uZmlnIE1MWDVfQ09SRV9FTl9EQ0JcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnLTEyNi1cdGJvb2wgXCYjMzQ7RGF0YSBDZW50ZXIgQnJpZGdpbmcgKERDQikgU3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnLTEzNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnOjEzNzpjb25maWcgTUxYNV9DT1JFX0lQT0lCXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZy0xMzgtXHRib29sIFwmIzM0O01lbGxhbm94IDV0aCBnZW5lcmF0aW9uIG5ldHdvcmsgYWRhcHRlcnMgKGNvbm5lY3RYIHNlcmllcykgSVBvSUIgb2ZmbG9hZHMgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDIwOjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk5MTEKCQkJCQkJCW91dHB1dDogMTEyCgkJCQkJCQl0aG91Z2h0czogMzg3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IFRyaWFnZSBEZWNpc2lvbjogTm90IFdvcnRoIEZ1enppbmcqKgoKT2theSwgbGV0JiMzOTtzIHdhbGsgdGhyb3VnaCB0aGlzLiBJIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgcGF0Y2ggc2VyaWVzIGlzIHdvcnRoIHRoZSBlZmZvcnQgb2YgZnV6emluZy4gRmlyc3QsIEkmIzM5O20gY2hlY2tpbmcgU2VjdGlvbiAyIG9mIHRoZSB0cmlhZ2UgcGhpbG9zb3BoeS4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIGxvb2tpbmcgYXQgd2hlbiB3ZSBzaG91bGQgZmxhZyBzb21ldGhpbmcgYXMgYFdvcnRoRnV6emluZz1mYWxzZWAuIFRoZSByZWxldmFudCBjb25kaXRpb24gaGVyZSBpczogJiMzNDtTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUuJiMzNDsgVGhhdCBtZWFucyBjb2RlIHRoYXQsIGZvciBhbGwgaW50ZW50cyBhbmQgcHVycG9zZXMsIGNhbm5vdCBiZSBleGVjdXRlZCBpbiBvdXIgc3RhbmRhcmQgZnV6emluZyBlbnZpcm9ubWVudHMgKFFFTVUsIEdDRSkgYmVjYXVzZSBpdCBkZXBlbmRzIG9uIHNwZWNpZmljIGhhcmR3YXJlLgoKUmlnaHQsIHNvLCB0aGUgTWVsbGFub3ggYG1seDVgIGRyaXZlci4uLiBpdCYjMzk7cyBhIHZlbmRvci1zcGVjaWZpYyBTbWFydE5JQyBkcml2ZXIsIHNwZWNpZmljYWxseSB0aGUgQ29ubmVjdFggc2VyaWVzLiBUaGVzZSBhZGFwdGVycyByZXF1aXJlIHBoeXNpY2FsIE1lbGxhbm94IGhhcmR3YXJlIG9yIEFTSUMgdGhhdCBpc24mIzM5O3QgZW11bGF0ZWQgaW4gdGhlIHR5cGljYWwgUUVNVSBvciBHb29nbGUgQ29tcHV0ZSBFbmdpbmUgc2V0dXBzIHdlJiMzOTtyZSB1c2luZyBmb3IgZnV6emluZy4gTm8gd2F5IGFyb3VuZCB0aGF0LgoKTm93LCBsZXQmIzM5O3MgbG9vayBhdCB0aGUgYWN0dWFsIGNvZGUgY2hhbmdlcy4gSSBzZWUgdGhlIG1vZGlmaWNhdGlvbnMgYXJlIGxpbWl0ZWQgdG8gYGRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9yZXAuY2AsIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fcmVwLmhgLCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Vzdy9kZXZsaW5rX3BvcnQuY2AsIGFuZCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Vzd2l0Y2guaGAuICBUaGlzIGlzIGFsbCBpbnNpZGUgdGhlIGBtbHg1X2NvcmVgIGRyaXZlciwgYW5kIHNwZWNpZmljYWxseSB0YXJnZXRzIHN3aXRjaGRldiByZXByZXNlbnRvciBhbmQgZGV2bGluayBwb3J0IGhlYWx0aCByZXBvcnRlciBoYW5kbGluZyBmb3IgdGhlIE1lbGxhbm94IGVzd2l0Y2guCgpBbHJpZ2h0LCB0aGF0JiMzOTtzIHByZXR0eSBjbGVhci4gR2l2ZW4gdGhvc2Ugc3BlY2lmaWMgZmlsZSBsb2NhdGlvbnMsIHRoaXMgY29kZSBpcyAqc3RydWN0dXJhbGx5KiB1bnJlYWNoYWJsZSBpbiBvdXIgc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMuIFdlJiMzOTtkIG5lZWQgYSBwaHlzaWNhbCBNZWxsYW5veCBDb25uZWN0WCBjYXJkIHRvIGV2ZW4gdG91Y2ggaXQsIHdoaWNoIGlzIGJleW9uZCBvdXIgY3VycmVudCBzY29wZS4KClRoZXJlZm9yZSwgYFdvcnRoRnV6emluZz1mYWxzZWAuCgpOb3csIGJlZm9yZSBJIGNhbGwgYHNldC1yZXN1bHRzYCwgbGV0JiMzOTtzIGp1c3QgY29uZmlybSB0aGUgcmVxdWlyZW1lbnRzIGFyZSBtZXQuIFRoZSBgV29ydGhGdXp6aW5nYCBpcyBzZXQgYXMgSSBuZWVkLCBhbmQgdGhlIGBGb2N1c1N5bWJvbHNgIGFuZCBgRW5hYmxlQ29uZmlnc2AgYXJlIGVtcHR5IGFzIHRoZXkgc2hvdWxkIGJlIGZvciB0aGlzIHNjZW5hcmlvLiAgVGhlIHJlYXNvbmluZyBpcyBjb25jaXNlOiBpdCYjMzk7cyBNZWxsYW5veCBoYXJkd2FyZS1zcGVjaWZpYyBhbmQgbm90IGVtdWxhdGVkLgoKWXVwLCBldmVyeXRoaW5nIGNoZWNrcyBvdXQuIFRpbWUgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDIwOjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgbW9kaWZpZWQgY29kZSBpcyBleGNsdXNpdmVseSB3aXRoaW4gdGhlIE1lbGxhbm94IG1seDUgZHJpdmVyIChkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvKSwgd2hpY2ggZHJpdmVzIHBoeXNpY2FsIE1lbGxhbm94IENvbm5lY3RYIG5ldHdvcmsgYWRhcHRlcnMgLyBTbWFydE5JQ3MuIEJlY2F1c2UgaXQgcmVxdWlyZXMgcGh5c2ljYWwgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBzeXprYWxsZXIgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIG1vZGlmaWVkIGNvZGUgaXMgZXhjbHVzaXZlbHkgd2l0aGluIHRoZSBNZWxsYW5veCBtbHg1IGRyaXZlciAoZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlLyksIHdoaWNoIGRyaXZlcyBwaHlzaWNhbCBNZWxsYW5veCBDb25uZWN0WCBuZXR3b3JrIGFkYXB0ZXJzIC8gU21hcnROSUNzLiBCZWNhdXNlIGl0IHJlcXVpcmVzIHBoeXNpY2FsIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3Igc3l6a2FsbGVyIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDIwOjQzPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOS0wNlQyMDo0MzozMy45MTI4ODQzNDRaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODExODg5MjgxNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIG1vZGlmaWVkIGNvZGUgaXMgZXhjbHVzaXZlbHkgd2l0aGluIHRoZSBNZWxsYW5veCBtbHg1IGRyaXZlciAoZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlLyksIHdoaWNoIGRyaXZlcyBwaHlzaWNhbCBNZWxsYW5veCBDb25uZWN0WCBuZXR3b3JrIGFkYXB0ZXJzIC8gU21hcnROSUNzLiBCZWNhdXNlIGl0IHJlcXVpcmVzIHBoeXNpY2FsIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3Igc3l6a2FsbGVyIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQyMDo0MzozMy45MTI4OTA3NzNaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYzMzk0NTc2OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGM1ZGRkNzM5ZmIzMDkxZDJjNDMwZmRiY2EzMWZjYTBmMjZlNDcyODFcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFN1biBTZXAgNiAyMDo0MzozMyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fcmVwLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fcmVwLmNcXG5pbmRleCBjZTc2NTY5MmZkMTliLi44OGExNzBlNDBiZDkzIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9yZXAuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9yZXAuY1xcbkBAIC01Niw3ICs1Niw2IEBAXFxuICNpbmNsdWRlIFxcXCJsaWIvdnhsYW4uaFxcXCJcXG4gI2RlZmluZSBDUkVBVEVfVFJBQ0VfUE9JTlRTXFxuICNpbmNsdWRlIFxcXCJkaWFnL2VuX3JlcF90cmFjZXBvaW50LmhcXFwiXFxuLSNpbmNsdWRlIFxcXCJkaWFnL3JlcG9ydGVyX3ZuaWMuaFxcXCJcXG4gI2luY2x1ZGUgXFxcImVuX2FjY2VsL2lwc2VjLmhcXFwiXFxuICNpbmNsdWRlIFxcXCJlbi90Yy9pbnRfcG9ydC5oXFxcIlxcbiAjaW5jbHVkZSBcXFwiZW4vcHRwLmhcXFwiXFxuQEAgLTE0MzksNTEgKzE0MzgsNiBAQCBzdGF0aWMgdW5zaWduZWQgaW50IG1seDVlX3VsX3JlcF9zdGF0c19ncnBzX251bShzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdilcXG4gXFx0cmV0dXJuIEFSUkFZX1NJWkUobWx4NWVfdWxfcmVwX3N0YXRzX2dycHMpO1xcbiB9XFxuIFxcbi1zdGF0aWMgaW50XFxuLW1seDVlX3JlcF92bmljX3JlcG9ydGVyX2RpYWdub3NlKHN0cnVjdCBkZXZsaW5rX2hlYWx0aF9yZXBvcnRlciAqcmVwb3J0ZXIsXFxuLVxcdFxcdFxcdFxcdCBzdHJ1Y3QgZGV2bGlua19mbXNnICpmbXNnLFxcbi1cXHRcXHRcXHRcXHQgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxcbi17XFxuLVxcdHN0cnVjdCBtbHg1ZV9yZXBfcHJpdiAqcnByaXYgPSBkZXZsaW5rX2hlYWx0aF9yZXBvcnRlcl9wcml2KHJlcG9ydGVyKTtcXG4tXFx0c3RydWN0IG1seDVfZXN3aXRjaF9yZXAgKnJlcCA9IHJwcml2LVxcdTAwM2VyZXA7XFxuLVxcbi1cXHRtbHg1X3JlcG9ydGVyX3ZuaWNfZGlhZ25vc2VfY291bnRlcnMocmVwLVxcdTAwM2Vlc3ctXFx1MDAzZWRldiwgZm1zZywgcmVwLVxcdTAwM2V2cG9ydCxcXG4tXFx0XFx0XFx0XFx0XFx0ICAgICB0cnVlKTtcXG4tXFx0cmV0dXJuIDA7XFxuLX1cXG4tXFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZGV2bGlua19oZWFsdGhfcmVwb3J0ZXJfb3BzIG1seDVfcmVwX3ZuaWNfcmVwb3J0ZXJfb3BzID0ge1xcbi1cXHQubmFtZSA9IFxcXCJ2bmljXFxcIixcXG4tXFx0LmRpYWdub3NlID0gbWx4NWVfcmVwX3ZuaWNfcmVwb3J0ZXJfZGlhZ25vc2UsXFxuLX07XFxuLVxcbi1zdGF0aWMgdm9pZCBtbHg1ZV9yZXBfdm5pY19yZXBvcnRlcl9jcmVhdGUoc3RydWN0IG1seDVlX3ByaXYgKnByaXYsXFxuLVxcdFxcdFxcdFxcdFxcdCAgIHN0cnVjdCBkZXZsaW5rX3BvcnQgKmRsX3BvcnQpXFxuLXtcXG4tXFx0c3RydWN0IG1seDVlX3JlcF9wcml2ICpycHJpdiA9IHByaXYtXFx1MDAzZXBwcml2O1xcbi1cXHRzdHJ1Y3QgZGV2bGlua19oZWFsdGhfcmVwb3J0ZXIgKnJlcG9ydGVyO1xcbi1cXG4tXFx0cmVwb3J0ZXIgPSBkZXZsX3BvcnRfaGVhbHRoX3JlcG9ydGVyX2NyZWF0ZShkbF9wb3J0LFxcbi1cXHRcXHRcXHRcXHRcXHRcXHQgICAgXFx1MDAyNm1seDVfcmVwX3ZuaWNfcmVwb3J0ZXJfb3BzLFxcbi1cXHRcXHRcXHRcXHRcXHRcXHQgICAgcnByaXYpO1xcbi1cXHRpZiAoSVNfRVJSKHJlcG9ydGVyKSkge1xcbi1cXHRcXHRtbHg1X2NvcmVfZXJyKHByaXYtXFx1MDAzZW1kZXYsXFxuLVxcdFxcdFxcdCAgICAgIFxcXCJGYWlsZWQgdG8gY3JlYXRlIHJlcHJlc2VudG9yIHZuaWMgcmVwb3J0ZXIsIGVyciA9ICVwZVxcXFxuXFxcIixcXG4tXFx0XFx0XFx0ICAgICAgcmVwb3J0ZXIpO1xcbi1cXHRcXHRyZXR1cm47XFxuLVxcdH1cXG4tXFxuLVxcdHJwcml2LVxcdTAwM2VyZXBfdm5pY19yZXBvcnRlciA9IHJlcG9ydGVyO1xcbi19XFxuLVxcbi1zdGF0aWMgdm9pZCBtbHg1ZV9yZXBfdm5pY19yZXBvcnRlcl9kZXN0cm95KHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2KVxcbi17XFxuLVxcdHN0cnVjdCBtbHg1ZV9yZXBfcHJpdiAqcnByaXYgPSBwcml2LVxcdTAwM2VwcHJpdjtcXG4tXFxuLVxcdGlmICghSVNfRVJSX09SX05VTEwocnByaXYtXFx1MDAzZXJlcF92bmljX3JlcG9ydGVyKSlcXG4tXFx0XFx0ZGV2bF9oZWFsdGhfcmVwb3J0ZXJfZGVzdHJveShycHJpdi1cXHUwMDNlcmVwX3ZuaWNfcmVwb3J0ZXIpO1xcbi19XFxuLVxcbiBzdGF0aWMgY29uc3Qgc3RydWN0IG1seDVlX3Byb2ZpbGUgbWx4NWVfcmVwX3Byb2ZpbGUgPSB7XFxuIFxcdC5pbml0XFx0XFx0XFx0PSBtbHg1ZV9pbml0X3JlcCxcXG4gXFx0LmNsZWFudXBcXHRcXHQ9IG1seDVlX2NsZWFudXBfcmVwLFxcbkBAIC0xNjA3LDEwICsxNTYxLDggQEAgbWx4NWVfdnBvcnRfdmZfcmVwX2xvYWQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgc3RydWN0IG1seDVfZXN3aXRjaF9yZXAgKnJlcClcXG4gXFxuIFxcdGRsX3BvcnQgPSBtbHg1X2Vzd19vZmZsb2Fkc19kZXZsaW5rX3BvcnQoZGV2LVxcdTAwM2Vwcml2LmVzd2l0Y2gsXFxuIFxcdFxcdFxcdFxcdFxcdFxcdCBycHJpdi1cXHUwMDNlcmVwLVxcdTAwM2V2cG9ydCk7XFxuLVxcdGlmICghSVNfRVJSKGRsX3BvcnQpKSB7XFxuK1xcdGlmICghSVNfRVJSKGRsX3BvcnQpKVxcbiBcXHRcXHRTRVRfTkVUREVWX0RFVkxJTktfUE9SVChuZXRkZXYsIGRsX3BvcnQpO1xcbi1cXHRcXHRtbHg1ZV9yZXBfdm5pY19yZXBvcnRlcl9jcmVhdGUocHJpdiwgZGxfcG9ydCk7XFxuLVxcdH1cXG4gXFxuIFxcdGVyciA9IHJlZ2lzdGVyX25ldGRldihuZXRkZXYpO1xcbiBcXHRpZiAoZXJyKSB7XFxuQEAgLTE2MjMsNyArMTU3NSw2IEBAIG1seDVlX3Zwb3J0X3ZmX3JlcF9sb2FkKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHN0cnVjdCBtbHg1X2Vzd2l0Y2hfcmVwICpyZXApXFxuIFxcdHJldHVybiAwO1xcbiBcXG4gZXJyX2RldGFjaF9uZXRkZXY6XFxuLVxcdG1seDVlX3JlcF92bmljX3JlcG9ydGVyX2Rlc3Ryb3kocHJpdik7XFxuIFxcdG1seDVlX2RldGFjaF9uZXRkZXYobmV0ZGV2X3ByaXYobmV0ZGV2KSk7XFxuIGVycl9jbGVhbnVwX3Byb2ZpbGU6XFxuIFxcdHByaXYtXFx1MDAzZXByb2ZpbGUtXFx1MDAzZWNsZWFudXAocHJpdik7XFxuQEAgLTE2ODEsNyArMTYzMiw2IEBAIG1seDVlX3Zwb3J0X3JlcF91bmxvYWQoc3RydWN0IG1seDVfZXN3aXRjaF9yZXAgKnJlcClcXG4gXFx0fVxcbiBcXG4gXFx0dW5yZWdpc3Rlcl9uZXRkZXYobmV0ZGV2KTtcXG4tXFx0bWx4NWVfcmVwX3ZuaWNfcmVwb3J0ZXJfZGVzdHJveShwcml2KTtcXG4gXFx0bWx4NWVfZGV0YWNoX25ldGRldihwcml2KTtcXG4gXFx0cHJpdi1cXHUwMDNlcHJvZmlsZS1cXHUwMDNlY2xlYW51cChwcml2KTtcXG4gXFx0bWx4NWVfZGVzdHJveV9uZXRkZXYobmV0ZGV2KTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3JlcC5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3JlcC5oXFxuaW5kZXggNzA2NDBmYTFhZDdiYy4uYmNkN2I0ZTgxNGQwNiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fcmVwLmhcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fcmVwLmhcXG5AQCAtMTE4LDcgKzExOCw2IEBAIHN0cnVjdCBtbHg1ZV9yZXBfcHJpdiB7XFxuIFxcdHN0cnVjdCBydG5sX2xpbmtfc3RhdHM2NCBwcmV2X3ZmX3Zwb3J0X3N0YXRzO1xcbiBcXHRzdHJ1Y3QgbWx4NV9mbG93X2hhbmRsZSAqc2VuZF90b192cG9ydF9tZXRhX3J1bGU7XFxuIFxcdHN0cnVjdCByaGFzaHRhYmxlIHRjX2h0O1xcbi1cXHRzdHJ1Y3QgZGV2bGlua19oZWFsdGhfcmVwb3J0ZXIgKnJlcF92bmljX3JlcG9ydGVyO1xcbiB9O1xcbiBcXG4gc3RhdGljIGlubGluZVxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXN3L2RldmxpbmtfcG9ydC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Vzdy9kZXZsaW5rX3BvcnQuY1xcbmluZGV4IDM2YjAwYTg1NmJjMjEuLmZkYzk2MGVhNTMzMTggMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Vzdy9kZXZsaW5rX3BvcnQuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lc3cvZGV2bGlua19wb3J0LmNcXG5AQCAtNCw2ICs0LDI2IEBAXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9tbHg1L2RyaXZlci5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXFwiZXN3aXRjaC5oXFxcIlxcbiAjaW5jbHVkZSBcXFwiZGV2bGluay5oXFxcIlxcbisjaW5jbHVkZSBcXFwiZGlhZy9yZXBvcnRlcl92bmljLmhcXFwiXFxuK1xcbitzdGF0aWMgaW50XFxuK21seDVfZXN3X3JlcF92bmljX3JlcG9ydGVyX2RpYWdub3NlKHN0cnVjdCBkZXZsaW5rX2hlYWx0aF9yZXBvcnRlciAqcmVwb3J0ZXIsXFxuK1xcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgZGV2bGlua19mbXNnICpmbXNnLFxcbitcXHRcXHRcXHRcXHQgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxcbit7XFxuK1xcdHN0cnVjdCBtbHg1X3Zwb3J0ICp2cG9ydCA9IGRldmxpbmtfaGVhbHRoX3JlcG9ydGVyX3ByaXYocmVwb3J0ZXIpO1xcbitcXG4rXFx0bWx4NV9yZXBvcnRlcl92bmljX2RpYWdub3NlX2NvdW50ZXJzKHZwb3J0LVxcdTAwM2VkZXYsIGZtc2csIHZwb3J0LVxcdTAwM2V2cG9ydCxcXG4rXFx0XFx0XFx0XFx0XFx0ICAgICB0cnVlKTtcXG4rXFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbitzdGF0aWMgY29uc3RcXG4rc3RydWN0IGRldmxpbmtfaGVhbHRoX3JlcG9ydGVyX29wcyBtbHg1X2Vzd19yZXBfdm5pY19yZXBvcnRlcl9vcHMgPSB7XFxuK1xcdC5uYW1lID0gXFxcInZuaWNcXFwiLFxcbitcXHQuZGlhZ25vc2UgPSBtbHg1X2Vzd19yZXBfdm5pY19yZXBvcnRlcl9kaWFnbm9zZSxcXG4rfTtcXG4gXFxuIHN0YXRpYyB2b2lkXFxuIG1seDVfZXN3X2dldF9wb3J0X3BhcmVudF9pZChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBzdHJ1Y3QgbmV0ZGV2X3BoeXNfaXRlbV9pZCAqcHBpZClcXG5AQCAtMjIwLDYgKzI0MCw3IEBAIHN0YXRpYyB2b2lkIG1seDVfZXN3X2RldmxpbmtfcG9ydF9yZXNfdW5yZWdpc3RlcihzdHJ1Y3QgZGV2bGlua19wb3J0ICpkbF9wb3J0KVxcbiBcXG4gaW50IG1seDVfZXN3X29mZmxvYWRzX2RldmxpbmtfcG9ydF9yZWdpc3RlcihzdHJ1Y3QgbWx4NV9lc3dpdGNoICplc3csIHN0cnVjdCBtbHg1X3Zwb3J0ICp2cG9ydClcXG4ge1xcbitcXHRzdHJ1Y3QgZGV2bGlua19oZWFsdGhfcmVwb3J0ZXIgKnJlcG9ydGVyO1xcbiBcXHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2ID0gZXN3LVxcdTAwM2VkZXY7XFxuIFxcdGNvbnN0IHN0cnVjdCBkZXZsaW5rX3BvcnRfb3BzICpvcHM7XFxuIFxcdHN0cnVjdCBtbHg1X2RldmxpbmtfcG9ydCAqZGxfcG9ydDtcXG5AQCAtMjU1LDYgKzI3NiwxNiBAQCBpbnQgbWx4NV9lc3dfb2ZmbG9hZHNfZGV2bGlua19wb3J0X3JlZ2lzdGVyKHN0cnVjdCBtbHg1X2Vzd2l0Y2ggKmVzdywgc3RydWN0IG1seFxcbiBcXHRcXHRtbHg1X2NvcmVfZGJnKGRldiwgXFxcIkZhaWxlZCB0byByZWdpc3RlciBwb3J0IHJlc291cmNlczogJWRcXFxcblxcXCIsXFxuIFxcdFxcdFxcdCAgICAgIGVycik7XFxuIFxcbitcXHRyZXBvcnRlciA9IGRldmxfcG9ydF9oZWFsdGhfcmVwb3J0ZXJfY3JlYXRlKFxcbitcXHRcXHRcXHUwMDI2ZGxfcG9ydC1cXHUwMDNlZGxfcG9ydCwgXFx1MDAyNm1seDVfZXN3X3JlcF92bmljX3JlcG9ydGVyX29wcyxcXG4rXFx0XFx0dnBvcnQpO1xcbitcXHRpZiAoSVNfRVJSKHJlcG9ydGVyKSlcXG4rXFx0XFx0bWx4NV9jb3JlX2VycihkZXYsXFxuK1xcdFxcdFxcdCAgICAgIFxcXCJGYWlsZWQgdG8gY3JlYXRlIHZuaWMgaGVhbHRoIHJlcG9ydGVyIGZvciB2cG9ydCAlZDogJXBlXFxcXG5cXFwiLFxcbitcXHRcXHRcXHQgICAgICB2cG9ydF9udW0sIHJlcG9ydGVyKTtcXG4rXFx0ZWxzZVxcbitcXHRcXHRkbF9wb3J0LVxcdTAwM2V2bmljX3JlcG9ydGVyID0gcmVwb3J0ZXI7XFxuK1xcbiBcXHRyZXR1cm4gMDtcXG4gXFxuIHJhdGVfZXJyOlxcbkBAIC0yNjksNiArMzAwLDEyIEBAIHZvaWQgbWx4NV9lc3dfb2ZmbG9hZHNfZGV2bGlua19wb3J0X3VucmVnaXN0ZXIoc3RydWN0IG1seDVfdnBvcnQgKnZwb3J0KVxcbiBcXHRpZiAoIXZwb3J0LVxcdTAwM2VkbF9wb3J0KVxcbiBcXHRcXHRyZXR1cm47XFxuIFxcdGRsX3BvcnQgPSB2cG9ydC1cXHUwMDNlZGxfcG9ydDtcXG4rXFxuK1xcdGlmIChkbF9wb3J0LVxcdTAwM2V2bmljX3JlcG9ydGVyKSB7XFxuK1xcdFxcdGRldmxfaGVhbHRoX3JlcG9ydGVyX2Rlc3Ryb3koZGxfcG9ydC1cXHUwMDNldm5pY19yZXBvcnRlcik7XFxuK1xcdFxcdGRsX3BvcnQtXFx1MDAzZXZuaWNfcmVwb3J0ZXIgPSBOVUxMO1xcbitcXHR9XFxuK1xcbiBcXHRtbHg1X2Vzd19kZXZsaW5rX3BvcnRfcmVzX3VucmVnaXN0ZXIoXFx1MDAyNmRsX3BvcnQtXFx1MDAzZWRsX3BvcnQpO1xcbiBcXG4gXFx0ZGV2bF9yYXRlX2xlYWZfZGVzdHJveShcXHUwMDI2ZGxfcG9ydC1cXHUwMDNlZGxfcG9ydCk7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lc3dpdGNoLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXN3aXRjaC5oXFxuaW5kZXggYzY1NWY2ZThkYTFjZS4uOGIxZjkzYjEzZWE5YyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXN3aXRjaC5oXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Vzd2l0Y2guaFxcbkBAIC0xODksNiArMTg5LDcgQEAgc3RydWN0IG1seDVfdnBvcnQ7XFxuIHN0cnVjdCBtbHg1X2RldmxpbmtfcG9ydCB7XFxuIFxcdHN0cnVjdCBkZXZsaW5rX3BvcnQgZGxfcG9ydDtcXG4gXFx0c3RydWN0IG1seDVfdnBvcnQgKnZwb3J0O1xcbitcXHRzdHJ1Y3QgZGV2bGlua19oZWFsdGhfcmVwb3J0ZXIgKnZuaWNfcmVwb3J0ZXI7XFxuIH07XFxuIFxcbiBzdGF0aWMgaW5saW5lIHZvaWQgbWx4NV9kZXZsaW5rX3BvcnRfaW5pdChzdHJ1Y3QgbWx4NV9kZXZsaW5rX3BvcnQgKmRsX3BvcnQsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDIwOjQzOjM0LjU0NzczOTM4MloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6MTc0ODQwMTg0NTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIG1vZGlmaWVkIGNvZGUgaXMgZXhjbHVzaXZlbHkgd2l0aGluIHRoZSBNZWxsYW5veCBtbHg1IGRyaXZlciAoZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlLyksIHdoaWNoIGRyaXZlcyBwaHlzaWNhbCBNZWxsYW5veCBDb25uZWN0WCBuZXR3b3JrIGFkYXB0ZXJzIC8gU21hcnROSUNzLiBCZWNhdXNlIGl0IHJlcXVpcmVzIHBoeXNpY2FsIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3Igc3l6a2FsbGVyIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzXG50b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsXG5hbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLlxuXG4tIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOlxuICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkXG4gIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuXG4gIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCxcbiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLlxuXG4tIERPIE5PVCBCTElORExZIFRSVVNUIFwiTk8gRlVOQ1RJT05BTCBDSEFOR0VcIiAoTkZDSSkgT1IgXCJSRUZBQ1RPUklOR1wiIENMQUlNUzpcbiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyBcImNsZWFudXBzXCIsIFwicmVmYWN0b3JpbmdzXCIsIG9yIHN0YXRlXG4gIFwiTm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWRcIi4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuXG4gIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudFxuICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy5cbiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC5cblxuLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDpcbiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLFxuICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy5cbiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlclxuICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4yLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6XG5cbi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczpcbiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuXG4gICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pXG4gICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLlxuICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzXG4gICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy5cbiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuXG4tIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZTpcbiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOlxuICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZ1xuICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLlxuICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOlxuLSBDb3JlIFN1YnN5c3RlbXM6XG4gICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLFxuICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy5cbi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOlxuICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy5cbi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOlxuICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy5cbi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczpcbiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG40LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTilcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5XaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjpcblxuLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6XG4gIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzXG4gIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0XG4gIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLlxuICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgXCJmb2N1c2VkXCIsXG4gIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy5cblxuLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6XG4gIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50c1xuICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy5cblxuLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6XG4gIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2tcbiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuXG4gIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlclxuICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG41LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZTpcbi0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbi0gQ2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC5cbi0gU3RyaXAgYW55ICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGM1ZGRkNzM5ZmIzMDkxZDJjNDMwZmRiY2EzMWZjYTBmMjZlNDcyODFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIFNlcCA2IDIwOjQzOjMzIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3JlcC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3JlcC5jXG5pbmRleCBjZTc2NTY5MmZkMTliLi44OGExNzBlNDBiZDkzIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3JlcC5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fcmVwLmNcbkBAIC01Niw3ICs1Niw2IEBAXG4gI2luY2x1ZGUgXCJsaWIvdnhsYW4uaFwiXG4gI2RlZmluZSBDUkVBVEVfVFJBQ0VfUE9JTlRTXG4gI2luY2x1ZGUgXCJkaWFnL2VuX3JlcF90cmFjZXBvaW50LmhcIlxuLSNpbmNsdWRlIFwiZGlhZy9yZXBvcnRlcl92bmljLmhcIlxuICNpbmNsdWRlIFwiZW5fYWNjZWwvaXBzZWMuaFwiXG4gI2luY2x1ZGUgXCJlbi90Yy9pbnRfcG9ydC5oXCJcbiAjaW5jbHVkZSBcImVuL3B0cC5oXCJcbkBAIC0xNDM5LDUxICsxNDM4LDYgQEAgc3RhdGljIHVuc2lnbmVkIGludCBtbHg1ZV91bF9yZXBfc3RhdHNfZ3Jwc19udW0oc3RydWN0IG1seDVlX3ByaXYgKnByaXYpXG4gXHRyZXR1cm4gQVJSQVlfU0laRShtbHg1ZV91bF9yZXBfc3RhdHNfZ3Jwcyk7XG4gfVxuIFxuLXN0YXRpYyBpbnRcbi1tbHg1ZV9yZXBfdm5pY19yZXBvcnRlcl9kaWFnbm9zZShzdHJ1Y3QgZGV2bGlua19oZWFsdGhfcmVwb3J0ZXIgKnJlcG9ydGVyLFxuLVx0XHRcdFx0IHN0cnVjdCBkZXZsaW5rX2Ztc2cgKmZtc2csXG4tXHRcdFx0XHQgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuLXtcbi1cdHN0cnVjdCBtbHg1ZV9yZXBfcHJpdiAqcnByaXYgPSBkZXZsaW5rX2hlYWx0aF9yZXBvcnRlcl9wcml2KHJlcG9ydGVyKTtcbi1cdHN0cnVjdCBtbHg1X2Vzd2l0Y2hfcmVwICpyZXAgPSBycHJpdi1cdTAwM2VyZXA7XG4tXG4tXHRtbHg1X3JlcG9ydGVyX3ZuaWNfZGlhZ25vc2VfY291bnRlcnMocmVwLVx1MDAzZWVzdy1cdTAwM2VkZXYsIGZtc2csIHJlcC1cdTAwM2V2cG9ydCxcbi1cdFx0XHRcdFx0ICAgICB0cnVlKTtcbi1cdHJldHVybiAwO1xuLX1cbi1cbi1zdGF0aWMgY29uc3Qgc3RydWN0IGRldmxpbmtfaGVhbHRoX3JlcG9ydGVyX29wcyBtbHg1X3JlcF92bmljX3JlcG9ydGVyX29wcyA9IHtcbi1cdC5uYW1lID0gXCJ2bmljXCIsXG4tXHQuZGlhZ25vc2UgPSBtbHg1ZV9yZXBfdm5pY19yZXBvcnRlcl9kaWFnbm9zZSxcbi19O1xuLVxuLXN0YXRpYyB2b2lkIG1seDVlX3JlcF92bmljX3JlcG9ydGVyX2NyZWF0ZShzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdixcbi1cdFx0XHRcdFx0ICAgc3RydWN0IGRldmxpbmtfcG9ydCAqZGxfcG9ydClcbi17XG4tXHRzdHJ1Y3QgbWx4NWVfcmVwX3ByaXYgKnJwcml2ID0gcHJpdi1cdTAwM2VwcHJpdjtcbi1cdHN0cnVjdCBkZXZsaW5rX2hlYWx0aF9yZXBvcnRlciAqcmVwb3J0ZXI7XG4tXG4tXHRyZXBvcnRlciA9IGRldmxfcG9ydF9oZWFsdGhfcmVwb3J0ZXJfY3JlYXRlKGRsX3BvcnQsXG4tXHRcdFx0XHRcdFx0ICAgIFx1MDAyNm1seDVfcmVwX3ZuaWNfcmVwb3J0ZXJfb3BzLFxuLVx0XHRcdFx0XHRcdCAgICBycHJpdik7XG4tXHRpZiAoSVNfRVJSKHJlcG9ydGVyKSkge1xuLVx0XHRtbHg1X2NvcmVfZXJyKHByaXYtXHUwMDNlbWRldixcbi1cdFx0XHQgICAgICBcIkZhaWxlZCB0byBjcmVhdGUgcmVwcmVzZW50b3Igdm5pYyByZXBvcnRlciwgZXJyID0gJXBlXFxuXCIsXG4tXHRcdFx0ICAgICAgcmVwb3J0ZXIpO1xuLVx0XHRyZXR1cm47XG4tXHR9XG4tXG4tXHRycHJpdi1cdTAwM2VyZXBfdm5pY19yZXBvcnRlciA9IHJlcG9ydGVyO1xuLX1cbi1cbi1zdGF0aWMgdm9pZCBtbHg1ZV9yZXBfdm5pY19yZXBvcnRlcl9kZXN0cm95KHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2KVxuLXtcbi1cdHN0cnVjdCBtbHg1ZV9yZXBfcHJpdiAqcnByaXYgPSBwcml2LVx1MDAzZXBwcml2O1xuLVxuLVx0aWYgKCFJU19FUlJfT1JfTlVMTChycHJpdi1cdTAwM2VyZXBfdm5pY19yZXBvcnRlcikpXG4tXHRcdGRldmxfaGVhbHRoX3JlcG9ydGVyX2Rlc3Ryb3kocnByaXYtXHUwMDNlcmVwX3ZuaWNfcmVwb3J0ZXIpO1xuLX1cbi1cbiBzdGF0aWMgY29uc3Qgc3RydWN0IG1seDVlX3Byb2ZpbGUgbWx4NWVfcmVwX3Byb2ZpbGUgPSB7XG4gXHQuaW5pdFx0XHRcdD0gbWx4NWVfaW5pdF9yZXAsXG4gXHQuY2xlYW51cFx0XHQ9IG1seDVlX2NsZWFudXBfcmVwLFxuQEAgLTE2MDcsMTAgKzE1NjEsOCBAQCBtbHg1ZV92cG9ydF92Zl9yZXBfbG9hZChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBzdHJ1Y3QgbWx4NV9lc3dpdGNoX3JlcCAqcmVwKVxuIFxuIFx0ZGxfcG9ydCA9IG1seDVfZXN3X29mZmxvYWRzX2RldmxpbmtfcG9ydChkZXYtXHUwMDNlcHJpdi5lc3dpdGNoLFxuIFx0XHRcdFx0XHRcdCBycHJpdi1cdTAwM2VyZXAtXHUwMDNldnBvcnQpO1xuLVx0aWYgKCFJU19FUlIoZGxfcG9ydCkpIHtcbitcdGlmICghSVNfRVJSKGRsX3BvcnQpKVxuIFx0XHRTRVRfTkVUREVWX0RFVkxJTktfUE9SVChuZXRkZXYsIGRsX3BvcnQpO1xuLVx0XHRtbHg1ZV9yZXBfdm5pY19yZXBvcnRlcl9jcmVhdGUocHJpdiwgZGxfcG9ydCk7XG4tXHR9XG4gXG4gXHRlcnIgPSByZWdpc3Rlcl9uZXRkZXYobmV0ZGV2KTtcbiBcdGlmIChlcnIpIHtcbkBAIC0xNjIzLDcgKzE1NzUsNiBAQCBtbHg1ZV92cG9ydF92Zl9yZXBfbG9hZChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBzdHJ1Y3QgbWx4NV9lc3dpdGNoX3JlcCAqcmVwKVxuIFx0cmV0dXJuIDA7XG4gXG4gZXJyX2RldGFjaF9uZXRkZXY6XG4tXHRtbHg1ZV9yZXBfdm5pY19yZXBvcnRlcl9kZXN0cm95KHByaXYpO1xuIFx0bWx4NWVfZGV0YWNoX25ldGRldihuZXRkZXZfcHJpdihuZXRkZXYpKTtcbiBlcnJfY2xlYW51cF9wcm9maWxlOlxuIFx0cHJpdi1cdTAwM2Vwcm9maWxlLVx1MDAzZWNsZWFudXAocHJpdik7XG5AQCAtMTY4MSw3ICsxNjMyLDYgQEAgbWx4NWVfdnBvcnRfcmVwX3VubG9hZChzdHJ1Y3QgbWx4NV9lc3dpdGNoX3JlcCAqcmVwKVxuIFx0fVxuIFxuIFx0dW5yZWdpc3Rlcl9uZXRkZXYobmV0ZGV2KTtcbi1cdG1seDVlX3JlcF92bmljX3JlcG9ydGVyX2Rlc3Ryb3kocHJpdik7XG4gXHRtbHg1ZV9kZXRhY2hfbmV0ZGV2KHByaXYpO1xuIFx0cHJpdi1cdTAwM2Vwcm9maWxlLVx1MDAzZWNsZWFudXAocHJpdik7XG4gXHRtbHg1ZV9kZXN0cm95X25ldGRldihuZXRkZXYpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9yZXAuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9yZXAuaFxuaW5kZXggNzA2NDBmYTFhZDdiYy4uYmNkN2I0ZTgxNGQwNiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9yZXAuaFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3JlcC5oXG5AQCAtMTE4LDcgKzExOCw2IEBAIHN0cnVjdCBtbHg1ZV9yZXBfcHJpdiB7XG4gXHRzdHJ1Y3QgcnRubF9saW5rX3N0YXRzNjQgcHJldl92Zl92cG9ydF9zdGF0cztcbiBcdHN0cnVjdCBtbHg1X2Zsb3dfaGFuZGxlICpzZW5kX3RvX3Zwb3J0X21ldGFfcnVsZTtcbiBcdHN0cnVjdCByaGFzaHRhYmxlIHRjX2h0O1xuLVx0c3RydWN0IGRldmxpbmtfaGVhbHRoX3JlcG9ydGVyICpyZXBfdm5pY19yZXBvcnRlcjtcbiB9O1xuIFxuIHN0YXRpYyBpbmxpbmVcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXN3L2RldmxpbmtfcG9ydC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Vzdy9kZXZsaW5rX3BvcnQuY1xuaW5kZXggMzZiMDBhODU2YmMyMS4uZmRjOTYwZWE1MzMxOCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lc3cvZGV2bGlua19wb3J0LmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lc3cvZGV2bGlua19wb3J0LmNcbkBAIC00LDYgKzQsMjYgQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9tbHg1L2RyaXZlci5oXHUwMDNlXG4gI2luY2x1ZGUgXCJlc3dpdGNoLmhcIlxuICNpbmNsdWRlIFwiZGV2bGluay5oXCJcbisjaW5jbHVkZSBcImRpYWcvcmVwb3J0ZXJfdm5pYy5oXCJcbitcbitzdGF0aWMgaW50XG4rbWx4NV9lc3dfcmVwX3ZuaWNfcmVwb3J0ZXJfZGlhZ25vc2Uoc3RydWN0IGRldmxpbmtfaGVhbHRoX3JlcG9ydGVyICpyZXBvcnRlcixcbitcdFx0XHRcdCAgICBzdHJ1Y3QgZGV2bGlua19mbXNnICpmbXNnLFxuK1x0XHRcdFx0ICAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcbit7XG4rXHRzdHJ1Y3QgbWx4NV92cG9ydCAqdnBvcnQgPSBkZXZsaW5rX2hlYWx0aF9yZXBvcnRlcl9wcml2KHJlcG9ydGVyKTtcbitcbitcdG1seDVfcmVwb3J0ZXJfdm5pY19kaWFnbm9zZV9jb3VudGVycyh2cG9ydC1cdTAwM2VkZXYsIGZtc2csIHZwb3J0LVx1MDAzZXZwb3J0LFxuK1x0XHRcdFx0XHQgICAgIHRydWUpO1xuK1xuK1x0cmV0dXJuIDA7XG4rfVxuK1xuK3N0YXRpYyBjb25zdFxuK3N0cnVjdCBkZXZsaW5rX2hlYWx0aF9yZXBvcnRlcl9vcHMgbWx4NV9lc3dfcmVwX3ZuaWNfcmVwb3J0ZXJfb3BzID0ge1xuK1x0Lm5hbWUgPSBcInZuaWNcIixcbitcdC5kaWFnbm9zZSA9IG1seDVfZXN3X3JlcF92bmljX3JlcG9ydGVyX2RpYWdub3NlLFxuK307XG4gXG4gc3RhdGljIHZvaWRcbiBtbHg1X2Vzd19nZXRfcG9ydF9wYXJlbnRfaWQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgc3RydWN0IG5ldGRldl9waHlzX2l0ZW1faWQgKnBwaWQpXG5AQCAtMjIwLDYgKzI0MCw3IEBAIHN0YXRpYyB2b2lkIG1seDVfZXN3X2RldmxpbmtfcG9ydF9yZXNfdW5yZWdpc3RlcihzdHJ1Y3QgZGV2bGlua19wb3J0ICpkbF9wb3J0KVxuIFxuIGludCBtbHg1X2Vzd19vZmZsb2Fkc19kZXZsaW5rX3BvcnRfcmVnaXN0ZXIoc3RydWN0IG1seDVfZXN3aXRjaCAqZXN3LCBzdHJ1Y3QgbWx4NV92cG9ydCAqdnBvcnQpXG4ge1xuK1x0c3RydWN0IGRldmxpbmtfaGVhbHRoX3JlcG9ydGVyICpyZXBvcnRlcjtcbiBcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYgPSBlc3ctXHUwMDNlZGV2O1xuIFx0Y29uc3Qgc3RydWN0IGRldmxpbmtfcG9ydF9vcHMgKm9wcztcbiBcdHN0cnVjdCBtbHg1X2RldmxpbmtfcG9ydCAqZGxfcG9ydDtcbkBAIC0yNTUsNiArMjc2LDE2IEBAIGludCBtbHg1X2Vzd19vZmZsb2Fkc19kZXZsaW5rX3BvcnRfcmVnaXN0ZXIoc3RydWN0IG1seDVfZXN3aXRjaCAqZXN3LCBzdHJ1Y3QgbWx4XG4gXHRcdG1seDVfY29yZV9kYmcoZGV2LCBcIkZhaWxlZCB0byByZWdpc3RlciBwb3J0IHJlc291cmNlczogJWRcXG5cIixcbiBcdFx0XHQgICAgICBlcnIpO1xuIFxuK1x0cmVwb3J0ZXIgPSBkZXZsX3BvcnRfaGVhbHRoX3JlcG9ydGVyX2NyZWF0ZShcbitcdFx0XHUwMDI2ZGxfcG9ydC1cdTAwM2VkbF9wb3J0LCBcdTAwMjZtbHg1X2Vzd19yZXBfdm5pY19yZXBvcnRlcl9vcHMsXG4rXHRcdHZwb3J0KTtcbitcdGlmIChJU19FUlIocmVwb3J0ZXIpKVxuK1x0XHRtbHg1X2NvcmVfZXJyKGRldixcbitcdFx0XHQgICAgICBcIkZhaWxlZCB0byBjcmVhdGUgdm5pYyBoZWFsdGggcmVwb3J0ZXIgZm9yIHZwb3J0ICVkOiAlcGVcXG5cIixcbitcdFx0XHQgICAgICB2cG9ydF9udW0sIHJlcG9ydGVyKTtcbitcdGVsc2VcbitcdFx0ZGxfcG9ydC1cdTAwM2V2bmljX3JlcG9ydGVyID0gcmVwb3J0ZXI7XG4rXG4gXHRyZXR1cm4gMDtcbiBcbiByYXRlX2VycjpcbkBAIC0yNjksNiArMzAwLDEyIEBAIHZvaWQgbWx4NV9lc3dfb2ZmbG9hZHNfZGV2bGlua19wb3J0X3VucmVnaXN0ZXIoc3RydWN0IG1seDVfdnBvcnQgKnZwb3J0KVxuIFx0aWYgKCF2cG9ydC1cdTAwM2VkbF9wb3J0KVxuIFx0XHRyZXR1cm47XG4gXHRkbF9wb3J0ID0gdnBvcnQtXHUwMDNlZGxfcG9ydDtcbitcbitcdGlmIChkbF9wb3J0LVx1MDAzZXZuaWNfcmVwb3J0ZXIpIHtcbitcdFx0ZGV2bF9oZWFsdGhfcmVwb3J0ZXJfZGVzdHJveShkbF9wb3J0LVx1MDAzZXZuaWNfcmVwb3J0ZXIpO1xuK1x0XHRkbF9wb3J0LVx1MDAzZXZuaWNfcmVwb3J0ZXIgPSBOVUxMO1xuK1x0fVxuK1xuIFx0bWx4NV9lc3dfZGV2bGlua19wb3J0X3Jlc191bnJlZ2lzdGVyKFx1MDAyNmRsX3BvcnQtXHUwMDNlZGxfcG9ydCk7XG4gXG4gXHRkZXZsX3JhdGVfbGVhZl9kZXN0cm95KFx1MDAyNmRsX3BvcnQtXHUwMDNlZGxfcG9ydCk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Vzd2l0Y2guaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lc3dpdGNoLmhcbmluZGV4IGM2NTVmNmU4ZGExY2UuLjhiMWY5M2IxM2VhOWMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXN3aXRjaC5oXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXN3aXRjaC5oXG5AQCAtMTg5LDYgKzE4OSw3IEBAIHN0cnVjdCBtbHg1X3Zwb3J0O1xuIHN0cnVjdCBtbHg1X2RldmxpbmtfcG9ydCB7XG4gXHRzdHJ1Y3QgZGV2bGlua19wb3J0IGRsX3BvcnQ7XG4gXHRzdHJ1Y3QgbWx4NV92cG9ydCAqdnBvcnQ7XG4rXHRzdHJ1Y3QgZGV2bGlua19oZWFsdGhfcmVwb3J0ZXIgKnZuaWNfcmVwb3J0ZXI7XG4gfTtcbiBcbiBzdGF0aWMgaW5saW5lIHZvaWQgbWx4NV9kZXZsaW5rX3BvcnRfaW5pdChzdHJ1Y3QgbWx4NV9kZXZsaW5rX3BvcnQgKmRsX3BvcnQsXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQyMDo0MzozNC41NDc3NDE1MzJaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxMDY3OTk3MDkzNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBvdGVudGlhbCBmb3IgRnV6emluZyB0aGlzIE1lbGxhbm94IERyaXZlciBDb2RlKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyB0aGUgTWVsbGFub3ggbWx4NSBkcml2ZXIg4oCTIHNwZWNpZmljYWxseSB0aGVzZSBmaWxlczogYGVuX3JlcC5jYCwgYGVuX3JlcC5oYCwgYGRldmxpbmtfcG9ydC5jYCwgYW5kIGBlc3dpdGNoLmhgIHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9gIGRpcmVjdG9yeS4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiY2FuIHRoaXMgZXZlbiBiZSBmdXp6ZWQgZWZmZWN0aXZlbHk/XCIgSSBuZWVkIHRvIGRldGVybWluZSBpZiBpdCBtZWV0cyB0aGUgY3JpdGVyaWEgZm9yIGJlaW5nIFwiV29ydGhGdXp6aW5nPWZhbHNlXCIgYmFzZWQgb24gU2VjdGlvbiAyIG9mIHRoZSBndWlkZWxpbmVzIOKAkyBzcGVjaWZpY2FsbHkgdGhlIFwiU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlXCIgY2xhdXNlLlxuXG5UaGUgZ3VpZGVsaW5lcyBtZW50aW9uIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIGxpa2UgYG1seHN3YCwgYHBkc19jb3JlYCwgYHFlZGAsIGBpb25pY2AsIGFuZCBgYW1kZ3B1YCBhcyBleGFtcGxlcyBvZiBkcml2ZXJzIHRoYXQgYXJlIGRpZmZpY3VsdCB0byBmdXp6IGJlY2F1c2UgdGhleSBuZWVkIHBoeXNpY2FsIEFTSUNzIG9yIFBDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIE5vdywgbXkgdW5kZXJzdGFuZGluZyBpcyB0aGF0IE1lbGxhbm94IG1seDUgaXMgYSBwaHlzaWNhbCBOSUMvU21hcnROSUMgZHJpdmVyLiBJdCdzIGJ1aWx0IGZvciBDb25uZWN0WCBoYXJkd2FyZSAoQ29ubmVjdFgtNCwgNSwgNiwgNywgZXRjLikuIEkga25vdyB0aGlzIGRyaXZlciByZXF1aXJlcyB0aGUgYWN0dWFsIE1lbGxhbm94IGhhcmR3YXJlLiBNeSBiaWdnZXN0IGNvbmNlcm4gcmlnaHQgbm93IGlzIHdoZXRoZXIgdGhpcyBgbWx4NWAgaXMgZW11bGF0ZWQgb3IgYWNjZXNzaWJsZSB0aHJvdWdoIGEgdmlydHVhbCBidXMgaW4gYSB3YXkgdGhhdCB3b3VsZCBtYWtlIGZ1enppbmcgZmVhc2libGUuIEknbSBwcmV0dHkgc3VyZSBpdCdzIGEgc3RhbmRhcmQgUENJIGRldmljZSBkcml2ZXIgbG9jYXRlZCBpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2AsIHdoaWNoIHN0cm9uZ2x5IHN1Z2dlc3RzICpwaHlzaWNhbCogaGFyZHdhcmUgZGVwZW5kZW5jeS5cblxuSSBuZWVkIHRvIGNvbmZpcm0gdGhpcy4gSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSBrZXJuZWwgc291cmNlIHRyZWUgYW5kIHRoZSBjb25maWcgb3B0aW9ucyB0byBzZWUgaWYgdGhlcmUncyBhbnkgbWVudGlvbiBvZiBtb2NraW5nIG9yIHZpcnR1YWxpemF0aW9uIHN1cHBvcnQgZm9yIGBtbHg1YC4gSXQncyBjcnVjaWFsIHRvIHVuZGVyc3RhbmQgaWYgdGhpcyBkcml2ZXIgcmVsaWVzICpwdXJlbHkqIG9uIHBoeXNpY2FsIGhhcmR3YXJlLCBvciBpZiB0aGVyZSdzIHNvbWUgcG9zc2liaWxpdHkgb2Ygc29mdHdhcmUgZW11bGF0aW9uIG9yIGEgdmlydHVhbCBidXMgaW50ZXJmYWNlIHRoYXQgd291bGQgYWxsb3cgdXMgdG8gZWZmZWN0aXZlbHkgZnV6eiBpdC4gSWYgaXQncyB0aGUgZm9ybWVyLCB0aGVuIHdlIG1pZ2h0IGhhdmUgYSBkZWFkIGVuZCBpbiB0ZXJtcyBvZiBmdXp6aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NDcwLCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQzLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMjA6NDM6NDUuMjI3NzE2NDQ5WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExODgzNDg4MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJDT05GSUdfTUxYNV9DT1JFXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlPTc9c3ViZGlyLWNjZmxhZ3MteSArPSAtSSQoc3JjKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZS04LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZTo5Om9iai0kKENPTkZJR19NTFg1X0NPUkUpICs9IG1seDVfY29yZS5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlLTEwLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlPTE0PW1seDVfY29yZS15IDo9XFx0bWFpbi5vIGNtZC5vIGRlYnVnZnMubyBmdy5vIGVxLm8gdWFyLm8gcGFnZWFsbG9jLm8gXFxcXFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlLTI1LSNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGU6MjY6bWx4NV9jb3JlLSQoQ09ORklHX01MWDVfQ09SRV9FTikgKz0gZW4vcnF0Lm8gZW4vdGlyLm8gZW4vcnNzLm8gZW4vcnhfcmVzLm8gXFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZS0yNy1cXHRcXHRlbi9jaGFubmVscy5vIGVuX21haW4ubyBlbl9jb21tb24ubyBlbl9mcy5vIGVuX2V0aHRvb2wubyBcXFxcXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGU9Mzk9bWx4NV9jb3JlLSQoQ09ORklHX01MWDVfRU5fUlhORkMpICAgICs9IGVuX2ZzX2V0aHRvb2wub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZTo0MDptbHg1X2NvcmUtJChDT05GSUdfTUxYNV9DT1JFX0VOX0RDQikgKz0gZW5fZGNibmwubyBlbi9wb3J0X2J1ZmZlci5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlLTQxLW1seDVfY29yZS0kKENPTkZJR19QQ0lfSFlQRVJWX0lOVEVSRkFDRSkgKz0gZW4vaHZfdmhjYV9zdGF0cy5vXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGU9OTM9bWx4NV9jb3JlLSQoQ09ORklHX1BDSV9IWVBFUlZfSU5URVJGQUNFKSArPSBsaWIvaHYubyBsaWIvaHZfdmhjYS5vXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGUtOTctI1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZTo5ODptbHg1X2NvcmUtJChDT05GSUdfTUxYNV9DT1JFX0lQT0lCKSArPSBpcG9pYi9pcG9pYi5vIGlwb2liL2V0aHRvb2wubyBpcG9pYi9pcG9pYl92bGFuLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGUtOTktXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZGV2LmM9NTc9Ym9vbCBtbHg1X2V0aF9zdXBwb3J0ZWQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZGV2LmMtNTgte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9kZXYuYzo1OTpcXHRpZiAoIUlTX0VOQUJMRUQoQ09ORklHX01MWDVfQ09SRV9FTikpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Rldi5jLTYwLVxcdFxcdHJldHVybiBmYWxzZTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi5oPTkwNT1zdHJ1Y3QgbWx4NWVfcHJpdiB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4uaC05MTAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuLmg6OTExOiNpZmRlZiBDT05GSUdfTUxYNV9DT1JFX0VOX0RDQlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi5oLTkxMi1cXHRzdHJ1Y3QgbWx4NWVfZGNieF9kcCAgICAgICBkY2J4X2RwO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuLmgtOTU3LVxcdHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvIG5pY19pbmZvO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi5oOjk1ODojaWZkZWYgQ09ORklHX01MWDVfQ09SRV9FTl9EQ0JcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4uaC05NTktXFx0c3RydWN0IG1seDVlX2RjYnggICAgICAgICAgZGNieDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9kY2JubC5oLTYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL2RjYm5sLmg6NzojaWZkZWYgQ09ORklHX01MWDVfQ09SRV9FTl9EQ0JcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vZGNibmwuaC04LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3NlbHEuYz0xMzI9dm9pZCBtbHg1ZV9zZWxxX2NhbmNlbChzdHJ1Y3QgbWx4NWVfc2VscSAqc2VscSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9zZWxxLmMtMTM5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9zZWxxLmM6MTQwOiNpZmRlZiBDT05GSUdfTUxYNV9DT1JFX0VOX0RDQlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9zZWxxLmMtMTQxLXN0YXRpYyBpbnQgbWx4NWVfZ2V0X2RzY3BfdXAoc3RydWN0IG1seDVlX3ByaXYgKnByaXYsIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vc2VscS5jPTE1ND1zdGF0aWMgaW50IG1seDVlX2dldF91cChzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vc2VscS5jLTE1NS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3NlbHEuYzoxNTY6I2lmZGVmIENPTkZJR19NTFg1X0NPUkVfRU5fRENCXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3NlbHEuYy0xNTctXFx0aWYgKFJFQURfT05DRShwcml2LVxcdTAwM2VkY2J4X2RwLnRydXN0X3N0YXRlKSA9PSBNTFg1X1FQVFNfVFJVU1RfRFNDUClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9yeC5jPTI0ODQ9aW50IG1seDVlX3BvbGxfcnhfY3Eoc3RydWN0IG1seDVlX2NxICpjcSwgaW50IGJ1ZGdldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9yeC5jLTI1MTYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3J4LmM6MjUxNzojaWZkZWYgQ09ORklHX01MWDVfQ09SRV9JUE9JQlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9yeC5jLTI1MTgtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fcnguYz0yNjQxPWNvbnN0IHN0cnVjdCBtbHg1ZV9yeF9oYW5kbGVycyBtbHg1aV9yeF9oYW5kbGVycyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9yeC5jLTI2NDQtfTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fcnguYzoyNjQ1OiNlbmRpZiAvKiBDT05GSUdfTUxYNV9DT1JFX0lQT0lCICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3J4LmMtMjY0Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl90Yy5jPTEwMDc9c3RhdGljIGludCBtbHg1ZV9oYWlycGluX2dldF9wcmlvKHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3RjLmMtMTAxNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fdGMuYzoxMDE1OiNpZmRlZiBDT05GSUdfTUxYNV9DT1JFX0VOX0RDQlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl90Yy5jLTEwMTYtXFx0aWYgKHByaXYtXFx1MDAzZWRjYnhfZHAudHJ1c3Rfc3RhdGUgIT0gTUxYNV9RUFRTX1RSVVNUX1BDUCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3R4LmM9ODcyPXZvaWQgbWx4NWVfZnJlZV90eHFzcV9kZXNjcyhzdHJ1Y3QgbWx4NWVfdHhxc3EgKnNxKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3R4LmMtOTE3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl90eC5jOjkxODojaWZkZWYgQ09ORklHX01MWDVfQ09SRV9JUE9JQlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl90eC5jLTkxOS1zdGF0aWMgaW5saW5lIHZvaWRcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9pcG9pYi9pcG9pYi5oLTM1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9pcG9pYi9pcG9pYi5oOjM2OiNpZmRlZiBDT05GSUdfTUxYNV9DT1JFX0lQT0lCXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2lwb2liL2lwb2liLmgtMzctXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvaXBvaWIvaXBvaWIuaD0xMzA9dm9pZCBtbHg1aV9wYXJlbnRfcHV0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9pcG9pYi9pcG9pYi5oLTEzMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvaXBvaWIvaXBvaWIuaDoxMzI6I2VuZGlmIC8qIENPTkZJR19NTFg1X0NPUkVfSVBPSUIgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvaXBvaWIvaXBvaWIuaC0xMzMtI2VuZGlmIC8qIF9fTUxYNUVfSVBPQl9IX18gKi9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvc2QuaD0yND12b2lkIG1seDVfc2RfcHV0X2FkZXYoc3RydWN0IGF1eGlsaWFyeV9kZXZpY2UgKmFjdHVhbF9hZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9zZC5oLTI2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvc2QuaDoyNzojaWZkZWYgQ09ORklHX01MWDVfQ09SRV9FTlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvc2QuaC0yOC1ib29sIG1seDVfc2RfaXNfc3VwcG9ydGVkKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9zZC5oPTM3PXZvaWQgbWx4NV9zZF9jbGVhbnVwKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvc2QuaC0zOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL3NkLmg6Mzk6I2lmZGVmIENPTkZJR19NTFg1X0NPUkVfRU5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL3NkLmgtNDAtc3RydWN0IG1seDVfZGV2Y29tX2NvbXBfZGV2ICptbHg1X3NkX2dldF9kZXZjb20oc3RydWN0IG1seDVfY29yZV9kZXYgKmRldik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWx4NV9jb3JlLmg9Mzk2PXZvaWQgbWx4NV9md192ZXJzaW9uX3F1ZXJ5KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHUzMiAqcnVubmluZ192ZXIsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWx4NV9jb3JlLmgtMzk4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tbHg1X2NvcmUuaDozOTk6I2lmZGVmIENPTkZJR19NTFg1X0NPUkVfRU5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWx4NV9jb3JlLmgtNDAwLWludCBtbHg1ZV9pbml0KHZvaWQpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQyMDo0Mzo0NS4zNDY1NTYwMzFaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMjA2MjIyODA2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIGlzc3VlOlxuXG4qKktjb25maWcgQ2hlY2sgZm9yIE1MWDVfQ09SRSoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBtYWtlIHN1cmUgYE1MWDVfQ09SRWAgaXMgcHJvcGVybHkgY29uZmlndXJlZC4gTXkgZmlyc3QgdGhvdWdodCBpcyB0byBkaXZlIGludG8gdGhlIEtjb25maWcgZmlsZXMuIEkgbmVlZCB0byBxdWlja2x5IHZlcmlmeSBpdHMgZGVwZW5kZW5jaWVzIGFuZCBwb3RlbnRpYWwgc2V0dGluZ3MuIElzIGl0IGVuYWJsZWQgYXMgYSBtb2R1bGUgb3IgYnVpbHQtaW4/IEFyZSB0aGVyZSBhbnkgcmVsZXZhbnQgY29uZGl0aW9uYWxzIEkgbmVlZCB0byBiZSBhd2FyZSBvZj8gQXJlIHRoZXJlIG90aGVyIGZlYXR1cmVzIGl0IGltcGFjdHMgb3IgdGhhdCBkZXBlbmQgb24gaXQ/IEknbGwgbmVlZCB0byBjb25maXJtIHRoZSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24gYW5kIHdoZXRoZXIgYW55IG92ZXJyaWRpbmcgb3B0aW9ucyBhcmUgcHJlc2VudCB0aGF0IG1pZ2h0IGJlIGluZmx1ZW5jaW5nIGl0cyBiZWhhdmlvci4gU3BlY2lmaWNhbGx5LCBJJ20gbG9va2luZyBmb3Igd2hlcmUgaXQncyBkZWZpbmVkLCBpdHMgcmVsYXRpb25zaGlwcyB0byBvdGhlciBvcHRpb25zLCBhbmQgYW55IGFzc29jaWF0ZWQgc3ltYm9scyBvciBoZWxwIHRleHQgdGhhdCBtaWdodCBzaGVkIGxpZ2h0IG9uIGl0cyBjdXJyZW50IHN0YXRlLiBUaW1lIHRvIGdldCBpbnRvIHRoZSBkZXRhaWxzIGFuZCBtYWtlIHN1cmUgSSdtIG5vdCBtaXNzaW5nIGFueXRoaW5nIG9idmlvdXMhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkyMDMsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQyMDo0Mzo0Ny41NTI3ODA2MjhaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTUyODY1NTQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE1MWDVfQ09SRVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWctNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZzo2OmNvbmZpZyBNTFg1X0NPUkVcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZy03LVxcdHRyaXN0YXRlIFxcXCJNZWxsYW5veCA1dGggZ2VuZXJhdGlvbiBuZXR3b3JrIGFkYXB0ZXJzIChDb25uZWN0WCBzZXJpZXMpIGNvcmUgZHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWc9MTk9Y29uZmlnIE1MWDVfRlBHQVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWctMjgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWc6Mjk6Y29uZmlnIE1MWDVfQ09SRV9FTlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnLTMwLVxcdGJvb2wgXFxcIk1lbGxhbm94IDV0aCBnZW5lcmF0aW9uIG5ldHdvcmsgYWRhcHRlcnMgKENvbm5lY3RYIHNlcmllcykgRXRoZXJuZXQgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnPTExMj1jb25maWcgTUxYNV9UQ19TQU1QTEVcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnLTEyNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZzoxMjU6Y29uZmlnIE1MWDVfQ09SRV9FTl9EQ0JcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZy0xMjYtXFx0Ym9vbCBcXFwiRGF0YSBDZW50ZXIgQnJpZGdpbmcgKERDQikgU3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnLTEzNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZzoxMzc6Y29uZmlnIE1MWDVfQ09SRV9JUE9JQlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnLTEzOC1cXHRib29sIFxcXCJNZWxsYW5veCA1dGggZ2VuZXJhdGlvbiBuZXR3b3JrIGFkYXB0ZXJzIChjb25uZWN0WCBzZXJpZXMpIElQb0lCIG9mZmxvYWRzIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDIwOjQzOjQ3LjY0ODA3NjA0MloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjQzODM2MzgyMjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgVHJpYWdlIERlY2lzaW9uOiBOb3QgV29ydGggRnV6emluZyoqXG5cbk9rYXksIGxldCdzIHdhbGsgdGhyb3VnaCB0aGlzLiBJIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgcGF0Y2ggc2VyaWVzIGlzIHdvcnRoIHRoZSBlZmZvcnQgb2YgZnV6emluZy4gRmlyc3QsIEknbSBjaGVja2luZyBTZWN0aW9uIDIgb2YgdGhlIHRyaWFnZSBwaGlsb3NvcGh5LiBTcGVjaWZpY2FsbHksIEknbSBsb29raW5nIGF0IHdoZW4gd2Ugc2hvdWxkIGZsYWcgc29tZXRoaW5nIGFzIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBUaGUgcmVsZXZhbnQgY29uZGl0aW9uIGhlcmUgaXM6IFwiU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlLlwiIFRoYXQgbWVhbnMgY29kZSB0aGF0LCBmb3IgYWxsIGludGVudHMgYW5kIHB1cnBvc2VzLCBjYW5ub3QgYmUgZXhlY3V0ZWQgaW4gb3VyIHN0YW5kYXJkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VLCBHQ0UpIGJlY2F1c2UgaXQgZGVwZW5kcyBvbiBzcGVjaWZpYyBoYXJkd2FyZS5cblxuUmlnaHQsIHNvLCB0aGUgTWVsbGFub3ggYG1seDVgIGRyaXZlci4uLiBpdCdzIGEgdmVuZG9yLXNwZWNpZmljIFNtYXJ0TklDIGRyaXZlciwgc3BlY2lmaWNhbGx5IHRoZSBDb25uZWN0WCBzZXJpZXMuIFRoZXNlIGFkYXB0ZXJzIHJlcXVpcmUgcGh5c2ljYWwgTWVsbGFub3ggaGFyZHdhcmUgb3IgQVNJQyB0aGF0IGlzbid0IGVtdWxhdGVkIGluIHRoZSB0eXBpY2FsIFFFTVUgb3IgR29vZ2xlIENvbXB1dGUgRW5naW5lIHNldHVwcyB3ZSdyZSB1c2luZyBmb3IgZnV6emluZy4gTm8gd2F5IGFyb3VuZCB0aGF0LlxuXG5Ob3csIGxldCdzIGxvb2sgYXQgdGhlIGFjdHVhbCBjb2RlIGNoYW5nZXMuIEkgc2VlIHRoZSBtb2RpZmljYXRpb25zIGFyZSBsaW1pdGVkIHRvIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fcmVwLmNgLCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3JlcC5oYCwgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lc3cvZGV2bGlua19wb3J0LmNgLCBhbmQgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lc3dpdGNoLmhgLiAgVGhpcyBpcyBhbGwgaW5zaWRlIHRoZSBgbWx4NV9jb3JlYCBkcml2ZXIsIGFuZCBzcGVjaWZpY2FsbHkgdGFyZ2V0cyBzd2l0Y2hkZXYgcmVwcmVzZW50b3IgYW5kIGRldmxpbmsgcG9ydCBoZWFsdGggcmVwb3J0ZXIgaGFuZGxpbmcgZm9yIHRoZSBNZWxsYW5veCBlc3dpdGNoLlxuXG5BbHJpZ2h0LCB0aGF0J3MgcHJldHR5IGNsZWFyLiBHaXZlbiB0aG9zZSBzcGVjaWZpYyBmaWxlIGxvY2F0aW9ucywgdGhpcyBjb2RlIGlzICpzdHJ1Y3R1cmFsbHkqIHVucmVhY2hhYmxlIGluIG91ciBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cy4gV2UnZCBuZWVkIGEgcGh5c2ljYWwgTWVsbGFub3ggQ29ubmVjdFggY2FyZCB0byBldmVuIHRvdWNoIGl0LCB3aGljaCBpcyBiZXlvbmQgb3VyIGN1cnJlbnQgc2NvcGUuXG5cblRoZXJlZm9yZSwgYFdvcnRoRnV6emluZz1mYWxzZWAuXG5cbk5vdywgYmVmb3JlIEkgY2FsbCBgc2V0LXJlc3VsdHNgLCBsZXQncyBqdXN0IGNvbmZpcm0gdGhlIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgYFdvcnRoRnV6emluZ2AgaXMgc2V0IGFzIEkgbmVlZCwgYW5kIHRoZSBgRm9jdXNTeW1ib2xzYCBhbmQgYEVuYWJsZUNvbmZpZ3NgIGFyZSBlbXB0eSBhcyB0aGV5IHNob3VsZCBiZSBmb3IgdGhpcyBzY2VuYXJpby4gIFRoZSByZWFzb25pbmcgaXMgY29uY2lzZTogaXQncyBNZWxsYW5veCBoYXJkd2FyZS1zcGVjaWZpYyBhbmQgbm90IGVtdWxhdGVkLlxuXG5ZdXAsIGV2ZXJ5dGhpbmcgY2hlY2tzIG91dC4gVGltZSB0byBjYWxsIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk5MTEsIk91dHB1dFRva2VucyI6MTEyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mzg3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDIwOjQzOjUyLjAzMTcxNjg4OFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mzg4NTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgbW9kaWZpZWQgY29kZSBpcyBleGNsdXNpdmVseSB3aXRoaW4gdGhlIE1lbGxhbm94IG1seDUgZHJpdmVyIChkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvKSwgd2hpY2ggZHJpdmVzIHBoeXNpY2FsIE1lbGxhbm94IENvbm5lY3RYIG5ldHdvcmsgYWRhcHRlcnMgLyBTbWFydE5JQ3MuIEJlY2F1c2UgaXQgcmVxdWlyZXMgcGh5c2ljYWwgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBzeXprYWxsZXIgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIG1vZGlmaWVkIGNvZGUgaXMgZXhjbHVzaXZlbHkgd2l0aGluIHRoZSBNZWxsYW5veCBtbHg1IGRyaXZlciAoZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlLyksIHdoaWNoIGRyaXZlcyBwaHlzaWNhbCBNZWxsYW5veCBDb25uZWN0WCBuZXR3b3JrIGFkYXB0ZXJzIC8gU21hcnROSUNzLiBCZWNhdXNlIGl0IHJlcXVpcmVzIHBoeXNpY2FsIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3Igc3l6a2FsbGVyIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQyMDo0Mzo1Mi4wMzE3NjA2MDhaIiwiU2VxIjo5LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzkwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflow4v5bj[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-06 20:41:38 +0000 UTC FinishedAt: 2026-09-06 20:43:53 +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+CgkJCTx0ZD4yMDI2LzA5LzA2IDIwOjQzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgbW9kaWZpZWQgY29kZSBpcyBleGNsdXNpdmVseSB3aXRoaW4gdGhlIE1lbGxhbm94IG1seDUgZHJpdmVyIChkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvKSwgd2hpY2ggZHJpdmVzIHBoeXNpY2FsIE1lbGxhbm94IENvbm5lY3RYIG5ldHdvcmsgYWRhcHRlcnMgLyBTbWFydE5JQ3MuIEJlY2F1c2UgaXQgcmVxdWlyZXMgcGh5c2ljYWwgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBzeXprYWxsZXIgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMjA6NDM8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBjNWRkZDczOWZiMzA5MWQyYzQzMGZkYmNhMzFmY2EwZjI2ZTQ3MjgxXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBTZXAgNiAyMDo0MzozMyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fcmVwLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fcmVwLmNcbmluZGV4IGNlNzY1NjkyZmQxOWIuLjg4YTE3MGU0MGJkOTMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fcmVwLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9yZXAuY1xuQEAgLTU2LDcgJiM0Mzs1Niw2IEBAXG4gI2luY2x1ZGUgXCYjMzQ7bGliL3Z4bGFuLmhcJiMzNDtcbiAjZGVmaW5lIENSRUFURV9UUkFDRV9QT0lOVFNcbiAjaW5jbHVkZSBcJiMzNDtkaWFnL2VuX3JlcF90cmFjZXBvaW50LmhcJiMzNDtcbi0jaW5jbHVkZSBcJiMzNDtkaWFnL3JlcG9ydGVyX3ZuaWMuaFwmIzM0O1xuICNpbmNsdWRlIFwmIzM0O2VuX2FjY2VsL2lwc2VjLmhcJiMzNDtcbiAjaW5jbHVkZSBcJiMzNDtlbi90Yy9pbnRfcG9ydC5oXCYjMzQ7XG4gI2luY2x1ZGUgXCYjMzQ7ZW4vcHRwLmhcJiMzNDtcbkBAIC0xNDM5LDUxICYjNDM7MTQzOCw2IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgbWx4NWVfdWxfcmVwX3N0YXRzX2dycHNfbnVtKHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2KVxuIFx0cmV0dXJuIEFSUkFZX1NJWkUobWx4NWVfdWxfcmVwX3N0YXRzX2dycHMpO1xuIH1cbiBcbi1zdGF0aWMgaW50XG4tbWx4NWVfcmVwX3ZuaWNfcmVwb3J0ZXJfZGlhZ25vc2Uoc3RydWN0IGRldmxpbmtfaGVhbHRoX3JlcG9ydGVyICpyZXBvcnRlcixcbi1cdFx0XHRcdCBzdHJ1Y3QgZGV2bGlua19mbXNnICpmbXNnLFxuLVx0XHRcdFx0IHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcbi17XG4tXHRzdHJ1Y3QgbWx4NWVfcmVwX3ByaXYgKnJwcml2ID0gZGV2bGlua19oZWFsdGhfcmVwb3J0ZXJfcHJpdihyZXBvcnRlcik7XG4tXHRzdHJ1Y3QgbWx4NV9lc3dpdGNoX3JlcCAqcmVwID0gcnByaXYtXHUwMDNlcmVwO1xuLVxuLVx0bWx4NV9yZXBvcnRlcl92bmljX2RpYWdub3NlX2NvdW50ZXJzKHJlcC1cdTAwM2Vlc3ctXHUwMDNlZGV2LCBmbXNnLCByZXAtXHUwMDNldnBvcnQsXG4tXHRcdFx0XHRcdCAgICAgdHJ1ZSk7XG4tXHRyZXR1cm4gMDtcbi19XG4tXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBkZXZsaW5rX2hlYWx0aF9yZXBvcnRlcl9vcHMgbWx4NV9yZXBfdm5pY19yZXBvcnRlcl9vcHMgPSB7XG4tXHQubmFtZSA9IFwmIzM0O3ZuaWNcJiMzNDssXG4tXHQuZGlhZ25vc2UgPSBtbHg1ZV9yZXBfdm5pY19yZXBvcnRlcl9kaWFnbm9zZSxcbi19O1xuLVxuLXN0YXRpYyB2b2lkIG1seDVlX3JlcF92bmljX3JlcG9ydGVyX2NyZWF0ZShzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdixcbi1cdFx0XHRcdFx0ICAgc3RydWN0IGRldmxpbmtfcG9ydCAqZGxfcG9ydClcbi17XG4tXHRzdHJ1Y3QgbWx4NWVfcmVwX3ByaXYgKnJwcml2ID0gcHJpdi1cdTAwM2VwcHJpdjtcbi1cdHN0cnVjdCBkZXZsaW5rX2hlYWx0aF9yZXBvcnRlciAqcmVwb3J0ZXI7XG4tXG4tXHRyZXBvcnRlciA9IGRldmxfcG9ydF9oZWFsdGhfcmVwb3J0ZXJfY3JlYXRlKGRsX3BvcnQsXG4tXHRcdFx0XHRcdFx0ICAgIFx1MDAyNm1seDVfcmVwX3ZuaWNfcmVwb3J0ZXJfb3BzLFxuLVx0XHRcdFx0XHRcdCAgICBycHJpdik7XG4tXHRpZiAoSVNfRVJSKHJlcG9ydGVyKSkge1xuLVx0XHRtbHg1X2NvcmVfZXJyKHByaXYtXHUwMDNlbWRldixcbi1cdFx0XHQgICAgICBcJiMzNDtGYWlsZWQgdG8gY3JlYXRlIHJlcHJlc2VudG9yIHZuaWMgcmVwb3J0ZXIsIGVyciA9ICVwZVxcblwmIzM0Oyxcbi1cdFx0XHQgICAgICByZXBvcnRlcik7XG4tXHRcdHJldHVybjtcbi1cdH1cbi1cbi1cdHJwcml2LVx1MDAzZXJlcF92bmljX3JlcG9ydGVyID0gcmVwb3J0ZXI7XG4tfVxuLVxuLXN0YXRpYyB2b2lkIG1seDVlX3JlcF92bmljX3JlcG9ydGVyX2Rlc3Ryb3koc3RydWN0IG1seDVlX3ByaXYgKnByaXYpXG4te1xuLVx0c3RydWN0IG1seDVlX3JlcF9wcml2ICpycHJpdiA9IHByaXYtXHUwMDNlcHByaXY7XG4tXG4tXHRpZiAoIUlTX0VSUl9PUl9OVUxMKHJwcml2LVx1MDAzZXJlcF92bmljX3JlcG9ydGVyKSlcbi1cdFx0ZGV2bF9oZWFsdGhfcmVwb3J0ZXJfZGVzdHJveShycHJpdi1cdTAwM2VyZXBfdm5pY19yZXBvcnRlcik7XG4tfVxuLVxuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbWx4NWVfcHJvZmlsZSBtbHg1ZV9yZXBfcHJvZmlsZSA9IHtcbiBcdC5pbml0XHRcdFx0PSBtbHg1ZV9pbml0X3JlcCxcbiBcdC5jbGVhbnVwXHRcdD0gbWx4NWVfY2xlYW51cF9yZXAsXG5AQCAtMTYwNywxMCAmIzQzOzE1NjEsOCBAQCBtbHg1ZV92cG9ydF92Zl9yZXBfbG9hZChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBzdHJ1Y3QgbWx4NV9lc3dpdGNoX3JlcCAqcmVwKVxuIFxuIFx0ZGxfcG9ydCA9IG1seDVfZXN3X29mZmxvYWRzX2RldmxpbmtfcG9ydChkZXYtXHUwMDNlcHJpdi5lc3dpdGNoLFxuIFx0XHRcdFx0XHRcdCBycHJpdi1cdTAwM2VyZXAtXHUwMDNldnBvcnQpO1xuLVx0aWYgKCFJU19FUlIoZGxfcG9ydCkpIHtcbiYjNDM7XHRpZiAoIUlTX0VSUihkbF9wb3J0KSlcbiBcdFx0U0VUX05FVERFVl9ERVZMSU5LX1BPUlQobmV0ZGV2LCBkbF9wb3J0KTtcbi1cdFx0bWx4NWVfcmVwX3ZuaWNfcmVwb3J0ZXJfY3JlYXRlKHByaXYsIGRsX3BvcnQpO1xuLVx0fVxuIFxuIFx0ZXJyID0gcmVnaXN0ZXJfbmV0ZGV2KG5ldGRldik7XG4gXHRpZiAoZXJyKSB7XG5AQCAtMTYyMyw3ICYjNDM7MTU3NSw2IEBAIG1seDVlX3Zwb3J0X3ZmX3JlcF9sb2FkKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHN0cnVjdCBtbHg1X2Vzd2l0Y2hfcmVwICpyZXApXG4gXHRyZXR1cm4gMDtcbiBcbiBlcnJfZGV0YWNoX25ldGRldjpcbi1cdG1seDVlX3JlcF92bmljX3JlcG9ydGVyX2Rlc3Ryb3kocHJpdik7XG4gXHRtbHg1ZV9kZXRhY2hfbmV0ZGV2KG5ldGRldl9wcml2KG5ldGRldikpO1xuIGVycl9jbGVhbnVwX3Byb2ZpbGU6XG4gXHRwcml2LVx1MDAzZXByb2ZpbGUtXHUwMDNlY2xlYW51cChwcml2KTtcbkBAIC0xNjgxLDcgJiM0MzsxNjMyLDYgQEAgbWx4NWVfdnBvcnRfcmVwX3VubG9hZChzdHJ1Y3QgbWx4NV9lc3dpdGNoX3JlcCAqcmVwKVxuIFx0fVxuIFxuIFx0dW5yZWdpc3Rlcl9uZXRkZXYobmV0ZGV2KTtcbi1cdG1seDVlX3JlcF92bmljX3JlcG9ydGVyX2Rlc3Ryb3kocHJpdik7XG4gXHRtbHg1ZV9kZXRhY2hfbmV0ZGV2KHByaXYpO1xuIFx0cHJpdi1cdTAwM2Vwcm9maWxlLVx1MDAzZWNsZWFudXAocHJpdik7XG4gXHRtbHg1ZV9kZXN0cm95X25ldGRldihuZXRkZXYpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9yZXAuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9yZXAuaFxuaW5kZXggNzA2NDBmYTFhZDdiYy4uYmNkN2I0ZTgxNGQwNiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9yZXAuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3JlcC5oXG5AQCAtMTE4LDcgJiM0MzsxMTgsNiBAQCBzdHJ1Y3QgbWx4NWVfcmVwX3ByaXYge1xuIFx0c3RydWN0IHJ0bmxfbGlua19zdGF0czY0IHByZXZfdmZfdnBvcnRfc3RhdHM7XG4gXHRzdHJ1Y3QgbWx4NV9mbG93X2hhbmRsZSAqc2VuZF90b192cG9ydF9tZXRhX3J1bGU7XG4gXHRzdHJ1Y3Qgcmhhc2h0YWJsZSB0Y19odDtcbi1cdHN0cnVjdCBkZXZsaW5rX2hlYWx0aF9yZXBvcnRlciAqcmVwX3ZuaWNfcmVwb3J0ZXI7XG4gfTtcbiBcbiBzdGF0aWMgaW5saW5lXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Vzdy9kZXZsaW5rX3BvcnQuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lc3cvZGV2bGlua19wb3J0LmNcbmluZGV4IDM2YjAwYTg1NmJjMjEuLmZkYzk2MGVhNTMzMTggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXN3L2RldmxpbmtfcG9ydC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXN3L2RldmxpbmtfcG9ydC5jXG5AQCAtNCw2ICYjNDM7NCwyNiBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L21seDUvZHJpdmVyLmhcdTAwM2VcbiAjaW5jbHVkZSBcJiMzNDtlc3dpdGNoLmhcJiMzNDtcbiAjaW5jbHVkZSBcJiMzNDtkZXZsaW5rLmhcJiMzNDtcbiYjNDM7I2luY2x1ZGUgXCYjMzQ7ZGlhZy9yZXBvcnRlcl92bmljLmhcJiMzNDtcbiYjNDM7XG4mIzQzO3N0YXRpYyBpbnRcbiYjNDM7bWx4NV9lc3dfcmVwX3ZuaWNfcmVwb3J0ZXJfZGlhZ25vc2Uoc3RydWN0IGRldmxpbmtfaGVhbHRoX3JlcG9ydGVyICpyZXBvcnRlcixcbiYjNDM7XHRcdFx0XHQgICAgc3RydWN0IGRldmxpbmtfZm1zZyAqZm1zZyxcbiYjNDM7XHRcdFx0XHQgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IG1seDVfdnBvcnQgKnZwb3J0ID0gZGV2bGlua19oZWFsdGhfcmVwb3J0ZXJfcHJpdihyZXBvcnRlcik7XG4mIzQzO1xuJiM0MztcdG1seDVfcmVwb3J0ZXJfdm5pY19kaWFnbm9zZV9jb3VudGVycyh2cG9ydC1cdTAwM2VkZXYsIGZtc2csIHZwb3J0LVx1MDAzZXZwb3J0LFxuJiM0MztcdFx0XHRcdFx0ICAgICB0cnVlKTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBjb25zdFxuJiM0MztzdHJ1Y3QgZGV2bGlua19oZWFsdGhfcmVwb3J0ZXJfb3BzIG1seDVfZXN3X3JlcF92bmljX3JlcG9ydGVyX29wcyA9IHtcbiYjNDM7XHQubmFtZSA9IFwmIzM0O3ZuaWNcJiMzNDssXG4mIzQzO1x0LmRpYWdub3NlID0gbWx4NV9lc3dfcmVwX3ZuaWNfcmVwb3J0ZXJfZGlhZ25vc2UsXG4mIzQzO307XG4gXG4gc3RhdGljIHZvaWRcbiBtbHg1X2Vzd19nZXRfcG9ydF9wYXJlbnRfaWQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgc3RydWN0IG5ldGRldl9waHlzX2l0ZW1faWQgKnBwaWQpXG5AQCAtMjIwLDYgJiM0MzsyNDAsNyBAQCBzdGF0aWMgdm9pZCBtbHg1X2Vzd19kZXZsaW5rX3BvcnRfcmVzX3VucmVnaXN0ZXIoc3RydWN0IGRldmxpbmtfcG9ydCAqZGxfcG9ydClcbiBcbiBpbnQgbWx4NV9lc3dfb2ZmbG9hZHNfZGV2bGlua19wb3J0X3JlZ2lzdGVyKHN0cnVjdCBtbHg1X2Vzd2l0Y2ggKmVzdywgc3RydWN0IG1seDVfdnBvcnQgKnZwb3J0KVxuIHtcbiYjNDM7XHRzdHJ1Y3QgZGV2bGlua19oZWFsdGhfcmVwb3J0ZXIgKnJlcG9ydGVyO1xuIFx0c3RydWN0IG1seDVfY29yZV9kZXYgKmRldiA9IGVzdy1cdTAwM2VkZXY7XG4gXHRjb25zdCBzdHJ1Y3QgZGV2bGlua19wb3J0X29wcyAqb3BzO1xuIFx0c3RydWN0IG1seDVfZGV2bGlua19wb3J0ICpkbF9wb3J0O1xuQEAgLTI1NSw2ICYjNDM7Mjc2LDE2IEBAIGludCBtbHg1X2Vzd19vZmZsb2Fkc19kZXZsaW5rX3BvcnRfcmVnaXN0ZXIoc3RydWN0IG1seDVfZXN3aXRjaCAqZXN3LCBzdHJ1Y3QgbWx4XG4gXHRcdG1seDVfY29yZV9kYmcoZGV2LCBcJiMzNDtGYWlsZWQgdG8gcmVnaXN0ZXIgcG9ydCByZXNvdXJjZXM6ICVkXFxuXCYjMzQ7LFxuIFx0XHRcdCAgICAgIGVycik7XG4gXG4mIzQzO1x0cmVwb3J0ZXIgPSBkZXZsX3BvcnRfaGVhbHRoX3JlcG9ydGVyX2NyZWF0ZShcbiYjNDM7XHRcdFx1MDAyNmRsX3BvcnQtXHUwMDNlZGxfcG9ydCwgXHUwMDI2bWx4NV9lc3dfcmVwX3ZuaWNfcmVwb3J0ZXJfb3BzLFxuJiM0MztcdFx0dnBvcnQpO1xuJiM0MztcdGlmIChJU19FUlIocmVwb3J0ZXIpKVxuJiM0MztcdFx0bWx4NV9jb3JlX2VycihkZXYsXG4mIzQzO1x0XHRcdCAgICAgIFwmIzM0O0ZhaWxlZCB0byBjcmVhdGUgdm5pYyBoZWFsdGggcmVwb3J0ZXIgZm9yIHZwb3J0ICVkOiAlcGVcXG5cJiMzNDssXG4mIzQzO1x0XHRcdCAgICAgIHZwb3J0X251bSwgcmVwb3J0ZXIpO1xuJiM0MztcdGVsc2VcbiYjNDM7XHRcdGRsX3BvcnQtXHUwMDNldm5pY19yZXBvcnRlciA9IHJlcG9ydGVyO1xuJiM0MztcbiBcdHJldHVybiAwO1xuIFxuIHJhdGVfZXJyOlxuQEAgLTI2OSw2ICYjNDM7MzAwLDEyIEBAIHZvaWQgbWx4NV9lc3dfb2ZmbG9hZHNfZGV2bGlua19wb3J0X3VucmVnaXN0ZXIoc3RydWN0IG1seDVfdnBvcnQgKnZwb3J0KVxuIFx0aWYgKCF2cG9ydC1cdTAwM2VkbF9wb3J0KVxuIFx0XHRyZXR1cm47XG4gXHRkbF9wb3J0ID0gdnBvcnQtXHUwMDNlZGxfcG9ydDtcbiYjNDM7XG4mIzQzO1x0aWYgKGRsX3BvcnQtXHUwMDNldm5pY19yZXBvcnRlcikge1xuJiM0MztcdFx0ZGV2bF9oZWFsdGhfcmVwb3J0ZXJfZGVzdHJveShkbF9wb3J0LVx1MDAzZXZuaWNfcmVwb3J0ZXIpO1xuJiM0MztcdFx0ZGxfcG9ydC1cdTAwM2V2bmljX3JlcG9ydGVyID0gTlVMTDtcbiYjNDM7XHR9XG4mIzQzO1xuIFx0bWx4NV9lc3dfZGV2bGlua19wb3J0X3Jlc191bnJlZ2lzdGVyKFx1MDAyNmRsX3BvcnQtXHUwMDNlZGxfcG9ydCk7XG4gXG4gXHRkZXZsX3JhdGVfbGVhZl9kZXN0cm95KFx1MDAyNmRsX3BvcnQtXHUwMDNlZGxfcG9ydCk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Vzd2l0Y2guaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lc3dpdGNoLmhcbmluZGV4IGM2NTVmNmU4ZGExY2UuLjhiMWY5M2IxM2VhOWMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXN3aXRjaC5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXN3aXRjaC5oXG5AQCAtMTg5LDYgJiM0MzsxODksNyBAQCBzdHJ1Y3QgbWx4NV92cG9ydDtcbiBzdHJ1Y3QgbWx4NV9kZXZsaW5rX3BvcnQge1xuIFx0c3RydWN0IGRldmxpbmtfcG9ydCBkbF9wb3J0O1xuIFx0c3RydWN0IG1seDVfdnBvcnQgKnZwb3J0O1xuJiM0MztcdHN0cnVjdCBkZXZsaW5rX2hlYWx0aF9yZXBvcnRlciAqdm5pY19yZXBvcnRlcjtcbiB9O1xuIFxuIHN0YXRpYyBpbmxpbmUgdm9pZCBtbHg1X2RldmxpbmtfcG9ydF9pbml0KHN0cnVjdCBtbHg1X2RldmxpbmtfcG9ydCAqZGxfcG9ydCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAyMDo0MzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBtb2RpZmllZCBjb2RlIGlzIGV4Y2x1c2l2ZWx5IHdpdGhpbiB0aGUgTWVsbGFub3ggbWx4NSBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS8pLCB3aGljaCBkcml2ZXMgcGh5c2ljYWwgTWVsbGFub3ggQ29ubmVjdFggbmV0d29yayBhZGFwdGVycyAvIFNtYXJ0TklDcy4gQmVjYXVzZSBpdCByZXF1aXJlcyBwaHlzaWNhbCBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChRRU1VL0dDRSksIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIHN5emthbGxlciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzCnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoxLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsCmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuCgotIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOgogIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQKICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLgogIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCwKICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuCgotIERPIE5PVCBCTElORExZIFRSVVNUICYjMzQ7Tk8gRlVOQ1RJT05BTCBDSEFOR0UmIzM0OyAoTkZDSSkgT1IgJiMzNDtSRUZBQ1RPUklORyYjMzQ7IENMQUlNUzoKICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzICYjMzQ7Y2xlYW51cHMmIzM0OywgJiMzNDtyZWZhY3RvcmluZ3MmIzM0Oywgb3Igc3RhdGUKICAmIzM0O05vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkJiMzNDsuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLgogIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudAogIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLgogIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuCgotIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOgogIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKiwKICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy4KICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyCiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczoKCi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczoKICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy4KICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKQogICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLgogICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHMKICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuCiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuCi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOgogICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6CiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmcKICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLgogICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOgotIENvcmUgU3Vic3lzdGVtczoKICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSwKICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy4KLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6CiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuCi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOgogICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLgotIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6CiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo0LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTikKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6CgotIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzoKICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1cwogIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0CiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuCiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzICYjMzQ7Zm9jdXNlZCYjMzQ7LAogIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy4KCi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOgogIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50cwogIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LgoKLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6CiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFjawogIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLgogIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlcgogIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZToKLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgotIENoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuCi0gU3RyaXAgYW55ICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGM1ZGRkNzM5ZmIzMDkxZDJjNDMwZmRiY2EzMWZjYTBmMjZlNDcyODEKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU3VuIFNlcCA2IDIwOjQzOjMzIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3JlcC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3JlcC5jCmluZGV4IGNlNzY1NjkyZmQxOWIuLjg4YTE3MGU0MGJkOTMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9yZXAuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fcmVwLmMKQEAgLTU2LDcgJiM0Mzs1Niw2IEBACiAjaW5jbHVkZSAmIzM0O2xpYi92eGxhbi5oJiMzNDsKICNkZWZpbmUgQ1JFQVRFX1RSQUNFX1BPSU5UUwogI2luY2x1ZGUgJiMzNDtkaWFnL2VuX3JlcF90cmFjZXBvaW50LmgmIzM0OwotI2luY2x1ZGUgJiMzNDtkaWFnL3JlcG9ydGVyX3ZuaWMuaCYjMzQ7CiAjaW5jbHVkZSAmIzM0O2VuX2FjY2VsL2lwc2VjLmgmIzM0OwogI2luY2x1ZGUgJiMzNDtlbi90Yy9pbnRfcG9ydC5oJiMzNDsKICNpbmNsdWRlICYjMzQ7ZW4vcHRwLmgmIzM0OwpAQCAtMTQzOSw1MSAmIzQzOzE0MzgsNiBAQCBzdGF0aWMgdW5zaWduZWQgaW50IG1seDVlX3VsX3JlcF9zdGF0c19ncnBzX251bShzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdikKIAlyZXR1cm4gQVJSQVlfU0laRShtbHg1ZV91bF9yZXBfc3RhdHNfZ3Jwcyk7CiB9CiAKLXN0YXRpYyBpbnQKLW1seDVlX3JlcF92bmljX3JlcG9ydGVyX2RpYWdub3NlKHN0cnVjdCBkZXZsaW5rX2hlYWx0aF9yZXBvcnRlciAqcmVwb3J0ZXIsCi0JCQkJIHN0cnVjdCBkZXZsaW5rX2Ztc2cgKmZtc2csCi0JCQkJIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaykKLXsKLQlzdHJ1Y3QgbWx4NWVfcmVwX3ByaXYgKnJwcml2ID0gZGV2bGlua19oZWFsdGhfcmVwb3J0ZXJfcHJpdihyZXBvcnRlcik7Ci0Jc3RydWN0IG1seDVfZXN3aXRjaF9yZXAgKnJlcCA9IHJwcml2LSZndDtyZXA7Ci0KLQltbHg1X3JlcG9ydGVyX3ZuaWNfZGlhZ25vc2VfY291bnRlcnMocmVwLSZndDtlc3ctJmd0O2RldiwgZm1zZywgcmVwLSZndDt2cG9ydCwKLQkJCQkJICAgICB0cnVlKTsKLQlyZXR1cm4gMDsKLX0KLQotc3RhdGljIGNvbnN0IHN0cnVjdCBkZXZsaW5rX2hlYWx0aF9yZXBvcnRlcl9vcHMgbWx4NV9yZXBfdm5pY19yZXBvcnRlcl9vcHMgPSB7Ci0JLm5hbWUgPSAmIzM0O3ZuaWMmIzM0OywKLQkuZGlhZ25vc2UgPSBtbHg1ZV9yZXBfdm5pY19yZXBvcnRlcl9kaWFnbm9zZSwKLX07Ci0KLXN0YXRpYyB2b2lkIG1seDVlX3JlcF92bmljX3JlcG9ydGVyX2NyZWF0ZShzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdiwKLQkJCQkJICAgc3RydWN0IGRldmxpbmtfcG9ydCAqZGxfcG9ydCkKLXsKLQlzdHJ1Y3QgbWx4NWVfcmVwX3ByaXYgKnJwcml2ID0gcHJpdi0mZ3Q7cHByaXY7Ci0Jc3RydWN0IGRldmxpbmtfaGVhbHRoX3JlcG9ydGVyICpyZXBvcnRlcjsKLQotCXJlcG9ydGVyID0gZGV2bF9wb3J0X2hlYWx0aF9yZXBvcnRlcl9jcmVhdGUoZGxfcG9ydCwKLQkJCQkJCSAgICAmYW1wO21seDVfcmVwX3ZuaWNfcmVwb3J0ZXJfb3BzLAotCQkJCQkJICAgIHJwcml2KTsKLQlpZiAoSVNfRVJSKHJlcG9ydGVyKSkgewotCQltbHg1X2NvcmVfZXJyKHByaXYtJmd0O21kZXYsCi0JCQkgICAgICAmIzM0O0ZhaWxlZCB0byBjcmVhdGUgcmVwcmVzZW50b3Igdm5pYyByZXBvcnRlciwgZXJyID0gJXBlXG4mIzM0OywKLQkJCSAgICAgIHJlcG9ydGVyKTsKLQkJcmV0dXJuOwotCX0KLQotCXJwcml2LSZndDtyZXBfdm5pY19yZXBvcnRlciA9IHJlcG9ydGVyOwotfQotCi1zdGF0aWMgdm9pZCBtbHg1ZV9yZXBfdm5pY19yZXBvcnRlcl9kZXN0cm95KHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2KQotewotCXN0cnVjdCBtbHg1ZV9yZXBfcHJpdiAqcnByaXYgPSBwcml2LSZndDtwcHJpdjsKLQotCWlmICghSVNfRVJSX09SX05VTEwocnByaXYtJmd0O3JlcF92bmljX3JlcG9ydGVyKSkKLQkJZGV2bF9oZWFsdGhfcmVwb3J0ZXJfZGVzdHJveShycHJpdi0mZ3Q7cmVwX3ZuaWNfcmVwb3J0ZXIpOwotfQotCiBzdGF0aWMgY29uc3Qgc3RydWN0IG1seDVlX3Byb2ZpbGUgbWx4NWVfcmVwX3Byb2ZpbGUgPSB7CiAJLmluaXQJCQk9IG1seDVlX2luaXRfcmVwLAogCS5jbGVhbnVwCQk9IG1seDVlX2NsZWFudXBfcmVwLApAQCAtMTYwNywxMCAmIzQzOzE1NjEsOCBAQCBtbHg1ZV92cG9ydF92Zl9yZXBfbG9hZChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBzdHJ1Y3QgbWx4NV9lc3dpdGNoX3JlcCAqcmVwKQogCiAJZGxfcG9ydCA9IG1seDVfZXN3X29mZmxvYWRzX2RldmxpbmtfcG9ydChkZXYtJmd0O3ByaXYuZXN3aXRjaCwKIAkJCQkJCSBycHJpdi0mZ3Q7cmVwLSZndDt2cG9ydCk7Ci0JaWYgKCFJU19FUlIoZGxfcG9ydCkpIHsKJiM0MzsJaWYgKCFJU19FUlIoZGxfcG9ydCkpCiAJCVNFVF9ORVRERVZfREVWTElOS19QT1JUKG5ldGRldiwgZGxfcG9ydCk7Ci0JCW1seDVlX3JlcF92bmljX3JlcG9ydGVyX2NyZWF0ZShwcml2LCBkbF9wb3J0KTsKLQl9CiAKIAllcnIgPSByZWdpc3Rlcl9uZXRkZXYobmV0ZGV2KTsKIAlpZiAoZXJyKSB7CkBAIC0xNjIzLDcgJiM0MzsxNTc1LDYgQEAgbWx4NWVfdnBvcnRfdmZfcmVwX2xvYWQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgc3RydWN0IG1seDVfZXN3aXRjaF9yZXAgKnJlcCkKIAlyZXR1cm4gMDsKIAogZXJyX2RldGFjaF9uZXRkZXY6Ci0JbWx4NWVfcmVwX3ZuaWNfcmVwb3J0ZXJfZGVzdHJveShwcml2KTsKIAltbHg1ZV9kZXRhY2hfbmV0ZGV2KG5ldGRldl9wcml2KG5ldGRldikpOwogZXJyX2NsZWFudXBfcHJvZmlsZToKIAlwcml2LSZndDtwcm9maWxlLSZndDtjbGVhbnVwKHByaXYpOwpAQCAtMTY4MSw3ICYjNDM7MTYzMiw2IEBAIG1seDVlX3Zwb3J0X3JlcF91bmxvYWQoc3RydWN0IG1seDVfZXN3aXRjaF9yZXAgKnJlcCkKIAl9CiAKIAl1bnJlZ2lzdGVyX25ldGRldihuZXRkZXYpOwotCW1seDVlX3JlcF92bmljX3JlcG9ydGVyX2Rlc3Ryb3kocHJpdik7CiAJbWx4NWVfZGV0YWNoX25ldGRldihwcml2KTsKIAlwcml2LSZndDtwcm9maWxlLSZndDtjbGVhbnVwKHByaXYpOwogCW1seDVlX2Rlc3Ryb3lfbmV0ZGV2KG5ldGRldik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fcmVwLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fcmVwLmgKaW5kZXggNzA2NDBmYTFhZDdiYy4uYmNkN2I0ZTgxNGQwNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3JlcC5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9yZXAuaApAQCAtMTE4LDcgJiM0MzsxMTgsNiBAQCBzdHJ1Y3QgbWx4NWVfcmVwX3ByaXYgewogCXN0cnVjdCBydG5sX2xpbmtfc3RhdHM2NCBwcmV2X3ZmX3Zwb3J0X3N0YXRzOwogCXN0cnVjdCBtbHg1X2Zsb3dfaGFuZGxlICpzZW5kX3RvX3Zwb3J0X21ldGFfcnVsZTsKIAlzdHJ1Y3Qgcmhhc2h0YWJsZSB0Y19odDsKLQlzdHJ1Y3QgZGV2bGlua19oZWFsdGhfcmVwb3J0ZXIgKnJlcF92bmljX3JlcG9ydGVyOwogfTsKIAogc3RhdGljIGlubGluZQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Vzdy9kZXZsaW5rX3BvcnQuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lc3cvZGV2bGlua19wb3J0LmMKaW5kZXggMzZiMDBhODU2YmMyMS4uZmRjOTYwZWE1MzMxOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Vzdy9kZXZsaW5rX3BvcnQuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXN3L2RldmxpbmtfcG9ydC5jCkBAIC00LDYgJiM0Mzs0LDI2IEBACiAjaW5jbHVkZSAmbHQ7bGludXgvbWx4NS9kcml2ZXIuaCZndDsKICNpbmNsdWRlICYjMzQ7ZXN3aXRjaC5oJiMzNDsKICNpbmNsdWRlICYjMzQ7ZGV2bGluay5oJiMzNDsKJiM0MzsjaW5jbHVkZSAmIzM0O2RpYWcvcmVwb3J0ZXJfdm5pYy5oJiMzNDsKJiM0MzsKJiM0MztzdGF0aWMgaW50CiYjNDM7bWx4NV9lc3dfcmVwX3ZuaWNfcmVwb3J0ZXJfZGlhZ25vc2Uoc3RydWN0IGRldmxpbmtfaGVhbHRoX3JlcG9ydGVyICpyZXBvcnRlciwKJiM0MzsJCQkJICAgIHN0cnVjdCBkZXZsaW5rX2Ztc2cgKmZtc2csCiYjNDM7CQkJCSAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spCiYjNDM7ewomIzQzOwlzdHJ1Y3QgbWx4NV92cG9ydCAqdnBvcnQgPSBkZXZsaW5rX2hlYWx0aF9yZXBvcnRlcl9wcml2KHJlcG9ydGVyKTsKJiM0MzsKJiM0MzsJbWx4NV9yZXBvcnRlcl92bmljX2RpYWdub3NlX2NvdW50ZXJzKHZwb3J0LSZndDtkZXYsIGZtc2csIHZwb3J0LSZndDt2cG9ydCwKJiM0MzsJCQkJCSAgICAgdHJ1ZSk7CiYjNDM7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgY29uc3QKJiM0MztzdHJ1Y3QgZGV2bGlua19oZWFsdGhfcmVwb3J0ZXJfb3BzIG1seDVfZXN3X3JlcF92bmljX3JlcG9ydGVyX29wcyA9IHsKJiM0MzsJLm5hbWUgPSAmIzM0O3ZuaWMmIzM0OywKJiM0MzsJLmRpYWdub3NlID0gbWx4NV9lc3dfcmVwX3ZuaWNfcmVwb3J0ZXJfZGlhZ25vc2UsCiYjNDM7fTsKIAogc3RhdGljIHZvaWQKIG1seDVfZXN3X2dldF9wb3J0X3BhcmVudF9pZChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBzdHJ1Y3QgbmV0ZGV2X3BoeXNfaXRlbV9pZCAqcHBpZCkKQEAgLTIyMCw2ICYjNDM7MjQwLDcgQEAgc3RhdGljIHZvaWQgbWx4NV9lc3dfZGV2bGlua19wb3J0X3Jlc191bnJlZ2lzdGVyKHN0cnVjdCBkZXZsaW5rX3BvcnQgKmRsX3BvcnQpCiAKIGludCBtbHg1X2Vzd19vZmZsb2Fkc19kZXZsaW5rX3BvcnRfcmVnaXN0ZXIoc3RydWN0IG1seDVfZXN3aXRjaCAqZXN3LCBzdHJ1Y3QgbWx4NV92cG9ydCAqdnBvcnQpCiB7CiYjNDM7CXN0cnVjdCBkZXZsaW5rX2hlYWx0aF9yZXBvcnRlciAqcmVwb3J0ZXI7CiAJc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiA9IGVzdy0mZ3Q7ZGV2OwogCWNvbnN0IHN0cnVjdCBkZXZsaW5rX3BvcnRfb3BzICpvcHM7CiAJc3RydWN0IG1seDVfZGV2bGlua19wb3J0ICpkbF9wb3J0OwpAQCAtMjU1LDYgJiM0MzsyNzYsMTYgQEAgaW50IG1seDVfZXN3X29mZmxvYWRzX2RldmxpbmtfcG9ydF9yZWdpc3RlcihzdHJ1Y3QgbWx4NV9lc3dpdGNoICplc3csIHN0cnVjdCBtbHgKIAkJbWx4NV9jb3JlX2RiZyhkZXYsICYjMzQ7RmFpbGVkIHRvIHJlZ2lzdGVyIHBvcnQgcmVzb3VyY2VzOiAlZFxuJiMzNDssCiAJCQkgICAgICBlcnIpOwogCiYjNDM7CXJlcG9ydGVyID0gZGV2bF9wb3J0X2hlYWx0aF9yZXBvcnRlcl9jcmVhdGUoCiYjNDM7CQkmYW1wO2RsX3BvcnQtJmd0O2RsX3BvcnQsICZhbXA7bWx4NV9lc3dfcmVwX3ZuaWNfcmVwb3J0ZXJfb3BzLAomIzQzOwkJdnBvcnQpOwomIzQzOwlpZiAoSVNfRVJSKHJlcG9ydGVyKSkKJiM0MzsJCW1seDVfY29yZV9lcnIoZGV2LAomIzQzOwkJCSAgICAgICYjMzQ7RmFpbGVkIHRvIGNyZWF0ZSB2bmljIGhlYWx0aCByZXBvcnRlciBmb3IgdnBvcnQgJWQ6ICVwZVxuJiMzNDssCiYjNDM7CQkJICAgICAgdnBvcnRfbnVtLCByZXBvcnRlcik7CiYjNDM7CWVsc2UKJiM0MzsJCWRsX3BvcnQtJmd0O3ZuaWNfcmVwb3J0ZXIgPSByZXBvcnRlcjsKJiM0MzsKIAlyZXR1cm4gMDsKIAogcmF0ZV9lcnI6CkBAIC0yNjksNiAmIzQzOzMwMCwxMiBAQCB2b2lkIG1seDVfZXN3X29mZmxvYWRzX2RldmxpbmtfcG9ydF91bnJlZ2lzdGVyKHN0cnVjdCBtbHg1X3Zwb3J0ICp2cG9ydCkKIAlpZiAoIXZwb3J0LSZndDtkbF9wb3J0KQogCQlyZXR1cm47CiAJZGxfcG9ydCA9IHZwb3J0LSZndDtkbF9wb3J0OwomIzQzOwomIzQzOwlpZiAoZGxfcG9ydC0mZ3Q7dm5pY19yZXBvcnRlcikgewomIzQzOwkJZGV2bF9oZWFsdGhfcmVwb3J0ZXJfZGVzdHJveShkbF9wb3J0LSZndDt2bmljX3JlcG9ydGVyKTsKJiM0MzsJCWRsX3BvcnQtJmd0O3ZuaWNfcmVwb3J0ZXIgPSBOVUxMOwomIzQzOwl9CiYjNDM7CiAJbWx4NV9lc3dfZGV2bGlua19wb3J0X3Jlc191bnJlZ2lzdGVyKCZhbXA7ZGxfcG9ydC0mZ3Q7ZGxfcG9ydCk7CiAKIAlkZXZsX3JhdGVfbGVhZl9kZXN0cm95KCZhbXA7ZGxfcG9ydC0mZ3Q7ZGxfcG9ydCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXN3aXRjaC5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Vzd2l0Y2guaAppbmRleCBjNjU1ZjZlOGRhMWNlLi44YjFmOTNiMTNlYTljIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXN3aXRjaC5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lc3dpdGNoLmgKQEAgLTE4OSw2ICYjNDM7MTg5LDcgQEAgc3RydWN0IG1seDVfdnBvcnQ7CiBzdHJ1Y3QgbWx4NV9kZXZsaW5rX3BvcnQgewogCXN0cnVjdCBkZXZsaW5rX3BvcnQgZGxfcG9ydDsKIAlzdHJ1Y3QgbWx4NV92cG9ydCAqdnBvcnQ7CiYjNDM7CXN0cnVjdCBkZXZsaW5rX2hlYWx0aF9yZXBvcnRlciAqdm5pY19yZXBvcnRlcjsKIH07CiAKIHN0YXRpYyBpbmxpbmUgdm9pZCBtbHg1X2RldmxpbmtfcG9ydF9pbml0KHN0cnVjdCBtbHg1X2RldmxpbmtfcG9ydCAqZGxfcG9ydCwKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMjA6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTQ3MAoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDM0MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBvdGVudGlhbCBmb3IgRnV6emluZyB0aGlzIE1lbGxhbm94IERyaXZlciBDb2RlKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgdGhlIE1lbGxhbm94IG1seDUgZHJpdmVyIOKAkyBzcGVjaWZpY2FsbHkgdGhlc2UgZmlsZXM6IGBlbl9yZXAuY2AsIGBlbl9yZXAuaGAsIGBkZXZsaW5rX3BvcnQuY2AsIGFuZCBgZXN3aXRjaC5oYCB3aXRoaW4gdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYCBkaXJlY3RvcnkuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O2NhbiB0aGlzIGV2ZW4gYmUgZnV6emVkIGVmZmVjdGl2ZWx5PyYjMzQ7IEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgaXQgbWVldHMgdGhlIGNyaXRlcmlhIGZvciBiZWluZyAmIzM0O1dvcnRoRnV6emluZz1mYWxzZSYjMzQ7IGJhc2VkIG9uIFNlY3Rpb24gMiBvZiB0aGUgZ3VpZGVsaW5lcyDigJMgc3BlY2lmaWNhbGx5IHRoZSAmIzM0O1N0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZSYjMzQ7IGNsYXVzZS4KClRoZSBndWlkZWxpbmVzIG1lbnRpb24gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgbGlrZSBgbWx4c3dgLCBgcGRzX2NvcmVgLCBgcWVkYCwgYGlvbmljYCwgYW5kIGBhbWRncHVgIGFzIGV4YW1wbGVzIG9mIGRyaXZlcnMgdGhhdCBhcmUgZGlmZmljdWx0IHRvIGZ1enogYmVjYXVzZSB0aGV5IG5lZWQgcGh5c2ljYWwgQVNJQ3Mgb3IgUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4gTm93LCBteSB1bmRlcnN0YW5kaW5nIGlzIHRoYXQgTWVsbGFub3ggbWx4NSBpcyBhIHBoeXNpY2FsIE5JQy9TbWFydE5JQyBkcml2ZXIuIEl0JiMzOTtzIGJ1aWx0IGZvciBDb25uZWN0WCBoYXJkd2FyZSAoQ29ubmVjdFgtNCwgNSwgNiwgNywgZXRjLikuIEkga25vdyB0aGlzIGRyaXZlciByZXF1aXJlcyB0aGUgYWN0dWFsIE1lbGxhbm94IGhhcmR3YXJlLiBNeSBiaWdnZXN0IGNvbmNlcm4gcmlnaHQgbm93IGlzIHdoZXRoZXIgdGhpcyBgbWx4NWAgaXMgZW11bGF0ZWQgb3IgYWNjZXNzaWJsZSB0aHJvdWdoIGEgdmlydHVhbCBidXMgaW4gYSB3YXkgdGhhdCB3b3VsZCBtYWtlIGZ1enppbmcgZmVhc2libGUuIEkmIzM5O20gcHJldHR5IHN1cmUgaXQmIzM5O3MgYSBzdGFuZGFyZCBQQ0kgZGV2aWNlIGRyaXZlciBsb2NhdGVkIGluIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYCwgd2hpY2ggc3Ryb25nbHkgc3VnZ2VzdHMgKnBoeXNpY2FsKiBoYXJkd2FyZSBkZXBlbmRlbmN5LgoKSSBuZWVkIHRvIGNvbmZpcm0gdGhpcy4gSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSBrZXJuZWwgc291cmNlIHRyZWUgYW5kIHRoZSBjb25maWcgb3B0aW9ucyB0byBzZWUgaWYgdGhlcmUmIzM5O3MgYW55IG1lbnRpb24gb2YgbW9ja2luZyBvciB2aXJ0dWFsaXphdGlvbiBzdXBwb3J0IGZvciBgbWx4NWAuIEl0JiMzOTtzIGNydWNpYWwgdG8gdW5kZXJzdGFuZCBpZiB0aGlzIGRyaXZlciByZWxpZXMgKnB1cmVseSogb24gcGh5c2ljYWwgaGFyZHdhcmUsIG9yIGlmIHRoZXJlJiMzOTtzIHNvbWUgcG9zc2liaWxpdHkgb2Ygc29mdHdhcmUgZW11bGF0aW9uIG9yIGEgdmlydHVhbCBidXMgaW50ZXJmYWNlIHRoYXQgd291bGQgYWxsb3cgdXMgdG8gZWZmZWN0aXZlbHkgZnV6eiBpdC4gSWYgaXQmIzM5O3MgdGhlIGZvcm1lciwgdGhlbiB3ZSBtaWdodCBoYXZlIGEgZGVhZCBlbmQgaW4gdGVybXMgb2YgZnV6emluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAyMDo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtDT05GSUdfTUxYNV9DT1JFJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGU9Nz1zdWJkaXItY2NmbGFncy15ICYjNDM7PSAtSSQoc3JjKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlLTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGU6OTpvYmotJChDT05GSUdfTUxYNV9DT1JFKSAmIzQzOz0gbWx4NV9jb3JlLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZS0xMC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGU9MTQ9bWx4NV9jb3JlLXkgOj1cdG1haW4ubyBjbWQubyBkZWJ1Z2ZzLm8gZncubyBlcS5vIHVhci5vIHBhZ2VhbGxvYy5vIFxcXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlLTI1LSNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZToyNjptbHg1X2NvcmUtJChDT05GSUdfTUxYNV9DT1JFX0VOKSAmIzQzOz0gZW4vcnF0Lm8gZW4vdGlyLm8gZW4vcnNzLm8gZW4vcnhfcmVzLm8gXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZS0yNy1cdFx0ZW4vY2hhbm5lbHMubyBlbl9tYWluLm8gZW5fY29tbW9uLm8gZW5fZnMubyBlbl9ldGh0b29sLm8gXFxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGU9Mzk9bWx4NV9jb3JlLSQoQ09ORklHX01MWDVfRU5fUlhORkMpICAgICYjNDM7PSBlbl9mc19ldGh0b29sLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZTo0MDptbHg1X2NvcmUtJChDT05GSUdfTUxYNV9DT1JFX0VOX0RDQikgJiM0Mzs9IGVuX2RjYm5sLm8gZW4vcG9ydF9idWZmZXIub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlLTQxLW1seDVfY29yZS0kKENPTkZJR19QQ0lfSFlQRVJWX0lOVEVSRkFDRSkgJiM0Mzs9IGVuL2h2X3ZoY2Ffc3RhdHMub1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZT05Mz1tbHg1X2NvcmUtJChDT05GSUdfUENJX0hZUEVSVl9JTlRFUkZBQ0UpICYjNDM7PSBsaWIvaHYubyBsaWIvaHZfdmhjYS5vXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlLTk3LSNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZTo5ODptbHg1X2NvcmUtJChDT05GSUdfTUxYNV9DT1JFX0lQT0lCKSAmIzQzOz0gaXBvaWIvaXBvaWIubyBpcG9pYi9ldGh0b29sLm8gaXBvaWIvaXBvaWJfdmxhbi5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGUtOTktXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Rldi5jPTU3PWJvb2wgbWx4NV9ldGhfc3VwcG9ydGVkKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZGV2LmMtNTgte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Rldi5jOjU5Olx0aWYgKCFJU19FTkFCTEVEKENPTkZJR19NTFg1X0NPUkVfRU4pKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Rldi5jLTYwLVx0XHRyZXR1cm4gZmFsc2U7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuLmg9OTA1PXN0cnVjdCBtbHg1ZV9wcml2IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4uaC05MTAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4uaDo5MTE6I2lmZGVmIENPTkZJR19NTFg1X0NPUkVfRU5fRENCXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4uaC05MTItXHRzdHJ1Y3QgbWx4NWVfZGNieF9kcCAgICAgICBkY2J4X2RwO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi5oLTk1Ny1cdHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvIG5pY19pbmZvO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuLmg6OTU4OiNpZmRlZiBDT05GSUdfTUxYNV9DT1JFX0VOX0RDQlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuLmgtOTU5LVx0c3RydWN0IG1seDVlX2RjYnggICAgICAgICAgZGNieDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vZGNibmwuaC02LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL2RjYm5sLmg6NzojaWZkZWYgQ09ORklHX01MWDVfQ09SRV9FTl9EQ0JcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9kY2JubC5oLTgtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3NlbHEuYz0xMzI9dm9pZCBtbHg1ZV9zZWxxX2NhbmNlbChzdHJ1Y3QgbWx4NWVfc2VscSAqc2VscSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vc2VscS5jLTEzOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9zZWxxLmM6MTQwOiNpZmRlZiBDT05GSUdfTUxYNV9DT1JFX0VOX0RDQlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3NlbHEuYy0xNDEtc3RhdGljIGludCBtbHg1ZV9nZXRfZHNjcF91cChzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vc2VscS5jPTE1ND1zdGF0aWMgaW50IG1seDVlX2dldF91cChzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9zZWxxLmMtMTU1LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9zZWxxLmM6MTU2OiNpZmRlZiBDT05GSUdfTUxYNV9DT1JFX0VOX0RDQlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3NlbHEuYy0xNTctXHRpZiAoUkVBRF9PTkNFKHByaXYtXHUwMDNlZGNieF9kcC50cnVzdF9zdGF0ZSkgPT0gTUxYNV9RUFRTX1RSVVNUX0RTQ1ApXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3J4LmM9MjQ4ND1pbnQgbWx4NWVfcG9sbF9yeF9jcShzdHJ1Y3QgbWx4NWVfY3EgKmNxLCBpbnQgYnVkZ2V0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9yeC5jLTI1MTYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fcnguYzoyNTE3OiNpZmRlZiBDT05GSUdfTUxYNV9DT1JFX0lQT0lCXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fcnguYy0yNTE4LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9yeC5jPTI2NDE9Y29uc3Qgc3RydWN0IG1seDVlX3J4X2hhbmRsZXJzIG1seDVpX3J4X2hhbmRsZXJzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9yeC5jLTI2NDQtfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9yeC5jOjI2NDU6I2VuZGlmIC8qIENPTkZJR19NTFg1X0NPUkVfSVBPSUIgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9yeC5jLTI2NDYtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3RjLmM9MTAwNz1zdGF0aWMgaW50IG1seDVlX2hhaXJwaW5fZ2V0X3ByaW8oc3RydWN0IG1seDVlX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3RjLmMtMTAxNC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl90Yy5jOjEwMTU6I2lmZGVmIENPTkZJR19NTFg1X0NPUkVfRU5fRENCXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fdGMuYy0xMDE2LVx0aWYgKHByaXYtXHUwMDNlZGNieF9kcC50cnVzdF9zdGF0ZSAhPSBNTFg1X1FQVFNfVFJVU1RfUENQKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3R4LmM9ODcyPXZvaWQgbWx4NWVfZnJlZV90eHFzcV9kZXNjcyhzdHJ1Y3QgbWx4NWVfdHhxc3EgKnNxKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl90eC5jLTkxNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl90eC5jOjkxODojaWZkZWYgQ09ORklHX01MWDVfQ09SRV9JUE9JQlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3R4LmMtOTE5LXN0YXRpYyBpbmxpbmUgdm9pZFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9pcG9pYi9pcG9pYi5oLTM1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2lwb2liL2lwb2liLmg6MzY6I2lmZGVmIENPTkZJR19NTFg1X0NPUkVfSVBPSUJcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9pcG9pYi9pcG9pYi5oLTM3LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9pcG9pYi9pcG9pYi5oPTEzMD12b2lkIG1seDVpX3BhcmVudF9wdXQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvaXBvaWIvaXBvaWIuaC0xMzEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvaXBvaWIvaXBvaWIuaDoxMzI6I2VuZGlmIC8qIENPTkZJR19NTFg1X0NPUkVfSVBPSUIgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9pcG9pYi9pcG9pYi5oLTEzMy0jZW5kaWYgLyogX19NTFg1RV9JUE9CX0hfXyAqL1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvc2QuaD0yND12b2lkIG1seDVfc2RfcHV0X2FkZXYoc3RydWN0IGF1eGlsaWFyeV9kZXZpY2UgKmFjdHVhbF9hZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvc2QuaC0yNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvc2QuaDoyNzojaWZkZWYgQ09ORklHX01MWDVfQ09SRV9FTlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9zZC5oLTI4LWJvb2wgbWx4NV9zZF9pc19zdXBwb3J0ZWQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9zZC5oPTM3PXZvaWQgbWx4NV9zZF9jbGVhbnVwKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9zZC5oLTM4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9zZC5oOjM5OiNpZmRlZiBDT05GSUdfTUxYNV9DT1JFX0VOXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL3NkLmgtNDAtc3RydWN0IG1seDVfZGV2Y29tX2NvbXBfZGV2ICptbHg1X3NkX2dldF9kZXZjb20oc3RydWN0IG1seDVfY29yZV9kZXYgKmRldik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21seDVfY29yZS5oPTM5Nj12b2lkIG1seDVfZndfdmVyc2lvbl9xdWVyeShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB1MzIgKnJ1bm5pbmdfdmVyLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tbHg1X2NvcmUuaC0zOTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWx4NV9jb3JlLmg6Mzk5OiNpZmRlZiBDT05GSUdfTUxYNV9DT1JFX0VOXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWx4NV9jb3JlLmgtNDAwLWludCBtbHg1ZV9pbml0KHZvaWQpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDIwOjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkyMDMKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgaXNzdWU6CgoqKktjb25maWcgQ2hlY2sgZm9yIE1MWDVfQ09SRSoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gbWFrZSBzdXJlIGBNTFg1X0NPUkVgIGlzIHByb3Blcmx5IGNvbmZpZ3VyZWQuIE15IGZpcnN0IHRob3VnaHQgaXMgdG8gZGl2ZSBpbnRvIHRoZSBLY29uZmlnIGZpbGVzLiBJIG5lZWQgdG8gcXVpY2tseSB2ZXJpZnkgaXRzIGRlcGVuZGVuY2llcyBhbmQgcG90ZW50aWFsIHNldHRpbmdzLiBJcyBpdCBlbmFibGVkIGFzIGEgbW9kdWxlIG9yIGJ1aWx0LWluPyBBcmUgdGhlcmUgYW55IHJlbGV2YW50IGNvbmRpdGlvbmFscyBJIG5lZWQgdG8gYmUgYXdhcmUgb2Y/IEFyZSB0aGVyZSBvdGhlciBmZWF0dXJlcyBpdCBpbXBhY3RzIG9yIHRoYXQgZGVwZW5kIG9uIGl0PyBJJiMzOTtsbCBuZWVkIHRvIGNvbmZpcm0gdGhlIGRlZmF1bHQgY29uZmlndXJhdGlvbiBhbmQgd2hldGhlciBhbnkgb3ZlcnJpZGluZyBvcHRpb25zIGFyZSBwcmVzZW50IHRoYXQgbWlnaHQgYmUgaW5mbHVlbmNpbmcgaXRzIGJlaGF2aW9yLiBTcGVjaWZpY2FsbHksIEkmIzM5O20gbG9va2luZyBmb3Igd2hlcmUgaXQmIzM5O3MgZGVmaW5lZCwgaXRzIHJlbGF0aW9uc2hpcHMgdG8gb3RoZXIgb3B0aW9ucywgYW5kIGFueSBhc3NvY2lhdGVkIHN5bWJvbHMgb3IgaGVscCB0ZXh0IHRoYXQgbWlnaHQgc2hlZCBsaWdodCBvbiBpdHMgY3VycmVudCBzdGF0ZS4gVGltZSB0byBnZXQgaW50byB0aGUgZGV0YWlscyBhbmQgbWFrZSBzdXJlIEkmIzM5O20gbm90IG1pc3NpbmcgYW55dGhpbmcgb2J2aW91cyEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAyMDo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTUxYNV9DT1JFJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnLTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZzo2OmNvbmZpZyBNTFg1X0NPUkVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnLTctXHR0cmlzdGF0ZSBcJiMzNDtNZWxsYW5veCA1dGggZ2VuZXJhdGlvbiBuZXR3b3JrIGFkYXB0ZXJzIChDb25uZWN0WCBzZXJpZXMpIGNvcmUgZHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWc9MTk9Y29uZmlnIE1MWDVfRlBHQVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnLTI4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWc6Mjk6Y29uZmlnIE1MWDVfQ09SRV9FTlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWctMzAtXHRib29sIFwmIzM0O01lbGxhbm94IDV0aCBnZW5lcmF0aW9uIG5ldHdvcmsgYWRhcHRlcnMgKENvbm5lY3RYIHNlcmllcykgRXRoZXJuZXQgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnPTExMj1jb25maWcgTUxYNV9UQ19TQU1QTEVcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZy0xMjQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZzoxMjU6Y29uZmlnIE1MWDVfQ09SRV9FTl9EQ0JcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnLTEyNi1cdGJvb2wgXCYjMzQ7RGF0YSBDZW50ZXIgQnJpZGdpbmcgKERDQikgU3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnLTEzNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnOjEzNzpjb25maWcgTUxYNV9DT1JFX0lQT0lCXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZy0xMzgtXHRib29sIFwmIzM0O01lbGxhbm94IDV0aCBnZW5lcmF0aW9uIG5ldHdvcmsgYWRhcHRlcnMgKGNvbm5lY3RYIHNlcmllcykgSVBvSUIgb2ZmbG9hZHMgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDIwOjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk5MTEKCQkJCQkJCW91dHB1dDogMTEyCgkJCQkJCQl0aG91Z2h0czogMzg3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IFRyaWFnZSBEZWNpc2lvbjogTm90IFdvcnRoIEZ1enppbmcqKgoKT2theSwgbGV0JiMzOTtzIHdhbGsgdGhyb3VnaCB0aGlzLiBJIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgcGF0Y2ggc2VyaWVzIGlzIHdvcnRoIHRoZSBlZmZvcnQgb2YgZnV6emluZy4gRmlyc3QsIEkmIzM5O20gY2hlY2tpbmcgU2VjdGlvbiAyIG9mIHRoZSB0cmlhZ2UgcGhpbG9zb3BoeS4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIGxvb2tpbmcgYXQgd2hlbiB3ZSBzaG91bGQgZmxhZyBzb21ldGhpbmcgYXMgYFdvcnRoRnV6emluZz1mYWxzZWAuIFRoZSByZWxldmFudCBjb25kaXRpb24gaGVyZSBpczogJiMzNDtTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUuJiMzNDsgVGhhdCBtZWFucyBjb2RlIHRoYXQsIGZvciBhbGwgaW50ZW50cyBhbmQgcHVycG9zZXMsIGNhbm5vdCBiZSBleGVjdXRlZCBpbiBvdXIgc3RhbmRhcmQgZnV6emluZyBlbnZpcm9ubWVudHMgKFFFTVUsIEdDRSkgYmVjYXVzZSBpdCBkZXBlbmRzIG9uIHNwZWNpZmljIGhhcmR3YXJlLgoKUmlnaHQsIHNvLCB0aGUgTWVsbGFub3ggYG1seDVgIGRyaXZlci4uLiBpdCYjMzk7cyBhIHZlbmRvci1zcGVjaWZpYyBTbWFydE5JQyBkcml2ZXIsIHNwZWNpZmljYWxseSB0aGUgQ29ubmVjdFggc2VyaWVzLiBUaGVzZSBhZGFwdGVycyByZXF1aXJlIHBoeXNpY2FsIE1lbGxhbm94IGhhcmR3YXJlIG9yIEFTSUMgdGhhdCBpc24mIzM5O3QgZW11bGF0ZWQgaW4gdGhlIHR5cGljYWwgUUVNVSBvciBHb29nbGUgQ29tcHV0ZSBFbmdpbmUgc2V0dXBzIHdlJiMzOTtyZSB1c2luZyBmb3IgZnV6emluZy4gTm8gd2F5IGFyb3VuZCB0aGF0LgoKTm93LCBsZXQmIzM5O3MgbG9vayBhdCB0aGUgYWN0dWFsIGNvZGUgY2hhbmdlcy4gSSBzZWUgdGhlIG1vZGlmaWNhdGlvbnMgYXJlIGxpbWl0ZWQgdG8gYGRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9yZXAuY2AsIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fcmVwLmhgLCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Vzdy9kZXZsaW5rX3BvcnQuY2AsIGFuZCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Vzd2l0Y2guaGAuICBUaGlzIGlzIGFsbCBpbnNpZGUgdGhlIGBtbHg1X2NvcmVgIGRyaXZlciwgYW5kIHNwZWNpZmljYWxseSB0YXJnZXRzIHN3aXRjaGRldiByZXByZXNlbnRvciBhbmQgZGV2bGluayBwb3J0IGhlYWx0aCByZXBvcnRlciBoYW5kbGluZyBmb3IgdGhlIE1lbGxhbm94IGVzd2l0Y2guCgpBbHJpZ2h0LCB0aGF0JiMzOTtzIHByZXR0eSBjbGVhci4gR2l2ZW4gdGhvc2Ugc3BlY2lmaWMgZmlsZSBsb2NhdGlvbnMsIHRoaXMgY29kZSBpcyAqc3RydWN0dXJhbGx5KiB1bnJlYWNoYWJsZSBpbiBvdXIgc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMuIFdlJiMzOTtkIG5lZWQgYSBwaHlzaWNhbCBNZWxsYW5veCBDb25uZWN0WCBjYXJkIHRvIGV2ZW4gdG91Y2ggaXQsIHdoaWNoIGlzIGJleW9uZCBvdXIgY3VycmVudCBzY29wZS4KClRoZXJlZm9yZSwgYFdvcnRoRnV6emluZz1mYWxzZWAuCgpOb3csIGJlZm9yZSBJIGNhbGwgYHNldC1yZXN1bHRzYCwgbGV0JiMzOTtzIGp1c3QgY29uZmlybSB0aGUgcmVxdWlyZW1lbnRzIGFyZSBtZXQuIFRoZSBgV29ydGhGdXp6aW5nYCBpcyBzZXQgYXMgSSBuZWVkLCBhbmQgdGhlIGBGb2N1c1N5bWJvbHNgIGFuZCBgRW5hYmxlQ29uZmlnc2AgYXJlIGVtcHR5IGFzIHRoZXkgc2hvdWxkIGJlIGZvciB0aGlzIHNjZW5hcmlvLiAgVGhlIHJlYXNvbmluZyBpcyBjb25jaXNlOiBpdCYjMzk7cyBNZWxsYW5veCBoYXJkd2FyZS1zcGVjaWZpYyBhbmQgbm90IGVtdWxhdGVkLgoKWXVwLCBldmVyeXRoaW5nIGNoZWNrcyBvdXQuIFRpbWUgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDIwOjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgbW9kaWZpZWQgY29kZSBpcyBleGNsdXNpdmVseSB3aXRoaW4gdGhlIE1lbGxhbm94IG1seDUgZHJpdmVyIChkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvKSwgd2hpY2ggZHJpdmVzIHBoeXNpY2FsIE1lbGxhbm94IENvbm5lY3RYIG5ldHdvcmsgYWRhcHRlcnMgLyBTbWFydE5JQ3MuIEJlY2F1c2UgaXQgcmVxdWlyZXMgcGh5c2ljYWwgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBzeXprYWxsZXIgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIG1vZGlmaWVkIGNvZGUgaXMgZXhjbHVzaXZlbHkgd2l0aGluIHRoZSBNZWxsYW5veCBtbHg1IGRyaXZlciAoZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlLyksIHdoaWNoIGRyaXZlcyBwaHlzaWNhbCBNZWxsYW5veCBDb25uZWN0WCBuZXR3b3JrIGFkYXB0ZXJzIC8gU21hcnROSUNzLiBCZWNhdXNlIGl0IHJlcXVpcmVzIHBoeXNpY2FsIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3Igc3l6a2FsbGVyIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDIwOjQzPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOS0wNlQyMDo0MzozMy45MTI4ODQzNDRaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODExODg5MjgxNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIG1vZGlmaWVkIGNvZGUgaXMgZXhjbHVzaXZlbHkgd2l0aGluIHRoZSBNZWxsYW5veCBtbHg1IGRyaXZlciAoZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlLyksIHdoaWNoIGRyaXZlcyBwaHlzaWNhbCBNZWxsYW5veCBDb25uZWN0WCBuZXR3b3JrIGFkYXB0ZXJzIC8gU21hcnROSUNzLiBCZWNhdXNlIGl0IHJlcXVpcmVzIHBoeXNpY2FsIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3Igc3l6a2FsbGVyIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQyMDo0MzozMy45MTI4OTA3NzNaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYzMzk0NTc2OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGM1ZGRkNzM5ZmIzMDkxZDJjNDMwZmRiY2EzMWZjYTBmMjZlNDcyODFcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFN1biBTZXAgNiAyMDo0MzozMyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fcmVwLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fcmVwLmNcXG5pbmRleCBjZTc2NTY5MmZkMTliLi44OGExNzBlNDBiZDkzIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9yZXAuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9yZXAuY1xcbkBAIC01Niw3ICs1Niw2IEBAXFxuICNpbmNsdWRlIFxcXCJsaWIvdnhsYW4uaFxcXCJcXG4gI2RlZmluZSBDUkVBVEVfVFJBQ0VfUE9JTlRTXFxuICNpbmNsdWRlIFxcXCJkaWFnL2VuX3JlcF90cmFjZXBvaW50LmhcXFwiXFxuLSNpbmNsdWRlIFxcXCJkaWFnL3JlcG9ydGVyX3ZuaWMuaFxcXCJcXG4gI2luY2x1ZGUgXFxcImVuX2FjY2VsL2lwc2VjLmhcXFwiXFxuICNpbmNsdWRlIFxcXCJlbi90Yy9pbnRfcG9ydC5oXFxcIlxcbiAjaW5jbHVkZSBcXFwiZW4vcHRwLmhcXFwiXFxuQEAgLTE0MzksNTEgKzE0MzgsNiBAQCBzdGF0aWMgdW5zaWduZWQgaW50IG1seDVlX3VsX3JlcF9zdGF0c19ncnBzX251bShzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdilcXG4gXFx0cmV0dXJuIEFSUkFZX1NJWkUobWx4NWVfdWxfcmVwX3N0YXRzX2dycHMpO1xcbiB9XFxuIFxcbi1zdGF0aWMgaW50XFxuLW1seDVlX3JlcF92bmljX3JlcG9ydGVyX2RpYWdub3NlKHN0cnVjdCBkZXZsaW5rX2hlYWx0aF9yZXBvcnRlciAqcmVwb3J0ZXIsXFxuLVxcdFxcdFxcdFxcdCBzdHJ1Y3QgZGV2bGlua19mbXNnICpmbXNnLFxcbi1cXHRcXHRcXHRcXHQgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxcbi17XFxuLVxcdHN0cnVjdCBtbHg1ZV9yZXBfcHJpdiAqcnByaXYgPSBkZXZsaW5rX2hlYWx0aF9yZXBvcnRlcl9wcml2KHJlcG9ydGVyKTtcXG4tXFx0c3RydWN0IG1seDVfZXN3aXRjaF9yZXAgKnJlcCA9IHJwcml2LVxcdTAwM2VyZXA7XFxuLVxcbi1cXHRtbHg1X3JlcG9ydGVyX3ZuaWNfZGlhZ25vc2VfY291bnRlcnMocmVwLVxcdTAwM2Vlc3ctXFx1MDAzZWRldiwgZm1zZywgcmVwLVxcdTAwM2V2cG9ydCxcXG4tXFx0XFx0XFx0XFx0XFx0ICAgICB0cnVlKTtcXG4tXFx0cmV0dXJuIDA7XFxuLX1cXG4tXFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZGV2bGlua19oZWFsdGhfcmVwb3J0ZXJfb3BzIG1seDVfcmVwX3ZuaWNfcmVwb3J0ZXJfb3BzID0ge1xcbi1cXHQubmFtZSA9IFxcXCJ2bmljXFxcIixcXG4tXFx0LmRpYWdub3NlID0gbWx4NWVfcmVwX3ZuaWNfcmVwb3J0ZXJfZGlhZ25vc2UsXFxuLX07XFxuLVxcbi1zdGF0aWMgdm9pZCBtbHg1ZV9yZXBfdm5pY19yZXBvcnRlcl9jcmVhdGUoc3RydWN0IG1seDVlX3ByaXYgKnByaXYsXFxuLVxcdFxcdFxcdFxcdFxcdCAgIHN0cnVjdCBkZXZsaW5rX3BvcnQgKmRsX3BvcnQpXFxuLXtcXG4tXFx0c3RydWN0IG1seDVlX3JlcF9wcml2ICpycHJpdiA9IHByaXYtXFx1MDAzZXBwcml2O1xcbi1cXHRzdHJ1Y3QgZGV2bGlua19oZWFsdGhfcmVwb3J0ZXIgKnJlcG9ydGVyO1xcbi1cXG4tXFx0cmVwb3J0ZXIgPSBkZXZsX3BvcnRfaGVhbHRoX3JlcG9ydGVyX2NyZWF0ZShkbF9wb3J0LFxcbi1cXHRcXHRcXHRcXHRcXHRcXHQgICAgXFx1MDAyNm1seDVfcmVwX3ZuaWNfcmVwb3J0ZXJfb3BzLFxcbi1cXHRcXHRcXHRcXHRcXHRcXHQgICAgcnByaXYpO1xcbi1cXHRpZiAoSVNfRVJSKHJlcG9ydGVyKSkge1xcbi1cXHRcXHRtbHg1X2NvcmVfZXJyKHByaXYtXFx1MDAzZW1kZXYsXFxuLVxcdFxcdFxcdCAgICAgIFxcXCJGYWlsZWQgdG8gY3JlYXRlIHJlcHJlc2VudG9yIHZuaWMgcmVwb3J0ZXIsIGVyciA9ICVwZVxcXFxuXFxcIixcXG4tXFx0XFx0XFx0ICAgICAgcmVwb3J0ZXIpO1xcbi1cXHRcXHRyZXR1cm47XFxuLVxcdH1cXG4tXFxuLVxcdHJwcml2LVxcdTAwM2VyZXBfdm5pY19yZXBvcnRlciA9IHJlcG9ydGVyO1xcbi19XFxuLVxcbi1zdGF0aWMgdm9pZCBtbHg1ZV9yZXBfdm5pY19yZXBvcnRlcl9kZXN0cm95KHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2KVxcbi17XFxuLVxcdHN0cnVjdCBtbHg1ZV9yZXBfcHJpdiAqcnByaXYgPSBwcml2LVxcdTAwM2VwcHJpdjtcXG4tXFxuLVxcdGlmICghSVNfRVJSX09SX05VTEwocnByaXYtXFx1MDAzZXJlcF92bmljX3JlcG9ydGVyKSlcXG4tXFx0XFx0ZGV2bF9oZWFsdGhfcmVwb3J0ZXJfZGVzdHJveShycHJpdi1cXHUwMDNlcmVwX3ZuaWNfcmVwb3J0ZXIpO1xcbi19XFxuLVxcbiBzdGF0aWMgY29uc3Qgc3RydWN0IG1seDVlX3Byb2ZpbGUgbWx4NWVfcmVwX3Byb2ZpbGUgPSB7XFxuIFxcdC5pbml0XFx0XFx0XFx0PSBtbHg1ZV9pbml0X3JlcCxcXG4gXFx0LmNsZWFudXBcXHRcXHQ9IG1seDVlX2NsZWFudXBfcmVwLFxcbkBAIC0xNjA3LDEwICsxNTYxLDggQEAgbWx4NWVfdnBvcnRfdmZfcmVwX2xvYWQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgc3RydWN0IG1seDVfZXN3aXRjaF9yZXAgKnJlcClcXG4gXFxuIFxcdGRsX3BvcnQgPSBtbHg1X2Vzd19vZmZsb2Fkc19kZXZsaW5rX3BvcnQoZGV2LVxcdTAwM2Vwcml2LmVzd2l0Y2gsXFxuIFxcdFxcdFxcdFxcdFxcdFxcdCBycHJpdi1cXHUwMDNlcmVwLVxcdTAwM2V2cG9ydCk7XFxuLVxcdGlmICghSVNfRVJSKGRsX3BvcnQpKSB7XFxuK1xcdGlmICghSVNfRVJSKGRsX3BvcnQpKVxcbiBcXHRcXHRTRVRfTkVUREVWX0RFVkxJTktfUE9SVChuZXRkZXYsIGRsX3BvcnQpO1xcbi1cXHRcXHRtbHg1ZV9yZXBfdm5pY19yZXBvcnRlcl9jcmVhdGUocHJpdiwgZGxfcG9ydCk7XFxuLVxcdH1cXG4gXFxuIFxcdGVyciA9IHJlZ2lzdGVyX25ldGRldihuZXRkZXYpO1xcbiBcXHRpZiAoZXJyKSB7XFxuQEAgLTE2MjMsNyArMTU3NSw2IEBAIG1seDVlX3Zwb3J0X3ZmX3JlcF9sb2FkKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHN0cnVjdCBtbHg1X2Vzd2l0Y2hfcmVwICpyZXApXFxuIFxcdHJldHVybiAwO1xcbiBcXG4gZXJyX2RldGFjaF9uZXRkZXY6XFxuLVxcdG1seDVlX3JlcF92bmljX3JlcG9ydGVyX2Rlc3Ryb3kocHJpdik7XFxuIFxcdG1seDVlX2RldGFjaF9uZXRkZXYobmV0ZGV2X3ByaXYobmV0ZGV2KSk7XFxuIGVycl9jbGVhbnVwX3Byb2ZpbGU6XFxuIFxcdHByaXYtXFx1MDAzZXByb2ZpbGUtXFx1MDAzZWNsZWFudXAocHJpdik7XFxuQEAgLTE2ODEsNyArMTYzMiw2IEBAIG1seDVlX3Zwb3J0X3JlcF91bmxvYWQoc3RydWN0IG1seDVfZXN3aXRjaF9yZXAgKnJlcClcXG4gXFx0fVxcbiBcXG4gXFx0dW5yZWdpc3Rlcl9uZXRkZXYobmV0ZGV2KTtcXG4tXFx0bWx4NWVfcmVwX3ZuaWNfcmVwb3J0ZXJfZGVzdHJveShwcml2KTtcXG4gXFx0bWx4NWVfZGV0YWNoX25ldGRldihwcml2KTtcXG4gXFx0cHJpdi1cXHUwMDNlcHJvZmlsZS1cXHUwMDNlY2xlYW51cChwcml2KTtcXG4gXFx0bWx4NWVfZGVzdHJveV9uZXRkZXYobmV0ZGV2KTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3JlcC5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3JlcC5oXFxuaW5kZXggNzA2NDBmYTFhZDdiYy4uYmNkN2I0ZTgxNGQwNiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fcmVwLmhcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fcmVwLmhcXG5AQCAtMTE4LDcgKzExOCw2IEBAIHN0cnVjdCBtbHg1ZV9yZXBfcHJpdiB7XFxuIFxcdHN0cnVjdCBydG5sX2xpbmtfc3RhdHM2NCBwcmV2X3ZmX3Zwb3J0X3N0YXRzO1xcbiBcXHRzdHJ1Y3QgbWx4NV9mbG93X2hhbmRsZSAqc2VuZF90b192cG9ydF9tZXRhX3J1bGU7XFxuIFxcdHN0cnVjdCByaGFzaHRhYmxlIHRjX2h0O1xcbi1cXHRzdHJ1Y3QgZGV2bGlua19oZWFsdGhfcmVwb3J0ZXIgKnJlcF92bmljX3JlcG9ydGVyO1xcbiB9O1xcbiBcXG4gc3RhdGljIGlubGluZVxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXN3L2RldmxpbmtfcG9ydC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Vzdy9kZXZsaW5rX3BvcnQuY1xcbmluZGV4IDM2YjAwYTg1NmJjMjEuLmZkYzk2MGVhNTMzMTggMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Vzdy9kZXZsaW5rX3BvcnQuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lc3cvZGV2bGlua19wb3J0LmNcXG5AQCAtNCw2ICs0LDI2IEBAXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9tbHg1L2RyaXZlci5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXFwiZXN3aXRjaC5oXFxcIlxcbiAjaW5jbHVkZSBcXFwiZGV2bGluay5oXFxcIlxcbisjaW5jbHVkZSBcXFwiZGlhZy9yZXBvcnRlcl92bmljLmhcXFwiXFxuK1xcbitzdGF0aWMgaW50XFxuK21seDVfZXN3X3JlcF92bmljX3JlcG9ydGVyX2RpYWdub3NlKHN0cnVjdCBkZXZsaW5rX2hlYWx0aF9yZXBvcnRlciAqcmVwb3J0ZXIsXFxuK1xcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgZGV2bGlua19mbXNnICpmbXNnLFxcbitcXHRcXHRcXHRcXHQgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxcbit7XFxuK1xcdHN0cnVjdCBtbHg1X3Zwb3J0ICp2cG9ydCA9IGRldmxpbmtfaGVhbHRoX3JlcG9ydGVyX3ByaXYocmVwb3J0ZXIpO1xcbitcXG4rXFx0bWx4NV9yZXBvcnRlcl92bmljX2RpYWdub3NlX2NvdW50ZXJzKHZwb3J0LVxcdTAwM2VkZXYsIGZtc2csIHZwb3J0LVxcdTAwM2V2cG9ydCxcXG4rXFx0XFx0XFx0XFx0XFx0ICAgICB0cnVlKTtcXG4rXFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbitzdGF0aWMgY29uc3RcXG4rc3RydWN0IGRldmxpbmtfaGVhbHRoX3JlcG9ydGVyX29wcyBtbHg1X2Vzd19yZXBfdm5pY19yZXBvcnRlcl9vcHMgPSB7XFxuK1xcdC5uYW1lID0gXFxcInZuaWNcXFwiLFxcbitcXHQuZGlhZ25vc2UgPSBtbHg1X2Vzd19yZXBfdm5pY19yZXBvcnRlcl9kaWFnbm9zZSxcXG4rfTtcXG4gXFxuIHN0YXRpYyB2b2lkXFxuIG1seDVfZXN3X2dldF9wb3J0X3BhcmVudF9pZChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBzdHJ1Y3QgbmV0ZGV2X3BoeXNfaXRlbV9pZCAqcHBpZClcXG5AQCAtMjIwLDYgKzI0MCw3IEBAIHN0YXRpYyB2b2lkIG1seDVfZXN3X2RldmxpbmtfcG9ydF9yZXNfdW5yZWdpc3RlcihzdHJ1Y3QgZGV2bGlua19wb3J0ICpkbF9wb3J0KVxcbiBcXG4gaW50IG1seDVfZXN3X29mZmxvYWRzX2RldmxpbmtfcG9ydF9yZWdpc3RlcihzdHJ1Y3QgbWx4NV9lc3dpdGNoICplc3csIHN0cnVjdCBtbHg1X3Zwb3J0ICp2cG9ydClcXG4ge1xcbitcXHRzdHJ1Y3QgZGV2bGlua19oZWFsdGhfcmVwb3J0ZXIgKnJlcG9ydGVyO1xcbiBcXHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2ID0gZXN3LVxcdTAwM2VkZXY7XFxuIFxcdGNvbnN0IHN0cnVjdCBkZXZsaW5rX3BvcnRfb3BzICpvcHM7XFxuIFxcdHN0cnVjdCBtbHg1X2RldmxpbmtfcG9ydCAqZGxfcG9ydDtcXG5AQCAtMjU1LDYgKzI3NiwxNiBAQCBpbnQgbWx4NV9lc3dfb2ZmbG9hZHNfZGV2bGlua19wb3J0X3JlZ2lzdGVyKHN0cnVjdCBtbHg1X2Vzd2l0Y2ggKmVzdywgc3RydWN0IG1seFxcbiBcXHRcXHRtbHg1X2NvcmVfZGJnKGRldiwgXFxcIkZhaWxlZCB0byByZWdpc3RlciBwb3J0IHJlc291cmNlczogJWRcXFxcblxcXCIsXFxuIFxcdFxcdFxcdCAgICAgIGVycik7XFxuIFxcbitcXHRyZXBvcnRlciA9IGRldmxfcG9ydF9oZWFsdGhfcmVwb3J0ZXJfY3JlYXRlKFxcbitcXHRcXHRcXHUwMDI2ZGxfcG9ydC1cXHUwMDNlZGxfcG9ydCwgXFx1MDAyNm1seDVfZXN3X3JlcF92bmljX3JlcG9ydGVyX29wcyxcXG4rXFx0XFx0dnBvcnQpO1xcbitcXHRpZiAoSVNfRVJSKHJlcG9ydGVyKSlcXG4rXFx0XFx0bWx4NV9jb3JlX2VycihkZXYsXFxuK1xcdFxcdFxcdCAgICAgIFxcXCJGYWlsZWQgdG8gY3JlYXRlIHZuaWMgaGVhbHRoIHJlcG9ydGVyIGZvciB2cG9ydCAlZDogJXBlXFxcXG5cXFwiLFxcbitcXHRcXHRcXHQgICAgICB2cG9ydF9udW0sIHJlcG9ydGVyKTtcXG4rXFx0ZWxzZVxcbitcXHRcXHRkbF9wb3J0LVxcdTAwM2V2bmljX3JlcG9ydGVyID0gcmVwb3J0ZXI7XFxuK1xcbiBcXHRyZXR1cm4gMDtcXG4gXFxuIHJhdGVfZXJyOlxcbkBAIC0yNjksNiArMzAwLDEyIEBAIHZvaWQgbWx4NV9lc3dfb2ZmbG9hZHNfZGV2bGlua19wb3J0X3VucmVnaXN0ZXIoc3RydWN0IG1seDVfdnBvcnQgKnZwb3J0KVxcbiBcXHRpZiAoIXZwb3J0LVxcdTAwM2VkbF9wb3J0KVxcbiBcXHRcXHRyZXR1cm47XFxuIFxcdGRsX3BvcnQgPSB2cG9ydC1cXHUwMDNlZGxfcG9ydDtcXG4rXFxuK1xcdGlmIChkbF9wb3J0LVxcdTAwM2V2bmljX3JlcG9ydGVyKSB7XFxuK1xcdFxcdGRldmxfaGVhbHRoX3JlcG9ydGVyX2Rlc3Ryb3koZGxfcG9ydC1cXHUwMDNldm5pY19yZXBvcnRlcik7XFxuK1xcdFxcdGRsX3BvcnQtXFx1MDAzZXZuaWNfcmVwb3J0ZXIgPSBOVUxMO1xcbitcXHR9XFxuK1xcbiBcXHRtbHg1X2Vzd19kZXZsaW5rX3BvcnRfcmVzX3VucmVnaXN0ZXIoXFx1MDAyNmRsX3BvcnQtXFx1MDAzZWRsX3BvcnQpO1xcbiBcXG4gXFx0ZGV2bF9yYXRlX2xlYWZfZGVzdHJveShcXHUwMDI2ZGxfcG9ydC1cXHUwMDNlZGxfcG9ydCk7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lc3dpdGNoLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXN3aXRjaC5oXFxuaW5kZXggYzY1NWY2ZThkYTFjZS4uOGIxZjkzYjEzZWE5YyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXN3aXRjaC5oXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Vzd2l0Y2guaFxcbkBAIC0xODksNiArMTg5LDcgQEAgc3RydWN0IG1seDVfdnBvcnQ7XFxuIHN0cnVjdCBtbHg1X2RldmxpbmtfcG9ydCB7XFxuIFxcdHN0cnVjdCBkZXZsaW5rX3BvcnQgZGxfcG9ydDtcXG4gXFx0c3RydWN0IG1seDVfdnBvcnQgKnZwb3J0O1xcbitcXHRzdHJ1Y3QgZGV2bGlua19oZWFsdGhfcmVwb3J0ZXIgKnZuaWNfcmVwb3J0ZXI7XFxuIH07XFxuIFxcbiBzdGF0aWMgaW5saW5lIHZvaWQgbWx4NV9kZXZsaW5rX3BvcnRfaW5pdChzdHJ1Y3QgbWx4NV9kZXZsaW5rX3BvcnQgKmRsX3BvcnQsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDIwOjQzOjM0LjU0NzczOTM4MloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6MTc0ODQwMTg0NTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIG1vZGlmaWVkIGNvZGUgaXMgZXhjbHVzaXZlbHkgd2l0aGluIHRoZSBNZWxsYW5veCBtbHg1IGRyaXZlciAoZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlLyksIHdoaWNoIGRyaXZlcyBwaHlzaWNhbCBNZWxsYW5veCBDb25uZWN0WCBuZXR3b3JrIGFkYXB0ZXJzIC8gU21hcnROSUNzLiBCZWNhdXNlIGl0IHJlcXVpcmVzIHBoeXNpY2FsIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3Igc3l6a2FsbGVyIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzXG50b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsXG5hbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLlxuXG4tIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOlxuICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkXG4gIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuXG4gIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCxcbiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLlxuXG4tIERPIE5PVCBCTElORExZIFRSVVNUIFwiTk8gRlVOQ1RJT05BTCBDSEFOR0VcIiAoTkZDSSkgT1IgXCJSRUZBQ1RPUklOR1wiIENMQUlNUzpcbiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyBcImNsZWFudXBzXCIsIFwicmVmYWN0b3JpbmdzXCIsIG9yIHN0YXRlXG4gIFwiTm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWRcIi4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuXG4gIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudFxuICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy5cbiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC5cblxuLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDpcbiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLFxuICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy5cbiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlclxuICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4yLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6XG5cbi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczpcbiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuXG4gICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pXG4gICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLlxuICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzXG4gICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy5cbiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuXG4tIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZTpcbiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOlxuICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZ1xuICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLlxuICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOlxuLSBDb3JlIFN1YnN5c3RlbXM6XG4gICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLFxuICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy5cbi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOlxuICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy5cbi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOlxuICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy5cbi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczpcbiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG40LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTilcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5XaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjpcblxuLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6XG4gIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzXG4gIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0XG4gIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLlxuICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgXCJmb2N1c2VkXCIsXG4gIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy5cblxuLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6XG4gIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50c1xuICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy5cblxuLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6XG4gIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2tcbiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuXG4gIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlclxuICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG41LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZTpcbi0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbi0gQ2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC5cbi0gU3RyaXAgYW55ICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGM1ZGRkNzM5ZmIzMDkxZDJjNDMwZmRiY2EzMWZjYTBmMjZlNDcyODFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIFNlcCA2IDIwOjQzOjMzIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3JlcC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3JlcC5jXG5pbmRleCBjZTc2NTY5MmZkMTliLi44OGExNzBlNDBiZDkzIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3JlcC5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fcmVwLmNcbkBAIC01Niw3ICs1Niw2IEBAXG4gI2luY2x1ZGUgXCJsaWIvdnhsYW4uaFwiXG4gI2RlZmluZSBDUkVBVEVfVFJBQ0VfUE9JTlRTXG4gI2luY2x1ZGUgXCJkaWFnL2VuX3JlcF90cmFjZXBvaW50LmhcIlxuLSNpbmNsdWRlIFwiZGlhZy9yZXBvcnRlcl92bmljLmhcIlxuICNpbmNsdWRlIFwiZW5fYWNjZWwvaXBzZWMuaFwiXG4gI2luY2x1ZGUgXCJlbi90Yy9pbnRfcG9ydC5oXCJcbiAjaW5jbHVkZSBcImVuL3B0cC5oXCJcbkBAIC0xNDM5LDUxICsxNDM4LDYgQEAgc3RhdGljIHVuc2lnbmVkIGludCBtbHg1ZV91bF9yZXBfc3RhdHNfZ3Jwc19udW0oc3RydWN0IG1seDVlX3ByaXYgKnByaXYpXG4gXHRyZXR1cm4gQVJSQVlfU0laRShtbHg1ZV91bF9yZXBfc3RhdHNfZ3Jwcyk7XG4gfVxuIFxuLXN0YXRpYyBpbnRcbi1tbHg1ZV9yZXBfdm5pY19yZXBvcnRlcl9kaWFnbm9zZShzdHJ1Y3QgZGV2bGlua19oZWFsdGhfcmVwb3J0ZXIgKnJlcG9ydGVyLFxuLVx0XHRcdFx0IHN0cnVjdCBkZXZsaW5rX2Ztc2cgKmZtc2csXG4tXHRcdFx0XHQgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuLXtcbi1cdHN0cnVjdCBtbHg1ZV9yZXBfcHJpdiAqcnByaXYgPSBkZXZsaW5rX2hlYWx0aF9yZXBvcnRlcl9wcml2KHJlcG9ydGVyKTtcbi1cdHN0cnVjdCBtbHg1X2Vzd2l0Y2hfcmVwICpyZXAgPSBycHJpdi1cdTAwM2VyZXA7XG4tXG4tXHRtbHg1X3JlcG9ydGVyX3ZuaWNfZGlhZ25vc2VfY291bnRlcnMocmVwLVx1MDAzZWVzdy1cdTAwM2VkZXYsIGZtc2csIHJlcC1cdTAwM2V2cG9ydCxcbi1cdFx0XHRcdFx0ICAgICB0cnVlKTtcbi1cdHJldHVybiAwO1xuLX1cbi1cbi1zdGF0aWMgY29uc3Qgc3RydWN0IGRldmxpbmtfaGVhbHRoX3JlcG9ydGVyX29wcyBtbHg1X3JlcF92bmljX3JlcG9ydGVyX29wcyA9IHtcbi1cdC5uYW1lID0gXCJ2bmljXCIsXG4tXHQuZGlhZ25vc2UgPSBtbHg1ZV9yZXBfdm5pY19yZXBvcnRlcl9kaWFnbm9zZSxcbi19O1xuLVxuLXN0YXRpYyB2b2lkIG1seDVlX3JlcF92bmljX3JlcG9ydGVyX2NyZWF0ZShzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdixcbi1cdFx0XHRcdFx0ICAgc3RydWN0IGRldmxpbmtfcG9ydCAqZGxfcG9ydClcbi17XG4tXHRzdHJ1Y3QgbWx4NWVfcmVwX3ByaXYgKnJwcml2ID0gcHJpdi1cdTAwM2VwcHJpdjtcbi1cdHN0cnVjdCBkZXZsaW5rX2hlYWx0aF9yZXBvcnRlciAqcmVwb3J0ZXI7XG4tXG4tXHRyZXBvcnRlciA9IGRldmxfcG9ydF9oZWFsdGhfcmVwb3J0ZXJfY3JlYXRlKGRsX3BvcnQsXG4tXHRcdFx0XHRcdFx0ICAgIFx1MDAyNm1seDVfcmVwX3ZuaWNfcmVwb3J0ZXJfb3BzLFxuLVx0XHRcdFx0XHRcdCAgICBycHJpdik7XG4tXHRpZiAoSVNfRVJSKHJlcG9ydGVyKSkge1xuLVx0XHRtbHg1X2NvcmVfZXJyKHByaXYtXHUwMDNlbWRldixcbi1cdFx0XHQgICAgICBcIkZhaWxlZCB0byBjcmVhdGUgcmVwcmVzZW50b3Igdm5pYyByZXBvcnRlciwgZXJyID0gJXBlXFxuXCIsXG4tXHRcdFx0ICAgICAgcmVwb3J0ZXIpO1xuLVx0XHRyZXR1cm47XG4tXHR9XG4tXG4tXHRycHJpdi1cdTAwM2VyZXBfdm5pY19yZXBvcnRlciA9IHJlcG9ydGVyO1xuLX1cbi1cbi1zdGF0aWMgdm9pZCBtbHg1ZV9yZXBfdm5pY19yZXBvcnRlcl9kZXN0cm95KHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2KVxuLXtcbi1cdHN0cnVjdCBtbHg1ZV9yZXBfcHJpdiAqcnByaXYgPSBwcml2LVx1MDAzZXBwcml2O1xuLVxuLVx0aWYgKCFJU19FUlJfT1JfTlVMTChycHJpdi1cdTAwM2VyZXBfdm5pY19yZXBvcnRlcikpXG4tXHRcdGRldmxfaGVhbHRoX3JlcG9ydGVyX2Rlc3Ryb3kocnByaXYtXHUwMDNlcmVwX3ZuaWNfcmVwb3J0ZXIpO1xuLX1cbi1cbiBzdGF0aWMgY29uc3Qgc3RydWN0IG1seDVlX3Byb2ZpbGUgbWx4NWVfcmVwX3Byb2ZpbGUgPSB7XG4gXHQuaW5pdFx0XHRcdD0gbWx4NWVfaW5pdF9yZXAsXG4gXHQuY2xlYW51cFx0XHQ9IG1seDVlX2NsZWFudXBfcmVwLFxuQEAgLTE2MDcsMTAgKzE1NjEsOCBAQCBtbHg1ZV92cG9ydF92Zl9yZXBfbG9hZChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBzdHJ1Y3QgbWx4NV9lc3dpdGNoX3JlcCAqcmVwKVxuIFxuIFx0ZGxfcG9ydCA9IG1seDVfZXN3X29mZmxvYWRzX2RldmxpbmtfcG9ydChkZXYtXHUwMDNlcHJpdi5lc3dpdGNoLFxuIFx0XHRcdFx0XHRcdCBycHJpdi1cdTAwM2VyZXAtXHUwMDNldnBvcnQpO1xuLVx0aWYgKCFJU19FUlIoZGxfcG9ydCkpIHtcbitcdGlmICghSVNfRVJSKGRsX3BvcnQpKVxuIFx0XHRTRVRfTkVUREVWX0RFVkxJTktfUE9SVChuZXRkZXYsIGRsX3BvcnQpO1xuLVx0XHRtbHg1ZV9yZXBfdm5pY19yZXBvcnRlcl9jcmVhdGUocHJpdiwgZGxfcG9ydCk7XG4tXHR9XG4gXG4gXHRlcnIgPSByZWdpc3Rlcl9uZXRkZXYobmV0ZGV2KTtcbiBcdGlmIChlcnIpIHtcbkBAIC0xNjIzLDcgKzE1NzUsNiBAQCBtbHg1ZV92cG9ydF92Zl9yZXBfbG9hZChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBzdHJ1Y3QgbWx4NV9lc3dpdGNoX3JlcCAqcmVwKVxuIFx0cmV0dXJuIDA7XG4gXG4gZXJyX2RldGFjaF9uZXRkZXY6XG4tXHRtbHg1ZV9yZXBfdm5pY19yZXBvcnRlcl9kZXN0cm95KHByaXYpO1xuIFx0bWx4NWVfZGV0YWNoX25ldGRldihuZXRkZXZfcHJpdihuZXRkZXYpKTtcbiBlcnJfY2xlYW51cF9wcm9maWxlOlxuIFx0cHJpdi1cdTAwM2Vwcm9maWxlLVx1MDAzZWNsZWFudXAocHJpdik7XG5AQCAtMTY4MSw3ICsxNjMyLDYgQEAgbWx4NWVfdnBvcnRfcmVwX3VubG9hZChzdHJ1Y3QgbWx4NV9lc3dpdGNoX3JlcCAqcmVwKVxuIFx0fVxuIFxuIFx0dW5yZWdpc3Rlcl9uZXRkZXYobmV0ZGV2KTtcbi1cdG1seDVlX3JlcF92bmljX3JlcG9ydGVyX2Rlc3Ryb3kocHJpdik7XG4gXHRtbHg1ZV9kZXRhY2hfbmV0ZGV2KHByaXYpO1xuIFx0cHJpdi1cdTAwM2Vwcm9maWxlLVx1MDAzZWNsZWFudXAocHJpdik7XG4gXHRtbHg1ZV9kZXN0cm95X25ldGRldihuZXRkZXYpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9yZXAuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9yZXAuaFxuaW5kZXggNzA2NDBmYTFhZDdiYy4uYmNkN2I0ZTgxNGQwNiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9yZXAuaFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3JlcC5oXG5AQCAtMTE4LDcgKzExOCw2IEBAIHN0cnVjdCBtbHg1ZV9yZXBfcHJpdiB7XG4gXHRzdHJ1Y3QgcnRubF9saW5rX3N0YXRzNjQgcHJldl92Zl92cG9ydF9zdGF0cztcbiBcdHN0cnVjdCBtbHg1X2Zsb3dfaGFuZGxlICpzZW5kX3RvX3Zwb3J0X21ldGFfcnVsZTtcbiBcdHN0cnVjdCByaGFzaHRhYmxlIHRjX2h0O1xuLVx0c3RydWN0IGRldmxpbmtfaGVhbHRoX3JlcG9ydGVyICpyZXBfdm5pY19yZXBvcnRlcjtcbiB9O1xuIFxuIHN0YXRpYyBpbmxpbmVcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXN3L2RldmxpbmtfcG9ydC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Vzdy9kZXZsaW5rX3BvcnQuY1xuaW5kZXggMzZiMDBhODU2YmMyMS4uZmRjOTYwZWE1MzMxOCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lc3cvZGV2bGlua19wb3J0LmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lc3cvZGV2bGlua19wb3J0LmNcbkBAIC00LDYgKzQsMjYgQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9tbHg1L2RyaXZlci5oXHUwMDNlXG4gI2luY2x1ZGUgXCJlc3dpdGNoLmhcIlxuICNpbmNsdWRlIFwiZGV2bGluay5oXCJcbisjaW5jbHVkZSBcImRpYWcvcmVwb3J0ZXJfdm5pYy5oXCJcbitcbitzdGF0aWMgaW50XG4rbWx4NV9lc3dfcmVwX3ZuaWNfcmVwb3J0ZXJfZGlhZ25vc2Uoc3RydWN0IGRldmxpbmtfaGVhbHRoX3JlcG9ydGVyICpyZXBvcnRlcixcbitcdFx0XHRcdCAgICBzdHJ1Y3QgZGV2bGlua19mbXNnICpmbXNnLFxuK1x0XHRcdFx0ICAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcbit7XG4rXHRzdHJ1Y3QgbWx4NV92cG9ydCAqdnBvcnQgPSBkZXZsaW5rX2hlYWx0aF9yZXBvcnRlcl9wcml2KHJlcG9ydGVyKTtcbitcbitcdG1seDVfcmVwb3J0ZXJfdm5pY19kaWFnbm9zZV9jb3VudGVycyh2cG9ydC1cdTAwM2VkZXYsIGZtc2csIHZwb3J0LVx1MDAzZXZwb3J0LFxuK1x0XHRcdFx0XHQgICAgIHRydWUpO1xuK1xuK1x0cmV0dXJuIDA7XG4rfVxuK1xuK3N0YXRpYyBjb25zdFxuK3N0cnVjdCBkZXZsaW5rX2hlYWx0aF9yZXBvcnRlcl9vcHMgbWx4NV9lc3dfcmVwX3ZuaWNfcmVwb3J0ZXJfb3BzID0ge1xuK1x0Lm5hbWUgPSBcInZuaWNcIixcbitcdC5kaWFnbm9zZSA9IG1seDVfZXN3X3JlcF92bmljX3JlcG9ydGVyX2RpYWdub3NlLFxuK307XG4gXG4gc3RhdGljIHZvaWRcbiBtbHg1X2Vzd19nZXRfcG9ydF9wYXJlbnRfaWQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgc3RydWN0IG5ldGRldl9waHlzX2l0ZW1faWQgKnBwaWQpXG5AQCAtMjIwLDYgKzI0MCw3IEBAIHN0YXRpYyB2b2lkIG1seDVfZXN3X2RldmxpbmtfcG9ydF9yZXNfdW5yZWdpc3RlcihzdHJ1Y3QgZGV2bGlua19wb3J0ICpkbF9wb3J0KVxuIFxuIGludCBtbHg1X2Vzd19vZmZsb2Fkc19kZXZsaW5rX3BvcnRfcmVnaXN0ZXIoc3RydWN0IG1seDVfZXN3aXRjaCAqZXN3LCBzdHJ1Y3QgbWx4NV92cG9ydCAqdnBvcnQpXG4ge1xuK1x0c3RydWN0IGRldmxpbmtfaGVhbHRoX3JlcG9ydGVyICpyZXBvcnRlcjtcbiBcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYgPSBlc3ctXHUwMDNlZGV2O1xuIFx0Y29uc3Qgc3RydWN0IGRldmxpbmtfcG9ydF9vcHMgKm9wcztcbiBcdHN0cnVjdCBtbHg1X2RldmxpbmtfcG9ydCAqZGxfcG9ydDtcbkBAIC0yNTUsNiArMjc2LDE2IEBAIGludCBtbHg1X2Vzd19vZmZsb2Fkc19kZXZsaW5rX3BvcnRfcmVnaXN0ZXIoc3RydWN0IG1seDVfZXN3aXRjaCAqZXN3LCBzdHJ1Y3QgbWx4XG4gXHRcdG1seDVfY29yZV9kYmcoZGV2LCBcIkZhaWxlZCB0byByZWdpc3RlciBwb3J0IHJlc291cmNlczogJWRcXG5cIixcbiBcdFx0XHQgICAgICBlcnIpO1xuIFxuK1x0cmVwb3J0ZXIgPSBkZXZsX3BvcnRfaGVhbHRoX3JlcG9ydGVyX2NyZWF0ZShcbitcdFx0XHUwMDI2ZGxfcG9ydC1cdTAwM2VkbF9wb3J0LCBcdTAwMjZtbHg1X2Vzd19yZXBfdm5pY19yZXBvcnRlcl9vcHMsXG4rXHRcdHZwb3J0KTtcbitcdGlmIChJU19FUlIocmVwb3J0ZXIpKVxuK1x0XHRtbHg1X2NvcmVfZXJyKGRldixcbitcdFx0XHQgICAgICBcIkZhaWxlZCB0byBjcmVhdGUgdm5pYyBoZWFsdGggcmVwb3J0ZXIgZm9yIHZwb3J0ICVkOiAlcGVcXG5cIixcbitcdFx0XHQgICAgICB2cG9ydF9udW0sIHJlcG9ydGVyKTtcbitcdGVsc2VcbitcdFx0ZGxfcG9ydC1cdTAwM2V2bmljX3JlcG9ydGVyID0gcmVwb3J0ZXI7XG4rXG4gXHRyZXR1cm4gMDtcbiBcbiByYXRlX2VycjpcbkBAIC0yNjksNiArMzAwLDEyIEBAIHZvaWQgbWx4NV9lc3dfb2ZmbG9hZHNfZGV2bGlua19wb3J0X3VucmVnaXN0ZXIoc3RydWN0IG1seDVfdnBvcnQgKnZwb3J0KVxuIFx0aWYgKCF2cG9ydC1cdTAwM2VkbF9wb3J0KVxuIFx0XHRyZXR1cm47XG4gXHRkbF9wb3J0ID0gdnBvcnQtXHUwMDNlZGxfcG9ydDtcbitcbitcdGlmIChkbF9wb3J0LVx1MDAzZXZuaWNfcmVwb3J0ZXIpIHtcbitcdFx0ZGV2bF9oZWFsdGhfcmVwb3J0ZXJfZGVzdHJveShkbF9wb3J0LVx1MDAzZXZuaWNfcmVwb3J0ZXIpO1xuK1x0XHRkbF9wb3J0LVx1MDAzZXZuaWNfcmVwb3J0ZXIgPSBOVUxMO1xuK1x0fVxuK1xuIFx0bWx4NV9lc3dfZGV2bGlua19wb3J0X3Jlc191bnJlZ2lzdGVyKFx1MDAyNmRsX3BvcnQtXHUwMDNlZGxfcG9ydCk7XG4gXG4gXHRkZXZsX3JhdGVfbGVhZl9kZXN0cm95KFx1MDAyNmRsX3BvcnQtXHUwMDNlZGxfcG9ydCk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Vzd2l0Y2guaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lc3dpdGNoLmhcbmluZGV4IGM2NTVmNmU4ZGExY2UuLjhiMWY5M2IxM2VhOWMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXN3aXRjaC5oXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXN3aXRjaC5oXG5AQCAtMTg5LDYgKzE4OSw3IEBAIHN0cnVjdCBtbHg1X3Zwb3J0O1xuIHN0cnVjdCBtbHg1X2RldmxpbmtfcG9ydCB7XG4gXHRzdHJ1Y3QgZGV2bGlua19wb3J0IGRsX3BvcnQ7XG4gXHRzdHJ1Y3QgbWx4NV92cG9ydCAqdnBvcnQ7XG4rXHRzdHJ1Y3QgZGV2bGlua19oZWFsdGhfcmVwb3J0ZXIgKnZuaWNfcmVwb3J0ZXI7XG4gfTtcbiBcbiBzdGF0aWMgaW5saW5lIHZvaWQgbWx4NV9kZXZsaW5rX3BvcnRfaW5pdChzdHJ1Y3QgbWx4NV9kZXZsaW5rX3BvcnQgKmRsX3BvcnQsXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQyMDo0MzozNC41NDc3NDE1MzJaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxMDY3OTk3MDkzNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBvdGVudGlhbCBmb3IgRnV6emluZyB0aGlzIE1lbGxhbm94IERyaXZlciBDb2RlKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyB0aGUgTWVsbGFub3ggbWx4NSBkcml2ZXIg4oCTIHNwZWNpZmljYWxseSB0aGVzZSBmaWxlczogYGVuX3JlcC5jYCwgYGVuX3JlcC5oYCwgYGRldmxpbmtfcG9ydC5jYCwgYW5kIGBlc3dpdGNoLmhgIHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9gIGRpcmVjdG9yeS4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiY2FuIHRoaXMgZXZlbiBiZSBmdXp6ZWQgZWZmZWN0aXZlbHk/XCIgSSBuZWVkIHRvIGRldGVybWluZSBpZiBpdCBtZWV0cyB0aGUgY3JpdGVyaWEgZm9yIGJlaW5nIFwiV29ydGhGdXp6aW5nPWZhbHNlXCIgYmFzZWQgb24gU2VjdGlvbiAyIG9mIHRoZSBndWlkZWxpbmVzIOKAkyBzcGVjaWZpY2FsbHkgdGhlIFwiU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlXCIgY2xhdXNlLlxuXG5UaGUgZ3VpZGVsaW5lcyBtZW50aW9uIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIGxpa2UgYG1seHN3YCwgYHBkc19jb3JlYCwgYHFlZGAsIGBpb25pY2AsIGFuZCBgYW1kZ3B1YCBhcyBleGFtcGxlcyBvZiBkcml2ZXJzIHRoYXQgYXJlIGRpZmZpY3VsdCB0byBmdXp6IGJlY2F1c2UgdGhleSBuZWVkIHBoeXNpY2FsIEFTSUNzIG9yIFBDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIE5vdywgbXkgdW5kZXJzdGFuZGluZyBpcyB0aGF0IE1lbGxhbm94IG1seDUgaXMgYSBwaHlzaWNhbCBOSUMvU21hcnROSUMgZHJpdmVyLiBJdCdzIGJ1aWx0IGZvciBDb25uZWN0WCBoYXJkd2FyZSAoQ29ubmVjdFgtNCwgNSwgNiwgNywgZXRjLikuIEkga25vdyB0aGlzIGRyaXZlciByZXF1aXJlcyB0aGUgYWN0dWFsIE1lbGxhbm94IGhhcmR3YXJlLiBNeSBiaWdnZXN0IGNvbmNlcm4gcmlnaHQgbm93IGlzIHdoZXRoZXIgdGhpcyBgbWx4NWAgaXMgZW11bGF0ZWQgb3IgYWNjZXNzaWJsZSB0aHJvdWdoIGEgdmlydHVhbCBidXMgaW4gYSB3YXkgdGhhdCB3b3VsZCBtYWtlIGZ1enppbmcgZmVhc2libGUuIEknbSBwcmV0dHkgc3VyZSBpdCdzIGEgc3RhbmRhcmQgUENJIGRldmljZSBkcml2ZXIgbG9jYXRlZCBpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2AsIHdoaWNoIHN0cm9uZ2x5IHN1Z2dlc3RzICpwaHlzaWNhbCogaGFyZHdhcmUgZGVwZW5kZW5jeS5cblxuSSBuZWVkIHRvIGNvbmZpcm0gdGhpcy4gSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSBrZXJuZWwgc291cmNlIHRyZWUgYW5kIHRoZSBjb25maWcgb3B0aW9ucyB0byBzZWUgaWYgdGhlcmUncyBhbnkgbWVudGlvbiBvZiBtb2NraW5nIG9yIHZpcnR1YWxpemF0aW9uIHN1cHBvcnQgZm9yIGBtbHg1YC4gSXQncyBjcnVjaWFsIHRvIHVuZGVyc3RhbmQgaWYgdGhpcyBkcml2ZXIgcmVsaWVzICpwdXJlbHkqIG9uIHBoeXNpY2FsIGhhcmR3YXJlLCBvciBpZiB0aGVyZSdzIHNvbWUgcG9zc2liaWxpdHkgb2Ygc29mdHdhcmUgZW11bGF0aW9uIG9yIGEgdmlydHVhbCBidXMgaW50ZXJmYWNlIHRoYXQgd291bGQgYWxsb3cgdXMgdG8gZWZmZWN0aXZlbHkgZnV6eiBpdC4gSWYgaXQncyB0aGUgZm9ybWVyLCB0aGVuIHdlIG1pZ2h0IGhhdmUgYSBkZWFkIGVuZCBpbiB0ZXJtcyBvZiBmdXp6aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NDcwLCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQzLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMjA6NDM6NDUuMjI3NzE2NDQ5WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExODgzNDg4MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJDT05GSUdfTUxYNV9DT1JFXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlPTc9c3ViZGlyLWNjZmxhZ3MteSArPSAtSSQoc3JjKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZS04LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZTo5Om9iai0kKENPTkZJR19NTFg1X0NPUkUpICs9IG1seDVfY29yZS5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlLTEwLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlPTE0PW1seDVfY29yZS15IDo9XFx0bWFpbi5vIGNtZC5vIGRlYnVnZnMubyBmdy5vIGVxLm8gdWFyLm8gcGFnZWFsbG9jLm8gXFxcXFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlLTI1LSNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGU6MjY6bWx4NV9jb3JlLSQoQ09ORklHX01MWDVfQ09SRV9FTikgKz0gZW4vcnF0Lm8gZW4vdGlyLm8gZW4vcnNzLm8gZW4vcnhfcmVzLm8gXFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZS0yNy1cXHRcXHRlbi9jaGFubmVscy5vIGVuX21haW4ubyBlbl9jb21tb24ubyBlbl9mcy5vIGVuX2V0aHRvb2wubyBcXFxcXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGU9Mzk9bWx4NV9jb3JlLSQoQ09ORklHX01MWDVfRU5fUlhORkMpICAgICs9IGVuX2ZzX2V0aHRvb2wub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZTo0MDptbHg1X2NvcmUtJChDT05GSUdfTUxYNV9DT1JFX0VOX0RDQikgKz0gZW5fZGNibmwubyBlbi9wb3J0X2J1ZmZlci5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlLTQxLW1seDVfY29yZS0kKENPTkZJR19QQ0lfSFlQRVJWX0lOVEVSRkFDRSkgKz0gZW4vaHZfdmhjYV9zdGF0cy5vXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGU9OTM9bWx4NV9jb3JlLSQoQ09ORklHX1BDSV9IWVBFUlZfSU5URVJGQUNFKSArPSBsaWIvaHYubyBsaWIvaHZfdmhjYS5vXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGUtOTctI1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZTo5ODptbHg1X2NvcmUtJChDT05GSUdfTUxYNV9DT1JFX0lQT0lCKSArPSBpcG9pYi9pcG9pYi5vIGlwb2liL2V0aHRvb2wubyBpcG9pYi9pcG9pYl92bGFuLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGUtOTktXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZGV2LmM9NTc9Ym9vbCBtbHg1X2V0aF9zdXBwb3J0ZWQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZGV2LmMtNTgte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9kZXYuYzo1OTpcXHRpZiAoIUlTX0VOQUJMRUQoQ09ORklHX01MWDVfQ09SRV9FTikpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Rldi5jLTYwLVxcdFxcdHJldHVybiBmYWxzZTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi5oPTkwNT1zdHJ1Y3QgbWx4NWVfcHJpdiB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4uaC05MTAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuLmg6OTExOiNpZmRlZiBDT05GSUdfTUxYNV9DT1JFX0VOX0RDQlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi5oLTkxMi1cXHRzdHJ1Y3QgbWx4NWVfZGNieF9kcCAgICAgICBkY2J4X2RwO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuLmgtOTU3LVxcdHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvIG5pY19pbmZvO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi5oOjk1ODojaWZkZWYgQ09ORklHX01MWDVfQ09SRV9FTl9EQ0JcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4uaC05NTktXFx0c3RydWN0IG1seDVlX2RjYnggICAgICAgICAgZGNieDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9kY2JubC5oLTYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL2RjYm5sLmg6NzojaWZkZWYgQ09ORklHX01MWDVfQ09SRV9FTl9EQ0JcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vZGNibmwuaC04LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3NlbHEuYz0xMzI9dm9pZCBtbHg1ZV9zZWxxX2NhbmNlbChzdHJ1Y3QgbWx4NWVfc2VscSAqc2VscSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9zZWxxLmMtMTM5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9zZWxxLmM6MTQwOiNpZmRlZiBDT05GSUdfTUxYNV9DT1JFX0VOX0RDQlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9zZWxxLmMtMTQxLXN0YXRpYyBpbnQgbWx4NWVfZ2V0X2RzY3BfdXAoc3RydWN0IG1seDVlX3ByaXYgKnByaXYsIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vc2VscS5jPTE1ND1zdGF0aWMgaW50IG1seDVlX2dldF91cChzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vc2VscS5jLTE1NS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3NlbHEuYzoxNTY6I2lmZGVmIENPTkZJR19NTFg1X0NPUkVfRU5fRENCXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3NlbHEuYy0xNTctXFx0aWYgKFJFQURfT05DRShwcml2LVxcdTAwM2VkY2J4X2RwLnRydXN0X3N0YXRlKSA9PSBNTFg1X1FQVFNfVFJVU1RfRFNDUClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9yeC5jPTI0ODQ9aW50IG1seDVlX3BvbGxfcnhfY3Eoc3RydWN0IG1seDVlX2NxICpjcSwgaW50IGJ1ZGdldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9yeC5jLTI1MTYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3J4LmM6MjUxNzojaWZkZWYgQ09ORklHX01MWDVfQ09SRV9JUE9JQlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9yeC5jLTI1MTgtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fcnguYz0yNjQxPWNvbnN0IHN0cnVjdCBtbHg1ZV9yeF9oYW5kbGVycyBtbHg1aV9yeF9oYW5kbGVycyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9yeC5jLTI2NDQtfTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fcnguYzoyNjQ1OiNlbmRpZiAvKiBDT05GSUdfTUxYNV9DT1JFX0lQT0lCICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3J4LmMtMjY0Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl90Yy5jPTEwMDc9c3RhdGljIGludCBtbHg1ZV9oYWlycGluX2dldF9wcmlvKHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3RjLmMtMTAxNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fdGMuYzoxMDE1OiNpZmRlZiBDT05GSUdfTUxYNV9DT1JFX0VOX0RDQlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl90Yy5jLTEwMTYtXFx0aWYgKHByaXYtXFx1MDAzZWRjYnhfZHAudHJ1c3Rfc3RhdGUgIT0gTUxYNV9RUFRTX1RSVVNUX1BDUCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3R4LmM9ODcyPXZvaWQgbWx4NWVfZnJlZV90eHFzcV9kZXNjcyhzdHJ1Y3QgbWx4NWVfdHhxc3EgKnNxKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3R4LmMtOTE3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl90eC5jOjkxODojaWZkZWYgQ09ORklHX01MWDVfQ09SRV9JUE9JQlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl90eC5jLTkxOS1zdGF0aWMgaW5saW5lIHZvaWRcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9pcG9pYi9pcG9pYi5oLTM1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9pcG9pYi9pcG9pYi5oOjM2OiNpZmRlZiBDT05GSUdfTUxYNV9DT1JFX0lQT0lCXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2lwb2liL2lwb2liLmgtMzctXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvaXBvaWIvaXBvaWIuaD0xMzA9dm9pZCBtbHg1aV9wYXJlbnRfcHV0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9pcG9pYi9pcG9pYi5oLTEzMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvaXBvaWIvaXBvaWIuaDoxMzI6I2VuZGlmIC8qIENPTkZJR19NTFg1X0NPUkVfSVBPSUIgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvaXBvaWIvaXBvaWIuaC0xMzMtI2VuZGlmIC8qIF9fTUxYNUVfSVBPQl9IX18gKi9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvc2QuaD0yND12b2lkIG1seDVfc2RfcHV0X2FkZXYoc3RydWN0IGF1eGlsaWFyeV9kZXZpY2UgKmFjdHVhbF9hZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9zZC5oLTI2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvc2QuaDoyNzojaWZkZWYgQ09ORklHX01MWDVfQ09SRV9FTlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvc2QuaC0yOC1ib29sIG1seDVfc2RfaXNfc3VwcG9ydGVkKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9zZC5oPTM3PXZvaWQgbWx4NV9zZF9jbGVhbnVwKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvc2QuaC0zOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL3NkLmg6Mzk6I2lmZGVmIENPTkZJR19NTFg1X0NPUkVfRU5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL3NkLmgtNDAtc3RydWN0IG1seDVfZGV2Y29tX2NvbXBfZGV2ICptbHg1X3NkX2dldF9kZXZjb20oc3RydWN0IG1seDVfY29yZV9kZXYgKmRldik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWx4NV9jb3JlLmg9Mzk2PXZvaWQgbWx4NV9md192ZXJzaW9uX3F1ZXJ5KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHUzMiAqcnVubmluZ192ZXIsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWx4NV9jb3JlLmgtMzk4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tbHg1X2NvcmUuaDozOTk6I2lmZGVmIENPTkZJR19NTFg1X0NPUkVfRU5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWx4NV9jb3JlLmgtNDAwLWludCBtbHg1ZV9pbml0KHZvaWQpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQyMDo0Mzo0NS4zNDY1NTYwMzFaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMjA2MjIyODA2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIGlzc3VlOlxuXG4qKktjb25maWcgQ2hlY2sgZm9yIE1MWDVfQ09SRSoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBtYWtlIHN1cmUgYE1MWDVfQ09SRWAgaXMgcHJvcGVybHkgY29uZmlndXJlZC4gTXkgZmlyc3QgdGhvdWdodCBpcyB0byBkaXZlIGludG8gdGhlIEtjb25maWcgZmlsZXMuIEkgbmVlZCB0byBxdWlja2x5IHZlcmlmeSBpdHMgZGVwZW5kZW5jaWVzIGFuZCBwb3RlbnRpYWwgc2V0dGluZ3MuIElzIGl0IGVuYWJsZWQgYXMgYSBtb2R1bGUgb3IgYnVpbHQtaW4/IEFyZSB0aGVyZSBhbnkgcmVsZXZhbnQgY29uZGl0aW9uYWxzIEkgbmVlZCB0byBiZSBhd2FyZSBvZj8gQXJlIHRoZXJlIG90aGVyIGZlYXR1cmVzIGl0IGltcGFjdHMgb3IgdGhhdCBkZXBlbmQgb24gaXQ/IEknbGwgbmVlZCB0byBjb25maXJtIHRoZSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24gYW5kIHdoZXRoZXIgYW55IG92ZXJyaWRpbmcgb3B0aW9ucyBhcmUgcHJlc2VudCB0aGF0IG1pZ2h0IGJlIGluZmx1ZW5jaW5nIGl0cyBiZWhhdmlvci4gU3BlY2lmaWNhbGx5LCBJJ20gbG9va2luZyBmb3Igd2hlcmUgaXQncyBkZWZpbmVkLCBpdHMgcmVsYXRpb25zaGlwcyB0byBvdGhlciBvcHRpb25zLCBhbmQgYW55IGFzc29jaWF0ZWQgc3ltYm9scyBvciBoZWxwIHRleHQgdGhhdCBtaWdodCBzaGVkIGxpZ2h0IG9uIGl0cyBjdXJyZW50IHN0YXRlLiBUaW1lIHRvIGdldCBpbnRvIHRoZSBkZXRhaWxzIGFuZCBtYWtlIHN1cmUgSSdtIG5vdCBtaXNzaW5nIGFueXRoaW5nIG9idmlvdXMhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkyMDMsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQyMDo0Mzo0Ny41NTI3ODA2MjhaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTUyODY1NTQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE1MWDVfQ09SRVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWctNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZzo2OmNvbmZpZyBNTFg1X0NPUkVcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZy03LVxcdHRyaXN0YXRlIFxcXCJNZWxsYW5veCA1dGggZ2VuZXJhdGlvbiBuZXR3b3JrIGFkYXB0ZXJzIChDb25uZWN0WCBzZXJpZXMpIGNvcmUgZHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWc9MTk9Y29uZmlnIE1MWDVfRlBHQVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWctMjgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWc6Mjk6Y29uZmlnIE1MWDVfQ09SRV9FTlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnLTMwLVxcdGJvb2wgXFxcIk1lbGxhbm94IDV0aCBnZW5lcmF0aW9uIG5ldHdvcmsgYWRhcHRlcnMgKENvbm5lY3RYIHNlcmllcykgRXRoZXJuZXQgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnPTExMj1jb25maWcgTUxYNV9UQ19TQU1QTEVcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnLTEyNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZzoxMjU6Y29uZmlnIE1MWDVfQ09SRV9FTl9EQ0JcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZy0xMjYtXFx0Ym9vbCBcXFwiRGF0YSBDZW50ZXIgQnJpZGdpbmcgKERDQikgU3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnLTEzNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZzoxMzc6Y29uZmlnIE1MWDVfQ09SRV9JUE9JQlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnLTEzOC1cXHRib29sIFxcXCJNZWxsYW5veCA1dGggZ2VuZXJhdGlvbiBuZXR3b3JrIGFkYXB0ZXJzIChjb25uZWN0WCBzZXJpZXMpIElQb0lCIG9mZmxvYWRzIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDIwOjQzOjQ3LjY0ODA3NjA0MloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjQzODM2MzgyMjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgVHJpYWdlIERlY2lzaW9uOiBOb3QgV29ydGggRnV6emluZyoqXG5cbk9rYXksIGxldCdzIHdhbGsgdGhyb3VnaCB0aGlzLiBJIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgcGF0Y2ggc2VyaWVzIGlzIHdvcnRoIHRoZSBlZmZvcnQgb2YgZnV6emluZy4gRmlyc3QsIEknbSBjaGVja2luZyBTZWN0aW9uIDIgb2YgdGhlIHRyaWFnZSBwaGlsb3NvcGh5LiBTcGVjaWZpY2FsbHksIEknbSBsb29raW5nIGF0IHdoZW4gd2Ugc2hvdWxkIGZsYWcgc29tZXRoaW5nIGFzIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBUaGUgcmVsZXZhbnQgY29uZGl0aW9uIGhlcmUgaXM6IFwiU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlLlwiIFRoYXQgbWVhbnMgY29kZSB0aGF0LCBmb3IgYWxsIGludGVudHMgYW5kIHB1cnBvc2VzLCBjYW5ub3QgYmUgZXhlY3V0ZWQgaW4gb3VyIHN0YW5kYXJkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VLCBHQ0UpIGJlY2F1c2UgaXQgZGVwZW5kcyBvbiBzcGVjaWZpYyBoYXJkd2FyZS5cblxuUmlnaHQsIHNvLCB0aGUgTWVsbGFub3ggYG1seDVgIGRyaXZlci4uLiBpdCdzIGEgdmVuZG9yLXNwZWNpZmljIFNtYXJ0TklDIGRyaXZlciwgc3BlY2lmaWNhbGx5IHRoZSBDb25uZWN0WCBzZXJpZXMuIFRoZXNlIGFkYXB0ZXJzIHJlcXVpcmUgcGh5c2ljYWwgTWVsbGFub3ggaGFyZHdhcmUgb3IgQVNJQyB0aGF0IGlzbid0IGVtdWxhdGVkIGluIHRoZSB0eXBpY2FsIFFFTVUgb3IgR29vZ2xlIENvbXB1dGUgRW5naW5lIHNldHVwcyB3ZSdyZSB1c2luZyBmb3IgZnV6emluZy4gTm8gd2F5IGFyb3VuZCB0aGF0LlxuXG5Ob3csIGxldCdzIGxvb2sgYXQgdGhlIGFjdHVhbCBjb2RlIGNoYW5nZXMuIEkgc2VlIHRoZSBtb2RpZmljYXRpb25zIGFyZSBsaW1pdGVkIHRvIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fcmVwLmNgLCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3JlcC5oYCwgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lc3cvZGV2bGlua19wb3J0LmNgLCBhbmQgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lc3dpdGNoLmhgLiAgVGhpcyBpcyBhbGwgaW5zaWRlIHRoZSBgbWx4NV9jb3JlYCBkcml2ZXIsIGFuZCBzcGVjaWZpY2FsbHkgdGFyZ2V0cyBzd2l0Y2hkZXYgcmVwcmVzZW50b3IgYW5kIGRldmxpbmsgcG9ydCBoZWFsdGggcmVwb3J0ZXIgaGFuZGxpbmcgZm9yIHRoZSBNZWxsYW5veCBlc3dpdGNoLlxuXG5BbHJpZ2h0LCB0aGF0J3MgcHJldHR5IGNsZWFyLiBHaXZlbiB0aG9zZSBzcGVjaWZpYyBmaWxlIGxvY2F0aW9ucywgdGhpcyBjb2RlIGlzICpzdHJ1Y3R1cmFsbHkqIHVucmVhY2hhYmxlIGluIG91ciBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cy4gV2UnZCBuZWVkIGEgcGh5c2ljYWwgTWVsbGFub3ggQ29ubmVjdFggY2FyZCB0byBldmVuIHRvdWNoIGl0LCB3aGljaCBpcyBiZXlvbmQgb3VyIGN1cnJlbnQgc2NvcGUuXG5cblRoZXJlZm9yZSwgYFdvcnRoRnV6emluZz1mYWxzZWAuXG5cbk5vdywgYmVmb3JlIEkgY2FsbCBgc2V0LXJlc3VsdHNgLCBsZXQncyBqdXN0IGNvbmZpcm0gdGhlIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgYFdvcnRoRnV6emluZ2AgaXMgc2V0IGFzIEkgbmVlZCwgYW5kIHRoZSBgRm9jdXNTeW1ib2xzYCBhbmQgYEVuYWJsZUNvbmZpZ3NgIGFyZSBlbXB0eSBhcyB0aGV5IHNob3VsZCBiZSBmb3IgdGhpcyBzY2VuYXJpby4gIFRoZSByZWFzb25pbmcgaXMgY29uY2lzZTogaXQncyBNZWxsYW5veCBoYXJkd2FyZS1zcGVjaWZpYyBhbmQgbm90IGVtdWxhdGVkLlxuXG5ZdXAsIGV2ZXJ5dGhpbmcgY2hlY2tzIG91dC4gVGltZSB0byBjYWxsIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk5MTEsIk91dHB1dFRva2VucyI6MTEyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mzg3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDIwOjQzOjUyLjAzMTcxNjg4OFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mzg4NTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgbW9kaWZpZWQgY29kZSBpcyBleGNsdXNpdmVseSB3aXRoaW4gdGhlIE1lbGxhbm94IG1seDUgZHJpdmVyIChkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvKSwgd2hpY2ggZHJpdmVzIHBoeXNpY2FsIE1lbGxhbm94IENvbm5lY3RYIG5ldHdvcmsgYWRhcHRlcnMgLyBTbWFydE5JQ3MuIEJlY2F1c2UgaXQgcmVxdWlyZXMgcGh5c2ljYWwgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBzeXprYWxsZXIgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIG1vZGlmaWVkIGNvZGUgaXMgZXhjbHVzaXZlbHkgd2l0aGluIHRoZSBNZWxsYW5veCBtbHg1IGRyaXZlciAoZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlLyksIHdoaWNoIGRyaXZlcyBwaHlzaWNhbCBNZWxsYW5veCBDb25uZWN0WCBuZXR3b3JrIGFkYXB0ZXJzIC8gU21hcnROSUNzLiBCZWNhdXNlIGl0IHJlcXVpcmVzIHBoeXNpY2FsIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3Igc3l6a2FsbGVyIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQyMDo0Mzo1Mi4wMzE3NjA2MDhaIiwiU2VxIjo5LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzkwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflow4v5bj[1] Phase: Running StartedAt: 2026-09-06 20:44:03 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4v5bj[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-06 20:44:03 +0000 UTC FinishedAt: 2026-09-06 20:44:09 +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,}