Name: series-workflowqrz45 Phase: Failed StartedAt: 2026-06-22 22:06:17 +0000 UTC FinishedAt: 2026-06-22 22:15:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqrz45[0] Phase: Succeeded StartedAt: 2026-06-22 22:06:17 +0000 UTC FinishedAt: 2026-06-22 22:15:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqrz45[0].run-triage Phase: Succeeded StartedAt: 2026-06-22 22:06:17 +0000 UTC FinishedAt: 2026-06-22 22:15:07 +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+CgkJCTx0ZD4yMDI2LzA2LzIyIDIyOjE0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIEludGVsIEV0aGVybmV0IGRyaXZlcnMgKGUxMDAwZSwgaTQwZSwgaWNlKSB3aGljaCByZXF1aXJlIHBoeXNpY2FsIFBDSSBoYXJkd2FyZSB0byBiZSBwcm9iZWQuIFRoZSBlMTAwMGUgY2hhbmdlcyBhcmUgc3BlY2lmaWMgdG8gSUNIOExBTi9QQ0ggTUFDIHR5cGVzIGFuZCBhIERNSSBxdWlyaywgd2hpY2ggYXJlIG5vdCBlbXVsYXRlZCBieSBRRU1VIChRRU1VIGVtdWxhdGVzIHRoZSA4MjU3NEwgTUFDKS4gVGhlIGk0MGUgY2hhbmdlIGlzIGEgdHJpdmlhbCBkZWJ1ZyBtYWNybyBmaXguIFRoZSBpY2UgY2hhbmdlcyBhcmUgZm9yIHRoZSBJbnRlbCBFODAwIHNlcmllcywgd2hpY2ggbGFja3Mgc29mdHdhcmUgZW11bGF0aW9uIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gU2luY2UgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgY2Fubm90IGJlIHJlYWNoZWQgd2l0aG91dCB0aGUgc3BlY2lmaWMgcGh5c2ljYWwgaGFyZHdhcmUsIHRoaXMgcGF0Y2ggZG9lcyBub3QgbmVlZCB0byBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIyIDIyOjE0PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNTRjYTIxYjM2ZjVjMDg4ZTg2NWYzYzVkZTU0Y2EyY2E3Y2IyZjk3NVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gSnVuIDIyIDIyOjE0OjM1IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwZS9pY2g4bGFuLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMGUvaWNoOGxhbi5jXG5pbmRleCBkZWEyMDhkYjFiZTViZi4uYWE5MGUwY2U4YWNhZjggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMGUvaWNoOGxhbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMGUvaWNoOGxhbi5jXG5AQCAtMTU5NCw2ICYjNDM7MTU5NCw5IEBAIHN0YXRpYyBzMzIgZTEwMDBfY2hlY2tfZm9yX2NvcHBlcl9saW5rX2ljaDhsYW4oc3RydWN0IGUxMDAwX2h3ICpodylcbiBcdFx0XHRwaHlfcmVnIFx1MDAyNj0gfkkyMTdfUExMX0NMT0NLX0dBVEVfTUFTSztcbiBcdFx0XHRpZiAoc3BlZWQgPT0gU1BFRURfMTAwIHx8IHNwZWVkID09IFNQRUVEXzEwKVxuIFx0XHRcdFx0cGh5X3JlZyB8PSAweDNFODtcbiYjNDM7XHRcdFx0ZWxzZSBpZiAoaHctXHUwMDNlbWFjLnR5cGUgPT0gZTEwMDBfcGNoX210cCB8fFxuJiM0MztcdFx0XHRcdCBody1cdTAwM2VtYWMudHlwZSA9PSBlMTAwMF9wY2hfcHRwKVxuJiM0MztcdFx0XHRcdHBoeV9yZWcgfD0gMHgxRDU7XG4gXHRcdFx0ZWxzZVxuIFx0XHRcdFx0cGh5X3JlZyB8PSAweEZBO1xuIFx0XHRcdGUxZV93cGh5X2xvY2tlZChodywgSTIxN19QTExfQ0xPQ0tfR0FURV9SRUcsIHBoeV9yZWcpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwZS9uZXRkZXYuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwZS9uZXRkZXYuY1xuaW5kZXggODA4ZTVjZGRkNmE5MTguLjg0NGYzMWFiMzdhZDQ0IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDBlL25ldGRldi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMGUvbmV0ZGV2LmNcbkBAIC0yNSw2ICYjNDM7MjUsNyBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3BtX3J1bnRpbWUuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3ByZWZldGNoLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9zdXNwZW5kLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvZG1pLmhcdTAwM2VcbiBcbiAjaW5jbHVkZSBcJiMzNDtlMTAwMC5oXCYjMzQ7XG4gI2RlZmluZSBDUkVBVEVfVFJBQ0VfUE9JTlRTXG5AQCAtNTgsNiAmIzQzOzU5LDE3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZTEwMDBfaW5mbyAqZTEwMDBfaW5mb190YmxbXSA9IHtcbiBcdFtib2FyZF9wY2hfcHRwXVx0XHQ9IFx1MDAyNmUxMDAwX3BjaF9wdHBfaW5mbyxcbiB9O1xuIFxuJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IGRtaV9zeXN0ZW1faWQgZGlzYWJsZV9rMV9saXN0W10gPSB7XG4mIzQzO1x0e1xuJiM0MztcdFx0LmlkZW50ID0gXCYjMzQ7RGVsbCBQcm8gMTYgUGx1cyBQQjE2MjUwXCYjMzQ7LFxuJiM0MztcdFx0Lm1hdGNoZXMgPSB7XG4mIzQzO1x0XHRcdERNSV9NQVRDSChETUlfU1lTX1ZFTkRPUiwgXCYjMzQ7RGVsbCBJbmMuXCYjMzQ7KSxcbiYjNDM7XHRcdFx0RE1JX01BVENIKERNSV9QUk9EVUNUX05BTUUsIFwmIzM0O0RlbGwgUHJvIDE2IFBsdXMgUEIxNjI1MFwmIzM0OyksXG4mIzQzO1x0XHR9LFxuJiM0MztcdH0sXG4mIzQzO1x0e31cbiYjNDM7fTtcbiYjNDM7XG4gc3RydWN0IGUxMDAwX3JlZ19pbmZvIHtcbiBcdHUzMiBvZnM7XG4gXHRjaGFyICpuYW1lO1xuQEAgLTc2NzAsNyAmIzQzOzc2ODIsOCBAQCBzdGF0aWMgaW50IGUxMDAwX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KVxuIFx0LyogaW5pdCBQVFAgaGFyZHdhcmUgY2xvY2sgKi9cbiBcdGUxMDAwZV9wdHBfaW5pdChhZGFwdGVyKTtcbiBcbi1cdGlmIChody1cdTAwM2VtYWMudHlwZSBcdTAwM2U9IGUxMDAwX3BjaF9tdHApXG4mIzQzO1x0LyogZGlzYWJsZSBLMSBieSBkZWZhdWx0IG9uIGtub3duIHByb2JsZW1hdGljIHN5c3RlbXMgKi9cbiYjNDM7XHRpZiAoaHctXHUwMDNlbWFjLnR5cGUgXHUwMDNlPSBlMTAwMF9wY2hfbXRwIFx1MDAyNlx1MDAyNiBkbWlfY2hlY2tfc3lzdGVtKGRpc2FibGVfazFfbGlzdCkpXG4gXHRcdGFkYXB0ZXItXHUwMDNlZmxhZ3MyIHw9IEZMQUcyX0RJU0FCTEVfSzE7XG4gXG4gXHQvKiByZXNldCB0aGUgaGFyZHdhcmUgd2l0aCB0aGUgbmV3IHNldHRpbmdzICovXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RlYnVnLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfZGVidWcuaFxuaW5kZXggZTk4NzFkZmIzMmJkNDQuLjAxZmQ3MGRiOTA4NjY2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RlYnVnLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZWJ1Zy5oXG5AQCAtNDIsNyAmIzQzOzQyLDcgQEAgc3RydWN0IGRldmljZSAqaTQwZV9od190b19kZXYoc3RydWN0IGk0MGVfaHcgKmh3KTtcbiAjZGVmaW5lIGk0MGVfZGVidWcoaCwgbSwgcywgLi4uKVx0XHRcdFx0XFxcbiBkbyB7XHRcdFx0XHRcdFx0XHRcdFxcXG4gXHRpZiAoKChtKSBcdTAwMjYgKGgpLVx1MDAzZWRlYnVnX21hc2spKVx0XHRcdFx0XFxcbi1cdFx0ZGV2X2luZm8oaTQwZV9od190b19kZXYoaHcpLCBzLCAjI19fVkFfQVJHU19fKTtcdFxcXG4mIzQzO1x0XHRkZXZfaW5mbyhpNDBlX2h3X3RvX2RldihoKSwgcywgIyNfX1ZBX0FSR1NfXyk7XHRcXFxuIH0gd2hpbGUgKDApXG4gXG4gI2VuZGlmIC8qIF9JNDBFX0RFQlVHX0hfICovXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9jb21tb24uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmNcbmluZGV4IDMxZTBkZTllN2Y2MDc1Li5lZjFjZTEwNmY4MWI1ZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmNcbkBAIC0zODgyLDcgJiM0MzszODgyLDYgQEAgaWNlX3NldF9mYyhzdHJ1Y3QgaWNlX3BvcnRfaW5mbyAqcGksIHU4ICphcV9mYWlsdXJlcywgYm9vbCBlbmFfYXV0b19saW5rX3VwZGF0ZSlcbiBcdGlmICghcGkgfHwgIWFxX2ZhaWx1cmVzKVxuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcbi1cdCphcV9mYWlsdXJlcyA9IDA7XG4gXHRodyA9IHBpLVx1MDAzZWh3O1xuIFxuIFx0cGNhcHMgPSBremFsbG9jX29iaigqcGNhcHMpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZHBsbC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kcGxsLmNcbmluZGV4IDQ2MmM2OWNjMTFlMTlkLi4zMGMzYTRkYjdkNjExYyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZHBsbC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2RwbGwuY1xuQEAgLTQ2NDUsOSAmIzQzOzQ2NDUsMTMgQEAgaWNlX2RwbGxfaW5pdF9waW5zX2luZm8oc3RydWN0IGljZV9wZiAqcGYsIGVudW0gaWNlX2RwbGxfcGluX3R5cGUgcGluX3R5cGUpXG4gc3RhdGljIHZvaWQgaWNlX2RwbGxfZGVpbml0X2luZm8oc3RydWN0IGljZV9wZiAqcGYpXG4ge1xuIFx0a2ZyZWUocGYtXHUwMDNlZHBsbHMuaW5wdXRzKTtcbiYjNDM7XHRwZi1cdTAwM2VkcGxscy5pbnB1dHMgPSBOVUxMO1xuIFx0a2ZyZWUocGYtXHUwMDNlZHBsbHMub3V0cHV0cyk7XG4mIzQzO1x0cGYtXHUwMDNlZHBsbHMub3V0cHV0cyA9IE5VTEw7XG4gXHRrZnJlZShwZi1cdTAwM2VkcGxscy5lZWMuaW5wdXRfcHJpbyk7XG4mIzQzO1x0cGYtXHUwMDNlZHBsbHMuZWVjLmlucHV0X3ByaW8gPSBOVUxMO1xuIFx0a2ZyZWUocGYtXHUwMDNlZHBsbHMucHBzLmlucHV0X3ByaW8pO1xuJiM0MztcdHBmLVx1MDAzZWRwbGxzLnBwcy5pbnB1dF9wcmlvID0gTlVMTDtcbiB9XG4gXG4gLyoqXG5AQCAtNDc0OCwxMiAmIzQzOzQ3NTIsMTYgQEAgc3RhdGljIGludCBpY2VfZHBsbF9pbml0X2luZm8oc3RydWN0IGljZV9wZiAqcGYsIGJvb2wgY2d1KVxuIFxuIFx0YWxsb2Nfc2l6ZSA9IHNpemVvZigqZGUtXHUwMDNlaW5wdXRfcHJpbykgKiBkLVx1MDAzZW51bV9pbnB1dHM7XG4gXHRkZS1cdTAwM2VpbnB1dF9wcmlvID0ga3phbGxvYyhhbGxvY19zaXplLCBHRlBfS0VSTkVMKTtcbi1cdGlmICghZGUtXHUwMDNlaW5wdXRfcHJpbylcbi1cdFx0cmV0dXJuIC1FTk9NRU07XG4mIzQzO1x0aWYgKCFkZS1cdTAwM2VpbnB1dF9wcmlvKSB7XG4mIzQzO1x0XHRyZXQgPSAtRU5PTUVNO1xuJiM0MztcdFx0Z290byBkZWluaXRfaW5mbztcbiYjNDM7XHR9XG4gXG4gXHRkcC1cdTAwM2VpbnB1dF9wcmlvID0ga3phbGxvYyhhbGxvY19zaXplLCBHRlBfS0VSTkVMKTtcbi1cdGlmICghZHAtXHUwMDNlaW5wdXRfcHJpbylcbi1cdFx0cmV0dXJuIC1FTk9NRU07XG4mIzQzO1x0aWYgKCFkcC1cdTAwM2VpbnB1dF9wcmlvKSB7XG4mIzQzO1x0XHRyZXQgPSAtRU5PTUVNO1xuJiM0MztcdFx0Z290byBkZWluaXRfaW5mbztcbiYjNDM7XHR9XG4gXG4gXHRyZXQgPSBpY2VfZHBsbF9pbml0X3BpbnNfaW5mbyhwZiwgSUNFX0RQTExfUElOX1RZUEVfSU5QVVQpO1xuIFx0aWYgKHJldClcbkBAIC00Nzc4LDEyICYjNDM7NDc4NiwxMiBAQCBzdGF0aWMgaW50IGljZV9kcGxsX2luaXRfaW5mbyhzdHJ1Y3QgaWNlX3BmICpwZiwgYm9vbCBjZ3UpXG4gXHRyZXQgPSBpY2VfZ2V0X2NndV9yY2xrX3Bpbl9pbmZvKFx1MDAyNnBmLVx1MDAzZWh3LCBcdTAwMjZkLVx1MDAzZWJhc2VfcmNsa19pZHgsXG4gXHRcdFx0XHRcdFx1MDAyNnBmLVx1MDAzZWRwbGxzLnJjbGsubnVtX3BhcmVudHMpO1xuIFx0aWYgKHJldClcbi1cdFx0cmV0dXJuIHJldDtcbiYjNDM7XHRcdGdvdG8gZGVpbml0X2luZm87XG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBwZi1cdTAwM2VkcGxscy5yY2xrLm51bV9wYXJlbnRzOyBpJiM0MzsmIzQzOylcbiBcdFx0cGYtXHUwMDNlZHBsbHMucmNsay5wYXJlbnRfaWR4W2ldID0gZC1cdTAwM2ViYXNlX3JjbGtfaWR4ICYjNDM7IGk7XG4gXHRyZXQgPSBpY2VfZHBsbF9pbml0X3BpbnNfaW5mbyhwZiwgSUNFX0RQTExfUElOX1RZUEVfUkNMS19JTlBVVCk7XG4gXHRpZiAocmV0KVxuLVx0XHRyZXR1cm4gcmV0O1xuJiM0MztcdFx0Z290byBkZWluaXRfaW5mbztcbiBcdGRlLVx1MDAzZW1vZGUgPSBEUExMX01PREVfQVVUT01BVElDO1xuIFx0ZHAtXHUwMDNlbW9kZSA9IERQTExfTU9ERV9BVVRPTUFUSUM7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9lc3dpdGNoLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Vzd2l0Y2guY1xuaW5kZXggMmU0ZjA5NjkwMzVmNzcuLmMzMGUyN2JiZmU2ZTI1IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9lc3dpdGNoLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZXN3aXRjaC5jXG5AQCAtMTE3LDggJiM0MzsxMTcsNiBAQCBzdGF0aWMgaW50IGljZV9lc3dpdGNoX3NldHVwX3JlcHIoc3RydWN0IGljZV9wZiAqcGYsIHN0cnVjdCBpY2VfcmVwciAqcmVwcilcbiBcdGlmICghcmVwci1cdTAwM2Vkc3QpXG4gXHRcdHJldHVybiAtRU5PTUVNO1xuIFxuLVx0bmV0aWZfa2VlcF9kc3QodXBsaW5rX3ZzaS1cdTAwM2VuZXRkZXYpO1xuLVxuIFx0ZHN0ID0gcmVwci1cdTAwM2Vkc3Q7XG4gXHRkc3QtXHUwMDNldS5wb3J0X2luZm8ucG9ydF9pZCA9IHZzaS1cdTAwM2V2c2lfbnVtO1xuIFx0ZHN0LVx1MDAzZXUucG9ydF9pbmZvLmxvd2VyX2RldiA9IHVwbGlua192c2ktXHUwMDNlbmV0ZGV2O1xuQEAgLTMxMiw2ICYjNDM7MzEwLDggQEAgc3RhdGljIGludCBpY2VfZXN3aXRjaF9lbmFibGVfc3dpdGNoZGV2KHN0cnVjdCBpY2VfcGYgKnBmKVxuIFx0aWYgKGljZV9lc3dpdGNoX2JyX29mZmxvYWRzX2luaXQocGYpKVxuIFx0XHRnb3RvIGVycl9icl9vZmZsb2FkcztcbiBcbiYjNDM7XHRuZXRpZl9rZWVwX2RzdCh1cGxpbmtfdnNpLVx1MDAzZW5ldGRldik7XG4mIzQzO1xuIFx0cGYtXHUwMDNlZXN3aXRjaC5pc19ydW5uaW5nID0gdHJ1ZTtcbiBcbiBcdHJldHVybiAwO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZXRodG9vbC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9ldGh0b29sLmNcbmluZGV4IDIzNmQyOTNhYmE5ODRhLi40OTM3MWIwNjU4NDU4MiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZXRodG9vbC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2V0aHRvb2wuY1xuQEAgLTM1MDgsNyAmIzQzOzM1MDgsNyBAQCBpY2Vfc2V0X3BhdXNlcGFyYW0oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgc3RydWN0IGV0aHRvb2xfcGF1c2VwYXJhbSAqcGF1c2UpXG4gXHRzdHJ1Y3QgaWNlX3ZzaSAqdnNpID0gbnAtXHUwMDNldnNpO1xuIFx0c3RydWN0IGljZV9odyAqaHcgPSBcdTAwMjZwZi1cdTAwM2VodztcbiBcdHN0cnVjdCBpY2VfcG9ydF9pbmZvICpwaTtcbi1cdHU4IGFxX2ZhaWx1cmVzO1xuJiM0MztcdHU4IGFxX2ZhaWx1cmVzID0gMDtcbiBcdGJvb2wgbGlua191cDtcbiBcdHUzMiBpc19hbjtcbiBcdGludCBlcnI7XG5AQCAtMzU3OSwxOCAmIzQzOzM1NzksMjIgQEAgaWNlX3NldF9wYXVzZXBhcmFtKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIHN0cnVjdCBldGh0b29sX3BhdXNlcGFyYW0gKnBhdXNlKVxuIFx0LyogU2V0IHRoZSBGQyBtb2RlIGFuZCBvbmx5IHJlc3RhcnQgQU4gaWYgbGluayBpcyB1cCAqL1xuIFx0ZXJyID0gaWNlX3NldF9mYyhwaSwgXHUwMDI2YXFfZmFpbHVyZXMsIGxpbmtfdXApO1xuIFxuLVx0aWYgKGFxX2ZhaWx1cmVzIFx1MDAyNiBJQ0VfU0VUX0ZDX0FRX0ZBSUxfR0VUKSB7XG4mIzQzO1x0c3dpdGNoIChhcV9mYWlsdXJlcykge1xuJiM0MztcdGNhc2UgSUNFX1NFVF9GQ19BUV9GQUlMX0dFVDpcbiBcdFx0bmV0ZGV2X2luZm8obmV0ZGV2LCBcJiMzNDtTZXQgZmMgZmFpbGVkIG9uIHRoZSBnZXRfcGh5X2NhcGFiaWxpdGllcyBjYWxsIHdpdGggZXJyICVkIGFxX2VyciAlc1xcblwmIzM0OyxcbiBcdFx0XHQgICAgZXJyLCBsaWJpZV9hcV9zdHIoaHctXHUwMDNlYWRtaW5xLnNxX2xhc3Rfc3RhdHVzKSk7XG4gXHRcdGVyciA9IC1FQUdBSU47XG4tXHR9IGVsc2UgaWYgKGFxX2ZhaWx1cmVzIFx1MDAyNiBJQ0VfU0VUX0ZDX0FRX0ZBSUxfU0VUKSB7XG4mIzQzO1x0XHRicmVhaztcbiYjNDM7XHRjYXNlIElDRV9TRVRfRkNfQVFfRkFJTF9TRVQ6XG4gXHRcdG5ldGRldl9pbmZvKG5ldGRldiwgXCYjMzQ7U2V0IGZjIGZhaWxlZCBvbiB0aGUgc2V0X3BoeV9jb25maWcgY2FsbCB3aXRoIGVyciAlZCBhcV9lcnIgJXNcXG5cJiMzNDssXG4gXHRcdFx0ICAgIGVyciwgbGliaWVfYXFfc3RyKGh3LVx1MDAzZWFkbWlucS5zcV9sYXN0X3N0YXR1cykpO1xuIFx0XHRlcnIgPSAtRUFHQUlOO1xuLVx0fSBlbHNlIGlmIChhcV9mYWlsdXJlcyBcdTAwMjYgSUNFX1NFVF9GQ19BUV9GQUlMX1VQREFURSkge1xuJiM0MztcdFx0YnJlYWs7XG4mIzQzO1x0Y2FzZSBJQ0VfU0VUX0ZDX0FRX0ZBSUxfVVBEQVRFOlxuIFx0XHRuZXRkZXZfaW5mbyhuZXRkZXYsIFwmIzM0O1NldCBmYyBmYWlsZWQgb24gdGhlIGdldF9saW5rX2luZm8gY2FsbCB3aXRoIGVyciAlZCBhcV9lcnIgJXNcXG5cJiMzNDssXG4gXHRcdFx0ICAgIGVyciwgbGliaWVfYXFfc3RyKGh3LVx1MDAzZWFkbWlucS5zcV9sYXN0X3N0YXR1cykpO1xuIFx0XHRlcnIgPSAtRUFHQUlOO1xuJiM0MztcdFx0YnJlYWs7XG4gXHR9XG4gXG4gXHRyZXR1cm4gZXJyO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmNcbmluZGV4IGUyZmJlMTExZjg0OTY5Li5lMmZkMmRhYjAzZTM2MyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uY1xuQEAgLTQ3ODksMTYgJiM0Mzs0Nzg5LDE0IEBAIHN0YXRpYyB2b2lkIGljZV9pbml0X3dha2V1cChzdHJ1Y3QgaWNlX3BmICpwZilcbiBcdGRldmljZV9zZXRfd2FrZXVwX2VuYWJsZShpY2VfcGZfdG9fZGV2KHBmKSwgZmFsc2UpO1xuIH1cbiBcbi1zdGF0aWMgaW50IGljZV9pbml0X2xpbmsoc3RydWN0IGljZV9wZiAqcGYpXG4mIzQzO3N0YXRpYyB2b2lkIGljZV9pbml0X2xpbmsoc3RydWN0IGljZV9wZiAqcGYpXG4ge1xuIFx0c3RydWN0IGRldmljZSAqZGV2ID0gaWNlX3BmX3RvX2RldihwZik7XG4gXHRpbnQgZXJyO1xuIFxuIFx0ZXJyID0gaWNlX2luaXRfbGlua19ldmVudHMocGYtXHUwMDNlaHcucG9ydF9pbmZvKTtcbi1cdGlmIChlcnIpIHtcbiYjNDM7XHRpZiAoZXJyKVxuIFx0XHRkZXZfZXJyKGRldiwgXCYjMzQ7aWNlX2luaXRfbGlua19ldmVudHMgZmFpbGVkOiAlZFxcblwmIzM0OywgZXJyKTtcbi1cdFx0cmV0dXJuIGVycjtcbi1cdH1cbiBcbiBcdC8qIG5vdCBhIGZhdGFsIGVycm9yIGlmIHRoaXMgZmFpbHMgKi9cbiBcdGVyciA9IGljZV9pbml0X252bV9waHlfdHlwZShwZi1cdTAwM2Vody5wb3J0X2luZm8pO1xuQEAgLTQ4MzgsOCAmIzQzOzQ4MzYsNiBAQCBzdGF0aWMgaW50IGljZV9pbml0X2xpbmsoc3RydWN0IGljZV9wZiAqcGYpXG4gXHR9IGVsc2Uge1xuIFx0XHRzZXRfYml0KElDRV9GTEFHX05PX01FRElBLCBwZi1cdTAwM2VmbGFncyk7XG4gXHR9XG4tXG4tXHRyZXR1cm4gZXJyO1xuIH1cbiBcbiBzdGF0aWMgaW50IGljZV9pbml0X3BmX3N3KHN0cnVjdCBpY2VfcGYgKnBmKVxuQEAgLTQ5ODIsMTMgJiM0Mzs0OTc4LDExIEBAIHN0YXRpYyBpbnQgaWNlX2luaXQoc3RydWN0IGljZV9wZiAqcGYpXG4gXG4gXHRpY2VfaW5pdF93YWtldXAocGYpO1xuIFxuLVx0ZXJyID0gaWNlX2luaXRfbGluayhwZik7XG4tXHRpZiAoZXJyKVxuLVx0XHRnb3RvIGVycl9pbml0X2xpbms7XG4mIzQzO1x0aWNlX2luaXRfbGluayhwZik7XG4gXG4gXHRlcnIgPSBpY2Vfc2VuZF92ZXJzaW9uKHBmKTtcbiBcdGlmIChlcnIpXG4tXHRcdGdvdG8gZXJyX2luaXRfbGluaztcbiYjNDM7XHRcdGdvdG8gZXJyX2RlaW5pdF9wZl9zdztcbiBcbiBcdGljZV92ZXJpZnlfY2FjaGVsaW5lX3NpemUocGYpO1xuIFxuQEAgLTUwMDcsNyAmIzQzOzUwMDEsNyBAQCBzdGF0aWMgaW50IGljZV9pbml0KHN0cnVjdCBpY2VfcGYgKnBmKVxuIFxuIFx0cmV0dXJuIDA7XG4gXG4tZXJyX2luaXRfbGluazpcbiYjNDM7ZXJyX2RlaW5pdF9wZl9zdzpcbiBcdGljZV9kZWluaXRfcGZfc3cocGYpO1xuIGVycl9pbml0X3BmX3N3OlxuIFx0aWNlX2RlYWxsb2NfdnNpcyhwZik7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV92Zl9saWIuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdmZfbGliLmNcbmluZGV4IGIxZjQ2NzA3ZGNjMDA0Li4yN2U0YWNiMTYyMGYwYyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdmZfbGliLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdmZfbGliLmNcbkBAIC04MDEsNyAmIzQzOzgwMSw3IEBAIHZvaWQgaWNlX3Jlc2V0X2FsbF92ZnMoc3RydWN0IGljZV9wZiAqcGYpXG4gXHRcdCAqIHNldHVwIG9ubHkgd2hlbiBWRiBjcmVhdGVzIGl0cyBmaXJzdCBGRElSIHJ1bGUuXG4gXHRcdCAqL1xuIFx0XHRpZiAodmYtXHUwMDNlY3RybF92c2lfaWR4ICE9IElDRV9OT19WU0kpXG4tXHRcdFx0aWNlX3ZmX2N0cmxfaW52YWxpZGF0ZV92c2kodmYpO1xuJiM0MztcdFx0XHRpY2VfdmZfY3RybF92c2lfcmVsZWFzZSh2Zik7XG4gXG4gXHRcdGljZV92Zl9wcmVfdnNpX3JlYnVpbGQodmYpO1xuIFx0XHRpZiAoaWNlX3ZmX3JlYnVpbGRfdnNpKHZmKSkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIyIDIyOjE0PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIEludGVsIEV0aGVybmV0IGRyaXZlcnMgKGUxMDAwZSwgaTQwZSwgaWNlKSB3aGljaCByZXF1aXJlIHBoeXNpY2FsIFBDSSBoYXJkd2FyZSB0byBiZSBwcm9iZWQuIFRoZSBlMTAwMGUgY2hhbmdlcyBhcmUgc3BlY2lmaWMgdG8gSUNIOExBTi9QQ0ggTUFDIHR5cGVzIGFuZCBhIERNSSBxdWlyaywgd2hpY2ggYXJlIG5vdCBlbXVsYXRlZCBieSBRRU1VIChRRU1VIGVtdWxhdGVzIHRoZSA4MjU3NEwgTUFDKS4gVGhlIGk0MGUgY2hhbmdlIGlzIGEgdHJpdmlhbCBkZWJ1ZyBtYWNybyBmaXguIFRoZSBpY2UgY2hhbmdlcyBhcmUgZm9yIHRoZSBJbnRlbCBFODAwIHNlcmllcywgd2hpY2ggbGFja3Mgc29mdHdhcmUgZW11bGF0aW9uIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gU2luY2UgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgY2Fubm90IGJlIHJlYWNoZWQgd2l0aG91dCB0aGUgc3BlY2lmaWMgcGh5c2ljYWwgaGFyZHdhcmUsIHRoaXMgcGF0Y2ggZG9lcyBub3QgbmVlZCB0byBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA1NGNhMjFiMzZmNWMwODhlODY1ZjNjNWRlNTRjYTJjYTdjYjJmOTc1CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBKdW4gMjIgMjI6MTQ6MzUgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMGUvaWNoOGxhbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDBlL2ljaDhsYW4uYwppbmRleCBkZWEyMDhkYjFiZTViZi4uYWE5MGUwY2U4YWNhZjggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwZS9pY2g4bGFuLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDBlL2ljaDhsYW4uYwpAQCAtMTU5NCw2ICYjNDM7MTU5NCw5IEBAIHN0YXRpYyBzMzIgZTEwMDBfY2hlY2tfZm9yX2NvcHBlcl9saW5rX2ljaDhsYW4oc3RydWN0IGUxMDAwX2h3ICpodykKIAkJCXBoeV9yZWcgJmFtcDs9IH5JMjE3X1BMTF9DTE9DS19HQVRFX01BU0s7CiAJCQlpZiAoc3BlZWQgPT0gU1BFRURfMTAwIHx8IHNwZWVkID09IFNQRUVEXzEwKQogCQkJCXBoeV9yZWcgfD0gMHgzRTg7CiYjNDM7CQkJZWxzZSBpZiAoaHctJmd0O21hYy50eXBlID09IGUxMDAwX3BjaF9tdHAgfHwKJiM0MzsJCQkJIGh3LSZndDttYWMudHlwZSA9PSBlMTAwMF9wY2hfcHRwKQomIzQzOwkJCQlwaHlfcmVnIHw9IDB4MUQ1OwogCQkJZWxzZQogCQkJCXBoeV9yZWcgfD0gMHhGQTsKIAkJCWUxZV93cGh5X2xvY2tlZChodywgSTIxN19QTExfQ0xPQ0tfR0FURV9SRUcsIHBoeV9yZWcpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDBlL25ldGRldi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDBlL25ldGRldi5jCmluZGV4IDgwOGU1Y2RkZDZhOTE4Li44NDRmMzFhYjM3YWQ0NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDBlL25ldGRldi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwZS9uZXRkZXYuYwpAQCAtMjUsNiAmIzQzOzI1LDcgQEAKICNpbmNsdWRlICZsdDtsaW51eC9wbV9ydW50aW1lLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvcHJlZmV0Y2guaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9zdXNwZW5kLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L2RtaS5oJmd0OwogCiAjaW5jbHVkZSAmIzM0O2UxMDAwLmgmIzM0OwogI2RlZmluZSBDUkVBVEVfVFJBQ0VfUE9JTlRTCkBAIC01OCw2ICYjNDM7NTksMTcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBlMTAwMF9pbmZvICplMTAwMF9pbmZvX3RibFtdID0gewogCVtib2FyZF9wY2hfcHRwXQkJPSAmYW1wO2UxMDAwX3BjaF9wdHBfaW5mbywKIH07CiAKJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IGRtaV9zeXN0ZW1faWQgZGlzYWJsZV9rMV9saXN0W10gPSB7CiYjNDM7CXsKJiM0MzsJCS5pZGVudCA9ICYjMzQ7RGVsbCBQcm8gMTYgUGx1cyBQQjE2MjUwJiMzNDssCiYjNDM7CQkubWF0Y2hlcyA9IHsKJiM0MzsJCQlETUlfTUFUQ0goRE1JX1NZU19WRU5ET1IsICYjMzQ7RGVsbCBJbmMuJiMzNDspLAomIzQzOwkJCURNSV9NQVRDSChETUlfUFJPRFVDVF9OQU1FLCAmIzM0O0RlbGwgUHJvIDE2IFBsdXMgUEIxNjI1MCYjMzQ7KSwKJiM0MzsJCX0sCiYjNDM7CX0sCiYjNDM7CXt9CiYjNDM7fTsKJiM0MzsKIHN0cnVjdCBlMTAwMF9yZWdfaW5mbyB7CiAJdTMyIG9mczsKIAljaGFyICpuYW1lOwpAQCAtNzY3MCw3ICYjNDM7NzY4Miw4IEBAIHN0YXRpYyBpbnQgZTEwMDBfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpCiAJLyogaW5pdCBQVFAgaGFyZHdhcmUgY2xvY2sgKi8KIAllMTAwMGVfcHRwX2luaXQoYWRhcHRlcik7CiAKLQlpZiAoaHctJmd0O21hYy50eXBlICZndDs9IGUxMDAwX3BjaF9tdHApCiYjNDM7CS8qIGRpc2FibGUgSzEgYnkgZGVmYXVsdCBvbiBrbm93biBwcm9ibGVtYXRpYyBzeXN0ZW1zICovCiYjNDM7CWlmIChody0mZ3Q7bWFjLnR5cGUgJmd0Oz0gZTEwMDBfcGNoX210cCAmYW1wOyZhbXA7IGRtaV9jaGVja19zeXN0ZW0oZGlzYWJsZV9rMV9saXN0KSkKIAkJYWRhcHRlci0mZ3Q7ZmxhZ3MyIHw9IEZMQUcyX0RJU0FCTEVfSzE7CiAKIAkvKiByZXNldCB0aGUgaGFyZHdhcmUgd2l0aCB0aGUgbmV3IHNldHRpbmdzICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfZGVidWcuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZWJ1Zy5oCmluZGV4IGU5ODcxZGZiMzJiZDQ0Li4wMWZkNzBkYjkwODY2NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RlYnVnLmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RlYnVnLmgKQEAgLTQyLDcgJiM0Mzs0Miw3IEBAIHN0cnVjdCBkZXZpY2UgKmk0MGVfaHdfdG9fZGV2KHN0cnVjdCBpNDBlX2h3ICpodyk7CiAjZGVmaW5lIGk0MGVfZGVidWcoaCwgbSwgcywgLi4uKQkJCQlcCiBkbyB7CQkJCQkJCQlcCiAJaWYgKCgobSkgJmFtcDsgKGgpLSZndDtkZWJ1Z19tYXNrKSkJCQkJXAotCQlkZXZfaW5mbyhpNDBlX2h3X3RvX2RldihodyksIHMsICMjX19WQV9BUkdTX18pOwlcCiYjNDM7CQlkZXZfaW5mbyhpNDBlX2h3X3RvX2RldihoKSwgcywgIyNfX1ZBX0FSR1NfXyk7CVwKIH0gd2hpbGUgKDApCiAKICNlbmRpZiAvKiBfSTQwRV9ERUJVR19IXyAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9jb21tb24uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmMKaW5kZXggMzFlMGRlOWU3ZjYwNzUuLmVmMWNlMTA2ZjgxYjVlIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmMKQEAgLTM4ODIsNyAmIzQzOzM4ODIsNiBAQCBpY2Vfc2V0X2ZjKHN0cnVjdCBpY2VfcG9ydF9pbmZvICpwaSwgdTggKmFxX2ZhaWx1cmVzLCBib29sIGVuYV9hdXRvX2xpbmtfdXBkYXRlKQogCWlmICghcGkgfHwgIWFxX2ZhaWx1cmVzKQogCQlyZXR1cm4gLUVJTlZBTDsKIAotCSphcV9mYWlsdXJlcyA9IDA7CiAJaHcgPSBwaS0mZ3Q7aHc7CiAKIAlwY2FwcyA9IGt6YWxsb2Nfb2JqKCpwY2Fwcyk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2RwbGwuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZHBsbC5jCmluZGV4IDQ2MmM2OWNjMTFlMTlkLi4zMGMzYTRkYjdkNjExYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kcGxsLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kcGxsLmMKQEAgLTQ2NDUsOSAmIzQzOzQ2NDUsMTMgQEAgaWNlX2RwbGxfaW5pdF9waW5zX2luZm8oc3RydWN0IGljZV9wZiAqcGYsIGVudW0gaWNlX2RwbGxfcGluX3R5cGUgcGluX3R5cGUpCiBzdGF0aWMgdm9pZCBpY2VfZHBsbF9kZWluaXRfaW5mbyhzdHJ1Y3QgaWNlX3BmICpwZikKIHsKIAlrZnJlZShwZi0mZ3Q7ZHBsbHMuaW5wdXRzKTsKJiM0MzsJcGYtJmd0O2RwbGxzLmlucHV0cyA9IE5VTEw7CiAJa2ZyZWUocGYtJmd0O2RwbGxzLm91dHB1dHMpOwomIzQzOwlwZi0mZ3Q7ZHBsbHMub3V0cHV0cyA9IE5VTEw7CiAJa2ZyZWUocGYtJmd0O2RwbGxzLmVlYy5pbnB1dF9wcmlvKTsKJiM0MzsJcGYtJmd0O2RwbGxzLmVlYy5pbnB1dF9wcmlvID0gTlVMTDsKIAlrZnJlZShwZi0mZ3Q7ZHBsbHMucHBzLmlucHV0X3ByaW8pOwomIzQzOwlwZi0mZ3Q7ZHBsbHMucHBzLmlucHV0X3ByaW8gPSBOVUxMOwogfQogCiAvKioKQEAgLTQ3NDgsMTIgJiM0Mzs0NzUyLDE2IEBAIHN0YXRpYyBpbnQgaWNlX2RwbGxfaW5pdF9pbmZvKHN0cnVjdCBpY2VfcGYgKnBmLCBib29sIGNndSkKIAogCWFsbG9jX3NpemUgPSBzaXplb2YoKmRlLSZndDtpbnB1dF9wcmlvKSAqIGQtJmd0O251bV9pbnB1dHM7CiAJZGUtJmd0O2lucHV0X3ByaW8gPSBremFsbG9jKGFsbG9jX3NpemUsIEdGUF9LRVJORUwpOwotCWlmICghZGUtJmd0O2lucHV0X3ByaW8pCi0JCXJldHVybiAtRU5PTUVNOwomIzQzOwlpZiAoIWRlLSZndDtpbnB1dF9wcmlvKSB7CiYjNDM7CQlyZXQgPSAtRU5PTUVNOwomIzQzOwkJZ290byBkZWluaXRfaW5mbzsKJiM0MzsJfQogCiAJZHAtJmd0O2lucHV0X3ByaW8gPSBremFsbG9jKGFsbG9jX3NpemUsIEdGUF9LRVJORUwpOwotCWlmICghZHAtJmd0O2lucHV0X3ByaW8pCi0JCXJldHVybiAtRU5PTUVNOwomIzQzOwlpZiAoIWRwLSZndDtpbnB1dF9wcmlvKSB7CiYjNDM7CQlyZXQgPSAtRU5PTUVNOwomIzQzOwkJZ290byBkZWluaXRfaW5mbzsKJiM0MzsJfQogCiAJcmV0ID0gaWNlX2RwbGxfaW5pdF9waW5zX2luZm8ocGYsIElDRV9EUExMX1BJTl9UWVBFX0lOUFVUKTsKIAlpZiAocmV0KQpAQCAtNDc3OCwxMiAmIzQzOzQ3ODYsMTIgQEAgc3RhdGljIGludCBpY2VfZHBsbF9pbml0X2luZm8oc3RydWN0IGljZV9wZiAqcGYsIGJvb2wgY2d1KQogCXJldCA9IGljZV9nZXRfY2d1X3JjbGtfcGluX2luZm8oJmFtcDtwZi0mZ3Q7aHcsICZhbXA7ZC0mZ3Q7YmFzZV9yY2xrX2lkeCwKIAkJCQkJJmFtcDtwZi0mZ3Q7ZHBsbHMucmNsay5udW1fcGFyZW50cyk7CiAJaWYgKHJldCkKLQkJcmV0dXJuIHJldDsKJiM0MzsJCWdvdG8gZGVpbml0X2luZm87CiAJZm9yIChpID0gMDsgaSAmbHQ7IHBmLSZndDtkcGxscy5yY2xrLm51bV9wYXJlbnRzOyBpJiM0MzsmIzQzOykKIAkJcGYtJmd0O2RwbGxzLnJjbGsucGFyZW50X2lkeFtpXSA9IGQtJmd0O2Jhc2VfcmNsa19pZHggJiM0MzsgaTsKIAlyZXQgPSBpY2VfZHBsbF9pbml0X3BpbnNfaW5mbyhwZiwgSUNFX0RQTExfUElOX1RZUEVfUkNMS19JTlBVVCk7CiAJaWYgKHJldCkKLQkJcmV0dXJuIHJldDsKJiM0MzsJCWdvdG8gZGVpbml0X2luZm87CiAJZGUtJmd0O21vZGUgPSBEUExMX01PREVfQVVUT01BVElDOwogCWRwLSZndDttb2RlID0gRFBMTF9NT0RFX0FVVE9NQVRJQzsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9lc3dpdGNoLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Vzd2l0Y2guYwppbmRleCAyZTRmMDk2OTAzNWY3Ny4uYzMwZTI3YmJmZTZlMjUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZXN3aXRjaC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZXN3aXRjaC5jCkBAIC0xMTcsOCAmIzQzOzExNyw2IEBAIHN0YXRpYyBpbnQgaWNlX2Vzd2l0Y2hfc2V0dXBfcmVwcihzdHJ1Y3QgaWNlX3BmICpwZiwgc3RydWN0IGljZV9yZXByICpyZXByKQogCWlmICghcmVwci0mZ3Q7ZHN0KQogCQlyZXR1cm4gLUVOT01FTTsKIAotCW5ldGlmX2tlZXBfZHN0KHVwbGlua192c2ktJmd0O25ldGRldik7Ci0KIAlkc3QgPSByZXByLSZndDtkc3Q7CiAJZHN0LSZndDt1LnBvcnRfaW5mby5wb3J0X2lkID0gdnNpLSZndDt2c2lfbnVtOwogCWRzdC0mZ3Q7dS5wb3J0X2luZm8ubG93ZXJfZGV2ID0gdXBsaW5rX3ZzaS0mZ3Q7bmV0ZGV2OwpAQCAtMzEyLDYgJiM0MzszMTAsOCBAQCBzdGF0aWMgaW50IGljZV9lc3dpdGNoX2VuYWJsZV9zd2l0Y2hkZXYoc3RydWN0IGljZV9wZiAqcGYpCiAJaWYgKGljZV9lc3dpdGNoX2JyX29mZmxvYWRzX2luaXQocGYpKQogCQlnb3RvIGVycl9icl9vZmZsb2FkczsKIAomIzQzOwluZXRpZl9rZWVwX2RzdCh1cGxpbmtfdnNpLSZndDtuZXRkZXYpOwomIzQzOwogCXBmLSZndDtlc3dpdGNoLmlzX3J1bm5pbmcgPSB0cnVlOwogCiAJcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2V0aHRvb2wuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZXRodG9vbC5jCmluZGV4IDIzNmQyOTNhYmE5ODRhLi40OTM3MWIwNjU4NDU4MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9ldGh0b29sLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9ldGh0b29sLmMKQEAgLTM1MDgsNyAmIzQzOzM1MDgsNyBAQCBpY2Vfc2V0X3BhdXNlcGFyYW0oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgc3RydWN0IGV0aHRvb2xfcGF1c2VwYXJhbSAqcGF1c2UpCiAJc3RydWN0IGljZV92c2kgKnZzaSA9IG5wLSZndDt2c2k7CiAJc3RydWN0IGljZV9odyAqaHcgPSAmYW1wO3BmLSZndDtodzsKIAlzdHJ1Y3QgaWNlX3BvcnRfaW5mbyAqcGk7Ci0JdTggYXFfZmFpbHVyZXM7CiYjNDM7CXU4IGFxX2ZhaWx1cmVzID0gMDsKIAlib29sIGxpbmtfdXA7CiAJdTMyIGlzX2FuOwogCWludCBlcnI7CkBAIC0zNTc5LDE4ICYjNDM7MzU3OSwyMiBAQCBpY2Vfc2V0X3BhdXNlcGFyYW0oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgc3RydWN0IGV0aHRvb2xfcGF1c2VwYXJhbSAqcGF1c2UpCiAJLyogU2V0IHRoZSBGQyBtb2RlIGFuZCBvbmx5IHJlc3RhcnQgQU4gaWYgbGluayBpcyB1cCAqLwogCWVyciA9IGljZV9zZXRfZmMocGksICZhbXA7YXFfZmFpbHVyZXMsIGxpbmtfdXApOwogCi0JaWYgKGFxX2ZhaWx1cmVzICZhbXA7IElDRV9TRVRfRkNfQVFfRkFJTF9HRVQpIHsKJiM0MzsJc3dpdGNoIChhcV9mYWlsdXJlcykgewomIzQzOwljYXNlIElDRV9TRVRfRkNfQVFfRkFJTF9HRVQ6CiAJCW5ldGRldl9pbmZvKG5ldGRldiwgJiMzNDtTZXQgZmMgZmFpbGVkIG9uIHRoZSBnZXRfcGh5X2NhcGFiaWxpdGllcyBjYWxsIHdpdGggZXJyICVkIGFxX2VyciAlc1xuJiMzNDssCiAJCQkgICAgZXJyLCBsaWJpZV9hcV9zdHIoaHctJmd0O2FkbWlucS5zcV9sYXN0X3N0YXR1cykpOwogCQllcnIgPSAtRUFHQUlOOwotCX0gZWxzZSBpZiAoYXFfZmFpbHVyZXMgJmFtcDsgSUNFX1NFVF9GQ19BUV9GQUlMX1NFVCkgewomIzQzOwkJYnJlYWs7CiYjNDM7CWNhc2UgSUNFX1NFVF9GQ19BUV9GQUlMX1NFVDoKIAkJbmV0ZGV2X2luZm8obmV0ZGV2LCAmIzM0O1NldCBmYyBmYWlsZWQgb24gdGhlIHNldF9waHlfY29uZmlnIGNhbGwgd2l0aCBlcnIgJWQgYXFfZXJyICVzXG4mIzM0OywKIAkJCSAgICBlcnIsIGxpYmllX2FxX3N0cihody0mZ3Q7YWRtaW5xLnNxX2xhc3Rfc3RhdHVzKSk7CiAJCWVyciA9IC1FQUdBSU47Ci0JfSBlbHNlIGlmIChhcV9mYWlsdXJlcyAmYW1wOyBJQ0VfU0VUX0ZDX0FRX0ZBSUxfVVBEQVRFKSB7CiYjNDM7CQlicmVhazsKJiM0MzsJY2FzZSBJQ0VfU0VUX0ZDX0FRX0ZBSUxfVVBEQVRFOgogCQluZXRkZXZfaW5mbyhuZXRkZXYsICYjMzQ7U2V0IGZjIGZhaWxlZCBvbiB0aGUgZ2V0X2xpbmtfaW5mbyBjYWxsIHdpdGggZXJyICVkIGFxX2VyciAlc1xuJiMzNDssCiAJCQkgICAgZXJyLCBsaWJpZV9hcV9zdHIoaHctJmd0O2FkbWlucS5zcV9sYXN0X3N0YXR1cykpOwogCQllcnIgPSAtRUFHQUlOOwomIzQzOwkJYnJlYWs7CiAJfQogCiAJcmV0dXJuIGVycjsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmMKaW5kZXggZTJmYmUxMTFmODQ5NjkuLmUyZmQyZGFiMDNlMzYzIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYwpAQCAtNDc4OSwxNiAmIzQzOzQ3ODksMTQgQEAgc3RhdGljIHZvaWQgaWNlX2luaXRfd2FrZXVwKHN0cnVjdCBpY2VfcGYgKnBmKQogCWRldmljZV9zZXRfd2FrZXVwX2VuYWJsZShpY2VfcGZfdG9fZGV2KHBmKSwgZmFsc2UpOwogfQogCi1zdGF0aWMgaW50IGljZV9pbml0X2xpbmsoc3RydWN0IGljZV9wZiAqcGYpCiYjNDM7c3RhdGljIHZvaWQgaWNlX2luaXRfbGluayhzdHJ1Y3QgaWNlX3BmICpwZikKIHsKIAlzdHJ1Y3QgZGV2aWNlICpkZXYgPSBpY2VfcGZfdG9fZGV2KHBmKTsKIAlpbnQgZXJyOwogCiAJZXJyID0gaWNlX2luaXRfbGlua19ldmVudHMocGYtJmd0O2h3LnBvcnRfaW5mbyk7Ci0JaWYgKGVycikgewomIzQzOwlpZiAoZXJyKQogCQlkZXZfZXJyKGRldiwgJiMzNDtpY2VfaW5pdF9saW5rX2V2ZW50cyBmYWlsZWQ6ICVkXG4mIzM0OywgZXJyKTsKLQkJcmV0dXJuIGVycjsKLQl9CiAKIAkvKiBub3QgYSBmYXRhbCBlcnJvciBpZiB0aGlzIGZhaWxzICovCiAJZXJyID0gaWNlX2luaXRfbnZtX3BoeV90eXBlKHBmLSZndDtody5wb3J0X2luZm8pOwpAQCAtNDgzOCw4ICYjNDM7NDgzNiw2IEBAIHN0YXRpYyBpbnQgaWNlX2luaXRfbGluayhzdHJ1Y3QgaWNlX3BmICpwZikKIAl9IGVsc2UgewogCQlzZXRfYml0KElDRV9GTEFHX05PX01FRElBLCBwZi0mZ3Q7ZmxhZ3MpOwogCX0KLQotCXJldHVybiBlcnI7CiB9CiAKIHN0YXRpYyBpbnQgaWNlX2luaXRfcGZfc3coc3RydWN0IGljZV9wZiAqcGYpCkBAIC00OTgyLDEzICYjNDM7NDk3OCwxMSBAQCBzdGF0aWMgaW50IGljZV9pbml0KHN0cnVjdCBpY2VfcGYgKnBmKQogCiAJaWNlX2luaXRfd2FrZXVwKHBmKTsKIAotCWVyciA9IGljZV9pbml0X2xpbmsocGYpOwotCWlmIChlcnIpCi0JCWdvdG8gZXJyX2luaXRfbGluazsKJiM0MzsJaWNlX2luaXRfbGluayhwZik7CiAKIAllcnIgPSBpY2Vfc2VuZF92ZXJzaW9uKHBmKTsKIAlpZiAoZXJyKQotCQlnb3RvIGVycl9pbml0X2xpbms7CiYjNDM7CQlnb3RvIGVycl9kZWluaXRfcGZfc3c7CiAKIAlpY2VfdmVyaWZ5X2NhY2hlbGluZV9zaXplKHBmKTsKIApAQCAtNTAwNyw3ICYjNDM7NTAwMSw3IEBAIHN0YXRpYyBpbnQgaWNlX2luaXQoc3RydWN0IGljZV9wZiAqcGYpCiAKIAlyZXR1cm4gMDsKIAotZXJyX2luaXRfbGluazoKJiM0MztlcnJfZGVpbml0X3BmX3N3OgogCWljZV9kZWluaXRfcGZfc3cocGYpOwogZXJyX2luaXRfcGZfc3c6CiAJaWNlX2RlYWxsb2NfdnNpcyhwZik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3ZmX2xpYi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV92Zl9saWIuYwppbmRleCBiMWY0NjcwN2RjYzAwNC4uMjdlNGFjYjE2MjBmMGMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdmZfbGliLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV92Zl9saWIuYwpAQCAtODAxLDcgJiM0Mzs4MDEsNyBAQCB2b2lkIGljZV9yZXNldF9hbGxfdmZzKHN0cnVjdCBpY2VfcGYgKnBmKQogCQkgKiBzZXR1cCBvbmx5IHdoZW4gVkYgY3JlYXRlcyBpdHMgZmlyc3QgRkRJUiBydWxlLgogCQkgKi8KIAkJaWYgKHZmLSZndDtjdHJsX3ZzaV9pZHggIT0gSUNFX05PX1ZTSSkKLQkJCWljZV92Zl9jdHJsX2ludmFsaWRhdGVfdnNpKHZmKTsKJiM0MzsJCQlpY2VfdmZfY3RybF92c2lfcmVsZWFzZSh2Zik7CiAKIAkJaWNlX3ZmX3ByZV92c2lfcmVidWlsZCh2Zik7CiAJCWlmIChpY2VfdmZfcmVidWlsZF92c2kodmYpKSB7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIyIDIyOjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU5NTkKCQkJCQkJCW91dHB1dDogMTcyCgkJCQkJCQl0aG91Z2h0czogMTY0NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXNpcyBvZiBJbnRlbCBFdGhlcm5ldCBEcml2ZXIgUGF0Y2ggU2VyaWVzKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFdlIGhhdmUgYSBwYXRjaCBzZXJpZXMgdG91Y2hpbmcgdGhlIGBlMTAwMGVgLCBgaTQwZWAsIGFuZCBgaWNlYCBJbnRlbCBFdGhlcm5ldCBkcml2ZXJzLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gYXNzZXNzIHRoZSBmdXp6aW5nIHBvdGVudGlhbC4KCkZpcnN0LCBgZTEwMDBlYDogVGhlIHBhdGNoIG1vZGlmaWVzIGBpY2g4bGFuLmNgLCBzcGVjaWZpY2FsbHkgcmVsYXRlZCB0byBQSFkvTUFDIGNvbmZpZ3VyYXRpb25zIGZvciBjZXJ0YWluIEludGVsIFBDSCBNQUMgdHlwZXMgbGlrZSBgZTEwMDBfcGNoX210cGAgYW5kIGBlMTAwMF9wY2hfcHRwYC4gVGhpcyBpbW1lZGlhdGVseSByYWlzZXMgYSBmbGFnOiBgZTEwMDBlYCBpcyBhIHBoeXNpY2FsIGhhcmR3YXJlIGRyaXZlci4gVGhlIHF1ZXN0aW9uIGlzLCBjYW4gd2UgdHJpZ2dlciB0aGVzZSBzcGVjaWZpYyBjb2RlIHBhdGhzIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/IFFFTVUgb2ZmZXJzIGVtdWxhdGlvbiBmb3IgYGUxMDAwYCBhbmQgYGUxMDAwZWAsIHdoaWNoIGlzIHVzZWZ1bCwgYnV0IHdoaWNoIE1BQyBpcyBpdCBlbXVsYXRpbmc/IEZ1cnRoZXIgZGlnZ2luZyByZXZlYWxzIHRoYXQgUUVNVSYjMzk7cyBgZTEwMDBlYCBlbXVsYXRpb24gZGVmYXVsdHMgdG8gdGhlIDgyNTc0TC4gVGhlc2UgY2hhbmdlcyBpbiBgaWNoOGxhbi5jYCBhcmUgZm9yIHRoZSBJQ0g4LzkvMTAsIFBDSCwgUENIMiwgTFBULCBTUFQsIENOUCwgZXRjLiBNQUMgdHlwZXMsIHdoaWNoIGFyZSAqbm90KiBlbXVsYXRlZCBieSBRRU1VLiBBZGRpdGlvbmFsbHksIGEgRE1JIGNoZWNrIGlzIGJlaW5nIGFkZGVkIHRvIGBuZXRkZXYuY2AgZm9yIGEgRGVsbCBQcm8gbGFwdG9wLCB3aGljaCBpcyBub3QgcmVhY2hhYmxlIHRocm91Z2ggZ2VuZXJpYyBmdXp6aW5nIHVubGVzcyB3ZSBtb2NrIHRoZSBETUksIGJ1dCB0aGF0JiMzOTtzIG5vdCBvdXIgY3VycmVudCBmb2N1cy4KCk1vdmluZyB0byBgaTQwZWAsIHRoZSBjaGFuZ2VzIGFyZSBtaW5pbWFsLCBqdXN0IGEgZGVidWcgbWFjcm8gZml4IGluIGBpNDBlX2RlYnVnLmhgLgoKVGhlIGBpY2VgIGRyaXZlciBjaGFuZ2VzIGFyZSBtb3JlIG51bWVyb3VzLCBpbnZvbHZpbmcgZmxvdyBjb250cm9sLCBEUExMIGluaXRpYWxpemF0aW9uL2RlLWluaXRpYWxpemF0aW9uLCBlc3dpdGNoIHNldHVwLCBldGh0b29sIGludGVncmF0aW9uLCBpbml0aWFsaXphdGlvbiwgYW5kIFZGIG1hbmFnZW1lbnQuIEFnYWluLCB3ZSBhcmUgbG9va2luZyBhdCBoYXJkd2FyZS1zcGVjaWZpYyBmdW5jdGlvbmFsaXR5IG9mIHRoZSBFODAwIHNlcmllcy4KCk15IGltbWVkaWF0ZSBxdWVzdGlvbiBpcyB3aGV0aGVyIHdlIGNhbiByZWFjaCB0aGVzZSB2aWEgYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gUUVNVSBkb2VzICpub3QqIG5hdGl2ZWx5IGVtdWxhdGUgYGk0MGVgIG9yIGBpY2VgLiBJdCBkb2VzIGhhdmUgdGhlIGFiaWxpdHkgdG8gZW11bGF0ZSB0aGUgYGlnYmAgZHJpdmVyICg4MjU3NiksIHdoaWNoIGNhbiBiZSB1c2VmdWwsIGJ1dCB0aGF0JiMzOTtzIG5vdCB3aGF0IGlzIGJlaW5nIG1vZGlmaWVkIGhlcmUuIEkgYW0gYWxzbyBhd2FyZSB0aGVyZSBpcyBubyBrbm93biBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIGBpY2VgIG9yIGBpNDBlYCBhdmFpbGFibGUgdGhhdCBJIGFtIGZhbWlsaWFyIHdpdGguCgpUbyByZWFjaCB0aGUgY29kZSwgd2UgbmVlZCB0aGUgUENJIGRldmljZSwgb3RoZXJ3aXNlIHRoZSBgcHJvYmVgIGZ1bmN0aW9uIHdpbGwgbmV2ZXIgYmUgY2FsbGVkLiBXZSBjYW4mIzM5O3QgcmVhY2ggdGhpcyBjb2RlIHRocm91Z2ggc29tZSBtb2NrLiBGb3IgZXhhbXBsZSwgdG8gY2FsbCBgaWNlX3NldF9wYXVzZXBhcmFtYCwgd2UgbmVlZCB0aGUgbmV0ZGV2IHRvIGJlIHJlZ2lzdGVyZWQgYnkgdGhlIGBpY2VgIGRyaXZlciwgd2hpY2ggbWVhbnMgd2UgbXVzdCBoYXZlIGEgUENJIGRldmljZS4KClNwZWNpZmljYWxseSwgdGhlIGBlMTAwMGVgIGNoYW5nZXMgYXJlIHJlbGF0ZWQgdG8gTWV0ZW9yIExha2UsIHdoaWNoIFFFTVUgaXMgZGVmaW5pdGVseSBub3QgZW11bGF0aW5nLiBgaWNlYCBpcyByZWxhdGVkIHRvIEludGVsIEU4MDAgc2VyaWVzIGhhcmR3YXJlLgoKVGhlcmVmb3JlLCBiZWNhdXNlIGFsbCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyByZXF1aXJlIHNwZWNpZmljIHBoeXNpY2FsIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUsIHRoaXMgcGF0Y2ggc2VyaWVzIGlzIG5vdCBzdWl0YWJsZSBmb3IgZnV6emluZy4gVGh1cywgYFdvcnRoRnV6emluZz1mYWxzZWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjIgMjI6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBJbnRlbCBFdGhlcm5ldCBkcml2ZXJzIChlMTAwMGUsIGk0MGUsIGljZSkgd2hpY2ggcmVxdWlyZSBwaHlzaWNhbCBQQ0kgaGFyZHdhcmUgdG8gYmUgcHJvYmVkLiBUaGUgZTEwMDBlIGNoYW5nZXMgYXJlIHNwZWNpZmljIHRvIElDSDhMQU4vUENIIE1BQyB0eXBlcyBhbmQgYSBETUkgcXVpcmssIHdoaWNoIGFyZSBub3QgZW11bGF0ZWQgYnkgUUVNVSAoUUVNVSBlbXVsYXRlcyB0aGUgODI1NzRMIE1BQykuIFRoZSBpNDBlIGNoYW5nZSBpcyBhIHRyaXZpYWwgZGVidWcgbWFjcm8gZml4LiBUaGUgaWNlIGNoYW5nZXMgYXJlIGZvciB0aGUgSW50ZWwgRTgwMCBzZXJpZXMsIHdoaWNoIGxhY2tzIHNvZnR3YXJlIGVtdWxhdGlvbiBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIFNpbmNlIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGNhbm5vdCBiZSByZWFjaGVkIHdpdGhvdXQgdGhlIHNwZWNpZmljIHBoeXNpY2FsIGhhcmR3YXJlLCB0aGlzIHBhdGNoIGRvZXMgbm90IG5lZWQgdG8gYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgSW50ZWwgRXRoZXJuZXQgZHJpdmVycyAoZTEwMDBlLCBpNDBlLCBpY2UpIHdoaWNoIHJlcXVpcmUgcGh5c2ljYWwgUENJIGhhcmR3YXJlIHRvIGJlIHByb2JlZC4gVGhlIGUxMDAwZSBjaGFuZ2VzIGFyZSBzcGVjaWZpYyB0byBJQ0g4TEFOL1BDSCBNQUMgdHlwZXMgYW5kIGEgRE1JIHF1aXJrLCB3aGljaCBhcmUgbm90IGVtdWxhdGVkIGJ5IFFFTVUgKFFFTVUgZW11bGF0ZXMgdGhlIDgyNTc0TCBNQUMpLiBUaGUgaTQwZSBjaGFuZ2UgaXMgYSB0cml2aWFsIGRlYnVnIG1hY3JvIGZpeC4gVGhlIGljZSBjaGFuZ2VzIGFyZSBmb3IgdGhlIEludGVsIEU4MDAgc2VyaWVzLCB3aGljaCBsYWNrcyBzb2Z0d2FyZSBlbXVsYXRpb24gaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBTaW5jZSB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBjYW5ub3QgYmUgcmVhY2hlZCB3aXRob3V0IHRoZSBzcGVjaWZpYyBwaHlzaWNhbCBoYXJkd2FyZSwgdGhpcyBwYXRjaCBkb2VzIG5vdCBuZWVkIHRvIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNi0yMlQyMjoxNDozNi45ODUwMjk3MDVaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTQ5MDAzOTYwNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgSW50ZWwgRXRoZXJuZXQgZHJpdmVycyAoZTEwMDBlLCBpNDBlLCBpY2UpIHdoaWNoIHJlcXVpcmUgcGh5c2ljYWwgUENJIGhhcmR3YXJlIHRvIGJlIHByb2JlZC4gVGhlIGUxMDAwZSBjaGFuZ2VzIGFyZSBzcGVjaWZpYyB0byBJQ0g4TEFOL1BDSCBNQUMgdHlwZXMgYW5kIGEgRE1JIHF1aXJrLCB3aGljaCBhcmUgbm90IGVtdWxhdGVkIGJ5IFFFTVUgKFFFTVUgZW11bGF0ZXMgdGhlIDgyNTc0TCBNQUMpLiBUaGUgaTQwZSBjaGFuZ2UgaXMgYSB0cml2aWFsIGRlYnVnIG1hY3JvIGZpeC4gVGhlIGljZSBjaGFuZ2VzIGFyZSBmb3IgdGhlIEludGVsIEU4MDAgc2VyaWVzLCB3aGljaCBsYWNrcyBzb2Z0d2FyZSBlbXVsYXRpb24gaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBTaW5jZSB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBjYW5ub3QgYmUgcmVhY2hlZCB3aXRob3V0IHRoZSBzcGVjaWZpYyBwaHlzaWNhbCBoYXJkd2FyZSwgdGhpcyBwYXRjaCBkb2VzIG5vdCBuZWVkIHRvIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIyVDIyOjE0OjM2Ljk4NTAzNTI4NVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTYxOTgzNDE3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNTRjYTIxYjM2ZjVjMDg4ZTg2NWYzYzVkZTU0Y2EyY2E3Y2IyZjk3NVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIEp1biAyMiAyMjoxNDozNSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMGUvaWNoOGxhbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDBlL2ljaDhsYW4uY1xcbmluZGV4IGRlYTIwOGRiMWJlNWJmLi5hYTkwZTBjZThhY2FmOCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMGUvaWNoOGxhbi5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDBlL2ljaDhsYW4uY1xcbkBAIC0xNTk0LDYgKzE1OTQsOSBAQCBzdGF0aWMgczMyIGUxMDAwX2NoZWNrX2Zvcl9jb3BwZXJfbGlua19pY2g4bGFuKHN0cnVjdCBlMTAwMF9odyAqaHcpXFxuIFxcdFxcdFxcdHBoeV9yZWcgXFx1MDAyNj0gfkkyMTdfUExMX0NMT0NLX0dBVEVfTUFTSztcXG4gXFx0XFx0XFx0aWYgKHNwZWVkID09IFNQRUVEXzEwMCB8fCBzcGVlZCA9PSBTUEVFRF8xMClcXG4gXFx0XFx0XFx0XFx0cGh5X3JlZyB8PSAweDNFODtcXG4rXFx0XFx0XFx0ZWxzZSBpZiAoaHctXFx1MDAzZW1hYy50eXBlID09IGUxMDAwX3BjaF9tdHAgfHxcXG4rXFx0XFx0XFx0XFx0IGh3LVxcdTAwM2VtYWMudHlwZSA9PSBlMTAwMF9wY2hfcHRwKVxcbitcXHRcXHRcXHRcXHRwaHlfcmVnIHw9IDB4MUQ1O1xcbiBcXHRcXHRcXHRlbHNlXFxuIFxcdFxcdFxcdFxcdHBoeV9yZWcgfD0gMHhGQTtcXG4gXFx0XFx0XFx0ZTFlX3dwaHlfbG9ja2VkKGh3LCBJMjE3X1BMTF9DTE9DS19HQVRFX1JFRywgcGh5X3JlZyk7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwZS9uZXRkZXYuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwZS9uZXRkZXYuY1xcbmluZGV4IDgwOGU1Y2RkZDZhOTE4Li44NDRmMzFhYjM3YWQ0NCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMGUvbmV0ZGV2LmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMGUvbmV0ZGV2LmNcXG5AQCAtMjUsNiArMjUsNyBAQFxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvcG1fcnVudGltZS5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvcHJlZmV0Y2guaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3N1c3BlbmQuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2RtaS5oXFx1MDAzZVxcbiBcXG4gI2luY2x1ZGUgXFxcImUxMDAwLmhcXFwiXFxuICNkZWZpbmUgQ1JFQVRFX1RSQUNFX1BPSU5UU1xcbkBAIC01OCw2ICs1OSwxNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGUxMDAwX2luZm8gKmUxMDAwX2luZm9fdGJsW10gPSB7XFxuIFxcdFtib2FyZF9wY2hfcHRwXVxcdFxcdD0gXFx1MDAyNmUxMDAwX3BjaF9wdHBfaW5mbyxcXG4gfTtcXG4gXFxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZG1pX3N5c3RlbV9pZCBkaXNhYmxlX2sxX2xpc3RbXSA9IHtcXG4rXFx0e1xcbitcXHRcXHQuaWRlbnQgPSBcXFwiRGVsbCBQcm8gMTYgUGx1cyBQQjE2MjUwXFxcIixcXG4rXFx0XFx0Lm1hdGNoZXMgPSB7XFxuK1xcdFxcdFxcdERNSV9NQVRDSChETUlfU1lTX1ZFTkRPUiwgXFxcIkRlbGwgSW5jLlxcXCIpLFxcbitcXHRcXHRcXHRETUlfTUFUQ0goRE1JX1BST0RVQ1RfTkFNRSwgXFxcIkRlbGwgUHJvIDE2IFBsdXMgUEIxNjI1MFxcXCIpLFxcbitcXHRcXHR9LFxcbitcXHR9LFxcbitcXHR7fVxcbit9O1xcbitcXG4gc3RydWN0IGUxMDAwX3JlZ19pbmZvIHtcXG4gXFx0dTMyIG9mcztcXG4gXFx0Y2hhciAqbmFtZTtcXG5AQCAtNzY3MCw3ICs3NjgyLDggQEAgc3RhdGljIGludCBlMTAwMF9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcXG4gXFx0LyogaW5pdCBQVFAgaGFyZHdhcmUgY2xvY2sgKi9cXG4gXFx0ZTEwMDBlX3B0cF9pbml0KGFkYXB0ZXIpO1xcbiBcXG4tXFx0aWYgKGh3LVxcdTAwM2VtYWMudHlwZSBcXHUwMDNlPSBlMTAwMF9wY2hfbXRwKVxcbitcXHQvKiBkaXNhYmxlIEsxIGJ5IGRlZmF1bHQgb24ga25vd24gcHJvYmxlbWF0aWMgc3lzdGVtcyAqL1xcbitcXHRpZiAoaHctXFx1MDAzZW1hYy50eXBlIFxcdTAwM2U9IGUxMDAwX3BjaF9tdHAgXFx1MDAyNlxcdTAwMjYgZG1pX2NoZWNrX3N5c3RlbShkaXNhYmxlX2sxX2xpc3QpKVxcbiBcXHRcXHRhZGFwdGVyLVxcdTAwM2VmbGFnczIgfD0gRkxBRzJfRElTQUJMRV9LMTtcXG4gXFxuIFxcdC8qIHJlc2V0IHRoZSBoYXJkd2FyZSB3aXRoIHRoZSBuZXcgc2V0dGluZ3MgKi9cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RlYnVnLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfZGVidWcuaFxcbmluZGV4IGU5ODcxZGZiMzJiZDQ0Li4wMWZkNzBkYjkwODY2NiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfZGVidWcuaFxcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZWJ1Zy5oXFxuQEAgLTQyLDcgKzQyLDcgQEAgc3RydWN0IGRldmljZSAqaTQwZV9od190b19kZXYoc3RydWN0IGk0MGVfaHcgKmh3KTtcXG4gI2RlZmluZSBpNDBlX2RlYnVnKGgsIG0sIHMsIC4uLilcXHRcXHRcXHRcXHRcXFxcXFxuIGRvIHtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIFxcdGlmICgoKG0pIFxcdTAwMjYgKGgpLVxcdTAwM2VkZWJ1Z19tYXNrKSlcXHRcXHRcXHRcXHRcXFxcXFxuLVxcdFxcdGRldl9pbmZvKGk0MGVfaHdfdG9fZGV2KGh3KSwgcywgIyNfX1ZBX0FSR1NfXyk7XFx0XFxcXFxcbitcXHRcXHRkZXZfaW5mbyhpNDBlX2h3X3RvX2RldihoKSwgcywgIyNfX1ZBX0FSR1NfXyk7XFx0XFxcXFxcbiB9IHdoaWxlICgwKVxcbiBcXG4gI2VuZGlmIC8qIF9JNDBFX0RFQlVHX0hfICovXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jXFxuaW5kZXggMzFlMGRlOWU3ZjYwNzUuLmVmMWNlMTA2ZjgxYjVlIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jXFxuQEAgLTM4ODIsNyArMzg4Miw2IEBAIGljZV9zZXRfZmMoc3RydWN0IGljZV9wb3J0X2luZm8gKnBpLCB1OCAqYXFfZmFpbHVyZXMsIGJvb2wgZW5hX2F1dG9fbGlua191cGRhdGUpXFxuIFxcdGlmICghcGkgfHwgIWFxX2ZhaWx1cmVzKVxcbiBcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gXFxuLVxcdCphcV9mYWlsdXJlcyA9IDA7XFxuIFxcdGh3ID0gcGktXFx1MDAzZWh3O1xcbiBcXG4gXFx0cGNhcHMgPSBremFsbG9jX29iaigqcGNhcHMpO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2RwbGwuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZHBsbC5jXFxuaW5kZXggNDYyYzY5Y2MxMWUxOWQuLjMwYzNhNGRiN2Q2MTFjIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZHBsbC5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kcGxsLmNcXG5AQCAtNDY0NSw5ICs0NjQ1LDEzIEBAIGljZV9kcGxsX2luaXRfcGluc19pbmZvKHN0cnVjdCBpY2VfcGYgKnBmLCBlbnVtIGljZV9kcGxsX3Bpbl90eXBlIHBpbl90eXBlKVxcbiBzdGF0aWMgdm9pZCBpY2VfZHBsbF9kZWluaXRfaW5mbyhzdHJ1Y3QgaWNlX3BmICpwZilcXG4ge1xcbiBcXHRrZnJlZShwZi1cXHUwMDNlZHBsbHMuaW5wdXRzKTtcXG4rXFx0cGYtXFx1MDAzZWRwbGxzLmlucHV0cyA9IE5VTEw7XFxuIFxcdGtmcmVlKHBmLVxcdTAwM2VkcGxscy5vdXRwdXRzKTtcXG4rXFx0cGYtXFx1MDAzZWRwbGxzLm91dHB1dHMgPSBOVUxMO1xcbiBcXHRrZnJlZShwZi1cXHUwMDNlZHBsbHMuZWVjLmlucHV0X3ByaW8pO1xcbitcXHRwZi1cXHUwMDNlZHBsbHMuZWVjLmlucHV0X3ByaW8gPSBOVUxMO1xcbiBcXHRrZnJlZShwZi1cXHUwMDNlZHBsbHMucHBzLmlucHV0X3ByaW8pO1xcbitcXHRwZi1cXHUwMDNlZHBsbHMucHBzLmlucHV0X3ByaW8gPSBOVUxMO1xcbiB9XFxuIFxcbiAvKipcXG5AQCAtNDc0OCwxMiArNDc1MiwxNiBAQCBzdGF0aWMgaW50IGljZV9kcGxsX2luaXRfaW5mbyhzdHJ1Y3QgaWNlX3BmICpwZiwgYm9vbCBjZ3UpXFxuIFxcbiBcXHRhbGxvY19zaXplID0gc2l6ZW9mKCpkZS1cXHUwMDNlaW5wdXRfcHJpbykgKiBkLVxcdTAwM2VudW1faW5wdXRzO1xcbiBcXHRkZS1cXHUwMDNlaW5wdXRfcHJpbyA9IGt6YWxsb2MoYWxsb2Nfc2l6ZSwgR0ZQX0tFUk5FTCk7XFxuLVxcdGlmICghZGUtXFx1MDAzZWlucHV0X3ByaW8pXFxuLVxcdFxcdHJldHVybiAtRU5PTUVNO1xcbitcXHRpZiAoIWRlLVxcdTAwM2VpbnB1dF9wcmlvKSB7XFxuK1xcdFxcdHJldCA9IC1FTk9NRU07XFxuK1xcdFxcdGdvdG8gZGVpbml0X2luZm87XFxuK1xcdH1cXG4gXFxuIFxcdGRwLVxcdTAwM2VpbnB1dF9wcmlvID0ga3phbGxvYyhhbGxvY19zaXplLCBHRlBfS0VSTkVMKTtcXG4tXFx0aWYgKCFkcC1cXHUwMDNlaW5wdXRfcHJpbylcXG4tXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuK1xcdGlmICghZHAtXFx1MDAzZWlucHV0X3ByaW8pIHtcXG4rXFx0XFx0cmV0ID0gLUVOT01FTTtcXG4rXFx0XFx0Z290byBkZWluaXRfaW5mbztcXG4rXFx0fVxcbiBcXG4gXFx0cmV0ID0gaWNlX2RwbGxfaW5pdF9waW5zX2luZm8ocGYsIElDRV9EUExMX1BJTl9UWVBFX0lOUFVUKTtcXG4gXFx0aWYgKHJldClcXG5AQCAtNDc3OCwxMiArNDc4NiwxMiBAQCBzdGF0aWMgaW50IGljZV9kcGxsX2luaXRfaW5mbyhzdHJ1Y3QgaWNlX3BmICpwZiwgYm9vbCBjZ3UpXFxuIFxcdHJldCA9IGljZV9nZXRfY2d1X3JjbGtfcGluX2luZm8oXFx1MDAyNnBmLVxcdTAwM2VodywgXFx1MDAyNmQtXFx1MDAzZWJhc2VfcmNsa19pZHgsXFxuIFxcdFxcdFxcdFxcdFxcdFxcdTAwMjZwZi1cXHUwMDNlZHBsbHMucmNsay5udW1fcGFyZW50cyk7XFxuIFxcdGlmIChyZXQpXFxuLVxcdFxcdHJldHVybiByZXQ7XFxuK1xcdFxcdGdvdG8gZGVpbml0X2luZm87XFxuIFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBwZi1cXHUwMDNlZHBsbHMucmNsay5udW1fcGFyZW50czsgaSsrKVxcbiBcXHRcXHRwZi1cXHUwMDNlZHBsbHMucmNsay5wYXJlbnRfaWR4W2ldID0gZC1cXHUwMDNlYmFzZV9yY2xrX2lkeCArIGk7XFxuIFxcdHJldCA9IGljZV9kcGxsX2luaXRfcGluc19pbmZvKHBmLCBJQ0VfRFBMTF9QSU5fVFlQRV9SQ0xLX0lOUFVUKTtcXG4gXFx0aWYgKHJldClcXG4tXFx0XFx0cmV0dXJuIHJldDtcXG4rXFx0XFx0Z290byBkZWluaXRfaW5mbztcXG4gXFx0ZGUtXFx1MDAzZW1vZGUgPSBEUExMX01PREVfQVVUT01BVElDO1xcbiBcXHRkcC1cXHUwMDNlbW9kZSA9IERQTExfTU9ERV9BVVRPTUFUSUM7XFxuIFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Vzd2l0Y2guYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZXN3aXRjaC5jXFxuaW5kZXggMmU0ZjA5NjkwMzVmNzcuLmMzMGUyN2JiZmU2ZTI1IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZXN3aXRjaC5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9lc3dpdGNoLmNcXG5AQCAtMTE3LDggKzExNyw2IEBAIHN0YXRpYyBpbnQgaWNlX2Vzd2l0Y2hfc2V0dXBfcmVwcihzdHJ1Y3QgaWNlX3BmICpwZiwgc3RydWN0IGljZV9yZXByICpyZXByKVxcbiBcXHRpZiAoIXJlcHItXFx1MDAzZWRzdClcXG4gXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuIFxcbi1cXHRuZXRpZl9rZWVwX2RzdCh1cGxpbmtfdnNpLVxcdTAwM2VuZXRkZXYpO1xcbi1cXG4gXFx0ZHN0ID0gcmVwci1cXHUwMDNlZHN0O1xcbiBcXHRkc3QtXFx1MDAzZXUucG9ydF9pbmZvLnBvcnRfaWQgPSB2c2ktXFx1MDAzZXZzaV9udW07XFxuIFxcdGRzdC1cXHUwMDNldS5wb3J0X2luZm8ubG93ZXJfZGV2ID0gdXBsaW5rX3ZzaS1cXHUwMDNlbmV0ZGV2O1xcbkBAIC0zMTIsNiArMzEwLDggQEAgc3RhdGljIGludCBpY2VfZXN3aXRjaF9lbmFibGVfc3dpdGNoZGV2KHN0cnVjdCBpY2VfcGYgKnBmKVxcbiBcXHRpZiAoaWNlX2Vzd2l0Y2hfYnJfb2ZmbG9hZHNfaW5pdChwZikpXFxuIFxcdFxcdGdvdG8gZXJyX2JyX29mZmxvYWRzO1xcbiBcXG4rXFx0bmV0aWZfa2VlcF9kc3QodXBsaW5rX3ZzaS1cXHUwMDNlbmV0ZGV2KTtcXG4rXFxuIFxcdHBmLVxcdTAwM2Vlc3dpdGNoLmlzX3J1bm5pbmcgPSB0cnVlO1xcbiBcXG4gXFx0cmV0dXJuIDA7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZXRodG9vbC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9ldGh0b29sLmNcXG5pbmRleCAyMzZkMjkzYWJhOTg0YS4uNDkzNzFiMDY1ODQ1ODIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9ldGh0b29sLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2V0aHRvb2wuY1xcbkBAIC0zNTA4LDcgKzM1MDgsNyBAQCBpY2Vfc2V0X3BhdXNlcGFyYW0oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgc3RydWN0IGV0aHRvb2xfcGF1c2VwYXJhbSAqcGF1c2UpXFxuIFxcdHN0cnVjdCBpY2VfdnNpICp2c2kgPSBucC1cXHUwMDNldnNpO1xcbiBcXHRzdHJ1Y3QgaWNlX2h3ICpodyA9IFxcdTAwMjZwZi1cXHUwMDNlaHc7XFxuIFxcdHN0cnVjdCBpY2VfcG9ydF9pbmZvICpwaTtcXG4tXFx0dTggYXFfZmFpbHVyZXM7XFxuK1xcdHU4IGFxX2ZhaWx1cmVzID0gMDtcXG4gXFx0Ym9vbCBsaW5rX3VwO1xcbiBcXHR1MzIgaXNfYW47XFxuIFxcdGludCBlcnI7XFxuQEAgLTM1NzksMTggKzM1NzksMjIgQEAgaWNlX3NldF9wYXVzZXBhcmFtKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIHN0cnVjdCBldGh0b29sX3BhdXNlcGFyYW0gKnBhdXNlKVxcbiBcXHQvKiBTZXQgdGhlIEZDIG1vZGUgYW5kIG9ubHkgcmVzdGFydCBBTiBpZiBsaW5rIGlzIHVwICovXFxuIFxcdGVyciA9IGljZV9zZXRfZmMocGksIFxcdTAwMjZhcV9mYWlsdXJlcywgbGlua191cCk7XFxuIFxcbi1cXHRpZiAoYXFfZmFpbHVyZXMgXFx1MDAyNiBJQ0VfU0VUX0ZDX0FRX0ZBSUxfR0VUKSB7XFxuK1xcdHN3aXRjaCAoYXFfZmFpbHVyZXMpIHtcXG4rXFx0Y2FzZSBJQ0VfU0VUX0ZDX0FRX0ZBSUxfR0VUOlxcbiBcXHRcXHRuZXRkZXZfaW5mbyhuZXRkZXYsIFxcXCJTZXQgZmMgZmFpbGVkIG9uIHRoZSBnZXRfcGh5X2NhcGFiaWxpdGllcyBjYWxsIHdpdGggZXJyICVkIGFxX2VyciAlc1xcXFxuXFxcIixcXG4gXFx0XFx0XFx0ICAgIGVyciwgbGliaWVfYXFfc3RyKGh3LVxcdTAwM2VhZG1pbnEuc3FfbGFzdF9zdGF0dXMpKTtcXG4gXFx0XFx0ZXJyID0gLUVBR0FJTjtcXG4tXFx0fSBlbHNlIGlmIChhcV9mYWlsdXJlcyBcXHUwMDI2IElDRV9TRVRfRkNfQVFfRkFJTF9TRVQpIHtcXG4rXFx0XFx0YnJlYWs7XFxuK1xcdGNhc2UgSUNFX1NFVF9GQ19BUV9GQUlMX1NFVDpcXG4gXFx0XFx0bmV0ZGV2X2luZm8obmV0ZGV2LCBcXFwiU2V0IGZjIGZhaWxlZCBvbiB0aGUgc2V0X3BoeV9jb25maWcgY2FsbCB3aXRoIGVyciAlZCBhcV9lcnIgJXNcXFxcblxcXCIsXFxuIFxcdFxcdFxcdCAgICBlcnIsIGxpYmllX2FxX3N0cihody1cXHUwMDNlYWRtaW5xLnNxX2xhc3Rfc3RhdHVzKSk7XFxuIFxcdFxcdGVyciA9IC1FQUdBSU47XFxuLVxcdH0gZWxzZSBpZiAoYXFfZmFpbHVyZXMgXFx1MDAyNiBJQ0VfU0VUX0ZDX0FRX0ZBSUxfVVBEQVRFKSB7XFxuK1xcdFxcdGJyZWFrO1xcbitcXHRjYXNlIElDRV9TRVRfRkNfQVFfRkFJTF9VUERBVEU6XFxuIFxcdFxcdG5ldGRldl9pbmZvKG5ldGRldiwgXFxcIlNldCBmYyBmYWlsZWQgb24gdGhlIGdldF9saW5rX2luZm8gY2FsbCB3aXRoIGVyciAlZCBhcV9lcnIgJXNcXFxcblxcXCIsXFxuIFxcdFxcdFxcdCAgICBlcnIsIGxpYmllX2FxX3N0cihody1cXHUwMDNlYWRtaW5xLnNxX2xhc3Rfc3RhdHVzKSk7XFxuIFxcdFxcdGVyciA9IC1FQUdBSU47XFxuK1xcdFxcdGJyZWFrO1xcbiBcXHR9XFxuIFxcbiBcXHRyZXR1cm4gZXJyO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jXFxuaW5kZXggZTJmYmUxMTFmODQ5NjkuLmUyZmQyZGFiMDNlMzYzIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmNcXG5AQCAtNDc4OSwxNiArNDc4OSwxNCBAQCBzdGF0aWMgdm9pZCBpY2VfaW5pdF93YWtldXAoc3RydWN0IGljZV9wZiAqcGYpXFxuIFxcdGRldmljZV9zZXRfd2FrZXVwX2VuYWJsZShpY2VfcGZfdG9fZGV2KHBmKSwgZmFsc2UpO1xcbiB9XFxuIFxcbi1zdGF0aWMgaW50IGljZV9pbml0X2xpbmsoc3RydWN0IGljZV9wZiAqcGYpXFxuK3N0YXRpYyB2b2lkIGljZV9pbml0X2xpbmsoc3RydWN0IGljZV9wZiAqcGYpXFxuIHtcXG4gXFx0c3RydWN0IGRldmljZSAqZGV2ID0gaWNlX3BmX3RvX2RldihwZik7XFxuIFxcdGludCBlcnI7XFxuIFxcbiBcXHRlcnIgPSBpY2VfaW5pdF9saW5rX2V2ZW50cyhwZi1cXHUwMDNlaHcucG9ydF9pbmZvKTtcXG4tXFx0aWYgKGVycikge1xcbitcXHRpZiAoZXJyKVxcbiBcXHRcXHRkZXZfZXJyKGRldiwgXFxcImljZV9pbml0X2xpbmtfZXZlbnRzIGZhaWxlZDogJWRcXFxcblxcXCIsIGVycik7XFxuLVxcdFxcdHJldHVybiBlcnI7XFxuLVxcdH1cXG4gXFxuIFxcdC8qIG5vdCBhIGZhdGFsIGVycm9yIGlmIHRoaXMgZmFpbHMgKi9cXG4gXFx0ZXJyID0gaWNlX2luaXRfbnZtX3BoeV90eXBlKHBmLVxcdTAwM2Vody5wb3J0X2luZm8pO1xcbkBAIC00ODM4LDggKzQ4MzYsNiBAQCBzdGF0aWMgaW50IGljZV9pbml0X2xpbmsoc3RydWN0IGljZV9wZiAqcGYpXFxuIFxcdH0gZWxzZSB7XFxuIFxcdFxcdHNldF9iaXQoSUNFX0ZMQUdfTk9fTUVESUEsIHBmLVxcdTAwM2VmbGFncyk7XFxuIFxcdH1cXG4tXFxuLVxcdHJldHVybiBlcnI7XFxuIH1cXG4gXFxuIHN0YXRpYyBpbnQgaWNlX2luaXRfcGZfc3coc3RydWN0IGljZV9wZiAqcGYpXFxuQEAgLTQ5ODIsMTMgKzQ5NzgsMTEgQEAgc3RhdGljIGludCBpY2VfaW5pdChzdHJ1Y3QgaWNlX3BmICpwZilcXG4gXFxuIFxcdGljZV9pbml0X3dha2V1cChwZik7XFxuIFxcbi1cXHRlcnIgPSBpY2VfaW5pdF9saW5rKHBmKTtcXG4tXFx0aWYgKGVycilcXG4tXFx0XFx0Z290byBlcnJfaW5pdF9saW5rO1xcbitcXHRpY2VfaW5pdF9saW5rKHBmKTtcXG4gXFxuIFxcdGVyciA9IGljZV9zZW5kX3ZlcnNpb24ocGYpO1xcbiBcXHRpZiAoZXJyKVxcbi1cXHRcXHRnb3RvIGVycl9pbml0X2xpbms7XFxuK1xcdFxcdGdvdG8gZXJyX2RlaW5pdF9wZl9zdztcXG4gXFxuIFxcdGljZV92ZXJpZnlfY2FjaGVsaW5lX3NpemUocGYpO1xcbiBcXG5AQCAtNTAwNyw3ICs1MDAxLDcgQEAgc3RhdGljIGludCBpY2VfaW5pdChzdHJ1Y3QgaWNlX3BmICpwZilcXG4gXFxuIFxcdHJldHVybiAwO1xcbiBcXG4tZXJyX2luaXRfbGluazpcXG4rZXJyX2RlaW5pdF9wZl9zdzpcXG4gXFx0aWNlX2RlaW5pdF9wZl9zdyhwZik7XFxuIGVycl9pbml0X3BmX3N3OlxcbiBcXHRpY2VfZGVhbGxvY192c2lzKHBmKTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV92Zl9saWIuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdmZfbGliLmNcXG5pbmRleCBiMWY0NjcwN2RjYzAwNC4uMjdlNGFjYjE2MjBmMGMgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV92Zl9saWIuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdmZfbGliLmNcXG5AQCAtODAxLDcgKzgwMSw3IEBAIHZvaWQgaWNlX3Jlc2V0X2FsbF92ZnMoc3RydWN0IGljZV9wZiAqcGYpXFxuIFxcdFxcdCAqIHNldHVwIG9ubHkgd2hlbiBWRiBjcmVhdGVzIGl0cyBmaXJzdCBGRElSIHJ1bGUuXFxuIFxcdFxcdCAqL1xcbiBcXHRcXHRpZiAodmYtXFx1MDAzZWN0cmxfdnNpX2lkeCAhPSBJQ0VfTk9fVlNJKVxcbi1cXHRcXHRcXHRpY2VfdmZfY3RybF9pbnZhbGlkYXRlX3ZzaSh2Zik7XFxuK1xcdFxcdFxcdGljZV92Zl9jdHJsX3ZzaV9yZWxlYXNlKHZmKTtcXG4gXFxuIFxcdFxcdGljZV92Zl9wcmVfdnNpX3JlYnVpbGQodmYpO1xcbiBcXHRcXHRpZiAoaWNlX3ZmX3JlYnVpbGRfdnNpKHZmKSkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yMlQyMjoxNDozNy41NDc2NDI2ODJaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE4OTI3NDIxNDg3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBJbnRlbCBFdGhlcm5ldCBkcml2ZXJzIChlMTAwMGUsIGk0MGUsIGljZSkgd2hpY2ggcmVxdWlyZSBwaHlzaWNhbCBQQ0kgaGFyZHdhcmUgdG8gYmUgcHJvYmVkLiBUaGUgZTEwMDBlIGNoYW5nZXMgYXJlIHNwZWNpZmljIHRvIElDSDhMQU4vUENIIE1BQyB0eXBlcyBhbmQgYSBETUkgcXVpcmssIHdoaWNoIGFyZSBub3QgZW11bGF0ZWQgYnkgUUVNVSAoUUVNVSBlbXVsYXRlcyB0aGUgODI1NzRMIE1BQykuIFRoZSBpNDBlIGNoYW5nZSBpcyBhIHRyaXZpYWwgZGVidWcgbWFjcm8gZml4LiBUaGUgaWNlIGNoYW5nZXMgYXJlIGZvciB0aGUgSW50ZWwgRTgwMCBzZXJpZXMsIHdoaWNoIGxhY2tzIHNvZnR3YXJlIGVtdWxhdGlvbiBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIFNpbmNlIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGNhbm5vdCBiZSByZWFjaGVkIHdpdGhvdXQgdGhlIHNwZWNpZmljIHBoeXNpY2FsIGhhcmR3YXJlLCB0aGlzIHBhdGNoIGRvZXMgbm90IG5lZWQgdG8gYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA1NGNhMjFiMzZmNWMwODhlODY1ZjNjNWRlNTRjYTJjYTdjYjJmOTc1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBKdW4gMjIgMjI6MTQ6MzUgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMGUvaWNoOGxhbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDBlL2ljaDhsYW4uY1xuaW5kZXggZGVhMjA4ZGIxYmU1YmYuLmFhOTBlMGNlOGFjYWY4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDBlL2ljaDhsYW4uY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDBlL2ljaDhsYW4uY1xuQEAgLTE1OTQsNiArMTU5NCw5IEBAIHN0YXRpYyBzMzIgZTEwMDBfY2hlY2tfZm9yX2NvcHBlcl9saW5rX2ljaDhsYW4oc3RydWN0IGUxMDAwX2h3ICpodylcbiBcdFx0XHRwaHlfcmVnIFx1MDAyNj0gfkkyMTdfUExMX0NMT0NLX0dBVEVfTUFTSztcbiBcdFx0XHRpZiAoc3BlZWQgPT0gU1BFRURfMTAwIHx8IHNwZWVkID09IFNQRUVEXzEwKVxuIFx0XHRcdFx0cGh5X3JlZyB8PSAweDNFODtcbitcdFx0XHRlbHNlIGlmIChody1cdTAwM2VtYWMudHlwZSA9PSBlMTAwMF9wY2hfbXRwIHx8XG4rXHRcdFx0XHQgaHctXHUwMDNlbWFjLnR5cGUgPT0gZTEwMDBfcGNoX3B0cClcbitcdFx0XHRcdHBoeV9yZWcgfD0gMHgxRDU7XG4gXHRcdFx0ZWxzZVxuIFx0XHRcdFx0cGh5X3JlZyB8PSAweEZBO1xuIFx0XHRcdGUxZV93cGh5X2xvY2tlZChodywgSTIxN19QTExfQ0xPQ0tfR0FURV9SRUcsIHBoeV9yZWcpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwZS9uZXRkZXYuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwZS9uZXRkZXYuY1xuaW5kZXggODA4ZTVjZGRkNmE5MTguLjg0NGYzMWFiMzdhZDQ0IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDBlL25ldGRldi5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMGUvbmV0ZGV2LmNcbkBAIC0yNSw2ICsyNSw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcG1fcnVudGltZS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcHJlZmV0Y2guaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3N1c3BlbmQuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2RtaS5oXHUwMDNlXG4gXG4gI2luY2x1ZGUgXCJlMTAwMC5oXCJcbiAjZGVmaW5lIENSRUFURV9UUkFDRV9QT0lOVFNcbkBAIC01OCw2ICs1OSwxNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGUxMDAwX2luZm8gKmUxMDAwX2luZm9fdGJsW10gPSB7XG4gXHRbYm9hcmRfcGNoX3B0cF1cdFx0PSBcdTAwMjZlMTAwMF9wY2hfcHRwX2luZm8sXG4gfTtcbiBcbitzdGF0aWMgY29uc3Qgc3RydWN0IGRtaV9zeXN0ZW1faWQgZGlzYWJsZV9rMV9saXN0W10gPSB7XG4rXHR7XG4rXHRcdC5pZGVudCA9IFwiRGVsbCBQcm8gMTYgUGx1cyBQQjE2MjUwXCIsXG4rXHRcdC5tYXRjaGVzID0ge1xuK1x0XHRcdERNSV9NQVRDSChETUlfU1lTX1ZFTkRPUiwgXCJEZWxsIEluYy5cIiksXG4rXHRcdFx0RE1JX01BVENIKERNSV9QUk9EVUNUX05BTUUsIFwiRGVsbCBQcm8gMTYgUGx1cyBQQjE2MjUwXCIpLFxuK1x0XHR9LFxuK1x0fSxcbitcdHt9XG4rfTtcbitcbiBzdHJ1Y3QgZTEwMDBfcmVnX2luZm8ge1xuIFx0dTMyIG9mcztcbiBcdGNoYXIgKm5hbWU7XG5AQCAtNzY3MCw3ICs3NjgyLDggQEAgc3RhdGljIGludCBlMTAwMF9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcbiBcdC8qIGluaXQgUFRQIGhhcmR3YXJlIGNsb2NrICovXG4gXHRlMTAwMGVfcHRwX2luaXQoYWRhcHRlcik7XG4gXG4tXHRpZiAoaHctXHUwMDNlbWFjLnR5cGUgXHUwMDNlPSBlMTAwMF9wY2hfbXRwKVxuK1x0LyogZGlzYWJsZSBLMSBieSBkZWZhdWx0IG9uIGtub3duIHByb2JsZW1hdGljIHN5c3RlbXMgKi9cbitcdGlmIChody1cdTAwM2VtYWMudHlwZSBcdTAwM2U9IGUxMDAwX3BjaF9tdHAgXHUwMDI2XHUwMDI2IGRtaV9jaGVja19zeXN0ZW0oZGlzYWJsZV9rMV9saXN0KSlcbiBcdFx0YWRhcHRlci1cdTAwM2VmbGFnczIgfD0gRkxBRzJfRElTQUJMRV9LMTtcbiBcbiBcdC8qIHJlc2V0IHRoZSBoYXJkd2FyZSB3aXRoIHRoZSBuZXcgc2V0dGluZ3MgKi9cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfZGVidWcuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZWJ1Zy5oXG5pbmRleCBlOTg3MWRmYjMyYmQ0NC4uMDFmZDcwZGI5MDg2NjYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfZGVidWcuaFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RlYnVnLmhcbkBAIC00Miw3ICs0Miw3IEBAIHN0cnVjdCBkZXZpY2UgKmk0MGVfaHdfdG9fZGV2KHN0cnVjdCBpNDBlX2h3ICpodyk7XG4gI2RlZmluZSBpNDBlX2RlYnVnKGgsIG0sIHMsIC4uLilcdFx0XHRcdFxcXG4gZG8ge1x0XHRcdFx0XHRcdFx0XHRcXFxuIFx0aWYgKCgobSkgXHUwMDI2IChoKS1cdTAwM2VkZWJ1Z19tYXNrKSlcdFx0XHRcdFxcXG4tXHRcdGRldl9pbmZvKGk0MGVfaHdfdG9fZGV2KGh3KSwgcywgIyNfX1ZBX0FSR1NfXyk7XHRcXFxuK1x0XHRkZXZfaW5mbyhpNDBlX2h3X3RvX2RldihoKSwgcywgIyNfX1ZBX0FSR1NfXyk7XHRcXFxuIH0gd2hpbGUgKDApXG4gXG4gI2VuZGlmIC8qIF9JNDBFX0RFQlVHX0hfICovXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9jb21tb24uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmNcbmluZGV4IDMxZTBkZTllN2Y2MDc1Li5lZjFjZTEwNmY4MWI1ZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmNcbkBAIC0zODgyLDcgKzM4ODIsNiBAQCBpY2Vfc2V0X2ZjKHN0cnVjdCBpY2VfcG9ydF9pbmZvICpwaSwgdTggKmFxX2ZhaWx1cmVzLCBib29sIGVuYV9hdXRvX2xpbmtfdXBkYXRlKVxuIFx0aWYgKCFwaSB8fCAhYXFfZmFpbHVyZXMpXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFxuLVx0KmFxX2ZhaWx1cmVzID0gMDtcbiBcdGh3ID0gcGktXHUwMDNlaHc7XG4gXG4gXHRwY2FwcyA9IGt6YWxsb2Nfb2JqKCpwY2Fwcyk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kcGxsLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2RwbGwuY1xuaW5kZXggNDYyYzY5Y2MxMWUxOWQuLjMwYzNhNGRiN2Q2MTFjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kcGxsLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZHBsbC5jXG5AQCAtNDY0NSw5ICs0NjQ1LDEzIEBAIGljZV9kcGxsX2luaXRfcGluc19pbmZvKHN0cnVjdCBpY2VfcGYgKnBmLCBlbnVtIGljZV9kcGxsX3Bpbl90eXBlIHBpbl90eXBlKVxuIHN0YXRpYyB2b2lkIGljZV9kcGxsX2RlaW5pdF9pbmZvKHN0cnVjdCBpY2VfcGYgKnBmKVxuIHtcbiBcdGtmcmVlKHBmLVx1MDAzZWRwbGxzLmlucHV0cyk7XG4rXHRwZi1cdTAwM2VkcGxscy5pbnB1dHMgPSBOVUxMO1xuIFx0a2ZyZWUocGYtXHUwMDNlZHBsbHMub3V0cHV0cyk7XG4rXHRwZi1cdTAwM2VkcGxscy5vdXRwdXRzID0gTlVMTDtcbiBcdGtmcmVlKHBmLVx1MDAzZWRwbGxzLmVlYy5pbnB1dF9wcmlvKTtcbitcdHBmLVx1MDAzZWRwbGxzLmVlYy5pbnB1dF9wcmlvID0gTlVMTDtcbiBcdGtmcmVlKHBmLVx1MDAzZWRwbGxzLnBwcy5pbnB1dF9wcmlvKTtcbitcdHBmLVx1MDAzZWRwbGxzLnBwcy5pbnB1dF9wcmlvID0gTlVMTDtcbiB9XG4gXG4gLyoqXG5AQCAtNDc0OCwxMiArNDc1MiwxNiBAQCBzdGF0aWMgaW50IGljZV9kcGxsX2luaXRfaW5mbyhzdHJ1Y3QgaWNlX3BmICpwZiwgYm9vbCBjZ3UpXG4gXG4gXHRhbGxvY19zaXplID0gc2l6ZW9mKCpkZS1cdTAwM2VpbnB1dF9wcmlvKSAqIGQtXHUwMDNlbnVtX2lucHV0cztcbiBcdGRlLVx1MDAzZWlucHV0X3ByaW8gPSBremFsbG9jKGFsbG9jX3NpemUsIEdGUF9LRVJORUwpO1xuLVx0aWYgKCFkZS1cdTAwM2VpbnB1dF9wcmlvKVxuLVx0XHRyZXR1cm4gLUVOT01FTTtcbitcdGlmICghZGUtXHUwMDNlaW5wdXRfcHJpbykge1xuK1x0XHRyZXQgPSAtRU5PTUVNO1xuK1x0XHRnb3RvIGRlaW5pdF9pbmZvO1xuK1x0fVxuIFxuIFx0ZHAtXHUwMDNlaW5wdXRfcHJpbyA9IGt6YWxsb2MoYWxsb2Nfc2l6ZSwgR0ZQX0tFUk5FTCk7XG4tXHRpZiAoIWRwLVx1MDAzZWlucHV0X3ByaW8pXG4tXHRcdHJldHVybiAtRU5PTUVNO1xuK1x0aWYgKCFkcC1cdTAwM2VpbnB1dF9wcmlvKSB7XG4rXHRcdHJldCA9IC1FTk9NRU07XG4rXHRcdGdvdG8gZGVpbml0X2luZm87XG4rXHR9XG4gXG4gXHRyZXQgPSBpY2VfZHBsbF9pbml0X3BpbnNfaW5mbyhwZiwgSUNFX0RQTExfUElOX1RZUEVfSU5QVVQpO1xuIFx0aWYgKHJldClcbkBAIC00Nzc4LDEyICs0Nzg2LDEyIEBAIHN0YXRpYyBpbnQgaWNlX2RwbGxfaW5pdF9pbmZvKHN0cnVjdCBpY2VfcGYgKnBmLCBib29sIGNndSlcbiBcdHJldCA9IGljZV9nZXRfY2d1X3JjbGtfcGluX2luZm8oXHUwMDI2cGYtXHUwMDNlaHcsIFx1MDAyNmQtXHUwMDNlYmFzZV9yY2xrX2lkeCxcbiBcdFx0XHRcdFx0XHUwMDI2cGYtXHUwMDNlZHBsbHMucmNsay5udW1fcGFyZW50cyk7XG4gXHRpZiAocmV0KVxuLVx0XHRyZXR1cm4gcmV0O1xuK1x0XHRnb3RvIGRlaW5pdF9pbmZvO1xuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgcGYtXHUwMDNlZHBsbHMucmNsay5udW1fcGFyZW50czsgaSsrKVxuIFx0XHRwZi1cdTAwM2VkcGxscy5yY2xrLnBhcmVudF9pZHhbaV0gPSBkLVx1MDAzZWJhc2VfcmNsa19pZHggKyBpO1xuIFx0cmV0ID0gaWNlX2RwbGxfaW5pdF9waW5zX2luZm8ocGYsIElDRV9EUExMX1BJTl9UWVBFX1JDTEtfSU5QVVQpO1xuIFx0aWYgKHJldClcbi1cdFx0cmV0dXJuIHJldDtcbitcdFx0Z290byBkZWluaXRfaW5mbztcbiBcdGRlLVx1MDAzZW1vZGUgPSBEUExMX01PREVfQVVUT01BVElDO1xuIFx0ZHAtXHUwMDNlbW9kZSA9IERQTExfTU9ERV9BVVRPTUFUSUM7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9lc3dpdGNoLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Vzd2l0Y2guY1xuaW5kZXggMmU0ZjA5NjkwMzVmNzcuLmMzMGUyN2JiZmU2ZTI1IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9lc3dpdGNoLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZXN3aXRjaC5jXG5AQCAtMTE3LDggKzExNyw2IEBAIHN0YXRpYyBpbnQgaWNlX2Vzd2l0Y2hfc2V0dXBfcmVwcihzdHJ1Y3QgaWNlX3BmICpwZiwgc3RydWN0IGljZV9yZXByICpyZXByKVxuIFx0aWYgKCFyZXByLVx1MDAzZWRzdClcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG4gXG4tXHRuZXRpZl9rZWVwX2RzdCh1cGxpbmtfdnNpLVx1MDAzZW5ldGRldik7XG4tXG4gXHRkc3QgPSByZXByLVx1MDAzZWRzdDtcbiBcdGRzdC1cdTAwM2V1LnBvcnRfaW5mby5wb3J0X2lkID0gdnNpLVx1MDAzZXZzaV9udW07XG4gXHRkc3QtXHUwMDNldS5wb3J0X2luZm8ubG93ZXJfZGV2ID0gdXBsaW5rX3ZzaS1cdTAwM2VuZXRkZXY7XG5AQCAtMzEyLDYgKzMxMCw4IEBAIHN0YXRpYyBpbnQgaWNlX2Vzd2l0Y2hfZW5hYmxlX3N3aXRjaGRldihzdHJ1Y3QgaWNlX3BmICpwZilcbiBcdGlmIChpY2VfZXN3aXRjaF9icl9vZmZsb2Fkc19pbml0KHBmKSlcbiBcdFx0Z290byBlcnJfYnJfb2ZmbG9hZHM7XG4gXG4rXHRuZXRpZl9rZWVwX2RzdCh1cGxpbmtfdnNpLVx1MDAzZW5ldGRldik7XG4rXG4gXHRwZi1cdTAwM2Vlc3dpdGNoLmlzX3J1bm5pbmcgPSB0cnVlO1xuIFxuIFx0cmV0dXJuIDA7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9ldGh0b29sLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2V0aHRvb2wuY1xuaW5kZXggMjM2ZDI5M2FiYTk4NGEuLjQ5MzcxYjA2NTg0NTgyIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9ldGh0b29sLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZXRodG9vbC5jXG5AQCAtMzUwOCw3ICszNTA4LDcgQEAgaWNlX3NldF9wYXVzZXBhcmFtKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIHN0cnVjdCBldGh0b29sX3BhdXNlcGFyYW0gKnBhdXNlKVxuIFx0c3RydWN0IGljZV92c2kgKnZzaSA9IG5wLVx1MDAzZXZzaTtcbiBcdHN0cnVjdCBpY2VfaHcgKmh3ID0gXHUwMDI2cGYtXHUwMDNlaHc7XG4gXHRzdHJ1Y3QgaWNlX3BvcnRfaW5mbyAqcGk7XG4tXHR1OCBhcV9mYWlsdXJlcztcbitcdHU4IGFxX2ZhaWx1cmVzID0gMDtcbiBcdGJvb2wgbGlua191cDtcbiBcdHUzMiBpc19hbjtcbiBcdGludCBlcnI7XG5AQCAtMzU3OSwxOCArMzU3OSwyMiBAQCBpY2Vfc2V0X3BhdXNlcGFyYW0oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgc3RydWN0IGV0aHRvb2xfcGF1c2VwYXJhbSAqcGF1c2UpXG4gXHQvKiBTZXQgdGhlIEZDIG1vZGUgYW5kIG9ubHkgcmVzdGFydCBBTiBpZiBsaW5rIGlzIHVwICovXG4gXHRlcnIgPSBpY2Vfc2V0X2ZjKHBpLCBcdTAwMjZhcV9mYWlsdXJlcywgbGlua191cCk7XG4gXG4tXHRpZiAoYXFfZmFpbHVyZXMgXHUwMDI2IElDRV9TRVRfRkNfQVFfRkFJTF9HRVQpIHtcbitcdHN3aXRjaCAoYXFfZmFpbHVyZXMpIHtcbitcdGNhc2UgSUNFX1NFVF9GQ19BUV9GQUlMX0dFVDpcbiBcdFx0bmV0ZGV2X2luZm8obmV0ZGV2LCBcIlNldCBmYyBmYWlsZWQgb24gdGhlIGdldF9waHlfY2FwYWJpbGl0aWVzIGNhbGwgd2l0aCBlcnIgJWQgYXFfZXJyICVzXFxuXCIsXG4gXHRcdFx0ICAgIGVyciwgbGliaWVfYXFfc3RyKGh3LVx1MDAzZWFkbWlucS5zcV9sYXN0X3N0YXR1cykpO1xuIFx0XHRlcnIgPSAtRUFHQUlOO1xuLVx0fSBlbHNlIGlmIChhcV9mYWlsdXJlcyBcdTAwMjYgSUNFX1NFVF9GQ19BUV9GQUlMX1NFVCkge1xuK1x0XHRicmVhaztcbitcdGNhc2UgSUNFX1NFVF9GQ19BUV9GQUlMX1NFVDpcbiBcdFx0bmV0ZGV2X2luZm8obmV0ZGV2LCBcIlNldCBmYyBmYWlsZWQgb24gdGhlIHNldF9waHlfY29uZmlnIGNhbGwgd2l0aCBlcnIgJWQgYXFfZXJyICVzXFxuXCIsXG4gXHRcdFx0ICAgIGVyciwgbGliaWVfYXFfc3RyKGh3LVx1MDAzZWFkbWlucS5zcV9sYXN0X3N0YXR1cykpO1xuIFx0XHRlcnIgPSAtRUFHQUlOO1xuLVx0fSBlbHNlIGlmIChhcV9mYWlsdXJlcyBcdTAwMjYgSUNFX1NFVF9GQ19BUV9GQUlMX1VQREFURSkge1xuK1x0XHRicmVhaztcbitcdGNhc2UgSUNFX1NFVF9GQ19BUV9GQUlMX1VQREFURTpcbiBcdFx0bmV0ZGV2X2luZm8obmV0ZGV2LCBcIlNldCBmYyBmYWlsZWQgb24gdGhlIGdldF9saW5rX2luZm8gY2FsbCB3aXRoIGVyciAlZCBhcV9lcnIgJXNcXG5cIixcbiBcdFx0XHQgICAgZXJyLCBsaWJpZV9hcV9zdHIoaHctXHUwMDNlYWRtaW5xLnNxX2xhc3Rfc3RhdHVzKSk7XG4gXHRcdGVyciA9IC1FQUdBSU47XG4rXHRcdGJyZWFrO1xuIFx0fVxuIFxuIFx0cmV0dXJuIGVycjtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jXG5pbmRleCBlMmZiZTExMWY4NDk2OS4uZTJmZDJkYWIwM2UzNjMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmNcbkBAIC00Nzg5LDE2ICs0Nzg5LDE0IEBAIHN0YXRpYyB2b2lkIGljZV9pbml0X3dha2V1cChzdHJ1Y3QgaWNlX3BmICpwZilcbiBcdGRldmljZV9zZXRfd2FrZXVwX2VuYWJsZShpY2VfcGZfdG9fZGV2KHBmKSwgZmFsc2UpO1xuIH1cbiBcbi1zdGF0aWMgaW50IGljZV9pbml0X2xpbmsoc3RydWN0IGljZV9wZiAqcGYpXG4rc3RhdGljIHZvaWQgaWNlX2luaXRfbGluayhzdHJ1Y3QgaWNlX3BmICpwZilcbiB7XG4gXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBpY2VfcGZfdG9fZGV2KHBmKTtcbiBcdGludCBlcnI7XG4gXG4gXHRlcnIgPSBpY2VfaW5pdF9saW5rX2V2ZW50cyhwZi1cdTAwM2Vody5wb3J0X2luZm8pO1xuLVx0aWYgKGVycikge1xuK1x0aWYgKGVycilcbiBcdFx0ZGV2X2VycihkZXYsIFwiaWNlX2luaXRfbGlua19ldmVudHMgZmFpbGVkOiAlZFxcblwiLCBlcnIpO1xuLVx0XHRyZXR1cm4gZXJyO1xuLVx0fVxuIFxuIFx0Lyogbm90IGEgZmF0YWwgZXJyb3IgaWYgdGhpcyBmYWlscyAqL1xuIFx0ZXJyID0gaWNlX2luaXRfbnZtX3BoeV90eXBlKHBmLVx1MDAzZWh3LnBvcnRfaW5mbyk7XG5AQCAtNDgzOCw4ICs0ODM2LDYgQEAgc3RhdGljIGludCBpY2VfaW5pdF9saW5rKHN0cnVjdCBpY2VfcGYgKnBmKVxuIFx0fSBlbHNlIHtcbiBcdFx0c2V0X2JpdChJQ0VfRkxBR19OT19NRURJQSwgcGYtXHUwMDNlZmxhZ3MpO1xuIFx0fVxuLVxuLVx0cmV0dXJuIGVycjtcbiB9XG4gXG4gc3RhdGljIGludCBpY2VfaW5pdF9wZl9zdyhzdHJ1Y3QgaWNlX3BmICpwZilcbkBAIC00OTgyLDEzICs0OTc4LDExIEBAIHN0YXRpYyBpbnQgaWNlX2luaXQoc3RydWN0IGljZV9wZiAqcGYpXG4gXG4gXHRpY2VfaW5pdF93YWtldXAocGYpO1xuIFxuLVx0ZXJyID0gaWNlX2luaXRfbGluayhwZik7XG4tXHRpZiAoZXJyKVxuLVx0XHRnb3RvIGVycl9pbml0X2xpbms7XG4rXHRpY2VfaW5pdF9saW5rKHBmKTtcbiBcbiBcdGVyciA9IGljZV9zZW5kX3ZlcnNpb24ocGYpO1xuIFx0aWYgKGVycilcbi1cdFx0Z290byBlcnJfaW5pdF9saW5rO1xuK1x0XHRnb3RvIGVycl9kZWluaXRfcGZfc3c7XG4gXG4gXHRpY2VfdmVyaWZ5X2NhY2hlbGluZV9zaXplKHBmKTtcbiBcbkBAIC01MDA3LDcgKzUwMDEsNyBAQCBzdGF0aWMgaW50IGljZV9pbml0KHN0cnVjdCBpY2VfcGYgKnBmKVxuIFxuIFx0cmV0dXJuIDA7XG4gXG4tZXJyX2luaXRfbGluazpcbitlcnJfZGVpbml0X3BmX3N3OlxuIFx0aWNlX2RlaW5pdF9wZl9zdyhwZik7XG4gZXJyX2luaXRfcGZfc3c6XG4gXHRpY2VfZGVhbGxvY192c2lzKHBmKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3ZmX2xpYi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV92Zl9saWIuY1xuaW5kZXggYjFmNDY3MDdkY2MwMDQuLjI3ZTRhY2IxNjIwZjBjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV92Zl9saWIuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV92Zl9saWIuY1xuQEAgLTgwMSw3ICs4MDEsNyBAQCB2b2lkIGljZV9yZXNldF9hbGxfdmZzKHN0cnVjdCBpY2VfcGYgKnBmKVxuIFx0XHQgKiBzZXR1cCBvbmx5IHdoZW4gVkYgY3JlYXRlcyBpdHMgZmlyc3QgRkRJUiBydWxlLlxuIFx0XHQgKi9cbiBcdFx0aWYgKHZmLVx1MDAzZWN0cmxfdnNpX2lkeCAhPSBJQ0VfTk9fVlNJKVxuLVx0XHRcdGljZV92Zl9jdHJsX2ludmFsaWRhdGVfdnNpKHZmKTtcbitcdFx0XHRpY2VfdmZfY3RybF92c2lfcmVsZWFzZSh2Zik7XG4gXG4gXHRcdGljZV92Zl9wcmVfdnNpX3JlYnVpbGQodmYpO1xuIFx0XHRpZiAoaWNlX3ZmX3JlYnVpbGRfdnNpKHZmKSkge1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjJUMjI6MTQ6MzcuNTQ3NjQ0MzEyWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTg5MjczOTc1MjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHlzaXMgb2YgSW50ZWwgRXRoZXJuZXQgRHJpdmVyIFBhdGNoIFNlcmllcyoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gV2UgaGF2ZSBhIHBhdGNoIHNlcmllcyB0b3VjaGluZyB0aGUgYGUxMDAwZWAsIGBpNDBlYCwgYW5kIGBpY2VgIEludGVsIEV0aGVybmV0IGRyaXZlcnMuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBhc3Nlc3MgdGhlIGZ1enppbmcgcG90ZW50aWFsLlxuXG5GaXJzdCwgYGUxMDAwZWA6IFRoZSBwYXRjaCBtb2RpZmllcyBgaWNoOGxhbi5jYCwgc3BlY2lmaWNhbGx5IHJlbGF0ZWQgdG8gUEhZL01BQyBjb25maWd1cmF0aW9ucyBmb3IgY2VydGFpbiBJbnRlbCBQQ0ggTUFDIHR5cGVzIGxpa2UgYGUxMDAwX3BjaF9tdHBgIGFuZCBgZTEwMDBfcGNoX3B0cGAuIFRoaXMgaW1tZWRpYXRlbHkgcmFpc2VzIGEgZmxhZzogYGUxMDAwZWAgaXMgYSBwaHlzaWNhbCBoYXJkd2FyZSBkcml2ZXIuIFRoZSBxdWVzdGlvbiBpcywgY2FuIHdlIHRyaWdnZXIgdGhlc2Ugc3BlY2lmaWMgY29kZSBwYXRocyBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyBRRU1VIG9mZmVycyBlbXVsYXRpb24gZm9yIGBlMTAwMGAgYW5kIGBlMTAwMGVgLCB3aGljaCBpcyB1c2VmdWwsIGJ1dCB3aGljaCBNQUMgaXMgaXQgZW11bGF0aW5nPyBGdXJ0aGVyIGRpZ2dpbmcgcmV2ZWFscyB0aGF0IFFFTVUncyBgZTEwMDBlYCBlbXVsYXRpb24gZGVmYXVsdHMgdG8gdGhlIDgyNTc0TC4gVGhlc2UgY2hhbmdlcyBpbiBgaWNoOGxhbi5jYCBhcmUgZm9yIHRoZSBJQ0g4LzkvMTAsIFBDSCwgUENIMiwgTFBULCBTUFQsIENOUCwgZXRjLiBNQUMgdHlwZXMsIHdoaWNoIGFyZSAqbm90KiBlbXVsYXRlZCBieSBRRU1VLiBBZGRpdGlvbmFsbHksIGEgRE1JIGNoZWNrIGlzIGJlaW5nIGFkZGVkIHRvIGBuZXRkZXYuY2AgZm9yIGEgRGVsbCBQcm8gbGFwdG9wLCB3aGljaCBpcyBub3QgcmVhY2hhYmxlIHRocm91Z2ggZ2VuZXJpYyBmdXp6aW5nIHVubGVzcyB3ZSBtb2NrIHRoZSBETUksIGJ1dCB0aGF0J3Mgbm90IG91ciBjdXJyZW50IGZvY3VzLlxuXG5Nb3ZpbmcgdG8gYGk0MGVgLCB0aGUgY2hhbmdlcyBhcmUgbWluaW1hbCwganVzdCBhIGRlYnVnIG1hY3JvIGZpeCBpbiBgaTQwZV9kZWJ1Zy5oYC5cblxuVGhlIGBpY2VgIGRyaXZlciBjaGFuZ2VzIGFyZSBtb3JlIG51bWVyb3VzLCBpbnZvbHZpbmcgZmxvdyBjb250cm9sLCBEUExMIGluaXRpYWxpemF0aW9uL2RlLWluaXRpYWxpemF0aW9uLCBlc3dpdGNoIHNldHVwLCBldGh0b29sIGludGVncmF0aW9uLCBpbml0aWFsaXphdGlvbiwgYW5kIFZGIG1hbmFnZW1lbnQuIEFnYWluLCB3ZSBhcmUgbG9va2luZyBhdCBoYXJkd2FyZS1zcGVjaWZpYyBmdW5jdGlvbmFsaXR5IG9mIHRoZSBFODAwIHNlcmllcy5cblxuTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzIHdoZXRoZXIgd2UgY2FuIHJlYWNoIHRoZXNlIHZpYSBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBRRU1VIGRvZXMgKm5vdCogbmF0aXZlbHkgZW11bGF0ZSBgaTQwZWAgb3IgYGljZWAuIEl0IGRvZXMgaGF2ZSB0aGUgYWJpbGl0eSB0byBlbXVsYXRlIHRoZSBgaWdiYCBkcml2ZXIgKDgyNTc2KSwgd2hpY2ggY2FuIGJlIHVzZWZ1bCwgYnV0IHRoYXQncyBub3Qgd2hhdCBpcyBiZWluZyBtb2RpZmllZCBoZXJlLiBJIGFtIGFsc28gYXdhcmUgdGhlcmUgaXMgbm8ga25vd24gc29mdHdhcmUgZW11bGF0aW9uIGZvciBgaWNlYCBvciBgaTQwZWAgYXZhaWxhYmxlIHRoYXQgSSBhbSBmYW1pbGlhciB3aXRoLlxuXG5UbyByZWFjaCB0aGUgY29kZSwgd2UgbmVlZCB0aGUgUENJIGRldmljZSwgb3RoZXJ3aXNlIHRoZSBgcHJvYmVgIGZ1bmN0aW9uIHdpbGwgbmV2ZXIgYmUgY2FsbGVkLiBXZSBjYW4ndCByZWFjaCB0aGlzIGNvZGUgdGhyb3VnaCBzb21lIG1vY2suIEZvciBleGFtcGxlLCB0byBjYWxsIGBpY2Vfc2V0X3BhdXNlcGFyYW1gLCB3ZSBuZWVkIHRoZSBuZXRkZXYgdG8gYmUgcmVnaXN0ZXJlZCBieSB0aGUgYGljZWAgZHJpdmVyLCB3aGljaCBtZWFucyB3ZSBtdXN0IGhhdmUgYSBQQ0kgZGV2aWNlLlxuXG5TcGVjaWZpY2FsbHksIHRoZSBgZTEwMDBlYCBjaGFuZ2VzIGFyZSByZWxhdGVkIHRvIE1ldGVvciBMYWtlLCB3aGljaCBRRU1VIGlzIGRlZmluaXRlbHkgbm90IGVtdWxhdGluZy4gYGljZWAgaXMgcmVsYXRlZCB0byBJbnRlbCBFODAwIHNlcmllcyBoYXJkd2FyZS5cblxuVGhlcmVmb3JlLCBiZWNhdXNlIGFsbCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyByZXF1aXJlIHNwZWNpZmljIHBoeXNpY2FsIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUsIHRoaXMgcGF0Y2ggc2VyaWVzIGlzIG5vdCBzdWl0YWJsZSBmb3IgZnV6emluZy4gVGh1cywgYFdvcnRoRnV6emluZz1mYWxzZWAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU5NTksIk91dHB1dFRva2VucyI6MTcyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTY0NywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIyVDIyOjE0OjU2LjQ3NTA0MzY0OVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTkxNDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgSW50ZWwgRXRoZXJuZXQgZHJpdmVycyAoZTEwMDBlLCBpNDBlLCBpY2UpIHdoaWNoIHJlcXVpcmUgcGh5c2ljYWwgUENJIGhhcmR3YXJlIHRvIGJlIHByb2JlZC4gVGhlIGUxMDAwZSBjaGFuZ2VzIGFyZSBzcGVjaWZpYyB0byBJQ0g4TEFOL1BDSCBNQUMgdHlwZXMgYW5kIGEgRE1JIHF1aXJrLCB3aGljaCBhcmUgbm90IGVtdWxhdGVkIGJ5IFFFTVUgKFFFTVUgZW11bGF0ZXMgdGhlIDgyNTc0TCBNQUMpLiBUaGUgaTQwZSBjaGFuZ2UgaXMgYSB0cml2aWFsIGRlYnVnIG1hY3JvIGZpeC4gVGhlIGljZSBjaGFuZ2VzIGFyZSBmb3IgdGhlIEludGVsIEU4MDAgc2VyaWVzLCB3aGljaCBsYWNrcyBzb2Z0d2FyZSBlbXVsYXRpb24gaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBTaW5jZSB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBjYW5ub3QgYmUgcmVhY2hlZCB3aXRob3V0IHRoZSBzcGVjaWZpYyBwaHlzaWNhbCBoYXJkd2FyZSwgdGhpcyBwYXRjaCBkb2VzIG5vdCBuZWVkIHRvIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIEludGVsIEV0aGVybmV0IGRyaXZlcnMgKGUxMDAwZSwgaTQwZSwgaWNlKSB3aGljaCByZXF1aXJlIHBoeXNpY2FsIFBDSSBoYXJkd2FyZSB0byBiZSBwcm9iZWQuIFRoZSBlMTAwMGUgY2hhbmdlcyBhcmUgc3BlY2lmaWMgdG8gSUNIOExBTi9QQ0ggTUFDIHR5cGVzIGFuZCBhIERNSSBxdWlyaywgd2hpY2ggYXJlIG5vdCBlbXVsYXRlZCBieSBRRU1VIChRRU1VIGVtdWxhdGVzIHRoZSA4MjU3NEwgTUFDKS4gVGhlIGk0MGUgY2hhbmdlIGlzIGEgdHJpdmlhbCBkZWJ1ZyBtYWNybyBmaXguIFRoZSBpY2UgY2hhbmdlcyBhcmUgZm9yIHRoZSBJbnRlbCBFODAwIHNlcmllcywgd2hpY2ggbGFja3Mgc29mdHdhcmUgZW11bGF0aW9uIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gU2luY2UgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgY2Fubm90IGJlIHJlYWNoZWQgd2l0aG91dCB0aGUgc3BlY2lmaWMgcGh5c2ljYWwgaGFyZHdhcmUsIHRoaXMgcGF0Y2ggZG9lcyBub3QgbmVlZCB0byBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowqrz45[0].run-triage(0) Phase: Succeeded StartedAt: 2026-06-22 22:06:17 +0000 UTC FinishedAt: 2026-06-22 22:14:57 +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+CgkJCTx0ZD4yMDI2LzA2LzIyIDIyOjE0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIEludGVsIEV0aGVybmV0IGRyaXZlcnMgKGUxMDAwZSwgaTQwZSwgaWNlKSB3aGljaCByZXF1aXJlIHBoeXNpY2FsIFBDSSBoYXJkd2FyZSB0byBiZSBwcm9iZWQuIFRoZSBlMTAwMGUgY2hhbmdlcyBhcmUgc3BlY2lmaWMgdG8gSUNIOExBTi9QQ0ggTUFDIHR5cGVzIGFuZCBhIERNSSBxdWlyaywgd2hpY2ggYXJlIG5vdCBlbXVsYXRlZCBieSBRRU1VIChRRU1VIGVtdWxhdGVzIHRoZSA4MjU3NEwgTUFDKS4gVGhlIGk0MGUgY2hhbmdlIGlzIGEgdHJpdmlhbCBkZWJ1ZyBtYWNybyBmaXguIFRoZSBpY2UgY2hhbmdlcyBhcmUgZm9yIHRoZSBJbnRlbCBFODAwIHNlcmllcywgd2hpY2ggbGFja3Mgc29mdHdhcmUgZW11bGF0aW9uIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gU2luY2UgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgY2Fubm90IGJlIHJlYWNoZWQgd2l0aG91dCB0aGUgc3BlY2lmaWMgcGh5c2ljYWwgaGFyZHdhcmUsIHRoaXMgcGF0Y2ggZG9lcyBub3QgbmVlZCB0byBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIyIDIyOjE0PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNTRjYTIxYjM2ZjVjMDg4ZTg2NWYzYzVkZTU0Y2EyY2E3Y2IyZjk3NVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gSnVuIDIyIDIyOjE0OjM1IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwZS9pY2g4bGFuLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMGUvaWNoOGxhbi5jXG5pbmRleCBkZWEyMDhkYjFiZTViZi4uYWE5MGUwY2U4YWNhZjggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMGUvaWNoOGxhbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMGUvaWNoOGxhbi5jXG5AQCAtMTU5NCw2ICYjNDM7MTU5NCw5IEBAIHN0YXRpYyBzMzIgZTEwMDBfY2hlY2tfZm9yX2NvcHBlcl9saW5rX2ljaDhsYW4oc3RydWN0IGUxMDAwX2h3ICpodylcbiBcdFx0XHRwaHlfcmVnIFx1MDAyNj0gfkkyMTdfUExMX0NMT0NLX0dBVEVfTUFTSztcbiBcdFx0XHRpZiAoc3BlZWQgPT0gU1BFRURfMTAwIHx8IHNwZWVkID09IFNQRUVEXzEwKVxuIFx0XHRcdFx0cGh5X3JlZyB8PSAweDNFODtcbiYjNDM7XHRcdFx0ZWxzZSBpZiAoaHctXHUwMDNlbWFjLnR5cGUgPT0gZTEwMDBfcGNoX210cCB8fFxuJiM0MztcdFx0XHRcdCBody1cdTAwM2VtYWMudHlwZSA9PSBlMTAwMF9wY2hfcHRwKVxuJiM0MztcdFx0XHRcdHBoeV9yZWcgfD0gMHgxRDU7XG4gXHRcdFx0ZWxzZVxuIFx0XHRcdFx0cGh5X3JlZyB8PSAweEZBO1xuIFx0XHRcdGUxZV93cGh5X2xvY2tlZChodywgSTIxN19QTExfQ0xPQ0tfR0FURV9SRUcsIHBoeV9yZWcpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwZS9uZXRkZXYuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwZS9uZXRkZXYuY1xuaW5kZXggODA4ZTVjZGRkNmE5MTguLjg0NGYzMWFiMzdhZDQ0IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDBlL25ldGRldi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMGUvbmV0ZGV2LmNcbkBAIC0yNSw2ICYjNDM7MjUsNyBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3BtX3J1bnRpbWUuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3ByZWZldGNoLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9zdXNwZW5kLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvZG1pLmhcdTAwM2VcbiBcbiAjaW5jbHVkZSBcJiMzNDtlMTAwMC5oXCYjMzQ7XG4gI2RlZmluZSBDUkVBVEVfVFJBQ0VfUE9JTlRTXG5AQCAtNTgsNiAmIzQzOzU5LDE3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZTEwMDBfaW5mbyAqZTEwMDBfaW5mb190YmxbXSA9IHtcbiBcdFtib2FyZF9wY2hfcHRwXVx0XHQ9IFx1MDAyNmUxMDAwX3BjaF9wdHBfaW5mbyxcbiB9O1xuIFxuJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IGRtaV9zeXN0ZW1faWQgZGlzYWJsZV9rMV9saXN0W10gPSB7XG4mIzQzO1x0e1xuJiM0MztcdFx0LmlkZW50ID0gXCYjMzQ7RGVsbCBQcm8gMTYgUGx1cyBQQjE2MjUwXCYjMzQ7LFxuJiM0MztcdFx0Lm1hdGNoZXMgPSB7XG4mIzQzO1x0XHRcdERNSV9NQVRDSChETUlfU1lTX1ZFTkRPUiwgXCYjMzQ7RGVsbCBJbmMuXCYjMzQ7KSxcbiYjNDM7XHRcdFx0RE1JX01BVENIKERNSV9QUk9EVUNUX05BTUUsIFwmIzM0O0RlbGwgUHJvIDE2IFBsdXMgUEIxNjI1MFwmIzM0OyksXG4mIzQzO1x0XHR9LFxuJiM0MztcdH0sXG4mIzQzO1x0e31cbiYjNDM7fTtcbiYjNDM7XG4gc3RydWN0IGUxMDAwX3JlZ19pbmZvIHtcbiBcdHUzMiBvZnM7XG4gXHRjaGFyICpuYW1lO1xuQEAgLTc2NzAsNyAmIzQzOzc2ODIsOCBAQCBzdGF0aWMgaW50IGUxMDAwX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KVxuIFx0LyogaW5pdCBQVFAgaGFyZHdhcmUgY2xvY2sgKi9cbiBcdGUxMDAwZV9wdHBfaW5pdChhZGFwdGVyKTtcbiBcbi1cdGlmIChody1cdTAwM2VtYWMudHlwZSBcdTAwM2U9IGUxMDAwX3BjaF9tdHApXG4mIzQzO1x0LyogZGlzYWJsZSBLMSBieSBkZWZhdWx0IG9uIGtub3duIHByb2JsZW1hdGljIHN5c3RlbXMgKi9cbiYjNDM7XHRpZiAoaHctXHUwMDNlbWFjLnR5cGUgXHUwMDNlPSBlMTAwMF9wY2hfbXRwIFx1MDAyNlx1MDAyNiBkbWlfY2hlY2tfc3lzdGVtKGRpc2FibGVfazFfbGlzdCkpXG4gXHRcdGFkYXB0ZXItXHUwMDNlZmxhZ3MyIHw9IEZMQUcyX0RJU0FCTEVfSzE7XG4gXG4gXHQvKiByZXNldCB0aGUgaGFyZHdhcmUgd2l0aCB0aGUgbmV3IHNldHRpbmdzICovXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RlYnVnLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfZGVidWcuaFxuaW5kZXggZTk4NzFkZmIzMmJkNDQuLjAxZmQ3MGRiOTA4NjY2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RlYnVnLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZWJ1Zy5oXG5AQCAtNDIsNyAmIzQzOzQyLDcgQEAgc3RydWN0IGRldmljZSAqaTQwZV9od190b19kZXYoc3RydWN0IGk0MGVfaHcgKmh3KTtcbiAjZGVmaW5lIGk0MGVfZGVidWcoaCwgbSwgcywgLi4uKVx0XHRcdFx0XFxcbiBkbyB7XHRcdFx0XHRcdFx0XHRcdFxcXG4gXHRpZiAoKChtKSBcdTAwMjYgKGgpLVx1MDAzZWRlYnVnX21hc2spKVx0XHRcdFx0XFxcbi1cdFx0ZGV2X2luZm8oaTQwZV9od190b19kZXYoaHcpLCBzLCAjI19fVkFfQVJHU19fKTtcdFxcXG4mIzQzO1x0XHRkZXZfaW5mbyhpNDBlX2h3X3RvX2RldihoKSwgcywgIyNfX1ZBX0FSR1NfXyk7XHRcXFxuIH0gd2hpbGUgKDApXG4gXG4gI2VuZGlmIC8qIF9JNDBFX0RFQlVHX0hfICovXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9jb21tb24uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmNcbmluZGV4IDMxZTBkZTllN2Y2MDc1Li5lZjFjZTEwNmY4MWI1ZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmNcbkBAIC0zODgyLDcgJiM0MzszODgyLDYgQEAgaWNlX3NldF9mYyhzdHJ1Y3QgaWNlX3BvcnRfaW5mbyAqcGksIHU4ICphcV9mYWlsdXJlcywgYm9vbCBlbmFfYXV0b19saW5rX3VwZGF0ZSlcbiBcdGlmICghcGkgfHwgIWFxX2ZhaWx1cmVzKVxuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcbi1cdCphcV9mYWlsdXJlcyA9IDA7XG4gXHRodyA9IHBpLVx1MDAzZWh3O1xuIFxuIFx0cGNhcHMgPSBremFsbG9jX29iaigqcGNhcHMpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZHBsbC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kcGxsLmNcbmluZGV4IDQ2MmM2OWNjMTFlMTlkLi4zMGMzYTRkYjdkNjExYyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZHBsbC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2RwbGwuY1xuQEAgLTQ2NDUsOSAmIzQzOzQ2NDUsMTMgQEAgaWNlX2RwbGxfaW5pdF9waW5zX2luZm8oc3RydWN0IGljZV9wZiAqcGYsIGVudW0gaWNlX2RwbGxfcGluX3R5cGUgcGluX3R5cGUpXG4gc3RhdGljIHZvaWQgaWNlX2RwbGxfZGVpbml0X2luZm8oc3RydWN0IGljZV9wZiAqcGYpXG4ge1xuIFx0a2ZyZWUocGYtXHUwMDNlZHBsbHMuaW5wdXRzKTtcbiYjNDM7XHRwZi1cdTAwM2VkcGxscy5pbnB1dHMgPSBOVUxMO1xuIFx0a2ZyZWUocGYtXHUwMDNlZHBsbHMub3V0cHV0cyk7XG4mIzQzO1x0cGYtXHUwMDNlZHBsbHMub3V0cHV0cyA9IE5VTEw7XG4gXHRrZnJlZShwZi1cdTAwM2VkcGxscy5lZWMuaW5wdXRfcHJpbyk7XG4mIzQzO1x0cGYtXHUwMDNlZHBsbHMuZWVjLmlucHV0X3ByaW8gPSBOVUxMO1xuIFx0a2ZyZWUocGYtXHUwMDNlZHBsbHMucHBzLmlucHV0X3ByaW8pO1xuJiM0MztcdHBmLVx1MDAzZWRwbGxzLnBwcy5pbnB1dF9wcmlvID0gTlVMTDtcbiB9XG4gXG4gLyoqXG5AQCAtNDc0OCwxMiAmIzQzOzQ3NTIsMTYgQEAgc3RhdGljIGludCBpY2VfZHBsbF9pbml0X2luZm8oc3RydWN0IGljZV9wZiAqcGYsIGJvb2wgY2d1KVxuIFxuIFx0YWxsb2Nfc2l6ZSA9IHNpemVvZigqZGUtXHUwMDNlaW5wdXRfcHJpbykgKiBkLVx1MDAzZW51bV9pbnB1dHM7XG4gXHRkZS1cdTAwM2VpbnB1dF9wcmlvID0ga3phbGxvYyhhbGxvY19zaXplLCBHRlBfS0VSTkVMKTtcbi1cdGlmICghZGUtXHUwMDNlaW5wdXRfcHJpbylcbi1cdFx0cmV0dXJuIC1FTk9NRU07XG4mIzQzO1x0aWYgKCFkZS1cdTAwM2VpbnB1dF9wcmlvKSB7XG4mIzQzO1x0XHRyZXQgPSAtRU5PTUVNO1xuJiM0MztcdFx0Z290byBkZWluaXRfaW5mbztcbiYjNDM7XHR9XG4gXG4gXHRkcC1cdTAwM2VpbnB1dF9wcmlvID0ga3phbGxvYyhhbGxvY19zaXplLCBHRlBfS0VSTkVMKTtcbi1cdGlmICghZHAtXHUwMDNlaW5wdXRfcHJpbylcbi1cdFx0cmV0dXJuIC1FTk9NRU07XG4mIzQzO1x0aWYgKCFkcC1cdTAwM2VpbnB1dF9wcmlvKSB7XG4mIzQzO1x0XHRyZXQgPSAtRU5PTUVNO1xuJiM0MztcdFx0Z290byBkZWluaXRfaW5mbztcbiYjNDM7XHR9XG4gXG4gXHRyZXQgPSBpY2VfZHBsbF9pbml0X3BpbnNfaW5mbyhwZiwgSUNFX0RQTExfUElOX1RZUEVfSU5QVVQpO1xuIFx0aWYgKHJldClcbkBAIC00Nzc4LDEyICYjNDM7NDc4NiwxMiBAQCBzdGF0aWMgaW50IGljZV9kcGxsX2luaXRfaW5mbyhzdHJ1Y3QgaWNlX3BmICpwZiwgYm9vbCBjZ3UpXG4gXHRyZXQgPSBpY2VfZ2V0X2NndV9yY2xrX3Bpbl9pbmZvKFx1MDAyNnBmLVx1MDAzZWh3LCBcdTAwMjZkLVx1MDAzZWJhc2VfcmNsa19pZHgsXG4gXHRcdFx0XHRcdFx1MDAyNnBmLVx1MDAzZWRwbGxzLnJjbGsubnVtX3BhcmVudHMpO1xuIFx0aWYgKHJldClcbi1cdFx0cmV0dXJuIHJldDtcbiYjNDM7XHRcdGdvdG8gZGVpbml0X2luZm87XG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBwZi1cdTAwM2VkcGxscy5yY2xrLm51bV9wYXJlbnRzOyBpJiM0MzsmIzQzOylcbiBcdFx0cGYtXHUwMDNlZHBsbHMucmNsay5wYXJlbnRfaWR4W2ldID0gZC1cdTAwM2ViYXNlX3JjbGtfaWR4ICYjNDM7IGk7XG4gXHRyZXQgPSBpY2VfZHBsbF9pbml0X3BpbnNfaW5mbyhwZiwgSUNFX0RQTExfUElOX1RZUEVfUkNMS19JTlBVVCk7XG4gXHRpZiAocmV0KVxuLVx0XHRyZXR1cm4gcmV0O1xuJiM0MztcdFx0Z290byBkZWluaXRfaW5mbztcbiBcdGRlLVx1MDAzZW1vZGUgPSBEUExMX01PREVfQVVUT01BVElDO1xuIFx0ZHAtXHUwMDNlbW9kZSA9IERQTExfTU9ERV9BVVRPTUFUSUM7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9lc3dpdGNoLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Vzd2l0Y2guY1xuaW5kZXggMmU0ZjA5NjkwMzVmNzcuLmMzMGUyN2JiZmU2ZTI1IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9lc3dpdGNoLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZXN3aXRjaC5jXG5AQCAtMTE3LDggJiM0MzsxMTcsNiBAQCBzdGF0aWMgaW50IGljZV9lc3dpdGNoX3NldHVwX3JlcHIoc3RydWN0IGljZV9wZiAqcGYsIHN0cnVjdCBpY2VfcmVwciAqcmVwcilcbiBcdGlmICghcmVwci1cdTAwM2Vkc3QpXG4gXHRcdHJldHVybiAtRU5PTUVNO1xuIFxuLVx0bmV0aWZfa2VlcF9kc3QodXBsaW5rX3ZzaS1cdTAwM2VuZXRkZXYpO1xuLVxuIFx0ZHN0ID0gcmVwci1cdTAwM2Vkc3Q7XG4gXHRkc3QtXHUwMDNldS5wb3J0X2luZm8ucG9ydF9pZCA9IHZzaS1cdTAwM2V2c2lfbnVtO1xuIFx0ZHN0LVx1MDAzZXUucG9ydF9pbmZvLmxvd2VyX2RldiA9IHVwbGlua192c2ktXHUwMDNlbmV0ZGV2O1xuQEAgLTMxMiw2ICYjNDM7MzEwLDggQEAgc3RhdGljIGludCBpY2VfZXN3aXRjaF9lbmFibGVfc3dpdGNoZGV2KHN0cnVjdCBpY2VfcGYgKnBmKVxuIFx0aWYgKGljZV9lc3dpdGNoX2JyX29mZmxvYWRzX2luaXQocGYpKVxuIFx0XHRnb3RvIGVycl9icl9vZmZsb2FkcztcbiBcbiYjNDM7XHRuZXRpZl9rZWVwX2RzdCh1cGxpbmtfdnNpLVx1MDAzZW5ldGRldik7XG4mIzQzO1xuIFx0cGYtXHUwMDNlZXN3aXRjaC5pc19ydW5uaW5nID0gdHJ1ZTtcbiBcbiBcdHJldHVybiAwO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZXRodG9vbC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9ldGh0b29sLmNcbmluZGV4IDIzNmQyOTNhYmE5ODRhLi40OTM3MWIwNjU4NDU4MiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZXRodG9vbC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2V0aHRvb2wuY1xuQEAgLTM1MDgsNyAmIzQzOzM1MDgsNyBAQCBpY2Vfc2V0X3BhdXNlcGFyYW0oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgc3RydWN0IGV0aHRvb2xfcGF1c2VwYXJhbSAqcGF1c2UpXG4gXHRzdHJ1Y3QgaWNlX3ZzaSAqdnNpID0gbnAtXHUwMDNldnNpO1xuIFx0c3RydWN0IGljZV9odyAqaHcgPSBcdTAwMjZwZi1cdTAwM2VodztcbiBcdHN0cnVjdCBpY2VfcG9ydF9pbmZvICpwaTtcbi1cdHU4IGFxX2ZhaWx1cmVzO1xuJiM0MztcdHU4IGFxX2ZhaWx1cmVzID0gMDtcbiBcdGJvb2wgbGlua191cDtcbiBcdHUzMiBpc19hbjtcbiBcdGludCBlcnI7XG5AQCAtMzU3OSwxOCAmIzQzOzM1NzksMjIgQEAgaWNlX3NldF9wYXVzZXBhcmFtKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIHN0cnVjdCBldGh0b29sX3BhdXNlcGFyYW0gKnBhdXNlKVxuIFx0LyogU2V0IHRoZSBGQyBtb2RlIGFuZCBvbmx5IHJlc3RhcnQgQU4gaWYgbGluayBpcyB1cCAqL1xuIFx0ZXJyID0gaWNlX3NldF9mYyhwaSwgXHUwMDI2YXFfZmFpbHVyZXMsIGxpbmtfdXApO1xuIFxuLVx0aWYgKGFxX2ZhaWx1cmVzIFx1MDAyNiBJQ0VfU0VUX0ZDX0FRX0ZBSUxfR0VUKSB7XG4mIzQzO1x0c3dpdGNoIChhcV9mYWlsdXJlcykge1xuJiM0MztcdGNhc2UgSUNFX1NFVF9GQ19BUV9GQUlMX0dFVDpcbiBcdFx0bmV0ZGV2X2luZm8obmV0ZGV2LCBcJiMzNDtTZXQgZmMgZmFpbGVkIG9uIHRoZSBnZXRfcGh5X2NhcGFiaWxpdGllcyBjYWxsIHdpdGggZXJyICVkIGFxX2VyciAlc1xcblwmIzM0OyxcbiBcdFx0XHQgICAgZXJyLCBsaWJpZV9hcV9zdHIoaHctXHUwMDNlYWRtaW5xLnNxX2xhc3Rfc3RhdHVzKSk7XG4gXHRcdGVyciA9IC1FQUdBSU47XG4tXHR9IGVsc2UgaWYgKGFxX2ZhaWx1cmVzIFx1MDAyNiBJQ0VfU0VUX0ZDX0FRX0ZBSUxfU0VUKSB7XG4mIzQzO1x0XHRicmVhaztcbiYjNDM7XHRjYXNlIElDRV9TRVRfRkNfQVFfRkFJTF9TRVQ6XG4gXHRcdG5ldGRldl9pbmZvKG5ldGRldiwgXCYjMzQ7U2V0IGZjIGZhaWxlZCBvbiB0aGUgc2V0X3BoeV9jb25maWcgY2FsbCB3aXRoIGVyciAlZCBhcV9lcnIgJXNcXG5cJiMzNDssXG4gXHRcdFx0ICAgIGVyciwgbGliaWVfYXFfc3RyKGh3LVx1MDAzZWFkbWlucS5zcV9sYXN0X3N0YXR1cykpO1xuIFx0XHRlcnIgPSAtRUFHQUlOO1xuLVx0fSBlbHNlIGlmIChhcV9mYWlsdXJlcyBcdTAwMjYgSUNFX1NFVF9GQ19BUV9GQUlMX1VQREFURSkge1xuJiM0MztcdFx0YnJlYWs7XG4mIzQzO1x0Y2FzZSBJQ0VfU0VUX0ZDX0FRX0ZBSUxfVVBEQVRFOlxuIFx0XHRuZXRkZXZfaW5mbyhuZXRkZXYsIFwmIzM0O1NldCBmYyBmYWlsZWQgb24gdGhlIGdldF9saW5rX2luZm8gY2FsbCB3aXRoIGVyciAlZCBhcV9lcnIgJXNcXG5cJiMzNDssXG4gXHRcdFx0ICAgIGVyciwgbGliaWVfYXFfc3RyKGh3LVx1MDAzZWFkbWlucS5zcV9sYXN0X3N0YXR1cykpO1xuIFx0XHRlcnIgPSAtRUFHQUlOO1xuJiM0MztcdFx0YnJlYWs7XG4gXHR9XG4gXG4gXHRyZXR1cm4gZXJyO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmNcbmluZGV4IGUyZmJlMTExZjg0OTY5Li5lMmZkMmRhYjAzZTM2MyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uY1xuQEAgLTQ3ODksMTYgJiM0Mzs0Nzg5LDE0IEBAIHN0YXRpYyB2b2lkIGljZV9pbml0X3dha2V1cChzdHJ1Y3QgaWNlX3BmICpwZilcbiBcdGRldmljZV9zZXRfd2FrZXVwX2VuYWJsZShpY2VfcGZfdG9fZGV2KHBmKSwgZmFsc2UpO1xuIH1cbiBcbi1zdGF0aWMgaW50IGljZV9pbml0X2xpbmsoc3RydWN0IGljZV9wZiAqcGYpXG4mIzQzO3N0YXRpYyB2b2lkIGljZV9pbml0X2xpbmsoc3RydWN0IGljZV9wZiAqcGYpXG4ge1xuIFx0c3RydWN0IGRldmljZSAqZGV2ID0gaWNlX3BmX3RvX2RldihwZik7XG4gXHRpbnQgZXJyO1xuIFxuIFx0ZXJyID0gaWNlX2luaXRfbGlua19ldmVudHMocGYtXHUwMDNlaHcucG9ydF9pbmZvKTtcbi1cdGlmIChlcnIpIHtcbiYjNDM7XHRpZiAoZXJyKVxuIFx0XHRkZXZfZXJyKGRldiwgXCYjMzQ7aWNlX2luaXRfbGlua19ldmVudHMgZmFpbGVkOiAlZFxcblwmIzM0OywgZXJyKTtcbi1cdFx0cmV0dXJuIGVycjtcbi1cdH1cbiBcbiBcdC8qIG5vdCBhIGZhdGFsIGVycm9yIGlmIHRoaXMgZmFpbHMgKi9cbiBcdGVyciA9IGljZV9pbml0X252bV9waHlfdHlwZShwZi1cdTAwM2Vody5wb3J0X2luZm8pO1xuQEAgLTQ4MzgsOCAmIzQzOzQ4MzYsNiBAQCBzdGF0aWMgaW50IGljZV9pbml0X2xpbmsoc3RydWN0IGljZV9wZiAqcGYpXG4gXHR9IGVsc2Uge1xuIFx0XHRzZXRfYml0KElDRV9GTEFHX05PX01FRElBLCBwZi1cdTAwM2VmbGFncyk7XG4gXHR9XG4tXG4tXHRyZXR1cm4gZXJyO1xuIH1cbiBcbiBzdGF0aWMgaW50IGljZV9pbml0X3BmX3N3KHN0cnVjdCBpY2VfcGYgKnBmKVxuQEAgLTQ5ODIsMTMgJiM0Mzs0OTc4LDExIEBAIHN0YXRpYyBpbnQgaWNlX2luaXQoc3RydWN0IGljZV9wZiAqcGYpXG4gXG4gXHRpY2VfaW5pdF93YWtldXAocGYpO1xuIFxuLVx0ZXJyID0gaWNlX2luaXRfbGluayhwZik7XG4tXHRpZiAoZXJyKVxuLVx0XHRnb3RvIGVycl9pbml0X2xpbms7XG4mIzQzO1x0aWNlX2luaXRfbGluayhwZik7XG4gXG4gXHRlcnIgPSBpY2Vfc2VuZF92ZXJzaW9uKHBmKTtcbiBcdGlmIChlcnIpXG4tXHRcdGdvdG8gZXJyX2luaXRfbGluaztcbiYjNDM7XHRcdGdvdG8gZXJyX2RlaW5pdF9wZl9zdztcbiBcbiBcdGljZV92ZXJpZnlfY2FjaGVsaW5lX3NpemUocGYpO1xuIFxuQEAgLTUwMDcsNyAmIzQzOzUwMDEsNyBAQCBzdGF0aWMgaW50IGljZV9pbml0KHN0cnVjdCBpY2VfcGYgKnBmKVxuIFxuIFx0cmV0dXJuIDA7XG4gXG4tZXJyX2luaXRfbGluazpcbiYjNDM7ZXJyX2RlaW5pdF9wZl9zdzpcbiBcdGljZV9kZWluaXRfcGZfc3cocGYpO1xuIGVycl9pbml0X3BmX3N3OlxuIFx0aWNlX2RlYWxsb2NfdnNpcyhwZik7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV92Zl9saWIuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdmZfbGliLmNcbmluZGV4IGIxZjQ2NzA3ZGNjMDA0Li4yN2U0YWNiMTYyMGYwYyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdmZfbGliLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdmZfbGliLmNcbkBAIC04MDEsNyAmIzQzOzgwMSw3IEBAIHZvaWQgaWNlX3Jlc2V0X2FsbF92ZnMoc3RydWN0IGljZV9wZiAqcGYpXG4gXHRcdCAqIHNldHVwIG9ubHkgd2hlbiBWRiBjcmVhdGVzIGl0cyBmaXJzdCBGRElSIHJ1bGUuXG4gXHRcdCAqL1xuIFx0XHRpZiAodmYtXHUwMDNlY3RybF92c2lfaWR4ICE9IElDRV9OT19WU0kpXG4tXHRcdFx0aWNlX3ZmX2N0cmxfaW52YWxpZGF0ZV92c2kodmYpO1xuJiM0MztcdFx0XHRpY2VfdmZfY3RybF92c2lfcmVsZWFzZSh2Zik7XG4gXG4gXHRcdGljZV92Zl9wcmVfdnNpX3JlYnVpbGQodmYpO1xuIFx0XHRpZiAoaWNlX3ZmX3JlYnVpbGRfdnNpKHZmKSkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIyIDIyOjE0PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIEludGVsIEV0aGVybmV0IGRyaXZlcnMgKGUxMDAwZSwgaTQwZSwgaWNlKSB3aGljaCByZXF1aXJlIHBoeXNpY2FsIFBDSSBoYXJkd2FyZSB0byBiZSBwcm9iZWQuIFRoZSBlMTAwMGUgY2hhbmdlcyBhcmUgc3BlY2lmaWMgdG8gSUNIOExBTi9QQ0ggTUFDIHR5cGVzIGFuZCBhIERNSSBxdWlyaywgd2hpY2ggYXJlIG5vdCBlbXVsYXRlZCBieSBRRU1VIChRRU1VIGVtdWxhdGVzIHRoZSA4MjU3NEwgTUFDKS4gVGhlIGk0MGUgY2hhbmdlIGlzIGEgdHJpdmlhbCBkZWJ1ZyBtYWNybyBmaXguIFRoZSBpY2UgY2hhbmdlcyBhcmUgZm9yIHRoZSBJbnRlbCBFODAwIHNlcmllcywgd2hpY2ggbGFja3Mgc29mdHdhcmUgZW11bGF0aW9uIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gU2luY2UgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgY2Fubm90IGJlIHJlYWNoZWQgd2l0aG91dCB0aGUgc3BlY2lmaWMgcGh5c2ljYWwgaGFyZHdhcmUsIHRoaXMgcGF0Y2ggZG9lcyBub3QgbmVlZCB0byBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA1NGNhMjFiMzZmNWMwODhlODY1ZjNjNWRlNTRjYTJjYTdjYjJmOTc1CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBKdW4gMjIgMjI6MTQ6MzUgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMGUvaWNoOGxhbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDBlL2ljaDhsYW4uYwppbmRleCBkZWEyMDhkYjFiZTViZi4uYWE5MGUwY2U4YWNhZjggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwZS9pY2g4bGFuLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDBlL2ljaDhsYW4uYwpAQCAtMTU5NCw2ICYjNDM7MTU5NCw5IEBAIHN0YXRpYyBzMzIgZTEwMDBfY2hlY2tfZm9yX2NvcHBlcl9saW5rX2ljaDhsYW4oc3RydWN0IGUxMDAwX2h3ICpodykKIAkJCXBoeV9yZWcgJmFtcDs9IH5JMjE3X1BMTF9DTE9DS19HQVRFX01BU0s7CiAJCQlpZiAoc3BlZWQgPT0gU1BFRURfMTAwIHx8IHNwZWVkID09IFNQRUVEXzEwKQogCQkJCXBoeV9yZWcgfD0gMHgzRTg7CiYjNDM7CQkJZWxzZSBpZiAoaHctJmd0O21hYy50eXBlID09IGUxMDAwX3BjaF9tdHAgfHwKJiM0MzsJCQkJIGh3LSZndDttYWMudHlwZSA9PSBlMTAwMF9wY2hfcHRwKQomIzQzOwkJCQlwaHlfcmVnIHw9IDB4MUQ1OwogCQkJZWxzZQogCQkJCXBoeV9yZWcgfD0gMHhGQTsKIAkJCWUxZV93cGh5X2xvY2tlZChodywgSTIxN19QTExfQ0xPQ0tfR0FURV9SRUcsIHBoeV9yZWcpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDBlL25ldGRldi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDBlL25ldGRldi5jCmluZGV4IDgwOGU1Y2RkZDZhOTE4Li44NDRmMzFhYjM3YWQ0NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDBlL25ldGRldi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwZS9uZXRkZXYuYwpAQCAtMjUsNiAmIzQzOzI1LDcgQEAKICNpbmNsdWRlICZsdDtsaW51eC9wbV9ydW50aW1lLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvcHJlZmV0Y2guaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9zdXNwZW5kLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L2RtaS5oJmd0OwogCiAjaW5jbHVkZSAmIzM0O2UxMDAwLmgmIzM0OwogI2RlZmluZSBDUkVBVEVfVFJBQ0VfUE9JTlRTCkBAIC01OCw2ICYjNDM7NTksMTcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBlMTAwMF9pbmZvICplMTAwMF9pbmZvX3RibFtdID0gewogCVtib2FyZF9wY2hfcHRwXQkJPSAmYW1wO2UxMDAwX3BjaF9wdHBfaW5mbywKIH07CiAKJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IGRtaV9zeXN0ZW1faWQgZGlzYWJsZV9rMV9saXN0W10gPSB7CiYjNDM7CXsKJiM0MzsJCS5pZGVudCA9ICYjMzQ7RGVsbCBQcm8gMTYgUGx1cyBQQjE2MjUwJiMzNDssCiYjNDM7CQkubWF0Y2hlcyA9IHsKJiM0MzsJCQlETUlfTUFUQ0goRE1JX1NZU19WRU5ET1IsICYjMzQ7RGVsbCBJbmMuJiMzNDspLAomIzQzOwkJCURNSV9NQVRDSChETUlfUFJPRFVDVF9OQU1FLCAmIzM0O0RlbGwgUHJvIDE2IFBsdXMgUEIxNjI1MCYjMzQ7KSwKJiM0MzsJCX0sCiYjNDM7CX0sCiYjNDM7CXt9CiYjNDM7fTsKJiM0MzsKIHN0cnVjdCBlMTAwMF9yZWdfaW5mbyB7CiAJdTMyIG9mczsKIAljaGFyICpuYW1lOwpAQCAtNzY3MCw3ICYjNDM7NzY4Miw4IEBAIHN0YXRpYyBpbnQgZTEwMDBfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpCiAJLyogaW5pdCBQVFAgaGFyZHdhcmUgY2xvY2sgKi8KIAllMTAwMGVfcHRwX2luaXQoYWRhcHRlcik7CiAKLQlpZiAoaHctJmd0O21hYy50eXBlICZndDs9IGUxMDAwX3BjaF9tdHApCiYjNDM7CS8qIGRpc2FibGUgSzEgYnkgZGVmYXVsdCBvbiBrbm93biBwcm9ibGVtYXRpYyBzeXN0ZW1zICovCiYjNDM7CWlmIChody0mZ3Q7bWFjLnR5cGUgJmd0Oz0gZTEwMDBfcGNoX210cCAmYW1wOyZhbXA7IGRtaV9jaGVja19zeXN0ZW0oZGlzYWJsZV9rMV9saXN0KSkKIAkJYWRhcHRlci0mZ3Q7ZmxhZ3MyIHw9IEZMQUcyX0RJU0FCTEVfSzE7CiAKIAkvKiByZXNldCB0aGUgaGFyZHdhcmUgd2l0aCB0aGUgbmV3IHNldHRpbmdzICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfZGVidWcuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZWJ1Zy5oCmluZGV4IGU5ODcxZGZiMzJiZDQ0Li4wMWZkNzBkYjkwODY2NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RlYnVnLmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RlYnVnLmgKQEAgLTQyLDcgJiM0Mzs0Miw3IEBAIHN0cnVjdCBkZXZpY2UgKmk0MGVfaHdfdG9fZGV2KHN0cnVjdCBpNDBlX2h3ICpodyk7CiAjZGVmaW5lIGk0MGVfZGVidWcoaCwgbSwgcywgLi4uKQkJCQlcCiBkbyB7CQkJCQkJCQlcCiAJaWYgKCgobSkgJmFtcDsgKGgpLSZndDtkZWJ1Z19tYXNrKSkJCQkJXAotCQlkZXZfaW5mbyhpNDBlX2h3X3RvX2RldihodyksIHMsICMjX19WQV9BUkdTX18pOwlcCiYjNDM7CQlkZXZfaW5mbyhpNDBlX2h3X3RvX2RldihoKSwgcywgIyNfX1ZBX0FSR1NfXyk7CVwKIH0gd2hpbGUgKDApCiAKICNlbmRpZiAvKiBfSTQwRV9ERUJVR19IXyAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9jb21tb24uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmMKaW5kZXggMzFlMGRlOWU3ZjYwNzUuLmVmMWNlMTA2ZjgxYjVlIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmMKQEAgLTM4ODIsNyAmIzQzOzM4ODIsNiBAQCBpY2Vfc2V0X2ZjKHN0cnVjdCBpY2VfcG9ydF9pbmZvICpwaSwgdTggKmFxX2ZhaWx1cmVzLCBib29sIGVuYV9hdXRvX2xpbmtfdXBkYXRlKQogCWlmICghcGkgfHwgIWFxX2ZhaWx1cmVzKQogCQlyZXR1cm4gLUVJTlZBTDsKIAotCSphcV9mYWlsdXJlcyA9IDA7CiAJaHcgPSBwaS0mZ3Q7aHc7CiAKIAlwY2FwcyA9IGt6YWxsb2Nfb2JqKCpwY2Fwcyk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2RwbGwuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZHBsbC5jCmluZGV4IDQ2MmM2OWNjMTFlMTlkLi4zMGMzYTRkYjdkNjExYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kcGxsLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kcGxsLmMKQEAgLTQ2NDUsOSAmIzQzOzQ2NDUsMTMgQEAgaWNlX2RwbGxfaW5pdF9waW5zX2luZm8oc3RydWN0IGljZV9wZiAqcGYsIGVudW0gaWNlX2RwbGxfcGluX3R5cGUgcGluX3R5cGUpCiBzdGF0aWMgdm9pZCBpY2VfZHBsbF9kZWluaXRfaW5mbyhzdHJ1Y3QgaWNlX3BmICpwZikKIHsKIAlrZnJlZShwZi0mZ3Q7ZHBsbHMuaW5wdXRzKTsKJiM0MzsJcGYtJmd0O2RwbGxzLmlucHV0cyA9IE5VTEw7CiAJa2ZyZWUocGYtJmd0O2RwbGxzLm91dHB1dHMpOwomIzQzOwlwZi0mZ3Q7ZHBsbHMub3V0cHV0cyA9IE5VTEw7CiAJa2ZyZWUocGYtJmd0O2RwbGxzLmVlYy5pbnB1dF9wcmlvKTsKJiM0MzsJcGYtJmd0O2RwbGxzLmVlYy5pbnB1dF9wcmlvID0gTlVMTDsKIAlrZnJlZShwZi0mZ3Q7ZHBsbHMucHBzLmlucHV0X3ByaW8pOwomIzQzOwlwZi0mZ3Q7ZHBsbHMucHBzLmlucHV0X3ByaW8gPSBOVUxMOwogfQogCiAvKioKQEAgLTQ3NDgsMTIgJiM0Mzs0NzUyLDE2IEBAIHN0YXRpYyBpbnQgaWNlX2RwbGxfaW5pdF9pbmZvKHN0cnVjdCBpY2VfcGYgKnBmLCBib29sIGNndSkKIAogCWFsbG9jX3NpemUgPSBzaXplb2YoKmRlLSZndDtpbnB1dF9wcmlvKSAqIGQtJmd0O251bV9pbnB1dHM7CiAJZGUtJmd0O2lucHV0X3ByaW8gPSBremFsbG9jKGFsbG9jX3NpemUsIEdGUF9LRVJORUwpOwotCWlmICghZGUtJmd0O2lucHV0X3ByaW8pCi0JCXJldHVybiAtRU5PTUVNOwomIzQzOwlpZiAoIWRlLSZndDtpbnB1dF9wcmlvKSB7CiYjNDM7CQlyZXQgPSAtRU5PTUVNOwomIzQzOwkJZ290byBkZWluaXRfaW5mbzsKJiM0MzsJfQogCiAJZHAtJmd0O2lucHV0X3ByaW8gPSBremFsbG9jKGFsbG9jX3NpemUsIEdGUF9LRVJORUwpOwotCWlmICghZHAtJmd0O2lucHV0X3ByaW8pCi0JCXJldHVybiAtRU5PTUVNOwomIzQzOwlpZiAoIWRwLSZndDtpbnB1dF9wcmlvKSB7CiYjNDM7CQlyZXQgPSAtRU5PTUVNOwomIzQzOwkJZ290byBkZWluaXRfaW5mbzsKJiM0MzsJfQogCiAJcmV0ID0gaWNlX2RwbGxfaW5pdF9waW5zX2luZm8ocGYsIElDRV9EUExMX1BJTl9UWVBFX0lOUFVUKTsKIAlpZiAocmV0KQpAQCAtNDc3OCwxMiAmIzQzOzQ3ODYsMTIgQEAgc3RhdGljIGludCBpY2VfZHBsbF9pbml0X2luZm8oc3RydWN0IGljZV9wZiAqcGYsIGJvb2wgY2d1KQogCXJldCA9IGljZV9nZXRfY2d1X3JjbGtfcGluX2luZm8oJmFtcDtwZi0mZ3Q7aHcsICZhbXA7ZC0mZ3Q7YmFzZV9yY2xrX2lkeCwKIAkJCQkJJmFtcDtwZi0mZ3Q7ZHBsbHMucmNsay5udW1fcGFyZW50cyk7CiAJaWYgKHJldCkKLQkJcmV0dXJuIHJldDsKJiM0MzsJCWdvdG8gZGVpbml0X2luZm87CiAJZm9yIChpID0gMDsgaSAmbHQ7IHBmLSZndDtkcGxscy5yY2xrLm51bV9wYXJlbnRzOyBpJiM0MzsmIzQzOykKIAkJcGYtJmd0O2RwbGxzLnJjbGsucGFyZW50X2lkeFtpXSA9IGQtJmd0O2Jhc2VfcmNsa19pZHggJiM0MzsgaTsKIAlyZXQgPSBpY2VfZHBsbF9pbml0X3BpbnNfaW5mbyhwZiwgSUNFX0RQTExfUElOX1RZUEVfUkNMS19JTlBVVCk7CiAJaWYgKHJldCkKLQkJcmV0dXJuIHJldDsKJiM0MzsJCWdvdG8gZGVpbml0X2luZm87CiAJZGUtJmd0O21vZGUgPSBEUExMX01PREVfQVVUT01BVElDOwogCWRwLSZndDttb2RlID0gRFBMTF9NT0RFX0FVVE9NQVRJQzsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9lc3dpdGNoLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Vzd2l0Y2guYwppbmRleCAyZTRmMDk2OTAzNWY3Ny4uYzMwZTI3YmJmZTZlMjUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZXN3aXRjaC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZXN3aXRjaC5jCkBAIC0xMTcsOCAmIzQzOzExNyw2IEBAIHN0YXRpYyBpbnQgaWNlX2Vzd2l0Y2hfc2V0dXBfcmVwcihzdHJ1Y3QgaWNlX3BmICpwZiwgc3RydWN0IGljZV9yZXByICpyZXByKQogCWlmICghcmVwci0mZ3Q7ZHN0KQogCQlyZXR1cm4gLUVOT01FTTsKIAotCW5ldGlmX2tlZXBfZHN0KHVwbGlua192c2ktJmd0O25ldGRldik7Ci0KIAlkc3QgPSByZXByLSZndDtkc3Q7CiAJZHN0LSZndDt1LnBvcnRfaW5mby5wb3J0X2lkID0gdnNpLSZndDt2c2lfbnVtOwogCWRzdC0mZ3Q7dS5wb3J0X2luZm8ubG93ZXJfZGV2ID0gdXBsaW5rX3ZzaS0mZ3Q7bmV0ZGV2OwpAQCAtMzEyLDYgJiM0MzszMTAsOCBAQCBzdGF0aWMgaW50IGljZV9lc3dpdGNoX2VuYWJsZV9zd2l0Y2hkZXYoc3RydWN0IGljZV9wZiAqcGYpCiAJaWYgKGljZV9lc3dpdGNoX2JyX29mZmxvYWRzX2luaXQocGYpKQogCQlnb3RvIGVycl9icl9vZmZsb2FkczsKIAomIzQzOwluZXRpZl9rZWVwX2RzdCh1cGxpbmtfdnNpLSZndDtuZXRkZXYpOwomIzQzOwogCXBmLSZndDtlc3dpdGNoLmlzX3J1bm5pbmcgPSB0cnVlOwogCiAJcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2V0aHRvb2wuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZXRodG9vbC5jCmluZGV4IDIzNmQyOTNhYmE5ODRhLi40OTM3MWIwNjU4NDU4MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9ldGh0b29sLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9ldGh0b29sLmMKQEAgLTM1MDgsNyAmIzQzOzM1MDgsNyBAQCBpY2Vfc2V0X3BhdXNlcGFyYW0oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgc3RydWN0IGV0aHRvb2xfcGF1c2VwYXJhbSAqcGF1c2UpCiAJc3RydWN0IGljZV92c2kgKnZzaSA9IG5wLSZndDt2c2k7CiAJc3RydWN0IGljZV9odyAqaHcgPSAmYW1wO3BmLSZndDtodzsKIAlzdHJ1Y3QgaWNlX3BvcnRfaW5mbyAqcGk7Ci0JdTggYXFfZmFpbHVyZXM7CiYjNDM7CXU4IGFxX2ZhaWx1cmVzID0gMDsKIAlib29sIGxpbmtfdXA7CiAJdTMyIGlzX2FuOwogCWludCBlcnI7CkBAIC0zNTc5LDE4ICYjNDM7MzU3OSwyMiBAQCBpY2Vfc2V0X3BhdXNlcGFyYW0oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgc3RydWN0IGV0aHRvb2xfcGF1c2VwYXJhbSAqcGF1c2UpCiAJLyogU2V0IHRoZSBGQyBtb2RlIGFuZCBvbmx5IHJlc3RhcnQgQU4gaWYgbGluayBpcyB1cCAqLwogCWVyciA9IGljZV9zZXRfZmMocGksICZhbXA7YXFfZmFpbHVyZXMsIGxpbmtfdXApOwogCi0JaWYgKGFxX2ZhaWx1cmVzICZhbXA7IElDRV9TRVRfRkNfQVFfRkFJTF9HRVQpIHsKJiM0MzsJc3dpdGNoIChhcV9mYWlsdXJlcykgewomIzQzOwljYXNlIElDRV9TRVRfRkNfQVFfRkFJTF9HRVQ6CiAJCW5ldGRldl9pbmZvKG5ldGRldiwgJiMzNDtTZXQgZmMgZmFpbGVkIG9uIHRoZSBnZXRfcGh5X2NhcGFiaWxpdGllcyBjYWxsIHdpdGggZXJyICVkIGFxX2VyciAlc1xuJiMzNDssCiAJCQkgICAgZXJyLCBsaWJpZV9hcV9zdHIoaHctJmd0O2FkbWlucS5zcV9sYXN0X3N0YXR1cykpOwogCQllcnIgPSAtRUFHQUlOOwotCX0gZWxzZSBpZiAoYXFfZmFpbHVyZXMgJmFtcDsgSUNFX1NFVF9GQ19BUV9GQUlMX1NFVCkgewomIzQzOwkJYnJlYWs7CiYjNDM7CWNhc2UgSUNFX1NFVF9GQ19BUV9GQUlMX1NFVDoKIAkJbmV0ZGV2X2luZm8obmV0ZGV2LCAmIzM0O1NldCBmYyBmYWlsZWQgb24gdGhlIHNldF9waHlfY29uZmlnIGNhbGwgd2l0aCBlcnIgJWQgYXFfZXJyICVzXG4mIzM0OywKIAkJCSAgICBlcnIsIGxpYmllX2FxX3N0cihody0mZ3Q7YWRtaW5xLnNxX2xhc3Rfc3RhdHVzKSk7CiAJCWVyciA9IC1FQUdBSU47Ci0JfSBlbHNlIGlmIChhcV9mYWlsdXJlcyAmYW1wOyBJQ0VfU0VUX0ZDX0FRX0ZBSUxfVVBEQVRFKSB7CiYjNDM7CQlicmVhazsKJiM0MzsJY2FzZSBJQ0VfU0VUX0ZDX0FRX0ZBSUxfVVBEQVRFOgogCQluZXRkZXZfaW5mbyhuZXRkZXYsICYjMzQ7U2V0IGZjIGZhaWxlZCBvbiB0aGUgZ2V0X2xpbmtfaW5mbyBjYWxsIHdpdGggZXJyICVkIGFxX2VyciAlc1xuJiMzNDssCiAJCQkgICAgZXJyLCBsaWJpZV9hcV9zdHIoaHctJmd0O2FkbWlucS5zcV9sYXN0X3N0YXR1cykpOwogCQllcnIgPSAtRUFHQUlOOwomIzQzOwkJYnJlYWs7CiAJfQogCiAJcmV0dXJuIGVycjsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmMKaW5kZXggZTJmYmUxMTFmODQ5NjkuLmUyZmQyZGFiMDNlMzYzIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYwpAQCAtNDc4OSwxNiAmIzQzOzQ3ODksMTQgQEAgc3RhdGljIHZvaWQgaWNlX2luaXRfd2FrZXVwKHN0cnVjdCBpY2VfcGYgKnBmKQogCWRldmljZV9zZXRfd2FrZXVwX2VuYWJsZShpY2VfcGZfdG9fZGV2KHBmKSwgZmFsc2UpOwogfQogCi1zdGF0aWMgaW50IGljZV9pbml0X2xpbmsoc3RydWN0IGljZV9wZiAqcGYpCiYjNDM7c3RhdGljIHZvaWQgaWNlX2luaXRfbGluayhzdHJ1Y3QgaWNlX3BmICpwZikKIHsKIAlzdHJ1Y3QgZGV2aWNlICpkZXYgPSBpY2VfcGZfdG9fZGV2KHBmKTsKIAlpbnQgZXJyOwogCiAJZXJyID0gaWNlX2luaXRfbGlua19ldmVudHMocGYtJmd0O2h3LnBvcnRfaW5mbyk7Ci0JaWYgKGVycikgewomIzQzOwlpZiAoZXJyKQogCQlkZXZfZXJyKGRldiwgJiMzNDtpY2VfaW5pdF9saW5rX2V2ZW50cyBmYWlsZWQ6ICVkXG4mIzM0OywgZXJyKTsKLQkJcmV0dXJuIGVycjsKLQl9CiAKIAkvKiBub3QgYSBmYXRhbCBlcnJvciBpZiB0aGlzIGZhaWxzICovCiAJZXJyID0gaWNlX2luaXRfbnZtX3BoeV90eXBlKHBmLSZndDtody5wb3J0X2luZm8pOwpAQCAtNDgzOCw4ICYjNDM7NDgzNiw2IEBAIHN0YXRpYyBpbnQgaWNlX2luaXRfbGluayhzdHJ1Y3QgaWNlX3BmICpwZikKIAl9IGVsc2UgewogCQlzZXRfYml0KElDRV9GTEFHX05PX01FRElBLCBwZi0mZ3Q7ZmxhZ3MpOwogCX0KLQotCXJldHVybiBlcnI7CiB9CiAKIHN0YXRpYyBpbnQgaWNlX2luaXRfcGZfc3coc3RydWN0IGljZV9wZiAqcGYpCkBAIC00OTgyLDEzICYjNDM7NDk3OCwxMSBAQCBzdGF0aWMgaW50IGljZV9pbml0KHN0cnVjdCBpY2VfcGYgKnBmKQogCiAJaWNlX2luaXRfd2FrZXVwKHBmKTsKIAotCWVyciA9IGljZV9pbml0X2xpbmsocGYpOwotCWlmIChlcnIpCi0JCWdvdG8gZXJyX2luaXRfbGluazsKJiM0MzsJaWNlX2luaXRfbGluayhwZik7CiAKIAllcnIgPSBpY2Vfc2VuZF92ZXJzaW9uKHBmKTsKIAlpZiAoZXJyKQotCQlnb3RvIGVycl9pbml0X2xpbms7CiYjNDM7CQlnb3RvIGVycl9kZWluaXRfcGZfc3c7CiAKIAlpY2VfdmVyaWZ5X2NhY2hlbGluZV9zaXplKHBmKTsKIApAQCAtNTAwNyw3ICYjNDM7NTAwMSw3IEBAIHN0YXRpYyBpbnQgaWNlX2luaXQoc3RydWN0IGljZV9wZiAqcGYpCiAKIAlyZXR1cm4gMDsKIAotZXJyX2luaXRfbGluazoKJiM0MztlcnJfZGVpbml0X3BmX3N3OgogCWljZV9kZWluaXRfcGZfc3cocGYpOwogZXJyX2luaXRfcGZfc3c6CiAJaWNlX2RlYWxsb2NfdnNpcyhwZik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3ZmX2xpYi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV92Zl9saWIuYwppbmRleCBiMWY0NjcwN2RjYzAwNC4uMjdlNGFjYjE2MjBmMGMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdmZfbGliLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV92Zl9saWIuYwpAQCAtODAxLDcgJiM0Mzs4MDEsNyBAQCB2b2lkIGljZV9yZXNldF9hbGxfdmZzKHN0cnVjdCBpY2VfcGYgKnBmKQogCQkgKiBzZXR1cCBvbmx5IHdoZW4gVkYgY3JlYXRlcyBpdHMgZmlyc3QgRkRJUiBydWxlLgogCQkgKi8KIAkJaWYgKHZmLSZndDtjdHJsX3ZzaV9pZHggIT0gSUNFX05PX1ZTSSkKLQkJCWljZV92Zl9jdHJsX2ludmFsaWRhdGVfdnNpKHZmKTsKJiM0MzsJCQlpY2VfdmZfY3RybF92c2lfcmVsZWFzZSh2Zik7CiAKIAkJaWNlX3ZmX3ByZV92c2lfcmVidWlsZCh2Zik7CiAJCWlmIChpY2VfdmZfcmVidWlsZF92c2kodmYpKSB7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIyIDIyOjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU5NTkKCQkJCQkJCW91dHB1dDogMTcyCgkJCQkJCQl0aG91Z2h0czogMTY0NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXNpcyBvZiBJbnRlbCBFdGhlcm5ldCBEcml2ZXIgUGF0Y2ggU2VyaWVzKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFdlIGhhdmUgYSBwYXRjaCBzZXJpZXMgdG91Y2hpbmcgdGhlIGBlMTAwMGVgLCBgaTQwZWAsIGFuZCBgaWNlYCBJbnRlbCBFdGhlcm5ldCBkcml2ZXJzLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gYXNzZXNzIHRoZSBmdXp6aW5nIHBvdGVudGlhbC4KCkZpcnN0LCBgZTEwMDBlYDogVGhlIHBhdGNoIG1vZGlmaWVzIGBpY2g4bGFuLmNgLCBzcGVjaWZpY2FsbHkgcmVsYXRlZCB0byBQSFkvTUFDIGNvbmZpZ3VyYXRpb25zIGZvciBjZXJ0YWluIEludGVsIFBDSCBNQUMgdHlwZXMgbGlrZSBgZTEwMDBfcGNoX210cGAgYW5kIGBlMTAwMF9wY2hfcHRwYC4gVGhpcyBpbW1lZGlhdGVseSByYWlzZXMgYSBmbGFnOiBgZTEwMDBlYCBpcyBhIHBoeXNpY2FsIGhhcmR3YXJlIGRyaXZlci4gVGhlIHF1ZXN0aW9uIGlzLCBjYW4gd2UgdHJpZ2dlciB0aGVzZSBzcGVjaWZpYyBjb2RlIHBhdGhzIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/IFFFTVUgb2ZmZXJzIGVtdWxhdGlvbiBmb3IgYGUxMDAwYCBhbmQgYGUxMDAwZWAsIHdoaWNoIGlzIHVzZWZ1bCwgYnV0IHdoaWNoIE1BQyBpcyBpdCBlbXVsYXRpbmc/IEZ1cnRoZXIgZGlnZ2luZyByZXZlYWxzIHRoYXQgUUVNVSYjMzk7cyBgZTEwMDBlYCBlbXVsYXRpb24gZGVmYXVsdHMgdG8gdGhlIDgyNTc0TC4gVGhlc2UgY2hhbmdlcyBpbiBgaWNoOGxhbi5jYCBhcmUgZm9yIHRoZSBJQ0g4LzkvMTAsIFBDSCwgUENIMiwgTFBULCBTUFQsIENOUCwgZXRjLiBNQUMgdHlwZXMsIHdoaWNoIGFyZSAqbm90KiBlbXVsYXRlZCBieSBRRU1VLiBBZGRpdGlvbmFsbHksIGEgRE1JIGNoZWNrIGlzIGJlaW5nIGFkZGVkIHRvIGBuZXRkZXYuY2AgZm9yIGEgRGVsbCBQcm8gbGFwdG9wLCB3aGljaCBpcyBub3QgcmVhY2hhYmxlIHRocm91Z2ggZ2VuZXJpYyBmdXp6aW5nIHVubGVzcyB3ZSBtb2NrIHRoZSBETUksIGJ1dCB0aGF0JiMzOTtzIG5vdCBvdXIgY3VycmVudCBmb2N1cy4KCk1vdmluZyB0byBgaTQwZWAsIHRoZSBjaGFuZ2VzIGFyZSBtaW5pbWFsLCBqdXN0IGEgZGVidWcgbWFjcm8gZml4IGluIGBpNDBlX2RlYnVnLmhgLgoKVGhlIGBpY2VgIGRyaXZlciBjaGFuZ2VzIGFyZSBtb3JlIG51bWVyb3VzLCBpbnZvbHZpbmcgZmxvdyBjb250cm9sLCBEUExMIGluaXRpYWxpemF0aW9uL2RlLWluaXRpYWxpemF0aW9uLCBlc3dpdGNoIHNldHVwLCBldGh0b29sIGludGVncmF0aW9uLCBpbml0aWFsaXphdGlvbiwgYW5kIFZGIG1hbmFnZW1lbnQuIEFnYWluLCB3ZSBhcmUgbG9va2luZyBhdCBoYXJkd2FyZS1zcGVjaWZpYyBmdW5jdGlvbmFsaXR5IG9mIHRoZSBFODAwIHNlcmllcy4KCk15IGltbWVkaWF0ZSBxdWVzdGlvbiBpcyB3aGV0aGVyIHdlIGNhbiByZWFjaCB0aGVzZSB2aWEgYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gUUVNVSBkb2VzICpub3QqIG5hdGl2ZWx5IGVtdWxhdGUgYGk0MGVgIG9yIGBpY2VgLiBJdCBkb2VzIGhhdmUgdGhlIGFiaWxpdHkgdG8gZW11bGF0ZSB0aGUgYGlnYmAgZHJpdmVyICg4MjU3NiksIHdoaWNoIGNhbiBiZSB1c2VmdWwsIGJ1dCB0aGF0JiMzOTtzIG5vdCB3aGF0IGlzIGJlaW5nIG1vZGlmaWVkIGhlcmUuIEkgYW0gYWxzbyBhd2FyZSB0aGVyZSBpcyBubyBrbm93biBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIGBpY2VgIG9yIGBpNDBlYCBhdmFpbGFibGUgdGhhdCBJIGFtIGZhbWlsaWFyIHdpdGguCgpUbyByZWFjaCB0aGUgY29kZSwgd2UgbmVlZCB0aGUgUENJIGRldmljZSwgb3RoZXJ3aXNlIHRoZSBgcHJvYmVgIGZ1bmN0aW9uIHdpbGwgbmV2ZXIgYmUgY2FsbGVkLiBXZSBjYW4mIzM5O3QgcmVhY2ggdGhpcyBjb2RlIHRocm91Z2ggc29tZSBtb2NrLiBGb3IgZXhhbXBsZSwgdG8gY2FsbCBgaWNlX3NldF9wYXVzZXBhcmFtYCwgd2UgbmVlZCB0aGUgbmV0ZGV2IHRvIGJlIHJlZ2lzdGVyZWQgYnkgdGhlIGBpY2VgIGRyaXZlciwgd2hpY2ggbWVhbnMgd2UgbXVzdCBoYXZlIGEgUENJIGRldmljZS4KClNwZWNpZmljYWxseSwgdGhlIGBlMTAwMGVgIGNoYW5nZXMgYXJlIHJlbGF0ZWQgdG8gTWV0ZW9yIExha2UsIHdoaWNoIFFFTVUgaXMgZGVmaW5pdGVseSBub3QgZW11bGF0aW5nLiBgaWNlYCBpcyByZWxhdGVkIHRvIEludGVsIEU4MDAgc2VyaWVzIGhhcmR3YXJlLgoKVGhlcmVmb3JlLCBiZWNhdXNlIGFsbCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyByZXF1aXJlIHNwZWNpZmljIHBoeXNpY2FsIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUsIHRoaXMgcGF0Y2ggc2VyaWVzIGlzIG5vdCBzdWl0YWJsZSBmb3IgZnV6emluZy4gVGh1cywgYFdvcnRoRnV6emluZz1mYWxzZWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjIgMjI6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBJbnRlbCBFdGhlcm5ldCBkcml2ZXJzIChlMTAwMGUsIGk0MGUsIGljZSkgd2hpY2ggcmVxdWlyZSBwaHlzaWNhbCBQQ0kgaGFyZHdhcmUgdG8gYmUgcHJvYmVkLiBUaGUgZTEwMDBlIGNoYW5nZXMgYXJlIHNwZWNpZmljIHRvIElDSDhMQU4vUENIIE1BQyB0eXBlcyBhbmQgYSBETUkgcXVpcmssIHdoaWNoIGFyZSBub3QgZW11bGF0ZWQgYnkgUUVNVSAoUUVNVSBlbXVsYXRlcyB0aGUgODI1NzRMIE1BQykuIFRoZSBpNDBlIGNoYW5nZSBpcyBhIHRyaXZpYWwgZGVidWcgbWFjcm8gZml4LiBUaGUgaWNlIGNoYW5nZXMgYXJlIGZvciB0aGUgSW50ZWwgRTgwMCBzZXJpZXMsIHdoaWNoIGxhY2tzIHNvZnR3YXJlIGVtdWxhdGlvbiBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIFNpbmNlIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGNhbm5vdCBiZSByZWFjaGVkIHdpdGhvdXQgdGhlIHNwZWNpZmljIHBoeXNpY2FsIGhhcmR3YXJlLCB0aGlzIHBhdGNoIGRvZXMgbm90IG5lZWQgdG8gYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgSW50ZWwgRXRoZXJuZXQgZHJpdmVycyAoZTEwMDBlLCBpNDBlLCBpY2UpIHdoaWNoIHJlcXVpcmUgcGh5c2ljYWwgUENJIGhhcmR3YXJlIHRvIGJlIHByb2JlZC4gVGhlIGUxMDAwZSBjaGFuZ2VzIGFyZSBzcGVjaWZpYyB0byBJQ0g4TEFOL1BDSCBNQUMgdHlwZXMgYW5kIGEgRE1JIHF1aXJrLCB3aGljaCBhcmUgbm90IGVtdWxhdGVkIGJ5IFFFTVUgKFFFTVUgZW11bGF0ZXMgdGhlIDgyNTc0TCBNQUMpLiBUaGUgaTQwZSBjaGFuZ2UgaXMgYSB0cml2aWFsIGRlYnVnIG1hY3JvIGZpeC4gVGhlIGljZSBjaGFuZ2VzIGFyZSBmb3IgdGhlIEludGVsIEU4MDAgc2VyaWVzLCB3aGljaCBsYWNrcyBzb2Z0d2FyZSBlbXVsYXRpb24gaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBTaW5jZSB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBjYW5ub3QgYmUgcmVhY2hlZCB3aXRob3V0IHRoZSBzcGVjaWZpYyBwaHlzaWNhbCBoYXJkd2FyZSwgdGhpcyBwYXRjaCBkb2VzIG5vdCBuZWVkIHRvIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNi0yMlQyMjoxNDozNi45ODUwMjk3MDVaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTQ5MDAzOTYwNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgSW50ZWwgRXRoZXJuZXQgZHJpdmVycyAoZTEwMDBlLCBpNDBlLCBpY2UpIHdoaWNoIHJlcXVpcmUgcGh5c2ljYWwgUENJIGhhcmR3YXJlIHRvIGJlIHByb2JlZC4gVGhlIGUxMDAwZSBjaGFuZ2VzIGFyZSBzcGVjaWZpYyB0byBJQ0g4TEFOL1BDSCBNQUMgdHlwZXMgYW5kIGEgRE1JIHF1aXJrLCB3aGljaCBhcmUgbm90IGVtdWxhdGVkIGJ5IFFFTVUgKFFFTVUgZW11bGF0ZXMgdGhlIDgyNTc0TCBNQUMpLiBUaGUgaTQwZSBjaGFuZ2UgaXMgYSB0cml2aWFsIGRlYnVnIG1hY3JvIGZpeC4gVGhlIGljZSBjaGFuZ2VzIGFyZSBmb3IgdGhlIEludGVsIEU4MDAgc2VyaWVzLCB3aGljaCBsYWNrcyBzb2Z0d2FyZSBlbXVsYXRpb24gaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBTaW5jZSB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBjYW5ub3QgYmUgcmVhY2hlZCB3aXRob3V0IHRoZSBzcGVjaWZpYyBwaHlzaWNhbCBoYXJkd2FyZSwgdGhpcyBwYXRjaCBkb2VzIG5vdCBuZWVkIHRvIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIyVDIyOjE0OjM2Ljk4NTAzNTI4NVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTYxOTgzNDE3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNTRjYTIxYjM2ZjVjMDg4ZTg2NWYzYzVkZTU0Y2EyY2E3Y2IyZjk3NVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIEp1biAyMiAyMjoxNDozNSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMGUvaWNoOGxhbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDBlL2ljaDhsYW4uY1xcbmluZGV4IGRlYTIwOGRiMWJlNWJmLi5hYTkwZTBjZThhY2FmOCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMGUvaWNoOGxhbi5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDBlL2ljaDhsYW4uY1xcbkBAIC0xNTk0LDYgKzE1OTQsOSBAQCBzdGF0aWMgczMyIGUxMDAwX2NoZWNrX2Zvcl9jb3BwZXJfbGlua19pY2g4bGFuKHN0cnVjdCBlMTAwMF9odyAqaHcpXFxuIFxcdFxcdFxcdHBoeV9yZWcgXFx1MDAyNj0gfkkyMTdfUExMX0NMT0NLX0dBVEVfTUFTSztcXG4gXFx0XFx0XFx0aWYgKHNwZWVkID09IFNQRUVEXzEwMCB8fCBzcGVlZCA9PSBTUEVFRF8xMClcXG4gXFx0XFx0XFx0XFx0cGh5X3JlZyB8PSAweDNFODtcXG4rXFx0XFx0XFx0ZWxzZSBpZiAoaHctXFx1MDAzZW1hYy50eXBlID09IGUxMDAwX3BjaF9tdHAgfHxcXG4rXFx0XFx0XFx0XFx0IGh3LVxcdTAwM2VtYWMudHlwZSA9PSBlMTAwMF9wY2hfcHRwKVxcbitcXHRcXHRcXHRcXHRwaHlfcmVnIHw9IDB4MUQ1O1xcbiBcXHRcXHRcXHRlbHNlXFxuIFxcdFxcdFxcdFxcdHBoeV9yZWcgfD0gMHhGQTtcXG4gXFx0XFx0XFx0ZTFlX3dwaHlfbG9ja2VkKGh3LCBJMjE3X1BMTF9DTE9DS19HQVRFX1JFRywgcGh5X3JlZyk7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwZS9uZXRkZXYuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwZS9uZXRkZXYuY1xcbmluZGV4IDgwOGU1Y2RkZDZhOTE4Li44NDRmMzFhYjM3YWQ0NCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMGUvbmV0ZGV2LmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMGUvbmV0ZGV2LmNcXG5AQCAtMjUsNiArMjUsNyBAQFxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvcG1fcnVudGltZS5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvcHJlZmV0Y2guaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3N1c3BlbmQuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2RtaS5oXFx1MDAzZVxcbiBcXG4gI2luY2x1ZGUgXFxcImUxMDAwLmhcXFwiXFxuICNkZWZpbmUgQ1JFQVRFX1RSQUNFX1BPSU5UU1xcbkBAIC01OCw2ICs1OSwxNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGUxMDAwX2luZm8gKmUxMDAwX2luZm9fdGJsW10gPSB7XFxuIFxcdFtib2FyZF9wY2hfcHRwXVxcdFxcdD0gXFx1MDAyNmUxMDAwX3BjaF9wdHBfaW5mbyxcXG4gfTtcXG4gXFxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZG1pX3N5c3RlbV9pZCBkaXNhYmxlX2sxX2xpc3RbXSA9IHtcXG4rXFx0e1xcbitcXHRcXHQuaWRlbnQgPSBcXFwiRGVsbCBQcm8gMTYgUGx1cyBQQjE2MjUwXFxcIixcXG4rXFx0XFx0Lm1hdGNoZXMgPSB7XFxuK1xcdFxcdFxcdERNSV9NQVRDSChETUlfU1lTX1ZFTkRPUiwgXFxcIkRlbGwgSW5jLlxcXCIpLFxcbitcXHRcXHRcXHRETUlfTUFUQ0goRE1JX1BST0RVQ1RfTkFNRSwgXFxcIkRlbGwgUHJvIDE2IFBsdXMgUEIxNjI1MFxcXCIpLFxcbitcXHRcXHR9LFxcbitcXHR9LFxcbitcXHR7fVxcbit9O1xcbitcXG4gc3RydWN0IGUxMDAwX3JlZ19pbmZvIHtcXG4gXFx0dTMyIG9mcztcXG4gXFx0Y2hhciAqbmFtZTtcXG5AQCAtNzY3MCw3ICs3NjgyLDggQEAgc3RhdGljIGludCBlMTAwMF9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcXG4gXFx0LyogaW5pdCBQVFAgaGFyZHdhcmUgY2xvY2sgKi9cXG4gXFx0ZTEwMDBlX3B0cF9pbml0KGFkYXB0ZXIpO1xcbiBcXG4tXFx0aWYgKGh3LVxcdTAwM2VtYWMudHlwZSBcXHUwMDNlPSBlMTAwMF9wY2hfbXRwKVxcbitcXHQvKiBkaXNhYmxlIEsxIGJ5IGRlZmF1bHQgb24ga25vd24gcHJvYmxlbWF0aWMgc3lzdGVtcyAqL1xcbitcXHRpZiAoaHctXFx1MDAzZW1hYy50eXBlIFxcdTAwM2U9IGUxMDAwX3BjaF9tdHAgXFx1MDAyNlxcdTAwMjYgZG1pX2NoZWNrX3N5c3RlbShkaXNhYmxlX2sxX2xpc3QpKVxcbiBcXHRcXHRhZGFwdGVyLVxcdTAwM2VmbGFnczIgfD0gRkxBRzJfRElTQUJMRV9LMTtcXG4gXFxuIFxcdC8qIHJlc2V0IHRoZSBoYXJkd2FyZSB3aXRoIHRoZSBuZXcgc2V0dGluZ3MgKi9cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RlYnVnLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfZGVidWcuaFxcbmluZGV4IGU5ODcxZGZiMzJiZDQ0Li4wMWZkNzBkYjkwODY2NiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfZGVidWcuaFxcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZWJ1Zy5oXFxuQEAgLTQyLDcgKzQyLDcgQEAgc3RydWN0IGRldmljZSAqaTQwZV9od190b19kZXYoc3RydWN0IGk0MGVfaHcgKmh3KTtcXG4gI2RlZmluZSBpNDBlX2RlYnVnKGgsIG0sIHMsIC4uLilcXHRcXHRcXHRcXHRcXFxcXFxuIGRvIHtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIFxcdGlmICgoKG0pIFxcdTAwMjYgKGgpLVxcdTAwM2VkZWJ1Z19tYXNrKSlcXHRcXHRcXHRcXHRcXFxcXFxuLVxcdFxcdGRldl9pbmZvKGk0MGVfaHdfdG9fZGV2KGh3KSwgcywgIyNfX1ZBX0FSR1NfXyk7XFx0XFxcXFxcbitcXHRcXHRkZXZfaW5mbyhpNDBlX2h3X3RvX2RldihoKSwgcywgIyNfX1ZBX0FSR1NfXyk7XFx0XFxcXFxcbiB9IHdoaWxlICgwKVxcbiBcXG4gI2VuZGlmIC8qIF9JNDBFX0RFQlVHX0hfICovXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jXFxuaW5kZXggMzFlMGRlOWU3ZjYwNzUuLmVmMWNlMTA2ZjgxYjVlIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jXFxuQEAgLTM4ODIsNyArMzg4Miw2IEBAIGljZV9zZXRfZmMoc3RydWN0IGljZV9wb3J0X2luZm8gKnBpLCB1OCAqYXFfZmFpbHVyZXMsIGJvb2wgZW5hX2F1dG9fbGlua191cGRhdGUpXFxuIFxcdGlmICghcGkgfHwgIWFxX2ZhaWx1cmVzKVxcbiBcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gXFxuLVxcdCphcV9mYWlsdXJlcyA9IDA7XFxuIFxcdGh3ID0gcGktXFx1MDAzZWh3O1xcbiBcXG4gXFx0cGNhcHMgPSBremFsbG9jX29iaigqcGNhcHMpO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2RwbGwuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZHBsbC5jXFxuaW5kZXggNDYyYzY5Y2MxMWUxOWQuLjMwYzNhNGRiN2Q2MTFjIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZHBsbC5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kcGxsLmNcXG5AQCAtNDY0NSw5ICs0NjQ1LDEzIEBAIGljZV9kcGxsX2luaXRfcGluc19pbmZvKHN0cnVjdCBpY2VfcGYgKnBmLCBlbnVtIGljZV9kcGxsX3Bpbl90eXBlIHBpbl90eXBlKVxcbiBzdGF0aWMgdm9pZCBpY2VfZHBsbF9kZWluaXRfaW5mbyhzdHJ1Y3QgaWNlX3BmICpwZilcXG4ge1xcbiBcXHRrZnJlZShwZi1cXHUwMDNlZHBsbHMuaW5wdXRzKTtcXG4rXFx0cGYtXFx1MDAzZWRwbGxzLmlucHV0cyA9IE5VTEw7XFxuIFxcdGtmcmVlKHBmLVxcdTAwM2VkcGxscy5vdXRwdXRzKTtcXG4rXFx0cGYtXFx1MDAzZWRwbGxzLm91dHB1dHMgPSBOVUxMO1xcbiBcXHRrZnJlZShwZi1cXHUwMDNlZHBsbHMuZWVjLmlucHV0X3ByaW8pO1xcbitcXHRwZi1cXHUwMDNlZHBsbHMuZWVjLmlucHV0X3ByaW8gPSBOVUxMO1xcbiBcXHRrZnJlZShwZi1cXHUwMDNlZHBsbHMucHBzLmlucHV0X3ByaW8pO1xcbitcXHRwZi1cXHUwMDNlZHBsbHMucHBzLmlucHV0X3ByaW8gPSBOVUxMO1xcbiB9XFxuIFxcbiAvKipcXG5AQCAtNDc0OCwxMiArNDc1MiwxNiBAQCBzdGF0aWMgaW50IGljZV9kcGxsX2luaXRfaW5mbyhzdHJ1Y3QgaWNlX3BmICpwZiwgYm9vbCBjZ3UpXFxuIFxcbiBcXHRhbGxvY19zaXplID0gc2l6ZW9mKCpkZS1cXHUwMDNlaW5wdXRfcHJpbykgKiBkLVxcdTAwM2VudW1faW5wdXRzO1xcbiBcXHRkZS1cXHUwMDNlaW5wdXRfcHJpbyA9IGt6YWxsb2MoYWxsb2Nfc2l6ZSwgR0ZQX0tFUk5FTCk7XFxuLVxcdGlmICghZGUtXFx1MDAzZWlucHV0X3ByaW8pXFxuLVxcdFxcdHJldHVybiAtRU5PTUVNO1xcbitcXHRpZiAoIWRlLVxcdTAwM2VpbnB1dF9wcmlvKSB7XFxuK1xcdFxcdHJldCA9IC1FTk9NRU07XFxuK1xcdFxcdGdvdG8gZGVpbml0X2luZm87XFxuK1xcdH1cXG4gXFxuIFxcdGRwLVxcdTAwM2VpbnB1dF9wcmlvID0ga3phbGxvYyhhbGxvY19zaXplLCBHRlBfS0VSTkVMKTtcXG4tXFx0aWYgKCFkcC1cXHUwMDNlaW5wdXRfcHJpbylcXG4tXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuK1xcdGlmICghZHAtXFx1MDAzZWlucHV0X3ByaW8pIHtcXG4rXFx0XFx0cmV0ID0gLUVOT01FTTtcXG4rXFx0XFx0Z290byBkZWluaXRfaW5mbztcXG4rXFx0fVxcbiBcXG4gXFx0cmV0ID0gaWNlX2RwbGxfaW5pdF9waW5zX2luZm8ocGYsIElDRV9EUExMX1BJTl9UWVBFX0lOUFVUKTtcXG4gXFx0aWYgKHJldClcXG5AQCAtNDc3OCwxMiArNDc4NiwxMiBAQCBzdGF0aWMgaW50IGljZV9kcGxsX2luaXRfaW5mbyhzdHJ1Y3QgaWNlX3BmICpwZiwgYm9vbCBjZ3UpXFxuIFxcdHJldCA9IGljZV9nZXRfY2d1X3JjbGtfcGluX2luZm8oXFx1MDAyNnBmLVxcdTAwM2VodywgXFx1MDAyNmQtXFx1MDAzZWJhc2VfcmNsa19pZHgsXFxuIFxcdFxcdFxcdFxcdFxcdFxcdTAwMjZwZi1cXHUwMDNlZHBsbHMucmNsay5udW1fcGFyZW50cyk7XFxuIFxcdGlmIChyZXQpXFxuLVxcdFxcdHJldHVybiByZXQ7XFxuK1xcdFxcdGdvdG8gZGVpbml0X2luZm87XFxuIFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBwZi1cXHUwMDNlZHBsbHMucmNsay5udW1fcGFyZW50czsgaSsrKVxcbiBcXHRcXHRwZi1cXHUwMDNlZHBsbHMucmNsay5wYXJlbnRfaWR4W2ldID0gZC1cXHUwMDNlYmFzZV9yY2xrX2lkeCArIGk7XFxuIFxcdHJldCA9IGljZV9kcGxsX2luaXRfcGluc19pbmZvKHBmLCBJQ0VfRFBMTF9QSU5fVFlQRV9SQ0xLX0lOUFVUKTtcXG4gXFx0aWYgKHJldClcXG4tXFx0XFx0cmV0dXJuIHJldDtcXG4rXFx0XFx0Z290byBkZWluaXRfaW5mbztcXG4gXFx0ZGUtXFx1MDAzZW1vZGUgPSBEUExMX01PREVfQVVUT01BVElDO1xcbiBcXHRkcC1cXHUwMDNlbW9kZSA9IERQTExfTU9ERV9BVVRPTUFUSUM7XFxuIFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Vzd2l0Y2guYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZXN3aXRjaC5jXFxuaW5kZXggMmU0ZjA5NjkwMzVmNzcuLmMzMGUyN2JiZmU2ZTI1IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZXN3aXRjaC5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9lc3dpdGNoLmNcXG5AQCAtMTE3LDggKzExNyw2IEBAIHN0YXRpYyBpbnQgaWNlX2Vzd2l0Y2hfc2V0dXBfcmVwcihzdHJ1Y3QgaWNlX3BmICpwZiwgc3RydWN0IGljZV9yZXByICpyZXByKVxcbiBcXHRpZiAoIXJlcHItXFx1MDAzZWRzdClcXG4gXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuIFxcbi1cXHRuZXRpZl9rZWVwX2RzdCh1cGxpbmtfdnNpLVxcdTAwM2VuZXRkZXYpO1xcbi1cXG4gXFx0ZHN0ID0gcmVwci1cXHUwMDNlZHN0O1xcbiBcXHRkc3QtXFx1MDAzZXUucG9ydF9pbmZvLnBvcnRfaWQgPSB2c2ktXFx1MDAzZXZzaV9udW07XFxuIFxcdGRzdC1cXHUwMDNldS5wb3J0X2luZm8ubG93ZXJfZGV2ID0gdXBsaW5rX3ZzaS1cXHUwMDNlbmV0ZGV2O1xcbkBAIC0zMTIsNiArMzEwLDggQEAgc3RhdGljIGludCBpY2VfZXN3aXRjaF9lbmFibGVfc3dpdGNoZGV2KHN0cnVjdCBpY2VfcGYgKnBmKVxcbiBcXHRpZiAoaWNlX2Vzd2l0Y2hfYnJfb2ZmbG9hZHNfaW5pdChwZikpXFxuIFxcdFxcdGdvdG8gZXJyX2JyX29mZmxvYWRzO1xcbiBcXG4rXFx0bmV0aWZfa2VlcF9kc3QodXBsaW5rX3ZzaS1cXHUwMDNlbmV0ZGV2KTtcXG4rXFxuIFxcdHBmLVxcdTAwM2Vlc3dpdGNoLmlzX3J1bm5pbmcgPSB0cnVlO1xcbiBcXG4gXFx0cmV0dXJuIDA7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZXRodG9vbC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9ldGh0b29sLmNcXG5pbmRleCAyMzZkMjkzYWJhOTg0YS4uNDkzNzFiMDY1ODQ1ODIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9ldGh0b29sLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2V0aHRvb2wuY1xcbkBAIC0zNTA4LDcgKzM1MDgsNyBAQCBpY2Vfc2V0X3BhdXNlcGFyYW0oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgc3RydWN0IGV0aHRvb2xfcGF1c2VwYXJhbSAqcGF1c2UpXFxuIFxcdHN0cnVjdCBpY2VfdnNpICp2c2kgPSBucC1cXHUwMDNldnNpO1xcbiBcXHRzdHJ1Y3QgaWNlX2h3ICpodyA9IFxcdTAwMjZwZi1cXHUwMDNlaHc7XFxuIFxcdHN0cnVjdCBpY2VfcG9ydF9pbmZvICpwaTtcXG4tXFx0dTggYXFfZmFpbHVyZXM7XFxuK1xcdHU4IGFxX2ZhaWx1cmVzID0gMDtcXG4gXFx0Ym9vbCBsaW5rX3VwO1xcbiBcXHR1MzIgaXNfYW47XFxuIFxcdGludCBlcnI7XFxuQEAgLTM1NzksMTggKzM1NzksMjIgQEAgaWNlX3NldF9wYXVzZXBhcmFtKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIHN0cnVjdCBldGh0b29sX3BhdXNlcGFyYW0gKnBhdXNlKVxcbiBcXHQvKiBTZXQgdGhlIEZDIG1vZGUgYW5kIG9ubHkgcmVzdGFydCBBTiBpZiBsaW5rIGlzIHVwICovXFxuIFxcdGVyciA9IGljZV9zZXRfZmMocGksIFxcdTAwMjZhcV9mYWlsdXJlcywgbGlua191cCk7XFxuIFxcbi1cXHRpZiAoYXFfZmFpbHVyZXMgXFx1MDAyNiBJQ0VfU0VUX0ZDX0FRX0ZBSUxfR0VUKSB7XFxuK1xcdHN3aXRjaCAoYXFfZmFpbHVyZXMpIHtcXG4rXFx0Y2FzZSBJQ0VfU0VUX0ZDX0FRX0ZBSUxfR0VUOlxcbiBcXHRcXHRuZXRkZXZfaW5mbyhuZXRkZXYsIFxcXCJTZXQgZmMgZmFpbGVkIG9uIHRoZSBnZXRfcGh5X2NhcGFiaWxpdGllcyBjYWxsIHdpdGggZXJyICVkIGFxX2VyciAlc1xcXFxuXFxcIixcXG4gXFx0XFx0XFx0ICAgIGVyciwgbGliaWVfYXFfc3RyKGh3LVxcdTAwM2VhZG1pbnEuc3FfbGFzdF9zdGF0dXMpKTtcXG4gXFx0XFx0ZXJyID0gLUVBR0FJTjtcXG4tXFx0fSBlbHNlIGlmIChhcV9mYWlsdXJlcyBcXHUwMDI2IElDRV9TRVRfRkNfQVFfRkFJTF9TRVQpIHtcXG4rXFx0XFx0YnJlYWs7XFxuK1xcdGNhc2UgSUNFX1NFVF9GQ19BUV9GQUlMX1NFVDpcXG4gXFx0XFx0bmV0ZGV2X2luZm8obmV0ZGV2LCBcXFwiU2V0IGZjIGZhaWxlZCBvbiB0aGUgc2V0X3BoeV9jb25maWcgY2FsbCB3aXRoIGVyciAlZCBhcV9lcnIgJXNcXFxcblxcXCIsXFxuIFxcdFxcdFxcdCAgICBlcnIsIGxpYmllX2FxX3N0cihody1cXHUwMDNlYWRtaW5xLnNxX2xhc3Rfc3RhdHVzKSk7XFxuIFxcdFxcdGVyciA9IC1FQUdBSU47XFxuLVxcdH0gZWxzZSBpZiAoYXFfZmFpbHVyZXMgXFx1MDAyNiBJQ0VfU0VUX0ZDX0FRX0ZBSUxfVVBEQVRFKSB7XFxuK1xcdFxcdGJyZWFrO1xcbitcXHRjYXNlIElDRV9TRVRfRkNfQVFfRkFJTF9VUERBVEU6XFxuIFxcdFxcdG5ldGRldl9pbmZvKG5ldGRldiwgXFxcIlNldCBmYyBmYWlsZWQgb24gdGhlIGdldF9saW5rX2luZm8gY2FsbCB3aXRoIGVyciAlZCBhcV9lcnIgJXNcXFxcblxcXCIsXFxuIFxcdFxcdFxcdCAgICBlcnIsIGxpYmllX2FxX3N0cihody1cXHUwMDNlYWRtaW5xLnNxX2xhc3Rfc3RhdHVzKSk7XFxuIFxcdFxcdGVyciA9IC1FQUdBSU47XFxuK1xcdFxcdGJyZWFrO1xcbiBcXHR9XFxuIFxcbiBcXHRyZXR1cm4gZXJyO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jXFxuaW5kZXggZTJmYmUxMTFmODQ5NjkuLmUyZmQyZGFiMDNlMzYzIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmNcXG5AQCAtNDc4OSwxNiArNDc4OSwxNCBAQCBzdGF0aWMgdm9pZCBpY2VfaW5pdF93YWtldXAoc3RydWN0IGljZV9wZiAqcGYpXFxuIFxcdGRldmljZV9zZXRfd2FrZXVwX2VuYWJsZShpY2VfcGZfdG9fZGV2KHBmKSwgZmFsc2UpO1xcbiB9XFxuIFxcbi1zdGF0aWMgaW50IGljZV9pbml0X2xpbmsoc3RydWN0IGljZV9wZiAqcGYpXFxuK3N0YXRpYyB2b2lkIGljZV9pbml0X2xpbmsoc3RydWN0IGljZV9wZiAqcGYpXFxuIHtcXG4gXFx0c3RydWN0IGRldmljZSAqZGV2ID0gaWNlX3BmX3RvX2RldihwZik7XFxuIFxcdGludCBlcnI7XFxuIFxcbiBcXHRlcnIgPSBpY2VfaW5pdF9saW5rX2V2ZW50cyhwZi1cXHUwMDNlaHcucG9ydF9pbmZvKTtcXG4tXFx0aWYgKGVycikge1xcbitcXHRpZiAoZXJyKVxcbiBcXHRcXHRkZXZfZXJyKGRldiwgXFxcImljZV9pbml0X2xpbmtfZXZlbnRzIGZhaWxlZDogJWRcXFxcblxcXCIsIGVycik7XFxuLVxcdFxcdHJldHVybiBlcnI7XFxuLVxcdH1cXG4gXFxuIFxcdC8qIG5vdCBhIGZhdGFsIGVycm9yIGlmIHRoaXMgZmFpbHMgKi9cXG4gXFx0ZXJyID0gaWNlX2luaXRfbnZtX3BoeV90eXBlKHBmLVxcdTAwM2Vody5wb3J0X2luZm8pO1xcbkBAIC00ODM4LDggKzQ4MzYsNiBAQCBzdGF0aWMgaW50IGljZV9pbml0X2xpbmsoc3RydWN0IGljZV9wZiAqcGYpXFxuIFxcdH0gZWxzZSB7XFxuIFxcdFxcdHNldF9iaXQoSUNFX0ZMQUdfTk9fTUVESUEsIHBmLVxcdTAwM2VmbGFncyk7XFxuIFxcdH1cXG4tXFxuLVxcdHJldHVybiBlcnI7XFxuIH1cXG4gXFxuIHN0YXRpYyBpbnQgaWNlX2luaXRfcGZfc3coc3RydWN0IGljZV9wZiAqcGYpXFxuQEAgLTQ5ODIsMTMgKzQ5NzgsMTEgQEAgc3RhdGljIGludCBpY2VfaW5pdChzdHJ1Y3QgaWNlX3BmICpwZilcXG4gXFxuIFxcdGljZV9pbml0X3dha2V1cChwZik7XFxuIFxcbi1cXHRlcnIgPSBpY2VfaW5pdF9saW5rKHBmKTtcXG4tXFx0aWYgKGVycilcXG4tXFx0XFx0Z290byBlcnJfaW5pdF9saW5rO1xcbitcXHRpY2VfaW5pdF9saW5rKHBmKTtcXG4gXFxuIFxcdGVyciA9IGljZV9zZW5kX3ZlcnNpb24ocGYpO1xcbiBcXHRpZiAoZXJyKVxcbi1cXHRcXHRnb3RvIGVycl9pbml0X2xpbms7XFxuK1xcdFxcdGdvdG8gZXJyX2RlaW5pdF9wZl9zdztcXG4gXFxuIFxcdGljZV92ZXJpZnlfY2FjaGVsaW5lX3NpemUocGYpO1xcbiBcXG5AQCAtNTAwNyw3ICs1MDAxLDcgQEAgc3RhdGljIGludCBpY2VfaW5pdChzdHJ1Y3QgaWNlX3BmICpwZilcXG4gXFxuIFxcdHJldHVybiAwO1xcbiBcXG4tZXJyX2luaXRfbGluazpcXG4rZXJyX2RlaW5pdF9wZl9zdzpcXG4gXFx0aWNlX2RlaW5pdF9wZl9zdyhwZik7XFxuIGVycl9pbml0X3BmX3N3OlxcbiBcXHRpY2VfZGVhbGxvY192c2lzKHBmKTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV92Zl9saWIuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdmZfbGliLmNcXG5pbmRleCBiMWY0NjcwN2RjYzAwNC4uMjdlNGFjYjE2MjBmMGMgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV92Zl9saWIuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdmZfbGliLmNcXG5AQCAtODAxLDcgKzgwMSw3IEBAIHZvaWQgaWNlX3Jlc2V0X2FsbF92ZnMoc3RydWN0IGljZV9wZiAqcGYpXFxuIFxcdFxcdCAqIHNldHVwIG9ubHkgd2hlbiBWRiBjcmVhdGVzIGl0cyBmaXJzdCBGRElSIHJ1bGUuXFxuIFxcdFxcdCAqL1xcbiBcXHRcXHRpZiAodmYtXFx1MDAzZWN0cmxfdnNpX2lkeCAhPSBJQ0VfTk9fVlNJKVxcbi1cXHRcXHRcXHRpY2VfdmZfY3RybF9pbnZhbGlkYXRlX3ZzaSh2Zik7XFxuK1xcdFxcdFxcdGljZV92Zl9jdHJsX3ZzaV9yZWxlYXNlKHZmKTtcXG4gXFxuIFxcdFxcdGljZV92Zl9wcmVfdnNpX3JlYnVpbGQodmYpO1xcbiBcXHRcXHRpZiAoaWNlX3ZmX3JlYnVpbGRfdnNpKHZmKSkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yMlQyMjoxNDozNy41NDc2NDI2ODJaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE4OTI3NDIxNDg3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBJbnRlbCBFdGhlcm5ldCBkcml2ZXJzIChlMTAwMGUsIGk0MGUsIGljZSkgd2hpY2ggcmVxdWlyZSBwaHlzaWNhbCBQQ0kgaGFyZHdhcmUgdG8gYmUgcHJvYmVkLiBUaGUgZTEwMDBlIGNoYW5nZXMgYXJlIHNwZWNpZmljIHRvIElDSDhMQU4vUENIIE1BQyB0eXBlcyBhbmQgYSBETUkgcXVpcmssIHdoaWNoIGFyZSBub3QgZW11bGF0ZWQgYnkgUUVNVSAoUUVNVSBlbXVsYXRlcyB0aGUgODI1NzRMIE1BQykuIFRoZSBpNDBlIGNoYW5nZSBpcyBhIHRyaXZpYWwgZGVidWcgbWFjcm8gZml4LiBUaGUgaWNlIGNoYW5nZXMgYXJlIGZvciB0aGUgSW50ZWwgRTgwMCBzZXJpZXMsIHdoaWNoIGxhY2tzIHNvZnR3YXJlIGVtdWxhdGlvbiBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIFNpbmNlIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGNhbm5vdCBiZSByZWFjaGVkIHdpdGhvdXQgdGhlIHNwZWNpZmljIHBoeXNpY2FsIGhhcmR3YXJlLCB0aGlzIHBhdGNoIGRvZXMgbm90IG5lZWQgdG8gYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA1NGNhMjFiMzZmNWMwODhlODY1ZjNjNWRlNTRjYTJjYTdjYjJmOTc1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBKdW4gMjIgMjI6MTQ6MzUgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMGUvaWNoOGxhbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDBlL2ljaDhsYW4uY1xuaW5kZXggZGVhMjA4ZGIxYmU1YmYuLmFhOTBlMGNlOGFjYWY4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDBlL2ljaDhsYW4uY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDBlL2ljaDhsYW4uY1xuQEAgLTE1OTQsNiArMTU5NCw5IEBAIHN0YXRpYyBzMzIgZTEwMDBfY2hlY2tfZm9yX2NvcHBlcl9saW5rX2ljaDhsYW4oc3RydWN0IGUxMDAwX2h3ICpodylcbiBcdFx0XHRwaHlfcmVnIFx1MDAyNj0gfkkyMTdfUExMX0NMT0NLX0dBVEVfTUFTSztcbiBcdFx0XHRpZiAoc3BlZWQgPT0gU1BFRURfMTAwIHx8IHNwZWVkID09IFNQRUVEXzEwKVxuIFx0XHRcdFx0cGh5X3JlZyB8PSAweDNFODtcbitcdFx0XHRlbHNlIGlmIChody1cdTAwM2VtYWMudHlwZSA9PSBlMTAwMF9wY2hfbXRwIHx8XG4rXHRcdFx0XHQgaHctXHUwMDNlbWFjLnR5cGUgPT0gZTEwMDBfcGNoX3B0cClcbitcdFx0XHRcdHBoeV9yZWcgfD0gMHgxRDU7XG4gXHRcdFx0ZWxzZVxuIFx0XHRcdFx0cGh5X3JlZyB8PSAweEZBO1xuIFx0XHRcdGUxZV93cGh5X2xvY2tlZChodywgSTIxN19QTExfQ0xPQ0tfR0FURV9SRUcsIHBoeV9yZWcpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwZS9uZXRkZXYuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwZS9uZXRkZXYuY1xuaW5kZXggODA4ZTVjZGRkNmE5MTguLjg0NGYzMWFiMzdhZDQ0IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDBlL25ldGRldi5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMGUvbmV0ZGV2LmNcbkBAIC0yNSw2ICsyNSw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcG1fcnVudGltZS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcHJlZmV0Y2guaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3N1c3BlbmQuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2RtaS5oXHUwMDNlXG4gXG4gI2luY2x1ZGUgXCJlMTAwMC5oXCJcbiAjZGVmaW5lIENSRUFURV9UUkFDRV9QT0lOVFNcbkBAIC01OCw2ICs1OSwxNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGUxMDAwX2luZm8gKmUxMDAwX2luZm9fdGJsW10gPSB7XG4gXHRbYm9hcmRfcGNoX3B0cF1cdFx0PSBcdTAwMjZlMTAwMF9wY2hfcHRwX2luZm8sXG4gfTtcbiBcbitzdGF0aWMgY29uc3Qgc3RydWN0IGRtaV9zeXN0ZW1faWQgZGlzYWJsZV9rMV9saXN0W10gPSB7XG4rXHR7XG4rXHRcdC5pZGVudCA9IFwiRGVsbCBQcm8gMTYgUGx1cyBQQjE2MjUwXCIsXG4rXHRcdC5tYXRjaGVzID0ge1xuK1x0XHRcdERNSV9NQVRDSChETUlfU1lTX1ZFTkRPUiwgXCJEZWxsIEluYy5cIiksXG4rXHRcdFx0RE1JX01BVENIKERNSV9QUk9EVUNUX05BTUUsIFwiRGVsbCBQcm8gMTYgUGx1cyBQQjE2MjUwXCIpLFxuK1x0XHR9LFxuK1x0fSxcbitcdHt9XG4rfTtcbitcbiBzdHJ1Y3QgZTEwMDBfcmVnX2luZm8ge1xuIFx0dTMyIG9mcztcbiBcdGNoYXIgKm5hbWU7XG5AQCAtNzY3MCw3ICs3NjgyLDggQEAgc3RhdGljIGludCBlMTAwMF9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcbiBcdC8qIGluaXQgUFRQIGhhcmR3YXJlIGNsb2NrICovXG4gXHRlMTAwMGVfcHRwX2luaXQoYWRhcHRlcik7XG4gXG4tXHRpZiAoaHctXHUwMDNlbWFjLnR5cGUgXHUwMDNlPSBlMTAwMF9wY2hfbXRwKVxuK1x0LyogZGlzYWJsZSBLMSBieSBkZWZhdWx0IG9uIGtub3duIHByb2JsZW1hdGljIHN5c3RlbXMgKi9cbitcdGlmIChody1cdTAwM2VtYWMudHlwZSBcdTAwM2U9IGUxMDAwX3BjaF9tdHAgXHUwMDI2XHUwMDI2IGRtaV9jaGVja19zeXN0ZW0oZGlzYWJsZV9rMV9saXN0KSlcbiBcdFx0YWRhcHRlci1cdTAwM2VmbGFnczIgfD0gRkxBRzJfRElTQUJMRV9LMTtcbiBcbiBcdC8qIHJlc2V0IHRoZSBoYXJkd2FyZSB3aXRoIHRoZSBuZXcgc2V0dGluZ3MgKi9cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfZGVidWcuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9kZWJ1Zy5oXG5pbmRleCBlOTg3MWRmYjMyYmQ0NC4uMDFmZDcwZGI5MDg2NjYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfZGVidWcuaFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2RlYnVnLmhcbkBAIC00Miw3ICs0Miw3IEBAIHN0cnVjdCBkZXZpY2UgKmk0MGVfaHdfdG9fZGV2KHN0cnVjdCBpNDBlX2h3ICpodyk7XG4gI2RlZmluZSBpNDBlX2RlYnVnKGgsIG0sIHMsIC4uLilcdFx0XHRcdFxcXG4gZG8ge1x0XHRcdFx0XHRcdFx0XHRcXFxuIFx0aWYgKCgobSkgXHUwMDI2IChoKS1cdTAwM2VkZWJ1Z19tYXNrKSlcdFx0XHRcdFxcXG4tXHRcdGRldl9pbmZvKGk0MGVfaHdfdG9fZGV2KGh3KSwgcywgIyNfX1ZBX0FSR1NfXyk7XHRcXFxuK1x0XHRkZXZfaW5mbyhpNDBlX2h3X3RvX2RldihoKSwgcywgIyNfX1ZBX0FSR1NfXyk7XHRcXFxuIH0gd2hpbGUgKDApXG4gXG4gI2VuZGlmIC8qIF9JNDBFX0RFQlVHX0hfICovXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9jb21tb24uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmNcbmluZGV4IDMxZTBkZTllN2Y2MDc1Li5lZjFjZTEwNmY4MWI1ZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmNcbkBAIC0zODgyLDcgKzM4ODIsNiBAQCBpY2Vfc2V0X2ZjKHN0cnVjdCBpY2VfcG9ydF9pbmZvICpwaSwgdTggKmFxX2ZhaWx1cmVzLCBib29sIGVuYV9hdXRvX2xpbmtfdXBkYXRlKVxuIFx0aWYgKCFwaSB8fCAhYXFfZmFpbHVyZXMpXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFxuLVx0KmFxX2ZhaWx1cmVzID0gMDtcbiBcdGh3ID0gcGktXHUwMDNlaHc7XG4gXG4gXHRwY2FwcyA9IGt6YWxsb2Nfb2JqKCpwY2Fwcyk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kcGxsLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2RwbGwuY1xuaW5kZXggNDYyYzY5Y2MxMWUxOWQuLjMwYzNhNGRiN2Q2MTFjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kcGxsLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZHBsbC5jXG5AQCAtNDY0NSw5ICs0NjQ1LDEzIEBAIGljZV9kcGxsX2luaXRfcGluc19pbmZvKHN0cnVjdCBpY2VfcGYgKnBmLCBlbnVtIGljZV9kcGxsX3Bpbl90eXBlIHBpbl90eXBlKVxuIHN0YXRpYyB2b2lkIGljZV9kcGxsX2RlaW5pdF9pbmZvKHN0cnVjdCBpY2VfcGYgKnBmKVxuIHtcbiBcdGtmcmVlKHBmLVx1MDAzZWRwbGxzLmlucHV0cyk7XG4rXHRwZi1cdTAwM2VkcGxscy5pbnB1dHMgPSBOVUxMO1xuIFx0a2ZyZWUocGYtXHUwMDNlZHBsbHMub3V0cHV0cyk7XG4rXHRwZi1cdTAwM2VkcGxscy5vdXRwdXRzID0gTlVMTDtcbiBcdGtmcmVlKHBmLVx1MDAzZWRwbGxzLmVlYy5pbnB1dF9wcmlvKTtcbitcdHBmLVx1MDAzZWRwbGxzLmVlYy5pbnB1dF9wcmlvID0gTlVMTDtcbiBcdGtmcmVlKHBmLVx1MDAzZWRwbGxzLnBwcy5pbnB1dF9wcmlvKTtcbitcdHBmLVx1MDAzZWRwbGxzLnBwcy5pbnB1dF9wcmlvID0gTlVMTDtcbiB9XG4gXG4gLyoqXG5AQCAtNDc0OCwxMiArNDc1MiwxNiBAQCBzdGF0aWMgaW50IGljZV9kcGxsX2luaXRfaW5mbyhzdHJ1Y3QgaWNlX3BmICpwZiwgYm9vbCBjZ3UpXG4gXG4gXHRhbGxvY19zaXplID0gc2l6ZW9mKCpkZS1cdTAwM2VpbnB1dF9wcmlvKSAqIGQtXHUwMDNlbnVtX2lucHV0cztcbiBcdGRlLVx1MDAzZWlucHV0X3ByaW8gPSBremFsbG9jKGFsbG9jX3NpemUsIEdGUF9LRVJORUwpO1xuLVx0aWYgKCFkZS1cdTAwM2VpbnB1dF9wcmlvKVxuLVx0XHRyZXR1cm4gLUVOT01FTTtcbitcdGlmICghZGUtXHUwMDNlaW5wdXRfcHJpbykge1xuK1x0XHRyZXQgPSAtRU5PTUVNO1xuK1x0XHRnb3RvIGRlaW5pdF9pbmZvO1xuK1x0fVxuIFxuIFx0ZHAtXHUwMDNlaW5wdXRfcHJpbyA9IGt6YWxsb2MoYWxsb2Nfc2l6ZSwgR0ZQX0tFUk5FTCk7XG4tXHRpZiAoIWRwLVx1MDAzZWlucHV0X3ByaW8pXG4tXHRcdHJldHVybiAtRU5PTUVNO1xuK1x0aWYgKCFkcC1cdTAwM2VpbnB1dF9wcmlvKSB7XG4rXHRcdHJldCA9IC1FTk9NRU07XG4rXHRcdGdvdG8gZGVpbml0X2luZm87XG4rXHR9XG4gXG4gXHRyZXQgPSBpY2VfZHBsbF9pbml0X3BpbnNfaW5mbyhwZiwgSUNFX0RQTExfUElOX1RZUEVfSU5QVVQpO1xuIFx0aWYgKHJldClcbkBAIC00Nzc4LDEyICs0Nzg2LDEyIEBAIHN0YXRpYyBpbnQgaWNlX2RwbGxfaW5pdF9pbmZvKHN0cnVjdCBpY2VfcGYgKnBmLCBib29sIGNndSlcbiBcdHJldCA9IGljZV9nZXRfY2d1X3JjbGtfcGluX2luZm8oXHUwMDI2cGYtXHUwMDNlaHcsIFx1MDAyNmQtXHUwMDNlYmFzZV9yY2xrX2lkeCxcbiBcdFx0XHRcdFx0XHUwMDI2cGYtXHUwMDNlZHBsbHMucmNsay5udW1fcGFyZW50cyk7XG4gXHRpZiAocmV0KVxuLVx0XHRyZXR1cm4gcmV0O1xuK1x0XHRnb3RvIGRlaW5pdF9pbmZvO1xuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgcGYtXHUwMDNlZHBsbHMucmNsay5udW1fcGFyZW50czsgaSsrKVxuIFx0XHRwZi1cdTAwM2VkcGxscy5yY2xrLnBhcmVudF9pZHhbaV0gPSBkLVx1MDAzZWJhc2VfcmNsa19pZHggKyBpO1xuIFx0cmV0ID0gaWNlX2RwbGxfaW5pdF9waW5zX2luZm8ocGYsIElDRV9EUExMX1BJTl9UWVBFX1JDTEtfSU5QVVQpO1xuIFx0aWYgKHJldClcbi1cdFx0cmV0dXJuIHJldDtcbitcdFx0Z290byBkZWluaXRfaW5mbztcbiBcdGRlLVx1MDAzZW1vZGUgPSBEUExMX01PREVfQVVUT01BVElDO1xuIFx0ZHAtXHUwMDNlbW9kZSA9IERQTExfTU9ERV9BVVRPTUFUSUM7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9lc3dpdGNoLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Vzd2l0Y2guY1xuaW5kZXggMmU0ZjA5NjkwMzVmNzcuLmMzMGUyN2JiZmU2ZTI1IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9lc3dpdGNoLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZXN3aXRjaC5jXG5AQCAtMTE3LDggKzExNyw2IEBAIHN0YXRpYyBpbnQgaWNlX2Vzd2l0Y2hfc2V0dXBfcmVwcihzdHJ1Y3QgaWNlX3BmICpwZiwgc3RydWN0IGljZV9yZXByICpyZXByKVxuIFx0aWYgKCFyZXByLVx1MDAzZWRzdClcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG4gXG4tXHRuZXRpZl9rZWVwX2RzdCh1cGxpbmtfdnNpLVx1MDAzZW5ldGRldik7XG4tXG4gXHRkc3QgPSByZXByLVx1MDAzZWRzdDtcbiBcdGRzdC1cdTAwM2V1LnBvcnRfaW5mby5wb3J0X2lkID0gdnNpLVx1MDAzZXZzaV9udW07XG4gXHRkc3QtXHUwMDNldS5wb3J0X2luZm8ubG93ZXJfZGV2ID0gdXBsaW5rX3ZzaS1cdTAwM2VuZXRkZXY7XG5AQCAtMzEyLDYgKzMxMCw4IEBAIHN0YXRpYyBpbnQgaWNlX2Vzd2l0Y2hfZW5hYmxlX3N3aXRjaGRldihzdHJ1Y3QgaWNlX3BmICpwZilcbiBcdGlmIChpY2VfZXN3aXRjaF9icl9vZmZsb2Fkc19pbml0KHBmKSlcbiBcdFx0Z290byBlcnJfYnJfb2ZmbG9hZHM7XG4gXG4rXHRuZXRpZl9rZWVwX2RzdCh1cGxpbmtfdnNpLVx1MDAzZW5ldGRldik7XG4rXG4gXHRwZi1cdTAwM2Vlc3dpdGNoLmlzX3J1bm5pbmcgPSB0cnVlO1xuIFxuIFx0cmV0dXJuIDA7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9ldGh0b29sLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2V0aHRvb2wuY1xuaW5kZXggMjM2ZDI5M2FiYTk4NGEuLjQ5MzcxYjA2NTg0NTgyIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9ldGh0b29sLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZXRodG9vbC5jXG5AQCAtMzUwOCw3ICszNTA4LDcgQEAgaWNlX3NldF9wYXVzZXBhcmFtKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIHN0cnVjdCBldGh0b29sX3BhdXNlcGFyYW0gKnBhdXNlKVxuIFx0c3RydWN0IGljZV92c2kgKnZzaSA9IG5wLVx1MDAzZXZzaTtcbiBcdHN0cnVjdCBpY2VfaHcgKmh3ID0gXHUwMDI2cGYtXHUwMDNlaHc7XG4gXHRzdHJ1Y3QgaWNlX3BvcnRfaW5mbyAqcGk7XG4tXHR1OCBhcV9mYWlsdXJlcztcbitcdHU4IGFxX2ZhaWx1cmVzID0gMDtcbiBcdGJvb2wgbGlua191cDtcbiBcdHUzMiBpc19hbjtcbiBcdGludCBlcnI7XG5AQCAtMzU3OSwxOCArMzU3OSwyMiBAQCBpY2Vfc2V0X3BhdXNlcGFyYW0oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgc3RydWN0IGV0aHRvb2xfcGF1c2VwYXJhbSAqcGF1c2UpXG4gXHQvKiBTZXQgdGhlIEZDIG1vZGUgYW5kIG9ubHkgcmVzdGFydCBBTiBpZiBsaW5rIGlzIHVwICovXG4gXHRlcnIgPSBpY2Vfc2V0X2ZjKHBpLCBcdTAwMjZhcV9mYWlsdXJlcywgbGlua191cCk7XG4gXG4tXHRpZiAoYXFfZmFpbHVyZXMgXHUwMDI2IElDRV9TRVRfRkNfQVFfRkFJTF9HRVQpIHtcbitcdHN3aXRjaCAoYXFfZmFpbHVyZXMpIHtcbitcdGNhc2UgSUNFX1NFVF9GQ19BUV9GQUlMX0dFVDpcbiBcdFx0bmV0ZGV2X2luZm8obmV0ZGV2LCBcIlNldCBmYyBmYWlsZWQgb24gdGhlIGdldF9waHlfY2FwYWJpbGl0aWVzIGNhbGwgd2l0aCBlcnIgJWQgYXFfZXJyICVzXFxuXCIsXG4gXHRcdFx0ICAgIGVyciwgbGliaWVfYXFfc3RyKGh3LVx1MDAzZWFkbWlucS5zcV9sYXN0X3N0YXR1cykpO1xuIFx0XHRlcnIgPSAtRUFHQUlOO1xuLVx0fSBlbHNlIGlmIChhcV9mYWlsdXJlcyBcdTAwMjYgSUNFX1NFVF9GQ19BUV9GQUlMX1NFVCkge1xuK1x0XHRicmVhaztcbitcdGNhc2UgSUNFX1NFVF9GQ19BUV9GQUlMX1NFVDpcbiBcdFx0bmV0ZGV2X2luZm8obmV0ZGV2LCBcIlNldCBmYyBmYWlsZWQgb24gdGhlIHNldF9waHlfY29uZmlnIGNhbGwgd2l0aCBlcnIgJWQgYXFfZXJyICVzXFxuXCIsXG4gXHRcdFx0ICAgIGVyciwgbGliaWVfYXFfc3RyKGh3LVx1MDAzZWFkbWlucS5zcV9sYXN0X3N0YXR1cykpO1xuIFx0XHRlcnIgPSAtRUFHQUlOO1xuLVx0fSBlbHNlIGlmIChhcV9mYWlsdXJlcyBcdTAwMjYgSUNFX1NFVF9GQ19BUV9GQUlMX1VQREFURSkge1xuK1x0XHRicmVhaztcbitcdGNhc2UgSUNFX1NFVF9GQ19BUV9GQUlMX1VQREFURTpcbiBcdFx0bmV0ZGV2X2luZm8obmV0ZGV2LCBcIlNldCBmYyBmYWlsZWQgb24gdGhlIGdldF9saW5rX2luZm8gY2FsbCB3aXRoIGVyciAlZCBhcV9lcnIgJXNcXG5cIixcbiBcdFx0XHQgICAgZXJyLCBsaWJpZV9hcV9zdHIoaHctXHUwMDNlYWRtaW5xLnNxX2xhc3Rfc3RhdHVzKSk7XG4gXHRcdGVyciA9IC1FQUdBSU47XG4rXHRcdGJyZWFrO1xuIFx0fVxuIFxuIFx0cmV0dXJuIGVycjtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jXG5pbmRleCBlMmZiZTExMWY4NDk2OS4uZTJmZDJkYWIwM2UzNjMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmNcbkBAIC00Nzg5LDE2ICs0Nzg5LDE0IEBAIHN0YXRpYyB2b2lkIGljZV9pbml0X3dha2V1cChzdHJ1Y3QgaWNlX3BmICpwZilcbiBcdGRldmljZV9zZXRfd2FrZXVwX2VuYWJsZShpY2VfcGZfdG9fZGV2KHBmKSwgZmFsc2UpO1xuIH1cbiBcbi1zdGF0aWMgaW50IGljZV9pbml0X2xpbmsoc3RydWN0IGljZV9wZiAqcGYpXG4rc3RhdGljIHZvaWQgaWNlX2luaXRfbGluayhzdHJ1Y3QgaWNlX3BmICpwZilcbiB7XG4gXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBpY2VfcGZfdG9fZGV2KHBmKTtcbiBcdGludCBlcnI7XG4gXG4gXHRlcnIgPSBpY2VfaW5pdF9saW5rX2V2ZW50cyhwZi1cdTAwM2Vody5wb3J0X2luZm8pO1xuLVx0aWYgKGVycikge1xuK1x0aWYgKGVycilcbiBcdFx0ZGV2X2VycihkZXYsIFwiaWNlX2luaXRfbGlua19ldmVudHMgZmFpbGVkOiAlZFxcblwiLCBlcnIpO1xuLVx0XHRyZXR1cm4gZXJyO1xuLVx0fVxuIFxuIFx0Lyogbm90IGEgZmF0YWwgZXJyb3IgaWYgdGhpcyBmYWlscyAqL1xuIFx0ZXJyID0gaWNlX2luaXRfbnZtX3BoeV90eXBlKHBmLVx1MDAzZWh3LnBvcnRfaW5mbyk7XG5AQCAtNDgzOCw4ICs0ODM2LDYgQEAgc3RhdGljIGludCBpY2VfaW5pdF9saW5rKHN0cnVjdCBpY2VfcGYgKnBmKVxuIFx0fSBlbHNlIHtcbiBcdFx0c2V0X2JpdChJQ0VfRkxBR19OT19NRURJQSwgcGYtXHUwMDNlZmxhZ3MpO1xuIFx0fVxuLVxuLVx0cmV0dXJuIGVycjtcbiB9XG4gXG4gc3RhdGljIGludCBpY2VfaW5pdF9wZl9zdyhzdHJ1Y3QgaWNlX3BmICpwZilcbkBAIC00OTgyLDEzICs0OTc4LDExIEBAIHN0YXRpYyBpbnQgaWNlX2luaXQoc3RydWN0IGljZV9wZiAqcGYpXG4gXG4gXHRpY2VfaW5pdF93YWtldXAocGYpO1xuIFxuLVx0ZXJyID0gaWNlX2luaXRfbGluayhwZik7XG4tXHRpZiAoZXJyKVxuLVx0XHRnb3RvIGVycl9pbml0X2xpbms7XG4rXHRpY2VfaW5pdF9saW5rKHBmKTtcbiBcbiBcdGVyciA9IGljZV9zZW5kX3ZlcnNpb24ocGYpO1xuIFx0aWYgKGVycilcbi1cdFx0Z290byBlcnJfaW5pdF9saW5rO1xuK1x0XHRnb3RvIGVycl9kZWluaXRfcGZfc3c7XG4gXG4gXHRpY2VfdmVyaWZ5X2NhY2hlbGluZV9zaXplKHBmKTtcbiBcbkBAIC01MDA3LDcgKzUwMDEsNyBAQCBzdGF0aWMgaW50IGljZV9pbml0KHN0cnVjdCBpY2VfcGYgKnBmKVxuIFxuIFx0cmV0dXJuIDA7XG4gXG4tZXJyX2luaXRfbGluazpcbitlcnJfZGVpbml0X3BmX3N3OlxuIFx0aWNlX2RlaW5pdF9wZl9zdyhwZik7XG4gZXJyX2luaXRfcGZfc3c6XG4gXHRpY2VfZGVhbGxvY192c2lzKHBmKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3ZmX2xpYi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV92Zl9saWIuY1xuaW5kZXggYjFmNDY3MDdkY2MwMDQuLjI3ZTRhY2IxNjIwZjBjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV92Zl9saWIuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV92Zl9saWIuY1xuQEAgLTgwMSw3ICs4MDEsNyBAQCB2b2lkIGljZV9yZXNldF9hbGxfdmZzKHN0cnVjdCBpY2VfcGYgKnBmKVxuIFx0XHQgKiBzZXR1cCBvbmx5IHdoZW4gVkYgY3JlYXRlcyBpdHMgZmlyc3QgRkRJUiBydWxlLlxuIFx0XHQgKi9cbiBcdFx0aWYgKHZmLVx1MDAzZWN0cmxfdnNpX2lkeCAhPSBJQ0VfTk9fVlNJKVxuLVx0XHRcdGljZV92Zl9jdHJsX2ludmFsaWRhdGVfdnNpKHZmKTtcbitcdFx0XHRpY2VfdmZfY3RybF92c2lfcmVsZWFzZSh2Zik7XG4gXG4gXHRcdGljZV92Zl9wcmVfdnNpX3JlYnVpbGQodmYpO1xuIFx0XHRpZiAoaWNlX3ZmX3JlYnVpbGRfdnNpKHZmKSkge1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjJUMjI6MTQ6MzcuNTQ3NjQ0MzEyWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTg5MjczOTc1MjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHlzaXMgb2YgSW50ZWwgRXRoZXJuZXQgRHJpdmVyIFBhdGNoIFNlcmllcyoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gV2UgaGF2ZSBhIHBhdGNoIHNlcmllcyB0b3VjaGluZyB0aGUgYGUxMDAwZWAsIGBpNDBlYCwgYW5kIGBpY2VgIEludGVsIEV0aGVybmV0IGRyaXZlcnMuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBhc3Nlc3MgdGhlIGZ1enppbmcgcG90ZW50aWFsLlxuXG5GaXJzdCwgYGUxMDAwZWA6IFRoZSBwYXRjaCBtb2RpZmllcyBgaWNoOGxhbi5jYCwgc3BlY2lmaWNhbGx5IHJlbGF0ZWQgdG8gUEhZL01BQyBjb25maWd1cmF0aW9ucyBmb3IgY2VydGFpbiBJbnRlbCBQQ0ggTUFDIHR5cGVzIGxpa2UgYGUxMDAwX3BjaF9tdHBgIGFuZCBgZTEwMDBfcGNoX3B0cGAuIFRoaXMgaW1tZWRpYXRlbHkgcmFpc2VzIGEgZmxhZzogYGUxMDAwZWAgaXMgYSBwaHlzaWNhbCBoYXJkd2FyZSBkcml2ZXIuIFRoZSBxdWVzdGlvbiBpcywgY2FuIHdlIHRyaWdnZXIgdGhlc2Ugc3BlY2lmaWMgY29kZSBwYXRocyBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyBRRU1VIG9mZmVycyBlbXVsYXRpb24gZm9yIGBlMTAwMGAgYW5kIGBlMTAwMGVgLCB3aGljaCBpcyB1c2VmdWwsIGJ1dCB3aGljaCBNQUMgaXMgaXQgZW11bGF0aW5nPyBGdXJ0aGVyIGRpZ2dpbmcgcmV2ZWFscyB0aGF0IFFFTVUncyBgZTEwMDBlYCBlbXVsYXRpb24gZGVmYXVsdHMgdG8gdGhlIDgyNTc0TC4gVGhlc2UgY2hhbmdlcyBpbiBgaWNoOGxhbi5jYCBhcmUgZm9yIHRoZSBJQ0g4LzkvMTAsIFBDSCwgUENIMiwgTFBULCBTUFQsIENOUCwgZXRjLiBNQUMgdHlwZXMsIHdoaWNoIGFyZSAqbm90KiBlbXVsYXRlZCBieSBRRU1VLiBBZGRpdGlvbmFsbHksIGEgRE1JIGNoZWNrIGlzIGJlaW5nIGFkZGVkIHRvIGBuZXRkZXYuY2AgZm9yIGEgRGVsbCBQcm8gbGFwdG9wLCB3aGljaCBpcyBub3QgcmVhY2hhYmxlIHRocm91Z2ggZ2VuZXJpYyBmdXp6aW5nIHVubGVzcyB3ZSBtb2NrIHRoZSBETUksIGJ1dCB0aGF0J3Mgbm90IG91ciBjdXJyZW50IGZvY3VzLlxuXG5Nb3ZpbmcgdG8gYGk0MGVgLCB0aGUgY2hhbmdlcyBhcmUgbWluaW1hbCwganVzdCBhIGRlYnVnIG1hY3JvIGZpeCBpbiBgaTQwZV9kZWJ1Zy5oYC5cblxuVGhlIGBpY2VgIGRyaXZlciBjaGFuZ2VzIGFyZSBtb3JlIG51bWVyb3VzLCBpbnZvbHZpbmcgZmxvdyBjb250cm9sLCBEUExMIGluaXRpYWxpemF0aW9uL2RlLWluaXRpYWxpemF0aW9uLCBlc3dpdGNoIHNldHVwLCBldGh0b29sIGludGVncmF0aW9uLCBpbml0aWFsaXphdGlvbiwgYW5kIFZGIG1hbmFnZW1lbnQuIEFnYWluLCB3ZSBhcmUgbG9va2luZyBhdCBoYXJkd2FyZS1zcGVjaWZpYyBmdW5jdGlvbmFsaXR5IG9mIHRoZSBFODAwIHNlcmllcy5cblxuTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzIHdoZXRoZXIgd2UgY2FuIHJlYWNoIHRoZXNlIHZpYSBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBRRU1VIGRvZXMgKm5vdCogbmF0aXZlbHkgZW11bGF0ZSBgaTQwZWAgb3IgYGljZWAuIEl0IGRvZXMgaGF2ZSB0aGUgYWJpbGl0eSB0byBlbXVsYXRlIHRoZSBgaWdiYCBkcml2ZXIgKDgyNTc2KSwgd2hpY2ggY2FuIGJlIHVzZWZ1bCwgYnV0IHRoYXQncyBub3Qgd2hhdCBpcyBiZWluZyBtb2RpZmllZCBoZXJlLiBJIGFtIGFsc28gYXdhcmUgdGhlcmUgaXMgbm8ga25vd24gc29mdHdhcmUgZW11bGF0aW9uIGZvciBgaWNlYCBvciBgaTQwZWAgYXZhaWxhYmxlIHRoYXQgSSBhbSBmYW1pbGlhciB3aXRoLlxuXG5UbyByZWFjaCB0aGUgY29kZSwgd2UgbmVlZCB0aGUgUENJIGRldmljZSwgb3RoZXJ3aXNlIHRoZSBgcHJvYmVgIGZ1bmN0aW9uIHdpbGwgbmV2ZXIgYmUgY2FsbGVkLiBXZSBjYW4ndCByZWFjaCB0aGlzIGNvZGUgdGhyb3VnaCBzb21lIG1vY2suIEZvciBleGFtcGxlLCB0byBjYWxsIGBpY2Vfc2V0X3BhdXNlcGFyYW1gLCB3ZSBuZWVkIHRoZSBuZXRkZXYgdG8gYmUgcmVnaXN0ZXJlZCBieSB0aGUgYGljZWAgZHJpdmVyLCB3aGljaCBtZWFucyB3ZSBtdXN0IGhhdmUgYSBQQ0kgZGV2aWNlLlxuXG5TcGVjaWZpY2FsbHksIHRoZSBgZTEwMDBlYCBjaGFuZ2VzIGFyZSByZWxhdGVkIHRvIE1ldGVvciBMYWtlLCB3aGljaCBRRU1VIGlzIGRlZmluaXRlbHkgbm90IGVtdWxhdGluZy4gYGljZWAgaXMgcmVsYXRlZCB0byBJbnRlbCBFODAwIHNlcmllcyBoYXJkd2FyZS5cblxuVGhlcmVmb3JlLCBiZWNhdXNlIGFsbCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyByZXF1aXJlIHNwZWNpZmljIHBoeXNpY2FsIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUsIHRoaXMgcGF0Y2ggc2VyaWVzIGlzIG5vdCBzdWl0YWJsZSBmb3IgZnV6emluZy4gVGh1cywgYFdvcnRoRnV6emluZz1mYWxzZWAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU5NTksIk91dHB1dFRva2VucyI6MTcyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTY0NywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIyVDIyOjE0OjU2LjQ3NTA0MzY0OVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTkxNDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgSW50ZWwgRXRoZXJuZXQgZHJpdmVycyAoZTEwMDBlLCBpNDBlLCBpY2UpIHdoaWNoIHJlcXVpcmUgcGh5c2ljYWwgUENJIGhhcmR3YXJlIHRvIGJlIHByb2JlZC4gVGhlIGUxMDAwZSBjaGFuZ2VzIGFyZSBzcGVjaWZpYyB0byBJQ0g4TEFOL1BDSCBNQUMgdHlwZXMgYW5kIGEgRE1JIHF1aXJrLCB3aGljaCBhcmUgbm90IGVtdWxhdGVkIGJ5IFFFTVUgKFFFTVUgZW11bGF0ZXMgdGhlIDgyNTc0TCBNQUMpLiBUaGUgaTQwZSBjaGFuZ2UgaXMgYSB0cml2aWFsIGRlYnVnIG1hY3JvIGZpeC4gVGhlIGljZSBjaGFuZ2VzIGFyZSBmb3IgdGhlIEludGVsIEU4MDAgc2VyaWVzLCB3aGljaCBsYWNrcyBzb2Z0d2FyZSBlbXVsYXRpb24gaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBTaW5jZSB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBjYW5ub3QgYmUgcmVhY2hlZCB3aXRob3V0IHRoZSBzcGVjaWZpYyBwaHlzaWNhbCBoYXJkd2FyZSwgdGhpcyBwYXRjaCBkb2VzIG5vdCBuZWVkIHRvIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIEludGVsIEV0aGVybmV0IGRyaXZlcnMgKGUxMDAwZSwgaTQwZSwgaWNlKSB3aGljaCByZXF1aXJlIHBoeXNpY2FsIFBDSSBoYXJkd2FyZSB0byBiZSBwcm9iZWQuIFRoZSBlMTAwMGUgY2hhbmdlcyBhcmUgc3BlY2lmaWMgdG8gSUNIOExBTi9QQ0ggTUFDIHR5cGVzIGFuZCBhIERNSSBxdWlyaywgd2hpY2ggYXJlIG5vdCBlbXVsYXRlZCBieSBRRU1VIChRRU1VIGVtdWxhdGVzIHRoZSA4MjU3NEwgTUFDKS4gVGhlIGk0MGUgY2hhbmdlIGlzIGEgdHJpdmlhbCBkZWJ1ZyBtYWNybyBmaXguIFRoZSBpY2UgY2hhbmdlcyBhcmUgZm9yIHRoZSBJbnRlbCBFODAwIHNlcmllcywgd2hpY2ggbGFja3Mgc29mdHdhcmUgZW11bGF0aW9uIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gU2luY2UgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgY2Fubm90IGJlIHJlYWNoZWQgd2l0aG91dCB0aGUgc3BlY2lmaWMgcGh5c2ljYWwgaGFyZHdhcmUsIHRoaXMgcGF0Y2ggZG9lcyBub3QgbmVlZCB0byBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowqrz45[1] Phase: Running StartedAt: 2026-06-22 22:15:07 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqrz45[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-06-22 22:15:07 +0000 UTC FinishedAt: 2026-06-22 22:15:12 +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,}